ZGlmZiAtLWdpdCBhLy5naXRsYWItY2kueW1sIGIvLmdpdGxhYi1jaS55bWwKaW5kZXggNTE0MGFhNy4uYzUxZTEzNiAxMDA2NDQKLS0tIGEvLmdpdGxhYi1jaS55bWwKKysrIGIvLmdpdGxhYi1jaS55bWwKQEAgLTEsMjAgKzEsMjIgQEAKKyMgQ0kgc2V0dXAgZm9yIEZyZWVUeXBlLgorCiBzdGFnZXM6CiAgLSBidWlsZAogCiAjIEZJWE1FOiBVc2UgLS13ZXJyb3Igb25jZSB3YXJuaW5ncyBhcmUgZml4ZWQuCiB2YXJpYWJsZXM6Ci0gIE1FU09OX0FSR1M6IC0tZmF0YWwtbWVzb24td2FybmluZ3MKKyAgTUVTT05fQVJHUzogLS1mYXRhbC1tZXNvbi13YXJuaW5ncyAtLWRlZmF1bHQtbGlicmFyeT1ib3RoCiAgIE1FU09OX0FSR1NfV0lORE9XUzogJHtNRVNPTl9BUkdTfSAtLWZvcmNlLWZhbGxiYWNrLWZvcj16bGliCiAKIC5idWlsZCB3aW5kb3dzIGNvbW1vbjoKLSAgIyBTZWUKLSAgIyBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1jaS9jb250YWluZXJfcmVnaXN0cnkvMjEzCi0gIGltYWdlOiAncmVnaXN0cnkuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtY2kvYW1kNjQvd2luZG93czp2MTQtbWFzdGVyJworICAjIFRPRE86IHNob3VsZCBwcm9iYWJseSBnZXQgaXRzIG93biBpbWFnZSBhdCBzb21lIHBvaW50IGluc3RlYWQgb2YgcmV1c2luZyB0aGUgR1N0cmVhbWVyIG9uZQorICAjIFNlZSBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdHJlYW1lci9jb250YWluZXJfcmVnaXN0cnkvMTgwMzUgZm9yIGxhdGVzdAorICBpbWFnZTogInJlZ2lzdHJ5LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0cmVhbWVyL2FtZDY0L3dpbmRvd3M6MjAyMi0wNy0yOS4zLW1haW4iCiAgIHN0YWdlOiAnYnVpbGQnCiAgIHRhZ3M6CiAgICAgLSAnZG9ja2VyJwogICAgIC0gJ3dpbmRvd3MnCi0gICAgLSAnMTgwOScKKyAgICAtICcyMDIyJwogICAgIC0gJ2dzdHJlYW1lci13aW5kb3dzJwogCiAuYnVpbGQgbGludXggY29tbW9uOgpAQCAtMzQsNTAgKzM2LDc1IEBACiAgICAgIyBNYWtlIHN1cmUgYW55IGZhaWx1cmUgaW4gUG93ZXJTaGVsbCBzY3JpcHRzIGlzIGZhdGFsLgogICAgIEVycm9yQWN0aW9uUHJlZmVyZW5jZTogJ1N0b3AnCiAgICAgV2FybmluZ1ByZWZlcmVuY2U6ICdTdG9wJwotICAgICMgVW5jb21tZW50IHRoZSBmb2xsb3dpbmcga2V5IGlmIG5lZWQgdG8gcGFzcyBjdXN0b20gYXJncywgYXMgd2VsbCB3aXRoCi0gICAgIyB0aGUgYCRlbnY6TUVTT05fQVJHU2AgbGluZSBpbiB0aGUgYHNjcmlwdDpgIGJsb2Nrcy4KKyAgICAjIFVuY29tbWVudCB0aGUgZm9sbG93aW5nIGtleSBpZiB5b3UgbmVlZCB0byBwYXNzIGN1c3RvbSBhcmdzLCBhcyB3ZWxsCisgICAgIyB3aXRoIHRoZSBgJGVudjpNRVNPTl9BUkdTYCBsaW5lIGluIHRoZSBgc2NyaXB0OmAgYmxvY2tzLgogICAgICMgTUVTT05fQVJHUzogPi0KICAgICAjICAgLURmb289ZW5hYmxlZAogICAgICMgICAtRGJhcj1kaXNhYmxlZAogICBiZWZvcmVfc2NyaXB0OgotICAgICMgTWFrZSBzdXJlIG1lc29uIGlzIHVwIHRvIGRhdGUsIHNvIHdlIGRvbid0IG5lZWQgdG8gcmVidWlsZCB0aGUgaW1hZ2UKKyAgICAjIFVwZGF0ZSBSb290Q0FzIGluIG9yZGVyIHRvIGFjY2VzcyB0byBzb21lIHNpdGVzLgorICAgIC0gY2VydHV0aWwgLWdlbmVyYXRlU1NURnJvbVdVICJDOlxyb290cy5zc3QiCisgICAgLSBJbXBvcnQtQ2VydGlmaWNhdGUgLUNlcnRTdG9yZUxvY2F0aW9uICJDZXJ0OlxMb2NhbE1hY2hpbmVcUm9vdCIgIkM6XHJvb3RzLnNzdCIKKyAgICAjIE1ha2Ugc3VyZSBtZXNvbiBpcyB1cCB0byBkYXRlIHNvIHdlIGRvbid0IG5lZWQgdG8gcmVidWlsZCB0aGUgaW1hZ2UKICAgICAjIHdpdGggZWFjaCByZWxlYXNlLgotICAgIC0gcGlwMyBpbnN0YWxsIG1lc29uPT0wLjU5LjEKKyAgICAtIHBpcDMgaW5zdGFsbCAtVSAnbWVzb249PTAuNTkuKicKKyAgICAtIHBpcDMgaW5zdGFsbCAtLXVwZ3JhZGUgY2VydGlmaQogICAgIC0gcGlwMyBpbnN0YWxsIC1VIG5pbmphCisKKyAgICAjIEdlbmVyYXRlIGEgVVdQIGNyb3NzLWZpbGUgaW4gY2FzZSBpdCdzIHVzZWQKKyAgICAtICRQU0RlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNbJ091dC1GaWxlOkVuY29kaW5nJ10gPSAnQVNDSUknCisgICAgLSBlY2hvICJbYmluYXJpZXNdIiA+IHV3cC1jcm9zc2ZpbGUubWVzb24KKyAgICAtIGVjaG8gImMgPSAnY2wnIiA+PiB1d3AtY3Jvc3NmaWxlLm1lc29uCisgICAgLSBlY2hvICJzdHJpcCA9IFsndHJ1ZSddIiA+PiB1d3AtY3Jvc3NmaWxlLm1lc29uCisgICAgLSBlY2hvICJbYnVpbHQtaW4gb3B0aW9uc10iID4+IHV3cC1jcm9zc2ZpbGUubWVzb24KKyAgICAtIGVjaG8gImNfYXJncyA9IFsnLURXSU5BUElfRkFNSUxZPVdJTkFQSV9GQU1JTFlfQVBQJywgJy1EVU5JQ09ERScsICctRF9XSU4zMl9XSU5OVD0weDBBMDAnLCAnLXdlNDAxMyddIiA+PiB1d3AtY3Jvc3NmaWxlLm1lc29uCisgICAgLSBlY2hvICJjX3dpbmxpYnMgPSBbJ3dpbmRvd3NhcHAubGliJ10iID4+IHV3cC1jcm9zc2ZpbGUubWVzb24KICAgc2NyaXB0OgogICAgICMgRm9yIHNvbWUgcmVhc29uLCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgbmV3bGluZXMgaW5zdGVhZCBvZiBzcGFjZXMsCiAgICAgIyBzbyB3ZSBoYXZlIHRvIHJlcGxhY2UgdGhlbSBmaXJzdC4KLSAgICAjLSAkZW52Ok1FU09OX0FSR1MgPSAkZW52Ok1FU09OX0FSR1MucmVwbGFjZSgiYG4iLCIgIikKKyAgICAjCisgICAgIyAtICRlbnY6TUVTT05fQVJHUyA9ICRlbnY6TUVTT05fQVJHUy5yZXBsYWNlKCJgbiIsIiAiKQorICAgICMKICAgICAjIEdpdGxhYiBleGVjdXRlcyBQb3dlclNoZWxsIGluIGRvY2tlciwgYnV0IGBWc0RldkNtZC5iYXRgIGlzIGEgYmF0Y2gKICAgICAjIHNjcmlwdC4gIEVudmlyb25tZW50IHZhcmlhYmxlcyBzdWJzdGl0dXRpb25zIGlzIGRvbmUgYnkgUG93ZXJTaGVsbAogICAgICMgYmVmb3JlIGNhbGxpbmcgYGNtZC5leGVgLCB0aGF0J3Mgd2h5IHdlIHVzZSBgJGVudjpGT09gIGluc3RlYWQgb2YKICAgICAjIGAlRk9PJWAuCi0gICAgLSBjbWQuZXhlIC9DICJDOlxCdWlsZFRvb2xzXENvbW1vbjdcVG9vbHNcVnNEZXZDbWQuYmF0IC1ob3N0X2FyY2g9YW1kNjQgLWFyY2g9JGVudjpBUkNIICYmCi0gICAgICAgIG1lc29uIHNldHVwIGJ1aWxkICRlbnY6TUVTT05fQVJHU19XSU5ET1dTICYmCi0gICAgICAgIG1lc29uIGNvbXBpbGUgLS12ZXJib3NlIC1DIGJ1aWxkICYmCi0gICAgICAgIG1lc29uIHRlc3QgLUMgYnVpbGQgJiYKLSAgICAgICAgbWVzb24gdGVzdCAtQyBidWlsZCAtLWJlbmNobWFyayIKKyAgICAtIGNtZC5leGUgL0MgIkM6XEJ1aWxkVG9vbHNcQ29tbW9uN1xUb29sc1xWc0RldkNtZC5iYXQgLWhvc3RfYXJjaD1hbWQ2NCAtYXJjaD0kZW52OkFSQ0ggJGVudjpWU19VV1AgJiYKKyAgICAgICAgbWVzb24gc2V0dXAgYnVpbGQgJGVudjpNRVNPTl9BUkdTX1dJTkRPV1MgJGVudjpNRVNPTl9BUkdTX1VXUCAmJgorICAgICAgICBtZXNvbiBjb21waWxlIC0tdmVyYm9zZSAtQyBidWlsZAorICAgICAgICAkZW52Ok1FU09OX1dJTkRPV1NfVEVTVFMiCiAKIAogIyBGb3JtYXQgb2Ygam9iIG5hbWVzOgogIyA8T1M+IDxCdWlsZC1Ub29sPiA8QnVpbGQtUGFyYW1zPiA8QXJjaGl0ZWN0dXJlPiAKIAogCi0jIFdpbmRvd3Mgam9icwotd2luZG93cyBtZXNvbiB2czIwMTcgYW1kNjQ6CisjIFdpbmRvd3Mgam9icy4KKword2luZG93cyBtZXNvbiB2czIwMTkgYW1kNjQ6CiAgIGV4dGVuZHM6ICcuYnVpbGQgd2luZG93cyBtZXNvbicKICAgdmFyaWFibGVzOgogICAgIEFSQ0g6ICdhbWQ2NCcKKyAgICBNRVNPTl9XSU5ET1dTX1RFU1RTOiAnJiYgbWVzb24gdGVzdCAtQyBidWlsZCAmJiBtZXNvbiB0ZXN0IC1DIGJ1aWxkIC0tYmVuY2htYXJrJwogCi13aW5kb3dzIG1lc29uIHZzMjAxNyB4ODY6Cit3aW5kb3dzIG1lc29uIHZzMjAxOSB4ODY6CiAgIGV4dGVuZHM6ICcuYnVpbGQgd2luZG93cyBtZXNvbicKICAgdmFyaWFibGVzOgogICAgIEFSQ0g6ICd4ODYnCisgICAgTUVTT05fV0lORE9XU19URVNUUzogJyYmIG1lc29uIHRlc3QgLUMgYnVpbGQgJiYgbWVzb24gdGVzdCAtQyBidWlsZCAtLWJlbmNobWFyaycKIAord2luZG93cyBtZXNvbiB2czIwMTkgYW1kNjQgdXdwOgorICBleHRlbmRzOiAnLmJ1aWxkIHdpbmRvd3MgbWVzb24nCisgIHZhcmlhYmxlczoKKyAgICBBUkNIOiAnYW1kNjQnCisgICAgVlNfVVdQOiAnLWFwcF9wbGF0Zm9ybT1VV1AnCisgICAgTUVTT05fQVJHU19VV1A6ICctLWNyb3NzLWZpbGUgdXdwLWNyb3NzZmlsZS5tZXNvbiAtRGNfd2lubGlicz0id2luZG93c2FwcC5saWIiJwogCi0jIExpbnV4IEpvYnMKLSMgSm9icyB3aXRoICJsaWJzIiBpbiB0aGUgbmFtZSBmb3JjZSBlbmFibGUgbGlicmFyaWVzLgotIyBUaGV5IGFyZSBkaXNhYmxlZCBpbiByZXN0IG9mIHRoZSBqb2JzLgorIyBMaW51eCBKb2JzLgorIworIyBKb2JzIHdpdGggImxpYnMiIGluIHRoZSBuYW1lIGZvcmNlLWVuYWJsZSBsaWJyYXJpZXMuCisjIFRoZXkgYXJlIGRpc2FibGVkIGZvciB0aGUgcmVtYWluaW5nIGpvYnMuCisKIGxpbnV4IGF1dG90b29sczoKICAgZXh0ZW5kczogJy5idWlsZCBsaW51eCBjb21tb24nCiAgIHNjcmlwdDogfApAQCAtMTIwLDcgKzE0Nyw4IEBACiBsaW51eCBtZXNvbjoKICAgZXh0ZW5kczogJy5idWlsZCBsaW51eCBjb21tb24nCiAgIHNjcmlwdDogfAotICAgIG1lc29uIHNldHVwIGJ1aWxkIC1EYnJvdGxpPWRpc2FibGVkIFwKKyAgICBtZXNvbiBzZXR1cCBidWlsZCAke01FU09OX0FSR1N9IFwKKyAgICAgICAgICAgICAgICAgICAgICAtRGJyb3RsaT1kaXNhYmxlZCBcCiAgICAgICAgICAgICAgICAgICAgICAgLURiemlwMj1kaXNhYmxlZCBcCiAgICAgICAgICAgICAgICAgICAgICAgLURoYXJmYnV6ej1kaXNhYmxlZCBcCiAgICAgICAgICAgICAgICAgICAgICAgLURwbmc9ZGlzYWJsZWQgXApAQCAtMTMyLDcgKzE2MCw4IEBACiBsaW51eCBtZXNvbiBsaWJzOgogICBleHRlbmRzOiAnLmJ1aWxkIGxpbnV4IGNvbW1vbicKICAgc2NyaXB0OiB8Ci0gICAgbWVzb24gc2V0dXAgYnVpbGQgLURicm90bGk9ZW5hYmxlZCBcCisgICAgbWVzb24gc2V0dXAgYnVpbGQgJHtNRVNPTl9BUkdTfSBcCisgICAgICAgICAgICAgICAgICAgICAgLURicm90bGk9ZW5hYmxlZCBcCiAgICAgICAgICAgICAgICAgICAgICAgLURiemlwMj1lbmFibGVkIFwKICAgICAgICAgICAgICAgICAgICAgICAtRGhhcmZidXp6PWRpc2FibGVkIFwKICAgICAgICAgICAgICAgICAgICAgICAtRHBuZz1kaXNhYmxlZCBcCkBAIC0xNjMsNiArMTkyLDkgQEAKIAogICAgIGNtYWtlIC0tYnVpbGQgYnVpbGQgLS10YXJnZXQgaW5zdGFsbAogCisKKyMgTWFjT1Mgam9icy4KKwogbWFjb3MgYXV0b3Rvb2xzOgogICBleHRlbmRzOiAnLmJ1aWxkIG1hY29zIGNvbW1vbicKICAgYmVmb3JlX3NjcmlwdDoKQEAgLTE5Miw3ICsyMjQsNyBAQAogICAgIC0gcGlwMyBpbnN0YWxsIC1VIG1lc29uCiAgICAgLSBwaXAzIGluc3RhbGwgLS11cGdyYWRlIGNlcnRpZmkKICAgICAtIHBpcDMgaW5zdGFsbCAtVSBuaW5qYQotICAgIAotICAgIC0gbWVzb24gc2V0dXAgYnVpbGQKKworICAgIC0gbWVzb24gc2V0dXAgYnVpbGQgJHtNRVNPTl9BUkdTfQogICAgIC0gbWVzb24gY29tcGlsZSAtLXZlcmJvc2UgLUMgYnVpbGQKICAgICAtIHN1ZG8gbWVzb24gaW5zdGFsbCAtQyBidWlsZApkaWZmIC0tZ2l0IGEvLmdpdG1vZHVsZXMgYi8uZ2l0bW9kdWxlcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ1MmRmZi4uMDAwMDAwMAotLS0gYS8uZ2l0bW9kdWxlcworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotW3N1Ym1vZHVsZSAiZGxnIl0KLQlwYXRoID0gc3VicHJvamVjdHMvZGxnCi0JdXJsID0gaHR0cHM6Ly9naXRodWIuY29tL255b3JhaW4vZGxnLmdpdApkaWZmIC0tZ2l0IGEvLm1haWxtYXAgYi8ubWFpbG1hcAppbmRleCBhZjFlNjFlLi41MzMyNzRkIDEwMDY0NAotLS0gYS8ubWFpbG1hcAorKysgYi8ubWFpbG1hcApAQCAtMSw3ICsxLDkgQEAKIEJlaGRhZCBFc2ZhaGJvZCAo2KjZh9iv2KfYryDYp9iz2YHZh9io2K8pIDxiZWhkYWRAYmVoZGFkLm9yZz4gPGJlaGRhZC5lc2ZhaGJvZEBnbWFpbC5jb20+CiBCZWhkYWQgRXNmYWhib2QgKNio2YfYr9in2K8g2KfYs9mB2YfYqNivKSA8YmVoZGFkQGJlaGRhZC5vcmc+IDxiZWhkYWRAZ29vZ2xlLmNvbT4KIEJlaGRhZCBFc2ZhaGJvZCAo2KjZh9iv2KfYryDYp9iz2YHZh9io2K8pIDxiZWhkYWRAYmVoZGFkLm9yZz4KK0FsZXhhbmRlciBCb3JzdWsgPG1lQGFsZXguYmlvPiA8YWxleGFuZGVyLmJvcnN1a0BxbmVjdGl2ZS5jb20+CiBFd2FsZCBIZXcgKEhldyBZaWggU2hpdWFuIOS4mOavheWuoykgPGV3YWxkaGV3QGdtYWlsLmNvbT4KK01vYXppbiBLaGF0dGkgKNmF2YjYpNiw2YYg2qnavtm524wpIDxtb2F6aW5raGF0cmlAZ21haWwuY29tPgogUHJpeWVzaCBLdW1hciAo4KSq4KWN4KSw4KS/4KSv4KWH4KS2IOCkleClgeCkruCkvuCksCkgPHByaXllc2hra3VtYXJAZ21haWwuY29tPgogQWxleGVpIFBvZHRlbGV6aG5pa292ICjQkNC70LXQutGB0LXQuSDQn9C+0LTRgtC10LvQtdC20L3QuNC60L7QsikgPGFwb2R0ZWxlQGdtYWlsLmNvbT4KIE5pa2hpbCBSYW1ha3Jpc2huYW4gKOCkqOCkv+CkluCkv+CksiDgpLDgpL7gpK7gpJXgpYPgpLfgpY3gpKPgpKgpIDxyYW1ha3Jpc2huYW4ubmlraGlsQGdtYWlsLmNvbT4KQEAgLTE4LDQgKzIwLDUgQEAKIEFudWogVmVybWEgKOCkheCkqOClgeCknCDgpLXgpLDgpY3gpK7gpL4pIDxhbnVqdkBpaXRiaGlsYWkuYWMuaW4+CiBCZW4gV2FnbmVyIDxidW5nZW1hbkBnbWFpbC5jb20+IEJ1bmdlbWFuIDxidW5nZW1hbkBnbWFpbC5jb20+CiBCZW4gV2FnbmVyIDxidW5nZW1hbkBnbWFpbC5jb20+IDxidW5nZW1hbkBnb29nbGUuY29tPgorQmVuIFdhZ25lciA8YnVuZ2VtYW5AZ21haWwuY29tPiA8YnVuZ2VtYW5AY2hyb21pdW0ub3JnPgogTmlrb2xhdXMgV2F4d2VpbGVyIDxtYWRpZ2Vuc0BnbWFpbC5jb20+IDxuaWtvbGF1cy53YXh3ZWlsZXJAZGFsdG9ubWFhZy5jb20+CmRpZmYgLS1naXQgYS9BbmRyb2lkLmJwIGIvQW5kcm9pZC5icAppbmRleCA5MGMzY2U4Li4zNjgwYWZmIDEwMDY0NAotLS0gYS9BbmRyb2lkLmJwCisrKyBiL0FuZHJvaWQuYnAKQEAgLTIwLDE5ICsyMCwzMSBAQAogICAgIG5hbWU6ICJleHRlcm5hbF9mcmVldHlwZV9saWNlbnNlIiwKICAgICB2aXNpYmlsaXR5OiBbIjpfX3N1YnBhY2thZ2VzX18iXSwKICAgICBsaWNlbnNlX2tpbmRzOiBbCi0gICAgICAgICJTUERYLWxpY2Vuc2UtaWRlbnRpZmllci1CU0QiLAorICAgICAgICAiU1BEWC1saWNlbnNlLWlkZW50aWZpZXItQXBhY2hlLTIuMCIsCisgICAgICAgICJTUERYLWxpY2Vuc2UtaWRlbnRpZmllci1CU0QtMy1DbGF1c2UiLAorICAgICAgICAiU1BEWC1saWNlbnNlLWlkZW50aWZpZXItRlNGQVAiLAogICAgICAgICAiU1BEWC1saWNlbnNlLWlkZW50aWZpZXItRlRMIiwKLSAgICAgICAgIlNQRFgtbGljZW5zZS1pZGVudGlmaWVyLUdQTCIsCi0gICAgICAgICJTUERYLWxpY2Vuc2UtaWRlbnRpZmllci1HUEwtMi4wIiwKLSAgICAgICAgIlNQRFgtbGljZW5zZS1pZGVudGlmaWVyLUdQTC0zLjAiLAorICAgICAgICAiU1BEWC1saWNlbnNlLWlkZW50aWZpZXItTUlUIiwKKworICAgICAgICAvLyBGb3Igc3JjL2F1dG9maXQvZnQtaGIue2h8Y30uIFRoaXMgZmlsZSBpcyBub3QgdXNlZCBidXQgaW5jbHVkZWQgZnJvbSBzb3VyY2UgZmlsZS4KKyAgICAgICAgLy8gIlNQRFgtbGljZW5zZS1JZGVudGlmaWVyLU1JVC1Nb2Rlcm4tVmFyaWFudCIKKworICAgICAgICAvLyBUT0RPOiBGb2xsb3dpbmcgbGljZW5zZXMgbGVmdCBmcm9tIG9yaWdpbmFsLiBDaGVjayB3aGVyZSB0aGVzZSBsaWNlbnNlcyBhcmUgY2FtZSBmcm9tLgorICAgICAgICAiU1BEWC1saWNlbnNlLWlkZW50aWZpZXItQlNEIiwKICAgICAgICAgIlNQRFgtbGljZW5zZS1pZGVudGlmaWVyLUlTQyIsCiAgICAgICAgICJTUERYLWxpY2Vuc2UtaWRlbnRpZmllci1MR1BMIiwKLSAgICAgICAgIlNQRFgtbGljZW5zZS1pZGVudGlmaWVyLU1JVCIsCi0gICAgICAgICJTUERYLWxpY2Vuc2UtaWRlbnRpZmllci1abGliIiwKICAgICAgICAgImxlZ2FjeV91bmVuY3VtYmVyZWQiLAogICAgIF0sCiAgICAgbGljZW5zZV90ZXh0OiBbCisgICAgICAgICJMSUNFTlNFLlRYVCIsCisgICAgICAgICJMSUNFTlNFIiwKICAgICAgICAgIk5PVElDRSIsCisKKyAgICAgICAgImRvY3MvRlRMLlRYVCIsCisgICAgICAgICJMSUNFTlNFX0FQQUNIRTIuVFhUIiwKKyAgICAgICAgIkxJQ0VOU0VfTUlULlRYVCIsCisgICAgICAgICJMSUNFTlNFX0JTRF8zX0NMQVVTRS5UWFQiLAorICAgICAgICAiTElDRU5TRV9NSVRfTU9ERVJOX1ZBUklBTlQuVFhUIiwKICAgICBdLAogfQogCkBAIC03NCw2ICs4Niw3IEBACiAgICAgICAgICJzcmMvc2RmL3NkZi5jIiwKICAgICAgICAgInNyYy9zZm50L3NmbnQuYyIsCiAgICAgICAgICJzcmMvc21vb3RoL3Ntb290aC5jIiwKKyAgICAgICAgInNyYy9zdmcvc3ZnLmMiLAogICAgICAgICAic3JjL3RydWV0eXBlL3RydWV0eXBlLmMiLAogICAgICAgICAic3JjL3R5cGUxL3R5cGUxLmMiLAogICAgIF0sCkBAIC05NCw2ICsxMDcsOCBAQAogICAgICAgICAiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKICAgICAgICAgLy8gRGlzYWJsaW5nIHNvbWUgb2YgbW9kdWxlcyByZXN1bHRzIGluIHdhcm5pbmdzCiAgICAgICAgICItV25vLXVudXNlZC12YXJpYWJsZSIsCisgICAgICAgIC8vIFRlbXBvcmFyeSBkaXNhYmxlcyB1bnVzZWQgZnVuY3Rpb24gd2FybmluZworICAgICAgICAiLVduby11bnVzZWQtZnVuY3Rpb24iLAogICAgIF0sCiB9CiAKQEAgLTEwNyw2ICsxMjIsNyBAQAogICAgICAgICAvLyBubyBkZXBlbmRlbmN5IHZhcmlhbnQgbGliZnQyLm5vZGVwIGJlbG93LgogICAgICAgICAiLURGVF9DT05GSUdfT1BUSU9OX1VTRV9QTkciLAogICAgICAgICAiLURGVF9DT05GSUdfT1BUSU9OX1VTRV9aTElCIiwKKyAgICAgICAgIi1ERlRfQ09ORklHX09QVElPTl9TWVNURU1fWkxJQiIsCiAKICAgICAgICAgLy8gdGhlIGZvbGxvd2luZyBpcyBmb3IgdGVzdGluZyBvbmx5LCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGluIGZpbmFsCiAgICAgICAgIC8vIGJ1aWxkcyBvZiB0aGUgcHJvZHVjdApAQCAtMTQ4LDMgKzE2NCwxMTIgQEAKICAgICB2ZW5kb3JfYXZhaWxhYmxlOiB0cnVlLAogICAgIGRlZmF1bHRzOiBbImxpYmZ0Ml9kZWZhdWx0cyJdLAogfQorCisvLyBGb2xsb3dpbmcgZGVmaW5lcyB1bnVzZWQgZmlsZXMgdGhhdCBpcyB1bmRlciBsaWNlbnNlcyB0aGF0IGFyZSBkaWZmZXJlbnQKKy8vIGZyb20gZGVmYXVsdCBsaWNlbnNlcy4KKworbGljZW5zZSB7CisgICAgbmFtZTogImV4dGVybmFsX2ZyZWV0eXBlX2xpY2Vuc2UuYnVpbGRzLnVudXNlZC51bml4LkdQTHYyIiwKKyAgICB2aXNpYmlsaXR5OiBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCisgICAgbGljZW5zZV9raW5kczogWworICAgICAgIlNQRFgtbGljZW5zZS1pZGVudGlmaWVyLUdQTC0yLjAtd2l0aC1hdXRvY29uZi1leGNlcHRpb24iLAorICAgIF0sCisgICAgbGljZW5zZV90ZXh0OiBbCisgICAgICAgICJidWlsZHMvdW5peC9MSUNFTlNFX0dQTHYyX1dJVEhfQVVUT0NPTkZfRVhDRVBUSU9OLlRYVCIsCisgICAgXSwKK30KKworZmlsZWdyb3VwIHsKKyAgICBuYW1lOiAiZnJlZXR5cGUuYnVpbGRzLnVuaXguR1BMdjIiLAorICAgIHZpc2liaWxpdHk6IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKKyAgICBsaWNlbnNlczogWyJleHRlcm5hbF9mcmVldHlwZV9saWNlbnNlLmJ1aWxkcy51bnVzZWQudW5peC5HUEx2MiJdLAorICAgIHNyY3M6IFsiYnVpbGRzL3VuaXgvcGtnLm00Il0sCit9CisKK2xpY2Vuc2UgeworICAgIG5hbWU6ICJleHRlcm5hbF9mcmVldHlwZV9saWNlbnNlLmJ1aWxkcy51bnVzZWQudW5peC5HUEx2MyIsCisgICAgdmlzaWJpbGl0eTogWyIvL3Zpc2liaWxpdHk6cHJpdmF0ZSJdLAorICAgIGxpY2Vuc2Vfa2luZHM6IFsKKyAgICAgICJTUERYLWxpY2Vuc2UtaWRlbnRpZmllci1HUEwtMy4wLXdpdGgtYXV0b2NvbmYtZXhjZXB0aW9uIiwKKyAgICBdLAorICAgIGxpY2Vuc2VfdGV4dDogWworICAgICAgICAvLyBGb3IgYnVpbGRzL3VuaXgvYXhfcHRocmVhZC5tNAorICAgICAgICAiYnVpbGRzL3VuaXgvTElDRU5TRV9HUEx2M19XSVRIX0FVVE9DT05GX0VYQ0VQVElPTi5UWFQiLAorICAgIF0sCit9CisKK2ZpbGVncm91cCB7CisgICAgbmFtZTogImZyZWV0eXBlLmJ1aWxkcy51bml4LkdQTHYzIiwKKyAgICB2aXNpYmlsaXR5OiBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCisgICAgbGljZW5zZXM6IFsiZXh0ZXJuYWxfZnJlZXR5cGVfbGljZW5zZS5idWlsZHMudW51c2VkLnVuaXguR1BMdjMiXSwKKyAgICBzcmNzOiBbImJ1aWxkcy91bml4L2F4X3B0aHJlYWQubTQiXSwKK30KKworbGljZW5zZSB7CisgICAgbmFtZTogImV4dGVybmFsX2ZyZWV0eXBlX2xpY2Vuc2UuYnVpbGRzLnVudXNlZC56bGliIiwKKyAgICB2aXNpYmlsaXR5OiBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCisgICAgbGljZW5zZV9raW5kczogWworICAgICAgICAiU1BEWC1saWNlbnNlLWlkZW50aWZpZXItWmxpYiIsCisgICAgXSwKKyAgICBsaWNlbnNlX3RleHQ6IFsKKyAgICAgICAgInNyYy9nemlwL0xJQ0VOU0VfWkxJQi5UWFQiCisgICAgXSwKK30KKworZmlsZWdyb3VwIHsKKyAgICBuYW1lOiAiZnJlZXR5cGUudW51c2VkLnpsaWIiLAorICAgIHZpc2liaWxpdHk6IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKKyAgICBsaWNlbnNlczogWyJleHRlcm5hbF9mcmVldHlwZV9saWNlbnNlLmJ1aWxkcy51bnVzZWQuemxpYiJdLAorICAgIHNyY3M6IFsKKyAgICAgICAgInNyYy9nemlwL2FkbGVyMzIuYyIsCisgICAgICAgICJzcmMvZ3ppcC9jcmMzMi5jIiwKKyAgICAgICAgInNyYy9nemlwL2NyYzMyLmgiLCAgLy8gTm8gbGljZW5zZSBoZWFkZXIKKyAgICAgICAgInNyYy9nemlwL2Z0emNvbmYuaCIsCisgICAgICAgICJzcmMvZ3ppcC9nemd1dHMuaCIsCisgICAgICAgICJzcmMvZ3ppcC9pbmZiYWNrLmMiLAorICAgICAgICAic3JjL2d6aXAvaW5mZmFzdC5jIiwKKyAgICAgICAgInNyYy9nemlwL2luZmZhc3QuaCIsCisgICAgICAgICJzcmMvZ3ppcC9pbmZmaXhlZC5oIiwgIC8vIE5vIGxpY2Vuc2UgaGVhZGVyCisgICAgICAgICJzcmMvZ3ppcC9pbmZsYXRlLmMiLAorICAgICAgICAic3JjL2d6aXAvaW5mbGF0ZS5oIiwKKyAgICAgICAgInNyYy9nemlwL2luZnRyZWVzLmMiLAorICAgICAgICAic3JjL2d6aXAvaW5mdHJlZXMuaCIsCisgICAgICAgICJzcmMvZ3ppcC96bGliLmgiLAorICAgICAgICAic3JjL2d6aXAvenV0aWwuYyIsCisgICAgICAgICJzcmMvZ3ppcC96dXRpbC5oIiwKKyAgICBdLAorfQorCitsaWNlbnNlIHsKKyAgICBuYW1lOiAiZXh0ZXJuYWxfZnJlZXR5cGVfbGljZW5zZS51bnVzZWQuYmFzZS5wY2YiLAorICAgIHZpc2liaWxpdHk6IFsiLy92aXNpYmlsaXR5OnByaXZhdGUiXSwKKyAgICBsaWNlbnNlX2tpbmRzOiBbCisgICAgICAiU1BEWC1saWNlbnNlLWlkZW50aWZpZXItRlRMIiwKKyAgICAgICJTUERYLWxpY2Vuc2UtaWRlbnRpZmllci1NSVQiLAorICAgICAgImxlZ2FjeV9ub3RpY2UiLCAgLy8gRm9yIHNyYy9iYXNlL3BjZi9wY2Z1dGlsLmMKKyAgICBdLAorICAgIGxpY2Vuc2VfdGV4dDogWworICAgICAgICAiZG9jcy9GVEwuVFhUIiwKKyAgICAgICAgIkxJQ0VOU0VfTUlULlRYVCIsCisgICAgXSwKK30KKworZmlsZWdyb3VwIHsKKyAgICBuYW1lOiAiZnJlZXR5cGUudW51c2VkLmJhc2UucGNmIiwKKyAgICB2aXNpYmlsaXR5OiBbIi8vdmlzaWJpbGl0eTpwcml2YXRlIl0sCisgICAgbGljZW5zZXM6IFsiZXh0ZXJuYWxfZnJlZXR5cGVfbGljZW5zZS51bnVzZWQuYmFzZS5wY2YiXSwKKyAgICBzcmNzOiBbCisgICAgICAgICJzcmMvcGNmL21vZHVsZS5tayIsCisgICAgICAgICJzcmMvcGNmL3BjZmRyaXZyLmMiLAorICAgICAgICAic3JjL3BjZi9wY2Zkcml2ci5oIiwKKyAgICAgICAgInNyYy9wY2YvcGNmZXJyb3IuaCIsCisgICAgICAgICJzcmMvcGNmL3BjZi5oIiwKKyAgICAgICAgInNyYy9wY2YvcGNmcmVhZC5jIiwKKyAgICAgICAgInNyYy9wY2YvcGNmcmVhZC5oIiwKKyAgICAgICAgInNyYy9wY2YvcGNmdXRpbC5jIiwKKyAgICAgICAgInNyYy9wY2YvcGNmdXRpbC5oIiwKKyAgICAgICAgInNyYy9wY2YvUkVBRE1FIiwKKyAgICAgICAgInNyYy9wY2YvcnVsZXMubWsiLAorICAgIF0sCit9CisKZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggNDMzNWQ2Ni4uNTU0YjU4MCAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50eHQKQEAgLTEsNiArMSw2IEBACiAjIENNYWtlTGlzdHMudHh0CiAjCi0jIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAxMy0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgV3JpdHRlbiBvcmlnaW5hbGx5IGJ5IEpvaG4gQ2FyeSA8Y2FyeUB0eGNvcnAuY29tPgpAQCAtNjEsNiArNjEsOCBAQAogIwogIyBTb21lIG5vdGVzLgogIworIyAtIFNheSBgY21ha2UgLUxBSGAgdG8gc2VlIGFsbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuCisjCiAjIC0gYGNtYWtlJyBjcmVhdGVzIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4KICMKICMgICAgIDxidWlsZC1kaXJlY3Rvcnk+L2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnCkBAIC0xMDYsMTAgKzEwOCw5IEBACiAjICAgKHRoaXMgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBzYW1lIENNYWtlIHZhcmlhYmxlcyBpbiB6bGliJ3MgQ01ha2UKICMgICBzdXBwb3J0KS4KIAotIyBGcmVlVHlwZSBleHBsaWNpdGx5IG1hcmtzIHRoZSBBUEkgdG8gYmUgZXhwb3J0ZWQgYW5kIHJlbGllcyBvbiB0aGUgY29tcGlsZXIKLSMgdG8gaGlkZSBhbGwgb3RoZXIgc3ltYm9scy4gQ01ha2Ugc3VwcG9ydHMgYSBDX1ZJU0JJTElUWV9QUkVTRVQgcHJvcGVydHkKLSMgc3RhcnRpbmcgd2l0aCAyLjguMTIuCi1jbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMi44LjEyKQorIyBUbyBtaW5pbWl6ZSB0aGUgbnVtYmVyIG9mIGNtYWtlX3BvbGljeSgpIHdvcmthcm91bmRzLAorIyBDTWFrZSA+PSAzIGlzIHJlcXVlc3RlZC4KK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjApCiAKIGlmIChOT1QgQ01BS0VfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMy4zKQogICAjIEFsbG93IHN5bWJvbCB2aXNpYmlsaXR5IHNldHRpbmdzIGFsc28gb24gc3RhdGljIGxpYnJhcmllcy4gQ01ha2UgPCAzLjMKQEAgLTE2Miw4ICsxNjMsOCBAQAogcHJvamVjdChmcmVldHlwZSBDKQogCiBzZXQoVkVSU0lPTl9NQUpPUiAiMiIpCi1zZXQoVkVSU0lPTl9NSU5PUiAiMTEiKQotc2V0KFZFUlNJT05fUEFUQ0ggIjEiKQorc2V0KFZFUlNJT05fTUlOT1IgIjEzIikKK3NldChWRVJTSU9OX1BBVENIICIwIikKIAogIyBHZW5lcmF0ZSBMSUJSQVJZX1ZFUlNJT04gYW5kIExJQlJBUllfU09WRVJTSU9OLgogc2V0KExJQlRPT0xfUkVHRVggInZlcnNpb25faW5mbz0nKFswLTldKyk6KFswLTldKyk6KFswLTldKyknIikKQEAgLTIxNiw2ICsyMTcsOCBAQAogICAiUmVxdWlyZSBzdXBwb3J0IG9mIGNvbXByZXNzZWQgV09GRjIgZm9udHMuIiBPRkYKICAgIk5PVCBGVF9ESVNBQkxFX0JST1RMSSIgT0ZGKQogCitvcHRpb24oRlRfRU5BQkxFX0VSUk9SX1NUUklOR1MKKyAgIkVuYWJsZSBzdXBwb3J0IGZvciBtZWFuaW5nZnVsIGVycm9yIGRlc2NyaXB0aW9ucy4iIE9GRikKIAogIyBEaXNhbGxvdyBpbi1zb3VyY2UgYnVpbGRzCiBpZiAoIiR7Q01BS0VfQklOQVJZX0RJUn0iIFNUUkVRVUFMICIke0NNQUtFX1NPVVJDRV9ESVJ9IikKQEAgLTIzOSwxMiArMjQyLDE0IEBACiAgICAgbWVzc2FnZShGQVRBTF9FUlJPUgogICAgICAgIllvdSBzaG91bGQgdXNlIFhjb2RlIGdlbmVyYXRvciB3aXRoIEJVSUxEX0ZSQU1FV09SSyBlbmFibGVkIikKICAgZW5kaWYgKCkKLSAgc2V0KENNQUtFX09TWF9BUkNISVRFQ1RVUkVTICIkKEFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVCkiKQorICBzZXQoQ01BS0VfT1NYX0FSQ0hJVEVDVFVSRVMgIiQoQVJDSFNfU1RBTkRBUkQpIikKICAgc2V0KEJVSUxEX1NIQVJFRF9MSUJTIE9OKQogZW5kaWYgKCkKIAogCiAjIEZpbmQgZGVwZW5kZW5jaWVzCitpbmNsdWRlKEZpbmRQa2dDb25maWcpCisKIGlmIChOT1QgRlRfRElTQUJMRV9IQVJGQlVaWikKICAgc2V0KEhBUkZCVVpaX01JTl9WRVJTSU9OICIyLjAuMCIpCiAgIGlmIChGVF9SRVFVSVJFX0hBUkZCVVpaKQpAQCAtMjcxLDExICsyNzYsMTYgQEAKIGVuZGlmICgpCiAKIGlmIChOT1QgRlRfRElTQUJMRV9CWklQMikKKyAgIyBHZW51aW5lIEJaaXAyIGRvZXMgbm90IHByb3ZpZGUgYnppcDIucGMsIGJ1dCBzb21lIHBsYXRmb3JtcyBoYXZlIGl0LgorICAjIEZvciBiZXR0ZXIgZGVwZW5kZW5jeSBpbiBmcmVldHlwZTIucGMsIGJ6aXAyLnBjIGlzIHNlYXJjaGVkCisgICMgcmVnYXJkbGVzcyBvZiB0aGUgYXZhaWxhYmlsaXR5IG9mIGxpYmJ6Mi4gSWYgYnppcDIucGMgaXMgZm91bmQsCisgICMgUmVxdWlyZXMucHJpdmF0ZSBpcyB1c2VkIGluc3RlYWQgb2YgTGlicy5wcml2YXRlLgogICBpZiAoRlRfUkVRVUlSRV9CWklQMikKICAgICBmaW5kX3BhY2thZ2UoQlppcDIgUkVRVUlSRUQpCiAgIGVsc2UgKCkKICAgICBmaW5kX3BhY2thZ2UoQlppcDIpCiAgIGVuZGlmICgpCisgIHBrZ19jaGVja19tb2R1bGVzKFBDX0JaSVAyIGJ6aXAyKQogZW5kaWYgKCkKIAogaWYgKE5PVCBGVF9ESVNBQkxFX0JST1RMSSkKQEAgLTM0OCw2ICszNTgsMTIgQEAKICAgICBGVE9QVElPTl9IICIke0ZUT1BUSU9OX0h9IikKIGVuZGlmICgpCiAKK2lmIChGVF9FTkFCTEVfRVJST1JfU1RSSU5HUykKKyAgc3RyaW5nKFJFR0VYIFJFUExBQ0UKKyAgICAiL1xcKiArKCNkZWZpbmUgK0ZUX0NPTkZJR19PUFRJT05fRVJST1JfU1RSSU5HUykgK1xcKi8iICJcXDEiCisgICAgRlRPUFRJT05fSCAiJHtGVE9QVElPTl9IfSIpCitlbmRpZiAoKQorCiBzZXQoRlRPUFRJT05fSF9OQU1FICIke1BST0pFQ1RfQklOQVJZX0RJUn0vaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCIpCiBpZiAoRVhJU1RTICIke0ZUT1BUSU9OX0hfTkFNRX0iKQogICBmaWxlKFJFQUQgIiR7RlRPUFRJT05fSF9OQU1FfSIgT1JJR0lOQUxfRlRPUFRJT05fSCkKQEAgLTQwMCw2ICs0MTYsNyBAQAogICBzcmMvc2RmL3NkZi5jCiAgIHNyYy9zZm50L3NmbnQuYwogICBzcmMvc21vb3RoL3Ntb290aC5jCisgIHNyYy9zdmcvc3ZnLmMKICAgc3JjL3RydWV0eXBlL3RydWV0eXBlLmMKICAgc3JjL3R5cGUxL3R5cGUxLmMKICAgc3JjL3R5cGU0Mi90eXBlNDIuYwpAQCAtNDg1LDQyICs1MDIsNTUgQEAKICAgKQogICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoZnJlZXR5cGUgUFJPUEVSVElFUwogICAgIEZSQU1FV09SSyBUUlVFCi0gICAgTUFDT1NYX0ZSQU1FV09SS19JTkZPX1BMSVNUIGJ1aWxkcy9tYWMvZnJlZXR5cGUtSW5mby5wbGlzdAorICAgIE1BQ09TWF9GUkFNRVdPUktfSU5GT19QTElTVCAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vYnVpbGRzL21hYy9mcmVldHlwZS1JbmZvLnBsaXN0CiAgICAgUFVCTElDX0hFQURFUiAiJHtQVUJMSUNfSEVBREVSU30iCiAgICAgWENPREVfQVRUUklCVVRFX0lOU1RBTExfUEFUSCAiQHJwYXRoIgogICApCiBlbmRpZiAoKQogCisjICdmcmVldHlwZS1pbnRlcmZhY2UnIGlzIGFuIGludGVyZmFjZSBsaWJyYXJ5LCB0byBiZSBhY2Nlc3NlZCB3aXRoCisjIGBFWFBPUlRfTkFNRSBGcmVldHlwZTo6RnJlZXR5cGVgLiAgVGhpcyBpcyB0aGUgdGFyZ2V0IG5hbWUgcHJvdmlkZWQgYnkKKyMgQ01ha2UncyBgRmluZEZyZWV0eXBlLmNtYWtlYCwgc28gd2UgcHJvdmlkZSBpdCBmb3IgY29tcGF0aWJpbGl0eS4KK2FkZF9saWJyYXJ5KGZyZWV0eXBlLWludGVyZmFjZSBJTlRFUkZBQ0UpCitzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoZnJlZXR5cGUtaW50ZXJmYWNlIFBST1BFUlRJRVMKKyAgRVhQT1JUX05BTUUgRnJlZXR5cGU6OkZyZWV0eXBlCisgIElOVEVSRkFDRV9MSU5LX0xJQlJBUklFUyBmcmVldHlwZSkKIAotc2V0KFBLR19DT05GSUdfUkVRVUlSRURfUFJJVkFURSAiIikKLXNldChQS0dfQ09ORklHX0xJQlNfUFJJVkFURSAiIikKK3NldChQS0dDT05GSUdfUkVRVUlSRVMgIiIpCitzZXQoUEtHQ09ORklHX1JFUVVJUkVTX1BSSVZBVEUgIiIpCitzZXQoUEtHQ09ORklHX0xJQlMgIi1MXCR7bGliZGlyfSAtbGZyZWV0eXBlIikKK3NldChQS0dDT05GSUdfTElCU19QUklWQVRFICIiKQogCiBpZiAoWkxJQl9GT1VORCkKICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGZyZWV0eXBlIFBSSVZBVEUgJHtaTElCX0xJQlJBUklFU30pCiAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKGZyZWV0eXBlIFBSSVZBVEUgJHtaTElCX0lOQ0xVREVfRElSU30pCi0gIGxpc3QoQVBQRU5EIFBLR19DT05GSUdfUkVRVUlSRURfUFJJVkFURSAiemxpYiIpCisgIGxpc3QoQVBQRU5EIFBLR0NPTkZJR19SRVFVSVJFU19QUklWQVRFICJ6bGliIikKIGVuZGlmICgpCiBpZiAoQlpJUDJfRk9VTkQpCiAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhmcmVldHlwZSBQUklWQVRFICR7QlpJUDJfTElCUkFSSUVTfSkKICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoZnJlZXR5cGUgUFJJVkFURSAke0JaSVAyX0lOQ0xVREVfRElSfSkgIyBub3QgQlpJUDJfSU5DTFVERV9ESVJTCi0gIGxpc3QoQVBQRU5EIFBLR19DT05GSUdfTElCU19QUklWQVRFICItbGJ6MiIpCisgIGlmIChQQ19CWklQMl9GT1VORCkKKyAgICBsaXN0KEFQUEVORCBQS0dDT05GSUdfUkVRVUlSRVNfUFJJVkFURSAiYnppcDIiKQorICBlbHNlICgpCisgICAgbGlzdChBUFBFTkQgUEtHQ09ORklHX0xJQlNfUFJJVkFURSAiLWxiejIiKQorICBlbmRpZiAoKQogZW5kaWYgKCkKIGlmIChQTkdfRk9VTkQpCiAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhmcmVldHlwZSBQUklWQVRFICR7UE5HX0xJQlJBUklFU30pCiAgIHRhcmdldF9jb21waWxlX2RlZmluaXRpb25zKGZyZWV0eXBlIFBSSVZBVEUgJHtQTkdfREVGSU5JVElPTlN9KQogICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhmcmVldHlwZSBQUklWQVRFICR7UE5HX0lOQ0xVREVfRElSU30pCi0gIGxpc3QoQVBQRU5EIFBLR19DT05GSUdfUkVRVUlSRURfUFJJVkFURSAibGlicG5nIikKKyAgbGlzdChBUFBFTkQgUEtHQ09ORklHX1JFUVVJUkVTX1BSSVZBVEUgImxpYnBuZyIpCiBlbmRpZiAoKQogaWYgKEhhcmZCdXp6X0ZPVU5EKQogICB0YXJnZXRfbGlua19saWJyYXJpZXMoZnJlZXR5cGUgUFJJVkFURSAke0hhcmZCdXp6X0xJQlJBUll9KQogICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhmcmVldHlwZSBQUklWQVRFICR7SGFyZkJ1enpfSU5DTFVERV9ESVJTfSkKLSAgbGlzdChBUFBFTkQgUEtHX0NPTkZJR19SRVFVSVJFRF9QUklWQVRFICJoYXJmYnV6eiA+PSAke0hBUkZCVVpaX01JTl9WRVJTSU9OfSIpCisgIGxpc3QoQVBQRU5EIFBLR0NPTkZJR19SRVFVSVJFU19QUklWQVRFICJoYXJmYnV6eiA+PSAke0hBUkZCVVpaX01JTl9WRVJTSU9OfSIpCiBlbmRpZiAoKQogaWYgKEJST1RMSURFQ19GT1VORCkKICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGZyZWV0eXBlIFBSSVZBVEUgJHtCUk9UTElERUNfTElCUkFSSUVTfSkKICAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMoZnJlZXR5cGUgUFJJVkFURSAke0JST1RMSURFQ19ERUZJTklUSU9OU30pCiAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKGZyZWV0eXBlIFBSSVZBVEUgJHtCUk9UTElERUNfSU5DTFVERV9ESVJTfSkKLSAgbGlzdChBUFBFTkQgUEtHX0NPTkZJR19SRVFVSVJFRF9QUklWQVRFICJsaWJicm90bGlkZWMiKQorICBsaXN0KEFQUEVORCBQS0dDT05GSUdfUkVRVUlSRVNfUFJJVkFURSAibGliYnJvdGxpZGVjIikKIGVuZGlmICgpCiAKIApAQCAtNTQ3LDcgKzU3Nyw3IEBACiAgICMgR2VuZXJhdGUgdGhlIHBrZy1jb25maWcgZmlsZQogICBmaWxlKFJFQUQgIiR7UFJPSkVDVF9TT1VSQ0VfRElSfS9idWlsZHMvdW5peC9mcmVldHlwZTIuaW4iIEZSRUVUWVBFMl9QQ19JTikKIAotICBzdHJpbmcoUkVQTEFDRSAiOyIgIiwgIiBQS0dfQ09ORklHX1JFUVVJUkVEX1BSSVZBVEUgIiR7UEtHX0NPTkZJR19SRVFVSVJFRF9QUklWQVRFfSIpCisgIHN0cmluZyhSRVBMQUNFICI7IiAiLCAiIFBLR0NPTkZJR19SRVFVSVJFU19QUklWQVRFICIke1BLR0NPTkZJR19SRVFVSVJFU19QUklWQVRFfSIpCiAKICAgc3RyaW5nKFJFUExBQ0UgIiVwcmVmaXglIiAke0NNQUtFX0lOU1RBTExfUFJFRklYfQogICAgICAgICAgIEZSRUVUWVBFMl9QQ19JTiAke0ZSRUVUWVBFMl9QQ19JTn0pCkBAIC01NTksMTAgKzU4OSwyNiBAQAogICAgICAgICAgIEZSRUVUWVBFMl9QQ19JTiAke0ZSRUVUWVBFMl9QQ19JTn0pCiAgIHN0cmluZyhSRVBMQUNFICIlZnRfdmVyc2lvbiUiICIke0xJQlRPT0xfQ1VSUkVOVH0uJHtMSUJUT09MX1JFVklTSU9OfS4ke0xJQlRPT0xfQUdFfSIKICAgICAgICAgICBGUkVFVFlQRTJfUENfSU4gJHtGUkVFVFlQRTJfUENfSU59KQotICBzdHJpbmcoUkVQTEFDRSAiJVJFUVVJUkVTX1BSSVZBVEUlIiAiJHtQS0dfQ09ORklHX1JFUVVJUkVEX1BSSVZBVEV9IgotICAgICAgICAgIEZSRUVUWVBFMl9QQ19JTiAke0ZSRUVUWVBFMl9QQ19JTn0pCi0gIHN0cmluZyhSRVBMQUNFICIlTElCU19QUklWQVRFJSIgIiR7UEtHX0NPTkZJR19MSUJTX1BSSVZBVEV9IgotICAgICAgICAgIEZSRUVUWVBFMl9QQ19JTiAke0ZSRUVUWVBFMl9QQ19JTn0pCisKKyAgaWYgKEJVSUxEX1NIQVJFRF9MSUJTKQorICAgIHN0cmluZyhSRVBMQUNFICIlUEtHQ09ORklHX1JFUVVJUkVTJSIgIiR7UEtHQ09ORklHX1JFUVVJUkVTfSIKKyAgICAgICAgICAgIEZSRUVUWVBFMl9QQ19JTiAke0ZSRUVUWVBFMl9QQ19JTn0pCisgICAgc3RyaW5nKFJFUExBQ0UgIiVQS0dDT05GSUdfUkVRVUlSRVNfUFJJVkFURSUiICIke1BLR0NPTkZJR19SRVFVSVJFU19QUklWQVRFfSIKKyAgICAgICAgICAgIEZSRUVUWVBFMl9QQ19JTiAke0ZSRUVUWVBFMl9QQ19JTn0pCisgICAgc3RyaW5nKFJFUExBQ0UgIiVQS0dDT05GSUdfTElCUyUiICIke1BLR0NPTkZJR19MSUJTfSIKKyAgICAgICAgICAgIEZSRUVUWVBFMl9QQ19JTiAke0ZSRUVUWVBFMl9QQ19JTn0pCisgICAgc3RyaW5nKFJFUExBQ0UgIiVQS0dDT05GSUdfTElCU19QUklWQVRFJSIgIiR7UEtHQ09ORklHX0xJQlNfUFJJVkFURX0iCisgICAgICAgICAgICBGUkVFVFlQRTJfUENfSU4gJHtGUkVFVFlQRTJfUENfSU59KQorICBlbHNlICgpCisgICAgc3RyaW5nKFJFUExBQ0UgIiVQS0dDT05GSUdfUkVRVUlSRVMlIiAiJHtQS0dDT05GSUdfUkVRVUlSRVN9ICR7UEtHQ09ORklHX1JFUVVJUkVTX1BSSVZBVEV9IgorICAgICAgICAgICAgRlJFRVRZUEUyX1BDX0lOICR7RlJFRVRZUEUyX1BDX0lOfSkKKyAgICBzdHJpbmcoUkVQTEFDRSAiJVBLR0NPTkZJR19SRVFVSVJFU19QUklWQVRFJSIgIiIKKyAgICAgICAgICAgIEZSRUVUWVBFMl9QQ19JTiAke0ZSRUVUWVBFMl9QQ19JTn0pCisgICAgc3RyaW5nKFJFUExBQ0UgIiVQS0dDT05GSUdfTElCUyUiICIke1BLR0NPTkZJR19MSUJTfSAke1BLR0NPTkZJR19MSUJTX1BSSVZBVEV9IgorICAgICAgICAgICAgRlJFRVRZUEUyX1BDX0lOICR7RlJFRVRZUEUyX1BDX0lOfSkKKyAgICBzdHJpbmcoUkVQTEFDRSAiJVBLR0NPTkZJR19MSUJTX1BSSVZBVEUlIiAiIgorICAgICAgICAgICAgRlJFRVRZUEUyX1BDX0lOICR7RlJFRVRZUEUyX1BDX0lOfSkKKyAgZW5kaWYgKCkKIAogICBzZXQoRlJFRVRZUEUyX1BDX0lOX05BTUUgIiR7UFJPSkVDVF9CSU5BUllfRElSfS9mcmVldHlwZTIucGMiKQogICBpZiAoRVhJU1RTICIke0ZSRUVUWVBFMl9QQ19JTl9OQU1FfSIpCkBAIC01ODYsNyArNjMyLDcgQEAKICAgICBDT01QQVRJQklMSVRZIFNhbWVNYWpvclZlcnNpb24pCiAKICAgaW5zdGFsbCgKLSAgICBUQVJHRVRTIGZyZWV0eXBlCisgICAgVEFSR0VUUyBmcmVldHlwZSBmcmVldHlwZS1pbnRlcmZhY2UKICAgICAgIEVYUE9SVCBmcmVldHlwZS10YXJnZXRzCiAgICAgICBMSUJSQVJZIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9CiAgICAgICBBUkNISVZFIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9CmRpZmYgLS1naXQgYS9MSUNFTlNFIGIvTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDg5YmNmCi0tLSAvZGV2L251bGwKKysrIGIvTElDRU5TRQpAQCAtMCwwICsxLDIyNDYgQEAKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwNCwgMjAwNi0yMDExLCAyMDEzLCAyMDE0IGJ5CisgICAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKK09VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KK1RIRSBTT0ZUV0FSRS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyIGJ5CisgICAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKK09VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KK1RIRSBTT0ZUV0FSRS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDgsIDIwMTEsIDIwMTMsIDIwMTQgYnkKKyAgICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkKKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKK2luIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKK3RvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKK2NvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KK2FsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFCitBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorVEhFIFNPRlRXQVJFLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgQ29weXJpZ2h0IChDKSAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA2LCAyMDEwIGJ5CisgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaQorCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CitvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAoraW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwordG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCitmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCitPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCitUSEUgU09GVFdBUkUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgYnkKKyAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKK09VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KK1RIRSBTT0ZUV0FSRS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIENvcHlyaWdodCAyMDAwLCAyMDAxLCAyMDA0IGJ5CisgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaQorCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CitvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAoraW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwordG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCitmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCitPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCitUSEUgU09GVFdBUkUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBDb3B5cmlnaHQgMjAwMC0yMDAxLCAyMDAyIGJ5CisgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaQorCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CitvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAoraW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwordG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCitmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCitPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCitUSEUgU09GVFdBUkUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBDb3B5cmlnaHQgMjAwMC0yMDAxLCAyMDAzIGJ5CisgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaQorCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CitvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAoraW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwordG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCitmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCitPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCitUSEUgU09GVFdBUkUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBDb3B5cmlnaHQgMjAwMC0yMDEwLCAyMDEyLTIwMTQgYnkKKyAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKK09VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KK1RIRSBTT0ZUV0FSRS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIENvcHlyaWdodCAyMDAzIGJ5CisgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaQorCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CitvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAoraW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwordG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCitmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCitPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCitUSEUgU09GVFdBUkUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAxOTk1LTIwMDMsIDIwMTAgTWFyayBBZGxlcgorRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMTk5NS0yMDA1LCAyMDEwIE1hcmsgQWRsZXIKK0ZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDE5OTUtMjAxMSwgMjAxNiBNYXJrIEFkbGVyCitGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAxOTk1LTIwMTYgSmVhbi1sb3VwIEdhaWxseSwgTWFyayBBZGxlcgorRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMTk5NS0yMDE3IEplYW4tbG91cCBHYWlsbHkKK0ZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDE5OTUtMjAxNyBNYXJrIEFkbGVyCitGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAxOTk1LTIwMTkgTWFyayBBZGxlcgorRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMTk5NS0yMDIyIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKKworVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKK3dhcnJhbnR5LiAgSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMKK2FyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCisKK1Blcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLAoraW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdAorZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgorCisxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdAorICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmUKKyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZQorICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KKzIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlCisgICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCiszLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLgorCitKZWFuLWxvdXAgR2FpbGx5ICAgICAgICBNYXJrIEFkbGVyCitqbG91cEBnemlwLm9yZyAgICAgICAgICBtYWRsZXJAYWx1bW5pLmNhbHRlY2guZWR1CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAxOTk1LTIwMjIgSmVhbi1sb3VwIEdhaWxseSwgTWFyayBBZGxlcgorRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMTk5NS0yMDIyIE1hcmsgQWRsZXIKK0ZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDE5OTYtMjAxOSBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgV2VybmVyIExlbWJlcmcsIGFuZCBHb29nbGUgSW5jLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgV2VybmVyIExlbWJlcmcgYW5kIERldGxlZiBXw7xya25lci4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLAorbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKK2xpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQordGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCit1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIFdlcm5lciBMZW1iZXJnLCBhbmQgRGV0bGVmIFd1ZXJrbmVyLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgV2VybmVyIExlbWJlcmcsIGFuZCBEb21pbmlrIFLDtnR0c2NoZXMuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcKKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLAorbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKK2xpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQordGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCit1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkCittb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCithbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCitMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQoraW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKK2Z1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCitDb3B5cmlnaHQgMjAwMyBIdXcgRCBNIERhdmllcyBmb3IgQ29kZXdlYXZlcnMKK0NvcHlyaWdodCAyMDA3IERtaXRyeSBUaW1vc2hrb3YgZm9yIENvZGV3ZWF2ZXJzCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCitDb3B5cmlnaHQgMjAwNyBEbWl0cnkgVGltb3Noa292IGZvciBDb2Rld2VhdmVycworCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQorSnVzdCB2YW4gUm9zc3VtLCBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwMCBieSBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkKKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCithIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKK3dpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKK2Rpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCit0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCitpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCitFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKK01FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KK0lOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCitDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAorVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKK1NPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwMCwgMjAwMSwgMjAwMywgMjAwOCBieQorRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKK09VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KK1RIRSBTT0ZUV0FSRS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzICBmaWxlICBpcyAgcGFydCAgb2YgdGhlICBGcmVlVHlwZSAgcHJvamVjdCwgYW5kIG1heSAgb25seSBiZSAgdXNlZCwKK21vZGlmaWVkLCAgYW5kICBkaXN0cmlidXRlZCAgdW5kZXIgIHRoZSAgdGVybXMgb2YgIHRoZSBGcmVlVHlwZSAgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzCitmaWxlIHlvdSAgaW5kaWNhdGUgdGhhdCAgeW91IGhhdmUgIHJlYWQgdGhlICBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kICBhbmQKK2FjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzICBmaWxlIGlzICBwYXJ0IG9mICB0aGUgRnJlZVR5cGUgIHByb2plY3QsIGFuZCAgbWF5IG9ubHkgIGJlIHVzZWQsCittb2RpZmllZCwgIGFuZCBkaXN0cmlidXRlZCAgdW5kZXIgdGhlICB0ZXJtcyBvZiAgdGhlICBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCAgTElDRU5TRS5UWFQuICBCeSAgY29udGludWluZyB0byAgdXNlLCBtb2RpZnksICBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91ICBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kCithbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwMC0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwMC0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCithbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCitMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQoraW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKK2Z1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwOCBieQorRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKK09VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KK1RIRSBTT0ZUV0FSRS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiBieSBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkKKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCithIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKK3dpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKK2Rpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCit0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCitpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCitFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKK01FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KK0lOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCitDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAorVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKK1NPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorCisqKiogUG9ydGlvbnMgb2YgdGhlIGRyaXZlciAodGhhdCBpcywgYmRmbGliLmMgYW5kIGJkZi5oKToKKworQ29weXJpZ2h0IDIwMDAgQ29tcHV0aW5nIFJlc2VhcmNoIExhYnMsIE5ldyBNZXhpY28gU3RhdGUgVW5pdmVyc2l0eQorQ29weXJpZ2h0IDIwMDEtMjAwMiwgMjAxMSBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkKKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKK2NvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCit0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCit0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKK2FuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KK2FsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKK1RIRSBDT01QVVRJTkcgUkVTRUFSQ0ggTEFCIE9SIE5FVyBNRVhJQ08gU1RBVEUgVU5JVkVSU0lUWSBCRSBMSUFCTEUgRk9SIEFOWQorQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVAorT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SCitUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzICBmaWxlICBpcyAgcGFydCAgb2YgdGhlICBGcmVlVHlwZSAgcHJvamVjdCwgYW5kIG1heSAgb25seSBiZSAgdXNlZCwKK21vZGlmaWVkLCAgYW5kICBkaXN0cmlidXRlZCAgdW5kZXIgIHRoZSAgdGVybXMgb2YgIHRoZSBGcmVlVHlwZSAgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzCitmaWxlIHlvdSAgaW5kaWNhdGUgdGhhdCAgeW91IGhhdmUgIHJlYWQgdGhlICBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kICBhbmQKK2FjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQKK21vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKK2xpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQordGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCit1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDAxLTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLAorbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKK2xpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQordGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCit1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDAxLTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKK2FuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKK0xJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CitpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdAorZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDAxLTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKK2FuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKK0xJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CitpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdAorZnVsbHkuCisKK0FzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZQorZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0CitnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZgordGhhdCBwcm9ncmFtLgorCitzZXJpYWwgNworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcKKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLAorbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKK2xpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQordGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCit1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDAyLTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworVGhpcyAgZmlsZSBpcyAgcGFydCAgb2YgdGhlICBGcmVlVHlwZSAgcHJvamVjdCwgYW5kICBtYXkgIG9ubHkgYmUgIHVzZWQsCittb2RpZmllZCwgIGFuZCAgZGlzdHJpYnV0ZWQgdW5kZXIgIHRoZSAgdGVybXMgIG9mICB0aGUgRnJlZVR5cGUgIHByb2plY3QKK2xpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyAgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcworZmlsZSAgeW91IGluZGljYXRlIHRoYXQgIHlvdSBoYXZlICByZWFkIHRoZSAgbGljZW5zZSBhbmQgIHVuZGVyc3RhbmQgYW5kCithY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDAyLTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworVGhpcyAgZmlsZSBpcyAgcGFydCBvZiAgdGhlIEZyZWVUeXBlICBwcm9qZWN0LCBhbmQgIG1heSBvbmx5ICBiZSB1c2VkLAorbW9kaWZpZWQsICBhbmQgZGlzdHJpYnV0ZWQgIHVuZGVyIHRoZSAgdGVybXMgb2YgIHRoZSBGcmVlVHlwZSAgcHJvamVjdAorbGljZW5zZSwgIExJQ0VOU0UuVFhULiAgQnkgIGNvbnRpbnVpbmcgdG8gIHVzZSwgbW9kaWZ5LCAgb3IgZGlzdHJpYnV0ZQordGhpcyBmaWxlIHlvdSAgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSAgbGljZW5zZSBhbmQgdW5kZXJzdGFuZAorYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLAorTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKK2luZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CitmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQorUm9iZXJ0byBBbGFtZWRhLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgV2VybmVyIExlbWJlcmcsIGFuZCBEb21pbmlrIFLDtnR0c2NoZXMuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgIGZpbGUgIGlzICBwYXJ0ICBvZiB0aGUgIEZyZWVUeXBlICBwcm9qZWN0LCBhbmQgbWF5ICBvbmx5IGJlICB1c2VkLAorbW9kaWZpZWQsICBhbmQgIGRpc3RyaWJ1dGVkICB1bmRlciAgdGhlICB0ZXJtcyBvZiAgdGhlIEZyZWVUeXBlICBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMKK2ZpbGUgeW91ICBpbmRpY2F0ZSB0aGF0ICB5b3UgaGF2ZSAgcmVhZCB0aGUgIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQgIGFuZAorYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgIGZpbGUgaXMgIHBhcnQgb2YgIHRoZSBGcmVlVHlwZSAgcHJvamVjdCwgYW5kICBtYXkgb25seSAgYmUgdXNlZCwKK21vZGlmaWVkLCAgYW5kIGRpc3RyaWJ1dGVkICB1bmRlciB0aGUgIHRlcm1zIG9mICB0aGUgIEZyZWVUeXBlIHByb2plY3QKK2xpY2Vuc2UsICBMSUNFTlNFLlRYVC4gIEJ5ICBjb250aW51aW5nIHRvICB1c2UsIG1vZGlmeSwgIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCAgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQKK2FuZCBhY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLAorbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKK2xpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQordGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCit1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKK2FuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKK0xJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CitpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdAorZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgYnkKK01hc2F0YWtlIFlBTUFUTywgUmVkaGF0IEsuSy4sCitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwNC0yMDE5IE1hcmsgQWRsZXIKK0ZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQorQWxiZXJ0IENoaW4tQS1Zb3VuZy4KKworYmFzZWQgb24gYHNyYy9sencvcnVsZXMubWsnCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCithbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCitMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQoraW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKK2Z1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CitBbGJlcnQgQ2hpbi1BLVlvdW5nLgorCitiYXNlZCBvbiBjb2RlIGluIGBzcmMvZ3ppcC9mdGd6aXAuYycKKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLAorbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKK2xpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQordGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCit1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIFdlcm5lciBMZW1iZXJnIGFuZCBHZW9yZ2UgV2lsbGlhbXMuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBXZXJuZXIgTGVtYmVyZywgYW5kIEdlb3JnZSBXaWxsaWFtcy4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLAorbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKK2xpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQordGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCit1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworVGhpcyAgZmlsZSBpcyAgcGFydCAgb2YgdGhlICBGcmVlVHlwZSAgcHJvamVjdCwgYW5kICBtYXkgIG9ubHkgYmUgIHVzZWQsCittb2RpZmllZCwgIGFuZCAgZGlzdHJpYnV0ZWQgdW5kZXIgIHRoZSAgdGVybXMgIG9mICB0aGUgRnJlZVR5cGUgIHByb2plY3QKK2xpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyAgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcworZmlsZSAgeW91IGluZGljYXRlIHRoYXQgIHlvdSBoYXZlICByZWFkIHRoZSAgbGljZW5zZSBhbmQgIHVuZGVyc3RhbmQgYW5kCithY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLAorbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKK2xpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQordGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCit1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKK2FuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKK0xJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CitpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdAorZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKK01hc2F0YWtlIFlBTUFUTyBhbmQgUmVkaGF0IEsuSy4KKworRlRfUmFjY2Vzc19HZXRfSGVhZGVySW5mbygpIGFuZCByYWNjZXNzX2d1ZXNzX2Rhcndpbl9oZnNwbHVzKCkgYXJlCitkZXJpdmVkIGZyb20gZnRvYmpzLmMuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CitNYXNhdGFrZSBZQU1BVE8gYW5kIFJlZGhhdCBLLksuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CitNYXNhdGFrZSBZQU1BVE8gYW5kIFJlZGhhdCBLLksuCisKK1RoaXMgZmlsZSBtYXkgb25seSBiZSB1c2VkLAorbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKK2xpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQordGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCit1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKK01hc2F0YWtlIFlBTUFUTywgUmVkIEhhdCBLLksuLAorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQorTWFzYXRha2UgWUFNQVRPLCBSZWRoYXQgSy5LLAorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQorc3V6dWtpIHRvc2hpeWEsIE1hc2F0YWtlIFlBTUFUTywgUmVkIEhhdCBLLksuLAorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQorc3V6dWtpIHRvc2hpeWEsIE1hc2F0YWtlIFlBTUFUTywgUmVkIEhhdCBLLksuLAorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLAorTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKK2luZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CitmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQorc3V6dWtpIHRvc2hpeWEsIE1hc2F0YWtlIFlBTUFUTywgUmVkIGhhdCBLLksuLAorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzICBmaWxlIGlzICBwYXJ0ICBvZiB0aGUgIEZyZWVUeXBlICBwcm9qZWN0LCBhbmQgIG1heSAgb25seSBiZSAgdXNlZCwKK21vZGlmaWVkLCAgYW5kICBkaXN0cmlidXRlZCB1bmRlciAgdGhlICB0ZXJtcyAgb2YgIHRoZSBGcmVlVHlwZSAgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nICB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzCitmaWxlICB5b3UgaW5kaWNhdGUgdGhhdCAgeW91IGhhdmUgIHJlYWQgdGhlICBsaWNlbnNlIGFuZCAgdW5kZXJzdGFuZCBhbmQKK2FjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcsIDIwMDgsIDIwMTMgYnkgR2VvcmdlIFdpbGxpYW1zCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisKK1JlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisKK1JlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKK3RoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KK2FuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCitUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKK2Rlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECitXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8KK0VWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKK1BST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOworT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCitXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUgorT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRgorQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworQ29weXJpZ2h0IDIwMTMgYnkgR29vZ2xlLCBJbmMuCitHb29nbGUgQXV0aG9yKHMpOiBCZWhkYWQgRXNmYWhib2QuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwNS0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgIGZpbGUgaXMgIHBhcnQgb2YgIHRoZSBGcmVlVHlwZSAgcHJvamVjdCwgYW5kICBtYXkgb25seSAgYmUgdXNlZCwKK21vZGlmaWVkLCAgYW5kIGRpc3RyaWJ1dGVkICB1bmRlciB0aGUgIHRlcm1zIG9mICB0aGUgIEZyZWVUeXBlIHByb2plY3QKK2xpY2Vuc2UsICBMSUNFTlNFLlRYVC4gIEJ5ICBjb250aW51aW5nIHRvICB1c2UsIG1vZGlmeSwgIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCAgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQKK2FuZCBhY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkCittb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwNS0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwNS0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCithbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCitMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQoraW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKK2Z1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwNS0yMDIzIGJ5CitEYXZpZCBUdXJuZXIuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwNS0yMDIzIGJ5CitXZXJuZXIgTGVtYmVyZyBhbmQgRGV0bGVmIFfDvHJrbmVyLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMyBieQorV2VybmVyIExlbWJlcmcgYW5kIERldGxlZiBXw7xya25lci4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKK2FuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKK0xJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CitpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdAorZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgYnkKK3N1enVraSB0b3NoaXlhLCBNYXNhdGFrZSBZQU1BVE8sIFJlZCBIYXQgSy5LLiwKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLAorbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKK2xpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQordGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCit1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDA2LTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworVGhpcyAgZmlsZSBpcyAgcGFydCBvZiAgdGhlIEZyZWVUeXBlICBwcm9qZWN0LCBhbmQgIG1heSBvbmx5ICBiZSB1c2VkLAorbW9kaWZpZWQsICBhbmQgZGlzdHJpYnV0ZWQgIHVuZGVyIHRoZSAgdGVybXMgb2YgIHRoZSAgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgIExJQ0VOU0UuVFhULiAgQnkgIGNvbnRpbnVpbmcgdG8gIHVzZSwgbW9kaWZ5LCAgb3IgZGlzdHJpYnV0ZQordGhpcyBmaWxlIHlvdSAgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkICB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZAorYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLAorTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKK2luZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CitmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMyBieQorc3V6dWtpIHRvc2hpeWEsIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworCitUaGlzICBmaWxlIGlzICBwYXJ0IG9mICB0aGUgRnJlZVR5cGUgIHByb2plY3QsIGFuZCAgbWF5IG9ubHkgIGJlIHVzZWQsCittb2RpZmllZCwgIGFuZCBkaXN0cmlidXRlZCAgdW5kZXIgdGhlICB0ZXJtcyBvZiAgdGhlICBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCAgTElDRU5TRS5UWFQuICBCeSAgY29udGludWluZyB0byAgdXNlLCBtb2RpZnksICBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91ICBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kCithbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwNy0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwNy0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1dyaXR0ZW4gYnkgR2VvcmdlIFdpbGxpYW1zLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDctMjAyMyBieQorRGF2aWQgVHVybmVyLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDctMjAyMyBieQorRGVyZWcgQ2xlZ2cgYW5kIE1pY2hhZWwgVG9mdGRhbC4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLAorbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKK2xpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQordGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCit1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDA3LTIwMjMgYnkKK0RlcmVrIENsZWdnIGFuZCBNaWNoYWVsIFRvZnRkYWwuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwNy0yMDIzIGJ5CitSYWh1bCBCaGFsZXJhbyA8cmFodWwuYmhhbGVyYW9AcmVkaGF0LmNvbT4sIDxiLnJhaHVsLnBtQGdtYWlsLmNvbT4uCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwOC0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBXZXJuZXIgTGVtYmVyZywgYW5kIHN1enVraSB0b3NoaXlhLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLAorTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKK2luZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CitmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMDktMjAyMyBieQorT3JhbiBBZ3JhIGFuZCBNaWNrZXkgR2FiZWwuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAxMC0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAxMC0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCithbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCitMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQoraW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKK2Z1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAxMC0yMDIzIGJ5CitKb2VsIEtsaW5naGVkLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMyBieQorSm9lbCBLbGluZ2hlZC4KKworYmFzZWQgb24gYHNyYy9nemlwL2Z0Z3ppcC5jJworCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMyBieQorSm9lbCBLbGluZ2hlZC4KKworYmFzZWQgb24gYHNyYy9sencvcnVsZXMubWsnCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCithbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCitMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQoraW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKK2Z1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAxMi0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAxMy0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAxMy0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCithbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCitMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQoraW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKK2Z1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAxMy0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1dyaXR0ZW4gb3JpZ2luYWxseSBieSBKb2huIENhcnkgPGNhcnlAdHhjb3JwLmNvbT4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKK2FuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKK0xJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CitpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdAorZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDEzLTIwMjMgYnkKK0dvb2dsZSwgSW5jLgorV3JpdHRlbiBieSBTdHVhcnQgR2lsbCBhbmQgQmVoZGFkIEVzZmFoYm9kLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitXcml0dGVuIGJ5IERhdmlkIFdpbXNleSA8ZGF2aWRAd2ltc2V5LnVzPgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLAorTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKK2luZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CitmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLAorTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKK2luZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CitmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMyBieQorV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCithbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCitMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQoraW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKK2Z1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAxNi0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAxNi0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCithbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCitMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQoraW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKK2Z1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAxNy0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAxNy0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCithbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCitMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQoraW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKK2Z1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAxOC0yMDIzIGJ5CitBcm1pbiBIYXNpdHprYSwgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgRG9taW5payBSw7Z0dHNjaGVzLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK09yaWdpbmFsbHkgd3JpdHRlbiBieSBTaGFvIFl1IFpoYW5nIDxzaGFvemhhbmdAZmIuY29tPi4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLAorbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKK2xpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQordGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCit1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDE4LTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworT3JpZ2luYWxseSB3cml0dGVuIGJ5IFNoYW8gWXUgWmhhbmcgPHNoYW96aGFuZ0BmYi5jb20+LgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLAorTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKK2luZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CitmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMyBieQorTmlraGlsIFJhbWFrcmlzaG5hbiwgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzICBmaWxlIGlzICBwYXJ0IG9mICB0aGUgRnJlZVR5cGUgIHByb2plY3QsIGFuZCAgbWF5IG9ubHkgIGJlIHVzZWQsCittb2RpZmllZCwgIGFuZCBkaXN0cmlidXRlZCAgdW5kZXIgdGhlICB0ZXJtcyBvZiAgdGhlICBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCAgTElDRU5TRS5UWFQuICBCeSAgY29udGludWluZyB0byAgdXNlLCBtb2RpZnksICBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91ICBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kCithbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAxOS0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1dyaXR0ZW4gYnkgV2VybmVyIExlbWJlcmcgPHdsQGdudS5vcmc+CisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCithbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCitMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQoraW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKK2Z1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAxOS0yMDIzIGJ5CitOaWtoaWwgUmFtYWtyaXNobmFuLCBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAyMC0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAyMC0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCithbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCitMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQoraW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKK2Z1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAyMC0yMDIzIGJ5CitEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisKK1dyaXR0ZW4gYnkgQW51aiBWZXJtYS4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLAorbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKK2xpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQordGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCit1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDIxLTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLAorbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKK2xpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQordGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCit1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChDKSAyMDIyLTIwMjMgYnkKK0RhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIFdlcm5lciBMZW1iZXJnLCBHZW9yZ2UgV2lsbGlhbXMsIGFuZAorRG9taW5payBSw7Z0dHNjaGVzLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMjItMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgV2VybmVyIExlbWJlcmcsIGFuZCBNb2F6aW4gS2hhdHRpLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKEMpIDIwMjItMjAyMyBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgV2VybmVyIExlbWJlcmcsIGFuZCBNb2F6aW4gS2hhdHRpLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLAorTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKK2luZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CitmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgKGMpIDIwMDEgQWxleGFuZGVyIFBlc2x5YWsgYW5kIGl0IGlzIGhlcmVieSByZWxlYXNlZCB0byB0aGUKK2dlbmVyYWwgcHVibGljIHVuZGVyIHRoZSBmb2xsb3dpbmcgdGVybXM6CisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLgorCitUaGVyZSdzIEFCU09MVVRFTFkgTk8gV0FSUkFOVFksIGV4cHJlc3Mgb3IgaW1wbGllZC4KKworKFRoaXMgaXMgYSBoZWF2aWx5IGN1dC1kb3duICJCU0QgbGljZW5zZSIuKQorCitUaGlzIGRpZmZlcnMgZnJvbSBDb2xpbiBQbHVtYidzIG9sZGVyIHB1YmxpYyBkb21haW4gaW1wbGVtZW50YXRpb24gaW4gdGhhdAorbm8gZXhhY3RseSAzMi1iaXQgaW50ZWdlciBkYXRhIHR5cGUgaXMgcmVxdWlyZWQgKGFueSAzMi1iaXQgb3Igd2lkZXIKK3Vuc2lnbmVkIGludGVnZXIgZGF0YSB0eXBlIHdpbGwgZG8pLCB0aGVyZSdzIG5vIGNvbXBpbGUtdGltZSBlbmRpYW5uZXNzCitjb25maWd1cmF0aW9uLCBhbmQgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMgbWF0Y2ggT3BlblNTTCdzLiAgTm8gY29kZSBmcm9tCitDb2xpbiBQbHVtYidzIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIHJldXNlZDsgdGhpcyBjb21tZW50IG1lcmVseSBjb21wYXJlcwordGhlIHByb3BlcnRpZXMgb2YgdGhlIHR3byBpbmRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMuCisKK1RoZSBwcmltYXJ5IGdvYWxzIG9mIHRoaXMgaW1wbGVtZW50YXRpb24gYXJlIHBvcnRhYmlsaXR5IGFuZCBlYXNlIG9mIHVzZS4KK0l0IGlzIG1lYW50IHRvIGJlIGZhc3QsIGJ1dCBub3QgYXMgZmFzdCBhcyBwb3NzaWJsZS4gIFNvbWUga25vd24KK29wdGltaXphdGlvbnMgYXJlIG5vdCBpbmNsdWRlZCB0byByZWR1Y2Ugc291cmNlIGNvZGUgc2l6ZSBhbmQgYXZvaWQKK2NvbXBpbGUtdGltZSBjb25maWd1cmF0aW9uLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoYykgMjAwMSBBbGV4YW5kZXIgUGVzbHlhayBhbmQgaXQgaXMgaGVyZWJ5IHJlbGVhc2VkIHRvIHRoZQorZ2VuZXJhbCBwdWJsaWMgdW5kZXIgdGhlIGZvbGxvd2luZyB0ZXJtczoKKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQuCisKK1RoZXJlJ3MgQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSwgZXhwcmVzcyBvciBpbXBsaWVkLgorCitTZWUgbWQ1LmMgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChjKSAyMDA4IFN0ZXZlbiBHLiBKb2huc29uIDxzdGV2ZW5qQGFsdW0ubWl0LmVkdT4KK0NvcHlyaWdodCAoYykgMjAxMSBEYW5pZWwgUmljaGFyZCBHLiA8c2t1bmtAaVNLVU5LLk9SRz4KK0NvcHlyaWdodCAoYykgMjAxOSBNYXJjIFN0ZXZlbnMgPG1hcmMuc3RldmVuc0Bjd2kubmw+CisKK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cit1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKK29wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKK1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKK1dJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKK3dpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCitBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKK3NjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcgdGhlIE1hY3JvLiBZb3UKK25lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKK29yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgorYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisKK1RoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZSBBdXRvY29uZgorTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQorbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMgc3BlY2lhbAorZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZCB2ZXJzaW9uIGFzIHdlbGwuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IChjKSAyMDA4IFRpbSBUb29sYW4gPHRvb2xhbkBlbGUudXJpLmVkdT4KKworQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCitwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UKK2FuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgb2ZmZXJlZCBhcy1pcywgd2l0aG91dCBhbnkKK3dhcnJhbnR5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoYykgMjAwOSBGcmFuY2VzY28gU2FsdmVzdHJpbmkgPHNhbHZlc3RyaW5pQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCitwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UKK2FuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgb2ZmZXJlZCBhcy1pcywgd2l0aG91dCBhbnkKK3dhcnJhbnR5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAoYykgMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24KK0NvcHlyaWdodCAoYykgMjAxOSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCisqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEludGVsIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkKKyAgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorICBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKK0FSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKK1NVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KK0NPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCitBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK1RyeSB0byBmaW5kIEhhcmZidXp6IGluY2x1ZGUgYW5kIGxpYnJhcnkgZGlyZWN0b3JpZXMuCisKK0FmdGVyIHN1Y2Nlc3NmdWwgZGlzY292ZXJ5LCB0aGlzIHdpbGwgc2V0IGZvciBpbmNsdXNpb24gd2hlcmUgbmVlZGVkOgorSGFyZkJ1enpfSU5DTFVERV9ESVJTIC0gY29udGFpbmcgdGhlIEhhcmZCdXp6IGhlYWRlcnMKK0hhcmZCdXp6X0xJQlJBUklFUyAtIGNvbnRhaW5nIHRoZSBIYXJmQnV6eiBsaWJyYXJ5CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IDE5OTAsIDE5OTQsIDE5OTggIFRoZSBPcGVuIEdyb3VwCisKK1Blcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUsIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUgYW5kIGl0cworZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUsIHByb3ZpZGVkIHRoYXQKK3RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGggdGhhdAorY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZworZG9jdW1lbnRhdGlvbi4KKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KK2FsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFCitPUEVOIEdST1VQIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTgorQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4KK0NPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisKK0V4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lIG9mIFRoZSBPcGVuIEdyb3VwIHNoYWxsIG5vdCBiZQordXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzCitpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiBhdXRob3JpemF0aW9uIGZyb20gVGhlIE9wZW4gR3JvdXAuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IDE5OTYtMjAxOSBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgMjAwMCBDb21wdXRpbmcgUmVzZWFyY2ggTGFicywgTmV3IE1leGljbyBTdGF0ZSBVbml2ZXJzaXR5CitDb3B5cmlnaHQgMjAwMS0yMDA0LCAyMDExIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaQorCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKK3RvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KK3RoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCitTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorVEhFIENPTVBVVElORyBSRVNFQVJDSCBMQUIgT1IgTkVXIE1FWElDTyBTVEFURSBVTklWRVJTSVRZIEJFIExJQUJMRSBGT1IgQU5ZCitDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUCitPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IKK1RIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAyMDAwIENvbXB1dGluZyBSZXNlYXJjaCBMYWJzLCBOZXcgTWV4aWNvIFN0YXRlIFVuaXZlcnNpdHkKK0NvcHlyaWdodCAyMDAxLTIwMTQKKyAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCitjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAordG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgordGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCithbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKK1NvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCitUSEUgQ09NUFVUSU5HIFJFU0VBUkNIIExBQiBPUiBORVcgTUVYSUNPIFNUQVRFIFVOSVZFUlNJVFkgQkUgTElBQkxFIEZPUiBBTlkKK0NMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQKK09SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUgorVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IDIwMDAgQ29tcHV0aW5nIFJlc2VhcmNoIExhYnMsIE5ldyBNZXhpY28gU3RhdGUgVW5pdmVyc2l0eQorQ29weXJpZ2h0IDIwMDEtMjAxNQorICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkKKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKK2NvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCit0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCit0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKK2FuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KK2FsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKK1RIRSBDT01QVVRJTkcgUkVTRUFSQ0ggTEFCIE9SIE5FVyBNRVhJQ08gU1RBVEUgVU5JVkVSU0lUWSBCRSBMSUFCTEUgRk9SIEFOWQorQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVAorT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SCitUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgMjAwMCwgMjAwNiBieQorRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKK09VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KK1RIRSBTT0ZUV0FSRS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgMjAwMSwgMjAwMiwgMjAwNiBieQorRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKK09VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KK1RIRSBTT0ZUV0FSRS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgMjAwMSwgMjAwMiwgMjAxMiBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkKKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKK2NvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCit0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCit0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKK2FuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KK2FsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKK1RIRSBDT01QVVRJTkcgUkVTRUFSQ0ggTEFCIE9SIE5FVyBNRVhJQ08gU1RBVEUgVU5JVkVSU0lUWSBCRSBMSUFCTEUgRk9SIEFOWQorQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVAorT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SCitUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgMjAwMSwgMjAxMiBieQorRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCittb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCit0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKK3VuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgMjAwMyBieQorTWFzYXRha2UgWUFNQVRPIGFuZCBSZWRoYXQgSy5LLgorCitUaGlzIGZpbGUgbWF5IG9ubHkgYmUgdXNlZCwKK21vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CitsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKK3RoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAordW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAyMDA2LTIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuCisKK1RoaXMgc29mdHdhcmUsIGFuZCBhbGwgd29ya3Mgb2YgYXV0aG9yc2hpcCwgd2hldGhlciBpbiBzb3VyY2Ugb3IKK29iamVjdCBjb2RlIGZvcm0gYXMgaW5kaWNhdGVkIGJ5IHRoZSBjb3B5cmlnaHQgbm90aWNlKHMpIGluY2x1ZGVkCitoZXJlaW4gKGNvbGxlY3RpdmVseSwgdGhlICJXb3JrIikgaXMgbWFkZSBhdmFpbGFibGUsIGFuZCBtYXkgb25seSBiZQordXNlZCwgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLAorTElDRU5TRS5UWFQuICBBZGRpdGlvbmFsbHksIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQorRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLCBlYWNoIGNvbnRyaWJ1dG9yIHRvIHRoZSBXb3JrIGhlcmVieSBncmFudHMKK3RvIGFueSBpbmRpdmlkdWFsIG9yIGxlZ2FsIGVudGl0eSBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkKK3RoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYW5kIHRoaXMgc2VjdGlvbiAoaGVyZWFmdGVyLCAiWW91IiBvcgorIllvdXIiKSBhIHBlcnBldHVhbCwgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsCityb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50CitsaWNlbnNlIHRvIG1ha2UsIGhhdmUgbWFkZSwgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZAorb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBXb3JrLCB3aGVyZSBzdWNoIGxpY2Vuc2UgYXBwbGllcyBvbmx5IHRvIHRob3NlCitwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUgYnkgc3VjaCBjb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseQoraW5mcmluZ2VkIGJ5IHRoZWlyIGNvbnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpcgorY29udHJpYnV0aW9uKHMpIHdpdGggdGhlIFdvcmsgdG8gd2hpY2ggc3VjaCBjb250cmlidXRpb24ocykgd2FzCitzdWJtaXR0ZWQuICBJZiBZb3UgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eQorKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQKK3RoZSBXb3JrIG9yIGEgY29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMKK2RpcmVjdCBvciBjb250cmlidXRvcnkgcGF0ZW50IGluZnJpbmdlbWVudCwgdGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzCitncmFudGVkIHRvIFlvdSB1bmRlciB0aGlzIExpY2Vuc2UgZm9yIHRoYXQgV29yayBzaGFsbCB0ZXJtaW5hdGUgYXMgb2YKK3RoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KKworQnkgdXNpbmcsIG1vZGlmeWluZywgb3IgZGlzdHJpYnV0aW5nIHRoZSBXb3JrIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdQoraGF2ZSByZWFkIGFuZCB1bmRlcnN0b29kIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKK0ZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhcyB3ZWxsIGFzIHRob3NlIHByb3ZpZGVkIGluIHRoaXMgc2VjdGlvbiwKK2FuZCB5b3UgYWNjZXB0IHRoZW0gZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IDIwMDctMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4KKworVGhpcyBzb2Z0d2FyZSwgYW5kIGFsbCB3b3JrcyBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIHNvdXJjZSBvcgorb2JqZWN0IGNvZGUgZm9ybSBhcyBpbmRpY2F0ZWQgYnkgdGhlIGNvcHlyaWdodCBub3RpY2UocykgaW5jbHVkZWQKK2hlcmVpbiAoY29sbGVjdGl2ZWx5LCB0aGUgIldvcmsiKSBpcyBtYWRlIGF2YWlsYWJsZSwgYW5kIG1heSBvbmx5IGJlCit1c2VkLCBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsCitMSUNFTlNFLlRYVC4gIEFkZGl0aW9uYWxseSwgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCitGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsIGVhY2ggY29udHJpYnV0b3IgdG8gdGhlIFdvcmsgaGVyZWJ5IGdyYW50cwordG8gYW55IGluZGl2aWR1YWwgb3IgbGVnYWwgZW50aXR5IGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMgZ3JhbnRlZCBieQordGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhbmQgdGhpcyBzZWN0aW9uIChoZXJlYWZ0ZXIsICJZb3UiIG9yCisiWW91ciIpIGEgcGVycGV0dWFsLCB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwKK3JveWFsdHktZnJlZSwgaXJyZXZvY2FibGUgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQKK2xpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLCB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kCitvdGhlcndpc2UgdHJhbnNmZXIgdGhlIFdvcmssIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UKK3BhdGVudCBjbGFpbXMgbGljZW5zYWJsZSBieSBzdWNoIGNvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5CitpbmZyaW5nZWQgYnkgdGhlaXIgY29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyCitjb250cmlidXRpb24ocykgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIGNvbnRyaWJ1dGlvbihzKSB3YXMKK3N1Ym1pdHRlZC4gIElmIFlvdSBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5CisoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdAordGhlIFdvcmsgb3IgYSBjb250cmlidXRpb24gaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yayBjb25zdGl0dXRlcworZGlyZWN0IG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKK2dyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5zZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZgordGhlIGRhdGUgc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLgorCitCeSB1c2luZywgbW9kaWZ5aW5nLCBvciBkaXN0cmlidXRpbmcgdGhlIFdvcmsgeW91IGluZGljYXRlIHRoYXQgeW91CitoYXZlIHJlYWQgYW5kIHVuZGVyc3Rvb2QgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQorRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFzIHdlbGwgYXMgdGhvc2UgcHJvdmlkZWQgaW4gdGhpcyBzZWN0aW9uLAorYW5kIHlvdSBhY2NlcHQgdGhlbSBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgMjAwNy0yMDE0IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLgorCitUaGlzIHNvZnR3YXJlLCBhbmQgYWxsIHdvcmtzIG9mIGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gc291cmNlIG9yCitvYmplY3QgY29kZSBmb3JtIGFzIGluZGljYXRlZCBieSB0aGUgY29weXJpZ2h0IG5vdGljZShzKSBpbmNsdWRlZAoraGVyZWluIChjb2xsZWN0aXZlbHksIHRoZSAiV29yayIpIGlzIG1hZGUgYXZhaWxhYmxlLCBhbmQgbWF5IG9ubHkgYmUKK3VzZWQsIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwKK0xJQ0VOU0UuVFhULiAgQWRkaXRpb25hbGx5LCBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKK0ZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwgZWFjaCBjb250cmlidXRvciB0byB0aGUgV29yayBoZXJlYnkgZ3JhbnRzCit0byBhbnkgaW5kaXZpZHVhbCBvciBsZWdhbCBlbnRpdHkgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5Cit0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFuZCB0aGlzIHNlY3Rpb24gKGhlcmVhZnRlciwgIllvdSIgb3IKKyJZb3VyIikgYSBwZXJwZXR1YWwsIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLAorcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZSAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudAorbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQKK290aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZQorcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlIGJ5IHN1Y2ggY29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkKK2luZnJpbmdlZCBieSB0aGVpciBjb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIKK2NvbnRyaWJ1dGlvbihzKSB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggY29udHJpYnV0aW9uKHMpIHdhcworc3VibWl0dGVkLiAgSWYgWW91IGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkKKyhpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0Cit0aGUgV29yayBvciBhIGNvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzCitkaXJlY3Qgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcworZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlIGFzIG9mCit0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCisKK0J5IHVzaW5nLCBtb2RpZnlpbmcsIG9yIGRpc3RyaWJ1dGluZyB0aGUgV29yayB5b3UgaW5kaWNhdGUgdGhhdCB5b3UKK2hhdmUgcmVhZCBhbmQgdW5kZXJzdG9vZCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCitGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYXMgd2VsbCBhcyB0aG9zZSBwcm92aWRlZCBpbiB0aGlzIHNlY3Rpb24sCithbmQgeW91IGFjY2VwdCB0aGVtIGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAyMDA5LTIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuCisKK1RoaXMgc29mdHdhcmUsIGFuZCBhbGwgd29ya3Mgb2YgYXV0aG9yc2hpcCwgd2hldGhlciBpbiBzb3VyY2Ugb3IKK29iamVjdCBjb2RlIGZvcm0gYXMgaW5kaWNhdGVkIGJ5IHRoZSBjb3B5cmlnaHQgbm90aWNlKHMpIGluY2x1ZGVkCitoZXJlaW4gKGNvbGxlY3RpdmVseSwgdGhlICJXb3JrIikgaXMgbWFkZSBhdmFpbGFibGUsIGFuZCBtYXkgb25seSBiZQordXNlZCwgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLAorTElDRU5TRS5UWFQuICBBZGRpdGlvbmFsbHksIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQorRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLCBlYWNoIGNvbnRyaWJ1dG9yIHRvIHRoZSBXb3JrIGhlcmVieSBncmFudHMKK3RvIGFueSBpbmRpdmlkdWFsIG9yIGxlZ2FsIGVudGl0eSBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkKK3RoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYW5kIHRoaXMgc2VjdGlvbiAoaGVyZWFmdGVyLCAiWW91IiBvcgorIllvdXIiKSBhIHBlcnBldHVhbCwgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsCityb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50CitsaWNlbnNlIHRvIG1ha2UsIGhhdmUgbWFkZSwgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZAorb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBXb3JrLCB3aGVyZSBzdWNoIGxpY2Vuc2UgYXBwbGllcyBvbmx5IHRvIHRob3NlCitwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUgYnkgc3VjaCBjb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseQoraW5mcmluZ2VkIGJ5IHRoZWlyIGNvbnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpcgorY29udHJpYnV0aW9uKHMpIHdpdGggdGhlIFdvcmsgdG8gd2hpY2ggc3VjaCBjb250cmlidXRpb24ocykgd2FzCitzdWJtaXR0ZWQuICBJZiBZb3UgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eQorKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQKK3RoZSBXb3JrIG9yIGEgY29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMKK2RpcmVjdCBvciBjb250cmlidXRvcnkgcGF0ZW50IGluZnJpbmdlbWVudCwgdGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzCitncmFudGVkIHRvIFlvdSB1bmRlciB0aGlzIExpY2Vuc2UgZm9yIHRoYXQgV29yayBzaGFsbCB0ZXJtaW5hdGUgYXMgb2YKK3RoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KKworQnkgdXNpbmcsIG1vZGlmeWluZywgb3IgZGlzdHJpYnV0aW5nIHRoZSBXb3JrIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdQoraGF2ZSByZWFkIGFuZCB1bmRlcnN0b29kIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKK0ZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhcyB3ZWxsIGFzIHRob3NlIHByb3ZpZGVkIGluIHRoaXMgc2VjdGlvbiwKK2FuZCB5b3UgYWNjZXB0IHRoZW0gZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IDIwMDktMjAxNCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4KKworVGhpcyBzb2Z0d2FyZSwgYW5kIGFsbCB3b3JrcyBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIHNvdXJjZSBvcgorb2JqZWN0IGNvZGUgZm9ybSBhcyBpbmRpY2F0ZWQgYnkgdGhlIGNvcHlyaWdodCBub3RpY2UocykgaW5jbHVkZWQKK2hlcmVpbiAoY29sbGVjdGl2ZWx5LCB0aGUgIldvcmsiKSBpcyBtYWRlIGF2YWlsYWJsZSwgYW5kIG1heSBvbmx5IGJlCit1c2VkLCBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsCitMSUNFTlNFLlRYVC4gIEFkZGl0aW9uYWxseSwgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCitGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsIGVhY2ggY29udHJpYnV0b3IgdG8gdGhlIFdvcmsgaGVyZWJ5IGdyYW50cwordG8gYW55IGluZGl2aWR1YWwgb3IgbGVnYWwgZW50aXR5IGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMgZ3JhbnRlZCBieQordGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhbmQgdGhpcyBzZWN0aW9uIChoZXJlYWZ0ZXIsICJZb3UiIG9yCisiWW91ciIpIGEgcGVycGV0dWFsLCB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwKK3JveWFsdHktZnJlZSwgaXJyZXZvY2FibGUgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQKK2xpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLCB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kCitvdGhlcndpc2UgdHJhbnNmZXIgdGhlIFdvcmssIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UKK3BhdGVudCBjbGFpbXMgbGljZW5zYWJsZSBieSBzdWNoIGNvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5CitpbmZyaW5nZWQgYnkgdGhlaXIgY29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyCitjb250cmlidXRpb24ocykgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIGNvbnRyaWJ1dGlvbihzKSB3YXMKK3N1Ym1pdHRlZC4gIElmIFlvdSBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5CisoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdAordGhlIFdvcmsgb3IgYSBjb250cmlidXRpb24gaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yayBjb25zdGl0dXRlcworZGlyZWN0IG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKK2dyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5zZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZgordGhlIGRhdGUgc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLgorCitCeSB1c2luZywgbW9kaWZ5aW5nLCBvciBkaXN0cmlidXRpbmcgdGhlIFdvcmsgeW91IGluZGljYXRlIHRoYXQgeW91CitoYXZlIHJlYWQgYW5kIHVuZGVyc3Rvb2QgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQorRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFzIHdlbGwgYXMgdGhvc2UgcHJvdmlkZWQgaW4gdGhpcyBzZWN0aW9uLAorYW5kIHlvdSBhY2NlcHQgdGhlbSBmdWxseS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgMjAxMS0yMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLgorCitUaGlzIHNvZnR3YXJlLCBhbmQgYWxsIHdvcmtzIG9mIGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gc291cmNlIG9yCitvYmplY3QgY29kZSBmb3JtIGFzIGluZGljYXRlZCBieSB0aGUgY29weXJpZ2h0IG5vdGljZShzKSBpbmNsdWRlZAoraGVyZWluIChjb2xsZWN0aXZlbHksIHRoZSAiV29yayIpIGlzIG1hZGUgYXZhaWxhYmxlLCBhbmQgbWF5IG9ubHkgYmUKK3VzZWQsIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwKK0xJQ0VOU0UuVFhULiAgQWRkaXRpb25hbGx5LCBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKK0ZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwgZWFjaCBjb250cmlidXRvciB0byB0aGUgV29yayBoZXJlYnkgZ3JhbnRzCit0byBhbnkgaW5kaXZpZHVhbCBvciBsZWdhbCBlbnRpdHkgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5Cit0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFuZCB0aGlzIHNlY3Rpb24gKGhlcmVhZnRlciwgIllvdSIgb3IKKyJZb3VyIikgYSBwZXJwZXR1YWwsIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLAorcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZSAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudAorbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQKK290aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZQorcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlIGJ5IHN1Y2ggY29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkKK2luZnJpbmdlZCBieSB0aGVpciBjb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIKK2NvbnRyaWJ1dGlvbihzKSB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggY29udHJpYnV0aW9uKHMpIHdhcworc3VibWl0dGVkLiAgSWYgWW91IGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkKKyhpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0Cit0aGUgV29yayBvciBhIGNvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzCitkaXJlY3Qgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcworZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlIGFzIG9mCit0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCisKK0J5IHVzaW5nLCBtb2RpZnlpbmcsIG9yIGRpc3RyaWJ1dGluZyB0aGUgV29yayB5b3UgaW5kaWNhdGUgdGhhdCB5b3UKK2hhdmUgcmVhZCBhbmQgdW5kZXJzdG9vZCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCitGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYXMgd2VsbCBhcyB0aG9zZSBwcm92aWRlZCBpbiB0aGlzIHNlY3Rpb24sCithbmQgeW91IGFjY2VwdCB0aGVtIGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLgorCitUaGlzIHNvZnR3YXJlLCBhbmQgYWxsIHdvcmtzIG9mIGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gc291cmNlIG9yCitvYmplY3QgY29kZSBmb3JtIGFzIGluZGljYXRlZCBieSB0aGUgY29weXJpZ2h0IG5vdGljZShzKSBpbmNsdWRlZAoraGVyZWluIChjb2xsZWN0aXZlbHksIHRoZSAiV29yayIpIGlzIG1hZGUgYXZhaWxhYmxlLCBhbmQgbWF5IG9ubHkgYmUKK3VzZWQsIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwKK0xJQ0VOU0UuVFhULiAgQWRkaXRpb25hbGx5LCBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKK0ZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwgZWFjaCBjb250cmlidXRvciB0byB0aGUgV29yayBoZXJlYnkgZ3JhbnRzCit0byBhbnkgaW5kaXZpZHVhbCBvciBsZWdhbCBlbnRpdHkgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5Cit0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFuZCB0aGlzIHNlY3Rpb24gKGhlcmVhZnRlciwgIllvdSIgb3IKKyJZb3VyIikgYSBwZXJwZXR1YWwsIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLAorcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZSAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudAorbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQKK290aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZQorcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlIGJ5IHN1Y2ggY29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkKK2luZnJpbmdlZCBieSB0aGVpciBjb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIKK2NvbnRyaWJ1dGlvbihzKSB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggY29udHJpYnV0aW9uKHMpIHdhcworc3VibWl0dGVkLiAgSWYgWW91IGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkKKyhpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0Cit0aGUgV29yayBvciBhIGNvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzCitkaXJlY3Qgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcworZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlIGFzIG9mCit0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCisKK0J5IHVzaW5nLCBtb2RpZnlpbmcsIG9yIGRpc3RyaWJ1dGluZyB0aGUgV29yayB5b3UgaW5kaWNhdGUgdGhhdCB5b3UKK2hhdmUgcmVhZCBhbmQgdW5kZXJzdG9vZCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCitGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYXMgd2VsbCBhcyB0aG9zZSBwcm92aWRlZCBpbiB0aGlzIHNlY3Rpb24sCithbmQgeW91IGFjY2VwdCB0aGVtIGZ1bGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAyMDEzLTIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuCisKK1RoaXMgc29mdHdhcmUsIGFuZCBhbGwgd29ya3Mgb2YgYXV0aG9yc2hpcCwgd2hldGhlciBpbiBzb3VyY2Ugb3IKK29iamVjdCBjb2RlIGZvcm0gYXMgaW5kaWNhdGVkIGJ5IHRoZSBjb3B5cmlnaHQgbm90aWNlKHMpIGluY2x1ZGVkCitoZXJlaW4gKGNvbGxlY3RpdmVseSwgdGhlICJXb3JrIikgaXMgbWFkZSBhdmFpbGFibGUsIGFuZCBtYXkgb25seSBiZQordXNlZCwgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLAorTElDRU5TRS5UWFQuICBBZGRpdGlvbmFsbHksIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQorRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLCBlYWNoIGNvbnRyaWJ1dG9yIHRvIHRoZSBXb3JrIGhlcmVieSBncmFudHMKK3RvIGFueSBpbmRpdmlkdWFsIG9yIGxlZ2FsIGVudGl0eSBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkKK3RoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYW5kIHRoaXMgc2VjdGlvbiAoaGVyZWFmdGVyLCAiWW91IiBvcgorIllvdXIiKSBhIHBlcnBldHVhbCwgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsCityb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50CitsaWNlbnNlIHRvIG1ha2UsIGhhdmUgbWFkZSwgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZAorb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBXb3JrLCB3aGVyZSBzdWNoIGxpY2Vuc2UgYXBwbGllcyBvbmx5IHRvIHRob3NlCitwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUgYnkgc3VjaCBjb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseQoraW5mcmluZ2VkIGJ5IHRoZWlyIGNvbnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpcgorY29udHJpYnV0aW9uKHMpIHdpdGggdGhlIFdvcmsgdG8gd2hpY2ggc3VjaCBjb250cmlidXRpb24ocykgd2FzCitzdWJtaXR0ZWQuICBJZiBZb3UgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eQorKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQKK3RoZSBXb3JrIG9yIGEgY29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMKK2RpcmVjdCBvciBjb250cmlidXRvcnkgcGF0ZW50IGluZnJpbmdlbWVudCwgdGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzCitncmFudGVkIHRvIFlvdSB1bmRlciB0aGlzIExpY2Vuc2UgZm9yIHRoYXQgV29yayBzaGFsbCB0ZXJtaW5hdGUgYXMgb2YKK3RoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KKworQnkgdXNpbmcsIG1vZGlmeWluZywgb3IgZGlzdHJpYnV0aW5nIHRoZSBXb3JrIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdQoraGF2ZSByZWFkIGFuZCB1bmRlcnN0b29kIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKK0ZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhcyB3ZWxsIGFzIHRob3NlIHByb3ZpZGVkIGluIHRoaXMgc2VjdGlvbiwKK2FuZCB5b3UgYWNjZXB0IHRoZW0gZnVsbHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IMKpIDIwMDQgU2NvdHQgSmFtZXMgUmVtbmFudCA8c2NvdHRAbmV0c3BsaXQuY29tPi4KKworVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKK2l0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cit0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKK0dlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKK2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCitGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorCitBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CitkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKK2NvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCit0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29weXJpZ2h0IMKpIDIwMDksIDIwMjMgIFJlZCBIYXQsIEluYy4KK0NvcHlyaWdodCDCqSAyMDE1ICBHb29nbGUsIEluYy4KKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgd2l0aG91dCB3cml0dGVuIGFncmVlbWVudCBhbmQgd2l0aG91dAorbGljZW5zZSBvciByb3lhbHR5IGZlZXMsIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzCitzb2Z0d2FyZSBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlLCBwcm92aWRlZCB0aGF0IHRoZQorYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhlIGZvbGxvd2luZyB0d28gcGFyYWdyYXBocyBhcHBlYXIgaW4KK2FsbCBjb3BpZXMgb2YgdGhpcyBzb2Z0d2FyZS4KKworSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUgTElBQkxFIFRPIEFOWSBQQVJUWSBGT1IKK0RJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworQVJJU0lORyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTiwgRVZFTgorSUYgVEhFIENPUFlSSUdIVCBIT0xERVIgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorREFNQUdFLgorCitUSEUgQ09QWVJJR0hUIEhPTERFUiBTUEVDSUZJQ0FMTFkgRElTQ0xBSU1TIEFOWSBXQVJSQU5USUVTLCBJTkNMVURJTkcsCitCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBUSEUgU09GVFdBUkUgUFJPVklERUQgSEVSRVVOREVSIElTCitPTiBBTiAiQVMgSVMiIEJBU0lTLCBBTkQgVEhFIENPUFlSSUdIVCBIT0xERVIgSEFTIE5PIE9CTElHQVRJT04gVE8KK1BST1ZJREUgTUFJTlRFTkFOQ0UsIFNVUFBPUlQsIFVQREFURVMsIEVOSEFOQ0VNRU5UUywgT1IgTU9ESUZJQ0FUSU9OUy4KKworUmVkIEhhdCBBdXRob3Iocyk6IEJlaGRhZCBFc2ZhaGJvZCwgTWF0dGhpYXMgQ2xhc2VuCitHb29nbGUgQXV0aG9yKHMpOiBCZWhkYWQgRXNmYWhib2QKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCmRpZmYgLS1naXQgYS9MSUNFTlNFLlRYVCBiL0xJQ0VOU0UuVFhUCmluZGV4IGIxZGVmNjUuLjhiOWNlOWUgMTAwNjQ0Ci0tLSBhL0xJQ0VOU0UuVFhUCisrKyBiL0xJQ0VOU0UuVFhUCkBAIC0yOSwxMiArMjksMTYgQEAKIHRoYXQgIG9mIHRoZSAgWCBXaW5kb3cgIFN5c3RlbS4gICBJdCBpcyAgY29tcGF0aWJsZSB0byAgdGhlIGFib3ZlICB0d28KIGxpY2Vuc2VzIChzZWUgZmlsZXMgYHNyYy9iZGYvUkVBRE1FYCAgYW5kIGBzcmMvcGNmL1JFQURNRWApLiAgVGhlIHNhbWUKIGhvbGRzICAgZm9yICAgdGhlICAgc291cmNlICAgIGNvZGUgICBmaWxlcyAgIGBzcmMvYmFzZS9mdGhhc2guY2AgICBhbmQKLWBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0aGFzaC5oYDsgdGhleSB3ZXIgcGFydCAgb2YgdGhlIEJERiBkcml2ZXIKK2BpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0aGFzaC5oYDsgdGhleSB3ZXJlIHBhcnQgb2YgdGhlIEJERiBkcml2ZXIKIGluIGVhcmxpZXIgRnJlZVR5cGUgdmVyc2lvbnMuCiAKIFRoZSBnemlwICBtb2R1bGUgdXNlcyB0aGUgIHpsaWIgbGljZW5zZSAoc2VlICBgc3JjL2d6aXAvemxpYi5oYCkgd2hpY2gKIHRvbyBpcyBjb21wYXRpYmxlIHRvIHRoZSBhYm92ZSB0d28gbGljZW5zZXMuCiAKK1RoZSBmaWxlcyBgc3JjL2F1dG9maXQvZnQtaGIuY2AgYW5kIGBzcmMvYXV0b2ZpdC9mdC1oYi5oYCBjb250YWluIGNvZGUKK3Rha2VuIGFsbW9zdCAgdmVyYmF0aW0gZnJvbSB0aGUgIEhhcmZCdXp6IGZpbGUgYGhiLWZ0LmNjYCwgIHdoaWNoIHVzZXMKK3RoZSAnT2xkIE1JVCcgbGljZW5zZSwgY29tcGF0aWJsZSB0byB0aGUgYWJvdmUgdHdvIGxpY2Vuc2VzLgorCiBUaGUgIE1ENSBjaGVja3N1bSAgc3VwcG9ydCAgKG9ubHkgdXNlZCAgZm9yICBkZWJ1Z2dpbmcgaW4gIGRldmVsb3BtZW50CiBidWlsZHMpIGlzIGluIHRoZSBwdWJsaWMgZG9tYWluLgogCmRpZmYgLS1naXQgYS9MSUNFTlNFX0FQQUNIRTIuVFhUIGIvTElDRU5TRV9BUEFDSEUyLlRYVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQ1Njk1Ci0tLSAvZGV2L251bGwKKysrIGIvTElDRU5TRV9BUEFDSEUyLlRYVApAQCAtMCwwICsxLDIwMiBAQAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFjaGUgTGljZW5zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAorICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzLworCisgICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KKworICAgMS4gRGVmaW5pdGlvbnMuCisKKyAgICAgICJMaWNlbnNlIiBzaGFsbCBtZWFuIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgdXNlLCByZXByb2R1Y3Rpb24sCisgICAgICBhbmQgZGlzdHJpYnV0aW9uIGFzIGRlZmluZWQgYnkgU2VjdGlvbnMgMSB0aHJvdWdoIDkgb2YgdGhpcyBkb2N1bWVudC4KKworICAgICAgIkxpY2Vuc29yIiBzaGFsbCBtZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIgb3IgZW50aXR5IGF1dGhvcml6ZWQgYnkKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIgdGhhdCBpcyBncmFudGluZyB0aGUgTGljZW5zZS4KKworICAgICAgIkxlZ2FsIEVudGl0eSIgc2hhbGwgbWVhbiB0aGUgdW5pb24gb2YgdGhlIGFjdGluZyBlbnRpdHkgYW5kIGFsbAorICAgICAgb3RoZXIgZW50aXRpZXMgdGhhdCBjb250cm9sLCBhcmUgY29udHJvbGxlZCBieSwgb3IgYXJlIHVuZGVyIGNvbW1vbgorICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKKyAgICAgICJjb250cm9sIiBtZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZQorICAgICAgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkgY29udHJhY3Qgb3IKKyAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQorICAgICAgb3V0c3RhbmRpbmcgc2hhcmVzLCBvciAoaWlpKSBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4KKworICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQorICAgICAgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoaXMgTGljZW5zZS4KKworICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCisgICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHNvZnR3YXJlIHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uCisgICAgICBzb3VyY2UsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLgorCisgICAgICAiT2JqZWN0IiBmb3JtIHNoYWxsIG1lYW4gYW55IGZvcm0gcmVzdWx0aW5nIGZyb20gbWVjaGFuaWNhbAorICAgICAgdHJhbnNmb3JtYXRpb24gb3IgdHJhbnNsYXRpb24gb2YgYSBTb3VyY2UgZm9ybSwgaW5jbHVkaW5nIGJ1dAorICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAorICAgICAgYW5kIGNvbnZlcnNpb25zIHRvIG90aGVyIG1lZGlhIHR5cGVzLgorCisgICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgorICAgICAgT2JqZWN0IGZvcm0sIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBMaWNlbnNlLCBhcyBpbmRpY2F0ZWQgYnkgYQorICAgICAgY29weXJpZ2h0IG5vdGljZSB0aGF0IGlzIGluY2x1ZGVkIGluIG9yIGF0dGFjaGVkIHRvIHRoZSB3b3JrCisgICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgorCisgICAgICAiRGVyaXZhdGl2ZSBXb3JrcyIgc2hhbGwgbWVhbiBhbnkgd29yaywgd2hldGhlciBpbiBTb3VyY2Ugb3IgT2JqZWN0CisgICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCisgICAgICBlZGl0b3JpYWwgcmV2aXNpb25zLCBhbm5vdGF0aW9ucywgZWxhYm9yYXRpb25zLCBvciBvdGhlciBtb2RpZmljYXRpb25zCisgICAgICByZXByZXNlbnQsIGFzIGEgd2hvbGUsIGFuIG9yaWdpbmFsIHdvcmsgb2YgYXV0aG9yc2hpcC4gRm9yIHRoZSBwdXJwb3NlcworICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCisgICAgICBzZXBhcmFibGUgZnJvbSwgb3IgbWVyZWx5IGxpbmsgKG9yIGJpbmQgYnkgbmFtZSkgdG8gdGhlIGludGVyZmFjZXMgb2YsCisgICAgICB0aGUgV29yayBhbmQgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLgorCisgICAgICAiQ29udHJpYnV0aW9uIiBzaGFsbCBtZWFuIGFueSB3b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1ZGluZworICAgICAgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlIFdvcmsgYW5kIGFueSBtb2RpZmljYXRpb25zIG9yIGFkZGl0aW9ucworICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CisgICAgICBzdWJtaXR0ZWQgdG8gTGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yayBieSB0aGUgY29weXJpZ2h0IG93bmVyCisgICAgICBvciBieSBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eSBhdXRob3JpemVkIHRvIHN1Ym1pdCBvbiBiZWhhbGYgb2YKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgorICAgICAgbWVhbnMgYW55IGZvcm0gb2YgZWxlY3Ryb25pYywgdmVyYmFsLCBvciB3cml0dGVuIGNvbW11bmljYXRpb24gc2VudAorICAgICAgdG8gdGhlIExpY2Vuc29yIG9yIGl0cyByZXByZXNlbnRhdGl2ZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8KKyAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCisgICAgICBhbmQgaXNzdWUgdHJhY2tpbmcgc3lzdGVtcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZQorICAgICAgTGljZW5zb3IgZm9yIHRoZSBwdXJwb3NlIG9mIGRpc2N1c3NpbmcgYW5kIGltcHJvdmluZyB0aGUgV29yaywgYnV0CisgICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQorICAgICAgZGVzaWduYXRlZCBpbiB3cml0aW5nIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIgYXMgIk5vdCBhIENvbnRyaWJ1dGlvbi4iCisKKyAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CisgICAgICBvbiBiZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBMaWNlbnNvciBhbmQKKyAgICAgIHN1YnNlcXVlbnRseSBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrLgorCisgICAyLiBHcmFudCBvZiBDb3B5cmlnaHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKKyAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCisgICAgICBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBvZiwKKyAgICAgIHB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIHN1YmxpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHRoZQorICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KKworICAgMy4gR3JhbnQgb2YgUGF0ZW50IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQorICAgICAgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsCisgICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKKyAgICAgIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlCisgICAgICBieSBzdWNoIENvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGVpcgorICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQorICAgICAgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIENvbnRyaWJ1dGlvbihzKSB3YXMgc3VibWl0dGVkLiBJZiBZb3UKKyAgICAgIGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhCisgICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCisgICAgICBvciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzIGRpcmVjdAorICAgICAgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcworICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCisgICAgICBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCisKKyAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCisgICAgICBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBhbnkgbWVkaXVtLCB3aXRoIG9yIHdpdGhvdXQKKyAgICAgIG1vZGlmaWNhdGlvbnMsIGFuZCBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0sIHByb3ZpZGVkIHRoYXQgWW91CisgICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgICAgKGEpIFlvdSBtdXN0IGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFdvcmsgb3IKKyAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAorCisgICAgICAoYikgWW91IG11c3QgY2F1c2UgYW55IG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCisgICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCisKKyAgICAgIChjKSBZb3UgbXVzdCByZXRhaW4sIGluIHRoZSBTb3VyY2UgZm9ybSBvZiBhbnkgRGVyaXZhdGl2ZSBXb3JrcworICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKKyAgICAgICAgICBhdHRyaWJ1dGlvbiBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBmb3JtIG9mIHRoZSBXb3JrLAorICAgICAgICAgIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90IHBlcnRhaW4gdG8gYW55IHBhcnQgb2YKKyAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCisKKyAgICAgIChkKSBJZiB0aGUgV29yayBpbmNsdWRlcyBhICJOT1RJQ0UiIHRleHQgZmlsZSBhcyBwYXJ0IG9mIGl0cworICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKKyAgICAgICAgICBpbmNsdWRlIGEgcmVhZGFibGUgY29weSBvZiB0aGUgYXR0cmlidXRpb24gbm90aWNlcyBjb250YWluZWQKKyAgICAgICAgICB3aXRoaW4gc3VjaCBOT1RJQ0UgZmlsZSwgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QKKyAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKKyAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nIHBsYWNlczogd2l0aGluIGEgTk9USUNFIHRleHQgZmlsZSBkaXN0cmlidXRlZAorICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3M7IHdpdGhpbiB0aGUgU291cmNlIGZvcm0gb3IKKyAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKKyAgICAgICAgICB3aXRoaW4gYSBkaXNwbGF5IGdlbmVyYXRlZCBieSB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaWYgYW5kCisgICAgICAgICAgd2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBub3RpY2VzIG5vcm1hbGx5IGFwcGVhci4gVGhlIGNvbnRlbnRzCisgICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAorICAgICAgICAgIGRvIG5vdCBtb2RpZnkgdGhlIExpY2Vuc2UuIFlvdSBtYXkgYWRkIFlvdXIgb3duIGF0dHJpYnV0aW9uCisgICAgICAgICAgbm90aWNlcyB3aXRoaW4gRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbG9uZ3NpZGUKKyAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKKyAgICAgICAgICB0aGF0IHN1Y2ggYWRkaXRpb25hbCBhdHRyaWJ1dGlvbiBub3RpY2VzIGNhbm5vdCBiZSBjb25zdHJ1ZWQKKyAgICAgICAgICBhcyBtb2RpZnlpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgIFlvdSBtYXkgYWRkIFlvdXIgb3duIGNvcHlyaWdodCBzdGF0ZW1lbnQgdG8gWW91ciBtb2RpZmljYXRpb25zIGFuZAorICAgICAgbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQgbGljZW5zZSB0ZXJtcyBhbmQgY29uZGl0aW9ucworICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgorICAgICAgZm9yIGFueSBzdWNoIERlcml2YXRpdmUgV29ya3MgYXMgYSB3aG9sZSwgcHJvdmlkZWQgWW91ciB1c2UsCisgICAgICByZXByb2R1Y3Rpb24sIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFdvcmsgb3RoZXJ3aXNlIGNvbXBsaWVzIHdpdGgKKyAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCisKKyAgIDUuIFN1Ym1pc3Npb24gb2YgQ29udHJpYnV0aW9ucy4gVW5sZXNzIFlvdSBleHBsaWNpdGx5IHN0YXRlIG90aGVyd2lzZSwKKyAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yaworICAgICAgYnkgWW91IHRvIHRoZSBMaWNlbnNvciBzaGFsbCBiZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0ZXJtcyBvciBjb25kaXRpb25zLgorICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQorICAgICAgdGhlIHRlcm1zIG9mIGFueSBzZXBhcmF0ZSBsaWNlbnNlIGFncmVlbWVudCB5b3UgbWF5IGhhdmUgZXhlY3V0ZWQKKyAgICAgIHdpdGggTGljZW5zb3IgcmVnYXJkaW5nIHN1Y2ggQ29udHJpYnV0aW9ucy4KKworICAgNi4gVHJhZGVtYXJrcy4gVGhpcyBMaWNlbnNlIGRvZXMgbm90IGdyYW50IHBlcm1pc3Npb24gdG8gdXNlIHRoZSB0cmFkZQorICAgICAgbmFtZXMsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MsIG9yIHByb2R1Y3QgbmFtZXMgb2YgdGhlIExpY2Vuc29yLAorICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCisgICAgICBvcmlnaW4gb2YgdGhlIFdvcmsgYW5kIHJlcHJvZHVjaW5nIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4KKworICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCisgICAgICBhZ3JlZWQgdG8gaW4gd3JpdGluZywgTGljZW5zb3IgcHJvdmlkZXMgdGhlIFdvcmsgKGFuZCBlYWNoCisgICAgICBDb250cmlidXRvciBwcm92aWRlcyBpdHMgQ29udHJpYnV0aW9ucykgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorICAgICAgaW1wbGllZCwgaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGFueSB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMKKyAgICAgIG9mIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFksIG9yIEZJVE5FU1MgRk9SIEEKKyAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQorICAgICAgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIG9yIHJlZGlzdHJpYnV0aW5nIHRoZSBXb3JrIGFuZCBhc3N1bWUgYW55CisgICAgICByaXNrcyBhc3NvY2lhdGVkIHdpdGggWW91ciBleGVyY2lzZSBvZiBwZXJtaXNzaW9ucyB1bmRlciB0aGlzIExpY2Vuc2UuCisKKyAgIDguIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LiBJbiBubyBldmVudCBhbmQgdW5kZXIgbm8gbGVnYWwgdGhlb3J5LAorICAgICAgd2hldGhlciBpbiB0b3J0IChpbmNsdWRpbmcgbmVnbGlnZW5jZSksIGNvbnRyYWN0LCBvciBvdGhlcndpc2UsCisgICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQorICAgICAgbmVnbGlnZW50IGFjdHMpIG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzaGFsbCBhbnkgQ29udHJpYnV0b3IgYmUKKyAgICAgIGxpYWJsZSB0byBZb3UgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwKKyAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQorICAgICAgcmVzdWx0IG9mIHRoaXMgTGljZW5zZSBvciBvdXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkgdG8gdXNlIHRoZQorICAgICAgV29yayAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBkYW1hZ2VzIGZvciBsb3NzIG9mIGdvb2R3aWxsLAorICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKKyAgICAgIG90aGVyIGNvbW1lcmNpYWwgZGFtYWdlcyBvciBsb3NzZXMpLCBldmVuIGlmIHN1Y2ggQ29udHJpYnV0b3IKKyAgICAgIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy4KKworICAgOS4gQWNjZXB0aW5nIFdhcnJhbnR5IG9yIEFkZGl0aW9uYWwgTGlhYmlsaXR5LiBXaGlsZSByZWRpc3RyaWJ1dGluZworICAgICAgdGhlIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCBZb3UgbWF5IGNob29zZSB0byBvZmZlciwKKyAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCisgICAgICBvciBvdGhlciBsaWFiaWxpdHkgb2JsaWdhdGlvbnMgYW5kL29yIHJpZ2h0cyBjb25zaXN0ZW50IHdpdGggdGhpcworICAgICAgTGljZW5zZS4gSG93ZXZlciwgaW4gYWNjZXB0aW5nIHN1Y2ggb2JsaWdhdGlvbnMsIFlvdSBtYXkgYWN0IG9ubHkKKyAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCisgICAgICBvZiBhbnkgb3RoZXIgQ29udHJpYnV0b3IsIGFuZCBvbmx5IGlmIFlvdSBhZ3JlZSB0byBpbmRlbW5pZnksCisgICAgICBkZWZlbmQsIGFuZCBob2xkIGVhY2ggQ29udHJpYnV0b3IgaGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkKKyAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KKyAgICAgIG9mIHlvdXIgYWNjZXB0aW5nIGFueSBzdWNoIHdhcnJhbnR5IG9yIGFkZGl0aW9uYWwgbGlhYmlsaXR5LgorCisgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKKworICAgQVBQRU5ESVg6IEhvdyB0byBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLgorCisgICAgICBUbyBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLCBhdHRhY2ggdGhlIGZvbGxvd2luZworICAgICAgYm9pbGVycGxhdGUgbm90aWNlLCB3aXRoIHRoZSBmaWVsZHMgZW5jbG9zZWQgYnkgYnJhY2tldHMgIltdIgorICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKKyAgICAgIHRoZSBicmFja2V0cyEpICBUaGUgdGV4dCBzaG91bGQgYmUgZW5jbG9zZWQgaW4gdGhlIGFwcHJvcHJpYXRlCisgICAgICBjb21tZW50IHN5bnRheCBmb3IgdGhlIGZpbGUgZm9ybWF0LiBXZSBhbHNvIHJlY29tbWVuZCB0aGF0IGEKKyAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKKyAgICAgIHNhbWUgInByaW50ZWQgcGFnZSIgYXMgdGhlIGNvcHlyaWdodCBub3RpY2UgZm9yIGVhc2llcgorICAgICAgaWRlbnRpZmljYXRpb24gd2l0aGluIHRoaXJkLXBhcnR5IGFyY2hpdmVzLgorCisgICBDb3B5cmlnaHQgW3l5eXldIFtuYW1lIG9mIGNvcHlyaWdodCBvd25lcl0KKworICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KZGlmZiAtLWdpdCBhL0xJQ0VOU0VfQlNEXzNfQ0xBVVNFLlRYVCBiL0xJQ0VOU0VfQlNEXzNfQ0xBVVNFLlRYVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmM4ODE1Ci0tLSAvZGV2L251bGwKKysrIGIvTElDRU5TRV9CU0RfM19DTEFVU0UuVFhUCkBAIC0wLDAgKzEsMTIgQEAKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMgYXJlIHBlcm1pdHRlZAorcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXJlCitkdXBsaWNhdGVkIGluIGFsbCBzdWNoIGZvcm1zIGFuZCB0aGF0IGFueSBkb2N1bWVudGF0aW9uLAorYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzLCBhbmQgb3RoZXIgbWF0ZXJpYWxzIHJlbGF0ZWQgdG8gc3VjaAorZGlzdHJpYnV0aW9uIGFuZCB1c2UgYWNrbm93bGVkZ2UgdGhhdCB0aGUgc29mdHdhcmUgd2FzIGRldmVsb3BlZAorYnkgU3RhbmZvcmQgVW5pdmVyc2l0eS4gIFRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG1heSBub3QgYmUgdXNlZAordG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKK3NwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIFdJVEhPVVQgQU5ZIEVYUFJFU1MgT1IKK0lNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBXSVRIT1VUIExJTUlUQVRJT04sIFRIRSBJTVBMSUVECitXQVJSQU5USUVTIE9GIE1FUkNIQU5USUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCmRpZmYgLS1naXQgYS9MSUNFTlNFX0ZTRkFQLlRYVCBiL0xJQ0VOU0VfRlNGQVAuVFhUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MmNmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MSUNFTlNFX0ZTRkFQLlRYVApAQCAtMCwwICsxLDQgQEAKK0NvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCithcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKK25vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLAord2l0aG91dCBhbnkgd2FycmFudHkuCmRpZmYgLS1naXQgYS9MSUNFTlNFX01JVC5UWFQgYi9MSUNFTlNFX01JVC5UWFQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdhZWZiOAotLS0gL2Rldi9udWxsCisrKyBiL0xJQ0VOU0VfTUlULlRYVApAQCAtMCwwICsxLDI1IEBACitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbgorb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24KK2ZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKK3Jlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLAorY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKK2NvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcKK2NvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCitpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUocykgb2YgdGhlIGFib3ZlCitjb3B5cmlnaHQgaG9sZGVycyBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UKK3RvIHByb21vdGUgdGhlIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlCit3aXRob3V0IHByaW9yIHdyaXR0ZW4gYXV0aG9yaXphdGlvbi4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCitFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMKK09GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECitOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVAorSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksCitXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKK0ZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKK09USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KZGlmZiAtLWdpdCBhL0xJQ0VOU0VfTUlUX01PREVSTl9WQVJJQU5ULlRYVCBiL0xJQ0VOU0VfTUlUX01PREVSTl9WQVJJQU5ULlRYVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTIyODA4Ci0tLSAvZGV2L251bGwKKysrIGIvTElDRU5TRV9NSVRfTU9ERVJOX1ZBUklBTlQuVFhUCkBAIC0wLDAgKzEsMTcgQEAKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIHdpdGhvdXQgd3JpdHRlbiBhZ3JlZW1lbnQgYW5kIHdpdGhvdXQKK2xpY2Vuc2Ugb3Igcm95YWx0eSBmZWVzLCB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcworc29mdHdhcmUgYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSwgcHJvdmlkZWQgdGhhdCB0aGUKK2Fib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoZSBmb2xsb3dpbmcgdHdvIHBhcmFncmFwaHMgYXBwZWFyIGluCithbGwgY29waWVzIG9mIHRoaXMgc29mdHdhcmUuCisKK0lOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFIExJQUJMRSBUTyBBTlkgUEFSVFkgRk9SCitESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKK0FSSVNJTkcgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT04sIEVWRU4KK0lGIFRIRSBDT1BZUklHSFQgSE9MREVSIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKK0RBTUFHRS4KKworVEhFIENPUFlSSUdIVCBIT0xERVIgU1BFQ0lGSUNBTExZIERJU0NMQUlNUyBBTlkgV0FSUkFOVElFUywgSU5DTFVESU5HLAorQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBUSEUgU09GVFdBUkUgUFJPVklERUQgSEVSRVVOREVSIElTCitPTiBBTiAiQVMgSVMiIEJBU0lTLCBBTkQgVEhFIENPUFlSSUdIVCBIT0xERVIgSEFTIE5PIE9CTElHQVRJT04gVE8KK1BST1ZJREUgTUFJTlRFTkFOQ0UsIFNVUFBPUlQsIFVQREFURVMsIEVOSEFOQ0VNRU5UUywgT1IgTU9ESUZJQ0FUSU9OUy4KZGlmZiAtLWdpdCBhL01FVEFEQVRBIGIvTUVUQURBVEEKaW5kZXggNDhjOGY0Mi4uMWQ5YmJkNCAxMDA2NDQKLS0tIGEvTUVUQURBVEEKKysrIGIvTUVUQURBVEEKQEAgLTksMTIgKzksMTIgQEAKICAgICB0eXBlOiBHSVQKICAgICB2YWx1ZTogImdpdDovL2dpdC5zdi5ub25nbnUub3JnL2ZyZWV0eXBlL2ZyZWV0eXBlMi5naXQiCiAgIH0KLSAgdmVyc2lvbjogIlZFUi0yLTEwLTQiCisgIHZlcnNpb246ICIwYjYyYzFlNDNkYzRiMGUzYzUwNjYyYWFjNzU3ZTRmNzMyMWU1NDY2IgogICBsaWNlbnNlX3R5cGU6IFJFU1RSSUNURUQKICAgbGFzdF91cGdyYWRlX2RhdGUgewotICAgIHllYXI6IDIwMjAKLSAgICBtb250aDogMTAKLSAgICBkYXk6IDIyCisgICAgeWVhcjogMjAyMgorICAgIG1vbnRoOiAxMgorICAgIGRheTogMTQKICAgfQogICBzZWN1cml0eSB7CiAgICAgICB0YWc6ICJOVkQtQ1BFMi4zOmNwZTovYTpmcmVldHlwZTpmcmVldHlwZToyLjEwLjQiCmRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IGYxMjg0MTcuLjE0ZmJhMzAgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IDZhMzIwZGYuLjMyN2I5NGQgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTEsNCArMSw0IEBACi1GcmVlVHlwZSAyLjExLjEKK0ZyZWVUeXBlIDIuMTMuMAogPT09PT09PT09PT09PT09CiAKIEhvbWVwYWdlOiBodHRwczovL3d3dy5mcmVldHlwZS5vcmcKQEAgLTE2LDcgKzE2LDkgQEAKIGZpbGUgYGRvY3MvTElDRU5TRS5UWFRgIGZvciB0aGUgYXZhaWxhYmxlIGxpY2Vuc2VzLgogCiBGb3IgdXNpbmcgRnJlZVR5cGUncyBnaXQgcmVwb3NpdG9yeSAgaW5zdGVhZCBvZiBhIGRpc3RyaWJ1dGlvbiBidW5kbGUsCi1wbGVhc2UgcmVhZCBmaWxlIGBSRUFETUUuZ2l0YC4KK3BsZWFzZSByZWFkIGZpbGUgIGBSRUFETUUuZ2l0YC4gIE5vdGUgdGhhdCB5b3UgaGF2ZSAgdG8gYWN0dWFsbHkgY2xvbmUKK3RoZSByZXBvc2l0b3J5OyB1c2luZyBhIHNuYXBzaG90IHdpbGwgIG5vdCB3b3JrIChpbiBvdGhlciB3b3JkcywgZG9uJ3QKK3VzZSBnaXRsYWIncyAnRG93bmxvYWQnIGJ1dHRvbikuCiAKIFRoZSBGcmVlVHlwZSAyIEFQSSByZWZlcmVuY2UgaXMgbG9jYXRlZCBpbiBkaXJlY3RvcnkgYGRvY3MvcmVmZXJlbmNlYDsKIHVzZSB0aGUgZmlsZSAgYGluZGV4Lmh0bWxgIGFzIHRoZSB0b3AgZW50cnkgcG9pbnQuICAgW1BsZWFzZSBub3RlIHRoYXQKQEAgLTMwLDkgKzMyLDkgQEAKIAogYW5kIGRvd25sb2FkIG9uZSBvZiB0aGUgZm9sbG93aW5nIGZpbGVzLgogCi0gIGZyZWV0eXBlLWRvYy0yLjExLjEudGFyLnh6Ci0gIGZyZWV0eXBlLWRvYy0yLjExLjEudGFyLmd6Ci0gIGZ0ZG9jMjExMS56aXAKKyAgZnJlZXR5cGUtZG9jLTIuMTMuMC50YXIueHoKKyAgZnJlZXR5cGUtZG9jLTIuMTMuMC50YXIuZ3oKKyAgZnRkb2MyMTMwLnppcAogCiBUbyB2aWV3IHRoZSBkb2N1bWVudGF0aW9uIG9ubGluZSwgZ28gdG8KIApAQCAtOTIsNyArOTQsNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvcHlyaWdodCAoQykgMjAwNi0yMDIxIGJ5CitDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMyBieQogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogCiBUaGlzICBmaWxlIGlzICBwYXJ0IG9mICB0aGUgRnJlZVR5cGUgIHByb2plY3QsIGFuZCAgbWF5IG9ubHkgIGJlIHVzZWQsCmRpZmYgLS1naXQgYS9SRUFETUUuZ2l0IGIvUkVBRE1FLmdpdAppbmRleCBhZDNjNzRjLi4xMTdkNzRmIDEwMDY0NAotLS0gYS9SRUFETUUuZ2l0CisrKyBiL1JFQURNRS5naXQKQEAgLTg5LDcgKzg5LDcgQEAKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Db3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBieQorQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgYnkKIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KIAogVGhpcyAgZmlsZSBpcyAgcGFydCBvZiAgdGhlIEZyZWVUeXBlICBwcm9qZWN0LCBhbmQgIG1heSBvbmx5ICBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvYXV0b2dlbi5zaCBiL2F1dG9nZW4uc2gKaW5kZXggOGNjYTdjOC4uZmY1ZTQ2ZiAxMDA3NTUKLS0tIGEvYXV0b2dlbi5zaAorKysgYi9hdXRvZ2VuLnNoCkBAIC0xLDYgKzEsNiBAQAogIyEvYmluL3NoCiAKLSMgQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApAQCAtMTgyLDcgKzE4Miw3IEBACiAgIGNwICRETEdfU1JDX0RJUi8qIHNyYy9kbGcKIH0KIAotaWYgdGVzdCAtZCAiLmdpdCI7IHRoZW4KK2lmIHRlc3QgLWUgIi5naXQiOyB0aGVuCiAgIERMR19JTkNfRElSPXN1YnByb2plY3RzL2RsZy9pbmNsdWRlL2RsZwogICBETEdfU1JDX0RJUj1zdWJwcm9qZWN0cy9kbGcvc3JjL2RsZwogCmRpZmYgLS1naXQgYS9idWlsZHMvYW1pZ2EvUkVBRE1FIGIvYnVpbGRzL2FtaWdhL1JFQURNRQppbmRleCA0ZWM4NzcwLi41YjJhYmVmIDEwMDY0NAotLS0gYS9idWlsZHMvYW1pZ2EvUkVBRE1FCisrKyBiL2J1aWxkcy9hbWlnYS9SRUFETUUKQEAgLTEsNyArMSw3IEBACiAKIFJFQURNRSBmb3IgdGhlIGJ1aWxkcy9hbWlnYSBzdWJkaXJlY3RvcnkuCiAKLUNvcHlyaWdodCAoQykgMjAwNS0yMDIxIGJ5CitDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMyBieQogV2VybmVyIExlbWJlcmcgYW5kIERldGxlZiBX/HJrbmVyLgogCiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL2FtaWdhL2luY2x1ZGUvY29uZmlnL2Z0Y29uZmlnLmggYi9idWlsZHMvYW1pZ2EvaW5jbHVkZS9jb25maWcvZnRjb25maWcuaAppbmRleCA2ZGVlYTZiLi5kZTA3NGJmIDEwMDY0NAotLS0gYS9idWlsZHMvYW1pZ2EvaW5jbHVkZS9jb25maWcvZnRjb25maWcuaAorKysgYi9idWlsZHMvYW1pZ2EvaW5jbHVkZS9jb25maWcvZnRjb25maWcuaApAQCAtNCw3ICs0LDcgQEAKIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAgICBBbWlnYS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUgKHNwZWNpZmljYXRpb24gb25seSkuICAgICAgICAgICAgICAqLwogLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogIFdlcm5lciBMZW1iZXJnIGFuZCBEZXRsZWYgV/xya25lci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLwpkaWZmIC0tZ2l0IGEvYnVpbGRzL2FtaWdhL2luY2x1ZGUvY29uZmlnL2Z0bW9kdWxlLmggYi9idWlsZHMvYW1pZ2EvaW5jbHVkZS9jb25maWcvZnRtb2R1bGUuaAppbmRleCA4NzM1MzdjLi5iZjMzMzY3IDEwMDY0NAotLS0gYS9idWlsZHMvYW1pZ2EvaW5jbHVkZS9jb25maWcvZnRtb2R1bGUuaAorKysgYi9idWlsZHMvYW1pZ2EvaW5jbHVkZS9jb25maWcvZnRtb2R1bGUuaApAQCAtNCw3ICs0LDcgQEAKIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAgICBBbWlnYS1zcGVjaWZpYyBGcmVlVHlwZSBtb2R1bGUgc2VsZWN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogIFdlcm5lciBMZW1iZXJnIGFuZCBEZXRsZWYgV/xya25lci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLwpkaWZmIC0tZ2l0IGEvYnVpbGRzL2FtaWdhL21ha2VmaWxlIGIvYnVpbGRzL2FtaWdhL21ha2VmaWxlCmluZGV4IGVkN2M3ODAuLjRhMzNmZGQgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9hbWlnYS9tYWtlZmlsZQorKysgYi9idWlsZHMvYW1pZ2EvbWFrZWZpbGUKQEAgLTUsNyArNSw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMyBieQogIyBXZXJuZXIgTGVtYmVyZyBhbmQgRGV0bGVmIFf8cmtuZXIuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvYW1pZ2EvbWFrZWZpbGUub3M0IGIvYnVpbGRzL2FtaWdhL21ha2VmaWxlLm9zNAppbmRleCA1OGM4OTIwLi5kZmMzZTlmIDEwMDY0NAotLS0gYS9idWlsZHMvYW1pZ2EvbWFrZWZpbGUub3M0CisrKyBiL2J1aWxkcy9hbWlnYS9tYWtlZmlsZS5vczQKQEAgLTQsNyArNCw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMyBieQogIyBXZXJuZXIgTGVtYmVyZyBhbmQgRGV0bGVmIFf8cmtuZXIuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvYW1pZ2Evc21ha2VmaWxlIGIvYnVpbGRzL2FtaWdhL3NtYWtlZmlsZQppbmRleCBhYWRkZDE5Li5jYTNkYTY2IDEwMDY0NAotLS0gYS9idWlsZHMvYW1pZ2Evc21ha2VmaWxlCisrKyBiL2J1aWxkcy9hbWlnYS9zbWFrZWZpbGUKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMyBieQogIyBXZXJuZXIgTGVtYmVyZyBhbmQgRGV0bGVmIFf8cmtuZXIuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvYW1pZ2Evc3JjL2Jhc2UvZnRkZWJ1Zy5jIGIvYnVpbGRzL2FtaWdhL3NyYy9iYXNlL2Z0ZGVidWcuYwppbmRleCBkYzdlOTY4Li5hMjA5Mjk3IDEwMDY0NAotLS0gYS9idWlsZHMvYW1pZ2Evc3JjL2Jhc2UvZnRkZWJ1Zy5jCisrKyBiL2J1aWxkcy9hbWlnYS9zcmMvYmFzZS9mdGRlYnVnLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBEZWJ1Z2dpbmcgYW5kIGxvZ2dpbmcgY29tcG9uZW50IGZvciBhbWlnYSAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBXZXJuZXIgTGVtYmVyZywgYW5kIERldGxlZiBXdWVya25lci4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvYW1pZ2Evc3JjL2Jhc2UvZnRzeXN0ZW0uYyBiL2J1aWxkcy9hbWlnYS9zcmMvYmFzZS9mdHN5c3RlbS5jCmluZGV4IDVjNjllM2EuLmQ4NTg0NWMgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9hbWlnYS9zcmMvYmFzZS9mdHN5c3RlbS5jCisrKyBiL2J1aWxkcy9hbWlnYS9zcmMvYmFzZS9mdHN5c3RlbS5jCkBAIC00LDcgKzQsNyBAQAogLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qICAgIEFtaWdhLXNwZWNpZmljIEZyZWVUeXBlIGxvdy1sZXZlbCBzeXN0ZW0gaW50ZXJmYWNlIChib2R5KS4gICAgICAgICAgICovCiAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgV2VybmVyIExlbWJlcmcgYW5kIERldGxlZiBX/HJrbmVyLiAgICAgICAqLwogLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCmRpZmYgLS1naXQgYS9idWlsZHMvYW5zaS9hbnNpLWRlZi5tayBiL2J1aWxkcy9hbnNpL2Fuc2ktZGVmLm1rCmluZGV4IDIxOGQ1YzAuLjgyMTc4OTMgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9hbnNpL2Fuc2ktZGVmLm1rCisrKyBiL2J1aWxkcy9hbnNpL2Fuc2ktZGVmLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL2Fuc2kvYW5zaS5tayBiL2J1aWxkcy9hbnNpL2Fuc2kubWsKaW5kZXggYjM2YzY0ZS4uYWQ0MDkzOSAxMDA2NDQKLS0tIGEvYnVpbGRzL2Fuc2kvYW5zaS5taworKysgYi9idWlsZHMvYW5zaS9hbnNpLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL2Jlb3MvYmVvcy1kZWYubWsgYi9idWlsZHMvYmVvcy9iZW9zLWRlZi5tawppbmRleCBkN2Q2M2IzLi4xY2NhODBjIDEwMDY0NAotLS0gYS9idWlsZHMvYmVvcy9iZW9zLWRlZi5taworKysgYi9idWlsZHMvYmVvcy9iZW9zLWRlZi5tawpAQCAtNSw3ICs1LDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy9iZW9zL2Jlb3MubWsgYi9idWlsZHMvYmVvcy9iZW9zLm1rCmluZGV4IGYzZTNmYmIuLjY5Y2ExZjEgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9iZW9zL2Jlb3MubWsKKysrIGIvYnVpbGRzL2Jlb3MvYmVvcy5tawpAQCAtMiw3ICsyLDcgQEAKICMgRnJlZVR5cGUgMiBjb25maWd1cmF0aW9uIHJ1bGVzIGZvciBhIEJlT1Mgc3lzdGVtCiAjCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL2Jlb3MvZGV0ZWN0Lm1rIGIvYnVpbGRzL2Jlb3MvZGV0ZWN0Lm1rCmluZGV4IDUyMWVjYWUuLmRkMWI1YTYgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9iZW9zL2RldGVjdC5taworKysgYi9idWlsZHMvYmVvcy9kZXRlY3QubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvY21ha2UvRmluZEJyb3RsaURlYy5jbWFrZSBiL2J1aWxkcy9jbWFrZS9GaW5kQnJvdGxpRGVjLmNtYWtlCmluZGV4IDQ2MzU2YjEuLjgxMDM2Y2IgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9jbWFrZS9GaW5kQnJvdGxpRGVjLmNtYWtlCisrKyBiL2J1aWxkcy9jbWFrZS9GaW5kQnJvdGxpRGVjLmNtYWtlCkBAIC0xLDYgKzEsNiBAQAogIyBGaW5kQnJvdGxpRGVjLmNtYWtlCiAjCi0jIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgV3JpdHRlbiBieSBXZXJuZXIgTGVtYmVyZyA8d2xAZ251Lm9yZz4KZGlmZiAtLWdpdCBhL2J1aWxkcy9jbWFrZS9pT1MuY21ha2UgYi9idWlsZHMvY21ha2UvaU9TLmNtYWtlCmluZGV4IDI1ODY1NGQuLjdhYmE3YzUgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9jbWFrZS9pT1MuY21ha2UKKysrIGIvYnVpbGRzL2NtYWtlL2lPUy5jbWFrZQpAQCAtMSw2ICsxLDYgQEAKICMgaU9TLmNtYWtlCiAjCi0jIENvcHlyaWdodCAoQykgMjAxNC0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAxNC0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgV3JpdHRlbiBieSBEYXZpZCBXaW1zZXkgPGRhdmlkQHdpbXNleS51cz4KZGlmZiAtLWdpdCBhL2J1aWxkcy9jbWFrZS90ZXN0YnVpbGQuc2ggYi9idWlsZHMvY21ha2UvdGVzdGJ1aWxkLnNoCmluZGV4IGM2YzYzNzIuLjAwNzE3MGIgMTAwNzU1Ci0tLSBhL2J1aWxkcy9jbWFrZS90ZXN0YnVpbGQuc2gKKysrIGIvYnVpbGRzL2NtYWtlL3Rlc3RidWlsZC5zaApAQCAtMSw2ICsxLDYgQEAKICMhL2Jpbi9zaCAtZQogCi0jIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAxNS0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy9jb21waWxlci9hbnNpLWNjLm1rIGIvYnVpbGRzL2NvbXBpbGVyL2Fuc2ktY2MubWsKaW5kZXggZTczZTZmYy4uZjgzODZmNiAxMDA2NDQKLS0tIGEvYnVpbGRzL2NvbXBpbGVyL2Fuc2ktY2MubWsKKysrIGIvYnVpbGRzL2NvbXBpbGVyL2Fuc2ktY2MubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvY29tcGlsZXIvYmNjLWRldi5tayBiL2J1aWxkcy9jb21waWxlci9iY2MtZGV2Lm1rCmluZGV4IDcxODA0NTIuLmQwMWVkN2MgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9jb21waWxlci9iY2MtZGV2Lm1rCisrKyBiL2J1aWxkcy9jb21waWxlci9iY2MtZGV2Lm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL2NvbXBpbGVyL2JjYy5tayBiL2J1aWxkcy9jb21waWxlci9iY2MubWsKaW5kZXggMzIxZGIxMC4uYTQ4NGJiYSAxMDA2NDQKLS0tIGEvYnVpbGRzL2NvbXBpbGVyL2JjYy5taworKysgYi9idWlsZHMvY29tcGlsZXIvYmNjLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL2NvbXBpbGVyL2VteC5tayBiL2J1aWxkcy9jb21waWxlci9lbXgubWsKaW5kZXggYjNiNjA0Ny4uMzRkMDZiMiAxMDA2NDQKLS0tIGEvYnVpbGRzL2NvbXBpbGVyL2VteC5taworKysgYi9idWlsZHMvY29tcGlsZXIvZW14Lm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL2NvbXBpbGVyL2djYy1kZXYubWsgYi9idWlsZHMvY29tcGlsZXIvZ2NjLWRldi5tawppbmRleCBmMDExOTJmLi5hNmRlZDUyIDEwMDY0NAotLS0gYS9idWlsZHMvY29tcGlsZXIvZ2NjLWRldi5taworKysgYi9idWlsZHMvY29tcGlsZXIvZ2NjLWRldi5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy9jb21waWxlci9nY2MubWsgYi9idWlsZHMvY29tcGlsZXIvZ2NjLm1rCmluZGV4IGVkZTIwYjIuLjIwY2E5NjkgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9jb21waWxlci9nY2MubWsKKysrIGIvYnVpbGRzL2NvbXBpbGVyL2djYy5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy9jb21waWxlci9pbnRlbGMubWsgYi9idWlsZHMvY29tcGlsZXIvaW50ZWxjLm1rCmluZGV4IGU1ZGNmOTAuLjFmNzI0OTMgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9jb21waWxlci9pbnRlbGMubWsKKysrIGIvYnVpbGRzL2NvbXBpbGVyL2ludGVsYy5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy9jb21waWxlci91bml4LWxjYy5tayBiL2J1aWxkcy9jb21waWxlci91bml4LWxjYy5tawppbmRleCA0MDMyMmI0Li5hZjExZDE3IDEwMDY0NAotLS0gYS9idWlsZHMvY29tcGlsZXIvdW5peC1sY2MubWsKKysrIGIvYnVpbGRzL2NvbXBpbGVyL3VuaXgtbGNjLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL2NvbXBpbGVyL3Zpc3VhbGFnZS5tayBiL2J1aWxkcy9jb21waWxlci92aXN1YWxhZ2UubWsKaW5kZXggZWJjM2U0OC4uNzVlOTAyMyAxMDA2NDQKLS0tIGEvYnVpbGRzL2NvbXBpbGVyL3Zpc3VhbGFnZS5taworKysgYi9idWlsZHMvY29tcGlsZXIvdmlzdWFsYWdlLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL2NvbXBpbGVyL3Zpc3VhbGMubWsgYi9idWlsZHMvY29tcGlsZXIvdmlzdWFsYy5tawppbmRleCBkYzY5OThhLi4zMGIwM2ZjIDEwMDY0NAotLS0gYS9idWlsZHMvY29tcGlsZXIvdmlzdWFsYy5taworKysgYi9idWlsZHMvY29tcGlsZXIvdmlzdWFsYy5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy9jb21waWxlci93YXRjb20ubWsgYi9idWlsZHMvY29tcGlsZXIvd2F0Y29tLm1rCmluZGV4IGMxZDFiNjYuLjYxZjhjZDcgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9jb21waWxlci93YXRjb20ubWsKKysrIGIvYnVpbGRzL2NvbXBpbGVyL3dhdGNvbS5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy9jb21waWxlci93aW4tbGNjLm1rIGIvYnVpbGRzL2NvbXBpbGVyL3dpbi1sY2MubWsKaW5kZXggMjdmYmMzMC4uOTJmNjUzZSAxMDA2NDQKLS0tIGEvYnVpbGRzL2NvbXBpbGVyL3dpbi1sY2MubWsKKysrIGIvYnVpbGRzL2NvbXBpbGVyL3dpbi1sY2MubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvZGV0ZWN0Lm1rIGIvYnVpbGRzL2RldGVjdC5tawppbmRleCA3OGU5ZTc1Li5kNWNkZGIwIDEwMDY0NAotLS0gYS9idWlsZHMvZGV0ZWN0Lm1rCisrKyBiL2J1aWxkcy9kZXRlY3QubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvZG9zL2RldGVjdC5tayBiL2J1aWxkcy9kb3MvZGV0ZWN0Lm1rCmluZGV4IGQ5NWEyY2EuLjhlZDE0OGIgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9kb3MvZGV0ZWN0Lm1rCisrKyBiL2J1aWxkcy9kb3MvZGV0ZWN0Lm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL2Rvcy9kb3MtZGVmLm1rIGIvYnVpbGRzL2Rvcy9kb3MtZGVmLm1rCmluZGV4IGY3ZmJjNGQuLjM3Y2IyYzEgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9kb3MvZG9zLWRlZi5taworKysgYi9idWlsZHMvZG9zL2Rvcy1kZWYubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvZG9zL2Rvcy1lbXgubWsgYi9idWlsZHMvZG9zL2Rvcy1lbXgubWsKaW5kZXggZGQ5OTQ3OS4uMjMxODFkNyAxMDA2NDQKLS0tIGEvYnVpbGRzL2Rvcy9kb3MtZW14Lm1rCisrKyBiL2J1aWxkcy9kb3MvZG9zLWVteC5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy9kb3MvZG9zLWdjYy5tayBiL2J1aWxkcy9kb3MvZG9zLWdjYy5tawppbmRleCA5YWJkYWJlLi5jZDY5NWRiIDEwMDY0NAotLS0gYS9idWlsZHMvZG9zL2Rvcy1nY2MubWsKKysrIGIvYnVpbGRzL2Rvcy9kb3MtZ2NjLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL2Rvcy9kb3Mtd2F0Lm1rIGIvYnVpbGRzL2Rvcy9kb3Mtd2F0Lm1rCmluZGV4IDdhYjgyYWYuLmE2YjY1Y2IgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9kb3MvZG9zLXdhdC5taworKysgYi9idWlsZHMvZG9zL2Rvcy13YXQubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvZXhwb3J0cy5tayBiL2J1aWxkcy9leHBvcnRzLm1rCmluZGV4IDY3YzdjOTkuLmIxMDkyNGEgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9leHBvcnRzLm1rCisrKyBiL2J1aWxkcy9leHBvcnRzLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL2ZyZWV0eXBlLm1rIGIvYnVpbGRzL2ZyZWV0eXBlLm1rCmluZGV4IGJhZTgxNDUuLmQ5NmRlZDAgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9mcmVldHlwZS5taworKysgYi9idWlsZHMvZnJlZXR5cGUubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvbGlua19kb3MubWsgYi9idWlsZHMvbGlua19kb3MubWsKaW5kZXggODcxNmJlNS4uYjNkYzQ1MSAxMDA2NDQKLS0tIGEvYnVpbGRzL2xpbmtfZG9zLm1rCisrKyBiL2J1aWxkcy9saW5rX2Rvcy5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy9saW5rX3N0ZC5tayBiL2J1aWxkcy9saW5rX3N0ZC5tawppbmRleCAwM2Y3NzcyLi5hY2E4ZWM0IDEwMDY0NAotLS0gYS9idWlsZHMvbGlua19zdGQubWsKKysrIGIvYnVpbGRzL2xpbmtfc3RkLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL21hYy9mcmVldHlwZS1JbmZvLnBsaXN0IGIvYnVpbGRzL21hYy9mcmVldHlwZS1JbmZvLnBsaXN0CmluZGV4IDRiNWQ3OWIuLjM0NGU1YWMgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9tYWMvZnJlZXR5cGUtSW5mby5wbGlzdAorKysgYi9idWlsZHMvbWFjL2ZyZWV0eXBlLUluZm8ucGxpc3QKQEAgLTksNyArOSw3IEBACiAgIDxzdHJpbmc+RW5nbGlzaDwvc3RyaW5nPgogCiAgIDxrZXk+Q0ZCdW5kbGVFeGVjdXRhYmxlPC9rZXk+Ci0gIDxzdHJpbmc+RnJlZVR5cGU8L3N0cmluZz4KKyAgPHN0cmluZz5mcmVldHlwZTwvc3RyaW5nPgogCiAgIDxrZXk+Q0ZCdW5kbGVHZXRJbmZvU3RyaW5nPC9rZXk+CiAgIDxzdHJpbmc+RnJlZVR5cGUgJHtQUk9KRUNUX1ZFUlNJT059PC9zdHJpbmc+CmRpZmYgLS1naXQgYS9idWlsZHMvbWFjL2Z0bWFjLmMgYi9idWlsZHMvbWFjL2Z0bWFjLmMKaW5kZXggY2QzZjQ4NC4uOGZlNTU2NSAxMDA2NDQKLS0tIGEvYnVpbGRzL21hYy9mdG1hYy5jCisrKyBiL2J1aWxkcy9tYWMvZnRtYWMuYwpAQCAtNSw3ICs1LDcgQEAKIC8qICAgIE1hYyBGT05EIHN1cHBvcnQuICBXcml0dGVuIGJ5IGp1c3RAbGV0dGVycm9yLmNvbS4gICAgICAgICAgICAgICAgICAgICovCiAvKiAgSGVhdmlseSBGaXhlZCBieSBtcHN1enVraSwgR2VvcmdlIFdpbGxpYW1zIGFuZCBTZWFuIE1jQnJpZGUgICAgICAgICAgICAqLwogLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogIEp1c3QgdmFuIFJvc3N1bSwgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgKi8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLwpAQCAtOTcsNyArOTcsNyBAQAogCiAjZGVmaW5lIEZUX0RFUFJFQ0FURURfQVRUUklCVVRFCiAKLSNpbmNsdWRlIEZUX01BQ19ICisjaW5jbHVkZSA8ZnJlZXR5cGUvZnRtYWMuaD4KIAogICAvKiB1bmRlZmluZSBibG9ja2luZy1tYWNyb3MgaW4gZnRtYWMuaCAqLwogI3VuZGVmIEZUX0dldEZpbGVfRnJvbV9NYWNfTmFtZQpkaWZmIC0tZ2l0IGEvYnVpbGRzL21lc29uL2V4dHJhY3RfZnJlZXR5cGVfdmVyc2lvbi5weSBiL2J1aWxkcy9tZXNvbi9leHRyYWN0X2ZyZWV0eXBlX3ZlcnNpb24ucHkKaW5kZXggYWI3OWZkYi4uYzRjNjBlNyAxMDA2NDQKLS0tIGEvYnVpbGRzL21lc29uL2V4dHJhY3RfZnJlZXR5cGVfdmVyc2lvbi5weQorKysgYi9idWlsZHMvbWVzb24vZXh0cmFjdF9mcmVldHlwZV92ZXJzaW9uLnB5CkBAIC0xLDYgKzEsNiBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIS91c3IvYmluL2VudiBweXRob24zCiAjCi0jIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAyMC0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy9tZXNvbi9leHRyYWN0X2xpYnRvb2xfdmVyc2lvbi5weSBiL2J1aWxkcy9tZXNvbi9leHRyYWN0X2xpYnRvb2xfdmVyc2lvbi5weQppbmRleCA0NTI3ZjExLi42ZmFjNzRjIDEwMDY0NAotLS0gYS9idWlsZHMvbWVzb24vZXh0cmFjdF9saWJ0b29sX3ZlcnNpb24ucHkKKysrIGIvYnVpbGRzL21lc29uL2V4dHJhY3RfbGlidG9vbF92ZXJzaW9uLnB5CkBAIC0xLDYgKzEsNiBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIS91c3IvYmluL2VudiBweXRob24zCiAjCi0jIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAyMC0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy9tZXNvbi9nZW5lcmF0ZV9yZWZlcmVuY2VfZG9jcy5weSBiL2J1aWxkcy9tZXNvbi9nZW5lcmF0ZV9yZWZlcmVuY2VfZG9jcy5weQppbmRleCAxNWQ5YjA2Li40MjA4YmI2IDEwMDY0NAotLS0gYS9idWlsZHMvbWVzb24vZ2VuZXJhdGVfcmVmZXJlbmNlX2RvY3MucHkKKysrIGIvYnVpbGRzL21lc29uL2dlbmVyYXRlX3JlZmVyZW5jZV9kb2NzLnB5CkBAIC0xLDYgKzEsNiBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIS91c3IvYmluL2VudiBweXRob24zCiAjCi0jIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAyMC0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy9tZXNvbi9wYXJzZV9tb2R1bGVzX2NmZy5weSBiL2J1aWxkcy9tZXNvbi9wYXJzZV9tb2R1bGVzX2NmZy5weQppbmRleCBhYTZlOWUxLi42MDMwYmIyIDEwMDY0NAotLS0gYS9idWlsZHMvbWVzb24vcGFyc2VfbW9kdWxlc19jZmcucHkKKysrIGIvYnVpbGRzL21lc29uL3BhcnNlX21vZHVsZXNfY2ZnLnB5CkBAIC0xLDYgKzEsNiBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIS91c3IvYmluL2VudiBweXRob24zCiAjCi0jIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAyMC0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKQEAgLTg0LDEzICs4NCwxNiBAQAogICAgICAgICApCiAKICAgICBmb3IgbW9kdWxlIGluIGxpc3RzWyJSQVNURVJfTU9EVUxFUyJdOgotICAgICAgICBuYW1lID0gewotICAgICAgICAgICAgInJhc3RlciI6ICJmdF9yYXN0ZXIxIiwKLSAgICAgICAgICAgICJzbW9vdGgiOiAiZnRfc21vb3RoIiwKKyAgICAgICAgbmFtZXMgPSB7CisgICAgICAgICAgICAicmFzdGVyIjogKCJmdF9yYXN0ZXIxIiwpLAorICAgICAgICAgICAgInNtb290aCI6ICgiZnRfc21vb3RoIiwpLAorICAgICAgICAgICAgInN2ZyI6ICgiZnRfc3ZnIiwpLAorICAgICAgICAgICAgInNkZiI6ICgiZnRfc2RmIiwgImZ0X2JpdG1hcF9zZGYiKSwKICAgICAgICAgfS5nZXQobW9kdWxlKQotICAgICAgICByZXN1bHQgKz0gKAotICAgICAgICAgICAgIkZUX1VTRV9NT0RVTEUoIEZUX1JlbmRlcmVyX0NsYXNzLCAlc19yZW5kZXJlcl9jbGFzcyApXG4iICUgbmFtZQotICAgICAgICApCisgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgorICAgICAgICAgICAgcmVzdWx0ICs9ICgKKyAgICAgICAgICAgICAgICAiRlRfVVNFX01PRFVMRSggRlRfUmVuZGVyZXJfQ2xhc3MsICVzX3JlbmRlcmVyX2NsYXNzIClcbiIgJSBuYW1lCisgICAgICAgICAgICApCiAKICAgICBmb3IgbW9kdWxlIGluIGxpc3RzWyJBVVhfTU9EVUxFUyJdOgogICAgICAgICBpZiBtb2R1bGUgaW4gKCJwc2F1eCIsICJwc25hbWVzIiwgIm90dmFsaWQiLCAiZ3h2YWxpZCIpOgpkaWZmIC0tZ2l0IGEvYnVpbGRzL21lc29uL3Byb2Nlc3NfZnRvcHRpb25faC5weSBiL2J1aWxkcy9tZXNvbi9wcm9jZXNzX2Z0b3B0aW9uX2gucHkKaW5kZXggZmU2MDg4Ny4uOThkYWE4YyAxMDA2NDQKLS0tIGEvYnVpbGRzL21lc29uL3Byb2Nlc3NfZnRvcHRpb25faC5weQorKysgYi9idWlsZHMvbWVzb24vcHJvY2Vzc19mdG9wdGlvbl9oLnB5CkBAIC0xLDYgKzEsNiBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIS91c3IvYmluL2VudiBweXRob24zCiAjCi0jIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAyMC0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy9tb2R1bGVzLm1rIGIvYnVpbGRzL21vZHVsZXMubWsKaW5kZXggMzNmY2NkZi4uYTc1YmFhZiAxMDA2NDQKLS0tIGEvYnVpbGRzL21vZHVsZXMubWsKKysrIGIvYnVpbGRzL21vZHVsZXMubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvb3MyL2RldGVjdC5tayBiL2J1aWxkcy9vczIvZGV0ZWN0Lm1rCmluZGV4IDdiODk2MmIuLmFmZGJhNzQgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9vczIvZGV0ZWN0Lm1rCisrKyBiL2J1aWxkcy9vczIvZGV0ZWN0Lm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL29zMi9vczItZGVmLm1rIGIvYnVpbGRzL29zMi9vczItZGVmLm1rCmluZGV4IDA4YWFiOTUuLjkxN2VmMmQgMTAwNjQ0Ci0tLSBhL2J1aWxkcy9vczIvb3MyLWRlZi5taworKysgYi9idWlsZHMvb3MyL29zMi1kZWYubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvb3MyL29zMi1kZXYubWsgYi9idWlsZHMvb3MyL29zMi1kZXYubWsKaW5kZXggNDA1OTFmZi4uMzU4NGZiNiAxMDA2NDQKLS0tIGEvYnVpbGRzL29zMi9vczItZGV2Lm1rCisrKyBiL2J1aWxkcy9vczIvb3MyLWRldi5tawpAQCAtNSw3ICs1LDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy9vczIvb3MyLWdjYy5tayBiL2J1aWxkcy9vczIvb3MyLWdjYy5tawppbmRleCA4NTRjNDZkLi5lMTdjNWJlIDEwMDY0NAotLS0gYS9idWlsZHMvb3MyL29zMi1nY2MubWsKKysrIGIvYnVpbGRzL29zMi9vczItZ2NjLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL3N5bWJpYW4vYmxkLmluZiBiL2J1aWxkcy9zeW1iaWFuL2JsZC5pbmYKaW5kZXggYjlkMDAwYi4uNjE2ODkyMiAxMDA2NDQKLS0tIGEvYnVpbGRzL3N5bWJpYW4vYmxkLmluZgorKysgYi9idWlsZHMvc3ltYmlhbi9ibGQuaW5mCkBAIC0yLDcgKzIsNyBAQAogLy8gRnJlZVR5cGUgMiBwcm9qZWN0IGZvciB0aGUgc3ltYmlhbiBwbGF0Zm9ybQogLy8KIAotLy8gQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgYnkKKy8vIENvcHlyaWdodCAoQykgMjAwOC0yMDIzIGJ5CiAvLyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAvLwogLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy9zeW1iaWFuL2ZyZWV0eXBlLm1tcCBiL2J1aWxkcy9zeW1iaWFuL2ZyZWV0eXBlLm1tcAppbmRleCBmYTQ5MTU3Li4yOTc2NzhlIDEwMDY0NAotLS0gYS9idWlsZHMvc3ltYmlhbi9mcmVldHlwZS5tbXAKKysrIGIvYnVpbGRzL3N5bWJpYW4vZnJlZXR5cGUubW1wCkBAIC0yLDcgKzIsNyBAQAogLy8gRnJlZVR5cGUgMiBtYWtlZmlsZSBmb3IgdGhlIHN5bWJpYW4gcGxhdGZvcm0KIC8vCiAKLS8vIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIGJ5CisvLyBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMyBieQogLy8gRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogLy8KIC8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvdG9wbGV2ZWwubWsgYi9idWlsZHMvdG9wbGV2ZWwubWsKaW5kZXggNTNiNmQ2Zi4uYTBlMGM4NyAxMDA2NDQKLS0tIGEvYnVpbGRzL3RvcGxldmVsLm1rCisrKyBiL2J1aWxkcy90b3BsZXZlbC5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKQEAgLTEzOSwxMiArMTM5LDEyIEBACiAgIGlmbmVxICgkKGlzX3VuaXgpLCkKIAogICAgIGRpc3RjbGVhbjoKLQkgICQoUk0pIGJ1aWxkcy91bml4L2NvbmZpZy5jYWNoZQotCSAgJChSTSkgYnVpbGRzL3VuaXgvY29uZmlnLmxvZwotCSAgJChSTSkgYnVpbGRzL3VuaXgvY29uZmlnLnN0YXR1cwotCSAgJChSTSkgYnVpbGRzL3VuaXgvdW5peC1kZWYubWsKLQkgICQoUk0pIGJ1aWxkcy91bml4L3VuaXgtY2MubWsKLQkgICQoUk0pIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5wYworCSAgJChSTSkgJChUT1BfRElSKS9idWlsZHMvdW5peC9jb25maWcuY2FjaGUKKwkgICQoUk0pICQoVE9QX0RJUikvYnVpbGRzL3VuaXgvY29uZmlnLmxvZworCSAgJChSTSkgJChUT1BfRElSKS9idWlsZHMvdW5peC9jb25maWcuc3RhdHVzCisJICAkKFJNKSAkKFRPUF9ESVIpL2J1aWxkcy91bml4L3VuaXgtZGVmLm1rCisJICAkKFJNKSAkKFRPUF9ESVIpL2J1aWxkcy91bml4L3VuaXgtY2MubWsKKwkgICQoUk0pICQoVE9QX0RJUikvYnVpbGRzL3VuaXgvZnJlZXR5cGUyLnBjCiAJICAkKFJNKSBudWwKIAogICBlbmRpZiAjIHRlc3QgaXNfdW5peApAQCAtMTcwLDE3ICsxNzAsMTcgQEAKIAogY2hlY2tfb3V0X3N1Ym1vZHVsZToKIAkkKGluZm8gQ2hlY2tpbmcgb3V0IHN1Ym1vZHVsZSBpbiBgc3VicHJvamVjdHMvZGxnJykKLQlnaXQgc3VibW9kdWxlIGluaXQKLQlnaXQgc3VibW9kdWxlIHVwZGF0ZQorCWdpdCAtLWdpdC1kaXI9JChUT1BfRElSKSBzdWJtb2R1bGUgaW5pdAorCWdpdCAtLWdpdC1kaXI9JChUT1BfRElSKSBzdWJtb2R1bGUgdXBkYXRlCiAKIGNvcHlfc3VibW9kdWxlOgogCSQoaW5mbyBDb3B5aW5nIGZpbGVzIGZyb20gYHN1YnByb2plY3RzL2RsZycgdG8gYHNyYy9kbGcnIGFuZCBgaW5jbHVkZS9kbGcnKQotICBpZmVxICgkKHdpbGRjYXJkIGluY2x1ZGUvZGxnKSwpCi0JbWtkaXIgJChzdWJzdCAvLCQoU0VQKSxpbmNsdWRlL2RsZykKKyAgaWZlcSAoJCh3aWxkY2FyZCAkKFRPUF9ESVIpL2luY2x1ZGUvZGxnKSwpCisJbWtkaXIgJChzdWJzdCAvLCQoU0VQKSwkKFRPUF9ESVIpL2luY2x1ZGUvZGxnKQogICBlbmRpZgotCSQoQ09QWSkgJChzdWJzdCAvLCQoU0VQKSxzdWJwcm9qZWN0cy9kbGcvaW5jbHVkZS9kbGcvb3V0cHV0LmggaW5jbHVkZS9kbGcpCi0JJChDT1BZKSAkKHN1YnN0IC8sJChTRVApLHN1YnByb2plY3RzL2RsZy9pbmNsdWRlL2RsZy9kbGcuaCBpbmNsdWRlL2RsZykKLQkkKENPUFkpICQoc3Vic3QgLywkKFNFUCksc3VicHJvamVjdHMvZGxnL3NyYy9kbGcvZGxnLmMgc3JjL2RsZykKKwkkKENPUFkpICQoc3Vic3QgLywkKFNFUCksJChUT1BfRElSKS9zdWJwcm9qZWN0cy9kbGcvaW5jbHVkZS9kbGcvb3V0cHV0LmggJChUT1BfRElSKS9pbmNsdWRlL2RsZykKKwkkKENPUFkpICQoc3Vic3QgLywkKFNFUCksJChUT1BfRElSKS9zdWJwcm9qZWN0cy9kbGcvaW5jbHVkZS9kbGcvZGxnLmggJChUT1BfRElSKS9pbmNsdWRlL2RsZykKKwkkKENPUFkpICQoc3Vic3QgLywkKFNFUCksJChUT1BfRElSKS9zdWJwcm9qZWN0cy9kbGcvc3JjL2RsZy9kbGcuYyAkKFRPUF9ESVIpL3NyYy9kbGcpCiAKIAogIyBXZSBhbHdheXMgbmVlZCB0aGUgbGlzdCBvZiBtb2R1bGVzIGluIGZ0bW9kdWxlLmguCkBAIC0yOTQsMzAgKzI5NCwyOSBAQAogCiBkby1kaXN0OiBkaXN0Y2xlYW4gcmVmZG9jCiAJQCMgV2l0aG91dCByZW1vdmluZyB0aGUgZmlsZXMsIGBhdXRvY29uZicgYW5kIGZyaWVuZHMgZm9sbG93IGxpbmtzLgotCXJtIC1mIGJ1aWxkcy91bml4L2FjbG9jYWwubTQKLQlybSAtZiBidWlsZHMvdW5peC9jb25maWd1cmUuYWMKLQlybSAtZiBidWlsZHMvdW5peC9jb25maWd1cmUKKwlybSAtZiAkKFRPUF9ESVIpL2J1aWxkcy91bml4L2FjbG9jYWwubTQKKwlybSAtZiAkKFRPUF9ESVIpL2J1aWxkcy91bml4L2NvbmZpZ3VyZS5hYworCXJtIC1mICQoVE9QX0RJUikvYnVpbGRzL3VuaXgvY29uZmlndXJlCiAKIAlzaCBhdXRvZ2VuLnNoCi0Jcm0gLXJmIGJ1aWxkcy91bml4L2F1dG9tNHRlLmNhY2hlCisJcm0gLXJmICQoVE9QX0RJUikvYnVpbGRzL3VuaXgvYXV0b200dGUuY2FjaGUKIAotCWNwICQoQ09ORklHX0dVRVNTKSBidWlsZHMvdW5peAotCWNwICQoQ09ORklHX1NVQikgYnVpbGRzL3VuaXgKKwljcCAkKENPTkZJR19HVUVTUykgJChUT1BfRElSKS9idWlsZHMvdW5peAorCWNwICQoQ09ORklHX1NVQikgJChUT1BfRElSKS9idWlsZHMvdW5peAogCi0JQCMgR2VuZXJhdGUgYENoYW5nZUxvZycgZmlsZSB3aXRoIGNvbW1pdHMgc2luY2UgcHJldmlvdXMgcmVsZWFzZS4KKwlAIyBHZW5lcmF0ZSBgQ2hhbmdlTG9nJyBmaWxlIHdpdGggY29tbWl0cyBzaW5jZSByZWxlYXNlIDIuMTEuMAorCUAjICh3aGVuIHdlIHN0b3BwZWQgY3JlYXRpbmcgdGhpcyBmaWxlIG1hbnVhbGx5KS4KIAkkKENIQU5HRUxPR19TQ1JJUFQpIFwKIAkgIC0tZm9ybWF0PSclQiVuJyBcCiAJICAtLW5vLWNsdXN0ZXIgXAotCSAgLS0gYGdpdCBkZXNjcmliZSAtLXRhZ3MgXAotCSAgICAgICAgICAgICAgICAgICAtLWFiYnJldj0wIFwKLQkgICAgICAgICAgICAgICAgICAgJCh2ZXJzaW9uX3RhZyleYC4uJCh2ZXJzaW9uX3RhZykgXAorCSAgLS0gVkVSLTItMTEtMC4uJCh2ZXJzaW9uX3RhZykgXAogCT4gQ2hhbmdlTG9nCiAKIAlAIyBSZW1vdmUgaW50ZXJtZWRpYXRlIGZpbGVzIGNyZWF0ZWQgYnkgdGhlIGByZWZkb2MnIHRhcmdldC4KLQlybSAtcmYgZG9jcy9tYXJrZG93bgotCXJtIC1mIGRvY3MvbWtkb2NzLnltbAorCXJtIC1yZiAkKFRPUF9ESVIpL2RvY3MvbWFya2Rvd24KKwlybSAtZiAkKFRPUF9ESVIpL2RvY3MvbWtkb2NzLnltbAogCiAJQCMgUmVtb3ZlIG1vcmUgc3R1ZmYgcmVsYXRlZCB0byBnaXQuCi0Jcm0gLXJmIHN1YnByb2plY3RzCisJcm0gLXJmIChUT1BfRElSKS9zdWJwcm9qZWN0cy9kbGcKIAogIyBFT0YKZGlmZiAtLWdpdCBhL2J1aWxkcy91bml4L0xJQ0VOU0VfR1BMdjJfV0lUSF9BVVRPQ09ORl9FWENFUFRJT04uVFhUIGIvYnVpbGRzL3VuaXgvTElDRU5TRV9HUEx2Ml9XSVRIX0FVVE9DT05GX0VYQ0VQVElPTi5UWFQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRkNGU4ZgotLS0gL2Rldi9udWxsCisrKyBiL2J1aWxkcy91bml4L0xJQ0VOU0VfR1BMdjJfV0lUSF9BVVRPQ09ORl9FWENFUFRJT04uVFhUCkBAIC0wLDAgKzEsMzA3IEBACivvu78gICAgICAgICAgICAgICAgICAgIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCisgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMiwgSnVuZSAxOTkxCisKKyBDb3B5cmlnaHQgKEMpIDE5ODksIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKKyBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWFtYmxlCisKKyAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgorZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGl0LiAgQnkgY29udHJhc3QsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKK0xpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGZyZWUKK3NvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuICBUaGlzCitHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFwcGxpZXMgdG8gbW9zdCBvZiB0aGUgRnJlZSBTb2Z0d2FyZQorRm91bmRhdGlvbidzIHNvZnR3YXJlIGFuZCB0byBhbnkgb3RoZXIgcHJvZ3JhbSB3aG9zZSBhdXRob3JzIGNvbW1pdCB0bwordXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gc29mdHdhcmUgaXMgY292ZXJlZCBieQordGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpbnN0ZWFkLikgIFlvdSBjYW4gYXBwbHkgaXQgdG8KK3lvdXIgcHJvZ3JhbXMsIHRvby4KKworICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSwgbm90CitwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQgeW91CitoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCit0aGlzIHNlcnZpY2UgaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQKK2lmIHlvdSB3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0CitpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCisKKyAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBtYWtlIHJlc3RyaWN0aW9ucyB0aGF0IGZvcmJpZAorYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgorVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yIHlvdSBpZiB5b3UKK2Rpc3RyaWJ1dGUgY29waWVzIG9mIHRoZSBzb2Z0d2FyZSwgb3IgaWYgeW91IG1vZGlmeSBpdC4KKworICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCitncmF0aXMgb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQKK3lvdSBoYXZlLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlCitzb3VyY2UgY29kZS4gIEFuZCB5b3UgbXVzdCBzaG93IHRoZW0gdGhlc2UgdGVybXMgc28gdGhleSBrbm93IHRoZWlyCityaWdodHMuCisKKyAgV2UgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczogKDEpIGNvcHlyaWdodCB0aGUgc29mdHdhcmUsIGFuZAorKDIpIG9mZmVyIHlvdSB0aGlzIGxpY2Vuc2Ugd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwKK2Rpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCisKKyAgQWxzbywgZm9yIGVhY2ggYXV0aG9yJ3MgcHJvdGVjdGlvbiBhbmQgb3Vycywgd2Ugd2FudCB0byBtYWtlIGNlcnRhaW4KK3RoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCitzb2Z0d2FyZS4gIElmIHRoZSBzb2Z0d2FyZSBpcyBtb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgd2UKK3dhbnQgaXRzIHJlY2lwaWVudHMgdG8ga25vdyB0aGF0IHdoYXQgdGhleSBoYXZlIGlzIG5vdCB0aGUgb3JpZ2luYWwsIHNvCit0aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAorYXV0aG9ycycgcmVwdXRhdGlvbnMuCisKKyAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUKK3BhdGVudHMuICBXZSB3aXNoIHRvIGF2b2lkIHRoZSBkYW5nZXIgdGhhdCByZWRpc3RyaWJ1dG9ycyBvZiBhIGZyZWUKK3Byb2dyYW0gd2lsbCBpbmRpdmlkdWFsbHkgb2J0YWluIHBhdGVudCBsaWNlbnNlcywgaW4gZWZmZWN0IG1ha2luZyB0aGUKK3Byb2dyYW0gcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBpdCBjbGVhciB0aGF0IGFueQorcGF0ZW50IG11c3QgYmUgbGljZW5zZWQgZm9yIGV2ZXJ5b25lJ3MgZnJlZSB1c2Ugb3Igbm90IGxpY2Vuc2VkIGF0IGFsbC4KKworICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAorbW9kaWZpY2F0aW9uIGZvbGxvdy4KKworICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCisKKyAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55IHByb2dyYW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucworYSBub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVyIHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQKK3VuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGUgIlByb2dyYW0iLCBiZWxvdywKK3JlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBhICJ3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIgorbWVhbnMgZWl0aGVyIHRoZSBQcm9ncmFtIG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIgY29weXJpZ2h0IGxhdzoKK3RoYXQgaXMgdG8gc2F5LCBhIHdvcmsgY29udGFpbmluZyB0aGUgUHJvZ3JhbSBvciBhIHBvcnRpb24gb2YgaXQsCitlaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkIGludG8gYW5vdGhlcgorbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzIGluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbgordGhlIHRlcm0gIm1vZGlmaWNhdGlvbiIuKSAgRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCisKK0FjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90Citjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZTsgdGhleSBhcmUgb3V0c2lkZSBpdHMgc2NvcGUuICBUaGUgYWN0IG9mCitydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91dHB1dCBmcm9tIHRoZSBQcm9ncmFtCitpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkIG9uIHRoZQorUHJvZ3JhbSAoaW5kZXBlbmRlbnQgb2YgaGF2aW5nIGJlZW4gbWFkZSBieSBydW5uaW5nIHRoZSBQcm9ncmFtKS4KK1doZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgUHJvZ3JhbSBkb2VzLgorCisgIDEuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncworc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91Citjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlCitjb3B5cmlnaHQgbm90aWNlIGFuZCBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5OyBrZWVwIGludGFjdCBhbGwgdGhlCitub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7CithbmQgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgUHJvZ3JhbSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlCithbG9uZyB3aXRoIHRoZSBQcm9ncmFtLgorCitZb3UgbWF5IGNoYXJnZSBhIGZlZSBmb3IgdGhlIHBoeXNpY2FsIGFjdCBvZiB0cmFuc2ZlcnJpbmcgYSBjb3B5LCBhbmQKK3lvdSBtYXkgYXQgeW91ciBvcHRpb24gb2ZmZXIgd2FycmFudHkgcHJvdGVjdGlvbiBpbiBleGNoYW5nZSBmb3IgYSBmZWUuCisKKyAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbgorb2YgaXQsIHRodXMgZm9ybWluZyBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0sIGFuZCBjb3B5IGFuZAorZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCithYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgorCisgICAgYSkgWW91IG11c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCisgICAgc3RhdGluZyB0aGF0IHlvdSBjaGFuZ2VkIHRoZSBmaWxlcyBhbmQgdGhlIGRhdGUgb2YgYW55IGNoYW5nZS4KKworICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRoYXQgeW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgorICAgIHdob2xlIG9yIGluIHBhcnQgY29udGFpbnMgb3IgaXMgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtIG9yIGFueQorICAgIHBhcnQgdGhlcmVvZiwgdG8gYmUgbGljZW5zZWQgYXMgYSB3aG9sZSBhdCBubyBjaGFyZ2UgdG8gYWxsIHRoaXJkCisgICAgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgorCisgICAgYykgSWYgdGhlIG1vZGlmaWVkIHByb2dyYW0gbm9ybWFsbHkgcmVhZHMgY29tbWFuZHMgaW50ZXJhY3RpdmVseQorICAgIHdoZW4gcnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBzdGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2gKKyAgICBpbnRlcmFjdGl2ZSB1c2UgaW4gdGhlIG1vc3Qgb3JkaW5hcnkgd2F5LCB0byBwcmludCBvciBkaXNwbGF5IGFuCisgICAgYW5ub3VuY2VtZW50IGluY2x1ZGluZyBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBhCisgICAgbm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0IHlvdSBwcm92aWRlCisgICAgYSB3YXJyYW50eSkgYW5kIHRoYXQgdXNlcnMgbWF5IHJlZGlzdHJpYnV0ZSB0aGUgcHJvZ3JhbSB1bmRlcgorICAgIHRoZXNlIGNvbmRpdGlvbnMsIGFuZCB0ZWxsaW5nIHRoZSB1c2VyIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzCisgICAgTGljZW5zZS4gIChFeGNlcHRpb246IGlmIHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKKyAgICBkb2VzIG5vdCBub3JtYWxseSBwcmludCBzdWNoIGFuIGFubm91bmNlbWVudCwgeW91ciB3b3JrIGJhc2VkIG9uCisgICAgdGhlIFByb2dyYW0gaXMgbm90IHJlcXVpcmVkIHRvIHByaW50IGFuIGFubm91bmNlbWVudC4pCisKK1RoZXNlIHJlcXVpcmVtZW50cyBhcHBseSB0byB0aGUgbW9kaWZpZWQgd29yayBhcyBhIHdob2xlLiAgSWYKK2lkZW50aWZpYWJsZSBzZWN0aW9ucyBvZiB0aGF0IHdvcmsgYXJlIG5vdCBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0sCithbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KK3RoZW1zZWx2ZXMsIHRoZW4gdGhpcyBMaWNlbnNlLCBhbmQgaXRzIHRlcm1zLCBkbyBub3QgYXBwbHkgdG8gdGhvc2UKK3NlY3Rpb25zIHdoZW4geW91IGRpc3RyaWJ1dGUgdGhlbSBhcyBzZXBhcmF0ZSB3b3Jrcy4gIEJ1dCB3aGVuIHlvdQorZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCitvbiB0aGUgUHJvZ3JhbSwgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgd2hvbGUgbXVzdCBiZSBvbiB0aGUgdGVybXMgb2YKK3RoaXMgTGljZW5zZSwgd2hvc2UgcGVybWlzc2lvbnMgZm9yIG90aGVyIGxpY2Vuc2VlcyBleHRlbmQgdG8gdGhlCitlbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUgaXQuCisKK1RodXMsIGl0IGlzIG5vdCB0aGUgaW50ZW50IG9mIHRoaXMgc2VjdGlvbiB0byBjbGFpbSByaWdodHMgb3IgY29udGVzdAoreW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCitleGVyY2lzZSB0aGUgcmlnaHQgdG8gY29udHJvbCB0aGUgZGlzdHJpYnV0aW9uIG9mIGRlcml2YXRpdmUgb3IKK2NvbGxlY3RpdmUgd29ya3MgYmFzZWQgb24gdGhlIFByb2dyYW0uCisKK0luIGFkZGl0aW9uLCBtZXJlIGFnZ3JlZ2F0aW9uIG9mIGFub3RoZXIgd29yayBub3QgYmFzZWQgb24gdGhlIFByb2dyYW0KK3dpdGggdGhlIFByb2dyYW0gKG9yIHdpdGggYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtKSBvbiBhIHZvbHVtZSBvZgorYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKK3RoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCisKKyAgMy4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhIHdvcmsgYmFzZWQgb24gaXQsCit1bmRlciBTZWN0aW9uIDIpIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB1bmRlciB0aGUgdGVybXMgb2YKK1NlY3Rpb25zIDEgYW5kIDIgYWJvdmUgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBkbyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworICAgIGEpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nIG1hY2hpbmUtcmVhZGFibGUKKyAgICBzb3VyY2UgY29kZSwgd2hpY2ggbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMKKyAgICAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKKworICAgIGIpIEFjY29tcGFueSBpdCB3aXRoIGEgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlCisgICAgeWVhcnMsIHRvIGdpdmUgYW55IHRoaXJkIHBhcnR5LCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZSB0aGFuIHlvdXIKKyAgICBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyBzb3VyY2UgZGlzdHJpYnV0aW9uLCBhIGNvbXBsZXRlCisgICAgbWFjaGluZS1yZWFkYWJsZSBjb3B5IG9mIHRoZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLCB0byBiZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtCisgICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAorCisgICAgYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNlaXZlZCBhcyB0byB0aGUgb2ZmZXIKKyAgICB0byBkaXN0cmlidXRlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUuICAoVGhpcyBhbHRlcm5hdGl2ZSBpcworICAgIGFsbG93ZWQgb25seSBmb3Igbm9uY29tbWVyY2lhbCBkaXN0cmlidXRpb24gYW5kIG9ubHkgaWYgeW91CisgICAgcmVjZWl2ZWQgdGhlIHByb2dyYW0gaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHdpdGggc3VjaAorICAgIGFuIG9mZmVyLCBpbiBhY2NvcmQgd2l0aCBTdWJzZWN0aW9uIGIgYWJvdmUuKQorCitUaGUgc291cmNlIGNvZGUgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCittYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gIEZvciBhbiBleGVjdXRhYmxlIHdvcmssIGNvbXBsZXRlIHNvdXJjZQorY29kZSBtZWFucyBhbGwgdGhlIHNvdXJjZSBjb2RlIGZvciBhbGwgbW9kdWxlcyBpdCBjb250YWlucywgcGx1cyBhbnkKK2Fzc29jaWF0ZWQgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0bworY29udHJvbCBjb21waWxhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIG9mIHRoZSBleGVjdXRhYmxlLiAgSG93ZXZlciwgYXMgYQorc3BlY2lhbCBleGNlcHRpb24sIHRoZSBzb3VyY2UgY29kZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlCithbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeQorZm9ybSkgd2l0aCB0aGUgbWFqb3IgY29tcG9uZW50cyAoY29tcGlsZXIsIGtlcm5lbCwgYW5kIHNvIG9uKSBvZiB0aGUKK29wZXJhdGluZyBzeXN0ZW0gb24gd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50CitpdHNlbGYgYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCisKK0lmIGRpc3RyaWJ1dGlvbiBvZiBleGVjdXRhYmxlIG9yIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcKK2FjY2VzcyB0byBjb3B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQKK2FjY2VzcyB0byBjb3B5IHRoZSBzb3VyY2UgY29kZSBmcm9tIHRoZSBzYW1lIHBsYWNlIGNvdW50cyBhcworZGlzdHJpYnV0aW9uIG9mIHRoZSBzb3VyY2UgY29kZSwgZXZlbiB0aG91Z2ggdGhpcmQgcGFydGllcyBhcmUgbm90Citjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLgorCisgIDQuIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgb3IgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbQorZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdAorb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlzCit2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UuCitIb3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlcgordGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMgdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2gKK3BhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KKworICA1LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKK3NpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCitkaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhlc2UgYWN0aW9ucyBhcmUKK3Byb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKK21vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQorUHJvZ3JhbSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKK2FsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKK3RoZSBQcm9ncmFtIG9yIHdvcmtzIGJhc2VkIG9uIGl0LgorCisgIDYuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKK1Byb2dyYW0pLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlCitvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9yIG1vZGlmeSB0aGUgUHJvZ3JhbSBzdWJqZWN0IHRvCit0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgorcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgorWW91IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8KK3RoaXMgTGljZW5zZS4KKworICA3LiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CitpbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLAorY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgorb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdAorZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKK2Rpc3RyaWJ1dGUgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMKK0xpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKK21heSBub3QgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKK2xpY2Vuc2Ugd291bGQgbm90IHBlcm1pdCByb3lhbHR5LWZyZWUgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYnkKK2FsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgordGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bworcmVmcmFpbiBlbnRpcmVseSBmcm9tIGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbS4KKworSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyCithbnkgcGFydGljdWxhciBjaXJjdW1zdGFuY2UsIHRoZSBiYWxhbmNlIG9mIHRoZSBzZWN0aW9uIGlzIGludGVuZGVkIHRvCithcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlcgorY2lyY3Vtc3RhbmNlcy4KKworSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQorcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKK3N1Y2ggY2xhaW1zOyB0aGlzIHNlY3Rpb24gaGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgcHJvdGVjdGluZyB0aGUKK2ludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcworaW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCitnZW5lcm91cyBjb250cmlidXRpb25zIHRvIHRoZSB3aWRlIHJhbmdlIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkCit0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdAorc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwordG8gZGlzdHJpYnV0ZSBzb2Z0d2FyZSB0aHJvdWdoIGFueSBvdGhlciBzeXN0ZW0gYW5kIGEgbGljZW5zZWUgY2Fubm90CitpbXBvc2UgdGhhdCBjaG9pY2UuCisKK1RoaXMgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBtYWtlIHRob3JvdWdobHkgY2xlYXIgd2hhdCBpcyBiZWxpZXZlZCB0bworYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCisKKyAgOC4gSWYgdGhlIGRpc3RyaWJ1dGlvbiBhbmQvb3IgdXNlIG9mIHRoZSBQcm9ncmFtIGlzIHJlc3RyaWN0ZWQgaW4KK2NlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQorb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgTGljZW5zZQorbWF5IGFkZCBhbiBleHBsaWNpdCBnZW9ncmFwaGljYWwgZGlzdHJpYnV0aW9uIGxpbWl0YXRpb24gZXhjbHVkaW5nCit0aG9zZSBjb3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nCitjb3VudHJpZXMgbm90IHRodXMgZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMKK3RoZSBsaW1pdGF0aW9uIGFzIGlmIHdyaXR0ZW4gaW4gdGhlIGJvZHkgb2YgdGhpcyBMaWNlbnNlLgorCisgIDkuIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gbWF5IHB1Ymxpc2ggcmV2aXNlZCBhbmQvb3IgbmV3IHZlcnNpb25zCitvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmcm9tIHRpbWUgdG8gdGltZS4gIFN1Y2ggbmV3IHZlcnNpb25zIHdpbGwKK2JlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bworYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuCisKK0VhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIFByb2dyYW0KK3NwZWNpZmllcyBhIHZlcnNpb24gbnVtYmVyIG9mIHRoaXMgTGljZW5zZSB3aGljaCBhcHBsaWVzIHRvIGl0IGFuZCAiYW55CitsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zCitlaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZgordGhpcyBMaWNlbnNlLCB5b3UgbWF5IGNob29zZSBhbnkgdmVyc2lvbiBldmVyIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorRm91bmRhdGlvbi4KKworICAxMC4gSWYgeW91IHdpc2ggdG8gaW5jb3Jwb3JhdGUgcGFydHMgb2YgdGhlIFByb2dyYW0gaW50byBvdGhlciBmcmVlCitwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgZGlmZmVyZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCit0byBhc2sgZm9yIHBlcm1pc3Npb24uICBGb3Igc29mdHdhcmUgd2hpY2ggaXMgY29weXJpZ2h0ZWQgYnkgdGhlIEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb24sIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHdlIHNvbWV0aW1lcworbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMKK29mIHByZXNlcnZpbmcgdGhlIGZyZWUgc3RhdHVzIG9mIGFsbCBkZXJpdmF0aXZlcyBvZiBvdXIgZnJlZSBzb2Z0d2FyZSBhbmQKK29mIHByb21vdGluZyB0aGUgc2hhcmluZyBhbmQgcmV1c2Ugb2Ygc29mdHdhcmUgZ2VuZXJhbGx5LgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk8gV0FSUkFOVFkKKworICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkKK0ZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcuICBFWENFUFQgV0hFTgorT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IgT1RIRVIgUEFSVElFUworUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQKK09SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCitNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTCitUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFCitQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywKK1JFUEFJUiBPUiBDT1JSRUNUSU9OLgorCisgIDEyLiBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcKK1dJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWSBBTkQvT1IKK1JFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsCitJTkNMVURJTkcgQU5ZIEdFTkVSQUwsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcKK09VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQKK1RPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWQorWU9VIE9SIFRISVJEIFBBUlRJRVMgT1IgQSBGQUlMVVJFIE9GIFRIRSBQUk9HUkFNIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIKK1BST0dSQU1TKSwgRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRQorUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgorCitBdXRvY29uZiBFeGNlcHRpb24KKworQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcyB1bmxpbWl0ZWQKK3Blcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUgc2NyaXB0cyB0aGF0IGFyZSB0aGUKK291dHB1dCBvZiBBdXRvY29uZi4gWW91IG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworTGljZW5zZSB3aGVuIHVzaW5nIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZQordGV4dCBvZiBBdXRvY29uZiBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMKK2dvdmVybiBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBwcm9ncmFtLgorCitDZXJ0YWluIHBvcnRpb25zIG9mIHRoZSBBdXRvY29uZiBzb3VyY2UgdGV4dCBhcmUgZGVzaWduZWQgdG8gYmUgY29waWVkIChpbgorY2VydGFpbiBjYXNlcywgZGVwZW5kaW5nIG9uIHRoZSBpbnB1dCkgaW50byB0aGUgb3V0cHV0IG9mIEF1dG9jb25mLiBXZSBjYWxsCit0aGVzZSB0aGUgImRhdGEiIHBvcnRpb25zLiBUaGUgcmVzdCBvZiB0aGUgQXV0b2NvbmYgc291cmNlIHRleHQgY29uc2lzdHMgb2YKK2NvbW1lbnRzIHBsdXMgZXhlY3V0YWJsZSBjb2RlIHRoYXQgZGVjaWRlcyB3aGljaCBvZiB0aGUgZGF0YSBwb3J0aW9ucyB0bworb3V0cHV0IGluIGFueSBnaXZlbiBjYXNlLiBXZSBjYWxsIHRoZXNlIGNvbW1lbnRzIGFuZCBleGVjdXRhYmxlIGNvZGUgdGhlICJub24tCitkYXRhIiBwb3J0aW9ucy4gQXV0b2NvbmYgbmV2ZXIgY29waWVzIGFueSBvZiB0aGUgbm9uLWRhdGEgcG9ydGlvbnMgaW50byBpdHMKK291dHB1dC4KKworVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgQXV0b2NvbmYgcmVsZWFzZWQgYnkKK3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYSBtb2RpZmllZCB2ZXJzaW9uCitvZiBBdXRvY29uZiwgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIKK21vZGlmaWVkIHZlcnNpb24gYXMgd2VsbCwgKnVubGVzcyogeW91ciBtb2RpZmllZCB2ZXJzaW9uIGhhcyB0aGUgcG90ZW50aWFsIHRvCitjb3B5IGludG8gaXRzIG91dHB1dCBzb21lIG9mIHRoZSB0ZXh0IHRoYXQgd2FzIHRoZSBub24tZGF0YSBwb3J0aW9uIG9mIHRoZQordmVyc2lvbiB0aGF0IHlvdSBzdGFydGVkIHdpdGguIChJbiBvdGhlciB3b3JkcywgdW5sZXNzIHlvdXIgY2hhbmdlIG1vdmVzIG9yCitjb3BpZXMgdGV4dCBmcm9tIHRoZSBub24tZGF0YSBwb3J0aW9ucyB0byB0aGUgZGF0YSBwb3J0aW9ucy4pIElmIHlvdXIKK21vZGlmaWNhdGlvbiBoYXMgc3VjaCBwb3RlbnRpYWwsIHlvdSBtdXN0IGRlbGV0ZSBhbnkgbm90aWNlIG9mIHRoaXMgc3BlY2lhbAorZXhjZXB0aW9uIHRvIHRoZSBHUEwgZnJvbSB5b3VyIG1vZGlmaWVkIHZlcnNpb24uCisKKyAgICAgICAgICAgICAgICAgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUworCmRpZmYgLS1naXQgYS9idWlsZHMvdW5peC9MSUNFTlNFX0dQTHYzX1dJVEhfQVVUT0NPTkZfRVhDRVBUSU9OLlRYVCBiL2J1aWxkcy91bml4L0xJQ0VOU0VfR1BMdjNfV0lUSF9BVVRPQ09ORl9FWENFUFRJT04uVFhUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNzM1NWUKLS0tIC9kZXYvbnVsbAorKysgYi9idWlsZHMvdW5peC9MSUNFTlNFX0dQTHYzX1dJVEhfQVVUT0NPTkZfRVhDRVBUSU9OLlRYVApAQCAtMCwwICsxLDY2MyBAQAorICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQorICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNworCisgQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPgorIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcworIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKKworICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcgorc29mdHdhcmUgYW5kIG90aGVyIGtpbmRzIG9mIHdvcmtzLgorCisgIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZAordG8gdGFrZSBhd2F5IHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIHRoZSB3b3Jrcy4gIEJ5IGNvbnRyYXN0LAordGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8KK3NoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQorc29mdHdhcmUgZm9yIGFsbCBpdHMgdXNlcnMuICBXZSwgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgdXNlIHRoZQorR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vc3Qgb2Ygb3VyIHNvZnR3YXJlOyBpdCBhcHBsaWVzIGFsc28gdG8KK2FueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bworeW91ciBwcm9ncmFtcywgdG9vLgorCisgIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKK3ByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKK2hhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3IKK3RoZW0gaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91Cit3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0IGluIG5ldworZnJlZSBwcm9ncmFtcywgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCisKKyAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBwcmV2ZW50IG90aGVycyBmcm9tIGRlbnlpbmcgeW91Cit0aGVzZSByaWdodHMgb3IgYXNraW5nIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4gIFRoZXJlZm9yZSwgeW91IGhhdmUKK2NlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZgoreW91IG1vZGlmeSBpdDogcmVzcG9uc2liaWxpdGllcyB0byByZXNwZWN0IHRoZSBmcmVlZG9tIG9mIG90aGVycy4KKworICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCitncmF0aXMgb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBwYXNzIG9uIHRvIHRoZSByZWNpcGllbnRzIHRoZSBzYW1lCitmcmVlZG9tcyB0aGF0IHlvdSByZWNlaXZlZC4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZQorb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkKK2tub3cgdGhlaXIgcmlnaHRzLgorCisgIERldmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczoKKygxKSBhc3NlcnQgY29weXJpZ2h0IG9uIHRoZSBzb2Z0d2FyZSwgYW5kICgyKSBvZmZlciB5b3UgdGhpcyBMaWNlbnNlCitnaXZpbmcgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IGl0LgorCisgIEZvciB0aGUgZGV2ZWxvcGVycycgYW5kIGF1dGhvcnMnIHByb3RlY3Rpb24sIHRoZSBHUEwgY2xlYXJseSBleHBsYWlucwordGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlIHNvZnR3YXJlLiAgRm9yIGJvdGggdXNlcnMnIGFuZAorYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcworY2hhbmdlZCwgc28gdGhhdCB0aGVpciBwcm9ibGVtcyB3aWxsIG5vdCBiZSBhdHRyaWJ1dGVkIGVycm9uZW91c2x5IHRvCithdXRob3JzIG9mIHByZXZpb3VzIHZlcnNpb25zLgorCisgIFNvbWUgZGV2aWNlcyBhcmUgZGVzaWduZWQgdG8gZGVueSB1c2VycyBhY2Nlc3MgdG8gaW5zdGFsbCBvciBydW4KK21vZGlmaWVkIHZlcnNpb25zIG9mIHRoZSBzb2Z0d2FyZSBpbnNpZGUgdGhlbSwgYWx0aG91Z2ggdGhlIG1hbnVmYWN0dXJlcgorY2FuIGRvIHNvLiAgVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YKK3Byb3RlY3RpbmcgdXNlcnMnIGZyZWVkb20gdG8gY2hhbmdlIHRoZSBzb2Z0d2FyZS4gIFRoZSBzeXN0ZW1hdGljCitwYXR0ZXJuIG9mIHN1Y2ggYWJ1c2Ugb2NjdXJzIGluIHRoZSBhcmVhIG9mIHByb2R1Y3RzIGZvciBpbmRpdmlkdWFscyB0bwordXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlCitoYXZlIGRlc2lnbmVkIHRoaXMgdmVyc2lvbiBvZiB0aGUgR1BMIHRvIHByb2hpYml0IHRoZSBwcmFjdGljZSBmb3IgdGhvc2UKK3Byb2R1Y3RzLiAgSWYgc3VjaCBwcm9ibGVtcyBhcmlzZSBzdWJzdGFudGlhbGx5IGluIG90aGVyIGRvbWFpbnMsIHdlCitzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMKK29mIHRoZSBHUEwsIGFzIG5lZWRlZCB0byBwcm90ZWN0IHRoZSBmcmVlZG9tIG9mIHVzZXJzLgorCisgIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuCitTdGF0ZXMgc2hvdWxkIG5vdCBhbGxvdyBwYXRlbnRzIHRvIHJlc3RyaWN0IGRldmVsb3BtZW50IGFuZCB1c2Ugb2YKK3NvZnR3YXJlIG9uIGdlbmVyYWwtcHVycG9zZSBjb21wdXRlcnMsIGJ1dCBpbiB0aG9zZSB0aGF0IGRvLCB3ZSB3aXNoIHRvCithdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQKK21ha2UgaXQgZWZmZWN0aXZlbHkgcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHRoZSBHUEwgYXNzdXJlcyB0aGF0CitwYXRlbnRzIGNhbm5vdCBiZSB1c2VkIHRvIHJlbmRlciB0aGUgcHJvZ3JhbSBub24tZnJlZS4KKworICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAorbW9kaWZpY2F0aW9uIGZvbGxvdy4KKworICAgICAgICAgICAgICAgICAgICAgICBURVJNUyBBTkQgQ09ORElUSU9OUworCisgIDAuIERlZmluaXRpb25zLgorCisgICJUaGlzIExpY2Vuc2UiIHJlZmVycyB0byB2ZXJzaW9uIDMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorCisgICJDb3B5cmlnaHQiIGFsc28gbWVhbnMgY29weXJpZ2h0LWxpa2UgbGF3cyB0aGF0IGFwcGx5IHRvIG90aGVyIGtpbmRzIG9mCit3b3Jrcywgc3VjaCBhcyBzZW1pY29uZHVjdG9yIG1hc2tzLgorCisgICJUaGUgUHJvZ3JhbSIgcmVmZXJzIHRvIGFueSBjb3B5cmlnaHRhYmxlIHdvcmsgbGljZW5zZWQgdW5kZXIgdGhpcworTGljZW5zZS4gIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLiAgIkxpY2Vuc2VlcyIgYW5kCisicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuCisKKyAgVG8gIm1vZGlmeSIgYSB3b3JrIG1lYW5zIHRvIGNvcHkgZnJvbSBvciBhZGFwdCBhbGwgb3IgcGFydCBvZiB0aGUgd29yaworaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuCitleGFjdCBjb3B5LiAgVGhlIHJlc3VsdGluZyB3b3JrIGlzIGNhbGxlZCBhICJtb2RpZmllZCB2ZXJzaW9uIiBvZiB0aGUKK2VhcmxpZXIgd29yayBvciBhIHdvcmsgImJhc2VkIG9uIiB0aGUgZWFybGllciB3b3JrLgorCisgIEEgImNvdmVyZWQgd29yayIgbWVhbnMgZWl0aGVyIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0gb3IgYSB3b3JrIGJhc2VkCitvbiB0aGUgUHJvZ3JhbS4KKworICBUbyAicHJvcGFnYXRlIiBhIHdvcmsgbWVhbnMgdG8gZG8gYW55dGhpbmcgd2l0aCBpdCB0aGF0LCB3aXRob3V0CitwZXJtaXNzaW9uLCB3b3VsZCBtYWtlIHlvdSBkaXJlY3RseSBvciBzZWNvbmRhcmlseSBsaWFibGUgZm9yCitpbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGEKK2NvbXB1dGVyIG9yIG1vZGlmeWluZyBhIHByaXZhdGUgY29weS4gIFByb3BhZ2F0aW9uIGluY2x1ZGVzIGNvcHlpbmcsCitkaXN0cmlidXRpb24gKHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24pLCBtYWtpbmcgYXZhaWxhYmxlIHRvIHRoZQorcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLgorCisgIFRvICJjb252ZXkiIGEgd29yayBtZWFucyBhbnkga2luZCBvZiBwcm9wYWdhdGlvbiB0aGF0IGVuYWJsZXMgb3RoZXIKK3BhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaAorYSBjb21wdXRlciBuZXR3b3JrLCB3aXRoIG5vIHRyYW5zZmVyIG9mIGEgY29weSwgaXMgbm90IGNvbnZleWluZy4KKworICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyIKK3RvIHRoZSBleHRlbnQgdGhhdCBpdCBpbmNsdWRlcyBhIGNvbnZlbmllbnQgYW5kIHByb21pbmVudGx5IHZpc2libGUKK2ZlYXR1cmUgdGhhdCAoMSkgZGlzcGxheXMgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSwgYW5kICgyKQordGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0aGUKK2V4dGVudCB0aGF0IHdhcnJhbnRpZXMgYXJlIHByb3ZpZGVkKSwgdGhhdCBsaWNlbnNlZXMgbWF5IGNvbnZleSB0aGUKK3dvcmsgdW5kZXIgdGhpcyBMaWNlbnNlLCBhbmQgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIElmCit0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQorbWVudSwgYSBwcm9taW5lbnQgaXRlbSBpbiB0aGUgbGlzdCBtZWV0cyB0aGlzIGNyaXRlcmlvbi4KKworICAxLiBTb3VyY2UgQ29kZS4KKworICBUaGUgInNvdXJjZSBjb2RlIiBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yaworZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQorZm9ybSBvZiBhIHdvcmsuCisKKyAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwKK3N0YW5kYXJkIGRlZmluZWQgYnkgYSByZWNvZ25pemVkIHN0YW5kYXJkcyBib2R5LCBvciwgaW4gdGhlIGNhc2Ugb2YKK2ludGVyZmFjZXMgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3VsYXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIG9uZSB0aGF0CitpcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS4KKworICBUaGUgIlN5c3RlbSBMaWJyYXJpZXMiIG9mIGFuIGV4ZWN1dGFibGUgd29yayBpbmNsdWRlIGFueXRoaW5nLCBvdGhlcgordGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YKK3BhY2thZ2luZyBhIE1ham9yIENvbXBvbmVudCwgYnV0IHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoYXQgTWFqb3IKK0NvbXBvbmVudCwgYW5kIChiKSBzZXJ2ZXMgb25seSB0byBlbmFibGUgdXNlIG9mIHRoZSB3b3JrIHdpdGggdGhhdAorTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuCitpbXBsZW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgdG8gdGhlIHB1YmxpYyBpbiBzb3VyY2UgY29kZSBmb3JtLiAgQQorIk1ham9yIENvbXBvbmVudCIsIGluIHRoaXMgY29udGV4dCwgbWVhbnMgYSBtYWpvciBlc3NlbnRpYWwgY29tcG9uZW50Cisoa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtCisoaWYgYW55KSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSB3b3JrIHJ1bnMsIG9yIGEgY29tcGlsZXIgdXNlZCB0bworcHJvZHVjZSB0aGUgd29yaywgb3IgYW4gb2JqZWN0IGNvZGUgaW50ZXJwcmV0ZXIgdXNlZCB0byBydW4gaXQuCisKKyAgVGhlICJDb3JyZXNwb25kaW5nIFNvdXJjZSIgZm9yIGEgd29yayBpbiBvYmplY3QgY29kZSBmb3JtIG1lYW5zIGFsbAordGhlIHNvdXJjZSBjb2RlIG5lZWRlZCB0byBnZW5lcmF0ZSwgaW5zdGFsbCwgYW5kIChmb3IgYW4gZXhlY3V0YWJsZQord29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0cyB0bworY29udHJvbCB0aG9zZSBhY3Rpdml0aWVzLiAgSG93ZXZlciwgaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgd29yaydzCitTeXN0ZW0gTGlicmFyaWVzLCBvciBnZW5lcmFsLXB1cnBvc2UgdG9vbHMgb3IgZ2VuZXJhbGx5IGF2YWlsYWJsZSBmcmVlCitwcm9ncmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQKK3doaWNoIGFyZSBub3QgcGFydCBvZiB0aGUgd29yay4gIEZvciBleGFtcGxlLCBDb3JyZXNwb25kaW5nIFNvdXJjZQoraW5jbHVkZXMgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHNvdXJjZSBmaWxlcyBmb3IKK3RoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQorbGlua2VkIHN1YnByb2dyYW1zIHRoYXQgdGhlIHdvcmsgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHJlcXVpcmUsCitzdWNoIGFzIGJ5IGludGltYXRlIGRhdGEgY29tbXVuaWNhdGlvbiBvciBjb250cm9sIGZsb3cgYmV0d2VlbiB0aG9zZQorc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLgorCisgIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgdXNlcnMKK2NhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZworU291cmNlLgorCisgIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdAorc2FtZSB3b3JrLgorCisgIDIuIEJhc2ljIFBlcm1pc3Npb25zLgorCisgIEFsbCByaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UgYXJlIGdyYW50ZWQgZm9yIHRoZSB0ZXJtIG9mCitjb3B5cmlnaHQgb24gdGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZAorY29uZGl0aW9ucyBhcmUgbWV0LiAgVGhpcyBMaWNlbnNlIGV4cGxpY2l0bHkgYWZmaXJtcyB5b3VyIHVubGltaXRlZAorcGVybWlzc2lvbiB0byBydW4gdGhlIHVubW9kaWZpZWQgUHJvZ3JhbS4gIFRoZSBvdXRwdXQgZnJvbSBydW5uaW5nIGEKK2NvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cworY29udGVudCwgY29uc3RpdHV0ZXMgYSBjb3ZlcmVkIHdvcmsuICBUaGlzIExpY2Vuc2UgYWNrbm93bGVkZ2VzIHlvdXIKK3JpZ2h0cyBvZiBmYWlyIHVzZSBvciBvdGhlciBlcXVpdmFsZW50LCBhcyBwcm92aWRlZCBieSBjb3B5cmlnaHQgbGF3LgorCisgIFlvdSBtYXkgbWFrZSwgcnVuIGFuZCBwcm9wYWdhdGUgY292ZXJlZCB3b3JrcyB0aGF0IHlvdSBkbyBub3QKK2NvbnZleSwgd2l0aG91dCBjb25kaXRpb25zIHNvIGxvbmcgYXMgeW91ciBsaWNlbnNlIG90aGVyd2lzZSByZW1haW5zCitpbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlCitvZiBoYXZpbmcgdGhlbSBtYWtlIG1vZGlmaWNhdGlvbnMgZXhjbHVzaXZlbHkgZm9yIHlvdSwgb3IgcHJvdmlkZSB5b3UKK3dpdGggZmFjaWxpdGllcyBmb3IgcnVubmluZyB0aG9zZSB3b3JrcywgcHJvdmlkZWQgdGhhdCB5b3UgY29tcGx5IHdpdGgKK3RoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvCitub3QgY29udHJvbCBjb3B5cmlnaHQuICBUaG9zZSB0aHVzIG1ha2luZyBvciBydW5uaW5nIHRoZSBjb3ZlcmVkIHdvcmtzCitmb3IgeW91IG11c3QgZG8gc28gZXhjbHVzaXZlbHkgb24geW91ciBiZWhhbGYsIHVuZGVyIHlvdXIgZGlyZWN0aW9uCithbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YKK3lvdXIgY29weXJpZ2h0ZWQgbWF0ZXJpYWwgb3V0c2lkZSB0aGVpciByZWxhdGlvbnNoaXAgd2l0aCB5b3UuCisKKyAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXIKK3RoZSBjb25kaXRpb25zIHN0YXRlZCBiZWxvdy4gIFN1YmxpY2Vuc2luZyBpcyBub3QgYWxsb3dlZDsgc2VjdGlvbiAxMAorbWFrZXMgaXQgdW5uZWNlc3NhcnkuCisKKyAgMy4gUHJvdGVjdGluZyBVc2VycycgTGVnYWwgUmlnaHRzIEZyb20gQW50aS1DaXJjdW12ZW50aW9uIExhdy4KKworICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwKK21lYXN1cmUgdW5kZXIgYW55IGFwcGxpY2FibGUgbGF3IGZ1bGZpbGxpbmcgb2JsaWdhdGlvbnMgdW5kZXIgYXJ0aWNsZQorMTEgb2YgdGhlIFdJUE8gY29weXJpZ2h0IHRyZWF0eSBhZG9wdGVkIG9uIDIwIERlY2VtYmVyIDE5OTYsIG9yCitzaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoCittZWFzdXJlcy4KKworICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkCitjaXJjdW12ZW50aW9uIG9mIHRlY2hub2xvZ2ljYWwgbWVhc3VyZXMgdG8gdGhlIGV4dGVudCBzdWNoIGNpcmN1bXZlbnRpb24KK2lzIGVmZmVjdGVkIGJ5IGV4ZXJjaXNpbmcgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZSB3aXRoIHJlc3BlY3QgdG8KK3RoZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3IKK21vZGlmaWNhdGlvbiBvZiB0aGUgd29yayBhcyBhIG1lYW5zIG9mIGVuZm9yY2luZywgYWdhaW5zdCB0aGUgd29yaydzCit1c2VycywgeW91ciBvciB0aGlyZCBwYXJ0aWVzJyBsZWdhbCByaWdodHMgdG8gZm9yYmlkIGNpcmN1bXZlbnRpb24gb2YKK3RlY2hub2xvZ2ljYWwgbWVhc3VyZXMuCisKKyAgNC4gQ29udmV5aW5nIFZlcmJhdGltIENvcGllcy4KKworICBZb3UgbWF5IGNvbnZleSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncyBzb3VyY2UgY29kZSBhcyB5b3UKK3JlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91IGNvbnNwaWN1b3VzbHkgYW5kCithcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2U7CitrZWVwIGludGFjdCBhbGwgbm90aWNlcyBzdGF0aW5nIHRoYXQgdGhpcyBMaWNlbnNlIGFuZCBhbnkKK25vbi1wZXJtaXNzaXZlIHRlcm1zIGFkZGVkIGluIGFjY29yZCB3aXRoIHNlY3Rpb24gNyBhcHBseSB0byB0aGUgY29kZTsKK2tlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsCityZWNpcGllbnRzIGEgY29weSBvZiB0aGlzIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KKworICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252ZXksCithbmQgeW91IG1heSBvZmZlciBzdXBwb3J0IG9yIHdhcnJhbnR5IHByb3RlY3Rpb24gZm9yIGEgZmVlLgorCisgIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuCisKKyAgWW91IG1heSBjb252ZXkgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBvciB0aGUgbW9kaWZpY2F0aW9ucyB0bworcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUKK3Rlcm1zIG9mIHNlY3Rpb24gNCwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgorCisgICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkCisgICAgaXQsIGFuZCBnaXZpbmcgYSByZWxldmFudCBkYXRlLgorCisgICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMKKyAgICByZWxlYXNlZCB1bmRlciB0aGlzIExpY2Vuc2UgYW5kIGFueSBjb25kaXRpb25zIGFkZGVkIHVuZGVyIHNlY3Rpb24KKyAgICA3LiAgVGhpcyByZXF1aXJlbWVudCBtb2RpZmllcyB0aGUgcmVxdWlyZW1lbnQgaW4gc2VjdGlvbiA0IHRvCisgICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2VzIi4KKworICAgIGMpIFlvdSBtdXN0IGxpY2Vuc2UgdGhlIGVudGlyZSB3b3JrLCBhcyBhIHdob2xlLCB1bmRlciB0aGlzCisgICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzCisgICAgTGljZW5zZSB3aWxsIHRoZXJlZm9yZSBhcHBseSwgYWxvbmcgd2l0aCBhbnkgYXBwbGljYWJsZSBzZWN0aW9uIDcKKyAgICBhZGRpdGlvbmFsIHRlcm1zLCB0byB0aGUgd2hvbGUgb2YgdGhlIHdvcmssIGFuZCBhbGwgaXRzIHBhcnRzLAorICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVzIG5vCisgICAgcGVybWlzc2lvbiB0byBsaWNlbnNlIHRoZSB3b3JrIGluIGFueSBvdGhlciB3YXksIGJ1dCBpdCBkb2VzIG5vdAorICAgIGludmFsaWRhdGUgc3VjaCBwZXJtaXNzaW9uIGlmIHlvdSBoYXZlIHNlcGFyYXRlbHkgcmVjZWl2ZWQgaXQuCisKKyAgICBkKSBJZiB0aGUgd29yayBoYXMgaW50ZXJhY3RpdmUgdXNlciBpbnRlcmZhY2VzLCBlYWNoIG11c3QgZGlzcGxheQorICAgIEFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXM7IGhvd2V2ZXIsIGlmIHRoZSBQcm9ncmFtIGhhcyBpbnRlcmFjdGl2ZQorICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyCisgICAgd29yayBuZWVkIG5vdCBtYWtlIHRoZW0gZG8gc28uCisKKyAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudAord29ya3MsIHdoaWNoIGFyZSBub3QgYnkgdGhlaXIgbmF0dXJlIGV4dGVuc2lvbnMgb2YgdGhlIGNvdmVyZWQgd29yaywKK2FuZCB3aGljaCBhcmUgbm90IGNvbWJpbmVkIHdpdGggaXQgc3VjaCBhcyB0byBmb3JtIGEgbGFyZ2VyIHByb2dyYW0sCitpbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuCisiYWdncmVnYXRlIiBpZiB0aGUgY29tcGlsYXRpb24gYW5kIGl0cyByZXN1bHRpbmcgY29weXJpZ2h0IGFyZSBub3QKK3VzZWQgdG8gbGltaXQgdGhlIGFjY2VzcyBvciBsZWdhbCByaWdodHMgb2YgdGhlIGNvbXBpbGF0aW9uJ3MgdXNlcnMKK2JleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yaworaW4gYW4gYWdncmVnYXRlIGRvZXMgbm90IGNhdXNlIHRoaXMgTGljZW5zZSB0byBhcHBseSB0byB0aGUgb3RoZXIKK3BhcnRzIG9mIHRoZSBhZ2dyZWdhdGUuCisKKyAgNi4gQ29udmV5aW5nIE5vbi1Tb3VyY2UgRm9ybXMuCisKKyAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMKK29mIHNlY3Rpb25zIDQgYW5kIDUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gY29udmV5IHRoZQorbWFjaGluZS1yZWFkYWJsZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLAoraW4gb25lIG9mIHRoZXNlIHdheXM6CisKKyAgICBhKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0CisgICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUKKyAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBmaXhlZCBvbiBhIGR1cmFibGUgcGh5c2ljYWwgbWVkaXVtCisgICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UuCisKKyAgICBiKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0CisgICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSBhCisgICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFuZCB2YWxpZCBmb3IgYXMKKyAgICBsb25nIGFzIHlvdSBvZmZlciBzcGFyZSBwYXJ0cyBvciBjdXN0b21lciBzdXBwb3J0IGZvciB0aGF0IHByb2R1Y3QKKyAgICBtb2RlbCwgdG8gZ2l2ZSBhbnlvbmUgd2hvIHBvc3Nlc3NlcyB0aGUgb2JqZWN0IGNvZGUgZWl0aGVyICgxKSBhCisgICAgY29weSBvZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlCisgICAgcHJvZHVjdCB0aGF0IGlzIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLCBvbiBhIGR1cmFibGUgcGh5c2ljYWwKKyAgICBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UsIGZvciBhIHByaWNlIG5vCisgICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzCisgICAgY29udmV5aW5nIG9mIHNvdXJjZSwgb3IgKDIpIGFjY2VzcyB0byBjb3B5IHRoZQorICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZyb20gYSBuZXR3b3JrIHNlcnZlciBhdCBubyBjaGFyZ2UuCisKKyAgICBjKSBDb252ZXkgaW5kaXZpZHVhbCBjb3BpZXMgb2YgdGhlIG9iamVjdCBjb2RlIHdpdGggYSBjb3B5IG9mIHRoZQorICAgIHdyaXR0ZW4gb2ZmZXIgdG8gcHJvdmlkZSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBUaGlzCisgICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQKKyAgICBvbmx5IGlmIHlvdSByZWNlaXZlZCB0aGUgb2JqZWN0IGNvZGUgd2l0aCBzdWNoIGFuIG9mZmVyLCBpbiBhY2NvcmQKKyAgICB3aXRoIHN1YnNlY3Rpb24gNmIuCisKKyAgICBkKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGJ5IG9mZmVyaW5nIGFjY2VzcyBmcm9tIGEgZGVzaWduYXRlZAorICAgIHBsYWNlIChncmF0aXMgb3IgZm9yIGEgY2hhcmdlKSwgYW5kIG9mZmVyIGVxdWl2YWxlbnQgYWNjZXNzIHRvIHRoZQorICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vCisgICAgZnVydGhlciBjaGFyZ2UuICBZb3UgbmVlZCBub3QgcmVxdWlyZSByZWNpcGllbnRzIHRvIGNvcHkgdGhlCisgICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuICBJZiB0aGUgcGxhY2UgdG8KKyAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UKKyAgICBtYXkgYmUgb24gYSBkaWZmZXJlbnQgc2VydmVyIChvcGVyYXRlZCBieSB5b3Ugb3IgYSB0aGlyZCBwYXJ0eSkKKyAgICB0aGF0IHN1cHBvcnRzIGVxdWl2YWxlbnQgY29weWluZyBmYWNpbGl0aWVzLCBwcm92aWRlZCB5b3UgbWFpbnRhaW4KKyAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQorICAgIENvcnJlc3BvbmRpbmcgU291cmNlLiAgUmVnYXJkbGVzcyBvZiB3aGF0IHNlcnZlciBob3N0cyB0aGUKKyAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSwgeW91IHJlbWFpbiBvYmxpZ2F0ZWQgdG8gZW5zdXJlIHRoYXQgaXQgaXMKKyAgICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLgorCisgICAgZSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uLCBwcm92aWRlZAorICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nCisgICAgU291cmNlIG9mIHRoZSB3b3JrIGFyZSBiZWluZyBvZmZlcmVkIHRvIHRoZSBnZW5lcmFsIHB1YmxpYyBhdCBubworICAgIGNoYXJnZSB1bmRlciBzdWJzZWN0aW9uIDZkLgorCisgIEEgc2VwYXJhYmxlIHBvcnRpb24gb2YgdGhlIG9iamVjdCBjb2RlLCB3aG9zZSBzb3VyY2UgY29kZSBpcyBleGNsdWRlZAorZnJvbSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgYXMgYSBTeXN0ZW0gTGlicmFyeSwgbmVlZCBub3QgYmUKK2luY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4KKworICBBICJVc2VyIFByb2R1Y3QiIGlzIGVpdGhlciAoMSkgYSAiY29uc3VtZXIgcHJvZHVjdCIsIHdoaWNoIG1lYW5zIGFueQordGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwKK29yIGhvdXNlaG9sZCBwdXJwb3Nlcywgb3IgKDIpIGFueXRoaW5nIGRlc2lnbmVkIG9yIHNvbGQgZm9yIGluY29ycG9yYXRpb24KK2ludG8gYSBkd2VsbGluZy4gIEluIGRldGVybWluaW5nIHdoZXRoZXIgYSBwcm9kdWN0IGlzIGEgY29uc3VtZXIgcHJvZHVjdCwKK2RvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcgorcHJvZHVjdCByZWNlaXZlZCBieSBhIHBhcnRpY3VsYXIgdXNlciwgIm5vcm1hbGx5IHVzZWQiIHJlZmVycyB0byBhCit0eXBpY2FsIG9yIGNvbW1vbiB1c2Ugb2YgdGhhdCBjbGFzcyBvZiBwcm9kdWN0LCByZWdhcmRsZXNzIG9mIHRoZSBzdGF0dXMKK29mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyCithY3R1YWxseSB1c2VzLCBvciBleHBlY3RzIG9yIGlzIGV4cGVjdGVkIHRvIHVzZSwgdGhlIHByb2R1Y3QuICBBIHByb2R1Y3QKK2lzIGEgY29uc3VtZXIgcHJvZHVjdCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHByb2R1Y3QgaGFzIHN1YnN0YW50aWFsCitjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudAordGhlIG9ubHkgc2lnbmlmaWNhbnQgbW9kZSBvZiB1c2Ugb2YgdGhlIHByb2R1Y3QuCisKKyAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2RzLAorcHJvY2VkdXJlcywgYXV0aG9yaXphdGlvbiBrZXlzLCBvciBvdGhlciBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBpbnN0YWxsCithbmQgZXhlY3V0ZSBtb2RpZmllZCB2ZXJzaW9ucyBvZiBhIGNvdmVyZWQgd29yayBpbiB0aGF0IFVzZXIgUHJvZHVjdCBmcm9tCithIG1vZGlmaWVkIHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QKK3N1ZmZpY2UgdG8gZW5zdXJlIHRoYXQgdGhlIGNvbnRpbnVlZCBmdW5jdGlvbmluZyBvZiB0aGUgbW9kaWZpZWQgb2JqZWN0Citjb2RlIGlzIGluIG5vIGNhc2UgcHJldmVudGVkIG9yIGludGVyZmVyZWQgd2l0aCBzb2xlbHkgYmVjYXVzZQorbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuCisKKyAgSWYgeW91IGNvbnZleSBhbiBvYmplY3QgY29kZSB3b3JrIHVuZGVyIHRoaXMgc2VjdGlvbiBpbiwgb3Igd2l0aCwgb3IKK3NwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwgYW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzCitwYXJ0IG9mIGEgdHJhbnNhY3Rpb24gaW4gd2hpY2ggdGhlIHJpZ2h0IG9mIHBvc3Nlc3Npb24gYW5kIHVzZSBvZiB0aGUKK1VzZXIgUHJvZHVjdCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgcmVjaXBpZW50IGluIHBlcnBldHVpdHkgb3IgZm9yIGEKK2ZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJpemVkKSwgdGhlCitDb3JyZXNwb25kaW5nIFNvdXJjZSBjb252ZXllZCB1bmRlciB0aGlzIHNlY3Rpb24gbXVzdCBiZSBhY2NvbXBhbmllZAorYnkgdGhlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbi4gIEJ1dCB0aGlzIHJlcXVpcmVtZW50IGRvZXMgbm90IGFwcGx5CitpZiBuZWl0aGVyIHlvdSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbAorbW9kaWZpZWQgb2JqZWN0IGNvZGUgb24gdGhlIFVzZXIgUHJvZHVjdCAoZm9yIGV4YW1wbGUsIHRoZSB3b3JrIGhhcworYmVlbiBpbnN0YWxsZWQgaW4gUk9NKS4KKworICBUaGUgcmVxdWlyZW1lbnQgdG8gcHJvdmlkZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24gZG9lcyBub3QgaW5jbHVkZSBhCityZXF1aXJlbWVudCB0byBjb250aW51ZSB0byBwcm92aWRlIHN1cHBvcnQgc2VydmljZSwgd2FycmFudHksIG9yIHVwZGF0ZXMKK2ZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yCit0aGUgVXNlciBQcm9kdWN0IGluIHdoaWNoIGl0IGhhcyBiZWVuIG1vZGlmaWVkIG9yIGluc3RhbGxlZC4gIEFjY2VzcyB0byBhCituZXR3b3JrIG1heSBiZSBkZW5pZWQgd2hlbiB0aGUgbW9kaWZpY2F0aW9uIGl0c2VsZiBtYXRlcmlhbGx5IGFuZAorYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kCitwcm90b2NvbHMgZm9yIGNvbW11bmljYXRpb24gYWNyb3NzIHRoZSBuZXR3b3JrLgorCisgIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLAoraW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uIG11c3QgYmUgaW4gYSBmb3JtYXQgdGhhdCBpcyBwdWJsaWNseQorZG9jdW1lbnRlZCAoYW5kIHdpdGggYW4gaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIHRvIHRoZSBwdWJsaWMgaW4KK3NvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcgordW5wYWNraW5nLCByZWFkaW5nIG9yIGNvcHlpbmcuCisKKyAgNy4gQWRkaXRpb25hbCBUZXJtcy4KKworICAiQWRkaXRpb25hbCBwZXJtaXNzaW9ucyIgYXJlIHRlcm1zIHRoYXQgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhpcworTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLgorQWRkaXRpb25hbCBwZXJtaXNzaW9ucyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBlbnRpcmUgUHJvZ3JhbSBzaGFsbAorYmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlIGluY2x1ZGVkIGluIHRoaXMgTGljZW5zZSwgdG8gdGhlIGV4dGVudAordGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMKK2FwcGx5IG9ubHkgdG8gcGFydCBvZiB0aGUgUHJvZ3JhbSwgdGhhdCBwYXJ0IG1heSBiZSB1c2VkIHNlcGFyYXRlbHkKK3VuZGVyIHRob3NlIHBlcm1pc3Npb25zLCBidXQgdGhlIGVudGlyZSBQcm9ncmFtIHJlbWFpbnMgZ292ZXJuZWQgYnkKK3RoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucy4KKworICBXaGVuIHlvdSBjb252ZXkgYSBjb3B5IG9mIGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uCityZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YKK2l0LiAgKEFkZGl0aW9uYWwgcGVybWlzc2lvbnMgbWF5IGJlIHdyaXR0ZW4gdG8gcmVxdWlyZSB0aGVpciBvd24KK3JlbW92YWwgaW4gY2VydGFpbiBjYXNlcyB3aGVuIHlvdSBtb2RpZnkgdGhlIHdvcmsuKSAgWW91IG1heSBwbGFjZQorYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLAorZm9yIHdoaWNoIHlvdSBoYXZlIG9yIGNhbiBnaXZlIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBwZXJtaXNzaW9uLgorCisgIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQorYWRkIHRvIGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IChpZiBhdXRob3JpemVkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVycyBvZgordGhhdCBtYXRlcmlhbCkgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIHdpdGggdGVybXM6CisKKyAgICBhKSBEaXNjbGFpbWluZyB3YXJyYW50eSBvciBsaW1pdGluZyBsaWFiaWxpdHkgZGlmZmVyZW50bHkgZnJvbSB0aGUKKyAgICB0ZXJtcyBvZiBzZWN0aW9ucyAxNSBhbmQgMTYgb2YgdGhpcyBMaWNlbnNlOyBvcgorCisgICAgYikgUmVxdWlyaW5nIHByZXNlcnZhdGlvbiBvZiBzcGVjaWZpZWQgcmVhc29uYWJsZSBsZWdhbCBub3RpY2VzIG9yCisgICAgYXV0aG9yIGF0dHJpYnV0aW9ucyBpbiB0aGF0IG1hdGVyaWFsIG9yIGluIHRoZSBBcHByb3ByaWF0ZSBMZWdhbAorICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7IG9yCisKKyAgICBjKSBQcm9oaWJpdGluZyBtaXNyZXByZXNlbnRhdGlvbiBvZiB0aGUgb3JpZ2luIG9mIHRoYXQgbWF0ZXJpYWwsIG9yCisgICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4KKyAgICByZWFzb25hYmxlIHdheXMgYXMgZGlmZmVyZW50IGZyb20gdGhlIG9yaWdpbmFsIHZlcnNpb247IG9yCisKKyAgICBkKSBMaW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5zb3JzIG9yCisgICAgYXV0aG9ycyBvZiB0aGUgbWF0ZXJpYWw7IG9yCisKKyAgICBlKSBEZWNsaW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lCisgICAgdHJhZGUgbmFtZXMsIHRyYWRlbWFya3MsIG9yIHNlcnZpY2UgbWFya3M7IG9yCisKKyAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0aGF0CisgICAgbWF0ZXJpYWwgYnkgYW55b25lIHdobyBjb252ZXlzIHRoZSBtYXRlcmlhbCAob3IgbW9kaWZpZWQgdmVyc2lvbnMgb2YKKyAgICBpdCkgd2l0aCBjb250cmFjdHVhbCBhc3N1bXB0aW9ucyBvZiBsaWFiaWxpdHkgdG8gdGhlIHJlY2lwaWVudCwgZm9yCisgICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbgorICAgIHRob3NlIGxpY2Vuc29ycyBhbmQgYXV0aG9ycy4KKworICBBbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcgorcmVzdHJpY3Rpb25zIiB3aXRoaW4gdGhlIG1lYW5pbmcgb2Ygc2VjdGlvbiAxMC4gIElmIHRoZSBQcm9ncmFtIGFzIHlvdQorcmVjZWl2ZWQgaXQsIG9yIGFueSBwYXJ0IG9mIGl0LCBjb250YWlucyBhIG5vdGljZSBzdGF0aW5nIHRoYXQgaXQgaXMKK2dvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcgorcmVzdHJpY3Rpb24sIHlvdSBtYXkgcmVtb3ZlIHRoYXQgdGVybS4gIElmIGEgbGljZW5zZSBkb2N1bWVudCBjb250YWlucworYSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGJ1dCBwZXJtaXRzIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZyB1bmRlciB0aGlzCitMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMKK29mIHRoYXQgbGljZW5zZSBkb2N1bWVudCwgcHJvdmlkZWQgdGhhdCB0aGUgZnVydGhlciByZXN0cmljdGlvbiBkb2VzCitub3Qgc3Vydml2ZSBzdWNoIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZy4KKworICBJZiB5b3UgYWRkIHRlcm1zIHRvIGEgY292ZXJlZCB3b3JrIGluIGFjY29yZCB3aXRoIHRoaXMgc2VjdGlvbiwgeW91CittdXN0IHBsYWNlLCBpbiB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzLCBhIHN0YXRlbWVudCBvZiB0aGUKK2FkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZword2hlcmUgdG8gZmluZCB0aGUgYXBwbGljYWJsZSB0ZXJtcy4KKworICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQorZm9ybSBvZiBhIHNlcGFyYXRlbHkgd3JpdHRlbiBsaWNlbnNlLCBvciBzdGF0ZWQgYXMgZXhjZXB0aW9uczsKK3RoZSBhYm92ZSByZXF1aXJlbWVudHMgYXBwbHkgZWl0aGVyIHdheS4KKworICA4LiBUZXJtaW5hdGlvbi4KKworICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkKK3Byb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEFueSBhdHRlbXB0IG90aGVyd2lzZSB0byBwcm9wYWdhdGUgb3IKK21vZGlmeSBpdCBpcyB2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlcgordGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZAorcGFyYWdyYXBoIG9mIHNlY3Rpb24gMTEpLgorCisgIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyCitsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMgcmVpbnN0YXRlZCAoYSkKK3Byb3Zpc2lvbmFsbHksIHVubGVzcyBhbmQgdW50aWwgdGhlIGNvcHlyaWdodCBob2xkZXIgZXhwbGljaXRseSBhbmQKK2ZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQKK2hvbGRlciBmYWlscyB0byBub3RpZnkgeW91IG9mIHRoZSB2aW9sYXRpb24gYnkgc29tZSByZWFzb25hYmxlIG1lYW5zCitwcmlvciB0byA2MCBkYXlzIGFmdGVyIHRoZSBjZXNzYXRpb24uCisKKyAgTW9yZW92ZXIsIHlvdXIgbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzCityZWluc3RhdGVkIHBlcm1hbmVudGx5IGlmIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vdGlmaWVzIHlvdSBvZiB0aGUKK3Zpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUKK3JlY2VpdmVkIG5vdGljZSBvZiB2aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlIChmb3IgYW55IHdvcmspIGZyb20gdGhhdAorY29weXJpZ2h0IGhvbGRlciwgYW5kIHlvdSBjdXJlIHRoZSB2aW9sYXRpb24gcHJpb3IgdG8gMzAgZGF5cyBhZnRlcgoreW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuCisKKyAgVGVybWluYXRpb24gb2YgeW91ciByaWdodHMgdW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUKK2xpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcgordGhpcyBMaWNlbnNlLiAgSWYgeW91ciByaWdodHMgaGF2ZSBiZWVuIHRlcm1pbmF0ZWQgYW5kIG5vdCBwZXJtYW5lbnRseQorcmVpbnN0YXRlZCwgeW91IGRvIG5vdCBxdWFsaWZ5IHRvIHJlY2VpdmUgbmV3IGxpY2Vuc2VzIGZvciB0aGUgc2FtZQorbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4KKworICA5LiBBY2NlcHRhbmNlIE5vdCBSZXF1aXJlZCBmb3IgSGF2aW5nIENvcGllcy4KKworICBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlIGluIG9yZGVyIHRvIHJlY2VpdmUgb3IKK3J1biBhIGNvcHkgb2YgdGhlIFByb2dyYW0uICBBbmNpbGxhcnkgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkIHdvcmsKK29jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uCit0byByZWNlaXZlIGEgY29weSBsaWtld2lzZSBkb2VzIG5vdCByZXF1aXJlIGFjY2VwdGFuY2UuICBIb3dldmVyLAorbm90aGluZyBvdGhlciB0aGFuIHRoaXMgTGljZW5zZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gcHJvcGFnYXRlIG9yCittb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJpZ2h0IGlmIHlvdSBkbworbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5IG1vZGlmeWluZyBvciBwcm9wYWdhdGluZyBhCitjb3ZlcmVkIHdvcmssIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLgorCisgIDEwLiBBdXRvbWF0aWMgTGljZW5zaW5nIG9mIERvd25zdHJlYW0gUmVjaXBpZW50cy4KKworICBFYWNoIHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5CityZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUgb3JpZ2luYWwgbGljZW5zb3JzLCB0byBydW4sIG1vZGlmeSBhbmQKK3Byb3BhZ2F0ZSB0aGF0IHdvcmssIHN1YmplY3QgdG8gdGhpcyBMaWNlbnNlLiAgWW91IGFyZSBub3QgcmVzcG9uc2libGUKK2ZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLgorCisgIEFuICJlbnRpdHkgdHJhbnNhY3Rpb24iIGlzIGEgdHJhbnNhY3Rpb24gdHJhbnNmZXJyaW5nIGNvbnRyb2wgb2YgYW4KK29yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4KK29yZ2FuaXphdGlvbiwgb3IgbWVyZ2luZyBvcmdhbml6YXRpb25zLiAgSWYgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkCit3b3JrIHJlc3VsdHMgZnJvbSBhbiBlbnRpdHkgdHJhbnNhY3Rpb24sIGVhY2ggcGFydHkgdG8gdGhhdAordHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyCitsaWNlbnNlcyB0byB0aGUgd29yayB0aGUgcGFydHkncyBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCBoYWQgb3IgY291bGQKK2dpdmUgdW5kZXIgdGhlIHByZXZpb3VzIHBhcmFncmFwaCwgcGx1cyBhIHJpZ2h0IHRvIHBvc3Nlc3Npb24gb2YgdGhlCitDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYKK3RoZSBwcmVkZWNlc3NvciBoYXMgaXQgb3IgY2FuIGdldCBpdCB3aXRoIHJlYXNvbmFibGUgZWZmb3J0cy4KKworICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUKK3JpZ2h0cyBncmFudGVkIG9yIGFmZmlybWVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEZvciBleGFtcGxlLCB5b3UgbWF5Citub3QgaW1wb3NlIGEgbGljZW5zZSBmZWUsIHJveWFsdHksIG9yIG90aGVyIGNoYXJnZSBmb3IgZXhlcmNpc2Ugb2YKK3JpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24KKyhpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0CithbnkgcGF0ZW50IGNsYWltIGlzIGluZnJpbmdlZCBieSBtYWtpbmcsIHVzaW5nLCBzZWxsaW5nLCBvZmZlcmluZyBmb3IKK3NhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC4KKworICAxMS4gUGF0ZW50cy4KKworICBBICJjb250cmlidXRvciIgaXMgYSBjb3B5cmlnaHQgaG9sZGVyIHdobyBhdXRob3JpemVzIHVzZSB1bmRlciB0aGlzCitMaWNlbnNlIG9mIHRoZSBQcm9ncmFtIG9yIGEgd29yayBvbiB3aGljaCB0aGUgUHJvZ3JhbSBpcyBiYXNlZC4gIFRoZQord29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuCisKKyAgQSBjb250cmlidXRvcidzICJlc3NlbnRpYWwgcGF0ZW50IGNsYWltcyIgYXJlIGFsbCBwYXRlbnQgY2xhaW1zCitvd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yCitoZXJlYWZ0ZXIgYWNxdWlyZWQsIHRoYXQgd291bGQgYmUgaW5mcmluZ2VkIGJ5IHNvbWUgbWFubmVyLCBwZXJtaXR0ZWQKK2J5IHRoaXMgTGljZW5zZSwgb2YgbWFraW5nLCB1c2luZywgb3Igc2VsbGluZyBpdHMgY29udHJpYnV0b3IgdmVyc2lvbiwKK2J1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhCitjb25zZXF1ZW5jZSBvZiBmdXJ0aGVyIG1vZGlmaWNhdGlvbiBvZiB0aGUgY29udHJpYnV0b3IgdmVyc2lvbi4gIEZvcgorcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAiY29udHJvbCIgaW5jbHVkZXMgdGhlIHJpZ2h0IHRvIGdyYW50CitwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YKK3RoaXMgTGljZW5zZS4KKworICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQorcGF0ZW50IGxpY2Vuc2UgdW5kZXIgdGhlIGNvbnRyaWJ1dG9yJ3MgZXNzZW50aWFsIHBhdGVudCBjbGFpbXMsIHRvCittYWtlLCB1c2UsIHNlbGwsIG9mZmVyIGZvciBzYWxlLCBpbXBvcnQgYW5kIG90aGVyd2lzZSBydW4sIG1vZGlmeSBhbmQKK3Byb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uCisKKyAgSW4gdGhlIGZvbGxvd2luZyB0aHJlZSBwYXJhZ3JhcGhzLCBhICJwYXRlbnQgbGljZW5zZSIgaXMgYW55IGV4cHJlc3MKK2FncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudAorKHN1Y2ggYXMgYW4gZXhwcmVzcyBwZXJtaXNzaW9uIHRvIHByYWN0aWNlIGEgcGF0ZW50IG9yIGNvdmVuYW50IG5vdCB0bworc3VlIGZvciBwYXRlbnQgaW5mcmluZ2VtZW50KS4gIFRvICJncmFudCIgc3VjaCBhIHBhdGVudCBsaWNlbnNlIHRvIGEKK3BhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhCitwYXRlbnQgYWdhaW5zdCB0aGUgcGFydHkuCisKKyAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5zZSwKK2FuZCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2Ugb2YgdGhlIHdvcmsgaXMgbm90IGF2YWlsYWJsZSBmb3IgYW55b25lCit0byBjb3B5LCBmcmVlIG9mIGNoYXJnZSBhbmQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwgdGhyb3VnaCBhCitwdWJsaWNseSBhdmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLAordGhlbiB5b3UgbXVzdCBlaXRoZXIgKDEpIGNhdXNlIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB0byBiZSBzbworYXZhaWxhYmxlLCBvciAoMikgYXJyYW5nZSB0byBkZXByaXZlIHlvdXJzZWxmIG9mIHRoZSBiZW5lZml0IG9mIHRoZQorcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXIKK2NvbnNpc3RlbnQgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoaXMgTGljZW5zZSwgdG8gZXh0ZW5kIHRoZSBwYXRlbnQKK2xpY2Vuc2UgdG8gZG93bnN0cmVhbSByZWNpcGllbnRzLiAgIktub3dpbmdseSByZWx5aW5nIiBtZWFucyB5b3UgaGF2ZQorYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlCitjb3ZlcmVkIHdvcmsgaW4gYSBjb3VudHJ5LCBvciB5b3VyIHJlY2lwaWVudCdzIHVzZSBvZiB0aGUgY292ZXJlZCB3b3JrCitpbiBhIGNvdW50cnksIHdvdWxkIGluZnJpbmdlIG9uZSBvciBtb3JlIGlkZW50aWZpYWJsZSBwYXRlbnRzIGluIHRoYXQKK2NvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuCisKKyAgSWYsIHB1cnN1YW50IHRvIG9yIGluIGNvbm5lY3Rpb24gd2l0aCBhIHNpbmdsZSB0cmFuc2FjdGlvbiBvcgorYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQorY292ZXJlZCB3b3JrLCBhbmQgZ3JhbnQgYSBwYXRlbnQgbGljZW5zZSB0byBzb21lIG9mIHRoZSBwYXJ0aWVzCityZWNlaXZpbmcgdGhlIGNvdmVyZWQgd29yayBhdXRob3JpemluZyB0aGVtIHRvIHVzZSwgcHJvcGFnYXRlLCBtb2RpZnkKK29yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UKK3lvdSBncmFudCBpcyBhdXRvbWF0aWNhbGx5IGV4dGVuZGVkIHRvIGFsbCByZWNpcGllbnRzIG9mIHRoZSBjb3ZlcmVkCit3b3JrIGFuZCB3b3JrcyBiYXNlZCBvbiBpdC4KKworICBBIHBhdGVudCBsaWNlbnNlIGlzICJkaXNjcmltaW5hdG9yeSIgaWYgaXQgZG9lcyBub3QgaW5jbHVkZSB3aXRoaW4KK3RoZSBzY29wZSBvZiBpdHMgY292ZXJhZ2UsIHByb2hpYml0cyB0aGUgZXhlcmNpc2Ugb2YsIG9yIGlzCitjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUKK3NwZWNpZmljYWxseSBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIFlvdSBtYXkgbm90IGNvbnZleSBhIGNvdmVyZWQKK3dvcmsgaWYgeW91IGFyZSBhIHBhcnR5IHRvIGFuIGFycmFuZ2VtZW50IHdpdGggYSB0aGlyZCBwYXJ0eSB0aGF0IGlzCitpbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50Cit0byB0aGUgdGhpcmQgcGFydHkgYmFzZWQgb24gdGhlIGV4dGVudCBvZiB5b3VyIGFjdGl2aXR5IG9mIGNvbnZleWluZwordGhlIHdvcmssIGFuZCB1bmRlciB3aGljaCB0aGUgdGhpcmQgcGFydHkgZ3JhbnRzLCB0byBhbnkgb2YgdGhlCitwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkKK3BhdGVudCBsaWNlbnNlIChhKSBpbiBjb25uZWN0aW9uIHdpdGggY29waWVzIG9mIHRoZSBjb3ZlcmVkIHdvcmsKK2NvbnZleWVkIGJ5IHlvdSAob3IgY29waWVzIG1hZGUgZnJvbSB0aG9zZSBjb3BpZXMpLCBvciAoYikgcHJpbWFyaWx5Citmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdAorY29udGFpbiB0aGUgY292ZXJlZCB3b3JrLCB1bmxlc3MgeW91IGVudGVyZWQgaW50byB0aGF0IGFycmFuZ2VtZW50LAorb3IgdGhhdCBwYXRlbnQgbGljZW5zZSB3YXMgZ3JhbnRlZCwgcHJpb3IgdG8gMjggTWFyY2ggMjAwNy4KKworICBOb3RoaW5nIGluIHRoaXMgTGljZW5zZSBzaGFsbCBiZSBjb25zdHJ1ZWQgYXMgZXhjbHVkaW5nIG9yIGxpbWl0aW5nCithbnkgaW1wbGllZCBsaWNlbnNlIG9yIG90aGVyIGRlZmVuc2VzIHRvIGluZnJpbmdlbWVudCB0aGF0IG1heQorb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3LgorCisgIDEyLiBObyBTdXJyZW5kZXIgb2YgT3RoZXJzJyBGcmVlZG9tLgorCisgIElmIGNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKK290aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QKK2V4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhCitjb3ZlcmVkIHdvcmsgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMKK0xpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UgbWF5Citub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UKK3RvIGNvbGxlY3QgYSByb3lhbHR5IGZvciBmdXJ0aGVyIGNvbnZleWluZyBmcm9tIHRob3NlIHRvIHdob20geW91IGNvbnZleQordGhlIFByb2dyYW0sIHRoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0aXNmeSBib3RoIHRob3NlIHRlcm1zIGFuZCB0aGlzCitMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uCisKKyAgMTMuIFVzZSB3aXRoIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisKKyAgTm90d2l0aHN0YW5kaW5nIGFueSBvdGhlciBwcm92aXNpb24gb2YgdGhpcyBMaWNlbnNlLCB5b3UgaGF2ZQorcGVybWlzc2lvbiB0byBsaW5rIG9yIGNvbWJpbmUgYW55IGNvdmVyZWQgd29yayB3aXRoIGEgd29yayBsaWNlbnNlZAordW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNpbmdsZQorY29tYmluZWQgd29yaywgYW5kIHRvIGNvbnZleSB0aGUgcmVzdWx0aW5nIHdvcmsuICBUaGUgdGVybXMgb2YgdGhpcworTGljZW5zZSB3aWxsIGNvbnRpbnVlIHRvIGFwcGx5IHRvIHRoZSBwYXJ0IHdoaWNoIGlzIHRoZSBjb3ZlcmVkIHdvcmssCitidXQgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCitzZWN0aW9uIDEzLCBjb25jZXJuaW5nIGludGVyYWN0aW9uIHRocm91Z2ggYSBuZXR3b3JrIHdpbGwgYXBwbHkgdG8gdGhlCitjb21iaW5hdGlvbiBhcyBzdWNoLgorCisgIDE0LiBSZXZpc2VkIFZlcnNpb25zIG9mIHRoaXMgTGljZW5zZS4KKworICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZgordGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbAorYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvCithZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KKworICBFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZQorUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwKK1B1YmxpYyBMaWNlbnNlICJvciBhbnkgbGF0ZXIgdmVyc2lvbiIgYXBwbGllcyB0byBpdCwgeW91IGhhdmUgdGhlCitvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBlaXRoZXIgb2YgdGhhdCBudW1iZXJlZAordmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKK0ZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YgdGhlCitHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQKK2J5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisKKyAgSWYgdGhlIFByb2dyYW0gc3BlY2lmaWVzIHRoYXQgYSBwcm94eSBjYW4gZGVjaWRlIHdoaWNoIGZ1dHVyZQordmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MKK3B1YmxpYyBzdGF0ZW1lbnQgb2YgYWNjZXB0YW5jZSBvZiBhIHZlcnNpb24gcGVybWFuZW50bHkgYXV0aG9yaXplcyB5b3UKK3RvIGNob29zZSB0aGF0IHZlcnNpb24gZm9yIHRoZSBQcm9ncmFtLgorCisgIExhdGVyIGxpY2Vuc2UgdmVyc2lvbnMgbWF5IGdpdmUgeW91IGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50CitwZXJtaXNzaW9ucy4gIEhvd2V2ZXIsIG5vIGFkZGl0aW9uYWwgb2JsaWdhdGlvbnMgYXJlIGltcG9zZWQgb24gYW55CithdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhCitsYXRlciB2ZXJzaW9uLgorCisgIDE1LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LgorCisgIFRIRVJFIElTIE5PIFdBUlJBTlRZIEZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkKK0FQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQKK0hPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMgUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkKK09GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VEIE9SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUyBUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0KK0lTIFdJVEggWU9VLiAgU0hPVUxEIFRIRSBQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRgorQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgorCisgIDE2LiBMaW1pdGF0aW9uIG9mIExpYWJpbGl0eS4KKworICBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcKK1dJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTU9ESUZJRVMgQU5EL09SIENPTlZFWVMKK1RIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWQorR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgVEhFCitVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBMT1NTIE9GCitEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRAorUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUiBQUk9HUkFNUyksCitFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCitTVUNIIERBTUFHRVMuCisKKyAgMTcuIEludGVycHJldGF0aW9uIG9mIFNlY3Rpb25zIDE1IGFuZCAxNi4KKworICBJZiB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50eSBhbmQgbGltaXRhdGlvbiBvZiBsaWFiaWxpdHkgcHJvdmlkZWQKK2Fib3ZlIGNhbm5vdCBiZSBnaXZlbiBsb2NhbCBsZWdhbCBlZmZlY3QgYWNjb3JkaW5nIHRvIHRoZWlyIHRlcm1zLAorcmV2aWV3aW5nIGNvdXJ0cyBzaGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzCithbiBhYnNvbHV0ZSB3YWl2ZXIgb2YgYWxsIGNpdmlsIGxpYWJpbGl0eSBpbiBjb25uZWN0aW9uIHdpdGggdGhlCitQcm9ncmFtLCB1bmxlc3MgYSB3YXJyYW50eSBvciBhc3N1bXB0aW9uIG9mIGxpYWJpbGl0eSBhY2NvbXBhbmllcyBhCitjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUuCisKKyAgICAgICAgICAgICAgICAgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUworCitBVVRPQ09ORiBDT05GSUdVUkUgU0NSSVBUIEVYQ0VQVElPTgorCitWZXJzaW9uIDMuMCwgMTggQXVndXN0IDIwMDkKKworQ29weXJpZ2h0IMKpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuIDxodHRwOi8vZnNmLm9yZy8+CisKK0V2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGlzIGxpY2Vuc2UKK2RvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCisKK1RoaXMgRXhjZXB0aW9uIGlzIGFuIGFkZGl0aW9uYWwgcGVybWlzc2lvbiB1bmRlciBzZWN0aW9uIDcgb2YgdGhlIEdOVSBHZW5lcmFsCitQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAzICgiR1BMdjMiKS4gSXQgYXBwbGllcyB0byBhIGdpdmVuIGZpbGUgdGhhdCBiZWFycyBhCitub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVyIG9mIHRoZSBmaWxlIHN0YXRpbmcgdGhhdCB0aGUgZmlsZSBpcworZ292ZXJuZWQgYnkgR1BMdjMgYWxvbmcgd2l0aCB0aGlzIEV4Y2VwdGlvbi4KKworVGhlIHB1cnBvc2Ugb2YgdGhpcyBFeGNlcHRpb24gaXMgdG8gYWxsb3cgZGlzdHJpYnV0aW9uIG9mIEF1dG9jb25mJmFwb3M7cwordHlwaWNhbCBvdXRwdXQgdW5kZXIgdGVybXMgb2YgdGhlIHJlY2lwaWVudCZhcG9zO3MgY2hvaWNlIChpbmNsdWRpbmcKK3Byb3ByaWV0YXJ5KS4KKworMC4gRGVmaW5pdGlvbnMuICAgCisiQ292ZXJlZCBDb2RlIiBpcyB0aGUgc291cmNlIG9yIG9iamVjdCBjb2RlIG9mIGEgdmVyc2lvbiBvZiBBdXRvY29uZiB0aGF0IGlzIGEKK2NvdmVyZWQgd29yayB1bmRlciB0aGlzIExpY2Vuc2UuCisKKyJOb3JtYWxseSBDb3BpZWQgQ29kZSIgZm9yIGEgdmVyc2lvbiBvZiBBdXRvY29uZiBtZWFucyBhbGwgcGFydHMgb2YgaXRzCitDb3ZlcmVkIENvZGUgd2hpY2ggdGhhdCB2ZXJzaW9uIGNhbiBjb3B5IGZyb20gaXRzIGNvZGUgKGkuZS4sIG5vdCBmcm9tIGl0cworaW5wdXQgZmlsZSkgaW50byBpdHMgbWluaW1hbGx5IHZlcmJvc2UsIG5vbi1kZWJ1Z2dpbmcgYW5kIG5vbi10cmFjaW5nIG91dHB1dC4KKworIkluZWxpZ2libGUgQ29kZSIgaXMgQ292ZXJlZCBDb2RlIHRoYXQgaXMgbm90IE5vcm1hbGx5IENvcGllZCBDb2RlLgorCisxLiBHcmFudCBvZiBBZGRpdGlvbmFsIFBlcm1pc3Npb24uICAgCitZb3UgaGF2ZSBwZXJtaXNzaW9uIHRvIHByb3BhZ2F0ZSBvdXRwdXQgb2YgQXV0b2NvbmYsIGV2ZW4gaWYgc3VjaCBwcm9wYWdhdGlvbgord291bGQgb3RoZXJ3aXNlIHZpb2xhdGUgdGhlIHRlcm1zIG9mIEdQTHYzLiBIb3dldmVyLCBpZiBieSBtb2RpZnlpbmcgQXV0b2NvbmYKK3lvdSBjYXVzZSBhbnkgSW5lbGlnaWJsZSBDb2RlIG9mIHRoZSB2ZXJzaW9uIHlvdSByZWNlaXZlZCB0byBiZWNvbWUgTm9ybWFsbHkKK0NvcGllZCBDb2RlIG9mIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiwgdGhlbiB5b3Ugdm9pZCB0aGlzIEV4Y2VwdGlvbiBmb3IgdGhlCityZXN1bHRpbmcgY292ZXJlZCB3b3JrLiBJZiB5b3UgY29udmV5IHRoYXQgcmVzdWx0aW5nIGNvdmVyZWQgd29yaywgeW91IG11c3QKK3JlbW92ZSB0aGlzIEV4Y2VwdGlvbiBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHNlY29uZCBwYXJhZ3JhcGggb2YgU2VjdGlvbiA3IG9mCitHUEx2My4KKworMi4gTm8gV2Vha2VuaW5nIG9mIEF1dG9jb25mIENvcHlsZWZ0LiAgIAorVGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIEV4Y2VwdGlvbiBkb2VzIG5vdCBpbXBseSBhbnkgZ2VuZXJhbCBwcmVzdW1wdGlvbiB0aGF0Cit0aGlyZC1wYXJ0eSBzb2Z0d2FyZSBpcyB1bmFmZmVjdGVkIGJ5IHRoZSBjb3B5bGVmdCByZXF1aXJlbWVudHMgb2YgdGhlIGxpY2Vuc2UKK29mIEF1dG9jb25mLgpkaWZmIC0tZ2l0IGEvYnVpbGRzL3VuaXgvY29uZmlndXJlLnJhdyBiL2J1aWxkcy91bml4L2NvbmZpZ3VyZS5yYXcKaW5kZXggZjMyNjg3Mi4uOGU5ODI4MyAxMDA2NDQKLS0tIGEvYnVpbGRzL3VuaXgvY29uZmlndXJlLnJhdworKysgYi9idWlsZHMvdW5peC9jb25maWd1cmUucmF3CkBAIC0yLDcgKzIsNyBAQAogIwogIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHByb2R1Y2UgYSBjb25maWd1cmUgc2NyaXB0LgogIwotIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCkBAIC0xNyw3ICsxNyw3IEBACiAKICMgRG9uJ3QgZm9yZ2V0IHRvIHVwZGF0ZSBgZG9jcy9WRVJTSU9OUy5UWFQnIQogCi12ZXJzaW9uX2luZm89JzI0OjE6MTgnCit2ZXJzaW9uX2luZm89JzI1OjA6MTknCiBBQ19TVUJTVChbdmVyc2lvbl9pbmZvXSkKIGZ0X3ZlcnNpb249YGVjaG8gJHZlcnNpb25faW5mbyB8IHRyIDogLmAKIEFDX1NVQlNUKFtmdF92ZXJzaW9uXSkKQEAgLTUwLDcgKzUwLDcgQEAKIAogICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzdWZmaXggb2YgbmF0aXZlIGV4ZWN1dGFibGVzXSkKICAgcm0gLWYgYS4qIGIuKiBhX291dC5leGUgY29uZnRlc3QuKgotICBlY2hvID4gY29uZnRlc3QuYyAiaW50IG1haW4oKSB7IHJldHVybiAwO30iCisgIGVjaG8gPiBjb25mdGVzdC5jICJpbnQgbWFpbih2b2lkKSB7IHJldHVybiAwO30iCiAgICR7Q0NfQlVJTER9IGNvbmZ0ZXN0LmMgfHwgQUNfTVNHX0VSUk9SKFtuYXRpdmUgQyBjb21waWxlciBpcyBub3Qgd29ya2luZ10pCiAgIHJtIC1mIGNvbmZ0ZXN0LmMKICAgaWYgdGVzdCAteCBhLm91dCAtbyAteCBiLm91dCAtbyAteCBjb25mdGVzdDsgdGhlbgpAQCAtMTYzLDkgKzE2Myw2IEBACiBBQ19TVUJTVChbRlRTWVNfU1JDXSkKIAogCi1BQ19DSEVDS19GVU5DUyhbbWVtY3B5IG1lbW1vdmVdKQotCi0KICMgZ2V0IGNvbXBpbGVyIGZsYWdzIHJpZ2h0CiAjCiAjICAgV2UgdHJ5IHRvIG1ha2UgdGhlIGNvbXBpbGVyIHdvcmsgZm9yIEM5OS1zdHJpY3Qgc291cmNlLiAgRXZlbiBpZiB0aGUKQEAgLTMxNyw2ICszMTQsMTIgQEAKICAgQUNfTVNHX0VSUk9SKFtleHRlcm5hbCB6bGliIHN1cHBvcnQgcmVxdWVzdGVkIGJ1dCBsaWJyYXJ5IG5vdCBmb3VuZF0pCiBmaQogCitTWVNURU1fWkxJQj0KK2lmIHRlc3QgIiRoYXZlX3psaWIiICE9IG5vOyB0aGVuCisgIFNZU1RFTV9aTElCPXllcworZmkKK0FDX1NVQlNUKFtTWVNURU1fWkxJQl0pCisKIAogIyBjaGVjayBmb3Igc3lzdGVtIGxpYmJ6MgogCkBAIC00MDAsMTYgKzQwMywxMiBAQAogICAgICAgaGF2ZV9saWJwbmc9InllcyAoTElCUE5HX0NGTEFHUyBhbmQgTElCUE5HX0xJQlMpIgogICAgIGVsc2UKICAgICAgICMgZmFsbCBiYWNrIHRvIGNvbmZpZyBzY3JpcHQKLSAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGxpYnBuZy1jb25maWddKQotICAgICAgaWYgd2hpY2ggbGlicG5nLWNvbmZpZyA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICBBQ19DSEVDS19QUk9HKGhhdmVfbGlicG5nLCBbbGlicG5nLWNvbmZpZ10sIFt5ZXMgKGxpYnBuZy1jb25maWcpXSwgW25vXSkKKyAgICAgIGlmIHRlc3QgIiRoYXZlX2xpYnBuZyIgIT0gbm87IHRoZW4KICAgICAgICAgTElCUE5HX0NGTEFHUz1gbGlicG5nLWNvbmZpZyAtLWNmbGFnc2AKICAgICAgICAgTElCUE5HX0xJQlM9YGxpYnBuZy1jb25maWcgLS1sZGZsYWdzYAogICAgICAgICBsaWJwbmdfbGlic3ByaXY9YGxpYnBuZy1jb25maWcgLS1zdGF0aWMgLS1sZGZsYWdzYAogICAgICAgICBsaWJwbmdfbGlic3N0YXRpY2NvbmY9IiRsaWJwbmdfbGlic3ByaXYiCi0gICAgICAgIGhhdmVfbGlicG5nPSJ5ZXMgKGxpYnBuZy1jb25maWcpIgotICAgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQotICAgICAgZWxzZQotICAgICAgICBBQ19NU0dfUkVTVUxUKFtub10pCiAgICAgICBmaQogICAgIGZpCiAgIGZpCkBAIC01MDgsMTkgKzUwNyw0OCBAQAogZmkKIAogCi0jIGNoZWNrIGZvciBsaWJydAorIyBDaGVja3MgZm9yIHRoZSBkZW1vIHByb2dyYW1zLgogIwotIyBXZSBuZWVkIGBjbG9ja19nZXR0aW1lJyBmb3IgdGhlIGBmdGJlbmNoJyBkZW1vIHByb2dyYW0uCi0jCi0jIFRoZSBjb2RlIGlzIG1vZGVsZWQgYWZ0ZXIgZ251bGliJ3MgZmlsZSBgY2xvY2tfdGltZS5tNCcsIGlnbm9yaW5nCi0jIHZlcnkgb2xkIFNvbGFyaXMgc3lzdGVtcy4KKyMgRnJlZVR5cGUgZG9lc24ndCBuZWVkIHRoaXMuICBIb3dldmVyLCBzaW5jZSB0aGUgZGVtbyBwcm9ncmFtIHJlcG9zaXRvcnkKKyMgZG9lc24ndCBjb21lIHdpdGggYSBgY29uZmlndXJlYCBzY3JpcHQgb2YgaXRzIG93biwgd2UgaW50ZWdyYXRlIHRoZSB0ZXN0cworIyBoZXJlIGZvciBzaW1wbGljaXR5LgogCisjIFdlIG5lZWQgYGNsb2NrX2dldHRpbWVgIGZyb20gJ2xpYnJ0JyBmb3IgdGhlIGBmdGJlbmNoYCBkZW1vIHByb2dyYW0uCisjCisjIFRoZSBjb2RlIGlzIG1vZGVsZWQgYWZ0ZXIgZ251bGliJ3MgZmlsZSBgY2xvY2tfdGltZS5tNGAsIGlnbm9yaW5nCisjIHZlcnkgb2xkIFNvbGFyaXMgc3lzdGVtcy4KIExJQl9DTE9DS19HRVRUSU1FPQogQUNfU0VBUkNIX0xJQlMoW2Nsb2NrX2dldHRpbWVdLAogICAgICAgICAgICAgICAgW3J0XSwKICAgICAgICAgICAgICAgIFt0ZXN0ICIkYWNfY3Zfc2VhcmNoX2Nsb2NrX2dldHRpbWUiID0gIm5vbmUgcmVxdWlyZWQiIFwKICAgICAgICAgICAgICAgICB8fCBMSUJfQ0xPQ0tfR0VUVElNRT0kYWNfY3Zfc2VhcmNoX2Nsb2NrX2dldHRpbWVdKQotQUNfU1VCU1QoW0xJQl9DTE9DS19HRVRUSU1FXSkKKworRlRfREVNT19DRkxBR1M9IiIKK0ZUX0RFTU9fTERGTEFHUz0iJExJQl9DTE9DS19HRVRUSU1FIgorCisjICdsaWJyc3ZnJyBpcyBuZWVkZWQgdG8gZGVtb25zdHJhdGUgU1ZHIHN1cHBvcnQuCitBQ19BUkdfV0lUSChbbGlicnN2Z10sCisgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWxpYnJzdmc9QDw6QHllc3xub3xhdXRvQDo+QF0sCisgICAgICAgICAgICAgICAgICBbc3VwcG9ydCBPcGVuVHlwZSBTVkcgZm9udHMgaW4gRnJlZVR5cGUgZGVtbyBwcm9ncmFtcyBAPDpAZGVmYXVsdD1hdXRvQDo+QF0pXSwKKyAgW10sIFt3aXRoX2xpYnJzdmc9YXV0b10pCisKK2hhdmVfbGlicnN2Zz1ubworaWYgdGVzdCB4IiR3aXRoX2xpYnJzdmciID0geHllcyAtbyB4IiR3aXRoX2xpYnJzdmciID0geGF1dG87IHRoZW4KKyAgUEtHX0NIRUNLX01PRFVMRVMoW0xJQlJTVkddLCBbbGlicnN2Zy0yLjAgPj0gMi40Ni4wXSwKKyAgICAgICAgICAgICAgICAgICAgW2hhdmVfbGlicnN2Zz0ieWVzIChwa2ctY29uZmlnKSJdLCBbOl0pCisKKyAgaWYgdGVzdCAiJGhhdmVfbGlicnN2ZyIgIT0gbm87IHRoZW4KKyAgICBGVF9ERU1PX0NGTEFHUz0iJEZUX0RFTU9fQ0ZMQUdTICRMSUJSU1ZHX0NGTEFHUyAtREhBVkVfTElCUlNWRyIKKyAgICBGVF9ERU1PX0xERkxBR1M9IiRGVF9ERU1PX0xERkxBR1MgJExJQlJTVkdfTElCUyIKKyAgZmkKK2ZpCisKK2lmIHRlc3QgeCIkd2l0aF9saWJyc3ZnIiA9IHh5ZXMgLWEgIiRoYXZlX2xpYnJzdmciID0gbm87IHRoZW4KKyAgQUNfTVNHX0VSUk9SKFtsaWJyc3ZnIHN1cHBvcnQgcmVxdWVzdGVkIGJ1dCBsaWJyYXJ5IG5vdCBmb3VuZF0pCitmaQorCitBQ19TVUJTVChbRlRfREVNT19DRkxBR1NdKQorQUNfU1VCU1QoW0ZUX0RFTU9fTERGTEFHU10pCiAKIAogIyBTb21lIG9wdGlvbnMgaGFuZGxpbmcgU0RLcy9hcmNocyBpbiBDRkxBR1Mgc2hvdWxkIGJlIGNvcGllZApAQCAtOTYyLDMyICs5OTAsMzIgQEAKIAogCiAjIGVudHJpZXMgaW4gUmVxdWlyZXMucHJpdmF0ZSBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcwotUkVRVUlSRVNfUFJJVkFURT0iJHpsaWJfcmVxcHJpdiwgICAgIFwKLSAgICAgICAgICAgICAgICAgICRiemlwMl9yZXFwcml2LCAgICBcCi0gICAgICAgICAgICAgICAgICAkbGlicG5nX3JlcXByaXYsICAgXAotICAgICAgICAgICAgICAgICAgJGhhcmZidXp6X3JlcXByaXYsIFwKLSAgICAgICAgICAgICAgICAgICRicm90bGlfcmVxcHJpdiIKK1BLR0NPTkZJR19SRVFVSVJFU19QUklWQVRFPSIkemxpYl9yZXFwcml2LCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICRiemlwMl9yZXFwcml2LCAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpYnBuZ19yZXFwcml2LCAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaGFyZmJ1enpfcmVxcHJpdiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICRicm90bGlfcmVxcHJpdiIKICMgYmVhdXRpZnkKLVJFUVVJUkVTX1BSSVZBVEU9YGVjaG8gIiRSRVFVSVJFU19QUklWQVRFIiBcCi0gICAgICAgICAgICAgICAgICB8IHNlZCAtZSAncy9eICAqLy8nICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgLWUgJ3MvICAqJC8vJyAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIC1lICdzLywgKi8sL2cnICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAtZSAncy8sLCovLC9nJyAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgLWUgJ3MvXiwqLy8nICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIC1lICdzLywqJC8vJyAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAtZSAncy8sLywgL2cnYAorUEtHQ09ORklHX1JFUVVJUkVTX1BSSVZBVEU9YGVjaG8gIiRQS0dDT05GSUdfUkVRVUlSRVNfUFJJVkFURSIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIC1lICdzL14gICovLycgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWUgJ3MvICAqJC8vJyAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtZSAncy8sICovLC9nJyAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1lICdzLywsKi8sL2cnICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWUgJ3MvXiwqLy8nICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtZSAncy8sKiQvLycgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1lICdzLywvLCAvZydgCiAKLUxJQlNfUFJJVkFURT0iJHpsaWJfbGlic3ByaXYgICAgIFwKLSAgICAgICAgICAgICAgJGJ6aXAyX2xpYnNwcml2ICAgIFwKLSAgICAgICAgICAgICAgJGxpYnBuZ19saWJzcHJpdiAgIFwKLSAgICAgICAgICAgICAgJGhhcmZidXp6X2xpYnNwcml2IFwKLSAgICAgICAgICAgICAgJGJyb3RsaV9saWJzcHJpdiAgIFwKLSAgICAgICAgICAgICAgJGZ0Ml9leHRyYV9saWJzIgorUEtHQ09ORklHX0xJQlNfUFJJVkFURT0iJHpsaWJfbGlic3ByaXYgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICRiemlwMl9saWJzcHJpdiAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAkbGlicG5nX2xpYnNwcml2ICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgJGhhcmZidXp6X2xpYnNwcml2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICRicm90bGlfbGlic3ByaXYgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAkZnQyX2V4dHJhX2xpYnMiCiAjIGJlYXV0aWZ5Ci1MSUJTX1BSSVZBVEU9YGVjaG8gIiRMSUJTX1BSSVZBVEUiICBcCi0gICAgICAgICAgICAgIHwgc2VkIC1lICdzL14gICovLycgICBcCi0gICAgICAgICAgICAgICAgICAgIC1lICdzLyAgKiQvLycgICBcCi0gICAgICAgICAgICAgICAgICAgIC1lICdzLyAgKi8gL2cnYAorUEtHQ09ORklHX0xJQlNfUFJJVkFURT1gZWNobyAiJFBLR0NPTkZJR19MSUJTX1BSSVZBVEUiICBcCisgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAtZSAncy9eICAqLy8nICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWUgJ3MvICAqJC8vJyAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1lICdzLyAgKi8gL2cnYAogCiBMSUJTU1RBVElDX0NPTkZJRz0iLWxmcmVldHlwZSAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAkemxpYl9saWJzc3RhdGljY29uZiAgICAgXApAQCAtMTAwNSwxMCArMTAzMywyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIC1lICdzLyAgKiQvLycgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgIC1lICdzLyAgKi8gL2cnYAogCisjIElmIEZyZWVUeXBlIGdldHMgaW5zdGFsbGVkIHdpdGggYC0tZGlzYWJsZS1zaGFyZWQnLCBkb24ndCB1c2UKKyMgJ3ByaXZhdGUnIGZpZWxkcy4gIGBwa2ctY29uZmlnJyBvbmx5IGxvb2tzIGludG8gYC5wYycgZmlsZXMgYW5kIGlzCisjIGNvbXBsZXRlbHkgYWdub3N0aWMgdG8gd2hldGhlciBzaGFyZWQgbGlicmFyaWVzIGFyZSBhY3R1YWxseSBwcmVzZW50CisjIG9yIG5vdC4gIEFzIGEgY29uc2VxdWVuY2UsIHRoZSB1c2VyIGhhZCB0byBzcGVjaWZ5IGAtLXN0YXRpYycgd2hpbGUKKyMgY2FsbGluZyBgcGtnLWNvbmZpZycsIHdoaWNoIGNvbmZpZ3VyZSBzY3JpcHRzIGFyZSBub3JtYWxseSBub3QKKyMgcHJlcGFyZWQgZm9yLgorCitQS0dDT05GSUdfUkVRVUlSRVM9CitQS0dDT05GSUdfTElCUz0nLUwke2xpYmRpcn0gLWxmcmVldHlwZScKKworaWYgdGVzdCAkZW5hYmxlX3NoYXJlZCA9ICJubyI7IHRoZW4KKyAgUEtHQ09ORklHX1JFUVVJUkVTPSIkUEtHQ09ORklHX1JFUVVJUkVTICRQS0dDT05GSUdfUkVRVUlSRVNfUFJJVkFURSIKKyAgUEtHQ09ORklHX1JFUVVJUkVTX1BSSVZBVEU9CisgIFBLR0NPTkZJR19MSUJTPSIkUEtHQ09ORklHX0xJQlMgJFBLR0NPTkZJR19MSUJTX1BSSVZBVEUiCisgIFBLR0NPTkZJR19MSUJTX1BSSVZBVEU9CitmaQogCiBBQ19TVUJTVChbZnRtYWNfY10pCi1BQ19TVUJTVChbUkVRVUlSRVNfUFJJVkFURV0pCi1BQ19TVUJTVChbTElCU19QUklWQVRFXSkKK0FDX1NVQlNUKFtQS0dDT05GSUdfUkVRVUlSRVNdKQorQUNfU1VCU1QoW1BLR0NPTkZJR19MSUJTXSkKK0FDX1NVQlNUKFtQS0dDT05GSUdfUkVRVUlSRVNfUFJJVkFURV0pCitBQ19TVUJTVChbUEtHQ09ORklHX0xJQlNfUFJJVkFURV0pCiBBQ19TVUJTVChbTElCU1NUQVRJQ19DT05GSUddKQogCiBBQ19TVUJTVChbaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY10pCmRpZmYgLS1naXQgYS9idWlsZHMvdW5peC9kZXRlY3QubWsgYi9idWlsZHMvdW5peC9kZXRlY3QubWsKaW5kZXggODYyYjQzMi4uNmI4NzAxMyAxMDA2NDQKLS0tIGEvYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rCisrKyBiL2J1aWxkcy91bml4L2RldGVjdC5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbiBiL2J1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbgppbmRleCA0ZWRiMDkyLi41ODU2MTEyIDEwMDY0NAotLS0gYS9idWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW4KKysrIGIvYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluCkBAIC0xLDYgKzEsNiBAQAogIyEgL2Jpbi9zaAogIwotIyBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvdW5peC9mcmVldHlwZTIuaW4gYi9idWlsZHMvdW5peC9mcmVldHlwZTIuaW4KaW5kZXggMmQ3NTllYy4uZmUzODlmNCAxMDA2NDQKLS0tIGEvYnVpbGRzL3VuaXgvZnJlZXR5cGUyLmluCisrKyBiL2J1aWxkcy91bml4L2ZyZWV0eXBlMi5pbgpAQCAtNyw4ICs3LDggQEAKIFVSTDogaHR0cHM6Ly9mcmVldHlwZS5vcmcKIERlc2NyaXB0aW9uOiBBIGZyZWUsIGhpZ2gtcXVhbGl0eSwgYW5kIHBvcnRhYmxlIGZvbnQgZW5naW5lLgogVmVyc2lvbjogJWZ0X3ZlcnNpb24lCi1SZXF1aXJlczoKLVJlcXVpcmVzLnByaXZhdGU6ICVSRVFVSVJFU19QUklWQVRFJQotTGliczogLUwke2xpYmRpcn0gLWxmcmVldHlwZQotTGlicy5wcml2YXRlOiAlTElCU19QUklWQVRFJQorUmVxdWlyZXM6ICVQS0dDT05GSUdfUkVRVUlSRVMlCitSZXF1aXJlcy5wcml2YXRlOiAlUEtHQ09ORklHX1JFUVVJUkVTX1BSSVZBVEUlCitMaWJzOiAlUEtHQ09ORklHX0xJQlMlCitMaWJzLnByaXZhdGU6ICVQS0dDT05GSUdfTElCU19QUklWQVRFJQogQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0vZnJlZXR5cGUyCmRpZmYgLS1naXQgYS9idWlsZHMvdW5peC9mcmVldHlwZTIubTQgYi9idWlsZHMvdW5peC9mcmVldHlwZTIubTQKaW5kZXggNDc4YTQyMi4uMDllYWQ0MyAxMDA2NDQKLS0tIGEvYnVpbGRzL3VuaXgvZnJlZXR5cGUyLm00CisrKyBiL2J1aWxkcy91bml4L2ZyZWV0eXBlMi5tNApAQCAtMSw3ICsxLDcgQEAKICMgQ29uZmlndXJlIHBhdGhzIGZvciBGcmVlVHlwZTIKICMgTWFyY2VsbyBNYWdhbGxvbiAyMDAxLTEwLTI2LCBiYXNlZCBvbiBgZ3RrLm00YCBieSBPd2VuIFRheWxvcgogIwotIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCkBAIC0xNSw3ICsxNSw3IEBACiAjIGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mCiAjIHRoYXQgcHJvZ3JhbS4KICMKLSMgc2VyaWFsIDYKKyMgc2VyaWFsIDcKIAogIyBBQ19DSEVDS19GVDIoW01JTklNVU0tVkVSU0lPTiBbLCBBQ1RJT04tSUYtRk9VTkQgWywgQUNUSU9OLUlGLU5PVC1GT1VORF1dXSkKICMgVGVzdCBmb3IgRnJlZVR5cGUgMiwgYW5kIGRlZmluZSBGVDJfQ0ZMQUdTIGFuZCBGVDJfTElCUy4KQEAgLTEyMSw3ICsxMjEsNyBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCiBpbnQKLW1haW4oKQorbWFpbih2b2lkKQogewogICBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgIEZUX0Vycm9yICBlcnJvcjsKZGlmZiAtLWdpdCBhL2J1aWxkcy91bml4L2Z0LW11bm1hcC5tNCBiL2J1aWxkcy91bml4L2Z0LW11bm1hcC5tNAppbmRleCAyNzU0ODFiLi5hMGZjZjM1IDEwMDY0NAotLS0gYS9idWlsZHMvdW5peC9mdC1tdW5tYXAubTQKKysrIGIvYnVpbGRzL3VuaXgvZnQtbXVubWFwLm00CkBAIC0xLDYgKzEsNiBAQAogIyMgRnJlZVR5cGUgc3BlY2lmaWMgYXV0b2NvbmYgdGVzdHMKICMKLSMgQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAyMDAyLTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL3VuaXgvZnRjb25maWcuaC5pbiBiL2J1aWxkcy91bml4L2Z0Y29uZmlnLmguaW4KaW5kZXggYjQyZmU0Mi4uM2RhYzU2MSAxMDA2NDQKLS0tIGEvYnVpbGRzL3VuaXgvZnRjb25maWcuaC5pbgorKysgYi9idWlsZHMvdW5peC9mdGNvbmZpZy5oLmluCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVU5JWC1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUgKHNwZWNpZmljYXRpb24gb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYyBiL2J1aWxkcy91bml4L2Z0c3lzdGVtLmMKaW5kZXggODFlZDkyOC4uNTkyNzIxNSAxMDA2NDQKLS0tIGEvYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYworKysgYi9idWlsZHMvdW5peC9mdHN5c3RlbS5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVW5peC1zcGVjaWZpYyBGcmVlVHlwZSBsb3ctbGV2ZWwgc3lzdGVtIGludGVyZmFjZSAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL3VuaXgvaW5zdGFsbC5tayBiL2J1aWxkcy91bml4L2luc3RhbGwubWsKaW5kZXggNDViNzYxZC4uMmYxNzI5YiAxMDA2NDQKLS0tIGEvYnVpbGRzL3VuaXgvaW5zdGFsbC5taworKysgYi9idWlsZHMvdW5peC9pbnN0YWxsLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL3VuaXgvdW5peC1jYy5pbiBiL2J1aWxkcy91bml4L3VuaXgtY2MuaW4KaW5kZXggODliZTQ1MC4uODAyMDE2ZCAxMDA2NDQKLS0tIGEvYnVpbGRzL3VuaXgvdW5peC1jYy5pbgorKysgYi9idWlsZHMvdW5peC91bml4LWNjLmluCkBAIC0yLDcgKzIsNyBAQAogIyBGcmVlVHlwZSAyIHRlbXBsYXRlIGZvciBVbml4LXNwZWNpZmljIGNvbXBpbGVyIGRlZmluaXRpb25zCiAjCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApAQCAtMTA2LDkgKzEwNiw3IEBACiAKICMgTGlua2VyIGZsYWdzLgogIwotTERGTEFHUyAgICAgICAgICAgOj0gQExERkxBR1NACi1MSUJfQ0xPQ0tfR0VUVElNRSA6PSBATElCX0NMT0NLX0dFVFRJTUVAICAjIGZvciBmdGJlbmNoCi0KK0xERkxBR1MgOj0gQExERkxBR1NACiAKICMgZXhwb3J0IHN5bWJvbHMKICMKQEAgLTExOCwxMSArMTE2LDE1IEBACiBDQ2V4ZSAgICAgICAgOj0gJChDQ3Jhd19idWlsZCkJIyB1c2VkIHRvIGNvbXBpbGUgYGFwaW5hbWVzJyBvbmx5CiAKIAotIyBMaWJyYXJ5IGxpbmtpbmcKKyMgTGlicmFyeSBsaW5raW5nLgogIwogTElOS19MSUJSQVJZID0gJChMSUJUT09MKSAtLW1vZGU9bGluayAkKENDcmF3KSAtbyAkQCAkKE9CSkVDVFNfTElTVCkgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAtcnBhdGggJChsaWJkaXIpIC12ZXJzaW9uLWluZm8gJCh2ZXJzaW9uX2luZm8pIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJChMREZMQUdTKSAtbm8tdW5kZWZpbmVkIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgLWV4cG9ydC1zeW1ib2xzICQoRVhQT1JUU19MSVNUKQogCisjIEZvciB0aGUgZGVtbyBwcm9ncmFtcy4KK0ZUX0RFTU9fQ0ZMQUdTIDo9IEBGVF9ERU1PX0NGTEFHU0AKK0ZUX0RFTU9fTERGTEFHUyA6PSBARlRfREVNT19MREZMQUdTQAorCiAjIEVPRgpkaWZmIC0tZ2l0IGEvYnVpbGRzL3VuaXgvdW5peC1kZWYuaW4gYi9idWlsZHMvdW5peC91bml4LWRlZi5pbgppbmRleCBkMGM3NThkLi5kNTA5OTRmIDEwMDY0NAotLS0gYS9idWlsZHMvdW5peC91bml4LWRlZi5pbgorKysgYi9idWlsZHMvdW5peC91bml4LWRlZi5pbgpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKQEAgLTY4LDEyICs2OCwxNCBAQAogCiAjIFZhcmlhYmxlcyBuZWVkZWQgZm9yIGBmcmVldHlwZS1jb25maWcnIGFuZCBgZnJlZXR5cGUucGMnLgogIwotUEtHX0NPTkZJRyAgICAgICAgIDo9IEBQS0dfQ09ORklHQAotUkVRVUlSRVNfUFJJVkFURSAgIDo9IEBSRVFVSVJFU19QUklWQVRFQAotTElCU19QUklWQVRFICAgICAgIDo9IEBMSUJTX1BSSVZBVEVACi1MSUJTU1RBVElDX0NPTkZJRyAgOj0gQExJQlNTVEFUSUNfQ09ORklHQAotYnVpbGRfbGlidG9vbF9saWJzIDo9IEBidWlsZF9saWJ0b29sX2xpYnNACi1mdF92ZXJzaW9uICAgICAgICAgOj0gQGZ0X3ZlcnNpb25ACitQS0dfQ09ORklHICAgICAgICAgICAgICAgICA6PSBAUEtHX0NPTkZJR0AKK1BLR0NPTkZJR19SRVFVSVJFUyAgICAgICAgIDo9IEBQS0dDT05GSUdfUkVRVUlSRVNACitQS0dDT05GSUdfUkVRVUlSRVNfUFJJVkFURSA6PSBAUEtHQ09ORklHX1JFUVVJUkVTX1BSSVZBVEVACitQS0dDT05GSUdfTElCUyAgICAgICAgICAgICA6PSBAUEtHQ09ORklHX0xJQlNACitQS0dDT05GSUdfTElCU19QUklWQVRFICAgICA6PSBAUEtHQ09ORklHX0xJQlNfUFJJVkFURUAKK0xJQlNTVEFUSUNfQ09ORklHICAgICAgICAgIDo9IEBMSUJTU1RBVElDX0NPTkZJR0AKK2J1aWxkX2xpYnRvb2xfbGlicyAgICAgICAgIDo9IEBidWlsZF9saWJ0b29sX2xpYnNACitmdF92ZXJzaW9uICAgICAgICAgICAgICAgICA6PSBAZnRfdmVyc2lvbkAKIAogIyBUaGUgZGlyZWN0b3J5IHdoZXJlIGFsbCBsaWJyYXJ5IGZpbGVzIGFyZSBwbGFjZWQuCiAjCkBAIC0xMzcsMTUgKzEzOSwxNyBAQAogCiAkKE9CSl9CVUlMRCkvZnJlZXR5cGUyLnBjOiAkKFRPUF9ESVIpL2J1aWxkcy91bml4L2ZyZWV0eXBlMi5pbgogCXJtIC1mICRAICRALnRtcAotCXNlZCAtZSAnc3wlUkVRVUlSRVNfUFJJVkFURSV8JChSRVFVSVJFU19QUklWQVRFKXwnICAgICBcCi0JICAgIC1lICdzfCVMSUJTX1BSSVZBVEUlfCQoTElCU19QUklWQVRFKXwnICAgICAgICAgICAgIFwKLQkgICAgLWUgJ3N8JWJ1aWxkX2xpYnRvb2xfbGlicyV8JChidWlsZF9saWJ0b29sX2xpYnMpfCcgXAotCSAgICAtZSAnc3wlZXhlY19wcmVmaXglfCQoZXhlY19wcmVmaXhfeCl8JyAgICAgICAgICAgICBcCi0JICAgIC1lICdzfCVmdF92ZXJzaW9uJXwkKGZ0X3ZlcnNpb24pfCcgICAgICAgICAgICAgICAgIFwKLQkgICAgLWUgJ3N8JWluY2x1ZGVkaXIlfCQoaW5jbHVkZWRpcl94KXwnICAgICAgICAgICAgICAgXAotCSAgICAtZSAnc3wlbGliZGlyJXwkKGxpYmRpcl94KXwnICAgICAgICAgICAgICAgICAgICAgICBcCi0JICAgIC1lICdzfCVwcmVmaXglfCQocHJlZml4X3gpfCcgICAgICAgICAgICAgICAgICAgICAgIFwKLQkgICAgJDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCXNlZCAtZSAnc3wlUEtHQ09ORklHX1JFUVVJUkVTJXwkKFBLR0NPTkZJR19SRVFVSVJFUyl8JyAgICAgICAgICAgICAgICAgXAorCSAgICAtZSAnc3wlUEtHQ09ORklHX1JFUVVJUkVTX1BSSVZBVEUlfCQoUEtHQ09ORklHX1JFUVVJUkVTX1BSSVZBVEUpfCcgXAorCSAgICAtZSAnc3wlUEtHQ09ORklHX0xJQlMlfCQoUEtHQ09ORklHX0xJQlMpfCcgICAgICAgICAgICAgICAgICAgICAgICAgXAorCSAgICAtZSAnc3wlUEtHQ09ORklHX0xJQlNfUFJJVkFURSV8JChQS0dDT05GSUdfTElCU19QUklWQVRFKXwnICAgICAgICAgXAorCSAgICAtZSAnc3wlYnVpbGRfbGlidG9vbF9saWJzJXwkKGJ1aWxkX2xpYnRvb2xfbGlicyl8JyAgICAgICAgICAgICAgICAgXAorCSAgICAtZSAnc3wlZXhlY19wcmVmaXglfCQoZXhlY19wcmVmaXhfeCl8JyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCSAgICAtZSAnc3wlZnRfdmVyc2lvbiV8JChmdF92ZXJzaW9uKXwnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCSAgICAtZSAnc3wlaW5jbHVkZWRpciV8JChpbmNsdWRlZGlyX3gpfCcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCSAgICAtZSAnc3wlbGliZGlyJXwkKGxpYmRpcl94KXwnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCSAgICAtZSAnc3wlcHJlZml4JXwkKHByZWZpeF94KXwnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCSAgICAkPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogCSAgICA+ICRALnRtcAogCWNobW9kIGEtdyAkQC50bXAKIAltdiAkQC50bXAgJEAKZGlmZiAtLWdpdCBhL2J1aWxkcy91bml4L3VuaXgtZGV2Lm1rIGIvYnVpbGRzL3VuaXgvdW5peC1kZXYubWsKaW5kZXggMGI1NzJhMC4uOWRkOGFkNiAxMDA2NDQKLS0tIGEvYnVpbGRzL3VuaXgvdW5peC1kZXYubWsKKysrIGIvYnVpbGRzL3VuaXgvdW5peC1kZXYubWsKQEAgLTYsNyArNiw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvdW5peC91bml4LWxjYy5tayBiL2J1aWxkcy91bml4L3VuaXgtbGNjLm1rCmluZGV4IGRiNTc4MzUuLmRlZDI0ZjQgMTAwNjQ0Ci0tLSBhL2J1aWxkcy91bml4L3VuaXgtbGNjLm1rCisrKyBiL2J1aWxkcy91bml4L3VuaXgtbGNjLm1rCkBAIC02LDcgKzYsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL3VuaXgvdW5peC5tayBiL2J1aWxkcy91bml4L3VuaXgubWsKaW5kZXggMjYyZmFmYi4uMzUwNTE3NSAxMDA2NDQKLS0tIGEvYnVpbGRzL3VuaXgvdW5peC5taworKysgYi9idWlsZHMvdW5peC91bml4Lm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL3VuaXgvdW5peGRkZWYubWsgYi9idWlsZHMvdW5peC91bml4ZGRlZi5tawppbmRleCA3N2MyYTBkLi43MTk3MzQ3IDEwMDY0NAotLS0gYS9idWlsZHMvdW5peC91bml4ZGRlZi5taworKysgYi9idWlsZHMvdW5peC91bml4ZGRlZi5tawpAQCAtNCw3ICs0LDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy92bXMvZnRjb25maWcuaCBiL2J1aWxkcy92bXMvZnRjb25maWcuaAppbmRleCAyNDQ1YjdkLi4zMWRmY2VjIDEwMDY0NAotLS0gYS9idWlsZHMvdm1zL2Z0Y29uZmlnLmgKKysrIGIvYnVpbGRzL3Ztcy9mdGNvbmZpZy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVk1TLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZSAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvdm1zL2Z0c3lzdGVtLmMgYi9idWlsZHMvdm1zL2Z0c3lzdGVtLmMKaW5kZXggMzFiMDg3MC4uMGFmZDA3ZCAxMDA2NDQKLS0tIGEvYnVpbGRzL3Ztcy9mdHN5c3RlbS5jCisrKyBiL2J1aWxkcy92bXMvZnRzeXN0ZW0uYwpAQCAtNCw3ICs0LDcgQEAKIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAgICBWTVMtc3BlY2lmaWMgRnJlZVR5cGUgbG93LWxldmVsIHN5c3RlbSBpbnRlcmZhY2UgKGJvZHkpLiAgICAgICAgICAgICAqLwogLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLwpkaWZmIC0tZ2l0IGEvYnVpbGRzL3dpbmNlL2Z0ZGVidWcuYyBiL2J1aWxkcy93aW5jZS9mdGRlYnVnLmMKaW5kZXggOWUxNzc3Ni4uNjQ1M2Y4ZCAxMDA2NDQKLS0tIGEvYnVpbGRzL3dpbmNlL2Z0ZGVidWcuYworKysgYi9idWlsZHMvd2luY2UvZnRkZWJ1Zy5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRGVidWdnaW5nIGFuZCBsb2dnaW5nIGNvbXBvbmVudCBmb3IgV2luQ0UgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy93aW5jZS92YzIwMDUtY2UvaW5kZXguaHRtbCBiL2J1aWxkcy93aW5jZS92YzIwMDUtY2UvaW5kZXguaHRtbAppbmRleCAzZTQyY2Y5Li4wYThiM2M2IDEwMDY0NAotLS0gYS9idWlsZHMvd2luY2UvdmMyMDA1LWNlL2luZGV4Lmh0bWwKKysrIGIvYnVpbGRzL3dpbmNlL3ZjMjAwNS1jZS9pbmRleC5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAgIDxsaT5QUEMvU1AgV002IChXaW5kb3dzIE1vYmlsZSA2KTwvbGk+CiA8L3VsPgogCi1JdCBjb21waWxlcyB0aGUgZm9sbG93aW5nIGxpYnJhcmllcyBmcm9tIHRoZSBGcmVlVHlwZSAyLjExLjEgc291cmNlczo8L3A+CitJdCBjb21waWxlcyB0aGUgZm9sbG93aW5nIGxpYnJhcmllcyBmcm9tIHRoZSBGcmVlVHlwZSAyLjEzLjAgc291cmNlczo8L3A+CiAKIDx1bD4KICAgPHByZT4KZGlmZiAtLWdpdCBhL2J1aWxkcy93aW5jZS92YzIwMDgtY2UvaW5kZXguaHRtbCBiL2J1aWxkcy93aW5jZS92YzIwMDgtY2UvaW5kZXguaHRtbAppbmRleCA2NDU2NzVjLi43NDczNzBhIDEwMDY0NAotLS0gYS9idWlsZHMvd2luY2UvdmMyMDA4LWNlL2luZGV4Lmh0bWwKKysrIGIvYnVpbGRzL3dpbmNlL3ZjMjAwOC1jZS9pbmRleC5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAgIDxsaT5QUEMvU1AgV002IChXaW5kb3dzIE1vYmlsZSA2KTwvbGk+CiA8L3VsPgogCi1JdCBjb21waWxlcyB0aGUgZm9sbG93aW5nIGxpYnJhcmllcyBmcm9tIHRoZSBGcmVlVHlwZSAyLjExLjEgc291cmNlczo8L3A+CitJdCBjb21waWxlcyB0aGUgZm9sbG93aW5nIGxpYnJhcmllcyBmcm9tIHRoZSBGcmVlVHlwZSAyLjEzLjAgc291cmNlczo8L3A+CiAKIDx1bD4KICAgPHByZT4KZGlmZiAtLWdpdCBhL2J1aWxkcy93aW5kb3dzL2RldGVjdC5tayBiL2J1aWxkcy93aW5kb3dzL2RldGVjdC5tawppbmRleCAzZWVmNDdhLi5kNzkwOGJlIDEwMDY0NAotLS0gYS9idWlsZHMvd2luZG93cy9kZXRlY3QubWsKKysrIGIvYnVpbGRzL3dpbmRvd3MvZGV0ZWN0Lm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL3dpbmRvd3MvZnRkZWJ1Zy5jIGIvYnVpbGRzL3dpbmRvd3MvZnRkZWJ1Zy5jCmluZGV4IDk0YzIyZGEuLjM2MGY4YzcgMTAwNjQ0Ci0tLSBhL2J1aWxkcy93aW5kb3dzL2Z0ZGVidWcuYworKysgYi9idWlsZHMvd2luZG93cy9mdGRlYnVnLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBEZWJ1Z2dpbmcgYW5kIGxvZ2dpbmcgY29tcG9uZW50IGZvciBXaW4zMiAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMTM2LDYgKzEzNiw4IEBACiAKICAgICB2YV9zdGFydCggYXAsIGZtdCApOwogICAgIHZmcHJpbnRmKCBzdGRlcnIsIGZtdCwgYXAgKTsKKyNpZiAoIGRlZmluZWQoIF9XSU4zMl9XSU5OVCApICYmIF9XSU4zMl9XSU5OVCA+PSAweDA0MDAgKSB8fCBcCisgICAgKCBkZWZpbmVkKCBfV0lOMzJfV0NFICkgICAmJiBfV0lOMzJfV0NFICAgPj0gMHgwNjAwICkKICAgICBpZiAoIElzRGVidWdnZXJQcmVzZW50KCkgKQogICAgIHsKICAgICAgIHN0YXRpYyBjaGFyICBidWZbMTAyNF07CkBAIC0xNDQsNiArMTQ2LDcgQEAKICAgICAgIHZzbnByaW50ZiggYnVmLCBzaXplb2YgYnVmLCBmbXQsIGFwICk7CiAgICAgICBPdXRwdXREZWJ1Z1N0cmluZ0EoIGJ1ZiApOwogICAgIH0KKyNlbmRpZgogICAgIHZhX2VuZCggYXAgKTsKICAgfQogCkBAIC0xNTksNiArMTYyLDggQEAKIAogICAgIHZhX3N0YXJ0KCBhcCwgZm10ICk7CiAgICAgdmZwcmludGYoIHN0ZGVyciwgZm10LCBhcCApOworI2lmICggZGVmaW5lZCggX1dJTjMyX1dJTk5UICkgJiYgX1dJTjMyX1dJTk5UID49IDB4MDQwMCApIHx8IFwKKyAgICAoIGRlZmluZWQoIF9XSU4zMl9XQ0UgKSAgICYmIF9XSU4zMl9XQ0UgICA+PSAweDA2MDAgKQogICAgIGlmICggSXNEZWJ1Z2dlclByZXNlbnQoKSApCiAgICAgewogICAgICAgc3RhdGljIGNoYXIgIGJ1ZlsxMDI0XTsKQEAgLTE2Nyw2ICsxNzIsNyBAQAogICAgICAgdnNucHJpbnRmKCBidWYsIHNpemVvZiBidWYsIGZtdCwgYXAgKTsKICAgICAgIE91dHB1dERlYnVnU3RyaW5nQSggYnVmICk7CiAgICAgfQorI2VuZGlmCiAgICAgdmFfZW5kKCBhcCApOwogCiAgICAgZXhpdCggRVhJVF9GQUlMVVJFICk7CmRpZmYgLS1naXQgYS9idWlsZHMvd2luZG93cy9mdHN5c3RlbS5jIGIvYnVpbGRzL3dpbmRvd3MvZnRzeXN0ZW0uYwppbmRleCAxZWJhZGQ0Li40MThkNzk5IDEwMDY0NAotLS0gYS9idWlsZHMvd2luZG93cy9mdHN5c3RlbS5jCisrKyBiL2J1aWxkcy93aW5kb3dzL2Z0c3lzdGVtLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBXaW5kb3dzLXNwZWNpZmljIEZyZWVUeXBlIGxvdy1sZXZlbCBzeXN0ZW0gaW50ZXJmYWNlIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMTk2LDE5ICsxOTYsNzcgQEAKICAgfQogCiAKLSNpZmRlZiBfV0lOMzJfV0NFCisgIC8qIG5vbi1kZXNrdG9wIFVuaXZlcnNhbCBXaW5kb3dzIFBsYXRmb3JtICovCisjaWYgZGVmaW5lZCggV0lOQVBJX0ZBTUlMWSApICYmIFdJTkFQSV9GQU1JTFkgIT0gV0lOQVBJX0ZBTUlMWV9ERVNLVE9QX0FQUAorCisjZGVmaW5lIFBBQ0tfRFdPUkQ2NCggaGksIGxvICkgICggKCAoRFdPUkQ2NCkoaGkpIDw8IDMyICkgfCAoRFdPUkQpKGxvKSApCisKKyNkZWZpbmUgQ3JlYXRlRmlsZU1hcHBpbmcoIGEsIGIsIGMsIGQsIGUsIGYgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIENyZWF0ZUZpbGVNYXBwaW5nRnJvbUFwcCggYSwgYiwgYywgUEFDS19EV09SRDY0KCBkLCBlICksIGYgKQorI2RlZmluZSBNYXBWaWV3T2ZGaWxlKCBhLCBiLCBjLCBkLCBlICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgTWFwVmlld09mRmlsZUZyb21BcHAoIGEsIGIsIFBBQ0tfRFdPUkQ2NCggYywgZCApLCBlICkKIAogICBGVF9MT0NBTF9ERUYoIEhBTkRMRSApCi0gIENyZWF0ZUZpbGVBKCBMUENTVFIgICAgICAgICAgICAgICAgbHBGaWxlTmFtZSwKLSAgICAgICAgICAgICAgIERXT1JEICAgICAgICAgICAgICAgICBkd0Rlc2lyZWRBY2Nlc3MsCi0gICAgICAgICAgICAgICBEV09SRCAgICAgICAgICAgICAgICAgZHdTaGFyZU1vZGUsCi0gICAgICAgICAgICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0dHJpYnV0ZXMsCi0gICAgICAgICAgICAgICBEV09SRCAgICAgICAgICAgICAgICAgZHdDcmVhdGlvbkRpc3Bvc2l0aW9uLAotICAgICAgICAgICAgICAgRFdPUkQgICAgICAgICAgICAgICAgIGR3RmxhZ3NBbmRBdHRyaWJ1dGVzLAotICAgICAgICAgICAgICAgSEFORExFICAgICAgICAgICAgICAgIGhUZW1wbGF0ZUZpbGUgKQorICBDcmVhdGVGaWxlQSggTFBDU1RSICAgICAgICAgICAgICAgICBscEZpbGVOYW1lLAorICAgICAgICAgICAgICAgRFdPUkQgICAgICAgICAgICAgICAgICBkd0Rlc2lyZWRBY2Nlc3MsCisgICAgICAgICAgICAgICBEV09SRCAgICAgICAgICAgICAgICAgIGR3U2hhcmVNb2RlLAorICAgICAgICAgICAgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTICBscFNlY3VyaXR5QXR0cmlidXRlcywKKyAgICAgICAgICAgICAgIERXT1JEICAgICAgICAgICAgICAgICAgZHdDcmVhdGlvbkRpc3Bvc2l0aW9uLAorICAgICAgICAgICAgICAgRFdPUkQgICAgICAgICAgICAgICAgICBkd0ZsYWdzQW5kQXR0cmlidXRlcywKKyAgICAgICAgICAgICAgIEhBTkRMRSAgICAgICAgICAgICAgICAgaFRlbXBsYXRlRmlsZSApCiAgIHsKLSAgICBpbnQgICAgICAgICAgICBsZW47Ci0gICAgTFBXU1RSICAgICAgICAgbHBGaWxlTmFtZVc7CisgICAgaW50ICAgICBsZW47CisgICAgTFBXU1RSICBscEZpbGVOYW1lVzsKKworICAgIENSRUFURUZJTEUyX0VYVEVOREVEX1BBUkFNRVRFUlMgIGNyZWF0ZUV4UGFyYW1zID0geworICAgICAgc2l6ZW9mICggQ1JFQVRFRklMRTJfRVhURU5ERURfUEFSQU1FVEVSUyApLAorICAgICAgZHdGbGFnc0FuZEF0dHJpYnV0ZXMgJiAweDAwMDBGRkZGLAorICAgICAgZHdGbGFnc0FuZEF0dHJpYnV0ZXMgJiAweEZGRjAwMDAwLAorICAgICAgZHdGbGFnc0FuZEF0dHJpYnV0ZXMgJiAweDAwMEYwMDAwLAorICAgICAgbHBTZWN1cml0eUF0dHJpYnV0ZXMsCisgICAgICBoVGVtcGxhdGVGaWxlIH07CisKKworICAgIC8qIGFsbG9jYXRlIG1lbW9yeSBzcGFjZSBmb3IgY29udmVydGVkIHBhdGggbmFtZSAqLworICAgIGxlbiA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoIENQX0FDUCwgTUJfRVJSX0lOVkFMSURfQ0hBUlMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBGaWxlTmFtZSwgLTEsIE5VTEwsIDAgKTsKKworICAgIGxwRmlsZU5hbWVXID0gKExQV1NUUilfYWxsb2NhKCBsZW4gKiBzaXplb2YgKCBXQ0hBUiApICk7CisKKyAgICBpZiAoICFsZW4gfHwgIWxwRmlsZU5hbWVXICkKKyAgICB7CisgICAgICBGVF9FUlJPUigoICJGVF9TdHJlYW1fT3BlbjogY2Fubm90IGNvbnZlcnQgZmlsZSBuYW1lIHRvIExQV1NUUlxuIiApKTsKKyAgICAgIHJldHVybiBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKyAgICB9CisKKyAgICAvKiBub3cgaXQgaXMgc2FmZSB0byBkbyB0aGUgdHJhbnNsYXRpb24gKi8KKyAgICBNdWx0aUJ5dGVUb1dpZGVDaGFyKCBDUF9BQ1AsIE1CX0VSUl9JTlZBTElEX0NIQVJTLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxwRmlsZU5hbWUsIC0xLCBscEZpbGVOYW1lVywgbGVuICk7CisKKyAgICAvKiBvcGVuIHRoZSBmaWxlICovCisgICAgcmV0dXJuIENyZWF0ZUZpbGUyKCBscEZpbGVOYW1lVywgZHdEZXNpcmVkQWNjZXNzLCBkd1NoYXJlTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGR3Q3JlYXRpb25EaXNwb3NpdGlvbiwgJmNyZWF0ZUV4UGFyYW1zICk7CisgIH0KKworI2VuZGlmCisKKworI2lmIGRlZmluZWQoIF9XSU4zMl9XQ0UgKQorCisgIC8qIG1hbGxvYy5oIHByb3ZpZGVzIGltcGxlbWVudGF0aW9uIG9mIGFsbG9jYSgpL19hbGxvY2EoKSAqLworICAjaW5jbHVkZSA8bWFsbG9jLmg+CisKKyAgRlRfTE9DQUxfREVGKCBIQU5ETEUgKQorICBDcmVhdGVGaWxlQSggTFBDU1RSICAgICAgICAgICAgICAgICBscEZpbGVOYW1lLAorICAgICAgICAgICAgICAgRFdPUkQgICAgICAgICAgICAgICAgICBkd0Rlc2lyZWRBY2Nlc3MsCisgICAgICAgICAgICAgICBEV09SRCAgICAgICAgICAgICAgICAgIGR3U2hhcmVNb2RlLAorICAgICAgICAgICAgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTICBscFNlY3VyaXR5QXR0cmlidXRlcywKKyAgICAgICAgICAgICAgIERXT1JEICAgICAgICAgICAgICAgICAgZHdDcmVhdGlvbkRpc3Bvc2l0aW9uLAorICAgICAgICAgICAgICAgRFdPUkQgICAgICAgICAgICAgICAgICBkd0ZsYWdzQW5kQXR0cmlidXRlcywKKyAgICAgICAgICAgICAgIEhBTkRMRSAgICAgICAgICAgICAgICAgaFRlbXBsYXRlRmlsZSApCisgIHsKKyAgICBpbnQgICAgIGxlbjsKKyAgICBMUFdTVFIgIGxwRmlsZU5hbWVXOwogCiAKICAgICAvKiBhbGxvY2F0ZSBtZW1vcnkgc3BhY2UgZm9yIGNvbnZlcnRlZCBwYXRoIG5hbWUgKi8KQEAgLTIzMywxMCArMjkxLDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBkd0ZsYWdzQW5kQXR0cmlidXRlcywgaFRlbXBsYXRlRmlsZSApOwogICB9CiAKKyNlbmRpZgorCisKKyNpZiBkZWZpbmVkKCBfV0lOMzJfV0NFICkgfHwgZGVmaW5lZCAoIF9XSU4zMl9XSU5ET1dTICkgfHwgXAorICAgICFkZWZpbmVkKCBfV0lOMzJfV0lOTlQgKSB8fCBfV0lOMzJfV0lOTlQgPD0gMHgwNDAwCiAKICAgRlRfTE9DQUxfREVGKCBCT09MICkKLSAgR2V0RmlsZVNpemVFeCggSEFORExFICAgICAgICAgaEZpbGUsCi0gICAgICAgICAgICAgICAgIFBMQVJHRV9JTlRFR0VSIGxwRmlsZVNpemUgKQorICBHZXRGaWxlU2l6ZUV4KCBIQU5ETEUgICAgICAgICAgaEZpbGUsCisgICAgICAgICAgICAgICAgIFBMQVJHRV9JTlRFR0VSICBscEZpbGVTaXplICkKICAgewogICAgIGxwRmlsZVNpemUtPnUuTG93UGFydCA9IEdldEZpbGVTaXplKCBoRmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERXT1JEICopJmxwRmlsZVNpemUtPnUuSGlnaFBhcnQgKTsKQEAgLTI0OCw3ICszMTEsNyBAQAogICAgICAgcmV0dXJuIFRSVUU7CiAgIH0KIAotI2VuZGlmIC8qIF9XSU4zMl9XQ0UgKi8KKyNlbmRpZgogCiAKICAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG9ianMuaCAqLwpkaWZmIC0tZ2l0IGEvYnVpbGRzL3dpbmRvd3MvdmMyMDEwL2ZyZWV0eXBlLnZjeHByb2ogYi9idWlsZHMvd2luZG93cy92YzIwMTAvZnJlZXR5cGUudmN4cHJvagppbmRleCAwZDM4Njc4Li40YzllMmI0IDEwMDY0NAotLS0gYS9idWlsZHMvd2luZG93cy92YzIwMTAvZnJlZXR5cGUudmN4cHJvagorKysgYi9idWlsZHMvd2luZG93cy92YzIwMTAvZnJlZXR5cGUudmN4cHJvagpAQCAtNDg1LDYgKzQ4NSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxzcmNcc2ZudFxzZm50LmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cc3JjXHNtb290aFxzbW9vdGguYyIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxzcmNcc2RmXHNkZi5jIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXHNyY1xzdmdcc3ZnLmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cc3JjXHRydWV0eXBlXHRydWV0eXBlLmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cc3JjXHR5cGUxXHR5cGUxLmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cc3JjXHR5cGU0Mlx0eXBlNDIuYyIgLz4NCmRpZmYgLS1naXQgYS9idWlsZHMvd2luZG93cy92YzIwMTAvZnJlZXR5cGUudmN4cHJvai5maWx0ZXJzIGIvYnVpbGRzL3dpbmRvd3MvdmMyMDEwL2ZyZWV0eXBlLnZjeHByb2ouZmlsdGVycwppbmRleCAzZjY4YzgyLi40MDg1ZjZjIDEwMDY0NAotLS0gYS9idWlsZHMvd2luZG93cy92YzIwMTAvZnJlZXR5cGUudmN4cHJvai5maWx0ZXJzCisrKyBiL2J1aWxkcy93aW5kb3dzL3ZjMjAxMC9mcmVldHlwZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTY4LDYgKzY4LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXHNyY1xzbW9vdGhcc21vb3RoLmMiPg0KICAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQogICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXHNyY1xzdmdcc3ZnLmMiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXHNyY1x0cnVldHlwZVx0cnVldHlwZS5jIj4NCiAgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCkBAIC0xNDMsNCArMTQ2LDQgQEAKICAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQogICAgIDwvUmVzb3VyY2VDb21waWxlPg0KICAgPC9JdGVtR3JvdXA+DQotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9idWlsZHMvd2luZG93cy92YzIwMTAvaW5kZXguaHRtbCBiL2J1aWxkcy93aW5kb3dzL3ZjMjAxMC9pbmRleC5odG1sCmluZGV4IGRjYjE5NDQuLmMwM2JlNzcgMTAwNjQ0Ci0tLSBhL2J1aWxkcy93aW5kb3dzL3ZjMjAxMC9pbmRleC5odG1sCisrKyBiL2J1aWxkcy93aW5kb3dzL3ZjMjAxMC9pbmRleC5odG1sCkBAIC0xMiw3ICsxMiw3IEBACiA8cD5UaGlzIGRpcmVjdG9yeSBjb250YWlucyBzb2x1dGlvbiBhbmQgcHJvamVjdCBmaWxlcyBmb3IKIFZpc3VhbCZuYnNwO0MrKyZuYnNwOzIwMTAgb3IgbmV3ZXIsIG5hbWVkIDx0dD5mcmVldHlwZS5zbG48L3R0PiwKIGFuZCA8dHQ+ZnJlZXR5cGUudmN4cHJvajwvdHQ+LiAgSXQgY29tcGlsZXMgdGhlIGZvbGxvd2luZyBsaWJyYXJpZXMKLWZyb20gdGhlIEZyZWVUeXBlIDIuMTEuMSBzb3VyY2VzOjwvcD4KK2Zyb20gdGhlIEZyZWVUeXBlIDIuMTMuMCBzb3VyY2VzOjwvcD4KIAogPHVsPgogICA8bGk+ZnJlZXR5cGUuZGxsIHVzaW5nICdSZWxlYXNlJyBvciAnRGVidWcnIGNvbmZpZ3VyYXRpb25zPC9saT4KZGlmZiAtLWdpdCBhL2J1aWxkcy93aW5kb3dzL3Zpc3VhbGMvZnJlZXR5cGUudmNwcm9qIGIvYnVpbGRzL3dpbmRvd3MvdmlzdWFsYy9mcmVldHlwZS52Y3Byb2oKaW5kZXggNGNiYjZiOS4uYTE2NzgyYyAxMDA2NDQKLS0tIGEvYnVpbGRzL3dpbmRvd3MvdmlzdWFsYy9mcmVldHlwZS52Y3Byb2oKKysrIGIvYnVpbGRzL3dpbmRvd3MvdmlzdWFsYy9mcmVldHlwZS52Y3Byb2oKQEAgLTQzNSw5ICs0MzUsMTcgQEAKIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXHNyY1xzZGZcc2RmLmMiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxzcmNcc21vb3RoXHNtb290aC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cc3JjXHN2Z1xzdmcuYyINCisJCQkJPg0KKwkJCTwvRmlsZT4NCiAJCQk8RmlsdGVyDQogCQkJCU5hbWU9IkZUX01PRFVMRVMiDQogCQkJCT4NCmRpZmYgLS1naXQgYS9idWlsZHMvd2luZG93cy92aXN1YWxjL2luZGV4Lmh0bWwgYi9idWlsZHMvd2luZG93cy92aXN1YWxjL2luZGV4Lmh0bWwKaW5kZXggZDBjOGYyZi4uNmE3MGIzNCAxMDA2NDQKLS0tIGEvYnVpbGRzL3dpbmRvd3MvdmlzdWFsYy9pbmRleC5odG1sCisrKyBiL2J1aWxkcy93aW5kb3dzL3Zpc3VhbGMvaW5kZXguaHRtbApAQCAtMTIsNyArMTIsNyBAQAogPHA+VGhpcyBkaXJlY3RvcnkgY29udGFpbnMgcHJvamVjdCBmaWxlcyA8dHQ+ZnJlZXR5cGUuZHNwPC90dD4gZm9yCiBWaXN1YWwgQysrIDYuMCwgYW5kIDx0dD5mcmVldHlwZS52Y3Byb2o8L3R0PiBmb3IgVmlzdWFsIEMrKyAyMDAyCiB0aHJvdWdoIDIwMDgsIHdoaWNoIHlvdSBtaWdodCBuZWVkIHRvIHVwZ3JhZGUgYXV0b21hdGljYWxseS4KLUl0IGNvbXBpbGVzIHRoZSBmb2xsb3dpbmcgbGlicmFyaWVzIGZyb20gdGhlIEZyZWVUeXBlIDIuMTEuMSBzb3VyY2VzOjwvcD4KK0l0IGNvbXBpbGVzIHRoZSBmb2xsb3dpbmcgbGlicmFyaWVzIGZyb20gdGhlIEZyZWVUeXBlIDIuMTMuMCBzb3VyY2VzOjwvcD4KIAogPHVsPgogICA8bGk+ZnJlZXR5cGUuZGxsIHVzaW5nICdSZWxlYXNlJyBvciAnRGVidWcnIGNvbmZpZ3VyYXRpb25zPC9saT4KZGlmZiAtLWdpdCBhL2J1aWxkcy93aW5kb3dzL3Zpc3VhbGNlL2luZGV4Lmh0bWwgYi9idWlsZHMvd2luZG93cy92aXN1YWxjZS9pbmRleC5odG1sCmluZGV4IGI1MGVmNzkuLmNlYmFiMjkgMTAwNjQ0Ci0tLSBhL2J1aWxkcy93aW5kb3dzL3Zpc3VhbGNlL2luZGV4Lmh0bWwKKysrIGIvYnVpbGRzL3dpbmRvd3MvdmlzdWFsY2UvaW5kZXguaHRtbApAQCAtMjEsNyArMjEsNyBAQAogICA8bGk+UFBDL1NQIFdNNiAoV2luZG93cyBNb2JpbGUgNik8L2xpPgogPC91bD4KIAotSXQgY29tcGlsZXMgdGhlIGZvbGxvd2luZyBsaWJyYXJpZXMgZnJvbSB0aGUgRnJlZVR5cGUgMi4xMS4xIHNvdXJjZXM6PC9wPgorSXQgY29tcGlsZXMgdGhlIGZvbGxvd2luZyBsaWJyYXJpZXMgZnJvbSB0aGUgRnJlZVR5cGUgMi4xMy4wIHNvdXJjZXM6PC9wPgogCiA8dWw+CiAgIDxwcmU+CmRpZmYgLS1naXQgYS9idWlsZHMvd2luZG93cy93MzItYmNjLm1rIGIvYnVpbGRzL3dpbmRvd3MvdzMyLWJjYy5tawppbmRleCBkNDk3ZGQxLi5lN2NmNjY4IDEwMDY0NAotLS0gYS9idWlsZHMvd2luZG93cy93MzItYmNjLm1rCisrKyBiL2J1aWxkcy93aW5kb3dzL3czMi1iY2MubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvd2luZG93cy93MzItYmNjZC5tayBiL2J1aWxkcy93aW5kb3dzL3czMi1iY2NkLm1rCmluZGV4IDcwMWI4M2QuLjY0ZGFmZGIgMTAwNjQ0Ci0tLSBhL2J1aWxkcy93aW5kb3dzL3czMi1iY2NkLm1rCisrKyBiL2J1aWxkcy93aW5kb3dzL3czMi1iY2NkLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL3dpbmRvd3MvdzMyLWRldi5tayBiL2J1aWxkcy93aW5kb3dzL3czMi1kZXYubWsKaW5kZXggYTJmNDY0NC4uN2M4OWFkMiAxMDA2NDQKLS0tIGEvYnVpbGRzL3dpbmRvd3MvdzMyLWRldi5taworKysgYi9idWlsZHMvd2luZG93cy93MzItZGV2Lm1rCkBAIC01LDcgKzUsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL3dpbmRvd3MvdzMyLWdjYy5tayBiL2J1aWxkcy93aW5kb3dzL3czMi1nY2MubWsKaW5kZXggNDExNzQ1My4uZjM3YzE4NSAxMDA2NDQKLS0tIGEvYnVpbGRzL3dpbmRvd3MvdzMyLWdjYy5taworKysgYi9idWlsZHMvd2luZG93cy93MzItZ2NjLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL3dpbmRvd3MvdzMyLWljYy5tayBiL2J1aWxkcy93aW5kb3dzL3czMi1pY2MubWsKaW5kZXggZWJhYjQ1ZS4uY2Y1MWNjZSAxMDA2NDQKLS0tIGEvYnVpbGRzL3dpbmRvd3MvdzMyLWljYy5taworKysgYi9idWlsZHMvd2luZG93cy93MzItaWNjLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvYnVpbGRzL3dpbmRvd3MvdzMyLWludGwubWsgYi9idWlsZHMvd2luZG93cy93MzItaW50bC5tawppbmRleCAwZmVmOGQ3Li4wYzE2YjRjIDEwMDY0NAotLS0gYS9idWlsZHMvd2luZG93cy93MzItaW50bC5taworKysgYi9idWlsZHMvd2luZG93cy93MzItaW50bC5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy93aW5kb3dzL3czMi1sY2MubWsgYi9idWlsZHMvd2luZG93cy93MzItbGNjLm1rCmluZGV4IDdhZWQ1YjUuLjBkZDc0MGUgMTAwNjQ0Ci0tLSBhL2J1aWxkcy93aW5kb3dzL3czMi1sY2MubWsKKysrIGIvYnVpbGRzL3dpbmRvd3MvdzMyLWxjYy5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2J1aWxkcy93aW5kb3dzL3czMi1taW5ndzMyLm1rIGIvYnVpbGRzL3dpbmRvd3MvdzMyLW1pbmd3MzIubWsKaW5kZXggNjczMTc3OC4uZGMzMjNiZCAxMDA2NDQKLS0tIGEvYnVpbGRzL3dpbmRvd3MvdzMyLW1pbmd3MzIubWsKKysrIGIvYnVpbGRzL3dpbmRvd3MvdzMyLW1pbmd3MzIubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvd2luZG93cy93MzItdmNjLm1rIGIvYnVpbGRzL3dpbmRvd3MvdzMyLXZjYy5tawppbmRleCAyNzg2MjRmLi5lZWE3ZGI4IDEwMDY0NAotLS0gYS9idWlsZHMvd2luZG93cy93MzItdmNjLm1rCisrKyBiL2J1aWxkcy93aW5kb3dzL3czMi12Y2MubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvd2luZG93cy93MzItd2F0Lm1rIGIvYnVpbGRzL3dpbmRvd3MvdzMyLXdhdC5tawppbmRleCBkZjJlY2UzLi41MzkyZDJhIDEwMDY0NAotLS0gYS9idWlsZHMvd2luZG93cy93MzItd2F0Lm1rCisrKyBiL2J1aWxkcy93aW5kb3dzL3czMi13YXQubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9idWlsZHMvd2luZG93cy93aW4zMi1kZWYubWsgYi9idWlsZHMvd2luZG93cy93aW4zMi1kZWYubWsKaW5kZXggMTViZmQwYy4uMzI0MjY1MSAxMDA2NDQKLS0tIGEvYnVpbGRzL3dpbmRvd3Mvd2luMzItZGVmLm1rCisrKyBiL2J1aWxkcy93aW5kb3dzL3dpbjMyLWRlZi5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCA1ODRlNmVjLi43NWY4YjdiIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0xLDYgKzEsNiBAQAogIyEvYmluL3NoCiAjCi0jIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKQEAgLTE4LDcgKzE4LDcgQEAKICMgcmVzcGVjdCBHTlVNQUtFIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CiBpZiB0ZXN0ICJ4JEdOVU1BS0UiID0geDsgdGhlbgogICBpZiB0ZXN0ICJ4JE1BS0UiID0geDsgdGhlbgotICAgIGlmIHRlc3QgInhgbWFrZSAtdiAyPi9kZXYvbnVsbCB8IGVncmVwICdHTlV8bWFrZXBwJ2AiID0geDsgdGhlbgorICAgIGlmIHRlc3QgInhgbWFrZSAtdiAyPi9kZXYvbnVsbCB8IGdyZXAgLUUgJ0dOVXxtYWtlcHAnYCIgPSB4OyB0aGVuCiAgICAgICBNQUtFPWdtYWtlCiAgICAgZWxzZQogICAgICAgTUFLRT1tYWtlCkBAIC0yOCw3ICsyOCw3IEBACiAgIE1BS0U9JEdOVU1BS0UKIGZpCiAKLWlmIHRlc3QgInhgJE1BS0UgLXYgMj4vZGV2L251bGwgfCBlZ3JlcCAnR05VfG1ha2VwcCdgIiA9IHg7IHRoZW4KK2lmIHRlc3QgInhgJE1BS0UgLXYgMj4vZGV2L251bGwgfCBncmVwIC1FICdHTlV8bWFrZXBwJ2AiID0geDsgdGhlbgogICBlY2hvICJHTlUgbWFrZSAoPj0gMy44MSkgb3IgbWFrZXBwICg+PSAyLjApIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIEZyZWVUeXBlMi4iID4mMgogICBlY2hvICJQbGVhc2UgdHJ5IiA+JjIKICAgZWNobyA+JjIKZGlmZiAtLWdpdCBhL2RldmVsL2Z0MmJ1aWxkLmggYi9kZXZlbC9mdDJidWlsZC5oCmluZGV4IDExNzUzMmIuLjgyZmRiMzAgMTAwNjQ0Ci0tLSBhL2RldmVsL2Z0MmJ1aWxkLmgKKysrIGIvZGV2ZWwvZnQyYnVpbGQuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIDIgYnVpbGQgYW5kIHNldHVwIG1hY3JvcyAoZGV2ZWxvcG1lbnQgdmVyc2lvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvZGV2ZWwvZnRvcHRpb24uaCBiL2RldmVsL2Z0b3B0aW9uLmgKaW5kZXggZjkyYjQxNi4uMWFlOWIxYSAxMDA2NDQKLS0tIGEvZGV2ZWwvZnRvcHRpb24uaAorKysgYi9kZXZlbC9mdG9wdGlvbi5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVXNlci1zZWxlY3RhYmxlIGNvbmZpZ3VyYXRpb24gbWFjcm9zIChzcGVjaWZpY2F0aW9uIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTIxOSw2ICsyMTksMTAgQEAKICAgICogICBJZiB5b3UgdXNlIGEgYnVpbGQgc3lzdGVtIGxpa2UgY21ha2Ugb3IgdGhlIGBjb25maWd1cmVgIHNjcmlwdCwKICAgICogICBvcHRpb25zIHNldCBieSB0aG9zZSBwcm9ncmFtcyBoYXZlIHByZWNlZGVuY2UsIG92ZXJ3cml0aW5nIHRoZSB2YWx1ZQogICAgKiAgIGhlcmUgd2l0aCB0aGUgY29uZmlndXJlZCBvbmUuCisgICAqCisgICAqICAgSWYgeW91IHVzZSB0aGUgR05VIG1ha2UgYnVpbGQgc3lzdGVtIGRpcmVjdGx5ICh0aGF0IGlzLCB3aXRob3V0IHRoZQorICAgKiAgIGBjb25maWd1cmVgIHNjcmlwdCkgYW5kIHlvdSBkZWZpbmUgdGhpcyBtYWNybywgeW91IGFsc28gaGF2ZSB0byBwYXNzCisgICAqICAgYFNZU1RFTV9aTElCPXllc2AgYXMgYW4gYXJndW1lbnQgdG8gbWFrZS4KICAgICovCiAvKiAjZGVmaW5lIEZUX0NPTkZJR19PUFRJT05fU1lTVEVNX1pMSUIgKi8KIApAQCAtNDQxLDYgKzQ0NSw4IEBACiAgICAqICAgdHJhY2UgbG9nIG1lc3NhZ2VzIHRvIGEgZmlsZSBpbnN0ZWFkIG9mIGBzdGRlcnJgLiAgRm9yIHdyaXRpbmcgbG9ncwogICAgKiAgIHRvIGEgZmlsZSwgRnJlZVR5cGUgdXNlcyBhbiB0aGUgZXh0ZXJuYWwgYGRsZ2AgbGlicmFyeSAodGhlIHNvdXJjZQogICAgKiAgIGNvZGUgaXMgaW4gYHNyYy9kbGdgKS4KKyAgICoKKyAgICogICBUaGlzIG9wdGlvbiBuZWVkcyBhIEM5OSBjb21waWxlci4KICAgICovCiAjZGVmaW5lIEZUX0RFQlVHX0xPR0dJTkcKIApAQCAtNDU1LDkgKzQ2MSw5IEBACiAgICAqICAgd2hpbGUgY29tcGlsaW5nIGluICdyZWxlYXNlJyBtb2RlKToKICAgICoKICAgICogICBgYGAKLSAgICogICAgIF9hZl9kZWJ1Z19kaXNhYmxlX2hvcnpfaGludHMKLSAgICogICAgIF9hZl9kZWJ1Z19kaXNhYmxlX3ZlcnRfaGludHMKLSAgICogICAgIF9hZl9kZWJ1Z19kaXNhYmxlX2JsdWVfaGludHMKKyAgICogICAgIGFmX2RlYnVnX2Rpc2FibGVfaG9yel9oaW50c18KKyAgICogICAgIGFmX2RlYnVnX2Rpc2FibGVfdmVydF9oaW50c18KKyAgICogICAgIGFmX2RlYnVnX2Rpc2FibGVfYmx1ZV9oaW50c18KICAgICogICBgYGAKICAgICoKICAgICogICBBZGRpdGlvbmFsbHksIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHByb3ZpZGUgZHVtcHMgb2YgdmFyaW91cwpAQCAtNDc0LDcgKzQ4MCw3IEBACiAgICAqICAgQXMgYW4gYXJndW1lbnQsIHRoZXkgdXNlIGFub3RoZXIgZ2xvYmFsIHZhcmlhYmxlOgogICAgKgogICAgKiAgIGBgYAotICAgKiAgICAgX2FmX2RlYnVnX2hpbnRzCisgICAqICAgICBhZl9kZWJ1Z19oaW50c18KICAgICogICBgYGAKICAgICoKICAgICogICBQbGVhc2UgaGF2ZSBhIGxvb2sgYXQgdGhlIGBmdGdyaWRgIGRlbW8gcHJvZ3JhbSB0byBzZWUgaG93IHRob3NlCkBAIC01MjMsNiArNTI5LDIwIEBACiAKICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAqCisgICAqIE9wZW5UeXBlIFNWRyBHbHlwaCBTdXBwb3J0CisgICAqCisgICAqICAgU2V0dGluZyB0aGlzIG1hY3JvIGVuYWJsZXMgc3VwcG9ydCBmb3IgT3BlblR5cGUgU1ZHIGdseXBocy4gIEJ5CisgICAqICAgZGVmYXVsdCwgRnJlZVR5cGUgY2FuIG9ubHkgZmV0Y2ggU1ZHIGRvY3VtZW50cy4gIEhvd2V2ZXIsIGl0IGNhbiBhbHNvCisgICAqICAgcmVuZGVyIHRoZW0gaWYgZXh0ZXJuYWwgcmVuZGVyaW5nIGhvb2sgZnVuY3Rpb25zIGFyZSBwbHVnZ2VkIGluIGF0CisgICAqICAgcnVudGltZS4KKyAgICoKKyAgICogICBNb3JlIGRldGFpbHMgb24gdGhlIGhvb2tzIGNhbiBiZSBmb3VuZCBpbiBmaWxlIGBvdHN2Zy5oYC4KKyAgICovCisjZGVmaW5lIEZUX0NPTkZJR19PUFRJT05fU1ZHCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKICAgICogRXJyb3IgU3RyaW5ncwogICAgKgogICAgKiAgIElmIHRoaXMgbWFjcm8gaXMgc2V0LCBgRlRfRXJyb3JfU3RyaW5nYCB3aWxsIHJldHVybiBtZWFuaW5nZnVsCkBAIC01NjQsMTIgKzU4NCwxMiBAQAogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICoKICAgICogRGVmaW5lIGBUVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVNgIGlmIHlvdSB3YW50IHRvIGJlIGFibGUgdG8KLSAgICogbG9hZCBhbmQgZW51bWVyYXRlIHRoZSBnbHlwaCBQb3N0c2NyaXB0IG5hbWVzIGluIGEgVHJ1ZVR5cGUgb3IgT3BlblR5cGUKKyAgICogbG9hZCBhbmQgZW51bWVyYXRlIFBvc3RzY3JpcHQgbmFtZXMgb2YgZ2x5cGhzIGluIGEgVHJ1ZVR5cGUgb3IgT3BlblR5cGUKICAgICogZmlsZS4KICAgICoKLSAgICogTm90ZSB0aGF0IHdoZW4geW91IGRvIG5vdCBjb21waWxlIHRoZSAncHNuYW1lcycgbW9kdWxlIGJ5IHVuZGVmaW5pbmcgdGhlCi0gICAqIGFib3ZlIGBGVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVNgLCB0aGUgJ3NmbnQnIG1vZHVsZSB3aWxsCi0gICAqIGNvbnRhaW4gYWRkaXRpb25hbCBjb2RlIHVzZWQgdG8gcmVhZCB0aGUgUFMgTmFtZXMgdGFibGUgZnJvbSBhIGZvbnQuCisgICAqIE5vdGUgdGhhdCBpZiB5b3UgZG8gbm90IGNvbXBpbGUgdGhlICdwc25hbWVzJyBtb2R1bGUgYnkgdW5kZWZpbmluZyB0aGUKKyAgICogYWJvdmUgYEZUX0NPTkZJR19PUFRJT05fUE9TVFNDUklQVF9OQU1FU2AgbWFjcm8sIHRoZSAnc2ZudCcgbW9kdWxlIHdpbGwKKyAgICogY29udGFpbiBhZGRpdGlvbmFsIGNvZGUgdG8gcmVhZCB0aGUgUG9zdFNjcmlwdCBuYW1lIHRhYmxlIGZyb20gYSBmb250LgogICAgKgogICAgKiAoQnkgZGVmYXVsdCwgdGhlIG1vZHVsZSB1c2VzICdwc25hbWVzJyB0byBleHRyYWN0IGdseXBoIG5hbWVzLikKICAgICovCkBAIC03MjEsNiArNzQxLDI0IEBACiAKICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAqCisgICAqIERlZmluZSBgVFRfQ09ORklHX09QVElPTl9OT19CT1JJTkdfRVhQQU5TSU9OYCBpZiB5b3Ugd2FudCB0byBleGNsdWRlCisgICAqIHN1cHBvcnQgZm9yICdib3JpbmcnIE9wZW5UeXBlIHNwZWNpZmljYXRpb24gZXhwYW5zaW9ucy4KKyAgICoKKyAgICogICBodHRwczovL2dpdGh1Yi5jb20vaGFyZmJ1enovYm9yaW5nLWV4cGFuc2lvbi1zcGVjCisgICAqCisgICAqIFJpZ2h0IG5vdywgdGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgY292ZXJlZDoKKyAgICoKKyAgICogICAtICdhdmFyJyB2ZXJzaW9uIDIuMAorICAgKgorICAgKiBNb3N0IGxpa2VseSwgdGhpcyBpcyBhIHRlbXBvcmFyeSBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBiZSByZW1vdmVkIGluCisgICAqIHRoZSBuZWFyIGZ1dHVyZSwgc2luY2UgaXQgaXMgYXNzdW1lZCB0aGF0IGV2ZW50dWFsbHkgdGhvc2UgZmVhdHVyZXMgYXJlCisgICAqIGFkZGVkIHRvIHRoZSBPcGVuVHlwZSBzdGFuZGFyZC4KKyAgICovCisvKiAjZGVmaW5lIFRUX0NPTkZJR19PUFRJT05fTk9fQk9SSU5HX0VYUEFOU0lPTiAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCiAgICAqIERlZmluZSBgVFRfQ09ORklHX09QVElPTl9CREZgIGlmIHlvdSB3YW50IHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgYW4KICAgICogZW1iZWRkZWQgJ0JERn4nIHRhYmxlIHdpdGhpbiBTRk5ULWJhc2VkIGJpdG1hcCBmb3JtYXRzLgogICAgKi8KQEAgLTEwMDAsOCArMTAzOCw4IEBACiAjZXJyb3IgIkludmFsaWQgQ0ZGIGRhcmtlbmluZyBwYXJhbWV0ZXJzISIKICNlbmRpZgogCi1GVF9FTkRfSEVBREVSCiAKK0ZUX0VORF9IRUFERVIKIAogI2VuZGlmIC8qIEZUT1BUSU9OX0hfICovCiAKZGlmZiAtLWdpdCBhL2RvY3MvQ0hBTkdFUyBiL2RvY3MvQ0hBTkdFUwppbmRleCA1ZWI4Y2RiLi4zYzZhODc3IDEwMDY0NAotLS0gYS9kb2NzL0NIQU5HRVMKKysrIGIvZG9jcy9DSEFOR0VTCkBAIC0xLDQgKzEsMTY1IEBACi1DSEFOR0VTIEJFVFdFRU4gMi4xMS4wIGFuZCAyLjExLjEKK0NIQU5HRVMgQkVUV0VFTiAyLjEyLjEgYW5kIDIuMTMuMCAoMjAyMy1GZWItMDkpCisKKyAgSS4gSU1QT1JUQU5UIENIQU5HRVMKKworICAtIFRoZSBkZW1vIHByb2dyYW0gYGZ0aW5zcGVjdGAgaGFzICBiZWVuIGNvbXBsZXRlbHkgdXBkYXRlZCBhbmQgbXVjaAorICAgIGVuaGFuY2VkLiAgSXQgbm93ICBjb21iaW5lcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiAgYWxtb3N0IGFsbCBvdGhlcgorICAgIGdyYXBoaWNhbCBGcmVlVHlwZSAgZGVtbyBwcm9ncmFtcyBpbnRvIGEgIHNpbmdsZSBhcHBsaWNhdGlvbiBiYXNlZAorICAgIG9uIHRoZSBRdCBmcmFtZXdvcmsuICBUaGlzIHdhcyBDaGFybGllIEppYW5nJ3MgR1NvQyAyMDIyIHByb2plY3QuCisKKyAgLSBUaGUgJ0NPTFInIHYxIEFQSSBpcyBub3cgY29uc2lkZXJlZCBhcyBzdGFibGUuCisKKyAgICAgIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy90eXBvZ3JhcGh5L29wZW50eXBlL3NwZWMvY29scgorCisKKyAgSUlJLiBNSVNDRUxMQU5FT1VTCisKKyAgLSBGb3IgIE9wZW5UeXBlICBWYXJpYWJsZSBGb250cywgIGBhdmFyYCAgdGFibGUgIGZvcm1hdCAyLjAgIGlzICBub3cKKyAgICBzdXBwb3J0ZWQuICBUaGUgY29kZSB3YXMgY29udHJpYnV0ZWQgYnkgQmVoZGFkIEVzZmFoYm9kLgorCisgICAgTm90ZSB0aGF0IHRoaXMgaXMgYW4gZXh0ZW5zaW9uIHN1cHBvcnRlZCBvbiByZWNlbnQgQXBwbGUgcGxhdGZvcm1zCisgICAgYW5kIGJ5IEhhcmZCdXp6LCBidXQgbm90IHlldCBpbiB0aGUgT3BlblR5cGUgc3RhbmRhcmQhICBTZWUKKworICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2hhcmZidXp6L2JvcmluZy1leHBhbnNpb24tc3BlYy9ibG9iL21haW4vYXZhcjIubWQKKworICAgIGZvciB0aGUgc3BlY2lmaWNhdGlvbi4gIFRvIGRlYWN0aXZhdGUgaXQsIGRlZmluZSB0aGUgY29uZmlndXJhdGlvbgorICAgIG1hY3JvICdUVF9DT05GSUdfT1BUSU9OX05PX0JPUklOR19FWFBBTlNJT04nLgorCisgIC0gQSBuZXcgQVBJICBgRlRfR2x5cGhTbG90X1NsYW50YCB0byBzbGFudCBhIGdseXBoIGJ5ICBhIGdpdmVuIGFuZ2xlCisgICAgaGFzIGJlZW4gYWRkZWQuICAgTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgIHBhcnQgb2YgYGZ0c3ludGguaGAsCisgICAgd2hpY2ggaXMgc3RpbGwgY29uc2lkZXJlZCB0byBiZSBpbiBhbHBoYSBzdGFnZS4KKworICAtIFRydWVUeXBlIGludGVycHJldGVyIHZlcnNpb24gMzggIChhbHNvIGtub3duIGFzICdJbmZpbmFsaXR5JykgdGhhdAorICAgIHdhcyBmaXJzdCBpbnRyb2R1Y2VkIGFib3V0IDEwIHllYXJzICBhZ28gaW4gRnJlZVR5cGUgMi40LjExIGlzIG5vdworICAgIGRlcHJlY2F0ZWQgYW5kIHNsYXRlZCB0byBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHZlcnNpb24uICBUcnVlVHlwZQorICAgIGludGVycHJldGVyIHZlcnNpb24gNDAgaGFzIGJlZW4gRnJlZVR5cGUncyBkZWZhdWx0IHZlcnNpb24gZm9yIHNpeAorICAgIHllYXJzIG5vdyBhbmQgcHJvdmlkZXMgYW4gZXhjZWxsZW50IGFsdGVybmF0aXZlLiAgVGhpcyBpcyB0aGUgbGFzdAorICAgIEZyZWVUeXBlICAgICB2ZXJzaW9uICAgICB3aXRoICAgIFRUX0lOVEVSUFJFVEVSX1ZFUlNJT05fMzggICAgIGFuZAorICAgIFRUX0lOVEVSUFJFVEVSX1ZFUlNJT05fNDAgdHJlYXRlZCBkaWZmZXJlbnRseS4KKworICAtIFRoZSAgb25seSAgcmVmZXJlbmNlZCAgYnV0IG5ldmVyICBkb2N1bWVudGVkICBjb25maWd1cmF0aW9uICBtYWNybworICAgIGBGVF9DT05GSUdfT1BUSU9OX05PX0dMWVBIX05BTUVTYCBoYXMgYmVlbiByZW1vdmVkLgorCisgIC0gVGhlIGBmdGJlbmNoYCBkZW1vICBwcm9ncmFtIGdvdCBhIG5ldyBjb21tYW5kIGxpbmUgIG9wdGlvbiBgLWVgIHRvCisgICAgc2V0IGEgY2hhcm1hcCBpbmRleC4KKworICAtIFNwZWNpZnlpbmcgIGEgcG9pbnQgIHNpemUgaXMgIG5vdyBvcHRpb25hbCAgZm9yIHRoZSAgZGVtbyBwcm9ncmFtcworICAgIGBmdGdyaWRgLCBgZnRtdWx0aWAsICBgZnRzdHJpbmdgLCBhbmQgIGBmdHZpZXdgLiAgSWYgbm90ICBnaXZlbiwgYQorICAgIGRlZmF1bHQgc2l6ZSBpcyB1c2VkLgorCisgIC0gRm9yICBgZnRncmlkYCwgIGBmdHN0cmluZ2AsIGFuZCAgYGZ0dmlld2AsICBvcHRpb24gIGAtZWAgbm93ICBhbHNvCisgICAgYWNjZXB0cyBhIG51bWVyaWMgdmFsdWUgdG8gc2V0IGEgY2hhcm1hcCBpbmRleC4KKworICAtIEluICBgZnRzdHJpbmdgLCBpdCAgaXMgIG5vdyAgcG9zc2libGUgdG8gIHNldCAgdGhlIGRpc3BsYXllZCAgdGV4dAorICAgIGludGVyYWN0aXZlbHkgYnkgcHJlc3NpbmcgdGhlICdFbnRlcicga2V5LgorCisgIC0gYGZ0bXVsdGlgIGNhbiBub3cgaGFuZGxlIHVwIHRvIDE2IGRlc2lnbiBheGVzLgorCisgIC0gVG8gIGF2b2lkICByZXNlcnZlZCBpZGVudGlmaWVycyAgdGhhdCAgYXJlICBnbG9iYWxseSBkZWZpbmVkLCAgdGhlCisgICAgYXV0by1oaW50ZXIgIGRlYnVnZ2luZyAgIG1hY3JvcyAgKHdoaWNoICBhcmUgIG9ubHkgICBhdmFpbGFibGUgIGlmCisgICAgYEZUX0RFQlVHX0FVVE9GSVRgIGlzIGRlZmluZWQpCisKKyAgICBgYGAKKyAgICBfYWZfZGVidWdfZGlzYWJsZV9ob3J6X2hpbnRzCisgICAgX2FmX2RlYnVnX2Rpc2FibGVfdmVydF9oaW50cworICAgIF9hZl9kZWJ1Z19kaXNhYmxlX2JsdWVfaGludHMKKyAgICBfYWZfZGVidWdfaGludHMKKyAgICBgYGAKKworICAgIGhhdmUgYmVlbiByZW5hbWVkIHRvCisKKyAgICBgYGAKKyAgICBhZl9kZWJ1Z19kaXNhYmxlX2hvcnpfaGludHNfCisgICAgYWZfZGVidWdfZGlzYWJsZV92ZXJ0X2hpbnRzXworICAgIGFmX2RlYnVnX2Rpc2FibGVfYmx1ZV9oaW50c18KKyAgICBhZl9kZWJ1Z19oaW50c18KKyAgICBgYGAKKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0NIQU5HRVMgQkVUV0VFTiAyLjEyLjAgYW5kIDIuMTIuMSAoMjAyMi1NYXktMDEpCisKKyAgSS4gSU1QT1JUQU5UIEJVRyBGSVhFUworCisgIC0gTG9hZGluZyBDRkYgZm9udHMgc29tZXRpbWVzIG1hZGUgRnJlZVR5cGUgY3Jhc2ggKGJ1ZyBpbnRyb2R1Y2VkIGluCisgICAgdmVyc2lvbiAyLjEyLjApCisKKyAgLSBMb2FkaW5nICBhIGZ1bGx5ICBoaW50ZWQgIFRydWVUeXBlIGdseXBoICBhICBzZWNvbmQgdGltZSAgKHdpdGhvdXQKKyAgICBjYWNoaW5nKSBzb21ldGltZXMgeWllbGRlZCBkaWZmZXJlbnQgcmVuZGVyaW5nIHJlc3VsdHMgaWYgVHJ1ZVR5cGUKKyAgICBoaW50aW5nIHdhcyBhY3RpdmUgKGJ1ZyBpbnRyb2R1Y2VkIGluIHZlcnNpb24gMi4xMi4wKS4KKworICAtIFRoZSBnZW5lcmF0aW9uIG9mIHRoZSBwa2ctY29uZmlnIGZpbGUgYGZyZWV0eXBlMi5wY2Agd2FzIGJyb2tlbiBpZgorICAgIHRoZSBidWlsZCB3YXMgZG9uZSB3aXRoIGNtYWtlIChidWcgaW50cm9kdWNlZCBpbiB2ZXJzaW9uIDIuMTIuMCkuCisKKworICBJSS4gTUlTQ0VMTEFORU9VUworCisgIC0gTmV3IG9wdGlvbiBgLS13aXRoLWxpYnJzdmdgIGZvciAgdGhlIGBjb25maWd1cmVgIHNjcmlwdCBmb3IgYmV0dGVyCisgICAgRnJlZVR5cGUgZGVtbyBzdXBwb3J0LgorCisgIC0gVGhlICBtZXNvbiAgYnVpbGQgIG5vICBsb25nZXIgZW5mb3JjZXMgIGJvdGggIHN0YXRpYyAgYW5kICBkeW5hbWljCisgICAgdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnkgYnkgZGVmYXVsdC4KKworICAtIFRoZSBpbnRlcm5hbCAgemxpYiBsaWJyYXJ5IHdhcyAgdXBkYXRlZCB0byB2ZXJzaW9uICAxLjIuMTIuICBOb3RlLAorICAgIGhvd2V2ZXIsIHRoYXQgIEZyZWVUeXBlIGlzICpub3QqIGFmZmVjdGVkICBieSBDVkUtMjAxOC0yNTAzMiBzaW5jZQorICAgIGl0IG9ubHkgZG9lcyBkZWNvbXByZXNzaW9uLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQ0hBTkdFUyBCRVRXRUVOIDIuMTEuMSBhbmQgMi4xMi4wICgyMDIyLU1hci0zMCkKKworICBJLiBJTVBPUlRBTlQgQ0hBTkdFUworCisgIC0gRnJlZVR5cGUgIG5vdyAgIGhhbmRsZXMgIE9ULVNWRyAgZm9udHMsICB0byAgIGJlICBjb250cm9sbGVkICB3aXRoCisgICAgYEZUX0NPTkZJR19PUFRJT05fU1ZHYCAgY29uZmlndXJhdGlvbiBtYWNyby4gICBCeSBkZWZhdWx0LCAgaXQgY2FuCisgICAgb25seSBsb2FkIHRoZSAnU1ZHICcgdGFibGUgb2YgYW4gT3BlblR5cGUgZm9udC4gIEhvd2V2ZXIsIGJ5IHVzaW5nCisgICAgdGhlIGBzdmctaG9va3NgIHByb3BlcnR5IG9mIHRoZSBuZXcgJ290LXN2ZycgbW9kdWxlIGl0IGlzIHBvc3NpYmxlCisgICAgdG8gcmVnaXN0ZXIgYW4gIGV4dGVybmFsIFNWRyByZW5kZXJpbmcgZW5naW5lLiAgIFRoZSBGcmVlVHlwZSBkZW1vCisgICAgcHJvZ3JhbXMgIGhhdmUgYmVlbiAgc2V0ICB1cCAgdG8gdXNlICAnbGlicnN2ZycgIGFzIHRoZSAgcmVuZGVyaW5nCisgICAgbGlicmFyeS4KKworICAgIFRoaXMgd29yayB3YXMgTW9hemluIEtoYXR0aSdzIEdTb0MgMjAxOSBwcm9qZWN0LgorCisKKyAgSUkuIE1JU0NFTExBTkVPVVMKKworICAtIFRoZSBoYW5kbGluZyBvZiBmb250cyB3aXRoIGFuICdzYml4JyB0YWJsZSBoYXMgYmVlbiBpbXByb3ZlZC4KKworICAgIC0gQ29ycmVjdGVkIGJpdG1hcCBvZmZzZXRzLgorCisgICAgLSBBICBuZXcgdGFnICBgRlRfUEFSQU1fVEFHX0lHTk9SRV9TQklYYCBmb3IgIGBGVF9PcGVuX0ZhY2VgIG1ha2VzCisgICAgICBGcmVlVHlwZSBpZ25vcmUgYW4gJ3NiaXgnIHRhYmxlIGluIGEgZm9udCwgYWxsb3dpbmcgYXBwbGljYXRpb25zCisgICAgICB0byBhY2Nlc3MgdGhlIGZvbnQncyBvdXRsaW5lIGdseXBocy4KKworICAgIC0gYEZUX0ZBQ0VfRkxBR19TQklYYCAgYW5kICAgYEZUX0ZBQ0VfRkxBR19TQklYX09WRVJMQVlgICB0b2dldGhlcgorICAgICAgd2l0aCB0aGVpciAgY29ycmVzcG9uZGluZyBwcmVwcm9jZXNzb3IgbWFjcm9zICBgRlRfSEFTX1NCSVhgIGFuZAorICAgICAgYEZUX0hBU19TQklYX09WRVJMQVlgIGVuYWJsZSBhcHBsaWNhdGlvbnMgdG8gdHJlYXQgJ3NiaXgnIHRhYmxlcworICAgICAgYXMgZGVzY3JpYmVkIGluIHRoZSBPcGVuVHlwZSBzcGVjaWZpY2F0aW9uLgorCisgIC0gVGhlIGludGVybmFsICd6bGliJyAgY29kZSBoYXMgYmVlbiB1cGRhdGVkIHRvIGJlICBpbiBzeW5jIHdpdGggdGhlCisgICAgY3VycmVudCAnemxpYicgdmVyc2lvbiAoMS4yLjExKS4KKworICAtIFRoZSAgcHJldmlvdXNseSBpbnRlcm5hbCAgbG9hZCAgZmxhZyAgYEZUX0xPQURfU0JJVFNfT05MWWAgaXMgIG5vdworICAgIHB1YmxpYy4KKworICAtIFNvbWUgIG1pbm9yIGltcHJvdmVtZW50cyAgb2YgdGhlICBidWlsZGluZyBzeXN0ZW1zLCAgaW4gcGFydGljdWxhcgorICAgIGhhbmRsaW5nIG9mIHRoZSAnemxpYicgbGlicmFyeSAoaW50ZXJuYWwgdnMuIGV4dGVybmFsKS4KKworICAtIFN1cHBvcnQgZm9yIG5vbi1kZXNrdG9wIFVuaXZlcnNhbCBXaW5kb3dzIFBsYXRmb3JtLgorCisgIC0gVmFyaW91cyBvdGhlciBtaW5vciBidWcgYW5kIGRvY3VtZW50YXRpb24gZml4ZXMuCisKKyAgLSBUaGUgYGZ0ZHVtcGAgZGVtbyAgcHJvZ3JhbSBzaG93cyBtb3JlIGluZm9ybWF0aW9uICBmb3IgVHlwZTEgZm9udHMKKyAgICBpZiBvcHRpb24gYC1uYCBpcyBnaXZlbi4KKworICAtIGBmdGdyaWRgIGNhbiBub3cgZGlzcGxheSBlbWJlZGRlZCBiaXRtYXAgc3RyaWtlcy4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0NIQU5HRVMgQkVUV0VFTiAyLjExLjAgYW5kIDIuMTEuMSAoMjAyMS1EZWMtMDEpCiAKICAgSS4gSU1QT1JUQU5UIENIQU5HRVMKIApAQCAtMzAsNyArMTkxLDcgQEAKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1DSEFOR0VTIEJFVFdFRU4gMi4xMC40IGFuZCAyLjExLjAKK0NIQU5HRVMgQkVUV0VFTiAyLjEwLjQgYW5kIDIuMTEuMCAoMjAyMS1KdWwtMTgpCiAKICAgSS4gSU1QT1JUQU5UIENIQU5HRVMKIApAQCAtNTQ0OSw3ICs1NjEwLDcgQEAKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvcHlyaWdodCAoQykgMjAwMC0yMDIxIGJ5CitDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMyBieQogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogCiBUaGlzICBmaWxlICBpcyAgcGFydCAgb2YgdGhlICBGcmVlVHlwZSAgcHJvamVjdCwgYW5kIG1heSAgb25seSBiZSAgdXNlZCwKZGlmZiAtLWdpdCBhL2RvY3MvQ1VTVE9NSVpFIGIvZG9jcy9DVVNUT01JWkUKaW5kZXggYTAzZjlkZC4uODA1MjdkYiAxMDA2NDQKLS0tIGEvZG9jcy9DVVNUT01JWkUKKysrIGIvZG9jcy9DVVNUT01JWkUKQEAgLTEzOSw3ICsxMzksNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvcHlyaWdodCAoQykgMjAwMy0yMDIxIGJ5CitDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMyBieQogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogCiBUaGlzICBmaWxlIGlzICBwYXJ0IG9mICB0aGUgRnJlZVR5cGUgIHByb2plY3QsIGFuZCAgbWF5IG9ubHkgIGJlIHVzZWQsCmRpZmYgLS1naXQgYS9kb2NzL0RFQlVHIGIvZG9jcy9ERUJVRwppbmRleCA0ZjM1ODc3Li40YTVhYzNhIDEwMDY0NAotLS0gYS9kb2NzL0RFQlVHCisrKyBiL2RvY3MvREVCVUcKQEAgLTI5Nyw3ICsyOTcsNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKK0NvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAKIFRoaXMgIGZpbGUgaXMgIHBhcnQgIG9mIHRoZSAgRnJlZVR5cGUgIHByb2plY3QsIGFuZCAgbWF5ICBvbmx5IGJlICB1c2VkLApkaWZmIC0tZ2l0IGEvZG9jcy9ET0NHVUlERSBiL2RvY3MvRE9DR1VJREUKaW5kZXggNDk5NjA4ZC4uYjQ2YjdiZCAxMDA2NDQKLS0tIGEvZG9jcy9ET0NHVUlERQorKysgYi9kb2NzL0RPQ0dVSURFCkBAIC0yODUsNyArMjg1LDcgQEAKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Db3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBieQorQ29weXJpZ2h0IChDKSAyMDE4LTIwMjMgYnkKIE5pa2hpbCBSYW1ha3Jpc2huYW4sIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KIAogVGhpcyAgZmlsZSBpcyAgcGFydCBvZiAgdGhlIEZyZWVUeXBlICBwcm9qZWN0LCBhbmQgIG1heSBvbmx5ICBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvZG9jcy9JTlNUQUxMIGIvZG9jcy9JTlNUQUxMCmluZGV4IGJlNTZlMDIuLjQ5YWIxMTIgMTAwNjQ0Ci0tLSBhL2RvY3MvSU5TVEFMTAorKysgYi9kb2NzL0lOU1RBTEwKQEAgLTEwMSw3ICsxMDEsNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvcHlyaWdodCAoQykgMjAwMC0yMDIxIGJ5CitDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMyBieQogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogCiBUaGlzICBmaWxlIGlzICBwYXJ0IG9mICB0aGUgRnJlZVR5cGUgIHByb2plY3QsIGFuZCAgbWF5IG9ubHkgIGJlIHVzZWQsCmRpZmYgLS1naXQgYS9kb2NzL0lOU1RBTEwuQU5ZIGIvZG9jcy9JTlNUQUxMLkFOWQppbmRleCAzMTM2NjEzLi5iYjc3YjFiIDEwMDY0NAotLS0gYS9kb2NzL0lOU1RBTEwuQU5ZCisrKyBiL2RvY3MvSU5TVEFMTC5BTlkKQEAgLTE0NCw3ICsxNDQsNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvcHlyaWdodCAoQykgMjAwMy0yMDIxIGJ5CitDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMyBieQogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogCiBUaGlzICBmaWxlIGlzICBwYXJ0IG9mICB0aGUgRnJlZVR5cGUgIHByb2plY3QsIGFuZCAgbWF5IG9ubHkgIGJlIHVzZWQsCmRpZmYgLS1naXQgYS9kb2NzL0lOU1RBTEwuQ1JPU1MgYi9kb2NzL0lOU1RBTEwuQ1JPU1MKaW5kZXggZjU3YjE0Yy4uMjFmNGMzMSAxMDA2NDQKLS0tIGEvZG9jcy9JTlNUQUxMLkNST1NTCisrKyBiL2RvY3MvSU5TVEFMTC5DUk9TUwpAQCAtMTYzLDcgKzE2Myw3IEBACiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgYnkKK0NvcHlyaWdodCAoQykgMjAwNi0yMDIzIGJ5CiBzdXp1a2kgdG9zaGl5YSwgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogCiAKZGlmZiAtLWdpdCBhL2RvY3MvSU5TVEFMTC5HTlUgYi9kb2NzL0lOU1RBTEwuR05VCmluZGV4IGEwNGU2ZmMuLjc1MTdkOWMgMTAwNjQ0Ci0tLSBhL2RvY3MvSU5TVEFMTC5HTlUKKysrIGIvZG9jcy9JTlNUQUxMLkdOVQpAQCAtMTY4LDcgKzE2OCw3IEBACiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKK0NvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAKIFRoaXMgIGZpbGUgaXMgIHBhcnQgb2YgIHRoZSBGcmVlVHlwZSAgcHJvamVjdCwgYW5kICBtYXkgb25seSAgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2RvY3MvSU5TVEFMTC5VTklYIGIvZG9jcy9JTlNUQUxMLlVOSVgKaW5kZXggZmY0ZWFiZS4uNjU5ZjNhMiAxMDA2NDQKLS0tIGEvZG9jcy9JTlNUQUxMLlVOSVgKKysrIGIvZG9jcy9JTlNUQUxMLlVOSVgKQEAgLTEyNiw3ICsxMjYsNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvcHlyaWdodCAoQykgMjAwMy0yMDIxIGJ5CitDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMyBieQogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogCiBUaGlzICBmaWxlIGlzICBwYXJ0IG9mICB0aGUgRnJlZVR5cGUgIHByb2plY3QsIGFuZCAgbWF5IG9ubHkgIGJlIHVzZWQsCmRpZmYgLS1naXQgYS9kb2NzL0lOU1RBTEwuVk1TIGIvZG9jcy9JTlNUQUxMLlZNUwppbmRleCBmMGRlYzNiLi40ZWQ0MDE2IDEwMDY0NAotLS0gYS9kb2NzL0lOU1RBTEwuVk1TCisrKyBiL2RvY3MvSU5TVEFMTC5WTVMKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvcHlyaWdodCAoQykgMjAwMC0yMDIxIGJ5CitDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMyBieQogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogCiBUaGlzICBmaWxlICBpcyAgcGFydCAgb2YgdGhlICBGcmVlVHlwZSAgcHJvamVjdCwgYW5kIG1heSAgb25seSBiZSAgdXNlZCwKZGlmZiAtLWdpdCBhL2RvY3MvVE9ETyBiL2RvY3MvVE9ETwppbmRleCBlY2MxZWZkLi5kMzQwODgwIDEwMDY0NAotLS0gYS9kb2NzL1RPRE8KKysrIGIvZG9jcy9UT0RPCkBAIC0yNyw3ICsyNyw3IEBACiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Db3B5cmlnaHQgKEMpIDIwMDEtMjAyMSBieQorQ29weXJpZ2h0IChDKSAyMDAxLTIwMjMgYnkKIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KIAogVGhpcyAgZmlsZSAgaXMgIHBhcnQgIG9mIHRoZSAgRnJlZVR5cGUgIHByb2plY3QsIGFuZCBtYXkgIG9ubHkgYmUgIHVzZWQsCmRpZmYgLS1naXQgYS9kb2NzL1ZFUlNJT05TLlRYVCBiL2RvY3MvVkVSU0lPTlMuVFhUCmluZGV4IGFmZTUwYTQuLjkyZjZhOGMgMTAwNjQ0Ci0tLSBhL2RvY3MvVkVSU0lPTlMuVFhUCisrKyBiL2RvY3MvVkVSU0lPTlMuVFhUCkBAIC02MCw2ICs2MCw5IEBACiAKICAgICByZWxlYXNlICAgICBsaWJ0b29sICAgICBzbwogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgIDIuMTMuMCAgICAgMjUuMC4xOSAgIDYuMTkuMAorICAgICAyLjEyLjEgICAgIDI0LjMuMTggICA2LjE4LjMKKyAgICAgMi4xMi4wICAgICAyNC4yLjE4ICAgNi4xOC4yCiAgICAgIDIuMTEuMSAgICAgMjQuMS4xOCAgIDYuMTguMQogICAgICAyLjExLjAgICAgIDI0LjAuMTggICA2LjE4LjAKICAgICAgMi4xMC40ICAgICAyMy40LjE3ICAgNi4xNy40CkBAIC0xMTksNyArMTIyLDcgQEAKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Db3B5cmlnaHQgKEMpIDIwMDItMjAyMSBieQorQ29weXJpZ2h0IChDKSAyMDAyLTIwMjMgYnkKIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KIAogVGhpcyAgZmlsZSBpcyAgcGFydCBvZiAgdGhlIEZyZWVUeXBlICBwcm9qZWN0LCBhbmQgIG1heSBvbmx5ICBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvZG9jcy9mb3JtYXRzLnR4dCBiL2RvY3MvZm9ybWF0cy50eHQKaW5kZXggMWMyNWFjMC4uN2E0YmFlMCAxMDA2NDQKLS0tIGEvZG9jcy9mb3JtYXRzLnR4dAorKysgYi9kb2NzL2Zvcm1hdHMudHh0CkBAIC0yMDAsNyArMjAwLDcgQEAKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvcHlyaWdodCAoQykgMjAwNC0yMDIxIGJ5CitDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogCiBUaGlzICBmaWxlIGlzICBwYXJ0ICBvZiB0aGUgIEZyZWVUeXBlICBwcm9qZWN0LCBhbmQgIG1heSAgb25seSBiZSAgdXNlZCwKZGlmZiAtLWdpdCBhL2RvY3MvZnJlZXR5cGUtY29uZmlnLjEgYi9kb2NzL2ZyZWV0eXBlLWNvbmZpZy4xCmluZGV4IDgxNDVjOWYuLjY0NTk0MzEgMTAwNjQ0Ci0tLSBhL2RvY3MvZnJlZXR5cGUtY29uZmlnLjEKKysrIGIvZG9jcy9mcmVldHlwZS1jb25maWcuMQpAQCAtMSw0ICsxLDQgQEAKLS5USCBGUkVFVFlQRS1DT05GSUcgMSAiRGVjZW1iZXIgMjAyMSIgIkZyZWVUeXBlIDIuMTEuMSIKKy5USCBGUkVFVFlQRS1DT05GSUcgMSAiRmVicnVhcnkgMjAyMyIgIkZyZWVUeXBlIDIuMTMuMCIKIC4KIC4KIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9kb2NzL21hcmtkb3duL2ltYWdlcy9mYXZpY28uaWNvIGIvZG9jcy9tYXJrZG93bi9pbWFnZXMvZmF2aWNvLmljbwppbmRleCBhMWEyMmVkLi44NDY0ZTc3IDEwMDY0NAotLS0gYS9kb2NzL21hcmtkb3duL2ltYWdlcy9mYXZpY28uaWNvCisrKyBiL2RvY3MvbWFya2Rvd24vaW1hZ2VzL2Zhdmljby5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9vbGRsb2dzL0NoYW5nZUxvZy4yMCBiL2RvY3Mvb2xkbG9ncy9DaGFuZ2VMb2cuMjAKaW5kZXggMTVhZThmZS4uMDk5MzcyOCAxMDA2NDQKLS0tIGEvZG9jcy9vbGRsb2dzL0NoYW5nZUxvZy4yMAorKysgYi9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjIwCkBAIC0yNTk3LDcgKzI1OTcsNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvcHlyaWdodCAoQykgMjAwMC0yMDIxIGJ5CitDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMyBieQogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogCiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvZG9jcy9vbGRsb2dzL0NoYW5nZUxvZy4yMSBiL2RvY3Mvb2xkbG9ncy9DaGFuZ2VMb2cuMjEKaW5kZXggNzFmOWYwMC4uYjMzMTI1NyAxMDA2NDQKLS0tIGEvZG9jcy9vbGRsb2dzL0NoYW5nZUxvZy4yMQorKysgYi9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjIxCkBAIC05NDIyLDcgKzk0MjIsNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CitDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogCiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvZG9jcy9vbGRsb2dzL0NoYW5nZUxvZy4yMTAgYi9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjIxMAppbmRleCBlZWE0ZDI3Li5hZGIyM2Q1IDEwMDY0NAotLS0gYS9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjIxMAorKysgYi9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjIxMApAQCAtNjQsNyArNjQsNyBAQAogCVtzbW9vdGhdIE1pbm9yIGZpeGVzLgogCiAJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9yZW5kZXJfY29uaWMpOiBNb3ZlIHZhcmlhYmxlIGFuZAotCXN0cnVjdHVyZSBkZWNsYXJhdGlvbnMgdG8gYmVnaW5uaW5nIG9mIGZ1bmN0aW9uLiAgSW5zcGl0ZSBvZiBDOTkKKwlzdHJ1Y3R1cmUgZGVjbGFyYXRpb25zIHRvIGJlZ2lubmluZyBvZiBmdW5jdGlvbi4gIEluIHNwaXRlIG9mIEM5OQogCWNvbXBsaWFuY2Ugd2Ugc3RpbGwgZG8gdGhpcyBmb3IgdGhlIHNha2Ugb2YgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KIAlUaGlzIGFsc28gYXZvaWRzIGEgc2hhZG93aW5nIGRlY2xhcmF0aW9uIG9mIGBjb3VudGAuCiAJKGdyYXlfY29udmVydF9nbHlwaF9pbm5lcik6IEZpeCB0eXBvLgpAQCAtMTM0LDcgKzEzNCw3IEBACiAJICBCZWZvcmU6IDE3Ljk4OCB1cy9vcAogCSAgQWZ0ZXI6ICAxNy4zODkgdXMvb3AKIAotCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXRfVFdvcmtlcik6IFJlcGxhY2UgYG51bV9jZWxsc2AgZmllbGQgd2l0aAorCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlfVFdvcmtlcik6IFJlcGxhY2UgYG51bV9jZWxsc2AgZmllbGQgd2l0aAogCWBjZWxsX2ZyZWVgIGFuZCBgY2VsbF9saW1pdGAuCiAJKE5VTExfQ0VMTF9QVFIsIENFTExfTUFYX1hfVkFMVUUsIENFTExfSVNfTlVMTCk6IE5ldyBtYWNyb3MuCiAJKGdyYXlfZHVtcF9jZWxscywgZ3JheV9zZXRfY2VsbCwgZ3JheV9zd2VlcCwgZ3JheV9zd2VlcF9kaXJlY3QsCkBAIC0zNTIsNyArMzUyLDcgQEAKIAogCUl0IGlzIHVuZGVmaW5lZCBiZWhhdmlvciB0byBwYXNzIGBOVUxMYCB0byBgbWVtY3B5YC4gIGBjb29yZHMnIGlzCiAJcGFzc2VkIHRvIGBtZW1jcHlgIGJ1dCBgVFRfR2V0X01NX0JsZW5kYCBhbmQgYFRUX0dldF9WYXJfRGVzaWduYAotCWV4cGxpY3RseSBjYWxsIGB0dF9zZXRfbW1fYmxlbmRgIHdpdGggYGNvb3Jkc2AgYXMgYE5VTExgLiAgSW4KKwlleHBsaWNpdGx5IGNhbGwgYHR0X3NldF9tbV9ibGVuZGAgd2l0aCBgY29vcmRzYCBhcyBgTlVMTGAuICBJbgogCWFkZGl0aW9uLCBgVFRfU2V0X01NX0JsZW5kYCBoYXMgYSBzaW1pbGFyIHBvc3NpYmxlIGlzc3VlLgogCiAyMDIxLTA2LTMwICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkcm90dEBjaHJvbWl1bS5vcmc+CkBAIC01MzQsNyArNTM0LDcgQEAKIAogCU1vdmUgJ0NPTFInIEFQSSB0byBgZnRjb2xvci5oYC4KIAotCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBDdXQgc2VjdGlvbiBsYXllciBtYW5hZ2FtZW50CisJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IEN1dCBzZWN0aW9uIGxheWVyIG1hbmFnZW1lbnQKIAljb250YWluaW5nICdDT0xSJyB2MCBhbmQgdjEgQVBJIGFuZCBtb3ZlIGl0IHRvIGBmdGNvbG9yLmhgIGFzCiAJcmVxdWVzdGVkIGJ5IFdlcm5lciBvbiBmcmVldHlwZS1kZXZlbC4KIAkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjb2xvci5oOiBQYXN0ZSB0aGF0IHNlY3Rpb24uCkBAIC0xMDA1LDIzICsxMDA1LDIzIEBACiAKIDIwMjEtMDUtMDEgIEFsZXhlaSBQb2R0ZWxlemhuaWtvdiAgPGFwb2R0ZWxlQGdtYWlsLmNvbT4KIAotCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9yZWFkX3N1YnJzKTogVHdlYWsgYWxsb2NhdG9uIG1hY3JvLgorCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9yZWFkX3N1YnJzKTogVHdlYWsgYWxsb2NhdGlvbiBtYWNyby4KIAogMjAyMS0wNS0wMSAgQWxleGVpIFBvZHRlbGV6aG5pa292ICA8YXBvZHRlbGVAZ21haWwuY29tPgogCiAJW3NmbnRdIEF2b2lkIHNvbWUgbWVtb3J5IHplcm9pbmcuCiAKIAkqIHNyYy9zZm50L3Nmb2Jqcy5jIChzZm50X29wZW5fZm9udCwgc2ZudF9pbml0X2ZhY2UsCi0JdHRfbmFtZV9hc2NpaV9mcm9tX3t1dGYxNixvdGhlcn0pOiBUd2VhayBhbGxvY2F0b24gbWFjcm9zLgorCXR0X25hbWVfYXNjaWlfZnJvbV97dXRmMTYsb3RoZXJ9KTogVHdlYWsgYWxsb2NhdGlvbiBtYWNyb3MuCiAJKiBzcmMvc2ZudC90dGxvYWQuYyAodHRfZmFjZV9sb2FkX25hbWUpOiBEaXR0by4KIAogMjAyMS0wNS0wMSAgQWxleGVpIFBvZHRlbGV6aG5pa292ICA8YXBvZHRlbGVAZ21haWwuY29tPgogCi0JKiBzcmMvc2ZudC90dHBvc3QuYyAobG9hZF9mb3JtYXRfezIwLDI1fSk6IFR3ZWFrIGFsbG9jYXRvbiBtYWNyb3MuCisJKiBzcmMvc2ZudC90dHBvc3QuYyAobG9hZF9mb3JtYXRfezIwLDI1fSk6IFR3ZWFrIGFsbG9jYXRpb24gbWFjcm9zLgogCiAyMDIxLTA1LTAxICBBbGV4ZWkgUG9kdGVsZXpobmlrb3YgIDxhcG9kdGVsZUBnbWFpbC5jb20+CiAKLQkqIHNyYy9zZm50L3BuZ3NoaW0uYyAoTG9hZF9TQml0X1BuZyk6IFR3ZWFrIGFsbG9jYXRvbiBtYWNyby4KKwkqIHNyYy9zZm50L3BuZ3NoaW0uYyAoTG9hZF9TQml0X1BuZyk6IFR3ZWFrIGFsbG9jYXRpb24gbWFjcm8uCiAKIDIwMjEtMDUtMDEgIEFsZXhlaSBQb2R0ZWxlemhuaWtvdiAgPGFwb2R0ZWxlQGdtYWlsLmNvbT4KIApAQCAtMjM0Myw3ICsyMzQzLDcgQEAKIAkqIHNyYy9zZGYvZnRic2RmLmMsIHNyYy9zZGYvZnRic2RmLmg6IFRoZSByYXN0ZXJpemVyIGZvciB0aGUgJ2JzZGYnCiAJcmVuZGVyZXIuCiAKLQkqIHNyYy9zZGYvZnRzZGZjb21tb24uaDogQ29tbW1vbiBwcm9wZXJ0aWVzIGFuZCBmdW5jdGlvbnMgZm9yIGJvdGgKKwkqIHNyYy9zZGYvZnRzZGZjb21tb24uaDogQ29tbW9uIHByb3BlcnRpZXMgYW5kIGZ1bmN0aW9ucyBmb3IgYm90aAogCXJhc3Rlcml6ZXJzLgogCSogc3JjL3NkZi9mdHNkZmVycnMuaDogQ29tbW9uIGVycm9yIGRlZmluZXMuCiAKQEAgLTI0MTEsOSArMjQxMSw5IEBACiAJdW5pdHMgcGVyIGVtIChlLmcuIEludGVyKS4gVGhpcyBwYXRjaCBmaXhlcyBpdC4KIAogCVRoZSByZXR1cm4gdmFsdWUgb2YgYWZfbG9hZGVyX2NvbXB1dGVfZGFya2VuaW5nIHdhcyBhbHNvIGNoYW5nZWQgdG8KLQl1c2UgMTYuMTYgZml4ZWQgcG9pbnQgdG8gZ2V0IHJpZCBvZiBhIHJlZHVuZGFudCB0cnVuY2F0aW9uIG9wZXJhdGlvbi4KKwl1c2UgMTYuMTYgZml4ZWQtcG9pbnQgdG8gZ2V0IHJpZCBvZiBhIHJlZHVuZGFudCB0cnVuY2F0aW9uIG9wZXJhdGlvbi4KIAlUaGlzIHNob3VsZCBzbGlnaHRseSBpbXByb3ZlIHRoZSBwcmVjaXNpb24sIGFsdGhvdWdoIGl0J3Mgc3RpbGwKLQlib3R0bGVuZWNrZWQgYnkgdGhlIGVtYm9sZGVuaW5nIGZ1bmN0aW9uLCB3aGljaCB1c2VzIDI2LjYgZml4ZWQgcG9pbnQuCisJYm90dGxlbmVja2VkIGJ5IHRoZSBlbWJvbGRlbmluZyBmdW5jdGlvbiwgd2hpY2ggdXNlcyAyNi42IGZpeGVkLXBvaW50LgogCiAJKiBzcmMvYXV0b2ZpdC9hZmxvYWRlci5bY2hdCiAJKGFmX2xvYWRlcl9jb21wdXRlX2RhcmtlbmluZyk6IFJldHVybiBGVF9GaXhlZC4KQEAgLTM1NjUsNyArMzU2NSw3IEBACiAKIAlbYnVpbGRzXSBDbGVhbiB1cCBXaW5kb3dzIENFIHByb2plY3QgZmlsZXMuCiAKLQlSZW1vdmUgdmVyc2lvbiBmcm9tIGZpbGVuYW1lcyB0aGF0IGNhdXNlZCBhIGxvdCBvZiBwb2x1dGlvbiBpbiB0aGUKKwlSZW1vdmUgdmVyc2lvbiBmcm9tIGZpbGVuYW1lcyB0aGF0IGNhdXNlZCBhIGxvdCBvZiBwb2xsdXRpb24gaW4gdGhlCiAJcmVsZWFzZSBwcm9jZXNzLiBVc2UgVkVSU0lPTklORk8gcmVzb3VyY2UgaW5zdGVhZC4KIAogCSogYnVpbGRzL3dpbmNlL3ZjMjAwNS1jZS9mcmVldHlwZS52Y3Byb2osCkBAIC00NDUzLDcgKzQ0NTMsNyBAQAogCShyZWNvbnN0cnVjdF9mb250KTogQ2hhbmdlIGBGVF9CeXRlKiBzZm50JyB0byBgRlRfQnl0ZSoqCiAJc2ZudF9ieXRlcycuICBUaGlzIGhhcyBiZWVuIGRvbmUgYmVjYXVzZSB3ZSByZWFsbG9jYXRlIG1lbW9yeSB0bwogCWBzZm50JyBtdWx0aXBsZSB0aW1lcywgd2hpY2ggbWF5IGNoYW5nZSB0aGUgcG9pbnRlciB2YWx1ZSBvZiBgc2ZudCcuCi0JVGhpcyBuZXcgcG9pbnRlciBtdXN0IGJlIHByb3BvZ2F0ZWQgYmFjayB0byB0aGUgY2FsbGVyLiAgU2FtZSByZWFzb24KKwlUaGlzIG5ldyBwb2ludGVyIG11c3QgYmUgcHJvcGFnYXRlZCBiYWNrIHRvIHRoZSBjYWxsZXIuICBTYW1lIHJlYXNvbgogCWZvciB1c2luZyBhIGRvdWJsZSBwb2ludGVyIGluIGB3cml0ZV9idWYnLgogCiAJKiBzcmMvc2ZudC93b2ZmMnRhZ3MuaCAoV09GRjJfREVGQVVMVF9NQVhfU0laRSk6IE5ldyBtYWNybyB1c2VkIGZvcgpAQCAtNDk1NCw3ICs0OTU0LDcgQEAKIAogCVt0cnVldHlwZV0gRG9oLiAgRml4IGxhc3QgY29tbWl0IHRvIG1ha2UgaXQgd29yay4KIAotCVZlcnkgZW1iYXJhc3NpbmcgOi0pCisJVmVyeSBlbWJhcnJhc3NpbmcgOi0pCiAKIAlSZXBvcnRlZCBhcwogCkBAIC01MzA3LDcgKzUzMDcsNyBAQAogCShkaXN0KTogUmVtb3ZlIHJlbW5hbnRzIG9mIGBkb2NtYWtlcicgdG9vbC4KIAkoZG8tZGlzdCk6IFJlbW92ZSB1bnVzZWQgaW50ZXJtZWRpYXRlIGZpbGVzLgogCi0JKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGRlc3RyaWN0X2Myc19pdGVtKTogR3VhcmQgZnVuY3Rpb24gd2l0aAorCSogc3JjL2NmZi9jZmZwYXJzZS5jIChkZXN0cnVjdF9jMnNfaXRlbSk6IEd1YXJkIGZ1bmN0aW9uIHdpdGgKIAlDRkZfQ09ORklHX09QVElPTl9PTERfRU5HSU5FIG1hY3JvLgogCiAyMDE5LTAzLTA3ICBBbmRyZWkgQWxleGV5ZXYgIDwweDQxNmI2MTcyNjlAZ21haWwuY29tPgpAQCAtNTQ5MSw3ICs1NDkxLDcgQEAKIAltZW1iZXJzLgogCShGVF9ERUZJTkVfU0VSVklDRV9NVUxUSU1BU1RFUlNSRUMpOiBVcGRhdGVkLgogCi0JKiBzcmMvY2ZmY2ZmZHJpdnIuYyAoY2ZmX3NldF9tbV93ZWlnaHR2ZWN0b3IsCisJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9zZXRfbW1fd2VpZ2h0dmVjdG9yLAogCWNmZl9nZXRfbW1fd2VpZ2h0dmVjdG9yKTogTmV3IGZ1bmN0aW9ucy4KIAkoY2ZmX3NlcnZpY2VfbXVsdGlfbWFzdGVycyk6IFJlZ2lzdGVyIHRoZW0uCiAKQEAgLTU1MjEsNyArNTUyMSw3IEBACiAJW2J1aWxkc10gQmVsYXRlZCBETEwgc3VwcG9ydCB3aXRoIHZjMjAwMi12YzIwMDguCiAKIAlUaGUgc29sdXRpb24gYW5kIHByb2plY3QgZmlsZXMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgdXBncmFkZWQgZm9yCi0JdGhlIGFwcHJvcmlhdGUgVmlzdWFsIEMrKyB2ZXJzaW9uLgorCXRoZSBhcHByb3ByaWF0ZSBWaXN1YWwgQysrIHZlcnNpb24uCiAKIAkqIGJ1aWxkcy93aW5kb3dzL3Zpc3VhbGMvZnJlZXR5cGUue3Nsbix2Y3Byb2p9OiBNYWpvciB1cGdyYWRlcy4KIAkqIGJ1aWxkcy93aW5kb3dzL3Zpc3VhbGMvaW5kZXguaHRtbDogRG9jdW1lbnQgdGhlIGNoYW5nZS4KQEAgLTU5MDAsNyArNTkwMCw3IEBACiAJUmVtb3ZlIHVudXNlZCBmaWVsZHMuCiAKIAkqIHNyYy9wY2YuaCAoUENGX0ZhY2VSZWMpOiBSZW1vdmUgYGNoYXJtYXAnIGFuZCBgY2hhcm1hcF9oYW5kbGUnLgotCSogc3JjL2JkZmRydnIuaCAoQkRGX0ZhY2VSZWMpOiBEaXR0by4KKwkqIHNyYy9iZGZkcml2ci5oIChCREZfRmFjZVJlYyk6IERpdHRvLgogCSogc3JjL3dpbmZvbnRzL3dpbmZudC5oIChGTlRfRmFjZVJlYyk6IERpdHRvLgogCiAyMDE4LTA5LTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CkBAIC03Nzk5LDcgKzc3OTksNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvcHlyaWdodCAoQykgMjAxOC0yMDIxIGJ5CitDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMyBieQogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogCiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvZG9jcy9vbGRsb2dzL0NoYW5nZUxvZy4yMiBiL2RvY3Mvb2xkbG9ncy9DaGFuZ2VMb2cuMjIKaW5kZXggZTI1Y2FmYy4uYjA2ZDY0NSAxMDA2NDQKLS0tIGEvZG9jcy9vbGRsb2dzL0NoYW5nZUxvZy4yMgorKysgYi9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjIyCkBAIC0yODIxLDcgKzI4MjEsNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvcHlyaWdodCAoQykgMjAwNS0yMDIxIGJ5CitDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMyBieQogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogCiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvZG9jcy9vbGRsb2dzL0NoYW5nZUxvZy4yMyBiL2RvY3Mvb2xkbG9ncy9DaGFuZ2VMb2cuMjMKaW5kZXggMGUzMmNhOC4uYThhNjlkZCAxMDA2NDQKLS0tIGEvZG9jcy9vbGRsb2dzL0NoYW5nZUxvZy4yMworKysgYi9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjIzCkBAIC03OTMyLDcgKzc5MzIsNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvcHlyaWdodCAoQykgMjAwNi0yMDIxIGJ5CitDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMyBieQogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogCiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvZG9jcy9vbGRsb2dzL0NoYW5nZUxvZy4yNCBiL2RvY3Mvb2xkbG9ncy9DaGFuZ2VMb2cuMjQKaW5kZXggOWQwNmIwZi4uMGRiYjJhYyAxMDA2NDQKLS0tIGEvZG9jcy9vbGRsb2dzL0NoYW5nZUxvZy4yNAorKysgYi9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjI0CkBAIC03MDcsNyArNzA3LDcgQEAKIAlbYmFzZV0gRml4IGludGVnZXIgb3ZlcmZsb3cuCiAKIAkqIHNyYy9iYXNlL2Z0b3V0bG4uYyAoRlRfT3V0bGluZV9FbWJvbGRlblhZKTogTm9ybWFsaXplIGluY29taW5nIGFuZAotCW91dGdvaW5nIHZlY3RvcnMgYW5kIHVzZSBmaXhlZCBwb2ludCBhcml0aG1ldGljLgorCW91dGdvaW5nIHZlY3RvcnMgYW5kIHVzZSBmaXhlZC1wb2ludCBhcml0aG1ldGljLgogCiAyMDEzLTAxLTIzICBBbGV4ZWkgUG9kdGVsZXpobmlrb3YgIDxhcG9kdGVsZUBnbWFpbC5jb20+CiAKQEAgLTYzNDQsNyArNjM0NCw3IEBACiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgYnkKK0NvcHlyaWdodCAoQykgMjAxMC0yMDIzIGJ5CiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAKIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjI1IGIvZG9jcy9vbGRsb2dzL0NoYW5nZUxvZy4yNQppbmRleCA1ZDAzNzFjLi4zMWQ1MTExIDEwMDY0NAotLS0gYS9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjI1CisrKyBiL2RvY3Mvb2xkbG9ncy9DaGFuZ2VMb2cuMjUKQEAgLTUxNDUsNyArNTE0NSw3IEBACiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgYnkKK0NvcHlyaWdodCAoQykgMjAxMy0yMDIzIGJ5CiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAKIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjI2IGIvZG9jcy9vbGRsb2dzL0NoYW5nZUxvZy4yNgppbmRleCBlYjg3ODAzLi41MjgzNDVlIDEwMDY0NAotLS0gYS9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjI2CisrKyBiL2RvY3Mvb2xkbG9ncy9DaGFuZ2VMb2cuMjYKQEAgLTU2OTUsNyArNTY5NSw3IEBACiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgYnkKK0NvcHlyaWdodCAoQykgMjAxNS0yMDIzIGJ5CiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAKIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjI3IGIvZG9jcy9vbGRsb2dzL0NoYW5nZUxvZy4yNwppbmRleCBjNWZiMWY5Li42NTEwZTQ1IDEwMDY0NAotLS0gYS9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjI3CisrKyBiL2RvY3Mvb2xkbG9ncy9DaGFuZ2VMb2cuMjcKQEAgLTIwOTAsNyArMjA5MCw3IEBACiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgYnkKK0NvcHlyaWdodCAoQykgMjAxNi0yMDIzIGJ5CiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAKIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjI4IGIvZG9jcy9vbGRsb2dzL0NoYW5nZUxvZy4yOAppbmRleCBkN2NjMmUwLi42MDNmYzYxIDEwMDY0NAotLS0gYS9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjI4CisrKyBiL2RvY3Mvb2xkbG9ncy9DaGFuZ2VMb2cuMjgKQEAgLTMxMjAsNyArMzEyMCw3IEBACiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgYnkKK0NvcHlyaWdodCAoQykgMjAxNi0yMDIzIGJ5CiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAKIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjI5IGIvZG9jcy9vbGRsb2dzL0NoYW5nZUxvZy4yOQppbmRleCBlNjY4YjRmLi4zZDczZDQ3IDEwMDY0NAotLS0gYS9kb2NzL29sZGxvZ3MvQ2hhbmdlTG9nLjI5CisrKyBiL2RvY3Mvb2xkbG9ncy9DaGFuZ2VMb2cuMjkKQEAgLTIzMzYsNyArMjMzNiw3IEBACiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgYnkKK0NvcHlyaWdodCAoQykgMjAxNy0yMDIzIGJ5CiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAKIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9kb2NzL3Jhc3Rlci50eHQgYi9kb2NzL3Jhc3Rlci50eHQKaW5kZXggNzJkOWZlMi4uMTY0MmE4MSAxMDA2NDQKLS0tIGEvZG9jcy9yYXN0ZXIudHh0CisrKyBiL2RvY3MvcmFzdGVyLnR4dApAQCAtNjMsNyArNjMsNyBAQAogICAgIGAyNi42JyBtZWFucyAgdGhhdCAyNiBiaXRzICBhcmUgdXNlZCBmb3IgIHRoZSBpbnRlZ2VyIHBhcnQgIG9mIGEKICAgICB2YWx1ZSAgIGFuZCAgNiAgIGJpdHMgIGFyZSAgIHVzZWQgIGZvciAgIHRoZSAgIGZyYWN0aW9uYWwgIHBhcnQuCiAgICAgQ29uc2VxdWVudGx5LCB0aGUgYGRpc3RhbmNlJyAgYmV0d2VlbiB0d28gbmVpZ2hib3VyaW5nIHBpeGVscyBpcwotICAgIDY0IGB1bml0cycgKDEgdW5pdCA9IDEvNjR0aCBvZiBhIHBpeGVsKS4KKyAgICA2NCBgdW5pdHMnICgxIHVuaXQgPSAxLzY0IG9mIGEgcGl4ZWwpLgogCiAgICAgTm90ZSAgdGhhdCwgZm9yICB0aGUgcmFzdGVyaXplciwgIHBpeGVsIGNlbnRlcnMgIGFyZSAgbG9jYXRlZCBhdAogICAgIGludGVnZXIgICBjb29yZGluYXRlcy4gICBUaGUgICBUcnVlVHlwZSAgIGJ5dGVjb2RlICBpbnRlcnByZXRlciwKQEAgLTYxOCw3ICs2MTgsNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKK0NvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAKIFRoaXMgIGZpbGUgIGlzICBwYXJ0ICBvZiB0aGUgIEZyZWVUeXBlICBwcm9qZWN0LCBhbmQgbWF5ICBvbmx5IGJlICB1c2VkLApkaWZmIC0tZ2l0IGEvZG9jcy9yZWxlYXNlIGIvZG9jcy9yZWxlYXNlCmluZGV4IDA1ZjczMGYuLmZlYzkxZTggMTAwNjQ0Ci0tLSBhL2RvY3MvcmVsZWFzZQorKysgYi9kb2NzL3JlbGVhc2UKQEAgLTI3LDExICsyNywxNSBAQAogICAgIG1ha2UgZGlzdGNsZWFuOyBtYWtlIGRldmVsIENDPWcrKzsgbWFrZSBtdWx0aSBDQz1nKysKIAogICAgIHNoIGF1dG9nZW4uc2gKLSAgICBtYWtlIGRpc3RjbGVhbjsgLi9jb25maWd1cmU7IG1ha2UKICAgICBtYWtlIGRpc3RjbGVhbjsgLi9jb25maWd1cmUgQ0M9ZysrOyBtYWtlCiAKICAgaW4gdGhlIGNsb25lZCByZXBvc2l0b3J5IHRvIHRlc3QgY29tcGlsYXRpb24gd2l0aCBib3RoIGdjYyBhbmQgZysrLgogCisgIE5vdGUgdGhhdCBpdCBpcyBub3JtYWxseSBub3QgbmVjZXNzYXJ5IHRvIHRlc3Qgc3RhbmRhcmQgQworICBjb21waWxhdGlvbiB3aXRoIHRoZSBgY29uZmlndXJlYCwgYG1lc29uYCwgYW5kIGBjbWFrZWAgYnVpbGQgdG9vbHMKKyAgc2luY2UgdGhpcyBpcyBkb25lIGJ5IHRoZSBDSSBwcm9jZXNzIG9mICdnaXRsYWIuZnJlZXR5cGUub3JnJyBmb3IKKyAgZXZlcnkgY29tbWl0LgorCiAuIFRlc3QgQysrIGNvbXBpbGF0aW9uIGZvciAnZnJlZXR5cGUtZGVtb3MnIHRvbyAodXNpbmcgYGdpdCBjbG9uZWAgYXMKICAgYWJvdmUpLgogCkBAIC03MywxMyArNzcsMTQgQEAKIAogICAgICMhL2Jpbi9zaAogCi0gICAgVkVSU0lPTj0yLjEwLjQKKyAgICBWRVJTSU9OPTIuMTIuMAogICAgIFNBVkFOTkFIX1VTRVI9d2wKICAgICBTT1VSQ0VGT1JHRV9VU0VSPXdsZW1iCisgICAgR1BHX0tFWV9JRD1CRTZDM0FBQzYzQUQ4RTNGCiAKICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotICAgIEdQRz0nL3Vzci9iaW4vZ3BnIC0tYmF0Y2ggLS1uby10dHknCisgICAgR1BHPSIvdXNyL2Jpbi9ncGcgLS1iYXRjaCAtLW5vLXR0eSAtLWxvY2FsLXVzZXIgJEdQR19LRVlfSUQiCiAKICAgICB2ZXJzaW9uPWBlY2hvICRWRVJTSU9OIHwgc2VkICJzL1xcLi8vZyJgCiAKQEAgLTE3NywxMSArMTgyLDE1IEBACiAgICdmcmVldHlwZS13ZWInIHJlcG9zaXRvcnkuCiAKIC4gQW5ub3VuY2UgbmV3IHJlbGVhc2Ugb24gJ2ZyZWV0eXBlLWFubm91bmNlQG5vbmdudS5vcmcnIGFuZCB0bwotICByZWxldmFudCBuZXdzZ3JvdXBzLgorICByZWxldmFudCBuZXdzZ3JvdXBzLiAgVGhlIHRleHQgc2hvdWxkIGluY2x1ZGUKKworICAtIFNIQTI1NiBjaGVja3N1bXMgb2YgYWxsIGZpbGVzLAorICAtIGluc3RydWN0aW9ucyBob3cgdG8gdmVyaWZ5IHRoZSBidW5kbGVzIHVzaW5nIHRoZSBgLnNpZ2AgZmlsZSBkYXRhLAorICAtIHRoZSBQR1AgcHVibGljIGtleSB1c2VkIHRvIHNpZ24gdGhlIGFyY2hpdmVzLgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvcHlyaWdodCAoQykgMjAwMy0yMDIxIGJ5CitDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMyBieQogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogCiBUaGlzICBmaWxlIGlzICBwYXJ0IG9mICB0aGUgRnJlZVR5cGUgIHByb2plY3QsIGFuZCAgbWF5IG9ubHkgIGJlIHVzZWQsCmRpZmYgLS1naXQgYS9nZW5lcmF0ZV9ub3RpY2UucHkgYi9nZW5lcmF0ZV9ub3RpY2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZkMzkzOQotLS0gL2Rldi9udWxsCisrKyBiL2dlbmVyYXRlX25vdGljZS5weQpAQCAtMCwwICsxLDYwNiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCitmcm9tIGVudW0gaW1wb3J0IEVudW0KK2Zyb20gcGF0aGxpYiBpbXBvcnQgUGF0aAorZnJvbSB0eXBpbmcgaW1wb3J0IFNlcXVlbmNlCitmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKworIyBsaXN0IG9mIHNwZWNpZmljIGZpbGVzIHRvIGJlIGlnbm9yZWQuCitJR05PUkVfRklMRV9OQU1FID0gWworICAjIEV4Y2x1ZGUgbXlzZWxmCisgICJnZW5lcmF0ZV9ub3RpY2UucHkiLAorCisgICMgTGljZW5zZSBmaWxlcworICAiTElDRU5TRSIsCisgICJMSUNFTlNFLlRYVCIsCisgICJMSUNFTlNFX0FQQUNIRTIuVFhUIiwKKyAgIkxJQ0VOU0VfQlNEXzNfQ0xBVVNFLlRYVCIsCisgICJMSUNFTlNFX0ZTRkFQLlRYVCIsCisgICJMSUNFTlNFX01JVC5UWFQiLAorICAiTElDRU5TRV9NSVRfTU9ERVJOX1ZBUklBTlQuVFhUIiwKKyAgIk1PRFVMRV9MSUNFTlNFX0JTRF9MSUtFIiwKKyAgIk5PVElDRSIsCisgICJidWlsZHMvdW5peC9MSUNFTlNFX0dQTHYyX1dJVEhfQVVUT0NPTkZfRVhDRVBUSU9OLlRYVCIsCisgICJidWlsZHMvdW5peC9MSUNFTlNFX0dQTHYzX1dJVEhfQVVUT0NPTkZfRVhDRVBUSU9OLlRYVCIsCisgICJkb2NzL0ZUTC5UWFQiLAorICAiZG9jcy9HUEx2Mi5UWFQiLAorICAic3JjL2d6aXAvTElDRU5TRV9aTElCLlRYVCIsCisKKyAgIyBUaGUgcGF0Y2ggZmlsZSBjb250YWlucyBjb3B5cmlnaHQgbGluZSBhcyBhIGRpZmYuIFVzZSBpdCBpZiBDb3B5cmlnaHQgaXMgbm90CisgICMgaW4gYSB1bmlmaWVkIGRpZmYgbGluZS4KKyAgInNyYy9nemlwL3BhdGNoZXMvZnJlZXR5cGUtemxpYi5kaWZmIiwKK10KKworTk9fQ09QWVJJR0hUX0ZJTEVTID0gWworICAiLmNsYW5nLWZvcm1hdCIsCisgICIuZ2l0aWdub3JlIiwKKyAgIi5naXRsYWItY2kueW1sIiwKKyAgIi5tYWlsbWFwIiwKKyAgIkFuZHJvaWQuYnAiLAorICAiTUVUQURBVEEiLAorICAiT1dORVJTIiwKKyAgIlJFQURNRS5hbmRyb2lkIiwKKyAgIlRFU1RfTUFQUElORyIsCisgICJidWlsZHMvYXRhcmkvQVRBUkkuSCIsCisgICJidWlsZHMvYXRhcmkvRk5hbWVzLlNJQyIsCisgICJidWlsZHMvYXRhcmkvRlJFRVRZUEUuUFJKIiwKKyAgImJ1aWxkcy9hdGFyaS9SRUFETUUuVFhUIiwKKyAgImJ1aWxkcy9hdGFyaS9kZWZsaW5lam9pbmVyLmF3ayIsCisgICJidWlsZHMvYXRhcmkvZ2VuLXB1cmVjLXBhdGNoLnNoIiwKKyAgImJ1aWxkcy9tYWMvRnJlZVR5cGUubTY4a19jZm0ubWFrZS50eHQiLAorICAiYnVpbGRzL21hYy9GcmVlVHlwZS5tNjhrX2Zhci5tYWtlLnR4dCIsCisgICJidWlsZHMvbWFjL0ZyZWVUeXBlLnBwY19jYXJib24ubWFrZS50eHQiLAorICAiYnVpbGRzL21hYy9GcmVlVHlwZS5wcGNfY2xhc3NpYy5tYWtlLnR4dCIsCisgICJidWlsZHMvbWFjL1JFQURNRSIsCisgICJidWlsZHMvbWFjL2FzY2lpMm1wdy5weSIsCisgICJidWlsZHMvbWFjL2ZyZWV0eXBlLUluZm8ucGxpc3QiLAorICAiYnVpbGRzL21hYy9mdGxpYi5wcmoueG1sIiwKKyAgImJ1aWxkcy91bml4Ly5naXRpZ25vcmUiLAorICAiYnVpbGRzL3VuaXgvZnJlZXR5cGUyLmluIiwKKyAgImJ1aWxkcy92bXMvTElCUy5PUFRfSUE2NCIsCisgICJidWlsZHMvdm1zL19MSU5LLk9QVF9JQTY0IiwKKyAgImJ1aWxkcy92bXMvdm1zbGliLmRhdCIsCisgICJidWlsZHMvd2luY2UvdmMyMDA1LWNlL2ZyZWV0eXBlLnNsbiIsCisgICJidWlsZHMvd2luY2UvdmMyMDA1LWNlL2ZyZWV0eXBlLnZjcHJvaiIsCisgICJidWlsZHMvd2luY2UvdmMyMDA1LWNlL2luZGV4Lmh0bWwiLAorICAiYnVpbGRzL3dpbmNlL3ZjMjAwOC1jZS9mcmVldHlwZS5zbG4iLAorICAiYnVpbGRzL3dpbmNlL3ZjMjAwOC1jZS9mcmVldHlwZS52Y3Byb2oiLAorICAiYnVpbGRzL3dpbmNlL3ZjMjAwOC1jZS9pbmRleC5odG1sIiwKKyAgImJ1aWxkcy93aW5kb3dzLy5naXRpZ25vcmUiLAorICAiYnVpbGRzL3dpbmRvd3MvdmMyMDEwL2ZyZWV0eXBlLnNsbiIsCisgICJidWlsZHMvd2luZG93cy92YzIwMTAvZnJlZXR5cGUudXNlci5wcm9wcyIsCisgICJidWlsZHMvd2luZG93cy92YzIwMTAvZnJlZXR5cGUudmN4cHJvaiIsCisgICJidWlsZHMvd2luZG93cy92YzIwMTAvZnJlZXR5cGUudmN4cHJvai5maWx0ZXJzIiwKKyAgImJ1aWxkcy93aW5kb3dzL3ZjMjAxMC9pbmRleC5odG1sIiwKKyAgImJ1aWxkcy93aW5kb3dzL3Zpc3VhbGMvZnJlZXR5cGUuZHNwIiwKKyAgImJ1aWxkcy93aW5kb3dzL3Zpc3VhbGMvZnJlZXR5cGUuZHN3IiwKKyAgImJ1aWxkcy93aW5kb3dzL3Zpc3VhbGMvZnJlZXR5cGUuc2xuIiwKKyAgImJ1aWxkcy93aW5kb3dzL3Zpc3VhbGMvZnJlZXR5cGUudmNwcm9qIiwKKyAgImJ1aWxkcy93aW5kb3dzL3Zpc3VhbGMvaW5kZXguaHRtbCIsCisgICJidWlsZHMvd2luZG93cy92aXN1YWxjZS9mcmVldHlwZS5kc3AiLAorICAiYnVpbGRzL3dpbmRvd3MvdmlzdWFsY2UvZnJlZXR5cGUuZHN3IiwKKyAgImJ1aWxkcy93aW5kb3dzL3Zpc3VhbGNlL2ZyZWV0eXBlLnZjcHJvaiIsCisgICJidWlsZHMvd2luZG93cy92aXN1YWxjZS9pbmRleC5odG1sIiwKKyAgImRldmVsLXRlZXVpL09XTkVSUyIsCisgICJkZXZlbC10ZWV1aS9SRUFETUUubWQiLAorICAiZGV2ZWwtdGVldWkvZnRtb2R1bGUuaCIsCisgICJkZXZlbC10ZWV1aS9ydWxlcy5qc29uIiwKKyAgImRldmVsLXRlZXVpL3J1bGVzLm1rIiwKKyAgImRvY3MvLmdpdGlnbm9yZSIsCisgICJkb2NzL0NNQUtFIiwKKyAgImRvY3MvSU5TVEFMTC5NQUMiLAorICAiZG9jcy9NQUtFUFAiLAorICAiZG9jcy9QUk9CTEVNUyIsCisgICJkb2NzL1JFQURNRSIsCisgICJkb2NzL2ZyZWV0eXBlLWNvbmZpZy4xIiwKKyAgImRvY3MvbWFya2Rvd24vaW1hZ2VzL2Zhdmljby5pY28iLAorICAiZG9jcy9tYXJrZG93bi9qYXZhc2NyaXB0cy9leHRyYS5qcyIsCisgICJkb2NzL21hcmtkb3duL3N0eWxlc2hlZXRzL2V4dHJhLmNzcyIsCisgICJpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oIiwKKyAgImluY2x1ZGUvZnJlZXR5cGUvZnRjaGFwdGVycy5oIiwKKyAgImxpYmZ0Mi5tYXAudHh0IiwKKyAgIm9ianMvLmdpdGlnbm9yZSIsCisgICJvYmpzL1JFQURNRSIsCisgICJzcmMvZ3ppcC9SRUFETUUuZnJlZXR5cGUiLAorICAic3JjL2d6aXAvY3JjMzIuaCIsCisgICJzcmMvZ3ppcC9pbmZmaXhlZC5oIiwKKyAgInNyYy90b29scy9hcGluYW1lcy5jIiwKKyAgInNyYy90b29scy9jaGt0cmNtcC5weSIsCisgICJzcmMvdG9vbHMvY29yZGljLnB5IiwKKyAgInNyYy90b29scy9mdHJhbmRvbS9NYWtlZmlsZSIsCisgICJzcmMvdG9vbHMvZnRyYW5kb20vUkVBRE1FIiwKKyAgInNyYy90b29scy9tYWtlX2Rpc3RyaWJ1dGlvbl9hcmNoaXZlcy5weSIsCisgICJzcmMvdG9vbHMvbm8tY29weXJpZ2h0IiwKKyAgInNyYy90b29scy90ZXN0X2FmbS5jIiwKKyAgInNyYy90b29scy90ZXN0X2Jib3guYyIsCisgICJzcmMvdG9vbHMvdGVzdF90cmlnLmMiLAorICAic3JjL3Rvb2xzL3VwZGF0ZS1jb3B5cmlnaHQiLAorICAic3VicHJvamVjdHMvaGFyZmJ1enoud3JhcCIsCisgICJzdWJwcm9qZWN0cy9saWJwbmcud3JhcCIsCisgICJzdWJwcm9qZWN0cy96bGliLndyYXAiLAorICAidGVzdHMvUkVBRE1FLm1kIiwKKyAgInRlc3RzL2lzc3VlLTEwNjMvbWFpbi5jIiwKKyAgInRlc3RzL21lc29uLmJ1aWxkIiwKKyAgInRlc3RzL3NjcmlwdHMvZG93bmxvYWQtdGVzdC1mb250cy5weSIsCitdCisKK2NsYXNzIENvbW1lbnRUeXBlKEVudW0pOgorICBDX1NUWUxFX0JMT0NLID0gMSAgIyAvKiAuLi4gKi8KKyAgQ19TVFlMRV9CTE9DS19BU19MSU5FID0gMiAgIyAvKiAuLi4gKi8gYnV0IHVzZXMgbXVsdGlwbGUgbGluZXMgb2YgYmxvY2sgY29tbWVudHMuCisgIENfU1RZTEVfTElORSA9IDMgIyAvLyAuLi4KKyAgU0NSSVBUX1NUWUxFX0hBU0ggPSA0ICMgICMgLi4uCisgIFNDUklQVF9TVFlMRV9ET0xMRVIgPSA1ICMgJCEgLi4uCisgIERPQ19TVFlMRSA9IDYgIyBubyBjb21tZW50IGVzY2FwZQorICBVTktOT1dOID0gMTAwMDAKKworCisjIEhlbHBlciBmdW5jdGlvbiBvZiBzaG93aW5nIGVycm9yIG1lc3NhZ2UgYW5kIGltbWVkaWF0ZSBleGl0LgorZGVmIGZhdGFsKG1zZzogc3RyKToKKyAgc3lzLnN0ZGVyci53cml0ZShtc2cpCisgIHN5cy5zdGRlcnIud3JpdGUoIlxuIikKKyAgc3lzLmV4aXQoMSkKKworCitkZWYgd2Fybihtc2c6IHN0cik6CisgIHN5cy5zdGRlcnIud3JpdGUobXNnKQorICBzeXMuc3RkZXJyLndyaXRlKCJcbiIpCisKKworZGVmIGNsZWFudXBfYW5kX2pvaW4ob3V0X2xpbmVzOiBTZXF1ZW5jZVtzdHJdKToKKyAgd2hpbGUgbm90IG91dF9saW5lc1stMV0uc3RyaXAoKToKKyAgICBvdXRfbGluZXMucG9wKC0xKQorCisgICMgSWYgYWxsIGxpbmVzIHN0YXJ0cyBmcm9tIGVtcHR5IHNwYWNlLCBzdHJpcCBpdCBvdXQuCisgIHdoaWxlIGFsbChbbGVuKHgpID09IDAgb3IgeFswXSA9PSAnICcgZm9yIHggaW4gb3V0X2xpbmVzXSk6CisgICAgb3V0X2xpbmVzID0gW3hbMTpdIGZvciB4IGluIG91dF9saW5lc10KKworICBpZiBub3Qgb3V0X2xpbmVzOgorICAgIGZhdGFsKCJGYWlsZWQgdG8gZ2V0IGNvcHlyaWdodCBpbmZvIikKKyAgcmV0dXJuICJcbiIuam9pbihvdXRfbGluZXMpCisKKworZGVmIGdldF9jb21tZW50X3R5cGUoY29weXJpZ2h0X2xpbmU6IHN0ciwgcGF0aDogc3RyKSAtPiBDb21tZW50VHlwZToKKyAgIyB2bXNfbWFrZS5jb20gY29udGFpbnMgbXVsdGlwbGUgY29weXJpZ2h0IGhlYWRlciBhcyBhIHN0cmluZyBjb25zdGFudHMuCisgIGlmIHBhdGguZW5kc3dpdGgoIi92bXNfbWFrZS5jb20iKToKKyAgICByZXR1cm4gQ29tbWVudFR5cGUuU0NSSVBUX1NUWUxFX0RPTExFUgorCisgIGlmICJkb2NzLyIgaW4gcGF0aCBvciAiUkVBRE1FIiBpbiBwYXRoOgorICAgIHJldHVybiBDb21tZW50VHlwZS5ET0NfU1RZTEUKKworICBpZiBjb3B5cmlnaHRfbGluZS5zdGFydHN3aXRoKCIjIik6CisgICAgcmV0dXJuIENvbW1lbnRUeXBlLlNDUklQVF9TVFlMRV9IQVNICisgIGlmIGNvcHlyaWdodF9saW5lLnN0YXJ0c3dpdGgoIi8vIik6CisgICAgcmV0dXJuIENvbW1lbnRUeXBlLkNfU1RZTEVfTElORQorICBpZiBjb3B5cmlnaHRfbGluZS5zdGFydHN3aXRoKCIkISIpOgorICAgIHJldHVybiBDb21tZW50VHlwZS5TQ1JJUFRfU1RZTEVfRE9MTEVSCisKKyAgaWYgIi8qIiBpbiBjb3B5cmlnaHRfbGluZSBhbmQgIiovIiBpbiBjb3B5cmlnaHRfbGluZToKKyAgICAjIGZ0cmFuZG9tLmMgdXNlcyBzaW5nbGUgbGluZSBibG9jayBjb21tZW50IGZvciB0aGUgZmlyc3QgQ29weXJpZ2h0IGxpbmUsCisgICAgIyBhbmQgZm9sbG93aW5nIGxpY2Vuc2Ugbm90aWNlIGlzIHdyYXBwZWQgd2l0aCBzaW5nbGUgYmxvY2sgY29tbWVudC4KKyAgICAjIFRoaXMgZmlsZSBjYW4gYmUgaGFuZGxlZCBieSBDX1NUWUxFX0JMT0NLIHBhcnNlci4KKyAgICBpZiBwYXRoLmVuZHN3aXRoKCJzcmMvdG9vbHMvZnRyYW5kb20vZnRyYW5kb20uYyIpOgorICAgICAgcmV0dXJuIENvbW1lbnRUeXBlLkNfU1RZTEVfQkxPQ0sKKyAgICBlbHNlOgorICAgICAgcmV0dXJuIENvbW1lbnRUeXBlLkNfU1RZTEVfQkxPQ0tfQVNfTElORQorICBlbHNlOgorICAgIHJldHVybiBDb21tZW50VHlwZS5DX1NUWUxFX0JMT0NLCisKKworIyBFeHRyYWN0IGNvcHlyaWdodCBub3RpY2UgYW5kIHJldHVybnMgbmV4dCBpbmRleC4KK2RlZiBleHRyYWN0X2NvcHlyaWdodF9hdChsaW5lczogU2VxdWVuY2Vbc3RyXSwgaTogaW50LCBwYXRoOiBzdHIpIC0+IFR1cGxlW3N0ciwgaW50XToKKyAgY29tbWVudFR5cGUgPSBnZXRfY29tbWVudF90eXBlKGxpbmVzW2ldLCBwYXRoKQorCisgIGlmIGNvbW1lbnRUeXBlID09IENvbW1lbnRUeXBlLkNfU1RZTEVfQkxPQ0s6CisgICAgcmV0dXJuIGV4dHJhY3RfZnJvbV9jX3N0eWxlX2Jsb2NrX2F0KGxpbmVzLCBpLCBwYXRoKQorICBpZiBjb21tZW50VHlwZSA9PSBDb21tZW50VHlwZS5DX1NUWUxFX0JMT0NLX0FTX0xJTkU6CisgICAgcmV0dXJuIGV4dHJhY3RfZnJvbV9jX3N0eWxlX2Jsb2NrX2FzX2xpbmVfYXQobGluZXMsIGksIHBhdGgpCisgIGVsaWYgY29tbWVudFR5cGUgPT0gQ29tbWVudFR5cGUuQ19TVFlMRV9MSU5FOgorICAgIHJldHVybiBleHRyYWN0X2Zyb21fY19zdHlsZV9saW5lc19hdChsaW5lcywgaSwgcGF0aCkKKyAgZWxpZiBjb21tZW50VHlwZSA9PSBDb21tZW50VHlwZS5TQ1JJUFRfU1RZTEVfSEFTSDoKKyAgICByZXR1cm4gZXh0cmFjdF9mcm9tX3NjcmlwdF9oYXNoX2F0KGxpbmVzLCBpLCBwYXRoKQorICBlbGlmIGNvbW1lbnRUeXBlID09IENvbW1lbnRUeXBlLlNDUklQVF9TVFlMRV9ET0xMRVI6CisgICAgcmV0dXJuIGV4dHJhY3RfZnJvbV9zY3JpcHRfZG9sbGVyX2F0KGxpbmVzLCBpLCBwYXRoKQorICBlbGlmIGNvbW1lbnRUeXBlID09IENvbW1lbnRUeXBlLkRPQ19TVFlMRToKKyAgICByZXR1cm4gZXh0cmFjdF9mcm9tX2RvY19zdHlsZV9hdChsaW5lcywgaSwgcGF0aCkKKyAgZWxzZToKKyAgICBmYXRhbCgiVWtub3duIGNvbW1lbnQgc3R5bGU6ICVzIiAlIGxpbmVzW2ldKQorCisKK2RlZiBleHRyYWN0X2Zyb21fZG9jX3N0eWxlX2F0KAorICAgIGxpbmVzOiBTZXF1ZW5jZVtzdHJdLCBpOiBpbnQsIHBhdGg6IHN0cikgLT4gVHVwbGVbc3RyLCBpbnRdOgorICBpZiBub3QgbGluZXNbaV0uc3RhcnRzd2l0aCgiQ29weXJpZ2h0Iik6CisgICAgcmV0dXJuIChOb25lLCBpICsgMSkKKworICBkZWYgaXNfY29weXJpZ2h0X2VuZChsaW5lczogc3RyLCBzdGFydDogaW50LCBpOiBpbnQpIC0+IGJvb2w6CisgICAgIyB0cmVhdCBkb3VibGUgc3BhY2luZyBhcyBlbmQgb2YgbGljZW5zZSBoZWFkZXIKKyAgICBpZiBpIC0gc3RhcnQgPiA0IGFuZCBsaW5lc1tpXSA9PSAiIiBhbmQgbGluZXNbaSArIDFdID09ICIiOgorICAgICAgcmV0dXJuIFRydWUKKyAgICByZXR1cm4gRmFsc2UKKworICBzdGFydCA9IGkKKyAgd2hpbGUgaSA8IGxlbihsaW5lcyk6CisgICAgaWYgaXNfY29weXJpZ2h0X2VuZChsaW5lcywgc3RhcnQsIGkpOgorICAgICAgYnJlYWsKKyAgICBpICs9IDEKKyAgZW5kID0gaQorCisgIGlmIHN0YXJ0ID09IGVuZDoKKyAgICBmYXRhbCgiRmFpbGVkIHRvIGdldCBjb3B5cmlnaHQgaW5mbyIpCisgIG91dF9saW5lcyA9IGxpbmVzW3N0YXJ0OmVuZF0KKworICByZXR1cm4gKGNsZWFudXBfYW5kX2pvaW4ob3V0X2xpbmVzKSwgaSArIDEpCisKKworZGVmIGV4dHJhY3RfZnJvbV9jX3N0eWxlX2xpbmVzX2F0KAorICAgIGxpbmVzOiBTZXF1ZW5jZVtzdHJdLCBpOiBpbnQsIHBhdGg6IHN0cikgLT4gVHVwbGVbc3RyLCBpbnRdOgorICBkZWYgaXNfY29weXJpZ2h0X2VuZChsaW5lKToKKyAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIi8vIik6CisgICAgICByZXR1cm4gRmFsc2UKKyAgICBlbHNlOgorICAgICAgcmV0dXJuIFRydWUKKyAgc3RhcnQgPSBpCisgIHdoaWxlIGkgPCBsZW4obGluZXMpOgorICAgIGlmIGlzX2NvcHlyaWdodF9lbmQobGluZXNbaV0pOgorICAgICAgYnJlYWsKKyAgICBpICs9IDEKKyAgZW5kID0gaQorCisgIGlmIHN0YXJ0ID09IGVuZDoKKyAgICBmYXRhbCgiRmFpbGVkIHRvIGdldCBjb3B5cmlnaHQgaW5mbyIpCisKKyAgb3V0X2xpbmVzID0gW10KKyAgZm9yIGxpbmUgaW4gbGluZXNbc3RhcnQ6ZW5kXToKKyAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIi8vICIpOgorICAgICAgb3V0X2xpbmVzLmFwcGVuZChsaW5lWzM6XSkKKyAgICBlbGlmIGxpbmUgPT0gIi8vIjoKKyAgICAgIG91dF9saW5lcy5hcHBlbmQobGluZVsyOl0pCisgICAgZWxzZToKKyAgICAgIG91dF9saW5lcy5hcHBlbmQobGluZSkKKworICByZXR1cm4gKGNsZWFudXBfYW5kX2pvaW4ob3V0X2xpbmVzKSwgaSArIDEpCisKKworZGVmIGV4dHJhY3RfZnJvbV9zY3JpcHRfaGFzaF9hdCgKKyAgICBsaW5lczogU2VxdWVuY2Vbc3RyXSwgaTogaW50LCBwYXRoOiBzdHIpIC0+IFR1cGxlW3N0ciwgaW50XToKKyAgaWYgbGluZXNbaV0uc3RyaXAoKVswXSAhPSAiIyI6CisgICAgcmV0dXJuIChOb25lLCBpICsgMSkKKyAgZGVmIGlzX2NvcHlyaWdodF9lbmQobGluZXM6IHN0ciwgaTogaW50KSAtPiBib29sOgorICAgIGlmICIjIiBub3QgaW4gbGluZXNbaV06CisgICAgICByZXR1cm4gVHJ1ZQorICAgICMgdHJlYXQgZG91YmxlIHNwYWNpbmcgYXMgZW5kIG9mIGxpY2Vuc2UgaGVhZGVyCisgICAgaWYgbGluZXNbaV0gPT0gIiMiIGFuZCBsaW5lc1tpKzFdID09ICIjIjoKKyAgICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIEZhbHNlCisKKyAgc3RhcnQgPSBpCisgIHdoaWxlIGkgPCBsZW4obGluZXMpOgorICAgIGlmIGlzX2NvcHlyaWdodF9lbmQobGluZXMsIGkpOgorICAgICAgYnJlYWsKKyAgICBpICs9IDEKKyAgZW5kID0gaQorCisgIGlmIHN0YXJ0ID09IGVuZDoKKyAgICBmYXRhbCgiRmFpbGVkIHRvIGdldCBjb3B5cmlnaHQgaW5mbyIpCisKKyAgb3V0X2xpbmVzID0gW10KKyAgZm9yIGxpbmUgaW4gbGluZXNbc3RhcnQ6ZW5kXToKKyAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIiMgIik6CisgICAgICBvdXRfbGluZXMuYXBwZW5kKGxpbmVbMjpdKQorICAgIGVsaWYgbGluZSA9PSAiIyI6CisgICAgICBvdXRfbGluZXMuYXBwZW5kKGxpbmVbMTpdKQorICAgIGVsc2U6CisgICAgICBvdXRfbGluZXMuYXBwZW5kKGxpbmUpCisKKyAgcmV0dXJuIChjbGVhbnVwX2FuZF9qb2luKG91dF9saW5lcyksIGkgKyAxKQorCisKK2RlZiBleHRyYWN0X2Zyb21fc2NyaXB0X2RvbGxlcl9hdCgKKyAgICBsaW5lczogU2VxdWVuY2Vbc3RyXSwgaTogaW50LCBwYXRoOiBzdHIpIC0+IFR1cGxlW3N0ciwgaW50XToKKyAgaWYgbm90IGxpbmVzW2ldLnN0cmlwKCkuc3RhcnRzd2l0aCgiJCEiKToKKyAgICByZXR1cm4gKE5vbmUsIGkgKyAxKQorICBkZWYgaXNfY29weXJpZ2h0X2VuZChsaW5lczogc3RyLCBpOiBpbnQpIC0+IGJvb2w6CisgICAgaWYgIiQhIiBub3QgaW4gbGluZXNbaV06CisgICAgICByZXR1cm4gVHJ1ZQorICAgICMgdHJlYXQgZG91YmxlIHNwYWNpbmcgYXMgZW5kIG9mIGxpY2Vuc2UgaGVhZGVyCisgICAgaWYgbGluZXNbaV0gPT0gIiQhIiBhbmQgbGluZXNbaSsxXSA9PSAiJCEiOgorICAgICAgcmV0dXJuIFRydWUKKyAgICByZXR1cm4gRmFsc2UKKworICBzdGFydCA9IGkKKyAgd2hpbGUgaSA8IGxlbihsaW5lcyk6CisgICAgaWYgaXNfY29weXJpZ2h0X2VuZChsaW5lcywgaSk6CisgICAgICBicmVhaworICAgIGkgKz0gMQorICBlbmQgPSBpICsgMQorCisgIGlmIHN0YXJ0ID09IGVuZDoKKyAgICBmYXRhbCgiRmFpbGVkIHRvIGdldCBjb3B5cmlnaHQgaW5mbyIpCisKKyAgb3V0X2xpbmVzID0gW10KKyAgZm9yIGxpbmUgaW4gbGluZXNbc3RhcnQ6ZW5kXToKKyAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIiQhICIpOgorICAgICAgb3V0X2xpbmVzLmFwcGVuZChsaW5lWzM6XSkKKyAgICBlbGlmIGxpbmUgPT0gIiQhIjoKKyAgICAgIG91dF9saW5lcy5hcHBlbmQobGluZVsyOl0pCisgICAgZWxzZToKKyAgICAgIG91dF9saW5lcy5hcHBlbmQobGluZSkKKworICByZXR1cm4gKGNsZWFudXBfYW5kX2pvaW4ob3V0X2xpbmVzKSwgaSArIDEpCisKKworZGVmIGV4dHJhY3RfZnJvbV9jX3N0eWxlX2Jsb2NrX2F0KAorICAgIGxpbmVzOiBTZXF1ZW5jZVtzdHJdLCBpOiBpbnQsIHBhdGg6IHN0cikgLT4gVHVwbGVbc3RyLCBpbnRdOgorCisgIGRlZiBpc19jb3B5cmlnaHRfZW5kKGxpbmVzOiBzdHIsIGk6IGludCkgLT4gYm9vbDoKKyAgICBpZiAiKi8iIGluIGxpbmVzW2ldOgorICAgICAgcmV0dXJuIFRydWUKKyAgICBpZiAidW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiIgaW4gbGluZXNbaV06CisgICAgICByZXR1cm4gVHJ1ZQorICAgIGlmICJzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgiIGluIGxpbmVzW2ldOgorICAgICAgcmV0dXJuIFRydWUKKyAgICBpZiBsaW5lc1tpXSA9PSAiICoiIGFuZCBsaW5lc1tpICsgMV0gPT0gIiAqIjoKKyAgICAgIHJldHVybiBUcnVlCisgICAgaWYgbGluZXNbaV0gPT0gIiIgYW5kIGxpbmVzW2kgKyAxXSA9PSAiIjoKKyAgICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIEZhbHNlCisKKyAgc3RhcnQgPSBpCisgIGkgKz0gMSAjIGluY2x1ZGUgYXQgbGVhc3Qgb25lIGxpbmUKKyAgd2hpbGUgaSA8IGxlbihsaW5lcyk6CisgICAgaWYgaXNfY29weXJpZ2h0X2VuZChsaW5lcywgaSk6CisgICAgICBicmVhaworICAgIGkgKz0gMQorICBlbmQgPSBpICsgMQorCisgIG91dF9saW5lcyA9IFtdCisgIGZvciBsaW5lIGluIGxpbmVzW3N0YXJ0OmVuZF06CisgICAgY2xlYW5fbGluZSA9IGxpbmUKKworICAgICMgU3RyaXAgYmVnaW5pbmcgIi8qIiBjaGFycworICAgIGlmIGNsZWFuX2xpbmUuc3RhcnRzd2l0aCgiLyogIik6CisgICAgICBjbGVhbl9saW5lID0gY2xlYW5fbGluZVszOl0KKyAgICBpZiBjbGVhbl9saW5lID09ICIvKiI6CisgICAgICBjbGVhbl9saW5lID0gY2xlYW5fbGluZVsyOl0KKworICAgICMgU3RyaXAgZW5kaW5nICIqLyIgY2hhcnMKKyAgICBpZiBjbGVhbl9saW5lLmVuZHN3aXRoKCIgKi8iKToKKyAgICAgIGNsZWFuX2xpbmUgPSBjbGVhbl9saW5lWzotM10KKyAgICBpZiBjbGVhbl9saW5lLmVuZHN3aXRoKCIqLyIpOgorICAgICAgY2xlYW5fbGluZSA9IGNsZWFuX2xpbmVbOi0yXQorCisgICAgIyBTdHJpcCBzdGFydGluZyAiICoiIGNoYXJzCisgICAgaWYgY2xlYW5fbGluZS5zdGFydHN3aXRoKCIgKiAiKToKKyAgICAgIGNsZWFuX2xpbmUgPSBjbGVhbl9saW5lWzM6XQorICAgIGlmIGNsZWFuX2xpbmUgPT0gIiAqIjoKKyAgICAgIGNsZWFuX2xpbmUgPSBsaW5lWzI6XQorCisgICAgIyBTdHJpcCB0cmFpbGluZyBzcGFjZXMKKyAgICBjbGVhbl9saW5lID0gY2xlYW5fbGluZS5yc3RyaXAoKQorCisgICAgb3V0X2xpbmVzLmFwcGVuZChjbGVhbl9saW5lKQorCisgIHJldHVybiAoY2xlYW51cF9hbmRfam9pbihvdXRfbGluZXMpLCBpICsgMSkKKworCitkZWYgZXh0cmFjdF9mcm9tX2Nfc3R5bGVfYmxvY2tfYXNfbGluZV9hdCgKKyAgICBsaW5lczogU2VxdWVuY2Vbc3RyXSwgaTogaW50LCBwYXRoOiBzdHIpIC0+IFR1cGxlW3N0ciwgaW50XToKKworICBkZWYgaXNfY29weXJpZ2h0X2VuZChsaW5lOiBzdHIpIC0+IGJvb2w6CisgICAgaWYgIiovIiBpbiBsaW5lOgorICAgICAgcmV0dXJuIEZhbHNlCisgICAgaWYgcmUubWF0Y2gocicvXCorLycsIGxpbmUuc3RyaXAoKSk6CisgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gVHJ1ZQorCisgIHN0YXJ0ID0gaQorICBpICs9IDEgIyBpbmNsdWRlIGF0IGxlYXN0IG9uZSBsaW5lCisgIHdoaWxlIGkgPCBsZW4obGluZXMpOgorICAgIGlmIGlzX2NvcHlyaWdodF9lbmQobGluZXNbaV0pOgorICAgICAgYnJlYWsKKyAgICBpICs9IDEKKyAgZW5kID0gaSArIDEKKworICBvdXRfbGluZXMgPSBbXQorICBmb3IgbGluZSBpbiBsaW5lc1tzdGFydDplbmRdOgorICAgIGNsZWFuX2xpbmUgPSBsaW5lCisKKyAgICBpZiByZS5tYXRjaChyJy9cKisvJywgbGluZS5zdHJpcCgpKToKKyAgICAgIGNvbnRpbnVlCisKKyAgICAjIFN0cmlwIGJlZ2luaW5nICIvKiIgY2hhcnMKKyAgICBpZiBjbGVhbl9saW5lLnN0YXJ0c3dpdGgoIi8qICIpOgorICAgICAgY2xlYW5fbGluZSA9IGNsZWFuX2xpbmVbMzpdCisgICAgaWYgY2xlYW5fbGluZSA9PSAiLyoiOgorICAgICAgY2xlYW5fbGluZSA9IGNsZWFuX2xpbmVbMjpdCisKKyAgICAjIFN0cmlwIGVuZGluZyAiKi8iIGNoYXJzCisgICAgaWYgY2xlYW5fbGluZS5lbmRzd2l0aCgiICovIik6CisgICAgICBjbGVhbl9saW5lID0gY2xlYW5fbGluZVs6LTNdCisgICAgaWYgY2xlYW5fbGluZS5lbmRzd2l0aCgiKi8iKToKKyAgICAgIGNsZWFuX2xpbmUgPSBjbGVhbl9saW5lWzotMl0KKworICAgICMgU3RyaXAgc3RhcnRpbmcgIiAqIiBjaGFycworICAgIGlmIGNsZWFuX2xpbmUuc3RhcnRzd2l0aCgiICogIik6CisgICAgICBjbGVhbl9saW5lID0gY2xlYW5fbGluZVszOl0KKyAgICBpZiBjbGVhbl9saW5lID09ICIgKiI6CisgICAgICBjbGVhbl9saW5lID0gbGluZVsyOl0KKworICAgICMgU3RyaXAgdHJhaWxpbmcgc3BhY2VzCisgICAgY2xlYW5fbGluZSA9IGNsZWFuX2xpbmUucnN0cmlwKCkKKworICAgIG91dF9saW5lcy5hcHBlbmQoY2xlYW5fbGluZSkKKworICByZXR1cm4gKGNsZWFudXBfYW5kX2pvaW4ob3V0X2xpbmVzKSwgaSArIDEpCisKKyMgUmV0dXJucyB0cnVlIGlmIHRoZSBsaW5lIHNob3dzIHRoZSBzdGFydCBvZiBjb3B5cmlnaHQgbm90aWNlLgorZGVmIGlzX2NvcHlyaWdodF9saW5lKGxpbmU6IHN0ciwgcGF0aDogc3RyKSAtPiBib29sOgorICBpZiAiQ29weXJpZ2h0IiBub3QgaW4gbGluZToKKyAgICByZXR1cm4gRmFsc2UKKworICAjIEZvciBhdm9pZGluZyB1bmV4cGVjdGVkIG1pc21hdGNoZXMsIGV4Y2x1ZGUgcXVvdGVkIENvcHlyaWdodCBzdHJpbmcuCisgIGlmICJgQ29weXJpZ2h0JyIgaW4gbGluZTogIyBGb3Igc3JjL3BzYXV4L3Bzb2Jqcy5jCisgICAgcmV0dXJuIEZhbHNlCisgIGlmICJcIkNvcHlyaWdodFwiIiBpbiBsaW5lOiAgIyBGb3Igc3JjL2NmZi9jZmZ0b2tlbi5oCisgICAgcmV0dXJuIEZhbHNlCisKKyAgaWYgKHBhdGguZW5kc3dpdGgoInNyYy90b29scy91cGRhdGUtY29weXJpZ2h0LXllYXIiKSBvcgorICAgICAgcGF0aC5lbmRzd2l0aCgic3JjL3Rvb2xzL2dsbmFtZXMucHkiKSk6CisgICAgIyBUaGUgY29tbWVudCBjb250YWlucyBzdHJpbmcgb2YgQ29weXJpZ2h0LiBVc2Ugb25seSBpbW1lZGlhdGUgQ29weXJpZ2h0CisgICAgIyBzdHJpbmcgZm9sbG93ZWQgYnkgIiMgIi4KKyAgICByZXR1cm4gbGluZS5zdGFydHN3aXRoKCIjIENvcHlyaWdodCAiKQorCisgIGlmIHBhdGguZW5kc3dpdGgoInNyYy9nemlwL2luZnRyZWVzLmMiKToKKyAgICAjIFRoZSB1bnVzZWQgc3RyaW5nIGNvbnN0YW50IGNvbnRhaW5zIHdvcmQgb2YgQ29weXJpZ2h0LiBVc2Ugb25seSBpbW1lZGlhdGUKKyAgICAjIENvcHlyaWdodCBzdHJpbmcgZm9sbG93ZWQgYnkgIiAqICIuCisgICAgcmV0dXJuIGxpbmUuc3RhcnRzd2l0aCgiICogQ29weXJpZ2h0ICIpCisKKyAgaWYgcGF0aC5lbmRzd2l0aCgic3JjL2Jhc2UvZnR2ZXIucmMiKToKKyAgICAjIENvcHlyaWdodCBzdHJpbmcgbWF0Y2hlcyB3aXRoIExlZ2FsQ29weXJpZ2h0IGtleSBpbiB0aGUgUkMgZmlsZS4KKyAgICByZXR1cm4gbm90ICJMZWdhbENvcHlyaWdodCIgaW4gbGluZQorCisgIHJldHVybiBUcnVlCisKKworIyBFeHRyYWN0IHRoZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBwdXQgaXQgaW50byBjb3B5cmlnaHRzIGFyZy4KK2RlZiBkb19maWxlKHBhdGg6IHN0ciwgY29weXJpZ2h0czogc2V0LCBub19jb3B5cmlnaHRfZmlsZXM6IHNldCk6CisgIHJhdyA9IFBhdGgocGF0aCkucmVhZF9ieXRlcygpCisgIHRyeToKKyAgICBjb250ZW50ID0gcmF3LmRlY29kZSgidXRmLTgiKQorICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgIGNvbnRlbnQgPSByYXcuZGVjb2RlKCJpc28tODg1OS0xIikKKworICBsaW5lcyA9IGNvbnRlbnQuc3BsaXRsaW5lcygpCisKKyAgaWYgbm90ICJDb3B5cmlnaHQiIGluIGNvbnRlbnQ6CisgICAgaWYgcGF0aCBpbiBub19jb3B5cmlnaHRfZmlsZXM6CisgICAgICBub19jb3B5cmlnaHRfZmlsZXMucmVtb3ZlKHBhdGgpCisgICAgZWxzZToKKyAgICAgIGZhdGFsKCIlcyBkb2VzIG5vdCBjb250YWluIENvcHlyaWdodCBsaW5lIiAlIHBhdGgpCisgICAgcmV0dXJuCisKKyAgaSA9IDAKKyAgbGljZW5zZV9mb3VuZCA9IEZhbHNlCisgIHdoaWxlIGkgPCBsZW4obGluZXMpOgorICAgIGlmIGlzX2NvcHlyaWdodF9saW5lKGxpbmVzW2ldLCBwYXRoKToKKyAgICAgIChub3RpY2UsIG5leHRpKSA9IGV4dHJhY3RfY29weXJpZ2h0X2F0KGxpbmVzLCBpLCBwYXRoKQorICAgICAgaWYgbm90aWNlOgorICAgICAgICBpZiBub3Qgbm90aWNlIGluIGNvcHlyaWdodHM6CisgICAgICAgICAgY29weXJpZ2h0c1tub3RpY2VdID0gW10KKyAgICAgICAgY29weXJpZ2h0c1tub3RpY2VdLmFwcGVuZChwYXRoKQorICAgICAgICBsaWNlbnNlX2ZvdW5kID0gVHJ1ZQorCisgICAgICBpID0gbmV4dGkKKyAgICBlbHNlOgorICAgICAgaSArPSAxCisKKyAgaWYgbm90IGxpY2Vuc2VfZm91bmQ6CisgICAgZmF0YWwoIkxpY2Vuc2UgaGVhZGVyIGNvdWxkIG5vdCBmb3VuZDogJXMiICUgcGF0aCkKKworZGVmIGRvX2NoZWNrKHBhdGgsIGZvcm1hdCk6CisgIGlmIG5vdCBwYXRoLmVuZHN3aXRoKCcvJyk6ICMgbWFrZSBzdXJlIHRoZSBwYXRoIGVuZHMgd2l0aCBzbGFzaAorICAgIHBhdGggPSBwYXRoICsgJy8nCisKKyAgZmlsZV90b19pZ25vcmUgPSBzZXQoW29zLnBhdGguam9pbihwYXRoLCB4KSBmb3IgeCBpbiBJR05PUkVfRklMRV9OQU1FXSkKKyAgbm9fY29weXJpZ2h0X2ZpbGVzID0gc2V0KFtvcy5wYXRoLmpvaW4ocGF0aCwgeCkgZm9yIHggaW4gTk9fQ09QWVJJR0hUX0ZJTEVTXSkKKyAgY29weXJpZ2h0cyA9IHt9CisKKyAgZm9yIGRpcmVjdG9yeSwgc3ViX2RpcmVjdG9yaWVzLCAgZmlsZW5hbWVzIGluIG9zLndhbGsocGF0aCk6CisgICAgIyBza2lwIC5naXQgZGlyZWN0b3J5CisgICAgaWYgIi5naXQiIGluIHN1Yl9kaXJlY3RvcmllczoKKyAgICAgIHN1Yl9kaXJlY3Rvcmllcy5yZW1vdmUoIi5naXQiKQorCisgICAgZm9yIGZuYW1lIGluIGZpbGVuYW1lczoKKyAgICAgIGZwYXRoID0gb3MucGF0aC5qb2luKGRpcmVjdG9yeSwgZm5hbWUpCisgICAgICBpZiBmcGF0aCBpbiBmaWxlX3RvX2lnbm9yZToKKyAgICAgICAgZmlsZV90b19pZ25vcmUucmVtb3ZlKGZwYXRoKQorICAgICAgICBjb250aW51ZQorICAgICAgZG9fZmlsZShmcGF0aCwgY29weXJpZ2h0cywgbm9fY29weXJpZ2h0X2ZpbGVzKQorCisgIGlmIGxlbihmaWxlX3RvX2lnbm9yZSkgIT0gMDoKKyAgICBmYXRhbCgiRm9sbG93aW5nIGZpbGVzIGFyZSBsaXN0ZWQgaW4gSUdOT1JFX0ZJTEVfTkFNRSBidXQgZG9lc24ndCBleGlzdHMsLlxuIgorICAgICAgICAgICsgIlxuIi5qb2luKGZpbGVfdG9faWdub3JlKSkKKworICBpZiBsZW4obm9fY29weXJpZ2h0X2ZpbGVzKSAhPSAwOgorICAgIGZhdGFsKCJGb2xsb3dpbmcgZmlsZXMgYXJlIGxpc3RlZCBpbiBOT19DT1BZUklHSFRfRklMRVMgYnV0IGRvZXNuJ3QgZXhpc3RzLlxuIgorICAgICAgICAgICsgIlxuIi5qb2luKG5vX2NvcHlyaWdodF9maWxlcykpCisKKyAgaWYgZm9ybWF0ID09IEZvcm1hdC5ub3RpY2U6CisgICAgcHJpbnRfbm90aWNlKGNvcHlyaWdodHMsIEZhbHNlKQorICBlbGlmIGZvcm1hdCA9PSBGb3JtYXQubm90aWNlX3dpdGhfZmlsZW5hbWU6CisgICAgcHJpbnRfbm90aWNlKGNvcHlyaWdodHMsIFRydWUpCisgIGVsaWYgZm9ybWF0ID09IEZvcm1hdC5odG1sOgorICAgIHByaW50X2h0bWwoY29weXJpZ2h0cykKKworZGVmIHByaW50X2h0bWwoY29weXJpZ2h0cyk6CisgIHByaW50KCc8aHRtbD4nKQorICBwcmludCgiIiIKKyAgPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgdGFibGUgeworICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlCisgICAgICB9CisKKyAgICAgIHRhYmxlIHRyIHRkIHsKKyAgICAgICAgcGFkZGluZzogMTBweCAxMHB4IDEwcHggMTBweAorICAgICAgfQorICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgIiIiKQorICBwcmludCgnPGJvZHk+JykKKyAgcHJpbnQoJzx0YWJsZSBib3JkZXI9IjEiIHN0eWxlPSJib3JkZXItY29sbGFwc2U6Y29sbGFwc2UiPicpCisgIGZvciBub3RpY2UgaW4gc29ydGVkKGNvcHlyaWdodHMua2V5cygpKToKKyAgICBmaWxlcyA9IHNvcnRlZChjb3B5cmlnaHRzW25vdGljZV0pCisKKyAgICBwcmludCgnPHRyPicpCisgICAgcHJpbnQoJzx0ZD4nKQorICAgIHByaW50KCc8dWw+JykKKyAgICBmb3IgZmlsZSBpbiBmaWxlczoKKyAgICAgIHByaW50KCc8bGk+JXM8L2xpPicgJSBmaWxlKQorICAgIHByaW50KCc8L3VsPicpCisgICAgcHJpbnQoJzwvdGQ+JykKKyAgICBwcmludCgnPHRkPicpCisgICAgcHJpbnQoJzxwPiVzPC9wPicgJSBub3RpY2UucmVwbGFjZSgnXG4nLCAnPGJyPicpKQorICAgIHByaW50KCc8L3RkPicpCisKKyAgICBwcmludCgnPC90cj4nKQorCisKKyAgcHJpbnQoJzwvdGFibGU+JykKKyAgcHJpbnQoJzwvYm9keT48L2h0bWw+JykKKworZGVmIHByaW50X25vdGljZShjb3B5cmlnaHRzLCBwcmludF9maWxlKToKKyAgIyBwcmludCB0aGUgY29weXJpZ2h0IGluIHNvcnRlZCBvcmRlciBmb3Igc3RhYmxlIG91dHB1dC4KKyAgZm9yIG5vdGljZSBpbiBzb3J0ZWQoY29weXJpZ2h0cy5rZXlzKCkpOgorICAgIGlmIHByaW50X2ZpbGU6CisgICAgICBmaWxlcyA9IHNvcnRlZChjb3B5cmlnaHRzW25vdGljZV0pCisgICAgICBwcmludCgiXG4iLmpvaW4oZmlsZXMpKQorICAgICAgcHJpbnQoKQorICAgIHByaW50KG5vdGljZSkKKyAgICBwcmludCgpCisgICAgcHJpbnQoIi0iICogNjcpCisgICAgcHJpbnQoKQorCitjbGFzcyBGb3JtYXQoRW51bSk6CisgIG5vdGljZSA9ICdub3RpY2UnCisgIG5vdGljZV93aXRoX2ZpbGVuYW1lID0gJ25vdGljZV93aXRoX2ZpbGVuYW1lJworICBodG1sID0gJ2h0bWwnCisKKyAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgcmV0dXJuIHNlbGYudmFsdWUKKworZGVmIG1haW4oKToKKyAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249IkNvbGxlY3Qgbm90aWNlIGhlYWRlcnMuIikKKyAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1mb3JtYXQiLCBkZXN0PSJmb3JtYXQiLCB0eXBlPUZvcm1hdCwgY2hvaWNlcz1saXN0KEZvcm1hdCksCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Gb3JtYXQubm90aWNlLCBoZWxwPSJwcmludCBmaWxlbmFtZSBiZWZvcmUgdGhlIGxpY2Vuc2Ugbm90aWNlIikKKyAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS10YXJnZXQiLCBkZXN0PSJ0YXJnZXQiLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZD1UcnVlLCBoZWxwPSJ0YXJnZXQgZGlyZWN0b3J5IHRvIGNvbGxlY3Qgbm90aWNlIGhlYWRlcnMiKQorICByZXMgPSBwYXJzZXIucGFyc2VfYXJncygpCisgIGRvX2NoZWNrKHJlcy50YXJnZXQsIHJlcy5mb3JtYXQpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgIG1haW4oKQorCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oIGIvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaAppbmRleCA2NWVmZmNiLi5hODUxNTE2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBBTlNJLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZSAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIGIvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaAppbmRleCBlNDZkMzE0Li5lNjA3YmNlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBCdWlsZCBtYWNyb3Mgb2YgdGhlIEZyZWVUeXBlIDIgbGlicmFyeS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC03NzcsNiArNzc3LDE4IEBACiAjZGVmaW5lIEZUX0NPTE9SX0ggIDxmcmVldHlwZS9mdGNvbG9yLmg+CiAKIAorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX09UU1ZHX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiBgI2luY2x1ZGVgIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIEZyZWVUeXBlfjIgQVBJIHdoaWNoIGhhbmRsZXMgdGhlIE9wZW5UeXBlICdTVkd+JyBnbHlwaHMuCisgICAqLworI2RlZmluZSBGVF9PVFNWR19IICA8ZnJlZXR5cGUvb3RzdmcuaD4KKworCiAgIC8qICovCiAKICAgLyogVGhlc2UgaGVhZGVyIGZpbGVzIGRvbid0IG5lZWQgdG8gYmUgaW5jbHVkZWQgYnkgdGhlIHVzZXIuICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oIGIvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaAppbmRleCA4NGI0NjhlLi40YWZiMTQ4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmgKQEAgLTI4LDUgKzI4LDYgQEAKIEZUX1VTRV9NT0RVTEUoIEZUX1JlbmRlcmVyX0NsYXNzLCBmdF9yYXN0ZXIxX3JlbmRlcmVyX2NsYXNzICkKIEZUX1VTRV9NT0RVTEUoIEZUX1JlbmRlcmVyX0NsYXNzLCBmdF9zZGZfcmVuZGVyZXJfY2xhc3MgKQogRlRfVVNFX01PRFVMRSggRlRfUmVuZGVyZXJfQ2xhc3MsIGZ0X2JpdG1hcF9zZGZfcmVuZGVyZXJfY2xhc3MgKQorRlRfVVNFX01PRFVMRSggRlRfUmVuZGVyZXJfQ2xhc3MsIGZ0X3N2Z19yZW5kZXJlcl9jbGFzcyApCiAKIC8qIEVPRiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCBiL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgKaW5kZXggYzdlNDZiNS4uOWExMmJhYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVXNlci1zZWxlY3RhYmxlIGNvbmZpZ3VyYXRpb24gbWFjcm9zIChzcGVjaWZpY2F0aW9uIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTIyMCw2ICsyMjAsMTAgQEAKICAgICogICBJZiB5b3UgdXNlIGEgYnVpbGQgc3lzdGVtIGxpa2UgY21ha2Ugb3IgdGhlIGBjb25maWd1cmVgIHNjcmlwdCwKICAgICogICBvcHRpb25zIHNldCBieSB0aG9zZSBwcm9ncmFtcyBoYXZlIHByZWNlZGVuY2UsIG92ZXJ3cml0aW5nIHRoZSB2YWx1ZQogICAgKiAgIGhlcmUgd2l0aCB0aGUgY29uZmlndXJlZCBvbmUuCisgICAqCisgICAqICAgSWYgeW91IHVzZSB0aGUgR05VIG1ha2UgYnVpbGQgc3lzdGVtIGRpcmVjdGx5ICh0aGF0IGlzLCB3aXRob3V0IHRoZQorICAgKiAgIGBjb25maWd1cmVgIHNjcmlwdCkgYW5kIHlvdSBkZWZpbmUgdGhpcyBtYWNybywgeW91IGFsc28gaGF2ZSB0byBwYXNzCisgICAqICAgYFNZU1RFTV9aTElCPXllc2AgYXMgYW4gYXJndW1lbnQgdG8gbWFrZS4KICAgICovCiAvKiAjZGVmaW5lIEZUX0NPTkZJR19PUFRJT05fU1lTVEVNX1pMSUIgKi8KIApAQCAtNDYwLDkgKzQ2NCw5IEBACiAgICAqICAgd2hpbGUgY29tcGlsaW5nIGluICdyZWxlYXNlJyBtb2RlKToKICAgICoKICAgICogICBgYGAKLSAgICogICAgIF9hZl9kZWJ1Z19kaXNhYmxlX2hvcnpfaGludHMKLSAgICogICAgIF9hZl9kZWJ1Z19kaXNhYmxlX3ZlcnRfaGludHMKLSAgICogICAgIF9hZl9kZWJ1Z19kaXNhYmxlX2JsdWVfaGludHMKKyAgICogICAgIGFmX2RlYnVnX2Rpc2FibGVfaG9yel9oaW50c18KKyAgICogICAgIGFmX2RlYnVnX2Rpc2FibGVfdmVydF9oaW50c18KKyAgICogICAgIGFmX2RlYnVnX2Rpc2FibGVfYmx1ZV9oaW50c18KICAgICogICBgYGAKICAgICoKICAgICogICBBZGRpdGlvbmFsbHksIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHByb3ZpZGUgZHVtcHMgb2YgdmFyaW91cwpAQCAtNDc5LDcgKzQ4Myw3IEBACiAgICAqICAgQXMgYW4gYXJndW1lbnQsIHRoZXkgdXNlIGFub3RoZXIgZ2xvYmFsIHZhcmlhYmxlOgogICAgKgogICAgKiAgIGBgYAotICAgKiAgICAgX2FmX2RlYnVnX2hpbnRzCisgICAqICAgICBhZl9kZWJ1Z19oaW50c18KICAgICogICBgYGAKICAgICoKICAgICogICBQbGVhc2UgaGF2ZSBhIGxvb2sgYXQgdGhlIGBmdGdyaWRgIGRlbW8gcHJvZ3JhbSB0byBzZWUgaG93IHRob3NlCkBAIC01MjgsNiArNTMyLDIwIEBACiAKICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAqCisgICAqIE9wZW5UeXBlIFNWRyBHbHlwaCBTdXBwb3J0CisgICAqCisgICAqICAgU2V0dGluZyB0aGlzIG1hY3JvIGVuYWJsZXMgc3VwcG9ydCBmb3IgT3BlblR5cGUgU1ZHIGdseXBocy4gIEJ5CisgICAqICAgZGVmYXVsdCwgRnJlZVR5cGUgY2FuIG9ubHkgZmV0Y2ggU1ZHIGRvY3VtZW50cy4gIEhvd2V2ZXIsIGl0IGNhbiBhbHNvCisgICAqICAgcmVuZGVyIHRoZW0gaWYgZXh0ZXJuYWwgcmVuZGVyaW5nIGhvb2sgZnVuY3Rpb25zIGFyZSBwbHVnZ2VkIGluIGF0CisgICAqICAgcnVudGltZS4KKyAgICoKKyAgICogICBNb3JlIGRldGFpbHMgb24gdGhlIGhvb2tzIGNhbiBiZSBmb3VuZCBpbiBmaWxlIGBvdHN2Zy5oYC4KKyAgICovCisjZGVmaW5lIEZUX0NPTkZJR19PUFRJT05fU1ZHCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKICAgICogRXJyb3IgU3RyaW5ncwogICAgKgogICAgKiAgIElmIHRoaXMgbWFjcm8gaXMgc2V0LCBgRlRfRXJyb3JfU3RyaW5nYCB3aWxsIHJldHVybiBtZWFuaW5nZnVsCkBAIC01NjksMTIgKzU4NywxMiBAQAogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICoKICAgICogRGVmaW5lIGBUVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVNgIGlmIHlvdSB3YW50IHRvIGJlIGFibGUgdG8KLSAgICogbG9hZCBhbmQgZW51bWVyYXRlIHRoZSBnbHlwaCBQb3N0c2NyaXB0IG5hbWVzIGluIGEgVHJ1ZVR5cGUgb3IgT3BlblR5cGUKKyAgICogbG9hZCBhbmQgZW51bWVyYXRlIFBvc3RzY3JpcHQgbmFtZXMgb2YgZ2x5cGhzIGluIGEgVHJ1ZVR5cGUgb3IgT3BlblR5cGUKICAgICogZmlsZS4KICAgICoKLSAgICogTm90ZSB0aGF0IHdoZW4geW91IGRvIG5vdCBjb21waWxlIHRoZSAncHNuYW1lcycgbW9kdWxlIGJ5IHVuZGVmaW5pbmcgdGhlCi0gICAqIGFib3ZlIGBGVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVNgLCB0aGUgJ3NmbnQnIG1vZHVsZSB3aWxsCi0gICAqIGNvbnRhaW4gYWRkaXRpb25hbCBjb2RlIHVzZWQgdG8gcmVhZCB0aGUgUFMgTmFtZXMgdGFibGUgZnJvbSBhIGZvbnQuCisgICAqIE5vdGUgdGhhdCBpZiB5b3UgZG8gbm90IGNvbXBpbGUgdGhlICdwc25hbWVzJyBtb2R1bGUgYnkgdW5kZWZpbmluZyB0aGUKKyAgICogYWJvdmUgYEZUX0NPTkZJR19PUFRJT05fUE9TVFNDUklQVF9OQU1FU2AgbWFjcm8sIHRoZSAnc2ZudCcgbW9kdWxlIHdpbGwKKyAgICogY29udGFpbiBhZGRpdGlvbmFsIGNvZGUgdG8gcmVhZCB0aGUgUG9zdFNjcmlwdCBuYW1lIHRhYmxlIGZyb20gYSBmb250LgogICAgKgogICAgKiAoQnkgZGVmYXVsdCwgdGhlIG1vZHVsZSB1c2VzICdwc25hbWVzJyB0byBleHRyYWN0IGdseXBoIG5hbWVzLikKICAgICovCkBAIC03MjksNiArNzQ3LDI0IEBACiAKICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAqCisgICAqIERlZmluZSBgVFRfQ09ORklHX09QVElPTl9OT19CT1JJTkdfRVhQQU5TSU9OYCBpZiB5b3Ugd2FudCB0byBleGNsdWRlCisgICAqIHN1cHBvcnQgZm9yICdib3JpbmcnIE9wZW5UeXBlIHNwZWNpZmljYXRpb24gZXhwYW5zaW9ucy4KKyAgICoKKyAgICogICBodHRwczovL2dpdGh1Yi5jb20vaGFyZmJ1enovYm9yaW5nLWV4cGFuc2lvbi1zcGVjCisgICAqCisgICAqIFJpZ2h0IG5vdywgdGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgY292ZXJlZDoKKyAgICoKKyAgICogICAtICdhdmFyJyB2ZXJzaW9uIDIuMAorICAgKgorICAgKiBNb3N0IGxpa2VseSwgdGhpcyBpcyBhIHRlbXBvcmFyeSBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBiZSByZW1vdmVkIGluCisgICAqIHRoZSBuZWFyIGZ1dHVyZSwgc2luY2UgaXQgaXMgYXNzdW1lZCB0aGF0IGV2ZW50dWFsbHkgdGhvc2UgZmVhdHVyZXMgYXJlCisgICAqIGFkZGVkIHRvIHRoZSBPcGVuVHlwZSBzdGFuZGFyZC4KKyAgICovCisvKiAjZGVmaW5lIFRUX0NPTkZJR19PUFRJT05fTk9fQk9SSU5HX0VYUEFOU0lPTiAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCiAgICAqIERlZmluZSBgVFRfQ09ORklHX09QVElPTl9CREZgIGlmIHlvdSB3YW50IHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgYW4KICAgICogZW1iZWRkZWQgJ0JERn4nIHRhYmxlIHdpdGhpbiBTRk5ULWJhc2VkIGJpdG1hcCBmb3JtYXRzLgogICAgKi8KQEAgLTEwMDgsOCArMTA0NCw4IEBACiAjZXJyb3IgIkludmFsaWQgQ0ZGIGRhcmtlbmluZyBwYXJhbWV0ZXJzISIKICNlbmRpZgogCi1GVF9FTkRfSEVBREVSCiAKK0ZUX0VORF9IRUFERVIKIAogI2VuZGlmIC8qIEZUT1BUSU9OX0hfICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oCmluZGV4IDZlZTQxMmEuLjNjOWQyYWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRzdGRsaWIuaApAQCAtNSw3ICs1LDcgQEAKICAqICAgQU5TSS1zcGVjaWZpYyBsaWJyYXJ5IGFuZCBoZWFkZXIgY29uZmlndXJhdGlvbiBmaWxlIChzcGVjaWZpY2F0aW9uCiAgKiAgIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2ludGVnZXItdHlwZXMuaCBiL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2ludGVnZXItdHlwZXMuaAppbmRleCA1ZWYwOWYxLi43MjU4YjUwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9pbnRlZ2VyLXR5cGVzLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvaW50ZWdlci10eXBlcy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgaW50ZWdlciB0eXBlcyBkZWZpbml0aW9ucy4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0yMjEsOSArMjIxLDEwIEBACiAjZGVmaW5lIEZUX0lOVDY0ICAgX19pbnQ2NAogI2RlZmluZSBGVF9VSU5UNjQgIHVuc2lnbmVkIF9faW50NjQKIAotI2VsaWYgZGVmaW5lZCggX19XQVRDT01DX18gKSAgIC8qIFdhdGNvbSBDKysgKi8KKyNlbGlmIGRlZmluZWQoIF9fV0FUQ09NQ19fICkgJiYgX19XQVRDT01DX18gPj0gMTEwMCAgLyogV2F0Y29tIEMrKyAqLwogCi0gIC8qIFdhdGNvbSBkb2Vzbid0IHByb3ZpZGUgNjQtYml0IGRhdGEgdHlwZXMgKi8KKyNkZWZpbmUgRlRfSU5UNjQgICBsb25nIGxvbmcgaW50CisjZGVmaW5lIEZUX1VJTlQ2NCAgdW5zaWduZWQgbG9uZyBsb25nIGludAogCiAjZWxpZiBkZWZpbmVkKCBfX01XRVJLU19fICkgICAgLyogTWV0cm93ZXJrcyBDb2RlV2FycmlvciAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9tYWMtc3VwcG9ydC5oIGIvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvbWFjLXN1cHBvcnQuaAppbmRleCBlZjU4ZDhiLi5iNzdiOTZkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9tYWMtc3VwcG9ydC5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL21hYy1zdXBwb3J0LmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBNYWMvT1MgWCBzdXBwb3J0IGNvbmZpZ3VyYXRpb24gaGVhZGVyLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL3B1YmxpYy1tYWNyb3MuaCBiL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL3B1YmxpYy1tYWNyb3MuaAppbmRleCA5ZmJiMzI3Li4yM2QwZmE2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9wdWJsaWMtbWFjcm9zLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvcHVibGljLW1hY3Jvcy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRGVmaW5lIGEgc2V0IG9mIGNvbXBpbGVyIG1hY3JvcyB1c2VkIGluIHB1YmxpYyBGcmVlVHlwZSBoZWFkZXJzLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCBiL2luY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaAppbmRleCBmNmM2NmI5Li5lZmZmNzRmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgaGlnaC1sZXZlbCBBUEkgYW5kIGNvbW1vbiB0eXBlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0xNTMsNiArMTUzLDkgQEAKICAgICogICBGVF9GQUNFX0ZMQUdfR0xZUEhfTkFNRVMKICAgICogICBGVF9GQUNFX0ZMQUdfRVhURVJOQUxfU1RSRUFNCiAgICAqICAgRlRfRkFDRV9GTEFHX0hJTlRFUgorICAgKiAgIEZUX0ZBQ0VfRkxBR19TVkcKKyAgICogICBGVF9GQUNFX0ZMQUdfU0JJWAorICAgKiAgIEZUX0ZBQ0VfRkxBR19TQklYX09WRVJMQVkKICAgICoKICAgICogICBGVF9IQVNfSE9SSVpPTlRBTAogICAgKiAgIEZUX0hBU19WRVJUSUNBTApAQCAtMTYxLDYgKzE2NCw5IEBACiAgICAqICAgRlRfSEFTX0dMWVBIX05BTUVTCiAgICAqICAgRlRfSEFTX0NPTE9SCiAgICAqICAgRlRfSEFTX01VTFRJUExFX01BU1RFUlMKKyAgICogICBGVF9IQVNfU1ZHCisgICAqICAgRlRfSEFTX1NCSVgKKyAgICogICBGVF9IQVNfU0JJWF9PVkVSTEFZCiAgICAqCiAgICAqICAgRlRfSVNfU0ZOVAogICAgKiAgIEZUX0lTX1NDQUxBQkxFCkBAIC0yMDksNyArMjE1LDYgQEAKICAgICogICBGVF9HZXRfQ2hhcl9JbmRleAogICAgKiAgIEZUX0dldF9GaXJzdF9DaGFyCiAgICAqICAgRlRfR2V0X05leHRfQ2hhcgotICAgKiAgIEZUX0dldF9OYW1lX0luZGV4CiAgICAqICAgRlRfTG9hZF9DaGFyCiAgICAqCiAgICAqICAgRlRfT1BFTl9NRU1PUlkKQEAgLTIyNSw2ICsyMzAsNyBAQAogICAgKiAgIEZUX0xPQURfTk9fU0NBTEUKICAgICogICBGVF9MT0FEX05PX0hJTlRJTkcKICAgICogICBGVF9MT0FEX05PX0JJVE1BUAorICAgKiAgIEZUX0xPQURfU0JJVFNfT05MWQogICAgKiAgIEZUX0xPQURfTk9fQVVUT0hJTlQKICAgICogICBGVF9MT0FEX0NPTE9SCiAgICAqCkBAIC0yNDcsMTQgKzI1MywxNSBAQAogICAgKiAgIEZUX0dldF9LZXJuaW5nCiAgICAqICAgRlRfS2VybmluZ19Nb2RlCiAgICAqICAgRlRfR2V0X1RyYWNrX0tlcm5pbmcKLSAgICogICBGVF9HZXRfR2x5cGhfTmFtZQotICAgKiAgIEZUX0dldF9Qb3N0c2NyaXB0X05hbWUKICAgICoKICAgICogICBGVF9DaGFyTWFwUmVjCiAgICAqICAgRlRfU2VsZWN0X0NoYXJtYXAKICAgICogICBGVF9TZXRfQ2hhcm1hcAogICAgKiAgIEZUX0dldF9DaGFybWFwX0luZGV4CiAgICAqCisgICAqICAgRlRfR2V0X05hbWVfSW5kZXgKKyAgICogICBGVF9HZXRfR2x5cGhfTmFtZQorICAgKiAgIEZUX0dldF9Qb3N0c2NyaXB0X05hbWUKICAgICogICBGVF9HZXRfRlNUeXBlX0ZsYWdzCiAgICAqICAgRlRfR2V0X1N1YkdseXBoX0luZm8KICAgICoKQEAgLTUyMiwxMyArNTI5LDE1IEBACiAgICAqICAgc2l6ZS4KICAgICoKICAgICogQG5vdGU6Ci0gICAqICAgQW4gQEZUX0ZhY2UgaGFzIG9uZSBfYWN0aXZlXyBARlRfU2l6ZSBvYmplY3QgdGhhdCBpcyB1c2VkIGJ5IGZ1bmN0aW9ucwotICAgKiAgIGxpa2UgQEZUX0xvYWRfR2x5cGggdG8gZGV0ZXJtaW5lIHRoZSBzY2FsaW5nIHRyYW5zZm9ybWF0aW9uIHRoYXQgaW4KLSAgICogICB0dXJuIGlzIHVzZWQgdG8gbG9hZCBhbmQgaGludCBnbHlwaHMgYW5kIG1ldHJpY3MuCisgICAqICAgQW4gQEZUX0ZhY2UgaGFzIG9uZSBfYWN0aXZlXyBgRlRfU2l6ZWAgb2JqZWN0IHRoYXQgaXMgdXNlZCBieQorICAgKiAgIGZ1bmN0aW9ucyBsaWtlIEBGVF9Mb2FkX0dseXBoIHRvIGRldGVybWluZSB0aGUgc2NhbGluZyB0cmFuc2Zvcm1hdGlvbgorICAgKiAgIHRoYXQgaW4gdHVybiBpcyB1c2VkIHRvIGxvYWQgYW5kIGhpbnQgZ2x5cGhzIGFuZCBtZXRyaWNzLgogICAgKgotICAgKiAgIFlvdSBjYW4gdXNlIEBGVF9TZXRfQ2hhcl9TaXplLCBARlRfU2V0X1BpeGVsX1NpemVzLCBARlRfUmVxdWVzdF9TaXplCisgICAqICAgQSBuZXdseSBjcmVhdGVkIGBGVF9TaXplYCBvYmplY3QgY29udGFpbnMgb25seSBtZWFuaW5nbGVzcyB6ZXJvIHZhbHVlcy4KKyAgICogICBZb3UgbXVzdCB1c2UgQEZUX1NldF9DaGFyX1NpemUsIEBGVF9TZXRfUGl4ZWxfU2l6ZXMsIEBGVF9SZXF1ZXN0X1NpemUKICAgICogICBvciBldmVuIEBGVF9TZWxlY3RfU2l6ZSB0byBjaGFuZ2UgdGhlIGNvbnRlbnQgKGkuZS4sIHRoZSBzY2FsaW5nCi0gICAqICAgdmFsdWVzKSBvZiB0aGUgYWN0aXZlIEBGVF9TaXplLgorICAgKiAgIHZhbHVlcykgb2YgdGhlIGFjdGl2ZSBgRlRfU2l6ZWAuICBPdGhlcndpc2UsIHRoZSBzY2FsaW5nIGFuZCBoaW50aW5nCisgICAqICAgd2lsbCBub3QgYmUgcGVyZm9ybWVkLgogICAgKgogICAgKiAgIFlvdSBjYW4gdXNlIEBGVF9OZXdfU2l6ZSB0byBjcmVhdGUgYWRkaXRpb25hbCBzaXplIG9iamVjdHMgZm9yIGEgZ2l2ZW4KICAgICogICBARlRfRmFjZSwgYnV0IHRoZXkgd29uJ3QgYmUgdXNlZCBieSBvdGhlciBmdW5jdGlvbnMgdW50aWwgeW91IGFjdGl2YXRlCkBAIC02MzcsNyArNjQ2LDcgQEAKICAgICoKICAgICogQG5vdGU6CiAgICAqICAgRGVzcGl0ZSB0aGUgbmFtZSwgdGhpcyBlbnVtZXJhdGlvbiBsaXN0cyBzcGVjaWZpYyBjaGFyYWN0ZXIKLSAgICogICByZXBlcnRvcmllcyAoaS5lLiwgY2hhcnNldHMpLCBhbmQgbm90IHRleHQgZW5jb2RpbmcgbWV0aG9kcyAoZS5nLiwKKyAgICogICByZXBlcnRvaXJlcyAoaS5lLiwgY2hhcnNldHMpLCBhbmQgbm90IHRleHQgZW5jb2RpbmcgbWV0aG9kcyAoZS5nLiwKICAgICogICBVVEYtOCwgVVRGLTE2LCBldGMuKS4KICAgICoKICAgICogICBPdGhlciBlbmNvZGluZ3MgbWlnaHQgYmUgZGVmaW5lZCBpbiB0aGUgZnV0dXJlLgpAQCAtNzcwLDcgKzc3OSw3IEBACiAgICAqICAgYGVuY29kaW5nX2lkYC4gIElmLCBmb3IgZXhhbXBsZSwgYGVuY29kaW5nX2lkYCBpcyBgVFRfTUFDX0lEX1JPTUFOYAogICAgKiAgIGFuZCB0aGUgbGFuZ3VhZ2UgSUQgKG1pbnVzfjEpIGlzIGBUVF9NQUNfTEFOR0lEX0dSRUVLYCwgaXQgaXMgdGhlCiAgICAqICAgR3JlZWsgZW5jb2RpbmcsIG5vdCBSb21hbi4gIGBUVF9NQUNfSURfQVJBQklDYCB3aXRoCi0gICAqICAgYFRUX01BQ19MQU5HSURfRkFSU0lgIG1lYW5zIHRoZSBGYXJzaSB2YXJpYW50IHRoZSBBcmFiaWMgZW5jb2RpbmcuCisgICAqICAgYFRUX01BQ19MQU5HSURfRkFSU0lgIG1lYW5zIHRoZSBGYXJzaSB2YXJpYW50IG9mIHRoZSBBcmFiaWMgZW5jb2RpbmcuCiAgICAqLwogICB0eXBlZGVmIGVudW0gIEZUX0VuY29kaW5nXwogICB7CkBAIC0xMTU4LDkgKzExNjcsOSBAQAogICAgKiAgIEZUX0ZBQ0VfRkxBR19LRVJOSU5HIDo6CiAgICAqICAgICBUaGUgZmFjZSBjb250YWlucyBrZXJuaW5nIGluZm9ybWF0aW9uLiAgSWYgc2V0LCB0aGUga2VybmluZyBkaXN0YW5jZQogICAgKiAgICAgY2FuIGJlIHJldHJpZXZlZCB1c2luZyB0aGUgZnVuY3Rpb24gQEZUX0dldF9LZXJuaW5nLiAgT3RoZXJ3aXNlIHRoZQotICAgKiAgICAgZnVuY3Rpb24gYWx3YXlzIHJldHVybiB0aGUgdmVjdG9yICgwLDApLiAgTm90ZSB0aGF0IEZyZWVUeXBlIGRvZXNuJ3QKLSAgICogICAgIGhhbmRsZSBrZXJuaW5nIGRhdGEgZnJvbSB0aGUgU0ZOVCAnR1BPUycgdGFibGUgKGFzIHByZXNlbnQgaW4gbWFueQotICAgKiAgICAgT3BlblR5cGUgZm9udHMpLgorICAgKiAgICAgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgdGhlIHZlY3RvciAoMCwwKS4gIE5vdGUgdGhhdCBGcmVlVHlwZQorICAgKiAgICAgZG9lc24ndCBoYW5kbGUga2VybmluZyBkYXRhIGZyb20gdGhlIFNGTlQgJ0dQT1MnIHRhYmxlIChhcyBwcmVzZW50CisgICAqICAgICBpbiBtYW55IE9wZW5UeXBlIGZvbnRzKS4KICAgICoKICAgICogICBGVF9GQUNFX0ZMQUdfRkFTVF9HTFlQSFMgOjoKICAgICogICAgIFRISVMgRkxBRyBJUyBERVBSRUNBVEVELiAgRE8gTk9UIFVTRSBPUiBURVNUIElULgpAQCAtMTIyOCw2ICsxMjM3LDE5IEBACiAgICAqICAgICBhbHRlcmVkIHdpdGggQEZUX1NldF9NTV9EZXNpZ25fQ29vcmRpbmF0ZXMsCiAgICAqICAgICBARlRfU2V0X1Zhcl9EZXNpZ25fQ29vcmRpbmF0ZXMsIG9yIEBGVF9TZXRfVmFyX0JsZW5kX0Nvb3JkaW5hdGVzLgogICAgKiAgICAgVGhpcyBmbGFnIGlzIHVuc2V0IGJ5IGEgY2FsbCB0byBARlRfU2V0X05hbWVkX0luc3RhbmNlLgorICAgKgorICAgKiAgIEZUX0ZBQ0VfRkxBR19TVkcgOjoKKyAgICogICAgIFtTaW5jZSAyLjEyXSBUaGUgZmFjZSBoYXMgYW4gJ1NWR34nIE9wZW5UeXBlIHRhYmxlLgorICAgKgorICAgKiAgIEZUX0ZBQ0VfRkxBR19TQklYIDo6CisgICAqICAgICBbU2luY2UgMi4xMl0gVGhlIGZhY2UgaGFzIGFuICdzYml4JyBPcGVuVHlwZSB0YWJsZSAqYW5kKiBvdXRsaW5lcy4KKyAgICogICAgIEZvciBzdWNoIGZvbnRzLCBARlRfRkFDRV9GTEFHX1NDQUxBQkxFIGlzIG5vdCBzZXQgYnkgZGVmYXVsdCB0bworICAgKiAgICAgcmV0YWluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisgICAqCisgICAqICAgRlRfRkFDRV9GTEFHX1NCSVhfT1ZFUkxBWSA6OgorICAgKiAgICAgW1NpbmNlIDIuMTJdIFRoZSBmYWNlIGhhcyBhbiAnc2JpeCcgT3BlblR5cGUgdGFibGUgd2hlcmUgb3V0bGluZXMKKyAgICogICAgIHNob3VsZCBiZSBkcmF3biBvbiB0b3Agb2YgYml0bWFwIHN0cmlrZXMuCisgICAqCiAgICAqLwogI2RlZmluZSBGVF9GQUNFX0ZMQUdfU0NBTEFCTEUgICAgICAgICAgKCAxTCA8PCAgMCApCiAjZGVmaW5lIEZUX0ZBQ0VfRkxBR19GSVhFRF9TSVpFUyAgICAgICAoIDFMIDw8ICAxICkKQEAgLTEyNDUsNiArMTI2Nyw5IEBACiAjZGVmaW5lIEZUX0ZBQ0VfRkxBR19UUklDS1kgICAgICAgICAgICAoIDFMIDw8IDEzICkKICNkZWZpbmUgRlRfRkFDRV9GTEFHX0NPTE9SICAgICAgICAgICAgICggMUwgPDwgMTQgKQogI2RlZmluZSBGVF9GQUNFX0ZMQUdfVkFSSUFUSU9OICAgICAgICAgKCAxTCA8PCAxNSApCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19TVkcgICAgICAgICAgICAgICAoIDFMIDw8IDE2ICkKKyNkZWZpbmUgRlRfRkFDRV9GTEFHX1NCSVggICAgICAgICAgICAgICggMUwgPDwgMTcgKQorI2RlZmluZSBGVF9GQUNFX0ZMQUdfU0JJWF9PVkVSTEFZICAgICAgKCAxTCA8PCAxOCApCiAKIAogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTE0ODcsNiArMTUxMiwxMjQgQEAKIAogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0hBU19TVkcKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdGhhdCByZXR1cm5zIHRydWUgd2hlbmV2ZXIgYSBmYWNlIG9iamVjdCBjb250YWlucyBhbiAnU1ZHficKKyAgICogICBPcGVuVHlwZSB0YWJsZS4KKyAgICoKKyAgICogQHNpbmNlOgorICAgKiAgIDIuMTIKKyAgICovCisjZGVmaW5lIEZUX0hBU19TVkcoIGZhY2UgKSBcCisgICAgICAgICAgKCAhISggKGZhY2UpLT5mYWNlX2ZsYWdzICYgRlRfRkFDRV9GTEFHX1NWRyApICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfSEFTX1NCSVgKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdGhhdCByZXR1cm5zIHRydWUgd2hlbmV2ZXIgYSBmYWNlIG9iamVjdCBjb250YWlucyBhbiAnc2JpeCcKKyAgICogICBPcGVuVHlwZSB0YWJsZSAqYW5kKiBvdXRsaW5lIGdseXBocy4KKyAgICoKKyAgICogICBDdXJyZW50bHksIEZyZWVUeXBlIG9ubHkgc3VwcG9ydHMgYml0bWFwIGdseXBocyBpbiBQTkcgZm9ybWF0IGZvciB0aGlzCisgICAqICAgdGFibGUgKGkuZS4sIEpQRUcgYW5kIFRJRkYgZm9ybWF0cyBhcmUgdW5zdXBwb3J0ZWQsIGFzIGFyZQorICAgKiAgIEFwcGxlLXNwZWNpZmljIGZvcm1hdHMgbm90IHBhcnQgb2YgdGhlIE9wZW5UeXBlIHNwZWNpZmljYXRpb24pLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgYSBmb250IHdpdGggYW4gJ3NiaXgnIHRhYmxlIGlzIHRyZWF0ZWQgYXMKKyAgICogICBhIGJpdG1hcC1vbmx5IGZhY2UuICBVc2luZyBARlRfT3Blbl9GYWNlIHdpdGgKKyAgICogICBARlRfUEFSQU1fVEFHX0lHTk9SRV9TQklYLCBhbiBhcHBsaWNhdGlvbiBjYW4gc3dpdGNoIG9mZiAnc2JpeCcKKyAgICogICBoYW5kbGluZyBzbyB0aGF0IHRoZSBmYWNlIGlzIHRyZWF0ZWQgYXMgYW4gb3JkaW5hcnkgb3V0bGluZSBmb250IHdpdGgKKyAgICogICBzY2FsYWJsZSBvdXRsaW5lcy4KKyAgICoKKyAgICogICBIZXJlIGlzIHNvbWUgcHNldWRvIGNvZGUgdGhhdCByb3VnaGx5IGlsbHVzdHJhdGVzIGhvdyB0byBpbXBsZW1lbnQKKyAgICogICAnc2JpeCcgaGFuZGxpbmcgYWNjb3JkaW5nIHRvIHRoZSBPcGVuVHlwZSBzcGVjaWZpY2F0aW9uLgorICAgKgorICAgKiBgYGAKKyAgICogICBpZiAoIEZUX0hBU19TQklYKCBmYWNlICkgKQorICAgKiAgIHsKKyAgICogICAgIC8vIG9wZW4gZm9udCBhcyBhIHNjYWxhYmxlIG9uZSB3aXRob3V0IHNiaXggaGFuZGxpbmcKKyAgICogICAgIEZUX0ZhY2UgICAgICAgZmFjZTI7CisgICAqICAgICBGVF9QYXJhbWV0ZXIgIHBhcmFtID0geyBGVF9QQVJBTV9UQUdfSUdOT1JFX1NCSVgsIE5VTEwgfTsKKyAgICogICAgIEZUX09wZW5fQXJncyAgYXJncyAgPSB7IEZUX09QRU5fUEFSQU1TIHwgLi4uLAorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uLAorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgJnBhcmFtIH07CisgICAqCisgICAqCisgICAqICAgICBGVF9PcGVuX0ZhY2UoIGxpYnJhcnksICZhcmdzLCAwLCAmZmFjZTIgKTsKKyAgICoKKyAgICogICAgIDxzb3J0IGBmYWNlLT5hdmFpbGFibGVfc2l6ZWAgYXMgbmVjZXNzYXJ5IGludG8KKyAgICogICAgICBgcHJlZmVycmVkX3NpemVzYFsqXT4KKyAgICoKKyAgICogICAgIGZvciAoIGkgPSAwOyBpIDwgZmFjZS0+bnVtX2ZpeGVkX3NpemVzOyBpKysgKQorICAgKiAgICAgeworICAgKiAgICAgICBzaXplID0gcHJlZmVycmVkX3NpemVzW2ldLnNpemU7CisgICAqCisgICAqICAgICAgIGVycm9yID0gRlRfU2V0X1BpeGVsX1NpemVzKCBmYWNlLCBzaXplLCBzaXplICk7CisgICAqICAgICAgIDxlcnJvciBoYW5kbGluZyBvbWl0dGVkPgorICAgKgorICAgKiAgICAgICAvLyBjaGVjayB3aGV0aGVyIHdlIGhhdmUgYSBnbHlwaCBpbiBhIGJpdG1hcCBzdHJpa2UKKyAgICogICAgICAgZXJyb3IgPSBGVF9Mb2FkX0dseXBoKCBmYWNlLAorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoX2luZGV4LAorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xPQURfU0JJVFNfT05MWSAgICAgICAgICB8CisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTE9BRF9CSVRNQVBfTUVUUklDU19PTkxZICk7CisgICAqICAgICAgIGlmICggZXJyb3IgPT0gRlRfRXJyX0ludmFsaWRfQXJndW1lbnQgKQorICAgKiAgICAgICAgIGNvbnRpbnVlOworICAgKiAgICAgICBlbHNlIGlmICggZXJyb3IgKQorICAgKiAgICAgICAgIDxvdGhlciBlcnJvciBoYW5kbGluZyBvbWl0dGVkPgorICAgKiAgICAgICBlbHNlCisgICAqICAgICAgICAgYnJlYWs7CisgICAqICAgICB9CisgICAqCisgICAqICAgICBpZiAoIGkgIT0gZmFjZS0+bnVtX2ZpeGVkX3NpemVzICkKKyAgICogICAgICAgPGxvYWQgZW1iZWRkZWQgYml0bWFwIHdpdGggYEZUX0xvYWRfR2x5cGhgLAorICAgKiAgICAgICAgc2NhbGUgaXQsIGRpc3BsYXkgaXQsIGV0Yy4+CisgICAqCisgICAqICAgICBpZiAoIGkgPT0gZmFjZS0+bnVtX2ZpeGVkX3NpemVzICB8fAorICAgKiAgICAgICAgICBGVF9IQVNfU0JJWF9PVkVSTEFZKCBmYWNlICkgKQorICAgKiAgICAgICA8dXNlIGBmYWNlMmAgdG8gbG9hZCBvdXRsaW5lIGdseXBoIHdpdGggYEZUX0xvYWRfR2x5cGhgLAorICAgKiAgICAgICAgc2NhbGUgaXQsIGRpc3BsYXkgaXQgb24gdG9wIG9mIHRoZSBiaXRtYXAsIGV0Yy4+CisgICAqICAgfQorICAgKiBgYGAKKyAgICoKKyAgICogWypdIEFzc3VtaW5nIGEgdGFyZ2V0IHZhbHVlIG9mIDQwMGRwaSBhbmQgYXZhaWxhYmxlIHN0cmlrZSBzaXplcyAxMDAsCisgICAqIDIwMCwgMzAwLCBhbmQgNDAwZHBpLCBhIHBvc3NpYmxlIG9yZGVyIG1pZ2h0IGJlIFs0MDAsIDIwMCwgMzAwLCAxMDBdOgorICAgKiBzY2FsaW5nIDIwMGRwaSB0byA0MDBkcGkgdXN1YWxseSBnaXZlcyBiZXR0ZXIgcmVzdWx0cyB0aGFuIHNjYWxpbmcKKyAgICogMzAwZHBpIHRvIDQwMGRwaTsgaXQgaXMgYWxzbyBtdWNoIGZhc3Rlci4gIEhvd2V2ZXIsIHNjYWxpbmcgMTAwZHBpIHRvCisgICAqIDQwMGRwaSBjYW4geWllbGQgYSB0b28gcGl4ZWxhdGVkIHJlc3VsdCwgdGh1cyB0aGUgcHJlZmVyZW5jZSBtaWdodCBiZQorICAgKiAzMDBkcGkgb3ZlciAxMDBkcGkuCisgICAqCisgICAqIEBzaW5jZToKKyAgICogICAyLjEyCisgICAqLworI2RlZmluZSBGVF9IQVNfU0JJWCggZmFjZSApIFwKKyAgICAgICAgICAoICEhKCAoZmFjZSktPmZhY2VfZmxhZ3MgJiBGVF9GQUNFX0ZMQUdfU0JJWCApICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfSEFTX1NCSVhfT1ZFUkxBWQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB0aGF0IHJldHVybnMgdHJ1ZSB3aGVuZXZlciBhIGZhY2Ugb2JqZWN0IGNvbnRhaW5zIGFuICdzYml4JworICAgKiAgIE9wZW5UeXBlIHRhYmxlIHdpdGggYml0fjEgaW4gaXRzIGBmbGFnc2AgZmllbGQgc2V0LCBpbnN0cnVjdGluZyB0aGUKKyAgICogICBhcHBsaWNhdGlvbiB0byBvdmVybGF5IHRoZSBiaXRtYXAgc3RyaWtlIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcKKyAgICogICBvdXRsaW5lIGdseXBoLiAgU2VlIEBGVF9IQVNfU0JJWCBmb3IgcHNldWRvIGNvZGUgaG93IHRvIHVzZSBpdC4KKyAgICoKKyAgICogQHNpbmNlOgorICAgKiAgIDIuMTIKKyAgICovCisjZGVmaW5lIEZUX0hBU19TQklYX09WRVJMQVkoIGZhY2UgKSBcCisgICAgICAgICAgKCAhISggKGZhY2UpLT5mYWNlX2ZsYWdzICYgRlRfRkFDRV9GTEFHX1NCSVhfT1ZFUkxBWSApICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgogICAgKiBAZW51bToKICAgICogICBGVF9TVFlMRV9GTEFHX1hYWAogICAgKgpAQCAtMTc0OSwxMyArMTg5MiwxMyBAQAogICAgKiAgICAgVGhlIGFkdmFuY2Ugd2lkdGggb2YgdGhlIHVuaGludGVkIGdseXBoLiAgSXRzIHZhbHVlIGlzIGV4cHJlc3NlZCBpbgogICAgKiAgICAgMTYuMTYgZnJhY3Rpb25hbCBwaXhlbHMsIHVubGVzcyBARlRfTE9BRF9MSU5FQVJfREVTSUdOIGlzIHNldCB3aGVuCiAgICAqICAgICBsb2FkaW5nIHRoZSBnbHlwaC4gIFRoaXMgZmllbGQgY2FuIGJlIGltcG9ydGFudCB0byBwZXJmb3JtIGNvcnJlY3QKLSAgICogICAgIFdZU0lXWUcgbGF5b3V0LiAgT25seSByZWxldmFudCBmb3Igb3V0bGluZSBnbHlwaHMuCisgICAqICAgICBXWVNJV1lHIGxheW91dC4gIE9ubHkgcmVsZXZhbnQgZm9yIHNjYWxhYmxlIGdseXBocy4KICAgICoKICAgICogICBsaW5lYXJWZXJ0QWR2YW5jZSA6OgogICAgKiAgICAgVGhlIGFkdmFuY2UgaGVpZ2h0IG9mIHRoZSB1bmhpbnRlZCBnbHlwaC4gIEl0cyB2YWx1ZSBpcyBleHByZXNzZWQgaW4KICAgICogICAgIDE2LjE2IGZyYWN0aW9uYWwgcGl4ZWxzLCB1bmxlc3MgQEZUX0xPQURfTElORUFSX0RFU0lHTiBpcyBzZXQgd2hlbgogICAgKiAgICAgbG9hZGluZyB0aGUgZ2x5cGguICBUaGlzIGZpZWxkIGNhbiBiZSBpbXBvcnRhbnQgdG8gcGVyZm9ybSBjb3JyZWN0Ci0gICAqICAgICBXWVNJV1lHIGxheW91dC4gIE9ubHkgcmVsZXZhbnQgZm9yIG91dGxpbmUgZ2x5cGhzLgorICAgKiAgICAgV1lTSVdZRyBsYXlvdXQuICBPbmx5IHJlbGV2YW50IGZvciBzY2FsYWJsZSBnbHlwaHMuCiAgICAqCiAgICAqICAgYWR2YW5jZSA6OgogICAgKiAgICAgVGhpcyBzaG9ydGhhbmQgaXMsIGRlcGVuZGluZyBvbiBARlRfTE9BRF9JR05PUkVfVFJBTlNGT1JNLCB0aGUKQEAgLTI0NTAsOCArMjU5Myw4IEBACiAgICAqICAgc3RyZWFtIGF0dGFjaG1lbnRzLgogICAgKi8KICAgRlRfRVhQT1JUKCBGVF9FcnJvciApCi0gIEZUX0F0dGFjaF9TdHJlYW0oIEZUX0ZhY2UgICAgICAgIGZhY2UsCi0gICAgICAgICAgICAgICAgICAgIEZUX09wZW5fQXJncyogIHBhcmFtZXRlcnMgKTsKKyAgRlRfQXR0YWNoX1N0cmVhbSggRlRfRmFjZSAgICAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfT3Blbl9BcmdzKiAgcGFyYW1ldGVycyApOwogCiAKICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0yNzAyLDggKzI4NDUsOCBAQAogICAgKiAgICdodHRwczovL3d3dy5mcmVldHlwZS5vcmcvZnJlZXR5cGUyL2RvY3MvZ2x5cGhzL2dseXBocy0yLmh0bWwnLgogICAgKgogICAgKiAgIENvbnRyYXJ5IHRvIEBGVF9TZXRfQ2hhcl9TaXplLCB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSBzcGVjaWFsIGNvZGUKLSAgICogICB0byBub3JtYWxpemUgemVyby12YWx1ZWQgd2lkdGhzLCBoZWlnaHRzLCBvciByZXNvbHV0aW9ucyAod2hpY2ggbGVhZAotICAgKiAgIHRvIGVycm9ycyBpbiBtb3N0IGNhc2VzKS4KKyAgICogICB0byBub3JtYWxpemUgemVyby12YWx1ZWQgd2lkdGhzLCBoZWlnaHRzLCBvciByZXNvbHV0aW9ucywgd2hpY2ggYXJlCisgICAqICAgdHJlYXRlZCBhcyBARlRfTE9BRF9OT19TQ0FMRS4KICAgICoKICAgICogICBEb24ndCB1c2UgdGhpcyBmdW5jdGlvbiBpZiB5b3UgYXJlIHVzaW5nIHRoZSBGcmVlVHlwZSBjYWNoZSBBUEkuCiAgICAqLwpAQCAtMjgxOSw3ICsyOTYyLDcgQEAKICAgICoKICAgICogICBsb2FkX2ZsYWdzIDo6CiAgICAqICAgICBBIGZsYWcgaW5kaWNhdGluZyB3aGF0IHRvIGxvYWQgZm9yIHRoaXMgZ2x5cGguICBUaGUgQEZUX0xPQURfWFhYCi0gICAqICAgICBjb25zdGFudHMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgZ2x5cGggbG9hZGluZyBwcm9jZXNzIChlLmcuLAorICAgKiAgICAgZmxhZ3MgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgZ2x5cGggbG9hZGluZyBwcm9jZXNzIChlLmcuLAogICAgKiAgICAgd2hldGhlciB0aGUgb3V0bGluZSBzaG91bGQgYmUgc2NhbGVkLCB3aGV0aGVyIHRvIGxvYWQgYml0bWFwcyBvcgogICAgKiAgICAgbm90LCB3aGV0aGVyIHRvIGhpbnQgdGhlIG91dGxpbmUsIGV0YykuCiAgICAqCkBAIC0yODI3LDggKzI5NzAsMTAgQEAKICAgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgogICAgKgogICAgKiBAbm90ZToKLSAgICogICBUaGUgbG9hZGVkIGdseXBoIG1heSBiZSB0cmFuc2Zvcm1lZC4gIFNlZSBARlRfU2V0X1RyYW5zZm9ybSBmb3IgdGhlCi0gICAqICAgZGV0YWlscy4KKyAgICogICBGb3IgcHJvcGVyIHNjYWxpbmcgYW5kIGhpbnRpbmcsIHRoZSBhY3RpdmUgQEZUX1NpemUgb2JqZWN0IG93bmVkIGJ5CisgICAqICAgdGhlIGZhY2UgaGFzIHRvIGJlIG1lYW5pbmdmdWxseSBpbml0aWFsaXplZCBieSBjYWxsaW5nCisgICAqICAgQEZUX1NldF9DaGFyX1NpemUgYmVmb3JlIHRoaXMgZnVuY3Rpb24sIGZvciBleGFtcGxlLiAgVGhlIGxvYWRlZAorICAgKiAgIGdseXBoIG1heSBiZSB0cmFuc2Zvcm1lZC4gIFNlZSBARlRfU2V0X1RyYW5zZm9ybSBmb3IgdGhlIGRldGFpbHMuCiAgICAqCiAgICAqICAgRm9yIHN1YnNldHRlZCBDSUQta2V5ZWQgZm9udHMsIGBGVF9FcnJfSW52YWxpZF9Bcmd1bWVudGAgaXMgcmV0dXJuZWQKICAgICogICBmb3IgaW52YWxpZCBDSUQgdmFsdWVzICh0aGlzIGlzLCBmb3IgQ0lEIHZhbHVlcyB0aGF0IGRvbid0IGhhdmUgYQpAQCAtMjkxOCw2ICszMDYzLDggQEAKICAgICoKICAgICogICBGVF9MT0FEX05PX1NDQUxFIDo6CiAgICAqICAgICBEb24ndCBzY2FsZSB0aGUgbG9hZGVkIG91dGxpbmUgZ2x5cGggYnV0IGtlZXAgaXQgaW4gZm9udCB1bml0cy4KKyAgICogICAgIFRoaXMgZmxhZyBpcyBhbHNvIGFzc3VtZWQgaWYgQEZUX1NpemUgb3duZWQgYnkgdGhlIGZhY2Ugd2FzIG5vdAorICAgKiAgICAgcHJvcGVybHkgaW5pdGlhbGl6ZWQuCiAgICAqCiAgICAqICAgICBUaGlzIGZsYWcgaW1wbGllcyBARlRfTE9BRF9OT19ISU5USU5HIGFuZCBARlRfTE9BRF9OT19CSVRNQVAsIGFuZAogICAgKiAgICAgdW5zZXRzIEBGVF9MT0FEX1JFTkRFUi4KQEAgLTI5MzAsNyArMzA3Nyw3IEBACiAgICAqCiAgICAqICAgRlRfTE9BRF9OT19ISU5USU5HIDo6CiAgICAqICAgICBEaXNhYmxlIGhpbnRpbmcuICBUaGlzIGdlbmVyYWxseSBnZW5lcmF0ZXMgJ2JsdXJyaWVyJyBiaXRtYXAgZ2x5cGhzCi0gICAqICAgICB3aGVuIHRoZSBnbHlwaCBhcmUgcmVuZGVyZWQgaW4gYW55IG9mIHRoZSBhbnRpLWFsaWFzZWQgbW9kZXMuICBTZWUKKyAgICogICAgIHdoZW4gdGhlIGdseXBocyBhcmUgcmVuZGVyZWQgaW4gYW55IG9mIHRoZSBhbnRpLWFsaWFzZWQgbW9kZXMuICBTZWUKICAgICogICAgIGFsc28gdGhlIG5vdGUgYmVsb3cuCiAgICAqCiAgICAqICAgICBUaGlzIGZsYWcgaXMgaW1wbGllZCBieSBARlRfTE9BRF9OT19TQ0FMRS4KQEAgLTI5NDgsNiArMzA5NSwxNSBAQAogICAgKgogICAgKiAgICAgQEZUX0xPQURfTk9fU0NBTEUgYWx3YXlzIHNldHMgdGhpcyBmbGFnLgogICAgKgorICAgKiAgIEZUX0xPQURfU0JJVFNfT05MWSA6OgorICAgKiAgICAgW1NpbmNlIDIuMTJdIFRoaXMgaXMgdGhlIG9wcG9zaXRlIG9mIEBGVF9MT0FEX05PX0JJVE1BUCwgbW9yZSBvcgorICAgKiAgICAgbGVzczogQEZUX0xvYWRfR2x5cGggcmV0dXJucyBgRlRfRXJyX0ludmFsaWRfQXJndW1lbnRgIGlmIHRoZSBmYWNlCisgICAqICAgICBjb250YWlucyBhIGJpdG1hcCBzdHJpa2UgZm9yIHRoZSBnaXZlbiBzaXplIChvciB0aGUgc3RyaWtlIHNlbGVjdGVkCisgICAqICAgICBieSBARlRfU2VsZWN0X1NpemUpIGJ1dCB0aGVyZSBpcyBubyBnbHlwaCBpbiB0aGUgc3RyaWtlLgorICAgKgorICAgKiAgICAgTm90ZSB0aGF0IHRoaXMgbG9hZCBmbGFnIHdhcyBwYXJ0IG9mIEZyZWVUeXBlIHNpbmNlIHZlcnNpb24gMi4wLjYKKyAgICogICAgIGJ1dCBwcmV2aW91c2x5IHRhZ2dlZCBhcyBpbnRlcm5hbC4KKyAgICoKICAgICogICBGVF9MT0FEX1ZFUlRJQ0FMX0xBWU9VVCA6OgogICAgKiAgICAgTG9hZCB0aGUgZ2x5cGggZm9yIHZlcnRpY2FsIHRleHQgbGF5b3V0LiAgSW4gcGFydGljdWxhciwgdGhlCiAgICAqICAgICBgYWR2YW5jZWAgdmFsdWUgaW4gdGhlIEBGVF9HbHlwaFNsb3RSZWMgc3RydWN0dXJlIGlzIHNldCB0byB0aGUKQEAgLTMwMDQsMjEgKzMxNjAsMzEgQEAKICAgICogICAgIERpc2FibGUgdGhlIGF1dG8taGludGVyLiAgU2VlIGFsc28gdGhlIG5vdGUgYmVsb3cuCiAgICAqCiAgICAqICAgRlRfTE9BRF9DT0xPUiA6OgotICAgKiAgICAgTG9hZCBjb2xvcmVkIGdseXBocy4gIFRoZXJlIGFyZSBzbGlnaHQgZGlmZmVyZW5jZXMgZGVwZW5kaW5nIG9uIHRoZQotICAgKiAgICAgZm9udCBmb3JtYXQuCisgICAqICAgICBMb2FkIGNvbG9yZWQgZ2x5cGhzLiAgRnJlZVR5cGUgc2VhcmNoZXMgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjsKKyAgICogICAgIHRoZXJlIGFyZSBzbGlnaHQgZGlmZmVyZW5jZXMgZGVwZW5kaW5nIG9uIHRoZSBmb250IGZvcm1hdC4KICAgICoKLSAgICogICAgIFtTaW5jZSAyLjVdIExvYWQgZW1iZWRkZWQgY29sb3IgYml0bWFwIGltYWdlcy4gIFRoZSByZXN1bHRpbmcgY29sb3IKLSAgICogICAgIGJpdG1hcHMsIGlmIGF2YWlsYWJsZSwgd2lsbCBoYXZlIHRoZSBARlRfUElYRUxfTU9ERV9CR1JBIGZvcm1hdCwKLSAgICogICAgIHdpdGggcHJlLW11bHRpcGxpZWQgY29sb3IgY2hhbm5lbHMuICBJZiB0aGUgZmxhZyBpcyBub3Qgc2V0IGFuZAotICAgKiAgICAgY29sb3IgYml0bWFwcyBhcmUgZm91bmQsIHRoZXkgYXJlIGNvbnZlcnRlZCB0byAyNTYtbGV2ZWwgZ3JheQotICAgKiAgICAgYml0bWFwcywgdXNpbmcgdGhlIEBGVF9QSVhFTF9NT0RFX0dSQVkgZm9ybWF0LgorICAgKiAgICAgW1NpbmNlIDIuNV0gTG9hZCBlbWJlZGRlZCBjb2xvciBiaXRtYXAgaW1hZ2VzIChwcm92aWRlZAorICAgKiAgICAgQEZUX0xPQURfTk9fQklUTUFQIGlzIG5vdCBzZXQpLiAgVGhlIHJlc3VsdGluZyBjb2xvciBiaXRtYXBzLCBpZgorICAgKiAgICAgYXZhaWxhYmxlLCBoYXZlIHRoZSBARlRfUElYRUxfTU9ERV9CR1JBIGZvcm1hdCwgd2l0aCBwcmUtbXVsdGlwbGllZAorICAgKiAgICAgY29sb3IgY2hhbm5lbHMuICBJZiB0aGUgZmxhZyBpcyBub3Qgc2V0IGFuZCBjb2xvciBiaXRtYXBzIGFyZSBmb3VuZCwKKyAgICogICAgIHRoZXkgYXJlIGNvbnZlcnRlZCB0byAyNTYtbGV2ZWwgZ3JheSBiaXRtYXBzLCB1c2luZyB0aGUKKyAgICogICAgIEBGVF9QSVhFTF9NT0RFX0dSQVkgZm9ybWF0LgogICAgKgotICAgKiAgICAgW1NpbmNlIDIuMTAsIGV4cGVyaW1lbnRhbF0gSWYgdGhlIGdseXBoIGluZGV4IGNvbnRhaW5zIGFuIGVudHJ5IGluCisgICAqICAgICBbU2luY2UgMi4xMl0gSWYgdGhlIGdseXBoIGluZGV4IG1hcHMgdG8gYW4gZW50cnkgaW4gdGhlIGZhY2UncworICAgKiAgICAgJ1NWR34nIHRhYmxlLCBsb2FkIHRoZSBhc3NvY2lhdGVkIFNWRyBkb2N1bWVudCBmcm9tIHRoaXMgdGFibGUgYW5kCisgICAqICAgICBzZXQgdGhlIGBmb3JtYXRgIGZpZWxkIG9mIEBGVF9HbHlwaFNsb3RSZWMgdG8gQEZUX0dMWVBIX0ZPUk1BVF9TVkcuCisgICAqICAgICBOb3RlIHRoYXQgRnJlZVR5cGUgaXRzZWxmIGNhbid0IHJlbmRlciBTVkcgZG9jdW1lbnRzOyBob3dldmVyLCB0aGUKKyAgICogICAgIGxpYnJhcnkgcHJvdmlkZXMgaG9va3MgdG8gc2VhbWxlc3NseSBpbnRlZ3JhdGUgYW4gZXh0ZXJuYWwgcmVuZGVyZXIuCisgICAqICAgICBTZWUgc2VjdGlvbnMgQG90X3N2Z19kcml2ZXIgYW5kIEBzdmdfZm9udHMgZm9yIG1vcmUuCisgICAqCisgICAqICAgICBbU2luY2UgMi4xMCwgZXhwZXJpbWVudGFsXSBJZiB0aGUgZ2x5cGggaW5kZXggbWFwcyB0byBhbiBlbnRyeSBpbgogICAgKiAgICAgdGhlIGZhY2UncyAnQ09MUicgdGFibGUgd2l0aCBhICdDUEFMJyBwYWxldHRlIHRhYmxlIChhcyBkZWZpbmVkIGluCiAgICAqICAgICB0aGUgT3BlblR5cGUgc3BlY2lmaWNhdGlvbiksIG1ha2UgQEZUX1JlbmRlcl9HbHlwaCBwcm92aWRlIGEgZGVmYXVsdAogICAgKiAgICAgYmxlbmRpbmcgb2YgdGhlIGNvbG9yIGdseXBoIGxheWVycyBhc3NvY2lhdGVkIHdpdGggdGhlIGdseXBoIGluZGV4LAogICAgKiAgICAgdXNpbmcgdGhlIHNhbWUgYml0bWFwIGZvcm1hdCBhcyBlbWJlZGRlZCBjb2xvciBiaXRtYXAgaW1hZ2VzLiAgVGhpcwotICAgKiAgICAgaXMgbWFpbmx5IGZvciBjb252ZW5pZW5jZTsgZm9yIGZ1bGwgY29udHJvbCBvZiBjb2xvciBsYXllcnMgdXNlCisgICAqICAgICBpcyBtYWlubHkgZm9yIGNvbnZlbmllbmNlIGFuZCB3b3JrcyBvbmx5IGZvciBnbHlwaHMgaW4gJ0NPTFInIHYwCisgICAqICAgICB0YWJsZXMgKG9yIGdseXBocyBpbiAnQ09MUicgdjEgdGFibGVzIHRoYXQgZXhjbHVzaXZlbHkgdXNlIHYwCisgICAqICAgICBmZWF0dXJlcykuICBGb3IgZnVsbCBjb250cm9sIG9mIGNvbG9yIGxheWVycyB1c2UKICAgICogICAgIEBGVF9HZXRfQ29sb3JfR2x5cGhfTGF5ZXIgYW5kIEZyZWVUeXBlJ3MgY29sb3IgZnVuY3Rpb25zIGxpa2UKICAgICogICAgIEBGVF9QYWxldHRlX1NlbGVjdCBpbnN0ZWFkIG9mIHNldHRpbmcgQEZUX0xPQURfQ09MT1IgZm9yIHJlbmRlcmluZwogICAgKiAgICAgc28gdGhhdCB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIGNhbiBoYW5kbGUgYmxlbmRpbmcgYnkgaXRzZWxmLgpAQCAtMzA2OSwxOSArMzIzNSwyMCBAQAogICAgKgogICAgKi8KICNkZWZpbmUgRlRfTE9BRF9ERUZBVUxUICAgICAgICAgICAgICAgICAgICAgIDB4MAotI2RlZmluZSBGVF9MT0FEX05PX1NDQUxFICAgICAgICAgICAgICAgICAgICAgKCAxTCA8PCAwICkKLSNkZWZpbmUgRlRfTE9BRF9OT19ISU5USU5HICAgICAgICAgICAgICAgICAgICggMUwgPDwgMSApCi0jZGVmaW5lIEZUX0xPQURfUkVOREVSICAgICAgICAgICAgICAgICAgICAgICAoIDFMIDw8IDIgKQotI2RlZmluZSBGVF9MT0FEX05PX0JJVE1BUCAgICAgICAgICAgICAgICAgICAgKCAxTCA8PCAzICkKLSNkZWZpbmUgRlRfTE9BRF9WRVJUSUNBTF9MQVlPVVQgICAgICAgICAgICAgICggMUwgPDwgNCApCi0jZGVmaW5lIEZUX0xPQURfRk9SQ0VfQVVUT0hJTlQgICAgICAgICAgICAgICAoIDFMIDw8IDUgKQotI2RlZmluZSBGVF9MT0FEX0NST1BfQklUTUFQICAgICAgICAgICAgICAgICAgKCAxTCA8PCA2ICkKLSNkZWZpbmUgRlRfTE9BRF9QRURBTlRJQyAgICAgICAgICAgICAgICAgICAgICggMUwgPDwgNyApCi0jZGVmaW5lIEZUX0xPQURfSUdOT1JFX0dMT0JBTF9BRFZBTkNFX1dJRFRIICAoIDFMIDw8IDkgKQorI2RlZmluZSBGVF9MT0FEX05PX1NDQUxFICAgICAgICAgICAgICAgICAgICAgKCAxTCA8PCAwICApCisjZGVmaW5lIEZUX0xPQURfTk9fSElOVElORyAgICAgICAgICAgICAgICAgICAoIDFMIDw8IDEgICkKKyNkZWZpbmUgRlRfTE9BRF9SRU5ERVIgICAgICAgICAgICAgICAgICAgICAgICggMUwgPDwgMiAgKQorI2RlZmluZSBGVF9MT0FEX05PX0JJVE1BUCAgICAgICAgICAgICAgICAgICAgKCAxTCA8PCAzICApCisjZGVmaW5lIEZUX0xPQURfVkVSVElDQUxfTEFZT1VUICAgICAgICAgICAgICAoIDFMIDw8IDQgICkKKyNkZWZpbmUgRlRfTE9BRF9GT1JDRV9BVVRPSElOVCAgICAgICAgICAgICAgICggMUwgPDwgNSAgKQorI2RlZmluZSBGVF9MT0FEX0NST1BfQklUTUFQICAgICAgICAgICAgICAgICAgKCAxTCA8PCA2ICApCisjZGVmaW5lIEZUX0xPQURfUEVEQU5USUMgICAgICAgICAgICAgICAgICAgICAoIDFMIDw8IDcgICkKKyNkZWZpbmUgRlRfTE9BRF9JR05PUkVfR0xPQkFMX0FEVkFOQ0VfV0lEVEggICggMUwgPDwgOSAgKQogI2RlZmluZSBGVF9MT0FEX05PX1JFQ1VSU0UgICAgICAgICAgICAgICAgICAgKCAxTCA8PCAxMCApCiAjZGVmaW5lIEZUX0xPQURfSUdOT1JFX1RSQU5TRk9STSAgICAgICAgICAgICAoIDFMIDw8IDExICkKICNkZWZpbmUgRlRfTE9BRF9NT05PQ0hST01FICAgICAgICAgICAgICAgICAgICggMUwgPDwgMTIgKQogI2RlZmluZSBGVF9MT0FEX0xJTkVBUl9ERVNJR04gICAgICAgICAgICAgICAgKCAxTCA8PCAxMyApCisjZGVmaW5lIEZUX0xPQURfU0JJVFNfT05MWSAgICAgICAgICAgICAgICAgICAoIDFMIDw8IDE0ICkKICNkZWZpbmUgRlRfTE9BRF9OT19BVVRPSElOVCAgICAgICAgICAgICAgICAgICggMUwgPDwgMTUgKQogICAvKiBCaXRzIDE2LTE5IGFyZSB1c2VkIGJ5IGBGVF9MT0FEX1RBUkdFVF9gICovCiAjZGVmaW5lIEZUX0xPQURfQ09MT1IgICAgICAgICAgICAgICAgICAgICAgICAoIDFMIDw8IDIwICkKQEAgLTMwOTEsOCArMzI1OCw4IEBACiAgIC8qICovCiAKICAgLyogdXNlZCBpbnRlcm5hbGx5IG9ubHkgYnkgY2VydGFpbiBmb250IGRyaXZlcnMgKi8KLSNkZWZpbmUgRlRfTE9BRF9BRFZBTkNFX09OTFkgICAgICAgICAgICAgICAgICggMUwgPDwgOCApCi0jZGVmaW5lIEZUX0xPQURfU0JJVFNfT05MWSAgICAgICAgICAgICAgICAgICAoIDFMIDw8IDE0ICkKKyNkZWZpbmUgRlRfTE9BRF9BRFZBTkNFX09OTFkgICAgICAgICAgICAgICAgICggMUwgPDwgOCAgKQorI2RlZmluZSBGVF9MT0FEX1NWR19PTkxZICAgICAgICAgICAgICAgICAgICAgKCAxTCA8PCAyMyApCiAKIAogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTMyNjcsNyArMzQzNCw3IEBACiAgICAqICAgICBhcmUgbm90IGludGVyZXN0ZWQgaW4gdGhlIHZhbHVlLgogICAgKgogICAgKiAgIGRlbHRhIDo6Ci0gICAqICAgICBBIHBvaW50ZXIgYSB0cmFuc2xhdGlvbiB2ZWN0b3IuICBTZXQgdGhpcyB0byBOVUxMIGlmIHlvdSBhcmUgbm90CisgICAqICAgICBBIHBvaW50ZXIgdG8gYSB0cmFuc2xhdGlvbiB2ZWN0b3IuICBTZXQgdGhpcyB0byBOVUxMIGlmIHlvdSBhcmUgbm90CiAgICAqICAgICBpbnRlcmVzdGVkIGluIHRoZSB2YWx1ZS4KICAgICoKICAgICogQHNpbmNlOgpAQCAtMzM3MCw2ICszNTM3LDQ1IEBACiAgICAqICAgfQogICAgKgogICAgKiAgIGBgYAorICAgKgorICAgKiAgIEZyZWVUeXBlIGhhcyB0d28gcmFzdGVyaXplcnMgZm9yIGdlbmVyYXRpbmcgU0RGLCBuYW1lbHk6CisgICAqCisgICAqICAgMS4gYHNkZmAgZm9yIGdlbmVyYXRpbmcgU0RGIGRpcmVjdGx5IGZyb20gZ2x5cGgncyBvdXRsaW5lLCBhbmQKKyAgICoKKyAgICogICAyLiBgYnNkZmAgZm9yIGdlbmVyYXRpbmcgU0RGIGZyb20gcmFzdGVyaXplZCBiaXRtYXBzLgorICAgKgorICAgKiAgIERlcGVuZGluZyBvbiB0aGUgZ2x5cGggdHlwZSAoaS5lLiwgb3V0bGluZSBvciBiaXRtYXApLCBvbmUgb2YgdGhlIHR3bworICAgKiAgIHJhc3Rlcml6ZXJzIGlzIGNob3NlbiBhdCBydW50aW1lIGFuZCB1c2VkIGZvciBnZW5lcmF0aW5nIFNERnMuICBUbworICAgKiAgIGZvcmNlIHRoZSB1c2Ugb2YgYGJzZGZgIHlvdSBzaG91bGQgcmVuZGVyIHRoZSBnbHlwaCB3aXRoIGFueSBvZiB0aGUKKyAgICogICBGcmVlVHlwZSdzIG90aGVyIHJlbmRlcmluZyBtb2RlcyAoZS5nLiwgYEZUX1JFTkRFUl9NT0RFX05PUk1BTGApIGFuZAorICAgKiAgIHRoZW4gcmUtcmVuZGVyIHdpdGggYEZUX1JFTkRFUl9NT0RFX1NERmAuCisgICAqCisgICAqICAgVGhlcmUgYXJlIHNvbWUgaXNzdWVzIHdpdGggc3RhYmlsaXR5IGFuZCBwb3NzaWJsZSBmYWlsdXJlcyBvZiB0aGUgU0RGCisgICAqICAgcmVuZGVyZXJzIChzcGVjaWZpY2FsbHkgYHNkZmApLgorICAgKgorICAgKiAgIDEuIFRoZSBgc2RmYCByYXN0ZXJpemVyIGlzIHNlbnNpdGl2ZSB0byByZWFsbHkgc21hbGwgZmVhdHVyZXMgKGUuZy4sCisgICAqICAgICAgc2hhcnAgdHVybnMgdGhhdCBhcmUgbGVzcyB0aGFuIDF+cGl4ZWwpIGFuZCBpbXBlcmZlY3Rpb25zIGluIHRoZQorICAgKiAgICAgIGdseXBoJ3Mgb3V0bGluZSwgY2F1c2luZyBhcnRpZmFjdHMgaW4gdGhlIGZpbmFsIG91dHB1dC4KKyAgICoKKyAgICogICAyLiBUaGUgYHNkZmAgcmFzdGVyaXplciBoYXMgbGltaXRlZCBzdXBwb3J0IGZvciBoYW5kbGluZyBpbnRlcnNlY3RpbmcKKyAgICogICAgICBjb250b3VycyBhbmQgKmNhbm5vdCogaGFuZGxlIHNlbGYtaW50ZXJzZWN0aW5nIGNvbnRvdXJzIHdoYXRzb2V2ZXIuCisgICAqICAgICAgU2VsZi1pbnRlcnNlY3Rpb24gaGFwcGVucyB3aGVuIGEgc2luZ2xlIGNvbm5lY3RlZCBjb250b3VyCisgICAqICAgICAgaW50ZXJzZWN0cyBpdHNlbGYgYXQgc29tZSBwb2ludDsgaGF2aW5nIHRoZXNlIGluIHlvdXIgZm9udAorICAgKiAgICAgIGRlZmluaXRlbHkgcG9zZXMgYSBwcm9ibGVtIHRvIHRoZSByYXN0ZXJpemVyIGFuZCBjYXVzZSBhcnRpZmFjdHMsCisgICAqICAgICAgdG9vLgorICAgKgorICAgKiAgIDMuIEdlbmVyYXRpbmcgU0RGIGZvciByZWFsbHkgc21hbGwgZ2x5cGhzIG1heSByZXN1bHQgaW4gdW5kZXNpcmFibGUKKyAgICogICAgICBvdXRwdXQ7IHRoZSBwaXhlbCBncmlkICh3aGljaCBzdG9yZXMgZGlzdGFuY2UgaW5mb3JtYXRpb24pIGJlY29tZXMKKyAgICogICAgICB0b28gY29hcnNlLgorICAgKgorICAgKiAgIDQuIFNpbmNlIHRoZSBvdXRwdXQgYnVmZmVyIGlzIG5vcm1hbGl6ZWQsIHByZWNpc2lvbiBhdCBzbWFsbGVyIHNwcmVhZHMKKyAgICogICAgICBpcyBncmVhdGVyIHRoYW4gcHJlY2lzaW9uIGF0IGxhcmdlciBzcHJlYWQgdmFsdWVzIGJlY2F1c2UgdGhlCisgICAqICAgICAgb3V0cHV0IHJhbmdlIG9mIFswLi4yNTVdIGdldHMgbWFwcGVkIHRvIGEgc21hbGxlciBTREYgcmFuZ2UuICBBCisgICAqICAgICAgc3ByZWFkIG9mfjIgc2hvdWxkIGJlIHN1ZmZpY2llbnQgaW4gbW9zdCBjYXNlcy4KKyAgICoKKyAgICogICBQb2ludHMgKDEpIGFuZCAoMikgY2FuIGJlIGF2b2lkZWQgYnkgdXNpbmcgdGhlIGBic2RmYCByYXN0ZXJpemVyLAorICAgKiAgIHdoaWNoIGlzIG1vcmUgc3RhYmxlIHRoYW4gdGhlIGBzZGZgIHJhc3Rlcml6ZXIgaW4gZ2VuZXJhbC4KKyAgICoKICAgICovCiAgIHR5cGVkZWYgZW51bSAgRlRfUmVuZGVyX01vZGVfCiAgIHsKQEAgLTM0MTAsNyArMzYxNiw3IEBACiAgICAqICAgICBARlRfUmVuZGVyX01vZGUgZm9yIGEgbGlzdCBvZiBwb3NzaWJsZSB2YWx1ZXMuCiAgICAqCiAgICAqICAgICBJZiBARlRfUkVOREVSX01PREVfTk9STUFMIGlzIHVzZWQsIGEgcHJldmlvdXMgY2FsbCBvZiBARlRfTG9hZF9HbHlwaAotICAgKiAgICAgd2l0aCBmbGFnIEBGVF9MT0FEX0NPTE9SIG1ha2VzIEZUX1JlbmRlcl9HbHlwaCBwcm92aWRlIGEgZGVmYXVsdAorICAgKiAgICAgd2l0aCBmbGFnIEBGVF9MT0FEX0NPTE9SIG1ha2VzIGBGVF9SZW5kZXJfR2x5cGhgIHByb3ZpZGUgYSBkZWZhdWx0CiAgICAqICAgICBibGVuZGluZyBvZiBjb2xvcmVkIGdseXBoIGxheWVycyBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgZ2x5cGgKICAgICogICAgIHNsb3QgKHByb3ZpZGVkIHRoZSBmb250IGNvbnRhaW5zIHN1Y2ggbGF5ZXJzKSBpbnN0ZWFkIG9mIHJlbmRlcmluZwogICAgKiAgICAgdGhlIGdseXBoIHNsb3QncyBvdXRsaW5lLiAgVGhpcyBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZTsgc2VlCkBAIC0zNDIwLDkgKzM2MjYsNiBAQAogICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCiAgICAqCiAgICAqIEBub3RlOgotICAgKiAgIFRvIGdldCBtZWFuaW5nZnVsIHJlc3VsdHMsIGZvbnQgc2NhbGluZyB2YWx1ZXMgbXVzdCBiZSBzZXQgd2l0aAotICAgKiAgIGZ1bmN0aW9ucyBsaWtlIEBGVF9TZXRfQ2hhcl9TaXplIGJlZm9yZSBjYWxsaW5nIGBGVF9SZW5kZXJfR2x5cGhgLgotICAgKgogICAgKiAgIFdoZW4gRnJlZVR5cGUgb3V0cHV0cyBhIGJpdG1hcCBvZiBhIGdseXBoLCBpdCByZWFsbHkgb3V0cHV0cyBhbiBhbHBoYQogICAgKiAgIGNvdmVyYWdlIG1hcC4gIElmIGEgcGl4ZWwgaXMgY29tcGxldGVseSBjb3ZlcmVkIGJ5IGEgZmlsbGVkLWluCiAgICAqICAgb3V0bGluZSwgdGhlIGJpdG1hcCBjb250YWlucyAweEZGIGF0IHRoYXQgcGl4ZWwsIG1lYW5pbmcgdGhhdApAQCAtMzY0MSw4OSArMzg0NCw2IEBACiAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgKgogICAgKiBAZnVuY3Rpb246Ci0gICAqICAgRlRfR2V0X0dseXBoX05hbWUKLSAgICoKLSAgICogQGRlc2NyaXB0aW9uOgotICAgKiAgIFJldHJpZXZlIHRoZSBBU0NJSSBuYW1lIG9mIGEgZ2l2ZW4gZ2x5cGggaW4gYSBmYWNlLiAgVGhpcyBvbmx5IHdvcmtzCi0gICAqICAgZm9yIHRob3NlIGZhY2VzIHdoZXJlIEBGVF9IQVNfR0xZUEhfTkFNRVMoZmFjZSkgcmV0dXJuc34xLgotICAgKgotICAgKiBAaW5wdXQ6Ci0gICAqICAgZmFjZSA6OgotICAgKiAgICAgQSBoYW5kbGUgdG8gYSBzb3VyY2UgZmFjZSBvYmplY3QuCi0gICAqCi0gICAqICAgZ2x5cGhfaW5kZXggOjoKLSAgICogICAgIFRoZSBnbHlwaCBpbmRleC4KLSAgICoKLSAgICogICBidWZmZXJfbWF4IDo6Ci0gICAqICAgICBUaGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlIGluIHRoZSBidWZmZXIuCi0gICAqCi0gICAqIEBvdXRwdXQ6Ci0gICAqICAgYnVmZmVyIDo6Ci0gICAqICAgICBBIHBvaW50ZXIgdG8gYSB0YXJnZXQgYnVmZmVyIHdoZXJlIHRoZSBuYW1lIGlzIGNvcGllZCB0by4KLSAgICoKLSAgICogQHJldHVybjoKLSAgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgotICAgKgotICAgKiBAbm90ZToKLSAgICogICBBbiBlcnJvciBpcyByZXR1cm5lZCBpZiB0aGUgZmFjZSBkb2Vzbid0IHByb3ZpZGUgZ2x5cGggbmFtZXMgb3IgaWYgdGhlCi0gICAqICAgZ2x5cGggaW5kZXggaXMgaW52YWxpZC4gIEluIGFsbCBjYXNlcyBvZiBmYWlsdXJlLCB0aGUgZmlyc3QgYnl0ZSBvZgotICAgKiAgIGBidWZmZXJgIGlzIHNldCB0b34wIHRvIGluZGljYXRlIGFuIGVtcHR5IG5hbWUuCi0gICAqCi0gICAqICAgVGhlIGdseXBoIG5hbWUgaXMgdHJ1bmNhdGVkIHRvIGZpdCB3aXRoaW4gdGhlIGJ1ZmZlciBpZiBpdCBpcyB0b28KLSAgICogICBsb25nLiAgVGhlIHJldHVybmVkIHN0cmluZyBpcyBhbHdheXMgemVyby10ZXJtaW5hdGVkLgotICAgKgotICAgKiAgIEJlIGF3YXJlIHRoYXQgRnJlZVR5cGUgcmVvcmRlcnMgZ2x5cGggaW5kaWNlcyBpbnRlcm5hbGx5IHNvIHRoYXQgZ2x5cGgKLSAgICogICBpbmRleH4wIGFsd2F5cyBjb3JyZXNwb25kcyB0byB0aGUgJ21pc3NpbmcgZ2x5cGgnIChjYWxsZWQgJy5ub3RkZWYnKS4KLSAgICoKLSAgICogICBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBjb25maWcgbWFjcm8KLSAgICogICBgRlRfQ09ORklHX09QVElPTl9OT19HTFlQSF9OQU1FU2AgaXMgbm90IGRlZmluZWQgaW4gYGZ0b3B0aW9uLmhgLgotICAgKi8KLSAgRlRfRVhQT1JUKCBGVF9FcnJvciApCi0gIEZUX0dldF9HbHlwaF9OYW1lKCBGVF9GYWNlICAgICBmYWNlLAotICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgZ2x5cGhfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICBGVF9Qb2ludGVyICBidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBidWZmZXJfbWF4ICk7Ci0KLQotICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgICoKLSAgICogQGZ1bmN0aW9uOgotICAgKiAgIEZUX0dldF9Qb3N0c2NyaXB0X05hbWUKLSAgICoKLSAgICogQGRlc2NyaXB0aW9uOgotICAgKiAgIFJldHJpZXZlIHRoZSBBU0NJSSBQb3N0U2NyaXB0IG5hbWUgb2YgYSBnaXZlbiBmYWNlLCBpZiBhdmFpbGFibGUuCi0gICAqICAgVGhpcyBvbmx5IHdvcmtzIHdpdGggUG9zdFNjcmlwdCwgVHJ1ZVR5cGUsIGFuZCBPcGVuVHlwZSBmb250cy4KLSAgICoKLSAgICogQGlucHV0OgotICAgKiAgIGZhY2UgOjoKLSAgICogICAgIEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZSBvYmplY3QuCi0gICAqCi0gICAqIEByZXR1cm46Ci0gICAqICAgQSBwb2ludGVyIHRvIHRoZSBmYWNlJ3MgUG9zdFNjcmlwdCBuYW1lLiAgYE5VTExgIGlmIHVuYXZhaWxhYmxlLgotICAgKgotICAgKiBAbm90ZToKLSAgICogICBUaGUgcmV0dXJuZWQgcG9pbnRlciBpcyBvd25lZCBieSB0aGUgZmFjZSBhbmQgaXMgZGVzdHJveWVkIHdpdGggaXQuCi0gICAqCi0gICAqICAgRm9yIHZhcmlhdGlvbiBmb250cywgdGhpcyBzdHJpbmcgY2hhbmdlcyBpZiB5b3Ugc2VsZWN0IGEgZGlmZmVyZW50Ci0gICAqICAgaW5zdGFuY2UsIGFuZCB5b3UgaGF2ZSB0byBjYWxsIGBGVF9HZXRfUG9zdFNjcmlwdF9OYW1lYCBhZ2FpbiB0bwotICAgKiAgIHJldHJpZXZlIGl0LiAgRnJlZVR5cGUgZm9sbG93cyBBZG9iZSBUZWNoTm90ZSAjNTkwMiwgJ0dlbmVyYXRpbmcKLSAgICogICBQb3N0U2NyaXB0IE5hbWVzIGZvciBGb250cyBVc2luZyBPcGVuVHlwZSBGb250IFZhcmlhdGlvbnMnLgotICAgKgotICAgKiAgICAgaHR0cHM6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvZGV2ZWxvcGVyL29wZW50eXBlL3RlY2gtbm90ZXMvNTkwMi5BZG9iZVBTTmFtZUdlbmVyYXRpb24uaHRtbAotICAgKgotICAgKiAgIFtTaW5jZSAyLjldIFNwZWNpYWwgUG9zdFNjcmlwdCBuYW1lcyBmb3IgbmFtZWQgaW5zdGFuY2VzIGFyZSBvbmx5Ci0gICAqICAgcmV0dXJuZWQgaWYgdGhlIG5hbWVkIGluc3RhbmNlIGlzIHNldCB3aXRoIEBGVF9TZXRfTmFtZWRfSW5zdGFuY2UgKGFuZAotICAgKiAgIHRoZSBmb250IGhhcyBjb3JyZXNwb25kaW5nIGVudHJpZXMgaW4gaXRzICdmdmFyJyB0YWJsZSkuICBJZgotICAgKiAgIEBGVF9JU19WQVJJQVRJT04gcmV0dXJucyB0cnVlLCB0aGUgYWxnb3JpdGhtaWNhbGx5IGRlcml2ZWQgUG9zdFNjcmlwdAotICAgKiAgIG5hbWUgaXMgcHJvdmlkZWQsIG5vdCBsb29raW5nIHVwIHNwZWNpYWwgZW50cmllcyBmb3IgbmFtZWQgaW5zdGFuY2VzLgotICAgKi8KLSAgRlRfRVhQT1JUKCBjb25zdCBjaGFyKiApCi0gIEZUX0dldF9Qb3N0c2NyaXB0X05hbWUoIEZUX0ZhY2UgIGZhY2UgKTsKLQotCi0gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAgKgotICAgKiBAZnVuY3Rpb246CiAgICAqICAgRlRfU2VsZWN0X0NoYXJtYXAKICAgICoKICAgICogQGRlc2NyaXB0aW9uOgpAQCAtNDA0MSw3ICs0MTYxLDggQEAKICAgICogICBGVF9HZXRfTmFtZV9JbmRleAogICAgKgogICAgKiBAZGVzY3JpcHRpb246Ci0gICAqICAgUmV0dXJuIHRoZSBnbHlwaCBpbmRleCBvZiBhIGdpdmVuIGdseXBoIG5hbWUuCisgICAqICAgUmV0dXJuIHRoZSBnbHlwaCBpbmRleCBvZiBhIGdpdmVuIGdseXBoIG5hbWUuICBUaGlzIG9ubHkgd29ya3MKKyAgICogICBmb3IgdGhvc2UgZmFjZXMgd2hlcmUgQEZUX0hBU19HTFlQSF9OQU1FUyByZXR1cm5zIHRydWUuCiAgICAqCiAgICAqIEBpbnB1dDoKICAgICogICBmYWNlIDo6CkBAIC00MDUyLDYgKzQxNzMsMTYgQEAKICAgICoKICAgICogQHJldHVybjoKICAgICogICBUaGUgZ2x5cGggaW5kZXguICAwfm1lYW5zICd1bmRlZmluZWQgY2hhcmFjdGVyIGNvZGUnLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBBY2NlcHRhYmxlIGdseXBoIG5hbWVzIG1pZ2h0IGNvbWUgZnJvbSB0aGUgW0Fkb2JlIEdseXBoCisgICAqICAgTGlzdF0oaHR0cHM6Ly9naXRodWIuY29tL2Fkb2JlLXR5cGUtdG9vbHMvYWdsLWFnbGZuKS4gIFNlZQorICAgKiAgIEBGVF9HZXRfR2x5cGhfTmFtZSBmb3IgdGhlIGludmVyc2UgZnVuY3Rpb25hbGl0eS4KKyAgICoKKyAgICogICBUaGlzIGZ1bmN0aW9uIGhhcyBsaW1pdGVkIGNhcGFiaWxpdGllcyBpZiB0aGUgY29uZmlnIG1hY3JvCisgICAqICAgYEZUX0NPTkZJR19PUFRJT05fUE9TVFNDUklQVF9OQU1FU2AgaXMgbm90IGRlZmluZWQgaW4gYGZ0b3B0aW9uLmhgOgorICAgKiAgIEl0IHRoZW4gd29ya3Mgb25seSBmb3IgZm9udHMgdGhhdCBhY3R1YWxseSBlbWJlZCBnbHlwaCBuYW1lcyAod2hpY2gKKyAgICogICBtYW55IHJlY2VudCBPcGVuVHlwZSBmb250cyBkbyBub3QpLgogICAgKi8KICAgRlRfRVhQT1JUKCBGVF9VSW50ICkKICAgRlRfR2V0X05hbWVfSW5kZXgoIEZUX0ZhY2UgICAgICAgICAgIGZhY2UsCkBAIC00MDYwLDYgKzQxOTEsOTEgQEAKIAogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX0dldF9HbHlwaF9OYW1lCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBSZXRyaWV2ZSB0aGUgQVNDSUkgbmFtZSBvZiBhIGdpdmVuIGdseXBoIGluIGEgZmFjZS4gIFRoaXMgb25seSB3b3JrcworICAgKiAgIGZvciB0aG9zZSBmYWNlcyB3aGVyZSBARlRfSEFTX0dMWVBIX05BTUVTIHJldHVybnMgdHJ1ZS4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGZhY2UgOjoKKyAgICogICAgIEEgaGFuZGxlIHRvIGEgc291cmNlIGZhY2Ugb2JqZWN0LgorICAgKgorICAgKiAgIGdseXBoX2luZGV4IDo6CisgICAqICAgICBUaGUgZ2x5cGggaW5kZXguCisgICAqCisgICAqICAgYnVmZmVyX21heCA6OgorICAgKiAgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBpbiB0aGUgYnVmZmVyLgorICAgKgorICAgKiBAb3V0cHV0OgorICAgKiAgIGJ1ZmZlciA6OgorICAgKiAgICAgQSBwb2ludGVyIHRvIGEgdGFyZ2V0IGJ1ZmZlciB3aGVyZSB0aGUgbmFtZSBpcyBjb3BpZWQgdG8uCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgQW4gZXJyb3IgaXMgcmV0dXJuZWQgaWYgdGhlIGZhY2UgZG9lc24ndCBwcm92aWRlIGdseXBoIG5hbWVzIG9yIGlmIHRoZQorICAgKiAgIGdseXBoIGluZGV4IGlzIGludmFsaWQuICBJbiBhbGwgY2FzZXMgb2YgZmFpbHVyZSwgdGhlIGZpcnN0IGJ5dGUgb2YKKyAgICogICBgYnVmZmVyYCBpcyBzZXQgdG9+MCB0byBpbmRpY2F0ZSBhbiBlbXB0eSBuYW1lLgorICAgKgorICAgKiAgIFRoZSBnbHlwaCBuYW1lIGlzIHRydW5jYXRlZCB0byBmaXQgd2l0aGluIHRoZSBidWZmZXIgaWYgaXQgaXMgdG9vCisgICAqICAgbG9uZy4gIFRoZSByZXR1cm5lZCBzdHJpbmcgaXMgYWx3YXlzIHplcm8tdGVybWluYXRlZC4KKyAgICoKKyAgICogICBCZSBhd2FyZSB0aGF0IEZyZWVUeXBlIHJlb3JkZXJzIGdseXBoIGluZGljZXMgaW50ZXJuYWxseSBzbyB0aGF0IGdseXBoCisgICAqICAgaW5kZXh+MCBhbHdheXMgY29ycmVzcG9uZHMgdG8gdGhlICdtaXNzaW5nIGdseXBoJyAoY2FsbGVkICcubm90ZGVmJykuCisgICAqCisgICAqICAgVGhpcyBmdW5jdGlvbiBoYXMgbGltaXRlZCBjYXBhYmlsaXRpZXMgaWYgdGhlIGNvbmZpZyBtYWNybworICAgKiAgIGBGVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVNgIGlzIG5vdCBkZWZpbmVkIGluIGBmdG9wdGlvbi5oYDoKKyAgICogICBJdCB0aGVuIHdvcmtzIG9ubHkgZm9yIGZvbnRzIHRoYXQgYWN0dWFsbHkgZW1iZWQgZ2x5cGggbmFtZXMgKHdoaWNoCisgICAqICAgbWFueSByZWNlbnQgT3BlblR5cGUgZm9udHMgZG8gbm90KS4KKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfR2x5cGhfTmFtZSggRlRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgRlRfUG9pbnRlciAgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgYnVmZmVyX21heCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9HZXRfUG9zdHNjcmlwdF9OYW1lCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBSZXRyaWV2ZSB0aGUgQVNDSUkgUG9zdFNjcmlwdCBuYW1lIG9mIGEgZ2l2ZW4gZmFjZSwgaWYgYXZhaWxhYmxlLgorICAgKiAgIFRoaXMgb25seSB3b3JrcyB3aXRoIFBvc3RTY3JpcHQsIFRydWVUeXBlLCBhbmQgT3BlblR5cGUgZm9udHMuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBmYWNlIDo6CisgICAqICAgICBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2Ugb2JqZWN0LgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIEEgcG9pbnRlciB0byB0aGUgZmFjZSdzIFBvc3RTY3JpcHQgbmFtZS4gIGBOVUxMYCBpZiB1bmF2YWlsYWJsZS4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgVGhlIHJldHVybmVkIHBvaW50ZXIgaXMgb3duZWQgYnkgdGhlIGZhY2UgYW5kIGlzIGRlc3Ryb3llZCB3aXRoIGl0LgorICAgKgorICAgKiAgIEZvciB2YXJpYXRpb24gZm9udHMsIHRoaXMgc3RyaW5nIGNoYW5nZXMgaWYgeW91IHNlbGVjdCBhIGRpZmZlcmVudAorICAgKiAgIGluc3RhbmNlLCBhbmQgeW91IGhhdmUgdG8gY2FsbCBgRlRfR2V0X1Bvc3RTY3JpcHRfTmFtZWAgYWdhaW4gdG8KKyAgICogICByZXRyaWV2ZSBpdC4gIEZyZWVUeXBlIGZvbGxvd3MgQWRvYmUgVGVjaE5vdGUgIzU5MDIsICdHZW5lcmF0aW5nCisgICAqICAgUG9zdFNjcmlwdCBOYW1lcyBmb3IgRm9udHMgVXNpbmcgT3BlblR5cGUgRm9udCBWYXJpYXRpb25zJy4KKyAgICoKKyAgICogICAgIGh0dHBzOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL2RldmVsb3Blci9vcGVudHlwZS90ZWNoLW5vdGVzLzU5MDIuQWRvYmVQU05hbWVHZW5lcmF0aW9uLmh0bWwKKyAgICoKKyAgICogICBbU2luY2UgMi45XSBTcGVjaWFsIFBvc3RTY3JpcHQgbmFtZXMgZm9yIG5hbWVkIGluc3RhbmNlcyBhcmUgb25seQorICAgKiAgIHJldHVybmVkIGlmIHRoZSBuYW1lZCBpbnN0YW5jZSBpcyBzZXQgd2l0aCBARlRfU2V0X05hbWVkX0luc3RhbmNlIChhbmQKKyAgICogICB0aGUgZm9udCBoYXMgY29ycmVzcG9uZGluZyBlbnRyaWVzIGluIGl0cyAnZnZhcicgdGFibGUpLiAgSWYKKyAgICogICBARlRfSVNfVkFSSUFUSU9OIHJldHVybnMgdHJ1ZSwgdGhlIGFsZ29yaXRobWljYWxseSBkZXJpdmVkIFBvc3RTY3JpcHQKKyAgICogICBuYW1lIGlzIHByb3ZpZGVkLCBub3QgbG9va2luZyB1cCBzcGVjaWFsIGVudHJpZXMgZm9yIG5hbWVkIGluc3RhbmNlcy4KKyAgICovCisgIEZUX0VYUE9SVCggY29uc3QgY2hhciogKQorICBGVF9HZXRfUG9zdHNjcmlwdF9OYW1lKCBGVF9GYWNlICBmYWNlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKICAgICogQGVudW06CiAgICAqICAgRlRfU1VCR0xZUEhfRkxBR19YWFgKICAgICoKQEAgLTQxNDYsMTMgKzQzNjIsNiBAQAogCiAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgKgotICAgKiBAc2VjdGlvbjoKLSAgICogICBiYXNlX2ludGVyZmFjZQotICAgKgotICAgKi8KLQotICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgICoKICAgICogQGVudW06CiAgICAqICAgRlRfRlNUWVBFX1hYWAogICAgKgpAQCAtNDQ4Niw3ICs0Njk1LDggQEAKICAgICoKICAgICogQGRlc2NyaXB0aW9uOgogICAgKiAgIFRoaXMgc2VjdGlvbiBjb250YWlucyB2YXJpb3VzIGZ1bmN0aW9ucyB1c2VkIHRvIHBlcmZvcm0gY29tcHV0YXRpb25zCi0gICAqICAgb24gMTYuMTYgZml4ZWQtZmxvYXQgbnVtYmVycyBvciAyZCB2ZWN0b3JzLgorICAgKiAgIG9uIDE2LjE2IGZpeGVkLXBvaW50IG51bWJlcnMgb3IgMkQgdmVjdG9ycy4gIEZyZWVUeXBlIGRvZXMgbm90IHVzZQorICAgKiAgIGZsb2F0aW5nLXBvaW50IGRhdGEgdHlwZXMuCiAgICAqCiAgICAqICAgKipBdHRlbnRpb24qKjogTW9zdCBhcml0aG1ldGljIGZ1bmN0aW9ucyB0YWtlIGBGVF9Mb25nYCBhcyBhcmd1bWVudHMuCiAgICAqICAgRm9yIGhpc3RvcmljYWwgcmVhc29ucywgRnJlZVR5cGUgd2FzIGRlc2lnbmVkIHVuZGVyIHRoZSBhc3N1bXB0aW9uCkBAIC00NzM5LDggKzQ5NDksOCBAQAogICAgKgogICAgKi8KICNkZWZpbmUgRlJFRVRZUEVfTUFKT1IgIDIKLSNkZWZpbmUgRlJFRVRZUEVfTUlOT1IgIDExCi0jZGVmaW5lIEZSRUVUWVBFX1BBVENIICAxCisjZGVmaW5lIEZSRUVUWVBFX01JTk9SICAxMworI2RlZmluZSBGUkVFVFlQRV9QQVRDSCAgMAogCiAKICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0YWR2YW5jLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0YWR2YW5jLmgKaW5kZXggM2ExM2JkMy4uNDU2MGRlZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9mdGFkdmFuYy5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvZnRhZHZhbmMuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFF1aWNrIGNvbXB1dGF0aW9uIG9mIGFkdmFuY2Ugd2lkdGhzIChzcGVjaWZpY2F0aW9uIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvZnRiYm94LmggYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0YmJveC5oCmluZGV4IDcxM2FlZGIuLmZjMjE3NDAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvZnRiYm94LmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9mdGJib3guaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIGV4YWN0IGJib3ggY29tcHV0YXRpb24gKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvZnRiZGYuaCBiL2luY2x1ZGUvZnJlZXR5cGUvZnRiZGYuaAppbmRleCBjNDI4NTA2Li5lOGNlNjQzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0YmRmLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9mdGJkZi5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgQVBJIGZvciBhY2Nlc3NpbmcgQkRGLXNwZWNpZmljIHN0cmluZ3MgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvZnRiaXRtYXAuaCBiL2luY2x1ZGUvZnJlZXR5cGUvZnRiaXRtYXAuaAppbmRleCAxMWM0NWIwLi5lYjZiNGIxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Yml0bWFwLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9mdGJpdG1hcC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGJpdG1hcHMgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvZnRiemlwMi5oIGIvaW5jbHVkZS9mcmVldHlwZS9mdGJ6aXAyLmgKaW5kZXggYWZkMmE4Mi4uN2QyOWY0NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9mdGJ6aXAyLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9mdGJ6aXAyLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBCemlwMi1jb21wcmVzc2VkIHN0cmVhbSBzdXBwb3J0LgogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMyBieQogICogSm9lbCBLbGluZ2hlZC4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Y2FjaGUuaCBiL2luY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oCmluZGV4IDcwMzk5YTMuLmM3Njg2OTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgQ2FjaGUgc3Vic3lzdGVtIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC00MjQsNyArNDI0LDcgQEAKICAgICogICBwaXhlbCA6OgogICAgKiAgICAgQSBCb29sZWFuLiAgSWYgMSwgdGhlIGB3aWR0aGAgYW5kIGBoZWlnaHRgIGZpZWxkcyBhcmUgaW50ZXJwcmV0ZWQgYXMKICAgICogICAgIGludGVnZXIgcGl4ZWwgY2hhcmFjdGVyIHNpemVzLiAgT3RoZXJ3aXNlLCB0aGV5IGFyZSBleHByZXNzZWQgYXMKLSAgICogICAgIDEvNjR0aCBvZiBwb2ludHMuCisgICAqICAgICAxLzY0IG9mIHBvaW50cy4KICAgICoKICAgICogICB4X3JlcyA6OgogICAgKiAgICAgT25seSB1c2VkIHdoZW4gYHBpeGVsYCBpcyB2YWx1ZX4wIHRvIGluZGljYXRlIHRoZSBob3Jpem9udGFsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Y2hhcHRlcnMuaCBiL2luY2x1ZGUvZnJlZXR5cGUvZnRjaGFwdGVycy5oCmluZGV4IDRmMzJjYzguLjZhOTczM2EgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvZnRjaGFwdGVycy5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvZnRjaGFwdGVycy5oCkBAIC02Miw2ICs2Miw3IEBACiAgICAqICAgY2lkX2ZvbnRzCiAgICAqICAgcGZyX2ZvbnRzCiAgICAqICAgd2luZm50X2ZvbnRzCisgICAqICAgc3ZnX2ZvbnRzCiAgICAqICAgZm9udF9mb3JtYXRzCiAgICAqICAgZ2FzcF90YWJsZQogICAgKgpAQCAtODIsNiArODMsNyBAQAogICAgKiAgIHQxX2NpZF9kcml2ZXIKICAgICogICB0dF9kcml2ZXIKICAgICogICBwY2ZfZHJpdmVyCisgICAqICAgb3Rfc3ZnX2RyaXZlcgogICAgKiAgIHByb3BlcnRpZXMKICAgICogICBwYXJhbWV0ZXJfdGFncwogICAgKiAgIGxjZF9yZW5kZXJpbmcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvZnRjaWQuaCBiL2luY2x1ZGUvZnJlZXR5cGUvZnRjaWQuaAppbmRleCA5YTQxNWJkLi5lZjIyOTM5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Y2lkLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9mdGNpZC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgQVBJIGZvciBhY2Nlc3NpbmcgQ0lEIGZvbnQgaW5mb3JtYXRpb24gKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMyBieQogICogRGVyZWcgQ2xlZ2cgYW5kIE1pY2hhZWwgVG9mdGRhbC4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Y29sb3IuaCBiL2luY2x1ZGUvZnJlZXR5cGUvZnRjb2xvci5oCmluZGV4IDA4ZGJhYzAuLmVhZTIwMGYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvZnRjb2xvci5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvZnRjb2xvci5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUncyBnbHlwaCBjb2xvciBtYW5hZ2VtZW50IChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC00NTYsNiArNDU2LDkgQEAKICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJml0ZXJhdG9yICkgKTsKICAgICogICAgIH0KICAgICogICBgYGAKKyAgICoKKyAgICogQHNpbmNlOgorICAgKiAgIDIuMTAKICAgICovCiAgIEZUX0VYUE9SVCggRlRfQm9vbCApCiAgIEZUX0dldF9Db2xvcl9HbHlwaF9MYXllciggRlRfRmFjZSAgICAgICAgICAgIGZhY2UsCkBAIC00NzUsNyArNDc4LDcgQEAKICAgICogICBleHRlbnNpb25zIHRvIHRoZSAnQ09MUicgdGFibGUsIHNlZQogICAgKiAgICdodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlZm9udHMvY29sci1ncmFkaWVudHMtc3BlYycuCiAgICAqCi0gICAqICAgVGhlIGVudW1lcmF0aW9uIHZhbHVlcyBsb3NlbHkgY29ycmVzcG9uZCB3aXRoIHRoZSBmb3JtYXQgbnVtYmVycyBvZgorICAgKiAgIFRoZSBlbnVtZXJhdGlvbiB2YWx1ZXMgbG9vc2VseSBjb3JyZXNwb25kIHdpdGggdGhlIGZvcm1hdCBudW1iZXJzIG9mCiAgICAqICAgdGhlIHNwZWNpZmljYXRpb246IEZyZWVUeXBlIGFsd2F5cyByZXR1cm5zIGEgZnVsbHkgc3BlY2lmaWVkICdQYWludCcKICAgICogICBzdHJ1Y3R1cmUgZm9yIHRoZSAnVHJhbnNmb3JtJywgJ1RyYW5zbGF0ZScsICdTY2FsZScsICdSb3RhdGUnLCBhbmQKICAgICogICAnU2tldycgdGFibGUgdHlwZXMgZXZlbiB0aG91Z2ggdGhlIHNwZWNpZmljYXRpb24gaGFzIGRpZmZlcmVudCBmb3JtYXRzCkBAIC00ODksOSArNDkyLDcgQEAKICAgICogICBzdHJ1Y3R1cmVzLgogICAgKgogICAgKiBAc2luY2U6Ci0gICAqICAgMi4xMSAtLSAqKmN1cnJlbnRseSBleHBlcmltZW50YWwgb25seSEqKiAgVGhlcmUgbWlnaHQgYmUgY2hhbmdlcwotICAgKiAgIHdpdGhvdXQgcmV0YWluaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgb2YgYm90aCB0aGUgQVBJIGFuZCBBQkkuCi0gICAqCisgICAqICAgMi4xMwogICAgKi8KICAgdHlwZWRlZiBlbnVtICBGVF9QYWludEZvcm1hdF8KICAgewpAQCAtNTIxLDI2ICs1MjIsMjkgQEAKICAgICoKICAgICogQGRlc2NyaXB0aW9uOgogICAgKiAgIFRoaXMgaXRlcmF0b3Igb2JqZWN0IGlzIG5lZWRlZCBmb3IgQEZUX0dldF9Db2xvcmxpbmVfU3RvcHMuICBJdCBrZWVwcwotICAgKiAgIHN0YXRlIHdoaWxlIGl0ZXJhdGluZyBvdmVyIHRoZSBzdG9wcyBvZiBhbiBARlRfQ29sb3JMaW5lLAotICAgKiAgIHJlcHJlc2VudGluZyB0aGUgYENvbG9yTGluZWAgc3RydWN0IG9mIHRoZSB2MSBleHRlbnNpb25zIHRvICdDT0xSJywKLSAgICogICBzZWUgJ2h0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGVmb250cy9jb2xyLWdyYWRpZW50cy1zcGVjJy4KKyAgICogICBzdGF0ZSB3aGlsZSBpdGVyYXRpbmcgb3ZlciB0aGUgc3RvcHMgb2YgYW4gQEZUX0NvbG9yTGluZSwgcmVwcmVzZW50aW5nCisgICAqICAgdGhlIGBDb2xvckxpbmVgIHN0cnVjdCBvZiB0aGUgdjEgZXh0ZW5zaW9ucyB0byAnQ09MUicsIHNlZQorICAgKiAgICdodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlZm9udHMvY29sci1ncmFkaWVudHMtc3BlYycuICBEbyBub3QgbWFudWFsbHkKKyAgICogICBtb2RpZnkgZmllbGRzIG9mIHRoaXMgaXRlcmF0b3IuCiAgICAqCiAgICAqIEBmaWVsZHM6CiAgICAqICAgbnVtX2NvbG9yX3N0b3BzIDo6CiAgICAqICAgICBUaGUgbnVtYmVyIG9mIGNvbG9yIHN0b3BzIGZvciB0aGUgcmVxdWVzdGVkIGdseXBoIGluZGV4LiAgU2V0IGJ5Ci0gICAqICAgICBARlRfR2V0X0NvbG9ybGluZV9TdG9wcy4KKyAgICogICAgIEBGVF9HZXRfUGFpbnQuCiAgICAqCiAgICAqICAgY3VycmVudF9jb2xvcl9zdG9wIDo6CiAgICAqICAgICBUaGUgY3VycmVudCBjb2xvciBzdG9wLiAgU2V0IGJ5IEBGVF9HZXRfQ29sb3JsaW5lX1N0b3BzLgogICAgKgogICAgKiAgIHAgOjoKLSAgICogICAgIEFuIG9wYXF1ZSBwb2ludGVyIGludG8gJ0NPTFInIHRhYmxlIGRhdGEuICBUaGUgY2FsbGVyIG11c3Qgc2V0IHRoaXMKLSAgICogICAgIHRvIGBOVUxMYCBiZWZvcmUgdGhlIGZpcnN0IGNhbGwgb2YgQEZUX0dldF9Db2xvcmxpbmVfU3RvcHMuCisgICAqICAgICBBbiBvcGFxdWUgcG9pbnRlciBpbnRvICdDT0xSJyB0YWJsZSBkYXRhLiAgU2V0IGJ5IEBGVF9HZXRfUGFpbnQuCisgICAqICAgICBVcGRhdGVkIGJ5IEBGVF9HZXRfQ29sb3JsaW5lX1N0b3BzLgorICAgKgorICAgKiAgIHJlYWRfdmFyaWFibGUgOjoKKyAgICogICAgIEEgYm9vbGVhbiBrZWVwaW5nIHRyYWNrIG9mIHdoZXRoZXIgdmFyaWFibGUgY29sb3IgbGluZXMgYXJlIHRvIGJlCisgICAqICAgICByZWFkLiAgU2V0IGJ5IEBGVF9HZXRfUGFpbnQuCiAgICAqCiAgICAqIEBzaW5jZToKLSAgICogICAyLjExIC0tICoqY3VycmVudGx5IGV4cGVyaW1lbnRhbCBvbmx5ISoqICBUaGVyZSBtaWdodCBiZSBjaGFuZ2VzCi0gICAqICAgd2l0aG91dCByZXRhaW5pbmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvZiBib3RoIHRoZSBBUEkgYW5kIEFCSS4KLSAgICoKKyAgICogICAyLjEzCiAgICAqLwogICB0eXBlZGVmIHN0cnVjdCAgRlRfQ29sb3JTdG9wSXRlcmF0b3JfCiAgIHsKQEAgLTU0OSw2ICs1NTMsOCBAQAogCiAgICAgRlRfQnl0ZSogIHA7CiAKKyAgICBGVF9Cb29sICByZWFkX3ZhcmlhYmxlOworCiAgIH0gRlRfQ29sb3JTdG9wSXRlcmF0b3I7CiAKIApAQCAtNTY5LDkgKzU3NSw3IEBACiAgICAqICAgICBBbHBoYSB0cmFuc3BhcmVuY3kgdmFsdWUgbXVsdGlwbGllZCB3aXRoIHRoZSB2YWx1ZSBmcm9tICdDUEFMJy4KICAgICoKICAgICogQHNpbmNlOgotICAgKiAgIDIuMTEgLS0gKipjdXJyZW50bHkgZXhwZXJpbWVudGFsIG9ubHkhKiogIFRoZXJlIG1pZ2h0IGJlIGNoYW5nZXMKLSAgICogICB3aXRob3V0IHJldGFpbmluZyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9mIGJvdGggdGhlIEFQSSBhbmQgQUJJLgotICAgKgorICAgKiAgIDIuMTMKICAgICovCiAgIHR5cGVkZWYgc3RydWN0ICBGVF9Db2xvckluZGV4XwogICB7CkBAIC01OTIsMTkgKzU5NiwxOCBAQAogICAgKgogICAgKiBAZmllbGRzOgogICAgKiAgIHN0b3Bfb2Zmc2V0IDo6Ci0gICAqICAgICBUaGUgc3RvcCBvZmZzZXQgYmV0d2VlbiAwIGFuZCAxIGFsb25nIHRoZSBncmFkaWVudC4KKyAgICogICAgIFRoZSBzdG9wIG9mZnNldCBhbG9uZyB0aGUgZ3JhZGllbnQsIGV4cHJlc3NlZCBhcyBhIDE2LjE2IGZpeGVkLXBvaW50CisgICAqICAgICBjb29yZGluYXRlLgogICAgKgogICAgKiAgIGNvbG9yIDo6CiAgICAqICAgICBUaGUgY29sb3IgaW5mb3JtYXRpb24gZm9yIHRoaXMgc3RvcCwgc2VlIEBGVF9Db2xvckluZGV4LgogICAgKgogICAgKiBAc2luY2U6Ci0gICAqICAgMi4xMSAtLSAqKmN1cnJlbnRseSBleHBlcmltZW50YWwgb25seSEqKiAgVGhlcmUgbWlnaHQgYmUgY2hhbmdlcwotICAgKiAgIHdpdGhvdXQgcmV0YWluaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgb2YgYm90aCB0aGUgQVBJIGFuZCBBQkkuCi0gICAqCisgICAqICAgMi4xMwogICAgKi8KICAgdHlwZWRlZiBzdHJ1Y3QgIEZUX0NvbG9yU3RvcF8KICAgewotICAgIEZUX0YyRG90MTQgICAgIHN0b3Bfb2Zmc2V0OworICAgIEZUX0ZpeGVkICAgICAgIHN0b3Bfb2Zmc2V0OwogICAgIEZUX0NvbG9ySW5kZXggIGNvbG9yOwogCiAgIH0gRlRfQ29sb3JTdG9wOwpAQCAtNjIxLDkgKzYyNCw3IEBACiAgICAqICAgSXQgZGVzY3JpYmVzIGhvdyB0aGUgZ3JhZGllbnQgZmlsbCBjb250aW51ZXMgYXQgdGhlIG90aGVyIGJvdW5kYXJpZXMuCiAgICAqCiAgICAqIEBzaW5jZToKLSAgICogICAyLjExIC0tICoqY3VycmVudGx5IGV4cGVyaW1lbnRhbCBvbmx5ISoqICBUaGVyZSBtaWdodCBiZSBjaGFuZ2VzCi0gICAqICAgd2l0aG91dCByZXRhaW5pbmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvZiBib3RoIHRoZSBBUEkgYW5kIEFCSS4KLSAgICoKKyAgICogICAyLjEzCiAgICAqLwogICB0eXBlZGVmIGVudW0gIEZUX1BhaW50RXh0ZW5kXwogICB7CkBAIC02NTMsOSArNjU0LDcgQEAKICAgICogICAgIGFjdHVhbCBARlRfQ29sb3JTdG9wJ3MuCiAgICAqCiAgICAqIEBzaW5jZToKLSAgICogICAyLjExIC0tICoqY3VycmVudGx5IGV4cGVyaW1lbnRhbCBvbmx5ISoqICBUaGVyZSBtaWdodCBiZSBjaGFuZ2VzCi0gICAqICAgd2l0aG91dCByZXRhaW5pbmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvZiBib3RoIHRoZSBBUEkgYW5kIEFCSS4KLSAgICoKKyAgICogICAyLjEzCiAgICAqLwogICB0eXBlZGVmIHN0cnVjdCAgRlRfQ29sb3JMaW5lXwogICB7CkBAIC02OTksOSArNjk4LDcgQEAKICAgICogICAgIHkgdHJhbnNsYXRpb24uCiAgICAqCiAgICAqIEBzaW5jZToKLSAgICogICAyLjExIC0tICoqY3VycmVudGx5IGV4cGVyaW1lbnRhbCBvbmx5ISoqICBUaGVyZSBtaWdodCBiZSBjaGFuZ2VzCi0gICAqICAgd2l0aG91dCByZXRhaW5pbmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvZiBib3RoIHRoZSBBUEkgYW5kIEFCSS4KLSAgICoKKyAgICogICAyLjEzCiAgICAqLwogICB0eXBlZGVmIHN0cnVjdCAgRlRfQWZmaW5lXzIzXwogICB7CkBAIC03MjIsOSArNzE5LDcgQEAKICAgICogICAnaHR0cHM6Ly93d3cudzMub3JnL1RSL2NvbXBvc2l0aW5nLTEvI3BvcnRlcmR1ZmZjb21wb3NpdGluZ29wZXJhdG9ycycuCiAgICAqCiAgICAqIEBzaW5jZToKLSAgICogICAyLjExIC0tICoqY3VycmVudGx5IGV4cGVyaW1lbnRhbCBvbmx5ISoqICBUaGVyZSBtaWdodCBiZSBjaGFuZ2VzCi0gICAqICAgd2l0aG91dCByZXRhaW5pbmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvZiBib3RoIHRoZSBBUEkgYW5kIEFCSS4KLSAgICoKKyAgICogICAyLjEzCiAgICAqLwogICB0eXBlZGVmIGVudW0gIEZUX0NvbXBvc2l0ZV9Nb2RlXwogICB7CkBAIC03ODYsOSArNzgxLDcgQEAKICAgICogICAgIHRvIGJlIHByb3ZpZGVkLiAgRG8gbm90IHNldCB0aGlzIHZhbHVlLgogICAgKgogICAgKiBAc2luY2U6Ci0gICAqICAgMi4xMSAtLSAqKmN1cnJlbnRseSBleHBlcmltZW50YWwgb25seSEqKiAgVGhlcmUgbWlnaHQgYmUgY2hhbmdlcwotICAgKiAgIHdpdGhvdXQgcmV0YWluaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgb2YgYm90aCB0aGUgQVBJIGFuZCBBQkkuCi0gICAqCisgICAqICAgMi4xMwogICAgKi8KICAgdHlwZWRlZiBzdHJ1Y3QgIEZUX09wYXF1ZV9QYWludF8KICAgewpAQCAtODE1LDkgKzgwOCw3IEBACiAgICAqICAgICBUaGUgbGF5ZXIgaXRlcmF0b3IgdGhhdCBkZXNjcmliZXMgdGhlIGxheWVycyBvZiB0aGlzIHBhaW50LgogICAgKgogICAgKiBAc2luY2U6Ci0gICAqICAgMi4xMSAtLSAqKmN1cnJlbnRseSBleHBlcmltZW50YWwgb25seSEqKiAgVGhlcmUgbWlnaHQgYmUgY2hhbmdlcwotICAgKiAgIHdpdGhvdXQgcmV0YWluaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgb2YgYm90aCB0aGUgQVBJIGFuZCBBQkkuCi0gICAqCisgICAqICAgMi4xMwogICAgKi8KICAgdHlwZWRlZiBzdHJ1Y3QgIEZUX1BhaW50Q29sckxheWVyc18KICAgewpAQCAtODQyLDkgKzgzMyw3IEBACiAgICAqICAgICBUaGUgY29sb3IgaW5mb3JtYXRpb24gZm9yIHRoaXMgc29saWQgcGFpbnQsIHNlZSBARlRfQ29sb3JJbmRleC4KICAgICoKICAgICogQHNpbmNlOgotICAgKiAgIDIuMTEgLS0gKipjdXJyZW50bHkgZXhwZXJpbWVudGFsIG9ubHkhKiogIFRoZXJlIG1pZ2h0IGJlIGNoYW5nZXMKLSAgICogICB3aXRob3V0IHJldGFpbmluZyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9mIGJvdGggdGhlIEFQSSBhbmQgQUJJLgotICAgKgorICAgKiAgIDIuMTMKICAgICovCiAgIHR5cGVkZWYgc3RydWN0ICBGVF9QYWludFNvbGlkXwogICB7CkBAIC04ODMsOSArODcyLDcgQEAKICAgICogICAgIE90aGVyd2lzZSBlcXVhbCB0b35wMC4KICAgICoKICAgICogQHNpbmNlOgotICAgKiAgIDIuMTEgLS0gKipjdXJyZW50bHkgZXhwZXJpbWVudGFsIG9ubHkhKiogIFRoZXJlIG1pZ2h0IGJlIGNoYW5nZXMKLSAgICogICB3aXRob3V0IHJldGFpbmluZyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9mIGJvdGggdGhlIEFQSSBhbmQgQUJJLgotICAgKgorICAgKiAgIDIuMTMKICAgICovCiAgIHR5cGVkZWYgc3RydWN0ICBGVF9QYWludExpbmVhckdyYWRpZW50XwogICB7CkBAIC05MDgsOCArODk1LDcgQEAKICAgICogICBBIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgYSBgUGFpbnRSYWRpYWxHcmFkaWVudGAgdmFsdWUgb2YgdGhlICdDT0xSJwogICAgKiAgIHYxIGV4dGVuc2lvbnMsIHNlZQogICAgKiAgICdodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlZm9udHMvY29sci1ncmFkaWVudHMtc3BlYycuICBUaGUgZ2x5cGgKLSAgICogICBsYXllciBmaWxsZWQgd2l0aCB0aGlzIHBhaW50IGlzIGRyYXduIGZpbGxlZCBmaWxsZWQgd2l0aCBhIHJhZGlhbAotICAgKiAgIGdyYWRpZW50LgorICAgKiAgIGxheWVyIGZpbGxlZCB3aXRoIHRoaXMgcGFpbnQgaXMgZHJhd24gZmlsbGVkIHdpdGggYSByYWRpYWwgZ3JhZGllbnQuCiAgICAqCiAgICAqIEBmaWVsZHM6CiAgICAqICAgY29sb3JsaW5lIDo6CkBAIC05MzMsOSArOTE5LDcgQEAKICAgICogICAgIHVuaXRzIHJlcHJlc2VudGVkIGFzIGEgMTYuMTYgZml4ZWQtcG9pbnQgdmFsdWUuCiAgICAqCiAgICAqIEBzaW5jZToKLSAgICogICAyLjExIC0tICoqY3VycmVudGx5IGV4cGVyaW1lbnRhbCBvbmx5ISoqICBUaGVyZSBtaWdodCBiZSBjaGFuZ2VzCi0gICAqICAgd2l0aG91dCByZXRhaW5pbmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvZiBib3RoIHRoZSBBUEkgYW5kIEFCSS4KLSAgICoKKyAgICogICAyLjEzCiAgICAqLwogICB0eXBlZGVmIHN0cnVjdCAgRlRfUGFpbnRSYWRpYWxHcmFkaWVudF8KICAgewpAQCAtOTgzLDkgKzk2Nyw3IEBACiAgICAqICAgICBnaXZlbiBjb3VudGVyLWNsb2Nrd2lzZSwgc3RhcnRpbmcgZnJvbSB0aGUgKHBvc2l0aXZlKSB5fmF4aXMuCiAgICAqCiAgICAqIEBzaW5jZToKLSAgICogICAyLjExIC0tICoqY3VycmVudGx5IGV4cGVyaW1lbnRhbCBvbmx5ISoqICBUaGVyZSBtaWdodCBiZSBjaGFuZ2VzCi0gICAqICAgd2l0aG91dCByZXRhaW5pbmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvZiBib3RoIHRoZSBBUEkgYW5kIEFCSS4KLSAgICoKKyAgICogICAyLjEzCiAgICAqLwogICB0eXBlZGVmIHN0cnVjdCAgRlRfUGFpbnRTd2VlcEdyYWRpZW50XwogICB7CkBAIC0xMDE2LDkgKzk5OCw3IEBACiAgICAqICAgICBpbmZvcm1hdGlvbiB0aGF0IGlzIGZpbGxlZCB3aXRoIHBhaW50LgogICAgKgogICAgKiBAc2luY2U6Ci0gICAqICAgMi4xMSAtLSAqKmN1cnJlbnRseSBleHBlcmltZW50YWwgb25seSEqKiAgVGhlcmUgbWlnaHQgYmUgY2hhbmdlcwotICAgKiAgIHdpdGhvdXQgcmV0YWluaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgb2YgYm90aCB0aGUgQVBJIGFuZCBBQkkuCi0gICAqCisgICAqICAgMi4xMwogICAgKi8KICAgdHlwZWRlZiBzdHJ1Y3QgIEZUX1BhaW50R2x5cGhfCiAgIHsKQEAgLTEwNDIsOSArMTAyMiw3IEBACiAgICAqICAgICB0aGlzIHBhaW50LgogICAgKgogICAgKiBAc2luY2U6Ci0gICAqICAgMi4xMSAtLSAqKmN1cnJlbnRseSBleHBlcmltZW50YWwgb25seSEqKiAgVGhlcmUgbWlnaHQgYmUgY2hhbmdlcwotICAgKiAgIHdpdGhvdXQgcmV0YWluaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgb2YgYm90aCB0aGUgQVBJIGFuZCBBQkkuCi0gICAqCisgICAqICAgMi4xMwogICAgKi8KICAgdHlwZWRlZiBzdHJ1Y3QgIEZUX1BhaW50Q29sckdseXBoXwogICB7CkBAIC0xMDcwLDkgKzEwNDgsNyBAQAogICAgKiAgICAgMTYuMTYgZml4ZWQtcG9pbnQgdmFsdWVzLgogICAgKgogICAgKiBAc2luY2U6Ci0gICAqICAgMi4xMSAtLSAqKmN1cnJlbnRseSBleHBlcmltZW50YWwgb25seSEqKiAgVGhlcmUgbWlnaHQgYmUgY2hhbmdlcwotICAgKiAgIHdpdGhvdXQgcmV0YWluaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgb2YgYm90aCB0aGUgQVBJIGFuZCBBQkkuCi0gICAqCisgICAqICAgMi4xMwogICAgKi8KICAgdHlwZWRlZiBzdHJ1Y3QgIEZUX1BhaW50VHJhbnNmb3JtXwogICB7CkBAIC0xMTA1LDkgKzEwODEsNyBAQAogICAgKiAgICAgMTYuMTYgZml4ZWQtcG9pbnQgdmFsdWUuCiAgICAqCiAgICAqIEBzaW5jZToKLSAgICogICAyLjExIC0tICoqY3VycmVudGx5IGV4cGVyaW1lbnRhbCBvbmx5ISoqICBUaGVyZSBtaWdodCBiZSBjaGFuZ2VzCi0gICAqICAgd2l0aG91dCByZXRhaW5pbmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvZiBib3RoIHRoZSBBUEkgYW5kIEFCSS4KLSAgICoKKyAgICogICAyLjEzCiAgICAqLwogICB0eXBlZGVmIHN0cnVjdCAgRlRfUGFpbnRUcmFuc2xhdGVfCiAgIHsKQEAgLTExNTYsOSArMTEzMCw3IEBACiAgICAqICAgICAxNi4xNiBmaXhlZC1wb2ludCB2YWx1ZS4KICAgICoKICAgICogQHNpbmNlOgotICAgKiAgIDIuMTEgLS0gKipjdXJyZW50bHkgZXhwZXJpbWVudGFsIG9ubHkhKiogIFRoZXJlIG1pZ2h0IGJlIGNoYW5nZXMKLSAgICogICB3aXRob3V0IHJldGFpbmluZyBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IG9mIGJvdGggdGhlIEFQSSBhbmQgQUJJLgotICAgKgorICAgKiAgIDIuMTMKICAgICovCiAgIHR5cGVkZWYgc3RydWN0ICBGVF9QYWludFNjYWxlXwogICB7CkBAIC0xMTk0LDE2ICsxMTY2LDE0IEBACiAgICAqCiAgICAqICAgY2VudGVyX3ggOjoKICAgICogICAgIFRoZSB4fmNvb3JkaW5hdGUgb2YgdGhlIHBpdm90IHBvaW50IG9mIHRoZSByb3RhdGlvbiBpbiBmb250Ci0gICAqICAgICB1bml0cykgcmVwcmVzZW50ZWQgYXMgYSAxNi4xNiBmaXhlZC1wb2ludCB2YWx1ZS4KKyAgICogICAgIHVuaXRzIHJlcHJlc2VudGVkIGFzIGEgMTYuMTYgZml4ZWQtcG9pbnQgdmFsdWUuCiAgICAqCiAgICAqICAgY2VudGVyX3kgOjoKICAgICogICAgIFRoZSB5fmNvb3JkaW5hdGUgb2YgdGhlIHBpdm90IHBvaW50IG9mIHRoZSByb3RhdGlvbiBpbiBmb250CiAgICAqICAgICB1bml0cyByZXByZXNlbnRlZCBhcyBhIDE2LjE2IGZpeGVkLXBvaW50IHZhbHVlLgogICAgKgogICAgKiBAc2luY2U6Ci0gICAqICAgMi4xMSAtLSAqKmN1cnJlbnRseSBleHBlcmltZW50YWwgb25seSEqKiAgVGhlcmUgbWlnaHQgYmUgY2hhbmdlcwotICAgKiAgIHdpdGhvdXQgcmV0YWluaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgb2YgYm90aCB0aGUgQVBJIGFuZCBBQkkuCi0gICAqCisgICAqICAgMi4xMwogICAgKi8KIAogICB0eXBlZGVmIHN0cnVjdCAgRlRfUGFpbnRSb3RhdGVfCkBAIC0xMjUyLDkgKzEyMjIsNyBAQAogICAgKiAgICAgcmVwcmVzZW50ZWQgYXMgYSAxNi4xNiBmaXhlZC1wb2ludCB2YWx1ZS4KICAgICoKICAgICogQHNpbmNlOgotICAgKiAgIDIuMTEgLS0gKipjdXJyZW50bHkgZXhwZXJpbWVudGFsIG9ubHkhKiogIFRoZXJlIG1pZ2h0IGJlIGNoYW5nZXMKLSAgICogICB3aXRob3V0IHJldGFpbmluZyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9mIGJvdGggdGhlIEFQSSBhbmQgQUJJLgotICAgKgorICAgKiAgIDIuMTMKICAgICovCiAgIHR5cGVkZWYgc3RydWN0ICBGVF9QYWludFNrZXdfCiAgIHsKQEAgLTEyNzUsOSArMTI0Myw4IEBACiAgICAqICAgRlRfUGFpbnRDb21wb3NpdGUKICAgICoKICAgICogQGRlc2NyaXB0aW9uOgotICAgKiAgIEEgc3RydWN0dXJlIHJlcHJlc2VudGluZyBhICdDT0xSJ3YxIGBQYWludENvbXBvc2l0ZWAgcGFpbnQgdGFibGUuCi0gICAqICAgVXNlZCBmb3IgY29tcG9zaXRpbmcgdHdvIHBhaW50cyBpbiBhICdDT0xSJyB2MSBkaXJlY3RlZCBhY3ljbGluZwotICAgKiAgIGdyYXBoLgorICAgKiAgIEEgc3RydWN0dXJlIHJlcHJlc2VudGluZyBhICdDT0xSJyB2MSBgUGFpbnRDb21wb3NpdGVgIHBhaW50IHRhYmxlLgorICAgKiAgIFVzZWQgZm9yIGNvbXBvc2l0aW5nIHR3byBwYWludHMgaW4gYSAnQ09MUicgdjEgZGlyZWN0ZWQgYWN5Y2xpYyBncmFwaC4KICAgICoKICAgICogQGZpZWxkczoKICAgICogICBzb3VyY2VfcGFpbnQgOjoKQEAgLTEyOTMsOSArMTI2MCw3IEBACiAgICAqICAgICBgc291cmNlX3BhaW50YCBpcyBjb21wb3NpdGVkIG9udG8uCiAgICAqCiAgICAqIEBzaW5jZToKLSAgICogICAyLjExIC0tICoqY3VycmVudGx5IGV4cGVyaW1lbnRhbCBvbmx5ISoqICBUaGVyZSBtaWdodCBiZSBjaGFuZ2VzCi0gICAqICAgd2l0aG91dCByZXRhaW5pbmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvZiBib3RoIHRoZSBBUEkgYW5kIEFCSS4KLSAgICoKKyAgICogICAyLjEzCiAgICAqLwogICB0eXBlZGVmIHN0cnVjdCAgRlRfUGFpbnRDb21wb3NpdGVfCiAgIHsKQEAgLTEzMzksOSArMTMwNCw3IEBACiAgICAqICAgICAgICogQEZUX1BhaW50Q29sckdseXBoCiAgICAqCiAgICAqIEBzaW5jZToKLSAgICogICAyLjExIC0tICoqY3VycmVudGx5IGV4cGVyaW1lbnRhbCBvbmx5ISoqICBUaGVyZSBtaWdodCBiZSBjaGFuZ2VzCi0gICAqICAgd2l0aG91dCByZXRhaW5pbmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvZiBib3RoIHRoZSBBUEkgYW5kIEFCSS4KLSAgICoKKyAgICogICAyLjEzCiAgICAqLwogICB0eXBlZGVmIHN0cnVjdCAgRlRfQ09MUl9QYWludF8KICAgewpAQCAtMTM4Niw5ICsxMzQ5LDcgQEAKICAgICogICAgIERvIG5vdCBvdXRwdXQgYW4gaW5pdGlhbCByb290IHRyYW5zZm9ybS4KICAgICoKICAgICogQHNpbmNlOgotICAgKiAgIDIuMTEgLS0gKipjdXJyZW50bHkgZXhwZXJpbWVudGFsIG9ubHkhKiogIFRoZXJlIG1pZ2h0IGJlIGNoYW5nZXMKLSAgICogICB3aXRob3V0IHJldGFpbmluZyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9mIGJvdGggdGhlIEFQSSBhbmQgQUJJLgotICAgKgorICAgKiAgIDIuMTMKICAgICovCiAgIHR5cGVkZWYgZW51bSAgRlRfQ29sb3JfUm9vdF9UcmFuc2Zvcm1fCiAgIHsKQEAgLTE0MjksOSArMTM5MCw3IEBACiAgICAqICAgICBmaXhlZC1wb2ludCBjb29yZGluYXRlcyBpbiAyNi42IGZvcm1hdC4KICAgICoKICAgICogQHNpbmNlOgotICAgKiAgIDIuMTIgLS0gKipjdXJyZW50bHkgZXhwZXJpbWVudGFsIG9ubHkhKiogIFRoZXJlIG1pZ2h0IGJlIGNoYW5nZXMKLSAgICogICB3aXRob3V0IHJldGFpbmluZyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9mIGJvdGggdGhlIEFQSSBhbmQgQUJJLgotICAgKgorICAgKiAgIDIuMTMKICAgICovCiAgIHR5cGVkZWYgc3RydWN0ICBGVF9DbGlwQm94XwogICB7CkBAIC0xNTI0LDkgKzE0ODMsNyBAQAogICAgKiAgIGVycm9yLCB2YWx1ZX4wIGlzIHJldHVybmVkIGFsc28uCiAgICAqCiAgICAqIEBzaW5jZToKLSAgICogICAyLjExIC0tICoqY3VycmVudGx5IGV4cGVyaW1lbnRhbCBvbmx5ISoqICBUaGVyZSBtaWdodCBiZSBjaGFuZ2VzCi0gICAqICAgd2l0aG91dCByZXRhaW5pbmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvZiBib3RoIHRoZSBBUEkgYW5kIEFCSS4KLSAgICoKKyAgICogICAyLjEzCiAgICAqLwogICBGVF9FWFBPUlQoIEZUX0Jvb2wgKQogICBGVF9HZXRfQ29sb3JfR2x5cGhfUGFpbnQoIEZUX0ZhY2UgICAgICAgICAgICAgICAgICBmYWNlLApAQCAtMTU2OCw5ICsxNTI1LDcgQEAKICAgICogICBhbmQgcmVtb3ZlIHRyYW5zZm9ybXMgY29uZmlndXJlZCB1c2luZyBARlRfU2V0X1RyYW5zZm9ybS4KICAgICoKICAgICogQHNpbmNlOgotICAgKiAgIDIuMTIgLS0gKipjdXJyZW50bHkgZXhwZXJpbWVudGFsIG9ubHkhKiogIFRoZXJlIG1pZ2h0IGJlIGNoYW5nZXMKLSAgICogICB3aXRob3V0IHJldGFpbmluZyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9mIGJvdGggdGhlIEFQSSBhbmQgQUJJLgotICAgKgorICAgKiAgIDIuMTMKICAgICovCiAgIEZUX0VYUE9SVCggRlRfQm9vbCApCiAgIEZUX0dldF9Db2xvcl9HbHlwaF9DbGlwQm94KCBGVF9GYWNlICAgICAgZmFjZSwKQEAgLTE2MTcsOSArMTU3Miw3IEBACiAgICAqICAgb2JqZWN0IGNhbiBub3QgYmUgcmV0cmlldmVkIG9yIGFueSBvdGhlciBlcnJvciBvY2N1cnMuCiAgICAqCiAgICAqIEBzaW5jZToKLSAgICogICAyLjExIC0tICoqY3VycmVudGx5IGV4cGVyaW1lbnRhbCBvbmx5ISoqICBUaGVyZSBtaWdodCBiZSBjaGFuZ2VzCi0gICAqICAgd2l0aG91dCByZXRhaW5pbmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvZiBib3RoIHRoZSBBUEkgYW5kIEFCSS4KLSAgICoKKyAgICogICAyLjEzCiAgICAqLwogICBGVF9FWFBPUlQoIEZUX0Jvb2wgKQogICBGVF9HZXRfUGFpbnRfTGF5ZXJzKCBGVF9GYWNlICAgICAgICAgICAgZmFjZSwKQEAgLTE2NjAsOSArMTYxMyw3IEBACiAgICAqICAgYWxzby4KICAgICoKICAgICogQHNpbmNlOgotICAgKiAgIDIuMTEgLS0gKipjdXJyZW50bHkgZXhwZXJpbWVudGFsIG9ubHkhKiogIFRoZXJlIG1pZ2h0IGJlIGNoYW5nZXMKLSAgICogICB3aXRob3V0IHJldGFpbmluZyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9mIGJvdGggdGhlIEFQSSBhbmQgQUJJLgotICAgKgorICAgKiAgIDIuMTMKICAgICovCiAgIEZUX0VYUE9SVCggRlRfQm9vbCApCiAgIEZUX0dldF9Db2xvcmxpbmVfU3RvcHMoIEZUX0ZhY2UgICAgICAgICAgICAgICAgZmFjZSwKQEAgLTE2OTgsOSArMTY0OSw3IEBACiAgICAqICAgdGhpcyBwYWludCBvciBhbnkgb3RoZXIgZXJyb3Igb2NjdXJlZC4KICAgICoKICAgICogQHNpbmNlOgotICAgKiAgIDIuMTEgLS0gKipjdXJyZW50bHkgZXhwZXJpbWVudGFsIG9ubHkhKiogIFRoZXJlIG1pZ2h0IGJlIGNoYW5nZXMKLSAgICogICB3aXRob3V0IHJldGFpbmluZyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9mIGJvdGggdGhlIEFQSSBhbmQgQUJJLgotICAgKgorICAgKiAgIDIuMTMKICAgICovCiAgIEZUX0VYUE9SVCggRlRfQm9vbCApCiAgIEZUX0dldF9QYWludCggRlRfRmFjZSAgICAgICAgIGZhY2UsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0ZHJpdmVyLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0ZHJpdmVyLmgKaW5kZXggNDkzNjYzOS4uZjkwOTQ2ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9mdGRyaXZlci5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvZnRkcml2ZXIuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIEFQSSBmb3IgY29udHJvbGxpbmcgZHJpdmVyIG1vZHVsZXMgKHNwZWNpZmljYXRpb24gb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMjEyLDE2ICsyMTIsMTQgQEAKICAgICogQGRlc2NyaXB0aW9uOgogICAgKiAgIFdoaWxlIEZyZWVUeXBlJ3MgVHJ1ZVR5cGUgZHJpdmVyIGRvZXNuJ3QgZXhwb3NlIEFQSSBmdW5jdGlvbnMgYnkKICAgICogICBpdHNlbGYsIGl0IGlzIHBvc3NpYmxlIHRvIGNvbnRyb2wgaXRzIGJlaGF2aW91ciB3aXRoIEBGVF9Qcm9wZXJ0eV9TZXQKLSAgICogICBhbmQgQEZUX1Byb3BlcnR5X0dldC4gIFRoZSBmb2xsb3dpbmcgbGlzdHMgdGhlIGF2YWlsYWJsZSBwcm9wZXJ0aWVzCi0gICAqICAgdG9nZXRoZXIgd2l0aCB0aGUgbmVjZXNzYXJ5IG1hY3JvcyBhbmQgc3RydWN0dXJlcy4KKyAgICogICBhbmQgQEZUX1Byb3BlcnR5X0dldC4KICAgICoKLSAgICogICBUaGUgVHJ1ZVR5cGUgZHJpdmVyJ3MgbW9kdWxlIG5hbWUgaXMgJ3RydWV0eXBlJy4KKyAgICogICBUaGUgVHJ1ZVR5cGUgZHJpdmVyJ3MgbW9kdWxlIG5hbWUgaXMgJ3RydWV0eXBlJzsgYSBzaW5nbGUgcHJvcGVydHkKKyAgICogICBAaW50ZXJwcmV0ZXItdmVyc2lvbiBpcyBhdmFpbGFibGUsIGFzIGRvY3VtZW50ZWQgaW4gdGhlIEBwcm9wZXJ0aWVzCisgICAqICAgc2VjdGlvbi4KICAgICoKLSAgICogICBBIHNpbmdsZSBwcm9wZXJ0eSBAaW50ZXJwcmV0ZXItdmVyc2lvbiBpcyBhdmFpbGFibGUsIGFzIGRvY3VtZW50ZWQgaW4KLSAgICogICB0aGUgQHByb3BlcnRpZXMgc2VjdGlvbi4KLSAgICoKLSAgICogICBXZSBzdGFydCB3aXRoIGEgbGlzdCBvZiBkZWZpbml0aW9ucywga2luZGx5IHByb3ZpZGVkIGJ5IEdyZWcKLSAgICogICBIaXRjaGNvY2suCisgICAqICAgVG8gaGVscCB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGludGVycHJldGVyIHZlcnNpb25zLCB3ZQorICAgKiAgIGludHJvZHVjZSBhIGxpc3Qgb2YgZGVmaW5pdGlvbnMsIGtpbmRseSBwcm92aWRlZCBieSBHcmVnIEhpdGNoY29jay4KICAgICoKICAgICogICBfQmktTGV2ZWwgUmVuZGVyaW5nXwogICAgKgpAQCAtMzAzLDYgKzMwMSwzMSBAQAogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICoKICAgICogQHNlY3Rpb246CisgICAqICAgb3Rfc3ZnX2RyaXZlcgorICAgKgorICAgKiBAdGl0bGU6CisgICAqICAgVGhlIFNWRyBkcml2ZXIKKyAgICoKKyAgICogQGFic3RyYWN0OgorICAgKiAgIENvbnRyb2xsaW5nIHRoZSBleHRlcm5hbCByZW5kZXJpbmcgb2YgT1QtU1ZHIGdseXBocy4KKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEJ5IGRlZmF1bHQsIEZyZWVUeXBlIGNhbiBvbmx5IGxvYWQgdGhlICdTVkd+JyB0YWJsZSBvZiBPcGVuVHlwZSBmb250cworICAgKiAgIGlmIGNvbmZpZ3VyYXRpb24gbWFjcm8gYEZUX0NPTkZJR19PUFRJT05fU1ZHYCBpcyBkZWZpbmVkLiAgVG8gbWFrZSBpdAorICAgKiAgIHJlbmRlciBTVkcgZ2x5cGhzLCBhbiBleHRlcm5hbCBTVkcgcmVuZGVyaW5nIGxpYnJhcnkgaXMgbmVlZGVkLiAgQWxsCisgICAqICAgZGV0YWlscyBvbiB0aGUgaW50ZXJmYWNlIGJldHdlZW4gRnJlZVR5cGUgYW5kIHRoZSBleHRlcm5hbCBsaWJyYXJ5CisgICAqICAgdmlhIGZ1bmN0aW9uIGhvb2tzIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uIEBzdmdfZm9udHMuCisgICAqCisgICAqICAgVGhlIE9ULVNWRyBkcml2ZXIncyBtb2R1bGUgbmFtZSBpcyAnb3Qtc3ZnJzsgaXQgc3VwcG9ydHMgYSBzaW5nbGUKKyAgICogICBwcm9wZXJ0eSBjYWxsZWQgQHN2Zy1ob29rcywgZG9jdW1lbnRlZCBiZWxvdyBpbiB0aGUgQHByb3BlcnRpZXMKKyAgICogICBzZWN0aW9uLgorICAgKgorICAgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAc2VjdGlvbjoKICAgICogICBwcm9wZXJ0aWVzCiAgICAqCiAgICAqIEB0aXRsZToKQEAgLTc5Nyw2ICs4MjAsMzkgQEAKICAgICogICAyLjUKICAgICovCiAKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBwcm9wZXJ0eToKKyAgICogICBzdmctaG9va3MKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFNldCB1cCB0aGUgaW50ZXJmYWNlIGJldHdlZW4gRnJlZVR5cGUgYW5kIGFuIGV4dGVybiBTVkcgcmVuZGVyaW5nCisgICAqICAgbGlicmFyeSBsaWtlICdsaWJyc3ZnJy4gIEFsbCBkZXRhaWxzIG9uIHRoZSBmdW5jdGlvbiBob29rcyBjYW4gYmUKKyAgICogICBmb3VuZCBpbiBzZWN0aW9uIEBzdmdfZm9udHMuCisgICAqCisgICAqIEBleGFtcGxlOgorICAgKiAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBjb2RlIGV4cGVjdHMgdGhhdCB0aGUgZm91ciBob29rIGZ1bmN0aW9ucworICAgKiAgIGBzdmdfKmAgYXJlIGRlZmluZWQgZWxzZXdoZXJlLiAgRXJyb3IgaGFuZGxpbmcgaXMgb21pdHRlZCwgdG9vLgorICAgKgorICAgKiAgIGBgYAorICAgKiAgICAgRlRfTGlicmFyeSAgbGlicmFyeTsKKyAgICogICAgIFNWR19SZW5kZXJlckhvb2tzICBob29rcyA9IHsKKyAgICogICAgICAgICAgICAgICAgICAgICAgICAgIChTVkdfTGliX0luaXRfRnVuYylzdmdfaW5pdCwKKyAgICogICAgICAgICAgICAgICAgICAgICAgICAgIChTVkdfTGliX0ZyZWVfRnVuYylzdmdfZnJlZSwKKyAgICogICAgICAgICAgICAgICAgICAgICAgICAgIChTVkdfTGliX1JlbmRlcl9GdW5jKXN2Z19yZW5kZXIsCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAoU1ZHX0xpYl9QcmVzZXRfU2xvdF9GdW5jKXN2Z19wcmVzZXRfc2xvdCB9OworICAgKgorICAgKgorICAgKiAgICAgRlRfSW5pdF9GcmVlVHlwZSggJmxpYnJhcnkgKTsKKyAgICoKKyAgICogICAgIEZUX1Byb3BlcnR5X1NldCggbGlicmFyeSwgIm90LXN2ZyIsCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdmctaG9va3MiLCAmaG9va3MgKTsKKyAgICogICBgYGAKKyAgICoKKyAgICogQHNpbmNlOgorICAgKiAgIDIuMTIKKyAgICovCisKIAogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvZnRlcnJkZWYuaCBiL2luY2x1ZGUvZnJlZXR5cGUvZnRlcnJkZWYuaAppbmRleCA2ZTljNGNjLi5kNTliM2NjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyZGVmLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9mdGVycmRlZi5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZXMgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTEwMSw2ICsxMDEsOCBAQAogICAgICAgICAgICAgICAgICJ0b28gbWFueSBoaW50cyIgKQogICBGVF9FUlJPUkRFRl8oIEludmFsaWRfUGl4ZWxfU2l6ZSwgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsCiAgICAgICAgICAgICAgICAgImludmFsaWQgcGl4ZWwgc2l6ZSIgKQorICBGVF9FUlJPUkRFRl8oIEludmFsaWRfU1ZHX0RvY3VtZW50LCAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsCisgICAgICAgICAgICAgICAgImludmFsaWQgU1ZHIGRvY3VtZW50IiApCiAKICAgLyogaGFuZGxlIGVycm9ycyAqLwogCkBAIC0yMzQsNiArMjM2LDggQEAKICAgICAgICAgICAgICAgICAiZm91bmQgRkRFRiBvciBJREVGIG9wY29kZSBpbiBnbHlmIGJ5dGVjb2RlIiApCiAgIEZUX0VSUk9SREVGXyggTWlzc2luZ19CaXRtYXAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5RCwKICAgICAgICAgICAgICAgICAibWlzc2luZyBiaXRtYXAgaW4gc3RyaWtlIiApCisgIEZUX0VSUk9SREVGXyggTWlzc2luZ19TVkdfSG9va3MsICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5RSwKKyAgICAgICAgICAgICAgICAiU1ZHIGhvb2tzIGhhdmUgbm90IGJlZW4gc2V0IiApCiAKICAgLyogQ0ZGLCBDSUQsIGFuZCBUeXBlIDEgZXJyb3JzICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaCBiL2luY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaAppbmRleCAxNTE5NDFkLi4xNWVmM2Y3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZSBoYW5kbGluZyAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMjksNyArMjksNyBAQAogICAgKgogICAgKiBAZGVzY3JpcHRpb246CiAgICAqICAgVGhlIGhlYWRlciBmaWxlIGBmdGVycm9ycy5oYCAod2hpY2ggaXMgYXV0b21hdGljYWxseSBpbmNsdWRlZCBieQotICAgKiAgIGBmcmVldHlwZS5oYCBkZWZpbmVzIHRoZSBoYW5kbGluZyBvZiBGcmVlVHlwZSdzIGVudW1lcmF0aW9uCisgICAqICAgYGZyZWV0eXBlLmhgKSBkZWZpbmVzIHRoZSBoYW5kbGluZyBvZiBGcmVlVHlwZSdzIGVudW1lcmF0aW9uCiAgICAqICAgY29uc3RhbnRzLiAgSXQgY2FuIGFsc28gYmUgdXNlZCB0byBnZW5lcmF0ZSBlcnJvciBtZXNzYWdlIHN0cmluZ3MKICAgICogICB3aXRoIGEgc21hbGwgbWFjcm8gdHJpY2sgZXhwbGFpbmVkIGJlbG93LgogICAgKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9mdGZudGZtdC5oIGIvaW5jbHVkZS9mcmVldHlwZS9mdGZudGZtdC5oCmluZGV4IDhlNjhhNGEuLmMwMDE4ZmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvZnRmbnRmbXQuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0Zm50Zm10LmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBTdXBwb3J0IGZ1bmN0aW9ucyBmb3IgZm9udCBmb3JtYXRzLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvZnRnYXNwLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0Z2FzcC5oCmluZGV4IDc2YzQ1ZWIuLmQ1ZjE5YWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvZnRnYXNwLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9mdGdhc3AuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEFjY2VzcyBvZiBUcnVlVHlwZSdzICdnYXNwJyB0YWJsZSAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9mdGdseXBoLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0Z2x5cGguaAppbmRleCAyNmIzMmVkLi40NjU4ODk1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Z2x5cGguaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0Z2x5cGguaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyB0byBoYW5kbGUgZ2x5cGhzIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0xMjYsNyArMTI2LDcgQEAKICAgICoKICAgICogQGRlc2NyaXB0aW9uOgogICAgKiAgIEEgaGFuZGxlIHRvIGFuIG9iamVjdCB1c2VkIHRvIG1vZGVsIGEgYml0bWFwIGdseXBoIGltYWdlLiAgVGhpcyBpcyBhCi0gICAqICAgc3ViLWNsYXNzIG9mIEBGVF9HbHlwaCwgYW5kIGEgcG9pbnRlciB0byBARlRfQml0bWFwR2x5cGhSZWMuCisgICAqICAgJ3N1Yi1jbGFzcycgb2YgQEZUX0dseXBoLCBhbmQgYSBwb2ludGVyIHRvIEBGVF9CaXRtYXBHbHlwaFJlYy4KICAgICovCiAgIHR5cGVkZWYgc3RydWN0IEZUX0JpdG1hcEdseXBoUmVjXyogIEZUX0JpdG1hcEdseXBoOwogCkBAIC0xNDIsNyArMTQyLDcgQEAKICAgICoKICAgICogQGZpZWxkczoKICAgICogICByb290IDo6Ci0gICAqICAgICBUaGUgcm9vdCBARlRfR2x5cGggZmllbGRzLgorICAgKiAgICAgVGhlIHJvb3QgZmllbGRzIG9mIEBGVF9HbHlwaC4KICAgICoKICAgICogICBsZWZ0IDo6CiAgICAqICAgICBUaGUgbGVmdC1zaWRlIGJlYXJpbmcsIGkuZS4sIHRoZSBob3Jpem9udGFsIGRpc3RhbmNlIGZyb20gdGhlCkBAIC0xODEsNyArMTgxLDcgQEAKICAgICoKICAgICogQGRlc2NyaXB0aW9uOgogICAgKiAgIEEgaGFuZGxlIHRvIGFuIG9iamVjdCB1c2VkIHRvIG1vZGVsIGFuIG91dGxpbmUgZ2x5cGggaW1hZ2UuICBUaGlzIGlzIGEKLSAgICogICBzdWItY2xhc3Mgb2YgQEZUX0dseXBoLCBhbmQgYSBwb2ludGVyIHRvIEBGVF9PdXRsaW5lR2x5cGhSZWMuCisgICAqICAgJ3N1Yi1jbGFzcycgb2YgQEZUX0dseXBoLCBhbmQgYSBwb2ludGVyIHRvIEBGVF9PdXRsaW5lR2x5cGhSZWMuCiAgICAqLwogICB0eXBlZGVmIHN0cnVjdCBGVF9PdXRsaW5lR2x5cGhSZWNfKiAgRlRfT3V0bGluZUdseXBoOwogCkBAIC0yMjQsNiArMjI0LDkyIEBACiAKICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAqCisgICAqIEB0eXBlOgorICAgKiAgIEZUX1N2Z0dseXBoCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGhhbmRsZSB0byBhbiBvYmplY3QgdXNlZCB0byBtb2RlbCBhbiBTVkcgZ2x5cGguICBUaGlzIGlzIGEKKyAgICogICAnc3ViLWNsYXNzJyBvZiBARlRfR2x5cGgsIGFuZCBhIHBvaW50ZXIgdG8gQEZUX1N2Z0dseXBoUmVjLgorICAgKgorICAgKiBAc2luY2U6CisgICAqICAgMi4xMgorICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfU3ZnR2x5cGhSZWNfKiAgRlRfU3ZnR2x5cGg7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHN0cnVjdDoKKyAgICogICBGVF9TdmdHbHlwaFJlYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBzdHJ1Y3R1cmUgdXNlZCBmb3IgT1QtU1ZHIGdseXBocy4gIFRoaXMgaXMgYSAnc3ViLWNsYXNzJyBvZgorICAgKiAgIEBGVF9HbHlwaFJlYy4KKyAgICoKKyAgICogQGZpZWxkczoKKyAgICogICByb290IDo6CisgICAqICAgICBUaGUgcm9vdCBARlRfR2x5cGhSZWMgZmllbGRzLgorICAgKgorICAgKiAgIHN2Z19kb2N1bWVudCA6OgorICAgKiAgICAgQSBwb2ludGVyIHRvIHRoZSBTVkcgZG9jdW1lbnQuCisgICAqCisgICAqICAgc3ZnX2RvY3VtZW50X2xlbmd0aCA6OgorICAgKiAgICAgVGhlIGxlbmd0aCBvZiBgc3ZnX2RvY3VtZW50YC4KKyAgICoKKyAgICogICBnbHlwaF9pbmRleCA6OgorICAgKiAgICAgVGhlIGluZGV4IG9mIHRoZSBnbHlwaCB0byBiZSByZW5kZXJlZC4KKyAgICoKKyAgICogICBtZXRyaWNzIDo6CisgICAqICAgICBBIG1ldHJpY3Mgb2JqZWN0IHN0b3JpbmcgdGhlIHNpemUgaW5mb3JtYXRpb24uCisgICAqCisgICAqICAgdW5pdHNfcGVyX0VNIDo6CisgICAqICAgICBUaGUgc2l6ZSBvZiB0aGUgRU0gc3F1YXJlLgorICAgKgorICAgKiAgIHN0YXJ0X2dseXBoX2lkIDo6CisgICAqICAgICBUaGUgZmlyc3QgZ2x5cGggSUQgaW4gdGhlIGdseXBoIHJhbmdlIGNvdmVyZWQgYnkgdGhpcyBkb2N1bWVudC4KKyAgICoKKyAgICogICBlbmRfZ2x5cGhfaWQgOjoKKyAgICogICAgIFRoZSBsYXN0IGdseXBoIElEIGluIHRoZSBnbHlwaCByYW5nZSBjb3ZlcmVkIGJ5IHRoaXMgZG9jdW1lbnQuCisgICAqCisgICAqICAgdHJhbnNmb3JtIDo6CisgICAqICAgICBBIDJ4MiB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggdG8gYXBwbHkgdG8gdGhlIGdseXBoIHdoaWxlIHJlbmRlcmluZworICAgKiAgICAgaXQuCisgICAqCisgICAqICAgZGVsdGEgOjoKKyAgICogICAgIFRyYW5zbGF0aW9uIHRvIGFwcGx5IHRvIHRoZSBnbHlwaCB3aGlsZSByZW5kZXJpbmcuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIFRoZSBHbHlwaCBNYW5hZ2VtZW50IEFQSSByZXF1aXJlcyBARlRfR2x5cGggb3IgaXRzICdzdWItY2xhc3MnIHRvIGhhdmUKKyAgICogICBhbGwgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBjb21wbGV0ZWx5IGRlZmluZSB0aGUgZ2x5cGgncyByZW5kZXJpbmcuCisgICAqICAgT3V0bGluZS1iYXNlZCBnbHlwaHMgY2FuIGRpcmVjdGx5IGFwcGx5IHRyYW5zZm9ybWF0aW9ucyB0byB0aGUgb3V0bGluZQorICAgKiAgIGJ1dCB0aGlzIGlzIG5vdCBwb3NzaWJsZSBmb3IgYW4gU1ZHIGRvY3VtZW50IHRoYXQgaGFzbid0IGJlZW4gcGFyc2VkLgorICAgKiAgIFRoZXJlZm9yZSwgdGhlIHRyYW5zZm9ybWF0aW9uIGlzIHN0b3JlZCBhbG9uZyB3aXRoIHRoZSBkb2N1bWVudC4gIEluCisgICAqICAgdGhlIGFic2VuY2Ugb2YgYSAnVmlld0JveCcgb3IgJ1dpZHRoJy8nSGVpZ2h0JyBhdHRyaWJ1dGUsIHRoZSBzaXplIG9mCisgICAqICAgdGhlIFZpZXdQb3J0IHNob3VsZCBiZSBhc3N1bWVkIHRvIGJlICd1bml0c19wZXJfRU0nLgorICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX1N2Z0dseXBoUmVjXworICB7CisgICAgRlRfR2x5cGhSZWMgIHJvb3Q7CisKKyAgICBGVF9CeXRlKiAgc3ZnX2RvY3VtZW50OworICAgIEZUX1VMb25nICBzdmdfZG9jdW1lbnRfbGVuZ3RoOworCisgICAgRlRfVUludCAgZ2x5cGhfaW5kZXg7CisKKyAgICBGVF9TaXplX01ldHJpY3MgIG1ldHJpY3M7CisgICAgRlRfVVNob3J0ICAgICAgICB1bml0c19wZXJfRU07CisKKyAgICBGVF9VU2hvcnQgIHN0YXJ0X2dseXBoX2lkOworICAgIEZUX1VTaG9ydCAgZW5kX2dseXBoX2lkOworCisgICAgRlRfTWF0cml4ICB0cmFuc2Zvcm07CisgICAgRlRfVmVjdG9yICBkZWx0YTsKKworICB9IEZUX1N2Z0dseXBoUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCiAgICAqIEBmdW5jdGlvbjoKICAgICogICBGVF9OZXdfR2x5cGgKICAgICoKQEAgLTI2OSw3ICszNTUsNyBAQAogICAgKgogICAgKiBAb3V0cHV0OgogICAgKiAgIGFnbHlwaCA6OgotICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIGdseXBoIG9iamVjdC4KKyAgICogICAgIEEgaGFuZGxlIHRvIHRoZSBnbHlwaCBvYmplY3QuICBgTlVMTGAgaW4gY2FzZSBvZiBlcnJvci4KICAgICoKICAgICogQHJldHVybjoKICAgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgpAQCAtMjk5LDcgKzM4NSw3IEBACiAgICAqCiAgICAqIEBvdXRwdXQ6CiAgICAqICAgdGFyZ2V0IDo6Ci0gICAqICAgICBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGdseXBoIG9iamVjdC4gIDB+aW4gY2FzZSBvZiBlcnJvci4KKyAgICogICAgIEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgZ2x5cGggb2JqZWN0LiAgYE5VTExgIGluIGNhc2Ugb2YgZXJyb3IuCiAgICAqCiAgICAqIEByZXR1cm46CiAgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KQEAgLTMyNyw3ICs0MTMsNyBAQAogICAgKgogICAgKiAgIGRlbHRhIDo6CiAgICAqICAgICBBIHBvaW50ZXIgdG8gYSAyZCB2ZWN0b3IgdG8gYXBwbHkuICBDb29yZGluYXRlcyBhcmUgZXhwcmVzc2VkIGluCi0gICAqICAgICAxLzY0dGggb2YgYSBwaXhlbC4KKyAgICogICAgIDEvNjQgb2YgYSBwaXhlbC4KICAgICoKICAgICogQHJldHVybjoKICAgICogICBGcmVlVHlwZSBlcnJvciBjb2RlIChpZiBub3QgMCwgdGhlIGdseXBoIGZvcm1hdCBpcyBub3Qgc2NhbGFibGUpLgpAQCAtNDE0LDcgKzUwMCw3IEBACiAgICAqIEBvdXRwdXQ6CiAgICAqICAgYWNib3ggOjoKICAgICogICAgIFRoZSBnbHlwaCBjb29yZGluYXRlIGJvdW5kaW5nIGJveC4gIENvb3JkaW5hdGVzIGFyZSBleHByZXNzZWQgaW4KLSAgICogICAgIDEvNjR0aCBvZiBwaXhlbHMgaWYgaXQgaXMgZ3JpZC1maXR0ZWQuCisgICAqICAgICAxLzY0IG9mIHBpeGVscyBpZiBpdCBpcyBncmlkLWZpdHRlZC4KICAgICoKICAgICogQG5vdGU6CiAgICAqICAgQ29vcmRpbmF0ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBnbHlwaCBvcmlnaW4sIHVzaW5nIHRoZSB5fnVwd2FyZHMKQEAgLTQ5OCw5ICs1ODQsOSBAQAogICAgKiAgIFRoZSBnbHlwaCBpbWFnZSBpcyB0cmFuc2xhdGVkIHdpdGggdGhlIGBvcmlnaW5gIHZlY3RvciBiZWZvcmUKICAgICogICByZW5kZXJpbmcuCiAgICAqCi0gICAqICAgVGhlIGZpcnN0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gQEZUX0dseXBoIGhhbmRsZSwgdGhhdCB3aWxsIGJlCisgICAqICAgVGhlIGZpcnN0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gQEZUX0dseXBoIGhhbmRsZSB0aGF0IHdpbGwgYmUKICAgICogICBfcmVwbGFjZWRfIGJ5IHRoaXMgZnVuY3Rpb24gKHdpdGggbmV3bHkgYWxsb2NhdGVkIGRhdGEpLiAgVHlwaWNhbGx5LAotICAgKiAgIHlvdSB3b3VsZCB1c2UgKG9taXR0aW5nIGVycm9yIGhhbmRsaW5nKToKKyAgICogICB5b3Ugd291bGQgZG8gc29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyAob21pdHRpbmcgZXJyb3IgaGFuZGxpbmcpLgogICAgKgogICAgKiAgIGBgYAogICAgKiAgICAgRlRfR2x5cGggICAgICAgIGdseXBoOwpAQCAtNTE3LDcgKzYwMyw3IEBACiAgICAqICAgICBpZiAoIGdseXBoLT5mb3JtYXQgIT0gRlRfR0xZUEhfRk9STUFUX0JJVE1BUCApCiAgICAqICAgICB7CiAgICAqICAgICAgIGVycm9yID0gRlRfR2x5cGhfVG9fQml0bWFwKCAmZ2x5cGgsIEZUX1JFTkRFUl9NT0RFX05PUk1BTCwKLSAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSApOworICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSApOwogICAgKiAgICAgICBpZiAoIGVycm9yICkgLy8gYGdseXBoJyB1bmNoYW5nZWQKICAgICogICAgICAgICAuLi4KICAgICogICAgIH0KQEAgLTUzMiw3ICs2MTgsNyBAQAogICAgKiAgICAgRlRfRG9uZV9HbHlwaCggZ2x5cGggKTsKICAgICogICBgYGAKICAgICoKLSAgICogICBIZXJlIGlzIGFub3RoZXIgZXhhbXBsZSwgYWdhaW4gd2l0aG91dCBlcnJvciBoYW5kbGluZzoKKyAgICogICBIZXJlIGlzIGFub3RoZXIgZXhhbXBsZSwgYWdhaW4gd2l0aG91dCBlcnJvciBoYW5kbGluZy4KICAgICoKICAgICogICBgYGAKICAgICogICAgIEZUX0dseXBoICBnbHlwaHNbTUFYX0dMWVBIU10KQEAgLTU4NSw3ICs2NzEsNyBAQAogICAgKgogICAgKiBAaW5wdXQ6CiAgICAqICAgZ2x5cGggOjoKLSAgICogICAgIEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgZ2x5cGggb2JqZWN0LgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBnbHlwaCBvYmplY3QuICBDYW4gYmUgYE5VTExgLgogICAgKi8KICAgRlRfRVhQT1JUKCB2b2lkICkKICAgRlRfRG9uZV9HbHlwaCggRlRfR2x5cGggIGdseXBoICk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Z3h2YWwuaCBiL2luY2x1ZGUvZnJlZXR5cGUvZnRneHZhbC5oCmluZGV4IDIxYmJiZGUuLmU4ZGU5YTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvZnRneHZhbC5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvZnRneHZhbC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgQVBJIGZvciB2YWxpZGF0aW5nIFRydWVUeXBlR1gvQUFUIHRhYmxlcyAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CiAgKiBNYXNhdGFrZSBZQU1BVE8sIFJlZGhhdCBLLkssCiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9mdGd6aXAuaCBiL2luY2x1ZGUvZnJlZXR5cGUvZnRnemlwLmgKaW5kZXggYmE4MmJhYi4uNDQzZWMyOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9mdGd6aXAuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0Z3ppcC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgR3ppcC1jb21wcmVzc2VkIHN0cmVhbSBzdXBwb3J0LgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oIGIvaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmgKaW5kZXggODg1MzNiOC4uMmU4ZTY3MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmgKQEAgLTUsNyArNSw3IEBACiAgKiAgIEZyZWVUeXBlIGdseXBoIGltYWdlIGZvcm1hdHMgYW5kIGRlZmF1bHQgcmFzdGVyIGludGVyZmFjZQogICogICAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtNDAxLDExICs0MDEsMTEgQEAKICAgICogICAgIGluZm9ybWF0aW9uLgogICAgKgogICAgKiAgIEZUX09VVExJTkVfT1ZFUkxBUCA6OgotICAgKiAgICAgVGhpcyBmbGFnIGluZGljYXRlcyB0aGF0IHRoaXMgb3V0bGluZSBjb250YWlucyBvdmVybGFwcGluZyBjb250cm91cnMKLSAgICogICAgIGFuZCB0aGUgYW50aS1hbGlhc2VkIHJlbmRlcmVyIHNob3VsZCBwZXJmb3JtIG92ZXJzYW1wbGluZyB0bwotICAgKiAgICAgbWl0aWdhdGUgcG9zc2libGUgYXJ0aWZhY3RzLiAgVGhpcyBmbGFnIHNob3VsZCBfbm90XyBiZSBzZXQgZm9yCi0gICAqICAgICB3ZWxsIGRlc2lnbmVkIGdseXBocyB3aXRob3V0IG92ZXJsYXBzIGJlY2F1c2UgaXQgcXVhZHJ1cGxlcyB0aGUKLSAgICogICAgIHJlbmRlcmluZyB0aW1lLgorICAgKiAgICAgW1NpbmNlIDIuMTAuM10gVGhpcyBmbGFnIGluZGljYXRlcyB0aGF0IHRoaXMgb3V0bGluZSBjb250YWlucworICAgKiAgICAgb3ZlcmxhcHBpbmcgY29udG91cnMgYW5kIHRoZSBhbnRpLWFsaWFzZWQgcmVuZGVyZXIgc2hvdWxkIHBlcmZvcm0KKyAgICogICAgIG92ZXJzYW1wbGluZyB0byBtaXRpZ2F0ZSBwb3NzaWJsZSBhcnRpZmFjdHMuICBUaGlzIGZsYWcgc2hvdWxkIF9ub3RfCisgICAqICAgICBiZSBzZXQgZm9yIHdlbGwgZGVzaWduZWQgZ2x5cGhzIHdpdGhvdXQgb3ZlcmxhcHMgYmVjYXVzZSBpdCBxdWFkcnVwbGVzCisgICAqICAgICB0aGUgcmVuZGVyaW5nIHRpbWUuCiAgICAqCiAgICAqICAgRlRfT1VUTElORV9ISUdIX1BSRUNJU0lPTiA6OgogICAgKiAgICAgVGhpcyBmbGFnIGluZGljYXRlcyB0aGF0IHRoZSBzY2FuLWxpbmUgY29udmVydGVyIHNob3VsZCB0cnkgdG8KQEAgLTc0MSw2ICs3NDEsMTAgQEAKICAgICogICAgIGNvbnRvdXJzLiAgU29tZSBUeXBlfjEgZm9udHMsIGxpa2UgdGhvc2UgaW4gdGhlIEhlcnNoZXkgZmFtaWx5LAogICAgKiAgICAgY29udGFpbiBnbHlwaHMgaW4gdGhpcyBmb3JtYXQuICBUaGVzZSBhcmUgZGVzY3JpYmVkIGFzIEBGVF9PdXRsaW5lLAogICAgKiAgICAgYnV0IEZyZWVUeXBlIGlzbid0IGN1cnJlbnRseSBjYXBhYmxlIG9mIHJlbmRlcmluZyB0aGVtIGNvcnJlY3RseS4KKyAgICoKKyAgICogICBGVF9HTFlQSF9GT1JNQVRfU1ZHIDo6CisgICAqICAgICBbU2luY2UgMi4xMl0gVGhlIGdseXBoIGlzIHJlcHJlc2VudGVkIGJ5IGFuIFNWRyBkb2N1bWVudCBpbiB0aGUKKyAgICogICAgICdTVkd+JyB0YWJsZS4KICAgICovCiAgIHR5cGVkZWYgZW51bSAgRlRfR2x5cGhfRm9ybWF0XwogICB7CkBAIC03NDksNyArNzUzLDggQEAKICAgICBGVF9JTUFHRV9UQUcoIEZUX0dMWVBIX0ZPUk1BVF9DT01QT1NJVEUsICdjJywgJ28nLCAnbScsICdwJyApLAogICAgIEZUX0lNQUdFX1RBRyggRlRfR0xZUEhfRk9STUFUX0JJVE1BUCwgICAgJ2InLCAnaScsICd0JywgJ3MnICksCiAgICAgRlRfSU1BR0VfVEFHKCBGVF9HTFlQSF9GT1JNQVRfT1VUTElORSwgICAnbycsICd1JywgJ3QnLCAnbCcgKSwKLSAgICBGVF9JTUFHRV9UQUcoIEZUX0dMWVBIX0ZPUk1BVF9QTE9UVEVSLCAgICdwJywgJ2wnLCAnbycsICd0JyApCisgICAgRlRfSU1BR0VfVEFHKCBGVF9HTFlQSF9GT1JNQVRfUExPVFRFUiwgICAncCcsICdsJywgJ28nLCAndCcgKSwKKyAgICBGVF9JTUFHRV9UQUcoIEZUX0dMWVBIX0ZPUk1BVF9TVkcsICAgICAgICdTJywgJ1YnLCAnRycsICcgJyApCiAKICAgfSBGVF9HbHlwaF9Gb3JtYXQ7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvZnRpbmNyZW0uaCBiL2luY2x1ZGUvZnJlZXR5cGUvZnRpbmNyZW0uaAppbmRleCAyMjliOTQ3Li4yZDRmNWRlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0aW5jcmVtLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9mdGluY3JlbS5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgaW5jcmVtZW50YWwgbG9hZGluZyAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9mdGxjZGZpbC5oIGIvaW5jbHVkZS9mcmVldHlwZS9mdGxjZGZpbC5oCmluZGV4IDE4ZTI1NDQuLmQzNzIzZTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvZnRsY2RmaWwuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0bGNkZmlsLmgKQEAgLTUsNyArNSw3IEBACiAgKiAgIEZyZWVUeXBlIEFQSSBmb3IgY29sb3IgZmlsdGVyaW5nIG9mIHN1YnBpeGVsIGJpdG1hcCBnbHlwaHMKICAqICAgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTEzNywxMSArMTM3LDExIEBACiAgICAqCiAgICAqICAgRlRfTENEX0ZJTFRFUl9ERUZBVUxUIDo6CiAgICAqICAgICBUaGlzIGlzIGEgYmV2ZWxlZCwgbm9ybWFsaXplZCwgYW5kIGNvbG9yLWJhbGFuY2VkIGZpdmUtdGFwIGZpbHRlcgotICAgKiAgICAgd2l0aCB3ZWlnaHRzIG9mIFsweDA4IDB4NEQgMHg1NiAweDREIDB4MDhdIGluIDEvMjU2dGggdW5pdHMuCisgICAqICAgICB3aXRoIHdlaWdodHMgb2YgWzB4MDggMHg0RCAweDU2IDB4NEQgMHgwOF0gaW4gMS8yNTYgdW5pdHMuCiAgICAqCiAgICAqICAgRlRfTENEX0ZJTFRFUl9MSUdIVCA6OgogICAgKiAgICAgdGhpcyBpcyBhIGJveHksIG5vcm1hbGl6ZWQsIGFuZCBjb2xvci1iYWxhbmNlZCB0aHJlZS10YXAgZmlsdGVyIHdpdGgKLSAgICogICAgIHdlaWdodHMgb2YgWzB4MDAgMHg1NSAweDU2IDB4NTUgMHgwMF0gaW4gMS8yNTZ0aCB1bml0cy4KKyAgICogICAgIHdlaWdodHMgb2YgWzB4MDAgMHg1NSAweDU2IDB4NTUgMHgwMF0gaW4gMS8yNTYgdW5pdHMuCiAgICAqCiAgICAqICAgRlRfTENEX0ZJTFRFUl9MRUdBQ1kgOjoKICAgICogICBGVF9MQ0RfRklMVEVSX0xFR0FDWTEgOjoKQEAgLTIyNiw3ICsyMjYsNyBAQAogICAgKgogICAgKiAgIHdlaWdodHMgOjoKICAgICogICAgIEEgcG9pbnRlciB0byBhbiBhcnJheTsgdGhlIGZ1bmN0aW9uIGNvcGllcyB0aGUgZmlyc3QgZml2ZSBieXRlcyBhbmQKLSAgICogICAgIHVzZXMgdGhlbSB0byBzcGVjaWZ5IHRoZSBmaWx0ZXIgd2VpZ2h0cyBpbiAxLzI1NnRoIHVuaXRzLgorICAgKiAgICAgdXNlcyB0aGVtIHRvIHNwZWNpZnkgdGhlIGZpbHRlciB3ZWlnaHRzIGluIDEvMjU2IHVuaXRzLgogICAgKgogICAgKiBAcmV0dXJuOgogICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0bGlzdC5oIGIvaW5jbHVkZS9mcmVldHlwZS9mdGxpc3QuaAppbmRleCA1NWYwMTU5Li5iNTUzMTMxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0bGlzdC5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvZnRsaXN0LmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBHZW5lcmljIGxpc3Qgc3VwcG9ydCBmb3IgRnJlZVR5cGUgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvZnRsb2dnaW5nLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0bG9nZ2luZy5oCmluZGV4IGE1NThiODUuLjIyNDZkYzggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvZnRsb2dnaW5nLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9mdGxvZ2dpbmcuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEFkZGl0aW9uYWwgZGVidWdnaW5nIEFQSXMuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9mdGx6dy5oIGIvaW5jbHVkZS9mcmVldHlwZS9mdGx6dy5oCmluZGV4IGZjZTFjOWMuLmFkZmQxNzIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvZnRsencuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0bHp3LmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBMWlctY29tcHJlc3NlZCBzdHJlYW0gc3VwcG9ydC4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0bWFjLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0bWFjLmgKaW5kZXggNjA3YWY5Yi4uYTkxZTM4ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9mdG1hYy5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvZnRtYWMuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEFkZGl0aW9uYWwgTWFjLXNwZWNpZmljIEFQSS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIEp1c3QgdmFuIFJvc3N1bSwgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvZnRtbS5oIGIvaW5jbHVkZS9mcmVldHlwZS9mdG1tLmgKaW5kZXggMzI1NzllOS4uZTM4MWVmMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9mdG1tLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9mdG1tLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBNdWx0aXBsZSBNYXN0ZXIgZm9udCBpbnRlcmZhY2UgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTQ3LDYgKzQ3LDkgQEAKICAgICogICBNTSBmb250cywgb3RoZXJzIHdpbGwgd29yayB3aXRoIGFsbCB0aHJlZSB0eXBlcy4gIFRoZXkgYXJlIHNpbWlsYXIKICAgICogICBlbm91Z2ggdGhhdCBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlIG1ha2VzIHNlbnNlLgogICAgKgorICAgKiAgIEZvciBBZG9iZSBNTSBmb250cywgbWFjcm8gQEZUX0lTX1NGTlQgcmV0dXJucyBmYWxzZS4gIEZvciBHWCBhbmQKKyAgICogICBPcGVuVHlwZSB2YXJpYXRpb24gZm9udHMsIGl0IHJldHVybnMgdHJ1ZS4KKyAgICoKICAgICovCiAKIApAQCAtMzk1LDYgKzM5OCwxMCBAQAogICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCiAgICAqCiAgICAqIEBub3RlOgorICAgKiAgIFRoZSBkZXNpZ24gY29vcmRpbmF0ZXMgYXJlIDE2LjE2IGZyYWN0aW9uYWwgdmFsdWVzIGZvciBUcnVlVHlwZSBHWCBhbmQKKyAgICogICBPcGVuVHlwZSB2YXJpYXRpb24gZm9udHMuICBGb3IgQWRvYmUgTU0gZm9udHMsIHRoZSB2YWx1ZXMgYXJlCisgICAqICAgaW50ZWdlcnMuCisgICAqCiAgICAqICAgW1NpbmNlIDIuOC4xXSBUbyByZXNldCBhbGwgYXhlcyB0byB0aGUgZGVmYXVsdCB2YWx1ZXMsIGNhbGwgdGhlCiAgICAqICAgZnVuY3Rpb24gd2l0aCBgbnVtX2Nvb3Jkc2Agc2V0IHRvIHplcm8gYW5kIGBjb29yZHNgIHNldCB0byBgTlVMTGAuCiAgICAqICAgW1NpbmNlIDIuOV0gJ0RlZmF1bHQgdmFsdWVzJyBtZWFucyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG5hbWVkCkBAIC00MzcsNiArNDQ0LDExIEBACiAgICAqIEByZXR1cm46CiAgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KICAgICoKKyAgICogQG5vdGU6CisgICAqICAgVGhlIGRlc2lnbiBjb29yZGluYXRlcyBhcmUgMTYuMTYgZnJhY3Rpb25hbCB2YWx1ZXMgZm9yIFRydWVUeXBlIEdYIGFuZAorICAgKiAgIE9wZW5UeXBlIHZhcmlhdGlvbiBmb250cy4gIEZvciBBZG9iZSBNTSBmb250cywgdGhlIHZhbHVlcyBhcmUKKyAgICogICBpbnRlZ2Vycy4KKyAgICoKICAgICogQHNpbmNlOgogICAgKiAgIDIuNy4xCiAgICAqLwpAQCAtNDY4LDkgKzQ4MCw5IEBACiAgICAqICAgICB0aGUgbnVtYmVyIG9mIGF4ZXMsIHVzZSBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIHJlbWFpbmluZyBheGVzLgogICAgKgogICAgKiAgIGNvb3JkcyA6OgotICAgKiAgICAgVGhlIGRlc2lnbiBjb29yZGluYXRlcyBhcnJheSAoZWFjaCBlbGVtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxLjAKLSAgICogICAgIGZvciBBZG9iZSBNTSBmb250cywgYW5kIGJldHdlZW4gLTEuMCBhbmQgMS4wIGZvciBUcnVlVHlwZSBHWCBhbmQKLSAgICogICAgIE9wZW5UeXBlIHZhcmlhdGlvbiBmb250cykuCisgICAqICAgICBUaGUgZGVzaWduIGNvb3JkaW5hdGVzIGFycmF5LiAgRWFjaCBlbGVtZW50IGlzIGEgMTYuMTYgZnJhY3Rpb25hbAorICAgKiAgICAgdmFsdWUgYW5kIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxLjAgZm9yIEFkb2JlIE1NIGZvbnRzLCBhbmQgYmV0d2VlbgorICAgKiAgICAgLTEuMCBhbmQgMS4wIGZvciBUcnVlVHlwZSBHWCBhbmQgT3BlblR5cGUgdmFyaWF0aW9uIGZvbnRzLgogICAgKgogICAgKiBAcmV0dXJuOgogICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCkBAIC01MTUsNyArNTI3LDcgQEAKICAgICoKICAgICogQG91dHB1dDoKICAgICogICBjb29yZHMgOjoKLSAgICogICAgIFRoZSBub3JtYWxpemVkIGJsZW5kIGNvb3JkaW5hdGVzIGFycmF5LgorICAgKiAgICAgVGhlIG5vcm1hbGl6ZWQgYmxlbmQgY29vcmRpbmF0ZXMgYXJyYXkgKGFzIDE2LjE2IGZyYWN0aW9uYWwgdmFsdWVzKS4KICAgICoKICAgICogQHJldHVybjoKICAgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9mdG1vZGFwaS5oIGIvaW5jbHVkZS9mcmVldHlwZS9mdG1vZGFwaS5oCmluZGV4IGI3N2QzNTYuLmM4ZjBjMmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvZnRtb2RhcGkuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kYXBpLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBtb2R1bGVzIHB1YmxpYyBpbnRlcmZhY2UgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvZnRtb2RlcnIuaCBiL2luY2x1ZGUvZnJlZXR5cGUvZnRtb2RlcnIuaAppbmRleCBiNDE3Y2Q1Li5jOGM4OTJkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kZXJyLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9mdG1vZGVyci5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgbW9kdWxlIGVycm9yIG9mZnNldHMgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvZnRvdHZhbC5oIGIvaW5jbHVkZS9mcmVldHlwZS9mdG90dmFsLmgKaW5kZXggMDBmOTcyNy4uMDExYmRmYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9mdG90dmFsLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9mdG90dmFsLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBBUEkgZm9yIHZhbGlkYXRpbmcgT3BlblR5cGUgdGFibGVzIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0b3V0bG4uaCBiL2luY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oCmluZGV4IDZiYjVmODAuLjU0NDM0YjIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oCkBAIC01LDcgKzUsNyBAQAogICogICBTdXBwb3J0IGZvciB0aGUgRlRfT3V0bGluZSB0eXBlIHVzZWQgdG8gc3RvcmUgZ2x5cGggc2hhcGVzIG9mCiAgKiAgIG1vc3Qgc2NhbGFibGUgZm9udCBmb3JtYXRzIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0xMDksMTEgKzEwOSwxMyBAQAogICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCiAgICAqCiAgICAqIEBub3RlOgotICAgKiAgIEEgY29udG91ciB0aGF0IGNvbnRhaW5zIGEgc2luZ2xlIHBvaW50IG9ubHkgaXMgcmVwcmVzZW50ZWQgYnkgYSAnbW92ZQotICAgKiAgIHRvJyBvcGVyYXRpb24gZm9sbG93ZWQgYnkgJ2xpbmUgdG8nIHRvIHRoZSBzYW1lIHBvaW50LiAgSW4gbW9zdCBjYXNlcywKLSAgICogICBpdCBpcyBiZXN0IHRvIGZpbHRlciB0aGlzIG91dCBiZWZvcmUgdXNpbmcgdGhlIG91dGxpbmUgZm9yIHN0cm9raW5nCi0gICAqICAgcHVycG9zZXMgKG90aGVyd2lzZSBpdCB3b3VsZCByZXN1bHQgaW4gYSB2aXNpYmxlIGRvdCB3aGVuIHJvdW5kIGNhcHMKLSAgICogICBhcmUgdXNlZCkuCisgICAqICAgRGVnZW5lcmF0ZSBjb250b3Vycywgc2VnbWVudHMsIGFuZCBCZXppZXIgYXJjcyBtYXkgYmUgcmVwb3J0ZWQuICBJbgorICAgKiAgIG1vc3QgY2FzZXMsIGl0IGlzIGJlc3QgdG8gZmlsdGVyIHRoZXNlIG91dCBiZWZvcmUgdXNpbmcgdGhlIG91dGxpbmUKKyAgICogICBmb3Igc3Ryb2tpbmcgb3Igb3RoZXIgcGF0aCBtb2RpZmljYXRpb24gcHVycG9zZXMgKHdoaWNoIG1heSBjYXVzZQorICAgKiAgIGRlZ2VuZXJhdGUgc2VnbWVudHMgdG8gYmVjb21lIG5vbi1kZWdlbnJhdGUgYW5kIHZpc2libGUsIGxpa2Ugd2hlbgorICAgKiAgIHN0cm9rZSBjYXBzIGFyZSB1c2VkIG9yIHRoZSBwYXRoIGlzIG90aGVyd2lzZSBvdXRzZXQpLiAgU29tZSBnbHlwaAorICAgKiAgIG91dGxpbmVzIG1heSBjb250YWluIGRlbGliZXJhdGUgZGVnZW5lcmF0ZSBzaW5nbGUgcG9pbnRzIGZvciBtYXJrCisgICAqICAgYXR0YWNoZW1lbnQuCiAgICAqCiAgICAqICAgU2ltaWxhcmx5LCB0aGUgZnVuY3Rpb24gcmV0dXJucyBzdWNjZXNzIGZvciBhbiBlbXB0eSBvdXRsaW5lIGFsc28KICAgICogICAoZG9pbmcgbm90aGluZywgdGhpcyBpcywgbm90IGNhbGxpbmcgYW55IGVtaXR0ZXIpOyBpZiBuZWNlc3NhcnksIHlvdQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9mdHBhcmFtcy5oIGIvaW5jbHVkZS9mcmVldHlwZS9mdHBhcmFtcy5oCmluZGV4IDA0YTNmNDQuLjZhOWYyNDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvZnRwYXJhbXMuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0cGFyYW1zLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBBUEkgZm9yIHBvc3NpYmxlIEZUX1BhcmFtZXRlciB0YWdzIChzcGVjaWZpY2F0aW9uIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTExNSw2ICsxMTUsMjEgQEAKICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAqCiAgICAqIEBlbnVtOgorICAgKiAgIEZUX1BBUkFNX1RBR19JR05PUkVfU0JJWAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSB0YWcgZm9yIEBGVF9QYXJhbWV0ZXIgdG8gbWFrZSBARlRfT3Blbl9GYWNlIGlnbm9yZSBhbiAnc2JpeCcgdGFibGUKKyAgICogICB3aGlsZSBsb2FkaW5nIGEgZm9udC4gIFVzZSB0aGlzIGlmIEBGVF9GQUNFX0ZMQUdfU0JJWCBpcyBzZXQgYW5kIHlvdQorICAgKiAgIHdhbnQgdG8gYWNjZXNzIHRoZSBvdXRsaW5lIGdseXBocyBpbiB0aGUgZm9udC4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX1BBUkFNX1RBR19JR05PUkVfU0JJWCBcCisgICAgICAgICAgRlRfTUFLRV9UQUcoICdpJywgJ3MnLCAnYicsICd4JyApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGVudW06CiAgICAqICAgRlRfUEFSQU1fVEFHX0xDRF9GSUxURVJfV0VJR0hUUwogICAgKgogICAgKiBAZGVzY3JpcHRpb246CmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0cGZyLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0cGZyLmgKaW5kZXggZmJkYjE0Yy4uNzExMWQ0MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9mdHBmci5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvZnRwZnIuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIEFQSSBmb3IgYWNjZXNzaW5nIFBGUi1zcGVjaWZpYyBkYXRhIChzcGVjaWZpY2F0aW9uIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTE2MSw3ICsxNjEsNyBAQAogICAgKgogICAgKiBAbm90ZToKICAgICogICAgWW91IGNhbiB1c2UgdGhlIGB4X3NjYWxlYCBvciBgeV9zY2FsZWAgcmVzdWx0cyBvZiBARlRfR2V0X1BGUl9NZXRyaWNzCi0gICAqICAgIHRvIGNvbnZlcnQgdGhlIGFkdmFuY2UgdG8gZGV2aWNlIHN1YnBpeGVscyAoaS5lLiwgMS82NHRoIG9mIHBpeGVscykuCisgICAqICAgIHRvIGNvbnZlcnQgdGhlIGFkdmFuY2UgdG8gZGV2aWNlIHN1YnBpeGVscyAoaS5lLiwgMS82NCBvZiBwaXhlbHMpLgogICAgKi8KICAgRlRfRVhQT1JUKCBGVF9FcnJvciApCiAgIEZUX0dldF9QRlJfQWR2YW5jZSggRlRfRmFjZSAgIGZhY2UsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0cmVuZGVyLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0cmVuZGVyLmgKaW5kZXggNDhkNDg5ZC4uYTg1NzZkYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9mdHJlbmRlci5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvZnRyZW5kZXIuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIHJlbmRlcmVyIG1vZHVsZXMgcHVibGljIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9mdHNpemVzLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0c2l6ZXMuaAppbmRleCAyMjM2NjM5Li43YmZiMWFlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0c2l6ZXMuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0c2l6ZXMuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIHNpemUgb2JqZWN0cyBtYW5hZ2VtZW50IChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0c25hbWVzLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0c25hbWVzLmgKaW5kZXggYzdmNjU4MS4uOWQ1ZDIyYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9mdHNuYW1lcy5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvZnRzbmFtZXMuaApAQCAtNyw3ICs3LDcgQEAKICAqCiAgKiAgIFRoaXMgaXMgX25vdF8gdXNlZCB0byByZXRyaWV2ZSBnbHlwaCBuYW1lcyEKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0c3Ryb2tlLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0c3Ryb2tlLmgKaW5kZXggODhiMmE4YS4uYjNkOTA4MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9mdHN0cm9rZS5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvZnRzdHJva2UuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIHBhdGggc3Ryb2tlciAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMjkzLDcgKzI5Myw3IEBACiAgICAqCiAgICAqICAgbWl0ZXJfbGltaXQgOjoKICAgICogICAgIFRoZSBtYXhpbXVtIHJlY2lwcm9jYWwgc2luZSBvZiBoYWxmLWFuZ2xlIGF0IHRoZSBtaXRlciBqb2luLAotICAgKiAgICAgZXhwcmVzc2VkIGFzIDE2LjE2IGZpeGVkIHBvaW50IHZhbHVlLgorICAgKiAgICAgZXhwcmVzc2VkIGFzIDE2LjE2IGZpeGVkLXBvaW50IHZhbHVlLgogICAgKgogICAgKiBAbm90ZToKICAgICogICBUaGUgYHJhZGl1c2AgaXMgZXhwcmVzc2VkIGluIHRoZSBzYW1lIHVuaXRzIGFzIHRoZSBvdXRsaW5lCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0c3ludGguaCBiL2luY2x1ZGUvZnJlZXR5cGUvZnRzeW50aC5oCmluZGV4IDg2MWRjYjUuLjVkMTk2OTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvZnRzeW50aC5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvZnRzeW50aC5oCkBAIC01LDcgKzUsNyBAQAogICogICBGcmVlVHlwZSBzeW50aGVzaXppbmcgY29kZSBmb3IgZW1ib2xkZW5pbmcgYW5kIHNsYW50aW5nCiAgKiAgIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC02OCwxMCArNjgsMTkgQEAKICAgRlRfRVhQT1JUKCB2b2lkICkKICAgRlRfR2x5cGhTbG90X0VtYm9sZGVuKCBGVF9HbHlwaFNsb3QgIHNsb3QgKTsKIAotICAvKiBTbGFudCBhbiBvdXRsaW5lIGdseXBoIHRvIHRoZSByaWdodCBieSBhYm91dCAxMiBkZWdyZWVzLiAqLworICAvKiBTbGFudCBhbiBvdXRsaW5lIGdseXBoIHRvIHRoZSByaWdodCBieSBhYm91dCAxMiBkZWdyZWVzLiAgICAgICAgICAgICAgKi8KICAgRlRfRVhQT1JUKCB2b2lkICkKICAgRlRfR2x5cGhTbG90X09ibGlxdWUoIEZUX0dseXBoU2xvdCAgc2xvdCApOwogCisgIC8qIFNsYW50IGFuIG91dGxpbmUgZ2x5cGggYnkgYSBnaXZlbiBzaW5lIG9mIGFuIGFuZ2xlLiAgWW91IGNhbiBhcHBseSAgICAqLworICAvKiBzbGFudCBhbG9uZyBlaXRoZXIgeC0gb3IgeS1heGlzIGJ5IGNob29zaW5nIGEgY29ycmVzcG9uZGluZyBub24temVybyAgKi8KKyAgLyogYXJndW1lbnQuICBJZiBib3RoIHNsYW50cyBhcmUgbm9uLXplcm8sIHNvbWUgYWZmaW5lIHRyYW5zZm9ybWF0aW9uICAgICovCisgIC8qIHdpbGwgcmVzdWx0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9HbHlwaFNsb3RfU2xhbnQoIEZUX0dseXBoU2xvdCAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgICAgIHhzbGFudCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgICAgIHlzbGFudCApOworCiAgIC8qICovCiAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9mdHN5c3RlbS5oIGIvaW5jbHVkZS9mcmVldHlwZS9mdHN5c3RlbS5oCmluZGV4IGU1YWJiODUuLmE5OTViMDcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvZnRzeXN0ZW0uaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0c3lzdGVtLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBsb3ctbGV2ZWwgc3lzdGVtIGludGVyZmFjZSBkZWZpbml0aW9uIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0yMjksNyArMjI5LDggQEAKICAgICogICAgIEEgaGFuZGxlIHRvIHRoZSBzb3VyY2Ugc3RyZWFtLgogICAgKgogICAgKiAgIG9mZnNldCA6OgotICAgKiAgICAgVGhlIG9mZnNldCBvZiByZWFkIGluIHN0cmVhbSAoYWx3YXlzIGZyb20gc3RhcnQpLgorICAgKiAgICAgVGhlIG9mZnNldCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgc3RyZWFtIHRvIHNlZWsgdG8gaWYgdGhpcyBpcyBhIHNlZWsKKyAgICogICAgIG9wZXJhdGlvbiAoc2VlIG5vdGUpLgogICAgKgogICAgKiAgIGJ1ZmZlciA6OgogICAgKiAgICAgVGhlIGFkZHJlc3Mgb2YgdGhlIHJlYWQgYnVmZmVyLgpAQCAtMjQxLDggKzI0MiwxMyBAQAogICAgKiAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgZWZmZWN0aXZlbHkgcmVhZCBieSB0aGUgc3RyZWFtLgogICAgKgogICAgKiBAbm90ZToKLSAgICogICBUaGlzIGZ1bmN0aW9uIG1pZ2h0IGJlIGNhbGxlZCB0byBwZXJmb3JtIGEgc2VlayBvciBza2lwIG9wZXJhdGlvbiB3aXRoCi0gICAqICAgYSBgY291bnRgIG9mfjAuICBBIG5vbi16ZXJvIHJldHVybiB2YWx1ZSB0aGVuIGluZGljYXRlcyBhbiBlcnJvci4KKyAgICogICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgc2VlayAqb3IqIGEgcmVhZCBvcGVyYXRpb24gZGVwZW5kaW5nIG9uIHRoZQorICAgKiAgIGFyZ3VtZW50IHZhbHVlcy4gIElmIGBjb3VudGAgaXMgemVybywgdGhlIG9wZXJhdGlvbiBpcyBhIHNlZWsgdG8KKyAgICogICBgb2Zmc2V0YCBieXRlcy4gIElmIGBjb3VudGAgaXMgPn4wLCB0aGUgb3BlcmF0aW9uIGlzIGEgcmVhZCBvZiBgY291bnRgCisgICAqICAgYnl0ZXMgZnJvbSB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgc3RyZWFtLCBhbmQgdGhlIGBvZmZzZXRgIHZhbHVlCisgICAqICAgc2hvdWxkIGJlIGlnbm9yZWQuCisgICAqCisgICAqICAgRm9yIHNlZWsgb3BlcmF0aW9ucywgYSBub24temVybyByZXR1cm4gdmFsdWUgaW5kaWNhdGVzIGFuIGVycm9yLgogICAgKgogICAgKi8KICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0dHJpZ29uLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2Z0dHJpZ29uLmgKaW5kZXggZGJlN2IwZC4uMjk0OTgxYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9mdHRyaWdvbi5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvZnR0cmlnb24uaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIHRyaWdvbm9tZXRyaWMgZnVuY3Rpb25zIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0dHlwZXMuaCBiL2luY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oCmluZGV4IDY5OWJkMDAuLjViMTA5ZjAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgc2ltcGxlIHR5cGVzIGRlZmluaXRpb25zIChzcGVjaWZpY2F0aW9uIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTQ1LDcgKzQ1LDEwIEBACiAgICAqIEBkZXNjcmlwdGlvbjoKICAgICogICBUaGlzIHNlY3Rpb24gY29udGFpbnMgdGhlIGJhc2ljIGRhdGEgdHlwZXMgZGVmaW5lZCBieSBGcmVlVHlwZX4yLAogICAgKiAgIHJhbmdpbmcgZnJvbSBzaW1wbGUgc2NhbGFyIHR5cGVzIHRvIGJpdG1hcCBkZXNjcmlwdG9ycy4gIE1vcmUKLSAgICogICBmb250LXNwZWNpZmljIHN0cnVjdHVyZXMgYXJlIGRlZmluZWQgaW4gYSBkaWZmZXJlbnQgc2VjdGlvbi4KKyAgICogICBmb250LXNwZWNpZmljIHN0cnVjdHVyZXMgYXJlIGRlZmluZWQgaW4gYSBkaWZmZXJlbnQgc2VjdGlvbi4gIE5vdGUKKyAgICogICB0aGF0IEZyZWVUeXBlIGRvZXMgbm90IHVzZSBmbG9hdGluZy1wb2ludCBkYXRhIHR5cGVzLiAgRnJhY3Rpb25hbAorICAgKiAgIHZhbHVlcyBhcmUgcmVwcmVzZW50ZWQgYnkgZml4ZWQtcG9pbnQgaW50ZWdlcnMsIHdpdGggbG93ZXIgYml0cworICAgKiAgIHN0b3JpbmcgdGhlIGZyYWN0aW9uYWwgcGFydC4KICAgICoKICAgICogQG9yZGVyOgogICAgKiAgIEZUX0J5dGUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvZnR3aW5mbnQuaCBiL2luY2x1ZGUvZnJlZXR5cGUvZnR3aW5mbnQuaAppbmRleCBmMzBmNDQ3Li43YjcwMWVhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2Z0d2luZm50LmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9mdHdpbmZudC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgQVBJIGZvciBhY2Nlc3NpbmcgV2luZG93cyBmbnQtc3BlY2lmaWMgZGF0YS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2F1dG9oaW50LmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2F1dG9oaW50LmgKaW5kZXggMDE1ODVmNS4uYmY5YzhiNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9hdXRvaGludC5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvYXV0b2hpbnQuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEhpZ2gtbGV2ZWwgJ2F1dG9oaW50JyBtb2R1bGUtc3BlY2lmaWMgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZm90eXBlcy5oIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZvdHlwZXMuaAppbmRleCBhOTFkZDU1Li41MGQ1MzUzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZm90eXBlcy5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2Zmb3R5cGVzLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBCYXNpYyBPcGVuVHlwZS9DRkYgb2JqZWN0IHR5cGUgZGVmaW5pdGlvbnMgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaCBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaAppbmRleCA5OWU4ZDQxLi5jMjUyMTc2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oCkBAIC01LDcgKzUsNyBAQAogICogICBCYXNpYyBPcGVuVHlwZS9DRkYgdHlwZSBkZWZpbml0aW9ucyBhbmQgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uCiAgKiAgIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTMxNSw3ICszMTUsNyBAQAogICAgIC8qIFRoZSBub3JtYWwgc3RhY2sgdGhlbiBwb2ludHMgdG8gdGhlc2UgdmFsdWVzIGluc3RlYWQgb2YgdGhlIERJQ1QgICAqLwogICAgIC8qIGJlY2F1c2UgYWxsIG90aGVyIG9wZXJhdG9ycyBpbiBQcml2YXRlIERJQ1QgY2xlYXIgdGhlIHN0YWNrLiAgICAgICAqLwogICAgIC8qIGBibGVuZF9zdGFjaycgY291bGQgYmUgY2xlYXJlZCBhdCBlYWNoIG9wZXJhdG9yIG90aGVyIHRoYW4gYmxlbmQuICAqLwotICAgIC8qIEJsZW5kZWQgdmFsdWVzIGFyZSBzdG9yZWQgYXMgNS1ieXRlIGZpeGVkIHBvaW50IHZhbHVlcy4gICAgICAgICAgICAqLworICAgIC8qIEJsZW5kZWQgdmFsdWVzIGFyZSBzdG9yZWQgYXMgNS1ieXRlIGZpeGVkLXBvaW50IHZhbHVlcy4gICAgICAgICAgICAqLwogCiAgICAgRlRfQnl0ZSogIGJsZW5kX3N0YWNrOyAgICAvKiBiYXNlIG9mIHN0YWNrIGFsbG9jYXRpb24gICAgICovCiAgICAgRlRfQnl0ZSogIGJsZW5kX3RvcDsgICAgICAvKiBmaXJzdCBlbXB0eSBzbG90ICAgICAgICAgICAgICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NvbXBpbGVyLW1hY3Jvcy5oIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jb21waWxlci1tYWNyb3MuaAppbmRleCBkOGI2MWIzLi43ODgzMzE3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NvbXBpbGVyLW1hY3Jvcy5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY29tcGlsZXItbWFjcm9zLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBDb21waWxlci1zcGVjaWZpYyBtYWNybyBkZWZpbml0aW9ucyB1c2VkIGludGVybmFsbHkgYnkgRnJlZVR5cGUuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMzYsNiArMzYsMTkgQEAKICMgIGVuZGlmCiAjZW5kaWYKIAorICAvKiBOZXdlciBjb21waWxlcnMgd2FybiBmb3IgZmFsbC10aHJvdWdoIGNhc2Ugc3RhdGVtZW50cy4gKi8KKyNpZm5kZWYgRkFMTF9USFJPVUdICisjICBpZiAoIGRlZmluZWQoIF9fU1REQ19WRVJTSU9OX18gKSAmJiBfX1NURENfVkVSU0lPTl9fID4gMjAxNzEwTCApIHx8IFwKKyAgICAgICggZGVmaW5lZCggX19jcGx1c3BsdXMgKSAmJiBfX2NwbHVzcGx1cyA+IDIwMTQwMkwgKQorIyAgICBkZWZpbmUgRkFMTF9USFJPVUdIICBbW19fZmFsbHRocm91Z2hfX11dCisjICBlbGlmICggZGVmaW5lZCggX19HTlVDX18gKSAmJiBfX0dOVUNfXyA+PSA3ICkgICAgICAgICAgfHwgXAorICAgICAgICAoIGRlZmluZWQoIF9fY2xhbmdfXyApICYmIF9fY2xhbmdfbWFqb3JfXyA+PSAxMCApCisjICAgIGRlZmluZSBGQUxMX1RIUk9VR0ggIF9fYXR0cmlidXRlX18oKCBfX2ZhbGx0aHJvdWdoX18gKSkKKyMgIGVsc2UKKyMgICAgZGVmaW5lIEZBTExfVEhST1VHSCAgKCAodm9pZCkwICkKKyMgIGVuZGlmCisjZW5kaWYKKwogICAvKgogICAgKiBXaGVuIGRlZmluaW5nIGEgbWFjcm8gdGhhdCBleHBhbmRzIHRvIGEgbm9uLXRyaXZpYWwgQyBzdGF0ZW1lbnQsIHVzZQogICAgKiBGVF9CRUdJTl9TVE1OVCBhbmQgRlRfRU5EX1NUTU5UIHRvIGVuY2xvc2UgdGhlIG1hY3JvJ3MgYm9keS4gIFRoaXMKQEAgLTI1OCw3ICsyNzEsNyBAQAogICAgKiBUbyBleHBvcnQgYSB2YXJpYWJsZSwgdXNlIGBGVF9FWFBPUlRfVkFSYC4KICAgICovCiAKLSAgLyogU2VlIGBmcmVldHlwZS9jb25maWcvY29tcGlsZXJfbWFjcm9zLmhgIGZvciB0aGUgYEZUX0VYUE9SVGAgZGVmaW5pdGlvbiAqLworICAvKiBTZWUgYGZyZWV0eXBlL2NvbmZpZy9wdWJsaWMtbWFjcm9zLmhgIGZvciB0aGUgYEZUX0VYUE9SVGAgZGVmaW5pdGlvbiAqLwogI2RlZmluZSBGVF9FWFBPUlRfREVGKCB4ICkgIEZUX0ZVTkNUSU9OX0RFRklOSVRJT04oIHggKQogCiAgIC8qCkBAIC0yOTksMTAgKzMxMiwxMiBAQAogI2RlZmluZSBGVF9DQUxMQkFDS19ERUYoIHggKSAgc3RhdGljICB4CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoIF9faTM4Nl9fICkKKyNpZiBkZWZpbmVkKCBfX0dOVUNfXyApICYmIGRlZmluZWQoIF9faTM4Nl9fICkKICNkZWZpbmUgRlRfQ09NUEFSRV9ERUYoIHggKSAgRlRfQ0FMTEJBQ0tfREVGKCB4ICkgX19hdHRyaWJ1dGVfXygoIGNkZWNsICkpCi0jZWxpZiBkZWZpbmVkKCBfTV9JWDg2ICkKKyNlbGlmIGRlZmluZWQoIF9NU0NfVkVSICkgJiYgZGVmaW5lZCggX01fSVg4NiApCiAjZGVmaW5lIEZUX0NPTVBBUkVfREVGKCB4ICkgIEZUX0NBTExCQUNLX0RFRiggeCApIF9fY2RlY2wKKyNlbGlmIGRlZmluZWQoIF9fV0FUQ09NQ19fICkgJiYgX19XQVRDT01DX18gPj0gMTI0MAorI2RlZmluZSBGVF9DT01QQVJFX0RFRiggeCApICBGVF9DQUxMQkFDS19ERUYoIHggKSBfX3dhdGNhbGwKICNlbHNlCiAjZGVmaW5lIEZUX0NPTVBBUkVfREVGKCB4ICkgIEZUX0NBTExCQUNLX0RFRiggeCApCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oCmluZGV4IGY4OGUwNTUuLmQxYmFhMzkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEFyaXRobWV0aWMgY29tcHV0YXRpb25zIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0yNzgsNiArMjc4LDQwIEBACiAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgYyApOwogCiAKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9NdWxBZGRGaXgKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIENvbXB1dGUgYChzWzBdICogZlswXSArIHNbMV0gKiBmWzFdICsgLi4uKSAvIDB4MTAwMDBgLCB3aGVyZSBgc1tuXWAgaXMKKyAgICogICB1c3VhbGx5IGEgMTYuMTYgc2NhbGFyLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgcyA6OgorICAgKiAgICAgVGhlIGFycmF5IG9mIHNjYWxhcnMuCisgICAqICAgZiA6OgorICAgKiAgICAgVGhlIGFycmF5IG9mIGZhY3RvcnMuCisgICAqICAgY291bnQgOjoKKyAgICogICAgIFRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgYXJyYXkuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgVGhlIHJlc3VsdCBvZiBgKHNbMF0gKiBmWzBdICsgc1sxXSAqIGZbMV0gKyAuLi4pIC8gMHgxMDAwMGAuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIFRoaXMgZnVuY3Rpb24gaXMgY3VycmVudGx5IHVzZWQgZm9yIHRoZSBzY2FsZWQgZGVsdGEgY29tcHV0YXRpb24gb2YKKyAgICogICB2YXJpYXRpb24gc3RvcmVzLiAgSXQgaW50ZXJuYWxseSB1c2VzIDY0LWJpdCBkYXRhIHR5cGVzIHdoZW4KKyAgICogICBhdmFpbGFibGUsIG90aGVyd2lzZSBpdCBlbXVsYXRlcyA2NC1iaXQgbWF0aCBieSB1c2luZyAzMi1iaXQKKyAgICogICBvcGVyYXRpb25zLCB3aGljaCBwcm9kdWNlIGEgY29ycmVjdCByZXN1bHQgYnV0IG1vc3QgbGlrZWx5IGF0IGEgc2xvd2VyCisgICAqICAgcGVyZm9ybWFuY2UgaW4gY29tcGFyaXNvbiB0byB0aGUgaW1wbGVtZW50YXRpb24gYmFzZSBvbiBgaW50NjRfdGAuCisgICAqCisgICAqLworICBGVF9CQVNFKCBGVF9JbnQzMiApCisgIEZUX011bEFkZEZpeCggRlRfRml4ZWQqICBzLAorICAgICAgICAgICAgICAgIEZUX0ludDMyKiAgZiwKKyAgICAgICAgICAgICAgICBGVF9VSW50ICAgIGNvdW50ICk7CisKKwogICAvKgogICAgKiBBIHZhcmlhbnQgb2YgRlRfTWF0cml4X011bHRpcGx5IHdoaWNoIHNjYWxlcyBpdHMgcmVzdWx0IGFmdGVyd2FyZHMuICBUaGUKICAgICogaWRlYSBpcyB0aGF0IGJvdGggYGEnIGFuZCBgYicgYXJlIHNjYWxlZCBieSBmYWN0b3JzIG9mIDEwIHNvIHRoYXQgdGhlCkBAIC00MDgsNiArNDQyLDE5IEBACiAKICNlbmRpZgogCisjZWxpZiBkZWZpbmVkKCBfX1dBVENPTUNfXyApICYmIGRlZmluZWQoIF9fMzg2X18gKQorCisgIGV4dGVybiBfX2lubGluZSBGVF9JbnQzMgorICBGVF9NU0JfaTM4NiggRlRfVUludDMyICB4ICk7CisKKyNwcmFnbWEgYXV4IEZUX01TQl9pMzg2ID0gICAgICAgICAgICAgXAorICAiYnNyIGVheCwgZWF4IiAgICAgICAgICAgICAgICAgICAgICBcCisgIF9fcGFybSBbX19lYXhdIF9fbm9tZW1vcnkgICAgICAgICAgIFwKKyAgX192YWx1ZSBbX19lYXhdICAgICAgICAgICAgICAgICAgICAgXAorICBfX21vZGlmeSBfX2V4YWN0IFtfX2VheF0gX19ub21lbW9yeTsKKworI2RlZmluZSBGVF9NU0IoIHggKSAgRlRfTVNCX2kzODYoIHggKQorCiAjZWxpZiBkZWZpbmVkKCBfX0RFQ0MgKSB8fCBkZWZpbmVkKCBfX0RFQ0NYWCApCiAKICNpbmNsdWRlIDxidWlsdGlucy5oPgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaAppbmRleCA1ZThkOTI5Li40ZTAxM2JhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIERlYnVnZ2luZyBhbmQgbG9nZ2luZyBjb21wb25lbnQgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkcnYuaCBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkcnYuaAppbmRleCAwZGIzMjNkLi5mNzg5MTJjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZHJ2LmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRydi5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgaW50ZXJuYWwgZm9udCBkcml2ZXIgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Z2xvYWRyLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Z2xvYWRyLmgKaW5kZXggZmVhOTMxYy4uMzZlNTUwOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGdsb2Fkci5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRnbG9hZHIuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRoZSBGcmVlVHlwZSBnbHlwaCBsb2FkZXIgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oCmluZGV4IGUyMGQ5NDkuLjVlYjFkMjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUaGUgRnJlZVR5cGUgbWVtb3J5IG1hbmFnZW1lbnQgbWFjcm9zIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZwogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTk2LDE1ICs5NiwxNSBAQAogCiAjaWZkZWYgRlRfREVCVUdfTUVNT1JZCiAKLSAgRlRfQkFTRSggY29uc3QgY2hhciogKSAgX2Z0X2RlYnVnX2ZpbGU7Ci0gIEZUX0JBU0UoIGxvbmcgKSAgICAgICAgIF9mdF9kZWJ1Z19saW5lbm87CisgIEZUX0JBU0UoIGNvbnN0IGNoYXIqICkgIGZ0X2RlYnVnX2ZpbGVfOworICBGVF9CQVNFKCBsb25nICkgICAgICAgICBmdF9kZWJ1Z19saW5lbm9fOwogCi0jZGVmaW5lIEZUX0RFQlVHX0lOTkVSKCBleHAgKSAgKCBfZnRfZGVidWdfZmlsZSAgID0gX19GSUxFX18sIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9mdF9kZWJ1Z19saW5lbm8gPSBfX0xJTkVfXywgXAorI2RlZmluZSBGVF9ERUJVR19JTk5FUiggZXhwICkgICggZnRfZGVidWdfZmlsZV8gICA9IF9fRklMRV9fLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdF9kZWJ1Z19saW5lbm9fID0gX19MSU5FX18sIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHApICkKIAotI2RlZmluZSBGVF9BU1NJR05QX0lOTkVSKCBwLCBleHAgKSAgKCBfZnRfZGVidWdfZmlsZSAgID0gX19GSUxFX18sIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Z0X2RlYnVnX2xpbmVubyA9IF9fTElORV9fLCBcCisjZGVmaW5lIEZUX0FTU0lHTlBfSU5ORVIoIHAsIGV4cCApICAoIGZ0X2RlYnVnX2ZpbGVfICAgPSBfX0ZJTEVfXywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdF9kZWJ1Z19saW5lbm9fID0gX19MSU5FX18sIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQVNTSUdOUCggcCwgZXhwICkgKQogCiAjZWxzZSAvKiAhRlRfREVCVUdfTUVNT1JZICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bW10eXBlcy5oIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1tdHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2M2NmMzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1tdHlwZXMuaApAQCAtMCwwICsxLDg1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIGZ0bW10eXBlcy5oCisgKgorICogICBPcGVuVHlwZSBWYXJpYXRpb25zIHR5cGUgZGVmaW5pdGlvbnMgZm9yIGludGVybmFsIHVzZQorICogICB3aXRoIHRoZSBtdWx0aS1tYXN0ZXJzIHNlcnZpY2UgKHNwZWNpZmljYXRpb24pLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMi0yMDIzIGJ5CisgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBXZXJuZXIgTGVtYmVyZywgR2VvcmdlIFdpbGxpYW1zLCBhbmQKKyAqIERvbWluaWsgUsO2dHRzY2hlcy4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCisgKiBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorICogbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCisgKiB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKKyAqIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKyAqCisgKi8KKworCisjaWZuZGVmIEZUTU1UWVBFU19IXworI2RlZmluZSBGVE1NVFlQRVNfSF8KKworRlRfQkVHSU5fSEVBREVSCisKKworICB0eXBlZGVmIEZUX0ludDMyICBGVF9JdGVtVmFyRGVsdGE7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgIEdYX0l0ZW1WYXJEYXRhUmVjXworICB7CisgICAgRlRfVUludCAgICAgICAgICAgIGl0ZW1Db3VudDsgICAgICAgLyogbnVtYmVyIG9mIGRlbHRhIHNldHMgcGVyIGl0ZW0gICAgKi8KKyAgICBGVF9VSW50ICAgICAgICAgICAgcmVnaW9uSWR4Q291bnQ7ICAvKiBudW1iZXIgb2YgcmVnaW9uIGluZGljZXMgICAgICAgICAqLworICAgIEZUX1VJbnQqICAgICAgICAgICByZWdpb25JbmRpY2VzOyAgIC8qIGFycmF5IG9mIGByZWdpb25Db3VudCcgaW5kaWNlczsgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdGhlc2UgaW5kZXggYHZhclJlZ2lvbkxpc3QnICAgICAgKi8KKyAgICBGVF9JdGVtVmFyRGVsdGEqICAgZGVsdGFTZXQ7ICAgICAgICAvKiBhcnJheSBvZiBgaXRlbUNvdW50JyBkZWx0YXMgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHVzZSBgaW5uZXJJbmRleCcgZm9yIHRoaXMgYXJyYXkgICovCisKKyAgfSBHWF9JdGVtVmFyRGF0YVJlYywgKkdYX0l0ZW1WYXJEYXRhOworCisKKyAgLyogY29udHJpYnV0aW9uIG9mIG9uZSBheGlzIHRvIGEgcmVnaW9uICovCisgIHR5cGVkZWYgc3RydWN0ICBHWF9BeGlzQ29vcmRzUmVjXworICB7CisgICAgRlRfRml4ZWQgIHN0YXJ0Q29vcmQ7CisgICAgRlRfRml4ZWQgIHBlYWtDb29yZDsgICAgICAvKiB6ZXJvIG1lYW5zIG5vIGVmZmVjdCAoZmFjdG9yID0gMSkgKi8KKyAgICBGVF9GaXhlZCAgZW5kQ29vcmQ7CisKKyAgfSBHWF9BeGlzQ29vcmRzUmVjLCAqR1hfQXhpc0Nvb3JkczsKKworCisgIHR5cGVkZWYgc3RydWN0ICBHWF9WYXJSZWdpb25SZWNfCisgIHsKKyAgICBHWF9BeGlzQ29vcmRzICBheGlzTGlzdDsgICAgICAgICAgICAgICAvKiBhcnJheSBvZiBheGlzQ291bnQgcmVjb3JkcyAqLworCisgIH0gR1hfVmFyUmVnaW9uUmVjLCAqR1hfVmFyUmVnaW9uOworCisKKyAgLyogaXRlbSB2YXJpYXRpb24gc3RvcmUgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEdYX0l0ZW1WYXJTdG9yZVJlY18KKyAgeworICAgIEZUX1VJbnQgICAgICAgICBkYXRhQ291bnQ7CisgICAgR1hfSXRlbVZhckRhdGEgIHZhckRhdGE7ICAgICAgICAgICAgLyogYXJyYXkgb2YgZGF0YUNvdW50IHJlY29yZHM7ICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHVzZSBgb3V0ZXJJbmRleCcgZm9yIHRoaXMgYXJyYXkgKi8KKyAgICBGVF9VU2hvcnQgICAgIGF4aXNDb3VudDsKKyAgICBGVF9VSW50ICAgICAgIHJlZ2lvbkNvdW50OyAgICAgICAgICAvKiB0b3RhbCBudW1iZXIgb2YgcmVnaW9ucyBkZWZpbmVkICovCisgICAgR1hfVmFyUmVnaW9uICB2YXJSZWdpb25MaXN0OworCisgIH0gR1hfSXRlbVZhclN0b3JlUmVjLCAqR1hfSXRlbVZhclN0b3JlOworCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIEdYX0RlbHRhU2V0SWR4TWFwUmVjXworICB7CisgICAgRlRfVUxvbmcgIG1hcENvdW50OworICAgIEZUX1VJbnQqICBvdXRlckluZGV4OyAgICAgICAgICAgICAgIC8qIGluZGljZXMgdG8gaXRlbSB2YXIgZGF0YSAqLworICAgIEZUX1VJbnQqICBpbm5lckluZGV4OyAgICAgICAgICAgICAgIC8qIGluZGljZXMgdG8gZGVsdGEgc2V0ICAgICAqLworCisgIH0gR1hfRGVsdGFTZXRJZHhNYXBSZWMsICpHWF9EZWx0YVNldElkeE1hcDsKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBGVE1NVFlQRVNfSF8gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oCmluZGV4IGU1MmEyNmEuLjI4YmM5YjYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRoZSBGcmVlVHlwZSBwcml2YXRlIGJhc2UgY2xhc3NlcyAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtNDE4LDcgKzQxOCw4IEBACiAgICAqICAgICBpbml0aWFsaXppbmcgdGhlIGdseXBoIHNsb3QuCiAgICAqLwogCi0jZGVmaW5lIEZUX0dMWVBIX09XTl9CSVRNQVAgIDB4MVUKKyNkZWZpbmUgRlRfR0xZUEhfT1dOX0JJVE1BUCAgICAweDFVCisjZGVmaW5lIEZUX0dMWVBIX09XTl9HWklQX1NWRyAgMHgyVQogCiAgIHR5cGVkZWYgc3RydWN0ICBGVF9TbG90X0ludGVybmFsUmVjXwogICB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0cHNwcm9wLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0cHNwcm9wLmgKaW5kZXggZDk0ZDBkNy4uMWQ1YjI4NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHBzcHJvcC5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRwc3Byb3AuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEdldCBhbmQgc2V0IHByb3BlcnRpZXMgb2YgUG9zdFNjcmlwdCBkcml2ZXJzIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0cmZvcmsuaCBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRyZm9yay5oCmluZGV4IDFjNTZkNmMuLmU5NjQ1OTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRyZm9yay5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRyZm9yay5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRW1iZWRkZWQgcmVzb3VyY2UgZm9ya3MgYWNjZXNzb3IgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQogICogTWFzYXRha2UgWUFNQVRPIGFuZCBSZWRoYXQgSy5LLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2LmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oCmluZGV4IGZhODJjMzEuLjFlODVkNmQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2LmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRoZSBGcmVlVHlwZSBzZXJ2aWNlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgKaW5kZXggN2YzYWYxMi4uODhlMTkyOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFN0cmVhbSBoYW5kbGluZyAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMjM4LDQyICsyMzgsNDIgQEAKICNkZWZpbmUgRlRfTkVYVF9CWVRFKCBidWZmZXIgKSAgICAgICAgIFwKICAgICAgICAgICAoICh1bnNpZ25lZCBjaGFyKSpidWZmZXIrKyApCiAKLSNkZWZpbmUgRlRfTkVYVF9TSE9SVCggYnVmZmVyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAoIChzaG9ydCkoIGJ1ZmZlciArPSAyLCBGVF9QRUVLX1NIT1JUKCBidWZmZXIgLSAyICkgKSApCisjZGVmaW5lIEZUX05FWFRfU0hPUlQoIGJ1ZmZlciApICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggYnVmZmVyICs9IDIsIEZUX1BFRUtfU0hPUlQoIGJ1ZmZlciAtIDIgKSApCiAKLSNkZWZpbmUgRlRfTkVYVF9VU0hPUlQoIGJ1ZmZlciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgKCAodW5zaWduZWQgc2hvcnQpKCBidWZmZXIgKz0gMiwgRlRfUEVFS19VU0hPUlQoIGJ1ZmZlciAtIDIgKSApICkKKyNkZWZpbmUgRlRfTkVYVF9VU0hPUlQoIGJ1ZmZlciApICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggYnVmZmVyICs9IDIsIEZUX1BFRUtfVVNIT1JUKCBidWZmZXIgLSAyICkgKQogCi0jZGVmaW5lIEZUX05FWFRfT0ZGMyggYnVmZmVyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICggKGxvbmcpKCBidWZmZXIgKz0gMywgRlRfUEVFS19PRkYzKCBidWZmZXIgLSAzICkgKSApCisjZGVmaW5lIEZUX05FWFRfT0ZGMyggYnVmZmVyICkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCBidWZmZXIgKz0gMywgRlRfUEVFS19PRkYzKCBidWZmZXIgLSAzICkgKQogCi0jZGVmaW5lIEZUX05FWFRfVU9GRjMoIGJ1ZmZlciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAoICh1bnNpZ25lZCBsb25nKSggYnVmZmVyICs9IDMsIEZUX1BFRUtfVU9GRjMoIGJ1ZmZlciAtIDMgKSApICkKKyNkZWZpbmUgRlRfTkVYVF9VT0ZGMyggYnVmZmVyICkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCBidWZmZXIgKz0gMywgRlRfUEVFS19VT0ZGMyggYnVmZmVyIC0gMyApICkKIAotI2RlZmluZSBGVF9ORVhUX0xPTkcoIGJ1ZmZlciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAoIChsb25nKSggYnVmZmVyICs9IDQsIEZUX1BFRUtfTE9ORyggYnVmZmVyIC0gNCApICkgKQorI2RlZmluZSBGVF9ORVhUX0xPTkcoIGJ1ZmZlciApICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggYnVmZmVyICs9IDQsIEZUX1BFRUtfTE9ORyggYnVmZmVyIC0gNCApICkKIAotI2RlZmluZSBGVF9ORVhUX1VMT05HKCBidWZmZXIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgKCAodW5zaWduZWQgbG9uZykoIGJ1ZmZlciArPSA0LCBGVF9QRUVLX1VMT05HKCBidWZmZXIgLSA0ICkgKSApCisjZGVmaW5lIEZUX05FWFRfVUxPTkcoIGJ1ZmZlciApICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggYnVmZmVyICs9IDQsIEZUX1BFRUtfVUxPTkcoIGJ1ZmZlciAtIDQgKSApCiAKIAotI2RlZmluZSBGVF9ORVhUX1NIT1JUX0xFKCBidWZmZXIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICggKHNob3J0KSggYnVmZmVyICs9IDIsIEZUX1BFRUtfU0hPUlRfTEUoIGJ1ZmZlciAtIDIgKSApICkKKyNkZWZpbmUgRlRfTkVYVF9TSE9SVF9MRSggYnVmZmVyICkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCBidWZmZXIgKz0gMiwgRlRfUEVFS19TSE9SVF9MRSggYnVmZmVyIC0gMiApICkKIAotI2RlZmluZSBGVF9ORVhUX1VTSE9SVF9MRSggYnVmZmVyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAoICh1bnNpZ25lZCBzaG9ydCkoIGJ1ZmZlciArPSAyLCBGVF9QRUVLX1VTSE9SVF9MRSggYnVmZmVyIC0gMiApICkgKQorI2RlZmluZSBGVF9ORVhUX1VTSE9SVF9MRSggYnVmZmVyICkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCBidWZmZXIgKz0gMiwgRlRfUEVFS19VU0hPUlRfTEUoIGJ1ZmZlciAtIDIgKSApCiAKLSNkZWZpbmUgRlRfTkVYVF9PRkYzX0xFKCBidWZmZXIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgKCAobG9uZykoIGJ1ZmZlciArPSAzLCBGVF9QRUVLX09GRjNfTEUoIGJ1ZmZlciAtIDMgKSApICkKKyNkZWZpbmUgRlRfTkVYVF9PRkYzX0xFKCBidWZmZXIgKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIGJ1ZmZlciArPSAzLCBGVF9QRUVLX09GRjNfTEUoIGJ1ZmZlciAtIDMgKSApCiAKLSNkZWZpbmUgRlRfTkVYVF9VT0ZGM19MRSggYnVmZmVyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICggKHVuc2lnbmVkIGxvbmcpKCBidWZmZXIgKz0gMywgRlRfUEVFS19VT0ZGM19MRSggYnVmZmVyIC0gMyApICkgKQorI2RlZmluZSBGVF9ORVhUX1VPRkYzX0xFKCBidWZmZXIgKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIGJ1ZmZlciArPSAzLCBGVF9QRUVLX1VPRkYzX0xFKCBidWZmZXIgLSAzICkgKQogCi0jZGVmaW5lIEZUX05FWFRfTE9OR19MRSggYnVmZmVyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICggKGxvbmcpKCBidWZmZXIgKz0gNCwgRlRfUEVFS19MT05HX0xFKCBidWZmZXIgLSA0ICkgKSApCisjZGVmaW5lIEZUX05FWFRfTE9OR19MRSggYnVmZmVyICkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCBidWZmZXIgKz0gNCwgRlRfUEVFS19MT05HX0xFKCBidWZmZXIgLSA0ICkgKQogCi0jZGVmaW5lIEZUX05FWFRfVUxPTkdfTEUoIGJ1ZmZlciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAoICh1bnNpZ25lZCBsb25nKSggYnVmZmVyICs9IDQsIEZUX1BFRUtfVUxPTkdfTEUoIGJ1ZmZlciAtIDQgKSApICkKKyNkZWZpbmUgRlRfTkVYVF9VTE9OR19MRSggYnVmZmVyICkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCBidWZmZXIgKz0gNCwgRlRfUEVFS19VTE9OR19MRSggYnVmZmVyIC0gNCApICkKIAogCiAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMzA3LDE3ICszMDcsMTcgQEAKIAogI2RlZmluZSBGVF9HRVRfQ0hBUigpICAgICAgIEZUX0dFVF9NQUNSTyggRlRfU3RyZWFtX0dldEJ5dGUsIEZUX0NoYXIgKQogI2RlZmluZSBGVF9HRVRfQllURSgpICAgICAgIEZUX0dFVF9NQUNSTyggRlRfU3RyZWFtX0dldEJ5dGUsIEZUX0J5dGUgKQotI2RlZmluZSBGVF9HRVRfU0hPUlQoKSAgICAgIEZUX0dFVF9NQUNSTyggRlRfU3RyZWFtX0dldFVTaG9ydCwgRlRfU2hvcnQgKQotI2RlZmluZSBGVF9HRVRfVVNIT1JUKCkgICAgIEZUX0dFVF9NQUNSTyggRlRfU3RyZWFtX0dldFVTaG9ydCwgRlRfVVNob3J0ICkKLSNkZWZpbmUgRlRfR0VUX1VPRkYzKCkgICAgICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVT2Zmc2V0LCBGVF9VTG9uZyApCi0jZGVmaW5lIEZUX0dFVF9MT05HKCkgICAgICAgRlRfR0VUX01BQ1JPKCBGVF9TdHJlYW1fR2V0VUxvbmcsIEZUX0xvbmcgKQotI2RlZmluZSBGVF9HRVRfVUxPTkcoKSAgICAgIEZUX0dFVF9NQUNSTyggRlRfU3RyZWFtX0dldFVMb25nLCBGVF9VTG9uZyApCi0jZGVmaW5lIEZUX0dFVF9UQUc0KCkgICAgICAgRlRfR0VUX01BQ1JPKCBGVF9TdHJlYW1fR2V0VUxvbmcsIEZUX1VMb25nICkKKyNkZWZpbmUgRlRfR0VUX1NIT1JUKCkgICAgICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVU2hvcnQsIEZUX0ludDE2ICkKKyNkZWZpbmUgRlRfR0VUX1VTSE9SVCgpICAgICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVU2hvcnQsIEZUX1VJbnQxNiApCisjZGVmaW5lIEZUX0dFVF9VT0ZGMygpICAgICAgRlRfR0VUX01BQ1JPKCBGVF9TdHJlYW1fR2V0VU9mZnNldCwgRlRfVUludDMyICkKKyNkZWZpbmUgRlRfR0VUX0xPTkcoKSAgICAgICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVTG9uZywgRlRfSW50MzIgKQorI2RlZmluZSBGVF9HRVRfVUxPTkcoKSAgICAgIEZUX0dFVF9NQUNSTyggRlRfU3RyZWFtX0dldFVMb25nLCBGVF9VSW50MzIgKQorI2RlZmluZSBGVF9HRVRfVEFHNCgpICAgICAgIEZUX0dFVF9NQUNSTyggRlRfU3RyZWFtX0dldFVMb25nLCBGVF9VSW50MzIgKQogCi0jZGVmaW5lIEZUX0dFVF9TSE9SVF9MRSgpICAgRlRfR0VUX01BQ1JPKCBGVF9TdHJlYW1fR2V0VVNob3J0TEUsIEZUX1Nob3J0ICkKLSNkZWZpbmUgRlRfR0VUX1VTSE9SVF9MRSgpICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVU2hvcnRMRSwgRlRfVVNob3J0ICkKLSNkZWZpbmUgRlRfR0VUX0xPTkdfTEUoKSAgICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVTG9uZ0xFLCBGVF9Mb25nICkKLSNkZWZpbmUgRlRfR0VUX1VMT05HX0xFKCkgICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVTG9uZ0xFLCBGVF9VTG9uZyApCisjZGVmaW5lIEZUX0dFVF9TSE9SVF9MRSgpICAgRlRfR0VUX01BQ1JPKCBGVF9TdHJlYW1fR2V0VVNob3J0TEUsIEZUX0ludDE2ICkKKyNkZWZpbmUgRlRfR0VUX1VTSE9SVF9MRSgpICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVU2hvcnRMRSwgRlRfVUludDE2ICkKKyNkZWZpbmUgRlRfR0VUX0xPTkdfTEUoKSAgICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVTG9uZ0xFLCBGVF9JbnQzMiApCisjZGVmaW5lIEZUX0dFVF9VTE9OR19MRSgpICAgRlRfR0VUX01BQ1JPKCBGVF9TdHJlYW1fR2V0VUxvbmdMRSwgRlRfVUludDMyICkKICNlbmRpZgogCiAKQEAgLTMzNCwxNiArMzM0LDE2IEBACiAgICAqLwogI2RlZmluZSBGVF9SRUFEX0JZVEUoIHZhciApICAgICAgIEZUX1JFQURfTUFDUk8oIEZUX1N0cmVhbV9SZWFkQnl0ZSwgRlRfQnl0ZSwgdmFyICkKICNkZWZpbmUgRlRfUkVBRF9DSEFSKCB2YXIgKSAgICAgICBGVF9SRUFEX01BQ1JPKCBGVF9TdHJlYW1fUmVhZEJ5dGUsIEZUX0NoYXIsIHZhciApCi0jZGVmaW5lIEZUX1JFQURfU0hPUlQoIHZhciApICAgICAgRlRfUkVBRF9NQUNSTyggRlRfU3RyZWFtX1JlYWRVU2hvcnQsIEZUX1Nob3J0LCB2YXIgKQotI2RlZmluZSBGVF9SRUFEX1VTSE9SVCggdmFyICkgICAgIEZUX1JFQURfTUFDUk8oIEZUX1N0cmVhbV9SZWFkVVNob3J0LCBGVF9VU2hvcnQsIHZhciApCi0jZGVmaW5lIEZUX1JFQURfVU9GRjMoIHZhciApICAgICAgRlRfUkVBRF9NQUNSTyggRlRfU3RyZWFtX1JlYWRVT2Zmc2V0LCBGVF9VTG9uZywgdmFyICkKLSNkZWZpbmUgRlRfUkVBRF9MT05HKCB2YXIgKSAgICAgICBGVF9SRUFEX01BQ1JPKCBGVF9TdHJlYW1fUmVhZFVMb25nLCBGVF9Mb25nLCB2YXIgKQotI2RlZmluZSBGVF9SRUFEX1VMT05HKCB2YXIgKSAgICAgIEZUX1JFQURfTUFDUk8oIEZUX1N0cmVhbV9SZWFkVUxvbmcsIEZUX1VMb25nLCB2YXIgKQorI2RlZmluZSBGVF9SRUFEX1NIT1JUKCB2YXIgKSAgICAgIEZUX1JFQURfTUFDUk8oIEZUX1N0cmVhbV9SZWFkVVNob3J0LCBGVF9JbnQxNiwgdmFyICkKKyNkZWZpbmUgRlRfUkVBRF9VU0hPUlQoIHZhciApICAgICBGVF9SRUFEX01BQ1JPKCBGVF9TdHJlYW1fUmVhZFVTaG9ydCwgRlRfVUludDE2LCB2YXIgKQorI2RlZmluZSBGVF9SRUFEX1VPRkYzKCB2YXIgKSAgICAgIEZUX1JFQURfTUFDUk8oIEZUX1N0cmVhbV9SZWFkVU9mZnNldCwgRlRfVUludDMyLCB2YXIgKQorI2RlZmluZSBGVF9SRUFEX0xPTkcoIHZhciApICAgICAgIEZUX1JFQURfTUFDUk8oIEZUX1N0cmVhbV9SZWFkVUxvbmcsIEZUX0ludDMyLCB2YXIgKQorI2RlZmluZSBGVF9SRUFEX1VMT05HKCB2YXIgKSAgICAgIEZUX1JFQURfTUFDUk8oIEZUX1N0cmVhbV9SZWFkVUxvbmcsIEZUX1VJbnQzMiwgdmFyICkKIAotI2RlZmluZSBGVF9SRUFEX1NIT1JUX0xFKCB2YXIgKSAgIEZUX1JFQURfTUFDUk8oIEZUX1N0cmVhbV9SZWFkVVNob3J0TEUsIEZUX1Nob3J0LCB2YXIgKQotI2RlZmluZSBGVF9SRUFEX1VTSE9SVF9MRSggdmFyICkgIEZUX1JFQURfTUFDUk8oIEZUX1N0cmVhbV9SZWFkVVNob3J0TEUsIEZUX1VTaG9ydCwgdmFyICkKLSNkZWZpbmUgRlRfUkVBRF9MT05HX0xFKCB2YXIgKSAgICBGVF9SRUFEX01BQ1JPKCBGVF9TdHJlYW1fUmVhZFVMb25nTEUsIEZUX0xvbmcsIHZhciApCi0jZGVmaW5lIEZUX1JFQURfVUxPTkdfTEUoIHZhciApICAgRlRfUkVBRF9NQUNSTyggRlRfU3RyZWFtX1JlYWRVTG9uZ0xFLCBGVF9VTG9uZywgdmFyICkKKyNkZWZpbmUgRlRfUkVBRF9TSE9SVF9MRSggdmFyICkgICBGVF9SRUFEX01BQ1JPKCBGVF9TdHJlYW1fUmVhZFVTaG9ydExFLCBGVF9JbnQxNiwgdmFyICkKKyNkZWZpbmUgRlRfUkVBRF9VU0hPUlRfTEUoIHZhciApICBGVF9SRUFEX01BQ1JPKCBGVF9TdHJlYW1fUmVhZFVTaG9ydExFLCBGVF9VSW50MTYsIHZhciApCisjZGVmaW5lIEZUX1JFQURfTE9OR19MRSggdmFyICkgICAgRlRfUkVBRF9NQUNSTyggRlRfU3RyZWFtX1JlYWRVTG9uZ0xFLCBGVF9JbnQzMiwgdmFyICkKKyNkZWZpbmUgRlRfUkVBRF9VTE9OR19MRSggdmFyICkgICBGVF9SRUFEX01BQ1JPKCBGVF9TdHJlYW1fUmVhZFVMb25nTEUsIEZUX1VJbnQzMiwgdmFyICkKIAogCiAjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fTk9fREVGQVVMVF9TWVNURU0KQEAgLTQ1OSwyMyArNDU5LDIzIEBACiAgIEZUX1N0cmVhbV9HZXRCeXRlKCBGVF9TdHJlYW0gIHN0cmVhbSApOwogCiAgIC8qIHJlYWQgYSAxNi1iaXQgYmlnLWVuZGlhbiB1bnNpZ25lZCBpbnRlZ2VyIGZyb20gYW4gZW50ZXJlZCBmcmFtZSAqLwotICBGVF9CQVNFKCBGVF9VU2hvcnQgKQorICBGVF9CQVNFKCBGVF9VSW50MTYgKQogICBGVF9TdHJlYW1fR2V0VVNob3J0KCBGVF9TdHJlYW0gIHN0cmVhbSApOwogCiAgIC8qIHJlYWQgYSAyNC1iaXQgYmlnLWVuZGlhbiB1bnNpZ25lZCBpbnRlZ2VyIGZyb20gYW4gZW50ZXJlZCBmcmFtZSAqLwotICBGVF9CQVNFKCBGVF9VTG9uZyApCisgIEZUX0JBU0UoIEZUX1VJbnQzMiApCiAgIEZUX1N0cmVhbV9HZXRVT2Zmc2V0KCBGVF9TdHJlYW0gIHN0cmVhbSApOwogCiAgIC8qIHJlYWQgYSAzMi1iaXQgYmlnLWVuZGlhbiB1bnNpZ25lZCBpbnRlZ2VyIGZyb20gYW4gZW50ZXJlZCBmcmFtZSAqLwotICBGVF9CQVNFKCBGVF9VTG9uZyApCisgIEZUX0JBU0UoIEZUX1VJbnQzMiApCiAgIEZUX1N0cmVhbV9HZXRVTG9uZyggRlRfU3RyZWFtICBzdHJlYW0gKTsKIAogICAvKiByZWFkIGEgMTYtYml0IGxpdHRsZS1lbmRpYW4gdW5zaWduZWQgaW50ZWdlciBmcm9tIGFuIGVudGVyZWQgZnJhbWUgKi8KLSAgRlRfQkFTRSggRlRfVVNob3J0ICkKKyAgRlRfQkFTRSggRlRfVUludDE2ICkKICAgRlRfU3RyZWFtX0dldFVTaG9ydExFKCBGVF9TdHJlYW0gIHN0cmVhbSApOwogCiAgIC8qIHJlYWQgYSAzMi1iaXQgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCBpbnRlZ2VyIGZyb20gYW4gZW50ZXJlZCBmcmFtZSAqLwotICBGVF9CQVNFKCBGVF9VTG9uZyApCisgIEZUX0JBU0UoIEZUX1VJbnQzMiApCiAgIEZUX1N0cmVhbV9HZXRVTG9uZ0xFKCBGVF9TdHJlYW0gIHN0cmVhbSApOwogCiAKQEAgLTQ4NSw3ICs0ODUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIEZUX0Vycm9yKiAgZXJyb3IgKTsKIAogICAvKiByZWFkIGEgMTYtYml0IGJpZy1lbmRpYW4gdW5zaWduZWQgaW50ZWdlciBmcm9tIGEgc3RyZWFtICovCi0gIEZUX0JBU0UoIEZUX1VTaG9ydCApCisgIEZUX0JBU0UoIEZUX1VJbnQxNiApCiAgIEZUX1N0cmVhbV9SZWFkVVNob3J0KCBGVF9TdHJlYW0gIHN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Vycm9yKiAgZXJyb3IgKTsKIApAQCAtNDk1LDE3ICs0OTUsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9FcnJvciogIGVycm9yICk7CiAKICAgLyogcmVhZCBhIDMyLWJpdCBiaWctZW5kaWFuIGludGVnZXIgZnJvbSBhIHN0cmVhbSAqLwotICBGVF9CQVNFKCBGVF9VTG9uZyApCisgIEZUX0JBU0UoIEZUX1VJbnQzMiApCiAgIEZUX1N0cmVhbV9SZWFkVUxvbmcoIEZUX1N0cmVhbSAgc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICBGVF9FcnJvciogIGVycm9yICk7CiAKICAgLyogcmVhZCBhIDE2LWJpdCBsaXR0bGUtZW5kaWFuIHVuc2lnbmVkIGludGVnZXIgZnJvbSBhIHN0cmVhbSAqLwotICBGVF9CQVNFKCBGVF9VU2hvcnQgKQorICBGVF9CQVNFKCBGVF9VSW50MTYgKQogICBGVF9TdHJlYW1fUmVhZFVTaG9ydExFKCBGVF9TdHJlYW0gIHN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IqICBlcnJvciApOwogCiAgIC8qIHJlYWQgYSAzMi1iaXQgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCBpbnRlZ2VyIGZyb20gYSBzdHJlYW0gKi8KLSAgRlRfQkFTRSggRlRfVUxvbmcgKQorICBGVF9CQVNFKCBGVF9VSW50MzIgKQogICBGVF9TdHJlYW1fUmVhZFVMb25nTEUoIEZUX1N0cmVhbSAgc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Vycm9yKiAgZXJyb3IgKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHRyYWNlLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaAppbmRleCAzMzA3NTU2Li4zMTlmZTU2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRyYWNpbmcgaGFuZGxpbmcgKHNwZWNpZmljYXRpb24gb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtNDksNiArNDksOSBAQAogRlRfVFJBQ0VfREVGKCByYXN0ZXIgKSAgICAvKiBtb25vY2hyb21lIHJhc3Rlcml6ZXIgICAoZnRyYXN0ZXIuYykgKi8KIEZUX1RSQUNFX0RFRiggc21vb3RoICkgICAgLyogYW50aS1hbGlhc2luZyByYXN0ZXIgICAgKGZ0Z3JheXMuYykgICovCiAKKyAgLyogb3Qtc3ZnIG1vZHVsZSAqLworRlRfVFJBQ0VfREVGKCBvdHN2ZyApICAgICAvKiBPVC1TVkcgcmVuZGVyZXIgICAgICAgICAoZnRzdmcuYykgICAgKi8KKwogICAvKiBjYWNoZSBzdWItc3lzdGVtICovCiBGVF9UUkFDRV9ERUYoIGNhY2hlICkgICAgIC8qIGNhY2hlIHN1Yi1zeXN0ZW0gICAoZnRjYWNoZS5jLCBldGMuKSAqLwogCkBAIC02MSw2ICs2NCw3IEBACiBGVF9UUkFDRV9ERUYoIHR0Y21hcCApICAgIC8qIGNoYXJtYXAgaGFuZGxlciAgICAgICAgICh0dGNtYXAuYykgICAqLwogRlRfVFJBQ0VfREVGKCB0dGNvbHIgKSAgICAvKiBnbHlwaCBsYXllciB0YWJsZSAgICAgICAodHRjb2xyLmMpICAgKi8KIEZUX1RSQUNFX0RFRiggdHRjcGFsICkgICAgLyogY29sb3IgcGFsZXR0ZSB0YWJsZSAgICAgKHR0Y3BhbC5jKSAgICovCitGVF9UUkFDRV9ERUYoIHR0c3ZnICkgICAgIC8qIE9wZW5UeXBlIFNWRyB0YWJsZSAgICAgICh0dHN2Zy5jKSAgICAqLwogRlRfVFJBQ0VfREVGKCB0dGtlcm4gKSAgICAvKiBrZXJuaW5nIGhhbmRsZXIgICAgICAgICAodHRrZXJuLmMpICAgKi8KIEZUX1RSQUNFX0RFRiggdHRsb2FkICkgICAgLyogYmFzaWMgVHJ1ZVR5cGUgdGFibGVzICAgKHR0bG9hZC5jKSAgICovCiBGVF9UUkFDRV9ERUYoIHR0bXR4ICkgICAgIC8qIG1ldHJpY3MtcmVsYXRlZCB0YWJsZXMgICh0dG10eC5jKSAgICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHZhbGlkLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dmFsaWQuaAppbmRleCA3YmRmYTYyLi5lOThlZTRlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dmFsaWQuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dmFsaWQuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIHZhbGlkYXRpb24gc3VwcG9ydCAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oCmluZGV4IDZjNjM5OWEuLmRmYjE5ODcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmgKQEAgLTUsNyArNSw3IEBACiAgKiAgIEF1eGlsaWFyeSBmdW5jdGlvbnMgYW5kIGRhdGEgc3RydWN0dXJlcyByZWxhdGVkIHRvIFBvc3RTY3JpcHQgZm9udHMKICAqICAgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTEzMiw5ICsxMzIsNiBAQAogICAgKiAgIG1heF9lbGVtcyA6OgogICAgKiAgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRhYmxlLgogICAgKgotICAgKiAgIG51bV9lbGVtcyA6OgotICAgKiAgICAgVGhlIGN1cnJlbnQgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRhYmxlLgotICAgKgogICAgKiAgIGVsZW1lbnRzIDo6CiAgICAqICAgICBBIHRhYmxlIG9mIGVsZW1lbnQgYWRkcmVzc2VzIHdpdGhpbiB0aGUgYmxvY2suCiAgICAqCkBAIC0xNTUsNyArMTUyLDYgQEAKICAgICBGVF9VTG9uZyAgICAgICAgICAgaW5pdDsKIAogICAgIEZUX0ludCAgICAgICAgICAgICBtYXhfZWxlbXM7Ci0gICAgRlRfSW50ICAgICAgICAgICAgIG51bV9lbGVtczsKICAgICBGVF9CeXRlKiogICAgICAgICAgZWxlbWVudHM7ICAgICAgIC8qIGFkZHJlc3NlcyBvZiB0YWJsZSBlbGVtZW50cyAqLwogICAgIEZUX1VJbnQqICAgICAgICAgICBsZW5ndGhzOyAgICAgICAgLyogbGVuZ3RocyBvZiB0YWJsZSBlbGVtZW50cyAgICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNoaW50cy5oIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2hpbnRzLmgKaW5kZXggOWRiYjA3Ny4uZWRlZGM0YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2hpbnRzLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2hpbnRzLmgKQEAgLTYsNyArNiw3IEBACiAgKiAgIHJlY29yZGVycyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gIFRoZXNlIGFyZSB1c2VkIHRvIHN1cHBvcnQgbmF0aXZlCiAgKiAgIFQxL1QyIGhpbnRzIGluIHRoZSAndHlwZTEnLCAnY2lkJywgYW5kICdjZmYnIGZvbnQgZHJpdmVycy4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0yOTQsNyArMjk0LDcgQEAKICAgICoKICAgICogQG5vdGU6CiAgICAqICAgT24gaW5wdXQsIGFsbCBwb2ludHMgd2l0aGluIHRoZSBvdXRsaW5lIGFyZSBpbiBmb250IGNvb3JkaW5hdGVzLiBPbgotICAgKiAgIG91dHB1dCwgdGhleSBhcmUgaW4gMS82NHRoIG9mIHBpeGVscy4KKyAgICogICBvdXRwdXQsIHRoZXkgYXJlIGluIDEvNjQgb2YgcGl4ZWxzLgogICAgKgogICAgKiAgIFRoZSBzY2FsaW5nIHRyYW5zZm9ybWF0aW9uIGlzIHRha2VuIGZyb20gdGhlICdnbG9iYWxzJyBvYmplY3Qgd2hpY2gKICAgICogICBtdXN0IGNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgZm9udCBhcyB0aGUgZ2x5cGguCkBAIC02MDcsNyArNjA3LDcgQEAKICAgICoKICAgICogQG5vdGU6CiAgICAqICAgT24gaW5wdXQsIGFsbCBwb2ludHMgd2l0aGluIHRoZSBvdXRsaW5lIGFyZSBpbiBmb250IGNvb3JkaW5hdGVzLiBPbgotICAgKiAgIG91dHB1dCwgdGhleSBhcmUgaW4gMS82NHRoIG9mIHBpeGVscy4KKyAgICogICBvdXRwdXQsIHRoZXkgYXJlIGluIDEvNjQgb2YgcGl4ZWxzLgogICAgKgogICAgKiAgIFRoZSBzY2FsaW5nIHRyYW5zZm9ybWF0aW9uIGlzIHRha2VuIGZyb20gdGhlICdnbG9iYWxzJyBvYmplY3Qgd2hpY2gKICAgICogICBtdXN0IGNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgZm9udCB0aGFuIHRoZSBnbHlwaC4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZiZGYuaCBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZiZGYuaAppbmRleCA4NzlhYTYxLi5iZjBjMWRjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2YmRmLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmJkZi5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVGhlIEZyZWVUeXBlIEJERiBzZXJ2aWNlcyAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmNmZnRsLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Y2ZmdGwuaAppbmRleCBmNjQyNGU0Li40YTIwNDk4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Y2ZmdGwuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Y2ZmdGwuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRoZSBGcmVlVHlwZSBDRkYgdGFibGVzIGxvYWRlciBzZXJ2aWNlIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Y2lkLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Y2lkLmgKaW5kZXggN2VmNWFmZC4uMDZkMGNiOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmNpZC5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZjaWQuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRoZSBGcmVlVHlwZSBDSUQgZm9udCBzZXJ2aWNlcyAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIzIGJ5CiAgKiBEZXJlayBDbGVnZyBhbmQgTWljaGFlbCBUb2Z0ZGFsLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZmbnRmbXQuaCBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZmbnRmbXQuaAppbmRleCBjYzg3ZmMxLi5iYzQ1ZTgwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Zm50Zm10LmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmZudGZtdC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVGhlIEZyZWVUeXBlIGZvbnQgZm9ybWF0IHNlcnZpY2UgKHNwZWNpZmljYXRpb24gb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmdsZGljdC5oIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmdsZGljdC5oCmluZGV4IDQyNTZmMTQuLjY0MzdhYmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZnbGRpY3QuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Z2xkaWN0LmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUaGUgRnJlZVR5cGUgZ2x5cGggZGljdGlvbmFyeSBzZXJ2aWNlcyAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmd4dmFsLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Z3h2YWwuaAppbmRleCBmMzZkNTU2Li4zMTAxNmFmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Z3h2YWwuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Z3h2YWwuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIEFQSSBmb3IgdmFsaWRhdGluZyBUcnVlVHlwZUdYL0FBVCB0YWJsZXMgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQogICogTWFzYXRha2UgWUFNQVRPLCBSZWQgSGF0IEsuSy4sCiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmtlcm4uaCBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZrZXJuLmgKaW5kZXggOTlkYzJkOS4uYmNhYmJjMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmtlcm4uaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2a2Vybi5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVGhlIEZyZWVUeXBlIEtlcm5pbmcgc2VydmljZSAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdm1ldHJpYy5oIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdm1ldHJpYy5oCmluZGV4IGI5Yzk1YTcuLjE2NzYxN2UgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZtZXRyaWMuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2bWV0cmljLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUaGUgRnJlZVR5cGUgc2VydmljZXMgZm9yIG1ldHJpY3MgdmFyaWF0aW9ucyAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtNzcsNiArNzcsOSBAQAogICB0eXBlZGVmIHZvaWQKICAgKCpGVF9NZXRyaWNzX0FkanVzdF9GdW5jKSggRlRfRmFjZSAgZmFjZSApOwogCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9TaXplX1Jlc2V0X0Z1bmMpKCBGVF9TaXplICBzaXplICk7CisKIAogICBGVF9ERUZJTkVfU0VSVklDRSggTWV0cmljc1ZhcmlhdGlvbnMgKQogICB7CkBAIC05MCw2ICs5Myw3IEBACiAgICAgRlRfVk9yZ19BZGp1c3RfRnVuYyAgICAgIHZvcmdfYWRqdXN0OwogCiAgICAgRlRfTWV0cmljc19BZGp1c3RfRnVuYyAgIG1ldHJpY3NfYWRqdXN0OworICAgIEZUX1NpemVfUmVzZXRfRnVuYyAgICAgICBzaXplX3Jlc2V0OwogICB9OwogCiAKQEAgLTEwMSw3ICsxMDUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNiX2FkanVzdF8sICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJzYl9hZGp1c3RfLCAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b3JnX2FkanVzdF8sICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0cmljc19hZGp1c3RfICApIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldHJpY3NfYWRqdXN0XywgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Jlc2V0XyAgICAgICkgXAogICBzdGF0aWMgY29uc3QgRlRfU2VydmljZV9NZXRyaWNzVmFyaWF0aW9uc1JlYyAgY2xhc3NfID0gICAgICAgICAgIFwKICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgaGFkdmFuY2VfYWRqdXN0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTExLDcgKzExNiw4IEBACiAgICAgdHNiX2FkanVzdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGJzYl9hZGp1c3RfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b3JnX2FkanVzdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbWV0cmljc19hZGp1c3RfICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIG1ldHJpY3NfYWRqdXN0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzaXplX3Jlc2V0XyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIH07CiAKICAgLyogKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZtbS5oIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdm1tLmgKaW5kZXggOGVhYzNhMy4uZDk0MjA0MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdm1tLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdm1tLmgKQEAgLTQsOCArNCw4IEBACiAgKgogICogICBUaGUgRnJlZVR5cGUgTXVsdGlwbGUgTWFzdGVycyBhbmQgR1ggdmFyIHNlcnZpY2VzIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBieQotICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgYnkKKyAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIFdlcm5lciBMZW1iZXJnLCBhbmQgRG9taW5payBSw7Z0dHNjaGVzLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKICAqIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CkBAIC0xOSw3ICsxOSw5IEBACiAjaWZuZGVmIFNWTU1fSF8KICNkZWZpbmUgU1ZNTV9IXwogCisjaW5jbHVkZSA8ZnJlZXR5cGUvZnRtbS5oPgogI2luY2x1ZGUgPGZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oPgorI2luY2x1ZGUgPGZyZWV0eXBlL2ludGVybmFsL2Z0bW10eXBlcy5oPgogCiAKIEZUX0JFR0lOX0hFQURFUgpAQCAtOTYsNTMgKzk4LDk0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCogICBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICB3ZWlnaHRfdmVjdG9yICk7CiAKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX1Zhcl9Mb2FkX0RlbHRhX1NldF9JZHhfTWFwX0Z1bmMpKCBGVF9GYWNlICAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICAgICAgIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1hfRGVsdGFTZXRJZHhNYXAgIG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1hfSXRlbVZhclN0b3JlICAgIGl0ZW1TdG9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICAgICAgIHRhYmxlX2xlbiApOworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9WYXJfTG9hZF9JdGVtX1Zhcl9TdG9yZV9GdW5jKSggRlRfRmFjZSAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgICAgIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1hfSXRlbVZhclN0b3JlICBpdGVtU3RvcmUgKTsKKworICB0eXBlZGVmIEZUX0l0ZW1WYXJEZWx0YQorICAoKkZUX1Zhcl9HZXRfSXRlbV9EZWx0YV9GdW5jKSggRlRfRmFjZSAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1hfSXRlbVZhclN0b3JlICBpdGVtU3RvcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgIG91dGVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgIGlubmVySW5kZXggKTsKKworICB0eXBlZGVmIHZvaWQKKyAgKCpGVF9WYXJfRG9uZV9JdGVtX1Zhcl9TdG9yZV9GdW5jKSggRlRfRmFjZSAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHWF9JdGVtVmFyU3RvcmUgIGl0ZW1TdG9yZSApOworCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX1Zhcl9Eb25lX0RlbHRhX1NldF9JZHhfTWFwX0Z1bmMpKCBGVF9GYWNlICAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1hfRGVsdGFTZXRJZHhNYXAgIGRlbHRhU2V0SWR4TWFwICk7CisKIAogICBGVF9ERUZJTkVfU0VSVklDRSggTXVsdGlNYXN0ZXJzICkKICAgewotICAgIEZUX0dldF9NTV9GdW5jICAgICAgICAgICAgICAgZ2V0X21tOwotICAgIEZUX1NldF9NTV9EZXNpZ25fRnVuYyAgICAgICAgc2V0X21tX2Rlc2lnbjsKLSAgICBGVF9TZXRfTU1fQmxlbmRfRnVuYyAgICAgICAgIHNldF9tbV9ibGVuZDsKLSAgICBGVF9HZXRfTU1fQmxlbmRfRnVuYyAgICAgICAgIGdldF9tbV9ibGVuZDsKLSAgICBGVF9HZXRfTU1fVmFyX0Z1bmMgICAgICAgICAgIGdldF9tbV92YXI7Ci0gICAgRlRfU2V0X1Zhcl9EZXNpZ25fRnVuYyAgICAgICBzZXRfdmFyX2Rlc2lnbjsKLSAgICBGVF9HZXRfVmFyX0Rlc2lnbl9GdW5jICAgICAgIGdldF92YXJfZGVzaWduOwotICAgIEZUX1NldF9JbnN0YW5jZV9GdW5jICAgICAgICAgc2V0X2luc3RhbmNlOwotICAgIEZUX1NldF9NTV9XZWlnaHRWZWN0b3JfRnVuYyAgc2V0X21tX3dlaWdodHZlY3RvcjsKLSAgICBGVF9HZXRfTU1fV2VpZ2h0VmVjdG9yX0Z1bmMgIGdldF9tbV93ZWlnaHR2ZWN0b3I7CisgICAgRlRfR2V0X01NX0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICBnZXRfbW07CisgICAgRlRfU2V0X01NX0Rlc2lnbl9GdW5jICAgICAgICAgICAgICAgICBzZXRfbW1fZGVzaWduOworICAgIEZUX1NldF9NTV9CbGVuZF9GdW5jICAgICAgICAgICAgICAgICAgc2V0X21tX2JsZW5kOworICAgIEZUX0dldF9NTV9CbGVuZF9GdW5jICAgICAgICAgICAgICAgICAgZ2V0X21tX2JsZW5kOworICAgIEZUX0dldF9NTV9WYXJfRnVuYyAgICAgICAgICAgICAgICAgICAgZ2V0X21tX3ZhcjsKKyAgICBGVF9TZXRfVmFyX0Rlc2lnbl9GdW5jICAgICAgICAgICAgICAgIHNldF92YXJfZGVzaWduOworICAgIEZUX0dldF9WYXJfRGVzaWduX0Z1bmMgICAgICAgICAgICAgICAgZ2V0X3Zhcl9kZXNpZ247CisgICAgRlRfU2V0X0luc3RhbmNlX0Z1bmMgICAgICAgICAgICAgICAgICBzZXRfaW5zdGFuY2U7CisgICAgRlRfU2V0X01NX1dlaWdodFZlY3Rvcl9GdW5jICAgICAgICAgICBzZXRfbW1fd2VpZ2h0dmVjdG9yOworICAgIEZUX0dldF9NTV9XZWlnaHRWZWN0b3JfRnVuYyAgICAgICAgICAgZ2V0X21tX3dlaWdodHZlY3RvcjsKIAogICAgIC8qIGZvciBpbnRlcm5hbCB1c2U7IG9ubHkgbmVlZGVkIGZvciBjb2RlIHNoYXJpbmcgYmV0d2VlbiBtb2R1bGVzICovCi0gICAgRlRfR2V0X1Zhcl9CbGVuZF9GdW5jICBnZXRfdmFyX2JsZW5kOwotICAgIEZUX0RvbmVfQmxlbmRfRnVuYyAgICAgZG9uZV9ibGVuZDsKKyAgICBGVF9WYXJfTG9hZF9EZWx0YV9TZXRfSWR4X01hcF9GdW5jICAgIGxvYWRfZGVsdGFfc2V0X2lkeF9tYXA7CisgICAgRlRfVmFyX0xvYWRfSXRlbV9WYXJfU3RvcmVfRnVuYyAgICAgICBsb2FkX2l0ZW1fdmFyX3N0b3JlOworICAgIEZUX1Zhcl9HZXRfSXRlbV9EZWx0YV9GdW5jICAgICAgICAgICAgZ2V0X2l0ZW1fZGVsdGE7CisgICAgRlRfVmFyX0RvbmVfSXRlbV9WYXJfU3RvcmVfRnVuYyAgICAgICBkb25lX2l0ZW1fdmFyX3N0b3JlOworICAgIEZUX1Zhcl9Eb25lX0RlbHRhX1NldF9JZHhfTWFwX0Z1bmMgICAgZG9uZV9kZWx0YV9zZXRfaWR4X21hcDsKKyAgICBGVF9HZXRfVmFyX0JsZW5kX0Z1bmMgICAgICAgICAgICAgICAgIGdldF92YXJfYmxlbmQ7CisgICAgRlRfRG9uZV9CbGVuZF9GdW5jICAgICAgICAgICAgICAgICAgICBkb25lX2JsZW5kOwogICB9OwogCiAKLSNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfTVVMVElNQVNURVJTUkVDKCBjbGFzc18sICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9tbV8sICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X21tX2Rlc2lnbl8sICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfbW1fYmxlbmRfLCAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9tbV9ibGVuZF8sICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X21tX3Zhcl8sICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfdmFyX2Rlc2lnbl8sICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF92YXJfZGVzaWduXywgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2luc3RhbmNlXywgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfd2VpZ2h0dmVjdG9yXywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF93ZWlnaHR2ZWN0b3JfLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3Zhcl9ibGVuZF8sICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lX2JsZW5kXyApICAgICAgXAotICBzdGF0aWMgY29uc3QgRlRfU2VydmljZV9NdWx0aU1hc3RlcnNSZWMgIGNsYXNzXyA9ICAgICAgICAgICBcCi0gIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBnZXRfbW1fLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHNldF9tbV9kZXNpZ25fLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc2V0X21tX2JsZW5kXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBnZXRfbW1fYmxlbmRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGdldF9tbV92YXJfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc2V0X3Zhcl9kZXNpZ25fLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBnZXRfdmFyX2Rlc2lnbl8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHNldF9pbnN0YW5jZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc2V0X3dlaWdodHZlY3Rvcl8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBnZXRfd2VpZ2h0dmVjdG9yXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGdldF92YXJfYmxlbmRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZG9uZV9ibGVuZF8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfTVVMVElNQVNURVJTUkVDKCBjbGFzc18sICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9tbV8sICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X21tX2Rlc2lnbl8sICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfbW1fYmxlbmRfLCAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9tbV9ibGVuZF8sICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X21tX3Zhcl8sICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfdmFyX2Rlc2lnbl8sICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF92YXJfZGVzaWduXywgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2luc3RhbmNlXywgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfd2VpZ2h0dmVjdG9yXywgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF93ZWlnaHR2ZWN0b3JfLCAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZF9kZWx0YV9zZXRfaWR4X21hcF8sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkX2l0ZW1fdmFyX3N0b3JlXywgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9pdGVtX2RlbHRhXywgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZV9pdGVtX3Zhcl9zdG9yZV8sICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lX2RlbHRhX3NldF9pZHhfbWFwXywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF92YXJfYmxlbmRfLCAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZV9ibGVuZF8gKSAgICAgICAgICAgIFwKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VfTXVsdGlNYXN0ZXJzUmVjICBjbGFzc18gPSAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X21tXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzZXRfbW1fZGVzaWduXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHNldF9tbV9ibGVuZF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X21tX2JsZW5kXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnZXRfbW1fdmFyXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHNldF92YXJfZGVzaWduXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X3Zhcl9kZXNpZ25fLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzZXRfaW5zdGFuY2VfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHNldF93ZWlnaHR2ZWN0b3JfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X3dlaWdodHZlY3Rvcl8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBsb2FkX2RlbHRhX3NldF9pZHhfbWFwXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGxvYWRfaXRlbV92YXJfc3RvcmVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X2l0ZW1fZGVsdGFfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkb25lX2l0ZW1fdmFyX3N0b3JlXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvbmVfZGVsdGFfc2V0X2lkeF9tYXBfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X3Zhcl9ibGVuZF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkb25lX2JsZW5kXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICB9OwogCiAgIC8qICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2b3R2YWwuaCBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZvdHZhbC5oCmluZGV4IDdhZmI0OWUuLmE0NjgzY2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZvdHZhbC5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZvdHZhbC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVGhlIEZyZWVUeXBlIE9wZW5UeXBlIHZhbGlkYXRpb24gc2VydmljZSAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBmci5oIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBmci5oCmluZGV4IDk4NDQyYmYuLmZkMTg5YzcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZwZnIuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cGZyLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBJbnRlcm5hbCBQRlIgc2VydmljZSBmdW5jdGlvbnMgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwb3N0bm0uaCBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwb3N0bm0uaAppbmRleCA1YTI1YzVhLi4yYjhmNmRmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cG9zdG5tLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBvc3RubS5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVGhlIEZyZWVUeXBlIFBvc3RTY3JpcHQgbmFtZSBzZXJ2aWNlcyAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnByb3AuaCBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwcm9wLmgKaW5kZXggOWI3MTAwMC4uOTMyY2UzMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnByb3AuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHJvcC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVGhlIEZyZWVUeXBlIHByb3BlcnR5IHNlcnZpY2UgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2NtYXAuaCBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2NtYXAuaAppbmRleCAzNDZmNWUyLi5mZDk5ZDg1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNjbWFwLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzY21hcC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVGhlIEZyZWVUeXBlIFBvc3RTY3JpcHQgY2hhcm1hcCBzZXJ2aWNlIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNpbmZvLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNpbmZvLmgKaW5kZXggNDlhYTRkNS4uMDljNGNkYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzaW5mby5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2luZm8uaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRoZSBGcmVlVHlwZSBQb3N0U2NyaXB0IGluZm8gc2VydmljZSAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnNmbnQuaCBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZzZm50LmgKaW5kZXggNDMwNmNiYy4uZjk4ZGYyZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnNmbnQuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2c2ZudC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVGhlIEZyZWVUeXBlIFNGTlQgdGFibGUgbG9hZGluZyBzZXJ2aWNlIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2dHRjbWFwLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2dHRjbWFwLmgKaW5kZXggNzc1YjZiYy4uNWY5ZWIwMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnR0Y21hcC5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGNtYXAuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRoZSBGcmVlVHlwZSBUcnVlVHlwZS9zZm50IGNtYXAgZXh0cmEgaW5mb3JtYXRpb24gc2VydmljZS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgYnkKICAqIE1hc2F0YWtlIFlBTUFUTywgUmVkaGF0IEsuSy4sCiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnR0ZW5nLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2dHRlbmcuaAppbmRleCA5NjQ5MzQyLi5hZDU3N2NiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2dHRlbmcuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2dHRlbmcuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRoZSBGcmVlVHlwZSBUcnVlVHlwZSBlbmdpbmUgcXVlcnkgc2VydmljZSAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnR0Z2x5Zi5oIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnR0Z2x5Zi5oCmluZGV4IDQyNjg0NjcuLmNhNmZmZjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGdseWYuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2dHRnbHlmLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUaGUgRnJlZVR5cGUgVHJ1ZVR5cGUgZ2x5cGggc2VydmljZS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lci4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2d2luZm50LmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2d2luZm50LmgKaW5kZXggYWE3MGFhNC4uMDAyOTIzZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdndpbmZudC5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z3aW5mbnQuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRoZSBGcmVlVHlwZSBXaW5kb3dzIEZOVC9GT05UIHNlcnZpY2UgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmgKaW5kZXggYmY0YzdlMC4uYTJkNGUxNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBIaWdoLWxldmVsICdzZm50JyBkcml2ZXIgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0zMTQsNiArMzE0LDMzIEBACiAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgKgogICAgKiBAZnVuY3R5cGU6CisgICAqICAgVFRfTG9hZF9TdmdfRG9jX0Z1bmMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFNjYW4gdGhlIFNWRyBkb2N1bWVudCBsaXN0IHRvIGZpbmQgdGhlIGRvY3VtZW50IGNvbnRhaW5pbmcgdGhlIGdseXBoCisgICAqICAgdGhhdCBoYXMgdGhlIElEICdnbHlwaCpYWFgqJywgd2hlcmUgKlhYWCogaXMgdGhlIHZhbHVlIG9mCisgICAqICAgYGdseXBoX2luZGV4YCBhcyBhIGRlY2ltYWwgaW50ZWdlci4KKyAgICoKKyAgICogQGlub3V0OgorICAgKiAgIGdseXBoIDo6CisgICAqICAgICBUaGUgZ2x5cGggc2xvdCBmcm9tIHdoaWNoIHBvaW50ZXJzIHRvIHRoZSBTVkcgZG9jdW1lbnQgbGlzdCBpcyB0byBiZQorICAgKiAgICAgZ3JhYmJlZC4gIFRoZSByZXN1bHRzIGFyZSBzdG9yZWQgYmFjayBpbiB0aGUgc2xvdC4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGdseXBoX2luZGV4IDo6CisgICAqICAgICBUaGUgaW5kZXggb2YgdGhlIGdseXBoIHRoYXQgaXMgdG8gYmUgbG9va2VkIHVwLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuCisgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqVFRfTG9hZF9TdmdfRG9jX0Z1bmMpKCBGVF9HbHlwaFNsb3QgIGdseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBnbHlwaF9pbmRleCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdHlwZToKICAgICogICBUVF9TZXRfU0JpdF9TdHJpa2VfRnVuYwogICAgKgogICAgKiBAZGVzY3JpcHRpb246CkBAIC05NDYsNiArOTczLDExIEBACiAgICAgVFRfR2V0X05hbWVfRnVuYyAgICAgZ2V0X25hbWU7CiAgICAgVFRfR2V0X05hbWVfSURfRnVuYyAgZ2V0X25hbWVfaWQ7CiAKKyAgICAvKiBPcGVuVHlwZSBTVkcgU3VwcG9ydCAqLworICAgIFRUX0xvYWRfVGFibGVfRnVuYyAgICBsb2FkX3N2ZzsKKyAgICBUVF9GcmVlX1RhYmxlX0Z1bmMgICAgZnJlZV9zdmc7CisgICAgVFRfTG9hZF9TdmdfRG9jX0Z1bmMgIGxvYWRfc3ZnX2RvYzsKKwogICB9IFNGTlRfSW50ZXJmYWNlOwogCiAKQEAgLTk5Nyw3ICsxMDI5LDEwIEBACiAgICAgICAgICAgY29scl9ibGVuZF8sICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICBnZXRfbWV0cmljc18sICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgIGdldF9uYW1lXywgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgZ2V0X25hbWVfaWRfICkgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnZXRfbmFtZV9pZF8sICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfc3ZnXywgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZnJlZV9zdmdfLCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX3N2Z19kb2NfICkgICAgICAgICAgICAgICAgXAogICBzdGF0aWMgY29uc3QgU0ZOVF9JbnRlcmZhY2UgIGNsYXNzXyA9ICBcCiAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBnb3RvX3RhYmxlXywgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTA0Miw3ICsxMDc3LDEwIEBACiAgICAgY29scl9ibGVuZF8sICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBnZXRfbWV0cmljc18sICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGdldF9uYW1lXywgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZ2V0X25hbWVfaWRfICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnZXRfbmFtZV9pZF8sICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGxvYWRfc3ZnXywgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZnJlZV9zdmdfLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBsb2FkX3N2Z19kb2NfICAgICAgICAgICAgICAgICAgICAgICAgXAogICB9OwogCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc3ZnaW50ZXJmYWNlLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3N2Z2ludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NjRiMmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3N2Z2ludGVyZmFjZS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogc3ZnaW50ZXJmYWNlLmgKKyAqCisgKiAgIEludGVyZmFjZSBvZiBvdC1zdmcgbW9kdWxlIChzcGVjaWZpY2F0aW9uIG9ubHkpLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMi0yMDIzIGJ5CisgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBXZXJuZXIgTGVtYmVyZywgYW5kIE1vYXppbiBLaGF0dGkuCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLAorICogbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKKyAqIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQorICogdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCisgKiB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisgKgorICovCisKKworI2lmbmRlZiBTVkdJTlRFUkZBQ0VfSF8KKyNkZWZpbmUgU1ZHSU5URVJGQUNFX0hfCisKKyNpbmNsdWRlIDxmdDJidWlsZC5oPgorI2luY2x1ZGUgPGZyZWV0eXBlL290c3ZnLmg+CisKKworRlRfQkVHSU5fSEVBREVSCisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlByZXNldF9CaXRtYXBfRnVuYykoIEZUX01vZHVsZSAgICAgbW9kdWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0dseXBoU2xvdCAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgIGNhY2hlICk7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFNWR19JbnRlcmZhY2VfCisgIHsKKyAgICBQcmVzZXRfQml0bWFwX0Z1bmMgIHByZXNldF9zbG90OworCisgIH0gU1ZHX0ludGVyZmFjZTsKKworICB0eXBlZGVmIFNWR19JbnRlcmZhY2UqICBTVkdfU2VydmljZTsKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogU1ZHSU5URVJGQUNFX0hfICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oCmluZGV4IDAyM2M1ZDAuLjVhMTA1YzUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oCkBAIC01LDcgKzUsNyBAQAogICogICBCYXNpYyBUeXBlMS9UeXBlMiB0eXBlIGRlZmluaXRpb25zIGFuZCBpbnRlcmZhY2UgKHNwZWNpZmljYXRpb24KICAqICAgb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMTcyLDggKzE3Miw4IEBACiAgIHsKICAgICBGVF9Cb29sICAgICAgICBJc0NJREZvbnQ7CiAgICAgRlRfQkJveCAgICAgICAgRm9udEJCb3g7Ci0gICAgRlRfRml4ZWQgICAgICAgQXNjZW5kZXI7Ci0gICAgRlRfRml4ZWQgICAgICAgRGVzY2VuZGVyOworICAgIEZUX0ZpeGVkICAgICAgIEFzY2VuZGVyOyAgICAgLyogb3B0aW9uYWwsIG1pbmQgdGhlIHplcm8gKi8KKyAgICBGVF9GaXhlZCAgICAgICBEZXNjZW5kZXI7ICAgIC8qIG9wdGlvbmFsLCBtaW5kIHRoZSB6ZXJvICovCiAgICAgQUZNX1RyYWNrS2VybiAgVHJhY2tLZXJuczsgICAvKiBmcmVlIGlmIG5vbi1OVUxMICovCiAgICAgRlRfVUludCAgICAgICAgTnVtVHJhY2tLZXJuOwogICAgIEFGTV9LZXJuUGFpciAgIEtlcm5QYWlyczsgICAgLyogZnJlZSBpZiBub24tTlVMTCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaAppbmRleCA2NTExMzFjLi43ODUwNzNlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaAorKysgYi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaApAQCAtNSw3ICs1LDcgQEAKICAqICAgQmFzaWMgU0ZOVC9UcnVlVHlwZSB0eXBlIGRlZmluaXRpb25zIGFuZCBpbnRlcmZhY2UgKHNwZWNpZmljYXRpb24KICAqICAgb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMTM5MCw4ICsxMzkwLDggQEAKICAgICogICBoZG14X3JlY29yZF9zaXplIDo6CiAgICAqICAgICBUaGUgc2l6ZSBvZiBhIHNpbmdsZSBoZG14IHJlY29yZC4KICAgICoKLSAgICogICBoZG14X3JlY29yZF9zaXplcyA6OgotICAgKiAgICAgQW4gYXJyYXkgaG9sZGluZyB0aGUgcHBlbSBzaXplcyBhdmFpbGFibGUgaW4gdGhlICdoZG14JyB0YWJsZS4KKyAgICogICBoZG14X3JlY29yZHMgOjoKKyAgICogICAgIEEgYXJyYXkgb2YgcG9pbnRlcnMgdG8gdGhlICdoZG14JyB0YWJsZSByZWNvcmRzIHNvcnRlZCBieSBwcGVtLgogICAgKgogICAgKiAgIHNiaXRfdGFibGUgOjoKICAgICogICAgIEEgcG9pbnRlciB0byB0aGUgZm9udCdzIGVtYmVkZGVkIGJpdG1hcCBsb2NhdGlvbiB0YWJsZS4KQEAgLTE1MDgsOCArMTUwOCwxNCBAQAogICAgIHZvaWQqICAgICAgICAgICAgICAgICBtbTsKIAogICAgIC8qIGEgdHlwZWxlc3MgcG9pbnRlciB0byB0aGUgRlRfU2VydmljZV9NZXRyaWNzVmFyaWF0aW9uc1JlYyB0YWJsZSAqLwotICAgIC8qIHVzZWQgdG8gaGFuZGxlIHRoZSBIVkFSLCBWVkFSLCBhbmQgTVZBUiBPcGVuVHlwZSB0YWJsZXMgICAgICAgICAqLwotICAgIHZvaWQqICAgICAgICAgICAgICAgICB2YXI7CisgICAgLyogdXNlZCB0byBoYW5kbGUgdGhlIEhWQVIsIFZWQVIsIGFuZCBNVkFSIE9wZW5UeXBlIHRhYmxlcyBieSB0aGUgICovCisgICAgLyogInRydWV0eXBlIiBkcml2ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgdm9pZCogICAgICAgICAgICAgICAgIHR0X3ZhcjsKKworICAgIC8qIGEgdHlwZWxlc3MgcG9pbnRlciB0byB0aGUgRlRfU2VydmljZV9NZXRyaWNzVmFyaWF0aW9uc1JlYyB0YWJsZSAqLworICAgIC8qIHVzZWQgdG8gaGFuZGxlIHRoZSBIVkFSLCBWVkFSLCBhbmQgTVZBUiBPcGVuVHlwZSB0YWJsZXMgYnkgdGhpcyAqLworICAgIC8qIFRUX0ZhY2UncyBkcml2ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIHZvaWQqICAgICAgICAgICAgICAgICBmYWNlX3ZhcjsKICNlbmRpZgogCiAgICAgLyogYSB0eXBlbGVzcyBwb2ludGVyIHRvIHRoZSBQb3N0U2NyaXB0IEF1eCBzZXJ2aWNlICovCkBAIC0xNjA1LDcgKzE2MTEsNyBAQAogICAgIEZUX1VMb25nICAgICAgICAgICAgICBoZG14X3RhYmxlX3NpemU7CiAgICAgRlRfVUludCAgICAgICAgICAgICAgIGhkbXhfcmVjb3JkX2NvdW50OwogICAgIEZUX1VMb25nICAgICAgICAgICAgICBoZG14X3JlY29yZF9zaXplOwotICAgIEZUX0J5dGUqICAgICAgICAgICAgICBoZG14X3JlY29yZF9zaXplczsKKyAgICBGVF9CeXRlKiogICAgICAgICAgICAgaGRteF9yZWNvcmRzOwogCiAgICAgRlRfQnl0ZSogICAgICAgICAgICAgIHNiaXRfdGFibGU7CiAgICAgRlRfVUxvbmcgICAgICAgICAgICAgIHNiaXRfdGFibGVfc2l6ZTsKQEAgLTE2NDQsNiArMTY1MCw5IEBACiAgICAgdm9pZCogICAgICAgICAgICAgICAgIGNwYWw7CiAgICAgdm9pZCogICAgICAgICAgICAgICAgIGNvbHI7CiAKKyAgICAvKiBzaW5jZSAyLjEyICovCisgICAgdm9pZCogICAgICAgICAgICAgICAgIHN2ZzsKKwogICB9IFRUX0ZhY2VSZWM7CiAKIApAQCAtMTc2OSw2ICsxNzc4LDkgQEAKICAgICAvKiBzaW5jZSB2ZXJzaW9uIDIuNi4yICovCiAgICAgRlRfTGlzdFJlYyAgICAgICBjb21wb3NpdGVzOwogCisgICAgLyogc2luY2UgdmVyc2lvbiAyLjExLjIgKi8KKyAgICBGVF9CeXRlKiAgICAgICAgIHdpZHRocDsKKwogICB9IFRUX0xvYWRlclJlYzsKIAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3dvZmZ0eXBlcy5oIGIvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC93b2ZmdHlwZXMuaAppbmRleCBjNDYwMTA3Li4wYzFkOGVlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3dvZmZ0eXBlcy5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvd29mZnR5cGVzLmgKQEAgLTUsNyArNSw3IEBACiAgKiAgIEJhc2ljIFdPRkYvV09GRjIgdHlwZSBkZWZpbml0aW9ucyBhbmQgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uCiAgKiAgIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvb3RzdmcuaCBiL2luY2x1ZGUvZnJlZXR5cGUvb3RzdmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmU5YTZhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9mcmVldHlwZS9vdHN2Zy5oCkBAIC0wLDAgKzEsMzM2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIG90c3ZnLmgKKyAqCisgKiAgIEludGVyZmFjZSBmb3IgT1QtU1ZHIHN1cHBvcnQgcmVsYXRlZCB0aGluZ3MgKHNwZWNpZmljYXRpb24pLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMi0yMDIzIGJ5CisgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBXZXJuZXIgTGVtYmVyZywgYW5kIE1vYXppbiBLaGF0dGkuCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLAorICogbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKKyAqIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQorICogdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCisgKiB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisgKgorICovCisKKworI2lmbmRlZiBPVFNWR19IXworI2RlZmluZSBPVFNWR19IXworCisjaW5jbHVkZSA8ZnJlZXR5cGUvZnJlZXR5cGUuaD4KKworI2lmZGVmIEZSRUVUWVBFX0gKKyNlcnJvciAiZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAxIGhhcyBiZWVuIGxvYWRlZCEiCisjZXJyb3IgIlBsZWFzZSBmaXggdGhlIGRpcmVjdG9yeSBzZWFyY2ggb3JkZXIgZm9yIGhlYWRlciBmaWxlcyIKKyNlcnJvciAic28gdGhhdCBmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDIgaXMgZm91bmQgZmlyc3QuIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHNlY3Rpb246CisgICAqICAgc3ZnX2ZvbnRzCisgICAqCisgICAqIEB0aXRsZToKKyAgICogICBPcGVuVHlwZSBTVkcgRm9udHMKKyAgICoKKyAgICogQGFic3RyYWN0OgorICAgKiAgIE9ULVNWRyBBUEkgYmV0d2VlbiBGcmVlVHlwZSBhbmQgYW4gZXh0ZXJuYWwgU1ZHIHJlbmRlcmluZyBsaWJyYXJ5LgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgZm91ciBob29rcyBuZWNlc3NhcnkgdG8gcmVuZGVyIFNWRworICAgKiAgICdkb2N1bWVudHMnIHRoYXQgYXJlIGNvbnRhaW5lZCBpbiBhbiBPcGVuVHlwZSBmb250J3MgJ1NWR34nIHRhYmxlLgorICAgKgorICAgKiAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiwgc2VlIG91ciBzdGFuZGFyZCBob29rcworICAgKiAgIGJhc2VkIG9uICdsaWJyc3ZnJyBpbiB0aGUgW0ZyZWVUeXBlIERlbW8KKyAgICogICBQcm9ncmFtc10oaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2ZyZWV0eXBlL2ZyZWV0eXBlLWRlbW9zKQorICAgKiAgIHJlcG9zaXRvcnkuCisgICAqCisgICAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdHlwZToKKyAgICogICBTVkdfTGliX0luaXRfRnVuYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBmaXJzdCBPVC1TVkcgZ2x5cGggaXMgcmVuZGVyZWQgaW4KKyAgICogICB0aGUgbGlmZXRpbWUgb2YgYW4gQEZUX0xpYnJhcnkgb2JqZWN0LiAgSW4gYSB0eXBpY2FsIGltcGxlbWVudGF0aW9uLAorICAgKiAgIG9uZSB3b3VsZCB3YW50IHRvIGFsbG9jYXRlIGEgc3RydWN0dXJlIGFuZCBwb2ludCB0aGUgYGRhdGFfcG9pbnRlcmAKKyAgICogICB0byBpdCBhbmQgcGVyZm9ybSBhbnkgbGlicmFyeSBpbml0aWFsaXphdGlvbnMgdGhhdCBtaWdodCBiZSBuZWVkZWQuCisgICAqCisgICAqIEBpbm91dDoKKyAgICogICBkYXRhX3BvaW50ZXIgOjoKKyAgICogICAgIFRoZSBTVkcgcmVuZGVyaW5nIG1vZHVsZSBzdG9yZXMgYSBwb2ludGVyIHZhcmlhYmxlIHRoYXQgY2FuIGJlIHVzZWQKKyAgICogICAgIGJ5IGNsaWVudHMgdG8gc3RvcmUgYW55IGRhdGEgdGhhdCBuZWVkcyB0byBiZSBzaGFyZWQgYWNyb3NzCisgICAqICAgICBkaWZmZXJlbnQgaG9va3MuICBgZGF0YV9wb2ludGVyYCBpcyBlc3NlbnRpYWxseSBhIHBvaW50ZXIgdG8gdGhhdAorICAgKiAgICAgcG9pbnRlciBzdWNoIHRoYXQgaXQgY2FuIGJlIHdyaXR0ZW4gdG8gYXMgd2VsbCBhcyByZWFkIGZyb20uCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQHNpbmNlOgorICAgKiAgIDIuMTIKKyAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpTVkdfTGliX0luaXRfRnVuYykoIEZUX1BvaW50ZXIgICpkYXRhX3BvaW50ZXIgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgU1ZHX0xpYl9GcmVlX0Z1bmMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgY2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgYG90LXN2Z2AgbW9kdWxlIGlzIGJlaW5nIGZyZWVkLgorICAgKiAgIEl0IGlzIG9ubHkgY2FsbGVkIGlmIHRoZSBpbml0IGhvb2sgd2FzIGNhbGxlZCBlYXJsaWVyLiAgVGhpcyBtZWFucworICAgKiAgIHRoYXQgbmVpdGhlciB0aGUgaW5pdCBub3IgdGhlIGZyZWUgaG9vayBpcyBjYWxsZWQgaWYgbm8gT1QtU1ZHIGdseXBoCisgICAqICAgaXMgcmVuZGVyZWQuCisgICAqCisgICAqICAgSW4gYSB0eXBpY2FsIGltcGxlbWVudGF0aW9uLCBvbmUgd291bGQgd2FudCB0byBmcmVlIGFueSBzdGF0ZQorICAgKiAgIHN0cnVjdHVyZSB0aGF0IHdhcyBhbGxvY2F0ZWQgaW4gdGhlIGluaXQgaG9vayBhbmQgcGVyZm9ybSBhbnkKKyAgICogICBsaWJyYXJ5LXJlbGF0ZWQgY2xvc3VyZSB0aGF0IG1pZ2h0IGJlIG5lZWRlZC4KKyAgICoKKyAgICogQGlub3V0OgorICAgKiAgIGRhdGFfcG9pbnRlciA6OgorICAgKiAgICAgVGhlIFNWRyByZW5kZXJpbmcgbW9kdWxlIHN0b3JlcyBhIHBvaW50ZXIgdmFyaWFibGUgdGhhdCBjYW4gYmUgdXNlZAorICAgKiAgICAgYnkgY2xpZW50cyB0byBzdG9yZSBhbnkgZGF0YSB0aGF0IG5lZWRzIHRvIGJlIHNoYXJlZCBhY3Jvc3MKKyAgICogICAgIGRpZmZlcmVudCBob29rcy4gIGBkYXRhX3BvaW50ZXJgIGlzIGVzc2VudGlhbGx5IGEgcG9pbnRlciB0byB0aGF0CisgICAqICAgICBwb2ludGVyIHN1Y2ggdGhhdCBpdCBjYW4gYmUgd3JpdHRlbiB0byBhcyB3ZWxsIGFzIHJlYWQgZnJvbS4KKyAgICoKKyAgICogQHNpbmNlOgorICAgKiAgIDIuMTIKKyAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKlNWR19MaWJfRnJlZV9GdW5jKSggRlRfUG9pbnRlciAgKmRhdGFfcG9pbnRlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdHlwZToKKyAgICogICBTVkdfTGliX1JlbmRlcl9GdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIHRvIHJlbmRlciBhbiBPVC1TVkcgZ2x5cGguICBUaGlzIGNhbGxiYWNrCisgICAqICAgaG9vayBpcyBjYWxsZWQgcmlnaHQgYWZ0ZXIgdGhlIHByZXNldCBob29rIEBTVkdfTGliX1ByZXNldF9TbG90X0Z1bmMKKyAgICogICBoYXMgYmVlbiBjYWxsZWQgd2l0aCBgY2FjaGVgIHNldCB0byBgVFJVRWAuICBUaGUgZGF0YSBuZWNlc3NhcnkgdG8KKyAgICogICByZW5kZXIgaXMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIGhhbmRsZSBARlRfU1ZHX0RvY3VtZW50LCB3aGljaCBpcyBzZXQKKyAgICogICBpbiB0aGUgYG90aGVyYCBmaWVsZCBvZiBARlRfR2x5cGhTbG90UmVjLgorICAgKgorICAgKiAgIFRoZSByZW5kZXIgaG9vayBpcyBleHBlY3RlZCB0byByZW5kZXIgdGhlIFNWRyBnbHlwaCB0byB0aGUgYml0bWFwCisgICAqICAgYnVmZmVyIHRoYXQgaXMgYWxsb2NhdGVkIGFscmVhZHkgYXQgYHNsb3QtPmJpdG1hcC5idWZmZXJgLiAgSXQgYWxzbworICAgKiAgIHNldHMgdGhlIGBudW1fZ3JheXNgIHZhbHVlIGFzIHdlbGwgYXMgYHNsb3QtPmZvcm1hdGAuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBzbG90IDo6CisgICAqICAgICBUaGUgc2xvdCB0byByZW5kZXIuCisgICAqCisgICAqIEBpbm91dDoKKyAgICogICBkYXRhX3BvaW50ZXIgOjoKKyAgICogICAgIFRoZSBTVkcgcmVuZGVyaW5nIG1vZHVsZSBzdG9yZXMgYSBwb2ludGVyIHZhcmlhYmxlIHRoYXQgY2FuIGJlIHVzZWQKKyAgICogICAgIGJ5IGNsaWVudHMgdG8gc3RvcmUgYW55IGRhdGEgdGhhdCBuZWVkcyB0byBiZSBzaGFyZWQgYWNyb3NzCisgICAqICAgICBkaWZmZXJlbnQgaG9va3MuICBgZGF0YV9wb2ludGVyYCBpcyBlc3NlbnRpYWxseSBhIHBvaW50ZXIgdG8gdGhhdAorICAgKiAgICAgcG9pbnRlciBzdWNoIHRoYXQgaXQgY2FuIGJlIHdyaXR0ZW4gdG8gYXMgd2VsbCBhcyByZWFkIGZyb20uCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQHNpbmNlOgorICAgKiAgIDIuMTIKKyAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpTVkdfTGliX1JlbmRlcl9GdW5jKSggRlRfR2x5cGhTbG90ICBzbG90LAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb2ludGVyICAgKmRhdGFfcG9pbnRlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdHlwZToKKyAgICogICBTVkdfTGliX1ByZXNldF9TbG90X0Z1bmMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgY2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgdG8gcHJlc2V0IHRoZSBnbHlwaCBzbG90LiAgSXQgaXMgY2FsbGVkIGZyb20KKyAgICogICB0d28gcGxhY2VzLgorICAgKgorICAgKiAgIDEuIFdoZW4gYEZUX0xvYWRfR2x5cGhgIG5lZWRzIHRvIHByZXNldCB0aGUgZ2x5cGggc2xvdC4KKyAgICoKKyAgICogICAyLiBSaWdodCBiZWZvcmUgdGhlIGBzdmdgIG1vZHVsZSBjYWxscyB0aGUgcmVuZGVyIGNhbGxiYWNrIGhvb2suCisgICAqCisgICAqICAgV2hlbiBpdCBpcyB0aGUgZm9ybWVyLCB0aGUgYXJndW1lbnQgYGNhY2hlYCBpcyBzZXQgdG8gYEZBTFNFYC4gIFdoZW4KKyAgICogICBpdCBpcyB0aGUgbGF0dGVyLCB0aGUgYXJndW1lbnQgYGNhY2hlYCBpcyBzZXQgdG8gYFRSVUVgLiAgVGhpcworICAgKiAgIGRpc3RpbmN0aW9uIGhhcyBiZWVuIG1hZGUgYmVjYXVzZSBtYW55IGNhbGN1bGF0aW9ucyB0aGF0IGFyZSBuZWNlc3NhcnkKKyAgICogICBmb3IgcHJlc2V0dGluZyBhIGdseXBoIHNsb3QgYXJlIHRoZSBzYW1lIG5lZWRlZCBsYXRlciBmb3IgdGhlIHJlbmRlcgorICAgKiAgIGNhbGxiYWNrIGhvb2suICBUaHVzLCBpZiBgY2FjaGVgIGlzIGBUUlVFYCwgdGhlIGhvb2sgY2FuIF9jYWNoZV8gdGhvc2UKKyAgICogICBjYWxjdWxhdGlvbnMgaW4gYSBtZW1vcnkgYmxvY2sgcmVmZXJlbmNlZCBieSB0aGUgc3RhdGUgcG9pbnRlci4KKyAgICoKKyAgICogICBUaGlzIGhvb2sgaXMgZXhwZWN0ZWQgdG8gcHJlc2V0IHRoZSBzbG90IGJ5IHNldHRpbmcgcGFyYW1ldGVycyBzdWNoIGFzCisgICAqICAgYGJpdG1hcF9sZWZ0YCwgYGJpdG1hcF90b3BgLCBgd2lkdGhgLCBgcm93c2AsIGBwaXRjaGAsIGFuZAorICAgKiAgIGBwaXhlbF9tb2RlYC4gIEl0IGlzIGFsc28gZXhwZWN0ZWQgdG8gc2V0IGFsbCB0aGUgbWV0cmljcyBmb3IgdGhlIHNsb3QKKyAgICogICBpbmNsdWRpbmcgdGhlIHZlcnRpY2FsIGFkdmFuY2UgaWYgaXQgaXMgbm90IGFscmVhZHkgc2V0LiAgVHlwaWNhbGx5LAorICAgKiAgIGZvbnRzIGhhdmUgaG9yaXpvbnRhbCBhZHZhbmNlcyBidXQgbm90IHZlcnRpY2FsIG9uZXMuICBJZiB0aG9zZSBhcmUKKyAgICogICBhdmFpbGFibGUsIHRoZXkgaGFkIGFscmVhZHkgYmVlbiBzZXQsIG90aGVyd2lzZSB0aGV5IGhhdmUgdG8gYmUKKyAgICogICBlc3RpbWF0ZWQgYW5kIHNldCBtYW51YWxseS4gIFRoZSBob29rIG11c3QgdGFrZSBpbnRvIGFjY291bnQgdGhlCisgICAqICAgdHJhbnNmb3JtYXRpb25zIHRoYXQgaGF2ZSBiZWVuIHNldCwgYW5kIHRyYW5zbGF0ZSB0aGUgdHJhbnNmb3JtYXRpb24KKyAgICogICBtYXRyaWNlcyBpbnRvIHRoZSBTVkcgY29vcmRpbmF0ZSBzeXN0ZW0sIGFzIHRoZSBvcmlnaW5hbCBtYXRyaXggaXMKKyAgICogICBpbnRlbmRlZCBmb3IgdGhlIFRURi9DRkYgY29vcmRpbmF0ZSBzeXN0ZW0uCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBzbG90IDo6CisgICAqICAgICBUaGUgZ2x5cGggc2xvdCB0aGF0IGhhcyB0aGUgU1ZHIGRvY3VtZW50IGxvYWRlZC4KKyAgICoKKyAgICogICBjYWNoZSA6OgorICAgKiAgICAgU2VlIGRlc2NyaXB0aW9uLgorICAgKgorICAgKiBAaW5vdXQ6CisgICAqICAgZGF0YV9wb2ludGVyIDo6CisgICAqICAgICBUaGUgU1ZHIHJlbmRlcmluZyBtb2R1bGUgc3RvcmVzIGEgcG9pbnRlciB2YXJpYWJsZSB0aGF0IGNhbiBiZSB1c2VkCisgICAqICAgICBieSBjbGllbnRzIHRvIHN0b3JlIGFueSBkYXRhIHRoYXQgbmVlZHMgdG8gYmUgc2hhcmVkIGFjcm9zcworICAgKiAgICAgZGlmZmVyZW50IGhvb2tzLiAgYGRhdGFfcG9pbnRlcmAgaXMgZXNzZW50aWFsbHkgYSBwb2ludGVyIHRvIHRoYXQKKyAgICogICAgIHBvaW50ZXIgc3VjaCB0aGF0IGl0IGNhbiBiZSB3cml0dGVuIHRvIGFzIHdlbGwgYXMgcmVhZCBmcm9tLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuCisgICAqCisgICAqIEBzaW5jZToKKyAgICogICAyLjEyCisgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqU1ZHX0xpYl9QcmVzZXRfU2xvdF9GdW5jKSggRlRfR2x5cGhTbG90ICBzbG90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgY2FjaGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9pbnRlciAgICpzdGF0ZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBzdHJ1Y3Q6CisgICAqICAgU1ZHX1JlbmRlcmVySG9va3MKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgc3RydWN0dXJlIHRoYXQgc3RvcmVzIHRoZSBmb3VyIGhvb2tzIG5lZWRlZCB0byByZW5kZXIgT1QtU1ZHIGdseXBocworICAgKiAgIHByb3Blcmx5LiAgVGhlIHN0cnVjdHVyZSBpcyBwdWJsaWNseSB1c2VkIHRvIHNldCB0aGUgaG9va3MgdmlhIHRoZQorICAgKiAgIEBzdmctaG9va3MgZHJpdmVyIHByb3BlcnR5LgorICAgKgorICAgKiAgIFRoZSBiZWhhdmlvciBvZiBlYWNoIGhvb2sgaXMgZGVzY3JpYmVkIGluIGl0cyBkb2N1bWVudGF0aW9uLiAgT25lCisgICAqICAgdGhpbmcgdG8gbm90ZSBpcyB0aGF0IHRoZSBwcmVzZXQgaG9vayBhbmQgdGhlIHJlbmRlciBob29rIG9mdGVuIG5lZWQKKyAgICogICB0byBkbyB0aGUgc2FtZSBvcGVyYXRpb25zOyB0aGVyZWZvcmUsIGl0J3MgYmV0dGVyIHRvIGNhY2hlIHRoZQorICAgKiAgIGludGVybWVkaWF0ZSBkYXRhIGluIGEgc3RhdGUgc3RydWN0dXJlIHRvIGF2b2lkIGNhbGN1bGF0aW5nIGl0IHR3aWNlLgorICAgKiAgIEZvciBleGFtcGxlLCBpbiB0aGUgcHJlc2V0IGhvb2sgb25lIGNhbiBkcmF3IHRoZSBnbHlwaCBvbiBhIHJlY29yZGVyCisgICAqICAgc3VyZmFjZSBhbmQgbGF0ZXIgY3JlYXRlIGEgYml0bWFwIHN1cmZhY2UgZnJvbSBpdCBpbiB0aGUgcmVuZGVyIGhvb2suCisgICAqCisgICAqICAgQWxsIGZvdXIgaG9va3MgbXVzdCBiZSBub24tTlVMTC4KKyAgICoKKyAgICogQGZpZWxkczoKKyAgICogICBpbml0X3N2ZyA6OgorICAgKiAgICAgVGhlIGluaXRpYWxpemF0aW9uIGhvb2suCisgICAqCisgICAqICAgZnJlZV9zdmcgOjoKKyAgICogICAgIFRoZSBjbGVhbnVwIGhvb2suCisgICAqCisgICAqICAgcmVuZGVyX2hvb2sgOjoKKyAgICogICAgIFRoZSByZW5kZXIgaG9vay4KKyAgICoKKyAgICogICBwcmVzZXRfc2xvdCA6OgorICAgKiAgICAgVGhlIHByZXNldCBob29rLgorICAgKgorICAgKiBAc2luY2U6CisgICAqICAgMi4xMgorICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgU1ZHX1JlbmRlcmVySG9va3NfCisgIHsKKyAgICBTVkdfTGliX0luaXRfRnVuYyAgICBpbml0X3N2ZzsKKyAgICBTVkdfTGliX0ZyZWVfRnVuYyAgICBmcmVlX3N2ZzsKKyAgICBTVkdfTGliX1JlbmRlcl9GdW5jICByZW5kZXJfc3ZnOworCisgICAgU1ZHX0xpYl9QcmVzZXRfU2xvdF9GdW5jICBwcmVzZXRfc2xvdDsKKworICB9IFNWR19SZW5kZXJlckhvb2tzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBzdHJ1Y3Q6CisgICAqICAgRlRfU1ZHX0RvY3VtZW50UmVjCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIHN0cnVjdHVyZSB0aGF0IG1vZGVscyBvbmUgU1ZHIGRvY3VtZW50LgorICAgKgorICAgKiBAZmllbGRzOgorICAgKiAgIHN2Z19kb2N1bWVudCA6OgorICAgKiAgICAgQSBwb2ludGVyIHRvIHRoZSBTVkcgZG9jdW1lbnQuCisgICAqCisgICAqICAgc3ZnX2RvY3VtZW50X2xlbmd0aCA6OgorICAgKiAgICAgVGhlIGxlbmd0aCBvZiBgc3ZnX2RvY3VtZW50YC4KKyAgICoKKyAgICogICBtZXRyaWNzIDo6CisgICAqICAgICBBIG1ldHJpY3Mgb2JqZWN0IHN0b3JpbmcgdGhlIHNpemUgaW5mb3JtYXRpb24uCisgICAqCisgICAqICAgdW5pdHNfcGVyX0VNIDo6CisgICAqICAgICBUaGUgc2l6ZSBvZiB0aGUgRU0gc3F1YXJlLgorICAgKgorICAgKiAgIHN0YXJ0X2dseXBoX2lkIDo6CisgICAqICAgICBUaGUgZmlyc3QgZ2x5cGggSUQgaW4gdGhlIGdseXBoIHJhbmdlIGNvdmVyZWQgYnkgdGhpcyBkb2N1bWVudC4KKyAgICoKKyAgICogICBlbmRfZ2x5cGhfaWQgOjoKKyAgICogICAgIFRoZSBsYXN0IGdseXBoIElEIGluIHRoZSBnbHlwaCByYW5nZSBjb3ZlcmVkIGJ5IHRoaXMgZG9jdW1lbnQuCisgICAqCisgICAqICAgdHJhbnNmb3JtIDo6CisgICAqICAgICBBIDJ4MiB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggdG8gYXBwbHkgdG8gdGhlIGdseXBoIHdoaWxlIHJlbmRlcmluZworICAgKiAgICAgaXQuCisgICAqCisgICAqICAgZGVsdGEgOjoKKyAgICogICAgIFRoZSB0cmFuc2xhdGlvbiB0byBhcHBseSB0byB0aGUgZ2x5cGggd2hpbGUgcmVuZGVyaW5nLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBXaGVuIGFuIEBGVF9HbHlwaFNsb3Qgb2JqZWN0IGBzbG90YCBpcyBwYXNzZWQgZG93biB0byBhIHJlbmRlcmVyLCB0aGUKKyAgICogICByZW5kZXJlciBjYW4gb25seSBhY2Nlc3MgdGhlIGBtZXRyaWNzYCBhbmQgYHVuaXRzX3Blcl9FTWAgZmllbGRzIHZpYQorICAgKiAgIGBzbG90LT5mYWNlYC4gIEhvd2V2ZXIsIHdoZW4gQEZUX0dseXBoX1RvX0JpdG1hcCBzZXRzIHVwIGEgZHVtbXkKKyAgICogICBvYmplY3QsIGl0IGhhcyBubyB3YXkgdG8gc2V0IGEgYGZhY2VgIG9iamVjdC4gIFRodXMsIG1ldHJpY3MKKyAgICogICBpbmZvcm1hdGlvbiBhbmQgYHVuaXRzX3Blcl9FTWAgKHdoaWNoIGlzIG5lY2Vzc2FyeSBmb3IgT1QtU1ZHKSBoYXMgdG8KKyAgICogICBiZSBzdG9yZWQgc2VwYXJhdGVseS4KKyAgICoKKyAgICogQHNpbmNlOgorICAgKiAgIDIuMTIKKyAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9TVkdfRG9jdW1lbnRSZWNfCisgIHsKKyAgICBGVF9CeXRlKiAgc3ZnX2RvY3VtZW50OworICAgIEZUX1VMb25nICBzdmdfZG9jdW1lbnRfbGVuZ3RoOworCisgICAgRlRfU2l6ZV9NZXRyaWNzICBtZXRyaWNzOworICAgIEZUX1VTaG9ydCAgICAgICAgdW5pdHNfcGVyX0VNOworCisgICAgRlRfVVNob3J0ICBzdGFydF9nbHlwaF9pZDsKKyAgICBGVF9VU2hvcnQgIGVuZF9nbHlwaF9pZDsKKworICAgIEZUX01hdHJpeCAgdHJhbnNmb3JtOworICAgIEZUX1ZlY3RvciAgZGVsdGE7CisKKyAgfSBGVF9TVkdfRG9jdW1lbnRSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHR5cGU6CisgICAqICAgRlRfU1ZHX0RvY3VtZW50CisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGhhbmRsZSB0byBhbiBARlRfU1ZHX0RvY3VtZW50UmVjIG9iamVjdC4KKyAgICoKKyAgICogQHNpbmNlOgorICAgKiAgIDIuMTIKKyAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX1NWR19Eb2N1bWVudFJlY18qICBGVF9TVkdfRG9jdW1lbnQ7CisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogT1RTVkdfSF8gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaCBiL2luY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaAppbmRleCBhNWY2YWU3Li4xYWVjZmJiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oCkBAIC01LDcgKzUsNyBAQAogICogICBCYXNpYyBUeXBlIDEvVHlwZSAyIHRhYmxlcyBkZWZpbml0aW9ucyBhbmQgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uCiAgKiAgIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTQ1MywyMiArNDUzLDIyIEBACiAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgKgogICAgKiBAZnVuY3Rpb246Ci0gICAqICAgIEZUX0hhc19QU19HbHlwaF9OYW1lcworICAgKiAgIEZUX0hhc19QU19HbHlwaF9OYW1lcwogICAgKgogICAgKiBAZGVzY3JpcHRpb246Ci0gICAqICAgIFJldHVybiB0cnVlIGlmIGEgZ2l2ZW4gZmFjZSBwcm92aWRlcyByZWxpYWJsZSBQb3N0U2NyaXB0IGdseXBoIG5hbWVzLgotICAgKiAgICBUaGlzIGlzIHNpbWlsYXIgdG8gdXNpbmcgdGhlIEBGVF9IQVNfR0xZUEhfTkFNRVMgbWFjcm8sIGV4Y2VwdCB0aGF0Ci0gICAqICAgIGNlcnRhaW4gZm9udHMgKG1vc3RseSBUcnVlVHlwZSkgY29udGFpbiBpbmNvcnJlY3QgZ2x5cGggbmFtZSB0YWJsZXMuCisgICAqICAgUmV0dXJuIHRydWUgaWYgYSBnaXZlbiBmYWNlIHByb3ZpZGVzIHJlbGlhYmxlIFBvc3RTY3JpcHQgZ2x5cGggbmFtZXMuCisgICAqICAgVGhpcyBpcyBzaW1pbGFyIHRvIHVzaW5nIHRoZSBARlRfSEFTX0dMWVBIX05BTUVTIG1hY3JvLCBleGNlcHQgdGhhdAorICAgKiAgIGNlcnRhaW4gZm9udHMgKG1vc3RseSBUcnVlVHlwZSkgY29udGFpbiBpbmNvcnJlY3QgZ2x5cGggbmFtZSB0YWJsZXMuCiAgICAqCi0gICAqICAgIFdoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUsIHRoZSBjYWxsZXIgaXMgc3VyZSB0aGF0IHRoZSBnbHlwaAotICAgKiAgICBuYW1lcyByZXR1cm5lZCBieSBARlRfR2V0X0dseXBoX05hbWUgYXJlIHJlbGlhYmxlLgorICAgKiAgIFdoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUsIHRoZSBjYWxsZXIgaXMgc3VyZSB0aGF0IHRoZSBnbHlwaAorICAgKiAgIG5hbWVzIHJldHVybmVkIGJ5IEBGVF9HZXRfR2x5cGhfTmFtZSBhcmUgcmVsaWFibGUuCiAgICAqCiAgICAqIEBpbnB1dDoKLSAgICogICAgZmFjZSA6OgotICAgKiAgICAgIGZhY2UgaGFuZGxlCisgICAqICAgZmFjZSA6OgorICAgKiAgICAgZmFjZSBoYW5kbGUKICAgICoKICAgICogQHJldHVybjoKLSAgICogICAgQm9vbGVhbi4gIFRydWUgaWYgZ2x5cGggbmFtZXMgYXJlIHJlbGlhYmxlLgorICAgKiAgIEJvb2xlYW4uICBUcnVlIGlmIGdseXBoIG5hbWVzIGFyZSByZWxpYWJsZS4KICAgICoKICAgICovCiAgIEZUX0VYUE9SVCggRlRfSW50ICkKQEAgLTQ3OCwzMCArNDc4LDQwIEBACiAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgKgogICAgKiBAZnVuY3Rpb246Ci0gICAqICAgIEZUX0dldF9QU19Gb250X0luZm8KKyAgICogICBGVF9HZXRfUFNfRm9udF9JbmZvCiAgICAqCiAgICAqIEBkZXNjcmlwdGlvbjoKLSAgICogICAgUmV0cmlldmUgdGhlIEBQU19Gb250SW5mb1JlYyBzdHJ1Y3R1cmUgY29ycmVzcG9uZGluZyB0byBhIGdpdmVuCi0gICAqICAgIFBvc3RTY3JpcHQgZm9udC4KKyAgICogICBSZXRyaWV2ZSB0aGUgQFBTX0ZvbnRJbmZvUmVjIHN0cnVjdHVyZSBjb3JyZXNwb25kaW5nIHRvIGEgZ2l2ZW4KKyAgICogICBQb3N0U2NyaXB0IGZvbnQuCiAgICAqCiAgICAqIEBpbnB1dDoKLSAgICogICAgZmFjZSA6OgotICAgKiAgICAgIFBvc3RTY3JpcHQgZmFjZSBoYW5kbGUuCisgICAqICAgZmFjZSA6OgorICAgKiAgICAgUG9zdFNjcmlwdCBmYWNlIGhhbmRsZS4KICAgICoKICAgICogQG91dHB1dDoKLSAgICogICAgYWZvbnRfaW5mbyA6OgotICAgKiAgICAgIE91dHB1dCBmb250IGluZm8gc3RydWN0dXJlIHBvaW50ZXIuCisgICAqICAgYWZvbnRfaW5mbyA6OgorICAgKiAgICAgQSBwb2ludGVyIHRvIGEgQFBTX0ZvbnRJbmZvUmVjIG9iamVjdC4KICAgICoKICAgICogQHJldHVybjoKLSAgICogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgogICAgKgogICAgKiBAbm90ZToKLSAgICogICAgU3RyaW5nIHBvaW50ZXJzIHdpdGhpbiB0aGUgQFBTX0ZvbnRJbmZvUmVjIHN0cnVjdHVyZSBhcmUgb3duZWQgYnkgdGhlCi0gICAqICAgIGZhY2UgYW5kIGRvbid0IG5lZWQgdG8gYmUgZnJlZWQgYnkgdGhlIGNhbGxlci4gIE1pc3NpbmcgZW50cmllcyBpbgotICAgKiAgICB0aGUgZm9udCdzIEZvbnRJbmZvIGRpY3Rpb25hcnkgYXJlIHJlcHJlc2VudGVkIGJ5IGBOVUxMYCBwb2ludGVycy4KKyAgICogICBTdHJpbmcgcG9pbnRlcnMgd2l0aGluIHRoZSBAUFNfRm9udEluZm9SZWMgc3RydWN0dXJlIGFyZSBvd25lZCBieSB0aGUKKyAgICogICBmYWNlIGFuZCBkb24ndCBuZWVkIHRvIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIuICBNaXNzaW5nIGVudHJpZXMgaW4gdGhlCisgICAqICAgZm9udCdzIEZvbnRJbmZvIGRpY3Rpb25hcnkgYXJlIHJlcHJlc2VudGVkIGJ5IGBOVUxMYCBwb2ludGVycy4KICAgICoKLSAgICogICAgSWYgdGhlIGZvbnQncyBmb3JtYXQgaXMgbm90IFBvc3RTY3JpcHQtYmFzZWQsIHRoaXMgZnVuY3Rpb24gd2lsbAotICAgKiAgICByZXR1cm4gdGhlIGBGVF9FcnJfSW52YWxpZF9Bcmd1bWVudGAgZXJyb3IgY29kZS4KKyAgICogICBUaGUgZm9sbG93aW5nIGZvbnQgZm9ybWF0cyBzdXBwb3J0IHRoaXMgZmVhdHVyZTogJ1R5cGV+MScsICdUeXBlfjQyJywKKyAgICogICAnQ0ZGJywgJ0NJRH5UeXBlfjEnLiAgRm9yIG90aGVyIGZvbnQgZm9ybWF0cyB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlCisgICAqICAgYEZUX0Vycl9JbnZhbGlkX0FyZ3VtZW50YCBlcnJvciBjb2RlLgorICAgKgorICAgKiBAZXhhbXBsZToKKyAgICogICBgYGAKKyAgICogICAgIFBTX0ZvbnRJbmZvUmVjICBmb250X2luZm87CisgICAqCisgICAqCisgICAqICAgICBlcnJvciA9IEZUX0dldF9QU19Gb250X0luZm8oIGZhY2UsICZmb250X2luZm8gKTsKKyAgICogICAgIC4uLgorICAgKiAgIGBgYAogICAgKgogICAgKi8KICAgRlRfRVhQT1JUKCBGVF9FcnJvciApCkBAIC01MTIsMjkgKzUyMiwzOSBAQAogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICoKICAgICogQGZ1bmN0aW9uOgotICAgKiAgICBGVF9HZXRfUFNfRm9udF9Qcml2YXRlCisgICAqICAgRlRfR2V0X1BTX0ZvbnRfUHJpdmF0ZQogICAgKgogICAgKiBAZGVzY3JpcHRpb246Ci0gICAqICAgIFJldHJpZXZlIHRoZSBAUFNfUHJpdmF0ZVJlYyBzdHJ1Y3R1cmUgY29ycmVzcG9uZGluZyB0byBhIGdpdmVuCi0gICAqICAgIFBvc3RTY3JpcHQgZm9udC4KKyAgICogICBSZXRyaWV2ZSB0aGUgQFBTX1ByaXZhdGVSZWMgc3RydWN0dXJlIGNvcnJlc3BvbmRpbmcgdG8gYSBnaXZlbgorICAgKiAgIFBvc3RTY3JpcHQgZm9udC4KICAgICoKICAgICogQGlucHV0OgotICAgKiAgICBmYWNlIDo6Ci0gICAqICAgICAgUG9zdFNjcmlwdCBmYWNlIGhhbmRsZS4KKyAgICogICBmYWNlIDo6CisgICAqICAgICBQb3N0U2NyaXB0IGZhY2UgaGFuZGxlLgogICAgKgogICAgKiBAb3V0cHV0OgotICAgKiAgICBhZm9udF9wcml2YXRlIDo6Ci0gICAqICAgICAgT3V0cHV0IHByaXZhdGUgZGljdGlvbmFyeSBzdHJ1Y3R1cmUgcG9pbnRlci4KKyAgICogICBhZm9udF9wcml2YXRlIDo6CisgICAqICAgICBBIHBvaW50ZXIgdG8gYSBAUFNfUHJpdmF0ZVJlYyBvYmplY3QuCiAgICAqCiAgICAqIEByZXR1cm46Ci0gICAqICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KICAgICoKICAgICogQG5vdGU6Ci0gICAqICAgIFRoZSBzdHJpbmcgcG9pbnRlcnMgd2l0aGluIHRoZSBAUFNfUHJpdmF0ZVJlYyBzdHJ1Y3R1cmUgYXJlIG93bmVkIGJ5Ci0gICAqICAgIHRoZSBmYWNlIGFuZCBkb24ndCBuZWVkIHRvIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIuCisgICAqICAgVGhlIHN0cmluZyBwb2ludGVycyB3aXRoaW4gdGhlIEBQU19Qcml2YXRlUmVjIHN0cnVjdHVyZSBhcmUgb3duZWQgYnkKKyAgICogICB0aGUgZmFjZSBhbmQgZG9uJ3QgbmVlZCB0byBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLgogICAgKgotICAgKiAgICBJZiB0aGUgZm9udCdzIGZvcm1hdCBpcyBub3QgUG9zdFNjcmlwdC1iYXNlZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zCi0gICAqICAgIHRoZSBgRlRfRXJyX0ludmFsaWRfQXJndW1lbnRgIGVycm9yIGNvZGUuCisgICAqICAgT25seSB0aGUgJ1R5cGV+MScgZm9udCBmb3JtYXQgc3VwcG9ydHMgdGhpcyBmZWF0dXJlLiAgRm9yIG90aGVyIGZvbnQKKyAgICogICBmb3JtYXRzIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYEZUX0Vycl9JbnZhbGlkX0FyZ3VtZW50YCBlcnJvcgorICAgKiAgIGNvZGUuCisgICAqCisgICAqIEBleGFtcGxlOgorICAgKiAgIGBgYAorICAgKiAgICAgUFNfUHJpdmF0ZVJlYyAgZm9udF9wcml2YXRlOworICAgKgorICAgKgorICAgKiAgICAgZXJyb3IgPSBGVF9HZXRfUFNfRm9udF9Qcml2YXRlKCBmYWNlLCAmZm9udF9wcml2YXRlICk7CisgICAqICAgICAuLi4KKyAgICogICBgYGAKICAgICoKICAgICovCiAgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQpAQCAtNjkzLDY3ICs3MTMsNjcgQEAKICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAqCiAgICAqIEBmdW5jdGlvbjoKLSAgICogICAgRlRfR2V0X1BTX0ZvbnRfVmFsdWUKKyAgICogICBGVF9HZXRfUFNfRm9udF9WYWx1ZQogICAgKgogICAgKiBAZGVzY3JpcHRpb246Ci0gICAqICAgIFJldHJpZXZlIHRoZSB2YWx1ZSBmb3IgdGhlIHN1cHBsaWVkIGtleSBmcm9tIGEgUG9zdFNjcmlwdCBmb250LgorICAgKiAgIFJldHJpZXZlIHRoZSB2YWx1ZSBmb3IgdGhlIHN1cHBsaWVkIGtleSBmcm9tIGEgUG9zdFNjcmlwdCBmb250LgogICAgKgogICAgKiBAaW5wdXQ6Ci0gICAqICAgIGZhY2UgOjoKLSAgICogICAgICBQb3N0U2NyaXB0IGZhY2UgaGFuZGxlLgorICAgKiAgIGZhY2UgOjoKKyAgICogICAgIFBvc3RTY3JpcHQgZmFjZSBoYW5kbGUuCiAgICAqCi0gICAqICAgIGtleSA6OgotICAgKiAgICAgIEFuIGVudW1lcmF0aW9uIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgZGljdGlvbmFyeSBrZXkgdG8gcmV0cmlldmUuCisgICAqICAga2V5IDo6CisgICAqICAgICBBbiBlbnVtZXJhdGlvbiB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIGRpY3Rpb25hcnkga2V5IHRvIHJldHJpZXZlLgogICAgKgotICAgKiAgICBpZHggOjoKLSAgICogICAgICBGb3IgYXJyYXkgdmFsdWVzLCB0aGlzIHNwZWNpZmllcyB0aGUgaW5kZXggdG8gYmUgcmV0dXJuZWQuCisgICAqICAgaWR4IDo6CisgICAqICAgICBGb3IgYXJyYXkgdmFsdWVzLCB0aGlzIHNwZWNpZmllcyB0aGUgaW5kZXggdG8gYmUgcmV0dXJuZWQuCiAgICAqCi0gICAqICAgIHZhbHVlIDo6Ci0gICAqICAgICAgQSBwb2ludGVyIHRvIG1lbW9yeSBpbnRvIHdoaWNoIHRvIHdyaXRlIHRoZSB2YWx1ZS4KKyAgICogICB2YWx1ZSA6OgorICAgKiAgICAgQSBwb2ludGVyIHRvIG1lbW9yeSBpbnRvIHdoaWNoIHRvIHdyaXRlIHRoZSB2YWx1ZS4KICAgICoKLSAgICogICAgdmFsZW5fbGVuIDo6Ci0gICAqICAgICAgVGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgbWVtb3J5IHN1cHBsaWVkIGZvciB0aGUgdmFsdWUuCisgICAqICAgdmFsZW5fbGVuIDo6CisgICAqICAgICBUaGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBtZW1vcnkgc3VwcGxpZWQgZm9yIHRoZSB2YWx1ZS4KICAgICoKICAgICogQG91dHB1dDoKLSAgICogICAgdmFsdWUgOjoKLSAgICogICAgICBUaGUgdmFsdWUgbWF0Y2hpbmcgdGhlIGFib3ZlIGtleSwgaWYgaXQgZXhpc3RzLgorICAgKiAgIHZhbHVlIDo6CisgICAqICAgICBUaGUgdmFsdWUgbWF0Y2hpbmcgdGhlIGFib3ZlIGtleSwgaWYgaXQgZXhpc3RzLgogICAgKgogICAgKiBAcmV0dXJuOgotICAgKiAgICBUaGUgYW1vdW50IG9mIG1lbW9yeSAoaW4gYnl0ZXMpIHJlcXVpcmVkIHRvIGhvbGQgdGhlIHJlcXVlc3RlZCB2YWx1ZQotICAgKiAgICAoaWYgaXQgZXhpc3RzLCAtMSBvdGhlcndpc2UpLgorICAgKiAgIFRoZSBhbW91bnQgb2YgbWVtb3J5IChpbiBieXRlcykgcmVxdWlyZWQgdG8gaG9sZCB0aGUgcmVxdWVzdGVkIHZhbHVlCisgICAqICAgKGlmIGl0IGV4aXN0cywgLTEgb3RoZXJ3aXNlKS4KICAgICoKICAgICogQG5vdGU6Ci0gICAqICAgIFRoZSB2YWx1ZXMgcmV0dXJuZWQgYXJlIG5vdCBwb2ludGVycyBpbnRvIHRoZSBpbnRlcm5hbCBzdHJ1Y3R1cmVzIG9mCi0gICAqICAgIHRoZSBmYWNlLCBidXQgYXJlICdmcmVzaCcgY29waWVzLCBzbyB0aGF0IHRoZSBtZW1vcnkgY29udGFpbmluZyB0aGVtCi0gICAqICAgIGJlbG9uZ3MgdG8gdGhlIGNhbGxpbmcgYXBwbGljYXRpb24uICBUaGlzIGFsc28gZW5mb3JjZXMgdGhlCi0gICAqICAgICdyZWFkLW9ubHknIG5hdHVyZSBvZiB0aGVzZSB2YWx1ZXMsIGkuZS4sIHRoaXMgZnVuY3Rpb24gY2Fubm90IGJlCi0gICAqICAgIHVzZWQgdG8gbWFuaXB1bGF0ZSB0aGUgZmFjZS4KKyAgICogICBUaGUgdmFsdWVzIHJldHVybmVkIGFyZSBub3QgcG9pbnRlcnMgaW50byB0aGUgaW50ZXJuYWwgc3RydWN0dXJlcyBvZgorICAgKiAgIHRoZSBmYWNlLCBidXQgYXJlICdmcmVzaCcgY29waWVzLCBzbyB0aGF0IHRoZSBtZW1vcnkgY29udGFpbmluZyB0aGVtCisgICAqICAgYmVsb25ncyB0byB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4gIFRoaXMgYWxzbyBlbmZvcmNlcyB0aGUKKyAgICogICAncmVhZC1vbmx5JyBuYXR1cmUgb2YgdGhlc2UgdmFsdWVzLCBpLmUuLCB0aGlzIGZ1bmN0aW9uIGNhbm5vdCBiZQorICAgKiAgIHVzZWQgdG8gbWFuaXB1bGF0ZSB0aGUgZmFjZS4KICAgICoKLSAgICogICAgYHZhbHVlYCBpcyBhIHZvaWQgcG9pbnRlciBiZWNhdXNlIHRoZSB2YWx1ZXMgcmV0dXJuZWQgY2FuIGJlIG9mCi0gICAqICAgIHZhcmlvdXMgdHlwZXMuCisgICAqICAgYHZhbHVlYCBpcyBhIHZvaWQgcG9pbnRlciBiZWNhdXNlIHRoZSB2YWx1ZXMgcmV0dXJuZWQgY2FuIGJlIG9mCisgICAqICAgdmFyaW91cyB0eXBlcy4KICAgICoKLSAgICogICAgSWYgZWl0aGVyIGB2YWx1ZWAgaXMgYE5VTExgIG9yIGB2YWx1ZV9sZW5gIGlzIHRvbyBzbWFsbCwganVzdCB0aGUKLSAgICogICAgcmVxdWlyZWQgbWVtb3J5IHNpemUgZm9yIHRoZSByZXF1ZXN0ZWQgZW50cnkgaXMgcmV0dXJuZWQuCisgICAqICAgSWYgZWl0aGVyIGB2YWx1ZWAgaXMgYE5VTExgIG9yIGB2YWx1ZV9sZW5gIGlzIHRvbyBzbWFsbCwganVzdCB0aGUKKyAgICogICByZXF1aXJlZCBtZW1vcnkgc2l6ZSBmb3IgdGhlIHJlcXVlc3RlZCBlbnRyeSBpcyByZXR1cm5lZC4KICAgICoKLSAgICogICAgVGhlIGBpZHhgIHBhcmFtZXRlciBpcyB1c2VkLCBub3Qgb25seSB0byByZXRyaWV2ZSBlbGVtZW50cyBvZiwgZm9yCi0gICAqICAgIGV4YW1wbGUsIHRoZSBGb250TWF0cml4IG9yIEZvbnRCQm94LCBidXQgYWxzbyB0byByZXRyaWV2ZSBuYW1lIGtleXMKLSAgICogICAgZnJvbSB0aGUgQ2hhclN0cmluZ3MgZGljdGlvbmFyeSwgYW5kIHRoZSBjaGFyc3RyaW5ncyB0aGVtc2VsdmVzLiAgSXQKLSAgICogICAgaXMgaWdub3JlZCBmb3IgYXRvbWljIHZhbHVlcy4KKyAgICogICBUaGUgYGlkeGAgcGFyYW1ldGVyIGlzIHVzZWQsIG5vdCBvbmx5IHRvIHJldHJpZXZlIGVsZW1lbnRzIG9mLCBmb3IKKyAgICogICBleGFtcGxlLCB0aGUgRm9udE1hdHJpeCBvciBGb250QkJveCwgYnV0IGFsc28gdG8gcmV0cmlldmUgbmFtZSBrZXlzCisgICAqICAgZnJvbSB0aGUgQ2hhclN0cmluZ3MgZGljdGlvbmFyeSwgYW5kIHRoZSBjaGFyc3RyaW5ncyB0aGVtc2VsdmVzLiAgSXQKKyAgICogICBpcyBpZ25vcmVkIGZvciBhdG9taWMgdmFsdWVzLgogICAgKgotICAgKiAgICBgUFNfRElDVF9CTFVFX1NDQUxFYCByZXR1cm5zIGEgdmFsdWUgdGhhdCBpcyBzY2FsZWQgdXAgYnkgMTAwMC4gIFRvCi0gICAqICAgIGdldCB0aGUgdmFsdWUgYXMgaW4gdGhlIGZvbnQgc3RyZWFtLCB5b3UgbmVlZCB0byBkaXZpZGUgYnkgNjU1MzYwMDAuMAotICAgKiAgICAodG8gcmVtb3ZlIHRoZSBGVF9GaXhlZCBzY2FsZSwgYW5kIHRoZSB4MTAwMCBzY2FsZSkuCisgICAqICAgYFBTX0RJQ1RfQkxVRV9TQ0FMRWAgcmV0dXJucyBhIHZhbHVlIHRoYXQgaXMgc2NhbGVkIHVwIGJ5IDEwMDAuICBUbworICAgKiAgIGdldCB0aGUgdmFsdWUgYXMgaW4gdGhlIGZvbnQgc3RyZWFtLCB5b3UgbmVlZCB0byBkaXZpZGUgYnkgNjU1MzYwMDAuMAorICAgKiAgICh0byByZW1vdmUgdGhlIEZUX0ZpeGVkIHNjYWxlLCBhbmQgdGhlIHgxMDAwIHNjYWxlKS4KICAgICoKLSAgICogICAgSU1QT1JUQU5UOiBPbmx5IGtleS92YWx1ZSBwYWlycyByZWFkIGJ5IHRoZSBGcmVlVHlwZSBpbnRlcnByZXRlciBjYW4KLSAgICogICAgYmUgcmV0cmlldmVkLiAgU28sIGZvciBleGFtcGxlLCBQb3N0U2NyaXB0IHByb2NlZHVyZXMgc3VjaCBhcyBOUCwgTkQsCi0gICAqICAgIGFuZCBSRCBhcmUgbm90IGF2YWlsYWJsZS4gIEFyYml0cmFyeSBrZXlzIGFyZSwgb2J2aW91c2x5LCBub3QgYmUKLSAgICogICAgYXZhaWxhYmxlIGVpdGhlci4KKyAgICogICBJTVBPUlRBTlQ6IE9ubHkga2V5L3ZhbHVlIHBhaXJzIHJlYWQgYnkgdGhlIEZyZWVUeXBlIGludGVycHJldGVyIGNhbgorICAgKiAgIGJlIHJldHJpZXZlZC4gIFNvLCBmb3IgZXhhbXBsZSwgUG9zdFNjcmlwdCBwcm9jZWR1cmVzIHN1Y2ggYXMgTlAsIE5ELAorICAgKiAgIGFuZCBSRCBhcmUgbm90IGF2YWlsYWJsZS4gIEFyYml0cmFyeSBrZXlzIGFyZSwgb2J2aW91c2x5LCBub3QgYmUKKyAgICogICBhdmFpbGFibGUgZWl0aGVyLgogICAgKgotICAgKiAgICBJZiB0aGUgZm9udCdzIGZvcm1hdCBpcyBub3QgUG9zdFNjcmlwdC1iYXNlZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zCi0gICAqICAgIHRoZSBgRlRfRXJyX0ludmFsaWRfQXJndW1lbnRgIGVycm9yIGNvZGUuCisgICAqICAgSWYgdGhlIGZvbnQncyBmb3JtYXQgaXMgbm90IFBvc3RTY3JpcHQtYmFzZWQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucworICAgKiAgIHRoZSBgRlRfRXJyX0ludmFsaWRfQXJndW1lbnRgIGVycm9yIGNvZGUuCiAgICAqCiAgICAqIEBzaW5jZToKLSAgICogICAgMi40LjgKKyAgICogICAyLjQuOAogICAgKgogICAgKi8KICAgRlRfRVhQT1JUKCBGVF9Mb25nICkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaCBiL2luY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaAppbmRleCBhMDk5NTBmLi5lMzFjNjhiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmgKKysrIGIvaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHJ1ZVR5cGUgbmFtZSBJRCBkZWZpbml0aW9ucyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmggYi9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmgKaW5kZXggYzMzZDk5MC4uYTlmNjBlNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9mcmVldHlwZS90dHRhYmxlcy5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvdHR0YWJsZXMuaApAQCAtNSw3ICs1LDcgQEAKICAqICAgQmFzaWMgU0ZOVC9UcnVlVHlwZSB0YWJsZXMgZGVmaW5pdGlvbnMgYW5kIGludGVyZmFjZQogICogICAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC00MjQsOCArNDI0LDggQEAKIAogICAgIC8qIG9ubHkgdmVyc2lvbiA1IGFuZCBoaWdoZXI6ICovCiAKLSAgICBGVF9VU2hvcnQgIHVzTG93ZXJPcHRpY2FsUG9pbnRTaXplOyAgICAgICAvKiBpbiB0d2lwcyAoMS8yMHRoIHBvaW50cykgKi8KLSAgICBGVF9VU2hvcnQgIHVzVXBwZXJPcHRpY2FsUG9pbnRTaXplOyAgICAgICAvKiBpbiB0d2lwcyAoMS8yMHRoIHBvaW50cykgKi8KKyAgICBGVF9VU2hvcnQgIHVzTG93ZXJPcHRpY2FsUG9pbnRTaXplOyAgICAgICAvKiBpbiB0d2lwcyAoMS8yMCBwb2ludHMpICovCisgICAgRlRfVVNob3J0ICB1c1VwcGVyT3B0aWNhbFBvaW50U2l6ZTsgICAgICAgLyogaW4gdHdpcHMgKDEvMjAgcG9pbnRzKSAqLwogCiAgIH0gVFRfT1MyOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFncy5oIGIvaW5jbHVkZS9mcmVldHlwZS90dHRhZ3MuaAppbmRleCA0N2NjYzZkLi45YmY0ZmNhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFncy5oCisrKyBiL2luY2x1ZGUvZnJlZXR5cGUvdHR0YWdzLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUYWdzIGZvciBUcnVlVHlwZSBhbmQgT3BlblR5cGUgdGFibGVzIChzcGVjaWZpY2F0aW9uIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTk1LDYgKzk1LDcgQEAKICNkZWZpbmUgVFRBR19zYml4ICBGVF9NQUtFX1RBRyggJ3MnLCAnYicsICdpJywgJ3gnICkKICNkZWZpbmUgVFRBR19zZm50ICBGVF9NQUtFX1RBRyggJ3MnLCAnZicsICduJywgJ3QnICkKICNkZWZpbmUgVFRBR19TSU5HICBGVF9NQUtFX1RBRyggJ1MnLCAnSScsICdOJywgJ0cnICkKKyNkZWZpbmUgVFRBR19TVkcgICBGVF9NQUtFX1RBRyggJ1MnLCAnVicsICdHJywgJyAnICkKICNkZWZpbmUgVFRBR190cmFrICBGVF9NQUtFX1RBRyggJ3QnLCAncicsICdhJywgJ2snICkKICNkZWZpbmUgVFRBR190cnVlICBGVF9NQUtFX1RBRyggJ3QnLCAncicsICd1JywgJ2UnICkKICNkZWZpbmUgVFRBR190dGMgICBGVF9NQUtFX1RBRyggJ3QnLCAndCcsICdjJywgJyAnICkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnQyYnVpbGQuaCBiL2luY2x1ZGUvZnQyYnVpbGQuaAppbmRleCA2MjY4NmIxLi41ODQ5MWNlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2Z0MmJ1aWxkLmgKKysrIGIvaW5jbHVkZS9mdDJidWlsZC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgMiBidWlsZCBhbmQgc2V0dXAgbWFjcm9zLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKaW5kZXggOTk5ODg0OC4uZjgxZGUzZSAxMDA2NDQKLS0tIGEvbWVzb24uYnVpbGQKKysrIGIvbWVzb24uYnVpbGQKQEAgLTIsNyArMiw3IEBACiAjIE1lc29uIHByb2plY3QgZmlsZSBmb3IgRnJlZVR5cGUgMgogIwogCi0jIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAyMC0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKQEAgLTI1LDkgKzI1LDkgQEAKIAogcHJvamVjdCgnZnJlZXR5cGUyJywgJ2MnLAogICBtZXNvbl92ZXJzaW9uOiAnPj0gMC41NS4wJywKLSAgZGVmYXVsdF9vcHRpb25zOiBbJ2RlZmF1bHRfbGlicmFyeT1ib3RoJ10sCiAgIHZlcnNpb246IHJ1bl9jb21tYW5kKCdidWlsZHMvbWVzb24vZXh0cmFjdF9mcmVldHlwZV92ZXJzaW9uLnB5JywKLSAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCcpLnN0ZG91dCgpLnN0cmlwKCksCisgICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgnLAorICAgICAgICAgICAgICAgICAgICAgICBjaGVjazogdHJ1ZSkuc3Rkb3V0KCkuc3RyaXAoKSwKICkKIAogCkBAIC0zNSwyMiArMzUsMjUgQEAKICMgdmFyaWFibGU7IHdlIHRodXMgdXNlIGFuIGV4dGVybmFsIGNvbW1hbmQgdG8gaGF2ZSB0aGlzIGZ1bmN0aW9uYWxpdHkKICMgd2l0aCBvbGRlciB2ZXJzaW9ucywgdG9vLgogCi1weXRob24gPSBpbXBvcnQoJ3B5dGhvbicpCi1weXRob25fZXhlID0gcHl0aG9uLmZpbmRfaW5zdGFsbGF0aW9uKHJlcXVpcmVkOiB0cnVlKQorcHl0aG9uX2V4ZSA9IGZpbmRfcHJvZ3JhbSgncHl0aG9uMycpCiAKIGZ0Ml9zb192ZXJzaW9uID0gcnVuX2NvbW1hbmQocHl0aG9uX2V4ZSwKICAgZmlsZXMoJ2J1aWxkcy9tZXNvbi9leHRyYWN0X2xpYnRvb2xfdmVyc2lvbi5weScpLAogICAnLS1zb3ZlcnNpb24nLAotICBmaWxlcygnYnVpbGRzL3VuaXgvY29uZmlndXJlLnJhdycpKS5zdGRvdXQoKS5zdHJpcCgpCisgIGZpbGVzKCdidWlsZHMvdW5peC9jb25maWd1cmUucmF3JyksCisgIGNoZWNrOiB0cnVlKS5zdGRvdXQoKS5zdHJpcCgpCiAKIGZ0Ml9wa2djb25maWdfdmVyc2lvbiA9IHJ1bl9jb21tYW5kKHB5dGhvbl9leGUsCiAgIGZpbGVzKCdidWlsZHMvbWVzb24vZXh0cmFjdF9saWJ0b29sX3ZlcnNpb24ucHknKSwKLSAgZmlsZXMoJ2J1aWxkcy91bml4L2NvbmZpZ3VyZS5yYXcnKSkuc3Rkb3V0KCkuc3RyaXAoKQorICBmaWxlcygnYnVpbGRzL3VuaXgvY29uZmlndXJlLnJhdycpLAorICBjaGVjazogdHJ1ZSkuc3Rkb3V0KCkuc3RyaXAoKQogCiBmdDJfaW5jbHVkZXMgPSBpbmNsdWRlX2RpcmVjdG9yaWVzKCdpbmNsdWRlJykKIAogZnJlZXR5cGVfaW5jbHVkZWRpciA9IGpvaW5fcGF0aHMoZ2V0X29wdGlvbignaW5jbHVkZWRpcicpLCAnZnJlZXR5cGUyJykKIAorZnQyX2RlZmluZXMgPSBbXQorCiAjIEdlbmVyYXRlIGEgY3VzdG9tIGBmdG1vZHVsZS5oYCB2ZXJzaW9uIGJhc2VkIG9uIHRoZSBjb250ZW50IG9mCiAjIGBtb2R1bGVzLmNmZ2AuCiAKQEAgLTYzLDYgKzY2LDcgQEAKICAgaW5zdGFsbF9kaXI6IGpvaW5fcGF0aHMoZnJlZXR5cGVfaW5jbHVkZWRpciwgJ2ZyZWV0eXBlL2NvbmZpZycpLAogKQogZnQyX3NvdXJjZXMgPSBbZnRtb2R1bGVfaF0KK2Z0Ml9kZWZpbmVzICs9IFsnLURGVF9DT05GSUdfTU9EVUxFU19IPTxmdG1vZHVsZS5oPiddCiAKIAogIyBGcmVlVHlwZSAyIG1vZHVsZXMuCkBAIC03MCw3ICs3NCw4IEBACiBmdF9tYWluX21vZHVsZXMgPSBydW5fY29tbWFuZChweXRob25fZXhlLAogICBmaWxlcygnYnVpbGRzL21lc29uL3BhcnNlX21vZHVsZXNfY2ZnLnB5JyksCiAgICctLWZvcm1hdD1tYWluLW1vZHVsZXMnLAotICBmaWxlcygnbW9kdWxlcy5jZmcnKSkuc3Rkb3V0KCkuc3RyaXAoKS5zcGxpdCgpCisgIGZpbGVzKCdtb2R1bGVzLmNmZycpLAorICBjaGVjazogdHJ1ZSkuc3Rkb3V0KCkuc3RyaXAoKS5zcGxpdCgpCiAKIGZ0Ml9zb3VyY2VzICs9IGZpbGVzKFsKICAgJ3NyYy9iYXNlL2Z0YmFzZS5jJywKQEAgLTkxLDcgKzk2LDggQEAKIGZ0X2F1eF9tb2R1bGVzID0gcnVuX2NvbW1hbmQocHl0aG9uX2V4ZSwKICAgZmlsZXMoJ2J1aWxkcy9tZXNvbi9wYXJzZV9tb2R1bGVzX2NmZy5weScpLAogICAnLS1mb3JtYXQ9YXV4LW1vZHVsZXMnLAotICBmaWxlcygnbW9kdWxlcy5jZmcnKSkuc3Rkb3V0KCkuc3RyaXAoKS5zcGxpdCgpCisgIGZpbGVzKCdtb2R1bGVzLmNmZycpLAorICBjaGVjazogdHJ1ZSkuc3Rkb3V0KCkuc3RyaXAoKS5zcGxpdCgpCiAKIGZvcmVhY2ggYXV4bW9kOiBmdF9hdXhfbW9kdWxlcwogICBzb3VyY2UgPSBhdXhtb2QKQEAgLTExNyw3ICsxMjMsOCBAQAogYmFzZV9leHRlbnNpb25zID0gcnVuX2NvbW1hbmQocHl0aG9uX2V4ZSwKICAgZmlsZXMoJ2J1aWxkcy9tZXNvbi9wYXJzZV9tb2R1bGVzX2NmZy5weScpLAogICAnLS1mb3JtYXQ9YmFzZS1leHRlbnNpb25zLWxpc3QnLAotICBmaWxlcygnbW9kdWxlcy5jZmcnKSkuc3Rkb3V0KCkuc3BsaXQoKQorICBmaWxlcygnbW9kdWxlcy5jZmcnKSwKKyAgY2hlY2s6IHRydWUpLnN0ZG91dCgpLnNwbGl0KCkKIAogZm9yZWFjaCBleHQ6IGJhc2VfZXh0ZW5zaW9ucwogICBmdDJfc291cmNlcyArPSBmaWxlcygnc3JjL2Jhc2UvJyArIGV4dCkKQEAgLTE2Nyw2ICsxNzQsNyBAQAogICAnaW5jbHVkZS9mcmVldHlwZS9mdHRyaWdvbi5oJywKICAgJ2luY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oJywKICAgJ2luY2x1ZGUvZnJlZXR5cGUvZnR3aW5mbnQuaCcsCisgICdpbmNsdWRlL2ZyZWV0eXBlL290c3ZnLmgnLAogICAnaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oJywKICAgJ2luY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaCcsCiAgICdpbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmgnLApAQCAtMTgyLDcgKzE5MCw3IEBACiAgICdpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9wdWJsaWMtbWFjcm9zLmgnLAogXSkKIAotZnQyX2RlZmluZXMgPSBbJy1ERlQyX0JVSUxEX0xJQlJBUlk9MSddCitmdDJfZGVmaW5lcyArPSBbJy1ERlQyX0JVSUxEX0xJQlJBUlk9MSddCiAKIAogIyBTeXN0ZW0gc3VwcG9ydCBmaWxlLgpAQCAtMjYyLDE1ICsyNzAsNDkgQEAKIAogCiAjIGV4dGVybmFsIEdaaXAgc3VwcG9ydAotemxpYl9kZXAgPSBkZXBlbmRlbmN5KCd6bGliJywKLSAgcmVxdWlyZWQ6IGdldF9vcHRpb24oJ3psaWInKSwKLSAgZmFsbGJhY2s6ICd6bGliJykKK3psaWJfb3B0aW9uID0gZ2V0X29wdGlvbignemxpYicpCiAKLWlmIHpsaWJfZGVwLmZvdW5kKCkKLSAgZnRvcHRpb25fY29tbWFuZCArPSBbJy0tZW5hYmxlPUZUX0NPTkZJR19PUFRJT05fU1lTVEVNX1pMSUInXQorIyBCYWNrd2FyZHMtY29tcGF0aWJsZSBhbGlhc2VzLgoraWYgemxpYl9vcHRpb24gPT0gJ2Rpc2FibGVkJworICB6bGliX29wdGlvbiA9ICdub25lJworZWxpZiB6bGliX29wdGlvbiA9PSAnZW5hYmxlZCcKKyAgemxpYl9vcHRpb24gPSAnYXV0bycKK2VuZGlmCisKK2lmIHpsaWJfb3B0aW9uID09ICdhdXRvJworICAjIEZpcnN0IHRyeSB0byBmaW5kIGEgc3lzdGVtIGluc3RhbGxhdGlvbiwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0bworICAjIHRoZSBzdWJwcm9qZWN0LgorICB6bGliX2RlcCA9IGRlcGVuZGVuY3koJ3psaWInLAorICAgIHJlcXVpcmVkOiBmYWxzZSkKKyAgaWYgemxpYl9kZXAuZm91bmQoKQorICAgIHpsaWJfb3B0aW9uID0gJ3N5c3RlbScKKyAgZWxzZQorICAgIHpsaWJfb3B0aW9uID0gJ2V4dGVybmFsJworICBlbmRpZgorZW5kaWYKKworaWYgemxpYl9vcHRpb24gPT0gJ25vbmUnCisgIGZ0b3B0aW9uX2NvbW1hbmQgKz0gWyAnLS1kaXNhYmxlPUZUX0NPTkZJR19PUFRJT05fVVNFX1pMSUInIF0KK2VsaWYgemxpYl9vcHRpb24gPT0gJ2ludGVybmFsJworICBmdG9wdGlvbl9jb21tYW5kICs9IFsgJy0tZW5hYmxlPUZUX0NPTkZJR19PUFRJT05fVVNFX1pMSUInIF0KK2VsaWYgemxpYl9vcHRpb24gPT0gJ2V4dGVybmFsJworICBmdG9wdGlvbl9jb21tYW5kICs9IFsgJy0tZW5hYmxlPUZUX0NPTkZJR19PUFRJT05fVVNFX1pMSUInIF0KKyAgemxpYl9wcm9qZWN0ID0gc3VicHJvamVjdCgnemxpYicsCisgICAgcmVxdWlyZWQ6IHRydWUsCisgICAgZGVmYXVsdF9vcHRpb25zOiAnZGVmYXVsdF9saWJyYXJ5PXN0YXRpYycpCisgIHpsaWJfZGVwID0gemxpYl9wcm9qZWN0LmdldF92YXJpYWJsZSgnemxpYl9kZXAnKQorICBmdDJfZGVwcyArPSBbemxpYl9kZXBdCitlbGlmIHpsaWJfb3B0aW9uID09ICdzeXN0ZW0nCisgIHpsaWJfZGVwID0gZGVwZW5kZW5jeSgnemxpYicsCisgICAgcmVxdWlyZWQ6IHRydWUpCisgIGFzc2VydCh6bGliX2RlcC5mb3VuZCgpLCAnQ291bGQgbm90IGZpbmQgc3lzdGVtIHpsaWIgaW5zdGFsbGF0aW9uIScpCisgIGZ0b3B0aW9uX2NvbW1hbmQgKz0gWworICAgICctLWVuYWJsZT1GVF9DT05GSUdfT1BUSU9OX1VTRV9aTElCJywKKyAgICAnLS1lbmFibGU9RlRfQ09ORklHX09QVElPTl9TWVNURU1fWkxJQicsCisgIF0KICAgZnQyX2RlcHMgKz0gW3psaWJfZGVwXQogZWxzZQotICBmdG9wdGlvbl9jb21tYW5kICs9IFsnLS1kaXNhYmxlPUZUX0NPTkZJR19PUFRJT05fU1lTVEVNX1pMSUInXQorICBhc3NlcnQoZmFsc2UsICdJbnZhbGlkIHpsaWIgb3B0aW9uICcgKyB6bGliX29wdGlvbikKIGVuZGlmCiAKICMgQlppcDIgc3VwcG9ydApAQCAtMjk2LDcgKzMzOCw4IEBACiAjIEhhcmZidXp6IHN1cHBvcnQKIGhhcmZidXp6X2RlcCA9IGRlcGVuZGVuY3koJ2hhcmZidXp6JywKICAgdmVyc2lvbjogJz49IDIuMC4wJywKLSAgcmVxdWlyZWQ6IGdldF9vcHRpb24oJ2hhcmZidXp6JykpCisgIHJlcXVpcmVkOiBnZXRfb3B0aW9uKCdoYXJmYnV6eicpLAorICBkZWZhdWx0X29wdGlvbnM6IFsnZnJlZXR5cGU9ZGlzYWJsZWQnXSkKIAogaWYgaGFyZmJ1enpfZGVwLmZvdW5kKCkKICAgZnRvcHRpb25fY29tbWFuZCArPSBbJy0tZW5hYmxlPUZUX0NPTkZJR19PUFRJT05fVVNFX0hBUkZCVVpaJ10KQEAgLTQxNyw3ICs0NjAsNyBAQAogc3VtbWFyeSh7J09TJzogaG9zdF9tYWNoaW5lLnN5c3RlbSgpLAogICAgICAgICB9LCBzZWN0aW9uOiAnT3BlcmF0aW5nIFN5c3RlbScpCiAKLXN1bW1hcnkoeydabGliJzogemxpYl9kZXAuZm91bmQoKSA/ICdleHRlcm5hbCcgOiAnaW50ZXJuYWwnLAorc3VtbWFyeSh7J1psaWInOiB6bGliX29wdGlvbiwKICAgICAgICAgICdCemlwMic6IGJ6aXAyX2RlcC5mb3VuZCgpID8gJ3llcycgOiAnbm8nLAogICAgICAgICAgJ1BuZyc6IGxpYnBuZ19kZXAuZm91bmQoKSA/ICd5ZXMnIDogJ25vJywKICAgICAgICAgICdIYXJmYnV6eic6IGhhcmZidXp6X2RlcC5mb3VuZCgpID8gJ3llcycgOiAnbm8nLApkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAppbmRleCAzNzVlYjcxLi5lNGFkNTBjIDEwMDY0NAotLS0gYS9tZXNvbl9vcHRpb25zLnR4dAorKysgYi9tZXNvbl9vcHRpb25zLnR4dApAQCAtMiw3ICsyLDcgQEAKICMgbWVzb25fb3B0aW9ucy50eHQKICMKIAotIyBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCkBAIC00Niw4ICs0NiwxMCBAQAogICBkZXNjcmlwdGlvbjogJ0VuYWJsZSBGcmVlVHlwZSB1bml0IGFuZCByZWdyZXNzaW9uIHRlc3RzJykKIAogb3B0aW9uKCd6bGliJywKLSAgdHlwZTogJ2ZlYXR1cmUnLAotICB2YWx1ZTogJ2F1dG8nLAorICB0eXBlOiAnY29tYm8nLAorICBjaG9pY2VzOiBbICdhdXRvJywgJ25vbmUnLAorICAgICAgICAgICAgICdpbnRlcm5hbCcsICdleHRlcm5hbCcsICdzeXN0ZW0nLAorICAgICAgICAgICAgICdkaXNhYmxlZCcsICdlbmFibGVkJyBdLAogICBkZXNjcmlwdGlvbjogJ1N1cHBvcnQgcmVhZGluZyBnemlwLWNvbXByZXNzZWQgZm9udCBmaWxlcycpCiAKICMgRU9GCmRpZmYgLS1naXQgYS9tb2R1bGVzLmNmZyBiL21vZHVsZXMuY2ZnCmluZGV4IDMwZjdmYWMuLjViNmM5YjUgMTAwNjQ0Ci0tLSBhL21vZHVsZXMuY2ZnCisrKyBiL21vZHVsZXMuY2ZnCkBAIC0xLDYgKzEsNiBAQAogIyBtb2R1bGVzLmNmZwogIwotIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCkBAIC05OSw2ICs5OSw5IEBACiAjIE1vbm9jaHJvbWUgcmFzdGVyaXplci4KIFJBU1RFUl9NT0RVTEVTICs9IHJhc3RlcgogCisjIE9ULVNWRy4KK1JBU1RFUl9NT0RVTEVTICs9IHN2ZworCiAjIFNpZ25lZCBkaXN0YW5jZSBmaWVsZCByYXN0ZXJpemVyLgogUkFTVEVSX01PRFVMRVMgKz0gc2RmCiAKZGlmZiAtLWdpdCBhL3NyYy9hdXRvZml0L2FmYmx1ZS5jIGIvc3JjL2F1dG9maXQvYWZibHVlLmMKaW5kZXggYzllODA0NS4uZDc2NTViOSAxMDA2NDQKLS0tIGEvc3JjL2F1dG9maXQvYWZibHVlLmMKKysrIGIvc3JjL2F1dG9maXQvYWZibHVlLmMKQEAgLTcsNyArNyw3IEBACiAgKgogICogICBBdXRvLWZpdHRlciBkYXRhIGZvciBibHVlIHN0cmluZ3MgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9hdXRvZml0L2FmYmx1ZS5jaW4gYi9zcmMvYXV0b2ZpdC9hZmJsdWUuY2luCmluZGV4IDA3MWU4MGIuLmQ1NjFjNTAgMTAwNjQ0Ci0tLSBhL3NyYy9hdXRvZml0L2FmYmx1ZS5jaW4KKysrIGIvc3JjL2F1dG9maXQvYWZibHVlLmNpbgpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEF1dG8tZml0dGVyIGRhdGEgZm9yIGJsdWUgc3RyaW5ncyAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL2F1dG9maXQvYWZibHVlLmRhdCBiL3NyYy9hdXRvZml0L2FmYmx1ZS5kYXQKaW5kZXggMWFhOWIyNi4uYjdlZmU4YiAxMDA2NDQKLS0tIGEvc3JjL2F1dG9maXQvYWZibHVlLmRhdAorKysgYi9zcmMvYXV0b2ZpdC9hZmJsdWUuZGF0CkBAIC0yLDcgKzIsNyBAQAogLy8KIC8vICAgQXV0by1maXR0ZXIgZGF0YSBmb3IgYmx1ZSBzdHJpbmdzLgogLy8KLS8vIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIGJ5CisvLyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMyBieQogLy8gRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogLy8KIC8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9hdXRvZml0L2FmYmx1ZS5oIGIvc3JjL2F1dG9maXQvYWZibHVlLmgKaW5kZXggMzExYzllMy4uNzZmMmY0NyAxMDA2NDQKLS0tIGEvc3JjL2F1dG9maXQvYWZibHVlLmgKKysrIGIvc3JjL2F1dG9maXQvYWZibHVlLmgKQEAgLTcsNyArNyw3IEBACiAgKgogICogICBBdXRvLWZpdHRlciBkYXRhIGZvciBibHVlIHN0cmluZ3MgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9hdXRvZml0L2FmYmx1ZS5oaW4gYi9zcmMvYXV0b2ZpdC9hZmJsdWUuaGluCmluZGV4IDUxODY5MTQuLjZhMzEyOTggMTAwNjQ0Ci0tLSBhL3NyYy9hdXRvZml0L2FmYmx1ZS5oaW4KKysrIGIvc3JjL2F1dG9maXQvYWZibHVlLmhpbgpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEF1dG8tZml0dGVyIGRhdGEgZm9yIGJsdWUgc3RyaW5ncyAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL2F1dG9maXQvYWZjamsuYyBiL3NyYy9hdXRvZml0L2FmY2prLmMKaW5kZXggN2U0NmI2Yi4uNWRhZWZmZiAxMDA2NDQKLS0tIGEvc3JjL2F1dG9maXQvYWZjamsuYworKysgYi9zcmMvYXV0b2ZpdC9hZmNqay5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQXV0by1maXR0ZXIgaGludGluZyByb3V0aW5lcyBmb3IgQ0pLIHdyaXRpbmcgc3lzdGVtIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC02NTAsNyArNjUwLDcgQEAKICAgICAgIGFmX2Nqa19tZXRyaWNzX2NoZWNrX2RpZ2l0cyggbWV0cmljcywgZmFjZSApOwogICAgIH0KIAotICAgIEZUX1NldF9DaGFybWFwKCBmYWNlLCBvbGRtYXAgKTsKKyAgICBmYWNlLT5jaGFybWFwID0gb2xkbWFwOwogICAgIHJldHVybiBGVF9FcnJfT2s7CiAgIH0KIApAQCAtNzQxLDkgKzc0MSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAoIGRpbSA9PSBBRl9ESU1FTlNJT05fSE9SWiApID8gJ0gnIDogJ1YnLAogICAgICAgICAgICAgICAgICAgICBubiwgYmx1ZS0+cmVmLm9yZywgYmx1ZS0+c2hvb3Qub3JnICkpOwogICAgICAgICBGVF9UUkFDRTUoKCAiICAgICByZWY6ICAgY3VyPSUuMmYgZml0PSUuMmZcbiIsCi0gICAgICAgICAgICAgICAgICAgIGJsdWUtPnJlZi5jdXIgLyA2NC4wLCBibHVlLT5yZWYuZml0IC8gNjQuMCApKTsKKyAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSlibHVlLT5yZWYuY3VyIC8gNjQsCisgICAgICAgICAgICAgICAgICAgIChkb3VibGUpYmx1ZS0+cmVmLmZpdCAvIDY0ICkpOwogICAgICAgICBGVF9UUkFDRTUoKCAiICAgICBzaG9vdDogY3VyPSUuMmYgZml0PSUuMmZcbiIsCi0gICAgICAgICAgICAgICAgICAgIGJsdWUtPnNob290LmN1ciAvIDY0LjAsIGJsdWUtPnNob290LmZpdCAvIDY0LjAgKSk7CisgICAgICAgICAgICAgICAgICAgIChkb3VibGUpYmx1ZS0+c2hvb3QuY3VyIC8gNjQsCisgICAgICAgICAgICAgICAgICAgIChkb3VibGUpYmx1ZS0+c2hvb3QuZml0IC8gNjQgKSk7CiAKICAgICAgICAgYmx1ZS0+ZmxhZ3MgfD0gQUZfQ0pLX0JMVUVfQUNUSVZFOwogICAgICAgfQpAQCAtODQzLDcgKzg0NSw3IEBACiAgIHsKICAgICBBRl9BeGlzSGludHMgIGF4aXMgICAgICAgICAgPSAmaGludHMtPmF4aXNbZGltXTsKICAgICBBRl9TZWdtZW50ICAgIHNlZ21lbnRzICAgICAgPSBheGlzLT5zZWdtZW50czsKLSAgICBBRl9TZWdtZW50ICAgIHNlZ21lbnRfbGltaXQgPSBzZWdtZW50cyArIGF4aXMtPm51bV9zZWdtZW50czsKKyAgICBBRl9TZWdtZW50ICAgIHNlZ21lbnRfbGltaXQgPSBGVF9PRkZTRVQoIHNlZ21lbnRzLCBheGlzLT5udW1fc2VnbWVudHMgKTsKICAgICBBRl9EaXJlY3Rpb24gIG1ham9yX2RpciAgICAgPSBheGlzLT5tYWpvcl9kaXI7CiAgICAgQUZfU2VnbWVudCAgICBzZWcxLCBzZWcyOwogICAgIEZUX1BvcyAgICAgICAgbGVuX3RocmVzaG9sZDsKQEAgLTEwMDUsNyArMTAwNyw3IEBACiAgICAgQUZfQ0pLQXhpcyAgICBsYXhpcyAgPSAmKChBRl9DSktNZXRyaWNzKWhpbnRzLT5tZXRyaWNzKS0+YXhpc1tkaW1dOwogCiAgICAgQUZfU2VnbWVudCAgICBzZWdtZW50cyAgICAgID0gYXhpcy0+c2VnbWVudHM7Ci0gICAgQUZfU2VnbWVudCAgICBzZWdtZW50X2xpbWl0ID0gc2VnbWVudHMgKyBheGlzLT5udW1fc2VnbWVudHM7CisgICAgQUZfU2VnbWVudCAgICBzZWdtZW50X2xpbWl0ID0gRlRfT0ZGU0VUKCBzZWdtZW50cywgYXhpcy0+bnVtX3NlZ21lbnRzICk7CiAgICAgQUZfU2VnbWVudCAgICBzZWc7CiAKICAgICBGVF9GaXhlZCAgICAgIHNjYWxlOwpAQCAtMTA0NCw3ICsxMDQ2LDcgQEAKICAgICB7CiAgICAgICBBRl9FZGdlICBmb3VuZCA9IE5VTEw7CiAgICAgICBGVF9Qb3MgICBiZXN0ICA9IDB4RkZGRlU7Ci0gICAgICBGVF9JbnQgICBlZTsKKyAgICAgIEZUX1VJbnQgIGVlOwogCiAKICAgICAgIC8qIGxvb2sgZm9yIGFuIGVkZ2UgY29ycmVzcG9uZGluZyB0byB0aGUgc2VnbWVudCAqLwpAQCAtMTE1Myw3ICsxMTU1LDcgQEAKICAgICAgKi8KICAgICB7CiAgICAgICBBRl9FZGdlICBlZGdlcyAgICAgID0gYXhpcy0+ZWRnZXM7Ci0gICAgICBBRl9FZGdlICBlZGdlX2xpbWl0ID0gZWRnZXMgKyBheGlzLT5udW1fZWRnZXM7CisgICAgICBBRl9FZGdlICBlZGdlX2xpbWl0ID0gRlRfT0ZGU0VUKCBlZGdlcywgYXhpcy0+bnVtX2VkZ2VzICk7CiAgICAgICBBRl9FZGdlICBlZGdlOwogCiAKQEAgLTEyOTEsNyArMTI5Myw3IEBACiAgIHsKICAgICBBRl9BeGlzSGludHMgIGF4aXMgICAgICAgPSAmaGludHMtPmF4aXNbZGltXTsKICAgICBBRl9FZGdlICAgICAgIGVkZ2UgICAgICAgPSBheGlzLT5lZGdlczsKLSAgICBBRl9FZGdlICAgICAgIGVkZ2VfbGltaXQgPSBlZGdlICsgYXhpcy0+bnVtX2VkZ2VzOworICAgIEFGX0VkZ2UgICAgICAgZWRnZV9saW1pdCA9IEZUX09GRlNFVCggZWRnZSwgYXhpcy0+bnVtX2VkZ2VzICk7CiAgICAgQUZfQ0pLQXhpcyAgICBjamsgICAgICAgID0gJm1ldHJpY3MtPmF4aXNbZGltXTsKICAgICBGVF9GaXhlZCAgICAgIHNjYWxlICAgICAgPSBjamstPnNjYWxlOwogICAgIEZUX1BvcyAgICAgICAgYmVzdF9kaXN0MDsgIC8qIGluaXRpYWwgdGhyZXNob2xkICovCkBAIC0xNjI5LDggKzE2MzEsMTAgQEAKICAgICBGVF9UUkFDRTUoKCAiICBDSktMSU5LOiBlZGdlICVsZCBAJWQgKG9wb3M9JS4yZikgbGlua2VkIHRvICUuMmYsIgogICAgICAgICAgICAgICAgICIgZGlzdCB3YXMgJS4yZiwgbm93ICUuMmZcbiIsCiAgICAgICAgICAgICAgICAgc3RlbV9lZGdlIC0gaGludHMtPmF4aXNbZGltXS5lZGdlcywgc3RlbV9lZGdlLT5mcG9zLAotICAgICAgICAgICAgICAgIHN0ZW1fZWRnZS0+b3BvcyAvIDY0LjAsIHN0ZW1fZWRnZS0+cG9zIC8gNjQuMCwKLSAgICAgICAgICAgICAgICBkaXN0IC8gNjQuMCwgZml0dGVkX3dpZHRoIC8gNjQuMCApKTsKKyAgICAgICAgICAgICAgICAoZG91YmxlKXN0ZW1fZWRnZS0+b3BvcyAvIDY0LAorICAgICAgICAgICAgICAgIChkb3VibGUpc3RlbV9lZGdlLT5wb3MgLyA2NCwKKyAgICAgICAgICAgICAgICAoZG91YmxlKWRpc3QgLyA2NCwKKyAgICAgICAgICAgICAgICAoZG91YmxlKWZpdHRlZF93aWR0aCAvIDY0ICkpOwogICB9CiAKIApAQCAtMTc5OCw3ICsxODAyLDcgQEAKICAgewogICAgIEFGX0F4aXNIaW50cyAgYXhpcyAgICAgICA9ICZoaW50cy0+YXhpc1tkaW1dOwogICAgIEFGX0VkZ2UgICAgICAgZWRnZXMgICAgICA9IGF4aXMtPmVkZ2VzOwotICAgIEFGX0VkZ2UgICAgICAgZWRnZV9saW1pdCA9IGVkZ2VzICsgYXhpcy0+bnVtX2VkZ2VzOworICAgIEFGX0VkZ2UgICAgICAgZWRnZV9saW1pdCA9IEZUX09GRlNFVCggZWRnZXMsIGF4aXMtPm51bV9lZGdlcyApOwogICAgIEZUX1B0ckRpc3QgICAgbl9lZGdlczsKICAgICBBRl9FZGdlICAgICAgIGVkZ2U7CiAgICAgQUZfRWRnZSAgICAgICBhbmNob3IgICA9IE5VTEw7CkBAIC0xODUwLDggKzE4NTQsOCBAQAogI2lmZGVmIEZUX0RFQlVHX0xFVkVMX1RSQUNFCiAgICAgICAgIEZUX1RSQUNFNSgoICIgIENKS0JMVUU6IGVkZ2UgJWxkIEAlZCAob3Bvcz0lLjJmKSBzbmFwcGVkIHRvICUuMmYsIgogICAgICAgICAgICAgICAgICAgICAiIHdhcyAlLjJmXG4iLAotICAgICAgICAgICAgICAgICAgICBlZGdlMSAtIGVkZ2VzLCBlZGdlMS0+ZnBvcywgZWRnZTEtPm9wb3MgLyA2NC4wLAotICAgICAgICAgICAgICAgICAgICBibHVlLT5maXQgLyA2NC4wLCBlZGdlMS0+cG9zIC8gNjQuMCApKTsKKyAgICAgICAgICAgICAgICAgICAgZWRnZTEgLSBlZGdlcywgZWRnZTEtPmZwb3MsIChkb3VibGUpZWRnZTEtPm9wb3MgLyA2NCwKKyAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSlibHVlLT5maXQgLyA2NCwgKGRvdWJsZSllZGdlMS0+cG9zIC8gNjQgKSk7CiAKICAgICAgICAgbnVtX2FjdGlvbnMrKzsKICNlbmRpZgpAQCAtMjAyNCw4ICsyMDI4LDggQEAKICNpZiAwCiAgICAgICBwcmludGYoICJzdGVtICglZCwlZCkgYWRqdXN0ZWQgKCUuMWYsJS4xZilcbiIsCiAgICAgICAgICAgICAgICBlZGdlIC0gZWRnZXMsIGVkZ2UyIC0gZWRnZXMsCi0gICAgICAgICAgICAgICAoIGVkZ2UtPnBvcyAtIGVkZ2UtPm9wb3MgKSAvIDY0LjAsCi0gICAgICAgICAgICAgICAoIGVkZ2UyLT5wb3MgLSBlZGdlMi0+b3BvcyApIC8gNjQuMCApOworICAgICAgICAgICAgICAgKGRvdWJsZSkoIGVkZ2UtPnBvcyAtIGVkZ2UtPm9wb3MgKSAvIDY0LAorICAgICAgICAgICAgICAgKGRvdWJsZSkoIGVkZ2UyLT5wb3MgLSBlZGdlMi0+b3BvcyApIC8gNjQgKTsKICNlbmRpZgogCiAgICAgICBhbmNob3IgPSBlZGdlOwpAQCAtMjE3Nyw3ICsyMTgxLDcgQEAKICAgewogICAgIEFGX0F4aXNIaW50cyAgYXhpcyAgICAgICA9ICYgaGludHMtPmF4aXNbZGltXTsKICAgICBBRl9FZGdlICAgICAgIGVkZ2VzICAgICAgPSBheGlzLT5lZGdlczsKLSAgICBBRl9FZGdlICAgICAgIGVkZ2VfbGltaXQgPSBlZGdlcyArIGF4aXMtPm51bV9lZGdlczsKKyAgICBBRl9FZGdlICAgICAgIGVkZ2VfbGltaXQgPSBGVF9PRkZTRVQoIGVkZ2VzLCBheGlzLT5udW1fZWRnZXMgKTsKICAgICBBRl9FZGdlICAgICAgIGVkZ2U7CiAgICAgRlRfQm9vbCAgICAgICBzbmFwcGluZzsKIApkaWZmIC0tZ2l0IGEvc3JjL2F1dG9maXQvYWZjamsuaCBiL3NyYy9hdXRvZml0L2FmY2prLmgKaW5kZXggNThhYTI5OC4uYmQ3YjgxYiAxMDA2NDQKLS0tIGEvc3JjL2F1dG9maXQvYWZjamsuaAorKysgYi9zcmMvYXV0b2ZpdC9hZmNqay5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQXV0by1maXR0ZXIgaGludGluZyByb3V0aW5lcyBmb3IgQ0pLIHdyaXRpbmcgc3lzdGVtIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvYXV0b2ZpdC9hZmNvdmVyLmggYi9zcmMvYXV0b2ZpdC9hZmNvdmVyLmgKaW5kZXggYzdhZTFlOS4uMTAyZWQ0MiAxMDA2NDQKLS0tIGEvc3JjL2F1dG9maXQvYWZjb3Zlci5oCisrKyBiL3NyYy9hdXRvZml0L2FmY292ZXIuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEF1dG8tZml0dGVyIGNvdmVyYWdlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvYXV0b2ZpdC9hZmR1bW15LmMgYi9zcmMvYXV0b2ZpdC9hZmR1bW15LmMKaW5kZXggYTM2YjU2Zi4uYTQ2MjliNSAxMDA2NDQKLS0tIGEvc3JjL2F1dG9maXQvYWZkdW1teS5jCisrKyBiL3NyYy9hdXRvZml0L2FmZHVtbXkuYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgQXV0by1maXR0ZXIgZHVtbXkgcm91dGluZXMgdG8gYmUgdXNlZCBpZiBubyBoaW50aW5nIHNob3VsZCBiZQogICogICBwZXJmb3JtZWQgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9hdXRvZml0L2FmZHVtbXkuaCBiL3NyYy9hdXRvZml0L2FmZHVtbXkuaAppbmRleCBiNTg4NDlmLi5hN2FmM2Y2IDEwMDY0NAotLS0gYS9zcmMvYXV0b2ZpdC9hZmR1bW15LmgKKysrIGIvc3JjL2F1dG9maXQvYWZkdW1teS5oCkBAIC01LDcgKzUsNyBAQAogICogICBBdXRvLWZpdHRlciBkdW1teSByb3V0aW5lcyB0byBiZSB1c2VkIGlmIG5vIGhpbnRpbmcgc2hvdWxkIGJlCiAgKiAgIHBlcmZvcm1lZCAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL2F1dG9maXQvYWZlcnJvcnMuaCBiL3NyYy9hdXRvZml0L2FmZXJyb3JzLmgKaW5kZXggMDliZWQ2Ni4uODhmYWYwNSAxMDA2NDQKLS0tIGEvc3JjL2F1dG9maXQvYWZlcnJvcnMuaAorKysgYi9zcmMvYXV0b2ZpdC9hZmVycm9ycy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQXV0b2ZpdHRlciBlcnJvciBjb2RlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvYXV0b2ZpdC9hZmdsb2JhbC5jIGIvc3JjL2F1dG9maXQvYWZnbG9iYWwuYwppbmRleCBiODA1YjNiLi5lZGUyN2ViIDEwMDY0NAotLS0gYS9zcmMvYXV0b2ZpdC9hZmdsb2JhbC5jCisrKyBiL3NyYy9hdXRvZml0L2FmZ2xvYmFsLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBBdXRvLWZpdHRlciByb3V0aW5lcyB0byBjb21wdXRlIGdsb2JhbCBoaW50aW5nIHZhbHVlcyAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMTI5LDEzICsxMjksMTMgQEAKICAgICBGVF9GYWNlICAgICBmYWNlICAgICAgICA9IGdsb2JhbHMtPmZhY2U7CiAgICAgRlRfQ2hhck1hcCAgb2xkX2NoYXJtYXAgPSBmYWNlLT5jaGFybWFwOwogICAgIEZUX1VTaG9ydCogIGdzdHlsZXMgICAgID0gZ2xvYmFscy0+Z2x5cGhfc3R5bGVzOwotICAgIEZUX1VJbnQgICAgIHNzOworICAgIEZUX1VTaG9ydCAgIHNzOworICAgIEZUX1VTaG9ydCAgIGRmbHQgICAgICAgID0gMHhGRkZGVTsgLyogYSBub24tdmFsaWQgdmFsdWUgKi8KICAgICBGVF9VSW50ICAgICBpOwotICAgIEZUX1VJbnQgICAgIGRmbHQgICAgICAgID0gfjBVOyAvKiBhIG5vbi12YWxpZCB2YWx1ZSAqLwogCiAKICAgICAvKiB0aGUgdmFsdWUgQUZfU1RZTEVfVU5BU1NJR05FRCBtZWFucyBgdW5jb3ZlcmVkIGdseXBoJyAqLwotICAgIGZvciAoIGkgPSAwOyBpIDwgKEZUX1VJbnQpZ2xvYmFscy0+Z2x5cGhfY291bnQ7IGkrKyApCisgICAgZm9yICggaSA9IDA7IGkgPCBnbG9iYWxzLT5nbHlwaF9jb3VudDsgaSsrICkKICAgICAgIGdzdHlsZXNbaV0gPSBBRl9TVFlMRV9VTkFTU0lHTkVEOwogCiAgICAgZXJyb3IgPSBGVF9TZWxlY3RfQ2hhcm1hcCggZmFjZSwgRlRfRU5DT0RJTkdfVU5JQ09ERSApOwpAQCAtMTY4LDggKzE2OCw3IEBACiAgICAgICAgKi8KICAgICAgIGlmICggc3R5bGVfY2xhc3MtPmNvdmVyYWdlID09IEFGX0NPVkVSQUdFX0RFRkFVTFQgKQogICAgICAgewotICAgICAgICBpZiAoIChGVF9VSW50KXN0eWxlX2NsYXNzLT5zY3JpcHQgPT0KLSAgICAgICAgICAgICBnbG9iYWxzLT5tb2R1bGUtPmRlZmF1bHRfc2NyaXB0ICkKKyAgICAgICAgaWYgKCBzdHlsZV9jbGFzcy0+c2NyaXB0ID09IGdsb2JhbHMtPm1vZHVsZS0+ZGVmYXVsdF9zY3JpcHQgKQogICAgICAgICAgIGRmbHQgPSBzczsKIAogICAgICAgICBmb3IgKCByYW5nZSA9IHNjcmlwdF9jbGFzcy0+c2NyaXB0X3VuaV9yYW5nZXM7CkBAIC0xODMsOSArMTgyLDkgQEAKICAgICAgICAgICBnaW5kZXggPSBGVF9HZXRfQ2hhcl9JbmRleCggZmFjZSwgY2hhcmNvZGUgKTsKIAogICAgICAgICAgIGlmICggZ2luZGV4ICE9IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgotICAgICAgICAgICAgICAgZ2luZGV4IDwgKEZUX1VMb25nKWdsb2JhbHMtPmdseXBoX2NvdW50ICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICAgZ2luZGV4IDwgZ2xvYmFscy0+Z2x5cGhfY291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgogICAgICAgICAgICAgICAgKCBnc3R5bGVzW2dpbmRleF0gJiBBRl9TVFlMRV9NQVNLICkgPT0gQUZfU1RZTEVfVU5BU1NJR05FRCApCi0gICAgICAgICAgICBnc3R5bGVzW2dpbmRleF0gPSAoRlRfVVNob3J0KXNzOworICAgICAgICAgICAgZ3N0eWxlc1tnaW5kZXhdID0gc3M7CiAKICAgICAgICAgICBmb3IgKDs7KQogICAgICAgICAgIHsKQEAgLTE5NCw5ICsxOTMsOSBAQAogICAgICAgICAgICAgaWYgKCBnaW5kZXggPT0gMCB8fCBjaGFyY29kZSA+IHJhbmdlLT5sYXN0ICkKICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlmICggZ2luZGV4IDwgKEZUX1VMb25nKWdsb2JhbHMtPmdseXBoX2NvdW50ICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgaWYgKCBnaW5kZXggPCBnbG9iYWxzLT5nbHlwaF9jb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICAgICAgICggZ3N0eWxlc1tnaW5kZXhdICYgQUZfU1RZTEVfTUFTSyApID09IEFGX1NUWUxFX1VOQVNTSUdORUQgKQotICAgICAgICAgICAgICBnc3R5bGVzW2dpbmRleF0gPSAoRlRfVVNob3J0KXNzOworICAgICAgICAgICAgICBnc3R5bGVzW2dpbmRleF0gPSBzczsKICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMjExLDkgKzIxMCw5IEBACiAKICAgICAgICAgICBnaW5kZXggPSBGVF9HZXRfQ2hhcl9JbmRleCggZmFjZSwgY2hhcmNvZGUgKTsKIAotICAgICAgICAgIGlmICggZ2luZGV4ICE9IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgotICAgICAgICAgICAgICAgZ2luZGV4IDwgKEZUX1VMb25nKWdsb2JhbHMtPmdseXBoX2NvdW50ICAgICAgICAgICAgICAmJgotICAgICAgICAgICAgICAgKCBnc3R5bGVzW2dpbmRleF0gJiBBRl9TVFlMRV9NQVNLICkgPT0gKEZUX1VTaG9ydClzcyApCisgICAgICAgICAgaWYgKCBnaW5kZXggIT0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICAgZ2luZGV4IDwgZ2xvYmFscy0+Z2x5cGhfY291bnQgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgICggZ3N0eWxlc1tnaW5kZXhdICYgQUZfU1RZTEVfTUFTSyApID09IHNzICkKICAgICAgICAgICAgIGdzdHlsZXNbZ2luZGV4XSB8PSBBRl9OT05CQVNFOwogCiAgICAgICAgICAgZm9yICg7OykKQEAgLTIyMyw4ICsyMjIsOCBAQAogICAgICAgICAgICAgaWYgKCBnaW5kZXggPT0gMCB8fCBjaGFyY29kZSA+IHJhbmdlLT5sYXN0ICkKICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlmICggZ2luZGV4IDwgKEZUX1VMb25nKWdsb2JhbHMtPmdseXBoX2NvdW50ICAgICAgICAgICAgICAmJgotICAgICAgICAgICAgICAgICAoIGdzdHlsZXNbZ2luZGV4XSAmIEFGX1NUWUxFX01BU0sgKSA9PSAoRlRfVVNob3J0KXNzICkKKyAgICAgICAgICAgIGlmICggZ2luZGV4IDwgZ2xvYmFscy0+Z2x5cGhfY291bnQgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgICAgKCBnc3R5bGVzW2dpbmRleF0gJiBBRl9TVFlMRV9NQVNLICkgPT0gc3MgKQogICAgICAgICAgICAgICBnc3R5bGVzW2dpbmRleF0gfD0gQUZfTk9OQkFTRTsKICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI1NSw3ICsyNTQsNyBAQAogICAgICAgRlRfVUludCAgZ2luZGV4ID0gRlRfR2V0X0NoYXJfSW5kZXgoIGZhY2UsIGkgKTsKIAogCi0gICAgICBpZiAoIGdpbmRleCAhPSAwICYmIGdpbmRleCA8IChGVF9VTG9uZylnbG9iYWxzLT5nbHlwaF9jb3VudCApCisgICAgICBpZiAoIGdpbmRleCAhPSAwICYmIGdpbmRleCA8IGdsb2JhbHMtPmdseXBoX2NvdW50ICkKICAgICAgICAgZ3N0eWxlc1tnaW5kZXhdIHw9IEFGX0RJR0lUOwogICAgIH0KIApAQCAtMjY2LDcgKzI2NSw3IEBACiAgICAgICovCiAgICAgaWYgKCBnbG9iYWxzLT5tb2R1bGUtPmZhbGxiYWNrX3N0eWxlICE9IEFGX1NUWUxFX1VOQVNTSUdORUQgKQogICAgIHsKLSAgICAgIEZUX0xvbmcgIG5uOworICAgICAgRlRfVUludCAgbm47CiAKIAogICAgICAgZm9yICggbm4gPSAwOyBubiA8IGdsb2JhbHMtPmdseXBoX2NvdW50OyBubisrICkKQEAgLTI5MCw3ICsyODksNyBAQAogICAgIHsKICAgICAgIEFGX1N0eWxlQ2xhc3MgIHN0eWxlX2NsYXNzID0gYWZfc3R5bGVfY2xhc3Nlc1tzc107CiAgICAgICBGVF9VSW50ICAgICAgICBjb3VudCAgICAgICA9IDA7Ci0gICAgICBGVF9Mb25nICAgICAgICBpZHg7CisgICAgICBGVF9VSW50ICAgICAgICBpZHg7CiAKIAogICAgICAgRlRfVFJBQ0U0KCggIiVzOlxuIiwgYWZfc3R5bGVfbmFtZXNbc3R5bGVfY2xhc3MtPnN0eWxlXSApKTsKQEAgLTMwMiw3ICszMDEsNyBAQAogICAgICAgICAgIGlmICggISggY291bnQgJSAxMCApICkKICAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgIiApKTsKIAotICAgICAgICAgIEZUX1RSQUNFNCgoICIgJWxkIiwgaWR4ICkpOworICAgICAgICAgIEZUX1RSQUNFNCgoICIgJWQiLCBpZHggKSk7CiAgICAgICAgICAgY291bnQrKzsKIAogICAgICAgICAgIGlmICggISggY291bnQgJSAxMCApICkKQEAgLTMxOCw3ICszMTcsNyBAQAogCiAjZW5kaWYgLyogRlRfREVCVUdfTEVWRUxfVFJBQ0UgKi8KIAotICAgIEZUX1NldF9DaGFybWFwKCBmYWNlLCBvbGRfY2hhcm1hcCApOworICAgIGZhY2UtPmNoYXJtYXAgPSBvbGRfY2hhcm1hcDsKICAgICByZXR1cm4gZXJyb3I7CiAgIH0KIApAQCAtMzM3LDEzICszMzYsMTUgQEAKIAogICAgIC8qIHdlIGFsbG9jYXRlIGFuIEFGX0ZhY2VHbG9iYWxzIHN0cnVjdHVyZSB0b2dldGhlciAqLwogICAgIC8qIHdpdGggdGhlIGdseXBoX3N0eWxlcyBhcnJheSAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIGlmICggRlRfQUxMT0MoIGdsb2JhbHMsCi0gICAgICAgICAgICAgICAgICAgc2l6ZW9mICggKmdsb2JhbHMgKSArCi0gICAgICAgICAgICAgICAgICAgICAoRlRfVUxvbmcpZmFjZS0+bnVtX2dseXBocyAqIHNpemVvZiAoIEZUX1VTaG9ydCApICkgKQorICAgIGlmICggRlRfUUFMTE9DKCBnbG9iYWxzLAorICAgICAgICAgICAgICAgICAgICBzaXplb2YgKCAqZ2xvYmFscyApICsKKyAgICAgICAgICAgICAgICAgICAgICAoRlRfVUxvbmcpZmFjZS0+bnVtX2dseXBocyAqIHNpemVvZiAoIEZUX1VTaG9ydCApICkgKQogICAgICAgZ290byBFeGl0OwogCisgICAgRlRfWkVSTyggJmdsb2JhbHMtPm1ldHJpY3MgKTsKKwogICAgIGdsb2JhbHMtPmZhY2UgICAgICAgICAgICAgICAgICAgICAgPSBmYWNlOwotICAgIGdsb2JhbHMtPmdseXBoX2NvdW50ICAgICAgICAgICAgICAgPSBmYWNlLT5udW1fZ2x5cGhzOworICAgIGdsb2JhbHMtPmdseXBoX2NvdW50ICAgICAgICAgICAgICAgPSAoRlRfVUludClmYWNlLT5udW1fZ2x5cGhzOwogICAgIC8qIHJpZ2h0IGFmdGVyIHRoZSBnbG9iYWxzIHN0cnVjdHVyZSBjb21lIHRoZSBnbHlwaCBzdHlsZXMgKi8KICAgICBnbG9iYWxzLT5nbHlwaF9zdHlsZXMgICAgICAgICAgICAgID0gKEZUX1VTaG9ydCopKCBnbG9iYWxzICsgMSApOwogICAgIGdsb2JhbHMtPm1vZHVsZSAgICAgICAgICAgICAgICAgICAgPSBtb2R1bGU7CkBAIC0zNTUsNyArMzU2LDcgQEAKICAgICBnbG9iYWxzLT5zY2FsZV9kb3duX2ZhY3RvciAgICAgICAgID0gMDsKIAogI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fVVNFX0hBUkZCVVpaCi0gICAgZ2xvYmFscy0+aGJfZm9udCA9IGhiX2Z0X2ZvbnRfY3JlYXRlKCBmYWNlLCBOVUxMICk7CisgICAgZ2xvYmFscy0+aGJfZm9udCA9IGhiX2Z0X2ZvbnRfY3JlYXRlXyggZmFjZSwgTlVMTCApOwogICAgIGdsb2JhbHMtPmhiX2J1ZiAgPSBoYl9idWZmZXJfY3JlYXRlKCk7CiAjZW5kaWYKIApAQCAtNDI3LDcgKzQyOCw3IEBACiAgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOwogCiAKLSAgICBpZiAoIGdpbmRleCA+PSAoRlRfVUxvbmcpZ2xvYmFscy0+Z2x5cGhfY291bnQgKQorICAgIGlmICggZ2luZGV4ID49IGdsb2JhbHMtPmdseXBoX2NvdW50ICkKICAgICB7CiAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CiAgICAgICBnb3RvIEV4aXQ7CkBAIC00OTksNyArNTAwLDcgQEAKICAgYWZfZmFjZV9nbG9iYWxzX2lzX2RpZ2l0KCBBRl9GYWNlR2xvYmFscyAgZ2xvYmFscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgZ2luZGV4ICkKICAgewotICAgIGlmICggZ2luZGV4IDwgKEZUX1VMb25nKWdsb2JhbHMtPmdseXBoX2NvdW50ICkKKyAgICBpZiAoIGdpbmRleCA8IGdsb2JhbHMtPmdseXBoX2NvdW50ICkKICAgICAgIHJldHVybiBGVF9CT09MKCBnbG9iYWxzLT5nbHlwaF9zdHlsZXNbZ2luZGV4XSAmIEFGX0RJR0lUICk7CiAKICAgICByZXR1cm4gRlRfQk9PTCggMCApOwpkaWZmIC0tZ2l0IGEvc3JjL2F1dG9maXQvYWZnbG9iYWwuaCBiL3NyYy9hdXRvZml0L2FmZ2xvYmFsLmgKaW5kZXggY2Q5N2U3MS4uODNhN2MyZiAxMDA2NDQKLS0tIGEvc3JjL2F1dG9maXQvYWZnbG9iYWwuaAorKysgYi9zcmMvYXV0b2ZpdC9hZmdsb2JhbC5oCkBAIC01LDcgKzUsNyBAQAogICogICBBdXRvLWZpdHRlciByb3V0aW5lcyB0byBjb21wdXRlIGdsb2JhbCBoaW50aW5nIHZhbHVlcwogICogICAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMTA1LDcgKzEwNSw3IEBACiAgIHR5cGVkZWYgc3RydWN0ICBBRl9GYWNlR2xvYmFsc1JlY18KICAgewogICAgIEZUX0ZhY2UgICAgICAgICAgZmFjZTsKLSAgICBGVF9Mb25nICAgICAgICAgIGdseXBoX2NvdW50OyAgICAvKiBzYW1lIGFzIGZhY2UtPm51bV9nbHlwaHMgKi8KKyAgICBGVF9VSW50ICAgICAgICAgIGdseXBoX2NvdW50OyAgICAvKiB1bnNpZ25lZCBmYWNlLT5udW1fZ2x5cGhzICovCiAgICAgRlRfVVNob3J0KiAgICAgICBnbHlwaF9zdHlsZXM7CiAKICNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1VTRV9IQVJGQlVaWgpAQCAtMTU4LDcgKzE1OCw3IEBACiAgIEZUX0xPQ0FMKCB2b2lkICkKICAgYWZfZmFjZV9nbG9iYWxzX2ZyZWUoIEFGX0ZhY2VHbG9iYWxzICBnbG9iYWxzICk7CiAKLSAgRlRfTE9DQUxfREVGKCBGVF9Cb29sICkKKyAgRlRfTE9DQUwoIEZUX0Jvb2wgKQogICBhZl9mYWNlX2dsb2JhbHNfaXNfZGlnaXQoIEFGX0ZhY2VHbG9iYWxzICBnbG9iYWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBnaW5kZXggKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2F1dG9maXQvYWZoaW50cy5jIGIvc3JjL2F1dG9maXQvYWZoaW50cy5jCmluZGV4IDU1MDZhZmQuLjY1MTVhZjkgMTAwNjQ0Ci0tLSBhL3NyYy9hdXRvZml0L2FmaGludHMuYworKysgYi9zcmMvYXV0b2ZpdC9hZmhpbnRzLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBBdXRvLWZpdHRlciBoaW50aW5nIHJvdXRpbmVzIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0xNTEsOSArMTUxLDkgQEAKICAgICB9CiAgICAgZWxzZSBpZiAoIGF4aXMtPm51bV9zZWdtZW50cyA+PSBheGlzLT5tYXhfc2VnbWVudHMgKQogICAgIHsKLSAgICAgIEZUX0ludCAgb2xkX21heCA9IGF4aXMtPm1heF9zZWdtZW50czsKLSAgICAgIEZUX0ludCAgbmV3X21heCA9IG9sZF9tYXg7Ci0gICAgICBGVF9JbnQgIGJpZ19tYXggPSAoRlRfSW50KSggRlRfSU5UX01BWCAvIHNpemVvZiAoICpzZWdtZW50ICkgKTsKKyAgICAgIEZUX1VJbnQgIG9sZF9tYXggPSBheGlzLT5tYXhfc2VnbWVudHM7CisgICAgICBGVF9VSW50ICBuZXdfbWF4ID0gb2xkX21heDsKKyAgICAgIEZUX1VJbnQgIGJpZ19tYXggPSBGVF9JTlRfTUFYIC8gc2l6ZW9mICggKnNlZ21lbnQgKTsKIAogCiAgICAgICBpZiAoIG9sZF9tYXggPj0gYmlnX21heCApCkBAIC0xOTMsNyArMTkzLDcgQEAKICAgLyogR2V0IG5ldyBlZGdlIGZvciBnaXZlbiBheGlzLCBkaXJlY3Rpb24sIGFuZCBwb3NpdGlvbiwgKi8KICAgLyogd2l0aG91dCBpbml0aWFsaXppbmcgdGhlIGVkZ2UgaXRzZWxmLiAgICAgICAgICAgICAgICAgKi8KIAotICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKICAgYWZfYXhpc19oaW50c19uZXdfZWRnZSggQUZfQXhpc0hpbnRzICBheGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgIGZwb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFGX0RpcmVjdGlvbiAgZGlyLApAQCAtMjE2LDkgKzIxNiw5IEBACiAgICAgfQogICAgIGVsc2UgaWYgKCBheGlzLT5udW1fZWRnZXMgPj0gYXhpcy0+bWF4X2VkZ2VzICkKICAgICB7Ci0gICAgICBGVF9JbnQgIG9sZF9tYXggPSBheGlzLT5tYXhfZWRnZXM7Ci0gICAgICBGVF9JbnQgIG5ld19tYXggPSBvbGRfbWF4OwotICAgICAgRlRfSW50ICBiaWdfbWF4ID0gKEZUX0ludCkoIEZUX0lOVF9NQVggLyBzaXplb2YgKCAqZWRnZSApICk7CisgICAgICBGVF9VSW50ICBvbGRfbWF4ID0gYXhpcy0+bWF4X2VkZ2VzOworICAgICAgRlRfVUludCAgbmV3X21heCA9IG9sZF9tYXg7CisgICAgICBGVF9VSW50ICBiaWdfbWF4ID0gRlRfSU5UX01BWCAvIHNpemVvZiAoICplZGdlICk7CiAKIAogICAgICAgaWYgKCBvbGRfbWF4ID49IGJpZ19tYXggKQpAQCAtNDcxLDEwICs0NzEsMTAgQEAKIAogICAgICAgICAgICAgICAgIHBvaW50LT5meCwKICAgICAgICAgICAgICAgICBwb2ludC0+ZnksCi0gICAgICAgICAgICAgICAgcG9pbnQtPm94IC8gNjQuMCwKLSAgICAgICAgICAgICAgICBwb2ludC0+b3kgLyA2NC4wLAotICAgICAgICAgICAgICAgIHBvaW50LT54IC8gNjQuMCwKLSAgICAgICAgICAgICAgICBwb2ludC0+eSAvIDY0LjAsCisgICAgICAgICAgICAgICAgKGRvdWJsZSlwb2ludC0+b3ggLyA2NCwKKyAgICAgICAgICAgICAgICAoZG91YmxlKXBvaW50LT5veSAvIDY0LAorICAgICAgICAgICAgICAgIChkb3VibGUpcG9pbnQtPnggLyA2NCwKKyAgICAgICAgICAgICAgICAoZG91YmxlKXBvaW50LT55IC8gNjQsCiAKICAgICAgICAgICAgICAgICBhZl9wcmludF9pZHgoIGJ1ZjUsIGFmX2dldF9zdHJvbmdfZWRnZV9pbmRleCggaGludHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50LT5iZWZvcmUsCkBAIC01OTcsNyArNTk3LDcgQEAKICAgRlRfRXJyb3IKICAgYWZfZ2x5cGhfaGludHNfZ2V0X251bV9zZWdtZW50cyggQUZfR2x5cGhIaW50cyAgaGludHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIGRpbWVuc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50KiAgICAgICAgbnVtX3NlZ21lbnRzICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCogICAgICAgbnVtX3NlZ21lbnRzICkKICAgewogICAgIEFGX0RpbWVuc2lvbiAgZGltOwogICAgIEFGX0F4aXNIaW50cyAgYXhpczsKQEAgLTYyMyw3ICs2MjMsNyBAQAogICBGVF9FcnJvcgogICBhZl9nbHlwaF9oaW50c19nZXRfc2VnbWVudF9vZmZzZXQoIEFGX0dseXBoSGludHMgIGhpbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIGRpbWVuc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgaWR4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgICAgKm9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgICppc19ibHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgICAgKmJsdWVfb2Zmc2V0ICkKQEAgLTY0MCw3ICs2NDAsNyBAQAogCiAgICAgYXhpcyA9ICZoaW50cy0+YXhpc1tkaW1dOwogCi0gICAgaWYgKCBpZHggPCAwIHx8IGlkeCA+PSBheGlzLT5udW1fc2VnbWVudHMgKQorICAgIGlmICggaWR4ID49IGF4aXMtPm51bV9zZWdtZW50cyApCiAgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKIAogICAgIHNlZyAgICAgID0gJmF4aXMtPnNlZ21lbnRzW2lkeF07CkBAIC02OTIsMTMgKzY5MiwxMyBAQAogICAgICAgaWYgKCBkaW1lbnNpb24gPT0gQUZfRElNRU5TSU9OX0hPUlogKQogICAgICAgICBBRl9EVU1QKCggIlRhYmxlIG9mICVzIGVkZ2VzICgxcHg9JS4yZnUsIDEwdT0lLjJmcHgpOlxuIiwKICAgICAgICAgICAgICAgICAgICJ2ZXJ0aWNhbCIsCi0gICAgICAgICAgICAgICAgICA2NTUzNi4wICogNjQuMCAvIGhpbnRzLT54X3NjYWxlLAotICAgICAgICAgICAgICAgICAgMTAuMCAqIGhpbnRzLT54X3NjYWxlIC8gNjU1MzYuMCAvIDY0LjAgKSk7CisgICAgICAgICAgICAgICAgICA2NTUzNiAqIDY0IC8gKGRvdWJsZSloaW50cy0+eF9zY2FsZSwKKyAgICAgICAgICAgICAgICAgIDEwICogKGRvdWJsZSloaW50cy0+eF9zY2FsZSAvIDY1NTM2IC8gNjQgKSk7CiAgICAgICBlbHNlCiAgICAgICAgIEFGX0RVTVAoKCAiVGFibGUgb2YgJXMgZWRnZXMgKDFweD0lLjJmdSwgMTB1PSUuMmZweCk6XG4iLAogICAgICAgICAgICAgICAgICAgImhvcml6b250YWwiLAotICAgICAgICAgICAgICAgICAgNjU1MzYuMCAqIDY0LjAgLyBoaW50cy0+eV9zY2FsZSwKLSAgICAgICAgICAgICAgICAgIDEwLjAgKiBoaW50cy0+eV9zY2FsZSAvIDY1NTM2LjAgLyA2NC4wICkpOworICAgICAgICAgICAgICAgICAgNjU1MzYgKiA2NCAvIChkb3VibGUpaGludHMtPnlfc2NhbGUsCisgICAgICAgICAgICAgICAgICAxMCAqIChkb3VibGUpaGludHMtPnlfc2NhbGUgLyA2NTUzNiAvIDY0ICkpOwogCiAgICAgICBpZiAoIGF4aXMtPm51bV9lZGdlcyApCiAgICAgICB7CkBAIC03MTQsMTQgKzcxNCwxNCBAQAogICAgICAgICBBRl9EVU1QKCggIiAgJTVkICAlNy4yZiAgJTVzICAlNHMgICU1cyIKICAgICAgICAgICAgICAgICAgICIgICAgJWMgICAlNy4yZiAgJTcuMmYgICUxMXNcbiIsCiAgICAgICAgICAgICAgICAgICBBRl9JTkRFWF9OVU0oIGVkZ2UsIGVkZ2VzICksCi0gICAgICAgICAgICAgICAgICAoaW50KWVkZ2UtPm9wb3MgLyA2NC4wLAorICAgICAgICAgICAgICAgICAgKGRvdWJsZSkoaW50KWVkZ2UtPm9wb3MgLyA2NCwKICAgICAgICAgICAgICAgICAgIGFmX2Rpcl9zdHIoIChBRl9EaXJlY3Rpb24pZWRnZS0+ZGlyICksCiAgICAgICAgICAgICAgICAgICBhZl9wcmludF9pZHgoIGJ1ZjEsIEFGX0lOREVYX05VTSggZWRnZS0+bGluaywgZWRnZXMgKSApLAogICAgICAgICAgICAgICAgICAgYWZfcHJpbnRfaWR4KCBidWYyLCBBRl9JTkRFWF9OVU0oIGVkZ2UtPnNlcmlmLCBlZGdlcyApICksCiAKICAgICAgICAgICAgICAgICAgIGVkZ2UtPmJsdWVfZWRnZSA/ICd5JyA6ICduJywKLSAgICAgICAgICAgICAgICAgIGVkZ2UtPm9wb3MgLyA2NC4wLAotICAgICAgICAgICAgICAgICAgZWRnZS0+cG9zIC8gNjQuMCwKKyAgICAgICAgICAgICAgICAgIChkb3VibGUpZWRnZS0+b3BvcyAvIDY0LAorICAgICAgICAgICAgICAgICAgKGRvdWJsZSllZGdlLT5wb3MgLyA2NCwKICAgICAgICAgICAgICAgICAgIGFmX2VkZ2VfZmxhZ3NfdG9fc3RyaW5nKCBlZGdlLT5mbGFncyApICkpOwogICAgICAgQUZfRFVNUCgoICJcbiIgKSk7CiAgICAgfQpAQCAtMTMxNiw3ICsxMzE2LDcgQEAKICAgewogICAgIEFGX0F4aXNIaW50cyAgYXhpcyAgICAgICAgICA9ICYgaGludHMtPmF4aXNbZGltXTsKICAgICBBRl9TZWdtZW50ICAgIHNlZ21lbnRzICAgICAgPSBheGlzLT5zZWdtZW50czsKLSAgICBBRl9TZWdtZW50ICAgIHNlZ21lbnRfbGltaXQgPSBzZWdtZW50cyArIGF4aXMtPm51bV9zZWdtZW50czsKKyAgICBBRl9TZWdtZW50ICAgIHNlZ21lbnRfbGltaXQgPSBGVF9PRkZTRVQoIHNlZ21lbnRzLCBheGlzLT5udW1fc2VnbWVudHMgKTsKICAgICBBRl9TZWdtZW50ICAgIHNlZzsKIAogCkBAIC0xMzkzLDcgKzEzOTMsNyBAQAogICAgIEFGX1BvaW50ICAgICAgcG9pbnRfbGltaXQgPSBwb2ludHMgKyBoaW50cy0+bnVtX3BvaW50czsKICAgICBBRl9BeGlzSGludHMgIGF4aXMgICAgICAgID0gJmhpbnRzLT5heGlzW2RpbV07CiAgICAgQUZfRWRnZSAgICAgICBlZGdlcyAgICAgICA9IGF4aXMtPmVkZ2VzOwotICAgIEFGX0VkZ2UgICAgICAgZWRnZV9saW1pdCAgPSBlZGdlcyArIGF4aXMtPm51bV9lZGdlczsKKyAgICBBRl9FZGdlICAgICAgIGVkZ2VfbGltaXQgID0gRlRfT0ZGU0VUKCBlZGdlcywgYXhpcy0+bnVtX2VkZ2VzICk7CiAgICAgRlRfVUludCAgICAgICB0b3VjaF9mbGFnOwogCiAKZGlmZiAtLWdpdCBhL3NyYy9hdXRvZml0L2FmaGludHMuaCBiL3NyYy9hdXRvZml0L2FmaGludHMuaAppbmRleCAzOGQyODQ3Li5kMWNmOTUyIDEwMDY0NAotLS0gYS9zcmMvYXV0b2ZpdC9hZmhpbnRzLmgKKysrIGIvc3JjL2F1dG9maXQvYWZoaW50cy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQXV0by1maXR0ZXIgaGludGluZyByb3V0aW5lcyAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMjEsOCArMjEsNiBAQAogCiAjaW5jbHVkZSAiYWZ0eXBlcy5oIgogCi0jZGVmaW5lIHh4QUZfU09SVF9TRUdNRU5UUwotCiBGVF9CRUdJTl9IRUFERVIKIAogICAvKgpAQCAtMzEwLDE1ICszMDgsMTIgQEAKIAogICB0eXBlZGVmIHN0cnVjdCAgQUZfQXhpc0hpbnRzUmVjXwogICB7Ci0gICAgRlRfSW50ICAgICAgICBudW1fc2VnbWVudHM7IC8qIG51bWJlciBvZiB1c2VkIHNlZ21lbnRzICAgICAgKi8KLSAgICBGVF9JbnQgICAgICAgIG1heF9zZWdtZW50czsgLyogbnVtYmVyIG9mIGFsbG9jYXRlZCBzZWdtZW50cyAqLworICAgIEZUX1VJbnQgICAgICAgbnVtX3NlZ21lbnRzOyAvKiBudW1iZXIgb2YgdXNlZCBzZWdtZW50cyAgICAgICovCisgICAgRlRfVUludCAgICAgICBtYXhfc2VnbWVudHM7IC8qIG51bWJlciBvZiBhbGxvY2F0ZWQgc2VnbWVudHMgKi8KICAgICBBRl9TZWdtZW50ICAgIHNlZ21lbnRzOyAgICAgLyogc2VnbWVudHMgYXJyYXkgICAgICAgICAgICAgICAqLwotI2lmZGVmIEFGX1NPUlRfU0VHTUVOVFMKLSAgICBGVF9JbnQgICAgICAgIG1pZF9zZWdtZW50czsKLSNlbmRpZgogCi0gICAgRlRfSW50ICAgICAgICBudW1fZWRnZXM7ICAgIC8qIG51bWJlciBvZiB1c2VkIGVkZ2VzICAgICAgKi8KLSAgICBGVF9JbnQgICAgICAgIG1heF9lZGdlczsgICAgLyogbnVtYmVyIG9mIGFsbG9jYXRlZCBlZGdlcyAqLworICAgIEZUX1VJbnQgICAgICAgbnVtX2VkZ2VzOyAgICAvKiBudW1iZXIgb2YgdXNlZCBlZGdlcyAgICAgICovCisgICAgRlRfVUludCAgICAgICBtYXhfZWRnZXM7ICAgIC8qIG51bWJlciBvZiBhbGxvY2F0ZWQgZWRnZXMgKi8KICAgICBBRl9FZGdlICAgICAgIGVkZ2VzOyAgICAgICAgLyogZWRnZXMgYXJyYXkgICAgICAgICAgICAgICAqLwogCiAgICAgQUZfRGlyZWN0aW9uICBtYWpvcl9kaXI7ICAgIC8qIGVpdGhlciB2ZXJ0aWNhbCBvciBob3Jpem9udGFsICovCkBAIC0zODAsMTQgKzM3NSwxNCBAQAogI2lmZGVmIEZUX0RFQlVHX0FVVE9GSVQKIAogI2RlZmluZSBBRl9ISU5UU19ET19IT1JJWk9OVEFMKCBoICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICggIV9hZl9kZWJ1Z19kaXNhYmxlX2hvcnpfaGludHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgXAorICAgICAgICAgICggIWFmX2RlYnVnX2Rpc2FibGVfaG9yel9oaW50c18gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgXAogICAgICAgICAgICAgIUFGX0hJTlRTX1RFU1RfU0NBTEVSKCBoLCBBRl9TQ0FMRVJfRkxBR19OT19IT1JJWk9OVEFMICkgKQogCiAjZGVmaW5lIEFGX0hJTlRTX0RPX1ZFUlRJQ0FMKCBoICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICggIV9hZl9kZWJ1Z19kaXNhYmxlX3ZlcnRfaGludHMgICAgICAgICAgICAgICAgICAgICAgICAgICYmIFwKKyAgICAgICAgICAoICFhZl9kZWJ1Z19kaXNhYmxlX3ZlcnRfaGludHNfICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBcCiAgICAgICAgICAgICAhQUZfSElOVFNfVEVTVF9TQ0FMRVIoIGgsIEFGX1NDQUxFUl9GTEFHX05PX1ZFUlRJQ0FMICkgKQogCi0jZGVmaW5lIEFGX0hJTlRTX0RPX0JMVUVTKCBoICkgICggIV9hZl9kZWJ1Z19kaXNhYmxlX2JsdWVfaGludHMgKQorI2RlZmluZSBBRl9ISU5UU19ET19CTFVFUyggaCApICAoICFhZl9kZWJ1Z19kaXNhYmxlX2JsdWVfaGludHNfICkKIAogI2Vsc2UgLyogIUZUX0RFQlVHX0FVVE9GSVQgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2F1dG9maXQvYWZpbmRpYy5jIGIvc3JjL2F1dG9maXQvYWZpbmRpYy5jCmluZGV4IDA2NGMzMDAuLjI4OWEwOWQgMTAwNjQ0Ci0tLSBhL3NyYy9hdXRvZml0L2FmaW5kaWMuYworKysgYi9zcmMvYXV0b2ZpdC9hZmluZGljLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBBdXRvLWZpdHRlciBoaW50aW5nIHJvdXRpbmVzIGZvciBJbmRpYyB3cml0aW5nIHN5c3RlbSAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIzIGJ5CiAgKiBSYWh1bCBCaGFsZXJhbyA8cmFodWwuYmhhbGVyYW9AcmVkaGF0LmNvbT4sIDxiLnJhaHVsLnBtQGdtYWlsLmNvbT4uCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtNDksOCArNDksNyBAQAogICAgICAgYWZfY2prX21ldHJpY3NfY2hlY2tfZGlnaXRzKCBtZXRyaWNzLCBmYWNlICk7CiAgICAgfQogCi0gICAgRlRfU2V0X0NoYXJtYXAoIGZhY2UsIG9sZG1hcCApOwotCisgICAgZmFjZS0+Y2hhcm1hcCA9IG9sZG1hcDsKICAgICByZXR1cm4gRlRfRXJyX09rOwogICB9CiAKZGlmZiAtLWdpdCBhL3NyYy9hdXRvZml0L2FmaW5kaWMuaCBiL3NyYy9hdXRvZml0L2FmaW5kaWMuaAppbmRleCAzZTQ2NzI0Li4zZWI2N2Y2IDEwMDY0NAotLS0gYS9zcmMvYXV0b2ZpdC9hZmluZGljLmgKKysrIGIvc3JjL2F1dG9maXQvYWZpbmRpYy5oCkBAIC01LDcgKzUsNyBAQAogICogICBBdXRvLWZpdHRlciBoaW50aW5nIHJvdXRpbmVzIGZvciBJbmRpYyB3cml0aW5nIHN5c3RlbQogICogICAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIzIGJ5CiAgKiBSYWh1bCBCaGFsZXJhbyA8cmFodWwuYmhhbGVyYW9AcmVkaGF0LmNvbT4sIDxiLnJhaHVsLnBtQGdtYWlsLmNvbT4uCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL2F1dG9maXQvYWZsYXRpbi5jIGIvc3JjL2F1dG9maXQvYWZsYXRpbi5jCmluZGV4IDVlODFkNzcuLjRiM2M1OWIgMTAwNjQ0Ci0tLSBhL3NyYy9hdXRvZml0L2FmbGF0aW4uYworKysgYi9zcmMvYXV0b2ZpdC9hZmxhdGluLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBBdXRvLWZpdHRlciBoaW50aW5nIHJvdXRpbmVzIGZvciBsYXRpbiB3cml0aW5nIHN5c3RlbSAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMjAwLDcgKzIwMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBRl9EaW1lbnNpb24pZGltICk7CiAKICAgICAgICAgc2VnICAgPSBheGhpbnRzLT5zZWdtZW50czsKLSAgICAgICAgbGltaXQgPSBzZWcgKyBheGhpbnRzLT5udW1fc2VnbWVudHM7CisgICAgICAgIGxpbWl0ID0gRlRfT0ZGU0VUKCBzZWcsIGF4aGludHMtPm51bV9zZWdtZW50cyApOwogCiAgICAgICAgIGZvciAoIDsgc2VnIDwgbGltaXQ7IHNlZysrICkKICAgICAgICAgewpAQCAtMTA0Myw3ICsxMDQzLDcgQEAKICAgICAgIEFGX0ZhY2VHbG9iYWxzICBnbG9iYWxzID0gbWV0cmljcy0+cm9vdC5nbG9iYWxzOwogICAgICAgRlRfVVNob3J0KiAgICAgIGdzdHlsZXMgPSBnbG9iYWxzLT5nbHlwaF9zdHlsZXM7CiAKLSAgICAgIEZUX0xvbmcgIGk7CisgICAgICBGVF9VSW50ICBpOwogCiAKICAgICAgIEZUX1RSQUNFNSgoICJubyBibHVlIHpvbmVzIGZvdW5kOiIKQEAgLTExNTcsNyArMTE1Nyw3IEBACiAgICAgfQogCiAgIEV4aXQ6Ci0gICAgRlRfU2V0X0NoYXJtYXAoIGZhY2UsIG9sZG1hcCApOworICAgIGZhY2UtPmNoYXJtYXAgPSBvbGRtYXA7CiAgICAgcmV0dXJuIGVycm9yOwogICB9CiAKQEAgLTEyNzUsOCArMTI3NSw4IEBACiAgICAgICAgICAgICAgIEZUX1RSQUNFNSgoICIgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgdmVydGljYWwgc2NhbGluZyBjaGFuZ2VkIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiIGZyb20gJS41ZiB0byAlLjVmIChieSAlbGQlJSlcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlIC8gNjU1MzYuMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3NjYWxlIC8gNjU1MzYuMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSlzY2FsZSAvIDY1NTM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKW5ld19zY2FsZSAvIDY1NTM2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAoIGZpdHRlZCAtIHNjYWxlZCApICogMTAwIC8gc2NhbGVkICkpOwogICAgICAgICAgICAgICBGVF9UUkFDRTUoKCAiXG4iICkpOwogCkBAIC0xMzI3LDcgKzEzMjcsNyBAQAogCiAgICAgICBGVF9UUkFDRTUoKCAiICAlbGQgc2NhbGVkIHRvICUuMmZcbiIsCiAgICAgICAgICAgICAgICAgICB3aWR0aC0+b3JnLAotICAgICAgICAgICAgICAgICAgd2lkdGgtPmN1ciAvIDY0LjAgKSk7CisgICAgICAgICAgICAgICAgICAoZG91YmxlKXdpZHRoLT5jdXIgLyA2NCApKTsKICAgICB9CiAKICAgICBGVF9UUkFDRTUoKCAiXG4iICkpOwpAQCAtMTQ3MSwxMyArMTQ3MSwxMyBAQAogICAgICAgICBGVF9UUkFDRTUoKCAiICByZWZlcmVuY2UgJWQ6ICVsZCBzY2FsZWQgdG8gJS4yZiVzXG4iLAogICAgICAgICAgICAgICAgICAgICBubiwKICAgICAgICAgICAgICAgICAgICAgYmx1ZS0+cmVmLm9yZywKLSAgICAgICAgICAgICAgICAgICAgYmx1ZS0+cmVmLmZpdCAvIDY0LjAsCisgICAgICAgICAgICAgICAgICAgIChkb3VibGUpYmx1ZS0+cmVmLmZpdCAvIDY0LAogICAgICAgICAgICAgICAgICAgICAoIGJsdWUtPmZsYWdzICYgQUZfTEFUSU5fQkxVRV9BQ1RJVkUgKSA/ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIiAoaW5hY3RpdmUpIiApKTsKICAgICAgICAgRlRfVFJBQ0U1KCggIiAgb3ZlcnNob290ICVkOiAlbGQgc2NhbGVkIHRvICUuMmYlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgbm4sCiAgICAgICAgICAgICAgICAgICAgIGJsdWUtPnNob290Lm9yZywKLSAgICAgICAgICAgICAgICAgICAgYmx1ZS0+c2hvb3QuZml0IC8gNjQuMCwKKyAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSlibHVlLT5zaG9vdC5maXQgLyA2NCwKICAgICAgICAgICAgICAgICAgICAgKCBibHVlLT5mbGFncyAmIEFGX0xBVElOX0JMVUVfQUNUSVZFICkgPyAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICIgKGluYWN0aXZlKSIgKSk7CiAgICAgICB9CkBAIC0xOTg5LDcgKzE5ODksNyBAQAogICB7CiAgICAgQUZfQXhpc0hpbnRzICBheGlzICAgICAgICAgID0gJmhpbnRzLT5heGlzW2RpbV07CiAgICAgQUZfU2VnbWVudCAgICBzZWdtZW50cyAgICAgID0gYXhpcy0+c2VnbWVudHM7Ci0gICAgQUZfU2VnbWVudCAgICBzZWdtZW50X2xpbWl0ID0gc2VnbWVudHMgKyBheGlzLT5udW1fc2VnbWVudHM7CisgICAgQUZfU2VnbWVudCAgICBzZWdtZW50X2xpbWl0ID0gRlRfT0ZGU0VUKCBzZWdtZW50cywgYXhpcy0+bnVtX3NlZ21lbnRzICk7CiAgICAgRlRfUG9zICAgICAgICBsZW5fdGhyZXNob2xkLCBsZW5fc2NvcmUsIGRpc3Rfc2NvcmUsIG1heF93aWR0aDsKICAgICBBRl9TZWdtZW50ICAgIHNlZzEsIHNlZzI7CiAKQEAgLTIxMzQsNyArMjEzNCw3IEBACiAgICAgRlRfQm9vbCAgdG9wX3RvX2JvdHRvbV9oaW50aW5nID0gMDsKIAogICAgIEFGX1NlZ21lbnQgICAgc2VnbWVudHMgICAgICA9IGF4aXMtPnNlZ21lbnRzOwotICAgIEFGX1NlZ21lbnQgICAgc2VnbWVudF9saW1pdCA9IHNlZ21lbnRzICsgYXhpcy0+bnVtX3NlZ21lbnRzOworICAgIEFGX1NlZ21lbnQgICAgc2VnbWVudF9saW1pdCA9IEZUX09GRlNFVCggc2VnbWVudHMsIGF4aXMtPm51bV9zZWdtZW50cyApOwogICAgIEFGX1NlZ21lbnQgICAgc2VnOwogCiAjaWYgMApAQCAtMjIwMyw3ICsyMjAzLDcgQEAKICAgICBmb3IgKCBzZWcgPSBzZWdtZW50czsgc2VnIDwgc2VnbWVudF9saW1pdDsgc2VnKysgKQogICAgIHsKICAgICAgIEFGX0VkZ2UgIGZvdW5kID0gTlVMTDsKLSAgICAgIEZUX0ludCAgIGVlOworICAgICAgRlRfVUludCAgZWU7CiAKIAogICAgICAgLyogaWdub3JlIHRvbyBzaG9ydCBzZWdtZW50cywgdG9vIHdpZGUgb25lcywgYW5kLCBpbiB0aGlzIGxvb3AsICovCkBAIC0yMjc3LDcgKzIyNzcsNyBAQAogICAgIGZvciAoIHNlZyA9IHNlZ21lbnRzOyBzZWcgPCBzZWdtZW50X2xpbWl0OyBzZWcrKyApCiAgICAgewogICAgICAgQUZfRWRnZSAgZm91bmQgPSBOVUxMOwotICAgICAgRlRfSW50ICAgZWU7CisgICAgICBGVF9VSW50ICBlZTsKIAogCiAgICAgICBpZiAoIHNlZy0+ZGlyICE9IEFGX0RJUl9OT05FICkKQEAgLTI1MDAsNyArMjUwMCw3IEBACiAgIHsKICAgICBBRl9BeGlzSGludHMgIGF4aXMgICAgICAgPSAmaGludHMtPmF4aXNbQUZfRElNRU5TSU9OX1ZFUlRdOwogICAgIEFGX0VkZ2UgICAgICAgZWRnZSAgICAgICA9IGF4aXMtPmVkZ2VzOwotICAgIEFGX0VkZ2UgICAgICAgZWRnZV9saW1pdCA9IGVkZ2UgKyBheGlzLT5udW1fZWRnZXM7CisgICAgQUZfRWRnZSAgICAgICBlZGdlX2xpbWl0ID0gRlRfT0ZGU0VUKCBlZGdlLCBheGlzLT5udW1fZWRnZXMgKTsKICAgICBBRl9MYXRpbkF4aXMgIGxhdGluICAgICAgPSAmbWV0cmljcy0+YXhpc1tBRl9ESU1FTlNJT05fVkVSVF07CiAgICAgRlRfRml4ZWQgICAgICBzY2FsZSAgICAgID0gbGF0aW4tPnNjYWxlOwogCkBAIC0yOTU1LDggKzI5NTUsOSBAQAogCiAgICAgRlRfVFJBQ0U1KCggIiAgTElOSzogZWRnZSAlbGQgKG9wb3M9JS4yZikgbGlua2VkIHRvICUuMmYsIgogICAgICAgICAgICAgICAgICIgZGlzdCB3YXMgJS4yZiwgbm93ICUuMmZcbiIsCi0gICAgICAgICAgICAgICAgc3RlbV9lZGdlIC0gaGludHMtPmF4aXNbZGltXS5lZGdlcywgc3RlbV9lZGdlLT5vcG9zIC8gNjQuMCwKLSAgICAgICAgICAgICAgICBzdGVtX2VkZ2UtPnBvcyAvIDY0LjAsIGRpc3QgLyA2NC4wLCBmaXR0ZWRfd2lkdGggLyA2NC4wICkpOworICAgICAgICAgICAgICAgIHN0ZW1fZWRnZSAtIGhpbnRzLT5heGlzW2RpbV0uZWRnZXMsCisgICAgICAgICAgICAgICAgKGRvdWJsZSlzdGVtX2VkZ2UtPm9wb3MgLyA2NCwgKGRvdWJsZSlzdGVtX2VkZ2UtPnBvcyAvIDY0LAorICAgICAgICAgICAgICAgIChkb3VibGUpZGlzdCAvIDY0LCAoZG91YmxlKWZpdHRlZF93aWR0aCAvIDY0ICkpOwogICB9CiAKIApAQCAtMjk5Myw3ICsyOTk0LDcgQEAKICAgewogICAgIEFGX0F4aXNIaW50cyAgYXhpcyAgICAgICA9ICZoaW50cy0+YXhpc1tkaW1dOwogICAgIEFGX0VkZ2UgICAgICAgZWRnZXMgICAgICA9IGF4aXMtPmVkZ2VzOwotICAgIEFGX0VkZ2UgICAgICAgZWRnZV9saW1pdCA9IGVkZ2VzICsgYXhpcy0+bnVtX2VkZ2VzOworICAgIEFGX0VkZ2UgICAgICAgZWRnZV9saW1pdCA9IEZUX09GRlNFVCggZWRnZXMsIGF4aXMtPm51bV9lZGdlcyApOwogICAgIEZUX1B0ckRpc3QgICAgbl9lZGdlczsKICAgICBBRl9FZGdlICAgICAgIGVkZ2U7CiAgICAgQUZfRWRnZSAgICAgICBhbmNob3IgICAgID0gTlVMTDsKQEAgLTMwNzksMTMgKzMwODAsMTUgQEAKICAgICAgICAgaWYgKCAhYW5jaG9yICkKICAgICAgICAgICBGVF9UUkFDRTUoKCAiICBCTFVFX0FOQ0hPUjogZWRnZSAlbGQgKG9wb3M9JS4yZikgc25hcHBlZCB0byAlLjJmLCIKICAgICAgICAgICAgICAgICAgICAgICAiIHdhcyAlLjJmIChhbmNob3I9ZWRnZSAlbGQpXG4iLAotICAgICAgICAgICAgICAgICAgICAgIGVkZ2UxIC0gZWRnZXMsIGVkZ2UxLT5vcG9zIC8gNjQuMCwgYmx1ZS0+Zml0IC8gNjQuMCwKLSAgICAgICAgICAgICAgICAgICAgICBlZGdlMS0+cG9zIC8gNjQuMCwgZWRnZSAtIGVkZ2VzICkpOworICAgICAgICAgICAgICAgICAgICAgIGVkZ2UxIC0gZWRnZXMsCisgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSllZGdlMS0+b3BvcyAvIDY0LCAoZG91YmxlKWJsdWUtPmZpdCAvIDY0LAorICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpZWRnZTEtPnBvcyAvIDY0LCBlZGdlIC0gZWRnZXMgKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICBGVF9UUkFDRTUoKCAiICBCTFVFOiBlZGdlICVsZCAob3Bvcz0lLjJmKSBzbmFwcGVkIHRvICUuMmYsIgogICAgICAgICAgICAgICAgICAgICAgICIgd2FzICUuMmZcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgZWRnZTEgLSBlZGdlcywgZWRnZTEtPm9wb3MgLyA2NC4wLCBibHVlLT5maXQgLyA2NC4wLAotICAgICAgICAgICAgICAgICAgICAgIGVkZ2UxLT5wb3MgLyA2NC4wICkpOworICAgICAgICAgICAgICAgICAgICAgIGVkZ2UxIC0gZWRnZXMsCisgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSllZGdlMS0+b3BvcyAvIDY0LCAoZG91YmxlKWJsdWUtPmZpdCAvIDY0LAorICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpZWRnZTEtPnBvcyAvIDY0ICkpOwogCiAgICAgICAgIG51bV9hY3Rpb25zKys7CiAjZW5kaWYKQEAgLTMyMDEsOSArMzIwNCw5IEBACiAKICAgICAgICAgRlRfVFJBQ0U1KCggIiAgQU5DSE9SOiBlZGdlICVsZCAob3Bvcz0lLjJmKSBhbmQgJWxkIChvcG9zPSUuMmYpIgogICAgICAgICAgICAgICAgICAgICAiIHNuYXBwZWQgdG8gJS4yZiBhbmQgJS4yZlxuIiwKLSAgICAgICAgICAgICAgICAgICAgZWRnZSAtIGVkZ2VzLCBlZGdlLT5vcG9zIC8gNjQuMCwKLSAgICAgICAgICAgICAgICAgICAgZWRnZTIgLSBlZGdlcywgZWRnZTItPm9wb3MgLyA2NC4wLAotICAgICAgICAgICAgICAgICAgICBlZGdlLT5wb3MgLyA2NC4wLCBlZGdlMi0+cG9zIC8gNjQuMCApKTsKKyAgICAgICAgICAgICAgICAgICAgZWRnZSAtIGVkZ2VzLCAoZG91YmxlKWVkZ2UtPm9wb3MgLyA2NCwKKyAgICAgICAgICAgICAgICAgICAgZWRnZTIgLSBlZGdlcywgKGRvdWJsZSllZGdlMi0+b3BvcyAvIDY0LAorICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWVkZ2UtPnBvcyAvIDY0LCAoZG91YmxlKWVkZ2UyLT5wb3MgLyA2NCApKTsKIAogICAgICAgICBhZl9sYXRpbl9hbGlnbl9saW5rZWRfZWRnZSggaGludHMsIGRpbSwgZWRnZSwgZWRnZTIgKTsKIApAQCAtMzIyOSw4ICszMjMyLDggQEAKICAgICAgICAgaWYgKCBlZGdlMi0+ZmxhZ3MgJiBBRl9FREdFX0RPTkUgKQogICAgICAgICB7CiAgICAgICAgICAgRlRfVFJBQ0U1KCggIiAgQURKVVNUOiBlZGdlICVsZCAocG9zPSUuMmYpIG1vdmVkIHRvICUuMmZcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgZWRnZSAtIGVkZ2VzLCBlZGdlLT5wb3MgLyA2NC4wLAotICAgICAgICAgICAgICAgICAgICAgICggZWRnZTItPnBvcyAtIGN1cl9sZW4gKSAvIDY0LjAgKSk7CisgICAgICAgICAgICAgICAgICAgICAgZWRnZSAtIGVkZ2VzLCAoZG91YmxlKWVkZ2UtPnBvcyAvIDY0LAorICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpKCBlZGdlMi0+cG9zIC0gY3VyX2xlbiApIC8gNjQgKSk7CiAKICAgICAgICAgICBlZGdlLT5wb3MgPSBlZGdlMi0+cG9zIC0gY3VyX2xlbjsKICAgICAgICAgfQpAQCAtMzI3MSw5ICszMjc0LDkgQEAKIAogICAgICAgICAgIEZUX1RSQUNFNSgoICIgIFNURU06IGVkZ2UgJWxkIChvcG9zPSUuMmYpIGxpbmtlZCB0byAlbGQgKG9wb3M9JS4yZikiCiAgICAgICAgICAgICAgICAgICAgICAgIiBzbmFwcGVkIHRvICUuMmYgYW5kICUuMmZcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgZWRnZSAtIGVkZ2VzLCBlZGdlLT5vcG9zIC8gNjQuMCwKLSAgICAgICAgICAgICAgICAgICAgICBlZGdlMiAtIGVkZ2VzLCBlZGdlMi0+b3BvcyAvIDY0LjAsCi0gICAgICAgICAgICAgICAgICAgICAgZWRnZS0+cG9zIC8gNjQuMCwgZWRnZTItPnBvcyAvIDY0LjAgKSk7CisgICAgICAgICAgICAgICAgICAgICAgZWRnZSAtIGVkZ2VzLCAoZG91YmxlKWVkZ2UtPm9wb3MgLyA2NCwKKyAgICAgICAgICAgICAgICAgICAgICBlZGdlMiAtIGVkZ2VzLCAoZG91YmxlKWVkZ2UyLT5vcG9zIC8gNjQsCisgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSllZGdlLT5wb3MgLyA2NCwgKGRvdWJsZSllZGdlMi0+cG9zIC8gNjQgKSk7CiAgICAgICAgIH0KIAogICAgICAgICBlbHNlCkBAIC0zMzAyLDkgKzMzMDUsOSBAQAogCiAgICAgICAgICAgRlRfVFJBQ0U1KCggIiAgU1RFTTogZWRnZSAlbGQgKG9wb3M9JS4yZikgbGlua2VkIHRvICVsZCAob3Bvcz0lLjJmKSIKICAgICAgICAgICAgICAgICAgICAgICAiIHNuYXBwZWQgdG8gJS4yZiBhbmQgJS4yZlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICBlZGdlIC0gZWRnZXMsIGVkZ2UtPm9wb3MgLyA2NC4wLAotICAgICAgICAgICAgICAgICAgICAgIGVkZ2UyIC0gZWRnZXMsIGVkZ2UyLT5vcG9zIC8gNjQuMCwKLSAgICAgICAgICAgICAgICAgICAgICBlZGdlLT5wb3MgLyA2NC4wLCBlZGdlMi0+cG9zIC8gNjQuMCApKTsKKyAgICAgICAgICAgICAgICAgICAgICBlZGdlIC0gZWRnZXMsIChkb3VibGUpZWRnZS0+b3BvcyAvIDY0LAorICAgICAgICAgICAgICAgICAgICAgIGVkZ2UyIC0gZWRnZXMsIChkb3VibGUpZWRnZTItPm9wb3MgLyA2NCwKKyAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWVkZ2UtPnBvcyAvIDY0LCAoZG91YmxlKWVkZ2UyLT5wb3MgLyA2NCApKTsKICAgICAgICAgfQogCiAjaWZkZWYgRlRfREVCVUdfTEVWRUxfVFJBQ0UKQEAgLTMzMjUsOCArMzMyOCw4IEBACiAjaWZkZWYgRlRfREVCVUdfTEVWRUxfVFJBQ0UKICAgICAgICAgICAgIEZUX1RSQUNFNSgoICIgIEJPVU5EOiBlZGdlICVsZCAocG9zPSUuMmYpIG1vdmVkIHRvICUuMmZcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBlZGdlIC0gZWRnZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBlZGdlLT5wb3MgLyA2NC4wLAotICAgICAgICAgICAgICAgICAgICAgICAgZWRnZVstMV0ucG9zIC8gNjQuMCApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpZWRnZS0+cG9zIC8gNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWVkZ2VbLTFdLnBvcyAvIDY0ICkpOwogCiAgICAgICAgICAgICBudW1fYWN0aW9ucysrOwogI2VuZGlmCkBAIC0zNDI3LDkgKzM0MzAsOSBAQAogICAgICAgICAgIGFmX2xhdGluX2FsaWduX3NlcmlmX2VkZ2UoIGhpbnRzLCBlZGdlLT5zZXJpZiwgZWRnZSApOwogICAgICAgICAgIEZUX1RSQUNFNSgoICIgIFNFUklGOiBlZGdlICVsZCAob3Bvcz0lLjJmKSBzZXJpZiB0byAlbGQgKG9wb3M9JS4yZikiCiAgICAgICAgICAgICAgICAgICAgICAgIiBhbGlnbmVkIHRvICUuMmZcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgZWRnZSAtIGVkZ2VzLCBlZGdlLT5vcG9zIC8gNjQuMCwKLSAgICAgICAgICAgICAgICAgICAgICBlZGdlLT5zZXJpZiAtIGVkZ2VzLCBlZGdlLT5zZXJpZi0+b3BvcyAvIDY0LjAsCi0gICAgICAgICAgICAgICAgICAgICAgZWRnZS0+cG9zIC8gNjQuMCApKTsKKyAgICAgICAgICAgICAgICAgICAgICBlZGdlIC0gZWRnZXMsIChkb3VibGUpZWRnZS0+b3BvcyAvIDY0LAorICAgICAgICAgICAgICAgICAgICAgIGVkZ2UtPnNlcmlmIC0gZWRnZXMsIChkb3VibGUpZWRnZS0+c2VyaWYtPm9wb3MgLyA2NCwKKyAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWVkZ2UtPnBvcyAvIDY0ICkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKCAhYW5jaG9yICkKICAgICAgICAgewpAQCAtMzQzNyw3ICszNDQwLDggQEAKICAgICAgICAgICBhbmNob3IgICAgPSBlZGdlOwogICAgICAgICAgIEZUX1RSQUNFNSgoICIgIFNFUklGX0FOQ0hPUjogZWRnZSAlbGQgKG9wb3M9JS4yZikiCiAgICAgICAgICAgICAgICAgICAgICAgIiBzbmFwcGVkIHRvICUuMmZcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgZWRnZS1lZGdlcywgZWRnZS0+b3BvcyAvIDY0LjAsIGVkZ2UtPnBvcyAvIDY0LjAgKSk7CisgICAgICAgICAgICAgICAgICAgICAgZWRnZS1lZGdlcywKKyAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWVkZ2UtPm9wb3MgLyA2NCwgKGRvdWJsZSllZGdlLT5wb3MgLyA2NCApKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKQEAgLTM0NjUsOSArMzQ2OSw5IEBACiAKICAgICAgICAgICAgIEZUX1RSQUNFNSgoICIgIFNFUklGX0xJTksxOiBlZGdlICVsZCAob3Bvcz0lLjJmKSBzbmFwcGVkIHRvICUuMmYiCiAgICAgICAgICAgICAgICAgICAgICAgICAiIGZyb20gJWxkIChvcG9zPSUuMmYpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgZWRnZSAtIGVkZ2VzLCBlZGdlLT5vcG9zIC8gNjQuMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2UtPnBvcyAvIDY0LjAsCi0gICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgLSBlZGdlcywgYmVmb3JlLT5vcG9zIC8gNjQuMCApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2UgLSBlZGdlcywgKGRvdWJsZSllZGdlLT5vcG9zIC8gNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWVkZ2UtPnBvcyAvIDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlIC0gZWRnZXMsIChkb3VibGUpYmVmb3JlLT5vcG9zIC8gNjQgKSk7CiAgICAgICAgICAgfQogICAgICAgICAgIGVsc2UKICAgICAgICAgICB7CkBAIC0zNDc1LDcgKzM0NzksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKCAoIGVkZ2UtPm9wb3MgLSBhbmNob3ItPm9wb3MgKyAxNiApICYgfjMxICk7CiAgICAgICAgICAgICBGVF9UUkFDRTUoKCAiICBTRVJJRl9MSU5LMjogZWRnZSAlbGQgKG9wb3M9JS4yZikiCiAgICAgICAgICAgICAgICAgICAgICAgICAiIHNuYXBwZWQgdG8gJS4yZlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2UgLSBlZGdlcywgZWRnZS0+b3BvcyAvIDY0LjAsIGVkZ2UtPnBvcyAvIDY0LjAgKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlZGdlIC0gZWRnZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWVkZ2UtPm9wb3MgLyA2NCwgKGRvdWJsZSllZGdlLT5wb3MgLyA2NCApKTsKICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMzQ5NSw4ICszNTAwLDggQEAKICNpZmRlZiBGVF9ERUJVR19MRVZFTF9UUkFDRQogICAgICAgICAgICAgRlRfVFJBQ0U1KCggIiAgQk9VTkQ6IGVkZ2UgJWxkIChwb3M9JS4yZikgbW92ZWQgdG8gJS4yZlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2UgLSBlZGdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2UtPnBvcyAvIDY0LjAsCi0gICAgICAgICAgICAgICAgICAgICAgICBlZGdlWy0xXS5wb3MgLyA2NC4wICkpOworICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSllZGdlLT5wb3MgLyA2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpZWRnZVstMV0ucG9zIC8gNjQgKSk7CiAKICAgICAgICAgICAgIG51bV9hY3Rpb25zKys7CiAjZW5kaWYKQEAgLTM1MTYsOCArMzUyMSw4IEBACiAjaWZkZWYgRlRfREVCVUdfTEVWRUxfVFJBQ0UKICAgICAgICAgICAgIEZUX1RSQUNFNSgoICIgIEJPVU5EOiBlZGdlICVsZCAocG9zPSUuMmYpIG1vdmVkIHRvICUuMmZcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBlZGdlIC0gZWRnZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBlZGdlLT5wb3MgLyA2NC4wLAotICAgICAgICAgICAgICAgICAgICAgICAgZWRnZVsxXS5wb3MgLyA2NC4wICkpOworICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSllZGdlLT5wb3MgLyA2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpZWRnZVsxXS5wb3MgLyA2NCApKTsKIAogICAgICAgICAgICAgbnVtX2FjdGlvbnMrKzsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2F1dG9maXQvYWZsYXRpbi5oIGIvc3JjL2F1dG9maXQvYWZsYXRpbi5oCmluZGV4IGQ2YjkxOWUuLjNjNmE3ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9hdXRvZml0L2FmbGF0aW4uaAorKysgYi9zcmMvYXV0b2ZpdC9hZmxhdGluLmgKQEAgLTUsNyArNSw3IEBACiAgKiAgIEF1dG8tZml0dGVyIGhpbnRpbmcgcm91dGluZXMgZm9yIGxhdGluIHdyaXRpbmcgc3lzdGVtCiAgKiAgIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvYXV0b2ZpdC9hZmxvYWRlci5jIGIvc3JjL2F1dG9maXQvYWZsb2FkZXIuYwppbmRleCBhMDZkNDlhLi5jODA4Mjc5IDEwMDY0NAotLS0gYS9zcmMvYXV0b2ZpdC9hZmxvYWRlci5jCisrKyBiL3NyYy9hdXRvZml0L2FmbG9hZGVyLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBBdXRvLWZpdHRlciBnbHlwaCBsb2FkaW5nIHJvdXRpbmVzIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0yMjksOSArMjI5LDYgQEAKICAgICBBRl9Xcml0aW5nU3lzdGVtQ2xhc3MgIHdyaXRpbmdfc3lzdGVtX2NsYXNzOwogCiAKLSAgICBpZiAoICFzaXplICkKLSAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9TaXplX0hhbmRsZSApOwotCiAgICAgRlRfWkVSTyggJnNjYWxlciApOwogCiAgICAgaWYgKCAhc2l6ZV9pbnRlcm5hbC0+YXV0b2hpbnRfbWV0cmljcy54X3NjYWxlICAgICAgICAgICAgICAgICAgICAgICAgICB8fApkaWZmIC0tZ2l0IGEvc3JjL2F1dG9maXQvYWZsb2FkZXIuaCBiL3NyYy9hdXRvZml0L2FmbG9hZGVyLmgKaW5kZXggYjQ5MzZhOC4uZTRlMTk3ZSAxMDA2NDQKLS0tIGEvc3JjL2F1dG9maXQvYWZsb2FkZXIuaAorKysgYi9zcmMvYXV0b2ZpdC9hZmxvYWRlci5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQXV0by1maXR0ZXIgZ2x5cGggbG9hZGluZyByb3V0aW5lcyAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtNzUsNyArNzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBnaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgIGxvYWRfZmxhZ3MgKTsKIAotICBGVF9MT0NBTF9ERUYoIEZUX0ZpeGVkICkKKyAgRlRfTE9DQUwoIEZUX0ZpeGVkICkKICAgYWZfbG9hZGVyX2NvbXB1dGVfZGFya2VuaW5nKCBBRl9Mb2FkZXIgIGxvYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GYWNlICAgIGZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICBzdGFuZGFyZF93aWR0aCApOwpkaWZmIC0tZ2l0IGEvc3JjL2F1dG9maXQvYWZtb2R1bGUuYyBiL3NyYy9hdXRvZml0L2FmbW9kdWxlLmMKaW5kZXggNzZmOWIzNy4uOTJlNTE1NiAxMDA2NDQKLS0tIGEvc3JjL2F1dG9maXQvYWZtb2R1bGUuYworKysgYi9zcmMvYXV0b2ZpdC9hZm1vZHVsZS5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQXV0by1maXR0ZXIgbW9kdWxlIGltcGxlbWVudGF0aW9uIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC00MywxNCArNDMsMTQgQEAKIAogI2VuZGlmCiAKLSAgaW50ICBfYWZfZGVidWdfZGlzYWJsZV9ob3J6X2hpbnRzOwotICBpbnQgIF9hZl9kZWJ1Z19kaXNhYmxlX3ZlcnRfaGludHM7Ci0gIGludCAgX2FmX2RlYnVnX2Rpc2FibGVfYmx1ZV9oaW50czsKKyAgaW50ICBhZl9kZWJ1Z19kaXNhYmxlX2hvcnpfaGludHNfOworICBpbnQgIGFmX2RlYnVnX2Rpc2FibGVfdmVydF9oaW50c187CisgIGludCAgYWZfZGVidWdfZGlzYWJsZV9ibHVlX2hpbnRzXzsKIAogICAvKiB3ZSB1c2UgYSBnbG9iYWwgb2JqZWN0IGluc3RlYWQgb2YgYSBsb2NhbCBvbmUgZm9yIGRlYnVnZ2luZyAqLwotICBzdGF0aWMgQUZfR2x5cGhIaW50c1JlYyAgX2FmX2RlYnVnX2hpbnRzX3JlY1sxXTsKKyAgc3RhdGljIEFGX0dseXBoSGludHNSZWMgIGFmX2RlYnVnX2hpbnRzX3JlY19bMV07CiAKLSAgdm9pZCogIF9hZl9kZWJ1Z19oaW50cyA9IF9hZl9kZWJ1Z19oaW50c19yZWM7CisgIHZvaWQqICBhZl9kZWJ1Z19oaW50c18gPSBhZl9kZWJ1Z19oaW50c19yZWNfOwogI2VuZGlmCiAKICNpbmNsdWRlIDxmcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaD4KQEAgLTExOSw4ICsxMTksOCBAQAogCiAgICAgaWYgKCAhZnRfc3RyY21wKCBwcm9wZXJ0eV9uYW1lLCAiZmFsbGJhY2stc2NyaXB0IiApICkKICAgICB7Ci0gICAgICBGVF9VSW50KiAgZmFsbGJhY2tfc2NyaXB0OwotICAgICAgRlRfVUludCAgIHNzOworICAgICAgQUZfU2NyaXB0KiAgZmFsbGJhY2tfc2NyaXB0OworICAgICAgRlRfVUludCAgICAgc3M7CiAKIAogI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fRU5WSVJPTk1FTlRfUFJPUEVSVElFUwpAQCAtMTI4LDcgKzEyOCw3IEBACiAgICAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOwogI2VuZGlmCiAKLSAgICAgIGZhbGxiYWNrX3NjcmlwdCA9IChGVF9VSW50Kil2YWx1ZTsKKyAgICAgIGZhbGxiYWNrX3NjcmlwdCA9IChBRl9TY3JpcHQqKXZhbHVlOwogCiAgICAgICAvKiBXZSB0cmFuc2xhdGUgdGhlIGZhbGxiYWNrIHNjcmlwdCB0byBhIGZhbGxiYWNrIHN0eWxlIHRoYXQgdXNlcyAqLwogICAgICAgLyogYGZhbGxiYWNrLXNjcmlwdCcgYXMgaXRzIHNjcmlwdCBhbmQgYEFGX0NPVkVSQUdFX05PTkUnIGFzIGl0cyAgKi8KQEAgLTEzOCw4ICsxMzgsOCBAQAogICAgICAgICBBRl9TdHlsZUNsYXNzICBzdHlsZV9jbGFzcyA9IGFmX3N0eWxlX2NsYXNzZXNbc3NdOwogCiAKLSAgICAgICAgaWYgKCAoRlRfVUludClzdHlsZV9jbGFzcy0+c2NyaXB0ID09ICpmYWxsYmFja19zY3JpcHQgJiYKLSAgICAgICAgICAgICBzdHlsZV9jbGFzcy0+Y292ZXJhZ2UgPT0gQUZfQ09WRVJBR0VfREVGQVVMVCAgICAgKQorICAgICAgICBpZiAoIHN0eWxlX2NsYXNzLT5zY3JpcHQgICA9PSAqZmFsbGJhY2tfc2NyaXB0ICAgICYmCisgICAgICAgICAgICAgc3R5bGVfY2xhc3MtPmNvdmVyYWdlID09IEFGX0NPVkVSQUdFX0RFRkFVTFQgKQogICAgICAgICB7CiAgICAgICAgICAgbW9kdWxlLT5mYWxsYmFja19zdHlsZSA9IHNzOwogICAgICAgICAgIGJyZWFrOwpAQCAtMTU3LDcgKzE1Nyw3IEBACiAgICAgfQogICAgIGVsc2UgaWYgKCAhZnRfc3RyY21wKCBwcm9wZXJ0eV9uYW1lLCAiZGVmYXVsdC1zY3JpcHQiICkgKQogICAgIHsKLSAgICAgIEZUX1VJbnQqICBkZWZhdWx0X3NjcmlwdDsKKyAgICAgIEFGX1NjcmlwdCogIGRlZmF1bHRfc2NyaXB0OwogCiAKICNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0VOVklST05NRU5UX1BST1BFUlRJRVMKQEAgLTE2NSw3ICsxNjUsNyBAQAogICAgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKICNlbmRpZgogCi0gICAgICBkZWZhdWx0X3NjcmlwdCA9IChGVF9VSW50Kil2YWx1ZTsKKyAgICAgIGRlZmF1bHRfc2NyaXB0ID0gKEFGX1NjcmlwdCopdmFsdWU7CiAKICAgICAgIG1vZHVsZS0+ZGVmYXVsdF9zY3JpcHQgPSAqZGVmYXVsdF9zY3JpcHQ7CiAKQEAgLTI5MSw4ICsyOTEsNiBAQAogICB7CiAgICAgRlRfRXJyb3IgICBlcnJvciAgICAgICAgICA9IEZUX0Vycl9PazsKICAgICBBRl9Nb2R1bGUgIG1vZHVsZSAgICAgICAgID0gKEFGX01vZHVsZSlmdF9tb2R1bGU7Ci0gICAgRlRfVUludCAgICBmYWxsYmFja19zdHlsZSA9IG1vZHVsZS0+ZmFsbGJhY2tfc3R5bGU7Ci0gICAgRlRfVUludCAgICBkZWZhdWx0X3NjcmlwdCA9IG1vZHVsZS0+ZGVmYXVsdF9zY3JpcHQ7CiAKIAogICAgIGlmICggIWZ0X3N0cmNtcCggcHJvcGVydHlfbmFtZSwgImdseXBoLXRvLXNjcmlwdC1tYXAiICkgKQpAQCAtMzA5LDkgKzMwNyw5IEBACiAgICAgfQogICAgIGVsc2UgaWYgKCAhZnRfc3RyY21wKCBwcm9wZXJ0eV9uYW1lLCAiZmFsbGJhY2stc2NyaXB0IiApICkKICAgICB7Ci0gICAgICBGVF9VSW50KiAgdmFsID0gKEZUX1VJbnQqKXZhbHVlOworICAgICAgQUZfU2NyaXB0KiAgdmFsID0gKEFGX1NjcmlwdCopdmFsdWU7CiAKLSAgICAgIEFGX1N0eWxlQ2xhc3MgIHN0eWxlX2NsYXNzID0gYWZfc3R5bGVfY2xhc3Nlc1tmYWxsYmFja19zdHlsZV07CisgICAgICBBRl9TdHlsZUNsYXNzICBzdHlsZV9jbGFzcyA9IGFmX3N0eWxlX2NsYXNzZXNbbW9kdWxlLT5mYWxsYmFja19zdHlsZV07CiAKIAogICAgICAgKnZhbCA9IHN0eWxlX2NsYXNzLT5zY3JpcHQ7CkBAIC0zMjAsMTAgKzMxOCwxMCBAQAogICAgIH0KICAgICBlbHNlIGlmICggIWZ0X3N0cmNtcCggcHJvcGVydHlfbmFtZSwgImRlZmF1bHQtc2NyaXB0IiApICkKICAgICB7Ci0gICAgICBGVF9VSW50KiAgdmFsID0gKEZUX1VJbnQqKXZhbHVlOworICAgICAgQUZfU2NyaXB0KiAgdmFsID0gKEFGX1NjcmlwdCopdmFsdWU7CiAKIAotICAgICAgKnZhbCA9IGRlZmF1bHRfc2NyaXB0OworICAgICAgKnZhbCA9IG1vZHVsZS0+ZGVmYXVsdF9zY3JpcHQ7CiAKICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CkBAIC00MjUsOCArNDIzLDggQEAKICAgICBGVF9VTlVTRUQoIGZ0X21vZHVsZSApOwogCiAjaWZkZWYgRlRfREVCVUdfQVVUT0ZJVAotICAgIGlmICggX2FmX2RlYnVnX2hpbnRzX3JlYy0+bWVtb3J5ICkKLSAgICAgIGFmX2dseXBoX2hpbnRzX2RvbmUoIF9hZl9kZWJ1Z19oaW50c19yZWMgKTsKKyAgICBpZiAoIGFmX2RlYnVnX2hpbnRzX3JlY18tPm1lbW9yeSApCisgICAgICBhZl9nbHlwaF9oaW50c19kb25lKCBhZl9kZWJ1Z19oaW50c19yZWNfICk7CiAjZW5kaWYKICAgfQogCkBAIC00NDUsNyArNDQzLDcgQEAKIAogICAgIC8qIGluIGRlYnVnIG1vZGUsIHdlIHVzZSBhIGdsb2JhbCBvYmplY3QgdGhhdCBzdXJ2aXZlcyB0aGlzIHJvdXRpbmUgKi8KIAotICAgIEFGX0dseXBoSGludHMgIGhpbnRzID0gX2FmX2RlYnVnX2hpbnRzX3JlYzsKKyAgICBBRl9HbHlwaEhpbnRzICBoaW50cyA9IGFmX2RlYnVnX2hpbnRzX3JlY187CiAgICAgQUZfTG9hZGVyUmVjICAgbG9hZGVyWzFdOwogCiAgICAgRlRfVU5VU0VEKCBzaXplICk7CmRpZmYgLS1naXQgYS9zcmMvYXV0b2ZpdC9hZm1vZHVsZS5oIGIvc3JjL2F1dG9maXQvYWZtb2R1bGUuaAppbmRleCBjNWJkNDY4Li40YjhiNDU2IDEwMDY0NAotLS0gYS9zcmMvYXV0b2ZpdC9hZm1vZHVsZS5oCisrKyBiL3NyYy9hdXRvZml0L2FmbW9kdWxlLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBBdXRvLWZpdHRlciBtb2R1bGUgaW1wbGVtZW50YXRpb24gKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTM2LDcgKzM2LDcgQEAKICAgICBGVF9Nb2R1bGVSZWMgIHJvb3Q7CiAKICAgICBGVF9VSW50ICAgICAgIGZhbGxiYWNrX3N0eWxlOwotICAgIEZUX1VJbnQgICAgICAgZGVmYXVsdF9zY3JpcHQ7CisgICAgQUZfU2NyaXB0ICAgICBkZWZhdWx0X3NjcmlwdDsKICAgICBGVF9Cb29sICAgICAgIG5vX3N0ZW1fZGFya2VuaW5nOwogICAgIEZUX0ludCAgICAgICAgZGFya2VuX3BhcmFtc1s4XTsKIApkaWZmIC0tZ2l0IGEvc3JjL2F1dG9maXQvYWZyYW5nZXMuYyBiL3NyYy9hdXRvZml0L2FmcmFuZ2VzLmMKaW5kZXggZTA2ZjE4Mi4uY2ZjYWYzNCAxMDA2NDQKLS0tIGEvc3JjL2F1dG9maXQvYWZyYW5nZXMuYworKysgYi9zcmMvYXV0b2ZpdC9hZnJhbmdlcy5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQXV0by1maXR0ZXIgVW5pY29kZSBzY3JpcHQgcmFuZ2VzIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvYXV0b2ZpdC9hZnJhbmdlcy5oIGIvc3JjL2F1dG9maXQvYWZyYW5nZXMuaAppbmRleCA4NDFkNjMwLi41Nzc1NzM4IDEwMDY0NAotLS0gYS9zcmMvYXV0b2ZpdC9hZnJhbmdlcy5oCisrKyBiL3NyYy9hdXRvZml0L2FmcmFuZ2VzLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBBdXRvLWZpdHRlciBVbmljb2RlIHNjcmlwdCByYW5nZXMgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9hdXRvZml0L2Fmc2NyaXB0LmggYi9zcmMvYXV0b2ZpdC9hZnNjcmlwdC5oCmluZGV4IGFmNzhkNTcuLjNhMTAxOTMgMTAwNjQ0Ci0tLSBhL3NyYy9hdXRvZml0L2Fmc2NyaXB0LmgKKysrIGIvc3JjL2F1dG9maXQvYWZzY3JpcHQuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEF1dG8tZml0dGVyIHNjcmlwdHMgKHNwZWNpZmljYXRpb24gb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL2F1dG9maXQvYWZzaGFwZXIuYyBiL3NyYy9hdXRvZml0L2Fmc2hhcGVyLmMKaW5kZXggNWQwNzg5My4uMWI4Yjg3MCAxMDA2NDQKLS0tIGEvc3JjL2F1dG9maXQvYWZzaGFwZXIuYworKysgYi9zcmMvYXV0b2ZpdC9hZnNoYXBlci5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgSGFyZkJ1enogaW50ZXJmYWNlIGZvciBhY2Nlc3NpbmcgT3BlblR5cGUgZmVhdHVyZXMgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9hdXRvZml0L2Fmc2hhcGVyLmggYi9zcmMvYXV0b2ZpdC9hZnNoYXBlci5oCmluZGV4IGNmM2Y4MTMuLjA1NGExOGYgMTAwNjQ0Ci0tLSBhL3NyYy9hdXRvZml0L2Fmc2hhcGVyLmgKKysrIGIvc3JjL2F1dG9maXQvYWZzaGFwZXIuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEhhcmZCdXp6IGludGVyZmFjZSBmb3IgYWNjZXNzaW5nIE9wZW5UeXBlIGZlYXR1cmVzIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlIDxoYi5oPgogI2luY2x1ZGUgPGhiLW90Lmg+Ci0jaW5jbHVkZSA8aGItZnQuaD4KKyNpbmNsdWRlICJmdC1oYi5oIgogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvc3JjL2F1dG9maXQvYWZzdHlsZXMuaCBiL3NyYy9hdXRvZml0L2Fmc3R5bGVzLmgKaW5kZXggNjRjODA4Yy4uNzNlYmVmMCAxMDA2NDQKLS0tIGEvc3JjL2F1dG9maXQvYWZzdHlsZXMuaAorKysgYi9zcmMvYXV0b2ZpdC9hZnN0eWxlcy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQXV0by1maXR0ZXIgc3R5bGVzIChzcGVjaWZpY2F0aW9uIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9hdXRvZml0L2FmdHlwZXMuaCBiL3NyYy9hdXRvZml0L2FmdHlwZXMuaAppbmRleCAxZDc5MmI5Li42NjE1MTk0IDEwMDY0NAotLS0gYS9zcmMvYXV0b2ZpdC9hZnR5cGVzLmgKKysrIGIvc3JjL2F1dG9maXQvYWZ0eXBlcy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQXV0by1maXR0ZXIgdHlwZXMgKHNwZWNpZmljYXRpb24gb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtNTcsMTAgKzU3LDEwIEBACiAKICNpZmRlZiBGVF9ERUJVR19BVVRPRklUCiAKLWV4dGVybiBpbnQgICAgX2FmX2RlYnVnX2Rpc2FibGVfaG9yel9oaW50czsKLWV4dGVybiBpbnQgICAgX2FmX2RlYnVnX2Rpc2FibGVfdmVydF9oaW50czsKLWV4dGVybiBpbnQgICAgX2FmX2RlYnVnX2Rpc2FibGVfYmx1ZV9oaW50czsKLWV4dGVybiB2b2lkKiAgX2FmX2RlYnVnX2hpbnRzOworZXh0ZXJuIGludCAgICBhZl9kZWJ1Z19kaXNhYmxlX2hvcnpfaGludHNfOworZXh0ZXJuIGludCAgICBhZl9kZWJ1Z19kaXNhYmxlX3ZlcnRfaGludHNfOworZXh0ZXJuIGludCAgICBhZl9kZWJ1Z19kaXNhYmxlX2JsdWVfaGludHNfOworZXh0ZXJuIHZvaWQqICBhZl9kZWJ1Z19oaW50c187CiAKICNlbmRpZiAvKiBGVF9ERUJVR19BVVRPRklUICovCiAKQEAgLTExOSwxMyArMTE5LDEzIEBACiAKICAgdHlwZWRlZiBzdHJ1Y3QgIEFGX1NjYWxlclJlY18KICAgewotICAgIEZUX0ZhY2UgICAgICAgICBmYWNlOyAgICAgICAgLyogc291cmNlIGZvbnQgZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgRlRfRml4ZWQgICAgICAgIHhfc2NhbGU7ICAgICAvKiBmcm9tIGZvbnQgdW5pdHMgdG8gMS82NHRoIGRldmljZSBwaXhlbHMgKi8KLSAgICBGVF9GaXhlZCAgICAgICAgeV9zY2FsZTsgICAgIC8qIGZyb20gZm9udCB1bml0cyB0byAxLzY0dGggZGV2aWNlIHBpeGVscyAqLwotICAgIEZUX1BvcyAgICAgICAgICB4X2RlbHRhOyAgICAgLyogaW4gMS82NHRoIGRldmljZSBwaXhlbHMgICAgICAgICAgICAgICAgICovCi0gICAgRlRfUG9zICAgICAgICAgIHlfZGVsdGE7ICAgICAvKiBpbiAxLzY0dGggZGV2aWNlIHBpeGVscyAgICAgICAgICAgICAgICAgKi8KLSAgICBGVF9SZW5kZXJfTW9kZSAgcmVuZGVyX21vZGU7IC8qIG1vbm9jaHJvbWUsIGFudGktYWxpYXNlZCwgTENELCBldGMuICAgICAqLwotICAgIEZUX1VJbnQzMiAgICAgICBmbGFnczsgICAgICAgLyogYWRkaXRpb25hbCBjb250cm9sIGZsYWdzLCBzZWUgYWJvdmUgICAgICovCisgICAgRlRfRmFjZSAgICAgICAgIGZhY2U7ICAgICAgICAvKiBzb3VyY2UgZm9udCBmYWNlICAgICAgICAgICAgICAgICAgICAgICovCisgICAgRlRfRml4ZWQgICAgICAgIHhfc2NhbGU7ICAgICAvKiBmcm9tIGZvbnQgdW5pdHMgdG8gMS82NCBkZXZpY2UgcGl4ZWxzICovCisgICAgRlRfRml4ZWQgICAgICAgIHlfc2NhbGU7ICAgICAvKiBmcm9tIGZvbnQgdW5pdHMgdG8gMS82NCBkZXZpY2UgcGl4ZWxzICovCisgICAgRlRfUG9zICAgICAgICAgIHhfZGVsdGE7ICAgICAvKiBpbiAxLzY0IGRldmljZSBwaXhlbHMgICAgICAgICAgICAgICAgICovCisgICAgRlRfUG9zICAgICAgICAgIHlfZGVsdGE7ICAgICAvKiBpbiAxLzY0IGRldmljZSBwaXhlbHMgICAgICAgICAgICAgICAgICovCisgICAgRlRfUmVuZGVyX01vZGUgIHJlbmRlcl9tb2RlOyAvKiBtb25vY2hyb21lLCBhbnRpLWFsaWFzZWQsIExDRCwgZXRjLiAgICovCisgICAgRlRfVUludDMyICAgICAgIGZsYWdzOyAgICAgICAvKiBhZGRpdGlvbmFsIGNvbnRyb2wgZmxhZ3MsIHNlZSBhYm92ZSAgICovCiAKICAgfSBBRl9TY2FsZXJSZWMsICpBRl9TY2FsZXI7CiAKZGlmZiAtLWdpdCBhL3NyYy9hdXRvZml0L2Fmd3MtZGVjbC5oIGIvc3JjL2F1dG9maXQvYWZ3cy1kZWNsLmgKaW5kZXggYzEwZGQ1Ny4uNDhjODg4YSAxMDA2NDQKLS0tIGEvc3JjL2F1dG9maXQvYWZ3cy1kZWNsLmgKKysrIGIvc3JjL2F1dG9maXQvYWZ3cy1kZWNsLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBBdXRvLWZpdHRlciB3cml0aW5nIHN5c3RlbSBkZWNsYXJhdGlvbnMgKHNwZWNpZmljYXRpb24gb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL2F1dG9maXQvYWZ3cy1pdGVyLmggYi9zcmMvYXV0b2ZpdC9hZndzLWl0ZXIuaAppbmRleCA1NTcxNDIwLi5hMGE2ODZmIDEwMDY0NAotLS0gYS9zcmMvYXV0b2ZpdC9hZndzLWl0ZXIuaAorKysgYi9zcmMvYXV0b2ZpdC9hZndzLWl0ZXIuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEF1dG8tZml0dGVyIHdyaXRpbmcgc3lzdGVtcyBpdGVyYXRvciAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvYXV0b2ZpdC9hdXRvZml0LmMgYi9zcmMvYXV0b2ZpdC9hdXRvZml0LmMKaW5kZXggN2U2OTJiNC4uOGJkNjA5YiAxMDA2NDQKLS0tIGEvc3JjL2F1dG9maXQvYXV0b2ZpdC5jCisrKyBiL3NyYy9hdXRvZml0L2F1dG9maXQuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEF1dG8tZml0dGVyIG1vZHVsZSAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMTgsNiArMTgsNyBAQAogCiAjZGVmaW5lIEZUX01BS0VfT1BUSU9OX1NJTkdMRV9PQkpFQ1QKIAorI2luY2x1ZGUgImZ0LWhiLmMiCiAjaW5jbHVkZSAiYWZibHVlLmMiCiAjaW5jbHVkZSAiYWZjamsuYyIKICNpbmNsdWRlICJhZmR1bW15LmMiCmRpZmYgLS1naXQgYS9zcmMvYXV0b2ZpdC9mdC1oYi5jIGIvc3JjL2F1dG9maXQvZnQtaGIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWE4NDAxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2F1dG9maXQvZnQtaGIuYwpAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDA5LCAyMDIzICBSZWQgSGF0LCBJbmMuCisgKiBDb3B5cmlnaHQgwqkgMjAxNSAgR29vZ2xlLCBJbmMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgd2l0aG91dCB3cml0dGVuIGFncmVlbWVudCBhbmQgd2l0aG91dAorICogbGljZW5zZSBvciByb3lhbHR5IGZlZXMsIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzCisgKiBzb2Z0d2FyZSBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlLCBwcm92aWRlZCB0aGF0IHRoZQorICogYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhlIGZvbGxvd2luZyB0d28gcGFyYWdyYXBocyBhcHBlYXIgaW4KKyAqIGFsbCBjb3BpZXMgb2YgdGhpcyBzb2Z0d2FyZS4KKyAqCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRSBMSUFCTEUgVE8gQU5ZIFBBUlRZIEZPUgorICogRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiBBUklTSU5HIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OLCBFVkVOCisgKiBJRiBUSEUgQ09QWVJJR0hUIEhPTERFUiBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKgorICogVEhFIENPUFlSSUdIVCBIT0xERVIgU1BFQ0lGSUNBTExZIERJU0NMQUlNUyBBTlkgV0FSUkFOVElFUywgSU5DTFVESU5HLAorICogQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgVEhFIFNPRlRXQVJFIFBST1ZJREVEIEhFUkVVTkRFUiBJUworICogT04gQU4gIkFTIElTIiBCQVNJUywgQU5EIFRIRSBDT1BZUklHSFQgSE9MREVSIEhBUyBOTyBPQkxJR0FUSU9OIFRPCisgKiBQUk9WSURFIE1BSU5URU5BTkNFLCBTVVBQT1JULCBVUERBVEVTLCBFTkhBTkNFTUVOVFMsIE9SIE1PRElGSUNBVElPTlMuCisgKgorICogUmVkIEhhdCBBdXRob3Iocyk6IEJlaGRhZCBFc2ZhaGJvZCwgTWF0dGhpYXMgQ2xhc2VuCisgKiBHb29nbGUgQXV0aG9yKHMpOiBCZWhkYWQgRXNmYWhib2QKKyAqLworCisjaW5jbHVkZSA8ZnJlZXR5cGUvZnJlZXR5cGUuaD4KKyNpbmNsdWRlIDxmcmVldHlwZS90dHRhYmxlcy5oPgorCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9VU0VfSEFSRkJVWloKKworI2luY2x1ZGUgImZ0LWhiLmgiCisKKy8qIFRoZSBmb2xsb3dpbmcgdGhyZWUgZnVuY3Rpb25zIGFyZSBhIG1vcmUgb3IgbGVzcyB2ZXJiYXRpbQorICogY29weSBvZiBjb3JyZXNwb25kaW5nIEhhcmZCdXp6IGNvZGUgZnJvbSBoYi1mdC5jYworICovCisKK3N0YXRpYyBoYl9ibG9iX3QgKgoraGJfZnRfcmVmZXJlbmNlX3RhYmxlXyAoaGJfZmFjZV90ICpmYWNlLCBoYl90YWdfdCB0YWcsIHZvaWQgKnVzZXJfZGF0YSkKK3sKKyAgRlRfRmFjZSBmdF9mYWNlID0gKEZUX0ZhY2UpIHVzZXJfZGF0YTsKKyAgRlRfQnl0ZSAqYnVmZmVyOworICBGVF9VTG9uZyAgbGVuZ3RoID0gMDsKKyAgRlRfRXJyb3IgZXJyb3I7CisKKyAgRlRfVU5VU0VEIChmYWNlKTsKKworICAvKiBOb3RlOiBGcmVlVHlwZSBsaWtlIEhhcmZCdXp6IHVzZXMgdGhlIE5PTkUgdGFnIGZvciBmZXRjaGluZyB0aGUgZW50aXJlIGJsb2IgKi8KKworICBlcnJvciA9IEZUX0xvYWRfU2ZudF9UYWJsZSAoZnRfZmFjZSwgdGFnLCAwLCBOVUxMLCAmbGVuZ3RoKTsKKyAgaWYgKGVycm9yKQorICAgIHJldHVybiBOVUxMOworCisgIGJ1ZmZlciA9IChGVF9CeXRlICopIGZ0X3NtYWxsb2MgKGxlbmd0aCk7CisgIGlmICghYnVmZmVyKQorICAgIHJldHVybiBOVUxMOworCisgIGVycm9yID0gRlRfTG9hZF9TZm50X1RhYmxlIChmdF9mYWNlLCB0YWcsIDAsIGJ1ZmZlciwgJmxlbmd0aCk7CisgIGlmIChlcnJvcikKKyAgeworICAgIGZyZWUgKGJ1ZmZlcik7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICByZXR1cm4gaGJfYmxvYl9jcmVhdGUgKChjb25zdCBjaGFyICopIGJ1ZmZlciwgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgIEhCX01FTU9SWV9NT0RFX1dSSVRBQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwgZnRfc2ZyZWUpOworfQorCitzdGF0aWMgaGJfZmFjZV90ICoKK2hiX2Z0X2ZhY2VfY3JlYXRlXyAoRlRfRmFjZSAgICAgICAgICAgZnRfZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgaGJfZGVzdHJveV9mdW5jX3QgZGVzdHJveSkKK3sKKyAgaGJfZmFjZV90ICpmYWNlOworCisgIGlmICghZnRfZmFjZS0+c3RyZWFtLT5yZWFkKSB7CisgICAgaGJfYmxvYl90ICpibG9iOworCisgICAgYmxvYiA9IGhiX2Jsb2JfY3JlYXRlICgoY29uc3QgY2hhciAqKSBmdF9mYWNlLT5zdHJlYW0tPmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgaW50KSBmdF9mYWNlLT5zdHJlYW0tPnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBIQl9NRU1PUllfTU9ERV9SRUFET05MWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ0X2ZhY2UsIGRlc3Ryb3kpOworICAgIGZhY2UgPSBoYl9mYWNlX2NyZWF0ZSAoYmxvYiwgZnRfZmFjZS0+ZmFjZV9pbmRleCk7CisgICAgaGJfYmxvYl9kZXN0cm95IChibG9iKTsKKyAgfSBlbHNlIHsKKyAgICBmYWNlID0gaGJfZmFjZV9jcmVhdGVfZm9yX3RhYmxlcyAoaGJfZnRfcmVmZXJlbmNlX3RhYmxlXywgZnRfZmFjZSwgZGVzdHJveSk7CisgIH0KKworICBoYl9mYWNlX3NldF9pbmRleCAoZmFjZSwgZnRfZmFjZS0+ZmFjZV9pbmRleCk7CisgIGhiX2ZhY2Vfc2V0X3VwZW0gKGZhY2UsIGZ0X2ZhY2UtPnVuaXRzX3Blcl9FTSk7CisKKyAgcmV0dXJuIGZhY2U7Cit9CisKK0ZUX0xPQ0FMX0RFRihoYl9mb250X3QgKikKK2hiX2Z0X2ZvbnRfY3JlYXRlXyAoRlRfRmFjZSAgICAgICAgICAgZnRfZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgaGJfZGVzdHJveV9mdW5jX3QgZGVzdHJveSkKK3sKKyAgaGJfZm9udF90ICpmb250OworICBoYl9mYWNlX3QgKmZhY2U7CisKKyAgZmFjZSA9IGhiX2Z0X2ZhY2VfY3JlYXRlXyAoZnRfZmFjZSwgZGVzdHJveSk7CisgIGZvbnQgPSBoYl9mb250X2NyZWF0ZSAoZmFjZSk7CisgIGhiX2ZhY2VfZGVzdHJveSAoZmFjZSk7CisgIHJldHVybiBmb250OworfQorCisjZWxzZSAvKiAhRlRfQ09ORklHX09QVElPTl9VU0VfSEFSRkJVWlogKi8KKworLyogQU5TSSBDIGRvZXNuJ3QgbGlrZSBlbXB0eSBzb3VyY2UgZmlsZXMgKi8KK3R5cGVkZWYgaW50ICBfZnRfaGJfZHVtbXk7CisKKyNlbmRpZiAvKiAhRlRfQ09ORklHX09QVElPTl9VU0VfSEFSRkJVWlogKi8KKworLyogRU5EICovCmRpZmYgLS1naXQgYS9zcmMvYXV0b2ZpdC9mdC1oYi5oIGIvc3JjL2F1dG9maXQvZnQtaGIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmE1Nzc0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2F1dG9maXQvZnQtaGIuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMDksIDIwMjMgIFJlZCBIYXQsIEluYy4KKyAqIENvcHlyaWdodCDCqSAyMDE1ICBHb29nbGUsIEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCB3aXRob3V0IHdyaXR0ZW4gYWdyZWVtZW50IGFuZCB3aXRob3V0CisgKiBsaWNlbnNlIG9yIHJveWFsdHkgZmVlcywgdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMKKyAqIHNvZnR3YXJlIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UsIHByb3ZpZGVkIHRoYXQgdGhlCisgKiBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGUgZm9sbG93aW5nIHR3byBwYXJhZ3JhcGhzIGFwcGVhciBpbgorICogYWxsIGNvcGllcyBvZiB0aGlzIHNvZnR3YXJlLgorICoKKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFIExJQUJMRSBUTyBBTlkgUEFSVFkgRk9SCisgKiBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIEFSSVNJTkcgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT04sIEVWRU4KKyAqIElGIFRIRSBDT1BZUklHSFQgSE9MREVSIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUiBTUEVDSUZJQ0FMTFkgRElTQ0xBSU1TIEFOWSBXQVJSQU5USUVTLCBJTkNMVURJTkcsCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBUSEUgU09GVFdBUkUgUFJPVklERUQgSEVSRVVOREVSIElTCisgKiBPTiBBTiAiQVMgSVMiIEJBU0lTLCBBTkQgVEhFIENPUFlSSUdIVCBIT0xERVIgSEFTIE5PIE9CTElHQVRJT04gVE8KKyAqIFBST1ZJREUgTUFJTlRFTkFOQ0UsIFNVUFBPUlQsIFVQREFURVMsIEVOSEFOQ0VNRU5UUywgT1IgTU9ESUZJQ0FUSU9OUy4KKyAqCisgKiBSZWQgSGF0IEF1dGhvcihzKTogQmVoZGFkIEVzZmFoYm9kLCBNYXR0aGlhcyBDbGFzZW4KKyAqIEdvb2dsZSBBdXRob3Iocyk6IEJlaGRhZCBFc2ZhaGJvZAorICovCisKKyNpZm5kZWYgRlRfSEJfSAorI2RlZmluZSBGVF9IQl9ICisKKyNpbmNsdWRlIDxoYi5oPgorCisjaW5jbHVkZSA8ZnJlZXR5cGUvaW50ZXJuYWwvY29tcGlsZXItbWFjcm9zLmg+CisjaW5jbHVkZSA8ZnJlZXR5cGUvZnJlZXR5cGUuaD4KKworCitGVF9CRUdJTl9IRUFERVIKKworRlRfTE9DQUwoaGJfZm9udF90ICopCitoYl9mdF9mb250X2NyZWF0ZV8gKEZUX0ZhY2UgICAgICAgICAgIGZ0X2ZhY2UsCisgICAgICAgICAgICAgICAgICAgIGhiX2Rlc3Ryb3lfZnVuY190IGRlc3Ryb3kpOworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIEZUX0hCX0ggKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL3NyYy9hdXRvZml0L21vZHVsZS5tayBiL3NyYy9hdXRvZml0L21vZHVsZS5tawppbmRleCBmYWIzYTZiLi45NWNiMjBhIDEwMDY0NAotLS0gYS9zcmMvYXV0b2ZpdC9tb2R1bGUubWsKKysrIGIvc3JjL2F1dG9maXQvbW9kdWxlLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvc3JjL2F1dG9maXQvcnVsZXMubWsgYi9zcmMvYXV0b2ZpdC9ydWxlcy5tawppbmRleCA0OTljMGUwLi5hNDZiYTNmIDEwMDY0NAotLS0gYS9zcmMvYXV0b2ZpdC9ydWxlcy5taworKysgYi9zcmMvYXV0b2ZpdC9ydWxlcy5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKQEAgLTM5LDYgKzM5LDcgQEAKICAgICAgICAgICAgICAgICAgJChBVVRPRl9ESVIpL2FmbW9kdWxlLmMgXAogICAgICAgICAgICAgICAgICAkKEFVVE9GX0RJUikvYWZyYW5nZXMuYyBcCiAgICAgICAgICAgICAgICAgICQoQVVUT0ZfRElSKS9hZnNoYXBlci5jIFwKKyAgICAgICAgICAgICAgICAgJChBVVRPRl9ESVIpL2Z0LWhiLmMKIAogIyBBVVRPRiBkcml2ZXIgaGVhZGVycwogIwpkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvZnRhZHZhbmMuYyBiL3NyYy9iYXNlL2Z0YWR2YW5jLmMKaW5kZXggZjIwYjk5Mi4uZGUyNTQ3NiAxMDA2NDQKLS0tIGEvc3JjL2Jhc2UvZnRhZHZhbmMuYworKysgYi9zcmMvYmFzZS9mdGFkdmFuYy5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgUXVpY2sgY29tcHV0YXRpb24gb2YgYWR2YW5jZSB3aWR0aHMgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTIzLDcgKzIzLDcgQEAKIAogCiAgIHN0YXRpYyBGVF9FcnJvcgotICBfZnRfZmFjZV9zY2FsZV9hZHZhbmNlcyggRlRfRmFjZSAgICBmYWNlLAorICBmdF9mYWNlX3NjYWxlX2FkdmFuY2VzXyggRlRfRmFjZSAgICBmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBhZHZhbmNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgIGZsYWdzICkKQEAgLTk2LDcgKzk2LDcgQEAKIAogICAgICAgZXJyb3IgPSBmdW5jKCBmYWNlLCBnaW5kZXgsIDEsIGZsYWdzLCBwYWR2YW5jZSApOwogICAgICAgaWYgKCAhZXJyb3IgKQotICAgICAgICByZXR1cm4gX2Z0X2ZhY2Vfc2NhbGVfYWR2YW5jZXMoIGZhY2UsIHBhZHZhbmNlLCAxLCBmbGFncyApOworICAgICAgICByZXR1cm4gZnRfZmFjZV9zY2FsZV9hZHZhbmNlc18oIGZhY2UsIHBhZHZhbmNlLCAxLCBmbGFncyApOwogCiAgICAgICBpZiAoIEZUX0VSUl9ORVEoIGVycm9yLCBVbmltcGxlbWVudGVkX0ZlYXR1cmUgKSApCiAgICAgICAgIHJldHVybiBlcnJvcjsKQEAgLTE0Miw3ICsxNDIsNyBAQAogICAgIHsKICAgICAgIGVycm9yID0gZnVuYyggZmFjZSwgc3RhcnQsIGNvdW50LCBmbGFncywgcGFkdmFuY2VzICk7CiAgICAgICBpZiAoICFlcnJvciApCi0gICAgICAgIHJldHVybiBfZnRfZmFjZV9zY2FsZV9hZHZhbmNlcyggZmFjZSwgcGFkdmFuY2VzLCBjb3VudCwgZmxhZ3MgKTsKKyAgICAgICAgcmV0dXJuIGZ0X2ZhY2Vfc2NhbGVfYWR2YW5jZXNfKCBmYWNlLCBwYWR2YW5jZXMsIGNvdW50LCBmbGFncyApOwogCiAgICAgICBpZiAoIEZUX0VSUl9ORVEoIGVycm9yLCBVbmltcGxlbWVudGVkX0ZlYXR1cmUgKSApCiAgICAgICAgIHJldHVybiBlcnJvcjsKZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2Z0YmFzZS5jIGIvc3JjL2Jhc2UvZnRiYXNlLmMKaW5kZXggNzM2NmJjNC4uMTU2NTEwZiAxMDA2NDQKLS0tIGEvc3JjL2Jhc2UvZnRiYXNlLmMKKysrIGIvc3JjL2Jhc2UvZnRiYXNlLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBTaW5nbGUgb2JqZWN0IGxpYnJhcnkgY29tcG9uZW50IChib2R5IG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2Z0YmFzZS5oIGIvc3JjL2Jhc2UvZnRiYXNlLmgKaW5kZXggOTYzZmY5My4uMDA3OTBkMyAxMDA2NDQKLS0tIGEvc3JjL2Jhc2UvZnRiYXNlLmgKKysrIGIvc3JjL2Jhc2UvZnRiYXNlLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBQcml2YXRlIGZ1bmN0aW9ucyB1c2VkIGluIHRoZSBgYmFzZScgbW9kdWxlIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIFdlcm5lciBMZW1iZXJnLCBhbmQgc3V6dWtpIHRvc2hpeWEuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMjgsNiArMjgsNyBAQAogCiAgIEZUX0RFQ0xBUkVfR0xZUEgoIGZ0X2JpdG1hcF9nbHlwaF9jbGFzcyApCiAgIEZUX0RFQ0xBUkVfR0xZUEgoIGZ0X291dGxpbmVfZ2x5cGhfY2xhc3MgKQorICBGVF9ERUNMQVJFX0dMWVBIKCBmdF9zdmdfZ2x5cGhfY2xhc3MgKQogCiAKICNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX01BQ19GT05UUwpkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvZnRiYm94LmMgYi9zcmMvYmFzZS9mdGJib3guYwppbmRleCA0ZGIyOWNiLi43ZGQ3MTg4IDEwMDY0NAotLS0gYS9zcmMvYmFzZS9mdGJib3guYworKysgYi9zcmMvYmFzZS9mdGJib3guYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIGJib3ggY29tcHV0YXRpb24gKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZApkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvZnRiZGYuYyBiL3NyYy9iYXNlL2Z0YmRmLmMKaW5kZXggZjkzY2E4ZS4uZjY5N2MwMCAxMDA2NDQKLS0tIGEvc3JjL2Jhc2UvZnRiZGYuYworKysgYi9zcmMvYmFzZS9mdGJkZi5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgQVBJIGZvciBhY2Nlc3NpbmcgQkRGLXNwZWNpZmljIHN0cmluZ3MgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2Z0Yml0bWFwLmMgYi9zcmMvYmFzZS9mdGJpdG1hcC5jCmluZGV4IDIxNDZkM2UuLjFjOTM2NDggMTAwNjQ0Ci0tLSBhL3NyYy9iYXNlL2Z0Yml0bWFwLmMKKysrIGIvc3JjL2Jhc2UvZnRiaXRtYXAuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBiaXRtYXBzIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC02NiwxMSArNjYsOCBAQAogICB7CiAgICAgRlRfTWVtb3J5ICBtZW1vcnk7CiAgICAgRlRfRXJyb3IgICBlcnJvciAgPSBGVF9FcnJfT2s7Ci0KLSAgICBGVF9JbnQgICAgcGl0Y2g7Ci0gICAgRlRfVUxvbmcgIHNpemU7Ci0KLSAgICBGVF9JbnQgIHNvdXJjZV9waXRjaF9zaWduLCB0YXJnZXRfcGl0Y2hfc2lnbjsKKyAgICBGVF9JbnQgICAgIHBpdGNoOworICAgIEZUX0ludCAgICAgZmxpcDsKIAogCiAgICAgaWYgKCAhbGlicmFyeSApCkBAIC04Miw1MyArNzksMjkgQEAKICAgICBpZiAoIHNvdXJjZSA9PSB0YXJnZXQgKQogICAgICAgcmV0dXJuIEZUX0Vycl9PazsKIAotICAgIHNvdXJjZV9waXRjaF9zaWduID0gc291cmNlLT5waXRjaCA8IDAgPyAtMSA6IDE7Ci0gICAgdGFyZ2V0X3BpdGNoX3NpZ24gPSB0YXJnZXQtPnBpdGNoIDwgMCA/IC0xIDogMTsKLQotICAgIGlmICggIXNvdXJjZS0+YnVmZmVyICkKLSAgICB7Ci0gICAgICAqdGFyZ2V0ID0gKnNvdXJjZTsKLSAgICAgIGlmICggc291cmNlX3BpdGNoX3NpZ24gIT0gdGFyZ2V0X3BpdGNoX3NpZ24gKQotICAgICAgICB0YXJnZXQtPnBpdGNoID0gLXRhcmdldC0+cGl0Y2g7Ci0KLSAgICAgIHJldHVybiBGVF9FcnJfT2s7Ci0gICAgfQorICAgIGZsaXAgPSAoIHNvdXJjZS0+cGl0Y2ggPCAwICYmIHRhcmdldC0+cGl0Y2ggPiAwICkgfHwKKyAgICAgICAgICAgKCBzb3VyY2UtPnBpdGNoID4gMCAmJiB0YXJnZXQtPnBpdGNoIDwgMCApOwogCiAgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OwotICAgIHBpdGNoICA9IHNvdXJjZS0+cGl0Y2g7CisgICAgRlRfRlJFRSggdGFyZ2V0LT5idWZmZXIgKTsKIAorICAgICp0YXJnZXQgPSAqc291cmNlOworCisgICAgaWYgKCBmbGlwICkKKyAgICAgIHRhcmdldC0+cGl0Y2ggPSAtdGFyZ2V0LT5waXRjaDsKKworICAgIGlmICggIXNvdXJjZS0+YnVmZmVyICkKKyAgICAgIHJldHVybiBGVF9FcnJfT2s7CisKKyAgICBwaXRjaCAgPSBzb3VyY2UtPnBpdGNoOwogICAgIGlmICggcGl0Y2ggPCAwICkKICAgICAgIHBpdGNoID0gLXBpdGNoOwotICAgIHNpemUgPSAoRlRfVUxvbmcpcGl0Y2ggKiBzb3VyY2UtPnJvd3M7CiAKLSAgICBpZiAoIHRhcmdldC0+YnVmZmVyICkKLSAgICB7Ci0gICAgICBGVF9JbnQgICAgdGFyZ2V0X3BpdGNoID0gdGFyZ2V0LT5waXRjaDsKLSAgICAgIEZUX1VMb25nICB0YXJnZXRfc2l6ZTsKLQotCi0gICAgICBpZiAoIHRhcmdldF9waXRjaCA8IDAgKQotICAgICAgICB0YXJnZXRfcGl0Y2ggPSAtdGFyZ2V0X3BpdGNoOwotICAgICAgdGFyZ2V0X3NpemUgPSAoRlRfVUxvbmcpdGFyZ2V0X3BpdGNoICogdGFyZ2V0LT5yb3dzOwotCi0gICAgICBpZiAoIHRhcmdldF9zaXplICE9IHNpemUgKQotICAgICAgICBGVF9NRU1fUVJFQUxMT0MoIHRhcmdldC0+YnVmZmVyLCB0YXJnZXRfc2l6ZSwgc2l6ZSApOwotICAgIH0KLSAgICBlbHNlCi0gICAgICBGVF9NRU1fUUFMTE9DKCB0YXJnZXQtPmJ1ZmZlciwgc2l6ZSApOworICAgIEZUX01FTV9RQUxMT0NfTVVMVCggdGFyZ2V0LT5idWZmZXIsIHRhcmdldC0+cm93cywgcGl0Y2ggKTsKIAogICAgIGlmICggIWVycm9yICkKICAgICB7Ci0gICAgICB1bnNpZ25lZCBjaGFyICpwOwotCi0KLSAgICAgIHAgPSB0YXJnZXQtPmJ1ZmZlcjsKLSAgICAgICp0YXJnZXQgPSAqc291cmNlOwotICAgICAgdGFyZ2V0LT5idWZmZXIgPSBwOwotCi0gICAgICBpZiAoIHNvdXJjZV9waXRjaF9zaWduID09IHRhcmdldF9waXRjaF9zaWduICkKLSAgICAgICAgRlRfTUVNX0NPUFkoIHRhcmdldC0+YnVmZmVyLCBzb3VyY2UtPmJ1ZmZlciwgc2l6ZSApOwotICAgICAgZWxzZQorICAgICAgaWYgKCBmbGlwICkKICAgICAgIHsKICAgICAgICAgLyogdGFrZSBjYXJlIG9mIGJpdG1hcCBmbG93ICovCiAgICAgICAgIEZUX1VJbnQgICBpOwpAQCAtMTQ2LDYgKzExOSw5IEBACiAgICAgICAgICAgdCAtPSBwaXRjaDsKICAgICAgICAgfQogICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBGVF9NRU1fQ09QWSggdGFyZ2V0LT5idWZmZXIsIHNvdXJjZS0+YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgKEZUX0xvbmcpc291cmNlLT5yb3dzICogcGl0Y2ggKTsKICAgICB9CiAKICAgICByZXR1cm4gZXJyb3I7CkBAIC00ODAsNyArNDU2LDcgQEAKICAgICAgKiBBIGdhbW1hIG9mIDIuMiBpcyBmYWlyIHRvIGFzc3VtZS4gIEFuZCB0aGVuLCB3ZSBuZWVkIHRvCiAgICAgICogdW5kbyB0aGUgcHJlbXVsdGlwbGljYXRpb24gdG9vLgogICAgICAqCi0gICAgICogICBodHRwczovL2FjY2Vzc2liaWxpdHkua2RlLm9yZy9oc2wtYWRqdXN0ZWQucGhwCisgICAgICogICBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP1dvcmtpbmdTcGFjZUluZm8uaHRtbCNTaWRlTm90ZXMKICAgICAgKgogICAgICAqIFdlIGRvIHRoZSBjb21wdXRhdGlvbiB3aXRoIGludGVnZXJzIG9ubHksIGFwcGx5aW5nIGEgZ2FtbWEgb2YgMi4wLgogICAgICAqIFdlIGd1YXJhbnRlZSAzMi1iaXQgYXJpdGhtZXRpYyB0byBhdm9pZCBvdmVyZmxvdyBidXQgdGhlIHJlc3VsdGluZwpAQCAtNDg4LDkgKzQ2NCw5IEBACiAgICAgICoKICAgICAgKi8KIAotICAgIGwgPSAoICA0NzMyVUwgLyogMC4wNzIyICogNjU1MzYgKi8gKiBiZ3JhWzBdICogYmdyYVswXSArCi0gICAgICAgICAgNDY4NzFVTCAvKiAwLjcxNTIgKiA2NTUzNiAqLyAqIGJncmFbMV0gKiBiZ3JhWzFdICsKLSAgICAgICAgICAxMzkzM1VMIC8qIDAuMjEyNiAqIDY1NTM2ICovICogYmdyYVsyXSAqIGJncmFbMl0gKSA+PiAxNjsKKyAgICBsID0gKCAgNDczMVVMIC8qIDAuMDcyMTg2ICogNjU1MzYgKi8gKiBiZ3JhWzBdICogYmdyYVswXSArCisgICAgICAgICAgNDY4NjhVTCAvKiAwLjcxNTE1OCAqIDY1NTM2ICovICogYmdyYVsxXSAqIGJncmFbMV0gKworICAgICAgICAgIDEzOTM3VUwgLyogMC4yMTI2NTYgKiA2NTUzNiAqLyAqIGJncmFbMl0gKiBiZ3JhWzJdICkgPj4gMTY7CiAKICAgICAvKgogICAgICAqIEZpbmFsIHRyYW5zcGFyZW5jeSBjYW4gYmUgZGV0ZXJtaW5lZCBhcyBmb2xsb3dzLgpAQCAtNTQyLDM5ICs1MTgsMzEgQEAKICAgICBjYXNlIEZUX1BJWEVMX01PREVfTENEX1Y6CiAgICAgY2FzZSBGVF9QSVhFTF9NT0RFX0JHUkE6CiAgICAgICB7Ci0gICAgICAgIEZUX0ludCAgICBwYWQsIG9sZF90YXJnZXRfcGl0Y2gsIHRhcmdldF9waXRjaDsKLSAgICAgICAgRlRfVUxvbmcgIG9sZF9zaXplOworICAgICAgICBGVF9JbnQgIHdpZHRoID0gKEZUX0ludClzb3VyY2UtPndpZHRoOworICAgICAgICBGVF9JbnQgIG5lZyAgID0gKCB0YXJnZXQtPnBpdGNoID09IDAgJiYgc291cmNlLT5waXRjaCA8IDAgKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQtPnBpdGNoICA8IDA7CiAKIAotICAgICAgICBvbGRfdGFyZ2V0X3BpdGNoID0gdGFyZ2V0LT5waXRjaDsKLSAgICAgICAgaWYgKCBvbGRfdGFyZ2V0X3BpdGNoIDwgMCApCi0gICAgICAgICAgb2xkX3RhcmdldF9waXRjaCA9IC1vbGRfdGFyZ2V0X3BpdGNoOwotCi0gICAgICAgIG9sZF9zaXplID0gdGFyZ2V0LT5yb3dzICogKEZUX1VJbnQpb2xkX3RhcmdldF9waXRjaDsKKyAgICAgICAgRlRfQml0bWFwX0RvbmUoIGxpYnJhcnksIHRhcmdldCApOwogCiAgICAgICAgIHRhcmdldC0+cGl4ZWxfbW9kZSA9IEZUX1BJWEVMX01PREVfR1JBWTsKICAgICAgICAgdGFyZ2V0LT5yb3dzICAgICAgID0gc291cmNlLT5yb3dzOwogICAgICAgICB0YXJnZXQtPndpZHRoICAgICAgPSBzb3VyY2UtPndpZHRoOwogCi0gICAgICAgIHBhZCA9IDA7Ci0gICAgICAgIGlmICggYWxpZ25tZW50ID4gMCApCisgICAgICAgIGlmICggYWxpZ25tZW50ICkKICAgICAgICAgewotICAgICAgICAgIHBhZCA9IChGVF9JbnQpc291cmNlLT53aWR0aCAlIGFsaWdubWVudDsKLSAgICAgICAgICBpZiAoIHBhZCAhPSAwICkKLSAgICAgICAgICAgIHBhZCA9IGFsaWdubWVudCAtIHBhZDsKKyAgICAgICAgICBGVF9JbnQgIHJlbSA9IHdpZHRoICUgYWxpZ25tZW50OworCisKKyAgICAgICAgICBpZiAoIHJlbSApCisgICAgICAgICAgICB3aWR0aCA9IGFsaWdubWVudCA+IDAgPyB3aWR0aCAtIHJlbSArIGFsaWdubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogd2lkdGggLSByZW0gLSBhbGlnbm1lbnQ7CiAgICAgICAgIH0KIAotICAgICAgICB0YXJnZXRfcGl0Y2ggPSAoRlRfSW50KXNvdXJjZS0+d2lkdGggKyBwYWQ7Ci0KLSAgICAgICAgaWYgKCB0YXJnZXRfcGl0Y2ggPiAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgotICAgICAgICAgICAgIChGVF9VTG9uZyl0YXJnZXQtPnJvd3MgPiBGVF9VTE9OR19NQVggLyAoRlRfVUxvbmcpdGFyZ2V0X3BpdGNoICkKLSAgICAgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKLQotICAgICAgICBpZiAoIEZUX1FSRUFMTE9DKCB0YXJnZXQtPmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX3NpemUsIHRhcmdldC0+cm93cyAqIChGVF9VSW50KXRhcmdldF9waXRjaCApICkKKyAgICAgICAgaWYgKCBGVF9RQUxMT0NfTVVMVCggdGFyZ2V0LT5idWZmZXIsIHRhcmdldC0+cm93cywgd2lkdGggKSApCiAgICAgICAgICAgcmV0dXJuIGVycm9yOwogCi0gICAgICAgIHRhcmdldC0+cGl0Y2ggPSB0YXJnZXQtPnBpdGNoIDwgMCA/IC10YXJnZXRfcGl0Y2ggOiB0YXJnZXRfcGl0Y2g7CisgICAgICAgIHRhcmdldC0+cGl0Y2ggPSBuZWcgPyAtd2lkdGggOiB3aWR0aDsKICAgICAgIH0KICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9zcmMvYmFzZS9mdGNhbGMuYyBiL3NyYy9iYXNlL2Z0Y2FsYy5jCmluZGV4IDlkZjhlNDAuLjEzZTc0ZjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYXNlL2Z0Y2FsYy5jCisrKyBiL3NyYy9iYXNlL2Z0Y2FsYy5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQXJpdGhtZXRpYyBjb21wdXRhdGlvbnMgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTEwODUsNCArMTA4NSw3MSBAQAogICB9CiAKIAorICBGVF9CQVNFX0RFRiggRlRfSW50MzIgKQorICBGVF9NdWxBZGRGaXgoIEZUX0ZpeGVkKiAgcywKKyAgICAgICAgICAgICAgICBGVF9JbnQzMiogIGYsCisgICAgICAgICAgICAgICAgRlRfVUludCAgICBjb3VudCApCisgIHsKKyAgICBGVF9VSW50ICAgaTsKKyAgICBGVF9JbnQ2NCAgdGVtcDsKKyNpZm5kZWYgRlRfSU5UNjQKKyAgICBGVF9JbnQ2NCAgaGFsZlVuaXQ7CisjZW5kaWYKKworCisjaWZkZWYgRlRfSU5UNjQKKyAgICB0ZW1wID0gMDsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgY291bnQ7ICsraSApCisgICAgICB0ZW1wICs9IChGVF9JbnQ2NClzW2ldICogZltpXTsKKworICAgIHJldHVybiAoIHRlbXAgKyAweDgwMDAgKSA+PiAxNjsKKyNlbHNlCisgICAgdGVtcC5oaSA9IDA7CisgICAgdGVtcC5sbyA9IDA7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IGNvdW50OyArK2kgKQorICAgIHsKKyAgICAgIEZUX0ludDY0ICBtdWx0UmVzdWx0OworCisgICAgICBGVF9JbnQgICAgIHNpZ24gID0gMTsKKyAgICAgIEZUX1VJbnQzMiAgY2FycnkgPSAwOworCisgICAgICBGVF9VSW50MzIgIHNjYWxhcjsKKyAgICAgIEZUX1VJbnQzMiAgZmFjdG9yOworCisKKyAgICAgIHNjYWxhciA9IChGVF9VSW50MzIpc1tpXTsKKyAgICAgIGZhY3RvciA9IChGVF9VSW50MzIpZltpXTsKKworICAgICAgRlRfTU9WRV9TSUdOKCBzW2ldLCBzY2FsYXIsIHNpZ24gKTsKKyAgICAgIEZUX01PVkVfU0lHTiggZltpXSwgZmFjdG9yLCBzaWduICk7CisKKyAgICAgIGZ0X211bHRvNjQoIHNjYWxhciwgZmFjdG9yLCAmbXVsdFJlc3VsdCApOworCisgICAgICBpZiAoIHNpZ24gPCAwICkKKyAgICAgIHsKKyAgICAgICAgLyogRW11bGF0ZWQgYEZUX0ludDY0YCBuZWdhdGlvbi4gKi8KKyAgICAgICAgY2FycnkgPSAoIG11bHRSZXN1bHQubG8gPT0gMCApOworCisgICAgICAgIG11bHRSZXN1bHQubG8gPSB+bXVsdFJlc3VsdC5sbyArIDE7CisgICAgICAgIG11bHRSZXN1bHQuaGkgPSB+bXVsdFJlc3VsdC5oaSArIGNhcnJ5OworICAgICAgfQorCisgICAgICBGVF9BZGQ2NCggJnRlbXAsICZtdWx0UmVzdWx0LCAmdGVtcCApOworICAgIH0KKworICAgIC8qIFJvdW5kIHZhbHVlLiAqLworICAgIGhhbGZVbml0LmhpID0gMDsKKyAgICBoYWxmVW5pdC5sbyA9IDB4ODAwMDsKKyAgICBGVF9BZGQ2NCggJnRlbXAsICZoYWxmVW5pdCwgJnRlbXAgKTsKKworICAgIHJldHVybiAoRlRfSW50MzIpKCAoIChGVF9JbnQzMikoIHRlbXAuaGkgJiAweEZGRkYgKSA8PCAxNiApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB0ZW1wLmxvID4+IDE2ICkgICAgICAgICAgICApOworCisjZW5kaWYgLyogIUZUX0lOVDY0ICovCisKKyAgfQorCisKIC8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvZnRjaWQuYyBiL3NyYy9iYXNlL2Z0Y2lkLmMKaW5kZXggMjE2ZWUyYi4uODY2Y2QyMyAxMDA2NDQKLS0tIGEvc3JjL2Jhc2UvZnRjaWQuYworKysgYi9zcmMvYmFzZS9mdGNpZC5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgQVBJIGZvciBhY2Nlc3NpbmcgQ0lEIGZvbnQgaW5mb3JtYXRpb24uCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIzIGJ5CiAgKiBEZXJlayBDbGVnZyBhbmQgTWljaGFlbCBUb2Z0ZGFsLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2Z0Y29sb3IuYyBiL3NyYy9iYXNlL2Z0Y29sb3IuYwppbmRleCAzZWYzMjU2Li5iY2Q2ZTg5IDEwMDY0NAotLS0gYS9zcmMvYmFzZS9mdGNvbG9yLmMKKysrIGIvc3JjL2Jhc2UvZnRjb2xvci5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUncyBnbHlwaCBjb2xvciBtYW5hZ2VtZW50IChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvYmFzZS9mdGRiZ21lbS5jIGIvc3JjL2Jhc2UvZnRkYmdtZW0uYwppbmRleCA0ZjVjMWU3Li42NzMwYzRjIDEwMDY0NAotLS0gYS9zcmMvYmFzZS9mdGRiZ21lbS5jCisrKyBiL3NyYy9iYXNlL2Z0ZGJnbWVtLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBNZW1vcnkgZGVidWdnZXIgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTM1LDggKzM1LDggQEAKIAogI2luY2x1ZGUgRlRfQ09ORklHX1NUQU5EQVJEX0xJQlJBUllfSAogCi0gIEZUX0JBU0VfREVGKCBjb25zdCBjaGFyKiApICBfZnRfZGVidWdfZmlsZSAgID0gTlVMTDsKLSAgRlRfQkFTRV9ERUYoIGxvbmcgKSAgICAgICAgIF9mdF9kZWJ1Z19saW5lbm8gPSAwOworICBGVF9CQVNFX0RFRiggY29uc3QgY2hhciogKSAgZnRfZGVidWdfZmlsZV8gICA9IE5VTEw7CisgIEZUX0JBU0VfREVGKCBsb25nICkgICAgICAgICBmdF9kZWJ1Z19saW5lbm9fID0gMDsKIAogICBleHRlcm4gdm9pZAogICBGVF9EdW1wTWVtb3J5KCBGVF9NZW1vcnkgIG1lbW9yeSApOwpAQCAtNDE1LDggKzQxNSw4IEBACiAKICAgICAvKiBjYXN0IHRvIEZUX1B0ckRpc3QgZmlyc3Qgc2luY2Ugdm9pZCogY2FuIGJlIGxhcmdlciAqLwogICAgIC8qIHRoYW4gRlRfVUludDMyIGFuZCBHQ0MgNC4xLjEgZW1pdHMgYSB3YXJuaW5nICAgICAgICovCi0gICAgaGFzaCAgPSAoRlRfVUludDMyKShGVF9QdHJEaXN0KSh2b2lkKilfZnRfZGVidWdfZmlsZSArCi0gICAgICAgICAgICAgIChGVF9VSW50MzIpKCA1ICogX2Z0X2RlYnVnX2xpbmVubyApOworICAgIGhhc2ggID0gKEZUX1VJbnQzMikoRlRfUHRyRGlzdCkodm9pZCopZnRfZGVidWdfZmlsZV8gKworICAgICAgICAgICAgICAoRlRfVUludDMyKSggNSAqIGZ0X2RlYnVnX2xpbmVub18gKTsKICAgICBwbm9kZSA9ICZ0YWJsZS0+c291cmNlc1toYXNoICUgRlRfTUVNX1NPVVJDRV9CVUNLRVRTXTsKIAogICAgIGZvciAoOzspCkBAIC00MjUsOCArNDI1LDggQEAKICAgICAgIGlmICggIW5vZGUgKQogICAgICAgICBicmVhazsKIAotICAgICAgaWYgKCBub2RlLT5maWxlX25hbWUgPT0gX2Z0X2RlYnVnX2ZpbGUgICAmJgotICAgICAgICAgICBub2RlLT5saW5lX25vICAgPT0gX2Z0X2RlYnVnX2xpbmVubyApCisgICAgICBpZiAoIG5vZGUtPmZpbGVfbmFtZSA9PSBmdF9kZWJ1Z19maWxlXyAgICYmCisgICAgICAgICAgIG5vZGUtPmxpbmVfbm8gICA9PSBmdF9kZWJ1Z19saW5lbm9fICkKICAgICAgICAgZ290byBFeGl0OwogCiAgICAgICBwbm9kZSA9ICZub2RlLT5saW5rOwpAQCAtNDM3LDggKzQzNyw4IEBACiAgICAgICBmdF9tZW1fZGVidWdfcGFuaWMoCiAgICAgICAgICJub3QgZW5vdWdoIG1lbW9yeSB0byBwZXJmb3JtIG1lbW9yeSBkZWJ1Z2dpbmdcbiIgKTsKIAotICAgIG5vZGUtPmZpbGVfbmFtZSA9IF9mdF9kZWJ1Z19maWxlOwotICAgIG5vZGUtPmxpbmVfbm8gICA9IF9mdF9kZWJ1Z19saW5lbm87CisgICAgbm9kZS0+ZmlsZV9uYW1lID0gZnRfZGVidWdfZmlsZV87CisgICAgbm9kZS0+bGluZV9ubyAgID0gZnRfZGVidWdfbGluZW5vXzsKIAogICAgIG5vZGUtPmN1cl9ibG9ja3MgPSAwOwogICAgIG5vZGUtPm1heF9ibG9ja3MgPSAwOwpAQCAtNDk1LDcgKzQ5NSw3IEBACiAgICAgICAgICAgICAib3JnPSVzOiVkIG5ldz0lczolZFxuIiwKICAgICAgICAgICAgIG5vZGUtPmFkZHJlc3MsIG5vZGUtPnNpemUsCiAgICAgICAgICAgICBGVF9GSUxFTkFNRSggbm9kZS0+c291cmNlLT5maWxlX25hbWUgKSwgbm9kZS0+c291cmNlLT5saW5lX25vLAotICAgICAgICAgICAgRlRfRklMRU5BTUUoIF9mdF9kZWJ1Z19maWxlICksIF9mdF9kZWJ1Z19saW5lbm8gKTsKKyAgICAgICAgICAgIEZUX0ZJTEVOQU1FKCBmdF9kZWJ1Z19maWxlXyApLCBmdF9kZWJ1Z19saW5lbm9fICk7CiAgICAgICAgIH0KICAgICAgIH0KIApAQCAtNTgyLDcgKzU4Miw3IEBACiAgICAgICAgICAgICAiICBCbG9jayB3YXMgYWxsb2NhdGVkIGF0ICglczolbGQpXG4iCiAgICAgICAgICAgICAiICBhbmQgcmVsZWFzZWQgYXQgKCVzOiVsZCkuIiwKICAgICAgICAgICAgIGFkZHJlc3MsCi0gICAgICAgICAgICBGVF9GSUxFTkFNRSggX2Z0X2RlYnVnX2ZpbGUgKSwgX2Z0X2RlYnVnX2xpbmVubywKKyAgICAgICAgICAgIEZUX0ZJTEVOQU1FKCBmdF9kZWJ1Z19maWxlXyApLCBmdF9kZWJ1Z19saW5lbm9fLAogICAgICAgICAgICAgRlRfRklMRU5BTUUoIG5vZGUtPnNvdXJjZS0+ZmlsZV9uYW1lICksIG5vZGUtPnNvdXJjZS0+bGluZV9ubywKICAgICAgICAgICAgIEZUX0ZJTEVOQU1FKCBub2RlLT5mcmVlX2ZpbGVfbmFtZSApLCBub2RlLT5mcmVlX2xpbmVfbm8gKTsKIApAQCAtNjA0LDggKzYwNCw4IEBACiAgICAgICAgICAgLyogd2Ugc2ltcGx5IGludmVydCB0aGUgbm9kZSdzIHNpemUgdG8gaW5kaWNhdGUgdGhhdCB0aGUgbm9kZSAqLwogICAgICAgICAgIC8qIHdhcyBmcmVlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICBub2RlLT5zaXplICAgICAgICAgICA9IC1ub2RlLT5zaXplOwotICAgICAgICAgIG5vZGUtPmZyZWVfZmlsZV9uYW1lID0gX2Z0X2RlYnVnX2ZpbGU7Ci0gICAgICAgICAgbm9kZS0+ZnJlZV9saW5lX25vICAgPSBfZnRfZGVidWdfbGluZW5vOworICAgICAgICAgIG5vZGUtPmZyZWVfZmlsZV9uYW1lID0gZnRfZGVidWdfZmlsZV87CisgICAgICAgICAgbm9kZS0+ZnJlZV9saW5lX25vICAgPSBmdF9kZWJ1Z19saW5lbm9fOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewpAQCAtNjI3LDcgKzYyNyw3IEBACiAgICAgICAgIGZ0X21lbV9kZWJ1Z19wYW5pYygKICAgICAgICAgICAidHJ5aW5nIHRvIGZyZWUgdW5rbm93biBibG9jayBhdCAlcCBpbiAoJXM6JWxkKVxuIiwKICAgICAgICAgICBhZGRyZXNzLAotICAgICAgICAgIEZUX0ZJTEVOQU1FKCBfZnRfZGVidWdfZmlsZSApLCBfZnRfZGVidWdfbGluZW5vICk7CisgICAgICAgICAgRlRfRklMRU5BTUUoIGZ0X2RlYnVnX2ZpbGVfICksIGZ0X2RlYnVnX2xpbmVub18gKTsKICAgICB9CiAgIH0KIApAQCAtNjYxLDggKzY2MSw4IEBACiAgICAgICB0YWJsZS0+YWxsb2NfY291bnQrKzsKICAgICB9CiAKLSAgICBfZnRfZGVidWdfZmlsZSAgID0gIjx1bmtub3duPiI7Ci0gICAgX2Z0X2RlYnVnX2xpbmVubyA9IDA7CisgICAgZnRfZGVidWdfZmlsZV8gICA9ICI8dW5rbm93bj4iOworICAgIGZ0X2RlYnVnX2xpbmVub18gPSAwOwogCiAgICAgcmV0dXJuIChGVF9Qb2ludGVyKWJsb2NrOwogICB9CkBAIC02NzcsOCArNjc3LDggQEAKIAogICAgIGlmICggIWJsb2NrICkKICAgICAgIGZ0X21lbV9kZWJ1Z19wYW5pYyggInRyeWluZyB0byBmcmVlIE5VTEwgaW4gKCVzOiVsZCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GSUxFTkFNRSggX2Z0X2RlYnVnX2ZpbGUgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX2Z0X2RlYnVnX2xpbmVubyApOworICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GSUxFTkFNRSggZnRfZGVidWdfZmlsZV8gKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZnRfZGVidWdfbGluZW5vXyApOwogCiAgICAgZnRfbWVtX3RhYmxlX3JlbW92ZSggdGFibGUsIChGVF9CeXRlKilibG9jaywgMCApOwogCkBAIC02ODcsOCArNjg3LDggQEAKIAogICAgIHRhYmxlLT5hbGxvY19jb3VudC0tOwogCi0gICAgX2Z0X2RlYnVnX2ZpbGUgICA9ICI8dW5rbm93bj4iOwotICAgIF9mdF9kZWJ1Z19saW5lbm8gPSAwOworICAgIGZ0X2RlYnVnX2ZpbGVfICAgPSAiPHVua25vd24+IjsKKyAgICBmdF9kZWJ1Z19saW5lbm9fID0gMDsKICAgfQogCiAKQEAgLTcwMyw4ICs3MDMsOCBAQAogICAgIEZUX1BvaW50ZXIgICBuZXdfYmxvY2s7CiAgICAgRlRfTG9uZyAgICAgIGRlbHRhOwogCi0gICAgY29uc3QgY2hhciogIGZpbGVfbmFtZSA9IEZUX0ZJTEVOQU1FKCBfZnRfZGVidWdfZmlsZSApOwotICAgIEZUX0xvbmcgICAgICBsaW5lX25vICAgPSBfZnRfZGVidWdfbGluZW5vOworICAgIGNvbnN0IGNoYXIqICBmaWxlX25hbWUgPSBGVF9GSUxFTkFNRSggZnRfZGVidWdfZmlsZV8gKTsKKyAgICBGVF9Mb25nICAgICAgbGluZV9ubyAgID0gZnRfZGVidWdfbGluZW5vXzsKIAogCiAgICAgLyogdW5saWtlbHksIGJ1dCBwb3NzaWJsZSAqLwpAQCAtNzY3LDggKzc2Nyw4IEBACiAKICAgICBmdF9tZW1fdGFibGVfcmVtb3ZlKCB0YWJsZSwgKEZUX0J5dGUqKWJsb2NrLCBkZWx0YSApOwogCi0gICAgX2Z0X2RlYnVnX2ZpbGUgICA9ICI8dW5rbm93bj4iOwotICAgIF9mdF9kZWJ1Z19saW5lbm8gPSAwOworICAgIGZ0X2RlYnVnX2ZpbGVfICAgPSAiPHVua25vd24+IjsKKyAgICBmdF9kZWJ1Z19saW5lbm9fID0gMDsKIAogICAgIGlmICggIXRhYmxlLT5rZWVwX2FsaXZlICkKICAgICAgIGZ0X21lbV90YWJsZV9mcmVlKCB0YWJsZSwgYmxvY2sgKTsKQEAgLTg3NCw3ICs4NzQsNyBAQAogICB9CiAKIAotICBzdGF0aWMgaW50CisgIEZUX0NPTVBBUkVfREVGKCBpbnQgKQogICBmdF9tZW1fc291cmNlX2NvbXBhcmUoIGNvbnN0IHZvaWQqICBwMSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkKiAgcDIgKQogICB7CmRpZmYgLS1naXQgYS9zcmMvYmFzZS9mdGRlYnVnLmMgYi9zcmMvYmFzZS9mdGRlYnVnLmMKaW5kZXggMzQ4NTc5MS4uNjFjNDU2MyAxMDA2NDQKLS0tIGEvc3JjL2Jhc2UvZnRkZWJ1Zy5jCisrKyBiL3NyYy9iYXNlL2Z0ZGVidWcuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIERlYnVnZ2luZyBhbmQgbG9nZ2luZyBjb21wb25lbnQgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2Z0ZXJyb3JzLmMgYi9zcmMvYmFzZS9mdGVycm9ycy5jCmluZGV4IDE0NjQ5MjYuLjVhZDk3MDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYXNlL2Z0ZXJyb3JzLmMKKysrIGIvc3JjL2Jhc2UvZnRlcnJvcnMuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIEFQSSBmb3IgZXJyb3IgY29kZSBoYW5kbGluZy4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjMgYnkKICAqIEFybWluIEhhc2l0emthLCBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvZnRmbnRmbXQuYyBiL3NyYy9iYXNlL2Z0Zm50Zm10LmMKaW5kZXggNGUxYjgzMC4uMGI0MWY3YyAxMDA2NDQKLS0tIGEvc3JjL2Jhc2UvZnRmbnRmbXQuYworKysgYi9zcmMvYmFzZS9mdGZudGZtdC5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgdXRpbGl0eSBmaWxlIGZvciBmb250IGZvcm1hdHMgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2Z0ZnN0eXBlLmMgYi9zcmMvYmFzZS9mdGZzdHlwZS5jCmluZGV4IDU3ZTkwNGQuLmVhMjRlNjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYXNlL2Z0ZnN0eXBlLmMKKysrIGIvc3JjL2Jhc2UvZnRmc3R5cGUuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIHV0aWxpdHkgZmlsZSB0byBhY2Nlc3MgRlNUeXBlIGRhdGEgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2Z0Z2FzcC5jIGIvc3JjL2Jhc2UvZnRnYXNwLmMKaW5kZXggYjc0NGYwYS4uMjliN2IwOCAxMDA2NDQKLS0tIGEvc3JjL2Jhc2UvZnRnYXNwLmMKKysrIGIvc3JjL2Jhc2UvZnRnYXNwLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBBY2Nlc3Mgb2YgVHJ1ZVR5cGUncyBgZ2FzcCcgdGFibGUgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2Z0Z2xvYWRyLmMgYi9zcmMvYmFzZS9mdGdsb2Fkci5jCmluZGV4IDgzY2UwNjYuLjk4MjNkMDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYXNlL2Z0Z2xvYWRyLmMKKysrIGIvc3JjL2Jhc2UvZnRnbG9hZHIuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRoZSBGcmVlVHlwZSBnbHlwaCBsb2FkZXIgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMjEyLDEyICsyMTIsMTIgQEAKICAgICBGVF9PdXRsaW5lKiAgY3VycmVudCA9ICZsb2FkZXItPmN1cnJlbnQub3V0bGluZTsKICAgICBGVF9Cb29sICAgICAgYWRqdXN0ICA9IDA7CiAKLSAgICBGVF9VSW50ICAgICAgbmV3X21heCwgb2xkX21heDsKKyAgICBGVF9VSW50ICBuZXdfbWF4LCBvbGRfbWF4LCBtaW5fbmV3X21heDsKIAogCiAgICAgZXJyb3IgPSBGVF9HbHlwaExvYWRlcl9DcmVhdGVFeHRyYSggbG9hZGVyICk7CiAgICAgaWYgKCBlcnJvciApCi0gICAgICByZXR1cm4gZXJyb3I7CisgICAgICBnb3RvIEV4aXQ7CiAKICAgICAvKiBjaGVjayBwb2ludHMgJiB0YWdzICovCiAgICAgbmV3X21heCA9IChGVF9VSW50KWJhc2UtPm5fcG9pbnRzICsgKEZUX1VJbnQpY3VycmVudC0+bl9wb2ludHMgKwpAQCAtMjI2LDEwICsyMjYsMTggQEAKIAogICAgIGlmICggbmV3X21heCA+IG9sZF9tYXggKQogICAgIHsKLSAgICAgIG5ld19tYXggPSBGVF9QQURfQ0VJTCggbmV3X21heCwgOCApOwotCiAgICAgICBpZiAoIG5ld19tYXggPiBGVF9PVVRMSU5FX1BPSU5UU19NQVggKQotICAgICAgICByZXR1cm4gRlRfVEhST1coIEFycmF5X1Rvb19MYXJnZSApOworICAgICAgeworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBBcnJheV9Ub29fTGFyZ2UgKTsKKyAgICAgICAgZ290byBFeGl0OworICAgICAgfQorCisgICAgICBtaW5fbmV3X21heCA9IG9sZF9tYXggKyAoIG9sZF9tYXggPj4gMSApOworICAgICAgaWYgKCBuZXdfbWF4IDwgbWluX25ld19tYXggKQorICAgICAgICBuZXdfbWF4ID0gbWluX25ld19tYXg7CisgICAgICBuZXdfbWF4ID0gRlRfUEFEX0NFSUwoIG5ld19tYXgsIDggKTsKKyAgICAgIGlmICggbmV3X21heCA+IEZUX09VVExJTkVfUE9JTlRTX01BWCApCisgICAgICAgIG5ld19tYXggPSBGVF9PVVRMSU5FX1BPSU5UU19NQVg7CiAKICAgICAgIGlmICggRlRfUkVORVdfQVJSQVkoIGJhc2UtPnBvaW50cywgb2xkX21heCwgbmV3X21heCApIHx8CiAgICAgICAgICAgIEZUX1JFTkVXX0FSUkFZKCBiYXNlLT50YWdzLCAgIG9sZF9tYXgsIG5ld19tYXggKSApCkBAIC0yNTQsNyArMjYyLDcgQEAKIAogICAgIGVycm9yID0gRlRfR2x5cGhMb2FkZXJfQ3JlYXRlRXh0cmEoIGxvYWRlciApOwogICAgIGlmICggZXJyb3IgKQotICAgICAgcmV0dXJuIGVycm9yOworICAgICAgZ290byBFeGl0OwogCiAgICAgLyogY2hlY2sgY29udG91cnMgKi8KICAgICBvbGRfbWF4ID0gbG9hZGVyLT5tYXhfY29udG91cnM7CkBAIC0yNjIsMTAgKzI3MCwxOCBAQAogICAgICAgICAgICAgICBuX2NvbnRvdXJzOwogICAgIGlmICggbmV3X21heCA+IG9sZF9tYXggKQogICAgIHsKLSAgICAgIG5ld19tYXggPSBGVF9QQURfQ0VJTCggbmV3X21heCwgNCApOwotCiAgICAgICBpZiAoIG5ld19tYXggPiBGVF9PVVRMSU5FX0NPTlRPVVJTX01BWCApCi0gICAgICAgIHJldHVybiBGVF9USFJPVyggQXJyYXlfVG9vX0xhcmdlICk7CisgICAgICB7CisgICAgICAgIGVycm9yID0gRlRfVEhST1coIEFycmF5X1Rvb19MYXJnZSApOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisKKyAgICAgIG1pbl9uZXdfbWF4ID0gb2xkX21heCArICggb2xkX21heCA+PiAxICk7CisgICAgICBpZiAoIG5ld19tYXggPCBtaW5fbmV3X21heCApCisgICAgICAgIG5ld19tYXggPSBtaW5fbmV3X21heDsKKyAgICAgIG5ld19tYXggPSBGVF9QQURfQ0VJTCggbmV3X21heCwgNCApOworICAgICAgaWYgKCBuZXdfbWF4ID4gRlRfT1VUTElORV9DT05UT1VSU19NQVggKQorICAgICAgICBuZXdfbWF4ID0gRlRfT1VUTElORV9DT05UT1VSU19NQVg7CiAKICAgICAgIGlmICggRlRfUkVORVdfQVJSQVkoIGJhc2UtPmNvbnRvdXJzLCBvbGRfbWF4LCBuZXdfbWF4ICkgKQogICAgICAgICBnb3RvIEV4aXQ7CmRpZmYgLS1naXQgYS9zcmMvYmFzZS9mdGdseXBoLmMgYi9zcmMvYmFzZS9mdGdseXBoLmMKaW5kZXggZTJjNmY3My4uMzkzZDQ5NCAxMDA2NDQKLS0tIGEvc3JjL2Jhc2UvZnRnbHlwaC5jCisrKyBiL3NyYy9iYXNlL2Z0Z2x5cGguYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyB0byBoYW5kbGUgZ2x5cGhzIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8ZnJlZXR5cGUvZnRvdXRsbi5oPgogI2luY2x1ZGUgPGZyZWV0eXBlL2Z0Yml0bWFwLmg+CiAjaW5jbHVkZSA8ZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmg+CisjaW5jbHVkZSA8ZnJlZXR5cGUvb3RzdmcuaD4KIAogI2luY2x1ZGUgImZ0YmFzZS5oIgogCkBAIC0yNzcsNiArMjc4LDI0MCBAQAogICApCiAKIAorI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fU1ZHCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICBGVF9TdmdHbHlwaCBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX0Vycm9yICkKKyAgZnRfc3ZnX2dseXBoX2luaXQoIEZUX0dseXBoICAgICAgc3ZnX2dseXBoLAorICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhTbG90ICBzbG90ICkKKyAgeworICAgIEZUX1VMb25nICAgICAgICAgZG9jX2xlbmd0aDsKKyAgICBGVF9TVkdfRG9jdW1lbnQgIGRvY3VtZW50OworICAgIEZUX1N2Z0dseXBoICAgICAgZ2x5cGggPSAoRlRfU3ZnR2x5cGgpc3ZnX2dseXBoOworCisgICAgRlRfRXJyb3IgICBlcnJvciAgPSBGVF9FcnJfT2s7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBGVF9HTFlQSCggZ2x5cGggKS0+bGlicmFyeS0+bWVtb3J5OworCisKKyAgICBpZiAoIHNsb3QtPmZvcm1hdCAhPSBGVF9HTFlQSF9GT1JNQVRfU1ZHICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0dseXBoX0Zvcm1hdCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGlmICggc2xvdC0+b3RoZXIgPT0gTlVMTCApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9TbG90X0hhbmRsZSApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGRvY3VtZW50ID0gKEZUX1NWR19Eb2N1bWVudClzbG90LT5vdGhlcjsKKworICAgIGlmICggZG9jdW1lbnQtPnN2Z19kb2N1bWVudF9sZW5ndGggPT0gMCApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9TbG90X0hhbmRsZSApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIGFsbG9jYXRlIGEgbmV3IGRvY3VtZW50ICovCisgICAgZG9jX2xlbmd0aCA9IGRvY3VtZW50LT5zdmdfZG9jdW1lbnRfbGVuZ3RoOworICAgIGlmICggRlRfUUFMTE9DKCBnbHlwaC0+c3ZnX2RvY3VtZW50LCBkb2NfbGVuZ3RoICkgKQorICAgICAgZ290byBFeGl0OworICAgIGdseXBoLT5zdmdfZG9jdW1lbnRfbGVuZ3RoID0gZG9jX2xlbmd0aDsKKworICAgIGdseXBoLT5nbHlwaF9pbmRleCA9IHNsb3QtPmdseXBoX2luZGV4OworCisgICAgZ2x5cGgtPm1ldHJpY3MgICAgICA9IGRvY3VtZW50LT5tZXRyaWNzOworICAgIGdseXBoLT51bml0c19wZXJfRU0gPSBkb2N1bWVudC0+dW5pdHNfcGVyX0VNOworCisgICAgZ2x5cGgtPnN0YXJ0X2dseXBoX2lkID0gZG9jdW1lbnQtPnN0YXJ0X2dseXBoX2lkOworICAgIGdseXBoLT5lbmRfZ2x5cGhfaWQgICA9IGRvY3VtZW50LT5lbmRfZ2x5cGhfaWQ7CisKKyAgICBnbHlwaC0+dHJhbnNmb3JtID0gZG9jdW1lbnQtPnRyYW5zZm9ybTsKKyAgICBnbHlwaC0+ZGVsdGEgICAgID0gZG9jdW1lbnQtPmRlbHRhOworCisgICAgLyogY29weSB0aGUgZG9jdW1lbnQgaW50byBnbHlwaCAqLworICAgIEZUX01FTV9DT1BZKCBnbHlwaC0+c3ZnX2RvY3VtZW50LCBkb2N1bWVudC0+c3ZnX2RvY3VtZW50LCBkb2NfbGVuZ3RoICk7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggdm9pZCApCisgIGZ0X3N2Z19nbHlwaF9kb25lKCBGVF9HbHlwaCAgc3ZnX2dseXBoICkKKyAgeworICAgIEZUX1N2Z0dseXBoICBnbHlwaCAgPSAoRlRfU3ZnR2x5cGgpc3ZnX2dseXBoOworICAgIEZUX01lbW9yeSAgICBtZW1vcnkgPSBzdmdfZ2x5cGgtPmxpYnJhcnktPm1lbW9yeTsKKworCisgICAgLyoganVzdCBmcmVlIHRoZSBtZW1vcnkgKi8KKyAgICBGVF9GUkVFKCBnbHlwaC0+c3ZnX2RvY3VtZW50ICk7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfRXJyb3IgKQorICBmdF9zdmdfZ2x5cGhfY29weSggRlRfR2x5cGggIHN2Z19zb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9HbHlwaCAgc3ZnX3RhcmdldCApCisgIHsKKyAgICBGVF9TdmdHbHlwaCAgc291cmNlID0gKEZUX1N2Z0dseXBoKXN2Z19zb3VyY2U7CisgICAgRlRfU3ZnR2x5cGggIHRhcmdldCA9IChGVF9TdmdHbHlwaClzdmdfdGFyZ2V0OworCisgICAgRlRfRXJyb3IgICBlcnJvciAgPSBGVF9FcnJfT2s7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBGVF9HTFlQSCggc291cmNlICktPmxpYnJhcnktPm1lbW9yeTsKKworCisgICAgaWYgKCBzdmdfc291cmNlLT5mb3JtYXQgIT0gRlRfR0xZUEhfRk9STUFUX1NWRyApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9HbHlwaF9Gb3JtYXQgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBpZiAoIHNvdXJjZS0+c3ZnX2RvY3VtZW50X2xlbmd0aCA9PSAwICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1Nsb3RfSGFuZGxlICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgdGFyZ2V0LT5nbHlwaF9pbmRleCA9IHNvdXJjZS0+Z2x5cGhfaW5kZXg7CisKKyAgICB0YXJnZXQtPnN2Z19kb2N1bWVudF9sZW5ndGggPSBzb3VyY2UtPnN2Z19kb2N1bWVudF9sZW5ndGg7CisKKyAgICB0YXJnZXQtPm1ldHJpY3MgICAgICA9IHNvdXJjZS0+bWV0cmljczsKKyAgICB0YXJnZXQtPnVuaXRzX3Blcl9FTSA9IHNvdXJjZS0+dW5pdHNfcGVyX0VNOworCisgICAgdGFyZ2V0LT5zdGFydF9nbHlwaF9pZCA9IHNvdXJjZS0+c3RhcnRfZ2x5cGhfaWQ7CisgICAgdGFyZ2V0LT5lbmRfZ2x5cGhfaWQgICA9IHNvdXJjZS0+ZW5kX2dseXBoX2lkOworCisgICAgdGFyZ2V0LT50cmFuc2Zvcm0gPSBzb3VyY2UtPnRyYW5zZm9ybTsKKyAgICB0YXJnZXQtPmRlbHRhICAgICA9IHNvdXJjZS0+ZGVsdGE7CisKKyAgICAvKiBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIFNWRyBkb2N1bWVudCAqLworICAgIGlmICggRlRfUUFMTE9DKCB0YXJnZXQtPnN2Z19kb2N1bWVudCwgdGFyZ2V0LT5zdmdfZG9jdW1lbnRfbGVuZ3RoICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgLyogY29weSB0aGUgZG9jdW1lbnQgKi8KKyAgICBGVF9NRU1fQ09QWSggdGFyZ2V0LT5zdmdfZG9jdW1lbnQsCisgICAgICAgICAgICAgICAgIHNvdXJjZS0+c3ZnX2RvY3VtZW50LAorICAgICAgICAgICAgICAgICB0YXJnZXQtPnN2Z19kb2N1bWVudF9sZW5ndGggKTsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCB2b2lkICkKKyAgZnRfc3ZnX2dseXBoX3RyYW5zZm9ybSggRlRfR2x5cGggICAgICAgICAgc3ZnX2dseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9NYXRyaXgqICBfbWF0cml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9WZWN0b3IqICBfZGVsdGEgKQorICB7CisgICAgRlRfU3ZnR2x5cGggIGdseXBoICA9IChGVF9TdmdHbHlwaClzdmdfZ2x5cGg7CisgICAgRlRfTWF0cml4KiAgIG1hdHJpeCA9IChGVF9NYXRyaXgqKV9tYXRyaXg7CisgICAgRlRfVmVjdG9yKiAgIGRlbHRhICA9IChGVF9WZWN0b3IqKV9kZWx0YTsKKworICAgIEZUX01hdHJpeCAgdG1wX21hdHJpeDsKKyAgICBGVF9WZWN0b3IgIHRtcF9kZWx0YTsKKworICAgIEZUX01hdHJpeCAgYSwgYjsKKyAgICBGVF9Qb3MgICAgIHgsIHk7CisKKworICAgIGlmICggIW1hdHJpeCApCisgICAgeworICAgICAgdG1wX21hdHJpeC54eCA9IDB4MTAwMDA7CisgICAgICB0bXBfbWF0cml4Lnh5ID0gMDsKKyAgICAgIHRtcF9tYXRyaXgueXggPSAwOworICAgICAgdG1wX21hdHJpeC55eSA9IDB4MTAwMDA7CisKKyAgICAgIG1hdHJpeCA9ICZ0bXBfbWF0cml4OworICAgIH0KKworICAgIGlmICggIWRlbHRhICkKKyAgICB7CisgICAgICB0bXBfZGVsdGEueCA9IDA7CisgICAgICB0bXBfZGVsdGEueSA9IDA7CisKKyAgICAgIGRlbHRhID0gJnRtcF9kZWx0YTsKKyAgICB9CisKKyAgICBhID0gZ2x5cGgtPnRyYW5zZm9ybTsKKyAgICBiID0gKm1hdHJpeDsKKyAgICBGVF9NYXRyaXhfTXVsdGlwbHkoICZiLCAmYSApOworCisgICAgeCA9IEFERF9MT05HKCBBRERfTE9ORyggRlRfTXVsRml4KCBtYXRyaXgtPnh4LCBnbHlwaC0+ZGVsdGEueCApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX011bEZpeCggbWF0cml4LT54eSwgZ2x5cGgtPmRlbHRhLnkgKSApLAorICAgICAgICAgICAgICAgICAgZGVsdGEtPnggKTsKKyAgICB5ID0gQUREX0xPTkcoIEFERF9MT05HKCBGVF9NdWxGaXgoIG1hdHJpeC0+eXgsIGdseXBoLT5kZWx0YS54ICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTXVsRml4KCBtYXRyaXgtPnl5LCBnbHlwaC0+ZGVsdGEueSApICksCisgICAgICAgICAgICAgICAgICBkZWx0YS0+eSApOworCisgICAgZ2x5cGgtPmRlbHRhLnggPSB4OworICAgIGdseXBoLT5kZWx0YS55ID0geTsKKworICAgIGdseXBoLT50cmFuc2Zvcm0gPSBhOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX0Vycm9yICkKKyAgZnRfc3ZnX2dseXBoX3ByZXBhcmUoIEZUX0dseXBoICAgICAgc3ZnX2dseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhTbG90ICBzbG90ICkKKyAgeworICAgIEZUX1N2Z0dseXBoICBnbHlwaCA9IChGVF9TdmdHbHlwaClzdmdfZ2x5cGg7CisKKyAgICBGVF9FcnJvciAgIGVycm9yICA9IEZUX0Vycl9PazsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IHN2Z19nbHlwaC0+bGlicmFyeS0+bWVtb3J5OworCisgICAgRlRfU1ZHX0RvY3VtZW50ICBkb2N1bWVudCA9IE5VTEw7CisKKworICAgIGlmICggRlRfTkVXKCBkb2N1bWVudCApICkKKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgIGRvY3VtZW50LT5zdmdfZG9jdW1lbnQgICAgICAgID0gZ2x5cGgtPnN2Z19kb2N1bWVudDsKKyAgICBkb2N1bWVudC0+c3ZnX2RvY3VtZW50X2xlbmd0aCA9IGdseXBoLT5zdmdfZG9jdW1lbnRfbGVuZ3RoOworCisgICAgZG9jdW1lbnQtPm1ldHJpY3MgICAgICA9IGdseXBoLT5tZXRyaWNzOworICAgIGRvY3VtZW50LT51bml0c19wZXJfRU0gPSBnbHlwaC0+dW5pdHNfcGVyX0VNOworCisgICAgZG9jdW1lbnQtPnN0YXJ0X2dseXBoX2lkID0gZ2x5cGgtPnN0YXJ0X2dseXBoX2lkOworICAgIGRvY3VtZW50LT5lbmRfZ2x5cGhfaWQgICA9IGdseXBoLT5lbmRfZ2x5cGhfaWQ7CisKKyAgICBkb2N1bWVudC0+dHJhbnNmb3JtID0gZ2x5cGgtPnRyYW5zZm9ybTsKKyAgICBkb2N1bWVudC0+ZGVsdGEgICAgID0gZ2x5cGgtPmRlbHRhOworCisgICAgc2xvdC0+Zm9ybWF0ICAgICAgPSBGVF9HTFlQSF9GT1JNQVRfU1ZHOworICAgIHNsb3QtPmdseXBoX2luZGV4ID0gZ2x5cGgtPmdseXBoX2luZGV4OworICAgIHNsb3QtPm90aGVyICAgICAgID0gZG9jdW1lbnQ7CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0RFRklORV9HTFlQSCgKKyAgICBmdF9zdmdfZ2x5cGhfY2xhc3MsCisKKyAgICBzaXplb2YgKCBGVF9TdmdHbHlwaFJlYyApLAorICAgIEZUX0dMWVBIX0ZPUk1BVF9TVkcsCisKKyAgICBmdF9zdmdfZ2x5cGhfaW5pdCwgICAgICAvKiBGVF9HbHlwaF9Jbml0RnVuYyAgICAgICBnbHlwaF9pbml0ICAgICAgKi8KKyAgICBmdF9zdmdfZ2x5cGhfZG9uZSwgICAgICAvKiBGVF9HbHlwaF9Eb25lRnVuYyAgICAgICBnbHlwaF9kb25lICAgICAgKi8KKyAgICBmdF9zdmdfZ2x5cGhfY29weSwgICAgICAvKiBGVF9HbHlwaF9Db3B5RnVuYyAgICAgICBnbHlwaF9jb3B5ICAgICAgKi8KKyAgICBmdF9zdmdfZ2x5cGhfdHJhbnNmb3JtLCAvKiBGVF9HbHlwaF9UcmFuc2Zvcm1GdW5jICBnbHlwaF90cmFuc2Zvcm0gKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAvKiBGVF9HbHlwaF9HZXRCQm94RnVuYyAgICBnbHlwaF9iYm94ICAgICAgKi8KKyAgICBmdF9zdmdfZ2x5cGhfcHJlcGFyZSAgICAvKiBGVF9HbHlwaF9QcmVwYXJlRnVuYyAgICBnbHlwaF9wcmVwYXJlICAgKi8KKyAgKQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9TVkcgKi8KKworCiAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCkBAIC0zNzcsNiArNjEyLDEyIEBACiAgICAgZWxzZSBpZiAoIGZvcm1hdCA9PSBGVF9HTFlQSF9GT1JNQVRfT1VUTElORSApCiAgICAgICBjbGF6eiA9ICZmdF9vdXRsaW5lX2dseXBoX2NsYXNzOwogCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9TVkcKKyAgICAvKiBpZiBpdCBpcyBhbiBTVkcgZ2x5cGggKi8KKyAgICBlbHNlIGlmICggZm9ybWF0ID09IEZUX0dMWVBIX0ZPUk1BVF9TVkcgKQorICAgICAgY2xhenogPSAmZnRfc3ZnX2dseXBoX2NsYXNzOworI2VuZGlmCisKICAgICBlbHNlCiAgICAgewogICAgICAgLyogdHJ5IHRvIGZpbmQgYSByZW5kZXJlciB0aGF0IHN1cHBvcnRzIHRoZSBnbHlwaCBpbWFnZSBmb3JtYXQgKi8KQEAgLTQ0MSw3ICs2ODIsMTAgQEAKICAgRXhpdDI6CiAgICAgLyogaWYgYW4gZXJyb3Igb2NjdXJyZWQsIGRlc3Ryb3kgdGhlIGdseXBoICovCiAgICAgaWYgKCBlcnJvciApCisgICAgewogICAgICAgRlRfRG9uZV9HbHlwaCggZ2x5cGggKTsKKyAgICAgICphZ2x5cGggPSBOVUxMOworICAgIH0KICAgICBlbHNlCiAgICAgICAqYWdseXBoID0gZ2x5cGg7CiAKQEAgLTU5NSw2ICs4MzksMTYgQEAKICAgICBpZiAoICFlcnJvciApCiAgICAgICBlcnJvciA9IEZUX1JlbmRlcl9HbHlwaF9JbnRlcm5hbCggZ2x5cGgtPmxpYnJhcnksICZkdW1teSwgcmVuZGVyX21vZGUgKTsKIAorI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fU1ZHCisgICAgaWYgKCBjbGF6eiA9PSAmZnRfc3ZnX2dseXBoX2NsYXNzICkKKyAgICB7CisgICAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsKKworCisgICAgICBGVF9GUkVFKCBkdW1teS5vdGhlciApOworICAgIH0KKyNlbmRpZgorCiAjaWYgMQogICAgIGlmICggIWRlc3Ryb3kgJiYgb3JpZ2luICkKICAgICB7CmRpZmYgLS1naXQgYS9zcmMvYmFzZS9mdGd4dmFsLmMgYi9zcmMvYmFzZS9mdGd4dmFsLmMKaW5kZXggZTk1NjdmNy4uNmIzYzVkMiAxMDA2NDQKLS0tIGEvc3JjL2Jhc2UvZnRneHZhbC5jCisrKyBiL3NyYy9iYXNlL2Z0Z3h2YWwuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIEFQSSBmb3IgdmFsaWRhdGluZyBUcnVlVHlwZUdYL0FBVCB0YWJsZXMgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQogICogTWFzYXRha2UgWUFNQVRPLCBSZWRoYXQgSy5LLAogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2Z0aGFzaC5jIGIvc3JjL2Jhc2UvZnRoYXNoLmMKaW5kZXggNDQ5YjAzYS4uMzEzYmJiYiAxMDA2NDQKLS0tIGEvc3JjL2Jhc2UvZnRoYXNoLmMKKysrIGIvc3JjL2Jhc2UvZnRoYXNoLmMKQEAgLTI0Myw3ICsyNDMsNyBAQAogICAgIG5uID0gKmJwOwogICAgIGlmICggIW5uICkKICAgICB7Ci0gICAgICBpZiAoIEZUX05FVyggbm4gKSApCisgICAgICBpZiAoIEZUX1FORVcoIG5uICkgKQogICAgICAgICBnb3RvIEV4aXQ7CiAgICAgICAqYnAgPSBubjsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvZnRpbml0LmMgYi9zcmMvYmFzZS9mdGluaXQuYwppbmRleCBhMmQyYjkzLi5jOWM3MWQyIDEwMDY0NAotLS0gYS9zcmMvYmFzZS9mdGluaXQuYworKysgYi9zcmMvYmFzZS9mdGluaXQuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIGluaXRpYWxpemF0aW9uIGxheWVyIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvYmFzZS9mdGxjZGZpbC5jIGIvc3JjL2Jhc2UvZnRsY2RmaWwuYwppbmRleCA0ODhiOTEzLi42YzNmZDY2IDEwMDY0NAotLS0gYS9zcmMvYmFzZS9mdGxjZGZpbC5jCisrKyBiL3NyYy9iYXNlL2Z0bGNkZmlsLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBBUEkgZm9yIGNvbG9yIGZpbHRlcmluZyBvZiBzdWJwaXhlbCBiaXRtYXAgZ2x5cGhzIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvYmFzZS9mdG1hYy5jIGIvc3JjL2Jhc2UvZnRtYWMuYwppbmRleCAzNmE4NjA5Li5kZTM0ZTgzIDEwMDY0NAotLS0gYS9zcmMvYmFzZS9mdG1hYy5jCisrKyBiL3NyYy9iYXNlL2Z0bWFjLmMKQEAgLTgsNyArOCw3IEBACiAgKiBUaGlzIGZpbGUgaXMgZm9yIE1hYyBPUyBYIG9ubHk7IHNlZSBidWlsZHMvbWFjL2Z0b2xkbWFjLmMgZm9yCiAgKiBjbGFzc2ljIHBsYXRmb3JtcyBidWlsdCBieSBNUFcuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBKdXN0IHZhbiBSb3NzdW0sIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC02Nyw2ICs2Nyw3IEBACiAKICNpbmNsdWRlIDxmcmVldHlwZS9mcmVldHlwZS5oPgogI2luY2x1ZGUgPGZyZWV0eXBlL3R0dGFncy5oPgorI2luY2x1ZGUgPGZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaD4KICNpbmNsdWRlIDxmcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oPgogI2luY2x1ZGUgImZ0YmFzZS5oIgogCkBAIC0xMDUsNyArMTA2LDcgQEAKICAgLyogRG9uJ3Qgd2FudCB3YXJuaW5ncyBhYm91dCBvdXIgb3duIHVzZSBvZiBkZXByZWNhdGVkIGZ1bmN0aW9ucy4gKi8KICNkZWZpbmUgRlRfREVQUkVDQVRFRF9BVFRSSUJVVEUKIAotI2luY2x1ZGUgRlRfTUFDX0gKKyNpbmNsdWRlIDxmcmVldHlwZS9mdG1hYy5oPgogCiAjaWZuZGVmIGtBVFNPcHRpb25GbGFnc1VuUmVzdHJpY3RlZFNjb3BlIC8qIHNpbmNlIE1hYyBPUyBYIDEwLjEgKi8KICNkZWZpbmUga0FUU09wdGlvbkZsYWdzVW5SZXN0cmljdGVkU2NvcGUga0FUU09wdGlvbkZsYWdzRGVmYXVsdApAQCAtMzE0LDcgKzMxNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMICkgKQogICAgICAgcmV0dXJuICggT1NUeXBlICkgMDsKIAotICAgIHJldHVybiAoKEZJbmZvICopKGluZm8uZmluZGVySW5mbykpLT5mZFR5cGU7CisgICAgcmV0dXJuICggKEZJbmZvICopKCBpbmZvLmZpbmRlckluZm8gKSApLT5mZFR5cGU7CiAgIH0KIAogCkBAIC00NjIsNyArNDYzLDcgQEAKIAogICAgICAgICBpZiAoIHBzX25hbWVfbGVuICE9IDAgKQogICAgICAgICB7Ci0gICAgICAgICAgZnRfbWVtY3B5KHBzX25hbWUsIG5hbWVzWzBdICsgMSwgcHNfbmFtZV9sZW4pOworICAgICAgICAgIGZ0X21lbWNweSggcHNfbmFtZSwgbmFtZXNbMF0gKyAxLCBwc19uYW1lX2xlbiApOwogICAgICAgICAgIHBzX25hbWVbcHNfbmFtZV9sZW5dID0gMDsKICAgICAgICAgfQogICAgICAgICBpZiAoIHN0eWxlLT5pbmRleGVzW2ZhY2VfaW5kZXhdID4gMSAmJgpkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvZnRtbS5jIGIvc3JjL2Jhc2UvZnRtbS5jCmluZGV4IGZjNWQ0ZWMuLmEyYjRiZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYXNlL2Z0bW0uYworKysgYi9zcmMvYmFzZS9mdG1tLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBNdWx0aXBsZSBNYXN0ZXIgZm9udCBzdXBwb3J0IChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvYmFzZS9mdG9ianMuYyBiL3NyYy9iYXNlL2Z0b2Jqcy5jCmluZGV4IDQ2YmFmNWYuLmFkNmVmMGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYXNlL2Z0b2Jqcy5jCisrKyBiL3NyYy9iYXNlL2Z0b2Jqcy5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVGhlIEZyZWVUeXBlIHByaXZhdGUgYmFzZSBjbGFzc2VzIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSA8ZnJlZXR5cGUvZnRsaXN0Lmg+CiAjaW5jbHVkZSA8ZnJlZXR5cGUvZnRvdXRsbi5oPgogI2luY2x1ZGUgPGZyZWV0eXBlL2Z0Zm50Zm10Lmg+CisjaW5jbHVkZSA8ZnJlZXR5cGUvb3RzdmcuaD4KIAogI2luY2x1ZGUgPGZyZWV0eXBlL2ludGVybmFsL2Z0dmFsaWQuaD4KICNpbmNsdWRlIDxmcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaD4KQEAgLTI3LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxmcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oPgogI2luY2x1ZGUgPGZyZWV0eXBlL2ludGVybmFsL3NmbnQuaD4gICAgICAgICAgLyogZm9yIFNGTlRfTG9hZF9UYWJsZV9GdW5jICovCiAjaW5jbHVkZSA8ZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaD4gICAgICAgICAvKiBmb3IgUFNfRHJpdmVyICAgICAgICAgICAgKi8KKyNpbmNsdWRlIDxmcmVldHlwZS9pbnRlcm5hbC9zdmdpbnRlcmZhY2UuaD4KIAogI2luY2x1ZGUgPGZyZWV0eXBlL3R0dGFibGVzLmg+CiAjaW5jbHVkZSA8ZnJlZXR5cGUvdHR0YWdzLmg+CkBAIC0zMjgsNiArMzMwLDE5IEBACiAgICAgaWYgKCAhZXJyb3IgJiYgY2xhenotPmluaXRfc2xvdCApCiAgICAgICBlcnJvciA9IGNsYXp6LT5pbml0X3Nsb3QoIHNsb3QgKTsKIAorI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fU1ZHCisgICAgLyogaWYgU1ZHIHRhYmxlIGV4aXN0cywgYWxsb2NhdGUgdGhlIHNwYWNlIGluIGBzbG90LT5vdGhlcmAgKi8KKyAgICBpZiAoIHNsb3QtPmZhY2UtPmZhY2VfZmxhZ3MgJiBGVF9GQUNFX0ZMQUdfU1ZHICkKKyAgICB7CisgICAgICBGVF9TVkdfRG9jdW1lbnQgIGRvY3VtZW50ID0gTlVMTDsKKworCisgICAgICBpZiAoIEZUX05FVyggZG9jdW1lbnQgKSApCisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIHNsb3QtPm90aGVyID0gZG9jdW1lbnQ7CisgICAgfQorI2VuZGlmCisKICAgRXhpdDoKICAgICByZXR1cm4gZXJyb3I7CiAgIH0KQEAgLTM3Miw3ICszODcsMTggQEAKICAgICBGVF9Qb3MgICB3aWR0aCwgaGVpZ2h0LCBwaXRjaDsKIAogCi0gICAgaWYgKCBzbG90LT5mb3JtYXQgIT0gRlRfR0xZUEhfRk9STUFUX09VVExJTkUgKQorICAgIGlmICggc2xvdC0+Zm9ybWF0ID09IEZUX0dMWVBIX0ZPUk1BVF9TVkcgKQorICAgIHsKKyAgICAgIEZUX01vZHVsZSAgICBtb2R1bGU7CisgICAgICBTVkdfU2VydmljZSAgc3ZnX3NlcnZpY2U7CisKKworICAgICAgbW9kdWxlICAgICAgPSBGVF9HZXRfTW9kdWxlKCBzbG90LT5saWJyYXJ5LCAib3Qtc3ZnIiApOworICAgICAgc3ZnX3NlcnZpY2UgPSAoU1ZHX1NlcnZpY2UpbW9kdWxlLT5jbGF6ei0+bW9kdWxlX2ludGVyZmFjZTsKKworICAgICAgcmV0dXJuIChGVF9Cb29sKXN2Z19zZXJ2aWNlLT5wcmVzZXRfc2xvdCggbW9kdWxlLCBzbG90LCBGQUxTRSApOworICAgIH0KKyAgICBlbHNlIGlmICggc2xvdC0+Zm9ybWF0ICE9IEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FICkKICAgICAgIHJldHVybiAxOwogCiAgICAgaWYgKCBvcmlnaW4gKQpAQCAtNDgyLDcgKzUwOCw3IEBACiAKICAgICBjYXNlIEZUX1BJWEVMX01PREVfTENEX1Y6CiAgICAgICBoZWlnaHQgKj0gMzsKLSAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAgICAgRkFMTF9USFJPVUdIOwogCiAgICAgY2FzZSBGVF9QSVhFTF9NT0RFX0dSQVk6CiAgICAgZGVmYXVsdDoKQEAgLTU2NCw4ICs1OTAsMjcgQEAKICAgICBzbG90LT5zdWJnbHlwaHMgICAgID0gTlVMTDsKICAgICBzbG90LT5jb250cm9sX2RhdGEgID0gTlVMTDsKICAgICBzbG90LT5jb250cm9sX2xlbiAgID0gMDsKLSAgICBzbG90LT5vdGhlciAgICAgICAgID0gTlVMTDsKLSAgICBzbG90LT5mb3JtYXQgICAgICAgID0gRlRfR0xZUEhfRk9STUFUX05PTkU7CisKKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9TVkcKKyAgICBzbG90LT5vdGhlciA9IE5VTEw7CisjZWxzZQorICAgIGlmICggISggc2xvdC0+ZmFjZS0+ZmFjZV9mbGFncyAmIEZUX0ZBQ0VfRkxBR19TVkcgKSApCisgICAgICBzbG90LT5vdGhlciA9IE5VTEw7CisgICAgZWxzZQorICAgIHsKKyAgICAgIGlmICggc2xvdC0+aW50ZXJuYWwtPmZsYWdzICYgRlRfR0xZUEhfT1dOX0daSVBfU1ZHICkKKyAgICAgIHsKKyAgICAgICAgRlRfTWVtb3J5ICAgICAgICBtZW1vcnkgPSBzbG90LT5mYWNlLT5tZW1vcnk7CisgICAgICAgIEZUX1NWR19Eb2N1bWVudCAgZG9jICAgID0gKEZUX1NWR19Eb2N1bWVudClzbG90LT5vdGhlcjsKKworCisgICAgICAgIEZUX0ZSRUUoIGRvYy0+c3ZnX2RvY3VtZW50ICk7CisgICAgICAgIHNsb3QtPmludGVybmFsLT5mbGFncyAmPSB+RlRfR0xZUEhfT1dOX0daSVBfU1ZHOworICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgc2xvdC0+Zm9ybWF0ID0gRlRfR0xZUEhfRk9STUFUX05PTkU7CiAKICAgICBzbG90LT5saW5lYXJIb3JpQWR2YW5jZSA9IDA7CiAgICAgc2xvdC0+bGluZWFyVmVydEFkdmFuY2UgPSAwOwpAQCAtNTgzLDYgKzYyOCwyNCBAQAogICAgIEZUX0RyaXZlcl9DbGFzcyAgY2xhenogID0gZHJpdmVyLT5jbGF6ejsKICAgICBGVF9NZW1vcnkgICAgICAgIG1lbW9yeSA9IGRyaXZlci0+cm9vdC5tZW1vcnk7CiAKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1NWRworICAgIGlmICggc2xvdC0+ZmFjZS0+ZmFjZV9mbGFncyAmIEZUX0ZBQ0VfRkxBR19TVkcgKQorICAgIHsKKyAgICAgIC8qIEZyZWUgbWVtb3J5IGluIGNhc2UgU1ZHIHdhcyB0aGVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiBgc2xvdC0+aW50ZXJuYWxgIG1pZ2h0IGJlIE5VTEwgaW4gb3V0LW9mLW1lbW9yeSBzaXR1YXRpb25zLiAqLworICAgICAgaWYgKCBzbG90LT5pbnRlcm5hbCAmJiBzbG90LT5pbnRlcm5hbC0+ZmxhZ3MgJiBGVF9HTFlQSF9PV05fR1pJUF9TVkcgKQorICAgICAgeworICAgICAgICBGVF9TVkdfRG9jdW1lbnQgIGRvYyA9IChGVF9TVkdfRG9jdW1lbnQpc2xvdC0+b3RoZXI7CisKKworICAgICAgICBGVF9GUkVFKCBkb2MtPnN2Z19kb2N1bWVudCApOworCisgICAgICAgIHNsb3QtPmludGVybmFsLT5mbGFncyAmPSB+RlRfR0xZUEhfT1dOX0daSVBfU1ZHOworICAgICAgfQorCisgICAgICBGVF9GUkVFKCBzbG90LT5vdGhlciApOworICAgIH0KKyNlbmRpZgogCiAgICAgaWYgKCBjbGF6ei0+ZG9uZV9zbG90ICkKICAgICAgIGNsYXp6LT5kb25lX3Nsb3QoIHNsb3QgKTsKQEAgLTg1OCw2ICs5MjEsMTEgQEAKICAgICBsaWJyYXJ5ID0gZHJpdmVyLT5yb290LmxpYnJhcnk7CiAgICAgaGludGVyICA9IGxpYnJhcnktPmF1dG9faGludGVyOwogCisgICAgLyogdW5kZWZpbmVkIHNjYWxlIG1lYW5zIG5vIHNjYWxlICovCisgICAgaWYgKCBmYWNlLT5zaXplLT5tZXRyaWNzLnhfcHBlbSA9PSAwIHx8CisgICAgICAgICBmYWNlLT5zaXplLT5tZXRyaWNzLnlfcHBlbSA9PSAwICkKKyAgICAgIGxvYWRfZmxhZ3MgfD0gRlRfTE9BRF9OT19TQ0FMRTsKKwogICAgIC8qIHJlc29sdmUgbG9hZCBmbGFncyBkZXBlbmRlbmNpZXMgKi8KIAogICAgIGlmICggbG9hZF9mbGFncyAmIEZUX0xPQURfTk9fUkVDVVJTRSApCkBAIC05NDcsMTEgKzEwMTUsMjEgQEAKICAgICAgIEZUX0F1dG9IaW50ZXJfSW50ZXJmYWNlICBoaW50aW5nOwogCiAKLSAgICAgIC8qIHRyeSB0byBsb2FkIGVtYmVkZGVkIGJpdG1hcHMgZmlyc3QgaWYgYXZhaWxhYmxlICAgICAgICAgICAgKi8KLSAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgIC8qIFhYWDogVGhpcyBpcyByZWFsbHkgYSB0ZW1wb3JhcnkgaGFjayB0aGF0IHNob3VsZCBkaXNhcHBlYXIgKi8KLSAgICAgIC8qICAgICAgcHJvbXB0bHkgd2l0aCBGcmVlVHlwZSAyLjEhICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qIFhYWDogVGhlIHVzZSBvZiB0aGUgYEZUX0xPQURfWFhYX09OTFlgIGZsYWdzIGlzIG5vdCB2ZXJ5ICovCisgICAgICAvKiAgICAgIGVsZWdhbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICAvKiB0cnkgdG8gbG9hZCBTVkcgZG9jdW1lbnRzIGlmIGF2YWlsYWJsZSAqLworICAgICAgaWYgKCBGVF9IQVNfU1ZHKCBmYWNlICkgKQorICAgICAgeworICAgICAgICBlcnJvciA9IGRyaXZlci0+Y2xhenotPmxvYWRfZ2x5cGgoIHNsb3QsIGZhY2UtPnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZF9mbGFncyB8IEZUX0xPQURfU1ZHX09OTFkgKTsKKworICAgICAgICBpZiAoICFlcnJvciAmJiBzbG90LT5mb3JtYXQgPT0gRlRfR0xZUEhfRk9STUFUX1NWRyApCisgICAgICAgICAgZ290byBMb2FkX09rOworICAgICAgfQorCisgICAgICAvKiB0cnkgdG8gbG9hZCBlbWJlZGRlZCBiaXRtYXBzIGlmIGF2YWlsYWJsZSAqLwogICAgICAgaWYgKCBGVF9IQVNfRklYRURfU0laRVMoIGZhY2UgKSAgICAgICAgICAgICAgJiYKICAgICAgICAgICAgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9OT19CSVRNQVAgKSA9PSAwICkKICAgICAgIHsKQEAgLTExMDcsMjggKzExODUsMzQgQEAKICAgICAgICAgICAgICAgICBwaXhlbF9tb2Rlc1tzbG90LT5iaXRtYXAucGl4ZWxfbW9kZV0sCiAgICAgICAgICAgICAgICAgc2xvdC0+Yml0bWFwLnBpeGVsX21vZGUgKSk7CiAgICAgRlRfVFJBQ0U1KCggIlxuIiApKTsKLSAgICBGVF9UUkFDRTUoKCAiICB4IGFkdmFuY2U6ICVmXG4iLCBzbG90LT5hZHZhbmNlLnggLyA2NC4wICkpOwotICAgIEZUX1RSQUNFNSgoICIgIHkgYWR2YW5jZTogJWZcbiIsIHNsb3QtPmFkdmFuY2UueSAvIDY0LjAgKSk7CisgICAgRlRfVFJBQ0U1KCggIiAgeCBhZHZhbmNlOiAlZlxuIiwgKGRvdWJsZSlzbG90LT5hZHZhbmNlLnggLyA2NCApKTsKKyAgICBGVF9UUkFDRTUoKCAiICB5IGFkdmFuY2U6ICVmXG4iLCAoZG91YmxlKXNsb3QtPmFkdmFuY2UueSAvIDY0ICkpOwogICAgIEZUX1RSQUNFNSgoICIgIGxpbmVhciB4IGFkdmFuY2U6ICVmXG4iLAotICAgICAgICAgICAgICAgIHNsb3QtPmxpbmVhckhvcmlBZHZhbmNlIC8gNjU1MzYuMCApKTsKKyAgICAgICAgICAgICAgICAoZG91YmxlKXNsb3QtPmxpbmVhckhvcmlBZHZhbmNlIC8gNjU1MzYgKSk7CiAgICAgRlRfVFJBQ0U1KCggIiAgbGluZWFyIHkgYWR2YW5jZTogJWZcbiIsCi0gICAgICAgICAgICAgICAgc2xvdC0+bGluZWFyVmVydEFkdmFuY2UgLyA2NTUzNi4wICkpOworICAgICAgICAgICAgICAgIChkb3VibGUpc2xvdC0+bGluZWFyVmVydEFkdmFuY2UgLyA2NTUzNiApKTsKIAogICAgIHsKICAgICAgIEZUX0dseXBoX01ldHJpY3MqICBtZXRyaWNzID0gJnNsb3QtPm1ldHJpY3M7CiAKIAogICAgICAgRlRfVFJBQ0U1KCggIiAgbWV0cmljczpcbiIgKSk7Ci0gICAgICBGVF9UUkFDRTUoKCAiICAgIHdpZHRoOiAgJWZcbiIsIG1ldHJpY3MtPndpZHRoICAvIDY0LjAgKSk7Ci0gICAgICBGVF9UUkFDRTUoKCAiICAgIGhlaWdodDogJWZcbiIsIG1ldHJpY3MtPmhlaWdodCAvIDY0LjAgKSk7CisgICAgICBGVF9UUkFDRTUoKCAiICAgIHdpZHRoOiAgJWZcbiIsIChkb3VibGUpbWV0cmljcy0+d2lkdGggLyA2NCApKTsKKyAgICAgIEZUX1RSQUNFNSgoICIgICAgaGVpZ2h0OiAlZlxuIiwgKGRvdWJsZSltZXRyaWNzLT5oZWlnaHQgLyA2NCApKTsKICAgICAgIEZUX1RSQUNFNSgoICJcbiIgKSk7Ci0gICAgICBGVF9UUkFDRTUoKCAiICAgIGhvcmlCZWFyaW5nWDogJWZcbiIsIG1ldHJpY3MtPmhvcmlCZWFyaW5nWCAvIDY0LjAgKSk7Ci0gICAgICBGVF9UUkFDRTUoKCAiICAgIGhvcmlCZWFyaW5nWTogJWZcbiIsIG1ldHJpY3MtPmhvcmlCZWFyaW5nWSAvIDY0LjAgKSk7Ci0gICAgICBGVF9UUkFDRTUoKCAiICAgIGhvcmlBZHZhbmNlOiAgJWZcbiIsIG1ldHJpY3MtPmhvcmlBZHZhbmNlICAvIDY0LjAgKSk7CisgICAgICBGVF9UUkFDRTUoKCAiICAgIGhvcmlCZWFyaW5nWDogJWZcbiIsCisgICAgICAgICAgICAgICAgICAoZG91YmxlKW1ldHJpY3MtPmhvcmlCZWFyaW5nWCAvIDY0ICkpOworICAgICAgRlRfVFJBQ0U1KCggIiAgICBob3JpQmVhcmluZ1k6ICVmXG4iLAorICAgICAgICAgICAgICAgICAgKGRvdWJsZSltZXRyaWNzLT5ob3JpQmVhcmluZ1kgLyA2NCApKTsKKyAgICAgIEZUX1RSQUNFNSgoICIgICAgaG9yaUFkdmFuY2U6ICAlZlxuIiwKKyAgICAgICAgICAgICAgICAgIChkb3VibGUpbWV0cmljcy0+aG9yaUFkdmFuY2UgLyA2NCApKTsKICAgICAgIEZUX1RSQUNFNSgoICJcbiIgKSk7Ci0gICAgICBGVF9UUkFDRTUoKCAiICAgIHZlcnRCZWFyaW5nWDogJWZcbiIsIG1ldHJpY3MtPnZlcnRCZWFyaW5nWCAvIDY0LjAgKSk7Ci0gICAgICBGVF9UUkFDRTUoKCAiICAgIHZlcnRCZWFyaW5nWTogJWZcbiIsIG1ldHJpY3MtPnZlcnRCZWFyaW5nWSAvIDY0LjAgKSk7Ci0gICAgICBGVF9UUkFDRTUoKCAiICAgIHZlcnRBZHZhbmNlOiAgJWZcbiIsIG1ldHJpY3MtPnZlcnRBZHZhbmNlICAvIDY0LjAgKSk7CisgICAgICBGVF9UUkFDRTUoKCAiICAgIHZlcnRCZWFyaW5nWDogJWZcbiIsCisgICAgICAgICAgICAgICAgICAoZG91YmxlKW1ldHJpY3MtPnZlcnRCZWFyaW5nWCAvIDY0ICkpOworICAgICAgRlRfVFJBQ0U1KCggIiAgICB2ZXJ0QmVhcmluZ1k6ICVmXG4iLAorICAgICAgICAgICAgICAgICAgKGRvdWJsZSltZXRyaWNzLT52ZXJ0QmVhcmluZ1kgLyA2NCApKTsKKyAgICAgIEZUX1RSQUNFNSgoICIgICAgdmVydEFkdmFuY2U6ICAlZlxuIiwKKyAgICAgICAgICAgICAgICAgIChkb3VibGUpbWV0cmljcy0+dmVydEFkdmFuY2UgLyA2NCApKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMTQxMSw3ICsxNDk1LDcgQEAKICAgc3RhdGljIEZUX0Vycm9yCiAgIG9wZW5fZmFjZSggRlRfRHJpdmVyICAgICAgZHJpdmVyLAogICAgICAgICAgICAgIEZUX1N0cmVhbSAgICAgICphc3RyZWFtLAotICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgIGV4dGVybmFsX3N0cmVhbSwKKyAgICAgICAgICAgICBGVF9Cb29sICAgICAgICAqYW5leHRlcm5hbF9zdHJlYW0sCiAgICAgICAgICAgICAgRlRfTG9uZyAgICAgICAgZmFjZV9pbmRleCwKICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICBudW1fcGFyYW1zLAogICAgICAgICAgICAgIEZUX1BhcmFtZXRlciogIHBhcmFtcywKQEAgLTE0MzcsNyArMTUyMSw3IEBACiAgICAgZmFjZS0+c3RyZWFtID0gKmFzdHJlYW07CiAKICAgICAvKiBzZXQgdGhlIEZUX0ZBQ0VfRkxBR19FWFRFUk5BTF9TVFJFQU0gYml0IGZvciBGVF9Eb25lX0ZhY2UgKi8KLSAgICBpZiAoIGV4dGVybmFsX3N0cmVhbSApCisgICAgaWYgKCAqYW5leHRlcm5hbF9zdHJlYW0gKQogICAgICAgZmFjZS0+ZmFjZV9mbGFncyB8PSBGVF9GQUNFX0ZMQUdfRVhURVJOQUxfU1RSRUFNOwogCiAgICAgaWYgKCBGVF9ORVcoIGludGVybmFsICkgKQpAQCAtMTQ2Nyw3ICsxNTUxLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9JbnQpZmFjZV9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3BhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zICk7Ci0gICAgKmFzdHJlYW0gPSBmYWNlLT5zdHJlYW07IC8qIFN0cmVhbSBtYXkgaGF2ZSBiZWVuIGNoYW5nZWQuICovCisgICAgLyogU3RyZWFtIG1heSBoYXZlIGJlZW4gY2hhbmdlZC4gKi8KKyAgICAqYXN0cmVhbSA9IGZhY2UtPnN0cmVhbTsKKyAgICAqYW5leHRlcm5hbF9zdHJlYW0gPQorICAgICAgKCBmYWNlLT5mYWNlX2ZsYWdzICYgRlRfRkFDRV9GTEFHX0VYVEVSTkFMX1NUUkVBTSApICE9IDA7CiAgICAgaWYgKCBlcnJvciApCiAgICAgICBnb3RvIEZhaWw7CiAKQEAgLTE1OTEsMTQgKzE2NzgsMTMgQEAKICAgc3RhdGljIHZvaWQKICAgbWVtb3J5X3N0cmVhbV9jbG9zZSggRlRfU3RyZWFtICBzdHJlYW0gKQogICB7Ci0gICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBzdHJlYW0tPm1lbW9yeTsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IChGVF9NZW1vcnkpc3RyZWFtLT5kZXNjcmlwdG9yLnBvaW50ZXI7CiAKIAogICAgIEZUX0ZSRUUoIHN0cmVhbS0+YmFzZSApOwotCiAgICAgc3RyZWFtLT5zaXplICA9IDA7Ci0gICAgc3RyZWFtLT5iYXNlICA9IE5VTEw7CiAgICAgc3RyZWFtLT5jbG9zZSA9IE5VTEw7CisgICAgRlRfRlJFRSggc3RyZWFtICk7CiAgIH0KIAogCkBAIC0xNjI5LDcgKzE3MTUsOCBAQAogCiAgICAgRlRfU3RyZWFtX09wZW5NZW1vcnkoIHN0cmVhbSwgYmFzZSwgc2l6ZSApOwogCi0gICAgc3RyZWFtLT5jbG9zZSA9IGNsb3NlOworICAgIHN0cmVhbS0+ZGVzY3JpcHRvci5wb2ludGVyID0gbWVtb3J5OworICAgIHN0cmVhbS0+Y2xvc2UgICAgICAgICAgICAgID0gY2xvc2U7CiAKICAgICAqYXN0cmVhbSA9IHN0cmVhbTsKIApAQCAtMTY1MCwyOCArMTczNywzNiBAQAogICB7CiAgICAgRlRfT3Blbl9BcmdzICBhcmdzOwogICAgIEZUX0Vycm9yICAgICAgZXJyb3I7Ci0gICAgRlRfU3RyZWFtICAgICBzdHJlYW0gPSBOVUxMOwogICAgIEZUX01lbW9yeSAgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OwogCiAKKyAgICBhcmdzLmZsYWdzID0gMDsKKworICAgIGlmICggZHJpdmVyX25hbWUgKQorICAgIHsKKyAgICAgIGFyZ3MuZHJpdmVyID0gRlRfR2V0X01vZHVsZSggbGlicmFyeSwgZHJpdmVyX25hbWUgKTsKKyAgICAgIGlmICggIWFyZ3MuZHJpdmVyICkKKyAgICAgIHsKKyAgICAgICAgRlRfRlJFRSggYmFzZSApOworICAgICAgICByZXR1cm4gRlRfVEhST1coIE1pc3NpbmdfTW9kdWxlICk7CisgICAgICB9CisKKyAgICAgIGFyZ3MuZmxhZ3MgPSBhcmdzLmZsYWdzIHwgRlRfT1BFTl9EUklWRVI7CisgICAgfQorCisgICAgLyogYG1lbW9yeV9zdHJlYW1fY2xvc2VgIGFsc28gZnJlZXMgdGhlIHN0cmVhbSBvYmplY3QuICovCiAgICAgZXJyb3IgPSBuZXdfbWVtb3J5X3N0cmVhbSggbGlicmFyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X3N0cmVhbV9jbG9zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyZWFtICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFyZ3Muc3RyZWFtICk7CiAgICAgaWYgKCBlcnJvciApCiAgICAgewogICAgICAgRlRfRlJFRSggYmFzZSApOwogICAgICAgcmV0dXJuIGVycm9yOwogICAgIH0KIAotICAgIGFyZ3MuZmxhZ3MgID0gRlRfT1BFTl9TVFJFQU07Ci0gICAgYXJncy5zdHJlYW0gPSBzdHJlYW07Ci0gICAgaWYgKCBkcml2ZXJfbmFtZSApCi0gICAgewotICAgICAgYXJncy5mbGFncyAgPSBhcmdzLmZsYWdzIHwgRlRfT1BFTl9EUklWRVI7Ci0gICAgICBhcmdzLmRyaXZlciA9IEZUX0dldF9Nb2R1bGUoIGxpYnJhcnksIGRyaXZlcl9uYW1lICk7Ci0gICAgfQorICAgIGFyZ3MuZmxhZ3MgfD0gRlRfT1BFTl9TVFJFQU07CiAKICNpZmRlZiBGVF9NQUNJTlRPU0gKICAgICAvKiBBdCB0aGlzIHBvaW50LCB0aGUgZmFjZSBpbmRleCBoYXMgc2VydmVkIGl0cyBwdXJwb3NlOyAgKi8KQEAgLTE2ODMsMjEgKzE3NzgsNyBAQAogICAgICAgZmFjZV9pbmRleCAmPSAweDdGRkYwMDAwTDsgLyogcmV0YWluIEdYIGRhdGEgKi8KICNlbmRpZgogCi0gICAgZXJyb3IgPSBmdF9vcGVuX2ZhY2VfaW50ZXJuYWwoIGxpYnJhcnksICZhcmdzLCBmYWNlX2luZGV4LCBhZmFjZSwgMCApOwotCi0gICAgaWYgKCAhZXJyb3IgKQotICAgICAgKCphZmFjZSktPmZhY2VfZmxhZ3MgJj0gfkZUX0ZBQ0VfRkxBR19FWFRFUk5BTF9TVFJFQU07Ci0gICAgZWxzZQotI2lmZGVmIEZUX01BQ0lOVE9TSAotICAgICAgRlRfU3RyZWFtX0ZyZWUoIHN0cmVhbSwgMCApOwotI2Vsc2UKLSAgICB7Ci0gICAgICBGVF9TdHJlYW1fQ2xvc2UoIHN0cmVhbSApOwotICAgICAgRlRfRlJFRSggc3RyZWFtICk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gZXJyb3I7CisgICAgcmV0dXJuIGZ0X29wZW5fZmFjZV9pbnRlcm5hbCggbGlicmFyeSwgJmFyZ3MsIGZhY2VfaW5kZXgsIGFmYWNlLCAwICk7CiAgIH0KIAogCkBAIC0xODQwLDcgKzE5MjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZm50X3BzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01JTiggZmFjZV9pbmRleCwgMCApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19zZm50X2NpZCA/ICJjaWQiIDogInR5cGUxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2ZudF9jaWQgPyAidDFjaWQiIDogInR5cGUxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZhY2UgKTsKICAgRXhpdDoKICAgICB7CkBAIC0yMTAxLDcgKzIxODIsNyBAQAogICAgIEZUX0J5dGUqICAgc2ZudF9kYXRhID0gTlVMTDsKICAgICBGVF9FcnJvciAgIGVycm9yOwogICAgIEZUX1VMb25nICAgZmxhZ19vZmZzZXQ7Ci0gICAgRlRfTG9uZyAgICBybGVuOworICAgIEZUX1VMb25nICAgcmxlbjsKICAgICBpbnQgICAgICAgIGlzX2NmZjsKICAgICBGVF9Mb25nICAgIGZhY2VfaW5kZXhfaW5fcmVzb3VyY2UgPSAwOwogCkBAIC0yMTE2LDExICsyMTk3LDExIEBACiAgICAgaWYgKCBlcnJvciApCiAgICAgICBnb3RvIEV4aXQ7CiAKLSAgICBpZiAoIEZUX1JFQURfTE9ORyggcmxlbiApICkKKyAgICBpZiAoIEZUX1JFQURfVUxPTkcoIHJsZW4gKSApCiAgICAgICBnb3RvIEV4aXQ7Ci0gICAgaWYgKCBybGVuIDwgMSApCisgICAgaWYgKCAhcmxlbiApCiAgICAgICByZXR1cm4gRlRfVEhST1coIENhbm5vdF9PcGVuX1Jlc291cmNlICk7Ci0gICAgaWYgKCAoRlRfVUxvbmcpcmxlbiA+IEZUX01BQ19SRk9SS19NQVhfTEVOICkKKyAgICBpZiAoIHJsZW4gPiBGVF9NQUNfUkZPUktfTUFYX0xFTiApCiAgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfT2Zmc2V0ICk7CiAKICAgICBlcnJvciA9IG9wZW5fZmFjZV9QU19mcm9tX3NmbnRfc3RyZWFtKCBsaWJyYXJ5LApAQCAtMjEzOCw4ICsyMjE5LDkgQEAKIAogICAgIGlmICggRlRfUUFMTE9DKCBzZm50X2RhdGEsIHJsZW4gKSApCiAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgZXJyb3IgPSBGVF9TdHJlYW1fUmVhZCggc3RyZWFtLCAoRlRfQnl0ZSAqKXNmbnRfZGF0YSwgKEZUX1VMb25nKXJsZW4gKTsKLSAgICBpZiAoIGVycm9yICkgeworICAgIGVycm9yID0gRlRfU3RyZWFtX1JlYWQoIHN0cmVhbSwgKEZUX0J5dGUgKilzZm50X2RhdGEsIHJsZW4gKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICB7CiAgICAgICBGVF9GUkVFKCBzZm50X2RhdGEgKTsKICAgICAgIGdvdG8gRXhpdDsKICAgICB9CkBAIC0yMTQ3LDcgKzIyMjksNyBAQAogICAgIGlzX2NmZiA9IHJsZW4gPiA0ICYmICFmdF9tZW1jbXAoIHNmbnRfZGF0YSwgIk9UVE8iLCA0ICk7CiAgICAgZXJyb3IgPSBvcGVuX2ZhY2VfZnJvbV9idWZmZXIoIGxpYnJhcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNmbnRfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX1VMb25nKXJsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2VfaW5kZXhfaW5fcmVzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2NmZiA/ICJjZmYiIDogInRydWV0eXBlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZhY2UgKTsKQEAgLTI0NTYsNiArMjUzOCw3IEBACiAgICAgICBmYWNlX2luZGV4ICY9IDB4N0ZGRkZGRkZMOwogICAgIGVsc2UKICAgICB7CisgICAgICBmYWNlX2luZGV4ICA9IC1mYWNlX2luZGV4OwogICAgICAgZmFjZV9pbmRleCAmPSAweDdGRkZGRkZGTDsKICAgICAgIGZhY2VfaW5kZXggID0gLWZhY2VfaW5kZXg7CiAgICAgfQpAQCAtMjQ3NSw3ICsyNTU4LDcgQEAKIAogICAgIC8qIHRlc3QgZm9yIHZhbGlkIGBsaWJyYXJ5JyBkZWxheWVkIHRvIGBGVF9TdHJlYW1fTmV3JyAqLwogCi0gICAgaWYgKCAoICFhZmFjZSAmJiBmYWNlX2luZGV4ID49IDAgKSB8fCAhYXJncyApCisgICAgaWYgKCAhYXJncyApCiAgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKIAogICAgIGV4dGVybmFsX3N0cmVhbSA9IEZUX0JPT0woICggYXJncy0+ZmxhZ3MgJiBGVF9PUEVOX1NUUkVBTSApICYmCkBAIC0yNDg2LDYgKzI1NjksMTQgQEAKICAgICBpZiAoIGVycm9yICkKICAgICAgIGdvdG8gRmFpbDM7CiAKKyAgICAvKiBEbyB0aGlzIGVycm9yIGNoZWNrIGFmdGVyIGBGVF9TdHJlYW1fTmV3YCB0byBlbnN1cmUgdGhhdCB0aGUgKi8KKyAgICAvKiAnY2xvc2UnIGNhbGxiYWNrIGlzIGNhbGxlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBpZiAoICFhZmFjZSAmJiBmYWNlX2luZGV4ID49IDAgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICAgIGdvdG8gRmFpbDM7CisgICAgfQorCiAgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OwogCiAgICAgLyogSWYgdGhlIGZvbnQgZHJpdmVyIGlzIHNwZWNpZmllZCBpbiB0aGUgYGFyZ3MnIHN0cnVjdHVyZSwgdXNlICovCkBAIC0yNTA3LDcgKzI1OTgsNyBAQAogICAgICAgICAgIHBhcmFtcyAgICAgPSBhcmdzLT5wYXJhbXM7CiAgICAgICAgIH0KIAotICAgICAgICBlcnJvciA9IG9wZW5fZmFjZSggZHJpdmVyLCAmc3RyZWFtLCBleHRlcm5hbF9zdHJlYW0sIGZhY2VfaW5kZXgsCisgICAgICAgIGVycm9yID0gb3Blbl9mYWNlKCBkcml2ZXIsICZzdHJlYW0sICZleHRlcm5hbF9zdHJlYW0sIGZhY2VfaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fcGFyYW1zLCBwYXJhbXMsICZmYWNlICk7CiAgICAgICAgIGlmICggIWVycm9yICkKICAgICAgICAgICBnb3RvIFN1Y2Nlc3M7CkBAIC0yNTQzLDcgKzI2MzQsNyBAQAogICAgICAgICAgICAgcGFyYW1zICAgICA9IGFyZ3MtPnBhcmFtczsKICAgICAgICAgICB9CiAKLSAgICAgICAgICBlcnJvciA9IG9wZW5fZmFjZSggZHJpdmVyLCAmc3RyZWFtLCBleHRlcm5hbF9zdHJlYW0sIGZhY2VfaW5kZXgsCisgICAgICAgICAgZXJyb3IgPSBvcGVuX2ZhY2UoIGRyaXZlciwgJnN0cmVhbSwgJmV4dGVybmFsX3N0cmVhbSwgZmFjZV9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3BhcmFtcywgcGFyYW1zLCAmZmFjZSApOwogICAgICAgICAgIGlmICggIWVycm9yICkKICAgICAgICAgICAgIGdvdG8gU3VjY2VzczsKQEAgLTI3NzUsOCArMjg2Niw4IEBACiAgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLwogCiAgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKLSAgRlRfQXR0YWNoX1N0cmVhbSggRlRfRmFjZSAgICAgICAgZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgRlRfT3Blbl9BcmdzKiAgcGFyYW1ldGVycyApCisgIEZUX0F0dGFjaF9TdHJlYW0oIEZUX0ZhY2UgICAgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX09wZW5fQXJncyogIHBhcmFtZXRlcnMgKQogICB7CiAgICAgRlRfU3RyZWFtICBzdHJlYW07CiAgICAgRlRfRXJyb3IgICBlcnJvcjsKQEAgLTMyMDEsMzQgKzMyOTIsNDkgQEAKICAgICAgIHNjYWxlZF9oID0gRlRfUkVRVUVTVF9IRUlHSFQoIHJlcSApOwogCiAgICAgICAvKiBkZXRlcm1pbmUgc2NhbGVzICovCisgICAgICBpZiAoIHJlcS0+aGVpZ2h0IHx8ICFyZXEtPndpZHRoICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBoID09IDAgKQorICAgICAgICB7CisgICAgICAgICAgRlRfRVJST1IoKCAiRlRfUmVxdWVzdF9NZXRyaWNzOiBEaXZpZGUgYnkgemVyb1xuIiApKTsKKyAgICAgICAgICBlcnJvciA9IEZUX0VSUiggRGl2aWRlX0J5X1plcm8gKTsKKyAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgIH0KKworICAgICAgICBtZXRyaWNzLT55X3NjYWxlID0gRlRfRGl2Rml4KCBzY2FsZWRfaCwgaCApOworICAgICAgfQorCiAgICAgICBpZiAoIHJlcS0+d2lkdGggKQogICAgICAgeworICAgICAgICBpZiAoIHcgPT0gMCApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9FUlJPUigoICJGVF9SZXF1ZXN0X01ldHJpY3M6IERpdmlkZSBieSB6ZXJvXG4iICkpOworICAgICAgICAgIGVycm9yID0gRlRfRVJSKCBEaXZpZGVfQnlfWmVybyApOworICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgfQorCiAgICAgICAgIG1ldHJpY3MtPnhfc2NhbGUgPSBGVF9EaXZGaXgoIHNjYWxlZF93LCB3ICk7Ci0KLSAgICAgICAgaWYgKCByZXEtPmhlaWdodCApCi0gICAgICAgIHsKLSAgICAgICAgICBtZXRyaWNzLT55X3NjYWxlID0gRlRfRGl2Rml4KCBzY2FsZWRfaCwgaCApOwotCi0gICAgICAgICAgaWYgKCByZXEtPnR5cGUgPT0gRlRfU0laRV9SRVFVRVNUX1RZUEVfQ0VMTCApCi0gICAgICAgICAgewotICAgICAgICAgICAgaWYgKCBtZXRyaWNzLT55X3NjYWxlID4gbWV0cmljcy0+eF9zY2FsZSApCi0gICAgICAgICAgICAgIG1ldHJpY3MtPnlfc2NhbGUgPSBtZXRyaWNzLT54X3NjYWxlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICBtZXRyaWNzLT54X3NjYWxlID0gbWV0cmljcy0+eV9zY2FsZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgbWV0cmljcy0+eV9zY2FsZSA9IG1ldHJpY3MtPnhfc2NhbGU7Ci0gICAgICAgICAgc2NhbGVkX2ggPSBGVF9NdWxEaXYoIHNjYWxlZF93LCBoLCB3ICk7Ci0gICAgICAgIH0KICAgICAgIH0KICAgICAgIGVsc2UKICAgICAgIHsKLSAgICAgICAgbWV0cmljcy0+eF9zY2FsZSA9IG1ldHJpY3MtPnlfc2NhbGUgPSBGVF9EaXZGaXgoIHNjYWxlZF9oLCBoICk7CisgICAgICAgIG1ldHJpY3MtPnhfc2NhbGUgPSBtZXRyaWNzLT55X3NjYWxlOwogICAgICAgICBzY2FsZWRfdyA9IEZUX011bERpdiggc2NhbGVkX2gsIHcsIGggKTsKICAgICAgIH0KIAorICAgICAgaWYgKCAhcmVxLT5oZWlnaHQgKQorICAgICAgeworICAgICAgICBtZXRyaWNzLT55X3NjYWxlID0gbWV0cmljcy0+eF9zY2FsZTsKKyAgICAgICAgc2NhbGVkX2ggPSBGVF9NdWxEaXYoIHNjYWxlZF93LCBoLCB3ICk7CisgICAgICB9CisKKyAgICAgIGlmICggcmVxLT50eXBlID09IEZUX1NJWkVfUkVRVUVTVF9UWVBFX0NFTEwgKQorICAgICAgeworICAgICAgICBpZiAoIG1ldHJpY3MtPnlfc2NhbGUgPiBtZXRyaWNzLT54X3NjYWxlICkKKyAgICAgICAgICBtZXRyaWNzLT55X3NjYWxlID0gbWV0cmljcy0+eF9zY2FsZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIG1ldHJpY3MtPnhfc2NhbGUgPSBtZXRyaWNzLT55X3NjYWxlOworICAgICAgfQorCiAgIENhbGN1bGF0ZV9QcGVtOgogICAgICAgLyogY2FsY3VsYXRlIHRoZSBwcGVtcyAqLwogICAgICAgaWYgKCByZXEtPnR5cGUgIT0gRlRfU0laRV9SRVFVRVNUX1RZUEVfTk9NSU5BTCApCkBAIC0zMzAyLDE1ICszNDA4LDE5IEBACiAKIAogICAgICAgRlRfVFJBQ0U1KCggIiAgeCBzY2FsZTogJWxkICglZilcbiIsCi0gICAgICAgICAgICAgICAgICBtZXRyaWNzLT54X3NjYWxlLCBtZXRyaWNzLT54X3NjYWxlIC8gNjU1MzYuMCApKTsKKyAgICAgICAgICAgICAgICAgIG1ldHJpY3MtPnhfc2NhbGUsIChkb3VibGUpbWV0cmljcy0+eF9zY2FsZSAvIDY1NTM2ICkpOwogICAgICAgRlRfVFJBQ0U1KCggIiAgeSBzY2FsZTogJWxkICglZilcbiIsCi0gICAgICAgICAgICAgICAgICBtZXRyaWNzLT55X3NjYWxlLCBtZXRyaWNzLT55X3NjYWxlIC8gNjU1MzYuMCApKTsKLSAgICAgIEZUX1RSQUNFNSgoICIgIGFzY2VuZGVyOiAlZlxuIiwgICAgbWV0cmljcy0+YXNjZW5kZXIgLyA2NC4wICkpOwotICAgICAgRlRfVFJBQ0U1KCggIiAgZGVzY2VuZGVyOiAlZlxuIiwgICBtZXRyaWNzLT5kZXNjZW5kZXIgLyA2NC4wICkpOwotICAgICAgRlRfVFJBQ0U1KCggIiAgaGVpZ2h0OiAlZlxuIiwgICAgICBtZXRyaWNzLT5oZWlnaHQgLyA2NC4wICkpOwotICAgICAgRlRfVFJBQ0U1KCggIiAgbWF4IGFkdmFuY2U6ICVmXG4iLCBtZXRyaWNzLT5tYXhfYWR2YW5jZSAvIDY0LjAgKSk7Ci0gICAgICBGVF9UUkFDRTUoKCAiICB4IHBwZW06ICVkXG4iLCAgICAgIG1ldHJpY3MtPnhfcHBlbSApKTsKLSAgICAgIEZUX1RSQUNFNSgoICIgIHkgcHBlbTogJWRcbiIsICAgICAgbWV0cmljcy0+eV9wcGVtICkpOworICAgICAgICAgICAgICAgICAgbWV0cmljcy0+eV9zY2FsZSwgKGRvdWJsZSltZXRyaWNzLT55X3NjYWxlIC8gNjU1MzYgKSk7CisgICAgICBGVF9UUkFDRTUoKCAiICBhc2NlbmRlcjogJWZcbiIsCisgICAgICAgICAgICAgICAgICAoZG91YmxlKW1ldHJpY3MtPmFzY2VuZGVyIC8gNjQgKSk7CisgICAgICBGVF9UUkFDRTUoKCAiICBkZXNjZW5kZXI6ICVmXG4iLAorICAgICAgICAgICAgICAgICAgKGRvdWJsZSltZXRyaWNzLT5kZXNjZW5kZXIgLyA2NCApKTsKKyAgICAgIEZUX1RSQUNFNSgoICIgIGhlaWdodDogJWZcbiIsCisgICAgICAgICAgICAgICAgICAoZG91YmxlKW1ldHJpY3MtPmhlaWdodCAvIDY0ICkpOworICAgICAgRlRfVFJBQ0U1KCggIiAgbWF4IGFkdmFuY2U6ICVmXG4iLAorICAgICAgICAgICAgICAgICAgKGRvdWJsZSltZXRyaWNzLT5tYXhfYWR2YW5jZSAvIDY0ICkpOworICAgICAgRlRfVFJBQ0U1KCggIiAgeCBwcGVtOiAlZFxuIiwgbWV0cmljcy0+eF9wcGVtICkpOworICAgICAgRlRfVFJBQ0U1KCggIiAgeSBwcGVtOiAlZFxuIiwgbWV0cmljcy0+eV9wcGVtICkpOwogICAgIH0KICNlbmRpZgogCkBAIC0zMzgyLDE1ICszNDkyLDE5IEBACiAKIAogICAgICAgRlRfVFJBQ0U1KCggIiAgeCBzY2FsZTogJWxkICglZilcbiIsCi0gICAgICAgICAgICAgICAgICBtZXRyaWNzLT54X3NjYWxlLCBtZXRyaWNzLT54X3NjYWxlIC8gNjU1MzYuMCApKTsKKyAgICAgICAgICAgICAgICAgIG1ldHJpY3MtPnhfc2NhbGUsIChkb3VibGUpbWV0cmljcy0+eF9zY2FsZSAvIDY1NTM2ICkpOwogICAgICAgRlRfVFJBQ0U1KCggIiAgeSBzY2FsZTogJWxkICglZilcbiIsCi0gICAgICAgICAgICAgICAgICBtZXRyaWNzLT55X3NjYWxlLCBtZXRyaWNzLT55X3NjYWxlIC8gNjU1MzYuMCApKTsKLSAgICAgIEZUX1RSQUNFNSgoICIgIGFzY2VuZGVyOiAlZlxuIiwgICAgbWV0cmljcy0+YXNjZW5kZXIgLyA2NC4wICkpOwotICAgICAgRlRfVFJBQ0U1KCggIiAgZGVzY2VuZGVyOiAlZlxuIiwgICBtZXRyaWNzLT5kZXNjZW5kZXIgLyA2NC4wICkpOwotICAgICAgRlRfVFJBQ0U1KCggIiAgaGVpZ2h0OiAlZlxuIiwgICAgICBtZXRyaWNzLT5oZWlnaHQgLyA2NC4wICkpOwotICAgICAgRlRfVFJBQ0U1KCggIiAgbWF4IGFkdmFuY2U6ICVmXG4iLCBtZXRyaWNzLT5tYXhfYWR2YW5jZSAvIDY0LjAgKSk7Ci0gICAgICBGVF9UUkFDRTUoKCAiICB4IHBwZW06ICVkXG4iLCAgICAgIG1ldHJpY3MtPnhfcHBlbSApKTsKLSAgICAgIEZUX1RSQUNFNSgoICIgIHkgcHBlbTogJWRcbiIsICAgICAgbWV0cmljcy0+eV9wcGVtICkpOworICAgICAgICAgICAgICAgICAgbWV0cmljcy0+eV9zY2FsZSwgKGRvdWJsZSltZXRyaWNzLT55X3NjYWxlIC8gNjU1MzYgKSk7CisgICAgICBGVF9UUkFDRTUoKCAiICBhc2NlbmRlcjogJWZcbiIsCisgICAgICAgICAgICAgICAgICAoZG91YmxlKW1ldHJpY3MtPmFzY2VuZGVyIC8gNjQgKSk7CisgICAgICBGVF9UUkFDRTUoKCAiICBkZXNjZW5kZXI6ICVmXG4iLAorICAgICAgICAgICAgICAgICAgKGRvdWJsZSltZXRyaWNzLT5kZXNjZW5kZXIgLyA2NCApKTsKKyAgICAgIEZUX1RSQUNFNSgoICIgIGhlaWdodDogJWZcbiIsCisgICAgICAgICAgICAgICAgICAoZG91YmxlKW1ldHJpY3MtPmhlaWdodCAvIDY0ICkpOworICAgICAgRlRfVFJBQ0U1KCggIiAgbWF4IGFkdmFuY2U6ICVmXG4iLAorICAgICAgICAgICAgICAgICAgKGRvdWJsZSltZXRyaWNzLT5tYXhfYWR2YW5jZSAvIDY0ICkpOworICAgICAgRlRfVFJBQ0U1KCggIiAgeCBwcGVtOiAlZFxuIiwgbWV0cmljcy0+eF9wcGVtICkpOworICAgICAgRlRfVFJBQ0U1KCggIiAgeSBwcGVtOiAlZFxuIiwgbWV0cmljcy0+eV9wcGVtICkpOwogICAgIH0KICNlbmRpZgogCkBAIC00NDg2LDcgKzQ2MDAsNyBAQAogICAgICAgcmVuZGVyLT5nbHlwaF9mb3JtYXQgPSBjbGF6ei0+Z2x5cGhfZm9ybWF0OwogCiAgICAgICAvKiBhbGxvY2F0ZSByYXN0ZXIgb2JqZWN0IGlmIG5lZWRlZCAqLwotICAgICAgaWYgKCBjbGF6ei0+cmFzdGVyX2NsYXNzLT5yYXN0ZXJfbmV3ICkKKyAgICAgIGlmICggY2xhenotPnJhc3Rlcl9jbGFzcyAmJiBjbGF6ei0+cmFzdGVyX2NsYXNzLT5yYXN0ZXJfbmV3ICkKICAgICAgIHsKICAgICAgICAgZXJyb3IgPSBjbGF6ei0+cmFzdGVyX2NsYXNzLT5yYXN0ZXJfbmV3KCBtZW1vcnksICZyZW5kZXItPnJhc3RlciApOwogICAgICAgICBpZiAoIGVycm9yICkKQEAgLTQ0OTYsNiArNDYxMCwxMSBAQAogICAgICAgICByZW5kZXItPnJlbmRlciAgICAgICAgPSBjbGF6ei0+cmVuZGVyX2dseXBoOwogICAgICAgfQogCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9TVkcKKyAgICAgIGlmICggY2xhenotPmdseXBoX2Zvcm1hdCA9PSBGVF9HTFlQSF9GT1JNQVRfU1ZHICkKKyAgICAgICAgcmVuZGVyLT5yZW5kZXIgPSBjbGF6ei0+cmVuZGVyX2dseXBoOworI2VuZGlmCisKICAgICAgIC8qIGFkZCB0byBsaXN0ICovCiAgICAgICBub2RlLT5kYXRhID0gbW9kdWxlOwogICAgICAgRlRfTGlzdF9BZGQoICZsaWJyYXJ5LT5yZW5kZXJlcnMsIG5vZGUgKTsKQEAgLTU3NDEsNyArNTg2MCw3IEBACiAgICAgU0ZOVF9TZXJ2aWNlICBzZm50OwogCiAKLSAgICBpZiAoICFmYWNlIHx8ICFwYWludCB8fCAhcGFpbnQgKQorICAgIGlmICggIWZhY2UgfHwgIXBhaW50ICkKICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCAhRlRfSVNfU0ZOVCggZmFjZSApICkKZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2Z0b3R2YWwuYyBiL3NyYy9iYXNlL2Z0b3R2YWwuYwppbmRleCAwZjc0OGQwLi4xOTJlMTJhIDEwMDY0NAotLS0gYS9zcmMvYmFzZS9mdG90dmFsLmMKKysrIGIvc3JjL2Jhc2UvZnRvdHZhbC5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgQVBJIGZvciB2YWxpZGF0aW5nIE9wZW5UeXBlIHRhYmxlcyAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvZnRvdXRsbi5jIGIvc3JjL2Jhc2UvZnRvdXRsbi5jCmluZGV4IDk4YzZjYTEuLjMwZmYyMWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYXNlL2Z0b3V0bG4uYworKysgYi9zcmMvYmFzZS9mdG91dGxuLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBvdXRsaW5lIG1hbmFnZW1lbnQgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTEzMCw3ICsxMzAsNyBAQAogICAgICAgfQogCiAgICAgICBGVF9UUkFDRTUoKCAiICBtb3ZlIHRvICglLjJmLCAlLjJmKVxuIiwKLSAgICAgICAgICAgICAgICAgIHZfc3RhcnQueCAvIDY0LjAsIHZfc3RhcnQueSAvIDY0LjAgKSk7CisgICAgICAgICAgICAgICAgICAoZG91YmxlKXZfc3RhcnQueCAvIDY0LCAoZG91YmxlKXZfc3RhcnQueSAvIDY0ICkpOwogICAgICAgZXJyb3IgPSBmdW5jX2ludGVyZmFjZS0+bW92ZV90byggJnZfc3RhcnQsIHVzZXIgKTsKICAgICAgIGlmICggZXJyb3IgKQogICAgICAgICBnb3RvIEV4aXQ7CkBAIC0xNTIsNyArMTUyLDcgQEAKICAgICAgICAgICAgIHZlYy55ID0gU0NBTEVEKCBwb2ludC0+eSApOwogCiAgICAgICAgICAgICBGVF9UUkFDRTUoKCAiICBsaW5lIHRvICglLjJmLCAlLjJmKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZlYy54IC8gNjQuMCwgdmVjLnkgLyA2NC4wICkpOworICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl2ZWMueCAvIDY0LCAoZG91YmxlKXZlYy55IC8gNjQgKSk7CiAgICAgICAgICAgICBlcnJvciA9IGZ1bmNfaW50ZXJmYWNlLT5saW5lX3RvKCAmdmVjLCB1c2VyICk7CiAgICAgICAgICAgICBpZiAoIGVycm9yICkKICAgICAgICAgICAgICAgZ290byBFeGl0OwpAQCAtMTgxLDggKzE4MSwxMCBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICBGVF9UUkFDRTUoKCAiICBjb25pYyB0byAoJS4yZiwgJS4yZikiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIgd2l0aCBjb250cm9sICglLjJmLCAlLjJmKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjLnggLyA2NC4wLCB2ZWMueSAvIDY0LjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHZfY29udHJvbC54IC8gNjQuMCwgdl9jb250cm9sLnkgLyA2NC4wICkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXZlYy54IC8gNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdmVjLnkgLyA2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl2X2NvbnRyb2wueCAvIDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXZfY29udHJvbC55IC8gNjQgKSk7CiAgICAgICAgICAgICAgIGVycm9yID0gZnVuY19pbnRlcmZhY2UtPmNvbmljX3RvKCAmdl9jb250cm9sLCAmdmVjLCB1c2VyICk7CiAgICAgICAgICAgICAgIGlmICggZXJyb3IgKQogICAgICAgICAgICAgICAgIGdvdG8gRXhpdDsKQEAgLTE5Nyw4ICsxOTksMTAgQEAKIAogICAgICAgICAgICAgRlRfVFJBQ0U1KCggIiAgY29uaWMgdG8gKCUuMmYsICUuMmYpIgogICAgICAgICAgICAgICAgICAgICAgICAgIiB3aXRoIGNvbnRyb2wgKCUuMmYsICUuMmYpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgdl9taWRkbGUueCAvIDY0LjAsIHZfbWlkZGxlLnkgLyA2NC4wLAotICAgICAgICAgICAgICAgICAgICAgICAgdl9jb250cm9sLnggLyA2NC4wLCB2X2NvbnRyb2wueSAvIDY0LjAgKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXZfbWlkZGxlLnggLyA2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdl9taWRkbGUueSAvIDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl2X2NvbnRyb2wueCAvIDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl2X2NvbnRyb2wueSAvIDY0ICkpOwogICAgICAgICAgICAgZXJyb3IgPSBmdW5jX2ludGVyZmFjZS0+Y29uaWNfdG8oICZ2X2NvbnRyb2wsICZ2X21pZGRsZSwgdXNlciApOwogICAgICAgICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgICAgICAgIGdvdG8gRXhpdDsKQEAgLTIwOSw4ICsyMTMsMTAgQEAKIAogICAgICAgICAgIEZUX1RSQUNFNSgoICIgIGNvbmljIHRvICglLjJmLCAlLjJmKSIKICAgICAgICAgICAgICAgICAgICAgICAiIHdpdGggY29udHJvbCAoJS4yZiwgJS4yZilcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgdl9zdGFydC54IC8gNjQuMCwgdl9zdGFydC55IC8gNjQuMCwKLSAgICAgICAgICAgICAgICAgICAgICB2X2NvbnRyb2wueCAvIDY0LjAsIHZfY29udHJvbC55IC8gNjQuMCApKTsKKyAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXZfc3RhcnQueCAvIDY0LAorICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdl9zdGFydC55IC8gNjQsCisgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl2X2NvbnRyb2wueCAvIDY0LAorICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdl9jb250cm9sLnkgLyA2NCApKTsKICAgICAgICAgICBlcnJvciA9IGZ1bmNfaW50ZXJmYWNlLT5jb25pY190byggJnZfY29udHJvbCwgJnZfc3RhcnQsIHVzZXIgKTsKICAgICAgICAgICBnb3RvIENsb3NlOwogCkBAIC0yNDIsOSArMjQ4LDEyIEBACiAKICAgICAgICAgICAgICAgRlRfVFJBQ0U1KCggIiAgY3ViaWMgdG8gKCUuMmYsICUuMmYpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiIHdpdGggY29udHJvbHMgKCUuMmYsICUuMmYpIGFuZCAoJS4yZiwgJS4yZilcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHZlYy54IC8gNjQuMCwgdmVjLnkgLyA2NC4wLAotICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWMxLnggLyA2NC4wLCB2ZWMxLnkgLyA2NC4wLAotICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWMyLnggLyA2NC4wLCB2ZWMyLnkgLyA2NC4wICkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXZlYy54IC8gNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdmVjLnkgLyA2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl2ZWMxLnggLyA2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl2ZWMxLnkgLyA2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl2ZWMyLnggLyA2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl2ZWMyLnkgLyA2NCApKTsKICAgICAgICAgICAgICAgZXJyb3IgPSBmdW5jX2ludGVyZmFjZS0+Y3ViaWNfdG8oICZ2ZWMxLCAmdmVjMiwgJnZlYywgdXNlciApOwogICAgICAgICAgICAgICBpZiAoIGVycm9yICkKICAgICAgICAgICAgICAgICBnb3RvIEV4aXQ7CkBAIC0yNTMsOSArMjYyLDEyIEBACiAKICAgICAgICAgICAgIEZUX1RSQUNFNSgoICIgIGN1YmljIHRvICglLjJmLCAlLjJmKSIKICAgICAgICAgICAgICAgICAgICAgICAgICIgd2l0aCBjb250cm9scyAoJS4yZiwgJS4yZikgYW5kICglLjJmLCAlLjJmKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZfc3RhcnQueCAvIDY0LjAsIHZfc3RhcnQueSAvIDY0LjAsCi0gICAgICAgICAgICAgICAgICAgICAgICB2ZWMxLnggLyA2NC4wLCB2ZWMxLnkgLyA2NC4wLAotICAgICAgICAgICAgICAgICAgICAgICAgdmVjMi54IC8gNjQuMCwgdmVjMi55IC8gNjQuMCApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdl9zdGFydC54IC8gNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXZfc3RhcnQueSAvIDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl2ZWMxLnggLyA2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdmVjMS55IC8gNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXZlYzIueCAvIDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl2ZWMyLnkgLyA2NCApKTsKICAgICAgICAgICAgIGVycm9yID0gZnVuY19pbnRlcmZhY2UtPmN1YmljX3RvKCAmdmVjMSwgJnZlYzIsICZ2X3N0YXJ0LCB1c2VyICk7CiAgICAgICAgICAgICBnb3RvIENsb3NlOwogICAgICAgICAgIH0KQEAgLTI2NCw3ICsyNzYsNyBAQAogCiAgICAgICAvKiBjbG9zZSB0aGUgY29udG91ciB3aXRoIGEgbGluZSBzZWdtZW50ICovCiAgICAgICBGVF9UUkFDRTUoKCAiICBsaW5lIHRvICglLjJmLCAlLjJmKVxuIiwKLSAgICAgICAgICAgICAgICAgIHZfc3RhcnQueCAvIDY0LjAsIHZfc3RhcnQueSAvIDY0LjAgKSk7CisgICAgICAgICAgICAgICAgICAoZG91YmxlKXZfc3RhcnQueCAvIDY0LCAoZG91YmxlKXZfc3RhcnQueSAvIDY0ICkpOwogICAgICAgZXJyb3IgPSBmdW5jX2ludGVyZmFjZS0+bGluZV90byggJnZfc3RhcnQsIHVzZXIgKTsKIAogICAgIENsb3NlOgpkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvZnRwYXRlbnQuYyBiL3NyYy9iYXNlL2Z0cGF0ZW50LmMKaW5kZXggY2QxOTJkMy4uY2I1ZWZhZCAxMDA2NDQKLS0tIGEvc3JjL2Jhc2UvZnRwYXRlbnQuYworKysgYi9zcmMvYmFzZS9mdHBhdGVudC5jCkBAIC01LDcgKzUsNyBAQAogICogICBGcmVlVHlwZSBBUEkgZm9yIGNoZWNraW5nIHBhdGVudGVkIFRydWVUeXBlIGJ5dGVjb2RlIGluc3RydWN0aW9ucwogICogICAoYm9keSkuICBPYnNvbGV0ZSwgcmV0YWluZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvZnRwZnIuYyBiL3NyYy9iYXNlL2Z0cGZyLmMKaW5kZXggNWFmZDVhMS4uMzc4Mzg1YSAxMDA2NDQKLS0tIGEvc3JjL2Jhc2UvZnRwZnIuYworKysgYi9zcmMvYmFzZS9mdHBmci5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgQVBJIGZvciBhY2Nlc3NpbmcgUEZSLXNwZWNpZmljIGRhdGEgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2Z0cHNwcm9wLmMgYi9zcmMvYmFzZS9mdHBzcHJvcC5jCmluZGV4IDM2NTVhZTkuLmNlZmRmNDggMTAwNjQ0Ci0tLSBhL3NyYy9iYXNlL2Z0cHNwcm9wLmMKKysrIGIvc3JjL2Jhc2UvZnRwc3Byb3AuYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgR2V0IGFuZCBzZXQgcHJvcGVydGllcyBvZiBQb3N0U2NyaXB0IGRyaXZlcnMgKGJvZHkpLgogICogICBTZWUgYGZ0ZHJpdmVyLmgnIGZvciBhdmFpbGFibGUgcHJvcGVydGllcy4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvYmFzZS9mdHJmb3JrLmMgYi9zcmMvYmFzZS9mdHJmb3JrLmMKaW5kZXggY2I3ZTk0ZC4uMmFiNDMwMSAxMDA2NDQKLS0tIGEvc3JjL2Jhc2UvZnRyZm9yay5jCisrKyBiL3NyYy9iYXNlL2Z0cmZvcmsuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEVtYmVkZGVkIHJlc291cmNlIGZvcmtzIGFjY2Vzc29yIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICAqIE1hc2F0YWtlIFlBTUFUTyBhbmQgUmVkaGF0IEsuSy4KICAqCiAgKiBGVF9SYWNjZXNzX0dldF9IZWFkZXJJbmZvKCkgYW5kIHJhY2Nlc3NfZ3Vlc3NfZGFyd2luX2hmc3BsdXMoKSBhcmUKQEAgLTQwMiwxNyArNDAyLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKnJlc3VsdF9vZmZzZXQgKTsKIAogCi0gIENPTlNUX0ZUX1JGT1JLX1JVTEVfQVJSQVlfQkVHSU4oZnRfcmFjY2Vzc19ndWVzc190YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdF9yYWNjZXNzX2d1ZXNzX3JlYykKLSAgQ09OU1RfRlRfUkZPUktfUlVMRV9BUlJBWV9FTlRSWShhcHBsZV9kb3VibGUsICAgICAgYXBwbGVfZG91YmxlKQotICBDT05TVF9GVF9SRk9SS19SVUxFX0FSUkFZX0VOVFJZKGFwcGxlX3NpbmdsZSwgICAgICBhcHBsZV9zaW5nbGUpCi0gIENPTlNUX0ZUX1JGT1JLX1JVTEVfQVJSQVlfRU5UUlkoZGFyd2luX3Vmc19leHBvcnQsIGRhcndpbl91ZnNfZXhwb3J0KQotICBDT05TVF9GVF9SRk9SS19SVUxFX0FSUkFZX0VOVFJZKGRhcndpbl9uZXd2ZnMsICAgICBkYXJ3aW5fbmV3dmZzKQotICBDT05TVF9GVF9SRk9SS19SVUxFX0FSUkFZX0VOVFJZKGRhcndpbl9oZnNwbHVzLCAgICBkYXJ3aW5faGZzcGx1cykKLSAgQ09OU1RfRlRfUkZPUktfUlVMRV9BUlJBWV9FTlRSWSh2ZmF0LCAgICAgICAgICAgICAgdmZhdCkKLSAgQ09OU1RfRlRfUkZPUktfUlVMRV9BUlJBWV9FTlRSWShsaW51eF9jYXAsICAgICAgICAgbGludXhfY2FwKQotICBDT05TVF9GVF9SRk9SS19SVUxFX0FSUkFZX0VOVFJZKGxpbnV4X2RvdWJsZSwgICAgICBsaW51eF9kb3VibGUpCi0gIENPTlNUX0ZUX1JGT1JLX1JVTEVfQVJSQVlfRU5UUlkobGludXhfbmV0YXRhbGssICAgIGxpbnV4X25ldGF0YWxrKQorICBDT05TVF9GVF9SRk9SS19SVUxFX0FSUkFZX0JFR0lOKCBmdF9yYWNjZXNzX2d1ZXNzX3RhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnRfcmFjY2Vzc19ndWVzc19yZWMgKQorICBDT05TVF9GVF9SRk9SS19SVUxFX0FSUkFZX0VOVFJZKCBhcHBsZV9kb3VibGUsICAgICAgYXBwbGVfZG91YmxlICkKKyAgQ09OU1RfRlRfUkZPUktfUlVMRV9BUlJBWV9FTlRSWSggYXBwbGVfc2luZ2xlLCAgICAgIGFwcGxlX3NpbmdsZSApCisgIENPTlNUX0ZUX1JGT1JLX1JVTEVfQVJSQVlfRU5UUlkoIGRhcndpbl91ZnNfZXhwb3J0LCBkYXJ3aW5fdWZzX2V4cG9ydCApCisgIENPTlNUX0ZUX1JGT1JLX1JVTEVfQVJSQVlfRU5UUlkoIGRhcndpbl9uZXd2ZnMsICAgICBkYXJ3aW5fbmV3dmZzICkKKyAgQ09OU1RfRlRfUkZPUktfUlVMRV9BUlJBWV9FTlRSWSggZGFyd2luX2hmc3BsdXMsICAgIGRhcndpbl9oZnNwbHVzICkKKyAgQ09OU1RfRlRfUkZPUktfUlVMRV9BUlJBWV9FTlRSWSggdmZhdCwgICAgICAgICAgICAgIHZmYXQgKQorICBDT05TVF9GVF9SRk9SS19SVUxFX0FSUkFZX0VOVFJZKCBsaW51eF9jYXAsICAgICAgICAgbGludXhfY2FwICkKKyAgQ09OU1RfRlRfUkZPUktfUlVMRV9BUlJBWV9FTlRSWSggbGludXhfZG91YmxlLCAgICAgIGxpbnV4X2RvdWJsZSApCisgIENPTlNUX0ZUX1JGT1JLX1JVTEVfQVJSQVlfRU5UUlkoIGxpbnV4X25ldGF0YWxrLCAgICBsaW51eF9uZXRhdGFsayApCiAgIENPTlNUX0ZUX1JGT1JLX1JVTEVfQVJSQVlfRU5ECiAKIApAQCAtODY4LDkgKzg2OCw3IEBACiAgICAgY29uc3QgY2hhciogIHRtcDsKICAgICBjb25zdCBjaGFyKiAgc2xhc2g7CiAgICAgc2l6ZV90ICAgICAgIG5ld19sZW5ndGg7Ci0gICAgRlRfRXJyb3IgICAgIGVycm9yID0gRlRfRXJyX09rOwotCi0gICAgRlRfVU5VU0VEKCBlcnJvciApOworICAgIEZUX0Vycm9yICAgICBlcnJvcjsKIAogCiAgICAgbmV3X2xlbmd0aCA9IGZ0X3N0cmxlbiggb3JpZ2luYWxfbmFtZSApICsgZnRfc3RybGVuKCBpbnNlcnRpb24gKTsKZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2Z0c25hbWVzLmMgYi9zcmMvYmFzZS9mdHNuYW1lcy5jCmluZGV4IDQ0ZGJhNjYuLjE5MTdhM2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYXNlL2Z0c25hbWVzLmMKKysrIGIvc3JjL2Jhc2UvZnRzbmFtZXMuYwpAQCAtNyw3ICs3LDcgQEAKICAqCiAgKiAgIFRoaXMgaXMgX25vdF8gdXNlZCB0byByZXRyaWV2ZSBnbHlwaCBuYW1lcyEKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvYmFzZS9mdHN0cmVhbS5jIGIvc3JjL2Jhc2UvZnRzdHJlYW0uYwppbmRleCA1OTkyOTk4Li4wNWM1NjM3IDEwMDY0NAotLS0gYS9zcmMvYmFzZS9mdHN0cmVhbS5jCisrKyBiL3NyYy9iYXNlL2Z0c3RyZWFtLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBJL08gc3RyZWFtIHN1cHBvcnQgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTI2MSw3ICsyNjEsNyBAQAogICAgICAgfQogCiAjaWZkZWYgRlRfREVCVUdfTUVNT1JZCi0gICAgICAvKiBhc3N1bWUgX2Z0X2RlYnVnX2ZpbGUgYW5kIF9mdF9kZWJ1Z19saW5lbm8gYXJlIGFscmVhZHkgc2V0ICovCisgICAgICAvKiBhc3N1bWUgYGZ0X2RlYnVnX2ZpbGVfYCBhbmQgYGZ0X2RlYnVnX2xpbmVub19gIGFyZSBhbHJlYWR5IHNldCAqLwogICAgICAgc3RyZWFtLT5iYXNlID0gKHVuc2lnbmVkIGNoYXIqKWZ0X21lbV9xYWxsb2MoIG1lbW9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfTG9uZyljb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3IgKTsKQEAgLTM2MywxMSArMzYzLDExIEBACiAgIH0KIAogCi0gIEZUX0JBU0VfREVGKCBGVF9VU2hvcnQgKQorICBGVF9CQVNFX0RFRiggRlRfVUludDE2ICkKICAgRlRfU3RyZWFtX0dldFVTaG9ydCggRlRfU3RyZWFtICBzdHJlYW0gKQogICB7CiAgICAgRlRfQnl0ZSogICBwOwotICAgIEZUX1VTaG9ydCAgcmVzdWx0OworICAgIEZUX1VJbnQxNiAgcmVzdWx0OwogCiAKICAgICBGVF9BU1NFUlQoIHN0cmVhbSAmJiBzdHJlYW0tPmN1cnNvciApOwpAQCAtMzgyLDExICszODIsMTEgQEAKICAgfQogCiAKLSAgRlRfQkFTRV9ERUYoIEZUX1VTaG9ydCApCisgIEZUX0JBU0VfREVGKCBGVF9VSW50MTYgKQogICBGVF9TdHJlYW1fR2V0VVNob3J0TEUoIEZUX1N0cmVhbSAgc3RyZWFtICkKICAgewogICAgIEZUX0J5dGUqICAgcDsKLSAgICBGVF9VU2hvcnQgIHJlc3VsdDsKKyAgICBGVF9VSW50MTYgIHJlc3VsdDsKIAogCiAgICAgRlRfQVNTRVJUKCBzdHJlYW0gJiYgc3RyZWFtLT5jdXJzb3IgKTsKQEAgLTQwMSwxMSArNDAxLDExIEBACiAgIH0KIAogCi0gIEZUX0JBU0VfREVGKCBGVF9VTG9uZyApCisgIEZUX0JBU0VfREVGKCBGVF9VSW50MzIgKQogICBGVF9TdHJlYW1fR2V0VU9mZnNldCggRlRfU3RyZWFtICBzdHJlYW0gKQogICB7CiAgICAgRlRfQnl0ZSogIHA7Ci0gICAgRlRfVUxvbmcgIHJlc3VsdDsKKyAgICBGVF9VSW50MzIgcmVzdWx0OwogCiAKICAgICBGVF9BU1NFUlQoIHN0cmVhbSAmJiBzdHJlYW0tPmN1cnNvciApOwpAQCAtNDE5LDExICs0MTksMTEgQEAKICAgfQogCiAKLSAgRlRfQkFTRV9ERUYoIEZUX1VMb25nICkKKyAgRlRfQkFTRV9ERUYoIEZUX1VJbnQzMiApCiAgIEZUX1N0cmVhbV9HZXRVTG9uZyggRlRfU3RyZWFtICBzdHJlYW0gKQogICB7CiAgICAgRlRfQnl0ZSogIHA7Ci0gICAgRlRfVUxvbmcgIHJlc3VsdDsKKyAgICBGVF9VSW50MzIgcmVzdWx0OwogCiAKICAgICBGVF9BU1NFUlQoIHN0cmVhbSAmJiBzdHJlYW0tPmN1cnNvciApOwpAQCAtNDM3LDExICs0MzcsMTEgQEAKICAgfQogCiAKLSAgRlRfQkFTRV9ERUYoIEZUX1VMb25nICkKKyAgRlRfQkFTRV9ERUYoIEZUX1VJbnQzMiApCiAgIEZUX1N0cmVhbV9HZXRVTG9uZ0xFKCBGVF9TdHJlYW0gIHN0cmVhbSApCiAgIHsKICAgICBGVF9CeXRlKiAgcDsKLSAgICBGVF9VTG9uZyAgcmVzdWx0OworICAgIEZUX1VJbnQzMiByZXN1bHQ7CiAKIAogICAgIEZUX0FTU0VSVCggc3RyZWFtICYmIHN0cmVhbS0+Y3Vyc29yICk7CkBAIC00OTMsMTMgKzQ5MywxMyBAQAogICB9CiAKIAotICBGVF9CQVNFX0RFRiggRlRfVVNob3J0ICkKKyAgRlRfQkFTRV9ERUYoIEZUX1VJbnQxNiApCiAgIEZUX1N0cmVhbV9SZWFkVVNob3J0KCBGVF9TdHJlYW0gIHN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Vycm9yKiAgZXJyb3IgKQogICB7CiAgICAgRlRfQnl0ZSAgICByZWFkc1syXTsKICAgICBGVF9CeXRlKiAgIHA7Ci0gICAgRlRfVVNob3J0ICByZXN1bHQgPSAwOworICAgIEZUX1VJbnQxNiAgcmVzdWx0ID0gMDsKIAogCiAgICAgRlRfQVNTRVJUKCBzdHJlYW0gKTsKQEAgLTUzOCwxMyArNTM4LDEzIEBACiAgIH0KIAogCi0gIEZUX0JBU0VfREVGKCBGVF9VU2hvcnQgKQorICBGVF9CQVNFX0RFRiggRlRfVUludDE2ICkKICAgRlRfU3RyZWFtX1JlYWRVU2hvcnRMRSggRlRfU3RyZWFtICBzdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Vycm9yKiAgZXJyb3IgKQogICB7CiAgICAgRlRfQnl0ZSAgICByZWFkc1syXTsKICAgICBGVF9CeXRlKiAgIHA7Ci0gICAgRlRfVVNob3J0ICByZXN1bHQgPSAwOworICAgIEZUX1VJbnQxNiAgcmVzdWx0ID0gMDsKIAogCiAgICAgRlRfQVNTRVJUKCBzdHJlYW0gKTsKQEAgLTYyOCwxMyArNjI4LDEzIEBACiAgIH0KIAogCi0gIEZUX0JBU0VfREVGKCBGVF9VTG9uZyApCisgIEZUX0JBU0VfREVGKCBGVF9VSW50MzIgKQogICBGVF9TdHJlYW1fUmVhZFVMb25nKCBGVF9TdHJlYW0gIHN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IqICBlcnJvciApCiAgIHsKICAgICBGVF9CeXRlICAgcmVhZHNbNF07CiAgICAgRlRfQnl0ZSogIHA7Ci0gICAgRlRfVUxvbmcgIHJlc3VsdCA9IDA7CisgICAgRlRfVUludDMyIHJlc3VsdCA9IDA7CiAKIAogICAgIEZUX0FTU0VSVCggc3RyZWFtICk7CkBAIC02NzMsMTMgKzY3MywxMyBAQAogICB9CiAKIAotICBGVF9CQVNFX0RFRiggRlRfVUxvbmcgKQorICBGVF9CQVNFX0RFRiggRlRfVUludDMyICkKICAgRlRfU3RyZWFtX1JlYWRVTG9uZ0xFKCBGVF9TdHJlYW0gIHN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9FcnJvciogIGVycm9yICkKICAgewogICAgIEZUX0J5dGUgICByZWFkc1s0XTsKICAgICBGVF9CeXRlKiAgcDsKLSAgICBGVF9VTG9uZyAgcmVzdWx0ID0gMDsKKyAgICBGVF9VSW50MzIgcmVzdWx0ID0gMDsKIAogCiAgICAgRlRfQVNTRVJUKCBzdHJlYW0gKTsKZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2Z0c3Ryb2tlLmMgYi9zcmMvYmFzZS9mdHN0cm9rZS5jCmluZGV4IDM3ZTk2NDkuLmRiMzU4ZTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYXNlL2Z0c3Ryb2tlLmMKKysrIGIvc3JjL2Jhc2UvZnRzdHJva2UuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIHBhdGggc3Ryb2tlciAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvZnRzeW50aC5jIGIvc3JjL2Jhc2UvZnRzeW50aC5jCmluZGV4IDczNTY1YjEuLjZlYzI1ZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYXNlL2Z0c3ludGguYworKysgYi9zcmMvYmFzZS9mdHN5bnRoLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBzeW50aGVzaXppbmcgY29kZSBmb3IgZW1ib2xkZW5pbmcgYW5kIHNsYW50aW5nIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC00Niw2ICs0NiwxOCBAQAogICBGVF9FWFBPUlRfREVGKCB2b2lkICkKICAgRlRfR2x5cGhTbG90X09ibGlxdWUoIEZUX0dseXBoU2xvdCAgc2xvdCApCiAgIHsKKyAgICAvKiBWYWx1ZSAnMHgwMzY2QScgY29ycmVzcG9uZHMgdG8gYSBzaGVhciBhbmdsZSBvZiBhYm91dCAxMiBkZWdyZWVzLiAqLworICAgIEZUX0dseXBoU2xvdF9TbGFudCggc2xvdCwgMHgwMzY2QSwgMCApOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0c3ludGguaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIHZvaWQgKQorICBGVF9HbHlwaFNsb3RfU2xhbnQoIEZUX0dseXBoU2xvdCAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgICAgIHhzbGFudCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgICAgIHlzbGFudCApCisgIHsKICAgICBGVF9NYXRyaXggICAgdHJhbnNmb3JtOwogICAgIEZUX091dGxpbmUqICBvdXRsaW5lOwogCkBAIC02MSwxMyArNzMsMTEgQEAKIAogICAgIC8qIHdlIGRvbid0IHRvdWNoIHRoZSBhZHZhbmNlIHdpZHRoICovCiAKLSAgICAvKiBGb3IgaXRhbGljLCBzaW1wbHkgYXBwbHkgYSBzaGVhciB0cmFuc2Zvcm0sIHdpdGggYW4gYW5nbGUgKi8KLSAgICAvKiBvZiBhYm91dCAxMiBkZWdyZWVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQorICAgIC8qIEZvciBpdGFsaWMsIHNpbXBseSBhcHBseSBhIHNoZWFyIHRyYW5zZm9ybSAqLwogICAgIHRyYW5zZm9ybS54eCA9IDB4MTAwMDBMOwotICAgIHRyYW5zZm9ybS55eCA9IDB4MDAwMDBMOworICAgIHRyYW5zZm9ybS55eCA9IC15c2xhbnQ7CiAKLSAgICB0cmFuc2Zvcm0ueHkgPSAweDAzNjZBTDsKKyAgICB0cmFuc2Zvcm0ueHkgPSB4c2xhbnQ7CiAgICAgdHJhbnNmb3JtLnl5ID0gMHgxMDAwMEw7CiAKICAgICBGVF9PdXRsaW5lX1RyYW5zZm9ybSggb3V0bGluZSwgJnRyYW5zZm9ybSApOwpkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvZnRzeXN0ZW0uYyBiL3NyYy9iYXNlL2Z0c3lzdGVtLmMKaW5kZXggOWJlYjdlMi4uZmNkMjg5ZCAxMDA2NDQKLS0tIGEvc3JjL2Jhc2UvZnRzeXN0ZW0uYworKysgYi9zcmMvYmFzZS9mdHN5c3RlbS5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQU5TSS1zcGVjaWZpYyBGcmVlVHlwZSBsb3ctbGV2ZWwgc3lzdGVtIGludGVyZmFjZSAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvZnR0cmlnb24uYyBiL3NyYy9iYXNlL2Z0dHJpZ29uLmMKaW5kZXggMGNhNmQ3OC4uMmRkMmMzNCAxMDA2NDQKLS0tIGEvc3JjL2Jhc2UvZnR0cmlnb24uYworKysgYi9zcmMvYmFzZS9mdHRyaWdvbi5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgdHJpZ29ub21ldHJpYyBmdW5jdGlvbnMgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2Z0dHlwZTEuYyBiL3NyYy9iYXNlL2Z0dHlwZTEuYwppbmRleCAwZDBhZmJjLi42MzdjNWNmIDEwMDY0NAotLS0gYS9zcmMvYmFzZS9mdHR5cGUxLmMKKysrIGIvc3JjL2Jhc2UvZnR0eXBlMS5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgdXRpbGl0eSBmaWxlIGZvciBQUyBuYW1lcyBzdXBwb3J0IChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvYmFzZS9mdHV0aWwuYyBiL3NyYy9iYXNlL2Z0dXRpbC5jCmluZGV4IDMxNDJmYWUuLjYxMjA4NDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYXNlL2Z0dXRpbC5jCisrKyBiL3NyYy9iYXNlL2Z0dXRpbC5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgdXRpbGl0eSBmaWxlIGZvciBtZW1vcnkgYW5kIGxpc3QgbWFuYWdlbWVudCAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvZnR2ZXIucmMgYi9zcmMvYmFzZS9mdHZlci5yYwppbmRleCBhM2QwNWIzLi5mMTEzY2I4IDEwMDY0NAotLS0gYS9zcmMvYmFzZS9mdHZlci5yYworKysgYi9zcmMvYmFzZS9mdHZlci5yYwpAQCAtNCw3ICs0LDcgQEAKIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAgICBGcmVlVHlwZSBWRVJTSU9OSU5GTyByZXNvdXJjZSBmb3IgV2luZG93cyBETExzLiAgICAgICAgICAgICAgICAgICAgICAqLwogLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IChDKSAyMDE4LTIwMjMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLwpAQCAtMTgsOCArMTgsOCBAQAogCiAjaW5jbHVkZTx3aW5kb3dzLmg+CiAKLSNkZWZpbmUgRlRfVkVSU0lPTiAgICAgIDIsMTEsMSwwCi0jZGVmaW5lIEZUX1ZFUlNJT05fU1RSICAiMi4xMS4xIgorI2RlZmluZSBGVF9WRVJTSU9OICAgICAgMiwxMywwLDAKKyNkZWZpbmUgRlRfVkVSU0lPTl9TVFIgICIyLjEzLjAiCiAKIFZTX1ZFUlNJT05fSU5GTyAgICAgIFZFUlNJT05JTkZPCiBGSUxFVkVSU0lPTiAgICAgICAgICBGVF9WRVJTSU9OCkBAIC0zOCwxNCArMzgsMTQgQEAKIEJFR0lOCiAgIEJMT0NLICJTdHJpbmdGaWxlSW5mbyIKICAgQkVHSU4KLSAgICBCTE9DSyAiMDQwOTA0RTQiCisgICAgQkxPQ0sgIjA0MDkwNEIwIgogICAgIEJFR0lOCiAgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCAgICAgICJUaGUgRnJlZVR5cGUgUHJvamVjdCIKICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAgIkZvbnQgUmVuZGVyaW5nIExpYnJhcnkiCiAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCAgICAgIEZUX1ZFUlNJT05fU1RSCiAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAgICAgICJGcmVlVHlwZSIKICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsICAgRlRfVkVSU0lPTl9TVFIKLSAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICAgIlwyNTEgMjAwMC0yMDIxIFRoZSBGcmVlVHlwZSBQcm9qZWN0IHd3dy5mcmVldHlwZS5vcmcuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIgorICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgICBMIlx4MDBBOSAyMDAwLTIwMjMgVGhlIEZyZWVUeXBlIFByb2plY3Qgd3d3LmZyZWV0eXBlLm9yZy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4iCiAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgICAgICJmcmVldHlwZSIKICAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgRlRfRklMRU5BTUUKICAgICBFTkQKQEAgLTU2LDYgKzU2LDYgQEAKICAgICAvKiBUaGUgZm9sbG93aW5nIGxpbmUgc2hvdWxkIG9ubHkgYmUgbW9kaWZpZWQgZm9yIGxvY2FsaXplZCB2ZXJzaW9ucy4gICovCiAgICAgLyogSXQgY29uc2lzdHMgb2YgYW55IG51bWJlciBvZiBXT1JELFdPUkQgcGFpcnMsIHdpdGggZWFjaCBwYWlyICAgICAgICAqLwogICAgIC8qIGRlc2NyaWJpbmcgYSAibGFuZ3VhZ2UsY29kZXBhZ2UiIGNvbWJpbmF0aW9uIHN1cHBvcnRlZCBieSB0aGUgZmlsZS4gKi8KLSAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDQwOSwgMTI1MgorICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4NDA5LCAxMjAwCiAgIEVORAogRU5ECmRpZmYgLS1naXQgYS9zcmMvYmFzZS9mdHdpbmZudC5jIGIvc3JjL2Jhc2UvZnR3aW5mbnQuYwppbmRleCA5OGYxOTdhLi4wM2IwMjNlIDEwMDY0NAotLS0gYS9zcmMvYmFzZS9mdHdpbmZudC5jCisrKyBiL3NyYy9iYXNlL2Z0d2luZm50LmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBBUEkgZm9yIGFjY2Vzc2luZyBXaW5kb3dzIEZOVCBzcGVjaWZpYyBpbmZvIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvYmFzZS9ydWxlcy5tayBiL3NyYy9iYXNlL3J1bGVzLm1rCmluZGV4IDUzMjg5YWUuLmI3ZGU5YjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYXNlL3J1bGVzLm1rCisrKyBiL3NyYy9iYXNlL3J1bGVzLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvc3JjL2JkZi9SRUFETUUgYi9zcmMvYmRmL1JFQURNRQppbmRleCA5OTZhYzJkLi5kN2NiOGMxIDEwMDY0NAotLS0gYS9zcmMvYmRmL1JFQURNRQorKysgYi9zcmMvYmRmL1JFQURNRQpAQCAtMTMsNyArMTMsNyBAQAogQWRvYmUgU3BlY2lmaWNhdGlvbiBWIDIuMi4gIFRoZSBzcGVjaWZpY2F0aW9uIG9mIHRoZSBCREYgZm9udCBmb3JtYXQgaXMKIGF2YWlsYWJsZSBmcm9tIEFkb2JlJ3Mgd2ViIHNpdGU6CiAKLSAgaHR0cHM6Ly93d3cuYWRvYmUuY29tL2NvbnRlbnQvZGFtL2Fjb20vZW4vZGV2bmV0L2ZvbnQvcGRmcy81MDA1LkJERl9TcGVjLnBkZgorICBodHRwczovL2Fkb2JlLXR5cGUtdG9vbHMuZ2l0aHViLmlvL2ZvbnQtdGVjaC1ub3Rlcy9wZGZzLzUwMDUuQkRGX1NwZWMucGRmCiAKIE1hbnkgZ29vZCBiaXRtYXAgZm9udHMgaW4gYmRmIGZvcm1hdCBjb21lIHdpdGggWEZyZWU4NiAod3d3LlhGcmVlODYub3JnKS4KIFRoZXkgZG8gbm90IGRlZmluZSB2ZXJ0aWNhbCBtZXRyaWNzLCBiZWNhdXNlIHRoZSBYIENvbnNvcnRpdW0gQkRGCkBAIC0yMyw2ICsyMywxMCBAQAogRW5jb2RpbmdzCiAqKioqKioqKioKIAorW1RoaXMgc2VjdGlvbiBpcyBvdXQgb2YgZGF0ZSwgcmV0YWluZWQgZm9yIGhpc3RvcmljYWwgcmVhc29ucy4gIEJERgorIHByb3BlcnRpZXMgY2FuIGJlIHJldHJpZXZlZCB3aXRoIGBGVF9HZXRfQkRGX1Byb3BlcnR5YCwgY2hhcmFjdGVyIHNldCBJRAorIHZhbHVlcyB3aXRoIGBGVF9HZXRfQkRGX0NoYXJzZXRfSURgLl0KKwogVGhlIHZhcmlldHkgb2YgZW5jb2RpbmdzIHRoYXQgYWNjb21wYW5pZXMgYmRmIGZvbnRzIGFwcGVhcnMgdG8gZW5jb21wYXNzIHRoZQogc21hbGwgc2V0IGRlZmluZWQgaW4gZnJlZXR5cGUuaC4gIE9uIHRoZSBvdGhlciBoYW5kLCB0d28gcHJvcGVydGllcyB0aGF0CiBzcGVjaWZ5IGVuY29kaW5nIGFuZCByZWdpc3RyeSBhcmUgdXN1YWxseSBkZWZpbmVkIGluIGJkZiBmb250cy4KZGlmZiAtLWdpdCBhL3NyYy9iZGYvYmRmZHJpdnIuYyBiL3NyYy9iZGYvYmRmZHJpdnIuYwppbmRleCBlYjczYTdjLi5kN2U4ZTBlIDEwMDY0NAotLS0gYS9zcmMvYmRmL2JkZmRyaXZyLmMKKysrIGIvc3JjL2JkZi9iZGZkcml2ci5jCkBAIC05MiwyNCArOTIsMTggQEAKICAgewogICAgIEJERl9DTWFwICAgICAgICAgIGNtYXAgICAgICA9IChCREZfQ01hcCliZGZjbWFwOwogICAgIEJERl9lbmNvZGluZ19lbCogIGVuY29kaW5ncyA9IGNtYXAtPmVuY29kaW5nczsKLSAgICBGVF9VTG9uZyAgICAgICAgICBtaW4sIG1heCwgbWlkOyAvKiBudW1fZW5jb2RpbmdzICovCiAgICAgRlRfVVNob3J0ICAgICAgICAgcmVzdWx0ICAgID0gMDsgLyogZW5jb2RpbmdzLT5nbHlwaCAqLwogCisgICAgRlRfVUxvbmcgIG1pbiA9IDA7CisgICAgRlRfVUxvbmcgIG1heCA9IGNtYXAtPm51bV9lbmNvZGluZ3M7CisgICAgRlRfVUxvbmcgIG1pZCA9ICggbWluICsgbWF4ICkgPj4gMTsKIAotICAgIG1pbiA9IDA7Ci0gICAgbWF4ID0gY21hcC0+bnVtX2VuY29kaW5nczsKLSAgICBtaWQgPSAoIG1pbiArIG1heCApID4+IDE7CiAKICAgICB3aGlsZSAoIG1pbiA8IG1heCApCiAgICAgewotICAgICAgRlRfVUxvbmcgIGNvZGU7CisgICAgICBGVF9VTG9uZyAgY29kZSA9IGVuY29kaW5nc1ttaWRdLmVuYzsKIAogCi0gICAgICBpZiAoIG1pZCA+PSBtYXggfHwgbWlkIDwgbWluICkKLSAgICAgICAgbWlkID0gKCBtaW4gKyBtYXggKSA+PiAxOwotCi0gICAgICBjb2RlID0gZW5jb2RpbmdzW21pZF0uZW5jOwotCiAgICAgICBpZiAoIGNoYXJjb2RlID09IGNvZGUgKQogICAgICAgewogICAgICAgICAvKiBpbmNyZWFzZSBnbHlwaCBpbmRleCBieSAxIC0tICAgICAgICAgICAgICAqLwpAQCAtMTIzLDggKzExNywxMCBAQAogICAgICAgZWxzZQogICAgICAgICBtaW4gPSBtaWQgKyAxOwogCi0gICAgICAvKiBwcmVkaWN0aW9uIGluIGEgY29udGludW91cyBibG9jayAqLworICAgICAgLyogcmVhc29uYWJsZSBwcmVkaWN0aW9uIGluIGEgY29udGludW91cyBibG9jayAqLwogICAgICAgbWlkICs9IGNoYXJjb2RlIC0gY29kZTsKKyAgICAgIGlmICggbWlkID49IG1heCB8fCBtaWQgPCBtaW4gKQorICAgICAgICBtaWQgPSAoIG1pbiArIG1heCApID4+IDE7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEzNywyNSArMTMzLDE5IEBACiAgIHsKICAgICBCREZfQ01hcCAgICAgICAgICBjbWFwICAgICAgPSAoQkRGX0NNYXApYmRmY21hcDsKICAgICBCREZfZW5jb2RpbmdfZWwqICBlbmNvZGluZ3MgPSBjbWFwLT5lbmNvZGluZ3M7Ci0gICAgRlRfVUxvbmcgICAgICAgICAgbWluLCBtYXgsIG1pZDsgLyogbnVtX2VuY29kaW5ncyAqLwogICAgIEZUX1VTaG9ydCAgICAgICAgIHJlc3VsdCAgID0gMDsgIC8qIGVuY29kaW5ncy0+Z2x5cGggKi8KICAgICBGVF9VTG9uZyAgICAgICAgICBjaGFyY29kZSA9ICphY2hhcmNvZGUgKyAxOwogCisgICAgRlRfVUxvbmcgIG1pbiA9IDA7CisgICAgRlRfVUxvbmcgIG1heCA9IGNtYXAtPm51bV9lbmNvZGluZ3M7CisgICAgRlRfVUxvbmcgIG1pZCA9ICggbWluICsgbWF4ICkgPj4gMTsKIAotICAgIG1pbiA9IDA7Ci0gICAgbWF4ID0gY21hcC0+bnVtX2VuY29kaW5nczsKLSAgICBtaWQgPSAoIG1pbiArIG1heCApID4+IDE7CiAKICAgICB3aGlsZSAoIG1pbiA8IG1heCApCiAgICAgewotICAgICAgRlRfVUxvbmcgIGNvZGU7IC8qIHNhbWUgYXMgQkRGX2VuY29kaW5nX2VsLmVuYyAqLworICAgICAgRlRfVUxvbmcgIGNvZGUgPSBlbmNvZGluZ3NbbWlkXS5lbmM7CiAKIAotICAgICAgaWYgKCBtaWQgPj0gbWF4IHx8IG1pZCA8IG1pbiApCi0gICAgICAgIG1pZCA9ICggbWluICsgbWF4ICkgPj4gMTsKLQotICAgICAgY29kZSA9IGVuY29kaW5nc1ttaWRdLmVuYzsKLQogICAgICAgaWYgKCBjaGFyY29kZSA9PSBjb2RlICkKICAgICAgIHsKICAgICAgICAgLyogaW5jcmVhc2UgZ2x5cGggaW5kZXggYnkgMSAtLSAgICAgICAgICAgICAgKi8KQEAgLTE3MSw2ICsxNjEsOCBAQAogCiAgICAgICAvKiBwcmVkaWN0aW9uIGluIGEgY29udGludW91cyBibG9jayAqLwogICAgICAgbWlkICs9IGNoYXJjb2RlIC0gY29kZTsKKyAgICAgIGlmICggbWlkID49IG1heCB8fCBtaWQgPCBtaW4gKQorICAgICAgICBtaWQgPSAoIG1pbiArIG1heCApID4+IDE7CiAgICAgfQogCiAgICAgY2hhcmNvZGUgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JkZi9iZGZsaWIuYyBiL3NyYy9iZGYvYmRmbGliLmMKaW5kZXggYjY1YzhhMi4uMjIyNDY5OCAxMDA2NDQKLS0tIGEvc3JjL2JkZi9iZGZsaWIuYworKysgYi9zcmMvYmRmL2JkZmxpYi5jCkBAIC01OCw3ICs1OCw3IEBACiAgICAqLwogCiAKLSAgc3RhdGljIGNvbnN0IGJkZl9vcHRpb25zX3QgIF9iZGZfb3B0cyA9CisgIHN0YXRpYyBjb25zdCBiZGZfb3B0aW9uc190ICBiZGZfb3B0c18gPQogICB7CiAgICAgMSwgICAgICAgICAgICAgICAgLyogQ29ycmVjdCBtZXRyaWNzLiAgICAgICAgICAgICAgICovCiAgICAgMSwgICAgICAgICAgICAgICAgLyogUHJlc2VydmUgdW5lbmNvZGVkIGdseXBocy4gICAgICovCkBAIC03Niw3ICs3Niw3IEBACiAgIC8qIExpc3Qgb2YgbW9zdCBwcm9wZXJ0aWVzIHRoYXQgbWlnaHQgYXBwZWFyIGluIGEgZm9udC4gIERvZXNuJ3QgaW5jbHVkZSAqLwogICAvKiB0aGUgUkFXXyogYW5kIEFYSVNfKiBwcm9wZXJ0aWVzIGluIFgxMVI2IHBvbHltb3JwaGljIGZvbnRzLiAgICAgICAgICAgKi8KIAotICBzdGF0aWMgY29uc3QgYmRmX3Byb3BlcnR5X3QgIF9iZGZfcHJvcGVydGllc1tdID0KKyAgc3RhdGljIGNvbnN0IGJkZl9wcm9wZXJ0eV90ICBiZGZfcHJvcGVydGllc19bXSA9CiAgIHsKICAgICB7ICJBRERfU1RZTEVfTkFNRSIsICAgICAgICAgIEJERl9BVE9NLCAgICAgMSwgeyAwIH0gfSwKICAgICB7ICJBVkVSQUdFX1dJRFRIIiwgICAgICAgICAgIEJERl9JTlRFR0VSLCAgMSwgeyAwIH0gfSwKQEAgLTE2NCw4ICsxNjQsOCBAQAogICB9OwogCiAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nCi0gIF9udW1fYmRmX3Byb3BlcnRpZXMgPSBzaXplb2YgKCBfYmRmX3Byb3BlcnRpZXMgKSAvCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgKCBfYmRmX3Byb3BlcnRpZXNbMF0gKTsKKyAgbnVtX2JkZl9wcm9wZXJ0aWVzXyA9IHNpemVvZiAoIGJkZl9wcm9wZXJ0aWVzXyApIC8KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoIGJkZl9wcm9wZXJ0aWVzX1swXSApOwogCiAKICAgLyogQW4gYXV4aWxpYXJ5IG1hY3JvIHRvIHBhcnNlIHByb3BlcnRpZXMsIHRvIGJlIHVzZWQgaW4gY29uZGl0aW9uYWxzLiAqLwpAQCAtMjI3LDcgKzIyNyw3IEBACiAgIC8qIEZ1bmN0aW9uIHR5cGUgZm9yIHBhcnNpbmcgbGluZXMgb2YgYSBCREYgZm9udC4gKi8KIAogICB0eXBlZGVmIEZUX0Vycm9yCi0gICgqX2JkZl9saW5lX2Z1bmNfdCkoIGNoYXIqICAgICAgICAgIGxpbmUsCisgICgqYmRmX2xpbmVfZnVuY190XykoIGNoYXIqICAgICAgICAgIGxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgIGxpbmVsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgIGxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICAgICAgY2FsbF9kYXRhLApAQCAtMjM2LDE5ICsyMzYsMTkgQEAKIAogICAvKiBMaXN0IHN0cnVjdHVyZSBmb3Igc3BsaXR0aW5nIGxpbmVzIGludG8gZmllbGRzLiAqLwogCi0gIHR5cGVkZWYgc3RydWN0ICBfYmRmX2xpc3RfdF8KKyAgdHlwZWRlZiBzdHJ1Y3QgIGJkZl9saXN0X3RfXwogICB7CiAgICAgY2hhcioqICAgICAgICAgZmllbGQ7CiAgICAgdW5zaWduZWQgbG9uZyAgc2l6ZTsKICAgICB1bnNpZ25lZCBsb25nICB1c2VkOwogICAgIEZUX01lbW9yeSAgICAgIG1lbW9yeTsKIAotICB9IF9iZGZfbGlzdF90OworICB9IGJkZl9saXN0X3RfOwogCiAKICAgLyogU3RydWN0dXJlIHVzZWQgd2hpbGUgbG9hZGluZyBCREYgZm9udHMuICovCiAKLSAgdHlwZWRlZiBzdHJ1Y3QgIF9iZGZfcGFyc2VfdF8KKyAgdHlwZWRlZiBzdHJ1Y3QgIGJkZl9wYXJzZV90X18KICAgewogICAgIHVuc2lnbmVkIGxvbmcgICBmbGFnczsKICAgICB1bnNpZ25lZCBsb25nICAgY250OwpAQCAtMjY4LDEyICsyNjgsMTIgQEAKICAgICBiZGZfZm9udF90KiAgICAgZm9udDsKICAgICBiZGZfb3B0aW9uc190KiAgb3B0czsKIAotICAgIF9iZGZfbGlzdF90ICAgICBsaXN0OworICAgIGJkZl9saXN0X3RfICAgICBsaXN0OwogCiAgICAgRlRfTWVtb3J5ICAgICAgIG1lbW9yeTsKICAgICB1bnNpZ25lZCBsb25nICAgc2l6ZTsgICAgICAgIC8qIHRoZSBzdHJlYW0gc2l6ZSAqLwogCi0gIH0gX2JkZl9wYXJzZV90OworICB9IGJkZl9wYXJzZV90XzsKIAogCiAjZGVmaW5lIHNldHNiaXQoIG0sIGNjICkgXApAQCAtMjgzLDcgKzI4Myw3IEBACiAKIAogICBzdGF0aWMgdm9pZAotICBfYmRmX2xpc3RfaW5pdCggX2JkZl9saXN0X3QqICBsaXN0LAorICBiZGZfbGlzdF9pbml0XyggYmRmX2xpc3RfdF8qICBsaXN0LAogICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICAgICBtZW1vcnkgKQogICB7CiAgICAgRlRfWkVSTyggbGlzdCApOwpAQCAtMjkyLDcgKzI5Miw3IEBACiAKIAogICBzdGF0aWMgdm9pZAotICBfYmRmX2xpc3RfZG9uZSggX2JkZl9saXN0X3QqICBsaXN0ICkKKyAgYmRmX2xpc3RfZG9uZV8oIGJkZl9saXN0X3RfKiAgbGlzdCApCiAgIHsKICAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGxpc3QtPm1lbW9yeTsKIApAQCAtMzA2LDE1ICszMDYsMTUgQEAKIAogCiAgIHN0YXRpYyBGVF9FcnJvcgotICBfYmRmX2xpc3RfZW5zdXJlKCBfYmRmX2xpc3RfdCogICBsaXN0LAotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICBudW1faXRlbXMgKSAvKiBzYW1lIGFzIF9iZGZfbGlzdF90LnVzZWQgKi8KKyAgYmRmX2xpc3RfZW5zdXJlXyggYmRmX2xpc3RfdF8qICAgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAgbnVtX2l0ZW1zICkgLyogc2FtZSBhcyBiZGZfbGlzdF90Xy51c2VkICovCiAgIHsKICAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CiAKIAogICAgIGlmICggbnVtX2l0ZW1zID4gbGlzdC0+c2l6ZSApCiAgICAgewotICAgICAgdW5zaWduZWQgbG9uZyAgb2xkc2l6ZSA9IGxpc3QtPnNpemU7IC8qIHNhbWUgYXMgX2JkZl9saXN0X3Quc2l6ZSAqLworICAgICAgdW5zaWduZWQgbG9uZyAgb2xkc2l6ZSA9IGxpc3QtPnNpemU7IC8qIHNhbWUgYXMgYmRmX2xpc3RfdF8uc2l6ZSAqLwogICAgICAgdW5zaWduZWQgbG9uZyAgbmV3c2l6ZSA9IG9sZHNpemUgKyAoIG9sZHNpemUgPj4gMSApICsgNTsKICAgICAgIHVuc2lnbmVkIGxvbmcgIGJpZ3NpemUgPSAodW5zaWduZWQgbG9uZykoIEZUX0lOVF9NQVggLyBzaXplb2YgKCBjaGFyKiApICk7CiAgICAgICBGVF9NZW1vcnkgICAgICBtZW1vcnkgID0gbGlzdC0+bWVtb3J5OwpAQCAtMzQwLDcgKzM0MCw3IEBACiAKIAogICBzdGF0aWMgdm9pZAotICBfYmRmX2xpc3Rfc2hpZnQoIF9iZGZfbGlzdF90KiAgIGxpc3QsCisgIGJkZl9saXN0X3NoaWZ0XyggYmRmX2xpc3RfdF8qICAgbGlzdCwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICBuICkKICAgewogICAgIHVuc2lnbmVkIGxvbmcgIGksIHU7CkBAIC0zNjcsNyArMzY3LDcgQEAKIAogCiAgIHN0YXRpYyBjaGFyICoKLSAgX2JkZl9saXN0X2pvaW4oIF9iZGZfbGlzdF90KiAgICBsaXN0LAorICBiZGZfbGlzdF9qb2luXyggYmRmX2xpc3RfdF8qICAgIGxpc3QsCiAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgYywKICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgICphbGVuICkKICAgewpAQCAtNDA1LDcgKzQwNSw3IEBACiAgIC8qIGRvbid0IGhhdmUgdG8gY2hlY2sgdGhlIG51bWJlciBvZiBmaWVsZHMgaW4gbW9zdCBjYXNlcy4gICAgKi8KIAogICBzdGF0aWMgRlRfRXJyb3IKLSAgX2JkZl9saXN0X3NwbGl0KCBfYmRmX2xpc3RfdCogICBsaXN0LAorICBiZGZfbGlzdF9zcGxpdF8oIGJkZl9saXN0X3RfKiAgIGxpc3QsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogICAgc2VwYXJhdG9ycywKICAgICAgICAgICAgICAgICAgICBjaGFyKiAgICAgICAgICBsaW5lLAogICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgIGxpbmVsZW4gKQpAQCAtNDY3LDcgKzQ2Nyw3IEBACiAgICAgICAvKiBSZXNpemUgdGhlIGxpc3QgaWYgbmVjZXNzYXJ5LiAqLwogICAgICAgaWYgKCBsaXN0LT51c2VkID09IGxpc3QtPnNpemUgKQogICAgICAgewotICAgICAgICBlcnJvciA9IF9iZGZfbGlzdF9lbnN1cmUoIGxpc3QsIGxpc3QtPnVzZWQgKyAxICk7CisgICAgICAgIGVycm9yID0gYmRmX2xpc3RfZW5zdXJlXyggbGlzdCwgbGlzdC0+dXNlZCArIDEgKTsKICAgICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgICAgZ290byBFeGl0OwogICAgICAgfQpAQCAtNDk2LDcgKzQ5Niw3IEBACiAgICAgLyogRmluYWxseSwgTlVMTC10ZXJtaW5hdGUgdGhlIGxpc3QuICovCiAgICAgaWYgKCBsaXN0LT51c2VkICsgZmluYWxfZW1wdHkgPj0gbGlzdC0+c2l6ZSApCiAgICAgewotICAgICAgZXJyb3IgPSBfYmRmX2xpc3RfZW5zdXJlKCBsaXN0LCBsaXN0LT51c2VkICsgZmluYWxfZW1wdHkgKyAxICk7CisgICAgICBlcnJvciA9IGJkZl9saXN0X2Vuc3VyZV8oIGxpc3QsIGxpc3QtPnVzZWQgKyBmaW5hbF9lbXB0eSArIDEgKTsKICAgICAgIGlmICggZXJyb3IgKQogICAgICAgICBnb3RvIEV4aXQ7CiAgICAgfQpAQCAtNTE1LDEyICs1MTUsMTIgQEAKIAogCiAgIHN0YXRpYyBGVF9FcnJvcgotICBfYmRmX3JlYWRzdHJlYW0oIEZUX1N0cmVhbSAgICAgICAgIHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICBfYmRmX2xpbmVfZnVuY190ICBjYWxsYmFjaywKKyAgYmRmX3JlYWRzdHJlYW1fKCBGVF9TdHJlYW0gICAgICAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgYmRmX2xpbmVfZnVuY190XyAgY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICAgICAgICAgY2xpZW50X2RhdGEsCiAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAgICAqbG5vICkKICAgewotICAgIF9iZGZfbGluZV9mdW5jX3QgIGNiOworICAgIGJkZl9saW5lX2Z1bmNfdF8gIGNiOwogICAgIHVuc2lnbmVkIGxvbmcgICAgIGxpbmVubywgYnVmX3NpemU7CiAgICAgaW50ICAgICAgICAgICAgICAgcmVmaWxsLCBob2xkLCB0b19za2lwOwogICAgIHB0cmRpZmZfdCAgICAgICAgIGJ5dGVzLCBzdGFydCwgZW5kLCBjdXJzb3IsIGF2YWlsOwpAQCAtNjAzLDcgKzYwMyw3IEBACiAgICAgICAgICAgICAgIGVycm9yID0gRlRfVEhST1coIE1pc3NpbmdfU3RhcnRmb250X0ZpZWxkICk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIEZUX0VSUk9SKCggIl9iZGZfcmVhZHN0cmVhbTogIiBFUlJNU0c2LCBsaW5lbm8gKSk7CisgICAgICAgICAgICAgIEZUX0VSUk9SKCggImJkZl9yZWFkc3RyZWFtXzogIiBFUlJNU0c2LCBsaW5lbm8gKSk7CiAgICAgICAgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdvdG8gRXhpdDsKQEAgLTYxMyw3ICs2MTMsNyBAQAogICAgICAgICAgIGlmICggRlRfUVJFQUxMT0MoIGJ1ZiwgYnVmX3NpemUsIG5ld19zaXplICkgKQogICAgICAgICAgICAgZ290byBFeGl0OwogCi0gICAgICAgICAgY3Vyc29yICAgPSAocHRyZGlmZl90KWJ1Zl9zaXplOworICAgICAgICAgIGN1cnNvciAgID0gYXZhaWw7CiAgICAgICAgICAgYnVmX3NpemUgPSBuZXdfc2l6ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlCkBAIC02MjMsNyArNjIzLDYgQEAKICAgICAgICAgICBGVF9NRU1fTU9WRSggYnVmLCBidWYgKyBzdGFydCwgYnl0ZXMgKTsKIAogICAgICAgICAgIGN1cnNvciA9IGJ5dGVzOwotICAgICAgICAgIGF2YWlsIC09IGJ5dGVzOwogICAgICAgICAgIHN0YXJ0ICA9IDA7CiAgICAgICAgIH0KICAgICAgICAgcmVmaWxsID0gMTsKQEAgLTcwMyw3ICs3MDIsNyBAQAogCiAgIC8qIFJvdXRpbmUgdG8gY29udmVydCBhIGRlY2ltYWwgQVNDSUkgc3RyaW5nIHRvIGFuIHVuc2lnbmVkIGxvbmcgaW50ZWdlci4gKi8KICAgc3RhdGljIHVuc2lnbmVkIGxvbmcKLSAgX2JkZl9hdG91bCggY29uc3QgY2hhciogIHMgKQorICBiZGZfYXRvdWxfKCBjb25zdCBjaGFyKiAgcyApCiAgIHsKICAgICB1bnNpZ25lZCBsb25nICB2OwogCkBAIC03MjgsNyArNzI3LDcgQEAKIAogICAvKiBSb3V0aW5lIHRvIGNvbnZlcnQgYSBkZWNpbWFsIEFTQ0lJIHN0cmluZyB0byBhIHNpZ25lZCBsb25nIGludGVnZXIuICovCiAgIHN0YXRpYyBsb25nCi0gIF9iZGZfYXRvbCggY29uc3QgY2hhciogIHMgKQorICBiZGZfYXRvbF8oIGNvbnN0IGNoYXIqICBzICkKICAgewogICAgIGxvbmcgIHYsIG5lZzsKIApAQCAtNzYxLDcgKzc2MCw3IEBACiAKICAgLyogUm91dGluZSB0byBjb252ZXJ0IGEgZGVjaW1hbCBBU0NJSSBzdHJpbmcgdG8gYW4gdW5zaWduZWQgc2hvcnQgaW50ZWdlci4gKi8KICAgc3RhdGljIHVuc2lnbmVkIHNob3J0Ci0gIF9iZGZfYXRvdXMoIGNvbnN0IGNoYXIqICBzICkKKyAgYmRmX2F0b3VzXyggY29uc3QgY2hhciogIHMgKQogICB7CiAgICAgdW5zaWduZWQgc2hvcnQgIHY7CiAKQEAgLTc4Niw3ICs3ODUsNyBAQAogCiAgIC8qIFJvdXRpbmUgdG8gY29udmVydCBhIGRlY2ltYWwgQVNDSUkgc3RyaW5nIHRvIGEgc2lnbmVkIHNob3J0IGludGVnZXIuICovCiAgIHN0YXRpYyBzaG9ydAotICBfYmRmX2F0b3MoIGNvbnN0IGNoYXIqICBzICkKKyAgYmRmX2F0b3NfKCBjb25zdCBjaGFyKiAgcyApCiAgIHsKICAgICBzaG9ydCAgdiwgbmVnOwogCkBAIC04NzUsNyArODc0LDcgQEAKICAgICBwLT5idWlsdGluICAgID0gMDsKICAgICBwLT52YWx1ZS5hdG9tID0gTlVMTDsgIC8qIG5vdGhpbmcgaXMgZXZlciBzdG9yZWQgaGVyZSAqLwogCi0gICAgbiA9IF9udW1fYmRmX3Byb3BlcnRpZXMgKyBmb250LT5udXNlcl9wcm9wczsKKyAgICBuID0gbnVtX2JkZl9wcm9wZXJ0aWVzXyArIGZvbnQtPm51c2VyX3Byb3BzOwogCiAgICAgZXJyb3IgPSBmdF9oYXNoX3N0cl9pbnNlcnQoIHAtPm5hbWUsIG4sICYoZm9udC0+cHJvcHRibCksIG1lbW9yeSApOwogICAgIGlmICggZXJyb3IgKQpAQCAtOTAxLDEwICs5MDAsMTAgQEAKICAgICBpZiAoICggcHJvcGlkID0gZnRfaGFzaF9zdHJfbG9va3VwKCBuYW1lLCAmKGZvbnQtPnByb3B0YmwpICkgKSA9PSBOVUxMICkKICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKCAqcHJvcGlkID49IF9udW1fYmRmX3Byb3BlcnRpZXMgKQotICAgICAgcmV0dXJuIGZvbnQtPnVzZXJfcHJvcHMgKyAoICpwcm9waWQgLSBfbnVtX2JkZl9wcm9wZXJ0aWVzICk7CisgICAgaWYgKCAqcHJvcGlkID49IG51bV9iZGZfcHJvcGVydGllc18gKQorICAgICAgcmV0dXJuIGZvbnQtPnVzZXJfcHJvcHMgKyAoICpwcm9waWQgLSBudW1fYmRmX3Byb3BlcnRpZXNfICk7CiAKLSAgICByZXR1cm4gKGJkZl9wcm9wZXJ0eV90KilfYmRmX3Byb3BlcnRpZXMgKyAqcHJvcGlkOworICAgIHJldHVybiAoYmRmX3Byb3BlcnR5X3QqKWJkZl9wcm9wZXJ0aWVzXyArICpwcm9waWQ7CiAgIH0KIAogCkBAIC05NDQsNyArOTQzLDcgQEAKIAogCiAgIHN0YXRpYyBGVF9FcnJvcgotICBfYmRmX2FkZF9jb21tZW50KCBiZGZfZm9udF90KiAgICBmb250LAorICBiZGZfYWRkX2NvbW1lbnRfKCBiZGZfZm9udF90KiAgICBmb250LAogICAgICAgICAgICAgICAgICAgICBjaGFyKiAgICAgICAgICBjb21tZW50LAogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICBsZW4gKQogICB7CkBAIC05NzMsMTMgKzk3MiwxMyBAQAogICAvKiBTZXQgdGhlIHNwYWNpbmcgZnJvbSB0aGUgZm9udCBuYW1lIGlmIGl0IGV4aXN0cywgb3Igc2V0IGl0IHRvIHRoZSAqLwogICAvKiBkZWZhdWx0IHNwZWNpZmllZCBpbiB0aGUgb3B0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICBzdGF0aWMgRlRfRXJyb3IKLSAgX2JkZl9zZXRfZGVmYXVsdF9zcGFjaW5nKCBiZGZfZm9udF90KiAgICAgZm9udCwKKyAgYmRmX3NldF9kZWZhdWx0X3NwYWNpbmdfKCBiZGZfZm9udF90KiAgICAgZm9udCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZGZfb3B0aW9uc190KiAgb3B0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICAgbGluZW5vICkKICAgewogICAgIHNpemVfdCAgICAgICBsZW47CiAgICAgY2hhciAgICAgICAgIG5hbWVbMjU2XTsKLSAgICBfYmRmX2xpc3RfdCAgbGlzdDsKKyAgICBiZGZfbGlzdF90XyAgbGlzdDsKICAgICBGVF9NZW1vcnkgICAgbWVtb3J5OwogICAgIEZUX0Vycm9yICAgICBlcnJvciA9IEZUX0Vycl9PazsKIApAQCAtOTk0LDcgKzk5Myw3IEBACiAKICAgICBtZW1vcnkgPSBmb250LT5tZW1vcnk7CiAKLSAgICBfYmRmX2xpc3RfaW5pdCggJmxpc3QsIG1lbW9yeSApOworICAgIGJkZl9saXN0X2luaXRfKCAmbGlzdCwgbWVtb3J5ICk7CiAKICAgICBmb250LT5zcGFjaW5nID0gb3B0cy0+Zm9udF9zcGFjaW5nOwogCkBAIC0xMDAyLDE0ICsxMDAxLDE0IEBACiAgICAgLyogTGltaXQgb3Vyc2VsdmVzIHRvIDI1NiBjaGFyYWN0ZXJzIGluIHRoZSBmb250IG5hbWUuICovCiAgICAgaWYgKCBsZW4gPj0gMjU2ICkKICAgICB7Ci0gICAgICBGVF9FUlJPUigoICJfYmRmX3NldF9kZWZhdWx0X3NwYWNpbmc6ICIgRVJSTVNHNywgbGluZW5vICkpOworICAgICAgRlRfRVJST1IoKCAiYmRmX3NldF9kZWZhdWx0X3NwYWNpbmdfOiAiIEVSUk1TRzcsIGxpbmVubyApKTsKICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKICAgICAgIGdvdG8gRXhpdDsKICAgICB9CiAKICAgICBGVF9NRU1fQ09QWSggbmFtZSwgZm9udC0+bmFtZSwgbGVuICk7CiAKLSAgICBlcnJvciA9IF9iZGZfbGlzdF9zcGxpdCggJmxpc3QsICItIiwgbmFtZSwgKHVuc2lnbmVkIGxvbmcpbGVuICk7CisgICAgZXJyb3IgPSBiZGZfbGlzdF9zcGxpdF8oICZsaXN0LCAiLSIsIG5hbWUsICh1bnNpZ25lZCBsb25nKWxlbiApOwogICAgIGlmICggZXJyb3IgKQogICAgICAgZ290byBGYWlsOwogCkBAIC0xMDMzLDcgKzEwMzIsNyBAQAogICAgIH0KIAogICBGYWlsOgotICAgIF9iZGZfbGlzdF9kb25lKCAmbGlzdCApOworICAgIGJkZl9saXN0X2RvbmVfKCAmbGlzdCApOwogCiAgIEV4aXQ6CiAgICAgcmV0dXJuIGVycm9yOwpAQCAtMTA0Myw3ICsxMDQyLDcgQEAKICAgLyogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHByb3BlcnR5IGlzIGFuIGF0b20gb3Igbm90LiAgSWYgaXQgaXMsIHRoZW4gKi8KICAgLyogY2xlYW4gaXQgdXAgc28gdGhlIGRvdWJsZSBxdW90ZXMgYXJlIHJlbW92ZWQgaWYgdGhleSBleGlzdC4gICAgICAgKi8KICAgc3RhdGljIGludAotICBfYmRmX2lzX2F0b20oIGNoYXIqICAgICAgICAgIGxpbmUsCisgIGJkZl9pc19hdG9tXyggY2hhciogICAgICAgICAgbGluZSwKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICBsaW5lbGVuLAogICAgICAgICAgICAgICAgIGNoYXIqKiAgICAgICAgIG5hbWUsCiAgICAgICAgICAgICAgICAgY2hhcioqICAgICAgICAgdmFsdWUsCkBAIC0xMTA3LDcgKzExMDYsNyBAQAogCiAKICAgc3RhdGljIEZUX0Vycm9yCi0gIF9iZGZfYWRkX3Byb3BlcnR5KCBiZGZfZm9udF90KiAgICBmb250LAorICBiZGZfYWRkX3Byb3BlcnR5XyggYmRmX2ZvbnRfdCogICAgZm9udCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAgIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyKiAgICAgICAgICB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgIGxpbmVubyApCkBAIC0xMTQyLDExICsxMTQxLDExIEBACiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEJERl9JTlRFR0VSOgotICAgICAgICBmcC0+dmFsdWUubCA9IF9iZGZfYXRvbCggdmFsdWUgKTsKKyAgICAgICAgZnAtPnZhbHVlLmwgPSBiZGZfYXRvbF8oIHZhbHVlICk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEJERl9DQVJESU5BTDoKLSAgICAgICAgZnAtPnZhbHVlLnVsID0gX2JkZl9hdG91bCggdmFsdWUgKTsKKyAgICAgICAgZnAtPnZhbHVlLnVsID0gYmRmX2F0b3VsXyggdmFsdWUgKTsKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGRlZmF1bHQ6CkBAIC0xMTc1LDE0ICsxMTc0LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC0+cHJvcHNfc2l6ZSArIDEgKSApCiAgICAgICAgIGdvdG8gRXhpdDsKIAotICAgICAgZnAgPSBmb250LT5wcm9wcyArIGZvbnQtPnByb3BzX3NpemU7CiAgICAgICBmb250LT5wcm9wc19zaXplKys7CiAgICAgfQogCi0gICAgaWYgKCAqcHJvcGlkID49IF9udW1fYmRmX3Byb3BlcnRpZXMgKQotICAgICAgcHJvcCA9IGZvbnQtPnVzZXJfcHJvcHMgKyAoICpwcm9waWQgLSBfbnVtX2JkZl9wcm9wZXJ0aWVzICk7CisgICAgaWYgKCAqcHJvcGlkID49IG51bV9iZGZfcHJvcGVydGllc18gKQorICAgICAgcHJvcCA9IGZvbnQtPnVzZXJfcHJvcHMgKyAoICpwcm9waWQgLSBudW1fYmRmX3Byb3BlcnRpZXNfICk7CiAgICAgZWxzZQotICAgICAgcHJvcCA9IChiZGZfcHJvcGVydHlfdCopX2JkZl9wcm9wZXJ0aWVzICsgKnByb3BpZDsKKyAgICAgIHByb3AgPSAoYmRmX3Byb3BlcnR5X3QqKWJkZl9wcm9wZXJ0aWVzXyArICpwcm9waWQ7CiAKICAgICBmcCA9IGZvbnQtPnByb3BzICsgZm9udC0+cHJvcHNfdXNlZDsKIApAQCAtMTIwMiwxMSArMTIwMCwxMSBAQAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEJERl9JTlRFR0VSOgotICAgICAgZnAtPnZhbHVlLmwgPSBfYmRmX2F0b2woIHZhbHVlICk7CisgICAgICBmcC0+dmFsdWUubCA9IGJkZl9hdG9sXyggdmFsdWUgKTsKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBCREZfQ0FSRElOQUw6Ci0gICAgICBmcC0+dmFsdWUudWwgPSBfYmRmX2F0b3VsKCB2YWx1ZSApOworICAgICAgZnAtPnZhbHVlLnVsID0gYmRmX2F0b3VsXyggdmFsdWUgKTsKICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTI0MCw3ICsxMjM4LDcgQEAKICAgICB7CiAgICAgICBpZiAoICFmcC0+dmFsdWUuYXRvbSApCiAgICAgICB7Ci0gICAgICAgIEZUX0VSUk9SKCggIl9iZGZfYWRkX3Byb3BlcnR5OiAiIEVSUk1TRzgsIGxpbmVubywgIlNQQUNJTkciICkpOworICAgICAgICBGVF9FUlJPUigoICJiZGZfYWRkX3Byb3BlcnR5XzogIiBFUlJNU0c4LCBsaW5lbm8sICJTUEFDSU5HIiApKTsKICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOwogICAgICAgICBnb3RvIEV4aXQ7CiAgICAgICB9CkBAIC0xMjY1LDcgKzEyNjMsNyBAQAogCiAKICAgc3RhdGljIEZUX0Vycm9yCi0gIF9iZGZfcGFyc2VfZW5kKCBjaGFyKiAgICAgICAgICBsaW5lLAorICBiZGZfcGFyc2VfZW5kXyggY2hhciogICAgICAgICAgbGluZSwKICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgIGxpbmVsZW4sCiAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgICBjYWxsX2RhdGEsCkBAIC0xMjg1LDcgKzEyODMsNyBAQAogCiAgIC8qIEFjdHVhbGx5IHBhcnNlIHRoZSBnbHlwaCBpbmZvIGFuZCBiaXRtYXBzLiAqLwogICBzdGF0aWMgRlRfRXJyb3IKLSAgX2JkZl9wYXJzZV9nbHlwaHMoIGNoYXIqICAgICAgICAgIGxpbmUsCisgIGJkZl9wYXJzZV9nbHlwaHNfKCBjaGFyKiAgICAgICAgICBsaW5lLAogICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAgbGluZWxlbiwKICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgIGxpbmVubywKICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgIGNhbGxfZGF0YSwKQEAgLTEyOTYsOCArMTI5NCw4IEBACiAgICAgdW5zaWduZWQgY2hhciogICAgIGJwOwogICAgIHVuc2lnbmVkIGxvbmcgICAgICBpLCBzbGVuLCBuaWJibGVzOwogCi0gICAgX2JkZl9saW5lX2Z1bmNfdCogIG5leHQ7Ci0gICAgX2JkZl9wYXJzZV90KiAgICAgIHA7CisgICAgYmRmX2xpbmVfZnVuY190XyogIG5leHQ7CisgICAgYmRmX3BhcnNlX3RfKiAgICAgIHA7CiAgICAgYmRmX2dseXBoX3QqICAgICAgIGdseXBoOwogICAgIGJkZl9mb250X3QqICAgICAgICBmb250OwogCkBAIC0xMzA3LDggKzEzMDUsOCBAQAogICAgIEZUX1VOVVNFRCggbGluZW5vICk7ICAgICAgICAvKiBvbmx5IHVzZWQgaW4gZGVidWcgbW9kZSAqLwogCiAKLSAgICBuZXh0ID0gKF9iZGZfbGluZV9mdW5jX3QgKiljYWxsX2RhdGE7Ci0gICAgcCAgICA9IChfYmRmX3BhcnNlX3QgKikgICAgY2xpZW50X2RhdGE7CisgICAgbmV4dCA9IChiZGZfbGluZV9mdW5jX3RfICopY2FsbF9kYXRhOworICAgIHAgICAgPSAoYmRmX3BhcnNlX3RfICopICAgIGNsaWVudF9kYXRhOwogCiAgICAgZm9udCAgID0gcC0+Zm9udDsKICAgICBtZW1vcnkgPSBmb250LT5tZW1vcnk7CkBAIC0xMzI2LDcgKzEzMjQsNyBAQAogICAgICAgICAgIHMrKzsKICAgICAgICAgICBsaW5lbGVuLS07CiAgICAgICAgIH0KLSAgICAgICAgZXJyb3IgPSBfYmRmX2FkZF9jb21tZW50KCBwLT5mb250LCBzLCBsaW5lbGVuICk7CisgICAgICAgIGVycm9yID0gYmRmX2FkZF9jb21tZW50XyggcC0+Zm9udCwgcywgbGluZWxlbiApOwogICAgICAgfQogICAgICAgZ290byBFeGl0OwogICAgIH0KQEAgLTEzMzYsMjEgKzEzMzQsMjEgQEAKICAgICB7CiAgICAgICBpZiAoIF9iZGZfc3RybmNtcCggbGluZSwgIkNIQVJTIiwgNSApICE9IDAgKQogICAgICAgewotICAgICAgICBGVF9FUlJPUigoICJfYmRmX3BhcnNlX2dseXBoczogIiBFUlJNU0cxLCBsaW5lbm8sICJDSEFSUyIgKSk7CisgICAgICAgIEZUX0VSUk9SKCggImJkZl9wYXJzZV9nbHlwaHNfOiAiIEVSUk1TRzEsIGxpbmVubywgIkNIQVJTIiApKTsKICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggTWlzc2luZ19DaGFyc19GaWVsZCApOwogICAgICAgICBnb3RvIEV4aXQ7CiAgICAgICB9CiAKLSAgICAgIGVycm9yID0gX2JkZl9saXN0X3NwbGl0KCAmcC0+bGlzdCwgIiArIiwgbGluZSwgbGluZWxlbiApOworICAgICAgZXJyb3IgPSBiZGZfbGlzdF9zcGxpdF8oICZwLT5saXN0LCAiICsiLCBsaW5lLCBsaW5lbGVuICk7CiAgICAgICBpZiAoIGVycm9yICkKICAgICAgICAgZ290byBFeGl0OwotICAgICAgcC0+Y250ID0gZm9udC0+Z2x5cGhzX3NpemUgPSBfYmRmX2F0b3VsKCBwLT5saXN0LmZpZWxkWzFdICk7CisgICAgICBwLT5jbnQgPSBmb250LT5nbHlwaHNfc2l6ZSA9IGJkZl9hdG91bF8oIHAtPmxpc3QuZmllbGRbMV0gKTsKIAogICAgICAgLyogV2UgbmVlZCBhdCBsZWFzdCAyMCBieXRlcyBwZXIgZ2x5cGguICovCiAgICAgICBpZiAoIHAtPmNudCA+IHAtPnNpemUgLyAyMCApCiAgICAgICB7CiAgICAgICAgIHAtPmNudCA9IGZvbnQtPmdseXBoc19zaXplID0gcC0+c2l6ZSAvIDIwOwotICAgICAgICBGVF9UUkFDRTIoKCAiX2JkZl9wYXJzZV9nbHlwaHM6ICIgQUNNU0cxNywgcC0+Y250ICkpOworICAgICAgICBGVF9UUkFDRTIoKCAiYmRmX3BhcnNlX2dseXBoc186ICIgQUNNU0cxNywgcC0+Y250ICkpOwogICAgICAgfQogCiAgICAgICAvKiBNYWtlIHN1cmUgdGhlIG51bWJlciBvZiBnbHlwaHMgaXMgbm9uLXplcm8uICovCkBAIC0xMzYxLDcgKzEzNTksNyBAQAogICAgICAgLyogbnVtYmVyIG9mIGNvZGUgcG9pbnRzIGF2YWlsYWJsZSBpbiBVbmljb2RlKS4gICAgICAgICAgICAgICAgICovCiAgICAgICBpZiAoIHAtPmNudCA+PSAweDExMDAwMFVMICkKICAgICAgIHsKLSAgICAgICAgRlRfRVJST1IoKCAiX2JkZl9wYXJzZV9nbHlwaHM6ICIgRVJSTVNHNSwgbGluZW5vLCAiQ0hBUlMiICkpOworICAgICAgICBGVF9FUlJPUigoICJiZGZfcGFyc2VfZ2x5cGhzXzogIiBFUlJNU0c1LCBsaW5lbm8sICJDSEFSUyIgKSk7CiAgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKICAgICAgICAgZ290byBFeGl0OwogICAgICAgfQpAQCAtMTM4MCw3ICsxMzc4LDcgQEAKICAgICAgIGlmICggcC0+ZmxhZ3MgJiBCREZfR0xZUEhfQklUU18gKQogICAgICAgewogICAgICAgICAvKiBNaXNzaW5nIEVORENIQVIgZmllbGQuICovCi0gICAgICAgIEZUX0VSUk9SKCggIl9iZGZfcGFyc2VfZ2x5cGhzOiAiIEVSUk1TRzEsIGxpbmVubywgIkVORENIQVIiICkpOworICAgICAgICBGVF9FUlJPUigoICJiZGZfcGFyc2VfZ2x5cGhzXzogIiBFUlJNU0cxLCBsaW5lbm8sICJFTkRDSEFSIiApKTsKICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggQ29ycnVwdGVkX0ZvbnRfR2x5cGhzICk7CiAgICAgICAgIGdvdG8gRXhpdDsKICAgICAgIH0KQEAgLTEzOTIsNyArMTM5MCw3IEBACiAgICAgICAgICAgICAgICAgYnlfZW5jb2RpbmcgKTsKIAogICAgICAgcC0+ZmxhZ3MgJj0gfkJERl9TVEFSVF87Ci0gICAgICAqbmV4dCAgICAgPSBfYmRmX3BhcnNlX2VuZDsKKyAgICAgICpuZXh0ICAgICA9IGJkZl9wYXJzZV9lbmRfOwogCiAgICAgICBnb3RvIEV4aXQ7CiAgICAgfQpAQCAtMTQxOSw3ICsxNDE3LDcgQEAKICAgICAgIGlmICggcC0+ZmxhZ3MgJiBCREZfR0xZUEhfQklUU18gKQogICAgICAgewogICAgICAgICAvKiBNaXNzaW5nIEVORENIQVIgZmllbGQuICovCi0gICAgICAgIEZUX0VSUk9SKCggIl9iZGZfcGFyc2VfZ2x5cGhzOiAiIEVSUk1TRzEsIGxpbmVubywgIkVORENIQVIiICkpOworICAgICAgICBGVF9FUlJPUigoICJiZGZfcGFyc2VfZ2x5cGhzXzogIiBFUlJNU0cxLCBsaW5lbm8sICJFTkRDSEFSIiApKTsKICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggTWlzc2luZ19TdGFydGNoYXJfRmllbGQgKTsKICAgICAgICAgZ290byBFeGl0OwogICAgICAgfQpAQCAtMTQyOCwxNyArMTQyNiwxNyBAQAogICAgICAgLyogZW5jb2RpbmcgY2FuIGJlIGNoZWNrZWQgZm9yIGFuIHVuZW5jb2RlZCBjaGFyYWN0ZXIuICAgICAgKi8KICAgICAgIEZUX0ZSRUUoIHAtPmdseXBoX25hbWUgKTsKIAotICAgICAgZXJyb3IgPSBfYmRmX2xpc3Rfc3BsaXQoICZwLT5saXN0LCAiICsiLCBsaW5lLCBsaW5lbGVuICk7CisgICAgICBlcnJvciA9IGJkZl9saXN0X3NwbGl0XyggJnAtPmxpc3QsICIgKyIsIGxpbmUsIGxpbmVsZW4gKTsKICAgICAgIGlmICggZXJyb3IgKQogICAgICAgICBnb3RvIEV4aXQ7CiAKLSAgICAgIF9iZGZfbGlzdF9zaGlmdCggJnAtPmxpc3QsIDEgKTsKKyAgICAgIGJkZl9saXN0X3NoaWZ0XyggJnAtPmxpc3QsIDEgKTsKIAotICAgICAgcyA9IF9iZGZfbGlzdF9qb2luKCAmcC0+bGlzdCwgJyAnLCAmc2xlbiApOworICAgICAgcyA9IGJkZl9saXN0X2pvaW5fKCAmcC0+bGlzdCwgJyAnLCAmc2xlbiApOwogCiAgICAgICBpZiAoICFzICkKICAgICAgIHsKLSAgICAgICAgRlRfRVJST1IoKCAiX2JkZl9wYXJzZV9nbHlwaHM6ICIgRVJSTVNHOCwgbGluZW5vLCAiU1RBUlRDSEFSIiApKTsKKyAgICAgICAgRlRfRVJST1IoKCAiYmRmX3BhcnNlX2dseXBoc186ICIgRVJSTVNHOCwgbGluZW5vLCAiU1RBUlRDSEFSIiApKTsKICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOwogICAgICAgICBnb3RvIEV4aXQ7CiAgICAgICB9CkBAIC0xNDYxLDE2ICsxNDU5LDE2IEBACiAgICAgICBpZiAoICEoIHAtPmZsYWdzICYgQkRGX0dMWVBIXyApICkKICAgICAgIHsKICAgICAgICAgLyogTWlzc2luZyBTVEFSVENIQVIgZmllbGQuICovCi0gICAgICAgIEZUX0VSUk9SKCggIl9iZGZfcGFyc2VfZ2x5cGhzOiAiIEVSUk1TRzEsIGxpbmVubywgIlNUQVJUQ0hBUiIgKSk7CisgICAgICAgIEZUX0VSUk9SKCggImJkZl9wYXJzZV9nbHlwaHNfOiAiIEVSUk1TRzEsIGxpbmVubywgIlNUQVJUQ0hBUiIgKSk7CiAgICAgICAgIGVycm9yID0gRlRfVEhST1coIE1pc3NpbmdfU3RhcnRjaGFyX0ZpZWxkICk7CiAgICAgICAgIGdvdG8gRXhpdDsKICAgICAgIH0KIAotICAgICAgZXJyb3IgPSBfYmRmX2xpc3Rfc3BsaXQoICZwLT5saXN0LCAiICsiLCBsaW5lLCBsaW5lbGVuICk7CisgICAgICBlcnJvciA9IGJkZl9saXN0X3NwbGl0XyggJnAtPmxpc3QsICIgKyIsIGxpbmUsIGxpbmVsZW4gKTsKICAgICAgIGlmICggZXJyb3IgKQogICAgICAgICBnb3RvIEV4aXQ7CiAKLSAgICAgIHAtPmdseXBoX2VuYyA9IF9iZGZfYXRvbCggcC0+bGlzdC5maWVsZFsxXSApOworICAgICAgcC0+Z2x5cGhfZW5jID0gYmRmX2F0b2xfKCBwLT5saXN0LmZpZWxkWzFdICk7CiAKICAgICAgIC8qIE5vcm1hbGl6ZSBuZWdhdGl2ZSBlbmNvZGluZyB2YWx1ZXMuICBUaGUgc3BlY2lmaWNhdGlvbiBvbmx5ICovCiAgICAgICAvKiBhbGxvd3MgLTEsIGJ1dCB3ZSBjYW4gYmUgbW9yZSBnZW5lcm91cyBoZXJlLiAgICAgICAgICAgICAgICAqLwpAQCAtMTQ3OSw3ICsxNDc3LDcgQEAKIAogICAgICAgLyogQ2hlY2sgZm9yIGFsdGVybmF0aXZlIGVuY29kaW5nIGZvcm1hdC4gKi8KICAgICAgIGlmICggcC0+Z2x5cGhfZW5jID09IC0xICYmIHAtPmxpc3QudXNlZCA+IDIgKQotICAgICAgICBwLT5nbHlwaF9lbmMgPSBfYmRmX2F0b2woIHAtPmxpc3QuZmllbGRbMl0gKTsKKyAgICAgICAgcC0+Z2x5cGhfZW5jID0gYmRmX2F0b2xfKCBwLT5saXN0LmZpZWxkWzJdICk7CiAKICAgICAgIGlmICggcC0+Z2x5cGhfZW5jIDwgLTEgfHwgcC0+Z2x5cGhfZW5jID49IDB4MTEwMDAwTCApCiAgICAgICAgIHAtPmdseXBoX2VuYyA9IC0xOwpAQCAtMTUzNyw4ICsxNTM1LDYgQEAKICAgICAgICAgICAvKiBrZXB0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgRlRfRlJFRSggcC0+Z2x5cGhfbmFtZSApOwogICAgICAgICB9Ci0KLSAgICAgICAgcC0+Z2x5cGhfbmFtZSA9IE5VTEw7CiAgICAgICB9CiAKICAgICAgIC8qIENsZWFyIHRoZSBmbGFncyB0aGF0IG1pZ2h0IGJlIGFkZGVkIHdoZW4gd2lkdGggYW5kIGhlaWdodCBhcmUgKi8KQEAgLTE1NjgsNyArMTU2NCw3IEBACiAgICAgICB7CiAgICAgICAgIGlmICggISggcC0+ZmxhZ3MgJiBCREZfR0xZUEhfSEVJR0hUX0NIRUNLXyApICkKICAgICAgICAgewotICAgICAgICAgIEZUX1RSQUNFMigoICJfYmRmX3BhcnNlX2dseXBoczogIiBBQ01TRzEzLCBnbHlwaC0+ZW5jb2RpbmcgKSk7CisgICAgICAgICAgRlRfVFJBQ0UyKCggImJkZl9wYXJzZV9nbHlwaHNfOiAiIEFDTVNHMTMsIGdseXBoLT5lbmNvZGluZyApKTsKICAgICAgICAgICBwLT5mbGFncyB8PSBCREZfR0xZUEhfSEVJR0hUX0NIRUNLXzsKICAgICAgICAgfQogCkBAIC0xNTk1LDcgKzE1OTEsNyBAQAogICAgICAgaWYgKCBpIDwgbmliYmxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgogICAgICAgICAgICAhKCBwLT5mbGFncyAmIEJERl9HTFlQSF9XSURUSF9DSEVDS18gKSApCiAgICAgICB7Ci0gICAgICAgIEZUX1RSQUNFMigoICJfYmRmX3BhcnNlX2dseXBoczogIiBBQ01TRzE2LCBnbHlwaC0+ZW5jb2RpbmcgKSk7CisgICAgICAgIEZUX1RSQUNFMigoICJiZGZfcGFyc2VfZ2x5cGhzXzogIiBBQ01TRzE2LCBnbHlwaC0+ZW5jb2RpbmcgKSk7CiAgICAgICAgIHAtPmZsYWdzICAgICAgIHw9IEJERl9HTFlQSF9XSURUSF9DSEVDS187CiAgICAgICB9CiAKQEAgLTE2MDksNyArMTYwNSw3IEBACiAgICAgICAgICAgIHNiaXRzZXQoIGhkaWdpdHMsIGxpbmVbbmliYmxlc10gKSAgICAgICYmCiAgICAgICAgICAgICEoIHAtPmZsYWdzICYgQkRGX0dMWVBIX1dJRFRIX0NIRUNLXyApICkKICAgICAgIHsKLSAgICAgICAgRlRfVFJBQ0UyKCggIl9iZGZfcGFyc2VfZ2x5cGhzOiAiIEFDTVNHMTQsIGdseXBoLT5lbmNvZGluZyApKTsKKyAgICAgICAgRlRfVFJBQ0UyKCggImJkZl9wYXJzZV9nbHlwaHNfOiAiIEFDTVNHMTQsIGdseXBoLT5lbmNvZGluZyApKTsKICAgICAgICAgcC0+ZmxhZ3MgICAgICAgfD0gQkRGX0dMWVBIX1dJRFRIX0NIRUNLXzsKICAgICAgIH0KIApAQCAtMTYyMCwxMSArMTYxNiwxMSBAQAogICAgIC8qIEV4cGVjdCB0aGUgU1dJRFRIIChzY2FsYWJsZSB3aWR0aCkgZmllbGQgbmV4dC4gKi8KICAgICBpZiAoIF9iZGZfc3RybmNtcCggbGluZSwgIlNXSURUSCIsIDYgKSA9PSAwICkKICAgICB7Ci0gICAgICBlcnJvciA9IF9iZGZfbGlzdF9zcGxpdCggJnAtPmxpc3QsICIgKyIsIGxpbmUsIGxpbmVsZW4gKTsKKyAgICAgIGVycm9yID0gYmRmX2xpc3Rfc3BsaXRfKCAmcC0+bGlzdCwgIiArIiwgbGluZSwgbGluZWxlbiApOwogICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgIGdvdG8gRXhpdDsKIAotICAgICAgZ2x5cGgtPnN3aWR0aCA9IF9iZGZfYXRvdXMoIHAtPmxpc3QuZmllbGRbMV0gKTsKKyAgICAgIGdseXBoLT5zd2lkdGggPSBiZGZfYXRvdXNfKCBwLT5saXN0LmZpZWxkWzFdICk7CiAgICAgICBwLT5mbGFncyB8PSBCREZfU1dJRFRIXzsKIAogICAgICAgZ290byBFeGl0OwpAQCAtMTYzMywxNyArMTYyOSwxNyBAQAogICAgIC8qIEV4cGVjdCB0aGUgRFdJRFRIIChkZXZpY2Ugd2lkdGgpIGZpZWxkIG5leHQuICovCiAgICAgaWYgKCBfYmRmX3N0cm5jbXAoIGxpbmUsICJEV0lEVEgiLCA2ICkgPT0gMCApCiAgICAgewotICAgICAgZXJyb3IgPSBfYmRmX2xpc3Rfc3BsaXQoICZwLT5saXN0LCAiICsiLCBsaW5lLCBsaW5lbGVuICk7CisgICAgICBlcnJvciA9IGJkZl9saXN0X3NwbGl0XyggJnAtPmxpc3QsICIgKyIsIGxpbmUsIGxpbmVsZW4gKTsKICAgICAgIGlmICggZXJyb3IgKQogICAgICAgICBnb3RvIEV4aXQ7CiAKLSAgICAgIGdseXBoLT5kd2lkdGggPSBfYmRmX2F0b3VzKCBwLT5saXN0LmZpZWxkWzFdICk7CisgICAgICBnbHlwaC0+ZHdpZHRoID0gYmRmX2F0b3VzXyggcC0+bGlzdC5maWVsZFsxXSApOwogCiAgICAgICBpZiAoICEoIHAtPmZsYWdzICYgQkRGX1NXSURUSF8gKSApCiAgICAgICB7CiAgICAgICAgIC8qIE1pc3NpbmcgU1dJRFRIIGZpZWxkLiAgRW1pdCBhbiBhdXRvIGNvcnJlY3Rpb24gbWVzc2FnZSBhbmQgc2V0ICovCiAgICAgICAgIC8qIHRoZSBzY2FsYWJsZSB3aWR0aCBmcm9tIHRoZSBkZXZpY2Ugd2lkdGguICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgIEZUX1RSQUNFMigoICJfYmRmX3BhcnNlX2dseXBoczogIiBBQ01TRzksIGxpbmVubyApKTsKKyAgICAgICAgRlRfVFJBQ0UyKCggImJkZl9wYXJzZV9nbHlwaHNfOiAiIEFDTVNHOSwgbGluZW5vICkpOwogCiAgICAgICAgIGdseXBoLT5zd2lkdGggPSAodW5zaWduZWQgc2hvcnQpRlRfTXVsRGl2KAogICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaC0+ZHdpZHRoLCA3MjAwMEwsCkBAIC0xNjU4LDE0ICsxNjU0LDE0IEBACiAgICAgLyogRXhwZWN0IHRoZSBCQlggZmllbGQgbmV4dC4gKi8KICAgICBpZiAoIF9iZGZfc3RybmNtcCggbGluZSwgIkJCWCIsIDMgKSA9PSAwICkKICAgICB7Ci0gICAgICBlcnJvciA9IF9iZGZfbGlzdF9zcGxpdCggJnAtPmxpc3QsICIgKyIsIGxpbmUsIGxpbmVsZW4gKTsKKyAgICAgIGVycm9yID0gYmRmX2xpc3Rfc3BsaXRfKCAmcC0+bGlzdCwgIiArIiwgbGluZSwgbGluZWxlbiApOwogICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgIGdvdG8gRXhpdDsKIAotICAgICAgZ2x5cGgtPmJieC53aWR0aCAgICA9IF9iZGZfYXRvdXMoIHAtPmxpc3QuZmllbGRbMV0gKTsKLSAgICAgIGdseXBoLT5iYnguaGVpZ2h0ICAgPSBfYmRmX2F0b3VzKCBwLT5saXN0LmZpZWxkWzJdICk7Ci0gICAgICBnbHlwaC0+YmJ4Lnhfb2Zmc2V0ID0gX2JkZl9hdG9zKCBwLT5saXN0LmZpZWxkWzNdICk7Ci0gICAgICBnbHlwaC0+YmJ4Lnlfb2Zmc2V0ID0gX2JkZl9hdG9zKCBwLT5saXN0LmZpZWxkWzRdICk7CisgICAgICBnbHlwaC0+YmJ4LndpZHRoICAgID0gYmRmX2F0b3VzXyggcC0+bGlzdC5maWVsZFsxXSApOworICAgICAgZ2x5cGgtPmJieC5oZWlnaHQgICA9IGJkZl9hdG91c18oIHAtPmxpc3QuZmllbGRbMl0gKTsKKyAgICAgIGdseXBoLT5iYngueF9vZmZzZXQgPSBiZGZfYXRvc18oIHAtPmxpc3QuZmllbGRbM10gKTsKKyAgICAgIGdseXBoLT5iYngueV9vZmZzZXQgPSBiZGZfYXRvc18oIHAtPmxpc3QuZmllbGRbNF0gKTsKIAogICAgICAgLyogR2VuZXJhdGUgdGhlIGFzY2VudCBhbmQgZGVzY2VudCBvZiB0aGUgY2hhcmFjdGVyLiAqLwogICAgICAgZ2x5cGgtPmJieC5hc2NlbnQgID0gKHNob3J0KSggZ2x5cGgtPmJieC5oZWlnaHQgKyBnbHlwaC0+YmJ4Lnlfb2Zmc2V0ICk7CkBAIC0xNjg2LDcgKzE2ODIsNyBAQAogICAgICAgewogICAgICAgICAvKiBNaXNzaW5nIERXSURUSCBmaWVsZC4gIEVtaXQgYW4gYXV0byBjb3JyZWN0aW9uIG1lc3NhZ2UgYW5kIHNldCAqLwogICAgICAgICAvKiB0aGUgZGV2aWNlIHdpZHRoIHRvIHRoZSBnbHlwaCB3aWR0aC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICBGVF9UUkFDRTIoKCAiX2JkZl9wYXJzZV9nbHlwaHM6ICIgQUNNU0cxMCwgbGluZW5vICkpOworICAgICAgICBGVF9UUkFDRTIoKCAiYmRmX3BhcnNlX2dseXBoc186ICIgQUNNU0cxMCwgbGluZW5vICkpOwogICAgICAgICBnbHlwaC0+ZHdpZHRoID0gZ2x5cGgtPmJieC53aWR0aDsKICAgICAgIH0KIApAQCAtMTcyMiw3ICsxNzE4LDcgQEAKICAgICAgIGlmICggISggcC0+ZmxhZ3MgJiBCREZfQkJYXyApICkKICAgICAgIHsKICAgICAgICAgLyogTWlzc2luZyBCQlggZmllbGQuICovCi0gICAgICAgIEZUX0VSUk9SKCggIl9iZGZfcGFyc2VfZ2x5cGhzOiAiIEVSUk1TRzEsIGxpbmVubywgIkJCWCIgKSk7CisgICAgICAgIEZUX0VSUk9SKCggImJkZl9wYXJzZV9nbHlwaHNfOiAiIEVSUk1TRzEsIGxpbmVubywgIkJCWCIgKSk7CiAgICAgICAgIGVycm9yID0gRlRfVEhST1coIE1pc3NpbmdfQmJ4X0ZpZWxkICk7CiAgICAgICAgIGdvdG8gRXhpdDsKICAgICAgIH0KQEAgLTE3MzMsNyArMTcyOSw3IEBACiAgICAgICBiaXRtYXBfc2l6ZSA9IGdseXBoLT5icHIgKiBnbHlwaC0+YmJ4LmhlaWdodDsKICAgICAgIGlmICggZ2x5cGgtPmJwciA+IDB4RkZGRlUgfHwgYml0bWFwX3NpemUgPiAweEZGRkZVICkKICAgICAgIHsKLSAgICAgICAgRlRfRVJST1IoKCAiX2JkZl9wYXJzZV9nbHlwaHM6ICIgRVJSTVNHNCwgbGluZW5vICkpOworICAgICAgICBGVF9FUlJPUigoICJiZGZfcGFyc2VfZ2x5cGhzXzogIiBFUlJNU0c0LCBsaW5lbm8gKSk7CiAgICAgICAgIGVycm9yID0gRlRfVEhST1coIEJieF9Ub29fQmlnICk7CiAgICAgICAgIGdvdG8gRXhpdDsKICAgICAgIH0KQEAgLTE3NDksMTMgKzE3NDUsMTMgQEAKICAgICAgIGdvdG8gRXhpdDsKICAgICB9CiAKLSAgICBGVF9FUlJPUigoICJfYmRmX3BhcnNlX2dseXBoczogIiBFUlJNU0c5LCBsaW5lbm8gKSk7CisgICAgRlRfRVJST1IoKCAiYmRmX3BhcnNlX2dseXBoc186ICIgRVJSTVNHOSwgbGluZW5vICkpOwogICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKICAgICBnb3RvIEV4aXQ7CiAKICAgTWlzc2luZ19FbmNvZGluZzoKICAgICAvKiBNaXNzaW5nIEVOQ09ESU5HIGZpZWxkLiAqLwotICAgIEZUX0VSUk9SKCggIl9iZGZfcGFyc2VfZ2x5cGhzOiAiIEVSUk1TRzEsIGxpbmVubywgIkVOQ09ESU5HIiApKTsKKyAgICBGVF9FUlJPUigoICJiZGZfcGFyc2VfZ2x5cGhzXzogIiBFUlJNU0cxLCBsaW5lbm8sICJFTkNPRElORyIgKSk7CiAgICAgZXJyb3IgPSBGVF9USFJPVyggTWlzc2luZ19FbmNvZGluZ19GaWVsZCApOwogCiAgIEV4aXQ6CkBAIC0xNzY4LDE1ICsxNzY0LDE1IEBACiAKICAgLyogTG9hZCB0aGUgZm9udCBwcm9wZXJ0aWVzLiAqLwogICBzdGF0aWMgRlRfRXJyb3IKLSAgX2JkZl9wYXJzZV9wcm9wZXJ0aWVzKCBjaGFyKiAgICAgICAgICBsaW5lLAorICBiZGZfcGFyc2VfcHJvcGVydGllc18oIGNoYXIqICAgICAgICAgIGxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAgbGluZWxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICAgICAgY2FsbF9kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgIGNsaWVudF9kYXRhICkKICAgewogICAgIHVuc2lnbmVkIGxvbmcgICAgICB2bGVuOwotICAgIF9iZGZfbGluZV9mdW5jX3QqICBuZXh0OwotICAgIF9iZGZfcGFyc2VfdCogICAgICBwOworICAgIGJkZl9saW5lX2Z1bmNfdF8qICBuZXh0OworICAgIGJkZl9wYXJzZV90XyogICAgICBwOwogICAgIGNoYXIqICAgICAgICAgICAgICBuYW1lOwogICAgIGNoYXIqICAgICAgICAgICAgICB2YWx1ZTsKICAgICBjaGFyICAgICAgICAgICAgICAgbmJ1ZlsxMjhdOwpAQCAtMTc4NSw4ICsxNzgxLDggQEAKICAgICBGVF9VTlVTRUQoIGxpbmVubyApOwogCiAKLSAgICBuZXh0ID0gKF9iZGZfbGluZV9mdW5jX3QgKiljYWxsX2RhdGE7Ci0gICAgcCAgICA9IChfYmRmX3BhcnNlX3QgKikgICAgY2xpZW50X2RhdGE7CisgICAgbmV4dCA9IChiZGZfbGluZV9mdW5jX3RfICopY2FsbF9kYXRhOworICAgIHAgICAgPSAoYmRmX3BhcnNlX3RfICopICAgIGNsaWVudF9kYXRhOwogCiAgICAgLyogQ2hlY2sgZm9yIHRoZSBlbmQgb2YgdGhlIHByb3BlcnRpZXMuICovCiAgICAgaWYgKCBfYmRmX3N0cm5jbXAoIGxpbmUsICJFTkRQUk9QRVJUSUVTIiwgMTMgKSA9PSAwICkKQEAgLTE4MDEsMjggKzE3OTcsMjggQEAKICAgICAgIHsKICAgICAgICAgcC0+Zm9udC0+Zm9udF9hc2NlbnQgPSBwLT5mb250LT5iYnguYXNjZW50OwogICAgICAgICBmdF9zcHJpbnRmKCBuYnVmLCAiJWhkIiwgcC0+Zm9udC0+YmJ4LmFzY2VudCApOwotICAgICAgICBlcnJvciA9IF9iZGZfYWRkX3Byb3BlcnR5KCBwLT5mb250LCAiRk9OVF9BU0NFTlQiLAorICAgICAgICBlcnJvciA9IGJkZl9hZGRfcHJvcGVydHlfKCBwLT5mb250LCAiRk9OVF9BU0NFTlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYnVmLCBsaW5lbm8gKTsKICAgICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgICAgZ290byBFeGl0OwogCi0gICAgICAgIEZUX1RSQUNFMigoICJfYmRmX3BhcnNlX3Byb3BlcnRpZXM6ICIgQUNNU0cxLCBwLT5mb250LT5iYnguYXNjZW50ICkpOworICAgICAgICBGVF9UUkFDRTIoKCAiYmRmX3BhcnNlX3Byb3BlcnRpZXNfOiAiIEFDTVNHMSwgcC0+Zm9udC0+YmJ4LmFzY2VudCApKTsKICAgICAgIH0KIAogICAgICAgaWYgKCBiZGZfZ2V0X2ZvbnRfcHJvcGVydHkoIHAtPmZvbnQsICJGT05UX0RFU0NFTlQiICkgPT0gMCApCiAgICAgICB7CiAgICAgICAgIHAtPmZvbnQtPmZvbnRfZGVzY2VudCA9IHAtPmZvbnQtPmJieC5kZXNjZW50OwogICAgICAgICBmdF9zcHJpbnRmKCBuYnVmLCAiJWhkIiwgcC0+Zm9udC0+YmJ4LmRlc2NlbnQgKTsKLSAgICAgICAgZXJyb3IgPSBfYmRmX2FkZF9wcm9wZXJ0eSggcC0+Zm9udCwgIkZPTlRfREVTQ0VOVCIsCisgICAgICAgIGVycm9yID0gYmRmX2FkZF9wcm9wZXJ0eV8oIHAtPmZvbnQsICJGT05UX0RFU0NFTlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYnVmLCBsaW5lbm8gKTsKICAgICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgICAgZ290byBFeGl0OwogCi0gICAgICAgIEZUX1RSQUNFMigoICJfYmRmX3BhcnNlX3Byb3BlcnRpZXM6ICIgQUNNU0cyLCBwLT5mb250LT5iYnguZGVzY2VudCApKTsKKyAgICAgICAgRlRfVFJBQ0UyKCggImJkZl9wYXJzZV9wcm9wZXJ0aWVzXzogIiBBQ01TRzIsIHAtPmZvbnQtPmJieC5kZXNjZW50ICkpOwogICAgICAgfQogCiAgICAgICBwLT5mbGFncyAmPSB+QkRGX1BST1BTXzsKLSAgICAgICpuZXh0ICAgICA9IF9iZGZfcGFyc2VfZ2x5cGhzOworICAgICAgKm5leHQgICAgID0gYmRmX3BhcnNlX2dseXBoc187CiAKICAgICAgIGdvdG8gRXhpdDsKICAgICB9CkBAIC0xODM5LDI3ICsxODM1LDI3IEBACiAgICAgICB2YWx1ZSArPSA3OwogICAgICAgaWYgKCAqdmFsdWUgKQogICAgICAgICAqdmFsdWUrKyA9IDA7Ci0gICAgICBlcnJvciA9IF9iZGZfYWRkX3Byb3BlcnR5KCBwLT5mb250LCBuYW1lLCB2YWx1ZSwgbGluZW5vICk7CisgICAgICBlcnJvciA9IGJkZl9hZGRfcHJvcGVydHlfKCBwLT5mb250LCBuYW1lLCB2YWx1ZSwgbGluZW5vICk7CiAgICAgICBpZiAoIGVycm9yICkKICAgICAgICAgZ290byBFeGl0OwogICAgIH0KLSAgICBlbHNlIGlmICggX2JkZl9pc19hdG9tKCBsaW5lLCBsaW5lbGVuLCAmbmFtZSwgJnZhbHVlLCBwLT5mb250ICkgKQorICAgIGVsc2UgaWYgKCBiZGZfaXNfYXRvbV8oIGxpbmUsIGxpbmVsZW4sICZuYW1lLCAmdmFsdWUsIHAtPmZvbnQgKSApCiAgICAgewotICAgICAgZXJyb3IgPSBfYmRmX2FkZF9wcm9wZXJ0eSggcC0+Zm9udCwgbmFtZSwgdmFsdWUsIGxpbmVubyApOworICAgICAgZXJyb3IgPSBiZGZfYWRkX3Byb3BlcnR5XyggcC0+Zm9udCwgbmFtZSwgdmFsdWUsIGxpbmVubyApOwogICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgIGdvdG8gRXhpdDsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgIGVycm9yID0gX2JkZl9saXN0X3NwbGl0KCAmcC0+bGlzdCwgIiArIiwgbGluZSwgbGluZWxlbiApOworICAgICAgZXJyb3IgPSBiZGZfbGlzdF9zcGxpdF8oICZwLT5saXN0LCAiICsiLCBsaW5lLCBsaW5lbGVuICk7CiAgICAgICBpZiAoIGVycm9yICkKICAgICAgICAgZ290byBFeGl0OwogICAgICAgbmFtZSA9IHAtPmxpc3QuZmllbGRbMF07CiAKLSAgICAgIF9iZGZfbGlzdF9zaGlmdCggJnAtPmxpc3QsIDEgKTsKLSAgICAgIHZhbHVlID0gX2JkZl9saXN0X2pvaW4oICZwLT5saXN0LCAnICcsICZ2bGVuICk7CisgICAgICBiZGZfbGlzdF9zaGlmdF8oICZwLT5saXN0LCAxICk7CisgICAgICB2YWx1ZSA9IGJkZl9saXN0X2pvaW5fKCAmcC0+bGlzdCwgJyAnLCAmdmxlbiApOwogCi0gICAgICBlcnJvciA9IF9iZGZfYWRkX3Byb3BlcnR5KCBwLT5mb250LCBuYW1lLCB2YWx1ZSwgbGluZW5vICk7CisgICAgICBlcnJvciA9IGJkZl9hZGRfcHJvcGVydHlfKCBwLT5mb250LCBuYW1lLCB2YWx1ZSwgbGluZW5vICk7CiAgICAgICBpZiAoIGVycm9yICkKICAgICAgICAgZ290byBFeGl0OwogICAgIH0KQEAgLTE4NzEsMTUgKzE4NjcsMTUgQEAKIAogICAvKiBMb2FkIHRoZSBmb250IGhlYWRlci4gKi8KICAgc3RhdGljIEZUX0Vycm9yCi0gIF9iZGZfcGFyc2Vfc3RhcnQoIGNoYXIqICAgICAgICAgIGxpbmUsCisgIGJkZl9wYXJzZV9zdGFydF8oIGNoYXIqICAgICAgICAgIGxpbmUsCiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgIGxpbmVsZW4sCiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgIGxpbmVubywKICAgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICAgICAgY2FsbF9kYXRhLAogICAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgICBjbGllbnRfZGF0YSApCiAgIHsKICAgICB1bnNpZ25lZCBsb25nICAgICAgc2xlbjsKLSAgICBfYmRmX2xpbmVfZnVuY190KiAgbmV4dDsKLSAgICBfYmRmX3BhcnNlX3QqICAgICAgcDsKKyAgICBiZGZfbGluZV9mdW5jX3RfKiAgbmV4dDsKKyAgICBiZGZfcGFyc2VfdF8qICAgICAgcDsKICAgICBiZGZfZm9udF90KiAgICAgICAgZm9udDsKICAgICBjaGFyICAgICAgICAgICAgICAgKnM7CiAKQEAgLTE4ODksOCArMTg4NSw4IEBACiAgICAgRlRfVU5VU0VEKCBsaW5lbm8gKTsgICAgICAgICAgICAvKiBvbmx5IHVzZWQgaW4gZGVidWcgbW9kZSAqLwogCiAKLSAgICBuZXh0ID0gKF9iZGZfbGluZV9mdW5jX3QgKiljYWxsX2RhdGE7Ci0gICAgcCAgICA9IChfYmRmX3BhcnNlX3QgKikgICAgY2xpZW50X2RhdGE7CisgICAgbmV4dCA9IChiZGZfbGluZV9mdW5jX3RfICopY2FsbF9kYXRhOworICAgIHAgICAgPSAoYmRmX3BhcnNlX3RfICopICAgIGNsaWVudF9kYXRhOwogCiAgICAgaWYgKCBwLT5mb250ICkKICAgICAgIG1lbW9yeSA9IHAtPmZvbnQtPm1lbW9yeTsKQEAgLTE5MDksNyArMTkwNSw3IEBACiAgICAgICAgICAgcysrOwogICAgICAgICAgIGxpbmVsZW4tLTsKICAgICAgICAgfQotICAgICAgICBlcnJvciA9IF9iZGZfYWRkX2NvbW1lbnQoIHAtPmZvbnQsIHMsIGxpbmVsZW4gKTsKKyAgICAgICAgZXJyb3IgPSBiZGZfYWRkX2NvbW1lbnRfKCBwLT5mb250LCBzLCBsaW5lbGVuICk7CiAgICAgICB9CiAgICAgICBnb3RvIEV4aXQ7CiAgICAgfQpAQCAtMTk0Myw4ICsxOTM5LDggQEAKICAgICAgICAgZXJyb3IgPSBmdF9oYXNoX3N0cl9pbml0KCAmKGZvbnQtPnByb3B0YmwpLCBtZW1vcnkgKTsKICAgICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgICAgZ290byBFeGl0OwotICAgICAgICBmb3IgKCBpID0gMCwgcHJvcCA9IChiZGZfcHJvcGVydHlfdCopX2JkZl9wcm9wZXJ0aWVzOwotICAgICAgICAgICAgICBpIDwgX251bV9iZGZfcHJvcGVydGllczsgaSsrLCBwcm9wKysgKQorICAgICAgICBmb3IgKCBpID0gMCwgcHJvcCA9IChiZGZfcHJvcGVydHlfdCopYmRmX3Byb3BlcnRpZXNfOworICAgICAgICAgICAgICBpIDwgbnVtX2JkZl9wcm9wZXJ0aWVzXzsgaSsrLCBwcm9wKysgKQogICAgICAgICB7CiAgICAgICAgICAgZXJyb3IgPSBmdF9oYXNoX3N0cl9pbnNlcnQoIHByb3AtPm5hbWUsIGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoZm9udC0+cHJvcHRibCksIG1lbW9yeSApOwpAQCAtMTk1Myw3ICsxOTQ5LDcgQEAKICAgICAgICAgfQogICAgICAgfQogCi0gICAgICBpZiAoIEZUX0FMTE9DKCBwLT5mb250LT5pbnRlcm5hbCwgc2l6ZW9mICggRlRfSGFzaFJlYyApICkgKQorICAgICAgaWYgKCBGVF9RQUxMT0MoIHAtPmZvbnQtPmludGVybmFsLCBzaXplb2YgKCBGVF9IYXNoUmVjICkgKSApCiAgICAgICAgIGdvdG8gRXhpdDsKICAgICAgIGVycm9yID0gZnRfaGFzaF9zdHJfaW5pdCggKEZUX0hhc2gpcC0+Zm9udC0+aW50ZXJuYWwsIG1lbW9yeSApOwogICAgICAgaWYgKCBlcnJvciApCkBAIC0xOTcwLDIzICsxOTY2LDIzIEBACiAgICAgICBpZiAoICEoIHAtPmZsYWdzICYgQkRGX0ZPTlRfQkJYXyApICkKICAgICAgIHsKICAgICAgICAgLyogTWlzc2luZyB0aGUgRk9OVEJPVU5ESU5HQk9YIGZpZWxkLiAqLwotICAgICAgICBGVF9FUlJPUigoICJfYmRmX3BhcnNlX3N0YXJ0OiAiIEVSUk1TRzEsIGxpbmVubywgIkZPTlRCT1VORElOR0JPWCIgKSk7CisgICAgICAgIEZUX0VSUk9SKCggImJkZl9wYXJzZV9zdGFydF86ICIgRVJSTVNHMSwgbGluZW5vLCAiRk9OVEJPVU5ESU5HQk9YIiApKTsKICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggTWlzc2luZ19Gb250Ym91bmRpbmdib3hfRmllbGQgKTsKICAgICAgICAgZ290byBFeGl0OwogICAgICAgfQogCi0gICAgICBlcnJvciA9IF9iZGZfbGlzdF9zcGxpdCggJnAtPmxpc3QsICIgKyIsIGxpbmUsIGxpbmVsZW4gKTsKKyAgICAgIGVycm9yID0gYmRmX2xpc3Rfc3BsaXRfKCAmcC0+bGlzdCwgIiArIiwgbGluZSwgbGluZWxlbiApOwogICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgIGdvdG8gRXhpdDsKIAogICAgICAgLyogYXQgdGhpcyBwb2ludCwgYHAtPmZvbnQnIGNhbid0IGJlIE5VTEwgKi8KLSAgICAgIHAtPmNudCA9IHAtPmZvbnQtPnByb3BzX3NpemUgPSBfYmRmX2F0b3VsKCBwLT5saXN0LmZpZWxkWzFdICk7CisgICAgICBwLT5jbnQgPSBwLT5mb250LT5wcm9wc19zaXplID0gYmRmX2F0b3VsXyggcC0+bGlzdC5maWVsZFsxXSApOwogICAgICAgLyogV2UgbmVlZCBhdCBsZWFzdCA0IGJ5dGVzIHBlciBwcm9wZXJ0eS4gKi8KICAgICAgIGlmICggcC0+Y250ID4gcC0+c2l6ZSAvIDQgKQogICAgICAgewogICAgICAgICBwLT5mb250LT5wcm9wc19zaXplID0gMDsKIAotICAgICAgICBGVF9FUlJPUigoICJfYmRmX3BhcnNlX2dseXBoczogIiBFUlJNU0c1LCBsaW5lbm8sICJTVEFSVFBST1BFUlRJRVMiICkpOworICAgICAgICBGVF9FUlJPUigoICJiZGZfcGFyc2VfZ2x5cGhzXzogIiBFUlJNU0c1LCBsaW5lbm8sICJTVEFSVFBST1BFUlRJRVMiICkpOwogICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CiAgICAgICAgIGdvdG8gRXhpdDsKICAgICAgIH0KQEAgLTE5OTgsNyArMTk5NCw3IEBACiAgICAgICB9CiAKICAgICAgIHAtPmZsYWdzIHw9IEJERl9QUk9QU187Ci0gICAgICAqbmV4dCAgICAgPSBfYmRmX3BhcnNlX3Byb3BlcnRpZXM7CisgICAgICAqbmV4dCAgICAgPSBiZGZfcGFyc2VfcHJvcGVydGllc187CiAKICAgICAgIGdvdG8gRXhpdDsKICAgICB9CkBAIC0yMDA5LDIwICsyMDA1LDIwIEBACiAgICAgICBpZiAoICEoIHAtPmZsYWdzICYgQkRGX1NJWkVfICkgKQogICAgICAgewogICAgICAgICAvKiBNaXNzaW5nIHRoZSBTSVpFIGZpZWxkLiAqLwotICAgICAgICBGVF9FUlJPUigoICJfYmRmX3BhcnNlX3N0YXJ0OiAiIEVSUk1TRzEsIGxpbmVubywgIlNJWkUiICkpOworICAgICAgICBGVF9FUlJPUigoICJiZGZfcGFyc2Vfc3RhcnRfOiAiIEVSUk1TRzEsIGxpbmVubywgIlNJWkUiICkpOwogICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBNaXNzaW5nX1NpemVfRmllbGQgKTsKICAgICAgICAgZ290byBFeGl0OwogICAgICAgfQogCi0gICAgICBlcnJvciA9IF9iZGZfbGlzdF9zcGxpdCggJnAtPmxpc3QsICIgKyIsIGxpbmUsIGxpbmVsZW4gKTsKKyAgICAgIGVycm9yID0gYmRmX2xpc3Rfc3BsaXRfKCAmcC0+bGlzdCwgIiArIiwgbGluZSwgbGluZWxlbiApOwogICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgIGdvdG8gRXhpdDsKIAotICAgICAgcC0+Zm9udC0+YmJ4LndpZHRoICA9IF9iZGZfYXRvdXMoIHAtPmxpc3QuZmllbGRbMV0gKTsKLSAgICAgIHAtPmZvbnQtPmJieC5oZWlnaHQgPSBfYmRmX2F0b3VzKCBwLT5saXN0LmZpZWxkWzJdICk7CisgICAgICBwLT5mb250LT5iYngud2lkdGggID0gYmRmX2F0b3VzXyggcC0+bGlzdC5maWVsZFsxXSApOworICAgICAgcC0+Zm9udC0+YmJ4LmhlaWdodCA9IGJkZl9hdG91c18oIHAtPmxpc3QuZmllbGRbMl0gKTsKIAotICAgICAgcC0+Zm9udC0+YmJ4Lnhfb2Zmc2V0ID0gX2JkZl9hdG9zKCBwLT5saXN0LmZpZWxkWzNdICk7Ci0gICAgICBwLT5mb250LT5iYngueV9vZmZzZXQgPSBfYmRmX2F0b3MoIHAtPmxpc3QuZmllbGRbNF0gKTsKKyAgICAgIHAtPmZvbnQtPmJieC54X29mZnNldCA9IGJkZl9hdG9zXyggcC0+bGlzdC5maWVsZFszXSApOworICAgICAgcC0+Zm9udC0+YmJ4Lnlfb2Zmc2V0ID0gYmRmX2F0b3NfKCBwLT5saXN0LmZpZWxkWzRdICk7CiAKICAgICAgIHAtPmZvbnQtPmJieC5hc2NlbnQgID0gKHNob3J0KSggcC0+Zm9udC0+YmJ4LmhlaWdodCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAtPmZvbnQtPmJieC55X29mZnNldCApOwpAQCAtMjAzNywxNiArMjAzMywxNiBAQAogICAgIC8qIFRoZSBuZXh0IHRoaW5nIHRvIGNoZWNrIGZvciBpcyB0aGUgRk9OVCBmaWVsZC4gKi8KICAgICBpZiAoIF9iZGZfc3RybmNtcCggbGluZSwgIkZPTlQiLCA0ICkgPT0gMCApCiAgICAgewotICAgICAgZXJyb3IgPSBfYmRmX2xpc3Rfc3BsaXQoICZwLT5saXN0LCAiICsiLCBsaW5lLCBsaW5lbGVuICk7CisgICAgICBlcnJvciA9IGJkZl9saXN0X3NwbGl0XyggJnAtPmxpc3QsICIgKyIsIGxpbmUsIGxpbmVsZW4gKTsKICAgICAgIGlmICggZXJyb3IgKQogICAgICAgICBnb3RvIEV4aXQ7Ci0gICAgICBfYmRmX2xpc3Rfc2hpZnQoICZwLT5saXN0LCAxICk7CisgICAgICBiZGZfbGlzdF9zaGlmdF8oICZwLT5saXN0LCAxICk7CiAKLSAgICAgIHMgPSBfYmRmX2xpc3Rfam9pbiggJnAtPmxpc3QsICcgJywgJnNsZW4gKTsKKyAgICAgIHMgPSBiZGZfbGlzdF9qb2luXyggJnAtPmxpc3QsICcgJywgJnNsZW4gKTsKIAogICAgICAgaWYgKCAhcyApCiAgICAgICB7Ci0gICAgICAgIEZUX0VSUk9SKCggIl9iZGZfcGFyc2Vfc3RhcnQ6ICIgRVJSTVNHOCwgbGluZW5vLCAiRk9OVCIgKSk7CisgICAgICAgIEZUX0VSUk9SKCggImJkZl9wYXJzZV9zdGFydF86ICIgRVJSTVNHOCwgbGluZW5vLCAiRk9OVCIgKSk7CiAgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKICAgICAgICAgZ290byBFeGl0OwogICAgICAgfQpAQCAtMjA2MCw3ICsyMDU2LDcgQEAKIAogICAgICAgLyogSWYgdGhlIGZvbnQgbmFtZSBpcyBhbiBYTEZEIG5hbWUsIHNldCB0aGUgc3BhY2luZyB0byB0aGUgb25lIGluICAqLwogICAgICAgLyogdGhlIGZvbnQgbmFtZS4gIElmIHRoZXJlIGlzIG5vIHNwYWNpbmcgZmFsbCBiYWNrIG9uIHRoZSBkZWZhdWx0LiAqLwotICAgICAgZXJyb3IgPSBfYmRmX3NldF9kZWZhdWx0X3NwYWNpbmcoIHAtPmZvbnQsIHAtPm9wdHMsIGxpbmVubyApOworICAgICAgZXJyb3IgPSBiZGZfc2V0X2RlZmF1bHRfc3BhY2luZ18oIHAtPmZvbnQsIHAtPm9wdHMsIGxpbmVubyApOwogICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgIGdvdG8gRXhpdDsKIApAQCAtMjA3NSwxOCArMjA3MSwxOCBAQAogICAgICAgaWYgKCAhKCBwLT5mbGFncyAmIEJERl9GT05UX05BTUVfICkgKQogICAgICAgewogICAgICAgICAvKiBNaXNzaW5nIHRoZSBGT05UIGZpZWxkLiAqLwotICAgICAgICBGVF9FUlJPUigoICJfYmRmX3BhcnNlX3N0YXJ0OiAiIEVSUk1TRzEsIGxpbmVubywgIkZPTlQiICkpOworICAgICAgICBGVF9FUlJPUigoICJiZGZfcGFyc2Vfc3RhcnRfOiAiIEVSUk1TRzEsIGxpbmVubywgIkZPTlQiICkpOwogICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBNaXNzaW5nX0ZvbnRfRmllbGQgKTsKICAgICAgICAgZ290byBFeGl0OwogICAgICAgfQogCi0gICAgICBlcnJvciA9IF9iZGZfbGlzdF9zcGxpdCggJnAtPmxpc3QsICIgKyIsIGxpbmUsIGxpbmVsZW4gKTsKKyAgICAgIGVycm9yID0gYmRmX2xpc3Rfc3BsaXRfKCAmcC0+bGlzdCwgIiArIiwgbGluZSwgbGluZWxlbiApOwogICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgIGdvdG8gRXhpdDsKIAotICAgICAgcC0+Zm9udC0+cG9pbnRfc2l6ZSAgID0gX2JkZl9hdG91bCggcC0+bGlzdC5maWVsZFsxXSApOwotICAgICAgcC0+Zm9udC0+cmVzb2x1dGlvbl94ID0gX2JkZl9hdG91bCggcC0+bGlzdC5maWVsZFsyXSApOwotICAgICAgcC0+Zm9udC0+cmVzb2x1dGlvbl95ID0gX2JkZl9hdG91bCggcC0+bGlzdC5maWVsZFszXSApOworICAgICAgcC0+Zm9udC0+cG9pbnRfc2l6ZSAgID0gYmRmX2F0b3VsXyggcC0+bGlzdC5maWVsZFsxXSApOworICAgICAgcC0+Zm9udC0+cmVzb2x1dGlvbl94ID0gYmRmX2F0b3VsXyggcC0+bGlzdC5maWVsZFsyXSApOworICAgICAgcC0+Zm9udC0+cmVzb2x1dGlvbl95ID0gYmRmX2F0b3VsXyggcC0+bGlzdC5maWVsZFszXSApOwogCiAgICAgICAvKiBDaGVjayBmb3IgdGhlIGJpdHMgcGVyIHBpeGVsIGZpZWxkLiAqLwogICAgICAgaWYgKCBwLT5saXN0LnVzZWQgPT0gNSApCkBAIC0yMDk0LDcgKzIwOTAsNyBAQAogICAgICAgICB1bnNpZ25lZCBzaG9ydCBicHA7CiAKIAotICAgICAgICBicHAgPSBfYmRmX2F0b3VzKCBwLT5saXN0LmZpZWxkWzRdICk7CisgICAgICAgIGJwcCA9IGJkZl9hdG91c18oIHAtPmxpc3QuZmllbGRbNF0gKTsKIAogICAgICAgICAvKiBPbmx5IHZhbHVlcyAxLCAyLCA0LCA4IGFyZSBhbGxvd2VkIGZvciBncmV5bWFwIGZvbnRzLiAqLwogICAgICAgICBpZiAoIGJwcCA+IDQgKQpAQCAtMjEwNyw3ICsyMTAzLDcgQEAKICAgICAgICAgICBwLT5mb250LT5icHAgPSAxOwogCiAgICAgICAgIGlmICggcC0+Zm9udC0+YnBwICE9IGJwcCApCi0gICAgICAgICAgRlRfVFJBQ0UyKCggIl9iZGZfcGFyc2Vfc3RhcnQ6ICIgQUNNU0cxMSwgcC0+Zm9udC0+YnBwICkpOworICAgICAgICAgIEZUX1RSQUNFMigoICJiZGZfcGFyc2Vfc3RhcnRfOiAiIEFDTVNHMTEsIHAtPmZvbnQtPmJwcCApKTsKICAgICAgIH0KICAgICAgIGVsc2UKICAgICAgICAgcC0+Zm9udC0+YnBwID0gMTsKQEAgLTIxMjYsNyArMjEyMiw3IEBACiAgICAgICBpZiAoICEoIHAtPmZsYWdzICYgQkRGX0ZPTlRfQkJYXyApICkKICAgICAgIHsKICAgICAgICAgLyogTWlzc2luZyB0aGUgRk9OVEJPVU5ESU5HQk9YIGZpZWxkLiAqLwotICAgICAgICBGVF9FUlJPUigoICJfYmRmX3BhcnNlX3N0YXJ0OiAiIEVSUk1TRzEsIGxpbmVubywgIkZPTlRCT1VORElOR0JPWCIgKSk7CisgICAgICAgIEZUX0VSUk9SKCggImJkZl9wYXJzZV9zdGFydF86ICIgRVJSTVNHMSwgbGluZW5vLCAiRk9OVEJPVU5ESU5HQk9YIiApKTsKICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggTWlzc2luZ19Gb250Ym91bmRpbmdib3hfRmllbGQgKTsKICAgICAgICAgZ290byBFeGl0OwogICAgICAgfQpAQCAtMjEzNSwyOCArMjEzMSwyOCBAQAogICAgICAgLyogZm9yIGNvbXBpbGluZyBmb250cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICBwLT5mb250LT5mb250X2FzY2VudCA9IHAtPmZvbnQtPmJieC5hc2NlbnQ7CiAgICAgICBmdF9zcHJpbnRmKCBuYnVmLCAiJWhkIiwgcC0+Zm9udC0+YmJ4LmFzY2VudCApOwotICAgICAgZXJyb3IgPSBfYmRmX2FkZF9wcm9wZXJ0eSggcC0+Zm9udCwgIkZPTlRfQVNDRU5UIiwKKyAgICAgIGVycm9yID0gYmRmX2FkZF9wcm9wZXJ0eV8oIHAtPmZvbnQsICJGT05UX0FTQ0VOVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYnVmLCBsaW5lbm8gKTsKICAgICAgIGlmICggZXJyb3IgKQogICAgICAgICBnb3RvIEV4aXQ7Ci0gICAgICBGVF9UUkFDRTIoKCAiX2JkZl9wYXJzZV9wcm9wZXJ0aWVzOiAiIEFDTVNHMSwgcC0+Zm9udC0+YmJ4LmFzY2VudCApKTsKKyAgICAgIEZUX1RSQUNFMigoICJiZGZfcGFyc2VfcHJvcGVydGllc186ICIgQUNNU0cxLCBwLT5mb250LT5iYnguYXNjZW50ICkpOwogCiAgICAgICBwLT5mb250LT5mb250X2Rlc2NlbnQgPSBwLT5mb250LT5iYnguZGVzY2VudDsKICAgICAgIGZ0X3NwcmludGYoIG5idWYsICIlaGQiLCBwLT5mb250LT5iYnguZGVzY2VudCApOwotICAgICAgZXJyb3IgPSBfYmRmX2FkZF9wcm9wZXJ0eSggcC0+Zm9udCwgIkZPTlRfREVTQ0VOVCIsCisgICAgICBlcnJvciA9IGJkZl9hZGRfcHJvcGVydHlfKCBwLT5mb250LCAiRk9OVF9ERVNDRU5UIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5idWYsIGxpbmVubyApOwogICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgIGdvdG8gRXhpdDsKLSAgICAgIEZUX1RSQUNFMigoICJfYmRmX3BhcnNlX3Byb3BlcnRpZXM6ICIgQUNNU0cyLCBwLT5mb250LT5iYnguZGVzY2VudCApKTsKKyAgICAgIEZUX1RSQUNFMigoICJiZGZfcGFyc2VfcHJvcGVydGllc186ICIgQUNNU0cyLCBwLT5mb250LT5iYnguZGVzY2VudCApKTsKIAotICAgICAgKm5leHQgPSBfYmRmX3BhcnNlX2dseXBoczsKKyAgICAgICpuZXh0ID0gYmRmX3BhcnNlX2dseXBoc187CiAKICAgICAgIC8qIEEgc3BlY2lhbCByZXR1cm4gdmFsdWUuICovCiAgICAgICBlcnJvciA9IC0xOwogICAgICAgZ290byBFeGl0OwogICAgIH0KIAotICAgIEZUX0VSUk9SKCggIl9iZGZfcGFyc2Vfc3RhcnQ6ICIgRVJSTVNHOSwgbGluZW5vICkpOworICAgIEZUX0VSUk9SKCggImJkZl9wYXJzZV9zdGFydF86ICIgRVJSTVNHOSwgbGluZW5vICkpOwogICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKIAogICBFeGl0OgpAQCAtMjE3OCw3ICsyMTc0LDcgQEAKICAgICAgICAgICAgICAgICAgYmRmX2ZvbnRfdCogICAgKmZvbnQgKQogICB7CiAgICAgdW5zaWduZWQgbG9uZyAgbGluZW5vID0gMDsgLyogbWFrZSBjb21waWxlciBoYXBweSAqLwotICAgIF9iZGZfcGFyc2VfdCAgICpwICAgICA9IE5VTEw7CisgICAgYmRmX3BhcnNlX3RfICAgKnAgICAgID0gTlVMTDsKIAogICAgIEZUX0Vycm9yICBlcnJvciA9IEZUX0Vycl9PazsKIApAQCAtMjE4NiwxNCArMjE4MiwxNCBAQAogICAgIGlmICggRlRfTkVXKCBwICkgKQogICAgICAgZ290byBFeGl0OwogCi0gICAgcC0+b3B0cyAgID0gKGJkZl9vcHRpb25zX3QqKSggb3B0cyA/IG9wdHMgOiAmX2JkZl9vcHRzICk7CisgICAgcC0+b3B0cyAgID0gKGJkZl9vcHRpb25zX3QqKSggb3B0cyA/IG9wdHMgOiAmYmRmX29wdHNfICk7CiAgICAgcC0+bWlubGIgID0gMzI3Njc7CiAgICAgcC0+c2l6ZSAgID0gc3RyZWFtLT5zaXplOwogICAgIHAtPm1lbW9yeSA9IG1lbW9yeTsgIC8qIG9ubHkgZHVyaW5nIGZvbnQgY3JlYXRpb24gKi8KIAotICAgIF9iZGZfbGlzdF9pbml0KCAmcC0+bGlzdCwgbWVtb3J5ICk7CisgICAgYmRmX2xpc3RfaW5pdF8oICZwLT5saXN0LCBtZW1vcnkgKTsKIAotICAgIGVycm9yID0gX2JkZl9yZWFkc3RyZWFtKCBzdHJlYW0sIF9iZGZfcGFyc2Vfc3RhcnQsCisgICAgZXJyb3IgPSBiZGZfcmVhZHN0cmVhbV8oIHN0cmVhbSwgYmRmX3BhcnNlX3N0YXJ0XywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilwLCAmbGluZW5vICk7CiAgICAgaWYgKCBlcnJvciApCiAgICAgICBnb3RvIEZhaWw7CkBAIC0yMjg3LDcgKzIyODMsNyBAQAogICBFeGl0OgogICAgIGlmICggcCApCiAgICAgewotICAgICAgX2JkZl9saXN0X2RvbmUoICZwLT5saXN0ICk7CisgICAgICBiZGZfbGlzdF9kb25lXyggJnAtPmxpc3QgKTsKIAogICAgICAgRlRfRlJFRSggcC0+Z2x5cGhfbmFtZSApOwogICAgICAgRlRfRlJFRSggcCApOwpkaWZmIC0tZ2l0IGEvc3JjL2J6aXAyL2Z0YnppcDIuYyBiL3NyYy9iemlwMi9mdGJ6aXAyLmMKaW5kZXggMjk2Y2VhMC4uNmNmMTA2NyAxMDA2NDQKLS0tIGEvc3JjL2J6aXAyL2Z0YnppcDIuYworKysgYi9zcmMvYnppcDIvZnRiemlwMi5jCkBAIC04LDcgKzgsNyBAQAogICogcGFyc2UgY29tcHJlc3NlZCBQQ0YgZm9udHMsIGFzIGZvdW5kIHdpdGggbWFueSBYMTEgc2VydmVyCiAgKiBkaXN0cmlidXRpb25zLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMyBieQogICogSm9lbCBLbGluZ2hlZC4KICAqCiAgKiBiYXNlZCBvbiBgc3JjL2d6aXAvZnRnemlwLmMnCkBAIC01Nyw4ICs1Nyw5IEBACiAgIC8qIGl0IGlzIGJldHRlciB0byB1c2UgRnJlZVR5cGUgbWVtb3J5IHJvdXRpbmVzIGluc3RlYWQgb2YgcmF3CiAgICAgICdtYWxsb2MvZnJlZScgKi8KIAotICB0eXBlZGVmIHZvaWQgKigqIGFsbG9jX2Z1bmMpKHZvaWQqLCBpbnQsIGludCk7Ci0gIHR5cGVkZWYgdm9pZCAoKiBmcmVlX2Z1bmMpKHZvaWQqLCB2b2lkKik7CisgIHR5cGVkZWYgdm9pZCogKCphbGxvY19mdW5jKSggdm9pZCosIGludCwgaW50ICk7CisgIHR5cGVkZWYgdm9pZCAgKCpmcmVlX2Z1bmMpICggdm9pZCosIHZvaWQqICk7CisKIAogICBzdGF0aWMgdm9pZCoKICAgZnRfYnppcDJfYWxsb2MoIEZUX01lbW9yeSAgbWVtb3J5LApAQCAtMTAyLDEwICsxMDMsMTEgQEAKIAogICAgIEZUX0J5dGUgICAgaW5wdXRbRlRfQlpJUDJfQlVGRkVSX1NJWkVdOyAgLyogaW5wdXQgcmVhZCBidWZmZXIgICovCiAKLSAgICBGVF9CeXRlICAgIGJ1ZmZlcltGVF9CWklQMl9CVUZGRVJfU0laRV07IC8qIG91dHB1dCBidWZmZXIgICAgICAqLwotICAgIEZUX1VMb25nICAgcG9zOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcG9zaXRpb24gaW4gb3V0cHV0ICovCisgICAgRlRfQnl0ZSAgICBidWZmZXJbRlRfQlpJUDJfQlVGRkVSX1NJWkVdOyAvKiBvdXRwdXQgYnVmZmVyICAgICAgICAgICovCisgICAgRlRfVUxvbmcgICBwb3M7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwb3NpdGlvbiBpbiBvdXRwdXQgICAgICovCiAgICAgRlRfQnl0ZSogICBjdXJzb3I7CiAgICAgRlRfQnl0ZSogICBsaW1pdDsKKyAgICBGVF9Cb29sICAgIHJlc2V0OyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlc2V0IGJlZm9yZSBuZXh0IHJlYWQgKi8KIAogICB9IEZUX0JaaXAyRmlsZVJlYywgKkZUX0JaaXAyRmlsZTsKIApAQCAtMTUzLDYgKzE1NSw3IEBACiAgICAgemlwLT5saW1pdCAgPSB6aXAtPmJ1ZmZlciArIEZUX0JaSVAyX0JVRkZFUl9TSVpFOwogICAgIHppcC0+Y3Vyc29yID0gemlwLT5saW1pdDsKICAgICB6aXAtPnBvcyAgICA9IDA7CisgICAgemlwLT5yZXNldCAgPSAwOwogCiAgICAgLyogY2hlY2sgLmJ6MiBoZWFkZXIgKi8KICAgICB7CkBAIC0yMjgsNiArMjMxLDcgQEAKICAgICAgIHppcC0+bGltaXQgID0gemlwLT5idWZmZXIgKyBGVF9CWklQMl9CVUZGRVJfU0laRTsKICAgICAgIHppcC0+Y3Vyc29yID0gemlwLT5saW1pdDsKICAgICAgIHppcC0+cG9zICAgID0gMDsKKyAgICAgIHppcC0+cmVzZXQgID0gMDsKIAogICAgICAgQloyX2J6RGVjb21wcmVzc0luaXQoIGJ6c3RyZWFtLCAwLCAwICk7CiAgICAgfQpAQCAtMzAyLDE4ICszMDYsMjMgQEAKIAogICAgICAgZXJyID0gQloyX2J6RGVjb21wcmVzcyggYnpzdHJlYW0gKTsKIAotICAgICAgaWYgKCBlcnIgPT0gQlpfU1RSRUFNX0VORCApCisgICAgICBpZiAoIGVyciAhPSBCWl9PSyApCiAgICAgICB7Ci0gICAgICAgIHppcC0+bGltaXQgPSAoRlRfQnl0ZSopYnpzdHJlYW0tPm5leHRfb3V0OwotICAgICAgICBpZiAoIHppcC0+bGltaXQgPT0gemlwLT5jdXJzb3IgKQotICAgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfU3RyZWFtX09wZXJhdGlvbiApOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKCBlcnIgIT0gQlpfT0sgKQotICAgICAgewotICAgICAgICB6aXAtPmxpbWl0ID0gemlwLT5jdXJzb3I7Ci0gICAgICAgIGVycm9yICAgICAgPSBGVF9USFJPVyggSW52YWxpZF9TdHJlYW1fT3BlcmF0aW9uICk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICB6aXAtPnJlc2V0ID0gMTsKKworICAgICAgICBpZiAoIGVyciA9PSBCWl9TVFJFQU1fRU5EICkKKyAgICAgICAgeworICAgICAgICAgIHppcC0+bGltaXQgPSAoRlRfQnl0ZSopYnpzdHJlYW0tPm5leHRfb3V0OworICAgICAgICAgIGlmICggemlwLT5saW1pdCA9PSB6aXAtPmN1cnNvciApCisgICAgICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1N0cmVhbV9PcGVyYXRpb24gKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICB6aXAtPmxpbWl0ID0gemlwLT5jdXJzb3I7CisgICAgICAgICAgZXJyb3IgICAgICA9IEZUX1RIUk9XKCBJbnZhbGlkX1N0cmVhbV9PcGVyYXRpb24gKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgfQogICAgIH0KIApAQCAtMzYzLDkgKzM3Miw5IEBACiAgICAgRlRfRXJyb3IgIGVycm9yOwogCiAKLSAgICAvKiBSZXNldCBpbmZsYXRlIHN0cmVhbSBpZiB3ZSdyZSBzZWVraW5nIGJhY2t3YXJkcy4gICAgICAgICovCi0gICAgLyogWWVzLCB0aGF0IGlzIG5vdCB0b28gZWZmaWNpZW50LCBidXQgaXQgc2F2ZXMgbWVtb3J5IDotKSAqLwotICAgIGlmICggcG9zIDwgemlwLT5wb3MgKQorICAgIC8qIFJlc2V0IGluZmxhdGUgc3RyZWFtIGlmIHNlZWtpbmcgYmFja3dhcmRzIG9yIGJ6aXAgcmVwb3J0ZWQgYW4gZXJyb3IuICovCisgICAgLyogWWVzLCB0aGF0IGlzIG5vdCB0b28gZWZmaWNpZW50LCBidXQgaXQgc2F2ZXMgbWVtb3J5IDotKSAgICAgICAgICAgICAgKi8KKyAgICBpZiAoIHBvcyA8IHppcC0+cG9zIHx8IHppcC0+cmVzZXQgKQogICAgIHsKICAgICAgIGVycm9yID0gZnRfYnppcDJfZmlsZV9yZXNldCggemlwICk7CiAgICAgICBpZiAoIGVycm9yICkKZGlmZiAtLWdpdCBhL3NyYy9iemlwMi9ydWxlcy5tayBiL3NyYy9iemlwMi9ydWxlcy5tawppbmRleCBlNTg0Mjc3Li5mNGQzNzMzIDEwMDY0NAotLS0gYS9zcmMvYnppcDIvcnVsZXMubWsKKysrIGIvc3JjL2J6aXAyL3J1bGVzLm1rCkBAIC0yLDcgKzIsNyBAQAogIyBGcmVlVHlwZSAyIEJaSVAyIHN1cHBvcnQgY29uZmlndXJhdGlvbiBydWxlcwogIwogCi0jIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAxMC0yMDIzIGJ5CiAjIEpvZWwgS2xpbmdoZWQuCiAjCiAjIGJhc2VkIG9uIGBzcmMvbHp3L3J1bGVzLm1rJwpkaWZmIC0tZ2l0IGEvc3JjL2NhY2hlL2Z0Y2FjaGUuYyBiL3NyYy9jYWNoZS9mdGNhY2hlLmMKaW5kZXggZGRkM2U0My4uMWFmMmU2NyAxMDA2NDQKLS0tIGEvc3JjL2NhY2hlL2Z0Y2FjaGUuYworKysgYi9zcmMvY2FjaGUvZnRjYWNoZS5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVGhlIEZyZWVUeXBlIENhY2hpbmcgc3ViLXN5c3RlbSAoYm9keSBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvY2FjaGUvZnRjYmFzaWMuYyBiL3NyYy9jYWNoZS9mdGNiYXNpYy5jCmluZGV4IDE3NjBjNWYuLjRjNmQ0MWIgMTAwNjQ0Ci0tLSBhL3NyYy9jYWNoZS9mdGNiYXNpYy5jCisrKyBiL3NyYy9jYWNoZS9mdGNiYXNpYy5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVGhlIEZyZWVUeXBlIGJhc2ljIGNhY2hlIGludGVyZmFjZSAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImZ0Y2NiYWNrLmgiCiAjaW5jbHVkZSAiZnRjZXJyb3IuaCIKIAorI3VuZGVmICBGVF9DT01QT05FTlQKICNkZWZpbmUgRlRfQ09NUE9ORU5UICBjYWNoZQogCiAKQEAgLTExOSw4ICsxMjAsNyBAQAogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKCAhZXJyb3IgKQotICAgICAgcmVzdWx0ID0gKEZUX1VJbnQpZmFjZS0+bnVtX2dseXBoczsKKyAgICByZXN1bHQgPSAoRlRfVUludClmYWNlLT5udW1fZ2x5cGhzOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKICAgfQpAQCAtMTgyLDcgKzE4Miw4IEBACiAgICAgICBpZiAoICFlcnJvciApCiAgICAgICB7CiAgICAgICAgIGlmICggZmFjZS0+Z2x5cGgtPmZvcm1hdCA9PSBGVF9HTFlQSF9GT1JNQVRfQklUTUFQICB8fAotICAgICAgICAgICAgIGZhY2UtPmdseXBoLT5mb3JtYXQgPT0gRlRfR0xZUEhfRk9STUFUX09VVExJTkUgKQorICAgICAgICAgICAgIGZhY2UtPmdseXBoLT5mb3JtYXQgPT0gRlRfR0xZUEhfRk9STUFUX09VVExJTkUgfHwKKyAgICAgICAgICAgICBmYWNlLT5nbHlwaC0+Zm9ybWF0ID09IEZUX0dMWVBIX0ZPUk1BVF9TVkcgICAgICkKICAgICAgICAgewogICAgICAgICAgIC8qIG9rLCBjb3B5IGl0ICovCiAgICAgICAgICAgRlRfR2x5cGggIGdseXBoOwpAQCAtMzE4LDcgKzMxOSw3IEBACiAjaWYgMHhGRkZGRkZGRlVMID4gRlRfVUlOVF9NQVgKICAgICBpZiAoICh0eXBlLT5mbGFncyAmIChGVF9VTG9uZylGVF9VSU5UX01BWCkgKQogICAgICAgRlRfVFJBQ0UxKCggIkZUQ19JbWFnZUNhY2hlX0xvb2t1cDoiCi0gICAgICAgICAgICAgICAgICAiIGhpZ2hlciBiaXRzIGluIGxvYWRfZmxhZ3MgMHgleCBhcmUgZHJvcHBlZFxuIiwKKyAgICAgICAgICAgICAgICAgICIgaGlnaGVyIGJpdHMgaW4gbG9hZF9mbGFncyAweCVseCBhcmUgZHJvcHBlZFxuIiwKICAgICAgICAgICAgICAgICAgIChGVF9VTG9uZyl0eXBlLT5mbGFncyAmIH4oKEZUX1VMb25nKUZUX1VJTlRfTUFYKSApKTsKICNlbmRpZgogCkBAIC01MTYsNyArNTE3LDcgQEAKICNpZiAweEZGRkZGRkZGVUwgPiBGVF9VSU5UX01BWAogICAgIGlmICggKHR5cGUtPmZsYWdzICYgKEZUX1VMb25nKUZUX1VJTlRfTUFYKSApCiAgICAgICBGVF9UUkFDRTEoKCAiRlRDX0ltYWdlQ2FjaGVfTG9va3VwOiIKLSAgICAgICAgICAgICAgICAgICIgaGlnaGVyIGJpdHMgaW4gbG9hZF9mbGFncyAweCV4IGFyZSBkcm9wcGVkXG4iLAorICAgICAgICAgICAgICAgICAgIiBoaWdoZXIgYml0cyBpbiBsb2FkX2ZsYWdzIDB4JWx4IGFyZSBkcm9wcGVkXG4iLAogICAgICAgICAgICAgICAgICAgKEZUX1VMb25nKXR5cGUtPmZsYWdzICYgfigoRlRfVUxvbmcpRlRfVUlOVF9NQVgpICkpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL3NyYy9jYWNoZS9mdGNjYWNoZS5jIGIvc3JjL2NhY2hlL2Z0Y2NhY2hlLmMKaW5kZXggNWJiZjMyOS4uZDU0ZTY4YyAxMDA2NDQKLS0tIGEvc3JjL2NhY2hlL2Z0Y2NhY2hlLmMKKysrIGIvc3JjL2NhY2hlL2Z0Y2NhY2hlLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUaGUgRnJlZVR5cGUgaW50ZXJuYWwgY2FjaGUgaW50ZXJmYWNlIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0zMDcsNyArMzA3LDcgQEAKICNpZiAwCiAgICAgLyogY2hlY2ssIGp1c3QgaW4gY2FzZSBvZiBnZW5lcmFsIGNvcnJ1cHRpb24gOi0pICovCiAgICAgaWYgKCBtYW5hZ2VyLT5udW1fbm9kZXMgPT0gMCApCi0gICAgICBGVF9UUkFDRTAoKCAiZnRjX25vZGVfZGVzdHJveTogaW52YWxpZCBjYWNoZSBub2RlIGNvdW50ICglZClcbiIsCisgICAgICBGVF9UUkFDRTAoKCAiZnRjX25vZGVfZGVzdHJveTogaW52YWxpZCBjYWNoZSBub2RlIGNvdW50ICgldSlcbiIsCiAgICAgICAgICAgICAgICAgICBtYW5hZ2VyLT5udW1fbm9kZXMgKSk7CiAjZW5kaWYKICAgfQpkaWZmIC0tZ2l0IGEvc3JjL2NhY2hlL2Z0Y2NhY2hlLmggYi9zcmMvY2FjaGUvZnRjY2FjaGUuaAppbmRleCA0ODQ5YjkyLi4yM2JjYjY1IDEwMDY0NAotLS0gYS9zcmMvY2FjaGUvZnRjY2FjaGUuaAorKysgYi9zcmMvY2FjaGUvZnRjY2FjaGUuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIGludGVybmFsIGNhY2hlIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMjEwLDcgKzIxMCw3IEBACiAjZGVmaW5lIEZUQ19DQUNIRV9MT09LVVBfQ01QKCBjYWNoZSwgbm9kZWNtcCwgaGFzaCwgcXVlcnksIG5vZGUsIGVycm9yICkgXAogICBGVF9CRUdJTl9TVE1OVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBGVENfTm9kZSAgICAgICAgICAgICAqX2J1Y2tldCwgKl9wbm9kZSwgX25vZGU7ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRlRDX0NhY2hlICAgICAgICAgICAgIF9jYWNoZSAgID0gRlRDX0NBQ0hFKGNhY2hlKTsgICAgICAgICAgICAgICAgICAgXAorICAgIEZUQ19DYWNoZSAgICAgICAgICAgICBfY2FjaGUgICA9IEZUQ19DQUNIRSggY2FjaGUgKTsgICAgICAgICAgICAgICAgIFwKICAgICBGVF9PZmZzZXQgICAgICAgICAgICAgX2hhc2ggICAgPSAoRlRfT2Zmc2V0KShoYXNoKTsgICAgICAgICAgICAgICAgICBcCiAgICAgRlRDX05vZGVfQ29tcGFyZUZ1bmMgIF9ub2Rjb21wID0gKEZUQ19Ob2RlX0NvbXBhcmVGdW5jKShub2RlY21wKTsgICAgXAogICAgIEZUX0Jvb2wgICAgICAgICAgICAgICBfbGlzdF9jaGFuZ2VkID0gRkFMU0U7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL3NyYy9jYWNoZS9mdGNjYmFjay5oIGIvc3JjL2NhY2hlL2Z0Y2NiYWNrLmgKaW5kZXggODE4NWZlMy4uNWY5ZGIyMSAxMDA2NDQKLS0tIGEvc3JjL2NhY2hlL2Z0Y2NiYWNrLmgKKysrIGIvc3JjL2NhY2hlL2Z0Y2NiYWNrLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBDYWxsYmFjayBmdW5jdGlvbnMgb2YgdGhlIGNhY2hpbmcgc3ViLXN5c3RlbSAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvY2FjaGUvZnRjY21hcC5jIGIvc3JjL2NhY2hlL2Z0Y2NtYXAuYwppbmRleCA0MGI0NDliLi44NGYyMmE2IDEwMDY0NAotLS0gYS9zcmMvY2FjaGUvZnRjY21hcC5jCisrKyBiL3NyYy9jYWNoZS9mdGNjbWFwLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBDaGFyTWFwIGNhY2hlIChib2R5KQogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTExNiw3ICsxMTYsNyBAQAogICAgIEZUX1VJbnQgICAgICAgIG5uOwogCiAKLSAgICBpZiAoICFGVF9ORVcoIG5vZGUgKSApCisgICAgaWYgKCAhRlRfUU5FVyggbm9kZSApICkKICAgICB7CiAgICAgICBub2RlLT5mYWNlX2lkICAgID0gcXVlcnktPmZhY2VfaWQ7CiAgICAgICBub2RlLT5jbWFwX2luZGV4ID0gcXVlcnktPmNtYXBfaW5kZXg7CkBAIC0yOTUsMjEgKzI5NSwxOSBAQAogICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgIGdvdG8gRXhpdDsKIAotICAgICAgaWYgKCAoRlRfVUludCljbWFwX2luZGV4IDwgKEZUX1VJbnQpZmFjZS0+bnVtX2NoYXJtYXBzICkKKyAgICAgIGlmICggY21hcF9pbmRleCA8IGZhY2UtPm51bV9jaGFybWFwcyApCiAgICAgICB7Ci0gICAgICAgIEZUX0NoYXJNYXAgIG9sZCwgY21hcCAgPSBOVUxMOworICAgICAgICBGVF9DaGFyTWFwICBvbGQgID0gZmFjZS0+Y2hhcm1hcDsKKyAgICAgICAgRlRfQ2hhck1hcCAgY21hcCA9IGZhY2UtPmNoYXJtYXBzW2NtYXBfaW5kZXhdOwogCiAKLSAgICAgICAgb2xkICA9IGZhY2UtPmNoYXJtYXA7Ci0gICAgICAgIGNtYXAgPSBmYWNlLT5jaGFybWFwc1tjbWFwX2luZGV4XTsKLQotICAgICAgICBpZiAoIG9sZCAhPSBjbWFwICYmICFub19jbWFwX2NoYW5nZSApCi0gICAgICAgICAgRlRfU2V0X0NoYXJtYXAoIGZhY2UsIGNtYXAgKTsKKyAgICAgICAgaWYgKCAhbm9fY21hcF9jaGFuZ2UgKQorICAgICAgICAgIGZhY2UtPmNoYXJtYXAgPSBjbWFwOwogCiAgICAgICAgIGdpbmRleCA9IEZUX0dldF9DaGFyX0luZGV4KCBmYWNlLCBjaGFyX2NvZGUgKTsKIAotICAgICAgICBpZiAoIG9sZCAhPSBjbWFwICYmICFub19jbWFwX2NoYW5nZSApCi0gICAgICAgICAgRlRfU2V0X0NoYXJtYXAoIGZhY2UsIG9sZCApOworICAgICAgICBpZiAoICFub19jbWFwX2NoYW5nZSApCisgICAgICAgICAgZmFjZS0+Y2hhcm1hcCA9IG9sZDsKICAgICAgIH0KIAogICAgICAgRlRDX0NNQVBfTk9ERSggbm9kZSApLT5pbmRpY2VzW2NoYXJfY29kZSAtCmRpZmYgLS1naXQgYS9zcmMvY2FjaGUvZnRjZXJyb3IuaCBiL3NyYy9jYWNoZS9mdGNlcnJvci5oCmluZGV4IDJjNmZhZjYuLmRjMWE2MjAgMTAwNjQ0Ci0tLSBhL3NyYy9jYWNoZS9mdGNlcnJvci5oCisrKyBiL3NyYy9jYWNoZS9mdGNlcnJvci5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQ2FjaGluZyBzdWItc3lzdGVtIGVycm9yIGNvZGVzIChzcGVjaWZpY2F0aW9uIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9jYWNoZS9mdGNnbHlwaC5jIGIvc3JjL2NhY2hlL2Z0Y2dseXBoLmMKaW5kZXggNTI3NzFjNy4uYjNmYjJmMiAxMDA2NDQKLS0tIGEvc3JjL2NhY2hlL2Z0Y2dseXBoLmMKKysrIGIvc3JjL2NhY2hlL2Z0Y2dseXBoLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBHbHlwaCBJbWFnZSAoRlRfR2x5cGgpIGNhY2hlIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvY2FjaGUvZnRjZ2x5cGguaCBiL3NyYy9jYWNoZS9mdGNnbHlwaC5oCmluZGV4IGNmMDBjZGMuLjcyOGQ0ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9jYWNoZS9mdGNnbHlwaC5oCisrKyBiL3NyYy9jYWNoZS9mdGNnbHlwaC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgYWJzdHJhY3QgZ2x5cGggY2FjaGUgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTE0MCw4ICsxNDAsOCBAQAogCiAgIH0gRlRDX0ZhbWlseVJlYywgKkZUQ19GYW1pbHk7CiAKLSNkZWZpbmUgIEZUQ19GQU1JTFkoeCkgICAgKCAoRlRDX0ZhbWlseSkoeCkgKQotI2RlZmluZSAgRlRDX0ZBTUlMWV9QKHgpICAoIChGVENfRmFtaWx5KikoeCkgKQorI2RlZmluZSAgRlRDX0ZBTUlMWSggeCApICAgICggKEZUQ19GYW1pbHkpKHgpICkKKyNkZWZpbmUgIEZUQ19GQU1JTFlfUCggeCApICAoIChGVENfRmFtaWx5KikoeCkgKQogCiAKICAgdHlwZWRlZiBzdHJ1Y3QgIEZUQ19HTm9kZVJlY18KQEAgLTI0NSw3ICsyNDUsNyBAQAogI2RlZmluZSBGVENfR0NBQ0hFX0NMQVNTKCB4ICkgICgoRlRDX0dDYWNoZUNsYXNzKSh4KSkKIAogI2RlZmluZSBGVENfQ0FDSEVfR0NBQ0hFX0NMQVNTKCB4ICkgXAotICAgICAgICAgIEZUQ19HQ0FDSEVfQ0xBU1MoIEZUQ19DQUNIRSh4KS0+b3JnX2NsYXNzICkKKyAgICAgICAgICBGVENfR0NBQ0hFX0NMQVNTKCBGVENfQ0FDSEUoIHggKS0+b3JnX2NsYXNzICkKICNkZWZpbmUgRlRDX0NBQ0hFX0ZBTUlMWV9DTEFTUyggeCApIFwKICAgICAgICAgICAoIChGVENfTXJ1TGlzdENsYXNzKUZUQ19DQUNIRV9HQ0FDSEVfQ0xBU1MoIHggKS0+ZmFtaWx5X2NsYXNzICkKIApkaWZmIC0tZ2l0IGEvc3JjL2NhY2hlL2Z0Y2ltYWdlLmMgYi9zcmMvY2FjaGUvZnRjaW1hZ2UuYwppbmRleCAzZjEyYTY1Li40MjhlNWUxIDEwMDY0NAotLS0gYS9zcmMvY2FjaGUvZnRjaW1hZ2UuYworKysgYi9zcmMvY2FjaGUvZnRjaW1hZ2UuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIEltYWdlIGNhY2hlIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC02NCw3ICs2NCw3IEBACiAgICAgRlRDX0lOb2RlICBpbm9kZSAgPSBOVUxMOwogCiAKLSAgICBpZiAoICFGVF9ORVcoIGlub2RlICkgKQorICAgIGlmICggIUZUX1FORVcoIGlub2RlICkgKQogICAgIHsKICAgICAgIEZUQ19HTm9kZSAgICAgICAgIGdub2RlICA9IEZUQ19HTk9ERSggaW5vZGUgKTsKICAgICAgIEZUQ19GYW1pbHkgICAgICAgIGZhbWlseSA9IGdxdWVyeS0+ZmFtaWx5OwpAQCAtNzQsNiArNzQsNyBAQAogCiAgICAgICAvKiBpbml0aWFsaXplIGl0cyBpbm5lciBmaWVsZHMgKi8KICAgICAgIEZUQ19HTm9kZV9Jbml0KCBnbm9kZSwgZ2luZGV4LCBmYW1pbHkgKTsKKyAgICAgIGlub2RlLT5nbHlwaCA9IE5VTEw7CiAKICAgICAgIC8qIHdlIHdpbGwgbm93IGxvYWQgdGhlIGdseXBoIGltYWdlICovCiAgICAgICBlcnJvciA9IGNsYXp6LT5mYW1pbHlfbG9hZF9nbHlwaCggZmFtaWx5LCBnaW5kZXgsIGNhY2hlLApkaWZmIC0tZ2l0IGEvc3JjL2NhY2hlL2Z0Y2ltYWdlLmggYi9zcmMvY2FjaGUvZnRjaW1hZ2UuaAppbmRleCA4YjI4ZDZmLi5kMmE4MDdmIDEwMDY0NAotLS0gYS9zcmMvY2FjaGUvZnRjaW1hZ2UuaAorKysgYi9zcmMvY2FjaGUvZnRjaW1hZ2UuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIEdlbmVyaWMgSW1hZ2UgY2FjaGUgKHNwZWNpZmljYXRpb24pCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtNTEsOCArNTEsOCBAQAogICB9IEZUQ19JTm9kZVJlYywgKkZUQ19JTm9kZTsKIAogI2RlZmluZSBGVENfSU5PREUoIHggKSAgICAgICAgICggKEZUQ19JTm9kZSkoIHggKSApCi0jZGVmaW5lIEZUQ19JTk9ERV9HSU5ERVgoIHggKSAgRlRDX0dOT0RFKHgpLT5naW5kZXgKLSNkZWZpbmUgRlRDX0lOT0RFX0ZBTUlMWSggeCApICBGVENfR05PREUoeCktPmZhbWlseQorI2RlZmluZSBGVENfSU5PREVfR0lOREVYKCB4ICkgIEZUQ19HTk9ERSggeCApLT5naW5kZXgKKyNkZWZpbmUgRlRDX0lOT0RFX0ZBTUlMWSggeCApICBGVENfR05PREUoIHggKS0+ZmFtaWx5CiAKICAgdHlwZWRlZiBGVF9FcnJvcgogICAoKkZUQ19JRmFtaWx5X0xvYWRHbHlwaEZ1bmMpKCBGVENfRmFtaWx5ICBmYW1pbHksCkBAIC03Miw3ICs3Miw3IEBACiAjZGVmaW5lIEZUQ19JRkFNSUxZX0NMQVNTKCB4ICkgICgoRlRDX0lGYW1pbHlDbGFzcykoeCkpCiAKICNkZWZpbmUgRlRDX0NBQ0hFX0lGQU1JTFlfQ0xBU1MoIHggKSBcCi0gICAgICAgICAgRlRDX0lGQU1JTFlfQ0xBU1MoIEZUQ19DQUNIRV9HQ0FDSEVfQ0xBU1MoeCktPmZhbWlseV9jbGFzcyApCisgICAgICAgICAgRlRDX0lGQU1JTFlfQ0xBU1MoIEZUQ19DQUNIRV9HQ0FDSEVfQ0xBU1MoIHggKS0+ZmFtaWx5X2NsYXNzICkKIAogCiAgIC8qIGNhbiBiZSB1c2VkIGFzIGEgQEZUQ19Ob2RlX0ZyZWVGdW5jICovCmRpZmYgLS1naXQgYS9zcmMvY2FjaGUvZnRjbWFuYWcuYyBiL3NyYy9jYWNoZS9mdGNtYW5hZy5jCmluZGV4IDUxMmRlOGEuLjZjODQzMzkgMTAwNjQ0Ci0tLSBhL3NyYy9jYWNoZS9mdGNtYW5hZy5jCisrKyBiL3NyYy9jYWNoZS9mdGNtYW5hZy5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgQ2FjaGUgTWFuYWdlciAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMzgzLDYgKzM4Myw3IEBACiAgICAgbWFuYWdlci0+bGlicmFyeSAgICAgID0gbGlicmFyeTsKICAgICBtYW5hZ2VyLT5tZW1vcnkgICAgICAgPSBtZW1vcnk7CiAgICAgbWFuYWdlci0+bWF4X3dlaWdodCAgID0gbWF4X2J5dGVzOworICAgIG1hbmFnZXItPmN1cl93ZWlnaHQgICA9IDA7CiAKICAgICBtYW5hZ2VyLT5yZXF1ZXN0X2ZhY2UgPSByZXF1ZXN0ZXI7CiAgICAgbWFuYWdlci0+cmVxdWVzdF9kYXRhID0gcmVxX2RhdGE7CkBAIC00ODgsOCArNDg5LDggQEAKICAgICAgICAgRlRDX0NhY2hlICBjYWNoZSA9IG1hbmFnZXItPmNhY2hlc1tub2RlLT5jYWNoZV9pbmRleF07CiAKIAotICAgICAgICBpZiAoIChGVF9VSW50KW5vZGUtPmNhY2hlX2luZGV4ID49IG1hbmFnZXItPm51bV9jYWNoZXMgKQotICAgICAgICAgIEZUX1RSQUNFMCgoICJGVENfTWFuYWdlcl9DaGVjazogaW52YWxpZCBub2RlIChjYWNoZSBpbmRleCA9ICVsZFxuIiwKKyAgICAgICAgaWYgKCBub2RlLT5jYWNoZV9pbmRleCA+PSBtYW5hZ2VyLT5udW1fY2FjaGVzICkKKyAgICAgICAgICBGVF9UUkFDRTAoKCAiRlRDX01hbmFnZXJfQ2hlY2s6IGludmFsaWQgbm9kZSAoY2FjaGUgaW5kZXggPSAlaHVcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2FjaGVfaW5kZXggKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICB3ZWlnaHQgKz0gY2FjaGUtPmNsYXp6Lm5vZGVfd2VpZ2h0KCBub2RlLCBjYWNoZSApOwpAQCAtNTE5LDcgKzUyMCw3IEBACiAKICAgICAgIGlmICggY291bnQgIT0gbWFuYWdlci0+bnVtX25vZGVzICkKICAgICAgICAgRlRfVFJBQ0UwKCggIkZUQ19NYW5hZ2VyX0NoZWNrOiIKLSAgICAgICAgICAgICAgICAgICAgIiBpbnZhbGlkIGNhY2hlIG5vZGUgY291bnQgJWQgaW5zdGVhZCBvZiAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgIiBpbnZhbGlkIGNhY2hlIG5vZGUgY291bnQgJXUgaW5zdGVhZCBvZiAldVxuIiwKICAgICAgICAgICAgICAgICAgICAgbWFuYWdlci0+bnVtX25vZGVzLCBjb3VudCApKTsKICAgICB9CiAgIH0KQEAgLTU0Nyw3ICs1NDgsNyBAQAogI2lmZGVmIEZUX0RFQlVHX0VSUk9SCiAgICAgRlRDX01hbmFnZXJfQ2hlY2soIG1hbmFnZXIgKTsKIAotICAgIEZUX1RSQUNFMCgoICJjb21wcmVzc2luZywgd2VpZ2h0ID0gJWxkLCBtYXggPSAlbGQsIG5vZGVzID0gJWRcbiIsCisgICAgRlRfVFJBQ0UwKCggImNvbXByZXNzaW5nLCB3ZWlnaHQgPSAlbGQsIG1heCA9ICVsZCwgbm9kZXMgPSAldVxuIiwKICAgICAgICAgICAgICAgICBtYW5hZ2VyLT5jdXJfd2VpZ2h0LCBtYW5hZ2VyLT5tYXhfd2VpZ2h0LAogICAgICAgICAgICAgICAgIG1hbmFnZXItPm51bV9ub2RlcyApKTsKICNlbmRpZgpAQCAtNjkzLDkgKzY5NCw5IEBACiAgIEZUQ19Ob2RlX1VucmVmKCBGVENfTm9kZSAgICAgbm9kZSwKICAgICAgICAgICAgICAgICAgIEZUQ19NYW5hZ2VyICBtYW5hZ2VyICkKICAgewotICAgIGlmICggbm9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCi0gICAgICAgICBtYW5hZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKLSAgICAgICAgIChGVF9VSW50KW5vZGUtPmNhY2hlX2luZGV4IDwgbWFuYWdlci0+bnVtX2NhY2hlcyApCisgICAgaWYgKCBub2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIG1hbmFnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgbm9kZS0+Y2FjaGVfaW5kZXggPCBtYW5hZ2VyLT5udW1fY2FjaGVzICkKICAgICAgIG5vZGUtPnJlZl9jb3VudC0tOwogICB9CiAKZGlmZiAtLWdpdCBhL3NyYy9jYWNoZS9mdGNtYW5hZy5oIGIvc3JjL2NhY2hlL2Z0Y21hbmFnLmgKaW5kZXggOTlhYTkyNi4uNWIzMDkyOSAxMDA2NDQKLS0tIGEvc3JjL2NhY2hlL2Z0Y21hbmFnLmgKKysrIGIvc3JjL2NhY2hlL2Z0Y21hbmFnLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBDYWNoZSBNYW5hZ2VyIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvY2FjaGUvZnRjbXJ1LmMgYi9zcmMvY2FjaGUvZnRjbXJ1LmMKaW5kZXggMmNhYzZmOS4uNjcyMjcwMyAxMDA2NDQKLS0tIGEvc3JjL2NhY2hlL2Z0Y21ydS5jCisrKyBiL3NyYy9jYWNoZS9mdGNtcnUuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIE1SVSBzdXBwb3J0IChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0yNjIsNyArMjYyLDkgQEAKICAgICAgIGlmICggbGlzdC0+Y2xhenoubm9kZV9kb25lICkKICAgICAgICAgbGlzdC0+Y2xhenoubm9kZV9kb25lKCBub2RlLCBsaXN0LT5kYXRhICk7CiAgICAgfQotICAgIGVsc2UgaWYgKCBGVF9RQUxMT0MoIG5vZGUsIGxpc3QtPmNsYXp6Lm5vZGVfc2l6ZSApICkKKworICAgIC8qIHplcm8gbmV3IG5vZGUgaW4gY2FzZSBvZiBub2RlX2luaXQgZmFpbHVyZSAqLworICAgIGVsc2UgaWYgKCBGVF9BTExPQyggbm9kZSwgbGlzdC0+Y2xhenoubm9kZV9zaXplICkgKQogICAgICAgZ290byBFeGl0OwogCiAgICAgZXJyb3IgPSBsaXN0LT5jbGF6ei5ub2RlX2luaXQoIG5vZGUsIGtleSwgbGlzdC0+ZGF0YSApOwpkaWZmIC0tZ2l0IGEvc3JjL2NhY2hlL2Z0Y21ydS5oIGIvc3JjL2NhY2hlL2Z0Y21ydS5oCmluZGV4IDZiZWZkZTMuLjQ1ZTUyNDkgMTAwNjQ0Ci0tLSBhL3NyYy9jYWNoZS9mdGNtcnUuaAorKysgYi9zcmMvY2FjaGUvZnRjbXJ1LmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBTaW1wbGUgTVJVIGxpc3QtY2FjaGUgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9jYWNoZS9mdGNzYml0cy5jIGIvc3JjL2NhY2hlL2Z0Y3NiaXRzLmMKaW5kZXggMzYyOTk5Zi4uZWU5ZGFiMiAxMDA2NDQKLS0tIGEvc3JjL2NhY2hlL2Z0Y3NiaXRzLmMKKysrIGIvc3JjL2NhY2hlL2Z0Y3NiaXRzLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBzYml0cyBtYW5hZ2VyIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0xNzEsNyArMTcxLDcgQEAKICAgICAgIHNiaXQtPnhhZHZhbmNlICA9IChGVF9DaGFyKXhhZHZhbmNlOwogICAgICAgc2JpdC0+eWFkdmFuY2UgID0gKEZUX0NoYXIpeWFkdmFuY2U7CiAgICAgICBzYml0LT5mb3JtYXQgICAgPSAoRlRfQnl0ZSliaXRtYXAtPnBpeGVsX21vZGU7Ci0gICAgICBzYml0LT5tYXhfZ3JheXMgPSAoRlRfQnl0ZSkoYml0bWFwLT5udW1fZ3JheXMgLSAxKTsKKyAgICAgIHNiaXQtPm1heF9ncmF5cyA9IChGVF9CeXRlKSggYml0bWFwLT5udW1fZ3JheXMgLSAxICk7CiAKICAgICAgIGlmICggc2xvdC0+aW50ZXJuYWwtPmZsYWdzICYgRlRfR0xZUEhfT1dOX0JJVE1BUCApCiAgICAgICB7CkBAIC0yMzMsNyArMjMzLDcgQEAKICAgICAgIGdvdG8gRXhpdDsKICAgICB9CiAKLSAgICBpZiAoICFGVF9ORVcoIHNub2RlICkgKQorICAgIGlmICggIUZUX1FORVcoIHNub2RlICkgKQogICAgIHsKICAgICAgIEZUX1VJbnQgIGNvdW50LCBzdGFydDsKIApAQCAtMjQ4LDcgKzI0OCw5IEBACiAgICAgICBzbm9kZS0+Y291bnQgPSBjb3VudDsKICAgICAgIGZvciAoIG5vZGVfY291bnQgPSAwOyBub2RlX2NvdW50IDwgY291bnQ7IG5vZGVfY291bnQrKyApCiAgICAgICB7Ci0gICAgICAgIHNub2RlLT5zYml0c1tub2RlX2NvdW50XS53aWR0aCA9IDI1NTsKKyAgICAgICAgc25vZGUtPnNiaXRzW25vZGVfY291bnRdLndpZHRoICA9IDI1NTsKKyAgICAgICAgc25vZGUtPnNiaXRzW25vZGVfY291bnRdLmhlaWdodCA9IDA7CisgICAgICAgIHNub2RlLT5zYml0c1tub2RlX2NvdW50XS5idWZmZXIgPSBOVUxMOwogICAgICAgfQogCiAgICAgICBlcnJvciA9IGZ0Y19zbm9kZV9sb2FkKCBzbm9kZSwKZGlmZiAtLWdpdCBhL3NyYy9jYWNoZS9mdGNzYml0cy5oIGIvc3JjL2NhY2hlL2Z0Y3NiaXRzLmgKaW5kZXggOWYyZDVmYi4uMzQ3MzkyMyAxMDA2NDQKLS0tIGEvc3JjL2NhY2hlL2Z0Y3NiaXRzLmgKKysrIGIvc3JjL2NhY2hlL2Z0Y3NiaXRzLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBBIHNtYWxsLWJpdG1hcCBjYWNoZSAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtNjEsNyArNjEsNyBAQAogCiAgIHR5cGVkZWYgY29uc3QgRlRDX1NGYW1pbHlDbGFzc1JlYyogIEZUQ19TRmFtaWx5Q2xhc3M7CiAKLSNkZWZpbmUgRlRDX1NGQU1JTFlfQ0xBU1MoIHggKSAgKChGVENfU0ZhbWlseUNsYXNzKSh4KSkKKyNkZWZpbmUgRlRDX1NGQU1JTFlfQ0xBU1MoIHggKSAgKCAoRlRDX1NGYW1pbHlDbGFzcykoeCkgKQogCiAjZGVmaW5lIEZUQ19DQUNIRV9TRkFNSUxZX0NMQVNTKCB4ICkgIFwKICAgICAgICAgICBGVENfU0ZBTUlMWV9DTEFTUyggRlRDX0NBQ0hFX0dDQUNIRV9DTEFTUyggeCApLT5mYW1pbHlfY2xhc3MgKQpkaWZmIC0tZ2l0IGEvc3JjL2NhY2hlL3J1bGVzLm1rIGIvc3JjL2NhY2hlL3J1bGVzLm1rCmluZGV4IDBhYmQyMTYuLjgyYjM5YWEgMTAwNjQ0Ci0tLSBhL3NyYy9jYWNoZS9ydWxlcy5taworKysgYi9zcmMvY2FjaGUvcnVsZXMubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9zcmMvY2ZmL2NmZi5jIGIvc3JjL2NmZi9jZmYuYwppbmRleCBjMmZmZWEzLi5iNDg2YzM4IDEwMDY0NAotLS0gYS9zcmMvY2ZmL2NmZi5jCisrKyBiL3NyYy9jZmYvY2ZmLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBPcGVuVHlwZSBkcml2ZXIgY29tcG9uZW50IChib2R5IG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9jZmYvY2ZmY21hcC5jIGIvc3JjL2NmZi9jZmZjbWFwLmMKaW5kZXggZmYxYWFlNi4uNmVkMzE0MyAxMDA2NDQKLS0tIGEvc3JjL2NmZi9jZmZjbWFwLmMKKysrIGIvc3JjL2NmZi9jZmZjbWFwLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBDRkYgY2hhcmFjdGVyIG1hcHBpbmcgdGFibGUgKGNtYXApIHN1cHBvcnQgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTgxLDcgKzgxLDcgQEAKIAogICAgIGlmICggY2hhcl9jb2RlIDwgMjU1ICkKICAgICB7Ci0gICAgICBGVF9VSW50ICBjb2RlID0gKEZUX1VJbnQpKGNoYXJfY29kZSArIDEpOworICAgICAgRlRfVUludCAgY29kZSA9IChGVF9VSW50KSggY2hhcl9jb2RlICsgMSApOwogCiAKICAgICAgIGZvciAoOzspCmRpZmYgLS1naXQgYS9zcmMvY2ZmL2NmZmNtYXAuaCBiL3NyYy9jZmYvY2ZmY21hcC5oCmluZGV4IDIyMWUyNTUuLmIyYWZjMmYgMTAwNjQ0Ci0tLSBhL3NyYy9jZmYvY2ZmY21hcC5oCisrKyBiL3NyYy9jZmYvY2ZmY21hcC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQ0ZGIGNoYXJhY3RlciBtYXBwaW5nIHRhYmxlIChjbWFwKSBzdXBwb3J0IChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvY2ZmL2NmZmRyaXZyLmMgYi9zcmMvY2ZmL2NmZmRyaXZyLmMKaW5kZXggNTkyMTBmMy4uNjg4YzRjMCAxMDA2NDQKLS0tIGEvc3JjL2NmZi9jZmZkcml2ci5jCisrKyBiL3NyYy9jZmYvY2ZmZHJpdnIuYwpAQCAtNCw4ICs0LDggQEAKICAqCiAgKiAgIE9wZW5UeXBlIGZvbnQgZHJpdmVyIGltcGxlbWVudGF0aW9uIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQotICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKKyAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIFdlcm5lciBMZW1iZXJnLCBhbmQgRG9taW5payBSw7Z0dHNjaGVzLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKICAqIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CkBAIC05MzYsMjIgKzkzNiwxMDMgQEAKICAgfQogCiAKKyAgc3RhdGljIEZUX0Vycm9yCisgIGNmZl9sb2FkX2l0ZW1fdmFyaWF0aW9uX3N0b3JlKCBDRkZfRmFjZSAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgICAgIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdYX0l0ZW1WYXJTdG9yZSAgaXRlbVN0b3JlICkKKyAgeworICAgIEZUX1NlcnZpY2VfTXVsdGlNYXN0ZXJzICBtbSA9IChGVF9TZXJ2aWNlX011bHRpTWFzdGVycylmYWNlLT5tbTsKKworCisgICAgcmV0dXJuIG1tLT5sb2FkX2l0ZW1fdmFyX3N0b3JlKCBGVF9GQUNFKGZhY2UpLCBvZmZzZXQsIGl0ZW1TdG9yZSApOworICB9CisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgY2ZmX2xvYWRfZGVsdGFfc2V0X2luZGV4X21hcHBpbmcoIENGRl9GYWNlICAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICAgICAgIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdYX0RlbHRhU2V0SWR4TWFwICBtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHWF9JdGVtVmFyU3RvcmUgICAgaXRlbVN0b3JlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICAgICAgIHRhYmxlX2xlbiApCisgIHsKKyAgICBGVF9TZXJ2aWNlX011bHRpTWFzdGVycyAgbW0gPSAoRlRfU2VydmljZV9NdWx0aU1hc3RlcnMpZmFjZS0+bW07CisKKworICAgIHJldHVybiBtbS0+bG9hZF9kZWx0YV9zZXRfaWR4X21hcCggRlRfRkFDRSggZmFjZSApLCBvZmZzZXQsIG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1TdG9yZSwgdGFibGVfbGVuICk7CisgIH0KKworCisgIHN0YXRpYyBGVF9JbnQKKyAgY2ZmX2dldF9pdGVtX2RlbHRhKCBDRkZfRmFjZSAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgR1hfSXRlbVZhclN0b3JlICBpdGVtU3RvcmUsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICBvdXRlckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgaW5uZXJJbmRleCApCisgIHsKKyAgICBGVF9TZXJ2aWNlX011bHRpTWFzdGVycyAgbW0gPSAoRlRfU2VydmljZV9NdWx0aU1hc3RlcnMpZmFjZS0+bW07CisKKworICAgIHJldHVybiBtbS0+Z2V0X2l0ZW1fZGVsdGEoIEZUX0ZBQ0UoIGZhY2UgKSwgaXRlbVN0b3JlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGVySW5kZXgsIGlubmVySW5kZXggKTsKKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgY2ZmX2RvbmVfaXRlbV92YXJpYXRpb25fc3RvcmUoIENGRl9GYWNlICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHWF9JdGVtVmFyU3RvcmUgIGl0ZW1TdG9yZSApCisgIHsKKyAgICBGVF9TZXJ2aWNlX011bHRpTWFzdGVycyAgbW0gPSAoRlRfU2VydmljZV9NdWx0aU1hc3RlcnMpZmFjZS0+bW07CisKKworICAgIG1tLT5kb25lX2l0ZW1fdmFyX3N0b3JlKCBGVF9GQUNFKCBmYWNlICksIGl0ZW1TdG9yZSApOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBjZmZfZG9uZV9kZWx0YV9zZXRfaW5kZXhfbWFwKCBDRkZfRmFjZSAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1hfRGVsdGFTZXRJZHhNYXAgIGRlbHRhU2V0SWR4TWFwICkKKyAgeworICAgIEZUX1NlcnZpY2VfTXVsdGlNYXN0ZXJzICBtbSA9IChGVF9TZXJ2aWNlX011bHRpTWFzdGVycylmYWNlLT5tbTsKKworCisgICAgbW0tPmRvbmVfZGVsdGFfc2V0X2lkeF9tYXAoIEZUX0ZBQ0UgKCBmYWNlICksIGRlbHRhU2V0SWR4TWFwICk7CisgIH0KKworCisKICAgRlRfREVGSU5FX1NFUlZJQ0VfTVVMVElNQVNURVJTUkVDKAogICAgIGNmZl9zZXJ2aWNlX211bHRpX21hc3RlcnMsCiAKLSAgICAoRlRfR2V0X01NX0Z1bmMpICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAvKiBnZXRfbW0gICAgICAgICAgICAgICovCi0gICAgKEZUX1NldF9NTV9EZXNpZ25fRnVuYykgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgLyogc2V0X21tX2Rlc2lnbiAgICAgICAqLwotICAgIChGVF9TZXRfTU1fQmxlbmRfRnVuYykgICAgICAgY2ZmX3NldF9tbV9ibGVuZCwgICAgICAgIC8qIHNldF9tbV9ibGVuZCAgICAgICAgKi8KLSAgICAoRlRfR2V0X01NX0JsZW5kX0Z1bmMpICAgICAgIGNmZl9nZXRfbW1fYmxlbmQsICAgICAgICAvKiBnZXRfbW1fYmxlbmQgICAgICAgICovCi0gICAgKEZUX0dldF9NTV9WYXJfRnVuYykgICAgICAgICBjZmZfZ2V0X21tX3ZhciwgICAgICAgICAgLyogZ2V0X21tX3ZhciAgICAgICAgICAqLwotICAgIChGVF9TZXRfVmFyX0Rlc2lnbl9GdW5jKSAgICAgY2ZmX3NldF92YXJfZGVzaWduLCAgICAgIC8qIHNldF92YXJfZGVzaWduICAgICAgKi8KLSAgICAoRlRfR2V0X1Zhcl9EZXNpZ25fRnVuYykgICAgIGNmZl9nZXRfdmFyX2Rlc2lnbiwgICAgICAvKiBnZXRfdmFyX2Rlc2lnbiAgICAgICovCi0gICAgKEZUX1NldF9JbnN0YW5jZV9GdW5jKSAgICAgICBjZmZfc2V0X2luc3RhbmNlLCAgICAgICAgLyogc2V0X2luc3RhbmNlICAgICAgICAqLwotICAgIChGVF9TZXRfTU1fV2VpZ2h0VmVjdG9yX0Z1bmMpY2ZmX3NldF9tbV93ZWlnaHR2ZWN0b3IsIC8qIHNldF9tbV93ZWlnaHR2ZWN0b3IgKi8KLSAgICAoRlRfR2V0X01NX1dlaWdodFZlY3Rvcl9GdW5jKWNmZl9nZXRfbW1fd2VpZ2h0dmVjdG9yLCAvKiBnZXRfbW1fd2VpZ2h0dmVjdG9yICovCi0KLSAgICAoRlRfR2V0X1Zhcl9CbGVuZF9GdW5jKSAgICAgIGNmZl9nZXRfdmFyX2JsZW5kLCAgICAgICAvKiBnZXRfdmFyX2JsZW5kICAgICAgICovCi0gICAgKEZUX0RvbmVfQmxlbmRfRnVuYykgICAgICAgICBjZmZfZG9uZV9ibGVuZCAgICAgICAgICAgLyogZG9uZV9ibGVuZCAgICAgICAgICAqLworICAgIChGVF9HZXRfTU1fRnVuYykgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgLyogZ2V0X21tICAgICAgICAgICAgICAgICAgICAqLworICAgIChGVF9TZXRfTU1fRGVzaWduX0Z1bmMpIE5VTEwsICAgICAgICAgICAgICAgLyogc2V0X21tX2Rlc2lnbiAgICAgICAgICAgICAqLworICAgIChGVF9TZXRfTU1fQmxlbmRfRnVuYykgIGNmZl9zZXRfbW1fYmxlbmQsICAgLyogc2V0X21tX2JsZW5kICAgICAgICAgICAgICAqLworICAgIChGVF9HZXRfTU1fQmxlbmRfRnVuYykgIGNmZl9nZXRfbW1fYmxlbmQsICAgLyogZ2V0X21tX2JsZW5kICAgICAgICAgICAgICAqLworICAgIChGVF9HZXRfTU1fVmFyX0Z1bmMpICAgIGNmZl9nZXRfbW1fdmFyLCAgICAgLyogZ2V0X21tX3ZhciAgICAgICAgICAgICAgICAqLworICAgIChGVF9TZXRfVmFyX0Rlc2lnbl9GdW5jKWNmZl9zZXRfdmFyX2Rlc2lnbiwgLyogc2V0X3Zhcl9kZXNpZ24gICAgICAgICAgICAqLworICAgIChGVF9HZXRfVmFyX0Rlc2lnbl9GdW5jKWNmZl9nZXRfdmFyX2Rlc2lnbiwgLyogZ2V0X3Zhcl9kZXNpZ24gICAgICAgICAgICAqLworICAgIChGVF9TZXRfSW5zdGFuY2VfRnVuYykgIGNmZl9zZXRfaW5zdGFuY2UsICAgLyogc2V0X2luc3RhbmNlICAgICAgICAgICAgICAqLworICAgIChGVF9TZXRfTU1fV2VpZ2h0VmVjdG9yX0Z1bmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZmX3NldF9tbV93ZWlnaHR2ZWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZXRfbW1fd2VpZ2h0dmVjdG9yICAgICAgICovCisgICAgKEZUX0dldF9NTV9XZWlnaHRWZWN0b3JfRnVuYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZmZfZ2V0X21tX3dlaWdodHZlY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGdldF9tbV93ZWlnaHR2ZWN0b3IgICAgICAgKi8KKyAgICAoRlRfVmFyX0xvYWRfRGVsdGFfU2V0X0lkeF9NYXBfRnVuYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZmZfbG9hZF9kZWx0YV9zZXRfaW5kZXhfbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxvYWRfZGVsdGFfc2V0X2lkeF9tYXAgICAgKi8KKyAgICAoRlRfVmFyX0xvYWRfSXRlbV9WYXJfU3RvcmVfRnVuYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZmZfbG9hZF9pdGVtX3ZhcmlhdGlvbl9zdG9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxvYWRfaXRlbV92YXJpYXRpb25fc3RvcmUgKi8KKyAgICAoRlRfVmFyX0dldF9JdGVtX0RlbHRhX0Z1bmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZmX2dldF9pdGVtX2RlbHRhLCAvKiBnZXRfaXRlbV9kZWx0YSAgICAgICAgICAgICovCisgICAgKEZUX1Zhcl9Eb25lX0l0ZW1fVmFyX1N0b3JlX0Z1bmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZmX2RvbmVfaXRlbV92YXJpYXRpb25fc3RvcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb25lX2l0ZW1fdmFyaWF0aW9uX3N0b3JlICovCisgICAgKEZUX1Zhcl9Eb25lX0RlbHRhX1NldF9JZHhfTWFwX0Z1bmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZmX2RvbmVfZGVsdGFfc2V0X2luZGV4X21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvbmVfZGVsdGFfc2V0X2luZGV4X21hcCAgKi8KKyAgICAoRlRfR2V0X1Zhcl9CbGVuZF9GdW5jKSBjZmZfZ2V0X3Zhcl9ibGVuZCwgIC8qIGdldF92YXJfYmxlbmQgICAgICAgICAgICAgKi8KKyAgICAoRlRfRG9uZV9CbGVuZF9GdW5jKSAgICBjZmZfZG9uZV9ibGVuZCAgICAgIC8qIGRvbmVfYmxlbmQgICAgICAgICAgICAgICAgKi8KICAgKQogCiAKQEAgLTk2NSw3ICsxMDQ2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIGdpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgKmF2YWx1ZSApCiAgIHsKLSAgICBGVF9TZXJ2aWNlX01ldHJpY3NWYXJpYXRpb25zICB2YXIgPSAoRlRfU2VydmljZV9NZXRyaWNzVmFyaWF0aW9ucylmYWNlLT52YXI7CisgICAgRlRfU2VydmljZV9NZXRyaWNzVmFyaWF0aW9ucworICAgICAgdmFyID0gKEZUX1NlcnZpY2VfTWV0cmljc1ZhcmlhdGlvbnMpZmFjZS0+dHRfdmFyOwogCiAKICAgICByZXR1cm4gdmFyLT5oYWR2YW5jZV9hZGp1c3QoIEZUX0ZBQ0UoIGZhY2UgKSwgZ2luZGV4LCBhdmFsdWUgKTsKQEAgLTk3NSw3ICsxMDU3LDggQEAKICAgc3RhdGljIHZvaWQKICAgY2ZmX21ldHJpY3NfYWRqdXN0KCBDRkZfRmFjZSAgZmFjZSApCiAgIHsKLSAgICBGVF9TZXJ2aWNlX01ldHJpY3NWYXJpYXRpb25zICB2YXIgPSAoRlRfU2VydmljZV9NZXRyaWNzVmFyaWF0aW9ucylmYWNlLT52YXI7CisgICAgRlRfU2VydmljZV9NZXRyaWNzVmFyaWF0aW9ucworICAgICAgdmFyID0gKEZUX1NlcnZpY2VfTWV0cmljc1ZhcmlhdGlvbnMpZmFjZS0+dHRfdmFyOwogCiAKICAgICB2YXItPm1ldHJpY3NfYWRqdXN0KCBGVF9GQUNFKCBmYWNlICkgKTsKQEAgLTk5NCw3ICsxMDc3LDggQEAKICAgICAoRlRfQlNCX0FkanVzdF9GdW5jKSAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgLyogYnNiX2FkanVzdCAgICAgICovCiAgICAgKEZUX1ZPcmdfQWRqdXN0X0Z1bmMpICAgIE5VTEwsICAgICAgICAgICAgICAgICAgIC8qIHZvcmdfYWRqdXN0ICAgICAqLwogCi0gICAgKEZUX01ldHJpY3NfQWRqdXN0X0Z1bmMpIGNmZl9tZXRyaWNzX2FkanVzdCAgICAgIC8qIG1ldHJpY3NfYWRqdXN0ICAqLworICAgIChGVF9NZXRyaWNzX0FkanVzdF9GdW5jKSBjZmZfbWV0cmljc19hZGp1c3QsICAgICAvKiBtZXRyaWNzX2FkanVzdCAgKi8KKyAgICAoRlRfU2l6ZV9SZXNldF9GdW5jKSAgICAgTlVMTCAgICAgICAgICAgICAgICAgICAgLyogc2l6ZV9yZXNldCAgICAgICovCiAgICkKICNlbmRpZgogCkBAIC0xMDI3LDggKzExMTEsNyBAQAogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLSNpZiAhZGVmaW5lZCBGVF9DT05GSUdfT1BUSU9OX05PX0dMWVBIX05BTUVTICYmIFwKLSAgICAgZGVmaW5lZCBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisjaWYgZGVmaW5lZCBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCiAgIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzEwKAogICAgIGNmZl9zZXJ2aWNlcywKIApAQCAtMTA0Myw3ICsxMTI2LDcgQEAKICAgICBGVF9TRVJWSUNFX0lEX1BST1BFUlRJRVMsICAgICAgICAgICAmY2ZmX3NlcnZpY2VfcHJvcGVydGllcywKICAgICBGVF9TRVJWSUNFX0lEX0NGRl9MT0FELCAgICAgICAgICAgICAmY2ZmX3NlcnZpY2VfY2ZmX2xvYWQKICAgKQotI2VsaWYgIWRlZmluZWQgRlRfQ09ORklHX09QVElPTl9OT19HTFlQSF9OQU1FUworI2Vsc2UKICAgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDOCgKICAgICBjZmZfc2VydmljZXMsCiAKQEAgLTEwNTYsMzIgKzExMzksNiBAQAogICAgIEZUX1NFUlZJQ0VfSURfUFJPUEVSVElFUywgICAgICAgICAgICZjZmZfc2VydmljZV9wcm9wZXJ0aWVzLAogICAgIEZUX1NFUlZJQ0VfSURfQ0ZGX0xPQUQsICAgICAgICAgICAgICZjZmZfc2VydmljZV9jZmZfbG9hZAogICApCi0jZWxpZiBkZWZpbmVkIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQKLSAgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDOSgKLSAgICBjZmZfc2VydmljZXMsCi0KLSAgICBGVF9TRVJWSUNFX0lEX0ZPTlRfRk9STUFULCAgICAgICAgICBGVF9GT05UX0ZPUk1BVF9DRkYsCi0gICAgRlRfU0VSVklDRV9JRF9NVUxUSV9NQVNURVJTLCAgICAgICAgJmNmZl9zZXJ2aWNlX211bHRpX21hc3RlcnMsCi0gICAgRlRfU0VSVklDRV9JRF9NRVRSSUNTX1ZBUklBVElPTlMsICAgJmNmZl9zZXJ2aWNlX21ldHJpY3NfdmFyLAotICAgIEZUX1NFUlZJQ0VfSURfUE9TVFNDUklQVF9JTkZPLCAgICAgICZjZmZfc2VydmljZV9wc19pbmZvLAotICAgIEZUX1NFUlZJQ0VfSURfUE9TVFNDUklQVF9GT05UX05BTUUsICZjZmZfc2VydmljZV9wc19uYW1lLAotICAgIEZUX1NFUlZJQ0VfSURfVFRfQ01BUCwgICAgICAgICAgICAgICZjZmZfc2VydmljZV9nZXRfY21hcF9pbmZvLAotICAgIEZUX1NFUlZJQ0VfSURfQ0lELCAgICAgICAgICAgICAgICAgICZjZmZfc2VydmljZV9jaWRfaW5mbywKLSAgICBGVF9TRVJWSUNFX0lEX1BST1BFUlRJRVMsICAgICAgICAgICAmY2ZmX3NlcnZpY2VfcHJvcGVydGllcywKLSAgICBGVF9TRVJWSUNFX0lEX0NGRl9MT0FELCAgICAgICAgICAgICAmY2ZmX3NlcnZpY2VfY2ZmX2xvYWQKLSAgKQotI2Vsc2UKLSAgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDNygKLSAgICBjZmZfc2VydmljZXMsCi0KLSAgICBGVF9TRVJWSUNFX0lEX0ZPTlRfRk9STUFULCAgICAgICAgICBGVF9GT05UX0ZPUk1BVF9DRkYsCi0gICAgRlRfU0VSVklDRV9JRF9QT1NUU0NSSVBUX0lORk8sICAgICAgJmNmZl9zZXJ2aWNlX3BzX2luZm8sCi0gICAgRlRfU0VSVklDRV9JRF9QT1NUU0NSSVBUX0ZPTlRfTkFNRSwgJmNmZl9zZXJ2aWNlX3BzX25hbWUsCi0gICAgRlRfU0VSVklDRV9JRF9UVF9DTUFQLCAgICAgICAgICAgICAgJmNmZl9zZXJ2aWNlX2dldF9jbWFwX2luZm8sCi0gICAgRlRfU0VSVklDRV9JRF9DSUQsICAgICAgICAgICAgICAgICAgJmNmZl9zZXJ2aWNlX2NpZF9pbmZvLAotICAgIEZUX1NFUlZJQ0VfSURfUFJPUEVSVElFUywgICAgICAgICAgICZjZmZfc2VydmljZV9wcm9wZXJ0aWVzLAotICAgIEZUX1NFUlZJQ0VfSURfQ0ZGX0xPQUQsICAgICAgICAgICAgICZjZmZfc2VydmljZV9jZmZfbG9hZAotICApCiAjZW5kaWYKIAogCmRpZmYgLS1naXQgYS9zcmMvY2ZmL2NmZmRyaXZyLmggYi9zcmMvY2ZmL2NmZmRyaXZyLmgKaW5kZXggZmNlOTJiYi4uYWIxZjE0NyAxMDA2NDQKLS0tIGEvc3JjL2NmZi9jZmZkcml2ci5oCisrKyBiL3NyYy9jZmYvY2ZmZHJpdnIuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEhpZ2gtbGV2ZWwgT3BlblR5cGUgZHJpdmVyIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL2NmZi9jZmZlcnJzLmggYi9zcmMvY2ZmL2NmZmVycnMuaAppbmRleCBiNTA3ZWM4Li5iYzlhMzA0IDEwMDY0NAotLS0gYS9zcmMvY2ZmL2NmZmVycnMuaAorKysgYi9zcmMvY2ZmL2NmZmVycnMuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIENGRiBlcnJvciBjb2RlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvY2ZmL2NmZmdsb2FkLmMgYi9zcmMvY2ZmL2NmZmdsb2FkLmMKaW5kZXggOTdlOGY5Yy4uY2ZhMGFhZiAxMDA2NDQKLS0tIGEvc3JjL2NmZi9jZmZnbG9hZC5jCisrKyBiL3NyYy9jZmYvY2ZmZ2xvYWQuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIE9wZW5UeXBlIEdseXBoIExvYWRlciAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMjksNiArMjksMTQgQEAKIAogI2luY2x1ZGUgImNmZmVycnMuaCIKIAorI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQKKyNkZWZpbmUgSVNfREVGQVVMVF9JTlNUQU5DRSggX2ZhY2UgKSAgICAgICAgICAgICBcCisgICAgICAgICAgKCAhKCBGVF9JU19OQU1FRF9JTlNUQU5DRSggX2ZhY2UgKSB8fCAgXAorICAgICAgICAgICAgICAgRlRfSVNfVkFSSUFUSU9OKCBfZmFjZSApICAgICAgKSApCisjZWxzZQorI2RlZmluZSBJU19ERUZBVUxUX0lOU1RBTkNFKCBfZmFjZSApICAxCisjZW5kaWYKKwogCiAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgKgpAQCAtNjcsNyArNzUsNyBAQAogI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwgKi8KIAogICAgIHsKLSAgICAgIENGRl9Gb250ICBjZmYgPSAoQ0ZGX0ZvbnQpKGZhY2UtPmV4dHJhLmRhdGEpOworICAgICAgQ0ZGX0ZvbnQgIGNmZiA9IChDRkZfRm9udCkoIGZhY2UtPmV4dHJhLmRhdGEgKTsKIAogCiAgICAgICByZXR1cm4gY2ZmX2luZGV4X2FjY2Vzc19lbGVtZW50KCAmY2ZmLT5jaGFyc3RyaW5nc19pbmRleCwgZ2x5cGhfaW5kZXgsCkBAIC0xMDMsNyArMTExLDcgQEAKICNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMICovCiAKICAgICB7Ci0gICAgICBDRkZfRm9udCAgY2ZmID0gKENGRl9Gb250KShmYWNlLT5leHRyYS5kYXRhKTsKKyAgICAgIENGRl9Gb250ICBjZmYgPSAoQ0ZGX0ZvbnQpKCBmYWNlLT5leHRyYS5kYXRhICk7CiAKIAogICAgICAgY2ZmX2luZGV4X2ZvcmdldF9lbGVtZW50KCAmY2ZmLT5jaGFyc3RyaW5nc19pbmRleCwgcG9pbnRlciApOwpAQCAtMjU1LDggKzI2Myw4IEBACiAKIAogICAgICAgaWYgKCBzaXplLT5zdHJpa2VfaW5kZXggIT0gMHhGRkZGRkZGRlVMICAgICAgJiYKLSAgICAgICAgICAgc2ZudC0+bG9hZF9lYmxjICAgICAgICAgICAgICAgICAgICAgICAgICYmCi0gICAgICAgICAgICggbG9hZF9mbGFncyAmIEZUX0xPQURfTk9fQklUTUFQICkgPT0gMCApCisgICAgICAgICAgICggbG9hZF9mbGFncyAmIEZUX0xPQURfTk9fQklUTUFQICkgPT0gMCAmJgorICAgICAgICAgICBJU19ERUZBVUxUX0lOU1RBTkNFKCBzaXplLT5yb290LmZhY2UgKSAgKQogICAgICAgewogICAgICAgICBUVF9TQml0X01ldHJpY3NSZWMgIG1ldHJpY3M7CiAKQEAgLTM0Niw2ICszNTQsNzMgQEAKICAgICBpZiAoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX1NCSVRTX09OTFkgKQogICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CiAKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1NWRworICAgIC8qIGNoZWNrIGZvciBPVC1TVkcgKi8KKyAgICBpZiAoICggbG9hZF9mbGFncyAmIEZUX0xPQURfQ09MT1IgKSAmJiBmYWNlLT5zdmcgKQorICAgIHsKKyAgICAgIC8qCisgICAgICAgKiBXZSBsb2FkIHRoZSBTVkcgZG9jdW1lbnQgYW5kIHRyeSB0byBncmFiIHRoZSBhZHZhbmNlcyBmcm9tIHRoZQorICAgICAgICogdGFibGUuICBGb3IgdGhlIGJlYXJpbmdzIHdlIHJlbHkgb24gdGhlIHByZXNldHRpbmcgaG9vayB0byBkbyB0aGF0LgorICAgICAgICovCisKKyAgICAgIFNGTlRfU2VydmljZSAgc2ZudCAgPSAoU0ZOVF9TZXJ2aWNlKWZhY2UtPnNmbnQ7CisKKworICAgICAgaWYgKCBzaXplICYmIChzaXplLT5yb290Lm1ldHJpY3MueF9wcGVtIDwgMSB8fAorICAgICAgICAgICAgICAgICAgICBzaXplLT5yb290Lm1ldHJpY3MueV9wcGVtIDwgMSApICkKKyAgICAgIHsKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9TaXplX0hhbmRsZSApOworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICB9CisKKyAgICAgIEZUX1RSQUNFMygoICJUcnlpbmcgdG8gbG9hZCBTVkcgZ2x5cGhcbiIgKSk7CisKKyAgICAgIGVycm9yID0gc2ZudC0+bG9hZF9zdmdfZG9jKCAoRlRfR2x5cGhTbG90KWdseXBoLCBnbHlwaF9pbmRleCApOworICAgICAgaWYgKCAhZXJyb3IgKQorICAgICAgeworICAgICAgICBGVF9GaXhlZCAgeF9zY2FsZSA9IHNpemUtPnJvb3QubWV0cmljcy54X3NjYWxlOworICAgICAgICBGVF9GaXhlZCAgeV9zY2FsZSA9IHNpemUtPnJvb3QubWV0cmljcy55X3NjYWxlOworCisgICAgICAgIEZUX1Nob3J0ICAgZHVtbXk7CisgICAgICAgIEZUX1VTaG9ydCAgYWR2YW5jZVg7CisgICAgICAgIEZUX1VTaG9ydCAgYWR2YW5jZVk7CisKKworICAgICAgICBGVF9UUkFDRTMoKCAiU3VjY2Vzc2Z1bGx5IGxvYWRlZCBTVkcgZ2x5cGhcbiIgKSk7CisKKyAgICAgICAgZ2x5cGgtPnJvb3QuZm9ybWF0ID0gRlRfR0xZUEhfRk9STUFUX1NWRzsKKworICAgICAgICAvKgorICAgICAgICAgKiBJZiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGFkdmFuY2VzIGFyZSBub3QgcHJlc2VudCBpbiB0aGUgdGFibGUsCisgICAgICAgICAqIHRoaXMgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGZvbnQgc2luY2UgdGhlIHN0YW5kYXJkIHJlcXVpcmVzIHRoZW0uCisgICAgICAgICAqIEhvd2V2ZXIsIHdlIGFyZSBncmFjZWZ1bCBhbmQgY2FsY3VsYXRlIHRoZSB2YWx1ZXMgYnkgb3Vyc2VsdmVzCisgICAgICAgICAqIGZvciB0aGUgdmVydGljYWwgY2FzZS4KKyAgICAgICAgICovCisgICAgICAgIHNmbnQtPmdldF9tZXRyaWNzKCBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZkdW1teSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZHZhbmNlWCApOworICAgICAgICBzZm50LT5nZXRfbWV0cmljcyggZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZkdW1teSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZHZhbmNlWSApOworCisgICAgICAgIGdseXBoLT5yb290LmxpbmVhckhvcmlBZHZhbmNlID0gYWR2YW5jZVg7CisgICAgICAgIGdseXBoLT5yb290LmxpbmVhclZlcnRBZHZhbmNlID0gYWR2YW5jZVk7CisKKyAgICAgICAgZ2x5cGgtPnJvb3QubWV0cmljcy5ob3JpQWR2YW5jZSA9IEZUX011bEZpeCggYWR2YW5jZVgsIHhfc2NhbGUgKTsKKyAgICAgICAgZ2x5cGgtPnJvb3QubWV0cmljcy52ZXJ0QWR2YW5jZSA9IEZUX011bEZpeCggYWR2YW5jZVksIHlfc2NhbGUgKTsKKworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICB9CisKKyAgICAgIEZUX1RSQUNFMygoICJGYWlsZWQgdG8gbG9hZCBTVkcgZ2x5cGhcbiIgKSk7CisgICAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9TVkcgKi8KKwogICAgIC8qIGlmIHdlIGhhdmUgYSBDSUQgc3ViZm9udCwgdXNlIGl0cyBtYXRyaXggKHdoaWNoIGhhcyBhbHJlYWR5ICovCiAgICAgLyogYmVlbiBtdWx0aXBsaWVkIHdpdGggdGhlIHJvb3QgbWF0cml4KSAgICAgICAgICAgICAgICAgICAgICAgKi8KIApAQCAtNDEzLDEzICs0ODgsMTQgQEAKICAgICAgIGRlY29kZXIuYnVpbGRlci5ub19yZWN1cnNlID0KICAgICAgICAgRlRfQk9PTCggbG9hZF9mbGFncyAmIEZUX0xPQURfTk9fUkVDVVJTRSApOwogCi0gICAgICAvKiBub3cgbG9hZCB0aGUgdW5zY2FsZWQgb3V0bGluZSAqLwotICAgICAgZXJyb3IgPSBjZmZfZ2V0X2dseXBoX2RhdGEoIGZhY2UsIGdseXBoX2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaGFyc3RyaW5nLCAmY2hhcnN0cmluZ19sZW4gKTsKKyAgICAgIC8qIHRoaXMgZnVuY3Rpb24gYWxzbyBjaGVja3MgZm9yIGEgdmFsaWQgc3ViZm9udCBpbmRleCAqLworICAgICAgZXJyb3IgPSBkZWNvZGVyX2Z1bmNzLT5wcmVwYXJlKCAmZGVjb2Rlciwgc2l6ZSwgZ2x5cGhfaW5kZXggKTsKICAgICAgIGlmICggZXJyb3IgKQogICAgICAgICBnb3RvIEdseXBoX0J1aWxkX0ZpbmlzaGVkOwogCi0gICAgICBlcnJvciA9IGRlY29kZXJfZnVuY3MtPnByZXBhcmUoICZkZWNvZGVyLCBzaXplLCBnbHlwaF9pbmRleCApOworICAgICAgLyogbm93IGxvYWQgdGhlIHVuc2NhbGVkIG91dGxpbmUgKi8KKyAgICAgIGVycm9yID0gY2ZmX2dldF9nbHlwaF9kYXRhKCBmYWNlLCBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2hhcnN0cmluZywgJmNoYXJzdHJpbmdfbGVuICk7CiAgICAgICBpZiAoIGVycm9yICkKICAgICAgICAgZ290byBHbHlwaF9CdWlsZF9GaW5pc2hlZDsKIApkaWZmIC0tZ2l0IGEvc3JjL2NmZi9jZmZnbG9hZC5oIGIvc3JjL2NmZi9jZmZnbG9hZC5oCmluZGV4IGQwZDZhNmYuLjNiOGNmMjMgMTAwNjQ0Ci0tLSBhL3NyYy9jZmYvY2ZmZ2xvYWQuaAorKysgYi9zcmMvY2ZmL2NmZmdsb2FkLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBPcGVuVHlwZSBHbHlwaCBMb2FkZXIgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9jZmYvY2ZmbG9hZC5jIGIvc3JjL2NmZi9jZmZsb2FkLmMKaW5kZXggM2MzZjZmZS4uNGI4YzZlMSAxMDA2NDQKLS0tIGEvc3JjL2NmZi9jZmZsb2FkLmMKKysrIGIvc3JjL2NmZi9jZmZsb2FkLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBPcGVuVHlwZSBhbmQgQ0ZGIGRhdGEvcHJvZ3JhbSB0YWJsZXMgbG9hZGVyIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0xMjg4LDcgKzEyODgsNyBAQAogICAvKiBCbGVuZGVkIHZhbHVlcyBhcmUgd3JpdHRlbiB0byBhIGRpZmZlcmVudCBidWZmZXIsICAgICAqLwogICAvKiB1c2luZyByZXNlcnZlZCBvcGVyYXRvciAyNTUuICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAvKiBCbGVuZCBjYWxjdWxhdGlvbiBpcyBkb25lIGluIDE2LjE2IGZpeGVkIHBvaW50LiAgICAgICAqLworICAvKiBCbGVuZCBjYWxjdWxhdGlvbiBpcyBkb25lIGluIDE2LjE2IGZpeGVkLXBvaW50LiAgICAgICAqLwogICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKICAgY2ZmX2JsZW5kX2RvQmxlbmQoIENGRl9TdWJGb250ICBzdWJGb250LAogICAgICAgICAgICAgICAgICAgICAgQ0ZGX1BhcnNlciAgIHBhcnNlciwKQEAgLTEzNjQsNyArMTM2NCw3IEBACiAgICAgICBGVF9VSW50MzIgICAgICAgIHN1bTsKIAogCi0gICAgICAvKiBjb252ZXJ0IGlucHV0cyB0byAxNi4xNiBmaXhlZCBwb2ludCAqLworICAgICAgLyogY29udmVydCBpbnB1dHMgdG8gMTYuMTYgZml4ZWQtcG9pbnQgKi8KICAgICAgIHN1bSA9IGNmZl9wYXJzZV9udW0oIHBhcnNlciwgJnBhcnNlci0+c3RhY2tbaSArIGJhc2VdICkgKiAweDEwMDAwOwogCiAgICAgICBmb3IgKCBqID0gMTsgaiA8IGJsZW5kLT5sZW5CVjsgaisrICkKQEAgLTEzNzMsNyArMTM3Myw3IEBACiAgICAgICAvKiBwb2ludCBwYXJzZXIgc3RhY2sgdG8gbmV3IHZhbHVlIG9uIGJsZW5kX3N0YWNrICovCiAgICAgICBwYXJzZXItPnN0YWNrW2kgKyBiYXNlXSA9IHN1YkZvbnQtPmJsZW5kX3RvcDsKIAotICAgICAgLyogUHVzaCBibGVuZGVkIHJlc3VsdCBhcyBUeXBlIDIgNS1ieXRlIGZpeGVkIHBvaW50IG51bWJlci4gIFRoaXMgKi8KKyAgICAgIC8qIFB1c2ggYmxlbmRlZCByZXN1bHQgYXMgVHlwZSAyIDUtYnl0ZSBmaXhlZC1wb2ludCBudW1iZXIuICBUaGlzICovCiAgICAgICAvKiB3aWxsIG5vdCBjb25mbGljdCB3aXRoIGFjdHVhbCBESUNUcyBiZWNhdXNlIDI1NSBpcyBhIHJlc2VydmVkICAqLwogICAgICAgLyogb3Bjb2RlIGluIGJvdGggQ0ZGIGFuZCBDRkYyIERJQ1RzLiAgU2VlIGBjZmZfcGFyc2VfbnVtJyBmb3IgICAgKi8KICAgICAgIC8qIGRlY29kZSBvZiB0aGlzLCB3aGljaCByb3VuZHMgdG8gYW4gaW50ZWdlci4gICAgICAgICAgICAgICAgICAgICovCmRpZmYgLS1naXQgYS9zcmMvY2ZmL2NmZmxvYWQuaCBiL3NyYy9jZmYvY2ZmbG9hZC5oCmluZGV4IDIwZjkyOTYuLjVhNDFjZGUgMTAwNjQ0Ci0tLSBhL3NyYy9jZmYvY2ZmbG9hZC5oCisrKyBiL3NyYy9jZmYvY2ZmbG9hZC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgT3BlblR5cGUgJiBDRkYgZGF0YS9wcm9ncmFtIHRhYmxlcyBsb2FkZXIgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9jZmYvY2Zmb2Jqcy5jIGIvc3JjL2NmZi9jZmZvYmpzLmMKaW5kZXggM2E0ZDQ3ZC4uZTQ4MzM2YyAxMDA2NDQKLS0tIGEvc3JjL2NmZi9jZmZvYmpzLmMKKysrIGIvc3JjL2NmZi9jZmZvYmpzLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBPcGVuVHlwZSBvYmplY3RzIG1hbmFnZXIgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTQxMSw5ICs0MTEsNyBAQAogICAgIEZUX1N0cmluZyogIHJlc3VsdDsKIAogCi0gICAgKHZvaWQpRlRfU1RSRFVQKCByZXN1bHQsIHNvdXJjZSApOwotCi0gICAgRlRfVU5VU0VEKCBlcnJvciApOworICAgIEZUX01FTV9TVFJEVVAoIHJlc3VsdCwgc291cmNlICk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogICB9CkBAIC03MjQsOCArNzIyLDEwIEBACiAKICNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCiAgICAgICB7Ci0gICAgICAgIEZUX1NlcnZpY2VfTXVsdGlNYXN0ZXJzICAgICAgIG1tICA9IChGVF9TZXJ2aWNlX011bHRpTWFzdGVycylmYWNlLT5tbTsKLSAgICAgICAgRlRfU2VydmljZV9NZXRyaWNzVmFyaWF0aW9ucyAgdmFyID0gKEZUX1NlcnZpY2VfTWV0cmljc1ZhcmlhdGlvbnMpZmFjZS0+dmFyOworICAgICAgICBGVF9TZXJ2aWNlX011bHRpTWFzdGVycworICAgICAgICAgIG1tID0gKEZUX1NlcnZpY2VfTXVsdGlNYXN0ZXJzKWZhY2UtPm1tOworICAgICAgICBGVF9TZXJ2aWNlX01ldHJpY3NWYXJpYXRpb25zCisgICAgICAgICAgdmFyID0gKEZUX1NlcnZpY2VfTWV0cmljc1ZhcmlhdGlvbnMpZmFjZS0+ZmFjZV92YXI7CiAKICAgICAgICAgRlRfVUludCAgaW5zdGFuY2VfaW5kZXggPSAoRlRfVUludClmYWNlX2luZGV4ID4+IDE2OwogCkBAIC0xMDMzLDEyICsxMDMzLDEwIEBACiAgICAgICAgIGNmZmZhY2UtPnN0eWxlX2ZsYWdzID0gZmxhZ3M7CiAgICAgICB9CiAKLSNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9OT19HTFlQSF9OQU1FUwogICAgICAgLyogQ0lELWtleWVkIENGRiBvciBDRkYyIGZvbnRzIGRvbid0IGhhdmUgZ2x5cGggbmFtZXMgLS0gdGhlIFNGTlQgKi8KICAgICAgIC8qIGxvYWRlciBoYXMgdW5zZXQgdGhpcyBmbGFnIGJlY2F1c2Ugb2YgdGhlIDMuMCBgcG9zdCcgdGFibGUuICAgICovCiAgICAgICBpZiAoIGRpY3QtPmNpZF9yZWdpc3RyeSA9PSAweEZGRkZVICYmICFjZmYyICkKICAgICAgICAgY2ZmZmFjZS0+ZmFjZV9mbGFncyB8PSBGVF9GQUNFX0ZMQUdfR0xZUEhfTkFNRVM7Ci0jZW5kaWYKIAogICAgICAgaWYgKCBkaWN0LT5jaWRfcmVnaXN0cnkgIT0gMHhGRkZGVSAmJiBwdXJlX2NmZiApCiAgICAgICAgIGNmZmZhY2UtPmZhY2VfZmxhZ3MgfD0gRlRfRkFDRV9GTEFHX0NJRF9LRVlFRDsKZGlmZiAtLWdpdCBhL3NyYy9jZmYvY2Zmb2Jqcy5oIGIvc3JjL2NmZi9jZmZvYmpzLmgKaW5kZXggMTQ5YThhMi4uOGYwNWY2MSAxMDA2NDQKLS0tIGEvc3JjL2NmZi9jZmZvYmpzLmgKKysrIGIvc3JjL2NmZi9jZmZvYmpzLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBPcGVuVHlwZSBvYmplY3RzIG1hbmFnZXIgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9jZmYvY2ZmcGFyc2UuYyBiL3NyYy9jZmYvY2ZmcGFyc2UuYwppbmRleCBkZGU1NWU5Li5lMTYyMDZmIDEwMDY0NAotLS0gYS9zcmMvY2ZmL2NmZnBhcnNlLmMKKysrIGIvc3JjL2NmZi9jZmZwYXJzZS5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQ0ZGIHRva2VuIHN0cmVhbSBwYXJzZXIgKGJvZHkpCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtNTMwLDcgKzUzMCw3IEBACiAKICAgICBlbHNlIGlmICggKipkID09IDI1NSApCiAgICAgewotICAgICAgLyogMTYuMTYgZml4ZWQgcG9pbnQgaXMgdXNlZCBpbnRlcm5hbGx5IGZvciBDRkYyIGJsZW5kIHJlc3VsdHMuICovCisgICAgICAvKiAxNi4xNiBmaXhlZC1wb2ludCBpcyB1c2VkIGludGVybmFsbHkgZm9yIENGRjIgYmxlbmQgcmVzdWx0cy4gKi8KICAgICAgIC8qIFNpbmNlIHRoZXNlIGFyZSB0cnVzdGVkIHZhbHVlcywgYSBsaW1pdCBjaGVjayBpcyBub3QgbmVlZGVkLiAqLwogCiAgICAgICAvKiBBZnRlciB0aGUgMjU1LCA0IGJ5dGVzIGdpdmUgdGhlIG51bWJlci4gICAgICAgICAgICAgICAgICovCkBAIC03NTgsMTIgKzc1OCwxMiBAQAogICAgICAgKnVwbSA9IChGVF9VTG9uZylwb3dlcl90ZW5zWy1tYXhfc2NhbGluZ107CiAKICAgICAgIEZUX1RSQUNFNCgoICIgWyVmICVmICVmICVmICVmICVmXVxuIiwKLSAgICAgICAgICAgICAgICAgIChkb3VibGUpbWF0cml4LT54eCAvICp1cG0gLyA2NTUzNiwKLSAgICAgICAgICAgICAgICAgIChkb3VibGUpbWF0cml4LT54eSAvICp1cG0gLyA2NTUzNiwKLSAgICAgICAgICAgICAgICAgIChkb3VibGUpbWF0cml4LT55eCAvICp1cG0gLyA2NTUzNiwKLSAgICAgICAgICAgICAgICAgIChkb3VibGUpbWF0cml4LT55eSAvICp1cG0gLyA2NTUzNiwKLSAgICAgICAgICAgICAgICAgIChkb3VibGUpb2Zmc2V0LT54ICAvICp1cG0gLyA2NTUzNiwKLSAgICAgICAgICAgICAgICAgIChkb3VibGUpb2Zmc2V0LT55ICAvICp1cG0gLyA2NTUzNiApKTsKKyAgICAgICAgICAgICAgICAgIChkb3VibGUpbWF0cml4LT54eCAvIChkb3VibGUpKnVwbSAvIDY1NTM2LAorICAgICAgICAgICAgICAgICAgKGRvdWJsZSltYXRyaXgtPnh5IC8gKGRvdWJsZSkqdXBtIC8gNjU1MzYsCisgICAgICAgICAgICAgICAgICAoZG91YmxlKW1hdHJpeC0+eXggLyAoZG91YmxlKSp1cG0gLyA2NTUzNiwKKyAgICAgICAgICAgICAgICAgIChkb3VibGUpbWF0cml4LT55eSAvIChkb3VibGUpKnVwbSAvIDY1NTM2LAorICAgICAgICAgICAgICAgICAgKGRvdWJsZSlvZmZzZXQtPnggIC8gKGRvdWJsZSkqdXBtIC8gNjU1MzYsCisgICAgICAgICAgICAgICAgICAoZG91YmxlKW9mZnNldC0+eSAgLyAoZG91YmxlKSp1cG0gLyA2NTUzNiApKTsKIAogICAgICAgaWYgKCAhRlRfTWF0cml4X0NoZWNrKCBtYXRyaXggKSApCiAgICAgICB7CmRpZmYgLS1naXQgYS9zcmMvY2ZmL2NmZnBhcnNlLmggYi9zcmMvY2ZmL2NmZnBhcnNlLmgKaW5kZXggYTI4YWI1Mi4uNThkNTlmYSAxMDA2NDQKLS0tIGEvc3JjL2NmZi9jZmZwYXJzZS5oCisrKyBiL3NyYy9jZmYvY2ZmcGFyc2UuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIENGRiB0b2tlbiBzdHJlYW0gcGFyc2VyIChzcGVjaWZpY2F0aW9uKQogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9jZmYvY2ZmdG9rZW4uaCBiL3NyYy9jZmYvY2ZmdG9rZW4uaAppbmRleCBlZWYzMDY5Li5iNjFjYjBlIDEwMDY0NAotLS0gYS9zcmMvY2ZmL2NmZnRva2VuLmgKKysrIGIvc3JjL2NmZi9jZmZ0b2tlbi5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQ0ZGIHRva2VuIGRlZmluaXRpb25zIChzcGVjaWZpY2F0aW9uIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9jZmYvbW9kdWxlLm1rIGIvc3JjL2NmZi9tb2R1bGUubWsKaW5kZXggY2ZhNDQ0ZC4uYjg4MWQwNCAxMDA2NDQKLS0tIGEvc3JjL2NmZi9tb2R1bGUubWsKKysrIGIvc3JjL2NmZi9tb2R1bGUubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9zcmMvY2ZmL3J1bGVzLm1rIGIvc3JjL2NmZi9ydWxlcy5tawppbmRleCBlNTQ2MTRmLi42Mjk0MjRhIDEwMDY0NAotLS0gYS9zcmMvY2ZmL3J1bGVzLm1rCisrKyBiL3NyYy9jZmYvcnVsZXMubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9zcmMvY2lkL2NpZGVycnMuaCBiL3NyYy9jaWQvY2lkZXJycy5oCmluZGV4IDJkNzYyZDkuLjQwYTEwOTcgMTAwNjQ0Ci0tLSBhL3NyYy9jaWQvY2lkZXJycy5oCisrKyBiL3NyYy9jaWQvY2lkZXJycy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQ0lEIGVycm9yIGNvZGVzIChzcGVjaWZpY2F0aW9uIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9jaWQvY2lkZ2xvYWQuYyBiL3NyYy9jaWQvY2lkZ2xvYWQuYwppbmRleCBhNDZkMDYzLi5iYTRiNzU2IDEwMDY0NAotLS0gYS9zcmMvY2lkL2NpZGdsb2FkLmMKKysrIGIvc3JjL2NpZC9jaWRnbG9hZC5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQ0lELWtleWVkIFR5cGUxIEdseXBoIExvYWRlciAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL2NpZC9jaWRnbG9hZC5oIGIvc3JjL2NpZC9jaWRnbG9hZC5oCmluZGV4IDhiNTE1ZWYuLjk3OTU0ZDQgMTAwNjQ0Ci0tLSBhL3NyYy9jaWQvY2lkZ2xvYWQuaAorKysgYi9zcmMvY2lkL2NpZGdsb2FkLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBPcGVuVHlwZSBHbHlwaCBMb2FkZXIgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9jaWQvY2lkbG9hZC5jIGIvc3JjL2NpZC9jaWRsb2FkLmMKaW5kZXggNDk2MjE5ZC4uMjZkYWE1ZCAxMDA2NDQKLS0tIGEvc3JjL2NpZC9jaWRsb2FkLmMKKysrIGIvc3JjL2NpZC9jaWRsb2FkLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBDSUQta2V5ZWQgVHlwZTEgZm9udCBsb2FkZXIgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9jaWQvY2lkbG9hZC5oIGIvc3JjL2NpZC9jaWRsb2FkLmgKaW5kZXggZWUxZDQ4Ni4uZDEyZDI5NiAxMDA2NDQKLS0tIGEvc3JjL2NpZC9jaWRsb2FkLmgKKysrIGIvc3JjL2NpZC9jaWRsb2FkLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBDSUQta2V5ZWQgVHlwZTEgZm9udCBsb2FkZXIgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9jaWQvY2lkb2Jqcy5jIGIvc3JjL2NpZC9jaWRvYmpzLmMKaW5kZXggZTNjMjljMi4uMDZiMjEzOSAxMDA2NDQKLS0tIGEvc3JjL2NpZC9jaWRvYmpzLmMKKysrIGIvc3JjL2NpZC9jaWRvYmpzLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBDSUQgb2JqZWN0cyBtYW5hZ2VyIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0xNTMsNyArMTUzLDcgQEAKICAgfQogCiAKLSAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCiAgIGNpZF9zaXplX3JlcXVlc3QoIEZUX1NpemUgICAgICAgICAgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgRlRfU2l6ZV9SZXF1ZXN0ICByZXEgKQogICB7CmRpZmYgLS1naXQgYS9zcmMvY2lkL2NpZG9ianMuaCBiL3NyYy9jaWQvY2lkb2Jqcy5oCmluZGV4IDMyZjU5Y2IuLjgzYzBjNjEgMTAwNjQ0Ci0tLSBhL3NyYy9jaWQvY2lkb2Jqcy5oCisrKyBiL3NyYy9jaWQvY2lkb2Jqcy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQ0lEIG9iamVjdHMgbWFuYWdlciAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL2NpZC9jaWRwYXJzZS5jIGIvc3JjL2NpZC9jaWRwYXJzZS5jCmluZGV4IDg1MmM5YjYuLjE2ODg5ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9jaWQvY2lkcGFyc2UuYworKysgYi9zcmMvY2lkL2NpZHBhcnNlLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBDSUQta2V5ZWQgVHlwZTEgcGFyc2VyIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvY2lkL2NpZHBhcnNlLmggYi9zcmMvY2lkL2NpZHBhcnNlLmgKaW5kZXggZmJjNDM3Yi4uMmZkNGU3YSAxMDA2NDQKLS0tIGEvc3JjL2NpZC9jaWRwYXJzZS5oCisrKyBiL3NyYy9jaWQvY2lkcGFyc2UuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIENJRC1rZXllZCBUeXBlMSBwYXJzZXIgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9jaWQvY2lkcml2ZXIuYyBiL3NyYy9jaWQvY2lkcml2ZXIuYwppbmRleCBhMDg5OGRmLi5mNzQ5OTIzIDEwMDY0NAotLS0gYS9zcmMvY2lkL2NpZHJpdmVyLmMKKysrIGIvc3JjL2NpZC9jaWRyaXZlci5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQ0lEIGRyaXZlciBpbnRlcmZhY2UgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9jaWQvY2lkcml2ZXIuaCBiL3NyYy9jaWQvY2lkcml2ZXIuaAppbmRleCAzZmY1Zjc4Li5hNjI0OTM4IDEwMDY0NAotLS0gYS9zcmMvY2lkL2NpZHJpdmVyLmgKKysrIGIvc3JjL2NpZC9jaWRyaXZlci5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgSGlnaC1sZXZlbCBDSUQgZHJpdmVyIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL2NpZC9jaWR0b2tlbi5oIGIvc3JjL2NpZC9jaWR0b2tlbi5oCmluZGV4IDg0YzgyNTguLjkyNTk1MWEgMTAwNjQ0Ci0tLSBhL3NyYy9jaWQvY2lkdG9rZW4uaAorKysgYi9zcmMvY2lkL2NpZHRva2VuLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBDSUQgdG9rZW4gZGVmaW5pdGlvbnMgKHNwZWNpZmljYXRpb24gb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL2NpZC9tb2R1bGUubWsgYi9zcmMvY2lkL21vZHVsZS5tawppbmRleCAyZTE2MjYyLi41NjNjYjM0IDEwMDY0NAotLS0gYS9zcmMvY2lkL21vZHVsZS5taworKysgYi9zcmMvY2lkL21vZHVsZS5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL3NyYy9jaWQvcnVsZXMubWsgYi9zcmMvY2lkL3J1bGVzLm1rCmluZGV4IDkzM2IyZGEuLmM1MjZhZDMgMTAwNjQ0Ci0tLSBhL3NyYy9jaWQvcnVsZXMubWsKKysrIGIvc3JjL2NpZC9ydWxlcy5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL3NyYy9jaWQvdHlwZTFjaWQuYyBiL3NyYy9jaWQvdHlwZTFjaWQuYwppbmRleCA1NDA1ZWNmLi45MDVjODk2IDEwMDY0NAotLS0gYS9zcmMvY2lkL3R5cGUxY2lkLmMKKysrIGIvc3JjL2NpZC90eXBlMWNpZC5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgT3BlblR5cGUgZHJpdmVyIGNvbXBvbmVudCAoYm9keSBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvZGxnL2RsZ3dyYXAuYyBiL3NyYy9kbGcvZGxnd3JhcC5jCmluZGV4IGUwYjlhOGQuLjI3MTI0MWYgMTAwNjQ0Ci0tLSBhL3NyYy9kbGcvZGxnd3JhcC5jCisrKyBiL3NyYy9kbGcvZGxnd3JhcC5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgV3JhcHBlciBmaWxlIGZvciB0aGUgJ2RsZycgbGlicmFyeSAoYm9keSBvbmx5KQogICoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9kbGcvcnVsZXMubWsgYi9zcmMvZGxnL3J1bGVzLm1rCmluZGV4IGE1NmRlZTYuLjdmNTA2ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9kbGcvcnVsZXMubWsKKysrIGIvc3JjL2RsZy9ydWxlcy5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAyMC0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL3NyYy9neHZhbGlkL1JFQURNRSBiL3NyYy9neHZhbGlkL1JFQURNRQppbmRleCA3ZmIwMjk2Li4wZTNkYjMyIDEwMDY0NAotLS0gYS9zcmMvZ3h2YWxpZC9SRUFETUUKKysrIGIvc3JjL2d4dmFsaWQvUkVBRE1FCkBAIC01MTgsNyArNTE4LDcgQEAKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvcHlyaWdodCAoQykgMjAwNC0yMDIxIGJ5CitDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQogc3V6dWtpIHRvc2hpeWEsIE1hc2F0YWtlIFlBTUFUTywgUmVkIGhhdCBLLksuLAogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogCmRpZmYgLS1naXQgYS9zcmMvZ3h2YWxpZC9neHZhbGlkLmMgYi9zcmMvZ3h2YWxpZC9neHZhbGlkLmMKaW5kZXggMzA5ZDUxNy4uZTAzNTlmNCAxMDA2NDQKLS0tIGEvc3JjL2d4dmFsaWQvZ3h2YWxpZC5jCisrKyBiL3NyYy9neHZhbGlkL2d4dmFsaWQuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIHZhbGlkYXRvciBmb3IgVHJ1ZVR5cGVHWC9BQVQgdGFibGVzIChib2R5IG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMyBieQogICogc3V6dWtpIHRvc2hpeWEsIE1hc2F0YWtlIFlBTUFUTywgUmVkIEhhdCBLLksuLAogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKZGlmZiAtLWdpdCBhL3NyYy9neHZhbGlkL2d4dmFsaWQuaCBiL3NyYy9neHZhbGlkL2d4dmFsaWQuaAppbmRleCAyYzQxYzI4Li5hODM0MDhiIDEwMDY0NAotLS0gYS9zcmMvZ3h2YWxpZC9neHZhbGlkLmgKKysrIGIvc3JjL2d4dmFsaWQvZ3h2YWxpZC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHJ1ZVR5cGVHWC9BQVQgdGFibGUgdmFsaWRhdGlvbiAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgYnkKICAqIHN1enVraSB0b3NoaXlhLCBNYXNhdGFrZSBZQU1BVE8sIFJlZCBIYXQgSy5LLiwKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCmRpZmYgLS1naXQgYS9zcmMvZ3h2YWxpZC9neHZic2xuLmMgYi9zcmMvZ3h2YWxpZC9neHZic2xuLmMKaW5kZXggYWY2OWNiNS4uMDMwYTY0ZSAxMDA2NDQKLS0tIGEvc3JjL2d4dmFsaWQvZ3h2YnNsbi5jCisrKyBiL3NyYy9neHZhbGlkL2d4dmJzbG4uYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRydWVUeXBlR1gvQUFUIGJzbG4gdGFibGUgdmFsaWRhdGlvbiAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CiAgKiBzdXp1a2kgdG9zaGl5YSwgTWFzYXRha2UgWUFNQVRPLCBSZWQgSGF0IEsuSy4sCiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2d4dmFsaWQvZ3h2Y29tbW4uYyBiL3NyYy9neHZhbGlkL2d4dmNvbW1uLmMKaW5kZXggMThlNDJiMC4uN2Y5MDg3NCAxMDA2NDQKLS0tIGEvc3JjL2d4dmFsaWQvZ3h2Y29tbW4uYworKysgYi9zcmMvZ3h2YWxpZC9neHZjb21tbi5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHJ1ZVR5cGVHWC9BQVQgY29tbW9uIHRhYmxlcyB2YWxpZGF0aW9uIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICAqIHN1enVraSB0b3NoaXlhLCBNYXNhdGFrZSBZQU1BVE8sIFJlZCBIYXQgSy5LLiwKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCkBAIC0xMDMzLDcgKzEwMzMsNyBAQAogICAgIEdYVl9OQU1FX0VOVEVSKCAiU3RhdGVBcnJheSIgKTsKIAogICAgIEdYVl9UUkFDRSgoICJwYXJzZSAlZCBieXRlcyBieSBzdGF0ZVNpemU9JWQgbWF4Q2xhc3NJRD0lZFxuIiwKLSAgICAgICAgICAgICAgICAoaW50KSgqbGVuZ3RoX3ApLCBzdGF0ZVNpemUsIChpbnQpKG1heENsYXNzSUQpICkpOworICAgICAgICAgICAgICAgIChpbnQpKCAqbGVuZ3RoX3AgKSwgc3RhdGVTaXplLCAoaW50KW1heENsYXNzSUQgKSk7CiAKICAgICAvKgogICAgICAqIDIgc3RhdGVzIGFyZSBwcmVkZWZpbmVkIGFuZCBtdXN0IGJlIGRlc2NyaWJlZCBpbiBTdGF0ZUFycmF5OgpAQCAtMTQxOCw3ICsxNDE4LDcgQEAKICAgICBHWFZfTkFNRV9FTlRFUiggIlhTdGF0ZUFycmF5IiApOwogCiAgICAgR1hWX1RSQUNFKCggInBhcnNlICUgM2QgYnl0ZXMgYnkgc3RhdGVTaXplPSUgM2QgbWF4Q2xhc3NJRD0lIDNkXG4iLAotICAgICAgICAgICAgICAgIChpbnQpKCpsZW5ndGhfcCksIChpbnQpc3RhdGVTaXplLCAoaW50KShtYXhDbGFzc0lEKSApKTsKKyAgICAgICAgICAgICAgICAoaW50KSggKmxlbmd0aF9wICksIChpbnQpc3RhdGVTaXplLCAoaW50KW1heENsYXNzSUQgKSk7CiAKICAgICAvKgogICAgICAqIDIgc3RhdGVzIGFyZSBwcmVkZWZpbmVkIGFuZCBtdXN0IGJlIGRlc2NyaWJlZDoKZGlmZiAtLWdpdCBhL3NyYy9neHZhbGlkL2d4dmNvbW1uLmggYi9zcmMvZ3h2YWxpZC9neHZjb21tbi5oCmluZGV4IGI3OWI2NDEuLmY4OGQyM2EgMTAwNjQ0Ci0tLSBhL3NyYy9neHZhbGlkL2d4dmNvbW1uLmgKKysrIGIvc3JjL2d4dmFsaWQvZ3h2Y29tbW4uaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRydWVUeXBlR1gvQUFUIGNvbW1vbiB0YWJsZXMgdmFsaWRhdGlvbiAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CiAgKiBzdXp1a2kgdG9zaGl5YSwgTWFzYXRha2UgWUFNQVRPLCBSZWQgSGF0IEsuSy4sCiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2d4dmFsaWQvZ3h2ZXJyb3IuaCBiL3NyYy9neHZhbGlkL2d4dmVycm9yLmgKaW5kZXggZDIwZDM5NS4uMDkzMTFlZCAxMDA2NDQKLS0tIGEvc3JjL2d4dmFsaWQvZ3h2ZXJyb3IuaAorKysgYi9zcmMvZ3h2YWxpZC9neHZlcnJvci5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHJ1ZVR5cGVHWC9BQVQgdmFsaWRhdGlvbiBtb2R1bGUgZXJyb3IgY29kZXMgKHNwZWNpZmljYXRpb24gb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CiAgKiBzdXp1a2kgdG9zaGl5YSwgTWFzYXRha2UgWUFNQVRPLCBSZWQgSGF0IEsuSy4sCiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2d4dmFsaWQvZ3h2ZmVhdC5jIGIvc3JjL2d4dmFsaWQvZ3h2ZmVhdC5jCmluZGV4IDBhOGUyZjIuLjZjZjE4MjEgMTAwNjQ0Ci0tLSBhL3NyYy9neHZhbGlkL2d4dmZlYXQuYworKysgYi9zcmMvZ3h2YWxpZC9neHZmZWF0LmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUcnVlVHlwZUdYL0FBVCBmZWF0IHRhYmxlIHZhbGlkYXRpb24gKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQogICogc3V6dWtpIHRvc2hpeWEsIE1hc2F0YWtlIFlBTUFUTywgUmVkIEhhdCBLLksuLAogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKZGlmZiAtLWdpdCBhL3NyYy9neHZhbGlkL2d4dmZlYXQuaCBiL3NyYy9neHZhbGlkL2d4dmZlYXQuaAppbmRleCBmNmQyOGZhLi5iMzNjMWJjIDEwMDY0NAotLS0gYS9zcmMvZ3h2YWxpZC9neHZmZWF0LmgKKysrIGIvc3JjL2d4dmFsaWQvZ3h2ZmVhdC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHJ1ZVR5cGVHWC9BQVQgZmVhdCB0YWJsZSB2YWxpZGF0aW9uIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICAqIHN1enVraSB0b3NoaXlhLCBNYXNhdGFrZSBZQU1BVE8sIFJlZCBIYXQgSy5LLiwKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCmRpZmYgLS1naXQgYS9zcmMvZ3h2YWxpZC9neHZmZ2VuLmMgYi9zcmMvZ3h2YWxpZC9neHZmZ2VuLmMKaW5kZXggYjQ3Y2QwZi4uMTE1MzU0MiAxMDA2NDQKLS0tIGEvc3JjL2d4dmFsaWQvZ3h2Zmdlbi5jCisrKyBiL3NyYy9neHZhbGlkL2d4dmZnZW4uYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgR2VuZXJhdGUgZmVhdHVyZSByZWdpc3RyeSBkYXRhIGZvciBneHYgYGZlYXQnIHZhbGlkYXRvci4KICAqICAgVGhpcyBwcm9ncmFtIGlzIGRlcml2ZWQgZnJvbSBneGZlYXRyZWcuYyBpbiBneGxheW91dC4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICAqIE1hc2F0YWtlIFlBTUFUTyBhbmQgUmVkaGF0IEsuSy4KICAqCiAgKiBUaGlzIGZpbGUgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9neHZhbGlkL2d4dmp1c3QuYyBiL3NyYy9neHZhbGlkL2d4dmp1c3QuYwppbmRleCBlYzI4OWI4Li41Y2NhOTRkIDEwMDY0NAotLS0gYS9zcmMvZ3h2YWxpZC9neHZqdXN0LmMKKysrIGIvc3JjL2d4dmFsaWQvZ3h2anVzdC5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHJ1ZVR5cGVHWC9BQVQganVzdCB0YWJsZSB2YWxpZGF0aW9uIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgYnkKICAqIHN1enVraSB0b3NoaXlhLCBNYXNhdGFrZSBZQU1BVE8sIFJlZCBIYXQgSy5LLiwKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCkBAIC0xNTYsNyArMTU2LDYgQEAKICAgewogICAgIEZUX0J5dGVzICBwICAgICAgICAgPSB0YWJsZTsKICAgICBGVF9CeXRlcyAgd2RjX2VuZCAgID0gdGFibGUgKyBHWFZfSlVTVF9EQVRBKCB3ZGNfb2Zmc2V0X21heCApOwotICAgIEZUX1VJbnQgICBpOwogCiAKICAgICBHWFZfTkFNRV9FTlRFUiggImp1c3QganVzdERlbHRhQ2x1c3RlcnMiICk7CkBAIC0xNjQsNyArMTYzLDcgQEAKICAgICBpZiAoIGxpbWl0IDw9IHdkY19lbmQgKQogICAgICAgRlRfSU5WQUxJRF9PRkZTRVQ7CiAKLSAgICBmb3IgKCBpID0gMDsgcCA8PSB3ZGNfZW5kOyBpKysgKQorICAgIHdoaWxlICggcCA8PSB3ZGNfZW5kICkKICAgICB7CiAgICAgICBneHZfanVzdF93ZGNfZW50cnlfdmFsaWRhdGUoIHAsIGxpbWl0LCBneHZhbGlkICk7CiAgICAgICBwICs9IGd4dmFsaWQtPnN1YnRhYmxlX2xlbmd0aDsKZGlmZiAtLWdpdCBhL3NyYy9neHZhbGlkL2d4dmtlcm4uYyBiL3NyYy9neHZhbGlkL2d4dmtlcm4uYwppbmRleCA1NDJlOGJjLi4yMWZjMjQ1IDEwMDY0NAotLS0gYS9zcmMvZ3h2YWxpZC9neHZrZXJuLmMKKysrIGIvc3JjL2d4dmFsaWQvZ3h2a2Vybi5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHJ1ZVR5cGVHWC9BQVQga2VybiB0YWJsZSB2YWxpZGF0aW9uIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICAqIHN1enVraSB0b3NoaXlhLCBNYXNhdGFrZSBZQU1BVE8sIFJlZCBIYXQgSy5LLiwKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCmRpZmYgLS1naXQgYS9zcmMvZ3h2YWxpZC9neHZsY2FyLmMgYi9zcmMvZ3h2YWxpZC9neHZsY2FyLmMKaW5kZXggOWRiODM5Yi4uNWYzYmY4OSAxMDA2NDQKLS0tIGEvc3JjL2d4dmFsaWQvZ3h2bGNhci5jCisrKyBiL3NyYy9neHZhbGlkL2d4dmxjYXIuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRydWVUeXBlR1gvQUFUIGxjYXIgdGFibGUgdmFsaWRhdGlvbiAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CiAgKiBzdXp1a2kgdG9zaGl5YSwgTWFzYXRha2UgWUFNQVRPLCBSZWQgSGF0IEsuSy4sCiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2d4dmFsaWQvZ3h2bW9kLmMgYi9zcmMvZ3h2YWxpZC9neHZtb2QuYwppbmRleCAxYTExNDI2Li4wYjQxMTViIDEwMDY0NAotLS0gYS9zcmMvZ3h2YWxpZC9neHZtb2QuYworKysgYi9zcmMvZ3h2YWxpZC9neHZtb2QuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlJ3MgVHJ1ZVR5cGVHWC9BQVQgdmFsaWRhdGlvbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQogICogc3V6dWtpIHRvc2hpeWEsIE1hc2F0YWtlIFlBTUFUTywgUmVkIEhhdCBLLksuLAogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKZGlmZiAtLWdpdCBhL3NyYy9neHZhbGlkL2d4dm1vZC5oIGIvc3JjL2d4dmFsaWQvZ3h2bW9kLmgKaW5kZXggOTBlMGMxMC4uZGIzZDFkOSAxMDA2NDQKLS0tIGEvc3JjL2d4dmFsaWQvZ3h2bW9kLmgKKysrIGIvc3JjL2d4dmFsaWQvZ3h2bW9kLmgKQEAgLTUsNyArNSw3IEBACiAgKiAgIEZyZWVUeXBlJ3MgVHJ1ZVR5cGVHWC9BQVQgdmFsaWRhdGlvbiBtb2R1bGUgaW1wbGVtZW50YXRpb24KICAqICAgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQogICogc3V6dWtpIHRvc2hpeWEsIE1hc2F0YWtlIFlBTUFUTywgUmVkIEhhdCBLLksuLAogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKZGlmZiAtLWdpdCBhL3NyYy9neHZhbGlkL2d4dm1vcnQuYyBiL3NyYy9neHZhbGlkL2d4dm1vcnQuYwppbmRleCBkMGRiN2Y0Li43MDMyZDYzIDEwMDY0NAotLS0gYS9zcmMvZ3h2YWxpZC9neHZtb3J0LmMKKysrIGIvc3JjL2d4dmFsaWQvZ3h2bW9ydC5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHJ1ZVR5cGVHWC9BQVQgbW9ydCB0YWJsZSB2YWxpZGF0aW9uIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgYnkKICAqIHN1enVraSB0b3NoaXlhLCBNYXNhdGFrZSBZQU1BVE8sIFJlZCBIYXQgSy5LLiwKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCmRpZmYgLS1naXQgYS9zcmMvZ3h2YWxpZC9neHZtb3J0LmggYi9zcmMvZ3h2YWxpZC9neHZtb3J0LmgKaW5kZXggZGU1YWI0ZS4uNWM4MTliZCAxMDA2NDQKLS0tIGEvc3JjL2d4dmFsaWQvZ3h2bW9ydC5oCisrKyBiL3NyYy9neHZhbGlkL2d4dm1vcnQuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRydWVUeXBlR1gvQUFUIGNvbW1vbiBkZWZpbml0aW9uIGZvciBtb3J0IHRhYmxlIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICAqIHN1enVraSB0b3NoaXlhLCBNYXNhdGFrZSBZQU1BVE8sIFJlZCBIYXQgSy5LLiwKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCmRpZmYgLS1naXQgYS9zcmMvZ3h2YWxpZC9neHZtb3J0MC5jIGIvc3JjL2d4dmFsaWQvZ3h2bW9ydDAuYwppbmRleCAwYzY5NWFhLi4yNGU3MGEwIDEwMDY0NAotLS0gYS9zcmMvZ3h2YWxpZC9neHZtb3J0MC5jCisrKyBiL3NyYy9neHZhbGlkL2d4dm1vcnQwLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgIFRydWVUeXBlR1gvQUFUIG1vcnQgdGFibGUgdmFsaWRhdGlvbgogICogICBib2R5IGZvciB0eXBlMCAoSW5kaWMgU2NyaXB0IFJlYXJyYW5nZW1lbnQpIHN1YnRhYmxlLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMyBieQogICogc3V6dWtpIHRvc2hpeWEsIE1hc2F0YWtlIFlBTUFUTywgUmVkIEhhdCBLLksuLAogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKZGlmZiAtLWdpdCBhL3NyYy9neHZhbGlkL2d4dm1vcnQxLmMgYi9zcmMvZ3h2YWxpZC9neHZtb3J0MS5jCmluZGV4IDBhZjIyMzYuLmVhNTU5MWYgMTAwNjQ0Ci0tLSBhL3NyYy9neHZhbGlkL2d4dm1vcnQxLmMKKysrIGIvc3JjL2d4dmFsaWQvZ3h2bW9ydDEuYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgVHJ1ZVR5cGVHWC9BQVQgbW9ydCB0YWJsZSB2YWxpZGF0aW9uCiAgKiAgIGJvZHkgZm9yIHR5cGUxIChDb250ZXh0dWFsIFN1YnN0aXR1dGlvbikgc3VidGFibGUuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIzIGJ5CiAgKiBzdXp1a2kgdG9zaGl5YSwgTWFzYXRha2UgWUFNQVRPLCBSZWQgSGF0IEsuSy4sCiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2d4dmFsaWQvZ3h2bW9ydDIuYyBiL3NyYy9neHZhbGlkL2d4dm1vcnQyLmMKaW5kZXggNzNmNDE4ZS4uNTA2NDRmMCAxMDA2NDQKLS0tIGEvc3JjL2d4dmFsaWQvZ3h2bW9ydDIuYworKysgYi9zcmMvZ3h2YWxpZC9neHZtb3J0Mi5jCkBAIC01LDcgKzUsNyBAQAogICogICBUcnVlVHlwZUdYL0FBVCBtb3J0IHRhYmxlIHZhbGlkYXRpb24KICAqICAgYm9keSBmb3IgdHlwZTIgKExpZ2F0dXJlIFN1YnN0aXR1dGlvbikgc3VidGFibGUuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIzIGJ5CiAgKiBzdXp1a2kgdG9zaGl5YSwgTWFzYXRha2UgWUFNQVRPLCBSZWQgSGF0IEsuSy4sCiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2d4dmFsaWQvZ3h2bW9ydDQuYyBiL3NyYy9neHZhbGlkL2d4dm1vcnQ0LmMKaW5kZXggMWIwZGQzZS4uMDY0MWIxMSAxMDA2NDQKLS0tIGEvc3JjL2d4dmFsaWQvZ3h2bW9ydDQuYworKysgYi9zcmMvZ3h2YWxpZC9neHZtb3J0NC5jCkBAIC01LDcgKzUsNyBAQAogICogICBUcnVlVHlwZUdYL0FBVCBtb3J0IHRhYmxlIHZhbGlkYXRpb24KICAqICAgYm9keSBmb3IgdHlwZTQgKE5vbi1Db250ZXh0dWFsIEdseXBoIFN1YnN0aXR1dGlvbikgc3VidGFibGUuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIzIGJ5CiAgKiBzdXp1a2kgdG9zaGl5YSwgTWFzYXRha2UgWUFNQVRPLCBSZWQgSGF0IEsuSy4sCiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2d4dmFsaWQvZ3h2bW9ydDUuYyBiL3NyYy9neHZhbGlkL2d4dm1vcnQ1LmMKaW5kZXggY2ZiZjMxMi4uOTIyNWJiMCAxMDA2NDQKLS0tIGEvc3JjL2d4dmFsaWQvZ3h2bW9ydDUuYworKysgYi9zcmMvZ3h2YWxpZC9neHZtb3J0NS5jCkBAIC01LDcgKzUsNyBAQAogICogICBUcnVlVHlwZUdYL0FBVCBtb3J0IHRhYmxlIHZhbGlkYXRpb24KICAqICAgYm9keSBmb3IgdHlwZTUgKENvbnRleHR1YWwgR2x5cGggSW5zZXJ0aW9uKSBzdWJ0YWJsZS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgYnkKICAqIHN1enVraSB0b3NoaXlhLCBNYXNhdGFrZSBZQU1BVE8sIFJlZCBIYXQgSy5LLiwKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCmRpZmYgLS1naXQgYS9zcmMvZ3h2YWxpZC9neHZtb3J4LmMgYi9zcmMvZ3h2YWxpZC9neHZtb3J4LmMKaW5kZXggYmFiZmY1MS4uOTMxYmYwMCAxMDA2NDQKLS0tIGEvc3JjL2d4dmFsaWQvZ3h2bW9yeC5jCisrKyBiL3NyYy9neHZhbGlkL2d4dm1vcnguYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRydWVUeXBlR1gvQUFUIG1vcnggdGFibGUgdmFsaWRhdGlvbiAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIzIGJ5CiAgKiBzdXp1a2kgdG9zaGl5YSwgTWFzYXRha2UgWUFNQVRPLCBSZWQgSGF0IEsuSy4sCiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2d4dmFsaWQvZ3h2bW9yeC5oIGIvc3JjL2d4dmFsaWQvZ3h2bW9yeC5oCmluZGV4IGYxNTVmMTguLjI3NTcyNTUgMTAwNjQ0Ci0tLSBhL3NyYy9neHZhbGlkL2d4dm1vcnguaAorKysgYi9zcmMvZ3h2YWxpZC9neHZtb3J4LmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUcnVlVHlwZUdYL0FBVCBjb21tb24gZGVmaW5pdGlvbiBmb3IgbW9yeCB0YWJsZSAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIzIGJ5CiAgKiBzdXp1a2kgdG9zaGl5YSwgTWFzYXRha2UgWUFNQVRPLCBSZWQgSGF0IEsuSy4sCiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2d4dmFsaWQvZ3h2bW9yeDAuYyBiL3NyYy9neHZhbGlkL2d4dm1vcngwLmMKaW5kZXggZTkzY2VhOS4uNzM1MjNmMyAxMDA2NDQKLS0tIGEvc3JjL2d4dmFsaWQvZ3h2bW9yeDAuYworKysgYi9zcmMvZ3h2YWxpZC9neHZtb3J4MC5jCkBAIC01LDcgKzUsNyBAQAogICogICBUcnVlVHlwZUdYL0FBVCBtb3J4IHRhYmxlIHZhbGlkYXRpb24KICAqICAgYm9keSBmb3IgdHlwZTAgKEluZGljIFNjcmlwdCBSZWFycmFuZ2VtZW50KSBzdWJ0YWJsZS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgYnkKICAqIHN1enVraSB0b3NoaXlhLCBNYXNhdGFrZSBZQU1BVE8sIFJlZCBIYXQgSy5LLiwKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCmRpZmYgLS1naXQgYS9zcmMvZ3h2YWxpZC9neHZtb3J4MS5jIGIvc3JjL2d4dmFsaWQvZ3h2bW9yeDEuYwppbmRleCBkMzgwZjhkLi43MWEyMDE4IDEwMDY0NAotLS0gYS9zcmMvZ3h2YWxpZC9neHZtb3J4MS5jCisrKyBiL3NyYy9neHZhbGlkL2d4dm1vcngxLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgIFRydWVUeXBlR1gvQUFUIG1vcnggdGFibGUgdmFsaWRhdGlvbgogICogICBib2R5IGZvciB0eXBlMSAoQ29udGV4dHVhbCBTdWJzdGl0dXRpb24pIHN1YnRhYmxlLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMyBieQogICogc3V6dWtpIHRvc2hpeWEsIE1hc2F0YWtlIFlBTUFUTywgUmVkIEhhdCBLLksuLAogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKZGlmZiAtLWdpdCBhL3NyYy9neHZhbGlkL2d4dm1vcngyLmMgYi9zcmMvZ3h2YWxpZC9neHZtb3J4Mi5jCmluZGV4IGU3ZTAwOGYuLjg1OGM4MTEgMTAwNjQ0Ci0tLSBhL3NyYy9neHZhbGlkL2d4dm1vcngyLmMKKysrIGIvc3JjL2d4dmFsaWQvZ3h2bW9yeDIuYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgVHJ1ZVR5cGVHWC9BQVQgbW9yeCB0YWJsZSB2YWxpZGF0aW9uCiAgKiAgIGJvZHkgZm9yIHR5cGUyIChMaWdhdHVyZSBTdWJzdGl0dXRpb24pIHN1YnRhYmxlLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMyBieQogICogc3V6dWtpIHRvc2hpeWEsIE1hc2F0YWtlIFlBTUFUTywgUmVkIEhhdCBLLksuLAogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKZGlmZiAtLWdpdCBhL3NyYy9neHZhbGlkL2d4dm1vcng0LmMgYi9zcmMvZ3h2YWxpZC9neHZtb3J4NC5jCmluZGV4IGU2MzJlOGQuLmM5YWQxOTkgMTAwNjQ0Ci0tLSBhL3NyYy9neHZhbGlkL2d4dm1vcng0LmMKKysrIGIvc3JjL2d4dmFsaWQvZ3h2bW9yeDQuYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgVHJ1ZVR5cGVHWC9BQVQgbW9yeCB0YWJsZSB2YWxpZGF0aW9uCiAgKiAgIGJvZHkgZm9yICJtb3J4IiB0eXBlNCAoTm9uLUNvbnRleHR1YWwgR2x5cGggU3Vic3RpdHV0aW9uKSBzdWJ0YWJsZS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgYnkKICAqIHN1enVraSB0b3NoaXlhLCBNYXNhdGFrZSBZQU1BVE8sIFJlZCBIYXQgSy5LLiwKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCmRpZmYgLS1naXQgYS9zcmMvZ3h2YWxpZC9neHZtb3J4NS5jIGIvc3JjL2d4dmFsaWQvZ3h2bW9yeDUuYwppbmRleCA1YWQzMzk3Li45NWZhNGUyIDEwMDY0NAotLS0gYS9zcmMvZ3h2YWxpZC9neHZtb3J4NS5jCisrKyBiL3NyYy9neHZhbGlkL2d4dm1vcng1LmMKQEAgLTUsNyArNSw3IEBACiAgKiAgIFRydWVUeXBlR1gvQUFUIG1vcnggdGFibGUgdmFsaWRhdGlvbgogICogICBib2R5IGZvciB0eXBlNSAoQ29udGV4dHVhbCBHbHlwaCBJbnNlcnRpb24pIHN1YnRhYmxlLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMyBieQogICogc3V6dWtpIHRvc2hpeWEsIE1hc2F0YWtlIFlBTUFUTywgUmVkIEhhdCBLLksuLAogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKZGlmZiAtLWdpdCBhL3NyYy9neHZhbGlkL2d4dm9wYmQuYyBiL3NyYy9neHZhbGlkL2d4dm9wYmQuYwppbmRleCA3YTJmZWFiLi41ZTlhOTY2IDEwMDY0NAotLS0gYS9zcmMvZ3h2YWxpZC9neHZvcGJkLmMKKysrIGIvc3JjL2d4dmFsaWQvZ3h2b3BiZC5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHJ1ZVR5cGVHWC9BQVQgb3BiZCB0YWJsZSB2YWxpZGF0aW9uIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICAqIHN1enVraSB0b3NoaXlhLCBNYXNhdGFrZSBZQU1BVE8sIFJlZCBIYXQgSy5LLiwKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCmRpZmYgLS1naXQgYS9zcmMvZ3h2YWxpZC9neHZwcm9wLmMgYi9zcmMvZ3h2YWxpZC9neHZwcm9wLmMKaW5kZXggOThjZDM2OC4uNjNhMDUyYSAxMDA2NDQKLS0tIGEvc3JjL2d4dmFsaWQvZ3h2cHJvcC5jCisrKyBiL3NyYy9neHZhbGlkL2d4dnByb3AuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRydWVUeXBlR1gvQUFUIHByb3AgdGFibGUgdmFsaWRhdGlvbiAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CiAgKiBzdXp1a2kgdG9zaGl5YSwgTWFzYXRha2UgWUFNQVRPLCBSZWQgSGF0IEsuSy4sCiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2d4dmFsaWQvZ3h2dHJhay5jIGIvc3JjL2d4dmFsaWQvZ3h2dHJhay5jCmluZGV4IGMxZWQ5MjguLmYzZmI1MWMgMTAwNjQ0Ci0tLSBhL3NyYy9neHZhbGlkL2d4dnRyYWsuYworKysgYi9zcmMvZ3h2YWxpZC9neHZ0cmFrLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUcnVlVHlwZUdYL0FBVCB0cmFrIHRhYmxlIHZhbGlkYXRpb24gKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQogICogc3V6dWtpIHRvc2hpeWEsIE1hc2F0YWtlIFlBTUFUTywgUmVkIEhhdCBLLksuLAogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKZGlmZiAtLWdpdCBhL3NyYy9neHZhbGlkL21vZHVsZS5tayBiL3NyYy9neHZhbGlkL21vZHVsZS5tawppbmRleCBlZmI5YzkyLi40OTQ5MTM0IDEwMDY0NAotLS0gYS9zcmMvZ3h2YWxpZC9tb2R1bGUubWsKKysrIGIvc3JjL2d4dmFsaWQvbW9kdWxlLm1rCkBAIC0yLDcgKzIsNyBAQAogIyBGcmVlVHlwZSAyIGd4dmFsaWQgbW9kdWxlIGRlZmluaXRpb24KICMKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQogIyBzdXp1a2kgdG9zaGl5YSwgTWFzYXRha2UgWUFNQVRPLCBSZWQgSGF0IEsuSy4sCiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKZGlmZiAtLWdpdCBhL3NyYy9neHZhbGlkL3J1bGVzLm1rIGIvc3JjL2d4dmFsaWQvcnVsZXMubWsKaW5kZXggOGUwYjQ1My4uOTVhZTYzMyAxMDA2NDQKLS0tIGEvc3JjL2d4dmFsaWQvcnVsZXMubWsKKysrIGIvc3JjL2d4dmFsaWQvcnVsZXMubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQogIyBzdXp1a2kgdG9zaGl5YSwgTWFzYXRha2UgWUFNQVRPLCBSZWQgSGF0IEsuSy4sCiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKZGlmZiAtLWdpdCBhL3NyYy9nemlwL0xJQ0VOU0VfWkxJQi5UWFQgYi9zcmMvZ3ppcC9MSUNFTlNFX1pMSUIuVFhUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjODJiNjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvZ3ppcC9MSUNFTlNFX1pMSUIuVFhUCkBAIC0wLDAgKzEsMTggQEAKK3psaWIgTGljZW5zZQorVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuIEluCitubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZgordGhpcyBzb2Z0d2FyZS4KKworUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsIGluY2x1ZGluZworY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0IGZyZWVseSwgc3ViamVjdCB0bwordGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6CisKKzEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90IGNsYWltCisgICB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZSBpbiBhIHByb2R1Y3QsCisgICBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlIGFwcHJlY2lhdGVkIGJ1dCBpcworICAgbm90IHJlcXVpcmVkLgorCisyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZQorICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgorCiszLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL2d6aXAvUkVBRE1FLmZyZWV0eXBlIGIvc3JjL2d6aXAvUkVBRE1FLmZyZWV0eXBlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwYzhjZWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvZ3ppcC9SRUFETUUuZnJlZXR5cGUKQEAgLTAsMCArMSwyMyBAQAorTmFtZTogemxpYgorU2hvcnQgTmFtZTogemxpYgorVVJMOiBodHRwOi8vemxpYi5uZXQvCitWZXJzaW9uOiAxLjIuMTIKK0xpY2Vuc2U6IHNlZSBgemxpYi5oYAorCitEZXNjcmlwdGlvbjoKKyJBIG1hc3NpdmVseSBzcGlmZnkgeWV0IGRlbGljYXRlbHkgdW5vYnRydXNpdmUgY29tcHJlc3Npb24gbGlicmFyeS4iCisKKyd6bGliJyBpcyBhIGZyZWUsIGdlbmVyYWwtcHVycG9zZSwgbGVnYWxseSB1bmVuY3VtYmVyZWQgbG9zc2xlc3MKK2RhdGEtY29tcHJlc3Npb24gbGlicmFyeS4gICd6bGliJyBpbXBsZW1lbnRzIHRoZSAiZGVmbGF0ZSLCoGNvbXByZXNzaW9uCithbGdvcml0aG0gZGVzY3JpYmVkIGJ5IFJGQyAxOTUxLCB3aGljaCBjb21iaW5lcyB0aGUgTFo3NyAoTGVtcGVsLVppdikKK2FsZ29yaXRobSB3aXRoIEh1ZmZtYW4gY29kaW5nLiAgemxpYiBhbHNvIGltcGxlbWVudHMgdGhlIHpsaWIgKFJGQyAxOTUwKSBhbmQKK2d6aXAgKFJGQyAxOTUyKSB3cmFwcGVyIGZvcm1hdHMuCisKK0xvY2FsIE1vZGlmaWNhdGlvbnM6CitUaGUgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgaGF2ZSBiZWVuIHByZXBhcmVkIGFzIGZvbGxvd3MuCisKKyAtIFRha2UgdGhlIHVubW9kaWZpZWQgc291cmNlIGNvZGUgZmlsZXMgZnJvbSB0aGUgemxpYiBkaXN0cmlidXRpb24gdGhhdCBhcmUKKyAgIGluY2x1ZGVkIGJ5IGBmdGd6aXAuY2AuCisgLSBDb3B5IGB6Y29uZi5oYCB0byBgZnR6Y29uZi5oYCAod2hpY2ggc3RheXMgdW5tb2RpZmllZCBvdGhlcndpc2UpLgorIC0gUnVuIHpsaWIncyBgemxpYjJhbnNpYCBzY3JpcHQgb24gYWxsIGAuY2AgZmlsZXMuCisgLSBBcHBseSB0aGUgZGlmZiBmaWxlKHMpIGluIHRoZSBgcGF0Y2hlc2AgZm9sZGVyLgpkaWZmIC0tZ2l0IGEvc3JjL2d6aXAvYWRsZXIzMi5jIGIvc3JjL2d6aXAvYWRsZXIzMi5jCmluZGV4IGM1M2Y5ZGQuLmFhMDMyZTEgMTAwNjQ0Ci0tLSBhL3NyYy9nemlwL2FkbGVyMzIuYworKysgYi9zcmMvZ3ppcC9hZGxlcjMyLmMKQEAgLTEsNDggKzEsMTkyIEBACiAvKiBhZGxlcjMyLmMgLS0gY29tcHV0ZSB0aGUgQWRsZXItMzIgY2hlY2tzdW0gb2YgYSBkYXRhIHN0cmVhbQotICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDIgTWFyayBBZGxlcgorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMTEsIDIwMTYgTWFyayBBZGxlcgogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAogICovCiAKIC8qIEAoIykgJElkJCAqLwogCi0jaW5jbHVkZSAiemxpYi5oIgorI2luY2x1ZGUgInp1dGlsLmgiCiAKLSNkZWZpbmUgQkFTRSA2NTUyMUwgLyogbGFyZ2VzdCBwcmltZSBzbWFsbGVyIHRoYW4gNjU1MzYgKi8KKyNpZm5kZWYgWl9GUkVFVFlQRQorbG9jYWwgdUxvbmcgYWRsZXIzMl9jb21iaW5lXyBPRigodUxvbmcgYWRsZXIxLCB1TG9uZyBhZGxlcjIsIHpfb2ZmNjRfdCBsZW4yKSk7CisjZW5kaWYKKworI2RlZmluZSBCQVNFIDY1NTIxVSAgICAgLyogbGFyZ2VzdCBwcmltZSBzbWFsbGVyIHRoYW4gNjU1MzYgKi8KICNkZWZpbmUgTk1BWCA1NTUyCiAvKiBOTUFYIGlzIHRoZSBsYXJnZXN0IG4gc3VjaCB0aGF0IDI1NW4obisxKS8yICsgKG4rMSkoQkFTRS0xKSA8PSAyXjMyLTEgKi8KIAotI2RlZmluZSBETzEoYnVmLGkpICB7czEgKz0gYnVmW2ldOyBzMiArPSBzMTt9CisjZGVmaW5lIERPMShidWYsaSkgIHthZGxlciArPSAoYnVmKVtpXTsgc3VtMiArPSBhZGxlcjt9CiAjZGVmaW5lIERPMihidWYsaSkgIERPMShidWYsaSk7IERPMShidWYsaSsxKTsKICNkZWZpbmUgRE80KGJ1ZixpKSAgRE8yKGJ1ZixpKTsgRE8yKGJ1ZixpKzIpOwogI2RlZmluZSBETzgoYnVmLGkpICBETzQoYnVmLGkpOyBETzQoYnVmLGkrNCk7CiAjZGVmaW5lIERPMTYoYnVmKSAgIERPOChidWYsMCk7IERPOChidWYsOCk7CiAKKy8qIHVzZSBOT19ESVZJREUgaWYgeW91ciBwcm9jZXNzb3IgZG9lcyBub3QgZG8gZGl2aXNpb24gaW4gaGFyZHdhcmUgLS0KKyAgIHRyeSBpdCBib3RoIHdheXMgdG8gc2VlIHdoaWNoIGlzIGZhc3RlciAqLworI2lmZGVmIE5PX0RJVklERQorLyogbm90ZSB0aGF0IHRoaXMgYXNzdW1lcyBCQVNFIGlzIDY1NTIxLCB3aGVyZSA2NTUzNiAlIDY1NTIxID09IDE1CisgICAodGhhbmsgeW91IHRvIEpvaG4gUmVpc2VyIGZvciBwb2ludGluZyB0aGlzIG91dCkgKi8KKyMgIGRlZmluZSBDSE9QKGEpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgdW5zaWduZWQgbG9uZyB0bXAgPSBhID4+IDE2OyBcCisgICAgICAgIGEgJj0gMHhmZmZmVUw7IFwKKyAgICAgICAgYSArPSAodG1wIDw8IDQpIC0gdG1wOyBcCisgICAgfSB3aGlsZSAoMCkKKyMgIGRlZmluZSBNT0QyOChhKSBcCisgICAgZG8geyBcCisgICAgICAgIENIT1AoYSk7IFwKKyAgICAgICAgaWYgKGEgPj0gQkFTRSkgYSAtPSBCQVNFOyBcCisgICAgfSB3aGlsZSAoMCkKKyMgIGRlZmluZSBNT0QoYSkgXAorICAgIGRvIHsgXAorICAgICAgICBDSE9QKGEpOyBcCisgICAgICAgIE1PRDI4KGEpOyBcCisgICAgfSB3aGlsZSAoMCkKKyMgIGRlZmluZSBNT0Q2MyhhKSBcCisgICAgZG8geyAvKiB0aGlzIGFzc3VtZXMgYSBpcyBub3QgbmVnYXRpdmUgKi8gXAorICAgICAgICB6X29mZjY0X3QgdG1wID0gYSA+PiAzMjsgXAorICAgICAgICBhICY9IDB4ZmZmZmZmZmZMOyBcCisgICAgICAgIGEgKz0gKHRtcCA8PCA4KSAtICh0bXAgPDwgNSkgKyB0bXA7IFwKKyAgICAgICAgdG1wID0gYSA+PiAxNjsgXAorICAgICAgICBhICY9IDB4ZmZmZkw7IFwKKyAgICAgICAgYSArPSAodG1wIDw8IDQpIC0gdG1wOyBcCisgICAgICAgIHRtcCA9IGEgPj4gMTY7IFwKKyAgICAgICAgYSAmPSAweGZmZmZMOyBcCisgICAgICAgIGEgKz0gKHRtcCA8PCA0KSAtIHRtcDsgXAorICAgICAgICBpZiAoYSA+PSBCQVNFKSBhIC09IEJBU0U7IFwKKyAgICB9IHdoaWxlICgwKQorI2Vsc2UKKyMgIGRlZmluZSBNT0QoYSkgYSAlPSBCQVNFCisjICBkZWZpbmUgTU9EMjgoYSkgYSAlPSBCQVNFCisjICBkZWZpbmUgTU9ENjMoYSkgYSAlPSBCQVNFCisjZW5kaWYKKwogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotWkVYUE9SVCh1TG9uZykgYWRsZXIzMiggLyogYWRsZXIsIGJ1ZiwgbGVuKSAqLwordUxvbmcgWkVYUE9SVCBhZGxlcjMyX3ooCiAgICAgdUxvbmcgYWRsZXIsCiAgICAgY29uc3QgQnl0ZWYgKmJ1ZiwKLSAgICB1SW50IGxlbiApCisgICAgel9zaXplX3QgbGVuKQogewotICAgIHVuc2lnbmVkIGxvbmcgczEgPSBhZGxlciAmIDB4ZmZmZjsKLSAgICB1bnNpZ25lZCBsb25nIHMyID0gKGFkbGVyID4+IDE2KSAmIDB4ZmZmZjsKLSAgICBpbnQgazsKKyAgICB1bnNpZ25lZCBsb25nIHN1bTI7CisgICAgdW5zaWduZWQgbjsKIAotICAgIGlmIChidWYgPT0gWl9OVUxMKSByZXR1cm4gMUw7CisgICAgLyogc3BsaXQgQWRsZXItMzIgaW50byBjb21wb25lbnQgc3VtcyAqLworICAgIHN1bTIgPSAoYWRsZXIgPj4gMTYpICYgMHhmZmZmOworICAgIGFkbGVyICY9IDB4ZmZmZjsKIAotICAgIHdoaWxlIChsZW4gPiAwKSB7Ci0gICAgICAgIGsgPSBsZW4gPCBOTUFYID8gbGVuIDogTk1BWDsKLSAgICAgICAgbGVuIC09IGs7Ci0gICAgICAgIHdoaWxlIChrID49IDE2KSB7CisgICAgLyogaW4gY2FzZSB1c2VyIGxpa2VzIGRvaW5nIGEgYnl0ZSBhdCBhIHRpbWUsIGtlZXAgaXQgZmFzdCAqLworICAgIGlmIChsZW4gPT0gMSkgeworICAgICAgICBhZGxlciArPSBidWZbMF07CisgICAgICAgIGlmIChhZGxlciA+PSBCQVNFKQorICAgICAgICAgICAgYWRsZXIgLT0gQkFTRTsKKyAgICAgICAgc3VtMiArPSBhZGxlcjsKKyAgICAgICAgaWYgKHN1bTIgPj0gQkFTRSkKKyAgICAgICAgICAgIHN1bTIgLT0gQkFTRTsKKyAgICAgICAgcmV0dXJuIGFkbGVyIHwgKHN1bTIgPDwgMTYpOworICAgIH0KKworICAgIC8qIGluaXRpYWwgQWRsZXItMzIgdmFsdWUgKGRlZmVycmVkIGNoZWNrIGZvciBsZW4gPT0gMSBzcGVlZCkgKi8KKyAgICBpZiAoYnVmID09IFpfTlVMTCkKKyAgICAgICAgcmV0dXJuIDFMOworCisgICAgLyogaW4gY2FzZSBzaG9ydCBsZW5ndGhzIGFyZSBwcm92aWRlZCwga2VlcCBpdCBzb21ld2hhdCBmYXN0ICovCisgICAgaWYgKGxlbiA8IDE2KSB7CisgICAgICAgIHdoaWxlIChsZW4tLSkgeworICAgICAgICAgICAgYWRsZXIgKz0gKmJ1ZisrOworICAgICAgICAgICAgc3VtMiArPSBhZGxlcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoYWRsZXIgPj0gQkFTRSkKKyAgICAgICAgICAgIGFkbGVyIC09IEJBU0U7CisgICAgICAgIE1PRDI4KHN1bTIpOyAgICAgICAgICAgIC8qIG9ubHkgYWRkZWQgc28gbWFueSBCQVNFJ3MgKi8KKyAgICAgICAgcmV0dXJuIGFkbGVyIHwgKHN1bTIgPDwgMTYpOworICAgIH0KKworICAgIC8qIGRvIGxlbmd0aCBOTUFYIGJsb2NrcyAtLSByZXF1aXJlcyBqdXN0IG9uZSBtb2R1bG8gb3BlcmF0aW9uICovCisgICAgd2hpbGUgKGxlbiA+PSBOTUFYKSB7CisgICAgICAgIGxlbiAtPSBOTUFYOworICAgICAgICBuID0gTk1BWCAvIDE2OyAgICAgICAgICAvKiBOTUFYIGlzIGRpdmlzaWJsZSBieSAxNiAqLworICAgICAgICBkbyB7CisgICAgICAgICAgICBETzE2KGJ1Zik7ICAgICAgICAgIC8qIDE2IHN1bXMgdW5yb2xsZWQgKi8KKyAgICAgICAgICAgIGJ1ZiArPSAxNjsKKyAgICAgICAgfSB3aGlsZSAoLS1uKTsKKyAgICAgICAgTU9EKGFkbGVyKTsKKyAgICAgICAgTU9EKHN1bTIpOworICAgIH0KKworICAgIC8qIGRvIHJlbWFpbmluZyBieXRlcyAobGVzcyB0aGFuIE5NQVgsIHN0aWxsIGp1c3Qgb25lIG1vZHVsbykgKi8KKyAgICBpZiAobGVuKSB7ICAgICAgICAgICAgICAgICAgLyogYXZvaWQgbW9kdWxvcyBpZiBub25lIHJlbWFpbmluZyAqLworICAgICAgICB3aGlsZSAobGVuID49IDE2KSB7CisgICAgICAgICAgICBsZW4gLT0gMTY7CiAgICAgICAgICAgICBETzE2KGJ1Zik7CiAgICAgICAgICAgICBidWYgKz0gMTY7Ci0gICAgICAgICAgICBrIC09IDE2OwogICAgICAgICB9Ci0gICAgICAgIGlmIChrICE9IDApIGRvIHsKLSAgICAgICAgICAgIHMxICs9ICpidWYrKzsKLSAgICAgICAgICAgIHMyICs9IHMxOwotICAgICAgICB9IHdoaWxlICgtLWspOwotICAgICAgICBzMSAlPSBCQVNFOwotICAgICAgICBzMiAlPSBCQVNFOworICAgICAgICB3aGlsZSAobGVuLS0pIHsKKyAgICAgICAgICAgIGFkbGVyICs9ICpidWYrKzsKKyAgICAgICAgICAgIHN1bTIgKz0gYWRsZXI7CisgICAgICAgIH0KKyAgICAgICAgTU9EKGFkbGVyKTsKKyAgICAgICAgTU9EKHN1bTIpOwogICAgIH0KLSAgICByZXR1cm4gKHMyIDw8IDE2KSB8IHMxOworCisgICAgLyogcmV0dXJuIHJlY29tYmluZWQgc3VtcyAqLworICAgIHJldHVybiBhZGxlciB8IChzdW0yIDw8IDE2KTsKIH0KKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwordUxvbmcgWkVYUE9SVCBhZGxlcjMyKAorICAgIHVMb25nIGFkbGVyLAorICAgIGNvbnN0IEJ5dGVmICpidWYsCisgICAgdUludCBsZW4pCit7CisgICAgcmV0dXJuIGFkbGVyMzJfeihhZGxlciwgYnVmLCBsZW4pOworfQorCisjaWZuZGVmIFpfRlJFRVRZUEUKKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworbG9jYWwgdUxvbmcgYWRsZXIzMl9jb21iaW5lXygKKyAgICB1TG9uZyBhZGxlcjEsCisgICAgdUxvbmcgYWRsZXIyLAorICAgIHpfb2ZmNjRfdCBsZW4yKQoreworICAgIHVuc2lnbmVkIGxvbmcgc3VtMTsKKyAgICB1bnNpZ25lZCBsb25nIHN1bTI7CisgICAgdW5zaWduZWQgcmVtOworCisgICAgLyogZm9yIG5lZ2F0aXZlIGxlbiwgcmV0dXJuIGludmFsaWQgYWRsZXIzMiBhcyBhIGNsdWUgZm9yIGRlYnVnZ2luZyAqLworICAgIGlmIChsZW4yIDwgMCkKKyAgICAgICAgcmV0dXJuIDB4ZmZmZmZmZmZVTDsKKworICAgIC8qIHRoZSBkZXJpdmF0aW9uIG9mIHRoaXMgZm9ybXVsYSBpcyBsZWZ0IGFzIGFuIGV4ZXJjaXNlIGZvciB0aGUgcmVhZGVyICovCisgICAgTU9ENjMobGVuMik7ICAgICAgICAgICAgICAgIC8qIGFzc3VtZXMgbGVuMiA+PSAwICovCisgICAgcmVtID0gKHVuc2lnbmVkKWxlbjI7CisgICAgc3VtMSA9IGFkbGVyMSAmIDB4ZmZmZjsKKyAgICBzdW0yID0gcmVtICogc3VtMTsKKyAgICBNT0Qoc3VtMik7CisgICAgc3VtMSArPSAoYWRsZXIyICYgMHhmZmZmKSArIEJBU0UgLSAxOworICAgIHN1bTIgKz0gKChhZGxlcjEgPj4gMTYpICYgMHhmZmZmKSArICgoYWRsZXIyID4+IDE2KSAmIDB4ZmZmZikgKyBCQVNFIC0gcmVtOworICAgIGlmIChzdW0xID49IEJBU0UpIHN1bTEgLT0gQkFTRTsKKyAgICBpZiAoc3VtMSA+PSBCQVNFKSBzdW0xIC09IEJBU0U7CisgICAgaWYgKHN1bTIgPj0gKCh1bnNpZ25lZCBsb25nKUJBU0UgPDwgMSkpIHN1bTIgLT0gKCh1bnNpZ25lZCBsb25nKUJBU0UgPDwgMSk7CisgICAgaWYgKHN1bTIgPj0gQkFTRSkgc3VtMiAtPSBCQVNFOworICAgIHJldHVybiBzdW0xIHwgKHN1bTIgPDwgMTYpOworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCit1TG9uZyBaRVhQT1JUIGFkbGVyMzJfY29tYmluZSgKKyAgICB1TG9uZyBhZGxlcjEsCisgICAgdUxvbmcgYWRsZXIyLAorICAgIHpfb2ZmX3QgbGVuMikKK3sKKyAgICByZXR1cm4gYWRsZXIzMl9jb21iaW5lXyhhZGxlcjEsIGFkbGVyMiwgbGVuMik7Cit9CisKK3VMb25nIFpFWFBPUlQgYWRsZXIzMl9jb21iaW5lNjQoCisgICAgdUxvbmcgYWRsZXIxLAorICAgIHVMb25nIGFkbGVyMiwKKyAgICB6X29mZjY0X3QgbGVuMikKK3sKKyAgICByZXR1cm4gYWRsZXIzMl9jb21iaW5lXyhhZGxlcjEsIGFkbGVyMiwgbGVuMik7Cit9CisKKyNlbmRpZiAgLyogIVpfRlJFRVRZUEUgKi8KZGlmZiAtLWdpdCBhL3NyYy9nemlwL2NyYzMyLmMgYi9zcmMvZ3ppcC9jcmMzMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZDFiMDkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvZ3ppcC9jcmMzMi5jCkBAIC0wLDAgKzEsMTEzNSBAQAorLyogY3JjMzIuYyAtLSBjb21wdXRlIHRoZSBDUkMtMzIgb2YgYSBkYXRhIHN0cmVhbQorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMjIgTWFyayBBZGxlcgorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICoKKyAqIFRoaXMgaW50ZXJsZWF2ZWQgaW1wbGVtZW50YXRpb24gb2YgYSBDUkMgbWFrZXMgdXNlIG9mIHBpcGVsaW5lZCBtdWx0aXBsZQorICogYXJpdGhtZXRpYy1sb2dpYyB1bml0cywgY29tbW9ubHkgZm91bmQgaW4gbW9kZXJuIENQVSBjb3Jlcy4gSXQgaXMgZHVlIHRvCisgKiBLYWRhdGNoIGFuZCBKZW5raW5zICgyMDEwKS4gU2VlIGRvYy9jcmMtZG9jLjEuMC5wZGYgaW4gdGhpcyBkaXN0cmlidXRpb24uCisgKi8KKworLyogQCgjKSAkSWQkICovCisKKy8qCisgIE5vdGUgb24gdGhlIHVzZSBvZiBEWU5BTUlDX0NSQ19UQUJMRTogdGhlcmUgaXMgbm8gbXV0ZXggb3Igc2VtYXBob3JlCisgIHByb3RlY3Rpb24gb24gdGhlIHN0YXRpYyB2YXJpYWJsZXMgdXNlZCB0byBjb250cm9sIHRoZSBmaXJzdC11c2UgZ2VuZXJhdGlvbgorICBvZiB0aGUgY3JjIHRhYmxlcy4gVGhlcmVmb3JlLCBpZiB5b3UgI2RlZmluZSBEWU5BTUlDX0NSQ19UQUJMRSwgeW91IHNob3VsZAorICBmaXJzdCBjYWxsIGdldF9jcmNfdGFibGUoKSB0byBpbml0aWFsaXplIHRoZSB0YWJsZXMgYmVmb3JlIGFsbG93aW5nIG1vcmUgdGhhbgorICBvbmUgdGhyZWFkIHRvIHVzZSBjcmMzMigpLgorCisgIE1BS0VDUkNIIGNhbiBiZSAjZGVmaW5lZCB0byB3cml0ZSBvdXQgY3JjMzIuaC4gQSBtYWluKCkgcm91dGluZSBpcyBhbHNvCisgIHByb2R1Y2VkLCBzbyB0aGF0IHRoaXMgb25lIHNvdXJjZSBmaWxlIGNhbiBiZSBjb21waWxlZCB0byBhbiBleGVjdXRhYmxlLgorICovCisKKyNpZmRlZiBNQUtFQ1JDSAorIyAgaW5jbHVkZSA8c3RkaW8uaD4KKyMgIGlmbmRlZiBEWU5BTUlDX0NSQ19UQUJMRQorIyAgICBkZWZpbmUgRFlOQU1JQ19DUkNfVEFCTEUKKyMgIGVuZGlmIC8qICFEWU5BTUlDX0NSQ19UQUJMRSAqLworI2VuZGlmIC8qIE1BS0VDUkNIICovCisKKyNpbmNsdWRlICJ6dXRpbC5oIiAgICAgIC8qIGZvciBaX1U0LCBaX1U4LCB6X2NyY190LCBhbmQgRkFSIGRlZmluaXRpb25zICovCisKKyAvKgorICBBIENSQyBvZiBhIG1lc3NhZ2UgaXMgY29tcHV0ZWQgb24gTiBicmFpZHMgb2Ygd29yZHMgaW4gdGhlIG1lc3NhZ2UsIHdoZXJlCisgIGVhY2ggd29yZCBjb25zaXN0cyBvZiBXIGJ5dGVzICg0IG9yIDgpLiBJZiBOIGlzIDMsIGZvciBleGFtcGxlLCB0aGVuIHRocmVlCisgIHJ1bm5pbmcgc3BhcnNlIENSQ3MgYXJlIGNhbGN1bGF0ZWQgcmVzcGVjdGl2ZWx5IG9uIGVhY2ggYnJhaWQsIGF0IHRoZXNlCisgIGluZGljZXMgaW4gdGhlIGFycmF5IG9mIHdvcmRzOiAwLCAzLCA2LCAuLi4sIDEsIDQsIDcsIC4uLiwgYW5kIDIsIDUsIDgsIC4uLgorICBUaGlzIGlzIGRvbmUgc3RhcnRpbmcgYXQgYSB3b3JkIGJvdW5kYXJ5LCBhbmQgY29udGludWVzIHVudGlsIGFzIG1hbnkgYmxvY2tzCisgIG9mIE4gKiBXIGJ5dGVzIGFzIGFyZSBhdmFpbGFibGUgaGF2ZSBiZWVuIHByb2Nlc3NlZC4gVGhlIHJlc3VsdHMgYXJlIGNvbWJpbmVkCisgIGludG8gYSBzaW5nbGUgQ1JDIGF0IHRoZSBlbmQuIEZvciB0aGlzIGNvZGUsIE4gbXVzdCBiZSBpbiB0aGUgcmFuZ2UgMS4uNiBhbmQKKyAgVyBtdXN0IGJlIDQgb3IgOC4gVGhlIHVwcGVyIGxpbWl0IG9uIE4gY2FuIGJlIGluY3JlYXNlZCBpZiBkZXNpcmVkIGJ5IGFkZGluZworICBtb3JlICNpZiBibG9ja3MsIGV4dGVuZGluZyB0aGUgcGF0dGVybnMgYXBwYXJlbnQgaW4gdGhlIGNvZGUuIEluIGFkZGl0aW9uLAorICBjcmMzMi5oIHdvdWxkIG5lZWQgdG8gYmUgcmVnZW5lcmF0ZWQsIGlmIHRoZSBtYXhpbXVtIE4gdmFsdWUgaXMgaW5jcmVhc2VkLgorCisgIE4gYW5kIFcgYXJlIGNob3NlbiBlbXBpcmljYWxseSBieSBiZW5jaG1hcmtpbmcgdGhlIGV4ZWN1dGlvbiB0aW1lIG9uIGEgZ2l2ZW4KKyAgcHJvY2Vzc29yLiBUaGUgY2hvaWNlcyBmb3IgTiBhbmQgVyBiZWxvdyB3ZXJlIGJhc2VkIG9uIHRlc3Rpbmcgb24gSW50ZWwgS2FieQorICBMYWtlIGk3LCBBTUQgUnl6ZW4gNywgQVJNIENvcnRleC1BNTcsIFNwYXJjNjQtVklJLCBQb3dlclBDIFBPV0VSOSwgYW5kIE1JUFM2NAorICBPY3Rlb24gSUkgcHJvY2Vzc29ycy4gVGhlIEludGVsLCBBTUQsIGFuZCBBUk0gcHJvY2Vzc29ycyB3ZXJlIGFsbCBmYXN0ZXN0CisgIHdpdGggTj01LCBXPTguIFRoZSBTcGFyYywgUG93ZXJQQywgYW5kIE1JUFM2NCB3ZXJlIGFsbCBmYXN0ZXN0IGF0IE49NSwgVz00LgorICBUaGV5IHdlcmUgYWxsIHRlc3RlZCB3aXRoIGVpdGhlciBnY2Mgb3IgY2xhbmcsIGFsbCB1c2luZyB0aGUgLU8zIG9wdGltaXphdGlvbgorICBsZXZlbC4gWW91ciBtaWxlYWdlIG1heSB2YXJ5LgorICovCisKKy8qIERlZmluZSBOICovCisjaWZkZWYgWl9URVNUTgorIyAgZGVmaW5lIE4gWl9URVNUTgorI2Vsc2UKKyMgIGRlZmluZSBOIDUKKyNlbmRpZgorI2lmIE4gPCAxIHx8IE4gPiA2CisjICBlcnJvciBOIG11c3QgYmUgaW4gMS4uNgorI2VuZGlmCisKKy8qCisgIHpfY3JjX3QgbXVzdCBiZSBhdCBsZWFzdCAzMiBiaXRzLiB6X3dvcmRfdCBtdXN0IGJlIGF0IGxlYXN0IGFzIGxvbmcgYXMKKyAgel9jcmNfdC4gSXQgaXMgYXNzdW1lZCBoZXJlIHRoYXQgel93b3JkX3QgaXMgZWl0aGVyIDMyIGJpdHMgb3IgNjQgYml0cywgYW5kCisgIHRoYXQgYnl0ZXMgYXJlIGVpZ2h0IGJpdHMuCisgKi8KKworLyoKKyAgRGVmaW5lIFcgYW5kIHRoZSBhc3NvY2lhdGVkIHpfd29yZF90IHR5cGUuIElmIFcgaXMgbm90IGRlZmluZWQsIHRoZW4gYQorICBicmFpZGVkIGNhbGN1bGF0aW9uIGlzIG5vdCB1c2VkLCBhbmQgdGhlIGFzc29jaWF0ZWQgdGFibGVzIGFuZCBjb2RlIGFyZSBub3QKKyAgY29tcGlsZWQuCisgKi8KKyNpZmRlZiBaX1RFU1RXCisjICBpZiBaX1RFU1RXLTEgIT0gLTEKKyMgICAgZGVmaW5lIFcgWl9URVNUVworIyAgZW5kaWYKKyNlbHNlCisjICBpZmRlZiBNQUtFQ1JDSAorIyAgICBkZWZpbmUgVyA4ICAgICAgICAgLyogcmVxdWlyZWQgZm9yIE1BS0VDUkNIICovCisjICBlbHNlCisjICAgIGlmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKKyMgICAgICBkZWZpbmUgVyA4CisjICAgIGVsc2UKKyMgICAgICBkZWZpbmUgVyA0CisjICAgIGVuZGlmCisjICBlbmRpZgorI2VuZGlmCisjaWZkZWYgVworIyAgaWYgVyA9PSA4ICYmIGRlZmluZWQoWl9VOCkKKyAgICAgdHlwZWRlZiBaX1U4IHpfd29yZF90OworIyAgZWxpZiBkZWZpbmVkKFpfVTQpCisjICAgIHVuZGVmIFcKKyMgICAgZGVmaW5lIFcgNAorICAgICB0eXBlZGVmIFpfVTQgel93b3JkX3Q7CisjICBlbHNlCisjICAgIHVuZGVmIFcKKyMgIGVuZGlmCisjZW5kaWYKKworLyogSWYgYXZhaWxhYmxlLCB1c2UgdGhlIEFSTSBwcm9jZXNzb3IgQ1JDMzIgaW5zdHJ1Y3Rpb24uICovCisjaWYgZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0FSTV9GRUFUVVJFX0NSQzMyKSAmJiBXID09IDgKKyMgIGRlZmluZSBBUk1DUkMzMgorI2VuZGlmCisKKyNpZm5kZWYgWl9GUkVFVFlQRQorLyogTG9jYWwgZnVuY3Rpb25zLiAqLworbG9jYWwgel9jcmNfdCBtdWx0bW9kcCBPRigoel9jcmNfdCBhLCB6X2NyY190IGIpKTsKK2xvY2FsIHpfY3JjX3QgeDJubW9kcCBPRigoel9vZmY2NF90IG4sIHVuc2lnbmVkIGspKTsKKyNlbmRpZiAgLyogWl9GUkVFVFlQRSAqLworCisjaWYgZGVmaW5lZChXKSAmJiAoIWRlZmluZWQoQVJNQ1JDMzIpIHx8IGRlZmluZWQoRFlOQU1JQ19DUkNfVEFCTEUpKQorICAgIGxvY2FsIHpfd29yZF90IGJ5dGVfc3dhcCBPRigoel93b3JkX3Qgd29yZCkpOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFcpICYmICFkZWZpbmVkKEFSTUNSQzMyKQorICAgIGxvY2FsIHpfY3JjX3QgY3JjX3dvcmQgT0YoKHpfd29yZF90IGRhdGEpKTsKKyAgICBsb2NhbCB6X3dvcmRfdCBjcmNfd29yZF9iaWcgT0YoKHpfd29yZF90IGRhdGEpKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChXKSAmJiAoIWRlZmluZWQoQVJNQ1JDMzIpIHx8IGRlZmluZWQoRFlOQU1JQ19DUkNfVEFCTEUpKQorLyoKKyAgU3dhcCB0aGUgYnl0ZXMgaW4gYSB6X3dvcmRfdCB0byBjb252ZXJ0IGJldHdlZW4gbGl0dGxlIGFuZCBiaWcgZW5kaWFuLiBBbnkKKyAgc2VsZi1yZXNwZWN0aW5nIGNvbXBpbGVyIHdpbGwgb3B0aW1pemUgdGhpcyB0byBhIHNpbmdsZSBtYWNoaW5lIGJ5dGUtc3dhcAorICBpbnN0cnVjdGlvbiwgaWYgb25lIGlzIGF2YWlsYWJsZS4gVGhpcyBhc3N1bWVzIHRoYXQgd29yZF90IGlzIGVpdGhlciAzMiBiaXRzCisgIG9yIDY0IGJpdHMuCisgKi8KK2xvY2FsIHpfd29yZF90IGJ5dGVfc3dhcCgKKyAgICB6X3dvcmRfdCB3b3JkKQoreworIyAgaWYgVyA9PSA4CisgICAgcmV0dXJuCisgICAgICAgICh3b3JkICYgMHhmZjAwMDAwMDAwMDAwMDAwKSA+PiA1NiB8CisgICAgICAgICh3b3JkICYgMHhmZjAwMDAwMDAwMDAwMCkgPj4gNDAgfAorICAgICAgICAod29yZCAmIDB4ZmYwMDAwMDAwMDAwKSA+PiAyNCB8CisgICAgICAgICh3b3JkICYgMHhmZjAwMDAwMDAwKSA+PiA4IHwKKyAgICAgICAgKHdvcmQgJiAweGZmMDAwMDAwKSA8PCA4IHwKKyAgICAgICAgKHdvcmQgJiAweGZmMDAwMCkgPDwgMjQgfAorICAgICAgICAod29yZCAmIDB4ZmYwMCkgPDwgNDAgfAorICAgICAgICAod29yZCAmIDB4ZmYpIDw8IDU2OworIyAgZWxzZSAgIC8qIFcgPT0gNCAqLworICAgIHJldHVybgorICAgICAgICAod29yZCAmIDB4ZmYwMDAwMDApID4+IDI0IHwKKyAgICAgICAgKHdvcmQgJiAweGZmMDAwMCkgPj4gOCB8CisgICAgICAgICh3b3JkICYgMHhmZjAwKSA8PCA4IHwKKyAgICAgICAgKHdvcmQgJiAweGZmKSA8PCAyNDsKKyMgIGVuZGlmCit9CisjZW5kaWYKKworLyogQ1JDIHBvbHlub21pYWwuICovCisjZGVmaW5lIFBPTFkgMHhlZGI4ODMyMCAgICAgICAgIC8qIHAoeCkgcmVmbGVjdGVkLCB3aXRoIHheMzIgaW1wbGllZCAqLworCisjaWZkZWYgRFlOQU1JQ19DUkNfVEFCTEUKKworbG9jYWwgel9jcmNfdCBGQVIgY3JjX3RhYmxlWzI1Nl07Citsb2NhbCB6X2NyY190IEZBUiB4Mm5fdGFibGVbMzJdOworbG9jYWwgdm9pZCBtYWtlX2NyY190YWJsZSBPRigodm9pZCkpOworI2lmZGVmIFcKKyAgIGxvY2FsIHpfd29yZF90IEZBUiBjcmNfYmlnX3RhYmxlWzI1Nl07CisgICBsb2NhbCB6X2NyY190IEZBUiBjcmNfYnJhaWRfdGFibGVbV11bMjU2XTsKKyAgIGxvY2FsIHpfd29yZF90IEZBUiBjcmNfYnJhaWRfYmlnX3RhYmxlW1ddWzI1Nl07CisgICBsb2NhbCB2b2lkIGJyYWlkIE9GKCh6X2NyY190IFtdWzI1Nl0sIHpfd29yZF90IFtdWzI1Nl0sIGludCwgaW50KSk7CisjZW5kaWYKKyNpZmRlZiBNQUtFQ1JDSAorICAgbG9jYWwgdm9pZCB3cml0ZV90YWJsZSBPRigoRklMRSAqLCBjb25zdCB6X2NyY190IEZBUiAqLCBpbnQpKTsKKyAgIGxvY2FsIHZvaWQgd3JpdGVfdGFibGUzMmhpIE9GKChGSUxFICosIGNvbnN0IHpfd29yZF90IEZBUiAqLCBpbnQpKTsKKyAgIGxvY2FsIHZvaWQgd3JpdGVfdGFibGU2NCBPRigoRklMRSAqLCBjb25zdCB6X3dvcmRfdCBGQVIgKiwgaW50KSk7CisjZW5kaWYgLyogTUFLRUNSQ0ggKi8KKworLyoKKyAgRGVmaW5lIGEgb25jZSgpIGZ1bmN0aW9uIGRlcGVuZGluZyBvbiB0aGUgYXZhaWxhYmlsaXR5IG9mIGF0b21pY3MuIElmIHRoaXMgaXMKKyAgY29tcGlsZWQgd2l0aCBEWU5BTUlDX0NSQ19UQUJMRSBkZWZpbmVkLCBhbmQgaWYgQ1JDcyB3aWxsIGJlIGNvbXB1dGVkIGluCisgIG11bHRpcGxlIHRocmVhZHMsIGFuZCBpZiBhdG9taWNzIGFyZSBub3QgYXZhaWxhYmxlLCB0aGVuIGdldF9jcmNfdGFibGUoKSBtdXN0CisgIGJlIGNhbGxlZCB0byBpbml0aWFsaXplIHRoZSB0YWJsZXMgYW5kIG11c3QgcmV0dXJuIGJlZm9yZSBhbnkgdGhyZWFkcyBhcmUKKyAgYWxsb3dlZCB0byBjb21wdXRlIG9yIGNvbWJpbmUgQ1JDcy4KKyAqLworCisvKiBEZWZpbml0aW9uIG9mIG9uY2UgZnVuY3Rpb25hbGl0eS4gKi8KK3R5cGVkZWYgc3RydWN0IG9uY2VfcyBvbmNlX3Q7Citsb2NhbCB2b2lkIG9uY2UgT0YoKG9uY2VfdCAqLCB2b2lkICgqKSh2b2lkKSkpOworCisvKiBDaGVjayBmb3IgdGhlIGF2YWlsYWJpbGl0eSBvZiBhdG9taWNzLiAqLworI2lmIGRlZmluZWQoX19TVERDX18pICYmIF9fU1REQ19WRVJTSU9OX18gPj0gMjAxMTEyTCAmJiBcCisgICAgIWRlZmluZWQoX19TVERDX05PX0FUT01JQ1NfXykKKworI2luY2x1ZGUgPHN0ZGF0b21pYy5oPgorCisvKiBTdHJ1Y3R1cmUgZm9yIG9uY2UoKSwgd2hpY2ggbXVzdCBiZSBpbml0aWFsaXplZCB3aXRoIE9OQ0VfSU5JVC4gKi8KK3N0cnVjdCBvbmNlX3MgeworICAgIGF0b21pY19mbGFnIGJlZ3VuOworICAgIGF0b21pY19pbnQgZG9uZTsKK307CisjZGVmaW5lIE9OQ0VfSU5JVCB7QVRPTUlDX0ZMQUdfSU5JVCwgMH0KKworLyoKKyAgUnVuIHRoZSBwcm92aWRlZCBpbml0KCkgZnVuY3Rpb24gZXhhY3RseSBvbmNlLCBldmVuIGlmIG11bHRpcGxlIHRocmVhZHMKKyAgaW52b2tlIG9uY2UoKSBhdCB0aGUgc2FtZSB0aW1lLiBUaGUgc3RhdGUgbXVzdCBiZSBhIG9uY2VfdCBpbml0aWFsaXplZCB3aXRoCisgIE9OQ0VfSU5JVC4KKyAqLworbG9jYWwgdm9pZCBvbmNlKHN0YXRlLCBpbml0KQorICAgIG9uY2VfdCAqc3RhdGU7CisgICAgdm9pZCAoKmluaXQpKHZvaWQpOworeworICAgIGlmICghYXRvbWljX2xvYWQoJnN0YXRlLT5kb25lKSkgeworICAgICAgICBpZiAoYXRvbWljX2ZsYWdfdGVzdF9hbmRfc2V0KCZzdGF0ZS0+YmVndW4pKQorICAgICAgICAgICAgd2hpbGUgKCFhdG9taWNfbG9hZCgmc3RhdGUtPmRvbmUpKQorICAgICAgICAgICAgICAgIDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbml0KCk7CisgICAgICAgICAgICBhdG9taWNfc3RvcmUoJnN0YXRlLT5kb25lLCAxKTsKKyAgICAgICAgfQorICAgIH0KK30KKworI2Vsc2UgICAvKiBubyBhdG9taWNzICovCisKKy8qIFN0cnVjdHVyZSBmb3Igb25jZSgpLCB3aGljaCBtdXN0IGJlIGluaXRpYWxpemVkIHdpdGggT05DRV9JTklULiAqLworc3RydWN0IG9uY2VfcyB7CisgICAgdm9sYXRpbGUgaW50IGJlZ3VuOworICAgIHZvbGF0aWxlIGludCBkb25lOworfTsKKyNkZWZpbmUgT05DRV9JTklUIHswLCAwfQorCisvKiBUZXN0IGFuZCBzZXQuIEFsYXMsIG5vdCBhdG9taWMsIGJ1dCB0cmllcyB0byBtaW5pbWl6ZSB0aGUgcGVyaW9kIG9mCisgICB2dWxuZXJhYmlsaXR5LiAqLworbG9jYWwgaW50IHRlc3RfYW5kX3NldCBPRigoaW50IHZvbGF0aWxlICopKTsKK2xvY2FsIGludCB0ZXN0X2FuZF9zZXQoCisgICAgaW50IHZvbGF0aWxlICpmbGFnKQoreworICAgIGludCB3YXM7CisKKyAgICB3YXMgPSAqZmxhZzsKKyAgICAqZmxhZyA9IDE7CisgICAgcmV0dXJuIHdhczsKK30KKworLyogUnVuIHRoZSBwcm92aWRlZCBpbml0KCkgZnVuY3Rpb24gb25jZS4gVGhpcyBpcyBub3QgdGhyZWFkLXNhZmUuICovCitsb2NhbCB2b2lkIG9uY2Uoc3RhdGUsIGluaXQpCisgICAgb25jZV90ICpzdGF0ZTsKKyAgICB2b2lkICgqaW5pdCkodm9pZCk7Cit7CisgICAgaWYgKCFzdGF0ZS0+ZG9uZSkgeworICAgICAgICBpZiAodGVzdF9hbmRfc2V0KCZzdGF0ZS0+YmVndW4pKQorICAgICAgICAgICAgd2hpbGUgKCFzdGF0ZS0+ZG9uZSkKKyAgICAgICAgICAgICAgICA7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW5pdCgpOworICAgICAgICAgICAgc3RhdGUtPmRvbmUgPSAxOworICAgICAgICB9CisgICAgfQorfQorCisjZW5kaWYKKworLyogU3RhdGUgZm9yIG9uY2UoKS4gKi8KK2xvY2FsIG9uY2VfdCBtYWRlID0gT05DRV9JTklUOworCisvKgorICBHZW5lcmF0ZSB0YWJsZXMgZm9yIGEgYnl0ZS13aXNlIDMyLWJpdCBDUkMgY2FsY3VsYXRpb24gb24gdGhlIHBvbHlub21pYWw6CisgIHheMzIreF4yNit4XjIzK3heMjIreF4xNit4XjEyK3heMTEreF4xMCt4XjgreF43K3heNSt4XjQreF4yK3grMS4KKworICBQb2x5bm9taWFscyBvdmVyIEdGKDIpIGFyZSByZXByZXNlbnRlZCBpbiBiaW5hcnksIG9uZSBiaXQgcGVyIGNvZWZmaWNpZW50LAorICB3aXRoIHRoZSBsb3dlc3QgcG93ZXJzIGluIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdC4gVGhlbiBhZGRpbmcgcG9seW5vbWlhbHMKKyAgaXMganVzdCBleGNsdXNpdmUtb3IsIGFuZCBtdWx0aXBseWluZyBhIHBvbHlub21pYWwgYnkgeCBpcyBhIHJpZ2h0IHNoaWZ0IGJ5CisgIG9uZS4gSWYgd2UgY2FsbCB0aGUgYWJvdmUgcG9seW5vbWlhbCBwLCBhbmQgcmVwcmVzZW50IGEgYnl0ZSBhcyB0aGUKKyAgcG9seW5vbWlhbCBxLCBhbHNvIHdpdGggdGhlIGxvd2VzdCBwb3dlciBpbiB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgKHNvIHRoZQorICBieXRlIDB4YjEgaXMgdGhlIHBvbHlub21pYWwgeF43K3heMyt4XjIrMSksIHRoZW4gdGhlIENSQyBpcyAocSp4XjMyKSBtb2QgcCwKKyAgd2hlcmUgYSBtb2QgYiBtZWFucyB0aGUgcmVtYWluZGVyIGFmdGVyIGRpdmlkaW5nIGEgYnkgYi4KKworICBUaGlzIGNhbGN1bGF0aW9uIGlzIGRvbmUgdXNpbmcgdGhlIHNoaWZ0LXJlZ2lzdGVyIG1ldGhvZCBvZiBtdWx0aXBseWluZyBhbmQKKyAgdGFraW5nIHRoZSByZW1haW5kZXIuIFRoZSByZWdpc3RlciBpcyBpbml0aWFsaXplZCB0byB6ZXJvLCBhbmQgZm9yIGVhY2gKKyAgaW5jb21pbmcgYml0LCB4XjMyIGlzIGFkZGVkIG1vZCBwIHRvIHRoZSByZWdpc3RlciBpZiB0aGUgYml0IGlzIGEgb25lICh3aGVyZQorICB4XjMyIG1vZCBwIGlzIHAreF4zMiA9IHheMjYrLi4uKzEpLCBhbmQgdGhlIHJlZ2lzdGVyIGlzIG11bHRpcGxpZWQgbW9kIHAgYnkgeAorICAod2hpY2ggaXMgc2hpZnRpbmcgcmlnaHQgYnkgb25lIGFuZCBhZGRpbmcgeF4zMiBtb2QgcCBpZiB0aGUgYml0IHNoaWZ0ZWQgb3V0CisgIGlzIGEgb25lKS4gV2Ugc3RhcnQgd2l0aCB0aGUgaGlnaGVzdCBwb3dlciAobGVhc3Qgc2lnbmlmaWNhbnQgYml0KSBvZiBxIGFuZAorICByZXBlYXQgZm9yIGFsbCBlaWdodCBiaXRzIG9mIHEuCisKKyAgVGhlIHRhYmxlIGlzIHNpbXBseSB0aGUgQ1JDIG9mIGFsbCBwb3NzaWJsZSBlaWdodCBiaXQgdmFsdWVzLiBUaGlzIGlzIGFsbCB0aGUKKyAgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGdlbmVyYXRlIENSQ3Mgb24gZGF0YSBhIGJ5dGUgYXQgYSB0aW1lIGZvciBhbGwKKyAgY29tYmluYXRpb25zIG9mIENSQyByZWdpc3RlciB2YWx1ZXMgYW5kIGluY29taW5nIGJ5dGVzLgorICovCisKK2xvY2FsIHZvaWQgbWFrZV9jcmNfdGFibGUoKQoreworICAgIHVuc2lnbmVkIGksIGosIG47CisgICAgel9jcmNfdCBwOworCisgICAgLyogaW5pdGlhbGl6ZSB0aGUgQ1JDIG9mIGJ5dGVzIHRhYmxlcyAqLworICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgeworICAgICAgICBwID0gaTsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IDg7IGorKykKKyAgICAgICAgICAgIHAgPSBwICYgMSA/IChwID4+IDEpIF4gUE9MWSA6IHAgPj4gMTsKKyAgICAgICAgY3JjX3RhYmxlW2ldID0gcDsKKyNpZmRlZiBXCisgICAgICAgIGNyY19iaWdfdGFibGVbaV0gPSBieXRlX3N3YXAocCk7CisjZW5kaWYKKyAgICB9CisKKyAgICAvKiBpbml0aWFsaXplIHRoZSB4XjJebiBtb2QgcCh4KSB0YWJsZSAqLworICAgIHAgPSAoel9jcmNfdCkxIDw8IDMwOyAgICAgICAgIC8qIHheMSAqLworICAgIHgybl90YWJsZVswXSA9IHA7CisgICAgZm9yIChuID0gMTsgbiA8IDMyOyBuKyspCisgICAgICAgIHgybl90YWJsZVtuXSA9IHAgPSBtdWx0bW9kcChwLCBwKTsKKworI2lmZGVmIFcKKyAgICAvKiBpbml0aWFsaXplIHRoZSBicmFpZGluZyB0YWJsZXMgLS0gbmVlZHMgeDJuX3RhYmxlW10gKi8KKyAgICBicmFpZChjcmNfYnJhaWRfdGFibGUsIGNyY19icmFpZF9iaWdfdGFibGUsIE4sIFcpOworI2VuZGlmCisKKyNpZmRlZiBNQUtFQ1JDSAorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICBUaGUgY3JjMzIuaCBoZWFkZXIgZmlsZSBjb250YWlucyB0YWJsZXMgZm9yIGJvdGggMzItYml0IGFuZCA2NC1iaXQKKyAgICAgICAgICB6X3dvcmRfdCdzLCBhbmQgc28gcmVxdWlyZXMgYSA2NC1iaXQgdHlwZSBiZSBhdmFpbGFibGUuIEluIHRoYXQgY2FzZSwKKyAgICAgICAgICB6X3dvcmRfdCBtdXN0IGJlIGRlZmluZWQgdG8gYmUgNjQtYml0cy4gVGhpcyBjb2RlIHRoZW4gYWxzbyBnZW5lcmF0ZXMKKyAgICAgICAgICBhbmQgd3JpdGVzIG91dCB0aGUgdGFibGVzIGZvciB0aGUgY2FzZSB0aGF0IHpfd29yZF90IGlzIDMyIGJpdHMuCisgICAgICAgICAqLworI2lmICFkZWZpbmVkKFcpIHx8IFcgIT0gOAorIyAgZXJyb3IgTmVlZCBhIDY0LWJpdCBpbnRlZ2VyIHR5cGUgaW4gb3JkZXIgdG8gZ2VuZXJhdGUgY3JjMzIuaC4KKyNlbmRpZgorICAgICAgICBGSUxFICpvdXQ7CisgICAgICAgIGludCBrLCBuOworICAgICAgICB6X2NyY190IGx0bFs4XVsyNTZdOworICAgICAgICB6X3dvcmRfdCBiaWdbOF1bMjU2XTsKKworICAgICAgICBvdXQgPSBmb3BlbigiY3JjMzIuaCIsICJ3Iik7CisgICAgICAgIGlmIChvdXQgPT0gTlVMTCkgcmV0dXJuOworCisgICAgICAgIC8qIHdyaXRlIG91dCBsaXR0bGUtZW5kaWFuIENSQyB0YWJsZSB0byBjcmMzMi5oICovCisgICAgICAgIGZwcmludGYob3V0LAorICAgICAgICAgICAgIi8qIGNyYzMyLmggLS0gdGFibGVzIGZvciByYXBpZCBDUkMgY2FsY3VsYXRpb25cbiIKKyAgICAgICAgICAgICIgKiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBjcmMzMi5jXG4gKi9cbiIKKyAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICJsb2NhbCBjb25zdCB6X2NyY190IEZBUiBjcmNfdGFibGVbXSA9IHtcbiIKKyAgICAgICAgICAgICIgICAgIik7CisgICAgICAgIHdyaXRlX3RhYmxlKG91dCwgY3JjX3RhYmxlLCAyNTYpOworICAgICAgICBmcHJpbnRmKG91dCwKKyAgICAgICAgICAgICJ9O1xuIik7CisKKyAgICAgICAgLyogd3JpdGUgb3V0IGJpZy1lbmRpYW4gQ1JDIHRhYmxlIGZvciA2NC1iaXQgel93b3JkX3QgdG8gY3JjMzIuaCAqLworICAgICAgICBmcHJpbnRmKG91dCwKKyAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICIjaWZkZWYgV1xuIgorICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgIiNpZiBXID09IDhcbiIKKyAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICJsb2NhbCBjb25zdCB6X3dvcmRfdCBGQVIgY3JjX2JpZ190YWJsZVtdID0ge1xuIgorICAgICAgICAgICAgIiAgICAiKTsKKyAgICAgICAgd3JpdGVfdGFibGU2NChvdXQsIGNyY19iaWdfdGFibGUsIDI1Nik7CisgICAgICAgIGZwcmludGYob3V0LAorICAgICAgICAgICAgIn07XG4iKTsKKworICAgICAgICAvKiB3cml0ZSBvdXQgYmlnLWVuZGlhbiBDUkMgdGFibGUgZm9yIDMyLWJpdCB6X3dvcmRfdCB0byBjcmMzMi5oICovCisgICAgICAgIGZwcmludGYob3V0LAorICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgIiNlbHNlIC8qIFcgPT0gNCAqL1xuIgorICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgImxvY2FsIGNvbnN0IHpfd29yZF90IEZBUiBjcmNfYmlnX3RhYmxlW10gPSB7XG4iCisgICAgICAgICAgICAiICAgICIpOworICAgICAgICB3cml0ZV90YWJsZTMyaGkob3V0LCBjcmNfYmlnX3RhYmxlLCAyNTYpOworICAgICAgICBmcHJpbnRmKG91dCwKKyAgICAgICAgICAgICJ9O1xuIgorICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgIiNlbmRpZlxuIik7CisKKyAgICAgICAgLyogd3JpdGUgb3V0IGJyYWlkIHRhYmxlcyBmb3IgZWFjaCB2YWx1ZSBvZiBOICovCisgICAgICAgIGZvciAobiA9IDE7IG4gPD0gNjsgbisrKSB7CisgICAgICAgICAgICBmcHJpbnRmKG91dCwKKyAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICIjaWYgTiA9PSAlZFxuIiwgbik7CisKKyAgICAgICAgICAgIC8qIGNvbXB1dGUgYnJhaWQgdGFibGVzIGZvciB0aGlzIE4gYW5kIDY0LWJpdCB3b3JkX3QgKi8KKyAgICAgICAgICAgIGJyYWlkKGx0bCwgYmlnLCBuLCA4KTsKKworICAgICAgICAgICAgLyogd3JpdGUgb3V0IGJyYWlkIHRhYmxlcyBmb3IgNjQtYml0IHpfd29yZF90IHRvIGNyYzMyLmggKi8KKyAgICAgICAgICAgIGZwcmludGYob3V0LAorICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgIiNpZiBXID09IDhcbiIKKyAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICJsb2NhbCBjb25zdCB6X2NyY190IEZBUiBjcmNfYnJhaWRfdGFibGVbXVsyNTZdID0ge1xuIik7CisgICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgODsgaysrKSB7CisgICAgICAgICAgICAgICAgZnByaW50ZihvdXQsICIgICB7Iik7CisgICAgICAgICAgICAgICAgd3JpdGVfdGFibGUob3V0LCBsdGxba10sIDI1Nik7CisgICAgICAgICAgICAgICAgZnByaW50ZihvdXQsICJ9JXMiLCBrIDwgNyA/ICIsXG4iIDogIiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZnByaW50ZihvdXQsCisgICAgICAgICAgICAifTtcbiIKKyAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICJsb2NhbCBjb25zdCB6X3dvcmRfdCBGQVIgY3JjX2JyYWlkX2JpZ190YWJsZVtdWzI1Nl0gPSB7XG4iKTsKKyAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCA4OyBrKyspIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKG91dCwgIiAgIHsiKTsKKyAgICAgICAgICAgICAgICB3cml0ZV90YWJsZTY0KG91dCwgYmlnW2tdLCAyNTYpOworICAgICAgICAgICAgICAgIGZwcmludGYob3V0LCAifSVzIiwgayA8IDcgPyAiLFxuIiA6ICIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZwcmludGYob3V0LAorICAgICAgICAgICAgIn07XG4iKTsKKworICAgICAgICAgICAgLyogY29tcHV0ZSBicmFpZCB0YWJsZXMgZm9yIHRoaXMgTiBhbmQgMzItYml0IHdvcmRfdCAqLworICAgICAgICAgICAgYnJhaWQobHRsLCBiaWcsIG4sIDQpOworCisgICAgICAgICAgICAvKiB3cml0ZSBvdXQgYnJhaWQgdGFibGVzIGZvciAzMi1iaXQgel93b3JkX3QgdG8gY3JjMzIuaCAqLworICAgICAgICAgICAgZnByaW50ZihvdXQsCisgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAiI2Vsc2UgLyogVyA9PSA0ICovXG4iCisgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAibG9jYWwgY29uc3Qgel9jcmNfdCBGQVIgY3JjX2JyYWlkX3RhYmxlW11bMjU2XSA9IHtcbiIpOworICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IDQ7IGsrKykgeworICAgICAgICAgICAgICAgIGZwcmludGYob3V0LCAiICAgeyIpOworICAgICAgICAgICAgICAgIHdyaXRlX3RhYmxlKG91dCwgbHRsW2tdLCAyNTYpOworICAgICAgICAgICAgICAgIGZwcmludGYob3V0LCAifSVzIiwgayA8IDMgPyAiLFxuIiA6ICIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZwcmludGYob3V0LAorICAgICAgICAgICAgIn07XG4iCisgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAibG9jYWwgY29uc3Qgel93b3JkX3QgRkFSIGNyY19icmFpZF9iaWdfdGFibGVbXVsyNTZdID0ge1xuIik7CisgICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgNDsgaysrKSB7CisgICAgICAgICAgICAgICAgZnByaW50ZihvdXQsICIgICB7Iik7CisgICAgICAgICAgICAgICAgd3JpdGVfdGFibGUzMmhpKG91dCwgYmlnW2tdLCAyNTYpOworICAgICAgICAgICAgICAgIGZwcmludGYob3V0LCAifSVzIiwgayA8IDMgPyAiLFxuIiA6ICIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZwcmludGYob3V0LAorICAgICAgICAgICAgIn07XG4iCisgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAiI2VuZGlmXG4iCisgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAiI2VuZGlmXG4iKTsKKyAgICAgICAgfQorICAgICAgICBmcHJpbnRmKG91dCwKKyAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICIjZW5kaWZcbiIpOworCisgICAgICAgIC8qIHdyaXRlIG91dCB6ZXJvcyBvcGVyYXRvciB0YWJsZSB0byBjcmMzMi5oICovCisgICAgICAgIGZwcmludGYob3V0LAorICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgImxvY2FsIGNvbnN0IHpfY3JjX3QgRkFSIHgybl90YWJsZVtdID0ge1xuIgorICAgICAgICAgICAgIiAgICAiKTsKKyAgICAgICAgd3JpdGVfdGFibGUob3V0LCB4Mm5fdGFibGUsIDMyKTsKKyAgICAgICAgZnByaW50ZihvdXQsCisgICAgICAgICAgICAifTtcbiIpOworICAgICAgICBmY2xvc2Uob3V0KTsKKyAgICB9CisjZW5kaWYgLyogTUFLRUNSQ0ggKi8KK30KKworI2lmZGVmIE1BS0VDUkNICisKKy8qCisgICBXcml0ZSB0aGUgMzItYml0IHZhbHVlcyBpbiB0YWJsZVswLi5rLTFdIHRvIG91dCwgZml2ZSBwZXIgbGluZSBpbgorICAgaGV4YWRlY2ltYWwgc2VwYXJhdGVkIGJ5IGNvbW1hcy4KKyAqLworbG9jYWwgdm9pZCB3cml0ZV90YWJsZSgKKyAgICBGSUxFICpvdXQsCisgICAgY29uc3Qgel9jcmNfdCBGQVIgKnRhYmxlLAorICAgIGludCBrKQoreworICAgIGludCBuOworCisgICAgZm9yIChuID0gMDsgbiA8IGs7IG4rKykKKyAgICAgICAgZnByaW50ZihvdXQsICIlczB4JTA4bHglcyIsIG4gPT0gMCB8fCBuICUgNSA/ICIiIDogIiAgICAiLAorICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSh0YWJsZVtuXSksCisgICAgICAgICAgICAgICAgbiA9PSBrIC0gMSA/ICIiIDogKG4gJSA1ID09IDQgPyAiLFxuIiA6ICIsICIpKTsKK30KKworLyoKKyAgIFdyaXRlIHRoZSBoaWdoIDMyLWJpdHMgb2YgZWFjaCB2YWx1ZSBpbiB0YWJsZVswLi5rLTFdIHRvIG91dCwgZml2ZSBwZXIgbGluZQorICAgaW4gaGV4YWRlY2ltYWwgc2VwYXJhdGVkIGJ5IGNvbW1hcy4KKyAqLworbG9jYWwgdm9pZCB3cml0ZV90YWJsZTMyaGkoCisgICAgRklMRSAqb3V0LAorICAgIGNvbnN0IHpfd29yZF90IEZBUiAqdGFibGUsCisgICAgaW50IGspCit7CisgICAgaW50IG47CisKKyAgICBmb3IgKG4gPSAwOyBuIDwgazsgbisrKQorICAgICAgICBmcHJpbnRmKG91dCwgIiVzMHglMDhseCVzIiwgbiA9PSAwIHx8IG4gJSA1ID8gIiIgOiAiICAgICIsCisgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKHRhYmxlW25dID4+IDMyKSwKKyAgICAgICAgICAgICAgICBuID09IGsgLSAxID8gIiIgOiAobiAlIDUgPT0gNCA/ICIsXG4iIDogIiwgIikpOworfQorCisvKgorICBXcml0ZSB0aGUgNjQtYml0IHZhbHVlcyBpbiB0YWJsZVswLi5rLTFdIHRvIG91dCwgdGhyZWUgcGVyIGxpbmUgaW4KKyAgaGV4YWRlY2ltYWwgc2VwYXJhdGVkIGJ5IGNvbW1hcy4gVGhpcyBhc3N1bWVzIHRoYXQgaWYgdGhlcmUgaXMgYSA2NC1iaXQKKyAgdHlwZSwgdGhlbiB0aGVyZSBpcyBhbHNvIGEgbG9uZyBsb25nIGludGVnZXIgdHlwZSwgYW5kIGl0IGlzIGF0IGxlYXN0IDY0CisgIGJpdHMuIElmIG5vdCwgdGhlbiB0aGUgdHlwZSBjYXN0IGFuZCBmb3JtYXQgc3RyaW5nIGNhbiBiZSBhZGp1c3RlZAorICBhY2NvcmRpbmdseS4KKyAqLworbG9jYWwgdm9pZCB3cml0ZV90YWJsZTY0KAorICAgIEZJTEUgKm91dCwKKyAgICBjb25zdCB6X3dvcmRfdCBGQVIgKnRhYmxlLAorICAgIGludCBrKQoreworICAgIGludCBuOworCisgICAgZm9yIChuID0gMDsgbiA8IGs7IG4rKykKKyAgICAgICAgZnByaW50ZihvdXQsICIlczB4JTAxNmxseCVzIiwgbiA9PSAwIHx8IG4gJSAzID8gIiIgOiAiICAgICIsCisgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZykodGFibGVbbl0pLAorICAgICAgICAgICAgICAgIG4gPT0gayAtIDEgPyAiIiA6IChuICUgMyA9PSAyID8gIixcbiIgOiAiLCAiKSk7Cit9CisKKy8qIEFjdHVhbGx5IGRvIHRoZSBkZWVkLiAqLworaW50IG1haW4oKQoreworICAgIG1ha2VfY3JjX3RhYmxlKCk7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZiAvKiBNQUtFQ1JDSCAqLworCisjaWZkZWYgVworLyoKKyAgR2VuZXJhdGUgdGhlIGxpdHRsZSBhbmQgYmlnLWVuZGlhbiBicmFpZCB0YWJsZXMgZm9yIHRoZSBnaXZlbiBuIGFuZCB6X3dvcmRfdAorICBzaXplIHcuIEVhY2ggYXJyYXkgbXVzdCBoYXZlIHJvb20gZm9yIHcgYmxvY2tzIG9mIDI1NiBlbGVtZW50cy4KKyAqLworbG9jYWwgdm9pZCBicmFpZChsdGwsIGJpZywgbiwgdykKKyAgICB6X2NyY190IGx0bFtdWzI1Nl07CisgICAgel93b3JkX3QgYmlnW11bMjU2XTsKKyAgICBpbnQgbjsKKyAgICBpbnQgdzsKK3sKKyAgICBpbnQgazsKKyAgICB6X2NyY190IGksIHAsIHE7CisgICAgZm9yIChrID0gMDsgayA8IHc7IGsrKykgeworICAgICAgICBwID0geDJubW9kcCgobiAqIHcgKyAzIC0gaykgPDwgMywgMCk7CisgICAgICAgIGx0bFtrXVswXSA9IDA7CisgICAgICAgIGJpZ1t3IC0gMSAtIGtdWzBdID0gMDsKKyAgICAgICAgZm9yIChpID0gMTsgaSA8IDI1NjsgaSsrKSB7CisgICAgICAgICAgICBsdGxba11baV0gPSBxID0gbXVsdG1vZHAoaSA8PCAyNCwgcCk7CisgICAgICAgICAgICBiaWdbdyAtIDEgLSBrXVtpXSA9IGJ5dGVfc3dhcChxKTsKKyAgICAgICAgfQorICAgIH0KK30KKyNlbmRpZgorCisjZWxzZSAvKiAhRFlOQU1JQ19DUkNfVEFCTEUgKi8KKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogVGFibGVzIGZvciBieXRlLXdpc2UgYW5kIGJyYWlkZWQgQ1JDLTMyIGNhbGN1bGF0aW9ucywgYW5kIGEgdGFibGUgb2YgcG93ZXJzCisgKiBvZiB4IGZvciBjb21iaW5pbmcgQ1JDLTMycywgYWxsIG1hZGUgYnkgbWFrZV9jcmNfdGFibGUoKS4KKyAqLworI2luY2x1ZGUgImNyYzMyLmgiCisjZW5kaWYgLyogRFlOQU1JQ19DUkNfVEFCTEUgKi8KKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBSb3V0aW5lcyB1c2VkIGZvciBDUkMgY2FsY3VsYXRpb24uIFNvbWUgYXJlIGFsc28gcmVxdWlyZWQgZm9yIHRoZSB0YWJsZQorICogZ2VuZXJhdGlvbiBhYm92ZS4KKyAqLworCisjaWZuZGVmIFpfRlJFRVRZUEUKKworLyoKKyAgUmV0dXJuIGEoeCkgbXVsdGlwbGllZCBieSBiKHgpIG1vZHVsbyBwKHgpLCB3aGVyZSBwKHgpIGlzIHRoZSBDUkMgcG9seW5vbWlhbCwKKyAgcmVmbGVjdGVkLiBGb3Igc3BlZWQsIHRoaXMgcmVxdWlyZXMgdGhhdCBhIG5vdCBiZSB6ZXJvLgorICovCitsb2NhbCB6X2NyY190IG11bHRtb2RwKAorICAgIHpfY3JjX3QgYSwKKyAgICB6X2NyY190IGIpCit7CisgICAgel9jcmNfdCBtLCBwOworCisgICAgbSA9ICh6X2NyY190KTEgPDwgMzE7CisgICAgcCA9IDA7CisgICAgZm9yICg7OykgeworICAgICAgICBpZiAoYSAmIG0pIHsKKyAgICAgICAgICAgIHAgXj0gYjsKKyAgICAgICAgICAgIGlmICgoYSAmIChtIC0gMSkpID09IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgbSA+Pj0gMTsKKyAgICAgICAgYiA9IGIgJiAxID8gKGIgPj4gMSkgXiBQT0xZIDogYiA+PiAxOworICAgIH0KKyAgICByZXR1cm4gcDsKK30KKworLyoKKyAgUmV0dXJuIHheKG4gKiAyXmspIG1vZHVsbyBwKHgpLiBSZXF1aXJlcyB0aGF0IHgybl90YWJsZVtdIGhhcyBiZWVuCisgIGluaXRpYWxpemVkLgorICovCitsb2NhbCB6X2NyY190IHgybm1vZHAoCisgICAgel9vZmY2NF90IG4sCisgICAgdW5zaWduZWQgaykKK3sKKyAgICB6X2NyY190IHA7CisKKyAgICBwID0gKHpfY3JjX3QpMSA8PCAzMTsgICAgICAgICAgIC8qIHheMCA9PSAxICovCisgICAgd2hpbGUgKG4pIHsKKyAgICAgICAgaWYgKG4gJiAxKQorICAgICAgICAgICAgcCA9IG11bHRtb2RwKHgybl90YWJsZVtrICYgMzFdLCBwKTsKKyAgICAgICAgbiA+Pj0gMTsKKyAgICAgICAgaysrOworICAgIH0KKyAgICByZXR1cm4gcDsKK30KKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBieSBhc20gdmVyc2lvbnMgb2YgY3JjMzIoKSwgYW5kIHRvIGZvcmNlIHRoZQorICogZ2VuZXJhdGlvbiBvZiB0aGUgQ1JDIHRhYmxlcyBpbiBhIHRocmVhZGVkIGFwcGxpY2F0aW9uLgorICovCitjb25zdCB6X2NyY190IEZBUiAqIFpFWFBPUlQgZ2V0X2NyY190YWJsZSgpCit7CisjaWZkZWYgRFlOQU1JQ19DUkNfVEFCTEUKKyAgICBvbmNlKCZtYWRlLCBtYWtlX2NyY190YWJsZSk7CisjZW5kaWYgLyogRFlOQU1JQ19DUkNfVEFCTEUgKi8KKyAgICByZXR1cm4gKGNvbnN0IHpfY3JjX3QgRkFSICopY3JjX3RhYmxlOworfQorCisjZW5kaWYgIC8qIFpfRlJFRVRZUEUgKi8KKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogVXNlIEFSTSBtYWNoaW5lIGluc3RydWN0aW9ucyBpZiBhdmFpbGFibGUuIFRoaXMgd2lsbCBjb21wdXRlIHRoZSBDUkMgYWJvdXQKKyAqIHRlbiB0aW1lcyBmYXN0ZXIgdGhhbiB0aGUgYnJhaWRlZCBjYWxjdWxhdGlvbi4gVGhpcyBjb2RlIGRvZXMgbm90IGNoZWNrIGZvcgorICogdGhlIHByZXNlbmNlIG9mIHRoZSBDUkMgaW5zdHJ1Y3Rpb24gYXQgcnVuIHRpbWUuIF9fQVJNX0ZFQVRVUkVfQ1JDMzIgd2lsbAorICogb25seSBiZSBkZWZpbmVkIGlmIHRoZSBjb21waWxhdGlvbiBzcGVjaWZpZXMgYW4gQVJNIHByb2Nlc3NvciBhcmNoaXRlY3R1cmUKKyAqIHRoYXQgaGFzIHRoZSBpbnN0cnVjdGlvbnMuIEZvciBleGFtcGxlLCBjb21waWxpbmcgd2l0aCAtbWFyY2g9YXJtdjguMS1hIG9yCisgKiAtbWFyY2g9YXJtdjgtYStjcmMsIG9yIC1tYXJjaD1uYXRpdmUgaWYgdGhlIGNvbXBpbGUgbWFjaGluZSBoYXMgdGhlIGNyYzMyCisgKiBpbnN0cnVjdGlvbnMuCisgKi8KKyNpZmRlZiBBUk1DUkMzMgorCisvKgorICAgQ29uc3RhbnRzIGVtcGlyaWNhbGx5IGRldGVybWluZWQgdG8gbWF4aW1pemUgc3BlZWQuIFRoZXNlIHZhbHVlcyBhcmUgZnJvbQorICAgbWVhc3VyZW1lbnRzIG9uIGEgQ29ydGV4LUE1Ny4gWW91ciBtaWxlYWdlIG1heSB2YXJ5LgorICovCisjZGVmaW5lIFpfQkFUQ0ggMzk5MCAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2Ygd29yZHMgaW4gYSBiYXRjaCAqLworI2RlZmluZSBaX0JBVENIX1pFUk9TIDB4YTEwZDNkMGMgICAgLyogY29tcHV0ZWQgZnJvbSBaX0JBVENIID0gMzk5MCAqLworI2RlZmluZSBaX0JBVENIX01JTiA4MDAgICAgICAgICAgICAgLyogZmV3ZXN0IHdvcmRzIGluIGEgZmluYWwgYmF0Y2ggKi8KKwordW5zaWduZWQgbG9uZyBaRVhQT1JUIGNyYzMyX3ooCisgICAgdW5zaWduZWQgbG9uZyBjcmMsCisgICAgY29uc3QgdW5zaWduZWQgY2hhciBGQVIgKmJ1ZiwKKyAgICB6X3NpemVfdCBsZW4pCit7CisgICAgel9jcmNfdCB2YWw7CisgICAgel93b3JkX3QgY3JjMSwgY3JjMjsKKyAgICBjb25zdCB6X3dvcmRfdCAqd29yZDsKKyAgICB6X3dvcmRfdCB2YWwwLCB2YWwxLCB2YWwyOworICAgIHpfc2l6ZV90IGxhc3QsIGxhc3QyLCBpOworICAgIHpfc2l6ZV90IG51bTsKKworICAgIC8qIFJldHVybiBpbml0aWFsIENSQywgaWYgcmVxdWVzdGVkLiAqLworICAgIGlmIChidWYgPT0gWl9OVUxMKSByZXR1cm4gMDsKKworI2lmZGVmIERZTkFNSUNfQ1JDX1RBQkxFCisgICAgb25jZSgmbWFkZSwgbWFrZV9jcmNfdGFibGUpOworI2VuZGlmIC8qIERZTkFNSUNfQ1JDX1RBQkxFICovCisKKyAgICAvKiBQcmUtY29uZGl0aW9uIHRoZSBDUkMgKi8KKyAgICBjcmMgPSAofmNyYykgJiAweGZmZmZmZmZmOworCisgICAgLyogQ29tcHV0ZSB0aGUgQ1JDIHVwIHRvIGEgd29yZCBib3VuZGFyeS4gKi8KKyAgICB3aGlsZSAobGVuICYmICgoel9zaXplX3QpYnVmICYgNykgIT0gMCkgeworICAgICAgICBsZW4tLTsKKyAgICAgICAgdmFsID0gKmJ1ZisrOworICAgICAgICBfX2FzbV9fIHZvbGF0aWxlKCJjcmMzMmIgJXcwLCAldzAsICV3MSIgOiAiK3IiKGNyYykgOiAiciIodmFsKSk7CisgICAgfQorCisgICAgLyogUHJlcGFyZSB0byBjb21wdXRlIHRoZSBDUkMgb24gZnVsbCA2NC1iaXQgd29yZHMgd29yZFswLi5udW0tMV0uICovCisgICAgd29yZCA9ICh6X3dvcmRfdCBjb25zdCAqKWJ1ZjsKKyAgICBudW0gPSBsZW4gPj4gMzsKKyAgICBsZW4gJj0gNzsKKworICAgIC8qIERvIHRocmVlIGludGVybGVhdmVkIENSQ3MgdG8gcmVhbGl6ZSB0aGUgdGhyb3VnaHB1dCBvZiBvbmUgY3JjMzJ4CisgICAgICAgaW5zdHJ1Y3Rpb24gcGVyIGN5Y2xlLiBFYWNoIENSQyBpcyBjYWxjdWxhdGVkIG9uIFpfQkFUQ0ggd29yZHMuIFRoZQorICAgICAgIHRocmVlIENSQ3MgYXJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgQ1JDIGFmdGVyIGVhY2ggc2V0IG9mIGJhdGNoZXMuICovCisgICAgd2hpbGUgKG51bSA+PSAzICogWl9CQVRDSCkgeworICAgICAgICBjcmMxID0gMDsKKyAgICAgICAgY3JjMiA9IDA7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBaX0JBVENIOyBpKyspIHsKKyAgICAgICAgICAgIHZhbDAgPSB3b3JkW2ldOworICAgICAgICAgICAgdmFsMSA9IHdvcmRbaSArIFpfQkFUQ0hdOworICAgICAgICAgICAgdmFsMiA9IHdvcmRbaSArIDIgKiBaX0JBVENIXTsKKyAgICAgICAgICAgIF9fYXNtX18gdm9sYXRpbGUoImNyYzMyeCAldzAsICV3MCwgJXgxIiA6ICIrciIoY3JjKSA6ICJyIih2YWwwKSk7CisgICAgICAgICAgICBfX2FzbV9fIHZvbGF0aWxlKCJjcmMzMnggJXcwLCAldzAsICV4MSIgOiAiK3IiKGNyYzEpIDogInIiKHZhbDEpKTsKKyAgICAgICAgICAgIF9fYXNtX18gdm9sYXRpbGUoImNyYzMyeCAldzAsICV3MCwgJXgxIiA6ICIrciIoY3JjMikgOiAiciIodmFsMikpOworICAgICAgICB9CisgICAgICAgIHdvcmQgKz0gMyAqIFpfQkFUQ0g7CisgICAgICAgIG51bSAtPSAzICogWl9CQVRDSDsKKyAgICAgICAgY3JjID0gbXVsdG1vZHAoWl9CQVRDSF9aRVJPUywgY3JjKSBeIGNyYzE7CisgICAgICAgIGNyYyA9IG11bHRtb2RwKFpfQkFUQ0hfWkVST1MsIGNyYykgXiBjcmMyOworICAgIH0KKworICAgIC8qIERvIG9uZSBsYXN0IHNtYWxsZXIgYmF0Y2ggd2l0aCB0aGUgcmVtYWluaW5nIHdvcmRzLCBpZiB0aGVyZSBhcmUgZW5vdWdoCisgICAgICAgdG8gcGF5IGZvciB0aGUgY29tYmluYXRpb24gb2YgQ1JDcy4gKi8KKyAgICBsYXN0ID0gbnVtIC8gMzsKKyAgICBpZiAobGFzdCA+PSBaX0JBVENIX01JTikgeworICAgICAgICBsYXN0MiA9IGxhc3QgPDwgMTsKKyAgICAgICAgY3JjMSA9IDA7CisgICAgICAgIGNyYzIgPSAwOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGFzdDsgaSsrKSB7CisgICAgICAgICAgICB2YWwwID0gd29yZFtpXTsKKyAgICAgICAgICAgIHZhbDEgPSB3b3JkW2kgKyBsYXN0XTsKKyAgICAgICAgICAgIHZhbDIgPSB3b3JkW2kgKyBsYXN0Ml07CisgICAgICAgICAgICBfX2FzbV9fIHZvbGF0aWxlKCJjcmMzMnggJXcwLCAldzAsICV4MSIgOiAiK3IiKGNyYykgOiAiciIodmFsMCkpOworICAgICAgICAgICAgX19hc21fXyB2b2xhdGlsZSgiY3JjMzJ4ICV3MCwgJXcwLCAleDEiIDogIityIihjcmMxKSA6ICJyIih2YWwxKSk7CisgICAgICAgICAgICBfX2FzbV9fIHZvbGF0aWxlKCJjcmMzMnggJXcwLCAldzAsICV4MSIgOiAiK3IiKGNyYzIpIDogInIiKHZhbDIpKTsKKyAgICAgICAgfQorICAgICAgICB3b3JkICs9IDMgKiBsYXN0OworICAgICAgICBudW0gLT0gMyAqIGxhc3Q7CisgICAgICAgIHZhbCA9IHgybm1vZHAobGFzdCwgNik7CisgICAgICAgIGNyYyA9IG11bHRtb2RwKHZhbCwgY3JjKSBeIGNyYzE7CisgICAgICAgIGNyYyA9IG11bHRtb2RwKHZhbCwgY3JjKSBeIGNyYzI7CisgICAgfQorCisgICAgLyogQ29tcHV0ZSB0aGUgQ1JDIG9uIGFueSByZW1haW5pbmcgd29yZHMuICovCisgICAgZm9yIChpID0gMDsgaSA8IG51bTsgaSsrKSB7CisgICAgICAgIHZhbDAgPSB3b3JkW2ldOworICAgICAgICBfX2FzbV9fIHZvbGF0aWxlKCJjcmMzMnggJXcwLCAldzAsICV4MSIgOiAiK3IiKGNyYykgOiAiciIodmFsMCkpOworICAgIH0KKyAgICB3b3JkICs9IG51bTsKKworICAgIC8qIENvbXBsZXRlIHRoZSBDUkMgb24gYW55IHJlbWFpbmluZyBieXRlcy4gKi8KKyAgICBidWYgPSAoY29uc3QgdW5zaWduZWQgY2hhciBGQVIgKil3b3JkOworICAgIHdoaWxlIChsZW4pIHsKKyAgICAgICAgbGVuLS07CisgICAgICAgIHZhbCA9ICpidWYrKzsKKyAgICAgICAgX19hc21fXyB2b2xhdGlsZSgiY3JjMzJiICV3MCwgJXcwLCAldzEiIDogIityIihjcmMpIDogInIiKHZhbCkpOworICAgIH0KKworICAgIC8qIFJldHVybiB0aGUgQ1JDLCBwb3N0LWNvbmRpdGlvbmVkLiAqLworICAgIHJldHVybiBjcmMgXiAweGZmZmZmZmZmOworfQorCisjZWxzZQorCisjaWZkZWYgVworCisvKgorICBSZXR1cm4gdGhlIENSQyBvZiB0aGUgVyBieXRlcyBpbiB0aGUgd29yZF90IGRhdGEsIHRha2luZyB0aGUKKyAgbGVhc3Qtc2lnbmlmaWNhbnQgYnl0ZSBvZiB0aGUgd29yZCBhcyB0aGUgZmlyc3QgYnl0ZSBvZiBkYXRhLCB3aXRob3V0IGFueSBwcmUKKyAgb3IgcG9zdCBjb25kaXRpb25pbmcuIFRoaXMgaXMgdXNlZCB0byBjb21iaW5lIHRoZSBDUkNzIG9mIGVhY2ggYnJhaWQuCisgKi8KK2xvY2FsIHpfY3JjX3QgY3JjX3dvcmQoCisgICAgel93b3JkX3QgZGF0YSkKK3sKKyAgICBpbnQgazsKKyAgICBmb3IgKGsgPSAwOyBrIDwgVzsgaysrKQorICAgICAgICBkYXRhID0gKGRhdGEgPj4gOCkgXiBjcmNfdGFibGVbZGF0YSAmIDB4ZmZdOworICAgIHJldHVybiAoel9jcmNfdClkYXRhOworfQorCitsb2NhbCB6X3dvcmRfdCBjcmNfd29yZF9iaWcoCisgICAgel93b3JkX3QgZGF0YSkKK3sKKyAgICBpbnQgazsKKyAgICBmb3IgKGsgPSAwOyBrIDwgVzsgaysrKQorICAgICAgICBkYXRhID0gKGRhdGEgPDwgOCkgXgorICAgICAgICAgICAgY3JjX2JpZ190YWJsZVsoZGF0YSA+PiAoKFcgLSAxKSA8PCAzKSkgJiAweGZmXTsKKyAgICByZXR1cm4gZGF0YTsKK30KKworI2VuZGlmCisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK3Vuc2lnbmVkIGxvbmcgWkVYUE9SVCBjcmMzMl96KAorICAgIHVuc2lnbmVkIGxvbmcgY3JjLAorICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICpidWYsCisgICAgel9zaXplX3QgbGVuKQoreworICAgIC8qIFJldHVybiBpbml0aWFsIENSQywgaWYgcmVxdWVzdGVkLiAqLworICAgIGlmIChidWYgPT0gWl9OVUxMKSByZXR1cm4gMDsKKworI2lmZGVmIERZTkFNSUNfQ1JDX1RBQkxFCisgICAgb25jZSgmbWFkZSwgbWFrZV9jcmNfdGFibGUpOworI2VuZGlmIC8qIERZTkFNSUNfQ1JDX1RBQkxFICovCisKKyAgICAvKiBQcmUtY29uZGl0aW9uIHRoZSBDUkMgKi8KKyAgICBjcmMgPSAofmNyYykgJiAweGZmZmZmZmZmOworCisjaWZkZWYgVworCisgICAgLyogSWYgcHJvdmlkZWQgZW5vdWdoIGJ5dGVzLCBkbyBhIGJyYWlkZWQgQ1JDIGNhbGN1bGF0aW9uLiAqLworICAgIGlmIChsZW4gPj0gTiAqIFcgKyBXIC0gMSkgeworICAgICAgICB6X3NpemVfdCBibGtzOworICAgICAgICB6X3dvcmRfdCBjb25zdCAqd29yZHM7CisgICAgICAgIHVuc2lnbmVkIGVuZGlhbjsKKyAgICAgICAgaW50IGs7CisKKyAgICAgICAgLyogQ29tcHV0ZSB0aGUgQ1JDIHVwIHRvIGEgel93b3JkX3QgYm91bmRhcnkuICovCisgICAgICAgIHdoaWxlIChsZW4gJiYgKCh6X3NpemVfdClidWYgJiAoVyAtIDEpKSAhPSAwKSB7CisgICAgICAgICAgICBsZW4tLTsKKyAgICAgICAgICAgIGNyYyA9IChjcmMgPj4gOCkgXiBjcmNfdGFibGVbKGNyYyBeICpidWYrKykgJiAweGZmXTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIENvbXB1dGUgdGhlIENSQyBvbiBhcyBtYW55IE4gel93b3JkX3QgYmxvY2tzIGFzIGFyZSBhdmFpbGFibGUuICovCisgICAgICAgIGJsa3MgPSBsZW4gLyAoTiAqIFcpOworICAgICAgICBsZW4gLT0gYmxrcyAqIE4gKiBXOworICAgICAgICB3b3JkcyA9ICh6X3dvcmRfdCBjb25zdCAqKWJ1ZjsKKworICAgICAgICAvKiBEbyBlbmRpYW4gY2hlY2sgYXQgZXhlY3V0aW9uIHRpbWUgaW5zdGVhZCBvZiBjb21waWxlIHRpbWUsIHNpbmNlIEFSTQorICAgICAgICAgICBwcm9jZXNzb3JzIGNhbiBjaGFuZ2UgdGhlIGVuZGlhbmVzcyBhdCBleGVjdXRpb24gdGltZS4gSWYgdGhlCisgICAgICAgICAgIGNvbXBpbGVyIGtub3dzIHdoYXQgdGhlIGVuZGlhbmVzcyB3aWxsIGJlLCBpdCBjYW4gb3B0aW1pemUgb3V0IHRoZQorICAgICAgICAgICBjaGVjayBhbmQgdGhlIHVudXNlZCBicmFuY2guICovCisgICAgICAgIGVuZGlhbiA9IDE7CisgICAgICAgIGlmICgqKHVuc2lnbmVkIGNoYXIgKikmZW5kaWFuKSB7CisgICAgICAgICAgICAvKiBMaXR0bGUgZW5kaWFuLiAqLworCisgICAgICAgICAgICB6X2NyY190IGNyYzA7CisgICAgICAgICAgICB6X3dvcmRfdCB3b3JkMDsKKyNpZiBOID4gMQorICAgICAgICAgICAgel9jcmNfdCBjcmMxOworICAgICAgICAgICAgel93b3JkX3Qgd29yZDE7CisjaWYgTiA+IDIKKyAgICAgICAgICAgIHpfY3JjX3QgY3JjMjsKKyAgICAgICAgICAgIHpfd29yZF90IHdvcmQyOworI2lmIE4gPiAzCisgICAgICAgICAgICB6X2NyY190IGNyYzM7CisgICAgICAgICAgICB6X3dvcmRfdCB3b3JkMzsKKyNpZiBOID4gNAorICAgICAgICAgICAgel9jcmNfdCBjcmM0OworICAgICAgICAgICAgel93b3JkX3Qgd29yZDQ7CisjaWYgTiA+IDUKKyAgICAgICAgICAgIHpfY3JjX3QgY3JjNTsKKyAgICAgICAgICAgIHpfd29yZF90IHdvcmQ1OworI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKworICAgICAgICAgICAgLyogSW5pdGlhbGl6ZSB0aGUgQ1JDIGZvciBlYWNoIGJyYWlkLiAqLworICAgICAgICAgICAgY3JjMCA9IGNyYzsKKyNpZiBOID4gMQorICAgICAgICAgICAgY3JjMSA9IDA7CisjaWYgTiA+IDIKKyAgICAgICAgICAgIGNyYzIgPSAwOworI2lmIE4gPiAzCisgICAgICAgICAgICBjcmMzID0gMDsKKyNpZiBOID4gNAorICAgICAgICAgICAgY3JjNCA9IDA7CisjaWYgTiA+IDUKKyAgICAgICAgICAgIGNyYzUgPSAwOworI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgUHJvY2VzcyB0aGUgZmlyc3QgYmxrcy0xIGJsb2NrcywgY29tcHV0aW5nIHRoZSBDUkNzIG9uIGVhY2ggYnJhaWQKKyAgICAgICAgICAgICAgaW5kZXBlbmRlbnRseS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgd2hpbGUgKC0tYmxrcykgeworICAgICAgICAgICAgICAgIC8qIExvYWQgdGhlIHdvcmQgZm9yIGVhY2ggYnJhaWQgaW50byByZWdpc3RlcnMuICovCisgICAgICAgICAgICAgICAgd29yZDAgPSBjcmMwIF4gd29yZHNbMF07CisjaWYgTiA+IDEKKyAgICAgICAgICAgICAgICB3b3JkMSA9IGNyYzEgXiB3b3Jkc1sxXTsKKyNpZiBOID4gMgorICAgICAgICAgICAgICAgIHdvcmQyID0gY3JjMiBeIHdvcmRzWzJdOworI2lmIE4gPiAzCisgICAgICAgICAgICAgICAgd29yZDMgPSBjcmMzIF4gd29yZHNbM107CisjaWYgTiA+IDQKKyAgICAgICAgICAgICAgICB3b3JkNCA9IGNyYzQgXiB3b3Jkc1s0XTsKKyNpZiBOID4gNQorICAgICAgICAgICAgICAgIHdvcmQ1ID0gY3JjNSBeIHdvcmRzWzVdOworI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKyAgICAgICAgICAgICAgICB3b3JkcyArPSBOOworCisgICAgICAgICAgICAgICAgLyogQ29tcHV0ZSBhbmQgdXBkYXRlIHRoZSBDUkMgZm9yIGVhY2ggd29yZC4gVGhlIGxvb3Agc2hvdWxkCisgICAgICAgICAgICAgICAgICAgZ2V0IHVucm9sbGVkLiAqLworICAgICAgICAgICAgICAgIGNyYzAgPSBjcmNfYnJhaWRfdGFibGVbMF1bd29yZDAgJiAweGZmXTsKKyNpZiBOID4gMQorICAgICAgICAgICAgICAgIGNyYzEgPSBjcmNfYnJhaWRfdGFibGVbMF1bd29yZDEgJiAweGZmXTsKKyNpZiBOID4gMgorICAgICAgICAgICAgICAgIGNyYzIgPSBjcmNfYnJhaWRfdGFibGVbMF1bd29yZDIgJiAweGZmXTsKKyNpZiBOID4gMworICAgICAgICAgICAgICAgIGNyYzMgPSBjcmNfYnJhaWRfdGFibGVbMF1bd29yZDMgJiAweGZmXTsKKyNpZiBOID4gNAorICAgICAgICAgICAgICAgIGNyYzQgPSBjcmNfYnJhaWRfdGFibGVbMF1bd29yZDQgJiAweGZmXTsKKyNpZiBOID4gNQorICAgICAgICAgICAgICAgIGNyYzUgPSBjcmNfYnJhaWRfdGFibGVbMF1bd29yZDUgJiAweGZmXTsKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisgICAgICAgICAgICAgICAgZm9yIChrID0gMTsgayA8IFc7IGsrKykgeworICAgICAgICAgICAgICAgICAgICBjcmMwIF49IGNyY19icmFpZF90YWJsZVtrXVsod29yZDAgPj4gKGsgPDwgMykpICYgMHhmZl07CisjaWYgTiA+IDEKKyAgICAgICAgICAgICAgICAgICAgY3JjMSBePSBjcmNfYnJhaWRfdGFibGVba11bKHdvcmQxID4+IChrIDw8IDMpKSAmIDB4ZmZdOworI2lmIE4gPiAyCisgICAgICAgICAgICAgICAgICAgIGNyYzIgXj0gY3JjX2JyYWlkX3RhYmxlW2tdWyh3b3JkMiA+PiAoayA8PCAzKSkgJiAweGZmXTsKKyNpZiBOID4gMworICAgICAgICAgICAgICAgICAgICBjcmMzIF49IGNyY19icmFpZF90YWJsZVtrXVsod29yZDMgPj4gKGsgPDwgMykpICYgMHhmZl07CisjaWYgTiA+IDQKKyAgICAgICAgICAgICAgICAgICAgY3JjNCBePSBjcmNfYnJhaWRfdGFibGVba11bKHdvcmQ0ID4+IChrIDw8IDMpKSAmIDB4ZmZdOworI2lmIE4gPiA1CisgICAgICAgICAgICAgICAgICAgIGNyYzUgXj0gY3JjX2JyYWlkX3RhYmxlW2tdWyh3b3JkNSA+PiAoayA8PCAzKSkgJiAweGZmXTsKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICBQcm9jZXNzIHRoZSBsYXN0IGJsb2NrLCBjb21iaW5pbmcgdGhlIENSQ3Mgb2YgdGhlIE4gYnJhaWRzIGF0IHRoZQorICAgICAgICAgICAgICBzYW1lIHRpbWUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGNyYyA9IGNyY193b3JkKGNyYzAgXiB3b3Jkc1swXSk7CisjaWYgTiA+IDEKKyAgICAgICAgICAgIGNyYyA9IGNyY193b3JkKGNyYzEgXiB3b3Jkc1sxXSBeIGNyYyk7CisjaWYgTiA+IDIKKyAgICAgICAgICAgIGNyYyA9IGNyY193b3JkKGNyYzIgXiB3b3Jkc1syXSBeIGNyYyk7CisjaWYgTiA+IDMKKyAgICAgICAgICAgIGNyYyA9IGNyY193b3JkKGNyYzMgXiB3b3Jkc1szXSBeIGNyYyk7CisjaWYgTiA+IDQKKyAgICAgICAgICAgIGNyYyA9IGNyY193b3JkKGNyYzQgXiB3b3Jkc1s0XSBeIGNyYyk7CisjaWYgTiA+IDUKKyAgICAgICAgICAgIGNyYyA9IGNyY193b3JkKGNyYzUgXiB3b3Jkc1s1XSBeIGNyYyk7CisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorICAgICAgICAgICAgd29yZHMgKz0gTjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIEJpZyBlbmRpYW4uICovCisKKyAgICAgICAgICAgIHpfd29yZF90IGNyYzAsIHdvcmQwLCBjb21iOworI2lmIE4gPiAxCisgICAgICAgICAgICB6X3dvcmRfdCBjcmMxLCB3b3JkMTsKKyNpZiBOID4gMgorICAgICAgICAgICAgel93b3JkX3QgY3JjMiwgd29yZDI7CisjaWYgTiA+IDMKKyAgICAgICAgICAgIHpfd29yZF90IGNyYzMsIHdvcmQzOworI2lmIE4gPiA0CisgICAgICAgICAgICB6X3dvcmRfdCBjcmM0LCB3b3JkNDsKKyNpZiBOID4gNQorICAgICAgICAgICAgel93b3JkX3QgY3JjNSwgd29yZDU7CisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorCisgICAgICAgICAgICAvKiBJbml0aWFsaXplIHRoZSBDUkMgZm9yIGVhY2ggYnJhaWQuICovCisgICAgICAgICAgICBjcmMwID0gYnl0ZV9zd2FwKGNyYyk7CisjaWYgTiA+IDEKKyAgICAgICAgICAgIGNyYzEgPSAwOworI2lmIE4gPiAyCisgICAgICAgICAgICBjcmMyID0gMDsKKyNpZiBOID4gMworICAgICAgICAgICAgY3JjMyA9IDA7CisjaWYgTiA+IDQKKyAgICAgICAgICAgIGNyYzQgPSAwOworI2lmIE4gPiA1CisgICAgICAgICAgICBjcmM1ID0gMDsKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgIFByb2Nlc3MgdGhlIGZpcnN0IGJsa3MtMSBibG9ja3MsIGNvbXB1dGluZyB0aGUgQ1JDcyBvbiBlYWNoIGJyYWlkCisgICAgICAgICAgICAgIGluZGVwZW5kZW50bHkuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHdoaWxlICgtLWJsa3MpIHsKKyAgICAgICAgICAgICAgICAvKiBMb2FkIHRoZSB3b3JkIGZvciBlYWNoIGJyYWlkIGludG8gcmVnaXN0ZXJzLiAqLworICAgICAgICAgICAgICAgIHdvcmQwID0gY3JjMCBeIHdvcmRzWzBdOworI2lmIE4gPiAxCisgICAgICAgICAgICAgICAgd29yZDEgPSBjcmMxIF4gd29yZHNbMV07CisjaWYgTiA+IDIKKyAgICAgICAgICAgICAgICB3b3JkMiA9IGNyYzIgXiB3b3Jkc1syXTsKKyNpZiBOID4gMworICAgICAgICAgICAgICAgIHdvcmQzID0gY3JjMyBeIHdvcmRzWzNdOworI2lmIE4gPiA0CisgICAgICAgICAgICAgICAgd29yZDQgPSBjcmM0IF4gd29yZHNbNF07CisjaWYgTiA+IDUKKyAgICAgICAgICAgICAgICB3b3JkNSA9IGNyYzUgXiB3b3Jkc1s1XTsKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisgICAgICAgICAgICAgICAgd29yZHMgKz0gTjsKKworICAgICAgICAgICAgICAgIC8qIENvbXB1dGUgYW5kIHVwZGF0ZSB0aGUgQ1JDIGZvciBlYWNoIHdvcmQuIFRoZSBsb29wIHNob3VsZAorICAgICAgICAgICAgICAgICAgIGdldCB1bnJvbGxlZC4gKi8KKyAgICAgICAgICAgICAgICBjcmMwID0gY3JjX2JyYWlkX2JpZ190YWJsZVswXVt3b3JkMCAmIDB4ZmZdOworI2lmIE4gPiAxCisgICAgICAgICAgICAgICAgY3JjMSA9IGNyY19icmFpZF9iaWdfdGFibGVbMF1bd29yZDEgJiAweGZmXTsKKyNpZiBOID4gMgorICAgICAgICAgICAgICAgIGNyYzIgPSBjcmNfYnJhaWRfYmlnX3RhYmxlWzBdW3dvcmQyICYgMHhmZl07CisjaWYgTiA+IDMKKyAgICAgICAgICAgICAgICBjcmMzID0gY3JjX2JyYWlkX2JpZ190YWJsZVswXVt3b3JkMyAmIDB4ZmZdOworI2lmIE4gPiA0CisgICAgICAgICAgICAgICAgY3JjNCA9IGNyY19icmFpZF9iaWdfdGFibGVbMF1bd29yZDQgJiAweGZmXTsKKyNpZiBOID4gNQorICAgICAgICAgICAgICAgIGNyYzUgPSBjcmNfYnJhaWRfYmlnX3RhYmxlWzBdW3dvcmQ1ICYgMHhmZl07CisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorICAgICAgICAgICAgICAgIGZvciAoayA9IDE7IGsgPCBXOyBrKyspIHsKKyAgICAgICAgICAgICAgICAgICAgY3JjMCBePSBjcmNfYnJhaWRfYmlnX3RhYmxlW2tdWyh3b3JkMCA+PiAoayA8PCAzKSkgJiAweGZmXTsKKyNpZiBOID4gMQorICAgICAgICAgICAgICAgICAgICBjcmMxIF49IGNyY19icmFpZF9iaWdfdGFibGVba11bKHdvcmQxID4+IChrIDw8IDMpKSAmIDB4ZmZdOworI2lmIE4gPiAyCisgICAgICAgICAgICAgICAgICAgIGNyYzIgXj0gY3JjX2JyYWlkX2JpZ190YWJsZVtrXVsod29yZDIgPj4gKGsgPDwgMykpICYgMHhmZl07CisjaWYgTiA+IDMKKyAgICAgICAgICAgICAgICAgICAgY3JjMyBePSBjcmNfYnJhaWRfYmlnX3RhYmxlW2tdWyh3b3JkMyA+PiAoayA8PCAzKSkgJiAweGZmXTsKKyNpZiBOID4gNAorICAgICAgICAgICAgICAgICAgICBjcmM0IF49IGNyY19icmFpZF9iaWdfdGFibGVba11bKHdvcmQ0ID4+IChrIDw8IDMpKSAmIDB4ZmZdOworI2lmIE4gPiA1CisgICAgICAgICAgICAgICAgICAgIGNyYzUgXj0gY3JjX2JyYWlkX2JpZ190YWJsZVtrXVsod29yZDUgPj4gKGsgPDwgMykpICYgMHhmZl07CisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgUHJvY2VzcyB0aGUgbGFzdCBibG9jaywgY29tYmluaW5nIHRoZSBDUkNzIG9mIHRoZSBOIGJyYWlkcyBhdCB0aGUKKyAgICAgICAgICAgICAgc2FtZSB0aW1lLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBjb21iID0gY3JjX3dvcmRfYmlnKGNyYzAgXiB3b3Jkc1swXSk7CisjaWYgTiA+IDEKKyAgICAgICAgICAgIGNvbWIgPSBjcmNfd29yZF9iaWcoY3JjMSBeIHdvcmRzWzFdIF4gY29tYik7CisjaWYgTiA+IDIKKyAgICAgICAgICAgIGNvbWIgPSBjcmNfd29yZF9iaWcoY3JjMiBeIHdvcmRzWzJdIF4gY29tYik7CisjaWYgTiA+IDMKKyAgICAgICAgICAgIGNvbWIgPSBjcmNfd29yZF9iaWcoY3JjMyBeIHdvcmRzWzNdIF4gY29tYik7CisjaWYgTiA+IDQKKyAgICAgICAgICAgIGNvbWIgPSBjcmNfd29yZF9iaWcoY3JjNCBeIHdvcmRzWzRdIF4gY29tYik7CisjaWYgTiA+IDUKKyAgICAgICAgICAgIGNvbWIgPSBjcmNfd29yZF9iaWcoY3JjNSBeIHdvcmRzWzVdIF4gY29tYik7CisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorICAgICAgICAgICAgd29yZHMgKz0gTjsKKyAgICAgICAgICAgIGNyYyA9IGJ5dGVfc3dhcChjb21iKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAgVXBkYXRlIHRoZSBwb2ludGVyIHRvIHRoZSByZW1haW5pbmcgYnl0ZXMgdG8gcHJvY2Vzcy4KKyAgICAgICAgICovCisgICAgICAgIGJ1ZiA9ICh1bnNpZ25lZCBjaGFyIGNvbnN0ICopd29yZHM7CisgICAgfQorCisjZW5kaWYgLyogVyAqLworCisgICAgLyogQ29tcGxldGUgdGhlIGNvbXB1dGF0aW9uIG9mIHRoZSBDUkMgb24gYW55IHJlbWFpbmluZyBieXRlcy4gKi8KKyAgICB3aGlsZSAobGVuID49IDgpIHsKKyAgICAgICAgbGVuIC09IDg7CisgICAgICAgIGNyYyA9IChjcmMgPj4gOCkgXiBjcmNfdGFibGVbKGNyYyBeICpidWYrKykgJiAweGZmXTsKKyAgICAgICAgY3JjID0gKGNyYyA+PiA4KSBeIGNyY190YWJsZVsoY3JjIF4gKmJ1ZisrKSAmIDB4ZmZdOworICAgICAgICBjcmMgPSAoY3JjID4+IDgpIF4gY3JjX3RhYmxlWyhjcmMgXiAqYnVmKyspICYgMHhmZl07CisgICAgICAgIGNyYyA9IChjcmMgPj4gOCkgXiBjcmNfdGFibGVbKGNyYyBeICpidWYrKykgJiAweGZmXTsKKyAgICAgICAgY3JjID0gKGNyYyA+PiA4KSBeIGNyY190YWJsZVsoY3JjIF4gKmJ1ZisrKSAmIDB4ZmZdOworICAgICAgICBjcmMgPSAoY3JjID4+IDgpIF4gY3JjX3RhYmxlWyhjcmMgXiAqYnVmKyspICYgMHhmZl07CisgICAgICAgIGNyYyA9IChjcmMgPj4gOCkgXiBjcmNfdGFibGVbKGNyYyBeICpidWYrKykgJiAweGZmXTsKKyAgICAgICAgY3JjID0gKGNyYyA+PiA4KSBeIGNyY190YWJsZVsoY3JjIF4gKmJ1ZisrKSAmIDB4ZmZdOworICAgIH0KKyAgICB3aGlsZSAobGVuKSB7CisgICAgICAgIGxlbi0tOworICAgICAgICBjcmMgPSAoY3JjID4+IDgpIF4gY3JjX3RhYmxlWyhjcmMgXiAqYnVmKyspICYgMHhmZl07CisgICAgfQorCisgICAgLyogUmV0dXJuIHRoZSBDUkMsIHBvc3QtY29uZGl0aW9uZWQuICovCisgICAgcmV0dXJuIGNyYyBeIDB4ZmZmZmZmZmY7Cit9CisKKyNlbmRpZgorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCit1bnNpZ25lZCBsb25nIFpFWFBPUlQgY3JjMzIoCisgICAgdW5zaWduZWQgbG9uZyBjcmMsCisgICAgY29uc3QgdW5zaWduZWQgY2hhciBGQVIgKmJ1ZiwKKyAgICB1SW50IGxlbikKK3sKKyAgICByZXR1cm4gY3JjMzJfeihjcmMsIGJ1ZiwgbGVuKTsKK30KKworI2lmbmRlZiBaX0ZSRUVUWVBFCisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK3VMb25nIFpFWFBPUlQgY3JjMzJfY29tYmluZTY0KAorICAgIHVMb25nIGNyYzEsCisgICAgdUxvbmcgY3JjMiwKKyAgICB6X29mZjY0X3QgbGVuMikKK3sKKyNpZmRlZiBEWU5BTUlDX0NSQ19UQUJMRQorICAgIG9uY2UoJm1hZGUsIG1ha2VfY3JjX3RhYmxlKTsKKyNlbmRpZiAvKiBEWU5BTUlDX0NSQ19UQUJMRSAqLworICAgIHJldHVybiBtdWx0bW9kcCh4Mm5tb2RwKGxlbjIsIDMpLCBjcmMxKSBeIChjcmMyICYgMHhmZmZmZmZmZik7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK3VMb25nIFpFWFBPUlQgY3JjMzJfY29tYmluZSgKKyAgICB1TG9uZyBjcmMxLAorICAgIHVMb25nIGNyYzIsCisgICAgel9vZmZfdCBsZW4yKQoreworICAgIHJldHVybiBjcmMzMl9jb21iaW5lNjQoY3JjMSwgY3JjMiwgKHpfb2ZmNjRfdClsZW4yKTsKK30KKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwordUxvbmcgWkVYUE9SVCBjcmMzMl9jb21iaW5lX2dlbjY0KAorICAgIHpfb2ZmNjRfdCBsZW4yKQoreworI2lmZGVmIERZTkFNSUNfQ1JDX1RBQkxFCisgICAgb25jZSgmbWFkZSwgbWFrZV9jcmNfdGFibGUpOworI2VuZGlmIC8qIERZTkFNSUNfQ1JDX1RBQkxFICovCisgICAgcmV0dXJuIHgybm1vZHAobGVuMiwgMyk7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK3VMb25nIFpFWFBPUlQgY3JjMzJfY29tYmluZV9nZW4oCisgICAgel9vZmZfdCBsZW4yKQoreworICAgIHJldHVybiBjcmMzMl9jb21iaW5lX2dlbjY0KCh6X29mZjY0X3QpbGVuMik7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK3VMb25nIFpFWFBPUlQgY3JjMzJfY29tYmluZV9vcCgKKyAgICB1TG9uZyBjcmMxLAorICAgIHVMb25nIGNyYzIsCisgICAgdUxvbmcgb3ApCit7CisgICAgcmV0dXJuIG11bHRtb2RwKG9wLCBjcmMxKSBeIChjcmMyICYgMHhmZmZmZmZmZik7Cit9CisKKyNlbmRpZiAgLyogWl9GUkVFVFlQRSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2d6aXAvY3JjMzIuaCBiL3NyYy9nemlwL2NyYzMyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM3ZGY2OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9nemlwL2NyYzMyLmgKQEAgLTAsMCArMSw5NDQ2IEBACisvKiBjcmMzMi5oIC0tIHRhYmxlcyBmb3IgcmFwaWQgQ1JDIGNhbGN1bGF0aW9uCisgKiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBjcmMzMi5jCisgKi8KKworbG9jYWwgY29uc3Qgel9jcmNfdCBGQVIgY3JjX3RhYmxlW10gPSB7CisgICAgMHgwMDAwMDAwMCwgMHg3NzA3MzA5NiwgMHhlZTBlNjEyYywgMHg5OTA5NTFiYSwgMHgwNzZkYzQxOSwKKyAgICAweDcwNmFmNDhmLCAweGU5NjNhNTM1LCAweDllNjQ5NWEzLCAweDBlZGI4ODMyLCAweDc5ZGNiOGE0LAorICAgIDB4ZTBkNWU5MWUsIDB4OTdkMmQ5ODgsIDB4MDliNjRjMmIsIDB4N2ViMTdjYmQsIDB4ZTdiODJkMDcsCisgICAgMHg5MGJmMWQ5MSwgMHgxZGI3MTA2NCwgMHg2YWIwMjBmMiwgMHhmM2I5NzE0OCwgMHg4NGJlNDFkZSwKKyAgICAweDFhZGFkNDdkLCAweDZkZGRlNGViLCAweGY0ZDRiNTUxLCAweDgzZDM4NWM3LCAweDEzNmM5ODU2LAorICAgIDB4NjQ2YmE4YzAsIDB4ZmQ2MmY5N2EsIDB4OGE2NWM5ZWMsIDB4MTQwMTVjNGYsIDB4NjMwNjZjZDksCisgICAgMHhmYTBmM2Q2MywgMHg4ZDA4MGRmNSwgMHgzYjZlMjBjOCwgMHg0YzY5MTA1ZSwgMHhkNTYwNDFlNCwKKyAgICAweGEyNjc3MTcyLCAweDNjMDNlNGQxLCAweDRiMDRkNDQ3LCAweGQyMGQ4NWZkLCAweGE1MGFiNTZiLAorICAgIDB4MzViNWE4ZmEsIDB4NDJiMjk4NmMsIDB4ZGJiYmM5ZDYsIDB4YWNiY2Y5NDAsIDB4MzJkODZjZTMsCisgICAgMHg0NWRmNWM3NSwgMHhkY2Q2MGRjZiwgMHhhYmQxM2Q1OSwgMHgyNmQ5MzBhYywgMHg1MWRlMDAzYSwKKyAgICAweGM4ZDc1MTgwLCAweGJmZDA2MTE2LCAweDIxYjRmNGI1LCAweDU2YjNjNDIzLCAweGNmYmE5NTk5LAorICAgIDB4YjhiZGE1MGYsIDB4MjgwMmI4OWUsIDB4NWYwNTg4MDgsIDB4YzYwY2Q5YjIsIDB4YjEwYmU5MjQsCisgICAgMHgyZjZmN2M4NywgMHg1ODY4NGMxMSwgMHhjMTYxMWRhYiwgMHhiNjY2MmQzZCwgMHg3NmRjNDE5MCwKKyAgICAweDAxZGI3MTA2LCAweDk4ZDIyMGJjLCAweGVmZDUxMDJhLCAweDcxYjE4NTg5LCAweDA2YjZiNTFmLAorICAgIDB4OWZiZmU0YTUsIDB4ZThiOGQ0MzMsIDB4NzgwN2M5YTIsIDB4MGYwMGY5MzQsIDB4OTYwOWE4OGUsCisgICAgMHhlMTBlOTgxOCwgMHg3ZjZhMGRiYiwgMHgwODZkM2QyZCwgMHg5MTY0NmM5NywgMHhlNjYzNWMwMSwKKyAgICAweDZiNmI1MWY0LCAweDFjNmM2MTYyLCAweDg1NjUzMGQ4LCAweGYyNjIwMDRlLCAweDZjMDY5NWVkLAorICAgIDB4MWIwMWE1N2IsIDB4ODIwOGY0YzEsIDB4ZjUwZmM0NTcsIDB4NjViMGQ5YzYsIDB4MTJiN2U5NTAsCisgICAgMHg4YmJlYjhlYSwgMHhmY2I5ODg3YywgMHg2MmRkMWRkZiwgMHgxNWRhMmQ0OSwgMHg4Y2QzN2NmMywKKyAgICAweGZiZDQ0YzY1LCAweDRkYjI2MTU4LCAweDNhYjU1MWNlLCAweGEzYmMwMDc0LCAweGQ0YmIzMGUyLAorICAgIDB4NGFkZmE1NDEsIDB4M2RkODk1ZDcsIDB4YTRkMWM0NmQsIDB4ZDNkNmY0ZmIsIDB4NDM2OWU5NmEsCisgICAgMHgzNDZlZDlmYywgMHhhZDY3ODg0NiwgMHhkYTYwYjhkMCwgMHg0NDA0MmQ3MywgMHgzMzAzMWRlNSwKKyAgICAweGFhMGE0YzVmLCAweGRkMGQ3Y2M5LCAweDUwMDU3MTNjLCAweDI3MDI0MWFhLCAweGJlMGIxMDEwLAorICAgIDB4YzkwYzIwODYsIDB4NTc2OGI1MjUsIDB4MjA2Zjg1YjMsIDB4Yjk2NmQ0MDksIDB4Y2U2MWU0OWYsCisgICAgMHg1ZWRlZjkwZSwgMHgyOWQ5Yzk5OCwgMHhiMGQwOTgyMiwgMHhjN2Q3YThiNCwgMHg1OWIzM2QxNywKKyAgICAweDJlYjQwZDgxLCAweGI3YmQ1YzNiLCAweGMwYmE2Y2FkLCAweGVkYjg4MzIwLCAweDlhYmZiM2I2LAorICAgIDB4MDNiNmUyMGMsIDB4NzRiMWQyOWEsIDB4ZWFkNTQ3MzksIDB4OWRkMjc3YWYsIDB4MDRkYjI2MTUsCisgICAgMHg3M2RjMTY4MywgMHhlMzYzMGIxMiwgMHg5NDY0M2I4NCwgMHgwZDZkNmEzZSwgMHg3YTZhNWFhOCwKKyAgICAweGU0MGVjZjBiLCAweDkzMDlmZjlkLCAweDBhMDBhZTI3LCAweDdkMDc5ZWIxLCAweGYwMGY5MzQ0LAorICAgIDB4ODcwOGEzZDIsIDB4MWUwMWYyNjgsIDB4NjkwNmMyZmUsIDB4Zjc2MjU3NWQsIDB4ODA2NTY3Y2IsCisgICAgMHgxOTZjMzY3MSwgMHg2ZTZiMDZlNywgMHhmZWQ0MWI3NiwgMHg4OWQzMmJlMCwgMHgxMGRhN2E1YSwKKyAgICAweDY3ZGQ0YWNjLCAweGY5YjlkZjZmLCAweDhlYmVlZmY5LCAweDE3YjdiZTQzLCAweDYwYjA4ZWQ1LAorICAgIDB4ZDZkNmEzZTgsIDB4YTFkMTkzN2UsIDB4MzhkOGMyYzQsIDB4NGZkZmYyNTIsIDB4ZDFiYjY3ZjEsCisgICAgMHhhNmJjNTc2NywgMHgzZmI1MDZkZCwgMHg0OGIyMzY0YiwgMHhkODBkMmJkYSwgMHhhZjBhMWI0YywKKyAgICAweDM2MDM0YWY2LCAweDQxMDQ3YTYwLCAweGRmNjBlZmMzLCAweGE4NjdkZjU1LCAweDMxNmU4ZWVmLAorICAgIDB4NDY2OWJlNzksIDB4Y2I2MWIzOGMsIDB4YmM2NjgzMWEsIDB4MjU2ZmQyYTAsIDB4NTI2OGUyMzYsCisgICAgMHhjYzBjNzc5NSwgMHhiYjBiNDcwMywgMHgyMjAyMTZiOSwgMHg1NTA1MjYyZiwgMHhjNWJhM2JiZSwKKyAgICAweGIyYmQwYjI4LCAweDJiYjQ1YTkyLCAweDVjYjM2YTA0LCAweGMyZDdmZmE3LCAweGI1ZDBjZjMxLAorICAgIDB4MmNkOTllOGIsIDB4NWJkZWFlMWQsIDB4OWI2NGMyYjAsIDB4ZWM2M2YyMjYsIDB4NzU2YWEzOWMsCisgICAgMHgwMjZkOTMwYSwgMHg5YzA5MDZhOSwgMHhlYjBlMzYzZiwgMHg3MjA3Njc4NSwgMHgwNTAwNTcxMywKKyAgICAweDk1YmY0YTgyLCAweGUyYjg3YTE0LCAweDdiYjEyYmFlLCAweDBjYjYxYjM4LCAweDkyZDI4ZTliLAorICAgIDB4ZTVkNWJlMGQsIDB4N2NkY2VmYjcsIDB4MGJkYmRmMjEsIDB4ODZkM2QyZDQsIDB4ZjFkNGUyNDIsCisgICAgMHg2OGRkYjNmOCwgMHgxZmRhODM2ZSwgMHg4MWJlMTZjZCwgMHhmNmI5MjY1YiwgMHg2ZmIwNzdlMSwKKyAgICAweDE4Yjc0Nzc3LCAweDg4MDg1YWU2LCAweGZmMGY2YTcwLCAweDY2MDYzYmNhLCAweDExMDEwYjVjLAorICAgIDB4OGY2NTllZmYsIDB4Zjg2MmFlNjksIDB4NjE2YmZmZDMsIDB4MTY2Y2NmNDUsIDB4YTAwYWUyNzgsCisgICAgMHhkNzBkZDJlZSwgMHg0ZTA0ODM1NCwgMHgzOTAzYjNjMiwgMHhhNzY3MjY2MSwgMHhkMDYwMTZmNywKKyAgICAweDQ5Njk0NzRkLCAweDNlNmU3N2RiLCAweGFlZDE2YTRhLCAweGQ5ZDY1YWRjLCAweDQwZGYwYjY2LAorICAgIDB4MzdkODNiZjAsIDB4YTliY2FlNTMsIDB4ZGViYjllYzUsIDB4NDdiMmNmN2YsIDB4MzBiNWZmZTksCisgICAgMHhiZGJkZjIxYywgMHhjYWJhYzI4YSwgMHg1M2IzOTMzMCwgMHgyNGI0YTNhNiwgMHhiYWQwMzYwNSwKKyAgICAweGNkZDcwNjkzLCAweDU0ZGU1NzI5LCAweDIzZDk2N2JmLCAweGIzNjY3YTJlLCAweGM0NjE0YWI4LAorICAgIDB4NWQ2ODFiMDIsIDB4MmE2ZjJiOTQsIDB4YjQwYmJlMzcsIDB4YzMwYzhlYTEsIDB4NWEwNWRmMWIsCisgICAgMHgyZDAyZWY4ZH07CisKKyNpZmRlZiBXCisKKyNpZiBXID09IDgKKworbG9jYWwgY29uc3Qgel93b3JkX3QgRkFSIGNyY19iaWdfdGFibGVbXSA9IHsKKyAgICAweDAwMDAwMDAwMDAwMDAwMDAsIDB4OTYzMDA3NzcwMDAwMDAwMCwgMHgyYzYxMGVlZTAwMDAwMDAwLAorICAgIDB4YmE1MTA5OTkwMDAwMDAwMCwgMHgxOWM0NmQwNzAwMDAwMDAwLCAweDhmZjQ2YTcwMDAwMDAwMDAsCisgICAgMHgzNWE1NjNlOTAwMDAwMDAwLCAweGEzOTU2NDllMDAwMDAwMDAsIDB4MzI4OGRiMGUwMDAwMDAwMCwKKyAgICAweGE0YjhkYzc5MDAwMDAwMDAsIDB4MWVlOWQ1ZTAwMDAwMDAwMCwgMHg4OGQ5ZDI5NzAwMDAwMDAwLAorICAgIDB4MmI0Y2I2MDkwMDAwMDAwMCwgMHhiZDdjYjE3ZTAwMDAwMDAwLCAweDA3MmRiOGU3MDAwMDAwMDAsCisgICAgMHg5MTFkYmY5MDAwMDAwMDAwLCAweDY0MTBiNzFkMDAwMDAwMDAsIDB4ZjIyMGIwNmEwMDAwMDAwMCwKKyAgICAweDQ4NzFiOWYzMDAwMDAwMDAsIDB4ZGU0MWJlODQwMDAwMDAwMCwgMHg3ZGQ0ZGExYTAwMDAwMDAwLAorICAgIDB4ZWJlNGRkNmQwMDAwMDAwMCwgMHg1MWI1ZDRmNDAwMDAwMDAwLCAweGM3ODVkMzgzMDAwMDAwMDAsCisgICAgMHg1Njk4NmMxMzAwMDAwMDAwLCAweGMwYTg2YjY0MDAwMDAwMDAsIDB4N2FmOTYyZmQwMDAwMDAwMCwKKyAgICAweGVjYzk2NThhMDAwMDAwMDAsIDB4NGY1YzAxMTQwMDAwMDAwMCwgMHhkOTZjMDY2MzAwMDAwMDAwLAorICAgIDB4NjMzZDBmZmEwMDAwMDAwMCwgMHhmNTBkMDg4ZDAwMDAwMDAwLCAweGM4MjA2ZTNiMDAwMDAwMDAsCisgICAgMHg1ZTEwNjk0YzAwMDAwMDAwLCAweGU0NDE2MGQ1MDAwMDAwMDAsIDB4NzI3MTY3YTIwMDAwMDAwMCwKKyAgICAweGQxZTQwMzNjMDAwMDAwMDAsIDB4NDdkNDA0NGIwMDAwMDAwMCwgMHhmZDg1MGRkMjAwMDAwMDAwLAorICAgIDB4NmJiNTBhYTUwMDAwMDAwMCwgMHhmYWE4YjUzNTAwMDAwMDAwLCAweDZjOThiMjQyMDAwMDAwMDAsCisgICAgMHhkNmM5YmJkYjAwMDAwMDAwLCAweDQwZjliY2FjMDAwMDAwMDAsIDB4ZTM2Y2Q4MzIwMDAwMDAwMCwKKyAgICAweDc1NWNkZjQ1MDAwMDAwMDAsIDB4Y2YwZGQ2ZGMwMDAwMDAwMCwgMHg1OTNkZDFhYjAwMDAwMDAwLAorICAgIDB4YWMzMGQ5MjYwMDAwMDAwMCwgMHgzYTAwZGU1MTAwMDAwMDAwLCAweDgwNTFkN2M4MDAwMDAwMDAsCisgICAgMHgxNjYxZDBiZjAwMDAwMDAwLCAweGI1ZjRiNDIxMDAwMDAwMDAsIDB4MjNjNGIzNTYwMDAwMDAwMCwKKyAgICAweDk5OTViYWNmMDAwMDAwMDAsIDB4MGZhNWJkYjgwMDAwMDAwMCwgMHg5ZWI4MDIyODAwMDAwMDAwLAorICAgIDB4MDg4ODA1NWYwMDAwMDAwMCwgMHhiMmQ5MGNjNjAwMDAwMDAwLCAweDI0ZTkwYmIxMDAwMDAwMDAsCisgICAgMHg4NzdjNmYyZjAwMDAwMDAwLCAweDExNGM2ODU4MDAwMDAwMDAsIDB4YWIxZDYxYzEwMDAwMDAwMCwKKyAgICAweDNkMmQ2NmI2MDAwMDAwMDAsIDB4OTA0MWRjNzYwMDAwMDAwMCwgMHgwNjcxZGIwMTAwMDAwMDAwLAorICAgIDB4YmMyMGQyOTgwMDAwMDAwMCwgMHgyYTEwZDVlZjAwMDAwMDAwLCAweDg5ODViMTcxMDAwMDAwMDAsCisgICAgMHgxZmI1YjYwNjAwMDAwMDAwLCAweGE1ZTRiZjlmMDAwMDAwMDAsIDB4MzNkNGI4ZTgwMDAwMDAwMCwKKyAgICAweGEyYzkwNzc4MDAwMDAwMDAsIDB4MzRmOTAwMGYwMDAwMDAwMCwgMHg4ZWE4MDk5NjAwMDAwMDAwLAorICAgIDB4MTg5ODBlZTEwMDAwMDAwMCwgMHhiYjBkNmE3ZjAwMDAwMDAwLCAweDJkM2Q2ZDA4MDAwMDAwMDAsCisgICAgMHg5NzZjNjQ5MTAwMDAwMDAwLCAweDAxNWM2M2U2MDAwMDAwMDAsIDB4ZjQ1MTZiNmIwMDAwMDAwMCwKKyAgICAweDYyNjE2YzFjMDAwMDAwMDAsIDB4ZDgzMDY1ODUwMDAwMDAwMCwgMHg0ZTAwNjJmMjAwMDAwMDAwLAorICAgIDB4ZWQ5NTA2NmMwMDAwMDAwMCwgMHg3YmE1MDExYjAwMDAwMDAwLCAweGMxZjQwODgyMDAwMDAwMDAsCisgICAgMHg1N2M0MGZmNTAwMDAwMDAwLCAweGM2ZDliMDY1MDAwMDAwMDAsIDB4NTBlOWI3MTIwMDAwMDAwMCwKKyAgICAweGVhYjhiZThiMDAwMDAwMDAsIDB4N2M4OGI5ZmMwMDAwMDAwMCwgMHhkZjFkZGQ2MjAwMDAwMDAwLAorICAgIDB4NDkyZGRhMTUwMDAwMDAwMCwgMHhmMzdjZDM4YzAwMDAwMDAwLCAweDY1NGNkNGZiMDAwMDAwMDAsCisgICAgMHg1ODYxYjI0ZDAwMDAwMDAwLCAweGNlNTFiNTNhMDAwMDAwMDAsIDB4NzQwMGJjYTMwMDAwMDAwMCwKKyAgICAweGUyMzBiYmQ0MDAwMDAwMDAsIDB4NDFhNWRmNGEwMDAwMDAwMCwgMHhkNzk1ZDgzZDAwMDAwMDAwLAorICAgIDB4NmRjNGQxYTQwMDAwMDAwMCwgMHhmYmY0ZDZkMzAwMDAwMDAwLCAweDZhZTk2OTQzMDAwMDAwMDAsCisgICAgMHhmY2Q5NmUzNDAwMDAwMDAwLCAweDQ2ODg2N2FkMDAwMDAwMDAsIDB4ZDBiODYwZGEwMDAwMDAwMCwKKyAgICAweDczMmQwNDQ0MDAwMDAwMDAsIDB4ZTUxZDAzMzMwMDAwMDAwMCwgMHg1ZjRjMGFhYTAwMDAwMDAwLAorICAgIDB4Yzk3YzBkZGQwMDAwMDAwMCwgMHgzYzcxMDU1MDAwMDAwMDAwLCAweGFhNDEwMjI3MDAwMDAwMDAsCisgICAgMHgxMDEwMGJiZTAwMDAwMDAwLCAweDg2MjAwY2M5MDAwMDAwMDAsIDB4MjViNTY4NTcwMDAwMDAwMCwKKyAgICAweGIzODU2ZjIwMDAwMDAwMDAsIDB4MDlkNDY2YjkwMDAwMDAwMCwgMHg5ZmU0NjFjZTAwMDAwMDAwLAorICAgIDB4MGVmOWRlNWUwMDAwMDAwMCwgMHg5OGM5ZDkyOTAwMDAwMDAwLCAweDIyOThkMGIwMDAwMDAwMDAsCisgICAgMHhiNGE4ZDdjNzAwMDAwMDAwLCAweDE3M2RiMzU5MDAwMDAwMDAsIDB4ODEwZGI0MmUwMDAwMDAwMCwKKyAgICAweDNiNWNiZGI3MDAwMDAwMDAsIDB4YWQ2Y2JhYzAwMDAwMDAwMCwgMHgyMDgzYjhlZDAwMDAwMDAwLAorICAgIDB4YjZiM2JmOWEwMDAwMDAwMCwgMHgwY2UyYjYwMzAwMDAwMDAwLCAweDlhZDJiMTc0MDAwMDAwMDAsCisgICAgMHgzOTQ3ZDVlYTAwMDAwMDAwLCAweGFmNzdkMjlkMDAwMDAwMDAsIDB4MTUyNmRiMDQwMDAwMDAwMCwKKyAgICAweDgzMTZkYzczMDAwMDAwMDAsIDB4MTIwYjYzZTMwMDAwMDAwMCwgMHg4NDNiNjQ5NDAwMDAwMDAwLAorICAgIDB4M2U2YTZkMGQwMDAwMDAwMCwgMHhhODVhNmE3YTAwMDAwMDAwLCAweDBiY2YwZWU0MDAwMDAwMDAsCisgICAgMHg5ZGZmMDk5MzAwMDAwMDAwLCAweDI3YWUwMDBhMDAwMDAwMDAsIDB4YjE5ZTA3N2QwMDAwMDAwMCwKKyAgICAweDQ0OTMwZmYwMDAwMDAwMDAsIDB4ZDJhMzA4ODcwMDAwMDAwMCwgMHg2OGYyMDExZTAwMDAwMDAwLAorICAgIDB4ZmVjMjA2NjkwMDAwMDAwMCwgMHg1ZDU3NjJmNzAwMDAwMDAwLCAweGNiNjc2NTgwMDAwMDAwMDAsCisgICAgMHg3MTM2NmMxOTAwMDAwMDAwLCAweGU3MDY2YjZlMDAwMDAwMDAsIDB4NzYxYmQ0ZmUwMDAwMDAwMCwKKyAgICAweGUwMmJkMzg5MDAwMDAwMDAsIDB4NWE3YWRhMTAwMDAwMDAwMCwgMHhjYzRhZGQ2NzAwMDAwMDAwLAorICAgIDB4NmZkZmI5ZjkwMDAwMDAwMCwgMHhmOWVmYmU4ZTAwMDAwMDAwLCAweDQzYmViNzE3MDAwMDAwMDAsCisgICAgMHhkNThlYjA2MDAwMDAwMDAwLCAweGU4YTNkNmQ2MDAwMDAwMDAsIDB4N2U5M2QxYTEwMDAwMDAwMCwKKyAgICAweGM0YzJkODM4MDAwMDAwMDAsIDB4NTJmMmRmNGYwMDAwMDAwMCwgMHhmMTY3YmJkMTAwMDAwMDAwLAorICAgIDB4Njc1N2JjYTYwMDAwMDAwMCwgMHhkZDA2YjUzZjAwMDAwMDAwLCAweDRiMzZiMjQ4MDAwMDAwMDAsCisgICAgMHhkYTJiMGRkODAwMDAwMDAwLCAweDRjMWIwYWFmMDAwMDAwMDAsIDB4ZjY0YTAzMzYwMDAwMDAwMCwKKyAgICAweDYwN2EwNDQxMDAwMDAwMDAsIDB4YzNlZjYwZGYwMDAwMDAwMCwgMHg1NWRmNjdhODAwMDAwMDAwLAorICAgIDB4ZWY4ZTZlMzEwMDAwMDAwMCwgMHg3OWJlNjk0NjAwMDAwMDAwLCAweDhjYjM2MWNiMDAwMDAwMDAsCisgICAgMHgxYTgzNjZiYzAwMDAwMDAwLCAweGEwZDI2ZjI1MDAwMDAwMDAsIDB4MzZlMjY4NTIwMDAwMDAwMCwKKyAgICAweDk1NzcwY2NjMDAwMDAwMDAsIDB4MDM0NzBiYmIwMDAwMDAwMCwgMHhiOTE2MDIyMjAwMDAwMDAwLAorICAgIDB4MmYyNjA1NTUwMDAwMDAwMCwgMHhiZTNiYmFjNTAwMDAwMDAwLCAweDI4MGJiZGIyMDAwMDAwMDAsCisgICAgMHg5MjVhYjQyYjAwMDAwMDAwLCAweDA0NmFiMzVjMDAwMDAwMDAsIDB4YTdmZmQ3YzIwMDAwMDAwMCwKKyAgICAweDMxY2ZkMGI1MDAwMDAwMDAsIDB4OGI5ZWQ5MmMwMDAwMDAwMCwgMHgxZGFlZGU1YjAwMDAwMDAwLAorICAgIDB4YjBjMjY0OWIwMDAwMDAwMCwgMHgyNmYyNjNlYzAwMDAwMDAwLCAweDljYTM2YTc1MDAwMDAwMDAsCisgICAgMHgwYTkzNmQwMjAwMDAwMDAwLCAweGE5MDYwOTljMDAwMDAwMDAsIDB4M2YzNjBlZWIwMDAwMDAwMCwKKyAgICAweDg1NjcwNzcyMDAwMDAwMDAsIDB4MTM1NzAwMDUwMDAwMDAwMCwgMHg4MjRhYmY5NTAwMDAwMDAwLAorICAgIDB4MTQ3YWI4ZTIwMDAwMDAwMCwgMHhhZTJiYjE3YjAwMDAwMDAwLCAweDM4MWJiNjBjMDAwMDAwMDAsCisgICAgMHg5YjhlZDI5MjAwMDAwMDAwLCAweDBkYmVkNWU1MDAwMDAwMDAsIDB4YjdlZmRjN2MwMDAwMDAwMCwKKyAgICAweDIxZGZkYjBiMDAwMDAwMDAsIDB4ZDRkMmQzODYwMDAwMDAwMCwgMHg0MmUyZDRmMTAwMDAwMDAwLAorICAgIDB4ZjhiM2RkNjgwMDAwMDAwMCwgMHg2ZTgzZGExZjAwMDAwMDAwLCAweGNkMTZiZTgxMDAwMDAwMDAsCisgICAgMHg1YjI2YjlmNjAwMDAwMDAwLCAweGUxNzdiMDZmMDAwMDAwMDAsIDB4Nzc0N2I3MTgwMDAwMDAwMCwKKyAgICAweGU2NWEwODg4MDAwMDAwMDAsIDB4NzA2YTBmZmYwMDAwMDAwMCwgMHhjYTNiMDY2NjAwMDAwMDAwLAorICAgIDB4NWMwYjAxMTEwMDAwMDAwMCwgMHhmZjllNjU4ZjAwMDAwMDAwLCAweDY5YWU2MmY4MDAwMDAwMDAsCisgICAgMHhkM2ZmNmI2MTAwMDAwMDAwLCAweDQ1Y2Y2YzE2MDAwMDAwMDAsIDB4NzhlMjBhYTAwMDAwMDAwMCwKKyAgICAweGVlZDIwZGQ3MDAwMDAwMDAsIDB4NTQ4MzA0NGUwMDAwMDAwMCwgMHhjMmIzMDMzOTAwMDAwMDAwLAorICAgIDB4NjEyNjY3YTcwMDAwMDAwMCwgMHhmNzE2NjBkMDAwMDAwMDAwLCAweDRkNDc2OTQ5MDAwMDAwMDAsCisgICAgMHhkYjc3NmUzZTAwMDAwMDAwLCAweDRhNmFkMWFlMDAwMDAwMDAsIDB4ZGM1YWQ2ZDkwMDAwMDAwMCwKKyAgICAweDY2MGJkZjQwMDAwMDAwMDAsIDB4ZjAzYmQ4MzcwMDAwMDAwMCwgMHg1M2FlYmNhOTAwMDAwMDAwLAorICAgIDB4YzU5ZWJiZGUwMDAwMDAwMCwgMHg3ZmNmYjI0NzAwMDAwMDAwLCAweGU5ZmZiNTMwMDAwMDAwMDAsCisgICAgMHgxY2YyYmRiZDAwMDAwMDAwLCAweDhhYzJiYWNhMDAwMDAwMDAsIDB4MzA5M2IzNTMwMDAwMDAwMCwKKyAgICAweGE2YTNiNDI0MDAwMDAwMDAsIDB4MDUzNmQwYmEwMDAwMDAwMCwgMHg5MzA2ZDdjZDAwMDAwMDAwLAorICAgIDB4Mjk1N2RlNTQwMDAwMDAwMCwgMHhiZjY3ZDkyMzAwMDAwMDAwLCAweDJlN2E2NmIzMDAwMDAwMDAsCisgICAgMHhiODRhNjFjNDAwMDAwMDAwLCAweDAyMWI2ODVkMDAwMDAwMDAsIDB4OTQyYjZmMmEwMDAwMDAwMCwKKyAgICAweDM3YmUwYmI0MDAwMDAwMDAsIDB4YTE4ZTBjYzMwMDAwMDAwMCwgMHgxYmRmMDU1YTAwMDAwMDAwLAorICAgIDB4OGRlZjAyMmQwMDAwMDAwMH07CisKKyNlbHNlIC8qIFcgPT0gNCAqLworCitsb2NhbCBjb25zdCB6X3dvcmRfdCBGQVIgY3JjX2JpZ190YWJsZVtdID0geworICAgIDB4MDAwMDAwMDAsIDB4OTYzMDA3NzcsIDB4MmM2MTBlZWUsIDB4YmE1MTA5OTksIDB4MTljNDZkMDcsCisgICAgMHg4ZmY0NmE3MCwgMHgzNWE1NjNlOSwgMHhhMzk1NjQ5ZSwgMHgzMjg4ZGIwZSwgMHhhNGI4ZGM3OSwKKyAgICAweDFlZTlkNWUwLCAweDg4ZDlkMjk3LCAweDJiNGNiNjA5LCAweGJkN2NiMTdlLCAweDA3MmRiOGU3LAorICAgIDB4OTExZGJmOTAsIDB4NjQxMGI3MWQsIDB4ZjIyMGIwNmEsIDB4NDg3MWI5ZjMsIDB4ZGU0MWJlODQsCisgICAgMHg3ZGQ0ZGExYSwgMHhlYmU0ZGQ2ZCwgMHg1MWI1ZDRmNCwgMHhjNzg1ZDM4MywgMHg1Njk4NmMxMywKKyAgICAweGMwYTg2YjY0LCAweDdhZjk2MmZkLCAweGVjYzk2NThhLCAweDRmNWMwMTE0LCAweGQ5NmMwNjYzLAorICAgIDB4NjMzZDBmZmEsIDB4ZjUwZDA4OGQsIDB4YzgyMDZlM2IsIDB4NWUxMDY5NGMsIDB4ZTQ0MTYwZDUsCisgICAgMHg3MjcxNjdhMiwgMHhkMWU0MDMzYywgMHg0N2Q0MDQ0YiwgMHhmZDg1MGRkMiwgMHg2YmI1MGFhNSwKKyAgICAweGZhYThiNTM1LCAweDZjOThiMjQyLCAweGQ2YzliYmRiLCAweDQwZjliY2FjLCAweGUzNmNkODMyLAorICAgIDB4NzU1Y2RmNDUsIDB4Y2YwZGQ2ZGMsIDB4NTkzZGQxYWIsIDB4YWMzMGQ5MjYsIDB4M2EwMGRlNTEsCisgICAgMHg4MDUxZDdjOCwgMHgxNjYxZDBiZiwgMHhiNWY0YjQyMSwgMHgyM2M0YjM1NiwgMHg5OTk1YmFjZiwKKyAgICAweDBmYTViZGI4LCAweDllYjgwMjI4LCAweDA4ODgwNTVmLCAweGIyZDkwY2M2LCAweDI0ZTkwYmIxLAorICAgIDB4ODc3YzZmMmYsIDB4MTE0YzY4NTgsIDB4YWIxZDYxYzEsIDB4M2QyZDY2YjYsIDB4OTA0MWRjNzYsCisgICAgMHgwNjcxZGIwMSwgMHhiYzIwZDI5OCwgMHgyYTEwZDVlZiwgMHg4OTg1YjE3MSwgMHgxZmI1YjYwNiwKKyAgICAweGE1ZTRiZjlmLCAweDMzZDRiOGU4LCAweGEyYzkwNzc4LCAweDM0ZjkwMDBmLCAweDhlYTgwOTk2LAorICAgIDB4MTg5ODBlZTEsIDB4YmIwZDZhN2YsIDB4MmQzZDZkMDgsIDB4OTc2YzY0OTEsIDB4MDE1YzYzZTYsCisgICAgMHhmNDUxNmI2YiwgMHg2MjYxNmMxYywgMHhkODMwNjU4NSwgMHg0ZTAwNjJmMiwgMHhlZDk1MDY2YywKKyAgICAweDdiYTUwMTFiLCAweGMxZjQwODgyLCAweDU3YzQwZmY1LCAweGM2ZDliMDY1LCAweDUwZTliNzEyLAorICAgIDB4ZWFiOGJlOGIsIDB4N2M4OGI5ZmMsIDB4ZGYxZGRkNjIsIDB4NDkyZGRhMTUsIDB4ZjM3Y2QzOGMsCisgICAgMHg2NTRjZDRmYiwgMHg1ODYxYjI0ZCwgMHhjZTUxYjUzYSwgMHg3NDAwYmNhMywgMHhlMjMwYmJkNCwKKyAgICAweDQxYTVkZjRhLCAweGQ3OTVkODNkLCAweDZkYzRkMWE0LCAweGZiZjRkNmQzLCAweDZhZTk2OTQzLAorICAgIDB4ZmNkOTZlMzQsIDB4NDY4ODY3YWQsIDB4ZDBiODYwZGEsIDB4NzMyZDA0NDQsIDB4ZTUxZDAzMzMsCisgICAgMHg1ZjRjMGFhYSwgMHhjOTdjMGRkZCwgMHgzYzcxMDU1MCwgMHhhYTQxMDIyNywgMHgxMDEwMGJiZSwKKyAgICAweDg2MjAwY2M5LCAweDI1YjU2ODU3LCAweGIzODU2ZjIwLCAweDA5ZDQ2NmI5LCAweDlmZTQ2MWNlLAorICAgIDB4MGVmOWRlNWUsIDB4OThjOWQ5MjksIDB4MjI5OGQwYjAsIDB4YjRhOGQ3YzcsIDB4MTczZGIzNTksCisgICAgMHg4MTBkYjQyZSwgMHgzYjVjYmRiNywgMHhhZDZjYmFjMCwgMHgyMDgzYjhlZCwgMHhiNmIzYmY5YSwKKyAgICAweDBjZTJiNjAzLCAweDlhZDJiMTc0LCAweDM5NDdkNWVhLCAweGFmNzdkMjlkLCAweDE1MjZkYjA0LAorICAgIDB4ODMxNmRjNzMsIDB4MTIwYjYzZTMsIDB4ODQzYjY0OTQsIDB4M2U2YTZkMGQsIDB4YTg1YTZhN2EsCisgICAgMHgwYmNmMGVlNCwgMHg5ZGZmMDk5MywgMHgyN2FlMDAwYSwgMHhiMTllMDc3ZCwgMHg0NDkzMGZmMCwKKyAgICAweGQyYTMwODg3LCAweDY4ZjIwMTFlLCAweGZlYzIwNjY5LCAweDVkNTc2MmY3LCAweGNiNjc2NTgwLAorICAgIDB4NzEzNjZjMTksIDB4ZTcwNjZiNmUsIDB4NzYxYmQ0ZmUsIDB4ZTAyYmQzODksIDB4NWE3YWRhMTAsCisgICAgMHhjYzRhZGQ2NywgMHg2ZmRmYjlmOSwgMHhmOWVmYmU4ZSwgMHg0M2JlYjcxNywgMHhkNThlYjA2MCwKKyAgICAweGU4YTNkNmQ2LCAweDdlOTNkMWExLCAweGM0YzJkODM4LCAweDUyZjJkZjRmLCAweGYxNjdiYmQxLAorICAgIDB4Njc1N2JjYTYsIDB4ZGQwNmI1M2YsIDB4NGIzNmIyNDgsIDB4ZGEyYjBkZDgsIDB4NGMxYjBhYWYsCisgICAgMHhmNjRhMDMzNiwgMHg2MDdhMDQ0MSwgMHhjM2VmNjBkZiwgMHg1NWRmNjdhOCwgMHhlZjhlNmUzMSwKKyAgICAweDc5YmU2OTQ2LCAweDhjYjM2MWNiLCAweDFhODM2NmJjLCAweGEwZDI2ZjI1LCAweDM2ZTI2ODUyLAorICAgIDB4OTU3NzBjY2MsIDB4MDM0NzBiYmIsIDB4YjkxNjAyMjIsIDB4MmYyNjA1NTUsIDB4YmUzYmJhYzUsCisgICAgMHgyODBiYmRiMiwgMHg5MjVhYjQyYiwgMHgwNDZhYjM1YywgMHhhN2ZmZDdjMiwgMHgzMWNmZDBiNSwKKyAgICAweDhiOWVkOTJjLCAweDFkYWVkZTViLCAweGIwYzI2NDliLCAweDI2ZjI2M2VjLCAweDljYTM2YTc1LAorICAgIDB4MGE5MzZkMDIsIDB4YTkwNjA5OWMsIDB4M2YzNjBlZWIsIDB4ODU2NzA3NzIsIDB4MTM1NzAwMDUsCisgICAgMHg4MjRhYmY5NSwgMHgxNDdhYjhlMiwgMHhhZTJiYjE3YiwgMHgzODFiYjYwYywgMHg5YjhlZDI5MiwKKyAgICAweDBkYmVkNWU1LCAweGI3ZWZkYzdjLCAweDIxZGZkYjBiLCAweGQ0ZDJkMzg2LCAweDQyZTJkNGYxLAorICAgIDB4ZjhiM2RkNjgsIDB4NmU4M2RhMWYsIDB4Y2QxNmJlODEsIDB4NWIyNmI5ZjYsIDB4ZTE3N2IwNmYsCisgICAgMHg3NzQ3YjcxOCwgMHhlNjVhMDg4OCwgMHg3MDZhMGZmZiwgMHhjYTNiMDY2NiwgMHg1YzBiMDExMSwKKyAgICAweGZmOWU2NThmLCAweDY5YWU2MmY4LCAweGQzZmY2YjYxLCAweDQ1Y2Y2YzE2LCAweDc4ZTIwYWEwLAorICAgIDB4ZWVkMjBkZDcsIDB4NTQ4MzA0NGUsIDB4YzJiMzAzMzksIDB4NjEyNjY3YTcsIDB4ZjcxNjYwZDAsCisgICAgMHg0ZDQ3Njk0OSwgMHhkYjc3NmUzZSwgMHg0YTZhZDFhZSwgMHhkYzVhZDZkOSwgMHg2NjBiZGY0MCwKKyAgICAweGYwM2JkODM3LCAweDUzYWViY2E5LCAweGM1OWViYmRlLCAweDdmY2ZiMjQ3LCAweGU5ZmZiNTMwLAorICAgIDB4MWNmMmJkYmQsIDB4OGFjMmJhY2EsIDB4MzA5M2IzNTMsIDB4YTZhM2I0MjQsIDB4MDUzNmQwYmEsCisgICAgMHg5MzA2ZDdjZCwgMHgyOTU3ZGU1NCwgMHhiZjY3ZDkyMywgMHgyZTdhNjZiMywgMHhiODRhNjFjNCwKKyAgICAweDAyMWI2ODVkLCAweDk0MmI2ZjJhLCAweDM3YmUwYmI0LCAweGExOGUwY2MzLCAweDFiZGYwNTVhLAorICAgIDB4OGRlZjAyMmR9OworCisjZW5kaWYKKworI2lmIE4gPT0gMQorCisjaWYgVyA9PSA4CisKK2xvY2FsIGNvbnN0IHpfY3JjX3QgRkFSIGNyY19icmFpZF90YWJsZVtdWzI1Nl0gPSB7CisgICB7MHgwMDAwMDAwMCwgMHhjY2FhMDA5ZSwgMHg0MjI1MDc3ZCwgMHg4ZThmMDdlMywgMHg4NDRhMGVmYSwKKyAgICAweDQ4ZTAwZTY0LCAweGM2NmYwOTg3LCAweDBhYzUwOTE5LCAweGQzZTUxYmI1LCAweDFmNGYxYjJiLAorICAgIDB4OTFjMDFjYzgsIDB4NWQ2YTFjNTYsIDB4NTdhZjE1NGYsIDB4OWIwNTE1ZDEsIDB4MTU4YTEyMzIsCisgICAgMHhkOTIwMTJhYywgMHg3Y2JiMzEyYiwgMHhiMDExMzFiNSwgMHgzZTllMzY1NiwgMHhmMjM0MzZjOCwKKyAgICAweGY4ZjEzZmQxLCAweDM0NWIzZjRmLCAweGJhZDQzOGFjLCAweDc2N2UzODMyLCAweGFmNWUyYTllLAorICAgIDB4NjNmNDJhMDAsIDB4ZWQ3YjJkZTMsIDB4MjFkMTJkN2QsIDB4MmIxNDI0NjQsIDB4ZTdiZTI0ZmEsCisgICAgMHg2OTMxMjMxOSwgMHhhNTliMjM4NywgMHhmOTc2NjI1NiwgMHgzNWRjNjJjOCwgMHhiYjUzNjUyYiwKKyAgICAweDc3Zjk2NWI1LCAweDdkM2M2Y2FjLCAweGIxOTY2YzMyLCAweDNmMTk2YmQxLCAweGYzYjM2YjRmLAorICAgIDB4MmE5Mzc5ZTMsIDB4ZTYzOTc5N2QsIDB4NjhiNjdlOWUsIDB4YTQxYzdlMDAsIDB4YWVkOTc3MTksCisgICAgMHg2MjczNzc4NywgMHhlY2ZjNzA2NCwgMHgyMDU2NzBmYSwgMHg4NWNkNTM3ZCwgMHg0OTY3NTNlMywKKyAgICAweGM3ZTg1NDAwLCAweDBiNDI1NDllLCAweDAxODc1ZDg3LCAweGNkMmQ1ZDE5LCAweDQzYTI1YWZhLAorICAgIDB4OGYwODVhNjQsIDB4NTYyODQ4YzgsIDB4OWE4MjQ4NTYsIDB4MTQwZDRmYjUsIDB4ZDhhNzRmMmIsCisgICAgMHhkMjYyNDYzMiwgMHgxZWM4NDZhYywgMHg5MDQ3NDE0ZiwgMHg1Y2VkNDFkMSwgMHgyOTlkYzJlZCwKKyAgICAweGU1MzdjMjczLCAweDZiYjhjNTkwLCAweGE3MTJjNTBlLCAweGFkZDdjYzE3LCAweDYxN2RjYzg5LAorICAgIDB4ZWZmMmNiNmEsIDB4MjM1OGNiZjQsIDB4ZmE3OGQ5NTgsIDB4MzZkMmQ5YzYsIDB4Yjg1ZGRlMjUsCisgICAgMHg3NGY3ZGViYiwgMHg3ZTMyZDdhMiwgMHhiMjk4ZDczYywgMHgzYzE3ZDBkZiwgMHhmMGJkZDA0MSwKKyAgICAweDU1MjZmM2M2LCAweDk5OGNmMzU4LCAweDE3MDNmNGJiLCAweGRiYTlmNDI1LCAweGQxNmNmZDNjLAorICAgIDB4MWRjNmZkYTIsIDB4OTM0OWZhNDEsIDB4NWZlM2ZhZGYsIDB4ODZjM2U4NzMsIDB4NGE2OWU4ZWQsCisgICAgMHhjNGU2ZWYwZSwgMHgwODRjZWY5MCwgMHgwMjg5ZTY4OSwgMHhjZTIzZTYxNywgMHg0MGFjZTFmNCwKKyAgICAweDhjMDZlMTZhLCAweGQwZWJhMGJiLCAweDFjNDFhMDI1LCAweDkyY2VhN2M2LCAweDVlNjRhNzU4LAorICAgIDB4NTRhMWFlNDEsIDB4OTgwYmFlZGYsIDB4MTY4NGE5M2MsIDB4ZGEyZWE5YTIsIDB4MDMwZWJiMGUsCisgICAgMHhjZmE0YmI5MCwgMHg0MTJiYmM3MywgMHg4ZDgxYmNlZCwgMHg4NzQ0YjVmNCwgMHg0YmVlYjU2YSwKKyAgICAweGM1NjFiMjg5LCAweDA5Y2JiMjE3LCAweGFjNTA5MTkwLCAweDYwZmE5MTBlLCAweGVlNzU5NmVkLAorICAgIDB4MjJkZjk2NzMsIDB4MjgxYTlmNmEsIDB4ZTRiMDlmZjQsIDB4NmEzZjk4MTcsIDB4YTY5NTk4ODksCisgICAgMHg3ZmI1OGEyNSwgMHhiMzFmOGFiYiwgMHgzZDkwOGQ1OCwgMHhmMTNhOGRjNiwgMHhmYmZmODRkZiwKKyAgICAweDM3NTU4NDQxLCAweGI5ZGE4M2EyLCAweDc1NzA4MzNjLCAweDUzM2I4NWRhLCAweDlmOTE4NTQ0LAorICAgIDB4MTExZTgyYTcsIDB4ZGRiNDgyMzksIDB4ZDc3MThiMjAsIDB4MWJkYjhiYmUsIDB4OTU1NDhjNWQsCisgICAgMHg1OWZlOGNjMywgMHg4MGRlOWU2ZiwgMHg0Yzc0OWVmMSwgMHhjMmZiOTkxMiwgMHgwZTUxOTk4YywKKyAgICAweDA0OTQ5MDk1LCAweGM4M2U5MDBiLCAweDQ2YjE5N2U4LCAweDhhMWI5Nzc2LCAweDJmODBiNGYxLAorICAgIDB4ZTMyYWI0NmYsIDB4NmRhNWIzOGMsIDB4YTEwZmIzMTIsIDB4YWJjYWJhMGIsIDB4Njc2MGJhOTUsCisgICAgMHhlOWVmYmQ3NiwgMHgyNTQ1YmRlOCwgMHhmYzY1YWY0NCwgMHgzMGNmYWZkYSwgMHhiZTQwYTgzOSwKKyAgICAweDcyZWFhOGE3LCAweDc4MmZhMWJlLCAweGI0ODVhMTIwLCAweDNhMGFhNmMzLCAweGY2YTBhNjVkLAorICAgIDB4YWE0ZGU3OGMsIDB4NjZlN2U3MTIsIDB4ZTg2OGUwZjEsIDB4MjRjMmUwNmYsIDB4MmUwN2U5NzYsCisgICAgMHhlMmFkZTllOCwgMHg2YzIyZWUwYiwgMHhhMDg4ZWU5NSwgMHg3OWE4ZmMzOSwgMHhiNTAyZmNhNywKKyAgICAweDNiOGRmYjQ0LCAweGY3MjdmYmRhLCAweGZkZTJmMmMzLCAweDMxNDhmMjVkLCAweGJmYzdmNWJlLAorICAgIDB4NzM2ZGY1MjAsIDB4ZDZmNmQ2YTcsIDB4MWE1Y2Q2MzksIDB4OTRkM2QxZGEsIDB4NTg3OWQxNDQsCisgICAgMHg1MmJjZDg1ZCwgMHg5ZTE2ZDhjMywgMHgxMDk5ZGYyMCwgMHhkYzMzZGZiZSwgMHgwNTEzY2QxMiwKKyAgICAweGM5YjljZDhjLCAweDQ3MzZjYTZmLCAweDhiOWNjYWYxLCAweDgxNTljM2U4LCAweDRkZjNjMzc2LAorICAgIDB4YzM3Y2M0OTUsIDB4MGZkNmM0MGIsIDB4N2FhNjQ3MzcsIDB4YjYwYzQ3YTksIDB4Mzg4MzQwNGEsCisgICAgMHhmNDI5NDBkNCwgMHhmZWVjNDljZCwgMHgzMjQ2NDk1MywgMHhiY2M5NGViMCwgMHg3MDYzNGUyZSwKKyAgICAweGE5NDM1YzgyLCAweDY1ZTk1YzFjLCAweGViNjY1YmZmLCAweDI3Y2M1YjYxLCAweDJkMDk1Mjc4LAorICAgIDB4ZTFhMzUyZTYsIDB4NmYyYzU1MDUsIDB4YTM4NjU1OWIsIDB4MDYxZDc2MWMsIDB4Y2FiNzc2ODIsCisgICAgMHg0NDM4NzE2MSwgMHg4ODkyNzFmZiwgMHg4MjU3NzhlNiwgMHg0ZWZkNzg3OCwgMHhjMDcyN2Y5YiwKKyAgICAweDBjZDg3ZjA1LCAweGQ1Zjg2ZGE5LCAweDE5NTI2ZDM3LCAweDk3ZGQ2YWQ0LCAweDViNzc2YTRhLAorICAgIDB4NTFiMjYzNTMsIDB4OWQxODYzY2QsIDB4MTM5NzY0MmUsIDB4ZGYzZDY0YjAsIDB4ODNkMDI1NjEsCisgICAgMHg0ZjdhMjVmZiwgMHhjMWY1MjIxYywgMHgwZDVmMjI4MiwgMHgwNzlhMmI5YiwgMHhjYjMwMmIwNSwKKyAgICAweDQ1YmYyY2U2LCAweDg5MTUyYzc4LCAweDUwMzUzZWQ0LCAweDljOWYzZTRhLCAweDEyMTAzOWE5LAorICAgIDB4ZGViYTM5MzcsIDB4ZDQ3ZjMwMmUsIDB4MThkNTMwYjAsIDB4OTY1YTM3NTMsIDB4NWFmMDM3Y2QsCisgICAgMHhmZjZiMTQ0YSwgMHgzM2MxMTRkNCwgMHhiZDRlMTMzNywgMHg3MWU0MTNhOSwgMHg3YjIxMWFiMCwKKyAgICAweGI3OGIxYTJlLCAweDM5MDQxZGNkLCAweGY1YWUxZDUzLCAweDJjOGUwZmZmLCAweGUwMjQwZjYxLAorICAgIDB4NmVhYjA4ODIsIDB4YTIwMTA4MWMsIDB4YThjNDAxMDUsIDB4NjQ2ZTAxOWIsIDB4ZWFlMTA2NzgsCisgICAgMHgyNjRiMDZlNn0sCisgICB7MHgwMDAwMDAwMCwgMHhhNjc3MGJiNCwgMHg5NzlmMTEyOSwgMHgzMWU4MWE5ZCwgMHhmNDRmMjQxMywKKyAgICAweDUyMzgyZmE3LCAweDYzZDAzNTNhLCAweGM1YTczZThlLCAweDMzZWY0ZTY3LCAweDk1OTg0NWQzLAorICAgIDB4YTQ3MDVmNGUsIDB4MDIwNzU0ZmEsIDB4YzdhMDZhNzQsIDB4NjFkNzYxYzAsIDB4NTAzZjdiNWQsCisgICAgMHhmNjQ4NzBlOSwgMHg2N2RlOWNjZSwgMHhjMWE5OTc3YSwgMHhmMDQxOGRlNywgMHg1NjM2ODY1MywKKyAgICAweDkzOTFiOGRkLCAweDM1ZTZiMzY5LCAweDA0MGVhOWY0LCAweGEyNzlhMjQwLCAweDU0MzFkMmE5LAorICAgIDB4ZjI0NmQ5MWQsIDB4YzNhZWMzODAsIDB4NjVkOWM4MzQsIDB4YTA3ZWY2YmEsIDB4MDYwOWZkMGUsCisgICAgMHgzN2UxZTc5MywgMHg5MTk2ZWMyNywgMHhjZmJkMzk5YywgMHg2OWNhMzIyOCwgMHg1ODIyMjhiNSwKKyAgICAweGZlNTUyMzAxLCAweDNiZjIxZDhmLCAweDlkODUxNjNiLCAweGFjNmQwY2E2LCAweDBhMWEwNzEyLAorICAgIDB4ZmM1Mjc3ZmIsIDB4NWEyNTdjNGYsIDB4NmJjZDY2ZDIsIDB4Y2RiYTZkNjYsIDB4MDgxZDUzZTgsCisgICAgMHhhZTZhNTg1YywgMHg5ZjgyNDJjMSwgMHgzOWY1NDk3NSwgMHhhODYzYTU1MiwgMHgwZTE0YWVlNiwKKyAgICAweDNmZmNiNDdiLCAweDk5OGJiZmNmLCAweDVjMmM4MTQxLCAweGZhNWI4YWY1LCAweGNiYjM5MDY4LAorICAgIDB4NmRjNDliZGMsIDB4OWI4Y2ViMzUsIDB4M2RmYmUwODEsIDB4MGMxM2ZhMWMsIDB4YWE2NGYxYTgsCisgICAgMHg2ZmMzY2YyNiwgMHhjOWI0YzQ5MiwgMHhmODVjZGUwZiwgMHg1ZTJiZDViYiwgMHg0NDBiNzU3OSwKKyAgICAweGUyN2M3ZWNkLCAweGQzOTQ2NDUwLCAweDc1ZTM2ZmU0LCAweGIwNDQ1MTZhLCAweDE2MzM1YWRlLAorICAgIDB4MjdkYjQwNDMsIDB4ODFhYzRiZjcsIDB4NzdlNDNiMWUsIDB4ZDE5MzMwYWEsIDB4ZTA3YjJhMzcsCisgICAgMHg0NjBjMjE4MywgMHg4M2FiMWYwZCwgMHgyNWRjMTRiOSwgMHgxNDM0MGUyNCwgMHhiMjQzMDU5MCwKKyAgICAweDIzZDVlOWI3LCAweDg1YTJlMjAzLCAweGI0NGFmODllLCAweDEyM2RmMzJhLCAweGQ3OWFjZGE0LAorICAgIDB4NzFlZGM2MTAsIDB4NDAwNWRjOGQsIDB4ZTY3MmQ3MzksIDB4MTAzYWE3ZDAsIDB4YjY0ZGFjNjQsCisgICAgMHg4N2E1YjZmOSwgMHgyMWQyYmQ0ZCwgMHhlNDc1ODNjMywgMHg0MjAyODg3NywgMHg3M2VhOTJlYSwKKyAgICAweGQ1OWQ5OTVlLCAweDhiYjY0Y2U1LCAweDJkYzE0NzUxLCAweDFjMjk1ZGNjLCAweGJhNWU1Njc4LAorICAgIDB4N2ZmOTY4ZjYsIDB4ZDk4ZTYzNDIsIDB4ZTg2Njc5ZGYsIDB4NGUxMTcyNmIsIDB4Yjg1OTAyODIsCisgICAgMHgxZTJlMDkzNiwgMHgyZmM2MTNhYiwgMHg4OWIxMTgxZiwgMHg0YzE2MjY5MSwgMHhlYTYxMmQyNSwKKyAgICAweGRiODkzN2I4LCAweDdkZmUzYzBjLCAweGVjNjhkMDJiLCAweDRhMWZkYjlmLCAweDdiZjdjMTAyLAorICAgIDB4ZGQ4MGNhYjYsIDB4MTgyN2Y0MzgsIDB4YmU1MGZmOGMsIDB4OGZiOGU1MTEsIDB4MjljZmVlYTUsCisgICAgMHhkZjg3OWU0YywgMHg3OWYwOTVmOCwgMHg0ODE4OGY2NSwgMHhlZTZmODRkMSwgMHgyYmM4YmE1ZiwKKyAgICAweDhkYmZiMWViLCAweGJjNTdhYjc2LCAweDFhMjBhMGMyLCAweDg4MTZlYWYyLCAweDJlNjFlMTQ2LAorICAgIDB4MWY4OWZiZGIsIDB4YjlmZWYwNmYsIDB4N2M1OWNlZTEsIDB4ZGEyZWM1NTUsIDB4ZWJjNmRmYzgsCisgICAgMHg0ZGIxZDQ3YywgMHhiYmY5YTQ5NSwgMHgxZDhlYWYyMSwgMHgyYzY2YjViYywgMHg4YTExYmUwOCwKKyAgICAweDRmYjY4MDg2LCAweGU5YzE4YjMyLCAweGQ4Mjk5MWFmLCAweDdlNWU5YTFiLCAweGVmYzg3NjNjLAorICAgIDB4NDliZjdkODgsIDB4Nzg1NzY3MTUsIDB4ZGUyMDZjYTEsIDB4MWI4NzUyMmYsIDB4YmRmMDU5OWIsCisgICAgMHg4YzE4NDMwNiwgMHgyYTZmNDhiMiwgMHhkYzI3Mzg1YiwgMHg3YTUwMzNlZiwgMHg0YmI4Mjk3MiwKKyAgICAweGVkY2YyMmM2LCAweDI4NjgxYzQ4LCAweDhlMWYxN2ZjLCAweGJmZjcwZDYxLCAweDE5ODAwNmQ1LAorICAgIDB4NDdhYmQzNmUsIDB4ZTFkY2Q4ZGEsIDB4ZDAzNGMyNDcsIDB4NzY0M2M5ZjMsIDB4YjNlNGY3N2QsCisgICAgMHgxNTkzZmNjOSwgMHgyNDdiZTY1NCwgMHg4MjBjZWRlMCwgMHg3NDQ0OWQwOSwgMHhkMjMzOTZiZCwKKyAgICAweGUzZGI4YzIwLCAweDQ1YWM4Nzk0LCAweDgwMGJiOTFhLCAweDI2N2NiMmFlLCAweDE3OTRhODMzLAorICAgIDB4YjFlM2EzODcsIDB4MjA3NTRmYTAsIDB4ODYwMjQ0MTQsIDB4YjdlYTVlODksIDB4MTE5ZDU1M2QsCisgICAgMHhkNDNhNmJiMywgMHg3MjRkNjAwNywgMHg0M2E1N2E5YSwgMHhlNWQyNzEyZSwgMHgxMzlhMDFjNywKKyAgICAweGI1ZWQwYTczLCAweDg0MDUxMGVlLCAweDIyNzIxYjVhLCAweGU3ZDUyNWQ0LCAweDQxYTIyZTYwLAorICAgIDB4NzA0YTM0ZmQsIDB4ZDYzZDNmNDksIDB4Y2MxZDlmOGIsIDB4NmE2YTk0M2YsIDB4NWI4MjhlYTIsCisgICAgMHhmZGY1ODUxNiwgMHgzODUyYmI5OCwgMHg5ZTI1YjAyYywgMHhhZmNkYWFiMSwgMHgwOWJhYTEwNSwKKyAgICAweGZmZjJkMWVjLCAweDU5ODVkYTU4LCAweDY4NmRjMGM1LCAweGNlMWFjYjcxLCAweDBiYmRmNWZmLAorICAgIDB4YWRjYWZlNGIsIDB4OWMyMmU0ZDYsIDB4M2E1NWVmNjIsIDB4YWJjMzAzNDUsIDB4MGRiNDA4ZjEsCisgICAgMHgzYzVjMTI2YywgMHg5YTJiMTlkOCwgMHg1ZjhjMjc1NiwgMHhmOWZiMmNlMiwgMHhjODEzMzY3ZiwKKyAgICAweDZlNjQzZGNiLCAweDk4MmM0ZDIyLCAweDNlNWI0Njk2LCAweDBmYjM1YzBiLCAweGE5YzQ1N2JmLAorICAgIDB4NmM2MzY5MzEsIDB4Y2ExNDYyODUsIDB4ZmJmYzc4MTgsIDB4NWQ4YjczYWMsIDB4MDNhMGE2MTcsCisgICAgMHhhNWQ3YWRhMywgMHg5NDNmYjczZSwgMHgzMjQ4YmM4YSwgMHhmN2VmODIwNCwgMHg1MTk4ODliMCwKKyAgICAweDYwNzA5MzJkLCAweGM2MDc5ODk5LCAweDMwNGZlODcwLCAweDk2MzhlM2M0LCAweGE3ZDBmOTU5LAorICAgIDB4MDFhN2YyZWQsIDB4YzQwMGNjNjMsIDB4NjI3N2M3ZDcsIDB4NTM5ZmRkNGEsIDB4ZjVlOGQ2ZmUsCisgICAgMHg2NDdlM2FkOSwgMHhjMjA5MzE2ZCwgMHhmM2UxMmJmMCwgMHg1NTk2MjA0NCwgMHg5MDMxMWVjYSwKKyAgICAweDM2NDYxNTdlLCAweDA3YWUwZmUzLCAweGExZDkwNDU3LCAweDU3OTE3NGJlLCAweGYxZTY3ZjBhLAorICAgIDB4YzAwZTY1OTcsIDB4NjY3OTZlMjMsIDB4YTNkZTUwYWQsIDB4MDVhOTViMTksIDB4MzQ0MTQxODQsCisgICAgMHg5MjM2NGEzMH0sCisgICB7MHgwMDAwMDAwMCwgMHhjYjVjZDNhNSwgMHg0ZGM4YTEwYiwgMHg4Njk0NzJhZSwgMHg5YjkxNDIxNiwKKyAgICAweDUwY2Q5MWIzLCAweGQ2NTllMzFkLCAweDFkMDUzMGI4LCAweGVjNTM4MjZkLCAweDI3MGY1MWM4LAorICAgIDB4YTE5YjIzNjYsIDB4NmFjN2YwYzMsIDB4NzdjMmMwN2IsIDB4YmM5ZTEzZGUsIDB4M2EwYTYxNzAsCisgICAgMHhmMTU2YjJkNSwgMHgwM2Q2MDI5YiwgMHhjODhhZDEzZSwgMHg0ZTFlYTM5MCwgMHg4NTQyNzAzNSwKKyAgICAweDk4NDc0MDhkLCAweDUzMWI5MzI4LCAweGQ1OGZlMTg2LCAweDFlZDMzMjIzLCAweGVmODU4MGY2LAorICAgIDB4MjRkOTUzNTMsIDB4YTI0ZDIxZmQsIDB4NjkxMWYyNTgsIDB4NzQxNGMyZTAsIDB4YmY0ODExNDUsCisgICAgMHgzOWRjNjNlYiwgMHhmMjgwYjA0ZSwgMHgwN2FjMDUzNiwgMHhjY2YwZDY5MywgMHg0YTY0YTQzZCwKKyAgICAweDgxMzg3Nzk4LCAweDljM2Q0NzIwLCAweDU3NjE5NDg1LCAweGQxZjVlNjJiLCAweDFhYTkzNThlLAorICAgIDB4ZWJmZjg3NWIsIDB4MjBhMzU0ZmUsIDB4YTYzNzI2NTAsIDB4NmQ2YmY1ZjUsIDB4NzA2ZWM1NGQsCisgICAgMHhiYjMyMTZlOCwgMHgzZGE2NjQ0NiwgMHhmNmZhYjdlMywgMHgwNDdhMDdhZCwgMHhjZjI2ZDQwOCwKKyAgICAweDQ5YjJhNmE2LCAweDgyZWU3NTAzLCAweDlmZWI0NWJiLCAweDU0Yjc5NjFlLCAweGQyMjNlNGIwLAorICAgIDB4MTk3ZjM3MTUsIDB4ZTgyOTg1YzAsIDB4MjM3NTU2NjUsIDB4YTVlMTI0Y2IsIDB4NmViZGY3NmUsCisgICAgMHg3M2I4YzdkNiwgMHhiOGU0MTQ3MywgMHgzZTcwNjZkZCwgMHhmNTJjYjU3OCwgMHgwZjU4MGE2YywKKyAgICAweGM0MDRkOWM5LCAweDQyOTBhYjY3LCAweDg5Y2M3OGMyLCAweDk0Yzk0ODdhLCAweDVmOTU5YmRmLAorICAgIDB4ZDkwMWU5NzEsIDB4MTI1ZDNhZDQsIDB4ZTMwYjg4MDEsIDB4Mjg1NzViYTQsIDB4YWVjMzI5MGEsCisgICAgMHg2NTlmZmFhZiwgMHg3ODlhY2ExNywgMHhiM2M2MTliMiwgMHgzNTUyNmIxYywgMHhmZTBlYjhiOSwKKyAgICAweDBjOGUwOGY3LCAweGM3ZDJkYjUyLCAweDQxNDZhOWZjLCAweDhhMWE3YTU5LCAweDk3MWY0YWUxLAorICAgIDB4NWM0Mzk5NDQsIDB4ZGFkN2ViZWEsIDB4MTE4YjM4NGYsIDB4ZTBkZDhhOWEsIDB4MmI4MTU5M2YsCisgICAgMHhhZDE1MmI5MSwgMHg2NjQ5ZjgzNCwgMHg3YjRjYzg4YywgMHhiMDEwMWIyOSwgMHgzNjg0Njk4NywKKyAgICAweGZkZDhiYTIyLCAweDA4ZjQwZjVhLCAweGMzYThkY2ZmLCAweDQ1M2NhZTUxLCAweDhlNjA3ZGY0LAorICAgIDB4OTM2NTRkNGMsIDB4NTgzOTllZTksIDB4ZGVhZGVjNDcsIDB4MTVmMTNmZTIsIDB4ZTRhNzhkMzcsCisgICAgMHgyZmZiNWU5MiwgMHhhOTZmMmMzYywgMHg2MjMzZmY5OSwgMHg3ZjM2Y2YyMSwgMHhiNDZhMWM4NCwKKyAgICAweDMyZmU2ZTJhLCAweGY5YTJiZDhmLCAweDBiMjIwZGMxLCAweGMwN2VkZTY0LCAweDQ2ZWFhY2NhLAorICAgIDB4OGRiNjdmNmYsIDB4OTBiMzRmZDcsIDB4NWJlZjljNzIsIDB4ZGQ3YmVlZGMsIDB4MTYyNzNkNzksCisgICAgMHhlNzcxOGZhYywgMHgyYzJkNWMwOSwgMHhhYWI5MmVhNywgMHg2MWU1ZmQwMiwgMHg3Y2UwY2RiYSwKKyAgICAweGI3YmMxZTFmLCAweDMxMjg2Y2IxLCAweGZhNzRiZjE0LCAweDFlYjAxNGQ4LCAweGQ1ZWNjNzdkLAorICAgIDB4NTM3OGI1ZDMsIDB4OTgyNDY2NzYsIDB4ODUyMTU2Y2UsIDB4NGU3ZDg1NmIsIDB4YzhlOWY3YzUsCisgICAgMHgwM2I1MjQ2MCwgMHhmMmUzOTZiNSwgMHgzOWJmNDUxMCwgMHhiZjJiMzdiZSwgMHg3NDc3ZTQxYiwKKyAgICAweDY5NzJkNGEzLCAweGEyMmUwNzA2LCAweDI0YmE3NWE4LCAweGVmZTZhNjBkLCAweDFkNjYxNjQzLAorICAgIDB4ZDYzYWM1ZTYsIDB4NTBhZWI3NDgsIDB4OWJmMjY0ZWQsIDB4ODZmNzU0NTUsIDB4NGRhYjg3ZjAsCisgICAgMHhjYjNmZjU1ZSwgMHgwMDYzMjZmYiwgMHhmMTM1OTQyZSwgMHgzYTY5NDc4YiwgMHhiY2ZkMzUyNSwKKyAgICAweDc3YTFlNjgwLCAweDZhYTRkNjM4LCAweGExZjgwNTlkLCAweDI3NmM3NzMzLCAweGVjMzBhNDk2LAorICAgIDB4MTkxYzExZWUsIDB4ZDI0MGMyNGIsIDB4NTRkNGIwZTUsIDB4OWY4ODYzNDAsIDB4ODI4ZDUzZjgsCisgICAgMHg0OWQxODA1ZCwgMHhjZjQ1ZjJmMywgMHgwNDE5MjE1NiwgMHhmNTRmOTM4MywgMHgzZTEzNDAyNiwKKyAgICAweGI4ODczMjg4LCAweDczZGJlMTJkLCAweDZlZGVkMTk1LCAweGE1ODIwMjMwLCAweDIzMTY3MDllLAorICAgIDB4ZTg0YWEzM2IsIDB4MWFjYTEzNzUsIDB4ZDE5NmMwZDAsIDB4NTcwMmIyN2UsIDB4OWM1ZTYxZGIsCisgICAgMHg4MTViNTE2MywgMHg0YTA3ODJjNiwgMHhjYzkzZjA2OCwgMHgwN2NmMjNjZCwgMHhmNjk5OTExOCwKKyAgICAweDNkYzU0MmJkLCAweGJiNTEzMDEzLCAweDcwMGRlM2I2LCAweDZkMDhkMzBlLCAweGE2NTQwMGFiLAorICAgIDB4MjBjMDcyMDUsIDB4ZWI5Y2ExYTAsIDB4MTFlODFlYjQsIDB4ZGFiNGNkMTEsIDB4NWMyMGJmYmYsCisgICAgMHg5NzdjNmMxYSwgMHg4YTc5NWNhMiwgMHg0MTI1OGYwNywgMHhjN2IxZmRhOSwgMHgwY2VkMmUwYywKKyAgICAweGZkYmI5Y2Q5LCAweDM2ZTc0ZjdjLCAweGIwNzMzZGQyLCAweDdiMmZlZTc3LCAweDY2MmFkZWNmLAorICAgIDB4YWQ3NjBkNmEsIDB4MmJlMjdmYzQsIDB4ZTBiZWFjNjEsIDB4MTIzZTFjMmYsIDB4ZDk2MmNmOGEsCisgICAgMHg1ZmY2YmQyNCwgMHg5NGFhNmU4MSwgMHg4OWFmNWUzOSwgMHg0MmYzOGQ5YywgMHhjNDY3ZmYzMiwKKyAgICAweDBmM2IyYzk3LCAweGZlNmQ5ZTQyLCAweDM1MzE0ZGU3LCAweGIzYTUzZjQ5LCAweDc4ZjllY2VjLAorICAgIDB4NjVmY2RjNTQsIDB4YWVhMDBmZjEsIDB4MjgzNDdkNWYsIDB4ZTM2OGFlZmEsIDB4MTY0NDFiODIsCisgICAgMHhkZDE4YzgyNywgMHg1YjhjYmE4OSwgMHg5MGQwNjkyYywgMHg4ZGQ1NTk5NCwgMHg0Njg5OGEzMSwKKyAgICAweGMwMWRmODlmLCAweDBiNDEyYjNhLCAweGZhMTc5OWVmLCAweDMxNGI0YTRhLCAweGI3ZGYzOGU0LAorICAgIDB4N2M4M2ViNDEsIDB4NjE4NmRiZjksIDB4YWFkYTA4NWMsIDB4MmM0ZTdhZjIsIDB4ZTcxMmE5NTcsCisgICAgMHgxNTkyMTkxOSwgMHhkZWNlY2FiYywgMHg1ODVhYjgxMiwgMHg5MzA2NmJiNywgMHg4ZTAzNWIwZiwKKyAgICAweDQ1NWY4OGFhLCAweGMzY2JmYTA0LCAweDA4OTcyOWExLCAweGY5YzE5Yjc0LCAweDMyOWQ0OGQxLAorICAgIDB4YjQwOTNhN2YsIDB4N2Y1NWU5ZGEsIDB4NjI1MGQ5NjIsIDB4YTkwYzBhYzcsIDB4MmY5ODc4NjksCisgICAgMHhlNGM0YWJjY30sCisgICB7MHgwMDAwMDAwMCwgMHgzZDYwMjliMCwgMHg3YWMwNTM2MCwgMHg0N2EwN2FkMCwgMHhmNTgwYTZjMCwKKyAgICAweGM4ZTA4ZjcwLCAweDhmNDBmNWEwLCAweGIyMjBkYzEwLCAweDMwNzA0YmMxLCAweDBkMTA2MjcxLAorICAgIDB4NGFiMDE4YTEsIDB4NzdkMDMxMTEsIDB4YzVmMGVkMDEsIDB4Zjg5MGM0YjEsIDB4YmYzMGJlNjEsCisgICAgMHg4MjUwOTdkMSwgMHg2MGUwOTc4MiwgMHg1ZDgwYmUzMiwgMHgxYTIwYzRlMiwgMHgyNzQwZWQ1MiwKKyAgICAweDk1NjAzMTQyLCAweGE4MDAxOGYyLCAweGVmYTA2MjIyLCAweGQyYzA0YjkyLCAweDUwOTBkYzQzLAorICAgIDB4NmRmMGY1ZjMsIDB4MmE1MDhmMjMsIDB4MTczMGE2OTMsIDB4YTUxMDdhODMsIDB4OTg3MDUzMzMsCisgICAgMHhkZmQwMjllMywgMHhlMmIwMDA1MywgMHhjMWMxMmYwNCwgMHhmY2ExMDZiNCwgMHhiYjAxN2M2NCwKKyAgICAweDg2NjE1NWQ0LCAweDM0NDE4OWM0LCAweDA5MjFhMDc0LCAweDRlODFkYWE0LCAweDczZTFmMzE0LAorICAgIDB4ZjFiMTY0YzUsIDB4Y2NkMTRkNzUsIDB4OGI3MTM3YTUsIDB4YjYxMTFlMTUsIDB4MDQzMWMyMDUsCisgICAgMHgzOTUxZWJiNSwgMHg3ZWYxOTE2NSwgMHg0MzkxYjhkNSwgMHhhMTIxYjg4NiwgMHg5YzQxOTEzNiwKKyAgICAweGRiZTFlYmU2LCAweGU2ODFjMjU2LCAweDU0YTExZTQ2LCAweDY5YzEzN2Y2LCAweDJlNjE0ZDI2LAorICAgIDB4MTMwMTY0OTYsIDB4OTE1MWYzNDcsIDB4YWMzMWRhZjcsIDB4ZWI5MWEwMjcsIDB4ZDZmMTg5OTcsCisgICAgMHg2NGQxNTU4NywgMHg1OWIxN2MzNywgMHgxZTExMDZlNywgMHgyMzcxMmY1NywgMHg1OGYzNTg0OSwKKyAgICAweDY1OTM3MWY5LCAweDIyMzMwYjI5LCAweDFmNTMyMjk5LCAweGFkNzNmZTg5LCAweDkwMTNkNzM5LAorICAgIDB4ZDdiM2FkZTksIDB4ZWFkMzg0NTksIDB4Njg4MzEzODgsIDB4NTVlMzNhMzgsIDB4MTI0MzQwZTgsCisgICAgMHgyZjIzNjk1OCwgMHg5ZDAzYjU0OCwgMHhhMDYzOWNmOCwgMHhlN2MzZTYyOCwgMHhkYWEzY2Y5OCwKKyAgICAweDM4MTNjZmNiLCAweDA1NzNlNjdiLCAweDQyZDM5Y2FiLCAweDdmYjNiNTFiLCAweGNkOTM2OTBiLAorICAgIDB4ZjBmMzQwYmIsIDB4Yjc1MzNhNmIsIDB4OGEzMzEzZGIsIDB4MDg2Mzg0MGEsIDB4MzUwM2FkYmEsCisgICAgMHg3MmEzZDc2YSwgMHg0ZmMzZmVkYSwgMHhmZGUzMjJjYSwgMHhjMDgzMGI3YSwgMHg4NzIzNzFhYSwKKyAgICAweGJhNDM1ODFhLCAweDk5MzI3NzRkLCAweGE0NTI1ZWZkLCAweGUzZjIyNDJkLCAweGRlOTIwZDlkLAorICAgIDB4NmNiMmQxOGQsIDB4NTFkMmY4M2QsIDB4MTY3MjgyZWQsIDB4MmIxMmFiNWQsIDB4YTk0MjNjOGMsCisgICAgMHg5NDIyMTUzYywgMHhkMzgyNmZlYywgMHhlZWUyNDY1YywgMHg1Y2MyOWE0YywgMHg2MWEyYjNmYywKKyAgICAweDI2MDJjOTJjLCAweDFiNjJlMDljLCAweGY5ZDJlMGNmLCAweGM0YjJjOTdmLCAweDgzMTJiM2FmLAorICAgIDB4YmU3MjlhMWYsIDB4MGM1MjQ2MGYsIDB4MzEzMjZmYmYsIDB4NzY5MjE1NmYsIDB4NGJmMjNjZGYsCisgICAgMHhjOWEyYWIwZSwgMHhmNGMyODJiZSwgMHhiMzYyZjg2ZSwgMHg4ZTAyZDFkZSwgMHgzYzIyMGRjZSwKKyAgICAweDAxNDIyNDdlLCAweDQ2ZTI1ZWFlLCAweDdiODI3NzFlLCAweGIxZTZiMDkyLCAweDhjODY5OTIyLAorICAgIDB4Y2IyNmUzZjIsIDB4ZjY0NmNhNDIsIDB4NDQ2NjE2NTIsIDB4NzkwNjNmZTIsIDB4M2VhNjQ1MzIsCisgICAgMHgwM2M2NmM4MiwgMHg4MTk2ZmI1MywgMHhiY2Y2ZDJlMywgMHhmYjU2YTgzMywgMHhjNjM2ODE4MywKKyAgICAweDc0MTY1ZDkzLCAweDQ5NzY3NDIzLCAweDBlZDYwZWYzLCAweDMzYjYyNzQzLCAweGQxMDYyNzEwLAorICAgIDB4ZWM2NjBlYTAsIDB4YWJjNjc0NzAsIDB4OTZhNjVkYzAsIDB4MjQ4NjgxZDAsIDB4MTllNmE4NjAsCisgICAgMHg1ZTQ2ZDJiMCwgMHg2MzI2ZmIwMCwgMHhlMTc2NmNkMSwgMHhkYzE2NDU2MSwgMHg5YmI2M2ZiMSwKKyAgICAweGE2ZDYxNjAxLCAweDE0ZjZjYTExLCAweDI5OTZlM2ExLCAweDZlMzY5OTcxLCAweDUzNTZiMGMxLAorICAgIDB4NzAyNzlmOTYsIDB4NGQ0N2I2MjYsIDB4MGFlN2NjZjYsIDB4Mzc4N2U1NDYsIDB4ODVhNzM5NTYsCisgICAgMHhiOGM3MTBlNiwgMHhmZjY3NmEzNiwgMHhjMjA3NDM4NiwgMHg0MDU3ZDQ1NywgMHg3ZDM3ZmRlNywKKyAgICAweDNhOTc4NzM3LCAweDA3ZjdhZTg3LCAweGI1ZDc3Mjk3LCAweDg4Yjc1YjI3LCAweGNmMTcyMWY3LAorICAgIDB4ZjI3NzA4NDcsIDB4MTBjNzA4MTQsIDB4MmRhNzIxYTQsIDB4NmEwNzViNzQsIDB4NTc2NzcyYzQsCisgICAgMHhlNTQ3YWVkNCwgMHhkODI3ODc2NCwgMHg5Zjg3ZmRiNCwgMHhhMmU3ZDQwNCwgMHgyMGI3NDNkNSwKKyAgICAweDFkZDc2YTY1LCAweDVhNzcxMGI1LCAweDY3MTczOTA1LCAweGQ1MzdlNTE1LCAweGU4NTdjY2E1LAorICAgIDB4YWZmN2I2NzUsIDB4OTI5NzlmYzUsIDB4ZTkxNWU4ZGIsIDB4ZDQ3NWMxNmIsIDB4OTNkNWJiYmIsCisgICAgMHhhZWI1OTIwYiwgMHgxYzk1NGUxYiwgMHgyMWY1NjdhYiwgMHg2NjU1MWQ3YiwgMHg1YjM1MzRjYiwKKyAgICAweGQ5NjVhMzFhLCAweGU0MDU4YWFhLCAweGEzYTVmMDdhLCAweDllYzVkOWNhLCAweDJjZTUwNWRhLAorICAgIDB4MTE4NTJjNmEsIDB4NTYyNTU2YmEsIDB4NmI0NTdmMGEsIDB4ODlmNTdmNTksIDB4YjQ5NTU2ZTksCisgICAgMHhmMzM1MmMzOSwgMHhjZTU1MDU4OSwgMHg3Yzc1ZDk5OSwgMHg0MTE1ZjAyOSwgMHgwNmI1OGFmOSwKKyAgICAweDNiZDVhMzQ5LCAweGI5ODUzNDk4LCAweDg0ZTUxZDI4LCAweGMzNDU2N2Y4LCAweGZlMjU0ZTQ4LAorICAgIDB4NGMwNTkyNTgsIDB4NzE2NWJiZTgsIDB4MzZjNWMxMzgsIDB4MGJhNWU4ODgsIDB4MjhkNGM3ZGYsCisgICAgMHgxNWI0ZWU2ZiwgMHg1MjE0OTRiZiwgMHg2Zjc0YmQwZiwgMHhkZDU0NjExZiwgMHhlMDM0NDhhZiwKKyAgICAweGE3OTQzMjdmLCAweDlhZjQxYmNmLCAweDE4YTQ4YzFlLCAweDI1YzRhNWFlLCAweDYyNjRkZjdlLAorICAgIDB4NWYwNGY2Y2UsIDB4ZWQyNDJhZGUsIDB4ZDA0NDAzNmUsIDB4OTdlNDc5YmUsIDB4YWE4NDUwMGUsCisgICAgMHg0ODM0NTA1ZCwgMHg3NTU0NzllZCwgMHgzMmY0MDMzZCwgMHgwZjk0MmE4ZCwgMHhiZGI0ZjY5ZCwKKyAgICAweDgwZDRkZjJkLCAweGM3NzRhNWZkLCAweGZhMTQ4YzRkLCAweDc4NDQxYjljLCAweDQ1MjQzMjJjLAorICAgIDB4MDI4NDQ4ZmMsIDB4M2ZlNDYxNGMsIDB4OGRjNGJkNWMsIDB4YjBhNDk0ZWMsIDB4ZjcwNGVlM2MsCisgICAgMHhjYTY0Yzc4Y30sCisgICB7MHgwMDAwMDAwMCwgMHhiOGJjNjc2NSwgMHhhYTA5Yzg4YiwgMHgxMmI1YWZlZSwgMHg4ZjYyOTc1NywKKyAgICAweDM3ZGVmMDMyLCAweDI1NmI1ZmRjLCAweDlkZDczOGI5LCAweGM1YjQyOGVmLCAweDdkMDg0ZjhhLAorICAgIDB4NmZiZGUwNjQsIDB4ZDcwMTg3MDEsIDB4NGFkNmJmYjgsIDB4ZjI2YWQ4ZGQsIDB4ZTBkZjc3MzMsCisgICAgMHg1ODYzMTA1NiwgMHg1MDE5NTc5ZiwgMHhlOGE1MzBmYSwgMHhmYTEwOWYxNCwgMHg0MmFjZjg3MSwKKyAgICAweGRmN2JjMGM4LCAweDY3YzdhN2FkLCAweDc1NzIwODQzLCAweGNkY2U2ZjI2LCAweDk1YWQ3ZjcwLAorICAgIDB4MmQxMTE4MTUsIDB4M2ZhNGI3ZmIsIDB4ODcxOGQwOWUsIDB4MWFjZmU4MjcsIDB4YTI3MzhmNDIsCisgICAgMHhiMGM2MjBhYywgMHgwODdhNDdjOSwgMHhhMDMyYWYzZSwgMHgxODhlYzg1YiwgMHgwYTNiNjdiNSwKKyAgICAweGIyODcwMGQwLCAweDJmNTAzODY5LCAweDk3ZWM1ZjBjLCAweDg1NTlmMGUyLCAweDNkZTU5Nzg3LAorICAgIDB4NjU4Njg3ZDEsIDB4ZGQzYWUwYjQsIDB4Y2Y4ZjRmNWEsIDB4NzczMzI4M2YsIDB4ZWFlNDEwODYsCisgICAgMHg1MjU4NzdlMywgMHg0MGVkZDgwZCwgMHhmODUxYmY2OCwgMHhmMDJiZjhhMSwgMHg0ODk3OWZjNCwKKyAgICAweDVhMjIzMDJhLCAweGUyOWU1NzRmLCAweDdmNDk2ZmY2LCAweGM3ZjUwODkzLCAweGQ1NDBhNzdkLAorICAgIDB4NmRmY2MwMTgsIDB4MzU5ZmQwNGUsIDB4OGQyM2I3MmIsIDB4OWY5NjE4YzUsIDB4MjcyYTdmYTAsCisgICAgMHhiYWZkNDcxOSwgMHgwMjQxMjA3YywgMHgxMGY0OGY5MiwgMHhhODQ4ZThmNywgMHg5YjE0NTgzZCwKKyAgICAweDIzYTgzZjU4LCAweDMxMWQ5MGI2LCAweDg5YTFmN2QzLCAweDE0NzZjZjZhLCAweGFjY2FhODBmLAorICAgIDB4YmU3ZjA3ZTEsIDB4MDZjMzYwODQsIDB4NWVhMDcwZDIsIDB4ZTYxYzE3YjcsIDB4ZjRhOWI4NTksCisgICAgMHg0YzE1ZGYzYywgMHhkMWMyZTc4NSwgMHg2OTdlODBlMCwgMHg3YmNiMmYwZSwgMHhjMzc3NDg2YiwKKyAgICAweGNiMGQwZmEyLCAweDczYjE2OGM3LCAweDYxMDRjNzI5LCAweGQ5YjhhMDRjLCAweDQ0NmY5OGY1LAorICAgIDB4ZmNkM2ZmOTAsIDB4ZWU2NjUwN2UsIDB4NTZkYTM3MWIsIDB4MGViOTI3NGQsIDB4YjYwNTQwMjgsCisgICAgMHhhNGIwZWZjNiwgMHgxYzBjODhhMywgMHg4MWRiYjAxYSwgMHgzOTY3ZDc3ZiwgMHgyYmQyNzg5MSwKKyAgICAweDkzNmUxZmY0LCAweDNiMjZmNzAzLCAweDgzOWE5MDY2LCAweDkxMmYzZjg4LCAweDI5OTM1OGVkLAorICAgIDB4YjQ0NDYwNTQsIDB4MGNmODA3MzEsIDB4MWU0ZGE4ZGYsIDB4YTZmMWNmYmEsIDB4ZmU5MmRmZWMsCisgICAgMHg0NjJlYjg4OSwgMHg1NDliMTc2NywgMHhlYzI3NzAwMiwgMHg3MWYwNDhiYiwgMHhjOTRjMmZkZSwKKyAgICAweGRiZjk4MDMwLCAweDYzNDVlNzU1LCAweDZiM2ZhMDljLCAweGQzODNjN2Y5LCAweGMxMzY2ODE3LAorICAgIDB4Nzk4YTBmNzIsIDB4ZTQ1ZDM3Y2IsIDB4NWNlMTUwYWUsIDB4NGU1NGZmNDAsIDB4ZjZlODk4MjUsCisgICAgMHhhZThiODg3MywgMHgxNjM3ZWYxNiwgMHgwNDgyNDBmOCwgMHhiYzNlMjc5ZCwgMHgyMWU5MWYyNCwKKyAgICAweDk5NTU3ODQxLCAweDhiZTBkN2FmLCAweDMzNWNiMGNhLCAweGVkNTliNjNiLCAweDU1ZTVkMTVlLAorICAgIDB4NDc1MDdlYjAsIDB4ZmZlYzE5ZDUsIDB4NjIzYjIxNmMsIDB4ZGE4NzQ2MDksIDB4YzgzMmU5ZTcsCisgICAgMHg3MDhlOGU4MiwgMHgyOGVkOWVkNCwgMHg5MDUxZjliMSwgMHg4MmU0NTY1ZiwgMHgzYTU4MzEzYSwKKyAgICAweGE3OGYwOTgzLCAweDFmMzM2ZWU2LCAweDBkODZjMTA4LCAweGI1M2FhNjZkLCAweGJkNDBlMWE0LAorICAgIDB4MDVmYzg2YzEsIDB4MTc0OTI5MmYsIDB4YWZmNTRlNGEsIDB4MzIyMjc2ZjMsIDB4OGE5ZTExOTYsCisgICAgMHg5ODJiYmU3OCwgMHgyMDk3ZDkxZCwgMHg3OGY0Yzk0YiwgMHhjMDQ4YWUyZSwgMHhkMmZkMDFjMCwKKyAgICAweDZhNDE2NmE1LCAweGY3OTY1ZTFjLCAweDRmMmEzOTc5LCAweDVkOWY5Njk3LCAweGU1MjNmMWYyLAorICAgIDB4NGQ2YjE5MDUsIDB4ZjVkNzdlNjAsIDB4ZTc2MmQxOGUsIDB4NWZkZWI2ZWIsIDB4YzIwOThlNTIsCisgICAgMHg3YWI1ZTkzNywgMHg2ODAwNDZkOSwgMHhkMGJjMjFiYywgMHg4OGRmMzFlYSwgMHgzMDYzNTY4ZiwKKyAgICAweDIyZDZmOTYxLCAweDlhNmE5ZTA0LCAweDA3YmRhNmJkLCAweGJmMDFjMWQ4LCAweGFkYjQ2ZTM2LAorICAgIDB4MTUwODA5NTMsIDB4MWQ3MjRlOWEsIDB4YTVjZTI5ZmYsIDB4Yjc3Yjg2MTEsIDB4MGZjN2UxNzQsCisgICAgMHg5MjEwZDljZCwgMHgyYWFjYmVhOCwgMHgzODE5MTE0NiwgMHg4MGE1NzYyMywgMHhkOGM2NjY3NSwKKyAgICAweDYwN2EwMTEwLCAweDcyY2ZhZWZlLCAweGNhNzNjOTliLCAweDU3YTRmMTIyLCAweGVmMTg5NjQ3LAorICAgIDB4ZmRhZDM5YTksIDB4NDUxMTVlY2MsIDB4NzY0ZGVlMDYsIDB4Y2VmMTg5NjMsIDB4ZGM0NDI2OGQsCisgICAgMHg2NGY4NDFlOCwgMHhmOTJmNzk1MSwgMHg0MTkzMWUzNCwgMHg1MzI2YjFkYSwgMHhlYjlhZDZiZiwKKyAgICAweGIzZjljNmU5LCAweDBiNDVhMThjLCAweDE5ZjAwZTYyLCAweGExNGM2OTA3LCAweDNjOWI1MWJlLAorICAgIDB4ODQyNzM2ZGIsIDB4OTY5Mjk5MzUsIDB4MmUyZWZlNTAsIDB4MjY1NGI5OTksIDB4OWVlOGRlZmMsCisgICAgMHg4YzVkNzExMiwgMHgzNGUxMTY3NywgMHhhOTM2MmVjZSwgMHgxMThhNDlhYiwgMHgwMzNmZTY0NSwKKyAgICAweGJiODM4MTIwLCAweGUzZTA5MTc2LCAweDViNWNmNjEzLCAweDQ5ZTk1OWZkLCAweGYxNTUzZTk4LAorICAgIDB4NmM4MjA2MjEsIDB4ZDQzZTYxNDQsIDB4YzY4YmNlYWEsIDB4N2UzN2E5Y2YsIDB4ZDY3ZjQxMzgsCisgICAgMHg2ZWMzMjY1ZCwgMHg3Yzc2ODliMywgMHhjNGNhZWVkNiwgMHg1OTFkZDY2ZiwgMHhlMWExYjEwYSwKKyAgICAweGYzMTQxZWU0LCAweDRiYTg3OTgxLCAweDEzY2I2OWQ3LCAweGFiNzcwZWIyLCAweGI5YzJhMTVjLAorICAgIDB4MDE3ZWM2MzksIDB4OWNhOWZlODAsIDB4MjQxNTk5ZTUsIDB4MzZhMDM2MGIsIDB4OGUxYzUxNmUsCisgICAgMHg4NjY2MTZhNywgMHgzZWRhNzFjMiwgMHgyYzZmZGUyYywgMHg5NGQzYjk0OSwgMHgwOTA0ODFmMCwKKyAgICAweGIxYjhlNjk1LCAweGEzMGQ0OTdiLCAweDFiYjEyZTFlLCAweDQzZDIzZTQ4LCAweGZiNmU1OTJkLAorICAgIDB4ZTlkYmY2YzMsIDB4NTE2NzkxYTYsIDB4Y2NiMGE5MWYsIDB4NzQwY2NlN2EsIDB4NjZiOTYxOTQsCisgICAgMHhkZTA1MDZmMX0sCisgICB7MHgwMDAwMDAwMCwgMHgwMWMyNmEzNywgMHgwMzg0ZDQ2ZSwgMHgwMjQ2YmU1OSwgMHgwNzA5YThkYywKKyAgICAweDA2Y2JjMmViLCAweDA0OGQ3Y2IyLCAweDA1NGYxNjg1LCAweDBlMTM1MWI4LCAweDBmZDEzYjhmLAorICAgIDB4MGQ5Nzg1ZDYsIDB4MGM1NWVmZTEsIDB4MDkxYWY5NjQsIDB4MDhkODkzNTMsIDB4MGE5ZTJkMGEsCisgICAgMHgwYjVjNDczZCwgMHgxYzI2YTM3MCwgMHgxZGU0Yzk0NywgMHgxZmEyNzcxZSwgMHgxZTYwMWQyOSwKKyAgICAweDFiMmYwYmFjLCAweDFhZWQ2MTliLCAweDE4YWJkZmMyLCAweDE5NjliNWY1LCAweDEyMzVmMmM4LAorICAgIDB4MTNmNzk4ZmYsIDB4MTFiMTI2YTYsIDB4MTA3MzRjOTEsIDB4MTUzYzVhMTQsIDB4MTRmZTMwMjMsCisgICAgMHgxNmI4OGU3YSwgMHgxNzdhZTQ0ZCwgMHgzODRkNDZlMCwgMHgzOThmMmNkNywgMHgzYmM5OTI4ZSwKKyAgICAweDNhMGJmOGI5LCAweDNmNDRlZTNjLCAweDNlODY4NDBiLCAweDNjYzAzYTUyLCAweDNkMDI1MDY1LAorICAgIDB4MzY1ZTE3NTgsIDB4Mzc5YzdkNmYsIDB4MzVkYWMzMzYsIDB4MzQxOGE5MDEsIDB4MzE1N2JmODQsCisgICAgMHgzMDk1ZDViMywgMHgzMmQzNmJlYSwgMHgzMzExMDFkZCwgMHgyNDZiZTU5MCwgMHgyNWE5OGZhNywKKyAgICAweDI3ZWYzMWZlLCAweDI2MmQ1YmM5LCAweDIzNjI0ZDRjLCAweDIyYTAyNzdiLCAweDIwZTY5OTIyLAorICAgIDB4MjEyNGYzMTUsIDB4MmE3OGI0MjgsIDB4MmJiYWRlMWYsIDB4MjlmYzYwNDYsIDB4MjgzZTBhNzEsCisgICAgMHgyZDcxMWNmNCwgMHgyY2IzNzZjMywgMHgyZWY1Yzg5YSwgMHgyZjM3YTJhZCwgMHg3MDlhOGRjMCwKKyAgICAweDcxNThlN2Y3LCAweDczMWU1OWFlLCAweDcyZGMzMzk5LCAweDc3OTMyNTFjLCAweDc2NTE0ZjJiLAorICAgIDB4NzQxN2YxNzIsIDB4NzVkNTliNDUsIDB4N2U4OWRjNzgsIDB4N2Y0YmI2NGYsIDB4N2QwZDA4MTYsCisgICAgMHg3Y2NmNjIyMSwgMHg3OTgwNzRhNCwgMHg3ODQyMWU5MywgMHg3YTA0YTBjYSwgMHg3YmM2Y2FmZCwKKyAgICAweDZjYmMyZWIwLCAweDZkN2U0NDg3LCAweDZmMzhmYWRlLCAweDZlZmE5MGU5LCAweDZiYjU4NjZjLAorICAgIDB4NmE3N2VjNWIsIDB4NjgzMTUyMDIsIDB4NjlmMzM4MzUsIDB4NjJhZjdmMDgsIDB4NjM2ZDE1M2YsCisgICAgMHg2MTJiYWI2NiwgMHg2MGU5YzE1MSwgMHg2NWE2ZDdkNCwgMHg2NDY0YmRlMywgMHg2NjIyMDNiYSwKKyAgICAweDY3ZTA2OThkLCAweDQ4ZDdjYjIwLCAweDQ5MTVhMTE3LCAweDRiNTMxZjRlLCAweDRhOTE3NTc5LAorICAgIDB4NGZkZTYzZmMsIDB4NGUxYzA5Y2IsIDB4NGM1YWI3OTIsIDB4NGQ5OGRkYTUsIDB4NDZjNDlhOTgsCisgICAgMHg0NzA2ZjBhZiwgMHg0NTQwNGVmNiwgMHg0NDgyMjRjMSwgMHg0MWNkMzI0NCwgMHg0MDBmNTg3MywKKyAgICAweDQyNDllNjJhLCAweDQzOGI4YzFkLCAweDU0ZjE2ODUwLCAweDU1MzMwMjY3LCAweDU3NzViYzNlLAorICAgIDB4NTZiN2Q2MDksIDB4NTNmOGMwOGMsIDB4NTIzYWFhYmIsIDB4NTA3YzE0ZTIsIDB4NTFiZTdlZDUsCisgICAgMHg1YWUyMzllOCwgMHg1YjIwNTNkZiwgMHg1OTY2ZWQ4NiwgMHg1OGE0ODdiMSwgMHg1ZGViOTEzNCwKKyAgICAweDVjMjlmYjAzLCAweDVlNmY0NTVhLCAweDVmYWQyZjZkLCAweGUxMzUxYjgwLCAweGUwZjc3MWI3LAorICAgIDB4ZTJiMWNmZWUsIDB4ZTM3M2E1ZDksIDB4ZTYzY2IzNWMsIDB4ZTdmZWQ5NmIsIDB4ZTViODY3MzIsCisgICAgMHhlNDdhMGQwNSwgMHhlZjI2NGEzOCwgMHhlZWU0MjAwZiwgMHhlY2EyOWU1NiwgMHhlZDYwZjQ2MSwKKyAgICAweGU4MmZlMmU0LCAweGU5ZWQ4OGQzLCAweGViYWIzNjhhLCAweGVhNjk1Y2JkLCAweGZkMTNiOGYwLAorICAgIDB4ZmNkMWQyYzcsIDB4ZmU5NzZjOWUsIDB4ZmY1NTA2YTksIDB4ZmExYTEwMmMsIDB4ZmJkODdhMWIsCisgICAgMHhmOTllYzQ0MiwgMHhmODVjYWU3NSwgMHhmMzAwZTk0OCwgMHhmMmMyODM3ZiwgMHhmMDg0M2QyNiwKKyAgICAweGYxNDY1NzExLCAweGY0MDk0MTk0LCAweGY1Y2IyYmEzLCAweGY3OGQ5NWZhLCAweGY2NGZmZmNkLAorICAgIDB4ZDk3ODVkNjAsIDB4ZDhiYTM3NTcsIDB4ZGFmYzg5MGUsIDB4ZGIzZWUzMzksIDB4ZGU3MWY1YmMsCisgICAgMHhkZmIzOWY4YiwgMHhkZGY1MjFkMiwgMHhkYzM3NGJlNSwgMHhkNzZiMGNkOCwgMHhkNmE5NjZlZiwKKyAgICAweGQ0ZWZkOGI2LCAweGQ1MmRiMjgxLCAweGQwNjJhNDA0LCAweGQxYTBjZTMzLCAweGQzZTY3MDZhLAorICAgIDB4ZDIyNDFhNWQsIDB4YzU1ZWZlMTAsIDB4YzQ5Yzk0MjcsIDB4YzZkYTJhN2UsIDB4YzcxODQwNDksCisgICAgMHhjMjU3NTZjYywgMHhjMzk1M2NmYiwgMHhjMWQzODJhMiwgMHhjMDExZTg5NSwgMHhjYjRkYWZhOCwKKyAgICAweGNhOGZjNTlmLCAweGM4Yzk3YmM2LCAweGM5MGIxMWYxLCAweGNjNDQwNzc0LCAweGNkODY2ZDQzLAorICAgIDB4Y2ZjMGQzMWEsIDB4Y2UwMmI5MmQsIDB4OTFhZjk2NDAsIDB4OTA2ZGZjNzcsIDB4OTIyYjQyMmUsCisgICAgMHg5M2U5MjgxOSwgMHg5NmE2M2U5YywgMHg5NzY0NTRhYiwgMHg5NTIyZWFmMiwgMHg5NGUwODBjNSwKKyAgICAweDlmYmNjN2Y4LCAweDllN2VhZGNmLCAweDljMzgxMzk2LCAweDlkZmE3OWExLCAweDk4YjU2ZjI0LAorICAgIDB4OTk3NzA1MTMsIDB4OWIzMWJiNGEsIDB4OWFmM2QxN2QsIDB4OGQ4OTM1MzAsIDB4OGM0YjVmMDcsCisgICAgMHg4ZTBkZTE1ZSwgMHg4ZmNmOGI2OSwgMHg4YTgwOWRlYywgMHg4YjQyZjdkYiwgMHg4OTA0NDk4MiwKKyAgICAweDg4YzYyM2I1LCAweDgzOWE2NDg4LCAweDgyNTgwZWJmLCAweDgwMWViMGU2LCAweDgxZGNkYWQxLAorICAgIDB4ODQ5M2NjNTQsIDB4ODU1MWE2NjMsIDB4ODcxNzE4M2EsIDB4ODZkNTcyMGQsIDB4YTllMmQwYTAsCisgICAgMHhhODIwYmE5NywgMHhhYTY2MDRjZSwgMHhhYmE0NmVmOSwgMHhhZWViNzg3YywgMHhhZjI5MTI0YiwKKyAgICAweGFkNmZhYzEyLCAweGFjYWRjNjI1LCAweGE3ZjE4MTE4LCAweGE2MzNlYjJmLCAweGE0NzU1NTc2LAorICAgIDB4YTViNzNmNDEsIDB4YTBmODI5YzQsIDB4YTEzYTQzZjMsIDB4YTM3Y2ZkYWEsIDB4YTJiZTk3OWQsCisgICAgMHhiNWM0NzNkMCwgMHhiNDA2MTllNywgMHhiNjQwYTdiZSwgMHhiNzgyY2Q4OSwgMHhiMmNkZGIwYywKKyAgICAweGIzMGZiMTNiLCAweGIxNDkwZjYyLCAweGIwOGI2NTU1LCAweGJiZDcyMjY4LCAweGJhMTU0ODVmLAorICAgIDB4Yjg1M2Y2MDYsIDB4Yjk5MTljMzEsIDB4YmNkZThhYjQsIDB4YmQxY2UwODMsIDB4YmY1YTVlZGEsCisgICAgMHhiZTk4MzRlZH0sCisgICB7MHgwMDAwMDAwMCwgMHgxOTFiMzE0MSwgMHgzMjM2NjI4MiwgMHgyYjJkNTNjMywgMHg2NDZjYzUwNCwKKyAgICAweDdkNzdmNDQ1LCAweDU2NWFhNzg2LCAweDRmNDE5NmM3LCAweGM4ZDk4YTA4LCAweGQxYzJiYjQ5LAorICAgIDB4ZmFlZmU4OGEsIDB4ZTNmNGQ5Y2IsIDB4YWNiNTRmMGMsIDB4YjVhZTdlNGQsIDB4OWU4MzJkOGUsCisgICAgMHg4Nzk4MWNjZiwgMHg0YWMyMTI1MSwgMHg1M2Q5MjMxMCwgMHg3OGY0NzBkMywgMHg2MWVmNDE5MiwKKyAgICAweDJlYWVkNzU1LCAweDM3YjVlNjE0LCAweDFjOThiNWQ3LCAweDA1ODM4NDk2LCAweDgyMWI5ODU5LAorICAgIDB4OWIwMGE5MTgsIDB4YjAyZGZhZGIsIDB4YTkzNmNiOWEsIDB4ZTY3NzVkNWQsIDB4ZmY2YzZjMWMsCisgICAgMHhkNDQxM2ZkZiwgMHhjZDVhMGU5ZSwgMHg5NTg0MjRhMiwgMHg4YzlmMTVlMywgMHhhN2IyNDYyMCwKKyAgICAweGJlYTk3NzYxLCAweGYxZThlMWE2LCAweGU4ZjNkMGU3LCAweGMzZGU4MzI0LCAweGRhYzViMjY1LAorICAgIDB4NWQ1ZGFlYWEsIDB4NDQ0NjlmZWIsIDB4NmY2YmNjMjgsIDB4NzY3MGZkNjksIDB4MzkzMTZiYWUsCisgICAgMHgyMDJhNWFlZiwgMHgwYjA3MDkyYywgMHgxMjFjMzg2ZCwgMHhkZjQ2MzZmMywgMHhjNjVkMDdiMiwKKyAgICAweGVkNzA1NDcxLCAweGY0NmI2NTMwLCAweGJiMmFmM2Y3LCAweGEyMzFjMmI2LCAweDg5MWM5MTc1LAorICAgIDB4OTAwN2EwMzQsIDB4MTc5ZmJjZmIsIDB4MGU4NDhkYmEsIDB4MjVhOWRlNzksIDB4M2NiMmVmMzgsCisgICAgMHg3M2YzNzlmZiwgMHg2YWU4NDhiZSwgMHg0MWM1MWI3ZCwgMHg1OGRlMmEzYywgMHhmMDc5NGYwNSwKKyAgICAweGU5NjI3ZTQ0LCAweGMyNGYyZDg3LCAweGRiNTQxY2M2LCAweDk0MTU4YTAxLCAweDhkMGViYjQwLAorICAgIDB4YTYyM2U4ODMsIDB4YmYzOGQ5YzIsIDB4MzhhMGM1MGQsIDB4MjFiYmY0NGMsIDB4MGE5NmE3OGYsCisgICAgMHgxMzhkOTZjZSwgMHg1Y2NjMDAwOSwgMHg0NWQ3MzE0OCwgMHg2ZWZhNjI4YiwgMHg3N2UxNTNjYSwKKyAgICAweGJhYmI1ZDU0LCAweGEzYTA2YzE1LCAweDg4OGQzZmQ2LCAweDkxOTYwZTk3LCAweGRlZDc5ODUwLAorICAgIDB4YzdjY2E5MTEsIDB4ZWNlMWZhZDIsIDB4ZjVmYWNiOTMsIDB4NzI2MmQ3NWMsIDB4NmI3OWU2MWQsCisgICAgMHg0MDU0YjVkZSwgMHg1OTRmODQ5ZiwgMHgxNjBlMTI1OCwgMHgwZjE1MjMxOSwgMHgyNDM4NzBkYSwKKyAgICAweDNkMjM0MTliLCAweDY1ZmQ2YmE3LCAweDdjZTY1YWU2LCAweDU3Y2IwOTI1LCAweDRlZDAzODY0LAorICAgIDB4MDE5MWFlYTMsIDB4MTg4YTlmZTIsIDB4MzNhN2NjMjEsIDB4MmFiY2ZkNjAsIDB4YWQyNGUxYWYsCisgICAgMHhiNDNmZDBlZSwgMHg5ZjEyODMyZCwgMHg4NjA5YjI2YywgMHhjOTQ4MjRhYiwgMHhkMDUzMTVlYSwKKyAgICAweGZiN2U0NjI5LCAweGUyNjU3NzY4LCAweDJmM2Y3OWY2LCAweDM2MjQ0OGI3LCAweDFkMDkxYjc0LAorICAgIDB4MDQxMjJhMzUsIDB4NGI1M2JjZjIsIDB4NTI0ODhkYjMsIDB4Nzk2NWRlNzAsIDB4NjA3ZWVmMzEsCisgICAgMHhlN2U2ZjNmZSwgMHhmZWZkYzJiZiwgMHhkNWQwOTE3YywgMHhjY2NiYTAzZCwgMHg4MzhhMzZmYSwKKyAgICAweDlhOTEwN2JiLCAweGIxYmM1NDc4LCAweGE4YTc2NTM5LCAweDNiODM5ODRiLCAweDIyOThhOTBhLAorICAgIDB4MDliNWZhYzksIDB4MTBhZWNiODgsIDB4NWZlZjVkNGYsIDB4NDZmNDZjMGUsIDB4NmRkOTNmY2QsCisgICAgMHg3NGMyMGU4YywgMHhmMzVhMTI0MywgMHhlYTQxMjMwMiwgMHhjMTZjNzBjMSwgMHhkODc3NDE4MCwKKyAgICAweDk3MzZkNzQ3LCAweDhlMmRlNjA2LCAweGE1MDBiNWM1LCAweGJjMWI4NDg0LCAweDcxNDE4YTFhLAorICAgIDB4Njg1YWJiNWIsIDB4NDM3N2U4OTgsIDB4NWE2Y2Q5ZDksIDB4MTUyZDRmMWUsIDB4MGMzNjdlNWYsCisgICAgMHgyNzFiMmQ5YywgMHgzZTAwMWNkZCwgMHhiOTk4MDAxMiwgMHhhMDgzMzE1MywgMHg4YmFlNjI5MCwKKyAgICAweDkyYjU1M2QxLCAweGRkZjRjNTE2LCAweGM0ZWZmNDU3LCAweGVmYzJhNzk0LCAweGY2ZDk5NmQ1LAorICAgIDB4YWUwN2JjZTksIDB4YjcxYzhkYTgsIDB4OWMzMWRlNmIsIDB4ODUyYWVmMmEsIDB4Y2E2Yjc5ZWQsCisgICAgMHhkMzcwNDhhYywgMHhmODVkMWI2ZiwgMHhlMTQ2MmEyZSwgMHg2NmRlMzZlMSwgMHg3ZmM1MDdhMCwKKyAgICAweDU0ZTg1NDYzLCAweDRkZjM2NTIyLCAweDAyYjJmM2U1LCAweDFiYTljMmE0LCAweDMwODQ5MTY3LAorICAgIDB4Mjk5ZmEwMjYsIDB4ZTRjNWFlYjgsIDB4ZmRkZTlmZjksIDB4ZDZmM2NjM2EsIDB4Y2ZlOGZkN2IsCisgICAgMHg4MGE5NmJiYywgMHg5OWIyNWFmZCwgMHhiMjlmMDkzZSwgMHhhYjg0Mzg3ZiwgMHgyYzFjMjRiMCwKKyAgICAweDM1MDcxNWYxLCAweDFlMmE0NjMyLCAweDA3MzE3NzczLCAweDQ4NzBlMWI0LCAweDUxNmJkMGY1LAorICAgIDB4N2E0NjgzMzYsIDB4NjM1ZGIyNzcsIDB4Y2JmYWQ3NGUsIDB4ZDJlMWU2MGYsIDB4ZjljY2I1Y2MsCisgICAgMHhlMGQ3ODQ4ZCwgMHhhZjk2MTI0YSwgMHhiNjhkMjMwYiwgMHg5ZGEwNzBjOCwgMHg4NGJiNDE4OSwKKyAgICAweDAzMjM1ZDQ2LCAweDFhMzg2YzA3LCAweDMxMTUzZmM0LCAweDI4MGUwZTg1LCAweDY3NGY5ODQyLAorICAgIDB4N2U1NGE5MDMsIDB4NTU3OWZhYzAsIDB4NGM2MmNiODEsIDB4ODEzOGM1MWYsIDB4OTgyM2Y0NWUsCisgICAgMHhiMzBlYTc5ZCwgMHhhYTE1OTZkYywgMHhlNTU0MDAxYiwgMHhmYzRmMzE1YSwgMHhkNzYyNjI5OSwKKyAgICAweGNlNzk1M2Q4LCAweDQ5ZTE0ZjE3LCAweDUwZmE3ZTU2LCAweDdiZDcyZDk1LCAweDYyY2MxY2Q0LAorICAgIDB4MmQ4ZDhhMTMsIDB4MzQ5NmJiNTIsIDB4MWZiYmU4OTEsIDB4MDZhMGQ5ZDAsIDB4NWU3ZWYzZWMsCisgICAgMHg0NzY1YzJhZCwgMHg2YzQ4OTE2ZSwgMHg3NTUzYTAyZiwgMHgzYTEyMzZlOCwgMHgyMzA5MDdhOSwKKyAgICAweDA4MjQ1NDZhLCAweDExM2Y2NTJiLCAweDk2YTc3OWU0LCAweDhmYmM0OGE1LCAweGE0OTExYjY2LAorICAgIDB4YmQ4YTJhMjcsIDB4ZjJjYmJjZTAsIDB4ZWJkMDhkYTEsIDB4YzBmZGRlNjIsIDB4ZDllNmVmMjMsCisgICAgMHgxNGJjZTFiZCwgMHgwZGE3ZDBmYywgMHgyNjhhODMzZiwgMHgzZjkxYjI3ZSwgMHg3MGQwMjRiOSwKKyAgICAweDY5Y2IxNWY4LCAweDQyZTY0NjNiLCAweDViZmQ3NzdhLCAweGRjNjU2YmI1LCAweGM1N2U1YWY0LAorICAgIDB4ZWU1MzA5MzcsIDB4Zjc0ODM4NzYsIDB4YjgwOWFlYjEsIDB4YTExMjlmZjAsIDB4OGEzZmNjMzMsCisgICAgMHg5MzI0ZmQ3Mn0sCisgICB7MHgwMDAwMDAwMCwgMHg3NzA3MzA5NiwgMHhlZTBlNjEyYywgMHg5OTA5NTFiYSwgMHgwNzZkYzQxOSwKKyAgICAweDcwNmFmNDhmLCAweGU5NjNhNTM1LCAweDllNjQ5NWEzLCAweDBlZGI4ODMyLCAweDc5ZGNiOGE0LAorICAgIDB4ZTBkNWU5MWUsIDB4OTdkMmQ5ODgsIDB4MDliNjRjMmIsIDB4N2ViMTdjYmQsIDB4ZTdiODJkMDcsCisgICAgMHg5MGJmMWQ5MSwgMHgxZGI3MTA2NCwgMHg2YWIwMjBmMiwgMHhmM2I5NzE0OCwgMHg4NGJlNDFkZSwKKyAgICAweDFhZGFkNDdkLCAweDZkZGRlNGViLCAweGY0ZDRiNTUxLCAweDgzZDM4NWM3LCAweDEzNmM5ODU2LAorICAgIDB4NjQ2YmE4YzAsIDB4ZmQ2MmY5N2EsIDB4OGE2NWM5ZWMsIDB4MTQwMTVjNGYsIDB4NjMwNjZjZDksCisgICAgMHhmYTBmM2Q2MywgMHg4ZDA4MGRmNSwgMHgzYjZlMjBjOCwgMHg0YzY5MTA1ZSwgMHhkNTYwNDFlNCwKKyAgICAweGEyNjc3MTcyLCAweDNjMDNlNGQxLCAweDRiMDRkNDQ3LCAweGQyMGQ4NWZkLCAweGE1MGFiNTZiLAorICAgIDB4MzViNWE4ZmEsIDB4NDJiMjk4NmMsIDB4ZGJiYmM5ZDYsIDB4YWNiY2Y5NDAsIDB4MzJkODZjZTMsCisgICAgMHg0NWRmNWM3NSwgMHhkY2Q2MGRjZiwgMHhhYmQxM2Q1OSwgMHgyNmQ5MzBhYywgMHg1MWRlMDAzYSwKKyAgICAweGM4ZDc1MTgwLCAweGJmZDA2MTE2LCAweDIxYjRmNGI1LCAweDU2YjNjNDIzLCAweGNmYmE5NTk5LAorICAgIDB4YjhiZGE1MGYsIDB4MjgwMmI4OWUsIDB4NWYwNTg4MDgsIDB4YzYwY2Q5YjIsIDB4YjEwYmU5MjQsCisgICAgMHgyZjZmN2M4NywgMHg1ODY4NGMxMSwgMHhjMTYxMWRhYiwgMHhiNjY2MmQzZCwgMHg3NmRjNDE5MCwKKyAgICAweDAxZGI3MTA2LCAweDk4ZDIyMGJjLCAweGVmZDUxMDJhLCAweDcxYjE4NTg5LCAweDA2YjZiNTFmLAorICAgIDB4OWZiZmU0YTUsIDB4ZThiOGQ0MzMsIDB4NzgwN2M5YTIsIDB4MGYwMGY5MzQsIDB4OTYwOWE4OGUsCisgICAgMHhlMTBlOTgxOCwgMHg3ZjZhMGRiYiwgMHgwODZkM2QyZCwgMHg5MTY0NmM5NywgMHhlNjYzNWMwMSwKKyAgICAweDZiNmI1MWY0LCAweDFjNmM2MTYyLCAweDg1NjUzMGQ4LCAweGYyNjIwMDRlLCAweDZjMDY5NWVkLAorICAgIDB4MWIwMWE1N2IsIDB4ODIwOGY0YzEsIDB4ZjUwZmM0NTcsIDB4NjViMGQ5YzYsIDB4MTJiN2U5NTAsCisgICAgMHg4YmJlYjhlYSwgMHhmY2I5ODg3YywgMHg2MmRkMWRkZiwgMHgxNWRhMmQ0OSwgMHg4Y2QzN2NmMywKKyAgICAweGZiZDQ0YzY1LCAweDRkYjI2MTU4LCAweDNhYjU1MWNlLCAweGEzYmMwMDc0LCAweGQ0YmIzMGUyLAorICAgIDB4NGFkZmE1NDEsIDB4M2RkODk1ZDcsIDB4YTRkMWM0NmQsIDB4ZDNkNmY0ZmIsIDB4NDM2OWU5NmEsCisgICAgMHgzNDZlZDlmYywgMHhhZDY3ODg0NiwgMHhkYTYwYjhkMCwgMHg0NDA0MmQ3MywgMHgzMzAzMWRlNSwKKyAgICAweGFhMGE0YzVmLCAweGRkMGQ3Y2M5LCAweDUwMDU3MTNjLCAweDI3MDI0MWFhLCAweGJlMGIxMDEwLAorICAgIDB4YzkwYzIwODYsIDB4NTc2OGI1MjUsIDB4MjA2Zjg1YjMsIDB4Yjk2NmQ0MDksIDB4Y2U2MWU0OWYsCisgICAgMHg1ZWRlZjkwZSwgMHgyOWQ5Yzk5OCwgMHhiMGQwOTgyMiwgMHhjN2Q3YThiNCwgMHg1OWIzM2QxNywKKyAgICAweDJlYjQwZDgxLCAweGI3YmQ1YzNiLCAweGMwYmE2Y2FkLCAweGVkYjg4MzIwLCAweDlhYmZiM2I2LAorICAgIDB4MDNiNmUyMGMsIDB4NzRiMWQyOWEsIDB4ZWFkNTQ3MzksIDB4OWRkMjc3YWYsIDB4MDRkYjI2MTUsCisgICAgMHg3M2RjMTY4MywgMHhlMzYzMGIxMiwgMHg5NDY0M2I4NCwgMHgwZDZkNmEzZSwgMHg3YTZhNWFhOCwKKyAgICAweGU0MGVjZjBiLCAweDkzMDlmZjlkLCAweDBhMDBhZTI3LCAweDdkMDc5ZWIxLCAweGYwMGY5MzQ0LAorICAgIDB4ODcwOGEzZDIsIDB4MWUwMWYyNjgsIDB4NjkwNmMyZmUsIDB4Zjc2MjU3NWQsIDB4ODA2NTY3Y2IsCisgICAgMHgxOTZjMzY3MSwgMHg2ZTZiMDZlNywgMHhmZWQ0MWI3NiwgMHg4OWQzMmJlMCwgMHgxMGRhN2E1YSwKKyAgICAweDY3ZGQ0YWNjLCAweGY5YjlkZjZmLCAweDhlYmVlZmY5LCAweDE3YjdiZTQzLCAweDYwYjA4ZWQ1LAorICAgIDB4ZDZkNmEzZTgsIDB4YTFkMTkzN2UsIDB4MzhkOGMyYzQsIDB4NGZkZmYyNTIsIDB4ZDFiYjY3ZjEsCisgICAgMHhhNmJjNTc2NywgMHgzZmI1MDZkZCwgMHg0OGIyMzY0YiwgMHhkODBkMmJkYSwgMHhhZjBhMWI0YywKKyAgICAweDM2MDM0YWY2LCAweDQxMDQ3YTYwLCAweGRmNjBlZmMzLCAweGE4NjdkZjU1LCAweDMxNmU4ZWVmLAorICAgIDB4NDY2OWJlNzksIDB4Y2I2MWIzOGMsIDB4YmM2NjgzMWEsIDB4MjU2ZmQyYTAsIDB4NTI2OGUyMzYsCisgICAgMHhjYzBjNzc5NSwgMHhiYjBiNDcwMywgMHgyMjAyMTZiOSwgMHg1NTA1MjYyZiwgMHhjNWJhM2JiZSwKKyAgICAweGIyYmQwYjI4LCAweDJiYjQ1YTkyLCAweDVjYjM2YTA0LCAweGMyZDdmZmE3LCAweGI1ZDBjZjMxLAorICAgIDB4MmNkOTllOGIsIDB4NWJkZWFlMWQsIDB4OWI2NGMyYjAsIDB4ZWM2M2YyMjYsIDB4NzU2YWEzOWMsCisgICAgMHgwMjZkOTMwYSwgMHg5YzA5MDZhOSwgMHhlYjBlMzYzZiwgMHg3MjA3Njc4NSwgMHgwNTAwNTcxMywKKyAgICAweDk1YmY0YTgyLCAweGUyYjg3YTE0LCAweDdiYjEyYmFlLCAweDBjYjYxYjM4LCAweDkyZDI4ZTliLAorICAgIDB4ZTVkNWJlMGQsIDB4N2NkY2VmYjcsIDB4MGJkYmRmMjEsIDB4ODZkM2QyZDQsIDB4ZjFkNGUyNDIsCisgICAgMHg2OGRkYjNmOCwgMHgxZmRhODM2ZSwgMHg4MWJlMTZjZCwgMHhmNmI5MjY1YiwgMHg2ZmIwNzdlMSwKKyAgICAweDE4Yjc0Nzc3LCAweDg4MDg1YWU2LCAweGZmMGY2YTcwLCAweDY2MDYzYmNhLCAweDExMDEwYjVjLAorICAgIDB4OGY2NTllZmYsIDB4Zjg2MmFlNjksIDB4NjE2YmZmZDMsIDB4MTY2Y2NmNDUsIDB4YTAwYWUyNzgsCisgICAgMHhkNzBkZDJlZSwgMHg0ZTA0ODM1NCwgMHgzOTAzYjNjMiwgMHhhNzY3MjY2MSwgMHhkMDYwMTZmNywKKyAgICAweDQ5Njk0NzRkLCAweDNlNmU3N2RiLCAweGFlZDE2YTRhLCAweGQ5ZDY1YWRjLCAweDQwZGYwYjY2LAorICAgIDB4MzdkODNiZjAsIDB4YTliY2FlNTMsIDB4ZGViYjllYzUsIDB4NDdiMmNmN2YsIDB4MzBiNWZmZTksCisgICAgMHhiZGJkZjIxYywgMHhjYWJhYzI4YSwgMHg1M2IzOTMzMCwgMHgyNGI0YTNhNiwgMHhiYWQwMzYwNSwKKyAgICAweGNkZDcwNjkzLCAweDU0ZGU1NzI5LCAweDIzZDk2N2JmLCAweGIzNjY3YTJlLCAweGM0NjE0YWI4LAorICAgIDB4NWQ2ODFiMDIsIDB4MmE2ZjJiOTQsIDB4YjQwYmJlMzcsIDB4YzMwYzhlYTEsIDB4NWEwNWRmMWIsCisgICAgMHgyZDAyZWY4ZH19OworCitsb2NhbCBjb25zdCB6X3dvcmRfdCBGQVIgY3JjX2JyYWlkX2JpZ190YWJsZVtdWzI1Nl0gPSB7CisgICB7MHgwMDAwMDAwMDAwMDAwMDAwLCAweDk2MzAwNzc3MDAwMDAwMDAsIDB4MmM2MTBlZWUwMDAwMDAwMCwKKyAgICAweGJhNTEwOTk5MDAwMDAwMDAsIDB4MTljNDZkMDcwMDAwMDAwMCwgMHg4ZmY0NmE3MDAwMDAwMDAwLAorICAgIDB4MzVhNTYzZTkwMDAwMDAwMCwgMHhhMzk1NjQ5ZTAwMDAwMDAwLCAweDMyODhkYjBlMDAwMDAwMDAsCisgICAgMHhhNGI4ZGM3OTAwMDAwMDAwLCAweDFlZTlkNWUwMDAwMDAwMDAsIDB4ODhkOWQyOTcwMDAwMDAwMCwKKyAgICAweDJiNGNiNjA5MDAwMDAwMDAsIDB4YmQ3Y2IxN2UwMDAwMDAwMCwgMHgwNzJkYjhlNzAwMDAwMDAwLAorICAgIDB4OTExZGJmOTAwMDAwMDAwMCwgMHg2NDEwYjcxZDAwMDAwMDAwLCAweGYyMjBiMDZhMDAwMDAwMDAsCisgICAgMHg0ODcxYjlmMzAwMDAwMDAwLCAweGRlNDFiZTg0MDAwMDAwMDAsIDB4N2RkNGRhMWEwMDAwMDAwMCwKKyAgICAweGViZTRkZDZkMDAwMDAwMDAsIDB4NTFiNWQ0ZjQwMDAwMDAwMCwgMHhjNzg1ZDM4MzAwMDAwMDAwLAorICAgIDB4NTY5ODZjMTMwMDAwMDAwMCwgMHhjMGE4NmI2NDAwMDAwMDAwLCAweDdhZjk2MmZkMDAwMDAwMDAsCisgICAgMHhlY2M5NjU4YTAwMDAwMDAwLCAweDRmNWMwMTE0MDAwMDAwMDAsIDB4ZDk2YzA2NjMwMDAwMDAwMCwKKyAgICAweDYzM2QwZmZhMDAwMDAwMDAsIDB4ZjUwZDA4OGQwMDAwMDAwMCwgMHhjODIwNmUzYjAwMDAwMDAwLAorICAgIDB4NWUxMDY5NGMwMDAwMDAwMCwgMHhlNDQxNjBkNTAwMDAwMDAwLCAweDcyNzE2N2EyMDAwMDAwMDAsCisgICAgMHhkMWU0MDMzYzAwMDAwMDAwLCAweDQ3ZDQwNDRiMDAwMDAwMDAsIDB4ZmQ4NTBkZDIwMDAwMDAwMCwKKyAgICAweDZiYjUwYWE1MDAwMDAwMDAsIDB4ZmFhOGI1MzUwMDAwMDAwMCwgMHg2Yzk4YjI0MjAwMDAwMDAwLAorICAgIDB4ZDZjOWJiZGIwMDAwMDAwMCwgMHg0MGY5YmNhYzAwMDAwMDAwLCAweGUzNmNkODMyMDAwMDAwMDAsCisgICAgMHg3NTVjZGY0NTAwMDAwMDAwLCAweGNmMGRkNmRjMDAwMDAwMDAsIDB4NTkzZGQxYWIwMDAwMDAwMCwKKyAgICAweGFjMzBkOTI2MDAwMDAwMDAsIDB4M2EwMGRlNTEwMDAwMDAwMCwgMHg4MDUxZDdjODAwMDAwMDAwLAorICAgIDB4MTY2MWQwYmYwMDAwMDAwMCwgMHhiNWY0YjQyMTAwMDAwMDAwLCAweDIzYzRiMzU2MDAwMDAwMDAsCisgICAgMHg5OTk1YmFjZjAwMDAwMDAwLCAweDBmYTViZGI4MDAwMDAwMDAsIDB4OWViODAyMjgwMDAwMDAwMCwKKyAgICAweDA4ODgwNTVmMDAwMDAwMDAsIDB4YjJkOTBjYzYwMDAwMDAwMCwgMHgyNGU5MGJiMTAwMDAwMDAwLAorICAgIDB4ODc3YzZmMmYwMDAwMDAwMCwgMHgxMTRjNjg1ODAwMDAwMDAwLCAweGFiMWQ2MWMxMDAwMDAwMDAsCisgICAgMHgzZDJkNjZiNjAwMDAwMDAwLCAweDkwNDFkYzc2MDAwMDAwMDAsIDB4MDY3MWRiMDEwMDAwMDAwMCwKKyAgICAweGJjMjBkMjk4MDAwMDAwMDAsIDB4MmExMGQ1ZWYwMDAwMDAwMCwgMHg4OTg1YjE3MTAwMDAwMDAwLAorICAgIDB4MWZiNWI2MDYwMDAwMDAwMCwgMHhhNWU0YmY5ZjAwMDAwMDAwLCAweDMzZDRiOGU4MDAwMDAwMDAsCisgICAgMHhhMmM5MDc3ODAwMDAwMDAwLCAweDM0ZjkwMDBmMDAwMDAwMDAsIDB4OGVhODA5OTYwMDAwMDAwMCwKKyAgICAweDE4OTgwZWUxMDAwMDAwMDAsIDB4YmIwZDZhN2YwMDAwMDAwMCwgMHgyZDNkNmQwODAwMDAwMDAwLAorICAgIDB4OTc2YzY0OTEwMDAwMDAwMCwgMHgwMTVjNjNlNjAwMDAwMDAwLCAweGY0NTE2YjZiMDAwMDAwMDAsCisgICAgMHg2MjYxNmMxYzAwMDAwMDAwLCAweGQ4MzA2NTg1MDAwMDAwMDAsIDB4NGUwMDYyZjIwMDAwMDAwMCwKKyAgICAweGVkOTUwNjZjMDAwMDAwMDAsIDB4N2JhNTAxMWIwMDAwMDAwMCwgMHhjMWY0MDg4MjAwMDAwMDAwLAorICAgIDB4NTdjNDBmZjUwMDAwMDAwMCwgMHhjNmQ5YjA2NTAwMDAwMDAwLCAweDUwZTliNzEyMDAwMDAwMDAsCisgICAgMHhlYWI4YmU4YjAwMDAwMDAwLCAweDdjODhiOWZjMDAwMDAwMDAsIDB4ZGYxZGRkNjIwMDAwMDAwMCwKKyAgICAweDQ5MmRkYTE1MDAwMDAwMDAsIDB4ZjM3Y2QzOGMwMDAwMDAwMCwgMHg2NTRjZDRmYjAwMDAwMDAwLAorICAgIDB4NTg2MWIyNGQwMDAwMDAwMCwgMHhjZTUxYjUzYTAwMDAwMDAwLCAweDc0MDBiY2EzMDAwMDAwMDAsCisgICAgMHhlMjMwYmJkNDAwMDAwMDAwLCAweDQxYTVkZjRhMDAwMDAwMDAsIDB4ZDc5NWQ4M2QwMDAwMDAwMCwKKyAgICAweDZkYzRkMWE0MDAwMDAwMDAsIDB4ZmJmNGQ2ZDMwMDAwMDAwMCwgMHg2YWU5Njk0MzAwMDAwMDAwLAorICAgIDB4ZmNkOTZlMzQwMDAwMDAwMCwgMHg0Njg4NjdhZDAwMDAwMDAwLCAweGQwYjg2MGRhMDAwMDAwMDAsCisgICAgMHg3MzJkMDQ0NDAwMDAwMDAwLCAweGU1MWQwMzMzMDAwMDAwMDAsIDB4NWY0YzBhYWEwMDAwMDAwMCwKKyAgICAweGM5N2MwZGRkMDAwMDAwMDAsIDB4M2M3MTA1NTAwMDAwMDAwMCwgMHhhYTQxMDIyNzAwMDAwMDAwLAorICAgIDB4MTAxMDBiYmUwMDAwMDAwMCwgMHg4NjIwMGNjOTAwMDAwMDAwLCAweDI1YjU2ODU3MDAwMDAwMDAsCisgICAgMHhiMzg1NmYyMDAwMDAwMDAwLCAweDA5ZDQ2NmI5MDAwMDAwMDAsIDB4OWZlNDYxY2UwMDAwMDAwMCwKKyAgICAweDBlZjlkZTVlMDAwMDAwMDAsIDB4OThjOWQ5MjkwMDAwMDAwMCwgMHgyMjk4ZDBiMDAwMDAwMDAwLAorICAgIDB4YjRhOGQ3YzcwMDAwMDAwMCwgMHgxNzNkYjM1OTAwMDAwMDAwLCAweDgxMGRiNDJlMDAwMDAwMDAsCisgICAgMHgzYjVjYmRiNzAwMDAwMDAwLCAweGFkNmNiYWMwMDAwMDAwMDAsIDB4MjA4M2I4ZWQwMDAwMDAwMCwKKyAgICAweGI2YjNiZjlhMDAwMDAwMDAsIDB4MGNlMmI2MDMwMDAwMDAwMCwgMHg5YWQyYjE3NDAwMDAwMDAwLAorICAgIDB4Mzk0N2Q1ZWEwMDAwMDAwMCwgMHhhZjc3ZDI5ZDAwMDAwMDAwLCAweDE1MjZkYjA0MDAwMDAwMDAsCisgICAgMHg4MzE2ZGM3MzAwMDAwMDAwLCAweDEyMGI2M2UzMDAwMDAwMDAsIDB4ODQzYjY0OTQwMDAwMDAwMCwKKyAgICAweDNlNmE2ZDBkMDAwMDAwMDAsIDB4YTg1YTZhN2EwMDAwMDAwMCwgMHgwYmNmMGVlNDAwMDAwMDAwLAorICAgIDB4OWRmZjA5OTMwMDAwMDAwMCwgMHgyN2FlMDAwYTAwMDAwMDAwLCAweGIxOWUwNzdkMDAwMDAwMDAsCisgICAgMHg0NDkzMGZmMDAwMDAwMDAwLCAweGQyYTMwODg3MDAwMDAwMDAsIDB4NjhmMjAxMWUwMDAwMDAwMCwKKyAgICAweGZlYzIwNjY5MDAwMDAwMDAsIDB4NWQ1NzYyZjcwMDAwMDAwMCwgMHhjYjY3NjU4MDAwMDAwMDAwLAorICAgIDB4NzEzNjZjMTkwMDAwMDAwMCwgMHhlNzA2NmI2ZTAwMDAwMDAwLCAweDc2MWJkNGZlMDAwMDAwMDAsCisgICAgMHhlMDJiZDM4OTAwMDAwMDAwLCAweDVhN2FkYTEwMDAwMDAwMDAsIDB4Y2M0YWRkNjcwMDAwMDAwMCwKKyAgICAweDZmZGZiOWY5MDAwMDAwMDAsIDB4ZjllZmJlOGUwMDAwMDAwMCwgMHg0M2JlYjcxNzAwMDAwMDAwLAorICAgIDB4ZDU4ZWIwNjAwMDAwMDAwMCwgMHhlOGEzZDZkNjAwMDAwMDAwLCAweDdlOTNkMWExMDAwMDAwMDAsCisgICAgMHhjNGMyZDgzODAwMDAwMDAwLCAweDUyZjJkZjRmMDAwMDAwMDAsIDB4ZjE2N2JiZDEwMDAwMDAwMCwKKyAgICAweDY3NTdiY2E2MDAwMDAwMDAsIDB4ZGQwNmI1M2YwMDAwMDAwMCwgMHg0YjM2YjI0ODAwMDAwMDAwLAorICAgIDB4ZGEyYjBkZDgwMDAwMDAwMCwgMHg0YzFiMGFhZjAwMDAwMDAwLCAweGY2NGEwMzM2MDAwMDAwMDAsCisgICAgMHg2MDdhMDQ0MTAwMDAwMDAwLCAweGMzZWY2MGRmMDAwMDAwMDAsIDB4NTVkZjY3YTgwMDAwMDAwMCwKKyAgICAweGVmOGU2ZTMxMDAwMDAwMDAsIDB4NzliZTY5NDYwMDAwMDAwMCwgMHg4Y2IzNjFjYjAwMDAwMDAwLAorICAgIDB4MWE4MzY2YmMwMDAwMDAwMCwgMHhhMGQyNmYyNTAwMDAwMDAwLCAweDM2ZTI2ODUyMDAwMDAwMDAsCisgICAgMHg5NTc3MGNjYzAwMDAwMDAwLCAweDAzNDcwYmJiMDAwMDAwMDAsIDB4YjkxNjAyMjIwMDAwMDAwMCwKKyAgICAweDJmMjYwNTU1MDAwMDAwMDAsIDB4YmUzYmJhYzUwMDAwMDAwMCwgMHgyODBiYmRiMjAwMDAwMDAwLAorICAgIDB4OTI1YWI0MmIwMDAwMDAwMCwgMHgwNDZhYjM1YzAwMDAwMDAwLCAweGE3ZmZkN2MyMDAwMDAwMDAsCisgICAgMHgzMWNmZDBiNTAwMDAwMDAwLCAweDhiOWVkOTJjMDAwMDAwMDAsIDB4MWRhZWRlNWIwMDAwMDAwMCwKKyAgICAweGIwYzI2NDliMDAwMDAwMDAsIDB4MjZmMjYzZWMwMDAwMDAwMCwgMHg5Y2EzNmE3NTAwMDAwMDAwLAorICAgIDB4MGE5MzZkMDIwMDAwMDAwMCwgMHhhOTA2MDk5YzAwMDAwMDAwLCAweDNmMzYwZWViMDAwMDAwMDAsCisgICAgMHg4NTY3MDc3MjAwMDAwMDAwLCAweDEzNTcwMDA1MDAwMDAwMDAsIDB4ODI0YWJmOTUwMDAwMDAwMCwKKyAgICAweDE0N2FiOGUyMDAwMDAwMDAsIDB4YWUyYmIxN2IwMDAwMDAwMCwgMHgzODFiYjYwYzAwMDAwMDAwLAorICAgIDB4OWI4ZWQyOTIwMDAwMDAwMCwgMHgwZGJlZDVlNTAwMDAwMDAwLCAweGI3ZWZkYzdjMDAwMDAwMDAsCisgICAgMHgyMWRmZGIwYjAwMDAwMDAwLCAweGQ0ZDJkMzg2MDAwMDAwMDAsIDB4NDJlMmQ0ZjEwMDAwMDAwMCwKKyAgICAweGY4YjNkZDY4MDAwMDAwMDAsIDB4NmU4M2RhMWYwMDAwMDAwMCwgMHhjZDE2YmU4MTAwMDAwMDAwLAorICAgIDB4NWIyNmI5ZjYwMDAwMDAwMCwgMHhlMTc3YjA2ZjAwMDAwMDAwLCAweDc3NDdiNzE4MDAwMDAwMDAsCisgICAgMHhlNjVhMDg4ODAwMDAwMDAwLCAweDcwNmEwZmZmMDAwMDAwMDAsIDB4Y2EzYjA2NjYwMDAwMDAwMCwKKyAgICAweDVjMGIwMTExMDAwMDAwMDAsIDB4ZmY5ZTY1OGYwMDAwMDAwMCwgMHg2OWFlNjJmODAwMDAwMDAwLAorICAgIDB4ZDNmZjZiNjEwMDAwMDAwMCwgMHg0NWNmNmMxNjAwMDAwMDAwLCAweDc4ZTIwYWEwMDAwMDAwMDAsCisgICAgMHhlZWQyMGRkNzAwMDAwMDAwLCAweDU0ODMwNDRlMDAwMDAwMDAsIDB4YzJiMzAzMzkwMDAwMDAwMCwKKyAgICAweDYxMjY2N2E3MDAwMDAwMDAsIDB4ZjcxNjYwZDAwMDAwMDAwMCwgMHg0ZDQ3Njk0OTAwMDAwMDAwLAorICAgIDB4ZGI3NzZlM2UwMDAwMDAwMCwgMHg0YTZhZDFhZTAwMDAwMDAwLCAweGRjNWFkNmQ5MDAwMDAwMDAsCisgICAgMHg2NjBiZGY0MDAwMDAwMDAwLCAweGYwM2JkODM3MDAwMDAwMDAsIDB4NTNhZWJjYTkwMDAwMDAwMCwKKyAgICAweGM1OWViYmRlMDAwMDAwMDAsIDB4N2ZjZmIyNDcwMDAwMDAwMCwgMHhlOWZmYjUzMDAwMDAwMDAwLAorICAgIDB4MWNmMmJkYmQwMDAwMDAwMCwgMHg4YWMyYmFjYTAwMDAwMDAwLCAweDMwOTNiMzUzMDAwMDAwMDAsCisgICAgMHhhNmEzYjQyNDAwMDAwMDAwLCAweDA1MzZkMGJhMDAwMDAwMDAsIDB4OTMwNmQ3Y2QwMDAwMDAwMCwKKyAgICAweDI5NTdkZTU0MDAwMDAwMDAsIDB4YmY2N2Q5MjMwMDAwMDAwMCwgMHgyZTdhNjZiMzAwMDAwMDAwLAorICAgIDB4Yjg0YTYxYzQwMDAwMDAwMCwgMHgwMjFiNjg1ZDAwMDAwMDAwLCAweDk0MmI2ZjJhMDAwMDAwMDAsCisgICAgMHgzN2JlMGJiNDAwMDAwMDAwLCAweGExOGUwY2MzMDAwMDAwMDAsIDB4MWJkZjA1NWEwMDAwMDAwMCwKKyAgICAweDhkZWYwMjJkMDAwMDAwMDB9LAorICAgezB4MDAwMDAwMDAwMDAwMDAwMCwgMHg0MTMxMWIxOTAwMDAwMDAwLCAweDgyNjIzNjMyMDAwMDAwMDAsCisgICAgMHhjMzUzMmQyYjAwMDAwMDAwLCAweDA0YzU2YzY0MDAwMDAwMDAsIDB4NDVmNDc3N2QwMDAwMDAwMCwKKyAgICAweDg2YTc1YTU2MDAwMDAwMDAsIDB4Yzc5NjQxNGYwMDAwMDAwMCwgMHgwODhhZDljODAwMDAwMDAwLAorICAgIDB4NDliYmMyZDEwMDAwMDAwMCwgMHg4YWU4ZWZmYTAwMDAwMDAwLCAweGNiZDlmNGUzMDAwMDAwMDAsCisgICAgMHgwYzRmYjVhYzAwMDAwMDAwLCAweDRkN2VhZWI1MDAwMDAwMDAsIDB4OGUyZDgzOWUwMDAwMDAwMCwKKyAgICAweGNmMWM5ODg3MDAwMDAwMDAsIDB4NTExMmMyNGEwMDAwMDAwMCwgMHgxMDIzZDk1MzAwMDAwMDAwLAorICAgIDB4ZDM3MGY0NzgwMDAwMDAwMCwgMHg5MjQxZWY2MTAwMDAwMDAwLCAweDU1ZDdhZTJlMDAwMDAwMDAsCisgICAgMHgxNGU2YjUzNzAwMDAwMDAwLCAweGQ3YjU5ODFjMDAwMDAwMDAsIDB4OTY4NDgzMDUwMDAwMDAwMCwKKyAgICAweDU5OTgxYjgyMDAwMDAwMDAsIDB4MThhOTAwOWIwMDAwMDAwMCwgMHhkYmZhMmRiMDAwMDAwMDAwLAorICAgIDB4OWFjYjM2YTkwMDAwMDAwMCwgMHg1ZDVkNzdlNjAwMDAwMDAwLCAweDFjNmM2Y2ZmMDAwMDAwMDAsCisgICAgMHhkZjNmNDFkNDAwMDAwMDAwLCAweDllMGU1YWNkMDAwMDAwMDAsIDB4YTIyNDg0OTUwMDAwMDAwMCwKKyAgICAweGUzMTU5ZjhjMDAwMDAwMDAsIDB4MjA0NmIyYTcwMDAwMDAwMCwgMHg2MTc3YTliZTAwMDAwMDAwLAorICAgIDB4YTZlMWU4ZjEwMDAwMDAwMCwgMHhlN2QwZjNlODAwMDAwMDAwLCAweDI0ODNkZWMzMDAwMDAwMDAsCisgICAgMHg2NWIyYzVkYTAwMDAwMDAwLCAweGFhYWU1ZDVkMDAwMDAwMDAsIDB4ZWI5ZjQ2NDQwMDAwMDAwMCwKKyAgICAweDI4Y2M2YjZmMDAwMDAwMDAsIDB4NjlmZDcwNzYwMDAwMDAwMCwgMHhhZTZiMzEzOTAwMDAwMDAwLAorICAgIDB4ZWY1YTJhMjAwMDAwMDAwMCwgMHgyYzA5MDcwYjAwMDAwMDAwLCAweDZkMzgxYzEyMDAwMDAwMDAsCisgICAgMHhmMzM2NDZkZjAwMDAwMDAwLCAweGIyMDc1ZGM2MDAwMDAwMDAsIDB4NzE1NDcwZWQwMDAwMDAwMCwKKyAgICAweDMwNjU2YmY0MDAwMDAwMDAsIDB4ZjdmMzJhYmIwMDAwMDAwMCwgMHhiNmMyMzFhMjAwMDAwMDAwLAorICAgIDB4NzU5MTFjODkwMDAwMDAwMCwgMHgzNGEwMDc5MDAwMDAwMDAwLCAweGZiYmM5ZjE3MDAwMDAwMDAsCisgICAgMHhiYThkODQwZTAwMDAwMDAwLCAweDc5ZGVhOTI1MDAwMDAwMDAsIDB4MzhlZmIyM2MwMDAwMDAwMCwKKyAgICAweGZmNzlmMzczMDAwMDAwMDAsIDB4YmU0OGU4NmEwMDAwMDAwMCwgMHg3ZDFiYzU0MTAwMDAwMDAwLAorICAgIDB4M2MyYWRlNTgwMDAwMDAwMCwgMHgwNTRmNzlmMDAwMDAwMDAwLCAweDQ0N2U2MmU5MDAwMDAwMDAsCisgICAgMHg4NzJkNGZjMjAwMDAwMDAwLCAweGM2MWM1NGRiMDAwMDAwMDAsIDB4MDE4YTE1OTQwMDAwMDAwMCwKKyAgICAweDQwYmIwZThkMDAwMDAwMDAsIDB4ODNlODIzYTYwMDAwMDAwMCwgMHhjMmQ5MzhiZjAwMDAwMDAwLAorICAgIDB4MGRjNWEwMzgwMDAwMDAwMCwgMHg0Y2Y0YmIyMTAwMDAwMDAwLCAweDhmYTc5NjBhMDAwMDAwMDAsCisgICAgMHhjZTk2OGQxMzAwMDAwMDAwLCAweDA5MDBjYzVjMDAwMDAwMDAsIDB4NDgzMWQ3NDUwMDAwMDAwMCwKKyAgICAweDhiNjJmYTZlMDAwMDAwMDAsIDB4Y2E1M2UxNzcwMDAwMDAwMCwgMHg1NDVkYmJiYTAwMDAwMDAwLAorICAgIDB4MTU2Y2EwYTMwMDAwMDAwMCwgMHhkNjNmOGQ4ODAwMDAwMDAwLCAweDk3MGU5NjkxMDAwMDAwMDAsCisgICAgMHg1MDk4ZDdkZTAwMDAwMDAwLCAweDExYTljY2M3MDAwMDAwMDAsIDB4ZDJmYWUxZWMwMDAwMDAwMCwKKyAgICAweDkzY2JmYWY1MDAwMDAwMDAsIDB4NWNkNzYyNzIwMDAwMDAwMCwgMHgxZGU2Nzk2YjAwMDAwMDAwLAorICAgIDB4ZGViNTU0NDAwMDAwMDAwMCwgMHg5Zjg0NGY1OTAwMDAwMDAwLCAweDU4MTIwZTE2MDAwMDAwMDAsCisgICAgMHgxOTIzMTUwZjAwMDAwMDAwLCAweGRhNzAzODI0MDAwMDAwMDAsIDB4OWI0MTIzM2QwMDAwMDAwMCwKKyAgICAweGE3NmJmZDY1MDAwMDAwMDAsIDB4ZTY1YWU2N2MwMDAwMDAwMCwgMHgyNTA5Y2I1NzAwMDAwMDAwLAorICAgIDB4NjQzOGQwNGUwMDAwMDAwMCwgMHhhM2FlOTEwMTAwMDAwMDAwLCAweGUyOWY4YTE4MDAwMDAwMDAsCisgICAgMHgyMWNjYTczMzAwMDAwMDAwLCAweDYwZmRiYzJhMDAwMDAwMDAsIDB4YWZlMTI0YWQwMDAwMDAwMCwKKyAgICAweGVlZDAzZmI0MDAwMDAwMDAsIDB4MmQ4MzEyOWYwMDAwMDAwMCwgMHg2Y2IyMDk4NjAwMDAwMDAwLAorICAgIDB4YWIyNDQ4YzkwMDAwMDAwMCwgMHhlYTE1NTNkMDAwMDAwMDAwLCAweDI5NDY3ZWZiMDAwMDAwMDAsCisgICAgMHg2ODc3NjVlMjAwMDAwMDAwLCAweGY2NzkzZjJmMDAwMDAwMDAsIDB4Yjc0ODI0MzYwMDAwMDAwMCwKKyAgICAweDc0MWIwOTFkMDAwMDAwMDAsIDB4MzUyYTEyMDQwMDAwMDAwMCwgMHhmMmJjNTM0YjAwMDAwMDAwLAorICAgIDB4YjM4ZDQ4NTIwMDAwMDAwMCwgMHg3MGRlNjU3OTAwMDAwMDAwLCAweDMxZWY3ZTYwMDAwMDAwMDAsCisgICAgMHhmZWYzZTZlNzAwMDAwMDAwLCAweGJmYzJmZGZlMDAwMDAwMDAsIDB4N2M5MWQwZDUwMDAwMDAwMCwKKyAgICAweDNkYTBjYmNjMDAwMDAwMDAsIDB4ZmEzNjhhODMwMDAwMDAwMCwgMHhiYjA3OTE5YTAwMDAwMDAwLAorICAgIDB4Nzg1NGJjYjEwMDAwMDAwMCwgMHgzOTY1YTdhODAwMDAwMDAwLCAweDRiOTg4MzNiMDAwMDAwMDAsCisgICAgMHgwYWE5OTgyMjAwMDAwMDAwLCAweGM5ZmFiNTA5MDAwMDAwMDAsIDB4ODhjYmFlMTAwMDAwMDAwMCwKKyAgICAweDRmNWRlZjVmMDAwMDAwMDAsIDB4MGU2Y2Y0NDYwMDAwMDAwMCwgMHhjZDNmZDk2ZDAwMDAwMDAwLAorICAgIDB4OGMwZWMyNzQwMDAwMDAwMCwgMHg0MzEyNWFmMzAwMDAwMDAwLCAweDAyMjM0MWVhMDAwMDAwMDAsCisgICAgMHhjMTcwNmNjMTAwMDAwMDAwLCAweDgwNDE3N2Q4MDAwMDAwMDAsIDB4NDdkNzM2OTcwMDAwMDAwMCwKKyAgICAweDA2ZTYyZDhlMDAwMDAwMDAsIDB4YzViNTAwYTUwMDAwMDAwMCwgMHg4NDg0MWJiYzAwMDAwMDAwLAorICAgIDB4MWE4YTQxNzEwMDAwMDAwMCwgMHg1YmJiNWE2ODAwMDAwMDAwLCAweDk4ZTg3NzQzMDAwMDAwMDAsCisgICAgMHhkOWQ5NmM1YTAwMDAwMDAwLCAweDFlNGYyZDE1MDAwMDAwMDAsIDB4NWY3ZTM2MGMwMDAwMDAwMCwKKyAgICAweDljMmQxYjI3MDAwMDAwMDAsIDB4ZGQxYzAwM2UwMDAwMDAwMCwgMHgxMjAwOThiOTAwMDAwMDAwLAorICAgIDB4NTMzMTgzYTAwMDAwMDAwMCwgMHg5MDYyYWU4YjAwMDAwMDAwLCAweGQxNTNiNTkyMDAwMDAwMDAsCisgICAgMHgxNmM1ZjRkZDAwMDAwMDAwLCAweDU3ZjRlZmM0MDAwMDAwMDAsIDB4OTRhN2MyZWYwMDAwMDAwMCwKKyAgICAweGQ1OTZkOWY2MDAwMDAwMDAsIDB4ZTliYzA3YWUwMDAwMDAwMCwgMHhhODhkMWNiNzAwMDAwMDAwLAorICAgIDB4NmJkZTMxOWMwMDAwMDAwMCwgMHgyYWVmMmE4NTAwMDAwMDAwLCAweGVkNzk2YmNhMDAwMDAwMDAsCisgICAgMHhhYzQ4NzBkMzAwMDAwMDAwLCAweDZmMWI1ZGY4MDAwMDAwMDAsIDB4MmUyYTQ2ZTEwMDAwMDAwMCwKKyAgICAweGUxMzZkZTY2MDAwMDAwMDAsIDB4YTAwN2M1N2YwMDAwMDAwMCwgMHg2MzU0ZTg1NDAwMDAwMDAwLAorICAgIDB4MjI2NWYzNGQwMDAwMDAwMCwgMHhlNWYzYjIwMjAwMDAwMDAwLCAweGE0YzJhOTFiMDAwMDAwMDAsCisgICAgMHg2NzkxODQzMDAwMDAwMDAwLCAweDI2YTA5ZjI5MDAwMDAwMDAsIDB4YjhhZWM1ZTQwMDAwMDAwMCwKKyAgICAweGY5OWZkZWZkMDAwMDAwMDAsIDB4M2FjY2YzZDYwMDAwMDAwMCwgMHg3YmZkZThjZjAwMDAwMDAwLAorICAgIDB4YmM2YmE5ODAwMDAwMDAwMCwgMHhmZDVhYjI5OTAwMDAwMDAwLCAweDNlMDk5ZmIyMDAwMDAwMDAsCisgICAgMHg3ZjM4ODRhYjAwMDAwMDAwLCAweGIwMjQxYzJjMDAwMDAwMDAsIDB4ZjExNTA3MzUwMDAwMDAwMCwKKyAgICAweDMyNDYyYTFlMDAwMDAwMDAsIDB4NzM3NzMxMDcwMDAwMDAwMCwgMHhiNGUxNzA0ODAwMDAwMDAwLAorICAgIDB4ZjVkMDZiNTEwMDAwMDAwMCwgMHgzNjgzNDY3YTAwMDAwMDAwLCAweDc3YjI1ZDYzMDAwMDAwMDAsCisgICAgMHg0ZWQ3ZmFjYjAwMDAwMDAwLCAweDBmZTZlMWQyMDAwMDAwMDAsIDB4Y2NiNWNjZjkwMDAwMDAwMCwKKyAgICAweDhkODRkN2UwMDAwMDAwMDAsIDB4NGExMjk2YWYwMDAwMDAwMCwgMHgwYjIzOGRiNjAwMDAwMDAwLAorICAgIDB4Yzg3MGEwOWQwMDAwMDAwMCwgMHg4OTQxYmI4NDAwMDAwMDAwLCAweDQ2NWQyMzAzMDAwMDAwMDAsCisgICAgMHgwNzZjMzgxYTAwMDAwMDAwLCAweGM0M2YxNTMxMDAwMDAwMDAsIDB4ODUwZTBlMjgwMDAwMDAwMCwKKyAgICAweDQyOTg0ZjY3MDAwMDAwMDAsIDB4MDNhOTU0N2UwMDAwMDAwMCwgMHhjMGZhNzk1NTAwMDAwMDAwLAorICAgIDB4ODFjYjYyNGMwMDAwMDAwMCwgMHgxZmM1Mzg4MTAwMDAwMDAwLCAweDVlZjQyMzk4MDAwMDAwMDAsCisgICAgMHg5ZGE3MGViMzAwMDAwMDAwLCAweGRjOTYxNWFhMDAwMDAwMDAsIDB4MWIwMDU0ZTUwMDAwMDAwMCwKKyAgICAweDVhMzE0ZmZjMDAwMDAwMDAsIDB4OTk2MjYyZDcwMDAwMDAwMCwgMHhkODUzNzljZTAwMDAwMDAwLAorICAgIDB4MTc0ZmUxNDkwMDAwMDAwMCwgMHg1NjdlZmE1MDAwMDAwMDAwLCAweDk1MmRkNzdiMDAwMDAwMDAsCisgICAgMHhkNDFjY2M2MjAwMDAwMDAwLCAweDEzOGE4ZDJkMDAwMDAwMDAsIDB4NTJiYjk2MzQwMDAwMDAwMCwKKyAgICAweDkxZThiYjFmMDAwMDAwMDAsIDB4ZDBkOWEwMDYwMDAwMDAwMCwgMHhlY2YzN2U1ZTAwMDAwMDAwLAorICAgIDB4YWRjMjY1NDcwMDAwMDAwMCwgMHg2ZTkxNDg2YzAwMDAwMDAwLCAweDJmYTA1Mzc1MDAwMDAwMDAsCisgICAgMHhlODM2MTIzYTAwMDAwMDAwLCAweGE5MDcwOTIzMDAwMDAwMDAsIDB4NmE1NDI0MDgwMDAwMDAwMCwKKyAgICAweDJiNjUzZjExMDAwMDAwMDAsIDB4ZTQ3OWE3OTYwMDAwMDAwMCwgMHhhNTQ4YmM4ZjAwMDAwMDAwLAorICAgIDB4NjYxYjkxYTQwMDAwMDAwMCwgMHgyNzJhOGFiZDAwMDAwMDAwLCAweGUwYmNjYmYyMDAwMDAwMDAsCisgICAgMHhhMThkZDBlYjAwMDAwMDAwLCAweDYyZGVmZGMwMDAwMDAwMDAsIDB4MjNlZmU2ZDkwMDAwMDAwMCwKKyAgICAweGJkZTFiYzE0MDAwMDAwMDAsIDB4ZmNkMGE3MGQwMDAwMDAwMCwgMHgzZjgzOGEyNjAwMDAwMDAwLAorICAgIDB4N2ViMjkxM2YwMDAwMDAwMCwgMHhiOTI0ZDA3MDAwMDAwMDAwLCAweGY4MTVjYjY5MDAwMDAwMDAsCisgICAgMHgzYjQ2ZTY0MjAwMDAwMDAwLCAweDdhNzdmZDViMDAwMDAwMDAsIDB4YjU2YjY1ZGMwMDAwMDAwMCwKKyAgICAweGY0NWE3ZWM1MDAwMDAwMDAsIDB4MzcwOTUzZWUwMDAwMDAwMCwgMHg3NjM4NDhmNzAwMDAwMDAwLAorICAgIDB4YjFhZTA5YjgwMDAwMDAwMCwgMHhmMDlmMTJhMTAwMDAwMDAwLCAweDMzY2MzZjhhMDAwMDAwMDAsCisgICAgMHg3MmZkMjQ5MzAwMDAwMDAwfSwKKyAgIHsweDAwMDAwMDAwMDAwMDAwMDAsIDB4Mzc2YWMyMDEwMDAwMDAwMCwgMHg2ZWQ0ODQwMzAwMDAwMDAwLAorICAgIDB4NTliZTQ2MDIwMDAwMDAwMCwgMHhkY2E4MDkwNzAwMDAwMDAwLCAweGViYzJjYjA2MDAwMDAwMDAsCisgICAgMHhiMjdjOGQwNDAwMDAwMDAwLCAweDg1MTY0ZjA1MDAwMDAwMDAsIDB4Yjg1MTEzMGUwMDAwMDAwMCwKKyAgICAweDhmM2JkMTBmMDAwMDAwMDAsIDB4ZDY4NTk3MGQwMDAwMDAwMCwgMHhlMWVmNTUwYzAwMDAwMDAwLAorICAgIDB4NjRmOTFhMDkwMDAwMDAwMCwgMHg1MzkzZDgwODAwMDAwMDAwLCAweDBhMmQ5ZTBhMDAwMDAwMDAsCisgICAgMHgzZDQ3NWMwYjAwMDAwMDAwLCAweDcwYTMyNjFjMDAwMDAwMDAsIDB4NDdjOWU0MWQwMDAwMDAwMCwKKyAgICAweDFlNzdhMjFmMDAwMDAwMDAsIDB4MjkxZDYwMWUwMDAwMDAwMCwgMHhhYzBiMmYxYjAwMDAwMDAwLAorICAgIDB4OWI2MWVkMWEwMDAwMDAwMCwgMHhjMmRmYWIxODAwMDAwMDAwLCAweGY1YjU2OTE5MDAwMDAwMDAsCisgICAgMHhjOGYyMzUxMjAwMDAwMDAwLCAweGZmOThmNzEzMDAwMDAwMDAsIDB4YTYyNmIxMTEwMDAwMDAwMCwKKyAgICAweDkxNGM3MzEwMDAwMDAwMDAsIDB4MTQ1YTNjMTUwMDAwMDAwMCwgMHgyMzMwZmUxNDAwMDAwMDAwLAorICAgIDB4N2E4ZWI4MTYwMDAwMDAwMCwgMHg0ZGU0N2ExNzAwMDAwMDAwLCAweGUwNDY0ZDM4MDAwMDAwMDAsCisgICAgMHhkNzJjOGYzOTAwMDAwMDAwLCAweDhlOTJjOTNiMDAwMDAwMDAsIDB4YjlmODBiM2EwMDAwMDAwMCwKKyAgICAweDNjZWU0NDNmMDAwMDAwMDAsIDB4MGI4NDg2M2UwMDAwMDAwMCwgMHg1MjNhYzAzYzAwMDAwMDAwLAorICAgIDB4NjU1MDAyM2QwMDAwMDAwMCwgMHg1ODE3NWUzNjAwMDAwMDAwLCAweDZmN2Q5YzM3MDAwMDAwMDAsCisgICAgMHgzNmMzZGEzNTAwMDAwMDAwLCAweDAxYTkxODM0MDAwMDAwMDAsIDB4ODRiZjU3MzEwMDAwMDAwMCwKKyAgICAweGIzZDU5NTMwMDAwMDAwMDAsIDB4ZWE2YmQzMzIwMDAwMDAwMCwgMHhkZDAxMTEzMzAwMDAwMDAwLAorICAgIDB4OTBlNTZiMjQwMDAwMDAwMCwgMHhhNzhmYTkyNTAwMDAwMDAwLCAweGZlMzFlZjI3MDAwMDAwMDAsCisgICAgMHhjOTViMmQyNjAwMDAwMDAwLCAweDRjNGQ2MjIzMDAwMDAwMDAsIDB4N2IyN2EwMjIwMDAwMDAwMCwKKyAgICAweDIyOTllNjIwMDAwMDAwMDAsIDB4MTVmMzI0MjEwMDAwMDAwMCwgMHgyOGI0NzgyYTAwMDAwMDAwLAorICAgIDB4MWZkZWJhMmIwMDAwMDAwMCwgMHg0NjYwZmMyOTAwMDAwMDAwLCAweDcxMGEzZTI4MDAwMDAwMDAsCisgICAgMHhmNDFjNzEyZDAwMDAwMDAwLCAweGMzNzZiMzJjMDAwMDAwMDAsIDB4OWFjOGY1MmUwMDAwMDAwMCwKKyAgICAweGFkYTIzNzJmMDAwMDAwMDAsIDB4YzA4ZDlhNzAwMDAwMDAwMCwgMHhmN2U3NTg3MTAwMDAwMDAwLAorICAgIDB4YWU1OTFlNzMwMDAwMDAwMCwgMHg5OTMzZGM3MjAwMDAwMDAwLCAweDFjMjU5Mzc3MDAwMDAwMDAsCisgICAgMHgyYjRmNTE3NjAwMDAwMDAwLCAweDcyZjExNzc0MDAwMDAwMDAsIDB4NDU5YmQ1NzUwMDAwMDAwMCwKKyAgICAweDc4ZGM4OTdlMDAwMDAwMDAsIDB4NGZiNjRiN2YwMDAwMDAwMCwgMHgxNjA4MGQ3ZDAwMDAwMDAwLAorICAgIDB4MjE2MmNmN2MwMDAwMDAwMCwgMHhhNDc0ODA3OTAwMDAwMDAwLCAweDkzMWU0Mjc4MDAwMDAwMDAsCisgICAgMHhjYWEwMDQ3YTAwMDAwMDAwLCAweGZkY2FjNjdiMDAwMDAwMDAsIDB4YjAyZWJjNmMwMDAwMDAwMCwKKyAgICAweDg3NDQ3ZTZkMDAwMDAwMDAsIDB4ZGVmYTM4NmYwMDAwMDAwMCwgMHhlOTkwZmE2ZTAwMDAwMDAwLAorICAgIDB4NmM4NmI1NmIwMDAwMDAwMCwgMHg1YmVjNzc2YTAwMDAwMDAwLCAweDAyNTIzMTY4MDAwMDAwMDAsCisgICAgMHgzNTM4ZjM2OTAwMDAwMDAwLCAweDA4N2ZhZjYyMDAwMDAwMDAsIDB4M2YxNTZkNjMwMDAwMDAwMCwKKyAgICAweDY2YWIyYjYxMDAwMDAwMDAsIDB4NTFjMWU5NjAwMDAwMDAwMCwgMHhkNGQ3YTY2NTAwMDAwMDAwLAorICAgIDB4ZTNiZDY0NjQwMDAwMDAwMCwgMHhiYTAzMjI2NjAwMDAwMDAwLCAweDhkNjllMDY3MDAwMDAwMDAsCisgICAgMHgyMGNiZDc0ODAwMDAwMDAwLCAweDE3YTExNTQ5MDAwMDAwMDAsIDB4NGUxZjUzNGIwMDAwMDAwMCwKKyAgICAweDc5NzU5MTRhMDAwMDAwMDAsIDB4ZmM2M2RlNGYwMDAwMDAwMCwgMHhjYjA5MWM0ZTAwMDAwMDAwLAorICAgIDB4OTJiNzVhNGMwMDAwMDAwMCwgMHhhNWRkOTg0ZDAwMDAwMDAwLCAweDk4OWFjNDQ2MDAwMDAwMDAsCisgICAgMHhhZmYwMDY0NzAwMDAwMDAwLCAweGY2NGU0MDQ1MDAwMDAwMDAsIDB4YzEyNDgyNDQwMDAwMDAwMCwKKyAgICAweDQ0MzJjZDQxMDAwMDAwMDAsIDB4NzM1ODBmNDAwMDAwMDAwMCwgMHgyYWU2NDk0MjAwMDAwMDAwLAorICAgIDB4MWQ4YzhiNDMwMDAwMDAwMCwgMHg1MDY4ZjE1NDAwMDAwMDAwLCAweDY3MDIzMzU1MDAwMDAwMDAsCisgICAgMHgzZWJjNzU1NzAwMDAwMDAwLCAweDA5ZDZiNzU2MDAwMDAwMDAsIDB4OGNjMGY4NTMwMDAwMDAwMCwKKyAgICAweGJiYWEzYTUyMDAwMDAwMDAsIDB4ZTIxNDdjNTAwMDAwMDAwMCwgMHhkNTdlYmU1MTAwMDAwMDAwLAorICAgIDB4ZTgzOWUyNWEwMDAwMDAwMCwgMHhkZjUzMjA1YjAwMDAwMDAwLCAweDg2ZWQ2NjU5MDAwMDAwMDAsCisgICAgMHhiMTg3YTQ1ODAwMDAwMDAwLCAweDM0OTFlYjVkMDAwMDAwMDAsIDB4MDNmYjI5NWMwMDAwMDAwMCwKKyAgICAweDVhNDU2ZjVlMDAwMDAwMDAsIDB4NmQyZmFkNWYwMDAwMDAwMCwgMHg4MDFiMzVlMTAwMDAwMDAwLAorICAgIDB4Yjc3MWY3ZTAwMDAwMDAwMCwgMHhlZWNmYjFlMjAwMDAwMDAwLCAweGQ5YTU3M2UzMDAwMDAwMDAsCisgICAgMHg1Y2IzM2NlNjAwMDAwMDAwLCAweDZiZDlmZWU3MDAwMDAwMDAsIDB4MzI2N2I4ZTUwMDAwMDAwMCwKKyAgICAweDA1MGQ3YWU0MDAwMDAwMDAsIDB4Mzg0YTI2ZWYwMDAwMDAwMCwgMHgwZjIwZTRlZTAwMDAwMDAwLAorICAgIDB4NTY5ZWEyZWMwMDAwMDAwMCwgMHg2MWY0NjBlZDAwMDAwMDAwLCAweGU0ZTIyZmU4MDAwMDAwMDAsCisgICAgMHhkMzg4ZWRlOTAwMDAwMDAwLCAweDhhMzZhYmViMDAwMDAwMDAsIDB4YmQ1YzY5ZWEwMDAwMDAwMCwKKyAgICAweGYwYjgxM2ZkMDAwMDAwMDAsIDB4YzdkMmQxZmMwMDAwMDAwMCwgMHg5ZTZjOTdmZTAwMDAwMDAwLAorICAgIDB4YTkwNjU1ZmYwMDAwMDAwMCwgMHgyYzEwMWFmYTAwMDAwMDAwLCAweDFiN2FkOGZiMDAwMDAwMDAsCisgICAgMHg0MmM0OWVmOTAwMDAwMDAwLCAweDc1YWU1Y2Y4MDAwMDAwMDAsIDB4NDhlOTAwZjMwMDAwMDAwMCwKKyAgICAweDdmODNjMmYyMDAwMDAwMDAsIDB4MjYzZDg0ZjAwMDAwMDAwMCwgMHgxMTU3NDZmMTAwMDAwMDAwLAorICAgIDB4OTQ0MTA5ZjQwMDAwMDAwMCwgMHhhMzJiY2JmNTAwMDAwMDAwLCAweGZhOTU4ZGY3MDAwMDAwMDAsCisgICAgMHhjZGZmNGZmNjAwMDAwMDAwLCAweDYwNWQ3OGQ5MDAwMDAwMDAsIDB4NTczN2JhZDgwMDAwMDAwMCwKKyAgICAweDBlODlmY2RhMDAwMDAwMDAsIDB4MzllMzNlZGIwMDAwMDAwMCwgMHhiY2Y1NzFkZTAwMDAwMDAwLAorICAgIDB4OGI5ZmIzZGYwMDAwMDAwMCwgMHhkMjIxZjVkZDAwMDAwMDAwLCAweGU1NGIzN2RjMDAwMDAwMDAsCisgICAgMHhkODBjNmJkNzAwMDAwMDAwLCAweGVmNjZhOWQ2MDAwMDAwMDAsIDB4YjZkOGVmZDQwMDAwMDAwMCwKKyAgICAweDgxYjIyZGQ1MDAwMDAwMDAsIDB4MDRhNDYyZDAwMDAwMDAwMCwgMHgzM2NlYTBkMTAwMDAwMDAwLAorICAgIDB4NmE3MGU2ZDMwMDAwMDAwMCwgMHg1ZDFhMjRkMjAwMDAwMDAwLCAweDEwZmU1ZWM1MDAwMDAwMDAsCisgICAgMHgyNzk0OWNjNDAwMDAwMDAwLCAweDdlMmFkYWM2MDAwMDAwMDAsIDB4NDk0MDE4YzcwMDAwMDAwMCwKKyAgICAweGNjNTY1N2MyMDAwMDAwMDAsIDB4ZmIzYzk1YzMwMDAwMDAwMCwgMHhhMjgyZDNjMTAwMDAwMDAwLAorICAgIDB4OTVlODExYzAwMDAwMDAwMCwgMHhhOGFmNGRjYjAwMDAwMDAwLCAweDlmYzU4ZmNhMDAwMDAwMDAsCisgICAgMHhjNjdiYzljODAwMDAwMDAwLCAweGYxMTEwYmM5MDAwMDAwMDAsIDB4NzQwNzQ0Y2MwMDAwMDAwMCwKKyAgICAweDQzNmQ4NmNkMDAwMDAwMDAsIDB4MWFkM2MwY2YwMDAwMDAwMCwgMHgyZGI5MDJjZTAwMDAwMDAwLAorICAgIDB4NDA5NmFmOTEwMDAwMDAwMCwgMHg3N2ZjNmQ5MDAwMDAwMDAwLCAweDJlNDIyYjkyMDAwMDAwMDAsCisgICAgMHgxOTI4ZTk5MzAwMDAwMDAwLCAweDljM2VhNjk2MDAwMDAwMDAsIDB4YWI1NDY0OTcwMDAwMDAwMCwKKyAgICAweGYyZWEyMjk1MDAwMDAwMDAsIDB4YzU4MGUwOTQwMDAwMDAwMCwgMHhmOGM3YmM5ZjAwMDAwMDAwLAorICAgIDB4Y2ZhZDdlOWUwMDAwMDAwMCwgMHg5NjEzMzg5YzAwMDAwMDAwLCAweGExNzlmYTlkMDAwMDAwMDAsCisgICAgMHgyNDZmYjU5ODAwMDAwMDAwLCAweDEzMDU3Nzk5MDAwMDAwMDAsIDB4NGFiYjMxOWIwMDAwMDAwMCwKKyAgICAweDdkZDFmMzlhMDAwMDAwMDAsIDB4MzAzNTg5OGQwMDAwMDAwMCwgMHgwNzVmNGI4YzAwMDAwMDAwLAorICAgIDB4NWVlMTBkOGUwMDAwMDAwMCwgMHg2OThiY2Y4ZjAwMDAwMDAwLCAweGVjOWQ4MDhhMDAwMDAwMDAsCisgICAgMHhkYmY3NDI4YjAwMDAwMDAwLCAweDgyNDkwNDg5MDAwMDAwMDAsIDB4YjUyM2M2ODgwMDAwMDAwMCwKKyAgICAweDg4NjQ5YTgzMDAwMDAwMDAsIDB4YmYwZTU4ODIwMDAwMDAwMCwgMHhlNmIwMWU4MDAwMDAwMDAwLAorICAgIDB4ZDFkYWRjODEwMDAwMDAwMCwgMHg1NGNjOTM4NDAwMDAwMDAwLCAweDYzYTY1MTg1MDAwMDAwMDAsCisgICAgMHgzYTE4MTc4NzAwMDAwMDAwLCAweDBkNzJkNTg2MDAwMDAwMDAsIDB4YTBkMGUyYTkwMDAwMDAwMCwKKyAgICAweDk3YmEyMGE4MDAwMDAwMDAsIDB4Y2UwNDY2YWEwMDAwMDAwMCwgMHhmOTZlYTRhYjAwMDAwMDAwLAorICAgIDB4N2M3OGViYWUwMDAwMDAwMCwgMHg0YjEyMjlhZjAwMDAwMDAwLCAweDEyYWM2ZmFkMDAwMDAwMDAsCisgICAgMHgyNWM2YWRhYzAwMDAwMDAwLCAweDE4ODFmMWE3MDAwMDAwMDAsIDB4MmZlYjMzYTYwMDAwMDAwMCwKKyAgICAweDc2NTU3NWE0MDAwMDAwMDAsIDB4NDEzZmI3YTUwMDAwMDAwMCwgMHhjNDI5ZjhhMDAwMDAwMDAwLAorICAgIDB4ZjM0MzNhYTEwMDAwMDAwMCwgMHhhYWZkN2NhMzAwMDAwMDAwLCAweDlkOTdiZWEyMDAwMDAwMDAsCisgICAgMHhkMDczYzRiNTAwMDAwMDAwLCAweGU3MTkwNmI0MDAwMDAwMDAsIDB4YmVhNzQwYjYwMDAwMDAwMCwKKyAgICAweDg5Y2Q4MmI3MDAwMDAwMDAsIDB4MGNkYmNkYjIwMDAwMDAwMCwgMHgzYmIxMGZiMzAwMDAwMDAwLAorICAgIDB4NjIwZjQ5YjEwMDAwMDAwMCwgMHg1NTY1OGJiMDAwMDAwMDAwLCAweDY4MjJkN2JiMDAwMDAwMDAsCisgICAgMHg1ZjQ4MTViYTAwMDAwMDAwLCAweDA2ZjY1M2I4MDAwMDAwMDAsIDB4MzE5YzkxYjkwMDAwMDAwMCwKKyAgICAweGI0OGFkZWJjMDAwMDAwMDAsIDB4ODNlMDFjYmQwMDAwMDAwMCwgMHhkYTVlNWFiZjAwMDAwMDAwLAorICAgIDB4ZWQzNDk4YmUwMDAwMDAwMH0sCisgICB7MHgwMDAwMDAwMDAwMDAwMDAwLCAweDY1NjdiY2I4MDAwMDAwMDAsIDB4OGJjODA5YWEwMDAwMDAwMCwKKyAgICAweGVlYWZiNTEyMDAwMDAwMDAsIDB4NTc5NzYyOGYwMDAwMDAwMCwgMHgzMmYwZGUzNzAwMDAwMDAwLAorICAgIDB4ZGM1ZjZiMjUwMDAwMDAwMCwgMHhiOTM4ZDc5ZDAwMDAwMDAwLCAweGVmMjhiNGM1MDAwMDAwMDAsCisgICAgMHg4YTRmMDg3ZDAwMDAwMDAwLCAweDY0ZTBiZDZmMDAwMDAwMDAsIDB4MDE4NzAxZDcwMDAwMDAwMCwKKyAgICAweGI4YmZkNjRhMDAwMDAwMDAsIDB4ZGRkODZhZjIwMDAwMDAwMCwgMHgzMzc3ZGZlMDAwMDAwMDAwLAorICAgIDB4NTYxMDYzNTgwMDAwMDAwMCwgMHg5ZjU3MTk1MDAwMDAwMDAwLCAweGZhMzBhNWU4MDAwMDAwMDAsCisgICAgMHgxNDlmMTBmYTAwMDAwMDAwLCAweDcxZjhhYzQyMDAwMDAwMDAsIDB4YzhjMDdiZGYwMDAwMDAwMCwKKyAgICAweGFkYTdjNzY3MDAwMDAwMDAsIDB4NDMwODcyNzUwMDAwMDAwMCwgMHgyNjZmY2VjZDAwMDAwMDAwLAorICAgIDB4NzA3ZmFkOTUwMDAwMDAwMCwgMHgxNTE4MTEyZDAwMDAwMDAwLCAweGZiYjdhNDNmMDAwMDAwMDAsCisgICAgMHg5ZWQwMTg4NzAwMDAwMDAwLCAweDI3ZThjZjFhMDAwMDAwMDAsIDB4NDI4ZjczYTIwMDAwMDAwMCwKKyAgICAweGFjMjBjNmIwMDAwMDAwMDAsIDB4Yzk0NzdhMDgwMDAwMDAwMCwgMHgzZWFmMzJhMDAwMDAwMDAwLAorICAgIDB4NWJjODhlMTgwMDAwMDAwMCwgMHhiNTY3M2IwYTAwMDAwMDAwLCAweGQwMDA4N2IyMDAwMDAwMDAsCisgICAgMHg2OTM4NTAyZjAwMDAwMDAwLCAweDBjNWZlYzk3MDAwMDAwMDAsIDB4ZTJmMDU5ODUwMDAwMDAwMCwKKyAgICAweDg3OTdlNTNkMDAwMDAwMDAsIDB4ZDE4Nzg2NjUwMDAwMDAwMCwgMHhiNGUwM2FkZDAwMDAwMDAwLAorICAgIDB4NWE0ZjhmY2YwMDAwMDAwMCwgMHgzZjI4MzM3NzAwMDAwMDAwLCAweDg2MTBlNGVhMDAwMDAwMDAsCisgICAgMHhlMzc3NTg1MjAwMDAwMDAwLCAweDBkZDhlZDQwMDAwMDAwMDAsIDB4NjhiZjUxZjgwMDAwMDAwMCwKKyAgICAweGExZjgyYmYwMDAwMDAwMDAsIDB4YzQ5Zjk3NDgwMDAwMDAwMCwgMHgyYTMwMjI1YTAwMDAwMDAwLAorICAgIDB4NGY1NzllZTIwMDAwMDAwMCwgMHhmNjZmNDk3ZjAwMDAwMDAwLCAweDkzMDhmNWM3MDAwMDAwMDAsCisgICAgMHg3ZGE3NDBkNTAwMDAwMDAwLCAweDE4YzBmYzZkMDAwMDAwMDAsIDB4NGVkMDlmMzUwMDAwMDAwMCwKKyAgICAweDJiYjcyMzhkMDAwMDAwMDAsIDB4YzUxODk2OWYwMDAwMDAwMCwgMHhhMDdmMmEyNzAwMDAwMDAwLAorICAgIDB4MTk0N2ZkYmEwMDAwMDAwMCwgMHg3YzIwNDEwMjAwMDAwMDAwLCAweDkyOGZmNDEwMDAwMDAwMDAsCisgICAgMHhmN2U4NDhhODAwMDAwMDAwLCAweDNkNTgxNDliMDAwMDAwMDAsIDB4NTgzZmE4MjMwMDAwMDAwMCwKKyAgICAweGI2OTAxZDMxMDAwMDAwMDAsIDB4ZDNmN2ExODkwMDAwMDAwMCwgMHg2YWNmNzYxNDAwMDAwMDAwLAorICAgIDB4MGZhOGNhYWMwMDAwMDAwMCwgMHhlMTA3N2ZiZTAwMDAwMDAwLCAweDg0NjBjMzA2MDAwMDAwMDAsCisgICAgMHhkMjcwYTA1ZTAwMDAwMDAwLCAweGI3MTcxY2U2MDAwMDAwMDAsIDB4NTliOGE5ZjQwMDAwMDAwMCwKKyAgICAweDNjZGYxNTRjMDAwMDAwMDAsIDB4ODVlN2MyZDEwMDAwMDAwMCwgMHhlMDgwN2U2OTAwMDAwMDAwLAorICAgIDB4MGUyZmNiN2IwMDAwMDAwMCwgMHg2YjQ4NzdjMzAwMDAwMDAwLCAweGEyMGYwZGNiMDAwMDAwMDAsCisgICAgMHhjNzY4YjE3MzAwMDAwMDAwLCAweDI5YzcwNDYxMDAwMDAwMDAsIDB4NGNhMGI4ZDkwMDAwMDAwMCwKKyAgICAweGY1OTg2ZjQ0MDAwMDAwMDAsIDB4OTBmZmQzZmMwMDAwMDAwMCwgMHg3ZTUwNjZlZTAwMDAwMDAwLAorICAgIDB4MWIzN2RhNTYwMDAwMDAwMCwgMHg0ZDI3YjkwZTAwMDAwMDAwLCAweDI4NDAwNWI2MDAwMDAwMDAsCisgICAgMHhjNmVmYjBhNDAwMDAwMDAwLCAweGEzODgwYzFjMDAwMDAwMDAsIDB4MWFiMGRiODEwMDAwMDAwMCwKKyAgICAweDdmZDc2NzM5MDAwMDAwMDAsIDB4OTE3OGQyMmIwMDAwMDAwMCwgMHhmNDFmNmU5MzAwMDAwMDAwLAorICAgIDB4MDNmNzI2M2IwMDAwMDAwMCwgMHg2NjkwOWE4MzAwMDAwMDAwLCAweDg4M2YyZjkxMDAwMDAwMDAsCisgICAgMHhlZDU4OTMyOTAwMDAwMDAwLCAweDU0NjA0NGI0MDAwMDAwMDAsIDB4MzEwN2Y4MGMwMDAwMDAwMCwKKyAgICAweGRmYTg0ZDFlMDAwMDAwMDAsIDB4YmFjZmYxYTYwMDAwMDAwMCwgMHhlY2RmOTJmZTAwMDAwMDAwLAorICAgIDB4ODliODJlNDYwMDAwMDAwMCwgMHg2NzE3OWI1NDAwMDAwMDAwLCAweDAyNzAyN2VjMDAwMDAwMDAsCisgICAgMHhiYjQ4ZjA3MTAwMDAwMDAwLCAweGRlMmY0Y2M5MDAwMDAwMDAsIDB4MzA4MGY5ZGIwMDAwMDAwMCwKKyAgICAweDU1ZTc0NTYzMDAwMDAwMDAsIDB4OWNhMDNmNmIwMDAwMDAwMCwgMHhmOWM3ODNkMzAwMDAwMDAwLAorICAgIDB4MTc2ODM2YzEwMDAwMDAwMCwgMHg3MjBmOGE3OTAwMDAwMDAwLCAweGNiMzc1ZGU0MDAwMDAwMDAsCisgICAgMHhhZTUwZTE1YzAwMDAwMDAwLCAweDQwZmY1NDRlMDAwMDAwMDAsIDB4MjU5OGU4ZjYwMDAwMDAwMCwKKyAgICAweDczODg4YmFlMDAwMDAwMDAsIDB4MTZlZjM3MTYwMDAwMDAwMCwgMHhmODQwODIwNDAwMDAwMDAwLAorICAgIDB4OWQyNzNlYmMwMDAwMDAwMCwgMHgyNDFmZTkyMTAwMDAwMDAwLCAweDQxNzg1NTk5MDAwMDAwMDAsCisgICAgMHhhZmQ3ZTA4YjAwMDAwMDAwLCAweGNhYjA1YzMzMDAwMDAwMDAsIDB4M2JiNjU5ZWQwMDAwMDAwMCwKKyAgICAweDVlZDFlNTU1MDAwMDAwMDAsIDB4YjA3ZTUwNDcwMDAwMDAwMCwgMHhkNTE5ZWNmZjAwMDAwMDAwLAorICAgIDB4NmMyMTNiNjIwMDAwMDAwMCwgMHgwOTQ2ODdkYTAwMDAwMDAwLCAweGU3ZTkzMmM4MDAwMDAwMDAsCisgICAgMHg4MjhlOGU3MDAwMDAwMDAwLCAweGQ0OWVlZDI4MDAwMDAwMDAsIDB4YjFmOTUxOTAwMDAwMDAwMCwKKyAgICAweDVmNTZlNDgyMDAwMDAwMDAsIDB4M2EzMTU4M2EwMDAwMDAwMCwgMHg4MzA5OGZhNzAwMDAwMDAwLAorICAgIDB4ZTY2ZTMzMWYwMDAwMDAwMCwgMHgwOGMxODYwZDAwMDAwMDAwLCAweDZkYTYzYWI1MDAwMDAwMDAsCisgICAgMHhhNGUxNDBiZDAwMDAwMDAwLCAweGMxODZmYzA1MDAwMDAwMDAsIDB4MmYyOTQ5MTcwMDAwMDAwMCwKKyAgICAweDRhNGVmNWFmMDAwMDAwMDAsIDB4ZjM3NjIyMzIwMDAwMDAwMCwgMHg5NjExOWU4YTAwMDAwMDAwLAorICAgIDB4NzhiZTJiOTgwMDAwMDAwMCwgMHgxZGQ5OTcyMDAwMDAwMDAwLCAweDRiYzlmNDc4MDAwMDAwMDAsCisgICAgMHgyZWFlNDhjMDAwMDAwMDAwLCAweGMwMDFmZGQyMDAwMDAwMDAsIDB4YTU2NjQxNmEwMDAwMDAwMCwKKyAgICAweDFjNWU5NmY3MDAwMDAwMDAsIDB4NzkzOTJhNGYwMDAwMDAwMCwgMHg5Nzk2OWY1ZDAwMDAwMDAwLAorICAgIDB4ZjJmMTIzZTUwMDAwMDAwMCwgMHgwNTE5NmI0ZDAwMDAwMDAwLCAweDYwN2VkN2Y1MDAwMDAwMDAsCisgICAgMHg4ZWQxNjJlNzAwMDAwMDAwLCAweGViYjZkZTVmMDAwMDAwMDAsIDB4NTI4ZTA5YzIwMDAwMDAwMCwKKyAgICAweDM3ZTliNTdhMDAwMDAwMDAsIDB4ZDk0NjAwNjgwMDAwMDAwMCwgMHhiYzIxYmNkMDAwMDAwMDAwLAorICAgIDB4ZWEzMWRmODgwMDAwMDAwMCwgMHg4ZjU2NjMzMDAwMDAwMDAwLCAweDYxZjlkNjIyMDAwMDAwMDAsCisgICAgMHgwNDllNmE5YTAwMDAwMDAwLCAweGJkYTZiZDA3MDAwMDAwMDAsIDB4ZDhjMTAxYmYwMDAwMDAwMCwKKyAgICAweDM2NmViNGFkMDAwMDAwMDAsIDB4NTMwOTA4MTUwMDAwMDAwMCwgMHg5YTRlNzIxZDAwMDAwMDAwLAorICAgIDB4ZmYyOWNlYTUwMDAwMDAwMCwgMHgxMTg2N2JiNzAwMDAwMDAwLCAweDc0ZTFjNzBmMDAwMDAwMDAsCisgICAgMHhjZGQ5MTA5MjAwMDAwMDAwLCAweGE4YmVhYzJhMDAwMDAwMDAsIDB4NDYxMTE5MzgwMDAwMDAwMCwKKyAgICAweDIzNzZhNTgwMDAwMDAwMDAsIDB4NzU2NmM2ZDgwMDAwMDAwMCwgMHgxMDAxN2E2MDAwMDAwMDAwLAorICAgIDB4ZmVhZWNmNzIwMDAwMDAwMCwgMHg5YmM5NzNjYTAwMDAwMDAwLCAweDIyZjFhNDU3MDAwMDAwMDAsCisgICAgMHg0Nzk2MThlZjAwMDAwMDAwLCAweGE5MzlhZGZkMDAwMDAwMDAsIDB4Y2M1ZTExNDUwMDAwMDAwMCwKKyAgICAweDA2ZWU0ZDc2MDAwMDAwMDAsIDB4NjM4OWYxY2UwMDAwMDAwMCwgMHg4ZDI2NDRkYzAwMDAwMDAwLAorICAgIDB4ZTg0MWY4NjQwMDAwMDAwMCwgMHg1MTc5MmZmOTAwMDAwMDAwLCAweDM0MWU5MzQxMDAwMDAwMDAsCisgICAgMHhkYWIxMjY1MzAwMDAwMDAwLCAweGJmZDY5YWViMDAwMDAwMDAsIDB4ZTljNmY5YjMwMDAwMDAwMCwKKyAgICAweDhjYTE0NTBiMDAwMDAwMDAsIDB4NjIwZWYwMTkwMDAwMDAwMCwgMHgwNzY5NGNhMTAwMDAwMDAwLAorICAgIDB4YmU1MTliM2MwMDAwMDAwMCwgMHhkYjM2Mjc4NDAwMDAwMDAwLCAweDM1OTk5Mjk2MDAwMDAwMDAsCisgICAgMHg1MGZlMmUyZTAwMDAwMDAwLCAweDk5Yjk1NDI2MDAwMDAwMDAsIDB4ZmNkZWU4OWUwMDAwMDAwMCwKKyAgICAweDEyNzE1ZDhjMDAwMDAwMDAsIDB4NzcxNmUxMzQwMDAwMDAwMCwgMHhjZTJlMzZhOTAwMDAwMDAwLAorICAgIDB4YWI0OThhMTEwMDAwMDAwMCwgMHg0NWU2M2YwMzAwMDAwMDAwLCAweDIwODE4M2JiMDAwMDAwMDAsCisgICAgMHg3NjkxZTBlMzAwMDAwMDAwLCAweDEzZjY1YzViMDAwMDAwMDAsIDB4ZmQ1OWU5NDkwMDAwMDAwMCwKKyAgICAweDk4M2U1NWYxMDAwMDAwMDAsIDB4MjEwNjgyNmMwMDAwMDAwMCwgMHg0NDYxM2VkNDAwMDAwMDAwLAorICAgIDB4YWFjZThiYzYwMDAwMDAwMCwgMHhjZmE5Mzc3ZTAwMDAwMDAwLCAweDM4NDE3ZmQ2MDAwMDAwMDAsCisgICAgMHg1ZDI2YzM2ZTAwMDAwMDAwLCAweGIzODk3NjdjMDAwMDAwMDAsIDB4ZDZlZWNhYzQwMDAwMDAwMCwKKyAgICAweDZmZDYxZDU5MDAwMDAwMDAsIDB4MGFiMWExZTEwMDAwMDAwMCwgMHhlNDFlMTRmMzAwMDAwMDAwLAorICAgIDB4ODE3OWE4NGIwMDAwMDAwMCwgMHhkNzY5Y2IxMzAwMDAwMDAwLCAweGIyMGU3N2FiMDAwMDAwMDAsCisgICAgMHg1Y2ExYzJiOTAwMDAwMDAwLCAweDM5YzY3ZTAxMDAwMDAwMDAsIDB4ODBmZWE5OWMwMDAwMDAwMCwKKyAgICAweGU1OTkxNTI0MDAwMDAwMDAsIDB4MGIzNmEwMzYwMDAwMDAwMCwgMHg2ZTUxMWM4ZTAwMDAwMDAwLAorICAgIDB4YTcxNjY2ODYwMDAwMDAwMCwgMHhjMjcxZGEzZTAwMDAwMDAwLCAweDJjZGU2ZjJjMDAwMDAwMDAsCisgICAgMHg0OWI5ZDM5NDAwMDAwMDAwLCAweGYwODEwNDA5MDAwMDAwMDAsIDB4OTVlNmI4YjEwMDAwMDAwMCwKKyAgICAweDdiNDkwZGEzMDAwMDAwMDAsIDB4MWUyZWIxMWIwMDAwMDAwMCwgMHg0ODNlZDI0MzAwMDAwMDAwLAorICAgIDB4MmQ1OTZlZmIwMDAwMDAwMCwgMHhjM2Y2ZGJlOTAwMDAwMDAwLCAweGE2OTE2NzUxMDAwMDAwMDAsCisgICAgMHgxZmE5YjBjYzAwMDAwMDAwLCAweDdhY2UwYzc0MDAwMDAwMDAsIDB4OTQ2MWI5NjYwMDAwMDAwMCwKKyAgICAweGYxMDYwNWRlMDAwMDAwMDB9LAorICAgezB4MDAwMDAwMDAwMDAwMDAwMCwgMHhiMDI5NjAzZDAwMDAwMDAwLCAweDYwNTNjMDdhMDAwMDAwMDAsCisgICAgMHhkMDdhYTA0NzAwMDAwMDAwLCAweGMwYTY4MGY1MDAwMDAwMDAsIDB4NzA4ZmUwYzgwMDAwMDAwMCwKKyAgICAweGEwZjU0MDhmMDAwMDAwMDAsIDB4MTBkYzIwYjIwMDAwMDAwMCwgMHhjMTRiNzAzMDAwMDAwMDAwLAorICAgIDB4NzE2MjEwMGQwMDAwMDAwMCwgMHhhMTE4YjA0YTAwMDAwMDAwLCAweDExMzFkMDc3MDAwMDAwMDAsCisgICAgMHgwMWVkZjBjNTAwMDAwMDAwLCAweGIxYzQ5MGY4MDAwMDAwMDAsIDB4NjFiZTMwYmYwMDAwMDAwMCwKKyAgICAweGQxOTc1MDgyMDAwMDAwMDAsIDB4ODI5N2UwNjAwMDAwMDAwMCwgMHgzMmJlODA1ZDAwMDAwMDAwLAorICAgIDB4ZTJjNDIwMWEwMDAwMDAwMCwgMHg1MmVkNDAyNzAwMDAwMDAwLCAweDQyMzE2MDk1MDAwMDAwMDAsCisgICAgMHhmMjE4MDBhODAwMDAwMDAwLCAweDIyNjJhMGVmMDAwMDAwMDAsIDB4OTI0YmMwZDIwMDAwMDAwMCwKKyAgICAweDQzZGM5MDUwMDAwMDAwMDAsIDB4ZjNmNWYwNmQwMDAwMDAwMCwgMHgyMzhmNTAyYTAwMDAwMDAwLAorICAgIDB4OTNhNjMwMTcwMDAwMDAwMCwgMHg4MzdhMTBhNTAwMDAwMDAwLCAweDMzNTM3MDk4MDAwMDAwMDAsCisgICAgMHhlMzI5ZDBkZjAwMDAwMDAwLCAweDUzMDBiMGUyMDAwMDAwMDAsIDB4MDQyZmMxYzEwMDAwMDAwMCwKKyAgICAweGI0MDZhMWZjMDAwMDAwMDAsIDB4NjQ3YzAxYmIwMDAwMDAwMCwgMHhkNDU1NjE4NjAwMDAwMDAwLAorICAgIDB4YzQ4OTQxMzQwMDAwMDAwMCwgMHg3NGEwMjEwOTAwMDAwMDAwLCAweGE0ZGE4MTRlMDAwMDAwMDAsCisgICAgMHgxNGYzZTE3MzAwMDAwMDAwLCAweGM1NjRiMWYxMDAwMDAwMDAsIDB4NzU0ZGQxY2MwMDAwMDAwMCwKKyAgICAweGE1Mzc3MThiMDAwMDAwMDAsIDB4MTUxZTExYjYwMDAwMDAwMCwgMHgwNWMyMzEwNDAwMDAwMDAwLAorICAgIDB4YjVlYjUxMzkwMDAwMDAwMCwgMHg2NTkxZjE3ZTAwMDAwMDAwLCAweGQ1Yjg5MTQzMDAwMDAwMDAsCisgICAgMHg4NmI4MjFhMTAwMDAwMDAwLCAweDM2OTE0MTljMDAwMDAwMDAsIDB4ZTZlYmUxZGIwMDAwMDAwMCwKKyAgICAweDU2YzI4MWU2MDAwMDAwMDAsIDB4NDYxZWExNTQwMDAwMDAwMCwgMHhmNjM3YzE2OTAwMDAwMDAwLAorICAgIDB4MjY0ZDYxMmUwMDAwMDAwMCwgMHg5NjY0MDExMzAwMDAwMDAwLCAweDQ3ZjM1MTkxMDAwMDAwMDAsCisgICAgMHhmN2RhMzFhYzAwMDAwMDAwLCAweDI3YTA5MWViMDAwMDAwMDAsIDB4OTc4OWYxZDYwMDAwMDAwMCwKKyAgICAweDg3NTVkMTY0MDAwMDAwMDAsIDB4Mzc3Y2IxNTkwMDAwMDAwMCwgMHhlNzA2MTExZTAwMDAwMDAwLAorICAgIDB4NTcyZjcxMjMwMDAwMDAwMCwgMHg0OTU4ZjM1ODAwMDAwMDAwLCAweGY5NzE5MzY1MDAwMDAwMDAsCisgICAgMHgyOTBiMzMyMjAwMDAwMDAwLCAweDk5MjI1MzFmMDAwMDAwMDAsIDB4ODlmZTczYWQwMDAwMDAwMCwKKyAgICAweDM5ZDcxMzkwMDAwMDAwMDAsIDB4ZTlhZGIzZDcwMDAwMDAwMCwgMHg1OTg0ZDNlYTAwMDAwMDAwLAorICAgIDB4ODgxMzgzNjgwMDAwMDAwMCwgMHgzODNhZTM1NTAwMDAwMDAwLCAweGU4NDA0MzEyMDAwMDAwMDAsCisgICAgMHg1ODY5MjMyZjAwMDAwMDAwLCAweDQ4YjUwMzlkMDAwMDAwMDAsIDB4Zjg5YzYzYTAwMDAwMDAwMCwKKyAgICAweDI4ZTZjM2U3MDAwMDAwMDAsIDB4OThjZmEzZGEwMDAwMDAwMCwgMHhjYmNmMTMzODAwMDAwMDAwLAorICAgIDB4N2JlNjczMDUwMDAwMDAwMCwgMHhhYjljZDM0MjAwMDAwMDAwLCAweDFiYjViMzdmMDAwMDAwMDAsCisgICAgMHgwYjY5OTNjZDAwMDAwMDAwLCAweGJiNDBmM2YwMDAwMDAwMDAsIDB4NmIzYTUzYjcwMDAwMDAwMCwKKyAgICAweGRiMTMzMzhhMDAwMDAwMDAsIDB4MGE4NDYzMDgwMDAwMDAwMCwgMHhiYWFkMDMzNTAwMDAwMDAwLAorICAgIDB4NmFkN2EzNzIwMDAwMDAwMCwgMHhkYWZlYzM0ZjAwMDAwMDAwLCAweGNhMjJlM2ZkMDAwMDAwMDAsCisgICAgMHg3YTBiODNjMDAwMDAwMDAwLCAweGFhNzEyMzg3MDAwMDAwMDAsIDB4MWE1ODQzYmEwMDAwMDAwMCwKKyAgICAweDRkNzczMjk5MDAwMDAwMDAsIDB4ZmQ1ZTUyYTQwMDAwMDAwMCwgMHgyZDI0ZjJlMzAwMDAwMDAwLAorICAgIDB4OWQwZDkyZGUwMDAwMDAwMCwgMHg4ZGQxYjI2YzAwMDAwMDAwLCAweDNkZjhkMjUxMDAwMDAwMDAsCisgICAgMHhlZDgyNzIxNjAwMDAwMDAwLCAweDVkYWIxMjJiMDAwMDAwMDAsIDB4OGMzYzQyYTkwMDAwMDAwMCwKKyAgICAweDNjMTUyMjk0MDAwMDAwMDAsIDB4ZWM2ZjgyZDMwMDAwMDAwMCwgMHg1YzQ2ZTJlZTAwMDAwMDAwLAorICAgIDB4NGM5YWMyNWMwMDAwMDAwMCwgMHhmY2IzYTI2MTAwMDAwMDAwLCAweDJjYzkwMjI2MDAwMDAwMDAsCisgICAgMHg5Y2UwNjIxYjAwMDAwMDAwLCAweGNmZTBkMmY5MDAwMDAwMDAsIDB4N2ZjOWIyYzQwMDAwMDAwMCwKKyAgICAweGFmYjMxMjgzMDAwMDAwMDAsIDB4MWY5YTcyYmUwMDAwMDAwMCwgMHgwZjQ2NTIwYzAwMDAwMDAwLAorICAgIDB4YmY2ZjMyMzEwMDAwMDAwMCwgMHg2ZjE1OTI3NjAwMDAwMDAwLCAweGRmM2NmMjRiMDAwMDAwMDAsCisgICAgMHgwZWFiYTJjOTAwMDAwMDAwLCAweGJlODJjMmY0MDAwMDAwMDAsIDB4NmVmODYyYjMwMDAwMDAwMCwKKyAgICAweGRlZDEwMjhlMDAwMDAwMDAsIDB4Y2UwZDIyM2MwMDAwMDAwMCwgMHg3ZTI0NDIwMTAwMDAwMDAwLAorICAgIDB4YWU1ZWUyNDYwMDAwMDAwMCwgMHgxZTc3ODI3YjAwMDAwMDAwLCAweDkyYjBlNmIxMDAwMDAwMDAsCisgICAgMHgyMjk5ODY4YzAwMDAwMDAwLCAweGYyZTMyNmNiMDAwMDAwMDAsIDB4NDJjYTQ2ZjYwMDAwMDAwMCwKKyAgICAweDUyMTY2NjQ0MDAwMDAwMDAsIDB4ZTIzZjA2NzkwMDAwMDAwMCwgMHgzMjQ1YTYzZTAwMDAwMDAwLAorICAgIDB4ODI2Y2M2MDMwMDAwMDAwMCwgMHg1M2ZiOTY4MTAwMDAwMDAwLCAweGUzZDJmNmJjMDAwMDAwMDAsCisgICAgMHgzM2E4NTZmYjAwMDAwMDAwLCAweDgzODEzNmM2MDAwMDAwMDAsIDB4OTM1ZDE2NzQwMDAwMDAwMCwKKyAgICAweDIzNzQ3NjQ5MDAwMDAwMDAsIDB4ZjMwZWQ2MGUwMDAwMDAwMCwgMHg0MzI3YjYzMzAwMDAwMDAwLAorICAgIDB4MTAyNzA2ZDEwMDAwMDAwMCwgMHhhMDBlNjZlYzAwMDAwMDAwLCAweDcwNzRjNmFiMDAwMDAwMDAsCisgICAgMHhjMDVkYTY5NjAwMDAwMDAwLCAweGQwODE4NjI0MDAwMDAwMDAsIDB4NjBhOGU2MTkwMDAwMDAwMCwKKyAgICAweGIwZDI0NjVlMDAwMDAwMDAsIDB4MDBmYjI2NjMwMDAwMDAwMCwgMHhkMTZjNzZlMTAwMDAwMDAwLAorICAgIDB4NjE0NTE2ZGMwMDAwMDAwMCwgMHhiMTNmYjY5YjAwMDAwMDAwLCAweDAxMTZkNmE2MDAwMDAwMDAsCisgICAgMHgxMWNhZjYxNDAwMDAwMDAwLCAweGExZTM5NjI5MDAwMDAwMDAsIDB4NzE5OTM2NmUwMDAwMDAwMCwKKyAgICAweGMxYjA1NjUzMDAwMDAwMDAsIDB4OTY5ZjI3NzAwMDAwMDAwMCwgMHgyNmI2NDc0ZDAwMDAwMDAwLAorICAgIDB4ZjZjY2U3MGEwMDAwMDAwMCwgMHg0NmU1ODczNzAwMDAwMDAwLCAweDU2MzlhNzg1MDAwMDAwMDAsCisgICAgMHhlNjEwYzdiODAwMDAwMDAwLCAweDM2NmE2N2ZmMDAwMDAwMDAsIDB4ODY0MzA3YzIwMDAwMDAwMCwKKyAgICAweDU3ZDQ1NzQwMDAwMDAwMDAsIDB4ZTdmZDM3N2QwMDAwMDAwMCwgMHgzNzg3OTczYTAwMDAwMDAwLAorICAgIDB4ODdhZWY3MDcwMDAwMDAwMCwgMHg5NzcyZDdiNTAwMDAwMDAwLCAweDI3NWJiNzg4MDAwMDAwMDAsCisgICAgMHhmNzIxMTdjZjAwMDAwMDAwLCAweDQ3MDg3N2YyMDAwMDAwMDAsIDB4MTQwOGM3MTAwMDAwMDAwMCwKKyAgICAweGE0MjFhNzJkMDAwMDAwMDAsIDB4NzQ1YjA3NmEwMDAwMDAwMCwgMHhjNDcyNjc1NzAwMDAwMDAwLAorICAgIDB4ZDRhZTQ3ZTUwMDAwMDAwMCwgMHg2NDg3MjdkODAwMDAwMDAwLCAweGI0ZmQ4NzlmMDAwMDAwMDAsCisgICAgMHgwNGQ0ZTdhMjAwMDAwMDAwLCAweGQ1NDNiNzIwMDAwMDAwMDAsIDB4NjU2YWQ3MWQwMDAwMDAwMCwKKyAgICAweGI1MTA3NzVhMDAwMDAwMDAsIDB4MDUzOTE3NjcwMDAwMDAwMCwgMHgxNWU1MzdkNTAwMDAwMDAwLAorICAgIDB4YTVjYzU3ZTgwMDAwMDAwMCwgMHg3NWI2ZjdhZjAwMDAwMDAwLCAweGM1OWY5NzkyMDAwMDAwMDAsCisgICAgMHhkYmU4MTVlOTAwMDAwMDAwLCAweDZiYzE3NWQ0MDAwMDAwMDAsIDB4YmJiYmQ1OTMwMDAwMDAwMCwKKyAgICAweDBiOTJiNWFlMDAwMDAwMDAsIDB4MWI0ZTk1MWMwMDAwMDAwMCwgMHhhYjY3ZjUyMTAwMDAwMDAwLAorICAgIDB4N2IxZDU1NjYwMDAwMDAwMCwgMHhjYjM0MzU1YjAwMDAwMDAwLCAweDFhYTM2NWQ5MDAwMDAwMDAsCisgICAgMHhhYThhMDVlNDAwMDAwMDAwLCAweDdhZjBhNWEzMDAwMDAwMDAsIDB4Y2FkOWM1OWUwMDAwMDAwMCwKKyAgICAweGRhMDVlNTJjMDAwMDAwMDAsIDB4NmEyYzg1MTEwMDAwMDAwMCwgMHhiYTU2MjU1NjAwMDAwMDAwLAorICAgIDB4MGE3ZjQ1NmIwMDAwMDAwMCwgMHg1OTdmZjU4OTAwMDAwMDAwLCAweGU5NTY5NWI0MDAwMDAwMDAsCisgICAgMHgzOTJjMzVmMzAwMDAwMDAwLCAweDg5MDU1NWNlMDAwMDAwMDAsIDB4OTlkOTc1N2MwMDAwMDAwMCwKKyAgICAweDI5ZjAxNTQxMDAwMDAwMDAsIDB4Zjk4YWI1MDYwMDAwMDAwMCwgMHg0OWEzZDUzYjAwMDAwMDAwLAorICAgIDB4OTgzNDg1YjkwMDAwMDAwMCwgMHgyODFkZTU4NDAwMDAwMDAwLCAweGY4Njc0NWMzMDAwMDAwMDAsCisgICAgMHg0ODRlMjVmZTAwMDAwMDAwLCAweDU4OTIwNTRjMDAwMDAwMDAsIDB4ZThiYjY1NzEwMDAwMDAwMCwKKyAgICAweDM4YzFjNTM2MDAwMDAwMDAsIDB4ODhlOGE1MGIwMDAwMDAwMCwgMHhkZmM3ZDQyODAwMDAwMDAwLAorICAgIDB4NmZlZWI0MTUwMDAwMDAwMCwgMHhiZjk0MTQ1MjAwMDAwMDAwLCAweDBmYmQ3NDZmMDAwMDAwMDAsCisgICAgMHgxZjYxNTRkZDAwMDAwMDAwLCAweGFmNDgzNGUwMDAwMDAwMDAsIDB4N2YzMjk0YTcwMDAwMDAwMCwKKyAgICAweGNmMWJmNDlhMDAwMDAwMDAsIDB4MWU4Y2E0MTgwMDAwMDAwMCwgMHhhZWE1YzQyNTAwMDAwMDAwLAorICAgIDB4N2VkZjY0NjIwMDAwMDAwMCwgMHhjZWY2MDQ1ZjAwMDAwMDAwLCAweGRlMmEyNGVkMDAwMDAwMDAsCisgICAgMHg2ZTAzNDRkMDAwMDAwMDAwLCAweGJlNzllNDk3MDAwMDAwMDAsIDB4MGU1MDg0YWEwMDAwMDAwMCwKKyAgICAweDVkNTAzNDQ4MDAwMDAwMDAsIDB4ZWQ3OTU0NzUwMDAwMDAwMCwgMHgzZDAzZjQzMjAwMDAwMDAwLAorICAgIDB4OGQyYTk0MGYwMDAwMDAwMCwgMHg5ZGY2YjRiZDAwMDAwMDAwLCAweDJkZGZkNDgwMDAwMDAwMDAsCisgICAgMHhmZGE1NzRjNzAwMDAwMDAwLCAweDRkOGMxNGZhMDAwMDAwMDAsIDB4OWMxYjQ0NzgwMDAwMDAwMCwKKyAgICAweDJjMzIyNDQ1MDAwMDAwMDAsIDB4ZmM0ODg0MDIwMDAwMDAwMCwgMHg0YzYxZTQzZjAwMDAwMDAwLAorICAgIDB4NWNiZGM0OGQwMDAwMDAwMCwgMHhlYzk0YTRiMDAwMDAwMDAwLCAweDNjZWUwNGY3MDAwMDAwMDAsCisgICAgMHg4Y2M3NjRjYTAwMDAwMDAwfSwKKyAgIHsweDAwMDAwMDAwMDAwMDAwMDAsIDB4YTVkMzVjY2IwMDAwMDAwMCwgMHgwYmExYzg0ZDAwMDAwMDAwLAorICAgIDB4YWU3Mjk0ODYwMDAwMDAwMCwgMHgxNjQyOTE5YjAwMDAwMDAwLCAweGIzOTFjZDUwMDAwMDAwMDAsCisgICAgMHgxZGUzNTlkNjAwMDAwMDAwLCAweGI4MzAwNTFkMDAwMDAwMDAsIDB4NmQ4MjUzZWMwMDAwMDAwMCwKKyAgICAweGM4NTEwZjI3MDAwMDAwMDAsIDB4NjYyMzliYTEwMDAwMDAwMCwgMHhjM2YwYzc2YTAwMDAwMDAwLAorICAgIDB4N2JjMGMyNzcwMDAwMDAwMCwgMHhkZTEzOWViYzAwMDAwMDAwLCAweDcwNjEwYTNhMDAwMDAwMDAsCisgICAgMHhkNWIyNTZmMTAwMDAwMDAwLCAweDliMDJkNjAzMDAwMDAwMDAsIDB4M2VkMThhYzgwMDAwMDAwMCwKKyAgICAweDkwYTMxZTRlMDAwMDAwMDAsIDB4MzU3MDQyODUwMDAwMDAwMCwgMHg4ZDQwNDc5ODAwMDAwMDAwLAorICAgIDB4Mjg5MzFiNTMwMDAwMDAwMCwgMHg4NmUxOGZkNTAwMDAwMDAwLCAweDIzMzJkMzFlMDAwMDAwMDAsCisgICAgMHhmNjgwODVlZjAwMDAwMDAwLCAweDUzNTNkOTI0MDAwMDAwMDAsIDB4ZmQyMTRkYTIwMDAwMDAwMCwKKyAgICAweDU4ZjIxMTY5MDAwMDAwMDAsIDB4ZTBjMjE0NzQwMDAwMDAwMCwgMHg0NTExNDhiZjAwMDAwMDAwLAorICAgIDB4ZWI2M2RjMzkwMDAwMDAwMCwgMHg0ZWIwODBmMjAwMDAwMDAwLCAweDM2MDVhYzA3MDAwMDAwMDAsCisgICAgMHg5M2Q2ZjBjYzAwMDAwMDAwLCAweDNkYTQ2NDRhMDAwMDAwMDAsIDB4OTg3NzM4ODEwMDAwMDAwMCwKKyAgICAweDIwNDczZDljMDAwMDAwMDAsIDB4ODU5NDYxNTcwMDAwMDAwMCwgMHgyYmU2ZjVkMTAwMDAwMDAwLAorICAgIDB4OGUzNWE5MWEwMDAwMDAwMCwgMHg1Yjg3ZmZlYjAwMDAwMDAwLCAweGZlNTRhMzIwMDAwMDAwMDAsCisgICAgMHg1MDI2MzdhNjAwMDAwMDAwLCAweGY1ZjU2YjZkMDAwMDAwMDAsIDB4NGRjNTZlNzAwMDAwMDAwMCwKKyAgICAweGU4MTYzMmJiMDAwMDAwMDAsIDB4NDY2NGE2M2QwMDAwMDAwMCwgMHhlM2I3ZmFmNjAwMDAwMDAwLAorICAgIDB4YWQwNzdhMDQwMDAwMDAwMCwgMHgwOGQ0MjZjZjAwMDAwMDAwLCAweGE2YTZiMjQ5MDAwMDAwMDAsCisgICAgMHgwMzc1ZWU4MjAwMDAwMDAwLCAweGJiNDVlYjlmMDAwMDAwMDAsIDB4MWU5NmI3NTQwMDAwMDAwMCwKKyAgICAweGIwZTQyM2QyMDAwMDAwMDAsIDB4MTUzNzdmMTkwMDAwMDAwMCwgMHhjMDg1MjllODAwMDAwMDAwLAorICAgIDB4NjU1Njc1MjMwMDAwMDAwMCwgMHhjYjI0ZTFhNTAwMDAwMDAwLCAweDZlZjdiZDZlMDAwMDAwMDAsCisgICAgMHhkNmM3Yjg3MzAwMDAwMDAwLCAweDczMTRlNGI4MDAwMDAwMDAsIDB4ZGQ2NjcwM2UwMDAwMDAwMCwKKyAgICAweDc4YjUyY2Y1MDAwMDAwMDAsIDB4NmMwYTU4MGYwMDAwMDAwMCwgMHhjOWQ5MDRjNDAwMDAwMDAwLAorICAgIDB4NjdhYjkwNDIwMDAwMDAwMCwgMHhjMjc4Y2M4OTAwMDAwMDAwLCAweDdhNDhjOTk0MDAwMDAwMDAsCisgICAgMHhkZjliOTU1ZjAwMDAwMDAwLCAweDcxZTkwMWQ5MDAwMDAwMDAsIDB4ZDQzYTVkMTIwMDAwMDAwMCwKKyAgICAweDAxODgwYmUzMDAwMDAwMDAsIDB4YTQ1YjU3MjgwMDAwMDAwMCwgMHgwYTI5YzNhZTAwMDAwMDAwLAorICAgIDB4YWZmYTlmNjUwMDAwMDAwMCwgMHgxN2NhOWE3ODAwMDAwMDAwLCAweGIyMTljNmIzMDAwMDAwMDAsCisgICAgMHgxYzZiNTIzNTAwMDAwMDAwLCAweGI5YjgwZWZlMDAwMDAwMDAsIDB4ZjcwODhlMGMwMDAwMDAwMCwKKyAgICAweDUyZGJkMmM3MDAwMDAwMDAsIDB4ZmNhOTQ2NDEwMDAwMDAwMCwgMHg1OTdhMWE4YTAwMDAwMDAwLAorICAgIDB4ZTE0YTFmOTcwMDAwMDAwMCwgMHg0NDk5NDM1YzAwMDAwMDAwLCAweGVhZWJkN2RhMDAwMDAwMDAsCisgICAgMHg0ZjM4OGIxMTAwMDAwMDAwLCAweDlhOGFkZGUwMDAwMDAwMDAsIDB4M2Y1OTgxMmIwMDAwMDAwMCwKKyAgICAweDkxMmIxNWFkMDAwMDAwMDAsIDB4MzRmODQ5NjYwMDAwMDAwMCwgMHg4Y2M4NGM3YjAwMDAwMDAwLAorICAgIDB4MjkxYjEwYjAwMDAwMDAwMCwgMHg4NzY5ODQzNjAwMDAwMDAwLCAweDIyYmFkOGZkMDAwMDAwMDAsCisgICAgMHg1YTBmZjQwODAwMDAwMDAwLCAweGZmZGNhOGMzMDAwMDAwMDAsIDB4NTFhZTNjNDUwMDAwMDAwMCwKKyAgICAweGY0N2Q2MDhlMDAwMDAwMDAsIDB4NGM0ZDY1OTMwMDAwMDAwMCwgMHhlOTllMzk1ODAwMDAwMDAwLAorICAgIDB4NDdlY2FkZGUwMDAwMDAwMCwgMHhlMjNmZjExNTAwMDAwMDAwLCAweDM3OGRhN2U0MDAwMDAwMDAsCisgICAgMHg5MjVlZmIyZjAwMDAwMDAwLCAweDNjMmM2ZmE5MDAwMDAwMDAsIDB4OTlmZjMzNjIwMDAwMDAwMCwKKyAgICAweDIxY2YzNjdmMDAwMDAwMDAsIDB4ODQxYzZhYjQwMDAwMDAwMCwgMHgyYTZlZmUzMjAwMDAwMDAwLAorICAgIDB4OGZiZGEyZjkwMDAwMDAwMCwgMHhjMTBkMjIwYjAwMDAwMDAwLCAweDY0ZGU3ZWMwMDAwMDAwMDAsCisgICAgMHhjYWFjZWE0NjAwMDAwMDAwLCAweDZmN2ZiNjhkMDAwMDAwMDAsIDB4ZDc0ZmIzOTAwMDAwMDAwMCwKKyAgICAweDcyOWNlZjViMDAwMDAwMDAsIDB4ZGNlZTdiZGQwMDAwMDAwMCwgMHg3OTNkMjcxNjAwMDAwMDAwLAorICAgIDB4YWM4ZjcxZTcwMDAwMDAwMCwgMHgwOTVjMmQyYzAwMDAwMDAwLCAweGE3MmViOWFhMDAwMDAwMDAsCisgICAgMHgwMmZkZTU2MTAwMDAwMDAwLCAweGJhY2RlMDdjMDAwMDAwMDAsIDB4MWYxZWJjYjcwMDAwMDAwMCwKKyAgICAweGIxNmMyODMxMDAwMDAwMDAsIDB4MTRiZjc0ZmEwMDAwMDAwMCwgMHhkODE0YjAxZTAwMDAwMDAwLAorICAgIDB4N2RjN2VjZDUwMDAwMDAwMCwgMHhkM2I1Nzg1MzAwMDAwMDAwLCAweDc2NjYyNDk4MDAwMDAwMDAsCisgICAgMHhjZTU2MjE4NTAwMDAwMDAwLCAweDZiODU3ZDRlMDAwMDAwMDAsIDB4YzVmN2U5YzgwMDAwMDAwMCwKKyAgICAweDYwMjRiNTAzMDAwMDAwMDAsIDB4YjU5NmUzZjIwMDAwMDAwMCwgMHgxMDQ1YmYzOTAwMDAwMDAwLAorICAgIDB4YmUzNzJiYmYwMDAwMDAwMCwgMHgxYmU0Nzc3NDAwMDAwMDAwLCAweGEzZDQ3MjY5MDAwMDAwMDAsCisgICAgMHgwNjA3MmVhMjAwMDAwMDAwLCAweGE4NzViYTI0MDAwMDAwMDAsIDB4MGRhNmU2ZWYwMDAwMDAwMCwKKyAgICAweDQzMTY2NjFkMDAwMDAwMDAsIDB4ZTZjNTNhZDYwMDAwMDAwMCwgMHg0OGI3YWU1MDAwMDAwMDAwLAorICAgIDB4ZWQ2NGYyOWIwMDAwMDAwMCwgMHg1NTU0Zjc4NjAwMDAwMDAwLCAweGYwODdhYjRkMDAwMDAwMDAsCisgICAgMHg1ZWY1M2ZjYjAwMDAwMDAwLCAweGZiMjY2MzAwMDAwMDAwMDAsIDB4MmU5NDM1ZjEwMDAwMDAwMCwKKyAgICAweDhiNDc2OTNhMDAwMDAwMDAsIDB4MjUzNWZkYmMwMDAwMDAwMCwgMHg4MGU2YTE3NzAwMDAwMDAwLAorICAgIDB4MzhkNmE0NmEwMDAwMDAwMCwgMHg5ZDA1ZjhhMTAwMDAwMDAwLCAweDMzNzc2YzI3MDAwMDAwMDAsCisgICAgMHg5NmE0MzBlYzAwMDAwMDAwLCAweGVlMTExYzE5MDAwMDAwMDAsIDB4NGJjMjQwZDIwMDAwMDAwMCwKKyAgICAweGU1YjBkNDU0MDAwMDAwMDAsIDB4NDA2Mzg4OWYwMDAwMDAwMCwgMHhmODUzOGQ4MjAwMDAwMDAwLAorICAgIDB4NWQ4MGQxNDkwMDAwMDAwMCwgMHhmM2YyNDVjZjAwMDAwMDAwLCAweDU2MjExOTA0MDAwMDAwMDAsCisgICAgMHg4MzkzNGZmNTAwMDAwMDAwLCAweDI2NDAxMzNlMDAwMDAwMDAsIDB4ODgzMjg3YjgwMDAwMDAwMCwKKyAgICAweDJkZTFkYjczMDAwMDAwMDAsIDB4OTVkMWRlNmUwMDAwMDAwMCwgMHgzMDAyODJhNTAwMDAwMDAwLAorICAgIDB4OWU3MDE2MjMwMDAwMDAwMCwgMHgzYmEzNGFlODAwMDAwMDAwLCAweDc1MTNjYTFhMDAwMDAwMDAsCisgICAgMHhkMGMwOTZkMTAwMDAwMDAwLCAweDdlYjIwMjU3MDAwMDAwMDAsIDB4ZGI2MTVlOWMwMDAwMDAwMCwKKyAgICAweDYzNTE1YjgxMDAwMDAwMDAsIDB4YzY4MjA3NGEwMDAwMDAwMCwgMHg2OGYwOTNjYzAwMDAwMDAwLAorICAgIDB4Y2QyM2NmMDcwMDAwMDAwMCwgMHgxODkxOTlmNjAwMDAwMDAwLCAweGJkNDJjNTNkMDAwMDAwMDAsCisgICAgMHgxMzMwNTFiYjAwMDAwMDAwLCAweGI2ZTMwZDcwMDAwMDAwMDAsIDB4MGVkMzA4NmQwMDAwMDAwMCwKKyAgICAweGFiMDA1NGE2MDAwMDAwMDAsIDB4MDU3MmMwMjAwMDAwMDAwMCwgMHhhMGExOWNlYjAwMDAwMDAwLAorICAgIDB4YjQxZWU4MTEwMDAwMDAwMCwgMHgxMWNkYjRkYTAwMDAwMDAwLCAweGJmYmYyMDVjMDAwMDAwMDAsCisgICAgMHgxYTZjN2M5NzAwMDAwMDAwLCAweGEyNWM3OThhMDAwMDAwMDAsIDB4MDc4ZjI1NDEwMDAwMDAwMCwKKyAgICAweGE5ZmRiMWM3MDAwMDAwMDAsIDB4MGMyZWVkMGMwMDAwMDAwMCwgMHhkOTljYmJmZDAwMDAwMDAwLAorICAgIDB4N2M0ZmU3MzYwMDAwMDAwMCwgMHhkMjNkNzNiMDAwMDAwMDAwLCAweDc3ZWUyZjdiMDAwMDAwMDAsCisgICAgMHhjZmRlMmE2NjAwMDAwMDAwLCAweDZhMGQ3NmFkMDAwMDAwMDAsIDB4YzQ3ZmUyMmIwMDAwMDAwMCwKKyAgICAweDYxYWNiZWUwMDAwMDAwMDAsIDB4MmYxYzNlMTIwMDAwMDAwMCwgMHg4YWNmNjJkOTAwMDAwMDAwLAorICAgIDB4MjRiZGY2NWYwMDAwMDAwMCwgMHg4MTZlYWE5NDAwMDAwMDAwLCAweDM5NWVhZjg5MDAwMDAwMDAsCisgICAgMHg5YzhkZjM0MjAwMDAwMDAwLCAweDMyZmY2N2M0MDAwMDAwMDAsIDB4OTcyYzNiMGYwMDAwMDAwMCwKKyAgICAweDQyOWU2ZGZlMDAwMDAwMDAsIDB4ZTc0ZDMxMzUwMDAwMDAwMCwgMHg0OTNmYTViMzAwMDAwMDAwLAorICAgIDB4ZWNlY2Y5NzgwMDAwMDAwMCwgMHg1NGRjZmM2NTAwMDAwMDAwLCAweGYxMGZhMGFlMDAwMDAwMDAsCisgICAgMHg1ZjdkMzQyODAwMDAwMDAwLCAweGZhYWU2OGUzMDAwMDAwMDAsIDB4ODIxYjQ0MTYwMDAwMDAwMCwKKyAgICAweDI3YzgxOGRkMDAwMDAwMDAsIDB4ODliYThjNWIwMDAwMDAwMCwgMHgyYzY5ZDA5MDAwMDAwMDAwLAorICAgIDB4OTQ1OWQ1OGQwMDAwMDAwMCwgMHgzMThhODk0NjAwMDAwMDAwLCAweDlmZjgxZGMwMDAwMDAwMDAsCisgICAgMHgzYTJiNDEwYjAwMDAwMDAwLCAweGVmOTkxN2ZhMDAwMDAwMDAsIDB4NGE0YTRiMzEwMDAwMDAwMCwKKyAgICAweGU0MzhkZmI3MDAwMDAwMDAsIDB4NDFlYjgzN2MwMDAwMDAwMCwgMHhmOWRiODY2MTAwMDAwMDAwLAorICAgIDB4NWMwOGRhYWEwMDAwMDAwMCwgMHhmMjdhNGUyYzAwMDAwMDAwLCAweDU3YTkxMmU3MDAwMDAwMDAsCisgICAgMHgxOTE5OTIxNTAwMDAwMDAwLCAweGJjY2FjZWRlMDAwMDAwMDAsIDB4MTJiODVhNTgwMDAwMDAwMCwKKyAgICAweGI3NmIwNjkzMDAwMDAwMDAsIDB4MGY1YjAzOGUwMDAwMDAwMCwgMHhhYTg4NWY0NTAwMDAwMDAwLAorICAgIDB4MDRmYWNiYzMwMDAwMDAwMCwgMHhhMTI5OTcwODAwMDAwMDAwLCAweDc0OWJjMWY5MDAwMDAwMDAsCisgICAgMHhkMTQ4OWQzMjAwMDAwMDAwLCAweDdmM2EwOWI0MDAwMDAwMDAsIDB4ZGFlOTU1N2YwMDAwMDAwMCwKKyAgICAweDYyZDk1MDYyMDAwMDAwMDAsIDB4YzcwYTBjYTkwMDAwMDAwMCwgMHg2OTc4OTgyZjAwMDAwMDAwLAorICAgIDB4Y2NhYmM0ZTQwMDAwMDAwMH0sCisgICB7MHgwMDAwMDAwMDAwMDAwMDAwLCAweGI0MGI3N2E2MDAwMDAwMDAsIDB4MjkxMTlmOTcwMDAwMDAwMCwKKyAgICAweDlkMWFlODMxMDAwMDAwMDAsIDB4MTMyNDRmZjQwMDAwMDAwMCwgMHhhNzJmMzg1MjAwMDAwMDAwLAorICAgIDB4M2EzNWQwNjMwMDAwMDAwMCwgMHg4ZTNlYTdjNTAwMDAwMDAwLCAweDY3NGVlZjMzMDAwMDAwMDAsCisgICAgMHhkMzQ1OTg5NTAwMDAwMDAwLCAweDRlNWY3MGE0MDAwMDAwMDAsIDB4ZmE1NDA3MDIwMDAwMDAwMCwKKyAgICAweDc0NmFhMGM3MDAwMDAwMDAsIDB4YzA2MWQ3NjEwMDAwMDAwMCwgMHg1ZDdiM2Y1MDAwMDAwMDAwLAorICAgIDB4ZTk3MDQ4ZjYwMDAwMDAwMCwgMHhjZTljZGU2NzAwMDAwMDAwLCAweDdhOTdhOWMxMDAwMDAwMDAsCisgICAgMHhlNzhkNDFmMDAwMDAwMDAwLCAweDUzODYzNjU2MDAwMDAwMDAsIDB4ZGRiODkxOTMwMDAwMDAwMCwKKyAgICAweDY5YjNlNjM1MDAwMDAwMDAsIDB4ZjRhOTBlMDQwMDAwMDAwMCwgMHg0MGEyNzlhMjAwMDAwMDAwLAorICAgIDB4YTlkMjMxNTQwMDAwMDAwMCwgMHgxZGQ5NDZmMjAwMDAwMDAwLCAweDgwYzNhZWMzMDAwMDAwMDAsCisgICAgMHgzNGM4ZDk2NTAwMDAwMDAwLCAweGJhZjY3ZWEwMDAwMDAwMDAsIDB4MGVmZDA5MDYwMDAwMDAwMCwKKyAgICAweDkzZTdlMTM3MDAwMDAwMDAsIDB4MjdlYzk2OTEwMDAwMDAwMCwgMHg5YzM5YmRjZjAwMDAwMDAwLAorICAgIDB4MjgzMmNhNjkwMDAwMDAwMCwgMHhiNTI4MjI1ODAwMDAwMDAwLCAweDAxMjM1NWZlMDAwMDAwMDAsCisgICAgMHg4ZjFkZjIzYjAwMDAwMDAwLCAweDNiMTY4NTlkMDAwMDAwMDAsIDB4YTYwYzZkYWMwMDAwMDAwMCwKKyAgICAweDEyMDcxYTBhMDAwMDAwMDAsIDB4ZmI3NzUyZmMwMDAwMDAwMCwgMHg0ZjdjMjU1YTAwMDAwMDAwLAorICAgIDB4ZDI2NmNkNmIwMDAwMDAwMCwgMHg2NjZkYmFjZDAwMDAwMDAwLCAweGU4NTMxZDA4MDAwMDAwMDAsCisgICAgMHg1YzU4NmFhZTAwMDAwMDAwLCAweGMxNDI4MjlmMDAwMDAwMDAsIDB4NzU0OWY1MzkwMDAwMDAwMCwKKyAgICAweDUyYTU2M2E4MDAwMDAwMDAsIDB4ZTZhZTE0MGUwMDAwMDAwMCwgMHg3YmI0ZmMzZjAwMDAwMDAwLAorICAgIDB4Y2ZiZjhiOTkwMDAwMDAwMCwgMHg0MTgxMmM1YzAwMDAwMDAwLCAweGY1OGE1YmZhMDAwMDAwMDAsCisgICAgMHg2ODkwYjNjYjAwMDAwMDAwLCAweGRjOWJjNDZkMDAwMDAwMDAsIDB4MzVlYjhjOWIwMDAwMDAwMCwKKyAgICAweDgxZTBmYjNkMDAwMDAwMDAsIDB4MWNmYTEzMGMwMDAwMDAwMCwgMHhhOGYxNjRhYTAwMDAwMDAwLAorICAgIDB4MjZjZmMzNmYwMDAwMDAwMCwgMHg5MmM0YjRjOTAwMDAwMDAwLCAweDBmZGU1Y2Y4MDAwMDAwMDAsCisgICAgMHhiYmQ1MmI1ZTAwMDAwMDAwLCAweDc5NzUwYjQ0MDAwMDAwMDAsIDB4Y2Q3ZTdjZTIwMDAwMDAwMCwKKyAgICAweDUwNjQ5NGQzMDAwMDAwMDAsIDB4ZTQ2ZmUzNzUwMDAwMDAwMCwgMHg2YTUxNDRiMDAwMDAwMDAwLAorICAgIDB4ZGU1YTMzMTYwMDAwMDAwMCwgMHg0MzQwZGIyNzAwMDAwMDAwLCAweGY3NGJhYzgxMDAwMDAwMDAsCisgICAgMHgxZTNiZTQ3NzAwMDAwMDAwLCAweGFhMzA5M2QxMDAwMDAwMDAsIDB4MzcyYTdiZTAwMDAwMDAwMCwKKyAgICAweDgzMjEwYzQ2MDAwMDAwMDAsIDB4MGQxZmFiODMwMDAwMDAwMCwgMHhiOTE0ZGMyNTAwMDAwMDAwLAorICAgIDB4MjQwZTM0MTQwMDAwMDAwMCwgMHg5MDA1NDNiMjAwMDAwMDAwLCAweGI3ZTlkNTIzMDAwMDAwMDAsCisgICAgMHgwM2UyYTI4NTAwMDAwMDAwLCAweDllZjg0YWI0MDAwMDAwMDAsIDB4MmFmMzNkMTIwMDAwMDAwMCwKKyAgICAweGE0Y2Q5YWQ3MDAwMDAwMDAsIDB4MTBjNmVkNzEwMDAwMDAwMCwgMHg4ZGRjMDU0MDAwMDAwMDAwLAorICAgIDB4MzlkNzcyZTYwMDAwMDAwMCwgMHhkMGE3M2ExMDAwMDAwMDAwLCAweDY0YWM0ZGI2MDAwMDAwMDAsCisgICAgMHhmOWI2YTU4NzAwMDAwMDAwLCAweDRkYmRkMjIxMDAwMDAwMDAsIDB4YzM4Mzc1ZTQwMDAwMDAwMCwKKyAgICAweDc3ODgwMjQyMDAwMDAwMDAsIDB4ZWE5MmVhNzMwMDAwMDAwMCwgMHg1ZTk5OWRkNTAwMDAwMDAwLAorICAgIDB4ZTU0Y2I2OGIwMDAwMDAwMCwgMHg1MTQ3YzEyZDAwMDAwMDAwLCAweGNjNWQyOTFjMDAwMDAwMDAsCisgICAgMHg3ODU2NWViYTAwMDAwMDAwLCAweGY2NjhmOTdmMDAwMDAwMDAsIDB4NDI2MzhlZDkwMDAwMDAwMCwKKyAgICAweGRmNzk2NmU4MDAwMDAwMDAsIDB4NmI3MjExNGUwMDAwMDAwMCwgMHg4MjAyNTliODAwMDAwMDAwLAorICAgIDB4MzYwOTJlMWUwMDAwMDAwMCwgMHhhYjEzYzYyZjAwMDAwMDAwLCAweDFmMThiMTg5MDAwMDAwMDAsCisgICAgMHg5MTI2MTY0YzAwMDAwMDAwLCAweDI1MmQ2MWVhMDAwMDAwMDAsIDB4YjgzNzg5ZGIwMDAwMDAwMCwKKyAgICAweDBjM2NmZTdkMDAwMDAwMDAsIDB4MmJkMDY4ZWMwMDAwMDAwMCwgMHg5ZmRiMWY0YTAwMDAwMDAwLAorICAgIDB4MDJjMWY3N2IwMDAwMDAwMCwgMHhiNmNhODBkZDAwMDAwMDAwLCAweDM4ZjQyNzE4MDAwMDAwMDAsCisgICAgMHg4Y2ZmNTBiZTAwMDAwMDAwLCAweDExZTViODhmMDAwMDAwMDAsIDB4YTVlZWNmMjkwMDAwMDAwMCwKKyAgICAweDRjOWU4N2RmMDAwMDAwMDAsIDB4Zjg5NWYwNzkwMDAwMDAwMCwgMHg2NThmMTg0ODAwMDAwMDAwLAorICAgIDB4ZDE4NDZmZWUwMDAwMDAwMCwgMHg1ZmJhYzgyYjAwMDAwMDAwLCAweGViYjFiZjhkMDAwMDAwMDAsCisgICAgMHg3NmFiNTdiYzAwMDAwMDAwLCAweGMyYTAyMDFhMDAwMDAwMDAsIDB4ZjJlYTE2ODgwMDAwMDAwMCwKKyAgICAweDQ2ZTE2MTJlMDAwMDAwMDAsIDB4ZGJmYjg5MWYwMDAwMDAwMCwgMHg2ZmYwZmViOTAwMDAwMDAwLAorICAgIDB4ZTFjZTU5N2MwMDAwMDAwMCwgMHg1NWM1MmVkYTAwMDAwMDAwLCAweGM4ZGZjNmViMDAwMDAwMDAsCisgICAgMHg3Y2Q0YjE0ZDAwMDAwMDAwLCAweDk1YTRmOWJiMDAwMDAwMDAsIDB4MjFhZjhlMWQwMDAwMDAwMCwKKyAgICAweGJjYjU2NjJjMDAwMDAwMDAsIDB4MDhiZTExOGEwMDAwMDAwMCwgMHg4NjgwYjY0ZjAwMDAwMDAwLAorICAgIDB4MzI4YmMxZTkwMDAwMDAwMCwgMHhhZjkxMjlkODAwMDAwMDAwLCAweDFiOWE1ZTdlMDAwMDAwMDAsCisgICAgMHgzYzc2YzhlZjAwMDAwMDAwLCAweDg4N2RiZjQ5MDAwMDAwMDAsIDB4MTU2NzU3NzgwMDAwMDAwMCwKKyAgICAweGExNmMyMGRlMDAwMDAwMDAsIDB4MmY1Mjg3MWIwMDAwMDAwMCwgMHg5YjU5ZjBiZDAwMDAwMDAwLAorICAgIDB4MDY0MzE4OGMwMDAwMDAwMCwgMHhiMjQ4NmYyYTAwMDAwMDAwLCAweDViMzgyN2RjMDAwMDAwMDAsCisgICAgMHhlZjMzNTA3YTAwMDAwMDAwLCAweDcyMjliODRiMDAwMDAwMDAsIDB4YzYyMmNmZWQwMDAwMDAwMCwKKyAgICAweDQ4MWM2ODI4MDAwMDAwMDAsIDB4ZmMxNzFmOGUwMDAwMDAwMCwgMHg2MTBkZjdiZjAwMDAwMDAwLAorICAgIDB4ZDUwNjgwMTkwMDAwMDAwMCwgMHg2ZWQzYWI0NzAwMDAwMDAwLCAweGRhZDhkY2UxMDAwMDAwMDAsCisgICAgMHg0N2MyMzRkMDAwMDAwMDAwLCAweGYzYzk0Mzc2MDAwMDAwMDAsIDB4N2RmN2U0YjMwMDAwMDAwMCwKKyAgICAweGM5ZmM5MzE1MDAwMDAwMDAsIDB4NTRlNjdiMjQwMDAwMDAwMCwgMHhlMGVkMGM4MjAwMDAwMDAwLAorICAgIDB4MDk5ZDQ0NzQwMDAwMDAwMCwgMHhiZDk2MzNkMjAwMDAwMDAwLCAweDIwOGNkYmUzMDAwMDAwMDAsCisgICAgMHg5NDg3YWM0NTAwMDAwMDAwLCAweDFhYjkwYjgwMDAwMDAwMDAsIDB4YWViMjdjMjYwMDAwMDAwMCwKKyAgICAweDMzYTg5NDE3MDAwMDAwMDAsIDB4ODdhM2UzYjEwMDAwMDAwMCwgMHhhMDRmNzUyMDAwMDAwMDAwLAorICAgIDB4MTQ0NDAyODYwMDAwMDAwMCwgMHg4OTVlZWFiNzAwMDAwMDAwLCAweDNkNTU5ZDExMDAwMDAwMDAsCisgICAgMHhiMzZiM2FkNDAwMDAwMDAwLCAweDA3NjA0ZDcyMDAwMDAwMDAsIDB4OWE3YWE1NDMwMDAwMDAwMCwKKyAgICAweDJlNzFkMmU1MDAwMDAwMDAsIDB4YzcwMTlhMTMwMDAwMDAwMCwgMHg3MzBhZWRiNTAwMDAwMDAwLAorICAgIDB4ZWUxMDA1ODQwMDAwMDAwMCwgMHg1YTFiNzIyMjAwMDAwMDAwLCAweGQ0MjVkNWU3MDAwMDAwMDAsCisgICAgMHg2MDJlYTI0MTAwMDAwMDAwLCAweGZkMzQ0YTcwMDAwMDAwMDAsIDB4NDkzZjNkZDYwMDAwMDAwMCwKKyAgICAweDhiOWYxZGNjMDAwMDAwMDAsIDB4M2Y5NDZhNmEwMDAwMDAwMCwgMHhhMjhlODI1YjAwMDAwMDAwLAorICAgIDB4MTY4NWY1ZmQwMDAwMDAwMCwgMHg5OGJiNTIzODAwMDAwMDAwLCAweDJjYjAyNTllMDAwMDAwMDAsCisgICAgMHhiMWFhY2RhZjAwMDAwMDAwLCAweDA1YTFiYTA5MDAwMDAwMDAsIDB4ZWNkMWYyZmYwMDAwMDAwMCwKKyAgICAweDU4ZGE4NTU5MDAwMDAwMDAsIDB4YzVjMDZkNjgwMDAwMDAwMCwgMHg3MWNiMWFjZTAwMDAwMDAwLAorICAgIDB4ZmZmNWJkMGIwMDAwMDAwMCwgMHg0YmZlY2FhZDAwMDAwMDAwLCAweGQ2ZTQyMjljMDAwMDAwMDAsCisgICAgMHg2MmVmNTUzYTAwMDAwMDAwLCAweDQ1MDNjM2FiMDAwMDAwMDAsIDB4ZjEwOGI0MGQwMDAwMDAwMCwKKyAgICAweDZjMTI1YzNjMDAwMDAwMDAsIDB4ZDgxOTJiOWEwMDAwMDAwMCwgMHg1NjI3OGM1ZjAwMDAwMDAwLAorICAgIDB4ZTIyY2ZiZjkwMDAwMDAwMCwgMHg3ZjM2MTNjODAwMDAwMDAwLCAweGNiM2Q2NDZlMDAwMDAwMDAsCisgICAgMHgyMjRkMmM5ODAwMDAwMDAwLCAweDk2NDY1YjNlMDAwMDAwMDAsIDB4MGI1Y2IzMGYwMDAwMDAwMCwKKyAgICAweGJmNTdjNGE5MDAwMDAwMDAsIDB4MzE2OTYzNmMwMDAwMDAwMCwgMHg4NTYyMTRjYTAwMDAwMDAwLAorICAgIDB4MTg3OGZjZmIwMDAwMDAwMCwgMHhhYzczOGI1ZDAwMDAwMDAwLCAweDE3YTZhMDAzMDAwMDAwMDAsCisgICAgMHhhM2FkZDdhNTAwMDAwMDAwLCAweDNlYjczZjk0MDAwMDAwMDAsIDB4OGFiYzQ4MzIwMDAwMDAwMCwKKyAgICAweDA0ODJlZmY3MDAwMDAwMDAsIDB4YjA4OTk4NTEwMDAwMDAwMCwgMHgyZDkzNzA2MDAwMDAwMDAwLAorICAgIDB4OTk5ODA3YzYwMDAwMDAwMCwgMHg3MGU4NGYzMDAwMDAwMDAwLCAweGM0ZTMzODk2MDAwMDAwMDAsCisgICAgMHg1OWY5ZDBhNzAwMDAwMDAwLCAweGVkZjJhNzAxMDAwMDAwMDAsIDB4NjNjYzAwYzQwMDAwMDAwMCwKKyAgICAweGQ3Yzc3NzYyMDAwMDAwMDAsIDB4NGFkZDlmNTMwMDAwMDAwMCwgMHhmZWQ2ZThmNTAwMDAwMDAwLAorICAgIDB4ZDkzYTdlNjQwMDAwMDAwMCwgMHg2ZDMxMDljMjAwMDAwMDAwLCAweGYwMmJlMWYzMDAwMDAwMDAsCisgICAgMHg0NDIwOTY1NTAwMDAwMDAwLCAweGNhMWUzMTkwMDAwMDAwMDAsIDB4N2UxNTQ2MzYwMDAwMDAwMCwKKyAgICAweGUzMGZhZTA3MDAwMDAwMDAsIDB4NTcwNGQ5YTEwMDAwMDAwMCwgMHhiZTc0OTE1NzAwMDAwMDAwLAorICAgIDB4MGE3ZmU2ZjEwMDAwMDAwMCwgMHg5NzY1MGVjMDAwMDAwMDAwLCAweDIzNmU3OTY2MDAwMDAwMDAsCisgICAgMHhhZDUwZGVhMzAwMDAwMDAwLCAweDE5NWJhOTA1MDAwMDAwMDAsIDB4ODQ0MTQxMzQwMDAwMDAwMCwKKyAgICAweDMwNGEzNjkyMDAwMDAwMDB9LAorICAgezB4MDAwMDAwMDAwMDAwMDAwMCwgMHg5ZTAwYWFjYzAwMDAwMDAwLCAweDdkMDcyNTQyMDAwMDAwMDAsCisgICAgMHhlMzA3OGY4ZTAwMDAwMDAwLCAweGZhMGU0YTg0MDAwMDAwMDAsIDB4NjQwZWUwNDgwMDAwMDAwMCwKKyAgICAweDg3MDk2ZmM2MDAwMDAwMDAsIDB4MTkwOWM1MGEwMDAwMDAwMCwgMHhiNTFiZTVkMzAwMDAwMDAwLAorICAgIDB4MmIxYjRmMWYwMDAwMDAwMCwgMHhjODFjYzA5MTAwMDAwMDAwLCAweDU2MWM2YTVkMDAwMDAwMDAsCisgICAgMHg0ZjE1YWY1NzAwMDAwMDAwLCAweGQxMTUwNTliMDAwMDAwMDAsIDB4MzIxMjhhMTUwMDAwMDAwMCwKKyAgICAweGFjMTIyMGQ5MDAwMDAwMDAsIDB4MmIzMWJiN2MwMDAwMDAwMCwgMHhiNTMxMTFiMDAwMDAwMDAwLAorICAgIDB4NTYzNjllM2UwMDAwMDAwMCwgMHhjODM2MzRmMjAwMDAwMDAwLCAweGQxM2ZmMWY4MDAwMDAwMDAsCisgICAgMHg0ZjNmNWIzNDAwMDAwMDAwLCAweGFjMzhkNGJhMDAwMDAwMDAsIDB4MzIzODdlNzYwMDAwMDAwMCwKKyAgICAweDllMmE1ZWFmMDAwMDAwMDAsIDB4MDAyYWY0NjMwMDAwMDAwMCwgMHhlMzJkN2JlZDAwMDAwMDAwLAorICAgIDB4N2QyZGQxMjEwMDAwMDAwMCwgMHg2NDI0MTQyYjAwMDAwMDAwLCAweGZhMjRiZWU3MDAwMDAwMDAsCisgICAgMHgxOTIzMzE2OTAwMDAwMDAwLCAweDg3MjM5YmE1MDAwMDAwMDAsIDB4NTY2Mjc2ZjkwMDAwMDAwMCwKKyAgICAweGM4NjJkYzM1MDAwMDAwMDAsIDB4MmI2NTUzYmIwMDAwMDAwMCwgMHhiNTY1Zjk3NzAwMDAwMDAwLAorICAgIDB4YWM2YzNjN2QwMDAwMDAwMCwgMHgzMjZjOTZiMTAwMDAwMDAwLCAweGQxNmIxOTNmMDAwMDAwMDAsCisgICAgMHg0ZjZiYjNmMzAwMDAwMDAwLCAweGUzNzk5MzJhMDAwMDAwMDAsIDB4N2Q3OTM5ZTYwMDAwMDAwMCwKKyAgICAweDllN2ViNjY4MDAwMDAwMDAsIDB4MDA3ZTFjYTQwMDAwMDAwMCwgMHgxOTc3ZDlhZTAwMDAwMDAwLAorICAgIDB4ODc3NzczNjIwMDAwMDAwMCwgMHg2NDcwZmNlYzAwMDAwMDAwLCAweGZhNzA1NjIwMDAwMDAwMDAsCisgICAgMHg3ZDUzY2Q4NTAwMDAwMDAwLCAweGUzNTM2NzQ5MDAwMDAwMDAsIDB4MDA1NGU4YzcwMDAwMDAwMCwKKyAgICAweDllNTQ0MjBiMDAwMDAwMDAsIDB4ODc1ZDg3MDEwMDAwMDAwMCwgMHgxOTVkMmRjZDAwMDAwMDAwLAorICAgIDB4ZmE1YWEyNDMwMDAwMDAwMCwgMHg2NDVhMDg4ZjAwMDAwMDAwLCAweGM4NDgyODU2MDAwMDAwMDAsCisgICAgMHg1NjQ4ODI5YTAwMDAwMDAwLCAweGI1NGYwZDE0MDAwMDAwMDAsIDB4MmI0ZmE3ZDgwMDAwMDAwMCwKKyAgICAweDMyNDY2MmQyMDAwMDAwMDAsIDB4YWM0NmM4MWUwMDAwMDAwMCwgMHg0ZjQxNDc5MDAwMDAwMDAwLAorICAgIDB4ZDE0MWVkNWMwMDAwMDAwMCwgMHhlZGMyOWQyOTAwMDAwMDAwLCAweDczYzIzN2U1MDAwMDAwMDAsCisgICAgMHg5MGM1Yjg2YjAwMDAwMDAwLCAweDBlYzUxMmE3MDAwMDAwMDAsIDB4MTdjY2Q3YWQwMDAwMDAwMCwKKyAgICAweDg5Y2M3ZDYxMDAwMDAwMDAsIDB4NmFjYmYyZWYwMDAwMDAwMCwgMHhmNGNiNTgyMzAwMDAwMDAwLAorICAgIDB4NThkOTc4ZmEwMDAwMDAwMCwgMHhjNmQ5ZDIzNjAwMDAwMDAwLCAweDI1ZGU1ZGI4MDAwMDAwMDAsCisgICAgMHhiYmRlZjc3NDAwMDAwMDAwLCAweGEyZDczMjdlMDAwMDAwMDAsIDB4M2NkNzk4YjIwMDAwMDAwMCwKKyAgICAweGRmZDAxNzNjMDAwMDAwMDAsIDB4NDFkMGJkZjAwMDAwMDAwMCwgMHhjNmYzMjY1NTAwMDAwMDAwLAorICAgIDB4NThmMzhjOTkwMDAwMDAwMCwgMHhiYmY0MDMxNzAwMDAwMDAwLCAweDI1ZjRhOWRiMDAwMDAwMDAsCisgICAgMHgzY2ZkNmNkMTAwMDAwMDAwLCAweGEyZmRjNjFkMDAwMDAwMDAsIDB4NDFmYTQ5OTMwMDAwMDAwMCwKKyAgICAweGRmZmFlMzVmMDAwMDAwMDAsIDB4NzNlOGMzODYwMDAwMDAwMCwgMHhlZGU4Njk0YTAwMDAwMDAwLAorICAgIDB4MGVlZmU2YzQwMDAwMDAwMCwgMHg5MGVmNGMwODAwMDAwMDAwLCAweDg5ZTY4OTAyMDAwMDAwMDAsCisgICAgMHgxN2U2MjNjZTAwMDAwMDAwLCAweGY0ZTFhYzQwMDAwMDAwMDAsIDB4NmFlMTA2OGMwMDAwMDAwMCwKKyAgICAweGJiYTBlYmQwMDAwMDAwMDAsIDB4MjVhMDQxMWMwMDAwMDAwMCwgMHhjNmE3Y2U5MjAwMDAwMDAwLAorICAgIDB4NThhNzY0NWUwMDAwMDAwMCwgMHg0MWFlYTE1NDAwMDAwMDAwLCAweGRmYWUwYjk4MDAwMDAwMDAsCisgICAgMHgzY2E5ODQxNjAwMDAwMDAwLCAweGEyYTkyZWRhMDAwMDAwMDAsIDB4MGViYjBlMDMwMDAwMDAwMCwKKyAgICAweDkwYmJhNGNmMDAwMDAwMDAsIDB4NzNiYzJiNDEwMDAwMDAwMCwgMHhlZGJjODE4ZDAwMDAwMDAwLAorICAgIDB4ZjRiNTQ0ODcwMDAwMDAwMCwgMHg2YWI1ZWU0YjAwMDAwMDAwLCAweDg5YjI2MWM1MDAwMDAwMDAsCisgICAgMHgxN2IyY2IwOTAwMDAwMDAwLCAweDkwOTE1MGFjMDAwMDAwMDAsIDB4MGU5MWZhNjAwMDAwMDAwMCwKKyAgICAweGVkOTY3NWVlMDAwMDAwMDAsIDB4NzM5NmRmMjIwMDAwMDAwMCwgMHg2YTlmMWEyODAwMDAwMDAwLAorICAgIDB4ZjQ5ZmIwZTQwMDAwMDAwMCwgMHgxNzk4M2Y2YTAwMDAwMDAwLCAweDg5OTg5NWE2MDAwMDAwMDAsCisgICAgMHgyNThhYjU3ZjAwMDAwMDAwLCAweGJiOGExZmIzMDAwMDAwMDAsIDB4NTg4ZDkwM2QwMDAwMDAwMCwKKyAgICAweGM2OGQzYWYxMDAwMDAwMDAsIDB4ZGY4NGZmZmIwMDAwMDAwMCwgMHg0MTg0NTUzNzAwMDAwMDAwLAorICAgIDB4YTI4M2RhYjkwMDAwMDAwMCwgMHgzYzgzNzA3NTAwMDAwMDAwLCAweGRhODUzYjUzMDAwMDAwMDAsCisgICAgMHg0NDg1OTE5ZjAwMDAwMDAwLCAweGE3ODIxZTExMDAwMDAwMDAsIDB4Mzk4MmI0ZGQwMDAwMDAwMCwKKyAgICAweDIwOGI3MWQ3MDAwMDAwMDAsIDB4YmU4YmRiMWIwMDAwMDAwMCwgMHg1ZDhjNTQ5NTAwMDAwMDAwLAorICAgIDB4YzM4Y2ZlNTkwMDAwMDAwMCwgMHg2ZjllZGU4MDAwMDAwMDAwLCAweGYxOWU3NDRjMDAwMDAwMDAsCisgICAgMHgxMjk5ZmJjMjAwMDAwMDAwLCAweDhjOTk1MTBlMDAwMDAwMDAsIDB4OTU5MDk0MDQwMDAwMDAwMCwKKyAgICAweDBiOTAzZWM4MDAwMDAwMDAsIDB4ZTg5N2IxNDYwMDAwMDAwMCwgMHg3Njk3MWI4YTAwMDAwMDAwLAorICAgIDB4ZjFiNDgwMmYwMDAwMDAwMCwgMHg2ZmI0MmFlMzAwMDAwMDAwLCAweDhjYjNhNTZkMDAwMDAwMDAsCisgICAgMHgxMmIzMGZhMTAwMDAwMDAwLCAweDBiYmFjYWFiMDAwMDAwMDAsIDB4OTViYTYwNjcwMDAwMDAwMCwKKyAgICAweDc2YmRlZmU5MDAwMDAwMDAsIDB4ZThiZDQ1MjUwMDAwMDAwMCwgMHg0NGFmNjVmYzAwMDAwMDAwLAorICAgIDB4ZGFhZmNmMzAwMDAwMDAwMCwgMHgzOWE4NDBiZTAwMDAwMDAwLCAweGE3YThlYTcyMDAwMDAwMDAsCisgICAgMHhiZWExMmY3ODAwMDAwMDAwLCAweDIwYTE4NWI0MDAwMDAwMDAsIDB4YzNhNjBhM2EwMDAwMDAwMCwKKyAgICAweDVkYTZhMGY2MDAwMDAwMDAsIDB4OGNlNzRkYWEwMDAwMDAwMCwgMHgxMmU3ZTc2NjAwMDAwMDAwLAorICAgIDB4ZjFlMDY4ZTgwMDAwMDAwMCwgMHg2ZmUwYzIyNDAwMDAwMDAwLCAweDc2ZTkwNzJlMDAwMDAwMDAsCisgICAgMHhlOGU5YWRlMjAwMDAwMDAwLCAweDBiZWUyMjZjMDAwMDAwMDAsIDB4OTVlZTg4YTAwMDAwMDAwMCwKKyAgICAweDM5ZmNhODc5MDAwMDAwMDAsIDB4YTdmYzAyYjUwMDAwMDAwMCwgMHg0NGZiOGQzYjAwMDAwMDAwLAorICAgIDB4ZGFmYjI3ZjcwMDAwMDAwMCwgMHhjM2YyZTJmZDAwMDAwMDAwLCAweDVkZjI0ODMxMDAwMDAwMDAsCisgICAgMHhiZWY1YzdiZjAwMDAwMDAwLCAweDIwZjU2ZDczMDAwMDAwMDAsIDB4YTdkNmY2ZDYwMDAwMDAwMCwKKyAgICAweDM5ZDY1YzFhMDAwMDAwMDAsIDB4ZGFkMWQzOTQwMDAwMDAwMCwgMHg0NGQxNzk1ODAwMDAwMDAwLAorICAgIDB4NWRkOGJjNTIwMDAwMDAwMCwgMHhjM2Q4MTY5ZTAwMDAwMDAwLCAweDIwZGY5OTEwMDAwMDAwMDAsCisgICAgMHhiZWRmMzNkYzAwMDAwMDAwLCAweDEyY2QxMzA1MDAwMDAwMDAsIDB4OGNjZGI5YzkwMDAwMDAwMCwKKyAgICAweDZmY2EzNjQ3MDAwMDAwMDAsIDB4ZjFjYTljOGIwMDAwMDAwMCwgMHhlOGMzNTk4MTAwMDAwMDAwLAorICAgIDB4NzZjM2YzNGQwMDAwMDAwMCwgMHg5NWM0N2NjMzAwMDAwMDAwLCAweDBiYzRkNjBmMDAwMDAwMDAsCisgICAgMHgzNzQ3YTY3YTAwMDAwMDAwLCAweGE5NDcwY2I2MDAwMDAwMDAsIDB4NGE0MDgzMzgwMDAwMDAwMCwKKyAgICAweGQ0NDAyOWY0MDAwMDAwMDAsIDB4Y2Q0OWVjZmUwMDAwMDAwMCwgMHg1MzQ5NDYzMjAwMDAwMDAwLAorICAgIDB4YjA0ZWM5YmMwMDAwMDAwMCwgMHgyZTRlNjM3MDAwMDAwMDAwLCAweDgyNWM0M2E5MDAwMDAwMDAsCisgICAgMHgxYzVjZTk2NTAwMDAwMDAwLCAweGZmNWI2NmViMDAwMDAwMDAsIDB4NjE1YmNjMjcwMDAwMDAwMCwKKyAgICAweDc4NTIwOTJkMDAwMDAwMDAsIDB4ZTY1MmEzZTEwMDAwMDAwMCwgMHgwNTU1MmM2ZjAwMDAwMDAwLAorICAgIDB4OWI1NTg2YTMwMDAwMDAwMCwgMHgxYzc2MWQwNjAwMDAwMDAwLCAweDgyNzZiN2NhMDAwMDAwMDAsCisgICAgMHg2MTcxMzg0NDAwMDAwMDAwLCAweGZmNzE5Mjg4MDAwMDAwMDAsIDB4ZTY3ODU3ODIwMDAwMDAwMCwKKyAgICAweDc4NzhmZDRlMDAwMDAwMDAsIDB4OWI3ZjcyYzAwMDAwMDAwMCwgMHgwNTdmZDgwYzAwMDAwMDAwLAorICAgIDB4YTk2ZGY4ZDUwMDAwMDAwMCwgMHgzNzZkNTIxOTAwMDAwMDAwLCAweGQ0NmFkZDk3MDAwMDAwMDAsCisgICAgMHg0YTZhNzc1YjAwMDAwMDAwLCAweDUzNjNiMjUxMDAwMDAwMDAsIDB4Y2Q2MzE4OWQwMDAwMDAwMCwKKyAgICAweDJlNjQ5NzEzMDAwMDAwMDAsIDB4YjA2NDNkZGYwMDAwMDAwMCwgMHg2MTI1ZDA4MzAwMDAwMDAwLAorICAgIDB4ZmYyNTdhNGYwMDAwMDAwMCwgMHgxYzIyZjVjMTAwMDAwMDAwLCAweDgyMjI1ZjBkMDAwMDAwMDAsCisgICAgMHg5YjJiOWEwNzAwMDAwMDAwLCAweDA1MmIzMGNiMDAwMDAwMDAsIDB4ZTYyY2JmNDUwMDAwMDAwMCwKKyAgICAweDc4MmMxNTg5MDAwMDAwMDAsIDB4ZDQzZTM1NTAwMDAwMDAwMCwgMHg0YTNlOWY5YzAwMDAwMDAwLAorICAgIDB4YTkzOTEwMTIwMDAwMDAwMCwgMHgzNzM5YmFkZTAwMDAwMDAwLCAweDJlMzA3ZmQ0MDAwMDAwMDAsCisgICAgMHhiMDMwZDUxODAwMDAwMDAwLCAweDUzMzc1YTk2MDAwMDAwMDAsIDB4Y2QzN2YwNWEwMDAwMDAwMCwKKyAgICAweDRhMTQ2YmZmMDAwMDAwMDAsIDB4ZDQxNGMxMzMwMDAwMDAwMCwgMHgzNzEzNGViZDAwMDAwMDAwLAorICAgIDB4YTkxM2U0NzEwMDAwMDAwMCwgMHhiMDFhMjE3YjAwMDAwMDAwLCAweDJlMWE4YmI3MDAwMDAwMDAsCisgICAgMHhjZDFkMDQzOTAwMDAwMDAwLCAweDUzMWRhZWY1MDAwMDAwMDAsIDB4ZmYwZjhlMmMwMDAwMDAwMCwKKyAgICAweDYxMGYyNGUwMDAwMDAwMDAsIDB4ODIwOGFiNmUwMDAwMDAwMCwgMHgxYzA4MDFhMjAwMDAwMDAwLAorICAgIDB4MDUwMWM0YTgwMDAwMDAwMCwgMHg5YjAxNmU2NDAwMDAwMDAwLCAweDc4MDZlMWVhMDAwMDAwMDAsCisgICAgMHhlNjA2NGIyNjAwMDAwMDAwfX07CisKKyNlbHNlIC8qIFcgPT0gNCAqLworCitsb2NhbCBjb25zdCB6X2NyY190IEZBUiBjcmNfYnJhaWRfdGFibGVbXVsyNTZdID0geworICAgezB4MDAwMDAwMDAsIDB4YjhiYzY3NjUsIDB4YWEwOWM4OGIsIDB4MTJiNWFmZWUsIDB4OGY2Mjk3NTcsCisgICAgMHgzN2RlZjAzMiwgMHgyNTZiNWZkYywgMHg5ZGQ3MzhiOSwgMHhjNWI0MjhlZiwgMHg3ZDA4NGY4YSwKKyAgICAweDZmYmRlMDY0LCAweGQ3MDE4NzAxLCAweDRhZDZiZmI4LCAweGYyNmFkOGRkLCAweGUwZGY3NzMzLAorICAgIDB4NTg2MzEwNTYsIDB4NTAxOTU3OWYsIDB4ZThhNTMwZmEsIDB4ZmExMDlmMTQsIDB4NDJhY2Y4NzEsCisgICAgMHhkZjdiYzBjOCwgMHg2N2M3YTdhZCwgMHg3NTcyMDg0MywgMHhjZGNlNmYyNiwgMHg5NWFkN2Y3MCwKKyAgICAweDJkMTExODE1LCAweDNmYTRiN2ZiLCAweDg3MThkMDllLCAweDFhY2ZlODI3LCAweGEyNzM4ZjQyLAorICAgIDB4YjBjNjIwYWMsIDB4MDg3YTQ3YzksIDB4YTAzMmFmM2UsIDB4MTg4ZWM4NWIsIDB4MGEzYjY3YjUsCisgICAgMHhiMjg3MDBkMCwgMHgyZjUwMzg2OSwgMHg5N2VjNWYwYywgMHg4NTU5ZjBlMiwgMHgzZGU1OTc4NywKKyAgICAweDY1ODY4N2QxLCAweGRkM2FlMGI0LCAweGNmOGY0ZjVhLCAweDc3MzMyODNmLCAweGVhZTQxMDg2LAorICAgIDB4NTI1ODc3ZTMsIDB4NDBlZGQ4MGQsIDB4Zjg1MWJmNjgsIDB4ZjAyYmY4YTEsIDB4NDg5NzlmYzQsCisgICAgMHg1YTIyMzAyYSwgMHhlMjllNTc0ZiwgMHg3ZjQ5NmZmNiwgMHhjN2Y1MDg5MywgMHhkNTQwYTc3ZCwKKyAgICAweDZkZmNjMDE4LCAweDM1OWZkMDRlLCAweDhkMjNiNzJiLCAweDlmOTYxOGM1LCAweDI3MmE3ZmEwLAorICAgIDB4YmFmZDQ3MTksIDB4MDI0MTIwN2MsIDB4MTBmNDhmOTIsIDB4YTg0OGU4ZjcsIDB4OWIxNDU4M2QsCisgICAgMHgyM2E4M2Y1OCwgMHgzMTFkOTBiNiwgMHg4OWExZjdkMywgMHgxNDc2Y2Y2YSwgMHhhY2NhYTgwZiwKKyAgICAweGJlN2YwN2UxLCAweDA2YzM2MDg0LCAweDVlYTA3MGQyLCAweGU2MWMxN2I3LCAweGY0YTliODU5LAorICAgIDB4NGMxNWRmM2MsIDB4ZDFjMmU3ODUsIDB4Njk3ZTgwZTAsIDB4N2JjYjJmMGUsIDB4YzM3NzQ4NmIsCisgICAgMHhjYjBkMGZhMiwgMHg3M2IxNjhjNywgMHg2MTA0YzcyOSwgMHhkOWI4YTA0YywgMHg0NDZmOThmNSwKKyAgICAweGZjZDNmZjkwLCAweGVlNjY1MDdlLCAweDU2ZGEzNzFiLCAweDBlYjkyNzRkLCAweGI2MDU0MDI4LAorICAgIDB4YTRiMGVmYzYsIDB4MWMwYzg4YTMsIDB4ODFkYmIwMWEsIDB4Mzk2N2Q3N2YsIDB4MmJkMjc4OTEsCisgICAgMHg5MzZlMWZmNCwgMHgzYjI2ZjcwMywgMHg4MzlhOTA2NiwgMHg5MTJmM2Y4OCwgMHgyOTkzNThlZCwKKyAgICAweGI0NDQ2MDU0LCAweDBjZjgwNzMxLCAweDFlNGRhOGRmLCAweGE2ZjFjZmJhLCAweGZlOTJkZmVjLAorICAgIDB4NDYyZWI4ODksIDB4NTQ5YjE3NjcsIDB4ZWMyNzcwMDIsIDB4NzFmMDQ4YmIsIDB4Yzk0YzJmZGUsCisgICAgMHhkYmY5ODAzMCwgMHg2MzQ1ZTc1NSwgMHg2YjNmYTA5YywgMHhkMzgzYzdmOSwgMHhjMTM2NjgxNywKKyAgICAweDc5OGEwZjcyLCAweGU0NWQzN2NiLCAweDVjZTE1MGFlLCAweDRlNTRmZjQwLCAweGY2ZTg5ODI1LAorICAgIDB4YWU4Yjg4NzMsIDB4MTYzN2VmMTYsIDB4MDQ4MjQwZjgsIDB4YmMzZTI3OWQsIDB4MjFlOTFmMjQsCisgICAgMHg5OTU1Nzg0MSwgMHg4YmUwZDdhZiwgMHgzMzVjYjBjYSwgMHhlZDU5YjYzYiwgMHg1NWU1ZDE1ZSwKKyAgICAweDQ3NTA3ZWIwLCAweGZmZWMxOWQ1LCAweDYyM2IyMTZjLCAweGRhODc0NjA5LCAweGM4MzJlOWU3LAorICAgIDB4NzA4ZThlODIsIDB4MjhlZDllZDQsIDB4OTA1MWY5YjEsIDB4ODJlNDU2NWYsIDB4M2E1ODMxM2EsCisgICAgMHhhNzhmMDk4MywgMHgxZjMzNmVlNiwgMHgwZDg2YzEwOCwgMHhiNTNhYTY2ZCwgMHhiZDQwZTFhNCwKKyAgICAweDA1ZmM4NmMxLCAweDE3NDkyOTJmLCAweGFmZjU0ZTRhLCAweDMyMjI3NmYzLCAweDhhOWUxMTk2LAorICAgIDB4OTgyYmJlNzgsIDB4MjA5N2Q5MWQsIDB4NzhmNGM5NGIsIDB4YzA0OGFlMmUsIDB4ZDJmZDAxYzAsCisgICAgMHg2YTQxNjZhNSwgMHhmNzk2NWUxYywgMHg0ZjJhMzk3OSwgMHg1ZDlmOTY5NywgMHhlNTIzZjFmMiwKKyAgICAweDRkNmIxOTA1LCAweGY1ZDc3ZTYwLCAweGU3NjJkMThlLCAweDVmZGViNmViLCAweGMyMDk4ZTUyLAorICAgIDB4N2FiNWU5MzcsIDB4NjgwMDQ2ZDksIDB4ZDBiYzIxYmMsIDB4ODhkZjMxZWEsIDB4MzA2MzU2OGYsCisgICAgMHgyMmQ2Zjk2MSwgMHg5YTZhOWUwNCwgMHgwN2JkYTZiZCwgMHhiZjAxYzFkOCwgMHhhZGI0NmUzNiwKKyAgICAweDE1MDgwOTUzLCAweDFkNzI0ZTlhLCAweGE1Y2UyOWZmLCAweGI3N2I4NjExLCAweDBmYzdlMTc0LAorICAgIDB4OTIxMGQ5Y2QsIDB4MmFhY2JlYTgsIDB4MzgxOTExNDYsIDB4ODBhNTc2MjMsIDB4ZDhjNjY2NzUsCisgICAgMHg2MDdhMDExMCwgMHg3MmNmYWVmZSwgMHhjYTczYzk5YiwgMHg1N2E0ZjEyMiwgMHhlZjE4OTY0NywKKyAgICAweGZkYWQzOWE5LCAweDQ1MTE1ZWNjLCAweDc2NGRlZTA2LCAweGNlZjE4OTYzLCAweGRjNDQyNjhkLAorICAgIDB4NjRmODQxZTgsIDB4ZjkyZjc5NTEsIDB4NDE5MzFlMzQsIDB4NTMyNmIxZGEsIDB4ZWI5YWQ2YmYsCisgICAgMHhiM2Y5YzZlOSwgMHgwYjQ1YTE4YywgMHgxOWYwMGU2MiwgMHhhMTRjNjkwNywgMHgzYzliNTFiZSwKKyAgICAweDg0MjczNmRiLCAweDk2OTI5OTM1LCAweDJlMmVmZTUwLCAweDI2NTRiOTk5LCAweDllZThkZWZjLAorICAgIDB4OGM1ZDcxMTIsIDB4MzRlMTE2NzcsIDB4YTkzNjJlY2UsIDB4MTE4YTQ5YWIsIDB4MDMzZmU2NDUsCisgICAgMHhiYjgzODEyMCwgMHhlM2UwOTE3NiwgMHg1YjVjZjYxMywgMHg0OWU5NTlmZCwgMHhmMTU1M2U5OCwKKyAgICAweDZjODIwNjIxLCAweGQ0M2U2MTQ0LCAweGM2OGJjZWFhLCAweDdlMzdhOWNmLCAweGQ2N2Y0MTM4LAorICAgIDB4NmVjMzI2NWQsIDB4N2M3Njg5YjMsIDB4YzRjYWVlZDYsIDB4NTkxZGQ2NmYsIDB4ZTFhMWIxMGEsCisgICAgMHhmMzE0MWVlNCwgMHg0YmE4Nzk4MSwgMHgxM2NiNjlkNywgMHhhYjc3MGViMiwgMHhiOWMyYTE1YywKKyAgICAweDAxN2VjNjM5LCAweDljYTlmZTgwLCAweDI0MTU5OWU1LCAweDM2YTAzNjBiLCAweDhlMWM1MTZlLAorICAgIDB4ODY2NjE2YTcsIDB4M2VkYTcxYzIsIDB4MmM2ZmRlMmMsIDB4OTRkM2I5NDksIDB4MDkwNDgxZjAsCisgICAgMHhiMWI4ZTY5NSwgMHhhMzBkNDk3YiwgMHgxYmIxMmUxZSwgMHg0M2QyM2U0OCwgMHhmYjZlNTkyZCwKKyAgICAweGU5ZGJmNmMzLCAweDUxNjc5MWE2LCAweGNjYjBhOTFmLCAweDc0MGNjZTdhLCAweDY2Yjk2MTk0LAorICAgIDB4ZGUwNTA2ZjF9LAorICAgezB4MDAwMDAwMDAsIDB4MDFjMjZhMzcsIDB4MDM4NGQ0NmUsIDB4MDI0NmJlNTksIDB4MDcwOWE4ZGMsCisgICAgMHgwNmNiYzJlYiwgMHgwNDhkN2NiMiwgMHgwNTRmMTY4NSwgMHgwZTEzNTFiOCwgMHgwZmQxM2I4ZiwKKyAgICAweDBkOTc4NWQ2LCAweDBjNTVlZmUxLCAweDA5MWFmOTY0LCAweDA4ZDg5MzUzLCAweDBhOWUyZDBhLAorICAgIDB4MGI1YzQ3M2QsIDB4MWMyNmEzNzAsIDB4MWRlNGM5NDcsIDB4MWZhMjc3MWUsIDB4MWU2MDFkMjksCisgICAgMHgxYjJmMGJhYywgMHgxYWVkNjE5YiwgMHgxOGFiZGZjMiwgMHgxOTY5YjVmNSwgMHgxMjM1ZjJjOCwKKyAgICAweDEzZjc5OGZmLCAweDExYjEyNmE2LCAweDEwNzM0YzkxLCAweDE1M2M1YTE0LCAweDE0ZmUzMDIzLAorICAgIDB4MTZiODhlN2EsIDB4MTc3YWU0NGQsIDB4Mzg0ZDQ2ZTAsIDB4Mzk4ZjJjZDcsIDB4M2JjOTkyOGUsCisgICAgMHgzYTBiZjhiOSwgMHgzZjQ0ZWUzYywgMHgzZTg2ODQwYiwgMHgzY2MwM2E1MiwgMHgzZDAyNTA2NSwKKyAgICAweDM2NWUxNzU4LCAweDM3OWM3ZDZmLCAweDM1ZGFjMzM2LCAweDM0MThhOTAxLCAweDMxNTdiZjg0LAorICAgIDB4MzA5NWQ1YjMsIDB4MzJkMzZiZWEsIDB4MzMxMTAxZGQsIDB4MjQ2YmU1OTAsIDB4MjVhOThmYTcsCisgICAgMHgyN2VmMzFmZSwgMHgyNjJkNWJjOSwgMHgyMzYyNGQ0YywgMHgyMmEwMjc3YiwgMHgyMGU2OTkyMiwKKyAgICAweDIxMjRmMzE1LCAweDJhNzhiNDI4LCAweDJiYmFkZTFmLCAweDI5ZmM2MDQ2LCAweDI4M2UwYTcxLAorICAgIDB4MmQ3MTFjZjQsIDB4MmNiMzc2YzMsIDB4MmVmNWM4OWEsIDB4MmYzN2EyYWQsIDB4NzA5YThkYzAsCisgICAgMHg3MTU4ZTdmNywgMHg3MzFlNTlhZSwgMHg3MmRjMzM5OSwgMHg3NzkzMjUxYywgMHg3NjUxNGYyYiwKKyAgICAweDc0MTdmMTcyLCAweDc1ZDU5YjQ1LCAweDdlODlkYzc4LCAweDdmNGJiNjRmLCAweDdkMGQwODE2LAorICAgIDB4N2NjZjYyMjEsIDB4Nzk4MDc0YTQsIDB4Nzg0MjFlOTMsIDB4N2EwNGEwY2EsIDB4N2JjNmNhZmQsCisgICAgMHg2Y2JjMmViMCwgMHg2ZDdlNDQ4NywgMHg2ZjM4ZmFkZSwgMHg2ZWZhOTBlOSwgMHg2YmI1ODY2YywKKyAgICAweDZhNzdlYzViLCAweDY4MzE1MjAyLCAweDY5ZjMzODM1LCAweDYyYWY3ZjA4LCAweDYzNmQxNTNmLAorICAgIDB4NjEyYmFiNjYsIDB4NjBlOWMxNTEsIDB4NjVhNmQ3ZDQsIDB4NjQ2NGJkZTMsIDB4NjYyMjAzYmEsCisgICAgMHg2N2UwNjk4ZCwgMHg0OGQ3Y2IyMCwgMHg0OTE1YTExNywgMHg0YjUzMWY0ZSwgMHg0YTkxNzU3OSwKKyAgICAweDRmZGU2M2ZjLCAweDRlMWMwOWNiLCAweDRjNWFiNzkyLCAweDRkOThkZGE1LCAweDQ2YzQ5YTk4LAorICAgIDB4NDcwNmYwYWYsIDB4NDU0MDRlZjYsIDB4NDQ4MjI0YzEsIDB4NDFjZDMyNDQsIDB4NDAwZjU4NzMsCisgICAgMHg0MjQ5ZTYyYSwgMHg0MzhiOGMxZCwgMHg1NGYxNjg1MCwgMHg1NTMzMDI2NywgMHg1Nzc1YmMzZSwKKyAgICAweDU2YjdkNjA5LCAweDUzZjhjMDhjLCAweDUyM2FhYWJiLCAweDUwN2MxNGUyLCAweDUxYmU3ZWQ1LAorICAgIDB4NWFlMjM5ZTgsIDB4NWIyMDUzZGYsIDB4NTk2NmVkODYsIDB4NThhNDg3YjEsIDB4NWRlYjkxMzQsCisgICAgMHg1YzI5ZmIwMywgMHg1ZTZmNDU1YSwgMHg1ZmFkMmY2ZCwgMHhlMTM1MWI4MCwgMHhlMGY3NzFiNywKKyAgICAweGUyYjFjZmVlLCAweGUzNzNhNWQ5LCAweGU2M2NiMzVjLCAweGU3ZmVkOTZiLCAweGU1Yjg2NzMyLAorICAgIDB4ZTQ3YTBkMDUsIDB4ZWYyNjRhMzgsIDB4ZWVlNDIwMGYsIDB4ZWNhMjllNTYsIDB4ZWQ2MGY0NjEsCisgICAgMHhlODJmZTJlNCwgMHhlOWVkODhkMywgMHhlYmFiMzY4YSwgMHhlYTY5NWNiZCwgMHhmZDEzYjhmMCwKKyAgICAweGZjZDFkMmM3LCAweGZlOTc2YzllLCAweGZmNTUwNmE5LCAweGZhMWExMDJjLCAweGZiZDg3YTFiLAorICAgIDB4Zjk5ZWM0NDIsIDB4Zjg1Y2FlNzUsIDB4ZjMwMGU5NDgsIDB4ZjJjMjgzN2YsIDB4ZjA4NDNkMjYsCisgICAgMHhmMTQ2NTcxMSwgMHhmNDA5NDE5NCwgMHhmNWNiMmJhMywgMHhmNzhkOTVmYSwgMHhmNjRmZmZjZCwKKyAgICAweGQ5Nzg1ZDYwLCAweGQ4YmEzNzU3LCAweGRhZmM4OTBlLCAweGRiM2VlMzM5LCAweGRlNzFmNWJjLAorICAgIDB4ZGZiMzlmOGIsIDB4ZGRmNTIxZDIsIDB4ZGMzNzRiZTUsIDB4ZDc2YjBjZDgsIDB4ZDZhOTY2ZWYsCisgICAgMHhkNGVmZDhiNiwgMHhkNTJkYjI4MSwgMHhkMDYyYTQwNCwgMHhkMWEwY2UzMywgMHhkM2U2NzA2YSwKKyAgICAweGQyMjQxYTVkLCAweGM1NWVmZTEwLCAweGM0OWM5NDI3LCAweGM2ZGEyYTdlLCAweGM3MTg0MDQ5LAorICAgIDB4YzI1NzU2Y2MsIDB4YzM5NTNjZmIsIDB4YzFkMzgyYTIsIDB4YzAxMWU4OTUsIDB4Y2I0ZGFmYTgsCisgICAgMHhjYThmYzU5ZiwgMHhjOGM5N2JjNiwgMHhjOTBiMTFmMSwgMHhjYzQ0MDc3NCwgMHhjZDg2NmQ0MywKKyAgICAweGNmYzBkMzFhLCAweGNlMDJiOTJkLCAweDkxYWY5NjQwLCAweDkwNmRmYzc3LCAweDkyMmI0MjJlLAorICAgIDB4OTNlOTI4MTksIDB4OTZhNjNlOWMsIDB4OTc2NDU0YWIsIDB4OTUyMmVhZjIsIDB4OTRlMDgwYzUsCisgICAgMHg5ZmJjYzdmOCwgMHg5ZTdlYWRjZiwgMHg5YzM4MTM5NiwgMHg5ZGZhNzlhMSwgMHg5OGI1NmYyNCwKKyAgICAweDk5NzcwNTEzLCAweDliMzFiYjRhLCAweDlhZjNkMTdkLCAweDhkODkzNTMwLCAweDhjNGI1ZjA3LAorICAgIDB4OGUwZGUxNWUsIDB4OGZjZjhiNjksIDB4OGE4MDlkZWMsIDB4OGI0MmY3ZGIsIDB4ODkwNDQ5ODIsCisgICAgMHg4OGM2MjNiNSwgMHg4MzlhNjQ4OCwgMHg4MjU4MGViZiwgMHg4MDFlYjBlNiwgMHg4MWRjZGFkMSwKKyAgICAweDg0OTNjYzU0LCAweDg1NTFhNjYzLCAweDg3MTcxODNhLCAweDg2ZDU3MjBkLCAweGE5ZTJkMGEwLAorICAgIDB4YTgyMGJhOTcsIDB4YWE2NjA0Y2UsIDB4YWJhNDZlZjksIDB4YWVlYjc4N2MsIDB4YWYyOTEyNGIsCisgICAgMHhhZDZmYWMxMiwgMHhhY2FkYzYyNSwgMHhhN2YxODExOCwgMHhhNjMzZWIyZiwgMHhhNDc1NTU3NiwKKyAgICAweGE1YjczZjQxLCAweGEwZjgyOWM0LCAweGExM2E0M2YzLCAweGEzN2NmZGFhLCAweGEyYmU5NzlkLAorICAgIDB4YjVjNDczZDAsIDB4YjQwNjE5ZTcsIDB4YjY0MGE3YmUsIDB4Yjc4MmNkODksIDB4YjJjZGRiMGMsCisgICAgMHhiMzBmYjEzYiwgMHhiMTQ5MGY2MiwgMHhiMDhiNjU1NSwgMHhiYmQ3MjI2OCwgMHhiYTE1NDg1ZiwKKyAgICAweGI4NTNmNjA2LCAweGI5OTE5YzMxLCAweGJjZGU4YWI0LCAweGJkMWNlMDgzLCAweGJmNWE1ZWRhLAorICAgIDB4YmU5ODM0ZWR9LAorICAgezB4MDAwMDAwMDAsIDB4MTkxYjMxNDEsIDB4MzIzNjYyODIsIDB4MmIyZDUzYzMsIDB4NjQ2Y2M1MDQsCisgICAgMHg3ZDc3ZjQ0NSwgMHg1NjVhYTc4NiwgMHg0ZjQxOTZjNywgMHhjOGQ5OGEwOCwgMHhkMWMyYmI0OSwKKyAgICAweGZhZWZlODhhLCAweGUzZjRkOWNiLCAweGFjYjU0ZjBjLCAweGI1YWU3ZTRkLCAweDllODMyZDhlLAorICAgIDB4ODc5ODFjY2YsIDB4NGFjMjEyNTEsIDB4NTNkOTIzMTAsIDB4NzhmNDcwZDMsIDB4NjFlZjQxOTIsCisgICAgMHgyZWFlZDc1NSwgMHgzN2I1ZTYxNCwgMHgxYzk4YjVkNywgMHgwNTgzODQ5NiwgMHg4MjFiOTg1OSwKKyAgICAweDliMDBhOTE4LCAweGIwMmRmYWRiLCAweGE5MzZjYjlhLCAweGU2Nzc1ZDVkLCAweGZmNmM2YzFjLAorICAgIDB4ZDQ0MTNmZGYsIDB4Y2Q1YTBlOWUsIDB4OTU4NDI0YTIsIDB4OGM5ZjE1ZTMsIDB4YTdiMjQ2MjAsCisgICAgMHhiZWE5Nzc2MSwgMHhmMWU4ZTFhNiwgMHhlOGYzZDBlNywgMHhjM2RlODMyNCwgMHhkYWM1YjI2NSwKKyAgICAweDVkNWRhZWFhLCAweDQ0NDY5ZmViLCAweDZmNmJjYzI4LCAweDc2NzBmZDY5LCAweDM5MzE2YmFlLAorICAgIDB4MjAyYTVhZWYsIDB4MGIwNzA5MmMsIDB4MTIxYzM4NmQsIDB4ZGY0NjM2ZjMsIDB4YzY1ZDA3YjIsCisgICAgMHhlZDcwNTQ3MSwgMHhmNDZiNjUzMCwgMHhiYjJhZjNmNywgMHhhMjMxYzJiNiwgMHg4OTFjOTE3NSwKKyAgICAweDkwMDdhMDM0LCAweDE3OWZiY2ZiLCAweDBlODQ4ZGJhLCAweDI1YTlkZTc5LCAweDNjYjJlZjM4LAorICAgIDB4NzNmMzc5ZmYsIDB4NmFlODQ4YmUsIDB4NDFjNTFiN2QsIDB4NThkZTJhM2MsIDB4ZjA3OTRmMDUsCisgICAgMHhlOTYyN2U0NCwgMHhjMjRmMmQ4NywgMHhkYjU0MWNjNiwgMHg5NDE1OGEwMSwgMHg4ZDBlYmI0MCwKKyAgICAweGE2MjNlODgzLCAweGJmMzhkOWMyLCAweDM4YTBjNTBkLCAweDIxYmJmNDRjLCAweDBhOTZhNzhmLAorICAgIDB4MTM4ZDk2Y2UsIDB4NWNjYzAwMDksIDB4NDVkNzMxNDgsIDB4NmVmYTYyOGIsIDB4NzdlMTUzY2EsCisgICAgMHhiYWJiNWQ1NCwgMHhhM2EwNmMxNSwgMHg4ODhkM2ZkNiwgMHg5MTk2MGU5NywgMHhkZWQ3OTg1MCwKKyAgICAweGM3Y2NhOTExLCAweGVjZTFmYWQyLCAweGY1ZmFjYjkzLCAweDcyNjJkNzVjLCAweDZiNzllNjFkLAorICAgIDB4NDA1NGI1ZGUsIDB4NTk0Zjg0OWYsIDB4MTYwZTEyNTgsIDB4MGYxNTIzMTksIDB4MjQzODcwZGEsCisgICAgMHgzZDIzNDE5YiwgMHg2NWZkNmJhNywgMHg3Y2U2NWFlNiwgMHg1N2NiMDkyNSwgMHg0ZWQwMzg2NCwKKyAgICAweDAxOTFhZWEzLCAweDE4OGE5ZmUyLCAweDMzYTdjYzIxLCAweDJhYmNmZDYwLCAweGFkMjRlMWFmLAorICAgIDB4YjQzZmQwZWUsIDB4OWYxMjgzMmQsIDB4ODYwOWIyNmMsIDB4Yzk0ODI0YWIsIDB4ZDA1MzE1ZWEsCisgICAgMHhmYjdlNDYyOSwgMHhlMjY1Nzc2OCwgMHgyZjNmNzlmNiwgMHgzNjI0NDhiNywgMHgxZDA5MWI3NCwKKyAgICAweDA0MTIyYTM1LCAweDRiNTNiY2YyLCAweDUyNDg4ZGIzLCAweDc5NjVkZTcwLCAweDYwN2VlZjMxLAorICAgIDB4ZTdlNmYzZmUsIDB4ZmVmZGMyYmYsIDB4ZDVkMDkxN2MsIDB4Y2NjYmEwM2QsIDB4ODM4YTM2ZmEsCisgICAgMHg5YTkxMDdiYiwgMHhiMWJjNTQ3OCwgMHhhOGE3NjUzOSwgMHgzYjgzOTg0YiwgMHgyMjk4YTkwYSwKKyAgICAweDA5YjVmYWM5LCAweDEwYWVjYjg4LCAweDVmZWY1ZDRmLCAweDQ2ZjQ2YzBlLCAweDZkZDkzZmNkLAorICAgIDB4NzRjMjBlOGMsIDB4ZjM1YTEyNDMsIDB4ZWE0MTIzMDIsIDB4YzE2YzcwYzEsIDB4ZDg3NzQxODAsCisgICAgMHg5NzM2ZDc0NywgMHg4ZTJkZTYwNiwgMHhhNTAwYjVjNSwgMHhiYzFiODQ4NCwgMHg3MTQxOGExYSwKKyAgICAweDY4NWFiYjViLCAweDQzNzdlODk4LCAweDVhNmNkOWQ5LCAweDE1MmQ0ZjFlLCAweDBjMzY3ZTVmLAorICAgIDB4MjcxYjJkOWMsIDB4M2UwMDFjZGQsIDB4Yjk5ODAwMTIsIDB4YTA4MzMxNTMsIDB4OGJhZTYyOTAsCisgICAgMHg5MmI1NTNkMSwgMHhkZGY0YzUxNiwgMHhjNGVmZjQ1NywgMHhlZmMyYTc5NCwgMHhmNmQ5OTZkNSwKKyAgICAweGFlMDdiY2U5LCAweGI3MWM4ZGE4LCAweDljMzFkZTZiLCAweDg1MmFlZjJhLCAweGNhNmI3OWVkLAorICAgIDB4ZDM3MDQ4YWMsIDB4Zjg1ZDFiNmYsIDB4ZTE0NjJhMmUsIDB4NjZkZTM2ZTEsIDB4N2ZjNTA3YTAsCisgICAgMHg1NGU4NTQ2MywgMHg0ZGYzNjUyMiwgMHgwMmIyZjNlNSwgMHgxYmE5YzJhNCwgMHgzMDg0OTE2NywKKyAgICAweDI5OWZhMDI2LCAweGU0YzVhZWI4LCAweGZkZGU5ZmY5LCAweGQ2ZjNjYzNhLCAweGNmZThmZDdiLAorICAgIDB4ODBhOTZiYmMsIDB4OTliMjVhZmQsIDB4YjI5ZjA5M2UsIDB4YWI4NDM4N2YsIDB4MmMxYzI0YjAsCisgICAgMHgzNTA3MTVmMSwgMHgxZTJhNDYzMiwgMHgwNzMxNzc3MywgMHg0ODcwZTFiNCwgMHg1MTZiZDBmNSwKKyAgICAweDdhNDY4MzM2LCAweDYzNWRiMjc3LCAweGNiZmFkNzRlLCAweGQyZTFlNjBmLCAweGY5Y2NiNWNjLAorICAgIDB4ZTBkNzg0OGQsIDB4YWY5NjEyNGEsIDB4YjY4ZDIzMGIsIDB4OWRhMDcwYzgsIDB4ODRiYjQxODksCisgICAgMHgwMzIzNWQ0NiwgMHgxYTM4NmMwNywgMHgzMTE1M2ZjNCwgMHgyODBlMGU4NSwgMHg2NzRmOTg0MiwKKyAgICAweDdlNTRhOTAzLCAweDU1NzlmYWMwLCAweDRjNjJjYjgxLCAweDgxMzhjNTFmLCAweDk4MjNmNDVlLAorICAgIDB4YjMwZWE3OWQsIDB4YWExNTk2ZGMsIDB4ZTU1NDAwMWIsIDB4ZmM0ZjMxNWEsIDB4ZDc2MjYyOTksCisgICAgMHhjZTc5NTNkOCwgMHg0OWUxNGYxNywgMHg1MGZhN2U1NiwgMHg3YmQ3MmQ5NSwgMHg2MmNjMWNkNCwKKyAgICAweDJkOGQ4YTEzLCAweDM0OTZiYjUyLCAweDFmYmJlODkxLCAweDA2YTBkOWQwLCAweDVlN2VmM2VjLAorICAgIDB4NDc2NWMyYWQsIDB4NmM0ODkxNmUsIDB4NzU1M2EwMmYsIDB4M2ExMjM2ZTgsIDB4MjMwOTA3YTksCisgICAgMHgwODI0NTQ2YSwgMHgxMTNmNjUyYiwgMHg5NmE3NzllNCwgMHg4ZmJjNDhhNSwgMHhhNDkxMWI2NiwKKyAgICAweGJkOGEyYTI3LCAweGYyY2JiY2UwLCAweGViZDA4ZGExLCAweGMwZmRkZTYyLCAweGQ5ZTZlZjIzLAorICAgIDB4MTRiY2UxYmQsIDB4MGRhN2QwZmMsIDB4MjY4YTgzM2YsIDB4M2Y5MWIyN2UsIDB4NzBkMDI0YjksCisgICAgMHg2OWNiMTVmOCwgMHg0MmU2NDYzYiwgMHg1YmZkNzc3YSwgMHhkYzY1NmJiNSwgMHhjNTdlNWFmNCwKKyAgICAweGVlNTMwOTM3LCAweGY3NDgzODc2LCAweGI4MDlhZWIxLCAweGExMTI5ZmYwLCAweDhhM2ZjYzMzLAorICAgIDB4OTMyNGZkNzJ9LAorICAgezB4MDAwMDAwMDAsIDB4NzcwNzMwOTYsIDB4ZWUwZTYxMmMsIDB4OTkwOTUxYmEsIDB4MDc2ZGM0MTksCisgICAgMHg3MDZhZjQ4ZiwgMHhlOTYzYTUzNSwgMHg5ZTY0OTVhMywgMHgwZWRiODgzMiwgMHg3OWRjYjhhNCwKKyAgICAweGUwZDVlOTFlLCAweDk3ZDJkOTg4LCAweDA5YjY0YzJiLCAweDdlYjE3Y2JkLCAweGU3YjgyZDA3LAorICAgIDB4OTBiZjFkOTEsIDB4MWRiNzEwNjQsIDB4NmFiMDIwZjIsIDB4ZjNiOTcxNDgsIDB4ODRiZTQxZGUsCisgICAgMHgxYWRhZDQ3ZCwgMHg2ZGRkZTRlYiwgMHhmNGQ0YjU1MSwgMHg4M2QzODVjNywgMHgxMzZjOTg1NiwKKyAgICAweDY0NmJhOGMwLCAweGZkNjJmOTdhLCAweDhhNjVjOWVjLCAweDE0MDE1YzRmLCAweDYzMDY2Y2Q5LAorICAgIDB4ZmEwZjNkNjMsIDB4OGQwODBkZjUsIDB4M2I2ZTIwYzgsIDB4NGM2OTEwNWUsIDB4ZDU2MDQxZTQsCisgICAgMHhhMjY3NzE3MiwgMHgzYzAzZTRkMSwgMHg0YjA0ZDQ0NywgMHhkMjBkODVmZCwgMHhhNTBhYjU2YiwKKyAgICAweDM1YjVhOGZhLCAweDQyYjI5ODZjLCAweGRiYmJjOWQ2LCAweGFjYmNmOTQwLCAweDMyZDg2Y2UzLAorICAgIDB4NDVkZjVjNzUsIDB4ZGNkNjBkY2YsIDB4YWJkMTNkNTksIDB4MjZkOTMwYWMsIDB4NTFkZTAwM2EsCisgICAgMHhjOGQ3NTE4MCwgMHhiZmQwNjExNiwgMHgyMWI0ZjRiNSwgMHg1NmIzYzQyMywgMHhjZmJhOTU5OSwKKyAgICAweGI4YmRhNTBmLCAweDI4MDJiODllLCAweDVmMDU4ODA4LCAweGM2MGNkOWIyLCAweGIxMGJlOTI0LAorICAgIDB4MmY2ZjdjODcsIDB4NTg2ODRjMTEsIDB4YzE2MTFkYWIsIDB4YjY2NjJkM2QsIDB4NzZkYzQxOTAsCisgICAgMHgwMWRiNzEwNiwgMHg5OGQyMjBiYywgMHhlZmQ1MTAyYSwgMHg3MWIxODU4OSwgMHgwNmI2YjUxZiwKKyAgICAweDlmYmZlNGE1LCAweGU4YjhkNDMzLCAweDc4MDdjOWEyLCAweDBmMDBmOTM0LCAweDk2MDlhODhlLAorICAgIDB4ZTEwZTk4MTgsIDB4N2Y2YTBkYmIsIDB4MDg2ZDNkMmQsIDB4OTE2NDZjOTcsIDB4ZTY2MzVjMDEsCisgICAgMHg2YjZiNTFmNCwgMHgxYzZjNjE2MiwgMHg4NTY1MzBkOCwgMHhmMjYyMDA0ZSwgMHg2YzA2OTVlZCwKKyAgICAweDFiMDFhNTdiLCAweDgyMDhmNGMxLCAweGY1MGZjNDU3LCAweDY1YjBkOWM2LCAweDEyYjdlOTUwLAorICAgIDB4OGJiZWI4ZWEsIDB4ZmNiOTg4N2MsIDB4NjJkZDFkZGYsIDB4MTVkYTJkNDksIDB4OGNkMzdjZjMsCisgICAgMHhmYmQ0NGM2NSwgMHg0ZGIyNjE1OCwgMHgzYWI1NTFjZSwgMHhhM2JjMDA3NCwgMHhkNGJiMzBlMiwKKyAgICAweDRhZGZhNTQxLCAweDNkZDg5NWQ3LCAweGE0ZDFjNDZkLCAweGQzZDZmNGZiLCAweDQzNjllOTZhLAorICAgIDB4MzQ2ZWQ5ZmMsIDB4YWQ2Nzg4NDYsIDB4ZGE2MGI4ZDAsIDB4NDQwNDJkNzMsIDB4MzMwMzFkZTUsCisgICAgMHhhYTBhNGM1ZiwgMHhkZDBkN2NjOSwgMHg1MDA1NzEzYywgMHgyNzAyNDFhYSwgMHhiZTBiMTAxMCwKKyAgICAweGM5MGMyMDg2LCAweDU3NjhiNTI1LCAweDIwNmY4NWIzLCAweGI5NjZkNDA5LCAweGNlNjFlNDlmLAorICAgIDB4NWVkZWY5MGUsIDB4MjlkOWM5OTgsIDB4YjBkMDk4MjIsIDB4YzdkN2E4YjQsIDB4NTliMzNkMTcsCisgICAgMHgyZWI0MGQ4MSwgMHhiN2JkNWMzYiwgMHhjMGJhNmNhZCwgMHhlZGI4ODMyMCwgMHg5YWJmYjNiNiwKKyAgICAweDAzYjZlMjBjLCAweDc0YjFkMjlhLCAweGVhZDU0NzM5LCAweDlkZDI3N2FmLCAweDA0ZGIyNjE1LAorICAgIDB4NzNkYzE2ODMsIDB4ZTM2MzBiMTIsIDB4OTQ2NDNiODQsIDB4MGQ2ZDZhM2UsIDB4N2E2YTVhYTgsCisgICAgMHhlNDBlY2YwYiwgMHg5MzA5ZmY5ZCwgMHgwYTAwYWUyNywgMHg3ZDA3OWViMSwgMHhmMDBmOTM0NCwKKyAgICAweDg3MDhhM2QyLCAweDFlMDFmMjY4LCAweDY5MDZjMmZlLCAweGY3NjI1NzVkLCAweDgwNjU2N2NiLAorICAgIDB4MTk2YzM2NzEsIDB4NmU2YjA2ZTcsIDB4ZmVkNDFiNzYsIDB4ODlkMzJiZTAsIDB4MTBkYTdhNWEsCisgICAgMHg2N2RkNGFjYywgMHhmOWI5ZGY2ZiwgMHg4ZWJlZWZmOSwgMHgxN2I3YmU0MywgMHg2MGIwOGVkNSwKKyAgICAweGQ2ZDZhM2U4LCAweGExZDE5MzdlLCAweDM4ZDhjMmM0LCAweDRmZGZmMjUyLCAweGQxYmI2N2YxLAorICAgIDB4YTZiYzU3NjcsIDB4M2ZiNTA2ZGQsIDB4NDhiMjM2NGIsIDB4ZDgwZDJiZGEsIDB4YWYwYTFiNGMsCisgICAgMHgzNjAzNGFmNiwgMHg0MTA0N2E2MCwgMHhkZjYwZWZjMywgMHhhODY3ZGY1NSwgMHgzMTZlOGVlZiwKKyAgICAweDQ2NjliZTc5LCAweGNiNjFiMzhjLCAweGJjNjY4MzFhLCAweDI1NmZkMmEwLCAweDUyNjhlMjM2LAorICAgIDB4Y2MwYzc3OTUsIDB4YmIwYjQ3MDMsIDB4MjIwMjE2YjksIDB4NTUwNTI2MmYsIDB4YzViYTNiYmUsCisgICAgMHhiMmJkMGIyOCwgMHgyYmI0NWE5MiwgMHg1Y2IzNmEwNCwgMHhjMmQ3ZmZhNywgMHhiNWQwY2YzMSwKKyAgICAweDJjZDk5ZThiLCAweDViZGVhZTFkLCAweDliNjRjMmIwLCAweGVjNjNmMjI2LCAweDc1NmFhMzljLAorICAgIDB4MDI2ZDkzMGEsIDB4OWMwOTA2YTksIDB4ZWIwZTM2M2YsIDB4NzIwNzY3ODUsIDB4MDUwMDU3MTMsCisgICAgMHg5NWJmNGE4MiwgMHhlMmI4N2ExNCwgMHg3YmIxMmJhZSwgMHgwY2I2MWIzOCwgMHg5MmQyOGU5YiwKKyAgICAweGU1ZDViZTBkLCAweDdjZGNlZmI3LCAweDBiZGJkZjIxLCAweDg2ZDNkMmQ0LCAweGYxZDRlMjQyLAorICAgIDB4NjhkZGIzZjgsIDB4MWZkYTgzNmUsIDB4ODFiZTE2Y2QsIDB4ZjZiOTI2NWIsIDB4NmZiMDc3ZTEsCisgICAgMHgxOGI3NDc3NywgMHg4ODA4NWFlNiwgMHhmZjBmNmE3MCwgMHg2NjA2M2JjYSwgMHgxMTAxMGI1YywKKyAgICAweDhmNjU5ZWZmLCAweGY4NjJhZTY5LCAweDYxNmJmZmQzLCAweDE2NmNjZjQ1LCAweGEwMGFlMjc4LAorICAgIDB4ZDcwZGQyZWUsIDB4NGUwNDgzNTQsIDB4MzkwM2IzYzIsIDB4YTc2NzI2NjEsIDB4ZDA2MDE2ZjcsCisgICAgMHg0OTY5NDc0ZCwgMHgzZTZlNzdkYiwgMHhhZWQxNmE0YSwgMHhkOWQ2NWFkYywgMHg0MGRmMGI2NiwKKyAgICAweDM3ZDgzYmYwLCAweGE5YmNhZTUzLCAweGRlYmI5ZWM1LCAweDQ3YjJjZjdmLCAweDMwYjVmZmU5LAorICAgIDB4YmRiZGYyMWMsIDB4Y2FiYWMyOGEsIDB4NTNiMzkzMzAsIDB4MjRiNGEzYTYsIDB4YmFkMDM2MDUsCisgICAgMHhjZGQ3MDY5MywgMHg1NGRlNTcyOSwgMHgyM2Q5NjdiZiwgMHhiMzY2N2EyZSwgMHhjNDYxNGFiOCwKKyAgICAweDVkNjgxYjAyLCAweDJhNmYyYjk0LCAweGI0MGJiZTM3LCAweGMzMGM4ZWExLCAweDVhMDVkZjFiLAorICAgIDB4MmQwMmVmOGR9fTsKKworbG9jYWwgY29uc3Qgel93b3JkX3QgRkFSIGNyY19icmFpZF9iaWdfdGFibGVbXVsyNTZdID0geworICAgezB4MDAwMDAwMDAsIDB4OTYzMDA3NzcsIDB4MmM2MTBlZWUsIDB4YmE1MTA5OTksIDB4MTljNDZkMDcsCisgICAgMHg4ZmY0NmE3MCwgMHgzNWE1NjNlOSwgMHhhMzk1NjQ5ZSwgMHgzMjg4ZGIwZSwgMHhhNGI4ZGM3OSwKKyAgICAweDFlZTlkNWUwLCAweDg4ZDlkMjk3LCAweDJiNGNiNjA5LCAweGJkN2NiMTdlLCAweDA3MmRiOGU3LAorICAgIDB4OTExZGJmOTAsIDB4NjQxMGI3MWQsIDB4ZjIyMGIwNmEsIDB4NDg3MWI5ZjMsIDB4ZGU0MWJlODQsCisgICAgMHg3ZGQ0ZGExYSwgMHhlYmU0ZGQ2ZCwgMHg1MWI1ZDRmNCwgMHhjNzg1ZDM4MywgMHg1Njk4NmMxMywKKyAgICAweGMwYTg2YjY0LCAweDdhZjk2MmZkLCAweGVjYzk2NThhLCAweDRmNWMwMTE0LCAweGQ5NmMwNjYzLAorICAgIDB4NjMzZDBmZmEsIDB4ZjUwZDA4OGQsIDB4YzgyMDZlM2IsIDB4NWUxMDY5NGMsIDB4ZTQ0MTYwZDUsCisgICAgMHg3MjcxNjdhMiwgMHhkMWU0MDMzYywgMHg0N2Q0MDQ0YiwgMHhmZDg1MGRkMiwgMHg2YmI1MGFhNSwKKyAgICAweGZhYThiNTM1LCAweDZjOThiMjQyLCAweGQ2YzliYmRiLCAweDQwZjliY2FjLCAweGUzNmNkODMyLAorICAgIDB4NzU1Y2RmNDUsIDB4Y2YwZGQ2ZGMsIDB4NTkzZGQxYWIsIDB4YWMzMGQ5MjYsIDB4M2EwMGRlNTEsCisgICAgMHg4MDUxZDdjOCwgMHgxNjYxZDBiZiwgMHhiNWY0YjQyMSwgMHgyM2M0YjM1NiwgMHg5OTk1YmFjZiwKKyAgICAweDBmYTViZGI4LCAweDllYjgwMjI4LCAweDA4ODgwNTVmLCAweGIyZDkwY2M2LCAweDI0ZTkwYmIxLAorICAgIDB4ODc3YzZmMmYsIDB4MTE0YzY4NTgsIDB4YWIxZDYxYzEsIDB4M2QyZDY2YjYsIDB4OTA0MWRjNzYsCisgICAgMHgwNjcxZGIwMSwgMHhiYzIwZDI5OCwgMHgyYTEwZDVlZiwgMHg4OTg1YjE3MSwgMHgxZmI1YjYwNiwKKyAgICAweGE1ZTRiZjlmLCAweDMzZDRiOGU4LCAweGEyYzkwNzc4LCAweDM0ZjkwMDBmLCAweDhlYTgwOTk2LAorICAgIDB4MTg5ODBlZTEsIDB4YmIwZDZhN2YsIDB4MmQzZDZkMDgsIDB4OTc2YzY0OTEsIDB4MDE1YzYzZTYsCisgICAgMHhmNDUxNmI2YiwgMHg2MjYxNmMxYywgMHhkODMwNjU4NSwgMHg0ZTAwNjJmMiwgMHhlZDk1MDY2YywKKyAgICAweDdiYTUwMTFiLCAweGMxZjQwODgyLCAweDU3YzQwZmY1LCAweGM2ZDliMDY1LCAweDUwZTliNzEyLAorICAgIDB4ZWFiOGJlOGIsIDB4N2M4OGI5ZmMsIDB4ZGYxZGRkNjIsIDB4NDkyZGRhMTUsIDB4ZjM3Y2QzOGMsCisgICAgMHg2NTRjZDRmYiwgMHg1ODYxYjI0ZCwgMHhjZTUxYjUzYSwgMHg3NDAwYmNhMywgMHhlMjMwYmJkNCwKKyAgICAweDQxYTVkZjRhLCAweGQ3OTVkODNkLCAweDZkYzRkMWE0LCAweGZiZjRkNmQzLCAweDZhZTk2OTQzLAorICAgIDB4ZmNkOTZlMzQsIDB4NDY4ODY3YWQsIDB4ZDBiODYwZGEsIDB4NzMyZDA0NDQsIDB4ZTUxZDAzMzMsCisgICAgMHg1ZjRjMGFhYSwgMHhjOTdjMGRkZCwgMHgzYzcxMDU1MCwgMHhhYTQxMDIyNywgMHgxMDEwMGJiZSwKKyAgICAweDg2MjAwY2M5LCAweDI1YjU2ODU3LCAweGIzODU2ZjIwLCAweDA5ZDQ2NmI5LCAweDlmZTQ2MWNlLAorICAgIDB4MGVmOWRlNWUsIDB4OThjOWQ5MjksIDB4MjI5OGQwYjAsIDB4YjRhOGQ3YzcsIDB4MTczZGIzNTksCisgICAgMHg4MTBkYjQyZSwgMHgzYjVjYmRiNywgMHhhZDZjYmFjMCwgMHgyMDgzYjhlZCwgMHhiNmIzYmY5YSwKKyAgICAweDBjZTJiNjAzLCAweDlhZDJiMTc0LCAweDM5NDdkNWVhLCAweGFmNzdkMjlkLCAweDE1MjZkYjA0LAorICAgIDB4ODMxNmRjNzMsIDB4MTIwYjYzZTMsIDB4ODQzYjY0OTQsIDB4M2U2YTZkMGQsIDB4YTg1YTZhN2EsCisgICAgMHgwYmNmMGVlNCwgMHg5ZGZmMDk5MywgMHgyN2FlMDAwYSwgMHhiMTllMDc3ZCwgMHg0NDkzMGZmMCwKKyAgICAweGQyYTMwODg3LCAweDY4ZjIwMTFlLCAweGZlYzIwNjY5LCAweDVkNTc2MmY3LCAweGNiNjc2NTgwLAorICAgIDB4NzEzNjZjMTksIDB4ZTcwNjZiNmUsIDB4NzYxYmQ0ZmUsIDB4ZTAyYmQzODksIDB4NWE3YWRhMTAsCisgICAgMHhjYzRhZGQ2NywgMHg2ZmRmYjlmOSwgMHhmOWVmYmU4ZSwgMHg0M2JlYjcxNywgMHhkNThlYjA2MCwKKyAgICAweGU4YTNkNmQ2LCAweDdlOTNkMWExLCAweGM0YzJkODM4LCAweDUyZjJkZjRmLCAweGYxNjdiYmQxLAorICAgIDB4Njc1N2JjYTYsIDB4ZGQwNmI1M2YsIDB4NGIzNmIyNDgsIDB4ZGEyYjBkZDgsIDB4NGMxYjBhYWYsCisgICAgMHhmNjRhMDMzNiwgMHg2MDdhMDQ0MSwgMHhjM2VmNjBkZiwgMHg1NWRmNjdhOCwgMHhlZjhlNmUzMSwKKyAgICAweDc5YmU2OTQ2LCAweDhjYjM2MWNiLCAweDFhODM2NmJjLCAweGEwZDI2ZjI1LCAweDM2ZTI2ODUyLAorICAgIDB4OTU3NzBjY2MsIDB4MDM0NzBiYmIsIDB4YjkxNjAyMjIsIDB4MmYyNjA1NTUsIDB4YmUzYmJhYzUsCisgICAgMHgyODBiYmRiMiwgMHg5MjVhYjQyYiwgMHgwNDZhYjM1YywgMHhhN2ZmZDdjMiwgMHgzMWNmZDBiNSwKKyAgICAweDhiOWVkOTJjLCAweDFkYWVkZTViLCAweGIwYzI2NDliLCAweDI2ZjI2M2VjLCAweDljYTM2YTc1LAorICAgIDB4MGE5MzZkMDIsIDB4YTkwNjA5OWMsIDB4M2YzNjBlZWIsIDB4ODU2NzA3NzIsIDB4MTM1NzAwMDUsCisgICAgMHg4MjRhYmY5NSwgMHgxNDdhYjhlMiwgMHhhZTJiYjE3YiwgMHgzODFiYjYwYywgMHg5YjhlZDI5MiwKKyAgICAweDBkYmVkNWU1LCAweGI3ZWZkYzdjLCAweDIxZGZkYjBiLCAweGQ0ZDJkMzg2LCAweDQyZTJkNGYxLAorICAgIDB4ZjhiM2RkNjgsIDB4NmU4M2RhMWYsIDB4Y2QxNmJlODEsIDB4NWIyNmI5ZjYsIDB4ZTE3N2IwNmYsCisgICAgMHg3NzQ3YjcxOCwgMHhlNjVhMDg4OCwgMHg3MDZhMGZmZiwgMHhjYTNiMDY2NiwgMHg1YzBiMDExMSwKKyAgICAweGZmOWU2NThmLCAweDY5YWU2MmY4LCAweGQzZmY2YjYxLCAweDQ1Y2Y2YzE2LCAweDc4ZTIwYWEwLAorICAgIDB4ZWVkMjBkZDcsIDB4NTQ4MzA0NGUsIDB4YzJiMzAzMzksIDB4NjEyNjY3YTcsIDB4ZjcxNjYwZDAsCisgICAgMHg0ZDQ3Njk0OSwgMHhkYjc3NmUzZSwgMHg0YTZhZDFhZSwgMHhkYzVhZDZkOSwgMHg2NjBiZGY0MCwKKyAgICAweGYwM2JkODM3LCAweDUzYWViY2E5LCAweGM1OWViYmRlLCAweDdmY2ZiMjQ3LCAweGU5ZmZiNTMwLAorICAgIDB4MWNmMmJkYmQsIDB4OGFjMmJhY2EsIDB4MzA5M2IzNTMsIDB4YTZhM2I0MjQsIDB4MDUzNmQwYmEsCisgICAgMHg5MzA2ZDdjZCwgMHgyOTU3ZGU1NCwgMHhiZjY3ZDkyMywgMHgyZTdhNjZiMywgMHhiODRhNjFjNCwKKyAgICAweDAyMWI2ODVkLCAweDk0MmI2ZjJhLCAweDM3YmUwYmI0LCAweGExOGUwY2MzLCAweDFiZGYwNTVhLAorICAgIDB4OGRlZjAyMmR9LAorICAgezB4MDAwMDAwMDAsIDB4NDEzMTFiMTksIDB4ODI2MjM2MzIsIDB4YzM1MzJkMmIsIDB4MDRjNTZjNjQsCisgICAgMHg0NWY0Nzc3ZCwgMHg4NmE3NWE1NiwgMHhjNzk2NDE0ZiwgMHgwODhhZDljOCwgMHg0OWJiYzJkMSwKKyAgICAweDhhZThlZmZhLCAweGNiZDlmNGUzLCAweDBjNGZiNWFjLCAweDRkN2VhZWI1LCAweDhlMmQ4MzllLAorICAgIDB4Y2YxYzk4ODcsIDB4NTExMmMyNGEsIDB4MTAyM2Q5NTMsIDB4ZDM3MGY0NzgsIDB4OTI0MWVmNjEsCisgICAgMHg1NWQ3YWUyZSwgMHgxNGU2YjUzNywgMHhkN2I1OTgxYywgMHg5Njg0ODMwNSwgMHg1OTk4MWI4MiwKKyAgICAweDE4YTkwMDliLCAweGRiZmEyZGIwLCAweDlhY2IzNmE5LCAweDVkNWQ3N2U2LCAweDFjNmM2Y2ZmLAorICAgIDB4ZGYzZjQxZDQsIDB4OWUwZTVhY2QsIDB4YTIyNDg0OTUsIDB4ZTMxNTlmOGMsIDB4MjA0NmIyYTcsCisgICAgMHg2MTc3YTliZSwgMHhhNmUxZThmMSwgMHhlN2QwZjNlOCwgMHgyNDgzZGVjMywgMHg2NWIyYzVkYSwKKyAgICAweGFhYWU1ZDVkLCAweGViOWY0NjQ0LCAweDI4Y2M2YjZmLCAweDY5ZmQ3MDc2LCAweGFlNmIzMTM5LAorICAgIDB4ZWY1YTJhMjAsIDB4MmMwOTA3MGIsIDB4NmQzODFjMTIsIDB4ZjMzNjQ2ZGYsIDB4YjIwNzVkYzYsCisgICAgMHg3MTU0NzBlZCwgMHgzMDY1NmJmNCwgMHhmN2YzMmFiYiwgMHhiNmMyMzFhMiwgMHg3NTkxMWM4OSwKKyAgICAweDM0YTAwNzkwLCAweGZiYmM5ZjE3LCAweGJhOGQ4NDBlLCAweDc5ZGVhOTI1LCAweDM4ZWZiMjNjLAorICAgIDB4ZmY3OWYzNzMsIDB4YmU0OGU4NmEsIDB4N2QxYmM1NDEsIDB4M2MyYWRlNTgsIDB4MDU0Zjc5ZjAsCisgICAgMHg0NDdlNjJlOSwgMHg4NzJkNGZjMiwgMHhjNjFjNTRkYiwgMHgwMThhMTU5NCwgMHg0MGJiMGU4ZCwKKyAgICAweDgzZTgyM2E2LCAweGMyZDkzOGJmLCAweDBkYzVhMDM4LCAweDRjZjRiYjIxLCAweDhmYTc5NjBhLAorICAgIDB4Y2U5NjhkMTMsIDB4MDkwMGNjNWMsIDB4NDgzMWQ3NDUsIDB4OGI2MmZhNmUsIDB4Y2E1M2UxNzcsCisgICAgMHg1NDVkYmJiYSwgMHgxNTZjYTBhMywgMHhkNjNmOGQ4OCwgMHg5NzBlOTY5MSwgMHg1MDk4ZDdkZSwKKyAgICAweDExYTljY2M3LCAweGQyZmFlMWVjLCAweDkzY2JmYWY1LCAweDVjZDc2MjcyLCAweDFkZTY3OTZiLAorICAgIDB4ZGViNTU0NDAsIDB4OWY4NDRmNTksIDB4NTgxMjBlMTYsIDB4MTkyMzE1MGYsIDB4ZGE3MDM4MjQsCisgICAgMHg5YjQxMjMzZCwgMHhhNzZiZmQ2NSwgMHhlNjVhZTY3YywgMHgyNTA5Y2I1NywgMHg2NDM4ZDA0ZSwKKyAgICAweGEzYWU5MTAxLCAweGUyOWY4YTE4LCAweDIxY2NhNzMzLCAweDYwZmRiYzJhLCAweGFmZTEyNGFkLAorICAgIDB4ZWVkMDNmYjQsIDB4MmQ4MzEyOWYsIDB4NmNiMjA5ODYsIDB4YWIyNDQ4YzksIDB4ZWExNTUzZDAsCisgICAgMHgyOTQ2N2VmYiwgMHg2ODc3NjVlMiwgMHhmNjc5M2YyZiwgMHhiNzQ4MjQzNiwgMHg3NDFiMDkxZCwKKyAgICAweDM1MmExMjA0LCAweGYyYmM1MzRiLCAweGIzOGQ0ODUyLCAweDcwZGU2NTc5LCAweDMxZWY3ZTYwLAorICAgIDB4ZmVmM2U2ZTcsIDB4YmZjMmZkZmUsIDB4N2M5MWQwZDUsIDB4M2RhMGNiY2MsIDB4ZmEzNjhhODMsCisgICAgMHhiYjA3OTE5YSwgMHg3ODU0YmNiMSwgMHgzOTY1YTdhOCwgMHg0Yjk4ODMzYiwgMHgwYWE5OTgyMiwKKyAgICAweGM5ZmFiNTA5LCAweDg4Y2JhZTEwLCAweDRmNWRlZjVmLCAweDBlNmNmNDQ2LCAweGNkM2ZkOTZkLAorICAgIDB4OGMwZWMyNzQsIDB4NDMxMjVhZjMsIDB4MDIyMzQxZWEsIDB4YzE3MDZjYzEsIDB4ODA0MTc3ZDgsCisgICAgMHg0N2Q3MzY5NywgMHgwNmU2MmQ4ZSwgMHhjNWI1MDBhNSwgMHg4NDg0MWJiYywgMHgxYThhNDE3MSwKKyAgICAweDViYmI1YTY4LCAweDk4ZTg3NzQzLCAweGQ5ZDk2YzVhLCAweDFlNGYyZDE1LCAweDVmN2UzNjBjLAorICAgIDB4OWMyZDFiMjcsIDB4ZGQxYzAwM2UsIDB4MTIwMDk4YjksIDB4NTMzMTgzYTAsIDB4OTA2MmFlOGIsCisgICAgMHhkMTUzYjU5MiwgMHgxNmM1ZjRkZCwgMHg1N2Y0ZWZjNCwgMHg5NGE3YzJlZiwgMHhkNTk2ZDlmNiwKKyAgICAweGU5YmMwN2FlLCAweGE4OGQxY2I3LCAweDZiZGUzMTljLCAweDJhZWYyYTg1LCAweGVkNzk2YmNhLAorICAgIDB4YWM0ODcwZDMsIDB4NmYxYjVkZjgsIDB4MmUyYTQ2ZTEsIDB4ZTEzNmRlNjYsIDB4YTAwN2M1N2YsCisgICAgMHg2MzU0ZTg1NCwgMHgyMjY1ZjM0ZCwgMHhlNWYzYjIwMiwgMHhhNGMyYTkxYiwgMHg2NzkxODQzMCwKKyAgICAweDI2YTA5ZjI5LCAweGI4YWVjNWU0LCAweGY5OWZkZWZkLCAweDNhY2NmM2Q2LCAweDdiZmRlOGNmLAorICAgIDB4YmM2YmE5ODAsIDB4ZmQ1YWIyOTksIDB4M2UwOTlmYjIsIDB4N2YzODg0YWIsIDB4YjAyNDFjMmMsCisgICAgMHhmMTE1MDczNSwgMHgzMjQ2MmExZSwgMHg3Mzc3MzEwNywgMHhiNGUxNzA0OCwgMHhmNWQwNmI1MSwKKyAgICAweDM2ODM0NjdhLCAweDc3YjI1ZDYzLCAweDRlZDdmYWNiLCAweDBmZTZlMWQyLCAweGNjYjVjY2Y5LAorICAgIDB4OGQ4NGQ3ZTAsIDB4NGExMjk2YWYsIDB4MGIyMzhkYjYsIDB4Yzg3MGEwOWQsIDB4ODk0MWJiODQsCisgICAgMHg0NjVkMjMwMywgMHgwNzZjMzgxYSwgMHhjNDNmMTUzMSwgMHg4NTBlMGUyOCwgMHg0Mjk4NGY2NywKKyAgICAweDAzYTk1NDdlLCAweGMwZmE3OTU1LCAweDgxY2I2MjRjLCAweDFmYzUzODgxLCAweDVlZjQyMzk4LAorICAgIDB4OWRhNzBlYjMsIDB4ZGM5NjE1YWEsIDB4MWIwMDU0ZTUsIDB4NWEzMTRmZmMsIDB4OTk2MjYyZDcsCisgICAgMHhkODUzNzljZSwgMHgxNzRmZTE0OSwgMHg1NjdlZmE1MCwgMHg5NTJkZDc3YiwgMHhkNDFjY2M2MiwKKyAgICAweDEzOGE4ZDJkLCAweDUyYmI5NjM0LCAweDkxZThiYjFmLCAweGQwZDlhMDA2LCAweGVjZjM3ZTVlLAorICAgIDB4YWRjMjY1NDcsIDB4NmU5MTQ4NmMsIDB4MmZhMDUzNzUsIDB4ZTgzNjEyM2EsIDB4YTkwNzA5MjMsCisgICAgMHg2YTU0MjQwOCwgMHgyYjY1M2YxMSwgMHhlNDc5YTc5NiwgMHhhNTQ4YmM4ZiwgMHg2NjFiOTFhNCwKKyAgICAweDI3MmE4YWJkLCAweGUwYmNjYmYyLCAweGExOGRkMGViLCAweDYyZGVmZGMwLCAweDIzZWZlNmQ5LAorICAgIDB4YmRlMWJjMTQsIDB4ZmNkMGE3MGQsIDB4M2Y4MzhhMjYsIDB4N2ViMjkxM2YsIDB4YjkyNGQwNzAsCisgICAgMHhmODE1Y2I2OSwgMHgzYjQ2ZTY0MiwgMHg3YTc3ZmQ1YiwgMHhiNTZiNjVkYywgMHhmNDVhN2VjNSwKKyAgICAweDM3MDk1M2VlLCAweDc2Mzg0OGY3LCAweGIxYWUwOWI4LCAweGYwOWYxMmExLCAweDMzY2MzZjhhLAorICAgIDB4NzJmZDI0OTN9LAorICAgezB4MDAwMDAwMDAsIDB4Mzc2YWMyMDEsIDB4NmVkNDg0MDMsIDB4NTliZTQ2MDIsIDB4ZGNhODA5MDcsCisgICAgMHhlYmMyY2IwNiwgMHhiMjdjOGQwNCwgMHg4NTE2NGYwNSwgMHhiODUxMTMwZSwgMHg4ZjNiZDEwZiwKKyAgICAweGQ2ODU5NzBkLCAweGUxZWY1NTBjLCAweDY0ZjkxYTA5LCAweDUzOTNkODA4LCAweDBhMmQ5ZTBhLAorICAgIDB4M2Q0NzVjMGIsIDB4NzBhMzI2MWMsIDB4NDdjOWU0MWQsIDB4MWU3N2EyMWYsIDB4MjkxZDYwMWUsCisgICAgMHhhYzBiMmYxYiwgMHg5YjYxZWQxYSwgMHhjMmRmYWIxOCwgMHhmNWI1NjkxOSwgMHhjOGYyMzUxMiwKKyAgICAweGZmOThmNzEzLCAweGE2MjZiMTExLCAweDkxNGM3MzEwLCAweDE0NWEzYzE1LCAweDIzMzBmZTE0LAorICAgIDB4N2E4ZWI4MTYsIDB4NGRlNDdhMTcsIDB4ZTA0NjRkMzgsIDB4ZDcyYzhmMzksIDB4OGU5MmM5M2IsCisgICAgMHhiOWY4MGIzYSwgMHgzY2VlNDQzZiwgMHgwYjg0ODYzZSwgMHg1MjNhYzAzYywgMHg2NTUwMDIzZCwKKyAgICAweDU4MTc1ZTM2LCAweDZmN2Q5YzM3LCAweDM2YzNkYTM1LCAweDAxYTkxODM0LCAweDg0YmY1NzMxLAorICAgIDB4YjNkNTk1MzAsIDB4ZWE2YmQzMzIsIDB4ZGQwMTExMzMsIDB4OTBlNTZiMjQsIDB4YTc4ZmE5MjUsCisgICAgMHhmZTMxZWYyNywgMHhjOTViMmQyNiwgMHg0YzRkNjIyMywgMHg3YjI3YTAyMiwgMHgyMjk5ZTYyMCwKKyAgICAweDE1ZjMyNDIxLCAweDI4YjQ3ODJhLCAweDFmZGViYTJiLCAweDQ2NjBmYzI5LCAweDcxMGEzZTI4LAorICAgIDB4ZjQxYzcxMmQsIDB4YzM3NmIzMmMsIDB4OWFjOGY1MmUsIDB4YWRhMjM3MmYsIDB4YzA4ZDlhNzAsCisgICAgMHhmN2U3NTg3MSwgMHhhZTU5MWU3MywgMHg5OTMzZGM3MiwgMHgxYzI1OTM3NywgMHgyYjRmNTE3NiwKKyAgICAweDcyZjExNzc0LCAweDQ1OWJkNTc1LCAweDc4ZGM4OTdlLCAweDRmYjY0YjdmLCAweDE2MDgwZDdkLAorICAgIDB4MjE2MmNmN2MsIDB4YTQ3NDgwNzksIDB4OTMxZTQyNzgsIDB4Y2FhMDA0N2EsIDB4ZmRjYWM2N2IsCisgICAgMHhiMDJlYmM2YywgMHg4NzQ0N2U2ZCwgMHhkZWZhMzg2ZiwgMHhlOTkwZmE2ZSwgMHg2Yzg2YjU2YiwKKyAgICAweDViZWM3NzZhLCAweDAyNTIzMTY4LCAweDM1MzhmMzY5LCAweDA4N2ZhZjYyLCAweDNmMTU2ZDYzLAorICAgIDB4NjZhYjJiNjEsIDB4NTFjMWU5NjAsIDB4ZDRkN2E2NjUsIDB4ZTNiZDY0NjQsIDB4YmEwMzIyNjYsCisgICAgMHg4ZDY5ZTA2NywgMHgyMGNiZDc0OCwgMHgxN2ExMTU0OSwgMHg0ZTFmNTM0YiwgMHg3OTc1OTE0YSwKKyAgICAweGZjNjNkZTRmLCAweGNiMDkxYzRlLCAweDkyYjc1YTRjLCAweGE1ZGQ5ODRkLCAweDk4OWFjNDQ2LAorICAgIDB4YWZmMDA2NDcsIDB4ZjY0ZTQwNDUsIDB4YzEyNDgyNDQsIDB4NDQzMmNkNDEsIDB4NzM1ODBmNDAsCisgICAgMHgyYWU2NDk0MiwgMHgxZDhjOGI0MywgMHg1MDY4ZjE1NCwgMHg2NzAyMzM1NSwgMHgzZWJjNzU1NywKKyAgICAweDA5ZDZiNzU2LCAweDhjYzBmODUzLCAweGJiYWEzYTUyLCAweGUyMTQ3YzUwLCAweGQ1N2ViZTUxLAorICAgIDB4ZTgzOWUyNWEsIDB4ZGY1MzIwNWIsIDB4ODZlZDY2NTksIDB4YjE4N2E0NTgsIDB4MzQ5MWViNWQsCisgICAgMHgwM2ZiMjk1YywgMHg1YTQ1NmY1ZSwgMHg2ZDJmYWQ1ZiwgMHg4MDFiMzVlMSwgMHhiNzcxZjdlMCwKKyAgICAweGVlY2ZiMWUyLCAweGQ5YTU3M2UzLCAweDVjYjMzY2U2LCAweDZiZDlmZWU3LCAweDMyNjdiOGU1LAorICAgIDB4MDUwZDdhZTQsIDB4Mzg0YTI2ZWYsIDB4MGYyMGU0ZWUsIDB4NTY5ZWEyZWMsIDB4NjFmNDYwZWQsCisgICAgMHhlNGUyMmZlOCwgMHhkMzg4ZWRlOSwgMHg4YTM2YWJlYiwgMHhiZDVjNjllYSwgMHhmMGI4MTNmZCwKKyAgICAweGM3ZDJkMWZjLCAweDllNmM5N2ZlLCAweGE5MDY1NWZmLCAweDJjMTAxYWZhLCAweDFiN2FkOGZiLAorICAgIDB4NDJjNDllZjksIDB4NzVhZTVjZjgsIDB4NDhlOTAwZjMsIDB4N2Y4M2MyZjIsIDB4MjYzZDg0ZjAsCisgICAgMHgxMTU3NDZmMSwgMHg5NDQxMDlmNCwgMHhhMzJiY2JmNSwgMHhmYTk1OGRmNywgMHhjZGZmNGZmNiwKKyAgICAweDYwNWQ3OGQ5LCAweDU3MzdiYWQ4LCAweDBlODlmY2RhLCAweDM5ZTMzZWRiLCAweGJjZjU3MWRlLAorICAgIDB4OGI5ZmIzZGYsIDB4ZDIyMWY1ZGQsIDB4ZTU0YjM3ZGMsIDB4ZDgwYzZiZDcsIDB4ZWY2NmE5ZDYsCisgICAgMHhiNmQ4ZWZkNCwgMHg4MWIyMmRkNSwgMHgwNGE0NjJkMCwgMHgzM2NlYTBkMSwgMHg2YTcwZTZkMywKKyAgICAweDVkMWEyNGQyLCAweDEwZmU1ZWM1LCAweDI3OTQ5Y2M0LCAweDdlMmFkYWM2LCAweDQ5NDAxOGM3LAorICAgIDB4Y2M1NjU3YzIsIDB4ZmIzYzk1YzMsIDB4YTI4MmQzYzEsIDB4OTVlODExYzAsIDB4YThhZjRkY2IsCisgICAgMHg5ZmM1OGZjYSwgMHhjNjdiYzljOCwgMHhmMTExMGJjOSwgMHg3NDA3NDRjYywgMHg0MzZkODZjZCwKKyAgICAweDFhZDNjMGNmLCAweDJkYjkwMmNlLCAweDQwOTZhZjkxLCAweDc3ZmM2ZDkwLCAweDJlNDIyYjkyLAorICAgIDB4MTkyOGU5OTMsIDB4OWMzZWE2OTYsIDB4YWI1NDY0OTcsIDB4ZjJlYTIyOTUsIDB4YzU4MGUwOTQsCisgICAgMHhmOGM3YmM5ZiwgMHhjZmFkN2U5ZSwgMHg5NjEzMzg5YywgMHhhMTc5ZmE5ZCwgMHgyNDZmYjU5OCwKKyAgICAweDEzMDU3Nzk5LCAweDRhYmIzMTliLCAweDdkZDFmMzlhLCAweDMwMzU4OThkLCAweDA3NWY0YjhjLAorICAgIDB4NWVlMTBkOGUsIDB4Njk4YmNmOGYsIDB4ZWM5ZDgwOGEsIDB4ZGJmNzQyOGIsIDB4ODI0OTA0ODksCisgICAgMHhiNTIzYzY4OCwgMHg4ODY0OWE4MywgMHhiZjBlNTg4MiwgMHhlNmIwMWU4MCwgMHhkMWRhZGM4MSwKKyAgICAweDU0Y2M5Mzg0LCAweDYzYTY1MTg1LCAweDNhMTgxNzg3LCAweDBkNzJkNTg2LCAweGEwZDBlMmE5LAorICAgIDB4OTdiYTIwYTgsIDB4Y2UwNDY2YWEsIDB4Zjk2ZWE0YWIsIDB4N2M3OGViYWUsIDB4NGIxMjI5YWYsCisgICAgMHgxMmFjNmZhZCwgMHgyNWM2YWRhYywgMHgxODgxZjFhNywgMHgyZmViMzNhNiwgMHg3NjU1NzVhNCwKKyAgICAweDQxM2ZiN2E1LCAweGM0MjlmOGEwLCAweGYzNDMzYWExLCAweGFhZmQ3Y2EzLCAweDlkOTdiZWEyLAorICAgIDB4ZDA3M2M0YjUsIDB4ZTcxOTA2YjQsIDB4YmVhNzQwYjYsIDB4ODljZDgyYjcsIDB4MGNkYmNkYjIsCisgICAgMHgzYmIxMGZiMywgMHg2MjBmNDliMSwgMHg1NTY1OGJiMCwgMHg2ODIyZDdiYiwgMHg1ZjQ4MTViYSwKKyAgICAweDA2ZjY1M2I4LCAweDMxOWM5MWI5LCAweGI0OGFkZWJjLCAweDgzZTAxY2JkLCAweGRhNWU1YWJmLAorICAgIDB4ZWQzNDk4YmV9LAorICAgezB4MDAwMDAwMDAsIDB4NjU2N2JjYjgsIDB4OGJjODA5YWEsIDB4ZWVhZmI1MTIsIDB4NTc5NzYyOGYsCisgICAgMHgzMmYwZGUzNywgMHhkYzVmNmIyNSwgMHhiOTM4ZDc5ZCwgMHhlZjI4YjRjNSwgMHg4YTRmMDg3ZCwKKyAgICAweDY0ZTBiZDZmLCAweDAxODcwMWQ3LCAweGI4YmZkNjRhLCAweGRkZDg2YWYyLCAweDMzNzdkZmUwLAorICAgIDB4NTYxMDYzNTgsIDB4OWY1NzE5NTAsIDB4ZmEzMGE1ZTgsIDB4MTQ5ZjEwZmEsIDB4NzFmOGFjNDIsCisgICAgMHhjOGMwN2JkZiwgMHhhZGE3Yzc2NywgMHg0MzA4NzI3NSwgMHgyNjZmY2VjZCwgMHg3MDdmYWQ5NSwKKyAgICAweDE1MTgxMTJkLCAweGZiYjdhNDNmLCAweDllZDAxODg3LCAweDI3ZThjZjFhLCAweDQyOGY3M2EyLAorICAgIDB4YWMyMGM2YjAsIDB4Yzk0NzdhMDgsIDB4M2VhZjMyYTAsIDB4NWJjODhlMTgsIDB4YjU2NzNiMGEsCisgICAgMHhkMDAwODdiMiwgMHg2OTM4NTAyZiwgMHgwYzVmZWM5NywgMHhlMmYwNTk4NSwgMHg4Nzk3ZTUzZCwKKyAgICAweGQxODc4NjY1LCAweGI0ZTAzYWRkLCAweDVhNGY4ZmNmLCAweDNmMjgzMzc3LCAweDg2MTBlNGVhLAorICAgIDB4ZTM3NzU4NTIsIDB4MGRkOGVkNDAsIDB4NjhiZjUxZjgsIDB4YTFmODJiZjAsIDB4YzQ5Zjk3NDgsCisgICAgMHgyYTMwMjI1YSwgMHg0ZjU3OWVlMiwgMHhmNjZmNDk3ZiwgMHg5MzA4ZjVjNywgMHg3ZGE3NDBkNSwKKyAgICAweDE4YzBmYzZkLCAweDRlZDA5ZjM1LCAweDJiYjcyMzhkLCAweGM1MTg5NjlmLCAweGEwN2YyYTI3LAorICAgIDB4MTk0N2ZkYmEsIDB4N2MyMDQxMDIsIDB4OTI4ZmY0MTAsIDB4ZjdlODQ4YTgsIDB4M2Q1ODE0OWIsCisgICAgMHg1ODNmYTgyMywgMHhiNjkwMWQzMSwgMHhkM2Y3YTE4OSwgMHg2YWNmNzYxNCwgMHgwZmE4Y2FhYywKKyAgICAweGUxMDc3ZmJlLCAweDg0NjBjMzA2LCAweGQyNzBhMDVlLCAweGI3MTcxY2U2LCAweDU5YjhhOWY0LAorICAgIDB4M2NkZjE1NGMsIDB4ODVlN2MyZDEsIDB4ZTA4MDdlNjksIDB4MGUyZmNiN2IsIDB4NmI0ODc3YzMsCisgICAgMHhhMjBmMGRjYiwgMHhjNzY4YjE3MywgMHgyOWM3MDQ2MSwgMHg0Y2EwYjhkOSwgMHhmNTk4NmY0NCwKKyAgICAweDkwZmZkM2ZjLCAweDdlNTA2NmVlLCAweDFiMzdkYTU2LCAweDRkMjdiOTBlLCAweDI4NDAwNWI2LAorICAgIDB4YzZlZmIwYTQsIDB4YTM4ODBjMWMsIDB4MWFiMGRiODEsIDB4N2ZkNzY3MzksIDB4OTE3OGQyMmIsCisgICAgMHhmNDFmNmU5MywgMHgwM2Y3MjYzYiwgMHg2NjkwOWE4MywgMHg4ODNmMmY5MSwgMHhlZDU4OTMyOSwKKyAgICAweDU0NjA0NGI0LCAweDMxMDdmODBjLCAweGRmYTg0ZDFlLCAweGJhY2ZmMWE2LCAweGVjZGY5MmZlLAorICAgIDB4ODliODJlNDYsIDB4NjcxNzliNTQsIDB4MDI3MDI3ZWMsIDB4YmI0OGYwNzEsIDB4ZGUyZjRjYzksCisgICAgMHgzMDgwZjlkYiwgMHg1NWU3NDU2MywgMHg5Y2EwM2Y2YiwgMHhmOWM3ODNkMywgMHgxNzY4MzZjMSwKKyAgICAweDcyMGY4YTc5LCAweGNiMzc1ZGU0LCAweGFlNTBlMTVjLCAweDQwZmY1NDRlLCAweDI1OThlOGY2LAorICAgIDB4NzM4ODhiYWUsIDB4MTZlZjM3MTYsIDB4Zjg0MDgyMDQsIDB4OWQyNzNlYmMsIDB4MjQxZmU5MjEsCisgICAgMHg0MTc4NTU5OSwgMHhhZmQ3ZTA4YiwgMHhjYWIwNWMzMywgMHgzYmI2NTllZCwgMHg1ZWQxZTU1NSwKKyAgICAweGIwN2U1MDQ3LCAweGQ1MTllY2ZmLCAweDZjMjEzYjYyLCAweDA5NDY4N2RhLCAweGU3ZTkzMmM4LAorICAgIDB4ODI4ZThlNzAsIDB4ZDQ5ZWVkMjgsIDB4YjFmOTUxOTAsIDB4NWY1NmU0ODIsIDB4M2EzMTU4M2EsCisgICAgMHg4MzA5OGZhNywgMHhlNjZlMzMxZiwgMHgwOGMxODYwZCwgMHg2ZGE2M2FiNSwgMHhhNGUxNDBiZCwKKyAgICAweGMxODZmYzA1LCAweDJmMjk0OTE3LCAweDRhNGVmNWFmLCAweGYzNzYyMjMyLCAweDk2MTE5ZThhLAorICAgIDB4NzhiZTJiOTgsIDB4MWRkOTk3MjAsIDB4NGJjOWY0NzgsIDB4MmVhZTQ4YzAsIDB4YzAwMWZkZDIsCisgICAgMHhhNTY2NDE2YSwgMHgxYzVlOTZmNywgMHg3OTM5MmE0ZiwgMHg5Nzk2OWY1ZCwgMHhmMmYxMjNlNSwKKyAgICAweDA1MTk2YjRkLCAweDYwN2VkN2Y1LCAweDhlZDE2MmU3LCAweGViYjZkZTVmLCAweDUyOGUwOWMyLAorICAgIDB4MzdlOWI1N2EsIDB4ZDk0NjAwNjgsIDB4YmMyMWJjZDAsIDB4ZWEzMWRmODgsIDB4OGY1NjYzMzAsCisgICAgMHg2MWY5ZDYyMiwgMHgwNDllNmE5YSwgMHhiZGE2YmQwNywgMHhkOGMxMDFiZiwgMHgzNjZlYjRhZCwKKyAgICAweDUzMDkwODE1LCAweDlhNGU3MjFkLCAweGZmMjljZWE1LCAweDExODY3YmI3LCAweDc0ZTFjNzBmLAorICAgIDB4Y2RkOTEwOTIsIDB4YThiZWFjMmEsIDB4NDYxMTE5MzgsIDB4MjM3NmE1ODAsIDB4NzU2NmM2ZDgsCisgICAgMHgxMDAxN2E2MCwgMHhmZWFlY2Y3MiwgMHg5YmM5NzNjYSwgMHgyMmYxYTQ1NywgMHg0Nzk2MThlZiwKKyAgICAweGE5MzlhZGZkLCAweGNjNWUxMTQ1LCAweDA2ZWU0ZDc2LCAweDYzODlmMWNlLCAweDhkMjY0NGRjLAorICAgIDB4ZTg0MWY4NjQsIDB4NTE3OTJmZjksIDB4MzQxZTkzNDEsIDB4ZGFiMTI2NTMsIDB4YmZkNjlhZWIsCisgICAgMHhlOWM2ZjliMywgMHg4Y2ExNDUwYiwgMHg2MjBlZjAxOSwgMHgwNzY5NGNhMSwgMHhiZTUxOWIzYywKKyAgICAweGRiMzYyNzg0LCAweDM1OTk5Mjk2LCAweDUwZmUyZTJlLCAweDk5Yjk1NDI2LCAweGZjZGVlODllLAorICAgIDB4MTI3MTVkOGMsIDB4NzcxNmUxMzQsIDB4Y2UyZTM2YTksIDB4YWI0OThhMTEsIDB4NDVlNjNmMDMsCisgICAgMHgyMDgxODNiYiwgMHg3NjkxZTBlMywgMHgxM2Y2NWM1YiwgMHhmZDU5ZTk0OSwgMHg5ODNlNTVmMSwKKyAgICAweDIxMDY4MjZjLCAweDQ0NjEzZWQ0LCAweGFhY2U4YmM2LCAweGNmYTkzNzdlLCAweDM4NDE3ZmQ2LAorICAgIDB4NWQyNmMzNmUsIDB4YjM4OTc2N2MsIDB4ZDZlZWNhYzQsIDB4NmZkNjFkNTksIDB4MGFiMWExZTEsCisgICAgMHhlNDFlMTRmMywgMHg4MTc5YTg0YiwgMHhkNzY5Y2IxMywgMHhiMjBlNzdhYiwgMHg1Y2ExYzJiOSwKKyAgICAweDM5YzY3ZTAxLCAweDgwZmVhOTljLCAweGU1OTkxNTI0LCAweDBiMzZhMDM2LCAweDZlNTExYzhlLAorICAgIDB4YTcxNjY2ODYsIDB4YzI3MWRhM2UsIDB4MmNkZTZmMmMsIDB4NDliOWQzOTQsIDB4ZjA4MTA0MDksCisgICAgMHg5NWU2YjhiMSwgMHg3YjQ5MGRhMywgMHgxZTJlYjExYiwgMHg0ODNlZDI0MywgMHgyZDU5NmVmYiwKKyAgICAweGMzZjZkYmU5LCAweGE2OTE2NzUxLCAweDFmYTliMGNjLCAweDdhY2UwYzc0LCAweDk0NjFiOTY2LAorICAgIDB4ZjEwNjA1ZGV9fTsKKworI2VuZGlmCisKKyNlbmRpZgorCisjaWYgTiA9PSAyCisKKyNpZiBXID09IDgKKworbG9jYWwgY29uc3Qgel9jcmNfdCBGQVIgY3JjX2JyYWlkX3RhYmxlW11bMjU2XSA9IHsKKyAgIHsweDAwMDAwMDAwLCAweGFlNjg5MTkxLCAweDg3YTAyNTYzLCAweDI5YzhiNGYyLCAweGQ0MzE0Yzg3LAorICAgIDB4N2E1OWRkMTYsIDB4NTM5MTY5ZTQsIDB4ZmRmOWY4NzUsIDB4NzMxMzlmNGYsIDB4ZGQ3YjBlZGUsCisgICAgMHhmNGIzYmEyYywgMHg1YWRiMmJiZCwgMHhhNzIyZDNjOCwgMHgwOTRhNDI1OSwgMHgyMDgyZjZhYiwKKyAgICAweDhlZWE2NzNhLCAweGU2MjczZTllLCAweDQ4NGZhZjBmLCAweDYxODcxYmZkLCAweGNmZWY4YTZjLAorICAgIDB4MzIxNjcyMTksIDB4OWM3ZWUzODgsIDB4YjViNjU3N2EsIDB4MWJkZWM2ZWIsIDB4OTUzNGExZDEsCisgICAgMHgzYjVjMzA0MCwgMHgxMjk0ODRiMiwgMHhiY2ZjMTUyMywgMHg0MTA1ZWQ1NiwgMHhlZjZkN2NjNywKKyAgICAweGM2YTVjODM1LCAweDY4Y2Q1OWE0LCAweDE3M2Y3YjdkLCAweGI5NTdlYWVjLCAweDkwOWY1ZTFlLAorICAgIDB4M2VmN2NmOGYsIDB4YzMwZTM3ZmEsIDB4NmQ2NmE2NmIsIDB4NDRhZTEyOTksIDB4ZWFjNjgzMDgsCisgICAgMHg2NDJjZTQzMiwgMHhjYTQ0NzVhMywgMHhlMzhjYzE1MSwgMHg0ZGU0NTBjMCwgMHhiMDFkYThiNSwKKyAgICAweDFlNzUzOTI0LCAweDM3YmQ4ZGQ2LCAweDk5ZDUxYzQ3LCAweGYxMTg0NWUzLCAweDVmNzBkNDcyLAorICAgIDB4NzZiODYwODAsIDB4ZDhkMGYxMTEsIDB4MjUyOTA5NjQsIDB4OGI0MTk4ZjUsIDB4YTI4OTJjMDcsCisgICAgMHgwY2UxYmQ5NiwgMHg4MjBiZGFhYywgMHgyYzYzNGIzZCwgMHgwNWFiZmZjZiwgMHhhYmMzNmU1ZSwKKyAgICAweDU2M2E5NjJiLCAweGY4NTIwN2JhLCAweGQxOWFiMzQ4LCAweDdmZjIyMmQ5LCAweDJlN2VmNmZhLAorICAgIDB4ODAxNjY3NmIsIDB4YTlkZWQzOTksIDB4MDdiNjQyMDgsIDB4ZmE0ZmJhN2QsIDB4NTQyNzJiZWMsCisgICAgMHg3ZGVmOWYxZSwgMHhkMzg3MGU4ZiwgMHg1ZDZkNjliNSwgMHhmMzA1ZjgyNCwgMHhkYWNkNGNkNiwKKyAgICAweDc0YTVkZDQ3LCAweDg5NWMyNTMyLCAweDI3MzRiNGEzLCAweDBlZmMwMDUxLCAweGEwOTQ5MWMwLAorICAgIDB4Yzg1OWM4NjQsIDB4NjYzMTU5ZjUsIDB4NGZmOWVkMDcsIDB4ZTE5MTdjOTYsIDB4MWM2ODg0ZTMsCisgICAgMHhiMjAwMTU3MiwgMHg5YmM4YTE4MCwgMHgzNWEwMzAxMSwgMHhiYjRhNTcyYiwgMHgxNTIyYzZiYSwKKyAgICAweDNjZWE3MjQ4LCAweDkyODJlM2Q5LCAweDZmN2IxYmFjLCAweGMxMTM4YTNkLCAweGU4ZGIzZWNmLAorICAgIDB4NDZiM2FmNWUsIDB4Mzk0MThkODcsIDB4OTcyOTFjMTYsIDB4YmVlMWE4ZTQsIDB4MTA4OTM5NzUsCisgICAgMHhlZDcwYzEwMCwgMHg0MzE4NTA5MSwgMHg2YWQwZTQ2MywgMHhjNGI4NzVmMiwgMHg0YTUyMTJjOCwKKyAgICAweGU0M2E4MzU5LCAweGNkZjIzN2FiLCAweDYzOWFhNjNhLCAweDllNjM1ZTRmLCAweDMwMGJjZmRlLAorICAgIDB4MTljMzdiMmMsIDB4YjdhYmVhYmQsIDB4ZGY2NmIzMTksIDB4NzEwZTIyODgsIDB4NThjNjk2N2EsCisgICAgMHhmNmFlMDdlYiwgMHgwYjU3ZmY5ZSwgMHhhNTNmNmUwZiwgMHg4Y2Y3ZGFmZCwgMHgyMjlmNGI2YywKKyAgICAweGFjNzUyYzU2LCAweDAyMWRiZGM3LCAweDJiZDUwOTM1LCAweDg1YmQ5OGE0LCAweDc4NDQ2MGQxLAorICAgIDB4ZDYyY2YxNDAsIDB4ZmZlNDQ1YjIsIDB4NTE4Y2Q0MjMsIDB4NWNmZGVkZjQsIDB4ZjI5NTdjNjUsCisgICAgMHhkYjVkYzg5NywgMHg3NTM1NTkwNiwgMHg4OGNjYTE3MywgMHgyNmE0MzBlMiwgMHgwZjZjODQxMCwKKyAgICAweGExMDQxNTgxLCAweDJmZWU3MmJiLCAweDgxODZlMzJhLCAweGE4NGU1N2Q4LCAweDA2MjZjNjQ5LAorICAgIDB4ZmJkZjNlM2MsIDB4NTViN2FmYWQsIDB4N2M3ZjFiNWYsIDB4ZDIxNzhhY2UsIDB4YmFkYWQzNmEsCisgICAgMHgxNGIyNDJmYiwgMHgzZDdhZjYwOSwgMHg5MzEyNjc5OCwgMHg2ZWViOWZlZCwgMHhjMDgzMGU3YywKKyAgICAweGU5NGJiYThlLCAweDQ3MjMyYjFmLCAweGM5Yzk0YzI1LCAweDY3YTFkZGI0LCAweDRlNjk2OTQ2LAorICAgIDB4ZTAwMWY4ZDcsIDB4MWRmODAwYTIsIDB4YjM5MDkxMzMsIDB4OWE1ODI1YzEsIDB4MzQzMGI0NTAsCisgICAgMHg0YmMyOTY4OSwgMHhlNWFhMDcxOCwgMHhjYzYyYjNlYSwgMHg2MjBhMjI3YiwgMHg5ZmYzZGEwZSwKKyAgICAweDMxOWI0YjlmLCAweDE4NTNmZjZkLCAweGI2M2I2ZWZjLCAweDM4ZDEwOWM2LCAweDk2Yjk5ODU3LAorICAgIDB4YmY3MTJjYTUsIDB4MTExOWJkMzQsIDB4ZWNlMDQ1NDEsIDB4NDI4OGQ0ZDAsIDB4NmI0MDYwMjIsCisgICAgMHhjNTI4ZjFiMywgMHhhZGU1YTgxNywgMHgwMzhkMzk4NiwgMHgyYTQ1OGQ3NCwgMHg4NDJkMWNlNSwKKyAgICAweDc5ZDRlNDkwLCAweGQ3YmM3NTAxLCAweGZlNzRjMWYzLCAweDUwMWM1MDYyLCAweGRlZjYzNzU4LAorICAgIDB4NzA5ZWE2YzksIDB4NTk1NjEyM2IsIDB4ZjczZTgzYWEsIDB4MGFjNzdiZGYsIDB4YTRhZmVhNGUsCisgICAgMHg4ZDY3NWViYywgMHgyMzBmY2YyZCwgMHg3MjgzMWIwZSwgMHhkY2ViOGE5ZiwgMHhmNTIzM2U2ZCwKKyAgICAweDViNGJhZmZjLCAweGE2YjI1Nzg5LCAweDA4ZGFjNjE4LCAweDIxMTI3MmVhLCAweDhmN2FlMzdiLAorICAgIDB4MDE5MDg0NDEsIDB4YWZmODE1ZDAsIDB4ODYzMGExMjIsIDB4Mjg1ODMwYjMsIDB4ZDVhMWM4YzYsCisgICAgMHg3YmM5NTk1NywgMHg1MjAxZWRhNSwgMHhmYzY5N2MzNCwgMHg5NGE0MjU5MCwgMHgzYWNjYjQwMSwKKyAgICAweDEzMDQwMGYzLCAweGJkNmM5MTYyLCAweDQwOTU2OTE3LCAweGVlZmRmODg2LCAweGM3MzU0Yzc0LAorICAgIDB4Njk1ZGRkZTUsIDB4ZTdiN2JhZGYsIDB4NDlkZjJiNGUsIDB4NjAxNzlmYmMsIDB4Y2U3ZjBlMmQsCisgICAgMHgzMzg2ZjY1OCwgMHg5ZGVlNjdjOSwgMHhiNDI2ZDMzYiwgMHgxYTRlNDJhYSwgMHg2NWJjNjA3MywKKyAgICAweGNiZDRmMWUyLCAweGUyMWM0NTEwLCAweDRjNzRkNDgxLCAweGIxOGQyY2Y0LCAweDFmZTViZDY1LAorICAgIDB4MzYyZDA5OTcsIDB4OTg0NTk4MDYsIDB4MTZhZmZmM2MsIDB4YjhjNzZlYWQsIDB4OTEwZmRhNWYsCisgICAgMHgzZjY3NGJjZSwgMHhjMjllYjNiYiwgMHg2Y2Y2MjIyYSwgMHg0NTNlOTZkOCwgMHhlYjU2MDc0OSwKKyAgICAweDgzOWI1ZWVkLCAweDJkZjNjZjdjLCAweDA0M2I3YjhlLCAweGFhNTNlYTFmLCAweDU3YWExMjZhLAorICAgIDB4ZjljMjgzZmIsIDB4ZDAwYTM3MDksIDB4N2U2MmE2OTgsIDB4ZjA4OGMxYTIsIDB4NWVlMDUwMzMsCisgICAgMHg3NzI4ZTRjMSwgMHhkOTQwNzU1MCwgMHgyNGI5OGQyNSwgMHg4YWQxMWNiNCwgMHhhMzE5YTg0NiwKKyAgICAweDBkNzEzOWQ3fSwKKyAgIHsweDAwMDAwMDAwLCAweGI5ZmJkYmU4LCAweGE4ODZiMTkxLCAweDExN2Q2YTc5LCAweDhhN2M2NTYzLAorICAgIDB4MzM4N2JlOGIsIDB4MjJmYWQ0ZjIsIDB4OWIwMTBmMWEsIDB4Y2Y4OWNjODcsIDB4NzY3MjE3NmYsCisgICAgMHg2NzBmN2QxNiwgMHhkZWY0YTZmZSwgMHg0NWY1YTllNCwgMHhmYzBlNzIwYywgMHhlZDczMTg3NSwKKyAgICAweDU0ODhjMzlkLCAweDQ0NjI5ZjRmLCAweGZkOTk0NGE3LCAweGVjZTQyZWRlLCAweDU1MWZmNTM2LAorICAgIDB4Y2UxZWZhMmMsIDB4NzdlNTIxYzQsIDB4NjY5ODRiYmQsIDB4ZGY2MzkwNTUsIDB4OGJlYjUzYzgsCisgICAgMHgzMjEwODgyMCwgMHgyMzZkZTI1OSwgMHg5YTk2MzliMSwgMHgwMTk3MzZhYiwgMHhiODZjZWQ0MywKKyAgICAweGE5MTE4NzNhLCAweDEwZWE1Y2QyLCAweDg4YzUzZTllLCAweDMxM2VlNTc2LCAweDIwNDM4ZjBmLAorICAgIDB4OTliODU0ZTcsIDB4MDJiOTViZmQsIDB4YmI0MjgwMTUsIDB4YWEzZmVhNmMsIDB4MTNjNDMxODQsCisgICAgMHg0NzRjZjIxOSwgMHhmZWI3MjlmMSwgMHhlZmNhNDM4OCwgMHg1NjMxOTg2MCwgMHhjZDMwOTc3YSwKKyAgICAweDc0Y2I0YzkyLCAweDY1YjYyNmViLCAweGRjNGRmZDAzLCAweGNjYTdhMWQxLCAweDc1NWM3YTM5LAorICAgIDB4NjQyMTEwNDAsIDB4ZGRkYWNiYTgsIDB4NDZkYmM0YjIsIDB4ZmYyMDFmNWEsIDB4ZWU1ZDc1MjMsCisgICAgMHg1N2E2YWVjYiwgMHgwMzJlNmQ1NiwgMHhiYWQ1YjZiZSwgMHhhYmE4ZGNjNywgMHgxMjUzMDcyZiwKKyAgICAweDg5NTIwODM1LCAweDMwYTlkM2RkLCAweDIxZDRiOWE0LCAweDk4MmY2MjRjLCAweGNhZmI3YjdkLAorICAgIDB4NzMwMGEwOTUsIDB4NjI3ZGNhZWMsIDB4ZGI4NjExMDQsIDB4NDA4NzFlMWUsIDB4Zjk3Y2M1ZjYsCisgICAgMHhlODAxYWY4ZiwgMHg1MWZhNzQ2NywgMHgwNTcyYjdmYSwgMHhiYzg5NmMxMiwgMHhhZGY0MDY2YiwKKyAgICAweDE0MGZkZDgzLCAweDhmMGVkMjk5LCAweDM2ZjUwOTcxLCAweDI3ODg2MzA4LCAweDllNzNiOGUwLAorICAgIDB4OGU5OWU0MzIsIDB4Mzc2MjNmZGEsIDB4MjYxZjU1YTMsIDB4OWZlNDhlNGIsIDB4MDRlNTgxNTEsCisgICAgMHhiZDFlNWFiOSwgMHhhYzYzMzBjMCwgMHgxNTk4ZWIyOCwgMHg0MTEwMjhiNSwgMHhmOGViZjM1ZCwKKyAgICAweGU5OTY5OTI0LCAweDUwNmQ0MmNjLCAweGNiNmM0ZGQ2LCAweDcyOTc5NjNlLCAweDYzZWFmYzQ3LAorICAgIDB4ZGExMTI3YWYsIDB4NDIzZTQ1ZTMsIDB4ZmJjNTllMGIsIDB4ZWFiOGY0NzIsIDB4NTM0MzJmOWEsCisgICAgMHhjODQyMjA4MCwgMHg3MWI5ZmI2OCwgMHg2MGM0OTExMSwgMHhkOTNmNGFmOSwgMHg4ZGI3ODk2NCwKKyAgICAweDM0NGM1MjhjLCAweDI1MzEzOGY1LCAweDljY2FlMzFkLCAweDA3Y2JlYzA3LCAweGJlMzAzN2VmLAorICAgIDB4YWY0ZDVkOTYsIDB4MTZiNjg2N2UsIDB4MDY1Y2RhYWMsIDB4YmZhNzAxNDQsIDB4YWVkYTZiM2QsCisgICAgMHgxNzIxYjBkNSwgMHg4YzIwYmZjZiwgMHgzNWRiNjQyNywgMHgyNGE2MGU1ZSwgMHg5ZDVkZDViNiwKKyAgICAweGM5ZDUxNjJiLCAweDcwMmVjZGMzLCAweDYxNTNhN2JhLCAweGQ4YTg3YzUyLCAweDQzYTk3MzQ4LAorICAgIDB4ZmE1MmE4YTAsIDB4ZWIyZmMyZDksIDB4NTJkNDE5MzEsIDB4NGU4N2YwYmIsIDB4Zjc3YzJiNTMsCisgICAgMHhlNjAxNDEyYSwgMHg1ZmZhOWFjMiwgMHhjNGZiOTVkOCwgMHg3ZDAwNGUzMCwgMHg2YzdkMjQ0OSwKKyAgICAweGQ1ODZmZmExLCAweDgxMGUzYzNjLCAweDM4ZjVlN2Q0LCAweDI5ODg4ZGFkLCAweDkwNzM1NjQ1LAorICAgIDB4MGI3MjU5NWYsIDB4YjI4OTgyYjcsIDB4YTNmNGU4Y2UsIDB4MWEwZjMzMjYsIDB4MGFlNTZmZjQsCisgICAgMHhiMzFlYjQxYywgMHhhMjYzZGU2NSwgMHgxYjk4MDU4ZCwgMHg4MDk5MGE5NywgMHgzOTYyZDE3ZiwKKyAgICAweDI4MWZiYjA2LCAweDkxZTQ2MGVlLCAweGM1NmNhMzczLCAweDdjOTc3ODliLCAweDZkZWExMmUyLAorICAgIDB4ZDQxMWM5MGEsIDB4NGYxMGM2MTAsIDB4ZjZlYjFkZjgsIDB4ZTc5Njc3ODEsIDB4NWU2ZGFjNjksCisgICAgMHhjNjQyY2UyNSwgMHg3ZmI5MTVjZCwgMHg2ZWM0N2ZiNCwgMHhkNzNmYTQ1YywgMHg0YzNlYWI0NiwKKyAgICAweGY1YzU3MGFlLCAweGU0YjgxYWQ3LCAweDVkNDNjMTNmLCAweDA5Y2IwMmEyLCAweGIwMzBkOTRhLAorICAgIDB4YTE0ZGIzMzMsIDB4MThiNjY4ZGIsIDB4ODNiNzY3YzEsIDB4M2E0Y2JjMjksIDB4MmIzMWQ2NTAsCisgICAgMHg5MmNhMGRiOCwgMHg4MjIwNTE2YSwgMHgzYmRiOGE4MiwgMHgyYWE2ZTBmYiwgMHg5MzVkM2IxMywKKyAgICAweDA4NWMzNDA5LCAweGIxYTdlZmUxLCAweGEwZGE4NTk4LCAweDE5MjE1ZTcwLCAweDRkYTk5ZGVkLAorICAgIDB4ZjQ1MjQ2MDUsIDB4ZTUyZjJjN2MsIDB4NWNkNGY3OTQsIDB4YzdkNWY4OGUsIDB4N2UyZTIzNjYsCisgICAgMHg2ZjUzNDkxZiwgMHhkNmE4OTJmNywgMHg4NDdjOGJjNiwgMHgzZDg3NTAyZSwgMHgyY2ZhM2E1NywKKyAgICAweDk1MDFlMWJmLCAweDBlMDBlZWE1LCAweGI3ZmIzNTRkLCAweGE2ODY1ZjM0LCAweDFmN2Q4NGRjLAorICAgIDB4NGJmNTQ3NDEsIDB4ZjIwZTljYTksIDB4ZTM3M2Y2ZDAsIDB4NWE4ODJkMzgsIDB4YzE4OTIyMjIsCisgICAgMHg3ODcyZjljYSwgMHg2OTBmOTNiMywgMHhkMGY0NDg1YiwgMHhjMDFlMTQ4OSwgMHg3OWU1Y2Y2MSwKKyAgICAweDY4OThhNTE4LCAweGQxNjM3ZWYwLCAweDRhNjI3MWVhLCAweGYzOTlhYTAyLCAweGUyZTRjMDdiLAorICAgIDB4NWIxZjFiOTMsIDB4MGY5N2Q4MGUsIDB4YjY2YzAzZTYsIDB4YTcxMTY5OWYsIDB4MWVlYWIyNzcsCisgICAgMHg4NWViYmQ2ZCwgMHgzYzEwNjY4NSwgMHgyZDZkMGNmYywgMHg5NDk2ZDcxNCwgMHgwY2I5YjU1OCwKKyAgICAweGI1NDI2ZWIwLCAweGE0M2YwNGM5LCAweDFkYzRkZjIxLCAweDg2YzVkMDNiLCAweDNmM2UwYmQzLAorICAgIDB4MmU0MzYxYWEsIDB4OTdiOGJhNDIsIDB4YzMzMDc5ZGYsIDB4N2FjYmEyMzcsIDB4NmJiNmM4NGUsCisgICAgMHhkMjRkMTNhNiwgMHg0OTRjMWNiYywgMHhmMGI3Yzc1NCwgMHhlMWNhYWQyZCwgMHg1ODMxNzZjNSwKKyAgICAweDQ4ZGIyYTE3LCAweGYxMjBmMWZmLCAweGUwNWQ5Yjg2LCAweDU5YTY0MDZlLCAweGMyYTc0Zjc0LAorICAgIDB4N2I1Yzk0OWMsIDB4NmEyMWZlZTUsIDB4ZDNkYTI1MGQsIDB4ODc1MmU2OTAsIDB4M2VhOTNkNzgsCisgICAgMHgyZmQ0NTcwMSwgMHg5NjJmOGNlOSwgMHgwZDJlODNmMywgMHhiNGQ1NTgxYiwgMHhhNWE4MzI2MiwKKyAgICAweDFjNTNlOThhfSwKKyAgIHsweDAwMDAwMDAwLCAweDlkMGZlMTc2LCAweGUxNmVjNGFkLCAweDdjNjEyNWRiLCAweDE5YWM4ZjFiLAorICAgIDB4ODRhMzZlNmQsIDB4ZjhjMjRiYjYsIDB4NjVjZGFhYzAsIDB4MzM1OTFlMzYsIDB4YWU1NmZmNDAsCisgICAgMHhkMjM3ZGE5YiwgMHg0ZjM4M2JlZCwgMHgyYWY1OTEyZCwgMHhiN2ZhNzA1YiwgMHhjYjliNTU4MCwKKyAgICAweDU2OTRiNGY2LCAweDY2YjIzYzZjLCAweGZiYmRkZDFhLCAweDg3ZGNmOGMxLCAweDFhZDMxOWI3LAorICAgIDB4N2YxZWIzNzcsIDB4ZTIxMTUyMDEsIDB4OWU3MDc3ZGEsIDB4MDM3Zjk2YWMsIDB4NTVlYjIyNWEsCisgICAgMHhjOGU0YzMyYywgMHhiNDg1ZTZmNywgMHgyOThhMDc4MSwgMHg0YzQ3YWQ0MSwgMHhkMTQ4NGMzNywKKyAgICAweGFkMjk2OWVjLCAweDMwMjY4ODlhLCAweGNkNjQ3OGQ4LCAweDUwNmI5OWFlLCAweDJjMGFiYzc1LAorICAgIDB4YjEwNTVkMDMsIDB4ZDRjOGY3YzMsIDB4NDljNzE2YjUsIDB4MzVhNjMzNmUsIDB4YThhOWQyMTgsCisgICAgMHhmZTNkNjZlZSwgMHg2MzMyODc5OCwgMHgxZjUzYTI0MywgMHg4MjVjNDMzNSwgMHhlNzkxZTlmNSwKKyAgICAweDdhOWUwODgzLCAweDA2ZmYyZDU4LCAweDliZjBjYzJlLCAweGFiZDY0NGI0LCAweDM2ZDlhNWMyLAorICAgIDB4NGFiODgwMTksIDB4ZDdiNzYxNmYsIDB4YjI3YWNiYWYsIDB4MmY3NTJhZDksIDB4NTMxNDBmMDIsCisgICAgMHhjZTFiZWU3NCwgMHg5ODhmNWE4MiwgMHgwNTgwYmJmNCwgMHg3OWUxOWUyZiwgMHhlNGVlN2Y1OSwKKyAgICAweDgxMjNkNTk5LCAweDFjMmMzNGVmLCAweDYwNGQxMTM0LCAweGZkNDJmMDQyLCAweDQxYjlmN2YxLAorICAgIDB4ZGNiNjE2ODcsIDB4YTBkNzMzNWMsIDB4M2RkOGQyMmEsIDB4NTgxNTc4ZWEsIDB4YzUxYTk5OWMsCisgICAgMHhiOTdiYmM0NywgMHgyNDc0NWQzMSwgMHg3MmUwZTljNywgMHhlZmVmMDhiMSwgMHg5MzhlMmQ2YSwKKyAgICAweDBlODFjYzFjLCAweDZiNGM2NmRjLCAweGY2NDM4N2FhLCAweDhhMjJhMjcxLCAweDE3MmQ0MzA3LAorICAgIDB4MjcwYmNiOWQsIDB4YmEwNDJhZWIsIDB4YzY2NTBmMzAsIDB4NWI2YWVlNDYsIDB4M2VhNzQ0ODYsCisgICAgMHhhM2E4YTVmMCwgMHhkZmM5ODAyYiwgMHg0MmM2NjE1ZCwgMHgxNDUyZDVhYiwgMHg4OTVkMzRkZCwKKyAgICAweGY1M2MxMTA2LCAweDY4MzNmMDcwLCAweDBkZmU1YWIwLCAweDkwZjFiYmM2LCAweGVjOTA5ZTFkLAorICAgIDB4NzE5ZjdmNmIsIDB4OGNkZDhmMjksIDB4MTFkMjZlNWYsIDB4NmRiMzRiODQsIDB4ZjBiY2FhZjIsCisgICAgMHg5NTcxMDAzMiwgMHgwODdlZTE0NCwgMHg3NDFmYzQ5ZiwgMHhlOTEwMjVlOSwgMHhiZjg0OTExZiwKKyAgICAweDIyOGI3MDY5LCAweDVlZWE1NWIyLCAweGMzZTViNGM0LCAweGE2MjgxZTA0LCAweDNiMjdmZjcyLAorICAgIDB4NDc0NmRhYTksIDB4ZGE0OTNiZGYsIDB4ZWE2ZmIzNDUsIDB4Nzc2MDUyMzMsIDB4MGIwMTc3ZTgsCisgICAgMHg5NjBlOTY5ZSwgMHhmM2MzM2M1ZSwgMHg2ZWNjZGQyOCwgMHgxMmFkZjhmMywgMHg4ZmEyMTk4NSwKKyAgICAweGQ5MzZhZDczLCAweDQ0Mzk0YzA1LCAweDM4NTg2OWRlLCAweGE1NTc4OGE4LCAweGMwOWEyMjY4LAorICAgIDB4NWQ5NWMzMWUsIDB4MjFmNGU2YzUsIDB4YmNmYjA3YjMsIDB4ODM3M2VmZTIsIDB4MWU3YzBlOTQsCisgICAgMHg2MjFkMmI0ZiwgMHhmZjEyY2EzOSwgMHg5YWRmNjBmOSwgMHgwN2QwODE4ZiwgMHg3YmIxYTQ1NCwKKyAgICAweGU2YmU0NTIyLCAweGIwMmFmMWQ0LCAweDJkMjUxMGEyLCAweDUxNDQzNTc5LCAweGNjNGJkNDBmLAorICAgIDB4YTk4NjdlY2YsIDB4MzQ4OTlmYjksIDB4NDhlOGJhNjIsIDB4ZDVlNzViMTQsIDB4ZTVjMWQzOGUsCisgICAgMHg3OGNlMzJmOCwgMHgwNGFmMTcyMywgMHg5OWEwZjY1NSwgMHhmYzZkNWM5NSwgMHg2MTYyYmRlMywKKyAgICAweDFkMDM5ODM4LCAweDgwMGM3OTRlLCAweGQ2OThjZGI4LCAweDRiOTcyY2NlLCAweDM3ZjYwOTE1LAorICAgIDB4YWFmOWU4NjMsIDB4Y2YzNDQyYTMsIDB4NTIzYmEzZDUsIDB4MmU1YTg2MGUsIDB4YjM1NTY3NzgsCisgICAgMHg0ZTE3OTczYSwgMHhkMzE4NzY0YywgMHhhZjc5NTM5NywgMHgzMjc2YjJlMSwgMHg1N2JiMTgyMSwKKyAgICAweGNhYjRmOTU3LCAweGI2ZDVkYzhjLCAweDJiZGEzZGZhLCAweDdkNGU4OTBjLCAweGUwNDE2ODdhLAorICAgIDB4OWMyMDRkYTEsIDB4MDEyZmFjZDcsIDB4NjRlMjA2MTcsIDB4ZjllZGU3NjEsIDB4ODU4Y2MyYmEsCisgICAgMHgxODgzMjNjYywgMHgyOGE1YWI1NiwgMHhiNWFhNGEyMCwgMHhjOWNiNmZmYiwgMHg1NGM0OGU4ZCwKKyAgICAweDMxMDkyNDRkLCAweGFjMDZjNTNiLCAweGQwNjdlMGUwLCAweDRkNjgwMTk2LCAweDFiZmNiNTYwLAorICAgIDB4ODZmMzU0MTYsIDB4ZmE5MjcxY2QsIDB4Njc5ZDkwYmIsIDB4MDI1MDNhN2IsIDB4OWY1ZmRiMGQsCisgICAgMHhlMzNlZmVkNiwgMHg3ZTMxMWZhMCwgMHhjMmNhMTgxMywgMHg1ZmM1Zjk2NSwgMHgyM2E0ZGNiZSwKKyAgICAweGJlYWIzZGM4LCAweGRiNjY5NzA4LCAweDQ2Njk3NjdlLCAweDNhMDg1M2E1LCAweGE3MDdiMmQzLAorICAgIDB4ZjE5MzA2MjUsIDB4NmM5Y2U3NTMsIDB4MTBmZGMyODgsIDB4OGRmMjIzZmUsIDB4ZTgzZjg5M2UsCisgICAgMHg3NTMwNjg0OCwgMHgwOTUxNGQ5MywgMHg5NDVlYWNlNSwgMHhhNDc4MjQ3ZiwgMHgzOTc3YzUwOSwKKyAgICAweDQ1MTZlMGQyLCAweGQ4MTkwMWE0LCAweGJkZDRhYjY0LCAweDIwZGI0YTEyLCAweDVjYmE2ZmM5LAorICAgIDB4YzFiNThlYmYsIDB4OTcyMTNhNDksIDB4MGEyZWRiM2YsIDB4NzY0ZmZlZTQsIDB4ZWI0MDFmOTIsCisgICAgMHg4ZThkYjU1MiwgMHgxMzgyNTQyNCwgMHg2ZmUzNzFmZiwgMHhmMmVjOTA4OSwgMHgwZmFlNjBjYiwKKyAgICAweDkyYTE4MWJkLCAweGVlYzBhNDY2LCAweDczY2Y0NTEwLCAweDE2MDJlZmQwLCAweDhiMGQwZWE2LAorICAgIDB4Zjc2YzJiN2QsIDB4NmE2M2NhMGIsIDB4M2NmNzdlZmQsIDB4YTFmODlmOGIsIDB4ZGQ5OWJhNTAsCisgICAgMHg0MDk2NWIyNiwgMHgyNTViZjFlNiwgMHhiODU0MTA5MCwgMHhjNDM1MzU0YiwgMHg1OTNhZDQzZCwKKyAgICAweDY5MWM1Y2E3LCAweGY0MTNiZGQxLCAweDg4NzI5ODBhLCAweDE1N2Q3OTdjLCAweDcwYjBkM2JjLAorICAgIDB4ZWRiZjMyY2EsIDB4OTFkZTE3MTEsIDB4MGNkMWY2NjcsIDB4NWE0NTQyOTEsIDB4Yzc0YWEzZTcsCisgICAgMHhiYjJiODYzYywgMHgyNjI0Njc0YSwgMHg0M2U5Y2Q4YSwgMHhkZWU2MmNmYywgMHhhMjg3MDkyNywKKyAgICAweDNmODhlODUxfSwKKyAgIHsweDAwMDAwMDAwLCAweGRkOTZkOTg1LCAweDYwNWNiNTRiLCAweGJkY2E2Y2NlLCAweGMwYjk2YTk2LAorICAgIDB4MWQyZmIzMTMsIDB4YTBlNWRmZGQsIDB4N2Q3MzA2NTgsIDB4NWEwM2QzNmQsIDB4ODc5NTBhZTgsCisgICAgMHgzYTVmNjYyNiwgMHhlN2M5YmZhMywgMHg5YWJhYjlmYiwgMHg0NzJjNjA3ZSwgMHhmYWU2MGNiMCwKKyAgICAweDI3NzBkNTM1LCAweGI0MDdhNmRhLCAweDY5OTE3ZjVmLCAweGQ0NWIxMzkxLCAweDA5Y2RjYTE0LAorICAgIDB4NzRiZWNjNGMsIDB4YTkyODE1YzksIDB4MTRlMjc5MDcsIDB4Yzk3NGEwODIsIDB4ZWUwNDc1YjcsCisgICAgMHgzMzkyYWMzMiwgMHg4ZTU4YzBmYywgMHg1M2NlMTk3OSwgMHgyZWJkMWYyMSwgMHhmMzJiYzZhNCwKKyAgICAweDRlZTFhYTZhLCAweDkzNzc3M2VmLCAweGIzN2U0YmY1LCAweDZlZTg5MjcwLCAweGQzMjJmZWJlLAorICAgIDB4MGViNDI3M2IsIDB4NzNjNzIxNjMsIDB4YWU1MWY4ZTYsIDB4MTM5Yjk0MjgsIDB4Y2UwZDRkYWQsCisgICAgMHhlOTdkOTg5OCwgMHgzNGViNDExZCwgMHg4OTIxMmRkMywgMHg1NGI3ZjQ1NiwgMHgyOWM0ZjIwZSwKKyAgICAweGY0NTIyYjhiLCAweDQ5OTg0NzQ1LCAweDk0MGU5ZWMwLCAweDA3NzllZDJmLCAweGRhZWYzNGFhLAorICAgIDB4NjcyNTU4NjQsIDB4YmFiMzgxZTEsIDB4YzdjMDg3YjksIDB4MWE1NjVlM2MsIDB4YTc5YzMyZjIsCisgICAgMHg3YTBhZWI3NywgMHg1ZDdhM2U0MiwgMHg4MGVjZTdjNywgMHgzZDI2OGIwOSwgMHhlMGIwNTI4YywKKyAgICAweDlkYzM1NGQ0LCAweDQwNTU4ZDUxLCAweGZkOWZlMTlmLCAweDIwMDkzODFhLCAweGJkOGQ5MWFiLAorICAgIDB4NjAxYjQ4MmUsIDB4ZGRkMTI0ZTAsIDB4MDA0N2ZkNjUsIDB4N2QzNGZiM2QsIDB4YTBhMjIyYjgsCisgICAgMHgxZDY4NGU3NiwgMHhjMGZlOTdmMywgMHhlNzhlNDJjNiwgMHgzYTE4OWI0MywgMHg4N2QyZjc4ZCwKKyAgICAweDVhNDQyZTA4LCAweDI3MzcyODUwLCAweGZhYTFmMWQ1LCAweDQ3NmI5ZDFiLCAweDlhZmQ0NDllLAorICAgIDB4MDk4YTM3NzEsIDB4ZDQxY2VlZjQsIDB4NjlkNjgyM2EsIDB4YjQ0MDViYmYsIDB4YzkzMzVkZTcsCisgICAgMHgxNGE1ODQ2MiwgMHhhOTZmZThhYywgMHg3NGY5MzEyOSwgMHg1Mzg5ZTQxYywgMHg4ZTFmM2Q5OSwKKyAgICAweDMzZDU1MTU3LCAweGVlNDM4OGQyLCAweDkzMzA4ZThhLCAweDRlYTY1NzBmLCAweGYzNmMzYmMxLAorICAgIDB4MmVmYWUyNDQsIDB4MGVmM2RhNWUsIDB4ZDM2NTAzZGIsIDB4NmVhZjZmMTUsIDB4YjMzOWI2OTAsCisgICAgMHhjZTRhYjBjOCwgMHgxM2RjNjk0ZCwgMHhhZTE2MDU4MywgMHg3MzgwZGMwNiwgMHg1NGYwMDkzMywKKyAgICAweDg5NjZkMGI2LCAweDM0YWNiYzc4LCAweGU5M2E2NWZkLCAweDk0NDk2M2E1LCAweDQ5ZGZiYTIwLAorICAgIDB4ZjQxNWQ2ZWUsIDB4Mjk4MzBmNmIsIDB4YmFmNDdjODQsIDB4Njc2MmE1MDEsIDB4ZGFhOGM5Y2YsCisgICAgMHgwNzNlMTA0YSwgMHg3YTRkMTYxMiwgMHhhN2RiY2Y5NywgMHgxYTExYTM1OSwgMHhjNzg3N2FkYywKKyAgICAweGUwZjdhZmU5LCAweDNkNjE3NjZjLCAweDgwYWIxYWEyLCAweDVkM2RjMzI3LCAweDIwNGVjNTdmLAorICAgIDB4ZmRkODFjZmEsIDB4NDAxMjcwMzQsIDB4OWQ4NGE5YjEsIDB4YTA2YTI1MTcsIDB4N2RmY2ZjOTIsCisgICAgMHhjMDM2OTA1YywgMHgxZGEwNDlkOSwgMHg2MGQzNGY4MSwgMHhiZDQ1OTYwNCwgMHgwMDhmZmFjYSwKKyAgICAweGRkMTkyMzRmLCAweGZhNjlmNjdhLCAweDI3ZmYyZmZmLCAweDlhMzU0MzMxLCAweDQ3YTM5YWI0LAorICAgIDB4M2FkMDljZWMsIDB4ZTc0NjQ1NjksIDB4NWE4YzI5YTcsIDB4ODcxYWYwMjIsIDB4MTQ2ZDgzY2QsCisgICAgMHhjOWZiNWE0OCwgMHg3NDMxMzY4NiwgMHhhOWE3ZWYwMywgMHhkNGQ0ZTk1YiwgMHgwOTQyMzBkZSwKKyAgICAweGI0ODg1YzEwLCAweDY5MWU4NTk1LCAweDRlNmU1MGEwLCAweDkzZjg4OTI1LCAweDJlMzJlNWViLAorICAgIDB4ZjNhNDNjNmUsIDB4OGVkNzNhMzYsIDB4NTM0MWUzYjMsIDB4ZWU4YjhmN2QsIDB4MzMxZDU2ZjgsCisgICAgMHgxMzE0NmVlMiwgMHhjZTgyYjc2NywgMHg3MzQ4ZGJhOSwgMHhhZWRlMDIyYywgMHhkM2FkMDQ3NCwKKyAgICAweDBlM2JkZGYxLCAweGIzZjFiMTNmLCAweDZlNjc2OGJhLCAweDQ5MTdiZDhmLCAweDk0ODE2NDBhLAorICAgIDB4Mjk0YjA4YzQsIDB4ZjRkZGQxNDEsIDB4ODlhZWQ3MTksIDB4NTQzODBlOWMsIDB4ZTlmMjYyNTIsCisgICAgMHgzNDY0YmJkNywgMHhhNzEzYzgzOCwgMHg3YTg1MTFiZCwgMHhjNzRmN2Q3MywgMHgxYWQ5YTRmNiwKKyAgICAweDY3YWFhMmFlLCAweGJhM2M3YjJiLCAweDA3ZjYxN2U1LCAweGRhNjBjZTYwLCAweGZkMTAxYjU1LAorICAgIDB4MjA4NmMyZDAsIDB4OWQ0Y2FlMWUsIDB4NDBkYTc3OWIsIDB4M2RhOTcxYzMsIDB4ZTAzZmE4NDYsCisgICAgMHg1ZGY1YzQ4OCwgMHg4MDYzMWQwZCwgMHgxZGU3YjRiYywgMHhjMDcxNmQzOSwgMHg3ZGJiMDFmNywKKyAgICAweGEwMmRkODcyLCAweGRkNWVkZTJhLCAweDAwYzgwN2FmLCAweGJkMDI2YjYxLCAweDYwOTRiMmU0LAorICAgIDB4NDdlNDY3ZDEsIDB4OWE3MmJlNTQsIDB4MjdiOGQyOWEsIDB4ZmEyZTBiMWYsIDB4ODc1ZDBkNDcsCisgICAgMHg1YWNiZDRjMiwgMHhlNzAxYjgwYywgMHgzYTk3NjE4OSwgMHhhOWUwMTI2NiwgMHg3NDc2Y2JlMywKKyAgICAweGM5YmNhNzJkLCAweDE0MmE3ZWE4LCAweDY5NTk3OGYwLCAweGI0Y2ZhMTc1LCAweDA5MDVjZGJiLAorICAgIDB4ZDQ5MzE0M2UsIDB4ZjNlM2MxMGIsIDB4MmU3NTE4OGUsIDB4OTNiZjc0NDAsIDB4NGUyOWFkYzUsCisgICAgMHgzMzVhYWI5ZCwgMHhlZWNjNzIxOCwgMHg1MzA2MWVkNiwgMHg4ZTkwYzc1MywgMHhhZTk5ZmY0OSwKKyAgICAweDczMGYyNmNjLCAweGNlYzU0YTAyLCAweDEzNTM5Mzg3LCAweDZlMjA5NWRmLCAweGIzYjY0YzVhLAorICAgIDB4MGU3YzIwOTQsIDB4ZDNlYWY5MTEsIDB4ZjQ5YTJjMjQsIDB4MjkwY2Y1YTEsIDB4OTRjNjk5NmYsCisgICAgMHg0OTUwNDBlYSwgMHgzNDIzNDZiMiwgMHhlOWI1OWYzNywgMHg1NDdmZjNmOSwgMHg4OWU5MmE3YywKKyAgICAweDFhOWU1OTkzLCAweGM3MDg4MDE2LCAweDdhYzJlY2Q4LCAweGE3NTQzNTVkLCAweGRhMjczMzA1LAorICAgIDB4MDdiMWVhODAsIDB4YmE3Yjg2NGUsIDB4NjdlZDVmY2IsIDB4NDA5ZDhhZmUsIDB4OWQwYjUzN2IsCisgICAgMHgyMGMxM2ZiNSwgMHhmZDU3ZTYzMCwgMHg4MDI0ZTA2OCwgMHg1ZGIyMzllZCwgMHhlMDc4NTUyMywKKyAgICAweDNkZWU4Y2E2fSwKKyAgIHsweDAwMDAwMDAwLCAweDliYTU0YzZmLCAweGVjM2I5ZTlmLCAweDc3OWVkMmYwLCAweDAzMDYzYjdmLAorICAgIDB4OThhMzc3MTAsIDB4ZWYzZGE1ZTAsIDB4NzQ5OGU5OGYsIDB4MDYwYzc2ZmUsIDB4OWRhOTNhOTEsCisgICAgMHhlYTM3ZTg2MSwgMHg3MTkyYTQwZSwgMHgwNTBhNGQ4MSwgMHg5ZWFmMDFlZSwgMHhlOTMxZDMxZSwKKyAgICAweDcyOTQ5ZjcxLCAweDBjMThlZGZjLCAweDk3YmRhMTkzLCAweGUwMjM3MzYzLCAweDdiODYzZjBjLAorICAgIDB4MGYxZWQ2ODMsIDB4OTRiYjlhZWMsIDB4ZTMyNTQ4MWMsIDB4Nzg4MDA0NzMsIDB4MGExNDliMDIsCisgICAgMHg5MWIxZDc2ZCwgMHhlNjJmMDU5ZCwgMHg3ZDhhNDlmMiwgMHgwOTEyYTA3ZCwgMHg5MmI3ZWMxMiwKKyAgICAweGU1MjkzZWUyLCAweDdlOGM3MjhkLCAweDE4MzFkYmY4LCAweDgzOTQ5Nzk3LCAweGY0MGE0NTY3LAorICAgIDB4NmZhZjA5MDgsIDB4MWIzN2UwODcsIDB4ODA5MmFjZTgsIDB4ZjcwYzdlMTgsIDB4NmNhOTMyNzcsCisgICAgMHgxZTNkYWQwNiwgMHg4NTk4ZTE2OSwgMHhmMjA2MzM5OSwgMHg2OWEzN2ZmNiwgMHgxZDNiOTY3OSwKKyAgICAweDg2OWVkYTE2LCAweGYxMDAwOGU2LCAweDZhYTU0NDg5LCAweDE0MjkzNjA0LCAweDhmOGM3YTZiLAorICAgIDB4ZjgxMmE4OWIsIDB4NjNiN2U0ZjQsIDB4MTcyZjBkN2IsIDB4OGM4YTQxMTQsIDB4ZmIxNDkzZTQsCisgICAgMHg2MGIxZGY4YiwgMHgxMjI1NDBmYSwgMHg4OTgwMGM5NSwgMHhmZTFlZGU2NSwgMHg2NWJiOTIwYSwKKyAgICAweDExMjM3Yjg1LCAweDhhODYzN2VhLCAweGZkMThlNTFhLCAweDY2YmRhOTc1LCAweDMwNjNiN2YwLAorICAgIDB4YWJjNmZiOWYsIDB4ZGM1ODI5NmYsIDB4NDdmZDY1MDAsIDB4MzM2NThjOGYsIDB4YThjMGMwZTAsCisgICAgMHhkZjVlMTIxMCwgMHg0NGZiNWU3ZiwgMHgzNjZmYzEwZSwgMHhhZGNhOGQ2MSwgMHhkYTU0NWY5MSwKKyAgICAweDQxZjExM2ZlLCAweDM1NjlmYTcxLCAweGFlY2NiNjFlLCAweGQ5NTI2NGVlLCAweDQyZjcyODgxLAorICAgIDB4M2M3YjVhMGMsIDB4YTdkZTE2NjMsIDB4ZDA0MGM0OTMsIDB4NGJlNTg4ZmMsIDB4M2Y3ZDYxNzMsCisgICAgMHhhNGQ4MmQxYywgMHhkMzQ2ZmZlYywgMHg0OGUzYjM4MywgMHgzYTc3MmNmMiwgMHhhMWQyNjA5ZCwKKyAgICAweGQ2NGNiMjZkLCAweDRkZTlmZTAyLCAweDM5NzExNzhkLCAweGEyZDQ1YmUyLCAweGQ1NGE4OTEyLAorICAgIDB4NGVlZmM1N2QsIDB4Mjg1MjZjMDgsIDB4YjNmNzIwNjcsIDB4YzQ2OWYyOTcsIDB4NWZjY2JlZjgsCisgICAgMHgyYjU0NTc3NywgMHhiMGYxMWIxOCwgMHhjNzZmYzllOCwgMHg1Y2NhODU4NywgMHgyZTVlMWFmNiwKKyAgICAweGI1ZmI1Njk5LCAweGMyNjU4NDY5LCAweDU5YzBjODA2LCAweDJkNTgyMTg5LCAweGI2ZmQ2ZGU2LAorICAgIDB4YzE2M2JmMTYsIDB4NWFjNmYzNzksIDB4MjQ0YTgxZjQsIDB4YmZlZmNkOWIsIDB4Yzg3MTFmNmIsCisgICAgMHg1M2Q0NTMwNCwgMHgyNzRjYmE4YiwgMHhiY2U5ZjZlNCwgMHhjYjc3MjQxNCwgMHg1MGQyNjg3YiwKKyAgICAweDIyNDZmNzBhLCAweGI5ZTNiYjY1LCAweGNlN2Q2OTk1LCAweDU1ZDgyNWZhLCAweDIxNDBjYzc1LAorICAgIDB4YmFlNTgwMWEsIDB4Y2Q3YjUyZWEsIDB4NTZkZTFlODUsIDB4NjBjNzZmZTAsIDB4ZmI2MjIzOGYsCisgICAgMHg4Y2ZjZjE3ZiwgMHgxNzU5YmQxMCwgMHg2M2MxNTQ5ZiwgMHhmODY0MThmMCwgMHg4ZmZhY2EwMCwKKyAgICAweDE0NWY4NjZmLCAweDY2Y2IxOTFlLCAweGZkNmU1NTcxLCAweDhhZjA4NzgxLCAweDExNTVjYmVlLAorICAgIDB4NjVjZDIyNjEsIDB4ZmU2ODZlMGUsIDB4ODlmNmJjZmUsIDB4MTI1M2YwOTEsIDB4NmNkZjgyMWMsCisgICAgMHhmNzdhY2U3MywgMHg4MGU0MWM4MywgMHgxYjQxNTBlYywgMHg2ZmQ5Yjk2MywgMHhmNDdjZjUwYywKKyAgICAweDgzZTIyN2ZjLCAweDE4NDc2YjkzLCAweDZhZDNmNGUyLCAweGYxNzZiODhkLCAweDg2ZTg2YTdkLAorICAgIDB4MWQ0ZDI2MTIsIDB4NjlkNWNmOWQsIDB4ZjI3MDgzZjIsIDB4ODVlZTUxMDIsIDB4MWU0YjFkNmQsCisgICAgMHg3OGY2YjQxOCwgMHhlMzUzZjg3NywgMHg5NGNkMmE4NywgMHgwZjY4NjZlOCwgMHg3YmYwOGY2NywKKyAgICAweGUwNTVjMzA4LCAweDk3Y2IxMWY4LCAweDBjNmU1ZDk3LCAweDdlZmFjMmU2LCAweGU1NWY4ZTg5LAorICAgIDB4OTJjMTVjNzksIDB4MDk2NDEwMTYsIDB4N2RmY2Y5OTksIDB4ZTY1OWI1ZjYsIDB4OTFjNzY3MDYsCisgICAgMHgwYTYyMmI2OSwgMHg3NGVlNTllNCwgMHhlZjRiMTU4YiwgMHg5OGQ1Yzc3YiwgMHgwMzcwOGIxNCwKKyAgICAweDc3ZTg2MjliLCAweGVjNGQyZWY0LCAweDliZDNmYzA0LCAweDAwNzZiMDZiLCAweDcyZTIyZjFhLAorICAgIDB4ZTk0NzYzNzUsIDB4OWVkOWIxODUsIDB4MDU3Y2ZkZWEsIDB4NzFlNDE0NjUsIDB4ZWE0MTU4MGEsCisgICAgMHg5ZGRmOGFmYSwgMHgwNjdhYzY5NSwgMHg1MGE0ZDgxMCwgMHhjYjAxOTQ3ZiwgMHhiYzlmNDY4ZiwKKyAgICAweDI3M2EwYWUwLCAweDUzYTJlMzZmLCAweGM4MDdhZjAwLCAweGJmOTk3ZGYwLCAweDI0M2MzMTlmLAorICAgIDB4NTZhOGFlZWUsIDB4Y2QwZGUyODEsIDB4YmE5MzMwNzEsIDB4MjEzNjdjMWUsIDB4NTVhZTk1OTEsCisgICAgMHhjZTBiZDlmZSwgMHhiOTk1MGIwZSwgMHgyMjMwNDc2MSwgMHg1Y2JjMzVlYywgMHhjNzE5Nzk4MywKKyAgICAweGIwODdhYjczLCAweDJiMjJlNzFjLCAweDVmYmEwZTkzLCAweGM0MWY0MmZjLCAweGIzODE5MDBjLAorICAgIDB4MjgyNGRjNjMsIDB4NWFiMDQzMTIsIDB4YzExNTBmN2QsIDB4YjY4YmRkOGQsIDB4MmQyZTkxZTIsCisgICAgMHg1OWI2Nzg2ZCwgMHhjMjEzMzQwMiwgMHhiNThkZTZmMiwgMHgyZTI4YWE5ZCwgMHg0ODk1MDNlOCwKKyAgICAweGQzMzA0Zjg3LCAweGE0YWU5ZDc3LCAweDNmMGJkMTE4LCAweDRiOTMzODk3LCAweGQwMzY3NGY4LAorICAgIDB4YTdhOGE2MDgsIDB4M2MwZGVhNjcsIDB4NGU5OTc1MTYsIDB4ZDUzYzM5NzksIDB4YTJhMmViODksCisgICAgMHgzOTA3YTdlNiwgMHg0ZDlmNGU2OSwgMHhkNjNhMDIwNiwgMHhhMWE0ZDBmNiwgMHgzYTAxOWM5OSwKKyAgICAweDQ0OGRlZTE0LCAweGRmMjhhMjdiLCAweGE4YjY3MDhiLCAweDMzMTMzY2U0LCAweDQ3OGJkNTZiLAorICAgIDB4ZGMyZTk5MDQsIDB4YWJiMDRiZjQsIDB4MzAxNTA3OWIsIDB4NDI4MTk4ZWEsIDB4ZDkyNGQ0ODUsCisgICAgMHhhZWJhMDY3NSwgMHgzNTFmNGExYSwgMHg0MTg3YTM5NSwgMHhkYTIyZWZmYSwgMHhhZGJjM2QwYSwKKyAgICAweDM2MTk3MTY1fSwKKyAgIHsweDAwMDAwMDAwLCAweGMxOGVkZmMwLCAweDU4NmNiOWMxLCAweDk5ZTI2NjAxLCAweGIwZDk3MzgyLAorICAgIDB4NzE1N2FjNDIsIDB4ZThiNWNhNDMsIDB4MjkzYjE1ODMsIDB4YmFjM2UxNDUsIDB4N2I0ZDNlODUsCisgICAgMHhlMmFmNTg4NCwgMHgyMzIxODc0NCwgMHgwYTFhOTJjNywgMHhjYjk0NGQwNywgMHg1Mjc2MmIwNiwKKyAgICAweDkzZjhmNGM2LCAweGFlZjZjNGNiLCAweDZmNzgxYjBiLCAweGY2OWE3ZDBhLCAweDM3MTRhMmNhLAorICAgIDB4MWUyZmI3NDksIDB4ZGZhMTY4ODksIDB4NDY0MzBlODgsIDB4ODdjZGQxNDgsIDB4MTQzNTI1OGUsCisgICAgMHhkNWJiZmE0ZSwgMHg0YzU5OWM0ZiwgMHg4ZGQ3NDM4ZiwgMHhhNGVjNTYwYywgMHg2NTYyODljYywKKyAgICAweGZjODBlZmNkLCAweDNkMGUzMDBkLCAweDg2OWM4ZmQ3LCAweDQ3MTI1MDE3LCAweGRlZjAzNjE2LAorICAgIDB4MWY3ZWU5ZDYsIDB4MzY0NWZjNTUsIDB4ZjdjYjIzOTUsIDB4NmUyOTQ1OTQsIDB4YWZhNzlhNTQsCisgICAgMHgzYzVmNmU5MiwgMHhmZGQxYjE1MiwgMHg2NDMzZDc1MywgMHhhNWJkMDg5MywgMHg4Yzg2MWQxMCwKKyAgICAweDRkMDhjMmQwLCAweGQ0ZWFhNGQxLCAweDE1NjQ3YjExLCAweDI4NmE0YjFjLCAweGU5ZTQ5NGRjLAorICAgIDB4NzAwNmYyZGQsIDB4YjE4ODJkMWQsIDB4OThiMzM4OWUsIDB4NTkzZGU3NWUsIDB4YzBkZjgxNWYsCisgICAgMHgwMTUxNWU5ZiwgMHg5MmE5YWE1OSwgMHg1MzI3NzU5OSwgMHhjYWM1MTM5OCwgMHgwYjRiY2M1OCwKKyAgICAweDIyNzBkOWRiLCAweGUzZmUwNjFiLCAweDdhMWM2MDFhLCAweGJiOTJiZmRhLCAweGQ2NDgxOWVmLAorICAgIDB4MTdjNmM2MmYsIDB4OGUyNGEwMmUsIDB4NGZhYTdmZWUsIDB4NjY5MTZhNmQsIDB4YTcxZmI1YWQsCisgICAgMHgzZWZkZDNhYywgMHhmZjczMGM2YywgMHg2YzhiZjhhYSwgMHhhZDA1Mjc2YSwgMHgzNGU3NDE2YiwKKyAgICAweGY1Njk5ZWFiLCAweGRjNTI4YjI4LCAweDFkZGM1NGU4LCAweDg0M2UzMmU5LCAweDQ1YjBlZDI5LAorICAgIDB4NzhiZWRkMjQsIDB4YjkzMDAyZTQsIDB4MjBkMjY0ZTUsIDB4ZTE1Y2JiMjUsIDB4Yzg2N2FlYTYsCisgICAgMHgwOWU5NzE2NiwgMHg5MDBiMTc2NywgMHg1MTg1YzhhNywgMHhjMjdkM2M2MSwgMHgwM2YzZTNhMSwKKyAgICAweDlhMTE4NWEwLCAweDViOWY1YTYwLCAweDcyYTQ0ZmUzLCAweGIzMmE5MDIzLCAweDJhYzhmNjIyLAorICAgIDB4ZWI0NjI5ZTIsIDB4NTBkNDk2MzgsIDB4OTE1YTQ5ZjgsIDB4MDhiODJmZjksIDB4YzkzNmYwMzksCisgICAgMHhlMDBkZTViYSwgMHgyMTgzM2E3YSwgMHhiODYxNWM3YiwgMHg3OWVmODNiYiwgMHhlYTE3Nzc3ZCwKKyAgICAweDJiOTlhOGJkLCAweGIyN2JjZWJjLCAweDczZjUxMTdjLCAweDVhY2UwNGZmLCAweDliNDBkYjNmLAorICAgIDB4MDJhMmJkM2UsIDB4YzMyYzYyZmUsIDB4ZmUyMjUyZjMsIDB4M2ZhYzhkMzMsIDB4YTY0ZWViMzIsCisgICAgMHg2N2MwMzRmMiwgMHg0ZWZiMjE3MSwgMHg4Zjc1ZmViMSwgMHgxNjk3OThiMCwgMHhkNzE5NDc3MCwKKyAgICAweDQ0ZTFiM2I2LCAweDg1NmY2Yzc2LCAweDFjOGQwYTc3LCAweGRkMDNkNWI3LCAweGY0MzhjMDM0LAorICAgIDB4MzViNjFmZjQsIDB4YWM1NDc5ZjUsIDB4NmRkYWE2MzUsIDB4NzdlMTM1OWYsIDB4YjY2ZmVhNWYsCisgICAgMHgyZjhkOGM1ZSwgMHhlZTAzNTM5ZSwgMHhjNzM4NDYxZCwgMHgwNmI2OTlkZCwgMHg5ZjU0ZmZkYywKKyAgICAweDVlZGEyMDFjLCAweGNkMjJkNGRhLCAweDBjYWMwYjFhLCAweDk1NGU2ZDFiLCAweDU0YzBiMmRiLAorICAgIDB4N2RmYmE3NTgsIDB4YmM3NTc4OTgsIDB4MjU5NzFlOTksIDB4ZTQxOWMxNTksIDB4ZDkxN2YxNTQsCisgICAgMHgxODk5MmU5NCwgMHg4MTdiNDg5NSwgMHg0MGY1OTc1NSwgMHg2OWNlODJkNiwgMHhhODQwNWQxNiwKKyAgICAweDMxYTIzYjE3LCAweGYwMmNlNGQ3LCAweDYzZDQxMDExLCAweGEyNWFjZmQxLCAweDNiYjhhOWQwLAorICAgIDB4ZmEzNjc2MTAsIDB4ZDMwZDYzOTMsIDB4MTI4M2JjNTMsIDB4OGI2MWRhNTIsIDB4NGFlZjA1OTIsCisgICAgMHhmMTdkYmE0OCwgMHgzMGYzNjU4OCwgMHhhOTExMDM4OSwgMHg2ODlmZGM0OSwgMHg0MWE0YzljYSwKKyAgICAweDgwMmExNjBhLCAweDE5Yzg3MDBiLCAweGQ4NDZhZmNiLCAweDRiYmU1YjBkLCAweDhhMzA4NGNkLAorICAgIDB4MTNkMmUyY2MsIDB4ZDI1YzNkMGMsIDB4ZmI2NzI4OGYsIDB4M2FlOWY3NGYsIDB4YTMwYjkxNGUsCisgICAgMHg2Mjg1NGU4ZSwgMHg1ZjhiN2U4MywgMHg5ZTA1YTE0MywgMHgwN2U3Yzc0MiwgMHhjNjY5MTg4MiwKKyAgICAweGVmNTIwZDAxLCAweDJlZGNkMmMxLCAweGI3M2ViNGMwLCAweDc2YjA2YjAwLCAweGU1NDg5ZmM2LAorICAgIDB4MjRjNjQwMDYsIDB4YmQyNDI2MDcsIDB4N2NhYWY5YzcsIDB4NTU5MWVjNDQsIDB4OTQxZjMzODQsCisgICAgMHgwZGZkNTU4NSwgMHhjYzczOGE0NSwgMHhhMWE5MmM3MCwgMHg2MDI3ZjNiMCwgMHhmOWM1OTViMSwKKyAgICAweDM4NGI0YTcxLCAweDExNzA1ZmYyLCAweGQwZmU4MDMyLCAweDQ5MWNlNjMzLCAweDg4OTIzOWYzLAorICAgIDB4MWI2YWNkMzUsIDB4ZGFlNDEyZjUsIDB4NDMwNjc0ZjQsIDB4ODI4OGFiMzQsIDB4YWJiM2JlYjcsCisgICAgMHg2YTNkNjE3NywgMHhmM2RmMDc3NiwgMHgzMjUxZDhiNiwgMHgwZjVmZThiYiwgMHhjZWQxMzc3YiwKKyAgICAweDU3MzM1MTdhLCAweDk2YmQ4ZWJhLCAweGJmODY5YjM5LCAweDdlMDg0NGY5LCAweGU3ZWEyMmY4LAorICAgIDB4MjY2NGZkMzgsIDB4YjU5YzA5ZmUsIDB4NzQxMmQ2M2UsIDB4ZWRmMGIwM2YsIDB4MmM3ZTZmZmYsCisgICAgMHgwNTQ1N2E3YywgMHhjNGNiYTViYywgMHg1ZDI5YzNiZCwgMHg5Y2E3MWM3ZCwgMHgyNzM1YTNhNywKKyAgICAweGU2YmI3YzY3LCAweDdmNTkxYTY2LCAweGJlZDdjNWE2LCAweDk3ZWNkMDI1LCAweDU2NjIwZmU1LAorICAgIDB4Y2Y4MDY5ZTQsIDB4MGUwZWI2MjQsIDB4OWRmNjQyZTIsIDB4NWM3ODlkMjIsIDB4YzU5YWZiMjMsCisgICAgMHgwNDE0MjRlMywgMHgyZDJmMzE2MCwgMHhlY2ExZWVhMCwgMHg3NTQzODhhMSwgMHhiNGNkNTc2MSwKKyAgICAweDg5YzM2NzZjLCAweDQ4NGRiOGFjLCAweGQxYWZkZWFkLCAweDEwMjEwMTZkLCAweDM5MWExNGVlLAorICAgIDB4Zjg5NGNiMmUsIDB4NjE3NmFkMmYsIDB4YTBmODcyZWYsIDB4MzMwMDg2MjksIDB4ZjI4ZTU5ZTksCisgICAgMHg2YjZjM2ZlOCwgMHhhYWUyZTAyOCwgMHg4M2Q5ZjVhYiwgMHg0MjU3MmE2YiwgMHhkYmI1NGM2YSwKKyAgICAweDFhM2I5M2FhfSwKKyAgIHsweDAwMDAwMDAwLCAweGVmYzI2YjNlLCAweDA0ZjVkMDNkLCAweGViMzdiYjAzLCAweDA5ZWJhMDdhLAorICAgIDB4ZTYyOWNiNDQsIDB4MGQxZTcwNDcsIDB4ZTJkYzFiNzksIDB4MTNkNzQwZjQsIDB4ZmMxNTJiY2EsCisgICAgMHgxNzIyOTBjOSwgMHhmOGUwZmJmNywgMHgxYTNjZTA4ZSwgMHhmNWZlOGJiMCwgMHgxZWM5MzBiMywKKyAgICAweGYxMGI1YjhkLCAweDI3YWU4MWU4LCAweGM4NmNlYWQ2LCAweDIzNWI1MWQ1LCAweGNjOTkzYWViLAorICAgIDB4MmU0NTIxOTIsIDB4YzE4NzRhYWMsIDB4MmFiMGYxYWYsIDB4YzU3MjlhOTEsIDB4MzQ3OWMxMWMsCisgICAgMHhkYmJiYWEyMiwgMHgzMDhjMTEyMSwgMHhkZjRlN2ExZiwgMHgzZDkyNjE2NiwgMHhkMjUwMGE1OCwKKyAgICAweDM5NjdiMTViLCAweGQ2YTVkYTY1LCAweDRmNWQwM2QwLCAweGEwOWY2OGVlLCAweDRiYThkM2VkLAorICAgIDB4YTQ2YWI4ZDMsIDB4NDZiNmEzYWEsIDB4YTk3NGM4OTQsIDB4NDI0MzczOTcsIDB4YWQ4MTE4YTksCisgICAgMHg1YzhhNDMyNCwgMHhiMzQ4MjgxYSwgMHg1ODdmOTMxOSwgMHhiN2JkZjgyNywgMHg1NTYxZTM1ZSwKKyAgICAweGJhYTM4ODYwLCAweDUxOTQzMzYzLCAweGJlNTY1ODVkLCAweDY4ZjM4MjM4LCAweDg3MzFlOTA2LAorICAgIDB4NmMwNjUyMDUsIDB4ODNjNDM5M2IsIDB4NjExODIyNDIsIDB4OGVkYTQ5N2MsIDB4NjVlZGYyN2YsCisgICAgMHg4YTJmOTk0MSwgMHg3YjI0YzJjYywgMHg5NGU2YTlmMiwgMHg3ZmQxMTJmMSwgMHg5MDEzNzljZiwKKyAgICAweDcyY2Y2MmI2LCAweDlkMGQwOTg4LCAweDc2M2FiMjhiLCAweDk5ZjhkOWI1LCAweDllYmEwN2EwLAorICAgIDB4NzE3ODZjOWUsIDB4OWE0ZmQ3OWQsIDB4NzU4ZGJjYTMsIDB4OTc1MWE3ZGEsIDB4Nzg5M2NjZTQsCisgICAgMHg5M2E0NzdlNywgMHg3YzY2MWNkOSwgMHg4ZDZkNDc1NCwgMHg2MmFmMmM2YSwgMHg4OTk4OTc2OSwKKyAgICAweDY2NWFmYzU3LCAweDg0ODZlNzJlLCAweDZiNDQ4YzEwLCAweDgwNzMzNzEzLCAweDZmYjE1YzJkLAorICAgIDB4YjkxNDg2NDgsIDB4NTZkNmVkNzYsIDB4YmRlMTU2NzUsIDB4NTIyMzNkNGIsIDB4YjBmZjI2MzIsCisgICAgMHg1ZjNkNGQwYywgMHhiNDBhZjYwZiwgMHg1YmM4OWQzMSwgMHhhYWMzYzZiYywgMHg0NTAxYWQ4MiwKKyAgICAweGFlMzYxNjgxLCAweDQxZjQ3ZGJmLCAweGEzMjg2NmM2LCAweDRjZWEwZGY4LCAweGE3ZGRiNmZiLAorICAgIDB4NDgxZmRkYzUsIDB4ZDFlNzA0NzAsIDB4M2UyNTZmNGUsIDB4ZDUxMmQ0NGQsIDB4M2FkMGJmNzMsCisgICAgMHhkODBjYTQwYSwgMHgzN2NlY2YzNCwgMHhkY2Y5NzQzNywgMHgzMzNiMWYwOSwgMHhjMjMwNDQ4NCwKKyAgICAweDJkZjIyZmJhLCAweGM2YzU5NGI5LCAweDI5MDdmZjg3LCAweGNiZGJlNGZlLCAweDI0MTk4ZmMwLAorICAgIDB4Y2YyZTM0YzMsIDB4MjBlYzVmZmQsIDB4ZjY0OTg1OTgsIDB4MTk4YmVlYTYsIDB4ZjJiYzU1YTUsCisgICAgMHgxZDdlM2U5YiwgMHhmZmEyMjVlMiwgMHgxMDYwNGVkYywgMHhmYjU3ZjVkZiwgMHgxNDk1OWVlMSwKKyAgICAweGU1OWVjNTZjLCAweDBhNWNhZTUyLCAweGUxNmIxNTUxLCAweDBlYTk3ZTZmLCAweGVjNzU2NTE2LAorICAgIDB4MDNiNzBlMjgsIDB4ZTg4MGI1MmIsIDB4MDc0MmRlMTUsIDB4ZTYwNTA5MDEsIDB4MDljNzYyM2YsCisgICAgMHhlMmYwZDkzYywgMHgwZDMyYjIwMiwgMHhlZmVlYTk3YiwgMHgwMDJjYzI0NSwgMHhlYjFiNzk0NiwKKyAgICAweDA0ZDkxMjc4LCAweGY1ZDI0OWY1LCAweDFhMTAyMmNiLCAweGYxMjc5OWM4LCAweDFlZTVmMmY2LAorICAgIDB4ZmMzOWU5OGYsIDB4MTNmYjgyYjEsIDB4ZjhjYzM5YjIsIDB4MTcwZTUyOGMsIDB4YzFhYjg4ZTksCisgICAgMHgyZTY5ZTNkNywgMHhjNTVlNThkNCwgMHgyYTljMzNlYSwgMHhjODQwMjg5MywgMHgyNzgyNDNhZCwKKyAgICAweGNjYjVmOGFlLCAweDIzNzc5MzkwLCAweGQyN2NjODFkLCAweDNkYmVhMzIzLCAweGQ2ODkxODIwLAorICAgIDB4Mzk0YjczMWUsIDB4ZGI5NzY4NjcsIDB4MzQ1NTAzNTksIDB4ZGY2MmI4NWEsIDB4MzBhMGQzNjQsCisgICAgMHhhOTU4MGFkMSwgMHg0NjlhNjFlZiwgMHhhZGFkZGFlYywgMHg0MjZmYjFkMiwgMHhhMGIzYWFhYiwKKyAgICAweDRmNzFjMTk1LCAweGE0NDY3YTk2LCAweDRiODQxMWE4LCAweGJhOGY0YTI1LCAweDU1NGQyMTFiLAorICAgIDB4YmU3YTlhMTgsIDB4NTFiOGYxMjYsIDB4YjM2NGVhNWYsIDB4NWNhNjgxNjEsIDB4Yjc5MTNhNjIsCisgICAgMHg1ODUzNTE1YywgMHg4ZWY2OGIzOSwgMHg2MTM0ZTAwNywgMHg4YTAzNWIwNCwgMHg2NWMxMzAzYSwKKyAgICAweDg3MWQyYjQzLCAweDY4ZGY0MDdkLCAweDgzZThmYjdlLCAweDZjMmE5MDQwLCAweDlkMjFjYmNkLAorICAgIDB4NzJlM2EwZjMsIDB4OTlkNDFiZjAsIDB4NzYxNjcwY2UsIDB4OTRjYTZiYjcsIDB4N2IwODAwODksCisgICAgMHg5MDNmYmI4YSwgMHg3ZmZkZDBiNCwgMHg3OGJmMGVhMSwgMHg5NzdkNjU5ZiwgMHg3YzRhZGU5YywKKyAgICAweDkzODhiNWEyLCAweDcxNTRhZWRiLCAweDllOTZjNWU1LCAweDc1YTE3ZWU2LCAweDlhNjMxNWQ4LAorICAgIDB4NmI2ODRlNTUsIDB4ODRhYTI1NmIsIDB4NmY5ZDllNjgsIDB4ODA1ZmY1NTYsIDB4NjI4M2VlMmYsCisgICAgMHg4ZDQxODUxMSwgMHg2Njc2M2UxMiwgMHg4OWI0NTUyYywgMHg1ZjExOGY0OSwgMHhiMGQzZTQ3NywKKyAgICAweDViZTQ1Zjc0LCAweGI0MjYzNDRhLCAweDU2ZmEyZjMzLCAweGI5Mzg0NDBkLCAweDUyMGZmZjBlLAorICAgIDB4YmRjZDk0MzAsIDB4NGNjNmNmYmQsIDB4YTMwNGE0ODMsIDB4NDgzMzFmODAsIDB4YTdmMTc0YmUsCisgICAgMHg0NTJkNmZjNywgMHhhYWVmMDRmOSwgMHg0MWQ4YmZmYSwgMHhhZTFhZDRjNCwgMHgzN2UyMGQ3MSwKKyAgICAweGQ4MjA2NjRmLCAweDMzMTdkZDRjLCAweGRjZDViNjcyLCAweDNlMDlhZDBiLCAweGQxY2JjNjM1LAorICAgIDB4M2FmYzdkMzYsIDB4ZDUzZTE2MDgsIDB4MjQzNTRkODUsIDB4Y2JmNzI2YmIsIDB4MjBjMDlkYjgsCisgICAgMHhjZjAyZjY4NiwgMHgyZGRlZWRmZiwgMHhjMjFjODZjMSwgMHgyOTJiM2RjMiwgMHhjNmU5NTZmYywKKyAgICAweDEwNGM4Yzk5LCAweGZmOGVlN2E3LCAweDE0Yjk1Y2E0LCAweGZiN2IzNzlhLCAweDE5YTcyY2UzLAorICAgIDB4ZjY2NTQ3ZGQsIDB4MWQ1MmZjZGUsIDB4ZjI5MDk3ZTAsIDB4MDM5YmNjNmQsIDB4ZWM1OWE3NTMsCisgICAgMHgwNzZlMWM1MCwgMHhlOGFjNzc2ZSwgMHgwYTcwNmMxNywgMHhlNWIyMDcyOSwgMHgwZTg1YmMyYSwKKyAgICAweGUxNDdkNzE0fSwKKyAgIHsweDAwMDAwMDAwLCAweDE3N2IxNDQzLCAweDJlZjYyODg2LCAweDM5OGQzY2M1LCAweDVkZWM1MTBjLAorICAgIDB4NGE5NzQ1NGYsIDB4NzMxYTc5OGEsIDB4NjQ2MTZkYzksIDB4YmJkOGEyMTgsIDB4YWNhM2I2NWIsCisgICAgMHg5NTJlOGE5ZSwgMHg4MjU1OWVkZCwgMHhlNjM0ZjMxNCwgMHhmMTRmZTc1NywgMHhjOGMyZGI5MiwKKyAgICAweGRmYjljZmQxLCAweGFjYzA0MjcxLCAweGJiYmI1NjMyLCAweDgyMzY2YWY3LCAweDk1NGQ3ZWI0LAorICAgIDB4ZjEyYzEzN2QsIDB4ZTY1NzA3M2UsIDB4ZGZkYTNiZmIsIDB4YzhhMTJmYjgsIDB4MTcxOGUwNjksCisgICAgMHgwMDYzZjQyYSwgMHgzOWVlYzhlZiwgMHgyZTk1ZGNhYywgMHg0YWY0YjE2NSwgMHg1ZDhmYTUyNiwKKyAgICAweDY0MDI5OWUzLCAweDczNzk4ZGEwLCAweDgyZjE4MmEzLCAweDk1OGE5NmUwLCAweGFjMDdhYTI1LAorICAgIDB4YmI3Y2JlNjYsIDB4ZGYxZGQzYWYsIDB4Yzg2NmM3ZWMsIDB4ZjFlYmZiMjksIDB4ZTY5MGVmNmEsCisgICAgMHgzOTI5MjBiYiwgMHgyZTUyMzRmOCwgMHgxN2RmMDgzZCwgMHgwMGE0MWM3ZSwgMHg2NGM1NzFiNywKKyAgICAweDczYmU2NWY0LCAweDRhMzM1OTMxLCAweDVkNDg0ZDcyLCAweDJlMzFjMGQyLCAweDM5NGFkNDkxLAorICAgIDB4MDBjN2U4NTQsIDB4MTdiY2ZjMTcsIDB4NzNkZDkxZGUsIDB4NjRhNjg1OWQsIDB4NWQyYmI5NTgsCisgICAgMHg0YTUwYWQxYiwgMHg5NWU5NjJjYSwgMHg4MjkyNzY4OSwgMHhiYjFmNGE0YywgMHhhYzY0NWUwZiwKKyAgICAweGM4MDUzM2M2LCAweGRmN2UyNzg1LCAweGU2ZjMxYjQwLCAweGYxODgwZjAzLCAweGRlOTIwMzA3LAorICAgIDB4YzllOTE3NDQsIDB4ZjA2NDJiODEsIDB4ZTcxZjNmYzIsIDB4ODM3ZTUyMGIsIDB4OTQwNTQ2NDgsCisgICAgMHhhZDg4N2E4ZCwgMHhiYWYzNmVjZSwgMHg2NTRhYTExZiwgMHg3MjMxYjU1YywgMHg0YmJjODk5OSwKKyAgICAweDVjYzc5ZGRhLCAweDM4YTZmMDEzLCAweDJmZGRlNDUwLCAweDE2NTBkODk1LCAweDAxMmJjY2Q2LAorICAgIDB4NzI1MjQxNzYsIDB4NjUyOTU1MzUsIDB4NWNhNDY5ZjAsIDB4NGJkZjdkYjMsIDB4MmZiZTEwN2EsCisgICAgMHgzOGM1MDQzOSwgMHgwMTQ4MzhmYywgMHgxNjMzMmNiZiwgMHhjOThhZTM2ZSwgMHhkZWYxZjcyZCwKKyAgICAweGU3N2NjYmU4LCAweGYwMDdkZmFiLCAweDk0NjZiMjYyLCAweDgzMWRhNjIxLCAweGJhOTA5YWU0LAorICAgIDB4YWRlYjhlYTcsIDB4NWM2MzgxYTQsIDB4NGIxODk1ZTcsIDB4NzI5NWE5MjIsIDB4NjVlZWJkNjEsCisgICAgMHgwMThmZDBhOCwgMHgxNmY0YzRlYiwgMHgyZjc5ZjgyZSwgMHgzODAyZWM2ZCwgMHhlN2JiMjNiYywKKyAgICAweGYwYzAzN2ZmLCAweGM5NGQwYjNhLCAweGRlMzYxZjc5LCAweGJhNTc3MmIwLCAweGFkMmM2NmYzLAorICAgIDB4OTRhMTVhMzYsIDB4ODNkYTRlNzUsIDB4ZjBhM2MzZDUsIDB4ZTdkOGQ3OTYsIDB4ZGU1NWViNTMsCisgICAgMHhjOTJlZmYxMCwgMHhhZDRmOTJkOSwgMHhiYTM0ODY5YSwgMHg4M2I5YmE1ZiwgMHg5NGMyYWUxYywKKyAgICAweDRiN2I2MWNkLCAweDVjMDA3NThlLCAweDY1OGQ0OTRiLCAweDcyZjY1ZDA4LCAweDE2OTczMGMxLAorICAgIDB4MDFlYzI0ODIsIDB4Mzg2MTE4NDcsIDB4MmYxYTBjMDQsIDB4NjY1NTAwNGYsIDB4NzEyZTE0MGMsCisgICAgMHg0OGEzMjhjOSwgMHg1ZmQ4M2M4YSwgMHgzYmI5NTE0MywgMHgyY2MyNDUwMCwgMHgxNTRmNzljNSwKKyAgICAweDAyMzQ2ZDg2LCAweGRkOGRhMjU3LCAweGNhZjZiNjE0LCAweGYzN2I4YWQxLCAweGU0MDA5ZTkyLAorICAgIDB4ODA2MWYzNWIsIDB4OTcxYWU3MTgsIDB4YWU5N2RiZGQsIDB4YjllY2NmOWUsIDB4Y2E5NTQyM2UsCisgICAgMHhkZGVlNTY3ZCwgMHhlNDYzNmFiOCwgMHhmMzE4N2VmYiwgMHg5Nzc5MTMzMiwgMHg4MDAyMDc3MSwKKyAgICAweGI5OGYzYmI0LCAweGFlZjQyZmY3LCAweDcxNGRlMDI2LCAweDY2MzZmNDY1LCAweDVmYmJjOGEwLAorICAgIDB4NDhjMGRjZTMsIDB4MmNhMWIxMmEsIDB4M2JkYWE1NjksIDB4MDI1Nzk5YWMsIDB4MTUyYzhkZWYsCisgICAgMHhlNGE0ODJlYywgMHhmM2RmOTZhZiwgMHhjYTUyYWE2YSwgMHhkZDI5YmUyOSwgMHhiOTQ4ZDNlMCwKKyAgICAweGFlMzNjN2EzLCAweDk3YmVmYjY2LCAweDgwYzVlZjI1LCAweDVmN2MyMGY0LCAweDQ4MDczNGI3LAorICAgIDB4NzE4YTA4NzIsIDB4NjZmMTFjMzEsIDB4MDI5MDcxZjgsIDB4MTVlYjY1YmIsIDB4MmM2NjU5N2UsCisgICAgMHgzYjFkNGQzZCwgMHg0ODY0YzA5ZCwgMHg1ZjFmZDRkZSwgMHg2NjkyZTgxYiwgMHg3MWU5ZmM1OCwKKyAgICAweDE1ODg5MTkxLCAweDAyZjM4NWQyLCAweDNiN2ViOTE3LCAweDJjMDVhZDU0LCAweGYzYmM2Mjg1LAorICAgIDB4ZTRjNzc2YzYsIDB4ZGQ0YTRhMDMsIDB4Y2EzMTVlNDAsIDB4YWU1MDMzODksIDB4YjkyYjI3Y2EsCisgICAgMHg4MGE2MWIwZiwgMHg5N2RkMGY0YywgMHhiOGM3MDM0OCwgMHhhZmJjMTcwYiwgMHg5NjMxMmJjZSwKKyAgICAweDgxNGEzZjhkLCAweGU1MmI1MjQ0LCAweGYyNTA0NjA3LCAweGNiZGQ3YWMyLCAweGRjYTY2ZTgxLAorICAgIDB4MDMxZmExNTAsIDB4MTQ2NGI1MTMsIDB4MmRlOTg5ZDYsIDB4M2E5MjlkOTUsIDB4NWVmM2YwNWMsCisgICAgMHg0OTg4ZTQxZiwgMHg3MDA1ZDhkYSwgMHg2NzdlY2M5OSwgMHgxNDA3NDEzOSwgMHgwMzdjNTU3YSwKKyAgICAweDNhZjE2OWJmLCAweDJkOGE3ZGZjLCAweDQ5ZWIxMDM1LCAweDVlOTAwNDc2LCAweDY3MWQzOGIzLAorICAgIDB4NzA2NjJjZjAsIDB4YWZkZmUzMjEsIDB4YjhhNGY3NjIsIDB4ODEyOWNiYTcsIDB4OTY1MmRmZTQsCisgICAgMHhmMjMzYjIyZCwgMHhlNTQ4YTY2ZSwgMHhkY2M1OWFhYiwgMHhjYmJlOGVlOCwgMHgzYTM2ODFlYiwKKyAgICAweDJkNGQ5NWE4LCAweDE0YzBhOTZkLCAweDAzYmJiZDJlLCAweDY3ZGFkMGU3LCAweDcwYTFjNGE0LAorICAgIDB4NDkyY2Y4NjEsIDB4NWU1N2VjMjIsIDB4ODFlZTIzZjMsIDB4OTY5NTM3YjAsIDB4YWYxODBiNzUsCisgICAgMHhiODYzMWYzNiwgMHhkYzAyNzJmZiwgMHhjYjc5NjZiYywgMHhmMmY0NWE3OSwgMHhlNThmNGUzYSwKKyAgICAweDk2ZjZjMzlhLCAweDgxOGRkN2Q5LCAweGI4MDBlYjFjLCAweGFmN2JmZjVmLCAweGNiMWE5Mjk2LAorICAgIDB4ZGM2MTg2ZDUsIDB4ZTVlY2JhMTAsIDB4ZjI5N2FlNTMsIDB4MmQyZTYxODIsIDB4M2E1NTc1YzEsCisgICAgMHgwM2Q4NDkwNCwgMHgxNGEzNWQ0NywgMHg3MGMyMzA4ZSwgMHg2N2I5MjRjZCwgMHg1ZTM0MTgwOCwKKyAgICAweDQ5NGYwYzRifX07CisKK2xvY2FsIGNvbnN0IHpfd29yZF90IEZBUiBjcmNfYnJhaWRfYmlnX3RhYmxlW11bMjU2XSA9IHsKKyAgIHsweDAwMDAwMDAwMDAwMDAwMDAsIDB4NDMxNDdiMTcwMDAwMDAwMCwgMHg4NjI4ZjYyZTAwMDAwMDAwLAorICAgIDB4YzUzYzhkMzkwMDAwMDAwMCwgMHgwYzUxZWM1ZDAwMDAwMDAwLCAweDRmNDU5NzRhMDAwMDAwMDAsCisgICAgMHg4YTc5MWE3MzAwMDAwMDAwLCAweGM5NmQ2MTY0MDAwMDAwMDAsIDB4MThhMmQ4YmIwMDAwMDAwMCwKKyAgICAweDViYjZhM2FjMDAwMDAwMDAsIDB4OWU4YTJlOTUwMDAwMDAwMCwgMHhkZDllNTU4MjAwMDAwMDAwLAorICAgIDB4MTRmMzM0ZTYwMDAwMDAwMCwgMHg1N2U3NGZmMTAwMDAwMDAwLCAweDkyZGJjMmM4MDAwMDAwMDAsCisgICAgMHhkMWNmYjlkZjAwMDAwMDAwLCAweDcxNDJjMGFjMDAwMDAwMDAsIDB4MzI1NmJiYmIwMDAwMDAwMCwKKyAgICAweGY3NmEzNjgyMDAwMDAwMDAsIDB4YjQ3ZTRkOTUwMDAwMDAwMCwgMHg3ZDEzMmNmMTAwMDAwMDAwLAorICAgIDB4M2UwNzU3ZTYwMDAwMDAwMCwgMHhmYjNiZGFkZjAwMDAwMDAwLCAweGI4MmZhMWM4MDAwMDAwMDAsCisgICAgMHg2OWUwMTgxNzAwMDAwMDAwLCAweDJhZjQ2MzAwMDAwMDAwMDAsIDB4ZWZjOGVlMzkwMDAwMDAwMCwKKyAgICAweGFjZGM5NTJlMDAwMDAwMDAsIDB4NjViMWY0NGEwMDAwMDAwMCwgMHgyNmE1OGY1ZDAwMDAwMDAwLAorICAgIDB4ZTM5OTAyNjQwMDAwMDAwMCwgMHhhMDhkNzk3MzAwMDAwMDAwLCAweGEzODJmMTgyMDAwMDAwMDAsCisgICAgMHhlMDk2OGE5NTAwMDAwMDAwLCAweDI1YWEwN2FjMDAwMDAwMDAsIDB4NjZiZTdjYmIwMDAwMDAwMCwKKyAgICAweGFmZDMxZGRmMDAwMDAwMDAsIDB4ZWNjNzY2YzgwMDAwMDAwMCwgMHgyOWZiZWJmMTAwMDAwMDAwLAorICAgIDB4NmFlZjkwZTYwMDAwMDAwMCwgMHhiYjIwMjkzOTAwMDAwMDAwLCAweGY4MzQ1MjJlMDAwMDAwMDAsCisgICAgMHgzZDA4ZGYxNzAwMDAwMDAwLCAweDdlMWNhNDAwMDAwMDAwMDAsIDB4Yjc3MWM1NjQwMDAwMDAwMCwKKyAgICAweGY0NjViZTczMDAwMDAwMDAsIDB4MzE1OTMzNGEwMDAwMDAwMCwgMHg3MjRkNDg1ZDAwMDAwMDAwLAorICAgIDB4ZDJjMDMxMmUwMDAwMDAwMCwgMHg5MWQ0NGEzOTAwMDAwMDAwLCAweDU0ZThjNzAwMDAwMDAwMDAsCisgICAgMHgxN2ZjYmMxNzAwMDAwMDAwLCAweGRlOTFkZDczMDAwMDAwMDAsIDB4OWQ4NWE2NjQwMDAwMDAwMCwKKyAgICAweDU4YjkyYjVkMDAwMDAwMDAsIDB4MWJhZDUwNGEwMDAwMDAwMCwgMHhjYTYyZTk5NTAwMDAwMDAwLAorICAgIDB4ODk3NjkyODIwMDAwMDAwMCwgMHg0YzRhMWZiYjAwMDAwMDAwLCAweDBmNWU2NGFjMDAwMDAwMDAsCisgICAgMHhjNjMzMDVjODAwMDAwMDAwLCAweDg1Mjc3ZWRmMDAwMDAwMDAsIDB4NDAxYmYzZTYwMDAwMDAwMCwKKyAgICAweDAzMGY4OGYxMDAwMDAwMDAsIDB4MDcwMzkyZGUwMDAwMDAwMCwgMHg0NDE3ZTljOTAwMDAwMDAwLAorICAgIDB4ODEyYjY0ZjAwMDAwMDAwMCwgMHhjMjNmMWZlNzAwMDAwMDAwLCAweDBiNTI3ZTgzMDAwMDAwMDAsCisgICAgMHg0ODQ2MDU5NDAwMDAwMDAwLCAweDhkN2E4OGFkMDAwMDAwMDAsIDB4Y2U2ZWYzYmEwMDAwMDAwMCwKKyAgICAweDFmYTE0YTY1MDAwMDAwMDAsIDB4NWNiNTMxNzIwMDAwMDAwMCwgMHg5OTg5YmM0YjAwMDAwMDAwLAorICAgIDB4ZGE5ZGM3NWMwMDAwMDAwMCwgMHgxM2YwYTYzODAwMDAwMDAwLCAweDUwZTRkZDJmMDAwMDAwMDAsCisgICAgMHg5NWQ4NTAxNjAwMDAwMDAwLCAweGQ2Y2MyYjAxMDAwMDAwMDAsIDB4NzY0MTUyNzIwMDAwMDAwMCwKKyAgICAweDM1NTUyOTY1MDAwMDAwMDAsIDB4ZjA2OWE0NWMwMDAwMDAwMCwgMHhiMzdkZGY0YjAwMDAwMDAwLAorICAgIDB4N2ExMGJlMmYwMDAwMDAwMCwgMHgzOTA0YzUzODAwMDAwMDAwLCAweGZjMzg0ODAxMDAwMDAwMDAsCisgICAgMHhiZjJjMzMxNjAwMDAwMDAwLCAweDZlZTM4YWM5MDAwMDAwMDAsIDB4MmRmN2YxZGUwMDAwMDAwMCwKKyAgICAweGU4Y2I3Y2U3MDAwMDAwMDAsIDB4YWJkZjA3ZjAwMDAwMDAwMCwgMHg2MmIyNjY5NDAwMDAwMDAwLAorICAgIDB4MjFhNjFkODMwMDAwMDAwMCwgMHhlNDlhOTBiYTAwMDAwMDAwLCAweGE3OGVlYmFkMDAwMDAwMDAsCisgICAgMHhhNDgxNjM1YzAwMDAwMDAwLCAweGU3OTUxODRiMDAwMDAwMDAsIDB4MjJhOTk1NzIwMDAwMDAwMCwKKyAgICAweDYxYmRlZTY1MDAwMDAwMDAsIDB4YThkMDhmMDEwMDAwMDAwMCwgMHhlYmM0ZjQxNjAwMDAwMDAwLAorICAgIDB4MmVmODc5MmYwMDAwMDAwMCwgMHg2ZGVjMDIzODAwMDAwMDAwLCAweGJjMjNiYmU3MDAwMDAwMDAsCisgICAgMHhmZjM3YzBmMDAwMDAwMDAwLCAweDNhMGI0ZGM5MDAwMDAwMDAsIDB4NzkxZjM2ZGUwMDAwMDAwMCwKKyAgICAweGIwNzI1N2JhMDAwMDAwMDAsIDB4ZjM2NjJjYWQwMDAwMDAwMCwgMHgzNjVhYTE5NDAwMDAwMDAwLAorICAgIDB4NzU0ZWRhODMwMDAwMDAwMCwgMHhkNWMzYTNmMDAwMDAwMDAwLCAweDk2ZDdkOGU3MDAwMDAwMDAsCisgICAgMHg1M2ViNTVkZTAwMDAwMDAwLCAweDEwZmYyZWM5MDAwMDAwMDAsIDB4ZDk5MjRmYWQwMDAwMDAwMCwKKyAgICAweDlhODYzNGJhMDAwMDAwMDAsIDB4NWZiYWI5ODMwMDAwMDAwMCwgMHgxY2FlYzI5NDAwMDAwMDAwLAorICAgIDB4Y2Q2MTdiNGIwMDAwMDAwMCwgMHg4ZTc1MDA1YzAwMDAwMDAwLCAweDRiNDk4ZDY1MDAwMDAwMDAsCisgICAgMHgwODVkZjY3MjAwMDAwMDAwLCAweGMxMzA5NzE2MDAwMDAwMDAsIDB4ODIyNGVjMDEwMDAwMDAwMCwKKyAgICAweDQ3MTg2MTM4MDAwMDAwMDAsIDB4MDQwYzFhMmYwMDAwMDAwMCwgMHg0ZjAwNTU2NjAwMDAwMDAwLAorICAgIDB4MGMxNDJlNzEwMDAwMDAwMCwgMHhjOTI4YTM0ODAwMDAwMDAwLCAweDhhM2NkODVmMDAwMDAwMDAsCisgICAgMHg0MzUxYjkzYjAwMDAwMDAwLCAweDAwNDVjMjJjMDAwMDAwMDAsIDB4YzU3OTRmMTUwMDAwMDAwMCwKKyAgICAweDg2NmQzNDAyMDAwMDAwMDAsIDB4NTdhMjhkZGQwMDAwMDAwMCwgMHgxNGI2ZjZjYTAwMDAwMDAwLAorICAgIDB4ZDE4YTdiZjMwMDAwMDAwMCwgMHg5MjllMDBlNDAwMDAwMDAwLCAweDViZjM2MTgwMDAwMDAwMDAsCisgICAgMHgxOGU3MWE5NzAwMDAwMDAwLCAweGRkZGI5N2FlMDAwMDAwMDAsIDB4OWVjZmVjYjkwMDAwMDAwMCwKKyAgICAweDNlNDI5NWNhMDAwMDAwMDAsIDB4N2Q1NmVlZGQwMDAwMDAwMCwgMHhiODZhNjNlNDAwMDAwMDAwLAorICAgIDB4ZmI3ZTE4ZjMwMDAwMDAwMCwgMHgzMjEzNzk5NzAwMDAwMDAwLCAweDcxMDcwMjgwMDAwMDAwMDAsCisgICAgMHhiNDNiOGZiOTAwMDAwMDAwLCAweGY3MmZmNGFlMDAwMDAwMDAsIDB4MjZlMDRkNzEwMDAwMDAwMCwKKyAgICAweDY1ZjQzNjY2MDAwMDAwMDAsIDB4YTBjOGJiNWYwMDAwMDAwMCwgMHhlM2RjYzA0ODAwMDAwMDAwLAorICAgIDB4MmFiMWExMmMwMDAwMDAwMCwgMHg2OWE1ZGEzYjAwMDAwMDAwLCAweGFjOTk1NzAyMDAwMDAwMDAsCisgICAgMHhlZjhkMmMxNTAwMDAwMDAwLCAweGVjODJhNGU0MDAwMDAwMDAsIDB4YWY5NmRmZjMwMDAwMDAwMCwKKyAgICAweDZhYWE1MmNhMDAwMDAwMDAsIDB4MjliZTI5ZGQwMDAwMDAwMCwgMHhlMGQzNDhiOTAwMDAwMDAwLAorICAgIDB4YTNjNzMzYWUwMDAwMDAwMCwgMHg2NmZiYmU5NzAwMDAwMDAwLCAweDI1ZWZjNTgwMDAwMDAwMDAsCisgICAgMHhmNDIwN2M1ZjAwMDAwMDAwLCAweGI3MzQwNzQ4MDAwMDAwMDAsIDB4NzIwODhhNzEwMDAwMDAwMCwKKyAgICAweDMxMWNmMTY2MDAwMDAwMDAsIDB4Zjg3MTkwMDIwMDAwMDAwMCwgMHhiYjY1ZWIxNTAwMDAwMDAwLAorICAgIDB4N2U1OTY2MmMwMDAwMDAwMCwgMHgzZDRkMWQzYjAwMDAwMDAwLCAweDlkYzA2NDQ4MDAwMDAwMDAsCisgICAgMHhkZWQ0MWY1ZjAwMDAwMDAwLCAweDFiZTg5MjY2MDAwMDAwMDAsIDB4NThmY2U5NzEwMDAwMDAwMCwKKyAgICAweDkxOTE4ODE1MDAwMDAwMDAsIDB4ZDI4NWYzMDIwMDAwMDAwMCwgMHgxN2I5N2UzYjAwMDAwMDAwLAorICAgIDB4NTRhZDA1MmMwMDAwMDAwMCwgMHg4NTYyYmNmMzAwMDAwMDAwLCAweGM2NzZjN2U0MDAwMDAwMDAsCisgICAgMHgwMzRhNGFkZDAwMDAwMDAwLCAweDQwNWUzMWNhMDAwMDAwMDAsIDB4ODkzMzUwYWUwMDAwMDAwMCwKKyAgICAweGNhMjcyYmI5MDAwMDAwMDAsIDB4MGYxYmE2ODAwMDAwMDAwMCwgMHg0YzBmZGQ5NzAwMDAwMDAwLAorICAgIDB4NDgwM2M3YjgwMDAwMDAwMCwgMHgwYjE3YmNhZjAwMDAwMDAwLCAweGNlMmIzMTk2MDAwMDAwMDAsCisgICAgMHg4ZDNmNGE4MTAwMDAwMDAwLCAweDQ0NTIyYmU1MDAwMDAwMDAsIDB4MDc0NjUwZjIwMDAwMDAwMCwKKyAgICAweGMyN2FkZGNiMDAwMDAwMDAsIDB4ODE2ZWE2ZGMwMDAwMDAwMCwgMHg1MGExMWYwMzAwMDAwMDAwLAorICAgIDB4MTNiNTY0MTQwMDAwMDAwMCwgMHhkNjg5ZTkyZDAwMDAwMDAwLCAweDk1OWQ5MjNhMDAwMDAwMDAsCisgICAgMHg1Y2YwZjM1ZTAwMDAwMDAwLCAweDFmZTQ4ODQ5MDAwMDAwMDAsIDB4ZGFkODA1NzAwMDAwMDAwMCwKKyAgICAweDk5Y2M3ZTY3MDAwMDAwMDAsIDB4Mzk0MTA3MTQwMDAwMDAwMCwgMHg3YTU1N2MwMzAwMDAwMDAwLAorICAgIDB4YmY2OWYxM2EwMDAwMDAwMCwgMHhmYzdkOGEyZDAwMDAwMDAwLCAweDM1MTBlYjQ5MDAwMDAwMDAsCisgICAgMHg3NjA0OTA1ZTAwMDAwMDAwLCAweGIzMzgxZDY3MDAwMDAwMDAsIDB4ZjAyYzY2NzAwMDAwMDAwMCwKKyAgICAweDIxZTNkZmFmMDAwMDAwMDAsIDB4NjJmN2E0YjgwMDAwMDAwMCwgMHhhN2NiMjk4MTAwMDAwMDAwLAorICAgIDB4ZTRkZjUyOTYwMDAwMDAwMCwgMHgyZGIyMzNmMjAwMDAwMDAwLCAweDZlYTY0OGU1MDAwMDAwMDAsCisgICAgMHhhYjlhYzVkYzAwMDAwMDAwLCAweGU4OGViZWNiMDAwMDAwMDAsIDB4ZWI4MTM2M2EwMDAwMDAwMCwKKyAgICAweGE4OTU0ZDJkMDAwMDAwMDAsIDB4NmRhOWMwMTQwMDAwMDAwMCwgMHgyZWJkYmIwMzAwMDAwMDAwLAorICAgIDB4ZTdkMGRhNjcwMDAwMDAwMCwgMHhhNGM0YTE3MDAwMDAwMDAwLCAweDYxZjgyYzQ5MDAwMDAwMDAsCisgICAgMHgyMmVjNTc1ZTAwMDAwMDAwLCAweGYzMjNlZTgxMDAwMDAwMDAsIDB4YjAzNzk1OTYwMDAwMDAwMCwKKyAgICAweDc1MGIxOGFmMDAwMDAwMDAsIDB4MzYxZjYzYjgwMDAwMDAwMCwgMHhmZjcyMDJkYzAwMDAwMDAwLAorICAgIDB4YmM2Njc5Y2IwMDAwMDAwMCwgMHg3OTVhZjRmMjAwMDAwMDAwLCAweDNhNGU4ZmU1MDAwMDAwMDAsCisgICAgMHg5YWMzZjY5NjAwMDAwMDAwLCAweGQ5ZDc4ZDgxMDAwMDAwMDAsIDB4MWNlYjAwYjgwMDAwMDAwMCwKKyAgICAweDVmZmY3YmFmMDAwMDAwMDAsIDB4OTY5MjFhY2IwMDAwMDAwMCwgMHhkNTg2NjFkYzAwMDAwMDAwLAorICAgIDB4MTBiYWVjZTUwMDAwMDAwMCwgMHg1M2FlOTdmMjAwMDAwMDAwLCAweDgyNjEyZTJkMDAwMDAwMDAsCisgICAgMHhjMTc1NTUzYTAwMDAwMDAwLCAweDA0NDlkODAzMDAwMDAwMDAsIDB4NDc1ZGEzMTQwMDAwMDAwMCwKKyAgICAweDhlMzBjMjcwMDAwMDAwMDAsIDB4Y2QyNGI5NjcwMDAwMDAwMCwgMHgwODE4MzQ1ZTAwMDAwMDAwLAorICAgIDB4NGIwYzRmNDkwMDAwMDAwMH0sCisgICB7MHgwMDAwMDAwMDAwMDAwMDAwLCAweDNlNmJjMmVmMDAwMDAwMDAsIDB4M2RkMGY1MDQwMDAwMDAwMCwKKyAgICAweDAzYmIzN2ViMDAwMDAwMDAsIDB4N2FhMGViMDkwMDAwMDAwMCwgMHg0NGNiMjllNjAwMDAwMDAwLAorICAgIDB4NDc3MDFlMGQwMDAwMDAwMCwgMHg3OTFiZGNlMjAwMDAwMDAwLCAweGY0NDBkNzEzMDAwMDAwMDAsCisgICAgMHhjYTJiMTVmYzAwMDAwMDAwLCAweGM5OTAyMjE3MDAwMDAwMDAsIDB4ZjdmYmUwZjgwMDAwMDAwMCwKKyAgICAweDhlZTAzYzFhMDAwMDAwMDAsIDB4YjA4YmZlZjUwMDAwMDAwMCwgMHhiMzMwYzkxZTAwMDAwMDAwLAorICAgIDB4OGQ1YjBiZjEwMDAwMDAwMCwgMHhlODgxYWUyNzAwMDAwMDAwLCAweGQ2ZWE2Y2M4MDAwMDAwMDAsCisgICAgMHhkNTUxNWIyMzAwMDAwMDAwLCAweGViM2E5OWNjMDAwMDAwMDAsIDB4OTIyMTQ1MmUwMDAwMDAwMCwKKyAgICAweGFjNGE4N2MxMDAwMDAwMDAsIDB4YWZmMWIwMmEwMDAwMDAwMCwgMHg5MTlhNzJjNTAwMDAwMDAwLAorICAgIDB4MWNjMTc5MzQwMDAwMDAwMCwgMHgyMmFhYmJkYjAwMDAwMDAwLCAweDIxMTE4YzMwMDAwMDAwMDAsCisgICAgMHgxZjdhNGVkZjAwMDAwMDAwLCAweDY2NjE5MjNkMDAwMDAwMDAsIDB4NTgwYTUwZDIwMDAwMDAwMCwKKyAgICAweDViYjE2NzM5MDAwMDAwMDAsIDB4NjVkYWE1ZDYwMDAwMDAwMCwgMHhkMDAzNWQ0ZjAwMDAwMDAwLAorICAgIDB4ZWU2ODlmYTAwMDAwMDAwMCwgMHhlZGQzYTg0YjAwMDAwMDAwLCAweGQzYjg2YWE0MDAwMDAwMDAsCisgICAgMHhhYWEzYjY0NjAwMDAwMDAwLCAweDk0Yzg3NGE5MDAwMDAwMDAsIDB4OTc3MzQzNDIwMDAwMDAwMCwKKyAgICAweGE5MTg4MWFkMDAwMDAwMDAsIDB4MjQ0MzhhNWMwMDAwMDAwMCwgMHgxYTI4NDhiMzAwMDAwMDAwLAorICAgIDB4MTk5MzdmNTgwMDAwMDAwMCwgMHgyN2Y4YmRiNzAwMDAwMDAwLCAweDVlZTM2MTU1MDAwMDAwMDAsCisgICAgMHg2MDg4YTNiYTAwMDAwMDAwLCAweDYzMzM5NDUxMDAwMDAwMDAsIDB4NWQ1ODU2YmUwMDAwMDAwMCwKKyAgICAweDM4ODJmMzY4MDAwMDAwMDAsIDB4MDZlOTMxODcwMDAwMDAwMCwgMHgwNTUyMDY2YzAwMDAwMDAwLAorICAgIDB4M2IzOWM0ODMwMDAwMDAwMCwgMHg0MjIyMTg2MTAwMDAwMDAwLCAweDdjNDlkYThlMDAwMDAwMDAsCisgICAgMHg3ZmYyZWQ2NTAwMDAwMDAwLCAweDQxOTkyZjhhMDAwMDAwMDAsIDB4Y2NjMjI0N2IwMDAwMDAwMCwKKyAgICAweGYyYTllNjk0MDAwMDAwMDAsIDB4ZjExMmQxN2YwMDAwMDAwMCwgMHhjZjc5MTM5MDAwMDAwMDAwLAorICAgIDB4YjY2MmNmNzIwMDAwMDAwMCwgMHg4ODA5MGQ5ZDAwMDAwMDAwLCAweDhiYjIzYTc2MDAwMDAwMDAsCisgICAgMHhiNWQ5Zjg5OTAwMDAwMDAwLCAweGEwMDdiYTllMDAwMDAwMDAsIDB4OWU2Yzc4NzEwMDAwMDAwMCwKKyAgICAweDlkZDc0ZjlhMDAwMDAwMDAsIDB4YTNiYzhkNzUwMDAwMDAwMCwgMHhkYWE3NTE5NzAwMDAwMDAwLAorICAgIDB4ZTRjYzkzNzgwMDAwMDAwMCwgMHhlNzc3YTQ5MzAwMDAwMDAwLCAweGQ5MWM2NjdjMDAwMDAwMDAsCisgICAgMHg1NDQ3NmQ4ZDAwMDAwMDAwLCAweDZhMmNhZjYyMDAwMDAwMDAsIDB4Njk5Nzk4ODkwMDAwMDAwMCwKKyAgICAweDU3ZmM1YTY2MDAwMDAwMDAsIDB4MmVlNzg2ODQwMDAwMDAwMCwgMHgxMDhjNDQ2YjAwMDAwMDAwLAorICAgIDB4MTMzNzczODAwMDAwMDAwMCwgMHgyZDVjYjE2ZjAwMDAwMDAwLCAweDQ4ODYxNGI5MDAwMDAwMDAsCisgICAgMHg3NmVkZDY1NjAwMDAwMDAwLCAweDc1NTZlMWJkMDAwMDAwMDAsIDB4NGIzZDIzNTIwMDAwMDAwMCwKKyAgICAweDMyMjZmZmIwMDAwMDAwMDAsIDB4MGM0ZDNkNWYwMDAwMDAwMCwgMHgwZmY2MGFiNDAwMDAwMDAwLAorICAgIDB4MzE5ZGM4NWIwMDAwMDAwMCwgMHhiY2M2YzNhYTAwMDAwMDAwLCAweDgyYWQwMTQ1MDAwMDAwMDAsCisgICAgMHg4MTE2MzZhZTAwMDAwMDAwLCAweGJmN2RmNDQxMDAwMDAwMDAsIDB4YzY2NjI4YTMwMDAwMDAwMCwKKyAgICAweGY4MGRlYTRjMDAwMDAwMDAsIDB4ZmJiNmRkYTcwMDAwMDAwMCwgMHhjNWRkMWY0ODAwMDAwMDAwLAorICAgIDB4NzAwNGU3ZDEwMDAwMDAwMCwgMHg0ZTZmMjUzZTAwMDAwMDAwLCAweDRkZDQxMmQ1MDAwMDAwMDAsCisgICAgMHg3M2JmZDAzYTAwMDAwMDAwLCAweDBhYTQwY2Q4MDAwMDAwMDAsIDB4MzRjZmNlMzcwMDAwMDAwMCwKKyAgICAweDM3NzRmOWRjMDAwMDAwMDAsIDB4MDkxZjNiMzMwMDAwMDAwMCwgMHg4NDQ0MzBjMjAwMDAwMDAwLAorICAgIDB4YmEyZmYyMmQwMDAwMDAwMCwgMHhiOTk0YzVjNjAwMDAwMDAwLCAweDg3ZmYwNzI5MDAwMDAwMDAsCisgICAgMHhmZWU0ZGJjYjAwMDAwMDAwLCAweGMwOGYxOTI0MDAwMDAwMDAsIDB4YzMzNDJlY2YwMDAwMDAwMCwKKyAgICAweGZkNWZlYzIwMDAwMDAwMDAsIDB4OTg4NTQ5ZjYwMDAwMDAwMCwgMHhhNmVlOGIxOTAwMDAwMDAwLAorICAgIDB4YTU1NWJjZjIwMDAwMDAwMCwgMHg5YjNlN2UxZDAwMDAwMDAwLCAweGUyMjVhMmZmMDAwMDAwMDAsCisgICAgMHhkYzRlNjAxMDAwMDAwMDAwLCAweGRmZjU1N2ZiMDAwMDAwMDAsIDB4ZTE5ZTk1MTQwMDAwMDAwMCwKKyAgICAweDZjYzU5ZWU1MDAwMDAwMDAsIDB4NTJhZTVjMGEwMDAwMDAwMCwgMHg1MTE1NmJlMTAwMDAwMDAwLAorICAgIDB4NmY3ZWE5MGUwMDAwMDAwMCwgMHgxNjY1NzVlYzAwMDAwMDAwLCAweDI4MGViNzAzMDAwMDAwMDAsCisgICAgMHgyYmI1ODBlODAwMDAwMDAwLCAweDE1ZGU0MjA3MDAwMDAwMDAsIDB4MDEwOTA1ZTYwMDAwMDAwMCwKKyAgICAweDNmNjJjNzA5MDAwMDAwMDAsIDB4M2NkOWYwZTIwMDAwMDAwMCwgMHgwMmIyMzIwZDAwMDAwMDAwLAorICAgIDB4N2JhOWVlZWYwMDAwMDAwMCwgMHg0NWMyMmMwMDAwMDAwMDAwLCAweDQ2NzkxYmViMDAwMDAwMDAsCisgICAgMHg3ODEyZDkwNDAwMDAwMDAwLCAweGY1NDlkMmY1MDAwMDAwMDAsIDB4Y2IyMjEwMWEwMDAwMDAwMCwKKyAgICAweGM4OTkyN2YxMDAwMDAwMDAsIDB4ZjZmMmU1MWUwMDAwMDAwMCwgMHg4ZmU5MzlmYzAwMDAwMDAwLAorICAgIDB4YjE4MmZiMTMwMDAwMDAwMCwgMHhiMjM5Y2NmODAwMDAwMDAwLCAweDhjNTIwZTE3MDAwMDAwMDAsCisgICAgMHhlOTg4YWJjMTAwMDAwMDAwLCAweGQ3ZTM2OTJlMDAwMDAwMDAsIDB4ZDQ1ODVlYzUwMDAwMDAwMCwKKyAgICAweGVhMzM5YzJhMDAwMDAwMDAsIDB4OTMyODQwYzgwMDAwMDAwMCwgMHhhZDQzODIyNzAwMDAwMDAwLAorICAgIDB4YWVmOGI1Y2MwMDAwMDAwMCwgMHg5MDkzNzcyMzAwMDAwMDAwLCAweDFkYzg3Y2QyMDAwMDAwMDAsCisgICAgMHgyM2EzYmUzZDAwMDAwMDAwLCAweDIwMTg4OWQ2MDAwMDAwMDAsIDB4MWU3MzRiMzkwMDAwMDAwMCwKKyAgICAweDY3Njg5N2RiMDAwMDAwMDAsIDB4NTkwMzU1MzQwMDAwMDAwMCwgMHg1YWI4NjJkZjAwMDAwMDAwLAorICAgIDB4NjRkM2EwMzAwMDAwMDAwMCwgMHhkMTBhNThhOTAwMDAwMDAwLCAweGVmNjE5YTQ2MDAwMDAwMDAsCisgICAgMHhlY2RhYWRhZDAwMDAwMDAwLCAweGQyYjE2ZjQyMDAwMDAwMDAsIDB4YWJhYWIzYTAwMDAwMDAwMCwKKyAgICAweDk1YzE3MTRmMDAwMDAwMDAsIDB4OTY3YTQ2YTQwMDAwMDAwMCwgMHhhODExODQ0YjAwMDAwMDAwLAorICAgIDB4MjU0YThmYmEwMDAwMDAwMCwgMHgxYjIxNGQ1NTAwMDAwMDAwLCAweDE4OWE3YWJlMDAwMDAwMDAsCisgICAgMHgyNmYxYjg1MTAwMDAwMDAwLCAweDVmZWE2NGIzMDAwMDAwMDAsIDB4NjE4MWE2NWMwMDAwMDAwMCwKKyAgICAweDYyM2E5MWI3MDAwMDAwMDAsIDB4NWM1MTUzNTgwMDAwMDAwMCwgMHgzOThiZjY4ZTAwMDAwMDAwLAorICAgIDB4MDdlMDM0NjEwMDAwMDAwMCwgMHgwNDViMDM4YTAwMDAwMDAwLCAweDNhMzBjMTY1MDAwMDAwMDAsCisgICAgMHg0MzJiMWQ4NzAwMDAwMDAwLCAweDdkNDBkZjY4MDAwMDAwMDAsIDB4N2VmYmU4ODMwMDAwMDAwMCwKKyAgICAweDQwOTAyYTZjMDAwMDAwMDAsIDB4Y2RjYjIxOWQwMDAwMDAwMCwgMHhmM2EwZTM3MjAwMDAwMDAwLAorICAgIDB4ZjAxYmQ0OTkwMDAwMDAwMCwgMHhjZTcwMTY3NjAwMDAwMDAwLCAweGI3NmJjYTk0MDAwMDAwMDAsCisgICAgMHg4OTAwMDg3YjAwMDAwMDAwLCAweDhhYmIzZjkwMDAwMDAwMDAsIDB4YjRkMGZkN2YwMDAwMDAwMCwKKyAgICAweGExMGViZjc4MDAwMDAwMDAsIDB4OWY2NTdkOTcwMDAwMDAwMCwgMHg5Y2RlNGE3YzAwMDAwMDAwLAorICAgIDB4YTJiNTg4OTMwMDAwMDAwMCwgMHhkYmFlNTQ3MTAwMDAwMDAwLCAweGU1YzU5NjllMDAwMDAwMDAsCisgICAgMHhlNjdlYTE3NTAwMDAwMDAwLCAweGQ4MTU2MzlhMDAwMDAwMDAsIDB4NTU0ZTY4NmIwMDAwMDAwMCwKKyAgICAweDZiMjVhYTg0MDAwMDAwMDAsIDB4Njg5ZTlkNmYwMDAwMDAwMCwgMHg1NmY1NWY4MDAwMDAwMDAwLAorICAgIDB4MmZlZTgzNjIwMDAwMDAwMCwgMHgxMTg1NDE4ZDAwMDAwMDAwLCAweDEyM2U3NjY2MDAwMDAwMDAsCisgICAgMHgyYzU1YjQ4OTAwMDAwMDAwLCAweDQ5OGYxMTVmMDAwMDAwMDAsIDB4NzdlNGQzYjAwMDAwMDAwMCwKKyAgICAweDc0NWZlNDViMDAwMDAwMDAsIDB4NGEzNDI2YjQwMDAwMDAwMCwgMHgzMzJmZmE1NjAwMDAwMDAwLAorICAgIDB4MGQ0NDM4YjkwMDAwMDAwMCwgMHgwZWZmMGY1MjAwMDAwMDAwLCAweDMwOTRjZGJkMDAwMDAwMDAsCisgICAgMHhiZGNmYzY0YzAwMDAwMDAwLCAweDgzYTQwNGEzMDAwMDAwMDAsIDB4ODAxZjMzNDgwMDAwMDAwMCwKKyAgICAweGJlNzRmMWE3MDAwMDAwMDAsIDB4Yzc2ZjJkNDUwMDAwMDAwMCwgMHhmOTA0ZWZhYTAwMDAwMDAwLAorICAgIDB4ZmFiZmQ4NDEwMDAwMDAwMCwgMHhjNGQ0MWFhZTAwMDAwMDAwLCAweDcxMGRlMjM3MDAwMDAwMDAsCisgICAgMHg0ZjY2MjBkODAwMDAwMDAwLCAweDRjZGQxNzMzMDAwMDAwMDAsIDB4NzJiNmQ1ZGMwMDAwMDAwMCwKKyAgICAweDBiYWQwOTNlMDAwMDAwMDAsIDB4MzVjNmNiZDEwMDAwMDAwMCwgMHgzNjdkZmMzYTAwMDAwMDAwLAorICAgIDB4MDgxNjNlZDUwMDAwMDAwMCwgMHg4NTRkMzUyNDAwMDAwMDAwLCAweGJiMjZmN2NiMDAwMDAwMDAsCisgICAgMHhiODlkYzAyMDAwMDAwMDAwLCAweDg2ZjYwMmNmMDAwMDAwMDAsIDB4ZmZlZGRlMmQwMDAwMDAwMCwKKyAgICAweGMxODYxY2MyMDAwMDAwMDAsIDB4YzIzZDJiMjkwMDAwMDAwMCwgMHhmYzU2ZTljNjAwMDAwMDAwLAorICAgIDB4OTk4YzRjMTAwMDAwMDAwMCwgMHhhN2U3OGVmZjAwMDAwMDAwLCAweGE0NWNiOTE0MDAwMDAwMDAsCisgICAgMHg5YTM3N2JmYjAwMDAwMDAwLCAweGUzMmNhNzE5MDAwMDAwMDAsIDB4ZGQ0NzY1ZjYwMDAwMDAwMCwKKyAgICAweGRlZmM1MjFkMDAwMDAwMDAsIDB4ZTA5NzkwZjIwMDAwMDAwMCwgMHg2ZGNjOWIwMzAwMDAwMDAwLAorICAgIDB4NTNhNzU5ZWMwMDAwMDAwMCwgMHg1MDFjNmUwNzAwMDAwMDAwLCAweDZlNzdhY2U4MDAwMDAwMDAsCisgICAgMHgxNzZjNzAwYTAwMDAwMDAwLCAweDI5MDdiMmU1MDAwMDAwMDAsIDB4MmFiYzg1MGUwMDAwMDAwMCwKKyAgICAweDE0ZDc0N2UxMDAwMDAwMDB9LAorICAgezB4MDAwMDAwMDAwMDAwMDAwMCwgMHhjMGRmOGVjMTAwMDAwMDAwLCAweGMxYjk2YzU4MDAwMDAwMDAsCisgICAgMHgwMTY2ZTI5OTAwMDAwMDAwLCAweDgyNzNkOWIwMDAwMDAwMDAsIDB4NDJhYzU3NzEwMDAwMDAwMCwKKyAgICAweDQzY2FiNWU4MDAwMDAwMDAsIDB4ODMxNTNiMjkwMDAwMDAwMCwgMHg0NWUxYzNiYTAwMDAwMDAwLAorICAgIDB4ODUzZTRkN2IwMDAwMDAwMCwgMHg4NDU4YWZlMjAwMDAwMDAwLCAweDQ0ODcyMTIzMDAwMDAwMDAsCisgICAgMHhjNzkyMWEwYTAwMDAwMDAwLCAweDA3NGQ5NGNiMDAwMDAwMDAsIDB4MDYyYjc2NTIwMDAwMDAwMCwKKyAgICAweGM2ZjRmODkzMDAwMDAwMDAsIDB4Y2JjNGY2YWUwMDAwMDAwMCwgMHgwYjFiNzg2ZjAwMDAwMDAwLAorICAgIDB4MGE3ZDlhZjYwMDAwMDAwMCwgMHhjYWEyMTQzNzAwMDAwMDAwLCAweDQ5YjcyZjFlMDAwMDAwMDAsCisgICAgMHg4OTY4YTFkZjAwMDAwMDAwLCAweDg4MGU0MzQ2MDAwMDAwMDAsIDB4NDhkMWNkODcwMDAwMDAwMCwKKyAgICAweDhlMjUzNTE0MDAwMDAwMDAsIDB4NGVmYWJiZDUwMDAwMDAwMCwgMHg0ZjljNTk0YzAwMDAwMDAwLAorICAgIDB4OGY0M2Q3OGQwMDAwMDAwMCwgMHgwYzU2ZWNhNDAwMDAwMDAwLCAweGNjODk2MjY1MDAwMDAwMDAsCisgICAgMHhjZGVmODBmYzAwMDAwMDAwLCAweDBkMzAwZTNkMDAwMDAwMDAsIDB4ZDc4ZjljODYwMDAwMDAwMCwKKyAgICAweDE3NTAxMjQ3MDAwMDAwMDAsIDB4MTYzNmYwZGUwMDAwMDAwMCwgMHhkNmU5N2UxZjAwMDAwMDAwLAorICAgIDB4NTVmYzQ1MzYwMDAwMDAwMCwgMHg5NTIzY2JmNzAwMDAwMDAwLCAweDk0NDUyOTZlMDAwMDAwMDAsCisgICAgMHg1NDlhYTdhZjAwMDAwMDAwLCAweDkyNmU1ZjNjMDAwMDAwMDAsIDB4NTJiMWQxZmQwMDAwMDAwMCwKKyAgICAweDUzZDczMzY0MDAwMDAwMDAsIDB4OTMwOGJkYTUwMDAwMDAwMCwgMHgxMDFkODY4YzAwMDAwMDAwLAorICAgIDB4ZDBjMjA4NGQwMDAwMDAwMCwgMHhkMWE0ZWFkNDAwMDAwMDAwLCAweDExN2I2NDE1MDAwMDAwMDAsCisgICAgMHgxYzRiNmEyODAwMDAwMDAwLCAweGRjOTRlNGU5MDAwMDAwMDAsIDB4ZGRmMjA2NzAwMDAwMDAwMCwKKyAgICAweDFkMmQ4OGIxMDAwMDAwMDAsIDB4OWUzOGIzOTgwMDAwMDAwMCwgMHg1ZWU3M2Q1OTAwMDAwMDAwLAorICAgIDB4NWY4MWRmYzAwMDAwMDAwMCwgMHg5ZjVlNTEwMTAwMDAwMDAwLCAweDU5YWFhOTkyMDAwMDAwMDAsCisgICAgMHg5OTc1Mjc1MzAwMDAwMDAwLCAweDk4MTNjNWNhMDAwMDAwMDAsIDB4NThjYzRiMGIwMDAwMDAwMCwKKyAgICAweGRiZDk3MDIyMDAwMDAwMDAsIDB4MWIwNmZlZTMwMDAwMDAwMCwgMHgxYTYwMWM3YTAwMDAwMDAwLAorICAgIDB4ZGFiZjkyYmIwMDAwMDAwMCwgMHhlZjE5NDhkNjAwMDAwMDAwLCAweDJmYzZjNjE3MDAwMDAwMDAsCisgICAgMHgyZWEwMjQ4ZTAwMDAwMDAwLCAweGVlN2ZhYTRmMDAwMDAwMDAsIDB4NmQ2YTkxNjYwMDAwMDAwMCwKKyAgICAweGFkYjUxZmE3MDAwMDAwMDAsIDB4YWNkM2ZkM2UwMDAwMDAwMCwgMHg2YzBjNzNmZjAwMDAwMDAwLAorICAgIDB4YWFmODhiNmMwMDAwMDAwMCwgMHg2YTI3MDVhZDAwMDAwMDAwLCAweDZiNDFlNzM0MDAwMDAwMDAsCisgICAgMHhhYjllNjlmNTAwMDAwMDAwLCAweDI4OGI1MmRjMDAwMDAwMDAsIDB4ZTg1NGRjMWQwMDAwMDAwMCwKKyAgICAweGU5MzIzZTg0MDAwMDAwMDAsIDB4MjllZGIwNDUwMDAwMDAwMCwgMHgyNGRkYmU3ODAwMDAwMDAwLAorICAgIDB4ZTQwMjMwYjkwMDAwMDAwMCwgMHhlNTY0ZDIyMDAwMDAwMDAwLCAweDI1YmI1Y2UxMDAwMDAwMDAsCisgICAgMHhhNmFlNjdjODAwMDAwMDAwLCAweDY2NzFlOTA5MDAwMDAwMDAsIDB4NjcxNzBiOTAwMDAwMDAwMCwKKyAgICAweGE3Yzg4NTUxMDAwMDAwMDAsIDB4NjEzYzdkYzIwMDAwMDAwMCwgMHhhMWUzZjMwMzAwMDAwMDAwLAorICAgIDB4YTA4NTExOWEwMDAwMDAwMCwgMHg2MDVhOWY1YjAwMDAwMDAwLCAweGUzNGZhNDcyMDAwMDAwMDAsCisgICAgMHgyMzkwMmFiMzAwMDAwMDAwLCAweDIyZjZjODJhMDAwMDAwMDAsIDB4ZTIyOTQ2ZWIwMDAwMDAwMCwKKyAgICAweDM4OTZkNDUwMDAwMDAwMDAsIDB4Zjg0OTVhOTEwMDAwMDAwMCwgMHhmOTJmYjgwODAwMDAwMDAwLAorICAgIDB4MzlmMDM2YzkwMDAwMDAwMCwgMHhiYWU1MGRlMDAwMDAwMDAwLCAweDdhM2E4MzIxMDAwMDAwMDAsCisgICAgMHg3YjVjNjFiODAwMDAwMDAwLCAweGJiODNlZjc5MDAwMDAwMDAsIDB4N2Q3NzE3ZWEwMDAwMDAwMCwKKyAgICAweGJkYTg5OTJiMDAwMDAwMDAsIDB4YmNjZTdiYjIwMDAwMDAwMCwgMHg3YzExZjU3MzAwMDAwMDAwLAorICAgIDB4ZmYwNGNlNWEwMDAwMDAwMCwgMHgzZmRiNDA5YjAwMDAwMDAwLCAweDNlYmRhMjAyMDAwMDAwMDAsCisgICAgMHhmZTYyMmNjMzAwMDAwMDAwLCAweGYzNTIyMmZlMDAwMDAwMDAsIDB4MzM4ZGFjM2YwMDAwMDAwMCwKKyAgICAweDMyZWI0ZWE2MDAwMDAwMDAsIDB4ZjIzNGMwNjcwMDAwMDAwMCwgMHg3MTIxZmI0ZTAwMDAwMDAwLAorICAgIDB4YjFmZTc1OGYwMDAwMDAwMCwgMHhiMDk4OTcxNjAwMDAwMDAwLCAweDcwNDcxOWQ3MDAwMDAwMDAsCisgICAgMHhiNmIzZTE0NDAwMDAwMDAwLCAweDc2NmM2Zjg1MDAwMDAwMDAsIDB4NzcwYThkMWMwMDAwMDAwMCwKKyAgICAweGI3ZDUwM2RkMDAwMDAwMDAsIDB4MzRjMDM4ZjQwMDAwMDAwMCwgMHhmNDFmYjYzNTAwMDAwMDAwLAorICAgIDB4ZjU3OTU0YWMwMDAwMDAwMCwgMHgzNWE2ZGE2ZDAwMDAwMDAwLCAweDlmMzVlMTc3MDAwMDAwMDAsCisgICAgMHg1ZmVhNmZiNjAwMDAwMDAwLCAweDVlOGM4ZDJmMDAwMDAwMDAsIDB4OWU1MzAzZWUwMDAwMDAwMCwKKyAgICAweDFkNDYzOGM3MDAwMDAwMDAsIDB4ZGQ5OWI2MDYwMDAwMDAwMCwgMHhkY2ZmNTQ5ZjAwMDAwMDAwLAorICAgIDB4MWMyMGRhNWUwMDAwMDAwMCwgMHhkYWQ0MjJjZDAwMDAwMDAwLCAweDFhMGJhYzBjMDAwMDAwMDAsCisgICAgMHgxYjZkNGU5NTAwMDAwMDAwLCAweGRiYjJjMDU0MDAwMDAwMDAsIDB4NThhN2ZiN2QwMDAwMDAwMCwKKyAgICAweDk4Nzg3NWJjMDAwMDAwMDAsIDB4OTkxZTk3MjUwMDAwMDAwMCwgMHg1OWMxMTllNDAwMDAwMDAwLAorICAgIDB4NTRmMTE3ZDkwMDAwMDAwMCwgMHg5NDJlOTkxODAwMDAwMDAwLCAweDk1NDg3YjgxMDAwMDAwMDAsCisgICAgMHg1NTk3ZjU0MDAwMDAwMDAwLCAweGQ2ODJjZTY5MDAwMDAwMDAsIDB4MTY1ZDQwYTgwMDAwMDAwMCwKKyAgICAweDE3M2JhMjMxMDAwMDAwMDAsIDB4ZDdlNDJjZjAwMDAwMDAwMCwgMHgxMTEwZDQ2MzAwMDAwMDAwLAorICAgIDB4ZDFjZjVhYTIwMDAwMDAwMCwgMHhkMGE5YjgzYjAwMDAwMDAwLCAweDEwNzYzNmZhMDAwMDAwMDAsCisgICAgMHg5MzYzMGRkMzAwMDAwMDAwLCAweDUzYmM4MzEyMDAwMDAwMDAsIDB4NTJkYTYxOGIwMDAwMDAwMCwKKyAgICAweDkyMDVlZjRhMDAwMDAwMDAsIDB4NDhiYTdkZjEwMDAwMDAwMCwgMHg4ODY1ZjMzMDAwMDAwMDAwLAorICAgIDB4ODkwMzExYTkwMDAwMDAwMCwgMHg0OWRjOWY2ODAwMDAwMDAwLCAweGNhYzlhNDQxMDAwMDAwMDAsCisgICAgMHgwYTE2MmE4MDAwMDAwMDAwLCAweDBiNzBjODE5MDAwMDAwMDAsIDB4Y2JhZjQ2ZDgwMDAwMDAwMCwKKyAgICAweDBkNWJiZTRiMDAwMDAwMDAsIDB4Y2Q4NDMwOGEwMDAwMDAwMCwgMHhjY2UyZDIxMzAwMDAwMDAwLAorICAgIDB4MGMzZDVjZDIwMDAwMDAwMCwgMHg4ZjI4NjdmYjAwMDAwMDAwLCAweDRmZjdlOTNhMDAwMDAwMDAsCisgICAgMHg0ZTkxMGJhMzAwMDAwMDAwLCAweDhlNGU4NTYyMDAwMDAwMDAsIDB4ODM3ZThiNWYwMDAwMDAwMCwKKyAgICAweDQzYTEwNTllMDAwMDAwMDAsIDB4NDJjN2U3MDcwMDAwMDAwMCwgMHg4MjE4NjljNjAwMDAwMDAwLAorICAgIDB4MDEwZDUyZWYwMDAwMDAwMCwgMHhjMWQyZGMyZTAwMDAwMDAwLCAweGMwYjQzZWI3MDAwMDAwMDAsCisgICAgMHgwMDZiYjA3NjAwMDAwMDAwLCAweGM2OWY0OGU1MDAwMDAwMDAsIDB4MDY0MGM2MjQwMDAwMDAwMCwKKyAgICAweDA3MjYyNGJkMDAwMDAwMDAsIDB4YzdmOWFhN2MwMDAwMDAwMCwgMHg0NGVjOTE1NTAwMDAwMDAwLAorICAgIDB4ODQzMzFmOTQwMDAwMDAwMCwgMHg4NTU1ZmQwZDAwMDAwMDAwLCAweDQ1OGE3M2NjMDAwMDAwMDAsCisgICAgMHg3MDJjYTlhMTAwMDAwMDAwLCAweGIwZjMyNzYwMDAwMDAwMDAsIDB4YjE5NWM1ZjkwMDAwMDAwMCwKKyAgICAweDcxNGE0YjM4MDAwMDAwMDAsIDB4ZjI1ZjcwMTEwMDAwMDAwMCwgMHgzMjgwZmVkMDAwMDAwMDAwLAorICAgIDB4MzNlNjFjNDkwMDAwMDAwMCwgMHhmMzM5OTI4ODAwMDAwMDAwLCAweDM1Y2Q2YTFiMDAwMDAwMDAsCisgICAgMHhmNTEyZTRkYTAwMDAwMDAwLCAweGY0NzQwNjQzMDAwMDAwMDAsIDB4MzRhYjg4ODIwMDAwMDAwMCwKKyAgICAweGI3YmViM2FiMDAwMDAwMDAsIDB4Nzc2MTNkNmEwMDAwMDAwMCwgMHg3NjA3ZGZmMzAwMDAwMDAwLAorICAgIDB4YjZkODUxMzIwMDAwMDAwMCwgMHhiYmU4NWYwZjAwMDAwMDAwLCAweDdiMzdkMWNlMDAwMDAwMDAsCisgICAgMHg3YTUxMzM1NzAwMDAwMDAwLCAweGJhOGViZDk2MDAwMDAwMDAsIDB4Mzk5Yjg2YmYwMDAwMDAwMCwKKyAgICAweGY5NDQwODdlMDAwMDAwMDAsIDB4ZjgyMmVhZTcwMDAwMDAwMCwgMHgzOGZkNjQyNjAwMDAwMDAwLAorICAgIDB4ZmUwOTljYjUwMDAwMDAwMCwgMHgzZWQ2MTI3NDAwMDAwMDAwLCAweDNmYjBmMGVkMDAwMDAwMDAsCisgICAgMHhmZjZmN2UyYzAwMDAwMDAwLCAweDdjN2E0NTA1MDAwMDAwMDAsIDB4YmNhNWNiYzQwMDAwMDAwMCwKKyAgICAweGJkYzMyOTVkMDAwMDAwMDAsIDB4N2QxY2E3OWMwMDAwMDAwMCwgMHhhN2EzMzUyNzAwMDAwMDAwLAorICAgIDB4Njc3Y2JiZTYwMDAwMDAwMCwgMHg2NjFhNTk3ZjAwMDAwMDAwLCAweGE2YzVkN2JlMDAwMDAwMDAsCisgICAgMHgyNWQwZWM5NzAwMDAwMDAwLCAweGU1MGY2MjU2MDAwMDAwMDAsIDB4ZTQ2OTgwY2YwMDAwMDAwMCwKKyAgICAweDI0YjYwZTBlMDAwMDAwMDAsIDB4ZTI0MmY2OWQwMDAwMDAwMCwgMHgyMjlkNzg1YzAwMDAwMDAwLAorICAgIDB4MjNmYjlhYzUwMDAwMDAwMCwgMHhlMzI0MTQwNDAwMDAwMDAwLCAweDYwMzEyZjJkMDAwMDAwMDAsCisgICAgMHhhMGVlYTFlYzAwMDAwMDAwLCAweGExODg0Mzc1MDAwMDAwMDAsIDB4NjE1N2NkYjQwMDAwMDAwMCwKKyAgICAweDZjNjdjMzg5MDAwMDAwMDAsIDB4YWNiODRkNDgwMDAwMDAwMCwgMHhhZGRlYWZkMTAwMDAwMDAwLAorICAgIDB4NmQwMTIxMTAwMDAwMDAwMCwgMHhlZTE0MWEzOTAwMDAwMDAwLCAweDJlY2I5NGY4MDAwMDAwMDAsCisgICAgMHgyZmFkNzY2MTAwMDAwMDAwLCAweGVmNzJmOGEwMDAwMDAwMDAsIDB4Mjk4NjAwMzMwMDAwMDAwMCwKKyAgICAweGU5NTk4ZWYyMDAwMDAwMDAsIDB4ZTgzZjZjNmIwMDAwMDAwMCwgMHgyOGUwZTJhYTAwMDAwMDAwLAorICAgIDB4YWJmNWQ5ODMwMDAwMDAwMCwgMHg2YjJhNTc0MjAwMDAwMDAwLCAweDZhNGNiNWRiMDAwMDAwMDAsCisgICAgMHhhYTkzM2IxYTAwMDAwMDAwfSwKKyAgIHsweDAwMDAwMDAwMDAwMDAwMDAsIDB4NmY0Y2E1OWIwMDAwMDAwMCwgMHg5ZjllM2JlYzAwMDAwMDAwLAorICAgIDB4ZjBkMjllNzcwMDAwMDAwMCwgMHg3ZjNiMDYwMzAwMDAwMDAwLCAweDEwNzdhMzk4MDAwMDAwMDAsCisgICAgMHhlMGE1M2RlZjAwMDAwMDAwLCAweDhmZTk5ODc0MDAwMDAwMDAsIDB4ZmU3NjBjMDYwMDAwMDAwMCwKKyAgICAweDkxM2FhOTlkMDAwMDAwMDAsIDB4NjFlODM3ZWEwMDAwMDAwMCwgMHgwZWE0OTI3MTAwMDAwMDAwLAorICAgIDB4ODE0ZDBhMDUwMDAwMDAwMCwgMHhlZTAxYWY5ZTAwMDAwMDAwLCAweDFlZDMzMWU5MDAwMDAwMDAsCisgICAgMHg3MTlmOTQ3MjAwMDAwMDAwLCAweGZjZWQxODBjMDAwMDAwMDAsIDB4OTNhMWJkOTcwMDAwMDAwMCwKKyAgICAweDYzNzMyM2UwMDAwMDAwMDAsIDB4MGMzZjg2N2IwMDAwMDAwMCwgMHg4M2Q2MWUwZjAwMDAwMDAwLAorICAgIDB4ZWM5YWJiOTQwMDAwMDAwMCwgMHgxYzQ4MjVlMzAwMDAwMDAwLCAweDczMDQ4MDc4MDAwMDAwMDAsCisgICAgMHgwMjliMTQwYTAwMDAwMDAwLCAweDZkZDdiMTkxMDAwMDAwMDAsIDB4OWQwNTJmZTYwMDAwMDAwMCwKKyAgICAweGYyNDk4YTdkMDAwMDAwMDAsIDB4N2RhMDEyMDkwMDAwMDAwMCwgMHgxMmVjYjc5MjAwMDAwMDAwLAorICAgIDB4ZTIzZTI5ZTUwMDAwMDAwMCwgMHg4ZDcyOGM3ZTAwMDAwMDAwLCAweGY4ZGIzMTE4MDAwMDAwMDAsCisgICAgMHg5Nzk3OTQ4MzAwMDAwMDAwLCAweDY3NDUwYWY0MDAwMDAwMDAsIDB4MDgwOWFmNmYwMDAwMDAwMCwKKyAgICAweDg3ZTAzNzFiMDAwMDAwMDAsIDB4ZThhYzkyODAwMDAwMDAwMCwgMHgxODdlMGNmNzAwMDAwMDAwLAorICAgIDB4NzczMmE5NmMwMDAwMDAwMCwgMHgwNmFkM2QxZTAwMDAwMDAwLCAweDY5ZTE5ODg1MDAwMDAwMDAsCisgICAgMHg5OTMzMDZmMjAwMDAwMDAwLCAweGY2N2ZhMzY5MDAwMDAwMDAsIDB4Nzk5NjNiMWQwMDAwMDAwMCwKKyAgICAweDE2ZGE5ZTg2MDAwMDAwMDAsIDB4ZTYwODAwZjEwMDAwMDAwMCwgMHg4OTQ0YTU2YTAwMDAwMDAwLAorICAgIDB4MDQzNjI5MTQwMDAwMDAwMCwgMHg2YjdhOGM4ZjAwMDAwMDAwLCAweDliYTgxMmY4MDAwMDAwMDAsCisgICAgMHhmNGU0Yjc2MzAwMDAwMDAwLCAweDdiMGQyZjE3MDAwMDAwMDAsIDB4MTQ0MThhOGMwMDAwMDAwMCwKKyAgICAweGU0OTMxNGZiMDAwMDAwMDAsIDB4OGJkZmIxNjAwMDAwMDAwMCwgMHhmYTQwMjUxMjAwMDAwMDAwLAorICAgIDB4OTUwYzgwODkwMDAwMDAwMCwgMHg2NWRlMWVmZTAwMDAwMDAwLCAweDBhOTJiYjY1MDAwMDAwMDAsCisgICAgMHg4NTdiMjMxMTAwMDAwMDAwLCAweGVhMzc4NjhhMDAwMDAwMDAsIDB4MWFlNTE4ZmQwMDAwMDAwMCwKKyAgICAweDc1YTliZDY2MDAwMDAwMDAsIDB4ZjBiNzYzMzAwMDAwMDAwMCwgMHg5ZmZiYzZhYjAwMDAwMDAwLAorICAgIDB4NmYyOTU4ZGMwMDAwMDAwMCwgMHgwMDY1ZmQ0NzAwMDAwMDAwLCAweDhmOGM2NTMzMDAwMDAwMDAsCisgICAgMHhlMGMwYzBhODAwMDAwMDAwLCAweDEwMTI1ZWRmMDAwMDAwMDAsIDB4N2Y1ZWZiNDQwMDAwMDAwMCwKKyAgICAweDBlYzE2ZjM2MDAwMDAwMDAsIDB4NjE4ZGNhYWQwMDAwMDAwMCwgMHg5MTVmNTRkYTAwMDAwMDAwLAorICAgIDB4ZmUxM2YxNDEwMDAwMDAwMCwgMHg3MWZhNjkzNTAwMDAwMDAwLCAweDFlYjZjY2FlMDAwMDAwMDAsCisgICAgMHhlZTY0NTJkOTAwMDAwMDAwLCAweDgxMjhmNzQyMDAwMDAwMDAsIDB4MGM1YTdiM2MwMDAwMDAwMCwKKyAgICAweDYzMTZkZWE3MDAwMDAwMDAsIDB4OTNjNDQwZDAwMDAwMDAwMCwgMHhmYzg4ZTU0YjAwMDAwMDAwLAorICAgIDB4NzM2MTdkM2YwMDAwMDAwMCwgMHgxYzJkZDhhNDAwMDAwMDAwLCAweGVjZmY0NmQzMDAwMDAwMDAsCisgICAgMHg4M2IzZTM0ODAwMDAwMDAwLCAweGYyMmM3NzNhMDAwMDAwMDAsIDB4OWQ2MGQyYTEwMDAwMDAwMCwKKyAgICAweDZkYjI0Y2Q2MDAwMDAwMDAsIDB4MDJmZWU5NGQwMDAwMDAwMCwgMHg4ZDE3NzEzOTAwMDAwMDAwLAorICAgIDB4ZTI1YmQ0YTIwMDAwMDAwMCwgMHgxMjg5NGFkNTAwMDAwMDAwLCAweDdkYzVlZjRlMDAwMDAwMDAsCisgICAgMHgwODZjNTIyODAwMDAwMDAwLCAweDY3MjBmN2IzMDAwMDAwMDAsIDB4OTdmMjY5YzQwMDAwMDAwMCwKKyAgICAweGY4YmVjYzVmMDAwMDAwMDAsIDB4Nzc1NzU0MmIwMDAwMDAwMCwgMHgxODFiZjFiMDAwMDAwMDAwLAorICAgIDB4ZThjOTZmYzcwMDAwMDAwMCwgMHg4Nzg1Y2E1YzAwMDAwMDAwLCAweGY2MWE1ZTJlMDAwMDAwMDAsCisgICAgMHg5OTU2ZmJiNTAwMDAwMDAwLCAweDY5ODQ2NWMyMDAwMDAwMDAsIDB4MDZjOGMwNTkwMDAwMDAwMCwKKyAgICAweDg5MjE1ODJkMDAwMDAwMDAsIDB4ZTY2ZGZkYjYwMDAwMDAwMCwgMHgxNmJmNjNjMTAwMDAwMDAwLAorICAgIDB4NzlmM2M2NWEwMDAwMDAwMCwgMHhmNDgxNGEyNDAwMDAwMDAwLCAweDliY2RlZmJmMDAwMDAwMDAsCisgICAgMHg2YjFmNzFjODAwMDAwMDAwLCAweDA0NTNkNDUzMDAwMDAwMDAsIDB4OGJiYTRjMjcwMDAwMDAwMCwKKyAgICAweGU0ZjZlOWJjMDAwMDAwMDAsIDB4MTQyNDc3Y2IwMDAwMDAwMCwgMHg3YjY4ZDI1MDAwMDAwMDAwLAorICAgIDB4MGFmNzQ2MjIwMDAwMDAwMCwgMHg2NWJiZTNiOTAwMDAwMDAwLCAweDk1Njk3ZGNlMDAwMDAwMDAsCisgICAgMHhmYTI1ZDg1NTAwMDAwMDAwLCAweDc1Y2M0MDIxMDAwMDAwMDAsIDB4MWE4MGU1YmEwMDAwMDAwMCwKKyAgICAweGVhNTI3YmNkMDAwMDAwMDAsIDB4ODUxZWRlNTYwMDAwMDAwMCwgMHhlMDZmYzc2MDAwMDAwMDAwLAorICAgIDB4OGYyMzYyZmIwMDAwMDAwMCwgMHg3ZmYxZmM4YzAwMDAwMDAwLCAweDEwYmQ1OTE3MDAwMDAwMDAsCisgICAgMHg5ZjU0YzE2MzAwMDAwMDAwLCAweGYwMTg2NGY4MDAwMDAwMDAsIDB4MDBjYWZhOGYwMDAwMDAwMCwKKyAgICAweDZmODY1ZjE0MDAwMDAwMDAsIDB4MWUxOWNiNjYwMDAwMDAwMCwgMHg3MTU1NmVmZDAwMDAwMDAwLAorICAgIDB4ODE4N2YwOGEwMDAwMDAwMCwgMHhlZWNiNTUxMTAwMDAwMDAwLCAweDYxMjJjZDY1MDAwMDAwMDAsCisgICAgMHgwZTZlNjhmZTAwMDAwMDAwLCAweGZlYmNmNjg5MDAwMDAwMDAsIDB4OTFmMDUzMTIwMDAwMDAwMCwKKyAgICAweDFjODJkZjZjMDAwMDAwMDAsIDB4NzNjZTdhZjcwMDAwMDAwMCwgMHg4MzFjZTQ4MDAwMDAwMDAwLAorICAgIDB4ZWM1MDQxMWIwMDAwMDAwMCwgMHg2M2I5ZDk2ZjAwMDAwMDAwLCAweDBjZjU3Y2Y0MDAwMDAwMDAsCisgICAgMHhmYzI3ZTI4MzAwMDAwMDAwLCAweDkzNmI0NzE4MDAwMDAwMDAsIDB4ZTJmNGQzNmEwMDAwMDAwMCwKKyAgICAweDhkYjg3NmYxMDAwMDAwMDAsIDB4N2Q2YWU4ODYwMDAwMDAwMCwgMHgxMjI2NGQxZDAwMDAwMDAwLAorICAgIDB4OWRjZmQ1NjkwMDAwMDAwMCwgMHhmMjgzNzBmMjAwMDAwMDAwLCAweDAyNTFlZTg1MDAwMDAwMDAsCisgICAgMHg2ZDFkNGIxZTAwMDAwMDAwLCAweDE4YjRmNjc4MDAwMDAwMDAsIDB4NzdmODUzZTMwMDAwMDAwMCwKKyAgICAweDg3MmFjZDk0MDAwMDAwMDAsIDB4ZTg2NjY4MGYwMDAwMDAwMCwgMHg2NzhmZjA3YjAwMDAwMDAwLAorICAgIDB4MDhjMzU1ZTAwMDAwMDAwMCwgMHhmODExY2I5NzAwMDAwMDAwLCAweDk3NWQ2ZTBjMDAwMDAwMDAsCisgICAgMHhlNmMyZmE3ZTAwMDAwMDAwLCAweDg5OGU1ZmU1MDAwMDAwMDAsIDB4Nzk1Y2MxOTIwMDAwMDAwMCwKKyAgICAweDE2MTA2NDA5MDAwMDAwMDAsIDB4OTlmOWZjN2QwMDAwMDAwMCwgMHhmNmI1NTllNjAwMDAwMDAwLAorICAgIDB4MDY2N2M3OTEwMDAwMDAwMCwgMHg2OTJiNjIwYTAwMDAwMDAwLCAweGU0NTllZTc0MDAwMDAwMDAsCisgICAgMHg4YjE1NGJlZjAwMDAwMDAwLCAweDdiYzdkNTk4MDAwMDAwMDAsIDB4MTQ4YjcwMDMwMDAwMDAwMCwKKyAgICAweDliNjJlODc3MDAwMDAwMDAsIDB4ZjQyZTRkZWMwMDAwMDAwMCwgMHgwNGZjZDM5YjAwMDAwMDAwLAorICAgIDB4NmJiMDc2MDAwMDAwMDAwMCwgMHgxYTJmZTI3MjAwMDAwMDAwLCAweDc1NjM0N2U5MDAwMDAwMDAsCisgICAgMHg4NWIxZDk5ZTAwMDAwMDAwLCAweGVhZmQ3YzA1MDAwMDAwMDAsIDB4NjUxNGU0NzEwMDAwMDAwMCwKKyAgICAweDBhNTg0MWVhMDAwMDAwMDAsIDB4ZmE4YWRmOWQwMDAwMDAwMCwgMHg5NWM2N2EwNjAwMDAwMDAwLAorICAgIDB4MTBkOGE0NTAwMDAwMDAwMCwgMHg3Zjk0MDFjYjAwMDAwMDAwLCAweDhmNDY5ZmJjMDAwMDAwMDAsCisgICAgMHhlMDBhM2EyNzAwMDAwMDAwLCAweDZmZTNhMjUzMDAwMDAwMDAsIDB4MDBhZjA3YzgwMDAwMDAwMCwKKyAgICAweGYwN2Q5OWJmMDAwMDAwMDAsIDB4OWYzMTNjMjQwMDAwMDAwMCwgMHhlZWFlYTg1NjAwMDAwMDAwLAorICAgIDB4ODFlMjBkY2QwMDAwMDAwMCwgMHg3MTMwOTNiYTAwMDAwMDAwLCAweDFlN2MzNjIxMDAwMDAwMDAsCisgICAgMHg5MTk1YWU1NTAwMDAwMDAwLCAweGZlZDkwYmNlMDAwMDAwMDAsIDB4MGUwYjk1YjkwMDAwMDAwMCwKKyAgICAweDYxNDczMDIyMDAwMDAwMDAsIDB4ZWMzNWJjNWMwMDAwMDAwMCwgMHg4Mzc5MTljNzAwMDAwMDAwLAorICAgIDB4NzNhYjg3YjAwMDAwMDAwMCwgMHgxY2U3MjIyYjAwMDAwMDAwLCAweDkzMGViYTVmMDAwMDAwMDAsCisgICAgMHhmYzQyMWZjNDAwMDAwMDAwLCAweDBjOTA4MWIzMDAwMDAwMDAsIDB4NjNkYzI0MjgwMDAwMDAwMCwKKyAgICAweDEyNDNiMDVhMDAwMDAwMDAsIDB4N2QwZjE1YzEwMDAwMDAwMCwgMHg4ZGRkOGJiNjAwMDAwMDAwLAorICAgIDB4ZTI5MTJlMmQwMDAwMDAwMCwgMHg2ZDc4YjY1OTAwMDAwMDAwLCAweDAyMzQxM2MyMDAwMDAwMDAsCisgICAgMHhmMmU2OGRiNTAwMDAwMDAwLCAweDlkYWEyODJlMDAwMDAwMDAsIDB4ZTgwMzk1NDgwMDAwMDAwMCwKKyAgICAweDg3NGYzMGQzMDAwMDAwMDAsIDB4Nzc5ZGFlYTQwMDAwMDAwMCwgMHgxOGQxMGIzZjAwMDAwMDAwLAorICAgIDB4OTczODkzNGIwMDAwMDAwMCwgMHhmODc0MzZkMDAwMDAwMDAwLCAweDA4YTZhOGE3MDAwMDAwMDAsCisgICAgMHg2N2VhMGQzYzAwMDAwMDAwLCAweDE2NzU5OTRlMDAwMDAwMDAsIDB4NzkzOTNjZDUwMDAwMDAwMCwKKyAgICAweDg5ZWJhMmEyMDAwMDAwMDAsIDB4ZTZhNzA3MzkwMDAwMDAwMCwgMHg2OTRlOWY0ZDAwMDAwMDAwLAorICAgIDB4MDYwMjNhZDYwMDAwMDAwMCwgMHhmNmQwYTRhMTAwMDAwMDAwLCAweDk5OWMwMTNhMDAwMDAwMDAsCisgICAgMHgxNGVlOGQ0NDAwMDAwMDAwLCAweDdiYTIyOGRmMDAwMDAwMDAsIDB4OGI3MGI2YTgwMDAwMDAwMCwKKyAgICAweGU0M2MxMzMzMDAwMDAwMDAsIDB4NmJkNThiNDcwMDAwMDAwMCwgMHgwNDk5MmVkYzAwMDAwMDAwLAorICAgIDB4ZjQ0YmIwYWIwMDAwMDAwMCwgMHg5YjA3MTUzMDAwMDAwMDAwLCAweGVhOTg4MTQyMDAwMDAwMDAsCisgICAgMHg4NWQ0MjRkOTAwMDAwMDAwLCAweDc1MDZiYWFlMDAwMDAwMDAsIDB4MWE0YTFmMzUwMDAwMDAwMCwKKyAgICAweDk1YTM4NzQxMDAwMDAwMDAsIDB4ZmFlZjIyZGEwMDAwMDAwMCwgMHgwYTNkYmNhZDAwMDAwMDAwLAorICAgIDB4NjU3MTE5MzYwMDAwMDAwMH0sCisgICB7MHgwMDAwMDAwMDAwMDAwMDAwLCAweDg1ZDk5NmRkMDAwMDAwMDAsIDB4NGJiNTVjNjAwMDAwMDAwMCwKKyAgICAweGNlNmNjYWJkMDAwMDAwMDAsIDB4OTY2YWI5YzAwMDAwMDAwMCwgMHgxM2IzMmYxZDAwMDAwMDAwLAorICAgIDB4ZGRkZmU1YTAwMDAwMDAwMCwgMHg1ODA2NzM3ZDAwMDAwMDAwLCAweDZkZDMwMzVhMDAwMDAwMDAsCisgICAgMHhlODBhOTU4NzAwMDAwMDAwLCAweDI2NjY1ZjNhMDAwMDAwMDAsIDB4YTNiZmM5ZTcwMDAwMDAwMCwKKyAgICAweGZiYjliYTlhMDAwMDAwMDAsIDB4N2U2MDJjNDcwMDAwMDAwMCwgMHhiMDBjZTZmYTAwMDAwMDAwLAorICAgIDB4MzVkNTcwMjcwMDAwMDAwMCwgMHhkYWE2MDdiNDAwMDAwMDAwLCAweDVmN2Y5MTY5MDAwMDAwMDAsCisgICAgMHg5MTEzNWJkNDAwMDAwMDAwLCAweDE0Y2FjZDA5MDAwMDAwMDAsIDB4NGNjY2JlNzQwMDAwMDAwMCwKKyAgICAweGM5MTUyOGE5MDAwMDAwMDAsIDB4MDc3OWUyMTQwMDAwMDAwMCwgMHg4MmEwNzRjOTAwMDAwMDAwLAorICAgIDB4Yjc3NTA0ZWUwMDAwMDAwMCwgMHgzMmFjOTIzMzAwMDAwMDAwLCAweGZjYzA1ODhlMDAwMDAwMDAsCisgICAgMHg3OTE5Y2U1MzAwMDAwMDAwLCAweDIxMWZiZDJlMDAwMDAwMDAsIDB4YTRjNjJiZjMwMDAwMDAwMCwKKyAgICAweDZhYWFlMTRlMDAwMDAwMDAsIDB4ZWY3Mzc3OTMwMDAwMDAwMCwgMHhmNTRiN2ViMzAwMDAwMDAwLAorICAgIDB4NzA5MmU4NmUwMDAwMDAwMCwgMHhiZWZlMjJkMzAwMDAwMDAwLCAweDNiMjdiNDBlMDAwMDAwMDAsCisgICAgMHg2MzIxYzc3MzAwMDAwMDAwLCAweGU2Zjg1MWFlMDAwMDAwMDAsIDB4Mjg5NDliMTMwMDAwMDAwMCwKKyAgICAweGFkNGQwZGNlMDAwMDAwMDAsIDB4OTg5ODdkZTkwMDAwMDAwMCwgMHgxZDQxZWIzNDAwMDAwMDAwLAorICAgIDB4ZDMyZDIxODkwMDAwMDAwMCwgMHg1NmY0Yjc1NDAwMDAwMDAwLCAweDBlZjJjNDI5MDAwMDAwMDAsCisgICAgMHg4YjJiNTJmNDAwMDAwMDAwLCAweDQ1NDc5ODQ5MDAwMDAwMDAsIDB4YzA5ZTBlOTQwMDAwMDAwMCwKKyAgICAweDJmZWQ3OTA3MDAwMDAwMDAsIDB4YWEzNGVmZGEwMDAwMDAwMCwgMHg2NDU4MjU2NzAwMDAwMDAwLAorICAgIDB4ZTE4MWIzYmEwMDAwMDAwMCwgMHhiOTg3YzBjNzAwMDAwMDAwLCAweDNjNWU1NjFhMDAwMDAwMDAsCisgICAgMHhmMjMyOWNhNzAwMDAwMDAwLCAweDc3ZWIwYTdhMDAwMDAwMDAsIDB4NDIzZTdhNWQwMDAwMDAwMCwKKyAgICAweGM3ZTdlYzgwMDAwMDAwMDAsIDB4MDk4YjI2M2QwMDAwMDAwMCwgMHg4YzUyYjBlMDAwMDAwMDAwLAorICAgIDB4ZDQ1NGMzOWQwMDAwMDAwMCwgMHg1MThkNTU0MDAwMDAwMDAwLCAweDlmZTE5ZmZkMDAwMDAwMDAsCisgICAgMHgxYTM4MDkyMDAwMDAwMDAwLCAweGFiOTE4ZGJkMDAwMDAwMDAsIDB4MmU0ODFiNjAwMDAwMDAwMCwKKyAgICAweGUwMjRkMWRkMDAwMDAwMDAsIDB4NjVmZDQ3MDAwMDAwMDAwMCwgMHgzZGZiMzQ3ZDAwMDAwMDAwLAorICAgIDB4YjgyMmEyYTAwMDAwMDAwMCwgMHg3NjRlNjgxZDAwMDAwMDAwLCAweGYzOTdmZWMwMDAwMDAwMDAsCisgICAgMHhjNjQyOGVlNzAwMDAwMDAwLCAweDQzOWIxODNhMDAwMDAwMDAsIDB4OGRmN2QyODcwMDAwMDAwMCwKKyAgICAweDA4MmU0NDVhMDAwMDAwMDAsIDB4NTAyODM3MjcwMDAwMDAwMCwgMHhkNWYxYTFmYTAwMDAwMDAwLAorICAgIDB4MWI5ZDZiNDcwMDAwMDAwMCwgMHg5ZTQ0ZmQ5YTAwMDAwMDAwLCAweDcxMzc4YTA5MDAwMDAwMDAsCisgICAgMHhmNGVlMWNkNDAwMDAwMDAwLCAweDNhODJkNjY5MDAwMDAwMDAsIDB4YmY1YjQwYjQwMDAwMDAwMCwKKyAgICAweGU3NWQzM2M5MDAwMDAwMDAsIDB4NjI4NGE1MTQwMDAwMDAwMCwgMHhhY2U4NmZhOTAwMDAwMDAwLAorICAgIDB4MjkzMWY5NzQwMDAwMDAwMCwgMHgxY2U0ODk1MzAwMDAwMDAwLCAweDk5M2QxZjhlMDAwMDAwMDAsCisgICAgMHg1NzUxZDUzMzAwMDAwMDAwLCAweGQyODg0M2VlMDAwMDAwMDAsIDB4OGE4ZTMwOTMwMDAwMDAwMCwKKyAgICAweDBmNTdhNjRlMDAwMDAwMDAsIDB4YzEzYjZjZjMwMDAwMDAwMCwgMHg0NGUyZmEyZTAwMDAwMDAwLAorICAgIDB4NWVkYWYzMGUwMDAwMDAwMCwgMHhkYjAzNjVkMzAwMDAwMDAwLCAweDE1NmZhZjZlMDAwMDAwMDAsCisgICAgMHg5MGI2MzliMzAwMDAwMDAwLCAweGM4YjA0YWNlMDAwMDAwMDAsIDB4NGQ2OWRjMTMwMDAwMDAwMCwKKyAgICAweDgzMDUxNmFlMDAwMDAwMDAsIDB4MDZkYzgwNzMwMDAwMDAwMCwgMHgzMzA5ZjA1NDAwMDAwMDAwLAorICAgIDB4YjZkMDY2ODkwMDAwMDAwMCwgMHg3OGJjYWMzNDAwMDAwMDAwLCAweGZkNjUzYWU5MDAwMDAwMDAsCisgICAgMHhhNTYzNDk5NDAwMDAwMDAwLCAweDIwYmFkZjQ5MDAwMDAwMDAsIDB4ZWVkNjE1ZjQwMDAwMDAwMCwKKyAgICAweDZiMGY4MzI5MDAwMDAwMDAsIDB4ODQ3Y2Y0YmEwMDAwMDAwMCwgMHgwMWE1NjI2NzAwMDAwMDAwLAorICAgIDB4Y2ZjOWE4ZGEwMDAwMDAwMCwgMHg0YTEwM2UwNzAwMDAwMDAwLCAweDEyMTY0ZDdhMDAwMDAwMDAsCisgICAgMHg5N2NmZGJhNzAwMDAwMDAwLCAweDU5YTMxMTFhMDAwMDAwMDAsIDB4ZGM3YTg3YzcwMDAwMDAwMCwKKyAgICAweGU5YWZmN2UwMDAwMDAwMDAsIDB4NmM3NjYxM2QwMDAwMDAwMCwgMHhhMjFhYWI4MDAwMDAwMDAwLAorICAgIDB4MjdjMzNkNWQwMDAwMDAwMCwgMHg3ZmM1NGUyMDAwMDAwMDAwLCAweGZhMWNkOGZkMDAwMDAwMDAsCisgICAgMHgzNDcwMTI0MDAwMDAwMDAwLCAweGIxYTk4NDlkMDAwMDAwMDAsIDB4MTcyNTZhYTAwMDAwMDAwMCwKKyAgICAweDkyZmNmYzdkMDAwMDAwMDAsIDB4NWM5MDM2YzAwMDAwMDAwMCwgMHhkOTQ5YTAxZDAwMDAwMDAwLAorICAgIDB4ODE0ZmQzNjAwMDAwMDAwMCwgMHgwNDk2NDViZDAwMDAwMDAwLCAweGNhZmE4ZjAwMDAwMDAwMDAsCisgICAgMHg0ZjIzMTlkZDAwMDAwMDAwLCAweDdhZjY2OWZhMDAwMDAwMDAsIDB4ZmYyZmZmMjcwMDAwMDAwMCwKKyAgICAweDMxNDMzNTlhMDAwMDAwMDAsIDB4YjQ5YWEzNDcwMDAwMDAwMCwgMHhlYzljZDAzYTAwMDAwMDAwLAorICAgIDB4Njk0NTQ2ZTcwMDAwMDAwMCwgMHhhNzI5OGM1YTAwMDAwMDAwLCAweDIyZjAxYTg3MDAwMDAwMDAsCisgICAgMHhjZDgzNmQxNDAwMDAwMDAwLCAweDQ4NWFmYmM5MDAwMDAwMDAsIDB4ODYzNjMxNzQwMDAwMDAwMCwKKyAgICAweDAzZWZhN2E5MDAwMDAwMDAsIDB4NWJlOWQ0ZDQwMDAwMDAwMCwgMHhkZTMwNDIwOTAwMDAwMDAwLAorICAgIDB4MTA1Yzg4YjQwMDAwMDAwMCwgMHg5NTg1MWU2OTAwMDAwMDAwLCAweGEwNTA2ZTRlMDAwMDAwMDAsCisgICAgMHgyNTg5Zjg5MzAwMDAwMDAwLCAweGViZTUzMjJlMDAwMDAwMDAsIDB4NmUzY2E0ZjMwMDAwMDAwMCwKKyAgICAweDM2M2FkNzhlMDAwMDAwMDAsIDB4YjNlMzQxNTMwMDAwMDAwMCwgMHg3ZDhmOGJlZTAwMDAwMDAwLAorICAgIDB4Zjg1NjFkMzMwMDAwMDAwMCwgMHhlMjZlMTQxMzAwMDAwMDAwLCAweDY3Yjc4MmNlMDAwMDAwMDAsCisgICAgMHhhOWRiNDg3MzAwMDAwMDAwLCAweDJjMDJkZWFlMDAwMDAwMDAsIDB4NzQwNGFkZDMwMDAwMDAwMCwKKyAgICAweGYxZGQzYjBlMDAwMDAwMDAsIDB4M2ZiMWYxYjMwMDAwMDAwMCwgMHhiYTY4Njc2ZTAwMDAwMDAwLAorICAgIDB4OGZiZDE3NDkwMDAwMDAwMCwgMHgwYTY0ODE5NDAwMDAwMDAwLCAweGM0MDg0YjI5MDAwMDAwMDAsCisgICAgMHg0MWQxZGRmNDAwMDAwMDAwLCAweDE5ZDdhZTg5MDAwMDAwMDAsIDB4OWMwZTM4NTQwMDAwMDAwMCwKKyAgICAweDUyNjJmMmU5MDAwMDAwMDAsIDB4ZDdiYjY0MzQwMDAwMDAwMCwgMHgzOGM4MTNhNzAwMDAwMDAwLAorICAgIDB4YmQxMTg1N2EwMDAwMDAwMCwgMHg3MzdkNGZjNzAwMDAwMDAwLCAweGY2YTRkOTFhMDAwMDAwMDAsCisgICAgMHhhZWEyYWE2NzAwMDAwMDAwLCAweDJiN2IzY2JhMDAwMDAwMDAsIDB4ZTUxN2Y2MDcwMDAwMDAwMCwKKyAgICAweDYwY2U2MGRhMDAwMDAwMDAsIDB4NTUxYjEwZmQwMDAwMDAwMCwgMHhkMGMyODYyMDAwMDAwMDAwLAorICAgIDB4MWVhZTRjOWQwMDAwMDAwMCwgMHg5Yjc3ZGE0MDAwMDAwMDAwLCAweGMzNzFhOTNkMDAwMDAwMDAsCisgICAgMHg0NmE4M2ZlMDAwMDAwMDAwLCAweDg4YzRmNTVkMDAwMDAwMDAsIDB4MGQxZDYzODAwMDAwMDAwMCwKKyAgICAweGJjYjRlNzFkMDAwMDAwMDAsIDB4Mzk2ZDcxYzAwMDAwMDAwMCwgMHhmNzAxYmI3ZDAwMDAwMDAwLAorICAgIDB4NzJkODJkYTAwMDAwMDAwMCwgMHgyYWRlNWVkZDAwMDAwMDAwLCAweGFmMDdjODAwMDAwMDAwMDAsCisgICAgMHg2MTZiMDJiZDAwMDAwMDAwLCAweGU0YjI5NDYwMDAwMDAwMDAsIDB4ZDE2N2U0NDcwMDAwMDAwMCwKKyAgICAweDU0YmU3MjlhMDAwMDAwMDAsIDB4OWFkMmI4MjcwMDAwMDAwMCwgMHgxZjBiMmVmYTAwMDAwMDAwLAorICAgIDB4NDcwZDVkODcwMDAwMDAwMCwgMHhjMmQ0Y2I1YTAwMDAwMDAwLCAweDBjYjgwMWU3MDAwMDAwMDAsCisgICAgMHg4OTYxOTczYTAwMDAwMDAwLCAweDY2MTJlMGE5MDAwMDAwMDAsIDB4ZTNjYjc2NzQwMDAwMDAwMCwKKyAgICAweDJkYTdiY2M5MDAwMDAwMDAsIDB4YTg3ZTJhMTQwMDAwMDAwMCwgMHhmMDc4NTk2OTAwMDAwMDAwLAorICAgIDB4NzVhMWNmYjQwMDAwMDAwMCwgMHhiYmNkMDUwOTAwMDAwMDAwLCAweDNlMTQ5M2Q0MDAwMDAwMDAsCisgICAgMHgwYmMxZTNmMzAwMDAwMDAwLCAweDhlMTg3NTJlMDAwMDAwMDAsIDB4NDA3NGJmOTMwMDAwMDAwMCwKKyAgICAweGM1YWQyOTRlMDAwMDAwMDAsIDB4OWRhYjVhMzMwMDAwMDAwMCwgMHgxODcyY2NlZTAwMDAwMDAwLAorICAgIDB4ZDYxZTA2NTMwMDAwMDAwMCwgMHg1M2M3OTA4ZTAwMDAwMDAwLCAweDQ5ZmY5OWFlMDAwMDAwMDAsCisgICAgMHhjYzI2MGY3MzAwMDAwMDAwLCAweDAyNGFjNWNlMDAwMDAwMDAsIDB4ODc5MzUzMTMwMDAwMDAwMCwKKyAgICAweGRmOTUyMDZlMDAwMDAwMDAsIDB4NWE0Y2I2YjMwMDAwMDAwMCwgMHg5NDIwN2MwZTAwMDAwMDAwLAorICAgIDB4MTFmOWVhZDMwMDAwMDAwMCwgMHgyNDJjOWFmNDAwMDAwMDAwLCAweGExZjUwYzI5MDAwMDAwMDAsCisgICAgMHg2Zjk5YzY5NDAwMDAwMDAwLCAweGVhNDA1MDQ5MDAwMDAwMDAsIDB4YjI0NjIzMzQwMDAwMDAwMCwKKyAgICAweDM3OWZiNWU5MDAwMDAwMDAsIDB4ZjlmMzdmNTQwMDAwMDAwMCwgMHg3YzJhZTk4OTAwMDAwMDAwLAorICAgIDB4OTM1OTllMWEwMDAwMDAwMCwgMHgxNjgwMDhjNzAwMDAwMDAwLCAweGQ4ZWNjMjdhMDAwMDAwMDAsCisgICAgMHg1ZDM1NTRhNzAwMDAwMDAwLCAweDA1MzMyN2RhMDAwMDAwMDAsIDB4ODBlYWIxMDcwMDAwMDAwMCwKKyAgICAweDRlODY3YmJhMDAwMDAwMDAsIDB4Y2I1ZmVkNjcwMDAwMDAwMCwgMHhmZThhOWQ0MDAwMDAwMDAwLAorICAgIDB4N2I1MzBiOWQwMDAwMDAwMCwgMHhiNTNmYzEyMDAwMDAwMDAwLCAweDMwZTY1N2ZkMDAwMDAwMDAsCisgICAgMHg2OGUwMjQ4MDAwMDAwMDAwLCAweGVkMzliMjVkMDAwMDAwMDAsIDB4MjM1NTc4ZTAwMDAwMDAwMCwKKyAgICAweGE2OGNlZTNkMDAwMDAwMDB9LAorICAgezB4MDAwMDAwMDAwMDAwMDAwMCwgMHg3NmUxMGY5ZDAwMDAwMDAwLCAweGFkYzQ2ZWUxMDAwMDAwMDAsCisgICAgMHhkYjI1NjE3YzAwMDAwMDAwLCAweDFiOGZhYzE5MDAwMDAwMDAsIDB4NmQ2ZWEzODQwMDAwMDAwMCwKKyAgICAweGI2NGJjMmY4MDAwMDAwMDAsIDB4YzBhYWNkNjUwMDAwMDAwMCwgMHgzNjFlNTkzMzAwMDAwMDAwLAorICAgIDB4NDBmZjU2YWUwMDAwMDAwMCwgMHg5YmRhMzdkMjAwMDAwMDAwLCAweGVkM2IzODRmMDAwMDAwMDAsCisgICAgMHgyZDkxZjUyYTAwMDAwMDAwLCAweDViNzBmYWI3MDAwMDAwMDAsIDB4ODA1NTliY2IwMDAwMDAwMCwKKyAgICAweGY2YjQ5NDU2MDAwMDAwMDAsIDB4NmMzY2IyNjYwMDAwMDAwMCwgMHgxYWRkYmRmYjAwMDAwMDAwLAorICAgIDB4YzFmOGRjODcwMDAwMDAwMCwgMHhiNzE5ZDMxYTAwMDAwMDAwLCAweDc3YjMxZTdmMDAwMDAwMDAsCisgICAgMHgwMTUyMTFlMjAwMDAwMDAwLCAweGRhNzc3MDllMDAwMDAwMDAsIDB4YWM5NjdmMDMwMDAwMDAwMCwKKyAgICAweDVhMjJlYjU1MDAwMDAwMDAsIDB4MmNjM2U0YzgwMDAwMDAwMCwgMHhmN2U2ODViNDAwMDAwMDAwLAorICAgIDB4ODEwNzhhMjkwMDAwMDAwMCwgMHg0MWFkNDc0YzAwMDAwMDAwLCAweDM3NGM0OGQxMDAwMDAwMDAsCisgICAgMHhlYzY5MjlhZDAwMDAwMDAwLCAweDlhODgyNjMwMDAwMDAwMDAsIDB4ZDg3ODY0Y2QwMDAwMDAwMCwKKyAgICAweGFlOTk2YjUwMDAwMDAwMDAsIDB4NzViYzBhMmMwMDAwMDAwMCwgMHgwMzVkMDViMTAwMDAwMDAwLAorICAgIDB4YzNmN2M4ZDQwMDAwMDAwMCwgMHhiNTE2Yzc0OTAwMDAwMDAwLCAweDZlMzNhNjM1MDAwMDAwMDAsCisgICAgMHgxOGQyYTlhODAwMDAwMDAwLCAweGVlNjYzZGZlMDAwMDAwMDAsIDB4OTg4NzMyNjMwMDAwMDAwMCwKKyAgICAweDQzYTI1MzFmMDAwMDAwMDAsIDB4MzU0MzVjODIwMDAwMDAwMCwgMHhmNWU5OTFlNzAwMDAwMDAwLAorICAgIDB4ODMwODllN2EwMDAwMDAwMCwgMHg1ODJkZmYwNjAwMDAwMDAwLCAweDJlY2NmMDliMDAwMDAwMDAsCisgICAgMHhiNDQ0ZDZhYjAwMDAwMDAwLCAweGMyYTVkOTM2MDAwMDAwMDAsIDB4MTk4MGI4NGEwMDAwMDAwMCwKKyAgICAweDZmNjFiN2Q3MDAwMDAwMDAsIDB4YWZjYjdhYjIwMDAwMDAwMCwgMHhkOTJhNzUyZjAwMDAwMDAwLAorICAgIDB4MDIwZjE0NTMwMDAwMDAwMCwgMHg3NGVlMWJjZTAwMDAwMDAwLCAweDgyNWE4Zjk4MDAwMDAwMDAsCisgICAgMHhmNGJiODAwNTAwMDAwMDAwLCAweDJmOWVlMTc5MDAwMDAwMDAsIDB4NTk3ZmVlZTQwMDAwMDAwMCwKKyAgICAweDk5ZDUyMzgxMDAwMDAwMDAsIDB4ZWYzNDJjMWMwMDAwMDAwMCwgMHgzNDExNGQ2MDAwMDAwMDAwLAorICAgIDB4NDJmMDQyZmQwMDAwMDAwMCwgMHhmMWY3Yjk0MTAwMDAwMDAwLCAweDg3MTZiNmRjMDAwMDAwMDAsCisgICAgMHg1YzMzZDdhMDAwMDAwMDAwLCAweDJhZDJkODNkMDAwMDAwMDAsIDB4ZWE3ODE1NTgwMDAwMDAwMCwKKyAgICAweDljOTkxYWM1MDAwMDAwMDAsIDB4NDdiYzdiYjkwMDAwMDAwMCwgMHgzMTVkNzQyNDAwMDAwMDAwLAorICAgIDB4YzdlOWUwNzIwMDAwMDAwMCwgMHhiMTA4ZWZlZjAwMDAwMDAwLCAweDZhMmQ4ZTkzMDAwMDAwMDAsCisgICAgMHgxY2NjODEwZTAwMDAwMDAwLCAweGRjNjY0YzZiMDAwMDAwMDAsIDB4YWE4NzQzZjYwMDAwMDAwMCwKKyAgICAweDcxYTIyMjhhMDAwMDAwMDAsIDB4MDc0MzJkMTcwMDAwMDAwMCwgMHg5ZGNiMGIyNzAwMDAwMDAwLAorICAgIDB4ZWIyYTA0YmEwMDAwMDAwMCwgMHgzMDBmNjVjNjAwMDAwMDAwLCAweDQ2ZWU2YTViMDAwMDAwMDAsCisgICAgMHg4NjQ0YTczZTAwMDAwMDAwLCAweGYwYTVhOGEzMDAwMDAwMDAsIDB4MmI4MGM5ZGYwMDAwMDAwMCwKKyAgICAweDVkNjFjNjQyMDAwMDAwMDAsIDB4YWJkNTUyMTQwMDAwMDAwMCwgMHhkZDM0NWQ4OTAwMDAwMDAwLAorICAgIDB4MDYxMTNjZjUwMDAwMDAwMCwgMHg3MGYwMzM2ODAwMDAwMDAwLCAweGIwNWFmZTBkMDAwMDAwMDAsCisgICAgMHhjNmJiZjE5MDAwMDAwMDAwLCAweDFkOWU5MGVjMDAwMDAwMDAsIDB4NmI3ZjlmNzEwMDAwMDAwMCwKKyAgICAweDI5OGZkZDhjMDAwMDAwMDAsIDB4NWY2ZWQyMTEwMDAwMDAwMCwgMHg4NDRiYjM2ZDAwMDAwMDAwLAorICAgIDB4ZjJhYWJjZjAwMDAwMDAwMCwgMHgzMjAwNzE5NTAwMDAwMDAwLCAweDQ0ZTE3ZTA4MDAwMDAwMDAsCisgICAgMHg5ZmM0MWY3NDAwMDAwMDAwLCAweGU5MjUxMGU5MDAwMDAwMDAsIDB4MWY5MTg0YmYwMDAwMDAwMCwKKyAgICAweDY5NzA4YjIyMDAwMDAwMDAsIDB4YjI1NWVhNWUwMDAwMDAwMCwgMHhjNGI0ZTVjMzAwMDAwMDAwLAorICAgIDB4MDQxZTI4YTYwMDAwMDAwMCwgMHg3MmZmMjczYjAwMDAwMDAwLCAweGE5ZGE0NjQ3MDAwMDAwMDAsCisgICAgMHhkZjNiNDlkYTAwMDAwMDAwLCAweDQ1YjM2ZmVhMDAwMDAwMDAsIDB4MzM1MjYwNzcwMDAwMDAwMCwKKyAgICAweGU4NzcwMTBiMDAwMDAwMDAsIDB4OWU5NjBlOTYwMDAwMDAwMCwgMHg1ZTNjYzNmMzAwMDAwMDAwLAorICAgIDB4MjhkZGNjNmUwMDAwMDAwMCwgMHhmM2Y4YWQxMjAwMDAwMDAwLCAweDg1MTlhMjhmMDAwMDAwMDAsCisgICAgMHg3M2FkMzZkOTAwMDAwMDAwLCAweDA1NGMzOTQ0MDAwMDAwMDAsIDB4ZGU2OTU4MzgwMDAwMDAwMCwKKyAgICAweGE4ODg1N2E1MDAwMDAwMDAsIDB4NjgyMjlhYzAwMDAwMDAwMCwgMHgxZWMzOTU1ZDAwMDAwMDAwLAorICAgIDB4YzVlNmY0MjEwMDAwMDAwMCwgMHhiMzA3ZmJiYzAwMDAwMDAwLCAweGUyZWY3MzgzMDAwMDAwMDAsCisgICAgMHg5NDBlN2MxZTAwMDAwMDAwLCAweDRmMmIxZDYyMDAwMDAwMDAsIDB4MzljYTEyZmYwMDAwMDAwMCwKKyAgICAweGY5NjBkZjlhMDAwMDAwMDAsIDB4OGY4MWQwMDcwMDAwMDAwMCwgMHg1NGE0YjE3YjAwMDAwMDAwLAorICAgIDB4MjI0NWJlZTYwMDAwMDAwMCwgMHhkNGYxMmFiMDAwMDAwMDAwLCAweGEyMTAyNTJkMDAwMDAwMDAsCisgICAgMHg3OTM1NDQ1MTAwMDAwMDAwLCAweDBmZDQ0YmNjMDAwMDAwMDAsIDB4Y2Y3ZTg2YTkwMDAwMDAwMCwKKyAgICAweGI5OWY4OTM0MDAwMDAwMDAsIDB4NjJiYWU4NDgwMDAwMDAwMCwgMHgxNDViZTdkNTAwMDAwMDAwLAorICAgIDB4OGVkM2MxZTUwMDAwMDAwMCwgMHhmODMyY2U3ODAwMDAwMDAwLCAweDIzMTdhZjA0MDAwMDAwMDAsCisgICAgMHg1NWY2YTA5OTAwMDAwMDAwLCAweDk1NWM2ZGZjMDAwMDAwMDAsIDB4ZTNiZDYyNjEwMDAwMDAwMCwKKyAgICAweDM4OTgwMzFkMDAwMDAwMDAsIDB4NGU3OTBjODAwMDAwMDAwMCwgMHhiOGNkOThkNjAwMDAwMDAwLAorICAgIDB4Y2UyYzk3NGIwMDAwMDAwMCwgMHgxNTA5ZjYzNzAwMDAwMDAwLCAweDYzZThmOWFhMDAwMDAwMDAsCisgICAgMHhhMzQyMzRjZjAwMDAwMDAwLCAweGQ1YTMzYjUyMDAwMDAwMDAsIDB4MGU4NjVhMmUwMDAwMDAwMCwKKyAgICAweDc4Njc1NWIzMDAwMDAwMDAsIDB4M2E5NzE3NGUwMDAwMDAwMCwgMHg0Yzc2MThkMzAwMDAwMDAwLAorICAgIDB4OTc1Mzc5YWYwMDAwMDAwMCwgMHhlMWIyNzYzMjAwMDAwMDAwLCAweDIxMThiYjU3MDAwMDAwMDAsCisgICAgMHg1N2Y5YjRjYTAwMDAwMDAwLCAweDhjZGNkNWI2MDAwMDAwMDAsIDB4ZmEzZGRhMmIwMDAwMDAwMCwKKyAgICAweDBjODk0ZTdkMDAwMDAwMDAsIDB4N2E2ODQxZTAwMDAwMDAwMCwgMHhhMTRkMjA5YzAwMDAwMDAwLAorICAgIDB4ZDdhYzJmMDEwMDAwMDAwMCwgMHgxNzA2ZTI2NDAwMDAwMDAwLCAweDYxZTdlZGY5MDAwMDAwMDAsCisgICAgMHhiYWMyOGM4NTAwMDAwMDAwLCAweGNjMjM4MzE4MDAwMDAwMDAsIDB4NTZhYmE1MjgwMDAwMDAwMCwKKyAgICAweDIwNGFhYWI1MDAwMDAwMDAsIDB4ZmI2ZmNiYzkwMDAwMDAwMCwgMHg4ZDhlYzQ1NDAwMDAwMDAwLAorICAgIDB4NGQyNDA5MzEwMDAwMDAwMCwgMHgzYmM1MDZhYzAwMDAwMDAwLCAweGUwZTA2N2QwMDAwMDAwMDAsCisgICAgMHg5NjAxNjg0ZDAwMDAwMDAwLCAweDYwYjVmYzFiMDAwMDAwMDAsIDB4MTY1NGYzODYwMDAwMDAwMCwKKyAgICAweGNkNzE5MmZhMDAwMDAwMDAsIDB4YmI5MDlkNjcwMDAwMDAwMCwgMHg3YjNhNTAwMjAwMDAwMDAwLAorICAgIDB4MGRkYjVmOWYwMDAwMDAwMCwgMHhkNmZlM2VlMzAwMDAwMDAwLCAweGEwMWYzMTdlMDAwMDAwMDAsCisgICAgMHgxMzE4Y2FjMjAwMDAwMDAwLCAweDY1ZjljNTVmMDAwMDAwMDAsIDB4YmVkY2E0MjMwMDAwMDAwMCwKKyAgICAweGM4M2RhYmJlMDAwMDAwMDAsIDB4MDg5NzY2ZGIwMDAwMDAwMCwgMHg3ZTc2Njk0NjAwMDAwMDAwLAorICAgIDB4YTU1MzA4M2EwMDAwMDAwMCwgMHhkM2IyMDdhNzAwMDAwMDAwLCAweDI1MDY5M2YxMDAwMDAwMDAsCisgICAgMHg1M2U3OWM2YzAwMDAwMDAwLCAweDg4YzJmZDEwMDAwMDAwMDAsIDB4ZmUyM2YyOGQwMDAwMDAwMCwKKyAgICAweDNlODkzZmU4MDAwMDAwMDAsIDB4NDg2ODMwNzUwMDAwMDAwMCwgMHg5MzRkNTEwOTAwMDAwMDAwLAorICAgIDB4ZTVhYzVlOTQwMDAwMDAwMCwgMHg3ZjI0NzhhNDAwMDAwMDAwLCAweDA5YzU3NzM5MDAwMDAwMDAsCisgICAgMHhkMmUwMTY0NTAwMDAwMDAwLCAweGE0MDExOWQ4MDAwMDAwMDAsIDB4NjRhYmQ0YmQwMDAwMDAwMCwKKyAgICAweDEyNGFkYjIwMDAwMDAwMDAsIDB4Yzk2ZmJhNWMwMDAwMDAwMCwgMHhiZjhlYjVjMTAwMDAwMDAwLAorICAgIDB4NDkzYTIxOTcwMDAwMDAwMCwgMHgzZmRiMmUwYTAwMDAwMDAwLCAweGU0ZmU0Zjc2MDAwMDAwMDAsCisgICAgMHg5MjFmNDBlYjAwMDAwMDAwLCAweDUyYjU4ZDhlMDAwMDAwMDAsIDB4MjQ1NDgyMTMwMDAwMDAwMCwKKyAgICAweGZmNzFlMzZmMDAwMDAwMDAsIDB4ODk5MGVjZjIwMDAwMDAwMCwgMHhjYjYwYWUwZjAwMDAwMDAwLAorICAgIDB4YmQ4MWExOTIwMDAwMDAwMCwgMHg2NmE0YzBlZTAwMDAwMDAwLCAweDEwNDVjZjczMDAwMDAwMDAsCisgICAgMHhkMGVmMDIxNjAwMDAwMDAwLCAweGE2MGUwZDhiMDAwMDAwMDAsIDB4N2QyYjZjZjcwMDAwMDAwMCwKKyAgICAweDBiY2E2MzZhMDAwMDAwMDAsIDB4ZmQ3ZWY3M2MwMDAwMDAwMCwgMHg4YjlmZjhhMTAwMDAwMDAwLAorICAgIDB4NTBiYTk5ZGQwMDAwMDAwMCwgMHgyNjViOTY0MDAwMDAwMDAwLCAweGU2ZjE1YjI1MDAwMDAwMDAsCisgICAgMHg5MDEwNTRiODAwMDAwMDAwLCAweDRiMzUzNWM0MDAwMDAwMDAsIDB4M2RkNDNhNTkwMDAwMDAwMCwKKyAgICAweGE3NWMxYzY5MDAwMDAwMDAsIDB4ZDFiZDEzZjQwMDAwMDAwMCwgMHgwYTk4NzI4ODAwMDAwMDAwLAorICAgIDB4N2M3OTdkMTUwMDAwMDAwMCwgMHhiY2QzYjA3MDAwMDAwMDAwLCAweGNhMzJiZmVkMDAwMDAwMDAsCisgICAgMHgxMTE3ZGU5MTAwMDAwMDAwLCAweDY3ZjZkMTBjMDAwMDAwMDAsIDB4OTE0MjQ1NWEwMDAwMDAwMCwKKyAgICAweGU3YTM0YWM3MDAwMDAwMDAsIDB4M2M4NjJiYmIwMDAwMDAwMCwgMHg0YTY3MjQyNjAwMDAwMDAwLAorICAgIDB4OGFjZGU5NDMwMDAwMDAwMCwgMHhmYzJjZTZkZTAwMDAwMDAwLCAweDI3MDk4N2EyMDAwMDAwMDAsCisgICAgMHg1MWU4ODgzZjAwMDAwMDAwfSwKKyAgIHsweDAwMDAwMDAwMDAwMDAwMDAsIDB4ZThkYmZiYjkwMDAwMDAwMCwgMHg5MWIxODZhODAwMDAwMDAwLAorICAgIDB4Nzk2YTdkMTEwMDAwMDAwMCwgMHg2MzY1N2M4YTAwMDAwMDAwLCAweDhiYmU4NzMzMDAwMDAwMDAsCisgICAgMHhmMmQ0ZmEyMjAwMDAwMDAwLCAweDFhMGYwMTliMDAwMDAwMDAsIDB4ODdjYzg5Y2YwMDAwMDAwMCwKKyAgICAweDZmMTc3Mjc2MDAwMDAwMDAsIDB4MTY3ZDBmNjcwMDAwMDAwMCwgMHhmZWE2ZjRkZTAwMDAwMDAwLAorICAgIDB4ZTRhOWY1NDUwMDAwMDAwMCwgMHgwYzcyMGVmYzAwMDAwMDAwLCAweDc1MTg3M2VkMDAwMDAwMDAsCisgICAgMHg5ZGMzODg1NDAwMDAwMDAwLCAweDRmOWY2MjQ0MDAwMDAwMDAsIDB4YTc0NDk5ZmQwMDAwMDAwMCwKKyAgICAweGRlMmVlNGVjMDAwMDAwMDAsIDB4MzZmNTFmNTUwMDAwMDAwMCwgMHgyY2ZhMWVjZTAwMDAwMDAwLAorICAgIDB4YzQyMWU1NzcwMDAwMDAwMCwgMHhiZDRiOTg2NjAwMDAwMDAwLCAweDU1OTA2M2RmMDAwMDAwMDAsCisgICAgMHhjODUzZWI4YjAwMDAwMDAwLCAweDIwODgxMDMyMDAwMDAwMDAsIDB4NTllMjZkMjMwMDAwMDAwMCwKKyAgICAweGIxMzk5NjlhMDAwMDAwMDAsIDB4YWIzNjk3MDEwMDAwMDAwMCwgMHg0M2VkNmNiODAwMDAwMDAwLAorICAgIDB4M2E4NzExYTkwMDAwMDAwMCwgMHhkMjVjZWExMDAwMDAwMDAwLCAweDllM2VjNTg4MDAwMDAwMDAsCisgICAgMHg3NmU1M2UzMTAwMDAwMDAwLCAweDBmOGY0MzIwMDAwMDAwMDAsIDB4ZTc1NGI4OTkwMDAwMDAwMCwKKyAgICAweGZkNWJiOTAyMDAwMDAwMDAsIDB4MTU4MDQyYmIwMDAwMDAwMCwgMHg2Y2VhM2ZhYTAwMDAwMDAwLAorICAgIDB4ODQzMWM0MTMwMDAwMDAwMCwgMHgxOWYyNGM0NzAwMDAwMDAwLCAweGYxMjliN2ZlMDAwMDAwMDAsCisgICAgMHg4ODQzY2FlZjAwMDAwMDAwLCAweDYwOTgzMTU2MDAwMDAwMDAsIDB4N2E5NzMwY2QwMDAwMDAwMCwKKyAgICAweDkyNGNjYjc0MDAwMDAwMDAsIDB4ZWIyNmI2NjUwMDAwMDAwMCwgMHgwM2ZkNGRkYzAwMDAwMDAwLAorICAgIDB4ZDFhMWE3Y2MwMDAwMDAwMCwgMHgzOTdhNWM3NTAwMDAwMDAwLCAweDQwMTAyMTY0MDAwMDAwMDAsCisgICAgMHhhOGNiZGFkZDAwMDAwMDAwLCAweGIyYzRkYjQ2MDAwMDAwMDAsIDB4NWExZjIwZmYwMDAwMDAwMCwKKyAgICAweDIzNzU1ZGVlMDAwMDAwMDAsIDB4Y2JhZWE2NTcwMDAwMDAwMCwgMHg1NjZkMmUwMzAwMDAwMDAwLAorICAgIDB4YmViNmQ1YmEwMDAwMDAwMCwgMHhjN2RjYThhYjAwMDAwMDAwLCAweDJmMDc1MzEyMDAwMDAwMDAsCisgICAgMHgzNTA4NTI4OTAwMDAwMDAwLCAweGRkZDNhOTMwMDAwMDAwMDAsIDB4YTRiOWQ0MjEwMDAwMDAwMCwKKyAgICAweDRjNjIyZjk4MDAwMDAwMDAsIDB4N2Q3YmZiY2EwMDAwMDAwMCwgMHg5NWEwMDA3MzAwMDAwMDAwLAorICAgIDB4ZWNjYTdkNjIwMDAwMDAwMCwgMHgwNDExODZkYjAwMDAwMDAwLCAweDFlMWU4NzQwMDAwMDAwMDAsCisgICAgMHhmNmM1N2NmOTAwMDAwMDAwLCAweDhmYWYwMWU4MDAwMDAwMDAsIDB4Njc3NGZhNTEwMDAwMDAwMCwKKyAgICAweGZhYjc3MjA1MDAwMDAwMDAsIDB4MTI2Yzg5YmMwMDAwMDAwMCwgMHg2YjA2ZjRhZDAwMDAwMDAwLAorICAgIDB4ODNkZDBmMTQwMDAwMDAwMCwgMHg5OWQyMGU4ZjAwMDAwMDAwLCAweDcxMDlmNTM2MDAwMDAwMDAsCisgICAgMHgwODYzODgyNzAwMDAwMDAwLCAweGUwYjg3MzllMDAwMDAwMDAsIDB4MzJlNDk5OGUwMDAwMDAwMCwKKyAgICAweGRhM2Y2MjM3MDAwMDAwMDAsIDB4YTM1NTFmMjYwMDAwMDAwMCwgMHg0YjhlZTQ5ZjAwMDAwMDAwLAorICAgIDB4NTE4MWU1MDQwMDAwMDAwMCwgMHhiOTVhMWViZDAwMDAwMDAwLCAweGMwMzA2M2FjMDAwMDAwMDAsCisgICAgMHgyOGViOTgxNTAwMDAwMDAwLCAweGI1MjgxMDQxMDAwMDAwMDAsIDB4NWRmM2ViZjgwMDAwMDAwMCwKKyAgICAweDI0OTk5NmU5MDAwMDAwMDAsIDB4Y2M0MjZkNTAwMDAwMDAwMCwgMHhkNjRkNmNjYjAwMDAwMDAwLAorICAgIDB4M2U5Njk3NzIwMDAwMDAwMCwgMHg0N2ZjZWE2MzAwMDAwMDAwLCAweGFmMjcxMWRhMDAwMDAwMDAsCisgICAgMHhlMzQ1M2U0MjAwMDAwMDAwLCAweDBiOWVjNWZiMDAwMDAwMDAsIDB4NzJmNGI4ZWEwMDAwMDAwMCwKKyAgICAweDlhMmY0MzUzMDAwMDAwMDAsIDB4ODAyMDQyYzgwMDAwMDAwMCwgMHg2OGZiYjk3MTAwMDAwMDAwLAorICAgIDB4MTE5MWM0NjAwMDAwMDAwMCwgMHhmOTRhM2ZkOTAwMDAwMDAwLCAweDY0ODliNzhkMDAwMDAwMDAsCisgICAgMHg4YzUyNGMzNDAwMDAwMDAwLCAweGY1MzgzMTI1MDAwMDAwMDAsIDB4MWRlM2NhOWMwMDAwMDAwMCwKKyAgICAweDA3ZWNjYjA3MDAwMDAwMDAsIDB4ZWYzNzMwYmUwMDAwMDAwMCwgMHg5NjVkNGRhZjAwMDAwMDAwLAorICAgIDB4N2U4NmI2MTYwMDAwMDAwMCwgMHhhY2RhNWMwNjAwMDAwMDAwLCAweDQ0MDFhN2JmMDAwMDAwMDAsCisgICAgMHgzZDZiZGFhZTAwMDAwMDAwLCAweGQ1YjAyMTE3MDAwMDAwMDAsIDB4Y2ZiZjIwOGMwMDAwMDAwMCwKKyAgICAweDI3NjRkYjM1MDAwMDAwMDAsIDB4NWUwZWE2MjQwMDAwMDAwMCwgMHhiNmQ1NWQ5ZDAwMDAwMDAwLAorICAgIDB4MmIxNmQ1YzkwMDAwMDAwMCwgMHhjM2NkMmU3MDAwMDAwMDAwLCAweGJhYTc1MzYxMDAwMDAwMDAsCisgICAgMHg1MjdjYThkODAwMDAwMDAwLCAweDQ4NzNhOTQzMDAwMDAwMDAsIDB4YTBhODUyZmEwMDAwMDAwMCwKKyAgICAweGQ5YzIyZmViMDAwMDAwMDAsIDB4MzExOWQ0NTIwMDAwMDAwMCwgMHhiYmYwODc0ZTAwMDAwMDAwLAorICAgIDB4NTMyYjdjZjcwMDAwMDAwMCwgMHgyYTQxMDFlNjAwMDAwMDAwLCAweGMyOWFmYTVmMDAwMDAwMDAsCisgICAgMHhkODk1ZmJjNDAwMDAwMDAwLCAweDMwNGUwMDdkMDAwMDAwMDAsIDB4NDkyNDdkNmMwMDAwMDAwMCwKKyAgICAweGExZmY4NmQ1MDAwMDAwMDAsIDB4M2MzYzBlODEwMDAwMDAwMCwgMHhkNGU3ZjUzODAwMDAwMDAwLAorICAgIDB4YWQ4ZDg4MjkwMDAwMDAwMCwgMHg0NTU2NzM5MDAwMDAwMDAwLCAweDVmNTk3MjBiMDAwMDAwMDAsCisgICAgMHhiNzgyODliMjAwMDAwMDAwLCAweGNlZThmNGEzMDAwMDAwMDAsIDB4MjYzMzBmMWEwMDAwMDAwMCwKKyAgICAweGY0NmZlNTBhMDAwMDAwMDAsIDB4MWNiNDFlYjMwMDAwMDAwMCwgMHg2NWRlNjNhMjAwMDAwMDAwLAorICAgIDB4OGQwNTk4MWIwMDAwMDAwMCwgMHg5NzBhOTk4MDAwMDAwMDAwLCAweDdmZDE2MjM5MDAwMDAwMDAsCisgICAgMHgwNmJiMWYyODAwMDAwMDAwLCAweGVlNjBlNDkxMDAwMDAwMDAsIDB4NzNhMzZjYzUwMDAwMDAwMCwKKyAgICAweDliNzg5NzdjMDAwMDAwMDAsIDB4ZTIxMmVhNmQwMDAwMDAwMCwgMHgwYWM5MTFkNDAwMDAwMDAwLAorICAgIDB4MTBjNjEwNGYwMDAwMDAwMCwgMHhmODFkZWJmNjAwMDAwMDAwLCAweDgxNzc5NmU3MDAwMDAwMDAsCisgICAgMHg2OWFjNmQ1ZTAwMDAwMDAwLCAweDI1Y2U0MmM2MDAwMDAwMDAsIDB4Y2QxNWI5N2YwMDAwMDAwMCwKKyAgICAweGI0N2ZjNDZlMDAwMDAwMDAsIDB4NWNhNDNmZDcwMDAwMDAwMCwgMHg0NmFiM2U0YzAwMDAwMDAwLAorICAgIDB4YWU3MGM1ZjUwMDAwMDAwMCwgMHhkNzFhYjhlNDAwMDAwMDAwLCAweDNmYzE0MzVkMDAwMDAwMDAsCisgICAgMHhhMjAyY2IwOTAwMDAwMDAwLCAweDRhZDkzMGIwMDAwMDAwMDAsIDB4MzNiMzRkYTEwMDAwMDAwMCwKKyAgICAweGRiNjhiNjE4MDAwMDAwMDAsIDB4YzE2N2I3ODMwMDAwMDAwMCwgMHgyOWJjNGMzYTAwMDAwMDAwLAorICAgIDB4NTBkNjMxMmIwMDAwMDAwMCwgMHhiODBkY2E5MjAwMDAwMDAwLCAweDZhNTEyMDgyMDAwMDAwMDAsCisgICAgMHg4MjhhZGIzYjAwMDAwMDAwLCAweGZiZTBhNjJhMDAwMDAwMDAsIDB4MTMzYjVkOTMwMDAwMDAwMCwKKyAgICAweDA5MzQ1YzA4MDAwMDAwMDAsIDB4ZTFlZmE3YjEwMDAwMDAwMCwgMHg5ODg1ZGFhMDAwMDAwMDAwLAorICAgIDB4NzA1ZTIxMTkwMDAwMDAwMCwgMHhlZDlkYTk0ZDAwMDAwMDAwLCAweDA1NDY1MmY0MDAwMDAwMDAsCisgICAgMHg3YzJjMmZlNTAwMDAwMDAwLCAweDk0ZjdkNDVjMDAwMDAwMDAsIDB4OGVmOGQ1YzcwMDAwMDAwMCwKKyAgICAweDY2MjMyZTdlMDAwMDAwMDAsIDB4MWY0OTUzNmYwMDAwMDAwMCwgMHhmNzkyYThkNjAwMDAwMDAwLAorICAgIDB4YzY4YjdjODQwMDAwMDAwMCwgMHgyZTUwODczZDAwMDAwMDAwLCAweDU3M2FmYTJjMDAwMDAwMDAsCisgICAgMHhiZmUxMDE5NTAwMDAwMDAwLCAweGE1ZWUwMDBlMDAwMDAwMDAsIDB4NGQzNWZiYjcwMDAwMDAwMCwKKyAgICAweDM0NWY4NmE2MDAwMDAwMDAsIDB4ZGM4NDdkMWYwMDAwMDAwMCwgMHg0MTQ3ZjU0YjAwMDAwMDAwLAorICAgIDB4YTk5YzBlZjIwMDAwMDAwMCwgMHhkMGY2NzNlMzAwMDAwMDAwLCAweDM4MmQ4ODVhMDAwMDAwMDAsCisgICAgMHgyMjIyODljMTAwMDAwMDAwLCAweGNhZjk3Mjc4MDAwMDAwMDAsIDB4YjM5MzBmNjkwMDAwMDAwMCwKKyAgICAweDViNDhmNGQwMDAwMDAwMDAsIDB4ODkxNDFlYzAwMDAwMDAwMCwgMHg2MWNmZTU3OTAwMDAwMDAwLAorICAgIDB4MThhNTk4NjgwMDAwMDAwMCwgMHhmMDdlNjNkMTAwMDAwMDAwLCAweGVhNzE2MjRhMDAwMDAwMDAsCisgICAgMHgwMmFhOTlmMzAwMDAwMDAwLCAweDdiYzBlNGUyMDAwMDAwMDAsIDB4OTMxYjFmNWIwMDAwMDAwMCwKKyAgICAweDBlZDg5NzBmMDAwMDAwMDAsIDB4ZTYwMzZjYjYwMDAwMDAwMCwgMHg5ZjY5MTFhNzAwMDAwMDAwLAorICAgIDB4NzdiMmVhMWUwMDAwMDAwMCwgMHg2ZGJkZWI4NTAwMDAwMDAwLCAweDg1NjYxMDNjMDAwMDAwMDAsCisgICAgMHhmYzBjNmQyZDAwMDAwMDAwLCAweDE0ZDc5Njk0MDAwMDAwMDAsIDB4NThiNWI5MGMwMDAwMDAwMCwKKyAgICAweGIwNmU0MmI1MDAwMDAwMDAsIDB4YzkwNDNmYTQwMDAwMDAwMCwgMHgyMWRmYzQxZDAwMDAwMDAwLAorICAgIDB4M2JkMGM1ODYwMDAwMDAwMCwgMHhkMzBiM2UzZjAwMDAwMDAwLCAweGFhNjE0MzJlMDAwMDAwMDAsCisgICAgMHg0MmJhYjg5NzAwMDAwMDAwLCAweGRmNzkzMGMzMDAwMDAwMDAsIDB4MzdhMmNiN2EwMDAwMDAwMCwKKyAgICAweDRlYzhiNjZiMDAwMDAwMDAsIDB4YTYxMzRkZDIwMDAwMDAwMCwgMHhiYzFjNGM0OTAwMDAwMDAwLAorICAgIDB4NTRjN2I3ZjAwMDAwMDAwMCwgMHgyZGFkY2FlMTAwMDAwMDAwLCAweGM1NzYzMTU4MDAwMDAwMDAsCisgICAgMHgxNzJhZGI0ODAwMDAwMDAwLCAweGZmZjEyMGYxMDAwMDAwMDAsIDB4ODY5YjVkZTAwMDAwMDAwMCwKKyAgICAweDZlNDBhNjU5MDAwMDAwMDAsIDB4NzQ0ZmE3YzIwMDAwMDAwMCwgMHg5Yzk0NWM3YjAwMDAwMDAwLAorICAgIDB4ZTVmZTIxNmEwMDAwMDAwMCwgMHgwZDI1ZGFkMzAwMDAwMDAwLCAweDkwZTY1Mjg3MDAwMDAwMDAsCisgICAgMHg3ODNkYTkzZTAwMDAwMDAwLCAweDAxNTdkNDJmMDAwMDAwMDAsIDB4ZTk4YzJmOTYwMDAwMDAwMCwKKyAgICAweGYzODMyZTBkMDAwMDAwMDAsIDB4MWI1OGQ1YjQwMDAwMDAwMCwgMHg2MjMyYThhNTAwMDAwMDAwLAorICAgIDB4OGFlOTUzMWMwMDAwMDAwMH0sCisgICB7MHgwMDAwMDAwMDAwMDAwMDAwLCAweDkxOTE2OGFlMDAwMDAwMDAsIDB4NjMyNWEwODcwMDAwMDAwMCwKKyAgICAweGYyYjRjODI5MDAwMDAwMDAsIDB4ODc0YzMxZDQwMDAwMDAwMCwgMHgxNmRkNTk3YTAwMDAwMDAwLAorICAgIDB4ZTQ2OTkxNTMwMDAwMDAwMCwgMHg3NWY4ZjlmZDAwMDAwMDAwLCAweDRmOWYxMzczMDAwMDAwMDAsCisgICAgMHhkZTBlN2JkZDAwMDAwMDAwLCAweDJjYmFiM2Y0MDAwMDAwMDAsIDB4YmQyYmRiNWEwMDAwMDAwMCwKKyAgICAweGM4ZDMyMmE3MDAwMDAwMDAsIDB4NTk0MjRhMDkwMDAwMDAwMCwgMHhhYmY2ODIyMDAwMDAwMDAwLAorICAgIDB4M2E2N2VhOGUwMDAwMDAwMCwgMHg5ZTNlMjdlNjAwMDAwMDAwLCAweDBmYWY0ZjQ4MDAwMDAwMDAsCisgICAgMHhmZDFiODc2MTAwMDAwMDAwLCAweDZjOGFlZmNmMDAwMDAwMDAsIDB4MTk3MjE2MzIwMDAwMDAwMCwKKyAgICAweDg4ZTM3ZTljMDAwMDAwMDAsIDB4N2E1N2I2YjUwMDAwMDAwMCwgMHhlYmM2ZGUxYjAwMDAwMDAwLAorICAgIDB4ZDFhMTM0OTUwMDAwMDAwMCwgMHg0MDMwNWMzYjAwMDAwMDAwLCAweGIyODQ5NDEyMDAwMDAwMDAsCisgICAgMHgyMzE1ZmNiYzAwMDAwMDAwLCAweDU2ZWQwNTQxMDAwMDAwMDAsIDB4Yzc3YzZkZWYwMDAwMDAwMCwKKyAgICAweDM1YzhhNWM2MDAwMDAwMDAsIDB4YTQ1OWNkNjgwMDAwMDAwMCwgMHg3ZDdiM2YxNzAwMDAwMDAwLAorICAgIDB4ZWNlYTU3YjkwMDAwMDAwMCwgMHgxZTVlOWY5MDAwMDAwMDAwLCAweDhmY2ZmNzNlMDAwMDAwMDAsCisgICAgMHhmYTM3MGVjMzAwMDAwMDAwLCAweDZiYTY2NjZkMDAwMDAwMDAsIDB4OTkxMmFlNDQwMDAwMDAwMCwKKyAgICAweDA4ODNjNmVhMDAwMDAwMDAsIDB4MzJlNDJjNjQwMDAwMDAwMCwgMHhhMzc1NDRjYTAwMDAwMDAwLAorICAgIDB4NTFjMThjZTMwMDAwMDAwMCwgMHhjMDUwZTQ0ZDAwMDAwMDAwLCAweGI1YTgxZGIwMDAwMDAwMDAsCisgICAgMHgyNDM5NzUxZTAwMDAwMDAwLCAweGQ2OGRiZDM3MDAwMDAwMDAsIDB4NDcxY2Q1OTkwMDAwMDAwMCwKKyAgICAweGUzNDUxOGYxMDAwMDAwMDAsIDB4NzJkNDcwNWYwMDAwMDAwMCwgMHg4MDYwYjg3NjAwMDAwMDAwLAorICAgIDB4MTFmMWQwZDgwMDAwMDAwMCwgMHg2NDA5MjkyNTAwMDAwMDAwLCAweGY1OTg0MThiMDAwMDAwMDAsCisgICAgMHgwNzJjODlhMjAwMDAwMDAwLCAweDk2YmRlMTBjMDAwMDAwMDAsIDB4YWNkYTBiODIwMDAwMDAwMCwKKyAgICAweDNkNGI2MzJjMDAwMDAwMDAsIDB4Y2ZmZmFiMDUwMDAwMDAwMCwgMHg1ZTZlYzNhYjAwMDAwMDAwLAorICAgIDB4MmI5NjNhNTYwMDAwMDAwMCwgMHhiYTA3NTJmODAwMDAwMDAwLCAweDQ4YjM5YWQxMDAwMDAwMDAsCisgICAgMHhkOTIyZjI3ZjAwMDAwMDAwLCAweGZhZjY3ZTJlMDAwMDAwMDAsIDB4NmI2NzE2ODAwMDAwMDAwMCwKKyAgICAweDk5ZDNkZWE5MDAwMDAwMDAsIDB4MDg0MmI2MDcwMDAwMDAwMCwgMHg3ZGJhNGZmYTAwMDAwMDAwLAorICAgIDB4ZWMyYjI3NTQwMDAwMDAwMCwgMHgxZTlmZWY3ZDAwMDAwMDAwLCAweDhmMGU4N2QzMDAwMDAwMDAsCisgICAgMHhiNTY5NmQ1ZDAwMDAwMDAwLCAweDI0ZjgwNWYzMDAwMDAwMDAsIDB4ZDY0Y2NkZGEwMDAwMDAwMCwKKyAgICAweDQ3ZGRhNTc0MDAwMDAwMDAsIDB4MzIyNTVjODkwMDAwMDAwMCwgMHhhM2I0MzQyNzAwMDAwMDAwLAorICAgIDB4NTEwMGZjMGUwMDAwMDAwMCwgMHhjMDkxOTRhMDAwMDAwMDAwLCAweDY0Yzg1OWM4MDAwMDAwMDAsCisgICAgMHhmNTU5MzE2NjAwMDAwMDAwLCAweDA3ZWRmOTRmMDAwMDAwMDAsIDB4OTY3YzkxZTEwMDAwMDAwMCwKKyAgICAweGUzODQ2ODFjMDAwMDAwMDAsIDB4NzIxNTAwYjIwMDAwMDAwMCwgMHg4MGExYzg5YjAwMDAwMDAwLAorICAgIDB4MTEzMGEwMzUwMDAwMDAwMCwgMHgyYjU3NGFiYjAwMDAwMDAwLCAweGJhYzYyMjE1MDAwMDAwMDAsCisgICAgMHg0ODcyZWEzYzAwMDAwMDAwLCAweGQ5ZTM4MjkyMDAwMDAwMDAsIDB4YWMxYjdiNmYwMDAwMDAwMCwKKyAgICAweDNkOGExM2MxMDAwMDAwMDAsIDB4Y2YzZWRiZTgwMDAwMDAwMCwgMHg1ZWFmYjM0NjAwMDAwMDAwLAorICAgIDB4ODc4ZDQxMzkwMDAwMDAwMCwgMHgxNjFjMjk5NzAwMDAwMDAwLCAweGU0YThlMWJlMDAwMDAwMDAsCisgICAgMHg3NTM5ODkxMDAwMDAwMDAwLCAweDAwYzE3MGVkMDAwMDAwMDAsIDB4OTE1MDE4NDMwMDAwMDAwMCwKKyAgICAweDYzZTRkMDZhMDAwMDAwMDAsIDB4ZjI3NWI4YzQwMDAwMDAwMCwgMHhjODEyNTI0YTAwMDAwMDAwLAorICAgIDB4NTk4MzNhZTQwMDAwMDAwMCwgMHhhYjM3ZjJjZDAwMDAwMDAwLCAweDNhYTY5YTYzMDAwMDAwMDAsCisgICAgMHg0ZjVlNjM5ZTAwMDAwMDAwLCAweGRlY2YwYjMwMDAwMDAwMDAsIDB4MmM3YmMzMTkwMDAwMDAwMCwKKyAgICAweGJkZWFhYmI3MDAwMDAwMDAsIDB4MTliMzY2ZGYwMDAwMDAwMCwgMHg4ODIyMGU3MTAwMDAwMDAwLAorICAgIDB4N2E5NmM2NTgwMDAwMDAwMCwgMHhlYjA3YWVmNjAwMDAwMDAwLCAweDllZmY1NzBiMDAwMDAwMDAsCisgICAgMHgwZjZlM2ZhNTAwMDAwMDAwLCAweGZkZGFmNzhjMDAwMDAwMDAsIDB4NmM0YjlmMjIwMDAwMDAwMCwKKyAgICAweDU2MmM3NWFjMDAwMDAwMDAsIDB4YzdiZDFkMDIwMDAwMDAwMCwgMHgzNTA5ZDUyYjAwMDAwMDAwLAorICAgIDB4YTQ5OGJkODUwMDAwMDAwMCwgMHhkMTYwNDQ3ODAwMDAwMDAwLCAweDQwZjEyY2Q2MDAwMDAwMDAsCisgICAgMHhiMjQ1ZTRmZjAwMDAwMDAwLCAweDIzZDQ4YzUxMDAwMDAwMDAsIDB4ZjRlZGZkNWMwMDAwMDAwMCwKKyAgICAweDY1N2M5NWYyMDAwMDAwMDAsIDB4OTdjODVkZGIwMDAwMDAwMCwgMHgwNjU5MzU3NTAwMDAwMDAwLAorICAgIDB4NzNhMWNjODgwMDAwMDAwMCwgMHhlMjMwYTQyNjAwMDAwMDAwLCAweDEwODQ2YzBmMDAwMDAwMDAsCisgICAgMHg4MTE1MDRhMTAwMDAwMDAwLCAweGJiNzJlZTJmMDAwMDAwMDAsIDB4MmFlMzg2ODEwMDAwMDAwMCwKKyAgICAweGQ4NTc0ZWE4MDAwMDAwMDAsIDB4NDljNjI2MDYwMDAwMDAwMCwgMHgzYzNlZGZmYjAwMDAwMDAwLAorICAgIDB4YWRhZmI3NTUwMDAwMDAwMCwgMHg1ZjFiN2Y3YzAwMDAwMDAwLCAweGNlOGExN2QyMDAwMDAwMDAsCisgICAgMHg2YWQzZGFiYTAwMDAwMDAwLCAweGZiNDJiMjE0MDAwMDAwMDAsIDB4MDlmNjdhM2QwMDAwMDAwMCwKKyAgICAweDk4NjcxMjkzMDAwMDAwMDAsIDB4ZWQ5ZmViNmUwMDAwMDAwMCwgMHg3YzBlODNjMDAwMDAwMDAwLAorICAgIDB4OGViYTRiZTkwMDAwMDAwMCwgMHgxZjJiMjM0NzAwMDAwMDAwLCAweDI1NGNjOWM5MDAwMDAwMDAsCisgICAgMHhiNGRkYTE2NzAwMDAwMDAwLCAweDQ2Njk2OTRlMDAwMDAwMDAsIDB4ZDdmODAxZTAwMDAwMDAwMCwKKyAgICAweGEyMDBmODFkMDAwMDAwMDAsIDB4MzM5MTkwYjMwMDAwMDAwMCwgMHhjMTI1NTg5YTAwMDAwMDAwLAorICAgIDB4NTBiNDMwMzQwMDAwMDAwMCwgMHg4OTk2YzI0YjAwMDAwMDAwLCAweDE4MDdhYWU1MDAwMDAwMDAsCisgICAgMHhlYWIzNjJjYzAwMDAwMDAwLCAweDdiMjIwYTYyMDAwMDAwMDAsIDB4MGVkYWYzOWYwMDAwMDAwMCwKKyAgICAweDlmNGI5YjMxMDAwMDAwMDAsIDB4NmRmZjUzMTgwMDAwMDAwMCwgMHhmYzZlM2JiNjAwMDAwMDAwLAorICAgIDB4YzYwOWQxMzgwMDAwMDAwMCwgMHg1Nzk4Yjk5NjAwMDAwMDAwLCAweGE1MmM3MWJmMDAwMDAwMDAsCisgICAgMHgzNGJkMTkxMTAwMDAwMDAwLCAweDQxNDVlMGVjMDAwMDAwMDAsIDB4ZDBkNDg4NDIwMDAwMDAwMCwKKyAgICAweDIyNjA0MDZiMDAwMDAwMDAsIDB4YjNmMTI4YzUwMDAwMDAwMCwgMHgxN2E4ZTVhZDAwMDAwMDAwLAorICAgIDB4ODYzOThkMDMwMDAwMDAwMCwgMHg3NDhkNDUyYTAwMDAwMDAwLCAweGU1MWMyZDg0MDAwMDAwMDAsCisgICAgMHg5MGU0ZDQ3OTAwMDAwMDAwLCAweDAxNzViY2Q3MDAwMDAwMDAsIDB4ZjNjMTc0ZmUwMDAwMDAwMCwKKyAgICAweDYyNTAxYzUwMDAwMDAwMDAsIDB4NTgzN2Y2ZGUwMDAwMDAwMCwgMHhjOWE2OWU3MDAwMDAwMDAwLAorICAgIDB4M2IxMjU2NTkwMDAwMDAwMCwgMHhhYTgzM2VmNzAwMDAwMDAwLCAweGRmN2JjNzBhMDAwMDAwMDAsCisgICAgMHg0ZWVhYWZhNDAwMDAwMDAwLCAweGJjNWU2NzhkMDAwMDAwMDAsIDB4MmRjZjBmMjMwMDAwMDAwMCwKKyAgICAweDBlMWI4MzcyMDAwMDAwMDAsIDB4OWY4YWViZGMwMDAwMDAwMCwgMHg2ZDNlMjNmNTAwMDAwMDAwLAorICAgIDB4ZmNhZjRiNWIwMDAwMDAwMCwgMHg4OTU3YjJhNjAwMDAwMDAwLCAweDE4YzZkYTA4MDAwMDAwMDAsCisgICAgMHhlYTcyMTIyMTAwMDAwMDAwLCAweDdiZTM3YThmMDAwMDAwMDAsIDB4NDE4NDkwMDEwMDAwMDAwMCwKKyAgICAweGQwMTVmOGFmMDAwMDAwMDAsIDB4MjJhMTMwODYwMDAwMDAwMCwgMHhiMzMwNTgyODAwMDAwMDAwLAorICAgIDB4YzZjOGExZDUwMDAwMDAwMCwgMHg1NzU5Yzk3YjAwMDAwMDAwLCAweGE1ZWQwMTUyMDAwMDAwMDAsCisgICAgMHgzNDdjNjlmYzAwMDAwMDAwLCAweDkwMjVhNDk0MDAwMDAwMDAsIDB4MDFiNGNjM2EwMDAwMDAwMCwKKyAgICAweGYzMDAwNDEzMDAwMDAwMDAsIDB4NjI5MTZjYmQwMDAwMDAwMCwgMHgxNzY5OTU0MDAwMDAwMDAwLAorICAgIDB4ODZmOGZkZWUwMDAwMDAwMCwgMHg3NDRjMzVjNzAwMDAwMDAwLCAweGU1ZGQ1ZDY5MDAwMDAwMDAsCisgICAgMHhkZmJhYjdlNzAwMDAwMDAwLCAweDRlMmJkZjQ5MDAwMDAwMDAsIDB4YmM5ZjE3NjAwMDAwMDAwMCwKKyAgICAweDJkMGU3ZmNlMDAwMDAwMDAsIDB4NThmNjg2MzMwMDAwMDAwMCwgMHhjOTY3ZWU5ZDAwMDAwMDAwLAorICAgIDB4M2JkMzI2YjQwMDAwMDAwMCwgMHhhYTQyNGUxYTAwMDAwMDAwLCAweDczNjBiYzY1MDAwMDAwMDAsCisgICAgMHhlMmYxZDRjYjAwMDAwMDAwLCAweDEwNDUxY2UyMDAwMDAwMDAsIDB4ODFkNDc0NGMwMDAwMDAwMCwKKyAgICAweGY0MmM4ZGIxMDAwMDAwMDAsIDB4NjViZGU1MWYwMDAwMDAwMCwgMHg5NzA5MmQzNjAwMDAwMDAwLAorICAgIDB4MDY5ODQ1OTgwMDAwMDAwMCwgMHgzY2ZmYWYxNjAwMDAwMDAwLCAweGFkNmVjN2I4MDAwMDAwMDAsCisgICAgMHg1ZmRhMGY5MTAwMDAwMDAwLCAweGNlNGI2NzNmMDAwMDAwMDAsIDB4YmJiMzllYzIwMDAwMDAwMCwKKyAgICAweDJhMjJmNjZjMDAwMDAwMDAsIDB4ZDg5NjNlNDUwMDAwMDAwMCwgMHg0OTA3NTZlYjAwMDAwMDAwLAorICAgIDB4ZWQ1ZTliODMwMDAwMDAwMCwgMHg3Y2NmZjMyZDAwMDAwMDAwLCAweDhlN2IzYjA0MDAwMDAwMDAsCisgICAgMHgxZmVhNTNhYTAwMDAwMDAwLCAweDZhMTJhYTU3MDAwMDAwMDAsIDB4ZmI4M2MyZjkwMDAwMDAwMCwKKyAgICAweDA5MzcwYWQwMDAwMDAwMDAsIDB4OThhNjYyN2UwMDAwMDAwMCwgMHhhMmMxODhmMDAwMDAwMDAwLAorICAgIDB4MzM1MGUwNWUwMDAwMDAwMCwgMHhjMWU0Mjg3NzAwMDAwMDAwLCAweDUwNzU0MGQ5MDAwMDAwMDAsCisgICAgMHgyNThkYjkyNDAwMDAwMDAwLCAweGI0MWNkMThhMDAwMDAwMDAsIDB4NDZhODE5YTMwMDAwMDAwMCwKKyAgICAweGQ3Mzk3MTBkMDAwMDAwMDB9fTsKKworI2Vsc2UgLyogVyA9PSA0ICovCisKK2xvY2FsIGNvbnN0IHpfY3JjX3QgRkFSIGNyY19icmFpZF90YWJsZVtdWzI1Nl0gPSB7CisgICB7MHgwMDAwMDAwMCwgMHhjY2FhMDA5ZSwgMHg0MjI1MDc3ZCwgMHg4ZThmMDdlMywgMHg4NDRhMGVmYSwKKyAgICAweDQ4ZTAwZTY0LCAweGM2NmYwOTg3LCAweDBhYzUwOTE5LCAweGQzZTUxYmI1LCAweDFmNGYxYjJiLAorICAgIDB4OTFjMDFjYzgsIDB4NWQ2YTFjNTYsIDB4NTdhZjE1NGYsIDB4OWIwNTE1ZDEsIDB4MTU4YTEyMzIsCisgICAgMHhkOTIwMTJhYywgMHg3Y2JiMzEyYiwgMHhiMDExMzFiNSwgMHgzZTllMzY1NiwgMHhmMjM0MzZjOCwKKyAgICAweGY4ZjEzZmQxLCAweDM0NWIzZjRmLCAweGJhZDQzOGFjLCAweDc2N2UzODMyLCAweGFmNWUyYTllLAorICAgIDB4NjNmNDJhMDAsIDB4ZWQ3YjJkZTMsIDB4MjFkMTJkN2QsIDB4MmIxNDI0NjQsIDB4ZTdiZTI0ZmEsCisgICAgMHg2OTMxMjMxOSwgMHhhNTliMjM4NywgMHhmOTc2NjI1NiwgMHgzNWRjNjJjOCwgMHhiYjUzNjUyYiwKKyAgICAweDc3Zjk2NWI1LCAweDdkM2M2Y2FjLCAweGIxOTY2YzMyLCAweDNmMTk2YmQxLCAweGYzYjM2YjRmLAorICAgIDB4MmE5Mzc5ZTMsIDB4ZTYzOTc5N2QsIDB4NjhiNjdlOWUsIDB4YTQxYzdlMDAsIDB4YWVkOTc3MTksCisgICAgMHg2MjczNzc4NywgMHhlY2ZjNzA2NCwgMHgyMDU2NzBmYSwgMHg4NWNkNTM3ZCwgMHg0OTY3NTNlMywKKyAgICAweGM3ZTg1NDAwLCAweDBiNDI1NDllLCAweDAxODc1ZDg3LCAweGNkMmQ1ZDE5LCAweDQzYTI1YWZhLAorICAgIDB4OGYwODVhNjQsIDB4NTYyODQ4YzgsIDB4OWE4MjQ4NTYsIDB4MTQwZDRmYjUsIDB4ZDhhNzRmMmIsCisgICAgMHhkMjYyNDYzMiwgMHgxZWM4NDZhYywgMHg5MDQ3NDE0ZiwgMHg1Y2VkNDFkMSwgMHgyOTlkYzJlZCwKKyAgICAweGU1MzdjMjczLCAweDZiYjhjNTkwLCAweGE3MTJjNTBlLCAweGFkZDdjYzE3LCAweDYxN2RjYzg5LAorICAgIDB4ZWZmMmNiNmEsIDB4MjM1OGNiZjQsIDB4ZmE3OGQ5NTgsIDB4MzZkMmQ5YzYsIDB4Yjg1ZGRlMjUsCisgICAgMHg3NGY3ZGViYiwgMHg3ZTMyZDdhMiwgMHhiMjk4ZDczYywgMHgzYzE3ZDBkZiwgMHhmMGJkZDA0MSwKKyAgICAweDU1MjZmM2M2LCAweDk5OGNmMzU4LCAweDE3MDNmNGJiLCAweGRiYTlmNDI1LCAweGQxNmNmZDNjLAorICAgIDB4MWRjNmZkYTIsIDB4OTM0OWZhNDEsIDB4NWZlM2ZhZGYsIDB4ODZjM2U4NzMsIDB4NGE2OWU4ZWQsCisgICAgMHhjNGU2ZWYwZSwgMHgwODRjZWY5MCwgMHgwMjg5ZTY4OSwgMHhjZTIzZTYxNywgMHg0MGFjZTFmNCwKKyAgICAweDhjMDZlMTZhLCAweGQwZWJhMGJiLCAweDFjNDFhMDI1LCAweDkyY2VhN2M2LCAweDVlNjRhNzU4LAorICAgIDB4NTRhMWFlNDEsIDB4OTgwYmFlZGYsIDB4MTY4NGE5M2MsIDB4ZGEyZWE5YTIsIDB4MDMwZWJiMGUsCisgICAgMHhjZmE0YmI5MCwgMHg0MTJiYmM3MywgMHg4ZDgxYmNlZCwgMHg4NzQ0YjVmNCwgMHg0YmVlYjU2YSwKKyAgICAweGM1NjFiMjg5LCAweDA5Y2JiMjE3LCAweGFjNTA5MTkwLCAweDYwZmE5MTBlLCAweGVlNzU5NmVkLAorICAgIDB4MjJkZjk2NzMsIDB4MjgxYTlmNmEsIDB4ZTRiMDlmZjQsIDB4NmEzZjk4MTcsIDB4YTY5NTk4ODksCisgICAgMHg3ZmI1OGEyNSwgMHhiMzFmOGFiYiwgMHgzZDkwOGQ1OCwgMHhmMTNhOGRjNiwgMHhmYmZmODRkZiwKKyAgICAweDM3NTU4NDQxLCAweGI5ZGE4M2EyLCAweDc1NzA4MzNjLCAweDUzM2I4NWRhLCAweDlmOTE4NTQ0LAorICAgIDB4MTExZTgyYTcsIDB4ZGRiNDgyMzksIDB4ZDc3MThiMjAsIDB4MWJkYjhiYmUsIDB4OTU1NDhjNWQsCisgICAgMHg1OWZlOGNjMywgMHg4MGRlOWU2ZiwgMHg0Yzc0OWVmMSwgMHhjMmZiOTkxMiwgMHgwZTUxOTk4YywKKyAgICAweDA0OTQ5MDk1LCAweGM4M2U5MDBiLCAweDQ2YjE5N2U4LCAweDhhMWI5Nzc2LCAweDJmODBiNGYxLAorICAgIDB4ZTMyYWI0NmYsIDB4NmRhNWIzOGMsIDB4YTEwZmIzMTIsIDB4YWJjYWJhMGIsIDB4Njc2MGJhOTUsCisgICAgMHhlOWVmYmQ3NiwgMHgyNTQ1YmRlOCwgMHhmYzY1YWY0NCwgMHgzMGNmYWZkYSwgMHhiZTQwYTgzOSwKKyAgICAweDcyZWFhOGE3LCAweDc4MmZhMWJlLCAweGI0ODVhMTIwLCAweDNhMGFhNmMzLCAweGY2YTBhNjVkLAorICAgIDB4YWE0ZGU3OGMsIDB4NjZlN2U3MTIsIDB4ZTg2OGUwZjEsIDB4MjRjMmUwNmYsIDB4MmUwN2U5NzYsCisgICAgMHhlMmFkZTllOCwgMHg2YzIyZWUwYiwgMHhhMDg4ZWU5NSwgMHg3OWE4ZmMzOSwgMHhiNTAyZmNhNywKKyAgICAweDNiOGRmYjQ0LCAweGY3MjdmYmRhLCAweGZkZTJmMmMzLCAweDMxNDhmMjVkLCAweGJmYzdmNWJlLAorICAgIDB4NzM2ZGY1MjAsIDB4ZDZmNmQ2YTcsIDB4MWE1Y2Q2MzksIDB4OTRkM2QxZGEsIDB4NTg3OWQxNDQsCisgICAgMHg1MmJjZDg1ZCwgMHg5ZTE2ZDhjMywgMHgxMDk5ZGYyMCwgMHhkYzMzZGZiZSwgMHgwNTEzY2QxMiwKKyAgICAweGM5YjljZDhjLCAweDQ3MzZjYTZmLCAweDhiOWNjYWYxLCAweDgxNTljM2U4LCAweDRkZjNjMzc2LAorICAgIDB4YzM3Y2M0OTUsIDB4MGZkNmM0MGIsIDB4N2FhNjQ3MzcsIDB4YjYwYzQ3YTksIDB4Mzg4MzQwNGEsCisgICAgMHhmNDI5NDBkNCwgMHhmZWVjNDljZCwgMHgzMjQ2NDk1MywgMHhiY2M5NGViMCwgMHg3MDYzNGUyZSwKKyAgICAweGE5NDM1YzgyLCAweDY1ZTk1YzFjLCAweGViNjY1YmZmLCAweDI3Y2M1YjYxLCAweDJkMDk1Mjc4LAorICAgIDB4ZTFhMzUyZTYsIDB4NmYyYzU1MDUsIDB4YTM4NjU1OWIsIDB4MDYxZDc2MWMsIDB4Y2FiNzc2ODIsCisgICAgMHg0NDM4NzE2MSwgMHg4ODkyNzFmZiwgMHg4MjU3NzhlNiwgMHg0ZWZkNzg3OCwgMHhjMDcyN2Y5YiwKKyAgICAweDBjZDg3ZjA1LCAweGQ1Zjg2ZGE5LCAweDE5NTI2ZDM3LCAweDk3ZGQ2YWQ0LCAweDViNzc2YTRhLAorICAgIDB4NTFiMjYzNTMsIDB4OWQxODYzY2QsIDB4MTM5NzY0MmUsIDB4ZGYzZDY0YjAsIDB4ODNkMDI1NjEsCisgICAgMHg0ZjdhMjVmZiwgMHhjMWY1MjIxYywgMHgwZDVmMjI4MiwgMHgwNzlhMmI5YiwgMHhjYjMwMmIwNSwKKyAgICAweDQ1YmYyY2U2LCAweDg5MTUyYzc4LCAweDUwMzUzZWQ0LCAweDljOWYzZTRhLCAweDEyMTAzOWE5LAorICAgIDB4ZGViYTM5MzcsIDB4ZDQ3ZjMwMmUsIDB4MThkNTMwYjAsIDB4OTY1YTM3NTMsIDB4NWFmMDM3Y2QsCisgICAgMHhmZjZiMTQ0YSwgMHgzM2MxMTRkNCwgMHhiZDRlMTMzNywgMHg3MWU0MTNhOSwgMHg3YjIxMWFiMCwKKyAgICAweGI3OGIxYTJlLCAweDM5MDQxZGNkLCAweGY1YWUxZDUzLCAweDJjOGUwZmZmLCAweGUwMjQwZjYxLAorICAgIDB4NmVhYjA4ODIsIDB4YTIwMTA4MWMsIDB4YThjNDAxMDUsIDB4NjQ2ZTAxOWIsIDB4ZWFlMTA2NzgsCisgICAgMHgyNjRiMDZlNn0sCisgICB7MHgwMDAwMDAwMCwgMHhhNjc3MGJiNCwgMHg5NzlmMTEyOSwgMHgzMWU4MWE5ZCwgMHhmNDRmMjQxMywKKyAgICAweDUyMzgyZmE3LCAweDYzZDAzNTNhLCAweGM1YTczZThlLCAweDMzZWY0ZTY3LCAweDk1OTg0NWQzLAorICAgIDB4YTQ3MDVmNGUsIDB4MDIwNzU0ZmEsIDB4YzdhMDZhNzQsIDB4NjFkNzYxYzAsIDB4NTAzZjdiNWQsCisgICAgMHhmNjQ4NzBlOSwgMHg2N2RlOWNjZSwgMHhjMWE5OTc3YSwgMHhmMDQxOGRlNywgMHg1NjM2ODY1MywKKyAgICAweDkzOTFiOGRkLCAweDM1ZTZiMzY5LCAweDA0MGVhOWY0LCAweGEyNzlhMjQwLCAweDU0MzFkMmE5LAorICAgIDB4ZjI0NmQ5MWQsIDB4YzNhZWMzODAsIDB4NjVkOWM4MzQsIDB4YTA3ZWY2YmEsIDB4MDYwOWZkMGUsCisgICAgMHgzN2UxZTc5MywgMHg5MTk2ZWMyNywgMHhjZmJkMzk5YywgMHg2OWNhMzIyOCwgMHg1ODIyMjhiNSwKKyAgICAweGZlNTUyMzAxLCAweDNiZjIxZDhmLCAweDlkODUxNjNiLCAweGFjNmQwY2E2LCAweDBhMWEwNzEyLAorICAgIDB4ZmM1Mjc3ZmIsIDB4NWEyNTdjNGYsIDB4NmJjZDY2ZDIsIDB4Y2RiYTZkNjYsIDB4MDgxZDUzZTgsCisgICAgMHhhZTZhNTg1YywgMHg5ZjgyNDJjMSwgMHgzOWY1NDk3NSwgMHhhODYzYTU1MiwgMHgwZTE0YWVlNiwKKyAgICAweDNmZmNiNDdiLCAweDk5OGJiZmNmLCAweDVjMmM4MTQxLCAweGZhNWI4YWY1LCAweGNiYjM5MDY4LAorICAgIDB4NmRjNDliZGMsIDB4OWI4Y2ViMzUsIDB4M2RmYmUwODEsIDB4MGMxM2ZhMWMsIDB4YWE2NGYxYTgsCisgICAgMHg2ZmMzY2YyNiwgMHhjOWI0YzQ5MiwgMHhmODVjZGUwZiwgMHg1ZTJiZDViYiwgMHg0NDBiNzU3OSwKKyAgICAweGUyN2M3ZWNkLCAweGQzOTQ2NDUwLCAweDc1ZTM2ZmU0LCAweGIwNDQ1MTZhLCAweDE2MzM1YWRlLAorICAgIDB4MjdkYjQwNDMsIDB4ODFhYzRiZjcsIDB4NzdlNDNiMWUsIDB4ZDE5MzMwYWEsIDB4ZTA3YjJhMzcsCisgICAgMHg0NjBjMjE4MywgMHg4M2FiMWYwZCwgMHgyNWRjMTRiOSwgMHgxNDM0MGUyNCwgMHhiMjQzMDU5MCwKKyAgICAweDIzZDVlOWI3LCAweDg1YTJlMjAzLCAweGI0NGFmODllLCAweDEyM2RmMzJhLCAweGQ3OWFjZGE0LAorICAgIDB4NzFlZGM2MTAsIDB4NDAwNWRjOGQsIDB4ZTY3MmQ3MzksIDB4MTAzYWE3ZDAsIDB4YjY0ZGFjNjQsCisgICAgMHg4N2E1YjZmOSwgMHgyMWQyYmQ0ZCwgMHhlNDc1ODNjMywgMHg0MjAyODg3NywgMHg3M2VhOTJlYSwKKyAgICAweGQ1OWQ5OTVlLCAweDhiYjY0Y2U1LCAweDJkYzE0NzUxLCAweDFjMjk1ZGNjLCAweGJhNWU1Njc4LAorICAgIDB4N2ZmOTY4ZjYsIDB4ZDk4ZTYzNDIsIDB4ZTg2Njc5ZGYsIDB4NGUxMTcyNmIsIDB4Yjg1OTAyODIsCisgICAgMHgxZTJlMDkzNiwgMHgyZmM2MTNhYiwgMHg4OWIxMTgxZiwgMHg0YzE2MjY5MSwgMHhlYTYxMmQyNSwKKyAgICAweGRiODkzN2I4LCAweDdkZmUzYzBjLCAweGVjNjhkMDJiLCAweDRhMWZkYjlmLCAweDdiZjdjMTAyLAorICAgIDB4ZGQ4MGNhYjYsIDB4MTgyN2Y0MzgsIDB4YmU1MGZmOGMsIDB4OGZiOGU1MTEsIDB4MjljZmVlYTUsCisgICAgMHhkZjg3OWU0YywgMHg3OWYwOTVmOCwgMHg0ODE4OGY2NSwgMHhlZTZmODRkMSwgMHgyYmM4YmE1ZiwKKyAgICAweDhkYmZiMWViLCAweGJjNTdhYjc2LCAweDFhMjBhMGMyLCAweDg4MTZlYWYyLCAweDJlNjFlMTQ2LAorICAgIDB4MWY4OWZiZGIsIDB4YjlmZWYwNmYsIDB4N2M1OWNlZTEsIDB4ZGEyZWM1NTUsIDB4ZWJjNmRmYzgsCisgICAgMHg0ZGIxZDQ3YywgMHhiYmY5YTQ5NSwgMHgxZDhlYWYyMSwgMHgyYzY2YjViYywgMHg4YTExYmUwOCwKKyAgICAweDRmYjY4MDg2LCAweGU5YzE4YjMyLCAweGQ4Mjk5MWFmLCAweDdlNWU5YTFiLCAweGVmYzg3NjNjLAorICAgIDB4NDliZjdkODgsIDB4Nzg1NzY3MTUsIDB4ZGUyMDZjYTEsIDB4MWI4NzUyMmYsIDB4YmRmMDU5OWIsCisgICAgMHg4YzE4NDMwNiwgMHgyYTZmNDhiMiwgMHhkYzI3Mzg1YiwgMHg3YTUwMzNlZiwgMHg0YmI4Mjk3MiwKKyAgICAweGVkY2YyMmM2LCAweDI4NjgxYzQ4LCAweDhlMWYxN2ZjLCAweGJmZjcwZDYxLCAweDE5ODAwNmQ1LAorICAgIDB4NDdhYmQzNmUsIDB4ZTFkY2Q4ZGEsIDB4ZDAzNGMyNDcsIDB4NzY0M2M5ZjMsIDB4YjNlNGY3N2QsCisgICAgMHgxNTkzZmNjOSwgMHgyNDdiZTY1NCwgMHg4MjBjZWRlMCwgMHg3NDQ0OWQwOSwgMHhkMjMzOTZiZCwKKyAgICAweGUzZGI4YzIwLCAweDQ1YWM4Nzk0LCAweDgwMGJiOTFhLCAweDI2N2NiMmFlLCAweDE3OTRhODMzLAorICAgIDB4YjFlM2EzODcsIDB4MjA3NTRmYTAsIDB4ODYwMjQ0MTQsIDB4YjdlYTVlODksIDB4MTE5ZDU1M2QsCisgICAgMHhkNDNhNmJiMywgMHg3MjRkNjAwNywgMHg0M2E1N2E5YSwgMHhlNWQyNzEyZSwgMHgxMzlhMDFjNywKKyAgICAweGI1ZWQwYTczLCAweDg0MDUxMGVlLCAweDIyNzIxYjVhLCAweGU3ZDUyNWQ0LCAweDQxYTIyZTYwLAorICAgIDB4NzA0YTM0ZmQsIDB4ZDYzZDNmNDksIDB4Y2MxZDlmOGIsIDB4NmE2YTk0M2YsIDB4NWI4MjhlYTIsCisgICAgMHhmZGY1ODUxNiwgMHgzODUyYmI5OCwgMHg5ZTI1YjAyYywgMHhhZmNkYWFiMSwgMHgwOWJhYTEwNSwKKyAgICAweGZmZjJkMWVjLCAweDU5ODVkYTU4LCAweDY4NmRjMGM1LCAweGNlMWFjYjcxLCAweDBiYmRmNWZmLAorICAgIDB4YWRjYWZlNGIsIDB4OWMyMmU0ZDYsIDB4M2E1NWVmNjIsIDB4YWJjMzAzNDUsIDB4MGRiNDA4ZjEsCisgICAgMHgzYzVjMTI2YywgMHg5YTJiMTlkOCwgMHg1ZjhjMjc1NiwgMHhmOWZiMmNlMiwgMHhjODEzMzY3ZiwKKyAgICAweDZlNjQzZGNiLCAweDk4MmM0ZDIyLCAweDNlNWI0Njk2LCAweDBmYjM1YzBiLCAweGE5YzQ1N2JmLAorICAgIDB4NmM2MzY5MzEsIDB4Y2ExNDYyODUsIDB4ZmJmYzc4MTgsIDB4NWQ4YjczYWMsIDB4MDNhMGE2MTcsCisgICAgMHhhNWQ3YWRhMywgMHg5NDNmYjczZSwgMHgzMjQ4YmM4YSwgMHhmN2VmODIwNCwgMHg1MTk4ODliMCwKKyAgICAweDYwNzA5MzJkLCAweGM2MDc5ODk5LCAweDMwNGZlODcwLCAweDk2MzhlM2M0LCAweGE3ZDBmOTU5LAorICAgIDB4MDFhN2YyZWQsIDB4YzQwMGNjNjMsIDB4NjI3N2M3ZDcsIDB4NTM5ZmRkNGEsIDB4ZjVlOGQ2ZmUsCisgICAgMHg2NDdlM2FkOSwgMHhjMjA5MzE2ZCwgMHhmM2UxMmJmMCwgMHg1NTk2MjA0NCwgMHg5MDMxMWVjYSwKKyAgICAweDM2NDYxNTdlLCAweDA3YWUwZmUzLCAweGExZDkwNDU3LCAweDU3OTE3NGJlLCAweGYxZTY3ZjBhLAorICAgIDB4YzAwZTY1OTcsIDB4NjY3OTZlMjMsIDB4YTNkZTUwYWQsIDB4MDVhOTViMTksIDB4MzQ0MTQxODQsCisgICAgMHg5MjM2NGEzMH0sCisgICB7MHgwMDAwMDAwMCwgMHhjYjVjZDNhNSwgMHg0ZGM4YTEwYiwgMHg4Njk0NzJhZSwgMHg5YjkxNDIxNiwKKyAgICAweDUwY2Q5MWIzLCAweGQ2NTllMzFkLCAweDFkMDUzMGI4LCAweGVjNTM4MjZkLCAweDI3MGY1MWM4LAorICAgIDB4YTE5YjIzNjYsIDB4NmFjN2YwYzMsIDB4NzdjMmMwN2IsIDB4YmM5ZTEzZGUsIDB4M2EwYTYxNzAsCisgICAgMHhmMTU2YjJkNSwgMHgwM2Q2MDI5YiwgMHhjODhhZDEzZSwgMHg0ZTFlYTM5MCwgMHg4NTQyNzAzNSwKKyAgICAweDk4NDc0MDhkLCAweDUzMWI5MzI4LCAweGQ1OGZlMTg2LCAweDFlZDMzMjIzLCAweGVmODU4MGY2LAorICAgIDB4MjRkOTUzNTMsIDB4YTI0ZDIxZmQsIDB4NjkxMWYyNTgsIDB4NzQxNGMyZTAsIDB4YmY0ODExNDUsCisgICAgMHgzOWRjNjNlYiwgMHhmMjgwYjA0ZSwgMHgwN2FjMDUzNiwgMHhjY2YwZDY5MywgMHg0YTY0YTQzZCwKKyAgICAweDgxMzg3Nzk4LCAweDljM2Q0NzIwLCAweDU3NjE5NDg1LCAweGQxZjVlNjJiLCAweDFhYTkzNThlLAorICAgIDB4ZWJmZjg3NWIsIDB4MjBhMzU0ZmUsIDB4YTYzNzI2NTAsIDB4NmQ2YmY1ZjUsIDB4NzA2ZWM1NGQsCisgICAgMHhiYjMyMTZlOCwgMHgzZGE2NjQ0NiwgMHhmNmZhYjdlMywgMHgwNDdhMDdhZCwgMHhjZjI2ZDQwOCwKKyAgICAweDQ5YjJhNmE2LCAweDgyZWU3NTAzLCAweDlmZWI0NWJiLCAweDU0Yjc5NjFlLCAweGQyMjNlNGIwLAorICAgIDB4MTk3ZjM3MTUsIDB4ZTgyOTg1YzAsIDB4MjM3NTU2NjUsIDB4YTVlMTI0Y2IsIDB4NmViZGY3NmUsCisgICAgMHg3M2I4YzdkNiwgMHhiOGU0MTQ3MywgMHgzZTcwNjZkZCwgMHhmNTJjYjU3OCwgMHgwZjU4MGE2YywKKyAgICAweGM0MDRkOWM5LCAweDQyOTBhYjY3LCAweDg5Y2M3OGMyLCAweDk0Yzk0ODdhLCAweDVmOTU5YmRmLAorICAgIDB4ZDkwMWU5NzEsIDB4MTI1ZDNhZDQsIDB4ZTMwYjg4MDEsIDB4Mjg1NzViYTQsIDB4YWVjMzI5MGEsCisgICAgMHg2NTlmZmFhZiwgMHg3ODlhY2ExNywgMHhiM2M2MTliMiwgMHgzNTUyNmIxYywgMHhmZTBlYjhiOSwKKyAgICAweDBjOGUwOGY3LCAweGM3ZDJkYjUyLCAweDQxNDZhOWZjLCAweDhhMWE3YTU5LCAweDk3MWY0YWUxLAorICAgIDB4NWM0Mzk5NDQsIDB4ZGFkN2ViZWEsIDB4MTE4YjM4NGYsIDB4ZTBkZDhhOWEsIDB4MmI4MTU5M2YsCisgICAgMHhhZDE1MmI5MSwgMHg2NjQ5ZjgzNCwgMHg3YjRjYzg4YywgMHhiMDEwMWIyOSwgMHgzNjg0Njk4NywKKyAgICAweGZkZDhiYTIyLCAweDA4ZjQwZjVhLCAweGMzYThkY2ZmLCAweDQ1M2NhZTUxLCAweDhlNjA3ZGY0LAorICAgIDB4OTM2NTRkNGMsIDB4NTgzOTllZTksIDB4ZGVhZGVjNDcsIDB4MTVmMTNmZTIsIDB4ZTRhNzhkMzcsCisgICAgMHgyZmZiNWU5MiwgMHhhOTZmMmMzYywgMHg2MjMzZmY5OSwgMHg3ZjM2Y2YyMSwgMHhiNDZhMWM4NCwKKyAgICAweDMyZmU2ZTJhLCAweGY5YTJiZDhmLCAweDBiMjIwZGMxLCAweGMwN2VkZTY0LCAweDQ2ZWFhY2NhLAorICAgIDB4OGRiNjdmNmYsIDB4OTBiMzRmZDcsIDB4NWJlZjljNzIsIDB4ZGQ3YmVlZGMsIDB4MTYyNzNkNzksCisgICAgMHhlNzcxOGZhYywgMHgyYzJkNWMwOSwgMHhhYWI5MmVhNywgMHg2MWU1ZmQwMiwgMHg3Y2UwY2RiYSwKKyAgICAweGI3YmMxZTFmLCAweDMxMjg2Y2IxLCAweGZhNzRiZjE0LCAweDFlYjAxNGQ4LCAweGQ1ZWNjNzdkLAorICAgIDB4NTM3OGI1ZDMsIDB4OTgyNDY2NzYsIDB4ODUyMTU2Y2UsIDB4NGU3ZDg1NmIsIDB4YzhlOWY3YzUsCisgICAgMHgwM2I1MjQ2MCwgMHhmMmUzOTZiNSwgMHgzOWJmNDUxMCwgMHhiZjJiMzdiZSwgMHg3NDc3ZTQxYiwKKyAgICAweDY5NzJkNGEzLCAweGEyMmUwNzA2LCAweDI0YmE3NWE4LCAweGVmZTZhNjBkLCAweDFkNjYxNjQzLAorICAgIDB4ZDYzYWM1ZTYsIDB4NTBhZWI3NDgsIDB4OWJmMjY0ZWQsIDB4ODZmNzU0NTUsIDB4NGRhYjg3ZjAsCisgICAgMHhjYjNmZjU1ZSwgMHgwMDYzMjZmYiwgMHhmMTM1OTQyZSwgMHgzYTY5NDc4YiwgMHhiY2ZkMzUyNSwKKyAgICAweDc3YTFlNjgwLCAweDZhYTRkNjM4LCAweGExZjgwNTlkLCAweDI3NmM3NzMzLCAweGVjMzBhNDk2LAorICAgIDB4MTkxYzExZWUsIDB4ZDI0MGMyNGIsIDB4NTRkNGIwZTUsIDB4OWY4ODYzNDAsIDB4ODI4ZDUzZjgsCisgICAgMHg0OWQxODA1ZCwgMHhjZjQ1ZjJmMywgMHgwNDE5MjE1NiwgMHhmNTRmOTM4MywgMHgzZTEzNDAyNiwKKyAgICAweGI4ODczMjg4LCAweDczZGJlMTJkLCAweDZlZGVkMTk1LCAweGE1ODIwMjMwLCAweDIzMTY3MDllLAorICAgIDB4ZTg0YWEzM2IsIDB4MWFjYTEzNzUsIDB4ZDE5NmMwZDAsIDB4NTcwMmIyN2UsIDB4OWM1ZTYxZGIsCisgICAgMHg4MTViNTE2MywgMHg0YTA3ODJjNiwgMHhjYzkzZjA2OCwgMHgwN2NmMjNjZCwgMHhmNjk5OTExOCwKKyAgICAweDNkYzU0MmJkLCAweGJiNTEzMDEzLCAweDcwMGRlM2I2LCAweDZkMDhkMzBlLCAweGE2NTQwMGFiLAorICAgIDB4MjBjMDcyMDUsIDB4ZWI5Y2ExYTAsIDB4MTFlODFlYjQsIDB4ZGFiNGNkMTEsIDB4NWMyMGJmYmYsCisgICAgMHg5NzdjNmMxYSwgMHg4YTc5NWNhMiwgMHg0MTI1OGYwNywgMHhjN2IxZmRhOSwgMHgwY2VkMmUwYywKKyAgICAweGZkYmI5Y2Q5LCAweDM2ZTc0ZjdjLCAweGIwNzMzZGQyLCAweDdiMmZlZTc3LCAweDY2MmFkZWNmLAorICAgIDB4YWQ3NjBkNmEsIDB4MmJlMjdmYzQsIDB4ZTBiZWFjNjEsIDB4MTIzZTFjMmYsIDB4ZDk2MmNmOGEsCisgICAgMHg1ZmY2YmQyNCwgMHg5NGFhNmU4MSwgMHg4OWFmNWUzOSwgMHg0MmYzOGQ5YywgMHhjNDY3ZmYzMiwKKyAgICAweDBmM2IyYzk3LCAweGZlNmQ5ZTQyLCAweDM1MzE0ZGU3LCAweGIzYTUzZjQ5LCAweDc4ZjllY2VjLAorICAgIDB4NjVmY2RjNTQsIDB4YWVhMDBmZjEsIDB4MjgzNDdkNWYsIDB4ZTM2OGFlZmEsIDB4MTY0NDFiODIsCisgICAgMHhkZDE4YzgyNywgMHg1YjhjYmE4OSwgMHg5MGQwNjkyYywgMHg4ZGQ1NTk5NCwgMHg0Njg5OGEzMSwKKyAgICAweGMwMWRmODlmLCAweDBiNDEyYjNhLCAweGZhMTc5OWVmLCAweDMxNGI0YTRhLCAweGI3ZGYzOGU0LAorICAgIDB4N2M4M2ViNDEsIDB4NjE4NmRiZjksIDB4YWFkYTA4NWMsIDB4MmM0ZTdhZjIsIDB4ZTcxMmE5NTcsCisgICAgMHgxNTkyMTkxOSwgMHhkZWNlY2FiYywgMHg1ODVhYjgxMiwgMHg5MzA2NmJiNywgMHg4ZTAzNWIwZiwKKyAgICAweDQ1NWY4OGFhLCAweGMzY2JmYTA0LCAweDA4OTcyOWExLCAweGY5YzE5Yjc0LCAweDMyOWQ0OGQxLAorICAgIDB4YjQwOTNhN2YsIDB4N2Y1NWU5ZGEsIDB4NjI1MGQ5NjIsIDB4YTkwYzBhYzcsIDB4MmY5ODc4NjksCisgICAgMHhlNGM0YWJjY30sCisgICB7MHgwMDAwMDAwMCwgMHgzZDYwMjliMCwgMHg3YWMwNTM2MCwgMHg0N2EwN2FkMCwgMHhmNTgwYTZjMCwKKyAgICAweGM4ZTA4ZjcwLCAweDhmNDBmNWEwLCAweGIyMjBkYzEwLCAweDMwNzA0YmMxLCAweDBkMTA2MjcxLAorICAgIDB4NGFiMDE4YTEsIDB4NzdkMDMxMTEsIDB4YzVmMGVkMDEsIDB4Zjg5MGM0YjEsIDB4YmYzMGJlNjEsCisgICAgMHg4MjUwOTdkMSwgMHg2MGUwOTc4MiwgMHg1ZDgwYmUzMiwgMHgxYTIwYzRlMiwgMHgyNzQwZWQ1MiwKKyAgICAweDk1NjAzMTQyLCAweGE4MDAxOGYyLCAweGVmYTA2MjIyLCAweGQyYzA0YjkyLCAweDUwOTBkYzQzLAorICAgIDB4NmRmMGY1ZjMsIDB4MmE1MDhmMjMsIDB4MTczMGE2OTMsIDB4YTUxMDdhODMsIDB4OTg3MDUzMzMsCisgICAgMHhkZmQwMjllMywgMHhlMmIwMDA1MywgMHhjMWMxMmYwNCwgMHhmY2ExMDZiNCwgMHhiYjAxN2M2NCwKKyAgICAweDg2NjE1NWQ0LCAweDM0NDE4OWM0LCAweDA5MjFhMDc0LCAweDRlODFkYWE0LCAweDczZTFmMzE0LAorICAgIDB4ZjFiMTY0YzUsIDB4Y2NkMTRkNzUsIDB4OGI3MTM3YTUsIDB4YjYxMTFlMTUsIDB4MDQzMWMyMDUsCisgICAgMHgzOTUxZWJiNSwgMHg3ZWYxOTE2NSwgMHg0MzkxYjhkNSwgMHhhMTIxYjg4NiwgMHg5YzQxOTEzNiwKKyAgICAweGRiZTFlYmU2LCAweGU2ODFjMjU2LCAweDU0YTExZTQ2LCAweDY5YzEzN2Y2LCAweDJlNjE0ZDI2LAorICAgIDB4MTMwMTY0OTYsIDB4OTE1MWYzNDcsIDB4YWMzMWRhZjcsIDB4ZWI5MWEwMjcsIDB4ZDZmMTg5OTcsCisgICAgMHg2NGQxNTU4NywgMHg1OWIxN2MzNywgMHgxZTExMDZlNywgMHgyMzcxMmY1NywgMHg1OGYzNTg0OSwKKyAgICAweDY1OTM3MWY5LCAweDIyMzMwYjI5LCAweDFmNTMyMjk5LCAweGFkNzNmZTg5LCAweDkwMTNkNzM5LAorICAgIDB4ZDdiM2FkZTksIDB4ZWFkMzg0NTksIDB4Njg4MzEzODgsIDB4NTVlMzNhMzgsIDB4MTI0MzQwZTgsCisgICAgMHgyZjIzNjk1OCwgMHg5ZDAzYjU0OCwgMHhhMDYzOWNmOCwgMHhlN2MzZTYyOCwgMHhkYWEzY2Y5OCwKKyAgICAweDM4MTNjZmNiLCAweDA1NzNlNjdiLCAweDQyZDM5Y2FiLCAweDdmYjNiNTFiLCAweGNkOTM2OTBiLAorICAgIDB4ZjBmMzQwYmIsIDB4Yjc1MzNhNmIsIDB4OGEzMzEzZGIsIDB4MDg2Mzg0MGEsIDB4MzUwM2FkYmEsCisgICAgMHg3MmEzZDc2YSwgMHg0ZmMzZmVkYSwgMHhmZGUzMjJjYSwgMHhjMDgzMGI3YSwgMHg4NzIzNzFhYSwKKyAgICAweGJhNDM1ODFhLCAweDk5MzI3NzRkLCAweGE0NTI1ZWZkLCAweGUzZjIyNDJkLCAweGRlOTIwZDlkLAorICAgIDB4NmNiMmQxOGQsIDB4NTFkMmY4M2QsIDB4MTY3MjgyZWQsIDB4MmIxMmFiNWQsIDB4YTk0MjNjOGMsCisgICAgMHg5NDIyMTUzYywgMHhkMzgyNmZlYywgMHhlZWUyNDY1YywgMHg1Y2MyOWE0YywgMHg2MWEyYjNmYywKKyAgICAweDI2MDJjOTJjLCAweDFiNjJlMDljLCAweGY5ZDJlMGNmLCAweGM0YjJjOTdmLCAweDgzMTJiM2FmLAorICAgIDB4YmU3MjlhMWYsIDB4MGM1MjQ2MGYsIDB4MzEzMjZmYmYsIDB4NzY5MjE1NmYsIDB4NGJmMjNjZGYsCisgICAgMHhjOWEyYWIwZSwgMHhmNGMyODJiZSwgMHhiMzYyZjg2ZSwgMHg4ZTAyZDFkZSwgMHgzYzIyMGRjZSwKKyAgICAweDAxNDIyNDdlLCAweDQ2ZTI1ZWFlLCAweDdiODI3NzFlLCAweGIxZTZiMDkyLCAweDhjODY5OTIyLAorICAgIDB4Y2IyNmUzZjIsIDB4ZjY0NmNhNDIsIDB4NDQ2NjE2NTIsIDB4NzkwNjNmZTIsIDB4M2VhNjQ1MzIsCisgICAgMHgwM2M2NmM4MiwgMHg4MTk2ZmI1MywgMHhiY2Y2ZDJlMywgMHhmYjU2YTgzMywgMHhjNjM2ODE4MywKKyAgICAweDc0MTY1ZDkzLCAweDQ5NzY3NDIzLCAweDBlZDYwZWYzLCAweDMzYjYyNzQzLCAweGQxMDYyNzEwLAorICAgIDB4ZWM2NjBlYTAsIDB4YWJjNjc0NzAsIDB4OTZhNjVkYzAsIDB4MjQ4NjgxZDAsIDB4MTllNmE4NjAsCisgICAgMHg1ZTQ2ZDJiMCwgMHg2MzI2ZmIwMCwgMHhlMTc2NmNkMSwgMHhkYzE2NDU2MSwgMHg5YmI2M2ZiMSwKKyAgICAweGE2ZDYxNjAxLCAweDE0ZjZjYTExLCAweDI5OTZlM2ExLCAweDZlMzY5OTcxLCAweDUzNTZiMGMxLAorICAgIDB4NzAyNzlmOTYsIDB4NGQ0N2I2MjYsIDB4MGFlN2NjZjYsIDB4Mzc4N2U1NDYsIDB4ODVhNzM5NTYsCisgICAgMHhiOGM3MTBlNiwgMHhmZjY3NmEzNiwgMHhjMjA3NDM4NiwgMHg0MDU3ZDQ1NywgMHg3ZDM3ZmRlNywKKyAgICAweDNhOTc4NzM3LCAweDA3ZjdhZTg3LCAweGI1ZDc3Mjk3LCAweDg4Yjc1YjI3LCAweGNmMTcyMWY3LAorICAgIDB4ZjI3NzA4NDcsIDB4MTBjNzA4MTQsIDB4MmRhNzIxYTQsIDB4NmEwNzViNzQsIDB4NTc2NzcyYzQsCisgICAgMHhlNTQ3YWVkNCwgMHhkODI3ODc2NCwgMHg5Zjg3ZmRiNCwgMHhhMmU3ZDQwNCwgMHgyMGI3NDNkNSwKKyAgICAweDFkZDc2YTY1LCAweDVhNzcxMGI1LCAweDY3MTczOTA1LCAweGQ1MzdlNTE1LCAweGU4NTdjY2E1LAorICAgIDB4YWZmN2I2NzUsIDB4OTI5NzlmYzUsIDB4ZTkxNWU4ZGIsIDB4ZDQ3NWMxNmIsIDB4OTNkNWJiYmIsCisgICAgMHhhZWI1OTIwYiwgMHgxYzk1NGUxYiwgMHgyMWY1NjdhYiwgMHg2NjU1MWQ3YiwgMHg1YjM1MzRjYiwKKyAgICAweGQ5NjVhMzFhLCAweGU0MDU4YWFhLCAweGEzYTVmMDdhLCAweDllYzVkOWNhLCAweDJjZTUwNWRhLAorICAgIDB4MTE4NTJjNmEsIDB4NTYyNTU2YmEsIDB4NmI0NTdmMGEsIDB4ODlmNTdmNTksIDB4YjQ5NTU2ZTksCisgICAgMHhmMzM1MmMzOSwgMHhjZTU1MDU4OSwgMHg3Yzc1ZDk5OSwgMHg0MTE1ZjAyOSwgMHgwNmI1OGFmOSwKKyAgICAweDNiZDVhMzQ5LCAweGI5ODUzNDk4LCAweDg0ZTUxZDI4LCAweGMzNDU2N2Y4LCAweGZlMjU0ZTQ4LAorICAgIDB4NGMwNTkyNTgsIDB4NzE2NWJiZTgsIDB4MzZjNWMxMzgsIDB4MGJhNWU4ODgsIDB4MjhkNGM3ZGYsCisgICAgMHgxNWI0ZWU2ZiwgMHg1MjE0OTRiZiwgMHg2Zjc0YmQwZiwgMHhkZDU0NjExZiwgMHhlMDM0NDhhZiwKKyAgICAweGE3OTQzMjdmLCAweDlhZjQxYmNmLCAweDE4YTQ4YzFlLCAweDI1YzRhNWFlLCAweDYyNjRkZjdlLAorICAgIDB4NWYwNGY2Y2UsIDB4ZWQyNDJhZGUsIDB4ZDA0NDAzNmUsIDB4OTdlNDc5YmUsIDB4YWE4NDUwMGUsCisgICAgMHg0ODM0NTA1ZCwgMHg3NTU0NzllZCwgMHgzMmY0MDMzZCwgMHgwZjk0MmE4ZCwgMHhiZGI0ZjY5ZCwKKyAgICAweDgwZDRkZjJkLCAweGM3NzRhNWZkLCAweGZhMTQ4YzRkLCAweDc4NDQxYjljLCAweDQ1MjQzMjJjLAorICAgIDB4MDI4NDQ4ZmMsIDB4M2ZlNDYxNGMsIDB4OGRjNGJkNWMsIDB4YjBhNDk0ZWMsIDB4ZjcwNGVlM2MsCisgICAgMHhjYTY0Yzc4Y319OworCitsb2NhbCBjb25zdCB6X3dvcmRfdCBGQVIgY3JjX2JyYWlkX2JpZ190YWJsZVtdWzI1Nl0gPSB7CisgICB7MHgwMDAwMDAwMCwgMHhiMDI5NjAzZCwgMHg2MDUzYzA3YSwgMHhkMDdhYTA0NywgMHhjMGE2ODBmNSwKKyAgICAweDcwOGZlMGM4LCAweGEwZjU0MDhmLCAweDEwZGMyMGIyLCAweGMxNGI3MDMwLCAweDcxNjIxMDBkLAorICAgIDB4YTExOGIwNGEsIDB4MTEzMWQwNzcsIDB4MDFlZGYwYzUsIDB4YjFjNDkwZjgsIDB4NjFiZTMwYmYsCisgICAgMHhkMTk3NTA4MiwgMHg4Mjk3ZTA2MCwgMHgzMmJlODA1ZCwgMHhlMmM0MjAxYSwgMHg1MmVkNDAyNywKKyAgICAweDQyMzE2MDk1LCAweGYyMTgwMGE4LCAweDIyNjJhMGVmLCAweDkyNGJjMGQyLCAweDQzZGM5MDUwLAorICAgIDB4ZjNmNWYwNmQsIDB4MjM4ZjUwMmEsIDB4OTNhNjMwMTcsIDB4ODM3YTEwYTUsIDB4MzM1MzcwOTgsCisgICAgMHhlMzI5ZDBkZiwgMHg1MzAwYjBlMiwgMHgwNDJmYzFjMSwgMHhiNDA2YTFmYywgMHg2NDdjMDFiYiwKKyAgICAweGQ0NTU2MTg2LCAweGM0ODk0MTM0LCAweDc0YTAyMTA5LCAweGE0ZGE4MTRlLCAweDE0ZjNlMTczLAorICAgIDB4YzU2NGIxZjEsIDB4NzU0ZGQxY2MsIDB4YTUzNzcxOGIsIDB4MTUxZTExYjYsIDB4MDVjMjMxMDQsCisgICAgMHhiNWViNTEzOSwgMHg2NTkxZjE3ZSwgMHhkNWI4OTE0MywgMHg4NmI4MjFhMSwgMHgzNjkxNDE5YywKKyAgICAweGU2ZWJlMWRiLCAweDU2YzI4MWU2LCAweDQ2MWVhMTU0LCAweGY2MzdjMTY5LCAweDI2NGQ2MTJlLAorICAgIDB4OTY2NDAxMTMsIDB4NDdmMzUxOTEsIDB4ZjdkYTMxYWMsIDB4MjdhMDkxZWIsIDB4OTc4OWYxZDYsCisgICAgMHg4NzU1ZDE2NCwgMHgzNzdjYjE1OSwgMHhlNzA2MTExZSwgMHg1NzJmNzEyMywgMHg0OTU4ZjM1OCwKKyAgICAweGY5NzE5MzY1LCAweDI5MGIzMzIyLCAweDk5MjI1MzFmLCAweDg5ZmU3M2FkLCAweDM5ZDcxMzkwLAorICAgIDB4ZTlhZGIzZDcsIDB4NTk4NGQzZWEsIDB4ODgxMzgzNjgsIDB4MzgzYWUzNTUsIDB4ZTg0MDQzMTIsCisgICAgMHg1ODY5MjMyZiwgMHg0OGI1MDM5ZCwgMHhmODljNjNhMCwgMHgyOGU2YzNlNywgMHg5OGNmYTNkYSwKKyAgICAweGNiY2YxMzM4LCAweDdiZTY3MzA1LCAweGFiOWNkMzQyLCAweDFiYjViMzdmLCAweDBiNjk5M2NkLAorICAgIDB4YmI0MGYzZjAsIDB4NmIzYTUzYjcsIDB4ZGIxMzMzOGEsIDB4MGE4NDYzMDgsIDB4YmFhZDAzMzUsCisgICAgMHg2YWQ3YTM3MiwgMHhkYWZlYzM0ZiwgMHhjYTIyZTNmZCwgMHg3YTBiODNjMCwgMHhhYTcxMjM4NywKKyAgICAweDFhNTg0M2JhLCAweDRkNzczMjk5LCAweGZkNWU1MmE0LCAweDJkMjRmMmUzLCAweDlkMGQ5MmRlLAorICAgIDB4OGRkMWIyNmMsIDB4M2RmOGQyNTEsIDB4ZWQ4MjcyMTYsIDB4NWRhYjEyMmIsIDB4OGMzYzQyYTksCisgICAgMHgzYzE1MjI5NCwgMHhlYzZmODJkMywgMHg1YzQ2ZTJlZSwgMHg0YzlhYzI1YywgMHhmY2IzYTI2MSwKKyAgICAweDJjYzkwMjI2LCAweDljZTA2MjFiLCAweGNmZTBkMmY5LCAweDdmYzliMmM0LCAweGFmYjMxMjgzLAorICAgIDB4MWY5YTcyYmUsIDB4MGY0NjUyMGMsIDB4YmY2ZjMyMzEsIDB4NmYxNTkyNzYsIDB4ZGYzY2YyNGIsCisgICAgMHgwZWFiYTJjOSwgMHhiZTgyYzJmNCwgMHg2ZWY4NjJiMywgMHhkZWQxMDI4ZSwgMHhjZTBkMjIzYywKKyAgICAweDdlMjQ0MjAxLCAweGFlNWVlMjQ2LCAweDFlNzc4MjdiLCAweDkyYjBlNmIxLCAweDIyOTk4NjhjLAorICAgIDB4ZjJlMzI2Y2IsIDB4NDJjYTQ2ZjYsIDB4NTIxNjY2NDQsIDB4ZTIzZjA2NzksIDB4MzI0NWE2M2UsCisgICAgMHg4MjZjYzYwMywgMHg1M2ZiOTY4MSwgMHhlM2QyZjZiYywgMHgzM2E4NTZmYiwgMHg4MzgxMzZjNiwKKyAgICAweDkzNWQxNjc0LCAweDIzNzQ3NjQ5LCAweGYzMGVkNjBlLCAweDQzMjdiNjMzLCAweDEwMjcwNmQxLAorICAgIDB4YTAwZTY2ZWMsIDB4NzA3NGM2YWIsIDB4YzA1ZGE2OTYsIDB4ZDA4MTg2MjQsIDB4NjBhOGU2MTksCisgICAgMHhiMGQyNDY1ZSwgMHgwMGZiMjY2MywgMHhkMTZjNzZlMSwgMHg2MTQ1MTZkYywgMHhiMTNmYjY5YiwKKyAgICAweDAxMTZkNmE2LCAweDExY2FmNjE0LCAweGExZTM5NjI5LCAweDcxOTkzNjZlLCAweGMxYjA1NjUzLAorICAgIDB4OTY5ZjI3NzAsIDB4MjZiNjQ3NGQsIDB4ZjZjY2U3MGEsIDB4NDZlNTg3MzcsIDB4NTYzOWE3ODUsCisgICAgMHhlNjEwYzdiOCwgMHgzNjZhNjdmZiwgMHg4NjQzMDdjMiwgMHg1N2Q0NTc0MCwgMHhlN2ZkMzc3ZCwKKyAgICAweDM3ODc5NzNhLCAweDg3YWVmNzA3LCAweDk3NzJkN2I1LCAweDI3NWJiNzg4LCAweGY3MjExN2NmLAorICAgIDB4NDcwODc3ZjIsIDB4MTQwOGM3MTAsIDB4YTQyMWE3MmQsIDB4NzQ1YjA3NmEsIDB4YzQ3MjY3NTcsCisgICAgMHhkNGFlNDdlNSwgMHg2NDg3MjdkOCwgMHhiNGZkODc5ZiwgMHgwNGQ0ZTdhMiwgMHhkNTQzYjcyMCwKKyAgICAweDY1NmFkNzFkLCAweGI1MTA3NzVhLCAweDA1MzkxNzY3LCAweDE1ZTUzN2Q1LCAweGE1Y2M1N2U4LAorICAgIDB4NzViNmY3YWYsIDB4YzU5Zjk3OTIsIDB4ZGJlODE1ZTksIDB4NmJjMTc1ZDQsIDB4YmJiYmQ1OTMsCisgICAgMHgwYjkyYjVhZSwgMHgxYjRlOTUxYywgMHhhYjY3ZjUyMSwgMHg3YjFkNTU2NiwgMHhjYjM0MzU1YiwKKyAgICAweDFhYTM2NWQ5LCAweGFhOGEwNWU0LCAweDdhZjBhNWEzLCAweGNhZDljNTllLCAweGRhMDVlNTJjLAorICAgIDB4NmEyYzg1MTEsIDB4YmE1NjI1NTYsIDB4MGE3ZjQ1NmIsIDB4NTk3ZmY1ODksIDB4ZTk1Njk1YjQsCisgICAgMHgzOTJjMzVmMywgMHg4OTA1NTVjZSwgMHg5OWQ5NzU3YywgMHgyOWYwMTU0MSwgMHhmOThhYjUwNiwKKyAgICAweDQ5YTNkNTNiLCAweDk4MzQ4NWI5LCAweDI4MWRlNTg0LCAweGY4Njc0NWMzLCAweDQ4NGUyNWZlLAorICAgIDB4NTg5MjA1NGMsIDB4ZThiYjY1NzEsIDB4MzhjMWM1MzYsIDB4ODhlOGE1MGIsIDB4ZGZjN2Q0MjgsCisgICAgMHg2ZmVlYjQxNSwgMHhiZjk0MTQ1MiwgMHgwZmJkNzQ2ZiwgMHgxZjYxNTRkZCwgMHhhZjQ4MzRlMCwKKyAgICAweDdmMzI5NGE3LCAweGNmMWJmNDlhLCAweDFlOGNhNDE4LCAweGFlYTVjNDI1LCAweDdlZGY2NDYyLAorICAgIDB4Y2VmNjA0NWYsIDB4ZGUyYTI0ZWQsIDB4NmUwMzQ0ZDAsIDB4YmU3OWU0OTcsIDB4MGU1MDg0YWEsCisgICAgMHg1ZDUwMzQ0OCwgMHhlZDc5NTQ3NSwgMHgzZDAzZjQzMiwgMHg4ZDJhOTQwZiwgMHg5ZGY2YjRiZCwKKyAgICAweDJkZGZkNDgwLCAweGZkYTU3NGM3LCAweDRkOGMxNGZhLCAweDljMWI0NDc4LCAweDJjMzIyNDQ1LAorICAgIDB4ZmM0ODg0MDIsIDB4NGM2MWU0M2YsIDB4NWNiZGM0OGQsIDB4ZWM5NGE0YjAsIDB4M2NlZTA0ZjcsCisgICAgMHg4Y2M3NjRjYX0sCisgICB7MHgwMDAwMDAwMCwgMHhhNWQzNWNjYiwgMHgwYmExYzg0ZCwgMHhhZTcyOTQ4NiwgMHgxNjQyOTE5YiwKKyAgICAweGIzOTFjZDUwLCAweDFkZTM1OWQ2LCAweGI4MzAwNTFkLCAweDZkODI1M2VjLCAweGM4NTEwZjI3LAorICAgIDB4NjYyMzliYTEsIDB4YzNmMGM3NmEsIDB4N2JjMGMyNzcsIDB4ZGUxMzllYmMsIDB4NzA2MTBhM2EsCisgICAgMHhkNWIyNTZmMSwgMHg5YjAyZDYwMywgMHgzZWQxOGFjOCwgMHg5MGEzMWU0ZSwgMHgzNTcwNDI4NSwKKyAgICAweDhkNDA0Nzk4LCAweDI4OTMxYjUzLCAweDg2ZTE4ZmQ1LCAweDIzMzJkMzFlLCAweGY2ODA4NWVmLAorICAgIDB4NTM1M2Q5MjQsIDB4ZmQyMTRkYTIsIDB4NThmMjExNjksIDB4ZTBjMjE0NzQsIDB4NDUxMTQ4YmYsCisgICAgMHhlYjYzZGMzOSwgMHg0ZWIwODBmMiwgMHgzNjA1YWMwNywgMHg5M2Q2ZjBjYywgMHgzZGE0NjQ0YSwKKyAgICAweDk4NzczODgxLCAweDIwNDczZDljLCAweDg1OTQ2MTU3LCAweDJiZTZmNWQxLCAweDhlMzVhOTFhLAorICAgIDB4NWI4N2ZmZWIsIDB4ZmU1NGEzMjAsIDB4NTAyNjM3YTYsIDB4ZjVmNTZiNmQsIDB4NGRjNTZlNzAsCisgICAgMHhlODE2MzJiYiwgMHg0NjY0YTYzZCwgMHhlM2I3ZmFmNiwgMHhhZDA3N2EwNCwgMHgwOGQ0MjZjZiwKKyAgICAweGE2YTZiMjQ5LCAweDAzNzVlZTgyLCAweGJiNDVlYjlmLCAweDFlOTZiNzU0LCAweGIwZTQyM2QyLAorICAgIDB4MTUzNzdmMTksIDB4YzA4NTI5ZTgsIDB4NjU1Njc1MjMsIDB4Y2IyNGUxYTUsIDB4NmVmN2JkNmUsCisgICAgMHhkNmM3Yjg3MywgMHg3MzE0ZTRiOCwgMHhkZDY2NzAzZSwgMHg3OGI1MmNmNSwgMHg2YzBhNTgwZiwKKyAgICAweGM5ZDkwNGM0LCAweDY3YWI5MDQyLCAweGMyNzhjYzg5LCAweDdhNDhjOTk0LCAweGRmOWI5NTVmLAorICAgIDB4NzFlOTAxZDksIDB4ZDQzYTVkMTIsIDB4MDE4ODBiZTMsIDB4YTQ1YjU3MjgsIDB4MGEyOWMzYWUsCisgICAgMHhhZmZhOWY2NSwgMHgxN2NhOWE3OCwgMHhiMjE5YzZiMywgMHgxYzZiNTIzNSwgMHhiOWI4MGVmZSwKKyAgICAweGY3MDg4ZTBjLCAweDUyZGJkMmM3LCAweGZjYTk0NjQxLCAweDU5N2ExYThhLCAweGUxNGExZjk3LAorICAgIDB4NDQ5OTQzNWMsIDB4ZWFlYmQ3ZGEsIDB4NGYzODhiMTEsIDB4OWE4YWRkZTAsIDB4M2Y1OTgxMmIsCisgICAgMHg5MTJiMTVhZCwgMHgzNGY4NDk2NiwgMHg4Y2M4NGM3YiwgMHgyOTFiMTBiMCwgMHg4NzY5ODQzNiwKKyAgICAweDIyYmFkOGZkLCAweDVhMGZmNDA4LCAweGZmZGNhOGMzLCAweDUxYWUzYzQ1LCAweGY0N2Q2MDhlLAorICAgIDB4NGM0ZDY1OTMsIDB4ZTk5ZTM5NTgsIDB4NDdlY2FkZGUsIDB4ZTIzZmYxMTUsIDB4Mzc4ZGE3ZTQsCisgICAgMHg5MjVlZmIyZiwgMHgzYzJjNmZhOSwgMHg5OWZmMzM2MiwgMHgyMWNmMzY3ZiwgMHg4NDFjNmFiNCwKKyAgICAweDJhNmVmZTMyLCAweDhmYmRhMmY5LCAweGMxMGQyMjBiLCAweDY0ZGU3ZWMwLCAweGNhYWNlYTQ2LAorICAgIDB4NmY3ZmI2OGQsIDB4ZDc0ZmIzOTAsIDB4NzI5Y2VmNWIsIDB4ZGNlZTdiZGQsIDB4NzkzZDI3MTYsCisgICAgMHhhYzhmNzFlNywgMHgwOTVjMmQyYywgMHhhNzJlYjlhYSwgMHgwMmZkZTU2MSwgMHhiYWNkZTA3YywKKyAgICAweDFmMWViY2I3LCAweGIxNmMyODMxLCAweDE0YmY3NGZhLCAweGQ4MTRiMDFlLCAweDdkYzdlY2Q1LAorICAgIDB4ZDNiNTc4NTMsIDB4NzY2NjI0OTgsIDB4Y2U1NjIxODUsIDB4NmI4NTdkNGUsIDB4YzVmN2U5YzgsCisgICAgMHg2MDI0YjUwMywgMHhiNTk2ZTNmMiwgMHgxMDQ1YmYzOSwgMHhiZTM3MmJiZiwgMHgxYmU0Nzc3NCwKKyAgICAweGEzZDQ3MjY5LCAweDA2MDcyZWEyLCAweGE4NzViYTI0LCAweDBkYTZlNmVmLCAweDQzMTY2NjFkLAorICAgIDB4ZTZjNTNhZDYsIDB4NDhiN2FlNTAsIDB4ZWQ2NGYyOWIsIDB4NTU1NGY3ODYsIDB4ZjA4N2FiNGQsCisgICAgMHg1ZWY1M2ZjYiwgMHhmYjI2NjMwMCwgMHgyZTk0MzVmMSwgMHg4YjQ3NjkzYSwgMHgyNTM1ZmRiYywKKyAgICAweDgwZTZhMTc3LCAweDM4ZDZhNDZhLCAweDlkMDVmOGExLCAweDMzNzc2YzI3LCAweDk2YTQzMGVjLAorICAgIDB4ZWUxMTFjMTksIDB4NGJjMjQwZDIsIDB4ZTViMGQ0NTQsIDB4NDA2Mzg4OWYsIDB4Zjg1MzhkODIsCisgICAgMHg1ZDgwZDE0OSwgMHhmM2YyNDVjZiwgMHg1NjIxMTkwNCwgMHg4MzkzNGZmNSwgMHgyNjQwMTMzZSwKKyAgICAweDg4MzI4N2I4LCAweDJkZTFkYjczLCAweDk1ZDFkZTZlLCAweDMwMDI4MmE1LCAweDllNzAxNjIzLAorICAgIDB4M2JhMzRhZTgsIDB4NzUxM2NhMWEsIDB4ZDBjMDk2ZDEsIDB4N2ViMjAyNTcsIDB4ZGI2MTVlOWMsCisgICAgMHg2MzUxNWI4MSwgMHhjNjgyMDc0YSwgMHg2OGYwOTNjYywgMHhjZDIzY2YwNywgMHgxODkxOTlmNiwKKyAgICAweGJkNDJjNTNkLCAweDEzMzA1MWJiLCAweGI2ZTMwZDcwLCAweDBlZDMwODZkLCAweGFiMDA1NGE2LAorICAgIDB4MDU3MmMwMjAsIDB4YTBhMTljZWIsIDB4YjQxZWU4MTEsIDB4MTFjZGI0ZGEsIDB4YmZiZjIwNWMsCisgICAgMHgxYTZjN2M5NywgMHhhMjVjNzk4YSwgMHgwNzhmMjU0MSwgMHhhOWZkYjFjNywgMHgwYzJlZWQwYywKKyAgICAweGQ5OWNiYmZkLCAweDdjNGZlNzM2LCAweGQyM2Q3M2IwLCAweDc3ZWUyZjdiLCAweGNmZGUyYTY2LAorICAgIDB4NmEwZDc2YWQsIDB4YzQ3ZmUyMmIsIDB4NjFhY2JlZTAsIDB4MmYxYzNlMTIsIDB4OGFjZjYyZDksCisgICAgMHgyNGJkZjY1ZiwgMHg4MTZlYWE5NCwgMHgzOTVlYWY4OSwgMHg5YzhkZjM0MiwgMHgzMmZmNjdjNCwKKyAgICAweDk3MmMzYjBmLCAweDQyOWU2ZGZlLCAweGU3NGQzMTM1LCAweDQ5M2ZhNWIzLCAweGVjZWNmOTc4LAorICAgIDB4NTRkY2ZjNjUsIDB4ZjEwZmEwYWUsIDB4NWY3ZDM0MjgsIDB4ZmFhZTY4ZTMsIDB4ODIxYjQ0MTYsCisgICAgMHgyN2M4MThkZCwgMHg4OWJhOGM1YiwgMHgyYzY5ZDA5MCwgMHg5NDU5ZDU4ZCwgMHgzMThhODk0NiwKKyAgICAweDlmZjgxZGMwLCAweDNhMmI0MTBiLCAweGVmOTkxN2ZhLCAweDRhNGE0YjMxLCAweGU0MzhkZmI3LAorICAgIDB4NDFlYjgzN2MsIDB4ZjlkYjg2NjEsIDB4NWMwOGRhYWEsIDB4ZjI3YTRlMmMsIDB4NTdhOTEyZTcsCisgICAgMHgxOTE5OTIxNSwgMHhiY2NhY2VkZSwgMHgxMmI4NWE1OCwgMHhiNzZiMDY5MywgMHgwZjViMDM4ZSwKKyAgICAweGFhODg1ZjQ1LCAweDA0ZmFjYmMzLCAweGExMjk5NzA4LCAweDc0OWJjMWY5LCAweGQxNDg5ZDMyLAorICAgIDB4N2YzYTA5YjQsIDB4ZGFlOTU1N2YsIDB4NjJkOTUwNjIsIDB4YzcwYTBjYTksIDB4Njk3ODk4MmYsCisgICAgMHhjY2FiYzRlNH0sCisgICB7MHgwMDAwMDAwMCwgMHhiNDBiNzdhNiwgMHgyOTExOWY5NywgMHg5ZDFhZTgzMSwgMHgxMzI0NGZmNCwKKyAgICAweGE3MmYzODUyLCAweDNhMzVkMDYzLCAweDhlM2VhN2M1LCAweDY3NGVlZjMzLCAweGQzNDU5ODk1LAorICAgIDB4NGU1ZjcwYTQsIDB4ZmE1NDA3MDIsIDB4NzQ2YWEwYzcsIDB4YzA2MWQ3NjEsIDB4NWQ3YjNmNTAsCisgICAgMHhlOTcwNDhmNiwgMHhjZTljZGU2NywgMHg3YTk3YTljMSwgMHhlNzhkNDFmMCwgMHg1Mzg2MzY1NiwKKyAgICAweGRkYjg5MTkzLCAweDY5YjNlNjM1LCAweGY0YTkwZTA0LCAweDQwYTI3OWEyLCAweGE5ZDIzMTU0LAorICAgIDB4MWRkOTQ2ZjIsIDB4ODBjM2FlYzMsIDB4MzRjOGQ5NjUsIDB4YmFmNjdlYTAsIDB4MGVmZDA5MDYsCisgICAgMHg5M2U3ZTEzNywgMHgyN2VjOTY5MSwgMHg5YzM5YmRjZiwgMHgyODMyY2E2OSwgMHhiNTI4MjI1OCwKKyAgICAweDAxMjM1NWZlLCAweDhmMWRmMjNiLCAweDNiMTY4NTlkLCAweGE2MGM2ZGFjLCAweDEyMDcxYTBhLAorICAgIDB4ZmI3NzUyZmMsIDB4NGY3YzI1NWEsIDB4ZDI2NmNkNmIsIDB4NjY2ZGJhY2QsIDB4ZTg1MzFkMDgsCisgICAgMHg1YzU4NmFhZSwgMHhjMTQyODI5ZiwgMHg3NTQ5ZjUzOSwgMHg1MmE1NjNhOCwgMHhlNmFlMTQwZSwKKyAgICAweDdiYjRmYzNmLCAweGNmYmY4Yjk5LCAweDQxODEyYzVjLCAweGY1OGE1YmZhLCAweDY4OTBiM2NiLAorICAgIDB4ZGM5YmM0NmQsIDB4MzVlYjhjOWIsIDB4ODFlMGZiM2QsIDB4MWNmYTEzMGMsIDB4YThmMTY0YWEsCisgICAgMHgyNmNmYzM2ZiwgMHg5MmM0YjRjOSwgMHgwZmRlNWNmOCwgMHhiYmQ1MmI1ZSwgMHg3OTc1MGI0NCwKKyAgICAweGNkN2U3Y2UyLCAweDUwNjQ5NGQzLCAweGU0NmZlMzc1LCAweDZhNTE0NGIwLCAweGRlNWEzMzE2LAorICAgIDB4NDM0MGRiMjcsIDB4Zjc0YmFjODEsIDB4MWUzYmU0NzcsIDB4YWEzMDkzZDEsIDB4MzcyYTdiZTAsCisgICAgMHg4MzIxMGM0NiwgMHgwZDFmYWI4MywgMHhiOTE0ZGMyNSwgMHgyNDBlMzQxNCwgMHg5MDA1NDNiMiwKKyAgICAweGI3ZTlkNTIzLCAweDAzZTJhMjg1LCAweDllZjg0YWI0LCAweDJhZjMzZDEyLCAweGE0Y2Q5YWQ3LAorICAgIDB4MTBjNmVkNzEsIDB4OGRkYzA1NDAsIDB4MzlkNzcyZTYsIDB4ZDBhNzNhMTAsIDB4NjRhYzRkYjYsCisgICAgMHhmOWI2YTU4NywgMHg0ZGJkZDIyMSwgMHhjMzgzNzVlNCwgMHg3Nzg4MDI0MiwgMHhlYTkyZWE3MywKKyAgICAweDVlOTk5ZGQ1LCAweGU1NGNiNjhiLCAweDUxNDdjMTJkLCAweGNjNWQyOTFjLCAweDc4NTY1ZWJhLAorICAgIDB4ZjY2OGY5N2YsIDB4NDI2MzhlZDksIDB4ZGY3OTY2ZTgsIDB4NmI3MjExNGUsIDB4ODIwMjU5YjgsCisgICAgMHgzNjA5MmUxZSwgMHhhYjEzYzYyZiwgMHgxZjE4YjE4OSwgMHg5MTI2MTY0YywgMHgyNTJkNjFlYSwKKyAgICAweGI4Mzc4OWRiLCAweDBjM2NmZTdkLCAweDJiZDA2OGVjLCAweDlmZGIxZjRhLCAweDAyYzFmNzdiLAorICAgIDB4YjZjYTgwZGQsIDB4MzhmNDI3MTgsIDB4OGNmZjUwYmUsIDB4MTFlNWI4OGYsIDB4YTVlZWNmMjksCisgICAgMHg0YzllODdkZiwgMHhmODk1ZjA3OSwgMHg2NThmMTg0OCwgMHhkMTg0NmZlZSwgMHg1ZmJhYzgyYiwKKyAgICAweGViYjFiZjhkLCAweDc2YWI1N2JjLCAweGMyYTAyMDFhLCAweGYyZWExNjg4LCAweDQ2ZTE2MTJlLAorICAgIDB4ZGJmYjg5MWYsIDB4NmZmMGZlYjksIDB4ZTFjZTU5N2MsIDB4NTVjNTJlZGEsIDB4YzhkZmM2ZWIsCisgICAgMHg3Y2Q0YjE0ZCwgMHg5NWE0ZjliYiwgMHgyMWFmOGUxZCwgMHhiY2I1NjYyYywgMHgwOGJlMTE4YSwKKyAgICAweDg2ODBiNjRmLCAweDMyOGJjMWU5LCAweGFmOTEyOWQ4LCAweDFiOWE1ZTdlLCAweDNjNzZjOGVmLAorICAgIDB4ODg3ZGJmNDksIDB4MTU2NzU3NzgsIDB4YTE2YzIwZGUsIDB4MmY1Mjg3MWIsIDB4OWI1OWYwYmQsCisgICAgMHgwNjQzMTg4YywgMHhiMjQ4NmYyYSwgMHg1YjM4MjdkYywgMHhlZjMzNTA3YSwgMHg3MjI5Yjg0YiwKKyAgICAweGM2MjJjZmVkLCAweDQ4MWM2ODI4LCAweGZjMTcxZjhlLCAweDYxMGRmN2JmLCAweGQ1MDY4MDE5LAorICAgIDB4NmVkM2FiNDcsIDB4ZGFkOGRjZTEsIDB4NDdjMjM0ZDAsIDB4ZjNjOTQzNzYsIDB4N2RmN2U0YjMsCisgICAgMHhjOWZjOTMxNSwgMHg1NGU2N2IyNCwgMHhlMGVkMGM4MiwgMHgwOTlkNDQ3NCwgMHhiZDk2MzNkMiwKKyAgICAweDIwOGNkYmUzLCAweDk0ODdhYzQ1LCAweDFhYjkwYjgwLCAweGFlYjI3YzI2LCAweDMzYTg5NDE3LAorICAgIDB4ODdhM2UzYjEsIDB4YTA0Zjc1MjAsIDB4MTQ0NDAyODYsIDB4ODk1ZWVhYjcsIDB4M2Q1NTlkMTEsCisgICAgMHhiMzZiM2FkNCwgMHgwNzYwNGQ3MiwgMHg5YTdhYTU0MywgMHgyZTcxZDJlNSwgMHhjNzAxOWExMywKKyAgICAweDczMGFlZGI1LCAweGVlMTAwNTg0LCAweDVhMWI3MjIyLCAweGQ0MjVkNWU3LCAweDYwMmVhMjQxLAorICAgIDB4ZmQzNDRhNzAsIDB4NDkzZjNkZDYsIDB4OGI5ZjFkY2MsIDB4M2Y5NDZhNmEsIDB4YTI4ZTgyNWIsCisgICAgMHgxNjg1ZjVmZCwgMHg5OGJiNTIzOCwgMHgyY2IwMjU5ZSwgMHhiMWFhY2RhZiwgMHgwNWExYmEwOSwKKyAgICAweGVjZDFmMmZmLCAweDU4ZGE4NTU5LCAweGM1YzA2ZDY4LCAweDcxY2IxYWNlLCAweGZmZjViZDBiLAorICAgIDB4NGJmZWNhYWQsIDB4ZDZlNDIyOWMsIDB4NjJlZjU1M2EsIDB4NDUwM2MzYWIsIDB4ZjEwOGI0MGQsCisgICAgMHg2YzEyNWMzYywgMHhkODE5MmI5YSwgMHg1NjI3OGM1ZiwgMHhlMjJjZmJmOSwgMHg3ZjM2MTNjOCwKKyAgICAweGNiM2Q2NDZlLCAweDIyNGQyYzk4LCAweDk2NDY1YjNlLCAweDBiNWNiMzBmLCAweGJmNTdjNGE5LAorICAgIDB4MzE2OTYzNmMsIDB4ODU2MjE0Y2EsIDB4MTg3OGZjZmIsIDB4YWM3MzhiNWQsIDB4MTdhNmEwMDMsCisgICAgMHhhM2FkZDdhNSwgMHgzZWI3M2Y5NCwgMHg4YWJjNDgzMiwgMHgwNDgyZWZmNywgMHhiMDg5OTg1MSwKKyAgICAweDJkOTM3MDYwLCAweDk5OTgwN2M2LCAweDcwZTg0ZjMwLCAweGM0ZTMzODk2LCAweDU5ZjlkMGE3LAorICAgIDB4ZWRmMmE3MDEsIDB4NjNjYzAwYzQsIDB4ZDdjNzc3NjIsIDB4NGFkZDlmNTMsIDB4ZmVkNmU4ZjUsCisgICAgMHhkOTNhN2U2NCwgMHg2ZDMxMDljMiwgMHhmMDJiZTFmMywgMHg0NDIwOTY1NSwgMHhjYTFlMzE5MCwKKyAgICAweDdlMTU0NjM2LCAweGUzMGZhZTA3LCAweDU3MDRkOWExLCAweGJlNzQ5MTU3LCAweDBhN2ZlNmYxLAorICAgIDB4OTc2NTBlYzAsIDB4MjM2ZTc5NjYsIDB4YWQ1MGRlYTMsIDB4MTk1YmE5MDUsIDB4ODQ0MTQxMzQsCisgICAgMHgzMDRhMzY5Mn0sCisgICB7MHgwMDAwMDAwMCwgMHg5ZTAwYWFjYywgMHg3ZDA3MjU0MiwgMHhlMzA3OGY4ZSwgMHhmYTBlNGE4NCwKKyAgICAweDY0MGVlMDQ4LCAweDg3MDk2ZmM2LCAweDE5MDljNTBhLCAweGI1MWJlNWQzLCAweDJiMWI0ZjFmLAorICAgIDB4YzgxY2MwOTEsIDB4NTYxYzZhNWQsIDB4NGYxNWFmNTcsIDB4ZDExNTA1OWIsIDB4MzIxMjhhMTUsCisgICAgMHhhYzEyMjBkOSwgMHgyYjMxYmI3YywgMHhiNTMxMTFiMCwgMHg1NjM2OWUzZSwgMHhjODM2MzRmMiwKKyAgICAweGQxM2ZmMWY4LCAweDRmM2Y1YjM0LCAweGFjMzhkNGJhLCAweDMyMzg3ZTc2LCAweDllMmE1ZWFmLAorICAgIDB4MDAyYWY0NjMsIDB4ZTMyZDdiZWQsIDB4N2QyZGQxMjEsIDB4NjQyNDE0MmIsIDB4ZmEyNGJlZTcsCisgICAgMHgxOTIzMzE2OSwgMHg4NzIzOWJhNSwgMHg1NjYyNzZmOSwgMHhjODYyZGMzNSwgMHgyYjY1NTNiYiwKKyAgICAweGI1NjVmOTc3LCAweGFjNmMzYzdkLCAweDMyNmM5NmIxLCAweGQxNmIxOTNmLCAweDRmNmJiM2YzLAorICAgIDB4ZTM3OTkzMmEsIDB4N2Q3OTM5ZTYsIDB4OWU3ZWI2NjgsIDB4MDA3ZTFjYTQsIDB4MTk3N2Q5YWUsCisgICAgMHg4Nzc3NzM2MiwgMHg2NDcwZmNlYywgMHhmYTcwNTYyMCwgMHg3ZDUzY2Q4NSwgMHhlMzUzNjc0OSwKKyAgICAweDAwNTRlOGM3LCAweDllNTQ0MjBiLCAweDg3NWQ4NzAxLCAweDE5NWQyZGNkLCAweGZhNWFhMjQzLAorICAgIDB4NjQ1YTA4OGYsIDB4Yzg0ODI4NTYsIDB4NTY0ODgyOWEsIDB4YjU0ZjBkMTQsIDB4MmI0ZmE3ZDgsCisgICAgMHgzMjQ2NjJkMiwgMHhhYzQ2YzgxZSwgMHg0ZjQxNDc5MCwgMHhkMTQxZWQ1YywgMHhlZGMyOWQyOSwKKyAgICAweDczYzIzN2U1LCAweDkwYzViODZiLCAweDBlYzUxMmE3LCAweDE3Y2NkN2FkLCAweDg5Y2M3ZDYxLAorICAgIDB4NmFjYmYyZWYsIDB4ZjRjYjU4MjMsIDB4NThkOTc4ZmEsIDB4YzZkOWQyMzYsIDB4MjVkZTVkYjgsCisgICAgMHhiYmRlZjc3NCwgMHhhMmQ3MzI3ZSwgMHgzY2Q3OThiMiwgMHhkZmQwMTczYywgMHg0MWQwYmRmMCwKKyAgICAweGM2ZjMyNjU1LCAweDU4ZjM4Yzk5LCAweGJiZjQwMzE3LCAweDI1ZjRhOWRiLCAweDNjZmQ2Y2QxLAorICAgIDB4YTJmZGM2MWQsIDB4NDFmYTQ5OTMsIDB4ZGZmYWUzNWYsIDB4NzNlOGMzODYsIDB4ZWRlODY5NGEsCisgICAgMHgwZWVmZTZjNCwgMHg5MGVmNGMwOCwgMHg4OWU2ODkwMiwgMHgxN2U2MjNjZSwgMHhmNGUxYWM0MCwKKyAgICAweDZhZTEwNjhjLCAweGJiYTBlYmQwLCAweDI1YTA0MTFjLCAweGM2YTdjZTkyLCAweDU4YTc2NDVlLAorICAgIDB4NDFhZWExNTQsIDB4ZGZhZTBiOTgsIDB4M2NhOTg0MTYsIDB4YTJhOTJlZGEsIDB4MGViYjBlMDMsCisgICAgMHg5MGJiYTRjZiwgMHg3M2JjMmI0MSwgMHhlZGJjODE4ZCwgMHhmNGI1NDQ4NywgMHg2YWI1ZWU0YiwKKyAgICAweDg5YjI2MWM1LCAweDE3YjJjYjA5LCAweDkwOTE1MGFjLCAweDBlOTFmYTYwLCAweGVkOTY3NWVlLAorICAgIDB4NzM5NmRmMjIsIDB4NmE5ZjFhMjgsIDB4ZjQ5ZmIwZTQsIDB4MTc5ODNmNmEsIDB4ODk5ODk1YTYsCisgICAgMHgyNThhYjU3ZiwgMHhiYjhhMWZiMywgMHg1ODhkOTAzZCwgMHhjNjhkM2FmMSwgMHhkZjg0ZmZmYiwKKyAgICAweDQxODQ1NTM3LCAweGEyODNkYWI5LCAweDNjODM3MDc1LCAweGRhODUzYjUzLCAweDQ0ODU5MTlmLAorICAgIDB4YTc4MjFlMTEsIDB4Mzk4MmI0ZGQsIDB4MjA4YjcxZDcsIDB4YmU4YmRiMWIsIDB4NWQ4YzU0OTUsCisgICAgMHhjMzhjZmU1OSwgMHg2ZjllZGU4MCwgMHhmMTllNzQ0YywgMHgxMjk5ZmJjMiwgMHg4Yzk5NTEwZSwKKyAgICAweDk1OTA5NDA0LCAweDBiOTAzZWM4LCAweGU4OTdiMTQ2LCAweDc2OTcxYjhhLCAweGYxYjQ4MDJmLAorICAgIDB4NmZiNDJhZTMsIDB4OGNiM2E1NmQsIDB4MTJiMzBmYTEsIDB4MGJiYWNhYWIsIDB4OTViYTYwNjcsCisgICAgMHg3NmJkZWZlOSwgMHhlOGJkNDUyNSwgMHg0NGFmNjVmYywgMHhkYWFmY2YzMCwgMHgzOWE4NDBiZSwKKyAgICAweGE3YThlYTcyLCAweGJlYTEyZjc4LCAweDIwYTE4NWI0LCAweGMzYTYwYTNhLCAweDVkYTZhMGY2LAorICAgIDB4OGNlNzRkYWEsIDB4MTJlN2U3NjYsIDB4ZjFlMDY4ZTgsIDB4NmZlMGMyMjQsIDB4NzZlOTA3MmUsCisgICAgMHhlOGU5YWRlMiwgMHgwYmVlMjI2YywgMHg5NWVlODhhMCwgMHgzOWZjYTg3OSwgMHhhN2ZjMDJiNSwKKyAgICAweDQ0ZmI4ZDNiLCAweGRhZmIyN2Y3LCAweGMzZjJlMmZkLCAweDVkZjI0ODMxLCAweGJlZjVjN2JmLAorICAgIDB4MjBmNTZkNzMsIDB4YTdkNmY2ZDYsIDB4MzlkNjVjMWEsIDB4ZGFkMWQzOTQsIDB4NDRkMTc5NTgsCisgICAgMHg1ZGQ4YmM1MiwgMHhjM2Q4MTY5ZSwgMHgyMGRmOTkxMCwgMHhiZWRmMzNkYywgMHgxMmNkMTMwNSwKKyAgICAweDhjY2RiOWM5LCAweDZmY2EzNjQ3LCAweGYxY2E5YzhiLCAweGU4YzM1OTgxLCAweDc2YzNmMzRkLAorICAgIDB4OTVjNDdjYzMsIDB4MGJjNGQ2MGYsIDB4Mzc0N2E2N2EsIDB4YTk0NzBjYjYsIDB4NGE0MDgzMzgsCisgICAgMHhkNDQwMjlmNCwgMHhjZDQ5ZWNmZSwgMHg1MzQ5NDYzMiwgMHhiMDRlYzliYywgMHgyZTRlNjM3MCwKKyAgICAweDgyNWM0M2E5LCAweDFjNWNlOTY1LCAweGZmNWI2NmViLCAweDYxNWJjYzI3LCAweDc4NTIwOTJkLAorICAgIDB4ZTY1MmEzZTEsIDB4MDU1NTJjNmYsIDB4OWI1NTg2YTMsIDB4MWM3NjFkMDYsIDB4ODI3NmI3Y2EsCisgICAgMHg2MTcxMzg0NCwgMHhmZjcxOTI4OCwgMHhlNjc4NTc4MiwgMHg3ODc4ZmQ0ZSwgMHg5YjdmNzJjMCwKKyAgICAweDA1N2ZkODBjLCAweGE5NmRmOGQ1LCAweDM3NmQ1MjE5LCAweGQ0NmFkZDk3LCAweDRhNmE3NzViLAorICAgIDB4NTM2M2IyNTEsIDB4Y2Q2MzE4OWQsIDB4MmU2NDk3MTMsIDB4YjA2NDNkZGYsIDB4NjEyNWQwODMsCisgICAgMHhmZjI1N2E0ZiwgMHgxYzIyZjVjMSwgMHg4MjIyNWYwZCwgMHg5YjJiOWEwNywgMHgwNTJiMzBjYiwKKyAgICAweGU2MmNiZjQ1LCAweDc4MmMxNTg5LCAweGQ0M2UzNTUwLCAweDRhM2U5ZjljLCAweGE5MzkxMDEyLAorICAgIDB4MzczOWJhZGUsIDB4MmUzMDdmZDQsIDB4YjAzMGQ1MTgsIDB4NTMzNzVhOTYsIDB4Y2QzN2YwNWEsCisgICAgMHg0YTE0NmJmZiwgMHhkNDE0YzEzMywgMHgzNzEzNGViZCwgMHhhOTEzZTQ3MSwgMHhiMDFhMjE3YiwKKyAgICAweDJlMWE4YmI3LCAweGNkMWQwNDM5LCAweDUzMWRhZWY1LCAweGZmMGY4ZTJjLCAweDYxMGYyNGUwLAorICAgIDB4ODIwOGFiNmUsIDB4MWMwODAxYTIsIDB4MDUwMWM0YTgsIDB4OWIwMTZlNjQsIDB4NzgwNmUxZWEsCisgICAgMHhlNjA2NGIyNn19OworCisjZW5kaWYKKworI2VuZGlmCisKKyNpZiBOID09IDMKKworI2lmIFcgPT0gOAorCitsb2NhbCBjb25zdCB6X2NyY190IEZBUiBjcmNfYnJhaWRfdGFibGVbXVsyNTZdID0geworICAgezB4MDAwMDAwMDAsIDB4ODEyNTY1MjcsIDB4ZDkzYmNjMGYsIDB4NTgxZWE5MjgsIDB4NjkwNjllNWYsCisgICAgMHhlODIzZmI3OCwgMHhiMDNkNTI1MCwgMHgzMTE4Mzc3NywgMHhkMjBkM2NiZSwgMHg1MzI4NTk5OSwKKyAgICAweDBiMzZmMGIxLCAweDhhMTM5NTk2LCAweGJiMGJhMmUxLCAweDNhMmVjN2M2LCAweDYyMzA2ZWVlLAorICAgIDB4ZTMxNTBiYzksIDB4N2Y2YjdmM2QsIDB4ZmU0ZTFhMWEsIDB4YTY1MGIzMzIsIDB4Mjc3NWQ2MTUsCisgICAgMHgxNjZkZTE2MiwgMHg5NzQ4ODQ0NSwgMHhjZjU2MmQ2ZCwgMHg0ZTczNDg0YSwgMHhhZDY2NDM4MywKKyAgICAweDJjNDMyNmE0LCAweDc0NWQ4ZjhjLCAweGY1NzhlYWFiLCAweGM0NjBkZGRjLCAweDQ1NDViOGZiLAorICAgIDB4MWQ1YjExZDMsIDB4OWM3ZTc0ZjQsIDB4ZmVkNmZlN2EsIDB4N2ZmMzliNWQsIDB4MjdlZDMyNzUsCisgICAgMHhhNmM4NTc1MiwgMHg5N2QwNjAyNSwgMHgxNmY1MDUwMiwgMHg0ZWViYWMyYSwgMHhjZmNlYzkwZCwKKyAgICAweDJjZGJjMmM0LCAweGFkZmVhN2UzLCAweGY1ZTAwZWNiLCAweDc0YzU2YmVjLCAweDQ1ZGQ1YzliLAorICAgIDB4YzRmODM5YmMsIDB4OWNlNjkwOTQsIDB4MWRjM2Y1YjMsIDB4ODFiZDgxNDcsIDB4MDA5OGU0NjAsCisgICAgMHg1ODg2NGQ0OCwgMHhkOWEzMjg2ZiwgMHhlOGJiMWYxOCwgMHg2OTllN2EzZiwgMHgzMTgwZDMxNywKKyAgICAweGIwYTViNjMwLCAweDUzYjBiZGY5LCAweGQyOTVkOGRlLCAweDhhOGI3MWY2LCAweDBiYWUxNGQxLAorICAgIDB4M2FiNjIzYTYsIDB4YmI5MzQ2ODEsIDB4ZTM4ZGVmYTksIDB4NjJhODhhOGUsIDB4MjZkY2ZhYjUsCisgICAgMHhhN2Y5OWY5MiwgMHhmZmU3MzZiYSwgMHg3ZWMyNTM5ZCwgMHg0ZmRhNjRlYSwgMHhjZWZmMDFjZCwKKyAgICAweDk2ZTFhOGU1LCAweDE3YzRjZGMyLCAweGY0ZDFjNjBiLCAweDc1ZjRhMzJjLCAweDJkZWEwYTA0LAorICAgIDB4YWNjZjZmMjMsIDB4OWRkNzU4NTQsIDB4MWNmMjNkNzMsIDB4NDRlYzk0NWIsIDB4YzVjOWYxN2MsCisgICAgMHg1OWI3ODU4OCwgMHhkODkyZTBhZiwgMHg4MDhjNDk4NywgMHgwMWE5MmNhMCwgMHgzMGIxMWJkNywKKyAgICAweGIxOTQ3ZWYwLCAweGU5OGFkN2Q4LCAweDY4YWZiMmZmLCAweDhiYmFiOTM2LCAweDBhOWZkYzExLAorICAgIDB4NTI4MTc1MzksIDB4ZDNhNDEwMWUsIDB4ZTJiYzI3NjksIDB4NjM5OTQyNGUsIDB4M2I4N2ViNjYsCisgICAgMHhiYWEyOGU0MSwgMHhkODBhMDRjZiwgMHg1OTJmNjFlOCwgMHgwMTMxYzhjMCwgMHg4MDE0YWRlNywKKyAgICAweGIxMGM5YTkwLCAweDMwMjlmZmI3LCAweDY4Mzc1NjlmLCAweGU5MTIzM2I4LCAweDBhMDczODcxLAorICAgIDB4OGIyMjVkNTYsIDB4ZDMzY2Y0N2UsIDB4NTIxOTkxNTksIDB4NjMwMWE2MmUsIDB4ZTIyNGMzMDksCisgICAgMHhiYTNhNmEyMSwgMHgzYjFmMGYwNiwgMHhhNzYxN2JmMiwgMHgyNjQ0MWVkNSwgMHg3ZTVhYjdmZCwKKyAgICAweGZmN2ZkMmRhLCAweGNlNjdlNWFkLCAweDRmNDI4MDhhLCAweDE3NWMyOWEyLCAweDk2Nzk0Yzg1LAorICAgIDB4NzU2YzQ3NGMsIDB4ZjQ0OTIyNmIsIDB4YWM1NzhiNDMsIDB4MmQ3MmVlNjQsIDB4MWM2YWQ5MTMsCisgICAgMHg5ZDRmYmMzNCwgMHhjNTUxMTUxYywgMHg0NDc0NzAzYiwgMHg0ZGI5ZjU2YSwgMHhjYzljOTA0ZCwKKyAgICAweDk0ODIzOTY1LCAweDE1YTc1YzQyLCAweDI0YmY2YjM1LCAweGE1OWEwZTEyLCAweGZkODRhNzNhLAorICAgIDB4N2NhMWMyMWQsIDB4OWZiNGM5ZDQsIDB4MWU5MWFjZjMsIDB4NDY4ZjA1ZGIsIDB4YzdhYTYwZmMsCisgICAgMHhmNmIyNTc4YiwgMHg3Nzk3MzJhYywgMHgyZjg5OWI4NCwgMHhhZWFjZmVhMywgMHgzMmQyOGE1NywKKyAgICAweGIzZjdlZjcwLCAweGViZTk0NjU4LCAweDZhY2MyMzdmLCAweDViZDQxNDA4LCAweGRhZjE3MTJmLAorICAgIDB4ODJlZmQ4MDcsIDB4MDNjYWJkMjAsIDB4ZTBkZmI2ZTksIDB4NjFmYWQzY2UsIDB4MzllNDdhZTYsCisgICAgMHhiOGMxMWZjMSwgMHg4OWQ5MjhiNiwgMHgwOGZjNGQ5MSwgMHg1MGUyZTRiOSwgMHhkMWM3ODE5ZSwKKyAgICAweGIzNmYwYjEwLCAweDMyNGE2ZTM3LCAweDZhNTRjNzFmLCAweGViNzFhMjM4LCAweGRhNjk5NTRmLAorICAgIDB4NWI0Y2YwNjgsIDB4MDM1MjU5NDAsIDB4ODI3NzNjNjcsIDB4NjE2MjM3YWUsIDB4ZTA0NzUyODksCisgICAgMHhiODU5ZmJhMSwgMHgzOTdjOWU4NiwgMHgwODY0YTlmMSwgMHg4OTQxY2NkNiwgMHhkMTVmNjVmZSwKKyAgICAweDUwN2EwMGQ5LCAweGNjMDQ3NDJkLCAweDRkMjExMTBhLCAweDE1M2ZiODIyLCAweDk0MWFkZDA1LAorICAgIDB4YTUwMmVhNzIsIDB4MjQyNzhmNTUsIDB4N2MzOTI2N2QsIDB4ZmQxYzQzNWEsIDB4MWUwOTQ4OTMsCisgICAgMHg5ZjJjMmRiNCwgMHhjNzMyODQ5YywgMHg0NjE3ZTFiYiwgMHg3NzBmZDZjYywgMHhmNjJhYjNlYiwKKyAgICAweGFlMzQxYWMzLCAweDJmMTE3ZmU0LCAweDZiNjUwZmRmLCAweGVhNDA2YWY4LCAweGIyNWVjM2QwLAorICAgIDB4MzM3YmE2ZjcsIDB4MDI2MzkxODAsIDB4ODM0NmY0YTcsIDB4ZGI1ODVkOGYsIDB4NWE3ZDM4YTgsCisgICAgMHhiOTY4MzM2MSwgMHgzODRkNTY0NiwgMHg2MDUzZmY2ZSwgMHhlMTc2OWE0OSwgMHhkMDZlYWQzZSwKKyAgICAweDUxNGJjODE5LCAweDA5NTU2MTMxLCAweDg4NzAwNDE2LCAweDE0MGU3MGUyLCAweDk1MmIxNWM1LAorICAgIDB4Y2QzNWJjZWQsIDB4NGMxMGQ5Y2EsIDB4N2QwOGVlYmQsIDB4ZmMyZDhiOWEsIDB4YTQzMzIyYjIsCisgICAgMHgyNTE2NDc5NSwgMHhjNjAzNGM1YywgMHg0NzI2Mjk3YiwgMHgxZjM4ODA1MywgMHg5ZTFkZTU3NCwKKyAgICAweGFmMDVkMjAzLCAweDJlMjBiNzI0LCAweDc2M2UxZTBjLCAweGY3MWI3YjJiLCAweDk1YjNmMWE1LAorICAgIDB4MTQ5Njk0ODIsIDB4NGM4ODNkYWEsIDB4Y2RhZDU4OGQsIDB4ZmNiNTZmZmEsIDB4N2Q5MDBhZGQsCisgICAgMHgyNThlYTNmNSwgMHhhNGFiYzZkMiwgMHg0N2JlY2QxYiwgMHhjNjliYTgzYywgMHg5ZTg1MDExNCwKKyAgICAweDFmYTA2NDMzLCAweDJlYjg1MzQ0LCAweGFmOWQzNjYzLCAweGY3ODM5ZjRiLCAweDc2YTZmYTZjLAorICAgIDB4ZWFkODhlOTgsIDB4NmJmZGViYmYsIDB4MzNlMzQyOTcsIDB4YjJjNjI3YjAsIDB4ODNkZTEwYzcsCisgICAgMHgwMmZiNzVlMCwgMHg1YWU1ZGNjOCwgMHhkYmMwYjllZiwgMHgzOGQ1YjIyNiwgMHhiOWYwZDcwMSwKKyAgICAweGUxZWU3ZTI5LCAweDYwY2IxYjBlLCAweDUxZDMyYzc5LCAweGQwZjY0OTVlLCAweDg4ZThlMDc2LAorICAgIDB4MDljZDg1NTF9LAorICAgezB4MDAwMDAwMDAsIDB4OWI3M2VhZDQsIDB4ZWQ5NmQzZTksIDB4NzZlNTM5M2QsIDB4MDA1Y2ExOTMsCisgICAgMHg5YjJmNGI0NywgMHhlZGNhNzI3YSwgMHg3NmI5OThhZSwgMHgwMGI5NDMyNiwgMHg5YmNhYTlmMiwKKyAgICAweGVkMmY5MGNmLCAweDc2NWM3YTFiLCAweDAwZTVlMmI1LCAweDliOTYwODYxLCAweGVkNzMzMTVjLAorICAgIDB4NzYwMGRiODgsIDB4MDE3Mjg2NGMsIDB4OWEwMTZjOTgsIDB4ZWNlNDU1YTUsIDB4Nzc5N2JmNzEsCisgICAgMHgwMTJlMjdkZiwgMHg5YTVkY2QwYiwgMHhlY2I4ZjQzNiwgMHg3N2NiMWVlMiwgMHgwMWNiYzU2YSwKKyAgICAweDlhYjgyZmJlLCAweGVjNWQxNjgzLCAweDc3MmVmYzU3LCAweDAxOTc2NGY5LCAweDlhZTQ4ZTJkLAorICAgIDB4ZWMwMWI3MTAsIDB4Nzc3MjVkYzQsIDB4MDJlNTBjOTgsIDB4OTk5NmU2NGMsIDB4ZWY3M2RmNzEsCisgICAgMHg3NDAwMzVhNSwgMHgwMmI5YWQwYiwgMHg5OWNhNDdkZiwgMHhlZjJmN2VlMiwgMHg3NDVjOTQzNiwKKyAgICAweDAyNWM0ZmJlLCAweDk5MmZhNTZhLCAweGVmY2E5YzU3LCAweDc0Yjk3NjgzLCAweDAyMDBlZTJkLAorICAgIDB4OTk3MzA0ZjksIDB4ZWY5NjNkYzQsIDB4NzRlNWQ3MTAsIDB4MDM5NzhhZDQsIDB4OThlNDYwMDAsCisgICAgMHhlZTAxNTkzZCwgMHg3NTcyYjNlOSwgMHgwM2NiMmI0NywgMHg5OGI4YzE5MywgMHhlZTVkZjhhZSwKKyAgICAweDc1MmUxMjdhLCAweDAzMmVjOWYyLCAweDk4NWQyMzI2LCAweGVlYjgxYTFiLCAweDc1Y2JmMGNmLAorICAgIDB4MDM3MjY4NjEsIDB4OTgwMTgyYjUsIDB4ZWVlNGJiODgsIDB4NzU5NzUxNWMsIDB4MDVjYTE5MzAsCisgICAgMHg5ZWI5ZjNlNCwgMHhlODVjY2FkOSwgMHg3MzJmMjAwZCwgMHgwNTk2YjhhMywgMHg5ZWU1NTI3NywKKyAgICAweGU4MDA2YjRhLCAweDczNzM4MTllLCAweDA1NzM1YTE2LCAweDllMDBiMGMyLCAweGU4ZTU4OWZmLAorICAgIDB4NzM5NjYzMmIsIDB4MDUyZmZiODUsIDB4OWU1YzExNTEsIDB4ZThiOTI4NmMsIDB4NzNjYWMyYjgsCisgICAgMHgwNGI4OWY3YywgMHg5ZmNiNzVhOCwgMHhlOTJlNGM5NSwgMHg3MjVkYTY0MSwgMHgwNGU0M2VlZiwKKyAgICAweDlmOTdkNDNiLCAweGU5NzJlZDA2LCAweDcyMDEwN2QyLCAweDA0MDFkYzVhLCAweDlmNzIzNjhlLAorICAgIDB4ZTk5NzBmYjMsIDB4NzJlNGU1NjcsIDB4MDQ1ZDdkYzksIDB4OWYyZTk3MWQsIDB4ZTljYmFlMjAsCisgICAgMHg3MmI4NDRmNCwgMHgwNzJmMTVhOCwgMHg5YzVjZmY3YywgMHhlYWI5YzY0MSwgMHg3MWNhMmM5NSwKKyAgICAweDA3NzNiNDNiLCAweDljMDA1ZWVmLCAweGVhZTU2N2QyLCAweDcxOTY4ZDA2LCAweDA3OTY1NjhlLAorICAgIDB4OWNlNWJjNWEsIDB4ZWEwMDg1NjcsIDB4NzE3MzZmYjMsIDB4MDdjYWY3MWQsIDB4OWNiOTFkYzksCisgICAgMHhlYTVjMjRmNCwgMHg3MTJmY2UyMCwgMHgwNjVkOTNlNCwgMHg5ZDJlNzkzMCwgMHhlYmNiNDAwZCwKKyAgICAweDcwYjhhYWQ5LCAweDA2MDEzMjc3LCAweDlkNzJkOGEzLCAweGViOTdlMTllLCAweDcwZTQwYjRhLAorICAgIDB4MDZlNGQwYzIsIDB4OWQ5NzNhMTYsIDB4ZWI3MjAzMmIsIDB4NzAwMWU5ZmYsIDB4MDZiODcxNTEsCisgICAgMHg5ZGNiOWI4NSwgMHhlYjJlYTJiOCwgMHg3MDVkNDg2YywgMHgwYjk0MzI2MCwgMHg5MGU3ZDhiNCwKKyAgICAweGU2MDJlMTg5LCAweDdkNzEwYjVkLCAweDBiYzg5M2YzLCAweDkwYmI3OTI3LCAweGU2NWU0MDFhLAorICAgIDB4N2QyZGFhY2UsIDB4MGIyZDcxNDYsIDB4OTA1ZTliOTIsIDB4ZTZiYmEyYWYsIDB4N2RjODQ4N2IsCisgICAgMHgwYjcxZDBkNSwgMHg5MDAyM2EwMSwgMHhlNmU3MDMzYywgMHg3ZDk0ZTllOCwgMHgwYWU2YjQyYywKKyAgICAweDkxOTU1ZWY4LCAweGU3NzA2N2M1LCAweDdjMDM4ZDExLCAweDBhYmExNWJmLCAweDkxYzlmZjZiLAorICAgIDB4ZTcyY2M2NTYsIDB4N2M1ZjJjODIsIDB4MGE1ZmY3MGEsIDB4OTEyYzFkZGUsIDB4ZTdjOTI0ZTMsCisgICAgMHg3Y2JhY2UzNywgMHgwYTAzNTY5OSwgMHg5MTcwYmM0ZCwgMHhlNzk1ODU3MCwgMHg3Y2U2NmZhNCwKKyAgICAweDA5NzEzZWY4LCAweDkyMDJkNDJjLCAweGU0ZTdlZDExLCAweDdmOTQwN2M1LCAweDA5MmQ5ZjZiLAorICAgIDB4OTI1ZTc1YmYsIDB4ZTRiYjRjODIsIDB4N2ZjOGE2NTYsIDB4MDljODdkZGUsIDB4OTJiYjk3MGEsCisgICAgMHhlNDVlYWUzNywgMHg3ZjJkNDRlMywgMHgwOTk0ZGM0ZCwgMHg5MmU3MzY5OSwgMHhlNDAyMGZhNCwKKyAgICAweDdmNzFlNTcwLCAweDA4MDNiOGI0LCAweDkzNzA1MjYwLCAweGU1OTU2YjVkLCAweDdlZTY4MTg5LAorICAgIDB4MDg1ZjE5MjcsIDB4OTMyY2YzZjMsIDB4ZTVjOWNhY2UsIDB4N2ViYTIwMWEsIDB4MDhiYWZiOTIsCisgICAgMHg5M2M5MTE0NiwgMHhlNTJjMjg3YiwgMHg3ZTVmYzJhZiwgMHgwOGU2NWEwMSwgMHg5Mzk1YjBkNSwKKyAgICAweGU1NzA4OWU4LCAweDdlMDM2MzNjLCAweDBlNWUyYjUwLCAweDk1MmRjMTg0LCAweGUzYzhmOGI5LAorICAgIDB4NzhiYjEyNmQsIDB4MGUwMjhhYzMsIDB4OTU3MTYwMTcsIDB4ZTM5NDU5MmEsIDB4NzhlN2IzZmUsCisgICAgMHgwZWU3Njg3NiwgMHg5NTk0ODJhMiwgMHhlMzcxYmI5ZiwgMHg3ODAyNTE0YiwgMHgwZWJiYzllNSwKKyAgICAweDk1YzgyMzMxLCAweGUzMmQxYTBjLCAweDc4NWVmMGQ4LCAweDBmMmNhZDFjLCAweDk0NWY0N2M4LAorICAgIDB4ZTJiYTdlZjUsIDB4NzljOTk0MjEsIDB4MGY3MDBjOGYsIDB4OTQwM2U2NWIsIDB4ZTJlNmRmNjYsCisgICAgMHg3OTk1MzViMiwgMHgwZjk1ZWUzYSwgMHg5NGU2MDRlZSwgMHhlMjAzM2RkMywgMHg3OTcwZDcwNywKKyAgICAweDBmYzk0ZmE5LCAweDk0YmFhNTdkLCAweGUyNWY5YzQwLCAweDc5MmM3Njk0LCAweDBjYmIyN2M4LAorICAgIDB4OTdjOGNkMWMsIDB4ZTEyZGY0MjEsIDB4N2E1ZTFlZjUsIDB4MGNlNzg2NWIsIDB4OTc5NDZjOGYsCisgICAgMHhlMTcxNTViMiwgMHg3YTAyYmY2NiwgMHgwYzAyNjRlZSwgMHg5NzcxOGUzYSwgMHhlMTk0YjcwNywKKyAgICAweDdhZTc1ZGQzLCAweDBjNWVjNTdkLCAweDk3MmQyZmE5LCAweGUxYzgxNjk0LCAweDdhYmJmYzQwLAorICAgIDB4MGRjOWExODQsIDB4OTZiYTRiNTAsIDB4ZTA1ZjcyNmQsIDB4N2IyYzk4YjksIDB4MGQ5NTAwMTcsCisgICAgMHg5NmU2ZWFjMywgMHhlMDAzZDNmZSwgMHg3YjcwMzkyYSwgMHgwZDcwZTJhMiwgMHg5NjAzMDg3NiwKKyAgICAweGUwZTYzMTRiLCAweDdiOTVkYjlmLCAweDBkMmM0MzMxLCAweDk2NWZhOWU1LCAweGUwYmE5MGQ4LAorICAgIDB4N2JjOTdhMGN9LAorICAgezB4MDAwMDAwMDAsIDB4MTcyODY0YzAsIDB4MmU1MGM5ODAsIDB4Mzk3OGFkNDAsIDB4NWNhMTkzMDAsCisgICAgMHg0Yjg5ZjdjMCwgMHg3MmYxNWE4MCwgMHg2NWQ5M2U0MCwgMHhiOTQzMjYwMCwgMHhhZTZiNDJjMCwKKyAgICAweDk3MTNlZjgwLCAweDgwM2I4YjQwLCAweGU1ZTJiNTAwLCAweGYyY2FkMWMwLCAweGNiYjI3YzgwLAorICAgIDB4ZGM5YTE4NDAsIDB4YTlmNzRhNDEsIDB4YmVkZjJlODEsIDB4ODdhNzgzYzEsIDB4OTA4ZmU3MDEsCisgICAgMHhmNTU2ZDk0MSwgMHhlMjdlYmQ4MSwgMHhkYjA2MTBjMSwgMHhjYzJlNzQwMSwgMHgxMGI0NmM0MSwKKyAgICAweDA3OWMwODgxLCAweDNlZTRhNWMxLCAweDI5Y2NjMTAxLCAweDRjMTVmZjQxLCAweDViM2Q5YjgxLAorICAgIDB4NjI0NTM2YzEsIDB4NzU2ZDUyMDEsIDB4ODg5ZjkyYzMsIDB4OWZiN2Y2MDMsIDB4YTZjZjViNDMsCisgICAgMHhiMWU3M2Y4MywgMHhkNDNlMDFjMywgMHhjMzE2NjUwMywgMHhmYTZlYzg0MywgMHhlZDQ2YWM4MywKKyAgICAweDMxZGNiNGMzLCAweDI2ZjRkMDAzLCAweDFmOGM3ZDQzLCAweDA4YTQxOTgzLCAweDZkN2QyN2MzLAorICAgIDB4N2E1NTQzMDMsIDB4NDMyZGVlNDMsIDB4NTQwNThhODMsIDB4MjE2OGQ4ODIsIDB4MzY0MGJjNDIsCisgICAgMHgwZjM4MTEwMiwgMHgxODEwNzVjMiwgMHg3ZGM5NGI4MiwgMHg2YWUxMmY0MiwgMHg1Mzk5ODIwMiwKKyAgICAweDQ0YjFlNmMyLCAweDk4MmJmZTgyLCAweDhmMDM5YTQyLCAweGI2N2IzNzAyLCAweGExNTM1M2MyLAorICAgIDB4YzQ4YTZkODIsIDB4ZDNhMjA5NDIsIDB4ZWFkYWE0MDIsIDB4ZmRmMmMwYzIsIDB4Y2E0ZTIzYzcsCisgICAgMHhkZDY2NDcwNywgMHhlNDFlZWE0NywgMHhmMzM2OGU4NywgMHg5NmVmYjBjNywgMHg4MWM3ZDQwNywKKyAgICAweGI4YmY3OTQ3LCAweGFmOTcxZDg3LCAweDczMGQwNWM3LCAweDY0MjU2MTA3LCAweDVkNWRjYzQ3LAorICAgIDB4NGE3NWE4ODcsIDB4MmZhYzk2YzcsIDB4Mzg4NGYyMDcsIDB4MDFmYzVmNDcsIDB4MTZkNDNiODcsCisgICAgMHg2M2I5Njk4NiwgMHg3NDkxMGQ0NiwgMHg0ZGU5YTAwNiwgMHg1YWMxYzRjNiwgMHgzZjE4ZmE4NiwKKyAgICAweDI4MzA5ZTQ2LCAweDExNDgzMzA2LCAweDA2NjA1N2M2LCAweGRhZmE0Zjg2LCAweGNkZDIyYjQ2LAorICAgIDB4ZjRhYTg2MDYsIDB4ZTM4MmUyYzYsIDB4ODY1YmRjODYsIDB4OTE3M2I4NDYsIDB4YTgwYjE1MDYsCisgICAgMHhiZjIzNzFjNiwgMHg0MmQxYjEwNCwgMHg1NWY5ZDVjNCwgMHg2YzgxNzg4NCwgMHg3YmE5MWM0NCwKKyAgICAweDFlNzAyMjA0LCAweDA5NTg0NmM0LCAweDMwMjBlYjg0LCAweDI3MDg4ZjQ0LCAweGZiOTI5NzA0LAorICAgIDB4ZWNiYWYzYzQsIDB4ZDVjMjVlODQsIDB4YzJlYTNhNDQsIDB4YTczMzA0MDQsIDB4YjAxYjYwYzQsCisgICAgMHg4OTYzY2Q4NCwgMHg5ZTRiYTk0NCwgMHhlYjI2ZmI0NSwgMHhmYzBlOWY4NSwgMHhjNTc2MzJjNSwKKyAgICAweGQyNWU1NjA1LCAweGI3ODc2ODQ1LCAweGEwYWYwYzg1LCAweDk5ZDdhMWM1LCAweDhlZmZjNTA1LAorICAgIDB4NTI2NWRkNDUsIDB4NDU0ZGI5ODUsIDB4N2MzNTE0YzUsIDB4NmIxZDcwMDUsIDB4MGVjNDRlNDUsCisgICAgMHgxOWVjMmE4NSwgMHgyMDk0ODdjNSwgMHgzN2JjZTMwNSwgMHg0ZmVkNDFjZiwgMHg1OGM1MjUwZiwKKyAgICAweDYxYmQ4ODRmLCAweDc2OTVlYzhmLCAweDEzNGNkMmNmLCAweDA0NjRiNjBmLCAweDNkMWMxYjRmLAorICAgIDB4MmEzNDdmOGYsIDB4ZjZhZTY3Y2YsIDB4ZTE4NjAzMGYsIDB4ZDhmZWFlNGYsIDB4Y2ZkNmNhOGYsCisgICAgMHhhYTBmZjRjZiwgMHhiZDI3OTAwZiwgMHg4NDVmM2Q0ZiwgMHg5Mzc3NTk4ZiwgMHhlNjFhMGI4ZSwKKyAgICAweGYxMzI2ZjRlLCAweGM4NGFjMjBlLCAweGRmNjJhNmNlLCAweGJhYmI5ODhlLCAweGFkOTNmYzRlLAorICAgIDB4OTRlYjUxMGUsIDB4ODNjMzM1Y2UsIDB4NWY1OTJkOGUsIDB4NDg3MTQ5NGUsIDB4NzEwOWU0MGUsCisgICAgMHg2NjIxODBjZSwgMHgwM2Y4YmU4ZSwgMHgxNGQwZGE0ZSwgMHgyZGE4NzcwZSwgMHgzYTgwMTNjZSwKKyAgICAweGM3NzJkMzBjLCAweGQwNWFiN2NjLCAweGU5MjIxYThjLCAweGZlMGE3ZTRjLCAweDliZDM0MDBjLAorICAgIDB4OGNmYjI0Y2MsIDB4YjU4Mzg5OGMsIDB4YTJhYmVkNGMsIDB4N2UzMWY1MGMsIDB4NjkxOTkxY2MsCisgICAgMHg1MDYxM2M4YywgMHg0NzQ5NTg0YywgMHgyMjkwNjYwYywgMHgzNWI4MDJjYywgMHgwY2MwYWY4YywKKyAgICAweDFiZThjYjRjLCAweDZlODU5OTRkLCAweDc5YWRmZDhkLCAweDQwZDU1MGNkLCAweDU3ZmQzNDBkLAorICAgIDB4MzIyNDBhNGQsIDB4MjUwYzZlOGQsIDB4MWM3NGMzY2QsIDB4MGI1Y2E3MGQsIDB4ZDdjNmJmNGQsCisgICAgMHhjMGVlZGI4ZCwgMHhmOTk2NzZjZCwgMHhlZWJlMTIwZCwgMHg4YjY3MmM0ZCwgMHg5YzRmNDg4ZCwKKyAgICAweGE1MzdlNWNkLCAweGIyMWY4MTBkLCAweDg1YTM2MjA4LCAweDkyOGIwNmM4LCAweGFiZjNhYjg4LAorICAgIDB4YmNkYmNmNDgsIDB4ZDkwMmYxMDgsIDB4Y2UyYTk1YzgsIDB4Zjc1MjM4ODgsIDB4ZTA3YTVjNDgsCisgICAgMHgzY2UwNDQwOCwgMHgyYmM4MjBjOCwgMHgxMmIwOGQ4OCwgMHgwNTk4ZTk0OCwgMHg2MDQxZDcwOCwKKyAgICAweDc3NjliM2M4LCAweDRlMTExZTg4LCAweDU5Mzk3YTQ4LCAweDJjNTQyODQ5LCAweDNiN2M0Yzg5LAorICAgIDB4MDIwNGUxYzksIDB4MTUyYzg1MDksIDB4NzBmNWJiNDksIDB4NjdkZGRmODksIDB4NWVhNTcyYzksCisgICAgMHg0OThkMTYwOSwgMHg5NTE3MGU0OSwgMHg4MjNmNmE4OSwgMHhiYjQ3YzdjOSwgMHhhYzZmYTMwOSwKKyAgICAweGM5YjY5ZDQ5LCAweGRlOWVmOTg5LCAweGU3ZTY1NGM5LCAweGYwY2UzMDA5LCAweDBkM2NmMGNiLAorICAgIDB4MWExNDk0MGIsIDB4MjM2YzM5NGIsIDB4MzQ0NDVkOGIsIDB4NTE5ZDYzY2IsIDB4NDZiNTA3MGIsCisgICAgMHg3ZmNkYWE0YiwgMHg2OGU1Y2U4YiwgMHhiNDdmZDZjYiwgMHhhMzU3YjIwYiwgMHg5YTJmMWY0YiwKKyAgICAweDhkMDc3YjhiLCAweGU4ZGU0NWNiLCAweGZmZjYyMTBiLCAweGM2OGU4YzRiLCAweGQxYTZlODhiLAorICAgIDB4YTRjYmJhOGEsIDB4YjNlM2RlNGEsIDB4OGE5YjczMGEsIDB4OWRiMzE3Y2EsIDB4Zjg2YTI5OGEsCisgICAgMHhlZjQyNGQ0YSwgMHhkNjNhZTAwYSwgMHhjMTEyODRjYSwgMHgxZDg4OWM4YSwgMHgwYWEwZjg0YSwKKyAgICAweDMzZDg1NTBhLCAweDI0ZjAzMWNhLCAweDQxMjkwZjhhLCAweDU2MDE2YjRhLCAweDZmNzljNjBhLAorICAgIDB4Nzg1MWEyY2F9LAorICAgezB4MDAwMDAwMDAsIDB4OWZkYTgzOWUsIDB4ZTRjNDAxN2QsIDB4N2IxZTgyZTMsIDB4MTJmOTA0YmIsCisgICAgMHg4ZDIzODcyNSwgMHhmNjNkMDVjNiwgMHg2OWU3ODY1OCwgMHgyNWYyMDk3NiwgMHhiYTI4OGFlOCwKKyAgICAweGMxMzYwODBiLCAweDVlZWM4Yjk1LCAweDM3MGIwZGNkLCAweGE4ZDE4ZTUzLCAweGQzY2YwY2IwLAorICAgIDB4NGMxNThmMmUsIDB4NGJlNDEyZWMsIDB4ZDQzZTkxNzIsIDB4YWYyMDEzOTEsIDB4MzBmYTkwMGYsCisgICAgMHg1OTFkMTY1NywgMHhjNmM3OTVjOSwgMHhiZGQ5MTcyYSwgMHgyMjAzOTRiNCwgMHg2ZTE2MWI5YSwKKyAgICAweGYxY2M5ODA0LCAweDhhZDIxYWU3LCAweDE1MDg5OTc5LCAweDdjZWYxZjIxLCAweGUzMzU5Y2JmLAorICAgIDB4OTgyYjFlNWMsIDB4MDdmMTlkYzIsIDB4OTdjODI1ZDgsIDB4MDgxMmE2NDYsIDB4NzMwYzI0YTUsCisgICAgMHhlY2Q2YTczYiwgMHg4NTMxMjE2MywgMHgxYWViYTJmZCwgMHg2MWY1MjAxZSwgMHhmZTJmYTM4MCwKKyAgICAweGIyM2EyY2FlLCAweDJkZTBhZjMwLCAweDU2ZmUyZGQzLCAweGM5MjRhZTRkLCAweGEwYzMyODE1LAorICAgIDB4M2YxOWFiOGIsIDB4NDQwNzI5NjgsIDB4ZGJkZGFhZjYsIDB4ZGMyYzM3MzQsIDB4NDNmNmI0YWEsCisgICAgMHgzOGU4MzY0OSwgMHhhNzMyYjVkNywgMHhjZWQ1MzM4ZiwgMHg1MTBmYjAxMSwgMHgyYTExMzJmMiwKKyAgICAweGI1Y2JiMTZjLCAweGY5ZGUzZTQyLCAweDY2MDRiZGRjLCAweDFkMWEzZjNmLCAweDgyYzBiY2ExLAorICAgIDB4ZWIyNzNhZjksIDB4NzRmZGI5NjcsIDB4MGZlMzNiODQsIDB4OTAzOWI4MWEsIDB4ZjRlMTRkZjEsCisgICAgMHg2YjNiY2U2ZiwgMHgxMDI1NGM4YywgMHg4ZmZmY2YxMiwgMHhlNjE4NDk0YSwgMHg3OWMyY2FkNCwKKyAgICAweDAyZGM0ODM3LCAweDlkMDZjYmE5LCAweGQxMTM0NDg3LCAweDRlYzljNzE5LCAweDM1ZDc0NWZhLAorICAgIDB4YWEwZGM2NjQsIDB4YzNlYTQwM2MsIDB4NWMzMGMzYTIsIDB4MjcyZTQxNDEsIDB4YjhmNGMyZGYsCisgICAgMHhiZjA1NWYxZCwgMHgyMGRmZGM4MywgMHg1YmMxNWU2MCwgMHhjNDFiZGRmZSwgMHhhZGZjNWJhNiwKKyAgICAweDMyMjZkODM4LCAweDQ5Mzg1YWRiLCAweGQ2ZTJkOTQ1LCAweDlhZjc1NjZiLCAweDA1MmRkNWY1LAorICAgIDB4N2UzMzU3MTYsIDB4ZTFlOWQ0ODgsIDB4ODgwZTUyZDAsIDB4MTdkNGQxNGUsIDB4NmNjYTUzYWQsCisgICAgMHhmMzEwZDAzMywgMHg2MzI5NjgyOSwgMHhmY2YzZWJiNywgMHg4N2VkNjk1NCwgMHgxODM3ZWFjYSwKKyAgICAweDcxZDA2YzkyLCAweGVlMGFlZjBjLCAweDk1MTQ2ZGVmLCAweDBhY2VlZTcxLCAweDQ2ZGI2MTVmLAorICAgIDB4ZDkwMWUyYzEsIDB4YTIxZjYwMjIsIDB4M2RjNWUzYmMsIDB4NTQyMjY1ZTQsIDB4Y2JmOGU2N2EsCisgICAgMHhiMGU2NjQ5OSwgMHgyZjNjZTcwNywgMHgyOGNkN2FjNSwgMHhiNzE3Zjk1YiwgMHhjYzA5N2JiOCwKKyAgICAweDUzZDNmODI2LCAweDNhMzQ3ZTdlLCAweGE1ZWVmZGUwLCAweGRlZjA3ZjAzLCAweDQxMmFmYzlkLAorICAgIDB4MGQzZjczYjMsIDB4OTJlNWYwMmQsIDB4ZTlmYjcyY2UsIDB4NzYyMWYxNTAsIDB4MWZjNjc3MDgsCisgICAgMHg4MDFjZjQ5NiwgMHhmYjAyNzY3NSwgMHg2NGQ4ZjVlYiwgMHgzMmIzOWRhMywgMHhhZDY5MWUzZCwKKyAgICAweGQ2Nzc5Y2RlLCAweDQ5YWQxZjQwLCAweDIwNGE5OTE4LCAweGJmOTAxYTg2LCAweGM0OGU5ODY1LAorICAgIDB4NWI1NDFiZmIsIDB4MTc0MTk0ZDUsIDB4ODg5YjE3NGIsIDB4ZjM4NTk1YTgsIDB4NmM1ZjE2MzYsCisgICAgMHgwNWI4OTA2ZSwgMHg5YTYyMTNmMCwgMHhlMTdjOTExMywgMHg3ZWE2MTI4ZCwgMHg3OTU3OGY0ZiwKKyAgICAweGU2OGQwY2QxLCAweDlkOTM4ZTMyLCAweDAyNDkwZGFjLCAweDZiYWU4YmY0LCAweGY0NzQwODZhLAorICAgIDB4OGY2YThhODksIDB4MTBiMDA5MTcsIDB4NWNhNTg2MzksIDB4YzM3ZjA1YTcsIDB4Yjg2MTg3NDQsCisgICAgMHgyN2JiMDRkYSwgMHg0ZTVjODI4MiwgMHhkMTg2MDExYywgMHhhYTk4ODNmZiwgMHgzNTQyMDA2MSwKKyAgICAweGE1N2JiODdiLCAweDNhYTEzYmU1LCAweDQxYmZiOTA2LCAweGRlNjUzYTk4LCAweGI3ODJiY2MwLAorICAgIDB4Mjg1ODNmNWUsIDB4NTM0NmJkYmQsIDB4Y2M5YzNlMjMsIDB4ODA4OWIxMGQsIDB4MWY1MzMyOTMsCisgICAgMHg2NDRkYjA3MCwgMHhmYjk3MzNlZSwgMHg5MjcwYjViNiwgMHgwZGFhMzYyOCwgMHg3NmI0YjRjYiwKKyAgICAweGU5NmUzNzU1LCAweGVlOWZhYTk3LCAweDcxNDUyOTA5LCAweDBhNWJhYmVhLCAweDk1ODEyODc0LAorICAgIDB4ZmM2NmFlMmMsIDB4NjNiYzJkYjIsIDB4MThhMmFmNTEsIDB4ODc3ODJjY2YsIDB4Y2I2ZGEzZTEsCisgICAgMHg1NGI3MjA3ZiwgMHgyZmE5YTI5YywgMHhiMDczMjEwMiwgMHhkOTk0YTc1YSwgMHg0NjRlMjRjNCwKKyAgICAweDNkNTBhNjI3LCAweGEyOGEyNWI5LCAweGM2NTJkMDUyLCAweDU5ODg1M2NjLCAweDIyOTZkMTJmLAorICAgIDB4YmQ0YzUyYjEsIDB4ZDRhYmQ0ZTksIDB4NGI3MTU3NzcsIDB4MzA2ZmQ1OTQsIDB4YWZiNTU2MGEsCisgICAgMHhlM2EwZDkyNCwgMHg3YzdhNWFiYSwgMHgwNzY0ZDg1OSwgMHg5OGJlNWJjNywgMHhmMTU5ZGQ5ZiwKKyAgICAweDZlODM1ZTAxLCAweDE1OWRkY2UyLCAweDhhNDc1ZjdjLCAweDhkYjZjMmJlLCAweDEyNmM0MTIwLAorICAgIDB4Njk3MmMzYzMsIDB4ZjZhODQwNWQsIDB4OWY0ZmM2MDUsIDB4MDA5NTQ1OWIsIDB4N2I4YmM3NzgsCisgICAgMHhlNDUxNDRlNiwgMHhhODQ0Y2JjOCwgMHgzNzllNDg1NiwgMHg0YzgwY2FiNSwgMHhkMzVhNDkyYiwKKyAgICAweGJhYmRjZjczLCAweDI1Njc0Y2VkLCAweDVlNzljZTBlLCAweGMxYTM0ZDkwLCAweDUxOWFmNThhLAorICAgIDB4Y2U0MDc2MTQsIDB4YjU1ZWY0ZjcsIDB4MmE4NDc3NjksIDB4NDM2M2YxMzEsIDB4ZGNiOTcyYWYsCisgICAgMHhhN2E3ZjA0YywgMHgzODdkNzNkMiwgMHg3NDY4ZmNmYywgMHhlYmIyN2Y2MiwgMHg5MGFjZmQ4MSwKKyAgICAweDBmNzY3ZTFmLCAweDY2OTFmODQ3LCAweGY5NGI3YmQ5LCAweDgyNTVmOTNhLCAweDFkOGY3YWE0LAorICAgIDB4MWE3ZWU3NjYsIDB4ODVhNDY0ZjgsIDB4ZmViYWU2MWIsIDB4NjE2MDY1ODUsIDB4MDg4N2UzZGQsCisgICAgMHg5NzVkNjA0MywgMHhlYzQzZTJhMCwgMHg3Mzk5NjEzZSwgMHgzZjhjZWUxMCwgMHhhMDU2NmQ4ZSwKKyAgICAweGRiNDhlZjZkLCAweDQ0OTI2Y2YzLCAweDJkNzVlYWFiLCAweGIyYWY2OTM1LCAweGM5YjFlYmQ2LAorICAgIDB4NTY2YjY4NDh9LAorICAgezB4MDAwMDAwMDAsIDB4NjU2NzNiNDYsIDB4Y2FjZTc2OGMsIDB4YWZhOTRkY2EsIDB4NGVlZGViNTksCisgICAgMHgyYjhhZDAxZiwgMHg4NDIzOWRkNSwgMHhlMTQ0YTY5MywgMHg5ZGRiZDZiMiwgMHhmOGJjZWRmNCwKKyAgICAweDU3MTVhMDNlLCAweDMyNzI5Yjc4LCAweGQzMzYzZGViLCAweGI2NTEwNmFkLCAweDE5Zjg0YjY3LAorICAgIDB4N2M5ZjcwMjEsIDB4ZTBjNmFiMjUsIDB4ODVhMTkwNjMsIDB4MmEwOGRkYTksIDB4NGY2ZmU2ZWYsCisgICAgMHhhZTJiNDA3YywgMHhjYjRjN2IzYSwgMHg2NGU1MzZmMCwgMHgwMTgyMGRiNiwgMHg3ZDFkN2Q5NywKKyAgICAweDE4N2E0NmQxLCAweGI3ZDMwYjFiLCAweGQyYjQzMDVkLCAweDMzZjA5NmNlLCAweDU2OTdhZDg4LAorICAgIDB4ZjkzZWUwNDIsIDB4OWM1OWRiMDQsIDB4MWFmYzUwMGIsIDB4N2Y5YjZiNGQsIDB4ZDAzMjI2ODcsCisgICAgMHhiNTU1MWRjMSwgMHg1NDExYmI1MiwgMHgzMTc2ODAxNCwgMHg5ZWRmY2RkZSwgMHhmYmI4ZjY5OCwKKyAgICAweDg3Mjc4NmI5LCAweGUyNDBiZGZmLCAweDRkZTlmMDM1LCAweDI4OGVjYjczLCAweGM5Y2E2ZGUwLAorICAgIDB4YWNhZDU2YTYsIDB4MDMwNDFiNmMsIDB4NjY2MzIwMmEsIDB4ZmEzYWZiMmUsIDB4OWY1ZGMwNjgsCisgICAgMHgzMGY0OGRhMiwgMHg1NTkzYjZlNCwgMHhiNGQ3MTA3NywgMHhkMWIwMmIzMSwgMHg3ZTE5NjZmYiwKKyAgICAweDFiN2U1ZGJkLCAweDY3ZTEyZDljLCAweDAyODYxNmRhLCAweGFkMmY1YjEwLCAweGM4NDg2MDU2LAorICAgIDB4MjkwY2M2YzUsIDB4NGM2YmZkODMsIDB4ZTNjMmIwNDksIDB4ODZhNThiMGYsIDB4MzVmOGEwMTYsCisgICAgMHg1MDlmOWI1MCwgMHhmZjM2ZDY5YSwgMHg5YTUxZWRkYywgMHg3YjE1NGI0ZiwgMHgxZTcyNzAwOSwKKyAgICAweGIxZGIzZGMzLCAweGQ0YmMwNjg1LCAweGE4MjM3NmE0LCAweGNkNDQ0ZGUyLCAweDYyZWQwMDI4LAorICAgIDB4MDc4YTNiNmUsIDB4ZTZjZTlkZmQsIDB4ODNhOWE2YmIsIDB4MmMwMGViNzEsIDB4NDk2N2QwMzcsCisgICAgMHhkNTNlMGIzMywgMHhiMDU5MzA3NSwgMHgxZmYwN2RiZiwgMHg3YTk3NDZmOSwgMHg5YmQzZTA2YSwKKyAgICAweGZlYjRkYjJjLCAweDUxMWQ5NmU2LCAweDM0N2FhZGEwLCAweDQ4ZTVkZDgxLCAweDJkODJlNmM3LAorICAgIDB4ODIyYmFiMGQsIDB4ZTc0YzkwNGIsIDB4MDYwODM2ZDgsIDB4NjM2ZjBkOWUsIDB4Y2NjNjQwNTQsCisgICAgMHhhOWExN2IxMiwgMHgyZjA0ZjAxZCwgMHg0YTYzY2I1YiwgMHhlNWNhODY5MSwgMHg4MGFkYmRkNywKKyAgICAweDYxZTkxYjQ0LCAweDA0OGUyMDAyLCAweGFiMjc2ZGM4LCAweGNlNDA1NjhlLCAweGIyZGYyNmFmLAorICAgIDB4ZDdiODFkZTksIDB4NzgxMTUwMjMsIDB4MWQ3NjZiNjUsIDB4ZmMzMmNkZjYsIDB4OTk1NWY2YjAsCisgICAgMHgzNmZjYmI3YSwgMHg1MzliODAzYywgMHhjZmMyNWIzOCwgMHhhYWE1NjA3ZSwgMHgwNTBjMmRiNCwKKyAgICAweDYwNmIxNmYyLCAweDgxMmZiMDYxLCAweGU0NDg4YjI3LCAweDRiZTFjNmVkLCAweDJlODZmZGFiLAorICAgIDB4NTIxOThkOGEsIDB4Mzc3ZWI2Y2MsIDB4OThkN2ZiMDYsIDB4ZmRiMGMwNDAsIDB4MWNmNDY2ZDMsCisgICAgMHg3OTkzNWQ5NSwgMHhkNjNhMTA1ZiwgMHhiMzVkMmIxOSwgMHg2YmYxNDAyYywgMHgwZTk2N2I2YSwKKyAgICAweGExM2YzNmEwLCAweGM0NTgwZGU2LCAweDI1MWNhYjc1LCAweDQwN2I5MDMzLCAweGVmZDJkZGY5LAorICAgIDB4OGFiNWU2YmYsIDB4ZjYyYTk2OWUsIDB4OTM0ZGFkZDgsIDB4M2NlNGUwMTIsIDB4NTk4M2RiNTQsCisgICAgMHhiOGM3N2RjNywgMHhkZGEwNDY4MSwgMHg3MjA5MGI0YiwgMHgxNzZlMzAwZCwgMHg4YjM3ZWIwOSwKKyAgICAweGVlNTBkMDRmLCAweDQxZjk5ZDg1LCAweDI0OWVhNmMzLCAweGM1ZGEwMDUwLCAweGEwYmQzYjE2LAorICAgIDB4MGYxNDc2ZGMsIDB4NmE3MzRkOWEsIDB4MTZlYzNkYmIsIDB4NzM4YjA2ZmQsIDB4ZGMyMjRiMzcsCisgICAgMHhiOTQ1NzA3MSwgMHg1ODAxZDZlMiwgMHgzZDY2ZWRhNCwgMHg5MmNmYTA2ZSwgMHhmN2E4OWIyOCwKKyAgICAweDcxMGQxMDI3LCAweDE0NmEyYjYxLCAweGJiYzM2NmFiLCAweGRlYTQ1ZGVkLCAweDNmZTBmYjdlLAorICAgIDB4NWE4N2MwMzgsIDB4ZjUyZThkZjIsIDB4OTA0OWI2YjQsIDB4ZWNkNmM2OTUsIDB4ODliMWZkZDMsCisgICAgMHgyNjE4YjAxOSwgMHg0MzdmOGI1ZiwgMHhhMjNiMmRjYywgMHhjNzVjMTY4YSwgMHg2OGY1NWI0MCwKKyAgICAweDBkOTI2MDA2LCAweDkxY2JiYjAyLCAweGY0YWM4MDQ0LCAweDViMDVjZDhlLCAweDNlNjJmNmM4LAorICAgIDB4ZGYyNjUwNWIsIDB4YmE0MTZiMWQsIDB4MTVlODI2ZDcsIDB4NzA4ZjFkOTEsIDB4MGMxMDZkYjAsCisgICAgMHg2OTc3NTZmNiwgMHhjNmRlMWIzYywgMHhhM2I5MjA3YSwgMHg0MmZkODZlOSwgMHgyNzlhYmRhZiwKKyAgICAweDg4MzNmMDY1LCAweGVkNTRjYjIzLCAweDVlMDllMDNhLCAweDNiNmVkYjdjLCAweDk0Yzc5NmI2LAorICAgIDB4ZjFhMGFkZjAsIDB4MTBlNDBiNjMsIDB4NzU4MzMwMjUsIDB4ZGEyYTdkZWYsIDB4YmY0ZDQ2YTksCisgICAgMHhjM2QyMzY4OCwgMHhhNmI1MGRjZSwgMHgwOTFjNDAwNCwgMHg2YzdiN2I0MiwgMHg4ZDNmZGRkMSwKKyAgICAweGU4NThlNjk3LCAweDQ3ZjFhYjVkLCAweDIyOTY5MDFiLCAweGJlY2Y0YjFmLCAweGRiYTg3MDU5LAorICAgIDB4NzQwMTNkOTMsIDB4MTE2NjA2ZDUsIDB4ZjAyMmEwNDYsIDB4OTU0NTliMDAsIDB4M2FlY2Q2Y2EsCisgICAgMHg1ZjhiZWQ4YywgMHgyMzE0OWRhZCwgMHg0NjczYTZlYiwgMHhlOWRhZWIyMSwgMHg4Y2JkZDA2NywKKyAgICAweDZkZjk3NmY0LCAweDA4OWU0ZGIyLCAweGE3MzcwMDc4LCAweGMyNTAzYjNlLCAweDQ0ZjViMDMxLAorICAgIDB4MjE5MjhiNzcsIDB4OGUzYmM2YmQsIDB4ZWI1Y2ZkZmIsIDB4MGExODViNjgsIDB4NmY3ZjYwMmUsCisgICAgMHhjMGQ2MmRlNCwgMHhhNWIxMTZhMiwgMHhkOTJlNjY4MywgMHhiYzQ5NWRjNSwgMHgxM2UwMTAwZiwKKyAgICAweDc2ODcyYjQ5LCAweDk3YzM4ZGRhLCAweGYyYTRiNjljLCAweDVkMGRmYjU2LCAweDM4NmFjMDEwLAorICAgIDB4YTQzMzFiMTQsIDB4YzE1NDIwNTIsIDB4NmVmZDZkOTgsIDB4MGI5YTU2ZGUsIDB4ZWFkZWYwNGQsCisgICAgMHg4ZmI5Y2IwYiwgMHgyMDEwODZjMSwgMHg0NTc3YmQ4NywgMHgzOWU4Y2RhNiwgMHg1YzhmZjZlMCwKKyAgICAweGYzMjZiYjJhLCAweDk2NDE4MDZjLCAweDc3MDUyNmZmLCAweDEyNjIxZGI5LCAweGJkY2I1MDczLAorICAgIDB4ZDhhYzZiMzV9LAorICAgezB4MDAwMDAwMDAsIDB4ZDdlMjgwNTgsIDB4NzRiNDA2ZjEsIDB4YTM1Njg2YTksIDB4ZTk2ODBkZTIsCisgICAgMHgzZThhOGRiYSwgMHg5ZGRjMGIxMywgMHg0YTNlOGI0YiwgMHgwOWExMWQ4NSwgMHhkZTQzOWRkZCwKKyAgICAweDdkMTUxYjc0LCAweGFhZjc5YjJjLCAweGUwYzkxMDY3LCAweDM3MmI5MDNmLCAweDk0N2QxNjk2LAorICAgIDB4NDM5Zjk2Y2UsIDB4MTM0MjNiMGEsIDB4YzRhMGJiNTIsIDB4NjdmNjNkZmIsIDB4YjAxNGJkYTMsCisgICAgMHhmYTJhMzZlOCwgMHgyZGM4YjZiMCwgMHg4ZTllMzAxOSwgMHg1OTdjYjA0MSwgMHgxYWUzMjY4ZiwKKyAgICAweGNkMDFhNmQ3LCAweDZlNTcyMDdlLCAweGI5YjVhMDI2LCAweGYzOGIyYjZkLCAweDI0NjlhYjM1LAorICAgIDB4ODczZjJkOWMsIDB4NTBkZGFkYzQsIDB4MjY4NDc2MTQsIDB4ZjE2NmY2NGMsIDB4NTIzMDcwZTUsCisgICAgMHg4NWQyZjBiZCwgMHhjZmVjN2JmNiwgMHgxODBlZmJhZSwgMHhiYjU4N2QwNywgMHg2Y2JhZmQ1ZiwKKyAgICAweDJmMjU2YjkxLCAweGY4YzdlYmM5LCAweDViOTE2ZDYwLCAweDhjNzNlZDM4LCAweGM2NGQ2NjczLAorICAgIDB4MTFhZmU2MmIsIDB4YjJmOTYwODIsIDB4NjUxYmUwZGEsIDB4MzVjNjRkMWUsIDB4ZTIyNGNkNDYsCisgICAgMHg0MTcyNGJlZiwgMHg5NjkwY2JiNywgMHhkY2FlNDBmYywgMHgwYjRjYzBhNCwgMHhhODFhNDYwZCwKKyAgICAweDdmZjhjNjU1LCAweDNjNjc1MDliLCAweGViODVkMGMzLCAweDQ4ZDM1NjZhLCAweDlmMzFkNjMyLAorICAgIDB4ZDUwZjVkNzksIDB4MDJlZGRkMjEsIDB4YTFiYjViODgsIDB4NzY1OWRiZDAsIDB4NGQwOGVjMjgsCisgICAgMHg5YWVhNmM3MCwgMHgzOWJjZWFkOSwgMHhlZTVlNmE4MSwgMHhhNDYwZTFjYSwgMHg3MzgyNjE5MiwKKyAgICAweGQwZDRlNzNiLCAweDA3MzY2NzYzLCAweDQ0YTlmMWFkLCAweDkzNGI3MWY1LCAweDMwMWRmNzVjLAorICAgIDB4ZTdmZjc3MDQsIDB4YWRjMWZjNGYsIDB4N2EyMzdjMTcsIDB4ZDk3NWZhYmUsIDB4MGU5NzdhZTYsCisgICAgMHg1ZTRhZDcyMiwgMHg4OWE4NTc3YSwgMHgyYWZlZDFkMywgMHhmZDFjNTE4YiwgMHhiNzIyZGFjMCwKKyAgICAweDYwYzA1YTk4LCAweGMzOTZkYzMxLCAweDE0NzQ1YzY5LCAweDU3ZWJjYWE3LCAweDgwMDk0YWZmLAorICAgIDB4MjM1ZmNjNTYsIDB4ZjRiZDRjMGUsIDB4YmU4M2M3NDUsIDB4Njk2MTQ3MWQsIDB4Y2EzN2MxYjQsCisgICAgMHgxZGQ1NDFlYywgMHg2YjhjOWEzYywgMHhiYzZlMWE2NCwgMHgxZjM4OWNjZCwgMHhjOGRhMWM5NSwKKyAgICAweDgyZTQ5N2RlLCAweDU1MDYxNzg2LCAweGY2NTA5MTJmLCAweDIxYjIxMTc3LCAweDYyMmQ4N2I5LAorICAgIDB4YjVjZjA3ZTEsIDB4MTY5OTgxNDgsIDB4YzE3YjAxMTAsIDB4OGI0NThhNWIsIDB4NWNhNzBhMDMsCisgICAgMHhmZmYxOGNhYSwgMHgyODEzMGNmMiwgMHg3OGNlYTEzNiwgMHhhZjJjMjE2ZSwgMHgwYzdhYTdjNywKKyAgICAweGRiOTgyNzlmLCAweDkxYTZhY2Q0LCAweDQ2NDQyYzhjLCAweGU1MTJhYTI1LCAweDMyZjAyYTdkLAorICAgIDB4NzE2ZmJjYjMsIDB4YTY4ZDNjZWIsIDB4MDVkYmJhNDIsIDB4ZDIzOTNhMWEsIDB4OTgwN2IxNTEsCisgICAgMHg0ZmU1MzEwOSwgMHhlY2IzYjdhMCwgMHgzYjUxMzdmOCwgMHg5YTExZDg1MCwgMHg0ZGYzNTgwOCwKKyAgICAweGVlYTVkZWExLCAweDM5NDc1ZWY5LCAweDczNzlkNWIyLCAweGE0OWI1NWVhLCAweDA3Y2RkMzQzLAorICAgIDB4ZDAyZjUzMWIsIDB4OTNiMGM1ZDUsIDB4NDQ1MjQ1OGQsIDB4ZTcwNGMzMjQsIDB4MzBlNjQzN2MsCisgICAgMHg3YWQ4YzgzNywgMHhhZDNhNDg2ZiwgMHgwZTZjY2VjNiwgMHhkOThlNGU5ZSwgMHg4OTUzZTM1YSwKKyAgICAweDVlYjE2MzAyLCAweGZkZTdlNWFiLCAweDJhMDU2NWYzLCAweDYwM2JlZWI4LCAweGI3ZDk2ZWUwLAorICAgIDB4MTQ4ZmU4NDksIDB4YzM2ZDY4MTEsIDB4ODBmMmZlZGYsIDB4NTcxMDdlODcsIDB4ZjQ0NmY4MmUsCisgICAgMHgyM2E0Nzg3NiwgMHg2OTlhZjMzZCwgMHhiZTc4NzM2NSwgMHgxZDJlZjVjYywgMHhjYWNjNzU5NCwKKyAgICAweGJjOTVhZTQ0LCAweDZiNzcyZTFjLCAweGM4MjFhOGI1LCAweDFmYzMyOGVkLCAweDU1ZmRhM2E2LAorICAgIDB4ODIxZjIzZmUsIDB4MjE0OWE1NTcsIDB4ZjZhYjI1MGYsIDB4YjUzNGIzYzEsIDB4NjJkNjMzOTksCisgICAgMHhjMTgwYjUzMCwgMHgxNjYyMzU2OCwgMHg1YzVjYmUyMywgMHg4YmJlM2U3YiwgMHgyOGU4YjhkMiwKKyAgICAweGZmMGEzODhhLCAweGFmZDc5NTRlLCAweDc4MzUxNTE2LCAweGRiNjM5M2JmLCAweDBjODExM2U3LAorICAgIDB4NDZiZjk4YWMsIDB4OTE1ZDE4ZjQsIDB4MzIwYjllNWQsIDB4ZTVlOTFlMDUsIDB4YTY3Njg4Y2IsCisgICAgMHg3MTk0MDg5MywgMHhkMmMyOGUzYSwgMHgwNTIwMGU2MiwgMHg0ZjFlODUyOSwgMHg5OGZjMDU3MSwKKyAgICAweDNiYWE4M2Q4LCAweGVjNDgwMzgwLCAweGQ3MTkzNDc4LCAweDAwZmJiNDIwLCAweGEzYWQzMjg5LAorICAgIDB4NzQ0ZmIyZDEsIDB4M2U3MTM5OWEsIDB4ZTk5M2I5YzIsIDB4NGFjNTNmNmIsIDB4OWQyN2JmMzMsCisgICAgMHhkZWI4MjlmZCwgMHgwOTVhYTlhNSwgMHhhYTBjMmYwYywgMHg3ZGVlYWY1NCwgMHgzN2QwMjQxZiwKKyAgICAweGUwMzJhNDQ3LCAweDQzNjQyMmVlLCAweDk0ODZhMmI2LCAweGM0NWIwZjcyLCAweDEzYjk4ZjJhLAorICAgIDB4YjBlZjA5ODMsIDB4NjcwZDg5ZGIsIDB4MmQzMzAyOTAsIDB4ZmFkMTgyYzgsIDB4NTk4NzA0NjEsCisgICAgMHg4ZTY1ODQzOSwgMHhjZGZhMTJmNywgMHgxYTE4OTJhZiwgMHhiOTRlMTQwNiwgMHg2ZWFjOTQ1ZSwKKyAgICAweDI0OTIxZjE1LCAweGYzNzA5ZjRkLCAweDUwMjYxOWU0LCAweDg3YzQ5OWJjLCAweGYxOWQ0MjZjLAorICAgIDB4MjY3ZmMyMzQsIDB4ODUyOTQ0OWQsIDB4NTJjYmM0YzUsIDB4MThmNTRmOGUsIDB4Y2YxN2NmZDYsCisgICAgMHg2YzQxNDk3ZiwgMHhiYmEzYzkyNywgMHhmODNjNWZlOSwgMHgyZmRlZGZiMSwgMHg4Yzg4NTkxOCwKKyAgICAweDViNmFkOTQwLCAweDExNTQ1MjBiLCAweGM2YjZkMjUzLCAweDY1ZTA1NGZhLCAweGIyMDJkNGEyLAorICAgIDB4ZTJkZjc5NjYsIDB4MzUzZGY5M2UsIDB4OTY2YjdmOTcsIDB4NDE4OWZmY2YsIDB4MGJiNzc0ODQsCisgICAgMHhkYzU1ZjRkYywgMHg3ZjAzNzI3NSwgMHhhOGUxZjIyZCwgMHhlYjdlNjRlMywgMHgzYzljZTRiYiwKKyAgICAweDlmY2E2MjEyLCAweDQ4MjhlMjRhLCAweDAyMTY2OTAxLCAweGQ1ZjRlOTU5LCAweDc2YTI2ZmYwLAorICAgIDB4YTE0MGVmYTh9LAorICAgezB4MDAwMDAwMDAsIDB4ZWY1MmI2ZTEsIDB4MDVkNDZiODMsIDB4ZWE4NmRkNjIsIDB4MGJhOGQ3MDYsCisgICAgMHhlNGZhNjFlNywgMHgwZTdjYmM4NSwgMHhlMTJlMGE2NCwgMHgxNzUxYWUwYywgMHhmODAzMThlZCwKKyAgICAweDEyODVjNThmLCAweGZkZDc3MzZlLCAweDFjZjk3OTBhLCAweGYzYWJjZmViLCAweDE5MmQxMjg5LAorICAgIDB4ZjY3ZmE0NjgsIDB4MmVhMzVjMTgsIDB4YzFmMWVhZjksIDB4MmI3NzM3OWIsIDB4YzQyNTgxN2EsCisgICAgMHgyNTBiOGIxZSwgMHhjYTU5M2RmZiwgMHgyMGRmZTA5ZCwgMHhjZjhkNTY3YywgMHgzOWYyZjIxNCwKKyAgICAweGQ2YTA0NGY1LCAweDNjMjY5OTk3LCAweGQzNzQyZjc2LCAweDMyNWEyNTEyLCAweGRkMDg5M2YzLAorICAgIDB4Mzc4ZTRlOTEsIDB4ZDhkY2Y4NzAsIDB4NWQ0NmI4MzAsIDB4YjIxNDBlZDEsIDB4NTg5MmQzYjMsCisgICAgMHhiN2MwNjU1MiwgMHg1NmVlNmYzNiwgMHhiOWJjZDlkNywgMHg1MzNhMDRiNSwgMHhiYzY4YjI1NCwKKyAgICAweDRhMTcxNjNjLCAweGE1NDVhMGRkLCAweDRmYzM3ZGJmLCAweGEwOTFjYjVlLCAweDQxYmZjMTNhLAorICAgIDB4YWVlZDc3ZGIsIDB4NDQ2YmFhYjksIDB4YWIzOTFjNTgsIDB4NzNlNWU0MjgsIDB4OWNiNzUyYzksCisgICAgMHg3NjMxOGZhYiwgMHg5OTYzMzk0YSwgMHg3ODRkMzMyZSwgMHg5NzFmODVjZiwgMHg3ZDk5NThhZCwKKyAgICAweDkyY2JlZTRjLCAweDY0YjQ0YTI0LCAweDhiZTZmY2M1LCAweDYxNjAyMWE3LCAweDhlMzI5NzQ2LAorICAgIDB4NmYxYzlkMjIsIDB4ODA0ZTJiYzMsIDB4NmFjOGY2YTEsIDB4ODU5YTQwNDAsIDB4YmE4ZDcwNjAsCisgICAgMHg1NWRmYzY4MSwgMHhiZjU5MWJlMywgMHg1MDBiYWQwMiwgMHhiMTI1YTc2NiwgMHg1ZTc3MTE4NywKKyAgICAweGI0ZjFjY2U1LCAweDViYTM3YTA0LCAweGFkZGNkZTZjLCAweDQyOGU2ODhkLCAweGE4MDhiNWVmLAorICAgIDB4NDc1YTAzMGUsIDB4YTY3NDA5NmEsIDB4NDkyNmJmOGIsIDB4YTNhMDYyZTksIDB4NGNmMmQ0MDgsCisgICAgMHg5NDJlMmM3OCwgMHg3YjdjOWE5OSwgMHg5MWZhNDdmYiwgMHg3ZWE4ZjExYSwgMHg5Zjg2ZmI3ZSwKKyAgICAweDcwZDQ0ZDlmLCAweDlhNTI5MGZkLCAweDc1MDAyNjFjLCAweDgzN2Y4Mjc0LCAweDZjMmQzNDk1LAorICAgIDB4ODZhYmU5ZjcsIDB4NjlmOTVmMTYsIDB4ODhkNzU1NzIsIDB4Njc4NWUzOTMsIDB4OGQwMzNlZjEsCisgICAgMHg2MjUxODgxMCwgMHhlN2NiYzg1MCwgMHgwODk5N2ViMSwgMHhlMjFmYTNkMywgMHgwZDRkMTUzMiwKKyAgICAweGVjNjMxZjU2LCAweDAzMzFhOWI3LCAweGU5Yjc3NGQ1LCAweDA2ZTVjMjM0LCAweGYwOWE2NjVjLAorICAgIDB4MWZjOGQwYmQsIDB4ZjU0ZTBkZGYsIDB4MWExY2JiM2UsIDB4ZmIzMmIxNWEsIDB4MTQ2MDA3YmIsCisgICAgMHhmZWU2ZGFkOSwgMHgxMWI0NmMzOCwgMHhjOTY4OTQ0OCwgMHgyNjNhMjJhOSwgMHhjY2JjZmZjYiwKKyAgICAweDIzZWU0OTJhLCAweGMyYzA0MzRlLCAweDJkOTJmNWFmLCAweGM3MTQyOGNkLCAweDI4NDY5ZTJjLAorICAgIDB4ZGUzOTNhNDQsIDB4MzE2YjhjYTUsIDB4ZGJlZDUxYzcsIDB4MzRiZmU3MjYsIDB4ZDU5MWVkNDIsCisgICAgMHgzYWMzNWJhMywgMHhkMDQ1ODZjMSwgMHgzZjE3MzAyMCwgMHhhZTZiZTY4MSwgMHg0MTM5NTA2MCwKKyAgICAweGFiYmY4ZDAyLCAweDQ0ZWQzYmUzLCAweGE1YzMzMTg3LCAweDRhOTE4NzY2LCAweGEwMTc1YTA0LAorICAgIDB4NGY0NWVjZTUsIDB4YjkzYTQ4OGQsIDB4NTY2OGZlNmMsIDB4YmNlZTIzMGUsIDB4NTNiYzk1ZWYsCisgICAgMHhiMjkyOWY4YiwgMHg1ZGMwMjk2YSwgMHhiNzQ2ZjQwOCwgMHg1ODE0NDJlOSwgMHg4MGM4YmE5OSwKKyAgICAweDZmOWEwYzc4LCAweDg1MWNkMTFhLCAweDZhNGU2N2ZiLCAweDhiNjA2ZDlmLCAweDY0MzJkYjdlLAorICAgIDB4OGViNDA2MWMsIDB4NjFlNmIwZmQsIDB4OTc5OTE0OTUsIDB4NzhjYmEyNzQsIDB4OTI0ZDdmMTYsCisgICAgMHg3ZDFmYzlmNywgMHg5YzMxYzM5MywgMHg3MzYzNzU3MiwgMHg5OWU1YTgxMCwgMHg3NmI3MWVmMSwKKyAgICAweGYzMmQ1ZWIxLCAweDFjN2ZlODUwLCAweGY2ZjkzNTMyLCAweDE5YWI4M2QzLCAweGY4ODU4OWI3LAorICAgIDB4MTdkNzNmNTYsIDB4ZmQ1MWUyMzQsIDB4MTIwMzU0ZDUsIDB4ZTQ3Y2YwYmQsIDB4MGIyZTQ2NWMsCisgICAgMHhlMWE4OWIzZSwgMHgwZWZhMmRkZiwgMHhlZmQ0MjdiYiwgMHgwMDg2OTE1YSwgMHhlYTAwNGMzOCwKKyAgICAweDA1NTJmYWQ5LCAweGRkOGUwMmE5LCAweDMyZGNiNDQ4LCAweGQ4NWE2OTJhLCAweDM3MDhkZmNiLAorICAgIDB4ZDYyNmQ1YWYsIDB4Mzk3NDYzNGUsIDB4ZDNmMmJlMmMsIDB4M2NhMDA4Y2QsIDB4Y2FkZmFjYTUsCisgICAgMHgyNThkMWE0NCwgMHhjZjBiYzcyNiwgMHgyMDU5NzFjNywgMHhjMTc3N2JhMywgMHgyZTI1Y2Q0MiwKKyAgICAweGM0YTMxMDIwLCAweDJiZjFhNmMxLCAweDE0ZTY5NmUxLCAweGZiYjQyMDAwLCAweDExMzJmZDYyLAorICAgIDB4ZmU2MDRiODMsIDB4MWY0ZTQxZTcsIDB4ZjAxY2Y3MDYsIDB4MWE5YTJhNjQsIDB4ZjVjODljODUsCisgICAgMHgwM2I3MzhlZCwgMHhlY2U1OGUwYywgMHgwNjYzNTM2ZSwgMHhlOTMxZTU4ZiwgMHgwODFmZWZlYiwKKyAgICAweGU3NGQ1OTBhLCAweDBkY2I4NDY4LCAweGUyOTkzMjg5LCAweDNhNDVjYWY5LCAweGQ1MTc3YzE4LAorICAgIDB4M2Y5MWExN2EsIDB4ZDBjMzE3OWIsIDB4MzFlZDFkZmYsIDB4ZGViZmFiMWUsIDB4MzQzOTc2N2MsCisgICAgMHhkYjZiYzA5ZCwgMHgyZDE0NjRmNSwgMHhjMjQ2ZDIxNCwgMHgyOGMwMGY3NiwgMHhjNzkyYjk5NywKKyAgICAweDI2YmNiM2YzLCAweGM5ZWUwNTEyLCAweDIzNjhkODcwLCAweGNjM2E2ZTkxLCAweDQ5YTAyZWQxLAorICAgIDB4YTZmMjk4MzAsIDB4NGM3NDQ1NTIsIDB4YTMyNmYzYjMsIDB4NDIwOGY5ZDcsIDB4YWQ1YTRmMzYsCisgICAgMHg0N2RjOTI1NCwgMHhhODhlMjRiNSwgMHg1ZWYxODBkZCwgMHhiMWEzMzYzYywgMHg1YjI1ZWI1ZSwKKyAgICAweGI0Nzc1ZGJmLCAweDU1NTk1N2RiLCAweGJhMGJlMTNhLCAweDUwOGQzYzU4LCAweGJmZGY4YWI5LAorICAgIDB4NjcwMzcyYzksIDB4ODg1MWM0MjgsIDB4NjJkNzE5NGEsIDB4OGQ4NWFmYWIsIDB4NmNhYmE1Y2YsCisgICAgMHg4M2Y5MTMyZSwgMHg2OTdmY2U0YywgMHg4NjJkNzhhZCwgMHg3MDUyZGNjNSwgMHg5ZjAwNmEyNCwKKyAgICAweDc1ODZiNzQ2LCAweDlhZDQwMWE3LCAweDdiZmEwYmMzLCAweDk0YThiZDIyLCAweDdlMmU2MDQwLAorICAgIDB4OTE3Y2Q2YTF9LAorICAgezB4MDAwMDAwMDAsIDB4ODdhNmNiNDMsIDB4ZDQzYzkwYzcsIDB4NTM5YTViODQsIDB4NzMwODI3Y2YsCisgICAgMHhmNGFlZWM4YywgMHhhNzM0YjcwOCwgMHgyMDkyN2M0YiwgMHhlNjEwNGY5ZSwgMHg2MWI2ODRkZCwKKyAgICAweDMyMmNkZjU5LCAweGI1OGExNDFhLCAweDk1MTg2ODUxLCAweDEyYmVhMzEyLCAweDQxMjRmODk2LAorICAgIDB4YzY4MjMzZDUsIDB4MTc1MTk5N2QsIDB4OTBmNzUyM2UsIDB4YzM2ZDA5YmEsIDB4NDRjYmMyZjksCisgICAgMHg2NDU5YmViMiwgMHhlM2ZmNzVmMSwgMHhiMDY1MmU3NSwgMHgzN2MzZTUzNiwgMHhmMTQxZDZlMywKKyAgICAweDc2ZTcxZGEwLCAweDI1N2Q0NjI0LCAweGEyZGI4ZDY3LCAweDgyNDlmMTJjLCAweDA1ZWYzYTZmLAorICAgIDB4NTY3NTYxZWIsIDB4ZDFkM2FhYTgsIDB4MmVhMzMyZmEsIDB4YTkwNWY5YjksIDB4ZmE5ZmEyM2QsCisgICAgMHg3ZDM5Njk3ZSwgMHg1ZGFiMTUzNSwgMHhkYTBkZGU3NiwgMHg4OTk3ODVmMiwgMHgwZTMxNGViMSwKKyAgICAweGM4YjM3ZDY0LCAweDRmMTViNjI3LCAweDFjOGZlZGEzLCAweDliMjkyNmUwLCAweGJiYmI1YWFiLAorICAgIDB4M2MxZDkxZTgsIDB4NmY4N2NhNmMsIDB4ZTgyMTAxMmYsIDB4MzlmMmFiODcsIDB4YmU1NDYwYzQsCisgICAgMHhlZGNlM2I0MCwgMHg2YTY4ZjAwMywgMHg0YWZhOGM0OCwgMHhjZDVjNDcwYiwgMHg5ZWM2MWM4ZiwKKyAgICAweDE5NjBkN2NjLCAweGRmZTJlNDE5LCAweDU4NDQyZjVhLCAweDBiZGU3NGRlLCAweDhjNzhiZjlkLAorICAgIDB4YWNlYWMzZDYsIDB4MmI0YzA4OTUsIDB4NzhkNjUzMTEsIDB4ZmY3MDk4NTIsIDB4NWQ0NjY1ZjQsCisgICAgMHhkYWUwYWViNywgMHg4OTdhZjUzMywgMHgwZWRjM2U3MCwgMHgyZTRlNDIzYiwgMHhhOWU4ODk3OCwKKyAgICAweGZhNzJkMmZjLCAweDdkZDQxOWJmLCAweGJiNTYyYTZhLCAweDNjZjBlMTI5LCAweDZmNmFiYWFkLAorICAgIDB4ZThjYzcxZWUsIDB4Yzg1ZTBkYTUsIDB4NGZmOGM2ZTYsIDB4MWM2MjlkNjIsIDB4OWJjNDU2MjEsCisgICAgMHg0YTE3ZmM4OSwgMHhjZGIxMzdjYSwgMHg5ZTJiNmM0ZSwgMHgxOThkYTcwZCwgMHgzOTFmZGI0NiwKKyAgICAweGJlYjkxMDA1LCAweGVkMjM0YjgxLCAweDZhODU4MGMyLCAweGFjMDdiMzE3LCAweDJiYTE3ODU0LAorICAgIDB4NzgzYjIzZDAsIDB4ZmY5ZGU4OTMsIDB4ZGYwZjk0ZDgsIDB4NThhOTVmOWIsIDB4MGIzMzA0MWYsCisgICAgMHg4Yzk1Y2Y1YywgMHg3M2U1NTcwZSwgMHhmNDQzOWM0ZCwgMHhhN2Q5YzdjOSwgMHgyMDdmMGM4YSwKKyAgICAweDAwZWQ3MGMxLCAweDg3NGJiYjgyLCAweGQ0ZDFlMDA2LCAweDUzNzcyYjQ1LCAweDk1ZjUxODkwLAorICAgIDB4MTI1M2QzZDMsIDB4NDFjOTg4NTcsIDB4YzY2ZjQzMTQsIDB4ZTZmZDNmNWYsIDB4NjE1YmY0MWMsCisgICAgMHgzMmMxYWY5OCwgMHhiNTY3NjRkYiwgMHg2NGI0Y2U3MywgMHhlMzEyMDUzMCwgMHhiMDg4NWViNCwKKyAgICAweDM3MmU5NWY3LCAweDE3YmNlOWJjLCAweDkwMWEyMmZmLCAweGMzODA3OTdiLCAweDQ0MjZiMjM4LAorICAgIDB4ODJhNDgxZWQsIDB4MDUwMjRhYWUsIDB4NTY5ODExMmEsIDB4ZDEzZWRhNjksIDB4ZjFhY2E2MjIsCisgICAgMHg3NjBhNmQ2MSwgMHgyNTkwMzZlNSwgMHhhMjM2ZmRhNiwgMHhiYThjY2JlOCwgMHgzZDJhMDBhYiwKKyAgICAweDZlYjA1YjJmLCAweGU5MTY5MDZjLCAweGM5ODRlYzI3LCAweDRlMjIyNzY0LCAweDFkYjg3Y2UwLAorICAgIDB4OWExZWI3YTMsIDB4NWM5Yzg0NzYsIDB4ZGIzYTRmMzUsIDB4ODhhMDE0YjEsIDB4MGYwNmRmZjIsCisgICAgMHgyZjk0YTNiOSwgMHhhODMyNjhmYSwgMHhmYmE4MzM3ZSwgMHg3YzBlZjgzZCwgMHhhZGRkNTI5NSwKKyAgICAweDJhN2I5OWQ2LCAweDc5ZTFjMjUyLCAweGZlNDcwOTExLCAweGRlZDU3NTVhLCAweDU5NzNiZTE5LAorICAgIDB4MGFlOWU1OWQsIDB4OGQ0ZjJlZGUsIDB4NGJjZDFkMGIsIDB4Y2M2YmQ2NDgsIDB4OWZmMThkY2MsCisgICAgMHgxODU3NDY4ZiwgMHgzOGM1M2FjNCwgMHhiZjYzZjE4NywgMHhlY2Y5YWEwMywgMHg2YjVmNjE0MCwKKyAgICAweDk0MmZmOTEyLCAweDEzODkzMjUxLCAweDQwMTM2OWQ1LCAweGM3YjVhMjk2LCAweGU3MjdkZWRkLAorICAgIDB4NjA4MTE1OWUsIDB4MzMxYjRlMWEsIDB4YjRiZDg1NTksIDB4NzIzZmI2OGMsIDB4ZjU5OTdkY2YsCisgICAgMHhhNjAzMjY0YiwgMHgyMWE1ZWQwOCwgMHgwMTM3OTE0MywgMHg4NjkxNWEwMCwgMHhkNTBiMDE4NCwKKyAgICAweDUyYWRjYWM3LCAweDgzN2U2MDZmLCAweDA0ZDhhYjJjLCAweDU3NDJmMGE4LCAweGQwZTQzYmViLAorICAgIDB4ZjA3NjQ3YTAsIDB4NzdkMDhjZTMsIDB4MjQ0YWQ3NjcsIDB4YTNlYzFjMjQsIDB4NjU2ZTJmZjEsCisgICAgMHhlMmM4ZTRiMiwgMHhiMTUyYmYzNiwgMHgzNmY0NzQ3NSwgMHgxNjY2MDgzZSwgMHg5MWMwYzM3ZCwKKyAgICAweGMyNWE5OGY5LCAweDQ1ZmM1M2JhLCAweGU3Y2FhZTFjLCAweDYwNmM2NTVmLCAweDMzZjYzZWRiLAorICAgIDB4YjQ1MGY1OTgsIDB4OTRjMjg5ZDMsIDB4MTM2NDQyOTAsIDB4NDBmZTE5MTQsIDB4Yzc1OGQyNTcsCisgICAgMHgwMWRhZTE4MiwgMHg4NjdjMmFjMSwgMHhkNWU2NzE0NSwgMHg1MjQwYmEwNiwgMHg3MmQyYzY0ZCwKKyAgICAweGY1NzQwZDBlLCAweGE2ZWU1NjhhLCAweDIxNDg5ZGM5LCAweGYwOWIzNzYxLCAweDc3M2RmYzIyLAorICAgIDB4MjRhN2E3YTYsIDB4YTMwMTZjZTUsIDB4ODM5MzEwYWUsIDB4MDQzNWRiZWQsIDB4NTdhZjgwNjksCisgICAgMHhkMDA5NGIyYSwgMHgxNjhiNzhmZiwgMHg5MTJkYjNiYywgMHhjMmI3ZTgzOCwgMHg0NTExMjM3YiwKKyAgICAweDY1ODM1ZjMwLCAweGUyMjU5NDczLCAweGIxYmZjZmY3LCAweDM2MTkwNGI0LCAweGM5Njk5Y2U2LAorICAgIDB4NGVjZjU3YTUsIDB4MWQ1NTBjMjEsIDB4OWFmM2M3NjIsIDB4YmE2MWJiMjksIDB4M2RjNzcwNmEsCisgICAgMHg2ZTVkMmJlZSwgMHhlOWZiZTBhZCwgMHgyZjc5ZDM3OCwgMHhhOGRmMTgzYiwgMHhmYjQ1NDNiZiwKKyAgICAweDdjZTM4OGZjLCAweDVjNzFmNGI3LCAweGRiZDczZmY0LCAweDg4NGQ2NDcwLCAweDBmZWJhZjMzLAorICAgIDB4ZGUzODA1OWIsIDB4NTk5ZWNlZDgsIDB4MGEwNDk1NWMsIDB4OGRhMjVlMWYsIDB4YWQzMDIyNTQsCisgICAgMHgyYTk2ZTkxNywgMHg3OTBjYjI5MywgMHhmZWFhNzlkMCwgMHgzODI4NGEwNSwgMHhiZjhlODE0NiwKKyAgICAweGVjMTRkYWMyLCAweDZiYjIxMTgxLCAweDRiMjA2ZGNhLCAweGNjODZhNjg5LCAweDlmMWNmZDBkLAorICAgIDB4MThiYTM2NGV9fTsKKworbG9jYWwgY29uc3Qgel93b3JkX3QgRkFSIGNyY19icmFpZF9iaWdfdGFibGVbXVsyNTZdID0geworICAgezB4MDAwMDAwMDAwMDAwMDAwMCwgMHg0M2NiYTY4NzAwMDAwMDAwLCAweGM3OTAzY2Q0MDAwMDAwMDAsCisgICAgMHg4NDViOWE1MzAwMDAwMDAwLCAweGNmMjcwODczMDAwMDAwMDAsIDB4OGNlY2FlZjQwMDAwMDAwMCwKKyAgICAweDA4YjczNGE3MDAwMDAwMDAsIDB4NGI3YzkyMjAwMDAwMDAwMCwgMHg5ZTRmMTBlNjAwMDAwMDAwLAorICAgIDB4ZGQ4NGI2NjEwMDAwMDAwMCwgMHg1OWRmMmMzMjAwMDAwMDAwLCAweDFhMTQ4YWI1MDAwMDAwMDAsCisgICAgMHg1MTY4MTg5NTAwMDAwMDAwLCAweDEyYTNiZTEyMDAwMDAwMDAsIDB4OTZmODI0NDEwMDAwMDAwMCwKKyAgICAweGQ1MzM4MmM2MDAwMDAwMDAsIDB4N2Q5OTUxMTcwMDAwMDAwMCwgMHgzZTUyZjc5MDAwMDAwMDAwLAorICAgIDB4YmEwOTZkYzMwMDAwMDAwMCwgMHhmOWMyY2I0NDAwMDAwMDAwLCAweGIyYmU1OTY0MDAwMDAwMDAsCisgICAgMHhmMTc1ZmZlMzAwMDAwMDAwLCAweDc1MmU2NWIwMDAwMDAwMDAsIDB4MzZlNWMzMzcwMDAwMDAwMCwKKyAgICAweGUzZDY0MWYxMDAwMDAwMDAsIDB4YTAxZGU3NzYwMDAwMDAwMCwgMHgyNDQ2N2QyNTAwMDAwMDAwLAorICAgIDB4Njc4ZGRiYTIwMDAwMDAwMCwgMHgyY2YxNDk4MjAwMDAwMDAwLCAweDZmM2FlZjA1MDAwMDAwMDAsCisgICAgMHhlYjYxNzU1NjAwMDAwMDAwLCAweGE4YWFkM2QxMDAwMDAwMDAsIDB4ZmEzMmEzMmUwMDAwMDAwMCwKKyAgICAweGI5ZjkwNWE5MDAwMDAwMDAsIDB4M2RhMjlmZmEwMDAwMDAwMCwgMHg3ZTY5Mzk3ZDAwMDAwMDAwLAorICAgIDB4MzUxNWFiNWQwMDAwMDAwMCwgMHg3NmRlMGRkYTAwMDAwMDAwLCAweGYyODU5Nzg5MDAwMDAwMDAsCisgICAgMHhiMTRlMzEwZTAwMDAwMDAwLCAweDY0N2RiM2M4MDAwMDAwMDAsIDB4MjdiNjE1NGYwMDAwMDAwMCwKKyAgICAweGEzZWQ4ZjFjMDAwMDAwMDAsIDB4ZTAyNjI5OWIwMDAwMDAwMCwgMHhhYjVhYmJiYjAwMDAwMDAwLAorICAgIDB4ZTg5MTFkM2MwMDAwMDAwMCwgMHg2Y2NhODc2ZjAwMDAwMDAwLCAweDJmMDEyMWU4MDAwMDAwMDAsCisgICAgMHg4N2FiZjIzOTAwMDAwMDAwLCAweGM0NjA1NGJlMDAwMDAwMDAsIDB4NDAzYmNlZWQwMDAwMDAwMCwKKyAgICAweDAzZjA2ODZhMDAwMDAwMDAsIDB4NDg4Y2ZhNGEwMDAwMDAwMCwgMHgwYjQ3NWNjZDAwMDAwMDAwLAorICAgIDB4OGYxY2M2OWUwMDAwMDAwMCwgMHhjY2Q3NjAxOTAwMDAwMDAwLCAweDE5ZTRlMmRmMDAwMDAwMDAsCisgICAgMHg1YTJmNDQ1ODAwMDAwMDAwLCAweGRlNzRkZTBiMDAwMDAwMDAsIDB4OWRiZjc4OGMwMDAwMDAwMCwKKyAgICAweGQ2YzNlYWFjMDAwMDAwMDAsIDB4OTUwODRjMmIwMDAwMDAwMCwgMHgxMTUzZDY3ODAwMDAwMDAwLAorICAgIDB4NTI5ODcwZmYwMDAwMDAwMCwgMHhmNDY1NDY1ZDAwMDAwMDAwLCAweGI3YWVlMGRhMDAwMDAwMDAsCisgICAgMHgzM2Y1N2E4OTAwMDAwMDAwLCAweDcwM2VkYzBlMDAwMDAwMDAsIDB4M2I0MjRlMmUwMDAwMDAwMCwKKyAgICAweDc4ODllOGE5MDAwMDAwMDAsIDB4ZmNkMjcyZmEwMDAwMDAwMCwgMHhiZjE5ZDQ3ZDAwMDAwMDAwLAorICAgIDB4NmEyYTU2YmIwMDAwMDAwMCwgMHgyOWUxZjAzYzAwMDAwMDAwLCAweGFkYmE2YTZmMDAwMDAwMDAsCisgICAgMHhlZTcxY2NlODAwMDAwMDAwLCAweGE1MGQ1ZWM4MDAwMDAwMDAsIDB4ZTZjNmY4NGYwMDAwMDAwMCwKKyAgICAweDYyOWQ2MjFjMDAwMDAwMDAsIDB4MjE1NmM0OWIwMDAwMDAwMCwgMHg4OWZjMTc0YTAwMDAwMDAwLAorICAgIDB4Y2EzN2IxY2QwMDAwMDAwMCwgMHg0ZTZjMmI5ZTAwMDAwMDAwLCAweDBkYTc4ZDE5MDAwMDAwMDAsCisgICAgMHg0NmRiMWYzOTAwMDAwMDAwLCAweDA1MTBiOWJlMDAwMDAwMDAsIDB4ODE0YjIzZWQwMDAwMDAwMCwKKyAgICAweGMyODA4NTZhMDAwMDAwMDAsIDB4MTdiMzA3YWMwMDAwMDAwMCwgMHg1NDc4YTEyYjAwMDAwMDAwLAorICAgIDB4ZDAyMzNiNzgwMDAwMDAwMCwgMHg5M2U4OWRmZjAwMDAwMDAwLCAweGQ4OTQwZmRmMDAwMDAwMDAsCisgICAgMHg5YjVmYTk1ODAwMDAwMDAwLCAweDFmMDQzMzBiMDAwMDAwMDAsIDB4NWNjZjk1OGMwMDAwMDAwMCwKKyAgICAweDBlNTdlNTczMDAwMDAwMDAsIDB4NGQ5YzQzZjQwMDAwMDAwMCwgMHhjOWM3ZDlhNzAwMDAwMDAwLAorICAgIDB4OGEwYzdmMjAwMDAwMDAwMCwgMHhjMTcwZWQwMDAwMDAwMDAwLCAweDgyYmI0Yjg3MDAwMDAwMDAsCisgICAgMHgwNmUwZDFkNDAwMDAwMDAwLCAweDQ1MmI3NzUzMDAwMDAwMDAsIDB4OTAxOGY1OTUwMDAwMDAwMCwKKyAgICAweGQzZDM1MzEyMDAwMDAwMDAsIDB4NTc4OGM5NDEwMDAwMDAwMCwgMHgxNDQzNmZjNjAwMDAwMDAwLAorICAgIDB4NWYzZmZkZTYwMDAwMDAwMCwgMHgxY2Y0NWI2MTAwMDAwMDAwLCAweDk4YWZjMTMyMDAwMDAwMDAsCisgICAgMHhkYjY0NjdiNTAwMDAwMDAwLCAweDczY2ViNDY0MDAwMDAwMDAsIDB4MzAwNTEyZTMwMDAwMDAwMCwKKyAgICAweGI0NWU4OGIwMDAwMDAwMDAsIDB4Zjc5NTJlMzcwMDAwMDAwMCwgMHhiY2U5YmMxNzAwMDAwMDAwLAorICAgIDB4ZmYyMjFhOTAwMDAwMDAwMCwgMHg3Yjc5ODBjMzAwMDAwMDAwLCAweDM4YjIyNjQ0MDAwMDAwMDAsCisgICAgMHhlZDgxYTQ4MjAwMDAwMDAwLCAweGFlNGEwMjA1MDAwMDAwMDAsIDB4MmExMTk4NTYwMDAwMDAwMCwKKyAgICAweDY5ZGEzZWQxMDAwMDAwMDAsIDB4MjJhNmFjZjEwMDAwMDAwMCwgMHg2MTZkMGE3NjAwMDAwMDAwLAorICAgIDB4ZTUzNjkwMjUwMDAwMDAwMCwgMHhhNmZkMzZhMjAwMDAwMDAwLCAweGU4Y2I4Y2JhMDAwMDAwMDAsCisgICAgMHhhYjAwMmEzZDAwMDAwMDAwLCAweDJmNWJiMDZlMDAwMDAwMDAsIDB4NmM5MDE2ZTkwMDAwMDAwMCwKKyAgICAweDI3ZWM4NGM5MDAwMDAwMDAsIDB4NjQyNzIyNGUwMDAwMDAwMCwgMHhlMDdjYjgxZDAwMDAwMDAwLAorICAgIDB4YTNiNzFlOWEwMDAwMDAwMCwgMHg3Njg0OWM1YzAwMDAwMDAwLCAweDM1NGYzYWRiMDAwMDAwMDAsCisgICAgMHhiMTE0YTA4ODAwMDAwMDAwLCAweGYyZGYwNjBmMDAwMDAwMDAsIDB4YjlhMzk0MmYwMDAwMDAwMCwKKyAgICAweGZhNjgzMmE4MDAwMDAwMDAsIDB4N2UzM2E4ZmIwMDAwMDAwMCwgMHgzZGY4MGU3YzAwMDAwMDAwLAorICAgIDB4OTU1MmRkYWQwMDAwMDAwMCwgMHhkNjk5N2IyYTAwMDAwMDAwLCAweDUyYzJlMTc5MDAwMDAwMDAsCisgICAgMHgxMTA5NDdmZTAwMDAwMDAwLCAweDVhNzVkNWRlMDAwMDAwMDAsIDB4MTliZTczNTkwMDAwMDAwMCwKKyAgICAweDlkZTVlOTBhMDAwMDAwMDAsIDB4ZGUyZTRmOGQwMDAwMDAwMCwgMHgwYjFkY2Q0YjAwMDAwMDAwLAorICAgIDB4NDhkNjZiY2MwMDAwMDAwMCwgMHhjYzhkZjE5ZjAwMDAwMDAwLCAweDhmNDY1NzE4MDAwMDAwMDAsCisgICAgMHhjNDNhYzUzODAwMDAwMDAwLCAweDg3ZjE2M2JmMDAwMDAwMDAsIDB4MDNhYWY5ZWMwMDAwMDAwMCwKKyAgICAweDQwNjE1ZjZiMDAwMDAwMDAsIDB4MTJmOTJmOTQwMDAwMDAwMCwgMHg1MTMyODkxMzAwMDAwMDAwLAorICAgIDB4ZDU2OTEzNDAwMDAwMDAwMCwgMHg5NmEyYjVjNzAwMDAwMDAwLCAweGRkZGUyN2U3MDAwMDAwMDAsCisgICAgMHg5ZTE1ODE2MDAwMDAwMDAwLCAweDFhNGUxYjMzMDAwMDAwMDAsIDB4NTk4NWJkYjQwMDAwMDAwMCwKKyAgICAweDhjYjYzZjcyMDAwMDAwMDAsIDB4Y2Y3ZDk5ZjUwMDAwMDAwMCwgMHg0YjI2MDNhNjAwMDAwMDAwLAorICAgIDB4MDhlZGE1MjEwMDAwMDAwMCwgMHg0MzkxMzcwMTAwMDAwMDAwLCAweDAwNWE5MTg2MDAwMDAwMDAsCisgICAgMHg4NDAxMGJkNTAwMDAwMDAwLCAweGM3Y2FhZDUyMDAwMDAwMDAsIDB4NmY2MDdlODMwMDAwMDAwMCwKKyAgICAweDJjYWJkODA0MDAwMDAwMDAsIDB4YThmMDQyNTcwMDAwMDAwMCwgMHhlYjNiZTRkMDAwMDAwMDAwLAorICAgIDB4YTA0Nzc2ZjAwMDAwMDAwMCwgMHhlMzhjZDA3NzAwMDAwMDAwLCAweDY3ZDc0YTI0MDAwMDAwMDAsCisgICAgMHgyNDFjZWNhMzAwMDAwMDAwLCAweGYxMmY2ZTY1MDAwMDAwMDAsIDB4YjJlNGM4ZTIwMDAwMDAwMCwKKyAgICAweDM2YmY1MmIxMDAwMDAwMDAsIDB4NzU3NGY0MzYwMDAwMDAwMCwgMHgzZTA4NjYxNjAwMDAwMDAwLAorICAgIDB4N2RjM2MwOTEwMDAwMDAwMCwgMHhmOTk4NWFjMjAwMDAwMDAwLCAweGJhNTNmYzQ1MDAwMDAwMDAsCisgICAgMHgxY2FlY2FlNzAwMDAwMDAwLCAweDVmNjU2YzYwMDAwMDAwMDAsIDB4ZGIzZWY2MzMwMDAwMDAwMCwKKyAgICAweDk4ZjU1MGI0MDAwMDAwMDAsIDB4ZDM4OWMyOTQwMDAwMDAwMCwgMHg5MDQyNjQxMzAwMDAwMDAwLAorICAgIDB4MTQxOWZlNDAwMDAwMDAwMCwgMHg1N2QyNThjNzAwMDAwMDAwLCAweDgyZTFkYTAxMDAwMDAwMDAsCisgICAgMHhjMTJhN2M4NjAwMDAwMDAwLCAweDQ1NzFlNmQ1MDAwMDAwMDAsIDB4MDZiYTQwNTIwMDAwMDAwMCwKKyAgICAweDRkYzZkMjcyMDAwMDAwMDAsIDB4MGUwZDc0ZjUwMDAwMDAwMCwgMHg4YTU2ZWVhNjAwMDAwMDAwLAorICAgIDB4Yzk5ZDQ4MjEwMDAwMDAwMCwgMHg2MTM3OWJmMDAwMDAwMDAwLCAweDIyZmMzZDc3MDAwMDAwMDAsCisgICAgMHhhNmE3YTcyNDAwMDAwMDAwLCAweGU1NmMwMWEzMDAwMDAwMDAsIDB4YWUxMDkzODMwMDAwMDAwMCwKKyAgICAweGVkZGIzNTA0MDAwMDAwMDAsIDB4Njk4MGFmNTcwMDAwMDAwMCwgMHgyYTRiMDlkMDAwMDAwMDAwLAorICAgIDB4ZmY3ODhiMTYwMDAwMDAwMCwgMHhiY2IzMmQ5MTAwMDAwMDAwLCAweDM4ZThiN2MyMDAwMDAwMDAsCisgICAgMHg3YjIzMTE0NTAwMDAwMDAwLCAweDMwNWY4MzY1MDAwMDAwMDAsIDB4NzM5NDI1ZTIwMDAwMDAwMCwKKyAgICAweGY3Y2ZiZmIxMDAwMDAwMDAsIDB4YjQwNDE5MzYwMDAwMDAwMCwgMHhlNjljNjljOTAwMDAwMDAwLAorICAgIDB4YTU1N2NmNGUwMDAwMDAwMCwgMHgyMTBjNTUxZDAwMDAwMDAwLCAweDYyYzdmMzlhMDAwMDAwMDAsCisgICAgMHgyOWJiNjFiYTAwMDAwMDAwLCAweDZhNzBjNzNkMDAwMDAwMDAsIDB4ZWUyYjVkNmUwMDAwMDAwMCwKKyAgICAweGFkZTBmYmU5MDAwMDAwMDAsIDB4NzhkMzc5MmYwMDAwMDAwMCwgMHgzYjE4ZGZhODAwMDAwMDAwLAorICAgIDB4YmY0MzQ1ZmIwMDAwMDAwMCwgMHhmYzg4ZTM3YzAwMDAwMDAwLCAweGI3ZjQ3MTVjMDAwMDAwMDAsCisgICAgMHhmNDNmZDdkYjAwMDAwMDAwLCAweDcwNjQ0ZDg4MDAwMDAwMDAsIDB4MzNhZmViMGYwMDAwMDAwMCwKKyAgICAweDliMDUzOGRlMDAwMDAwMDAsIDB4ZDhjZTllNTkwMDAwMDAwMCwgMHg1Yzk1MDQwYTAwMDAwMDAwLAorICAgIDB4MWY1ZWEyOGQwMDAwMDAwMCwgMHg1NDIyMzBhZDAwMDAwMDAwLCAweDE3ZTk5NjJhMDAwMDAwMDAsCisgICAgMHg5M2IyMGM3OTAwMDAwMDAwLCAweGQwNzlhYWZlMDAwMDAwMDAsIDB4MDU0YTI4MzgwMDAwMDAwMCwKKyAgICAweDQ2ODE4ZWJmMDAwMDAwMDAsIDB4YzJkYTE0ZWMwMDAwMDAwMCwgMHg4MTExYjI2YjAwMDAwMDAwLAorICAgIDB4Y2E2ZDIwNGIwMDAwMDAwMCwgMHg4OWE2ODZjYzAwMDAwMDAwLCAweDBkZmQxYzlmMDAwMDAwMDAsCisgICAgMHg0ZTM2YmExODAwMDAwMDAwfSwKKyAgIHsweDAwMDAwMDAwMDAwMDAwMDAsIDB4ZTFiNjUyZWYwMDAwMDAwMCwgMHg4MzZiZDQwNTAwMDAwMDAwLAorICAgIDB4NjJkZDg2ZWEwMDAwMDAwMCwgMHgwNmQ3YTgwYjAwMDAwMDAwLCAweGU3NjFmYWU0MDAwMDAwMDAsCisgICAgMHg4NWJjN2MwZTAwMDAwMDAwLCAweDY0MGEyZWUxMDAwMDAwMDAsIDB4MGNhZTUxMTcwMDAwMDAwMCwKKyAgICAweGVkMTgwM2Y4MDAwMDAwMDAsIDB4OGZjNTg1MTIwMDAwMDAwMCwgMHg2ZTczZDdmZDAwMDAwMDAwLAorICAgIDB4MGE3OWY5MWMwMDAwMDAwMCwgMHhlYmNmYWJmMzAwMDAwMDAwLCAweDg5MTIyZDE5MDAwMDAwMDAsCisgICAgMHg2OGE0N2ZmNjAwMDAwMDAwLCAweDE4NWNhMzJlMDAwMDAwMDAsIDB4ZjllYWYxYzEwMDAwMDAwMCwKKyAgICAweDliMzc3NzJiMDAwMDAwMDAsIDB4N2E4MTI1YzQwMDAwMDAwMCwgMHgxZThiMGIyNTAwMDAwMDAwLAorICAgIDB4ZmYzZDU5Y2EwMDAwMDAwMCwgMHg5ZGUwZGYyMDAwMDAwMDAwLCAweDdjNTY4ZGNmMDAwMDAwMDAsCisgICAgMHgxNGYyZjIzOTAwMDAwMDAwLCAweGY1NDRhMGQ2MDAwMDAwMDAsIDB4OTc5OTI2M2MwMDAwMDAwMCwKKyAgICAweDc2MmY3NGQzMDAwMDAwMDAsIDB4MTIyNTVhMzIwMDAwMDAwMCwgMHhmMzkzMDhkZDAwMDAwMDAwLAorICAgIDB4OTE0ZThlMzcwMDAwMDAwMCwgMHg3MGY4ZGNkODAwMDAwMDAwLCAweDMwYjg0NjVkMDAwMDAwMDAsCisgICAgMHhkMTBlMTRiMjAwMDAwMDAwLCAweGIzZDM5MjU4MDAwMDAwMDAsIDB4NTI2NWMwYjcwMDAwMDAwMCwKKyAgICAweDM2NmZlZTU2MDAwMDAwMDAsIDB4ZDdkOWJjYjkwMDAwMDAwMCwgMHhiNTA0M2E1MzAwMDAwMDAwLAorICAgIDB4NTRiMjY4YmMwMDAwMDAwMCwgMHgzYzE2MTc0YTAwMDAwMDAwLCAweGRkYTA0NWE1MDAwMDAwMDAsCisgICAgMHhiZjdkYzM0ZjAwMDAwMDAwLCAweDVlY2I5MWEwMDAwMDAwMDAsIDB4M2FjMWJmNDEwMDAwMDAwMCwKKyAgICAweGRiNzdlZGFlMDAwMDAwMDAsIDB4YjlhYTZiNDQwMDAwMDAwMCwgMHg1ODFjMzlhYjAwMDAwMDAwLAorICAgIDB4MjhlNGU1NzMwMDAwMDAwMCwgMHhjOTUyYjc5YzAwMDAwMDAwLCAweGFiOGYzMTc2MDAwMDAwMDAsCisgICAgMHg0YTM5NjM5OTAwMDAwMDAwLCAweDJlMzM0ZDc4MDAwMDAwMDAsIDB4Y2Y4NTFmOTcwMDAwMDAwMCwKKyAgICAweGFkNTg5OTdkMDAwMDAwMDAsIDB4NGNlZWNiOTIwMDAwMDAwMCwgMHgyNDRhYjQ2NDAwMDAwMDAwLAorICAgIDB4YzVmY2U2OGIwMDAwMDAwMCwgMHhhNzIxNjA2MTAwMDAwMDAwLCAweDQ2OTczMjhlMDAwMDAwMDAsCisgICAgMHgyMjlkMWM2ZjAwMDAwMDAwLCAweGMzMmI0ZTgwMDAwMDAwMDAsIDB4YTFmNmM4NmEwMDAwMDAwMCwKKyAgICAweDQwNDA5YTg1MDAwMDAwMDAsIDB4NjA3MDhkYmEwMDAwMDAwMCwgMHg4MWM2ZGY1NTAwMDAwMDAwLAorICAgIDB4ZTMxYjU5YmYwMDAwMDAwMCwgMHgwMmFkMGI1MDAwMDAwMDAwLCAweDY2YTcyNWIxMDAwMDAwMDAsCisgICAgMHg4NzExNzc1ZTAwMDAwMDAwLCAweGU1Y2NmMWI0MDAwMDAwMDAsIDB4MDQ3YWEzNWIwMDAwMDAwMCwKKyAgICAweDZjZGVkY2FkMDAwMDAwMDAsIDB4OGQ2ODhlNDIwMDAwMDAwMCwgMHhlZmI1MDhhODAwMDAwMDAwLAorICAgIDB4MGUwMzVhNDcwMDAwMDAwMCwgMHg2YTA5NzRhNjAwMDAwMDAwLCAweDhiYmYyNjQ5MDAwMDAwMDAsCisgICAgMHhlOTYyYTBhMzAwMDAwMDAwLCAweDA4ZDRmMjRjMDAwMDAwMDAsIDB4NzgyYzJlOTQwMDAwMDAwMCwKKyAgICAweDk5OWE3YzdiMDAwMDAwMDAsIDB4ZmI0N2ZhOTEwMDAwMDAwMCwgMHgxYWYxYTg3ZTAwMDAwMDAwLAorICAgIDB4N2VmYjg2OWYwMDAwMDAwMCwgMHg5ZjRkZDQ3MDAwMDAwMDAwLCAweGZkOTA1MjlhMDAwMDAwMDAsCisgICAgMHgxYzI2MDA3NTAwMDAwMDAwLCAweDc0ODI3ZjgzMDAwMDAwMDAsIDB4OTUzNDJkNmMwMDAwMDAwMCwKKyAgICAweGY3ZTlhYjg2MDAwMDAwMDAsIDB4MTY1ZmY5NjkwMDAwMDAwMCwgMHg3MjU1ZDc4ODAwMDAwMDAwLAorICAgIDB4OTNlMzg1NjcwMDAwMDAwMCwgMHhmMTNlMDM4ZDAwMDAwMDAwLCAweDEwODg1MTYyMDAwMDAwMDAsCisgICAgMHg1MGM4Y2JlNzAwMDAwMDAwLCAweGIxN2U5OTA4MDAwMDAwMDAsIDB4ZDNhMzFmZTIwMDAwMDAwMCwKKyAgICAweDMyMTU0ZDBkMDAwMDAwMDAsIDB4NTYxZjYzZWMwMDAwMDAwMCwgMHhiN2E5MzEwMzAwMDAwMDAwLAorICAgIDB4ZDU3NGI3ZTkwMDAwMDAwMCwgMHgzNGMyZTUwNjAwMDAwMDAwLCAweDVjNjY5YWYwMDAwMDAwMDAsCisgICAgMHhiZGQwYzgxZjAwMDAwMDAwLCAweGRmMGQ0ZWY1MDAwMDAwMDAsIDB4M2ViYjFjMWEwMDAwMDAwMCwKKyAgICAweDVhYjEzMmZiMDAwMDAwMDAsIDB4YmIwNzYwMTQwMDAwMDAwMCwgMHhkOWRhZTZmZTAwMDAwMDAwLAorICAgIDB4Mzg2Y2I0MTEwMDAwMDAwMCwgMHg0ODk0NjhjOTAwMDAwMDAwLCAweGE5MjIzYTI2MDAwMDAwMDAsCisgICAgMHhjYmZmYmNjYzAwMDAwMDAwLCAweDJhNDllZTIzMDAwMDAwMDAsIDB4NGU0M2MwYzIwMDAwMDAwMCwKKyAgICAweGFmZjU5MjJkMDAwMDAwMDAsIDB4Y2QyODE0YzcwMDAwMDAwMCwgMHgyYzllNDYyODAwMDAwMDAwLAorICAgIDB4NDQzYTM5ZGUwMDAwMDAwMCwgMHhhNThjNmIzMTAwMDAwMDAwLCAweGM3NTFlZGRiMDAwMDAwMDAsCisgICAgMHgyNmU3YmYzNDAwMDAwMDAwLCAweDQyZWQ5MWQ1MDAwMDAwMDAsIDB4YTM1YmMzM2EwMDAwMDAwMCwKKyAgICAweGMxODY0NWQwMDAwMDAwMDAsIDB4MjAzMDE3M2YwMDAwMDAwMCwgMHg4MWU2NmJhZTAwMDAwMDAwLAorICAgIDB4NjA1MDM5NDEwMDAwMDAwMCwgMHgwMjhkYmZhYjAwMDAwMDAwLCAweGUzM2JlZDQ0MDAwMDAwMDAsCisgICAgMHg4NzMxYzNhNTAwMDAwMDAwLCAweDY2ODc5MTRhMDAwMDAwMDAsIDB4MDQ1YTE3YTAwMDAwMDAwMCwKKyAgICAweGU1ZWM0NTRmMDAwMDAwMDAsIDB4OGQ0ODNhYjkwMDAwMDAwMCwgMHg2Y2ZlNjg1NjAwMDAwMDAwLAorICAgIDB4MGUyM2VlYmMwMDAwMDAwMCwgMHhlZjk1YmM1MzAwMDAwMDAwLCAweDhiOWY5MmIyMDAwMDAwMDAsCisgICAgMHg2YTI5YzA1ZDAwMDAwMDAwLCAweDA4ZjQ0NmI3MDAwMDAwMDAsIDB4ZTk0MjE0NTgwMDAwMDAwMCwKKyAgICAweDk5YmFjODgwMDAwMDAwMDAsIDB4NzgwYzlhNmYwMDAwMDAwMCwgMHgxYWQxMWM4NTAwMDAwMDAwLAorICAgIDB4ZmI2NzRlNmEwMDAwMDAwMCwgMHg5ZjZkNjA4YjAwMDAwMDAwLCAweDdlZGIzMjY0MDAwMDAwMDAsCisgICAgMHgxYzA2YjQ4ZTAwMDAwMDAwLCAweGZkYjBlNjYxMDAwMDAwMDAsIDB4OTUxNDk5OTcwMDAwMDAwMCwKKyAgICAweDc0YTJjYjc4MDAwMDAwMDAsIDB4MTY3ZjRkOTIwMDAwMDAwMCwgMHhmN2M5MWY3ZDAwMDAwMDAwLAorICAgIDB4OTNjMzMxOWMwMDAwMDAwMCwgMHg3Mjc1NjM3MzAwMDAwMDAwLCAweDEwYThlNTk5MDAwMDAwMDAsCisgICAgMHhmMTFlYjc3NjAwMDAwMDAwLCAweGIxNWUyZGYzMDAwMDAwMDAsIDB4NTBlODdmMWMwMDAwMDAwMCwKKyAgICAweDMyMzVmOWY2MDAwMDAwMDAsIDB4ZDM4M2FiMTkwMDAwMDAwMCwgMHhiNzg5ODVmODAwMDAwMDAwLAorICAgIDB4NTYzZmQ3MTcwMDAwMDAwMCwgMHgzNGUyNTFmZDAwMDAwMDAwLCAweGQ1NTQwMzEyMDAwMDAwMDAsCisgICAgMHhiZGYwN2NlNDAwMDAwMDAwLCAweDVjNDYyZTBiMDAwMDAwMDAsIDB4M2U5YmE4ZTEwMDAwMDAwMCwKKyAgICAweGRmMmRmYTBlMDAwMDAwMDAsIDB4YmIyN2Q0ZWYwMDAwMDAwMCwgMHg1YTkxODYwMDAwMDAwMDAwLAorICAgIDB4Mzg0YzAwZWEwMDAwMDAwMCwgMHhkOWZhNTIwNTAwMDAwMDAwLCAweGE5MDI4ZWRkMDAwMDAwMDAsCisgICAgMHg0OGI0ZGMzMjAwMDAwMDAwLCAweDJhNjk1YWQ4MDAwMDAwMDAsIDB4Y2JkZjA4MzcwMDAwMDAwMCwKKyAgICAweGFmZDUyNmQ2MDAwMDAwMDAsIDB4NGU2Mzc0MzkwMDAwMDAwMCwgMHgyY2JlZjJkMzAwMDAwMDAwLAorICAgIDB4Y2QwOGEwM2MwMDAwMDAwMCwgMHhhNWFjZGZjYTAwMDAwMDAwLCAweDQ0MWE4ZDI1MDAwMDAwMDAsCisgICAgMHgyNmM3MGJjZjAwMDAwMDAwLCAweGM3NzE1OTIwMDAwMDAwMDAsIDB4YTM3Yjc3YzEwMDAwMDAwMCwKKyAgICAweDQyY2QyNTJlMDAwMDAwMDAsIDB4MjAxMGEzYzQwMDAwMDAwMCwgMHhjMWE2ZjEyYjAwMDAwMDAwLAorICAgIDB4ZTE5NmU2MTQwMDAwMDAwMCwgMHgwMDIwYjRmYjAwMDAwMDAwLCAweDYyZmQzMjExMDAwMDAwMDAsCisgICAgMHg4MzRiNjBmZTAwMDAwMDAwLCAweGU3NDE0ZTFmMDAwMDAwMDAsIDB4MDZmNzFjZjAwMDAwMDAwMCwKKyAgICAweDY0MmE5YTFhMDAwMDAwMDAsIDB4ODU5Y2M4ZjUwMDAwMDAwMCwgMHhlZDM4YjcwMzAwMDAwMDAwLAorICAgIDB4MGM4ZWU1ZWMwMDAwMDAwMCwgMHg2ZTUzNjMwNjAwMDAwMDAwLCAweDhmZTUzMWU5MDAwMDAwMDAsCisgICAgMHhlYmVmMWYwODAwMDAwMDAwLCAweDBhNTk0ZGU3MDAwMDAwMDAsIDB4Njg4NGNiMGQwMDAwMDAwMCwKKyAgICAweDg5MzI5OWUyMDAwMDAwMDAsIDB4ZjljYTQ1M2EwMDAwMDAwMCwgMHgxODdjMTdkNTAwMDAwMDAwLAorICAgIDB4N2FhMTkxM2YwMDAwMDAwMCwgMHg5YjE3YzNkMDAwMDAwMDAwLCAweGZmMWRlZDMxMDAwMDAwMDAsCisgICAgMHgxZWFiYmZkZTAwMDAwMDAwLCAweDdjNzYzOTM0MDAwMDAwMDAsIDB4OWRjMDZiZGIwMDAwMDAwMCwKKyAgICAweGY1NjQxNDJkMDAwMDAwMDAsIDB4MTRkMjQ2YzIwMDAwMDAwMCwgMHg3NjBmYzAyODAwMDAwMDAwLAorICAgIDB4OTdiOTkyYzcwMDAwMDAwMCwgMHhmM2IzYmMyNjAwMDAwMDAwLCAweDEyMDVlZWM5MDAwMDAwMDAsCisgICAgMHg3MGQ4NjgyMzAwMDAwMDAwLCAweDkxNmUzYWNjMDAwMDAwMDAsIDB4ZDEyZWEwNDkwMDAwMDAwMCwKKyAgICAweDMwOThmMmE2MDAwMDAwMDAsIDB4NTI0NTc0NGMwMDAwMDAwMCwgMHhiM2YzMjZhMzAwMDAwMDAwLAorICAgIDB4ZDdmOTA4NDIwMDAwMDAwMCwgMHgzNjRmNWFhZDAwMDAwMDAwLCAweDU0OTJkYzQ3MDAwMDAwMDAsCisgICAgMHhiNTI0OGVhODAwMDAwMDAwLCAweGRkODBmMTVlMDAwMDAwMDAsIDB4M2MzNmEzYjEwMDAwMDAwMCwKKyAgICAweDVlZWIyNTViMDAwMDAwMDAsIDB4YmY1ZDc3YjQwMDAwMDAwMCwgMHhkYjU3NTk1NTAwMDAwMDAwLAorICAgIDB4M2FlMTBiYmEwMDAwMDAwMCwgMHg1ODNjOGQ1MDAwMDAwMDAwLCAweGI5OGFkZmJmMDAwMDAwMDAsCisgICAgMHhjOTcyMDM2NzAwMDAwMDAwLCAweDI4YzQ1MTg4MDAwMDAwMDAsIDB4NGExOWQ3NjIwMDAwMDAwMCwKKyAgICAweGFiYWY4NThkMDAwMDAwMDAsIDB4Y2ZhNWFiNmMwMDAwMDAwMCwgMHgyZTEzZjk4MzAwMDAwMDAwLAorICAgIDB4NGNjZTdmNjkwMDAwMDAwMCwgMHhhZDc4MmQ4NjAwMDAwMDAwLCAweGM1ZGM1MjcwMDAwMDAwMDAsCisgICAgMHgyNDZhMDA5ZjAwMDAwMDAwLCAweDQ2Yjc4Njc1MDAwMDAwMDAsIDB4YTcwMWQ0OWEwMDAwMDAwMCwKKyAgICAweGMzMGJmYTdiMDAwMDAwMDAsIDB4MjJiZGE4OTQwMDAwMDAwMCwgMHg0MDYwMmU3ZTAwMDAwMDAwLAorICAgIDB4YTFkNjdjOTEwMDAwMDAwMH0sCisgICB7MHgwMDAwMDAwMDAwMDAwMDAwLCAweDU4ODBlMmQ3MDAwMDAwMDAsIDB4ZjEwNmI0NzQwMDAwMDAwMCwKKyAgICAweGE5ODY1NmEzMDAwMDAwMDAsIDB4ZTIwZDY4ZTkwMDAwMDAwMCwgMHhiYThkOGEzZTAwMDAwMDAwLAorICAgIDB4MTMwYmRjOWQwMDAwMDAwMCwgMHg0YjhiM2U0YTAwMDAwMDAwLCAweDg1MWRhMTA5MDAwMDAwMDAsCisgICAgMHhkZDlkNDNkZTAwMDAwMDAwLCAweDc0MWIxNTdkMDAwMDAwMDAsIDB4MmM5YmY3YWEwMDAwMDAwMCwKKyAgICAweDY3MTBjOWUwMDAwMDAwMDAsIDB4M2Y5MDJiMzcwMDAwMDAwMCwgMHg5NjE2N2Q5NDAwMDAwMDAwLAorICAgIDB4Y2U5NjlmNDMwMDAwMDAwMCwgMHgwYTNiNDIxMzAwMDAwMDAwLCAweDUyYmJhMGM0MDAwMDAwMDAsCisgICAgMHhmYjNkZjY2NzAwMDAwMDAwLCAweGEzYmQxNGIwMDAwMDAwMDAsIDB4ZTgzNjJhZmEwMDAwMDAwMCwKKyAgICAweGIwYjZjODJkMDAwMDAwMDAsIDB4MTkzMDllOGUwMDAwMDAwMCwgMHg0MWIwN2M1OTAwMDAwMDAwLAorICAgIDB4OGYyNmUzMWEwMDAwMDAwMCwgMHhkN2E2MDFjZDAwMDAwMDAwLCAweDdlMjA1NzZlMDAwMDAwMDAsCisgICAgMHgyNmEwYjViOTAwMDAwMDAwLCAweDZkMmI4YmYzMDAwMDAwMDAsIDB4MzVhYjY5MjQwMDAwMDAwMCwKKyAgICAweDljMmQzZjg3MDAwMDAwMDAsIDB4YzRhZGRkNTAwMDAwMDAwMCwgMHgxNDc2ODQyNjAwMDAwMDAwLAorICAgIDB4NGNmNjY2ZjEwMDAwMDAwMCwgMHhlNTcwMzA1MjAwMDAwMDAwLCAweGJkZjBkMjg1MDAwMDAwMDAsCisgICAgMHhmNjdiZWNjZjAwMDAwMDAwLCAweGFlZmIwZTE4MDAwMDAwMDAsIDB4MDc3ZDU4YmIwMDAwMDAwMCwKKyAgICAweDVmZmRiYTZjMDAwMDAwMDAsIDB4OTE2YjI1MmYwMDAwMDAwMCwgMHhjOWViYzdmODAwMDAwMDAwLAorICAgIDB4NjA2ZDkxNWIwMDAwMDAwMCwgMHgzOGVkNzM4YzAwMDAwMDAwLCAweDczNjY0ZGM2MDAwMDAwMDAsCisgICAgMHgyYmU2YWYxMTAwMDAwMDAwLCAweDgyNjBmOWIyMDAwMDAwMDAsIDB4ZGFlMDFiNjUwMDAwMDAwMCwKKyAgICAweDFlNGRjNjM1MDAwMDAwMDAsIDB4NDZjZDI0ZTIwMDAwMDAwMCwgMHhlZjRiNzI0MTAwMDAwMDAwLAorICAgIDB4YjdjYjkwOTYwMDAwMDAwMCwgMHhmYzQwYWVkYzAwMDAwMDAwLCAweGE0YzA0YzBiMDAwMDAwMDAsCisgICAgMHgwZDQ2MWFhODAwMDAwMDAwLCAweDU1YzZmODdmMDAwMDAwMDAsIDB4OWI1MDY3M2MwMDAwMDAwMCwKKyAgICAweGMzZDA4NWViMDAwMDAwMDAsIDB4NmE1NmQzNDgwMDAwMDAwMCwgMHgzMmQ2MzE5ZjAwMDAwMDAwLAorICAgIDB4Nzk1ZDBmZDUwMDAwMDAwMCwgMHgyMWRkZWQwMjAwMDAwMDAwLCAweDg4NWJiYmExMDAwMDAwMDAsCisgICAgMHhkMGRiNTk3NjAwMDAwMDAwLCAweDI4ZWMwODRkMDAwMDAwMDAsIDB4NzA2Y2VhOWEwMDAwMDAwMCwKKyAgICAweGQ5ZWFiYzM5MDAwMDAwMDAsIDB4ODE2YTVlZWUwMDAwMDAwMCwgMHhjYWUxNjBhNDAwMDAwMDAwLAorICAgIDB4OTI2MTgyNzMwMDAwMDAwMCwgMHgzYmU3ZDRkMDAwMDAwMDAwLCAweDYzNjczNjA3MDAwMDAwMDAsCisgICAgMHhhZGYxYTk0NDAwMDAwMDAwLCAweGY1NzE0YjkzMDAwMDAwMDAsIDB4NWNmNzFkMzAwMDAwMDAwMCwKKyAgICAweDA0NzdmZmU3MDAwMDAwMDAsIDB4NGZmY2MxYWQwMDAwMDAwMCwgMHgxNzdjMjM3YTAwMDAwMDAwLAorICAgIDB4YmVmYTc1ZDkwMDAwMDAwMCwgMHhlNjdhOTcwZTAwMDAwMDAwLCAweDIyZDc0YTVlMDAwMDAwMDAsCisgICAgMHg3YTU3YTg4OTAwMDAwMDAwLCAweGQzZDFmZTJhMDAwMDAwMDAsIDB4OGI1MTFjZmQwMDAwMDAwMCwKKyAgICAweGMwZGEyMmI3MDAwMDAwMDAsIDB4OTg1YWMwNjAwMDAwMDAwMCwgMHgzMWRjOTZjMzAwMDAwMDAwLAorICAgIDB4Njk1Yzc0MTQwMDAwMDAwMCwgMHhhN2NhZWI1NzAwMDAwMDAwLCAweGZmNGEwOTgwMDAwMDAwMDAsCisgICAgMHg1NmNjNWYyMzAwMDAwMDAwLCAweDBlNGNiZGY0MDAwMDAwMDAsIDB4NDVjNzgzYmUwMDAwMDAwMCwKKyAgICAweDFkNDc2MTY5MDAwMDAwMDAsIDB4YjRjMTM3Y2EwMDAwMDAwMCwgMHhlYzQxZDUxZDAwMDAwMDAwLAorICAgIDB4M2M5YThjNmIwMDAwMDAwMCwgMHg2NDFhNmViYzAwMDAwMDAwLCAweGNkOWMzODFmMDAwMDAwMDAsCisgICAgMHg5NTFjZGFjODAwMDAwMDAwLCAweGRlOTdlNDgyMDAwMDAwMDAsIDB4ODYxNzA2NTUwMDAwMDAwMCwKKyAgICAweDJmOTE1MGY2MDAwMDAwMDAsIDB4NzcxMWIyMjEwMDAwMDAwMCwgMHhiOTg3MmQ2MjAwMDAwMDAwLAorICAgIDB4ZTEwN2NmYjUwMDAwMDAwMCwgMHg0ODgxOTkxNjAwMDAwMDAwLCAweDEwMDE3YmMxMDAwMDAwMDAsCisgICAgMHg1YjhhNDU4YjAwMDAwMDAwLCAweDAzMGFhNzVjMDAwMDAwMDAsIDB4YWE4Y2YxZmYwMDAwMDAwMCwKKyAgICAweGYyMGMxMzI4MDAwMDAwMDAsIDB4MzZhMWNlNzgwMDAwMDAwMCwgMHg2ZTIxMmNhZjAwMDAwMDAwLAorICAgIDB4YzdhNzdhMGMwMDAwMDAwMCwgMHg5ZjI3OThkYjAwMDAwMDAwLCAweGQ0YWNhNjkxMDAwMDAwMDAsCisgICAgMHg4YzJjNDQ0NjAwMDAwMDAwLCAweDI1YWExMmU1MDAwMDAwMDAsIDB4N2QyYWYwMzIwMDAwMDAwMCwKKyAgICAweGIzYmM2ZjcxMDAwMDAwMDAsIDB4ZWIzYzhkYTYwMDAwMDAwMCwgMHg0MmJhZGIwNTAwMDAwMDAwLAorICAgIDB4MWEzYTM5ZDIwMDAwMDAwMCwgMHg1MWIxMDc5ODAwMDAwMDAwLCAweDA5MzFlNTRmMDAwMDAwMDAsCisgICAgMHhhMGI3YjNlYzAwMDAwMDAwLCAweGY4Mzc1MTNiMDAwMDAwMDAsIDB4NTBkODExOWEwMDAwMDAwMCwKKyAgICAweDA4NThmMzRkMDAwMDAwMDAsIDB4YTFkZWE1ZWUwMDAwMDAwMCwgMHhmOTVlNDczOTAwMDAwMDAwLAorICAgIDB4YjJkNTc5NzMwMDAwMDAwMCwgMHhlYTU1OWJhNDAwMDAwMDAwLCAweDQzZDNjZDA3MDAwMDAwMDAsCisgICAgMHgxYjUzMmZkMDAwMDAwMDAwLCAweGQ1YzViMDkzMDAwMDAwMDAsIDB4OGQ0NTUyNDQwMDAwMDAwMCwKKyAgICAweDI0YzMwNGU3MDAwMDAwMDAsIDB4N2M0M2U2MzAwMDAwMDAwMCwgMHgzN2M4ZDg3YTAwMDAwMDAwLAorICAgIDB4NmY0ODNhYWQwMDAwMDAwMCwgMHhjNmNlNmMwZTAwMDAwMDAwLCAweDllNGU4ZWQ5MDAwMDAwMDAsCisgICAgMHg1YWUzNTM4OTAwMDAwMDAwLCAweDAyNjNiMTVlMDAwMDAwMDAsIDB4YWJlNWU3ZmQwMDAwMDAwMCwKKyAgICAweGYzNjUwNTJhMDAwMDAwMDAsIDB4YjhlZTNiNjAwMDAwMDAwMCwgMHhlMDZlZDliNzAwMDAwMDAwLAorICAgIDB4NDllODhmMTQwMDAwMDAwMCwgMHgxMTY4NmRjMzAwMDAwMDAwLCAweGRmZmVmMjgwMDAwMDAwMDAsCisgICAgMHg4NzdlMTA1NzAwMDAwMDAwLCAweDJlZjg0NmY0MDAwMDAwMDAsIDB4NzY3OGE0MjMwMDAwMDAwMCwKKyAgICAweDNkZjM5YTY5MDAwMDAwMDAsIDB4NjU3Mzc4YmUwMDAwMDAwMCwgMHhjY2Y1MmUxZDAwMDAwMDAwLAorICAgIDB4OTQ3NWNjY2EwMDAwMDAwMCwgMHg0NGFlOTViYzAwMDAwMDAwLCAweDFjMmU3NzZiMDAwMDAwMDAsCisgICAgMHhiNWE4MjFjODAwMDAwMDAwLCAweGVkMjhjMzFmMDAwMDAwMDAsIDB4YTZhM2ZkNTUwMDAwMDAwMCwKKyAgICAweGZlMjMxZjgyMDAwMDAwMDAsIDB4NTdhNTQ5MjEwMDAwMDAwMCwgMHgwZjI1YWJmNjAwMDAwMDAwLAorICAgIDB4YzFiMzM0YjUwMDAwMDAwMCwgMHg5OTMzZDY2MjAwMDAwMDAwLCAweDMwYjU4MGMxMDAwMDAwMDAsCisgICAgMHg2ODM1NjIxNjAwMDAwMDAwLCAweDIzYmU1YzVjMDAwMDAwMDAsIDB4N2IzZWJlOGIwMDAwMDAwMCwKKyAgICAweGQyYjhlODI4MDAwMDAwMDAsIDB4OGEzODBhZmYwMDAwMDAwMCwgMHg0ZTk1ZDdhZjAwMDAwMDAwLAorICAgIDB4MTYxNTM1NzgwMDAwMDAwMCwgMHhiZjkzNjNkYjAwMDAwMDAwLCAweGU3MTM4MTBjMDAwMDAwMDAsCisgICAgMHhhYzk4YmY0NjAwMDAwMDAwLCAweGY0MTg1ZDkxMDAwMDAwMDAsIDB4NWQ5ZTBiMzIwMDAwMDAwMCwKKyAgICAweDA1MWVlOWU1MDAwMDAwMDAsIDB4Y2I4ODc2YTYwMDAwMDAwMCwgMHg5MzA4OTQ3MTAwMDAwMDAwLAorICAgIDB4M2E4ZWMyZDIwMDAwMDAwMCwgMHg2MjBlMjAwNTAwMDAwMDAwLCAweDI5ODUxZTRmMDAwMDAwMDAsCisgICAgMHg3MTA1ZmM5ODAwMDAwMDAwLCAweGQ4ODNhYTNiMDAwMDAwMDAsIDB4ODAwMzQ4ZWMwMDAwMDAwMCwKKyAgICAweDc4MzQxOWQ3MDAwMDAwMDAsIDB4MjBiNGZiMDAwMDAwMDAwMCwgMHg4OTMyYWRhMzAwMDAwMDAwLAorICAgIDB4ZDFiMjRmNzQwMDAwMDAwMCwgMHg5YTM5NzEzZTAwMDAwMDAwLCAweGMyYjk5M2U5MDAwMDAwMDAsCisgICAgMHg2YjNmYzU0YTAwMDAwMDAwLCAweDMzYmYyNzlkMDAwMDAwMDAsIDB4ZmQyOWI4ZGUwMDAwMDAwMCwKKyAgICAweGE1YTk1YTA5MDAwMDAwMDAsIDB4MGMyZjBjYWEwMDAwMDAwMCwgMHg1NGFmZWU3ZDAwMDAwMDAwLAorICAgIDB4MWYyNGQwMzcwMDAwMDAwMCwgMHg0N2E0MzJlMDAwMDAwMDAwLCAweGVlMjI2NDQzMDAwMDAwMDAsCisgICAgMHhiNmEyODY5NDAwMDAwMDAwLCAweDcyMGY1YmM0MDAwMDAwMDAsIDB4MmE4ZmI5MTMwMDAwMDAwMCwKKyAgICAweDgzMDllZmIwMDAwMDAwMDAsIDB4ZGI4OTBkNjcwMDAwMDAwMCwgMHg5MDAyMzMyZDAwMDAwMDAwLAorICAgIDB4Yzg4MmQxZmEwMDAwMDAwMCwgMHg2MTA0ODc1OTAwMDAwMDAwLCAweDM5ODQ2NThlMDAwMDAwMDAsCisgICAgMHhmNzEyZmFjZDAwMDAwMDAwLCAweGFmOTIxODFhMDAwMDAwMDAsIDB4MDYxNDRlYjkwMDAwMDAwMCwKKyAgICAweDVlOTRhYzZlMDAwMDAwMDAsIDB4MTUxZjkyMjQwMDAwMDAwMCwgMHg0ZDlmNzBmMzAwMDAwMDAwLAorICAgIDB4ZTQxOTI2NTAwMDAwMDAwMCwgMHhiYzk5YzQ4NzAwMDAwMDAwLCAweDZjNDI5ZGYxMDAwMDAwMDAsCisgICAgMHgzNGMyN2YyNjAwMDAwMDAwLCAweDlkNDQyOTg1MDAwMDAwMDAsIDB4YzVjNGNiNTIwMDAwMDAwMCwKKyAgICAweDhlNGZmNTE4MDAwMDAwMDAsIDB4ZDZjZjE3Y2YwMDAwMDAwMCwgMHg3ZjQ5NDE2YzAwMDAwMDAwLAorICAgIDB4MjdjOWEzYmIwMDAwMDAwMCwgMHhlOTVmM2NmODAwMDAwMDAwLCAweGIxZGZkZTJmMDAwMDAwMDAsCisgICAgMHgxODU5ODg4YzAwMDAwMDAwLCAweDQwZDk2YTViMDAwMDAwMDAsIDB4MGI1MjU0MTEwMDAwMDAwMCwKKyAgICAweDUzZDJiNmM2MDAwMDAwMDAsIDB4ZmE1NGUwNjUwMDAwMDAwMCwgMHhhMmQ0MDJiMjAwMDAwMDAwLAorICAgIDB4NjY3OWRmZTIwMDAwMDAwMCwgMHgzZWY5M2QzNTAwMDAwMDAwLCAweDk3N2Y2Yjk2MDAwMDAwMDAsCisgICAgMHhjZmZmODk0MTAwMDAwMDAwLCAweDg0NzRiNzBiMDAwMDAwMDAsIDB4ZGNmNDU1ZGMwMDAwMDAwMCwKKyAgICAweDc1NzIwMzdmMDAwMDAwMDAsIDB4MmRmMmUxYTgwMDAwMDAwMCwgMHhlMzY0N2VlYjAwMDAwMDAwLAorICAgIDB4YmJlNDljM2MwMDAwMDAwMCwgMHgxMjYyY2E5ZjAwMDAwMDAwLCAweDRhZTIyODQ4MDAwMDAwMDAsCisgICAgMHgwMTY5MTYwMjAwMDAwMDAwLCAweDU5ZTlmNGQ1MDAwMDAwMDAsIDB4ZjA2ZmEyNzYwMDAwMDAwMCwKKyAgICAweGE4ZWY0MGExMDAwMDAwMDB9LAorICAgezB4MDAwMDAwMDAwMDAwMDAwMCwgMHg0NjNiNjc2NTAwMDAwMDAwLCAweDhjNzZjZWNhMDAwMDAwMDAsCisgICAgMHhjYTRkYTlhZjAwMDAwMDAwLCAweDU5ZWJlZDRlMDAwMDAwMDAsIDB4MWZkMDhhMmIwMDAwMDAwMCwKKyAgICAweGQ1OWQyMzg0MDAwMDAwMDAsIDB4OTNhNjQ0ZTEwMDAwMDAwMCwgMHhiMmQ2ZGI5ZDAwMDAwMDAwLAorICAgIDB4ZjRlZGJjZjgwMDAwMDAwMCwgMHgzZWEwMTU1NzAwMDAwMDAwLCAweDc4OWI3MjMyMDAwMDAwMDAsCisgICAgMHhlYjNkMzZkMzAwMDAwMDAwLCAweGFkMDY1MWI2MDAwMDAwMDAsIDB4Njc0YmY4MTkwMDAwMDAwMCwKKyAgICAweDIxNzA5ZjdjMDAwMDAwMDAsIDB4MjVhYmM2ZTAwMDAwMDAwMCwgMHg2MzkwYTE4NTAwMDAwMDAwLAorICAgIDB4YTlkZDA4MmEwMDAwMDAwMCwgMHhlZmU2NmY0ZjAwMDAwMDAwLCAweDdjNDAyYmFlMDAwMDAwMDAsCisgICAgMHgzYTdiNGNjYjAwMDAwMDAwLCAweGYwMzZlNTY0MDAwMDAwMDAsIDB4YjYwZDgyMDEwMDAwMDAwMCwKKyAgICAweDk3N2QxZDdkMDAwMDAwMDAsIDB4ZDE0NjdhMTgwMDAwMDAwMCwgMHgxYjBiZDNiNzAwMDAwMDAwLAorICAgIDB4NWQzMGI0ZDIwMDAwMDAwMCwgMHhjZTk2ZjAzMzAwMDAwMDAwLCAweDg4YWQ5NzU2MDAwMDAwMDAsCisgICAgMHg0MmUwM2VmOTAwMDAwMDAwLCAweDA0ZGI1OTljMDAwMDAwMDAsIDB4MGI1MGZjMWEwMDAwMDAwMCwKKyAgICAweDRkNmI5YjdmMDAwMDAwMDAsIDB4ODcyNjMyZDAwMDAwMDAwMCwgMHhjMTFkNTViNTAwMDAwMDAwLAorICAgIDB4NTJiYjExNTQwMDAwMDAwMCwgMHgxNDgwNzYzMTAwMDAwMDAwLCAweGRlY2RkZjllMDAwMDAwMDAsCisgICAgMHg5OGY2YjhmYjAwMDAwMDAwLCAweGI5ODYyNzg3MDAwMDAwMDAsIDB4ZmZiZDQwZTIwMDAwMDAwMCwKKyAgICAweDM1ZjBlOTRkMDAwMDAwMDAsIDB4NzNjYjhlMjgwMDAwMDAwMCwgMHhlMDZkY2FjOTAwMDAwMDAwLAorICAgIDB4YTY1NmFkYWMwMDAwMDAwMCwgMHg2YzFiMDQwMzAwMDAwMDAwLCAweDJhMjA2MzY2MDAwMDAwMDAsCisgICAgMHgyZWZiM2FmYTAwMDAwMDAwLCAweDY4YzA1ZDlmMDAwMDAwMDAsIDB4YTI4ZGY0MzAwMDAwMDAwMCwKKyAgICAweGU0YjY5MzU1MDAwMDAwMDAsIDB4NzcxMGQ3YjQwMDAwMDAwMCwgMHgzMTJiYjBkMTAwMDAwMDAwLAorICAgIDB4ZmI2NjE5N2UwMDAwMDAwMCwgMHhiZDVkN2UxYjAwMDAwMDAwLCAweDljMmRlMTY3MDAwMDAwMDAsCisgICAgMHhkYTE2ODYwMjAwMDAwMDAwLCAweDEwNWIyZmFkMDAwMDAwMDAsIDB4NTY2MDQ4YzgwMDAwMDAwMCwKKyAgICAweGM1YzYwYzI5MDAwMDAwMDAsIDB4ODNmZDZiNGMwMDAwMDAwMCwgMHg0OWIwYzJlMzAwMDAwMDAwLAorICAgIDB4MGY4YmE1ODYwMDAwMDAwMCwgMHgxNmEwZjgzNTAwMDAwMDAwLCAweDUwOWI5ZjUwMDAwMDAwMDAsCisgICAgMHg5YWQ2MzZmZjAwMDAwMDAwLCAweGRjZWQ1MTlhMDAwMDAwMDAsIDB4NGY0YjE1N2IwMDAwMDAwMCwKKyAgICAweDA5NzA3MjFlMDAwMDAwMDAsIDB4YzMzZGRiYjEwMDAwMDAwMCwgMHg4NTA2YmNkNDAwMDAwMDAwLAorICAgIDB4YTQ3NjIzYTgwMDAwMDAwMCwgMHhlMjRkNDRjZDAwMDAwMDAwLCAweDI4MDBlZDYyMDAwMDAwMDAsCisgICAgMHg2ZTNiOGEwNzAwMDAwMDAwLCAweGZkOWRjZWU2MDAwMDAwMDAsIDB4YmJhNmE5ODMwMDAwMDAwMCwKKyAgICAweDcxZWIwMDJjMDAwMDAwMDAsIDB4MzdkMDY3NDkwMDAwMDAwMCwgMHgzMzBiM2VkNTAwMDAwMDAwLAorICAgIDB4NzUzMDU5YjAwMDAwMDAwMCwgMHhiZjdkZjAxZjAwMDAwMDAwLCAweGY5NDY5NzdhMDAwMDAwMDAsCisgICAgMHg2YWUwZDM5YjAwMDAwMDAwLCAweDJjZGJiNGZlMDAwMDAwMDAsIDB4ZTY5NjFkNTEwMDAwMDAwMCwKKyAgICAweGEwYWQ3YTM0MDAwMDAwMDAsIDB4ODFkZGU1NDgwMDAwMDAwMCwgMHhjN2U2ODIyZDAwMDAwMDAwLAorICAgIDB4MGRhYjJiODIwMDAwMDAwMCwgMHg0YjkwNGNlNzAwMDAwMDAwLCAweGQ4MzYwODA2MDAwMDAwMDAsCisgICAgMHg5ZTBkNmY2MzAwMDAwMDAwLCAweDU0NDBjNmNjMDAwMDAwMDAsIDB4MTI3YmExYTkwMDAwMDAwMCwKKyAgICAweDFkZjAwNDJmMDAwMDAwMDAsIDB4NWJjYjYzNGEwMDAwMDAwMCwgMHg5MTg2Y2FlNTAwMDAwMDAwLAorICAgIDB4ZDdiZGFkODAwMDAwMDAwMCwgMHg0NDFiZTk2MTAwMDAwMDAwLCAweDAyMjA4ZTA0MDAwMDAwMDAsCisgICAgMHhjODZkMjdhYjAwMDAwMDAwLCAweDhlNTY0MGNlMDAwMDAwMDAsIDB4YWYyNmRmYjIwMDAwMDAwMCwKKyAgICAweGU5MWRiOGQ3MDAwMDAwMDAsIDB4MjM1MDExNzgwMDAwMDAwMCwgMHg2NTZiNzYxZDAwMDAwMDAwLAorICAgIDB4ZjZjZDMyZmMwMDAwMDAwMCwgMHhiMGY2NTU5OTAwMDAwMDAwLCAweDdhYmJmYzM2MDAwMDAwMDAsCisgICAgMHgzYzgwOWI1MzAwMDAwMDAwLCAweDM4NWJjMmNmMDAwMDAwMDAsIDB4N2U2MGE1YWEwMDAwMDAwMCwKKyAgICAweGI0MmQwYzA1MDAwMDAwMDAsIDB4ZjIxNjZiNjAwMDAwMDAwMCwgMHg2MWIwMmY4MTAwMDAwMDAwLAorICAgIDB4Mjc4YjQ4ZTQwMDAwMDAwMCwgMHhlZGM2ZTE0YjAwMDAwMDAwLCAweGFiZmQ4NjJlMDAwMDAwMDAsCisgICAgMHg4YThkMTk1MjAwMDAwMDAwLCAweGNjYjY3ZTM3MDAwMDAwMDAsIDB4MDZmYmQ3OTgwMDAwMDAwMCwKKyAgICAweDQwYzBiMGZkMDAwMDAwMDAsIDB4ZDM2NmY0MWMwMDAwMDAwMCwgMHg5NTVkOTM3OTAwMDAwMDAwLAorICAgIDB4NWYxMDNhZDYwMDAwMDAwMCwgMHgxOTJiNWRiMzAwMDAwMDAwLCAweDJjNDBmMTZiMDAwMDAwMDAsCisgICAgMHg2YTdiOTYwZTAwMDAwMDAwLCAweGEwMzYzZmExMDAwMDAwMDAsIDB4ZTYwZDU4YzQwMDAwMDAwMCwKKyAgICAweDc1YWIxYzI1MDAwMDAwMDAsIDB4MzM5MDdiNDAwMDAwMDAwMCwgMHhmOWRkZDJlZjAwMDAwMDAwLAorICAgIDB4YmZlNmI1OGEwMDAwMDAwMCwgMHg5ZTk2MmFmNjAwMDAwMDAwLCAweGQ4YWQ0ZDkzMDAwMDAwMDAsCisgICAgMHgxMmUwZTQzYzAwMDAwMDAwLCAweDU0ZGI4MzU5MDAwMDAwMDAsIDB4Yzc3ZGM3YjgwMDAwMDAwMCwKKyAgICAweDgxNDZhMGRkMDAwMDAwMDAsIDB4NGIwYjA5NzIwMDAwMDAwMCwgMHgwZDMwNmUxNzAwMDAwMDAwLAorICAgIDB4MDllYjM3OGIwMDAwMDAwMCwgMHg0ZmQwNTBlZTAwMDAwMDAwLCAweDg1OWRmOTQxMDAwMDAwMDAsCisgICAgMHhjM2E2OWUyNDAwMDAwMDAwLCAweDUwMDBkYWM1MDAwMDAwMDAsIDB4MTYzYmJkYTAwMDAwMDAwMCwKKyAgICAweGRjNzYxNDBmMDAwMDAwMDAsIDB4OWE0ZDczNmEwMDAwMDAwMCwgMHhiYjNkZWMxNjAwMDAwMDAwLAorICAgIDB4ZmQwNjhiNzMwMDAwMDAwMCwgMHgzNzRiMjJkYzAwMDAwMDAwLCAweDcxNzA0NWI5MDAwMDAwMDAsCisgICAgMHhlMmQ2MDE1ODAwMDAwMDAwLCAweGE0ZWQ2NjNkMDAwMDAwMDAsIDB4NmVhMGNmOTIwMDAwMDAwMCwKKyAgICAweDI4OWJhOGY3MDAwMDAwMDAsIDB4MjcxMDBkNzEwMDAwMDAwMCwgMHg2MTJiNmExNDAwMDAwMDAwLAorICAgIDB4YWI2NmMzYmIwMDAwMDAwMCwgMHhlZDVkYTRkZTAwMDAwMDAwLCAweDdlZmJlMDNmMDAwMDAwMDAsCisgICAgMHgzOGMwODc1YTAwMDAwMDAwLCAweGYyOGQyZWY1MDAwMDAwMDAsIDB4YjRiNjQ5OTAwMDAwMDAwMCwKKyAgICAweDk1YzZkNmVjMDAwMDAwMDAsIDB4ZDNmZGIxODkwMDAwMDAwMCwgMHgxOWIwMTgyNjAwMDAwMDAwLAorICAgIDB4NWY4YjdmNDMwMDAwMDAwMCwgMHhjYzJkM2JhMjAwMDAwMDAwLCAweDhhMTY1Y2M3MDAwMDAwMDAsCisgICAgMHg0MDViZjU2ODAwMDAwMDAwLCAweDA2NjA5MjBkMDAwMDAwMDAsIDB4MDJiYmNiOTEwMDAwMDAwMCwKKyAgICAweDQ0ODBhY2Y0MDAwMDAwMDAsIDB4OGVjZDA1NWIwMDAwMDAwMCwgMHhjOGY2NjIzZTAwMDAwMDAwLAorICAgIDB4NWI1MDI2ZGYwMDAwMDAwMCwgMHgxZDZiNDFiYTAwMDAwMDAwLCAweGQ3MjZlODE1MDAwMDAwMDAsCisgICAgMHg5MTFkOGY3MDAwMDAwMDAwLCAweGIwNmQxMDBjMDAwMDAwMDAsIDB4ZjY1Njc3NjkwMDAwMDAwMCwKKyAgICAweDNjMWJkZWM2MDAwMDAwMDAsIDB4N2EyMGI5YTMwMDAwMDAwMCwgMHhlOTg2ZmQ0MjAwMDAwMDAwLAorICAgIDB4YWZiZDlhMjcwMDAwMDAwMCwgMHg2NWYwMzM4ODAwMDAwMDAwLCAweDIzY2I1NGVkMDAwMDAwMDAsCisgICAgMHgzYWUwMDk1ZTAwMDAwMDAwLCAweDdjZGI2ZTNiMDAwMDAwMDAsIDB4YjY5NmM3OTQwMDAwMDAwMCwKKyAgICAweGYwYWRhMGYxMDAwMDAwMDAsIDB4NjMwYmU0MTAwMDAwMDAwMCwgMHgyNTMwODM3NTAwMDAwMDAwLAorICAgIDB4ZWY3ZDJhZGEwMDAwMDAwMCwgMHhhOTQ2NGRiZjAwMDAwMDAwLCAweDg4MzZkMmMzMDAwMDAwMDAsCisgICAgMHhjZTBkYjVhNjAwMDAwMDAwLCAweDA0NDAxYzA5MDAwMDAwMDAsIDB4NDI3YjdiNmMwMDAwMDAwMCwKKyAgICAweGQxZGQzZjhkMDAwMDAwMDAsIDB4OTdlNjU4ZTgwMDAwMDAwMCwgMHg1ZGFiZjE0NzAwMDAwMDAwLAorICAgIDB4MWI5MDk2MjIwMDAwMDAwMCwgMHgxZjRiY2ZiZTAwMDAwMDAwLCAweDU5NzBhOGRiMDAwMDAwMDAsCisgICAgMHg5MzNkMDE3NDAwMDAwMDAwLCAweGQ1MDY2NjExMDAwMDAwMDAsIDB4NDZhMDIyZjAwMDAwMDAwMCwKKyAgICAweDAwOWI0NTk1MDAwMDAwMDAsIDB4Y2FkNmVjM2EwMDAwMDAwMCwgMHg4Y2VkOGI1ZjAwMDAwMDAwLAorICAgIDB4YWQ5ZDE0MjMwMDAwMDAwMCwgMHhlYmE2NzM0NjAwMDAwMDAwLCAweDIxZWJkYWU5MDAwMDAwMDAsCisgICAgMHg2N2QwYmQ4YzAwMDAwMDAwLCAweGY0NzZmOTZkMDAwMDAwMDAsIDB4YjI0ZDllMDgwMDAwMDAwMCwKKyAgICAweDc4MDAzN2E3MDAwMDAwMDAsIDB4M2UzYjUwYzIwMDAwMDAwMCwgMHgzMWIwZjU0NDAwMDAwMDAwLAorICAgIDB4Nzc4YjkyMjEwMDAwMDAwMCwgMHhiZGM2M2I4ZTAwMDAwMDAwLCAweGZiZmQ1Y2ViMDAwMDAwMDAsCisgICAgMHg2ODViMTgwYTAwMDAwMDAwLCAweDJlNjA3ZjZmMDAwMDAwMDAsIDB4ZTQyZGQ2YzAwMDAwMDAwMCwKKyAgICAweGEyMTZiMWE1MDAwMDAwMDAsIDB4ODM2NjJlZDkwMDAwMDAwMCwgMHhjNTVkNDliYzAwMDAwMDAwLAorICAgIDB4MGYxMGUwMTMwMDAwMDAwMCwgMHg0OTJiODc3NjAwMDAwMDAwLCAweGRhOGRjMzk3MDAwMDAwMDAsCisgICAgMHg5Y2I2YTRmMjAwMDAwMDAwLCAweDU2ZmIwZDVkMDAwMDAwMDAsIDB4MTBjMDZhMzgwMDAwMDAwMCwKKyAgICAweDE0MWIzM2E0MDAwMDAwMDAsIDB4NTIyMDU0YzEwMDAwMDAwMCwgMHg5ODZkZmQ2ZTAwMDAwMDAwLAorICAgIDB4ZGU1NjlhMGIwMDAwMDAwMCwgMHg0ZGYwZGVlYTAwMDAwMDAwLCAweDBiY2JiOThmMDAwMDAwMDAsCisgICAgMHhjMTg2MTAyMDAwMDAwMDAwLCAweDg3YmQ3NzQ1MDAwMDAwMDAsIDB4YTZjZGU4MzkwMDAwMDAwMCwKKyAgICAweGUwZjY4ZjVjMDAwMDAwMDAsIDB4MmFiYjI2ZjMwMDAwMDAwMCwgMHg2YzgwNDE5NjAwMDAwMDAwLAorICAgIDB4ZmYyNjA1NzcwMDAwMDAwMCwgMHhiOTFkNjIxMjAwMDAwMDAwLCAweDczNTBjYmJkMDAwMDAwMDAsCisgICAgMHgzNTZiYWNkODAwMDAwMDAwfSwKKyAgIHsweDAwMDAwMDAwMDAwMDAwMDAsIDB4OWU4M2RhOWYwMDAwMDAwMCwgMHg3ZDAxYzRlNDAwMDAwMDAwLAorICAgIDB4ZTM4MjFlN2IwMDAwMDAwMCwgMHhiYjA0ZjkxMjAwMDAwMDAwLCAweDI1ODcyMzhkMDAwMDAwMDAsCisgICAgMHhjNjA1M2RmNjAwMDAwMDAwLCAweDU4ODZlNzY5MDAwMDAwMDAsIDB4NzYwOWYyMjUwMDAwMDAwMCwKKyAgICAweGU4OGEyOGJhMDAwMDAwMDAsIDB4MGIwODM2YzEwMDAwMDAwMCwgMHg5NThiZWM1ZTAwMDAwMDAwLAorICAgIDB4Y2QwZDBiMzcwMDAwMDAwMCwgMHg1MzhlZDFhODAwMDAwMDAwLCAweGIwMGNjZmQzMDAwMDAwMDAsCisgICAgMHgyZThmMTU0YzAwMDAwMDAwLCAweGVjMTJlNDRiMDAwMDAwMDAsIDB4NzI5MTNlZDQwMDAwMDAwMCwKKyAgICAweDkxMTMyMGFmMDAwMDAwMDAsIDB4MGY5MGZhMzAwMDAwMDAwMCwgMHg1NzE2MWQ1OTAwMDAwMDAwLAorICAgIDB4Yzk5NWM3YzYwMDAwMDAwMCwgMHgyYTE3ZDliZDAwMDAwMDAwLCAweGI0OTQwMzIyMDAwMDAwMDAsCisgICAgMHg5YTFiMTY2ZTAwMDAwMDAwLCAweDA0OThjY2YxMDAwMDAwMDAsIDB4ZTcxYWQyOGEwMDAwMDAwMCwKKyAgICAweDc5OTkwODE1MDAwMDAwMDAsIDB4MjExZmVmN2MwMDAwMDAwMCwgMHhiZjljMzVlMzAwMDAwMDAwLAorICAgIDB4NWMxZTJiOTgwMDAwMDAwMCwgMHhjMjlkZjEwNzAwMDAwMDAwLCAweGQ4MjVjODk3MDAwMDAwMDAsCisgICAgMHg0NmE2MTIwODAwMDAwMDAwLCAweGE1MjQwYzczMDAwMDAwMDAsIDB4M2JhN2Q2ZWMwMDAwMDAwMCwKKyAgICAweDYzMjEzMTg1MDAwMDAwMDAsIDB4ZmRhMmViMWEwMDAwMDAwMCwgMHgxZTIwZjU2MTAwMDAwMDAwLAorICAgIDB4ODBhMzJmZmUwMDAwMDAwMCwgMHhhZTJjM2FiMjAwMDAwMDAwLCAweDMwYWZlMDJkMDAwMDAwMDAsCisgICAgMHhkMzJkZmU1NjAwMDAwMDAwLCAweDRkYWUyNGM5MDAwMDAwMDAsIDB4MTUyOGMzYTAwMDAwMDAwMCwKKyAgICAweDhiYWIxOTNmMDAwMDAwMDAsIDB4NjgyOTA3NDQwMDAwMDAwMCwgMHhmNmFhZGRkYjAwMDAwMDAwLAorICAgIDB4MzQzNzJjZGMwMDAwMDAwMCwgMHhhYWI0ZjY0MzAwMDAwMDAwLCAweDQ5MzZlODM4MDAwMDAwMDAsCisgICAgMHhkN2I1MzJhNzAwMDAwMDAwLCAweDhmMzNkNWNlMDAwMDAwMDAsIDB4MTFiMDBmNTEwMDAwMDAwMCwKKyAgICAweGYyMzIxMTJhMDAwMDAwMDAsIDB4NmNiMWNiYjUwMDAwMDAwMCwgMHg0MjNlZGVmOTAwMDAwMDAwLAorICAgIDB4ZGNiZDA0NjYwMDAwMDAwMCwgMHgzZjNmMWExZDAwMDAwMDAwLCAweGExYmNjMDgyMDAwMDAwMDAsCisgICAgMHhmOTNhMjdlYjAwMDAwMDAwLCAweDY3YjlmZDc0MDAwMDAwMDAsIDB4ODQzYmUzMGYwMDAwMDAwMCwKKyAgICAweDFhYjgzOTkwMDAwMDAwMDAsIDB4ZjE0ZGUxZjQwMDAwMDAwMCwgMHg2ZmNlM2I2YjAwMDAwMDAwLAorICAgIDB4OGM0YzI1MTAwMDAwMDAwMCwgMHgxMmNmZmY4ZjAwMDAwMDAwLCAweDRhNDkxOGU2MDAwMDAwMDAsCisgICAgMHhkNGNhYzI3OTAwMDAwMDAwLCAweDM3NDhkYzAyMDAwMDAwMDAsIDB4YTljYjA2OWQwMDAwMDAwMCwKKyAgICAweDg3NDQxM2QxMDAwMDAwMDAsIDB4MTljN2M5NGUwMDAwMDAwMCwgMHhmYTQ1ZDczNTAwMDAwMDAwLAorICAgIDB4NjRjNjBkYWEwMDAwMDAwMCwgMHgzYzQwZWFjMzAwMDAwMDAwLCAweGEyYzMzMDVjMDAwMDAwMDAsCisgICAgMHg0MTQxMmUyNzAwMDAwMDAwLCAweGRmYzJmNGI4MDAwMDAwMDAsIDB4MWQ1ZjA1YmYwMDAwMDAwMCwKKyAgICAweDgzZGNkZjIwMDAwMDAwMDAsIDB4NjA1ZWMxNWIwMDAwMDAwMCwgMHhmZWRkMWJjNDAwMDAwMDAwLAorICAgIDB4YTY1YmZjYWQwMDAwMDAwMCwgMHgzOGQ4MjYzMjAwMDAwMDAwLCAweGRiNWEzODQ5MDAwMDAwMDAsCisgICAgMHg0NWQ5ZTJkNjAwMDAwMDAwLCAweDZiNTZmNzlhMDAwMDAwMDAsIDB4ZjVkNTJkMDUwMDAwMDAwMCwKKyAgICAweDE2NTczMzdlMDAwMDAwMDAsIDB4ODhkNGU5ZTEwMDAwMDAwMCwgMHhkMDUyMGU4ODAwMDAwMDAwLAorICAgIDB4NGVkMWQ0MTcwMDAwMDAwMCwgMHhhZDUzY2E2YzAwMDAwMDAwLCAweDMzZDAxMGYzMDAwMDAwMDAsCisgICAgMHgyOTY4Mjk2MzAwMDAwMDAwLCAweGI3ZWJmM2ZjMDAwMDAwMDAsIDB4NTQ2OWVkODcwMDAwMDAwMCwKKyAgICAweGNhZWEzNzE4MDAwMDAwMDAsIDB4OTI2Y2QwNzEwMDAwMDAwMCwgMHgwY2VmMGFlZTAwMDAwMDAwLAorICAgIDB4ZWY2ZDE0OTUwMDAwMDAwMCwgMHg3MWVlY2UwYTAwMDAwMDAwLCAweDVmNjFkYjQ2MDAwMDAwMDAsCisgICAgMHhjMWUyMDFkOTAwMDAwMDAwLCAweDIyNjAxZmEyMDAwMDAwMDAsIDB4YmNlM2M1M2QwMDAwMDAwMCwKKyAgICAweGU0NjUyMjU0MDAwMDAwMDAsIDB4N2FlNmY4Y2IwMDAwMDAwMCwgMHg5OTY0ZTZiMDAwMDAwMDAwLAorICAgIDB4MDdlNzNjMmYwMDAwMDAwMCwgMHhjNTdhY2QyODAwMDAwMDAwLCAweDViZjkxN2I3MDAwMDAwMDAsCisgICAgMHhiODdiMDljYzAwMDAwMDAwLCAweDI2ZjhkMzUzMDAwMDAwMDAsIDB4N2U3ZTM0M2EwMDAwMDAwMCwKKyAgICAweGUwZmRlZWE1MDAwMDAwMDAsIDB4MDM3ZmYwZGUwMDAwMDAwMCwgMHg5ZGZjMmE0MTAwMDAwMDAwLAorICAgIDB4YjM3MzNmMGQwMDAwMDAwMCwgMHgyZGYwZTU5MjAwMDAwMDAwLCAweGNlNzJmYmU5MDAwMDAwMDAsCisgICAgMHg1MGYxMjE3NjAwMDAwMDAwLCAweDA4NzdjNjFmMDAwMDAwMDAsIDB4OTZmNDFjODAwMDAwMDAwMCwKKyAgICAweDc1NzYwMmZiMDAwMDAwMDAsIDB4ZWJmNWQ4NjQwMDAwMDAwMCwgMHhhMzlkYjMzMjAwMDAwMDAwLAorICAgIDB4M2QxZTY5YWQwMDAwMDAwMCwgMHhkZTljNzdkNjAwMDAwMDAwLCAweDQwMWZhZDQ5MDAwMDAwMDAsCisgICAgMHgxODk5NGEyMDAwMDAwMDAwLCAweDg2MWE5MGJmMDAwMDAwMDAsIDB4NjU5ODhlYzQwMDAwMDAwMCwKKyAgICAweGZiMWI1NDViMDAwMDAwMDAsIDB4ZDU5NDQxMTcwMDAwMDAwMCwgMHg0YjE3OWI4ODAwMDAwMDAwLAorICAgIDB4YTg5NTg1ZjMwMDAwMDAwMCwgMHgzNjE2NWY2YzAwMDAwMDAwLCAweDZlOTBiODA1MDAwMDAwMDAsCisgICAgMHhmMDEzNjI5YTAwMDAwMDAwLCAweDEzOTE3Y2UxMDAwMDAwMDAsIDB4OGQxMmE2N2UwMDAwMDAwMCwKKyAgICAweDRmOGY1Nzc5MDAwMDAwMDAsIDB4ZDEwYzhkZTYwMDAwMDAwMCwgMHgzMjhlOTM5ZDAwMDAwMDAwLAorICAgIDB4YWMwZDQ5MDIwMDAwMDAwMCwgMHhmNDhiYWU2YjAwMDAwMDAwLCAweDZhMDg3NGY0MDAwMDAwMDAsCisgICAgMHg4OThhNmE4ZjAwMDAwMDAwLCAweDE3MDliMDEwMDAwMDAwMDAsIDB4Mzk4NmE1NWMwMDAwMDAwMCwKKyAgICAweGE3MDU3ZmMzMDAwMDAwMDAsIDB4NDQ4NzYxYjgwMDAwMDAwMCwgMHhkYTA0YmIyNzAwMDAwMDAwLAorICAgIDB4ODI4MjVjNGUwMDAwMDAwMCwgMHgxYzAxODZkMTAwMDAwMDAwLCAweGZmODM5OGFhMDAwMDAwMDAsCisgICAgMHg2MTAwNDIzNTAwMDAwMDAwLCAweDdiYjg3YmE1MDAwMDAwMDAsIDB4ZTUzYmExM2EwMDAwMDAwMCwKKyAgICAweDA2YjliZjQxMDAwMDAwMDAsIDB4OTgzYTY1ZGUwMDAwMDAwMCwgMHhjMGJjODJiNzAwMDAwMDAwLAorICAgIDB4NWUzZjU4MjgwMDAwMDAwMCwgMHhiZGJkNDY1MzAwMDAwMDAwLCAweDIzM2U5Y2NjMDAwMDAwMDAsCisgICAgMHgwZGIxODk4MDAwMDAwMDAwLCAweDkzMzI1MzFmMDAwMDAwMDAsIDB4NzBiMDRkNjQwMDAwMDAwMCwKKyAgICAweGVlMzM5N2ZiMDAwMDAwMDAsIDB4YjZiNTcwOTIwMDAwMDAwMCwgMHgyODM2YWEwZDAwMDAwMDAwLAorICAgIDB4Y2JiNGI0NzYwMDAwMDAwMCwgMHg1NTM3NmVlOTAwMDAwMDAwLCAweDk3YWE5ZmVlMDAwMDAwMDAsCisgICAgMHgwOTI5NDU3MTAwMDAwMDAwLCAweGVhYWI1YjBhMDAwMDAwMDAsIDB4NzQyODgxOTUwMDAwMDAwMCwKKyAgICAweDJjYWU2NmZjMDAwMDAwMDAsIDB4YjIyZGJjNjMwMDAwMDAwMCwgMHg1MWFmYTIxODAwMDAwMDAwLAorICAgIDB4Y2YyYzc4ODcwMDAwMDAwMCwgMHhlMWEzNmRjYjAwMDAwMDAwLCAweDdmMjBiNzU0MDAwMDAwMDAsCisgICAgMHg5Y2EyYTkyZjAwMDAwMDAwLCAweDAyMjE3M2IwMDAwMDAwMDAsIDB4NWFhNzk0ZDkwMDAwMDAwMCwKKyAgICAweGM0MjQ0ZTQ2MDAwMDAwMDAsIDB4MjdhNjUwM2QwMDAwMDAwMCwgMHhiOTI1OGFhMjAwMDAwMDAwLAorICAgIDB4NTJkMDUyYzYwMDAwMDAwMCwgMHhjYzUzODg1OTAwMDAwMDAwLCAweDJmZDE5NjIyMDAwMDAwMDAsCisgICAgMHhiMTUyNGNiZDAwMDAwMDAwLCAweGU5ZDRhYmQ0MDAwMDAwMDAsIDB4Nzc1NzcxNGIwMDAwMDAwMCwKKyAgICAweDk0ZDU2ZjMwMDAwMDAwMDAsIDB4MGE1NmI1YWYwMDAwMDAwMCwgMHgyNGQ5YTBlMzAwMDAwMDAwLAorICAgIDB4YmE1YTdhN2MwMDAwMDAwMCwgMHg1OWQ4NjQwNzAwMDAwMDAwLCAweGM3NWJiZTk4MDAwMDAwMDAsCisgICAgMHg5ZmRkNTlmMTAwMDAwMDAwLCAweDAxNWU4MzZlMDAwMDAwMDAsIDB4ZTJkYzlkMTUwMDAwMDAwMCwKKyAgICAweDdjNWY0NzhhMDAwMDAwMDAsIDB4YmVjMmI2OGQwMDAwMDAwMCwgMHgyMDQxNmMxMjAwMDAwMDAwLAorICAgIDB4YzNjMzcyNjkwMDAwMDAwMCwgMHg1ZDQwYThmNjAwMDAwMDAwLCAweDA1YzY0ZjlmMDAwMDAwMDAsCisgICAgMHg5YjQ1OTUwMDAwMDAwMDAwLCAweDc4Yzc4YjdiMDAwMDAwMDAsIDB4ZTY0NDUxZTQwMDAwMDAwMCwKKyAgICAweGM4Y2I0NGE4MDAwMDAwMDAsIDB4NTY0ODllMzcwMDAwMDAwMCwgMHhiNWNhODA0YzAwMDAwMDAwLAorICAgIDB4MmI0OTVhZDMwMDAwMDAwMCwgMHg3M2NmYmRiYTAwMDAwMDAwLCAweGVkNGM2NzI1MDAwMDAwMDAsCisgICAgMHgwZWNlNzk1ZTAwMDAwMDAwLCAweDkwNGRhM2MxMDAwMDAwMDAsIDB4OGFmNTlhNTEwMDAwMDAwMCwKKyAgICAweDE0NzY0MGNlMDAwMDAwMDAsIDB4ZjdmNDVlYjUwMDAwMDAwMCwgMHg2OTc3ODQyYTAwMDAwMDAwLAorICAgIDB4MzFmMTYzNDMwMDAwMDAwMCwgMHhhZjcyYjlkYzAwMDAwMDAwLCAweDRjZjBhN2E3MDAwMDAwMDAsCisgICAgMHhkMjczN2QzODAwMDAwMDAwLCAweGZjZmM2ODc0MDAwMDAwMDAsIDB4NjI3ZmIyZWIwMDAwMDAwMCwKKyAgICAweDgxZmRhYzkwMDAwMDAwMDAsIDB4MWY3ZTc2MGYwMDAwMDAwMCwgMHg0N2Y4OTE2NjAwMDAwMDAwLAorICAgIDB4ZDk3YjRiZjkwMDAwMDAwMCwgMHgzYWY5NTU4MjAwMDAwMDAwLCAweGE0N2E4ZjFkMDAwMDAwMDAsCisgICAgMHg2NmU3N2UxYTAwMDAwMDAwLCAweGY4NjRhNDg1MDAwMDAwMDAsIDB4MWJlNmJhZmUwMDAwMDAwMCwKKyAgICAweDg1NjU2MDYxMDAwMDAwMDAsIDB4ZGRlMzg3MDgwMDAwMDAwMCwgMHg0MzYwNWQ5NzAwMDAwMDAwLAorICAgIDB4YTBlMjQzZWMwMDAwMDAwMCwgMHgzZTYxOTk3MzAwMDAwMDAwLCAweDEwZWU4YzNmMDAwMDAwMDAsCisgICAgMHg4ZTZkNTZhMDAwMDAwMDAwLCAweDZkZWY0OGRiMDAwMDAwMDAsIDB4ZjM2YzkyNDQwMDAwMDAwMCwKKyAgICAweGFiZWE3NTJkMDAwMDAwMDAsIDB4MzU2OWFmYjIwMDAwMDAwMCwgMHhkNmViYjFjOTAwMDAwMDAwLAorICAgIDB4NDg2ODZiNTYwMDAwMDAwMH0sCisgICB7MHgwMDAwMDAwMDAwMDAwMDAwLCAweGMwNjQyODE3MDAwMDAwMDAsIDB4ODBjOTUwMmUwMDAwMDAwMCwKKyAgICAweDQwYWQ3ODM5MDAwMDAwMDAsIDB4MDA5M2ExNWMwMDAwMDAwMCwgMHhjMGY3ODk0YjAwMDAwMDAwLAorICAgIDB4ODA1YWYxNzIwMDAwMDAwMCwgMHg0MDNlZDk2NTAwMDAwMDAwLCAweDAwMjY0M2I5MDAwMDAwMDAsCisgICAgMHhjMDQyNmJhZTAwMDAwMDAwLCAweDgwZWYxMzk3MDAwMDAwMDAsIDB4NDA4YjNiODAwMDAwMDAwMCwKKyAgICAweDAwYjVlMmU1MDAwMDAwMDAsIDB4YzBkMWNhZjIwMDAwMDAwMCwgMHg4MDdjYjJjYjAwMDAwMDAwLAorICAgIDB4NDAxODlhZGMwMDAwMDAwMCwgMHg0MTRhZjdhOTAwMDAwMDAwLCAweDgxMmVkZmJlMDAwMDAwMDAsCisgICAgMHhjMTgzYTc4NzAwMDAwMDAwLCAweDAxZTc4ZjkwMDAwMDAwMDAsIDB4NDFkOTU2ZjUwMDAwMDAwMCwKKyAgICAweDgxYmQ3ZWUyMDAwMDAwMDAsIDB4YzExMDA2ZGIwMDAwMDAwMCwgMHgwMTc0MmVjYzAwMDAwMDAwLAorICAgIDB4NDE2Y2I0MTAwMDAwMDAwMCwgMHg4MTA4OWMwNzAwMDAwMDAwLCAweGMxYTVlNDNlMDAwMDAwMDAsCisgICAgMHgwMWMxY2MyOTAwMDAwMDAwLCAweDQxZmYxNTRjMDAwMDAwMDAsIDB4ODE5YjNkNWIwMDAwMDAwMCwKKyAgICAweGMxMzY0NTYyMDAwMDAwMDAsIDB4MDE1MjZkNzUwMDAwMDAwMCwgMHhjMzkyOWY4ODAwMDAwMDAwLAorICAgIDB4MDNmNmI3OWYwMDAwMDAwMCwgMHg0MzViY2ZhNjAwMDAwMDAwLCAweDgzM2ZlN2IxMDAwMDAwMDAsCisgICAgMHhjMzAxM2VkNDAwMDAwMDAwLCAweDAzNjUxNmMzMDAwMDAwMDAsIDB4NDNjODZlZmEwMDAwMDAwMCwKKyAgICAweDgzYWM0NmVkMDAwMDAwMDAsIDB4YzNiNGRjMzEwMDAwMDAwMCwgMHgwM2QwZjQyNjAwMDAwMDAwLAorICAgIDB4NDM3ZDhjMWYwMDAwMDAwMCwgMHg4MzE5YTQwODAwMDAwMDAwLCAweGMzMjc3ZDZkMDAwMDAwMDAsCisgICAgMHgwMzQzNTU3YTAwMDAwMDAwLCAweDQzZWUyZDQzMDAwMDAwMDAsIDB4ODM4YTA1NTQwMDAwMDAwMCwKKyAgICAweDgyZDg2ODIxMDAwMDAwMDAsIDB4NDJiYzQwMzYwMDAwMDAwMCwgMHgwMjExMzgwZjAwMDAwMDAwLAorICAgIDB4YzI3NTEwMTgwMDAwMDAwMCwgMHg4MjRiYzk3ZDAwMDAwMDAwLCAweDQyMmZlMTZhMDAwMDAwMDAsCisgICAgMHgwMjgyOTk1MzAwMDAwMDAwLCAweGMyZTZiMTQ0MDAwMDAwMDAsIDB4ODJmZTJiOTgwMDAwMDAwMCwKKyAgICAweDQyOWEwMzhmMDAwMDAwMDAsIDB4MDIzNzdiYjYwMDAwMDAwMCwgMHhjMjUzNTNhMTAwMDAwMDAwLAorICAgIDB4ODI2ZDhhYzQwMDAwMDAwMCwgMHg0MjA5YTJkMzAwMDAwMDAwLCAweDAyYTRkYWVhMDAwMDAwMDAsCisgICAgMHhjMmMwZjJmZDAwMDAwMDAwLCAweGM3MjM0ZWNhMDAwMDAwMDAsIDB4MDc0NzY2ZGQwMDAwMDAwMCwKKyAgICAweDQ3ZWExZWU0MDAwMDAwMDAsIDB4ODc4ZTM2ZjMwMDAwMDAwMCwgMHhjN2IwZWY5NjAwMDAwMDAwLAorICAgIDB4MDdkNGM3ODEwMDAwMDAwMCwgMHg0Nzc5YmZiODAwMDAwMDAwLCAweDg3MWQ5N2FmMDAwMDAwMDAsCisgICAgMHhjNzA1MGQ3MzAwMDAwMDAwLCAweDA3NjEyNTY0MDAwMDAwMDAsIDB4NDdjYzVkNWQwMDAwMDAwMCwKKyAgICAweDg3YTg3NTRhMDAwMDAwMDAsIDB4Yzc5NmFjMmYwMDAwMDAwMCwgMHgwN2YyODQzODAwMDAwMDAwLAorICAgIDB4NDc1ZmZjMDEwMDAwMDAwMCwgMHg4NzNiZDQxNjAwMDAwMDAwLCAweDg2NjliOTYzMDAwMDAwMDAsCisgICAgMHg0NjBkOTE3NDAwMDAwMDAwLCAweDA2YTBlOTRkMDAwMDAwMDAsIDB4YzZjNGMxNWEwMDAwMDAwMCwKKyAgICAweDg2ZmExODNmMDAwMDAwMDAsIDB4NDY5ZTMwMjgwMDAwMDAwMCwgMHgwNjMzNDgxMTAwMDAwMDAwLAorICAgIDB4YzY1NzYwMDYwMDAwMDAwMCwgMHg4NjRmZmFkYTAwMDAwMDAwLCAweDQ2MmJkMmNkMDAwMDAwMDAsCisgICAgMHgwNjg2YWFmNDAwMDAwMDAwLCAweGM2ZTI4MmUzMDAwMDAwMDAsIDB4ODZkYzViODYwMDAwMDAwMCwKKyAgICAweDQ2Yjg3MzkxMDAwMDAwMDAsIDB4MDYxNTBiYTgwMDAwMDAwMCwgMHhjNjcxMjNiZjAwMDAwMDAwLAorICAgIDB4MDRiMWQxNDIwMDAwMDAwMCwgMHhjNGQ1Zjk1NTAwMDAwMDAwLCAweDg0Nzg4MTZjMDAwMDAwMDAsCisgICAgMHg0NDFjYTk3YjAwMDAwMDAwLCAweDA0MjI3MDFlMDAwMDAwMDAsIDB4YzQ0NjU4MDkwMDAwMDAwMCwKKyAgICAweDg0ZWIyMDMwMDAwMDAwMDAsIDB4NDQ4ZjA4MjcwMDAwMDAwMCwgMHgwNDk3OTJmYjAwMDAwMDAwLAorICAgIDB4YzRmM2JhZWMwMDAwMDAwMCwgMHg4NDVlYzJkNTAwMDAwMDAwLCAweDQ0M2FlYWMyMDAwMDAwMDAsCisgICAgMHgwNDA0MzNhNzAwMDAwMDAwLCAweGM0NjAxYmIwMDAwMDAwMDAsIDB4ODRjZDYzODkwMDAwMDAwMCwKKyAgICAweDQ0YTk0YjllMDAwMDAwMDAsIDB4NDVmYjI2ZWIwMDAwMDAwMCwgMHg4NTlmMGVmYzAwMDAwMDAwLAorICAgIDB4YzUzMjc2YzUwMDAwMDAwMCwgMHgwNTU2NWVkMjAwMDAwMDAwLCAweDQ1Njg4N2I3MDAwMDAwMDAsCisgICAgMHg4NTBjYWZhMDAwMDAwMDAwLCAweGM1YTFkNzk5MDAwMDAwMDAsIDB4MDVjNWZmOGUwMDAwMDAwMCwKKyAgICAweDQ1ZGQ2NTUyMDAwMDAwMDAsIDB4ODViOTRkNDUwMDAwMDAwMCwgMHhjNTE0MzU3YzAwMDAwMDAwLAorICAgIDB4MDU3MDFkNmIwMDAwMDAwMCwgMHg0NTRlYzQwZTAwMDAwMDAwLCAweDg1MmFlYzE5MDAwMDAwMDAsCisgICAgMHhjNTg3OTQyMDAwMDAwMDAwLCAweDA1ZTNiYzM3MDAwMDAwMDAsIDB4Y2Y0MWVkNGYwMDAwMDAwMCwKKyAgICAweDBmMjVjNTU4MDAwMDAwMDAsIDB4NGY4OGJkNjEwMDAwMDAwMCwgMHg4ZmVjOTU3NjAwMDAwMDAwLAorICAgIDB4Y2ZkMjRjMTMwMDAwMDAwMCwgMHgwZmI2NjQwNDAwMDAwMDAwLCAweDRmMWIxYzNkMDAwMDAwMDAsCisgICAgMHg4ZjdmMzQyYTAwMDAwMDAwLCAweGNmNjdhZWY2MDAwMDAwMDAsIDB4MGYwMzg2ZTEwMDAwMDAwMCwKKyAgICAweDRmYWVmZWQ4MDAwMDAwMDAsIDB4OGZjYWQ2Y2YwMDAwMDAwMCwgMHhjZmY0MGZhYTAwMDAwMDAwLAorICAgIDB4MGY5MDI3YmQwMDAwMDAwMCwgMHg0ZjNkNWY4NDAwMDAwMDAwLCAweDhmNTk3NzkzMDAwMDAwMDAsCisgICAgMHg4ZTBiMWFlNjAwMDAwMDAwLCAweDRlNmYzMmYxMDAwMDAwMDAsIDB4MGVjMjRhYzgwMDAwMDAwMCwKKyAgICAweGNlYTY2MmRmMDAwMDAwMDAsIDB4OGU5OGJiYmEwMDAwMDAwMCwgMHg0ZWZjOTNhZDAwMDAwMDAwLAorICAgIDB4MGU1MWViOTQwMDAwMDAwMCwgMHhjZTM1YzM4MzAwMDAwMDAwLCAweDhlMmQ1OTVmMDAwMDAwMDAsCisgICAgMHg0ZTQ5NzE0ODAwMDAwMDAwLCAweDBlZTQwOTcxMDAwMDAwMDAsIDB4Y2U4MDIxNjYwMDAwMDAwMCwKKyAgICAweDhlYmVmODAzMDAwMDAwMDAsIDB4NGVkYWQwMTQwMDAwMDAwMCwgMHgwZTc3YTgyZDAwMDAwMDAwLAorICAgIDB4Y2UxMzgwM2EwMDAwMDAwMCwgMHgwY2QzNzJjNzAwMDAwMDAwLCAweGNjYjc1YWQwMDAwMDAwMDAsCisgICAgMHg4YzFhMjJlOTAwMDAwMDAwLCAweDRjN2UwYWZlMDAwMDAwMDAsIDB4MGM0MGQzOWIwMDAwMDAwMCwKKyAgICAweGNjMjRmYjhjMDAwMDAwMDAsIDB4OGM4OTgzYjUwMDAwMDAwMCwgMHg0Y2VkYWJhMjAwMDAwMDAwLAorICAgIDB4MGNmNTMxN2UwMDAwMDAwMCwgMHhjYzkxMTk2OTAwMDAwMDAwLCAweDhjM2M2MTUwMDAwMDAwMDAsCisgICAgMHg0YzU4NDk0NzAwMDAwMDAwLCAweDBjNjY5MDIyMDAwMDAwMDAsIDB4Y2MwMmI4MzUwMDAwMDAwMCwKKyAgICAweDhjYWZjMDBjMDAwMDAwMDAsIDB4NGNjYmU4MWIwMDAwMDAwMCwgMHg0ZDk5ODU2ZTAwMDAwMDAwLAorICAgIDB4OGRmZGFkNzkwMDAwMDAwMCwgMHhjZDUwZDU0MDAwMDAwMDAwLCAweDBkMzRmZDU3MDAwMDAwMDAsCisgICAgMHg0ZDBhMjQzMjAwMDAwMDAwLCAweDhkNmUwYzI1MDAwMDAwMDAsIDB4Y2RjMzc0MWMwMDAwMDAwMCwKKyAgICAweDBkYTc1YzBiMDAwMDAwMDAsIDB4NGRiZmM2ZDcwMDAwMDAwMCwgMHg4ZGRiZWVjMDAwMDAwMDAwLAorICAgIDB4Y2Q3Njk2ZjkwMDAwMDAwMCwgMHgwZDEyYmVlZTAwMDAwMDAwLCAweDRkMmM2NzhiMDAwMDAwMDAsCisgICAgMHg4ZDQ4NGY5YzAwMDAwMDAwLCAweGNkZTUzN2E1MDAwMDAwMDAsIDB4MGQ4MTFmYjIwMDAwMDAwMCwKKyAgICAweDA4NjJhMzg1MDAwMDAwMDAsIDB4YzgwNjhiOTIwMDAwMDAwMCwgMHg4OGFiZjNhYjAwMDAwMDAwLAorICAgIDB4NDhjZmRiYmMwMDAwMDAwMCwgMHgwOGYxMDJkOTAwMDAwMDAwLCAweGM4OTUyYWNlMDAwMDAwMDAsCisgICAgMHg4ODM4NTJmNzAwMDAwMDAwLCAweDQ4NWM3YWUwMDAwMDAwMDAsIDB4MDg0NGUwM2MwMDAwMDAwMCwKKyAgICAweGM4MjBjODJiMDAwMDAwMDAsIDB4ODg4ZGIwMTIwMDAwMDAwMCwgMHg0OGU5OTgwNTAwMDAwMDAwLAorICAgIDB4MDhkNzQxNjAwMDAwMDAwMCwgMHhjOGIzNjk3NzAwMDAwMDAwLCAweDg4MWUxMTRlMDAwMDAwMDAsCisgICAgMHg0ODdhMzk1OTAwMDAwMDAwLCAweDQ5Mjg1NDJjMDAwMDAwMDAsIDB4ODk0YzdjM2IwMDAwMDAwMCwKKyAgICAweGM5ZTEwNDAyMDAwMDAwMDAsIDB4MDk4NTJjMTUwMDAwMDAwMCwgMHg0OWJiZjU3MDAwMDAwMDAwLAorICAgIDB4ODlkZmRkNjcwMDAwMDAwMCwgMHhjOTcyYTU1ZTAwMDAwMDAwLCAweDA5MTY4ZDQ5MDAwMDAwMDAsCisgICAgMHg0OTBlMTc5NTAwMDAwMDAwLCAweDg5NmEzZjgyMDAwMDAwMDAsIDB4YzljNzQ3YmIwMDAwMDAwMCwKKyAgICAweDA5YTM2ZmFjMDAwMDAwMDAsIDB4NDk5ZGI2YzkwMDAwMDAwMCwgMHg4OWY5OWVkZTAwMDAwMDAwLAorICAgIDB4Yzk1NGU2ZTcwMDAwMDAwMCwgMHgwOTMwY2VmMDAwMDAwMDAwLCAweGNiZjAzYzBkMDAwMDAwMDAsCisgICAgMHgwYjk0MTQxYTAwMDAwMDAwLCAweDRiMzk2YzIzMDAwMDAwMDAsIDB4OGI1ZDQ0MzQwMDAwMDAwMCwKKyAgICAweGNiNjM5ZDUxMDAwMDAwMDAsIDB4MGIwN2I1NDYwMDAwMDAwMCwgMHg0YmFhY2Q3ZjAwMDAwMDAwLAorICAgIDB4OGJjZWU1NjgwMDAwMDAwMCwgMHhjYmQ2N2ZiNDAwMDAwMDAwLCAweDBiYjI1N2EzMDAwMDAwMDAsCisgICAgMHg0YjFmMmY5YTAwMDAwMDAwLCAweDhiN2IwNzhkMDAwMDAwMDAsIDB4Y2I0NWRlZTgwMDAwMDAwMCwKKyAgICAweDBiMjFmNmZmMDAwMDAwMDAsIDB4NGI4YzhlYzYwMDAwMDAwMCwgMHg4YmU4YTZkMTAwMDAwMDAwLAorICAgIDB4OGFiYWNiYTQwMDAwMDAwMCwgMHg0YWRlZTNiMzAwMDAwMDAwLCAweDBhNzM5YjhhMDAwMDAwMDAsCisgICAgMHhjYTE3YjM5ZDAwMDAwMDAwLCAweDhhMjk2YWY4MDAwMDAwMDAsIDB4NGE0ZDQyZWYwMDAwMDAwMCwKKyAgICAweDBhZTAzYWQ2MDAwMDAwMDAsIDB4Y2E4NDEyYzEwMDAwMDAwMCwgMHg4YTljODgxZDAwMDAwMDAwLAorICAgIDB4NGFmOGEwMGEwMDAwMDAwMCwgMHgwYTU1ZDgzMzAwMDAwMDAwLCAweGNhMzFmMDI0MDAwMDAwMDAsCisgICAgMHg4YTBmMjk0MTAwMDAwMDAwLCAweDRhNmIwMTU2MDAwMDAwMDAsIDB4MGFjNjc5NmYwMDAwMDAwMCwKKyAgICAweGNhYTI1MTc4MDAwMDAwMDB9LAorICAgezB4MDAwMDAwMDAwMDAwMDAwMCwgMHhkNGVhNzM5YjAwMDAwMDAwLCAweGU5ZDM5NmVkMDAwMDAwMDAsCisgICAgMHgzZDM5ZTU3NjAwMDAwMDAwLCAweDkzYTE1YzAwMDAwMDAwMDAsIDB4NDc0YjJmOWIwMDAwMDAwMCwKKyAgICAweDdhNzJjYWVkMDAwMDAwMDAsIDB4YWU5OGI5NzYwMDAwMDAwMCwgMHgyNjQzYjkwMDAwMDAwMDAwLAorICAgIDB4ZjJhOWNhOWIwMDAwMDAwMCwgMHhjZjkwMmZlZDAwMDAwMDAwLCAweDFiN2E1Yzc2MDAwMDAwMDAsCisgICAgMHhiNWUyZTUwMDAwMDAwMDAwLCAweDYxMDg5NjliMDAwMDAwMDAsIDB4NWMzMTczZWQwMDAwMDAwMCwKKyAgICAweDg4ZGIwMDc2MDAwMDAwMDAsIDB4NGM4NjcyMDEwMDAwMDAwMCwgMHg5ODZjMDE5YTAwMDAwMDAwLAorICAgIDB4YTU1NWU0ZWMwMDAwMDAwMCwgMHg3MWJmOTc3NzAwMDAwMDAwLCAweGRmMjcyZTAxMDAwMDAwMDAsCisgICAgMHgwYmNkNWQ5YTAwMDAwMDAwLCAweDM2ZjRiOGVjMDAwMDAwMDAsIDB4ZTIxZWNiNzcwMDAwMDAwMCwKKyAgICAweDZhYzVjYjAxMDAwMDAwMDAsIDB4YmUyZmI4OWEwMDAwMDAwMCwgMHg4MzE2NWRlYzAwMDAwMDAwLAorICAgIDB4NTdmYzJlNzcwMDAwMDAwMCwgMHhmOTY0OTcwMTAwMDAwMDAwLCAweDJkOGVlNDlhMDAwMDAwMDAsCisgICAgMHgxMGI3MDFlYzAwMDAwMDAwLCAweGM0NWQ3Mjc3MDAwMDAwMDAsIDB4OTgwY2U1MDIwMDAwMDAwMCwKKyAgICAweDRjZTY5Njk5MDAwMDAwMDAsIDB4NzFkZjczZWYwMDAwMDAwMCwgMHhhNTM1MDA3NDAwMDAwMDAwLAorICAgIDB4MGJhZGI5MDIwMDAwMDAwMCwgMHhkZjQ3Y2E5OTAwMDAwMDAwLCAweGUyN2UyZmVmMDAwMDAwMDAsCisgICAgMHgzNjk0NWM3NDAwMDAwMDAwLCAweGJlNGY1YzAyMDAwMDAwMDAsIDB4NmFhNTJmOTkwMDAwMDAwMCwKKyAgICAweDU3OWNjYWVmMDAwMDAwMDAsIDB4ODM3NmI5NzQwMDAwMDAwMCwgMHgyZGVlMDAwMjAwMDAwMDAwLAorICAgIDB4ZjkwNDczOTkwMDAwMDAwMCwgMHhjNDNkOTZlZjAwMDAwMDAwLCAweDEwZDdlNTc0MDAwMDAwMDAsCisgICAgMHhkNDhhOTcwMzAwMDAwMDAwLCAweDAwNjBlNDk4MDAwMDAwMDAsIDB4M2Q1OTAxZWUwMDAwMDAwMCwKKyAgICAweGU5YjM3Mjc1MDAwMDAwMDAsIDB4NDcyYmNiMDMwMDAwMDAwMCwgMHg5M2MxYjg5ODAwMDAwMDAwLAorICAgIDB4YWVmODVkZWUwMDAwMDAwMCwgMHg3YTEyMmU3NTAwMDAwMDAwLCAweGYyYzkyZTAzMDAwMDAwMDAsCisgICAgMHgyNjIzNWQ5ODAwMDAwMDAwLCAweDFiMWFiOGVlMDAwMDAwMDAsIDB4Y2ZmMGNiNzUwMDAwMDAwMCwKKyAgICAweDYxNjg3MjAzMDAwMDAwMDAsIDB4YjU4MjAxOTgwMDAwMDAwMCwgMHg4OGJiZTRlZTAwMDAwMDAwLAorICAgIDB4NWM1MTk3NzUwMDAwMDAwMCwgMHgzMDE5Y2EwNTAwMDAwMDAwLCAweGU0ZjNiOTllMDAwMDAwMDAsCisgICAgMHhkOWNhNWNlODAwMDAwMDAwLCAweDBkMjAyZjczMDAwMDAwMDAsIDB4YTNiODk2MDUwMDAwMDAwMCwKKyAgICAweDc3NTJlNTllMDAwMDAwMDAsIDB4NGE2YjAwZTgwMDAwMDAwMCwgMHg5ZTgxNzM3MzAwMDAwMDAwLAorICAgIDB4MTY1YTczMDUwMDAwMDAwMCwgMHhjMmIwMDA5ZTAwMDAwMDAwLCAweGZmODllNWU4MDAwMDAwMDAsCisgICAgMHgyYjYzOTY3MzAwMDAwMDAwLCAweDg1ZmIyZjA1MDAwMDAwMDAsIDB4NTExMTVjOWUwMDAwMDAwMCwKKyAgICAweDZjMjhiOWU4MDAwMDAwMDAsIDB4YjhjMmNhNzMwMDAwMDAwMCwgMHg3YzlmYjgwNDAwMDAwMDAwLAorICAgIDB4YTg3NWNiOWYwMDAwMDAwMCwgMHg5NTRjMmVlOTAwMDAwMDAwLCAweDQxYTY1ZDcyMDAwMDAwMDAsCisgICAgMHhlZjNlZTQwNDAwMDAwMDAwLCAweDNiZDQ5NzlmMDAwMDAwMDAsIDB4MDZlZDcyZTkwMDAwMDAwMCwKKyAgICAweGQyMDcwMTcyMDAwMDAwMDAsIDB4NWFkYzAxMDQwMDAwMDAwMCwgMHg4ZTM2NzI5ZjAwMDAwMDAwLAorICAgIDB4YjMwZjk3ZTkwMDAwMDAwMCwgMHg2N2U1ZTQ3MjAwMDAwMDAwLCAweGM5N2Q1ZDA0MDAwMDAwMDAsCisgICAgMHgxZDk3MmU5ZjAwMDAwMDAwLCAweDIwYWVjYmU5MDAwMDAwMDAsIDB4ZjQ0NGI4NzIwMDAwMDAwMCwKKyAgICAweGE4MTUyZjA3MDAwMDAwMDAsIDB4N2NmZjVjOWMwMDAwMDAwMCwgMHg0MWM2YjllYTAwMDAwMDAwLAorICAgIDB4OTUyY2NhNzEwMDAwMDAwMCwgMHgzYmI0NzMwNzAwMDAwMDAwLCAweGVmNWUwMDljMDAwMDAwMDAsCisgICAgMHhkMjY3ZTVlYTAwMDAwMDAwLCAweDA2OGQ5NjcxMDAwMDAwMDAsIDB4OGU1Njk2MDcwMDAwMDAwMCwKKyAgICAweDVhYmNlNTljMDAwMDAwMDAsIDB4Njc4NTAwZWEwMDAwMDAwMCwgMHhiMzZmNzM3MTAwMDAwMDAwLAorICAgIDB4MWRmN2NhMDcwMDAwMDAwMCwgMHhjOTFkYjk5YzAwMDAwMDAwLCAweGY0MjQ1Y2VhMDAwMDAwMDAsCisgICAgMHgyMGNlMmY3MTAwMDAwMDAwLCAweGU0OTM1ZDA2MDAwMDAwMDAsIDB4MzA3OTJlOWQwMDAwMDAwMCwKKyAgICAweDBkNDBjYmViMDAwMDAwMDAsIDB4ZDlhYWI4NzAwMDAwMDAwMCwgMHg3NzMyMDEwNjAwMDAwMDAwLAorICAgIDB4YTNkODcyOWQwMDAwMDAwMCwgMHg5ZWUxOTdlYjAwMDAwMDAwLCAweDRhMGJlNDcwMDAwMDAwMDAsCisgICAgMHhjMmQwZTQwNjAwMDAwMDAwLCAweDE2M2E5NzlkMDAwMDAwMDAsIDB4MmIwMzcyZWIwMDAwMDAwMCwKKyAgICAweGZmZTkwMTcwMDAwMDAwMDAsIDB4NTE3MWI4MDYwMDAwMDAwMCwgMHg4NTliY2I5ZDAwMDAwMDAwLAorICAgIDB4YjhhMjJlZWIwMDAwMDAwMCwgMHg2YzQ4NWQ3MDAwMDAwMDAwLCAweDYwMzI5NDBiMDAwMDAwMDAsCisgICAgMHhiNGQ4ZTc5MDAwMDAwMDAwLCAweDg5ZTEwMmU2MDAwMDAwMDAsIDB4NWQwYjcxN2QwMDAwMDAwMCwKKyAgICAweGYzOTNjODBiMDAwMDAwMDAsIDB4Mjc3OWJiOTAwMDAwMDAwMCwgMHgxYTQwNWVlNjAwMDAwMDAwLAorICAgIDB4Y2VhYTJkN2QwMDAwMDAwMCwgMHg0NjcxMmQwYjAwMDAwMDAwLCAweDkyOWI1ZTkwMDAwMDAwMDAsCisgICAgMHhhZmEyYmJlNjAwMDAwMDAwLCAweDdiNDhjODdkMDAwMDAwMDAsIDB4ZDVkMDcxMGIwMDAwMDAwMCwKKyAgICAweDAxM2EwMjkwMDAwMDAwMDAsIDB4M2MwM2U3ZTYwMDAwMDAwMCwgMHhlOGU5OTQ3ZDAwMDAwMDAwLAorICAgIDB4MmNiNGU2MGEwMDAwMDAwMCwgMHhmODVlOTU5MTAwMDAwMDAwLCAweGM1Njc3MGU3MDAwMDAwMDAsCisgICAgMHgxMThkMDM3YzAwMDAwMDAwLCAweGJmMTViYTBhMDAwMDAwMDAsIDB4NmJmZmM5OTEwMDAwMDAwMCwKKyAgICAweDU2YzYyY2U3MDAwMDAwMDAsIDB4ODIyYzVmN2MwMDAwMDAwMCwgMHgwYWY3NWYwYTAwMDAwMDAwLAorICAgIDB4ZGUxZDJjOTEwMDAwMDAwMCwgMHhlMzI0YzllNzAwMDAwMDAwLCAweDM3Y2ViYTdjMDAwMDAwMDAsCisgICAgMHg5OTU2MDMwYTAwMDAwMDAwLCAweDRkYmM3MDkxMDAwMDAwMDAsIDB4NzA4NTk1ZTcwMDAwMDAwMCwKKyAgICAweGE0NmZlNjdjMDAwMDAwMDAsIDB4ZjgzZTcxMDkwMDAwMDAwMCwgMHgyY2Q0MDI5MjAwMDAwMDAwLAorICAgIDB4MTFlZGU3ZTQwMDAwMDAwMCwgMHhjNTA3OTQ3ZjAwMDAwMDAwLCAweDZiOWYyZDA5MDAwMDAwMDAsCisgICAgMHhiZjc1NWU5MjAwMDAwMDAwLCAweDgyNGNiYmU0MDAwMDAwMDAsIDB4NTZhNmM4N2YwMDAwMDAwMCwKKyAgICAweGRlN2RjODA5MDAwMDAwMDAsIDB4MGE5N2JiOTIwMDAwMDAwMCwgMHgzN2FlNWVlNDAwMDAwMDAwLAorICAgIDB4ZTM0NDJkN2YwMDAwMDAwMCwgMHg0ZGRjOTQwOTAwMDAwMDAwLCAweDk5MzZlNzkyMDAwMDAwMDAsCisgICAgMHhhNDBmMDJlNDAwMDAwMDAwLCAweDcwZTU3MTdmMDAwMDAwMDAsIDB4YjRiODAzMDgwMDAwMDAwMCwKKyAgICAweDYwNTI3MDkzMDAwMDAwMDAsIDB4NWQ2Yjk1ZTUwMDAwMDAwMCwgMHg4OTgxZTY3ZTAwMDAwMDAwLAorICAgIDB4MjcxOTVmMDgwMDAwMDAwMCwgMHhmM2YzMmM5MzAwMDAwMDAwLCAweGNlY2FjOWU1MDAwMDAwMDAsCisgICAgMHgxYTIwYmE3ZTAwMDAwMDAwLCAweDkyZmJiYTA4MDAwMDAwMDAsIDB4NDYxMWM5OTMwMDAwMDAwMCwKKyAgICAweDdiMjgyY2U1MDAwMDAwMDAsIDB4YWZjMjVmN2UwMDAwMDAwMCwgMHgwMTVhZTYwODAwMDAwMDAwLAorICAgIDB4ZDViMDk1OTMwMDAwMDAwMCwgMHhlODg5NzBlNTAwMDAwMDAwLCAweDNjNjMwMzdlMDAwMDAwMDAsCisgICAgMHg1MDJiNWUwZTAwMDAwMDAwLCAweDg0YzEyZDk1MDAwMDAwMDAsIDB4YjlmOGM4ZTMwMDAwMDAwMCwKKyAgICAweDZkMTJiYjc4MDAwMDAwMDAsIDB4YzM4YTAyMGUwMDAwMDAwMCwgMHgxNzYwNzE5NTAwMDAwMDAwLAorICAgIDB4MmE1OTk0ZTMwMDAwMDAwMCwgMHhmZWIzZTc3ODAwMDAwMDAwLCAweDc2NjhlNzBlMDAwMDAwMDAsCisgICAgMHhhMjgyOTQ5NTAwMDAwMDAwLCAweDlmYmI3MWUzMDAwMDAwMDAsIDB4NGI1MTAyNzgwMDAwMDAwMCwKKyAgICAweGU1YzliYjBlMDAwMDAwMDAsIDB4MzEyM2M4OTUwMDAwMDAwMCwgMHgwYzFhMmRlMzAwMDAwMDAwLAorICAgIDB4ZDhmMDVlNzgwMDAwMDAwMCwgMHgxY2FkMmMwZjAwMDAwMDAwLCAweGM4NDc1Zjk0MDAwMDAwMDAsCisgICAgMHhmNTdlYmFlMjAwMDAwMDAwLCAweDIxOTRjOTc5MDAwMDAwMDAsIDB4OGYwYzcwMGYwMDAwMDAwMCwKKyAgICAweDViZTYwMzk0MDAwMDAwMDAsIDB4NjZkZmU2ZTIwMDAwMDAwMCwgMHhiMjM1OTU3OTAwMDAwMDAwLAorICAgIDB4M2FlZTk1MGYwMDAwMDAwMCwgMHhlZTA0ZTY5NDAwMDAwMDAwLCAweGQzM2QwM2UyMDAwMDAwMDAsCisgICAgMHgwN2Q3NzA3OTAwMDAwMDAwLCAweGE5NGZjOTBmMDAwMDAwMDAsIDB4N2RhNWJhOTQwMDAwMDAwMCwKKyAgICAweDQwOWM1ZmUyMDAwMDAwMDAsIDB4OTQ3NjJjNzkwMDAwMDAwMCwgMHhjODI3YmIwYzAwMDAwMDAwLAorICAgIDB4MWNjZGM4OTcwMDAwMDAwMCwgMHgyMWY0MmRlMTAwMDAwMDAwLCAweGY1MWU1ZTdhMDAwMDAwMDAsCisgICAgMHg1Yjg2ZTcwYzAwMDAwMDAwLCAweDhmNmM5NDk3MDAwMDAwMDAsIDB4YjI1NTcxZTEwMDAwMDAwMCwKKyAgICAweDY2YmYwMjdhMDAwMDAwMDAsIDB4ZWU2NDAyMGMwMDAwMDAwMCwgMHgzYThlNzE5NzAwMDAwMDAwLAorICAgIDB4MDdiNzk0ZTEwMDAwMDAwMCwgMHhkMzVkZTc3YTAwMDAwMDAwLCAweDdkYzU1ZTBjMDAwMDAwMDAsCisgICAgMHhhOTJmMmQ5NzAwMDAwMDAwLCAweDk0MTZjOGUxMDAwMDAwMDAsIDB4NDBmY2JiN2EwMDAwMDAwMCwKKyAgICAweDg0YTFjOTBkMDAwMDAwMDAsIDB4NTA0YmJhOTYwMDAwMDAwMCwgMHg2ZDcyNWZlMDAwMDAwMDAwLAorICAgIDB4Yjk5ODJjN2IwMDAwMDAwMCwgMHgxNzAwOTUwZDAwMDAwMDAwLCAweGMzZWFlNjk2MDAwMDAwMDAsCisgICAgMHhmZWQzMDNlMDAwMDAwMDAwLCAweDJhMzk3MDdiMDAwMDAwMDAsIDB4YTJlMjcwMGQwMDAwMDAwMCwKKyAgICAweDc2MDgwMzk2MDAwMDAwMDAsIDB4NGIzMWU2ZTAwMDAwMDAwMCwgMHg5ZmRiOTU3YjAwMDAwMDAwLAorICAgIDB4MzE0MzJjMGQwMDAwMDAwMCwgMHhlNWE5NWY5NjAwMDAwMDAwLCAweGQ4OTBiYWUwMDAwMDAwMDAsCisgICAgMHgwYzdhYzk3YjAwMDAwMDAwfSwKKyAgIHsweDAwMDAwMDAwMDAwMDAwMDAsIDB4Mjc2NTI1ODEwMDAwMDAwMCwgMHgwZmNjM2JkOTAwMDAwMDAwLAorICAgIDB4MjhhOTFlNTgwMDAwMDAwMCwgMHg1ZjllMDY2OTAwMDAwMDAwLCAweDc4ZmIyM2U4MDAwMDAwMDAsCisgICAgMHg1MDUyM2RiMDAwMDAwMDAwLCAweDc3MzcxODMxMDAwMDAwMDAsIDB4YmUzYzBkZDIwMDAwMDAwMCwKKyAgICAweDk5NTkyODUzMDAwMDAwMDAsIDB4YjFmMDM2MGIwMDAwMDAwMCwgMHg5Njk1MTM4YTAwMDAwMDAwLAorICAgIDB4ZTFhMjBiYmIwMDAwMDAwMCwgMHhjNmM3MmUzYTAwMDAwMDAwLCAweGVlNmUzMDYyMDAwMDAwMDAsCisgICAgMHhjOTBiMTVlMzAwMDAwMDAwLCAweDNkN2Y2YjdmMDAwMDAwMDAsIDB4MWExYTRlZmUwMDAwMDAwMCwKKyAgICAweDMyYjM1MGE2MDAwMDAwMDAsIDB4MTVkNjc1MjcwMDAwMDAwMCwgMHg2MmUxNmQxNjAwMDAwMDAwLAorICAgIDB4NDU4NDQ4OTcwMDAwMDAwMCwgMHg2ZDJkNTZjZjAwMDAwMDAwLCAweDRhNDg3MzRlMDAwMDAwMDAsCisgICAgMHg4MzQzNjZhZDAwMDAwMDAwLCAweGE0MjY0MzJjMDAwMDAwMDAsIDB4OGM4ZjVkNzQwMDAwMDAwMCwKKyAgICAweGFiZWE3OGY1MDAwMDAwMDAsIDB4ZGNkZDYwYzQwMDAwMDAwMCwgMHhmYmI4NDU0NTAwMDAwMDAwLAorICAgIDB4ZDMxMTViMWQwMDAwMDAwMCwgMHhmNDc0N2U5YzAwMDAwMDAwLCAweDdhZmVkNmZlMDAwMDAwMDAsCisgICAgMHg1ZDliZjM3ZjAwMDAwMDAwLCAweDc1MzJlZDI3MDAwMDAwMDAsIDB4NTI1N2M4YTYwMDAwMDAwMCwKKyAgICAweDI1NjBkMDk3MDAwMDAwMDAsIDB4MDIwNWY1MTYwMDAwMDAwMCwgMHgyYWFjZWI0ZTAwMDAwMDAwLAorICAgIDB4MGRjOWNlY2YwMDAwMDAwMCwgMHhjNGMyZGIyYzAwMDAwMDAwLCAweGUzYTdmZWFkMDAwMDAwMDAsCisgICAgMHhjYjBlZTBmNTAwMDAwMDAwLCAweGVjNmJjNTc0MDAwMDAwMDAsIDB4OWI1Y2RkNDUwMDAwMDAwMCwKKyAgICAweGJjMzlmOGM0MDAwMDAwMDAsIDB4OTQ5MGU2OWMwMDAwMDAwMCwgMHhiM2Y1YzMxZDAwMDAwMDAwLAorICAgIDB4NDc4MWJkODEwMDAwMDAwMCwgMHg2MGU0OTgwMDAwMDAwMDAwLCAweDQ4NGQ4NjU4MDAwMDAwMDAsCisgICAgMHg2ZjI4YTNkOTAwMDAwMDAwLCAweDE4MWZiYmU4MDAwMDAwMDAsIDB4M2Y3YTllNjkwMDAwMDAwMCwKKyAgICAweDE3ZDM4MDMxMDAwMDAwMDAsIDB4MzBiNmE1YjAwMDAwMDAwMCwgMHhmOWJkYjA1MzAwMDAwMDAwLAorICAgIDB4ZGVkODk1ZDIwMDAwMDAwMCwgMHhmNjcxOGI4YTAwMDAwMDAwLCAweGQxMTRhZTBiMDAwMDAwMDAsCisgICAgMHhhNjIzYjYzYTAwMDAwMDAwLCAweDgxNDY5M2JiMDAwMDAwMDAsIDB4YTllZjhkZTMwMDAwMDAwMCwKKyAgICAweDhlOGFhODYyMDAwMDAwMDAsIDB4YjVmYWRjMjYwMDAwMDAwMCwgMHg5MjlmZjlhNzAwMDAwMDAwLAorICAgIDB4YmEzNmU3ZmYwMDAwMDAwMCwgMHg5ZDUzYzI3ZTAwMDAwMDAwLCAweGVhNjRkYTRmMDAwMDAwMDAsCisgICAgMHhjZDAxZmZjZTAwMDAwMDAwLCAweGU1YThlMTk2MDAwMDAwMDAsIDB4YzJjZGM0MTcwMDAwMDAwMCwKKyAgICAweDBiYzZkMWY0MDAwMDAwMDAsIDB4MmNhM2Y0NzUwMDAwMDAwMCwgMHgwNDBhZWEyZDAwMDAwMDAwLAorICAgIDB4MjM2ZmNmYWMwMDAwMDAwMCwgMHg1NDU4ZDc5ZDAwMDAwMDAwLCAweDczM2RmMjFjMDAwMDAwMDAsCisgICAgMHg1Yjk0ZWM0NDAwMDAwMDAwLCAweDdjZjFjOWM1MDAwMDAwMDAsIDB4ODg4NWI3NTkwMDAwMDAwMCwKKyAgICAweGFmZTA5MmQ4MDAwMDAwMDAsIDB4ODc0OThjODAwMDAwMDAwMCwgMHhhMDJjYTkwMTAwMDAwMDAwLAorICAgIDB4ZDcxYmIxMzAwMDAwMDAwMCwgMHhmMDdlOTRiMTAwMDAwMDAwLCAweGQ4ZDc4YWU5MDAwMDAwMDAsCisgICAgMHhmZmIyYWY2ODAwMDAwMDAwLCAweDM2YjliYThiMDAwMDAwMDAsIDB4MTFkYzlmMGEwMDAwMDAwMCwKKyAgICAweDM5NzU4MTUyMDAwMDAwMDAsIDB4MWUxMGE0ZDMwMDAwMDAwMCwgMHg2OTI3YmNlMjAwMDAwMDAwLAorICAgIDB4NGU0Mjk5NjMwMDAwMDAwMCwgMHg2NmViODczYjAwMDAwMDAwLCAweDQxOGVhMmJhMDAwMDAwMDAsCisgICAgMHhjZjA0MGFkODAwMDAwMDAwLCAweGU4NjEyZjU5MDAwMDAwMDAsIDB4YzBjODMxMDEwMDAwMDAwMCwKKyAgICAweGU3YWQxNDgwMDAwMDAwMDAsIDB4OTA5YTBjYjEwMDAwMDAwMCwgMHhiN2ZmMjkzMDAwMDAwMDAwLAorICAgIDB4OWY1NjM3NjgwMDAwMDAwMCwgMHhiODMzMTJlOTAwMDAwMDAwLCAweDcxMzgwNzBhMDAwMDAwMDAsCisgICAgMHg1NjVkMjI4YjAwMDAwMDAwLCAweDdlZjQzY2QzMDAwMDAwMDAsIDB4NTk5MTE5NTIwMDAwMDAwMCwKKyAgICAweDJlYTYwMTYzMDAwMDAwMDAsIDB4MDljMzI0ZTIwMDAwMDAwMCwgMHgyMTZhM2FiYTAwMDAwMDAwLAorICAgIDB4MDYwZjFmM2IwMDAwMDAwMCwgMHhmMjdiNjFhNzAwMDAwMDAwLCAweGQ1MWU0NDI2MDAwMDAwMDAsCisgICAgMHhmZGI3NWE3ZTAwMDAwMDAwLCAweGRhZDI3ZmZmMDAwMDAwMDAsIDB4YWRlNTY3Y2UwMDAwMDAwMCwKKyAgICAweDhhODA0MjRmMDAwMDAwMDAsIDB4YTIyOTVjMTcwMDAwMDAwMCwgMHg4NTRjNzk5NjAwMDAwMDAwLAorICAgIDB4NGM0NzZjNzUwMDAwMDAwMCwgMHg2YjIyNDlmNDAwMDAwMDAwLCAweDQzOGI1N2FjMDAwMDAwMDAsCisgICAgMHg2NGVlNzIyZDAwMDAwMDAwLCAweDEzZDk2YTFjMDAwMDAwMDAsIDB4MzRiYzRmOWQwMDAwMDAwMCwKKyAgICAweDFjMTU1MWM1MDAwMDAwMDAsIDB4M2I3MDc0NDQwMDAwMDAwMCwgMHg2YWY1Yjk0ZDAwMDAwMDAwLAorICAgIDB4NGQ5MDljY2MwMDAwMDAwMCwgMHg2NTM5ODI5NDAwMDAwMDAwLCAweDQyNWNhNzE1MDAwMDAwMDAsCisgICAgMHgzNTZiYmYyNDAwMDAwMDAwLCAweDEyMGU5YWE1MDAwMDAwMDAsIDB4M2FhNzg0ZmQwMDAwMDAwMCwKKyAgICAweDFkYzJhMTdjMDAwMDAwMDAsIDB4ZDRjOWI0OWYwMDAwMDAwMCwgMHhmM2FjOTExZTAwMDAwMDAwLAorICAgIDB4ZGIwNThmNDYwMDAwMDAwMCwgMHhmYzYwYWFjNzAwMDAwMDAwLCAweDhiNTdiMmY2MDAwMDAwMDAsCisgICAgMHhhYzMyOTc3NzAwMDAwMDAwLCAweDg0OWI4OTJmMDAwMDAwMDAsIDB4YTNmZWFjYWUwMDAwMDAwMCwKKyAgICAweDU3OGFkMjMyMDAwMDAwMDAsIDB4NzBlZmY3YjMwMDAwMDAwMCwgMHg1ODQ2ZTllYjAwMDAwMDAwLAorICAgIDB4N2YyM2NjNmEwMDAwMDAwMCwgMHgwODE0ZDQ1YjAwMDAwMDAwLCAweDJmNzFmMWRhMDAwMDAwMDAsCisgICAgMHgwN2Q4ZWY4MjAwMDAwMDAwLCAweDIwYmRjYTAzMDAwMDAwMDAsIDB4ZTliNmRmZTAwMDAwMDAwMCwKKyAgICAweGNlZDNmYTYxMDAwMDAwMDAsIDB4ZTY3YWU0MzkwMDAwMDAwMCwgMHhjMTFmYzFiODAwMDAwMDAwLAorICAgIDB4YjYyOGQ5ODkwMDAwMDAwMCwgMHg5MTRkZmMwODAwMDAwMDAwLCAweGI5ZTRlMjUwMDAwMDAwMDAsCisgICAgMHg5ZTgxYzdkMTAwMDAwMDAwLCAweDEwMGI2ZmIzMDAwMDAwMDAsIDB4Mzc2ZTRhMzIwMDAwMDAwMCwKKyAgICAweDFmYzc1NDZhMDAwMDAwMDAsIDB4MzhhMjcxZWIwMDAwMDAwMCwgMHg0Zjk1NjlkYTAwMDAwMDAwLAorICAgIDB4NjhmMDRjNWIwMDAwMDAwMCwgMHg0MDU5NTIwMzAwMDAwMDAwLCAweDY3M2M3NzgyMDAwMDAwMDAsCisgICAgMHhhZTM3NjI2MTAwMDAwMDAwLCAweDg5NTI0N2UwMDAwMDAwMDAsIDB4YTFmYjU5YjgwMDAwMDAwMCwKKyAgICAweDg2OWU3YzM5MDAwMDAwMDAsIDB4ZjFhOTY0MDgwMDAwMDAwMCwgMHhkNmNjNDE4OTAwMDAwMDAwLAorICAgIDB4ZmU2NTVmZDEwMDAwMDAwMCwgMHhkOTAwN2E1MDAwMDAwMDAwLCAweDJkNzQwNGNjMDAwMDAwMDAsCisgICAgMHgwYTExMjE0ZDAwMDAwMDAwLCAweDIyYjgzZjE1MDAwMDAwMDAsIDB4MDVkZDFhOTQwMDAwMDAwMCwKKyAgICAweDcyZWEwMmE1MDAwMDAwMDAsIDB4NTU4ZjI3MjQwMDAwMDAwMCwgMHg3ZDI2Mzk3YzAwMDAwMDAwLAorICAgIDB4NWE0MzFjZmQwMDAwMDAwMCwgMHg5MzQ4MDkxZTAwMDAwMDAwLCAweGI0MmQyYzlmMDAwMDAwMDAsCisgICAgMHg5Yzg0MzJjNzAwMDAwMDAwLCAweGJiZTExNzQ2MDAwMDAwMDAsIDB4Y2NkNjBmNzcwMDAwMDAwMCwKKyAgICAweGViYjMyYWY2MDAwMDAwMDAsIDB4YzMxYTM0YWUwMDAwMDAwMCwgMHhlNDdmMTEyZjAwMDAwMDAwLAorICAgIDB4ZGYwZjY1NmIwMDAwMDAwMCwgMHhmODZhNDBlYTAwMDAwMDAwLCAweGQwYzM1ZWIyMDAwMDAwMDAsCisgICAgMHhmN2E2N2IzMzAwMDAwMDAwLCAweDgwOTE2MzAyMDAwMDAwMDAsIDB4YTdmNDQ2ODMwMDAwMDAwMCwKKyAgICAweDhmNWQ1OGRiMDAwMDAwMDAsIDB4YTgzODdkNWEwMDAwMDAwMCwgMHg2MTMzNjhiOTAwMDAwMDAwLAorICAgIDB4NDY1NjRkMzgwMDAwMDAwMCwgMHg2ZWZmNTM2MDAwMDAwMDAwLCAweDQ5OWE3NmUxMDAwMDAwMDAsCisgICAgMHgzZWFkNmVkMDAwMDAwMDAwLCAweDE5Yzg0YjUxMDAwMDAwMDAsIDB4MzE2MTU1MDkwMDAwMDAwMCwKKyAgICAweDE2MDQ3MDg4MDAwMDAwMDAsIDB4ZTI3MDBlMTQwMDAwMDAwMCwgMHhjNTE1MmI5NTAwMDAwMDAwLAorICAgIDB4ZWRiYzM1Y2QwMDAwMDAwMCwgMHhjYWQ5MTA0YzAwMDAwMDAwLCAweGJkZWUwODdkMDAwMDAwMDAsCisgICAgMHg5YThiMmRmYzAwMDAwMDAwLCAweGIyMjIzM2E0MDAwMDAwMDAsIDB4OTU0NzE2MjUwMDAwMDAwMCwKKyAgICAweDVjNGMwM2M2MDAwMDAwMDAsIDB4N2IyOTI2NDcwMDAwMDAwMCwgMHg1MzgwMzgxZjAwMDAwMDAwLAorICAgIDB4NzRlNTFkOWUwMDAwMDAwMCwgMHgwM2QyMDVhZjAwMDAwMDAwLCAweDI0YjcyMDJlMDAwMDAwMDAsCisgICAgMHgwYzFlM2U3NjAwMDAwMDAwLCAweDJiN2IxYmY3MDAwMDAwMDAsIDB4YTVmMWIzOTUwMDAwMDAwMCwKKyAgICAweDgyOTQ5NjE0MDAwMDAwMDAsIDB4YWEzZDg4NGMwMDAwMDAwMCwgMHg4ZDU4YWRjZDAwMDAwMDAwLAorICAgIDB4ZmE2ZmI1ZmMwMDAwMDAwMCwgMHhkZDBhOTA3ZDAwMDAwMDAwLCAweGY1YTM4ZTI1MDAwMDAwMDAsCisgICAgMHhkMmM2YWJhNDAwMDAwMDAwLCAweDFiY2RiZTQ3MDAwMDAwMDAsIDB4M2NhODliYzYwMDAwMDAwMCwKKyAgICAweDE0MDE4NTllMDAwMDAwMDAsIDB4MzM2NGEwMWYwMDAwMDAwMCwgMHg0NDUzYjgyZTAwMDAwMDAwLAorICAgIDB4NjMzNjlkYWYwMDAwMDAwMCwgMHg0YjlmODNmNzAwMDAwMDAwLCAweDZjZmFhNjc2MDAwMDAwMDAsCisgICAgMHg5ODhlZDhlYTAwMDAwMDAwLCAweGJmZWJmZDZiMDAwMDAwMDAsIDB4OTc0MmUzMzMwMDAwMDAwMCwKKyAgICAweGIwMjdjNmIyMDAwMDAwMDAsIDB4YzcxMGRlODMwMDAwMDAwMCwgMHhlMDc1ZmIwMjAwMDAwMDAwLAorICAgIDB4YzhkY2U1NWEwMDAwMDAwMCwgMHhlZmI5YzBkYjAwMDAwMDAwLCAweDI2YjJkNTM4MDAwMDAwMDAsCisgICAgMHgwMWQ3ZjBiOTAwMDAwMDAwLCAweDI5N2VlZWUxMDAwMDAwMDAsIDB4MGUxYmNiNjAwMDAwMDAwMCwKKyAgICAweDc5MmNkMzUxMDAwMDAwMDAsIDB4NWU0OWY2ZDAwMDAwMDAwMCwgMHg3NmUwZTg4ODAwMDAwMDAwLAorICAgIDB4NTE4NWNkMDkwMDAwMDAwMH19OworCisjZWxzZSAvKiBXID09IDQgKi8KKworbG9jYWwgY29uc3Qgel9jcmNfdCBGQVIgY3JjX2JyYWlkX3RhYmxlW11bMjU2XSA9IHsKKyAgIHsweDAwMDAwMDAwLCAweDliYTU0YzZmLCAweGVjM2I5ZTlmLCAweDc3OWVkMmYwLCAweDAzMDYzYjdmLAorICAgIDB4OThhMzc3MTAsIDB4ZWYzZGE1ZTAsIDB4NzQ5OGU5OGYsIDB4MDYwYzc2ZmUsIDB4OWRhOTNhOTEsCisgICAgMHhlYTM3ZTg2MSwgMHg3MTkyYTQwZSwgMHgwNTBhNGQ4MSwgMHg5ZWFmMDFlZSwgMHhlOTMxZDMxZSwKKyAgICAweDcyOTQ5ZjcxLCAweDBjMThlZGZjLCAweDk3YmRhMTkzLCAweGUwMjM3MzYzLCAweDdiODYzZjBjLAorICAgIDB4MGYxZWQ2ODMsIDB4OTRiYjlhZWMsIDB4ZTMyNTQ4MWMsIDB4Nzg4MDA0NzMsIDB4MGExNDliMDIsCisgICAgMHg5MWIxZDc2ZCwgMHhlNjJmMDU5ZCwgMHg3ZDhhNDlmMiwgMHgwOTEyYTA3ZCwgMHg5MmI3ZWMxMiwKKyAgICAweGU1MjkzZWUyLCAweDdlOGM3MjhkLCAweDE4MzFkYmY4LCAweDgzOTQ5Nzk3LCAweGY0MGE0NTY3LAorICAgIDB4NmZhZjA5MDgsIDB4MWIzN2UwODcsIDB4ODA5MmFjZTgsIDB4ZjcwYzdlMTgsIDB4NmNhOTMyNzcsCisgICAgMHgxZTNkYWQwNiwgMHg4NTk4ZTE2OSwgMHhmMjA2MzM5OSwgMHg2OWEzN2ZmNiwgMHgxZDNiOTY3OSwKKyAgICAweDg2OWVkYTE2LCAweGYxMDAwOGU2LCAweDZhYTU0NDg5LCAweDE0MjkzNjA0LCAweDhmOGM3YTZiLAorICAgIDB4ZjgxMmE4OWIsIDB4NjNiN2U0ZjQsIDB4MTcyZjBkN2IsIDB4OGM4YTQxMTQsIDB4ZmIxNDkzZTQsCisgICAgMHg2MGIxZGY4YiwgMHgxMjI1NDBmYSwgMHg4OTgwMGM5NSwgMHhmZTFlZGU2NSwgMHg2NWJiOTIwYSwKKyAgICAweDExMjM3Yjg1LCAweDhhODYzN2VhLCAweGZkMThlNTFhLCAweDY2YmRhOTc1LCAweDMwNjNiN2YwLAorICAgIDB4YWJjNmZiOWYsIDB4ZGM1ODI5NmYsIDB4NDdmZDY1MDAsIDB4MzM2NThjOGYsIDB4YThjMGMwZTAsCisgICAgMHhkZjVlMTIxMCwgMHg0NGZiNWU3ZiwgMHgzNjZmYzEwZSwgMHhhZGNhOGQ2MSwgMHhkYTU0NWY5MSwKKyAgICAweDQxZjExM2ZlLCAweDM1NjlmYTcxLCAweGFlY2NiNjFlLCAweGQ5NTI2NGVlLCAweDQyZjcyODgxLAorICAgIDB4M2M3YjVhMGMsIDB4YTdkZTE2NjMsIDB4ZDA0MGM0OTMsIDB4NGJlNTg4ZmMsIDB4M2Y3ZDYxNzMsCisgICAgMHhhNGQ4MmQxYywgMHhkMzQ2ZmZlYywgMHg0OGUzYjM4MywgMHgzYTc3MmNmMiwgMHhhMWQyNjA5ZCwKKyAgICAweGQ2NGNiMjZkLCAweDRkZTlmZTAyLCAweDM5NzExNzhkLCAweGEyZDQ1YmUyLCAweGQ1NGE4OTEyLAorICAgIDB4NGVlZmM1N2QsIDB4Mjg1MjZjMDgsIDB4YjNmNzIwNjcsIDB4YzQ2OWYyOTcsIDB4NWZjY2JlZjgsCisgICAgMHgyYjU0NTc3NywgMHhiMGYxMWIxOCwgMHhjNzZmYzllOCwgMHg1Y2NhODU4NywgMHgyZTVlMWFmNiwKKyAgICAweGI1ZmI1Njk5LCAweGMyNjU4NDY5LCAweDU5YzBjODA2LCAweDJkNTgyMTg5LCAweGI2ZmQ2ZGU2LAorICAgIDB4YzE2M2JmMTYsIDB4NWFjNmYzNzksIDB4MjQ0YTgxZjQsIDB4YmZlZmNkOWIsIDB4Yzg3MTFmNmIsCisgICAgMHg1M2Q0NTMwNCwgMHgyNzRjYmE4YiwgMHhiY2U5ZjZlNCwgMHhjYjc3MjQxNCwgMHg1MGQyNjg3YiwKKyAgICAweDIyNDZmNzBhLCAweGI5ZTNiYjY1LCAweGNlN2Q2OTk1LCAweDU1ZDgyNWZhLCAweDIxNDBjYzc1LAorICAgIDB4YmFlNTgwMWEsIDB4Y2Q3YjUyZWEsIDB4NTZkZTFlODUsIDB4NjBjNzZmZTAsIDB4ZmI2MjIzOGYsCisgICAgMHg4Y2ZjZjE3ZiwgMHgxNzU5YmQxMCwgMHg2M2MxNTQ5ZiwgMHhmODY0MThmMCwgMHg4ZmZhY2EwMCwKKyAgICAweDE0NWY4NjZmLCAweDY2Y2IxOTFlLCAweGZkNmU1NTcxLCAweDhhZjA4NzgxLCAweDExNTVjYmVlLAorICAgIDB4NjVjZDIyNjEsIDB4ZmU2ODZlMGUsIDB4ODlmNmJjZmUsIDB4MTI1M2YwOTEsIDB4NmNkZjgyMWMsCisgICAgMHhmNzdhY2U3MywgMHg4MGU0MWM4MywgMHgxYjQxNTBlYywgMHg2ZmQ5Yjk2MywgMHhmNDdjZjUwYywKKyAgICAweDgzZTIyN2ZjLCAweDE4NDc2YjkzLCAweDZhZDNmNGUyLCAweGYxNzZiODhkLCAweDg2ZTg2YTdkLAorICAgIDB4MWQ0ZDI2MTIsIDB4NjlkNWNmOWQsIDB4ZjI3MDgzZjIsIDB4ODVlZTUxMDIsIDB4MWU0YjFkNmQsCisgICAgMHg3OGY2YjQxOCwgMHhlMzUzZjg3NywgMHg5NGNkMmE4NywgMHgwZjY4NjZlOCwgMHg3YmYwOGY2NywKKyAgICAweGUwNTVjMzA4LCAweDk3Y2IxMWY4LCAweDBjNmU1ZDk3LCAweDdlZmFjMmU2LCAweGU1NWY4ZTg5LAorICAgIDB4OTJjMTVjNzksIDB4MDk2NDEwMTYsIDB4N2RmY2Y5OTksIDB4ZTY1OWI1ZjYsIDB4OTFjNzY3MDYsCisgICAgMHgwYTYyMmI2OSwgMHg3NGVlNTllNCwgMHhlZjRiMTU4YiwgMHg5OGQ1Yzc3YiwgMHgwMzcwOGIxNCwKKyAgICAweDc3ZTg2MjliLCAweGVjNGQyZWY0LCAweDliZDNmYzA0LCAweDAwNzZiMDZiLCAweDcyZTIyZjFhLAorICAgIDB4ZTk0NzYzNzUsIDB4OWVkOWIxODUsIDB4MDU3Y2ZkZWEsIDB4NzFlNDE0NjUsIDB4ZWE0MTU4MGEsCisgICAgMHg5ZGRmOGFmYSwgMHgwNjdhYzY5NSwgMHg1MGE0ZDgxMCwgMHhjYjAxOTQ3ZiwgMHhiYzlmNDY4ZiwKKyAgICAweDI3M2EwYWUwLCAweDUzYTJlMzZmLCAweGM4MDdhZjAwLCAweGJmOTk3ZGYwLCAweDI0M2MzMTlmLAorICAgIDB4NTZhOGFlZWUsIDB4Y2QwZGUyODEsIDB4YmE5MzMwNzEsIDB4MjEzNjdjMWUsIDB4NTVhZTk1OTEsCisgICAgMHhjZTBiZDlmZSwgMHhiOTk1MGIwZSwgMHgyMjMwNDc2MSwgMHg1Y2JjMzVlYywgMHhjNzE5Nzk4MywKKyAgICAweGIwODdhYjczLCAweDJiMjJlNzFjLCAweDVmYmEwZTkzLCAweGM0MWY0MmZjLCAweGIzODE5MDBjLAorICAgIDB4MjgyNGRjNjMsIDB4NWFiMDQzMTIsIDB4YzExNTBmN2QsIDB4YjY4YmRkOGQsIDB4MmQyZTkxZTIsCisgICAgMHg1OWI2Nzg2ZCwgMHhjMjEzMzQwMiwgMHhiNThkZTZmMiwgMHgyZTI4YWE5ZCwgMHg0ODk1MDNlOCwKKyAgICAweGQzMzA0Zjg3LCAweGE0YWU5ZDc3LCAweDNmMGJkMTE4LCAweDRiOTMzODk3LCAweGQwMzY3NGY4LAorICAgIDB4YTdhOGE2MDgsIDB4M2MwZGVhNjcsIDB4NGU5OTc1MTYsIDB4ZDUzYzM5NzksIDB4YTJhMmViODksCisgICAgMHgzOTA3YTdlNiwgMHg0ZDlmNGU2OSwgMHhkNjNhMDIwNiwgMHhhMWE0ZDBmNiwgMHgzYTAxOWM5OSwKKyAgICAweDQ0OGRlZTE0LCAweGRmMjhhMjdiLCAweGE4YjY3MDhiLCAweDMzMTMzY2U0LCAweDQ3OGJkNTZiLAorICAgIDB4ZGMyZTk5MDQsIDB4YWJiMDRiZjQsIDB4MzAxNTA3OWIsIDB4NDI4MTk4ZWEsIDB4ZDkyNGQ0ODUsCisgICAgMHhhZWJhMDY3NSwgMHgzNTFmNGExYSwgMHg0MTg3YTM5NSwgMHhkYTIyZWZmYSwgMHhhZGJjM2QwYSwKKyAgICAweDM2MTk3MTY1fSwKKyAgIHsweDAwMDAwMDAwLCAweGMxOGVkZmMwLCAweDU4NmNiOWMxLCAweDk5ZTI2NjAxLCAweGIwZDk3MzgyLAorICAgIDB4NzE1N2FjNDIsIDB4ZThiNWNhNDMsIDB4MjkzYjE1ODMsIDB4YmFjM2UxNDUsIDB4N2I0ZDNlODUsCisgICAgMHhlMmFmNTg4NCwgMHgyMzIxODc0NCwgMHgwYTFhOTJjNywgMHhjYjk0NGQwNywgMHg1Mjc2MmIwNiwKKyAgICAweDkzZjhmNGM2LCAweGFlZjZjNGNiLCAweDZmNzgxYjBiLCAweGY2OWE3ZDBhLCAweDM3MTRhMmNhLAorICAgIDB4MWUyZmI3NDksIDB4ZGZhMTY4ODksIDB4NDY0MzBlODgsIDB4ODdjZGQxNDgsIDB4MTQzNTI1OGUsCisgICAgMHhkNWJiZmE0ZSwgMHg0YzU5OWM0ZiwgMHg4ZGQ3NDM4ZiwgMHhhNGVjNTYwYywgMHg2NTYyODljYywKKyAgICAweGZjODBlZmNkLCAweDNkMGUzMDBkLCAweDg2OWM4ZmQ3LCAweDQ3MTI1MDE3LCAweGRlZjAzNjE2LAorICAgIDB4MWY3ZWU5ZDYsIDB4MzY0NWZjNTUsIDB4ZjdjYjIzOTUsIDB4NmUyOTQ1OTQsIDB4YWZhNzlhNTQsCisgICAgMHgzYzVmNmU5MiwgMHhmZGQxYjE1MiwgMHg2NDMzZDc1MywgMHhhNWJkMDg5MywgMHg4Yzg2MWQxMCwKKyAgICAweDRkMDhjMmQwLCAweGQ0ZWFhNGQxLCAweDE1NjQ3YjExLCAweDI4NmE0YjFjLCAweGU5ZTQ5NGRjLAorICAgIDB4NzAwNmYyZGQsIDB4YjE4ODJkMWQsIDB4OThiMzM4OWUsIDB4NTkzZGU3NWUsIDB4YzBkZjgxNWYsCisgICAgMHgwMTUxNWU5ZiwgMHg5MmE5YWE1OSwgMHg1MzI3NzU5OSwgMHhjYWM1MTM5OCwgMHgwYjRiY2M1OCwKKyAgICAweDIyNzBkOWRiLCAweGUzZmUwNjFiLCAweDdhMWM2MDFhLCAweGJiOTJiZmRhLCAweGQ2NDgxOWVmLAorICAgIDB4MTdjNmM2MmYsIDB4OGUyNGEwMmUsIDB4NGZhYTdmZWUsIDB4NjY5MTZhNmQsIDB4YTcxZmI1YWQsCisgICAgMHgzZWZkZDNhYywgMHhmZjczMGM2YywgMHg2YzhiZjhhYSwgMHhhZDA1Mjc2YSwgMHgzNGU3NDE2YiwKKyAgICAweGY1Njk5ZWFiLCAweGRjNTI4YjI4LCAweDFkZGM1NGU4LCAweDg0M2UzMmU5LCAweDQ1YjBlZDI5LAorICAgIDB4NzhiZWRkMjQsIDB4YjkzMDAyZTQsIDB4MjBkMjY0ZTUsIDB4ZTE1Y2JiMjUsIDB4Yzg2N2FlYTYsCisgICAgMHgwOWU5NzE2NiwgMHg5MDBiMTc2NywgMHg1MTg1YzhhNywgMHhjMjdkM2M2MSwgMHgwM2YzZTNhMSwKKyAgICAweDlhMTE4NWEwLCAweDViOWY1YTYwLCAweDcyYTQ0ZmUzLCAweGIzMmE5MDIzLCAweDJhYzhmNjIyLAorICAgIDB4ZWI0NjI5ZTIsIDB4NTBkNDk2MzgsIDB4OTE1YTQ5ZjgsIDB4MDhiODJmZjksIDB4YzkzNmYwMzksCisgICAgMHhlMDBkZTViYSwgMHgyMTgzM2E3YSwgMHhiODYxNWM3YiwgMHg3OWVmODNiYiwgMHhlYTE3Nzc3ZCwKKyAgICAweDJiOTlhOGJkLCAweGIyN2JjZWJjLCAweDczZjUxMTdjLCAweDVhY2UwNGZmLCAweDliNDBkYjNmLAorICAgIDB4MDJhMmJkM2UsIDB4YzMyYzYyZmUsIDB4ZmUyMjUyZjMsIDB4M2ZhYzhkMzMsIDB4YTY0ZWViMzIsCisgICAgMHg2N2MwMzRmMiwgMHg0ZWZiMjE3MSwgMHg4Zjc1ZmViMSwgMHgxNjk3OThiMCwgMHhkNzE5NDc3MCwKKyAgICAweDQ0ZTFiM2I2LCAweDg1NmY2Yzc2LCAweDFjOGQwYTc3LCAweGRkMDNkNWI3LCAweGY0MzhjMDM0LAorICAgIDB4MzViNjFmZjQsIDB4YWM1NDc5ZjUsIDB4NmRkYWE2MzUsIDB4NzdlMTM1OWYsIDB4YjY2ZmVhNWYsCisgICAgMHgyZjhkOGM1ZSwgMHhlZTAzNTM5ZSwgMHhjNzM4NDYxZCwgMHgwNmI2OTlkZCwgMHg5ZjU0ZmZkYywKKyAgICAweDVlZGEyMDFjLCAweGNkMjJkNGRhLCAweDBjYWMwYjFhLCAweDk1NGU2ZDFiLCAweDU0YzBiMmRiLAorICAgIDB4N2RmYmE3NTgsIDB4YmM3NTc4OTgsIDB4MjU5NzFlOTksIDB4ZTQxOWMxNTksIDB4ZDkxN2YxNTQsCisgICAgMHgxODk5MmU5NCwgMHg4MTdiNDg5NSwgMHg0MGY1OTc1NSwgMHg2OWNlODJkNiwgMHhhODQwNWQxNiwKKyAgICAweDMxYTIzYjE3LCAweGYwMmNlNGQ3LCAweDYzZDQxMDExLCAweGEyNWFjZmQxLCAweDNiYjhhOWQwLAorICAgIDB4ZmEzNjc2MTAsIDB4ZDMwZDYzOTMsIDB4MTI4M2JjNTMsIDB4OGI2MWRhNTIsIDB4NGFlZjA1OTIsCisgICAgMHhmMTdkYmE0OCwgMHgzMGYzNjU4OCwgMHhhOTExMDM4OSwgMHg2ODlmZGM0OSwgMHg0MWE0YzljYSwKKyAgICAweDgwMmExNjBhLCAweDE5Yzg3MDBiLCAweGQ4NDZhZmNiLCAweDRiYmU1YjBkLCAweDhhMzA4NGNkLAorICAgIDB4MTNkMmUyY2MsIDB4ZDI1YzNkMGMsIDB4ZmI2NzI4OGYsIDB4M2FlOWY3NGYsIDB4YTMwYjkxNGUsCisgICAgMHg2Mjg1NGU4ZSwgMHg1ZjhiN2U4MywgMHg5ZTA1YTE0MywgMHgwN2U3Yzc0MiwgMHhjNjY5MTg4MiwKKyAgICAweGVmNTIwZDAxLCAweDJlZGNkMmMxLCAweGI3M2ViNGMwLCAweDc2YjA2YjAwLCAweGU1NDg5ZmM2LAorICAgIDB4MjRjNjQwMDYsIDB4YmQyNDI2MDcsIDB4N2NhYWY5YzcsIDB4NTU5MWVjNDQsIDB4OTQxZjMzODQsCisgICAgMHgwZGZkNTU4NSwgMHhjYzczOGE0NSwgMHhhMWE5MmM3MCwgMHg2MDI3ZjNiMCwgMHhmOWM1OTViMSwKKyAgICAweDM4NGI0YTcxLCAweDExNzA1ZmYyLCAweGQwZmU4MDMyLCAweDQ5MWNlNjMzLCAweDg4OTIzOWYzLAorICAgIDB4MWI2YWNkMzUsIDB4ZGFlNDEyZjUsIDB4NDMwNjc0ZjQsIDB4ODI4OGFiMzQsIDB4YWJiM2JlYjcsCisgICAgMHg2YTNkNjE3NywgMHhmM2RmMDc3NiwgMHgzMjUxZDhiNiwgMHgwZjVmZThiYiwgMHhjZWQxMzc3YiwKKyAgICAweDU3MzM1MTdhLCAweDk2YmQ4ZWJhLCAweGJmODY5YjM5LCAweDdlMDg0NGY5LCAweGU3ZWEyMmY4LAorICAgIDB4MjY2NGZkMzgsIDB4YjU5YzA5ZmUsIDB4NzQxMmQ2M2UsIDB4ZWRmMGIwM2YsIDB4MmM3ZTZmZmYsCisgICAgMHgwNTQ1N2E3YywgMHhjNGNiYTViYywgMHg1ZDI5YzNiZCwgMHg5Y2E3MWM3ZCwgMHgyNzM1YTNhNywKKyAgICAweGU2YmI3YzY3LCAweDdmNTkxYTY2LCAweGJlZDdjNWE2LCAweDk3ZWNkMDI1LCAweDU2NjIwZmU1LAorICAgIDB4Y2Y4MDY5ZTQsIDB4MGUwZWI2MjQsIDB4OWRmNjQyZTIsIDB4NWM3ODlkMjIsIDB4YzU5YWZiMjMsCisgICAgMHgwNDE0MjRlMywgMHgyZDJmMzE2MCwgMHhlY2ExZWVhMCwgMHg3NTQzODhhMSwgMHhiNGNkNTc2MSwKKyAgICAweDg5YzM2NzZjLCAweDQ4NGRiOGFjLCAweGQxYWZkZWFkLCAweDEwMjEwMTZkLCAweDM5MWExNGVlLAorICAgIDB4Zjg5NGNiMmUsIDB4NjE3NmFkMmYsIDB4YTBmODcyZWYsIDB4MzMwMDg2MjksIDB4ZjI4ZTU5ZTksCisgICAgMHg2YjZjM2ZlOCwgMHhhYWUyZTAyOCwgMHg4M2Q5ZjVhYiwgMHg0MjU3MmE2YiwgMHhkYmI1NGM2YSwKKyAgICAweDFhM2I5M2FhfSwKKyAgIHsweDAwMDAwMDAwLCAweGVmYzI2YjNlLCAweDA0ZjVkMDNkLCAweGViMzdiYjAzLCAweDA5ZWJhMDdhLAorICAgIDB4ZTYyOWNiNDQsIDB4MGQxZTcwNDcsIDB4ZTJkYzFiNzksIDB4MTNkNzQwZjQsIDB4ZmMxNTJiY2EsCisgICAgMHgxNzIyOTBjOSwgMHhmOGUwZmJmNywgMHgxYTNjZTA4ZSwgMHhmNWZlOGJiMCwgMHgxZWM5MzBiMywKKyAgICAweGYxMGI1YjhkLCAweDI3YWU4MWU4LCAweGM4NmNlYWQ2LCAweDIzNWI1MWQ1LCAweGNjOTkzYWViLAorICAgIDB4MmU0NTIxOTIsIDB4YzE4NzRhYWMsIDB4MmFiMGYxYWYsIDB4YzU3MjlhOTEsIDB4MzQ3OWMxMWMsCisgICAgMHhkYmJiYWEyMiwgMHgzMDhjMTEyMSwgMHhkZjRlN2ExZiwgMHgzZDkyNjE2NiwgMHhkMjUwMGE1OCwKKyAgICAweDM5NjdiMTViLCAweGQ2YTVkYTY1LCAweDRmNWQwM2QwLCAweGEwOWY2OGVlLCAweDRiYThkM2VkLAorICAgIDB4YTQ2YWI4ZDMsIDB4NDZiNmEzYWEsIDB4YTk3NGM4OTQsIDB4NDI0MzczOTcsIDB4YWQ4MTE4YTksCisgICAgMHg1YzhhNDMyNCwgMHhiMzQ4MjgxYSwgMHg1ODdmOTMxOSwgMHhiN2JkZjgyNywgMHg1NTYxZTM1ZSwKKyAgICAweGJhYTM4ODYwLCAweDUxOTQzMzYzLCAweGJlNTY1ODVkLCAweDY4ZjM4MjM4LCAweDg3MzFlOTA2LAorICAgIDB4NmMwNjUyMDUsIDB4ODNjNDM5M2IsIDB4NjExODIyNDIsIDB4OGVkYTQ5N2MsIDB4NjVlZGYyN2YsCisgICAgMHg4YTJmOTk0MSwgMHg3YjI0YzJjYywgMHg5NGU2YTlmMiwgMHg3ZmQxMTJmMSwgMHg5MDEzNzljZiwKKyAgICAweDcyY2Y2MmI2LCAweDlkMGQwOTg4LCAweDc2M2FiMjhiLCAweDk5ZjhkOWI1LCAweDllYmEwN2EwLAorICAgIDB4NzE3ODZjOWUsIDB4OWE0ZmQ3OWQsIDB4NzU4ZGJjYTMsIDB4OTc1MWE3ZGEsIDB4Nzg5M2NjZTQsCisgICAgMHg5M2E0NzdlNywgMHg3YzY2MWNkOSwgMHg4ZDZkNDc1NCwgMHg2MmFmMmM2YSwgMHg4OTk4OTc2OSwKKyAgICAweDY2NWFmYzU3LCAweDg0ODZlNzJlLCAweDZiNDQ4YzEwLCAweDgwNzMzNzEzLCAweDZmYjE1YzJkLAorICAgIDB4YjkxNDg2NDgsIDB4NTZkNmVkNzYsIDB4YmRlMTU2NzUsIDB4NTIyMzNkNGIsIDB4YjBmZjI2MzIsCisgICAgMHg1ZjNkNGQwYywgMHhiNDBhZjYwZiwgMHg1YmM4OWQzMSwgMHhhYWMzYzZiYywgMHg0NTAxYWQ4MiwKKyAgICAweGFlMzYxNjgxLCAweDQxZjQ3ZGJmLCAweGEzMjg2NmM2LCAweDRjZWEwZGY4LCAweGE3ZGRiNmZiLAorICAgIDB4NDgxZmRkYzUsIDB4ZDFlNzA0NzAsIDB4M2UyNTZmNGUsIDB4ZDUxMmQ0NGQsIDB4M2FkMGJmNzMsCisgICAgMHhkODBjYTQwYSwgMHgzN2NlY2YzNCwgMHhkY2Y5NzQzNywgMHgzMzNiMWYwOSwgMHhjMjMwNDQ4NCwKKyAgICAweDJkZjIyZmJhLCAweGM2YzU5NGI5LCAweDI5MDdmZjg3LCAweGNiZGJlNGZlLCAweDI0MTk4ZmMwLAorICAgIDB4Y2YyZTM0YzMsIDB4MjBlYzVmZmQsIDB4ZjY0OTg1OTgsIDB4MTk4YmVlYTYsIDB4ZjJiYzU1YTUsCisgICAgMHgxZDdlM2U5YiwgMHhmZmEyMjVlMiwgMHgxMDYwNGVkYywgMHhmYjU3ZjVkZiwgMHgxNDk1OWVlMSwKKyAgICAweGU1OWVjNTZjLCAweDBhNWNhZTUyLCAweGUxNmIxNTUxLCAweDBlYTk3ZTZmLCAweGVjNzU2NTE2LAorICAgIDB4MDNiNzBlMjgsIDB4ZTg4MGI1MmIsIDB4MDc0MmRlMTUsIDB4ZTYwNTA5MDEsIDB4MDljNzYyM2YsCisgICAgMHhlMmYwZDkzYywgMHgwZDMyYjIwMiwgMHhlZmVlYTk3YiwgMHgwMDJjYzI0NSwgMHhlYjFiNzk0NiwKKyAgICAweDA0ZDkxMjc4LCAweGY1ZDI0OWY1LCAweDFhMTAyMmNiLCAweGYxMjc5OWM4LCAweDFlZTVmMmY2LAorICAgIDB4ZmMzOWU5OGYsIDB4MTNmYjgyYjEsIDB4ZjhjYzM5YjIsIDB4MTcwZTUyOGMsIDB4YzFhYjg4ZTksCisgICAgMHgyZTY5ZTNkNywgMHhjNTVlNThkNCwgMHgyYTljMzNlYSwgMHhjODQwMjg5MywgMHgyNzgyNDNhZCwKKyAgICAweGNjYjVmOGFlLCAweDIzNzc5MzkwLCAweGQyN2NjODFkLCAweDNkYmVhMzIzLCAweGQ2ODkxODIwLAorICAgIDB4Mzk0YjczMWUsIDB4ZGI5NzY4NjcsIDB4MzQ1NTAzNTksIDB4ZGY2MmI4NWEsIDB4MzBhMGQzNjQsCisgICAgMHhhOTU4MGFkMSwgMHg0NjlhNjFlZiwgMHhhZGFkZGFlYywgMHg0MjZmYjFkMiwgMHhhMGIzYWFhYiwKKyAgICAweDRmNzFjMTk1LCAweGE0NDY3YTk2LCAweDRiODQxMWE4LCAweGJhOGY0YTI1LCAweDU1NGQyMTFiLAorICAgIDB4YmU3YTlhMTgsIDB4NTFiOGYxMjYsIDB4YjM2NGVhNWYsIDB4NWNhNjgxNjEsIDB4Yjc5MTNhNjIsCisgICAgMHg1ODUzNTE1YywgMHg4ZWY2OGIzOSwgMHg2MTM0ZTAwNywgMHg4YTAzNWIwNCwgMHg2NWMxMzAzYSwKKyAgICAweDg3MWQyYjQzLCAweDY4ZGY0MDdkLCAweDgzZThmYjdlLCAweDZjMmE5MDQwLCAweDlkMjFjYmNkLAorICAgIDB4NzJlM2EwZjMsIDB4OTlkNDFiZjAsIDB4NzYxNjcwY2UsIDB4OTRjYTZiYjcsIDB4N2IwODAwODksCisgICAgMHg5MDNmYmI4YSwgMHg3ZmZkZDBiNCwgMHg3OGJmMGVhMSwgMHg5NzdkNjU5ZiwgMHg3YzRhZGU5YywKKyAgICAweDkzODhiNWEyLCAweDcxNTRhZWRiLCAweDllOTZjNWU1LCAweDc1YTE3ZWU2LCAweDlhNjMxNWQ4LAorICAgIDB4NmI2ODRlNTUsIDB4ODRhYTI1NmIsIDB4NmY5ZDllNjgsIDB4ODA1ZmY1NTYsIDB4NjI4M2VlMmYsCisgICAgMHg4ZDQxODUxMSwgMHg2Njc2M2UxMiwgMHg4OWI0NTUyYywgMHg1ZjExOGY0OSwgMHhiMGQzZTQ3NywKKyAgICAweDViZTQ1Zjc0LCAweGI0MjYzNDRhLCAweDU2ZmEyZjMzLCAweGI5Mzg0NDBkLCAweDUyMGZmZjBlLAorICAgIDB4YmRjZDk0MzAsIDB4NGNjNmNmYmQsIDB4YTMwNGE0ODMsIDB4NDgzMzFmODAsIDB4YTdmMTc0YmUsCisgICAgMHg0NTJkNmZjNywgMHhhYWVmMDRmOSwgMHg0MWQ4YmZmYSwgMHhhZTFhZDRjNCwgMHgzN2UyMGQ3MSwKKyAgICAweGQ4MjA2NjRmLCAweDMzMTdkZDRjLCAweGRjZDViNjcyLCAweDNlMDlhZDBiLCAweGQxY2JjNjM1LAorICAgIDB4M2FmYzdkMzYsIDB4ZDUzZTE2MDgsIDB4MjQzNTRkODUsIDB4Y2JmNzI2YmIsIDB4MjBjMDlkYjgsCisgICAgMHhjZjAyZjY4NiwgMHgyZGRlZWRmZiwgMHhjMjFjODZjMSwgMHgyOTJiM2RjMiwgMHhjNmU5NTZmYywKKyAgICAweDEwNGM4Yzk5LCAweGZmOGVlN2E3LCAweDE0Yjk1Y2E0LCAweGZiN2IzNzlhLCAweDE5YTcyY2UzLAorICAgIDB4ZjY2NTQ3ZGQsIDB4MWQ1MmZjZGUsIDB4ZjI5MDk3ZTAsIDB4MDM5YmNjNmQsIDB4ZWM1OWE3NTMsCisgICAgMHgwNzZlMWM1MCwgMHhlOGFjNzc2ZSwgMHgwYTcwNmMxNywgMHhlNWIyMDcyOSwgMHgwZTg1YmMyYSwKKyAgICAweGUxNDdkNzE0fSwKKyAgIHsweDAwMDAwMDAwLCAweDE3N2IxNDQzLCAweDJlZjYyODg2LCAweDM5OGQzY2M1LCAweDVkZWM1MTBjLAorICAgIDB4NGE5NzQ1NGYsIDB4NzMxYTc5OGEsIDB4NjQ2MTZkYzksIDB4YmJkOGEyMTgsIDB4YWNhM2I2NWIsCisgICAgMHg5NTJlOGE5ZSwgMHg4MjU1OWVkZCwgMHhlNjM0ZjMxNCwgMHhmMTRmZTc1NywgMHhjOGMyZGI5MiwKKyAgICAweGRmYjljZmQxLCAweGFjYzA0MjcxLCAweGJiYmI1NjMyLCAweDgyMzY2YWY3LCAweDk1NGQ3ZWI0LAorICAgIDB4ZjEyYzEzN2QsIDB4ZTY1NzA3M2UsIDB4ZGZkYTNiZmIsIDB4YzhhMTJmYjgsIDB4MTcxOGUwNjksCisgICAgMHgwMDYzZjQyYSwgMHgzOWVlYzhlZiwgMHgyZTk1ZGNhYywgMHg0YWY0YjE2NSwgMHg1ZDhmYTUyNiwKKyAgICAweDY0MDI5OWUzLCAweDczNzk4ZGEwLCAweDgyZjE4MmEzLCAweDk1OGE5NmUwLCAweGFjMDdhYTI1LAorICAgIDB4YmI3Y2JlNjYsIDB4ZGYxZGQzYWYsIDB4Yzg2NmM3ZWMsIDB4ZjFlYmZiMjksIDB4ZTY5MGVmNmEsCisgICAgMHgzOTI5MjBiYiwgMHgyZTUyMzRmOCwgMHgxN2RmMDgzZCwgMHgwMGE0MWM3ZSwgMHg2NGM1NzFiNywKKyAgICAweDczYmU2NWY0LCAweDRhMzM1OTMxLCAweDVkNDg0ZDcyLCAweDJlMzFjMGQyLCAweDM5NGFkNDkxLAorICAgIDB4MDBjN2U4NTQsIDB4MTdiY2ZjMTcsIDB4NzNkZDkxZGUsIDB4NjRhNjg1OWQsIDB4NWQyYmI5NTgsCisgICAgMHg0YTUwYWQxYiwgMHg5NWU5NjJjYSwgMHg4MjkyNzY4OSwgMHhiYjFmNGE0YywgMHhhYzY0NWUwZiwKKyAgICAweGM4MDUzM2M2LCAweGRmN2UyNzg1LCAweGU2ZjMxYjQwLCAweGYxODgwZjAzLCAweGRlOTIwMzA3LAorICAgIDB4YzllOTE3NDQsIDB4ZjA2NDJiODEsIDB4ZTcxZjNmYzIsIDB4ODM3ZTUyMGIsIDB4OTQwNTQ2NDgsCisgICAgMHhhZDg4N2E4ZCwgMHhiYWYzNmVjZSwgMHg2NTRhYTExZiwgMHg3MjMxYjU1YywgMHg0YmJjODk5OSwKKyAgICAweDVjYzc5ZGRhLCAweDM4YTZmMDEzLCAweDJmZGRlNDUwLCAweDE2NTBkODk1LCAweDAxMmJjY2Q2LAorICAgIDB4NzI1MjQxNzYsIDB4NjUyOTU1MzUsIDB4NWNhNDY5ZjAsIDB4NGJkZjdkYjMsIDB4MmZiZTEwN2EsCisgICAgMHgzOGM1MDQzOSwgMHgwMTQ4MzhmYywgMHgxNjMzMmNiZiwgMHhjOThhZTM2ZSwgMHhkZWYxZjcyZCwKKyAgICAweGU3N2NjYmU4LCAweGYwMDdkZmFiLCAweDk0NjZiMjYyLCAweDgzMWRhNjIxLCAweGJhOTA5YWU0LAorICAgIDB4YWRlYjhlYTcsIDB4NWM2MzgxYTQsIDB4NGIxODk1ZTcsIDB4NzI5NWE5MjIsIDB4NjVlZWJkNjEsCisgICAgMHgwMThmZDBhOCwgMHgxNmY0YzRlYiwgMHgyZjc5ZjgyZSwgMHgzODAyZWM2ZCwgMHhlN2JiMjNiYywKKyAgICAweGYwYzAzN2ZmLCAweGM5NGQwYjNhLCAweGRlMzYxZjc5LCAweGJhNTc3MmIwLCAweGFkMmM2NmYzLAorICAgIDB4OTRhMTVhMzYsIDB4ODNkYTRlNzUsIDB4ZjBhM2MzZDUsIDB4ZTdkOGQ3OTYsIDB4ZGU1NWViNTMsCisgICAgMHhjOTJlZmYxMCwgMHhhZDRmOTJkOSwgMHhiYTM0ODY5YSwgMHg4M2I5YmE1ZiwgMHg5NGMyYWUxYywKKyAgICAweDRiN2I2MWNkLCAweDVjMDA3NThlLCAweDY1OGQ0OTRiLCAweDcyZjY1ZDA4LCAweDE2OTczMGMxLAorICAgIDB4MDFlYzI0ODIsIDB4Mzg2MTE4NDcsIDB4MmYxYTBjMDQsIDB4NjY1NTAwNGYsIDB4NzEyZTE0MGMsCisgICAgMHg0OGEzMjhjOSwgMHg1ZmQ4M2M4YSwgMHgzYmI5NTE0MywgMHgyY2MyNDUwMCwgMHgxNTRmNzljNSwKKyAgICAweDAyMzQ2ZDg2LCAweGRkOGRhMjU3LCAweGNhZjZiNjE0LCAweGYzN2I4YWQxLCAweGU0MDA5ZTkyLAorICAgIDB4ODA2MWYzNWIsIDB4OTcxYWU3MTgsIDB4YWU5N2RiZGQsIDB4YjllY2NmOWUsIDB4Y2E5NTQyM2UsCisgICAgMHhkZGVlNTY3ZCwgMHhlNDYzNmFiOCwgMHhmMzE4N2VmYiwgMHg5Nzc5MTMzMiwgMHg4MDAyMDc3MSwKKyAgICAweGI5OGYzYmI0LCAweGFlZjQyZmY3LCAweDcxNGRlMDI2LCAweDY2MzZmNDY1LCAweDVmYmJjOGEwLAorICAgIDB4NDhjMGRjZTMsIDB4MmNhMWIxMmEsIDB4M2JkYWE1NjksIDB4MDI1Nzk5YWMsIDB4MTUyYzhkZWYsCisgICAgMHhlNGE0ODJlYywgMHhmM2RmOTZhZiwgMHhjYTUyYWE2YSwgMHhkZDI5YmUyOSwgMHhiOTQ4ZDNlMCwKKyAgICAweGFlMzNjN2EzLCAweDk3YmVmYjY2LCAweDgwYzVlZjI1LCAweDVmN2MyMGY0LCAweDQ4MDczNGI3LAorICAgIDB4NzE4YTA4NzIsIDB4NjZmMTFjMzEsIDB4MDI5MDcxZjgsIDB4MTVlYjY1YmIsIDB4MmM2NjU5N2UsCisgICAgMHgzYjFkNGQzZCwgMHg0ODY0YzA5ZCwgMHg1ZjFmZDRkZSwgMHg2NjkyZTgxYiwgMHg3MWU5ZmM1OCwKKyAgICAweDE1ODg5MTkxLCAweDAyZjM4NWQyLCAweDNiN2ViOTE3LCAweDJjMDVhZDU0LCAweGYzYmM2Mjg1LAorICAgIDB4ZTRjNzc2YzYsIDB4ZGQ0YTRhMDMsIDB4Y2EzMTVlNDAsIDB4YWU1MDMzODksIDB4YjkyYjI3Y2EsCisgICAgMHg4MGE2MWIwZiwgMHg5N2RkMGY0YywgMHhiOGM3MDM0OCwgMHhhZmJjMTcwYiwgMHg5NjMxMmJjZSwKKyAgICAweDgxNGEzZjhkLCAweGU1MmI1MjQ0LCAweGYyNTA0NjA3LCAweGNiZGQ3YWMyLCAweGRjYTY2ZTgxLAorICAgIDB4MDMxZmExNTAsIDB4MTQ2NGI1MTMsIDB4MmRlOTg5ZDYsIDB4M2E5MjlkOTUsIDB4NWVmM2YwNWMsCisgICAgMHg0OTg4ZTQxZiwgMHg3MDA1ZDhkYSwgMHg2NzdlY2M5OSwgMHgxNDA3NDEzOSwgMHgwMzdjNTU3YSwKKyAgICAweDNhZjE2OWJmLCAweDJkOGE3ZGZjLCAweDQ5ZWIxMDM1LCAweDVlOTAwNDc2LCAweDY3MWQzOGIzLAorICAgIDB4NzA2NjJjZjAsIDB4YWZkZmUzMjEsIDB4YjhhNGY3NjIsIDB4ODEyOWNiYTcsIDB4OTY1MmRmZTQsCisgICAgMHhmMjMzYjIyZCwgMHhlNTQ4YTY2ZSwgMHhkY2M1OWFhYiwgMHhjYmJlOGVlOCwgMHgzYTM2ODFlYiwKKyAgICAweDJkNGQ5NWE4LCAweDE0YzBhOTZkLCAweDAzYmJiZDJlLCAweDY3ZGFkMGU3LCAweDcwYTFjNGE0LAorICAgIDB4NDkyY2Y4NjEsIDB4NWU1N2VjMjIsIDB4ODFlZTIzZjMsIDB4OTY5NTM3YjAsIDB4YWYxODBiNzUsCisgICAgMHhiODYzMWYzNiwgMHhkYzAyNzJmZiwgMHhjYjc5NjZiYywgMHhmMmY0NWE3OSwgMHhlNThmNGUzYSwKKyAgICAweDk2ZjZjMzlhLCAweDgxOGRkN2Q5LCAweGI4MDBlYjFjLCAweGFmN2JmZjVmLCAweGNiMWE5Mjk2LAorICAgIDB4ZGM2MTg2ZDUsIDB4ZTVlY2JhMTAsIDB4ZjI5N2FlNTMsIDB4MmQyZTYxODIsIDB4M2E1NTc1YzEsCisgICAgMHgwM2Q4NDkwNCwgMHgxNGEzNWQ0NywgMHg3MGMyMzA4ZSwgMHg2N2I5MjRjZCwgMHg1ZTM0MTgwOCwKKyAgICAweDQ5NGYwYzRifX07CisKK2xvY2FsIGNvbnN0IHpfd29yZF90IEZBUiBjcmNfYnJhaWRfYmlnX3RhYmxlW11bMjU2XSA9IHsKKyAgIHsweDAwMDAwMDAwLCAweDQzMTQ3YjE3LCAweDg2MjhmNjJlLCAweGM1M2M4ZDM5LCAweDBjNTFlYzVkLAorICAgIDB4NGY0NTk3NGEsIDB4OGE3OTFhNzMsIDB4Yzk2ZDYxNjQsIDB4MThhMmQ4YmIsIDB4NWJiNmEzYWMsCisgICAgMHg5ZThhMmU5NSwgMHhkZDllNTU4MiwgMHgxNGYzMzRlNiwgMHg1N2U3NGZmMSwgMHg5MmRiYzJjOCwKKyAgICAweGQxY2ZiOWRmLCAweDcxNDJjMGFjLCAweDMyNTZiYmJiLCAweGY3NmEzNjgyLCAweGI0N2U0ZDk1LAorICAgIDB4N2QxMzJjZjEsIDB4M2UwNzU3ZTYsIDB4ZmIzYmRhZGYsIDB4YjgyZmExYzgsIDB4NjllMDE4MTcsCisgICAgMHgyYWY0NjMwMCwgMHhlZmM4ZWUzOSwgMHhhY2RjOTUyZSwgMHg2NWIxZjQ0YSwgMHgyNmE1OGY1ZCwKKyAgICAweGUzOTkwMjY0LCAweGEwOGQ3OTczLCAweGEzODJmMTgyLCAweGUwOTY4YTk1LCAweDI1YWEwN2FjLAorICAgIDB4NjZiZTdjYmIsIDB4YWZkMzFkZGYsIDB4ZWNjNzY2YzgsIDB4MjlmYmViZjEsIDB4NmFlZjkwZTYsCisgICAgMHhiYjIwMjkzOSwgMHhmODM0NTIyZSwgMHgzZDA4ZGYxNywgMHg3ZTFjYTQwMCwgMHhiNzcxYzU2NCwKKyAgICAweGY0NjViZTczLCAweDMxNTkzMzRhLCAweDcyNGQ0ODVkLCAweGQyYzAzMTJlLCAweDkxZDQ0YTM5LAorICAgIDB4NTRlOGM3MDAsIDB4MTdmY2JjMTcsIDB4ZGU5MWRkNzMsIDB4OWQ4NWE2NjQsIDB4NThiOTJiNWQsCisgICAgMHgxYmFkNTA0YSwgMHhjYTYyZTk5NSwgMHg4OTc2OTI4MiwgMHg0YzRhMWZiYiwgMHgwZjVlNjRhYywKKyAgICAweGM2MzMwNWM4LCAweDg1Mjc3ZWRmLCAweDQwMWJmM2U2LCAweDAzMGY4OGYxLCAweDA3MDM5MmRlLAorICAgIDB4NDQxN2U5YzksIDB4ODEyYjY0ZjAsIDB4YzIzZjFmZTcsIDB4MGI1MjdlODMsIDB4NDg0NjA1OTQsCisgICAgMHg4ZDdhODhhZCwgMHhjZTZlZjNiYSwgMHgxZmExNGE2NSwgMHg1Y2I1MzE3MiwgMHg5OTg5YmM0YiwKKyAgICAweGRhOWRjNzVjLCAweDEzZjBhNjM4LCAweDUwZTRkZDJmLCAweDk1ZDg1MDE2LCAweGQ2Y2MyYjAxLAorICAgIDB4NzY0MTUyNzIsIDB4MzU1NTI5NjUsIDB4ZjA2OWE0NWMsIDB4YjM3ZGRmNGIsIDB4N2ExMGJlMmYsCisgICAgMHgzOTA0YzUzOCwgMHhmYzM4NDgwMSwgMHhiZjJjMzMxNiwgMHg2ZWUzOGFjOSwgMHgyZGY3ZjFkZSwKKyAgICAweGU4Y2I3Y2U3LCAweGFiZGYwN2YwLCAweDYyYjI2Njk0LCAweDIxYTYxZDgzLCAweGU0OWE5MGJhLAorICAgIDB4YTc4ZWViYWQsIDB4YTQ4MTYzNWMsIDB4ZTc5NTE4NGIsIDB4MjJhOTk1NzIsIDB4NjFiZGVlNjUsCisgICAgMHhhOGQwOGYwMSwgMHhlYmM0ZjQxNiwgMHgyZWY4NzkyZiwgMHg2ZGVjMDIzOCwgMHhiYzIzYmJlNywKKyAgICAweGZmMzdjMGYwLCAweDNhMGI0ZGM5LCAweDc5MWYzNmRlLCAweGIwNzI1N2JhLCAweGYzNjYyY2FkLAorICAgIDB4MzY1YWExOTQsIDB4NzU0ZWRhODMsIDB4ZDVjM2EzZjAsIDB4OTZkN2Q4ZTcsIDB4NTNlYjU1ZGUsCisgICAgMHgxMGZmMmVjOSwgMHhkOTkyNGZhZCwgMHg5YTg2MzRiYSwgMHg1ZmJhYjk4MywgMHgxY2FlYzI5NCwKKyAgICAweGNkNjE3YjRiLCAweDhlNzUwMDVjLCAweDRiNDk4ZDY1LCAweDA4NWRmNjcyLCAweGMxMzA5NzE2LAorICAgIDB4ODIyNGVjMDEsIDB4NDcxODYxMzgsIDB4MDQwYzFhMmYsIDB4NGYwMDU1NjYsIDB4MGMxNDJlNzEsCisgICAgMHhjOTI4YTM0OCwgMHg4YTNjZDg1ZiwgMHg0MzUxYjkzYiwgMHgwMDQ1YzIyYywgMHhjNTc5NGYxNSwKKyAgICAweDg2NmQzNDAyLCAweDU3YTI4ZGRkLCAweDE0YjZmNmNhLCAweGQxOGE3YmYzLCAweDkyOWUwMGU0LAorICAgIDB4NWJmMzYxODAsIDB4MThlNzFhOTcsIDB4ZGRkYjk3YWUsIDB4OWVjZmVjYjksIDB4M2U0Mjk1Y2EsCisgICAgMHg3ZDU2ZWVkZCwgMHhiODZhNjNlNCwgMHhmYjdlMThmMywgMHgzMjEzNzk5NywgMHg3MTA3MDI4MCwKKyAgICAweGI0M2I4ZmI5LCAweGY3MmZmNGFlLCAweDI2ZTA0ZDcxLCAweDY1ZjQzNjY2LCAweGEwYzhiYjVmLAorICAgIDB4ZTNkY2MwNDgsIDB4MmFiMWExMmMsIDB4NjlhNWRhM2IsIDB4YWM5OTU3MDIsIDB4ZWY4ZDJjMTUsCisgICAgMHhlYzgyYTRlNCwgMHhhZjk2ZGZmMywgMHg2YWFhNTJjYSwgMHgyOWJlMjlkZCwgMHhlMGQzNDhiOSwKKyAgICAweGEzYzczM2FlLCAweDY2ZmJiZTk3LCAweDI1ZWZjNTgwLCAweGY0MjA3YzVmLCAweGI3MzQwNzQ4LAorICAgIDB4NzIwODhhNzEsIDB4MzExY2YxNjYsIDB4Zjg3MTkwMDIsIDB4YmI2NWViMTUsIDB4N2U1OTY2MmMsCisgICAgMHgzZDRkMWQzYiwgMHg5ZGMwNjQ0OCwgMHhkZWQ0MWY1ZiwgMHgxYmU4OTI2NiwgMHg1OGZjZTk3MSwKKyAgICAweDkxOTE4ODE1LCAweGQyODVmMzAyLCAweDE3Yjk3ZTNiLCAweDU0YWQwNTJjLCAweDg1NjJiY2YzLAorICAgIDB4YzY3NmM3ZTQsIDB4MDM0YTRhZGQsIDB4NDA1ZTMxY2EsIDB4ODkzMzUwYWUsIDB4Y2EyNzJiYjksCisgICAgMHgwZjFiYTY4MCwgMHg0YzBmZGQ5NywgMHg0ODAzYzdiOCwgMHgwYjE3YmNhZiwgMHhjZTJiMzE5NiwKKyAgICAweDhkM2Y0YTgxLCAweDQ0NTIyYmU1LCAweDA3NDY1MGYyLCAweGMyN2FkZGNiLCAweDgxNmVhNmRjLAorICAgIDB4NTBhMTFmMDMsIDB4MTNiNTY0MTQsIDB4ZDY4OWU5MmQsIDB4OTU5ZDkyM2EsIDB4NWNmMGYzNWUsCisgICAgMHgxZmU0ODg0OSwgMHhkYWQ4MDU3MCwgMHg5OWNjN2U2NywgMHgzOTQxMDcxNCwgMHg3YTU1N2MwMywKKyAgICAweGJmNjlmMTNhLCAweGZjN2Q4YTJkLCAweDM1MTBlYjQ5LCAweDc2MDQ5MDVlLCAweGIzMzgxZDY3LAorICAgIDB4ZjAyYzY2NzAsIDB4MjFlM2RmYWYsIDB4NjJmN2E0YjgsIDB4YTdjYjI5ODEsIDB4ZTRkZjUyOTYsCisgICAgMHgyZGIyMzNmMiwgMHg2ZWE2NDhlNSwgMHhhYjlhYzVkYywgMHhlODhlYmVjYiwgMHhlYjgxMzYzYSwKKyAgICAweGE4OTU0ZDJkLCAweDZkYTljMDE0LCAweDJlYmRiYjAzLCAweGU3ZDBkYTY3LCAweGE0YzRhMTcwLAorICAgIDB4NjFmODJjNDksIDB4MjJlYzU3NWUsIDB4ZjMyM2VlODEsIDB4YjAzNzk1OTYsIDB4NzUwYjE4YWYsCisgICAgMHgzNjFmNjNiOCwgMHhmZjcyMDJkYywgMHhiYzY2NzljYiwgMHg3OTVhZjRmMiwgMHgzYTRlOGZlNSwKKyAgICAweDlhYzNmNjk2LCAweGQ5ZDc4ZDgxLCAweDFjZWIwMGI4LCAweDVmZmY3YmFmLCAweDk2OTIxYWNiLAorICAgIDB4ZDU4NjYxZGMsIDB4MTBiYWVjZTUsIDB4NTNhZTk3ZjIsIDB4ODI2MTJlMmQsIDB4YzE3NTU1M2EsCisgICAgMHgwNDQ5ZDgwMywgMHg0NzVkYTMxNCwgMHg4ZTMwYzI3MCwgMHhjZDI0Yjk2NywgMHgwODE4MzQ1ZSwKKyAgICAweDRiMGM0ZjQ5fSwKKyAgIHsweDAwMDAwMDAwLCAweDNlNmJjMmVmLCAweDNkZDBmNTA0LCAweDAzYmIzN2ViLCAweDdhYTBlYjA5LAorICAgIDB4NDRjYjI5ZTYsIDB4NDc3MDFlMGQsIDB4NzkxYmRjZTIsIDB4ZjQ0MGQ3MTMsIDB4Y2EyYjE1ZmMsCisgICAgMHhjOTkwMjIxNywgMHhmN2ZiZTBmOCwgMHg4ZWUwM2MxYSwgMHhiMDhiZmVmNSwgMHhiMzMwYzkxZSwKKyAgICAweDhkNWIwYmYxLCAweGU4ODFhZTI3LCAweGQ2ZWE2Y2M4LCAweGQ1NTE1YjIzLCAweGViM2E5OWNjLAorICAgIDB4OTIyMTQ1MmUsIDB4YWM0YTg3YzEsIDB4YWZmMWIwMmEsIDB4OTE5YTcyYzUsIDB4MWNjMTc5MzQsCisgICAgMHgyMmFhYmJkYiwgMHgyMTExOGMzMCwgMHgxZjdhNGVkZiwgMHg2NjYxOTIzZCwgMHg1ODBhNTBkMiwKKyAgICAweDViYjE2NzM5LCAweDY1ZGFhNWQ2LCAweGQwMDM1ZDRmLCAweGVlNjg5ZmEwLCAweGVkZDNhODRiLAorICAgIDB4ZDNiODZhYTQsIDB4YWFhM2I2NDYsIDB4OTRjODc0YTksIDB4OTc3MzQzNDIsIDB4YTkxODgxYWQsCisgICAgMHgyNDQzOGE1YywgMHgxYTI4NDhiMywgMHgxOTkzN2Y1OCwgMHgyN2Y4YmRiNywgMHg1ZWUzNjE1NSwKKyAgICAweDYwODhhM2JhLCAweDYzMzM5NDUxLCAweDVkNTg1NmJlLCAweDM4ODJmMzY4LCAweDA2ZTkzMTg3LAorICAgIDB4MDU1MjA2NmMsIDB4M2IzOWM0ODMsIDB4NDIyMjE4NjEsIDB4N2M0OWRhOGUsIDB4N2ZmMmVkNjUsCisgICAgMHg0MTk5MmY4YSwgMHhjY2MyMjQ3YiwgMHhmMmE5ZTY5NCwgMHhmMTEyZDE3ZiwgMHhjZjc5MTM5MCwKKyAgICAweGI2NjJjZjcyLCAweDg4MDkwZDlkLCAweDhiYjIzYTc2LCAweGI1ZDlmODk5LCAweGEwMDdiYTllLAorICAgIDB4OWU2Yzc4NzEsIDB4OWRkNzRmOWEsIDB4YTNiYzhkNzUsIDB4ZGFhNzUxOTcsIDB4ZTRjYzkzNzgsCisgICAgMHhlNzc3YTQ5MywgMHhkOTFjNjY3YywgMHg1NDQ3NmQ4ZCwgMHg2YTJjYWY2MiwgMHg2OTk3OTg4OSwKKyAgICAweDU3ZmM1YTY2LCAweDJlZTc4Njg0LCAweDEwOGM0NDZiLCAweDEzMzc3MzgwLCAweDJkNWNiMTZmLAorICAgIDB4NDg4NjE0YjksIDB4NzZlZGQ2NTYsIDB4NzU1NmUxYmQsIDB4NGIzZDIzNTIsIDB4MzIyNmZmYjAsCisgICAgMHgwYzRkM2Q1ZiwgMHgwZmY2MGFiNCwgMHgzMTlkYzg1YiwgMHhiY2M2YzNhYSwgMHg4MmFkMDE0NSwKKyAgICAweDgxMTYzNmFlLCAweGJmN2RmNDQxLCAweGM2NjYyOGEzLCAweGY4MGRlYTRjLCAweGZiYjZkZGE3LAorICAgIDB4YzVkZDFmNDgsIDB4NzAwNGU3ZDEsIDB4NGU2ZjI1M2UsIDB4NGRkNDEyZDUsIDB4NzNiZmQwM2EsCisgICAgMHgwYWE0MGNkOCwgMHgzNGNmY2UzNywgMHgzNzc0ZjlkYywgMHgwOTFmM2IzMywgMHg4NDQ0MzBjMiwKKyAgICAweGJhMmZmMjJkLCAweGI5OTRjNWM2LCAweDg3ZmYwNzI5LCAweGZlZTRkYmNiLCAweGMwOGYxOTI0LAorICAgIDB4YzMzNDJlY2YsIDB4ZmQ1ZmVjMjAsIDB4OTg4NTQ5ZjYsIDB4YTZlZThiMTksIDB4YTU1NWJjZjIsCisgICAgMHg5YjNlN2UxZCwgMHhlMjI1YTJmZiwgMHhkYzRlNjAxMCwgMHhkZmY1NTdmYiwgMHhlMTllOTUxNCwKKyAgICAweDZjYzU5ZWU1LCAweDUyYWU1YzBhLCAweDUxMTU2YmUxLCAweDZmN2VhOTBlLCAweDE2NjU3NWVjLAorICAgIDB4MjgwZWI3MDMsIDB4MmJiNTgwZTgsIDB4MTVkZTQyMDcsIDB4MDEwOTA1ZTYsIDB4M2Y2MmM3MDksCisgICAgMHgzY2Q5ZjBlMiwgMHgwMmIyMzIwZCwgMHg3YmE5ZWVlZiwgMHg0NWMyMmMwMCwgMHg0Njc5MWJlYiwKKyAgICAweDc4MTJkOTA0LCAweGY1NDlkMmY1LCAweGNiMjIxMDFhLCAweGM4OTkyN2YxLCAweGY2ZjJlNTFlLAorICAgIDB4OGZlOTM5ZmMsIDB4YjE4MmZiMTMsIDB4YjIzOWNjZjgsIDB4OGM1MjBlMTcsIDB4ZTk4OGFiYzEsCisgICAgMHhkN2UzNjkyZSwgMHhkNDU4NWVjNSwgMHhlYTMzOWMyYSwgMHg5MzI4NDBjOCwgMHhhZDQzODIyNywKKyAgICAweGFlZjhiNWNjLCAweDkwOTM3NzIzLCAweDFkYzg3Y2QyLCAweDIzYTNiZTNkLCAweDIwMTg4OWQ2LAorICAgIDB4MWU3MzRiMzksIDB4Njc2ODk3ZGIsIDB4NTkwMzU1MzQsIDB4NWFiODYyZGYsIDB4NjRkM2EwMzAsCisgICAgMHhkMTBhNThhOSwgMHhlZjYxOWE0NiwgMHhlY2RhYWRhZCwgMHhkMmIxNmY0MiwgMHhhYmFhYjNhMCwKKyAgICAweDk1YzE3MTRmLCAweDk2N2E0NmE0LCAweGE4MTE4NDRiLCAweDI1NGE4ZmJhLCAweDFiMjE0ZDU1LAorICAgIDB4MTg5YTdhYmUsIDB4MjZmMWI4NTEsIDB4NWZlYTY0YjMsIDB4NjE4MWE2NWMsIDB4NjIzYTkxYjcsCisgICAgMHg1YzUxNTM1OCwgMHgzOThiZjY4ZSwgMHgwN2UwMzQ2MSwgMHgwNDViMDM4YSwgMHgzYTMwYzE2NSwKKyAgICAweDQzMmIxZDg3LCAweDdkNDBkZjY4LCAweDdlZmJlODgzLCAweDQwOTAyYTZjLCAweGNkY2IyMTlkLAorICAgIDB4ZjNhMGUzNzIsIDB4ZjAxYmQ0OTksIDB4Y2U3MDE2NzYsIDB4Yjc2YmNhOTQsIDB4ODkwMDA4N2IsCisgICAgMHg4YWJiM2Y5MCwgMHhiNGQwZmQ3ZiwgMHhhMTBlYmY3OCwgMHg5ZjY1N2Q5NywgMHg5Y2RlNGE3YywKKyAgICAweGEyYjU4ODkzLCAweGRiYWU1NDcxLCAweGU1YzU5NjllLCAweGU2N2VhMTc1LCAweGQ4MTU2MzlhLAorICAgIDB4NTU0ZTY4NmIsIDB4NmIyNWFhODQsIDB4Njg5ZTlkNmYsIDB4NTZmNTVmODAsIDB4MmZlZTgzNjIsCisgICAgMHgxMTg1NDE4ZCwgMHgxMjNlNzY2NiwgMHgyYzU1YjQ4OSwgMHg0OThmMTE1ZiwgMHg3N2U0ZDNiMCwKKyAgICAweDc0NWZlNDViLCAweDRhMzQyNmI0LCAweDMzMmZmYTU2LCAweDBkNDQzOGI5LCAweDBlZmYwZjUyLAorICAgIDB4MzA5NGNkYmQsIDB4YmRjZmM2NGMsIDB4ODNhNDA0YTMsIDB4ODAxZjMzNDgsIDB4YmU3NGYxYTcsCisgICAgMHhjNzZmMmQ0NSwgMHhmOTA0ZWZhYSwgMHhmYWJmZDg0MSwgMHhjNGQ0MWFhZSwgMHg3MTBkZTIzNywKKyAgICAweDRmNjYyMGQ4LCAweDRjZGQxNzMzLCAweDcyYjZkNWRjLCAweDBiYWQwOTNlLCAweDM1YzZjYmQxLAorICAgIDB4MzY3ZGZjM2EsIDB4MDgxNjNlZDUsIDB4ODU0ZDM1MjQsIDB4YmIyNmY3Y2IsIDB4Yjg5ZGMwMjAsCisgICAgMHg4NmY2MDJjZiwgMHhmZmVkZGUyZCwgMHhjMTg2MWNjMiwgMHhjMjNkMmIyOSwgMHhmYzU2ZTljNiwKKyAgICAweDk5OGM0YzEwLCAweGE3ZTc4ZWZmLCAweGE0NWNiOTE0LCAweDlhMzc3YmZiLCAweGUzMmNhNzE5LAorICAgIDB4ZGQ0NzY1ZjYsIDB4ZGVmYzUyMWQsIDB4ZTA5NzkwZjIsIDB4NmRjYzliMDMsIDB4NTNhNzU5ZWMsCisgICAgMHg1MDFjNmUwNywgMHg2ZTc3YWNlOCwgMHgxNzZjNzAwYSwgMHgyOTA3YjJlNSwgMHgyYWJjODUwZSwKKyAgICAweDE0ZDc0N2UxfSwKKyAgIHsweDAwMDAwMDAwLCAweGMwZGY4ZWMxLCAweGMxYjk2YzU4LCAweDAxNjZlMjk5LCAweDgyNzNkOWIwLAorICAgIDB4NDJhYzU3NzEsIDB4NDNjYWI1ZTgsIDB4ODMxNTNiMjksIDB4NDVlMWMzYmEsIDB4ODUzZTRkN2IsCisgICAgMHg4NDU4YWZlMiwgMHg0NDg3MjEyMywgMHhjNzkyMWEwYSwgMHgwNzRkOTRjYiwgMHgwNjJiNzY1MiwKKyAgICAweGM2ZjRmODkzLCAweGNiYzRmNmFlLCAweDBiMWI3ODZmLCAweDBhN2Q5YWY2LCAweGNhYTIxNDM3LAorICAgIDB4NDliNzJmMWUsIDB4ODk2OGExZGYsIDB4ODgwZTQzNDYsIDB4NDhkMWNkODcsIDB4OGUyNTM1MTQsCisgICAgMHg0ZWZhYmJkNSwgMHg0ZjljNTk0YywgMHg4ZjQzZDc4ZCwgMHgwYzU2ZWNhNCwgMHhjYzg5NjI2NSwKKyAgICAweGNkZWY4MGZjLCAweDBkMzAwZTNkLCAweGQ3OGY5Yzg2LCAweDE3NTAxMjQ3LCAweDE2MzZmMGRlLAorICAgIDB4ZDZlOTdlMWYsIDB4NTVmYzQ1MzYsIDB4OTUyM2NiZjcsIDB4OTQ0NTI5NmUsIDB4NTQ5YWE3YWYsCisgICAgMHg5MjZlNWYzYywgMHg1MmIxZDFmZCwgMHg1M2Q3MzM2NCwgMHg5MzA4YmRhNSwgMHgxMDFkODY4YywKKyAgICAweGQwYzIwODRkLCAweGQxYTRlYWQ0LCAweDExN2I2NDE1LCAweDFjNGI2YTI4LCAweGRjOTRlNGU5LAorICAgIDB4ZGRmMjA2NzAsIDB4MWQyZDg4YjEsIDB4OWUzOGIzOTgsIDB4NWVlNzNkNTksIDB4NWY4MWRmYzAsCisgICAgMHg5ZjVlNTEwMSwgMHg1OWFhYTk5MiwgMHg5OTc1Mjc1MywgMHg5ODEzYzVjYSwgMHg1OGNjNGIwYiwKKyAgICAweGRiZDk3MDIyLCAweDFiMDZmZWUzLCAweDFhNjAxYzdhLCAweGRhYmY5MmJiLCAweGVmMTk0OGQ2LAorICAgIDB4MmZjNmM2MTcsIDB4MmVhMDI0OGUsIDB4ZWU3ZmFhNGYsIDB4NmQ2YTkxNjYsIDB4YWRiNTFmYTcsCisgICAgMHhhY2QzZmQzZSwgMHg2YzBjNzNmZiwgMHhhYWY4OGI2YywgMHg2YTI3MDVhZCwgMHg2YjQxZTczNCwKKyAgICAweGFiOWU2OWY1LCAweDI4OGI1MmRjLCAweGU4NTRkYzFkLCAweGU5MzIzZTg0LCAweDI5ZWRiMDQ1LAorICAgIDB4MjRkZGJlNzgsIDB4ZTQwMjMwYjksIDB4ZTU2NGQyMjAsIDB4MjViYjVjZTEsIDB4YTZhZTY3YzgsCisgICAgMHg2NjcxZTkwOSwgMHg2NzE3MGI5MCwgMHhhN2M4ODU1MSwgMHg2MTNjN2RjMiwgMHhhMWUzZjMwMywKKyAgICAweGEwODUxMTlhLCAweDYwNWE5ZjViLCAweGUzNGZhNDcyLCAweDIzOTAyYWIzLCAweDIyZjZjODJhLAorICAgIDB4ZTIyOTQ2ZWIsIDB4Mzg5NmQ0NTAsIDB4Zjg0OTVhOTEsIDB4ZjkyZmI4MDgsIDB4MzlmMDM2YzksCisgICAgMHhiYWU1MGRlMCwgMHg3YTNhODMyMSwgMHg3YjVjNjFiOCwgMHhiYjgzZWY3OSwgMHg3ZDc3MTdlYSwKKyAgICAweGJkYTg5OTJiLCAweGJjY2U3YmIyLCAweDdjMTFmNTczLCAweGZmMDRjZTVhLCAweDNmZGI0MDliLAorICAgIDB4M2ViZGEyMDIsIDB4ZmU2MjJjYzMsIDB4ZjM1MjIyZmUsIDB4MzM4ZGFjM2YsIDB4MzJlYjRlYTYsCisgICAgMHhmMjM0YzA2NywgMHg3MTIxZmI0ZSwgMHhiMWZlNzU4ZiwgMHhiMDk4OTcxNiwgMHg3MDQ3MTlkNywKKyAgICAweGI2YjNlMTQ0LCAweDc2NmM2Zjg1LCAweDc3MGE4ZDFjLCAweGI3ZDUwM2RkLCAweDM0YzAzOGY0LAorICAgIDB4ZjQxZmI2MzUsIDB4ZjU3OTU0YWMsIDB4MzVhNmRhNmQsIDB4OWYzNWUxNzcsIDB4NWZlYTZmYjYsCisgICAgMHg1ZThjOGQyZiwgMHg5ZTUzMDNlZSwgMHgxZDQ2MzhjNywgMHhkZDk5YjYwNiwgMHhkY2ZmNTQ5ZiwKKyAgICAweDFjMjBkYTVlLCAweGRhZDQyMmNkLCAweDFhMGJhYzBjLCAweDFiNmQ0ZTk1LCAweGRiYjJjMDU0LAorICAgIDB4NThhN2ZiN2QsIDB4OTg3ODc1YmMsIDB4OTkxZTk3MjUsIDB4NTljMTE5ZTQsIDB4NTRmMTE3ZDksCisgICAgMHg5NDJlOTkxOCwgMHg5NTQ4N2I4MSwgMHg1NTk3ZjU0MCwgMHhkNjgyY2U2OSwgMHgxNjVkNDBhOCwKKyAgICAweDE3M2JhMjMxLCAweGQ3ZTQyY2YwLCAweDExMTBkNDYzLCAweGQxY2Y1YWEyLCAweGQwYTliODNiLAorICAgIDB4MTA3NjM2ZmEsIDB4OTM2MzBkZDMsIDB4NTNiYzgzMTIsIDB4NTJkYTYxOGIsIDB4OTIwNWVmNGEsCisgICAgMHg0OGJhN2RmMSwgMHg4ODY1ZjMzMCwgMHg4OTAzMTFhOSwgMHg0OWRjOWY2OCwgMHhjYWM5YTQ0MSwKKyAgICAweDBhMTYyYTgwLCAweDBiNzBjODE5LCAweGNiYWY0NmQ4LCAweDBkNWJiZTRiLCAweGNkODQzMDhhLAorICAgIDB4Y2NlMmQyMTMsIDB4MGMzZDVjZDIsIDB4OGYyODY3ZmIsIDB4NGZmN2U5M2EsIDB4NGU5MTBiYTMsCisgICAgMHg4ZTRlODU2MiwgMHg4MzdlOGI1ZiwgMHg0M2ExMDU5ZSwgMHg0MmM3ZTcwNywgMHg4MjE4NjljNiwKKyAgICAweDAxMGQ1MmVmLCAweGMxZDJkYzJlLCAweGMwYjQzZWI3LCAweDAwNmJiMDc2LCAweGM2OWY0OGU1LAorICAgIDB4MDY0MGM2MjQsIDB4MDcyNjI0YmQsIDB4YzdmOWFhN2MsIDB4NDRlYzkxNTUsIDB4ODQzMzFmOTQsCisgICAgMHg4NTU1ZmQwZCwgMHg0NThhNzNjYywgMHg3MDJjYTlhMSwgMHhiMGYzMjc2MCwgMHhiMTk1YzVmOSwKKyAgICAweDcxNGE0YjM4LCAweGYyNWY3MDExLCAweDMyODBmZWQwLCAweDMzZTYxYzQ5LCAweGYzMzk5Mjg4LAorICAgIDB4MzVjZDZhMWIsIDB4ZjUxMmU0ZGEsIDB4ZjQ3NDA2NDMsIDB4MzRhYjg4ODIsIDB4YjdiZWIzYWIsCisgICAgMHg3NzYxM2Q2YSwgMHg3NjA3ZGZmMywgMHhiNmQ4NTEzMiwgMHhiYmU4NWYwZiwgMHg3YjM3ZDFjZSwKKyAgICAweDdhNTEzMzU3LCAweGJhOGViZDk2LCAweDM5OWI4NmJmLCAweGY5NDQwODdlLCAweGY4MjJlYWU3LAorICAgIDB4MzhmZDY0MjYsIDB4ZmUwOTljYjUsIDB4M2VkNjEyNzQsIDB4M2ZiMGYwZWQsIDB4ZmY2ZjdlMmMsCisgICAgMHg3YzdhNDUwNSwgMHhiY2E1Y2JjNCwgMHhiZGMzMjk1ZCwgMHg3ZDFjYTc5YywgMHhhN2EzMzUyNywKKyAgICAweDY3N2NiYmU2LCAweDY2MWE1OTdmLCAweGE2YzVkN2JlLCAweDI1ZDBlYzk3LCAweGU1MGY2MjU2LAorICAgIDB4ZTQ2OTgwY2YsIDB4MjRiNjBlMGUsIDB4ZTI0MmY2OWQsIDB4MjI5ZDc4NWMsIDB4MjNmYjlhYzUsCisgICAgMHhlMzI0MTQwNCwgMHg2MDMxMmYyZCwgMHhhMGVlYTFlYywgMHhhMTg4NDM3NSwgMHg2MTU3Y2RiNCwKKyAgICAweDZjNjdjMzg5LCAweGFjYjg0ZDQ4LCAweGFkZGVhZmQxLCAweDZkMDEyMTEwLCAweGVlMTQxYTM5LAorICAgIDB4MmVjYjk0ZjgsIDB4MmZhZDc2NjEsIDB4ZWY3MmY4YTAsIDB4Mjk4NjAwMzMsIDB4ZTk1OThlZjIsCisgICAgMHhlODNmNmM2YiwgMHgyOGUwZTJhYSwgMHhhYmY1ZDk4MywgMHg2YjJhNTc0MiwgMHg2YTRjYjVkYiwKKyAgICAweGFhOTMzYjFhfSwKKyAgIHsweDAwMDAwMDAwLCAweDZmNGNhNTliLCAweDlmOWUzYmVjLCAweGYwZDI5ZTc3LCAweDdmM2IwNjAzLAorICAgIDB4MTA3N2EzOTgsIDB4ZTBhNTNkZWYsIDB4OGZlOTk4NzQsIDB4ZmU3NjBjMDYsIDB4OTEzYWE5OWQsCisgICAgMHg2MWU4MzdlYSwgMHgwZWE0OTI3MSwgMHg4MTRkMGEwNSwgMHhlZTAxYWY5ZSwgMHgxZWQzMzFlOSwKKyAgICAweDcxOWY5NDcyLCAweGZjZWQxODBjLCAweDkzYTFiZDk3LCAweDYzNzMyM2UwLCAweDBjM2Y4NjdiLAorICAgIDB4ODNkNjFlMGYsIDB4ZWM5YWJiOTQsIDB4MWM0ODI1ZTMsIDB4NzMwNDgwNzgsIDB4MDI5YjE0MGEsCisgICAgMHg2ZGQ3YjE5MSwgMHg5ZDA1MmZlNiwgMHhmMjQ5OGE3ZCwgMHg3ZGEwMTIwOSwgMHgxMmVjYjc5MiwKKyAgICAweGUyM2UyOWU1LCAweDhkNzI4YzdlLCAweGY4ZGIzMTE4LCAweDk3OTc5NDgzLCAweDY3NDUwYWY0LAorICAgIDB4MDgwOWFmNmYsIDB4ODdlMDM3MWIsIDB4ZThhYzkyODAsIDB4MTg3ZTBjZjcsIDB4NzczMmE5NmMsCisgICAgMHgwNmFkM2QxZSwgMHg2OWUxOTg4NSwgMHg5OTMzMDZmMiwgMHhmNjdmYTM2OSwgMHg3OTk2M2IxZCwKKyAgICAweDE2ZGE5ZTg2LCAweGU2MDgwMGYxLCAweDg5NDRhNTZhLCAweDA0MzYyOTE0LCAweDZiN2E4YzhmLAorICAgIDB4OWJhODEyZjgsIDB4ZjRlNGI3NjMsIDB4N2IwZDJmMTcsIDB4MTQ0MThhOGMsIDB4ZTQ5MzE0ZmIsCisgICAgMHg4YmRmYjE2MCwgMHhmYTQwMjUxMiwgMHg5NTBjODA4OSwgMHg2NWRlMWVmZSwgMHgwYTkyYmI2NSwKKyAgICAweDg1N2IyMzExLCAweGVhMzc4NjhhLCAweDFhZTUxOGZkLCAweDc1YTliZDY2LCAweGYwYjc2MzMwLAorICAgIDB4OWZmYmM2YWIsIDB4NmYyOTU4ZGMsIDB4MDA2NWZkNDcsIDB4OGY4YzY1MzMsIDB4ZTBjMGMwYTgsCisgICAgMHgxMDEyNWVkZiwgMHg3ZjVlZmI0NCwgMHgwZWMxNmYzNiwgMHg2MThkY2FhZCwgMHg5MTVmNTRkYSwKKyAgICAweGZlMTNmMTQxLCAweDcxZmE2OTM1LCAweDFlYjZjY2FlLCAweGVlNjQ1MmQ5LCAweDgxMjhmNzQyLAorICAgIDB4MGM1YTdiM2MsIDB4NjMxNmRlYTcsIDB4OTNjNDQwZDAsIDB4ZmM4OGU1NGIsIDB4NzM2MTdkM2YsCisgICAgMHgxYzJkZDhhNCwgMHhlY2ZmNDZkMywgMHg4M2IzZTM0OCwgMHhmMjJjNzczYSwgMHg5ZDYwZDJhMSwKKyAgICAweDZkYjI0Y2Q2LCAweDAyZmVlOTRkLCAweDhkMTc3MTM5LCAweGUyNWJkNGEyLCAweDEyODk0YWQ1LAorICAgIDB4N2RjNWVmNGUsIDB4MDg2YzUyMjgsIDB4NjcyMGY3YjMsIDB4OTdmMjY5YzQsIDB4ZjhiZWNjNWYsCisgICAgMHg3NzU3NTQyYiwgMHgxODFiZjFiMCwgMHhlOGM5NmZjNywgMHg4Nzg1Y2E1YywgMHhmNjFhNWUyZSwKKyAgICAweDk5NTZmYmI1LCAweDY5ODQ2NWMyLCAweDA2YzhjMDU5LCAweDg5MjE1ODJkLCAweGU2NmRmZGI2LAorICAgIDB4MTZiZjYzYzEsIDB4NzlmM2M2NWEsIDB4ZjQ4MTRhMjQsIDB4OWJjZGVmYmYsIDB4NmIxZjcxYzgsCisgICAgMHgwNDUzZDQ1MywgMHg4YmJhNGMyNywgMHhlNGY2ZTliYywgMHgxNDI0NzdjYiwgMHg3YjY4ZDI1MCwKKyAgICAweDBhZjc0NjIyLCAweDY1YmJlM2I5LCAweDk1Njk3ZGNlLCAweGZhMjVkODU1LCAweDc1Y2M0MDIxLAorICAgIDB4MWE4MGU1YmEsIDB4ZWE1MjdiY2QsIDB4ODUxZWRlNTYsIDB4ZTA2ZmM3NjAsIDB4OGYyMzYyZmIsCisgICAgMHg3ZmYxZmM4YywgMHgxMGJkNTkxNywgMHg5ZjU0YzE2MywgMHhmMDE4NjRmOCwgMHgwMGNhZmE4ZiwKKyAgICAweDZmODY1ZjE0LCAweDFlMTljYjY2LCAweDcxNTU2ZWZkLCAweDgxODdmMDhhLCAweGVlY2I1NTExLAorICAgIDB4NjEyMmNkNjUsIDB4MGU2ZTY4ZmUsIDB4ZmViY2Y2ODksIDB4OTFmMDUzMTIsIDB4MWM4MmRmNmMsCisgICAgMHg3M2NlN2FmNywgMHg4MzFjZTQ4MCwgMHhlYzUwNDExYiwgMHg2M2I5ZDk2ZiwgMHgwY2Y1N2NmNCwKKyAgICAweGZjMjdlMjgzLCAweDkzNmI0NzE4LCAweGUyZjRkMzZhLCAweDhkYjg3NmYxLCAweDdkNmFlODg2LAorICAgIDB4MTIyNjRkMWQsIDB4OWRjZmQ1NjksIDB4ZjI4MzcwZjIsIDB4MDI1MWVlODUsIDB4NmQxZDRiMWUsCisgICAgMHgxOGI0ZjY3OCwgMHg3N2Y4NTNlMywgMHg4NzJhY2Q5NCwgMHhlODY2NjgwZiwgMHg2NzhmZjA3YiwKKyAgICAweDA4YzM1NWUwLCAweGY4MTFjYjk3LCAweDk3NWQ2ZTBjLCAweGU2YzJmYTdlLCAweDg5OGU1ZmU1LAorICAgIDB4Nzk1Y2MxOTIsIDB4MTYxMDY0MDksIDB4OTlmOWZjN2QsIDB4ZjZiNTU5ZTYsIDB4MDY2N2M3OTEsCisgICAgMHg2OTJiNjIwYSwgMHhlNDU5ZWU3NCwgMHg4YjE1NGJlZiwgMHg3YmM3ZDU5OCwgMHgxNDhiNzAwMywKKyAgICAweDliNjJlODc3LCAweGY0MmU0ZGVjLCAweDA0ZmNkMzliLCAweDZiYjA3NjAwLCAweDFhMmZlMjcyLAorICAgIDB4NzU2MzQ3ZTksIDB4ODViMWQ5OWUsIDB4ZWFmZDdjMDUsIDB4NjUxNGU0NzEsIDB4MGE1ODQxZWEsCisgICAgMHhmYThhZGY5ZCwgMHg5NWM2N2EwNiwgMHgxMGQ4YTQ1MCwgMHg3Zjk0MDFjYiwgMHg4ZjQ2OWZiYywKKyAgICAweGUwMGEzYTI3LCAweDZmZTNhMjUzLCAweDAwYWYwN2M4LCAweGYwN2Q5OWJmLCAweDlmMzEzYzI0LAorICAgIDB4ZWVhZWE4NTYsIDB4ODFlMjBkY2QsIDB4NzEzMDkzYmEsIDB4MWU3YzM2MjEsIDB4OTE5NWFlNTUsCisgICAgMHhmZWQ5MGJjZSwgMHgwZTBiOTViOSwgMHg2MTQ3MzAyMiwgMHhlYzM1YmM1YywgMHg4Mzc5MTljNywKKyAgICAweDczYWI4N2IwLCAweDFjZTcyMjJiLCAweDkzMGViYTVmLCAweGZjNDIxZmM0LCAweDBjOTA4MWIzLAorICAgIDB4NjNkYzI0MjgsIDB4MTI0M2IwNWEsIDB4N2QwZjE1YzEsIDB4OGRkZDhiYjYsIDB4ZTI5MTJlMmQsCisgICAgMHg2ZDc4YjY1OSwgMHgwMjM0MTNjMiwgMHhmMmU2OGRiNSwgMHg5ZGFhMjgyZSwgMHhlODAzOTU0OCwKKyAgICAweDg3NGYzMGQzLCAweDc3OWRhZWE0LCAweDE4ZDEwYjNmLCAweDk3Mzg5MzRiLCAweGY4NzQzNmQwLAorICAgIDB4MDhhNmE4YTcsIDB4NjdlYTBkM2MsIDB4MTY3NTk5NGUsIDB4NzkzOTNjZDUsIDB4ODllYmEyYTIsCisgICAgMHhlNmE3MDczOSwgMHg2OTRlOWY0ZCwgMHgwNjAyM2FkNiwgMHhmNmQwYTRhMSwgMHg5OTljMDEzYSwKKyAgICAweDE0ZWU4ZDQ0LCAweDdiYTIyOGRmLCAweDhiNzBiNmE4LCAweGU0M2MxMzMzLCAweDZiZDU4YjQ3LAorICAgIDB4MDQ5OTJlZGMsIDB4ZjQ0YmIwYWIsIDB4OWIwNzE1MzAsIDB4ZWE5ODgxNDIsIDB4ODVkNDI0ZDksCisgICAgMHg3NTA2YmFhZSwgMHgxYTRhMWYzNSwgMHg5NWEzODc0MSwgMHhmYWVmMjJkYSwgMHgwYTNkYmNhZCwKKyAgICAweDY1NzExOTM2fX07CisKKyNlbmRpZgorCisjZW5kaWYKKworI2lmIE4gPT0gNAorCisjaWYgVyA9PSA4CisKK2xvY2FsIGNvbnN0IHpfY3JjX3QgRkFSIGNyY19icmFpZF90YWJsZVtdWzI1Nl0gPSB7CisgICB7MHgwMDAwMDAwMCwgMHhmMWRhMDVhYSwgMHgzOGM1MGQxNSwgMHhjOTFmMDhiZiwgMHg3MThhMWEyYSwKKyAgICAweDgwNTAxZjgwLCAweDQ5NGYxNzNmLCAweGI4OTUxMjk1LCAweGUzMTQzNDU0LCAweDEyY2UzMWZlLAorICAgIDB4ZGJkMTM5NDEsIDB4MmEwYjNjZWIsIDB4OTI5ZTJlN2UsIDB4NjM0NDJiZDQsIDB4YWE1YjIzNmIsCisgICAgMHg1YjgxMjZjMSwgMHgxZDU5NmVlOSwgMHhlYzgzNmI0MywgMHgyNTljNjNmYywgMHhkNDQ2NjY1NiwKKyAgICAweDZjZDM3NGMzLCAweDlkMDk3MTY5LCAweDU0MTY3OWQ2LCAweGE1Y2M3YzdjLCAweGZlNGQ1YWJkLAorICAgIDB4MGY5NzVmMTcsIDB4YzY4ODU3YTgsIDB4Mzc1MjUyMDIsIDB4OGZjNzQwOTcsIDB4N2UxZDQ1M2QsCisgICAgMHhiNzAyNGQ4MiwgMHg0NmQ4NDgyOCwgMHgzYWIyZGRkMiwgMHhjYjY4ZDg3OCwgMHgwMjc3ZDBjNywKKyAgICAweGYzYWRkNTZkLCAweDRiMzhjN2Y4LCAweGJhZTJjMjUyLCAweDczZmRjYWVkLCAweDgyMjdjZjQ3LAorICAgIDB4ZDlhNmU5ODYsIDB4Mjg3Y2VjMmMsIDB4ZTE2M2U0OTMsIDB4MTBiOWUxMzksIDB4YTgyY2YzYWMsCisgICAgMHg1OWY2ZjYwNiwgMHg5MGU5ZmViOSwgMHg2MTMzZmIxMywgMHgyN2ViYjMzYiwgMHhkNjMxYjY5MSwKKyAgICAweDFmMmViZTJlLCAweGVlZjRiYjg0LCAweDU2NjFhOTExLCAweGE3YmJhY2JiLCAweDZlYTRhNDA0LAorICAgIDB4OWY3ZWExYWUsIDB4YzRmZjg3NmYsIDB4MzUyNTgyYzUsIDB4ZmMzYThhN2EsIDB4MGRlMDhmZDAsCisgICAgMHhiNTc1OWQ0NSwgMHg0NGFmOThlZiwgMHg4ZGIwOTA1MCwgMHg3YzZhOTVmYSwgMHg3NTY1YmJhNCwKKyAgICAweDg0YmZiZTBlLCAweDRkYTBiNmIxLCAweGJjN2FiMzFiLCAweDA0ZWZhMThlLCAweGY1MzVhNDI0LAorICAgIDB4M2MyYWFjOWIsIDB4Y2RmMGE5MzEsIDB4OTY3MThmZjAsIDB4NjdhYjhhNWEsIDB4YWViNDgyZTUsCisgICAgMHg1ZjZlODc0ZiwgMHhlN2ZiOTVkYSwgMHgxNjIxOTA3MCwgMHhkZjNlOThjZiwgMHgyZWU0OWQ2NSwKKyAgICAweDY4M2NkNTRkLCAweDk5ZTZkMGU3LCAweDUwZjlkODU4LCAweGExMjNkZGYyLCAweDE5YjZjZjY3LAorICAgIDB4ZTg2Y2NhY2QsIDB4MjE3M2MyNzIsIDB4ZDBhOWM3ZDgsIDB4OGIyOGUxMTksIDB4N2FmMmU0YjMsCisgICAgMHhiM2VkZWMwYywgMHg0MjM3ZTlhNiwgMHhmYWEyZmIzMywgMHgwYjc4ZmU5OSwgMHhjMjY3ZjYyNiwKKyAgICAweDMzYmRmMzhjLCAweDRmZDc2Njc2LCAweGJlMGQ2M2RjLCAweDc3MTI2YjYzLCAweDg2Yzg2ZWM5LAorICAgIDB4M2U1ZDdjNWMsIDB4Y2Y4Nzc5ZjYsIDB4MDY5ODcxNDksIDB4Zjc0Mjc0ZTMsIDB4YWNjMzUyMjIsCisgICAgMHg1ZDE5NTc4OCwgMHg5NDA2NWYzNywgMHg2NWRjNWE5ZCwgMHhkZDQ5NDgwOCwgMHgyYzkzNGRhMiwKKyAgICAweGU1OGM0NTFkLCAweDE0NTY0MGI3LCAweDUyOGUwODlmLCAweGEzNTQwZDM1LCAweDZhNGIwNThhLAorICAgIDB4OWI5MTAwMjAsIDB4MjMwNDEyYjUsIDB4ZDJkZTE3MWYsIDB4MWJjMTFmYTAsIDB4ZWExYjFhMGEsCisgICAgMHhiMTlhM2NjYiwgMHg0MDQwMzk2MSwgMHg4OTVmMzFkZSwgMHg3ODg1MzQ3NCwgMHhjMDEwMjZlMSwKKyAgICAweDMxY2EyMzRiLCAweGY4ZDUyYmY0LCAweDA5MGYyZTVlLCAweGVhY2I3NzQ4LCAweDFiMTE3MmUyLAorICAgIDB4ZDIwZTdhNWQsIDB4MjNkNDdmZjcsIDB4OWI0MTZkNjIsIDB4NmE5YjY4YzgsIDB4YTM4NDYwNzcsCisgICAgMHg1MjVlNjVkZCwgMHgwOWRmNDMxYywgMHhmODA1NDZiNiwgMHgzMTFhNGUwOSwgMHhjMGMwNGJhMywKKyAgICAweDc4NTU1OTM2LCAweDg5OGY1YzljLCAweDQwOTA1NDIzLCAweGIxNGE1MTg5LCAweGY3OTIxOWExLAorICAgIDB4MDY0ODFjMGIsIDB4Y2Y1NzE0YjQsIDB4M2U4ZDExMWUsIDB4ODYxODAzOGIsIDB4NzdjMjA2MjEsCisgICAgMHhiZWRkMGU5ZSwgMHg0ZjA3MGIzNCwgMHgxNDg2MmRmNSwgMHhlNTVjMjg1ZiwgMHgyYzQzMjBlMCwKKyAgICAweGRkOTkyNTRhLCAweDY1MGMzN2RmLCAweDk0ZDYzMjc1LCAweDVkYzkzYWNhLCAweGFjMTMzZjYwLAorICAgIDB4ZDA3OWFhOWEsIDB4MjFhM2FmMzAsIDB4ZThiY2E3OGYsIDB4MTk2NmEyMjUsIDB4YTFmM2IwYjAsCisgICAgMHg1MDI5YjUxYSwgMHg5OTM2YmRhNSwgMHg2OGVjYjgwZiwgMHgzMzZkOWVjZSwgMHhjMmI3OWI2NCwKKyAgICAweDBiYTg5M2RiLCAweGZhNzI5NjcxLCAweDQyZTc4NGU0LCAweGIzM2Q4MTRlLCAweDdhMjI4OWYxLAorICAgIDB4OGJmODhjNWIsIDB4Y2QyMGM0NzMsIDB4M2NmYWMxZDksIDB4ZjVlNWM5NjYsIDB4MDQzZmNjY2MsCisgICAgMHhiY2FhZGU1OSwgMHg0ZDcwZGJmMywgMHg4NDZmZDM0YywgMHg3NWI1ZDZlNiwgMHgyZTM0ZjAyNywKKyAgICAweGRmZWVmNThkLCAweDE2ZjFmZDMyLCAweGU3MmJmODk4LCAweDVmYmVlYTBkLCAweGFlNjRlZmE3LAorICAgIDB4Njc3YmU3MTgsIDB4OTZhMWUyYjIsIDB4OWZhZWNjZWMsIDB4NmU3NGM5NDYsIDB4YTc2YmMxZjksCisgICAgMHg1NmIxYzQ1MywgMHhlZTI0ZDZjNiwgMHgxZmZlZDM2YywgMHhkNmUxZGJkMywgMHgyNzNiZGU3OSwKKyAgICAweDdjYmFmOGI4LCAweDhkNjBmZDEyLCAweDQ0N2ZmNWFkLCAweGI1YTVmMDA3LCAweDBkMzBlMjkyLAorICAgIDB4ZmNlYWU3MzgsIDB4MzVmNWVmODcsIDB4YzQyZmVhMmQsIDB4ODJmN2EyMDUsIDB4NzMyZGE3YWYsCisgICAgMHhiYTMyYWYxMCwgMHg0YmU4YWFiYSwgMHhmMzdkYjgyZiwgMHgwMmE3YmQ4NSwgMHhjYmI4YjUzYSwKKyAgICAweDNhNjJiMDkwLCAweDYxZTM5NjUxLCAweDkwMzk5M2ZiLCAweDU5MjY5YjQ0LCAweGE4ZmM5ZWVlLAorICAgIDB4MTA2OThjN2IsIDB4ZTFiMzg5ZDEsIDB4MjhhYzgxNmUsIDB4ZDk3Njg0YzQsIDB4YTUxYzExM2UsCisgICAgMHg1NGM2MTQ5NCwgMHg5ZGQ5MWMyYiwgMHg2YzAzMTk4MSwgMHhkNDk2MGIxNCwgMHgyNTRjMGViZSwKKyAgICAweGVjNTMwNjAxLCAweDFkODkwM2FiLCAweDQ2MDgyNTZhLCAweGI3ZDIyMGMwLCAweDdlY2QyODdmLAorICAgIDB4OGYxNzJkZDUsIDB4Mzc4MjNmNDAsIDB4YzY1ODNhZWEsIDB4MGY0NzMyNTUsIDB4ZmU5ZDM3ZmYsCisgICAgMHhiODQ1N2ZkNywgMHg0OTlmN2E3ZCwgMHg4MDgwNzJjMiwgMHg3MTVhNzc2OCwgMHhjOWNmNjVmZCwKKyAgICAweDM4MTU2MDU3LCAweGYxMGE2OGU4LCAweDAwZDA2ZDQyLCAweDViNTE0YjgzLCAweGFhOGI0ZTI5LAorICAgIDB4NjM5NDQ2OTYsIDB4OTI0ZTQzM2MsIDB4MmFkYjUxYTksIDB4ZGIwMTU0MDMsIDB4MTIxZTVjYmMsCisgICAgMHhlM2M0NTkxNn0sCisgICB7MHgwMDAwMDAwMCwgMHgwZWU3ZThkMSwgMHgxZGNmZDFhMiwgMHgxMzI4Mzk3MywgMHgzYjlmYTM0NCwKKyAgICAweDM1Nzg0Yjk1LCAweDI2NTA3MmU2LCAweDI4Yjc5YTM3LCAweDc3M2Y0Njg4LCAweDc5ZDhhZTU5LAorICAgIDB4NmFmMDk3MmEsIDB4NjQxNzdmZmIsIDB4NGNhMGU1Y2MsIDB4NDI0NzBkMWQsIDB4NTE2ZjM0NmUsCisgICAgMHg1Zjg4ZGNiZiwgMHhlZTdlOGQxMCwgMHhlMDk5NjVjMSwgMHhmM2IxNWNiMiwgMHhmZDU2YjQ2MywKKyAgICAweGQ1ZTEyZTU0LCAweGRiMDZjNjg1LCAweGM4MmVmZmY2LCAweGM2YzkxNzI3LCAweDk5NDFjYjk4LAorICAgIDB4OTdhNjIzNDksIDB4ODQ4ZTFhM2EsIDB4OGE2OWYyZWIsIDB4YTJkZTY4ZGMsIDB4YWMzOTgwMGQsCisgICAgMHhiZjExYjk3ZSwgMHhiMWY2NTFhZiwgMHgwNzhjMWM2MSwgMHgwOTZiZjRiMCwgMHgxYTQzY2RjMywKKyAgICAweDE0YTQyNTEyLCAweDNjMTNiZjI1LCAweDMyZjQ1N2Y0LCAweDIxZGM2ZTg3LCAweDJmM2I4NjU2LAorICAgIDB4NzBiMzVhZTksIDB4N2U1NGIyMzgsIDB4NmQ3YzhiNGIsIDB4NjM5YjYzOWEsIDB4NGIyY2Y5YWQsCisgICAgMHg0NWNiMTE3YywgMHg1NmUzMjgwZiwgMHg1ODA0YzBkZSwgMHhlOWYyOTE3MSwgMHhlNzE1NzlhMCwKKyAgICAweGY0M2Q0MGQzLCAweGZhZGFhODAyLCAweGQyNmQzMjM1LCAweGRjOGFkYWU0LCAweGNmYTJlMzk3LAorICAgIDB4YzE0NTBiNDYsIDB4OWVjZGQ3ZjksIDB4OTAyYTNmMjgsIDB4ODMwMjA2NWIsIDB4OGRlNWVlOGEsCisgICAgMHhhNTUyNzRiZCwgMHhhYmI1OWM2YywgMHhiODlkYTUxZiwgMHhiNjdhNGRjZSwgMHgwZjE4MzhjMiwKKyAgICAweDAxZmZkMDEzLCAweDEyZDdlOTYwLCAweDFjMzAwMWIxLCAweDM0ODc5Yjg2LCAweDNhNjA3MzU3LAorICAgIDB4Mjk0ODRhMjQsIDB4MjdhZmEyZjUsIDB4NzgyNzdlNGEsIDB4NzZjMDk2OWIsIDB4NjVlOGFmZTgsCisgICAgMHg2YjBmNDczOSwgMHg0M2I4ZGQwZSwgMHg0ZDVmMzVkZiwgMHg1ZTc3MGNhYywgMHg1MDkwZTQ3ZCwKKyAgICAweGUxNjZiNWQyLCAweGVmODE1ZDAzLCAweGZjYTk2NDcwLCAweGYyNGU4Y2ExLCAweGRhZjkxNjk2LAorICAgIDB4ZDQxZWZlNDcsIDB4YzczNmM3MzQsIDB4YzlkMTJmZTUsIDB4OTY1OWYzNWEsIDB4OThiZTFiOGIsCisgICAgMHg4Yjk2MjJmOCwgMHg4NTcxY2EyOSwgMHhhZGM2NTAxZSwgMHhhMzIxYjhjZiwgMHhiMDA5ODFiYywKKyAgICAweGJlZWU2OTZkLCAweDA4OTQyNGEzLCAweDA2NzNjYzcyLCAweDE1NWJmNTAxLCAweDFiYmMxZGQwLAorICAgIDB4MzMwYjg3ZTcsIDB4M2RlYzZmMzYsIDB4MmVjNDU2NDUsIDB4MjAyM2JlOTQsIDB4N2ZhYjYyMmIsCisgICAgMHg3MTRjOGFmYSwgMHg2MjY0YjM4OSwgMHg2YzgzNWI1OCwgMHg0NDM0YzE2ZiwgMHg0YWQzMjliZSwKKyAgICAweDU5ZmIxMGNkLCAweDU3MWNmODFjLCAweGU2ZWFhOWIzLCAweGU4MGQ0MTYyLCAweGZiMjU3ODExLAorICAgIDB4ZjVjMjkwYzAsIDB4ZGQ3NTBhZjcsIDB4ZDM5MmUyMjYsIDB4YzBiYWRiNTUsIDB4Y2U1ZDMzODQsCisgICAgMHg5MWQ1ZWYzYiwgMHg5ZjMyMDdlYSwgMHg4YzFhM2U5OSwgMHg4MmZkZDY0OCwgMHhhYTRhNGM3ZiwKKyAgICAweGE0YWRhNGFlLCAweGI3ODU5ZGRkLCAweGI5NjI3NTBjLCAweDFlMzA3MTg0LCAweDEwZDc5OTU1LAorICAgIDB4MDNmZmEwMjYsIDB4MGQxODQ4ZjcsIDB4MjVhZmQyYzAsIDB4MmI0ODNhMTEsIDB4Mzg2MDAzNjIsCisgICAgMHgzNjg3ZWJiMywgMHg2OTBmMzcwYywgMHg2N2U4ZGZkZCwgMHg3NGMwZTZhZSwgMHg3YTI3MGU3ZiwKKyAgICAweDUyOTA5NDQ4LCAweDVjNzc3Yzk5LCAweDRmNWY0NWVhLCAweDQxYjhhZDNiLCAweGYwNGVmYzk0LAorICAgIDB4ZmVhOTE0NDUsIDB4ZWQ4MTJkMzYsIDB4ZTM2NmM1ZTcsIDB4Y2JkMTVmZDAsIDB4YzUzNmI3MDEsCisgICAgMHhkNjFlOGU3MiwgMHhkOGY5NjZhMywgMHg4NzcxYmExYywgMHg4OTk2NTJjZCwgMHg5YWJlNmJiZSwKKyAgICAweDk0NTk4MzZmLCAweGJjZWUxOTU4LCAweGIyMDlmMTg5LCAweGExMjFjOGZhLCAweGFmYzYyMDJiLAorICAgIDB4MTliYzZkZTUsIDB4MTc1Yjg1MzQsIDB4MDQ3M2JjNDcsIDB4MGE5NDU0OTYsIDB4MjIyM2NlYTEsCisgICAgMHgyY2M0MjY3MCwgMHgzZmVjMWYwMywgMHgzMTBiZjdkMiwgMHg2ZTgzMmI2ZCwgMHg2MDY0YzNiYywKKyAgICAweDczNGNmYWNmLCAweDdkYWIxMjFlLCAweDU1MWM4ODI5LCAweDViZmI2MGY4LCAweDQ4ZDM1OThiLAorICAgIDB4NDYzNGIxNWEsIDB4ZjdjMmUwZjUsIDB4ZjkyNTA4MjQsIDB4ZWEwZDMxNTcsIDB4ZTRlYWQ5ODYsCisgICAgMHhjYzVkNDNiMSwgMHhjMmJhYWI2MCwgMHhkMTkyOTIxMywgMHhkZjc1N2FjMiwgMHg4MGZkYTY3ZCwKKyAgICAweDhlMWE0ZWFjLCAweDlkMzI3N2RmLCAweDkzZDU5ZjBlLCAweGJiNjIwNTM5LCAweGI1ODVlZGU4LAorICAgIDB4YTZhZGQ0OWIsIDB4YTg0YTNjNGEsIDB4MTEyODQ5NDYsIDB4MWZjZmExOTcsIDB4MGNlNzk4ZTQsCisgICAgMHgwMjAwNzAzNSwgMHgyYWI3ZWEwMiwgMHgyNDUwMDJkMywgMHgzNzc4M2JhMCwgMHgzOTlmZDM3MSwKKyAgICAweDY2MTcwZmNlLCAweDY4ZjBlNzFmLCAweDdiZDhkZTZjLCAweDc1M2YzNmJkLCAweDVkODhhYzhhLAorICAgIDB4NTM2ZjQ0NWIsIDB4NDA0NzdkMjgsIDB4NGVhMDk1ZjksIDB4ZmY1NmM0NTYsIDB4ZjFiMTJjODcsCisgICAgMHhlMjk5MTVmNCwgMHhlYzdlZmQyNSwgMHhjNGM5NjcxMiwgMHhjYTJlOGZjMywgMHhkOTA2YjZiMCwKKyAgICAweGQ3ZTE1ZTYxLCAweDg4Njk4MmRlLCAweDg2OGU2YTBmLCAweDk1YTY1MzdjLCAweDliNDFiYmFkLAorICAgIDB4YjNmNjIxOWEsIDB4YmQxMWM5NGIsIDB4YWUzOWYwMzgsIDB4YTBkZTE4ZTksIDB4MTZhNDU1MjcsCisgICAgMHgxODQzYmRmNiwgMHgwYjZiODQ4NSwgMHgwNThjNmM1NCwgMHgyZDNiZjY2MywgMHgyM2RjMWViMiwKKyAgICAweDMwZjQyN2MxLCAweDNlMTNjZjEwLCAweDYxOWIxM2FmLCAweDZmN2NmYjdlLCAweDdjNTRjMjBkLAorICAgIDB4NzJiMzJhZGMsIDB4NWEwNGIwZWIsIDB4NTRlMzU4M2EsIDB4NDdjYjYxNDksIDB4NDkyYzg5OTgsCisgICAgMHhmOGRhZDgzNywgMHhmNjNkMzBlNiwgMHhlNTE1MDk5NSwgMHhlYmYyZTE0NCwgMHhjMzQ1N2I3MywKKyAgICAweGNkYTI5M2EyLCAweGRlOGFhYWQxLCAweGQwNmQ0MjAwLCAweDhmZTU5ZWJmLCAweDgxMDI3NjZlLAorICAgIDB4OTIyYTRmMWQsIDB4OWNjZGE3Y2MsIDB4YjQ3YTNkZmIsIDB4YmE5ZGQ1MmEsIDB4YTliNWVjNTksCisgICAgMHhhNzUyMDQ4OH0sCisgICB7MHgwMDAwMDAwMCwgMHgzYzYwZTMwOCwgMHg3OGMxYzYxMCwgMHg0NGExMjUxOCwgMHhmMTgzOGMyMCwKKyAgICAweGNkZTM2ZjI4LCAweDg5NDI0YTMwLCAweGI1MjJhOTM4LCAweDM4NzYxZTAxLCAweDA0MTZmZDA5LAorICAgIDB4NDBiN2Q4MTEsIDB4N2NkNzNiMTksIDB4YzlmNTkyMjEsIDB4ZjU5NTcxMjksIDB4YjEzNDU0MzEsCisgICAgMHg4ZDU0YjczOSwgMHg3MGVjM2MwMiwgMHg0YzhjZGYwYSwgMHgwODJkZmExMiwgMHgzNDRkMTkxYSwKKyAgICAweDgxNmZiMDIyLCAweGJkMGY1MzJhLCAweGY5YWU3NjMyLCAweGM1Y2U5NTNhLCAweDQ4OWEyMjAzLAorICAgIDB4NzRmYWMxMGIsIDB4MzA1YmU0MTMsIDB4MGMzYjA3MWIsIDB4YjkxOWFlMjMsIDB4ODU3OTRkMmIsCisgICAgMHhjMWQ4NjgzMywgMHhmZGI4OGIzYiwgMHhlMWQ4NzgwNCwgMHhkZGI4OWIwYywgMHg5OTE5YmUxNCwKKyAgICAweGE1Nzk1ZDFjLCAweDEwNWJmNDI0LCAweDJjM2IxNzJjLCAweDY4OWEzMjM0LCAweDU0ZmFkMTNjLAorICAgIDB4ZDlhZTY2MDUsIDB4ZTVjZTg1MGQsIDB4YTE2ZmEwMTUsIDB4OWQwZjQzMWQsIDB4MjgyZGVhMjUsCisgICAgMHgxNDRkMDkyZCwgMHg1MGVjMmMzNSwgMHg2YzhjY2YzZCwgMHg5MTM0NDQwNiwgMHhhZDU0YTcwZSwKKyAgICAweGU5ZjU4MjE2LCAweGQ1OTU2MTFlLCAweDYwYjdjODI2LCAweDVjZDcyYjJlLCAweDE4NzYwZTM2LAorICAgIDB4MjQxNmVkM2UsIDB4YTk0MjVhMDcsIDB4OTUyMmI5MGYsIDB4ZDE4MzljMTcsIDB4ZWRlMzdmMWYsCisgICAgMHg1OGMxZDYyNywgMHg2NGExMzUyZiwgMHgyMDAwMTAzNywgMHgxYzYwZjMzZiwgMHgxOGMxZjY0OSwKKyAgICAweDI0YTExNTQxLCAweDYwMDAzMDU5LCAweDVjNjBkMzUxLCAweGU5NDI3YTY5LCAweGQ1MjI5OTYxLAorICAgIDB4OTE4M2JjNzksIDB4YWRlMzVmNzEsIDB4MjBiN2U4NDgsIDB4MWNkNzBiNDAsIDB4NTg3NjJlNTgsCisgICAgMHg2NDE2Y2Q1MCwgMHhkMTM0NjQ2OCwgMHhlZDU0ODc2MCwgMHhhOWY1YTI3OCwgMHg5NTk1NDE3MCwKKyAgICAweDY4MmRjYTRiLCAweDU0NGQyOTQzLCAweDEwZWMwYzViLCAweDJjOGNlZjUzLCAweDk5YWU0NjZiLAorICAgIDB4YTVjZWE1NjMsIDB4ZTE2ZjgwN2IsIDB4ZGQwZjYzNzMsIDB4NTA1YmQ0NGEsIDB4NmMzYjM3NDIsCisgICAgMHgyODlhMTI1YSwgMHgxNGZhZjE1MiwgMHhhMWQ4NTg2YSwgMHg5ZGI4YmI2MiwgMHhkOTE5OWU3YSwKKyAgICAweGU1Nzk3ZDcyLCAweGY5MTk4ZTRkLCAweGM1Nzk2ZDQ1LCAweDgxZDg0ODVkLCAweGJkYjhhYjU1LAorICAgIDB4MDg5YTAyNmQsIDB4MzRmYWUxNjUsIDB4NzA1YmM0N2QsIDB4NGMzYjI3NzUsIDB4YzE2ZjkwNGMsCisgICAgMHhmZDBmNzM0NCwgMHhiOWFlNTY1YywgMHg4NWNlYjU1NCwgMHgzMGVjMWM2YywgMHgwYzhjZmY2NCwKKyAgICAweDQ4MmRkYTdjLCAweDc0NGQzOTc0LCAweDg5ZjViMjRmLCAweGI1OTU1MTQ3LCAweGYxMzQ3NDVmLAorICAgIDB4Y2Q1NDk3NTcsIDB4Nzg3NjNlNmYsIDB4NDQxNmRkNjcsIDB4MDBiN2Y4N2YsIDB4M2NkNzFiNzcsCisgICAgMHhiMTgzYWM0ZSwgMHg4ZGUzNGY0NiwgMHhjOTQyNmE1ZSwgMHhmNTIyODk1NiwgMHg0MDAwMjA2ZSwKKyAgICAweDdjNjBjMzY2LCAweDM4YzFlNjdlLCAweDA0YTEwNTc2LCAweDMxODNlYzkyLCAweDBkZTMwZjlhLAorICAgIDB4NDk0MjJhODIsIDB4NzUyMmM5OGEsIDB4YzAwMDYwYjIsIDB4ZmM2MDgzYmEsIDB4YjhjMWE2YTIsCisgICAgMHg4NGExNDVhYSwgMHgwOWY1ZjI5MywgMHgzNTk1MTE5YiwgMHg3MTM0MzQ4MywgMHg0ZDU0ZDc4YiwKKyAgICAweGY4NzY3ZWIzLCAweGM0MTY5ZGJiLCAweDgwYjdiOGEzLCAweGJjZDc1YmFiLCAweDQxNmZkMDkwLAorICAgIDB4N2QwZjMzOTgsIDB4MzlhZTE2ODAsIDB4MDVjZWY1ODgsIDB4YjBlYzVjYjAsIDB4OGM4Y2JmYjgsCisgICAgMHhjODJkOWFhMCwgMHhmNDRkNzlhOCwgMHg3OTE5Y2U5MSwgMHg0NTc5MmQ5OSwgMHgwMWQ4MDg4MSwKKyAgICAweDNkYjhlYjg5LCAweDg4OWE0MmIxLCAweGI0ZmFhMWI5LCAweGYwNWI4NGExLCAweGNjM2I2N2E5LAorICAgIDB4ZDA1Yjk0OTYsIDB4ZWMzYjc3OWUsIDB4YTg5YTUyODYsIDB4OTRmYWIxOGUsIDB4MjFkODE4YjYsCisgICAgMHgxZGI4ZmJiZSwgMHg1OTE5ZGVhNiwgMHg2NTc5M2RhZSwgMHhlODJkOGE5NywgMHhkNDRkNjk5ZiwKKyAgICAweDkwZWM0Yzg3LCAweGFjOGNhZjhmLCAweDE5YWUwNmI3LCAweDI1Y2VlNWJmLCAweDYxNmZjMGE3LAorICAgIDB4NWQwZjIzYWYsIDB4YTBiN2E4OTQsIDB4OWNkNzRiOWMsIDB4ZDg3NjZlODQsIDB4ZTQxNjhkOGMsCisgICAgMHg1MTM0MjRiNCwgMHg2ZDU0YzdiYywgMHgyOWY1ZTJhNCwgMHgxNTk1MDFhYywgMHg5OGMxYjY5NSwKKyAgICAweGE0YTE1NTlkLCAweGUwMDA3MDg1LCAweGRjNjA5MzhkLCAweDY5NDIzYWI1LCAweDU1MjJkOWJkLAorICAgIDB4MTE4M2ZjYTUsIDB4MmRlMzFmYWQsIDB4Mjk0MjFhZGIsIDB4MTUyMmY5ZDMsIDB4NTE4M2RjY2IsCisgICAgMHg2ZGUzM2ZjMywgMHhkOGMxOTZmYiwgMHhlNGExNzVmMywgMHhhMDAwNTBlYiwgMHg5YzYwYjNlMywKKyAgICAweDExMzQwNGRhLCAweDJkNTRlN2QyLCAweDY5ZjVjMmNhLCAweDU1OTUyMWMyLCAweGUwYjc4OGZhLAorICAgIDB4ZGNkNzZiZjIsIDB4OTg3NjRlZWEsIDB4YTQxNmFkZTIsIDB4NTlhZTI2ZDksIDB4NjVjZWM1ZDEsCisgICAgMHgyMTZmZTBjOSwgMHgxZDBmMDNjMSwgMHhhODJkYWFmOSwgMHg5NDRkNDlmMSwgMHhkMGVjNmNlOSwKKyAgICAweGVjOGM4ZmUxLCAweDYxZDgzOGQ4LCAweDVkYjhkYmQwLCAweDE5MTlmZWM4LCAweDI1NzkxZGMwLAorICAgIDB4OTA1YmI0ZjgsIDB4YWMzYjU3ZjAsIDB4ZTg5YTcyZTgsIDB4ZDRmYTkxZTAsIDB4Yzg5YTYyZGYsCisgICAgMHhmNGZhODFkNywgMHhiMDViYTRjZiwgMHg4YzNiNDdjNywgMHgzOTE5ZWVmZiwgMHgwNTc5MGRmNywKKyAgICAweDQxZDgyOGVmLCAweDdkYjhjYmU3LCAweGYwZWM3Y2RlLCAweGNjOGM5ZmQ2LCAweDg4MmRiYWNlLAorICAgIDB4YjQ0ZDU5YzYsIDB4MDE2ZmYwZmUsIDB4M2QwZjEzZjYsIDB4NzlhZTM2ZWUsIDB4NDVjZWQ1ZTYsCisgICAgMHhiODc2NWVkZCwgMHg4NDE2YmRkNSwgMHhjMGI3OThjZCwgMHhmY2Q3N2JjNSwgMHg0OWY1ZDJmZCwKKyAgICAweDc1OTUzMWY1LCAweDMxMzQxNGVkLCAweDBkNTRmN2U1LCAweDgwMDA0MGRjLCAweGJjNjBhM2Q0LAorICAgIDB4ZjhjMTg2Y2MsIDB4YzRhMTY1YzQsIDB4NzE4M2NjZmMsIDB4NGRlMzJmZjQsIDB4MDk0MjBhZWMsCisgICAgMHgzNTIyZTllNH0sCisgICB7MHgwMDAwMDAwMCwgMHg2MzA3ZDkyNCwgMHhjNjBmYjI0OCwgMHhhNTA4NmI2YywgMHg1NzZlNjJkMSwKKyAgICAweDM0NjliYmY1LCAweDkxNjFkMDk5LCAweGYyNjYwOWJkLCAweGFlZGNjNWEyLCAweGNkZGIxYzg2LAorICAgIDB4NjhkMzc3ZWEsIDB4MGJkNGFlY2UsIDB4ZjliMmE3NzMsIDB4OWFiNTdlNTcsIDB4M2ZiZDE1M2IsCisgICAgMHg1Y2JhY2MxZiwgMHg4NmM4OGQwNSwgMHhlNWNmNTQyMSwgMHg0MGM3M2Y0ZCwgMHgyM2MwZTY2OSwKKyAgICAweGQxYTZlZmQ0LCAweGIyYTEzNmYwLCAweDE3YTk1ZDljLCAweDc0YWU4NGI4LCAweDI4MTQ0OGE3LAorICAgIDB4NGIxMzkxODMsIDB4ZWUxYmZhZWYsIDB4OGQxYzIzY2IsIDB4N2Y3YTJhNzYsIDB4MWM3ZGYzNTIsCisgICAgMHhiOTc1OTgzZSwgMHhkYTcyNDExYSwgMHhkNmUwMWM0YiwgMHhiNWU3YzU2ZiwgMHgxMGVmYWUwMywKKyAgICAweDczZTg3NzI3LCAweDgxOGU3ZTlhLCAweGUyODlhN2JlLCAweDQ3ODFjY2QyLCAweDI0ODYxNWY2LAorICAgIDB4NzgzY2Q5ZTksIDB4MWIzYjAwY2QsIDB4YmUzMzZiYTEsIDB4ZGQzNGIyODUsIDB4MmY1MmJiMzgsCisgICAgMHg0YzU1NjIxYywgMHhlOTVkMDk3MCwgMHg4YTVhZDA1NCwgMHg1MDI4OTE0ZSwgMHgzMzJmNDg2YSwKKyAgICAweDk2MjcyMzA2LCAweGY1MjBmYTIyLCAweDA3NDZmMzlmLCAweDY0NDEyYWJiLCAweGMxNDk0MWQ3LAorICAgIDB4YTI0ZTk4ZjMsIDB4ZmVmNDU0ZWMsIDB4OWRmMzhkYzgsIDB4MzhmYmU2YTQsIDB4NWJmYzNmODAsCisgICAgMHhhOTlhMzYzZCwgMHhjYTlkZWYxOSwgMHg2Zjk1ODQ3NSwgMHgwYzkyNWQ1MSwgMHg3NmIxM2VkNywKKyAgICAweDE1YjZlN2YzLCAweGIwYmU4YzlmLCAweGQzYjk1NWJiLCAweDIxZGY1YzA2LCAweDQyZDg4NTIyLAorICAgIDB4ZTdkMGVlNGUsIDB4ODRkNzM3NmEsIDB4ZDg2ZGZiNzUsIDB4YmI2YTIyNTEsIDB4MWU2MjQ5M2QsCisgICAgMHg3ZDY1OTAxOSwgMHg4ZjAzOTlhNCwgMHhlYzA0NDA4MCwgMHg0OTBjMmJlYywgMHgyYTBiZjJjOCwKKyAgICAweGYwNzliM2QyLCAweDkzN2U2YWY2LCAweDM2NzYwMTlhLCAweDU1NzFkOGJlLCAweGE3MTdkMTAzLAorICAgIDB4YzQxMDA4MjcsIDB4NjExODYzNGIsIDB4MDIxZmJhNmYsIDB4NWVhNTc2NzAsIDB4M2RhMmFmNTQsCisgICAgMHg5OGFhYzQzOCwgMHhmYmFkMWQxYywgMHgwOWNiMTRhMSwgMHg2YWNjY2Q4NSwgMHhjZmM0YTZlOSwKKyAgICAweGFjYzM3ZmNkLCAweGEwNTEyMjljLCAweGMzNTZmYmI4LCAweDY2NWU5MGQ0LCAweDA1NTk0OWYwLAorICAgIDB4ZjczZjQwNGQsIDB4OTQzODk5NjksIDB4MzEzMGYyMDUsIDB4NTIzNzJiMjEsIDB4MGU4ZGU3M2UsCisgICAgMHg2ZDhhM2UxYSwgMHhjODgyNTU3NiwgMHhhYjg1OGM1MiwgMHg1OWUzODVlZiwgMHgzYWU0NWNjYiwKKyAgICAweDlmZWMzN2E3LCAweGZjZWJlZTgzLCAweDI2OTlhZjk5LCAweDQ1OWU3NmJkLCAweGUwOTYxZGQxLAorICAgIDB4ODM5MWM0ZjUsIDB4NzFmN2NkNDgsIDB4MTJmMDE0NmMsIDB4YjdmODdmMDAsIDB4ZDRmZmE2MjQsCisgICAgMHg4ODQ1NmEzYiwgMHhlYjQyYjMxZiwgMHg0ZTRhZDg3MywgMHgyZDRkMDE1NywgMHhkZjJiMDhlYSwKKyAgICAweGJjMmNkMWNlLCAweDE5MjRiYWEyLCAweDdhMjM2Mzg2LCAweGVkNjI3ZGFlLCAweDhlNjVhNDhhLAorICAgIDB4MmI2ZGNmZTYsIDB4NDg2YTE2YzIsIDB4YmEwYzFmN2YsIDB4ZDkwYmM2NWIsIDB4N2MwM2FkMzcsCisgICAgMHgxZjA0NzQxMywgMHg0M2JlYjgwYywgMHgyMGI5NjEyOCwgMHg4NWIxMGE0NCwgMHhlNmI2ZDM2MCwKKyAgICAweDE0ZDBkYWRkLCAweDc3ZDcwM2Y5LCAweGQyZGY2ODk1LCAweGIxZDhiMWIxLCAweDZiYWFmMGFiLAorICAgIDB4MDhhZDI5OGYsIDB4YWRhNTQyZTMsIDB4Y2VhMjliYzcsIDB4M2NjNDkyN2EsIDB4NWZjMzRiNWUsCisgICAgMHhmYWNiMjAzMiwgMHg5OWNjZjkxNiwgMHhjNTc2MzUwOSwgMHhhNjcxZWMyZCwgMHgwMzc5ODc0MSwKKyAgICAweDYwN2U1ZTY1LCAweDkyMTg1N2Q4LCAweGYxMWY4ZWZjLCAweDU0MTdlNTkwLCAweDM3MTAzY2I0LAorICAgIDB4M2I4MjYxZTUsIDB4NTg4NWI4YzEsIDB4ZmQ4ZGQzYWQsIDB4OWU4YTBhODksIDB4NmNlYzAzMzQsCisgICAgMHgwZmViZGExMCwgMHhhYWUzYjE3YywgMHhjOWU0Njg1OCwgMHg5NTVlYTQ0NywgMHhmNjU5N2Q2MywKKyAgICAweDUzNTExNjBmLCAweDMwNTZjZjJiLCAweGMyMzBjNjk2LCAweGExMzcxZmIyLCAweDA0M2Y3NGRlLAorICAgIDB4NjczOGFkZmEsIDB4YmQ0YWVjZTAsIDB4ZGU0ZDM1YzQsIDB4N2I0NTVlYTgsIDB4MTg0Mjg3OGMsCisgICAgMHhlYTI0OGUzMSwgMHg4OTIzNTcxNSwgMHgyYzJiM2M3OSwgMHg0ZjJjZTU1ZCwgMHgxMzk2Mjk0MiwKKyAgICAweDcwOTFmMDY2LCAweGQ1OTk5YjBhLCAweGI2OWU0MjJlLCAweDQ0Zjg0YjkzLCAweDI3ZmY5MmI3LAorICAgIDB4ODJmN2Y5ZGIsIDB4ZTFmMDIwZmYsIDB4OWJkMzQzNzksIDB4ZjhkNDlhNWQsIDB4NWRkY2YxMzEsCisgICAgMHgzZWRiMjgxNSwgMHhjY2JkMjFhOCwgMHhhZmJhZjg4YywgMHgwYWIyOTNlMCwgMHg2OWI1NGFjNCwKKyAgICAweDM1MGY4NmRiLCAweDU2MDg1ZmZmLCAweGYzMDAzNDkzLCAweDkwMDdlZGI3LCAweDYyNjFlNDBhLAorICAgIDB4MDE2NjNkMmUsIDB4YTQ2ZTU2NDIsIDB4Yzc2OThmNjYsIDB4MWQxYmNlN2MsIDB4N2UxYzE3NTgsCisgICAgMHhkYjE0N2MzNCwgMHhiODEzYTUxMCwgMHg0YTc1YWNhZCwgMHgyOTcyNzU4OSwgMHg4YzdhMWVlNSwKKyAgICAweGVmN2RjN2MxLCAweGIzYzcwYmRlLCAweGQwYzBkMmZhLCAweDc1YzhiOTk2LCAweDE2Y2Y2MGIyLAorICAgIDB4ZTRhOTY5MGYsIDB4ODdhZWIwMmIsIDB4MjJhNmRiNDcsIDB4NDFhMTAyNjMsIDB4NGQzMzVmMzIsCisgICAgMHgyZTM0ODYxNiwgMHg4YjNjZWQ3YSwgMHhlODNiMzQ1ZSwgMHgxYTVkM2RlMywgMHg3OTVhZTRjNywKKyAgICAweGRjNTI4ZmFiLCAweGJmNTU1NjhmLCAweGUzZWY5YTkwLCAweDgwZTg0M2I0LCAweDI1ZTAyOGQ4LAorICAgIDB4NDZlN2YxZmMsIDB4YjQ4MWY4NDEsIDB4ZDc4NjIxNjUsIDB4NzI4ZTRhMDksIDB4MTE4OTkzMmQsCisgICAgMHhjYmZiZDIzNywgMHhhOGZjMGIxMywgMHgwZGY0NjA3ZiwgMHg2ZWYzYjk1YiwgMHg5Yzk1YjBlNiwKKyAgICAweGZmOTI2OWMyLCAweDVhOWEwMmFlLCAweDM5OWRkYjhhLCAweDY1MjcxNzk1LCAweDA2MjBjZWIxLAorICAgIDB4YTMyOGE1ZGQsIDB4YzAyZjdjZjksIDB4MzI0OTc1NDQsIDB4NTE0ZWFjNjAsIDB4ZjQ0NmM3MGMsCisgICAgMHg5NzQxMWUyOH0sCisgICB7MHgwMDAwMDAwMCwgMHgwMWI1ZmQxZCwgMHgwMzZiZmEzYSwgMHgwMmRlMDcyNywgMHgwNmQ3ZjQ3NCwKKyAgICAweDA3NjIwOTY5LCAweDA1YmMwZTRlLCAweDA0MDlmMzUzLCAweDBkYWZlOGU4LCAweDBjMWExNWY1LAorICAgIDB4MGVjNDEyZDIsIDB4MGY3MWVmY2YsIDB4MGI3ODFjOWMsIDB4MGFjZGUxODEsIDB4MDgxM2U2YTYsCisgICAgMHgwOWE2MWJiYiwgMHgxYjVmZDFkMCwgMHgxYWVhMmNjZCwgMHgxODM0MmJlYSwgMHgxOTgxZDZmNywKKyAgICAweDFkODgyNWE0LCAweDFjM2RkOGI5LCAweDFlZTNkZjllLCAweDFmNTYyMjgzLCAweDE2ZjAzOTM4LAorICAgIDB4MTc0NWM0MjUsIDB4MTU5YmMzMDIsIDB4MTQyZTNlMWYsIDB4MTAyN2NkNGMsIDB4MTE5MjMwNTEsCisgICAgMHgxMzRjMzc3NiwgMHgxMmY5Y2E2YiwgMHgzNmJmYTNhMCwgMHgzNzBhNWViZCwgMHgzNWQ0NTk5YSwKKyAgICAweDM0NjFhNDg3LCAweDMwNjg1N2Q0LCAweDMxZGRhYWM5LCAweDMzMDNhZGVlLCAweDMyYjY1MGYzLAorICAgIDB4M2IxMDRiNDgsIDB4M2FhNWI2NTUsIDB4Mzg3YmIxNzIsIDB4MzljZTRjNmYsIDB4M2RjN2JmM2MsCisgICAgMHgzYzcyNDIyMSwgMHgzZWFjNDUwNiwgMHgzZjE5YjgxYiwgMHgyZGUwNzI3MCwgMHgyYzU1OGY2ZCwKKyAgICAweDJlOGI4ODRhLCAweDJmM2U3NTU3LCAweDJiMzc4NjA0LCAweDJhODI3YjE5LCAweDI4NWM3YzNlLAorICAgIDB4MjllOTgxMjMsIDB4MjA0ZjlhOTgsIDB4MjFmYTY3ODUsIDB4MjMyNDYwYTIsIDB4MjI5MTlkYmYsCisgICAgMHgyNjk4NmVlYywgMHgyNzJkOTNmMSwgMHgyNWYzOTRkNiwgMHgyNDQ2NjljYiwgMHg2ZDdmNDc0MCwKKyAgICAweDZjY2FiYTVkLCAweDZlMTRiZDdhLCAweDZmYTE0MDY3LCAweDZiYThiMzM0LCAweDZhMWQ0ZTI5LAorICAgIDB4NjhjMzQ5MGUsIDB4Njk3NmI0MTMsIDB4NjBkMGFmYTgsIDB4NjE2NTUyYjUsIDB4NjNiYjU1OTIsCisgICAgMHg2MjBlYTg4ZiwgMHg2NjA3NWJkYywgMHg2N2IyYTZjMSwgMHg2NTZjYTFlNiwgMHg2NGQ5NWNmYiwKKyAgICAweDc2MjA5NjkwLCAweDc3OTU2YjhkLCAweDc1NGI2Y2FhLCAweDc0ZmU5MWI3LCAweDcwZjc2MmU0LAorICAgIDB4NzE0MjlmZjksIDB4NzM5Yzk4ZGUsIDB4NzIyOTY1YzMsIDB4N2I4ZjdlNzgsIDB4N2EzYTgzNjUsCisgICAgMHg3OGU0ODQ0MiwgMHg3OTUxNzk1ZiwgMHg3ZDU4OGEwYywgMHg3Y2VkNzcxMSwgMHg3ZTMzNzAzNiwKKyAgICAweDdmODY4ZDJiLCAweDViYzBlNGUwLCAweDVhNzUxOWZkLCAweDU4YWIxZWRhLCAweDU5MWVlM2M3LAorICAgIDB4NWQxNzEwOTQsIDB4NWNhMmVkODksIDB4NWU3Y2VhYWUsIDB4NWZjOTE3YjMsIDB4NTY2ZjBjMDgsCisgICAgMHg1N2RhZjExNSwgMHg1NTA0ZjYzMiwgMHg1NGIxMGIyZiwgMHg1MGI4Zjg3YywgMHg1MTBkMDU2MSwKKyAgICAweDUzZDMwMjQ2LCAweDUyNjZmZjViLCAweDQwOWYzNTMwLCAweDQxMmFjODJkLCAweDQzZjRjZjBhLAorICAgIDB4NDI0MTMyMTcsIDB4NDY0OGMxNDQsIDB4NDdmZDNjNTksIDB4NDUyMzNiN2UsIDB4NDQ5NmM2NjMsCisgICAgMHg0ZDMwZGRkOCwgMHg0Yzg1MjBjNSwgMHg0ZTViMjdlMiwgMHg0ZmVlZGFmZiwgMHg0YmU3MjlhYywKKyAgICAweDRhNTJkNGIxLCAweDQ4OGNkMzk2LCAweDQ5MzkyZThiLCAweGRhZmU4ZTgwLCAweGRiNGI3MzlkLAorICAgIDB4ZDk5NTc0YmEsIDB4ZDgyMDg5YTcsIDB4ZGMyOTdhZjQsIDB4ZGQ5Yzg3ZTksIDB4ZGY0MjgwY2UsCisgICAgMHhkZWY3N2RkMywgMHhkNzUxNjY2OCwgMHhkNmU0OWI3NSwgMHhkNDNhOWM1MiwgMHhkNThmNjE0ZiwKKyAgICAweGQxODY5MjFjLCAweGQwMzM2ZjAxLCAweGQyZWQ2ODI2LCAweGQzNTg5NTNiLCAweGMxYTE1ZjUwLAorICAgIDB4YzAxNGEyNGQsIDB4YzJjYWE1NmEsIDB4YzM3ZjU4NzcsIDB4Yzc3NmFiMjQsIDB4YzZjMzU2MzksCisgICAgMHhjNDFkNTExZSwgMHhjNWE4YWMwMywgMHhjYzBlYjdiOCwgMHhjZGJiNGFhNSwgMHhjZjY1NGQ4MiwKKyAgICAweGNlZDBiMDlmLCAweGNhZDk0M2NjLCAweGNiNmNiZWQxLCAweGM5YjJiOWY2LCAweGM4MDc0NGViLAorICAgIDB4ZWM0MTJkMjAsIDB4ZWRmNGQwM2QsIDB4ZWYyYWQ3MWEsIDB4ZWU5ZjJhMDcsIDB4ZWE5NmQ5NTQsCisgICAgMHhlYjIzMjQ0OSwgMHhlOWZkMjM2ZSwgMHhlODQ4ZGU3MywgMHhlMWVlYzVjOCwgMHhlMDViMzhkNSwKKyAgICAweGUyODUzZmYyLCAweGUzMzBjMmVmLCAweGU3MzkzMWJjLCAweGU2OGNjY2ExLCAweGU0NTJjYjg2LAorICAgIDB4ZTVlNzM2OWIsIDB4ZjcxZWZjZjAsIDB4ZjZhYjAxZWQsIDB4ZjQ3NTA2Y2EsIDB4ZjVjMGZiZDcsCisgICAgMHhmMWM5MDg4NCwgMHhmMDdjZjU5OSwgMHhmMmEyZjJiZSwgMHhmMzE3MGZhMywgMHhmYWIxMTQxOCwKKyAgICAweGZiMDRlOTA1LCAweGY5ZGFlZTIyLCAweGY4NmYxMzNmLCAweGZjNjZlMDZjLCAweGZkZDMxZDcxLAorICAgIDB4ZmYwZDFhNTYsIDB4ZmViOGU3NGIsIDB4Yjc4MWM5YzAsIDB4YjYzNDM0ZGQsIDB4YjRlYTMzZmEsCisgICAgMHhiNTVmY2VlNywgMHhiMTU2M2RiNCwgMHhiMGUzYzBhOSwgMHhiMjNkYzc4ZSwgMHhiMzg4M2E5MywKKyAgICAweGJhMmUyMTI4LCAweGJiOWJkYzM1LCAweGI5NDVkYjEyLCAweGI4ZjAyNjBmLCAweGJjZjlkNTVjLAorICAgIDB4YmQ0YzI4NDEsIDB4YmY5MjJmNjYsIDB4YmUyN2QyN2IsIDB4YWNkZTE4MTAsIDB4YWQ2YmU1MGQsCisgICAgMHhhZmI1ZTIyYSwgMHhhZTAwMWYzNywgMHhhYTA5ZWM2NCwgMHhhYmJjMTE3OSwgMHhhOTYyMTY1ZSwKKyAgICAweGE4ZDdlYjQzLCAweGExNzFmMGY4LCAweGEwYzQwZGU1LCAweGEyMWEwYWMyLCAweGEzYWZmN2RmLAorICAgIDB4YTdhNjA0OGMsIDB4YTYxM2Y5OTEsIDB4YTRjZGZlYjYsIDB4YTU3ODAzYWIsIDB4ODEzZTZhNjAsCisgICAgMHg4MDhiOTc3ZCwgMHg4MjU1OTA1YSwgMHg4M2UwNmQ0NywgMHg4N2U5OWUxNCwgMHg4NjVjNjMwOSwKKyAgICAweDg0ODI2NDJlLCAweDg1Mzc5OTMzLCAweDhjOTE4Mjg4LCAweDhkMjQ3Zjk1LCAweDhmZmE3OGIyLAorICAgIDB4OGU0Zjg1YWYsIDB4OGE0Njc2ZmMsIDB4OGJmMzhiZTEsIDB4ODkyZDhjYzYsIDB4ODg5ODcxZGIsCisgICAgMHg5YTYxYmJiMCwgMHg5YmQ0NDZhZCwgMHg5OTBhNDE4YSwgMHg5OGJmYmM5NywgMHg5Y2I2NGZjNCwKKyAgICAweDlkMDNiMmQ5LCAweDlmZGRiNWZlLCAweDllNjg0OGUzLCAweDk3Y2U1MzU4LCAweDk2N2JhZTQ1LAorICAgIDB4OTRhNWE5NjIsIDB4OTUxMDU0N2YsIDB4OTExOWE3MmMsIDB4OTBhYzVhMzEsIDB4OTI3MjVkMTYsCisgICAgMHg5M2M3YTAwYn0sCisgICB7MHgwMDAwMDAwMCwgMHg2ZThjMWI0MSwgMHhkZDE4MzY4MiwgMHhiMzk0MmRjMywgMHg2MTQxNmI0NSwKKyAgICAweDBmY2Q3MDA0LCAweGJjNTk1ZGM3LCAweGQyZDU0Njg2LCAweGMyODJkNjhhLCAweGFjMGVjZGNiLAorICAgIDB4MWY5YWUwMDgsIDB4NzExNmZiNDksIDB4YTNjM2JkY2YsIDB4Y2Q0ZmE2OGUsIDB4N2VkYjhiNGQsCisgICAgMHgxMDU3OTAwYywgMHg1ZTc0YWI1NSwgMHgzMGY4YjAxNCwgMHg4MzZjOWRkNywgMHhlZGUwODY5NiwKKyAgICAweDNmMzVjMDEwLCAweDUxYjlkYjUxLCAweGUyMmRmNjkyLCAweDhjYTFlZGQzLCAweDljZjY3ZGRmLAorICAgIDB4ZjI3YTY2OWUsIDB4NDFlZTRiNWQsIDB4MmY2MjUwMWMsIDB4ZmRiNzE2OWEsIDB4OTMzYjBkZGIsCisgICAgMHgyMGFmMjAxOCwgMHg0ZTIzM2I1OSwgMHhiY2U5NTZhYSwgMHhkMjY1NGRlYiwgMHg2MWYxNjAyOCwKKyAgICAweDBmN2Q3YjY5LCAweGRkYTgzZGVmLCAweGIzMjQyNmFlLCAweDAwYjAwYjZkLCAweDZlM2MxMDJjLAorICAgIDB4N2U2YjgwMjAsIDB4MTBlNzliNjEsIDB4YTM3M2I2YTIsIDB4Y2RmZmFkZTMsIDB4MWYyYWViNjUsCisgICAgMHg3MWE2ZjAyNCwgMHhjMjMyZGRlNywgMHhhY2JlYzZhNiwgMHhlMjlkZmRmZiwgMHg4YzExZTZiZSwKKyAgICAweDNmODVjYjdkLCAweDUxMDlkMDNjLCAweDgzZGM5NmJhLCAweGVkNTA4ZGZiLCAweDVlYzRhMDM4LAorICAgIDB4MzA0OGJiNzksIDB4MjAxZjJiNzUsIDB4NGU5MzMwMzQsIDB4ZmQwNzFkZjcsIDB4OTM4YjA2YjYsCisgICAgMHg0MTVlNDAzMCwgMHgyZmQyNWI3MSwgMHg5YzQ2NzZiMiwgMHhmMmNhNmRmMywgMHhhMmEzYWIxNSwKKyAgICAweGNjMmZiMDU0LCAweDdmYmI5ZDk3LCAweDExMzc4NmQ2LCAweGMzZTJjMDUwLCAweGFkNmVkYjExLAorICAgIDB4MWVmYWY2ZDIsIDB4NzA3NmVkOTMsIDB4NjAyMTdkOWYsIDB4MGVhZDY2ZGUsIDB4YmQzOTRiMWQsCisgICAgMHhkM2I1NTA1YywgMHgwMTYwMTZkYSwgMHg2ZmVjMGQ5YiwgMHhkYzc4MjA1OCwgMHhiMmY0M2IxOSwKKyAgICAweGZjZDcwMDQwLCAweDkyNWIxYjAxLCAweDIxY2YzNmMyLCAweDRmNDMyZDgzLCAweDlkOTY2YjA1LAorICAgIDB4ZjMxYTcwNDQsIDB4NDA4ZTVkODcsIDB4MmUwMjQ2YzYsIDB4M2U1NWQ2Y2EsIDB4NTBkOWNkOGIsCisgICAgMHhlMzRkZTA0OCwgMHg4ZGMxZmIwOSwgMHg1ZjE0YmQ4ZiwgMHgzMTk4YTZjZSwgMHg4MjBjOGIwZCwKKyAgICAweGVjODA5MDRjLCAweDFlNGFmZGJmLCAweDcwYzZlNmZlLCAweGMzNTJjYjNkLCAweGFkZGVkMDdjLAorICAgIDB4N2YwYjk2ZmEsIDB4MTE4NzhkYmIsIDB4YTIxM2EwNzgsIDB4Y2M5ZmJiMzksIDB4ZGNjODJiMzUsCisgICAgMHhiMjQ0MzA3NCwgMHgwMWQwMWRiNywgMHg2ZjVjMDZmNiwgMHhiZDg5NDA3MCwgMHhkMzA1NWIzMSwKKyAgICAweDYwOTE3NmYyLCAweDBlMWQ2ZGIzLCAweDQwM2U1NmVhLCAweDJlYjI0ZGFiLCAweDlkMjY2MDY4LAorICAgIDB4ZjNhYTdiMjksIDB4MjE3ZjNkYWYsIDB4NGZmMzI2ZWUsIDB4ZmM2NzBiMmQsIDB4OTJlYjEwNmMsCisgICAgMHg4MmJjODA2MCwgMHhlYzMwOWIyMSwgMHg1ZmE0YjZlMiwgMHgzMTI4YWRhMywgMHhlM2ZkZWIyNSwKKyAgICAweDhkNzFmMDY0LCAweDNlZTVkZGE3LCAweDUwNjljNmU2LCAweDllMzY1MDZiLCAweGYwYmE0YjJhLAorICAgIDB4NDMyZTY2ZTksIDB4MmRhMjdkYTgsIDB4ZmY3NzNiMmUsIDB4OTFmYjIwNmYsIDB4MjI2ZjBkYWMsCisgICAgMHg0Y2UzMTZlZCwgMHg1Y2I0ODZlMSwgMHgzMjM4OWRhMCwgMHg4MWFjYjA2MywgMHhlZjIwYWIyMiwKKyAgICAweDNkZjVlZGE0LCAweDUzNzlmNmU1LCAweGUwZWRkYjI2LCAweDhlNjFjMDY3LCAweGMwNDJmYjNlLAorICAgIDB4YWVjZWUwN2YsIDB4MWQ1YWNkYmMsIDB4NzNkNmQ2ZmQsIDB4YTEwMzkwN2IsIDB4Y2Y4ZjhiM2EsCisgICAgMHg3YzFiYTZmOSwgMHgxMjk3YmRiOCwgMHgwMmMwMmRiNCwgMHg2YzRjMzZmNSwgMHhkZmQ4MWIzNiwKKyAgICAweGIxNTQwMDc3LCAweDYzODE0NmYxLCAweDBkMGQ1ZGIwLCAweGJlOTk3MDczLCAweGQwMTU2YjMyLAorICAgIDB4MjJkZjA2YzEsIDB4NGM1MzFkODAsIDB4ZmZjNzMwNDMsIDB4OTE0YjJiMDIsIDB4NDM5ZTZkODQsCisgICAgMHgyZDEyNzZjNSwgMHg5ZTg2NWIwNiwgMHhmMDBhNDA0NywgMHhlMDVkZDA0YiwgMHg4ZWQxY2IwYSwKKyAgICAweDNkNDVlNmM5LCAweDUzYzlmZDg4LCAweDgxMWNiYjBlLCAweGVmOTBhMDRmLCAweDVjMDQ4ZDhjLAorICAgIDB4MzI4ODk2Y2QsIDB4N2NhYmFkOTQsIDB4MTIyN2I2ZDUsIDB4YTFiMzliMTYsIDB4Y2YzZjgwNTcsCisgICAgMHgxZGVhYzZkMSwgMHg3MzY2ZGQ5MCwgMHhjMGYyZjA1MywgMHhhZTdlZWIxMiwgMHhiZTI5N2IxZSwKKyAgICAweGQwYTU2MDVmLCAweDYzMzE0ZDljLCAweDBkYmQ1NmRkLCAweGRmNjgxMDViLCAweGIxZTQwYjFhLAorICAgIDB4MDI3MDI2ZDksIDB4NmNmYzNkOTgsIDB4M2M5NWZiN2UsIDB4NTIxOWUwM2YsIDB4ZTE4ZGNkZmMsCisgICAgMHg4ZjAxZDZiZCwgMHg1ZGQ0OTAzYiwgMHgzMzU4OGI3YSwgMHg4MGNjYTZiOSwgMHhlZTQwYmRmOCwKKyAgICAweGZlMTcyZGY0LCAweDkwOWIzNmI1LCAweDIzMGYxYjc2LCAweDRkODMwMDM3LCAweDlmNTY0NmIxLAorICAgIDB4ZjFkYTVkZjAsIDB4NDI0ZTcwMzMsIDB4MmNjMjZiNzIsIDB4NjJlMTUwMmIsIDB4MGM2ZDRiNmEsCisgICAgMHhiZmY5NjZhOSwgMHhkMTc1N2RlOCwgMHgwM2EwM2I2ZSwgMHg2ZDJjMjAyZiwgMHhkZWI4MGRlYywKKyAgICAweGIwMzQxNmFkLCAweGEwNjM4NmExLCAweGNlZWY5ZGUwLCAweDdkN2JiMDIzLCAweDEzZjdhYjYyLAorICAgIDB4YzEyMmVkZTQsIDB4YWZhZWY2YTUsIDB4MWMzYWRiNjYsIDB4NzJiNmMwMjcsIDB4ODA3Y2FkZDQsCisgICAgMHhlZWYwYjY5NSwgMHg1ZDY0OWI1NiwgMHgzM2U4ODAxNywgMHhlMTNkYzY5MSwgMHg4ZmIxZGRkMCwKKyAgICAweDNjMjVmMDEzLCAweDUyYTllYjUyLCAweDQyZmU3YjVlLCAweDJjNzI2MDFmLCAweDlmZTY0ZGRjLAorICAgIDB4ZjE2YTU2OWQsIDB4MjNiZjEwMWIsIDB4NGQzMzBiNWEsIDB4ZmVhNzI2OTksIDB4OTAyYjNkZDgsCisgICAgMHhkZTA4MDY4MSwgMHhiMDg0MWRjMCwgMHgwMzEwMzAwMywgMHg2ZDljMmI0MiwgMHhiZjQ5NmRjNCwKKyAgICAweGQxYzU3Njg1LCAweDYyNTE1YjQ2LCAweDBjZGQ0MDA3LCAweDFjOGFkMDBiLCAweDcyMDZjYjRhLAorICAgIDB4YzE5MmU2ODksIDB4YWYxZWZkYzgsIDB4N2RjYmJiNGUsIDB4MTM0N2EwMGYsIDB4YTBkMzhkY2MsCisgICAgMHhjZTVmOTY4ZH0sCisgICB7MHgwMDAwMDAwMCwgMHhlNzFkYTY5NywgMHgxNTRhNGI2ZiwgMHhmMjU3ZWRmOCwgMHgyYTk0OTZkZSwKKyAgICAweGNkODkzMDQ5LCAweDNmZGVkZGIxLCAweGQ4YzM3YjI2LCAweDU1MjkyZGJjLCAweGIyMzQ4YjJiLAorICAgIDB4NDA2MzY2ZDMsIDB4YTc3ZWMwNDQsIDB4N2ZiZGJiNjIsIDB4OThhMDFkZjUsIDB4NmFmN2YwMGQsCisgICAgMHg4ZGVhNTY5YSwgMHhhYTUyNWI3OCwgMHg0ZDRmZmRlZiwgMHhiZjE4MTAxNywgMHg1ODA1YjY4MCwKKyAgICAweDgwYzZjZGE2LCAweDY3ZGI2YjMxLCAweDk1OGM4NmM5LCAweDcyOTEyMDVlLCAweGZmN2I3NmM0LAorICAgIDB4MTg2NmQwNTMsIDB4ZWEzMTNkYWIsIDB4MGQyYzliM2MsIDB4ZDVlZmUwMWEsIDB4MzJmMjQ2OGQsCisgICAgMHhjMGE1YWI3NSwgMHgyN2I4MGRlMiwgMHg4ZmQ1YjBiMSwgMHg2OGM4MTYyNiwgMHg5YTlmZmJkZSwKKyAgICAweDdkODI1ZDQ5LCAweGE1NDEyNjZmLCAweDQyNWM4MGY4LCAweGIwMGI2ZDAwLCAweDU3MTZjYjk3LAorICAgIDB4ZGFmYzlkMGQsIDB4M2RlMTNiOWEsIDB4Y2ZiNmQ2NjIsIDB4MjhhYjcwZjUsIDB4ZjA2ODBiZDMsCisgICAgMHgxNzc1YWQ0NCwgMHhlNTIyNDBiYywgMHgwMjNmZTYyYiwgMHgyNTg3ZWJjOSwgMHhjMjlhNGQ1ZSwKKyAgICAweDMwY2RhMGE2LCAweGQ3ZDAwNjMxLCAweDBmMTM3ZDE3LCAweGU4MGVkYjgwLCAweDFhNTkzNjc4LAorICAgIDB4ZmQ0NDkwZWYsIDB4NzBhZWM2NzUsIDB4OTdiMzYwZTIsIDB4NjVlNDhkMWEsIDB4ODJmOTJiOGQsCisgICAgMHg1YTNhNTBhYiwgMHhiZDI3ZjYzYywgMHg0ZjcwMWJjNCwgMHhhODZkYmQ1MywgMHhjNGRhNjcyMywKKyAgICAweDIzYzdjMWI0LCAweGQxOTAyYzRjLCAweDM2OGQ4YWRiLCAweGVlNGVmMWZkLCAweDA5NTM1NzZhLAorICAgIDB4ZmIwNGJhOTIsIDB4MWMxOTFjMDUsIDB4OTFmMzRhOWYsIDB4NzZlZWVjMDgsIDB4ODRiOTAxZjAsCisgICAgMHg2M2E0YTc2NywgMHhiYjY3ZGM0MSwgMHg1YzdhN2FkNiwgMHhhZTJkOTcyZSwgMHg0OTMwMzFiOSwKKyAgICAweDZlODgzYzViLCAweDg5OTU5YWNjLCAweDdiYzI3NzM0LCAweDljZGZkMWEzLCAweDQ0MWNhYTg1LAorICAgIDB4YTMwMTBjMTIsIDB4NTE1NmUxZWEsIDB4YjY0YjQ3N2QsIDB4M2JhMTExZTcsIDB4ZGNiY2I3NzAsCisgICAgMHgyZWViNWE4OCwgMHhjOWY2ZmMxZiwgMHgxMTM1ODczOSwgMHhmNjI4MjFhZSwgMHgwNDdmY2M1NiwKKyAgICAweGUzNjI2YWMxLCAweDRiMGZkNzkyLCAweGFjMTI3MTA1LCAweDVlNDU5Y2ZkLCAweGI5NTgzYTZhLAorICAgIDB4NjE5YjQxNGMsIDB4ODY4NmU3ZGIsIDB4NzRkMTBhMjMsIDB4OTNjY2FjYjQsIDB4MWUyNmZhMmUsCisgICAgMHhmOTNiNWNiOSwgMHgwYjZjYjE0MSwgMHhlYzcxMTdkNiwgMHgzNGIyNmNmMCwgMHhkM2FmY2E2NywKKyAgICAweDIxZjgyNzlmLCAweGM2ZTU4MTA4LCAweGUxNWQ4Y2VhLCAweDA2NDAyYTdkLCAweGY0MTdjNzg1LAorICAgIDB4MTMwYTYxMTIsIDB4Y2JjOTFhMzQsIDB4MmNkNGJjYTMsIDB4ZGU4MzUxNWIsIDB4Mzk5ZWY3Y2MsCisgICAgMHhiNDc0YTE1NiwgMHg1MzY5MDdjMSwgMHhhMTNlZWEzOSwgMHg0NjIzNGNhZSwgMHg5ZWUwMzc4OCwKKyAgICAweDc5ZmQ5MTFmLCAweDhiYWE3Y2U3LCAweDZjYjdkYTcwLCAweDUyYzVjODA3LCAweGI1ZDg2ZTkwLAorICAgIDB4NDc4ZjgzNjgsIDB4YTA5MjI1ZmYsIDB4Nzg1MTVlZDksIDB4OWY0Y2Y4NGUsIDB4NmQxYjE1YjYsCisgICAgMHg4YTA2YjMyMSwgMHgwN2VjZTViYiwgMHhlMGYxNDMyYywgMHgxMmE2YWVkNCwgMHhmNWJiMDg0MywKKyAgICAweDJkNzg3MzY1LCAweGNhNjVkNWYyLCAweDM4MzIzODBhLCAweGRmMmY5ZTlkLCAweGY4OTc5MzdmLAorICAgIDB4MWY4YTM1ZTgsIDB4ZWRkZGQ4MTAsIDB4MGFjMDdlODcsIDB4ZDIwMzA1YTEsIDB4MzUxZWEzMzYsCisgICAgMHhjNzQ5NGVjZSwgMHgyMDU0ZTg1OSwgMHhhZGJlYmVjMywgMHg0YWEzMTg1NCwgMHhiOGY0ZjVhYywKKyAgICAweDVmZTk1MzNiLCAweDg3MmEyODFkLCAweDYwMzc4ZThhLCAweDkyNjA2MzcyLCAweDc1N2RjNWU1LAorICAgIDB4ZGQxMDc4YjYsIDB4M2EwZGRlMjEsIDB4Yzg1YTMzZDksIDB4MmY0Nzk1NGUsIDB4Zjc4NGVlNjgsCisgICAgMHgxMDk5NDhmZiwgMHhlMmNlYTUwNywgMHgwNWQzMDM5MCwgMHg4ODM5NTUwYSwgMHg2ZjI0ZjM5ZCwKKyAgICAweDlkNzMxZTY1LCAweDdhNmViOGYyLCAweGEyYWRjM2Q0LCAweDQ1YjA2NTQzLCAweGI3ZTc4OGJiLAorICAgIDB4NTBmYTJlMmMsIDB4Nzc0MjIzY2UsIDB4OTA1Zjg1NTksIDB4NjIwODY4YTEsIDB4ODUxNWNlMzYsCisgICAgMHg1ZGQ2YjUxMCwgMHhiYWNiMTM4NywgMHg0ODljZmU3ZiwgMHhhZjgxNThlOCwgMHgyMjZiMGU3MiwKKyAgICAweGM1NzZhOGU1LCAweDM3MjE0NTFkLCAweGQwM2NlMzhhLCAweDA4ZmY5OGFjLCAweGVmZTIzZTNiLAorICAgIDB4MWRiNWQzYzMsIDB4ZmFhODc1NTQsIDB4OTYxZmFmMjQsIDB4NzEwMjA5YjMsIDB4ODM1NWU0NGIsCisgICAgMHg2NDQ4NDJkYywgMHhiYzhiMzlmYSwgMHg1Yjk2OWY2ZCwgMHhhOWMxNzI5NSwgMHg0ZWRjZDQwMiwKKyAgICAweGMzMzY4Mjk4LCAweDI0MmIyNDBmLCAweGQ2N2NjOWY3LCAweDMxNjE2ZjYwLCAweGU5YTIxNDQ2LAorICAgIDB4MGViZmIyZDEsIDB4ZmNlODVmMjksIDB4MWJmNWY5YmUsIDB4M2M0ZGY0NWMsIDB4ZGI1MDUyY2IsCisgICAgMHgyOTA3YmYzMywgMHhjZTFhMTlhNCwgMHgxNmQ5NjI4MiwgMHhmMWM0YzQxNSwgMHgwMzkzMjllZCwKKyAgICAweGU0OGU4ZjdhLCAweDY5NjRkOWUwLCAweDhlNzk3Zjc3LCAweDdjMmU5MjhmLCAweDliMzMzNDE4LAorICAgIDB4NDNmMDRmM2UsIDB4YTRlZGU5YTksIDB4NTZiYTA0NTEsIDB4YjFhN2EyYzYsIDB4MTljYTFmOTUsCisgICAgMHhmZWQ3YjkwMiwgMHgwYzgwNTRmYSwgMHhlYjlkZjI2ZCwgMHgzMzVlODk0YiwgMHhkNDQzMmZkYywKKyAgICAweDI2MTRjMjI0LCAweGMxMDk2NGIzLCAweDRjZTMzMjI5LCAweGFiZmU5NGJlLCAweDU5YTk3OTQ2LAorICAgIDB4YmViNGRmZDEsIDB4NjY3N2E0ZjcsIDB4ODE2YTAyNjAsIDB4NzMzZGVmOTgsIDB4OTQyMDQ5MGYsCisgICAgMHhiMzk4NDRlZCwgMHg1NDg1ZTI3YSwgMHhhNmQyMGY4MiwgMHg0MWNmYTkxNSwgMHg5OTBjZDIzMywKKyAgICAweDdlMTE3NGE0LCAweDhjNDY5OTVjLCAweDZiNWIzZmNiLCAweGU2YjE2OTUxLCAweDAxYWNjZmM2LAorICAgIDB4ZjNmYjIyM2UsIDB4MTRlNjg0YTksIDB4Y2MyNWZmOGYsIDB4MmIzODU5MTgsIDB4ZDk2ZmI0ZTAsCisgICAgMHgzZTcyMTI3N30sCisgICB7MHgwMDAwMDAwMCwgMHhhNThiOTAwZSwgMHg5MDY2MjY1ZCwgMHgzNWVkYjY1MywgMHhmYmJkNGFmYiwKKyAgICAweDVlMzZkYWY1LCAweDZiZGI2Y2E2LCAweGNlNTBmY2E4LCAweDJjMGI5M2I3LCAweDg5ODAwM2I5LAorICAgIDB4YmM2ZGI1ZWEsIDB4MTllNjI1ZTQsIDB4ZDdiNmQ5NGMsIDB4NzIzZDQ5NDIsIDB4NDdkMGZmMTEsCisgICAgMHhlMjViNmYxZiwgMHg1ODE3Mjc2ZSwgMHhmZDljYjc2MCwgMHhjODcxMDEzMywgMHg2ZGZhOTEzZCwKKyAgICAweGEzYWE2ZDk1LCAweDA2MjFmZDliLCAweDMzY2M0YmM4LCAweDk2NDdkYmM2LCAweDc0MWNiNGQ5LAorICAgIDB4ZDE5NzI0ZDcsIDB4ZTQ3YTkyODQsIDB4NDFmMTAyOGEsIDB4OGZhMWZlMjIsIDB4MmEyYTZlMmMsCisgICAgMHgxZmM3ZDg3ZiwgMHhiYTRjNDg3MSwgMHhiMDJlNGVkYywgMHgxNWE1ZGVkMiwgMHgyMDQ4Njg4MSwKKyAgICAweDg1YzNmODhmLCAweDRiOTMwNDI3LCAweGVlMTg5NDI5LCAweGRiZjUyMjdhLCAweDdlN2ViMjc0LAorICAgIDB4OWMyNWRkNmIsIDB4MzlhZTRkNjUsIDB4MGM0M2ZiMzYsIDB4YTljODZiMzgsIDB4Njc5ODk3OTAsCisgICAgMHhjMjEzMDc5ZSwgMHhmN2ZlYjFjZCwgMHg1Mjc1MjFjMywgMHhlODM5NjliMiwgMHg0ZGIyZjliYywKKyAgICAweDc4NWY0ZmVmLCAweGRkZDRkZmUxLCAweDEzODQyMzQ5LCAweGI2MGZiMzQ3LCAweDgzZTIwNTE0LAorICAgIDB4MjY2OTk1MWEsIDB4YzQzMmZhMDUsIDB4NjFiOTZhMGIsIDB4NTQ1NGRjNTgsIDB4ZjFkZjRjNTYsCisgICAgMHgzZjhmYjBmZSwgMHg5YTA0MjBmMCwgMHhhZmU5OTZhMywgMHgwYTYyMDZhZCwgMHhiYjJkOWJmOSwKKyAgICAweDFlYTYwYmY3LCAweDJiNGJiZGE0LCAweDhlYzAyZGFhLCAweDQwOTBkMTAyLCAweGU1MWI0MTBjLAorICAgIDB4ZDBmNmY3NWYsIDB4NzU3ZDY3NTEsIDB4OTcyNjA4NGUsIDB4MzJhZDk4NDAsIDB4MDc0MDJlMTMsCisgICAgMHhhMmNiYmUxZCwgMHg2YzliNDJiNSwgMHhjOTEwZDJiYiwgMHhmY2ZkNjRlOCwgMHg1OTc2ZjRlNiwKKyAgICAweGUzM2FiYzk3LCAweDQ2YjEyYzk5LCAweDczNWM5YWNhLCAweGQ2ZDcwYWM0LCAweDE4ODdmNjZjLAorICAgIDB4YmQwYzY2NjIsIDB4ODhlMWQwMzEsIDB4MmQ2YTQwM2YsIDB4Y2YzMTJmMjAsIDB4NmFiYWJmMmUsCisgICAgMHg1ZjU3MDk3ZCwgMHhmYWRjOTk3MywgMHgzNDhjNjVkYiwgMHg5MTA3ZjVkNSwgMHhhNGVhNDM4NiwKKyAgICAweDAxNjFkMzg4LCAweDBiMDNkNTI1LCAweGFlODg0NTJiLCAweDliNjVmMzc4LCAweDNlZWU2Mzc2LAorICAgIDB4ZjBiZTlmZGUsIDB4NTUzNTBmZDAsIDB4NjBkOGI5ODMsIDB4YzU1MzI5OGQsIDB4MjcwODQ2OTIsCisgICAgMHg4MjgzZDY5YywgMHhiNzZlNjBjZiwgMHgxMmU1ZjBjMSwgMHhkY2I1MGM2OSwgMHg3OTNlOWM2NywKKyAgICAweDRjZDMyYTM0LCAweGU5NThiYTNhLCAweDUzMTRmMjRiLCAweGY2OWY2MjQ1LCAweGMzNzJkNDE2LAorICAgIDB4NjZmOTQ0MTgsIDB4YThhOWI4YjAsIDB4MGQyMjI4YmUsIDB4MzhjZjllZWQsIDB4OWQ0NDBlZTMsCisgICAgMHg3ZjFmNjFmYywgMHhkYTk0ZjFmMiwgMHhlZjc5NDdhMSwgMHg0YWYyZDdhZiwgMHg4NGEyMmIwNywKKyAgICAweDIxMjliYjA5LCAweDE0YzQwZDVhLCAweGIxNGY5ZDU0LCAweGFkMmEzMWIzLCAweDA4YTFhMWJkLAorICAgIDB4M2Q0YzE3ZWUsIDB4OThjNzg3ZTAsIDB4NTY5NzdiNDgsIDB4ZjMxY2ViNDYsIDB4YzZmMTVkMTUsCisgICAgMHg2MzdhY2QxYiwgMHg4MTIxYTIwNCwgMHgyNGFhMzIwYSwgMHgxMTQ3ODQ1OSwgMHhiNGNjMTQ1NywKKyAgICAweDdhOWNlOGZmLCAweGRmMTc3OGYxLCAweGVhZmFjZWEyLCAweDRmNzE1ZWFjLCAweGY1M2QxNmRkLAorICAgIDB4NTBiNjg2ZDMsIDB4NjU1YjMwODAsIDB4YzBkMGEwOGUsIDB4MGU4MDVjMjYsIDB4YWIwYmNjMjgsCisgICAgMHg5ZWU2N2E3YiwgMHgzYjZkZWE3NSwgMHhkOTM2ODU2YSwgMHg3Y2JkMTU2NCwgMHg0OTUwYTMzNywKKyAgICAweGVjZGIzMzM5LCAweDIyOGJjZjkxLCAweDg3MDA1ZjlmLCAweGIyZWRlOWNjLCAweDE3NjY3OWMyLAorICAgIDB4MWQwNDdmNmYsIDB4Yjg4ZmVmNjEsIDB4OGQ2MjU5MzIsIDB4MjhlOWM5M2MsIDB4ZTZiOTM1OTQsCisgICAgMHg0MzMyYTU5YSwgMHg3NmRmMTNjOSwgMHhkMzU0ODNjNywgMHgzMTBmZWNkOCwgMHg5NDg0N2NkNiwKKyAgICAweGExNjljYTg1LCAweDA0ZTI1YThiLCAweGNhYjJhNjIzLCAweDZmMzkzNjJkLCAweDVhZDQ4MDdlLAorICAgIDB4ZmY1ZjEwNzAsIDB4NDUxMzU4MDEsIDB4ZTA5OGM4MGYsIDB4ZDU3NTdlNWMsIDB4NzBmZWVlNTIsCisgICAgMHhiZWFlMTJmYSwgMHgxYjI1ODJmNCwgMHgyZWM4MzRhNywgMHg4YjQzYTRhOSwgMHg2OTE4Y2JiNiwKKyAgICAweGNjOTM1YmI4LCAweGY5N2VlZGViLCAweDVjZjU3ZGU1LCAweDkyYTU4MTRkLCAweDM3MmUxMTQzLAorICAgIDB4MDJjM2E3MTAsIDB4YTc0ODM3MWUsIDB4MTYwN2FhNGEsIDB4YjM4YzNhNDQsIDB4ODY2MThjMTcsCisgICAgMHgyM2VhMWMxOSwgMHhlZGJhZTBiMSwgMHg0ODMxNzBiZiwgMHg3ZGRjYzZlYywgMHhkODU3NTZlMiwKKyAgICAweDNhMGMzOWZkLCAweDlmODdhOWYzLCAweGFhNmExZmEwLCAweDBmZTE4ZmFlLCAweGMxYjE3MzA2LAorICAgIDB4NjQzYWUzMDgsIDB4NTFkNzU1NWIsIDB4ZjQ1Y2M1NTUsIDB4NGUxMDhkMjQsIDB4ZWI5YjFkMmEsCisgICAgMHhkZTc2YWI3OSwgMHg3YmZkM2I3NywgMHhiNWFkYzdkZiwgMHgxMDI2NTdkMSwgMHgyNWNiZTE4MiwKKyAgICAweDgwNDA3MThjLCAweDYyMWIxZTkzLCAweGM3OTA4ZTlkLCAweGYyN2QzOGNlLCAweDU3ZjZhOGMwLAorICAgIDB4OTlhNjU0NjgsIDB4M2MyZGM0NjYsIDB4MDljMDcyMzUsIDB4YWM0YmUyM2IsIDB4YTYyOWU0OTYsCisgICAgMHgwM2EyNzQ5OCwgMHgzNjRmYzJjYiwgMHg5M2M0NTJjNSwgMHg1ZDk0YWU2ZCwgMHhmODFmM2U2MywKKyAgICAweGNkZjI4ODMwLCAweDY4NzkxODNlLCAweDhhMjI3NzIxLCAweDJmYTllNzJmLCAweDFhNDQ1MTdjLAorICAgIDB4YmZjZmMxNzIsIDB4NzE5ZjNkZGEsIDB4ZDQxNGFkZDQsIDB4ZTFmOTFiODcsIDB4NDQ3MjhiODksCisgICAgMHhmZTNlYzNmOCwgMHg1YmI1NTNmNiwgMHg2ZTU4ZTVhNSwgMHhjYmQzNzVhYiwgMHgwNTgzODkwMywKKyAgICAweGEwMDgxOTBkLCAweDk1ZTVhZjVlLCAweDMwNmUzZjUwLCAweGQyMzU1MDRmLCAweDc3YmVjMDQxLAorICAgIDB4NDI1Mzc2MTIsIDB4ZTdkOGU2MWMsIDB4Mjk4ODFhYjQsIDB4OGMwMzhhYmEsIDB4YjllZTNjZTksCisgICAgMHgxYzY1YWNlN319OworCitsb2NhbCBjb25zdCB6X3dvcmRfdCBGQVIgY3JjX2JyYWlkX2JpZ190YWJsZVtdWzI1Nl0gPSB7CisgICB7MHgwMDAwMDAwMDAwMDAwMDAwLCAweDBlOTA4YmE1MDAwMDAwMDAsIDB4NWQyNjY2OTAwMDAwMDAwMCwKKyAgICAweDUzYjZlZDM1MDAwMDAwMDAsIDB4ZmI0YWJkZmIwMDAwMDAwMCwgMHhmNWRhMzY1ZTAwMDAwMDAwLAorICAgIDB4YTY2Y2RiNmIwMDAwMDAwMCwgMHhhOGZjNTBjZTAwMDAwMDAwLCAweGI3OTMwYjJjMDAwMDAwMDAsCisgICAgMHhiOTAzODA4OTAwMDAwMDAwLCAweGVhYjU2ZGJjMDAwMDAwMDAsIDB4ZTQyNWU2MTkwMDAwMDAwMCwKKyAgICAweDRjZDliNmQ3MDAwMDAwMDAsIDB4NDI0OTNkNzIwMDAwMDAwMCwgMHgxMWZmZDA0NzAwMDAwMDAwLAorICAgIDB4MWY2ZjViZTIwMDAwMDAwMCwgMHg2ZTI3MTc1ODAwMDAwMDAwLCAweDYwYjc5Y2ZkMDAwMDAwMDAsCisgICAgMHgzMzAxNzFjODAwMDAwMDAwLCAweDNkOTFmYTZkMDAwMDAwMDAsIDB4OTU2ZGFhYTMwMDAwMDAwMCwKKyAgICAweDliZmQyMTA2MDAwMDAwMDAsIDB4Yzg0YmNjMzMwMDAwMDAwMCwgMHhjNmRiNDc5NjAwMDAwMDAwLAorICAgIDB4ZDliNDFjNzQwMDAwMDAwMCwgMHhkNzI0OTdkMTAwMDAwMDAwLCAweDg0OTI3YWU0MDAwMDAwMDAsCisgICAgMHg4YTAyZjE0MTAwMDAwMDAwLCAweDIyZmVhMThmMDAwMDAwMDAsIDB4MmM2ZTJhMmEwMDAwMDAwMCwKKyAgICAweDdmZDhjNzFmMDAwMDAwMDAsIDB4NzE0ODRjYmEwMDAwMDAwMCwgMHhkYzRlMmViMDAwMDAwMDAwLAorICAgIDB4ZDJkZWE1MTUwMDAwMDAwMCwgMHg4MTY4NDgyMDAwMDAwMDAwLCAweDhmZjhjMzg1MDAwMDAwMDAsCisgICAgMHgyNzA0OTM0YjAwMDAwMDAwLCAweDI5OTQxOGVlMDAwMDAwMDAsIDB4N2EyMmY1ZGIwMDAwMDAwMCwKKyAgICAweDc0YjI3ZTdlMDAwMDAwMDAsIDB4NmJkZDI1OWMwMDAwMDAwMCwgMHg2NTRkYWUzOTAwMDAwMDAwLAorICAgIDB4MzZmYjQzMGMwMDAwMDAwMCwgMHgzODZiYzhhOTAwMDAwMDAwLCAweDkwOTc5ODY3MDAwMDAwMDAsCisgICAgMHg5ZTA3MTNjMjAwMDAwMDAwLCAweGNkYjFmZWY3MDAwMDAwMDAsIDB4YzMyMTc1NTIwMDAwMDAwMCwKKyAgICAweGIyNjkzOWU4MDAwMDAwMDAsIDB4YmNmOWIyNGQwMDAwMDAwMCwgMHhlZjRmNWY3ODAwMDAwMDAwLAorICAgIDB4ZTFkZmQ0ZGQwMDAwMDAwMCwgMHg0OTIzODQxMzAwMDAwMDAwLCAweDQ3YjMwZmI2MDAwMDAwMDAsCisgICAgMHgxNDA1ZTI4MzAwMDAwMDAwLCAweDFhOTU2OTI2MDAwMDAwMDAsIDB4MDVmYTMyYzQwMDAwMDAwMCwKKyAgICAweDBiNmFiOTYxMDAwMDAwMDAsIDB4NThkYzU0NTQwMDAwMDAwMCwgMHg1NjRjZGZmMTAwMDAwMDAwLAorICAgIDB4ZmViMDhmM2YwMDAwMDAwMCwgMHhmMDIwMDQ5YTAwMDAwMDAwLCAweGEzOTZlOWFmMDAwMDAwMDAsCisgICAgMHhhZDA2NjIwYTAwMDAwMDAwLCAweGY5OWIyZGJiMDAwMDAwMDAsIDB4ZjcwYmE2MWUwMDAwMDAwMCwKKyAgICAweGE0YmQ0YjJiMDAwMDAwMDAsIDB4YWEyZGMwOGUwMDAwMDAwMCwgMHgwMmQxOTA0MDAwMDAwMDAwLAorICAgIDB4MGM0MTFiZTUwMDAwMDAwMCwgMHg1ZmY3ZjZkMDAwMDAwMDAwLCAweDUxNjc3ZDc1MDAwMDAwMDAsCisgICAgMHg0ZTA4MjY5NzAwMDAwMDAwLCAweDQwOThhZDMyMDAwMDAwMDAsIDB4MTMyZTQwMDcwMDAwMDAwMCwKKyAgICAweDFkYmVjYmEyMDAwMDAwMDAsIDB4YjU0MjliNmMwMDAwMDAwMCwgMHhiYmQyMTBjOTAwMDAwMDAwLAorICAgIDB4ZTg2NGZkZmMwMDAwMDAwMCwgMHhlNmY0NzY1OTAwMDAwMDAwLCAweDk3YmMzYWUzMDAwMDAwMDAsCisgICAgMHg5OTJjYjE0NjAwMDAwMDAwLCAweGNhOWE1YzczMDAwMDAwMDAsIDB4YzQwYWQ3ZDYwMDAwMDAwMCwKKyAgICAweDZjZjY4NzE4MDAwMDAwMDAsIDB4NjI2NjBjYmQwMDAwMDAwMCwgMHgzMWQwZTE4ODAwMDAwMDAwLAorICAgIDB4M2Y0MDZhMmQwMDAwMDAwMCwgMHgyMDJmMzFjZjAwMDAwMDAwLCAweDJlYmZiYTZhMDAwMDAwMDAsCisgICAgMHg3ZDA5NTc1ZjAwMDAwMDAwLCAweDczOTlkY2ZhMDAwMDAwMDAsIDB4ZGI2NThjMzQwMDAwMDAwMCwKKyAgICAweGQ1ZjUwNzkxMDAwMDAwMDAsIDB4ODY0M2VhYTQwMDAwMDAwMCwgMHg4OGQzNjEwMTAwMDAwMDAwLAorICAgIDB4MjVkNTAzMGIwMDAwMDAwMCwgMHgyYjQ1ODhhZTAwMDAwMDAwLCAweDc4ZjM2NTliMDAwMDAwMDAsCisgICAgMHg3NjYzZWUzZTAwMDAwMDAwLCAweGRlOWZiZWYwMDAwMDAwMDAsIDB4ZDAwZjM1NTUwMDAwMDAwMCwKKyAgICAweDgzYjlkODYwMDAwMDAwMDAsIDB4OGQyOTUzYzUwMDAwMDAwMCwgMHg5MjQ2MDgyNzAwMDAwMDAwLAorICAgIDB4OWNkNjgzODIwMDAwMDAwMCwgMHhjZjYwNmViNzAwMDAwMDAwLCAweGMxZjBlNTEyMDAwMDAwMDAsCisgICAgMHg2OTBjYjVkYzAwMDAwMDAwLCAweDY3OWMzZTc5MDAwMDAwMDAsIDB4MzQyYWQzNGMwMDAwMDAwMCwKKyAgICAweDNhYmE1OGU5MDAwMDAwMDAsIDB4NGJmMjE0NTMwMDAwMDAwMCwgMHg0NTYyOWZmNjAwMDAwMDAwLAorICAgIDB4MTZkNDcyYzMwMDAwMDAwMCwgMHgxODQ0Zjk2NjAwMDAwMDAwLCAweGIwYjhhOWE4MDAwMDAwMDAsCisgICAgMHhiZTI4MjIwZDAwMDAwMDAwLCAweGVkOWVjZjM4MDAwMDAwMDAsIDB4ZTMwZTQ0OWQwMDAwMDAwMCwKKyAgICAweGZjNjExZjdmMDAwMDAwMDAsIDB4ZjJmMTk0ZGEwMDAwMDAwMCwgMHhhMTQ3NzllZjAwMDAwMDAwLAorICAgIDB4YWZkN2YyNGEwMDAwMDAwMCwgMHgwNzJiYTI4NDAwMDAwMDAwLCAweDA5YmIyOTIxMDAwMDAwMDAsCisgICAgMHg1YTBkYzQxNDAwMDAwMDAwLCAweDU0OWQ0ZmIxMDAwMDAwMDAsIDB4YjMzMTJhYWQwMDAwMDAwMCwKKyAgICAweGJkYTFhMTA4MDAwMDAwMDAsIDB4ZWUxNzRjM2QwMDAwMDAwMCwgMHhlMDg3Yzc5ODAwMDAwMDAwLAorICAgIDB4NDg3Yjk3NTYwMDAwMDAwMCwgMHg0NmViMWNmMzAwMDAwMDAwLCAweDE1NWRmMWM2MDAwMDAwMDAsCisgICAgMHgxYmNkN2E2MzAwMDAwMDAwLCAweDA0YTIyMTgxMDAwMDAwMDAsIDB4MGEzMmFhMjQwMDAwMDAwMCwKKyAgICAweDU5ODQ0NzExMDAwMDAwMDAsIDB4NTcxNGNjYjQwMDAwMDAwMCwgMHhmZmU4OWM3YTAwMDAwMDAwLAorICAgIDB4ZjE3ODE3ZGYwMDAwMDAwMCwgMHhhMmNlZmFlYTAwMDAwMDAwLCAweGFjNWU3MTRmMDAwMDAwMDAsCisgICAgMHhkZDE2M2RmNTAwMDAwMDAwLCAweGQzODZiNjUwMDAwMDAwMDAsIDB4ODAzMDViNjUwMDAwMDAwMCwKKyAgICAweDhlYTBkMGMwMDAwMDAwMDAsIDB4MjY1YzgwMGUwMDAwMDAwMCwgMHgyOGNjMGJhYjAwMDAwMDAwLAorICAgIDB4N2I3YWU2OWUwMDAwMDAwMCwgMHg3NWVhNmQzYjAwMDAwMDAwLCAweDZhODUzNmQ5MDAwMDAwMDAsCisgICAgMHg2NDE1YmQ3YzAwMDAwMDAwLCAweDM3YTM1MDQ5MDAwMDAwMDAsIDB4MzkzM2RiZWMwMDAwMDAwMCwKKyAgICAweDkxY2Y4YjIyMDAwMDAwMDAsIDB4OWY1ZjAwODcwMDAwMDAwMCwgMHhjY2U5ZWRiMjAwMDAwMDAwLAorICAgIDB4YzI3OTY2MTcwMDAwMDAwMCwgMHg2ZjdmMDQxZDAwMDAwMDAwLCAweDYxZWY4ZmI4MDAwMDAwMDAsCisgICAgMHgzMjU5NjI4ZDAwMDAwMDAwLCAweDNjYzllOTI4MDAwMDAwMDAsIDB4OTQzNWI5ZTYwMDAwMDAwMCwKKyAgICAweDlhYTUzMjQzMDAwMDAwMDAsIDB4YzkxM2RmNzYwMDAwMDAwMCwgMHhjNzgzNTRkMzAwMDAwMDAwLAorICAgIDB4ZDhlYzBmMzEwMDAwMDAwMCwgMHhkNjdjODQ5NDAwMDAwMDAwLCAweDg1Y2E2OWExMDAwMDAwMDAsCisgICAgMHg4YjVhZTIwNDAwMDAwMDAwLCAweDIzYTZiMmNhMDAwMDAwMDAsIDB4MmQzNjM5NmYwMDAwMDAwMCwKKyAgICAweDdlODBkNDVhMDAwMDAwMDAsIDB4NzAxMDVmZmYwMDAwMDAwMCwgMHgwMTU4MTM0NTAwMDAwMDAwLAorICAgIDB4MGZjODk4ZTAwMDAwMDAwMCwgMHg1YzdlNzVkNTAwMDAwMDAwLCAweDUyZWVmZTcwMDAwMDAwMDAsCisgICAgMHhmYTEyYWViZTAwMDAwMDAwLCAweGY0ODIyNTFiMDAwMDAwMDAsIDB4YTczNGM4MmUwMDAwMDAwMCwKKyAgICAweGE5YTQ0MzhiMDAwMDAwMDAsIDB4YjZjYjE4NjkwMDAwMDAwMCwgMHhiODViOTNjYzAwMDAwMDAwLAorICAgIDB4ZWJlZDdlZjkwMDAwMDAwMCwgMHhlNTdkZjU1YzAwMDAwMDAwLCAweDRkODFhNTkyMDAwMDAwMDAsCisgICAgMHg0MzExMmUzNzAwMDAwMDAwLCAweDEwYTdjMzAyMDAwMDAwMDAsIDB4MWUzNzQ4YTcwMDAwMDAwMCwKKyAgICAweDRhYWEwNzE2MDAwMDAwMDAsIDB4NDQzYThjYjMwMDAwMDAwMCwgMHgxNzhjNjE4NjAwMDAwMDAwLAorICAgIDB4MTkxY2VhMjMwMDAwMDAwMCwgMHhiMWUwYmFlZDAwMDAwMDAwLCAweGJmNzAzMTQ4MDAwMDAwMDAsCisgICAgMHhlY2M2ZGM3ZDAwMDAwMDAwLCAweGUyNTY1N2Q4MDAwMDAwMDAsIDB4ZmQzOTBjM2EwMDAwMDAwMCwKKyAgICAweGYzYTk4NzlmMDAwMDAwMDAsIDB4YTAxZjZhYWEwMDAwMDAwMCwgMHhhZThmZTEwZjAwMDAwMDAwLAorICAgIDB4MDY3M2IxYzEwMDAwMDAwMCwgMHgwOGUzM2E2NDAwMDAwMDAwLCAweDViNTVkNzUxMDAwMDAwMDAsCisgICAgMHg1NWM1NWNmNDAwMDAwMDAwLCAweDI0OGQxMDRlMDAwMDAwMDAsIDB4MmExZDliZWIwMDAwMDAwMCwKKyAgICAweDc5YWI3NmRlMDAwMDAwMDAsIDB4NzczYmZkN2IwMDAwMDAwMCwgMHhkZmM3YWRiNTAwMDAwMDAwLAorICAgIDB4ZDE1NzI2MTAwMDAwMDAwMCwgMHg4MmUxY2IyNTAwMDAwMDAwLCAweDhjNzE0MDgwMDAwMDAwMDAsCisgICAgMHg5MzFlMWI2MjAwMDAwMDAwLCAweDlkOGU5MGM3MDAwMDAwMDAsIDB4Y2UzODdkZjIwMDAwMDAwMCwKKyAgICAweGMwYThmNjU3MDAwMDAwMDAsIDB4Njg1NGE2OTkwMDAwMDAwMCwgMHg2NmM0MmQzYzAwMDAwMDAwLAorICAgIDB4MzU3MmMwMDkwMDAwMDAwMCwgMHgzYmUyNGJhYzAwMDAwMDAwLCAweDk2ZTQyOWE2MDAwMDAwMDAsCisgICAgMHg5ODc0YTIwMzAwMDAwMDAwLCAweGNiYzI0ZjM2MDAwMDAwMDAsIDB4YzU1MmM0OTMwMDAwMDAwMCwKKyAgICAweDZkYWU5NDVkMDAwMDAwMDAsIDB4NjMzZTFmZjgwMDAwMDAwMCwgMHgzMDg4ZjJjZDAwMDAwMDAwLAorICAgIDB4M2UxODc5NjgwMDAwMDAwMCwgMHgyMTc3MjI4YTAwMDAwMDAwLCAweDJmZTdhOTJmMDAwMDAwMDAsCisgICAgMHg3YzUxNDQxYTAwMDAwMDAwLCAweDcyYzFjZmJmMDAwMDAwMDAsIDB4ZGEzZDlmNzEwMDAwMDAwMCwKKyAgICAweGQ0YWQxNGQ0MDAwMDAwMDAsIDB4ODcxYmY5ZTEwMDAwMDAwMCwgMHg4OThiNzI0NDAwMDAwMDAwLAorICAgIDB4ZjhjMzNlZmUwMDAwMDAwMCwgMHhmNjUzYjU1YjAwMDAwMDAwLCAweGE1ZTU1ODZlMDAwMDAwMDAsCisgICAgMHhhYjc1ZDNjYjAwMDAwMDAwLCAweDAzODk4MzA1MDAwMDAwMDAsIDB4MGQxOTA4YTAwMDAwMDAwMCwKKyAgICAweDVlYWZlNTk1MDAwMDAwMDAsIDB4NTAzZjZlMzAwMDAwMDAwMCwgMHg0ZjUwMzVkMjAwMDAwMDAwLAorICAgIDB4NDFjMGJlNzcwMDAwMDAwMCwgMHgxMjc2NTM0MjAwMDAwMDAwLCAweDFjZTZkOGU3MDAwMDAwMDAsCisgICAgMHhiNDFhODgyOTAwMDAwMDAwLCAweGJhOGEwMzhjMDAwMDAwMDAsIDB4ZTkzY2VlYjkwMDAwMDAwMCwKKyAgICAweGU3YWM2NTFjMDAwMDAwMDB9LAorICAgezB4MDAwMDAwMDAwMDAwMDAwMCwgMHg5N2E2MWRlNzAwMDAwMDAwLCAweDZmNGI0YTE1MDAwMDAwMDAsCisgICAgMHhmOGVkNTdmMjAwMDAwMDAwLCAweGRlOTY5NDJhMDAwMDAwMDAsIDB4NDkzMDg5Y2QwMDAwMDAwMCwKKyAgICAweGIxZGRkZTNmMDAwMDAwMDAsIDB4MjY3YmMzZDgwMDAwMDAwMCwgMHhiYzJkMjk1NTAwMDAwMDAwLAorICAgIDB4MmI4YjM0YjIwMDAwMDAwMCwgMHhkMzY2NjM0MDAwMDAwMDAwLCAweDQ0YzA3ZWE3MDAwMDAwMDAsCisgICAgMHg2MmJiYmQ3ZjAwMDAwMDAwLCAweGY1MWRhMDk4MDAwMDAwMDAsIDB4MGRmMGY3NmEwMDAwMDAwMCwKKyAgICAweDlhNTZlYThkMDAwMDAwMDAsIDB4Nzg1YjUyYWEwMDAwMDAwMCwgMHhlZmZkNGY0ZDAwMDAwMDAwLAorICAgIDB4MTcxMDE4YmYwMDAwMDAwMCwgMHg4MGI2MDU1ODAwMDAwMDAwLCAweGE2Y2RjNjgwMDAwMDAwMDAsCisgICAgMHgzMTZiZGI2NzAwMDAwMDAwLCAweGM5ODY4Yzk1MDAwMDAwMDAsIDB4NWUyMDkxNzIwMDAwMDAwMCwKKyAgICAweGM0NzY3YmZmMDAwMDAwMDAsIDB4NTNkMDY2MTgwMDAwMDAwMCwgMHhhYjNkMzFlYTAwMDAwMDAwLAorICAgIDB4M2M5YjJjMGQwMDAwMDAwMCwgMHgxYWUwZWZkNTAwMDAwMDAwLCAweDhkNDZmMjMyMDAwMDAwMDAsCisgICAgMHg3NWFiYTVjMDAwMDAwMDAwLCAweGUyMGRiODI3MDAwMDAwMDAsIDB4YjFiMGQ1OGYwMDAwMDAwMCwKKyAgICAweDI2MTZjODY4MDAwMDAwMDAsIDB4ZGVmYjlmOWEwMDAwMDAwMCwgMHg0OTVkODI3ZDAwMDAwMDAwLAorICAgIDB4NmYyNjQxYTUwMDAwMDAwMCwgMHhmODgwNWM0MjAwMDAwMDAwLCAweDAwNmQwYmIwMDAwMDAwMDAsCisgICAgMHg5N2NiMTY1NzAwMDAwMDAwLCAweDBkOWRmY2RhMDAwMDAwMDAsIDB4OWEzYmUxM2QwMDAwMDAwMCwKKyAgICAweDYyZDZiNmNmMDAwMDAwMDAsIDB4ZjU3MGFiMjgwMDAwMDAwMCwgMHhkMzBiNjhmMDAwMDAwMDAwLAorICAgIDB4NDRhZDc1MTcwMDAwMDAwMCwgMHhiYzQwMjJlNTAwMDAwMDAwLCAweDJiZTYzZjAyMDAwMDAwMDAsCisgICAgMHhjOWViODcyNTAwMDAwMDAwLCAweDVlNGQ5YWMyMDAwMDAwMDAsIDB4YTZhMGNkMzAwMDAwMDAwMCwKKyAgICAweDMxMDZkMGQ3MDAwMDAwMDAsIDB4MTc3ZDEzMGYwMDAwMDAwMCwgMHg4MGRiMGVlODAwMDAwMDAwLAorICAgIDB4NzgzNjU5MWEwMDAwMDAwMCwgMHhlZjkwNDRmZDAwMDAwMDAwLCAweDc1YzZhZTcwMDAwMDAwMDAsCisgICAgMHhlMjYwYjM5NzAwMDAwMDAwLCAweDFhOGRlNDY1MDAwMDAwMDAsIDB4OGQyYmY5ODIwMDAwMDAwMCwKKyAgICAweGFiNTAzYTVhMDAwMDAwMDAsIDB4M2NmNjI3YmQwMDAwMDAwMCwgMHhjNDFiNzA0ZjAwMDAwMDAwLAorICAgIDB4NTNiZDZkYTgwMDAwMDAwMCwgMHgyMzY3ZGFjNDAwMDAwMDAwLCAweGI0YzFjNzIzMDAwMDAwMDAsCisgICAgMHg0YzJjOTBkMTAwMDAwMDAwLCAweGRiOGE4ZDM2MDAwMDAwMDAsIDB4ZmRmMTRlZWUwMDAwMDAwMCwKKyAgICAweDZhNTc1MzA5MDAwMDAwMDAsIDB4OTJiYTA0ZmIwMDAwMDAwMCwgMHgwNTFjMTkxYzAwMDAwMDAwLAorICAgIDB4OWY0YWYzOTEwMDAwMDAwMCwgMHgwOGVjZWU3NjAwMDAwMDAwLCAweGYwMDFiOTg0MDAwMDAwMDAsCisgICAgMHg2N2E3YTQ2MzAwMDAwMDAwLCAweDQxZGM2N2JiMDAwMDAwMDAsIDB4ZDY3YTdhNWMwMDAwMDAwMCwKKyAgICAweDJlOTcyZGFlMDAwMDAwMDAsIDB4YjkzMTMwNDkwMDAwMDAwMCwgMHg1YjNjODg2ZTAwMDAwMDAwLAorICAgIDB4Y2M5YTk1ODkwMDAwMDAwMCwgMHgzNDc3YzI3YjAwMDAwMDAwLCAweGEzZDFkZjljMDAwMDAwMDAsCisgICAgMHg4NWFhMWM0NDAwMDAwMDAwLCAweDEyMGMwMWEzMDAwMDAwMDAsIDB4ZWFlMTU2NTEwMDAwMDAwMCwKKyAgICAweDdkNDc0YmI2MDAwMDAwMDAsIDB4ZTcxMWExM2IwMDAwMDAwMCwgMHg3MGI3YmNkYzAwMDAwMDAwLAorICAgIDB4ODg1YWViMmUwMDAwMDAwMCwgMHgxZmZjZjZjOTAwMDAwMDAwLCAweDM5ODczNTExMDAwMDAwMDAsCisgICAgMHhhZTIxMjhmNjAwMDAwMDAwLCAweDU2Y2M3ZjA0MDAwMDAwMDAsIDB4YzE2YTYyZTMwMDAwMDAwMCwKKyAgICAweDkyZDcwZjRiMDAwMDAwMDAsIDB4MDU3MTEyYWMwMDAwMDAwMCwgMHhmZDljNDU1ZTAwMDAwMDAwLAorICAgIDB4NmEzYTU4YjkwMDAwMDAwMCwgMHg0YzQxOWI2MTAwMDAwMDAwLCAweGRiZTc4Njg2MDAwMDAwMDAsCisgICAgMHgyMzBhZDE3NDAwMDAwMDAwLCAweGI0YWNjYzkzMDAwMDAwMDAsIDB4MmVmYTI2MWUwMDAwMDAwMCwKKyAgICAweGI5NWMzYmY5MDAwMDAwMDAsIDB4NDFiMTZjMGIwMDAwMDAwMCwgMHhkNjE3NzFlYzAwMDAwMDAwLAorICAgIDB4ZjA2Y2IyMzQwMDAwMDAwMCwgMHg2N2NhYWZkMzAwMDAwMDAwLCAweDlmMjdmODIxMDAwMDAwMDAsCisgICAgMHgwODgxZTVjNjAwMDAwMDAwLCAweGVhOGM1ZGUxMDAwMDAwMDAsIDB4N2QyYTQwMDYwMDAwMDAwMCwKKyAgICAweDg1YzcxN2Y0MDAwMDAwMDAsIDB4MTI2MTBhMTMwMDAwMDAwMCwgMHgzNDFhYzljYjAwMDAwMDAwLAorICAgIDB4YTNiY2Q0MmMwMDAwMDAwMCwgMHg1YjUxODNkZTAwMDAwMDAwLCAweGNjZjc5ZTM5MDAwMDAwMDAsCisgICAgMHg1NmExNzRiNDAwMDAwMDAwLCAweGMxMDc2OTUzMDAwMDAwMDAsIDB4MzllYTNlYTEwMDAwMDAwMCwKKyAgICAweGFlNGMyMzQ2MDAwMDAwMDAsIDB4ODgzN2UwOWUwMDAwMDAwMCwgMHgxZjkxZmQ3OTAwMDAwMDAwLAorICAgIDB4ZTc3Y2FhOGIwMDAwMDAwMCwgMHg3MGRhYjc2YzAwMDAwMDAwLCAweDA3YzhjNTUyMDAwMDAwMDAsCisgICAgMHg5MDZlZDhiNTAwMDAwMDAwLCAweDY4ODM4ZjQ3MDAwMDAwMDAsIDB4ZmYyNTkyYTAwMDAwMDAwMCwKKyAgICAweGQ5NWU1MTc4MDAwMDAwMDAsIDB4NGVmODRjOWYwMDAwMDAwMCwgMHhiNjE1MWI2ZDAwMDAwMDAwLAorICAgIDB4MjFiMzA2OGEwMDAwMDAwMCwgMHhiYmU1ZWMwNzAwMDAwMDAwLCAweDJjNDNmMWUwMDAwMDAwMDAsCisgICAgMHhkNGFlYTYxMjAwMDAwMDAwLCAweDQzMDhiYmY1MDAwMDAwMDAsIDB4NjU3Mzc4MmQwMDAwMDAwMCwKKyAgICAweGYyZDU2NWNhMDAwMDAwMDAsIDB4MGEzODMyMzgwMDAwMDAwMCwgMHg5ZDllMmZkZjAwMDAwMDAwLAorICAgIDB4N2Y5Mzk3ZjgwMDAwMDAwMCwgMHhlODM1OGExZjAwMDAwMDAwLCAweDEwZDhkZGVkMDAwMDAwMDAsCisgICAgMHg4NzdlYzAwYTAwMDAwMDAwLCAweGExMDUwM2QyMDAwMDAwMDAsIDB4MzZhMzFlMzUwMDAwMDAwMCwKKyAgICAweGNlNGU0OWM3MDAwMDAwMDAsIDB4NTllODU0MjAwMDAwMDAwMCwgMHhjM2JlYmVhZDAwMDAwMDAwLAorICAgIDB4NTQxOGEzNGEwMDAwMDAwMCwgMHhhY2Y1ZjRiODAwMDAwMDAwLCAweDNiNTNlOTVmMDAwMDAwMDAsCisgICAgMHgxZDI4MmE4NzAwMDAwMDAwLCAweDhhOGUzNzYwMDAwMDAwMDAsIDB4NzI2MzYwOTIwMDAwMDAwMCwKKyAgICAweGU1YzU3ZDc1MDAwMDAwMDAsIDB4YjY3ODEwZGQwMDAwMDAwMCwgMHgyMWRlMGQzYTAwMDAwMDAwLAorICAgIDB4ZDkzMzVhYzgwMDAwMDAwMCwgMHg0ZTk1NDcyZjAwMDAwMDAwLCAweDY4ZWU4NGY3MDAwMDAwMDAsCisgICAgMHhmZjQ4OTkxMDAwMDAwMDAwLCAweDA3YTVjZWUyMDAwMDAwMDAsIDB4OTAwM2QzMDUwMDAwMDAwMCwKKyAgICAweDBhNTUzOTg4MDAwMDAwMDAsIDB4OWRmMzI0NmYwMDAwMDAwMCwgMHg2NTFlNzM5ZDAwMDAwMDAwLAorICAgIDB4ZjJiODZlN2EwMDAwMDAwMCwgMHhkNGMzYWRhMjAwMDAwMDAwLCAweDQzNjViMDQ1MDAwMDAwMDAsCisgICAgMHhiYjg4ZTdiNzAwMDAwMDAwLCAweDJjMmVmYTUwMDAwMDAwMDAsIDB4Y2UyMzQyNzcwMDAwMDAwMCwKKyAgICAweDU5ODU1ZjkwMDAwMDAwMDAsIDB4YTE2ODA4NjIwMDAwMDAwMCwgMHgzNmNlMTU4NTAwMDAwMDAwLAorICAgIDB4MTBiNWQ2NWQwMDAwMDAwMCwgMHg4NzEzY2JiYTAwMDAwMDAwLCAweDdmZmU5YzQ4MDAwMDAwMDAsCisgICAgMHhlODU4ODFhZjAwMDAwMDAwLCAweDcyMGU2YjIyMDAwMDAwMDAsIDB4ZTVhODc2YzUwMDAwMDAwMCwKKyAgICAweDFkNDUyMTM3MDAwMDAwMDAsIDB4OGFlMzNjZDAwMDAwMDAwMCwgMHhhYzk4ZmYwODAwMDAwMDAwLAorICAgIDB4M2IzZWUyZWYwMDAwMDAwMCwgMHhjM2QzYjUxZDAwMDAwMDAwLCAweDU0NzVhOGZhMDAwMDAwMDAsCisgICAgMHgyNGFmMWY5NjAwMDAwMDAwLCAweGIzMDkwMjcxMDAwMDAwMDAsIDB4NGJlNDU1ODMwMDAwMDAwMCwKKyAgICAweGRjNDI0ODY0MDAwMDAwMDAsIDB4ZmEzOThiYmMwMDAwMDAwMCwgMHg2ZDlmOTY1YjAwMDAwMDAwLAorICAgIDB4OTU3MmMxYTkwMDAwMDAwMCwgMHgwMmQ0ZGM0ZTAwMDAwMDAwLCAweDk4ODIzNmMzMDAwMDAwMDAsCisgICAgMHgwZjI0MmIyNDAwMDAwMDAwLCAweGY3Yzk3Y2Q2MDAwMDAwMDAsIDB4NjA2ZjYxMzEwMDAwMDAwMCwKKyAgICAweDQ2MTRhMmU5MDAwMDAwMDAsIDB4ZDFiMmJmMGUwMDAwMDAwMCwgMHgyOTVmZThmYzAwMDAwMDAwLAorICAgIDB4YmVmOWY1MWIwMDAwMDAwMCwgMHg1Y2Y0NGQzYzAwMDAwMDAwLCAweGNiNTI1MGRiMDAwMDAwMDAsCisgICAgMHgzM2JmMDcyOTAwMDAwMDAwLCAweGE0MTkxYWNlMDAwMDAwMDAsIDB4ODI2MmQ5MTYwMDAwMDAwMCwKKyAgICAweDE1YzRjNGYxMDAwMDAwMDAsIDB4ZWQyOTkzMDMwMDAwMDAwMCwgMHg3YThmOGVlNDAwMDAwMDAwLAorICAgIDB4ZTBkOTY0NjkwMDAwMDAwMCwgMHg3NzdmNzk4ZTAwMDAwMDAwLCAweDhmOTIyZTdjMDAwMDAwMDAsCisgICAgMHgxODM0MzM5YjAwMDAwMDAwLCAweDNlNGZmMDQzMDAwMDAwMDAsIDB4YTllOWVkYTQwMDAwMDAwMCwKKyAgICAweDUxMDRiYTU2MDAwMDAwMDAsIDB4YzZhMmE3YjEwMDAwMDAwMCwgMHg5NTFmY2ExOTAwMDAwMDAwLAorICAgIDB4MDJiOWQ3ZmUwMDAwMDAwMCwgMHhmYTU0ODAwYzAwMDAwMDAwLCAweDZkZjI5ZGViMDAwMDAwMDAsCisgICAgMHg0Yjg5NWUzMzAwMDAwMDAwLCAweGRjMmY0M2Q0MDAwMDAwMDAsIDB4MjRjMjE0MjYwMDAwMDAwMCwKKyAgICAweGIzNjQwOWMxMDAwMDAwMDAsIDB4MjkzMmUzNGMwMDAwMDAwMCwgMHhiZTk0ZmVhYjAwMDAwMDAwLAorICAgIDB4NDY3OWE5NTkwMDAwMDAwMCwgMHhkMWRmYjRiZTAwMDAwMDAwLCAweGY3YTQ3NzY2MDAwMDAwMDAsCisgICAgMHg2MDAyNmE4MTAwMDAwMDAwLCAweDk4ZWYzZDczMDAwMDAwMDAsIDB4MGY0OTIwOTQwMDAwMDAwMCwKKyAgICAweGVkNDQ5OGIzMDAwMDAwMDAsIDB4N2FlMjg1NTQwMDAwMDAwMCwgMHg4MjBmZDJhNjAwMDAwMDAwLAorICAgIDB4MTVhOWNmNDEwMDAwMDAwMCwgMHgzM2QyMGM5OTAwMDAwMDAwLCAweGE0NzQxMTdlMDAwMDAwMDAsCisgICAgMHg1Yzk5NDY4YzAwMDAwMDAwLCAweGNiM2Y1YjZiMDAwMDAwMDAsIDB4NTE2OWIxZTYwMDAwMDAwMCwKKyAgICAweGM2Y2ZhYzAxMDAwMDAwMDAsIDB4M2UyMmZiZjMwMDAwMDAwMCwgMHhhOTg0ZTYxNDAwMDAwMDAwLAorICAgIDB4OGZmZjI1Y2MwMDAwMDAwMCwgMHgxODU5MzgyYjAwMDAwMDAwLCAweGUwYjQ2ZmQ5MDAwMDAwMDAsCisgICAgMHg3NzEyNzIzZTAwMDAwMDAwfSwKKyAgIHsweDAwMDAwMDAwMDAwMDAwMDAsIDB4NDExYjhjNmUwMDAwMDAwMCwgMHg4MjM2MThkZDAwMDAwMDAwLAorICAgIDB4YzMyZDk0YjMwMDAwMDAwMCwgMHg0NTZiNDE2MTAwMDAwMDAwLCAweDA0NzBjZDBmMDAwMDAwMDAsCisgICAgMHhjNzVkNTliYzAwMDAwMDAwLCAweDg2NDZkNWQyMDAwMDAwMDAsIDB4OGFkNjgyYzIwMDAwMDAwMCwKKyAgICAweGNiY2QwZWFjMDAwMDAwMDAsIDB4MDhlMDlhMWYwMDAwMDAwMCwgMHg0OWZiMTY3MTAwMDAwMDAwLAorICAgIDB4Y2ZiZGMzYTMwMDAwMDAwMCwgMHg4ZWE2NGZjZDAwMDAwMDAwLCAweDRkOGJkYjdlMDAwMDAwMDAsCisgICAgMHgwYzkwNTcxMDAwMDAwMDAwLCAweDU1YWI3NDVlMDAwMDAwMDAsIDB4MTRiMGY4MzAwMDAwMDAwMCwKKyAgICAweGQ3OWQ2YzgzMDAwMDAwMDAsIDB4OTY4NmUwZWQwMDAwMDAwMCwgMHgxMGMwMzUzZjAwMDAwMDAwLAorICAgIDB4NTFkYmI5NTEwMDAwMDAwMCwgMHg5MmY2MmRlMjAwMDAwMDAwLCAweGQzZWRhMThjMDAwMDAwMDAsCisgICAgMHhkZjdkZjY5YzAwMDAwMDAwLCAweDllNjY3YWYyMDAwMDAwMDAsIDB4NWQ0YmVlNDEwMDAwMDAwMCwKKyAgICAweDFjNTA2MjJmMDAwMDAwMDAsIDB4OWExNmI3ZmQwMDAwMDAwMCwgMHhkYjBkM2I5MzAwMDAwMDAwLAorICAgIDB4MTgyMGFmMjAwMDAwMDAwMCwgMHg1OTNiMjM0ZTAwMDAwMDAwLCAweGFhNTZlOWJjMDAwMDAwMDAsCisgICAgMHhlYjRkNjVkMjAwMDAwMDAwLCAweDI4NjBmMTYxMDAwMDAwMDAsIDB4Njk3YjdkMGYwMDAwMDAwMCwKKyAgICAweGVmM2RhOGRkMDAwMDAwMDAsIDB4YWUyNjI0YjMwMDAwMDAwMCwgMHg2ZDBiYjAwMDAwMDAwMDAwLAorICAgIDB4MmMxMDNjNmUwMDAwMDAwMCwgMHgyMDgwNmI3ZTAwMDAwMDAwLCAweDYxOWJlNzEwMDAwMDAwMDAsCisgICAgMHhhMmI2NzNhMzAwMDAwMDAwLCAweGUzYWRmZmNkMDAwMDAwMDAsIDB4NjVlYjJhMWYwMDAwMDAwMCwKKyAgICAweDI0ZjBhNjcxMDAwMDAwMDAsIDB4ZTdkZDMyYzIwMDAwMDAwMCwgMHhhNmM2YmVhYzAwMDAwMDAwLAorICAgIDB4ZmZmZDlkZTIwMDAwMDAwMCwgMHhiZWU2MTE4YzAwMDAwMDAwLCAweDdkY2I4NTNmMDAwMDAwMDAsCisgICAgMHgzY2QwMDk1MTAwMDAwMDAwLCAweGJhOTZkYzgzMDAwMDAwMDAsIDB4ZmI4ZDUwZWQwMDAwMDAwMCwKKyAgICAweDM4YTBjNDVlMDAwMDAwMDAsIDB4NzliYjQ4MzAwMDAwMDAwMCwgMHg3NTJiMWYyMDAwMDAwMDAwLAorICAgIDB4MzQzMDkzNGUwMDAwMDAwMCwgMHhmNzFkMDdmZDAwMDAwMDAwLCAweGI2MDY4YjkzMDAwMDAwMDAsCisgICAgMHgzMDQwNWU0MTAwMDAwMDAwLCAweDcxNWJkMjJmMDAwMDAwMDAsIDB4YjI3NjQ2OWMwMDAwMDAwMCwKKyAgICAweGYzNmRjYWYyMDAwMDAwMDAsIDB4MTVhYmEzYTIwMDAwMDAwMCwgMHg1NGIwMmZjYzAwMDAwMDAwLAorICAgIDB4OTc5ZGJiN2YwMDAwMDAwMCwgMHhkNjg2MzcxMTAwMDAwMDAwLCAweDUwYzBlMmMzMDAwMDAwMDAsCisgICAgMHgxMWRiNmVhZDAwMDAwMDAwLCAweGQyZjZmYTFlMDAwMDAwMDAsIDB4OTNlZDc2NzAwMDAwMDAwMCwKKyAgICAweDlmN2QyMTYwMDAwMDAwMDAsIDB4ZGU2NmFkMGUwMDAwMDAwMCwgMHgxZDRiMzliZDAwMDAwMDAwLAorICAgIDB4NWM1MGI1ZDMwMDAwMDAwMCwgMHhkYTE2NjAwMTAwMDAwMDAwLCAweDliMGRlYzZmMDAwMDAwMDAsCisgICAgMHg1ODIwNzhkYzAwMDAwMDAwLCAweDE5M2JmNGIyMDAwMDAwMDAsIDB4NDAwMGQ3ZmMwMDAwMDAwMCwKKyAgICAweDAxMWI1YjkyMDAwMDAwMDAsIDB4YzIzNmNmMjEwMDAwMDAwMCwgMHg4MzJkNDM0ZjAwMDAwMDAwLAorICAgIDB4MDU2Yjk2OWQwMDAwMDAwMCwgMHg0NDcwMWFmMzAwMDAwMDAwLCAweDg3NWQ4ZTQwMDAwMDAwMDAsCisgICAgMHhjNjQ2MDIyZTAwMDAwMDAwLCAweGNhZDY1NTNlMDAwMDAwMDAsIDB4OGJjZGQ5NTAwMDAwMDAwMCwKKyAgICAweDQ4ZTA0ZGUzMDAwMDAwMDAsIDB4MDlmYmMxOGQwMDAwMDAwMCwgMHg4ZmJkMTQ1ZjAwMDAwMDAwLAorICAgIDB4Y2VhNjk4MzEwMDAwMDAwMCwgMHgwZDhiMGM4MjAwMDAwMDAwLCAweDRjOTA4MGVjMDAwMDAwMDAsCisgICAgMHhiZmZkNGExZTAwMDAwMDAwLCAweGZlZTZjNjcwMDAwMDAwMDAsIDB4M2RjYjUyYzMwMDAwMDAwMCwKKyAgICAweDdjZDBkZWFkMDAwMDAwMDAsIDB4ZmE5NjBiN2YwMDAwMDAwMCwgMHhiYjhkODcxMTAwMDAwMDAwLAorICAgIDB4NzhhMDEzYTIwMDAwMDAwMCwgMHgzOWJiOWZjYzAwMDAwMDAwLCAweDM1MmJjOGRjMDAwMDAwMDAsCisgICAgMHg3NDMwNDRiMjAwMDAwMDAwLCAweGI3MWRkMDAxMDAwMDAwMDAsIDB4ZjYwNjVjNmYwMDAwMDAwMCwKKyAgICAweDcwNDA4OWJkMDAwMDAwMDAsIDB4MzE1YjA1ZDMwMDAwMDAwMCwgMHhmMjc2OTE2MDAwMDAwMDAwLAorICAgIDB4YjM2ZDFkMGUwMDAwMDAwMCwgMHhlYTU2M2U0MDAwMDAwMDAwLCAweGFiNGRiMjJlMDAwMDAwMDAsCisgICAgMHg2ODYwMjY5ZDAwMDAwMDAwLCAweDI5N2JhYWYzMDAwMDAwMDAsIDB4YWYzZDdmMjEwMDAwMDAwMCwKKyAgICAweGVlMjZmMzRmMDAwMDAwMDAsIDB4MmQwYjY3ZmMwMDAwMDAwMCwgMHg2YzEwZWI5MjAwMDAwMDAwLAorICAgIDB4NjA4MGJjODIwMDAwMDAwMCwgMHgyMTliMzBlYzAwMDAwMDAwLCAweGUyYjZhNDVmMDAwMDAwMDAsCisgICAgMHhhM2FkMjgzMTAwMDAwMDAwLCAweDI1ZWJmZGUzMDAwMDAwMDAsIDB4NjRmMDcxOGQwMDAwMDAwMCwKKyAgICAweGE3ZGRlNTNlMDAwMDAwMDAsIDB4ZTZjNjY5NTAwMDAwMDAwMCwgMHg2YjUwMzY5ZTAwMDAwMDAwLAorICAgIDB4MmE0YmJhZjAwMDAwMDAwMCwgMHhlOTY2MmU0MzAwMDAwMDAwLCAweGE4N2RhMjJkMDAwMDAwMDAsCisgICAgMHgyZTNiNzdmZjAwMDAwMDAwLCAweDZmMjBmYjkxMDAwMDAwMDAsIDB4YWMwZDZmMjIwMDAwMDAwMCwKKyAgICAweGVkMTZlMzRjMDAwMDAwMDAsIDB4ZTE4NmI0NWMwMDAwMDAwMCwgMHhhMDlkMzgzMjAwMDAwMDAwLAorICAgIDB4NjNiMGFjODEwMDAwMDAwMCwgMHgyMmFiMjBlZjAwMDAwMDAwLCAweGE0ZWRmNTNkMDAwMDAwMDAsCisgICAgMHhlNWY2Nzk1MzAwMDAwMDAwLCAweDI2ZGJlZGUwMDAwMDAwMDAsIDB4NjdjMDYxOGUwMDAwMDAwMCwKKyAgICAweDNlZmI0MmMwMDAwMDAwMDAsIDB4N2ZlMGNlYWUwMDAwMDAwMCwgMHhiY2NkNWExZDAwMDAwMDAwLAorICAgIDB4ZmRkNmQ2NzMwMDAwMDAwMCwgMHg3YjkwMDNhMTAwMDAwMDAwLCAweDNhOGI4ZmNmMDAwMDAwMDAsCisgICAgMHhmOWE2MWI3YzAwMDAwMDAwLCAweGI4YmQ5NzEyMDAwMDAwMDAsIDB4YjQyZGMwMDIwMDAwMDAwMCwKKyAgICAweGY1MzY0YzZjMDAwMDAwMDAsIDB4MzYxYmQ4ZGYwMDAwMDAwMCwgMHg3NzAwNTRiMTAwMDAwMDAwLAorICAgIDB4ZjE0NjgxNjMwMDAwMDAwMCwgMHhiMDVkMGQwZDAwMDAwMDAwLCAweDczNzA5OWJlMDAwMDAwMDAsCisgICAgMHgzMjZiMTVkMDAwMDAwMDAwLCAweGMxMDZkZjIyMDAwMDAwMDAsIDB4ODAxZDUzNGMwMDAwMDAwMCwKKyAgICAweDQzMzBjN2ZmMDAwMDAwMDAsIDB4MDIyYjRiOTEwMDAwMDAwMCwgMHg4NDZkOWU0MzAwMDAwMDAwLAorICAgIDB4YzU3NjEyMmQwMDAwMDAwMCwgMHgwNjViODY5ZTAwMDAwMDAwLCAweDQ3NDAwYWYwMDAwMDAwMDAsCisgICAgMHg0YmQwNWRlMDAwMDAwMDAwLCAweDBhY2JkMThlMDAwMDAwMDAsIDB4YzllNjQ1M2QwMDAwMDAwMCwKKyAgICAweDg4ZmRjOTUzMDAwMDAwMDAsIDB4MGViYjFjODEwMDAwMDAwMCwgMHg0ZmEwOTBlZjAwMDAwMDAwLAorICAgIDB4OGM4ZDA0NWMwMDAwMDAwMCwgMHhjZDk2ODgzMjAwMDAwMDAwLCAweDk0YWRhYjdjMDAwMDAwMDAsCisgICAgMHhkNWI2MjcxMjAwMDAwMDAwLCAweDE2OWJiM2ExMDAwMDAwMDAsIDB4NTc4MDNmY2YwMDAwMDAwMCwKKyAgICAweGQxYzZlYTFkMDAwMDAwMDAsIDB4OTBkZDY2NzMwMDAwMDAwMCwgMHg1M2YwZjJjMDAwMDAwMDAwLAorICAgIDB4MTJlYjdlYWUwMDAwMDAwMCwgMHgxZTdiMjliZTAwMDAwMDAwLCAweDVmNjBhNWQwMDAwMDAwMDAsCisgICAgMHg5YzRkMzE2MzAwMDAwMDAwLCAweGRkNTZiZDBkMDAwMDAwMDAsIDB4NWIxMDY4ZGYwMDAwMDAwMCwKKyAgICAweDFhMGJlNGIxMDAwMDAwMDAsIDB4ZDkyNjcwMDIwMDAwMDAwMCwgMHg5ODNkZmM2YzAwMDAwMDAwLAorICAgIDB4N2VmYjk1M2MwMDAwMDAwMCwgMHgzZmUwMTk1MjAwMDAwMDAwLCAweGZjY2Q4ZGUxMDAwMDAwMDAsCisgICAgMHhiZGQ2MDE4ZjAwMDAwMDAwLCAweDNiOTBkNDVkMDAwMDAwMDAsIDB4N2E4YjU4MzMwMDAwMDAwMCwKKyAgICAweGI5YTZjYzgwMDAwMDAwMDAsIDB4ZjhiZDQwZWUwMDAwMDAwMCwgMHhmNDJkMTdmZTAwMDAwMDAwLAorICAgIDB4YjUzNjliOTAwMDAwMDAwMCwgMHg3NjFiMGYyMzAwMDAwMDAwLCAweDM3MDA4MzRkMDAwMDAwMDAsCisgICAgMHhiMTQ2NTY5ZjAwMDAwMDAwLCAweGYwNWRkYWYxMDAwMDAwMDAsIDB4MzM3MDRlNDIwMDAwMDAwMCwKKyAgICAweDcyNmJjMjJjMDAwMDAwMDAsIDB4MmI1MGUxNjIwMDAwMDAwMCwgMHg2YTRiNmQwYzAwMDAwMDAwLAorICAgIDB4YTk2NmY5YmYwMDAwMDAwMCwgMHhlODdkNzVkMTAwMDAwMDAwLCAweDZlM2JhMDAzMDAwMDAwMDAsCisgICAgMHgyZjIwMmM2ZDAwMDAwMDAwLCAweGVjMGRiOGRlMDAwMDAwMDAsIDB4YWQxNjM0YjAwMDAwMDAwMCwKKyAgICAweGExODY2M2EwMDAwMDAwMDAsIDB4ZTA5ZGVmY2UwMDAwMDAwMCwgMHgyM2IwN2I3ZDAwMDAwMDAwLAorICAgIDB4NjJhYmY3MTMwMDAwMDAwMCwgMHhlNGVkMjJjMTAwMDAwMDAwLCAweGE1ZjZhZWFmMDAwMDAwMDAsCisgICAgMHg2NmRiM2ExYzAwMDAwMDAwLCAweDI3YzBiNjcyMDAwMDAwMDAsIDB4ZDRhZDdjODAwMDAwMDAwMCwKKyAgICAweDk1YjZmMGVlMDAwMDAwMDAsIDB4NTY5YjY0NWQwMDAwMDAwMCwgMHgxNzgwZTgzMzAwMDAwMDAwLAorICAgIDB4OTFjNjNkZTEwMDAwMDAwMCwgMHhkMGRkYjE4ZjAwMDAwMDAwLCAweDEzZjAyNTNjMDAwMDAwMDAsCisgICAgMHg1MmViYTk1MjAwMDAwMDAwLCAweDVlN2JmZTQyMDAwMDAwMDAsIDB4MWY2MDcyMmMwMDAwMDAwMCwKKyAgICAweGRjNGRlNjlmMDAwMDAwMDAsIDB4OWQ1NjZhZjEwMDAwMDAwMCwgMHgxYjEwYmYyMzAwMDAwMDAwLAorICAgIDB4NWEwYjMzNGQwMDAwMDAwMCwgMHg5OTI2YTdmZTAwMDAwMDAwLCAweGQ4M2QyYjkwMDAwMDAwMDAsCisgICAgMHg4MTA2MDhkZTAwMDAwMDAwLCAweGMwMWQ4NGIwMDAwMDAwMDAsIDB4MDMzMDEwMDMwMDAwMDAwMCwKKyAgICAweDQyMmI5YzZkMDAwMDAwMDAsIDB4YzQ2ZDQ5YmYwMDAwMDAwMCwgMHg4NTc2YzVkMTAwMDAwMDAwLAorICAgIDB4NDY1YjUxNjIwMDAwMDAwMCwgMHgwNzQwZGQwYzAwMDAwMDAwLCAweDBiZDA4YTFjMDAwMDAwMDAsCisgICAgMHg0YWNiMDY3MjAwMDAwMDAwLCAweDg5ZTY5MmMxMDAwMDAwMDAsIDB4YzhmZDFlYWYwMDAwMDAwMCwKKyAgICAweDRlYmJjYjdkMDAwMDAwMDAsIDB4MGZhMDQ3MTMwMDAwMDAwMCwgMHhjYzhkZDNhMDAwMDAwMDAwLAorICAgIDB4OGQ5NjVmY2UwMDAwMDAwMH0sCisgICB7MHgwMDAwMDAwMDAwMDAwMDAwLCAweDFkZmRiNTAxMDAwMDAwMDAsIDB4M2FmYTZiMDMwMDAwMDAwMCwKKyAgICAweDI3MDdkZTAyMDAwMDAwMDAsIDB4NzRmNGQ3MDYwMDAwMDAwMCwgMHg2OTA5NjIwNzAwMDAwMDAwLAorICAgIDB4NGUwZWJjMDUwMDAwMDAwMCwgMHg1M2YzMDkwNDAwMDAwMDAwLCAweGU4ZThhZjBkMDAwMDAwMDAsCisgICAgMHhmNTE1MWEwYzAwMDAwMDAwLCAweGQyMTJjNDBlMDAwMDAwMDAsIDB4Y2ZlZjcxMGYwMDAwMDAwMCwKKyAgICAweDljMWM3ODBiMDAwMDAwMDAsIDB4ODFlMWNkMGEwMDAwMDAwMCwgMHhhNmU2MTMwODAwMDAwMDAwLAorICAgIDB4YmIxYmE2MDkwMDAwMDAwMCwgMHhkMGQxNWYxYjAwMDAwMDAwLCAweGNkMmNlYTFhMDAwMDAwMDAsCisgICAgMHhlYTJiMzQxODAwMDAwMDAwLCAweGY3ZDY4MTE5MDAwMDAwMDAsIDB4YTQyNTg4MWQwMDAwMDAwMCwKKyAgICAweGI5ZDgzZDFjMDAwMDAwMDAsIDB4OWVkZmUzMWUwMDAwMDAwMCwgMHg4MzIyNTYxZjAwMDAwMDAwLAorICAgIDB4MzgzOWYwMTYwMDAwMDAwMCwgMHgyNWM0NDUxNzAwMDAwMDAwLCAweDAyYzM5YjE1MDAwMDAwMDAsCisgICAgMHgxZjNlMmUxNDAwMDAwMDAwLCAweDRjY2QyNzEwMDAwMDAwMDAsIDB4NTEzMDkyMTEwMDAwMDAwMCwKKyAgICAweDc2Mzc0YzEzMDAwMDAwMDAsIDB4NmJjYWY5MTIwMDAwMDAwMCwgMHhhMGEzYmYzNjAwMDAwMDAwLAorICAgIDB4YmQ1ZTBhMzcwMDAwMDAwMCwgMHg5YTU5ZDQzNTAwMDAwMDAwLCAweDg3YTQ2MTM0MDAwMDAwMDAsCisgICAgMHhkNDU3NjgzMDAwMDAwMDAwLCAweGM5YWFkZDMxMDAwMDAwMDAsIDB4ZWVhZDAzMzMwMDAwMDAwMCwKKyAgICAweGYzNTBiNjMyMDAwMDAwMDAsIDB4NDg0YjEwM2IwMDAwMDAwMCwgMHg1NWI2YTUzYTAwMDAwMDAwLAorICAgIDB4NzJiMTdiMzgwMDAwMDAwMCwgMHg2ZjRjY2UzOTAwMDAwMDAwLCAweDNjYmZjNzNkMDAwMDAwMDAsCisgICAgMHgyMTQyNzIzYzAwMDAwMDAwLCAweDA2NDVhYzNlMDAwMDAwMDAsIDB4MWJiODE5M2YwMDAwMDAwMCwKKyAgICAweDcwNzJlMDJkMDAwMDAwMDAsIDB4NmQ4ZjU1MmMwMDAwMDAwMCwgMHg0YTg4OGIyZTAwMDAwMDAwLAorICAgIDB4NTc3NTNlMmYwMDAwMDAwMCwgMHgwNDg2MzcyYjAwMDAwMDAwLCAweDE5N2I4MjJhMDAwMDAwMDAsCisgICAgMHgzZTdjNWMyODAwMDAwMDAwLCAweDIzODFlOTI5MDAwMDAwMDAsIDB4OTg5YTRmMjAwMDAwMDAwMCwKKyAgICAweDg1NjdmYTIxMDAwMDAwMDAsIDB4YTI2MDI0MjMwMDAwMDAwMCwgMHhiZjlkOTEyMjAwMDAwMDAwLAorICAgIDB4ZWM2ZTk4MjYwMDAwMDAwMCwgMHhmMTkzMmQyNzAwMDAwMDAwLCAweGQ2OTRmMzI1MDAwMDAwMDAsCisgICAgMHhjYjY5NDYyNDAwMDAwMDAwLCAweDQwNDc3ZjZkMDAwMDAwMDAsIDB4NWRiYWNhNmMwMDAwMDAwMCwKKyAgICAweDdhYmQxNDZlMDAwMDAwMDAsIDB4Njc0MGExNmYwMDAwMDAwMCwgMHgzNGIzYTg2YjAwMDAwMDAwLAorICAgIDB4Mjk0ZTFkNmEwMDAwMDAwMCwgMHgwZTQ5YzM2ODAwMDAwMDAwLCAweDEzYjQ3NjY5MDAwMDAwMDAsCisgICAgMHhhOGFmZDA2MDAwMDAwMDAwLCAweGI1NTI2NTYxMDAwMDAwMDAsIDB4OTI1NWJiNjMwMDAwMDAwMCwKKyAgICAweDhmYTgwZTYyMDAwMDAwMDAsIDB4ZGM1YjA3NjYwMDAwMDAwMCwgMHhjMWE2YjI2NzAwMDAwMDAwLAorICAgIDB4ZTZhMTZjNjUwMDAwMDAwMCwgMHhmYjVjZDk2NDAwMDAwMDAwLCAweDkwOTYyMDc2MDAwMDAwMDAsCisgICAgMHg4ZDZiOTU3NzAwMDAwMDAwLCAweGFhNmM0Yjc1MDAwMDAwMDAsIDB4Yjc5MWZlNzQwMDAwMDAwMCwKKyAgICAweGU0NjJmNzcwMDAwMDAwMDAsIDB4Zjk5ZjQyNzEwMDAwMDAwMCwgMHhkZTk4OWM3MzAwMDAwMDAwLAorICAgIDB4YzM2NTI5NzIwMDAwMDAwMCwgMHg3ODdlOGY3YjAwMDAwMDAwLCAweDY1ODMzYTdhMDAwMDAwMDAsCisgICAgMHg0Mjg0ZTQ3ODAwMDAwMDAwLCAweDVmNzk1MTc5MDAwMDAwMDAsIDB4MGM4YTU4N2QwMDAwMDAwMCwKKyAgICAweDExNzdlZDdjMDAwMDAwMDAsIDB4MzY3MDMzN2UwMDAwMDAwMCwgMHgyYjhkODY3ZjAwMDAwMDAwLAorICAgIDB4ZTBlNGMwNWIwMDAwMDAwMCwgMHhmZDE5NzU1YTAwMDAwMDAwLCAweGRhMWVhYjU4MDAwMDAwMDAsCisgICAgMHhjN2UzMWU1OTAwMDAwMDAwLCAweDk0MTAxNzVkMDAwMDAwMDAsIDB4ODllZGEyNWMwMDAwMDAwMCwKKyAgICAweGFlZWE3YzVlMDAwMDAwMDAsIDB4YjMxN2M5NWYwMDAwMDAwMCwgMHgwODBjNmY1NjAwMDAwMDAwLAorICAgIDB4MTVmMWRhNTcwMDAwMDAwMCwgMHgzMmY2MDQ1NTAwMDAwMDAwLCAweDJmMGJiMTU0MDAwMDAwMDAsCisgICAgMHg3Y2Y4Yjg1MDAwMDAwMDAwLCAweDYxMDUwZDUxMDAwMDAwMDAsIDB4NDYwMmQzNTMwMDAwMDAwMCwKKyAgICAweDViZmY2NjUyMDAwMDAwMDAsIDB4MzAzNTlmNDAwMDAwMDAwMCwgMHgyZGM4MmE0MTAwMDAwMDAwLAorICAgIDB4MGFjZmY0NDMwMDAwMDAwMCwgMHgxNzMyNDE0MjAwMDAwMDAwLCAweDQ0YzE0ODQ2MDAwMDAwMDAsCisgICAgMHg1OTNjZmQ0NzAwMDAwMDAwLCAweDdlM2IyMzQ1MDAwMDAwMDAsIDB4NjNjNjk2NDQwMDAwMDAwMCwKKyAgICAweGQ4ZGQzMDRkMDAwMDAwMDAsIDB4YzUyMDg1NGMwMDAwMDAwMCwgMHhlMjI3NWI0ZTAwMDAwMDAwLAorICAgIDB4ZmZkYWVlNGYwMDAwMDAwMCwgMHhhYzI5ZTc0YjAwMDAwMDAwLCAweGIxZDQ1MjRhMDAwMDAwMDAsCisgICAgMHg5NmQzOGM0ODAwMDAwMDAwLCAweDhiMmUzOTQ5MDAwMDAwMDAsIDB4ODA4ZWZlZGEwMDAwMDAwMCwKKyAgICAweDlkNzM0YmRiMDAwMDAwMDAsIDB4YmE3NDk1ZDkwMDAwMDAwMCwgMHhhNzg5MjBkODAwMDAwMDAwLAorICAgIDB4ZjQ3YTI5ZGMwMDAwMDAwMCwgMHhlOTg3OWNkZDAwMDAwMDAwLCAweGNlODA0MmRmMDAwMDAwMDAsCisgICAgMHhkMzdkZjdkZTAwMDAwMDAwLCAweDY4NjY1MWQ3MDAwMDAwMDAsIDB4NzU5YmU0ZDYwMDAwMDAwMCwKKyAgICAweDUyOWMzYWQ0MDAwMDAwMDAsIDB4NGY2MThmZDUwMDAwMDAwMCwgMHgxYzkyODZkMTAwMDAwMDAwLAorICAgIDB4MDE2ZjMzZDAwMDAwMDAwMCwgMHgyNjY4ZWRkMjAwMDAwMDAwLCAweDNiOTU1OGQzMDAwMDAwMDAsCisgICAgMHg1MDVmYTFjMTAwMDAwMDAwLCAweDRkYTIxNGMwMDAwMDAwMDAsIDB4NmFhNWNhYzIwMDAwMDAwMCwKKyAgICAweDc3NTg3ZmMzMDAwMDAwMDAsIDB4MjRhYjc2YzcwMDAwMDAwMCwgMHgzOTU2YzNjNjAwMDAwMDAwLAorICAgIDB4MWU1MTFkYzQwMDAwMDAwMCwgMHgwM2FjYThjNTAwMDAwMDAwLCAweGI4YjcwZWNjMDAwMDAwMDAsCisgICAgMHhhNTRhYmJjZDAwMDAwMDAwLCAweDgyNGQ2NWNmMDAwMDAwMDAsIDB4OWZiMGQwY2UwMDAwMDAwMCwKKyAgICAweGNjNDNkOWNhMDAwMDAwMDAsIDB4ZDFiZTZjY2IwMDAwMDAwMCwgMHhmNmI5YjJjOTAwMDAwMDAwLAorICAgIDB4ZWI0NDA3YzgwMDAwMDAwMCwgMHgyMDJkNDFlYzAwMDAwMDAwLCAweDNkZDBmNGVkMDAwMDAwMDAsCisgICAgMHgxYWQ3MmFlZjAwMDAwMDAwLCAweDA3MmE5ZmVlMDAwMDAwMDAsIDB4NTRkOTk2ZWEwMDAwMDAwMCwKKyAgICAweDQ5MjQyM2ViMDAwMDAwMDAsIDB4NmUyM2ZkZTkwMDAwMDAwMCwgMHg3M2RlNDhlODAwMDAwMDAwLAorICAgIDB4YzhjNWVlZTEwMDAwMDAwMCwgMHhkNTM4NWJlMDAwMDAwMDAwLCAweGYyM2Y4NWUyMDAwMDAwMDAsCisgICAgMHhlZmMyMzBlMzAwMDAwMDAwLCAweGJjMzEzOWU3MDAwMDAwMDAsIDB4YTFjYzhjZTYwMDAwMDAwMCwKKyAgICAweDg2Y2I1MmU0MDAwMDAwMDAsIDB4OWIzNmU3ZTUwMDAwMDAwMCwgMHhmMGZjMWVmNzAwMDAwMDAwLAorICAgIDB4ZWQwMWFiZjYwMDAwMDAwMCwgMHhjYTA2NzVmNDAwMDAwMDAwLCAweGQ3ZmJjMGY1MDAwMDAwMDAsCisgICAgMHg4NDA4YzlmMTAwMDAwMDAwLCAweDk5ZjU3Y2YwMDAwMDAwMDAsIDB4YmVmMmEyZjIwMDAwMDAwMCwKKyAgICAweGEzMGYxN2YzMDAwMDAwMDAsIDB4MTgxNGIxZmEwMDAwMDAwMCwgMHgwNWU5MDRmYjAwMDAwMDAwLAorICAgIDB4MjJlZWRhZjkwMDAwMDAwMCwgMHgzZjEzNmZmODAwMDAwMDAwLCAweDZjZTA2NmZjMDAwMDAwMDAsCisgICAgMHg3MTFkZDNmZDAwMDAwMDAwLCAweDU2MWEwZGZmMDAwMDAwMDAsIDB4NGJlN2I4ZmUwMDAwMDAwMCwKKyAgICAweGMwYzk4MWI3MDAwMDAwMDAsIDB4ZGQzNDM0YjYwMDAwMDAwMCwgMHhmYTMzZWFiNDAwMDAwMDAwLAorICAgIDB4ZTdjZTVmYjUwMDAwMDAwMCwgMHhiNDNkNTZiMTAwMDAwMDAwLCAweGE5YzBlM2IwMDAwMDAwMDAsCisgICAgMHg4ZWM3M2RiMjAwMDAwMDAwLCAweDkzM2E4OGIzMDAwMDAwMDAsIDB4MjgyMTJlYmEwMDAwMDAwMCwKKyAgICAweDM1ZGM5YmJiMDAwMDAwMDAsIDB4MTJkYjQ1YjkwMDAwMDAwMCwgMHgwZjI2ZjBiODAwMDAwMDAwLAorICAgIDB4NWNkNWY5YmMwMDAwMDAwMCwgMHg0MTI4NGNiZDAwMDAwMDAwLCAweDY2MmY5MmJmMDAwMDAwMDAsCisgICAgMHg3YmQyMjdiZTAwMDAwMDAwLCAweDEwMThkZWFjMDAwMDAwMDAsIDB4MGRlNTZiYWQwMDAwMDAwMCwKKyAgICAweDJhZTJiNWFmMDAwMDAwMDAsIDB4MzcxZjAwYWUwMDAwMDAwMCwgMHg2NGVjMDlhYTAwMDAwMDAwLAorICAgIDB4NzkxMWJjYWIwMDAwMDAwMCwgMHg1ZTE2NjJhOTAwMDAwMDAwLCAweDQzZWJkN2E4MDAwMDAwMDAsCisgICAgMHhmOGYwNzFhMTAwMDAwMDAwLCAweGU1MGRjNGEwMDAwMDAwMDAsIDB4YzIwYTFhYTIwMDAwMDAwMCwKKyAgICAweGRmZjdhZmEzMDAwMDAwMDAsIDB4OGMwNGE2YTcwMDAwMDAwMCwgMHg5MWY5MTNhNjAwMDAwMDAwLAorICAgIDB4YjZmZWNkYTQwMDAwMDAwMCwgMHhhYjAzNzhhNTAwMDAwMDAwLCAweDYwNmEzZTgxMDAwMDAwMDAsCisgICAgMHg3ZDk3OGI4MDAwMDAwMDAwLCAweDVhOTA1NTgyMDAwMDAwMDAsIDB4NDc2ZGUwODMwMDAwMDAwMCwKKyAgICAweDE0OWVlOTg3MDAwMDAwMDAsIDB4MDk2MzVjODYwMDAwMDAwMCwgMHgyZTY0ODI4NDAwMDAwMDAwLAorICAgIDB4MzM5OTM3ODUwMDAwMDAwMCwgMHg4ODgyOTE4YzAwMDAwMDAwLCAweDk1N2YyNDhkMDAwMDAwMDAsCisgICAgMHhiMjc4ZmE4ZjAwMDAwMDAwLCAweGFmODU0ZjhlMDAwMDAwMDAsIDB4ZmM3NjQ2OGEwMDAwMDAwMCwKKyAgICAweGUxOGJmMzhiMDAwMDAwMDAsIDB4YzY4YzJkODkwMDAwMDAwMCwgMHhkYjcxOTg4ODAwMDAwMDAwLAorICAgIDB4YjBiYjYxOWEwMDAwMDAwMCwgMHhhZDQ2ZDQ5YjAwMDAwMDAwLCAweDhhNDEwYTk5MDAwMDAwMDAsCisgICAgMHg5N2JjYmY5ODAwMDAwMDAwLCAweGM0NGZiNjljMDAwMDAwMDAsIDB4ZDliMjAzOWQwMDAwMDAwMCwKKyAgICAweGZlYjVkZDlmMDAwMDAwMDAsIDB4ZTM0ODY4OWUwMDAwMDAwMCwgMHg1ODUzY2U5NzAwMDAwMDAwLAorICAgIDB4NDVhZTdiOTYwMDAwMDAwMCwgMHg2MmE5YTU5NDAwMDAwMDAwLCAweDdmNTQxMDk1MDAwMDAwMDAsCisgICAgMHgyY2E3MTk5MTAwMDAwMDAwLCAweDMxNWFhYzkwMDAwMDAwMDAsIDB4MTY1ZDcyOTIwMDAwMDAwMCwKKyAgICAweDBiYTBjNzkzMDAwMDAwMDB9LAorICAgezB4MDAwMDAwMDAwMDAwMDAwMCwgMHgyNGQ5MDc2MzAwMDAwMDAwLCAweDQ4YjIwZmM2MDAwMDAwMDAsCisgICAgMHg2YzZiMDhhNTAwMDAwMDAwLCAweGQxNjI2ZTU3MDAwMDAwMDAsIDB4ZjViYjY5MzQwMDAwMDAwMCwKKyAgICAweDk5ZDA2MTkxMDAwMDAwMDAsIDB4YmQwOTY2ZjIwMDAwMDAwMCwgMHhhMmM1ZGNhZTAwMDAwMDAwLAorICAgIDB4ODYxY2RiY2QwMDAwMDAwMCwgMHhlYTc3ZDM2ODAwMDAwMDAwLCAweGNlYWVkNDBiMDAwMDAwMDAsCisgICAgMHg3M2E3YjJmOTAwMDAwMDAwLCAweDU3N2ViNTlhMDAwMDAwMDAsIDB4M2IxNWJkM2YwMDAwMDAwMCwKKyAgICAweDFmY2NiYTVjMDAwMDAwMDAsIDB4MDU4ZGM4ODYwMDAwMDAwMCwgMHgyMTU0Y2ZlNTAwMDAwMDAwLAorICAgIDB4NGQzZmM3NDAwMDAwMDAwMCwgMHg2OWU2YzAyMzAwMDAwMDAwLCAweGQ0ZWZhNmQxMDAwMDAwMDAsCisgICAgMHhmMDM2YTFiMjAwMDAwMDAwLCAweDljNWRhOTE3MDAwMDAwMDAsIDB4Yjg4NGFlNzQwMDAwMDAwMCwKKyAgICAweGE3NDgxNDI4MDAwMDAwMDAsIDB4ODM5MTEzNGIwMDAwMDAwMCwgMHhlZmZhMWJlZTAwMDAwMDAwLAorICAgIDB4Y2IyMzFjOGQwMDAwMDAwMCwgMHg3NjJhN2E3ZjAwMDAwMDAwLCAweDUyZjM3ZDFjMDAwMDAwMDAsCisgICAgMHgzZTk4NzViOTAwMDAwMDAwLCAweDFhNDE3MmRhMDAwMDAwMDAsIDB4NGIxY2UwZDYwMDAwMDAwMCwKKyAgICAweDZmYzVlN2I1MDAwMDAwMDAsIDB4MDNhZWVmMTAwMDAwMDAwMCwgMHgyNzc3ZTg3MzAwMDAwMDAwLAorICAgIDB4OWE3ZThlODEwMDAwMDAwMCwgMHhiZWE3ODllMjAwMDAwMDAwLCAweGQyY2M4MTQ3MDAwMDAwMDAsCisgICAgMHhmNjE1ODYyNDAwMDAwMDAwLCAweGU5ZDkzYzc4MDAwMDAwMDAsIDB4Y2QwMDNiMWIwMDAwMDAwMCwKKyAgICAweGExNmIzM2JlMDAwMDAwMDAsIDB4ODViMjM0ZGQwMDAwMDAwMCwgMHgzOGJiNTIyZjAwMDAwMDAwLAorICAgIDB4MWM2MjU1NGMwMDAwMDAwMCwgMHg3MDA5NWRlOTAwMDAwMDAwLCAweDU0ZDA1YThhMDAwMDAwMDAsCisgICAgMHg0ZTkxMjg1MDAwMDAwMDAwLCAweDZhNDgyZjMzMDAwMDAwMDAsIDB4MDYyMzI3OTYwMDAwMDAwMCwKKyAgICAweDIyZmEyMGY1MDAwMDAwMDAsIDB4OWZmMzQ2MDcwMDAwMDAwMCwgMHhiYjJhNDE2NDAwMDAwMDAwLAorICAgIDB4ZDc0MTQ5YzEwMDAwMDAwMCwgMHhmMzk4NGVhMjAwMDAwMDAwLCAweGVjNTRmNGZlMDAwMDAwMDAsCisgICAgMHhjODhkZjM5ZDAwMDAwMDAwLCAweGE0ZTZmYjM4MDAwMDAwMDAsIDB4ODAzZmZjNWIwMDAwMDAwMCwKKyAgICAweDNkMzY5YWE5MDAwMDAwMDAsIDB4MTllZjlkY2EwMDAwMDAwMCwgMHg3NTg0OTU2ZjAwMDAwMDAwLAorICAgIDB4NTE1ZDkyMGMwMDAwMDAwMCwgMHhkNzNlYjE3NjAwMDAwMDAwLCAweGYzZTdiNjE1MDAwMDAwMDAsCisgICAgMHg5ZjhjYmViMDAwMDAwMDAwLCAweGJiNTViOWQzMDAwMDAwMDAsIDB4MDY1Y2RmMjEwMDAwMDAwMCwKKyAgICAweDIyODVkODQyMDAwMDAwMDAsIDB4NGVlZWQwZTcwMDAwMDAwMCwgMHg2YTM3ZDc4NDAwMDAwMDAwLAorICAgIDB4NzVmYjZkZDgwMDAwMDAwMCwgMHg1MTIyNmFiYjAwMDAwMDAwLCAweDNkNDk2MjFlMDAwMDAwMDAsCisgICAgMHgxOTkwNjU3ZDAwMDAwMDAwLCAweGE0OTkwMzhmMDAwMDAwMDAsIDB4ODA0MDA0ZWMwMDAwMDAwMCwKKyAgICAweGVjMmIwYzQ5MDAwMDAwMDAsIDB4YzhmMjBiMmEwMDAwMDAwMCwgMHhkMmIzNzlmMDAwMDAwMDAwLAorICAgIDB4ZjY2YTdlOTMwMDAwMDAwMCwgMHg5YTAxNzYzNjAwMDAwMDAwLCAweGJlZDg3MTU1MDAwMDAwMDAsCisgICAgMHgwM2QxMTdhNzAwMDAwMDAwLCAweDI3MDgxMGM0MDAwMDAwMDAsIDB4NGI2MzE4NjEwMDAwMDAwMCwKKyAgICAweDZmYmExZjAyMDAwMDAwMDAsIDB4NzA3NmE1NWUwMDAwMDAwMCwgMHg1NGFmYTIzZDAwMDAwMDAwLAorICAgIDB4MzhjNGFhOTgwMDAwMDAwMCwgMHgxYzFkYWRmYjAwMDAwMDAwLCAweGExMTRjYjA5MDAwMDAwMDAsCisgICAgMHg4NWNkY2M2YTAwMDAwMDAwLCAweGU5YTZjNGNmMDAwMDAwMDAsIDB4Y2Q3ZmMzYWMwMDAwMDAwMCwKKyAgICAweDljMjI1MWEwMDAwMDAwMDAsIDB4YjhmYjU2YzMwMDAwMDAwMCwgMHhkNDkwNWU2NjAwMDAwMDAwLAorICAgIDB4ZjA0OTU5MDUwMDAwMDAwMCwgMHg0ZDQwM2ZmNzAwMDAwMDAwLCAweDY5OTkzODk0MDAwMDAwMDAsCisgICAgMHgwNWYyMzAzMTAwMDAwMDAwLCAweDIxMmIzNzUyMDAwMDAwMDAsIDB4M2VlNzhkMGUwMDAwMDAwMCwKKyAgICAweDFhM2U4YTZkMDAwMDAwMDAsIDB4NzY1NTgyYzgwMDAwMDAwMCwgMHg1MjhjODVhYjAwMDAwMDAwLAorICAgIDB4ZWY4NWUzNTkwMDAwMDAwMCwgMHhjYjVjZTQzYTAwMDAwMDAwLCAweGE3MzdlYzlmMDAwMDAwMDAsCisgICAgMHg4M2VlZWJmYzAwMDAwMDAwLCAweDk5YWY5OTI2MDAwMDAwMDAsIDB4YmQ3NjllNDUwMDAwMDAwMCwKKyAgICAweGQxMWQ5NmUwMDAwMDAwMDAsIDB4ZjVjNDkxODMwMDAwMDAwMCwgMHg0OGNkZjc3MTAwMDAwMDAwLAorICAgIDB4NmMxNGYwMTIwMDAwMDAwMCwgMHgwMDdmZjhiNzAwMDAwMDAwLCAweDI0YTZmZmQ0MDAwMDAwMDAsCisgICAgMHgzYjZhNDU4ODAwMDAwMDAwLCAweDFmYjM0MmViMDAwMDAwMDAsIDB4NzNkODRhNGUwMDAwMDAwMCwKKyAgICAweDU3MDE0ZDJkMDAwMDAwMDAsIDB4ZWEwODJiZGYwMDAwMDAwMCwgMHhjZWQxMmNiYzAwMDAwMDAwLAorICAgIDB4YTJiYTI0MTkwMDAwMDAwMCwgMHg4NjYzMjM3YTAwMDAwMDAwLCAweGFlN2Q2MmVkMDAwMDAwMDAsCisgICAgMHg4YWE0NjU4ZTAwMDAwMDAwLCAweGU2Y2Y2ZDJiMDAwMDAwMDAsIDB4YzIxNjZhNDgwMDAwMDAwMCwKKyAgICAweDdmMWYwY2JhMDAwMDAwMDAsIDB4NWJjNjBiZDkwMDAwMDAwMCwgMHgzN2FkMDM3YzAwMDAwMDAwLAorICAgIDB4MTM3NDA0MWYwMDAwMDAwMCwgMHgwY2I4YmU0MzAwMDAwMDAwLCAweDI4NjFiOTIwMDAwMDAwMDAsCisgICAgMHg0NDBhYjE4NTAwMDAwMDAwLCAweDYwZDNiNmU2MDAwMDAwMDAsIDB4ZGRkYWQwMTQwMDAwMDAwMCwKKyAgICAweGY5MDNkNzc3MDAwMDAwMDAsIDB4OTU2OGRmZDIwMDAwMDAwMCwgMHhiMWIxZDhiMTAwMDAwMDAwLAorICAgIDB4YWJmMGFhNmIwMDAwMDAwMCwgMHg4ZjI5YWQwODAwMDAwMDAwLCAweGUzNDJhNWFkMDAwMDAwMDAsCisgICAgMHhjNzliYTJjZTAwMDAwMDAwLCAweDdhOTJjNDNjMDAwMDAwMDAsIDB4NWU0YmMzNWYwMDAwMDAwMCwKKyAgICAweDMyMjBjYmZhMDAwMDAwMDAsIDB4MTZmOWNjOTkwMDAwMDAwMCwgMHgwOTM1NzZjNTAwMDAwMDAwLAorICAgIDB4MmRlYzcxYTYwMDAwMDAwMCwgMHg0MTg3NzkwMzAwMDAwMDAwLCAweDY1NWU3ZTYwMDAwMDAwMDAsCisgICAgMHhkODU3MTg5MjAwMDAwMDAwLCAweGZjOGUxZmYxMDAwMDAwMDAsIDB4OTBlNTE3NTQwMDAwMDAwMCwKKyAgICAweGI0M2MxMDM3MDAwMDAwMDAsIDB4ZTU2MTgyM2IwMDAwMDAwMCwgMHhjMWI4ODU1ODAwMDAwMDAwLAorICAgIDB4YWRkMzhkZmQwMDAwMDAwMCwgMHg4OTBhOGE5ZTAwMDAwMDAwLCAweDM0MDNlYzZjMDAwMDAwMDAsCisgICAgMHgxMGRhZWIwZjAwMDAwMDAwLCAweDdjYjFlM2FhMDAwMDAwMDAsIDB4NTg2OGU0YzkwMDAwMDAwMCwKKyAgICAweDQ3YTQ1ZTk1MDAwMDAwMDAsIDB4NjM3ZDU5ZjYwMDAwMDAwMCwgMHgwZjE2NTE1MzAwMDAwMDAwLAorICAgIDB4MmJjZjU2MzAwMDAwMDAwMCwgMHg5NmM2MzBjMjAwMDAwMDAwLCAweGIyMWYzN2ExMDAwMDAwMDAsCisgICAgMHhkZTc0M2YwNDAwMDAwMDAwLCAweGZhYWQzODY3MDAwMDAwMDAsIDB4ZTBlYzRhYmQwMDAwMDAwMCwKKyAgICAweGM0MzU0ZGRlMDAwMDAwMDAsIDB4YTg1ZTQ1N2IwMDAwMDAwMCwgMHg4Yzg3NDIxODAwMDAwMDAwLAorICAgIDB4MzE4ZTI0ZWEwMDAwMDAwMCwgMHgxNTU3MjM4OTAwMDAwMDAwLCAweDc5M2MyYjJjMDAwMDAwMDAsCisgICAgMHg1ZGU1MmM0ZjAwMDAwMDAwLCAweDQyMjk5NjEzMDAwMDAwMDAsIDB4NjZmMDkxNzAwMDAwMDAwMCwKKyAgICAweDBhOWI5OWQ1MDAwMDAwMDAsIDB4MmU0MjllYjYwMDAwMDAwMCwgMHg5MzRiZjg0NDAwMDAwMDAwLAorICAgIDB4Yjc5MmZmMjcwMDAwMDAwMCwgMHhkYmY5Zjc4MjAwMDAwMDAwLCAweGZmMjBmMGUxMDAwMDAwMDAsCisgICAgMHg3OTQzZDM5YjAwMDAwMDAwLCAweDVkOWFkNGY4MDAwMDAwMDAsIDB4MzFmMWRjNWQwMDAwMDAwMCwKKyAgICAweDE1MjhkYjNlMDAwMDAwMDAsIDB4YTgyMWJkY2MwMDAwMDAwMCwgMHg4Y2Y4YmFhZjAwMDAwMDAwLAorICAgIDB4ZTA5M2IyMGEwMDAwMDAwMCwgMHhjNDRhYjU2OTAwMDAwMDAwLCAweGRiODYwZjM1MDAwMDAwMDAsCisgICAgMHhmZjVmMDg1NjAwMDAwMDAwLCAweDkzMzQwMGYzMDAwMDAwMDAsIDB4YjdlZDA3OTAwMDAwMDAwMCwKKyAgICAweDBhZTQ2MTYyMDAwMDAwMDAsIDB4MmUzZDY2MDEwMDAwMDAwMCwgMHg0MjU2NmVhNDAwMDAwMDAwLAorICAgIDB4NjY4ZjY5YzcwMDAwMDAwMCwgMHg3Y2NlMWIxZDAwMDAwMDAwLCAweDU4MTcxYzdlMDAwMDAwMDAsCisgICAgMHgzNDdjMTRkYjAwMDAwMDAwLCAweDEwYTUxM2I4MDAwMDAwMDAsIDB4YWRhYzc1NGEwMDAwMDAwMCwKKyAgICAweDg5NzU3MjI5MDAwMDAwMDAsIDB4ZTUxZTdhOGMwMDAwMDAwMCwgMHhjMWM3N2RlZjAwMDAwMDAwLAorICAgIDB4ZGUwYmM3YjMwMDAwMDAwMCwgMHhmYWQyYzBkMDAwMDAwMDAwLCAweDk2YjljODc1MDAwMDAwMDAsCisgICAgMHhiMjYwY2YxNjAwMDAwMDAwLCAweDBmNjlhOWU0MDAwMDAwMDAsIDB4MmJiMGFlODcwMDAwMDAwMCwKKyAgICAweDQ3ZGJhNjIyMDAwMDAwMDAsIDB4NjMwMmExNDEwMDAwMDAwMCwgMHgzMjVmMzM0ZDAwMDAwMDAwLAorICAgIDB4MTY4NjM0MmUwMDAwMDAwMCwgMHg3YWVkM2M4YjAwMDAwMDAwLCAweDVlMzQzYmU4MDAwMDAwMDAsCisgICAgMHhlMzNkNWQxYTAwMDAwMDAwLCAweGM3ZTQ1YTc5MDAwMDAwMDAsIDB4YWI4ZjUyZGMwMDAwMDAwMCwKKyAgICAweDhmNTY1NWJmMDAwMDAwMDAsIDB4OTA5YWVmZTMwMDAwMDAwMCwgMHhiNDQzZTg4MDAwMDAwMDAwLAorICAgIDB4ZDgyOGUwMjUwMDAwMDAwMCwgMHhmY2YxZTc0NjAwMDAwMDAwLCAweDQxZjg4MWI0MDAwMDAwMDAsCisgICAgMHg2NTIxODZkNzAwMDAwMDAwLCAweDA5NGE4ZTcyMDAwMDAwMDAsIDB4MmQ5Mzg5MTEwMDAwMDAwMCwKKyAgICAweDM3ZDJmYmNiMDAwMDAwMDAsIDB4MTMwYmZjYTgwMDAwMDAwMCwgMHg3ZjYwZjQwZDAwMDAwMDAwLAorICAgIDB4NWJiOWYzNmUwMDAwMDAwMCwgMHhlNmIwOTU5YzAwMDAwMDAwLCAweGMyNjk5MmZmMDAwMDAwMDAsCisgICAgMHhhZTAyOWE1YTAwMDAwMDAwLCAweDhhZGI5ZDM5MDAwMDAwMDAsIDB4OTUxNzI3NjUwMDAwMDAwMCwKKyAgICAweGIxY2UyMDA2MDAwMDAwMDAsIDB4ZGRhNTI4YTMwMDAwMDAwMCwgMHhmOTdjMmZjMDAwMDAwMDAwLAorICAgIDB4NDQ3NTQ5MzIwMDAwMDAwMCwgMHg2MGFjNGU1MTAwMDAwMDAwLCAweDBjYzc0NmY0MDAwMDAwMDAsCisgICAgMHgyODFlNDE5NzAwMDAwMDAwfSwKKyAgIHsweDAwMDAwMDAwMDAwMDAwMDAsIDB4MDhlMzYwM2MwMDAwMDAwMCwgMHgxMGM2YzE3ODAwMDAwMDAwLAorICAgIDB4MTgyNWExNDQwMDAwMDAwMCwgMHgyMDhjODNmMTAwMDAwMDAwLCAweDI4NmZlM2NkMDAwMDAwMDAsCisgICAgMHgzMDRhNDI4OTAwMDAwMDAwLCAweDM4YTkyMmI1MDAwMDAwMDAsIDB4MDExZTc2MzgwMDAwMDAwMCwKKyAgICAweDA5ZmQxNjA0MDAwMDAwMDAsIDB4MTFkOGI3NDAwMDAwMDAwMCwgMHgxOTNiZDc3YzAwMDAwMDAwLAorICAgIDB4MjE5MmY1YzkwMDAwMDAwMCwgMHgyOTcxOTVmNTAwMDAwMDAwLCAweDMxNTQzNGIxMDAwMDAwMDAsCisgICAgMHgzOWI3NTQ4ZDAwMDAwMDAwLCAweDAyM2NlYzcwMDAwMDAwMDAsIDB4MGFkZjhjNGMwMDAwMDAwMCwKKyAgICAweDEyZmEyZDA4MDAwMDAwMDAsIDB4MWExOTRkMzQwMDAwMDAwMCwgMHgyMmIwNmY4MTAwMDAwMDAwLAorICAgIDB4MmE1MzBmYmQwMDAwMDAwMCwgMHgzMjc2YWVmOTAwMDAwMDAwLCAweDNhOTVjZWM1MDAwMDAwMDAsCisgICAgMHgwMzIyOWE0ODAwMDAwMDAwLCAweDBiYzFmYTc0MDAwMDAwMDAsIDB4MTNlNDViMzAwMDAwMDAwMCwKKyAgICAweDFiMDczYjBjMDAwMDAwMDAsIDB4MjNhZTE5YjkwMDAwMDAwMCwgMHgyYjRkNzk4NTAwMDAwMDAwLAorICAgIDB4MzM2OGQ4YzEwMDAwMDAwMCwgMHgzYjhiYjhmZDAwMDAwMDAwLCAweDA0NzhkOGUxMDAwMDAwMDAsCisgICAgMHgwYzliYjhkZDAwMDAwMDAwLCAweDE0YmUxOTk5MDAwMDAwMDAsIDB4MWM1ZDc5YTUwMDAwMDAwMCwKKyAgICAweDI0ZjQ1YjEwMDAwMDAwMDAsIDB4MmMxNzNiMmMwMDAwMDAwMCwgMHgzNDMyOWE2ODAwMDAwMDAwLAorICAgIDB4M2NkMWZhNTQwMDAwMDAwMCwgMHgwNTY2YWVkOTAwMDAwMDAwLCAweDBkODVjZWU1MDAwMDAwMDAsCisgICAgMHgxNWEwNmZhMTAwMDAwMDAwLCAweDFkNDMwZjlkMDAwMDAwMDAsIDB4MjVlYTJkMjgwMDAwMDAwMCwKKyAgICAweDJkMDk0ZDE0MDAwMDAwMDAsIDB4MzUyY2VjNTAwMDAwMDAwMCwgMHgzZGNmOGM2YzAwMDAwMDAwLAorICAgIDB4MDY0NDM0OTEwMDAwMDAwMCwgMHgwZWE3NTRhZDAwMDAwMDAwLCAweDE2ODJmNWU5MDAwMDAwMDAsCisgICAgMHgxZTYxOTVkNTAwMDAwMDAwLCAweDI2YzhiNzYwMDAwMDAwMDAsIDB4MmUyYmQ3NWMwMDAwMDAwMCwKKyAgICAweDM2MGU3NjE4MDAwMDAwMDAsIDB4M2VlZDE2MjQwMDAwMDAwMCwgMHgwNzVhNDJhOTAwMDAwMDAwLAorICAgIDB4MGZiOTIyOTUwMDAwMDAwMCwgMHgxNzljODNkMTAwMDAwMDAwLCAweDFmN2ZlM2VkMDAwMDAwMDAsCisgICAgMHgyN2Q2YzE1ODAwMDAwMDAwLCAweDJmMzVhMTY0MDAwMDAwMDAsIDB4MzcxMDAwMjAwMDAwMDAwMCwKKyAgICAweDNmZjM2MDFjMDAwMDAwMDAsIDB4NDlmNmMxMTgwMDAwMDAwMCwgMHg0MTE1YTEyNDAwMDAwMDAwLAorICAgIDB4NTkzMDAwNjAwMDAwMDAwMCwgMHg1MWQzNjA1YzAwMDAwMDAwLCAweDY5N2E0MmU5MDAwMDAwMDAsCisgICAgMHg2MTk5MjJkNTAwMDAwMDAwLCAweDc5YmM4MzkxMDAwMDAwMDAsIDB4NzE1ZmUzYWQwMDAwMDAwMCwKKyAgICAweDQ4ZThiNzIwMDAwMDAwMDAsIDB4NDAwYmQ3MWMwMDAwMDAwMCwgMHg1ODJlNzY1ODAwMDAwMDAwLAorICAgIDB4NTBjZDE2NjQwMDAwMDAwMCwgMHg2ODY0MzRkMTAwMDAwMDAwLCAweDYwODc1NGVkMDAwMDAwMDAsCisgICAgMHg3OGEyZjVhOTAwMDAwMDAwLCAweDcwNDE5NTk1MDAwMDAwMDAsIDB4NGJjYTJkNjgwMDAwMDAwMCwKKyAgICAweDQzMjk0ZDU0MDAwMDAwMDAsIDB4NWIwY2VjMTAwMDAwMDAwMCwgMHg1M2VmOGMyYzAwMDAwMDAwLAorICAgIDB4NmI0NmFlOTkwMDAwMDAwMCwgMHg2M2E1Y2VhNTAwMDAwMDAwLCAweDdiODA2ZmUxMDAwMDAwMDAsCisgICAgMHg3MzYzMGZkZDAwMDAwMDAwLCAweDRhZDQ1YjUwMDAwMDAwMDAsIDB4NDIzNzNiNmMwMDAwMDAwMCwKKyAgICAweDVhMTI5YTI4MDAwMDAwMDAsIDB4NTJmMWZhMTQwMDAwMDAwMCwgMHg2YTU4ZDhhMTAwMDAwMDAwLAorICAgIDB4NjJiYmI4OWQwMDAwMDAwMCwgMHg3YTllMTlkOTAwMDAwMDAwLCAweDcyN2Q3OWU1MDAwMDAwMDAsCisgICAgMHg0ZDhlMTlmOTAwMDAwMDAwLCAweDQ1NmQ3OWM1MDAwMDAwMDAsIDB4NWQ0OGQ4ODEwMDAwMDAwMCwKKyAgICAweDU1YWJiOGJkMDAwMDAwMDAsIDB4NmQwMjlhMDgwMDAwMDAwMCwgMHg2NWUxZmEzNDAwMDAwMDAwLAorICAgIDB4N2RjNDViNzAwMDAwMDAwMCwgMHg3NTI3M2I0YzAwMDAwMDAwLCAweDRjOTA2ZmMxMDAwMDAwMDAsCisgICAgMHg0NDczMGZmZDAwMDAwMDAwLCAweDVjNTZhZWI5MDAwMDAwMDAsIDB4NTRiNWNlODUwMDAwMDAwMCwKKyAgICAweDZjMWNlYzMwMDAwMDAwMDAsIDB4NjRmZjhjMGMwMDAwMDAwMCwgMHg3Y2RhMmQ0ODAwMDAwMDAwLAorICAgIDB4NzQzOTRkNzQwMDAwMDAwMCwgMHg0ZmIyZjU4OTAwMDAwMDAwLCAweDQ3NTE5NWI1MDAwMDAwMDAsCisgICAgMHg1Zjc0MzRmMTAwMDAwMDAwLCAweDU3OTc1NGNkMDAwMDAwMDAsIDB4NmYzZTc2NzgwMDAwMDAwMCwKKyAgICAweDY3ZGQxNjQ0MDAwMDAwMDAsIDB4N2ZmOGI3MDAwMDAwMDAwMCwgMHg3NzFiZDczYzAwMDAwMDAwLAorICAgIDB4NGVhYzgzYjEwMDAwMDAwMCwgMHg0NjRmZTM4ZDAwMDAwMDAwLCAweDVlNmE0MmM5MDAwMDAwMDAsCisgICAgMHg1Njg5MjJmNTAwMDAwMDAwLCAweDZlMjAwMDQwMDAwMDAwMDAsIDB4NjZjMzYwN2MwMDAwMDAwMCwKKyAgICAweDdlZTZjMTM4MDAwMDAwMDAsIDB4NzYwNWExMDQwMDAwMDAwMCwgMHg5MmVjODMzMTAwMDAwMDAwLAorICAgIDB4OWEwZmUzMGQwMDAwMDAwMCwgMHg4MjJhNDI0OTAwMDAwMDAwLCAweDhhYzkyMjc1MDAwMDAwMDAsCisgICAgMHhiMjYwMDBjMDAwMDAwMDAwLCAweGJhODM2MGZjMDAwMDAwMDAsIDB4YTJhNmMxYjgwMDAwMDAwMCwKKyAgICAweGFhNDVhMTg0MDAwMDAwMDAsIDB4OTNmMmY1MDkwMDAwMDAwMCwgMHg5YjExOTUzNTAwMDAwMDAwLAorICAgIDB4ODMzNDM0NzEwMDAwMDAwMCwgMHg4YmQ3NTQ0ZDAwMDAwMDAwLCAweGIzN2U3NmY4MDAwMDAwMDAsCisgICAgMHhiYjlkMTZjNDAwMDAwMDAwLCAweGEzYjhiNzgwMDAwMDAwMDAsIDB4YWI1YmQ3YmMwMDAwMDAwMCwKKyAgICAweDkwZDA2ZjQxMDAwMDAwMDAsIDB4OTgzMzBmN2QwMDAwMDAwMCwgMHg4MDE2YWUzOTAwMDAwMDAwLAorICAgIDB4ODhmNWNlMDUwMDAwMDAwMCwgMHhiMDVjZWNiMDAwMDAwMDAwLCAweGI4YmY4YzhjMDAwMDAwMDAsCisgICAgMHhhMDlhMmRjODAwMDAwMDAwLCAweGE4Nzk0ZGY0MDAwMDAwMDAsIDB4OTFjZTE5NzkwMDAwMDAwMCwKKyAgICAweDk5MmQ3OTQ1MDAwMDAwMDAsIDB4ODEwOGQ4MDEwMDAwMDAwMCwgMHg4OWViYjgzZDAwMDAwMDAwLAorICAgIDB4YjE0MjlhODgwMDAwMDAwMCwgMHhiOWExZmFiNDAwMDAwMDAwLCAweGExODQ1YmYwMDAwMDAwMDAsCisgICAgMHhhOTY3M2JjYzAwMDAwMDAwLCAweDk2OTQ1YmQwMDAwMDAwMDAsIDB4OWU3NzNiZWMwMDAwMDAwMCwKKyAgICAweDg2NTI5YWE4MDAwMDAwMDAsIDB4OGViMWZhOTQwMDAwMDAwMCwgMHhiNjE4ZDgyMTAwMDAwMDAwLAorICAgIDB4YmVmYmI4MWQwMDAwMDAwMCwgMHhhNmRlMTk1OTAwMDAwMDAwLCAweGFlM2Q3OTY1MDAwMDAwMDAsCisgICAgMHg5NzhhMmRlODAwMDAwMDAwLCAweDlmNjk0ZGQ0MDAwMDAwMDAsIDB4ODc0Y2VjOTAwMDAwMDAwMCwKKyAgICAweDhmYWY4Y2FjMDAwMDAwMDAsIDB4YjcwNmFlMTkwMDAwMDAwMCwgMHhiZmU1Y2UyNTAwMDAwMDAwLAorICAgIDB4YTdjMDZmNjEwMDAwMDAwMCwgMHhhZjIzMGY1ZDAwMDAwMDAwLCAweDk0YThiN2EwMDAwMDAwMDAsCisgICAgMHg5YzRiZDc5YzAwMDAwMDAwLCAweDg0NmU3NmQ4MDAwMDAwMDAsIDB4OGM4ZDE2ZTQwMDAwMDAwMCwKKyAgICAweGI0MjQzNDUxMDAwMDAwMDAsIDB4YmNjNzU0NmQwMDAwMDAwMCwgMHhhNGUyZjUyOTAwMDAwMDAwLAorICAgIDB4YWMwMTk1MTUwMDAwMDAwMCwgMHg5NWI2YzE5ODAwMDAwMDAwLCAweDlkNTVhMWE0MDAwMDAwMDAsCisgICAgMHg4NTcwMDBlMDAwMDAwMDAwLCAweDhkOTM2MGRjMDAwMDAwMDAsIDB4YjUzYTQyNjkwMDAwMDAwMCwKKyAgICAweGJkZDkyMjU1MDAwMDAwMDAsIDB4YTVmYzgzMTEwMDAwMDAwMCwgMHhhZDFmZTMyZDAwMDAwMDAwLAorICAgIDB4ZGIxYTQyMjkwMDAwMDAwMCwgMHhkM2Y5MjIxNTAwMDAwMDAwLCAweGNiZGM4MzUxMDAwMDAwMDAsCisgICAgMHhjMzNmZTM2ZDAwMDAwMDAwLCAweGZiOTZjMWQ4MDAwMDAwMDAsIDB4ZjM3NWExZTQwMDAwMDAwMCwKKyAgICAweGViNTAwMGEwMDAwMDAwMDAsIDB4ZTNiMzYwOWMwMDAwMDAwMCwgMHhkYTA0MzQxMTAwMDAwMDAwLAorICAgIDB4ZDJlNzU0MmQwMDAwMDAwMCwgMHhjYWMyZjU2OTAwMDAwMDAwLCAweGMyMjE5NTU1MDAwMDAwMDAsCisgICAgMHhmYTg4YjdlMDAwMDAwMDAwLCAweGYyNmJkN2RjMDAwMDAwMDAsIDB4ZWE0ZTc2OTgwMDAwMDAwMCwKKyAgICAweGUyYWQxNmE0MDAwMDAwMDAsIDB4ZDkyNmFlNTkwMDAwMDAwMCwgMHhkMWM1Y2U2NTAwMDAwMDAwLAorICAgIDB4YzllMDZmMjEwMDAwMDAwMCwgMHhjMTAzMGYxZDAwMDAwMDAwLCAweGY5YWEyZGE4MDAwMDAwMDAsCisgICAgMHhmMTQ5NGQ5NDAwMDAwMDAwLCAweGU5NmNlY2QwMDAwMDAwMDAsIDB4ZTE4ZjhjZWMwMDAwMDAwMCwKKyAgICAweGQ4MzhkODYxMDAwMDAwMDAsIDB4ZDBkYmI4NWQwMDAwMDAwMCwgMHhjOGZlMTkxOTAwMDAwMDAwLAorICAgIDB4YzAxZDc5MjUwMDAwMDAwMCwgMHhmOGI0NWI5MDAwMDAwMDAwLCAweGYwNTczYmFjMDAwMDAwMDAsCisgICAgMHhlODcyOWFlODAwMDAwMDAwLCAweGUwOTFmYWQ0MDAwMDAwMDAsIDB4ZGY2MjlhYzgwMDAwMDAwMCwKKyAgICAweGQ3ODFmYWY0MDAwMDAwMDAsIDB4Y2ZhNDViYjAwMDAwMDAwMCwgMHhjNzQ3M2I4YzAwMDAwMDAwLAorICAgIDB4ZmZlZTE5MzkwMDAwMDAwMCwgMHhmNzBkNzkwNTAwMDAwMDAwLCAweGVmMjhkODQxMDAwMDAwMDAsCisgICAgMHhlN2NiYjg3ZDAwMDAwMDAwLCAweGRlN2NlY2YwMDAwMDAwMDAsIDB4ZDY5ZjhjY2MwMDAwMDAwMCwKKyAgICAweGNlYmEyZDg4MDAwMDAwMDAsIDB4YzY1OTRkYjQwMDAwMDAwMCwgMHhmZWYwNmYwMTAwMDAwMDAwLAorICAgIDB4ZjYxMzBmM2QwMDAwMDAwMCwgMHhlZTM2YWU3OTAwMDAwMDAwLCAweGU2ZDVjZTQ1MDAwMDAwMDAsCisgICAgMHhkZDVlNzZiODAwMDAwMDAwLCAweGQ1YmQxNjg0MDAwMDAwMDAsIDB4Y2Q5OGI3YzAwMDAwMDAwMCwKKyAgICAweGM1N2JkN2ZjMDAwMDAwMDAsIDB4ZmRkMmY1NDkwMDAwMDAwMCwgMHhmNTMxOTU3NTAwMDAwMDAwLAorICAgIDB4ZWQxNDM0MzEwMDAwMDAwMCwgMHhlNWY3NTQwZDAwMDAwMDAwLCAweGRjNDAwMDgwMDAwMDAwMDAsCisgICAgMHhkNGEzNjBiYzAwMDAwMDAwLCAweGNjODZjMWY4MDAwMDAwMDAsIDB4YzQ2NWExYzQwMDAwMDAwMCwKKyAgICAweGZjY2M4MzcxMDAwMDAwMDAsIDB4ZjQyZmUzNGQwMDAwMDAwMCwgMHhlYzBhNDIwOTAwMDAwMDAwLAorICAgIDB4ZTRlOTIyMzUwMDAwMDAwMH0sCisgICB7MHgwMDAwMDAwMDAwMDAwMDAwLCAweGQxZThlNzBlMDAwMDAwMDAsIDB4YTJkMWNmMWQwMDAwMDAwMCwKKyAgICAweDczMzkyODEzMDAwMDAwMDAsIDB4NDRhMzlmM2IwMDAwMDAwMCwgMHg5NTRiNzgzNTAwMDAwMDAwLAorICAgIDB4ZTY3MjUwMjYwMDAwMDAwMCwgMHgzNzlhYjcyODAwMDAwMDAwLCAweDg4NDYzZjc3MDAwMDAwMDAsCisgICAgMHg1OWFlZDg3OTAwMDAwMDAwLCAweDJhOTdmMDZhMDAwMDAwMDAsIDB4ZmI3ZjE3NjQwMDAwMDAwMCwKKyAgICAweGNjZTVhMDRjMDAwMDAwMDAsIDB4MWQwZDQ3NDIwMDAwMDAwMCwgMHg2ZTM0NmY1MTAwMDAwMDAwLAorICAgIDB4YmZkYzg4NWYwMDAwMDAwMCwgMHgxMDhkN2VlZTAwMDAwMDAwLCAweGMxNjU5OWUwMDAwMDAwMDAsCisgICAgMHhiMjVjYjFmMzAwMDAwMDAwLCAweDYzYjQ1NmZkMDAwMDAwMDAsIDB4NTQyZWUxZDUwMDAwMDAwMCwKKyAgICAweDg1YzYwNmRiMDAwMDAwMDAsIDB4ZjZmZjJlYzgwMDAwMDAwMCwgMHgyNzE3YzljNjAwMDAwMDAwLAorICAgIDB4OThjYjQxOTkwMDAwMDAwMCwgMHg0OTIzYTY5NzAwMDAwMDAwLCAweDNhMWE4ZTg0MDAwMDAwMDAsCisgICAgMHhlYmYyNjk4YTAwMDAwMDAwLCAweGRjNjhkZWEyMDAwMDAwMDAsIDB4MGQ4MDM5YWMwMDAwMDAwMCwKKyAgICAweDdlYjkxMWJmMDAwMDAwMDAsIDB4YWY1MWY2YjEwMDAwMDAwMCwgMHg2MTFjOGMwNzAwMDAwMDAwLAorICAgIDB4YjBmNDZiMDkwMDAwMDAwMCwgMHhjM2NkNDMxYTAwMDAwMDAwLCAweDEyMjVhNDE0MDAwMDAwMDAsCisgICAgMHgyNWJmMTMzYzAwMDAwMDAwLCAweGY0NTdmNDMyMDAwMDAwMDAsIDB4ODc2ZWRjMjEwMDAwMDAwMCwKKyAgICAweDU2ODYzYjJmMDAwMDAwMDAsIDB4ZTk1YWIzNzAwMDAwMDAwMCwgMHgzOGIyNTQ3ZTAwMDAwMDAwLAorICAgIDB4NGI4YjdjNmQwMDAwMDAwMCwgMHg5YTYzOWI2MzAwMDAwMDAwLCAweGFkZjkyYzRiMDAwMDAwMDAsCisgICAgMHg3YzExY2I0NTAwMDAwMDAwLCAweDBmMjhlMzU2MDAwMDAwMDAsIDB4ZGVjMDA0NTgwMDAwMDAwMCwKKyAgICAweDcxOTFmMmU5MDAwMDAwMDAsIDB4YTA3OTE1ZTcwMDAwMDAwMCwgMHhkMzQwM2RmNDAwMDAwMDAwLAorICAgIDB4MDJhOGRhZmEwMDAwMDAwMCwgMHgzNTMyNmRkMjAwMDAwMDAwLCAweGU0ZGE4YWRjMDAwMDAwMDAsCisgICAgMHg5N2UzYTJjZjAwMDAwMDAwLCAweDQ2MGI0NWMxMDAwMDAwMDAsIDB4ZjlkN2NkOWUwMDAwMDAwMCwKKyAgICAweDI4M2YyYTkwMDAwMDAwMDAsIDB4NWIwNjAyODMwMDAwMDAwMCwgMHg4YWVlZTU4ZDAwMDAwMDAwLAorICAgIDB4YmQ3NDUyYTUwMDAwMDAwMCwgMHg2YzljYjVhYjAwMDAwMDAwLCAweDFmYTU5ZGI4MDAwMDAwMDAsCisgICAgMHhjZTRkN2FiNjAwMDAwMDAwLCAweGMyMzgxODBmMDAwMDAwMDAsIDB4MTNkMGZmMDEwMDAwMDAwMCwKKyAgICAweDYwZTlkNzEyMDAwMDAwMDAsIDB4YjEwMTMwMWMwMDAwMDAwMCwgMHg4NjliODczNDAwMDAwMDAwLAorICAgIDB4NTc3MzYwM2EwMDAwMDAwMCwgMHgyNDRhNDgyOTAwMDAwMDAwLCAweGY1YTJhZjI3MDAwMDAwMDAsCisgICAgMHg0YTdlMjc3ODAwMDAwMDAwLCAweDliOTZjMDc2MDAwMDAwMDAsIDB4ZThhZmU4NjUwMDAwMDAwMCwKKyAgICAweDM5NDcwZjZiMDAwMDAwMDAsIDB4MGVkZGI4NDMwMDAwMDAwMCwgMHhkZjM1NWY0ZDAwMDAwMDAwLAorICAgIDB4YWMwYzc3NWUwMDAwMDAwMCwgMHg3ZGU0OTA1MDAwMDAwMDAwLCAweGQyYjU2NmUxMDAwMDAwMDAsCisgICAgMHgwMzVkODFlZjAwMDAwMDAwLCAweDcwNjRhOWZjMDAwMDAwMDAsIDB4YTE4YzRlZjIwMDAwMDAwMCwKKyAgICAweDk2MTZmOWRhMDAwMDAwMDAsIDB4NDdmZTFlZDQwMDAwMDAwMCwgMHgzNGM3MzZjNzAwMDAwMDAwLAorICAgIDB4ZTUyZmQxYzkwMDAwMDAwMCwgMHg1YWYzNTk5NjAwMDAwMDAwLCAweDhiMWJiZTk4MDAwMDAwMDAsCisgICAgMHhmODIyOTY4YjAwMDAwMDAwLCAweDI5Y2E3MTg1MDAwMDAwMDAsIDB4MWU1MGM2YWQwMDAwMDAwMCwKKyAgICAweGNmYjgyMWEzMDAwMDAwMDAsIDB4YmM4MTA5YjAwMDAwMDAwMCwgMHg2ZDY5ZWViZTAwMDAwMDAwLAorICAgIDB4YTMyNDk0MDgwMDAwMDAwMCwgMHg3MmNjNzMwNjAwMDAwMDAwLCAweDAxZjU1YjE1MDAwMDAwMDAsCisgICAgMHhkMDFkYmMxYjAwMDAwMDAwLCAweGU3ODcwYjMzMDAwMDAwMDAsIDB4MzY2ZmVjM2QwMDAwMDAwMCwKKyAgICAweDQ1NTZjNDJlMDAwMDAwMDAsIDB4OTRiZTIzMjAwMDAwMDAwMCwgMHgyYjYyYWI3ZjAwMDAwMDAwLAorICAgIDB4ZmE4YTRjNzEwMDAwMDAwMCwgMHg4OWIzNjQ2MjAwMDAwMDAwLCAweDU4NWI4MzZjMDAwMDAwMDAsCisgICAgMHg2ZmMxMzQ0NDAwMDAwMDAwLCAweGJlMjlkMzRhMDAwMDAwMDAsIDB4Y2QxMGZiNTkwMDAwMDAwMCwKKyAgICAweDFjZjgxYzU3MDAwMDAwMDAsIDB4YjNhOWVhZTYwMDAwMDAwMCwgMHg2MjQxMGRlODAwMDAwMDAwLAorICAgIDB4MTE3ODI1ZmIwMDAwMDAwMCwgMHhjMDkwYzJmNTAwMDAwMDAwLCAweGY3MGE3NWRkMDAwMDAwMDAsCisgICAgMHgyNmUyOTJkMzAwMDAwMDAwLCAweDU1ZGJiYWMwMDAwMDAwMDAsIDB4ODQzMzVkY2UwMDAwMDAwMCwKKyAgICAweDNiZWZkNTkxMDAwMDAwMDAsIDB4ZWEwNzMyOWYwMDAwMDAwMCwgMHg5OTNlMWE4YzAwMDAwMDAwLAorICAgIDB4NDhkNmZkODIwMDAwMDAwMCwgMHg3ZjRjNGFhYTAwMDAwMDAwLCAweGFlYTRhZGE0MDAwMDAwMDAsCisgICAgMHhkZDlkODViNzAwMDAwMDAwLCAweDBjNzU2MmI5MDAwMDAwMDAsIDB4ODQ3MTMwMWUwMDAwMDAwMCwKKyAgICAweDU1OTlkNzEwMDAwMDAwMDAsIDB4MjZhMGZmMDMwMDAwMDAwMCwgMHhmNzQ4MTgwZDAwMDAwMDAwLAorICAgIDB4YzBkMmFmMjUwMDAwMDAwMCwgMHgxMTNhNDgyYjAwMDAwMDAwLCAweDYyMDM2MDM4MDAwMDAwMDAsCisgICAgMHhiM2ViODczNjAwMDAwMDAwLCAweDBjMzcwZjY5MDAwMDAwMDAsIDB4ZGRkZmU4NjcwMDAwMDAwMCwKKyAgICAweGFlZTZjMDc0MDAwMDAwMDAsIDB4N2YwZTI3N2EwMDAwMDAwMCwgMHg0ODk0OTA1MjAwMDAwMDAwLAorICAgIDB4OTk3Yzc3NWMwMDAwMDAwMCwgMHhlYTQ1NWY0ZjAwMDAwMDAwLCAweDNiYWRiODQxMDAwMDAwMDAsCisgICAgMHg5NGZjNGVmMDAwMDAwMDAwLCAweDQ1MTRhOWZlMDAwMDAwMDAsIDB4MzYyZDgxZWQwMDAwMDAwMCwKKyAgICAweGU3YzU2NmUzMDAwMDAwMDAsIDB4ZDA1ZmQxY2IwMDAwMDAwMCwgMHgwMWI3MzZjNTAwMDAwMDAwLAorICAgIDB4NzI4ZTFlZDYwMDAwMDAwMCwgMHhhMzY2ZjlkODAwMDAwMDAwLCAweDFjYmE3MTg3MDAwMDAwMDAsCisgICAgMHhjZDUyOTY4OTAwMDAwMDAwLCAweGJlNmJiZTlhMDAwMDAwMDAsIDB4NmY4MzU5OTQwMDAwMDAwMCwKKyAgICAweDU4MTllZWJjMDAwMDAwMDAsIDB4ODlmMTA5YjIwMDAwMDAwMCwgMHhmYWM4MjFhMTAwMDAwMDAwLAorICAgIDB4MmIyMGM2YWYwMDAwMDAwMCwgMHhlNTZkYmMxOTAwMDAwMDAwLCAweDM0ODU1YjE3MDAwMDAwMDAsCisgICAgMHg0N2JjNzMwNDAwMDAwMDAwLCAweDk2NTQ5NDBhMDAwMDAwMDAsIDB4YTFjZTIzMjIwMDAwMDAwMCwKKyAgICAweDcwMjZjNDJjMDAwMDAwMDAsIDB4MDMxZmVjM2YwMDAwMDAwMCwgMHhkMmY3MGIzMTAwMDAwMDAwLAorICAgIDB4NmQyYjgzNmUwMDAwMDAwMCwgMHhiY2MzNjQ2MDAwMDAwMDAwLCAweGNmZmE0YzczMDAwMDAwMDAsCisgICAgMHgxZTEyYWI3ZDAwMDAwMDAwLCAweDI5ODgxYzU1MDAwMDAwMDAsIDB4Zjg2MGZiNWIwMDAwMDAwMCwKKyAgICAweDhiNTlkMzQ4MDAwMDAwMDAsIDB4NWFiMTM0NDYwMDAwMDAwMCwgMHhmNWUwYzJmNzAwMDAwMDAwLAorICAgIDB4MjQwODI1ZjkwMDAwMDAwMCwgMHg1NzMxMGRlYTAwMDAwMDAwLCAweDg2ZDllYWU0MDAwMDAwMDAsCisgICAgMHhiMTQzNWRjYzAwMDAwMDAwLCAweDYwYWJiYWMyMDAwMDAwMDAsIDB4MTM5MjkyZDEwMDAwMDAwMCwKKyAgICAweGMyN2E3NWRmMDAwMDAwMDAsIDB4N2RhNmZkODAwMDAwMDAwMCwgMHhhYzRlMWE4ZTAwMDAwMDAwLAorICAgIDB4ZGY3NzMyOWQwMDAwMDAwMCwgMHgwZTlmZDU5MzAwMDAwMDAwLCAweDM5MDU2MmJiMDAwMDAwMDAsCisgICAgMHhlOGVkODViNTAwMDAwMDAwLCAweDliZDRhZGE2MDAwMDAwMDAsIDB4NGEzYzRhYTgwMDAwMDAwMCwKKyAgICAweDQ2NDkyODExMDAwMDAwMDAsIDB4OTdhMWNmMWYwMDAwMDAwMCwgMHhlNDk4ZTcwYzAwMDAwMDAwLAorICAgIDB4MzU3MDAwMDIwMDAwMDAwMCwgMHgwMmVhYjcyYTAwMDAwMDAwLCAweGQzMDI1MDI0MDAwMDAwMDAsCisgICAgMHhhMDNiNzgzNzAwMDAwMDAwLCAweDcxZDM5ZjM5MDAwMDAwMDAsIDB4Y2UwZjE3NjYwMDAwMDAwMCwKKyAgICAweDFmZTdmMDY4MDAwMDAwMDAsIDB4NmNkZWQ4N2IwMDAwMDAwMCwgMHhiZDM2M2Y3NTAwMDAwMDAwLAorICAgIDB4OGFhYzg4NWQwMDAwMDAwMCwgMHg1YjQ0NmY1MzAwMDAwMDAwLCAweDI4N2Q0NzQwMDAwMDAwMDAsCisgICAgMHhmOTk1YTA0ZTAwMDAwMDAwLCAweDU2YzQ1NmZmMDAwMDAwMDAsIDB4ODcyY2IxZjEwMDAwMDAwMCwKKyAgICAweGY0MTU5OWUyMDAwMDAwMDAsIDB4MjVmZDdlZWMwMDAwMDAwMCwgMHgxMjY3YzljNDAwMDAwMDAwLAorICAgIDB4YzM4ZjJlY2EwMDAwMDAwMCwgMHhiMGI2MDZkOTAwMDAwMDAwLCAweDYxNWVlMWQ3MDAwMDAwMDAsCisgICAgMHhkZTgyNjk4ODAwMDAwMDAwLCAweDBmNmE4ZTg2MDAwMDAwMDAsIDB4N2M1M2E2OTUwMDAwMDAwMCwKKyAgICAweGFkYmI0MTliMDAwMDAwMDAsIDB4OWEyMWY2YjMwMDAwMDAwMCwgMHg0YmM5MTFiZDAwMDAwMDAwLAorICAgIDB4MzhmMDM5YWUwMDAwMDAwMCwgMHhlOTE4ZGVhMDAwMDAwMDAwLCAweDI3NTVhNDE2MDAwMDAwMDAsCisgICAgMHhmNmJkNDMxODAwMDAwMDAwLCAweDg1ODQ2YjBiMDAwMDAwMDAsIDB4NTQ2YzhjMDUwMDAwMDAwMCwKKyAgICAweDYzZjYzYjJkMDAwMDAwMDAsIDB4YjIxZWRjMjMwMDAwMDAwMCwgMHhjMTI3ZjQzMDAwMDAwMDAwLAorICAgIDB4MTBjZjEzM2UwMDAwMDAwMCwgMHhhZjEzOWI2MTAwMDAwMDAwLCAweDdlZmI3YzZmMDAwMDAwMDAsCisgICAgMHgwZGMyNTQ3YzAwMDAwMDAwLCAweGRjMmFiMzcyMDAwMDAwMDAsIDB4ZWJiMDA0NWEwMDAwMDAwMCwKKyAgICAweDNhNThlMzU0MDAwMDAwMDAsIDB4NDk2MWNiNDcwMDAwMDAwMCwgMHg5ODg5MmM0OTAwMDAwMDAwLAorICAgIDB4MzdkOGRhZjgwMDAwMDAwMCwgMHhlNjMwM2RmNjAwMDAwMDAwLCAweDk1MDkxNWU1MDAwMDAwMDAsCisgICAgMHg0NGUxZjJlYjAwMDAwMDAwLCAweDczN2I0NWMzMDAwMDAwMDAsIDB4YTI5M2EyY2QwMDAwMDAwMCwKKyAgICAweGQxYWE4YWRlMDAwMDAwMDAsIDB4MDA0MjZkZDAwMDAwMDAwMCwgMHhiZjllZTU4ZjAwMDAwMDAwLAorICAgIDB4NmU3NjAyODEwMDAwMDAwMCwgMHgxZDRmMmE5MjAwMDAwMDAwLCAweGNjYTdjZDljMDAwMDAwMDAsCisgICAgMHhmYjNkN2FiNDAwMDAwMDAwLCAweDJhZDU5ZGJhMDAwMDAwMDAsIDB4NTllY2I1YTkwMDAwMDAwMCwKKyAgICAweDg4MDQ1MmE3MDAwMDAwMDB9LAorICAgezB4MDAwMDAwMDAwMDAwMDAwMCwgMHhhYTA1ZGFmMTAwMDAwMDAwLCAweDE1MGRjNTM4MDAwMDAwMDAsCisgICAgMHhiZjA4MWZjOTAwMDAwMDAwLCAweDJhMWE4YTcxMDAwMDAwMDAsIDB4ODAxZjUwODAwMDAwMDAwMCwKKyAgICAweDNmMTc0ZjQ5MDAwMDAwMDAsIDB4OTUxMjk1YjgwMDAwMDAwMCwgMHg1NDM0MTRlMzAwMDAwMDAwLAorICAgIDB4ZmUzMWNlMTIwMDAwMDAwMCwgMHg0MTM5ZDFkYjAwMDAwMDAwLCAweGViM2MwYjJhMDAwMDAwMDAsCisgICAgMHg3ZTJlOWU5MjAwMDAwMDAwLCAweGQ0MmI0NDYzMDAwMDAwMDAsIDB4NmIyMzViYWEwMDAwMDAwMCwKKyAgICAweGMxMjY4MTViMDAwMDAwMDAsIDB4ZTk2ZTU5MWQwMDAwMDAwMCwgMHg0MzZiODNlYzAwMDAwMDAwLAorICAgIDB4ZmM2MzljMjUwMDAwMDAwMCwgMHg1NjY2NDZkNDAwMDAwMDAwLCAweGMzNzRkMzZjMDAwMDAwMDAsCisgICAgMHg2OTcxMDk5ZDAwMDAwMDAwLCAweGQ2NzkxNjU0MDAwMDAwMDAsIDB4N2M3Y2NjYTUwMDAwMDAwMCwKKyAgICAweGJkNWE0ZGZlMDAwMDAwMDAsIDB4MTc1Zjk3MGYwMDAwMDAwMCwgMHhhODU3ODhjNjAwMDAwMDAwLAorICAgIDB4MDI1MjUyMzcwMDAwMDAwMCwgMHg5NzQwYzc4ZjAwMDAwMDAwLCAweDNkNDUxZDdlMDAwMDAwMDAsCisgICAgMHg4MjRkMDJiNzAwMDAwMDAwLCAweDI4NDhkODQ2MDAwMDAwMDAsIDB4ZDJkZGIyM2EwMDAwMDAwMCwKKyAgICAweDc4ZDg2OGNiMDAwMDAwMDAsIDB4YzdkMDc3MDIwMDAwMDAwMCwgMHg2ZGQ1YWRmMzAwMDAwMDAwLAorICAgIDB4ZjhjNzM4NGIwMDAwMDAwMCwgMHg1MmMyZTJiYTAwMDAwMDAwLCAweGVkY2FmZDczMDAwMDAwMDAsCisgICAgMHg0N2NmMjc4MjAwMDAwMDAwLCAweDg2ZTlhNmQ5MDAwMDAwMDAsIDB4MmNlYzdjMjgwMDAwMDAwMCwKKyAgICAweDkzZTQ2M2UxMDAwMDAwMDAsIDB4MzllMWI5MTAwMDAwMDAwMCwgMHhhY2YzMmNhODAwMDAwMDAwLAorICAgIDB4MDZmNmY2NTkwMDAwMDAwMCwgMHhiOWZlZTk5MDAwMDAwMDAwLCAweDEzZmIzMzYxMDAwMDAwMDAsCisgICAgMHgzYmIzZWIyNzAwMDAwMDAwLCAweDkxYjYzMWQ2MDAwMDAwMDAsIDB4MmViZTJlMWYwMDAwMDAwMCwKKyAgICAweDg0YmJmNGVlMDAwMDAwMDAsIDB4MTFhOTYxNTYwMDAwMDAwMCwgMHhiYmFjYmJhNzAwMDAwMDAwLAorICAgIDB4MDRhNGE0NmUwMDAwMDAwMCwgMHhhZWExN2U5ZjAwMDAwMDAwLCAweDZmODdmZmM0MDAwMDAwMDAsCisgICAgMHhjNTgyMjUzNTAwMDAwMDAwLCAweDdhOGEzYWZjMDAwMDAwMDAsIDB4ZDA4ZmUwMGQwMDAwMDAwMCwKKyAgICAweDQ1OWQ3NWI1MDAwMDAwMDAsIDB4ZWY5OGFmNDQwMDAwMDAwMCwgMHg1MDkwYjA4ZDAwMDAwMDAwLAorICAgIDB4ZmE5NTZhN2MwMDAwMDAwMCwgMHhhNGJiNjU3NTAwMDAwMDAwLCAweDBlYmViZjg0MDAwMDAwMDAsCisgICAgMHhiMWI2YTA0ZDAwMDAwMDAwLCAweDFiYjM3YWJjMDAwMDAwMDAsIDB4OGVhMWVmMDQwMDAwMDAwMCwKKyAgICAweDI0YTQzNWY1MDAwMDAwMDAsIDB4OWJhYzJhM2MwMDAwMDAwMCwgMHgzMWE5ZjBjZDAwMDAwMDAwLAorICAgIDB4ZjA4ZjcxOTYwMDAwMDAwMCwgMHg1YThhYWI2NzAwMDAwMDAwLCAweGU1ODJiNGFlMDAwMDAwMDAsCisgICAgMHg0Zjg3NmU1ZjAwMDAwMDAwLCAweGRhOTVmYmU3MDAwMDAwMDAsIDB4NzA5MDIxMTYwMDAwMDAwMCwKKyAgICAweGNmOTgzZWRmMDAwMDAwMDAsIDB4NjU5ZGU0MmUwMDAwMDAwMCwgMHg0ZGQ1M2M2ODAwMDAwMDAwLAorICAgIDB4ZTdkMGU2OTkwMDAwMDAwMCwgMHg1OGQ4Zjk1MDAwMDAwMDAwLCAweGYyZGQyM2ExMDAwMDAwMDAsCisgICAgMHg2N2NmYjYxOTAwMDAwMDAwLCAweGNkY2E2Y2U4MDAwMDAwMDAsIDB4NzJjMjczMjEwMDAwMDAwMCwKKyAgICAweGQ4YzdhOWQwMDAwMDAwMDAsIDB4MTllMTI4OGIwMDAwMDAwMCwgMHhiM2U0ZjI3YTAwMDAwMDAwLAorICAgIDB4MGNlY2VkYjMwMDAwMDAwMCwgMHhhNmU5Mzc0MjAwMDAwMDAwLCAweDMzZmJhMmZhMDAwMDAwMDAsCisgICAgMHg5OWZlNzgwYjAwMDAwMDAwLCAweDI2ZjY2N2MyMDAwMDAwMDAsIDB4OGNmM2JkMzMwMDAwMDAwMCwKKyAgICAweDc2NjZkNzRmMDAwMDAwMDAsIDB4ZGM2MzBkYmUwMDAwMDAwMCwgMHg2MzZiMTI3NzAwMDAwMDAwLAorICAgIDB4Yzk2ZWM4ODYwMDAwMDAwMCwgMHg1YzdjNWQzZTAwMDAwMDAwLCAweGY2Nzk4N2NmMDAwMDAwMDAsCisgICAgMHg0OTcxOTgwNjAwMDAwMDAwLCAweGUzNzQ0MmY3MDAwMDAwMDAsIDB4MjI1MmMzYWMwMDAwMDAwMCwKKyAgICAweDg4NTcxOTVkMDAwMDAwMDAsIDB4Mzc1ZjA2OTQwMDAwMDAwMCwgMHg5ZDVhZGM2NTAwMDAwMDAwLAorICAgIDB4MDg0ODQ5ZGQwMDAwMDAwMCwgMHhhMjRkOTMyYzAwMDAwMDAwLCAweDFkNDU4Y2U1MDAwMDAwMDAsCisgICAgMHhiNzQwNTYxNDAwMDAwMDAwLCAweDlmMDg4ZTUyMDAwMDAwMDAsIDB4MzUwZDU0YTMwMDAwMDAwMCwKKyAgICAweDhhMDU0YjZhMDAwMDAwMDAsIDB4MjAwMDkxOWIwMDAwMDAwMCwgMHhiNTEyMDQyMzAwMDAwMDAwLAorICAgIDB4MWYxN2RlZDIwMDAwMDAwMCwgMHhhMDFmYzExYjAwMDAwMDAwLCAweDBhMWExYmVhMDAwMDAwMDAsCisgICAgMHhjYjNjOWFiMTAwMDAwMDAwLCAweDYxMzk0MDQwMDAwMDAwMDAsIDB4ZGUzMTVmODkwMDAwMDAwMCwKKyAgICAweDc0MzQ4NTc4MDAwMDAwMDAsIDB4ZTEyNjEwYzAwMDAwMDAwMCwgMHg0YjIzY2EzMTAwMDAwMDAwLAorICAgIDB4ZjQyYmQ1ZjgwMDAwMDAwMCwgMHg1ZTJlMGYwOTAwMDAwMDAwLCAweDQ4NzdjYmVhMDAwMDAwMDAsCisgICAgMHhlMjcyMTExYjAwMDAwMDAwLCAweDVkN2EwZWQyMDAwMDAwMDAsIDB4Zjc3ZmQ0MjMwMDAwMDAwMCwKKyAgICAweDYyNmQ0MTliMDAwMDAwMDAsIDB4Yzg2ODliNmEwMDAwMDAwMCwgMHg3NzYwODRhMzAwMDAwMDAwLAorICAgIDB4ZGQ2NTVlNTIwMDAwMDAwMCwgMHgxYzQzZGYwOTAwMDAwMDAwLCAweGI2NDYwNWY4MDAwMDAwMDAsCisgICAgMHgwOTRlMWEzMTAwMDAwMDAwLCAweGEzNGJjMGMwMDAwMDAwMDAsIDB4MzY1OTU1NzgwMDAwMDAwMCwKKyAgICAweDljNWM4Zjg5MDAwMDAwMDAsIDB4MjM1NDkwNDAwMDAwMDAwMCwgMHg4OTUxNGFiMTAwMDAwMDAwLAorICAgIDB4YTExOTkyZjcwMDAwMDAwMCwgMHgwYjFjNDgwNjAwMDAwMDAwLCAweGI0MTQ1N2NmMDAwMDAwMDAsCisgICAgMHgxZTExOGQzZTAwMDAwMDAwLCAweDhiMDMxODg2MDAwMDAwMDAsIDB4MjEwNmMyNzcwMDAwMDAwMCwKKyAgICAweDllMGVkZGJlMDAwMDAwMDAsIDB4MzQwYjA3NGYwMDAwMDAwMCwgMHhmNTJkODYxNDAwMDAwMDAwLAorICAgIDB4NWYyODVjZTUwMDAwMDAwMCwgMHhlMDIwNDMyYzAwMDAwMDAwLCAweDRhMjU5OWRkMDAwMDAwMDAsCisgICAgMHhkZjM3MGM2NTAwMDAwMDAwLCAweDc1MzJkNjk0MDAwMDAwMDAsIDB4Y2EzYWM5NWQwMDAwMDAwMCwKKyAgICAweDYwM2YxM2FjMDAwMDAwMDAsIDB4OWFhYTc5ZDAwMDAwMDAwMCwgMHgzMGFmYTMyMTAwMDAwMDAwLAorICAgIDB4OGZhN2JjZTgwMDAwMDAwMCwgMHgyNWEyNjYxOTAwMDAwMDAwLCAweGIwYjBmM2ExMDAwMDAwMDAsCisgICAgMHgxYWI1Mjk1MDAwMDAwMDAwLCAweGE1YmQzNjk5MDAwMDAwMDAsIDB4MGZiOGVjNjgwMDAwMDAwMCwKKyAgICAweGNlOWU2ZDMzMDAwMDAwMDAsIDB4NjQ5YmI3YzIwMDAwMDAwMCwgMHhkYjkzYTgwYjAwMDAwMDAwLAorICAgIDB4NzE5NjcyZmEwMDAwMDAwMCwgMHhlNDg0ZTc0MjAwMDAwMDAwLCAweDRlODEzZGIzMDAwMDAwMDAsCisgICAgMHhmMTg5MjI3YTAwMDAwMDAwLCAweDViOGNmODhiMDAwMDAwMDAsIDB4NzNjNDIwY2QwMDAwMDAwMCwKKyAgICAweGQ5YzFmYTNjMDAwMDAwMDAsIDB4NjZjOWU1ZjUwMDAwMDAwMCwgMHhjY2NjM2YwNDAwMDAwMDAwLAorICAgIDB4NTlkZWFhYmMwMDAwMDAwMCwgMHhmM2RiNzA0ZDAwMDAwMDAwLCAweDRjZDM2Zjg0MDAwMDAwMDAsCisgICAgMHhlNmQ2YjU3NTAwMDAwMDAwLCAweDI3ZjAzNDJlMDAwMDAwMDAsIDB4OGRmNWVlZGYwMDAwMDAwMCwKKyAgICAweDMyZmRmMTE2MDAwMDAwMDAsIDB4OThmODJiZTcwMDAwMDAwMCwgMHgwZGVhYmU1ZjAwMDAwMDAwLAorICAgIDB4YTdlZjY0YWUwMDAwMDAwMCwgMHgxOGU3N2I2NzAwMDAwMDAwLCAweGIyZTJhMTk2MDAwMDAwMDAsCisgICAgMHhlY2NjYWU5ZjAwMDAwMDAwLCAweDQ2Yzk3NDZlMDAwMDAwMDAsIDB4ZjljMTZiYTcwMDAwMDAwMCwKKyAgICAweDUzYzRiMTU2MDAwMDAwMDAsIDB4YzZkNjI0ZWUwMDAwMDAwMCwgMHg2Y2QzZmUxZjAwMDAwMDAwLAorICAgIDB4ZDNkYmUxZDYwMDAwMDAwMCwgMHg3OWRlM2IyNzAwMDAwMDAwLCAweGI4ZjhiYTdjMDAwMDAwMDAsCisgICAgMHgxMmZkNjA4ZDAwMDAwMDAwLCAweGFkZjU3ZjQ0MDAwMDAwMDAsIDB4MDdmMGE1YjUwMDAwMDAwMCwKKyAgICAweDkyZTIzMDBkMDAwMDAwMDAsIDB4MzhlN2VhZmMwMDAwMDAwMCwgMHg4N2VmZjUzNTAwMDAwMDAwLAorICAgIDB4MmRlYTJmYzQwMDAwMDAwMCwgMHgwNWEyZjc4MjAwMDAwMDAwLCAweGFmYTcyZDczMDAwMDAwMDAsCisgICAgMHgxMGFmMzJiYTAwMDAwMDAwLCAweGJhYWFlODRiMDAwMDAwMDAsIDB4MmZiODdkZjMwMDAwMDAwMCwKKyAgICAweDg1YmRhNzAyMDAwMDAwMDAsIDB4M2FiNWI4Y2IwMDAwMDAwMCwgMHg5MGIwNjIzYTAwMDAwMDAwLAorICAgIDB4NTE5NmUzNjEwMDAwMDAwMCwgMHhmYjkzMzk5MDAwMDAwMDAwLCAweDQ0OWIyNjU5MDAwMDAwMDAsCisgICAgMHhlZTllZmNhODAwMDAwMDAwLCAweDdiOGM2OTEwMDAwMDAwMDAsIDB4ZDE4OWIzZTEwMDAwMDAwMCwKKyAgICAweDZlODFhYzI4MDAwMDAwMDAsIDB4YzQ4NDc2ZDkwMDAwMDAwMCwgMHgzZTExMWNhNTAwMDAwMDAwLAorICAgIDB4OTQxNGM2NTQwMDAwMDAwMCwgMHgyYjFjZDk5ZDAwMDAwMDAwLCAweDgxMTkwMzZjMDAwMDAwMDAsCisgICAgMHgxNDBiOTZkNDAwMDAwMDAwLCAweGJlMGU0YzI1MDAwMDAwMDAsIDB4MDEwNjUzZWMwMDAwMDAwMCwKKyAgICAweGFiMDM4OTFkMDAwMDAwMDAsIDB4NmEyNTA4NDYwMDAwMDAwMCwgMHhjMDIwZDJiNzAwMDAwMDAwLAorICAgIDB4N2YyOGNkN2UwMDAwMDAwMCwgMHhkNTJkMTc4ZjAwMDAwMDAwLCAweDQwM2Y4MjM3MDAwMDAwMDAsCisgICAgMHhlYTNhNThjNjAwMDAwMDAwLCAweDU1MzI0NzBmMDAwMDAwMDAsIDB4ZmYzNzlkZmUwMDAwMDAwMCwKKyAgICAweGQ3N2Y0NWI4MDAwMDAwMDAsIDB4N2Q3YTlmNDkwMDAwMDAwMCwgMHhjMjcyODA4MDAwMDAwMDAwLAorICAgIDB4Njg3NzVhNzEwMDAwMDAwMCwgMHhmZDY1Y2ZjOTAwMDAwMDAwLCAweDU3NjAxNTM4MDAwMDAwMDAsCisgICAgMHhlODY4MGFmMTAwMDAwMDAwLCAweDQyNmRkMDAwMDAwMDAwMDAsIDB4ODM0YjUxNWIwMDAwMDAwMCwKKyAgICAweDI5NGU4YmFhMDAwMDAwMDAsIDB4OTY0Njk0NjMwMDAwMDAwMCwgMHgzYzQzNGU5MjAwMDAwMDAwLAorICAgIDB4YTk1MWRiMmEwMDAwMDAwMCwgMHgwMzU0MDFkYjAwMDAwMDAwLCAweGJjNWMxZTEyMDAwMDAwMDAsCisgICAgMHgxNjU5YzRlMzAwMDAwMDAwfX07CisKKyNlbHNlIC8qIFcgPT0gNCAqLworCitsb2NhbCBjb25zdCB6X2NyY190IEZBUiBjcmNfYnJhaWRfdGFibGVbXVsyNTZdID0geworICAgezB4MDAwMDAwMDAsIDB4YWU2ODkxOTEsIDB4ODdhMDI1NjMsIDB4MjljOGI0ZjIsIDB4ZDQzMTRjODcsCisgICAgMHg3YTU5ZGQxNiwgMHg1MzkxNjllNCwgMHhmZGY5Zjg3NSwgMHg3MzEzOWY0ZiwgMHhkZDdiMGVkZSwKKyAgICAweGY0YjNiYTJjLCAweDVhZGIyYmJkLCAweGE3MjJkM2M4LCAweDA5NGE0MjU5LCAweDIwODJmNmFiLAorICAgIDB4OGVlYTY3M2EsIDB4ZTYyNzNlOWUsIDB4NDg0ZmFmMGYsIDB4NjE4NzFiZmQsIDB4Y2ZlZjhhNmMsCisgICAgMHgzMjE2NzIxOSwgMHg5YzdlZTM4OCwgMHhiNWI2NTc3YSwgMHgxYmRlYzZlYiwgMHg5NTM0YTFkMSwKKyAgICAweDNiNWMzMDQwLCAweDEyOTQ4NGIyLCAweGJjZmMxNTIzLCAweDQxMDVlZDU2LCAweGVmNmQ3Y2M3LAorICAgIDB4YzZhNWM4MzUsIDB4NjhjZDU5YTQsIDB4MTczZjdiN2QsIDB4Yjk1N2VhZWMsIDB4OTA5ZjVlMWUsCisgICAgMHgzZWY3Y2Y4ZiwgMHhjMzBlMzdmYSwgMHg2ZDY2YTY2YiwgMHg0NGFlMTI5OSwgMHhlYWM2ODMwOCwKKyAgICAweDY0MmNlNDMyLCAweGNhNDQ3NWEzLCAweGUzOGNjMTUxLCAweDRkZTQ1MGMwLCAweGIwMWRhOGI1LAorICAgIDB4MWU3NTM5MjQsIDB4MzdiZDhkZDYsIDB4OTlkNTFjNDcsIDB4ZjExODQ1ZTMsIDB4NWY3MGQ0NzIsCisgICAgMHg3NmI4NjA4MCwgMHhkOGQwZjExMSwgMHgyNTI5MDk2NCwgMHg4YjQxOThmNSwgMHhhMjg5MmMwNywKKyAgICAweDBjZTFiZDk2LCAweDgyMGJkYWFjLCAweDJjNjM0YjNkLCAweDA1YWJmZmNmLCAweGFiYzM2ZTVlLAorICAgIDB4NTYzYTk2MmIsIDB4Zjg1MjA3YmEsIDB4ZDE5YWIzNDgsIDB4N2ZmMjIyZDksIDB4MmU3ZWY2ZmEsCisgICAgMHg4MDE2Njc2YiwgMHhhOWRlZDM5OSwgMHgwN2I2NDIwOCwgMHhmYTRmYmE3ZCwgMHg1NDI3MmJlYywKKyAgICAweDdkZWY5ZjFlLCAweGQzODcwZThmLCAweDVkNmQ2OWI1LCAweGYzMDVmODI0LCAweGRhY2Q0Y2Q2LAorICAgIDB4NzRhNWRkNDcsIDB4ODk1YzI1MzIsIDB4MjczNGI0YTMsIDB4MGVmYzAwNTEsIDB4YTA5NDkxYzAsCisgICAgMHhjODU5Yzg2NCwgMHg2NjMxNTlmNSwgMHg0ZmY5ZWQwNywgMHhlMTkxN2M5NiwgMHgxYzY4ODRlMywKKyAgICAweGIyMDAxNTcyLCAweDliYzhhMTgwLCAweDM1YTAzMDExLCAweGJiNGE1NzJiLCAweDE1MjJjNmJhLAorICAgIDB4M2NlYTcyNDgsIDB4OTI4MmUzZDksIDB4NmY3YjFiYWMsIDB4YzExMzhhM2QsIDB4ZThkYjNlY2YsCisgICAgMHg0NmIzYWY1ZSwgMHgzOTQxOGQ4NywgMHg5NzI5MWMxNiwgMHhiZWUxYThlNCwgMHgxMDg5Mzk3NSwKKyAgICAweGVkNzBjMTAwLCAweDQzMTg1MDkxLCAweDZhZDBlNDYzLCAweGM0Yjg3NWYyLCAweDRhNTIxMmM4LAorICAgIDB4ZTQzYTgzNTksIDB4Y2RmMjM3YWIsIDB4NjM5YWE2M2EsIDB4OWU2MzVlNGYsIDB4MzAwYmNmZGUsCisgICAgMHgxOWMzN2IyYywgMHhiN2FiZWFiZCwgMHhkZjY2YjMxOSwgMHg3MTBlMjI4OCwgMHg1OGM2OTY3YSwKKyAgICAweGY2YWUwN2ViLCAweDBiNTdmZjllLCAweGE1M2Y2ZTBmLCAweDhjZjdkYWZkLCAweDIyOWY0YjZjLAorICAgIDB4YWM3NTJjNTYsIDB4MDIxZGJkYzcsIDB4MmJkNTA5MzUsIDB4ODViZDk4YTQsIDB4Nzg0NDYwZDEsCisgICAgMHhkNjJjZjE0MCwgMHhmZmU0NDViMiwgMHg1MThjZDQyMywgMHg1Y2ZkZWRmNCwgMHhmMjk1N2M2NSwKKyAgICAweGRiNWRjODk3LCAweDc1MzU1OTA2LCAweDg4Y2NhMTczLCAweDI2YTQzMGUyLCAweDBmNmM4NDEwLAorICAgIDB4YTEwNDE1ODEsIDB4MmZlZTcyYmIsIDB4ODE4NmUzMmEsIDB4YTg0ZTU3ZDgsIDB4MDYyNmM2NDksCisgICAgMHhmYmRmM2UzYywgMHg1NWI3YWZhZCwgMHg3YzdmMWI1ZiwgMHhkMjE3OGFjZSwgMHhiYWRhZDM2YSwKKyAgICAweDE0YjI0MmZiLCAweDNkN2FmNjA5LCAweDkzMTI2Nzk4LCAweDZlZWI5ZmVkLCAweGMwODMwZTdjLAorICAgIDB4ZTk0YmJhOGUsIDB4NDcyMzJiMWYsIDB4YzljOTRjMjUsIDB4NjdhMWRkYjQsIDB4NGU2OTY5NDYsCisgICAgMHhlMDAxZjhkNywgMHgxZGY4MDBhMiwgMHhiMzkwOTEzMywgMHg5YTU4MjVjMSwgMHgzNDMwYjQ1MCwKKyAgICAweDRiYzI5Njg5LCAweGU1YWEwNzE4LCAweGNjNjJiM2VhLCAweDYyMGEyMjdiLCAweDlmZjNkYTBlLAorICAgIDB4MzE5YjRiOWYsIDB4MTg1M2ZmNmQsIDB4YjYzYjZlZmMsIDB4MzhkMTA5YzYsIDB4OTZiOTk4NTcsCisgICAgMHhiZjcxMmNhNSwgMHgxMTE5YmQzNCwgMHhlY2UwNDU0MSwgMHg0Mjg4ZDRkMCwgMHg2YjQwNjAyMiwKKyAgICAweGM1MjhmMWIzLCAweGFkZTVhODE3LCAweDAzOGQzOTg2LCAweDJhNDU4ZDc0LCAweDg0MmQxY2U1LAorICAgIDB4NzlkNGU0OTAsIDB4ZDdiYzc1MDEsIDB4ZmU3NGMxZjMsIDB4NTAxYzUwNjIsIDB4ZGVmNjM3NTgsCisgICAgMHg3MDllYTZjOSwgMHg1OTU2MTIzYiwgMHhmNzNlODNhYSwgMHgwYWM3N2JkZiwgMHhhNGFmZWE0ZSwKKyAgICAweDhkNjc1ZWJjLCAweDIzMGZjZjJkLCAweDcyODMxYjBlLCAweGRjZWI4YTlmLCAweGY1MjMzZTZkLAorICAgIDB4NWI0YmFmZmMsIDB4YTZiMjU3ODksIDB4MDhkYWM2MTgsIDB4MjExMjcyZWEsIDB4OGY3YWUzN2IsCisgICAgMHgwMTkwODQ0MSwgMHhhZmY4MTVkMCwgMHg4NjMwYTEyMiwgMHgyODU4MzBiMywgMHhkNWExYzhjNiwKKyAgICAweDdiYzk1OTU3LCAweDUyMDFlZGE1LCAweGZjNjk3YzM0LCAweDk0YTQyNTkwLCAweDNhY2NiNDAxLAorICAgIDB4MTMwNDAwZjMsIDB4YmQ2YzkxNjIsIDB4NDA5NTY5MTcsIDB4ZWVmZGY4ODYsIDB4YzczNTRjNzQsCisgICAgMHg2OTVkZGRlNSwgMHhlN2I3YmFkZiwgMHg0OWRmMmI0ZSwgMHg2MDE3OWZiYywgMHhjZTdmMGUyZCwKKyAgICAweDMzODZmNjU4LCAweDlkZWU2N2M5LCAweGI0MjZkMzNiLCAweDFhNGU0MmFhLCAweDY1YmM2MDczLAorICAgIDB4Y2JkNGYxZTIsIDB4ZTIxYzQ1MTAsIDB4NGM3NGQ0ODEsIDB4YjE4ZDJjZjQsIDB4MWZlNWJkNjUsCisgICAgMHgzNjJkMDk5NywgMHg5ODQ1OTgwNiwgMHgxNmFmZmYzYywgMHhiOGM3NmVhZCwgMHg5MTBmZGE1ZiwKKyAgICAweDNmNjc0YmNlLCAweGMyOWViM2JiLCAweDZjZjYyMjJhLCAweDQ1M2U5NmQ4LCAweGViNTYwNzQ5LAorICAgIDB4ODM5YjVlZWQsIDB4MmRmM2NmN2MsIDB4MDQzYjdiOGUsIDB4YWE1M2VhMWYsIDB4NTdhYTEyNmEsCisgICAgMHhmOWMyODNmYiwgMHhkMDBhMzcwOSwgMHg3ZTYyYTY5OCwgMHhmMDg4YzFhMiwgMHg1ZWUwNTAzMywKKyAgICAweDc3MjhlNGMxLCAweGQ5NDA3NTUwLCAweDI0Yjk4ZDI1LCAweDhhZDExY2I0LCAweGEzMTlhODQ2LAorICAgIDB4MGQ3MTM5ZDd9LAorICAgezB4MDAwMDAwMDAsIDB4YjlmYmRiZTgsIDB4YTg4NmIxOTEsIDB4MTE3ZDZhNzksIDB4OGE3YzY1NjMsCisgICAgMHgzMzg3YmU4YiwgMHgyMmZhZDRmMiwgMHg5YjAxMGYxYSwgMHhjZjg5Y2M4NywgMHg3NjcyMTc2ZiwKKyAgICAweDY3MGY3ZDE2LCAweGRlZjRhNmZlLCAweDQ1ZjVhOWU0LCAweGZjMGU3MjBjLCAweGVkNzMxODc1LAorICAgIDB4NTQ4OGMzOWQsIDB4NDQ2MjlmNGYsIDB4ZmQ5OTQ0YTcsIDB4ZWNlNDJlZGUsIDB4NTUxZmY1MzYsCisgICAgMHhjZTFlZmEyYywgMHg3N2U1MjFjNCwgMHg2Njk4NGJiZCwgMHhkZjYzOTA1NSwgMHg4YmViNTNjOCwKKyAgICAweDMyMTA4ODIwLCAweDIzNmRlMjU5LCAweDlhOTYzOWIxLCAweDAxOTczNmFiLCAweGI4NmNlZDQzLAorICAgIDB4YTkxMTg3M2EsIDB4MTBlYTVjZDIsIDB4ODhjNTNlOWUsIDB4MzEzZWU1NzYsIDB4MjA0MzhmMGYsCisgICAgMHg5OWI4NTRlNywgMHgwMmI5NWJmZCwgMHhiYjQyODAxNSwgMHhhYTNmZWE2YywgMHgxM2M0MzE4NCwKKyAgICAweDQ3NGNmMjE5LCAweGZlYjcyOWYxLCAweGVmY2E0Mzg4LCAweDU2MzE5ODYwLCAweGNkMzA5NzdhLAorICAgIDB4NzRjYjRjOTIsIDB4NjViNjI2ZWIsIDB4ZGM0ZGZkMDMsIDB4Y2NhN2ExZDEsIDB4NzU1YzdhMzksCisgICAgMHg2NDIxMTA0MCwgMHhkZGRhY2JhOCwgMHg0NmRiYzRiMiwgMHhmZjIwMWY1YSwgMHhlZTVkNzUyMywKKyAgICAweDU3YTZhZWNiLCAweDAzMmU2ZDU2LCAweGJhZDViNmJlLCAweGFiYThkY2M3LCAweDEyNTMwNzJmLAorICAgIDB4ODk1MjA4MzUsIDB4MzBhOWQzZGQsIDB4MjFkNGI5YTQsIDB4OTgyZjYyNGMsIDB4Y2FmYjdiN2QsCisgICAgMHg3MzAwYTA5NSwgMHg2MjdkY2FlYywgMHhkYjg2MTEwNCwgMHg0MDg3MWUxZSwgMHhmOTdjYzVmNiwKKyAgICAweGU4MDFhZjhmLCAweDUxZmE3NDY3LCAweDA1NzJiN2ZhLCAweGJjODk2YzEyLCAweGFkZjQwNjZiLAorICAgIDB4MTQwZmRkODMsIDB4OGYwZWQyOTksIDB4MzZmNTA5NzEsIDB4Mjc4ODYzMDgsIDB4OWU3M2I4ZTAsCisgICAgMHg4ZTk5ZTQzMiwgMHgzNzYyM2ZkYSwgMHgyNjFmNTVhMywgMHg5ZmU0OGU0YiwgMHgwNGU1ODE1MSwKKyAgICAweGJkMWU1YWI5LCAweGFjNjMzMGMwLCAweDE1OThlYjI4LCAweDQxMTAyOGI1LCAweGY4ZWJmMzVkLAorICAgIDB4ZTk5Njk5MjQsIDB4NTA2ZDQyY2MsIDB4Y2I2YzRkZDYsIDB4NzI5Nzk2M2UsIDB4NjNlYWZjNDcsCisgICAgMHhkYTExMjdhZiwgMHg0MjNlNDVlMywgMHhmYmM1OWUwYiwgMHhlYWI4ZjQ3MiwgMHg1MzQzMmY5YSwKKyAgICAweGM4NDIyMDgwLCAweDcxYjlmYjY4LCAweDYwYzQ5MTExLCAweGQ5M2Y0YWY5LCAweDhkYjc4OTY0LAorICAgIDB4MzQ0YzUyOGMsIDB4MjUzMTM4ZjUsIDB4OWNjYWUzMWQsIDB4MDdjYmVjMDcsIDB4YmUzMDM3ZWYsCisgICAgMHhhZjRkNWQ5NiwgMHgxNmI2ODY3ZSwgMHgwNjVjZGFhYywgMHhiZmE3MDE0NCwgMHhhZWRhNmIzZCwKKyAgICAweDE3MjFiMGQ1LCAweDhjMjBiZmNmLCAweDM1ZGI2NDI3LCAweDI0YTYwZTVlLCAweDlkNWRkNWI2LAorICAgIDB4YzlkNTE2MmIsIDB4NzAyZWNkYzMsIDB4NjE1M2E3YmEsIDB4ZDhhODdjNTIsIDB4NDNhOTczNDgsCisgICAgMHhmYTUyYThhMCwgMHhlYjJmYzJkOSwgMHg1MmQ0MTkzMSwgMHg0ZTg3ZjBiYiwgMHhmNzdjMmI1MywKKyAgICAweGU2MDE0MTJhLCAweDVmZmE5YWMyLCAweGM0ZmI5NWQ4LCAweDdkMDA0ZTMwLCAweDZjN2QyNDQ5LAorICAgIDB4ZDU4NmZmYTEsIDB4ODEwZTNjM2MsIDB4MzhmNWU3ZDQsIDB4Mjk4ODhkYWQsIDB4OTA3MzU2NDUsCisgICAgMHgwYjcyNTk1ZiwgMHhiMjg5ODJiNywgMHhhM2Y0ZThjZSwgMHgxYTBmMzMyNiwgMHgwYWU1NmZmNCwKKyAgICAweGIzMWViNDFjLCAweGEyNjNkZTY1LCAweDFiOTgwNThkLCAweDgwOTkwYTk3LCAweDM5NjJkMTdmLAorICAgIDB4MjgxZmJiMDYsIDB4OTFlNDYwZWUsIDB4YzU2Y2EzNzMsIDB4N2M5Nzc4OWIsIDB4NmRlYTEyZTIsCisgICAgMHhkNDExYzkwYSwgMHg0ZjEwYzYxMCwgMHhmNmViMWRmOCwgMHhlNzk2Nzc4MSwgMHg1ZTZkYWM2OSwKKyAgICAweGM2NDJjZTI1LCAweDdmYjkxNWNkLCAweDZlYzQ3ZmI0LCAweGQ3M2ZhNDVjLCAweDRjM2VhYjQ2LAorICAgIDB4ZjVjNTcwYWUsIDB4ZTRiODFhZDcsIDB4NWQ0M2MxM2YsIDB4MDljYjAyYTIsIDB4YjAzMGQ5NGEsCisgICAgMHhhMTRkYjMzMywgMHgxOGI2NjhkYiwgMHg4M2I3NjdjMSwgMHgzYTRjYmMyOSwgMHgyYjMxZDY1MCwKKyAgICAweDkyY2EwZGI4LCAweDgyMjA1MTZhLCAweDNiZGI4YTgyLCAweDJhYTZlMGZiLCAweDkzNWQzYjEzLAorICAgIDB4MDg1YzM0MDksIDB4YjFhN2VmZTEsIDB4YTBkYTg1OTgsIDB4MTkyMTVlNzAsIDB4NGRhOTlkZWQsCisgICAgMHhmNDUyNDYwNSwgMHhlNTJmMmM3YywgMHg1Y2Q0Zjc5NCwgMHhjN2Q1Zjg4ZSwgMHg3ZTJlMjM2NiwKKyAgICAweDZmNTM0OTFmLCAweGQ2YTg5MmY3LCAweDg0N2M4YmM2LCAweDNkODc1MDJlLCAweDJjZmEzYTU3LAorICAgIDB4OTUwMWUxYmYsIDB4MGUwMGVlYTUsIDB4YjdmYjM1NGQsIDB4YTY4NjVmMzQsIDB4MWY3ZDg0ZGMsCisgICAgMHg0YmY1NDc0MSwgMHhmMjBlOWNhOSwgMHhlMzczZjZkMCwgMHg1YTg4MmQzOCwgMHhjMTg5MjIyMiwKKyAgICAweDc4NzJmOWNhLCAweDY5MGY5M2IzLCAweGQwZjQ0ODViLCAweGMwMWUxNDg5LCAweDc5ZTVjZjYxLAorICAgIDB4Njg5OGE1MTgsIDB4ZDE2MzdlZjAsIDB4NGE2MjcxZWEsIDB4ZjM5OWFhMDIsIDB4ZTJlNGMwN2IsCisgICAgMHg1YjFmMWI5MywgMHgwZjk3ZDgwZSwgMHhiNjZjMDNlNiwgMHhhNzExNjk5ZiwgMHgxZWVhYjI3NywKKyAgICAweDg1ZWJiZDZkLCAweDNjMTA2Njg1LCAweDJkNmQwY2ZjLCAweDk0OTZkNzE0LCAweDBjYjliNTU4LAorICAgIDB4YjU0MjZlYjAsIDB4YTQzZjA0YzksIDB4MWRjNGRmMjEsIDB4ODZjNWQwM2IsIDB4M2YzZTBiZDMsCisgICAgMHgyZTQzNjFhYSwgMHg5N2I4YmE0MiwgMHhjMzMwNzlkZiwgMHg3YWNiYTIzNywgMHg2YmI2Yzg0ZSwKKyAgICAweGQyNGQxM2E2LCAweDQ5NGMxY2JjLCAweGYwYjdjNzU0LCAweGUxY2FhZDJkLCAweDU4MzE3NmM1LAorICAgIDB4NDhkYjJhMTcsIDB4ZjEyMGYxZmYsIDB4ZTA1ZDliODYsIDB4NTlhNjQwNmUsIDB4YzJhNzRmNzQsCisgICAgMHg3YjVjOTQ5YywgMHg2YTIxZmVlNSwgMHhkM2RhMjUwZCwgMHg4NzUyZTY5MCwgMHgzZWE5M2Q3OCwKKyAgICAweDJmZDQ1NzAxLCAweDk2MmY4Y2U5LCAweDBkMmU4M2YzLCAweGI0ZDU1ODFiLCAweGE1YTgzMjYyLAorICAgIDB4MWM1M2U5OGF9LAorICAgezB4MDAwMDAwMDAsIDB4OWQwZmUxNzYsIDB4ZTE2ZWM0YWQsIDB4N2M2MTI1ZGIsIDB4MTlhYzhmMWIsCisgICAgMHg4NGEzNmU2ZCwgMHhmOGMyNGJiNiwgMHg2NWNkYWFjMCwgMHgzMzU5MWUzNiwgMHhhZTU2ZmY0MCwKKyAgICAweGQyMzdkYTliLCAweDRmMzgzYmVkLCAweDJhZjU5MTJkLCAweGI3ZmE3MDViLCAweGNiOWI1NTgwLAorICAgIDB4NTY5NGI0ZjYsIDB4NjZiMjNjNmMsIDB4ZmJiZGRkMWEsIDB4ODdkY2Y4YzEsIDB4MWFkMzE5YjcsCisgICAgMHg3ZjFlYjM3NywgMHhlMjExNTIwMSwgMHg5ZTcwNzdkYSwgMHgwMzdmOTZhYywgMHg1NWViMjI1YSwKKyAgICAweGM4ZTRjMzJjLCAweGI0ODVlNmY3LCAweDI5OGEwNzgxLCAweDRjNDdhZDQxLCAweGQxNDg0YzM3LAorICAgIDB4YWQyOTY5ZWMsIDB4MzAyNjg4OWEsIDB4Y2Q2NDc4ZDgsIDB4NTA2Yjk5YWUsIDB4MmMwYWJjNzUsCisgICAgMHhiMTA1NWQwMywgMHhkNGM4ZjdjMywgMHg0OWM3MTZiNSwgMHgzNWE2MzM2ZSwgMHhhOGE5ZDIxOCwKKyAgICAweGZlM2Q2NmVlLCAweDYzMzI4Nzk4LCAweDFmNTNhMjQzLCAweDgyNWM0MzM1LCAweGU3OTFlOWY1LAorICAgIDB4N2E5ZTA4ODMsIDB4MDZmZjJkNTgsIDB4OWJmMGNjMmUsIDB4YWJkNjQ0YjQsIDB4MzZkOWE1YzIsCisgICAgMHg0YWI4ODAxOSwgMHhkN2I3NjE2ZiwgMHhiMjdhY2JhZiwgMHgyZjc1MmFkOSwgMHg1MzE0MGYwMiwKKyAgICAweGNlMWJlZTc0LCAweDk4OGY1YTgyLCAweDA1ODBiYmY0LCAweDc5ZTE5ZTJmLCAweGU0ZWU3ZjU5LAorICAgIDB4ODEyM2Q1OTksIDB4MWMyYzM0ZWYsIDB4NjA0ZDExMzQsIDB4ZmQ0MmYwNDIsIDB4NDFiOWY3ZjEsCisgICAgMHhkY2I2MTY4NywgMHhhMGQ3MzM1YywgMHgzZGQ4ZDIyYSwgMHg1ODE1NzhlYSwgMHhjNTFhOTk5YywKKyAgICAweGI5N2JiYzQ3LCAweDI0NzQ1ZDMxLCAweDcyZTBlOWM3LCAweGVmZWYwOGIxLCAweDkzOGUyZDZhLAorICAgIDB4MGU4MWNjMWMsIDB4NmI0YzY2ZGMsIDB4ZjY0Mzg3YWEsIDB4OGEyMmEyNzEsIDB4MTcyZDQzMDcsCisgICAgMHgyNzBiY2I5ZCwgMHhiYTA0MmFlYiwgMHhjNjY1MGYzMCwgMHg1YjZhZWU0NiwgMHgzZWE3NDQ4NiwKKyAgICAweGEzYThhNWYwLCAweGRmYzk4MDJiLCAweDQyYzY2MTVkLCAweDE0NTJkNWFiLCAweDg5NWQzNGRkLAorICAgIDB4ZjUzYzExMDYsIDB4NjgzM2YwNzAsIDB4MGRmZTVhYjAsIDB4OTBmMWJiYzYsIDB4ZWM5MDllMWQsCisgICAgMHg3MTlmN2Y2YiwgMHg4Y2RkOGYyOSwgMHgxMWQyNmU1ZiwgMHg2ZGIzNGI4NCwgMHhmMGJjYWFmMiwKKyAgICAweDk1NzEwMDMyLCAweDA4N2VlMTQ0LCAweDc0MWZjNDlmLCAweGU5MTAyNWU5LCAweGJmODQ5MTFmLAorICAgIDB4MjI4YjcwNjksIDB4NWVlYTU1YjIsIDB4YzNlNWI0YzQsIDB4YTYyODFlMDQsIDB4M2IyN2ZmNzIsCisgICAgMHg0NzQ2ZGFhOSwgMHhkYTQ5M2JkZiwgMHhlYTZmYjM0NSwgMHg3NzYwNTIzMywgMHgwYjAxNzdlOCwKKyAgICAweDk2MGU5NjllLCAweGYzYzMzYzVlLCAweDZlY2NkZDI4LCAweDEyYWRmOGYzLCAweDhmYTIxOTg1LAorICAgIDB4ZDkzNmFkNzMsIDB4NDQzOTRjMDUsIDB4Mzg1ODY5ZGUsIDB4YTU1Nzg4YTgsIDB4YzA5YTIyNjgsCisgICAgMHg1ZDk1YzMxZSwgMHgyMWY0ZTZjNSwgMHhiY2ZiMDdiMywgMHg4MzczZWZlMiwgMHgxZTdjMGU5NCwKKyAgICAweDYyMWQyYjRmLCAweGZmMTJjYTM5LCAweDlhZGY2MGY5LCAweDA3ZDA4MThmLCAweDdiYjFhNDU0LAorICAgIDB4ZTZiZTQ1MjIsIDB4YjAyYWYxZDQsIDB4MmQyNTEwYTIsIDB4NTE0NDM1NzksIDB4Y2M0YmQ0MGYsCisgICAgMHhhOTg2N2VjZiwgMHgzNDg5OWZiOSwgMHg0OGU4YmE2MiwgMHhkNWU3NWIxNCwgMHhlNWMxZDM4ZSwKKyAgICAweDc4Y2UzMmY4LCAweDA0YWYxNzIzLCAweDk5YTBmNjU1LCAweGZjNmQ1Yzk1LCAweDYxNjJiZGUzLAorICAgIDB4MWQwMzk4MzgsIDB4ODAwYzc5NGUsIDB4ZDY5OGNkYjgsIDB4NGI5NzJjY2UsIDB4MzdmNjA5MTUsCisgICAgMHhhYWY5ZTg2MywgMHhjZjM0NDJhMywgMHg1MjNiYTNkNSwgMHgyZTVhODYwZSwgMHhiMzU1Njc3OCwKKyAgICAweDRlMTc5NzNhLCAweGQzMTg3NjRjLCAweGFmNzk1Mzk3LCAweDMyNzZiMmUxLCAweDU3YmIxODIxLAorICAgIDB4Y2FiNGY5NTcsIDB4YjZkNWRjOGMsIDB4MmJkYTNkZmEsIDB4N2Q0ZTg5MGMsIDB4ZTA0MTY4N2EsCisgICAgMHg5YzIwNGRhMSwgMHgwMTJmYWNkNywgMHg2NGUyMDYxNywgMHhmOWVkZTc2MSwgMHg4NThjYzJiYSwKKyAgICAweDE4ODMyM2NjLCAweDI4YTVhYjU2LCAweGI1YWE0YTIwLCAweGM5Y2I2ZmZiLCAweDU0YzQ4ZThkLAorICAgIDB4MzEwOTI0NGQsIDB4YWMwNmM1M2IsIDB4ZDA2N2UwZTAsIDB4NGQ2ODAxOTYsIDB4MWJmY2I1NjAsCisgICAgMHg4NmYzNTQxNiwgMHhmYTkyNzFjZCwgMHg2NzlkOTBiYiwgMHgwMjUwM2E3YiwgMHg5ZjVmZGIwZCwKKyAgICAweGUzM2VmZWQ2LCAweDdlMzExZmEwLCAweGMyY2ExODEzLCAweDVmYzVmOTY1LCAweDIzYTRkY2JlLAorICAgIDB4YmVhYjNkYzgsIDB4ZGI2Njk3MDgsIDB4NDY2OTc2N2UsIDB4M2EwODUzYTUsIDB4YTcwN2IyZDMsCisgICAgMHhmMTkzMDYyNSwgMHg2YzljZTc1MywgMHgxMGZkYzI4OCwgMHg4ZGYyMjNmZSwgMHhlODNmODkzZSwKKyAgICAweDc1MzA2ODQ4LCAweDA5NTE0ZDkzLCAweDk0NWVhY2U1LCAweGE0NzgyNDdmLCAweDM5NzdjNTA5LAorICAgIDB4NDUxNmUwZDIsIDB4ZDgxOTAxYTQsIDB4YmRkNGFiNjQsIDB4MjBkYjRhMTIsIDB4NWNiYTZmYzksCisgICAgMHhjMWI1OGViZiwgMHg5NzIxM2E0OSwgMHgwYTJlZGIzZiwgMHg3NjRmZmVlNCwgMHhlYjQwMWY5MiwKKyAgICAweDhlOGRiNTUyLCAweDEzODI1NDI0LCAweDZmZTM3MWZmLCAweGYyZWM5MDg5LCAweDBmYWU2MGNiLAorICAgIDB4OTJhMTgxYmQsIDB4ZWVjMGE0NjYsIDB4NzNjZjQ1MTAsIDB4MTYwMmVmZDAsIDB4OGIwZDBlYTYsCisgICAgMHhmNzZjMmI3ZCwgMHg2YTYzY2EwYiwgMHgzY2Y3N2VmZCwgMHhhMWY4OWY4YiwgMHhkZDk5YmE1MCwKKyAgICAweDQwOTY1YjI2LCAweDI1NWJmMWU2LCAweGI4NTQxMDkwLCAweGM0MzUzNTRiLCAweDU5M2FkNDNkLAorICAgIDB4NjkxYzVjYTcsIDB4ZjQxM2JkZDEsIDB4ODg3Mjk4MGEsIDB4MTU3ZDc5N2MsIDB4NzBiMGQzYmMsCisgICAgMHhlZGJmMzJjYSwgMHg5MWRlMTcxMSwgMHgwY2QxZjY2NywgMHg1YTQ1NDI5MSwgMHhjNzRhYTNlNywKKyAgICAweGJiMmI4NjNjLCAweDI2MjQ2NzRhLCAweDQzZTljZDhhLCAweGRlZTYyY2ZjLCAweGEyODcwOTI3LAorICAgIDB4M2Y4OGU4NTF9LAorICAgezB4MDAwMDAwMDAsIDB4ZGQ5NmQ5ODUsIDB4NjA1Y2I1NGIsIDB4YmRjYTZjY2UsIDB4YzBiOTZhOTYsCisgICAgMHgxZDJmYjMxMywgMHhhMGU1ZGZkZCwgMHg3ZDczMDY1OCwgMHg1YTAzZDM2ZCwgMHg4Nzk1MGFlOCwKKyAgICAweDNhNWY2NjI2LCAweGU3YzliZmEzLCAweDlhYmFiOWZiLCAweDQ3MmM2MDdlLCAweGZhZTYwY2IwLAorICAgIDB4Mjc3MGQ1MzUsIDB4YjQwN2E2ZGEsIDB4Njk5MTdmNWYsIDB4ZDQ1YjEzOTEsIDB4MDljZGNhMTQsCisgICAgMHg3NGJlY2M0YywgMHhhOTI4MTVjOSwgMHgxNGUyNzkwNywgMHhjOTc0YTA4MiwgMHhlZTA0NzViNywKKyAgICAweDMzOTJhYzMyLCAweDhlNThjMGZjLCAweDUzY2UxOTc5LCAweDJlYmQxZjIxLCAweGYzMmJjNmE0LAorICAgIDB4NGVlMWFhNmEsIDB4OTM3NzczZWYsIDB4YjM3ZTRiZjUsIDB4NmVlODkyNzAsIDB4ZDMyMmZlYmUsCisgICAgMHgwZWI0MjczYiwgMHg3M2M3MjE2MywgMHhhZTUxZjhlNiwgMHgxMzliOTQyOCwgMHhjZTBkNGRhZCwKKyAgICAweGU5N2Q5ODk4LCAweDM0ZWI0MTFkLCAweDg5MjEyZGQzLCAweDU0YjdmNDU2LCAweDI5YzRmMjBlLAorICAgIDB4ZjQ1MjJiOGIsIDB4NDk5ODQ3NDUsIDB4OTQwZTllYzAsIDB4MDc3OWVkMmYsIDB4ZGFlZjM0YWEsCisgICAgMHg2NzI1NTg2NCwgMHhiYWIzODFlMSwgMHhjN2MwODdiOSwgMHgxYTU2NWUzYywgMHhhNzljMzJmMiwKKyAgICAweDdhMGFlYjc3LCAweDVkN2EzZTQyLCAweDgwZWNlN2M3LCAweDNkMjY4YjA5LCAweGUwYjA1MjhjLAorICAgIDB4OWRjMzU0ZDQsIDB4NDA1NThkNTEsIDB4ZmQ5ZmUxOWYsIDB4MjAwOTM4MWEsIDB4YmQ4ZDkxYWIsCisgICAgMHg2MDFiNDgyZSwgMHhkZGQxMjRlMCwgMHgwMDQ3ZmQ2NSwgMHg3ZDM0ZmIzZCwgMHhhMGEyMjJiOCwKKyAgICAweDFkNjg0ZTc2LCAweGMwZmU5N2YzLCAweGU3OGU0MmM2LCAweDNhMTg5YjQzLCAweDg3ZDJmNzhkLAorICAgIDB4NWE0NDJlMDgsIDB4MjczNzI4NTAsIDB4ZmFhMWYxZDUsIDB4NDc2YjlkMWIsIDB4OWFmZDQ0OWUsCisgICAgMHgwOThhMzc3MSwgMHhkNDFjZWVmNCwgMHg2OWQ2ODIzYSwgMHhiNDQwNWJiZiwgMHhjOTMzNWRlNywKKyAgICAweDE0YTU4NDYyLCAweGE5NmZlOGFjLCAweDc0ZjkzMTI5LCAweDUzODllNDFjLCAweDhlMWYzZDk5LAorICAgIDB4MzNkNTUxNTcsIDB4ZWU0Mzg4ZDIsIDB4OTMzMDhlOGEsIDB4NGVhNjU3MGYsIDB4ZjM2YzNiYzEsCisgICAgMHgyZWZhZTI0NCwgMHgwZWYzZGE1ZSwgMHhkMzY1MDNkYiwgMHg2ZWFmNmYxNSwgMHhiMzM5YjY5MCwKKyAgICAweGNlNGFiMGM4LCAweDEzZGM2OTRkLCAweGFlMTYwNTgzLCAweDczODBkYzA2LCAweDU0ZjAwOTMzLAorICAgIDB4ODk2NmQwYjYsIDB4MzRhY2JjNzgsIDB4ZTkzYTY1ZmQsIDB4OTQ0OTYzYTUsIDB4NDlkZmJhMjAsCisgICAgMHhmNDE1ZDZlZSwgMHgyOTgzMGY2YiwgMHhiYWY0N2M4NCwgMHg2NzYyYTUwMSwgMHhkYWE4YzljZiwKKyAgICAweDA3M2UxMDRhLCAweDdhNGQxNjEyLCAweGE3ZGJjZjk3LCAweDFhMTFhMzU5LCAweGM3ODc3YWRjLAorICAgIDB4ZTBmN2FmZTksIDB4M2Q2MTc2NmMsIDB4ODBhYjFhYTIsIDB4NWQzZGMzMjcsIDB4MjA0ZWM1N2YsCisgICAgMHhmZGQ4MWNmYSwgMHg0MDEyNzAzNCwgMHg5ZDg0YTliMSwgMHhhMDZhMjUxNywgMHg3ZGZjZmM5MiwKKyAgICAweGMwMzY5MDVjLCAweDFkYTA0OWQ5LCAweDYwZDM0ZjgxLCAweGJkNDU5NjA0LCAweDAwOGZmYWNhLAorICAgIDB4ZGQxOTIzNGYsIDB4ZmE2OWY2N2EsIDB4MjdmZjJmZmYsIDB4OWEzNTQzMzEsIDB4NDdhMzlhYjQsCisgICAgMHgzYWQwOWNlYywgMHhlNzQ2NDU2OSwgMHg1YThjMjlhNywgMHg4NzFhZjAyMiwgMHgxNDZkODNjZCwKKyAgICAweGM5ZmI1YTQ4LCAweDc0MzEzNjg2LCAweGE5YTdlZjAzLCAweGQ0ZDRlOTViLCAweDA5NDIzMGRlLAorICAgIDB4YjQ4ODVjMTAsIDB4NjkxZTg1OTUsIDB4NGU2ZTUwYTAsIDB4OTNmODg5MjUsIDB4MmUzMmU1ZWIsCisgICAgMHhmM2E0M2M2ZSwgMHg4ZWQ3M2EzNiwgMHg1MzQxZTNiMywgMHhlZThiOGY3ZCwgMHgzMzFkNTZmOCwKKyAgICAweDEzMTQ2ZWUyLCAweGNlODJiNzY3LCAweDczNDhkYmE5LCAweGFlZGUwMjJjLCAweGQzYWQwNDc0LAorICAgIDB4MGUzYmRkZjEsIDB4YjNmMWIxM2YsIDB4NmU2NzY4YmEsIDB4NDkxN2JkOGYsIDB4OTQ4MTY0MGEsCisgICAgMHgyOTRiMDhjNCwgMHhmNGRkZDE0MSwgMHg4OWFlZDcxOSwgMHg1NDM4MGU5YywgMHhlOWYyNjI1MiwKKyAgICAweDM0NjRiYmQ3LCAweGE3MTNjODM4LCAweDdhODUxMWJkLCAweGM3NGY3ZDczLCAweDFhZDlhNGY2LAorICAgIDB4NjdhYWEyYWUsIDB4YmEzYzdiMmIsIDB4MDdmNjE3ZTUsIDB4ZGE2MGNlNjAsIDB4ZmQxMDFiNTUsCisgICAgMHgyMDg2YzJkMCwgMHg5ZDRjYWUxZSwgMHg0MGRhNzc5YiwgMHgzZGE5NzFjMywgMHhlMDNmYTg0NiwKKyAgICAweDVkZjVjNDg4LCAweDgwNjMxZDBkLCAweDFkZTdiNGJjLCAweGMwNzE2ZDM5LCAweDdkYmIwMWY3LAorICAgIDB4YTAyZGQ4NzIsIDB4ZGQ1ZWRlMmEsIDB4MDBjODA3YWYsIDB4YmQwMjZiNjEsIDB4NjA5NGIyZTQsCisgICAgMHg0N2U0NjdkMSwgMHg5YTcyYmU1NCwgMHgyN2I4ZDI5YSwgMHhmYTJlMGIxZiwgMHg4NzVkMGQ0NywKKyAgICAweDVhY2JkNGMyLCAweGU3MDFiODBjLCAweDNhOTc2MTg5LCAweGE5ZTAxMjY2LCAweDc0NzZjYmUzLAorICAgIDB4YzliY2E3MmQsIDB4MTQyYTdlYTgsIDB4Njk1OTc4ZjAsIDB4YjRjZmExNzUsIDB4MDkwNWNkYmIsCisgICAgMHhkNDkzMTQzZSwgMHhmM2UzYzEwYiwgMHgyZTc1MTg4ZSwgMHg5M2JmNzQ0MCwgMHg0ZTI5YWRjNSwKKyAgICAweDMzNWFhYjlkLCAweGVlY2M3MjE4LCAweDUzMDYxZWQ2LCAweDhlOTBjNzUzLCAweGFlOTlmZjQ5LAorICAgIDB4NzMwZjI2Y2MsIDB4Y2VjNTRhMDIsIDB4MTM1MzkzODcsIDB4NmUyMDk1ZGYsIDB4YjNiNjRjNWEsCisgICAgMHgwZTdjMjA5NCwgMHhkM2VhZjkxMSwgMHhmNDlhMmMyNCwgMHgyOTBjZjVhMSwgMHg5NGM2OTk2ZiwKKyAgICAweDQ5NTA0MGVhLCAweDM0MjM0NmIyLCAweGU5YjU5ZjM3LCAweDU0N2ZmM2Y5LCAweDg5ZTkyYTdjLAorICAgIDB4MWE5ZTU5OTMsIDB4YzcwODgwMTYsIDB4N2FjMmVjZDgsIDB4YTc1NDM1NWQsIDB4ZGEyNzMzMDUsCisgICAgMHgwN2IxZWE4MCwgMHhiYTdiODY0ZSwgMHg2N2VkNWZjYiwgMHg0MDlkOGFmZSwgMHg5ZDBiNTM3YiwKKyAgICAweDIwYzEzZmI1LCAweGZkNTdlNjMwLCAweDgwMjRlMDY4LCAweDVkYjIzOWVkLCAweGUwNzg1NTIzLAorICAgIDB4M2RlZThjYTZ9fTsKKworbG9jYWwgY29uc3Qgel93b3JkX3QgRkFSIGNyY19icmFpZF9iaWdfdGFibGVbXVsyNTZdID0geworICAgezB4MDAwMDAwMDAsIDB4ODVkOTk2ZGQsIDB4NGJiNTVjNjAsIDB4Y2U2Y2NhYmQsIDB4OTY2YWI5YzAsCisgICAgMHgxM2IzMmYxZCwgMHhkZGRmZTVhMCwgMHg1ODA2NzM3ZCwgMHg2ZGQzMDM1YSwgMHhlODBhOTU4NywKKyAgICAweDI2NjY1ZjNhLCAweGEzYmZjOWU3LCAweGZiYjliYTlhLCAweDdlNjAyYzQ3LCAweGIwMGNlNmZhLAorICAgIDB4MzVkNTcwMjcsIDB4ZGFhNjA3YjQsIDB4NWY3ZjkxNjksIDB4OTExMzViZDQsIDB4MTRjYWNkMDksCisgICAgMHg0Y2NjYmU3NCwgMHhjOTE1MjhhOSwgMHgwNzc5ZTIxNCwgMHg4MmEwNzRjOSwgMHhiNzc1MDRlZSwKKyAgICAweDMyYWM5MjMzLCAweGZjYzA1ODhlLCAweDc5MTljZTUzLCAweDIxMWZiZDJlLCAweGE0YzYyYmYzLAorICAgIDB4NmFhYWUxNGUsIDB4ZWY3Mzc3OTMsIDB4ZjU0YjdlYjMsIDB4NzA5MmU4NmUsIDB4YmVmZTIyZDMsCisgICAgMHgzYjI3YjQwZSwgMHg2MzIxYzc3MywgMHhlNmY4NTFhZSwgMHgyODk0OWIxMywgMHhhZDRkMGRjZSwKKyAgICAweDk4OTg3ZGU5LCAweDFkNDFlYjM0LCAweGQzMmQyMTg5LCAweDU2ZjRiNzU0LCAweDBlZjJjNDI5LAorICAgIDB4OGIyYjUyZjQsIDB4NDU0Nzk4NDksIDB4YzA5ZTBlOTQsIDB4MmZlZDc5MDcsIDB4YWEzNGVmZGEsCisgICAgMHg2NDU4MjU2NywgMHhlMTgxYjNiYSwgMHhiOTg3YzBjNywgMHgzYzVlNTYxYSwgMHhmMjMyOWNhNywKKyAgICAweDc3ZWIwYTdhLCAweDQyM2U3YTVkLCAweGM3ZTdlYzgwLCAweDA5OGIyNjNkLCAweDhjNTJiMGUwLAorICAgIDB4ZDQ1NGMzOWQsIDB4NTE4ZDU1NDAsIDB4OWZlMTlmZmQsIDB4MWEzODA5MjAsIDB4YWI5MThkYmQsCisgICAgMHgyZTQ4MWI2MCwgMHhlMDI0ZDFkZCwgMHg2NWZkNDcwMCwgMHgzZGZiMzQ3ZCwgMHhiODIyYTJhMCwKKyAgICAweDc2NGU2ODFkLCAweGYzOTdmZWMwLCAweGM2NDI4ZWU3LCAweDQzOWIxODNhLCAweDhkZjdkMjg3LAorICAgIDB4MDgyZTQ0NWEsIDB4NTAyODM3MjcsIDB4ZDVmMWExZmEsIDB4MWI5ZDZiNDcsIDB4OWU0NGZkOWEsCisgICAgMHg3MTM3OGEwOSwgMHhmNGVlMWNkNCwgMHgzYTgyZDY2OSwgMHhiZjViNDBiNCwgMHhlNzVkMzNjOSwKKyAgICAweDYyODRhNTE0LCAweGFjZTg2ZmE5LCAweDI5MzFmOTc0LCAweDFjZTQ4OTUzLCAweDk5M2QxZjhlLAorICAgIDB4NTc1MWQ1MzMsIDB4ZDI4ODQzZWUsIDB4OGE4ZTMwOTMsIDB4MGY1N2E2NGUsIDB4YzEzYjZjZjMsCisgICAgMHg0NGUyZmEyZSwgMHg1ZWRhZjMwZSwgMHhkYjAzNjVkMywgMHgxNTZmYWY2ZSwgMHg5MGI2MzliMywKKyAgICAweGM4YjA0YWNlLCAweDRkNjlkYzEzLCAweDgzMDUxNmFlLCAweDA2ZGM4MDczLCAweDMzMDlmMDU0LAorICAgIDB4YjZkMDY2ODksIDB4NzhiY2FjMzQsIDB4ZmQ2NTNhZTksIDB4YTU2MzQ5OTQsIDB4MjBiYWRmNDksCisgICAgMHhlZWQ2MTVmNCwgMHg2YjBmODMyOSwgMHg4NDdjZjRiYSwgMHgwMWE1NjI2NywgMHhjZmM5YThkYSwKKyAgICAweDRhMTAzZTA3LCAweDEyMTY0ZDdhLCAweDk3Y2ZkYmE3LCAweDU5YTMxMTFhLCAweGRjN2E4N2M3LAorICAgIDB4ZTlhZmY3ZTAsIDB4NmM3NjYxM2QsIDB4YTIxYWFiODAsIDB4MjdjMzNkNWQsIDB4N2ZjNTRlMjAsCisgICAgMHhmYTFjZDhmZCwgMHgzNDcwMTI0MCwgMHhiMWE5ODQ5ZCwgMHgxNzI1NmFhMCwgMHg5MmZjZmM3ZCwKKyAgICAweDVjOTAzNmMwLCAweGQ5NDlhMDFkLCAweDgxNGZkMzYwLCAweDA0OTY0NWJkLCAweGNhZmE4ZjAwLAorICAgIDB4NGYyMzE5ZGQsIDB4N2FmNjY5ZmEsIDB4ZmYyZmZmMjcsIDB4MzE0MzM1OWEsIDB4YjQ5YWEzNDcsCisgICAgMHhlYzljZDAzYSwgMHg2OTQ1NDZlNywgMHhhNzI5OGM1YSwgMHgyMmYwMWE4NywgMHhjZDgzNmQxNCwKKyAgICAweDQ4NWFmYmM5LCAweDg2MzYzMTc0LCAweDAzZWZhN2E5LCAweDViZTlkNGQ0LCAweGRlMzA0MjA5LAorICAgIDB4MTA1Yzg4YjQsIDB4OTU4NTFlNjksIDB4YTA1MDZlNGUsIDB4MjU4OWY4OTMsIDB4ZWJlNTMyMmUsCisgICAgMHg2ZTNjYTRmMywgMHgzNjNhZDc4ZSwgMHhiM2UzNDE1MywgMHg3ZDhmOGJlZSwgMHhmODU2MWQzMywKKyAgICAweGUyNmUxNDEzLCAweDY3Yjc4MmNlLCAweGE5ZGI0ODczLCAweDJjMDJkZWFlLCAweDc0MDRhZGQzLAorICAgIDB4ZjFkZDNiMGUsIDB4M2ZiMWYxYjMsIDB4YmE2ODY3NmUsIDB4OGZiZDE3NDksIDB4MGE2NDgxOTQsCisgICAgMHhjNDA4NGIyOSwgMHg0MWQxZGRmNCwgMHgxOWQ3YWU4OSwgMHg5YzBlMzg1NCwgMHg1MjYyZjJlOSwKKyAgICAweGQ3YmI2NDM0LCAweDM4YzgxM2E3LCAweGJkMTE4NTdhLCAweDczN2Q0ZmM3LCAweGY2YTRkOTFhLAorICAgIDB4YWVhMmFhNjcsIDB4MmI3YjNjYmEsIDB4ZTUxN2Y2MDcsIDB4NjBjZTYwZGEsIDB4NTUxYjEwZmQsCisgICAgMHhkMGMyODYyMCwgMHgxZWFlNGM5ZCwgMHg5Yjc3ZGE0MCwgMHhjMzcxYTkzZCwgMHg0NmE4M2ZlMCwKKyAgICAweDg4YzRmNTVkLCAweDBkMWQ2MzgwLCAweGJjYjRlNzFkLCAweDM5NmQ3MWMwLCAweGY3MDFiYjdkLAorICAgIDB4NzJkODJkYTAsIDB4MmFkZTVlZGQsIDB4YWYwN2M4MDAsIDB4NjE2YjAyYmQsIDB4ZTRiMjk0NjAsCisgICAgMHhkMTY3ZTQ0NywgMHg1NGJlNzI5YSwgMHg5YWQyYjgyNywgMHgxZjBiMmVmYSwgMHg0NzBkNWQ4NywKKyAgICAweGMyZDRjYjVhLCAweDBjYjgwMWU3LCAweDg5NjE5NzNhLCAweDY2MTJlMGE5LCAweGUzY2I3Njc0LAorICAgIDB4MmRhN2JjYzksIDB4YTg3ZTJhMTQsIDB4ZjA3ODU5NjksIDB4NzVhMWNmYjQsIDB4YmJjZDA1MDksCisgICAgMHgzZTE0OTNkNCwgMHgwYmMxZTNmMywgMHg4ZTE4NzUyZSwgMHg0MDc0YmY5MywgMHhjNWFkMjk0ZSwKKyAgICAweDlkYWI1YTMzLCAweDE4NzJjY2VlLCAweGQ2MWUwNjUzLCAweDUzYzc5MDhlLCAweDQ5ZmY5OWFlLAorICAgIDB4Y2MyNjBmNzMsIDB4MDI0YWM1Y2UsIDB4ODc5MzUzMTMsIDB4ZGY5NTIwNmUsIDB4NWE0Y2I2YjMsCisgICAgMHg5NDIwN2MwZSwgMHgxMWY5ZWFkMywgMHgyNDJjOWFmNCwgMHhhMWY1MGMyOSwgMHg2Zjk5YzY5NCwKKyAgICAweGVhNDA1MDQ5LCAweGIyNDYyMzM0LCAweDM3OWZiNWU5LCAweGY5ZjM3ZjU0LCAweDdjMmFlOTg5LAorICAgIDB4OTM1OTllMWEsIDB4MTY4MDA4YzcsIDB4ZDhlY2MyN2EsIDB4NWQzNTU0YTcsIDB4MDUzMzI3ZGEsCisgICAgMHg4MGVhYjEwNywgMHg0ZTg2N2JiYSwgMHhjYjVmZWQ2NywgMHhmZThhOWQ0MCwgMHg3YjUzMGI5ZCwKKyAgICAweGI1M2ZjMTIwLCAweDMwZTY1N2ZkLCAweDY4ZTAyNDgwLCAweGVkMzliMjVkLCAweDIzNTU3OGUwLAorICAgIDB4YTY4Y2VlM2R9LAorICAgezB4MDAwMDAwMDAsIDB4NzZlMTBmOWQsIDB4YWRjNDZlZTEsIDB4ZGIyNTYxN2MsIDB4MWI4ZmFjMTksCisgICAgMHg2ZDZlYTM4NCwgMHhiNjRiYzJmOCwgMHhjMGFhY2Q2NSwgMHgzNjFlNTkzMywgMHg0MGZmNTZhZSwKKyAgICAweDliZGEzN2QyLCAweGVkM2IzODRmLCAweDJkOTFmNTJhLCAweDViNzBmYWI3LCAweDgwNTU5YmNiLAorICAgIDB4ZjZiNDk0NTYsIDB4NmMzY2IyNjYsIDB4MWFkZGJkZmIsIDB4YzFmOGRjODcsIDB4YjcxOWQzMWEsCisgICAgMHg3N2IzMWU3ZiwgMHgwMTUyMTFlMiwgMHhkYTc3NzA5ZSwgMHhhYzk2N2YwMywgMHg1YTIyZWI1NSwKKyAgICAweDJjYzNlNGM4LCAweGY3ZTY4NWI0LCAweDgxMDc4YTI5LCAweDQxYWQ0NzRjLCAweDM3NGM0OGQxLAorICAgIDB4ZWM2OTI5YWQsIDB4OWE4ODI2MzAsIDB4ZDg3ODY0Y2QsIDB4YWU5OTZiNTAsIDB4NzViYzBhMmMsCisgICAgMHgwMzVkMDViMSwgMHhjM2Y3YzhkNCwgMHhiNTE2Yzc0OSwgMHg2ZTMzYTYzNSwgMHgxOGQyYTlhOCwKKyAgICAweGVlNjYzZGZlLCAweDk4ODczMjYzLCAweDQzYTI1MzFmLCAweDM1NDM1YzgyLCAweGY1ZTk5MWU3LAorICAgIDB4ODMwODllN2EsIDB4NTgyZGZmMDYsIDB4MmVjY2YwOWIsIDB4YjQ0NGQ2YWIsIDB4YzJhNWQ5MzYsCisgICAgMHgxOTgwYjg0YSwgMHg2ZjYxYjdkNywgMHhhZmNiN2FiMiwgMHhkOTJhNzUyZiwgMHgwMjBmMTQ1MywKKyAgICAweDc0ZWUxYmNlLCAweDgyNWE4Zjk4LCAweGY0YmI4MDA1LCAweDJmOWVlMTc5LCAweDU5N2ZlZWU0LAorICAgIDB4OTlkNTIzODEsIDB4ZWYzNDJjMWMsIDB4MzQxMTRkNjAsIDB4NDJmMDQyZmQsIDB4ZjFmN2I5NDEsCisgICAgMHg4NzE2YjZkYywgMHg1YzMzZDdhMCwgMHgyYWQyZDgzZCwgMHhlYTc4MTU1OCwgMHg5Yzk5MWFjNSwKKyAgICAweDQ3YmM3YmI5LCAweDMxNWQ3NDI0LCAweGM3ZTllMDcyLCAweGIxMDhlZmVmLCAweDZhMmQ4ZTkzLAorICAgIDB4MWNjYzgxMGUsIDB4ZGM2NjRjNmIsIDB4YWE4NzQzZjYsIDB4NzFhMjIyOGEsIDB4MDc0MzJkMTcsCisgICAgMHg5ZGNiMGIyNywgMHhlYjJhMDRiYSwgMHgzMDBmNjVjNiwgMHg0NmVlNmE1YiwgMHg4NjQ0YTczZSwKKyAgICAweGYwYTVhOGEzLCAweDJiODBjOWRmLCAweDVkNjFjNjQyLCAweGFiZDU1MjE0LCAweGRkMzQ1ZDg5LAorICAgIDB4MDYxMTNjZjUsIDB4NzBmMDMzNjgsIDB4YjA1YWZlMGQsIDB4YzZiYmYxOTAsIDB4MWQ5ZTkwZWMsCisgICAgMHg2YjdmOWY3MSwgMHgyOThmZGQ4YywgMHg1ZjZlZDIxMSwgMHg4NDRiYjM2ZCwgMHhmMmFhYmNmMCwKKyAgICAweDMyMDA3MTk1LCAweDQ0ZTE3ZTA4LCAweDlmYzQxZjc0LCAweGU5MjUxMGU5LCAweDFmOTE4NGJmLAorICAgIDB4Njk3MDhiMjIsIDB4YjI1NWVhNWUsIDB4YzRiNGU1YzMsIDB4MDQxZTI4YTYsIDB4NzJmZjI3M2IsCisgICAgMHhhOWRhNDY0NywgMHhkZjNiNDlkYSwgMHg0NWIzNmZlYSwgMHgzMzUyNjA3NywgMHhlODc3MDEwYiwKKyAgICAweDllOTYwZTk2LCAweDVlM2NjM2YzLCAweDI4ZGRjYzZlLCAweGYzZjhhZDEyLCAweDg1MTlhMjhmLAorICAgIDB4NzNhZDM2ZDksIDB4MDU0YzM5NDQsIDB4ZGU2OTU4MzgsIDB4YTg4ODU3YTUsIDB4NjgyMjlhYzAsCisgICAgMHgxZWMzOTU1ZCwgMHhjNWU2ZjQyMSwgMHhiMzA3ZmJiYywgMHhlMmVmNzM4MywgMHg5NDBlN2MxZSwKKyAgICAweDRmMmIxZDYyLCAweDM5Y2ExMmZmLCAweGY5NjBkZjlhLCAweDhmODFkMDA3LCAweDU0YTRiMTdiLAorICAgIDB4MjI0NWJlZTYsIDB4ZDRmMTJhYjAsIDB4YTIxMDI1MmQsIDB4NzkzNTQ0NTEsIDB4MGZkNDRiY2MsCisgICAgMHhjZjdlODZhOSwgMHhiOTlmODkzNCwgMHg2MmJhZTg0OCwgMHgxNDViZTdkNSwgMHg4ZWQzYzFlNSwKKyAgICAweGY4MzJjZTc4LCAweDIzMTdhZjA0LCAweDU1ZjZhMDk5LCAweDk1NWM2ZGZjLCAweGUzYmQ2MjYxLAorICAgIDB4Mzg5ODAzMWQsIDB4NGU3OTBjODAsIDB4YjhjZDk4ZDYsIDB4Y2UyYzk3NGIsIDB4MTUwOWY2MzcsCisgICAgMHg2M2U4ZjlhYSwgMHhhMzQyMzRjZiwgMHhkNWEzM2I1MiwgMHgwZTg2NWEyZSwgMHg3ODY3NTViMywKKyAgICAweDNhOTcxNzRlLCAweDRjNzYxOGQzLCAweDk3NTM3OWFmLCAweGUxYjI3NjMyLCAweDIxMThiYjU3LAorICAgIDB4NTdmOWI0Y2EsIDB4OGNkY2Q1YjYsIDB4ZmEzZGRhMmIsIDB4MGM4OTRlN2QsIDB4N2E2ODQxZTAsCisgICAgMHhhMTRkMjA5YywgMHhkN2FjMmYwMSwgMHgxNzA2ZTI2NCwgMHg2MWU3ZWRmOSwgMHhiYWMyOGM4NSwKKyAgICAweGNjMjM4MzE4LCAweDU2YWJhNTI4LCAweDIwNGFhYWI1LCAweGZiNmZjYmM5LCAweDhkOGVjNDU0LAorICAgIDB4NGQyNDA5MzEsIDB4M2JjNTA2YWMsIDB4ZTBlMDY3ZDAsIDB4OTYwMTY4NGQsIDB4NjBiNWZjMWIsCisgICAgMHgxNjU0ZjM4NiwgMHhjZDcxOTJmYSwgMHhiYjkwOWQ2NywgMHg3YjNhNTAwMiwgMHgwZGRiNWY5ZiwKKyAgICAweGQ2ZmUzZWUzLCAweGEwMWYzMTdlLCAweDEzMThjYWMyLCAweDY1ZjljNTVmLCAweGJlZGNhNDIzLAorICAgIDB4YzgzZGFiYmUsIDB4MDg5NzY2ZGIsIDB4N2U3NjY5NDYsIDB4YTU1MzA4M2EsIDB4ZDNiMjA3YTcsCisgICAgMHgyNTA2OTNmMSwgMHg1M2U3OWM2YywgMHg4OGMyZmQxMCwgMHhmZTIzZjI4ZCwgMHgzZTg5M2ZlOCwKKyAgICAweDQ4NjgzMDc1LCAweDkzNGQ1MTA5LCAweGU1YWM1ZTk0LCAweDdmMjQ3OGE0LCAweDA5YzU3NzM5LAorICAgIDB4ZDJlMDE2NDUsIDB4YTQwMTE5ZDgsIDB4NjRhYmQ0YmQsIDB4MTI0YWRiMjAsIDB4Yzk2ZmJhNWMsCisgICAgMHhiZjhlYjVjMSwgMHg0OTNhMjE5NywgMHgzZmRiMmUwYSwgMHhlNGZlNGY3NiwgMHg5MjFmNDBlYiwKKyAgICAweDUyYjU4ZDhlLCAweDI0NTQ4MjEzLCAweGZmNzFlMzZmLCAweDg5OTBlY2YyLCAweGNiNjBhZTBmLAorICAgIDB4YmQ4MWExOTIsIDB4NjZhNGMwZWUsIDB4MTA0NWNmNzMsIDB4ZDBlZjAyMTYsIDB4YTYwZTBkOGIsCisgICAgMHg3ZDJiNmNmNywgMHgwYmNhNjM2YSwgMHhmZDdlZjczYywgMHg4YjlmZjhhMSwgMHg1MGJhOTlkZCwKKyAgICAweDI2NWI5NjQwLCAweGU2ZjE1YjI1LCAweDkwMTA1NGI4LCAweDRiMzUzNWM0LCAweDNkZDQzYTU5LAorICAgIDB4YTc1YzFjNjksIDB4ZDFiZDEzZjQsIDB4MGE5ODcyODgsIDB4N2M3OTdkMTUsIDB4YmNkM2IwNzAsCisgICAgMHhjYTMyYmZlZCwgMHgxMTE3ZGU5MSwgMHg2N2Y2ZDEwYywgMHg5MTQyNDU1YSwgMHhlN2EzNGFjNywKKyAgICAweDNjODYyYmJiLCAweDRhNjcyNDI2LCAweDhhY2RlOTQzLCAweGZjMmNlNmRlLCAweDI3MDk4N2EyLAorICAgIDB4NTFlODg4M2Z9LAorICAgezB4MDAwMDAwMDAsIDB4ZThkYmZiYjksIDB4OTFiMTg2YTgsIDB4Nzk2YTdkMTEsIDB4NjM2NTdjOGEsCisgICAgMHg4YmJlODczMywgMHhmMmQ0ZmEyMiwgMHgxYTBmMDE5YiwgMHg4N2NjODljZiwgMHg2ZjE3NzI3NiwKKyAgICAweDE2N2QwZjY3LCAweGZlYTZmNGRlLCAweGU0YTlmNTQ1LCAweDBjNzIwZWZjLCAweDc1MTg3M2VkLAorICAgIDB4OWRjMzg4NTQsIDB4NGY5ZjYyNDQsIDB4YTc0NDk5ZmQsIDB4ZGUyZWU0ZWMsIDB4MzZmNTFmNTUsCisgICAgMHgyY2ZhMWVjZSwgMHhjNDIxZTU3NywgMHhiZDRiOTg2NiwgMHg1NTkwNjNkZiwgMHhjODUzZWI4YiwKKyAgICAweDIwODgxMDMyLCAweDU5ZTI2ZDIzLCAweGIxMzk5NjlhLCAweGFiMzY5NzAxLCAweDQzZWQ2Y2I4LAorICAgIDB4M2E4NzExYTksIDB4ZDI1Y2VhMTAsIDB4OWUzZWM1ODgsIDB4NzZlNTNlMzEsIDB4MGY4ZjQzMjAsCisgICAgMHhlNzU0Yjg5OSwgMHhmZDViYjkwMiwgMHgxNTgwNDJiYiwgMHg2Y2VhM2ZhYSwgMHg4NDMxYzQxMywKKyAgICAweDE5ZjI0YzQ3LCAweGYxMjliN2ZlLCAweDg4NDNjYWVmLCAweDYwOTgzMTU2LCAweDdhOTczMGNkLAorICAgIDB4OTI0Y2NiNzQsIDB4ZWIyNmI2NjUsIDB4MDNmZDRkZGMsIDB4ZDFhMWE3Y2MsIDB4Mzk3YTVjNzUsCisgICAgMHg0MDEwMjE2NCwgMHhhOGNiZGFkZCwgMHhiMmM0ZGI0NiwgMHg1YTFmMjBmZiwgMHgyMzc1NWRlZSwKKyAgICAweGNiYWVhNjU3LCAweDU2NmQyZTAzLCAweGJlYjZkNWJhLCAweGM3ZGNhOGFiLCAweDJmMDc1MzEyLAorICAgIDB4MzUwODUyODksIDB4ZGRkM2E5MzAsIDB4YTRiOWQ0MjEsIDB4NGM2MjJmOTgsIDB4N2Q3YmZiY2EsCisgICAgMHg5NWEwMDA3MywgMHhlY2NhN2Q2MiwgMHgwNDExODZkYiwgMHgxZTFlODc0MCwgMHhmNmM1N2NmOSwKKyAgICAweDhmYWYwMWU4LCAweDY3NzRmYTUxLCAweGZhYjc3MjA1LCAweDEyNmM4OWJjLCAweDZiMDZmNGFkLAorICAgIDB4ODNkZDBmMTQsIDB4OTlkMjBlOGYsIDB4NzEwOWY1MzYsIDB4MDg2Mzg4MjcsIDB4ZTBiODczOWUsCisgICAgMHgzMmU0OTk4ZSwgMHhkYTNmNjIzNywgMHhhMzU1MWYyNiwgMHg0YjhlZTQ5ZiwgMHg1MTgxZTUwNCwKKyAgICAweGI5NWExZWJkLCAweGMwMzA2M2FjLCAweDI4ZWI5ODE1LCAweGI1MjgxMDQxLCAweDVkZjNlYmY4LAorICAgIDB4MjQ5OTk2ZTksIDB4Y2M0MjZkNTAsIDB4ZDY0ZDZjY2IsIDB4M2U5Njk3NzIsIDB4NDdmY2VhNjMsCisgICAgMHhhZjI3MTFkYSwgMHhlMzQ1M2U0MiwgMHgwYjllYzVmYiwgMHg3MmY0YjhlYSwgMHg5YTJmNDM1MywKKyAgICAweDgwMjA0MmM4LCAweDY4ZmJiOTcxLCAweDExOTFjNDYwLCAweGY5NGEzZmQ5LCAweDY0ODliNzhkLAorICAgIDB4OGM1MjRjMzQsIDB4ZjUzODMxMjUsIDB4MWRlM2NhOWMsIDB4MDdlY2NiMDcsIDB4ZWYzNzMwYmUsCisgICAgMHg5NjVkNGRhZiwgMHg3ZTg2YjYxNiwgMHhhY2RhNWMwNiwgMHg0NDAxYTdiZiwgMHgzZDZiZGFhZSwKKyAgICAweGQ1YjAyMTE3LCAweGNmYmYyMDhjLCAweDI3NjRkYjM1LCAweDVlMGVhNjI0LCAweGI2ZDU1ZDlkLAorICAgIDB4MmIxNmQ1YzksIDB4YzNjZDJlNzAsIDB4YmFhNzUzNjEsIDB4NTI3Y2E4ZDgsIDB4NDg3M2E5NDMsCisgICAgMHhhMGE4NTJmYSwgMHhkOWMyMmZlYiwgMHgzMTE5ZDQ1MiwgMHhiYmYwODc0ZSwgMHg1MzJiN2NmNywKKyAgICAweDJhNDEwMWU2LCAweGMyOWFmYTVmLCAweGQ4OTVmYmM0LCAweDMwNGUwMDdkLCAweDQ5MjQ3ZDZjLAorICAgIDB4YTFmZjg2ZDUsIDB4M2MzYzBlODEsIDB4ZDRlN2Y1MzgsIDB4YWQ4ZDg4MjksIDB4NDU1NjczOTAsCisgICAgMHg1ZjU5NzIwYiwgMHhiNzgyODliMiwgMHhjZWU4ZjRhMywgMHgyNjMzMGYxYSwgMHhmNDZmZTUwYSwKKyAgICAweDFjYjQxZWIzLCAweDY1ZGU2M2EyLCAweDhkMDU5ODFiLCAweDk3MGE5OTgwLCAweDdmZDE2MjM5LAorICAgIDB4MDZiYjFmMjgsIDB4ZWU2MGU0OTEsIDB4NzNhMzZjYzUsIDB4OWI3ODk3N2MsIDB4ZTIxMmVhNmQsCisgICAgMHgwYWM5MTFkNCwgMHgxMGM2MTA0ZiwgMHhmODFkZWJmNiwgMHg4MTc3OTZlNywgMHg2OWFjNmQ1ZSwKKyAgICAweDI1Y2U0MmM2LCAweGNkMTViOTdmLCAweGI0N2ZjNDZlLCAweDVjYTQzZmQ3LCAweDQ2YWIzZTRjLAorICAgIDB4YWU3MGM1ZjUsIDB4ZDcxYWI4ZTQsIDB4M2ZjMTQzNWQsIDB4YTIwMmNiMDksIDB4NGFkOTMwYjAsCisgICAgMHgzM2IzNGRhMSwgMHhkYjY4YjYxOCwgMHhjMTY3Yjc4MywgMHgyOWJjNGMzYSwgMHg1MGQ2MzEyYiwKKyAgICAweGI4MGRjYTkyLCAweDZhNTEyMDgyLCAweDgyOGFkYjNiLCAweGZiZTBhNjJhLCAweDEzM2I1ZDkzLAorICAgIDB4MDkzNDVjMDgsIDB4ZTFlZmE3YjEsIDB4OTg4NWRhYTAsIDB4NzA1ZTIxMTksIDB4ZWQ5ZGE5NGQsCisgICAgMHgwNTQ2NTJmNCwgMHg3YzJjMmZlNSwgMHg5NGY3ZDQ1YywgMHg4ZWY4ZDVjNywgMHg2NjIzMmU3ZSwKKyAgICAweDFmNDk1MzZmLCAweGY3OTJhOGQ2LCAweGM2OGI3Yzg0LCAweDJlNTA4NzNkLCAweDU3M2FmYTJjLAorICAgIDB4YmZlMTAxOTUsIDB4YTVlZTAwMGUsIDB4NGQzNWZiYjcsIDB4MzQ1Zjg2YTYsIDB4ZGM4NDdkMWYsCisgICAgMHg0MTQ3ZjU0YiwgMHhhOTljMGVmMiwgMHhkMGY2NzNlMywgMHgzODJkODg1YSwgMHgyMjIyODljMSwKKyAgICAweGNhZjk3Mjc4LCAweGIzOTMwZjY5LCAweDViNDhmNGQwLCAweDg5MTQxZWMwLCAweDYxY2ZlNTc5LAorICAgIDB4MThhNTk4NjgsIDB4ZjA3ZTYzZDEsIDB4ZWE3MTYyNGEsIDB4MDJhYTk5ZjMsIDB4N2JjMGU0ZTIsCisgICAgMHg5MzFiMWY1YiwgMHgwZWQ4OTcwZiwgMHhlNjAzNmNiNiwgMHg5ZjY5MTFhNywgMHg3N2IyZWExZSwKKyAgICAweDZkYmRlYjg1LCAweDg1NjYxMDNjLCAweGZjMGM2ZDJkLCAweDE0ZDc5Njk0LCAweDU4YjViOTBjLAorICAgIDB4YjA2ZTQyYjUsIDB4YzkwNDNmYTQsIDB4MjFkZmM0MWQsIDB4M2JkMGM1ODYsIDB4ZDMwYjNlM2YsCisgICAgMHhhYTYxNDMyZSwgMHg0MmJhYjg5NywgMHhkZjc5MzBjMywgMHgzN2EyY2I3YSwgMHg0ZWM4YjY2YiwKKyAgICAweGE2MTM0ZGQyLCAweGJjMWM0YzQ5LCAweDU0YzdiN2YwLCAweDJkYWRjYWUxLCAweGM1NzYzMTU4LAorICAgIDB4MTcyYWRiNDgsIDB4ZmZmMTIwZjEsIDB4ODY5YjVkZTAsIDB4NmU0MGE2NTksIDB4NzQ0ZmE3YzIsCisgICAgMHg5Yzk0NWM3YiwgMHhlNWZlMjE2YSwgMHgwZDI1ZGFkMywgMHg5MGU2NTI4NywgMHg3ODNkYTkzZSwKKyAgICAweDAxNTdkNDJmLCAweGU5OGMyZjk2LCAweGYzODMyZTBkLCAweDFiNThkNWI0LCAweDYyMzJhOGE1LAorICAgIDB4OGFlOTUzMWN9LAorICAgezB4MDAwMDAwMDAsIDB4OTE5MTY4YWUsIDB4NjMyNWEwODcsIDB4ZjJiNGM4MjksIDB4ODc0YzMxZDQsCisgICAgMHgxNmRkNTk3YSwgMHhlNDY5OTE1MywgMHg3NWY4ZjlmZCwgMHg0ZjlmMTM3MywgMHhkZTBlN2JkZCwKKyAgICAweDJjYmFiM2Y0LCAweGJkMmJkYjVhLCAweGM4ZDMyMmE3LCAweDU5NDI0YTA5LCAweGFiZjY4MjIwLAorICAgIDB4M2E2N2VhOGUsIDB4OWUzZTI3ZTYsIDB4MGZhZjRmNDgsIDB4ZmQxYjg3NjEsIDB4NmM4YWVmY2YsCisgICAgMHgxOTcyMTYzMiwgMHg4OGUzN2U5YywgMHg3YTU3YjZiNSwgMHhlYmM2ZGUxYiwgMHhkMWExMzQ5NSwKKyAgICAweDQwMzA1YzNiLCAweGIyODQ5NDEyLCAweDIzMTVmY2JjLCAweDU2ZWQwNTQxLCAweGM3N2M2ZGVmLAorICAgIDB4MzVjOGE1YzYsIDB4YTQ1OWNkNjgsIDB4N2Q3YjNmMTcsIDB4ZWNlYTU3YjksIDB4MWU1ZTlmOTAsCisgICAgMHg4ZmNmZjczZSwgMHhmYTM3MGVjMywgMHg2YmE2NjY2ZCwgMHg5OTEyYWU0NCwgMHgwODgzYzZlYSwKKyAgICAweDMyZTQyYzY0LCAweGEzNzU0NGNhLCAweDUxYzE4Y2UzLCAweGMwNTBlNDRkLCAweGI1YTgxZGIwLAorICAgIDB4MjQzOTc1MWUsIDB4ZDY4ZGJkMzcsIDB4NDcxY2Q1OTksIDB4ZTM0NTE4ZjEsIDB4NzJkNDcwNWYsCisgICAgMHg4MDYwYjg3NiwgMHgxMWYxZDBkOCwgMHg2NDA5MjkyNSwgMHhmNTk4NDE4YiwgMHgwNzJjODlhMiwKKyAgICAweDk2YmRlMTBjLCAweGFjZGEwYjgyLCAweDNkNGI2MzJjLCAweGNmZmZhYjA1LCAweDVlNmVjM2FiLAorICAgIDB4MmI5NjNhNTYsIDB4YmEwNzUyZjgsIDB4NDhiMzlhZDEsIDB4ZDkyMmYyN2YsIDB4ZmFmNjdlMmUsCisgICAgMHg2YjY3MTY4MCwgMHg5OWQzZGVhOSwgMHgwODQyYjYwNywgMHg3ZGJhNGZmYSwgMHhlYzJiMjc1NCwKKyAgICAweDFlOWZlZjdkLCAweDhmMGU4N2QzLCAweGI1Njk2ZDVkLCAweDI0ZjgwNWYzLCAweGQ2NGNjZGRhLAorICAgIDB4NDdkZGE1NzQsIDB4MzIyNTVjODksIDB4YTNiNDM0MjcsIDB4NTEwMGZjMGUsIDB4YzA5MTk0YTAsCisgICAgMHg2NGM4NTljOCwgMHhmNTU5MzE2NiwgMHgwN2VkZjk0ZiwgMHg5NjdjOTFlMSwgMHhlMzg0NjgxYywKKyAgICAweDcyMTUwMGIyLCAweDgwYTFjODliLCAweDExMzBhMDM1LCAweDJiNTc0YWJiLCAweGJhYzYyMjE1LAorICAgIDB4NDg3MmVhM2MsIDB4ZDllMzgyOTIsIDB4YWMxYjdiNmYsIDB4M2Q4YTEzYzEsIDB4Y2YzZWRiZTgsCisgICAgMHg1ZWFmYjM0NiwgMHg4NzhkNDEzOSwgMHgxNjFjMjk5NywgMHhlNGE4ZTFiZSwgMHg3NTM5ODkxMCwKKyAgICAweDAwYzE3MGVkLCAweDkxNTAxODQzLCAweDYzZTRkMDZhLCAweGYyNzViOGM0LCAweGM4MTI1MjRhLAorICAgIDB4NTk4MzNhZTQsIDB4YWIzN2YyY2QsIDB4M2FhNjlhNjMsIDB4NGY1ZTYzOWUsIDB4ZGVjZjBiMzAsCisgICAgMHgyYzdiYzMxOSwgMHhiZGVhYWJiNywgMHgxOWIzNjZkZiwgMHg4ODIyMGU3MSwgMHg3YTk2YzY1OCwKKyAgICAweGViMDdhZWY2LCAweDllZmY1NzBiLCAweDBmNmUzZmE1LCAweGZkZGFmNzhjLCAweDZjNGI5ZjIyLAorICAgIDB4NTYyYzc1YWMsIDB4YzdiZDFkMDIsIDB4MzUwOWQ1MmIsIDB4YTQ5OGJkODUsIDB4ZDE2MDQ0NzgsCisgICAgMHg0MGYxMmNkNiwgMHhiMjQ1ZTRmZiwgMHgyM2Q0OGM1MSwgMHhmNGVkZmQ1YywgMHg2NTdjOTVmMiwKKyAgICAweDk3Yzg1ZGRiLCAweDA2NTkzNTc1LCAweDczYTFjYzg4LCAweGUyMzBhNDI2LCAweDEwODQ2YzBmLAorICAgIDB4ODExNTA0YTEsIDB4YmI3MmVlMmYsIDB4MmFlMzg2ODEsIDB4ZDg1NzRlYTgsIDB4NDljNjI2MDYsCisgICAgMHgzYzNlZGZmYiwgMHhhZGFmYjc1NSwgMHg1ZjFiN2Y3YywgMHhjZThhMTdkMiwgMHg2YWQzZGFiYSwKKyAgICAweGZiNDJiMjE0LCAweDA5ZjY3YTNkLCAweDk4NjcxMjkzLCAweGVkOWZlYjZlLCAweDdjMGU4M2MwLAorICAgIDB4OGViYTRiZTksIDB4MWYyYjIzNDcsIDB4MjU0Y2M5YzksIDB4YjRkZGExNjcsIDB4NDY2OTY5NGUsCisgICAgMHhkN2Y4MDFlMCwgMHhhMjAwZjgxZCwgMHgzMzkxOTBiMywgMHhjMTI1NTg5YSwgMHg1MGI0MzAzNCwKKyAgICAweDg5OTZjMjRiLCAweDE4MDdhYWU1LCAweGVhYjM2MmNjLCAweDdiMjIwYTYyLCAweDBlZGFmMzlmLAorICAgIDB4OWY0YjliMzEsIDB4NmRmZjUzMTgsIDB4ZmM2ZTNiYjYsIDB4YzYwOWQxMzgsIDB4NTc5OGI5OTYsCisgICAgMHhhNTJjNzFiZiwgMHgzNGJkMTkxMSwgMHg0MTQ1ZTBlYywgMHhkMGQ0ODg0MiwgMHgyMjYwNDA2YiwKKyAgICAweGIzZjEyOGM1LCAweDE3YThlNWFkLCAweDg2Mzk4ZDAzLCAweDc0OGQ0NTJhLCAweGU1MWMyZDg0LAorICAgIDB4OTBlNGQ0NzksIDB4MDE3NWJjZDcsIDB4ZjNjMTc0ZmUsIDB4NjI1MDFjNTAsIDB4NTgzN2Y2ZGUsCisgICAgMHhjOWE2OWU3MCwgMHgzYjEyNTY1OSwgMHhhYTgzM2VmNywgMHhkZjdiYzcwYSwgMHg0ZWVhYWZhNCwKKyAgICAweGJjNWU2NzhkLCAweDJkY2YwZjIzLCAweDBlMWI4MzcyLCAweDlmOGFlYmRjLCAweDZkM2UyM2Y1LAorICAgIDB4ZmNhZjRiNWIsIDB4ODk1N2IyYTYsIDB4MThjNmRhMDgsIDB4ZWE3MjEyMjEsIDB4N2JlMzdhOGYsCisgICAgMHg0MTg0OTAwMSwgMHhkMDE1ZjhhZiwgMHgyMmExMzA4NiwgMHhiMzMwNTgyOCwgMHhjNmM4YTFkNSwKKyAgICAweDU3NTljOTdiLCAweGE1ZWQwMTUyLCAweDM0N2M2OWZjLCAweDkwMjVhNDk0LCAweDAxYjRjYzNhLAorICAgIDB4ZjMwMDA0MTMsIDB4NjI5MTZjYmQsIDB4MTc2OTk1NDAsIDB4ODZmOGZkZWUsIDB4NzQ0YzM1YzcsCisgICAgMHhlNWRkNWQ2OSwgMHhkZmJhYjdlNywgMHg0ZTJiZGY0OSwgMHhiYzlmMTc2MCwgMHgyZDBlN2ZjZSwKKyAgICAweDU4ZjY4NjMzLCAweGM5NjdlZTlkLCAweDNiZDMyNmI0LCAweGFhNDI0ZTFhLCAweDczNjBiYzY1LAorICAgIDB4ZTJmMWQ0Y2IsIDB4MTA0NTFjZTIsIDB4ODFkNDc0NGMsIDB4ZjQyYzhkYjEsIDB4NjViZGU1MWYsCisgICAgMHg5NzA5MmQzNiwgMHgwNjk4NDU5OCwgMHgzY2ZmYWYxNiwgMHhhZDZlYzdiOCwgMHg1ZmRhMGY5MSwKKyAgICAweGNlNGI2NzNmLCAweGJiYjM5ZWMyLCAweDJhMjJmNjZjLCAweGQ4OTYzZTQ1LCAweDQ5MDc1NmViLAorICAgIDB4ZWQ1ZTliODMsIDB4N2NjZmYzMmQsIDB4OGU3YjNiMDQsIDB4MWZlYTUzYWEsIDB4NmExMmFhNTcsCisgICAgMHhmYjgzYzJmOSwgMHgwOTM3MGFkMCwgMHg5OGE2NjI3ZSwgMHhhMmMxODhmMCwgMHgzMzUwZTA1ZSwKKyAgICAweGMxZTQyODc3LCAweDUwNzU0MGQ5LCAweDI1OGRiOTI0LCAweGI0MWNkMThhLCAweDQ2YTgxOWEzLAorICAgIDB4ZDczOTcxMGR9fTsKKworI2VuZGlmCisKKyNlbmRpZgorCisjaWYgTiA9PSA1CisKKyNpZiBXID09IDgKKworbG9jYWwgY29uc3Qgel9jcmNfdCBGQVIgY3JjX2JyYWlkX3RhYmxlW11bMjU2XSA9IHsKKyAgIHsweDAwMDAwMDAwLCAweGFmNDQ5MjQ3LCAweDg1ZjgyMmNmLCAweDJhYmNiMDg4LCAweGQwODE0M2RmLAorICAgIDB4N2ZjNWQxOTgsIDB4NTU3OTYxMTAsIDB4ZmEzZGYzNTcsIDB4N2E3MzgxZmYsIDB4ZDUzNzEzYjgsCisgICAgMHhmZjhiYTMzMCwgMHg1MGNmMzE3NywgMHhhYWYyYzIyMCwgMHgwNWI2NTA2NywgMHgyZjBhZTBlZiwKKyAgICAweDgwNGU3MmE4LCAweGY0ZTcwM2ZlLCAweDViYTM5MWI5LCAweDcxMWYyMTMxLCAweGRlNWJiMzc2LAorICAgIDB4MjQ2NjQwMjEsIDB4OGIyMmQyNjYsIDB4YTE5ZTYyZWUsIDB4MGVkYWYwYTksIDB4OGU5NDgyMDEsCisgICAgMHgyMWQwMTA0NiwgMHgwYjZjYTBjZSwgMHhhNDI4MzI4OSwgMHg1ZTE1YzFkZSwgMHhmMTUxNTM5OSwKKyAgICAweGRiZWRlMzExLCAweDc0YTk3MTU2LCAweDMyYmYwMWJkLCAweDlkZmI5M2ZhLCAweGI3NDcyMzcyLAorICAgIDB4MTgwM2IxMzUsIDB4ZTIzZTQyNjIsIDB4NGQ3YWQwMjUsIDB4NjdjNjYwYWQsIDB4Yzg4MmYyZWEsCisgICAgMHg0OGNjODA0MiwgMHhlNzg4MTIwNSwgMHhjZDM0YTI4ZCwgMHg2MjcwMzBjYSwgMHg5ODRkYzM5ZCwKKyAgICAweDM3MDk1MWRhLCAweDFkYjVlMTUyLCAweGIyZjE3MzE1LCAweGM2NTgwMjQzLCAweDY5MWM5MDA0LAorICAgIDB4NDNhMDIwOGMsIDB4ZWNlNGIyY2IsIDB4MTZkOTQxOWMsIDB4Yjk5ZGQzZGIsIDB4OTMyMTYzNTMsCisgICAgMHgzYzY1ZjExNCwgMHhiYzJiODNiYywgMHgxMzZmMTFmYiwgMHgzOWQzYTE3MywgMHg5Njk3MzMzNCwKKyAgICAweDZjYWFjMDYzLCAweGMzZWU1MjI0LCAweGU5NTJlMmFjLCAweDQ2MTY3MGViLCAweDY1N2UwMzdhLAorICAgIDB4Y2EzYTkxM2QsIDB4ZTA4NjIxYjUsIDB4NGZjMmIzZjIsIDB4YjVmZjQwYTUsIDB4MWFiYmQyZTIsCisgICAgMHgzMDA3NjI2YSwgMHg5ZjQzZjAyZCwgMHgxZjBkODI4NSwgMHhiMDQ5MTBjMiwgMHg5YWY1YTA0YSwKKyAgICAweDM1YjEzMjBkLCAweGNmOGNjMTVhLCAweDYwYzg1MzFkLCAweDRhNzRlMzk1LCAweGU1MzA3MWQyLAorICAgIDB4OTE5OTAwODQsIDB4M2VkZDkyYzMsIDB4MTQ2MTIyNGIsIDB4YmIyNWIwMGMsIDB4NDExODQzNWIsCisgICAgMHhlZTVjZDExYywgMHhjNGUwNjE5NCwgMHg2YmE0ZjNkMywgMHhlYmVhODE3YiwgMHg0NGFlMTMzYywKKyAgICAweDZlMTJhM2I0LCAweGMxNTYzMWYzLCAweDNiNmJjMmE0LCAweDk0MmY1MGUzLCAweGJlOTNlMDZiLAorICAgIDB4MTFkNzcyMmMsIDB4NTdjMTAyYzcsIDB4Zjg4NTkwODAsIDB4ZDIzOTIwMDgsIDB4N2Q3ZGIyNGYsCisgICAgMHg4NzQwNDExOCwgMHgyODA0ZDM1ZiwgMHgwMmI4NjNkNywgMHhhZGZjZjE5MCwgMHgyZGIyODMzOCwKKyAgICAweDgyZjYxMTdmLCAweGE4NGFhMWY3LCAweDA3MGUzM2IwLCAweGZkMzNjMGU3LCAweDUyNzc1MmEwLAorICAgIDB4NzhjYmUyMjgsIDB4ZDc4ZjcwNmYsIDB4YTMyNjAxMzksIDB4MGM2MjkzN2UsIDB4MjZkZTIzZjYsCisgICAgMHg4OTlhYjFiMSwgMHg3M2E3NDJlNiwgMHhkY2UzZDBhMSwgMHhmNjVmNjAyOSwgMHg1OTFiZjI2ZSwKKyAgICAweGQ5NTU4MGM2LCAweDc2MTExMjgxLCAweDVjYWRhMjA5LCAweGYzZTkzMDRlLCAweDA5ZDRjMzE5LAorICAgIDB4YTY5MDUxNWUsIDB4OGMyY2UxZDYsIDB4MjM2ODczOTEsIDB4Y2FmYzA2ZjQsIDB4NjViODk0YjMsCisgICAgMHg0ZjA0MjQzYiwgMHhlMDQwYjY3YywgMHgxYTdkNDUyYiwgMHhiNTM5ZDc2YywgMHg5Zjg1NjdlNCwKKyAgICAweDMwYzFmNWEzLCAweGIwOGY4NzBiLCAweDFmY2IxNTRjLCAweDM1NzdhNWM0LCAweDlhMzMzNzgzLAorICAgIDB4NjAwZWM0ZDQsIDB4Y2Y0YTU2OTMsIDB4ZTVmNmU2MWIsIDB4NGFiMjc0NWMsIDB4M2UxYjA1MGEsCisgICAgMHg5MTVmOTc0ZCwgMHhiYmUzMjdjNSwgMHgxNGE3YjU4MiwgMHhlZTlhNDZkNSwgMHg0MWRlZDQ5MiwKKyAgICAweDZiNjI2NDFhLCAweGM0MjZmNjVkLCAweDQ0Njg4NGY1LCAweGViMmMxNmIyLCAweGMxOTBhNjNhLAorICAgIDB4NmVkNDM0N2QsIDB4OTRlOWM3MmEsIDB4M2JhZDU1NmQsIDB4MTExMWU1ZTUsIDB4YmU1NTc3YTIsCisgICAgMHhmODQzMDc0OSwgMHg1NzA3OTUwZSwgMHg3ZGJiMjU4NiwgMHhkMmZmYjdjMSwgMHgyOGMyNDQ5NiwKKyAgICAweDg3ODZkNmQxLCAweGFkM2E2NjU5LCAweDAyN2VmNDFlLCAweDgyMzA4NmI2LCAweDJkNzQxNGYxLAorICAgIDB4MDdjOGE0NzksIDB4YTg4YzM2M2UsIDB4NTJiMWM1NjksIDB4ZmRmNTU3MmUsIDB4ZDc0OWU3YTYsCisgICAgMHg3ODBkNzVlMSwgMHgwY2E0MDRiNywgMHhhM2UwOTZmMCwgMHg4OTVjMjY3OCwgMHgyNjE4YjQzZiwKKyAgICAweGRjMjU0NzY4LCAweDczNjFkNTJmLCAweDU5ZGQ2NWE3LCAweGY2OTlmN2UwLCAweDc2ZDc4NTQ4LAorICAgIDB4ZDk5MzE3MGYsIDB4ZjMyZmE3ODcsIDB4NWM2YjM1YzAsIDB4YTY1NmM2OTcsIDB4MDkxMjU0ZDAsCisgICAgMHgyM2FlZTQ1OCwgMHg4Y2VhNzYxZiwgMHhhZjgyMDU4ZSwgMHgwMGM2OTdjOSwgMHgyYTdhMjc0MSwKKyAgICAweDg1M2ViNTA2LCAweDdmMDM0NjUxLCAweGQwNDdkNDE2LCAweGZhZmI2NDllLCAweDU1YmZmNmQ5LAorICAgIDB4ZDVmMTg0NzEsIDB4N2FiNTE2MzYsIDB4NTAwOWE2YmUsIDB4ZmY0ZDM0ZjksIDB4MDU3MGM3YWUsCisgICAgMHhhYTM0NTVlOSwgMHg4MDg4ZTU2MSwgMHgyZmNjNzcyNiwgMHg1YjY1MDY3MCwgMHhmNDIxOTQzNywKKyAgICAweGRlOWQyNGJmLCAweDcxZDliNmY4LCAweDhiZTQ0NWFmLCAweDI0YTBkN2U4LCAweDBlMWM2NzYwLAorICAgIDB4YTE1OGY1MjcsIDB4MjExNjg3OGYsIDB4OGU1MjE1YzgsIDB4YTRlZWE1NDAsIDB4MGJhYTM3MDcsCisgICAgMHhmMTk3YzQ1MCwgMHg1ZWQzNTYxNywgMHg3NDZmZTY5ZiwgMHhkYjJiNzRkOCwgMHg5ZDNkMDQzMywKKyAgICAweDMyNzk5Njc0LCAweDE4YzUyNmZjLCAweGI3ODFiNGJiLCAweDRkYmM0N2VjLCAweGUyZjhkNWFiLAorICAgIDB4Yzg0NDY1MjMsIDB4NjcwMGY3NjQsIDB4ZTc0ZTg1Y2MsIDB4NDgwYTE3OGIsIDB4NjJiNmE3MDMsCisgICAgMHhjZGYyMzU0NCwgMHgzN2NmYzYxMywgMHg5ODhiNTQ1NCwgMHhiMjM3ZTRkYywgMHgxZDczNzY5YiwKKyAgICAweDY5ZGEwN2NkLCAweGM2OWU5NThhLCAweGVjMjIyNTAyLCAweDQzNjZiNzQ1LCAweGI5NWI0NDEyLAorICAgIDB4MTYxZmQ2NTUsIDB4M2NhMzY2ZGQsIDB4OTNlN2Y0OWEsIDB4MTNhOTg2MzIsIDB4YmNlZDE0NzUsCisgICAgMHg5NjUxYTRmZCwgMHgzOTE1MzZiYSwgMHhjMzI4YzVlZCwgMHg2YzZjNTdhYSwgMHg0NmQwZTcyMiwKKyAgICAweGU5OTQ3NTY1fSwKKyAgIHsweDAwMDAwMDAwLCAweDRlODkwYmE5LCAweDlkMTIxNzUyLCAweGQzOWIxY2ZiLCAweGUxNTUyOGU1LAorICAgIDB4YWZkYzIzNGMsIDB4N2M0NzNmYjcsIDB4MzJjZTM0MWUsIDB4MTlkYjU3OGIsIDB4NTc1MjVjMjIsCisgICAgMHg4NGM5NDBkOSwgMHhjYTQwNGI3MCwgMHhmODhlN2Y2ZSwgMHhiNjA3NzRjNywgMHg2NTljNjgzYywKKyAgICAweDJiMTU2Mzk1LCAweDMzYjZhZjE2LCAweDdkM2ZhNGJmLCAweGFlYTRiODQ0LCAweGUwMmRiM2VkLAorICAgIDB4ZDJlMzg3ZjMsIDB4OWM2YThjNWEsIDB4NGZmMTkwYTEsIDB4MDE3ODliMDgsIDB4MmE2ZGY4OWQsCisgICAgMHg2NGU0ZjMzNCwgMHhiNzdmZWZjZiwgMHhmOWY2ZTQ2NiwgMHhjYjM4ZDA3OCwgMHg4NWIxZGJkMSwKKyAgICAweDU2MmFjNzJhLCAweDE4YTNjYzgzLCAweDY3NmQ1ZTJjLCAweDI5ZTQ1NTg1LCAweGZhN2Y0OTdlLAorICAgIDB4YjRmNjQyZDcsIDB4ODYzODc2YzksIDB4YzhiMTdkNjAsIDB4MWIyYTYxOWIsIDB4NTVhMzZhMzIsCisgICAgMHg3ZWI2MDlhNywgMHgzMDNmMDIwZSwgMHhlM2E0MWVmNSwgMHhhZDJkMTU1YywgMHg5ZmUzMjE0MiwKKyAgICAweGQxNmEyYWViLCAweDAyZjEzNjEwLCAweDRjNzgzZGI5LCAweDU0ZGJmMTNhLCAweDFhNTJmYTkzLAorICAgIDB4YzljOWU2NjgsIDB4ODc0MGVkYzEsIDB4YjU4ZWQ5ZGYsIDB4ZmIwN2QyNzYsIDB4Mjg5Y2NlOGQsCisgICAgMHg2NjE1YzUyNCwgMHg0ZDAwYTZiMSwgMHgwMzg5YWQxOCwgMHhkMDEyYjFlMywgMHg5ZTliYmE0YSwKKyAgICAweGFjNTU4ZTU0LCAweGUyZGM4NWZkLCAweDMxNDc5OTA2LCAweDdmY2U5MmFmLCAweGNlZGFiYzU4LAorICAgIDB4ODA1M2I3ZjEsIDB4NTNjOGFiMGEsIDB4MWQ0MWEwYTMsIDB4MmY4Zjk0YmQsIDB4NjEwNjlmMTQsCisgICAgMHhiMjlkODNlZiwgMHhmYzE0ODg0NiwgMHhkNzAxZWJkMywgMHg5OTg4ZTA3YSwgMHg0YTEzZmM4MSwKKyAgICAweDA0OWFmNzI4LCAweDM2NTRjMzM2LCAweDc4ZGRjODlmLCAweGFiNDZkNDY0LCAweGU1Y2ZkZmNkLAorICAgIDB4ZmQ2YzEzNGUsIDB4YjNlNTE4ZTcsIDB4NjA3ZTA0MWMsIDB4MmVmNzBmYjUsIDB4MWMzOTNiYWIsCisgICAgMHg1MmIwMzAwMiwgMHg4MTJiMmNmOSwgMHhjZmEyMjc1MCwgMHhlNGI3NDRjNSwgMHhhYTNlNGY2YywKKyAgICAweDc5YTU1Mzk3LCAweDM3MmM1ODNlLCAweDA1ZTI2YzIwLCAweDRiNmI2Nzg5LCAweDk4ZjA3YjcyLAorICAgIDB4ZDY3OTcwZGIsIDB4YTliN2UyNzQsIDB4ZTczZWU5ZGQsIDB4MzRhNWY1MjYsIDB4N2EyY2ZlOGYsCisgICAgMHg0OGUyY2E5MSwgMHgwNjZiYzEzOCwgMHhkNWYwZGRjMywgMHg5Yjc5ZDY2YSwgMHhiMDZjYjVmZiwKKyAgICAweGZlZTViZTU2LCAweDJkN2VhMmFkLCAweDYzZjdhOTA0LCAweDUxMzk5ZDFhLCAweDFmYjA5NmIzLAorICAgIDB4Y2MyYjhhNDgsIDB4ODJhMjgxZTEsIDB4OWEwMTRkNjIsIDB4ZDQ4ODQ2Y2IsIDB4MDcxMzVhMzAsCisgICAgMHg0OTlhNTE5OSwgMHg3YjU0NjU4NywgMHgzNWRkNmUyZSwgMHhlNjQ2NzJkNSwgMHhhOGNmNzk3YywKKyAgICAweDgzZGExYWU5LCAweGNkNTMxMTQwLCAweDFlYzgwZGJiLCAweDUwNDEwNjEyLCAweDYyOGYzMjBjLAorICAgIDB4MmMwNjM5YTUsIDB4ZmY5ZDI1NWUsIDB4YjExNDJlZjcsIDB4NDZjNDdlZjEsIDB4MDg0ZDc1NTgsCisgICAgMHhkYmQ2NjlhMywgMHg5NTVmNjIwYSwgMHhhNzkxNTYxNCwgMHhlOTE4NWRiZCwgMHgzYTgzNDE0NiwKKyAgICAweDc0MGE0YWVmLCAweDVmMWYyOTdhLCAweDExOTYyMmQzLCAweGMyMGQzZTI4LCAweDhjODQzNTgxLAorICAgIDB4YmU0YTAxOWYsIDB4ZjBjMzBhMzYsIDB4MjM1ODE2Y2QsIDB4NmRkMTFkNjQsIDB4NzU3MmQxZTcsCisgICAgMHgzYmZiZGE0ZSwgMHhlODYwYzZiNSwgMHhhNmU5Y2QxYywgMHg5NDI3ZjkwMiwgMHhkYWFlZjJhYiwKKyAgICAweDA5MzVlZTUwLCAweDQ3YmNlNWY5LCAweDZjYTk4NjZjLCAweDIyMjA4ZGM1LCAweGYxYmI5MTNlLAorICAgIDB4YmYzMjlhOTcsIDB4OGRmY2FlODksIDB4YzM3NWE1MjAsIDB4MTBlZWI5ZGIsIDB4NWU2N2IyNzIsCisgICAgMHgyMWE5MjBkZCwgMHg2ZjIwMmI3NCwgMHhiY2JiMzc4ZiwgMHhmMjMyM2MyNiwgMHhjMGZjMDgzOCwKKyAgICAweDhlNzUwMzkxLCAweDVkZWUxZjZhLCAweDEzNjcxNGMzLCAweDM4NzI3NzU2LCAweDc2ZmI3Y2ZmLAorICAgIDB4YTU2MDYwMDQsIDB4ZWJlOTZiYWQsIDB4ZDkyNzVmYjMsIDB4OTdhZTU0MWEsIDB4NDQzNTQ4ZTEsCisgICAgMHgwYWJjNDM0OCwgMHgxMjFmOGZjYiwgMHg1Yzk2ODQ2MiwgMHg4ZjBkOTg5OSwgMHhjMTg0OTMzMCwKKyAgICAweGYzNGFhNzJlLCAweGJkYzNhYzg3LCAweDZlNThiMDdjLCAweDIwZDFiYmQ1LCAweDBiYzRkODQwLAorICAgIDB4NDU0ZGQzZTksIDB4OTZkNmNmMTIsIDB4ZDg1ZmM0YmIsIDB4ZWE5MWYwYTUsIDB4YTQxOGZiMGMsCisgICAgMHg3NzgzZTdmNywgMHgzOTBhZWM1ZSwgMHg4ODFlYzJhOSwgMHhjNjk3YzkwMCwgMHgxNTBjZDVmYiwKKyAgICAweDViODVkZTUyLCAweDY5NGJlYTRjLCAweDI3YzJlMWU1LCAweGY0NTlmZDFlLCAweGJhZDBmNmI3LAorICAgIDB4OTFjNTk1MjIsIDB4ZGY0YzllOGIsIDB4MGNkNzgyNzAsIDB4NDI1ZTg5ZDksIDB4NzA5MGJkYzcsCisgICAgMHgzZTE5YjY2ZSwgMHhlZDgyYWE5NSwgMHhhMzBiYTEzYywgMHhiYmE4NmRiZiwgMHhmNTIxNjYxNiwKKyAgICAweDI2YmE3YWVkLCAweDY4MzM3MTQ0LCAweDVhZmQ0NTVhLCAweDE0NzQ0ZWYzLCAweGM3ZWY1MjA4LAorICAgIDB4ODk2NjU5YTEsIDB4YTI3MzNhMzQsIDB4ZWNmYTMxOWQsIDB4M2Y2MTJkNjYsIDB4NzFlODI2Y2YsCisgICAgMHg0MzI2MTJkMSwgMHgwZGFmMTk3OCwgMHhkZTM0MDU4MywgMHg5MGJkMGUyYSwgMHhlZjczOWM4NSwKKyAgICAweGExZmE5NzJjLCAweDcyNjE4YmQ3LCAweDNjZTg4MDdlLCAweDBlMjZiNDYwLCAweDQwYWZiZmM5LAorICAgIDB4OTMzNGEzMzIsIDB4ZGRiZGE4OWIsIDB4ZjZhOGNiMGUsIDB4YjgyMWMwYTcsIDB4NmJiYWRjNWMsCisgICAgMHgyNTMzZDdmNSwgMHgxN2ZkZTNlYiwgMHg1OTc0ZTg0MiwgMHg4YWVmZjRiOSwgMHhjNDY2ZmYxMCwKKyAgICAweGRjYzUzMzkzLCAweDkyNGMzODNhLCAweDQxZDcyNGMxLCAweDBmNWUyZjY4LCAweDNkOTAxYjc2LAorICAgIDB4NzMxOTEwZGYsIDB4YTA4MjBjMjQsIDB4ZWUwYjA3OGQsIDB4YzUxZTY0MTgsIDB4OGI5NzZmYjEsCisgICAgMHg1ODBjNzM0YSwgMHgxNjg1NzhlMywgMHgyNDRiNGNmZCwgMHg2YWMyNDc1NCwgMHhiOTU5NWJhZiwKKyAgICAweGY3ZDA1MDA2fSwKKyAgIHsweDAwMDAwMDAwLCAweDhkODhmZGUyLCAweGMwNjBmZDg1LCAweDRkZTgwMDY3LCAweDViYjBmZDRiLAorICAgIDB4ZDYzODAwYTksIDB4OWJkMDAwY2UsIDB4MTY1OGZkMmMsIDB4Yjc2MWZhOTYsIDB4M2FlOTA3NzQsCisgICAgMHg3NzAxMDcxMywgMHhmYTg5ZmFmMSwgMHhlY2QxMDdkZCwgMHg2MTU5ZmEzZiwgMHgyY2IxZmE1OCwKKyAgICAweGExMzkwN2JhLCAweGI1YjJmMzZkLCAweDM4M2EwZThmLCAweDc1ZDIwZWU4LCAweGY4NWFmMzBhLAorICAgIDB4ZWUwMjBlMjYsIDB4NjM4YWYzYzQsIDB4MmU2MmYzYTMsIDB4YTNlYTBlNDEsIDB4MDJkMzA5ZmIsCisgICAgMHg4ZjViZjQxOSwgMHhjMmIzZjQ3ZSwgMHg0ZjNiMDk5YywgMHg1OTYzZjRiMCwgMHhkNGViMDk1MiwKKyAgICAweDk5MDMwOTM1LCAweDE0OGJmNGQ3LCAweGIwMTRlMDliLCAweDNkOWMxZDc5LCAweDcwNzQxZDFlLAorICAgIDB4ZmRmY2UwZmMsIDB4ZWJhNDFkZDAsIDB4NjYyY2UwMzIsIDB4MmJjNGUwNTUsIDB4YTY0YzFkYjcsCisgICAgMHgwNzc1MWEwZCwgMHg4YWZkZTdlZiwgMHhjNzE1ZTc4OCwgMHg0YTlkMWE2YSwgMHg1Y2M1ZTc0NiwKKyAgICAweGQxNGQxYWE0LCAweDljYTUxYWMzLCAweDExMmRlNzIxLCAweDA1YTYxM2Y2LCAweDg4MmVlZTE0LAorICAgIDB4YzVjNmVlNzMsIDB4NDg0ZTEzOTEsIDB4NWUxNmVlYmQsIDB4ZDM5ZTEzNWYsIDB4OWU3NjEzMzgsCisgICAgMHgxM2ZlZWVkYSwgMHhiMmM3ZTk2MCwgMHgzZjRmMTQ4MiwgMHg3MmE3MTRlNSwgMHhmZjJmZTkwNywKKyAgICAweGU5NzcxNDJiLCAweDY0ZmZlOWM5LCAweDI5MTdlOWFlLCAweGE0OWYxNDRjLCAweGJiNThjNzc3LAorICAgIDB4MzZkMDNhOTUsIDB4N2IzODNhZjIsIDB4ZjZiMGM3MTAsIDB4ZTBlODNhM2MsIDB4NmQ2MGM3ZGUsCisgICAgMHgyMDg4YzdiOSwgMHhhZDAwM2E1YiwgMHgwYzM5M2RlMSwgMHg4MWIxYzAwMywgMHhjYzU5YzA2NCwKKyAgICAweDQxZDEzZDg2LCAweDU3ODljMGFhLCAweGRhMDEzZDQ4LCAweDk3ZTkzZDJmLCAweDFhNjFjMGNkLAorICAgIDB4MGVlYTM0MWEsIDB4ODM2MmM5ZjgsIDB4Y2U4YWM5OWYsIDB4NDMwMjM0N2QsIDB4NTU1YWM5NTEsCisgICAgMHhkOGQyMzRiMywgMHg5NTNhMzRkNCwgMHgxOGIyYzkzNiwgMHhiOThiY2U4YywgMHgzNDAzMzM2ZSwKKyAgICAweDc5ZWIzMzA5LCAweGY0NjNjZWViLCAweGUyM2IzM2M3LCAweDZmYjNjZTI1LCAweDIyNWJjZTQyLAorICAgIDB4YWZkMzMzYTAsIDB4MGI0YzI3ZWMsIDB4ODZjNGRhMGUsIDB4Y2IyY2RhNjksIDB4NDZhNDI3OGIsCisgICAgMHg1MGZjZGFhNywgMHhkZDc0Mjc0NSwgMHg5MDljMjcyMiwgMHgxZDE0ZGFjMCwgMHhiYzJkZGQ3YSwKKyAgICAweDMxYTUyMDk4LCAweDdjNGQyMGZmLCAweGYxYzVkZDFkLCAweGU3OWQyMDMxLCAweDZhMTVkZGQzLAorICAgIDB4MjdmZGRkYjQsIDB4YWE3NTIwNTYsIDB4YmVmZWQ0ODEsIDB4MzM3NjI5NjMsIDB4N2U5ZTI5MDQsCisgICAgMHhmMzE2ZDRlNiwgMHhlNTRlMjljYSwgMHg2OGM2ZDQyOCwgMHgyNTJlZDQ0ZiwgMHhhOGE2MjlhZCwKKyAgICAweDA5OWYyZTE3LCAweDg0MTdkM2Y1LCAweGM5ZmZkMzkyLCAweDQ0NzcyZTcwLCAweDUyMmZkMzVjLAorICAgIDB4ZGZhNzJlYmUsIDB4OTI0ZjJlZDksIDB4MWZjN2QzM2IsIDB4YWRjMDg4YWYsIDB4MjA0ODc1NGQsCisgICAgMHg2ZGEwNzUyYSwgMHhlMDI4ODhjOCwgMHhmNjcwNzVlNCwgMHg3YmY4ODgwNiwgMHgzNjEwODg2MSwKKyAgICAweGJiOTg3NTgzLCAweDFhYTE3MjM5LCAweDk3Mjk4ZmRiLCAweGRhYzE4ZmJjLCAweDU3NDk3MjVlLAorICAgIDB4NDExMThmNzIsIDB4Y2M5OTcyOTAsIDB4ODE3MTcyZjcsIDB4MGNmOThmMTUsIDB4MTg3MjdiYzIsCisgICAgMHg5NWZhODYyMCwgMHhkODEyODY0NywgMHg1NTlhN2JhNSwgMHg0M2MyODY4OSwgMHhjZTRhN2I2YiwKKyAgICAweDgzYTI3YjBjLCAweDBlMmE4NmVlLCAweGFmMTM4MTU0LCAweDIyOWI3Y2I2LCAweDZmNzM3Y2QxLAorICAgIDB4ZTJmYjgxMzMsIDB4ZjRhMzdjMWYsIDB4NzkyYjgxZmQsIDB4MzRjMzgxOWEsIDB4Yjk0YjdjNzgsCisgICAgMHgxZGQ0NjgzNCwgMHg5MDVjOTVkNiwgMHhkZGI0OTViMSwgMHg1MDNjNjg1MywgMHg0NjY0OTU3ZiwKKyAgICAweGNiZWM2ODlkLCAweDg2MDQ2OGZhLCAweDBiOGM5NTE4LCAweGFhYjU5MmEyLCAweDI3M2Q2ZjQwLAorICAgIDB4NmFkNTZmMjcsIDB4ZTc1ZDkyYzUsIDB4ZjEwNTZmZTksIDB4N2M4ZDkyMGIsIDB4MzE2NTkyNmMsCisgICAgMHhiY2VkNmY4ZSwgMHhhODY2OWI1OSwgMHgyNWVlNjZiYiwgMHg2ODA2NjZkYywgMHhlNThlOWIzZSwKKyAgICAweGYzZDY2NjEyLCAweDdlNWU5YmYwLCAweDMzYjY5Yjk3LCAweGJlM2U2Njc1LCAweDFmMDc2MWNmLAorICAgIDB4OTI4ZjljMmQsIDB4ZGY2NzljNGEsIDB4NTJlZjYxYTgsIDB4NDRiNzljODQsIDB4YzkzZjYxNjYsCisgICAgMHg4NGQ3NjEwMSwgMHgwOTVmOWNlMywgMHgxNjk4NGZkOCwgMHg5YjEwYjIzYSwgMHhkNmY4YjI1ZCwKKyAgICAweDViNzA0ZmJmLCAweDRkMjhiMjkzLCAweGMwYTA0ZjcxLCAweDhkNDg0ZjE2LCAweDAwYzBiMmY0LAorICAgIDB4YTFmOWI1NGUsIDB4MmM3MTQ4YWMsIDB4NjE5OTQ4Y2IsIDB4ZWMxMWI1MjksIDB4ZmE0OTQ4MDUsCisgICAgMHg3N2MxYjVlNywgMHgzYTI5YjU4MCwgMHhiN2ExNDg2MiwgMHhhMzJhYmNiNSwgMHgyZWEyNDE1NywKKyAgICAweDYzNGE0MTMwLCAweGVlYzJiY2QyLCAweGY4OWE0MWZlLCAweDc1MTJiYzFjLCAweDM4ZmFiYzdiLAorICAgIDB4YjU3MjQxOTksIDB4MTQ0YjQ2MjMsIDB4OTljM2JiYzEsIDB4ZDQyYmJiYTYsIDB4NTlhMzQ2NDQsCisgICAgMHg0ZmZiYmI2OCwgMHhjMjczNDY4YSwgMHg4ZjliNDZlZCwgMHgwMjEzYmIwZiwgMHhhNjhjYWY0MywKKyAgICAweDJiMDQ1MmExLCAweDY2ZWM1MmM2LCAweGViNjRhZjI0LCAweGZkM2M1MjA4LCAweDcwYjRhZmVhLAorICAgIDB4M2Q1Y2FmOGQsIDB4YjBkNDUyNmYsIDB4MTFlZDU1ZDUsIDB4OWM2NWE4MzcsIDB4ZDE4ZGE4NTAsCisgICAgMHg1YzA1NTViMiwgMHg0YTVkYTg5ZSwgMHhjN2Q1NTU3YywgMHg4YTNkNTUxYiwgMHgwN2I1YThmOSwKKyAgICAweDEzM2U1YzJlLCAweDllYjZhMWNjLCAweGQzNWVhMWFiLCAweDVlZDY1YzQ5LCAweDQ4OGVhMTY1LAorICAgIDB4YzUwNjVjODcsIDB4ODhlZTVjZTAsIDB4MDU2NmExMDIsIDB4YTQ1ZmE2YjgsIDB4MjlkNzViNWEsCisgICAgMHg2NDNmNWIzZCwgMHhlOWI3YTZkZiwgMHhmZmVmNWJmMywgMHg3MjY3YTYxMSwgMHgzZjhmYTY3NiwKKyAgICAweGIyMDc1Yjk0fSwKKyAgIHsweDAwMDAwMDAwLCAweDgwZjAxNzFmLCAweGRhOTEyODdmLCAweDVhNjEzZjYwLCAweDZlNTM1NmJmLAorICAgIDB4ZWVhMzQxYTAsIDB4YjRjMjdlYzAsIDB4MzQzMjY5ZGYsIDB4ZGNhNmFkN2UsIDB4NWM1NmJhNjEsCisgICAgMHgwNjM3ODUwMSwgMHg4NmM3OTIxZSwgMHhiMmY1ZmJjMSwgMHgzMjA1ZWNkZSwgMHg2ODY0ZDNiZSwKKyAgICAweGU4OTRjNGExLCAweDYyM2M1Y2JkLCAweGUyY2M0YmEyLCAweGI4YWQ3NGMyLCAweDM4NWQ2M2RkLAorICAgIDB4MGM2ZjBhMDIsIDB4OGM5ZjFkMWQsIDB4ZDZmZTIyN2QsIDB4NTYwZTM1NjIsIDB4YmU5YWYxYzMsCisgICAgMHgzZTZhZTZkYywgMHg2NDBiZDliYywgMHhlNGZiY2VhMywgMHhkMGM5YTc3YywgMHg1MDM5YjA2MywKKyAgICAweDBhNTg4ZjAzLCAweDhhYTg5ODFjLCAweGM0NzhiOTdhLCAweDQ0ODhhZTY1LCAweDFlZTk5MTA1LAorICAgIDB4OWUxOTg2MWEsIDB4YWEyYmVmYzUsIDB4MmFkYmY4ZGEsIDB4NzBiYWM3YmEsIDB4ZjA0YWQwYTUsCisgICAgMHgxOGRlMTQwNCwgMHg5ODJlMDMxYiwgMHhjMjRmM2M3YiwgMHg0MmJmMmI2NCwgMHg3NjhkNDJiYiwKKyAgICAweGY2N2Q1NWE0LCAweGFjMWM2YWM0LCAweDJjZWM3ZGRiLCAweGE2NDRlNWM3LCAweDI2YjRmMmQ4LAorICAgIDB4N2NkNWNkYjgsIDB4ZmMyNWRhYTcsIDB4YzgxN2IzNzgsIDB4NDhlN2E0NjcsIDB4MTI4NjliMDcsCisgICAgMHg5Mjc2OGMxOCwgMHg3YWUyNDhiOSwgMHhmYTEyNWZhNiwgMHhhMDczNjBjNiwgMHgyMDgzNzdkOSwKKyAgICAweDE0YjExZTA2LCAweDk0NDEwOTE5LCAweGNlMjAzNjc5LCAweDRlZDAyMTY2LCAweDUzODA3NGI1LAorICAgIDB4ZDM3MDYzYWEsIDB4ODkxMTVjY2EsIDB4MDllMTRiZDUsIDB4M2RkMzIyMGEsIDB4YmQyMzM1MTUsCisgICAgMHhlNzQyMGE3NSwgMHg2N2IyMWQ2YSwgMHg4ZjI2ZDljYiwgMHgwZmQ2Y2VkNCwgMHg1NWI3ZjFiNCwKKyAgICAweGQ1NDdlNmFiLCAweGUxNzU4Zjc0LCAweDYxODU5ODZiLCAweDNiZTRhNzBiLCAweGJiMTRiMDE0LAorICAgIDB4MzFiYzI4MDgsIDB4YjE0YzNmMTcsIDB4ZWIyZDAwNzcsIDB4NmJkZDE3NjgsIDB4NWZlZjdlYjcsCisgICAgMHhkZjFmNjlhOCwgMHg4NTdlNTZjOCwgMHgwNThlNDFkNywgMHhlZDFhODU3NiwgMHg2ZGVhOTI2OSwKKyAgICAweDM3OGJhZDA5LCAweGI3N2JiYTE2LCAweDgzNDlkM2M5LCAweDAzYjljNGQ2LCAweDU5ZDhmYmI2LAorICAgIDB4ZDkyOGVjYTksIDB4OTdmOGNkY2YsIDB4MTcwOGRhZDAsIDB4NGQ2OWU1YjAsIDB4Y2Q5OWYyYWYsCisgICAgMHhmOWFiOWI3MCwgMHg3OTViOGM2ZiwgMHgyMzNhYjMwZiwgMHhhM2NhYTQxMCwgMHg0YjVlNjBiMSwKKyAgICAweGNiYWU3N2FlLCAweDkxY2Y0OGNlLCAweDExM2Y1ZmQxLCAweDI1MGQzNjBlLCAweGE1ZmQyMTExLAorICAgIDB4ZmY5YzFlNzEsIDB4N2Y2YzA5NmUsIDB4ZjVjNDkxNzIsIDB4NzUzNDg2NmQsIDB4MmY1NWI5MGQsCisgICAgMHhhZmE1YWUxMiwgMHg5Yjk3YzdjZCwgMHgxYjY3ZDBkMiwgMHg0MTA2ZWZiMiwgMHhjMWY2ZjhhZCwKKyAgICAweDI5NjIzYzBjLCAweGE5OTIyYjEzLCAweGYzZjMxNDczLCAweDczMDMwMzZjLCAweDQ3MzE2YWIzLAorICAgIDB4YzdjMTdkYWMsIDB4OWRhMDQyY2MsIDB4MWQ1MDU1ZDMsIDB4YTcwMGU5NmEsIDB4MjdmMGZlNzUsCisgICAgMHg3ZDkxYzExNSwgMHhmZDYxZDYwYSwgMHhjOTUzYmZkNSwgMHg0OWEzYThjYSwgMHgxM2MyOTdhYSwKKyAgICAweDkzMzI4MGI1LCAweDdiYTY0NDE0LCAweGZiNTY1MzBiLCAweGExMzc2YzZiLCAweDIxYzc3Yjc0LAorICAgIDB4MTVmNTEyYWIsIDB4OTUwNTA1YjQsIDB4Y2Y2NDNhZDQsIDB4NGY5NDJkY2IsIDB4YzUzY2I1ZDcsCisgICAgMHg0NWNjYTJjOCwgMHgxZmFkOWRhOCwgMHg5ZjVkOGFiNywgMHhhYjZmZTM2OCwgMHgyYjlmZjQ3NywKKyAgICAweDcxZmVjYjE3LCAweGYxMGVkYzA4LCAweDE5OWExOGE5LCAweDk5NmEwZmI2LCAweGMzMGIzMGQ2LAorICAgIDB4NDNmYjI3YzksIDB4NzdjOTRlMTYsIDB4ZjczOTU5MDksIDB4YWQ1ODY2NjksIDB4MmRhODcxNzYsCisgICAgMHg2Mzc4NTAxMCwgMHhlMzg4NDcwZiwgMHhiOWU5Nzg2ZiwgMHgzOTE5NmY3MCwgMHgwZDJiMDZhZiwKKyAgICAweDhkZGIxMWIwLCAweGQ3YmEyZWQwLCAweDU3NGEzOWNmLCAweGJmZGVmZDZlLCAweDNmMmVlYTcxLAorICAgIDB4NjU0ZmQ1MTEsIDB4ZTViZmMyMGUsIDB4ZDE4ZGFiZDEsIDB4NTE3ZGJjY2UsIDB4MGIxYzgzYWUsCisgICAgMHg4YmVjOTRiMSwgMHgwMTQ0MGNhZCwgMHg4MWI0MWJiMiwgMHhkYmQ1MjRkMiwgMHg1YjI1MzNjZCwKKyAgICAweDZmMTc1YTEyLCAweGVmZTc0ZDBkLCAweGI1ODY3MjZkLCAweDM1NzY2NTcyLCAweGRkZTJhMWQzLAorICAgIDB4NWQxMmI2Y2MsIDB4MDc3Mzg5YWMsIDB4ODc4MzllYjMsIDB4YjNiMWY3NmMsIDB4MzM0MWUwNzMsCisgICAgMHg2OTIwZGYxMywgMHhlOWQwYzgwYywgMHhmNDgwOWRkZiwgMHg3NDcwOGFjMCwgMHgyZTExYjVhMCwKKyAgICAweGFlZTFhMmJmLCAweDlhZDNjYjYwLCAweDFhMjNkYzdmLCAweDQwNDJlMzFmLCAweGMwYjJmNDAwLAorICAgIDB4MjgyNjMwYTEsIDB4YThkNjI3YmUsIDB4ZjJiNzE4ZGUsIDB4NzI0NzBmYzEsIDB4NDY3NTY2MWUsCisgICAgMHhjNjg1NzEwMSwgMHg5Y2U0NGU2MSwgMHgxYzE0NTk3ZSwgMHg5NmJjYzE2MiwgMHgxNjRjZDY3ZCwKKyAgICAweDRjMmRlOTFkLCAweGNjZGRmZTAyLCAweGY4ZWY5N2RkLCAweDc4MWY4MGMyLCAweDIyN2ViZmEyLAorICAgIDB4YTI4ZWE4YmQsIDB4NGExYTZjMWMsIDB4Y2FlYTdiMDMsIDB4OTA4YjQ0NjMsIDB4MTA3YjUzN2MsCisgICAgMHgyNDQ5M2FhMywgMHhhNGI5MmRiYywgMHhmZWQ4MTJkYywgMHg3ZTI4MDVjMywgMHgzMGY4MjRhNSwKKyAgICAweGIwMDgzM2JhLCAweGVhNjkwY2RhLCAweDZhOTkxYmM1LCAweDVlYWI3MjFhLCAweGRlNWI2NTA1LAorICAgIDB4ODQzYTVhNjUsIDB4MDRjYTRkN2EsIDB4ZWM1ZTg5ZGIsIDB4NmNhZTllYzQsIDB4MzZjZmExYTQsCisgICAgMHhiNjNmYjZiYiwgMHg4MjBkZGY2NCwgMHgwMmZkYzg3YiwgMHg1ODljZjcxYiwgMHhkODZjZTAwNCwKKyAgICAweDUyYzQ3ODE4LCAweGQyMzQ2ZjA3LCAweDg4NTU1MDY3LCAweDA4YTU0Nzc4LCAweDNjOTcyZWE3LAorICAgIDB4YmM2NzM5YjgsIDB4ZTYwNjA2ZDgsIDB4NjZmNjExYzcsIDB4OGU2MmQ1NjYsIDB4MGU5MmMyNzksCisgICAgMHg1NGYzZmQxOSwgMHhkNDAzZWEwNiwgMHhlMDMxODNkOSwgMHg2MGMxOTRjNiwgMHgzYWEwYWJhNiwKKyAgICAweGJhNTBiY2I5fSwKKyAgIHsweDAwMDAwMDAwLCAweDk1NzBkNDk1LCAweGYxOTBhZjZiLCAweDY0ZTA3YmZlLCAweDM4NTA1ODk3LAorICAgIDB4YWQyMDhjMDIsIDB4YzljMGY3ZmMsIDB4NWNiMDIzNjksIDB4NzBhMGIxMmUsIDB4ZTVkMDY1YmIsCisgICAgMHg4MTMwMWU0NSwgMHgxNDQwY2FkMCwgMHg0OGYwZTliOSwgMHhkZDgwM2QyYywgMHhiOTYwNDZkMiwKKyAgICAweDJjMTA5MjQ3LCAweGUxNDE2MjVjLCAweDc0MzFiNmM5LCAweDEwZDFjZDM3LCAweDg1YTExOWEyLAorICAgIDB4ZDkxMTNhY2IsIDB4NGM2MWVlNWUsIDB4Mjg4MTk1YTAsIDB4YmRmMTQxMzUsIDB4OTFlMWQzNzIsCisgICAgMHgwNDkxMDdlNywgMHg2MDcxN2MxOSwgMHhmNTAxYTg4YywgMHhhOWIxOGJlNSwgMHgzY2MxNWY3MCwKKyAgICAweDU4MjEyNDhlLCAweGNkNTFmMDFiLCAweDE5ZjNjMmY5LCAweDhjODMxNjZjLCAweGU4NjM2ZDkyLAorICAgIDB4N2QxM2I5MDcsIDB4MjFhMzlhNmUsIDB4YjRkMzRlZmIsIDB4ZDAzMzM1MDUsIDB4NDU0M2UxOTAsCisgICAgMHg2OTUzNzNkNywgMHhmYzIzYTc0MiwgMHg5OGMzZGNiYywgMHgwZGIzMDgyOSwgMHg1MTAzMmI0MCwKKyAgICAweGM0NzNmZmQ1LCAweGEwOTM4NDJiLCAweDM1ZTM1MGJlLCAweGY4YjJhMGE1LCAweDZkYzI3NDMwLAorICAgIDB4MDkyMjBmY2UsIDB4OWM1MmRiNWIsIDB4YzBlMmY4MzIsIDB4NTU5MjJjYTcsIDB4MzE3MjU3NTksCisgICAgMHhhNDAyODNjYywgMHg4ODEyMTE4YiwgMHgxZDYyYzUxZSwgMHg3OTgyYmVlMCwgMHhlY2YyNmE3NSwKKyAgICAweGIwNDI0OTFjLCAweDI1MzI5ZDg5LCAweDQxZDJlNjc3LCAweGQ0YTIzMmUyLCAweDMzZTc4NWYyLAorICAgIDB4YTY5NzUxNjcsIDB4YzI3NzJhOTksIDB4NTcwN2ZlMGMsIDB4MGJiN2RkNjUsIDB4OWVjNzA5ZjAsCisgICAgMHhmYTI3NzIwZSwgMHg2ZjU3YTY5YiwgMHg0MzQ3MzRkYywgMHhkNjM3ZTA0OSwgMHhiMmQ3OWJiNywKKyAgICAweDI3YTc0ZjIyLCAweDdiMTc2YzRiLCAweGVlNjdiOGRlLCAweDhhODdjMzIwLCAweDFmZjcxN2I1LAorICAgIDB4ZDJhNmU3YWUsIDB4NDdkNjMzM2IsIDB4MjMzNjQ4YzUsIDB4YjY0NjljNTAsIDB4ZWFmNmJmMzksCisgICAgMHg3Zjg2NmJhYywgMHgxYjY2MTA1MiwgMHg4ZTE2YzRjNywgMHhhMjA2NTY4MCwgMHgzNzc2ODIxNSwKKyAgICAweDUzOTZmOWViLCAweGM2ZTYyZDdlLCAweDlhNTYwZTE3LCAweDBmMjZkYTgyLCAweDZiYzZhMTdjLAorICAgIDB4ZmViNjc1ZTksIDB4MmExNDQ3MGIsIDB4YmY2NDkzOWUsIDB4ZGI4NGU4NjAsIDB4NGVmNDNjZjUsCisgICAgMHgxMjQ0MWY5YywgMHg4NzM0Y2IwOSwgMHhlM2Q0YjBmNywgMHg3NmE0NjQ2MiwgMHg1YWI0ZjYyNSwKKyAgICAweGNmYzQyMmIwLCAweGFiMjQ1OTRlLCAweDNlNTQ4ZGRiLCAweDYyZTRhZWIyLCAweGY3OTQ3YTI3LAorICAgIDB4OTM3NDAxZDksIDB4MDYwNGQ1NGMsIDB4Y2I1NTI1NTcsIDB4NWUyNWYxYzIsIDB4M2FjNThhM2MsCisgICAgMHhhZmI1NWVhOSwgMHhmMzA1N2RjMCwgMHg2Njc1YTk1NSwgMHgwMjk1ZDJhYiwgMHg5N2U1MDYzZSwKKyAgICAweGJiZjU5NDc5LCAweDJlODU0MGVjLCAweDRhNjUzYjEyLCAweGRmMTVlZjg3LCAweDgzYTVjY2VlLAorICAgIDB4MTZkNTE4N2IsIDB4NzIzNTYzODUsIDB4ZTc0NWI3MTAsIDB4NjdjZjBiZTQsIDB4ZjJiZmRmNzEsCisgICAgMHg5NjVmYTQ4ZiwgMHgwMzJmNzAxYSwgMHg1ZjlmNTM3MywgMHhjYWVmODdlNiwgMHhhZTBmZmMxOCwKKyAgICAweDNiN2YyODhkLCAweDE3NmZiYWNhLCAweDgyMWY2ZTVmLCAweGU2ZmYxNWExLCAweDczOGZjMTM0LAorICAgIDB4MmYzZmUyNWQsIDB4YmE0ZjM2YzgsIDB4ZGVhZjRkMzYsIDB4NGJkZjk5YTMsIDB4ODY4ZTY5YjgsCisgICAgMHgxM2ZlYmQyZCwgMHg3NzFlYzZkMywgMHhlMjZlMTI0NiwgMHhiZWRlMzEyZiwgMHgyYmFlZTViYSwKKyAgICAweDRmNGU5ZTQ0LCAweGRhM2U0YWQxLCAweGY2MmVkODk2LCAweDYzNWUwYzAzLCAweDA3YmU3N2ZkLAorICAgIDB4OTJjZWEzNjgsIDB4Y2U3ZTgwMDEsIDB4NWIwZTU0OTQsIDB4M2ZlZTJmNmEsIDB4YWE5ZWZiZmYsCisgICAgMHg3ZTNjYzkxZCwgMHhlYjRjMWQ4OCwgMHg4ZmFjNjY3NiwgMHgxYWRjYjJlMywgMHg0NjZjOTE4YSwKKyAgICAweGQzMWM0NTFmLCAweGI3ZmMzZWUxLCAweDIyOGNlYTc0LCAweDBlOWM3ODMzLCAweDliZWNhY2E2LAorICAgIDB4ZmYwY2Q3NTgsIDB4NmE3YzAzY2QsIDB4MzZjYzIwYTQsIDB4YTNiY2Y0MzEsIDB4Yzc1YzhmY2YsCisgICAgMHg1MjJjNWI1YSwgMHg5ZjdkYWI0MSwgMHgwYTBkN2ZkNCwgMHg2ZWVkMDQyYSwgMHhmYjlkZDBiZiwKKyAgICAweGE3MmRmM2Q2LCAweDMyNWQyNzQzLCAweDU2YmQ1Y2JkLCAweGMzY2Q4ODI4LCAweGVmZGQxYTZmLAorICAgIDB4N2FhZGNlZmEsIDB4MWU0ZGI1MDQsIDB4OGIzZDYxOTEsIDB4ZDc4ZDQyZjgsIDB4NDJmZDk2NmQsCisgICAgMHgyNjFkZWQ5MywgMHhiMzZkMzkwNiwgMHg1NDI4OGUxNiwgMHhjMTU4NWE4MywgMHhhNWI4MjE3ZCwKKyAgICAweDMwYzhmNWU4LCAweDZjNzhkNjgxLCAweGY5MDgwMjE0LCAweDlkZTg3OWVhLCAweDA4OThhZDdmLAorICAgIDB4MjQ4ODNmMzgsIDB4YjFmOGViYWQsIDB4ZDUxODkwNTMsIDB4NDA2ODQ0YzYsIDB4MWNkODY3YWYsCisgICAgMHg4OWE4YjMzYSwgMHhlZDQ4YzhjNCwgMHg3ODM4MWM1MSwgMHhiNTY5ZWM0YSwgMHgyMDE5MzhkZiwKKyAgICAweDQ0Zjk0MzIxLCAweGQxODk5N2I0LCAweDhkMzliNGRkLCAweDE4NDk2MDQ4LCAweDdjYTkxYmI2LAorICAgIDB4ZTlkOWNmMjMsIDB4YzVjOTVkNjQsIDB4NTBiOTg5ZjEsIDB4MzQ1OWYyMGYsIDB4YTEyOTI2OWEsCisgICAgMHhmZDk5MDVmMywgMHg2OGU5ZDE2NiwgMHgwYzA5YWE5OCwgMHg5OTc5N2UwZCwgMHg0ZGRiNGNlZiwKKyAgICAweGQ4YWI5ODdhLCAweGJjNGJlMzg0LCAweDI5M2IzNzExLCAweDc1OGIxNDc4LCAweGUwZmJjMGVkLAorICAgIDB4ODQxYmJiMTMsIDB4MTE2YjZmODYsIDB4M2Q3YmZkYzEsIDB4YTgwYjI5NTQsIDB4Y2NlYjUyYWEsCisgICAgMHg1OTliODYzZiwgMHgwNTJiYTU1NiwgMHg5MDViNzFjMywgMHhmNGJiMGEzZCwgMHg2MWNiZGVhOCwKKyAgICAweGFjOWEyZWIzLCAweDM5ZWFmYTI2LCAweDVkMGE4MWQ4LCAweGM4N2E1NTRkLCAweDk0Y2E3NjI0LAorICAgIDB4MDFiYWEyYjEsIDB4NjU1YWQ5NGYsIDB4ZjAyYTBkZGEsIDB4ZGMzYTlmOWQsIDB4NDk0YTRiMDgsCisgICAgMHgyZGFhMzBmNiwgMHhiOGRhZTQ2MywgMHhlNDZhYzcwYSwgMHg3MTFhMTM5ZiwgMHgxNWZhNjg2MSwKKyAgICAweDgwOGFiY2Y0fSwKKyAgIHsweDAwMDAwMDAwLCAweGNmOWUxN2M4LCAweDQ0NGQyOWQxLCAweDhiZDMzZTE5LCAweDg4OWE1M2EyLAorICAgIDB4NDcwNDQ0NmEsIDB4Y2NkNzdhNzMsIDB4MDM0OTZkYmIsIDB4Y2E0NWExMDUsIDB4MDVkYmI2Y2QsCisgICAgMHg4ZTA4ODhkNCwgMHg0MTk2OWYxYywgMHg0MmRmZjJhNywgMHg4ZDQxZTU2ZiwgMHgwNjkyZGI3NiwKKyAgICAweGM5MGNjY2JlLCAweDRmZmE0NDRiLCAweDgwNjQ1MzgzLCAweDBiYjc2ZDlhLCAweGM0Mjk3YTUyLAorICAgIDB4Yzc2MDE3ZTksIDB4MDhmZTAwMjEsIDB4ODMyZDNlMzgsIDB4NGNiMzI5ZjAsIDB4ODViZmU1NGUsCisgICAgMHg0YTIxZjI4NiwgMHhjMWYyY2M5ZiwgMHgwZTZjZGI1NywgMHgwZDI1YjZlYywgMHhjMmJiYTEyNCwKKyAgICAweDQ5Njg5ZjNkLCAweDg2ZjY4OGY1LCAweDlmZjQ4ODk2LCAweDUwNmE5ZjVlLCAweGRiYjlhMTQ3LAorICAgIDB4MTQyN2I2OGYsIDB4MTc2ZWRiMzQsIDB4ZDhmMGNjZmMsIDB4NTMyM2YyZTUsIDB4OWNiZGU1MmQsCisgICAgMHg1NWIxMjk5MywgMHg5YTJmM2U1YiwgMHgxMWZjMDA0MiwgMHhkZTYyMTc4YSwgMHhkZDJiN2EzMSwKKyAgICAweDEyYjU2ZGY5LCAweDk5NjY1M2UwLCAweDU2Zjg0NDI4LCAweGQwMGVjY2RkLCAweDFmOTBkYjE1LAorICAgIDB4OTQ0M2U1MGMsIDB4NWJkZGYyYzQsIDB4NTg5NDlmN2YsIDB4OTcwYTg4YjcsIDB4MWNkOWI2YWUsCisgICAgMHhkMzQ3YTE2NiwgMHgxYTRiNmRkOCwgMHhkNWQ1N2ExMCwgMHg1ZTA2NDQwOSwgMHg5MTk4NTNjMSwKKyAgICAweDkyZDEzZTdhLCAweDVkNGYyOWIyLCAweGQ2OWMxN2FiLCAweDE5MDIwMDYzLCAweGU0OTgxNzZkLAorICAgIDB4MmIwNjAwYTUsIDB4YTBkNTNlYmMsIDB4NmY0YjI5NzQsIDB4NmMwMjQ0Y2YsIDB4YTM5YzUzMDcsCisgICAgMHgyODRmNmQxZSwgMHhlN2QxN2FkNiwgMHgyZWRkYjY2OCwgMHhlMTQzYTFhMCwgMHg2YTkwOWZiOSwKKyAgICAweGE1MGU4ODcxLCAweGE2NDdlNWNhLCAweDY5ZDlmMjAyLCAweGUyMGFjYzFiLCAweDJkOTRkYmQzLAorICAgIDB4YWI2MjUzMjYsIDB4NjRmYzQ0ZWUsIDB4ZWYyZjdhZjcsIDB4MjBiMTZkM2YsIDB4MjNmODAwODQsCisgICAgMHhlYzY2MTc0YywgMHg2N2I1Mjk1NSwgMHhhODJiM2U5ZCwgMHg2MTI3ZjIyMywgMHhhZWI5ZTVlYiwKKyAgICAweDI1NmFkYmYyLCAweGVhZjRjYzNhLCAweGU5YmRhMTgxLCAweDI2MjNiNjQ5LCAweGFkZjA4ODUwLAorICAgIDB4NjI2ZTlmOTgsIDB4N2I2YzlmZmIsIDB4YjRmMjg4MzMsIDB4M2YyMWI2MmEsIDB4ZjBiZmExZTIsCisgICAgMHhmM2Y2Y2M1OSwgMHgzYzY4ZGI5MSwgMHhiN2JiZTU4OCwgMHg3ODI1ZjI0MCwgMHhiMTI5M2VmZSwKKyAgICAweDdlYjcyOTM2LCAweGY1NjQxNzJmLCAweDNhZmEwMGU3LCAweDM5YjM2ZDVjLCAweGY2MmQ3YTk0LAorICAgIDB4N2RmZTQ0OGQsIDB4YjI2MDUzNDUsIDB4MzQ5NmRiYjAsIDB4ZmIwOGNjNzgsIDB4NzBkYmYyNjEsCisgICAgMHhiZjQ1ZTVhOSwgMHhiYzBjODgxMiwgMHg3MzkyOWZkYSwgMHhmODQxYTFjMywgMHgzN2RmYjYwYiwKKyAgICAweGZlZDM3YWI1LCAweDMxNGQ2ZDdkLCAweGJhOWU1MzY0LCAweDc1MDA0NGFjLCAweDc2NDkyOTE3LAorICAgIDB4YjlkNzNlZGYsIDB4MzIwNDAwYzYsIDB4ZmQ5YTE3MGUsIDB4MTI0MTI4OWIsIDB4ZGRkZjNmNTMsCisgICAgMHg1NjBjMDE0YSwgMHg5OTkyMTY4MiwgMHg5YWRiN2IzOSwgMHg1NTQ1NmNmMSwgMHhkZTk2NTJlOCwKKyAgICAweDExMDg0NTIwLCAweGQ4MDQ4OTllLCAweDE3OWE5ZTU2LCAweDljNDlhMDRmLCAweDUzZDdiNzg3LAorICAgIDB4NTA5ZWRhM2MsIDB4OWYwMGNkZjQsIDB4MTRkM2YzZWQsIDB4ZGI0ZGU0MjUsIDB4NWRiYjZjZDAsCisgICAgMHg5MjI1N2IxOCwgMHgxOWY2NDUwMSwgMHhkNjY4NTJjOSwgMHhkNTIxM2Y3MiwgMHgxYWJmMjhiYSwKKyAgICAweDkxNmMxNmEzLCAweDVlZjIwMTZiLCAweDk3ZmVjZGQ1LCAweDU4NjBkYTFkLCAweGQzYjNlNDA0LAorICAgIDB4MWMyZGYzY2MsIDB4MWY2NDllNzcsIDB4ZDBmYTg5YmYsIDB4NWIyOWI3YTYsIDB4OTRiN2EwNmUsCisgICAgMHg4ZGI1YTAwZCwgMHg0MjJiYjdjNSwgMHhjOWY4ODlkYywgMHgwNjY2OWUxNCwgMHgwNTJmZjNhZiwKKyAgICAweGNhYjFlNDY3LCAweDQxNjJkYTdlLCAweDhlZmNjZGI2LCAweDQ3ZjAwMTA4LCAweDg4NmUxNmMwLAorICAgIDB4MDNiZDI4ZDksIDB4Y2MyMzNmMTEsIDB4Y2Y2YTUyYWEsIDB4MDBmNDQ1NjIsIDB4OGIyNzdiN2IsCisgICAgMHg0NGI5NmNiMywgMHhjMjRmZTQ0NiwgMHgwZGQxZjM4ZSwgMHg4NjAyY2Q5NywgMHg0OTljZGE1ZiwKKyAgICAweDRhZDViN2U0LCAweDg1NGJhMDJjLCAweDBlOTg5ZTM1LCAweGMxMDY4OWZkLCAweDA4MGE0NTQzLAorICAgIDB4Yzc5NDUyOGIsIDB4NGM0NzZjOTIsIDB4ODNkOTdiNWEsIDB4ODA5MDE2ZTEsIDB4NGYwZTAxMjksCisgICAgMHhjNGRkM2YzMCwgMHgwYjQzMjhmOCwgMHhmNmQ5M2ZmNiwgMHgzOTQ3MjgzZSwgMHhiMjk0MTYyNywKKyAgICAweDdkMGEwMWVmLCAweDdlNDM2YzU0LCAweGIxZGQ3YjljLCAweDNhMGU0NTg1LCAweGY1OTA1MjRkLAorICAgIDB4M2M5YzllZjMsIDB4ZjMwMjg5M2IsIDB4NzhkMWI3MjIsIDB4Yjc0ZmEwZWEsIDB4YjQwNmNkNTEsCisgICAgMHg3Yjk4ZGE5OSwgMHhmMDRiZTQ4MCwgMHgzZmQ1ZjM0OCwgMHhiOTIzN2JiZCwgMHg3NmJkNmM3NSwKKyAgICAweGZkNmU1MjZjLCAweDMyZjA0NWE0LCAweDMxYjkyODFmLCAweGZlMjczZmQ3LCAweDc1ZjQwMWNlLAorICAgIDB4YmE2YTE2MDYsIDB4NzM2NmRhYjgsIDB4YmNmOGNkNzAsIDB4MzcyYmYzNjksIDB4ZjhiNWU0YTEsCisgICAgMHhmYmZjODkxYSwgMHgzNDYyOWVkMiwgMHhiZmIxYTBjYiwgMHg3MDJmYjcwMywgMHg2OTJkYjc2MCwKKyAgICAweGE2YjNhMGE4LCAweDJkNjA5ZWIxLCAweGUyZmU4OTc5LCAweGUxYjdlNGMyLCAweDJlMjlmMzBhLAorICAgIDB4YTVmYWNkMTMsIDB4NmE2NGRhZGIsIDB4YTM2ODE2NjUsIDB4NmNmNjAxYWQsIDB4ZTcyNTNmYjQsCisgICAgMHgyOGJiMjg3YywgMHgyYmYyNDVjNywgMHhlNDZjNTIwZiwgMHg2ZmJmNmMxNiwgMHhhMDIxN2JkZSwKKyAgICAweDI2ZDdmMzJiLCAweGU5NDllNGUzLCAweDYyOWFkYWZhLCAweGFkMDRjZDMyLCAweGFlNGRhMDg5LAorICAgIDB4NjFkM2I3NDEsIDB4ZWEwMDg5NTgsIDB4MjU5ZTllOTAsIDB4ZWM5MjUyMmUsIDB4MjMwYzQ1ZTYsCisgICAgMHhhOGRmN2JmZiwgMHg2NzQxNmMzNywgMHg2NDA4MDE4YywgMHhhYjk2MTY0NCwgMHgyMDQ1Mjg1ZCwKKyAgICAweGVmZGIzZjk1fSwKKyAgIHsweDAwMDAwMDAwLCAweDI0ODI1MTM2LCAweDQ5MDRhMjZjLCAweDZkODZmMzVhLCAweDkyMDk0NGQ4LAorICAgIDB4YjY4YjE1ZWUsIDB4ZGIwZGU2YjQsIDB4ZmY4ZmI3ODIsIDB4ZmY2MzhmZjEsIDB4ZGJlMWRlYzcsCisgICAgMHhiNjY3MmQ5ZCwgMHg5MmU1N2NhYiwgMHg2ZDZhY2IyOSwgMHg0OWU4OWExZiwgMHgyNDZlNjk0NSwKKyAgICAweDAwZWMzODczLCAweDI1YjYxOWEzLCAweDAxMzQ0ODk1LCAweDZjYjJiYmNmLCAweDQ4MzBlYWY5LAorICAgIDB4YjdiZjVkN2IsIDB4OTMzZDBjNGQsIDB4ZmViYmZmMTcsIDB4ZGEzOWFlMjEsIDB4ZGFkNTk2NTIsCisgICAgMHhmZTU3Yzc2NCwgMHg5M2QxMzQzZSwgMHhiNzUzNjUwOCwgMHg0OGRjZDI4YSwgMHg2YzVlODNiYywKKyAgICAweDAxZDg3MGU2LCAweDI1NWEyMWQwLCAweDRiNmMzMzQ2LCAweDZmZWU2MjcwLCAweDAyNjg5MTJhLAorICAgIDB4MjZlYWMwMWMsIDB4ZDk2NTc3OWUsIDB4ZmRlNzI2YTgsIDB4OTA2MWQ1ZjIsIDB4YjRlMzg0YzQsCisgICAgMHhiNDBmYmNiNywgMHg5MDhkZWQ4MSwgMHhmZDBiMWVkYiwgMHhkOTg5NGZlZCwgMHgyNjA2Zjg2ZiwKKyAgICAweDAyODRhOTU5LCAweDZmMDI1YTAzLCAweDRiODAwYjM1LCAweDZlZGEyYWU1LCAweDRhNTg3YmQzLAorICAgIDB4MjdkZTg4ODksIDB4MDM1Y2Q5YmYsIDB4ZmNkMzZlM2QsIDB4ZDg1MTNmMGIsIDB4YjVkN2NjNTEsCisgICAgMHg5MTU1OWQ2NywgMHg5MWI5YTUxNCwgMHhiNTNiZjQyMiwgMHhkOGJkMDc3OCwgMHhmYzNmNTY0ZSwKKyAgICAweDAzYjBlMWNjLCAweDI3MzJiMGZhLCAweDRhYjQ0M2EwLCAweDZlMzYxMjk2LCAweDk2ZDg2NjhjLAorICAgIDB4YjI1YTM3YmEsIDB4ZGZkY2M0ZTAsIDB4ZmI1ZTk1ZDYsIDB4MDRkMTIyNTQsIDB4MjA1MzczNjIsCisgICAgMHg0ZGQ1ODAzOCwgMHg2OTU3ZDEwZSwgMHg2OWJiZTk3ZCwgMHg0ZDM5Yjg0YiwgMHgyMGJmNGIxMSwKKyAgICAweDA0M2QxYTI3LCAweGZiYjJhZGE1LCAweGRmMzBmYzkzLCAweGIyYjYwZmM5LCAweDk2MzQ1ZWZmLAorICAgIDB4YjM2ZTdmMmYsIDB4OTdlYzJlMTksIDB4ZmE2YWRkNDMsIDB4ZGVlODhjNzUsIDB4MjE2NzNiZjcsCisgICAgMHgwNWU1NmFjMSwgMHg2ODYzOTk5YiwgMHg0Y2UxYzhhZCwgMHg0YzBkZjBkZSwgMHg2ODhmYTFlOCwKKyAgICAweDA1MDk1MmIyLCAweDIxOGIwMzg0LCAweGRlMDRiNDA2LCAweGZhODZlNTMwLCAweDk3MDAxNjZhLAorICAgIDB4YjM4MjQ3NWMsIDB4ZGRiNDU1Y2EsIDB4ZjkzNjA0ZmMsIDB4OTRiMGY3YTYsIDB4YjAzMmE2OTAsCisgICAgMHg0ZmJkMTExMiwgMHg2YjNmNDAyNCwgMHgwNmI5YjM3ZSwgMHgyMjNiZTI0OCwgMHgyMmQ3ZGEzYiwKKyAgICAweDA2NTU4YjBkLCAweDZiZDM3ODU3LCAweDRmNTEyOTYxLCAweGIwZGU5ZWUzLCAweDk0NWNjZmQ1LAorICAgIDB4ZjlkYTNjOGYsIDB4ZGQ1ODZkYjksIDB4ZjgwMjRjNjksIDB4ZGM4MDFkNWYsIDB4YjEwNmVlMDUsCisgICAgMHg5NTg0YmYzMywgMHg2YTBiMDhiMSwgMHg0ZTg5NTk4NywgMHgyMzBmYWFkZCwgMHgwNzhkZmJlYiwKKyAgICAweDA3NjFjMzk4LCAweDIzZTM5MmFlLCAweDRlNjU2MWY0LCAweDZhZTczMGMyLCAweDk1Njg4NzQwLAorICAgIDB4YjFlYWQ2NzYsIDB4ZGM2YzI1MmMsIDB4ZjhlZTc0MWEsIDB4ZjZjMWNiNTksIDB4ZDI0MzlhNmYsCisgICAgMHhiZmM1NjkzNSwgMHg5YjQ3MzgwMywgMHg2NGM4OGY4MSwgMHg0MDRhZGViNywgMHgyZGNjMmRlZCwKKyAgICAweDA5NGU3Y2RiLCAweDA5YTI0NGE4LCAweDJkMjAxNTllLCAweDQwYTZlNmM0LCAweDY0MjRiN2YyLAorICAgIDB4OWJhYjAwNzAsIDB4YmYyOTUxNDYsIDB4ZDJhZmEyMWMsIDB4ZjYyZGYzMmEsIDB4ZDM3N2QyZmEsCisgICAgMHhmN2Y1ODNjYywgMHg5YTczNzA5NiwgMHhiZWYxMjFhMCwgMHg0MTdlOTYyMiwgMHg2NWZjYzcxNCwKKyAgICAweDA4N2EzNDRlLCAweDJjZjg2NTc4LCAweDJjMTQ1ZDBiLCAweDA4OTYwYzNkLCAweDY1MTBmZjY3LAorICAgIDB4NDE5MmFlNTEsIDB4YmUxZDE5ZDMsIDB4OWE5ZjQ4ZTUsIDB4ZjcxOWJiYmYsIDB4ZDM5YmVhODksCisgICAgMHhiZGFkZjgxZiwgMHg5OTJmYTkyOSwgMHhmNGE5NWE3MywgMHhkMDJiMGI0NSwgMHgyZmE0YmNjNywKKyAgICAweDBiMjZlZGYxLCAweDY2YTAxZWFiLCAweDQyMjI0ZjlkLCAweDQyY2U3N2VlLCAweDY2NGMyNmQ4LAorICAgIDB4MGJjYWQ1ODIsIDB4MmY0ODg0YjQsIDB4ZDBjNzMzMzYsIDB4ZjQ0NTYyMDAsIDB4OTljMzkxNWEsCisgICAgMHhiZDQxYzA2YywgMHg5ODFiZTFiYywgMHhiYzk5YjA4YSwgMHhkMTFmNDNkMCwgMHhmNTlkMTJlNiwKKyAgICAweDBhMTJhNTY0LCAweDJlOTBmNDUyLCAweDQzMTYwNzA4LCAweDY3OTQ1NjNlLCAweDY3Nzg2ZTRkLAorICAgIDB4NDNmYTNmN2IsIDB4MmU3Y2NjMjEsIDB4MGFmZTlkMTcsIDB4ZjU3MTJhOTUsIDB4ZDFmMzdiYTMsCisgICAgMHhiYzc1ODhmOSwgMHg5OGY3ZDljZiwgMHg2MDE5YWRkNSwgMHg0NDliZmNlMywgMHgyOTFkMGZiOSwKKyAgICAweDBkOWY1ZThmLCAweGYyMTBlOTBkLCAweGQ2OTJiODNiLCAweGJiMTQ0YjYxLCAweDlmOTYxYTU3LAorICAgIDB4OWY3YTIyMjQsIDB4YmJmODczMTIsIDB4ZDY3ZTgwNDgsIDB4ZjJmY2QxN2UsIDB4MGQ3MzY2ZmMsCisgICAgMHgyOWYxMzdjYSwgMHg0NDc3YzQ5MCwgMHg2MGY1OTVhNiwgMHg0NWFmYjQ3NiwgMHg2MTJkZTU0MCwKKyAgICAweDBjYWIxNjFhLCAweDI4Mjk0NzJjLCAweGQ3YTZmMGFlLCAweGYzMjRhMTk4LCAweDllYTI1MmMyLAorICAgIDB4YmEyMDAzZjQsIDB4YmFjYzNiODcsIDB4OWU0ZTZhYjEsIDB4ZjNjODk5ZWIsIDB4ZDc0YWM4ZGQsCisgICAgMHgyOGM1N2Y1ZiwgMHgwYzQ3MmU2OSwgMHg2MWMxZGQzMywgMHg0NTQzOGMwNSwgMHgyYjc1OWU5MywKKyAgICAweDBmZjdjZmE1LCAweDYyNzEzY2ZmLCAweDQ2ZjM2ZGM5LCAweGI5N2NkYTRiLCAweDlkZmU4YjdkLAorICAgIDB4ZjA3ODc4MjcsIDB4ZDRmYTI5MTEsIDB4ZDQxNjExNjIsIDB4ZjA5NDQwNTQsIDB4OWQxMmIzMGUsCisgICAgMHhiOTkwZTIzOCwgMHg0NjFmNTViYSwgMHg2MjlkMDQ4YywgMHgwZjFiZjdkNiwgMHgyYjk5YTZlMCwKKyAgICAweDBlYzM4NzMwLCAweDJhNDFkNjA2LCAweDQ3YzcyNTVjLCAweDYzNDU3NDZhLCAweDljY2FjM2U4LAorICAgIDB4Yjg0ODkyZGUsIDB4ZDVjZTYxODQsIDB4ZjE0YzMwYjIsIDB4ZjFhMDA4YzEsIDB4ZDUyMjU5ZjcsCisgICAgMHhiOGE0YWFhZCwgMHg5YzI2ZmI5YiwgMHg2M2E5NGMxOSwgMHg0NzJiMWQyZiwgMHgyYWFkZWU3NSwKKyAgICAweDBlMmZiZjQzfSwKKyAgIHsweDAwMDAwMDAwLCAweDM2ZjI5MGYzLCAweDZkZTUyMWU2LCAweDViMTdiMTE1LCAweGRiY2E0M2NjLAorICAgIDB4ZWQzOGQzM2YsIDB4YjYyZjYyMmEsIDB4ODBkZGYyZDksIDB4NmNlNTgxZDksIDB4NWExNzExMmEsCisgICAgMHgwMTAwYTAzZiwgMHgzN2YyMzBjYywgMHhiNzJmYzIxNSwgMHg4MWRkNTJlNiwgMHhkYWNhZTNmMywKKyAgICAweGVjMzg3MzAwLCAweGQ5Y2IwM2IyLCAweGVmMzk5MzQxLCAweGI0MmUyMjU0LCAweDgyZGNiMmE3LAorICAgIDB4MDIwMTQwN2UsIDB4MzRmM2QwOGQsIDB4NmZlNDYxOTgsIDB4NTkxNmYxNmIsIDB4YjUyZTgyNmIsCisgICAgMHg4M2RjMTI5OCwgMHhkOGNiYTM4ZCwgMHhlZTM5MzM3ZSwgMHg2ZWU0YzFhNywgMHg1ODE2NTE1NCwKKyAgICAweDAzMDFlMDQxLCAweDM1ZjM3MGIyLCAweDY4ZTcwMTI1LCAweDVlMTU5MWQ2LCAweDA1MDIyMGMzLAorICAgIDB4MzNmMGIwMzAsIDB4YjMyZDQyZTksIDB4ODVkZmQyMWEsIDB4ZGVjODYzMGYsIDB4ZTgzYWYzZmMsCisgICAgMHgwNDAyODBmYywgMHgzMmYwMTAwZiwgMHg2OWU3YTExYSwgMHg1ZjE1MzFlOSwgMHhkZmM4YzMzMCwKKyAgICAweGU5M2E1M2MzLCAweGIyMmRlMmQ2LCAweDg0ZGY3MjI1LCAweGIxMmMwMjk3LCAweDg3ZGU5MjY0LAorICAgIDB4ZGNjOTIzNzEsIDB4ZWEzYmIzODIsIDB4NmFlNjQxNWIsIDB4NWMxNGQxYTgsIDB4MDcwMzYwYmQsCisgICAgMHgzMWYxZjA0ZSwgMHhkZGM5ODM0ZSwgMHhlYjNiMTNiZCwgMHhiMDJjYTJhOCwgMHg4NmRlMzI1YiwKKyAgICAweDA2MDNjMDgyLCAweDMwZjE1MDcxLCAweDZiZTZlMTY0LCAweDVkMTQ3MTk3LCAweGQxY2UwMjRhLAorICAgIDB4ZTczYzkyYjksIDB4YmMyYjIzYWMsIDB4OGFkOWIzNWYsIDB4MGEwNDQxODYsIDB4M2NmNmQxNzUsCisgICAgMHg2N2UxNjA2MCwgMHg1MTEzZjA5MywgMHhiZDJiODM5MywgMHg4YmQ5MTM2MCwgMHhkMGNlYTI3NSwKKyAgICAweGU2M2MzMjg2LCAweDY2ZTFjMDVmLCAweDUwMTM1MGFjLCAweDBiMDRlMWI5LCAweDNkZjY3MTRhLAorICAgIDB4MDgwNTAxZjgsIDB4M2VmNzkxMGIsIDB4NjVlMDIwMWUsIDB4NTMxMmIwZWQsIDB4ZDNjZjQyMzQsCisgICAgMHhlNTNkZDJjNywgMHhiZTJhNjNkMiwgMHg4OGQ4ZjMyMSwgMHg2NGUwODAyMSwgMHg1MjEyMTBkMiwKKyAgICAweDA5MDVhMWM3LCAweDNmZjczMTM0LCAweGJmMmFjM2VkLCAweDg5ZDg1MzFlLCAweGQyY2ZlMjBiLAorICAgIDB4ZTQzZDcyZjgsIDB4YjkyOTAzNmYsIDB4OGZkYjkzOWMsIDB4ZDRjYzIyODksIDB4ZTIzZWIyN2EsCisgICAgMHg2MmUzNDBhMywgMHg1NDExZDA1MCwgMHgwZjA2NjE0NSwgMHgzOWY0ZjFiNiwgMHhkNWNjODJiNiwKKyAgICAweGUzM2UxMjQ1LCAweGI4MjlhMzUwLCAweDhlZGIzM2EzLCAweDBlMDZjMTdhLCAweDM4ZjQ1MTg5LAorICAgIDB4NjNlM2UwOWMsIDB4NTUxMTcwNmYsIDB4NjBlMjAwZGQsIDB4NTYxMDkwMmUsIDB4MGQwNzIxM2IsCisgICAgMHgzYmY1YjFjOCwgMHhiYjI4NDMxMSwgMHg4ZGRhZDNlMiwgMHhkNmNkNjJmNywgMHhlMDNmZjIwNCwKKyAgICAweDBjMDc4MTA0LCAweDNhZjUxMWY3LCAweDYxZTJhMGUyLCAweDU3MTAzMDExLCAweGQ3Y2RjMmM4LAorICAgIDB4ZTEzZjUyM2IsIDB4YmEyOGUzMmUsIDB4OGNkYTczZGQsIDB4NzhlZDAyZDUsIDB4NGUxZjkyMjYsCisgICAgMHgxNTA4MjMzMywgMHgyM2ZhYjNjMCwgMHhhMzI3NDExOSwgMHg5NWQ1ZDFlYSwgMHhjZWMyNjBmZiwKKyAgICAweGY4MzBmMDBjLCAweDE0MDg4MzBjLCAweDIyZmExM2ZmLCAweDc5ZWRhMmVhLCAweDRmMWYzMjE5LAorICAgIDB4Y2ZjMmMwYzAsIDB4ZjkzMDUwMzMsIDB4YTIyN2UxMjYsIDB4OTRkNTcxZDUsIDB4YTEyNjAxNjcsCisgICAgMHg5N2Q0OTE5NCwgMHhjY2MzMjA4MSwgMHhmYTMxYjA3MiwgMHg3YWVjNDJhYiwgMHg0YzFlZDI1OCwKKyAgICAweDE3MDk2MzRkLCAweDIxZmJmM2JlLCAweGNkYzM4MGJlLCAweGZiMzExMDRkLCAweGEwMjZhMTU4LAorICAgIDB4OTZkNDMxYWIsIDB4MTYwOWMzNzIsIDB4MjBmYjUzODEsIDB4N2JlY2UyOTQsIDB4NGQxZTcyNjcsCisgICAgMHgxMDBhMDNmMCwgMHgyNmY4OTMwMywgMHg3ZGVmMjIxNiwgMHg0YjFkYjJlNSwgMHhjYmMwNDAzYywKKyAgICAweGZkMzJkMGNmLCAweGE2MjU2MWRhLCAweDkwZDdmMTI5LCAweDdjZWY4MjI5LCAweDRhMWQxMmRhLAorICAgIDB4MTEwYWEzY2YsIDB4MjdmODMzM2MsIDB4YTcyNWMxZTUsIDB4OTFkNzUxMTYsIDB4Y2FjMGUwMDMsCisgICAgMHhmYzMyNzBmMCwgMHhjOWMxMDA0MiwgMHhmZjMzOTBiMSwgMHhhNDI0MjFhNCwgMHg5MmQ2YjE1NywKKyAgICAweDEyMGI0MzhlLCAweDI0ZjlkMzdkLCAweDdmZWU2MjY4LCAweDQ5MWNmMjliLCAweGE1MjQ4MTliLAorICAgIDB4OTNkNjExNjgsIDB4YzhjMWEwN2QsIDB4ZmUzMzMwOGUsIDB4N2VlZWMyNTcsIDB4NDgxYzUyYTQsCisgICAgMHgxMzBiZTNiMSwgMHgyNWY5NzM0MiwgMHhhOTIzMDA5ZiwgMHg5ZmQxOTA2YywgMHhjNGM2MjE3OSwKKyAgICAweGYyMzRiMThhLCAweDcyZTk0MzUzLCAweDQ0MWJkM2EwLCAweDFmMGM2MmI1LCAweDI5ZmVmMjQ2LAorICAgIDB4YzVjNjgxNDYsIDB4ZjMzNDExYjUsIDB4YTgyM2EwYTAsIDB4OWVkMTMwNTMsIDB4MWUwY2MyOGEsCisgICAgMHgyOGZlNTI3OSwgMHg3M2U5ZTM2YywgMHg0NTFiNzM5ZiwgMHg3MGU4MDMyZCwgMHg0NjFhOTNkZSwKKyAgICAweDFkMGQyMmNiLCAweDJiZmZiMjM4LCAweGFiMjI0MGUxLCAweDlkZDBkMDEyLCAweGM2Yzc2MTA3LAorICAgIDB4ZjAzNWYxZjQsIDB4MWMwZDgyZjQsIDB4MmFmZjEyMDcsIDB4NzFlOGEzMTIsIDB4NDcxYTMzZTEsCisgICAgMHhjN2M3YzEzOCwgMHhmMTM1NTFjYiwgMHhhYTIyZTBkZSwgMHg5Y2QwNzAyZCwgMHhjMWM0MDFiYSwKKyAgICAweGY3MzY5MTQ5LCAweGFjMjEyMDVjLCAweDlhZDNiMGFmLCAweDFhMGU0Mjc2LCAweDJjZmNkMjg1LAorICAgIDB4NzdlYjYzOTAsIDB4NDExOWYzNjMsIDB4YWQyMTgwNjMsIDB4OWJkMzEwOTAsIDB4YzBjNGExODUsCisgICAgMHhmNjM2MzE3NiwgMHg3NmViYzNhZiwgMHg0MDE5NTM1YywgMHgxYjBlZTI0OSwgMHgyZGZjNzJiYSwKKyAgICAweDE4MGYwMjA4LCAweDJlZmQ5MmZiLCAweDc1ZWEyM2VlLCAweDQzMThiMzFkLCAweGMzYzU0MWM0LAorICAgIDB4ZjUzN2QxMzcsIDB4YWUyMDYwMjIsIDB4OThkMmYwZDEsIDB4NzRlYTgzZDEsIDB4NDIxODEzMjIsCisgICAgMHgxOTBmYTIzNywgMHgyZmZkMzJjNCwgMHhhZjIwYzAxZCwgMHg5OWQyNTBlZSwgMHhjMmM1ZTFmYiwKKyAgICAweGY0Mzc3MTA4fX07CisKK2xvY2FsIGNvbnN0IHpfd29yZF90IEZBUiBjcmNfYnJhaWRfYmlnX3RhYmxlW11bMjU2XSA9IHsKKyAgIHsweDAwMDAwMDAwMDAwMDAwMDAsIDB4ZjM5MGYyMzYwMDAwMDAwMCwgMHhlNjIxZTU2ZDAwMDAwMDAwLAorICAgIDB4MTViMTE3NWIwMDAwMDAwMCwgMHhjYzQzY2FkYjAwMDAwMDAwLCAweDNmZDMzOGVkMDAwMDAwMDAsCisgICAgMHgyYTYyMmZiNjAwMDAwMDAwLCAweGQ5ZjJkZDgwMDAwMDAwMDAsIDB4ZDk4MWU1NmMwMDAwMDAwMCwKKyAgICAweDJhMTExNzVhMDAwMDAwMDAsIDB4M2ZhMDAwMDEwMDAwMDAwMCwgMHhjYzMwZjIzNzAwMDAwMDAwLAorICAgIDB4MTVjMjJmYjcwMDAwMDAwMCwgMHhlNjUyZGQ4MTAwMDAwMDAwLCAweGYzZTNjYWRhMDAwMDAwMDAsCisgICAgMHgwMDczMzhlYzAwMDAwMDAwLCAweGIyMDNjYmQ5MDAwMDAwMDAsIDB4NDE5MzM5ZWYwMDAwMDAwMCwKKyAgICAweDU0MjIyZWI0MDAwMDAwMDAsIDB4YTdiMmRjODIwMDAwMDAwMCwgMHg3ZTQwMDEwMjAwMDAwMDAwLAorICAgIDB4OGRkMGYzMzQwMDAwMDAwMCwgMHg5ODYxZTQ2ZjAwMDAwMDAwLCAweDZiZjExNjU5MDAwMDAwMDAsCisgICAgMHg2YjgyMmViNTAwMDAwMDAwLCAweDk4MTJkYzgzMDAwMDAwMDAsIDB4OGRhM2NiZDgwMDAwMDAwMCwKKyAgICAweDdlMzMzOWVlMDAwMDAwMDAsIDB4YTdjMWU0NmUwMDAwMDAwMCwgMHg1NDUxMTY1ODAwMDAwMDAwLAorICAgIDB4NDFlMDAxMDMwMDAwMDAwMCwgMHhiMjcwZjMzNTAwMDAwMDAwLCAweDI1MDFlNzY4MDAwMDAwMDAsCisgICAgMHhkNjkxMTU1ZTAwMDAwMDAwLCAweGMzMjAwMjA1MDAwMDAwMDAsIDB4MzBiMGYwMzMwMDAwMDAwMCwKKyAgICAweGU5NDIyZGIzMDAwMDAwMDAsIDB4MWFkMmRmODUwMDAwMDAwMCwgMHgwZjYzYzhkZTAwMDAwMDAwLAorICAgIDB4ZmNmMzNhZTgwMDAwMDAwMCwgMHhmYzgwMDIwNDAwMDAwMDAwLCAweDBmMTBmMDMyMDAwMDAwMDAsCisgICAgMHgxYWExZTc2OTAwMDAwMDAwLCAweGU5MzExNTVmMDAwMDAwMDAsIDB4MzBjM2M4ZGYwMDAwMDAwMCwKKyAgICAweGMzNTMzYWU5MDAwMDAwMDAsIDB4ZDZlMjJkYjIwMDAwMDAwMCwgMHgyNTcyZGY4NDAwMDAwMDAwLAorICAgIDB4OTcwMjJjYjEwMDAwMDAwMCwgMHg2NDkyZGU4NzAwMDAwMDAwLCAweDcxMjNjOWRjMDAwMDAwMDAsCisgICAgMHg4MmIzM2JlYTAwMDAwMDAwLCAweDViNDFlNjZhMDAwMDAwMDAsIDB4YThkMTE0NWMwMDAwMDAwMCwKKyAgICAweGJkNjAwMzA3MDAwMDAwMDAsIDB4NGVmMGYxMzEwMDAwMDAwMCwgMHg0ZTgzYzlkZDAwMDAwMDAwLAorICAgIDB4YmQxMzNiZWIwMDAwMDAwMCwgMHhhOGEyMmNiMDAwMDAwMDAwLCAweDViMzJkZTg2MDAwMDAwMDAsCisgICAgMHg4MmMwMDMwNjAwMDAwMDAwLCAweDcxNTBmMTMwMDAwMDAwMDAsIDB4NjRlMWU2NmIwMDAwMDAwMCwKKyAgICAweDk3NzExNDVkMDAwMDAwMDAsIDB4NGEwMmNlZDEwMDAwMDAwMCwgMHhiOTkyM2NlNzAwMDAwMDAwLAorICAgIDB4YWMyMzJiYmMwMDAwMDAwMCwgMHg1ZmIzZDk4YTAwMDAwMDAwLCAweDg2NDEwNDBhMDAwMDAwMDAsCisgICAgMHg3NWQxZjYzYzAwMDAwMDAwLCAweDYwNjBlMTY3MDAwMDAwMDAsIDB4OTNmMDEzNTEwMDAwMDAwMCwKKyAgICAweDkzODMyYmJkMDAwMDAwMDAsIDB4NjAxM2Q5OGIwMDAwMDAwMCwgMHg3NWEyY2VkMDAwMDAwMDAwLAorICAgIDB4ODYzMjNjZTYwMDAwMDAwMCwgMHg1ZmMwZTE2NjAwMDAwMDAwLCAweGFjNTAxMzUwMDAwMDAwMDAsCisgICAgMHhiOWUxMDQwYjAwMDAwMDAwLCAweDRhNzFmNjNkMDAwMDAwMDAsIDB4ZjgwMTA1MDgwMDAwMDAwMCwKKyAgICAweDBiOTFmNzNlMDAwMDAwMDAsIDB4MWUyMGUwNjUwMDAwMDAwMCwgMHhlZGIwMTI1MzAwMDAwMDAwLAorICAgIDB4MzQ0MmNmZDMwMDAwMDAwMCwgMHhjN2QyM2RlNTAwMDAwMDAwLCAweGQyNjMyYWJlMDAwMDAwMDAsCisgICAgMHgyMWYzZDg4ODAwMDAwMDAwLCAweDIxODBlMDY0MDAwMDAwMDAsIDB4ZDIxMDEyNTIwMDAwMDAwMCwKKyAgICAweGM3YTEwNTA5MDAwMDAwMDAsIDB4MzQzMWY3M2YwMDAwMDAwMCwgMHhlZGMzMmFiZjAwMDAwMDAwLAorICAgIDB4MWU1M2Q4ODkwMDAwMDAwMCwgMHgwYmUyY2ZkMjAwMDAwMDAwLCAweGY4NzIzZGU0MDAwMDAwMDAsCisgICAgMHg2ZjAzMjliOTAwMDAwMDAwLCAweDljOTNkYjhmMDAwMDAwMDAsIDB4ODkyMmNjZDQwMDAwMDAwMCwKKyAgICAweDdhYjIzZWUyMDAwMDAwMDAsIDB4YTM0MGUzNjIwMDAwMDAwMCwgMHg1MGQwMTE1NDAwMDAwMDAwLAorICAgIDB4NDU2MTA2MGYwMDAwMDAwMCwgMHhiNmYxZjQzOTAwMDAwMDAwLCAweGI2ODJjY2Q1MDAwMDAwMDAsCisgICAgMHg0NTEyM2VlMzAwMDAwMDAwLCAweDUwYTMyOWI4MDAwMDAwMDAsIDB4YTMzM2RiOGUwMDAwMDAwMCwKKyAgICAweDdhYzEwNjBlMDAwMDAwMDAsIDB4ODk1MWY0MzgwMDAwMDAwMCwgMHg5Y2UwZTM2MzAwMDAwMDAwLAorICAgIDB4NmY3MDExNTUwMDAwMDAwMCwgMHhkZDAwZTI2MDAwMDAwMDAwLCAweDJlOTAxMDU2MDAwMDAwMDAsCisgICAgMHgzYjIxMDcwZDAwMDAwMDAwLCAweGM4YjFmNTNiMDAwMDAwMDAsIDB4MTE0MzI4YmIwMDAwMDAwMCwKKyAgICAweGUyZDNkYThkMDAwMDAwMDAsIDB4Zjc2MmNkZDYwMDAwMDAwMCwgMHgwNGYyM2ZlMDAwMDAwMDAwLAorICAgIDB4MDQ4MTA3MGMwMDAwMDAwMCwgMHhmNzExZjUzYTAwMDAwMDAwLCAweGUyYTBlMjYxMDAwMDAwMDAsCisgICAgMHgxMTMwMTA1NzAwMDAwMDAwLCAweGM4YzJjZGQ3MDAwMDAwMDAsIDB4M2I1MjNmZTEwMDAwMDAwMCwKKyAgICAweDJlZTMyOGJhMDAwMDAwMDAsIDB4ZGQ3M2RhOGMwMDAwMDAwMCwgMHhkNTAyZWQ3ODAwMDAwMDAwLAorICAgIDB4MjY5MjFmNGUwMDAwMDAwMCwgMHgzMzIzMDgxNTAwMDAwMDAwLCAweGMwYjNmYTIzMDAwMDAwMDAsCisgICAgMHgxOTQxMjdhMzAwMDAwMDAwLCAweGVhZDFkNTk1MDAwMDAwMDAsIDB4ZmY2MGMyY2UwMDAwMDAwMCwKKyAgICAweDBjZjAzMGY4MDAwMDAwMDAsIDB4MGM4MzA4MTQwMDAwMDAwMCwgMHhmZjEzZmEyMjAwMDAwMDAwLAorICAgIDB4ZWFhMmVkNzkwMDAwMDAwMCwgMHgxOTMyMWY0ZjAwMDAwMDAwLCAweGMwYzBjMmNmMDAwMDAwMDAsCisgICAgMHgzMzUwMzBmOTAwMDAwMDAwLCAweDI2ZTEyN2EyMDAwMDAwMDAsIDB4ZDU3MWQ1OTQwMDAwMDAwMCwKKyAgICAweDY3MDEyNmExMDAwMDAwMDAsIDB4OTQ5MWQ0OTcwMDAwMDAwMCwgMHg4MTIwYzNjYzAwMDAwMDAwLAorICAgIDB4NzJiMDMxZmEwMDAwMDAwMCwgMHhhYjQyZWM3YTAwMDAwMDAwLCAweDU4ZDIxZTRjMDAwMDAwMDAsCisgICAgMHg0ZDYzMDkxNzAwMDAwMDAwLCAweGJlZjNmYjIxMDAwMDAwMDAsIDB4YmU4MGMzY2QwMDAwMDAwMCwKKyAgICAweDRkMTAzMWZiMDAwMDAwMDAsIDB4NThhMTI2YTAwMDAwMDAwMCwgMHhhYjMxZDQ5NjAwMDAwMDAwLAorICAgIDB4NzJjMzA5MTYwMDAwMDAwMCwgMHg4MTUzZmIyMDAwMDAwMDAwLCAweDk0ZTJlYzdiMDAwMDAwMDAsCisgICAgMHg2NzcyMWU0ZDAwMDAwMDAwLCAweGYwMDMwYTEwMDAwMDAwMDAsIDB4MDM5M2Y4MjYwMDAwMDAwMCwKKyAgICAweDE2MjJlZjdkMDAwMDAwMDAsIDB4ZTViMjFkNGIwMDAwMDAwMCwgMHgzYzQwYzBjYjAwMDAwMDAwLAorICAgIDB4Y2ZkMDMyZmQwMDAwMDAwMCwgMHhkYTYxMjVhNjAwMDAwMDAwLCAweDI5ZjFkNzkwMDAwMDAwMDAsCisgICAgMHgyOTgyZWY3YzAwMDAwMDAwLCAweGRhMTIxZDRhMDAwMDAwMDAsIDB4Y2ZhMzBhMTEwMDAwMDAwMCwKKyAgICAweDNjMzNmODI3MDAwMDAwMDAsIDB4ZTVjMTI1YTcwMDAwMDAwMCwgMHgxNjUxZDc5MTAwMDAwMDAwLAorICAgIDB4MDNlMGMwY2EwMDAwMDAwMCwgMHhmMDcwMzJmYzAwMDAwMDAwLCAweDQyMDBjMWM5MDAwMDAwMDAsCisgICAgMHhiMTkwMzNmZjAwMDAwMDAwLCAweGE0MjEyNGE0MDAwMDAwMDAsIDB4NTdiMWQ2OTIwMDAwMDAwMCwKKyAgICAweDhlNDMwYjEyMDAwMDAwMDAsIDB4N2RkM2Y5MjQwMDAwMDAwMCwgMHg2ODYyZWU3ZjAwMDAwMDAwLAorICAgIDB4OWJmMjFjNDkwMDAwMDAwMCwgMHg5YjgxMjRhNTAwMDAwMDAwLCAweDY4MTFkNjkzMDAwMDAwMDAsCisgICAgMHg3ZGEwYzFjODAwMDAwMDAwLCAweDhlMzAzM2ZlMDAwMDAwMDAsIDB4NTdjMmVlN2UwMDAwMDAwMCwKKyAgICAweGE0NTIxYzQ4MDAwMDAwMDAsIDB4YjFlMzBiMTMwMDAwMDAwMCwgMHg0MjczZjkyNTAwMDAwMDAwLAorICAgIDB4OWYwMDIzYTkwMDAwMDAwMCwgMHg2YzkwZDE5ZjAwMDAwMDAwLCAweDc5MjFjNmM0MDAwMDAwMDAsCisgICAgMHg4YWIxMzRmMjAwMDAwMDAwLCAweDUzNDNlOTcyMDAwMDAwMDAsIDB4YTBkMzFiNDQwMDAwMDAwMCwKKyAgICAweGI1NjIwYzFmMDAwMDAwMDAsIDB4NDZmMmZlMjkwMDAwMDAwMCwgMHg0NjgxYzZjNTAwMDAwMDAwLAorICAgIDB4YjUxMTM0ZjMwMDAwMDAwMCwgMHhhMGEwMjNhODAwMDAwMDAwLCAweDUzMzBkMTllMDAwMDAwMDAsCisgICAgMHg4YWMyMGMxZTAwMDAwMDAwLCAweDc5NTJmZTI4MDAwMDAwMDAsIDB4NmNlM2U5NzMwMDAwMDAwMCwKKyAgICAweDlmNzMxYjQ1MDAwMDAwMDAsIDB4MmQwM2U4NzAwMDAwMDAwMCwgMHhkZTkzMWE0NjAwMDAwMDAwLAorICAgIDB4Y2IyMjBkMWQwMDAwMDAwMCwgMHgzOGIyZmYyYjAwMDAwMDAwLCAweGUxNDAyMmFiMDAwMDAwMDAsCisgICAgMHgxMmQwZDA5ZDAwMDAwMDAwLCAweDA3NjFjN2M2MDAwMDAwMDAsIDB4ZjRmMTM1ZjAwMDAwMDAwMCwKKyAgICAweGY0ODIwZDFjMDAwMDAwMDAsIDB4MDcxMmZmMmEwMDAwMDAwMCwgMHgxMmEzZTg3MTAwMDAwMDAwLAorICAgIDB4ZTEzMzFhNDcwMDAwMDAwMCwgMHgzOGMxYzdjNzAwMDAwMDAwLCAweGNiNTEzNWYxMDAwMDAwMDAsCisgICAgMHhkZWUwMjJhYTAwMDAwMDAwLCAweDJkNzBkMDljMDAwMDAwMDAsIDB4YmEwMWM0YzEwMDAwMDAwMCwKKyAgICAweDQ5OTEzNmY3MDAwMDAwMDAsIDB4NWMyMDIxYWMwMDAwMDAwMCwgMHhhZmIwZDM5YTAwMDAwMDAwLAorICAgIDB4NzY0MjBlMWEwMDAwMDAwMCwgMHg4NWQyZmMyYzAwMDAwMDAwLCAweDkwNjNlYjc3MDAwMDAwMDAsCisgICAgMHg2M2YzMTk0MTAwMDAwMDAwLCAweDYzODAyMWFkMDAwMDAwMDAsIDB4OTAxMGQzOWIwMDAwMDAwMCwKKyAgICAweDg1YTFjNGMwMDAwMDAwMDAsIDB4NzYzMTM2ZjYwMDAwMDAwMCwgMHhhZmMzZWI3NjAwMDAwMDAwLAorICAgIDB4NWM1MzE5NDAwMDAwMDAwMCwgMHg0OWUyMGUxYjAwMDAwMDAwLCAweGJhNzJmYzJkMDAwMDAwMDAsCisgICAgMHgwODAyMGYxODAwMDAwMDAwLCAweGZiOTJmZDJlMDAwMDAwMDAsIDB4ZWUyM2VhNzUwMDAwMDAwMCwKKyAgICAweDFkYjMxODQzMDAwMDAwMDAsIDB4YzQ0MWM1YzMwMDAwMDAwMCwgMHgzN2QxMzdmNTAwMDAwMDAwLAorICAgIDB4MjI2MDIwYWUwMDAwMDAwMCwgMHhkMWYwZDI5ODAwMDAwMDAwLCAweGQxODNlYTc0MDAwMDAwMDAsCisgICAgMHgyMjEzMTg0MjAwMDAwMDAwLCAweDM3YTIwZjE5MDAwMDAwMDAsIDB4YzQzMmZkMmYwMDAwMDAwMCwKKyAgICAweDFkYzAyMGFmMDAwMDAwMDAsIDB4ZWU1MGQyOTkwMDAwMDAwMCwgMHhmYmUxYzVjMjAwMDAwMDAwLAorICAgIDB4MDg3MTM3ZjQwMDAwMDAwMH0sCisgICB7MHgwMDAwMDAwMDAwMDAwMDAwLCAweDM2NTE4MjI0MDAwMDAwMDAsIDB4NmNhMjA0NDkwMDAwMDAwMCwKKyAgICAweDVhZjM4NjZkMDAwMDAwMDAsIDB4ZDg0NDA5OTIwMDAwMDAwMCwgMHhlZTE1OGJiNjAwMDAwMDAwLAorICAgIDB4YjRlNjBkZGIwMDAwMDAwMCwgMHg4MmI3OGZmZjAwMDAwMDAwLCAweGYxOGY2M2ZmMDAwMDAwMDAsCisgICAgMHhjN2RlZTFkYjAwMDAwMDAwLCAweDlkMmQ2N2I2MDAwMDAwMDAsIDB4YWI3Y2U1OTIwMDAwMDAwMCwKKyAgICAweDI5Y2I2YTZkMDAwMDAwMDAsIDB4MWY5YWU4NDkwMDAwMDAwMCwgMHg0NTY5NmUyNDAwMDAwMDAwLAorICAgIDB4NzMzOGVjMDAwMDAwMDAwMCwgMHhhMzE5YjYyNTAwMDAwMDAwLCAweDk1NDgzNDAxMDAwMDAwMDAsCisgICAgMHhjZmJiYjI2YzAwMDAwMDAwLCAweGY5ZWEzMDQ4MDAwMDAwMDAsIDB4N2I1ZGJmYjcwMDAwMDAwMCwKKyAgICAweDRkMGMzZDkzMDAwMDAwMDAsIDB4MTdmZmJiZmUwMDAwMDAwMCwgMHgyMWFlMzlkYTAwMDAwMDAwLAorICAgIDB4NTI5NmQ1ZGEwMDAwMDAwMCwgMHg2NGM3NTdmZTAwMDAwMDAwLCAweDNlMzRkMTkzMDAwMDAwMDAsCisgICAgMHgwODY1NTNiNzAwMDAwMDAwLCAweDhhZDJkYzQ4MDAwMDAwMDAsIDB4YmM4MzVlNmMwMDAwMDAwMCwKKyAgICAweGU2NzBkODAxMDAwMDAwMDAsIDB4ZDAyMTVhMjUwMDAwMDAwMCwgMHg0NjMzNmM0YjAwMDAwMDAwLAorICAgIDB4NzA2MmVlNmYwMDAwMDAwMCwgMHgyYTkxNjgwMjAwMDAwMDAwLCAweDFjYzBlYTI2MDAwMDAwMDAsCisgICAgMHg5ZTc3NjVkOTAwMDAwMDAwLCAweGE4MjZlN2ZkMDAwMDAwMDAsIDB4ZjJkNTYxOTAwMDAwMDAwMCwKKyAgICAweGM0ODRlM2I0MDAwMDAwMDAsIDB4YjdiYzBmYjQwMDAwMDAwMCwgMHg4MWVkOGQ5MDAwMDAwMDAwLAorICAgIDB4ZGIxZTBiZmQwMDAwMDAwMCwgMHhlZDRmODlkOTAwMDAwMDAwLCAweDZmZjgwNjI2MDAwMDAwMDAsCisgICAgMHg1OWE5ODQwMjAwMDAwMDAwLCAweDAzNWEwMjZmMDAwMDAwMDAsIDB4MzUwYjgwNGIwMDAwMDAwMCwKKyAgICAweGU1MmFkYTZlMDAwMDAwMDAsIDB4ZDM3YjU4NGEwMDAwMDAwMCwgMHg4OTg4ZGUyNzAwMDAwMDAwLAorICAgIDB4YmZkOTVjMDMwMDAwMDAwMCwgMHgzZDZlZDNmYzAwMDAwMDAwLCAweDBiM2Y1MWQ4MDAwMDAwMDAsCisgICAgMHg1MWNjZDdiNTAwMDAwMDAwLCAweDY3OWQ1NTkxMDAwMDAwMDAsIDB4MTRhNWI5OTEwMDAwMDAwMCwKKyAgICAweDIyZjQzYmI1MDAwMDAwMDAsIDB4NzgwN2JkZDgwMDAwMDAwMCwgMHg0ZTU2M2ZmYzAwMDAwMDAwLAorICAgIDB4Y2NlMWIwMDMwMDAwMDAwMCwgMHhmYWIwMzIyNzAwMDAwMDAwLCAweGEwNDNiNDRhMDAwMDAwMDAsCisgICAgMHg5NjEyMzY2ZTAwMDAwMDAwLCAweDhjNjZkODk2MDAwMDAwMDAsIDB4YmEzNzVhYjIwMDAwMDAwMCwKKyAgICAweGUwYzRkY2RmMDAwMDAwMDAsIDB4ZDY5NTVlZmIwMDAwMDAwMCwgMHg1NDIyZDEwNDAwMDAwMDAwLAorICAgIDB4NjI3MzUzMjAwMDAwMDAwMCwgMHgzODgwZDU0ZDAwMDAwMDAwLCAweDBlZDE1NzY5MDAwMDAwMDAsCisgICAgMHg3ZGU5YmI2OTAwMDAwMDAwLCAweDRiYjgzOTRkMDAwMDAwMDAsIDB4MTE0YmJmMjAwMDAwMDAwMCwKKyAgICAweDI3MWEzZDA0MDAwMDAwMDAsIDB4YTVhZGIyZmIwMDAwMDAwMCwgMHg5M2ZjMzBkZjAwMDAwMDAwLAorICAgIDB4YzkwZmI2YjIwMDAwMDAwMCwgMHhmZjVlMzQ5NjAwMDAwMDAwLCAweDJmN2Y2ZWIzMDAwMDAwMDAsCisgICAgMHgxOTJlZWM5NzAwMDAwMDAwLCAweDQzZGQ2YWZhMDAwMDAwMDAsIDB4NzU4Y2U4ZGUwMDAwMDAwMCwKKyAgICAweGY3M2I2NzIxMDAwMDAwMDAsIDB4YzE2YWU1MDUwMDAwMDAwMCwgMHg5Yjk5NjM2ODAwMDAwMDAwLAorICAgIDB4YWRjOGUxNGMwMDAwMDAwMCwgMHhkZWYwMGQ0YzAwMDAwMDAwLCAweGU4YTE4ZjY4MDAwMDAwMDAsCisgICAgMHhiMjUyMDkwNTAwMDAwMDAwLCAweDg0MDM4YjIxMDAwMDAwMDAsIDB4MDZiNDA0ZGUwMDAwMDAwMCwKKyAgICAweDMwZTU4NmZhMDAwMDAwMDAsIDB4NmExNjAwOTcwMDAwMDAwMCwgMHg1YzQ3ODJiMzAwMDAwMDAwLAorICAgIDB4Y2E1NWI0ZGQwMDAwMDAwMCwgMHhmYzA0MzZmOTAwMDAwMDAwLCAweGE2ZjdiMDk0MDAwMDAwMDAsCisgICAgMHg5MGE2MzJiMDAwMDAwMDAwLCAweDEyMTFiZDRmMDAwMDAwMDAsIDB4MjQ0MDNmNmIwMDAwMDAwMCwKKyAgICAweDdlYjNiOTA2MDAwMDAwMDAsIDB4NDhlMjNiMjIwMDAwMDAwMCwgMHgzYmRhZDcyMjAwMDAwMDAwLAorICAgIDB4MGQ4YjU1MDYwMDAwMDAwMCwgMHg1Nzc4ZDM2YjAwMDAwMDAwLCAweDYxMjk1MTRmMDAwMDAwMDAsCisgICAgMHhlMzllZGViMDAwMDAwMDAwLCAweGQ1Y2Y1Yzk0MDAwMDAwMDAsIDB4OGYzY2RhZjkwMDAwMDAwMCwKKyAgICAweGI5NmQ1OGRkMDAwMDAwMDAsIDB4Njk0YzAyZjgwMDAwMDAwMCwgMHg1ZjFkODBkYzAwMDAwMDAwLAorICAgIDB4MDVlZTA2YjEwMDAwMDAwMCwgMHgzM2JmODQ5NTAwMDAwMDAwLCAweGIxMDgwYjZhMDAwMDAwMDAsCisgICAgMHg4NzU5ODk0ZTAwMDAwMDAwLCAweGRkYWEwZjIzMDAwMDAwMDAsIDB4ZWJmYjhkMDcwMDAwMDAwMCwKKyAgICAweDk4YzM2MTA3MDAwMDAwMDAsIDB4YWU5MmUzMjMwMDAwMDAwMCwgMHhmNDYxNjU0ZTAwMDAwMDAwLAorICAgIDB4YzIzMGU3NmEwMDAwMDAwMCwgMHg0MDg3Njg5NTAwMDAwMDAwLCAweDc2ZDZlYWIxMDAwMDAwMDAsCisgICAgMHgyYzI1NmNkYzAwMDAwMDAwLCAweDFhNzRlZWY4MDAwMDAwMDAsIDB4NTljYmMxZjYwMDAwMDAwMCwKKyAgICAweDZmOWE0M2QyMDAwMDAwMDAsIDB4MzU2OWM1YmYwMDAwMDAwMCwgMHgwMzM4NDc5YjAwMDAwMDAwLAorICAgIDB4ODE4ZmM4NjQwMDAwMDAwMCwgMHhiN2RlNGE0MDAwMDAwMDAwLCAweGVkMmRjYzJkMDAwMDAwMDAsCisgICAgMHhkYjdjNGUwOTAwMDAwMDAwLCAweGE4NDRhMjA5MDAwMDAwMDAsIDB4OWUxNTIwMmQwMDAwMDAwMCwKKyAgICAweGM0ZTZhNjQwMDAwMDAwMDAsIDB4ZjJiNzI0NjQwMDAwMDAwMCwgMHg3MDAwYWI5YjAwMDAwMDAwLAorICAgIDB4NDY1MTI5YmYwMDAwMDAwMCwgMHgxY2EyYWZkMjAwMDAwMDAwLCAweDJhZjMyZGY2MDAwMDAwMDAsCisgICAgMHhmYWQyNzdkMzAwMDAwMDAwLCAweGNjODNmNWY3MDAwMDAwMDAsIDB4OTY3MDczOWEwMDAwMDAwMCwKKyAgICAweGEwMjFmMWJlMDAwMDAwMDAsIDB4MjI5NjdlNDEwMDAwMDAwMCwgMHgxNGM3ZmM2NTAwMDAwMDAwLAorICAgIDB4NGUzNDdhMDgwMDAwMDAwMCwgMHg3ODY1ZjgyYzAwMDAwMDAwLCAweDBiNWQxNDJjMDAwMDAwMDAsCisgICAgMHgzZDBjOTYwODAwMDAwMDAwLCAweDY3ZmYxMDY1MDAwMDAwMDAsIDB4NTFhZTkyNDEwMDAwMDAwMCwKKyAgICAweGQzMTkxZGJlMDAwMDAwMDAsIDB4ZTU0ODlmOWEwMDAwMDAwMCwgMHhiZmJiMTlmNzAwMDAwMDAwLAorICAgIDB4ODllYTliZDMwMDAwMDAwMCwgMHgxZmY4YWRiZDAwMDAwMDAwLCAweDI5YTkyZjk5MDAwMDAwMDAsCisgICAgMHg3MzVhYTlmNDAwMDAwMDAwLCAweDQ1MGIyYmQwMDAwMDAwMDAsIDB4YzdiY2E0MmYwMDAwMDAwMCwKKyAgICAweGYxZWQyNjBiMDAwMDAwMDAsIDB4YWIxZWEwNjYwMDAwMDAwMCwgMHg5ZDRmMjI0MjAwMDAwMDAwLAorICAgIDB4ZWU3N2NlNDIwMDAwMDAwMCwgMHhkODI2NGM2NjAwMDAwMDAwLCAweDgyZDVjYTBiMDAwMDAwMDAsCisgICAgMHhiNDg0NDgyZjAwMDAwMDAwLCAweDM2MzNjN2QwMDAwMDAwMDAsIDB4MDA2MjQ1ZjQwMDAwMDAwMCwKKyAgICAweDVhOTFjMzk5MDAwMDAwMDAsIDB4NmNjMDQxYmQwMDAwMDAwMCwgMHhiY2UxMWI5ODAwMDAwMDAwLAorICAgIDB4OGFiMDk5YmMwMDAwMDAwMCwgMHhkMDQzMWZkMTAwMDAwMDAwLCAweGU2MTI5ZGY1MDAwMDAwMDAsCisgICAgMHg2NGE1MTIwYTAwMDAwMDAwLCAweDUyZjQ5MDJlMDAwMDAwMDAsIDB4MDgwNzE2NDMwMDAwMDAwMCwKKyAgICAweDNlNTY5NDY3MDAwMDAwMDAsIDB4NGQ2ZTc4NjcwMDAwMDAwMCwgMHg3YjNmZmE0MzAwMDAwMDAwLAorICAgIDB4MjFjYzdjMmUwMDAwMDAwMCwgMHgxNzlkZmUwYTAwMDAwMDAwLCAweDk1MmE3MWY1MDAwMDAwMDAsCisgICAgMHhhMzdiZjNkMTAwMDAwMDAwLCAweGY5ODg3NWJjMDAwMDAwMDAsIDB4Y2ZkOWY3OTgwMDAwMDAwMCwKKyAgICAweGQ1YWQxOTYwMDAwMDAwMDAsIDB4ZTNmYzliNDQwMDAwMDAwMCwgMHhiOTBmMWQyOTAwMDAwMDAwLAorICAgIDB4OGY1ZTlmMGQwMDAwMDAwMCwgMHgwZGU5MTBmMjAwMDAwMDAwLCAweDNiYjg5MmQ2MDAwMDAwMDAsCisgICAgMHg2MTRiMTRiYjAwMDAwMDAwLCAweDU3MWE5NjlmMDAwMDAwMDAsIDB4MjQyMjdhOWYwMDAwMDAwMCwKKyAgICAweDEyNzNmOGJiMDAwMDAwMDAsIDB4NDg4MDdlZDYwMDAwMDAwMCwgMHg3ZWQxZmNmMjAwMDAwMDAwLAorICAgIDB4ZmM2NjczMGQwMDAwMDAwMCwgMHhjYTM3ZjEyOTAwMDAwMDAwLCAweDkwYzQ3NzQ0MDAwMDAwMDAsCisgICAgMHhhNjk1ZjU2MDAwMDAwMDAwLCAweDc2YjRhZjQ1MDAwMDAwMDAsIDB4NDBlNTJkNjEwMDAwMDAwMCwKKyAgICAweDFhMTZhYjBjMDAwMDAwMDAsIDB4MmM0NzI5MjgwMDAwMDAwMCwgMHhhZWYwYTZkNzAwMDAwMDAwLAorICAgIDB4OThhMTI0ZjMwMDAwMDAwMCwgMHhjMjUyYTI5ZTAwMDAwMDAwLCAweGY0MDMyMGJhMDAwMDAwMDAsCisgICAgMHg4NzNiY2NiYTAwMDAwMDAwLCAweGIxNmE0ZTllMDAwMDAwMDAsIDB4ZWI5OWM4ZjMwMDAwMDAwMCwKKyAgICAweGRkYzg0YWQ3MDAwMDAwMDAsIDB4NWY3ZmM1MjgwMDAwMDAwMCwgMHg2OTJlNDcwYzAwMDAwMDAwLAorICAgIDB4MzNkZGMxNjEwMDAwMDAwMCwgMHgwNThjNDM0NTAwMDAwMDAwLCAweDkzOWU3NTJiMDAwMDAwMDAsCisgICAgMHhhNWNmZjcwZjAwMDAwMDAwLCAweGZmM2M3MTYyMDAwMDAwMDAsIDB4Yzk2ZGYzNDYwMDAwMDAwMCwKKyAgICAweDRiZGE3Y2I5MDAwMDAwMDAsIDB4N2Q4YmZlOWQwMDAwMDAwMCwgMHgyNzc4NzhmMDAwMDAwMDAwLAorICAgIDB4MTEyOWZhZDQwMDAwMDAwMCwgMHg2MjExMTZkNDAwMDAwMDAwLCAweDU0NDA5NGYwMDAwMDAwMDAsCisgICAgMHgwZWIzMTI5ZDAwMDAwMDAwLCAweDM4ZTI5MGI5MDAwMDAwMDAsIDB4YmE1NTFmNDYwMDAwMDAwMCwKKyAgICAweDhjMDQ5ZDYyMDAwMDAwMDAsIDB4ZDZmNzFiMGYwMDAwMDAwMCwgMHhlMGE2OTkyYjAwMDAwMDAwLAorICAgIDB4MzA4N2MzMGUwMDAwMDAwMCwgMHgwNmQ2NDEyYTAwMDAwMDAwLCAweDVjMjVjNzQ3MDAwMDAwMDAsCisgICAgMHg2YTc0NDU2MzAwMDAwMDAwLCAweGU4YzNjYTljMDAwMDAwMDAsIDB4ZGU5MjQ4YjgwMDAwMDAwMCwKKyAgICAweDg0NjFjZWQ1MDAwMDAwMDAsIDB4YjIzMDRjZjEwMDAwMDAwMCwgMHhjMTA4YTBmMTAwMDAwMDAwLAorICAgIDB4Zjc1OTIyZDUwMDAwMDAwMCwgMHhhZGFhYTRiODAwMDAwMDAwLCAweDliZmIyNjljMDAwMDAwMDAsCisgICAgMHgxOTRjYTk2MzAwMDAwMDAwLCAweDJmMWQyYjQ3MDAwMDAwMDAsIDB4NzVlZWFkMmEwMDAwMDAwMCwKKyAgICAweDQzYmYyZjBlMDAwMDAwMDB9LAorICAgezB4MDAwMDAwMDAwMDAwMDAwMCwgMHhjODE3OWVjZjAwMDAwMDAwLCAweGQxMjk0ZDQ0MDAwMDAwMDAsCisgICAgMHgxOTNlZDM4YjAwMDAwMDAwLCAweGEyNTM5YTg4MDAwMDAwMDAsIDB4NmE0NDA0NDcwMDAwMDAwMCwKKyAgICAweDczN2FkN2NjMDAwMDAwMDAsIDB4YmI2ZDQ5MDMwMDAwMDAwMCwgMHgwNWExNDVjYTAwMDAwMDAwLAorICAgIDB4Y2RiNmRiMDUwMDAwMDAwMCwgMHhkNDg4MDg4ZTAwMDAwMDAwLCAweDFjOWY5NjQxMDAwMDAwMDAsCisgICAgMHhhN2YyZGY0MjAwMDAwMDAwLCAweDZmZTU0MThkMDAwMDAwMDAsIDB4NzZkYjkyMDYwMDAwMDAwMCwKKyAgICAweGJlY2MwY2M5MDAwMDAwMDAsIDB4NGI0NGZhNGYwMDAwMDAwMCwgMHg4MzUzNjQ4MDAwMDAwMDAwLAorICAgIDB4OWE2ZGI3MGIwMDAwMDAwMCwgMHg1MjdhMjljNDAwMDAwMDAwLCAweGU5MTc2MGM3MDAwMDAwMDAsCisgICAgMHgyMTAwZmUwODAwMDAwMDAwLCAweDM4M2UyZDgzMDAwMDAwMDAsIDB4ZjAyOWIzNGMwMDAwMDAwMCwKKyAgICAweDRlZTViZjg1MDAwMDAwMDAsIDB4ODZmMjIxNGEwMDAwMDAwMCwgMHg5ZmNjZjJjMTAwMDAwMDAwLAorICAgIDB4NTdkYjZjMGUwMDAwMDAwMCwgMHhlY2I2MjUwZDAwMDAwMDAwLCAweDI0YTFiYmMyMDAwMDAwMDAsCisgICAgMHgzZDlmNjg0OTAwMDAwMDAwLCAweGY1ODhmNjg2MDAwMDAwMDAsIDB4OTY4OGY0OWYwMDAwMDAwMCwKKyAgICAweDVlOWY2YTUwMDAwMDAwMDAsIDB4NDdhMWI5ZGIwMDAwMDAwMCwgMHg4ZmI2MjcxNDAwMDAwMDAwLAorICAgIDB4MzRkYjZlMTcwMDAwMDAwMCwgMHhmY2NjZjBkODAwMDAwMDAwLCAweGU1ZjIyMzUzMDAwMDAwMDAsCisgICAgMHgyZGU1YmQ5YzAwMDAwMDAwLCAweDkzMjliMTU1MDAwMDAwMDAsIDB4NWIzZTJmOWEwMDAwMDAwMCwKKyAgICAweDQyMDBmYzExMDAwMDAwMDAsIDB4OGExNzYyZGUwMDAwMDAwMCwgMHgzMTdhMmJkZDAwMDAwMDAwLAorICAgIDB4Zjk2ZGI1MTIwMDAwMDAwMCwgMHhlMDUzNjY5OTAwMDAwMDAwLCAweDI4NDRmODU2MDAwMDAwMDAsCisgICAgMHhkZGNjMGVkMDAwMDAwMDAwLCAweDE1ZGI5MDFmMDAwMDAwMDAsIDB4MGNlNTQzOTQwMDAwMDAwMCwKKyAgICAweGM0ZjJkZDViMDAwMDAwMDAsIDB4N2Y5Zjk0NTgwMDAwMDAwMCwgMHhiNzg4MGE5NzAwMDAwMDAwLAorICAgIDB4YWViNmQ5MWMwMDAwMDAwMCwgMHg2NmExNDdkMzAwMDAwMDAwLCAweGQ4NmQ0YjFhMDAwMDAwMDAsCisgICAgMHgxMDdhZDVkNTAwMDAwMDAwLCAweDA5NDQwNjVlMDAwMDAwMDAsIDB4YzE1Mzk4OTEwMDAwMDAwMCwKKyAgICAweDdhM2VkMTkyMDAwMDAwMDAsIDB4YjIyOTRmNWQwMDAwMDAwMCwgMHhhYjE3OWNkNjAwMDAwMDAwLAorICAgIDB4NjMwMDAyMTkwMDAwMDAwMCwgMHg2ZDE3OThlNDAwMDAwMDAwLCAweGE1MDAwNjJiMDAwMDAwMDAsCisgICAgMHhiYzNlZDVhMDAwMDAwMDAwLCAweDc0Mjk0YjZmMDAwMDAwMDAsIDB4Y2Y0NDAyNmMwMDAwMDAwMCwKKyAgICAweDA3NTM5Y2EzMDAwMDAwMDAsIDB4MWU2ZDRmMjgwMDAwMDAwMCwgMHhkNjdhZDFlNzAwMDAwMDAwLAorICAgIDB4NjhiNmRkMmUwMDAwMDAwMCwgMHhhMGExNDNlMTAwMDAwMDAwLCAweGI5OWY5MDZhMDAwMDAwMDAsCisgICAgMHg3MTg4MGVhNTAwMDAwMDAwLCAweGNhZTU0N2E2MDAwMDAwMDAsIDB4MDJmMmQ5NjkwMDAwMDAwMCwKKyAgICAweDFiY2MwYWUyMDAwMDAwMDAsIDB4ZDNkYjk0MmQwMDAwMDAwMCwgMHgyNjUzNjJhYjAwMDAwMDAwLAorICAgIDB4ZWU0NGZjNjQwMDAwMDAwMCwgMHhmNzdhMmZlZjAwMDAwMDAwLCAweDNmNmRiMTIwMDAwMDAwMDAsCisgICAgMHg4NDAwZjgyMzAwMDAwMDAwLCAweDRjMTc2NmVjMDAwMDAwMDAsIDB4NTUyOWI1NjcwMDAwMDAwMCwKKyAgICAweDlkM2UyYmE4MDAwMDAwMDAsIDB4MjNmMjI3NjEwMDAwMDAwMCwgMHhlYmU1YjlhZTAwMDAwMDAwLAorICAgIDB4ZjJkYjZhMjUwMDAwMDAwMCwgMHgzYWNjZjRlYTAwMDAwMDAwLCAweDgxYTFiZGU5MDAwMDAwMDAsCisgICAgMHg0OWI2MjMyNjAwMDAwMDAwLCAweDUwODhmMGFkMDAwMDAwMDAsIDB4OTg5ZjZlNjIwMDAwMDAwMCwKKyAgICAweGZiOWY2YzdiMDAwMDAwMDAsIDB4MzM4OGYyYjQwMDAwMDAwMCwgMHgyYWI2MjEzZjAwMDAwMDAwLAorICAgIDB4ZTJhMWJmZjAwMDAwMDAwMCwgMHg1OWNjZjZmMzAwMDAwMDAwLCAweDkxZGI2ODNjMDAwMDAwMDAsCisgICAgMHg4OGU1YmJiNzAwMDAwMDAwLCAweDQwZjIyNTc4MDAwMDAwMDAsIDB4ZmUzZTI5YjEwMDAwMDAwMCwKKyAgICAweDM2MjliNzdlMDAwMDAwMDAsIDB4MmYxNzY0ZjUwMDAwMDAwMCwgMHhlNzAwZmEzYTAwMDAwMDAwLAorICAgIDB4NWM2ZGIzMzkwMDAwMDAwMCwgMHg5NDdhMmRmNjAwMDAwMDAwLCAweDhkNDRmZTdkMDAwMDAwMDAsCisgICAgMHg0NTUzNjBiMjAwMDAwMDAwLCAweGIwZGI5NjM0MDAwMDAwMDAsIDB4NzhjYzA4ZmIwMDAwMDAwMCwKKyAgICAweDYxZjJkYjcwMDAwMDAwMDAsIDB4YTllNTQ1YmYwMDAwMDAwMCwgMHgxMjg4MGNiYzAwMDAwMDAwLAorICAgIDB4ZGE5ZjkyNzMwMDAwMDAwMCwgMHhjM2ExNDFmODAwMDAwMDAwLCAweDBiYjZkZjM3MDAwMDAwMDAsCisgICAgMHhiNTdhZDNmZTAwMDAwMDAwLCAweDdkNmQ0ZDMxMDAwMDAwMDAsIDB4NjQ1MzllYmEwMDAwMDAwMCwKKyAgICAweGFjNDQwMDc1MDAwMDAwMDAsIDB4MTcyOTQ5NzYwMDAwMDAwMCwgMHhkZjNlZDdiOTAwMDAwMDAwLAorICAgIDB4YzYwMDA0MzIwMDAwMDAwMCwgMHgwZTE3OWFmZDAwMDAwMDAwLCAweDliMjg0MTEyMDAwMDAwMDAsCisgICAgMHg1MzNmZGZkZDAwMDAwMDAwLCAweDRhMDEwYzU2MDAwMDAwMDAsIDB4ODIxNjkyOTkwMDAwMDAwMCwKKyAgICAweDM5N2JkYjlhMDAwMDAwMDAsIDB4ZjE2YzQ1NTUwMDAwMDAwMCwgMHhlODUyOTZkZTAwMDAwMDAwLAorICAgIDB4MjA0NTA4MTEwMDAwMDAwMCwgMHg5ZTg5MDRkODAwMDAwMDAwLCAweDU2OWU5YTE3MDAwMDAwMDAsCisgICAgMHg0ZmEwNDk5YzAwMDAwMDAwLCAweDg3YjdkNzUzMDAwMDAwMDAsIDB4M2NkYTllNTAwMDAwMDAwMCwKKyAgICAweGY0Y2QwMDlmMDAwMDAwMDAsIDB4ZWRmM2QzMTQwMDAwMDAwMCwgMHgyNWU0NGRkYjAwMDAwMDAwLAorICAgIDB4ZDA2Y2JiNWQwMDAwMDAwMCwgMHgxODdiMjU5MjAwMDAwMDAwLCAweDAxNDVmNjE5MDAwMDAwMDAsCisgICAgMHhjOTUyNjhkNjAwMDAwMDAwLCAweDcyM2YyMWQ1MDAwMDAwMDAsIDB4YmEyOGJmMWEwMDAwMDAwMCwKKyAgICAweGEzMTY2YzkxMDAwMDAwMDAsIDB4NmIwMWYyNWUwMDAwMDAwMCwgMHhkNWNkZmU5NzAwMDAwMDAwLAorICAgIDB4MWRkYTYwNTgwMDAwMDAwMCwgMHgwNGU0YjNkMzAwMDAwMDAwLCAweGNjZjMyZDFjMDAwMDAwMDAsCisgICAgMHg3NzllNjQxZjAwMDAwMDAwLCAweGJmODlmYWQwMDAwMDAwMDAsIDB4YTZiNzI5NWIwMDAwMDAwMCwKKyAgICAweDZlYTBiNzk0MDAwMDAwMDAsIDB4MGRhMGI1OGQwMDAwMDAwMCwgMHhjNWI3MmI0MjAwMDAwMDAwLAorICAgIDB4ZGM4OWY4YzkwMDAwMDAwMCwgMHgxNDllNjYwNjAwMDAwMDAwLCAweGFmZjMyZjA1MDAwMDAwMDAsCisgICAgMHg2N2U0YjFjYTAwMDAwMDAwLCAweDdlZGE2MjQxMDAwMDAwMDAsIDB4YjZjZGZjOGUwMDAwMDAwMCwKKyAgICAweDA4MDFmMDQ3MDAwMDAwMDAsIDB4YzAxNjZlODgwMDAwMDAwMCwgMHhkOTI4YmQwMzAwMDAwMDAwLAorICAgIDB4MTEzZjIzY2MwMDAwMDAwMCwgMHhhYTUyNmFjZjAwMDAwMDAwLCAweDYyNDVmNDAwMDAwMDAwMDAsCisgICAgMHg3YjdiMjc4YjAwMDAwMDAwLCAweGIzNmNiOTQ0MDAwMDAwMDAsIDB4NDZlNDRmYzIwMDAwMDAwMCwKKyAgICAweDhlZjNkMTBkMDAwMDAwMDAsIDB4OTdjZDAyODYwMDAwMDAwMCwgMHg1ZmRhOWM0OTAwMDAwMDAwLAorICAgIDB4ZTRiN2Q1NGEwMDAwMDAwMCwgMHgyY2EwNGI4NTAwMDAwMDAwLCAweDM1OWU5ODBlMDAwMDAwMDAsCisgICAgMHhmZDg5MDZjMTAwMDAwMDAwLCAweDQzNDUwYTA4MDAwMDAwMDAsIDB4OGI1Mjk0YzcwMDAwMDAwMCwKKyAgICAweDkyNmM0NzRjMDAwMDAwMDAsIDB4NWE3YmQ5ODMwMDAwMDAwMCwgMHhlMTE2OTA4MDAwMDAwMDAwLAorICAgIDB4MjkwMTBlNGYwMDAwMDAwMCwgMHgzMDNmZGRjNDAwMDAwMDAwLCAweGY4Mjg0MzBiMDAwMDAwMDAsCisgICAgMHhmNjNmZDlmNjAwMDAwMDAwLCAweDNlMjg0NzM5MDAwMDAwMDAsIDB4MjcxNjk0YjIwMDAwMDAwMCwKKyAgICAweGVmMDEwYTdkMDAwMDAwMDAsIDB4NTQ2YzQzN2UwMDAwMDAwMCwgMHg5YzdiZGRiMTAwMDAwMDAwLAorICAgIDB4ODU0NTBlM2EwMDAwMDAwMCwgMHg0ZDUyOTBmNTAwMDAwMDAwLCAweGYzOWU5YzNjMDAwMDAwMDAsCisgICAgMHgzYjg5MDJmMzAwMDAwMDAwLCAweDIyYjdkMTc4MDAwMDAwMDAsIDB4ZWFhMDRmYjcwMDAwMDAwMCwKKyAgICAweDUxY2QwNmI0MDAwMDAwMDAsIDB4OTlkYTk4N2IwMDAwMDAwMCwgMHg4MGU0NGJmMDAwMDAwMDAwLAorICAgIDB4NDhmM2Q1M2YwMDAwMDAwMCwgMHhiZDdiMjNiOTAwMDAwMDAwLCAweDc1NmNiZDc2MDAwMDAwMDAsCisgICAgMHg2YzUyNmVmZDAwMDAwMDAwLCAweGE0NDVmMDMyMDAwMDAwMDAsIDB4MWYyOGI5MzEwMDAwMDAwMCwKKyAgICAweGQ3M2YyN2ZlMDAwMDAwMDAsIDB4Y2UwMWY0NzUwMDAwMDAwMCwgMHgwNjE2NmFiYTAwMDAwMDAwLAorICAgIDB4YjhkYTY2NzMwMDAwMDAwMCwgMHg3MGNkZjhiYzAwMDAwMDAwLCAweDY5ZjMyYjM3MDAwMDAwMDAsCisgICAgMHhhMWU0YjVmODAwMDAwMDAwLCAweDFhODlmY2ZiMDAwMDAwMDAsIDB4ZDI5ZTYyMzQwMDAwMDAwMCwKKyAgICAweGNiYTBiMWJmMDAwMDAwMDAsIDB4MDNiNzJmNzAwMDAwMDAwMCwgMHg2MGI3MmQ2OTAwMDAwMDAwLAorICAgIDB4YThhMGIzYTYwMDAwMDAwMCwgMHhiMTllNjAyZDAwMDAwMDAwLCAweDc5ODlmZWUyMDAwMDAwMDAsCisgICAgMHhjMmU0YjdlMTAwMDAwMDAwLCAweDBhZjMyOTJlMDAwMDAwMDAsIDB4MTNjZGZhYTUwMDAwMDAwMCwKKyAgICAweGRiZGE2NDZhMDAwMDAwMDAsIDB4NjUxNjY4YTMwMDAwMDAwMCwgMHhhZDAxZjY2YzAwMDAwMDAwLAorICAgIDB4YjQzZjI1ZTcwMDAwMDAwMCwgMHg3YzI4YmIyODAwMDAwMDAwLCAweGM3NDVmMjJiMDAwMDAwMDAsCisgICAgMHgwZjUyNmNlNDAwMDAwMDAwLCAweDE2NmNiZjZmMDAwMDAwMDAsIDB4ZGU3YjIxYTAwMDAwMDAwMCwKKyAgICAweDJiZjNkNzI2MDAwMDAwMDAsIDB4ZTNlNDQ5ZTkwMDAwMDAwMCwgMHhmYWRhOWE2MjAwMDAwMDAwLAorICAgIDB4MzJjZDA0YWQwMDAwMDAwMCwgMHg4OWEwNGRhZTAwMDAwMDAwLCAweDQxYjdkMzYxMDAwMDAwMDAsCisgICAgMHg1ODg5MDBlYTAwMDAwMDAwLCAweDkwOWU5ZTI1MDAwMDAwMDAsIDB4MmU1MjkyZWMwMDAwMDAwMCwKKyAgICAweGU2NDUwYzIzMDAwMDAwMDAsIDB4ZmY3YmRmYTgwMDAwMDAwMCwgMHgzNzZjNDE2NzAwMDAwMDAwLAorICAgIDB4OGMwMTA4NjQwMDAwMDAwMCwgMHg0NDE2OTZhYjAwMDAwMDAwLCAweDVkMjg0NTIwMDAwMDAwMDAsCisgICAgMHg5NTNmZGJlZjAwMDAwMDAwfSwKKyAgIHsweDAwMDAwMDAwMDAwMDAwMDAsIDB4OTVkNDcwOTUwMDAwMDAwMCwgMHg2YmFmOTBmMTAwMDAwMDAwLAorICAgIDB4ZmU3YmUwNjQwMDAwMDAwMCwgMHg5NzU4NTAzODAwMDAwMDAwLCAweDAyOGMyMGFkMDAwMDAwMDAsCisgICAgMHhmY2Y3YzBjOTAwMDAwMDAwLCAweDY5MjNiMDVjMDAwMDAwMDAsIDB4MmViMWEwNzAwMDAwMDAwMCwKKyAgICAweGJiNjVkMGU1MDAwMDAwMDAsIDB4NDUxZTMwODEwMDAwMDAwMCwgMHhkMGNhNDAxNDAwMDAwMDAwLAorICAgIDB4YjllOWYwNDgwMDAwMDAwMCwgMHgyYzNkODBkZDAwMDAwMDAwLCAweGQyNDY2MGI5MDAwMDAwMDAsCisgICAgMHg0NzkyMTAyYzAwMDAwMDAwLCAweDVjNjI0MWUxMDAwMDAwMDAsIDB4YzliNjMxNzQwMDAwMDAwMCwKKyAgICAweDM3Y2RkMTEwMDAwMDAwMDAsIDB4YTIxOWExODUwMDAwMDAwMCwgMHhjYjNhMTFkOTAwMDAwMDAwLAorICAgIDB4NWVlZTYxNGMwMDAwMDAwMCwgMHhhMDk1ODEyODAwMDAwMDAwLCAweDM1NDFmMWJkMDAwMDAwMDAsCisgICAgMHg3MmQzZTE5MTAwMDAwMDAwLCAweGU3MDc5MTA0MDAwMDAwMDAsIDB4MTk3YzcxNjAwMDAwMDAwMCwKKyAgICAweDhjYTgwMWY1MDAwMDAwMDAsIDB4ZTU4YmIxYTkwMDAwMDAwMCwgMHg3MDVmYzEzYzAwMDAwMDAwLAorICAgIDB4OGUyNDIxNTgwMDAwMDAwMCwgMHgxYmYwNTFjZDAwMDAwMDAwLCAweGY5YzJmMzE5MDAwMDAwMDAsCisgICAgMHg2YzE2ODM4YzAwMDAwMDAwLCAweDkyNmQ2M2U4MDAwMDAwMDAsIDB4MDdiOTEzN2QwMDAwMDAwMCwKKyAgICAweDZlOWFhMzIxMDAwMDAwMDAsIDB4ZmI0ZWQzYjQwMDAwMDAwMCwgMHgwNTM1MzNkMDAwMDAwMDAwLAorICAgIDB4OTBlMTQzNDUwMDAwMDAwMCwgMHhkNzczNTM2OTAwMDAwMDAwLCAweDQyYTcyM2ZjMDAwMDAwMDAsCisgICAgMHhiY2RjYzM5ODAwMDAwMDAwLCAweDI5MDhiMzBkMDAwMDAwMDAsIDB4NDAyYjAzNTEwMDAwMDAwMCwKKyAgICAweGQ1ZmY3M2M0MDAwMDAwMDAsIDB4MmI4NDkzYTAwMDAwMDAwMCwgMHhiZTUwZTMzNTAwMDAwMDAwLAorICAgIDB4YTVhMGIyZjgwMDAwMDAwMCwgMHgzMDc0YzI2ZDAwMDAwMDAwLCAweGNlMGYyMjA5MDAwMDAwMDAsCisgICAgMHg1YmRiNTI5YzAwMDAwMDAwLCAweDMyZjhlMmMwMDAwMDAwMDAsIDB4YTcyYzkyNTUwMDAwMDAwMCwKKyAgICAweDU5NTc3MjMxMDAwMDAwMDAsIDB4Y2M4MzAyYTQwMDAwMDAwMCwgMHg4YjExMTI4ODAwMDAwMDAwLAorICAgIDB4MWVjNTYyMWQwMDAwMDAwMCwgMHhlMGJlODI3OTAwMDAwMDAwLCAweDc1NmFmMmVjMDAwMDAwMDAsCisgICAgMHgxYzQ5NDJiMDAwMDAwMDAwLCAweDg5OWQzMjI1MDAwMDAwMDAsIDB4NzdlNmQyNDEwMDAwMDAwMCwKKyAgICAweGUyMzJhMmQ0MDAwMDAwMDAsIDB4ZjI4NWU3MzMwMDAwMDAwMCwgMHg2NzUxOTdhNjAwMDAwMDAwLAorICAgIDB4OTkyYTc3YzIwMDAwMDAwMCwgMHgwY2ZlMDc1NzAwMDAwMDAwLCAweDY1ZGRiNzBiMDAwMDAwMDAsCisgICAgMHhmMDA5Yzc5ZTAwMDAwMDAwLCAweDBlNzIyN2ZhMDAwMDAwMDAsIDB4OWJhNjU3NmYwMDAwMDAwMCwKKyAgICAweGRjMzQ0NzQzMDAwMDAwMDAsIDB4NDllMDM3ZDYwMDAwMDAwMCwgMHhiNzliZDdiMjAwMDAwMDAwLAorICAgIDB4MjI0ZmE3MjcwMDAwMDAwMCwgMHg0YjZjMTc3YjAwMDAwMDAwLCAweGRlYjg2N2VlMDAwMDAwMDAsCisgICAgMHgyMGMzODc4YTAwMDAwMDAwLCAweGI1MTdmNzFmMDAwMDAwMDAsIDB4YWVlN2E2ZDIwMDAwMDAwMCwKKyAgICAweDNiMzNkNjQ3MDAwMDAwMDAsIDB4YzU0ODM2MjMwMDAwMDAwMCwgMHg1MDljNDZiNjAwMDAwMDAwLAorICAgIDB4MzliZmY2ZWEwMDAwMDAwMCwgMHhhYzZiODY3ZjAwMDAwMDAwLCAweDUyMTA2NjFiMDAwMDAwMDAsCisgICAgMHhjN2M0MTY4ZTAwMDAwMDAwLCAweDgwNTYwNmEyMDAwMDAwMDAsIDB4MTU4Mjc2MzcwMDAwMDAwMCwKKyAgICAweGViZjk5NjUzMDAwMDAwMDAsIDB4N2UyZGU2YzYwMDAwMDAwMCwgMHgxNzBlNTY5YTAwMDAwMDAwLAorICAgIDB4ODJkYTI2MGYwMDAwMDAwMCwgMHg3Y2ExYzY2YjAwMDAwMDAwLCAweGU5NzViNmZlMDAwMDAwMDAsCisgICAgMHgwYjQ3MTQyYTAwMDAwMDAwLCAweDllOTM2NGJmMDAwMDAwMDAsIDB4NjBlODg0ZGIwMDAwMDAwMCwKKyAgICAweGY1M2NmNDRlMDAwMDAwMDAsIDB4OWMxZjQ0MTIwMDAwMDAwMCwgMHgwOWNiMzQ4NzAwMDAwMDAwLAorICAgIDB4ZjdiMGQ0ZTMwMDAwMDAwMCwgMHg2MjY0YTQ3NjAwMDAwMDAwLCAweDI1ZjZiNDVhMDAwMDAwMDAsCisgICAgMHhiMDIyYzRjZjAwMDAwMDAwLCAweDRlNTkyNGFiMDAwMDAwMDAsIDB4ZGI4ZDU0M2UwMDAwMDAwMCwKKyAgICAweGIyYWVlNDYyMDAwMDAwMDAsIDB4Mjc3YTk0ZjcwMDAwMDAwMCwgMHhkOTAxNzQ5MzAwMDAwMDAwLAorICAgIDB4NGNkNTA0MDYwMDAwMDAwMCwgMHg1NzI1NTVjYjAwMDAwMDAwLCAweGMyZjEyNTVlMDAwMDAwMDAsCisgICAgMHgzYzhhYzUzYTAwMDAwMDAwLCAweGE5NWViNWFmMDAwMDAwMDAsIDB4YzA3ZDA1ZjMwMDAwMDAwMCwKKyAgICAweDU1YTk3NTY2MDAwMDAwMDAsIDB4YWJkMjk1MDIwMDAwMDAwMCwgMHgzZTA2ZTU5NzAwMDAwMDAwLAorICAgIDB4Nzk5NGY1YmIwMDAwMDAwMCwgMHhlYzQwODUyZTAwMDAwMDAwLCAweDEyM2I2NTRhMDAwMDAwMDAsCisgICAgMHg4N2VmMTVkZjAwMDAwMDAwLCAweGVlY2NhNTgzMDAwMDAwMDAsIDB4N2IxOGQ1MTYwMDAwMDAwMCwKKyAgICAweDg1NjMzNTcyMDAwMDAwMDAsIDB4MTBiNzQ1ZTcwMDAwMDAwMCwgMHhlNDBiY2Y2NzAwMDAwMDAwLAorICAgIDB4NzFkZmJmZjIwMDAwMDAwMCwgMHg4ZmE0NWY5NjAwMDAwMDAwLCAweDFhNzAyZjAzMDAwMDAwMDAsCisgICAgMHg3MzUzOWY1ZjAwMDAwMDAwLCAweGU2ODdlZmNhMDAwMDAwMDAsIDB4MThmYzBmYWUwMDAwMDAwMCwKKyAgICAweDhkMjg3ZjNiMDAwMDAwMDAsIDB4Y2FiYTZmMTcwMDAwMDAwMCwgMHg1ZjZlMWY4MjAwMDAwMDAwLAorICAgIDB4YTExNWZmZTYwMDAwMDAwMCwgMHgzNGMxOGY3MzAwMDAwMDAwLCAweDVkZTIzZjJmMDAwMDAwMDAsCisgICAgMHhjODM2NGZiYTAwMDAwMDAwLCAweDM2NGRhZmRlMDAwMDAwMDAsIDB4YTM5OWRmNGIwMDAwMDAwMCwKKyAgICAweGI4Njk4ZTg2MDAwMDAwMDAsIDB4MmRiZGZlMTMwMDAwMDAwMCwgMHhkM2M2MWU3NzAwMDAwMDAwLAorICAgIDB4NDYxMjZlZTIwMDAwMDAwMCwgMHgyZjMxZGViZTAwMDAwMDAwLCAweGJhZTVhZTJiMDAwMDAwMDAsCisgICAgMHg0NDllNGU0ZjAwMDAwMDAwLCAweGQxNGEzZWRhMDAwMDAwMDAsIDB4OTZkODJlZjYwMDAwMDAwMCwKKyAgICAweDAzMGM1ZTYzMDAwMDAwMDAsIDB4ZmQ3N2JlMDcwMDAwMDAwMCwgMHg2OGEzY2U5MjAwMDAwMDAwLAorICAgIDB4MDE4MDdlY2UwMDAwMDAwMCwgMHg5NDU0MGU1YjAwMDAwMDAwLCAweDZhMmZlZTNmMDAwMDAwMDAsCisgICAgMHhmZmZiOWVhYTAwMDAwMDAwLCAweDFkYzkzYzdlMDAwMDAwMDAsIDB4ODgxZDRjZWIwMDAwMDAwMCwKKyAgICAweDc2NjZhYzhmMDAwMDAwMDAsIDB4ZTNiMmRjMWEwMDAwMDAwMCwgMHg4YTkxNmM0NjAwMDAwMDAwLAorICAgIDB4MWY0NTFjZDMwMDAwMDAwMCwgMHhlMTNlZmNiNzAwMDAwMDAwLCAweDc0ZWE4YzIyMDAwMDAwMDAsCisgICAgMHgzMzc4OWMwZTAwMDAwMDAwLCAweGE2YWNlYzliMDAwMDAwMDAsIDB4NThkNzBjZmYwMDAwMDAwMCwKKyAgICAweGNkMDM3YzZhMDAwMDAwMDAsIDB4YTQyMGNjMzYwMDAwMDAwMCwgMHgzMWY0YmNhMzAwMDAwMDAwLAorICAgIDB4Y2Y4ZjVjYzcwMDAwMDAwMCwgMHg1YTViMmM1MjAwMDAwMDAwLCAweDQxYWI3ZDlmMDAwMDAwMDAsCisgICAgMHhkNDdmMGQwYTAwMDAwMDAwLCAweDJhMDRlZDZlMDAwMDAwMDAsIDB4YmZkMDlkZmIwMDAwMDAwMCwKKyAgICAweGQ2ZjMyZGE3MDAwMDAwMDAsIDB4NDMyNzVkMzIwMDAwMDAwMCwgMHhiZDVjYmQ1NjAwMDAwMDAwLAorICAgIDB4Mjg4OGNkYzMwMDAwMDAwMCwgMHg2ZjFhZGRlZjAwMDAwMDAwLCAweGZhY2VhZDdhMDAwMDAwMDAsCisgICAgMHgwNGI1NGQxZTAwMDAwMDAwLCAweDkxNjEzZDhiMDAwMDAwMDAsIDB4Zjg0MjhkZDcwMDAwMDAwMCwKKyAgICAweDZkOTZmZDQyMDAwMDAwMDAsIDB4OTNlZDFkMjYwMDAwMDAwMCwgMHgwNjM5NmRiMzAwMDAwMDAwLAorICAgIDB4MTY4ZTI4NTQwMDAwMDAwMCwgMHg4MzVhNThjMTAwMDAwMDAwLCAweDdkMjFiOGE1MDAwMDAwMDAsCisgICAgMHhlOGY1YzgzMDAwMDAwMDAwLCAweDgxZDY3ODZjMDAwMDAwMDAsIDB4MTQwMjA4ZjkwMDAwMDAwMCwKKyAgICAweGVhNzllODlkMDAwMDAwMDAsIDB4N2ZhZDk4MDgwMDAwMDAwMCwgMHgzODNmODgyNDAwMDAwMDAwLAorICAgIDB4YWRlYmY4YjEwMDAwMDAwMCwgMHg1MzkwMThkNTAwMDAwMDAwLCAweGM2NDQ2ODQwMDAwMDAwMDAsCisgICAgMHhhZjY3ZDgxYzAwMDAwMDAwLCAweDNhYjNhODg5MDAwMDAwMDAsIDB4YzRjODQ4ZWQwMDAwMDAwMCwKKyAgICAweDUxMWMzODc4MDAwMDAwMDAsIDB4NGFlYzY5YjUwMDAwMDAwMCwgMHhkZjM4MTkyMDAwMDAwMDAwLAorICAgIDB4MjE0M2Y5NDQwMDAwMDAwMCwgMHhiNDk3ODlkMTAwMDAwMDAwLCAweGRkYjQzOThkMDAwMDAwMDAsCisgICAgMHg0ODYwNDkxODAwMDAwMDAwLCAweGI2MWJhOTdjMDAwMDAwMDAsIDB4MjNjZmQ5ZTkwMDAwMDAwMCwKKyAgICAweDY0NWRjOWM1MDAwMDAwMDAsIDB4ZjE4OWI5NTAwMDAwMDAwMCwgMHgwZmYyNTkzNDAwMDAwMDAwLAorICAgIDB4OWEyNjI5YTEwMDAwMDAwMCwgMHhmMzA1OTlmZDAwMDAwMDAwLCAweDY2ZDFlOTY4MDAwMDAwMDAsCisgICAgMHg5OGFhMDkwYzAwMDAwMDAwLCAweDBkN2U3OTk5MDAwMDAwMDAsIDB4ZWY0Y2RiNGQwMDAwMDAwMCwKKyAgICAweDdhOThhYmQ4MDAwMDAwMDAsIDB4ODRlMzRiYmMwMDAwMDAwMCwgMHgxMTM3M2IyOTAwMDAwMDAwLAorICAgIDB4NzgxNDhiNzUwMDAwMDAwMCwgMHhlZGMwZmJlMDAwMDAwMDAwLCAweDEzYmIxYjg0MDAwMDAwMDAsCisgICAgMHg4NjZmNmIxMTAwMDAwMDAwLCAweGMxZmQ3YjNkMDAwMDAwMDAsIDB4NTQyOTBiYTgwMDAwMDAwMCwKKyAgICAweGFhNTJlYmNjMDAwMDAwMDAsIDB4M2Y4NjliNTkwMDAwMDAwMCwgMHg1NmE1MmIwNTAwMDAwMDAwLAorICAgIDB4YzM3MTViOTAwMDAwMDAwMCwgMHgzZDBhYmJmNDAwMDAwMDAwLCAweGE4ZGVjYjYxMDAwMDAwMDAsCisgICAgMHhiMzJlOWFhYzAwMDAwMDAwLCAweDI2ZmFlYTM5MDAwMDAwMDAsIDB4ZDg4MTBhNWQwMDAwMDAwMCwKKyAgICAweDRkNTU3YWM4MDAwMDAwMDAsIDB4MjQ3NmNhOTQwMDAwMDAwMCwgMHhiMWEyYmEwMTAwMDAwMDAwLAorICAgIDB4NGZkOTVhNjUwMDAwMDAwMCwgMHhkYTBkMmFmMDAwMDAwMDAwLCAweDlkOWYzYWRjMDAwMDAwMDAsCisgICAgMHgwODRiNGE0OTAwMDAwMDAwLCAweGY2MzBhYTJkMDAwMDAwMDAsIDB4NjNlNGRhYjgwMDAwMDAwMCwKKyAgICAweDBhYzc2YWU0MDAwMDAwMDAsIDB4OWYxMzFhNzEwMDAwMDAwMCwgMHg2MTY4ZmExNTAwMDAwMDAwLAorICAgIDB4ZjRiYzhhODAwMDAwMDAwMH0sCisgICB7MHgwMDAwMDAwMDAwMDAwMDAwLCAweDFmMTdmMDgwMDAwMDAwMDAsIDB4N2YyODkxZGEwMDAwMDAwMCwKKyAgICAweDYwM2Y2MTVhMDAwMDAwMDAsIDB4YmY1NjUzNmUwMDAwMDAwMCwgMHhhMDQxYTNlZTAwMDAwMDAwLAorICAgIDB4YzA3ZWMyYjQwMDAwMDAwMCwgMHhkZjY5MzIzNDAwMDAwMDAwLCAweDdlYWRhNmRjMDAwMDAwMDAsCisgICAgMHg2MWJhNTY1YzAwMDAwMDAwLCAweDAxODUzNzA2MDAwMDAwMDAsIDB4MWU5MmM3ODYwMDAwMDAwMCwKKyAgICAweGMxZmJmNWIyMDAwMDAwMDAsIDB4ZGVlYzA1MzIwMDAwMDAwMCwgMHhiZWQzNjQ2ODAwMDAwMDAwLAorICAgIDB4YTFjNDk0ZTgwMDAwMDAwMCwgMHhiZDVjM2M2MjAwMDAwMDAwLCAweGEyNGJjY2UyMDAwMDAwMDAsCisgICAgMHhjMjc0YWRiODAwMDAwMDAwLCAweGRkNjM1ZDM4MDAwMDAwMDAsIDB4MDIwYTZmMGMwMDAwMDAwMCwKKyAgICAweDFkMWQ5ZjhjMDAwMDAwMDAsIDB4N2QyMmZlZDYwMDAwMDAwMCwgMHg2MjM1MGU1NjAwMDAwMDAwLAorICAgIDB4YzNmMTlhYmUwMDAwMDAwMCwgMHhkY2U2NmEzZTAwMDAwMDAwLCAweGJjZDkwYjY0MDAwMDAwMDAsCisgICAgMHhhM2NlZmJlNDAwMDAwMDAwLCAweDdjYTdjOWQwMDAwMDAwMDAsIDB4NjNiMDM5NTAwMDAwMDAwMCwKKyAgICAweDAzOGY1ODBhMDAwMDAwMDAsIDB4MWM5OGE4OGEwMDAwMDAwMCwgMHg3YWI5NzhjNDAwMDAwMDAwLAorICAgIDB4NjVhZTg4NDQwMDAwMDAwMCwgMHgwNTkxZTkxZTAwMDAwMDAwLCAweDFhODYxOTllMDAwMDAwMDAsCisgICAgMHhjNWVmMmJhYTAwMDAwMDAwLCAweGRhZjhkYjJhMDAwMDAwMDAsIDB4YmFjN2JhNzAwMDAwMDAwMCwKKyAgICAweGE1ZDA0YWYwMDAwMDAwMDAsIDB4MDQxNGRlMTgwMDAwMDAwMCwgMHgxYjAzMmU5ODAwMDAwMDAwLAorICAgIDB4N2IzYzRmYzIwMDAwMDAwMCwgMHg2NDJiYmY0MjAwMDAwMDAwLCAweGJiNDI4ZDc2MDAwMDAwMDAsCisgICAgMHhhNDU1N2RmNjAwMDAwMDAwLCAweGM0NmExY2FjMDAwMDAwMDAsIDB4ZGI3ZGVjMmMwMDAwMDAwMCwKKyAgICAweGM3ZTU0NGE2MDAwMDAwMDAsIDB4ZDhmMmI0MjYwMDAwMDAwMCwgMHhiOGNkZDU3YzAwMDAwMDAwLAorICAgIDB4YTdkYTI1ZmMwMDAwMDAwMCwgMHg3OGIzMTdjODAwMDAwMDAwLCAweDY3YTRlNzQ4MDAwMDAwMDAsCisgICAgMHgwNzliODYxMjAwMDAwMDAwLCAweDE4OGM3NjkyMDAwMDAwMDAsIDB4Yjk0OGUyN2EwMDAwMDAwMCwKKyAgICAweGE2NWYxMmZhMDAwMDAwMDAsIDB4YzY2MDczYTAwMDAwMDAwMCwgMHhkOTc3ODMyMDAwMDAwMDAwLAorICAgIDB4MDYxZWIxMTQwMDAwMDAwMCwgMHgxOTA5NDE5NDAwMDAwMDAwLCAweDc5MzYyMGNlMDAwMDAwMDAsCisgICAgMHg2NjIxZDA0ZTAwMDAwMDAwLCAweGI1NzQ4MDUzMDAwMDAwMDAsIDB4YWE2MzcwZDMwMDAwMDAwMCwKKyAgICAweGNhNWMxMTg5MDAwMDAwMDAsIDB4ZDU0YmUxMDkwMDAwMDAwMCwgMHgwYTIyZDMzZDAwMDAwMDAwLAorICAgIDB4MTUzNTIzYmQwMDAwMDAwMCwgMHg3NTBhNDJlNzAwMDAwMDAwLCAweDZhMWRiMjY3MDAwMDAwMDAsCisgICAgMHhjYmQ5MjY4ZjAwMDAwMDAwLCAweGQ0Y2VkNjBmMDAwMDAwMDAsIDB4YjRmMWI3NTUwMDAwMDAwMCwKKyAgICAweGFiZTY0N2Q1MDAwMDAwMDAsIDB4NzQ4Zjc1ZTEwMDAwMDAwMCwgMHg2Yjk4ODU2MTAwMDAwMDAwLAorICAgIDB4MGJhN2U0M2IwMDAwMDAwMCwgMHgxNGIwMTRiYjAwMDAwMDAwLCAweDA4MjhiYzMxMDAwMDAwMDAsCisgICAgMHgxNzNmNGNiMTAwMDAwMDAwLCAweDc3MDAyZGViMDAwMDAwMDAsIDB4NjgxN2RkNmIwMDAwMDAwMCwKKyAgICAweGI3N2VlZjVmMDAwMDAwMDAsIDB4YTg2OTFmZGYwMDAwMDAwMCwgMHhjODU2N2U4NTAwMDAwMDAwLAorICAgIDB4ZDc0MThlMDUwMDAwMDAwMCwgMHg3Njg1MWFlZDAwMDAwMDAwLCAweDY5OTJlYTZkMDAwMDAwMDAsCisgICAgMHgwOWFkOGIzNzAwMDAwMDAwLCAweDE2YmE3YmI3MDAwMDAwMDAsIDB4YzlkMzQ5ODMwMDAwMDAwMCwKKyAgICAweGQ2YzRiOTAzMDAwMDAwMDAsIDB4YjZmYmQ4NTkwMDAwMDAwMCwgMHhhOWVjMjhkOTAwMDAwMDAwLAorICAgIDB4Y2ZjZGY4OTcwMDAwMDAwMCwgMHhkMGRhMDgxNzAwMDAwMDAwLCAweGIwZTU2OTRkMDAwMDAwMDAsCisgICAgMHhhZmYyOTljZDAwMDAwMDAwLCAweDcwOWJhYmY5MDAwMDAwMDAsIDB4NmY4YzViNzkwMDAwMDAwMCwKKyAgICAweDBmYjMzYTIzMDAwMDAwMDAsIDB4MTBhNGNhYTMwMDAwMDAwMCwgMHhiMTYwNWU0YjAwMDAwMDAwLAorICAgIDB4YWU3N2FlY2IwMDAwMDAwMCwgMHhjZTQ4Y2Y5MTAwMDAwMDAwLCAweGQxNWYzZjExMDAwMDAwMDAsCisgICAgMHgwZTM2MGQyNTAwMDAwMDAwLCAweDExMjFmZGE1MDAwMDAwMDAsIDB4NzExZTljZmYwMDAwMDAwMCwKKyAgICAweDZlMDk2YzdmMDAwMDAwMDAsIDB4NzI5MWM0ZjUwMDAwMDAwMCwgMHg2ZDg2MzQ3NTAwMDAwMDAwLAorICAgIDB4MGRiOTU1MmYwMDAwMDAwMCwgMHgxMmFlYTVhZjAwMDAwMDAwLCAweGNkYzc5NzliMDAwMDAwMDAsCisgICAgMHhkMmQwNjcxYjAwMDAwMDAwLCAweGIyZWYwNjQxMDAwMDAwMDAsIDB4YWRmOGY2YzEwMDAwMDAwMCwKKyAgICAweDBjM2M2MjI5MDAwMDAwMDAsIDB4MTMyYjkyYTkwMDAwMDAwMCwgMHg3MzE0ZjNmMzAwMDAwMDAwLAorICAgIDB4NmMwMzAzNzMwMDAwMDAwMCwgMHhiMzZhMzE0NzAwMDAwMDAwLCAweGFjN2RjMWM3MDAwMDAwMDAsCisgICAgMHhjYzQyYTA5ZDAwMDAwMDAwLCAweGQzNTU1MDFkMDAwMDAwMDAsIDB4NmFlOTAwYTcwMDAwMDAwMCwKKyAgICAweDc1ZmVmMDI3MDAwMDAwMDAsIDB4MTVjMTkxN2QwMDAwMDAwMCwgMHgwYWQ2NjFmZDAwMDAwMDAwLAorICAgIDB4ZDViZjUzYzkwMDAwMDAwMCwgMHhjYWE4YTM0OTAwMDAwMDAwLCAweGFhOTdjMjEzMDAwMDAwMDAsCisgICAgMHhiNTgwMzI5MzAwMDAwMDAwLCAweDE0NDRhNjdiMDAwMDAwMDAsIDB4MGI1MzU2ZmIwMDAwMDAwMCwKKyAgICAweDZiNmMzN2ExMDAwMDAwMDAsIDB4NzQ3YmM3MjEwMDAwMDAwMCwgMHhhYjEyZjUxNTAwMDAwMDAwLAorICAgIDB4YjQwNTA1OTUwMDAwMDAwMCwgMHhkNDNhNjRjZjAwMDAwMDAwLCAweGNiMmQ5NDRmMDAwMDAwMDAsCisgICAgMHhkN2I1M2NjNTAwMDAwMDAwLCAweGM4YTJjYzQ1MDAwMDAwMDAsIDB4YTg5ZGFkMWYwMDAwMDAwMCwKKyAgICAweGI3OGE1ZDlmMDAwMDAwMDAsIDB4NjhlMzZmYWIwMDAwMDAwMCwgMHg3N2Y0OWYyYjAwMDAwMDAwLAorICAgIDB4MTdjYmZlNzEwMDAwMDAwMCwgMHgwOGRjMGVmMTAwMDAwMDAwLCAweGE5MTg5YTE5MDAwMDAwMDAsCisgICAgMHhiNjBmNmE5OTAwMDAwMDAwLCAweGQ2MzAwYmMzMDAwMDAwMDAsIDB4YzkyN2ZiNDMwMDAwMDAwMCwKKyAgICAweDE2NGVjOTc3MDAwMDAwMDAsIDB4MDk1OTM5ZjcwMDAwMDAwMCwgMHg2OTY2NThhZDAwMDAwMDAwLAorICAgIDB4NzY3MWE4MmQwMDAwMDAwMCwgMHgxMDUwNzg2MzAwMDAwMDAwLCAweDBmNDc4OGUzMDAwMDAwMDAsCisgICAgMHg2Zjc4ZTliOTAwMDAwMDAwLCAweDcwNmYxOTM5MDAwMDAwMDAsIDB4YWYwNjJiMGQwMDAwMDAwMCwKKyAgICAweGIwMTFkYjhkMDAwMDAwMDAsIDB4ZDAyZWJhZDcwMDAwMDAwMCwgMHhjZjM5NGE1NzAwMDAwMDAwLAorICAgIDB4NmVmZGRlYmYwMDAwMDAwMCwgMHg3MWVhMmUzZjAwMDAwMDAwLCAweDExZDU0ZjY1MDAwMDAwMDAsCisgICAgMHgwZWMyYmZlNTAwMDAwMDAwLCAweGQxYWI4ZGQxMDAwMDAwMDAsIDB4Y2ViYzdkNTEwMDAwMDAwMCwKKyAgICAweGFlODMxYzBiMDAwMDAwMDAsIDB4YjE5NGVjOGIwMDAwMDAwMCwgMHhhZDBjNDQwMTAwMDAwMDAwLAorICAgIDB4YjIxYmI0ODEwMDAwMDAwMCwgMHhkMjI0ZDVkYjAwMDAwMDAwLCAweGNkMzMyNTViMDAwMDAwMDAsCisgICAgMHgxMjVhMTc2ZjAwMDAwMDAwLCAweDBkNGRlN2VmMDAwMDAwMDAsIDB4NmQ3Mjg2YjUwMDAwMDAwMCwKKyAgICAweDcyNjU3NjM1MDAwMDAwMDAsIDB4ZDNhMWUyZGQwMDAwMDAwMCwgMHhjY2I2MTI1ZDAwMDAwMDAwLAorICAgIDB4YWM4OTczMDcwMDAwMDAwMCwgMHhiMzllODM4NzAwMDAwMDAwLCAweDZjZjdiMWIzMDAwMDAwMDAsCisgICAgMHg3M2UwNDEzMzAwMDAwMDAwLCAweDEzZGYyMDY5MDAwMDAwMDAsIDB4MGNjOGQwZTkwMDAwMDAwMCwKKyAgICAweGRmOWQ4MGY0MDAwMDAwMDAsIDB4YzA4YTcwNzQwMDAwMDAwMCwgMHhhMGI1MTEyZTAwMDAwMDAwLAorICAgIDB4YmZhMmUxYWUwMDAwMDAwMCwgMHg2MGNiZDM5YTAwMDAwMDAwLCAweDdmZGMyMzFhMDAwMDAwMDAsCisgICAgMHgxZmUzNDI0MDAwMDAwMDAwLCAweDAwZjRiMmMwMDAwMDAwMDAsIDB4YTEzMDI2MjgwMDAwMDAwMCwKKyAgICAweGJlMjdkNmE4MDAwMDAwMDAsIDB4ZGUxOGI3ZjIwMDAwMDAwMCwgMHhjMTBmNDc3MjAwMDAwMDAwLAorICAgIDB4MWU2Njc1NDYwMDAwMDAwMCwgMHgwMTcxODVjNjAwMDAwMDAwLCAweDYxNGVlNDljMDAwMDAwMDAsCisgICAgMHg3ZTU5MTQxYzAwMDAwMDAwLCAweDYyYzFiYzk2MDAwMDAwMDAsIDB4N2RkNjRjMTYwMDAwMDAwMCwKKyAgICAweDFkZTkyZDRjMDAwMDAwMDAsIDB4MDJmZWRkY2MwMDAwMDAwMCwgMHhkZDk3ZWZmODAwMDAwMDAwLAorICAgIDB4YzI4MDFmNzgwMDAwMDAwMCwgMHhhMmJmN2UyMjAwMDAwMDAwLCAweGJkYTg4ZWEyMDAwMDAwMDAsCisgICAgMHgxYzZjMWE0YTAwMDAwMDAwLCAweDAzN2JlYWNhMDAwMDAwMDAsIDB4NjM0NDhiOTAwMDAwMDAwMCwKKyAgICAweDdjNTM3YjEwMDAwMDAwMDAsIDB4YTMzYTQ5MjQwMDAwMDAwMCwgMHhiYzJkYjlhNDAwMDAwMDAwLAorICAgIDB4ZGMxMmQ4ZmUwMDAwMDAwMCwgMHhjMzA1Mjg3ZTAwMDAwMDAwLCAweGE1MjRmODMwMDAwMDAwMDAsCisgICAgMHhiYTMzMDhiMDAwMDAwMDAwLCAweGRhMGM2OWVhMDAwMDAwMDAsIDB4YzUxYjk5NmEwMDAwMDAwMCwKKyAgICAweDFhNzJhYjVlMDAwMDAwMDAsIDB4MDU2NTViZGUwMDAwMDAwMCwgMHg2NTVhM2E4NDAwMDAwMDAwLAorICAgIDB4N2E0ZGNhMDQwMDAwMDAwMCwgMHhkYjg5NWVlYzAwMDAwMDAwLCAweGM0OWVhZTZjMDAwMDAwMDAsCisgICAgMHhhNGExY2YzNjAwMDAwMDAwLCAweGJiYjYzZmI2MDAwMDAwMDAsIDB4NjRkZjBkODIwMDAwMDAwMCwKKyAgICAweDdiYzhmZDAyMDAwMDAwMDAsIDB4MWJmNzljNTgwMDAwMDAwMCwgMHgwNGUwNmNkODAwMDAwMDAwLAorICAgIDB4MTg3OGM0NTIwMDAwMDAwMCwgMHgwNzZmMzRkMjAwMDAwMDAwLCAweDY3NTA1NTg4MDAwMDAwMDAsCisgICAgMHg3ODQ3YTUwODAwMDAwMDAwLCAweGE3MmU5NzNjMDAwMDAwMDAsIDB4YjgzOTY3YmMwMDAwMDAwMCwKKyAgICAweGQ4MDYwNmU2MDAwMDAwMDAsIDB4YzcxMWY2NjYwMDAwMDAwMCwgMHg2NmQ1NjI4ZTAwMDAwMDAwLAorICAgIDB4NzljMjkyMGUwMDAwMDAwMCwgMHgxOWZkZjM1NDAwMDAwMDAwLCAweDA2ZWEwM2Q0MDAwMDAwMDAsCisgICAgMHhkOTgzMzFlMDAwMDAwMDAwLCAweGM2OTRjMTYwMDAwMDAwMDAsIDB4YTZhYmEwM2EwMDAwMDAwMCwKKyAgICAweGI5YmM1MGJhMDAwMDAwMDB9LAorICAgezB4MDAwMDAwMDAwMDAwMDAwMCwgMHhlMmZkODg4ZDAwMDAwMDAwLCAweDg1ZmQ2MGMwMDAwMDAwMDAsCisgICAgMHg2NzAwZTg0ZDAwMDAwMDAwLCAweDRiZmRiMDViMDAwMDAwMDAsIDB4YTkwMDM4ZDYwMDAwMDAwMCwKKyAgICAweGNlMDBkMDliMDAwMDAwMDAsIDB4MmNmZDU4MTYwMDAwMDAwMCwgMHg5NmZhNjFiNzAwMDAwMDAwLAorICAgIDB4NzQwN2U5M2EwMDAwMDAwMCwgMHgxMzA3MDE3NzAwMDAwMDAwLCAweGYxZmE4OWZhMDAwMDAwMDAsCisgICAgMHhkZDA3ZDFlYzAwMDAwMDAwLCAweDNmZmE1OTYxMDAwMDAwMDAsIDB4NThmYWIxMmMwMDAwMDAwMCwKKyAgICAweGJhMDczOWExMDAwMDAwMDAsIDB4NmRmM2IyYjUwMDAwMDAwMCwgMHg4ZjBlM2EzODAwMDAwMDAwLAorICAgIDB4ZTgwZWQyNzUwMDAwMDAwMCwgMHgwYWYzNWFmODAwMDAwMDAwLCAweDI2MGUwMmVlMDAwMDAwMDAsCisgICAgMHhjNGYzOGE2MzAwMDAwMDAwLCAweGEzZjM2MjJlMDAwMDAwMDAsIDB4NDEwZWVhYTMwMDAwMDAwMCwKKyAgICAweGZiMDlkMzAyMDAwMDAwMDAsIDB4MTlmNDViOGYwMDAwMDAwMCwgMHg3ZWY0YjNjMjAwMDAwMDAwLAorICAgIDB4OWMwOTNiNGYwMDAwMDAwMCwgMHhiMGY0NjM1OTAwMDAwMDAwLCAweDUyMDllYmQ0MDAwMDAwMDAsCisgICAgMHgzNTA5MDM5OTAwMDAwMDAwLCAweGQ3ZjQ4YjE0MDAwMDAwMDAsIDB4OWJlMDE0YjAwMDAwMDAwMCwKKyAgICAweDc5MWQ5YzNkMDAwMDAwMDAsIDB4MWUxZDc0NzAwMDAwMDAwMCwgMHhmY2UwZmNmZDAwMDAwMDAwLAorICAgIDB4ZDAxZGE0ZWIwMDAwMDAwMCwgMHgzMmUwMmM2NjAwMDAwMDAwLCAweDU1ZTBjNDJiMDAwMDAwMDAsCisgICAgMHhiNzFkNGNhNjAwMDAwMDAwLCAweDBkMWE3NTA3MDAwMDAwMDAsIDB4ZWZlN2ZkOGEwMDAwMDAwMCwKKyAgICAweDg4ZTcxNWM3MDAwMDAwMDAsIDB4NmExYTlkNGEwMDAwMDAwMCwgMHg0NmU3YzU1YzAwMDAwMDAwLAorICAgIDB4YTQxYTRkZDEwMDAwMDAwMCwgMHhjMzFhYTU5YzAwMDAwMDAwLCAweDIxZTcyZDExMDAwMDAwMDAsCisgICAgMHhmNjEzYTYwNTAwMDAwMDAwLCAweDE0ZWUyZTg4MDAwMDAwMDAsIDB4NzNlZWM2YzUwMDAwMDAwMCwKKyAgICAweDkxMTM0ZTQ4MDAwMDAwMDAsIDB4YmRlZTE2NWUwMDAwMDAwMCwgMHg1ZjEzOWVkMzAwMDAwMDAwLAorICAgIDB4MzgxMzc2OWUwMDAwMDAwMCwgMHhkYWVlZmUxMzAwMDAwMDAwLCAweDYwZTljN2IyMDAwMDAwMDAsCisgICAgMHg4MjE0NGYzZjAwMDAwMDAwLCAweGU1MTRhNzcyMDAwMDAwMDAsIDB4MDdlOTJmZmYwMDAwMDAwMCwKKyAgICAweDJiMTQ3N2U5MDAwMDAwMDAsIDB4YzllOWZmNjQwMDAwMDAwMCwgMHhhZWU5MTcyOTAwMDAwMDAwLAorICAgIDB4NGMxNDlmYTQwMDAwMDAwMCwgMHg3N2M3NThiYjAwMDAwMDAwLCAweDk1M2FkMDM2MDAwMDAwMDAsCisgICAgMHhmMjNhMzg3YjAwMDAwMDAwLCAweDEwYzdiMGY2MDAwMDAwMDAsIDB4M2MzYWU4ZTAwMDAwMDAwMCwKKyAgICAweGRlYzc2MDZkMDAwMDAwMDAsIDB4YjljNzg4MjAwMDAwMDAwMCwgMHg1YjNhMDBhZDAwMDAwMDAwLAorICAgIDB4ZTEzZDM5MGMwMDAwMDAwMCwgMHgwM2MwYjE4MTAwMDAwMDAwLCAweDY0YzA1OWNjMDAwMDAwMDAsCisgICAgMHg4NjNkZDE0MTAwMDAwMDAwLCAweGFhYzA4OTU3MDAwMDAwMDAsIDB4NDgzZDAxZGEwMDAwMDAwMCwKKyAgICAweDJmM2RlOTk3MDAwMDAwMDAsIDB4Y2RjMDYxMWEwMDAwMDAwMCwgMHgxYTM0ZWEwZTAwMDAwMDAwLAorICAgIDB4ZjhjOTYyODMwMDAwMDAwMCwgMHg5ZmM5OGFjZTAwMDAwMDAwLCAweDdkMzQwMjQzMDAwMDAwMDAsCisgICAgMHg1MWM5NWE1NTAwMDAwMDAwLCAweGIzMzRkMmQ4MDAwMDAwMDAsIDB4ZDQzNDNhOTUwMDAwMDAwMCwKKyAgICAweDM2YzliMjE4MDAwMDAwMDAsIDB4OGNjZThiYjkwMDAwMDAwMCwgMHg2ZTMzMDMzNDAwMDAwMDAwLAorICAgIDB4MDkzM2ViNzkwMDAwMDAwMCwgMHhlYmNlNjNmNDAwMDAwMDAwLCAweGM3MzMzYmUyMDAwMDAwMDAsCisgICAgMHgyNWNlYjM2ZjAwMDAwMDAwLCAweDQyY2U1YjIyMDAwMDAwMDAsIDB4YTAzM2QzYWYwMDAwMDAwMCwKKyAgICAweGVjMjc0YzBiMDAwMDAwMDAsIDB4MGVkYWM0ODYwMDAwMDAwMCwgMHg2OWRhMmNjYjAwMDAwMDAwLAorICAgIDB4OGIyN2E0NDYwMDAwMDAwMCwgMHhhN2RhZmM1MDAwMDAwMDAwLCAweDQ1Mjc3NGRkMDAwMDAwMDAsCisgICAgMHgyMjI3OWM5MDAwMDAwMDAwLCAweGMwZGExNDFkMDAwMDAwMDAsIDB4N2FkZDJkYmMwMDAwMDAwMCwKKyAgICAweDk4MjBhNTMxMDAwMDAwMDAsIDB4ZmYyMDRkN2MwMDAwMDAwMCwgMHgxZGRkYzVmMTAwMDAwMDAwLAorICAgIDB4MzEyMDlkZTcwMDAwMDAwMCwgMHhkM2RkMTU2YTAwMDAwMDAwLCAweGI0ZGRmZDI3MDAwMDAwMDAsCisgICAgMHg1NjIwNzVhYTAwMDAwMDAwLCAweDgxZDRmZWJlMDAwMDAwMDAsIDB4NjMyOTc2MzMwMDAwMDAwMCwKKyAgICAweDA0Mjk5ZTdlMDAwMDAwMDAsIDB4ZTZkNDE2ZjMwMDAwMDAwMCwgMHhjYTI5NGVlNTAwMDAwMDAwLAorICAgIDB4MjhkNGM2NjgwMDAwMDAwMCwgMHg0ZmQ0MmUyNTAwMDAwMDAwLCAweGFkMjlhNmE4MDAwMDAwMDAsCisgICAgMHgxNzJlOWYwOTAwMDAwMDAwLCAweGY1ZDMxNzg0MDAwMDAwMDAsIDB4OTJkM2ZmYzkwMDAwMDAwMCwKKyAgICAweDcwMmU3NzQ0MDAwMDAwMDAsIDB4NWNkMzJmNTIwMDAwMDAwMCwgMHhiZTJlYTdkZjAwMDAwMDAwLAorICAgIDB4ZDkyZTRmOTIwMDAwMDAwMCwgMHgzYmQzYzcxZjAwMDAwMDAwLCAweGFmODhjMGFkMDAwMDAwMDAsCisgICAgMHg0ZDc1NDgyMDAwMDAwMDAwLCAweDJhNzVhMDZkMDAwMDAwMDAsIDB4Yzg4ODI4ZTAwMDAwMDAwMCwKKyAgICAweGU0NzU3MGY2MDAwMDAwMDAsIDB4MDY4OGY4N2IwMDAwMDAwMCwgMHg2MTg4MTAzNjAwMDAwMDAwLAorICAgIDB4ODM3NTk4YmIwMDAwMDAwMCwgMHgzOTcyYTExYTAwMDAwMDAwLCAweGRiOGYyOTk3MDAwMDAwMDAsCisgICAgMHhiYzhmYzFkYTAwMDAwMDAwLCAweDVlNzI0OTU3MDAwMDAwMDAsIDB4NzI4ZjExNDEwMDAwMDAwMCwKKyAgICAweDkwNzI5OWNjMDAwMDAwMDAsIDB4Zjc3MjcxODEwMDAwMDAwMCwgMHgxNThmZjkwYzAwMDAwMDAwLAorICAgIDB4YzI3YjcyMTgwMDAwMDAwMCwgMHgyMDg2ZmE5NTAwMDAwMDAwLCAweDQ3ODYxMmQ4MDAwMDAwMDAsCisgICAgMHhhNTdiOWE1NTAwMDAwMDAwLCAweDg5ODZjMjQzMDAwMDAwMDAsIDB4NmI3YjRhY2UwMDAwMDAwMCwKKyAgICAweDBjN2JhMjgzMDAwMDAwMDAsIDB4ZWU4NjJhMGUwMDAwMDAwMCwgMHg1NDgxMTNhZjAwMDAwMDAwLAorICAgIDB4YjY3YzliMjIwMDAwMDAwMCwgMHhkMTdjNzM2ZjAwMDAwMDAwLCAweDMzODFmYmUyMDAwMDAwMDAsCisgICAgMHgxZjdjYTNmNDAwMDAwMDAwLCAweGZkODEyYjc5MDAwMDAwMDAsIDB4OWE4MWMzMzQwMDAwMDAwMCwKKyAgICAweDc4N2M0YmI5MDAwMDAwMDAsIDB4MzQ2OGQ0MWQwMDAwMDAwMCwgMHhkNjk1NWM5MDAwMDAwMDAwLAorICAgIDB4YjE5NWI0ZGQwMDAwMDAwMCwgMHg1MzY4M2M1MDAwMDAwMDAwLCAweDdmOTU2NDQ2MDAwMDAwMDAsCisgICAgMHg5ZDY4ZWNjYjAwMDAwMDAwLCAweGZhNjgwNDg2MDAwMDAwMDAsIDB4MTg5NThjMGIwMDAwMDAwMCwKKyAgICAweGEyOTJiNWFhMDAwMDAwMDAsIDB4NDA2ZjNkMjcwMDAwMDAwMCwgMHgyNzZmZDU2YTAwMDAwMDAwLAorICAgIDB4YzU5MjVkZTcwMDAwMDAwMCwgMHhlOTZmMDVmMTAwMDAwMDAwLCAweDBiOTI4ZDdjMDAwMDAwMDAsCisgICAgMHg2YzkyNjUzMTAwMDAwMDAwLCAweDhlNmZlZGJjMDAwMDAwMDAsIDB4NTk5YjY2YTgwMDAwMDAwMCwKKyAgICAweGJiNjZlZTI1MDAwMDAwMDAsIDB4ZGM2NjA2NjgwMDAwMDAwMCwgMHgzZTliOGVlNTAwMDAwMDAwLAorICAgIDB4MTI2NmQ2ZjMwMDAwMDAwMCwgMHhmMDliNWU3ZTAwMDAwMDAwLCAweDk3OWJiNjMzMDAwMDAwMDAsCisgICAgMHg3NTY2M2ViZTAwMDAwMDAwLCAweGNmNjEwNzFmMDAwMDAwMDAsIDB4MmQ5YzhmOTIwMDAwMDAwMCwKKyAgICAweDRhOWM2N2RmMDAwMDAwMDAsIDB4YTg2MWVmNTIwMDAwMDAwMCwgMHg4NDljYjc0NDAwMDAwMDAwLAorICAgIDB4NjY2MTNmYzkwMDAwMDAwMCwgMHgwMTYxZDc4NDAwMDAwMDAwLCAweGUzOWM1ZjA5MDAwMDAwMDAsCisgICAgMHhkODRmOTgxNjAwMDAwMDAwLCAweDNhYjIxMDliMDAwMDAwMDAsIDB4NWRiMmY4ZDYwMDAwMDAwMCwKKyAgICAweGJmNGY3MDViMDAwMDAwMDAsIDB4OTNiMjI4NGQwMDAwMDAwMCwgMHg3MTRmYTBjMDAwMDAwMDAwLAorICAgIDB4MTY0ZjQ4OGQwMDAwMDAwMCwgMHhmNGIyYzAwMDAwMDAwMDAwLCAweDRlYjVmOWExMDAwMDAwMDAsCisgICAgMHhhYzQ4NzEyYzAwMDAwMDAwLCAweGNiNDg5OTYxMDAwMDAwMDAsIDB4MjliNTExZWMwMDAwMDAwMCwKKyAgICAweDA1NDg0OWZhMDAwMDAwMDAsIDB4ZTdiNWMxNzcwMDAwMDAwMCwgMHg4MGI1MjkzYTAwMDAwMDAwLAorICAgIDB4NjI0OGExYjcwMDAwMDAwMCwgMHhiNWJjMmFhMzAwMDAwMDAwLCAweDU3NDFhMjJlMDAwMDAwMDAsCisgICAgMHgzMDQxNGE2MzAwMDAwMDAwLCAweGQyYmNjMmVlMDAwMDAwMDAsIDB4ZmU0MTlhZjgwMDAwMDAwMCwKKyAgICAweDFjYmMxMjc1MDAwMDAwMDAsIDB4N2JiY2ZhMzgwMDAwMDAwMCwgMHg5OTQxNzJiNTAwMDAwMDAwLAorICAgIDB4MjM0NjRiMTQwMDAwMDAwMCwgMHhjMWJiYzM5OTAwMDAwMDAwLCAweGE2YmIyYmQ0MDAwMDAwMDAsCisgICAgMHg0NDQ2YTM1OTAwMDAwMDAwLCAweDY4YmJmYjRmMDAwMDAwMDAsIDB4OGE0NjczYzIwMDAwMDAwMCwKKyAgICAweGVkNDY5YjhmMDAwMDAwMDAsIDB4MGZiYjEzMDIwMDAwMDAwMCwgMHg0M2FmOGNhNjAwMDAwMDAwLAorICAgIDB4YTE1MjA0MmIwMDAwMDAwMCwgMHhjNjUyZWM2NjAwMDAwMDAwLCAweDI0YWY2NGViMDAwMDAwMDAsCisgICAgMHgwODUyM2NmZDAwMDAwMDAwLCAweGVhYWZiNDcwMDAwMDAwMDAsIDB4OGRhZjVjM2QwMDAwMDAwMCwKKyAgICAweDZmNTJkNGIwMDAwMDAwMDAsIDB4ZDU1NWVkMTEwMDAwMDAwMCwgMHgzN2E4NjU5YzAwMDAwMDAwLAorICAgIDB4NTBhODhkZDEwMDAwMDAwMCwgMHhiMjU1MDU1YzAwMDAwMDAwLCAweDllYTg1ZDRhMDAwMDAwMDAsCisgICAgMHg3YzU1ZDVjNzAwMDAwMDAwLCAweDFiNTUzZDhhMDAwMDAwMDAsIDB4ZjlhOGI1MDcwMDAwMDAwMCwKKyAgICAweDJlNWMzZTEzMDAwMDAwMDAsIDB4Y2NhMWI2OWUwMDAwMDAwMCwgMHhhYmExNWVkMzAwMDAwMDAwLAorICAgIDB4NDk1Y2Q2NWUwMDAwMDAwMCwgMHg2NWExOGU0ODAwMDAwMDAwLCAweDg3NWMwNmM1MDAwMDAwMDAsCisgICAgMHhlMDVjZWU4ODAwMDAwMDAwLCAweDAyYTE2NjA1MDAwMDAwMDAsIDB4YjhhNjVmYTQwMDAwMDAwMCwKKyAgICAweDVhNWJkNzI5MDAwMDAwMDAsIDB4M2Q1YjNmNjQwMDAwMDAwMCwgMHhkZmE2YjdlOTAwMDAwMDAwLAorICAgIDB4ZjM1YmVmZmYwMDAwMDAwMCwgMHgxMWE2Njc3MjAwMDAwMDAwLCAweDc2YTY4ZjNmMDAwMDAwMDAsCisgICAgMHg5NDViMDdiMjAwMDAwMDAwfSwKKyAgIHsweDAwMDAwMDAwMDAwMDAwMDAsIDB4YTkwYjg5NGUwMDAwMDAwMCwgMHg1MjE3MTI5ZDAwMDAwMDAwLAorICAgIDB4ZmIxYzliZDMwMDAwMDAwMCwgMHhlNTI4NTVlMTAwMDAwMDAwLCAweDRjMjNkY2FmMDAwMDAwMDAsCisgICAgMHhiNzNmNDc3YzAwMDAwMDAwLCAweDFlMzRjZTMyMDAwMDAwMDAsIDB4OGI1N2RiMTkwMDAwMDAwMCwKKyAgICAweDIyNWM1MjU3MDAwMDAwMDAsIDB4ZDk0MGM5ODQwMDAwMDAwMCwgMHg3MDRiNDBjYTAwMDAwMDAwLAorICAgIDB4NmU3ZjhlZjgwMDAwMDAwMCwgMHhjNzc0MDdiNjAwMDAwMDAwLCAweDNjNjg5YzY1MDAwMDAwMDAsCisgICAgMHg5NTYzMTUyYjAwMDAwMDAwLCAweDE2YWZiNjMzMDAwMDAwMDAsIDB4YmZhNDNmN2QwMDAwMDAwMCwKKyAgICAweDQ0YjhhNGFlMDAwMDAwMDAsIDB4ZWRiMzJkZTAwMDAwMDAwMCwgMHhmMzg3ZTNkMjAwMDAwMDAwLAorICAgIDB4NWE4YzZhOWMwMDAwMDAwMCwgMHhhMTkwZjE0ZjAwMDAwMDAwLCAweDA4OWI3ODAxMDAwMDAwMDAsCisgICAgMHg5ZGY4NmQyYTAwMDAwMDAwLCAweDM0ZjNlNDY0MDAwMDAwMDAsIDB4Y2ZlZjdmYjcwMDAwMDAwMCwKKyAgICAweDY2ZTRmNmY5MDAwMDAwMDAsIDB4NzhkMDM4Y2IwMDAwMDAwMCwgMHhkMWRiYjE4NTAwMDAwMDAwLAorICAgIDB4MmFjNzJhNTYwMDAwMDAwMCwgMHg4M2NjYTMxODAwMDAwMDAwLCAweDJjNWU2ZDY3MDAwMDAwMDAsCisgICAgMHg4NTU1ZTQyOTAwMDAwMDAwLCAweDdlNDk3ZmZhMDAwMDAwMDAsIDB4ZDc0MmY2YjQwMDAwMDAwMCwKKyAgICAweGM5NzYzODg2MDAwMDAwMDAsIDB4NjA3ZGIxYzgwMDAwMDAwMCwgMHg5YjYxMmExYjAwMDAwMDAwLAorICAgIDB4MzI2YWEzNTUwMDAwMDAwMCwgMHhhNzA5YjY3ZTAwMDAwMDAwLCAweDBlMDIzZjMwMDAwMDAwMDAsCisgICAgMHhmNTFlYTRlMzAwMDAwMDAwLCAweDVjMTUyZGFkMDAwMDAwMDAsIDB4NDIyMWUzOWYwMDAwMDAwMCwKKyAgICAweGViMmE2YWQxMDAwMDAwMDAsIDB4MTAzNmYxMDIwMDAwMDAwMCwgMHhiOTNkNzg0YzAwMDAwMDAwLAorICAgIDB4M2FmMWRiNTQwMDAwMDAwMCwgMHg5M2ZhNTIxYTAwMDAwMDAwLCAweDY4ZTZjOWM5MDAwMDAwMDAsCisgICAgMHhjMWVkNDA4NzAwMDAwMDAwLCAweGRmZDk4ZWI1MDAwMDAwMDAsIDB4NzZkMjA3ZmIwMDAwMDAwMCwKKyAgICAweDhkY2U5YzI4MDAwMDAwMDAsIDB4MjRjNTE1NjYwMDAwMDAwMCwgMHhiMWE2MDA0ZDAwMDAwMDAwLAorICAgIDB4MThhZDg5MDMwMDAwMDAwMCwgMHhlM2IxMTJkMDAwMDAwMDAwLCAweDRhYmE5YjllMDAwMDAwMDAsCisgICAgMHg1NDhlNTVhYzAwMDAwMDAwLCAweGZkODVkY2UyMDAwMDAwMDAsIDB4MDY5OTQ3MzEwMDAwMDAwMCwKKyAgICAweGFmOTJjZTdmMDAwMDAwMDAsIDB4NThiY2RhY2UwMDAwMDAwMCwgMHhmMWI3NTM4MDAwMDAwMDAwLAorICAgIDB4MGFhYmM4NTMwMDAwMDAwMCwgMHhhM2EwNDExZDAwMDAwMDAwLCAweGJkOTQ4ZjJmMDAwMDAwMDAsCisgICAgMHgxNDlmMDY2MTAwMDAwMDAwLCAweGVmODM5ZGIyMDAwMDAwMDAsIDB4NDY4ODE0ZmMwMDAwMDAwMCwKKyAgICAweGQzZWIwMWQ3MDAwMDAwMDAsIDB4N2FlMDg4OTkwMDAwMDAwMCwgMHg4MWZjMTM0YTAwMDAwMDAwLAorICAgIDB4MjhmNzlhMDQwMDAwMDAwMCwgMHgzNmMzNTQzNjAwMDAwMDAwLCAweDlmYzhkZDc4MDAwMDAwMDAsCisgICAgMHg2NGQ0NDZhYjAwMDAwMDAwLCAweGNkZGZjZmU1MDAwMDAwMDAsIDB4NGUxMzZjZmQwMDAwMDAwMCwKKyAgICAweGU3MThlNWIzMDAwMDAwMDAsIDB4MWMwNDdlNjAwMDAwMDAwMCwgMHhiNTBmZjcyZTAwMDAwMDAwLAorICAgIDB4YWIzYjM5MWMwMDAwMDAwMCwgMHgwMjMwYjA1MjAwMDAwMDAwLCAweGY5MmMyYjgxMDAwMDAwMDAsCisgICAgMHg1MDI3YTJjZjAwMDAwMDAwLCAweGM1NDRiN2U0MDAwMDAwMDAsIDB4NmM0ZjNlYWEwMDAwMDAwMCwKKyAgICAweDk3NTNhNTc5MDAwMDAwMDAsIDB4M2U1ODJjMzcwMDAwMDAwMCwgMHgyMDZjZTIwNTAwMDAwMDAwLAorICAgIDB4ODk2NzZiNGIwMDAwMDAwMCwgMHg3MjdiZjA5ODAwMDAwMDAwLCAweGRiNzA3OWQ2MDAwMDAwMDAsCisgICAgMHg3NGUyYjdhOTAwMDAwMDAwLCAweGRkZTkzZWU3MDAwMDAwMDAsIDB4MjZmNWE1MzQwMDAwMDAwMCwKKyAgICAweDhmZmUyYzdhMDAwMDAwMDAsIDB4OTFjYWUyNDgwMDAwMDAwMCwgMHgzOGMxNmIwNjAwMDAwMDAwLAorICAgIDB4YzNkZGYwZDUwMDAwMDAwMCwgMHg2YWQ2Nzk5YjAwMDAwMDAwLCAweGZmYjU2Y2IwMDAwMDAwMDAsCisgICAgMHg1NmJlZTVmZTAwMDAwMDAwLCAweGFkYTI3ZTJkMDAwMDAwMDAsIDB4MDRhOWY3NjMwMDAwMDAwMCwKKyAgICAweDFhOWQzOTUxMDAwMDAwMDAsIDB4YjM5NmIwMWYwMDAwMDAwMCwgMHg0ODhhMmJjYzAwMDAwMDAwLAorICAgIDB4ZTE4MWEyODIwMDAwMDAwMCwgMHg2MjRkMDE5YTAwMDAwMDAwLCAweGNiNDY4OGQ0MDAwMDAwMDAsCisgICAgMHgzMDVhMTMwNzAwMDAwMDAwLCAweDk5NTE5YTQ5MDAwMDAwMDAsIDB4ODc2NTU0N2IwMDAwMDAwMCwKKyAgICAweDJlNmVkZDM1MDAwMDAwMDAsIDB4ZDU3MjQ2ZTYwMDAwMDAwMCwgMHg3Yzc5Y2ZhODAwMDAwMDAwLAorICAgIDB4ZTkxYWRhODMwMDAwMDAwMCwgMHg0MDExNTNjZDAwMDAwMDAwLCAweGJiMGRjODFlMDAwMDAwMDAsCisgICAgMHgxMjA2NDE1MDAwMDAwMDAwLCAweDBjMzI4ZjYyMDAwMDAwMDAsIDB4YTUzOTA2MmMwMDAwMDAwMCwKKyAgICAweDVlMjU5ZGZmMDAwMDAwMDAsIDB4ZjcyZTE0YjEwMDAwMDAwMCwgMHhmMTdlYzQ0NjAwMDAwMDAwLAorICAgIDB4NTg3NTRkMDgwMDAwMDAwMCwgMHhhMzY5ZDZkYjAwMDAwMDAwLCAweDBhNjI1Zjk1MDAwMDAwMDAsCisgICAgMHgxNDU2OTFhNzAwMDAwMDAwLCAweGJkNWQxOGU5MDAwMDAwMDAsIDB4NDY0MTgzM2EwMDAwMDAwMCwKKyAgICAweGVmNGEwYTc0MDAwMDAwMDAsIDB4N2EyOTFmNWYwMDAwMDAwMCwgMHhkMzIyOTYxMTAwMDAwMDAwLAorICAgIDB4MjgzZTBkYzIwMDAwMDAwMCwgMHg4MTM1ODQ4YzAwMDAwMDAwLCAweDlmMDE0YWJlMDAwMDAwMDAsCisgICAgMHgzNjBhYzNmMDAwMDAwMDAwLCAweGNkMTY1ODIzMDAwMDAwMDAsIDB4NjQxZGQxNmQwMDAwMDAwMCwKKyAgICAweGU3ZDE3Mjc1MDAwMDAwMDAsIDB4NGVkYWZiM2IwMDAwMDAwMCwgMHhiNWM2NjBlODAwMDAwMDAwLAorICAgIDB4MWNjZGU5YTYwMDAwMDAwMCwgMHgwMmY5Mjc5NDAwMDAwMDAwLCAweGFiZjJhZWRhMDAwMDAwMDAsCisgICAgMHg1MGVlMzUwOTAwMDAwMDAwLCAweGY5ZTViYzQ3MDAwMDAwMDAsIDB4NmM4NmE5NmMwMDAwMDAwMCwKKyAgICAweGM1OGQyMDIyMDAwMDAwMDAsIDB4M2U5MWJiZjEwMDAwMDAwMCwgMHg5NzlhMzJiZjAwMDAwMDAwLAorICAgIDB4ODlhZWZjOGQwMDAwMDAwMCwgMHgyMGE1NzVjMzAwMDAwMDAwLCAweGRiYjllZTEwMDAwMDAwMDAsCisgICAgMHg3MmIyNjc1ZTAwMDAwMDAwLCAweGRkMjBhOTIxMDAwMDAwMDAsIDB4NzQyYjIwNmYwMDAwMDAwMCwKKyAgICAweDhmMzdiYmJjMDAwMDAwMDAsIDB4MjYzYzMyZjIwMDAwMDAwMCwgMHgzODA4ZmNjMDAwMDAwMDAwLAorICAgIDB4OTEwMzc1OGUwMDAwMDAwMCwgMHg2YTFmZWU1ZDAwMDAwMDAwLCAweGMzMTQ2NzEzMDAwMDAwMDAsCisgICAgMHg1Njc3NzIzODAwMDAwMDAwLCAweGZmN2NmYjc2MDAwMDAwMDAsIDB4MDQ2MDYwYTUwMDAwMDAwMCwKKyAgICAweGFkNmJlOWViMDAwMDAwMDAsIDB4YjM1ZjI3ZDkwMDAwMDAwMCwgMHgxYTU0YWU5NzAwMDAwMDAwLAorICAgIDB4ZTE0ODM1NDQwMDAwMDAwMCwgMHg0ODQzYmMwYTAwMDAwMDAwLCAweGNiOGYxZjEyMDAwMDAwMDAsCisgICAgMHg2Mjg0OTY1YzAwMDAwMDAwLCAweDk5OTgwZDhmMDAwMDAwMDAsIDB4MzA5Mzg0YzEwMDAwMDAwMCwKKyAgICAweDJlYTc0YWYzMDAwMDAwMDAsIDB4ODdhY2MzYmQwMDAwMDAwMCwgMHg3Y2IwNTg2ZTAwMDAwMDAwLAorICAgIDB4ZDViYmQxMjAwMDAwMDAwMCwgMHg0MGQ4YzQwYjAwMDAwMDAwLCAweGU5ZDM0ZDQ1MDAwMDAwMDAsCisgICAgMHgxMmNmZDY5NjAwMDAwMDAwLCAweGJiYzQ1ZmQ4MDAwMDAwMDAsIDB4YTVmMDkxZWEwMDAwMDAwMCwKKyAgICAweDBjZmIxOGE0MDAwMDAwMDAsIDB4ZjdlNzgzNzcwMDAwMDAwMCwgMHg1ZWVjMGEzOTAwMDAwMDAwLAorICAgIDB4YTljMjFlODgwMDAwMDAwMCwgMHgwMGM5OTdjNjAwMDAwMDAwLCAweGZiZDUwYzE1MDAwMDAwMDAsCisgICAgMHg1MmRlODU1YjAwMDAwMDAwLCAweDRjZWE0YjY5MDAwMDAwMDAsIDB4ZTVlMWMyMjcwMDAwMDAwMCwKKyAgICAweDFlZmQ1OWY0MDAwMDAwMDAsIDB4YjdmNmQwYmEwMDAwMDAwMCwgMHgyMjk1YzU5MTAwMDAwMDAwLAorICAgIDB4OGI5ZTRjZGYwMDAwMDAwMCwgMHg3MDgyZDcwYzAwMDAwMDAwLCAweGQ5ODk1ZTQyMDAwMDAwMDAsCisgICAgMHhjN2JkOTA3MDAwMDAwMDAwLCAweDZlYjYxOTNlMDAwMDAwMDAsIDB4OTVhYTgyZWQwMDAwMDAwMCwKKyAgICAweDNjYTEwYmEzMDAwMDAwMDAsIDB4YmY2ZGE4YmIwMDAwMDAwMCwgMHgxNjY2MjFmNTAwMDAwMDAwLAorICAgIDB4ZWQ3YWJhMjYwMDAwMDAwMCwgMHg0NDcxMzM2ODAwMDAwMDAwLCAweDVhNDVmZDVhMDAwMDAwMDAsCisgICAgMHhmMzRlNzQxNDAwMDAwMDAwLCAweDA4NTJlZmM3MDAwMDAwMDAsIDB4YTE1OTY2ODkwMDAwMDAwMCwKKyAgICAweDM0M2E3M2EyMDAwMDAwMDAsIDB4OWQzMWZhZWMwMDAwMDAwMCwgMHg2NjJkNjEzZjAwMDAwMDAwLAorICAgIDB4Y2YyNmU4NzEwMDAwMDAwMCwgMHhkMTEyMjY0MzAwMDAwMDAwLCAweDc4MTlhZjBkMDAwMDAwMDAsCisgICAgMHg4MzA1MzRkZTAwMDAwMDAwLCAweDJhMGViZDkwMDAwMDAwMDAsIDB4ODU5YzczZWYwMDAwMDAwMCwKKyAgICAweDJjOTdmYWExMDAwMDAwMDAsIDB4ZDc4YjYxNzIwMDAwMDAwMCwgMHg3ZTgwZTgzYzAwMDAwMDAwLAorICAgIDB4NjBiNDI2MGUwMDAwMDAwMCwgMHhjOWJmYWY0MDAwMDAwMDAwLCAweDMyYTMzNDkzMDAwMDAwMDAsCisgICAgMHg5YmE4YmRkZDAwMDAwMDAwLCAweDBlY2JhOGY2MDAwMDAwMDAsIDB4YTdjMDIxYjgwMDAwMDAwMCwKKyAgICAweDVjZGNiYTZiMDAwMDAwMDAsIDB4ZjVkNzMzMjUwMDAwMDAwMCwgMHhlYmUzZmQxNzAwMDAwMDAwLAorICAgIDB4NDJlODc0NTkwMDAwMDAwMCwgMHhiOWY0ZWY4YTAwMDAwMDAwLCAweDEwZmY2NmM0MDAwMDAwMDAsCisgICAgMHg5MzMzYzVkYzAwMDAwMDAwLCAweDNhMzg0YzkyMDAwMDAwMDAsIDB4YzEyNGQ3NDEwMDAwMDAwMCwKKyAgICAweDY4MmY1ZTBmMDAwMDAwMDAsIDB4NzYxYjkwM2QwMDAwMDAwMCwgMHhkZjEwMTk3MzAwMDAwMDAwLAorICAgIDB4MjQwYzgyYTAwMDAwMDAwMCwgMHg4ZDA3MGJlZTAwMDAwMDAwLCAweDE4NjQxZWM1MDAwMDAwMDAsCisgICAgMHhiMTZmOTc4YjAwMDAwMDAwLCAweDRhNzMwYzU4MDAwMDAwMDAsIDB4ZTM3ODg1MTYwMDAwMDAwMCwKKyAgICAweGZkNGM0YjI0MDAwMDAwMDAsIDB4NTQ0N2MyNmEwMDAwMDAwMCwgMHhhZjViNTliOTAwMDAwMDAwLAorICAgIDB4MDY1MGQwZjcwMDAwMDAwMH0sCisgICB7MHgwMDAwMDAwMDAwMDAwMDAwLCAweDQ3OTI0NGFmMDAwMDAwMDAsIDB4Y2YyMmY4ODUwMDAwMDAwMCwKKyAgICAweDg4YjBiYzJhMDAwMDAwMDAsIDB4ZGY0MzgxZDAwMDAwMDAwMCwgMHg5OGQxYzU3ZjAwMDAwMDAwLAorICAgIDB4MTA2MTc5NTUwMDAwMDAwMCwgMHg1N2YzM2RmYTAwMDAwMDAwLCAweGZmODE3MzdhMDAwMDAwMDAsCisgICAgMHhiODEzMzdkNTAwMDAwMDAwLCAweDMwYTM4YmZmMDAwMDAwMDAsIDB4NzczMWNmNTAwMDAwMDAwMCwKKyAgICAweDIwYzJmMmFhMDAwMDAwMDAsIDB4Njc1MGI2MDUwMDAwMDAwMCwgMHhlZmUwMGEyZjAwMDAwMDAwLAorICAgIDB4YTg3MjRlODAwMDAwMDAwMCwgMHhmZTAzZTdmNDAwMDAwMDAwLCAweGI5OTFhMzViMDAwMDAwMDAsCisgICAgMHgzMTIxMWY3MTAwMDAwMDAwLCAweDc2YjM1YmRlMDAwMDAwMDAsIDB4MjE0MDY2MjQwMDAwMDAwMCwKKyAgICAweDY2ZDIyMjhiMDAwMDAwMDAsIDB4ZWU2MjllYTEwMDAwMDAwMCwgMHhhOWYwZGEwZTAwMDAwMDAwLAorICAgIDB4MDE4Mjk0OGUwMDAwMDAwMCwgMHg0NjEwZDAyMTAwMDAwMDAwLCAweGNlYTA2YzBiMDAwMDAwMDAsCisgICAgMHg4OTMyMjhhNDAwMDAwMDAwLCAweGRlYzExNTVlMDAwMDAwMDAsIDB4OTk1MzUxZjEwMDAwMDAwMCwKKyAgICAweDExZTNlZGRiMDAwMDAwMDAsIDB4NTY3MWE5NzQwMDAwMDAwMCwgMHhiZDAxYmYzMjAwMDAwMDAwLAorICAgIDB4ZmE5M2ZiOWQwMDAwMDAwMCwgMHg3MjIzNDdiNzAwMDAwMDAwLCAweDM1YjEwMzE4MDAwMDAwMDAsCisgICAgMHg2MjQyM2VlMjAwMDAwMDAwLCAweDI1ZDA3YTRkMDAwMDAwMDAsIDB4YWQ2MGM2NjcwMDAwMDAwMCwKKyAgICAweGVhZjI4MmM4MDAwMDAwMDAsIDB4NDI4MGNjNDgwMDAwMDAwMCwgMHgwNTEyODhlNzAwMDAwMDAwLAorICAgIDB4OGRhMjM0Y2QwMDAwMDAwMCwgMHhjYTMwNzA2MjAwMDAwMDAwLCAweDlkYzM0ZDk4MDAwMDAwMDAsCisgICAgMHhkYTUxMDkzNzAwMDAwMDAwLCAweDUyZTFiNTFkMDAwMDAwMDAsIDB4MTU3M2YxYjIwMDAwMDAwMCwKKyAgICAweDQzMDI1OGM2MDAwMDAwMDAsIDB4MDQ5MDFjNjkwMDAwMDAwMCwgMHg4YzIwYTA0MzAwMDAwMDAwLAorICAgIDB4Y2JiMmU0ZWMwMDAwMDAwMCwgMHg5YzQxZDkxNjAwMDAwMDAwLCAweGRiZDM5ZGI5MDAwMDAwMDAsCisgICAgMHg1MzYzMjE5MzAwMDAwMDAwLCAweDE0ZjE2NTNjMDAwMDAwMDAsIDB4YmM4MzJiYmMwMDAwMDAwMCwKKyAgICAweGZiMTE2ZjEzMDAwMDAwMDAsIDB4NzNhMWQzMzkwMDAwMDAwMCwgMHgzNDMzOTc5NjAwMDAwMDAwLAorICAgIDB4NjNjMGFhNmMwMDAwMDAwMCwgMHgyNDUyZWVjMzAwMDAwMDAwLCAweGFjZTI1MmU5MDAwMDAwMDAsCisgICAgMHhlYjcwMTY0NjAwMDAwMDAwLCAweDdhMDM3ZTY1MDAwMDAwMDAsIDB4M2Q5MTNhY2EwMDAwMDAwMCwKKyAgICAweGI1MjE4NmUwMDAwMDAwMDAsIDB4ZjJiM2MyNGYwMDAwMDAwMCwgMHhhNTQwZmZiNTAwMDAwMDAwLAorICAgIDB4ZTJkMmJiMWEwMDAwMDAwMCwgMHg2YTYyMDczMDAwMDAwMDAwLCAweDJkZjA0MzlmMDAwMDAwMDAsCisgICAgMHg4NTgyMGQxZjAwMDAwMDAwLCAweGMyMTA0OWIwMDAwMDAwMDAsIDB4NGFhMGY1OWEwMDAwMDAwMCwKKyAgICAweDBkMzJiMTM1MDAwMDAwMDAsIDB4NWFjMThjY2YwMDAwMDAwMCwgMHgxZDUzYzg2MDAwMDAwMDAwLAorICAgIDB4OTVlMzc0NGEwMDAwMDAwMCwgMHhkMjcxMzBlNTAwMDAwMDAwLCAweDg0MDA5OTkxMDAwMDAwMDAsCisgICAgMHhjMzkyZGQzZTAwMDAwMDAwLCAweDRiMjI2MTE0MDAwMDAwMDAsIDB4MGNiMDI1YmIwMDAwMDAwMCwKKyAgICAweDViNDMxODQxMDAwMDAwMDAsIDB4MWNkMTVjZWUwMDAwMDAwMCwgMHg5NDYxZTBjNDAwMDAwMDAwLAorICAgIDB4ZDNmM2E0NmIwMDAwMDAwMCwgMHg3YjgxZWFlYjAwMDAwMDAwLCAweDNjMTNhZTQ0MDAwMDAwMDAsCisgICAgMHhiNGEzMTI2ZTAwMDAwMDAwLCAweGYzMzE1NmMxMDAwMDAwMDAsIDB4YTRjMjZiM2IwMDAwMDAwMCwKKyAgICAweGUzNTAyZjk0MDAwMDAwMDAsIDB4NmJlMDkzYmUwMDAwMDAwMCwgMHgyYzcyZDcxMTAwMDAwMDAwLAorICAgIDB4YzcwMmMxNTcwMDAwMDAwMCwgMHg4MDkwODVmODAwMDAwMDAwLCAweDA4MjAzOWQyMDAwMDAwMDAsCisgICAgMHg0ZmIyN2Q3ZDAwMDAwMDAwLCAweDE4NDE0MDg3MDAwMDAwMDAsIDB4NWZkMzA0MjgwMDAwMDAwMCwKKyAgICAweGQ3NjNiODAyMDAwMDAwMDAsIDB4OTBmMWZjYWQwMDAwMDAwMCwgMHgzODgzYjIyZDAwMDAwMDAwLAorICAgIDB4N2YxMWY2ODIwMDAwMDAwMCwgMHhmN2ExNGFhODAwMDAwMDAwLCAweGIwMzMwZTA3MDAwMDAwMDAsCisgICAgMHhlN2MwMzNmZDAwMDAwMDAwLCAweGEwNTI3NzUyMDAwMDAwMDAsIDB4MjhlMmNiNzgwMDAwMDAwMCwKKyAgICAweDZmNzA4ZmQ3MDAwMDAwMDAsIDB4MzkwMTI2YTMwMDAwMDAwMCwgMHg3ZTkzNjIwYzAwMDAwMDAwLAorICAgIDB4ZjYyM2RlMjYwMDAwMDAwMCwgMHhiMWIxOWE4OTAwMDAwMDAwLCAweGU2NDJhNzczMDAwMDAwMDAsCisgICAgMHhhMWQwZTNkYzAwMDAwMDAwLCAweDI5NjA1ZmY2MDAwMDAwMDAsIDB4NmVmMjFiNTkwMDAwMDAwMCwKKyAgICAweGM2ODA1NWQ5MDAwMDAwMDAsIDB4ODExMjExNzYwMDAwMDAwMCwgMHgwOWEyYWQ1YzAwMDAwMDAwLAorICAgIDB4NGUzMGU5ZjMwMDAwMDAwMCwgMHgxOWMzZDQwOTAwMDAwMDAwLCAweDVlNTE5MGE2MDAwMDAwMDAsCisgICAgMHhkNmUxMmM4YzAwMDAwMDAwLCAweDkxNzM2ODIzMDAwMDAwMDAsIDB4ZjQwNmZjY2EwMDAwMDAwMCwKKyAgICAweGIzOTRiODY1MDAwMDAwMDAsIDB4M2IyNDA0NGYwMDAwMDAwMCwgMHg3Y2I2NDBlMDAwMDAwMDAwLAorICAgIDB4MmI0NTdkMWEwMDAwMDAwMCwgMHg2Y2Q3MzliNTAwMDAwMDAwLCAweGU0Njc4NTlmMDAwMDAwMDAsCisgICAgMHhhM2Y1YzEzMDAwMDAwMDAwLCAweDBiODc4ZmIwMDAwMDAwMDAsIDB4NGMxNWNiMWYwMDAwMDAwMCwKKyAgICAweGM0YTU3NzM1MDAwMDAwMDAsIDB4ODMzNzMzOWEwMDAwMDAwMCwgMHhkNGM0MGU2MDAwMDAwMDAwLAorICAgIDB4OTM1NjRhY2YwMDAwMDAwMCwgMHgxYmU2ZjZlNTAwMDAwMDAwLCAweDVjNzRiMjRhMDAwMDAwMDAsCisgICAgMHgwYTA1MWIzZTAwMDAwMDAwLCAweDRkOTc1ZjkxMDAwMDAwMDAsIDB4YzUyN2UzYmIwMDAwMDAwMCwKKyAgICAweDgyYjVhNzE0MDAwMDAwMDAsIDB4ZDU0NjlhZWUwMDAwMDAwMCwgMHg5MmQ0ZGU0MTAwMDAwMDAwLAorICAgIDB4MWE2NDYyNmIwMDAwMDAwMCwgMHg1ZGY2MjZjNDAwMDAwMDAwLCAweGY1ODQ2ODQ0MDAwMDAwMDAsCisgICAgMHhiMjE2MmNlYjAwMDAwMDAwLCAweDNhYTY5MGMxMDAwMDAwMDAsIDB4N2QzNGQ0NmUwMDAwMDAwMCwKKyAgICAweDJhYzdlOTk0MDAwMDAwMDAsIDB4NmQ1NWFkM2IwMDAwMDAwMCwgMHhlNWU1MTExMTAwMDAwMDAwLAorICAgIDB4YTI3NzU1YmUwMDAwMDAwMCwgMHg0OTA3NDNmODAwMDAwMDAwLCAweDBlOTUwNzU3MDAwMDAwMDAsCisgICAgMHg4NjI1YmI3ZDAwMDAwMDAwLCAweGMxYjdmZmQyMDAwMDAwMDAsIDB4OTY0NGMyMjgwMDAwMDAwMCwKKyAgICAweGQxZDY4Njg3MDAwMDAwMDAsIDB4NTk2NjNhYWQwMDAwMDAwMCwgMHgxZWY0N2UwMjAwMDAwMDAwLAorICAgIDB4YjY4NjMwODIwMDAwMDAwMCwgMHhmMTE0NzQyZDAwMDAwMDAwLCAweDc5YTRjODA3MDAwMDAwMDAsCisgICAgMHgzZTM2OGNhODAwMDAwMDAwLCAweDY5YzViMTUyMDAwMDAwMDAsIDB4MmU1N2Y1ZmQwMDAwMDAwMCwKKyAgICAweGE2ZTc0OWQ3MDAwMDAwMDAsIDB4ZTE3NTBkNzgwMDAwMDAwMCwgMHhiNzA0YTQwYzAwMDAwMDAwLAorICAgIDB4ZjA5NmUwYTMwMDAwMDAwMCwgMHg3ODI2NWM4OTAwMDAwMDAwLCAweDNmYjQxODI2MDAwMDAwMDAsCisgICAgMHg2ODQ3MjVkYzAwMDAwMDAwLCAweDJmZDU2MTczMDAwMDAwMDAsIDB4YTc2NWRkNTkwMDAwMDAwMCwKKyAgICAweGUwZjc5OWY2MDAwMDAwMDAsIDB4NDg4NWQ3NzYwMDAwMDAwMCwgMHgwZjE3OTNkOTAwMDAwMDAwLAorICAgIDB4ODdhNzJmZjMwMDAwMDAwMCwgMHhjMDM1NmI1YzAwMDAwMDAwLCAweDk3YzY1NmE2MDAwMDAwMDAsCisgICAgMHhkMDU0MTIwOTAwMDAwMDAwLCAweDU4ZTRhZTIzMDAwMDAwMDAsIDB4MWY3NmVhOGMwMDAwMDAwMCwKKyAgICAweDhlMDU4MmFmMDAwMDAwMDAsIDB4Yzk5N2M2MDAwMDAwMDAwMCwgMHg0MTI3N2EyYTAwMDAwMDAwLAorICAgIDB4MDZiNTNlODUwMDAwMDAwMCwgMHg1MTQ2MDM3ZjAwMDAwMDAwLCAweDE2ZDQ0N2QwMDAwMDAwMDAsCisgICAgMHg5ZTY0ZmJmYTAwMDAwMDAwLCAweGQ5ZjZiZjU1MDAwMDAwMDAsIDB4NzE4NGYxZDUwMDAwMDAwMCwKKyAgICAweDM2MTZiNTdhMDAwMDAwMDAsIDB4YmVhNjA5NTAwMDAwMDAwMCwgMHhmOTM0NGRmZjAwMDAwMDAwLAorICAgIDB4YWVjNzcwMDUwMDAwMDAwMCwgMHhlOTU1MzRhYTAwMDAwMDAwLCAweDYxZTU4ODgwMDAwMDAwMDAsCisgICAgMHgyNjc3Y2MyZjAwMDAwMDAwLCAweDcwMDY2NTViMDAwMDAwMDAsIDB4Mzc5NDIxZjQwMDAwMDAwMCwKKyAgICAweGJmMjQ5ZGRlMDAwMDAwMDAsIDB4ZjhiNmQ5NzEwMDAwMDAwMCwgMHhhZjQ1ZTQ4YjAwMDAwMDAwLAorICAgIDB4ZThkN2EwMjQwMDAwMDAwMCwgMHg2MDY3MWMwZTAwMDAwMDAwLCAweDI3ZjU1OGExMDAwMDAwMDAsCisgICAgMHg4Zjg3MTYyMTAwMDAwMDAwLCAweGM4MTU1MjhlMDAwMDAwMDAsIDB4NDBhNWVlYTQwMDAwMDAwMCwKKyAgICAweDA3MzdhYTBiMDAwMDAwMDAsIDB4NTBjNDk3ZjEwMDAwMDAwMCwgMHgxNzU2ZDM1ZTAwMDAwMDAwLAorICAgIDB4OWZlNjZmNzQwMDAwMDAwMCwgMHhkODc0MmJkYjAwMDAwMDAwLCAweDMzMDQzZDlkMDAwMDAwMDAsCisgICAgMHg3NDk2NzkzMjAwMDAwMDAwLCAweGZjMjZjNTE4MDAwMDAwMDAsIDB4YmJiNDgxYjcwMDAwMDAwMCwKKyAgICAweGVjNDdiYzRkMDAwMDAwMDAsIDB4YWJkNWY4ZTIwMDAwMDAwMCwgMHgyMzY1NDRjODAwMDAwMDAwLAorICAgIDB4NjRmNzAwNjcwMDAwMDAwMCwgMHhjYzg1NGVlNzAwMDAwMDAwLCAweDhiMTcwYTQ4MDAwMDAwMDAsCisgICAgMHgwM2E3YjY2MjAwMDAwMDAwLCAweDQ0MzVmMmNkMDAwMDAwMDAsIDB4MTNjNmNmMzcwMDAwMDAwMCwKKyAgICAweDU0NTQ4Yjk4MDAwMDAwMDAsIDB4ZGNlNDM3YjIwMDAwMDAwMCwgMHg5Yjc2NzMxZDAwMDAwMDAwLAorICAgIDB4Y2QwN2RhNjkwMDAwMDAwMCwgMHg4YTk1OWVjNjAwMDAwMDAwLCAweDAyMjUyMmVjMDAwMDAwMDAsCisgICAgMHg0NWI3NjY0MzAwMDAwMDAwLCAweDEyNDQ1YmI5MDAwMDAwMDAsIDB4NTVkNjFmMTYwMDAwMDAwMCwKKyAgICAweGRkNjZhMzNjMDAwMDAwMDAsIDB4OWFmNGU3OTMwMDAwMDAwMCwgMHgzMjg2YTkxMzAwMDAwMDAwLAorICAgIDB4NzUxNGVkYmMwMDAwMDAwMCwgMHhmZGE0NTE5NjAwMDAwMDAwLCAweGJhMzYxNTM5MDAwMDAwMDAsCisgICAgMHhlZGM1MjhjMzAwMDAwMDAwLCAweGFhNTc2YzZjMDAwMDAwMDAsIDB4MjJlN2QwNDYwMDAwMDAwMCwKKyAgICAweDY1NzU5NGU5MDAwMDAwMDB9fTsKKworI2Vsc2UgLyogVyA9PSA0ICovCisKK2xvY2FsIGNvbnN0IHpfY3JjX3QgRkFSIGNyY19icmFpZF90YWJsZVtdWzI1Nl0gPSB7CisgICB7MHgwMDAwMDAwMCwgMHg2NTY3M2I0NiwgMHhjYWNlNzY4YywgMHhhZmE5NGRjYSwgMHg0ZWVkZWI1OSwKKyAgICAweDJiOGFkMDFmLCAweDg0MjM5ZGQ1LCAweGUxNDRhNjkzLCAweDlkZGJkNmIyLCAweGY4YmNlZGY0LAorICAgIDB4NTcxNWEwM2UsIDB4MzI3MjliNzgsIDB4ZDMzNjNkZWIsIDB4YjY1MTA2YWQsIDB4MTlmODRiNjcsCisgICAgMHg3YzlmNzAyMSwgMHhlMGM2YWIyNSwgMHg4NWExOTA2MywgMHgyYTA4ZGRhOSwgMHg0ZjZmZTZlZiwKKyAgICAweGFlMmI0MDdjLCAweGNiNGM3YjNhLCAweDY0ZTUzNmYwLCAweDAxODIwZGI2LCAweDdkMWQ3ZDk3LAorICAgIDB4MTg3YTQ2ZDEsIDB4YjdkMzBiMWIsIDB4ZDJiNDMwNWQsIDB4MzNmMDk2Y2UsIDB4NTY5N2FkODgsCisgICAgMHhmOTNlZTA0MiwgMHg5YzU5ZGIwNCwgMHgxYWZjNTAwYiwgMHg3ZjliNmI0ZCwgMHhkMDMyMjY4NywKKyAgICAweGI1NTUxZGMxLCAweDU0MTFiYjUyLCAweDMxNzY4MDE0LCAweDllZGZjZGRlLCAweGZiYjhmNjk4LAorICAgIDB4ODcyNzg2YjksIDB4ZTI0MGJkZmYsIDB4NGRlOWYwMzUsIDB4Mjg4ZWNiNzMsIDB4YzljYTZkZTAsCisgICAgMHhhY2FkNTZhNiwgMHgwMzA0MWI2YywgMHg2NjYzMjAyYSwgMHhmYTNhZmIyZSwgMHg5ZjVkYzA2OCwKKyAgICAweDMwZjQ4ZGEyLCAweDU1OTNiNmU0LCAweGI0ZDcxMDc3LCAweGQxYjAyYjMxLCAweDdlMTk2NmZiLAorICAgIDB4MWI3ZTVkYmQsIDB4NjdlMTJkOWMsIDB4MDI4NjE2ZGEsIDB4YWQyZjViMTAsIDB4Yzg0ODYwNTYsCisgICAgMHgyOTBjYzZjNSwgMHg0YzZiZmQ4MywgMHhlM2MyYjA0OSwgMHg4NmE1OGIwZiwgMHgzNWY4YTAxNiwKKyAgICAweDUwOWY5YjUwLCAweGZmMzZkNjlhLCAweDlhNTFlZGRjLCAweDdiMTU0YjRmLCAweDFlNzI3MDA5LAorICAgIDB4YjFkYjNkYzMsIDB4ZDRiYzA2ODUsIDB4YTgyMzc2YTQsIDB4Y2Q0NDRkZTIsIDB4NjJlZDAwMjgsCisgICAgMHgwNzhhM2I2ZSwgMHhlNmNlOWRmZCwgMHg4M2E5YTZiYiwgMHgyYzAwZWI3MSwgMHg0OTY3ZDAzNywKKyAgICAweGQ1M2UwYjMzLCAweGIwNTkzMDc1LCAweDFmZjA3ZGJmLCAweDdhOTc0NmY5LCAweDliZDNlMDZhLAorICAgIDB4ZmViNGRiMmMsIDB4NTExZDk2ZTYsIDB4MzQ3YWFkYTAsIDB4NDhlNWRkODEsIDB4MmQ4MmU2YzcsCisgICAgMHg4MjJiYWIwZCwgMHhlNzRjOTA0YiwgMHgwNjA4MzZkOCwgMHg2MzZmMGQ5ZSwgMHhjY2M2NDA1NCwKKyAgICAweGE5YTE3YjEyLCAweDJmMDRmMDFkLCAweDRhNjNjYjViLCAweGU1Y2E4NjkxLCAweDgwYWRiZGQ3LAorICAgIDB4NjFlOTFiNDQsIDB4MDQ4ZTIwMDIsIDB4YWIyNzZkYzgsIDB4Y2U0MDU2OGUsIDB4YjJkZjI2YWYsCisgICAgMHhkN2I4MWRlOSwgMHg3ODExNTAyMywgMHgxZDc2NmI2NSwgMHhmYzMyY2RmNiwgMHg5OTU1ZjZiMCwKKyAgICAweDM2ZmNiYjdhLCAweDUzOWI4MDNjLCAweGNmYzI1YjM4LCAweGFhYTU2MDdlLCAweDA1MGMyZGI0LAorICAgIDB4NjA2YjE2ZjIsIDB4ODEyZmIwNjEsIDB4ZTQ0ODhiMjcsIDB4NGJlMWM2ZWQsIDB4MmU4NmZkYWIsCisgICAgMHg1MjE5OGQ4YSwgMHgzNzdlYjZjYywgMHg5OGQ3ZmIwNiwgMHhmZGIwYzA0MCwgMHgxY2Y0NjZkMywKKyAgICAweDc5OTM1ZDk1LCAweGQ2M2ExMDVmLCAweGIzNWQyYjE5LCAweDZiZjE0MDJjLCAweDBlOTY3YjZhLAorICAgIDB4YTEzZjM2YTAsIDB4YzQ1ODBkZTYsIDB4MjUxY2FiNzUsIDB4NDA3YjkwMzMsIDB4ZWZkMmRkZjksCisgICAgMHg4YWI1ZTZiZiwgMHhmNjJhOTY5ZSwgMHg5MzRkYWRkOCwgMHgzY2U0ZTAxMiwgMHg1OTgzZGI1NCwKKyAgICAweGI4Yzc3ZGM3LCAweGRkYTA0NjgxLCAweDcyMDkwYjRiLCAweDE3NmUzMDBkLCAweDhiMzdlYjA5LAorICAgIDB4ZWU1MGQwNGYsIDB4NDFmOTlkODUsIDB4MjQ5ZWE2YzMsIDB4YzVkYTAwNTAsIDB4YTBiZDNiMTYsCisgICAgMHgwZjE0NzZkYywgMHg2YTczNGQ5YSwgMHgxNmVjM2RiYiwgMHg3MzhiMDZmZCwgMHhkYzIyNGIzNywKKyAgICAweGI5NDU3MDcxLCAweDU4MDFkNmUyLCAweDNkNjZlZGE0LCAweDkyY2ZhMDZlLCAweGY3YTg5YjI4LAorICAgIDB4NzEwZDEwMjcsIDB4MTQ2YTJiNjEsIDB4YmJjMzY2YWIsIDB4ZGVhNDVkZWQsIDB4M2ZlMGZiN2UsCisgICAgMHg1YTg3YzAzOCwgMHhmNTJlOGRmMiwgMHg5MDQ5YjZiNCwgMHhlY2Q2YzY5NSwgMHg4OWIxZmRkMywKKyAgICAweDI2MThiMDE5LCAweDQzN2Y4YjVmLCAweGEyM2IyZGNjLCAweGM3NWMxNjhhLCAweDY4ZjU1YjQwLAorICAgIDB4MGQ5MjYwMDYsIDB4OTFjYmJiMDIsIDB4ZjRhYzgwNDQsIDB4NWIwNWNkOGUsIDB4M2U2MmY2YzgsCisgICAgMHhkZjI2NTA1YiwgMHhiYTQxNmIxZCwgMHgxNWU4MjZkNywgMHg3MDhmMWQ5MSwgMHgwYzEwNmRiMCwKKyAgICAweDY5Nzc1NmY2LCAweGM2ZGUxYjNjLCAweGEzYjkyMDdhLCAweDQyZmQ4NmU5LCAweDI3OWFiZGFmLAorICAgIDB4ODgzM2YwNjUsIDB4ZWQ1NGNiMjMsIDB4NWUwOWUwM2EsIDB4M2I2ZWRiN2MsIDB4OTRjNzk2YjYsCisgICAgMHhmMWEwYWRmMCwgMHgxMGU0MGI2MywgMHg3NTgzMzAyNSwgMHhkYTJhN2RlZiwgMHhiZjRkNDZhOSwKKyAgICAweGMzZDIzNjg4LCAweGE2YjUwZGNlLCAweDA5MWM0MDA0LCAweDZjN2I3YjQyLCAweDhkM2ZkZGQxLAorICAgIDB4ZTg1OGU2OTcsIDB4NDdmMWFiNWQsIDB4MjI5NjkwMWIsIDB4YmVjZjRiMWYsIDB4ZGJhODcwNTksCisgICAgMHg3NDAxM2Q5MywgMHgxMTY2MDZkNSwgMHhmMDIyYTA0NiwgMHg5NTQ1OWIwMCwgMHgzYWVjZDZjYSwKKyAgICAweDVmOGJlZDhjLCAweDIzMTQ5ZGFkLCAweDQ2NzNhNmViLCAweGU5ZGFlYjIxLCAweDhjYmRkMDY3LAorICAgIDB4NmRmOTc2ZjQsIDB4MDg5ZTRkYjIsIDB4YTczNzAwNzgsIDB4YzI1MDNiM2UsIDB4NDRmNWIwMzEsCisgICAgMHgyMTkyOGI3NywgMHg4ZTNiYzZiZCwgMHhlYjVjZmRmYiwgMHgwYTE4NWI2OCwgMHg2ZjdmNjAyZSwKKyAgICAweGMwZDYyZGU0LCAweGE1YjExNmEyLCAweGQ5MmU2NjgzLCAweGJjNDk1ZGM1LCAweDEzZTAxMDBmLAorICAgIDB4NzY4NzJiNDksIDB4OTdjMzhkZGEsIDB4ZjJhNGI2OWMsIDB4NWQwZGZiNTYsIDB4Mzg2YWMwMTAsCisgICAgMHhhNDMzMWIxNCwgMHhjMTU0MjA1MiwgMHg2ZWZkNmQ5OCwgMHgwYjlhNTZkZSwgMHhlYWRlZjA0ZCwKKyAgICAweDhmYjljYjBiLCAweDIwMTA4NmMxLCAweDQ1NzdiZDg3LCAweDM5ZThjZGE2LCAweDVjOGZmNmUwLAorICAgIDB4ZjMyNmJiMmEsIDB4OTY0MTgwNmMsIDB4NzcwNTI2ZmYsIDB4MTI2MjFkYjksIDB4YmRjYjUwNzMsCisgICAgMHhkOGFjNmIzNX0sCisgICB7MHgwMDAwMDAwMCwgMHhkN2UyODA1OCwgMHg3NGI0MDZmMSwgMHhhMzU2ODZhOSwgMHhlOTY4MGRlMiwKKyAgICAweDNlOGE4ZGJhLCAweDlkZGMwYjEzLCAweDRhM2U4YjRiLCAweDA5YTExZDg1LCAweGRlNDM5ZGRkLAorICAgIDB4N2QxNTFiNzQsIDB4YWFmNzliMmMsIDB4ZTBjOTEwNjcsIDB4MzcyYjkwM2YsIDB4OTQ3ZDE2OTYsCisgICAgMHg0MzlmOTZjZSwgMHgxMzQyM2IwYSwgMHhjNGEwYmI1MiwgMHg2N2Y2M2RmYiwgMHhiMDE0YmRhMywKKyAgICAweGZhMmEzNmU4LCAweDJkYzhiNmIwLCAweDhlOWUzMDE5LCAweDU5N2NiMDQxLCAweDFhZTMyNjhmLAorICAgIDB4Y2QwMWE2ZDcsIDB4NmU1NzIwN2UsIDB4YjliNWEwMjYsIDB4ZjM4YjJiNmQsIDB4MjQ2OWFiMzUsCisgICAgMHg4NzNmMmQ5YywgMHg1MGRkYWRjNCwgMHgyNjg0NzYxNCwgMHhmMTY2ZjY0YywgMHg1MjMwNzBlNSwKKyAgICAweDg1ZDJmMGJkLCAweGNmZWM3YmY2LCAweDE4MGVmYmFlLCAweGJiNTg3ZDA3LCAweDZjYmFmZDVmLAorICAgIDB4MmYyNTZiOTEsIDB4ZjhjN2ViYzksIDB4NWI5MTZkNjAsIDB4OGM3M2VkMzgsIDB4YzY0ZDY2NzMsCisgICAgMHgxMWFmZTYyYiwgMHhiMmY5NjA4MiwgMHg2NTFiZTBkYSwgMHgzNWM2NGQxZSwgMHhlMjI0Y2Q0NiwKKyAgICAweDQxNzI0YmVmLCAweDk2OTBjYmI3LCAweGRjYWU0MGZjLCAweDBiNGNjMGE0LCAweGE4MWE0NjBkLAorICAgIDB4N2ZmOGM2NTUsIDB4M2M2NzUwOWIsIDB4ZWI4NWQwYzMsIDB4NDhkMzU2NmEsIDB4OWYzMWQ2MzIsCisgICAgMHhkNTBmNWQ3OSwgMHgwMmVkZGQyMSwgMHhhMWJiNWI4OCwgMHg3NjU5ZGJkMCwgMHg0ZDA4ZWMyOCwKKyAgICAweDlhZWE2YzcwLCAweDM5YmNlYWQ5LCAweGVlNWU2YTgxLCAweGE0NjBlMWNhLCAweDczODI2MTkyLAorICAgIDB4ZDBkNGU3M2IsIDB4MDczNjY3NjMsIDB4NDRhOWYxYWQsIDB4OTM0YjcxZjUsIDB4MzAxZGY3NWMsCisgICAgMHhlN2ZmNzcwNCwgMHhhZGMxZmM0ZiwgMHg3YTIzN2MxNywgMHhkOTc1ZmFiZSwgMHgwZTk3N2FlNiwKKyAgICAweDVlNGFkNzIyLCAweDg5YTg1NzdhLCAweDJhZmVkMWQzLCAweGZkMWM1MThiLCAweGI3MjJkYWMwLAorICAgIDB4NjBjMDVhOTgsIDB4YzM5NmRjMzEsIDB4MTQ3NDVjNjksIDB4NTdlYmNhYTcsIDB4ODAwOTRhZmYsCisgICAgMHgyMzVmY2M1NiwgMHhmNGJkNGMwZSwgMHhiZTgzYzc0NSwgMHg2OTYxNDcxZCwgMHhjYTM3YzFiNCwKKyAgICAweDFkZDU0MWVjLCAweDZiOGM5YTNjLCAweGJjNmUxYTY0LCAweDFmMzg5Y2NkLCAweGM4ZGExYzk1LAorICAgIDB4ODJlNDk3ZGUsIDB4NTUwNjE3ODYsIDB4ZjY1MDkxMmYsIDB4MjFiMjExNzcsIDB4NjIyZDg3YjksCisgICAgMHhiNWNmMDdlMSwgMHgxNjk5ODE0OCwgMHhjMTdiMDExMCwgMHg4YjQ1OGE1YiwgMHg1Y2E3MGEwMywKKyAgICAweGZmZjE4Y2FhLCAweDI4MTMwY2YyLCAweDc4Y2VhMTM2LCAweGFmMmMyMTZlLCAweDBjN2FhN2M3LAorICAgIDB4ZGI5ODI3OWYsIDB4OTFhNmFjZDQsIDB4NDY0NDJjOGMsIDB4ZTUxMmFhMjUsIDB4MzJmMDJhN2QsCisgICAgMHg3MTZmYmNiMywgMHhhNjhkM2NlYiwgMHgwNWRiYmE0MiwgMHhkMjM5M2ExYSwgMHg5ODA3YjE1MSwKKyAgICAweDRmZTUzMTA5LCAweGVjYjNiN2EwLCAweDNiNTEzN2Y4LCAweDlhMTFkODUwLCAweDRkZjM1ODA4LAorICAgIDB4ZWVhNWRlYTEsIDB4Mzk0NzVlZjksIDB4NzM3OWQ1YjIsIDB4YTQ5YjU1ZWEsIDB4MDdjZGQzNDMsCisgICAgMHhkMDJmNTMxYiwgMHg5M2IwYzVkNSwgMHg0NDUyNDU4ZCwgMHhlNzA0YzMyNCwgMHgzMGU2NDM3YywKKyAgICAweDdhZDhjODM3LCAweGFkM2E0ODZmLCAweDBlNmNjZWM2LCAweGQ5OGU0ZTllLCAweDg5NTNlMzVhLAorICAgIDB4NWViMTYzMDIsIDB4ZmRlN2U1YWIsIDB4MmEwNTY1ZjMsIDB4NjAzYmVlYjgsIDB4YjdkOTZlZTAsCisgICAgMHgxNDhmZTg0OSwgMHhjMzZkNjgxMSwgMHg4MGYyZmVkZiwgMHg1NzEwN2U4NywgMHhmNDQ2ZjgyZSwKKyAgICAweDIzYTQ3ODc2LCAweDY5OWFmMzNkLCAweGJlNzg3MzY1LCAweDFkMmVmNWNjLCAweGNhY2M3NTk0LAorICAgIDB4YmM5NWFlNDQsIDB4NmI3NzJlMWMsIDB4YzgyMWE4YjUsIDB4MWZjMzI4ZWQsIDB4NTVmZGEzYTYsCisgICAgMHg4MjFmMjNmZSwgMHgyMTQ5YTU1NywgMHhmNmFiMjUwZiwgMHhiNTM0YjNjMSwgMHg2MmQ2MzM5OSwKKyAgICAweGMxODBiNTMwLCAweDE2NjIzNTY4LCAweDVjNWNiZTIzLCAweDhiYmUzZTdiLCAweDI4ZThiOGQyLAorICAgIDB4ZmYwYTM4OGEsIDB4YWZkNzk1NGUsIDB4NzgzNTE1MTYsIDB4ZGI2MzkzYmYsIDB4MGM4MTEzZTcsCisgICAgMHg0NmJmOThhYywgMHg5MTVkMThmNCwgMHgzMjBiOWU1ZCwgMHhlNWU5MWUwNSwgMHhhNjc2ODhjYiwKKyAgICAweDcxOTQwODkzLCAweGQyYzI4ZTNhLCAweDA1MjAwZTYyLCAweDRmMWU4NTI5LCAweDk4ZmMwNTcxLAorICAgIDB4M2JhYTgzZDgsIDB4ZWM0ODAzODAsIDB4ZDcxOTM0NzgsIDB4MDBmYmI0MjAsIDB4YTNhZDMyODksCisgICAgMHg3NDRmYjJkMSwgMHgzZTcxMzk5YSwgMHhlOTkzYjljMiwgMHg0YWM1M2Y2YiwgMHg5ZDI3YmYzMywKKyAgICAweGRlYjgyOWZkLCAweDA5NWFhOWE1LCAweGFhMGMyZjBjLCAweDdkZWVhZjU0LCAweDM3ZDAyNDFmLAorICAgIDB4ZTAzMmE0NDcsIDB4NDM2NDIyZWUsIDB4OTQ4NmEyYjYsIDB4YzQ1YjBmNzIsIDB4MTNiOThmMmEsCisgICAgMHhiMGVmMDk4MywgMHg2NzBkODlkYiwgMHgyZDMzMDI5MCwgMHhmYWQxODJjOCwgMHg1OTg3MDQ2MSwKKyAgICAweDhlNjU4NDM5LCAweGNkZmExMmY3LCAweDFhMTg5MmFmLCAweGI5NGUxNDA2LCAweDZlYWM5NDVlLAorICAgIDB4MjQ5MjFmMTUsIDB4ZjM3MDlmNGQsIDB4NTAyNjE5ZTQsIDB4ODdjNDk5YmMsIDB4ZjE5ZDQyNmMsCisgICAgMHgyNjdmYzIzNCwgMHg4NTI5NDQ5ZCwgMHg1MmNiYzRjNSwgMHgxOGY1NGY4ZSwgMHhjZjE3Y2ZkNiwKKyAgICAweDZjNDE0OTdmLCAweGJiYTNjOTI3LCAweGY4M2M1ZmU5LCAweDJmZGVkZmIxLCAweDhjODg1OTE4LAorICAgIDB4NWI2YWQ5NDAsIDB4MTE1NDUyMGIsIDB4YzZiNmQyNTMsIDB4NjVlMDU0ZmEsIDB4YjIwMmQ0YTIsCisgICAgMHhlMmRmNzk2NiwgMHgzNTNkZjkzZSwgMHg5NjZiN2Y5NywgMHg0MTg5ZmZjZiwgMHgwYmI3NzQ4NCwKKyAgICAweGRjNTVmNGRjLCAweDdmMDM3Mjc1LCAweGE4ZTFmMjJkLCAweGViN2U2NGUzLCAweDNjOWNlNGJiLAorICAgIDB4OWZjYTYyMTIsIDB4NDgyOGUyNGEsIDB4MDIxNjY5MDEsIDB4ZDVmNGU5NTksIDB4NzZhMjZmZjAsCisgICAgMHhhMTQwZWZhOH0sCisgICB7MHgwMDAwMDAwMCwgMHhlZjUyYjZlMSwgMHgwNWQ0NmI4MywgMHhlYTg2ZGQ2MiwgMHgwYmE4ZDcwNiwKKyAgICAweGU0ZmE2MWU3LCAweDBlN2NiYzg1LCAweGUxMmUwYTY0LCAweDE3NTFhZTBjLCAweGY4MDMxOGVkLAorICAgIDB4MTI4NWM1OGYsIDB4ZmRkNzczNmUsIDB4MWNmOTc5MGEsIDB4ZjNhYmNmZWIsIDB4MTkyZDEyODksCisgICAgMHhmNjdmYTQ2OCwgMHgyZWEzNWMxOCwgMHhjMWYxZWFmOSwgMHgyYjc3Mzc5YiwgMHhjNDI1ODE3YSwKKyAgICAweDI1MGI4YjFlLCAweGNhNTkzZGZmLCAweDIwZGZlMDlkLCAweGNmOGQ1NjdjLCAweDM5ZjJmMjE0LAorICAgIDB4ZDZhMDQ0ZjUsIDB4M2MyNjk5OTcsIDB4ZDM3NDJmNzYsIDB4MzI1YTI1MTIsIDB4ZGQwODkzZjMsCisgICAgMHgzNzhlNGU5MSwgMHhkOGRjZjg3MCwgMHg1ZDQ2YjgzMCwgMHhiMjE0MGVkMSwgMHg1ODkyZDNiMywKKyAgICAweGI3YzA2NTUyLCAweDU2ZWU2ZjM2LCAweGI5YmNkOWQ3LCAweDUzM2EwNGI1LCAweGJjNjhiMjU0LAorICAgIDB4NGExNzE2M2MsIDB4YTU0NWEwZGQsIDB4NGZjMzdkYmYsIDB4YTA5MWNiNWUsIDB4NDFiZmMxM2EsCisgICAgMHhhZWVkNzdkYiwgMHg0NDZiYWFiOSwgMHhhYjM5MWM1OCwgMHg3M2U1ZTQyOCwgMHg5Y2I3NTJjOSwKKyAgICAweDc2MzE4ZmFiLCAweDk5NjMzOTRhLCAweDc4NGQzMzJlLCAweDk3MWY4NWNmLCAweDdkOTk1OGFkLAorICAgIDB4OTJjYmVlNGMsIDB4NjRiNDRhMjQsIDB4OGJlNmZjYzUsIDB4NjE2MDIxYTcsIDB4OGUzMjk3NDYsCisgICAgMHg2ZjFjOWQyMiwgMHg4MDRlMmJjMywgMHg2YWM4ZjZhMSwgMHg4NTlhNDA0MCwgMHhiYThkNzA2MCwKKyAgICAweDU1ZGZjNjgxLCAweGJmNTkxYmUzLCAweDUwMGJhZDAyLCAweGIxMjVhNzY2LCAweDVlNzcxMTg3LAorICAgIDB4YjRmMWNjZTUsIDB4NWJhMzdhMDQsIDB4YWRkY2RlNmMsIDB4NDI4ZTY4OGQsIDB4YTgwOGI1ZWYsCisgICAgMHg0NzVhMDMwZSwgMHhhNjc0MDk2YSwgMHg0OTI2YmY4YiwgMHhhM2EwNjJlOSwgMHg0Y2YyZDQwOCwKKyAgICAweDk0MmUyYzc4LCAweDdiN2M5YTk5LCAweDkxZmE0N2ZiLCAweDdlYThmMTFhLCAweDlmODZmYjdlLAorICAgIDB4NzBkNDRkOWYsIDB4OWE1MjkwZmQsIDB4NzUwMDI2MWMsIDB4ODM3ZjgyNzQsIDB4NmMyZDM0OTUsCisgICAgMHg4NmFiZTlmNywgMHg2OWY5NWYxNiwgMHg4OGQ3NTU3MiwgMHg2Nzg1ZTM5MywgMHg4ZDAzM2VmMSwKKyAgICAweDYyNTE4ODEwLCAweGU3Y2JjODUwLCAweDA4OTk3ZWIxLCAweGUyMWZhM2QzLCAweDBkNGQxNTMyLAorICAgIDB4ZWM2MzFmNTYsIDB4MDMzMWE5YjcsIDB4ZTliNzc0ZDUsIDB4MDZlNWMyMzQsIDB4ZjA5YTY2NWMsCisgICAgMHgxZmM4ZDBiZCwgMHhmNTRlMGRkZiwgMHgxYTFjYmIzZSwgMHhmYjMyYjE1YSwgMHgxNDYwMDdiYiwKKyAgICAweGZlZTZkYWQ5LCAweDExYjQ2YzM4LCAweGM5Njg5NDQ4LCAweDI2M2EyMmE5LCAweGNjYmNmZmNiLAorICAgIDB4MjNlZTQ5MmEsIDB4YzJjMDQzNGUsIDB4MmQ5MmY1YWYsIDB4YzcxNDI4Y2QsIDB4Mjg0NjllMmMsCisgICAgMHhkZTM5M2E0NCwgMHgzMTZiOGNhNSwgMHhkYmVkNTFjNywgMHgzNGJmZTcyNiwgMHhkNTkxZWQ0MiwKKyAgICAweDNhYzM1YmEzLCAweGQwNDU4NmMxLCAweDNmMTczMDIwLCAweGFlNmJlNjgxLCAweDQxMzk1MDYwLAorICAgIDB4YWJiZjhkMDIsIDB4NDRlZDNiZTMsIDB4YTVjMzMxODcsIDB4NGE5MTg3NjYsIDB4YTAxNzVhMDQsCisgICAgMHg0ZjQ1ZWNlNSwgMHhiOTNhNDg4ZCwgMHg1NjY4ZmU2YywgMHhiY2VlMjMwZSwgMHg1M2JjOTVlZiwKKyAgICAweGIyOTI5ZjhiLCAweDVkYzAyOTZhLCAweGI3NDZmNDA4LCAweDU4MTQ0MmU5LCAweDgwYzhiYTk5LAorICAgIDB4NmY5YTBjNzgsIDB4ODUxY2QxMWEsIDB4NmE0ZTY3ZmIsIDB4OGI2MDZkOWYsIDB4NjQzMmRiN2UsCisgICAgMHg4ZWI0MDYxYywgMHg2MWU2YjBmZCwgMHg5Nzk5MTQ5NSwgMHg3OGNiYTI3NCwgMHg5MjRkN2YxNiwKKyAgICAweDdkMWZjOWY3LCAweDljMzFjMzkzLCAweDczNjM3NTcyLCAweDk5ZTVhODEwLCAweDc2YjcxZWYxLAorICAgIDB4ZjMyZDVlYjEsIDB4MWM3ZmU4NTAsIDB4ZjZmOTM1MzIsIDB4MTlhYjgzZDMsIDB4Zjg4NTg5YjcsCisgICAgMHgxN2Q3M2Y1NiwgMHhmZDUxZTIzNCwgMHgxMjAzNTRkNSwgMHhlNDdjZjBiZCwgMHgwYjJlNDY1YywKKyAgICAweGUxYTg5YjNlLCAweDBlZmEyZGRmLCAweGVmZDQyN2JiLCAweDAwODY5MTVhLCAweGVhMDA0YzM4LAorICAgIDB4MDU1MmZhZDksIDB4ZGQ4ZTAyYTksIDB4MzJkY2I0NDgsIDB4ZDg1YTY5MmEsIDB4MzcwOGRmY2IsCisgICAgMHhkNjI2ZDVhZiwgMHgzOTc0NjM0ZSwgMHhkM2YyYmUyYywgMHgzY2EwMDhjZCwgMHhjYWRmYWNhNSwKKyAgICAweDI1OGQxYTQ0LCAweGNmMGJjNzI2LCAweDIwNTk3MWM3LCAweGMxNzc3YmEzLCAweDJlMjVjZDQyLAorICAgIDB4YzRhMzEwMjAsIDB4MmJmMWE2YzEsIDB4MTRlNjk2ZTEsIDB4ZmJiNDIwMDAsIDB4MTEzMmZkNjIsCisgICAgMHhmZTYwNGI4MywgMHgxZjRlNDFlNywgMHhmMDFjZjcwNiwgMHgxYTlhMmE2NCwgMHhmNWM4OWM4NSwKKyAgICAweDAzYjczOGVkLCAweGVjZTU4ZTBjLCAweDA2NjM1MzZlLCAweGU5MzFlNThmLCAweDA4MWZlZmViLAorICAgIDB4ZTc0ZDU5MGEsIDB4MGRjYjg0NjgsIDB4ZTI5OTMyODksIDB4M2E0NWNhZjksIDB4ZDUxNzdjMTgsCisgICAgMHgzZjkxYTE3YSwgMHhkMGMzMTc5YiwgMHgzMWVkMWRmZiwgMHhkZWJmYWIxZSwgMHgzNDM5NzY3YywKKyAgICAweGRiNmJjMDlkLCAweDJkMTQ2NGY1LCAweGMyNDZkMjE0LCAweDI4YzAwZjc2LCAweGM3OTJiOTk3LAorICAgIDB4MjZiY2IzZjMsIDB4YzllZTA1MTIsIDB4MjM2OGQ4NzAsIDB4Y2MzYTZlOTEsIDB4NDlhMDJlZDEsCisgICAgMHhhNmYyOTgzMCwgMHg0Yzc0NDU1MiwgMHhhMzI2ZjNiMywgMHg0MjA4ZjlkNywgMHhhZDVhNGYzNiwKKyAgICAweDQ3ZGM5MjU0LCAweGE4OGUyNGI1LCAweDVlZjE4MGRkLCAweGIxYTMzNjNjLCAweDViMjVlYjVlLAorICAgIDB4YjQ3NzVkYmYsIDB4NTU1OTU3ZGIsIDB4YmEwYmUxM2EsIDB4NTA4ZDNjNTgsIDB4YmZkZjhhYjksCisgICAgMHg2NzAzNzJjOSwgMHg4ODUxYzQyOCwgMHg2MmQ3MTk0YSwgMHg4ZDg1YWZhYiwgMHg2Y2FiYTVjZiwKKyAgICAweDgzZjkxMzJlLCAweDY5N2ZjZTRjLCAweDg2MmQ3OGFkLCAweDcwNTJkY2M1LCAweDlmMDA2YTI0LAorICAgIDB4NzU4NmI3NDYsIDB4OWFkNDAxYTcsIDB4N2JmYTBiYzMsIDB4OTRhOGJkMjIsIDB4N2UyZTYwNDAsCisgICAgMHg5MTdjZDZhMX0sCisgICB7MHgwMDAwMDAwMCwgMHg4N2E2Y2I0MywgMHhkNDNjOTBjNywgMHg1MzlhNWI4NCwgMHg3MzA4MjdjZiwKKyAgICAweGY0YWVlYzhjLCAweGE3MzRiNzA4LCAweDIwOTI3YzRiLCAweGU2MTA0ZjllLCAweDYxYjY4NGRkLAorICAgIDB4MzIyY2RmNTksIDB4YjU4YTE0MWEsIDB4OTUxODY4NTEsIDB4MTJiZWEzMTIsIDB4NDEyNGY4OTYsCisgICAgMHhjNjgyMzNkNSwgMHgxNzUxOTk3ZCwgMHg5MGY3NTIzZSwgMHhjMzZkMDliYSwgMHg0NGNiYzJmOSwKKyAgICAweDY0NTliZWIyLCAweGUzZmY3NWYxLCAweGIwNjUyZTc1LCAweDM3YzNlNTM2LCAweGYxNDFkNmUzLAorICAgIDB4NzZlNzFkYTAsIDB4MjU3ZDQ2MjQsIDB4YTJkYjhkNjcsIDB4ODI0OWYxMmMsIDB4MDVlZjNhNmYsCisgICAgMHg1Njc1NjFlYiwgMHhkMWQzYWFhOCwgMHgyZWEzMzJmYSwgMHhhOTA1ZjliOSwgMHhmYTlmYTIzZCwKKyAgICAweDdkMzk2OTdlLCAweDVkYWIxNTM1LCAweGRhMGRkZTc2LCAweDg5OTc4NWYyLCAweDBlMzE0ZWIxLAorICAgIDB4YzhiMzdkNjQsIDB4NGYxNWI2MjcsIDB4MWM4ZmVkYTMsIDB4OWIyOTI2ZTAsIDB4YmJiYjVhYWIsCisgICAgMHgzYzFkOTFlOCwgMHg2Zjg3Y2E2YywgMHhlODIxMDEyZiwgMHgzOWYyYWI4NywgMHhiZTU0NjBjNCwKKyAgICAweGVkY2UzYjQwLCAweDZhNjhmMDAzLCAweDRhZmE4YzQ4LCAweGNkNWM0NzBiLCAweDllYzYxYzhmLAorICAgIDB4MTk2MGQ3Y2MsIDB4ZGZlMmU0MTksIDB4NTg0NDJmNWEsIDB4MGJkZTc0ZGUsIDB4OGM3OGJmOWQsCisgICAgMHhhY2VhYzNkNiwgMHgyYjRjMDg5NSwgMHg3OGQ2NTMxMSwgMHhmZjcwOTg1MiwgMHg1ZDQ2NjVmNCwKKyAgICAweGRhZTBhZWI3LCAweDg5N2FmNTMzLCAweDBlZGMzZTcwLCAweDJlNGU0MjNiLCAweGE5ZTg4OTc4LAorICAgIDB4ZmE3MmQyZmMsIDB4N2RkNDE5YmYsIDB4YmI1NjJhNmEsIDB4M2NmMGUxMjksIDB4NmY2YWJhYWQsCisgICAgMHhlOGNjNzFlZSwgMHhjODVlMGRhNSwgMHg0ZmY4YzZlNiwgMHgxYzYyOWQ2MiwgMHg5YmM0NTYyMSwKKyAgICAweDRhMTdmYzg5LCAweGNkYjEzN2NhLCAweDllMmI2YzRlLCAweDE5OGRhNzBkLCAweDM5MWZkYjQ2LAorICAgIDB4YmViOTEwMDUsIDB4ZWQyMzRiODEsIDB4NmE4NTgwYzIsIDB4YWMwN2IzMTcsIDB4MmJhMTc4NTQsCisgICAgMHg3ODNiMjNkMCwgMHhmZjlkZTg5MywgMHhkZjBmOTRkOCwgMHg1OGE5NWY5YiwgMHgwYjMzMDQxZiwKKyAgICAweDhjOTVjZjVjLCAweDczZTU1NzBlLCAweGY0NDM5YzRkLCAweGE3ZDljN2M5LCAweDIwN2YwYzhhLAorICAgIDB4MDBlZDcwYzEsIDB4ODc0YmJiODIsIDB4ZDRkMWUwMDYsIDB4NTM3NzJiNDUsIDB4OTVmNTE4OTAsCisgICAgMHgxMjUzZDNkMywgMHg0MWM5ODg1NywgMHhjNjZmNDMxNCwgMHhlNmZkM2Y1ZiwgMHg2MTViZjQxYywKKyAgICAweDMyYzFhZjk4LCAweGI1Njc2NGRiLCAweDY0YjRjZTczLCAweGUzMTIwNTMwLCAweGIwODg1ZWI0LAorICAgIDB4MzcyZTk1ZjcsIDB4MTdiY2U5YmMsIDB4OTAxYTIyZmYsIDB4YzM4MDc5N2IsIDB4NDQyNmIyMzgsCisgICAgMHg4MmE0ODFlZCwgMHgwNTAyNGFhZSwgMHg1Njk4MTEyYSwgMHhkMTNlZGE2OSwgMHhmMWFjYTYyMiwKKyAgICAweDc2MGE2ZDYxLCAweDI1OTAzNmU1LCAweGEyMzZmZGE2LCAweGJhOGNjYmU4LCAweDNkMmEwMGFiLAorICAgIDB4NmViMDViMmYsIDB4ZTkxNjkwNmMsIDB4Yzk4NGVjMjcsIDB4NGUyMjI3NjQsIDB4MWRiODdjZTAsCisgICAgMHg5YTFlYjdhMywgMHg1YzljODQ3NiwgMHhkYjNhNGYzNSwgMHg4OGEwMTRiMSwgMHgwZjA2ZGZmMiwKKyAgICAweDJmOTRhM2I5LCAweGE4MzI2OGZhLCAweGZiYTgzMzdlLCAweDdjMGVmODNkLCAweGFkZGQ1Mjk1LAorICAgIDB4MmE3Yjk5ZDYsIDB4NzllMWMyNTIsIDB4ZmU0NzA5MTEsIDB4ZGVkNTc1NWEsIDB4NTk3M2JlMTksCisgICAgMHgwYWU5ZTU5ZCwgMHg4ZDRmMmVkZSwgMHg0YmNkMWQwYiwgMHhjYzZiZDY0OCwgMHg5ZmYxOGRjYywKKyAgICAweDE4NTc0NjhmLCAweDM4YzUzYWM0LCAweGJmNjNmMTg3LCAweGVjZjlhYTAzLCAweDZiNWY2MTQwLAorICAgIDB4OTQyZmY5MTIsIDB4MTM4OTMyNTEsIDB4NDAxMzY5ZDUsIDB4YzdiNWEyOTYsIDB4ZTcyN2RlZGQsCisgICAgMHg2MDgxMTU5ZSwgMHgzMzFiNGUxYSwgMHhiNGJkODU1OSwgMHg3MjNmYjY4YywgMHhmNTk5N2RjZiwKKyAgICAweGE2MDMyNjRiLCAweDIxYTVlZDA4LCAweDAxMzc5MTQzLCAweDg2OTE1YTAwLCAweGQ1MGIwMTg0LAorICAgIDB4NTJhZGNhYzcsIDB4ODM3ZTYwNmYsIDB4MDRkOGFiMmMsIDB4NTc0MmYwYTgsIDB4ZDBlNDNiZWIsCisgICAgMHhmMDc2NDdhMCwgMHg3N2QwOGNlMywgMHgyNDRhZDc2NywgMHhhM2VjMWMyNCwgMHg2NTZlMmZmMSwKKyAgICAweGUyYzhlNGIyLCAweGIxNTJiZjM2LCAweDM2ZjQ3NDc1LCAweDE2NjYwODNlLCAweDkxYzBjMzdkLAorICAgIDB4YzI1YTk4ZjksIDB4NDVmYzUzYmEsIDB4ZTdjYWFlMWMsIDB4NjA2YzY1NWYsIDB4MzNmNjNlZGIsCisgICAgMHhiNDUwZjU5OCwgMHg5NGMyODlkMywgMHgxMzY0NDI5MCwgMHg0MGZlMTkxNCwgMHhjNzU4ZDI1NywKKyAgICAweDAxZGFlMTgyLCAweDg2N2MyYWMxLCAweGQ1ZTY3MTQ1LCAweDUyNDBiYTA2LCAweDcyZDJjNjRkLAorICAgIDB4ZjU3NDBkMGUsIDB4YTZlZTU2OGEsIDB4MjE0ODlkYzksIDB4ZjA5YjM3NjEsIDB4NzczZGZjMjIsCisgICAgMHgyNGE3YTdhNiwgMHhhMzAxNmNlNSwgMHg4MzkzMTBhZSwgMHgwNDM1ZGJlZCwgMHg1N2FmODA2OSwKKyAgICAweGQwMDk0YjJhLCAweDE2OGI3OGZmLCAweDkxMmRiM2JjLCAweGMyYjdlODM4LCAweDQ1MTEyMzdiLAorICAgIDB4NjU4MzVmMzAsIDB4ZTIyNTk0NzMsIDB4YjFiZmNmZjcsIDB4MzYxOTA0YjQsIDB4Yzk2OTljZTYsCisgICAgMHg0ZWNmNTdhNSwgMHgxZDU1MGMyMSwgMHg5YWYzYzc2MiwgMHhiYTYxYmIyOSwgMHgzZGM3NzA2YSwKKyAgICAweDZlNWQyYmVlLCAweGU5ZmJlMGFkLCAweDJmNzlkMzc4LCAweGE4ZGYxODNiLCAweGZiNDU0M2JmLAorICAgIDB4N2NlMzg4ZmMsIDB4NWM3MWY0YjcsIDB4ZGJkNzNmZjQsIDB4ODg0ZDY0NzAsIDB4MGZlYmFmMzMsCisgICAgMHhkZTM4MDU5YiwgMHg1OTllY2VkOCwgMHgwYTA0OTU1YywgMHg4ZGEyNWUxZiwgMHhhZDMwMjI1NCwKKyAgICAweDJhOTZlOTE3LCAweDc5MGNiMjkzLCAweGZlYWE3OWQwLCAweDM4Mjg0YTA1LCAweGJmOGU4MTQ2LAorICAgIDB4ZWMxNGRhYzIsIDB4NmJiMjExODEsIDB4NGIyMDZkY2EsIDB4Y2M4NmE2ODksIDB4OWYxY2ZkMGQsCisgICAgMHgxOGJhMzY0ZX19OworCitsb2NhbCBjb25zdCB6X3dvcmRfdCBGQVIgY3JjX2JyYWlkX2JpZ190YWJsZVtdWzI1Nl0gPSB7CisgICB7MHgwMDAwMDAwMCwgMHg0M2NiYTY4NywgMHhjNzkwM2NkNCwgMHg4NDViOWE1MywgMHhjZjI3MDg3MywKKyAgICAweDhjZWNhZWY0LCAweDA4YjczNGE3LCAweDRiN2M5MjIwLCAweDllNGYxMGU2LCAweGRkODRiNjYxLAorICAgIDB4NTlkZjJjMzIsIDB4MWExNDhhYjUsIDB4NTE2ODE4OTUsIDB4MTJhM2JlMTIsIDB4OTZmODI0NDEsCisgICAgMHhkNTMzODJjNiwgMHg3ZDk5NTExNywgMHgzZTUyZjc5MCwgMHhiYTA5NmRjMywgMHhmOWMyY2I0NCwKKyAgICAweGIyYmU1OTY0LCAweGYxNzVmZmUzLCAweDc1MmU2NWIwLCAweDM2ZTVjMzM3LCAweGUzZDY0MWYxLAorICAgIDB4YTAxZGU3NzYsIDB4MjQ0NjdkMjUsIDB4Njc4ZGRiYTIsIDB4MmNmMTQ5ODIsIDB4NmYzYWVmMDUsCisgICAgMHhlYjYxNzU1NiwgMHhhOGFhZDNkMSwgMHhmYTMyYTMyZSwgMHhiOWY5MDVhOSwgMHgzZGEyOWZmYSwKKyAgICAweDdlNjkzOTdkLCAweDM1MTVhYjVkLCAweDc2ZGUwZGRhLCAweGYyODU5Nzg5LCAweGIxNGUzMTBlLAorICAgIDB4NjQ3ZGIzYzgsIDB4MjdiNjE1NGYsIDB4YTNlZDhmMWMsIDB4ZTAyNjI5OWIsIDB4YWI1YWJiYmIsCisgICAgMHhlODkxMWQzYywgMHg2Y2NhODc2ZiwgMHgyZjAxMjFlOCwgMHg4N2FiZjIzOSwgMHhjNDYwNTRiZSwKKyAgICAweDQwM2JjZWVkLCAweDAzZjA2ODZhLCAweDQ4OGNmYTRhLCAweDBiNDc1Y2NkLCAweDhmMWNjNjllLAorICAgIDB4Y2NkNzYwMTksIDB4MTllNGUyZGYsIDB4NWEyZjQ0NTgsIDB4ZGU3NGRlMGIsIDB4OWRiZjc4OGMsCisgICAgMHhkNmMzZWFhYywgMHg5NTA4NGMyYiwgMHgxMTUzZDY3OCwgMHg1Mjk4NzBmZiwgMHhmNDY1NDY1ZCwKKyAgICAweGI3YWVlMGRhLCAweDMzZjU3YTg5LCAweDcwM2VkYzBlLCAweDNiNDI0ZTJlLCAweDc4ODllOGE5LAorICAgIDB4ZmNkMjcyZmEsIDB4YmYxOWQ0N2QsIDB4NmEyYTU2YmIsIDB4MjllMWYwM2MsIDB4YWRiYTZhNmYsCisgICAgMHhlZTcxY2NlOCwgMHhhNTBkNWVjOCwgMHhlNmM2Zjg0ZiwgMHg2MjlkNjIxYywgMHgyMTU2YzQ5YiwKKyAgICAweDg5ZmMxNzRhLCAweGNhMzdiMWNkLCAweDRlNmMyYjllLCAweDBkYTc4ZDE5LCAweDQ2ZGIxZjM5LAorICAgIDB4MDUxMGI5YmUsIDB4ODE0YjIzZWQsIDB4YzI4MDg1NmEsIDB4MTdiMzA3YWMsIDB4NTQ3OGExMmIsCisgICAgMHhkMDIzM2I3OCwgMHg5M2U4OWRmZiwgMHhkODk0MGZkZiwgMHg5YjVmYTk1OCwgMHgxZjA0MzMwYiwKKyAgICAweDVjY2Y5NThjLCAweDBlNTdlNTczLCAweDRkOWM0M2Y0LCAweGM5YzdkOWE3LCAweDhhMGM3ZjIwLAorICAgIDB4YzE3MGVkMDAsIDB4ODJiYjRiODcsIDB4MDZlMGQxZDQsIDB4NDUyYjc3NTMsIDB4OTAxOGY1OTUsCisgICAgMHhkM2QzNTMxMiwgMHg1Nzg4Yzk0MSwgMHgxNDQzNmZjNiwgMHg1ZjNmZmRlNiwgMHgxY2Y0NWI2MSwKKyAgICAweDk4YWZjMTMyLCAweGRiNjQ2N2I1LCAweDczY2ViNDY0LCAweDMwMDUxMmUzLCAweGI0NWU4OGIwLAorICAgIDB4Zjc5NTJlMzcsIDB4YmNlOWJjMTcsIDB4ZmYyMjFhOTAsIDB4N2I3OTgwYzMsIDB4MzhiMjI2NDQsCisgICAgMHhlZDgxYTQ4MiwgMHhhZTRhMDIwNSwgMHgyYTExOTg1NiwgMHg2OWRhM2VkMSwgMHgyMmE2YWNmMSwKKyAgICAweDYxNmQwYTc2LCAweGU1MzY5MDI1LCAweGE2ZmQzNmEyLCAweGU4Y2I4Y2JhLCAweGFiMDAyYTNkLAorICAgIDB4MmY1YmIwNmUsIDB4NmM5MDE2ZTksIDB4MjdlYzg0YzksIDB4NjQyNzIyNGUsIDB4ZTA3Y2I4MWQsCisgICAgMHhhM2I3MWU5YSwgMHg3Njg0OWM1YywgMHgzNTRmM2FkYiwgMHhiMTE0YTA4OCwgMHhmMmRmMDYwZiwKKyAgICAweGI5YTM5NDJmLCAweGZhNjgzMmE4LCAweDdlMzNhOGZiLCAweDNkZjgwZTdjLCAweDk1NTJkZGFkLAorICAgIDB4ZDY5OTdiMmEsIDB4NTJjMmUxNzksIDB4MTEwOTQ3ZmUsIDB4NWE3NWQ1ZGUsIDB4MTliZTczNTksCisgICAgMHg5ZGU1ZTkwYSwgMHhkZTJlNGY4ZCwgMHgwYjFkY2Q0YiwgMHg0OGQ2NmJjYywgMHhjYzhkZjE5ZiwKKyAgICAweDhmNDY1NzE4LCAweGM0M2FjNTM4LCAweDg3ZjE2M2JmLCAweDAzYWFmOWVjLCAweDQwNjE1ZjZiLAorICAgIDB4MTJmOTJmOTQsIDB4NTEzMjg5MTMsIDB4ZDU2OTEzNDAsIDB4OTZhMmI1YzcsIDB4ZGRkZTI3ZTcsCisgICAgMHg5ZTE1ODE2MCwgMHgxYTRlMWIzMywgMHg1OTg1YmRiNCwgMHg4Y2I2M2Y3MiwgMHhjZjdkOTlmNSwKKyAgICAweDRiMjYwM2E2LCAweDA4ZWRhNTIxLCAweDQzOTEzNzAxLCAweDAwNWE5MTg2LCAweDg0MDEwYmQ1LAorICAgIDB4YzdjYWFkNTIsIDB4NmY2MDdlODMsIDB4MmNhYmQ4MDQsIDB4YThmMDQyNTcsIDB4ZWIzYmU0ZDAsCisgICAgMHhhMDQ3NzZmMCwgMHhlMzhjZDA3NywgMHg2N2Q3NGEyNCwgMHgyNDFjZWNhMywgMHhmMTJmNmU2NSwKKyAgICAweGIyZTRjOGUyLCAweDM2YmY1MmIxLCAweDc1NzRmNDM2LCAweDNlMDg2NjE2LCAweDdkYzNjMDkxLAorICAgIDB4Zjk5ODVhYzIsIDB4YmE1M2ZjNDUsIDB4MWNhZWNhZTcsIDB4NWY2NTZjNjAsIDB4ZGIzZWY2MzMsCisgICAgMHg5OGY1NTBiNCwgMHhkMzg5YzI5NCwgMHg5MDQyNjQxMywgMHgxNDE5ZmU0MCwgMHg1N2QyNThjNywKKyAgICAweDgyZTFkYTAxLCAweGMxMmE3Yzg2LCAweDQ1NzFlNmQ1LCAweDA2YmE0MDUyLCAweDRkYzZkMjcyLAorICAgIDB4MGUwZDc0ZjUsIDB4OGE1NmVlYTYsIDB4Yzk5ZDQ4MjEsIDB4NjEzNzliZjAsIDB4MjJmYzNkNzcsCisgICAgMHhhNmE3YTcyNCwgMHhlNTZjMDFhMywgMHhhZTEwOTM4MywgMHhlZGRiMzUwNCwgMHg2OTgwYWY1NywKKyAgICAweDJhNGIwOWQwLCAweGZmNzg4YjE2LCAweGJjYjMyZDkxLCAweDM4ZThiN2MyLCAweDdiMjMxMTQ1LAorICAgIDB4MzA1ZjgzNjUsIDB4NzM5NDI1ZTIsIDB4ZjdjZmJmYjEsIDB4YjQwNDE5MzYsIDB4ZTY5YzY5YzksCisgICAgMHhhNTU3Y2Y0ZSwgMHgyMTBjNTUxZCwgMHg2MmM3ZjM5YSwgMHgyOWJiNjFiYSwgMHg2YTcwYzczZCwKKyAgICAweGVlMmI1ZDZlLCAweGFkZTBmYmU5LCAweDc4ZDM3OTJmLCAweDNiMThkZmE4LCAweGJmNDM0NWZiLAorICAgIDB4ZmM4OGUzN2MsIDB4YjdmNDcxNWMsIDB4ZjQzZmQ3ZGIsIDB4NzA2NDRkODgsIDB4MzNhZmViMGYsCisgICAgMHg5YjA1MzhkZSwgMHhkOGNlOWU1OSwgMHg1Yzk1MDQwYSwgMHgxZjVlYTI4ZCwgMHg1NDIyMzBhZCwKKyAgICAweDE3ZTk5NjJhLCAweDkzYjIwYzc5LCAweGQwNzlhYWZlLCAweDA1NGEyODM4LCAweDQ2ODE4ZWJmLAorICAgIDB4YzJkYTE0ZWMsIDB4ODExMWIyNmIsIDB4Y2E2ZDIwNGIsIDB4ODlhNjg2Y2MsIDB4MGRmZDFjOWYsCisgICAgMHg0ZTM2YmExOH0sCisgICB7MHgwMDAwMDAwMCwgMHhlMWI2NTJlZiwgMHg4MzZiZDQwNSwgMHg2MmRkODZlYSwgMHgwNmQ3YTgwYiwKKyAgICAweGU3NjFmYWU0LCAweDg1YmM3YzBlLCAweDY0MGEyZWUxLCAweDBjYWU1MTE3LCAweGVkMTgwM2Y4LAorICAgIDB4OGZjNTg1MTIsIDB4NmU3M2Q3ZmQsIDB4MGE3OWY5MWMsIDB4ZWJjZmFiZjMsIDB4ODkxMjJkMTksCisgICAgMHg2OGE0N2ZmNiwgMHgxODVjYTMyZSwgMHhmOWVhZjFjMSwgMHg5YjM3NzcyYiwgMHg3YTgxMjVjNCwKKyAgICAweDFlOGIwYjI1LCAweGZmM2Q1OWNhLCAweDlkZTBkZjIwLCAweDdjNTY4ZGNmLCAweDE0ZjJmMjM5LAorICAgIDB4ZjU0NGEwZDYsIDB4OTc5OTI2M2MsIDB4NzYyZjc0ZDMsIDB4MTIyNTVhMzIsIDB4ZjM5MzA4ZGQsCisgICAgMHg5MTRlOGUzNywgMHg3MGY4ZGNkOCwgMHgzMGI4NDY1ZCwgMHhkMTBlMTRiMiwgMHhiM2QzOTI1OCwKKyAgICAweDUyNjVjMGI3LCAweDM2NmZlZTU2LCAweGQ3ZDliY2I5LCAweGI1MDQzYTUzLCAweDU0YjI2OGJjLAorICAgIDB4M2MxNjE3NGEsIDB4ZGRhMDQ1YTUsIDB4YmY3ZGMzNGYsIDB4NWVjYjkxYTAsIDB4M2FjMWJmNDEsCisgICAgMHhkYjc3ZWRhZSwgMHhiOWFhNmI0NCwgMHg1ODFjMzlhYiwgMHgyOGU0ZTU3MywgMHhjOTUyYjc5YywKKyAgICAweGFiOGYzMTc2LCAweDRhMzk2Mzk5LCAweDJlMzM0ZDc4LCAweGNmODUxZjk3LCAweGFkNTg5OTdkLAorICAgIDB4NGNlZWNiOTIsIDB4MjQ0YWI0NjQsIDB4YzVmY2U2OGIsIDB4YTcyMTYwNjEsIDB4NDY5NzMyOGUsCisgICAgMHgyMjlkMWM2ZiwgMHhjMzJiNGU4MCwgMHhhMWY2Yzg2YSwgMHg0MDQwOWE4NSwgMHg2MDcwOGRiYSwKKyAgICAweDgxYzZkZjU1LCAweGUzMWI1OWJmLCAweDAyYWQwYjUwLCAweDY2YTcyNWIxLCAweDg3MTE3NzVlLAorICAgIDB4ZTVjY2YxYjQsIDB4MDQ3YWEzNWIsIDB4NmNkZWRjYWQsIDB4OGQ2ODhlNDIsIDB4ZWZiNTA4YTgsCisgICAgMHgwZTAzNWE0NywgMHg2YTA5NzRhNiwgMHg4YmJmMjY0OSwgMHhlOTYyYTBhMywgMHgwOGQ0ZjI0YywKKyAgICAweDc4MmMyZTk0LCAweDk5OWE3YzdiLCAweGZiNDdmYTkxLCAweDFhZjFhODdlLCAweDdlZmI4NjlmLAorICAgIDB4OWY0ZGQ0NzAsIDB4ZmQ5MDUyOWEsIDB4MWMyNjAwNzUsIDB4NzQ4MjdmODMsIDB4OTUzNDJkNmMsCisgICAgMHhmN2U5YWI4NiwgMHgxNjVmZjk2OSwgMHg3MjU1ZDc4OCwgMHg5M2UzODU2NywgMHhmMTNlMDM4ZCwKKyAgICAweDEwODg1MTYyLCAweDUwYzhjYmU3LCAweGIxN2U5OTA4LCAweGQzYTMxZmUyLCAweDMyMTU0ZDBkLAorICAgIDB4NTYxZjYzZWMsIDB4YjdhOTMxMDMsIDB4ZDU3NGI3ZTksIDB4MzRjMmU1MDYsIDB4NWM2NjlhZjAsCisgICAgMHhiZGQwYzgxZiwgMHhkZjBkNGVmNSwgMHgzZWJiMWMxYSwgMHg1YWIxMzJmYiwgMHhiYjA3NjAxNCwKKyAgICAweGQ5ZGFlNmZlLCAweDM4NmNiNDExLCAweDQ4OTQ2OGM5LCAweGE5MjIzYTI2LCAweGNiZmZiY2NjLAorICAgIDB4MmE0OWVlMjMsIDB4NGU0M2MwYzIsIDB4YWZmNTkyMmQsIDB4Y2QyODE0YzcsIDB4MmM5ZTQ2MjgsCisgICAgMHg0NDNhMzlkZSwgMHhhNThjNmIzMSwgMHhjNzUxZWRkYiwgMHgyNmU3YmYzNCwgMHg0MmVkOTFkNSwKKyAgICAweGEzNWJjMzNhLCAweGMxODY0NWQwLCAweDIwMzAxNzNmLCAweDgxZTY2YmFlLCAweDYwNTAzOTQxLAorICAgIDB4MDI4ZGJmYWIsIDB4ZTMzYmVkNDQsIDB4ODczMWMzYTUsIDB4NjY4NzkxNGEsIDB4MDQ1YTE3YTAsCisgICAgMHhlNWVjNDU0ZiwgMHg4ZDQ4M2FiOSwgMHg2Y2ZlNjg1NiwgMHgwZTIzZWViYywgMHhlZjk1YmM1MywKKyAgICAweDhiOWY5MmIyLCAweDZhMjljMDVkLCAweDA4ZjQ0NmI3LCAweGU5NDIxNDU4LCAweDk5YmFjODgwLAorICAgIDB4NzgwYzlhNmYsIDB4MWFkMTFjODUsIDB4ZmI2NzRlNmEsIDB4OWY2ZDYwOGIsIDB4N2VkYjMyNjQsCisgICAgMHgxYzA2YjQ4ZSwgMHhmZGIwZTY2MSwgMHg5NTE0OTk5NywgMHg3NGEyY2I3OCwgMHgxNjdmNGQ5MiwKKyAgICAweGY3YzkxZjdkLCAweDkzYzMzMTljLCAweDcyNzU2MzczLCAweDEwYThlNTk5LCAweGYxMWViNzc2LAorICAgIDB4YjE1ZTJkZjMsIDB4NTBlODdmMWMsIDB4MzIzNWY5ZjYsIDB4ZDM4M2FiMTksIDB4Yjc4OTg1ZjgsCisgICAgMHg1NjNmZDcxNywgMHgzNGUyNTFmZCwgMHhkNTU0MDMxMiwgMHhiZGYwN2NlNCwgMHg1YzQ2MmUwYiwKKyAgICAweDNlOWJhOGUxLCAweGRmMmRmYTBlLCAweGJiMjdkNGVmLCAweDVhOTE4NjAwLCAweDM4NGMwMGVhLAorICAgIDB4ZDlmYTUyMDUsIDB4YTkwMjhlZGQsIDB4NDhiNGRjMzIsIDB4MmE2OTVhZDgsIDB4Y2JkZjA4MzcsCisgICAgMHhhZmQ1MjZkNiwgMHg0ZTYzNzQzOSwgMHgyY2JlZjJkMywgMHhjZDA4YTAzYywgMHhhNWFjZGZjYSwKKyAgICAweDQ0MWE4ZDI1LCAweDI2YzcwYmNmLCAweGM3NzE1OTIwLCAweGEzN2I3N2MxLCAweDQyY2QyNTJlLAorICAgIDB4MjAxMGEzYzQsIDB4YzFhNmYxMmIsIDB4ZTE5NmU2MTQsIDB4MDAyMGI0ZmIsIDB4NjJmZDMyMTEsCisgICAgMHg4MzRiNjBmZSwgMHhlNzQxNGUxZiwgMHgwNmY3MWNmMCwgMHg2NDJhOWExYSwgMHg4NTljYzhmNSwKKyAgICAweGVkMzhiNzAzLCAweDBjOGVlNWVjLCAweDZlNTM2MzA2LCAweDhmZTUzMWU5LCAweGViZWYxZjA4LAorICAgIDB4MGE1OTRkZTcsIDB4Njg4NGNiMGQsIDB4ODkzMjk5ZTIsIDB4ZjljYTQ1M2EsIDB4MTg3YzE3ZDUsCisgICAgMHg3YWExOTEzZiwgMHg5YjE3YzNkMCwgMHhmZjFkZWQzMSwgMHgxZWFiYmZkZSwgMHg3Yzc2MzkzNCwKKyAgICAweDlkYzA2YmRiLCAweGY1NjQxNDJkLCAweDE0ZDI0NmMyLCAweDc2MGZjMDI4LCAweDk3Yjk5MmM3LAorICAgIDB4ZjNiM2JjMjYsIDB4MTIwNWVlYzksIDB4NzBkODY4MjMsIDB4OTE2ZTNhY2MsIDB4ZDEyZWEwNDksCisgICAgMHgzMDk4ZjJhNiwgMHg1MjQ1NzQ0YywgMHhiM2YzMjZhMywgMHhkN2Y5MDg0MiwgMHgzNjRmNWFhZCwKKyAgICAweDU0OTJkYzQ3LCAweGI1MjQ4ZWE4LCAweGRkODBmMTVlLCAweDNjMzZhM2IxLCAweDVlZWIyNTViLAorICAgIDB4YmY1ZDc3YjQsIDB4ZGI1NzU5NTUsIDB4M2FlMTBiYmEsIDB4NTgzYzhkNTAsIDB4Yjk4YWRmYmYsCisgICAgMHhjOTcyMDM2NywgMHgyOGM0NTE4OCwgMHg0YTE5ZDc2MiwgMHhhYmFmODU4ZCwgMHhjZmE1YWI2YywKKyAgICAweDJlMTNmOTgzLCAweDRjY2U3ZjY5LCAweGFkNzgyZDg2LCAweGM1ZGM1MjcwLCAweDI0NmEwMDlmLAorICAgIDB4NDZiNzg2NzUsIDB4YTcwMWQ0OWEsIDB4YzMwYmZhN2IsIDB4MjJiZGE4OTQsIDB4NDA2MDJlN2UsCisgICAgMHhhMWQ2N2M5MX0sCisgICB7MHgwMDAwMDAwMCwgMHg1ODgwZTJkNywgMHhmMTA2YjQ3NCwgMHhhOTg2NTZhMywgMHhlMjBkNjhlOSwKKyAgICAweGJhOGQ4YTNlLCAweDEzMGJkYzlkLCAweDRiOGIzZTRhLCAweDg1MWRhMTA5LCAweGRkOWQ0M2RlLAorICAgIDB4NzQxYjE1N2QsIDB4MmM5YmY3YWEsIDB4NjcxMGM5ZTAsIDB4M2Y5MDJiMzcsIDB4OTYxNjdkOTQsCisgICAgMHhjZTk2OWY0MywgMHgwYTNiNDIxMywgMHg1MmJiYTBjNCwgMHhmYjNkZjY2NywgMHhhM2JkMTRiMCwKKyAgICAweGU4MzYyYWZhLCAweGIwYjZjODJkLCAweDE5MzA5ZThlLCAweDQxYjA3YzU5LCAweDhmMjZlMzFhLAorICAgIDB4ZDdhNjAxY2QsIDB4N2UyMDU3NmUsIDB4MjZhMGI1YjksIDB4NmQyYjhiZjMsIDB4MzVhYjY5MjQsCisgICAgMHg5YzJkM2Y4NywgMHhjNGFkZGQ1MCwgMHgxNDc2ODQyNiwgMHg0Y2Y2NjZmMSwgMHhlNTcwMzA1MiwKKyAgICAweGJkZjBkMjg1LCAweGY2N2JlY2NmLCAweGFlZmIwZTE4LCAweDA3N2Q1OGJiLCAweDVmZmRiYTZjLAorICAgIDB4OTE2YjI1MmYsIDB4YzllYmM3ZjgsIDB4NjA2ZDkxNWIsIDB4MzhlZDczOGMsIDB4NzM2NjRkYzYsCisgICAgMHgyYmU2YWYxMSwgMHg4MjYwZjliMiwgMHhkYWUwMWI2NSwgMHgxZTRkYzYzNSwgMHg0NmNkMjRlMiwKKyAgICAweGVmNGI3MjQxLCAweGI3Y2I5MDk2LCAweGZjNDBhZWRjLCAweGE0YzA0YzBiLCAweDBkNDYxYWE4LAorICAgIDB4NTVjNmY4N2YsIDB4OWI1MDY3M2MsIDB4YzNkMDg1ZWIsIDB4NmE1NmQzNDgsIDB4MzJkNjMxOWYsCisgICAgMHg3OTVkMGZkNSwgMHgyMWRkZWQwMiwgMHg4ODViYmJhMSwgMHhkMGRiNTk3NiwgMHgyOGVjMDg0ZCwKKyAgICAweDcwNmNlYTlhLCAweGQ5ZWFiYzM5LCAweDgxNmE1ZWVlLCAweGNhZTE2MGE0LCAweDkyNjE4MjczLAorICAgIDB4M2JlN2Q0ZDAsIDB4NjM2NzM2MDcsIDB4YWRmMWE5NDQsIDB4ZjU3MTRiOTMsIDB4NWNmNzFkMzAsCisgICAgMHgwNDc3ZmZlNywgMHg0ZmZjYzFhZCwgMHgxNzdjMjM3YSwgMHhiZWZhNzVkOSwgMHhlNjdhOTcwZSwKKyAgICAweDIyZDc0YTVlLCAweDdhNTdhODg5LCAweGQzZDFmZTJhLCAweDhiNTExY2ZkLCAweGMwZGEyMmI3LAorICAgIDB4OTg1YWMwNjAsIDB4MzFkYzk2YzMsIDB4Njk1Yzc0MTQsIDB4YTdjYWViNTcsIDB4ZmY0YTA5ODAsCisgICAgMHg1NmNjNWYyMywgMHgwZTRjYmRmNCwgMHg0NWM3ODNiZSwgMHgxZDQ3NjE2OSwgMHhiNGMxMzdjYSwKKyAgICAweGVjNDFkNTFkLCAweDNjOWE4YzZiLCAweDY0MWE2ZWJjLCAweGNkOWMzODFmLCAweDk1MWNkYWM4LAorICAgIDB4ZGU5N2U0ODIsIDB4ODYxNzA2NTUsIDB4MmY5MTUwZjYsIDB4NzcxMWIyMjEsIDB4Yjk4NzJkNjIsCisgICAgMHhlMTA3Y2ZiNSwgMHg0ODgxOTkxNiwgMHgxMDAxN2JjMSwgMHg1YjhhNDU4YiwgMHgwMzBhYTc1YywKKyAgICAweGFhOGNmMWZmLCAweGYyMGMxMzI4LCAweDM2YTFjZTc4LCAweDZlMjEyY2FmLCAweGM3YTc3YTBjLAorICAgIDB4OWYyNzk4ZGIsIDB4ZDRhY2E2OTEsIDB4OGMyYzQ0NDYsIDB4MjVhYTEyZTUsIDB4N2QyYWYwMzIsCisgICAgMHhiM2JjNmY3MSwgMHhlYjNjOGRhNiwgMHg0MmJhZGIwNSwgMHgxYTNhMzlkMiwgMHg1MWIxMDc5OCwKKyAgICAweDA5MzFlNTRmLCAweGEwYjdiM2VjLCAweGY4Mzc1MTNiLCAweDUwZDgxMTlhLCAweDA4NThmMzRkLAorICAgIDB4YTFkZWE1ZWUsIDB4Zjk1ZTQ3MzksIDB4YjJkNTc5NzMsIDB4ZWE1NTliYTQsIDB4NDNkM2NkMDcsCisgICAgMHgxYjUzMmZkMCwgMHhkNWM1YjA5MywgMHg4ZDQ1NTI0NCwgMHgyNGMzMDRlNywgMHg3YzQzZTYzMCwKKyAgICAweDM3YzhkODdhLCAweDZmNDgzYWFkLCAweGM2Y2U2YzBlLCAweDllNGU4ZWQ5LCAweDVhZTM1Mzg5LAorICAgIDB4MDI2M2IxNWUsIDB4YWJlNWU3ZmQsIDB4ZjM2NTA1MmEsIDB4YjhlZTNiNjAsIDB4ZTA2ZWQ5YjcsCisgICAgMHg0OWU4OGYxNCwgMHgxMTY4NmRjMywgMHhkZmZlZjI4MCwgMHg4NzdlMTA1NywgMHgyZWY4NDZmNCwKKyAgICAweDc2NzhhNDIzLCAweDNkZjM5YTY5LCAweDY1NzM3OGJlLCAweGNjZjUyZTFkLCAweDk0NzVjY2NhLAorICAgIDB4NDRhZTk1YmMsIDB4MWMyZTc3NmIsIDB4YjVhODIxYzgsIDB4ZWQyOGMzMWYsIDB4YTZhM2ZkNTUsCisgICAgMHhmZTIzMWY4MiwgMHg1N2E1NDkyMSwgMHgwZjI1YWJmNiwgMHhjMWIzMzRiNSwgMHg5OTMzZDY2MiwKKyAgICAweDMwYjU4MGMxLCAweDY4MzU2MjE2LCAweDIzYmU1YzVjLCAweDdiM2ViZThiLCAweGQyYjhlODI4LAorICAgIDB4OGEzODBhZmYsIDB4NGU5NWQ3YWYsIDB4MTYxNTM1NzgsIDB4YmY5MzYzZGIsIDB4ZTcxMzgxMGMsCisgICAgMHhhYzk4YmY0NiwgMHhmNDE4NWQ5MSwgMHg1ZDllMGIzMiwgMHgwNTFlZTllNSwgMHhjYjg4NzZhNiwKKyAgICAweDkzMDg5NDcxLCAweDNhOGVjMmQyLCAweDYyMGUyMDA1LCAweDI5ODUxZTRmLCAweDcxMDVmYzk4LAorICAgIDB4ZDg4M2FhM2IsIDB4ODAwMzQ4ZWMsIDB4NzgzNDE5ZDcsIDB4MjBiNGZiMDAsIDB4ODkzMmFkYTMsCisgICAgMHhkMWIyNGY3NCwgMHg5YTM5NzEzZSwgMHhjMmI5OTNlOSwgMHg2YjNmYzU0YSwgMHgzM2JmMjc5ZCwKKyAgICAweGZkMjliOGRlLCAweGE1YTk1YTA5LCAweDBjMmYwY2FhLCAweDU0YWZlZTdkLCAweDFmMjRkMDM3LAorICAgIDB4NDdhNDMyZTAsIDB4ZWUyMjY0NDMsIDB4YjZhMjg2OTQsIDB4NzIwZjViYzQsIDB4MmE4ZmI5MTMsCisgICAgMHg4MzA5ZWZiMCwgMHhkYjg5MGQ2NywgMHg5MDAyMzMyZCwgMHhjODgyZDFmYSwgMHg2MTA0ODc1OSwKKyAgICAweDM5ODQ2NThlLCAweGY3MTJmYWNkLCAweGFmOTIxODFhLCAweDA2MTQ0ZWI5LCAweDVlOTRhYzZlLAorICAgIDB4MTUxZjkyMjQsIDB4NGQ5ZjcwZjMsIDB4ZTQxOTI2NTAsIDB4YmM5OWM0ODcsIDB4NmM0MjlkZjEsCisgICAgMHgzNGMyN2YyNiwgMHg5ZDQ0Mjk4NSwgMHhjNWM0Y2I1MiwgMHg4ZTRmZjUxOCwgMHhkNmNmMTdjZiwKKyAgICAweDdmNDk0MTZjLCAweDI3YzlhM2JiLCAweGU5NWYzY2Y4LCAweGIxZGZkZTJmLCAweDE4NTk4ODhjLAorICAgIDB4NDBkOTZhNWIsIDB4MGI1MjU0MTEsIDB4NTNkMmI2YzYsIDB4ZmE1NGUwNjUsIDB4YTJkNDAyYjIsCisgICAgMHg2Njc5ZGZlMiwgMHgzZWY5M2QzNSwgMHg5NzdmNmI5NiwgMHhjZmZmODk0MSwgMHg4NDc0YjcwYiwKKyAgICAweGRjZjQ1NWRjLCAweDc1NzIwMzdmLCAweDJkZjJlMWE4LCAweGUzNjQ3ZWViLCAweGJiZTQ5YzNjLAorICAgIDB4MTI2MmNhOWYsIDB4NGFlMjI4NDgsIDB4MDE2OTE2MDIsIDB4NTllOWY0ZDUsIDB4ZjA2ZmEyNzYsCisgICAgMHhhOGVmNDBhMX0sCisgICB7MHgwMDAwMDAwMCwgMHg0NjNiNjc2NSwgMHg4Yzc2Y2VjYSwgMHhjYTRkYTlhZiwgMHg1OWViZWQ0ZSwKKyAgICAweDFmZDA4YTJiLCAweGQ1OWQyMzg0LCAweDkzYTY0NGUxLCAweGIyZDZkYjlkLCAweGY0ZWRiY2Y4LAorICAgIDB4M2VhMDE1NTcsIDB4Nzg5YjcyMzIsIDB4ZWIzZDM2ZDMsIDB4YWQwNjUxYjYsIDB4Njc0YmY4MTksCisgICAgMHgyMTcwOWY3YywgMHgyNWFiYzZlMCwgMHg2MzkwYTE4NSwgMHhhOWRkMDgyYSwgMHhlZmU2NmY0ZiwKKyAgICAweDdjNDAyYmFlLCAweDNhN2I0Y2NiLCAweGYwMzZlNTY0LCAweGI2MGQ4MjAxLCAweDk3N2QxZDdkLAorICAgIDB4ZDE0NjdhMTgsIDB4MWIwYmQzYjcsIDB4NWQzMGI0ZDIsIDB4Y2U5NmYwMzMsIDB4ODhhZDk3NTYsCisgICAgMHg0MmUwM2VmOSwgMHgwNGRiNTk5YywgMHgwYjUwZmMxYSwgMHg0ZDZiOWI3ZiwgMHg4NzI2MzJkMCwKKyAgICAweGMxMWQ1NWI1LCAweDUyYmIxMTU0LCAweDE0ODA3NjMxLCAweGRlY2RkZjllLCAweDk4ZjZiOGZiLAorICAgIDB4Yjk4NjI3ODcsIDB4ZmZiZDQwZTIsIDB4MzVmMGU5NGQsIDB4NzNjYjhlMjgsIDB4ZTA2ZGNhYzksCisgICAgMHhhNjU2YWRhYywgMHg2YzFiMDQwMywgMHgyYTIwNjM2NiwgMHgyZWZiM2FmYSwgMHg2OGMwNWQ5ZiwKKyAgICAweGEyOGRmNDMwLCAweGU0YjY5MzU1LCAweDc3MTBkN2I0LCAweDMxMmJiMGQxLCAweGZiNjYxOTdlLAorICAgIDB4YmQ1ZDdlMWIsIDB4OWMyZGUxNjcsIDB4ZGExNjg2MDIsIDB4MTA1YjJmYWQsIDB4NTY2MDQ4YzgsCisgICAgMHhjNWM2MGMyOSwgMHg4M2ZkNmI0YywgMHg0OWIwYzJlMywgMHgwZjhiYTU4NiwgMHgxNmEwZjgzNSwKKyAgICAweDUwOWI5ZjUwLCAweDlhZDYzNmZmLCAweGRjZWQ1MTlhLCAweDRmNGIxNTdiLCAweDA5NzA3MjFlLAorICAgIDB4YzMzZGRiYjEsIDB4ODUwNmJjZDQsIDB4YTQ3NjIzYTgsIDB4ZTI0ZDQ0Y2QsIDB4MjgwMGVkNjIsCisgICAgMHg2ZTNiOGEwNywgMHhmZDlkY2VlNiwgMHhiYmE2YTk4MywgMHg3MWViMDAyYywgMHgzN2QwNjc0OSwKKyAgICAweDMzMGIzZWQ1LCAweDc1MzA1OWIwLCAweGJmN2RmMDFmLCAweGY5NDY5NzdhLCAweDZhZTBkMzliLAorICAgIDB4MmNkYmI0ZmUsIDB4ZTY5NjFkNTEsIDB4YTBhZDdhMzQsIDB4ODFkZGU1NDgsIDB4YzdlNjgyMmQsCisgICAgMHgwZGFiMmI4MiwgMHg0YjkwNGNlNywgMHhkODM2MDgwNiwgMHg5ZTBkNmY2MywgMHg1NDQwYzZjYywKKyAgICAweDEyN2JhMWE5LCAweDFkZjAwNDJmLCAweDViY2I2MzRhLCAweDkxODZjYWU1LCAweGQ3YmRhZDgwLAorICAgIDB4NDQxYmU5NjEsIDB4MDIyMDhlMDQsIDB4Yzg2ZDI3YWIsIDB4OGU1NjQwY2UsIDB4YWYyNmRmYjIsCisgICAgMHhlOTFkYjhkNywgMHgyMzUwMTE3OCwgMHg2NTZiNzYxZCwgMHhmNmNkMzJmYywgMHhiMGY2NTU5OSwKKyAgICAweDdhYmJmYzM2LCAweDNjODA5YjUzLCAweDM4NWJjMmNmLCAweDdlNjBhNWFhLCAweGI0MmQwYzA1LAorICAgIDB4ZjIxNjZiNjAsIDB4NjFiMDJmODEsIDB4Mjc4YjQ4ZTQsIDB4ZWRjNmUxNGIsIDB4YWJmZDg2MmUsCisgICAgMHg4YThkMTk1MiwgMHhjY2I2N2UzNywgMHgwNmZiZDc5OCwgMHg0MGMwYjBmZCwgMHhkMzY2ZjQxYywKKyAgICAweDk1NWQ5Mzc5LCAweDVmMTAzYWQ2LCAweDE5MmI1ZGIzLCAweDJjNDBmMTZiLCAweDZhN2I5NjBlLAorICAgIDB4YTAzNjNmYTEsIDB4ZTYwZDU4YzQsIDB4NzVhYjFjMjUsIDB4MzM5MDdiNDAsIDB4ZjlkZGQyZWYsCisgICAgMHhiZmU2YjU4YSwgMHg5ZTk2MmFmNiwgMHhkOGFkNGQ5MywgMHgxMmUwZTQzYywgMHg1NGRiODM1OSwKKyAgICAweGM3N2RjN2I4LCAweDgxNDZhMGRkLCAweDRiMGIwOTcyLCAweDBkMzA2ZTE3LCAweDA5ZWIzNzhiLAorICAgIDB4NGZkMDUwZWUsIDB4ODU5ZGY5NDEsIDB4YzNhNjllMjQsIDB4NTAwMGRhYzUsIDB4MTYzYmJkYTAsCisgICAgMHhkYzc2MTQwZiwgMHg5YTRkNzM2YSwgMHhiYjNkZWMxNiwgMHhmZDA2OGI3MywgMHgzNzRiMjJkYywKKyAgICAweDcxNzA0NWI5LCAweGUyZDYwMTU4LCAweGE0ZWQ2NjNkLCAweDZlYTBjZjkyLCAweDI4OWJhOGY3LAorICAgIDB4MjcxMDBkNzEsIDB4NjEyYjZhMTQsIDB4YWI2NmMzYmIsIDB4ZWQ1ZGE0ZGUsIDB4N2VmYmUwM2YsCisgICAgMHgzOGMwODc1YSwgMHhmMjhkMmVmNSwgMHhiNGI2NDk5MCwgMHg5NWM2ZDZlYywgMHhkM2ZkYjE4OSwKKyAgICAweDE5YjAxODI2LCAweDVmOGI3ZjQzLCAweGNjMmQzYmEyLCAweDhhMTY1Y2M3LCAweDQwNWJmNTY4LAorICAgIDB4MDY2MDkyMGQsIDB4MDJiYmNiOTEsIDB4NDQ4MGFjZjQsIDB4OGVjZDA1NWIsIDB4YzhmNjYyM2UsCisgICAgMHg1YjUwMjZkZiwgMHgxZDZiNDFiYSwgMHhkNzI2ZTgxNSwgMHg5MTFkOGY3MCwgMHhiMDZkMTAwYywKKyAgICAweGY2NTY3NzY5LCAweDNjMWJkZWM2LCAweDdhMjBiOWEzLCAweGU5ODZmZDQyLCAweGFmYmQ5YTI3LAorICAgIDB4NjVmMDMzODgsIDB4MjNjYjU0ZWQsIDB4M2FlMDA5NWUsIDB4N2NkYjZlM2IsIDB4YjY5NmM3OTQsCisgICAgMHhmMGFkYTBmMSwgMHg2MzBiZTQxMCwgMHgyNTMwODM3NSwgMHhlZjdkMmFkYSwgMHhhOTQ2NGRiZiwKKyAgICAweDg4MzZkMmMzLCAweGNlMGRiNWE2LCAweDA0NDAxYzA5LCAweDQyN2I3YjZjLCAweGQxZGQzZjhkLAorICAgIDB4OTdlNjU4ZTgsIDB4NWRhYmYxNDcsIDB4MWI5MDk2MjIsIDB4MWY0YmNmYmUsIDB4NTk3MGE4ZGIsCisgICAgMHg5MzNkMDE3NCwgMHhkNTA2NjYxMSwgMHg0NmEwMjJmMCwgMHgwMDliNDU5NSwgMHhjYWQ2ZWMzYSwKKyAgICAweDhjZWQ4YjVmLCAweGFkOWQxNDIzLCAweGViYTY3MzQ2LCAweDIxZWJkYWU5LCAweDY3ZDBiZDhjLAorICAgIDB4ZjQ3NmY5NmQsIDB4YjI0ZDllMDgsIDB4NzgwMDM3YTcsIDB4M2UzYjUwYzIsIDB4MzFiMGY1NDQsCisgICAgMHg3NzhiOTIyMSwgMHhiZGM2M2I4ZSwgMHhmYmZkNWNlYiwgMHg2ODViMTgwYSwgMHgyZTYwN2Y2ZiwKKyAgICAweGU0MmRkNmMwLCAweGEyMTZiMWE1LCAweDgzNjYyZWQ5LCAweGM1NWQ0OWJjLCAweDBmMTBlMDEzLAorICAgIDB4NDkyYjg3NzYsIDB4ZGE4ZGMzOTcsIDB4OWNiNmE0ZjIsIDB4NTZmYjBkNWQsIDB4MTBjMDZhMzgsCisgICAgMHgxNDFiMzNhNCwgMHg1MjIwNTRjMSwgMHg5ODZkZmQ2ZSwgMHhkZTU2OWEwYiwgMHg0ZGYwZGVlYSwKKyAgICAweDBiY2JiOThmLCAweGMxODYxMDIwLCAweDg3YmQ3NzQ1LCAweGE2Y2RlODM5LCAweGUwZjY4ZjVjLAorICAgIDB4MmFiYjI2ZjMsIDB4NmM4MDQxOTYsIDB4ZmYyNjA1NzcsIDB4YjkxZDYyMTIsIDB4NzM1MGNiYmQsCisgICAgMHgzNTZiYWNkOH19OworCisjZW5kaWYKKworI2VuZGlmCisKKyNpZiBOID09IDYKKworI2lmIFcgPT0gOAorCitsb2NhbCBjb25zdCB6X2NyY190IEZBUiBjcmNfYnJhaWRfdGFibGVbXVsyNTZdID0geworICAgezB4MDAwMDAwMDAsIDB4M2RiMWVjZGMsIDB4N2I2M2Q5YjgsIDB4NDZkMjM1NjQsIDB4ZjZjN2IzNzAsCisgICAgMHhjYjc2NWZhYywgMHg4ZGE0NmFjOCwgMHhiMDE1ODYxNCwgMHgzNmZlNjBhMSwgMHgwYjRmOGM3ZCwKKyAgICAweDRkOWRiOTE5LCAweDcwMmM1NWM1LCAweGMwMzlkM2QxLCAweGZkODgzZjBkLCAweGJiNWEwYTY5LAorICAgIDB4ODZlYmU2YjUsIDB4NmRmY2MxNDIsIDB4NTA0ZDJkOWUsIDB4MTY5ZjE4ZmEsIDB4MmIyZWY0MjYsCisgICAgMHg5YjNiNzIzMiwgMHhhNjhhOWVlZSwgMHhlMDU4YWI4YSwgMHhkZGU5NDc1NiwgMHg1YjAyYTFlMywKKyAgICAweDY2YjM0ZDNmLCAweDIwNjE3ODViLCAweDFkZDA5NDg3LCAweGFkYzUxMjkzLCAweDkwNzRmZTRmLAorICAgIDB4ZDZhNmNiMmIsIDB4ZWIxNzI3ZjcsIDB4ZGJmOTgyODQsIDB4ZTY0ODZlNTgsIDB4YTA5YTViM2MsCisgICAgMHg5ZDJiYjdlMCwgMHgyZDNlMzFmNCwgMHgxMDhmZGQyOCwgMHg1NjVkZTg0YywgMHg2YmVjMDQ5MCwKKyAgICAweGVkMDdlMjI1LCAweGQwYjYwZWY5LCAweDk2NjQzYjlkLCAweGFiZDVkNzQxLCAweDFiYzA1MTU1LAorICAgIDB4MjY3MWJkODksIDB4NjBhMzg4ZWQsIDB4NWQxMjY0MzEsIDB4YjYwNTQzYzYsIDB4OGJiNGFmMWEsCisgICAgMHhjZDY2OWE3ZSwgMHhmMGQ3NzZhMiwgMHg0MGMyZjBiNiwgMHg3ZDczMWM2YSwgMHgzYmExMjkwZSwKKyAgICAweDA2MTBjNWQyLCAweDgwZmIyMzY3LCAweGJkNGFjZmJiLCAweGZiOThmYWRmLCAweGM2MjkxNjAzLAorICAgIDB4NzYzYzkwMTcsIDB4NGI4ZDdjY2IsIDB4MGQ1ZjQ5YWYsIDB4MzBlZWE1NzMsIDB4NmM4MjAzNDksCisgICAgMHg1MTMzZWY5NSwgMHgxN2UxZGFmMSwgMHgyYTUwMzYyZCwgMHg5YTQ1YjAzOSwgMHhhN2Y0NWNlNSwKKyAgICAweGUxMjY2OTgxLCAweGRjOTc4NTVkLCAweDVhN2M2M2U4LCAweDY3Y2Q4ZjM0LCAweDIxMWZiYTUwLAorICAgIDB4MWNhZTU2OGMsIDB4YWNiYmQwOTgsIDB4OTEwYTNjNDQsIDB4ZDdkODA5MjAsIDB4ZWE2OWU1ZmMsCisgICAgMHgwMTdlYzIwYiwgMHgzY2NmMmVkNywgMHg3YTFkMWJiMywgMHg0N2FjZjc2ZiwgMHhmN2I5NzE3YiwKKyAgICAweGNhMDg5ZGE3LCAweDhjZGFhOGMzLCAweGIxNmI0NDFmLCAweDM3ODBhMmFhLCAweDBhMzE0ZTc2LAorICAgIDB4NGNlMzdiMTIsIDB4NzE1Mjk3Y2UsIDB4YzE0NzExZGEsIDB4ZmNmNmZkMDYsIDB4YmEyNGM4NjIsCisgICAgMHg4Nzk1MjRiZSwgMHhiNzdiODFjZCwgMHg4YWNhNmQxMSwgMHhjYzE4NTg3NSwgMHhmMWE5YjRhOSwKKyAgICAweDQxYmMzMmJkLCAweDdjMGRkZTYxLCAweDNhZGZlYjA1LCAweDA3NmUwN2Q5LCAweDgxODVlMTZjLAorICAgIDB4YmMzNDBkYjAsIDB4ZmFlNjM4ZDQsIDB4Yzc1N2Q0MDgsIDB4Nzc0MjUyMWMsIDB4NGFmM2JlYzAsCisgICAgMHgwYzIxOGJhNCwgMHgzMTkwNjc3OCwgMHhkYTg3NDA4ZiwgMHhlNzM2YWM1MywgMHhhMWU0OTkzNywKKyAgICAweDljNTU3NWViLCAweDJjNDBmM2ZmLCAweDExZjExZjIzLCAweDU3MjMyYTQ3LCAweDZhOTJjNjliLAorICAgIDB4ZWM3OTIwMmUsIDB4ZDFjOGNjZjIsIDB4OTcxYWY5OTYsIDB4YWFhYjE1NGEsIDB4MWFiZTkzNWUsCisgICAgMHgyNzBmN2Y4MiwgMHg2MWRkNGFlNiwgMHg1YzZjYTYzYSwgMHhkOTA0MDY5MiwgMHhlNGI1ZWE0ZSwKKyAgICAweGEyNjdkZjJhLCAweDlmZDYzM2Y2LCAweDJmYzNiNWUyLCAweDEyNzI1OTNlLCAweDU0YTA2YzVhLAorICAgIDB4NjkxMTgwODYsIDB4ZWZmYTY2MzMsIDB4ZDI0YjhhZWYsIDB4OTQ5OWJmOGIsIDB4YTkyODUzNTcsCisgICAgMHgxOTNkZDU0MywgMHgyNDhjMzk5ZiwgMHg2MjVlMGNmYiwgMHg1ZmVmZTAyNywgMHhiNGY4YzdkMCwKKyAgICAweDg5NDkyYjBjLCAweGNmOWIxZTY4LCAweGYyMmFmMmI0LCAweDQyM2Y3NGEwLCAweDdmOGU5ODdjLAorICAgIDB4Mzk1Y2FkMTgsIDB4MDRlZDQxYzQsIDB4ODIwNmE3NzEsIDB4YmZiNzRiYWQsIDB4Zjk2NTdlYzksCisgICAgMHhjNGQ0OTIxNSwgMHg3NGMxMTQwMSwgMHg0OTcwZjhkZCwgMHgwZmEyY2RiOSwgMHgzMjEzMjE2NSwKKyAgICAweDAyZmQ4NDE2LCAweDNmNGM2OGNhLCAweDc5OWU1ZGFlLCAweDQ0MmZiMTcyLCAweGY0M2EzNzY2LAorICAgIDB4Yzk4YmRiYmEsIDB4OGY1OWVlZGUsIDB4YjJlODAyMDIsIDB4MzQwM2U0YjcsIDB4MDliMjA4NmIsCisgICAgMHg0ZjYwM2QwZiwgMHg3MmQxZDFkMywgMHhjMmM0NTdjNywgMHhmZjc1YmIxYiwgMHhiOWE3OGU3ZiwKKyAgICAweDg0MTY2MmEzLCAweDZmMDE0NTU0LCAweDUyYjBhOTg4LCAweDE0NjI5Y2VjLCAweDI5ZDM3MDMwLAorICAgIDB4OTljNmY2MjQsIDB4YTQ3NzFhZjgsIDB4ZTJhNTJmOWMsIDB4ZGYxNGMzNDAsIDB4NTlmZjI1ZjUsCisgICAgMHg2NDRlYzkyOSwgMHgyMjljZmM0ZCwgMHgxZjJkMTA5MSwgMHhhZjM4OTY4NSwgMHg5Mjg5N2E1OSwKKyAgICAweGQ0NWI0ZjNkLCAweGU5ZWFhM2UxLCAweGI1ODYwNWRiLCAweDg4MzdlOTA3LCAweGNlZTVkYzYzLAorICAgIDB4ZjM1NDMwYmYsIDB4NDM0MWI2YWIsIDB4N2VmMDVhNzcsIDB4MzgyMjZmMTMsIDB4MDU5MzgzY2YsCisgICAgMHg4Mzc4NjU3YSwgMHhiZWM5ODlhNiwgMHhmODFiYmNjMiwgMHhjNWFhNTAxZSwgMHg3NWJmZDYwYSwKKyAgICAweDQ4MGUzYWQ2LCAweDBlZGMwZmIyLCAweDMzNmRlMzZlLCAweGQ4N2FjNDk5LCAweGU1Y2IyODQ1LAorICAgIDB4YTMxOTFkMjEsIDB4OWVhOGYxZmQsIDB4MmViZDc3ZTksIDB4MTMwYzliMzUsIDB4NTVkZWFlNTEsCisgICAgMHg2ODZmNDI4ZCwgMHhlZTg0YTQzOCwgMHhkMzM1NDhlNCwgMHg5NWU3N2Q4MCwgMHhhODU2OTE1YywKKyAgICAweDE4NDMxNzQ4LCAweDI1ZjJmYjk0LCAweDYzMjBjZWYwLCAweDVlOTEyMjJjLCAweDZlN2Y4NzVmLAorICAgIDB4NTNjZTZiODMsIDB4MTUxYzVlZTcsIDB4MjhhZGIyM2IsIDB4OThiODM0MmYsIDB4YTUwOWQ4ZjMsCisgICAgMHhlM2RiZWQ5NywgMHhkZTZhMDE0YiwgMHg1ODgxZTdmZSwgMHg2NTMwMGIyMiwgMHgyM2UyM2U0NiwKKyAgICAweDFlNTNkMjlhLCAweGFlNDY1NDhlLCAweDkzZjdiODUyLCAweGQ1MjU4ZDM2LCAweGU4OTQ2MWVhLAorICAgIDB4MDM4MzQ2MWQsIDB4M2UzMmFhYzEsIDB4NzhlMDlmYTUsIDB4NDU1MTczNzksIDB4ZjU0NGY1NmQsCisgICAgMHhjOGY1MTliMSwgMHg4ZTI3MmNkNSwgMHhiMzk2YzAwOSwgMHgzNTdkMjZiYywgMHgwOGNjY2E2MCwKKyAgICAweDRlMWVmZjA0LCAweDczYWYxM2Q4LCAweGMzYmE5NWNjLCAweGZlMGI3OTEwLCAweGI4ZDk0Yzc0LAorICAgIDB4ODU2OGEwYTh9LAorICAgezB4MDAwMDAwMDAsIDB4Njk3OTBiNjUsIDB4ZDJmMjE2Y2EsIDB4YmI4YjFkYWYsIDB4N2U5NTJiZDUsCisgICAgMHgxN2VjMjBiMCwgMHhhYzY3M2QxZiwgMHhjNTFlMzY3YSwgMHhmZDJhNTdhYSwgMHg5NDUzNWNjZiwKKyAgICAweDJmZDg0MTYwLCAweDQ2YTE0YTA1LCAweDgzYmY3YzdmLCAweGVhYzY3NzFhLCAweDUxNGQ2YWI1LAorICAgIDB4MzgzNDYxZDAsIDB4MjEyNWE5MTUsIDB4NDg1Y2EyNzAsIDB4ZjNkN2JmZGYsIDB4OWFhZWI0YmEsCisgICAgMHg1ZmIwODJjMCwgMHgzNmM5ODlhNSwgMHg4ZDQyOTQwYSwgMHhlNDNiOWY2ZiwgMHhkYzBmZmViZiwKKyAgICAweGI1NzZmNWRhLCAweDBlZmRlODc1LCAweDY3ODRlMzEwLCAweGEyOWFkNTZhLCAweGNiZTNkZTBmLAorICAgIDB4NzA2OGMzYTAsIDB4MTkxMWM4YzUsIDB4NDI0YjUyMmEsIDB4MmIzMjU5NGYsIDB4OTBiOTQ0ZTAsCisgICAgMHhmOWMwNGY4NSwgMHgzY2RlNzlmZiwgMHg1NWE3NzI5YSwgMHhlZTJjNmYzNSwgMHg4NzU1NjQ1MCwKKyAgICAweGJmNjEwNTgwLCAweGQ2MTgwZWU1LCAweDZkOTMxMzRhLCAweDA0ZWExODJmLCAweGMxZjQyZTU1LAorICAgIDB4YTg4ZDI1MzAsIDB4MTMwNjM4OWYsIDB4N2E3ZjMzZmEsIDB4NjM2ZWZiM2YsIDB4MGExN2YwNWEsCisgICAgMHhiMTljZWRmNSwgMHhkOGU1ZTY5MCwgMHgxZGZiZDBlYSwgMHg3NDgyZGI4ZiwgMHhjZjA5YzYyMCwKKyAgICAweGE2NzBjZDQ1LCAweDllNDRhYzk1LCAweGY3M2RhN2YwLCAweDRjYjZiYTVmLCAweDI1Y2ZiMTNhLAorICAgIDB4ZTBkMTg3NDAsIDB4ODlhODhjMjUsIDB4MzIyMzkxOGEsIDB4NWI1YTlhZWYsIDB4ODQ5NmE0NTQsCisgICAgMHhlZGVmYWYzMSwgMHg1NjY0YjI5ZSwgMHgzZjFkYjlmYiwgMHhmYTAzOGY4MSwgMHg5MzdhODRlNCwKKyAgICAweDI4ZjE5OTRiLCAweDQxODg5MjJlLCAweDc5YmNmM2ZlLCAweDEwYzVmODliLCAweGFiNGVlNTM0LAorICAgIDB4YzIzN2VlNTEsIDB4MDcyOWQ4MmIsIDB4NmU1MGQzNGUsIDB4ZDVkYmNlZTEsIDB4YmNhMmM1ODQsCisgICAgMHhhNWIzMGQ0MSwgMHhjY2NhMDYyNCwgMHg3NzQxMWI4YiwgMHgxZTM4MTBlZSwgMHhkYjI2MjY5NCwKKyAgICAweGIyNWYyZGYxLCAweDA5ZDQzMDVlLCAweDYwYWQzYjNiLCAweDU4OTk1YWViLCAweDMxZTA1MThlLAorICAgIDB4OGE2YjRjMjEsIDB4ZTMxMjQ3NDQsIDB4MjYwYzcxM2UsIDB4NGY3NTdhNWIsIDB4ZjRmZTY3ZjQsCisgICAgMHg5ZDg3NmM5MSwgMHhjNmRkZjY3ZSwgMHhhZmE0ZmQxYiwgMHgxNDJmZTBiNCwgMHg3ZDU2ZWJkMSwKKyAgICAweGI4NDhkZGFiLCAweGQxMzFkNmNlLCAweDZhYmFjYjYxLCAweDAzYzNjMDA0LCAweDNiZjdhMWQ0LAorICAgIDB4NTI4ZWFhYjEsIDB4ZTkwNWI3MWUsIDB4ODA3Y2JjN2IsIDB4NDU2MjhhMDEsIDB4MmMxYjgxNjQsCisgICAgMHg5NzkwOWNjYiwgMHhmZWU5OTdhZSwgMHhlN2Y4NWY2YiwgMHg4ZTgxNTQwZSwgMHgzNTBhNDlhMSwKKyAgICAweDVjNzM0MmM0LCAweDk5NmQ3NGJlLCAweGYwMTQ3ZmRiLCAweDRiOWY2Mjc0LCAweDIyZTY2OTExLAorICAgIDB4MWFkMjA4YzEsIDB4NzNhYjAzYTQsIDB4YzgyMDFlMGIsIDB4YTE1OTE1NmUsIDB4NjQ0NzIzMTQsCisgICAgMHgwZDNlMjg3MSwgMHhiNmI1MzVkZSwgMHhkZmNjM2ViYiwgMHhkMjVjNGVlOSwgMHhiYjI1NDU4YywKKyAgICAweDAwYWU1ODIzLCAweDY5ZDc1MzQ2LCAweGFjYzk2NTNjLCAweGM1YjA2ZTU5LCAweDdlM2I3M2Y2LAorICAgIDB4MTc0Mjc4OTMsIDB4MmY3NjE5NDMsIDB4NDYwZjEyMjYsIDB4ZmQ4NDBmODksIDB4OTRmZDA0ZWMsCisgICAgMHg1MWUzMzI5NiwgMHgzODlhMzlmMywgMHg4MzExMjQ1YywgMHhlYTY4MmYzOSwgMHhmMzc5ZTdmYywKKyAgICAweDlhMDBlYzk5LCAweDIxOGJmMTM2LCAweDQ4ZjJmYTUzLCAweDhkZWNjYzI5LCAweGU0OTVjNzRjLAorICAgIDB4NWYxZWRhZTMsIDB4MzY2N2QxODYsIDB4MGU1M2IwNTYsIDB4NjcyYWJiMzMsIDB4ZGNhMWE2OWMsCisgICAgMHhiNWQ4YWRmOSwgMHg3MGM2OWI4MywgMHgxOWJmOTBlNiwgMHhhMjM0OGQ0OSwgMHhjYjRkODYyYywKKyAgICAweDkwMTcxY2MzLCAweGY5NmUxN2E2LCAweDQyZTUwYTA5LCAweDJiOWMwMTZjLCAweGVlODIzNzE2LAorICAgIDB4ODdmYjNjNzMsIDB4M2M3MDIxZGMsIDB4NTUwOTJhYjksIDB4NmQzZDRiNjksIDB4MDQ0NDQwMGMsCisgICAgMHhiZmNmNWRhMywgMHhkNmI2NTZjNiwgMHgxM2E4NjBiYywgMHg3YWQxNmJkOSwgMHhjMTVhNzY3NiwKKyAgICAweGE4MjM3ZDEzLCAweGIxMzJiNWQ2LCAweGQ4NGJiZWIzLCAweDYzYzBhMzFjLCAweDBhYjlhODc5LAorICAgIDB4Y2ZhNzllMDMsIDB4YTZkZTk1NjYsIDB4MWQ1NTg4YzksIDB4NzQyYzgzYWMsIDB4NGMxOGUyN2MsCisgICAgMHgyNTYxZTkxOSwgMHg5ZWVhZjRiNiwgMHhmNzkzZmZkMywgMHgzMjhkYzlhOSwgMHg1YmY0YzJjYywKKyAgICAweGUwN2ZkZjYzLCAweDg5MDZkNDA2LCAweDU2Y2FlYWJkLCAweDNmYjNlMWQ4LCAweDg0MzhmYzc3LAorICAgIDB4ZWQ0MWY3MTIsIDB4Mjg1ZmMxNjgsIDB4NDEyNmNhMGQsIDB4ZmFhZGQ3YTIsIDB4OTNkNGRjYzcsCisgICAgMHhhYmUwYmQxNywgMHhjMjk5YjY3MiwgMHg3OTEyYWJkZCwgMHgxMDZiYTBiOCwgMHhkNTc1OTZjMiwKKyAgICAweGJjMGM5ZGE3LCAweDA3ODc4MDA4LCAweDZlZmU4YjZkLCAweDc3ZWY0M2E4LCAweDFlOTY0OGNkLAorICAgIDB4YTUxZDU1NjIsIDB4Y2M2NDVlMDcsIDB4MDk3YTY4N2QsIDB4NjAwMzYzMTgsIDB4ZGI4ODdlYjcsCisgICAgMHhiMmYxNzVkMiwgMHg4YWM1MTQwMiwgMHhlM2JjMWY2NywgMHg1ODM3MDJjOCwgMHgzMTRlMDlhZCwKKyAgICAweGY0NTAzZmQ3LCAweDlkMjkzNGIyLCAweDI2YTIyOTFkLCAweDRmZGIyMjc4LCAweDE0ODFiODk3LAorICAgIDB4N2RmOGIzZjIsIDB4YzY3M2FlNWQsIDB4YWYwYWE1MzgsIDB4NmExNDkzNDIsIDB4MDM2ZDk4MjcsCisgICAgMHhiOGU2ODU4OCwgMHhkMTlmOGVlZCwgMHhlOWFiZWYzZCwgMHg4MGQyZTQ1OCwgMHgzYjU5ZjlmNywKKyAgICAweDUyMjBmMjkyLCAweDk3M2VjNGU4LCAweGZlNDdjZjhkLCAweDQ1Y2NkMjIyLCAweDJjYjVkOTQ3LAorICAgIDB4MzVhNDExODIsIDB4NWNkZDFhZTcsIDB4ZTc1NjA3NDgsIDB4OGUyZjBjMmQsIDB4NGIzMTNhNTcsCisgICAgMHgyMjQ4MzEzMiwgMHg5OWMzMmM5ZCwgMHhmMGJhMjdmOCwgMHhjODhlNDYyOCwgMHhhMWY3NGQ0ZCwKKyAgICAweDFhN2M1MGUyLCAweDczMDU1Yjg3LCAweGI2MWI2ZGZkLCAweGRmNjI2Njk4LCAweDY0ZTk3YjM3LAorICAgIDB4MGQ5MDcwNTJ9LAorICAgezB4MDAwMDAwMDAsIDB4N2ZjOTliOTMsIDB4ZmY5MzM3MjYsIDB4ODA1YWFjYjUsIDB4MjQ1NzY4MGQsCisgICAgMHg1YjllZjM5ZSwgMHhkYmM0NWYyYiwgMHhhNDBkYzRiOCwgMHg0OGFlZDAxYSwgMHgzNzY3NGI4OSwKKyAgICAweGI3M2RlNzNjLCAweGM4ZjQ3Y2FmLCAweDZjZjliODE3LCAweDEzMzAyMzg0LCAweDkzNmE4ZjMxLAorICAgIDB4ZWNhMzE0YTIsIDB4OTE1ZGEwMzQsIDB4ZWU5NDNiYTcsIDB4NmVjZTk3MTIsIDB4MTEwNzBjODEsCisgICAgMHhiNTBhYzgzOSwgMHhjYWMzNTNhYSwgMHg0YTk5ZmYxZiwgMHgzNTUwNjQ4YywgMHhkOWYzNzAyZSwKKyAgICAweGE2M2FlYmJkLCAweDI2NjA0NzA4LCAweDU5YTlkYzliLCAweGZkYTQxODIzLCAweDgyNmQ4M2IwLAorICAgIDB4MDIzNzJmMDUsIDB4N2RmZWI0OTYsIDB4ZjljYTQ2MjksIDB4ODYwM2RkYmEsIDB4MDY1OTcxMGYsCisgICAgMHg3OTkwZWE5YywgMHhkZDlkMmUyNCwgMHhhMjU0YjViNywgMHgyMjBlMTkwMiwgMHg1ZGM3ODI5MSwKKyAgICAweGIxNjQ5NjMzLCAweGNlYWQwZGEwLCAweDRlZjdhMTE1LCAweDMxM2UzYTg2LCAweDk1MzNmZTNlLAorICAgIDB4ZWFmYTY1YWQsIDB4NmFhMGM5MTgsIDB4MTU2OTUyOGIsIDB4Njg5N2U2MWQsIDB4MTc1ZTdkOGUsCisgICAgMHg5NzA0ZDEzYiwgMHhlOGNkNGFhOCwgMHg0Y2MwOGUxMCwgMHgzMzA5MTU4MywgMHhiMzUzYjkzNiwKKyAgICAweGNjOWEyMmE1LCAweDIwMzkzNjA3LCAweDVmZjBhZDk0LCAweGRmYWEwMTIxLCAweGEwNjM5YWIyLAorICAgIDB4MDQ2ZTVlMGEsIDB4N2JhN2M1OTksIDB4ZmJmZDY5MmMsIDB4ODQzNGYyYmYsIDB4MjhlNThhMTMsCisgICAgMHg1NzJjMTE4MCwgMHhkNzc2YmQzNSwgMHhhOGJmMjZhNiwgMHgwY2IyZTIxZSwgMHg3MzdiNzk4ZCwKKyAgICAweGYzMjFkNTM4LCAweDhjZTg0ZWFiLCAweDYwNGI1YTA5LCAweDFmODJjMTlhLCAweDlmZDg2ZDJmLAorICAgIDB4ZTAxMWY2YmMsIDB4NDQxYzMyMDQsIDB4M2JkNWE5OTcsIDB4YmI4ZjA1MjIsIDB4YzQ0NjllYjEsCisgICAgMHhiOWI4MmEyNywgMHhjNjcxYjFiNCwgMHg0NjJiMWQwMSwgMHgzOWUyODY5MiwgMHg5ZGVmNDIyYSwKKyAgICAweGUyMjZkOWI5LCAweDYyN2M3NTBjLCAweDFkYjVlZTlmLCAweGYxMTZmYTNkLCAweDhlZGY2MWFlLAorICAgIDB4MGU4NWNkMWIsIDB4NzE0YzU2ODgsIDB4ZDU0MTkyMzAsIDB4YWE4ODA5YTMsIDB4MmFkMmE1MTYsCisgICAgMHg1NTFiM2U4NSwgMHhkMTJmY2MzYSwgMHhhZWU2NTdhOSwgMHgyZWJjZmIxYywgMHg1MTc1NjA4ZiwKKyAgICAweGY1NzhhNDM3LCAweDhhYjEzZmE0LCAweDBhZWI5MzExLCAweDc1MjIwODgyLCAweDk5ODExYzIwLAorICAgIDB4ZTY0ODg3YjMsIDB4NjYxMjJiMDYsIDB4MTlkYmIwOTUsIDB4YmRkNjc0MmQsIDB4YzIxZmVmYmUsCisgICAgMHg0MjQ1NDMwYiwgMHgzZDhjZDg5OCwgMHg0MDcyNmMwZSwgMHgzZmJiZjc5ZCwgMHhiZmUxNWIyOCwKKyAgICAweGMwMjhjMGJiLCAweDY0MjUwNDAzLCAweDFiZWM5ZjkwLCAweDliYjYzMzI1LCAweGU0N2ZhOGI2LAorICAgIDB4MDhkY2JjMTQsIDB4NzcxNTI3ODcsIDB4Zjc0ZjhiMzIsIDB4ODg4NjEwYTEsIDB4MmM4YmQ0MTksCisgICAgMHg1MzQyNGY4YSwgMHhkMzE4ZTMzZiwgMHhhY2QxNzhhYywgMHg1MWNiMTQyNiwgMHgyZTAyOGZiNSwKKyAgICAweGFlNTgyMzAwLCAweGQxOTFiODkzLCAweDc1OWM3YzJiLCAweDBhNTVlN2I4LCAweDhhMGY0YjBkLAorICAgIDB4ZjVjNmQwOWUsIDB4MTk2NWM0M2MsIDB4NjZhYzVmYWYsIDB4ZTZmNmYzMWEsIDB4OTkzZjY4ODksCisgICAgMHgzZDMyYWMzMSwgMHg0MmZiMzdhMiwgMHhjMmExOWIxNywgMHhiZDY4MDA4NCwgMHhjMDk2YjQxMiwKKyAgICAweGJmNWYyZjgxLCAweDNmMDU4MzM0LCAweDQwY2MxOGE3LCAweGU0YzFkYzFmLCAweDliMDg0NzhjLAorICAgIDB4MWI1MmViMzksIDB4NjQ5YjcwYWEsIDB4ODgzODY0MDgsIDB4ZjdmMWZmOWIsIDB4NzdhYjUzMmUsCisgICAgMHgwODYyYzhiZCwgMHhhYzZmMGMwNSwgMHhkM2E2OTc5NiwgMHg1M2ZjM2IyMywgMHgyYzM1YTBiMCwKKyAgICAweGE4MDE1MjBmLCAweGQ3YzhjOTljLCAweDU3OTI2NTI5LCAweDI4NWJmZWJhLCAweDhjNTYzYTAyLAorICAgIDB4ZjM5ZmExOTEsIDB4NzNjNTBkMjQsIDB4MGMwYzk2YjcsIDB4ZTBhZjgyMTUsIDB4OWY2NjE5ODYsCisgICAgMHgxZjNjYjUzMywgMHg2MGY1MmVhMCwgMHhjNGY4ZWExOCwgMHhiYjMxNzE4YiwgMHgzYjZiZGQzZSwKKyAgICAweDQ0YTI0NmFkLCAweDM5NWNmMjNiLCAweDQ2OTU2OWE4LCAweGM2Y2ZjNTFkLCAweGI5MDY1ZThlLAorICAgIDB4MWQwYjlhMzYsIDB4NjJjMjAxYTUsIDB4ZTI5OGFkMTAsIDB4OWQ1MTM2ODMsIDB4NzFmMjIyMjEsCisgICAgMHgwZTNiYjliMiwgMHg4ZTYxMTUwNywgMHhmMWE4OGU5NCwgMHg1NWE1NGEyYywgMHgyYTZjZDFiZiwKKyAgICAweGFhMzY3ZDBhLCAweGQ1ZmZlNjk5LCAweDc5MmU5ZTM1LCAweDA2ZTcwNWE2LCAweDg2YmRhOTEzLAorICAgIDB4Zjk3NDMyODAsIDB4NWQ3OWY2MzgsIDB4MjJiMDZkYWIsIDB4YTJlYWMxMWUsIDB4ZGQyMzVhOGQsCisgICAgMHgzMTgwNGUyZiwgMHg0ZTQ5ZDViYywgMHhjZTEzNzkwOSwgMHhiMWRhZTI5YSwgMHgxNWQ3MjYyMiwKKyAgICAweDZhMWViZGIxLCAweGVhNDQxMTA0LCAweDk1OGQ4YTk3LCAweGU4NzMzZTAxLCAweDk3YmFhNTkyLAorICAgIDB4MTdlMDA5MjcsIDB4NjgyOTkyYjQsIDB4Y2MyNDU2MGMsIDB4YjNlZGNkOWYsIDB4MzNiNzYxMmEsCisgICAgMHg0YzdlZmFiOSwgMHhhMGRkZWUxYiwgMHhkZjE0NzU4OCwgMHg1ZjRlZDkzZCwgMHgyMDg3NDJhZSwKKyAgICAweDg0OGE4NjE2LCAweGZiNDMxZDg1LCAweDdiMTliMTMwLCAweDA0ZDAyYWEzLCAweDgwZTRkODFjLAorICAgIDB4ZmYyZDQzOGYsIDB4N2Y3N2VmM2EsIDB4MDBiZTc0YTksIDB4YTRiM2IwMTEsIDB4ZGI3YTJiODIsCisgICAgMHg1YjIwODczNywgMHgyNGU5MWNhNCwgMHhjODRhMDgwNiwgMHhiNzgzOTM5NSwgMHgzN2Q5M2YyMCwKKyAgICAweDQ4MTBhNGIzLCAweGVjMWQ2MDBiLCAweDkzZDRmYjk4LCAweDEzOGU1NzJkLCAweDZjNDdjY2JlLAorICAgIDB4MTFiOTc4MjgsIDB4NmU3MGUzYmIsIDB4ZWUyYTRmMGUsIDB4OTFlM2Q0OWQsIDB4MzVlZTEwMjUsCisgICAgMHg0YTI3OGJiNiwgMHhjYTdkMjcwMywgMHhiNWI0YmM5MCwgMHg1OTE3YTgzMiwgMHgyNmRlMzNhMSwKKyAgICAweGE2ODQ5ZjE0LCAweGQ5NGQwNDg3LCAweDdkNDBjMDNmLCAweDAyODk1YmFjLCAweDgyZDNmNzE5LAorICAgIDB4ZmQxYTZjOGF9LAorICAgezB4MDAwMDAwMDAsIDB4YTM5NjI4NGMsIDB4OWM1ZDU2ZDksIDB4M2ZjYjdlOTUsIDB4ZTNjYmFiZjMsCisgICAgMHg0MDVkODNiZiwgMHg3Zjk2ZmQyYSwgMHhkYzAwZDU2NiwgMHgxY2U2NTFhNywgMHhiZjcwNzllYiwKKyAgICAweDgwYmIwNzdlLCAweDIzMmQyZjMyLCAweGZmMmRmYTU0LCAweDVjYmJkMjE4LCAweDYzNzBhYzhkLAorICAgIDB4YzBlNjg0YzEsIDB4MzljY2EzNGUsIDB4OWE1YThiMDIsIDB4YTU5MWY1OTcsIDB4MDYwN2RkZGIsCisgICAgMHhkYTA3MDhiZCwgMHg3OTkxMjBmMSwgMHg0NjVhNWU2NCwgMHhlNWNjNzYyOCwgMHgyNTJhZjJlOSwKKyAgICAweDg2YmNkYWE1LCAweGI5NzdhNDMwLCAweDFhZTE4YzdjLCAweGM2ZTE1OTFhLCAweDY1Nzc3MTU2LAorICAgIDB4NWFiYzBmYzMsIDB4ZjkyYTI3OGYsIDB4NzM5OTQ2OWMsIDB4ZDAwZjZlZDAsIDB4ZWZjNDEwNDUsCisgICAgMHg0YzUyMzgwOSwgMHg5MDUyZWQ2ZiwgMHgzM2M0YzUyMywgMHgwYzBmYmJiNiwgMHhhZjk5OTNmYSwKKyAgICAweDZmN2YxNzNiLCAweGNjZTkzZjc3LCAweGYzMjI0MWUyLCAweDUwYjQ2OWFlLCAweDhjYjRiY2M4LAorICAgIDB4MmYyMjk0ODQsIDB4MTBlOWVhMTEsIDB4YjM3ZmMyNWQsIDB4NGE1NWU1ZDIsIDB4ZTljM2NkOWUsCisgICAgMHhkNjA4YjMwYiwgMHg3NTllOWI0NywgMHhhOTllNGUyMSwgMHgwYTA4NjY2ZCwgMHgzNWMzMThmOCwKKyAgICAweDk2NTUzMGI0LCAweDU2YjNiNDc1LCAweGY1MjU5YzM5LCAweGNhZWVlMmFjLCAweDY5NzhjYWUwLAorICAgIDB4YjU3ODFmODYsIDB4MTZlZTM3Y2EsIDB4MjkyNTQ5NWYsIDB4OGFiMzYxMTMsIDB4ZTczMjhkMzgsCisgICAgMHg0NGE0YTU3NCwgMHg3YjZmZGJlMSwgMHhkOGY5ZjNhZCwgMHgwNGY5MjZjYiwgMHhhNzZmMGU4NywKKyAgICAweDk4YTQ3MDEyLCAweDNiMzI1ODVlLCAweGZiZDRkYzlmLCAweDU4NDJmNGQzLCAweDY3ODk4YTQ2LAorICAgIDB4YzQxZmEyMGEsIDB4MTgxZjc3NmMsIDB4YmI4OTVmMjAsIDB4ODQ0MjIxYjUsIDB4MjdkNDA5ZjksCisgICAgMHhkZWZlMmU3NiwgMHg3ZDY4MDYzYSwgMHg0MmEzNzhhZiwgMHhlMTM1NTBlMywgMHgzZDM1ODU4NSwKKyAgICAweDllYTNhZGM5LCAweGExNjhkMzVjLCAweDAyZmVmYjEwLCAweGMyMTg3ZmQxLCAweDYxOGU1NzlkLAorICAgIDB4NWU0NTI5MDgsIDB4ZmRkMzAxNDQsIDB4MjFkM2Q0MjIsIDB4ODI0NWZjNmUsIDB4YmQ4ZTgyZmIsCisgICAgMHgxZTE4YWFiNywgMHg5NGFiY2JhNCwgMHgzNzNkZTNlOCwgMHgwOGY2OWQ3ZCwgMHhhYjYwYjUzMSwKKyAgICAweDc3NjA2MDU3LCAweGQ0ZjY0ODFiLCAweGViM2QzNjhlLCAweDQ4YWIxZWMyLCAweDg4NGQ5YTAzLAorICAgIDB4MmJkYmIyNGYsIDB4MTQxMGNjZGEsIDB4Yjc4NmU0OTYsIDB4NmI4NjMxZjAsIDB4YzgxMDE5YmMsCisgICAgMHhmN2RiNjcyOSwgMHg1NDRkNGY2NSwgMHhhZDY3NjhlYSwgMHgwZWYxNDBhNiwgMHgzMTNhM2UzMywKKyAgICAweDkyYWMxNjdmLCAweDRlYWNjMzE5LCAweGVkM2FlYjU1LCAweGQyZjE5NWMwLCAweDcxNjdiZDhjLAorICAgIDB4YjE4MTM5NGQsIDB4MTIxNzExMDEsIDB4MmRkYzZmOTQsIDB4OGU0YTQ3ZDgsIDB4NTI0YTkyYmUsCisgICAgMHhmMWRjYmFmMiwgMHhjZTE3YzQ2NywgMHg2ZDgxZWMyYiwgMHgxNTE0MWMzMSwgMHhiNjgyMzQ3ZCwKKyAgICAweDg5NDk0YWU4LCAweDJhZGY2MmE0LCAweGY2ZGZiN2MyLCAweDU1NDk5ZjhlLCAweDZhODJlMTFiLAorICAgIDB4YzkxNGM5NTcsIDB4MDlmMjRkOTYsIDB4YWE2NDY1ZGEsIDB4OTVhZjFiNGYsIDB4MzYzOTMzMDMsCisgICAgMHhlYTM5ZTY2NSwgMHg0OWFmY2UyOSwgMHg3NjY0YjBiYywgMHhkNWYyOThmMCwgMHgyY2Q4YmY3ZiwKKyAgICAweDhmNGU5NzMzLCAweGIwODVlOWE2LCAweDEzMTNjMWVhLCAweGNmMTMxNDhjLCAweDZjODUzY2MwLAorICAgIDB4NTM0ZTQyNTUsIDB4ZjBkODZhMTksIDB4MzAzZWVlZDgsIDB4OTNhOGM2OTQsIDB4YWM2M2I4MDEsCisgICAgMHgwZmY1OTA0ZCwgMHhkM2Y1NDUyYiwgMHg3MDYzNmQ2NywgMHg0ZmE4MTNmMiwgMHhlYzNlM2JiZSwKKyAgICAweDY2OGQ1YWFkLCAweGM1MWI3MmUxLCAweGZhZDAwYzc0LCAweDU5NDYyNDM4LCAweDg1NDZmMTVlLAorICAgIDB4MjZkMGQ5MTIsIDB4MTkxYmE3ODcsIDB4YmE4ZDhmY2IsIDB4N2E2YjBiMGEsIDB4ZDlmZDIzNDYsCisgICAgMHhlNjM2NWRkMywgMHg0NWEwNzU5ZiwgMHg5OWEwYTBmOSwgMHgzYTM2ODhiNSwgMHgwNWZkZjYyMCwKKyAgICAweGE2NmJkZTZjLCAweDVmNDFmOWUzLCAweGZjZDdkMWFmLCAweGMzMWNhZjNhLCAweDYwOGE4Nzc2LAorICAgIDB4YmM4YTUyMTAsIDB4MWYxYzdhNWMsIDB4MjBkNzA0YzksIDB4ODM0MTJjODUsIDB4NDNhN2E4NDQsCisgICAgMHhlMDMxODAwOCwgMHhkZmZhZmU5ZCwgMHg3YzZjZDZkMSwgMHhhMDZjMDNiNywgMHgwM2ZhMmJmYiwKKyAgICAweDNjMzE1NTZlLCAweDlmYTc3ZDIyLCAweGYyMjY5MTA5LCAweDUxYjBiOTQ1LCAweDZlN2JjN2QwLAorICAgIDB4Y2RlZGVmOWMsIDB4MTFlZDNhZmEsIDB4YjI3YjEyYjYsIDB4OGRiMDZjMjMsIDB4MmUyNjQ0NmYsCisgICAgMHhlZWMwYzBhZSwgMHg0ZDU2ZThlMiwgMHg3MjlkOTY3NywgMHhkMTBiYmUzYiwgMHgwZDBiNmI1ZCwKKyAgICAweGFlOWQ0MzExLCAweDkxNTYzZDg0LCAweDMyYzAxNWM4LCAweGNiZWEzMjQ3LCAweDY4N2MxYTBiLAorICAgIDB4NTdiNzY0OWUsIDB4ZjQyMTRjZDIsIDB4MjgyMTk5YjQsIDB4OGJiN2IxZjgsIDB4YjQ3Y2NmNmQsCisgICAgMHgxN2VhZTcyMSwgMHhkNzBjNjNlMCwgMHg3NDlhNGJhYywgMHg0YjUxMzUzOSwgMHhlOGM3MWQ3NSwKKyAgICAweDM0YzdjODEzLCAweDk3NTFlMDVmLCAweGE4OWE5ZWNhLCAweDBiMGNiNjg2LCAweDgxYmZkNzk1LAorICAgIDB4MjIyOWZmZDksIDB4MWRlMjgxNGMsIDB4YmU3NGE5MDAsIDB4NjI3NDdjNjYsIDB4YzFlMjU0MmEsCisgICAgMHhmZTI5MmFiZiwgMHg1ZGJmMDJmMywgMHg5ZDU5ODYzMiwgMHgzZWNmYWU3ZSwgMHgwMTA0ZDBlYiwKKyAgICAweGEyOTJmOGE3LCAweDdlOTIyZGMxLCAweGRkMDQwNThkLCAweGUyY2Y3YjE4LCAweDQxNTk1MzU0LAorICAgIDB4Yjg3Mzc0ZGIsIDB4MWJlNTVjOTcsIDB4MjQyZTIyMDIsIDB4ODdiODBhNGUsIDB4NWJiOGRmMjgsCisgICAgMHhmODJlZjc2NCwgMHhjN2U1ODlmMSwgMHg2NDczYTFiZCwgMHhhNDk1MjU3YywgMHgwNzAzMGQzMCwKKyAgICAweDM4Yzg3M2E1LCAweDliNWU1YmU5LCAweDQ3NWU4ZThmLCAweGU0YzhhNmMzLCAweGRiMDNkODU2LAorICAgIDB4Nzg5NWYwMWF9LAorICAgezB4MDAwMDAwMDAsIDB4MmEyODM4NjIsIDB4NTQ1MDcwYzQsIDB4N2U3ODQ4YTYsIDB4YThhMGUxODgsCisgICAgMHg4Mjg4ZDllYSwgMHhmY2YwOTE0YywgMHhkNmQ4YTkyZSwgMHg4YTMwYzU1MSwgMHhhMDE4ZmQzMywKKyAgICAweGRlNjBiNTk1LCAweGY0NDg4ZGY3LCAweDIyOTAyNGQ5LCAweDA4YjgxY2JiLCAweDc2YzA1NDFkLAorICAgIDB4NWNlODZjN2YsIDB4Y2YxMDhjZTMsIDB4ZTUzOGI0ODEsIDB4OWI0MGZjMjcsIDB4YjE2OGM0NDUsCisgICAgMHg2N2IwNmQ2YiwgMHg0ZDk4NTUwOSwgMHgzM2UwMWRhZiwgMHgxOWM4MjVjZCwgMHg0NTIwNDliMiwKKyAgICAweDZmMDg3MWQwLCAweDExNzAzOTc2LCAweDNiNTgwMTE0LCAweGVkODBhODNhLCAweGM3YTg5MDU4LAorICAgIDB4YjlkMGQ4ZmUsIDB4OTNmOGUwOWMsIDB4NDU1MDFmODcsIDB4NmY3ODI3ZTUsIDB4MTEwMDZmNDMsCisgICAgMHgzYjI4NTcyMSwgMHhlZGYwZmUwZiwgMHhjN2Q4YzY2ZCwgMHhiOWEwOGVjYiwgMHg5Mzg4YjZhOSwKKyAgICAweGNmNjBkYWQ2LCAweGU1NDhlMmI0LCAweDliMzBhYTEyLCAweGIxMTg5MjcwLCAweDY3YzAzYjVlLAorICAgIDB4NGRlODAzM2MsIDB4MzM5MDRiOWEsIDB4MTliODczZjgsIDB4OGE0MDkzNjQsIDB4YTA2OGFiMDYsCisgICAgMHhkZTEwZTNhMCwgMHhmNDM4ZGJjMiwgMHgyMmUwNzJlYywgMHgwOGM4NGE4ZSwgMHg3NmIwMDIyOCwKKyAgICAweDVjOTgzYTRhLCAweDAwNzA1NjM1LCAweDJhNTg2ZTU3LCAweDU0MjAyNmYxLCAweDdlMDgxZTkzLAorICAgIDB4YThkMGI3YmQsIDB4ODJmODhmZGYsIDB4ZmM4MGM3NzksIDB4ZDZhOGZmMWIsIDB4OGFhMDNmMGUsCisgICAgMHhhMDg4MDc2YywgMHhkZWYwNGZjYSwgMHhmNGQ4NzdhOCwgMHgyMjAwZGU4NiwgMHgwODI4ZTZlNCwKKyAgICAweDc2NTBhZTQyLCAweDVjNzg5NjIwLCAweDAwOTBmYTVmLCAweDJhYjhjMjNkLCAweDU0YzA4YTliLAorICAgIDB4N2VlOGIyZjksIDB4YTgzMDFiZDcsIDB4ODIxODIzYjUsIDB4ZmM2MDZiMTMsIDB4ZDY0ODUzNzEsCisgICAgMHg0NWIwYjNlZCwgMHg2Zjk4OGI4ZiwgMHgxMWUwYzMyOSwgMHgzYmM4ZmI0YiwgMHhlZDEwNTI2NSwKKyAgICAweGM3Mzg2YTA3LCAweGI5NDAyMmExLCAweDkzNjgxYWMzLCAweGNmODA3NmJjLCAweGU1YTg0ZWRlLAorICAgIDB4OWJkMDA2NzgsIDB4YjFmODNlMWEsIDB4NjcyMDk3MzQsIDB4NGQwOGFmNTYsIDB4MzM3MGU3ZjAsCisgICAgMHgxOTU4ZGY5MiwgMHhjZmYwMjA4OSwgMHhlNWQ4MThlYiwgMHg5YmEwNTA0ZCwgMHhiMTg4NjgyZiwKKyAgICAweDY3NTBjMTAxLCAweDRkNzhmOTYzLCAweDMzMDBiMWM1LCAweDE5Mjg4OWE3LCAweDQ1YzBlNWQ4LAorICAgIDB4NmZlOGRkYmEsIDB4MTE5MDk1MWMsIDB4M2JiOGFkN2UsIDB4ZWQ2MDA0NTAsIDB4Yzc0ODNjMzIsCisgICAgMHhiOTMwNzQ5NCwgMHg5MzE4NGNmNiwgMHgwMGUwYWM2YSwgMHgyYWM4OTQwOCwgMHg1NGIwZGNhZSwKKyAgICAweDdlOThlNGNjLCAweGE4NDA0ZGUyLCAweDgyNjg3NTgwLCAweGZjMTAzZDI2LCAweGQ2MzgwNTQ0LAorICAgIDB4OGFkMDY5M2IsIDB4YTBmODUxNTksIDB4ZGU4MDE5ZmYsIDB4ZjRhODIxOWQsIDB4MjI3MDg4YjMsCisgICAgMHgwODU4YjBkMSwgMHg3NjIwZjg3NywgMHg1YzA4YzAxNSwgMHhjZTMxNzg1ZCwgMHhlNDE5NDAzZiwKKyAgICAweDlhNjEwODk5LCAweGIwNDkzMGZiLCAweDY2OTE5OWQ1LCAweDRjYjlhMWI3LCAweDMyYzFlOTExLAorICAgIDB4MThlOWQxNzMsIDB4NDQwMWJkMGMsIDB4NmUyOTg1NmUsIDB4MTA1MWNkYzgsIDB4M2E3OWY1YWEsCisgICAgMHhlY2ExNWM4NCwgMHhjNjg5NjRlNiwgMHhiOGYxMmM0MCwgMHg5MmQ5MTQyMiwgMHgwMTIxZjRiZSwKKyAgICAweDJiMDljY2RjLCAweDU1NzE4NDdhLCAweDdmNTliYzE4LCAweGE5ODExNTM2LCAweDgzYTkyZDU0LAorICAgIDB4ZmRkMTY1ZjIsIDB4ZDdmOTVkOTAsIDB4OGIxMTMxZWYsIDB4YTEzOTA5OGQsIDB4ZGY0MTQxMmIsCisgICAgMHhmNTY5Nzk0OSwgMHgyM2IxZDA2NywgMHgwOTk5ZTgwNSwgMHg3N2UxYTBhMywgMHg1ZGM5OThjMSwKKyAgICAweDhiNjE2N2RhLCAweGExNDk1ZmI4LCAweGRmMzExNzFlLCAweGY1MTkyZjdjLCAweDIzYzE4NjUyLAorICAgIDB4MDllOWJlMzAsIDB4Nzc5MWY2OTYsIDB4NWRiOWNlZjQsIDB4MDE1MWEyOGIsIDB4MmI3OTlhZTksCisgICAgMHg1NTAxZDI0ZiwgMHg3ZjI5ZWEyZCwgMHhhOWYxNDMwMywgMHg4M2Q5N2I2MSwgMHhmZGExMzNjNywKKyAgICAweGQ3ODkwYmE1LCAweDQ0NzFlYjM5LCAweDZlNTlkMzViLCAweDEwMjE5YmZkLCAweDNhMDlhMzlmLAorICAgIDB4ZWNkMTBhYjEsIDB4YzZmOTMyZDMsIDB4Yjg4MTdhNzUsIDB4OTJhOTQyMTcsIDB4Y2U0MTJlNjgsCisgICAgMHhlNDY5MTYwYSwgMHg5YTExNWVhYywgMHhiMDM5NjZjZSwgMHg2NmUxY2ZlMCwgMHg0Y2M5Zjc4MiwKKyAgICAweDMyYjFiZjI0LCAweDE4OTk4NzQ2LCAweDQ0OTE0NzUzLCAweDZlYjk3ZjMxLCAweDEwYzEzNzk3LAorICAgIDB4M2FlOTBmZjUsIDB4ZWMzMWE2ZGIsIDB4YzYxOTllYjksIDB4Yjg2MWQ2MWYsIDB4OTI0OWVlN2QsCisgICAgMHhjZWExODIwMiwgMHhlNDg5YmE2MCwgMHg5YWYxZjJjNiwgMHhiMGQ5Y2FhNCwgMHg2NjAxNjM4YSwKKyAgICAweDRjMjk1YmU4LCAweDMyNTExMzRlLCAweDE4NzkyYjJjLCAweDhiODFjYmIwLCAweGExYTlmM2QyLAorICAgIDB4ZGZkMWJiNzQsIDB4ZjVmOTgzMTYsIDB4MjMyMTJhMzgsIDB4MDkwOTEyNWEsIDB4Nzc3MTVhZmMsCisgICAgMHg1ZDU5NjI5ZSwgMHgwMWIxMGVlMSwgMHgyYjk5MzY4MywgMHg1NWUxN2UyNSwgMHg3ZmM5NDY0NywKKyAgICAweGE5MTFlZjY5LCAweDgzMzlkNzBiLCAweGZkNDE5ZmFkLCAweGQ3NjlhN2NmLCAweDAxYzE1OGQ0LAorICAgIDB4MmJlOTYwYjYsIDB4NTU5MTI4MTAsIDB4N2ZiOTEwNzIsIDB4YTk2MWI5NWMsIDB4ODM0OTgxM2UsCisgICAgMHhmZDMxYzk5OCwgMHhkNzE5ZjFmYSwgMHg4YmYxOWQ4NSwgMHhhMWQ5YTVlNywgMHhkZmExZWQ0MSwKKyAgICAweGY1ODlkNTIzLCAweDIzNTE3YzBkLCAweDA5Nzk0NDZmLCAweDc3MDEwY2M5LCAweDVkMjkzNGFiLAorICAgIDB4Y2VkMWQ0MzcsIDB4ZTRmOWVjNTUsIDB4OWE4MWE0ZjMsIDB4YjBhOTljOTEsIDB4NjY3MTM1YmYsCisgICAgMHg0YzU5MGRkZCwgMHgzMjIxNDU3YiwgMHgxODA5N2QxOSwgMHg0NGUxMTE2NiwgMHg2ZWM5MjkwNCwKKyAgICAweDEwYjE2MWEyLCAweDNhOTk1OWMwLCAweGVjNDFmMGVlLCAweGM2NjljODhjLCAweGI4MTE4MDJhLAorICAgIDB4OTIzOWI4NDh9LAorICAgezB4MDAwMDAwMDAsIDB4NDcxM2Y2ZmIsIDB4OGUyN2VkZjYsIDB4YzkzNDFiMGQsIDB4YzczZWRkYWQsCisgICAgMHg4MDJkMmI1NiwgMHg0OTE5MzA1YiwgMHgwZTBhYzZhMCwgMHg1NTBjYmQxYiwgMHgxMjFmNGJlMCwKKyAgICAweGRiMmI1MGVkLCAweDljMzhhNjE2LCAweDkyMzI2MGI2LCAweGQ1MjE5NjRkLCAweDFjMTU4ZDQwLAorICAgIDB4NWIwNjdiYmIsIDB4YWExOTdhMzYsIDB4ZWQwYThjY2QsIDB4MjQzZTk3YzAsIDB4NjMyZDYxM2IsCisgICAgMHg2ZDI3YTc5YiwgMHgyYTM0NTE2MCwgMHhlMzAwNGE2ZCwgMHhhNDEzYmM5NiwgMHhmZjE1YzcyZCwKKyAgICAweGI4MDYzMWQ2LCAweDcxMzIyYWRiLCAweDM2MjFkYzIwLCAweDM4MmIxYTgwLCAweDdmMzhlYzdiLAorICAgIDB4YjYwY2Y3NzYsIDB4ZjExZjAxOGQsIDB4OGY0M2YyMmQsIDB4Yzg1MDA0ZDYsIDB4MDE2NDFmZGIsCisgICAgMHg0Njc3ZTkyMCwgMHg0ODdkMmY4MCwgMHgwZjZlZDk3YiwgMHhjNjVhYzI3NiwgMHg4MTQ5MzQ4ZCwKKyAgICAweGRhNGY0ZjM2LCAweDlkNWNiOWNkLCAweDU0NjhhMmMwLCAweDEzN2I1NDNiLCAweDFkNzE5MjliLAorICAgIDB4NWE2MjY0NjAsIDB4OTM1NjdmNmQsIDB4ZDQ0NTg5OTYsIDB4MjU1YTg4MWIsIDB4NjI0OTdlZTAsCisgICAgMHhhYjdkNjVlZCwgMHhlYzZlOTMxNiwgMHhlMjY0NTViNiwgMHhhNTc3YTM0ZCwgMHg2YzQzYjg0MCwKKyAgICAweDJiNTA0ZWJiLCAweDcwNTYzNTAwLCAweDM3NDVjM2ZiLCAweGZlNzFkOGY2LCAweGI5NjIyZTBkLAorICAgIDB4Yjc2OGU4YWQsIDB4ZjA3YjFlNTYsIDB4Mzk0ZjA1NWIsIDB4N2U1Y2YzYTAsIDB4YzVmNmUyMWIsCisgICAgMHg4MmU1MTRlMCwgMHg0YmQxMGZlZCwgMHgwY2MyZjkxNiwgMHgwMmM4M2ZiNiwgMHg0NWRiYzk0ZCwKKyAgICAweDhjZWZkMjQwLCAweGNiZmMyNGJiLCAweDkwZmE1ZjAwLCAweGQ3ZTlhOWZiLCAweDFlZGRiMmY2LAorICAgIDB4NTljZTQ0MGQsIDB4NTdjNDgyYWQsIDB4MTBkNzc0NTYsIDB4ZDllMzZmNWIsIDB4OWVmMDk5YTAsCisgICAgMHg2ZmVmOTgyZCwgMHgyOGZjNmVkNiwgMHhlMWM4NzVkYiwgMHhhNmRiODMyMCwgMHhhOGQxNDU4MCwKKyAgICAweGVmYzJiMzdiLCAweDI2ZjZhODc2LCAweDYxZTU1ZThkLCAweDNhZTMyNTM2LCAweDdkZjBkM2NkLAorICAgIDB4YjRjNGM4YzAsIDB4ZjNkNzNlM2IsIDB4ZmRkZGY4OWIsIDB4YmFjZTBlNjAsIDB4NzNmYTE1NmQsCisgICAgMHgzNGU5ZTM5NiwgMHg0YWI1MTAzNiwgMHgwZGE2ZTZjZCwgMHhjNDkyZmRjMCwgMHg4MzgxMGIzYiwKKyAgICAweDhkOGJjZDliLCAweGNhOTgzYjYwLCAweDAzYWMyMDZkLCAweDQ0YmZkNjk2LCAweDFmYjlhZDJkLAorICAgIDB4NThhYTViZDYsIDB4OTE5ZTQwZGIsIDB4ZDY4ZGI2MjAsIDB4ZDg4NzcwODAsIDB4OWY5NDg2N2IsCisgICAgMHg1NmEwOWQ3NiwgMHgxMWIzNmI4ZCwgMHhlMGFjNmEwMCwgMHhhN2JmOWNmYiwgMHg2ZThiODdmNiwKKyAgICAweDI5OTg3MTBkLCAweDI3OTJiN2FkLCAweDYwODE0MTU2LCAweGE5YjU1YTViLCAweGVlYTZhY2EwLAorICAgIDB4YjVhMGQ3MWIsIDB4ZjJiMzIxZTAsIDB4M2I4NzNhZWQsIDB4N2M5NGNjMTYsIDB4NzI5ZTBhYjYsCisgICAgMHgzNThkZmM0ZCwgMHhmY2I5ZTc0MCwgMHhiYmFhMTFiYiwgMHg1MDljYzI3NywgMHgxNzhmMzQ4YywKKyAgICAweGRlYmIyZjgxLCAweDk5YThkOTdhLCAweDk3YTIxZmRhLCAweGQwYjFlOTIxLCAweDE5ODVmMjJjLAorICAgIDB4NWU5NjA0ZDcsIDB4MDU5MDdmNmMsIDB4NDI4Mzg5OTcsIDB4OGJiNzkyOWEsIDB4Y2NhNDY0NjEsCisgICAgMHhjMmFlYTJjMSwgMHg4NWJkNTQzYSwgMHg0Yzg5NGYzNywgMHgwYjlhYjljYywgMHhmYTg1Yjg0MSwKKyAgICAweGJkOTY0ZWJhLCAweDc0YTI1NWI3LCAweDMzYjFhMzRjLCAweDNkYmI2NWVjLCAweDdhYTg5MzE3LAorICAgIDB4YjM5Yzg4MWEsIDB4ZjQ4ZjdlZTEsIDB4YWY4OTA1NWEsIDB4ZTg5YWYzYTEsIDB4MjFhZWU4YWMsCisgICAgMHg2NmJkMWU1NywgMHg2OGI3ZDhmNywgMHgyZmE0MmUwYywgMHhlNjkwMzUwMSwgMHhhMTgzYzNmYSwKKyAgICAweGRmZGYzMDVhLCAweDk4Y2NjNmExLCAweDUxZjhkZGFjLCAweDE2ZWIyYjU3LCAweDE4ZTFlZGY3LAorICAgIDB4NWZmMjFiMGMsIDB4OTZjNjAwMDEsIDB4ZDFkNWY2ZmEsIDB4OGFkMzhkNDEsIDB4Y2RjMDdiYmEsCisgICAgMHgwNGY0NjBiNywgMHg0M2U3OTY0YywgMHg0ZGVkNTBlYywgMHgwYWZlYTYxNywgMHhjM2NhYmQxYSwKKyAgICAweDg0ZDk0YmUxLCAweDc1YzY0YTZjLCAweDMyZDViYzk3LCAweGZiZTFhNzlhLCAweGJjZjI1MTYxLAorICAgIDB4YjJmODk3YzEsIDB4ZjVlYjYxM2EsIDB4M2NkZjdhMzcsIDB4N2JjYzhjY2MsIDB4MjBjYWY3NzcsCisgICAgMHg2N2Q5MDE4YywgMHhhZWVkMWE4MSwgMHhlOWZlZWM3YSwgMHhlN2Y0MmFkYSwgMHhhMGU3ZGMyMSwKKyAgICAweDY5ZDNjNzJjLCAweDJlYzAzMWQ3LCAweDk1NmEyMDZjLCAweGQyNzlkNjk3LCAweDFiNGRjZDlhLAorICAgIDB4NWM1ZTNiNjEsIDB4NTI1NGZkYzEsIDB4MTU0NzBiM2EsIDB4ZGM3MzEwMzcsIDB4OWI2MGU2Y2MsCisgICAgMHhjMDY2OWQ3NywgMHg4Nzc1NmI4YywgMHg0ZTQxNzA4MSwgMHgwOTUyODY3YSwgMHgwNzU4NDBkYSwKKyAgICAweDQwNGJiNjIxLCAweDg5N2ZhZDJjLCAweGNlNmM1YmQ3LCAweDNmNzM1YTVhLCAweDc4NjBhY2ExLAorICAgIDB4YjE1NGI3YWMsIDB4ZjY0NzQxNTcsIDB4Zjg0ZDg3ZjcsIDB4YmY1ZTcxMGMsIDB4NzY2YTZhMDEsCisgICAgMHgzMTc5OWNmYSwgMHg2YTdmZTc0MSwgMHgyZDZjMTFiYSwgMHhlNDU4MGFiNywgMHhhMzRiZmM0YywKKyAgICAweGFkNDEzYWVjLCAweGVhNTJjYzE3LCAweDIzNjZkNzFhLCAweDY0NzUyMWUxLCAweDFhMjlkMjQxLAorICAgIDB4NWQzYTI0YmEsIDB4OTQwZTNmYjcsIDB4ZDMxZGM5NGMsIDB4ZGQxNzBmZWMsIDB4OWEwNGY5MTcsCisgICAgMHg1MzMwZTIxYSwgMHgxNDIzMTRlMSwgMHg0ZjI1NmY1YSwgMHgwODM2OTlhMSwgMHhjMTAyODJhYywKKyAgICAweDg2MTE3NDU3LCAweDg4MWJiMmY3LCAweGNmMDg0NDBjLCAweDA2M2M1ZjAxLCAweDQxMmZhOWZhLAorICAgIDB4YjAzMGE4NzcsIDB4ZjcyMzVlOGMsIDB4M2UxNzQ1ODEsIDB4NzkwNGIzN2EsIDB4NzcwZTc1ZGEsCisgICAgMHgzMDFkODMyMSwgMHhmOTI5OTgyYywgMHhiZTNhNmVkNywgMHhlNTNjMTU2YywgMHhhMjJmZTM5NywKKyAgICAweDZiMWJmODlhLCAweDJjMDgwZTYxLCAweDIyMDJjOGMxLCAweDY1MTEzZTNhLCAweGFjMjUyNTM3LAorICAgIDB4ZWIzNmQzY2N9LAorICAgezB4MDAwMDAwMDAsIDB4YTEzOTg0ZWUsIDB4OTkwMjBmOWQsIDB4MzgzYjhiNzMsIDB4ZTk3NTE5N2IsCisgICAgMHg0ODRjOWQ5NSwgMHg3MDc3MTZlNiwgMHhkMTRlOTIwOCwgMHgwOTliMzRiNywgMHhhOGEyYjA1OSwKKyAgICAweDkwOTkzYjJhLCAweDMxYTBiZmM0LCAweGUwZWUyZGNjLCAweDQxZDdhOTIyLCAweDc5ZWMyMjUxLAorICAgIDB4ZDhkNWE2YmYsIDB4MTMzNjY5NmUsIDB4YjIwZmVkODAsIDB4OGEzNDY2ZjMsIDB4MmIwZGUyMWQsCisgICAgMHhmYTQzNzAxNSwgMHg1YjdhZjRmYiwgMHg2MzQxN2Y4OCwgMHhjMjc4ZmI2NiwgMHgxYWFkNWRkOSwKKyAgICAweGJiOTRkOTM3LCAweDgzYWY1MjQ0LCAweDIyOTZkNmFhLCAweGYzZDg0NGEyLCAweDUyZTFjMDRjLAorICAgIDB4NmFkYTRiM2YsIDB4Y2JlM2NmZDEsIDB4MjY2Y2QyZGMsIDB4ODc1NTU2MzIsIDB4YmY2ZWRkNDEsCisgICAgMHgxZTU3NTlhZiwgMHhjZjE5Y2JhNywgMHg2ZTIwNGY0OSwgMHg1NjFiYzQzYSwgMHhmNzIyNDBkNCwKKyAgICAweDJmZjdlNjZiLCAweDhlY2U2Mjg1LCAweGI2ZjVlOWY2LCAweDE3Y2M2ZDE4LCAweGM2ODJmZjEwLAorICAgIDB4NjdiYjdiZmUsIDB4NWY4MGYwOGQsIDB4ZmViOTc0NjMsIDB4MzU1YWJiYjIsIDB4OTQ2MzNmNWMsCisgICAgMHhhYzU4YjQyZiwgMHgwZDYxMzBjMSwgMHhkYzJmYTJjOSwgMHg3ZDE2MjYyNywgMHg0NTJkYWQ1NCwKKyAgICAweGU0MTQyOWJhLCAweDNjYzE4ZjA1LCAweDlkZjgwYmViLCAweGE1YzM4MDk4LCAweDA0ZmEwNDc2LAorICAgIDB4ZDViNDk2N2UsIDB4NzQ4ZDEyOTAsIDB4NGNiNjk5ZTMsIDB4ZWQ4ZjFkMGQsIDB4NGNkOWE1YjgsCisgICAgMHhlZGUwMjE1NiwgMHhkNWRiYWEyNSwgMHg3NGUyMmVjYiwgMHhhNWFjYmNjMywgMHgwNDk1MzgyZCwKKyAgICAweDNjYWViMzVlLCAweDlkOTczN2IwLCAweDQ1NDI5MTBmLCAweGU0N2IxNWUxLCAweGRjNDA5ZTkyLAorICAgIDB4N2Q3OTFhN2MsIDB4YWMzNzg4NzQsIDB4MGQwZTBjOWEsIDB4MzUzNTg3ZTksIDB4OTQwYzAzMDcsCisgICAgMHg1ZmVmY2NkNiwgMHhmZWQ2NDgzOCwgMHhjNmVkYzM0YiwgMHg2N2Q0NDdhNSwgMHhiNjlhZDVhZCwKKyAgICAweDE3YTM1MTQzLCAweDJmOThkYTMwLCAweDhlYTE1ZWRlLCAweDU2NzRmODYxLCAweGY3NGQ3YzhmLAorICAgIDB4Y2Y3NmY3ZmMsIDB4NmU0ZjczMTIsIDB4YmYwMWUxMWEsIDB4MWUzODY1ZjQsIDB4MjYwM2VlODcsCisgICAgMHg4NzNhNmE2OSwgMHg2YWI1Nzc2NCwgMHhjYjhjZjM4YSwgMHhmM2I3NzhmOSwgMHg1MjhlZmMxNywKKyAgICAweDgzYzA2ZTFmLCAweDIyZjllYWYxLCAweDFhYzI2MTgyLCAweGJiZmJlNTZjLCAweDYzMmU0M2QzLAorICAgIDB4YzIxN2M3M2QsIDB4ZmEyYzRjNGUsIDB4NWIxNWM4YTAsIDB4OGE1YjVhYTgsIDB4MmI2MmRlNDYsCisgICAgMHgxMzU5NTUzNSwgMHhiMjYwZDFkYiwgMHg3OTgzMWUwYSwgMHhkOGJhOWFlNCwgMHhlMDgxMTE5NywKKyAgICAweDQxYjg5NTc5LCAweDkwZjYwNzcxLCAweDMxY2Y4MzlmLCAweDA5ZjQwOGVjLCAweGE4Y2Q4YzAyLAorICAgIDB4NzAxODJhYmQsIDB4ZDEyMWFlNTMsIDB4ZTkxYTI1MjAsIDB4NDgyM2ExY2UsIDB4OTk2ZDMzYzYsCisgICAgMHgzODU0YjcyOCwgMHgwMDZmM2M1YiwgMHhhMTU2YjhiNSwgMHg5OWIzNGI3MCwgMHgzODhhY2Y5ZSwKKyAgICAweDAwYjE0NGVkLCAweGExODhjMDAzLCAweDcwYzY1MjBiLCAweGQxZmZkNmU1LCAweGU5YzQ1ZDk2LAorICAgIDB4NDhmZGQ5NzgsIDB4OTAyODdmYzcsIDB4MzExMWZiMjksIDB4MDkyYTcwNWEsIDB4YTgxM2Y0YjQsCisgICAgMHg3OTVkNjZiYywgMHhkODY0ZTI1MiwgMHhlMDVmNjkyMSwgMHg0MTY2ZWRjZiwgMHg4YTg1MjIxZSwKKyAgICAweDJiYmNhNmYwLCAweDEzODcyZDgzLCAweGIyYmVhOTZkLCAweDYzZjAzYjY1LCAweGMyYzliZjhiLAorICAgIDB4ZmFmMjM0ZjgsIDB4NWJjYmIwMTYsIDB4ODMxZTE2YTksIDB4MjIyNzkyNDcsIDB4MWExYzE5MzQsCisgICAgMHhiYjI1OWRkYSwgMHg2YTZiMGZkMiwgMHhjYjUyOGIzYywgMHhmMzY5MDA0ZiwgMHg1MjUwODRhMSwKKyAgICAweGJmZGY5OWFjLCAweDFlZTYxZDQyLCAweDI2ZGQ5NjMxLCAweDg3ZTQxMmRmLCAweDU2YWE4MGQ3LAorICAgIDB4Zjc5MzA0MzksIDB4Y2ZhODhmNGEsIDB4NmU5MTBiYTQsIDB4YjY0NGFkMWIsIDB4MTc3ZDI5ZjUsCisgICAgMHgyZjQ2YTI4NiwgMHg4ZTdmMjY2OCwgMHg1ZjMxYjQ2MCwgMHhmZTA4MzA4ZSwgMHhjNjMzYmJmZCwKKyAgICAweDY3MGEzZjEzLCAweGFjZTlmMGMyLCAweDBkZDA3NDJjLCAweDM1ZWJmZjVmLCAweDk0ZDI3YmIxLAorICAgIDB4NDU5Y2U5YjksIDB4ZTRhNTZkNTcsIDB4ZGM5ZWU2MjQsIDB4N2RhNzYyY2EsIDB4YTU3MmM0NzUsCisgICAgMHgwNDRiNDA5YiwgMHgzYzcwY2JlOCwgMHg5ZDQ5NGYwNiwgMHg0YzA3ZGQwZSwgMHhlZDNlNTllMCwKKyAgICAweGQ1MDVkMjkzLCAweDc0M2M1NjdkLCAweGQ1NmFlZWM4LCAweDc0NTM2YTI2LCAweDRjNjhlMTU1LAorICAgIDB4ZWQ1MTY1YmIsIDB4M2MxZmY3YjMsIDB4OWQyNjczNWQsIDB4YTUxZGY4MmUsIDB4MDQyNDdjYzAsCisgICAgMHhkY2YxZGE3ZiwgMHg3ZGM4NWU5MSwgMHg0NWYzZDVlMiwgMHhlNGNhNTEwYywgMHgzNTg0YzMwNCwKKyAgICAweDk0YmQ0N2VhLCAweGFjODZjYzk5LCAweDBkYmY0ODc3LCAweGM2NWM4N2E2LCAweDY3NjUwMzQ4LAorICAgIDB4NWY1ZTg4M2IsIDB4ZmU2NzBjZDUsIDB4MmYyOTllZGQsIDB4OGUxMDFhMzMsIDB4YjYyYjkxNDAsCisgICAgMHgxNzEyMTVhZSwgMHhjZmM3YjMxMSwgMHg2ZWZlMzdmZiwgMHg1NmM1YmM4YywgMHhmN2ZjMzg2MiwKKyAgICAweDI2YjJhYTZhLCAweDg3OGIyZTg0LCAweGJmYjBhNWY3LCAweDFlODkyMTE5LCAweGYzMDYzYzE0LAorICAgIDB4NTIzZmI4ZmEsIDB4NmEwNDMzODksIDB4Y2IzZGI3NjcsIDB4MWE3MzI1NmYsIDB4YmI0YWExODEsCisgICAgMHg4MzcxMmFmMiwgMHgyMjQ4YWUxYywgMHhmYTlkMDhhMywgMHg1YmE0OGM0ZCwgMHg2MzlmMDczZSwKKyAgICAweGMyYTY4M2QwLCAweDEzZTgxMWQ4LCAweGIyZDE5NTM2LCAweDhhZWExZTQ1LCAweDJiZDM5YWFiLAorICAgIDB4ZTAzMDU1N2EsIDB4NDEwOWQxOTQsIDB4NzkzMjVhZTcsIDB4ZDgwYmRlMDksIDB4MDk0NTRjMDEsCisgICAgMHhhODdjYzhlZiwgMHg5MDQ3NDM5YywgMHgzMTdlYzc3MiwgMHhlOWFiNjFjZCwgMHg0ODkyZTUyMywKKyAgICAweDcwYTk2ZTUwLCAweGQxOTBlYWJlLCAweDAwZGU3OGI2LCAweGExZTdmYzU4LCAweDk5ZGM3NzJiLAorICAgIDB4MzhlNWYzYzV9LAorICAgezB4MDAwMDAwMDAsIDB4ZTgxNzkwYTEsIDB4MGI1ZTI3MDMsIDB4ZTM0OWI3YTIsIDB4MTZiYzRlMDYsCisgICAgMHhmZWFiZGVhNywgMHgxZGUyNjkwNSwgMHhmNWY1ZjlhNCwgMHgyZDc4OWMwYywgMHhjNTZmMGNhZCwKKyAgICAweDI2MjZiYjBmLCAweGNlMzEyYmFlLCAweDNiYzRkMjBhLCAweGQzZDM0MmFiLCAweDMwOWFmNTA5LAorICAgIDB4ZDg4ZDY1YTgsIDB4NWFmMTM4MTgsIDB4YjJlNmE4YjksIDB4NTFhZjFmMWIsIDB4YjliODhmYmEsCisgICAgMHg0YzRkNzYxZSwgMHhhNDVhZTZiZiwgMHg0NzEzNTExZCwgMHhhZjA0YzFiYywgMHg3Nzg5YTQxNCwKKyAgICAweDlmOWUzNGI1LCAweDdjZDc4MzE3LCAweDk0YzAxM2I2LCAweDYxMzVlYTEyLCAweDg5MjI3YWIzLAorICAgIDB4NmE2YmNkMTEsIDB4ODI3YzVkYjAsIDB4YjVlMjcwMzAsIDB4NWRmNWUwOTEsIDB4YmViYzU3MzMsCisgICAgMHg1NmFiYzc5MiwgMHhhMzVlM2UzNiwgMHg0YjQ5YWU5NywgMHhhODAwMTkzNSwgMHg0MDE3ODk5NCwKKyAgICAweDk4OWFlYzNjLCAweDcwOGQ3YzlkLCAweDkzYzRjYjNmLCAweDdiZDM1YjllLCAweDhlMjZhMjNhLAorICAgIDB4NjYzMTMyOWIsIDB4ODU3ODg1MzksIDB4NmQ2ZjE1OTgsIDB4ZWYxMzQ4MjgsIDB4MDcwNGQ4ODksCisgICAgMHhlNDRkNmYyYiwgMHgwYzVhZmY4YSwgMHhmOWFmMDYyZSwgMHgxMWI4OTY4ZiwgMHhmMmYxMjEyZCwKKyAgICAweDFhZTZiMThjLCAweGMyNmJkNDI0LCAweDJhN2M0NDg1LCAweGM5MzVmMzI3LCAweDIxMjI2Mzg2LAorICAgIDB4ZDRkNzlhMjIsIDB4M2NjMDBhODMsIDB4ZGY4OWJkMjEsIDB4Mzc5ZTJkODAsIDB4YjBiNWU2MjEsCisgICAgMHg1OGEyNzY4MCwgMHhiYmViYzEyMiwgMHg1M2ZjNTE4MywgMHhhNjA5YTgyNywgMHg0ZTFlMzg4NiwKKyAgICAweGFkNTc4ZjI0LCAweDQ1NDAxZjg1LCAweDlkY2Q3YTJkLCAweDc1ZGFlYThjLCAweDk2OTM1ZDJlLAorICAgIDB4N2U4NGNkOGYsIDB4OGI3MTM0MmIsIDB4NjM2NmE0OGEsIDB4ODAyZjEzMjgsIDB4NjgzODgzODksCisgICAgMHhlYTQ0ZGUzOSwgMHgwMjUzNGU5OCwgMHhlMTFhZjkzYSwgMHgwOTBkNjk5YiwgMHhmY2Y4OTAzZiwKKyAgICAweDE0ZWYwMDllLCAweGY3YTZiNzNjLCAweDFmYjEyNzlkLCAweGM3M2M0MjM1LCAweDJmMmJkMjk0LAorICAgIDB4Y2M2MjY1MzYsIDB4MjQ3NWY1OTcsIDB4ZDE4MDBjMzMsIDB4Mzk5NzljOTIsIDB4ZGFkZTJiMzAsCisgICAgMHgzMmM5YmI5MSwgMHgwNTU3OTYxMSwgMHhlZDQwMDZiMCwgMHgwZTA5YjExMiwgMHhlNjFlMjFiMywKKyAgICAweDEzZWJkODE3LCAweGZiZmM0OGI2LCAweDE4YjVmZjE0LCAweGYwYTI2ZmI1LCAweDI4MmYwYTFkLAorICAgIDB4YzAzODlhYmMsIDB4MjM3MTJkMWUsIDB4Y2I2NmJkYmYsIDB4M2U5MzQ0MWIsIDB4ZDY4NGQ0YmEsCisgICAgMHgzNWNkNjMxOCwgMHhkZGRhZjNiOSwgMHg1ZmE2YWUwOSwgMHhiN2IxM2VhOCwgMHg1NGY4ODkwYSwKKyAgICAweGJjZWYxOWFiLCAweDQ5MWFlMDBmLCAweGExMGQ3MGFlLCAweDQyNDRjNzBjLCAweGFhNTM1N2FkLAorICAgIDB4NzJkZTMyMDUsIDB4OWFjOWEyYTQsIDB4Nzk4MDE1MDYsIDB4OTE5Nzg1YTcsIDB4NjQ2MjdjMDMsCisgICAgMHg4Yzc1ZWNhMiwgMHg2ZjNjNWIwMCwgMHg4NzJiY2JhMSwgMHhiYTFhY2EwMywgMHg1MjBkNWFhMiwKKyAgICAweGIxNDRlZDAwLCAweDU5NTM3ZGExLCAweGFjYTY4NDA1LCAweDQ0YjExNGE0LCAweGE3ZjhhMzA2LAorICAgIDB4NGZlZjMzYTcsIDB4OTc2MjU2MGYsIDB4N2Y3NWM2YWUsIDB4OWMzYzcxMGMsIDB4NzQyYmUxYWQsCisgICAgMHg4MWRlMTgwOSwgMHg2OWM5ODhhOCwgMHg4YTgwM2YwYSwgMHg2Mjk3YWZhYiwgMHhlMGViZjIxYiwKKyAgICAweDA4ZmM2MmJhLCAweGViYjVkNTE4LCAweDAzYTI0NWI5LCAweGY2NTdiYzFkLCAweDFlNDAyY2JjLAorICAgIDB4ZmQwOTliMWUsIDB4MTUxZTBiYmYsIDB4Y2Q5MzZlMTcsIDB4MjU4NGZlYjYsIDB4YzZjZDQ5MTQsCisgICAgMHgyZWRhZDliNSwgMHhkYjJmMjAxMSwgMHgzMzM4YjBiMCwgMHhkMDcxMDcxMiwgMHgzODY2OTdiMywKKyAgICAweDBmZjhiYTMzLCAweGU3ZWYyYTkyLCAweDA0YTY5ZDMwLCAweGVjYjEwZDkxLCAweDE5NDRmNDM1LAorICAgIDB4ZjE1MzY0OTQsIDB4MTIxYWQzMzYsIDB4ZmEwZDQzOTcsIDB4MjI4MDI2M2YsIDB4Y2E5N2I2OWUsCisgICAgMHgyOWRlMDEzYywgMHhjMWM5OTE5ZCwgMHgzNDNjNjgzOSwgMHhkYzJiZjg5OCwgMHgzZjYyNGYzYSwKKyAgICAweGQ3NzVkZjliLCAweDU1MDk4MjJiLCAweGJkMWUxMjhhLCAweDVlNTdhNTI4LCAweGI2NDAzNTg5LAorICAgIDB4NDNiNWNjMmQsIDB4YWJhMjVjOGMsIDB4NDhlYmViMmUsIDB4YTBmYzdiOGYsIDB4Nzg3MTFlMjcsCisgICAgMHg5MDY2OGU4NiwgMHg3MzJmMzkyNCwgMHg5YjM4YTk4NSwgMHg2ZWNkNTAyMSwgMHg4NmRhYzA4MCwKKyAgICAweDY1OTM3NzIyLCAweDhkODRlNzgzLCAweDBhYWYyYzIyLCAweGUyYjhiYzgzLCAweDAxZjEwYjIxLAorICAgIDB4ZTllNjliODAsIDB4MWMxMzYyMjQsIDB4ZjQwNGYyODUsIDB4MTc0ZDQ1MjcsIDB4ZmY1YWQ1ODYsCisgICAgMHgyN2Q3YjAyZSwgMHhjZmMwMjA4ZiwgMHgyYzg5OTcyZCwgMHhjNDllMDc4YywgMHgzMTZiZmUyOCwKKyAgICAweGQ5N2M2ZTg5LCAweDNhMzVkOTJiLCAweGQyMjI0OThhLCAweDUwNWUxNDNhLCAweGI4NDk4NDliLAorICAgIDB4NWIwMDMzMzksIDB4YjMxN2EzOTgsIDB4NDZlMjVhM2MsIDB4YWVmNWNhOWQsIDB4NGRiYzdkM2YsCisgICAgMHhhNWFiZWQ5ZSwgMHg3ZDI2ODgzNiwgMHg5NTMxMTg5NywgMHg3Njc4YWYzNSwgMHg5ZTZmM2Y5NCwKKyAgICAweDZiOWFjNjMwLCAweDgzOGQ1NjkxLCAweDYwYzRlMTMzLCAweDg4ZDM3MTkyLCAweGJmNGQ1YzEyLAorICAgIDB4NTc1YWNjYjMsIDB4YjQxMzdiMTEsIDB4NWMwNGViYjAsIDB4YTlmMTEyMTQsIDB4NDFlNjgyYjUsCisgICAgMHhhMmFmMzUxNywgMHg0YWI4YTViNiwgMHg5MjM1YzAxZSwgMHg3YTIyNTBiZiwgMHg5OTZiZTcxZCwKKyAgICAweDcxN2M3N2JjLCAweDg0ODk4ZTE4LCAweDZjOWUxZWI5LCAweDhmZDdhOTFiLCAweDY3YzAzOWJhLAorICAgIDB4ZTViYzY0MGEsIDB4MGRhYmY0YWIsIDB4ZWVlMjQzMDksIDB4MDZmNWQzYTgsIDB4ZjMwMDJhMGMsCisgICAgMHgxYjE3YmFhZCwgMHhmODVlMGQwZiwgMHgxMDQ5OWRhZSwgMHhjOGM0ZjgwNiwgMHgyMGQzNjhhNywKKyAgICAweGMzOWFkZjA1LCAweDJiOGQ0ZmE0LCAweGRlNzhiNjAwLCAweDM2NmYyNmExLCAweGQ1MjY5MTAzLAorICAgIDB4M2QzMTAxYTJ9fTsKKworbG9jYWwgY29uc3Qgel93b3JkX3QgRkFSIGNyY19icmFpZF9iaWdfdGFibGVbXVsyNTZdID0geworICAgezB4MDAwMDAwMDAwMDAwMDAwMCwgMHhhMTkwMTdlODAwMDAwMDAwLCAweDAzMjc1ZTBiMDAwMDAwMDAsCisgICAgMHhhMmI3NDllMzAwMDAwMDAwLCAweDA2NGViYzE2MDAwMDAwMDAsIDB4YTdkZWFiZmUwMDAwMDAwMCwKKyAgICAweDA1NjllMjFkMDAwMDAwMDAsIDB4YTRmOWY1ZjUwMDAwMDAwMCwgMHgwYzljNzgyZDAwMDAwMDAwLAorICAgIDB4YWQwYzZmYzUwMDAwMDAwMCwgMHgwZmJiMjYyNjAwMDAwMDAwLCAweGFlMmIzMWNlMDAwMDAwMDAsCisgICAgMHgwYWQyYzQzYjAwMDAwMDAwLCAweGFiNDJkM2QzMDAwMDAwMDAsIDB4MDlmNTlhMzAwMDAwMDAwMCwKKyAgICAweGE4NjU4ZGQ4MDAwMDAwMDAsIDB4MTgzOGYxNWEwMDAwMDAwMCwgMHhiOWE4ZTZiMjAwMDAwMDAwLAorICAgIDB4MWIxZmFmNTEwMDAwMDAwMCwgMHhiYThmYjhiOTAwMDAwMDAwLCAweDFlNzY0ZDRjMDAwMDAwMDAsCisgICAgMHhiZmU2NWFhNDAwMDAwMDAwLCAweDFkNTExMzQ3MDAwMDAwMDAsIDB4YmNjMTA0YWYwMDAwMDAwMCwKKyAgICAweDE0YTQ4OTc3MDAwMDAwMDAsIDB4YjUzNDllOWYwMDAwMDAwMCwgMHgxNzgzZDc3YzAwMDAwMDAwLAorICAgIDB4YjYxM2MwOTQwMDAwMDAwMCwgMHgxMmVhMzU2MTAwMDAwMDAwLCAweGIzN2EyMjg5MDAwMDAwMDAsCisgICAgMHgxMWNkNmI2YTAwMDAwMDAwLCAweGIwNWQ3YzgyMDAwMDAwMDAsIDB4MzA3MGUyYjUwMDAwMDAwMCwKKyAgICAweDkxZTBmNTVkMDAwMDAwMDAsIDB4MzM1N2JjYmUwMDAwMDAwMCwgMHg5MmM3YWI1NjAwMDAwMDAwLAorICAgIDB4MzYzZTVlYTMwMDAwMDAwMCwgMHg5N2FlNDk0YjAwMDAwMDAwLCAweDM1MTkwMGE4MDAwMDAwMDAsCisgICAgMHg5NDg5MTc0MDAwMDAwMDAwLCAweDNjZWM5YTk4MDAwMDAwMDAsIDB4OWQ3YzhkNzAwMDAwMDAwMCwKKyAgICAweDNmY2JjNDkzMDAwMDAwMDAsIDB4OWU1YmQzN2IwMDAwMDAwMCwgMHgzYWEyMjY4ZTAwMDAwMDAwLAorICAgIDB4OWIzMjMxNjYwMDAwMDAwMCwgMHgzOTg1Nzg4NTAwMDAwMDAwLCAweDk4MTU2ZjZkMDAwMDAwMDAsCisgICAgMHgyODQ4MTNlZjAwMDAwMDAwLCAweDg5ZDgwNDA3MDAwMDAwMDAsIDB4MmI2ZjRkZTQwMDAwMDAwMCwKKyAgICAweDhhZmY1YTBjMDAwMDAwMDAsIDB4MmUwNmFmZjkwMDAwMDAwMCwgMHg4Zjk2YjgxMTAwMDAwMDAwLAorICAgIDB4MmQyMWYxZjIwMDAwMDAwMCwgMHg4Y2IxZTYxYTAwMDAwMDAwLCAweDI0ZDQ2YmMyMDAwMDAwMDAsCisgICAgMHg4NTQ0N2MyYTAwMDAwMDAwLCAweDI3ZjMzNWM5MDAwMDAwMDAsIDB4ODY2MzIyMjEwMDAwMDAwMCwKKyAgICAweDIyOWFkN2Q0MDAwMDAwMDAsIDB4ODMwYWMwM2MwMDAwMDAwMCwgMHgyMWJkODlkZjAwMDAwMDAwLAorICAgIDB4ODAyZDllMzcwMDAwMDAwMCwgMHgyMWU2YjViMDAwMDAwMDAwLCAweDgwNzZhMjU4MDAwMDAwMDAsCisgICAgMHgyMmMxZWJiYjAwMDAwMDAwLCAweDgzNTFmYzUzMDAwMDAwMDAsIDB4MjdhODA5YTYwMDAwMDAwMCwKKyAgICAweDg2MzgxZTRlMDAwMDAwMDAsIDB4MjQ4ZjU3YWQwMDAwMDAwMCwgMHg4NTFmNDA0NTAwMDAwMDAwLAorICAgIDB4MmQ3YWNkOWQwMDAwMDAwMCwgMHg4Y2VhZGE3NTAwMDAwMDAwLCAweDJlNWQ5Mzk2MDAwMDAwMDAsCisgICAgMHg4ZmNkODQ3ZTAwMDAwMDAwLCAweDJiMzQ3MThiMDAwMDAwMDAsIDB4OGFhNDY2NjMwMDAwMDAwMCwKKyAgICAweDI4MTMyZjgwMDAwMDAwMDAsIDB4ODk4MzM4NjgwMDAwMDAwMCwgMHgzOWRlNDRlYTAwMDAwMDAwLAorICAgIDB4OTg0ZTUzMDIwMDAwMDAwMCwgMHgzYWY5MWFlMTAwMDAwMDAwLCAweDliNjkwZDA5MDAwMDAwMDAsCisgICAgMHgzZjkwZjhmYzAwMDAwMDAwLCAweDllMDBlZjE0MDAwMDAwMDAsIDB4M2NiN2E2ZjcwMDAwMDAwMCwKKyAgICAweDlkMjdiMTFmMDAwMDAwMDAsIDB4MzU0MjNjYzcwMDAwMDAwMCwgMHg5NGQyMmIyZjAwMDAwMDAwLAorICAgIDB4MzY2NTYyY2MwMDAwMDAwMCwgMHg5N2Y1NzUyNDAwMDAwMDAwLCAweDMzMGM4MGQxMDAwMDAwMDAsCisgICAgMHg5MjljOTczOTAwMDAwMDAwLCAweDMwMmJkZWRhMDAwMDAwMDAsIDB4OTFiYmM5MzIwMDAwMDAwMCwKKyAgICAweDExOTY1NzA1MDAwMDAwMDAsIDB4YjAwNjQwZWQwMDAwMDAwMCwgMHgxMmIxMDkwZTAwMDAwMDAwLAorICAgIDB4YjMyMTFlZTYwMDAwMDAwMCwgMHgxN2Q4ZWIxMzAwMDAwMDAwLCAweGI2NDhmY2ZiMDAwMDAwMDAsCisgICAgMHgxNGZmYjUxODAwMDAwMDAwLCAweGI1NmZhMmYwMDAwMDAwMDAsIDB4MWQwYTJmMjgwMDAwMDAwMCwKKyAgICAweGJjOWEzOGMwMDAwMDAwMDAsIDB4MWUyZDcxMjMwMDAwMDAwMCwgMHhiZmJkNjZjYjAwMDAwMDAwLAorICAgIDB4MWI0NDkzM2UwMDAwMDAwMCwgMHhiYWQ0ODRkNjAwMDAwMDAwLCAweDE4NjNjZDM1MDAwMDAwMDAsCisgICAgMHhiOWYzZGFkZDAwMDAwMDAwLCAweDA5YWVhNjVmMDAwMDAwMDAsIDB4YTgzZWIxYjcwMDAwMDAwMCwKKyAgICAweDBhODlmODU0MDAwMDAwMDAsIDB4YWIxOWVmYmMwMDAwMDAwMCwgMHgwZmUwMWE0OTAwMDAwMDAwLAorICAgIDB4YWU3MDBkYTEwMDAwMDAwMCwgMHgwY2M3NDQ0MjAwMDAwMDAwLCAweGFkNTc1M2FhMDAwMDAwMDAsCisgICAgMHgwNTMyZGU3MjAwMDAwMDAwLCAweGE0YTJjOTlhMDAwMDAwMDAsIDB4MDYxNTgwNzkwMDAwMDAwMCwKKyAgICAweGE3ODU5NzkxMDAwMDAwMDAsIDB4MDM3YzYyNjQwMDAwMDAwMCwgMHhhMmVjNzU4YzAwMDAwMDAwLAorICAgIDB4MDA1YjNjNmYwMDAwMDAwMCwgMHhhMWNiMmI4NzAwMDAwMDAwLCAweDAzY2ExYWJhMDAwMDAwMDAsCisgICAgMHhhMjVhMGQ1MjAwMDAwMDAwLCAweDAwZWQ0NGIxMDAwMDAwMDAsIDB4YTE3ZDUzNTkwMDAwMDAwMCwKKyAgICAweDA1ODRhNmFjMDAwMDAwMDAsIDB4YTQxNGIxNDQwMDAwMDAwMCwgMHgwNmEzZjhhNzAwMDAwMDAwLAorICAgIDB4YTczM2VmNGYwMDAwMDAwMCwgMHgwZjU2NjI5NzAwMDAwMDAwLCAweGFlYzY3NTdmMDAwMDAwMDAsCisgICAgMHgwYzcxM2M5YzAwMDAwMDAwLCAweGFkZTEyYjc0MDAwMDAwMDAsIDB4MDkxOGRlODEwMDAwMDAwMCwKKyAgICAweGE4ODhjOTY5MDAwMDAwMDAsIDB4MGEzZjgwOGEwMDAwMDAwMCwgMHhhYmFmOTc2MjAwMDAwMDAwLAorICAgIDB4MWJmMmViZTAwMDAwMDAwMCwgMHhiYTYyZmMwODAwMDAwMDAwLCAweDE4ZDViNWViMDAwMDAwMDAsCisgICAgMHhiOTQ1YTIwMzAwMDAwMDAwLCAweDFkYmM1N2Y2MDAwMDAwMDAsIDB4YmMyYzQwMWUwMDAwMDAwMCwKKyAgICAweDFlOWIwOWZkMDAwMDAwMDAsIDB4YmYwYjFlMTUwMDAwMDAwMCwgMHgxNzZlOTNjZDAwMDAwMDAwLAorICAgIDB4YjZmZTg0MjUwMDAwMDAwMCwgMHgxNDQ5Y2RjNjAwMDAwMDAwLCAweGI1ZDlkYTJlMDAwMDAwMDAsCisgICAgMHgxMTIwMmZkYjAwMDAwMDAwLCAweGIwYjAzODMzMDAwMDAwMDAsIDB4MTIwNzcxZDAwMDAwMDAwMCwKKyAgICAweGIzOTc2NjM4MDAwMDAwMDAsIDB4MzNiYWY4MGYwMDAwMDAwMCwgMHg5MjJhZWZlNzAwMDAwMDAwLAorICAgIDB4MzA5ZGE2MDQwMDAwMDAwMCwgMHg5MTBkYjFlYzAwMDAwMDAwLCAweDM1ZjQ0NDE5MDAwMDAwMDAsCisgICAgMHg5NDY0NTNmMTAwMDAwMDAwLCAweDM2ZDMxYTEyMDAwMDAwMDAsIDB4OTc0MzBkZmEwMDAwMDAwMCwKKyAgICAweDNmMjY4MDIyMDAwMDAwMDAsIDB4OWViNjk3Y2EwMDAwMDAwMCwgMHgzYzAxZGUyOTAwMDAwMDAwLAorICAgIDB4OWQ5MWM5YzEwMDAwMDAwMCwgMHgzOTY4M2MzNDAwMDAwMDAwLCAweDk4ZjgyYmRjMDAwMDAwMDAsCisgICAgMHgzYTRmNjIzZjAwMDAwMDAwLCAweDliZGY3NWQ3MDAwMDAwMDAsIDB4MmI4MjA5NTUwMDAwMDAwMCwKKyAgICAweDhhMTIxZWJkMDAwMDAwMDAsIDB4MjhhNTU3NWUwMDAwMDAwMCwgMHg4OTM1NDBiNjAwMDAwMDAwLAorICAgIDB4MmRjY2I1NDMwMDAwMDAwMCwgMHg4YzVjYTJhYjAwMDAwMDAwLCAweDJlZWJlYjQ4MDAwMDAwMDAsCisgICAgMHg4ZjdiZmNhMDAwMDAwMDAwLCAweDI3MWU3MTc4MDAwMDAwMDAsIDB4ODY4ZTY2OTAwMDAwMDAwMCwKKyAgICAweDI0MzkyZjczMDAwMDAwMDAsIDB4ODVhOTM4OWIwMDAwMDAwMCwgMHgyMTUwY2Q2ZTAwMDAwMDAwLAorICAgIDB4ODBjMGRhODYwMDAwMDAwMCwgMHgyMjc3OTM2NTAwMDAwMDAwLCAweDgzZTc4NDhkMDAwMDAwMDAsCisgICAgMHgyMjJjYWYwYTAwMDAwMDAwLCAweDgzYmNiOGUyMDAwMDAwMDAsIDB4MjEwYmYxMDEwMDAwMDAwMCwKKyAgICAweDgwOWJlNmU5MDAwMDAwMDAsIDB4MjQ2MjEzMWMwMDAwMDAwMCwgMHg4NWYyMDRmNDAwMDAwMDAwLAorICAgIDB4Mjc0NTRkMTcwMDAwMDAwMCwgMHg4NmQ1NWFmZjAwMDAwMDAwLCAweDJlYjBkNzI3MDAwMDAwMDAsCisgICAgMHg4ZjIwYzBjZjAwMDAwMDAwLCAweDJkOTc4OTJjMDAwMDAwMDAsIDB4OGMwNzllYzQwMDAwMDAwMCwKKyAgICAweDI4ZmU2YjMxMDAwMDAwMDAsIDB4ODk2ZTdjZDkwMDAwMDAwMCwgMHgyYmQ5MzUzYTAwMDAwMDAwLAorICAgIDB4OGE0OTIyZDIwMDAwMDAwMCwgMHgzYTE0NWU1MDAwMDAwMDAwLCAweDliODQ0OWI4MDAwMDAwMDAsCisgICAgMHgzOTMzMDA1YjAwMDAwMDAwLCAweDk4YTMxN2IzMDAwMDAwMDAsIDB4M2M1YWUyNDYwMDAwMDAwMCwKKyAgICAweDlkY2FmNWFlMDAwMDAwMDAsIDB4M2Y3ZGJjNGQwMDAwMDAwMCwgMHg5ZWVkYWJhNTAwMDAwMDAwLAorICAgIDB4MzY4ODI2N2QwMDAwMDAwMCwgMHg5NzE4MzE5NTAwMDAwMDAwLCAweDM1YWY3ODc2MDAwMDAwMDAsCisgICAgMHg5NDNmNmY5ZTAwMDAwMDAwLCAweDMwYzY5YTZiMDAwMDAwMDAsIDB4OTE1NjhkODMwMDAwMDAwMCwKKyAgICAweDMzZTFjNDYwMDAwMDAwMDAsIDB4OTI3MWQzODgwMDAwMDAwMCwgMHgxMjVjNGRiZjAwMDAwMDAwLAorICAgIDB4YjNjYzVhNTcwMDAwMDAwMCwgMHgxMTdiMTNiNDAwMDAwMDAwLCAweGIwZWIwNDVjMDAwMDAwMDAsCisgICAgMHgxNDEyZjFhOTAwMDAwMDAwLCAweGI1ODJlNjQxMDAwMDAwMDAsIDB4MTczNWFmYTIwMDAwMDAwMCwKKyAgICAweGI2YTViODRhMDAwMDAwMDAsIDB4MWVjMDM1OTIwMDAwMDAwMCwgMHhiZjUwMjI3YTAwMDAwMDAwLAorICAgIDB4MWRlNzZiOTkwMDAwMDAwMCwgMHhiYzc3N2M3MTAwMDAwMDAwLCAweDE4OGU4OTg0MDAwMDAwMDAsCisgICAgMHhiOTFlOWU2YzAwMDAwMDAwLCAweDFiYTlkNzhmMDAwMDAwMDAsIDB4YmEzOWMwNjcwMDAwMDAwMCwKKyAgICAweDBhNjRiY2U1MDAwMDAwMDAsIDB4YWJmNGFiMGQwMDAwMDAwMCwgMHgwOTQzZTJlZTAwMDAwMDAwLAorICAgIDB4YThkM2Y1MDYwMDAwMDAwMCwgMHgwYzJhMDBmMzAwMDAwMDAwLCAweGFkYmExNzFiMDAwMDAwMDAsCisgICAgMHgwZjBkNWVmODAwMDAwMDAwLCAweGFlOWQ0OTEwMDAwMDAwMDAsIDB4MDZmOGM0YzgwMDAwMDAwMCwKKyAgICAweGE3NjhkMzIwMDAwMDAwMDAsIDB4MDVkZjlhYzMwMDAwMDAwMCwgMHhhNDRmOGQyYjAwMDAwMDAwLAorICAgIDB4MDBiNjc4ZGUwMDAwMDAwMCwgMHhhMTI2NmYzNjAwMDAwMDAwLCAweDAzOTEyNmQ1MDAwMDAwMDAsCisgICAgMHhhMjAxMzEzZDAwMDAwMDAwfSwKKyAgIHsweDAwMDAwMDAwMDAwMDAwMDAsIDB4ZWU4NDM5YTEwMDAwMDAwMCwgMHg5ZDBmMDI5OTAwMDAwMDAwLAorICAgIDB4NzM4YjNiMzgwMDAwMDAwMCwgMHg3YjE5NzVlOTAwMDAwMDAwLCAweDk1OWQ0YzQ4MDAwMDAwMDAsCisgICAgMHhlNjE2Nzc3MDAwMDAwMDAwLCAweDA4OTI0ZWQxMDAwMDAwMDAsIDB4YjczNDliMDkwMDAwMDAwMCwKKyAgICAweDU5YjBhMmE4MDAwMDAwMDAsIDB4MmEzYjk5OTAwMDAwMDAwMCwgMHhjNGJmYTAzMTAwMDAwMDAwLAorICAgIDB4Y2MyZGVlZTAwMDAwMDAwMCwgMHgyMmE5ZDc0MTAwMDAwMDAwLCAweDUxMjJlYzc5MDAwMDAwMDAsCisgICAgMHhiZmE2ZDVkODAwMDAwMDAwLCAweDZlNjkzNjEzMDAwMDAwMDAsIDB4ODBlZDBmYjIwMDAwMDAwMCwKKyAgICAweGYzNjYzNDhhMDAwMDAwMDAsIDB4MWRlMjBkMmIwMDAwMDAwMCwgMHgxNTcwNDNmYTAwMDAwMDAwLAorICAgIDB4ZmJmNDdhNWIwMDAwMDAwMCwgMHg4ODdmNDE2MzAwMDAwMDAwLCAweDY2ZmI3OGMyMDAwMDAwMDAsCisgICAgMHhkOTVkYWQxYTAwMDAwMDAwLCAweDM3ZDk5NGJiMDAwMDAwMDAsIDB4NDQ1MmFmODMwMDAwMDAwMCwKKyAgICAweGFhZDY5NjIyMDAwMDAwMDAsIDB4YTI0NGQ4ZjMwMDAwMDAwMCwgMHg0Y2MwZTE1MjAwMDAwMDAwLAorICAgIDB4M2Y0YmRhNmEwMDAwMDAwMCwgMHhkMWNmZTNjYjAwMDAwMDAwLCAweGRjZDI2YzI2MDAwMDAwMDAsCisgICAgMHgzMjU2NTU4NzAwMDAwMDAwLCAweDQxZGQ2ZWJmMDAwMDAwMDAsIDB4YWY1OTU3MWUwMDAwMDAwMCwKKyAgICAweGE3Y2IxOWNmMDAwMDAwMDAsIDB4NDk0ZjIwNmUwMDAwMDAwMCwgMHgzYWM0MWI1NjAwMDAwMDAwLAorICAgIDB4ZDQ0MDIyZjcwMDAwMDAwMCwgMHg2YmU2ZjcyZjAwMDAwMDAwLCAweDg1NjJjZThlMDAwMDAwMDAsCisgICAgMHhmNmU5ZjViNjAwMDAwMDAwLCAweDE4NmRjYzE3MDAwMDAwMDAsIDB4MTBmZjgyYzYwMDAwMDAwMCwKKyAgICAweGZlN2JiYjY3MDAwMDAwMDAsIDB4OGRmMDgwNWYwMDAwMDAwMCwgMHg2Mzc0YjlmZTAwMDAwMDAwLAorICAgIDB4YjJiYjVhMzUwMDAwMDAwMCwgMHg1YzNmNjM5NDAwMDAwMDAwLCAweDJmYjQ1OGFjMDAwMDAwMDAsCisgICAgMHhjMTMwNjEwZDAwMDAwMDAwLCAweGM5YTIyZmRjMDAwMDAwMDAsIDB4MjcyNjE2N2QwMDAwMDAwMCwKKyAgICAweDU0YWQyZDQ1MDAwMDAwMDAsIDB4YmEyOTE0ZTQwMDAwMDAwMCwgMHgwNThmYzEzYzAwMDAwMDAwLAorICAgIDB4ZWIwYmY4OWQwMDAwMDAwMCwgMHg5ODgwYzNhNTAwMDAwMDAwLCAweDc2MDRmYTA0MDAwMDAwMDAsCisgICAgMHg3ZTk2YjRkNTAwMDAwMDAwLCAweDkwMTI4ZDc0MDAwMDAwMDAsIDB4ZTM5OWI2NGMwMDAwMDAwMCwKKyAgICAweDBkMWQ4ZmVkMDAwMDAwMDAsIDB4YjhhNWQ5NGMwMDAwMDAwMCwgMHg1NjIxZTBlZDAwMDAwMDAwLAorICAgIDB4MjVhYWRiZDUwMDAwMDAwMCwgMHhjYjJlZTI3NDAwMDAwMDAwLCAweGMzYmNhY2E1MDAwMDAwMDAsCisgICAgMHgyZDM4OTUwNDAwMDAwMDAwLCAweDVlYjNhZTNjMDAwMDAwMDAsIDB4YjAzNzk3OWQwMDAwMDAwMCwKKyAgICAweDBmOTE0MjQ1MDAwMDAwMDAsIDB4ZTExNTdiZTQwMDAwMDAwMCwgMHg5MjllNDBkYzAwMDAwMDAwLAorICAgIDB4N2MxYTc5N2QwMDAwMDAwMCwgMHg3NDg4MzdhYzAwMDAwMDAwLCAweDlhMGMwZTBkMDAwMDAwMDAsCisgICAgMHhlOTg3MzUzNTAwMDAwMDAwLCAweDA3MDMwYzk0MDAwMDAwMDAsIDB4ZDZjY2VmNWYwMDAwMDAwMCwKKyAgICAweDM4NDhkNmZlMDAwMDAwMDAsIDB4NGJjM2VkYzYwMDAwMDAwMCwgMHhhNTQ3ZDQ2NzAwMDAwMDAwLAorICAgIDB4YWRkNTlhYjYwMDAwMDAwMCwgMHg0MzUxYTMxNzAwMDAwMDAwLCAweDMwZGE5ODJmMDAwMDAwMDAsCisgICAgMHhkZTVlYTE4ZTAwMDAwMDAwLCAweDYxZjg3NDU2MDAwMDAwMDAsIDB4OGY3YzRkZjcwMDAwMDAwMCwKKyAgICAweGZjZjc3NmNmMDAwMDAwMDAsIDB4MTI3MzRmNmUwMDAwMDAwMCwgMHgxYWUxMDFiZjAwMDAwMDAwLAorICAgIDB4ZjQ2NTM4MWUwMDAwMDAwMCwgMHg4N2VlMDMyNjAwMDAwMDAwLCAweDY5NmEzYTg3MDAwMDAwMDAsCisgICAgMHg2NDc3YjU2YTAwMDAwMDAwLCAweDhhZjM4Y2NiMDAwMDAwMDAsIDB4Zjk3OGI3ZjMwMDAwMDAwMCwKKyAgICAweDE3ZmM4ZTUyMDAwMDAwMDAsIDB4MWY2ZWMwODMwMDAwMDAwMCwgMHhmMWVhZjkyMjAwMDAwMDAwLAorICAgIDB4ODI2MWMyMWEwMDAwMDAwMCwgMHg2Y2U1ZmJiYjAwMDAwMDAwLCAweGQzNDMyZTYzMDAwMDAwMDAsCisgICAgMHgzZGM3MTdjMjAwMDAwMDAwLCAweDRlNGMyY2ZhMDAwMDAwMDAsIDB4YTBjODE1NWIwMDAwMDAwMCwKKyAgICAweGE4NWE1YjhhMDAwMDAwMDAsIDB4NDZkZTYyMmIwMDAwMDAwMCwgMHgzNTU1NTkxMzAwMDAwMDAwLAorICAgIDB4ZGJkMTYwYjIwMDAwMDAwMCwgMHgwYTFlODM3OTAwMDAwMDAwLCAweGU0OWFiYWQ4MDAwMDAwMDAsCisgICAgMHg5NzExODFlMDAwMDAwMDAwLCAweDc5OTViODQxMDAwMDAwMDAsIDB4NzEwN2Y2OTAwMDAwMDAwMCwKKyAgICAweDlmODNjZjMxMDAwMDAwMDAsIDB4ZWMwOGY0MDkwMDAwMDAwMCwgMHgwMjhjY2RhODAwMDAwMDAwLAorICAgIDB4YmQyYTE4NzAwMDAwMDAwMCwgMHg1M2FlMjFkMTAwMDAwMDAwLCAweDIwMjUxYWU5MDAwMDAwMDAsCisgICAgMHhjZWExMjM0ODAwMDAwMDAwLCAweGM2MzM2ZDk5MDAwMDAwMDAsIDB4MjhiNzU0MzgwMDAwMDAwMCwKKyAgICAweDViM2M2ZjAwMDAwMDAwMDAsIDB4YjViODU2YTEwMDAwMDAwMCwgMHg3MDRiYjM5OTAwMDAwMDAwLAorICAgIDB4OWVjZjhhMzgwMDAwMDAwMCwgMHhlZDQ0YjEwMDAwMDAwMDAwLCAweDAzYzA4OGExMDAwMDAwMDAsCisgICAgMHgwYjUyYzY3MDAwMDAwMDAwLCAweGU1ZDZmZmQxMDAwMDAwMDAsIDB4OTY1ZGM0ZTkwMDAwMDAwMCwKKyAgICAweDc4ZDlmZDQ4MDAwMDAwMDAsIDB4Yzc3ZjI4OTAwMDAwMDAwMCwgMHgyOWZiMTEzMTAwMDAwMDAwLAorICAgIDB4NWE3MDJhMDkwMDAwMDAwMCwgMHhiNGY0MTNhODAwMDAwMDAwLCAweGJjNjY1ZDc5MDAwMDAwMDAsCisgICAgMHg1MmUyNjRkODAwMDAwMDAwLCAweDIxNjk1ZmUwMDAwMDAwMDAsIDB4Y2ZlZDY2NDEwMDAwMDAwMCwKKyAgICAweDFlMjI4NThhMDAwMDAwMDAsIDB4ZjBhNmJjMmIwMDAwMDAwMCwgMHg4MzJkODcxMzAwMDAwMDAwLAorICAgIDB4NmRhOWJlYjIwMDAwMDAwMCwgMHg2NTNiZjA2MzAwMDAwMDAwLCAweDhiYmZjOWMyMDAwMDAwMDAsCisgICAgMHhmODM0ZjJmYTAwMDAwMDAwLCAweDE2YjBjYjViMDAwMDAwMDAsIDB4YTkxNjFlODMwMDAwMDAwMCwKKyAgICAweDQ3OTIyNzIyMDAwMDAwMDAsIDB4MzQxOTFjMWEwMDAwMDAwMCwgMHhkYTlkMjViYjAwMDAwMDAwLAorICAgIDB4ZDIwZjZiNmEwMDAwMDAwMCwgMHgzYzhiNTJjYjAwMDAwMDAwLCAweDRmMDA2OWYzMDAwMDAwMDAsCisgICAgMHhhMTg0NTA1MjAwMDAwMDAwLCAweGFjOTlkZmJmMDAwMDAwMDAsIDB4NDIxZGU2MWUwMDAwMDAwMCwKKyAgICAweDMxOTZkZDI2MDAwMDAwMDAsIDB4ZGYxMmU0ODcwMDAwMDAwMCwgMHhkNzgwYWE1NjAwMDAwMDAwLAorICAgIDB4MzkwNDkzZjcwMDAwMDAwMCwgMHg0YThmYThjZjAwMDAwMDAwLCAweGE0MGI5MTZlMDAwMDAwMDAsCisgICAgMHgxYmFkNDRiNjAwMDAwMDAwLCAweGY1Mjk3ZDE3MDAwMDAwMDAsIDB4ODZhMjQ2MmYwMDAwMDAwMCwKKyAgICAweDY4MjY3ZjhlMDAwMDAwMDAsIDB4NjBiNDMxNWYwMDAwMDAwMCwgMHg4ZTMwMDhmZTAwMDAwMDAwLAorICAgIDB4ZmRiYjMzYzYwMDAwMDAwMCwgMHgxMzNmMGE2NzAwMDAwMDAwLCAweGMyZjBlOWFjMDAwMDAwMDAsCisgICAgMHgyYzc0ZDAwZDAwMDAwMDAwLCAweDVmZmZlYjM1MDAwMDAwMDAsIDB4YjE3YmQyOTQwMDAwMDAwMCwKKyAgICAweGI5ZTk5YzQ1MDAwMDAwMDAsIDB4NTc2ZGE1ZTQwMDAwMDAwMCwgMHgyNGU2OWVkYzAwMDAwMDAwLAorICAgIDB4Y2E2MmE3N2QwMDAwMDAwMCwgMHg3NWM0NzJhNTAwMDAwMDAwLCAweDliNDA0YjA0MDAwMDAwMDAsCisgICAgMHhlOGNiNzAzYzAwMDAwMDAwLCAweDA2NGY0OTlkMDAwMDAwMDAsIDB4MGVkZDA3NGMwMDAwMDAwMCwKKyAgICAweGUwNTkzZWVkMDAwMDAwMDAsIDB4OTNkMjA1ZDUwMDAwMDAwMCwgMHg3ZDU2M2M3NDAwMDAwMDAwLAorICAgIDB4YzhlZTZhZDUwMDAwMDAwMCwgMHgyNjZhNTM3NDAwMDAwMDAwLCAweDU1ZTE2ODRjMDAwMDAwMDAsCisgICAgMHhiYjY1NTFlZDAwMDAwMDAwLCAweGIzZjcxZjNjMDAwMDAwMDAsIDB4NWQ3MzI2OWQwMDAwMDAwMCwKKyAgICAweDJlZjgxZGE1MDAwMDAwMDAsIDB4YzA3YzI0MDQwMDAwMDAwMCwgMHg3ZmRhZjFkYzAwMDAwMDAwLAorICAgIDB4OTE1ZWM4N2QwMDAwMDAwMCwgMHhlMmQ1ZjM0NTAwMDAwMDAwLCAweDBjNTFjYWU0MDAwMDAwMDAsCisgICAgMHgwNGMzODQzNTAwMDAwMDAwLCAweGVhNDdiZDk0MDAwMDAwMDAsIDB4OTljYzg2YWMwMDAwMDAwMCwKKyAgICAweDc3NDhiZjBkMDAwMDAwMDAsIDB4YTY4NzVjYzYwMDAwMDAwMCwgMHg0ODAzNjU2NzAwMDAwMDAwLAorICAgIDB4M2I4ODVlNWYwMDAwMDAwMCwgMHhkNTBjNjdmZTAwMDAwMDAwLCAweGRkOWUyOTJmMDAwMDAwMDAsCisgICAgMHgzMzFhMTA4ZTAwMDAwMDAwLCAweDQwOTEyYmI2MDAwMDAwMDAsIDB4YWUxNTEyMTcwMDAwMDAwMCwKKyAgICAweDExYjNjN2NmMDAwMDAwMDAsIDB4ZmYzN2ZlNmUwMDAwMDAwMCwgMHg4Y2JjYzU1NjAwMDAwMDAwLAorICAgIDB4NjIzOGZjZjcwMDAwMDAwMCwgMHg2YWFhYjIyNjAwMDAwMDAwLCAweDg0MmU4Yjg3MDAwMDAwMDAsCisgICAgMHhmN2E1YjBiZjAwMDAwMDAwLCAweDE5MjE4OTFlMDAwMDAwMDAsIDB4MTQzYzA2ZjMwMDAwMDAwMCwKKyAgICAweGZhYjgzZjUyMDAwMDAwMDAsIDB4ODkzMzA0NmEwMDAwMDAwMCwgMHg2N2I3M2RjYjAwMDAwMDAwLAorICAgIDB4NmYyNTczMWEwMDAwMDAwMCwgMHg4MWExNGFiYjAwMDAwMDAwLCAweGYyMmE3MTgzMDAwMDAwMDAsCisgICAgMHgxY2FlNDgyMjAwMDAwMDAwLCAweGEzMDg5ZGZhMDAwMDAwMDAsIDB4NGQ4Y2E0NWIwMDAwMDAwMCwKKyAgICAweDNlMDc5ZjYzMDAwMDAwMDAsIDB4ZDA4M2E2YzIwMDAwMDAwMCwgMHhkODExZTgxMzAwMDAwMDAwLAorICAgIDB4MzY5NWQxYjIwMDAwMDAwMCwgMHg0NTFlZWE4YTAwMDAwMDAwLCAweGFiOWFkMzJiMDAwMDAwMDAsCisgICAgMHg3YTU1MzBlMDAwMDAwMDAwLCAweDk0ZDEwOTQxMDAwMDAwMDAsIDB4ZTc1YTMyNzkwMDAwMDAwMCwKKyAgICAweDA5ZGUwYmQ4MDAwMDAwMDAsIDB4MDE0YzQ1MDkwMDAwMDAwMCwgMHhlZmM4N2NhODAwMDAwMDAwLAorICAgIDB4OWM0MzQ3OTAwMDAwMDAwMCwgMHg3MmM3N2UzMTAwMDAwMDAwLCAweGNkNjFhYmU5MDAwMDAwMDAsCisgICAgMHgyM2U1OTI0ODAwMDAwMDAwLCAweDUwNmVhOTcwMDAwMDAwMDAsIDB4YmVlYTkwZDEwMDAwMDAwMCwKKyAgICAweGI2NzhkZTAwMDAwMDAwMDAsIDB4NThmY2U3YTEwMDAwMDAwMCwgMHgyYjc3ZGM5OTAwMDAwMDAwLAorICAgIDB4YzVmM2U1MzgwMDAwMDAwMH0sCisgICB7MHgwMDAwMDAwMDAwMDAwMDAwLCAweGZiZjYxMzQ3MDAwMDAwMDAsIDB4ZjZlZDI3OGUwMDAwMDAwMCwKKyAgICAweDBkMWIzNGM5MDAwMDAwMDAsIDB4YWRkZDNlYzcwMDAwMDAwMCwgMHg1NjJiMmQ4MDAwMDAwMDAwLAorICAgIDB4NWIzMDE5NDkwMDAwMDAwMCwgMHhhMGM2MGEwZTAwMDAwMDAwLCAweDFiYmQwYzU1MDAwMDAwMDAsCisgICAgMHhlMDRiMWYxMjAwMDAwMDAwLCAweGVkNTAyYmRiMDAwMDAwMDAsIDB4MTZhNjM4OWMwMDAwMDAwMCwKKyAgICAweGI2NjAzMjkyMDAwMDAwMDAsIDB4NGQ5NjIxZDUwMDAwMDAwMCwgMHg0MDhkMTUxYzAwMDAwMDAwLAorICAgIDB4YmI3YjA2NWIwMDAwMDAwMCwgMHgzNjdhMTlhYTAwMDAwMDAwLCAweGNkOGMwYWVkMDAwMDAwMDAsCisgICAgMHhjMDk3M2UyNDAwMDAwMDAwLCAweDNiNjEyZDYzMDAwMDAwMDAsIDB4OWJhNzI3NmQwMDAwMDAwMCwKKyAgICAweDYwNTEzNDJhMDAwMDAwMDAsIDB4NmQ0YTAwZTMwMDAwMDAwMCwgMHg5NmJjMTNhNDAwMDAwMDAwLAorICAgIDB4MmRjNzE1ZmYwMDAwMDAwMCwgMHhkNjMxMDZiODAwMDAwMDAwLCAweGRiMmEzMjcxMDAwMDAwMDAsCisgICAgMHgyMGRjMjEzNjAwMDAwMDAwLCAweDgwMWEyYjM4MDAwMDAwMDAsIDB4N2JlYzM4N2YwMDAwMDAwMCwKKyAgICAweDc2ZjcwY2I2MDAwMDAwMDAsIDB4OGQwMTFmZjEwMDAwMDAwMCwgMHgyZGYyNDM4ZjAwMDAwMDAwLAorICAgIDB4ZDYwNDUwYzgwMDAwMDAwMCwgMHhkYjFmNjQwMTAwMDAwMDAwLCAweDIwZTk3NzQ2MDAwMDAwMDAsCisgICAgMHg4MDJmN2Q0ODAwMDAwMDAwLCAweDdiZDk2ZTBmMDAwMDAwMDAsIDB4NzZjMjVhYzYwMDAwMDAwMCwKKyAgICAweDhkMzQ0OTgxMDAwMDAwMDAsIDB4MzY0ZjRmZGEwMDAwMDAwMCwgMHhjZGI5NWM5ZDAwMDAwMDAwLAorICAgIDB4YzBhMjY4NTQwMDAwMDAwMCwgMHgzYjU0N2IxMzAwMDAwMDAwLCAweDliOTI3MTFkMDAwMDAwMDAsCisgICAgMHg2MDY0NjI1YTAwMDAwMDAwLCAweDZkN2Y1NjkzMDAwMDAwMDAsIDB4OTY4OTQ1ZDQwMDAwMDAwMCwKKyAgICAweDFiODg1YTI1MDAwMDAwMDAsIDB4ZTA3ZTQ5NjIwMDAwMDAwMCwgMHhlZDY1N2RhYjAwMDAwMDAwLAorICAgIDB4MTY5MzZlZWMwMDAwMDAwMCwgMHhiNjU1NjRlMjAwMDAwMDAwLCAweDRkYTM3N2E1MDAwMDAwMDAsCisgICAgMHg0MGI4NDM2YzAwMDAwMDAwLCAweGJiNGU1MDJiMDAwMDAwMDAsIDB4MDAzNTU2NzAwMDAwMDAwMCwKKyAgICAweGZiYzM0NTM3MDAwMDAwMDAsIDB4ZjZkODcxZmUwMDAwMDAwMCwgMHgwZDJlNjJiOTAwMDAwMDAwLAorICAgIDB4YWRlODY4YjcwMDAwMDAwMCwgMHg1NjFlN2JmMDAwMDAwMDAwLCAweDViMDU0ZjM5MDAwMDAwMDAsCisgICAgMHhhMGYzNWM3ZTAwMDAwMDAwLCAweDFiZTJmNmM1MDAwMDAwMDAsIDB4ZTAxNGU1ODIwMDAwMDAwMCwKKyAgICAweGVkMGZkMTRiMDAwMDAwMDAsIDB4MTZmOWMyMGMwMDAwMDAwMCwgMHhiNjNmYzgwMjAwMDAwMDAwLAorICAgIDB4NGRjOWRiNDUwMDAwMDAwMCwgMHg0MGQyZWY4YzAwMDAwMDAwLCAweGJiMjRmY2NiMDAwMDAwMDAsCisgICAgMHgwMDVmZmE5MDAwMDAwMDAwLCAweGZiYTllOWQ3MDAwMDAwMDAsIDB4ZjZiMmRkMWUwMDAwMDAwMCwKKyAgICAweDBkNDRjZTU5MDAwMDAwMDAsIDB4YWQ4MmM0NTcwMDAwMDAwMCwgMHg1Njc0ZDcxMDAwMDAwMDAwLAorICAgIDB4NWI2ZmUzZDkwMDAwMDAwMCwgMHhhMDk5ZjA5ZTAwMDAwMDAwLCAweDJkOThlZjZmMDAwMDAwMDAsCisgICAgMHhkNjZlZmMyODAwMDAwMDAwLCAweGRiNzVjOGUxMDAwMDAwMDAsIDB4MjA4M2RiYTYwMDAwMDAwMCwKKyAgICAweDgwNDVkMWE4MDAwMDAwMDAsIDB4N2JiM2MyZWYwMDAwMDAwMCwgMHg3NmE4ZjYyNjAwMDAwMDAwLAorICAgIDB4OGQ1ZWU1NjEwMDAwMDAwMCwgMHgzNjI1ZTMzYTAwMDAwMDAwLCAweGNkZDNmMDdkMDAwMDAwMDAsCisgICAgMHhjMGM4YzRiNDAwMDAwMDAwLCAweDNiM2VkN2YzMDAwMDAwMDAsIDB4OWJmOGRkZmQwMDAwMDAwMCwKKyAgICAweDYwMGVjZWJhMDAwMDAwMDAsIDB4NmQxNWZhNzMwMDAwMDAwMCwgMHg5NmUzZTkzNDAwMDAwMDAwLAorICAgIDB4MzYxMGI1NGEwMDAwMDAwMCwgMHhjZGU2YTYwZDAwMDAwMDAwLCAweGMwZmQ5MmM0MDAwMDAwMDAsCisgICAgMHgzYjBiODE4MzAwMDAwMDAwLCAweDliY2Q4YjhkMDAwMDAwMDAsIDB4NjAzYjk4Y2EwMDAwMDAwMCwKKyAgICAweDZkMjBhYzAzMDAwMDAwMDAsIDB4OTZkNmJmNDQwMDAwMDAwMCwgMHgyZGFkYjkxZjAwMDAwMDAwLAorICAgIDB4ZDY1YmFhNTgwMDAwMDAwMCwgMHhkYjQwOWU5MTAwMDAwMDAwLCAweDIwYjY4ZGQ2MDAwMDAwMDAsCisgICAgMHg4MDcwODdkODAwMDAwMDAwLCAweDdiODY5NDlmMDAwMDAwMDAsIDB4NzY5ZGEwNTYwMDAwMDAwMCwKKyAgICAweDhkNmJiMzExMDAwMDAwMDAsIDB4MDA2YWFjZTAwMDAwMDAwMCwgMHhmYjljYmZhNzAwMDAwMDAwLAorICAgIDB4ZjY4NzhiNmUwMDAwMDAwMCwgMHgwZDcxOTgyOTAwMDAwMDAwLCAweGFkYjc5MjI3MDAwMDAwMDAsCisgICAgMHg1NjQxODE2MDAwMDAwMDAwLCAweDViNWFiNWE5MDAwMDAwMDAsIDB4YTBhY2E2ZWUwMDAwMDAwMCwKKyAgICAweDFiZDdhMGI1MDAwMDAwMDAsIDB4ZTAyMWIzZjIwMDAwMDAwMCwgMHhlZDNhODczYjAwMDAwMDAwLAorICAgIDB4MTZjYzk0N2MwMDAwMDAwMCwgMHhiNjBhOWU3MjAwMDAwMDAwLCAweDRkZmM4ZDM1MDAwMDAwMDAsCisgICAgMHg0MGU3YjlmYzAwMDAwMDAwLCAweGJiMTFhYWJiMDAwMDAwMDAsIDB4NzdjMjljNTAwMDAwMDAwMCwKKyAgICAweDhjMzQ4ZjE3MDAwMDAwMDAsIDB4ODEyZmJiZGUwMDAwMDAwMCwgMHg3YWQ5YTg5OTAwMDAwMDAwLAorICAgIDB4ZGExZmEyOTcwMDAwMDAwMCwgMHgyMWU5YjFkMDAwMDAwMDAwLCAweDJjZjI4NTE5MDAwMDAwMDAsCisgICAgMHhkNzA0OTY1ZTAwMDAwMDAwLCAweDZjN2Y5MDA1MDAwMDAwMDAsIDB4OTc4OTgzNDIwMDAwMDAwMCwKKyAgICAweDlhOTJiNzhiMDAwMDAwMDAsIDB4NjE2NGE0Y2MwMDAwMDAwMCwgMHhjMWEyYWVjMjAwMDAwMDAwLAorICAgIDB4M2E1NGJkODUwMDAwMDAwMCwgMHgzNzRmODk0YzAwMDAwMDAwLCAweGNjYjk5YTBiMDAwMDAwMDAsCisgICAgMHg0MWI4ODVmYTAwMDAwMDAwLCAweGJhNGU5NmJkMDAwMDAwMDAsIDB4Yjc1NWEyNzQwMDAwMDAwMCwKKyAgICAweDRjYTNiMTMzMDAwMDAwMDAsIDB4ZWM2NWJiM2QwMDAwMDAwMCwgMHgxNzkzYTg3YTAwMDAwMDAwLAorICAgIDB4MWE4ODljYjMwMDAwMDAwMCwgMHhlMTdlOGZmNDAwMDAwMDAwLCAweDVhMDU4OWFmMDAwMDAwMDAsCisgICAgMHhhMWYzOWFlODAwMDAwMDAwLCAweGFjZThhZTIxMDAwMDAwMDAsIDB4NTcxZWJkNjYwMDAwMDAwMCwKKyAgICAweGY3ZDhiNzY4MDAwMDAwMDAsIDB4MGMyZWE0MmYwMDAwMDAwMCwgMHgwMTM1OTBlNjAwMDAwMDAwLAorICAgIDB4ZmFjMzgzYTEwMDAwMDAwMCwgMHg1YTMwZGZkZjAwMDAwMDAwLCAweGExYzZjYzk4MDAwMDAwMDAsCisgICAgMHhhY2RkZjg1MTAwMDAwMDAwLCAweDU3MmJlYjE2MDAwMDAwMDAsIDB4ZjdlZGUxMTgwMDAwMDAwMCwKKyAgICAweDBjMWJmMjVmMDAwMDAwMDAsIDB4MDEwMGM2OTYwMDAwMDAwMCwgMHhmYWY2ZDVkMTAwMDAwMDAwLAorICAgIDB4NDE4ZGQzOGEwMDAwMDAwMCwgMHhiYTdiYzBjZDAwMDAwMDAwLCAweGI3NjBmNDA0MDAwMDAwMDAsCisgICAgMHg0Yzk2ZTc0MzAwMDAwMDAwLCAweGVjNTBlZDRkMDAwMDAwMDAsIDB4MTdhNmZlMGEwMDAwMDAwMCwKKyAgICAweDFhYmRjYWMzMDAwMDAwMDAsIDB4ZTE0YmQ5ODQwMDAwMDAwMCwgMHg2YzRhYzY3NTAwMDAwMDAwLAorICAgIDB4OTdiY2Q1MzIwMDAwMDAwMCwgMHg5YWE3ZTFmYjAwMDAwMDAwLCAweDYxNTFmMmJjMDAwMDAwMDAsCisgICAgMHhjMTk3ZjhiMjAwMDAwMDAwLCAweDNhNjFlYmY1MDAwMDAwMDAsIDB4Mzc3YWRmM2MwMDAwMDAwMCwKKyAgICAweGNjOGNjYzdiMDAwMDAwMDAsIDB4NzdmN2NhMjAwMDAwMDAwMCwgMHg4YzAxZDk2NzAwMDAwMDAwLAorICAgIDB4ODExYWVkYWUwMDAwMDAwMCwgMHg3YWVjZmVlOTAwMDAwMDAwLCAweGRhMmFmNGU3MDAwMDAwMDAsCisgICAgMHgyMWRjZTdhMDAwMDAwMDAwLCAweDJjYzdkMzY5MDAwMDAwMDAsIDB4ZDczMWMwMmUwMDAwMDAwMCwKKyAgICAweDZjMjA2YTk1MDAwMDAwMDAsIDB4OTdkNjc5ZDIwMDAwMDAwMCwgMHg5YWNkNGQxYjAwMDAwMDAwLAorICAgIDB4NjEzYjVlNWMwMDAwMDAwMCwgMHhjMWZkNTQ1MjAwMDAwMDAwLCAweDNhMGI0NzE1MDAwMDAwMDAsCisgICAgMHgzNzEwNzNkYzAwMDAwMDAwLCAweGNjZTY2MDliMDAwMDAwMDAsIDB4Nzc5ZDY2YzAwMDAwMDAwMCwKKyAgICAweDhjNmI3NTg3MDAwMDAwMDAsIDB4ODE3MDQxNGUwMDAwMDAwMCwgMHg3YTg2NTIwOTAwMDAwMDAwLAorICAgIDB4ZGE0MDU4MDcwMDAwMDAwMCwgMHgyMWI2NGI0MDAwMDAwMDAwLCAweDJjYWQ3Zjg5MDAwMDAwMDAsCisgICAgMHhkNzViNmNjZTAwMDAwMDAwLCAweDVhNWE3MzNmMDAwMDAwMDAsIDB4YTFhYzYwNzgwMDAwMDAwMCwKKyAgICAweGFjYjc1NGIxMDAwMDAwMDAsIDB4NTc0MTQ3ZjYwMDAwMDAwMCwgMHhmNzg3NGRmODAwMDAwMDAwLAorICAgIDB4MGM3MTVlYmYwMDAwMDAwMCwgMHgwMTZhNmE3NjAwMDAwMDAwLCAweGZhOWM3OTMxMDAwMDAwMDAsCisgICAgMHg0MWU3N2Y2YTAwMDAwMDAwLCAweGJhMTE2YzJkMDAwMDAwMDAsIDB4YjcwYTU4ZTQwMDAwMDAwMCwKKyAgICAweDRjZmM0YmEzMDAwMDAwMDAsIDB4ZWMzYTQxYWQwMDAwMDAwMCwgMHgxN2NjNTJlYTAwMDAwMDAwLAorICAgIDB4MWFkNzY2MjMwMDAwMDAwMCwgMHhlMTIxNzU2NDAwMDAwMDAwLCAweDQxZDIyOTFhMDAwMDAwMDAsCisgICAgMHhiYTI0M2E1ZDAwMDAwMDAwLCAweGI3M2YwZTk0MDAwMDAwMDAsIDB4NGNjOTFkZDMwMDAwMDAwMCwKKyAgICAweGVjMGYxN2RkMDAwMDAwMDAsIDB4MTdmOTA0OWEwMDAwMDAwMCwgMHgxYWUyMzA1MzAwMDAwMDAwLAorICAgIDB4ZTExNDIzMTQwMDAwMDAwMCwgMHg1YTZmMjU0ZjAwMDAwMDAwLCAweGExOTkzNjA4MDAwMDAwMDAsCisgICAgMHhhYzgyMDJjMTAwMDAwMDAwLCAweDU3NzQxMTg2MDAwMDAwMDAsIDB4ZjdiMjFiODgwMDAwMDAwMCwKKyAgICAweDBjNDQwOGNmMDAwMDAwMDAsIDB4MDE1ZjNjMDYwMDAwMDAwMCwgMHhmYWE5MmY0MTAwMDAwMDAwLAorICAgIDB4NzdhODMwYjAwMDAwMDAwMCwgMHg4YzVlMjNmNzAwMDAwMDAwLCAweDgxNDUxNzNlMDAwMDAwMDAsCisgICAgMHg3YWIzMDQ3OTAwMDAwMDAwLCAweGRhNzUwZTc3MDAwMDAwMDAsIDB4MjE4MzFkMzAwMDAwMDAwMCwKKyAgICAweDJjOTgyOWY5MDAwMDAwMDAsIDB4ZDc2ZTNhYmUwMDAwMDAwMCwgMHg2YzE1M2NlNTAwMDAwMDAwLAorICAgIDB4OTdlMzJmYTIwMDAwMDAwMCwgMHg5YWY4MWI2YjAwMDAwMDAwLCAweDYxMGUwODJjMDAwMDAwMDAsCisgICAgMHhjMWM4MDIyMjAwMDAwMDAwLCAweDNhM2UxMTY1MDAwMDAwMDAsIDB4MzcyNTI1YWMwMDAwMDAwMCwKKyAgICAweGNjZDMzNmViMDAwMDAwMDB9LAorICAgezB4MDAwMDAwMDAwMDAwMDAwMCwgMHg2MjM4MjgyYTAwMDAwMDAwLCAweGM0NzA1MDU0MDAwMDAwMDAsCisgICAgMHhhNjQ4Nzg3ZTAwMDAwMDAwLCAweDg4ZTFhMGE4MDAwMDAwMDAsIDB4ZWFkOTg4ODIwMDAwMDAwMCwKKyAgICAweDRjOTFmMGZjMDAwMDAwMDAsIDB4MmVhOWQ4ZDYwMDAwMDAwMCwgMHg1MWM1MzA4YTAwMDAwMDAwLAorICAgIDB4MzNmZDE4YTAwMDAwMDAwMCwgMHg5NWI1NjBkZTAwMDAwMDAwLCAweGY3OGQ0OGY0MDAwMDAwMDAsCisgICAgMHhkOTI0OTAyMjAwMDAwMDAwLCAweGJiMWNiODA4MDAwMDAwMDAsIDB4MWQ1NGMwNzYwMDAwMDAwMCwKKyAgICAweDdmNmNlODVjMDAwMDAwMDAsIDB4ZTM4YzEwY2YwMDAwMDAwMCwgMHg4MWI0MzhlNTAwMDAwMDAwLAorICAgIDB4MjdmYzQwOWIwMDAwMDAwMCwgMHg0NWM0NjhiMTAwMDAwMDAwLCAweDZiNmRiMDY3MDAwMDAwMDAsCisgICAgMHgwOTU1OTg0ZDAwMDAwMDAwLCAweGFmMWRlMDMzMDAwMDAwMDAsIDB4Y2QyNWM4MTkwMDAwMDAwMCwKKyAgICAweGIyNDkyMDQ1MDAwMDAwMDAsIDB4ZDA3MTA4NmYwMDAwMDAwMCwgMHg3NjM5NzAxMTAwMDAwMDAwLAorICAgIDB4MTQwMTU4M2IwMDAwMDAwMCwgMHgzYWE4ODBlZDAwMDAwMDAwLCAweDU4OTBhOGM3MDAwMDAwMDAsCisgICAgMHhmZWQ4ZDBiOTAwMDAwMDAwLCAweDljZTBmODkzMDAwMDAwMDAsIDB4ODcxZjUwNDUwMDAwMDAwMCwKKyAgICAweGU1Mjc3ODZmMDAwMDAwMDAsIDB4NDM2ZjAwMTEwMDAwMDAwMCwgMHgyMTU3MjgzYjAwMDAwMDAwLAorICAgIDB4MGZmZWYwZWQwMDAwMDAwMCwgMHg2ZGM2ZDhjNzAwMDAwMDAwLCAweGNiOGVhMGI5MDAwMDAwMDAsCisgICAgMHhhOWI2ODg5MzAwMDAwMDAwLCAweGQ2ZGE2MGNmMDAwMDAwMDAsIDB4YjRlMjQ4ZTUwMDAwMDAwMCwKKyAgICAweDEyYWEzMDliMDAwMDAwMDAsIDB4NzA5MjE4YjEwMDAwMDAwMCwgMHg1ZTNiYzA2NzAwMDAwMDAwLAorICAgIDB4M2MwM2U4NGQwMDAwMDAwMCwgMHg5YTRiOTAzMzAwMDAwMDAwLCAweGY4NzNiODE5MDAwMDAwMDAsCisgICAgMHg2NDkzNDA4YTAwMDAwMDAwLCAweDA2YWI2OGEwMDAwMDAwMDAsIDB4YTBlMzEwZGUwMDAwMDAwMCwKKyAgICAweGMyZGIzOGY0MDAwMDAwMDAsIDB4ZWM3MmUwMjIwMDAwMDAwMCwgMHg4ZTRhYzgwODAwMDAwMDAwLAorICAgIDB4MjgwMmIwNzYwMDAwMDAwMCwgMHg0YTNhOTg1YzAwMDAwMDAwLCAweDM1NTY3MDAwMDAwMDAwMDAsCisgICAgMHg1NzZlNTgyYTAwMDAwMDAwLCAweGYxMjYyMDU0MDAwMDAwMDAsIDB4OTMxZTA4N2UwMDAwMDAwMCwKKyAgICAweGJkYjdkMGE4MDAwMDAwMDAsIDB4ZGY4ZmY4ODIwMDAwMDAwMCwgMHg3OWM3ODBmYzAwMDAwMDAwLAorICAgIDB4MWJmZmE4ZDYwMDAwMDAwMCwgMHgwZTNmYTA4YTAwMDAwMDAwLCAweDZjMDc4OGEwMDAwMDAwMDAsCisgICAgMHhjYTRmZjBkZTAwMDAwMDAwLCAweGE4NzdkOGY0MDAwMDAwMDAsIDB4ODZkZTAwMjIwMDAwMDAwMCwKKyAgICAweGU0ZTYyODA4MDAwMDAwMDAsIDB4NDJhZTUwNzYwMDAwMDAwMCwgMHgyMDk2Nzg1YzAwMDAwMDAwLAorICAgIDB4NWZmYTkwMDAwMDAwMDAwMCwgMHgzZGMyYjgyYTAwMDAwMDAwLCAweDliOGFjMDU0MDAwMDAwMDAsCisgICAgMHhmOWIyZTg3ZTAwMDAwMDAwLCAweGQ3MWIzMGE4MDAwMDAwMDAsIDB4YjUyMzE4ODIwMDAwMDAwMCwKKyAgICAweDEzNmI2MGZjMDAwMDAwMDAsIDB4NzE1MzQ4ZDYwMDAwMDAwMCwgMHhlZGIzYjA0NTAwMDAwMDAwLAorICAgIDB4OGY4Yjk4NmYwMDAwMDAwMCwgMHgyOWMzZTAxMTAwMDAwMDAwLCAweDRiZmJjODNiMDAwMDAwMDAsCisgICAgMHg2NTUyMTBlZDAwMDAwMDAwLCAweDA3NmEzOGM3MDAwMDAwMDAsIDB4YTEyMjQwYjkwMDAwMDAwMCwKKyAgICAweGMzMWE2ODkzMDAwMDAwMDAsIDB4YmM3NjgwY2YwMDAwMDAwMCwgMHhkZTRlYThlNTAwMDAwMDAwLAorICAgIDB4NzgwNmQwOWIwMDAwMDAwMCwgMHgxYTNlZjhiMTAwMDAwMDAwLCAweDM0OTcyMDY3MDAwMDAwMDAsCisgICAgMHg1NmFmMDg0ZDAwMDAwMDAwLCAweGYwZTc3MDMzMDAwMDAwMDAsIDB4OTJkZjU4MTkwMDAwMDAwMCwKKyAgICAweDg5MjBmMGNmMDAwMDAwMDAsIDB4ZWIxOGQ4ZTUwMDAwMDAwMCwgMHg0ZDUwYTA5YjAwMDAwMDAwLAorICAgIDB4MmY2ODg4YjEwMDAwMDAwMCwgMHgwMWMxNTA2NzAwMDAwMDAwLCAweDYzZjk3ODRkMDAwMDAwMDAsCisgICAgMHhjNWIxMDAzMzAwMDAwMDAwLCAweGE3ODkyODE5MDAwMDAwMDAsIDB4ZDhlNWMwNDUwMDAwMDAwMCwKKyAgICAweGJhZGRlODZmMDAwMDAwMDAsIDB4MWM5NTkwMTEwMDAwMDAwMCwgMHg3ZWFkYjgzYjAwMDAwMDAwLAorICAgIDB4NTAwNDYwZWQwMDAwMDAwMCwgMHgzMjNjNDhjNzAwMDAwMDAwLCAweDk0NzQzMGI5MDAwMDAwMDAsCisgICAgMHhmNjRjMTg5MzAwMDAwMDAwLCAweDZhYWNlMDAwMDAwMDAwMDAsIDB4MDg5NGM4MmEwMDAwMDAwMCwKKyAgICAweGFlZGNiMDU0MDAwMDAwMDAsIDB4Y2NlNDk4N2UwMDAwMDAwMCwgMHhlMjRkNDBhODAwMDAwMDAwLAorICAgIDB4ODA3NTY4ODIwMDAwMDAwMCwgMHgyNjNkMTBmYzAwMDAwMDAwLCAweDQ0MDUzOGQ2MDAwMDAwMDAsCisgICAgMHgzYjY5ZDA4YTAwMDAwMDAwLCAweDU5NTFmOGEwMDAwMDAwMDAsIDB4ZmYxOTgwZGUwMDAwMDAwMCwKKyAgICAweDlkMjFhOGY0MDAwMDAwMDAsIDB4YjM4ODcwMjIwMDAwMDAwMCwgMHhkMWIwNTgwODAwMDAwMDAwLAorICAgIDB4NzdmODIwNzYwMDAwMDAwMCwgMHgxNWMwMDg1YzAwMDAwMDAwLCAweDVkNzgzMWNlMDAwMDAwMDAsCisgICAgMHgzZjQwMTllNDAwMDAwMDAwLCAweDk5MDg2MTlhMDAwMDAwMDAsIDB4ZmIzMDQ5YjAwMDAwMDAwMCwKKyAgICAweGQ1OTk5MTY2MDAwMDAwMDAsIDB4YjdhMWI5NGMwMDAwMDAwMCwgMHgxMWU5YzEzMjAwMDAwMDAwLAorICAgIDB4NzNkMWU5MTgwMDAwMDAwMCwgMHgwY2JkMDE0NDAwMDAwMDAwLCAweDZlODUyOTZlMDAwMDAwMDAsCisgICAgMHhjOGNkNTExMDAwMDAwMDAwLCAweGFhZjU3OTNhMDAwMDAwMDAsIDB4ODQ1Y2ExZWMwMDAwMDAwMCwKKyAgICAweGU2NjQ4OWM2MDAwMDAwMDAsIDB4NDAyY2YxYjgwMDAwMDAwMCwgMHgyMjE0ZDk5MjAwMDAwMDAwLAorICAgIDB4YmVmNDIxMDEwMDAwMDAwMCwgMHhkY2NjMDkyYjAwMDAwMDAwLCAweDdhODQ3MTU1MDAwMDAwMDAsCisgICAgMHgxOGJjNTk3ZjAwMDAwMDAwLCAweDM2MTU4MWE5MDAwMDAwMDAsIDB4NTQyZGE5ODMwMDAwMDAwMCwKKyAgICAweGYyNjVkMWZkMDAwMDAwMDAsIDB4OTA1ZGY5ZDcwMDAwMDAwMCwgMHhlZjMxMTE4YjAwMDAwMDAwLAorICAgIDB4OGQwOTM5YTEwMDAwMDAwMCwgMHgyYjQxNDFkZjAwMDAwMDAwLCAweDQ5Nzk2OWY1MDAwMDAwMDAsCisgICAgMHg2N2QwYjEyMzAwMDAwMDAwLCAweDA1ZTg5OTA5MDAwMDAwMDAsIDB4YTNhMGUxNzcwMDAwMDAwMCwKKyAgICAweGMxOThjOTVkMDAwMDAwMDAsIDB4ZGE2NzYxOGIwMDAwMDAwMCwgMHhiODVmNDlhMTAwMDAwMDAwLAorICAgIDB4MWUxNzMxZGYwMDAwMDAwMCwgMHg3YzJmMTlmNTAwMDAwMDAwLCAweDUyODZjMTIzMDAwMDAwMDAsCisgICAgMHgzMGJlZTkwOTAwMDAwMDAwLCAweDk2ZjY5MTc3MDAwMDAwMDAsIDB4ZjRjZWI5NWQwMDAwMDAwMCwKKyAgICAweDhiYTI1MTAxMDAwMDAwMDAsIDB4ZTk5YTc5MmIwMDAwMDAwMCwgMHg0ZmQyMDE1NTAwMDAwMDAwLAorICAgIDB4MmRlYTI5N2YwMDAwMDAwMCwgMHgwMzQzZjFhOTAwMDAwMDAwLCAweDYxN2JkOTgzMDAwMDAwMDAsCisgICAgMHhjNzMzYTFmZDAwMDAwMDAwLCAweGE1MGI4OWQ3MDAwMDAwMDAsIDB4MzllYjcxNDQwMDAwMDAwMCwKKyAgICAweDViZDM1OTZlMDAwMDAwMDAsIDB4ZmQ5YjIxMTAwMDAwMDAwMCwgMHg5ZmEzMDkzYTAwMDAwMDAwLAorICAgIDB4YjEwYWQxZWMwMDAwMDAwMCwgMHhkMzMyZjljNjAwMDAwMDAwLCAweDc1N2E4MWI4MDAwMDAwMDAsCisgICAgMHgxNzQyYTk5MjAwMDAwMDAwLCAweDY4MmU0MWNlMDAwMDAwMDAsIDB4MGExNjY5ZTQwMDAwMDAwMCwKKyAgICAweGFjNWUxMTlhMDAwMDAwMDAsIDB4Y2U2NjM5YjAwMDAwMDAwMCwgMHhlMGNmZTE2NjAwMDAwMDAwLAorICAgIDB4ODJmN2M5NGMwMDAwMDAwMCwgMHgyNGJmYjEzMjAwMDAwMDAwLCAweDQ2ODc5OTE4MDAwMDAwMDAsCisgICAgMHg1MzQ3OTE0NDAwMDAwMDAwLCAweDMxN2ZiOTZlMDAwMDAwMDAsIDB4OTczN2MxMTAwMDAwMDAwMCwKKyAgICAweGY1MGZlOTNhMDAwMDAwMDAsIDB4ZGJhNjMxZWMwMDAwMDAwMCwgMHhiOTllMTljNjAwMDAwMDAwLAorICAgIDB4MWZkNjYxYjgwMDAwMDAwMCwgMHg3ZGVlNDk5MjAwMDAwMDAwLCAweDAyODJhMWNlMDAwMDAwMDAsCisgICAgMHg2MGJhODllNDAwMDAwMDAwLCAweGM2ZjJmMTlhMDAwMDAwMDAsIDB4YTRjYWQ5YjAwMDAwMDAwMCwKKyAgICAweDhhNjMwMTY2MDAwMDAwMDAsIDB4ZTg1YjI5NGMwMDAwMDAwMCwgMHg0ZTEzNTEzMjAwMDAwMDAwLAorICAgIDB4MmMyYjc5MTgwMDAwMDAwMCwgMHhiMGNiODE4YjAwMDAwMDAwLCAweGQyZjNhOWExMDAwMDAwMDAsCisgICAgMHg3NGJiZDFkZjAwMDAwMDAwLCAweDE2ODNmOWY1MDAwMDAwMDAsIDB4MzgyYTIxMjMwMDAwMDAwMCwKKyAgICAweDVhMTIwOTA5MDAwMDAwMDAsIDB4ZmM1YTcxNzcwMDAwMDAwMCwgMHg5ZTYyNTk1ZDAwMDAwMDAwLAorICAgIDB4ZTEwZWIxMDEwMDAwMDAwMCwgMHg4MzM2OTkyYjAwMDAwMDAwLCAweDI1N2VlMTU1MDAwMDAwMDAsCisgICAgMHg0NzQ2Yzk3ZjAwMDAwMDAwLCAweDY5ZWYxMWE5MDAwMDAwMDAsIDB4MGJkNzM5ODMwMDAwMDAwMCwKKyAgICAweGFkOWY0MWZkMDAwMDAwMDAsIDB4Y2ZhNzY5ZDcwMDAwMDAwMCwgMHhkNDU4YzEwMTAwMDAwMDAwLAorICAgIDB4YjY2MGU5MmIwMDAwMDAwMCwgMHgxMDI4OTE1NTAwMDAwMDAwLCAweDcyMTBiOTdmMDAwMDAwMDAsCisgICAgMHg1Y2I5NjFhOTAwMDAwMDAwLCAweDNlODE0OTgzMDAwMDAwMDAsIDB4OThjOTMxZmQwMDAwMDAwMCwKKyAgICAweGZhZjExOWQ3MDAwMDAwMDAsIDB4ODU5ZGYxOGIwMDAwMDAwMCwgMHhlN2E1ZDlhMTAwMDAwMDAwLAorICAgIDB4NDFlZGExZGYwMDAwMDAwMCwgMHgyM2Q1ODlmNTAwMDAwMDAwLCAweDBkN2M1MTIzMDAwMDAwMDAsCisgICAgMHg2ZjQ0NzkwOTAwMDAwMDAwLCAweGM5MGMwMTc3MDAwMDAwMDAsIDB4YWIzNDI5NWQwMDAwMDAwMCwKKyAgICAweDM3ZDRkMWNlMDAwMDAwMDAsIDB4NTVlY2Y5ZTQwMDAwMDAwMCwgMHhmM2E0ODE5YTAwMDAwMDAwLAorICAgIDB4OTE5Y2E5YjAwMDAwMDAwMCwgMHhiZjM1NzE2NjAwMDAwMDAwLCAweGRkMGQ1OTRjMDAwMDAwMDAsCisgICAgMHg3YjQ1MjEzMjAwMDAwMDAwLCAweDE5N2QwOTE4MDAwMDAwMDAsIDB4NjYxMWUxNDQwMDAwMDAwMCwKKyAgICAweDA0MjljOTZlMDAwMDAwMDAsIDB4YTI2MWIxMTAwMDAwMDAwMCwgMHhjMDU5OTkzYTAwMDAwMDAwLAorICAgIDB4ZWVmMDQxZWMwMDAwMDAwMCwgMHg4Y2M4NjljNjAwMDAwMDAwLCAweDJhODAxMWI4MDAwMDAwMDAsCisgICAgMHg0OGI4Mzk5MjAwMDAwMDAwfSwKKyAgIHsweDAwMDAwMDAwMDAwMDAwMDAsIDB4NGMyODk2YTMwMDAwMDAwMCwgMHhkOTU2NWQ5YzAwMDAwMDAwLAorICAgIDB4OTU3ZWNiM2YwMDAwMDAwMCwgMHhmM2FiY2JlMzAwMDAwMDAwLCAweGJmODM1ZDQwMDAwMDAwMDAsCisgICAgMHgyYWZkOTY3ZjAwMDAwMDAwLCAweDY2ZDUwMGRjMDAwMDAwMDAsIDB4YTc1MWU2MWMwMDAwMDAwMCwKKyAgICAweGViNzk3MGJmMDAwMDAwMDAsIDB4N2UwN2JiODAwMDAwMDAwMCwgMHgzMjJmMmQyMzAwMDAwMDAwLAorICAgIDB4NTRmYTJkZmYwMDAwMDAwMCwgMHgxOGQyYmI1YzAwMDAwMDAwLCAweDhkYWM3MDYzMDAwMDAwMDAsCisgICAgMHhjMTg0ZTZjMDAwMDAwMDAwLCAweDRlYTNjYzM5MDAwMDAwMDAsIDB4MDI4YjVhOWEwMDAwMDAwMCwKKyAgICAweDk3ZjU5MWE1MDAwMDAwMDAsIDB4ZGJkZDA3MDYwMDAwMDAwMCwgMHhiZDA4MDdkYTAwMDAwMDAwLAorICAgIDB4ZjEyMDkxNzkwMDAwMDAwMCwgMHg2NDVlNWE0NjAwMDAwMDAwLCAweDI4NzZjY2U1MDAwMDAwMDAsCisgICAgMHhlOWYyMmEyNTAwMDAwMDAwLCAweGE1ZGFiYzg2MDAwMDAwMDAsIDB4MzBhNDc3YjkwMDAwMDAwMCwKKyAgICAweDdjOGNlMTFhMDAwMDAwMDAsIDB4MWE1OWUxYzYwMDAwMDAwMCwgMHg1NjcxNzc2NTAwMDAwMDAwLAorICAgIDB4YzMwZmJjNWEwMDAwMDAwMCwgMHg4ZjI3MmFmOTAwMDAwMDAwLCAweDljNDY5OTczMDAwMDAwMDAsCisgICAgMHhkMDZlMGZkMDAwMDAwMDAwLCAweDQ1MTBjNGVmMDAwMDAwMDAsIDB4MDkzODUyNGMwMDAwMDAwMCwKKyAgICAweDZmZWQ1MjkwMDAwMDAwMDAsIDB4MjNjNWM0MzMwMDAwMDAwMCwgMHhiNmJiMGYwYzAwMDAwMDAwLAorICAgIDB4ZmE5Mzk5YWYwMDAwMDAwMCwgMHgzYjE3N2Y2ZjAwMDAwMDAwLCAweDc3M2ZlOWNjMDAwMDAwMDAsCisgICAgMHhlMjQxMjJmMzAwMDAwMDAwLCAweGFlNjliNDUwMDAwMDAwMDAsIDB4YzhiY2I0OGMwMDAwMDAwMCwKKyAgICAweDg0OTQyMjJmMDAwMDAwMDAsIDB4MTFlYWU5MTAwMDAwMDAwMCwgMHg1ZGMyN2ZiMzAwMDAwMDAwLAorICAgIDB4ZDJlNTU1NGEwMDAwMDAwMCwgMHg5ZWNkYzNlOTAwMDAwMDAwLCAweDBiYjMwOGQ2MDAwMDAwMDAsCisgICAgMHg0NzliOWU3NTAwMDAwMDAwLCAweDIxNGU5ZWE5MDAwMDAwMDAsIDB4NmQ2NjA4MGEwMDAwMDAwMCwKKyAgICAweGY4MThjMzM1MDAwMDAwMDAsIDB4YjQzMDU1OTYwMDAwMDAwMCwgMHg3NWI0YjM1NjAwMDAwMDAwLAorICAgIDB4Mzk5YzI1ZjUwMDAwMDAwMCwgMHhhY2UyZWVjYTAwMDAwMDAwLCAweGUwY2E3ODY5MDAwMDAwMDAsCisgICAgMHg4NjFmNzhiNTAwMDAwMDAwLCAweGNhMzdlZTE2MDAwMDAwMDAsIDB4NWY0OTI1MjkwMDAwMDAwMCwKKyAgICAweDEzNjFiMzhhMDAwMDAwMDAsIDB4Mzg4ZDMyZTcwMDAwMDAwMCwgMHg3NGE1YTQ0NDAwMDAwMDAwLAorICAgIDB4ZTFkYjZmN2IwMDAwMDAwMCwgMHhhZGYzZjlkODAwMDAwMDAwLCAweGNiMjZmOTA0MDAwMDAwMDAsCisgICAgMHg4NzBlNmZhNzAwMDAwMDAwLCAweDEyNzBhNDk4MDAwMDAwMDAsIDB4NWU1ODMyM2IwMDAwMDAwMCwKKyAgICAweDlmZGNkNGZiMDAwMDAwMDAsIDB4ZDNmNDQyNTgwMDAwMDAwMCwgMHg0NjhhODk2NzAwMDAwMDAwLAorICAgIDB4MGFhMjFmYzQwMDAwMDAwMCwgMHg2Yzc3MWYxODAwMDAwMDAwLCAweDIwNWY4OWJiMDAwMDAwMDAsCisgICAgMHhiNTIxNDI4NDAwMDAwMDAwLCAweGY5MDlkNDI3MDAwMDAwMDAsIDB4NzYyZWZlZGUwMDAwMDAwMCwKKyAgICAweDNhMDY2ODdkMDAwMDAwMDAsIDB4YWY3OGEzNDIwMDAwMDAwMCwgMHhlMzUwMzVlMTAwMDAwMDAwLAorICAgIDB4ODU4NTM1M2QwMDAwMDAwMCwgMHhjOWFkYTM5ZTAwMDAwMDAwLCAweDVjZDM2OGExMDAwMDAwMDAsCisgICAgMHgxMGZiZmUwMjAwMDAwMDAwLCAweGQxN2YxOGMyMDAwMDAwMDAsIDB4OWQ1NzhlNjEwMDAwMDAwMCwKKyAgICAweDA4Mjk0NTVlMDAwMDAwMDAsIDB4NDQwMWQzZmQwMDAwMDAwMCwgMHgyMmQ0ZDMyMTAwMDAwMDAwLAorICAgIDB4NmVmYzQ1ODIwMDAwMDAwMCwgMHhmYjgyOGViZDAwMDAwMDAwLCAweGI3YWExODFlMDAwMDAwMDAsCisgICAgMHhhNGNiYWI5NDAwMDAwMDAwLCAweGU4ZTMzZDM3MDAwMDAwMDAsIDB4N2Q5ZGY2MDgwMDAwMDAwMCwKKyAgICAweDMxYjU2MGFiMDAwMDAwMDAsIDB4NTc2MDYwNzcwMDAwMDAwMCwgMHgxYjQ4ZjZkNDAwMDAwMDAwLAorICAgIDB4OGUzNjNkZWIwMDAwMDAwMCwgMHhjMjFlYWI0ODAwMDAwMDAwLCAweDAzOWE0ZDg4MDAwMDAwMDAsCisgICAgMHg0ZmIyZGIyYjAwMDAwMDAwLCAweGRhY2MxMDE0MDAwMDAwMDAsIDB4OTZlNDg2YjcwMDAwMDAwMCwKKyAgICAweGYwMzE4NjZiMDAwMDAwMDAsIDB4YmMxOTEwYzgwMDAwMDAwMCwgMHgyOTY3ZGJmNzAwMDAwMDAwLAorICAgIDB4NjU0ZjRkNTQwMDAwMDAwMCwgMHhlYTY4NjdhZDAwMDAwMDAwLCAweGE2NDBmMTBlMDAwMDAwMDAsCisgICAgMHgzMzNlM2EzMTAwMDAwMDAwLCAweDdmMTZhYzkyMDAwMDAwMDAsIDB4MTljM2FjNGUwMDAwMDAwMCwKKyAgICAweDU1ZWIzYWVkMDAwMDAwMDAsIDB4YzA5NWYxZDIwMDAwMDAwMCwgMHg4Y2JkNjc3MTAwMDAwMDAwLAorICAgIDB4NGQzOTgxYjEwMDAwMDAwMCwgMHgwMTExMTcxMjAwMDAwMDAwLCAweDk0NmZkYzJkMDAwMDAwMDAsCisgICAgMHhkODQ3NGE4ZTAwMDAwMDAwLCAweGJlOTI0YTUyMDAwMDAwMDAsIDB4ZjJiYWRjZjEwMDAwMDAwMCwKKyAgICAweDY3YzQxN2NlMDAwMDAwMDAsIDB4MmJlYzgxNmQwMDAwMDAwMCwgMHgzMTFjMTQxNTAwMDAwMDAwLAorICAgIDB4N2QzNDgyYjYwMDAwMDAwMCwgMHhlODRhNDk4OTAwMDAwMDAwLCAweGE0NjJkZjJhMDAwMDAwMDAsCisgICAgMHhjMmI3ZGZmNjAwMDAwMDAwLCAweDhlOWY0OTU1MDAwMDAwMDAsIDB4MWJlMTgyNmEwMDAwMDAwMCwKKyAgICAweDU3YzkxNGM5MDAwMDAwMDAsIDB4OTY0ZGYyMDkwMDAwMDAwMCwgMHhkYTY1NjRhYTAwMDAwMDAwLAorICAgIDB4NGYxYmFmOTUwMDAwMDAwMCwgMHgwMzMzMzkzNjAwMDAwMDAwLCAweDY1ZTYzOWVhMDAwMDAwMDAsCisgICAgMHgyOWNlYWY0OTAwMDAwMDAwLCAweGJjYjA2NDc2MDAwMDAwMDAsIDB4ZjA5OGYyZDUwMDAwMDAwMCwKKyAgICAweDdmYmZkODJjMDAwMDAwMDAsIDB4MzM5NzRlOGYwMDAwMDAwMCwgMHhhNmU5ODViMDAwMDAwMDAwLAorICAgIDB4ZWFjMTEzMTMwMDAwMDAwMCwgMHg4YzE0MTNjZjAwMDAwMDAwLCAweGMwM2M4NTZjMDAwMDAwMDAsCisgICAgMHg1NTQyNGU1MzAwMDAwMDAwLCAweDE5NmFkOGYwMDAwMDAwMDAsIDB4ZDhlZTNlMzAwMDAwMDAwMCwKKyAgICAweDk0YzZhODkzMDAwMDAwMDAsIDB4MDFiODYzYWMwMDAwMDAwMCwgMHg0ZDkwZjUwZjAwMDAwMDAwLAorICAgIDB4MmI0NWY1ZDMwMDAwMDAwMCwgMHg2NzZkNjM3MDAwMDAwMDAwLCAweGYyMTNhODRmMDAwMDAwMDAsCisgICAgMHhiZTNiM2VlYzAwMDAwMDAwLCAweGFkNWE4ZDY2MDAwMDAwMDAsIDB4ZTE3MjFiYzUwMDAwMDAwMCwKKyAgICAweDc0MGNkMGZhMDAwMDAwMDAsIDB4MzgyNDQ2NTkwMDAwMDAwMCwgMHg1ZWYxNDY4NTAwMDAwMDAwLAorICAgIDB4MTJkOWQwMjYwMDAwMDAwMCwgMHg4N2E3MWIxOTAwMDAwMDAwLCAweGNiOGY4ZGJhMDAwMDAwMDAsCisgICAgMHgwYTBiNmI3YTAwMDAwMDAwLCAweDQ2MjNmZGQ5MDAwMDAwMDAsIDB4ZDM1ZDM2ZTYwMDAwMDAwMCwKKyAgICAweDlmNzVhMDQ1MDAwMDAwMDAsIDB4ZjlhMGEwOTkwMDAwMDAwMCwgMHhiNTg4MzYzYTAwMDAwMDAwLAorICAgIDB4MjBmNmZkMDUwMDAwMDAwMCwgMHg2Y2RlNmJhNjAwMDAwMDAwLCAweGUzZjk0MTVmMDAwMDAwMDAsCisgICAgMHhhZmQxZDdmYzAwMDAwMDAwLCAweDNhYWYxY2MzMDAwMDAwMDAsIDB4NzY4NzhhNjAwMDAwMDAwMCwKKyAgICAweDEwNTI4YWJjMDAwMDAwMDAsIDB4NWM3YTFjMWYwMDAwMDAwMCwgMHhjOTA0ZDcyMDAwMDAwMDAwLAorICAgIDB4ODUyYzQxODMwMDAwMDAwMCwgMHg0NGE4YTc0MzAwMDAwMDAwLCAweDA4ODAzMWUwMDAwMDAwMDAsCisgICAgMHg5ZGZlZmFkZjAwMDAwMDAwLCAweGQxZDY2YzdjMDAwMDAwMDAsIDB4YjcwMzZjYTAwMDAwMDAwMCwKKyAgICAweGZiMmJmYTAzMDAwMDAwMDAsIDB4NmU1NTMxM2MwMDAwMDAwMCwgMHgyMjdkYTc5ZjAwMDAwMDAwLAorICAgIDB4MDk5MTI2ZjIwMDAwMDAwMCwgMHg0NWI5YjA1MTAwMDAwMDAwLCAweGQwYzc3YjZlMDAwMDAwMDAsCisgICAgMHg5Y2VmZWRjZDAwMDAwMDAwLCAweGZhM2FlZDExMDAwMDAwMDAsIDB4YjYxMjdiYjIwMDAwMDAwMCwKKyAgICAweDIzNmNiMDhkMDAwMDAwMDAsIDB4NmY0NDI2MmUwMDAwMDAwMCwgMHhhZWMwYzBlZTAwMDAwMDAwLAorICAgIDB4ZTJlODU2NGQwMDAwMDAwMCwgMHg3Nzk2OWQ3MjAwMDAwMDAwLCAweDNiYmUwYmQxMDAwMDAwMDAsCisgICAgMHg1ZDZiMGIwZDAwMDAwMDAwLCAweDExNDM5ZGFlMDAwMDAwMDAsIDB4ODQzZDU2OTEwMDAwMDAwMCwKKyAgICAweGM4MTVjMDMyMDAwMDAwMDAsIDB4NDczMmVhY2IwMDAwMDAwMCwgMHgwYjFhN2M2ODAwMDAwMDAwLAorICAgIDB4OWU2NGI3NTcwMDAwMDAwMCwgMHhkMjRjMjFmNDAwMDAwMDAwLCAweGI0OTkyMTI4MDAwMDAwMDAsCisgICAgMHhmOGIxYjc4YjAwMDAwMDAwLCAweDZkY2Y3Y2I0MDAwMDAwMDAsIDB4MjFlN2VhMTcwMDAwMDAwMCwKKyAgICAweGUwNjMwY2Q3MDAwMDAwMDAsIDB4YWM0YjlhNzQwMDAwMDAwMCwgMHgzOTM1NTE0YjAwMDAwMDAwLAorICAgIDB4NzUxZGM3ZTgwMDAwMDAwMCwgMHgxM2M4YzczNDAwMDAwMDAwLCAweDVmZTA1MTk3MDAwMDAwMDAsCisgICAgMHhjYTllOWFhODAwMDAwMDAwLCAweDg2YjYwYzBiMDAwMDAwMDAsIDB4OTVkN2JmODEwMDAwMDAwMCwKKyAgICAweGQ5ZmYyOTIyMDAwMDAwMDAsIDB4NGM4MWUyMWQwMDAwMDAwMCwgMHgwMGE5NzRiZTAwMDAwMDAwLAorICAgIDB4NjY3Yzc0NjIwMDAwMDAwMCwgMHgyYTU0ZTJjMTAwMDAwMDAwLCAweGJmMmEyOWZlMDAwMDAwMDAsCisgICAgMHhmMzAyYmY1ZDAwMDAwMDAwLCAweDMyODY1OTlkMDAwMDAwMDAsIDB4N2VhZWNmM2UwMDAwMDAwMCwKKyAgICAweGViZDAwNDAxMDAwMDAwMDAsIDB4YTdmODkyYTIwMDAwMDAwMCwgMHhjMTJkOTI3ZTAwMDAwMDAwLAorICAgIDB4OGQwNTA0ZGQwMDAwMDAwMCwgMHgxODdiY2ZlMjAwMDAwMDAwLCAweDU0NTM1OTQxMDAwMDAwMDAsCisgICAgMHhkYjc0NzNiODAwMDAwMDAwLCAweDk3NWNlNTFiMDAwMDAwMDAsIDB4MDIyMjJlMjQwMDAwMDAwMCwKKyAgICAweDRlMGFiODg3MDAwMDAwMDAsIDB4MjhkZmI4NWIwMDAwMDAwMCwgMHg2NGY3MmVmODAwMDAwMDAwLAorICAgIDB4ZjE4OWU1YzcwMDAwMDAwMCwgMHhiZGExNzM2NDAwMDAwMDAwLCAweDdjMjU5NWE0MDAwMDAwMDAsCisgICAgMHgzMDBkMDMwNzAwMDAwMDAwLCAweGE1NzNjODM4MDAwMDAwMDAsIDB4ZTk1YjVlOWIwMDAwMDAwMCwKKyAgICAweDhmOGU1ZTQ3MDAwMDAwMDAsIDB4YzNhNmM4ZTQwMDAwMDAwMCwgMHg1NmQ4MDNkYjAwMDAwMDAwLAorICAgIDB4MWFmMDk1NzgwMDAwMDAwMH0sCisgICB7MHgwMDAwMDAwMDAwMDAwMDAwLCAweDkzOWJjOTdmMDAwMDAwMDAsIDB4MjYzNzkzZmYwMDAwMDAwMCwKKyAgICAweGI1YWM1YTgwMDAwMDAwMDAsIDB4MGQ2ODU3MjQwMDAwMDAwMCwgMHg5ZWYzOWU1YjAwMDAwMDAwLAorICAgIDB4MmI1ZmM0ZGIwMDAwMDAwMCwgMHhiOGM0MGRhNDAwMDAwMDAwLCAweDFhZDBhZTQ4MDAwMDAwMDAsCisgICAgMHg4OTRiNjczNzAwMDAwMDAwLCAweDNjZTczZGI3MDAwMDAwMDAsIDB4YWY3Y2Y0YzgwMDAwMDAwMCwKKyAgICAweDE3YjhmOTZjMDAwMDAwMDAsIDB4ODQyMzMwMTMwMDAwMDAwMCwgMHgzMThmNmE5MzAwMDAwMDAwLAorICAgIDB4YTIxNGEzZWMwMDAwMDAwMCwgMHgzNGEwNWQ5MTAwMDAwMDAwLCAweGE3M2I5NGVlMDAwMDAwMDAsCisgICAgMHgxMjk3Y2U2ZTAwMDAwMDAwLCAweDgxMGMwNzExMDAwMDAwMDAsIDB4MzljODBhYjUwMDAwMDAwMCwKKyAgICAweGFhNTNjM2NhMDAwMDAwMDAsIDB4MWZmZjk5NGEwMDAwMDAwMCwgMHg4YzY0NTAzNTAwMDAwMDAwLAorICAgIDB4MmU3MGYzZDkwMDAwMDAwMCwgMHhiZGViM2FhNjAwMDAwMDAwLCAweDA4NDc2MDI2MDAwMDAwMDAsCisgICAgMHg5YmRjYTk1OTAwMDAwMDAwLCAweDIzMThhNGZkMDAwMDAwMDAsIDB4YjA4MzZkODIwMDAwMDAwMCwKKyAgICAweDA1MmYzNzAyMDAwMDAwMDAsIDB4OTZiNGZlN2QwMDAwMDAwMCwgMHgyOTQ2Y2FmOTAwMDAwMDAwLAorICAgIDB4YmFkZDAzODYwMDAwMDAwMCwgMHgwZjcxNTkwNjAwMDAwMDAwLCAweDljZWE5MDc5MDAwMDAwMDAsCisgICAgMHgyNDJlOWRkZDAwMDAwMDAwLCAweGI3YjU1NGEyMDAwMDAwMDAsIDB4MDIxOTBlMjIwMDAwMDAwMCwKKyAgICAweDkxODJjNzVkMDAwMDAwMDAsIDB4MzM5NjY0YjEwMDAwMDAwMCwgMHhhMDBkYWRjZTAwMDAwMDAwLAorICAgIDB4MTVhMWY3NGUwMDAwMDAwMCwgMHg4NjNhM2UzMTAwMDAwMDAwLCAweDNlZmUzMzk1MDAwMDAwMDAsCisgICAgMHhhZDY1ZmFlYTAwMDAwMDAwLCAweDE4YzlhMDZhMDAwMDAwMDAsIDB4OGI1MjY5MTUwMDAwMDAwMCwKKyAgICAweDFkZTY5NzY4MDAwMDAwMDAsIDB4OGU3ZDVlMTcwMDAwMDAwMCwgMHgzYmQxMDQ5NzAwMDAwMDAwLAorICAgIDB4YTg0YWNkZTgwMDAwMDAwMCwgMHgxMDhlYzA0YzAwMDAwMDAwLCAweDgzMTUwOTMzMDAwMDAwMDAsCisgICAgMHgzNmI5NTNiMzAwMDAwMDAwLCAweGE1MjI5YWNjMDAwMDAwMDAsIDB4MDczNjM5MjAwMDAwMDAwMCwKKyAgICAweDk0YWRmMDVmMDAwMDAwMDAsIDB4MjEwMWFhZGYwMDAwMDAwMCwgMHhiMjlhNjNhMDAwMDAwMDAwLAorICAgIDB4MGE1ZTZlMDQwMDAwMDAwMCwgMHg5OWM1YTc3YjAwMDAwMDAwLCAweDJjNjlmZGZiMDAwMDAwMDAsCisgICAgMHhiZmYyMzQ4NDAwMDAwMDAwLCAweDEzOGFlNTI4MDAwMDAwMDAsIDB4ODAxMTJjNTcwMDAwMDAwMCwKKyAgICAweDM1YmQ3NmQ3MDAwMDAwMDAsIDB4YTYyNmJmYTgwMDAwMDAwMCwgMHgxZWUyYjIwYzAwMDAwMDAwLAorICAgIDB4OGQ3OTdiNzMwMDAwMDAwMCwgMHgzOGQ1MjFmMzAwMDAwMDAwLCAweGFiNGVlODhjMDAwMDAwMDAsCisgICAgMHgwOTVhNGI2MDAwMDAwMDAwLCAweDlhYzE4MjFmMDAwMDAwMDAsIDB4MmY2ZGQ4OWYwMDAwMDAwMCwKKyAgICAweGJjZjYxMWUwMDAwMDAwMDAsIDB4MDQzMjFjNDQwMDAwMDAwMCwgMHg5N2E5ZDUzYjAwMDAwMDAwLAorICAgIDB4MjIwNThmYmIwMDAwMDAwMCwgMHhiMTllNDZjNDAwMDAwMDAwLCAweDI3MmFiOGI5MDAwMDAwMDAsCisgICAgMHhiNGIxNzFjNjAwMDAwMDAwLCAweDAxMWQyYjQ2MDAwMDAwMDAsIDB4OTI4NmUyMzkwMDAwMDAwMCwKKyAgICAweDJhNDJlZjlkMDAwMDAwMDAsIDB4YjlkOTI2ZTIwMDAwMDAwMCwgMHgwYzc1N2M2MjAwMDAwMDAwLAorICAgIDB4OWZlZWI1MWQwMDAwMDAwMCwgMHgzZGZhMTZmMTAwMDAwMDAwLCAweGFlNjFkZjhlMDAwMDAwMDAsCisgICAgMHgxYmNkODUwZTAwMDAwMDAwLCAweDg4NTY0YzcxMDAwMDAwMDAsIDB4MzA5MjQxZDUwMDAwMDAwMCwKKyAgICAweGEzMDk4OGFhMDAwMDAwMDAsIDB4MTZhNWQyMmEwMDAwMDAwMCwgMHg4NTNlMWI1NTAwMDAwMDAwLAorICAgIDB4M2FjYzJmZDEwMDAwMDAwMCwgMHhhOTU3ZTZhZTAwMDAwMDAwLCAweDFjZmJiYzJlMDAwMDAwMDAsCisgICAgMHg4ZjYwNzU1MTAwMDAwMDAwLCAweDM3YTQ3OGY1MDAwMDAwMDAsIDB4YTQzZmIxOGEwMDAwMDAwMCwKKyAgICAweDExOTNlYjBhMDAwMDAwMDAsIDB4ODIwODIyNzUwMDAwMDAwMCwgMHgyMDFjODE5OTAwMDAwMDAwLAorICAgIDB4YjM4NzQ4ZTYwMDAwMDAwMCwgMHgwNjJiMTI2NjAwMDAwMDAwLCAweDk1YjBkYjE5MDAwMDAwMDAsCisgICAgMHgyZDc0ZDZiZDAwMDAwMDAwLCAweGJlZWYxZmMyMDAwMDAwMDAsIDB4MGI0MzQ1NDIwMDAwMDAwMCwKKyAgICAweDk4ZDg4YzNkMDAwMDAwMDAsIDB4MGU2YzcyNDAwMDAwMDAwMCwgMHg5ZGY3YmIzZjAwMDAwMDAwLAorICAgIDB4Mjg1YmUxYmYwMDAwMDAwMCwgMHhiYmMwMjhjMDAwMDAwMDAwLCAweDAzMDQyNTY0MDAwMDAwMDAsCisgICAgMHg5MDlmZWMxYjAwMDAwMDAwLCAweDI1MzNiNjliMDAwMDAwMDAsIDB4YjZhODdmZTQwMDAwMDAwMCwKKyAgICAweDE0YmNkYzA4MDAwMDAwMDAsIDB4ODcyNzE1NzcwMDAwMDAwMCwgMHgzMjhiNGZmNzAwMDAwMDAwLAorICAgIDB4YTExMDg2ODgwMDAwMDAwMCwgMHgxOWQ0OGIyYzAwMDAwMDAwLCAweDhhNGY0MjUzMDAwMDAwMDAsCisgICAgMHgzZmUzMThkMzAwMDAwMDAwLCAweGFjNzhkMWFjMDAwMDAwMDAsIDB4MjYxNGNiNTEwMDAwMDAwMCwKKyAgICAweGI1OGYwMjJlMDAwMDAwMDAsIDB4MDAyMzU4YWUwMDAwMDAwMCwgMHg5M2I4OTFkMTAwMDAwMDAwLAorICAgIDB4MmI3YzljNzUwMDAwMDAwMCwgMHhiOGU3NTUwYTAwMDAwMDAwLCAweDBkNGIwZjhhMDAwMDAwMDAsCisgICAgMHg5ZWQwYzZmNTAwMDAwMDAwLCAweDNjYzQ2NTE5MDAwMDAwMDAsIDB4YWY1ZmFjNjYwMDAwMDAwMCwKKyAgICAweDFhZjNmNmU2MDAwMDAwMDAsIDB4ODk2ODNmOTkwMDAwMDAwMCwgMHgzMWFjMzIzZDAwMDAwMDAwLAorICAgIDB4YTIzN2ZiNDIwMDAwMDAwMCwgMHgxNzliYTFjMjAwMDAwMDAwLCAweDg0MDA2OGJkMDAwMDAwMDAsCisgICAgMHgxMmI0OTZjMDAwMDAwMDAwLCAweDgxMmY1ZmJmMDAwMDAwMDAsIDB4MzQ4MzA1M2YwMDAwMDAwMCwKKyAgICAweGE3MThjYzQwMDAwMDAwMDAsIDB4MWZkY2MxZTQwMDAwMDAwMCwgMHg4YzQ3MDg5YjAwMDAwMDAwLAorICAgIDB4MzllYjUyMWIwMDAwMDAwMCwgMHhhYTcwOWI2NDAwMDAwMDAwLCAweDA4NjQzODg4MDAwMDAwMDAsCisgICAgMHg5YmZmZjFmNzAwMDAwMDAwLCAweDJlNTNhYjc3MDAwMDAwMDAsIDB4YmRjODYyMDgwMDAwMDAwMCwKKyAgICAweDA1MGM2ZmFjMDAwMDAwMDAsIDB4OTY5N2E2ZDMwMDAwMDAwMCwgMHgyMzNiZmM1MzAwMDAwMDAwLAorICAgIDB4YjBhMDM1MmMwMDAwMDAwMCwgMHgwZjUyMDFhODAwMDAwMDAwLCAweDljYzljOGQ3MDAwMDAwMDAsCisgICAgMHgyOTY1OTI1NzAwMDAwMDAwLCAweGJhZmU1YjI4MDAwMDAwMDAsIDB4MDIzYTU2OGMwMDAwMDAwMCwKKyAgICAweDkxYTE5ZmYzMDAwMDAwMDAsIDB4MjQwZGM1NzMwMDAwMDAwMCwgMHhiNzk2MGMwYzAwMDAwMDAwLAorICAgIDB4MTU4MmFmZTAwMDAwMDAwMCwgMHg4NjE5NjY5ZjAwMDAwMDAwLCAweDMzYjUzYzFmMDAwMDAwMDAsCisgICAgMHhhMDJlZjU2MDAwMDAwMDAwLCAweDE4ZWFmOGM0MDAwMDAwMDAsIDB4OGI3MTMxYmIwMDAwMDAwMCwKKyAgICAweDNlZGQ2YjNiMDAwMDAwMDAsIDB4YWQ0NmEyNDQwMDAwMDAwMCwgMHgzYmYyNWMzOTAwMDAwMDAwLAorICAgIDB4YTg2OTk1NDYwMDAwMDAwMCwgMHgxZGM1Y2ZjNjAwMDAwMDAwLCAweDhlNWUwNmI5MDAwMDAwMDAsCisgICAgMHgzNjlhMGIxZDAwMDAwMDAwLCAweGE1MDFjMjYyMDAwMDAwMDAsIDB4MTBhZDk4ZTIwMDAwMDAwMCwKKyAgICAweDgzMzY1MTlkMDAwMDAwMDAsIDB4MjEyMmYyNzEwMDAwMDAwMCwgMHhiMmI5M2IwZTAwMDAwMDAwLAorICAgIDB4MDcxNTYxOGUwMDAwMDAwMCwgMHg5NDhlYThmMTAwMDAwMDAwLCAweDJjNGFhNTU1MDAwMDAwMDAsCisgICAgMHhiZmQxNmMyYTAwMDAwMDAwLCAweDBhN2QzNmFhMDAwMDAwMDAsIDB4OTllNmZmZDUwMDAwMDAwMCwKKyAgICAweDM1OWUyZTc5MDAwMDAwMDAsIDB4YTYwNWU3MDYwMDAwMDAwMCwgMHgxM2E5YmQ4NjAwMDAwMDAwLAorICAgIDB4ODAzMjc0ZjkwMDAwMDAwMCwgMHgzOGY2Nzk1ZDAwMDAwMDAwLCAweGFiNmRiMDIyMDAwMDAwMDAsCisgICAgMHgxZWMxZWFhMjAwMDAwMDAwLCAweDhkNWEyM2RkMDAwMDAwMDAsIDB4MmY0ZTgwMzEwMDAwMDAwMCwKKyAgICAweGJjZDU0OTRlMDAwMDAwMDAsIDB4MDk3OTEzY2UwMDAwMDAwMCwgMHg5YWUyZGFiMTAwMDAwMDAwLAorICAgIDB4MjIyNmQ3MTUwMDAwMDAwMCwgMHhiMWJkMWU2YTAwMDAwMDAwLCAweDA0MTE0NGVhMDAwMDAwMDAsCisgICAgMHg5NzhhOGQ5NTAwMDAwMDAwLCAweDAxM2U3M2U4MDAwMDAwMDAsIDB4OTJhNWJhOTcwMDAwMDAwMCwKKyAgICAweDI3MDllMDE3MDAwMDAwMDAsIDB4YjQ5MjI5NjgwMDAwMDAwMCwgMHgwYzU2MjRjYzAwMDAwMDAwLAorICAgIDB4OWZjZGVkYjMwMDAwMDAwMCwgMHgyYTYxYjczMzAwMDAwMDAwLCAweGI5ZmE3ZTRjMDAwMDAwMDAsCisgICAgMHgxYmVlZGRhMDAwMDAwMDAwLCAweDg4NzUxNGRmMDAwMDAwMDAsIDB4M2RkOTRlNWYwMDAwMDAwMCwKKyAgICAweGFlNDI4NzIwMDAwMDAwMDAsIDB4MTY4NjhhODQwMDAwMDAwMCwgMHg4NTFkNDNmYjAwMDAwMDAwLAorICAgIDB4MzBiMTE5N2IwMDAwMDAwMCwgMHhhMzJhZDAwNDAwMDAwMDAwLCAweDFjZDhlNDgwMDAwMDAwMDAsCisgICAgMHg4ZjQzMmRmZjAwMDAwMDAwLCAweDNhZWY3NzdmMDAwMDAwMDAsIDB4YTk3NGJlMDAwMDAwMDAwMCwKKyAgICAweDExYjBiM2E0MDAwMDAwMDAsIDB4ODIyYjdhZGIwMDAwMDAwMCwgMHgzNzg3MjA1YjAwMDAwMDAwLAorICAgIDB4YTQxY2U5MjQwMDAwMDAwMCwgMHgwNjA4NGFjODAwMDAwMDAwLCAweDk1OTM4M2I3MDAwMDAwMDAsCisgICAgMHgyMDNmZDkzNzAwMDAwMDAwLCAweGIzYTQxMDQ4MDAwMDAwMDAsIDB4MGI2MDFkZWMwMDAwMDAwMCwKKyAgICAweDk4ZmJkNDkzMDAwMDAwMDAsIDB4MmQ1NzhlMTMwMDAwMDAwMCwgMHhiZWNjNDc2YzAwMDAwMDAwLAorICAgIDB4Mjg3OGI5MTEwMDAwMDAwMCwgMHhiYmUzNzA2ZTAwMDAwMDAwLCAweDBlNGYyYWVlMDAwMDAwMDAsCisgICAgMHg5ZGQ0ZTM5MTAwMDAwMDAwLCAweDI1MTBlZTM1MDAwMDAwMDAsIDB4YjY4YjI3NGEwMDAwMDAwMCwKKyAgICAweDAzMjc3ZGNhMDAwMDAwMDAsIDB4OTBiY2I0YjUwMDAwMDAwMCwgMHgzMmE4MTc1OTAwMDAwMDAwLAorICAgIDB4YTEzM2RlMjYwMDAwMDAwMCwgMHgxNDlmODRhNjAwMDAwMDAwLCAweDg3MDQ0ZGQ5MDAwMDAwMDAsCisgICAgMHgzZmMwNDA3ZDAwMDAwMDAwLCAweGFjNWI4OTAyMDAwMDAwMDAsIDB4MTlmN2QzODIwMDAwMDAwMCwKKyAgICAweDhhNmMxYWZkMDAwMDAwMDB9LAorICAgezB4MDAwMDAwMDAwMDAwMDAwMCwgMHg2NTBiNzk2OTAwMDAwMDAwLCAweGNhMTZmMmQyMDAwMDAwMDAsCisgICAgMHhhZjFkOGJiYjAwMDAwMDAwLCAweGQ1MmI5NTdlMDAwMDAwMDAsIDB4YjAyMGVjMTcwMDAwMDAwMCwKKyAgICAweDFmM2Q2N2FjMDAwMDAwMDAsIDB4N2EzNjFlYzUwMDAwMDAwMCwgMHhhYTU3MmFmZDAwMDAwMDAwLAorICAgIDB4Y2Y1YzUzOTQwMDAwMDAwMCwgMHg2MDQxZDgyZjAwMDAwMDAwLCAweDA1NGFhMTQ2MDAwMDAwMDAsCisgICAgMHg3ZjdjYmY4MzAwMDAwMDAwLCAweDFhNzdjNmVhMDAwMDAwMDAsIDB4YjU2YTRkNTEwMDAwMDAwMCwKKyAgICAweGQwNjEzNDM4MDAwMDAwMDAsIDB4MTVhOTI1MjEwMDAwMDAwMCwgMHg3MGEyNWM0ODAwMDAwMDAwLAorICAgIDB4ZGZiZmQ3ZjMwMDAwMDAwMCwgMHhiYWI0YWU5YTAwMDAwMDAwLCAweGMwODJiMDVmMDAwMDAwMDAsCisgICAgMHhhNTg5YzkzNjAwMDAwMDAwLCAweDBhOTQ0MjhkMDAwMDAwMDAsIDB4NmY5ZjNiZTQwMDAwMDAwMCwKKyAgICAweGJmZmUwZmRjMDAwMDAwMDAsIDB4ZGFmNTc2YjUwMDAwMDAwMCwgMHg3NWU4ZmQwZTAwMDAwMDAwLAorICAgIDB4MTBlMzg0NjcwMDAwMDAwMCwgMHg2YWQ1OWFhMjAwMDAwMDAwLCAweDBmZGVlM2NiMDAwMDAwMDAsCisgICAgMHhhMGMzNjg3MDAwMDAwMDAwLCAweGM1YzgxMTE5MDAwMDAwMDAsIDB4MmE1MjRiNDIwMDAwMDAwMCwKKyAgICAweDRmNTkzMjJiMDAwMDAwMDAsIDB4ZTA0NGI5OTAwMDAwMDAwMCwgMHg4NTRmYzBmOTAwMDAwMDAwLAorICAgIDB4ZmY3OWRlM2MwMDAwMDAwMCwgMHg5YTcyYTc1NTAwMDAwMDAwLCAweDM1NmYyY2VlMDAwMDAwMDAsCisgICAgMHg1MDY0NTU4NzAwMDAwMDAwLCAweDgwMDU2MWJmMDAwMDAwMDAsIDB4ZTUwZTE4ZDYwMDAwMDAwMCwKKyAgICAweDRhMTM5MzZkMDAwMDAwMDAsIDB4MmYxOGVhMDQwMDAwMDAwMCwgMHg1NTJlZjRjMTAwMDAwMDAwLAorICAgIDB4MzAyNThkYTgwMDAwMDAwMCwgMHg5ZjM4MDYxMzAwMDAwMDAwLCAweGZhMzM3ZjdhMDAwMDAwMDAsCisgICAgMHgzZmZiNmU2MzAwMDAwMDAwLCAweDVhZjAxNzBhMDAwMDAwMDAsIDB4ZjVlZDljYjEwMDAwMDAwMCwKKyAgICAweDkwZTZlNWQ4MDAwMDAwMDAsIDB4ZWFkMGZiMWQwMDAwMDAwMCwgMHg4ZmRiODI3NDAwMDAwMDAwLAorICAgIDB4MjBjNjA5Y2YwMDAwMDAwMCwgMHg0NWNkNzBhNjAwMDAwMDAwLCAweDk1YWM0NDllMDAwMDAwMDAsCisgICAgMHhmMGE3M2RmNzAwMDAwMDAwLCAweDVmYmFiNjRjMDAwMDAwMDAsIDB4M2FiMWNmMjUwMDAwMDAwMCwKKyAgICAweDQwODdkMWUwMDAwMDAwMDAsIDB4MjU4Y2E4ODkwMDAwMDAwMCwgMHg4YTkxMjMzMjAwMDAwMDAwLAorICAgIDB4ZWY5YTVhNWIwMDAwMDAwMCwgMHg1NGE0OTY4NDAwMDAwMDAwLCAweDMxYWZlZmVkMDAwMDAwMDAsCisgICAgMHg5ZWIyNjQ1NjAwMDAwMDAwLCAweGZiYjkxZDNmMDAwMDAwMDAsIDB4ODE4ZjAzZmEwMDAwMDAwMCwKKyAgICAweGU0ODQ3YTkzMDAwMDAwMDAsIDB4NGI5OWYxMjgwMDAwMDAwMCwgMHgyZTkyODg0MTAwMDAwMDAwLAorICAgIDB4ZmVmM2JjNzkwMDAwMDAwMCwgMHg5YmY4YzUxMDAwMDAwMDAwLCAweDM0ZTU0ZWFiMDAwMDAwMDAsCisgICAgMHg1MWVlMzdjMjAwMDAwMDAwLCAweDJiZDgyOTA3MDAwMDAwMDAsIDB4NGVkMzUwNmUwMDAwMDAwMCwKKyAgICAweGUxY2VkYmQ1MDAwMDAwMDAsIDB4ODRjNWEyYmMwMDAwMDAwMCwgMHg0MTBkYjNhNTAwMDAwMDAwLAorICAgIDB4MjQwNmNhY2MwMDAwMDAwMCwgMHg4YjFiNDE3NzAwMDAwMDAwLCAweGVlMTAzODFlMDAwMDAwMDAsCisgICAgMHg5NDI2MjZkYjAwMDAwMDAwLCAweGYxMmQ1ZmIyMDAwMDAwMDAsIDB4NWUzMGQ0MDkwMDAwMDAwMCwKKyAgICAweDNiM2JhZDYwMDAwMDAwMDAsIDB4ZWI1YTk5NTgwMDAwMDAwMCwgMHg4ZTUxZTAzMTAwMDAwMDAwLAorICAgIDB4MjE0YzZiOGEwMDAwMDAwMCwgMHg0NDQ3MTJlMzAwMDAwMDAwLCAweDNlNzEwYzI2MDAwMDAwMDAsCisgICAgMHg1YjdhNzU0ZjAwMDAwMDAwLCAweGY0NjdmZWY0MDAwMDAwMDAsIDB4OTE2Yzg3OWQwMDAwMDAwMCwKKyAgICAweDdlZjZkZGM2MDAwMDAwMDAsIDB4MWJmZGE0YWYwMDAwMDAwMCwgMHhiNGUwMmYxNDAwMDAwMDAwLAorICAgIDB4ZDFlYjU2N2QwMDAwMDAwMCwgMHhhYmRkNDhiODAwMDAwMDAwLCAweGNlZDYzMWQxMDAwMDAwMDAsCisgICAgMHg2MWNiYmE2YTAwMDAwMDAwLCAweDA0YzBjMzAzMDAwMDAwMDAsIDB4ZDRhMWY3M2IwMDAwMDAwMCwKKyAgICAweGIxYWE4ZTUyMDAwMDAwMDAsIDB4MWViNzA1ZTkwMDAwMDAwMCwgMHg3YmJjN2M4MDAwMDAwMDAwLAorICAgIDB4MDE4YTYyNDUwMDAwMDAwMCwgMHg2NDgxMWIyYzAwMDAwMDAwLCAweGNiOWM5MDk3MDAwMDAwMDAsCisgICAgMHhhZTk3ZTlmZTAwMDAwMDAwLCAweDZiNWZmOGU3MDAwMDAwMDAsIDB4MGU1NDgxOGUwMDAwMDAwMCwKKyAgICAweGExNDkwYTM1MDAwMDAwMDAsIDB4YzQ0MjczNWMwMDAwMDAwMCwgMHhiZTc0NmQ5OTAwMDAwMDAwLAorICAgIDB4ZGI3ZjE0ZjAwMDAwMDAwMCwgMHg3NDYyOWY0YjAwMDAwMDAwLCAweDExNjllNjIyMDAwMDAwMDAsCisgICAgMHhjMTA4ZDIxYTAwMDAwMDAwLCAweGE0MDNhYjczMDAwMDAwMDAsIDB4MGIxZTIwYzgwMDAwMDAwMCwKKyAgICAweDZlMTU1OWExMDAwMDAwMDAsIDB4MTQyMzQ3NjQwMDAwMDAwMCwgMHg3MTI4M2UwZDAwMDAwMDAwLAorICAgIDB4ZGUzNWI1YjYwMDAwMDAwMCwgMHhiYjNlY2NkZjAwMDAwMDAwLCAweGU5NGU1Y2QyMDAwMDAwMDAsCisgICAgMHg4YzQ1MjViYjAwMDAwMDAwLCAweDIzNThhZTAwMDAwMDAwMDAsIDB4NDY1M2Q3NjkwMDAwMDAwMCwKKyAgICAweDNjNjVjOWFjMDAwMDAwMDAsIDB4NTk2ZWIwYzUwMDAwMDAwMCwgMHhmNjczM2I3ZTAwMDAwMDAwLAorICAgIDB4OTM3ODQyMTcwMDAwMDAwMCwgMHg0MzE5NzYyZjAwMDAwMDAwLCAweDI2MTIwZjQ2MDAwMDAwMDAsCisgICAgMHg4OTBmODRmZDAwMDAwMDAwLCAweGVjMDRmZDk0MDAwMDAwMDAsIDB4OTYzMmUzNTEwMDAwMDAwMCwKKyAgICAweGYzMzk5YTM4MDAwMDAwMDAsIDB4NWMyNDExODMwMDAwMDAwMCwgMHgzOTJmNjhlYTAwMDAwMDAwLAorICAgIDB4ZmNlNzc5ZjMwMDAwMDAwMCwgMHg5OWVjMDA5YTAwMDAwMDAwLCAweDM2ZjE4YjIxMDAwMDAwMDAsCisgICAgMHg1M2ZhZjI0ODAwMDAwMDAwLCAweDI5Y2NlYzhkMDAwMDAwMDAsIDB4NGNjNzk1ZTQwMDAwMDAwMCwKKyAgICAweGUzZGExZTVmMDAwMDAwMDAsIDB4ODZkMTY3MzYwMDAwMDAwMCwgMHg1NmIwNTMwZTAwMDAwMDAwLAorICAgIDB4MzNiYjJhNjcwMDAwMDAwMCwgMHg5Y2E2YTFkYzAwMDAwMDAwLCAweGY5YWRkOGI1MDAwMDAwMDAsCisgICAgMHg4MzliYzY3MDAwMDAwMDAwLCAweGU2OTBiZjE5MDAwMDAwMDAsIDB4NDk4ZDM0YTIwMDAwMDAwMCwKKyAgICAweDJjODY0ZGNiMDAwMDAwMDAsIDB4YzMxYzE3OTAwMDAwMDAwMCwgMHhhNjE3NmVmOTAwMDAwMDAwLAorICAgIDB4MDkwYWU1NDIwMDAwMDAwMCwgMHg2YzAxOWMyYjAwMDAwMDAwLCAweDE2Mzc4MmVlMDAwMDAwMDAsCisgICAgMHg3MzNjZmI4NzAwMDAwMDAwLCAweGRjMjE3MDNjMDAwMDAwMDAsIDB4YjkyYTA5NTUwMDAwMDAwMCwKKyAgICAweDY5NGIzZDZkMDAwMDAwMDAsIDB4MGM0MDQ0MDQwMDAwMDAwMCwgMHhhMzVkY2ZiZjAwMDAwMDAwLAorICAgIDB4YzY1NmI2ZDYwMDAwMDAwMCwgMHhiYzYwYTgxMzAwMDAwMDAwLCAweGQ5NmJkMTdhMDAwMDAwMDAsCisgICAgMHg3Njc2NWFjMTAwMDAwMDAwLCAweDEzN2QyM2E4MDAwMDAwMDAsIDB4ZDZiNTMyYjEwMDAwMDAwMCwKKyAgICAweGIzYmU0YmQ4MDAwMDAwMDAsIDB4MWNhM2MwNjMwMDAwMDAwMCwgMHg3OWE4YjkwYTAwMDAwMDAwLAorICAgIDB4MDM5ZWE3Y2YwMDAwMDAwMCwgMHg2Njk1ZGVhNjAwMDAwMDAwLCAweGM5ODg1NTFkMDAwMDAwMDAsCisgICAgMHhhYzgzMmM3NDAwMDAwMDAwLCAweDdjZTIxODRjMDAwMDAwMDAsIDB4MTllOTYxMjUwMDAwMDAwMCwKKyAgICAweGI2ZjRlYTllMDAwMDAwMDAsIDB4ZDNmZjkzZjcwMDAwMDAwMCwgMHhhOWM5OGQzMjAwMDAwMDAwLAorICAgIDB4Y2NjMmY0NWIwMDAwMDAwMCwgMHg2M2RmN2ZlMDAwMDAwMDAwLCAweDA2ZDQwNjg5MDAwMDAwMDAsCisgICAgMHhiZGVhY2E1NjAwMDAwMDAwLCAweGQ4ZTFiMzNmMDAwMDAwMDAsIDB4NzdmYzM4ODQwMDAwMDAwMCwKKyAgICAweDEyZjc0MWVkMDAwMDAwMDAsIDB4NjhjMTVmMjgwMDAwMDAwMCwgMHgwZGNhMjY0MTAwMDAwMDAwLAorICAgIDB4YTJkN2FkZmEwMDAwMDAwMCwgMHhjN2RjZDQ5MzAwMDAwMDAwLCAweDE3YmRlMGFiMDAwMDAwMDAsCisgICAgMHg3MmI2OTljMjAwMDAwMDAwLCAweGRkYWIxMjc5MDAwMDAwMDAsIDB4YjhhMDZiMTAwMDAwMDAwMCwKKyAgICAweGMyOTY3NWQ1MDAwMDAwMDAsIDB4YTc5ZDBjYmMwMDAwMDAwMCwgMHgwODgwODcwNzAwMDAwMDAwLAorICAgIDB4NmQ4YmZlNmUwMDAwMDAwMCwgMHhhODQzZWY3NzAwMDAwMDAwLCAweGNkNDg5NjFlMDAwMDAwMDAsCisgICAgMHg2MjU1MWRhNTAwMDAwMDAwLCAweDA3NWU2NGNjMDAwMDAwMDAsIDB4N2Q2ODdhMDkwMDAwMDAwMCwKKyAgICAweDE4NjMwMzYwMDAwMDAwMDAsIDB4Yjc3ZTg4ZGIwMDAwMDAwMCwgMHhkMjc1ZjFiMjAwMDAwMDAwLAorICAgIDB4MDIxNGM1OGEwMDAwMDAwMCwgMHg2NzFmYmNlMzAwMDAwMDAwLCAweGM4MDIzNzU4MDAwMDAwMDAsCisgICAgMHhhZDA5NGUzMTAwMDAwMDAwLCAweGQ3M2Y1MGY0MDAwMDAwMDAsIDB4YjIzNDI5OWQwMDAwMDAwMCwKKyAgICAweDFkMjlhMjI2MDAwMDAwMDAsIDB4NzgyMmRiNGYwMDAwMDAwMCwgMHg5N2I4ODExNDAwMDAwMDAwLAorICAgIDB4ZjJiM2Y4N2QwMDAwMDAwMCwgMHg1ZGFlNzNjNjAwMDAwMDAwLCAweDM4YTUwYWFmMDAwMDAwMDAsCisgICAgMHg0MjkzMTQ2YTAwMDAwMDAwLCAweDI3OTg2ZDAzMDAwMDAwMDAsIDB4ODg4NWU2YjgwMDAwMDAwMCwKKyAgICAweGVkOGU5ZmQxMDAwMDAwMDAsIDB4M2RlZmFiZTkwMDAwMDAwMCwgMHg1OGU0ZDI4MDAwMDAwMDAwLAorICAgIDB4ZjdmOTU5M2IwMDAwMDAwMCwgMHg5MmYyMjA1MjAwMDAwMDAwLCAweGU4YzQzZTk3MDAwMDAwMDAsCisgICAgMHg4ZGNmNDdmZTAwMDAwMDAwLCAweDIyZDJjYzQ1MDAwMDAwMDAsIDB4NDdkOWI1MmMwMDAwMDAwMCwKKyAgICAweDgyMTFhNDM1MDAwMDAwMDAsIDB4ZTcxYWRkNWMwMDAwMDAwMCwgMHg0ODA3NTZlNzAwMDAwMDAwLAorICAgIDB4MmQwYzJmOGUwMDAwMDAwMCwgMHg1NzNhMzE0YjAwMDAwMDAwLCAweDMyMzE0ODIyMDAwMDAwMDAsCisgICAgMHg5ZDJjYzM5OTAwMDAwMDAwLCAweGY4MjdiYWYwMDAwMDAwMDAsIDB4Mjg0NjhlYzgwMDAwMDAwMCwKKyAgICAweDRkNGRmN2ExMDAwMDAwMDAsIDB4ZTI1MDdjMWEwMDAwMDAwMCwgMHg4NzViMDU3MzAwMDAwMDAwLAorICAgIDB4ZmQ2ZDFiYjYwMDAwMDAwMCwgMHg5ODY2NjJkZjAwMDAwMDAwLCAweDM3N2JlOTY0MDAwMDAwMDAsCisgICAgMHg1MjcwOTAwZDAwMDAwMDAwfSwKKyAgIHsweDAwMDAwMDAwMDAwMDAwMDAsIDB4ZGNlY2IxM2QwMDAwMDAwMCwgMHhiOGQ5NjM3YjAwMDAwMDAwLAorICAgIDB4NjQzNWQyNDYwMDAwMDAwMCwgMHg3MGIzYzdmNjAwMDAwMDAwLCAweGFjNWY3NmNiMDAwMDAwMDAsCisgICAgMHhjODZhYTQ4ZDAwMDAwMDAwLCAweDE0ODYxNWIwMDAwMDAwMDAsIDB4YTE2MGZlMzYwMDAwMDAwMCwKKyAgICAweDdkOGM0ZjBiMDAwMDAwMDAsIDB4MTliOTlkNGQwMDAwMDAwMCwgMHhjNTU1MmM3MDAwMDAwMDAwLAorICAgIDB4ZDFkMzM5YzAwMDAwMDAwMCwgMHgwZDNmODhmZDAwMDAwMDAwLCAweDY5MGE1YWJiMDAwMDAwMDAsCisgICAgMHhiNWU2ZWI4NjAwMDAwMDAwLCAweDQyYzFmYzZkMDAwMDAwMDAsIDB4OWUyZDRkNTAwMDAwMDAwMCwKKyAgICAweGZhMTg5ZjE2MDAwMDAwMDAsIDB4MjZmNDJlMmIwMDAwMDAwMCwgMHgzMjcyM2I5YjAwMDAwMDAwLAorICAgIDB4ZWU5ZThhYTYwMDAwMDAwMCwgMHg4YWFiNThlMDAwMDAwMDAwLCAweDU2NDdlOWRkMDAwMDAwMDAsCisgICAgMHhlM2ExMDI1YjAwMDAwMDAwLCAweDNmNGRiMzY2MDAwMDAwMDAsIDB4NWI3ODYxMjAwMDAwMDAwMCwKKyAgICAweDg3OTRkMDFkMDAwMDAwMDAsIDB4OTMxMmM1YWQwMDAwMDAwMCwgMHg0ZmZlNzQ5MDAwMDAwMDAwLAorICAgIDB4MmJjYmE2ZDYwMDAwMDAwMCwgMHhmNzI3MTdlYjAwMDAwMDAwLCAweDg0ODJmOWRiMDAwMDAwMDAsCisgICAgMHg1ODZlNDhlNjAwMDAwMDAwLCAweDNjNWI5YWEwMDAwMDAwMDAsIDB4ZTBiNzJiOWQwMDAwMDAwMCwKKyAgICAweGY0MzEzZTJkMDAwMDAwMDAsIDB4MjhkZDhmMTAwMDAwMDAwMCwgMHg0Y2U4NWQ1NjAwMDAwMDAwLAorICAgIDB4OTAwNGVjNmIwMDAwMDAwMCwgMHgyNWUyMDdlZDAwMDAwMDAwLCAweGY5MGViNmQwMDAwMDAwMDAsCisgICAgMHg5ZDNiNjQ5NjAwMDAwMDAwLCAweDQxZDdkNWFiMDAwMDAwMDAsIDB4NTU1MWMwMWIwMDAwMDAwMCwKKyAgICAweDg5YmQ3MTI2MDAwMDAwMDAsIDB4ZWQ4OGEzNjAwMDAwMDAwMCwgMHgzMTY0MTI1ZDAwMDAwMDAwLAorICAgIDB4YzY0MzA1YjYwMDAwMDAwMCwgMHgxYWFmYjQ4YjAwMDAwMDAwLCAweDdlOWE2NmNkMDAwMDAwMDAsCisgICAgMHhhMjc2ZDdmMDAwMDAwMDAwLCAweGI2ZjBjMjQwMDAwMDAwMDAsIDB4NmExYzczN2QwMDAwMDAwMCwKKyAgICAweDBlMjlhMTNiMDAwMDAwMDAsIDB4ZDJjNTEwMDYwMDAwMDAwMCwgMHg2NzIzZmI4MDAwMDAwMDAwLAorICAgIDB4YmJjZjRhYmQwMDAwMDAwMCwgMHhkZmZhOThmYjAwMDAwMDAwLCAweDAzMTYyOWM2MDAwMDAwMDAsCisgICAgMHgxNzkwM2M3NjAwMDAwMDAwLCAweGNiN2M4ZDRiMDAwMDAwMDAsIDB4YWY0OTVmMGQwMDAwMDAwMCwKKyAgICAweDczYTVlZTMwMDAwMDAwMDAsIDB4NDkwMzgyNmMwMDAwMDAwMCwgMHg5NWVmMzM1MTAwMDAwMDAwLAorICAgIDB4ZjFkYWUxMTcwMDAwMDAwMCwgMHgyZDM2NTAyYTAwMDAwMDAwLCAweDM5YjA0NTlhMDAwMDAwMDAsCisgICAgMHhlNTVjZjRhNzAwMDAwMDAwLCAweDgxNjkyNmUxMDAwMDAwMDAsIDB4NWQ4NTk3ZGMwMDAwMDAwMCwKKyAgICAweGU4NjM3YzVhMDAwMDAwMDAsIDB4MzQ4ZmNkNjcwMDAwMDAwMCwgMHg1MGJhMWYyMTAwMDAwMDAwLAorICAgIDB4OGM1NmFlMWMwMDAwMDAwMCwgMHg5OGQwYmJhYzAwMDAwMDAwLCAweDQ0M2MwYTkxMDAwMDAwMDAsCisgICAgMHgyMDA5ZDhkNzAwMDAwMDAwLCAweGZjZTU2OWVhMDAwMDAwMDAsIDB4MGJjMjdlMDEwMDAwMDAwMCwKKyAgICAweGQ3MmVjZjNjMDAwMDAwMDAsIDB4YjMxYjFkN2EwMDAwMDAwMCwgMHg2ZmY3YWM0NzAwMDAwMDAwLAorICAgIDB4N2I3MWI5ZjcwMDAwMDAwMCwgMHhhNzlkMDhjYTAwMDAwMDAwLCAweGMzYThkYThjMDAwMDAwMDAsCisgICAgMHgxZjQ0NmJiMTAwMDAwMDAwLCAweGFhYTI4MDM3MDAwMDAwMDAsIDB4NzY0ZTMxMGEwMDAwMDAwMCwKKyAgICAweDEyN2JlMzRjMDAwMDAwMDAsIDB4Y2U5NzUyNzEwMDAwMDAwMCwgMHhkYTExNDdjMTAwMDAwMDAwLAorICAgIDB4MDZmZGY2ZmMwMDAwMDAwMCwgMHg2MmM4MjRiYTAwMDAwMDAwLCAweGJlMjQ5NTg3MDAwMDAwMDAsCisgICAgMHhjZDgxN2JiNzAwMDAwMDAwLCAweDExNmRjYThhMDAwMDAwMDAsIDB4NzU1ODE4Y2MwMDAwMDAwMCwKKyAgICAweGE5YjRhOWYxMDAwMDAwMDAsIDB4YmQzMmJjNDEwMDAwMDAwMCwgMHg2MWRlMGQ3YzAwMDAwMDAwLAorICAgIDB4MDVlYmRmM2EwMDAwMDAwMCwgMHhkOTA3NmUwNzAwMDAwMDAwLCAweDZjZTE4NTgxMDAwMDAwMDAsCisgICAgMHhiMDBkMzRiYzAwMDAwMDAwLCAweGQ0MzhlNmZhMDAwMDAwMDAsIDB4MDhkNDU3YzcwMDAwMDAwMCwKKyAgICAweDFjNTI0Mjc3MDAwMDAwMDAsIDB4YzBiZWYzNGEwMDAwMDAwMCwgMHhhNDhiMjEwYzAwMDAwMDAwLAorICAgIDB4Nzg2NzkwMzEwMDAwMDAwMCwgMHg4ZjQwODdkYTAwMDAwMDAwLCAweDUzYWMzNmU3MDAwMDAwMDAsCisgICAgMHgzNzk5ZTRhMTAwMDAwMDAwLCAweGViNzU1NTljMDAwMDAwMDAsIDB4ZmZmMzQwMmMwMDAwMDAwMCwKKyAgICAweDIzMWZmMTExMDAwMDAwMDAsIDB4NDcyYTIzNTcwMDAwMDAwMCwgMHg5YmM2OTI2YTAwMDAwMDAwLAorICAgIDB4MmUyMDc5ZWMwMDAwMDAwMCwgMHhmMmNjYzhkMTAwMDAwMDAwLCAweDk2ZjkxYTk3MDAwMDAwMDAsCisgICAgMHg0YTE1YWJhYTAwMDAwMDAwLCAweDVlOTNiZTFhMDAwMDAwMDAsIDB4ODI3ZjBmMjcwMDAwMDAwMCwKKyAgICAweGU2NGFkZDYxMDAwMDAwMDAsIDB4M2FhNjZjNWMwMDAwMDAwMCwgMHg5MjA2MDRkOTAwMDAwMDAwLAorICAgIDB4NGVlYWI1ZTQwMDAwMDAwMCwgMHgyYWRmNjdhMjAwMDAwMDAwLCAweGY2MzNkNjlmMDAwMDAwMDAsCisgICAgMHhlMmI1YzMyZjAwMDAwMDAwLCAweDNlNTk3MjEyMDAwMDAwMDAsIDB4NWE2Y2EwNTQwMDAwMDAwMCwKKyAgICAweDg2ODAxMTY5MDAwMDAwMDAsIDB4MzM2NmZhZWYwMDAwMDAwMCwgMHhlZjhhNGJkMjAwMDAwMDAwLAorICAgIDB4OGJiZjk5OTQwMDAwMDAwMCwgMHg1NzUzMjhhOTAwMDAwMDAwLCAweDQzZDUzZDE5MDAwMDAwMDAsCisgICAgMHg5ZjM5OGMyNDAwMDAwMDAwLCAweGZiMGM1ZTYyMDAwMDAwMDAsIDB4MjdlMGVmNWYwMDAwMDAwMCwKKyAgICAweGQwYzdmOGI0MDAwMDAwMDAsIDB4MGMyYjQ5ODkwMDAwMDAwMCwgMHg2ODFlOWJjZjAwMDAwMDAwLAorICAgIDB4YjRmMjJhZjIwMDAwMDAwMCwgMHhhMDc0M2Y0MjAwMDAwMDAwLCAweDdjOTg4ZTdmMDAwMDAwMDAsCisgICAgMHgxOGFkNWMzOTAwMDAwMDAwLCAweGM0NDFlZDA0MDAwMDAwMDAsIDB4NzFhNzA2ODIwMDAwMDAwMCwKKyAgICAweGFkNGJiN2JmMDAwMDAwMDAsIDB4Yzk3ZTY1ZjkwMDAwMDAwMCwgMHgxNTkyZDRjNDAwMDAwMDAwLAorICAgIDB4MDExNGMxNzQwMDAwMDAwMCwgMHhkZGY4NzA0OTAwMDAwMDAwLCAweGI5Y2RhMjBmMDAwMDAwMDAsCisgICAgMHg2NTIxMTMzMjAwMDAwMDAwLCAweDE2ODRmZDAyMDAwMDAwMDAsIDB4Y2E2ODRjM2YwMDAwMDAwMCwKKyAgICAweGFlNWQ5ZTc5MDAwMDAwMDAsIDB4NzJiMTJmNDQwMDAwMDAwMCwgMHg2NjM3M2FmNDAwMDAwMDAwLAorICAgIDB4YmFkYjhiYzkwMDAwMDAwMCwgMHhkZWVlNTk4ZjAwMDAwMDAwLCAweDAyMDJlOGIyMDAwMDAwMDAsCisgICAgMHhiN2U0MDMzNDAwMDAwMDAwLCAweDZiMDhiMjA5MDAwMDAwMDAsIDB4MGYzZDYwNGYwMDAwMDAwMCwKKyAgICAweGQzZDFkMTcyMDAwMDAwMDAsIDB4Yzc1N2M0YzIwMDAwMDAwMCwgMHgxYmJiNzVmZjAwMDAwMDAwLAorICAgIDB4N2Y4ZWE3YjkwMDAwMDAwMCwgMHhhMzYyMTY4NDAwMDAwMDAwLCAweDU0NDUwMTZmMDAwMDAwMDAsCisgICAgMHg4OGE5YjA1MjAwMDAwMDAwLCAweGVjOWM2MjE0MDAwMDAwMDAsIDB4MzA3MGQzMjkwMDAwMDAwMCwKKyAgICAweDI0ZjZjNjk5MDAwMDAwMDAsIDB4ZjgxYTc3YTQwMDAwMDAwMCwgMHg5YzJmYTVlMjAwMDAwMDAwLAorICAgIDB4NDBjMzE0ZGYwMDAwMDAwMCwgMHhmNTI1ZmY1OTAwMDAwMDAwLCAweDI5Yzk0ZTY0MDAwMDAwMDAsCisgICAgMHg0ZGZjOWMyMjAwMDAwMDAwLCAweDkxMTAyZDFmMDAwMDAwMDAsIDB4ODU5NjM4YWYwMDAwMDAwMCwKKyAgICAweDU5N2E4OTkyMDAwMDAwMDAsIDB4M2Q0ZjViZDQwMDAwMDAwMCwgMHhlMWEzZWFlOTAwMDAwMDAwLAorICAgIDB4ZGIwNTg2YjUwMDAwMDAwMCwgMHgwN2U5Mzc4ODAwMDAwMDAwLCAweDYzZGNlNWNlMDAwMDAwMDAsCisgICAgMHhiZjMwNTRmMzAwMDAwMDAwLCAweGFiYjY0MTQzMDAwMDAwMDAsIDB4Nzc1YWYwN2UwMDAwMDAwMCwKKyAgICAweDEzNmYyMjM4MDAwMDAwMDAsIDB4Y2Y4MzkzMDUwMDAwMDAwMCwgMHg3YTY1Nzg4MzAwMDAwMDAwLAorICAgIDB4YTY4OWM5YmUwMDAwMDAwMCwgMHhjMmJjMWJmODAwMDAwMDAwLCAweDFlNTBhYWM1MDAwMDAwMDAsCisgICAgMHgwYWQ2YmY3NTAwMDAwMDAwLCAweGQ2M2EwZTQ4MDAwMDAwMDAsIDB4YjIwZmRjMGUwMDAwMDAwMCwKKyAgICAweDZlZTM2ZDMzMDAwMDAwMDAsIDB4OTljNDdhZDgwMDAwMDAwMCwgMHg0NTI4Y2JlNTAwMDAwMDAwLAorICAgIDB4MjExZDE5YTMwMDAwMDAwMCwgMHhmZGYxYTg5ZTAwMDAwMDAwLCAweGU5NzdiZDJlMDAwMDAwMDAsCisgICAgMHgzNTliMGMxMzAwMDAwMDAwLCAweDUxYWVkZTU1MDAwMDAwMDAsIDB4OGQ0MjZmNjgwMDAwMDAwMCwKKyAgICAweDM4YTQ4NGVlMDAwMDAwMDAsIDB4ZTQ0ODM1ZDMwMDAwMDAwMCwgMHg4MDdkZTc5NTAwMDAwMDAwLAorICAgIDB4NWM5MTU2YTgwMDAwMDAwMCwgMHg0ODE3NDMxODAwMDAwMDAwLCAweDk0ZmJmMjI1MDAwMDAwMDAsCisgICAgMHhmMGNlMjA2MzAwMDAwMDAwLCAweDJjMjI5MTVlMDAwMDAwMDAsIDB4NWY4NzdmNmUwMDAwMDAwMCwKKyAgICAweDgzNmJjZTUzMDAwMDAwMDAsIDB4ZTc1ZTFjMTUwMDAwMDAwMCwgMHgzYmIyYWQyODAwMDAwMDAwLAorICAgIDB4MmYzNGI4OTgwMDAwMDAwMCwgMHhmM2Q4MDlhNTAwMDAwMDAwLCAweDk3ZWRkYmUzMDAwMDAwMDAsCisgICAgMHg0YjAxNmFkZTAwMDAwMDAwLCAweGZlZTc4MTU4MDAwMDAwMDAsIDB4MjIwYjMwNjUwMDAwMDAwMCwKKyAgICAweDQ2M2VlMjIzMDAwMDAwMDAsIDB4OWFkMjUzMWUwMDAwMDAwMCwgMHg4ZTU0NDZhZTAwMDAwMDAwLAorICAgIDB4NTJiOGY3OTMwMDAwMDAwMCwgMHgzNjhkMjVkNTAwMDAwMDAwLCAweGVhNjE5NGU4MDAwMDAwMDAsCisgICAgMHgxZDQ2ODMwMzAwMDAwMDAwLCAweGMxYWEzMjNlMDAwMDAwMDAsIDB4YTU5ZmUwNzgwMDAwMDAwMCwKKyAgICAweDc5NzM1MTQ1MDAwMDAwMDAsIDB4NmRmNTQ0ZjUwMDAwMDAwMCwgMHhiMTE5ZjVjODAwMDAwMDAwLAorICAgIDB4ZDUyYzI3OGUwMDAwMDAwMCwgMHgwOWMwOTZiMzAwMDAwMDAwLCAweGJjMjY3ZDM1MDAwMDAwMDAsCisgICAgMHg2MGNhY2MwODAwMDAwMDAwLCAweDA0ZmYxZTRlMDAwMDAwMDAsIDB4ZDgxM2FmNzMwMDAwMDAwMCwKKyAgICAweGNjOTViYWMzMDAwMDAwMDAsIDB4MTA3OTBiZmUwMDAwMDAwMCwgMHg3NDRjZDliODAwMDAwMDAwLAorICAgIDB4YThhMDY4ODUwMDAwMDAwMH19OworCisjZWxzZSAvKiBXID09IDQgKi8KKworbG9jYWwgY29uc3Qgel9jcmNfdCBGQVIgY3JjX2JyYWlkX3RhYmxlW11bMjU2XSA9IHsKKyAgIHsweDAwMDAwMDAwLCAweDgxMjU2NTI3LCAweGQ5M2JjYzBmLCAweDU4MWVhOTI4LCAweDY5MDY5ZTVmLAorICAgIDB4ZTgyM2ZiNzgsIDB4YjAzZDUyNTAsIDB4MzExODM3NzcsIDB4ZDIwZDNjYmUsIDB4NTMyODU5OTksCisgICAgMHgwYjM2ZjBiMSwgMHg4YTEzOTU5NiwgMHhiYjBiYTJlMSwgMHgzYTJlYzdjNiwgMHg2MjMwNmVlZSwKKyAgICAweGUzMTUwYmM5LCAweDdmNmI3ZjNkLCAweGZlNGUxYTFhLCAweGE2NTBiMzMyLCAweDI3NzVkNjE1LAorICAgIDB4MTY2ZGUxNjIsIDB4OTc0ODg0NDUsIDB4Y2Y1NjJkNmQsIDB4NGU3MzQ4NGEsIDB4YWQ2NjQzODMsCisgICAgMHgyYzQzMjZhNCwgMHg3NDVkOGY4YywgMHhmNTc4ZWFhYiwgMHhjNDYwZGRkYywgMHg0NTQ1YjhmYiwKKyAgICAweDFkNWIxMWQzLCAweDljN2U3NGY0LCAweGZlZDZmZTdhLCAweDdmZjM5YjVkLCAweDI3ZWQzMjc1LAorICAgIDB4YTZjODU3NTIsIDB4OTdkMDYwMjUsIDB4MTZmNTA1MDIsIDB4NGVlYmFjMmEsIDB4Y2ZjZWM5MGQsCisgICAgMHgyY2RiYzJjNCwgMHhhZGZlYTdlMywgMHhmNWUwMGVjYiwgMHg3NGM1NmJlYywgMHg0NWRkNWM5YiwKKyAgICAweGM0ZjgzOWJjLCAweDljZTY5MDk0LCAweDFkYzNmNWIzLCAweDgxYmQ4MTQ3LCAweDAwOThlNDYwLAorICAgIDB4NTg4NjRkNDgsIDB4ZDlhMzI4NmYsIDB4ZThiYjFmMTgsIDB4Njk5ZTdhM2YsIDB4MzE4MGQzMTcsCisgICAgMHhiMGE1YjYzMCwgMHg1M2IwYmRmOSwgMHhkMjk1ZDhkZSwgMHg4YThiNzFmNiwgMHgwYmFlMTRkMSwKKyAgICAweDNhYjYyM2E2LCAweGJiOTM0NjgxLCAweGUzOGRlZmE5LCAweDYyYTg4YThlLCAweDI2ZGNmYWI1LAorICAgIDB4YTdmOTlmOTIsIDB4ZmZlNzM2YmEsIDB4N2VjMjUzOWQsIDB4NGZkYTY0ZWEsIDB4Y2VmZjAxY2QsCisgICAgMHg5NmUxYThlNSwgMHgxN2M0Y2RjMiwgMHhmNGQxYzYwYiwgMHg3NWY0YTMyYywgMHgyZGVhMGEwNCwKKyAgICAweGFjY2Y2ZjIzLCAweDlkZDc1ODU0LCAweDFjZjIzZDczLCAweDQ0ZWM5NDViLCAweGM1YzlmMTdjLAorICAgIDB4NTliNzg1ODgsIDB4ZDg5MmUwYWYsIDB4ODA4YzQ5ODcsIDB4MDFhOTJjYTAsIDB4MzBiMTFiZDcsCisgICAgMHhiMTk0N2VmMCwgMHhlOThhZDdkOCwgMHg2OGFmYjJmZiwgMHg4YmJhYjkzNiwgMHgwYTlmZGMxMSwKKyAgICAweDUyODE3NTM5LCAweGQzYTQxMDFlLCAweGUyYmMyNzY5LCAweDYzOTk0MjRlLCAweDNiODdlYjY2LAorICAgIDB4YmFhMjhlNDEsIDB4ZDgwYTA0Y2YsIDB4NTkyZjYxZTgsIDB4MDEzMWM4YzAsIDB4ODAxNGFkZTcsCisgICAgMHhiMTBjOWE5MCwgMHgzMDI5ZmZiNywgMHg2ODM3NTY5ZiwgMHhlOTEyMzNiOCwgMHgwYTA3Mzg3MSwKKyAgICAweDhiMjI1ZDU2LCAweGQzM2NmNDdlLCAweDUyMTk5MTU5LCAweDYzMDFhNjJlLCAweGUyMjRjMzA5LAorICAgIDB4YmEzYTZhMjEsIDB4M2IxZjBmMDYsIDB4YTc2MTdiZjIsIDB4MjY0NDFlZDUsIDB4N2U1YWI3ZmQsCisgICAgMHhmZjdmZDJkYSwgMHhjZTY3ZTVhZCwgMHg0ZjQyODA4YSwgMHgxNzVjMjlhMiwgMHg5Njc5NGM4NSwKKyAgICAweDc1NmM0NzRjLCAweGY0NDkyMjZiLCAweGFjNTc4YjQzLCAweDJkNzJlZTY0LCAweDFjNmFkOTEzLAorICAgIDB4OWQ0ZmJjMzQsIDB4YzU1MTE1MWMsIDB4NDQ3NDcwM2IsIDB4NGRiOWY1NmEsIDB4Y2M5YzkwNGQsCisgICAgMHg5NDgyMzk2NSwgMHgxNWE3NWM0MiwgMHgyNGJmNmIzNSwgMHhhNTlhMGUxMiwgMHhmZDg0YTczYSwKKyAgICAweDdjYTFjMjFkLCAweDlmYjRjOWQ0LCAweDFlOTFhY2YzLCAweDQ2OGYwNWRiLCAweGM3YWE2MGZjLAorICAgIDB4ZjZiMjU3OGIsIDB4Nzc5NzMyYWMsIDB4MmY4OTliODQsIDB4YWVhY2ZlYTMsIDB4MzJkMjhhNTcsCisgICAgMHhiM2Y3ZWY3MCwgMHhlYmU5NDY1OCwgMHg2YWNjMjM3ZiwgMHg1YmQ0MTQwOCwgMHhkYWYxNzEyZiwKKyAgICAweDgyZWZkODA3LCAweDAzY2FiZDIwLCAweGUwZGZiNmU5LCAweDYxZmFkM2NlLCAweDM5ZTQ3YWU2LAorICAgIDB4YjhjMTFmYzEsIDB4ODlkOTI4YjYsIDB4MDhmYzRkOTEsIDB4NTBlMmU0YjksIDB4ZDFjNzgxOWUsCisgICAgMHhiMzZmMGIxMCwgMHgzMjRhNmUzNywgMHg2YTU0YzcxZiwgMHhlYjcxYTIzOCwgMHhkYTY5OTU0ZiwKKyAgICAweDViNGNmMDY4LCAweDAzNTI1OTQwLCAweDgyNzczYzY3LCAweDYxNjIzN2FlLCAweGUwNDc1Mjg5LAorICAgIDB4Yjg1OWZiYTEsIDB4Mzk3YzllODYsIDB4MDg2NGE5ZjEsIDB4ODk0MWNjZDYsIDB4ZDE1ZjY1ZmUsCisgICAgMHg1MDdhMDBkOSwgMHhjYzA0NzQyZCwgMHg0ZDIxMTEwYSwgMHgxNTNmYjgyMiwgMHg5NDFhZGQwNSwKKyAgICAweGE1MDJlYTcyLCAweDI0Mjc4ZjU1LCAweDdjMzkyNjdkLCAweGZkMWM0MzVhLCAweDFlMDk0ODkzLAorICAgIDB4OWYyYzJkYjQsIDB4YzczMjg0OWMsIDB4NDYxN2UxYmIsIDB4NzcwZmQ2Y2MsIDB4ZjYyYWIzZWIsCisgICAgMHhhZTM0MWFjMywgMHgyZjExN2ZlNCwgMHg2YjY1MGZkZiwgMHhlYTQwNmFmOCwgMHhiMjVlYzNkMCwKKyAgICAweDMzN2JhNmY3LCAweDAyNjM5MTgwLCAweDgzNDZmNGE3LCAweGRiNTg1ZDhmLCAweDVhN2QzOGE4LAorICAgIDB4Yjk2ODMzNjEsIDB4Mzg0ZDU2NDYsIDB4NjA1M2ZmNmUsIDB4ZTE3NjlhNDksIDB4ZDA2ZWFkM2UsCisgICAgMHg1MTRiYzgxOSwgMHgwOTU1NjEzMSwgMHg4ODcwMDQxNiwgMHgxNDBlNzBlMiwgMHg5NTJiMTVjNSwKKyAgICAweGNkMzViY2VkLCAweDRjMTBkOWNhLCAweDdkMDhlZWJkLCAweGZjMmQ4YjlhLCAweGE0MzMyMmIyLAorICAgIDB4MjUxNjQ3OTUsIDB4YzYwMzRjNWMsIDB4NDcyNjI5N2IsIDB4MWYzODgwNTMsIDB4OWUxZGU1NzQsCisgICAgMHhhZjA1ZDIwMywgMHgyZTIwYjcyNCwgMHg3NjNlMWUwYywgMHhmNzFiN2IyYiwgMHg5NWIzZjFhNSwKKyAgICAweDE0OTY5NDgyLCAweDRjODgzZGFhLCAweGNkYWQ1ODhkLCAweGZjYjU2ZmZhLCAweDdkOTAwYWRkLAorICAgIDB4MjU4ZWEzZjUsIDB4YTRhYmM2ZDIsIDB4NDdiZWNkMWIsIDB4YzY5YmE4M2MsIDB4OWU4NTAxMTQsCisgICAgMHgxZmEwNjQzMywgMHgyZWI4NTM0NCwgMHhhZjlkMzY2MywgMHhmNzgzOWY0YiwgMHg3NmE2ZmE2YywKKyAgICAweGVhZDg4ZTk4LCAweDZiZmRlYmJmLCAweDMzZTM0Mjk3LCAweGIyYzYyN2IwLCAweDgzZGUxMGM3LAorICAgIDB4MDJmYjc1ZTAsIDB4NWFlNWRjYzgsIDB4ZGJjMGI5ZWYsIDB4MzhkNWIyMjYsIDB4YjlmMGQ3MDEsCisgICAgMHhlMWVlN2UyOSwgMHg2MGNiMWIwZSwgMHg1MWQzMmM3OSwgMHhkMGY2NDk1ZSwgMHg4OGU4ZTA3NiwKKyAgICAweDA5Y2Q4NTUxfSwKKyAgIHsweDAwMDAwMDAwLCAweDliNzNlYWQ0LCAweGVkOTZkM2U5LCAweDc2ZTUzOTNkLCAweDAwNWNhMTkzLAorICAgIDB4OWIyZjRiNDcsIDB4ZWRjYTcyN2EsIDB4NzZiOTk4YWUsIDB4MDBiOTQzMjYsIDB4OWJjYWE5ZjIsCisgICAgMHhlZDJmOTBjZiwgMHg3NjVjN2ExYiwgMHgwMGU1ZTJiNSwgMHg5Yjk2MDg2MSwgMHhlZDczMzE1YywKKyAgICAweDc2MDBkYjg4LCAweDAxNzI4NjRjLCAweDlhMDE2Yzk4LCAweGVjZTQ1NWE1LCAweDc3OTdiZjcxLAorICAgIDB4MDEyZTI3ZGYsIDB4OWE1ZGNkMGIsIDB4ZWNiOGY0MzYsIDB4NzdjYjFlZTIsIDB4MDFjYmM1NmEsCisgICAgMHg5YWI4MmZiZSwgMHhlYzVkMTY4MywgMHg3NzJlZmM1NywgMHgwMTk3NjRmOSwgMHg5YWU0OGUyZCwKKyAgICAweGVjMDFiNzEwLCAweDc3NzI1ZGM0LCAweDAyZTUwYzk4LCAweDk5OTZlNjRjLCAweGVmNzNkZjcxLAorICAgIDB4NzQwMDM1YTUsIDB4MDJiOWFkMGIsIDB4OTljYTQ3ZGYsIDB4ZWYyZjdlZTIsIDB4NzQ1Yzk0MzYsCisgICAgMHgwMjVjNGZiZSwgMHg5OTJmYTU2YSwgMHhlZmNhOWM1NywgMHg3NGI5NzY4MywgMHgwMjAwZWUyZCwKKyAgICAweDk5NzMwNGY5LCAweGVmOTYzZGM0LCAweDc0ZTVkNzEwLCAweDAzOTc4YWQ0LCAweDk4ZTQ2MDAwLAorICAgIDB4ZWUwMTU5M2QsIDB4NzU3MmIzZTksIDB4MDNjYjJiNDcsIDB4OThiOGMxOTMsIDB4ZWU1ZGY4YWUsCisgICAgMHg3NTJlMTI3YSwgMHgwMzJlYzlmMiwgMHg5ODVkMjMyNiwgMHhlZWI4MWExYiwgMHg3NWNiZjBjZiwKKyAgICAweDAzNzI2ODYxLCAweDk4MDE4MmI1LCAweGVlZTRiYjg4LCAweDc1OTc1MTVjLCAweDA1Y2ExOTMwLAorICAgIDB4OWViOWYzZTQsIDB4ZTg1Y2NhZDksIDB4NzMyZjIwMGQsIDB4MDU5NmI4YTMsIDB4OWVlNTUyNzcsCisgICAgMHhlODAwNmI0YSwgMHg3MzczODE5ZSwgMHgwNTczNWExNiwgMHg5ZTAwYjBjMiwgMHhlOGU1ODlmZiwKKyAgICAweDczOTY2MzJiLCAweDA1MmZmYjg1LCAweDllNWMxMTUxLCAweGU4YjkyODZjLCAweDczY2FjMmI4LAorICAgIDB4MDRiODlmN2MsIDB4OWZjYjc1YTgsIDB4ZTkyZTRjOTUsIDB4NzI1ZGE2NDEsIDB4MDRlNDNlZWYsCisgICAgMHg5Zjk3ZDQzYiwgMHhlOTcyZWQwNiwgMHg3MjAxMDdkMiwgMHgwNDAxZGM1YSwgMHg5ZjcyMzY4ZSwKKyAgICAweGU5OTcwZmIzLCAweDcyZTRlNTY3LCAweDA0NWQ3ZGM5LCAweDlmMmU5NzFkLCAweGU5Y2JhZTIwLAorICAgIDB4NzJiODQ0ZjQsIDB4MDcyZjE1YTgsIDB4OWM1Y2ZmN2MsIDB4ZWFiOWM2NDEsIDB4NzFjYTJjOTUsCisgICAgMHgwNzczYjQzYiwgMHg5YzAwNWVlZiwgMHhlYWU1NjdkMiwgMHg3MTk2OGQwNiwgMHgwNzk2NTY4ZSwKKyAgICAweDljZTViYzVhLCAweGVhMDA4NTY3LCAweDcxNzM2ZmIzLCAweDA3Y2FmNzFkLCAweDljYjkxZGM5LAorICAgIDB4ZWE1YzI0ZjQsIDB4NzEyZmNlMjAsIDB4MDY1ZDkzZTQsIDB4OWQyZTc5MzAsIDB4ZWJjYjQwMGQsCisgICAgMHg3MGI4YWFkOSwgMHgwNjAxMzI3NywgMHg5ZDcyZDhhMywgMHhlYjk3ZTE5ZSwgMHg3MGU0MGI0YSwKKyAgICAweDA2ZTRkMGMyLCAweDlkOTczYTE2LCAweGViNzIwMzJiLCAweDcwMDFlOWZmLCAweDA2Yjg3MTUxLAorICAgIDB4OWRjYjliODUsIDB4ZWIyZWEyYjgsIDB4NzA1ZDQ4NmMsIDB4MGI5NDMyNjAsIDB4OTBlN2Q4YjQsCisgICAgMHhlNjAyZTE4OSwgMHg3ZDcxMGI1ZCwgMHgwYmM4OTNmMywgMHg5MGJiNzkyNywgMHhlNjVlNDAxYSwKKyAgICAweDdkMmRhYWNlLCAweDBiMmQ3MTQ2LCAweDkwNWU5YjkyLCAweGU2YmJhMmFmLCAweDdkYzg0ODdiLAorICAgIDB4MGI3MWQwZDUsIDB4OTAwMjNhMDEsIDB4ZTZlNzAzM2MsIDB4N2Q5NGU5ZTgsIDB4MGFlNmI0MmMsCisgICAgMHg5MTk1NWVmOCwgMHhlNzcwNjdjNSwgMHg3YzAzOGQxMSwgMHgwYWJhMTViZiwgMHg5MWM5ZmY2YiwKKyAgICAweGU3MmNjNjU2LCAweDdjNWYyYzgyLCAweDBhNWZmNzBhLCAweDkxMmMxZGRlLCAweGU3YzkyNGUzLAorICAgIDB4N2NiYWNlMzcsIDB4MGEwMzU2OTksIDB4OTE3MGJjNGQsIDB4ZTc5NTg1NzAsIDB4N2NlNjZmYTQsCisgICAgMHgwOTcxM2VmOCwgMHg5MjAyZDQyYywgMHhlNGU3ZWQxMSwgMHg3Zjk0MDdjNSwgMHgwOTJkOWY2YiwKKyAgICAweDkyNWU3NWJmLCAweGU0YmI0YzgyLCAweDdmYzhhNjU2LCAweDA5Yzg3ZGRlLCAweDkyYmI5NzBhLAorICAgIDB4ZTQ1ZWFlMzcsIDB4N2YyZDQ0ZTMsIDB4MDk5NGRjNGQsIDB4OTJlNzM2OTksIDB4ZTQwMjBmYTQsCisgICAgMHg3ZjcxZTU3MCwgMHgwODAzYjhiNCwgMHg5MzcwNTI2MCwgMHhlNTk1NmI1ZCwgMHg3ZWU2ODE4OSwKKyAgICAweDA4NWYxOTI3LCAweDkzMmNmM2YzLCAweGU1YzljYWNlLCAweDdlYmEyMDFhLCAweDA4YmFmYjkyLAorICAgIDB4OTNjOTExNDYsIDB4ZTUyYzI4N2IsIDB4N2U1ZmMyYWYsIDB4MDhlNjVhMDEsIDB4OTM5NWIwZDUsCisgICAgMHhlNTcwODllOCwgMHg3ZTAzNjMzYywgMHgwZTVlMmI1MCwgMHg5NTJkYzE4NCwgMHhlM2M4ZjhiOSwKKyAgICAweDc4YmIxMjZkLCAweDBlMDI4YWMzLCAweDk1NzE2MDE3LCAweGUzOTQ1OTJhLCAweDc4ZTdiM2ZlLAorICAgIDB4MGVlNzY4NzYsIDB4OTU5NDgyYTIsIDB4ZTM3MWJiOWYsIDB4NzgwMjUxNGIsIDB4MGViYmM5ZTUsCisgICAgMHg5NWM4MjMzMSwgMHhlMzJkMWEwYywgMHg3ODVlZjBkOCwgMHgwZjJjYWQxYywgMHg5NDVmNDdjOCwKKyAgICAweGUyYmE3ZWY1LCAweDc5Yzk5NDIxLCAweDBmNzAwYzhmLCAweDk0MDNlNjViLCAweGUyZTZkZjY2LAorICAgIDB4Nzk5NTM1YjIsIDB4MGY5NWVlM2EsIDB4OTRlNjA0ZWUsIDB4ZTIwMzNkZDMsIDB4Nzk3MGQ3MDcsCisgICAgMHgwZmM5NGZhOSwgMHg5NGJhYTU3ZCwgMHhlMjVmOWM0MCwgMHg3OTJjNzY5NCwgMHgwY2JiMjdjOCwKKyAgICAweDk3YzhjZDFjLCAweGUxMmRmNDIxLCAweDdhNWUxZWY1LCAweDBjZTc4NjViLCAweDk3OTQ2YzhmLAorICAgIDB4ZTE3MTU1YjIsIDB4N2EwMmJmNjYsIDB4MGMwMjY0ZWUsIDB4OTc3MThlM2EsIDB4ZTE5NGI3MDcsCisgICAgMHg3YWU3NWRkMywgMHgwYzVlYzU3ZCwgMHg5NzJkMmZhOSwgMHhlMWM4MTY5NCwgMHg3YWJiZmM0MCwKKyAgICAweDBkYzlhMTg0LCAweDk2YmE0YjUwLCAweGUwNWY3MjZkLCAweDdiMmM5OGI5LCAweDBkOTUwMDE3LAorICAgIDB4OTZlNmVhYzMsIDB4ZTAwM2QzZmUsIDB4N2I3MDM5MmEsIDB4MGQ3MGUyYTIsIDB4OTYwMzA4NzYsCisgICAgMHhlMGU2MzE0YiwgMHg3Yjk1ZGI5ZiwgMHgwZDJjNDMzMSwgMHg5NjVmYTllNSwgMHhlMGJhOTBkOCwKKyAgICAweDdiYzk3YTBjfSwKKyAgIHsweDAwMDAwMDAwLCAweDE3Mjg2NGMwLCAweDJlNTBjOTgwLCAweDM5NzhhZDQwLCAweDVjYTE5MzAwLAorICAgIDB4NGI4OWY3YzAsIDB4NzJmMTVhODAsIDB4NjVkOTNlNDAsIDB4Yjk0MzI2MDAsIDB4YWU2YjQyYzAsCisgICAgMHg5NzEzZWY4MCwgMHg4MDNiOGI0MCwgMHhlNWUyYjUwMCwgMHhmMmNhZDFjMCwgMHhjYmIyN2M4MCwKKyAgICAweGRjOWExODQwLCAweGE5Zjc0YTQxLCAweGJlZGYyZTgxLCAweDg3YTc4M2MxLCAweDkwOGZlNzAxLAorICAgIDB4ZjU1NmQ5NDEsIDB4ZTI3ZWJkODEsIDB4ZGIwNjEwYzEsIDB4Y2MyZTc0MDEsIDB4MTBiNDZjNDEsCisgICAgMHgwNzljMDg4MSwgMHgzZWU0YTVjMSwgMHgyOWNjYzEwMSwgMHg0YzE1ZmY0MSwgMHg1YjNkOWI4MSwKKyAgICAweDYyNDUzNmMxLCAweDc1NmQ1MjAxLCAweDg4OWY5MmMzLCAweDlmYjdmNjAzLCAweGE2Y2Y1YjQzLAorICAgIDB4YjFlNzNmODMsIDB4ZDQzZTAxYzMsIDB4YzMxNjY1MDMsIDB4ZmE2ZWM4NDMsIDB4ZWQ0NmFjODMsCisgICAgMHgzMWRjYjRjMywgMHgyNmY0ZDAwMywgMHgxZjhjN2Q0MywgMHgwOGE0MTk4MywgMHg2ZDdkMjdjMywKKyAgICAweDdhNTU0MzAzLCAweDQzMmRlZTQzLCAweDU0MDU4YTgzLCAweDIxNjhkODgyLCAweDM2NDBiYzQyLAorICAgIDB4MGYzODExMDIsIDB4MTgxMDc1YzIsIDB4N2RjOTRiODIsIDB4NmFlMTJmNDIsIDB4NTM5OTgyMDIsCisgICAgMHg0NGIxZTZjMiwgMHg5ODJiZmU4MiwgMHg4ZjAzOWE0MiwgMHhiNjdiMzcwMiwgMHhhMTUzNTNjMiwKKyAgICAweGM0OGE2ZDgyLCAweGQzYTIwOTQyLCAweGVhZGFhNDAyLCAweGZkZjJjMGMyLCAweGNhNGUyM2M3LAorICAgIDB4ZGQ2NjQ3MDcsIDB4ZTQxZWVhNDcsIDB4ZjMzNjhlODcsIDB4OTZlZmIwYzcsIDB4ODFjN2Q0MDcsCisgICAgMHhiOGJmNzk0NywgMHhhZjk3MWQ4NywgMHg3MzBkMDVjNywgMHg2NDI1NjEwNywgMHg1ZDVkY2M0NywKKyAgICAweDRhNzVhODg3LCAweDJmYWM5NmM3LCAweDM4ODRmMjA3LCAweDAxZmM1ZjQ3LCAweDE2ZDQzYjg3LAorICAgIDB4NjNiOTY5ODYsIDB4NzQ5MTBkNDYsIDB4NGRlOWEwMDYsIDB4NWFjMWM0YzYsIDB4M2YxOGZhODYsCisgICAgMHgyODMwOWU0NiwgMHgxMTQ4MzMwNiwgMHgwNjYwNTdjNiwgMHhkYWZhNGY4NiwgMHhjZGQyMmI0NiwKKyAgICAweGY0YWE4NjA2LCAweGUzODJlMmM2LCAweDg2NWJkYzg2LCAweDkxNzNiODQ2LCAweGE4MGIxNTA2LAorICAgIDB4YmYyMzcxYzYsIDB4NDJkMWIxMDQsIDB4NTVmOWQ1YzQsIDB4NmM4MTc4ODQsIDB4N2JhOTFjNDQsCisgICAgMHgxZTcwMjIwNCwgMHgwOTU4NDZjNCwgMHgzMDIwZWI4NCwgMHgyNzA4OGY0NCwgMHhmYjkyOTcwNCwKKyAgICAweGVjYmFmM2M0LCAweGQ1YzI1ZTg0LCAweGMyZWEzYTQ0LCAweGE3MzMwNDA0LCAweGIwMWI2MGM0LAorICAgIDB4ODk2M2NkODQsIDB4OWU0YmE5NDQsIDB4ZWIyNmZiNDUsIDB4ZmMwZTlmODUsIDB4YzU3NjMyYzUsCisgICAgMHhkMjVlNTYwNSwgMHhiNzg3Njg0NSwgMHhhMGFmMGM4NSwgMHg5OWQ3YTFjNSwgMHg4ZWZmYzUwNSwKKyAgICAweDUyNjVkZDQ1LCAweDQ1NGRiOTg1LCAweDdjMzUxNGM1LCAweDZiMWQ3MDA1LCAweDBlYzQ0ZTQ1LAorICAgIDB4MTllYzJhODUsIDB4MjA5NDg3YzUsIDB4MzdiY2UzMDUsIDB4NGZlZDQxY2YsIDB4NThjNTI1MGYsCisgICAgMHg2MWJkODg0ZiwgMHg3Njk1ZWM4ZiwgMHgxMzRjZDJjZiwgMHgwNDY0YjYwZiwgMHgzZDFjMWI0ZiwKKyAgICAweDJhMzQ3ZjhmLCAweGY2YWU2N2NmLCAweGUxODYwMzBmLCAweGQ4ZmVhZTRmLCAweGNmZDZjYThmLAorICAgIDB4YWEwZmY0Y2YsIDB4YmQyNzkwMGYsIDB4ODQ1ZjNkNGYsIDB4OTM3NzU5OGYsIDB4ZTYxYTBiOGUsCisgICAgMHhmMTMyNmY0ZSwgMHhjODRhYzIwZSwgMHhkZjYyYTZjZSwgMHhiYWJiOTg4ZSwgMHhhZDkzZmM0ZSwKKyAgICAweDk0ZWI1MTBlLCAweDgzYzMzNWNlLCAweDVmNTkyZDhlLCAweDQ4NzE0OTRlLCAweDcxMDllNDBlLAorICAgIDB4NjYyMTgwY2UsIDB4MDNmOGJlOGUsIDB4MTRkMGRhNGUsIDB4MmRhODc3MGUsIDB4M2E4MDEzY2UsCisgICAgMHhjNzcyZDMwYywgMHhkMDVhYjdjYywgMHhlOTIyMWE4YywgMHhmZTBhN2U0YywgMHg5YmQzNDAwYywKKyAgICAweDhjZmIyNGNjLCAweGI1ODM4OThjLCAweGEyYWJlZDRjLCAweDdlMzFmNTBjLCAweDY5MTk5MWNjLAorICAgIDB4NTA2MTNjOGMsIDB4NDc0OTU4NGMsIDB4MjI5MDY2MGMsIDB4MzViODAyY2MsIDB4MGNjMGFmOGMsCisgICAgMHgxYmU4Y2I0YywgMHg2ZTg1OTk0ZCwgMHg3OWFkZmQ4ZCwgMHg0MGQ1NTBjZCwgMHg1N2ZkMzQwZCwKKyAgICAweDMyMjQwYTRkLCAweDI1MGM2ZThkLCAweDFjNzRjM2NkLCAweDBiNWNhNzBkLCAweGQ3YzZiZjRkLAorICAgIDB4YzBlZWRiOGQsIDB4Zjk5Njc2Y2QsIDB4ZWViZTEyMGQsIDB4OGI2NzJjNGQsIDB4OWM0ZjQ4OGQsCisgICAgMHhhNTM3ZTVjZCwgMHhiMjFmODEwZCwgMHg4NWEzNjIwOCwgMHg5MjhiMDZjOCwgMHhhYmYzYWI4OCwKKyAgICAweGJjZGJjZjQ4LCAweGQ5MDJmMTA4LCAweGNlMmE5NWM4LCAweGY3NTIzODg4LCAweGUwN2E1YzQ4LAorICAgIDB4M2NlMDQ0MDgsIDB4MmJjODIwYzgsIDB4MTJiMDhkODgsIDB4MDU5OGU5NDgsIDB4NjA0MWQ3MDgsCisgICAgMHg3NzY5YjNjOCwgMHg0ZTExMWU4OCwgMHg1OTM5N2E0OCwgMHgyYzU0Mjg0OSwgMHgzYjdjNGM4OSwKKyAgICAweDAyMDRlMWM5LCAweDE1MmM4NTA5LCAweDcwZjViYjQ5LCAweDY3ZGRkZjg5LCAweDVlYTU3MmM5LAorICAgIDB4NDk4ZDE2MDksIDB4OTUxNzBlNDksIDB4ODIzZjZhODksIDB4YmI0N2M3YzksIDB4YWM2ZmEzMDksCisgICAgMHhjOWI2OWQ0OSwgMHhkZTllZjk4OSwgMHhlN2U2NTRjOSwgMHhmMGNlMzAwOSwgMHgwZDNjZjBjYiwKKyAgICAweDFhMTQ5NDBiLCAweDIzNmMzOTRiLCAweDM0NDQ1ZDhiLCAweDUxOWQ2M2NiLCAweDQ2YjUwNzBiLAorICAgIDB4N2ZjZGFhNGIsIDB4NjhlNWNlOGIsIDB4YjQ3ZmQ2Y2IsIDB4YTM1N2IyMGIsIDB4OWEyZjFmNGIsCisgICAgMHg4ZDA3N2I4YiwgMHhlOGRlNDVjYiwgMHhmZmY2MjEwYiwgMHhjNjhlOGM0YiwgMHhkMWE2ZTg4YiwKKyAgICAweGE0Y2JiYThhLCAweGIzZTNkZTRhLCAweDhhOWI3MzBhLCAweDlkYjMxN2NhLCAweGY4NmEyOThhLAorICAgIDB4ZWY0MjRkNGEsIDB4ZDYzYWUwMGEsIDB4YzExMjg0Y2EsIDB4MWQ4ODljOGEsIDB4MGFhMGY4NGEsCisgICAgMHgzM2Q4NTUwYSwgMHgyNGYwMzFjYSwgMHg0MTI5MGY4YSwgMHg1NjAxNmI0YSwgMHg2Zjc5YzYwYSwKKyAgICAweDc4NTFhMmNhfSwKKyAgIHsweDAwMDAwMDAwLCAweDlmZGE4MzllLCAweGU0YzQwMTdkLCAweDdiMWU4MmUzLCAweDEyZjkwNGJiLAorICAgIDB4OGQyMzg3MjUsIDB4ZjYzZDA1YzYsIDB4NjllNzg2NTgsIDB4MjVmMjA5NzYsIDB4YmEyODhhZTgsCisgICAgMHhjMTM2MDgwYiwgMHg1ZWVjOGI5NSwgMHgzNzBiMGRjZCwgMHhhOGQxOGU1MywgMHhkM2NmMGNiMCwKKyAgICAweDRjMTU4ZjJlLCAweDRiZTQxMmVjLCAweGQ0M2U5MTcyLCAweGFmMjAxMzkxLCAweDMwZmE5MDBmLAorICAgIDB4NTkxZDE2NTcsIDB4YzZjNzk1YzksIDB4YmRkOTE3MmEsIDB4MjIwMzk0YjQsIDB4NmUxNjFiOWEsCisgICAgMHhmMWNjOTgwNCwgMHg4YWQyMWFlNywgMHgxNTA4OTk3OSwgMHg3Y2VmMWYyMSwgMHhlMzM1OWNiZiwKKyAgICAweDk4MmIxZTVjLCAweDA3ZjE5ZGMyLCAweDk3YzgyNWQ4LCAweDA4MTJhNjQ2LCAweDczMGMyNGE1LAorICAgIDB4ZWNkNmE3M2IsIDB4ODUzMTIxNjMsIDB4MWFlYmEyZmQsIDB4NjFmNTIwMWUsIDB4ZmUyZmEzODAsCisgICAgMHhiMjNhMmNhZSwgMHgyZGUwYWYzMCwgMHg1NmZlMmRkMywgMHhjOTI0YWU0ZCwgMHhhMGMzMjgxNSwKKyAgICAweDNmMTlhYjhiLCAweDQ0MDcyOTY4LCAweGRiZGRhYWY2LCAweGRjMmMzNzM0LCAweDQzZjZiNGFhLAorICAgIDB4MzhlODM2NDksIDB4YTczMmI1ZDcsIDB4Y2VkNTMzOGYsIDB4NTEwZmIwMTEsIDB4MmExMTMyZjIsCisgICAgMHhiNWNiYjE2YywgMHhmOWRlM2U0MiwgMHg2NjA0YmRkYywgMHgxZDFhM2YzZiwgMHg4MmMwYmNhMSwKKyAgICAweGViMjczYWY5LCAweDc0ZmRiOTY3LCAweDBmZTMzYjg0LCAweDkwMzliODFhLCAweGY0ZTE0ZGYxLAorICAgIDB4NmIzYmNlNmYsIDB4MTAyNTRjOGMsIDB4OGZmZmNmMTIsIDB4ZTYxODQ5NGEsIDB4NzljMmNhZDQsCisgICAgMHgwMmRjNDgzNywgMHg5ZDA2Y2JhOSwgMHhkMTEzNDQ4NywgMHg0ZWM5YzcxOSwgMHgzNWQ3NDVmYSwKKyAgICAweGFhMGRjNjY0LCAweGMzZWE0MDNjLCAweDVjMzBjM2EyLCAweDI3MmU0MTQxLCAweGI4ZjRjMmRmLAorICAgIDB4YmYwNTVmMWQsIDB4MjBkZmRjODMsIDB4NWJjMTVlNjAsIDB4YzQxYmRkZmUsIDB4YWRmYzViYTYsCisgICAgMHgzMjI2ZDgzOCwgMHg0OTM4NWFkYiwgMHhkNmUyZDk0NSwgMHg5YWY3NTY2YiwgMHgwNTJkZDVmNSwKKyAgICAweDdlMzM1NzE2LCAweGUxZTlkNDg4LCAweDg4MGU1MmQwLCAweDE3ZDRkMTRlLCAweDZjY2E1M2FkLAorICAgIDB4ZjMxMGQwMzMsIDB4NjMyOTY4MjksIDB4ZmNmM2ViYjcsIDB4ODdlZDY5NTQsIDB4MTgzN2VhY2EsCisgICAgMHg3MWQwNmM5MiwgMHhlZTBhZWYwYywgMHg5NTE0NmRlZiwgMHgwYWNlZWU3MSwgMHg0NmRiNjE1ZiwKKyAgICAweGQ5MDFlMmMxLCAweGEyMWY2MDIyLCAweDNkYzVlM2JjLCAweDU0MjI2NWU0LCAweGNiZjhlNjdhLAorICAgIDB4YjBlNjY0OTksIDB4MmYzY2U3MDcsIDB4MjhjZDdhYzUsIDB4YjcxN2Y5NWIsIDB4Y2MwOTdiYjgsCisgICAgMHg1M2QzZjgyNiwgMHgzYTM0N2U3ZSwgMHhhNWVlZmRlMCwgMHhkZWYwN2YwMywgMHg0MTJhZmM5ZCwKKyAgICAweDBkM2Y3M2IzLCAweDkyZTVmMDJkLCAweGU5ZmI3MmNlLCAweDc2MjFmMTUwLCAweDFmYzY3NzA4LAorICAgIDB4ODAxY2Y0OTYsIDB4ZmIwMjc2NzUsIDB4NjRkOGY1ZWIsIDB4MzJiMzlkYTMsIDB4YWQ2OTFlM2QsCisgICAgMHhkNjc3OWNkZSwgMHg0OWFkMWY0MCwgMHgyMDRhOTkxOCwgMHhiZjkwMWE4NiwgMHhjNDhlOTg2NSwKKyAgICAweDViNTQxYmZiLCAweDE3NDE5NGQ1LCAweDg4OWIxNzRiLCAweGYzODU5NWE4LCAweDZjNWYxNjM2LAorICAgIDB4MDViODkwNmUsIDB4OWE2MjEzZjAsIDB4ZTE3YzkxMTMsIDB4N2VhNjEyOGQsIDB4Nzk1NzhmNGYsCisgICAgMHhlNjhkMGNkMSwgMHg5ZDkzOGUzMiwgMHgwMjQ5MGRhYywgMHg2YmFlOGJmNCwgMHhmNDc0MDg2YSwKKyAgICAweDhmNmE4YTg5LCAweDEwYjAwOTE3LCAweDVjYTU4NjM5LCAweGMzN2YwNWE3LCAweGI4NjE4NzQ0LAorICAgIDB4MjdiYjA0ZGEsIDB4NGU1YzgyODIsIDB4ZDE4NjAxMWMsIDB4YWE5ODgzZmYsIDB4MzU0MjAwNjEsCisgICAgMHhhNTdiYjg3YiwgMHgzYWExM2JlNSwgMHg0MWJmYjkwNiwgMHhkZTY1M2E5OCwgMHhiNzgyYmNjMCwKKyAgICAweDI4NTgzZjVlLCAweDUzNDZiZGJkLCAweGNjOWMzZTIzLCAweDgwODliMTBkLCAweDFmNTMzMjkzLAorICAgIDB4NjQ0ZGIwNzAsIDB4ZmI5NzMzZWUsIDB4OTI3MGI1YjYsIDB4MGRhYTM2MjgsIDB4NzZiNGI0Y2IsCisgICAgMHhlOTZlMzc1NSwgMHhlZTlmYWE5NywgMHg3MTQ1MjkwOSwgMHgwYTViYWJlYSwgMHg5NTgxMjg3NCwKKyAgICAweGZjNjZhZTJjLCAweDYzYmMyZGIyLCAweDE4YTJhZjUxLCAweDg3NzgyY2NmLCAweGNiNmRhM2UxLAorICAgIDB4NTRiNzIwN2YsIDB4MmZhOWEyOWMsIDB4YjA3MzIxMDIsIDB4ZDk5NGE3NWEsIDB4NDY0ZTI0YzQsCisgICAgMHgzZDUwYTYyNywgMHhhMjhhMjViOSwgMHhjNjUyZDA1MiwgMHg1OTg4NTNjYywgMHgyMjk2ZDEyZiwKKyAgICAweGJkNGM1MmIxLCAweGQ0YWJkNGU5LCAweDRiNzE1Nzc3LCAweDMwNmZkNTk0LCAweGFmYjU1NjBhLAorICAgIDB4ZTNhMGQ5MjQsIDB4N2M3YTVhYmEsIDB4MDc2NGQ4NTksIDB4OThiZTViYzcsIDB4ZjE1OWRkOWYsCisgICAgMHg2ZTgzNWUwMSwgMHgxNTlkZGNlMiwgMHg4YTQ3NWY3YywgMHg4ZGI2YzJiZSwgMHgxMjZjNDEyMCwKKyAgICAweDY5NzJjM2MzLCAweGY2YTg0MDVkLCAweDlmNGZjNjA1LCAweDAwOTU0NTliLCAweDdiOGJjNzc4LAorICAgIDB4ZTQ1MTQ0ZTYsIDB4YTg0NGNiYzgsIDB4Mzc5ZTQ4NTYsIDB4NGM4MGNhYjUsIDB4ZDM1YTQ5MmIsCisgICAgMHhiYWJkY2Y3MywgMHgyNTY3NGNlZCwgMHg1ZTc5Y2UwZSwgMHhjMWEzNGQ5MCwgMHg1MTlhZjU4YSwKKyAgICAweGNlNDA3NjE0LCAweGI1NWVmNGY3LCAweDJhODQ3NzY5LCAweDQzNjNmMTMxLCAweGRjYjk3MmFmLAorICAgIDB4YTdhN2YwNGMsIDB4Mzg3ZDczZDIsIDB4NzQ2OGZjZmMsIDB4ZWJiMjdmNjIsIDB4OTBhY2ZkODEsCisgICAgMHgwZjc2N2UxZiwgMHg2NjkxZjg0NywgMHhmOTRiN2JkOSwgMHg4MjU1ZjkzYSwgMHgxZDhmN2FhNCwKKyAgICAweDFhN2VlNzY2LCAweDg1YTQ2NGY4LCAweGZlYmFlNjFiLCAweDYxNjA2NTg1LCAweDA4ODdlM2RkLAorICAgIDB4OTc1ZDYwNDMsIDB4ZWM0M2UyYTAsIDB4NzM5OTYxM2UsIDB4M2Y4Y2VlMTAsIDB4YTA1NjZkOGUsCisgICAgMHhkYjQ4ZWY2ZCwgMHg0NDkyNmNmMywgMHgyZDc1ZWFhYiwgMHhiMmFmNjkzNSwgMHhjOWIxZWJkNiwKKyAgICAweDU2NmI2ODQ4fX07CisKK2xvY2FsIGNvbnN0IHpfd29yZF90IEZBUiBjcmNfYnJhaWRfYmlnX3RhYmxlW11bMjU2XSA9IHsKKyAgIHsweDAwMDAwMDAwLCAweDllODNkYTlmLCAweDdkMDFjNGU0LCAweGUzODIxZTdiLCAweGJiMDRmOTEyLAorICAgIDB4MjU4NzIzOGQsIDB4YzYwNTNkZjYsIDB4NTg4NmU3NjksIDB4NzYwOWYyMjUsIDB4ZTg4YTI4YmEsCisgICAgMHgwYjA4MzZjMSwgMHg5NThiZWM1ZSwgMHhjZDBkMGIzNywgMHg1MzhlZDFhOCwgMHhiMDBjY2ZkMywKKyAgICAweDJlOGYxNTRjLCAweGVjMTJlNDRiLCAweDcyOTEzZWQ0LCAweDkxMTMyMGFmLCAweDBmOTBmYTMwLAorICAgIDB4NTcxNjFkNTksIDB4Yzk5NWM3YzYsIDB4MmExN2Q5YmQsIDB4YjQ5NDAzMjIsIDB4OWExYjE2NmUsCisgICAgMHgwNDk4Y2NmMSwgMHhlNzFhZDI4YSwgMHg3OTk5MDgxNSwgMHgyMTFmZWY3YywgMHhiZjljMzVlMywKKyAgICAweDVjMWUyYjk4LCAweGMyOWRmMTA3LCAweGQ4MjVjODk3LCAweDQ2YTYxMjA4LCAweGE1MjQwYzczLAorICAgIDB4M2JhN2Q2ZWMsIDB4NjMyMTMxODUsIDB4ZmRhMmViMWEsIDB4MWUyMGY1NjEsIDB4ODBhMzJmZmUsCisgICAgMHhhZTJjM2FiMiwgMHgzMGFmZTAyZCwgMHhkMzJkZmU1NiwgMHg0ZGFlMjRjOSwgMHgxNTI4YzNhMCwKKyAgICAweDhiYWIxOTNmLCAweDY4MjkwNzQ0LCAweGY2YWFkZGRiLCAweDM0MzcyY2RjLCAweGFhYjRmNjQzLAorICAgIDB4NDkzNmU4MzgsIDB4ZDdiNTMyYTcsIDB4OGYzM2Q1Y2UsIDB4MTFiMDBmNTEsIDB4ZjIzMjExMmEsCisgICAgMHg2Y2IxY2JiNSwgMHg0MjNlZGVmOSwgMHhkY2JkMDQ2NiwgMHgzZjNmMWExZCwgMHhhMWJjYzA4MiwKKyAgICAweGY5M2EyN2ViLCAweDY3YjlmZDc0LCAweDg0M2JlMzBmLCAweDFhYjgzOTkwLCAweGYxNGRlMWY0LAorICAgIDB4NmZjZTNiNmIsIDB4OGM0YzI1MTAsIDB4MTJjZmZmOGYsIDB4NGE0OTE4ZTYsIDB4ZDRjYWMyNzksCisgICAgMHgzNzQ4ZGMwMiwgMHhhOWNiMDY5ZCwgMHg4NzQ0MTNkMSwgMHgxOWM3Yzk0ZSwgMHhmYTQ1ZDczNSwKKyAgICAweDY0YzYwZGFhLCAweDNjNDBlYWMzLCAweGEyYzMzMDVjLCAweDQxNDEyZTI3LCAweGRmYzJmNGI4LAorICAgIDB4MWQ1ZjA1YmYsIDB4ODNkY2RmMjAsIDB4NjA1ZWMxNWIsIDB4ZmVkZDFiYzQsIDB4YTY1YmZjYWQsCisgICAgMHgzOGQ4MjYzMiwgMHhkYjVhMzg0OSwgMHg0NWQ5ZTJkNiwgMHg2YjU2Zjc5YSwgMHhmNWQ1MmQwNSwKKyAgICAweDE2NTczMzdlLCAweDg4ZDRlOWUxLCAweGQwNTIwZTg4LCAweDRlZDFkNDE3LCAweGFkNTNjYTZjLAorICAgIDB4MzNkMDEwZjMsIDB4Mjk2ODI5NjMsIDB4YjdlYmYzZmMsIDB4NTQ2OWVkODcsIDB4Y2FlYTM3MTgsCisgICAgMHg5MjZjZDA3MSwgMHgwY2VmMGFlZSwgMHhlZjZkMTQ5NSwgMHg3MWVlY2UwYSwgMHg1ZjYxZGI0NiwKKyAgICAweGMxZTIwMWQ5LCAweDIyNjAxZmEyLCAweGJjZTNjNTNkLCAweGU0NjUyMjU0LCAweDdhZTZmOGNiLAorICAgIDB4OTk2NGU2YjAsIDB4MDdlNzNjMmYsIDB4YzU3YWNkMjgsIDB4NWJmOTE3YjcsIDB4Yjg3YjA5Y2MsCisgICAgMHgyNmY4ZDM1MywgMHg3ZTdlMzQzYSwgMHhlMGZkZWVhNSwgMHgwMzdmZjBkZSwgMHg5ZGZjMmE0MSwKKyAgICAweGIzNzMzZjBkLCAweDJkZjBlNTkyLCAweGNlNzJmYmU5LCAweDUwZjEyMTc2LCAweDA4NzdjNjFmLAorICAgIDB4OTZmNDFjODAsIDB4NzU3NjAyZmIsIDB4ZWJmNWQ4NjQsIDB4YTM5ZGIzMzIsIDB4M2QxZTY5YWQsCisgICAgMHhkZTljNzdkNiwgMHg0MDFmYWQ0OSwgMHgxODk5NGEyMCwgMHg4NjFhOTBiZiwgMHg2NTk4OGVjNCwKKyAgICAweGZiMWI1NDViLCAweGQ1OTQ0MTE3LCAweDRiMTc5Yjg4LCAweGE4OTU4NWYzLCAweDM2MTY1ZjZjLAorICAgIDB4NmU5MGI4MDUsIDB4ZjAxMzYyOWEsIDB4MTM5MTdjZTEsIDB4OGQxMmE2N2UsIDB4NGY4ZjU3NzksCisgICAgMHhkMTBjOGRlNiwgMHgzMjhlOTM5ZCwgMHhhYzBkNDkwMiwgMHhmNDhiYWU2YiwgMHg2YTA4NzRmNCwKKyAgICAweDg5OGE2YThmLCAweDE3MDliMDEwLCAweDM5ODZhNTVjLCAweGE3MDU3ZmMzLCAweDQ0ODc2MWI4LAorICAgIDB4ZGEwNGJiMjcsIDB4ODI4MjVjNGUsIDB4MWMwMTg2ZDEsIDB4ZmY4Mzk4YWEsIDB4NjEwMDQyMzUsCisgICAgMHg3YmI4N2JhNSwgMHhlNTNiYTEzYSwgMHgwNmI5YmY0MSwgMHg5ODNhNjVkZSwgMHhjMGJjODJiNywKKyAgICAweDVlM2Y1ODI4LCAweGJkYmQ0NjUzLCAweDIzM2U5Y2NjLCAweDBkYjE4OTgwLCAweDkzMzI1MzFmLAorICAgIDB4NzBiMDRkNjQsIDB4ZWUzMzk3ZmIsIDB4YjZiNTcwOTIsIDB4MjgzNmFhMGQsIDB4Y2JiNGI0NzYsCisgICAgMHg1NTM3NmVlOSwgMHg5N2FhOWZlZSwgMHgwOTI5NDU3MSwgMHhlYWFiNWIwYSwgMHg3NDI4ODE5NSwKKyAgICAweDJjYWU2NmZjLCAweGIyMmRiYzYzLCAweDUxYWZhMjE4LCAweGNmMmM3ODg3LCAweGUxYTM2ZGNiLAorICAgIDB4N2YyMGI3NTQsIDB4OWNhMmE5MmYsIDB4MDIyMTczYjAsIDB4NWFhNzk0ZDksIDB4YzQyNDRlNDYsCisgICAgMHgyN2E2NTAzZCwgMHhiOTI1OGFhMiwgMHg1MmQwNTJjNiwgMHhjYzUzODg1OSwgMHgyZmQxOTYyMiwKKyAgICAweGIxNTI0Y2JkLCAweGU5ZDRhYmQ0LCAweDc3NTc3MTRiLCAweDk0ZDU2ZjMwLCAweDBhNTZiNWFmLAorICAgIDB4MjRkOWEwZTMsIDB4YmE1YTdhN2MsIDB4NTlkODY0MDcsIDB4Yzc1YmJlOTgsIDB4OWZkZDU5ZjEsCisgICAgMHgwMTVlODM2ZSwgMHhlMmRjOWQxNSwgMHg3YzVmNDc4YSwgMHhiZWMyYjY4ZCwgMHgyMDQxNmMxMiwKKyAgICAweGMzYzM3MjY5LCAweDVkNDBhOGY2LCAweDA1YzY0ZjlmLCAweDliNDU5NTAwLCAweDc4Yzc4YjdiLAorICAgIDB4ZTY0NDUxZTQsIDB4YzhjYjQ0YTgsIDB4NTY0ODllMzcsIDB4YjVjYTgwNGMsIDB4MmI0OTVhZDMsCisgICAgMHg3M2NmYmRiYSwgMHhlZDRjNjcyNSwgMHgwZWNlNzk1ZSwgMHg5MDRkYTNjMSwgMHg4YWY1OWE1MSwKKyAgICAweDE0NzY0MGNlLCAweGY3ZjQ1ZWI1LCAweDY5Nzc4NDJhLCAweDMxZjE2MzQzLCAweGFmNzJiOWRjLAorICAgIDB4NGNmMGE3YTcsIDB4ZDI3MzdkMzgsIDB4ZmNmYzY4NzQsIDB4NjI3ZmIyZWIsIDB4ODFmZGFjOTAsCisgICAgMHgxZjdlNzYwZiwgMHg0N2Y4OTE2NiwgMHhkOTdiNGJmOSwgMHgzYWY5NTU4MiwgMHhhNDdhOGYxZCwKKyAgICAweDY2ZTc3ZTFhLCAweGY4NjRhNDg1LCAweDFiZTZiYWZlLCAweDg1NjU2MDYxLCAweGRkZTM4NzA4LAorICAgIDB4NDM2MDVkOTcsIDB4YTBlMjQzZWMsIDB4M2U2MTk5NzMsIDB4MTBlZThjM2YsIDB4OGU2ZDU2YTAsCisgICAgMHg2ZGVmNDhkYiwgMHhmMzZjOTI0NCwgMHhhYmVhNzUyZCwgMHgzNTY5YWZiMiwgMHhkNmViYjFjOSwKKyAgICAweDQ4Njg2YjU2fSwKKyAgIHsweDAwMDAwMDAwLCAweGMwNjQyODE3LCAweDgwYzk1MDJlLCAweDQwYWQ3ODM5LCAweDAwOTNhMTVjLAorICAgIDB4YzBmNzg5NGIsIDB4ODA1YWYxNzIsIDB4NDAzZWQ5NjUsIDB4MDAyNjQzYjksIDB4YzA0MjZiYWUsCisgICAgMHg4MGVmMTM5NywgMHg0MDhiM2I4MCwgMHgwMGI1ZTJlNSwgMHhjMGQxY2FmMiwgMHg4MDdjYjJjYiwKKyAgICAweDQwMTg5YWRjLCAweDQxNGFmN2E5LCAweDgxMmVkZmJlLCAweGMxODNhNzg3LCAweDAxZTc4ZjkwLAorICAgIDB4NDFkOTU2ZjUsIDB4ODFiZDdlZTIsIDB4YzExMDA2ZGIsIDB4MDE3NDJlY2MsIDB4NDE2Y2I0MTAsCisgICAgMHg4MTA4OWMwNywgMHhjMWE1ZTQzZSwgMHgwMWMxY2MyOSwgMHg0MWZmMTU0YywgMHg4MTliM2Q1YiwKKyAgICAweGMxMzY0NTYyLCAweDAxNTI2ZDc1LCAweGMzOTI5Zjg4LCAweDAzZjZiNzlmLCAweDQzNWJjZmE2LAorICAgIDB4ODMzZmU3YjEsIDB4YzMwMTNlZDQsIDB4MDM2NTE2YzMsIDB4NDNjODZlZmEsIDB4ODNhYzQ2ZWQsCisgICAgMHhjM2I0ZGMzMSwgMHgwM2QwZjQyNiwgMHg0MzdkOGMxZiwgMHg4MzE5YTQwOCwgMHhjMzI3N2Q2ZCwKKyAgICAweDAzNDM1NTdhLCAweDQzZWUyZDQzLCAweDgzOGEwNTU0LCAweDgyZDg2ODIxLCAweDQyYmM0MDM2LAorICAgIDB4MDIxMTM4MGYsIDB4YzI3NTEwMTgsIDB4ODI0YmM5N2QsIDB4NDIyZmUxNmEsIDB4MDI4Mjk5NTMsCisgICAgMHhjMmU2YjE0NCwgMHg4MmZlMmI5OCwgMHg0MjlhMDM4ZiwgMHgwMjM3N2JiNiwgMHhjMjUzNTNhMSwKKyAgICAweDgyNmQ4YWM0LCAweDQyMDlhMmQzLCAweDAyYTRkYWVhLCAweGMyYzBmMmZkLCAweGM3MjM0ZWNhLAorICAgIDB4MDc0NzY2ZGQsIDB4NDdlYTFlZTQsIDB4ODc4ZTM2ZjMsIDB4YzdiMGVmOTYsIDB4MDdkNGM3ODEsCisgICAgMHg0Nzc5YmZiOCwgMHg4NzFkOTdhZiwgMHhjNzA1MGQ3MywgMHgwNzYxMjU2NCwgMHg0N2NjNWQ1ZCwKKyAgICAweDg3YTg3NTRhLCAweGM3OTZhYzJmLCAweDA3ZjI4NDM4LCAweDQ3NWZmYzAxLCAweDg3M2JkNDE2LAorICAgIDB4ODY2OWI5NjMsIDB4NDYwZDkxNzQsIDB4MDZhMGU5NGQsIDB4YzZjNGMxNWEsIDB4ODZmYTE4M2YsCisgICAgMHg0NjllMzAyOCwgMHgwNjMzNDgxMSwgMHhjNjU3NjAwNiwgMHg4NjRmZmFkYSwgMHg0NjJiZDJjZCwKKyAgICAweDA2ODZhYWY0LCAweGM2ZTI4MmUzLCAweDg2ZGM1Yjg2LCAweDQ2Yjg3MzkxLCAweDA2MTUwYmE4LAorICAgIDB4YzY3MTIzYmYsIDB4MDRiMWQxNDIsIDB4YzRkNWY5NTUsIDB4ODQ3ODgxNmMsIDB4NDQxY2E5N2IsCisgICAgMHgwNDIyNzAxZSwgMHhjNDQ2NTgwOSwgMHg4NGViMjAzMCwgMHg0NDhmMDgyNywgMHgwNDk3OTJmYiwKKyAgICAweGM0ZjNiYWVjLCAweDg0NWVjMmQ1LCAweDQ0M2FlYWMyLCAweDA0MDQzM2E3LCAweGM0NjAxYmIwLAorICAgIDB4ODRjZDYzODksIDB4NDRhOTRiOWUsIDB4NDVmYjI2ZWIsIDB4ODU5ZjBlZmMsIDB4YzUzMjc2YzUsCisgICAgMHgwNTU2NWVkMiwgMHg0NTY4ODdiNywgMHg4NTBjYWZhMCwgMHhjNWExZDc5OSwgMHgwNWM1ZmY4ZSwKKyAgICAweDQ1ZGQ2NTUyLCAweDg1Yjk0ZDQ1LCAweGM1MTQzNTdjLCAweDA1NzAxZDZiLCAweDQ1NGVjNDBlLAorICAgIDB4ODUyYWVjMTksIDB4YzU4Nzk0MjAsIDB4MDVlM2JjMzcsIDB4Y2Y0MWVkNGYsIDB4MGYyNWM1NTgsCisgICAgMHg0Zjg4YmQ2MSwgMHg4ZmVjOTU3NiwgMHhjZmQyNGMxMywgMHgwZmI2NjQwNCwgMHg0ZjFiMWMzZCwKKyAgICAweDhmN2YzNDJhLCAweGNmNjdhZWY2LCAweDBmMDM4NmUxLCAweDRmYWVmZWQ4LCAweDhmY2FkNmNmLAorICAgIDB4Y2ZmNDBmYWEsIDB4MGY5MDI3YmQsIDB4NGYzZDVmODQsIDB4OGY1OTc3OTMsIDB4OGUwYjFhZTYsCisgICAgMHg0ZTZmMzJmMSwgMHgwZWMyNGFjOCwgMHhjZWE2NjJkZiwgMHg4ZTk4YmJiYSwgMHg0ZWZjOTNhZCwKKyAgICAweDBlNTFlYjk0LCAweGNlMzVjMzgzLCAweDhlMmQ1OTVmLCAweDRlNDk3MTQ4LCAweDBlZTQwOTcxLAorICAgIDB4Y2U4MDIxNjYsIDB4OGViZWY4MDMsIDB4NGVkYWQwMTQsIDB4MGU3N2E4MmQsIDB4Y2UxMzgwM2EsCisgICAgMHgwY2QzNzJjNywgMHhjY2I3NWFkMCwgMHg4YzFhMjJlOSwgMHg0YzdlMGFmZSwgMHgwYzQwZDM5YiwKKyAgICAweGNjMjRmYjhjLCAweDhjODk4M2I1LCAweDRjZWRhYmEyLCAweDBjZjUzMTdlLCAweGNjOTExOTY5LAorICAgIDB4OGMzYzYxNTAsIDB4NGM1ODQ5NDcsIDB4MGM2NjkwMjIsIDB4Y2MwMmI4MzUsIDB4OGNhZmMwMGMsCisgICAgMHg0Y2NiZTgxYiwgMHg0ZDk5ODU2ZSwgMHg4ZGZkYWQ3OSwgMHhjZDUwZDU0MCwgMHgwZDM0ZmQ1NywKKyAgICAweDRkMGEyNDMyLCAweDhkNmUwYzI1LCAweGNkYzM3NDFjLCAweDBkYTc1YzBiLCAweDRkYmZjNmQ3LAorICAgIDB4OGRkYmVlYzAsIDB4Y2Q3Njk2ZjksIDB4MGQxMmJlZWUsIDB4NGQyYzY3OGIsIDB4OGQ0ODRmOWMsCisgICAgMHhjZGU1MzdhNSwgMHgwZDgxMWZiMiwgMHgwODYyYTM4NSwgMHhjODA2OGI5MiwgMHg4OGFiZjNhYiwKKyAgICAweDQ4Y2ZkYmJjLCAweDA4ZjEwMmQ5LCAweGM4OTUyYWNlLCAweDg4Mzg1MmY3LCAweDQ4NWM3YWUwLAorICAgIDB4MDg0NGUwM2MsIDB4YzgyMGM4MmIsIDB4ODg4ZGIwMTIsIDB4NDhlOTk4MDUsIDB4MDhkNzQxNjAsCisgICAgMHhjOGIzNjk3NywgMHg4ODFlMTE0ZSwgMHg0ODdhMzk1OSwgMHg0OTI4NTQyYywgMHg4OTRjN2MzYiwKKyAgICAweGM5ZTEwNDAyLCAweDA5ODUyYzE1LCAweDQ5YmJmNTcwLCAweDg5ZGZkZDY3LCAweGM5NzJhNTVlLAorICAgIDB4MDkxNjhkNDksIDB4NDkwZTE3OTUsIDB4ODk2YTNmODIsIDB4YzljNzQ3YmIsIDB4MDlhMzZmYWMsCisgICAgMHg0OTlkYjZjOSwgMHg4OWY5OWVkZSwgMHhjOTU0ZTZlNywgMHgwOTMwY2VmMCwgMHhjYmYwM2MwZCwKKyAgICAweDBiOTQxNDFhLCAweDRiMzk2YzIzLCAweDhiNWQ0NDM0LCAweGNiNjM5ZDUxLCAweDBiMDdiNTQ2LAorICAgIDB4NGJhYWNkN2YsIDB4OGJjZWU1NjgsIDB4Y2JkNjdmYjQsIDB4MGJiMjU3YTMsIDB4NGIxZjJmOWEsCisgICAgMHg4YjdiMDc4ZCwgMHhjYjQ1ZGVlOCwgMHgwYjIxZjZmZiwgMHg0YjhjOGVjNiwgMHg4YmU4YTZkMSwKKyAgICAweDhhYmFjYmE0LCAweDRhZGVlM2IzLCAweDBhNzM5YjhhLCAweGNhMTdiMzlkLCAweDhhMjk2YWY4LAorICAgIDB4NGE0ZDQyZWYsIDB4MGFlMDNhZDYsIDB4Y2E4NDEyYzEsIDB4OGE5Yzg4MWQsIDB4NGFmOGEwMGEsCisgICAgMHgwYTU1ZDgzMywgMHhjYTMxZjAyNCwgMHg4YTBmMjk0MSwgMHg0YTZiMDE1NiwgMHgwYWM2Nzk2ZiwKKyAgICAweGNhYTI1MTc4fSwKKyAgIHsweDAwMDAwMDAwLCAweGQ0ZWE3MzliLCAweGU5ZDM5NmVkLCAweDNkMzllNTc2LCAweDkzYTE1YzAwLAorICAgIDB4NDc0YjJmOWIsIDB4N2E3MmNhZWQsIDB4YWU5OGI5NzYsIDB4MjY0M2I5MDAsIDB4ZjJhOWNhOWIsCisgICAgMHhjZjkwMmZlZCwgMHgxYjdhNWM3NiwgMHhiNWUyZTUwMCwgMHg2MTA4OTY5YiwgMHg1YzMxNzNlZCwKKyAgICAweDg4ZGIwMDc2LCAweDRjODY3MjAxLCAweDk4NmMwMTlhLCAweGE1NTVlNGVjLCAweDcxYmY5Nzc3LAorICAgIDB4ZGYyNzJlMDEsIDB4MGJjZDVkOWEsIDB4MzZmNGI4ZWMsIDB4ZTIxZWNiNzcsIDB4NmFjNWNiMDEsCisgICAgMHhiZTJmYjg5YSwgMHg4MzE2NWRlYywgMHg1N2ZjMmU3NywgMHhmOTY0OTcwMSwgMHgyZDhlZTQ5YSwKKyAgICAweDEwYjcwMWVjLCAweGM0NWQ3Mjc3LCAweDk4MGNlNTAyLCAweDRjZTY5Njk5LCAweDcxZGY3M2VmLAorICAgIDB4YTUzNTAwNzQsIDB4MGJhZGI5MDIsIDB4ZGY0N2NhOTksIDB4ZTI3ZTJmZWYsIDB4MzY5NDVjNzQsCisgICAgMHhiZTRmNWMwMiwgMHg2YWE1MmY5OSwgMHg1NzljY2FlZiwgMHg4Mzc2Yjk3NCwgMHgyZGVlMDAwMiwKKyAgICAweGY5MDQ3Mzk5LCAweGM0M2Q5NmVmLCAweDEwZDdlNTc0LCAweGQ0OGE5NzAzLCAweDAwNjBlNDk4LAorICAgIDB4M2Q1OTAxZWUsIDB4ZTliMzcyNzUsIDB4NDcyYmNiMDMsIDB4OTNjMWI4OTgsIDB4YWVmODVkZWUsCisgICAgMHg3YTEyMmU3NSwgMHhmMmM5MmUwMywgMHgyNjIzNWQ5OCwgMHgxYjFhYjhlZSwgMHhjZmYwY2I3NSwKKyAgICAweDYxNjg3MjAzLCAweGI1ODIwMTk4LCAweDg4YmJlNGVlLCAweDVjNTE5Nzc1LCAweDMwMTljYTA1LAorICAgIDB4ZTRmM2I5OWUsIDB4ZDljYTVjZTgsIDB4MGQyMDJmNzMsIDB4YTNiODk2MDUsIDB4Nzc1MmU1OWUsCisgICAgMHg0YTZiMDBlOCwgMHg5ZTgxNzM3MywgMHgxNjVhNzMwNSwgMHhjMmIwMDA5ZSwgMHhmZjg5ZTVlOCwKKyAgICAweDJiNjM5NjczLCAweDg1ZmIyZjA1LCAweDUxMTE1YzllLCAweDZjMjhiOWU4LCAweGI4YzJjYTczLAorICAgIDB4N2M5ZmI4MDQsIDB4YTg3NWNiOWYsIDB4OTU0YzJlZTksIDB4NDFhNjVkNzIsIDB4ZWYzZWU0MDQsCisgICAgMHgzYmQ0OTc5ZiwgMHgwNmVkNzJlOSwgMHhkMjA3MDE3MiwgMHg1YWRjMDEwNCwgMHg4ZTM2NzI5ZiwKKyAgICAweGIzMGY5N2U5LCAweDY3ZTVlNDcyLCAweGM5N2Q1ZDA0LCAweDFkOTcyZTlmLCAweDIwYWVjYmU5LAorICAgIDB4ZjQ0NGI4NzIsIDB4YTgxNTJmMDcsIDB4N2NmZjVjOWMsIDB4NDFjNmI5ZWEsIDB4OTUyY2NhNzEsCisgICAgMHgzYmI0NzMwNywgMHhlZjVlMDA5YywgMHhkMjY3ZTVlYSwgMHgwNjhkOTY3MSwgMHg4ZTU2OTYwNywKKyAgICAweDVhYmNlNTljLCAweDY3ODUwMGVhLCAweGIzNmY3MzcxLCAweDFkZjdjYTA3LCAweGM5MWRiOTljLAorICAgIDB4ZjQyNDVjZWEsIDB4MjBjZTJmNzEsIDB4ZTQ5MzVkMDYsIDB4MzA3OTJlOWQsIDB4MGQ0MGNiZWIsCisgICAgMHhkOWFhYjg3MCwgMHg3NzMyMDEwNiwgMHhhM2Q4NzI5ZCwgMHg5ZWUxOTdlYiwgMHg0YTBiZTQ3MCwKKyAgICAweGMyZDBlNDA2LCAweDE2M2E5NzlkLCAweDJiMDM3MmViLCAweGZmZTkwMTcwLCAweDUxNzFiODA2LAorICAgIDB4ODU5YmNiOWQsIDB4YjhhMjJlZWIsIDB4NmM0ODVkNzAsIDB4NjAzMjk0MGIsIDB4YjRkOGU3OTAsCisgICAgMHg4OWUxMDJlNiwgMHg1ZDBiNzE3ZCwgMHhmMzkzYzgwYiwgMHgyNzc5YmI5MCwgMHgxYTQwNWVlNiwKKyAgICAweGNlYWEyZDdkLCAweDQ2NzEyZDBiLCAweDkyOWI1ZTkwLCAweGFmYTJiYmU2LCAweDdiNDhjODdkLAorICAgIDB4ZDVkMDcxMGIsIDB4MDEzYTAyOTAsIDB4M2MwM2U3ZTYsIDB4ZThlOTk0N2QsIDB4MmNiNGU2MGEsCisgICAgMHhmODVlOTU5MSwgMHhjNTY3NzBlNywgMHgxMThkMDM3YywgMHhiZjE1YmEwYSwgMHg2YmZmYzk5MSwKKyAgICAweDU2YzYyY2U3LCAweDgyMmM1ZjdjLCAweDBhZjc1ZjBhLCAweGRlMWQyYzkxLCAweGUzMjRjOWU3LAorICAgIDB4MzdjZWJhN2MsIDB4OTk1NjAzMGEsIDB4NGRiYzcwOTEsIDB4NzA4NTk1ZTcsIDB4YTQ2ZmU2N2MsCisgICAgMHhmODNlNzEwOSwgMHgyY2Q0MDI5MiwgMHgxMWVkZTdlNCwgMHhjNTA3OTQ3ZiwgMHg2YjlmMmQwOSwKKyAgICAweGJmNzU1ZTkyLCAweDgyNGNiYmU0LCAweDU2YTZjODdmLCAweGRlN2RjODA5LCAweDBhOTdiYjkyLAorICAgIDB4MzdhZTVlZTQsIDB4ZTM0NDJkN2YsIDB4NGRkYzk0MDksIDB4OTkzNmU3OTIsIDB4YTQwZjAyZTQsCisgICAgMHg3MGU1NzE3ZiwgMHhiNGI4MDMwOCwgMHg2MDUyNzA5MywgMHg1ZDZiOTVlNSwgMHg4OTgxZTY3ZSwKKyAgICAweDI3MTk1ZjA4LCAweGYzZjMyYzkzLCAweGNlY2FjOWU1LCAweDFhMjBiYTdlLCAweDkyZmJiYTA4LAorICAgIDB4NDYxMWM5OTMsIDB4N2IyODJjZTUsIDB4YWZjMjVmN2UsIDB4MDE1YWU2MDgsIDB4ZDViMDk1OTMsCisgICAgMHhlODg5NzBlNSwgMHgzYzYzMDM3ZSwgMHg1MDJiNWUwZSwgMHg4NGMxMmQ5NSwgMHhiOWY4YzhlMywKKyAgICAweDZkMTJiYjc4LCAweGMzOGEwMjBlLCAweDE3NjA3MTk1LCAweDJhNTk5NGUzLCAweGZlYjNlNzc4LAorICAgIDB4NzY2OGU3MGUsIDB4YTI4Mjk0OTUsIDB4OWZiYjcxZTMsIDB4NGI1MTAyNzgsIDB4ZTVjOWJiMGUsCisgICAgMHgzMTIzYzg5NSwgMHgwYzFhMmRlMywgMHhkOGYwNWU3OCwgMHgxY2FkMmMwZiwgMHhjODQ3NWY5NCwKKyAgICAweGY1N2ViYWUyLCAweDIxOTRjOTc5LCAweDhmMGM3MDBmLCAweDViZTYwMzk0LCAweDY2ZGZlNmUyLAorICAgIDB4YjIzNTk1NzksIDB4M2FlZTk1MGYsIDB4ZWUwNGU2OTQsIDB4ZDMzZDAzZTIsIDB4MDdkNzcwNzksCisgICAgMHhhOTRmYzkwZiwgMHg3ZGE1YmE5NCwgMHg0MDljNWZlMiwgMHg5NDc2MmM3OSwgMHhjODI3YmIwYywKKyAgICAweDFjY2RjODk3LCAweDIxZjQyZGUxLCAweGY1MWU1ZTdhLCAweDViODZlNzBjLCAweDhmNmM5NDk3LAorICAgIDB4YjI1NTcxZTEsIDB4NjZiZjAyN2EsIDB4ZWU2NDAyMGMsIDB4M2E4ZTcxOTcsIDB4MDdiNzk0ZTEsCisgICAgMHhkMzVkZTc3YSwgMHg3ZGM1NWUwYywgMHhhOTJmMmQ5NywgMHg5NDE2YzhlMSwgMHg0MGZjYmI3YSwKKyAgICAweDg0YTFjOTBkLCAweDUwNGJiYTk2LCAweDZkNzI1ZmUwLCAweGI5OTgyYzdiLCAweDE3MDA5NTBkLAorICAgIDB4YzNlYWU2OTYsIDB4ZmVkMzAzZTAsIDB4MmEzOTcwN2IsIDB4YTJlMjcwMGQsIDB4NzYwODAzOTYsCisgICAgMHg0YjMxZTZlMCwgMHg5ZmRiOTU3YiwgMHgzMTQzMmMwZCwgMHhlNWE5NWY5NiwgMHhkODkwYmFlMCwKKyAgICAweDBjN2FjOTdifSwKKyAgIHsweDAwMDAwMDAwLCAweDI3NjUyNTgxLCAweDBmY2MzYmQ5LCAweDI4YTkxZTU4LCAweDVmOWUwNjY5LAorICAgIDB4NzhmYjIzZTgsIDB4NTA1MjNkYjAsIDB4NzczNzE4MzEsIDB4YmUzYzBkZDIsIDB4OTk1OTI4NTMsCisgICAgMHhiMWYwMzYwYiwgMHg5Njk1MTM4YSwgMHhlMWEyMGJiYiwgMHhjNmM3MmUzYSwgMHhlZTZlMzA2MiwKKyAgICAweGM5MGIxNWUzLCAweDNkN2Y2YjdmLCAweDFhMWE0ZWZlLCAweDMyYjM1MGE2LCAweDE1ZDY3NTI3LAorICAgIDB4NjJlMTZkMTYsIDB4NDU4NDQ4OTcsIDB4NmQyZDU2Y2YsIDB4NGE0ODczNGUsIDB4ODM0MzY2YWQsCisgICAgMHhhNDI2NDMyYywgMHg4YzhmNWQ3NCwgMHhhYmVhNzhmNSwgMHhkY2RkNjBjNCwgMHhmYmI4NDU0NSwKKyAgICAweGQzMTE1YjFkLCAweGY0NzQ3ZTljLCAweDdhZmVkNmZlLCAweDVkOWJmMzdmLCAweDc1MzJlZDI3LAorICAgIDB4NTI1N2M4YTYsIDB4MjU2MGQwOTcsIDB4MDIwNWY1MTYsIDB4MmFhY2ViNGUsIDB4MGRjOWNlY2YsCisgICAgMHhjNGMyZGIyYywgMHhlM2E3ZmVhZCwgMHhjYjBlZTBmNSwgMHhlYzZiYzU3NCwgMHg5YjVjZGQ0NSwKKyAgICAweGJjMzlmOGM0LCAweDk0OTBlNjljLCAweGIzZjVjMzFkLCAweDQ3ODFiZDgxLCAweDYwZTQ5ODAwLAorICAgIDB4NDg0ZDg2NTgsIDB4NmYyOGEzZDksIDB4MTgxZmJiZTgsIDB4M2Y3YTllNjksIDB4MTdkMzgwMzEsCisgICAgMHgzMGI2YTViMCwgMHhmOWJkYjA1MywgMHhkZWQ4OTVkMiwgMHhmNjcxOGI4YSwgMHhkMTE0YWUwYiwKKyAgICAweGE2MjNiNjNhLCAweDgxNDY5M2JiLCAweGE5ZWY4ZGUzLCAweDhlOGFhODYyLCAweGI1ZmFkYzI2LAorICAgIDB4OTI5ZmY5YTcsIDB4YmEzNmU3ZmYsIDB4OWQ1M2MyN2UsIDB4ZWE2NGRhNGYsIDB4Y2QwMWZmY2UsCisgICAgMHhlNWE4ZTE5NiwgMHhjMmNkYzQxNywgMHgwYmM2ZDFmNCwgMHgyY2EzZjQ3NSwgMHgwNDBhZWEyZCwKKyAgICAweDIzNmZjZmFjLCAweDU0NThkNzlkLCAweDczM2RmMjFjLCAweDViOTRlYzQ0LCAweDdjZjFjOWM1LAorICAgIDB4ODg4NWI3NTksIDB4YWZlMDkyZDgsIDB4ODc0OThjODAsIDB4YTAyY2E5MDEsIDB4ZDcxYmIxMzAsCisgICAgMHhmMDdlOTRiMSwgMHhkOGQ3OGFlOSwgMHhmZmIyYWY2OCwgMHgzNmI5YmE4YiwgMHgxMWRjOWYwYSwKKyAgICAweDM5NzU4MTUyLCAweDFlMTBhNGQzLCAweDY5MjdiY2UyLCAweDRlNDI5OTYzLCAweDY2ZWI4NzNiLAorICAgIDB4NDE4ZWEyYmEsIDB4Y2YwNDBhZDgsIDB4ZTg2MTJmNTksIDB4YzBjODMxMDEsIDB4ZTdhZDE0ODAsCisgICAgMHg5MDlhMGNiMSwgMHhiN2ZmMjkzMCwgMHg5ZjU2Mzc2OCwgMHhiODMzMTJlOSwgMHg3MTM4MDcwYSwKKyAgICAweDU2NWQyMjhiLCAweDdlZjQzY2QzLCAweDU5OTExOTUyLCAweDJlYTYwMTYzLCAweDA5YzMyNGUyLAorICAgIDB4MjE2YTNhYmEsIDB4MDYwZjFmM2IsIDB4ZjI3YjYxYTcsIDB4ZDUxZTQ0MjYsIDB4ZmRiNzVhN2UsCisgICAgMHhkYWQyN2ZmZiwgMHhhZGU1NjdjZSwgMHg4YTgwNDI0ZiwgMHhhMjI5NWMxNywgMHg4NTRjNzk5NiwKKyAgICAweDRjNDc2Yzc1LCAweDZiMjI0OWY0LCAweDQzOGI1N2FjLCAweDY0ZWU3MjJkLCAweDEzZDk2YTFjLAorICAgIDB4MzRiYzRmOWQsIDB4MWMxNTUxYzUsIDB4M2I3MDc0NDQsIDB4NmFmNWI5NGQsIDB4NGQ5MDljY2MsCisgICAgMHg2NTM5ODI5NCwgMHg0MjVjYTcxNSwgMHgzNTZiYmYyNCwgMHgxMjBlOWFhNSwgMHgzYWE3ODRmZCwKKyAgICAweDFkYzJhMTdjLCAweGQ0YzliNDlmLCAweGYzYWM5MTFlLCAweGRiMDU4ZjQ2LCAweGZjNjBhYWM3LAorICAgIDB4OGI1N2IyZjYsIDB4YWMzMjk3NzcsIDB4ODQ5Yjg5MmYsIDB4YTNmZWFjYWUsIDB4NTc4YWQyMzIsCisgICAgMHg3MGVmZjdiMywgMHg1ODQ2ZTllYiwgMHg3ZjIzY2M2YSwgMHgwODE0ZDQ1YiwgMHgyZjcxZjFkYSwKKyAgICAweDA3ZDhlZjgyLCAweDIwYmRjYTAzLCAweGU5YjZkZmUwLCAweGNlZDNmYTYxLCAweGU2N2FlNDM5LAorICAgIDB4YzExZmMxYjgsIDB4YjYyOGQ5ODksIDB4OTE0ZGZjMDgsIDB4YjllNGUyNTAsIDB4OWU4MWM3ZDEsCisgICAgMHgxMDBiNmZiMywgMHgzNzZlNGEzMiwgMHgxZmM3NTQ2YSwgMHgzOGEyNzFlYiwgMHg0Zjk1NjlkYSwKKyAgICAweDY4ZjA0YzViLCAweDQwNTk1MjAzLCAweDY3M2M3NzgyLCAweGFlMzc2MjYxLCAweDg5NTI0N2UwLAorICAgIDB4YTFmYjU5YjgsIDB4ODY5ZTdjMzksIDB4ZjFhOTY0MDgsIDB4ZDZjYzQxODksIDB4ZmU2NTVmZDEsCisgICAgMHhkOTAwN2E1MCwgMHgyZDc0MDRjYywgMHgwYTExMjE0ZCwgMHgyMmI4M2YxNSwgMHgwNWRkMWE5NCwKKyAgICAweDcyZWEwMmE1LCAweDU1OGYyNzI0LCAweDdkMjYzOTdjLCAweDVhNDMxY2ZkLCAweDkzNDgwOTFlLAorICAgIDB4YjQyZDJjOWYsIDB4OWM4NDMyYzcsIDB4YmJlMTE3NDYsIDB4Y2NkNjBmNzcsIDB4ZWJiMzJhZjYsCisgICAgMHhjMzFhMzRhZSwgMHhlNDdmMTEyZiwgMHhkZjBmNjU2YiwgMHhmODZhNDBlYSwgMHhkMGMzNWViMiwKKyAgICAweGY3YTY3YjMzLCAweDgwOTE2MzAyLCAweGE3ZjQ0NjgzLCAweDhmNWQ1OGRiLCAweGE4Mzg3ZDVhLAorICAgIDB4NjEzMzY4YjksIDB4NDY1NjRkMzgsIDB4NmVmZjUzNjAsIDB4NDk5YTc2ZTEsIDB4M2VhZDZlZDAsCisgICAgMHgxOWM4NGI1MSwgMHgzMTYxNTUwOSwgMHgxNjA0NzA4OCwgMHhlMjcwMGUxNCwgMHhjNTE1MmI5NSwKKyAgICAweGVkYmMzNWNkLCAweGNhZDkxMDRjLCAweGJkZWUwODdkLCAweDlhOGIyZGZjLCAweGIyMjIzM2E0LAorICAgIDB4OTU0NzE2MjUsIDB4NWM0YzAzYzYsIDB4N2IyOTI2NDcsIDB4NTM4MDM4MWYsIDB4NzRlNTFkOWUsCisgICAgMHgwM2QyMDVhZiwgMHgyNGI3MjAyZSwgMHgwYzFlM2U3NiwgMHgyYjdiMWJmNywgMHhhNWYxYjM5NSwKKyAgICAweDgyOTQ5NjE0LCAweGFhM2Q4ODRjLCAweDhkNThhZGNkLCAweGZhNmZiNWZjLCAweGRkMGE5MDdkLAorICAgIDB4ZjVhMzhlMjUsIDB4ZDJjNmFiYTQsIDB4MWJjZGJlNDcsIDB4M2NhODliYzYsIDB4MTQwMTg1OWUsCisgICAgMHgzMzY0YTAxZiwgMHg0NDUzYjgyZSwgMHg2MzM2OWRhZiwgMHg0YjlmODNmNywgMHg2Y2ZhYTY3NiwKKyAgICAweDk4OGVkOGVhLCAweGJmZWJmZDZiLCAweDk3NDJlMzMzLCAweGIwMjdjNmIyLCAweGM3MTBkZTgzLAorICAgIDB4ZTA3NWZiMDIsIDB4YzhkY2U1NWEsIDB4ZWZiOWMwZGIsIDB4MjZiMmQ1MzgsIDB4MDFkN2YwYjksCisgICAgMHgyOTdlZWVlMSwgMHgwZTFiY2I2MCwgMHg3OTJjZDM1MSwgMHg1ZTQ5ZjZkMCwgMHg3NmUwZTg4OCwKKyAgICAweDUxODVjZDA5fX07CisKKyNlbmRpZgorCisjZW5kaWYKKworI2VuZGlmCisKK2xvY2FsIGNvbnN0IHpfY3JjX3QgRkFSIHgybl90YWJsZVtdID0geworICAgIDB4NDAwMDAwMDAsIDB4MjAwMDAwMDAsIDB4MDgwMDAwMDAsIDB4MDA4MDAwMDAsIDB4MDAwMDgwMDAsCisgICAgMHhlZGI4ODMyMCwgMHhiMWU2YjA5MiwgMHhhMDZhMjUxNywgMHhlZDYyN2RhZSwgMHg4OGQxNDQ2NywKKyAgICAweGQ3YmJmZTZhLCAweGVjNDQ3ZjExLCAweDhlN2VhMTcwLCAweDY0Mjc4MDBlLCAweDRkNDdiYWUwLAorICAgIDB4MDlmZTU0OGYsIDB4ODM4NTJkMGYsIDB4MzAzNjJmMWEsIDB4N2I1YTljYzMsIDB4MzFmZWMxNjksCisgICAgMHg5ZmVjMDIyYSwgMHg2YzhkZWRjNCwgMHgxNWQ2ODc0ZCwgMHg1ZmRlN2E0ZSwgMHhiYWQ5MGUzNywKKyAgICAweDJlNGU1ZWVmLCAweDRlYWJhMjE0LCAweGE4YTQ3MmMwLCAweDQyOWE5NjllLCAweDE0OGQzMDJhLAorICAgIDB4YzQwYmE2ZDAsIDB4YzRlMjJjM2N9OwpkaWZmIC0tZ2l0IGEvc3JjL2d6aXAvZnRnemlwLmMgYi9zcmMvZ3ppcC9mdGd6aXAuYwppbmRleCA4Zjk4YTdkLi40OGRhNmZmIDEwMDY0NAotLS0gYS9zcmMvZ3ppcC9mdGd6aXAuYworKysgYi9zcmMvZ3ppcC9mdGd6aXAuYwpAQCAtOCw3ICs4LDcgQEAKICAqIHBhcnNlIGNvbXByZXNzZWQgUENGIGZvbnRzLCBhcyBmb3VuZCB3aXRoIG1hbnkgWDExIHNlcnZlcgogICogZGlzdHJpYnV0aW9ucy4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC02OSwxMCArNjksMTUgQEAKICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgLyogc28gdGhhdCBjb25maWd1cmF0aW9uIHdpdGggYEZUX0NPTkZJR19PUFRJT05fU1lTVEVNX1pMSUInIG1pZ2h0ICAgKi8KICAgLyogaW5jbHVkZSB0aGUgd3JvbmcgYHpjb25mLmgnIGZpbGUsIGxlYWRpbmcgdG8gZXJyb3JzLiAgICAgICAgICAgICAgKi8KLSNpbmNsdWRlICJ6bGliLmgiCiAKLSN1bmRlZiAgU0xPVwotI2RlZmluZSBTTE9XICAxICAvKiB3ZSBjYW4ndCB1c2UgYXNtLW9wdGltaXplZCBzb3VyY2VzIGhlcmUhICovCisjaWYgZGVmaW5lZCggX19HTlVDX18gKSB8fCAgZGVmaW5lZCggX19jbGFuZ19fICkKKyNkZWZpbmUgWkVYUE9SVAorI2RlZmluZSBaRVhURVJOICAgICAgc3RhdGljCisjZW5kaWYKKworI2RlZmluZSBIQVZFX01FTUNQWSAgMQorI2RlZmluZSBaX1NPTE8gICAgICAgMQorI2RlZmluZSBaX0ZSRUVUWVBFICAgMQogCiAjaWYgZGVmaW5lZCggX01TQ19WRVIgKSAgICAgIC8qIFZpc3VhbCBDKysgKGFuZCBJbnRlbCBDKyspICAgKi8KICAgLyogV2UgZGlzYWJsZSB0aGUgd2FybmluZyBgY29udmVyc2lvbiBmcm9tIFhYWCB0byBZWVksICAgICAqLwpAQCAtODMsMjQgKzg4LDI1IEBACiAjcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0MjQ0ICkKICNlbmRpZiAvKiBfTVNDX1ZFUiAqLwogCi0gIC8qIFVyZ2guICBgaW5mbGF0ZV9tYXNrJyBtdXN0IG5vdCBiZSBkZWNsYXJlZCB0d2ljZSAtLSBDKysgZG9lc24ndCBsaWtlCi0gICAgIHRoaXMuICBXZSB0ZW1wb3JhcmlseSBkaXNhYmxlIGl0IGFuZCBsb2FkIGFsbCBuZWNlc3NhcnkgaGVhZGVyIGZpbGVzLiAqLwotI2RlZmluZSBOT19JTkZMQVRFX01BU0sKLSNpbmNsdWRlICJ6dXRpbC5oIgotI2luY2x1ZGUgImluZnRyZWVzLmgiCi0jaW5jbHVkZSAiaW5mYmxvY2suaCIKLSNpbmNsdWRlICJpbmZjb2Rlcy5oIgotI2luY2x1ZGUgImluZnV0aWwuaCIKLSN1bmRlZiAgTk9fSU5GTEFURV9NQVNLCisjaWYgZGVmaW5lZCggX19HTlVDX18gKQorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjaWZuZGVmIF9fY3BsdXNwbHVzCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc3RyaWN0LXByb3RvdHlwZXMiCisjZW5kaWYKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdpbXBsaWNpdC1mYWxsdGhyb3VnaCIKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdyZWR1bmRhbnQtZGVjbHMiCisjZW5kaWYKIAotICAvKiBpbmZ1dGlsLmMgbXVzdCBiZSBpbmNsdWRlZCBiZWZvcmUgaW5mY29kZXMuYyAqLwogI2luY2x1ZGUgInp1dGlsLmMiCi0jaW5jbHVkZSAiaW5mdHJlZXMuYyIKLSNpbmNsdWRlICJpbmZ1dGlsLmMiCi0jaW5jbHVkZSAiaW5mY29kZXMuYyIKLSNpbmNsdWRlICJpbmZibG9jay5jIgorI2luY2x1ZGUgImluZmZhc3QuYyIKICNpbmNsdWRlICJpbmZsYXRlLmMiCisjaW5jbHVkZSAiaW5mdHJlZXMuYyIKICNpbmNsdWRlICJhZGxlcjMyLmMiCisjaW5jbHVkZSAiY3JjMzIuYyIKKworI2lmIGRlZmluZWQoIF9fR05VQ19fICkKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKIAogI2lmIGRlZmluZWQoIF9NU0NfVkVSICkKICNwcmFnbWEgd2FybmluZyggcG9wICkKQEAgLTE0NywyNyArMTUzLDYgQEAKICAgICBGVF9NRU1fRlJFRSggYWRkcmVzcyApOwogICB9CiAKLQotI2lmICFkZWZpbmVkKCBGVF9DT05GSUdfT1BUSU9OX1NZU1RFTV9aTElCICkgJiYgIWRlZmluZWQoIFVTRV9aTElCX1pDQUxMT0MgKQotCi0gIGxvY2FsIHZvaWRwZgotICB6Y2FsbG9jICggdm9pZHBmICAgIG9wYXF1ZSwKLSAgICAgICAgICAgIHVuc2lnbmVkICBpdGVtcywKLSAgICAgICAgICAgIHVuc2lnbmVkICBzaXplICkKLSAgewotICAgIHJldHVybiBmdF9nemlwX2FsbG9jKCBvcGFxdWUsIGl0ZW1zLCBzaXplICk7Ci0gIH0KLQotICBsb2NhbCB2b2lkCi0gIHpjZnJlZSggdm9pZHBmICBvcGFxdWUsCi0gICAgICAgICAgdm9pZHBmICBwdHIgKQotICB7Ci0gICAgZnRfZ3ppcF9mcmVlKCBvcGFxdWUsIHB0ciApOwotICB9Ci0KLSNlbmRpZiAvKiAhU1lTVEVNX1pMSUIgJiYgIVVTRV9aTElCX1pDQUxMT0MgKi8KLQotCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCkBAIC03NTEsMTYgKzczNiw3IEBACiAgICAgc3RyZWFtLnpmcmVlICA9IGZ0X2d6aXBfZnJlZTsKICAgICBzdHJlYW0ub3BhcXVlID0gbWVtb3J5OwogCi0gICAgLyogVGhpcyBpcyBhIHRlbXBvcmFyeSBmaXggYW5kIHdpbGwgYmUgcmVtb3ZlZCBvbmNlIHRoZSBpbnRlcm5hbAotICAgICAqIGNvcHkgb2YgemxpYiBpcyB1cGRhdGVkIHRvIHRoZSBuZXdlc3QgdmVyc2lvbi4gVGhlIGB8MzInIGZsYWcKLSAgICAgKiBpcyBvbmx5IHN1cHBvcnRlZCBpbiB0aGUgbmV3IHZlcnNpb25zIG9mIHpsaWIgdG8gZW5hYmxlIGd6aXAKLSAgICAgKiBlbmNvZGVkIGhlYWRlci4KLSAgICAgKi8KLSNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1NZU1RFTV9aTElCCiAgICAgZXJyID0gaW5mbGF0ZUluaXQyKCAmc3RyZWFtLCBNQVhfV0JJVFN8MzIgKTsKLSNlbHNlCi0gICAgZXJyID0gaW5mbGF0ZUluaXQyKCAmc3RyZWFtLCBNQVhfV0JJVFMgKTsKLSNlbmRpZgogCiAgICAgaWYgKCBlcnIgIT0gWl9PSyApCiAgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKQEAgLTc4OCw2ICs3NjQsOSBAQAogICAgIGlmICggZXJyID09IFpfREFUQV9FUlJPUiApCiAgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfVGFibGUgKTsKIAorICAgIGlmICggZXJyID09IFpfTkVFRF9ESUNUICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9UYWJsZSApOworCiAgICAgcmV0dXJuIEZUX0Vycl9PazsKICAgfQogCmRpZmYgLS1naXQgYS9zcmMvZ3ppcC9mdHpjb25mLmggYi9zcmMvZ3ppcC9mdHpjb25mLmgKaW5kZXggM2FiZjBiYS4uYmY5NzdkMyAxMDA2NDQKLS0tIGEvc3JjL2d6aXAvZnR6Y29uZi5oCisrKyBiL3NyYy9nemlwL2Z0emNvbmYuaApAQCAtMSwxMDkgKzEsMjU4IEBACiAvKiB6Y29uZi5oIC0tIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHpsaWIgY29tcHJlc3Npb24gbGlicmFyeQotICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDIgSmVhbi1sb3VwIEdhaWxseS4KKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDE2IEplYW4tbG91cCBHYWlsbHksIE1hcmsgQWRsZXIKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKICAqLwogCiAvKiBAKCMpICRJZCQgKi8KIAotI2lmbmRlZiBfWkNPTkZfSAotI2RlZmluZSBfWkNPTkZfSAorI2lmbmRlZiBaQ09ORl9ICisjZGVmaW5lIFpDT05GX0gKIAogLyoKICAqIElmIHlvdSAqcmVhbGx5KiBuZWVkIGEgdW5pcXVlIHByZWZpeCBmb3IgYWxsIHR5cGVzIGFuZCBsaWJyYXJ5IGZ1bmN0aW9ucywKICAqIGNvbXBpbGUgd2l0aCAtRFpfUFJFRklYLiBUaGUgInN0YW5kYXJkIiB6bGliIHNob3VsZCBiZSBjb21waWxlZCB3aXRob3V0IGl0LgorICogRXZlbiBiZXR0ZXIgdGhhbiBjb21waWxpbmcgd2l0aCAtRFpfUFJFRklYIHdvdWxkIGJlIHRvIHVzZSBjb25maWd1cmUgdG8gc2V0CisgKiB0aGlzIHBlcm1hbmVudGx5IGluIHpjb25mLmggdXNpbmcgIi4vY29uZmlndXJlIC0tenByZWZpeCIuCiAgKi8KLSNpZmRlZiBaX1BSRUZJWAotIyAgZGVmaW5lIGRlZmxhdGVJbml0XyAgICAgICAgIHpfZGVmbGF0ZUluaXRfCi0jICBkZWZpbmUgZGVmbGF0ZSAgICAgICAgICAgICAgel9kZWZsYXRlCi0jICBkZWZpbmUgZGVmbGF0ZUVuZCAgICAgICAgICAgel9kZWZsYXRlRW5kCi0jICBkZWZpbmUgaW5mbGF0ZUluaXRfICAgICAgICAgel9pbmZsYXRlSW5pdF8KLSMgIGRlZmluZSBpbmZsYXRlICAgICAgICAgICAgICB6X2luZmxhdGUKLSMgIGRlZmluZSBpbmZsYXRlRW5kICAgICAgICAgICB6X2luZmxhdGVFbmQKLSMgIGRlZmluZSBkZWZsYXRlSW5pdDJfICAgICAgICB6X2RlZmxhdGVJbml0Ml8KLSMgIGRlZmluZSBkZWZsYXRlU2V0RGljdGlvbmFyeSB6X2RlZmxhdGVTZXREaWN0aW9uYXJ5Ci0jICBkZWZpbmUgZGVmbGF0ZUNvcHkgICAgICAgICAgel9kZWZsYXRlQ29weQotIyAgZGVmaW5lIGRlZmxhdGVSZXNldCAgICAgICAgIHpfZGVmbGF0ZVJlc2V0Ci0jICBkZWZpbmUgZGVmbGF0ZVBhcmFtcyAgICAgICAgel9kZWZsYXRlUGFyYW1zCi0jICBkZWZpbmUgaW5mbGF0ZUluaXQyXyAgICAgICAgel9pbmZsYXRlSW5pdDJfCi0jICBkZWZpbmUgaW5mbGF0ZVNldERpY3Rpb25hcnkgel9pbmZsYXRlU2V0RGljdGlvbmFyeQotIyAgZGVmaW5lIGluZmxhdGVTeW5jICAgICAgICAgIHpfaW5mbGF0ZVN5bmMKLSMgIGRlZmluZSBpbmZsYXRlU3luY1BvaW50ICAgICB6X2luZmxhdGVTeW5jUG9pbnQKLSMgIGRlZmluZSBpbmZsYXRlUmVzZXQgICAgICAgICB6X2luZmxhdGVSZXNldAotIyAgZGVmaW5lIGNvbXByZXNzICAgICAgICAgICAgIHpfY29tcHJlc3MKLSMgIGRlZmluZSBjb21wcmVzczIgICAgICAgICAgICB6X2NvbXByZXNzMgotIyAgZGVmaW5lIHVuY29tcHJlc3MgICAgICAgICAgIHpfdW5jb21wcmVzcwotIyAgZGVmaW5lIGFkbGVyMzIgICAgICAgICAgICAgIHpfYWRsZXIzMgotIyAgZGVmaW5lIGNyYzMyICAgICAgICAgICAgICAgIHpfY3JjMzIKLSMgIGRlZmluZSBnZXRfY3JjX3RhYmxlICAgICAgICB6X2dldF9jcmNfdGFibGUKKyNpZmRlZiBaX1BSRUZJWCAgICAgLyogbWF5IGJlIHNldCB0byAjaWYgMSBieSAuL2NvbmZpZ3VyZSAqLworIyAgZGVmaW5lIFpfUFJFRklYX1NFVAogCi0jICBkZWZpbmUgQnl0ZSAgIHpfQnl0ZQotIyAgZGVmaW5lIHVJbnQgICB6X3VJbnQKLSMgIGRlZmluZSB1TG9uZyAgel91TG9uZwotIyAgZGVmaW5lIEJ5dGVmICB6X0J5dGVmCi0jICBkZWZpbmUgY2hhcmYgIHpfY2hhcmYKLSMgIGRlZmluZSBpbnRmICAgel9pbnRmCi0jICBkZWZpbmUgdUludGYgIHpfdUludGYKLSMgIGRlZmluZSB1TG9uZ2Ygel91TG9uZ2YKLSMgIGRlZmluZSB2b2lkcGYgel92b2lkcGYKLSMgIGRlZmluZSB2b2lkcCAgel92b2lkcAotI2VuZGlmCi0KLSNpZiAoZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19XSU4zMl9fKSkgJiYgIWRlZmluZWQoV0lOMzIpCi0jICBkZWZpbmUgV0lOMzIKLSNlbmRpZgotI2lmIGRlZmluZWQoX19HTlVDX18pIHx8IGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX18zODZfXykgfHwgZGVmaW5lZChpMzg2KQotIyAgaWZuZGVmIF9fMzJCSVRfXwotIyAgICBkZWZpbmUgX18zMkJJVF9fCisvKiBhbGwgbGlua2VkIHN5bWJvbHMgYW5kIGluaXQgbWFjcm9zICovCisjICBkZWZpbmUgX2Rpc3RfY29kZSAgICAgICAgICAgIHpfX2Rpc3RfY29kZQorIyAgZGVmaW5lIF9sZW5ndGhfY29kZSAgICAgICAgICB6X19sZW5ndGhfY29kZQorIyAgZGVmaW5lIF90cl9hbGlnbiAgICAgICAgICAgICB6X190cl9hbGlnbgorIyAgZGVmaW5lIF90cl9mbHVzaF9iaXRzICAgICAgICB6X190cl9mbHVzaF9iaXRzCisjICBkZWZpbmUgX3RyX2ZsdXNoX2Jsb2NrICAgICAgIHpfX3RyX2ZsdXNoX2Jsb2NrCisjICBkZWZpbmUgX3RyX2luaXQgICAgICAgICAgICAgIHpfX3RyX2luaXQKKyMgIGRlZmluZSBfdHJfc3RvcmVkX2Jsb2NrICAgICAgel9fdHJfc3RvcmVkX2Jsb2NrCisjICBkZWZpbmUgX3RyX3RhbGx5ICAgICAgICAgICAgIHpfX3RyX3RhbGx5CisjICBkZWZpbmUgYWRsZXIzMiAgICAgICAgICAgICAgIHpfYWRsZXIzMgorIyAgZGVmaW5lIGFkbGVyMzJfY29tYmluZSAgICAgICB6X2FkbGVyMzJfY29tYmluZQorIyAgZGVmaW5lIGFkbGVyMzJfY29tYmluZTY0ICAgICB6X2FkbGVyMzJfY29tYmluZTY0CisjICBkZWZpbmUgYWRsZXIzMl96ICAgICAgICAgICAgIHpfYWRsZXIzMl96CisjICBpZm5kZWYgWl9TT0xPCisjICAgIGRlZmluZSBjb21wcmVzcyAgICAgICAgICAgICAgel9jb21wcmVzcworIyAgICBkZWZpbmUgY29tcHJlc3MyICAgICAgICAgICAgIHpfY29tcHJlc3MyCisjICAgIGRlZmluZSBjb21wcmVzc0JvdW5kICAgICAgICAgel9jb21wcmVzc0JvdW5kCiAjICBlbmRpZgorIyAgZGVmaW5lIGNyYzMyICAgICAgICAgICAgICAgICB6X2NyYzMyCisjICBkZWZpbmUgY3JjMzJfY29tYmluZSAgICAgICAgIHpfY3JjMzJfY29tYmluZQorIyAgZGVmaW5lIGNyYzMyX2NvbWJpbmU2NCAgICAgICB6X2NyYzMyX2NvbWJpbmU2NAorIyAgZGVmaW5lIGNyYzMyX2NvbWJpbmVfZ2VuICAgICB6X2NyYzMyX2NvbWJpbmVfZ2VuCisjICBkZWZpbmUgY3JjMzJfY29tYmluZV9nZW42NCAgIHpfY3JjMzJfY29tYmluZV9nZW42NAorIyAgZGVmaW5lIGNyYzMyX2NvbWJpbmVfb3AgICAgICB6X2NyYzMyX2NvbWJpbmVfb3AKKyMgIGRlZmluZSBjcmMzMl96ICAgICAgICAgICAgICAgel9jcmMzMl96CisjICBkZWZpbmUgZGVmbGF0ZSAgICAgICAgICAgICAgIHpfZGVmbGF0ZQorIyAgZGVmaW5lIGRlZmxhdGVCb3VuZCAgICAgICAgICB6X2RlZmxhdGVCb3VuZAorIyAgZGVmaW5lIGRlZmxhdGVDb3B5ICAgICAgICAgICB6X2RlZmxhdGVDb3B5CisjICBkZWZpbmUgZGVmbGF0ZUVuZCAgICAgICAgICAgIHpfZGVmbGF0ZUVuZAorIyAgZGVmaW5lIGRlZmxhdGVHZXREaWN0aW9uYXJ5ICB6X2RlZmxhdGVHZXREaWN0aW9uYXJ5CisjICBkZWZpbmUgZGVmbGF0ZUluaXQgICAgICAgICAgIHpfZGVmbGF0ZUluaXQKKyMgIGRlZmluZSBkZWZsYXRlSW5pdDIgICAgICAgICAgel9kZWZsYXRlSW5pdDIKKyMgIGRlZmluZSBkZWZsYXRlSW5pdDJfICAgICAgICAgel9kZWZsYXRlSW5pdDJfCisjICBkZWZpbmUgZGVmbGF0ZUluaXRfICAgICAgICAgIHpfZGVmbGF0ZUluaXRfCisjICBkZWZpbmUgZGVmbGF0ZVBhcmFtcyAgICAgICAgIHpfZGVmbGF0ZVBhcmFtcworIyAgZGVmaW5lIGRlZmxhdGVQZW5kaW5nICAgICAgICB6X2RlZmxhdGVQZW5kaW5nCisjICBkZWZpbmUgZGVmbGF0ZVByaW1lICAgICAgICAgIHpfZGVmbGF0ZVByaW1lCisjICBkZWZpbmUgZGVmbGF0ZVJlc2V0ICAgICAgICAgIHpfZGVmbGF0ZVJlc2V0CisjICBkZWZpbmUgZGVmbGF0ZVJlc2V0S2VlcCAgICAgIHpfZGVmbGF0ZVJlc2V0S2VlcAorIyAgZGVmaW5lIGRlZmxhdGVTZXREaWN0aW9uYXJ5ICB6X2RlZmxhdGVTZXREaWN0aW9uYXJ5CisjICBkZWZpbmUgZGVmbGF0ZVNldEhlYWRlciAgICAgIHpfZGVmbGF0ZVNldEhlYWRlcgorIyAgZGVmaW5lIGRlZmxhdGVUdW5lICAgICAgICAgICB6X2RlZmxhdGVUdW5lCisjICBkZWZpbmUgZGVmbGF0ZV9jb3B5cmlnaHQgICAgIHpfZGVmbGF0ZV9jb3B5cmlnaHQKKyMgIGRlZmluZSBnZXRfY3JjX3RhYmxlICAgICAgICAgel9nZXRfY3JjX3RhYmxlCisjICBpZm5kZWYgWl9TT0xPCisjICAgIGRlZmluZSBnel9lcnJvciAgICAgICAgICAgICAgel9nel9lcnJvcgorIyAgICBkZWZpbmUgZ3pfaW50bWF4ICAgICAgICAgICAgIHpfZ3pfaW50bWF4CisjICAgIGRlZmluZSBnel9zdHJ3aW5lcnJvciAgICAgICAgel9nel9zdHJ3aW5lcnJvcgorIyAgICBkZWZpbmUgZ3pidWZmZXIgICAgICAgICAgICAgIHpfZ3pidWZmZXIKKyMgICAgZGVmaW5lIGd6Y2xlYXJlcnIgICAgICAgICAgICB6X2d6Y2xlYXJlcnIKKyMgICAgZGVmaW5lIGd6Y2xvc2UgICAgICAgICAgICAgICB6X2d6Y2xvc2UKKyMgICAgZGVmaW5lIGd6Y2xvc2VfciAgICAgICAgICAgICB6X2d6Y2xvc2VfcgorIyAgICBkZWZpbmUgZ3pjbG9zZV93ICAgICAgICAgICAgIHpfZ3pjbG9zZV93CisjICAgIGRlZmluZSBnemRpcmVjdCAgICAgICAgICAgICAgel9nemRpcmVjdAorIyAgICBkZWZpbmUgZ3pkb3BlbiAgICAgICAgICAgICAgIHpfZ3pkb3BlbgorIyAgICBkZWZpbmUgZ3plb2YgICAgICAgICAgICAgICAgIHpfZ3plb2YKKyMgICAgZGVmaW5lIGd6ZXJyb3IgICAgICAgICAgICAgICB6X2d6ZXJyb3IKKyMgICAgZGVmaW5lIGd6Zmx1c2ggICAgICAgICAgICAgICB6X2d6Zmx1c2gKKyMgICAgZGVmaW5lIGd6ZnJlYWQgICAgICAgICAgICAgICB6X2d6ZnJlYWQKKyMgICAgZGVmaW5lIGd6ZndyaXRlICAgICAgICAgICAgICB6X2d6ZndyaXRlCisjICAgIGRlZmluZSBnemdldGMgICAgICAgICAgICAgICAgel9nemdldGMKKyMgICAgZGVmaW5lIGd6Z2V0Y18gICAgICAgICAgICAgICB6X2d6Z2V0Y18KKyMgICAgZGVmaW5lIGd6Z2V0cyAgICAgICAgICAgICAgICB6X2d6Z2V0cworIyAgICBkZWZpbmUgZ3pvZmZzZXQgICAgICAgICAgICAgIHpfZ3pvZmZzZXQKKyMgICAgZGVmaW5lIGd6b2Zmc2V0NjQgICAgICAgICAgICB6X2d6b2Zmc2V0NjQKKyMgICAgZGVmaW5lIGd6b3BlbiAgICAgICAgICAgICAgICB6X2d6b3BlbgorIyAgICBkZWZpbmUgZ3pvcGVuNjQgICAgICAgICAgICAgIHpfZ3pvcGVuNjQKKyMgICAgaWZkZWYgX1dJTjMyCisjICAgICAgZGVmaW5lIGd6b3Blbl93ICAgICAgICAgICAgICB6X2d6b3Blbl93CisjICAgIGVuZGlmCisjICAgIGRlZmluZSBnenByaW50ZiAgICAgICAgICAgICAgel9nenByaW50ZgorIyAgICBkZWZpbmUgZ3pwdXRjICAgICAgICAgICAgICAgIHpfZ3pwdXRjCisjICAgIGRlZmluZSBnenB1dHMgICAgICAgICAgICAgICAgel9nenB1dHMKKyMgICAgZGVmaW5lIGd6cmVhZCAgICAgICAgICAgICAgICB6X2d6cmVhZAorIyAgICBkZWZpbmUgZ3pyZXdpbmQgICAgICAgICAgICAgIHpfZ3pyZXdpbmQKKyMgICAgZGVmaW5lIGd6c2VlayAgICAgICAgICAgICAgICB6X2d6c2VlaworIyAgICBkZWZpbmUgZ3pzZWVrNjQgICAgICAgICAgICAgIHpfZ3pzZWVrNjQKKyMgICAgZGVmaW5lIGd6c2V0cGFyYW1zICAgICAgICAgICB6X2d6c2V0cGFyYW1zCisjICAgIGRlZmluZSBnenRlbGwgICAgICAgICAgICAgICAgel9nenRlbGwKKyMgICAgZGVmaW5lIGd6dGVsbDY0ICAgICAgICAgICAgICB6X2d6dGVsbDY0CisjICAgIGRlZmluZSBnenVuZ2V0YyAgICAgICAgICAgICAgel9nenVuZ2V0YworIyAgICBkZWZpbmUgZ3p2cHJpbnRmICAgICAgICAgICAgIHpfZ3p2cHJpbnRmCisjICAgIGRlZmluZSBnendyaXRlICAgICAgICAgICAgICAgel9nendyaXRlCisjICBlbmRpZgorIyAgZGVmaW5lIGluZmxhdGUgICAgICAgICAgICAgICB6X2luZmxhdGUKKyMgIGRlZmluZSBpbmZsYXRlQmFjayAgICAgICAgICAgel9pbmZsYXRlQmFjaworIyAgZGVmaW5lIGluZmxhdGVCYWNrRW5kICAgICAgICB6X2luZmxhdGVCYWNrRW5kCisjICBkZWZpbmUgaW5mbGF0ZUJhY2tJbml0ICAgICAgIHpfaW5mbGF0ZUJhY2tJbml0CisjICBkZWZpbmUgaW5mbGF0ZUJhY2tJbml0XyAgICAgIHpfaW5mbGF0ZUJhY2tJbml0XworIyAgZGVmaW5lIGluZmxhdGVDb2Rlc1VzZWQgICAgICB6X2luZmxhdGVDb2Rlc1VzZWQKKyMgIGRlZmluZSBpbmZsYXRlQ29weSAgICAgICAgICAgel9pbmZsYXRlQ29weQorIyAgZGVmaW5lIGluZmxhdGVFbmQgICAgICAgICAgICB6X2luZmxhdGVFbmQKKyMgIGRlZmluZSBpbmZsYXRlR2V0RGljdGlvbmFyeSAgel9pbmZsYXRlR2V0RGljdGlvbmFyeQorIyAgZGVmaW5lIGluZmxhdGVHZXRIZWFkZXIgICAgICB6X2luZmxhdGVHZXRIZWFkZXIKKyMgIGRlZmluZSBpbmZsYXRlSW5pdCAgICAgICAgICAgel9pbmZsYXRlSW5pdAorIyAgZGVmaW5lIGluZmxhdGVJbml0MiAgICAgICAgICB6X2luZmxhdGVJbml0MgorIyAgZGVmaW5lIGluZmxhdGVJbml0Ml8gICAgICAgICB6X2luZmxhdGVJbml0Ml8KKyMgIGRlZmluZSBpbmZsYXRlSW5pdF8gICAgICAgICAgel9pbmZsYXRlSW5pdF8KKyMgIGRlZmluZSBpbmZsYXRlTWFyayAgICAgICAgICAgel9pbmZsYXRlTWFyaworIyAgZGVmaW5lIGluZmxhdGVQcmltZSAgICAgICAgICB6X2luZmxhdGVQcmltZQorIyAgZGVmaW5lIGluZmxhdGVSZXNldCAgICAgICAgICB6X2luZmxhdGVSZXNldAorIyAgZGVmaW5lIGluZmxhdGVSZXNldDIgICAgICAgICB6X2luZmxhdGVSZXNldDIKKyMgIGRlZmluZSBpbmZsYXRlUmVzZXRLZWVwICAgICAgel9pbmZsYXRlUmVzZXRLZWVwCisjICBkZWZpbmUgaW5mbGF0ZVNldERpY3Rpb25hcnkgIHpfaW5mbGF0ZVNldERpY3Rpb25hcnkKKyMgIGRlZmluZSBpbmZsYXRlU3luYyAgICAgICAgICAgel9pbmZsYXRlU3luYworIyAgZGVmaW5lIGluZmxhdGVTeW5jUG9pbnQgICAgICB6X2luZmxhdGVTeW5jUG9pbnQKKyMgIGRlZmluZSBpbmZsYXRlVW5kZXJtaW5lICAgICAgel9pbmZsYXRlVW5kZXJtaW5lCisjICBkZWZpbmUgaW5mbGF0ZVZhbGlkYXRlICAgICAgIHpfaW5mbGF0ZVZhbGlkYXRlCisjICBkZWZpbmUgaW5mbGF0ZV9jb3B5cmlnaHQgICAgIHpfaW5mbGF0ZV9jb3B5cmlnaHQKKyMgIGRlZmluZSBpbmZsYXRlX2Zhc3QgICAgICAgICAgel9pbmZsYXRlX2Zhc3QKKyMgIGRlZmluZSBpbmZsYXRlX3RhYmxlICAgICAgICAgel9pbmZsYXRlX3RhYmxlCisjICBpZm5kZWYgWl9TT0xPCisjICAgIGRlZmluZSB1bmNvbXByZXNzICAgICAgICAgICAgel91bmNvbXByZXNzCisjICAgIGRlZmluZSB1bmNvbXByZXNzMiAgICAgICAgICAgel91bmNvbXByZXNzMgorIyAgZW5kaWYKKyMgIGRlZmluZSB6RXJyb3IgICAgICAgICAgICAgICAgel96RXJyb3IKKyMgIGlmbmRlZiBaX1NPTE8KKyMgICAgZGVmaW5lIHpjYWxsb2MgICAgICAgICAgICAgICB6X3pjYWxsb2MKKyMgICAgZGVmaW5lIHpjZnJlZSAgICAgICAgICAgICAgICB6X3pjZnJlZQorIyAgZW5kaWYKKyMgIGRlZmluZSB6bGliQ29tcGlsZUZsYWdzICAgICAgel96bGliQ29tcGlsZUZsYWdzCisjICBkZWZpbmUgemxpYlZlcnNpb24gICAgICAgICAgIHpfemxpYlZlcnNpb24KKworLyogYWxsIHpsaWIgdHlwZWRlZnMgaW4gemxpYi5oIGFuZCB6Y29uZi5oICovCisjICBkZWZpbmUgQnl0ZSAgICAgICAgICAgICAgICAgIHpfQnl0ZQorIyAgZGVmaW5lIEJ5dGVmICAgICAgICAgICAgICAgICB6X0J5dGVmCisjICBkZWZpbmUgYWxsb2NfZnVuYyAgICAgICAgICAgIHpfYWxsb2NfZnVuYworIyAgZGVmaW5lIGNoYXJmICAgICAgICAgICAgICAgICB6X2NoYXJmCisjICBkZWZpbmUgZnJlZV9mdW5jICAgICAgICAgICAgIHpfZnJlZV9mdW5jCisjICBpZm5kZWYgWl9TT0xPCisjICAgIGRlZmluZSBnekZpbGUgICAgICAgICAgICAgICAgel9nekZpbGUKKyMgIGVuZGlmCisjICBkZWZpbmUgZ3pfaGVhZGVyICAgICAgICAgICAgIHpfZ3pfaGVhZGVyCisjICBkZWZpbmUgZ3pfaGVhZGVycCAgICAgICAgICAgIHpfZ3pfaGVhZGVycAorIyAgZGVmaW5lIGluX2Z1bmMgICAgICAgICAgICAgICB6X2luX2Z1bmMKKyMgIGRlZmluZSBpbnRmICAgICAgICAgICAgICAgICAgel9pbnRmCisjICBkZWZpbmUgb3V0X2Z1bmMgICAgICAgICAgICAgIHpfb3V0X2Z1bmMKKyMgIGRlZmluZSB1SW50ICAgICAgICAgICAgICAgICAgel91SW50CisjICBkZWZpbmUgdUludGYgICAgICAgICAgICAgICAgIHpfdUludGYKKyMgIGRlZmluZSB1TG9uZyAgICAgICAgICAgICAgICAgel91TG9uZworIyAgZGVmaW5lIHVMb25nZiAgICAgICAgICAgICAgICB6X3VMb25nZgorIyAgZGVmaW5lIHZvaWRwICAgICAgICAgICAgICAgICB6X3ZvaWRwCisjICBkZWZpbmUgdm9pZHBjICAgICAgICAgICAgICAgIHpfdm9pZHBjCisjICBkZWZpbmUgdm9pZHBmICAgICAgICAgICAgICAgIHpfdm9pZHBmCisKKy8qIGFsbCB6bGliIHN0cnVjdHMgaW4gemxpYi5oIGFuZCB6Y29uZi5oICovCisjICBkZWZpbmUgZ3pfaGVhZGVyX3MgICAgICAgICAgIHpfZ3pfaGVhZGVyX3MKKyMgIGRlZmluZSBpbnRlcm5hbF9zdGF0ZSAgICAgICAgel9pbnRlcm5hbF9zdGF0ZQorCiAjZW5kaWYKKwogI2lmIGRlZmluZWQoX19NU0RPU19fKSAmJiAhZGVmaW5lZChNU0RPUykKICMgIGRlZmluZSBNU0RPUwogI2VuZGlmCi0KLS8qIFdpbkNFIGRvZXNuJ3QgaGF2ZSBlcnJuby5oICovCi0jaWZkZWYgX1dJTjMyX1dDRQotIyAgZGVmaW5lIE5PX0VSUk5PX0gKKyNpZiAoZGVmaW5lZChPU18yKSB8fCBkZWZpbmVkKF9fT1MyX18pKSAmJiAhZGVmaW5lZChPUzIpCisjICBkZWZpbmUgT1MyCiAjZW5kaWYKLQorI2lmIGRlZmluZWQoX1dJTkRPV1MpICYmICFkZWZpbmVkKFdJTkRPV1MpCisjICBkZWZpbmUgV0lORE9XUworI2VuZGlmCisjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkgfHwgZGVmaW5lZChfX1dJTjMyX18pCisjICBpZm5kZWYgV0lOMzIKKyMgICAgZGVmaW5lIFdJTjMyCisjICBlbmRpZgorI2VuZGlmCisjaWYgKGRlZmluZWQoTVNET1MpIHx8IGRlZmluZWQoT1MyKSB8fCBkZWZpbmVkKFdJTkRPV1MpKSAmJiAhZGVmaW5lZChXSU4zMikKKyMgIGlmICFkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX0ZMQVRfXykgJiYgIWRlZmluZWQoX18zODZfXykKKyMgICAgaWZuZGVmIFNZUzE2QklUCisjICAgICAgZGVmaW5lIFNZUzE2QklUCisjICAgIGVuZGlmCisjICBlbmRpZgorI2VuZGlmCiAKIC8qCiAgKiBDb21waWxlIHdpdGggLURNQVhTRUdfNjRLIGlmIHRoZSBhbGxvYyBmdW5jdGlvbiBjYW5ub3QgYWxsb2NhdGUgbW9yZQogICogdGhhbiA2NGsgYnl0ZXMgYXQgYSB0aW1lIChuZWVkZWQgb24gc3lzdGVtcyB3aXRoIDE2LWJpdCBpbnQpLgogICovCi0jaWYgZGVmaW5lZChNU0RPUykgJiYgIWRlZmluZWQoX18zMkJJVF9fKQorI2lmZGVmIFNZUzE2QklUCiAjICBkZWZpbmUgTUFYU0VHXzY0SwogI2VuZGlmCiAjaWZkZWYgTVNET1MKICMgIGRlZmluZSBVTkFMSUdORURfT0sKICNlbmRpZgogCi0jaWYgKGRlZmluZWQoTVNET1MpIHx8IGRlZmluZWQoX1dJTkRPV1MpIHx8IGRlZmluZWQoV0lOMzIpKSAgJiYgIWRlZmluZWQoU1REQykKLSMgIGRlZmluZSBTVERDCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fU1REQ19fKSB8fCBkZWZpbmVkKF9fY3BsdXNwbHVzKSB8fCBkZWZpbmVkKF9fT1MyX18pCisjaWZkZWYgX19TVERDX1ZFUlNJT05fXwogIyAgaWZuZGVmIFNUREMKICMgICAgZGVmaW5lIFNUREMKICMgIGVuZGlmCisjICBpZiBfX1NURENfVkVSU0lPTl9fID49IDE5OTkwMUwKKyMgICAgaWZuZGVmIFNUREM5OQorIyAgICAgIGRlZmluZSBTVERDOTkKKyMgICAgZW5kaWYKKyMgIGVuZGlmCisjZW5kaWYKKyNpZiAhZGVmaW5lZChTVERDKSAmJiAoZGVmaW5lZChfX1NURENfXykgfHwgZGVmaW5lZChfX2NwbHVzcGx1cykpCisjICBkZWZpbmUgU1REQworI2VuZGlmCisjaWYgIWRlZmluZWQoU1REQykgJiYgKGRlZmluZWQoX19HTlVDX18pIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKSkKKyMgIGRlZmluZSBTVERDCisjZW5kaWYKKyNpZiAhZGVmaW5lZChTVERDKSAmJiAoZGVmaW5lZChNU0RPUykgfHwgZGVmaW5lZChXSU5ET1dTKSB8fCBkZWZpbmVkKFdJTjMyKSkKKyMgIGRlZmluZSBTVERDCisjZW5kaWYKKyNpZiAhZGVmaW5lZChTVERDKSAmJiAoZGVmaW5lZChPUzIpIHx8IGRlZmluZWQoX19IT1NfQUlYX18pKQorIyAgZGVmaW5lIFNUREMKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX09TNDAwX18pICYmICFkZWZpbmVkKFNUREMpICAgIC8qIGlTZXJpZXMgKGZvcm1lcmx5IEFTLzQwMCkuICovCisjICBkZWZpbmUgU1REQwogI2VuZGlmCiAKICNpZm5kZWYgU1REQwogIyAgaWZuZGVmIGNvbnN0IC8qIGNhbm5vdCB1c2UgIWRlZmluZWQoU1REQykgJiYgIWRlZmluZWQoY29uc3QpIG9uIE1hYyAqLwotIyAgICBkZWZpbmUgY29uc3QKKyMgICAgZGVmaW5lIGNvbnN0ICAgICAgIC8qIG5vdGU6IG5lZWQgYSBtb3JlIGdlbnRsZSBzb2x1dGlvbiBoZXJlICovCiAjICBlbmRpZgogI2VuZGlmCiAKLS8qIFNvbWUgTWFjIGNvbXBpbGVycyBtZXJnZSBhbGwgLmggZmlsZXMgaW5jb3JyZWN0bHk6ICovCi0jaWYgZGVmaW5lZChfX01XRVJLU19fKSB8fCBkZWZpbmVkKGFwcGxlYykgfHxkZWZpbmVkKFRISU5LX0MpIHx8ZGVmaW5lZChfX1NDX18pCi0jICBkZWZpbmUgTk9fRFVNTVlfREVDTAorI2lmIGRlZmluZWQoWkxJQl9DT05TVCkgJiYgIWRlZmluZWQoel9jb25zdCkKKyMgIGRlZmluZSB6X2NvbnN0IGNvbnN0CisjZWxzZQorIyAgZGVmaW5lIHpfY29uc3QKICNlbmRpZgogCi0vKiBPbGQgQm9ybGFuZCBDIGFuZCBMQ0MgaW5jb3JyZWN0bHkgY29tcGxhaW5zIGFib3V0IG1pc3NpbmcgcmV0dXJuczogKi8KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA8IDB4NTAwKQotIyAgZGVmaW5lIE5FRURfRFVNTVlfUkVUVVJOCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19MQ0NfXykKLSMgIGRlZmluZSAgTkVFRF9EVU1NWV9SRVRVUk4KKyNpZmRlZiBaX1NPTE8KKyAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB6X3NpemVfdDsKKyNlbHNlCisjICBkZWZpbmUgel9sb25nbG9uZyBsb25nIGxvbmcKKyMgIGlmIGRlZmluZWQoTk9fU0laRV9UKQorICAgICB0eXBlZGVmIHVuc2lnbmVkIE5PX1NJWkVfVCB6X3NpemVfdDsKKyMgIGVsaWYgZGVmaW5lZChTVERDKQorIyAgICBpbmNsdWRlIDxzdGRkZWYuaD4KKyAgICAgdHlwZWRlZiBzaXplX3Qgel9zaXplX3Q7CisjICBlbHNlCisgICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB6X3NpemVfdDsKKyMgIGVuZGlmCisjICB1bmRlZiB6X2xvbmdsb25nCiAjZW5kaWYKIAogLyogTWF4aW11bSB2YWx1ZSBmb3IgbWVtTGV2ZWwgaW4gZGVmbGF0ZUluaXQyICovCkBAIC0xMzMsNyArMjgyLDcgQEAKICBPZiBjb3Vyc2UgdGhpcyB3aWxsIGdlbmVyYWxseSBkZWdyYWRlIGNvbXByZXNzaW9uICh0aGVyZSdzIG5vIGZyZWUgbHVuY2gpLgogCiAgICBUaGUgbWVtb3J5IHJlcXVpcmVtZW50cyBmb3IgaW5mbGF0ZSBhcmUgKGluIGJ5dGVzKSAxIDw8IHdpbmRvd0JpdHMKLSB0aGF0IGlzLCAzMksgZm9yIHdpbmRvd0JpdHM9MTUgKGRlZmF1bHQgdmFsdWUpIHBsdXMgYSBmZXcga2lsb2J5dGVzCisgdGhhdCBpcywgMzJLIGZvciB3aW5kb3dCaXRzPTE1IChkZWZhdWx0IHZhbHVlKSBwbHVzIGFib3V0IDcga2lsb2J5dGVzCiAgZm9yIHNtYWxsIG9iamVjdHMuCiAqLwogCkBAIC0xNDcsNzUgKzI5NiwxMDQgQEAKICMgIGVuZGlmCiAjZW5kaWYKIAorI2lmbmRlZiBaX0FSRyAvKiBmdW5jdGlvbiBwcm90b3R5cGVzIGZvciBzdGRhcmcgKi8KKyMgIGlmIGRlZmluZWQoU1REQykgfHwgZGVmaW5lZChaX0hBVkVfU1REQVJHX0gpCisjICAgIGRlZmluZSBaX0FSRyhhcmdzKSAgYXJncworIyAgZWxzZQorIyAgICBkZWZpbmUgWl9BUkcoYXJncykgICgpCisjICBlbmRpZgorI2VuZGlmCisKIC8qIFRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgZm9yIEZBUiBhcmUgbmVlZGVkIG9ubHkgZm9yIE1TRE9TIG1peGVkCiAgKiBtb2RlbCBwcm9ncmFtbWluZyAoc21hbGwgb3IgbWVkaXVtIG1vZGVsIHdpdGggc29tZSBmYXIgYWxsb2NhdGlvbnMpLgogICogVGhpcyB3YXMgdGVzdGVkIG9ubHkgd2l0aCBNU0M7IGZvciBvdGhlciBNU0RPUyBjb21waWxlcnMgeW91IG1heSBoYXZlCiAgKiB0byBkZWZpbmUgTk9fTUVNQ1BZIGluIHp1dGlsLmguICBJZiB5b3UgZG9uJ3QgbmVlZCB0aGUgbWl4ZWQgbW9kZWwsCiAgKiBqdXN0IGRlZmluZSBGQVIgdG8gYmUgZW1wdHkuCiAgKi8KLSNpZiAoZGVmaW5lZChNX0k4NlNNKSB8fCBkZWZpbmVkKE1fSTg2TU0pKSAmJiAhZGVmaW5lZChfXzMyQklUX18pCi0gICAvKiBNU0Mgc21hbGwgb3IgbWVkaXVtIG1vZGVsICovCi0jICBkZWZpbmUgU01BTExfTUVESVVNCi0jICBpZmRlZiBfTVNDX1ZFUgotIyAgICBkZWZpbmUgRkFSIF9mYXIKLSMgIGVsc2UKLSMgICAgZGVmaW5lIEZBUiBmYXIKLSMgIGVuZGlmCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKGRlZmluZWQoX19TTUFMTF9fKSB8fCBkZWZpbmVkKF9fTUVESVVNX18pKQotIyAgaWZuZGVmIF9fMzJCSVRfXworI2lmZGVmIFNZUzE2QklUCisjICBpZiBkZWZpbmVkKE1fSTg2U00pIHx8IGRlZmluZWQoTV9JODZNTSkKKyAgICAgLyogTVNDIHNtYWxsIG9yIG1lZGl1bSBtb2RlbCAqLwogIyAgICBkZWZpbmUgU01BTExfTUVESVVNCi0jICAgIGRlZmluZSBGQVIgX2ZhcgorIyAgICBpZmRlZiBfTVNDX1ZFUgorIyAgICAgIGRlZmluZSBGQVIgX2ZhcgorIyAgICBlbHNlCisjICAgICAgZGVmaW5lIEZBUiBmYXIKKyMgICAgZW5kaWYKKyMgIGVuZGlmCisjICBpZiAoZGVmaW5lZChfX1NNQUxMX18pIHx8IGRlZmluZWQoX19NRURJVU1fXykpCisgICAgIC8qIFR1cmJvIEMgc21hbGwgb3IgbWVkaXVtIG1vZGVsICovCisjICAgIGRlZmluZSBTTUFMTF9NRURJVU0KKyMgICAgaWZkZWYgX19CT1JMQU5EQ19fCisjICAgICAgZGVmaW5lIEZBUiBfZmFyCisjICAgIGVsc2UKKyMgICAgICBkZWZpbmUgRkFSIGZhcgorIyAgICBlbmRpZgogIyAgZW5kaWYKICNlbmRpZgogCi0vKiBDb21waWxlIHdpdGggLURaTElCX0RMTCBmb3IgV2luZG93cyBETEwgc3VwcG9ydCAqLwotI2lmIGRlZmluZWQoWkxJQl9ETEwpCi0jICBpZiBkZWZpbmVkKF9XSU5ET1dTKSB8fCBkZWZpbmVkKFdJTkRPV1MpCisjaWYgZGVmaW5lZChXSU5ET1dTKSB8fCBkZWZpbmVkKFdJTjMyKQorICAgLyogSWYgYnVpbGRpbmcgb3IgdXNpbmcgemxpYiBhcyBhIERMTCwgZGVmaW5lIFpMSUJfRExMLgorICAgICogVGhpcyBpcyBub3QgbWFuZGF0b3J5LCBidXQgaXQgb2ZmZXJzIGEgbGl0dGxlIHBlcmZvcm1hbmNlIGluY3JlYXNlLgorICAgICovCisjICBpZmRlZiBaTElCX0RMTAorIyAgICBpZiBkZWZpbmVkKFdJTjMyKSAmJiAoIWRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCAoX19CT1JMQU5EQ19fID49IDB4NTAwKSkKKyMgICAgICBpZmRlZiBaTElCX0lOVEVSTkFMCisjICAgICAgICBkZWZpbmUgWkVYVEVSTiBleHRlcm4gX19kZWNsc3BlYyhkbGxleHBvcnQpCisjICAgICAgZWxzZQorIyAgICAgICAgZGVmaW5lIFpFWFRFUk4gZXh0ZXJuIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorIyAgICAgIGVuZGlmCisjICAgIGVuZGlmCisjICBlbmRpZiAgLyogWkxJQl9ETEwgKi8KKyAgIC8qIElmIGJ1aWxkaW5nIG9yIHVzaW5nIHpsaWIgd2l0aCB0aGUgV0lOQVBJL1dJTkFQSVYgY2FsbGluZyBjb252ZW50aW9uLAorICAgICogZGVmaW5lIFpMSUJfV0lOQVBJLgorICAgICogQ2F1dGlvbjogdGhlIHN0YW5kYXJkIFpMSUIxLkRMTCBpcyBOT1QgY29tcGlsZWQgdXNpbmcgWkxJQl9XSU5BUEkuCisgICAgKi8KKyMgIGlmZGVmIFpMSUJfV0lOQVBJCiAjICAgIGlmZGVmIEZBUgogIyAgICAgIHVuZGVmIEZBUgogIyAgICBlbmRpZgotIyAgICBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jICAgIGRlZmluZSBaRVhQT1JUKHgpICB4IFdJTkFQSQotIyAgICBpZmRlZiBXSU4zMgotIyAgICAgIGRlZmluZSBaRVhQT1JUVkEoeCkgIHggV0lOQVBJVgotIyAgICBlbHNlCi0jICAgICAgZGVmaW5lIFpFWFBPUlRWQSh4KSAgeCBGQVIgX2NkZWNsIF9leHBvcnQKKyMgICAgaWZuZGVmIFdJTjMyX0xFQU5fQU5EX01FQU4KKyMgICAgICBkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgogIyAgICBlbmRpZgotIyAgZW5kaWYKLSMgIGlmIGRlZmluZWQgKF9fQk9STEFORENfXykKLSMgICAgaWYgKF9fQk9STEFORENfXyA+PSAweDA1MDApICYmIGRlZmluZWQgKFdJTjMyKQotIyAgICAgIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSMgICAgICBkZWZpbmUgWkVYUE9SVCh4KSB4IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBXSU5BUEkKLSMgICAgICBkZWZpbmUgWkVYUE9SVFJWQSh4KSAgeCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgV0lOQVBJVgorIyAgICBpbmNsdWRlIDx3aW5kb3dzLmg+CisgICAgIC8qIE5vIG5lZWQgZm9yIF9leHBvcnQsIHVzZSBaTElCLkRFRiBpbnN0ZWFkLiAqLworICAgICAvKiBGb3IgY29tcGxldGUgV2luZG93cyBjb21wYXRpYmlsaXR5LCB1c2UgV0lOQVBJLCBub3QgX19zdGRjYWxsLiAqLworIyAgICBkZWZpbmUgWkVYUE9SVCBXSU5BUEkKKyMgICAgaWZkZWYgV0lOMzIKKyMgICAgICBkZWZpbmUgWkVYUE9SVFZBIFdJTkFQSVYKICMgICAgZWxzZQotIyAgICAgIGlmIGRlZmluZWQgKF9XaW5kb3dzKSAmJiBkZWZpbmVkIChfX0RMTF9fKQotIyAgICAgICAgZGVmaW5lIFpFWFBPUlQoeCkgeCBfZXhwb3J0Ci0jICAgICAgICBkZWZpbmUgWkVYUE9SVFZBKHgpIHggX2V4cG9ydAotIyAgICAgIGVuZGlmCisjICAgICAgZGVmaW5lIFpFWFBPUlRWQSBGQVIgQ0RFQ0wKICMgICAgZW5kaWYKICMgIGVuZGlmCiAjZW5kaWYKIAorI2lmIGRlZmluZWQgKF9fQkVPU19fKQorIyAgaWZkZWYgWkxJQl9ETEwKKyMgICAgaWZkZWYgWkxJQl9JTlRFUk5BTAorIyAgICAgIGRlZmluZSBaRVhQT1JUICAgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjICAgICAgZGVmaW5lIFpFWFBPUlRWQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyMgICAgZWxzZQorIyAgICAgIGRlZmluZSBaRVhQT1JUICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjICAgICAgZGVmaW5lIFpFWFBPUlRWQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyMgICAgZW5kaWYKKyMgIGVuZGlmCisjZW5kaWYKIAorI2lmbmRlZiBaRVhURVJOCisjICBkZWZpbmUgWkVYVEVSTiBleHRlcm4KKyNlbmRpZgogI2lmbmRlZiBaRVhQT1JUCi0jICBkZWZpbmUgWkVYUE9SVCh4KSAgIHN0YXRpYyB4CisjICBkZWZpbmUgWkVYUE9SVAogI2VuZGlmCiAjaWZuZGVmIFpFWFBPUlRWQQotIyAgZGVmaW5lIFpFWFBPUlRWQSh4KSAgIHN0YXRpYyB4Ci0jZW5kaWYKLSNpZm5kZWYgWkVYVEVSTgotIyAgZGVmaW5lIFpFWFRFUk4oeCkgc3RhdGljIHgKLSNlbmRpZgotI2lmbmRlZiBaRVhURVJOREVGCi0jICBkZWZpbmUgWkVYVEVSTkRFRih4KSAgc3RhdGljIHgKKyMgIGRlZmluZSBaRVhQT1JUVkEKICNlbmRpZgogCiAjaWZuZGVmIEZBUgotIyAgIGRlZmluZSBGQVIKKyMgIGRlZmluZSBGQVIKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoTUFDT1MpICYmICFkZWZpbmVkKFRBUkdFVF9PU19NQUMpCisjaWYgIWRlZmluZWQoX19NQUNUWVBFU19fKQogdHlwZWRlZiB1bnNpZ25lZCBjaGFyICBCeXRlOyAgLyogOCBiaXRzICovCiAjZW5kaWYKIHR5cGVkZWYgdW5zaWduZWQgaW50ICAgdUludDsgIC8qIDE2IGJpdHMgb3IgbW9yZSAqLwpAQCAtMjMzLDUyICs0MTEsMTM3IEBACiB0eXBlZGVmIHVMb25nIEZBUiB1TG9uZ2Y7CiAKICNpZmRlZiBTVERDCi0gICB0eXBlZGVmIHZvaWQgRkFSICp2b2lkcGY7Ci0gICB0eXBlZGVmIHZvaWQgICAgICp2b2lkcDsKKyAgIHR5cGVkZWYgdm9pZCBjb25zdCAqdm9pZHBjOworICAgdHlwZWRlZiB2b2lkIEZBUiAgICp2b2lkcGY7CisgICB0eXBlZGVmIHZvaWQgICAgICAgKnZvaWRwOwogI2Vsc2UKLSAgIHR5cGVkZWYgQnl0ZSBGQVIgKnZvaWRwZjsKLSAgIHR5cGVkZWYgQnl0ZSAgICAgKnZvaWRwOworICAgdHlwZWRlZiBCeXRlIGNvbnN0ICp2b2lkcGM7CisgICB0eXBlZGVmIEJ5dGUgRkFSICAgKnZvaWRwZjsKKyAgIHR5cGVkZWYgQnl0ZSAgICAgICAqdm9pZHA7CiAjZW5kaWYKIAotI2lmZGVmIEhBVkVfVU5JU1REX0gKLSMgIGluY2x1ZGUgPHN5cy90eXBlcy5oPiAvKiBmb3Igb2ZmX3QgKi8KLSMgIGluY2x1ZGUgPHVuaXN0ZC5oPiAgICAvKiBmb3IgU0VFS18qIGFuZCBvZmZfdCAqLwotIyAgZGVmaW5lIHpfb2ZmX3QgIG9mZl90CisjaWYgIWRlZmluZWQoWl9VNCkgJiYgIWRlZmluZWQoWl9TT0xPKSAmJiBkZWZpbmVkKFNUREMpCisjICBpbmNsdWRlIDxsaW1pdHMuaD4KKyMgIGlmIChVSU5UX01BWCA9PSAweGZmZmZmZmZmVUwpCisjICAgIGRlZmluZSBaX1U0IHVuc2lnbmVkCisjICBlbGlmIChVTE9OR19NQVggPT0gMHhmZmZmZmZmZlVMKQorIyAgICBkZWZpbmUgWl9VNCB1bnNpZ25lZCBsb25nCisjICBlbGlmIChVU0hSVF9NQVggPT0gMHhmZmZmZmZmZlVMKQorIyAgICBkZWZpbmUgWl9VNCB1bnNpZ25lZCBzaG9ydAorIyAgZW5kaWYKICNlbmRpZgotI2lmbmRlZiBTRUVLX1NFVAorCisjaWZkZWYgWl9VNAorICAgdHlwZWRlZiBaX1U0IHpfY3JjX3Q7CisjZWxzZQorICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIHpfY3JjX3Q7CisjZW5kaWYKKworI2lmZGVmIEhBVkVfVU5JU1REX0ggICAgLyogbWF5IGJlIHNldCB0byAjaWYgMSBieSAuL2NvbmZpZ3VyZSAqLworIyAgZGVmaW5lIFpfSEFWRV9VTklTVERfSAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NUREFSR19IICAgIC8qIG1heSBiZSBzZXQgdG8gI2lmIDEgYnkgLi9jb25maWd1cmUgKi8KKyMgIGRlZmluZSBaX0hBVkVfU1REQVJHX0gKKyNlbmRpZgorCisjaWZkZWYgU1REQworIyAgaWZuZGVmIFpfU09MTworIyAgICBpbmNsdWRlIDxzeXMvdHlwZXMuaD4gICAgICAvKiBmb3Igb2ZmX3QgKi8KKyMgIGVuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQoU1REQykgfHwgZGVmaW5lZChaX0hBVkVfU1REQVJHX0gpCisjICBpZm5kZWYgWl9TT0xPCisjICAgIGluY2x1ZGUgPHN0ZGFyZy5oPiAgICAgICAgIC8qIGZvciB2YV9saXN0ICovCisjICBlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBfV0lOMzIKKyMgIGlmbmRlZiBaX1NPTE8KKyMgICAgaW5jbHVkZSA8c3RkZGVmLmg+ICAgICAgICAgLyogZm9yIHdjaGFyX3QgKi8KKyMgIGVuZGlmCisjZW5kaWYKKworLyogYSBsaXR0bGUgdHJpY2sgdG8gYWNjb21tb2RhdGUgYm90aCAiI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFIiBhbmQKKyAqICIjZGVmaW5lIF9MQVJHRUZJTEU2NF9TT1VSQ0UgMSIgYXMgcmVxdWVzdGluZyA2NC1iaXQgb3BlcmF0aW9ucywgKGV2ZW4KKyAqIHRob3VnaCB0aGUgZm9ybWVyIGRvZXMgbm90IGNvbmZvcm0gdG8gdGhlIExGUyBkb2N1bWVudCksIGJ1dCBjb25zaWRlcmluZworICogYm90aCAiI3VuZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UiIGFuZCAiI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFIDAiIGFzCisgKiBlcXVpdmFsZW50bHkgcmVxdWVzdGluZyBubyA2NC1iaXQgb3BlcmF0aW9ucworICovCisjaWYgZGVmaW5lZChfTEFSR0VGSUxFNjRfU09VUkNFKSAmJiAtX0xBUkdFRklMRTY0X1NPVVJDRSAtIC0xID09IDEKKyMgIHVuZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyNlbmRpZgorCisjaWZuZGVmIFpfSEFWRV9VTklTVERfSAorIyAgaWZkZWYgX19XQVRDT01DX18KKyMgICAgZGVmaW5lIFpfSEFWRV9VTklTVERfSAorIyAgZW5kaWYKKyNlbmRpZgorI2lmbmRlZiBaX0hBVkVfVU5JU1REX0gKKyMgIGlmIGRlZmluZWQoX0xBUkdFRklMRTY0X1NPVVJDRSkgJiYgIWRlZmluZWQoX1dJTjMyKQorIyAgICBkZWZpbmUgWl9IQVZFX1VOSVNURF9ICisjICBlbmRpZgorI2VuZGlmCisjaWZuZGVmIFpfU09MTworIyAgaWYgZGVmaW5lZChaX0hBVkVfVU5JU1REX0gpCisjICAgIGluY2x1ZGUgPHVuaXN0ZC5oPiAgICAgICAgIC8qIGZvciBTRUVLXyosIG9mZl90LCBhbmQgX0xGUzY0X0xBUkdFRklMRSAqLworIyAgICBpZmRlZiBWTVMKKyMgICAgICBpbmNsdWRlIDx1bml4aW8uaD4gICAgICAgLyogZm9yIG9mZl90ICovCisjICAgIGVuZGlmCisjICAgIGlmbmRlZiB6X29mZl90CisjICAgICAgZGVmaW5lIHpfb2ZmX3Qgb2ZmX3QKKyMgICAgZW5kaWYKKyMgIGVuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQoX0xGUzY0X0xBUkdFRklMRSkgJiYgX0xGUzY0X0xBUkdFRklMRS0wCisjICBkZWZpbmUgWl9MRlM2NAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9MQVJHRUZJTEU2NF9TT1VSQ0UpICYmIGRlZmluZWQoWl9MRlM2NCkKKyMgIGRlZmluZSBaX0xBUkdFNjQKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMtMCA9PSA2NCAmJiBkZWZpbmVkKFpfTEZTNjQpCisjICBkZWZpbmUgWl9XQU5UNjQKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoU0VFS19TRVQpICYmICFkZWZpbmVkKFpfU09MTykKICMgIGRlZmluZSBTRUVLX1NFVCAgICAgICAgMCAgICAgICAvKiBTZWVrIGZyb20gYmVnaW5uaW5nIG9mIGZpbGUuICAqLwogIyAgZGVmaW5lIFNFRUtfQ1VSICAgICAgICAxICAgICAgIC8qIFNlZWsgZnJvbSBjdXJyZW50IHBvc2l0aW9uLiAgKi8KICMgIGRlZmluZSBTRUVLX0VORCAgICAgICAgMiAgICAgICAvKiBTZXQgZmlsZSBwb2ludGVyIHRvIEVPRiBwbHVzICJvZmZzZXQiICovCiAjZW5kaWYKKwogI2lmbmRlZiB6X29mZl90Ci0jICBkZWZpbmUgIHpfb2ZmX3QgbG9uZworIyAgZGVmaW5lIHpfb2ZmX3QgbG9uZworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmIGRlZmluZWQoWl9MQVJHRTY0KQorIyAgZGVmaW5lIHpfb2ZmNjRfdCBvZmY2NF90CisjZWxzZQorIyAgaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChaX1NPTE8pCisjICAgIGRlZmluZSB6X29mZjY0X3QgX19pbnQ2NAorIyAgZWxzZQorIyAgICBkZWZpbmUgel9vZmY2NF90IHpfb2ZmX3QKKyMgIGVuZGlmCiAjZW5kaWYKIAogLyogTVZTIGxpbmtlciBkb2VzIG5vdCBzdXBwb3J0IGV4dGVybmFsIG5hbWVzIGxhcmdlciB0aGFuIDggYnl0ZXMgKi8KICNpZiBkZWZpbmVkKF9fTVZTX18pCi0jICAgcHJhZ21hIG1hcChkZWZsYXRlSW5pdF8sIkRFSU4iKQotIyAgIHByYWdtYSBtYXAoZGVmbGF0ZUluaXQyXywiREVJTjIiKQotIyAgIHByYWdtYSBtYXAoZGVmbGF0ZUVuZCwiREVFTkQiKQotIyAgIHByYWdtYSBtYXAoaW5mbGF0ZUluaXRfLCJJTklOIikKLSMgICBwcmFnbWEgbWFwKGluZmxhdGVJbml0Ml8sIklOSU4yIikKLSMgICBwcmFnbWEgbWFwKGluZmxhdGVFbmQsIklORU5EIikKLSMgICBwcmFnbWEgbWFwKGluZmxhdGVTeW5jLCJJTlNZIikKLSMgICBwcmFnbWEgbWFwKGluZmxhdGVTZXREaWN0aW9uYXJ5LCJJTlNFREkiKQotIyAgIHByYWdtYSBtYXAoaW5mbGF0ZV9ibG9ja3MsIklOQkwiKQotIyAgIHByYWdtYSBtYXAoaW5mbGF0ZV9ibG9ja3NfbmV3LCJJTkJMTkUiKQotIyAgIHByYWdtYSBtYXAoaW5mbGF0ZV9ibG9ja3NfZnJlZSwiSU5CTEZSIikKLSMgICBwcmFnbWEgbWFwKGluZmxhdGVfYmxvY2tzX3Jlc2V0LCJJTkJMUkUiKQotIyAgIHByYWdtYSBtYXAoaW5mbGF0ZV9jb2Rlc19mcmVlLCJJTkNPRlIiKQotIyAgIHByYWdtYSBtYXAoaW5mbGF0ZV9jb2RlcywiSU5DTyIpCi0jICAgcHJhZ21hIG1hcChpbmZsYXRlX2Zhc3QsIklORkEiKQotIyAgIHByYWdtYSBtYXAoaW5mbGF0ZV9mbHVzaCwiSU5GTFUiKQotIyAgIHByYWdtYSBtYXAoaW5mbGF0ZV9tYXNrLCJJTk1BIikKLSMgICBwcmFnbWEgbWFwKGluZmxhdGVfc2V0X2RpY3Rpb25hcnksIklOU0VESTIiKQotIyAgIHByYWdtYSBtYXAoaW5mbGF0ZV9jb3B5cmlnaHQsIklOQ09QWSIpCi0jICAgcHJhZ21hIG1hcChpbmZsYXRlX3RyZWVzX2JpdHMsIklOVFJCSSIpCi0jICAgcHJhZ21hIG1hcChpbmZsYXRlX3RyZWVzX2R5bmFtaWMsIklOVFJEWSIpCi0jICAgcHJhZ21hIG1hcChpbmZsYXRlX3RyZWVzX2ZpeGVkLCJJTlRSRkkiKQotIyAgIHByYWdtYSBtYXAoaW5mbGF0ZV90cmVlc19mcmVlLCJJTlRSRlIiKQorICAjcHJhZ21hIG1hcChkZWZsYXRlSW5pdF8sIkRFSU4iKQorICAjcHJhZ21hIG1hcChkZWZsYXRlSW5pdDJfLCJERUlOMiIpCisgICNwcmFnbWEgbWFwKGRlZmxhdGVFbmQsIkRFRU5EIikKKyAgI3ByYWdtYSBtYXAoZGVmbGF0ZUJvdW5kLCJERUJORCIpCisgICNwcmFnbWEgbWFwKGluZmxhdGVJbml0XywiSU5JTiIpCisgICNwcmFnbWEgbWFwKGluZmxhdGVJbml0Ml8sIklOSU4yIikKKyAgI3ByYWdtYSBtYXAoaW5mbGF0ZUVuZCwiSU5FTkQiKQorICAjcHJhZ21hIG1hcChpbmZsYXRlU3luYywiSU5TWSIpCisgICNwcmFnbWEgbWFwKGluZmxhdGVTZXREaWN0aW9uYXJ5LCJJTlNFREkiKQorICAjcHJhZ21hIG1hcChjb21wcmVzc0JvdW5kLCJDTUJORCIpCisgICNwcmFnbWEgbWFwKGluZmxhdGVfdGFibGUsIklOVEFCTCIpCisgICNwcmFnbWEgbWFwKGluZmxhdGVfZmFzdCwiSU5GQSIpCisgICNwcmFnbWEgbWFwKGluZmxhdGVfY29weXJpZ2h0LCJJTkNPUFkiKQogI2VuZGlmCiAKLSNlbmRpZiAvKiBfWkNPTkZfSCAqLworI2VuZGlmIC8qIFpDT05GX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9nemlwL2d6Z3V0cy5oIGIvc3JjL2d6aXAvZ3pndXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGYwOWE1MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9nemlwL2d6Z3V0cy5oCkBAIC0wLDAgKzEsMjE5IEBACisvKiBnemd1dHMuaCAtLSB6bGliIGludGVybmFsIGhlYWRlciBkZWZpbml0aW9ucyBmb3IgZ3oqIG9wZXJhdGlvbnMKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE5IE1hcmsgQWRsZXIKKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKKyAqLworCisjaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRQorIyAgaWZuZGVmIF9MQVJHRUZJTEVfU09VUkNFCisjICAgIGRlZmluZSBfTEFSR0VGSUxFX1NPVVJDRSAxCisjICBlbmRpZgorIyAgaWZkZWYgX0ZJTEVfT0ZGU0VUX0JJVFMKKyMgICAgdW5kZWYgX0ZJTEVfT0ZGU0VUX0JJVFMKKyMgIGVuZGlmCisjZW5kaWYKKworI2lmZGVmIEhBVkVfSElEREVOCisjICBkZWZpbmUgWkxJQl9JTlRFUk5BTCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKQorI2Vsc2UKKyMgIGRlZmluZSBaTElCX0lOVEVSTkFMCisjZW5kaWYKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSAiemxpYi5oIgorI2lmZGVmIFNUREMKKyMgIGluY2x1ZGUgPHN0cmluZy5oPgorIyAgaW5jbHVkZSA8c3RkbGliLmg+CisjICBpbmNsdWRlIDxsaW1pdHMuaD4KKyNlbmRpZgorCisjaWZuZGVmIF9QT1NJWF9TT1VSQ0UKKyMgIGRlZmluZSBfUE9TSVhfU09VUkNFCisjZW5kaWYKKyNpbmNsdWRlIDxmY250bC5oPgorCisjaWZkZWYgX1dJTjMyCisjICBpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX1RVUkJPQ19fKSB8fCBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9XSU4zMikKKyMgIGluY2x1ZGUgPGlvLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoX1dJTjMyKQorIyAgZGVmaW5lIFdJREVDSEFSCisjZW5kaWYKKworI2lmZGVmIFdJTkFQSV9GQU1JTFkKKyMgIGRlZmluZSBvcGVuIF9vcGVuCisjICBkZWZpbmUgcmVhZCBfcmVhZAorIyAgZGVmaW5lIHdyaXRlIF93cml0ZQorIyAgZGVmaW5lIGNsb3NlIF9jbG9zZQorI2VuZGlmCisKKyNpZmRlZiBOT19ERUZMQVRFICAgICAgIC8qIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGRlZmluaXRpb24gKi8KKyMgIGRlZmluZSBOT19HWkNPTVBSRVNTCisjZW5kaWYKKworI2lmIGRlZmluZWQoU1REQzk5KSB8fCAoZGVmaW5lZChfX1RVUkJPQ19fKSAmJiBfX1RVUkJPQ19fID49IDB4NTUwKQorIyAgaWZuZGVmIEhBVkVfVlNOUFJJTlRGCisjICAgIGRlZmluZSBIQVZFX1ZTTlBSSU5URgorIyAgZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0NZR1dJTl9fKQorIyAgaWZuZGVmIEhBVkVfVlNOUFJJTlRGCisjICAgIGRlZmluZSBIQVZFX1ZTTlBSSU5URgorIyAgZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZChNU0RPUykgJiYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChCT1JMQU5EQyA+IDB4NDEwKQorIyAgaWZuZGVmIEhBVkVfVlNOUFJJTlRGCisjICAgIGRlZmluZSBIQVZFX1ZTTlBSSU5URgorIyAgZW5kaWYKKyNlbmRpZgorCisjaWZuZGVmIEhBVkVfVlNOUFJJTlRGCisjICBpZmRlZiBNU0RPUworLyogdnNucHJpbnRmIG1heSBleGlzdCBvbiBzb21lIE1TLURPUyBjb21waWxlcnMgKERKR1BQPyksCisgICBidXQgZm9yIG5vdyB3ZSBqdXN0IGFzc3VtZSBpdCBkb2Vzbid0LiAqLworIyAgICBkZWZpbmUgTk9fdnNucHJpbnRmCisjICBlbmRpZgorIyAgaWZkZWYgX19UVVJCT0NfXworIyAgICBkZWZpbmUgTk9fdnNucHJpbnRmCisjICBlbmRpZgorIyAgaWZkZWYgV0lOMzIKKy8qIEluIFdpbjMyLCB2c25wcmludGYgaXMgYXZhaWxhYmxlIGFzIHRoZSAibm9uLUFOU0kiIF92c25wcmludGYuICovCisjICAgIGlmICFkZWZpbmVkKHZzbnByaW50ZikgJiYgIWRlZmluZWQoTk9fdnNucHJpbnRmKQorIyAgICAgIGlmICFkZWZpbmVkKF9NU0NfVkVSKSB8fCAoIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTUwMCApCisjICAgICAgICAgZGVmaW5lIHZzbnByaW50ZiBfdnNucHJpbnRmCisjICAgICAgZW5kaWYKKyMgICAgZW5kaWYKKyMgIGVuZGlmCisjICBpZmRlZiBfX1NBU0MKKyMgICAgZGVmaW5lIE5PX3ZzbnByaW50ZgorIyAgZW5kaWYKKyMgIGlmZGVmIFZNUworIyAgICBkZWZpbmUgTk9fdnNucHJpbnRmCisjICBlbmRpZgorIyAgaWZkZWYgX19PUzQwMF9fCisjICAgIGRlZmluZSBOT192c25wcmludGYKKyMgIGVuZGlmCisjICBpZmRlZiBfX01WU19fCisjICAgIGRlZmluZSBOT192c25wcmludGYKKyMgIGVuZGlmCisjZW5kaWYKKworLyogdW5saWtlIHNucHJpbnRmICh3aGljaCBpcyByZXF1aXJlZCBpbiBDOTkpLCBfc25wcmludGYgZG9lcyBub3QgZ3VhcmFudGVlCisgICBudWxsIHRlcm1pbmF0aW9uIG9mIHRoZSByZXN1bHQgLS0gaG93ZXZlciB0aGlzIGlzIG9ubHkgdXNlZCBpbiBnemxpYi5jIHdoZXJlCisgICB0aGUgcmVzdWx0IGlzIGFzc3VyZWQgdG8gZml0IGluIHRoZSBzcGFjZSBwcm92aWRlZCAqLworI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTkwMAorIyAgZGVmaW5lIHNucHJpbnRmIF9zbnByaW50ZgorI2VuZGlmCisKKyNpZm5kZWYgbG9jYWwKKyMgIGRlZmluZSBsb2NhbCBzdGF0aWMKKyNlbmRpZgorLyogc2luY2UgInN0YXRpYyIgaXMgdXNlZCB0byBtZWFuIHR3byBjb21wbGV0ZWx5IGRpZmZlcmVudCB0aGluZ3MgaW4gQywgd2UKKyAgIGRlZmluZSAibG9jYWwiIGZvciB0aGUgbm9uLXN0YXRpYyBtZWFuaW5nIG9mICJzdGF0aWMiLCBmb3IgcmVhZGFiaWxpdHkKKyAgIChjb21waWxlIHdpdGggLURsb2NhbCBpZiB5b3VyIGRlYnVnZ2VyIGNhbid0IGZpbmQgc3RhdGljIHN5bWJvbHMpICovCisKKy8qIGd6KiBmdW5jdGlvbnMgYWx3YXlzIHVzZSBsaWJyYXJ5IGFsbG9jYXRpb24gZnVuY3Rpb25zICovCisjaWZuZGVmIFNUREMKKyAgZXh0ZXJuIHZvaWRwICBtYWxsb2MgT0YoKHVJbnQgc2l6ZSkpOworICBleHRlcm4gdm9pZCAgIGZyZWUgICBPRigodm9pZHBmIHB0cikpOworI2VuZGlmCisKKy8qIGdldCBlcnJubyBhbmQgc3RyZXJyb3IgZGVmaW5pdGlvbiAqLworI2lmIGRlZmluZWQgVU5ERVJfQ0UKKyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyMgIGRlZmluZSB6c3RyZXJyb3IoKSBnel9zdHJ3aW5lcnJvcigoRFdPUkQpR2V0TGFzdEVycm9yKCkpCisjZWxzZQorIyAgaWZuZGVmIE5PX1NUUkVSUk9SCisjICAgIGluY2x1ZGUgPGVycm5vLmg+CisjICAgIGRlZmluZSB6c3RyZXJyb3IoKSBzdHJlcnJvcihlcnJubykKKyMgIGVsc2UKKyMgICAgZGVmaW5lIHpzdHJlcnJvcigpICJzdGRpbyBlcnJvciAoY29uc3VsdCBlcnJubykiCisjICBlbmRpZgorI2VuZGlmCisKKy8qIHByb3ZpZGUgcHJvdG90eXBlcyBmb3IgdGhlc2Ugd2hlbiBidWlsZGluZyB6bGliIHdpdGhvdXQgTEZTICovCisjaWYgIWRlZmluZWQoX0xBUkdFRklMRTY0X1NPVVJDRSkgfHwgX0xGUzY0X0xBUkdFRklMRS0wID09IDAKKyAgICBaRVhURVJOIGd6RmlsZSBaRVhQT1JUIGd6b3BlbjY0IE9GKChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKikpOworICAgIFpFWFRFUk4gel9vZmY2NF90IFpFWFBPUlQgZ3pzZWVrNjQgT0YoKGd6RmlsZSwgel9vZmY2NF90LCBpbnQpKTsKKyAgICBaRVhURVJOIHpfb2ZmNjRfdCBaRVhQT1JUIGd6dGVsbDY0IE9GKChnekZpbGUpKTsKKyAgICBaRVhURVJOIHpfb2ZmNjRfdCBaRVhQT1JUIGd6b2Zmc2V0NjQgT0YoKGd6RmlsZSkpOworI2VuZGlmCisKKy8qIGRlZmF1bHQgbWVtTGV2ZWwgKi8KKyNpZiBNQVhfTUVNX0xFVkVMID49IDgKKyMgIGRlZmluZSBERUZfTUVNX0xFVkVMIDgKKyNlbHNlCisjICBkZWZpbmUgREVGX01FTV9MRVZFTCAgTUFYX01FTV9MRVZFTAorI2VuZGlmCisKKy8qIGRlZmF1bHQgaS9vIGJ1ZmZlciBzaXplIC0tIGRvdWJsZSB0aGlzIGZvciBvdXRwdXQgd2hlbiByZWFkaW5nICh0aGlzIGFuZAorICAgdHdpY2UgdGhpcyBtdXN0IGJlIGFibGUgdG8gZml0IGluIGFuIHVuc2lnbmVkIHR5cGUpICovCisjZGVmaW5lIEdaQlVGU0laRSA4MTkyCisKKy8qIGd6aXAgbW9kZXMsIGFsc28gcHJvdmlkZSBhIGxpdHRsZSBpbnRlZ3JpdHkgY2hlY2sgb24gdGhlIHBhc3NlZCBzdHJ1Y3R1cmUgKi8KKyNkZWZpbmUgR1pfTk9ORSAwCisjZGVmaW5lIEdaX1JFQUQgNzI0NworI2RlZmluZSBHWl9XUklURSAzMTE1MworI2RlZmluZSBHWl9BUFBFTkQgMSAgICAgLyogbW9kZSBzZXQgdG8gR1pfV1JJVEUgYWZ0ZXIgdGhlIGZpbGUgaXMgb3BlbmVkICovCisKKy8qIHZhbHVlcyBmb3IgZ3pfc3RhdGUgaG93ICovCisjZGVmaW5lIExPT0sgMCAgICAgIC8qIGxvb2sgZm9yIGEgZ3ppcCBoZWFkZXIgKi8KKyNkZWZpbmUgQ09QWV9fIDEgICAgLyogY29weSBpbnB1dCBkaXJlY3RseSAqLworI2RlZmluZSBHWklQIDIgICAgICAvKiBkZWNvbXByZXNzIGEgZ3ppcCBzdHJlYW0gKi8KKworLyogaW50ZXJuYWwgZ3ppcCBmaWxlIHN0YXRlIGRhdGEgc3RydWN0dXJlICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgICAgIC8qIGV4cG9zZWQgY29udGVudHMgZm9yIGd6Z2V0YygpIG1hY3JvICovCisgICAgc3RydWN0IGd6RmlsZV9zIHg7ICAgICAgLyogIngiIGZvciBleHBvc2VkICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogeC5oYXZlOiBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlIGF0IHgubmV4dCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHgubmV4dDogbmV4dCBvdXRwdXQgZGF0YSB0byBkZWxpdmVyIG9yIHdyaXRlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogeC5wb3M6IGN1cnJlbnQgcG9zaXRpb24gaW4gdW5jb21wcmVzc2VkIGRhdGEgKi8KKyAgICAgICAgLyogdXNlZCBmb3IgYm90aCByZWFkaW5nIGFuZCB3cml0aW5nICovCisgICAgaW50IG1vZGU7ICAgICAgICAgICAgICAgLyogc2VlIGd6aXAgbW9kZXMgYWJvdmUgKi8KKyAgICBpbnQgZmQ7ICAgICAgICAgICAgICAgICAvKiBmaWxlIGRlc2NyaXB0b3IgKi8KKyAgICBjaGFyICpwYXRoOyAgICAgICAgICAgICAvKiBwYXRoIG9yIGZkIGZvciBlcnJvciBtZXNzYWdlcyAqLworICAgIHVuc2lnbmVkIHNpemU7ICAgICAgICAgIC8qIGJ1ZmZlciBzaXplLCB6ZXJvIGlmIG5vdCBhbGxvY2F0ZWQgeWV0ICovCisgICAgdW5zaWduZWQgd2FudDsgICAgICAgICAgLyogcmVxdWVzdGVkIGJ1ZmZlciBzaXplLCBkZWZhdWx0IGlzIEdaQlVGU0laRSAqLworICAgIHVuc2lnbmVkIGNoYXIgKmluOyAgICAgIC8qIGlucHV0IGJ1ZmZlciAoZG91YmxlLXNpemVkIHdoZW4gd3JpdGluZykgKi8KKyAgICB1bnNpZ25lZCBjaGFyICpvdXQ7ICAgICAvKiBvdXRwdXQgYnVmZmVyIChkb3VibGUtc2l6ZWQgd2hlbiByZWFkaW5nKSAqLworICAgIGludCBkaXJlY3Q7ICAgICAgICAgICAgIC8qIDAgaWYgcHJvY2Vzc2luZyBnemlwLCAxIGlmIHRyYW5zcGFyZW50ICovCisgICAgICAgIC8qIGp1c3QgZm9yIHJlYWRpbmcgKi8KKyAgICBpbnQgaG93OyAgICAgICAgICAgICAgICAvKiAwOiBnZXQgaGVhZGVyLCAxOiBjb3B5LCAyOiBkZWNvbXByZXNzICovCisgICAgel9vZmY2NF90IHN0YXJ0OyAgICAgICAgLyogd2hlcmUgdGhlIGd6aXAgZGF0YSBzdGFydGVkLCBmb3IgcmV3aW5kaW5nICovCisgICAgaW50IGVvZjsgICAgICAgICAgICAgICAgLyogdHJ1ZSBpZiBlbmQgb2YgaW5wdXQgZmlsZSByZWFjaGVkICovCisgICAgaW50IHBhc3Q7ICAgICAgICAgICAgICAgLyogdHJ1ZSBpZiByZWFkIHJlcXVlc3RlZCBwYXN0IGVuZCAqLworICAgICAgICAvKiBqdXN0IGZvciB3cml0aW5nICovCisgICAgaW50IGxldmVsOyAgICAgICAgICAgICAgLyogY29tcHJlc3Npb24gbGV2ZWwgKi8KKyAgICBpbnQgc3RyYXRlZ3k7ICAgICAgICAgICAvKiBjb21wcmVzc2lvbiBzdHJhdGVneSAqLworICAgIGludCByZXNldDsgICAgICAgICAgICAgIC8qIHRydWUgaWYgYSByZXNldCBpcyBwZW5kaW5nIGFmdGVyIGEgWl9GSU5JU0ggKi8KKyAgICAgICAgLyogc2VlayByZXF1ZXN0ICovCisgICAgel9vZmY2NF90IHNraXA7ICAgICAgICAgLyogYW1vdW50IHRvIHNraXAgKGFscmVhZHkgcmV3b3VuZCBpZiBiYWNrd2FyZHMpICovCisgICAgaW50IHNlZWs7ICAgICAgICAgICAgICAgLyogdHJ1ZSBpZiBzZWVrIHJlcXVlc3QgcGVuZGluZyAqLworICAgICAgICAvKiBlcnJvciBpbmZvcm1hdGlvbiAqLworICAgIGludCBlcnI7ICAgICAgICAgICAgICAgIC8qIGVycm9yIGNvZGUgKi8KKyAgICBjaGFyICptc2c7ICAgICAgICAgICAgICAvKiBlcnJvciBtZXNzYWdlICovCisgICAgICAgIC8qIHpsaWIgaW5mbGF0ZSBvciBkZWZsYXRlIHN0cmVhbSAqLworICAgIHpfc3RyZWFtIHN0cm07ICAgICAgICAgIC8qIHN0cmVhbSBzdHJ1Y3R1cmUgaW4tcGxhY2UgKG5vdCBhIHBvaW50ZXIpICovCit9IGd6X3N0YXRlOwordHlwZWRlZiBnel9zdGF0ZSBGQVIgKmd6X3N0YXRlcDsKKworLyogc2hhcmVkIGZ1bmN0aW9ucyAqLwordm9pZCBaTElCX0lOVEVSTkFMIGd6X2Vycm9yIE9GKChnel9zdGF0ZXAsIGludCwgY29uc3QgY2hhciAqKSk7CisjaWYgZGVmaW5lZCBVTkRFUl9DRQorY2hhciBaTElCX0lOVEVSTkFMICpnel9zdHJ3aW5lcnJvciBPRigoRFdPUkQgZXJyb3IpKTsKKyNlbmRpZgorCisvKiBHVF9PRkYoeCksIHdoZXJlIHggaXMgYW4gdW5zaWduZWQgdmFsdWUsIGlzIHRydWUgaWYgeCA+IG1heGltdW0gel9vZmY2NF90CisgICB2YWx1ZSAtLSBuZWVkZWQgd2hlbiBjb21wYXJpbmcgdW5zaWduZWQgdG8gel9vZmY2NF90LCB3aGljaCBpcyBzaWduZWQKKyAgIChwb3NzaWJsZSB6X29mZjY0X3QgdHlwZXMgb2ZmX3QsIG9mZjY0X3QsIGFuZCBsb25nIGFyZSBhbGwgc2lnbmVkKSAqLworI2lmZGVmIElOVF9NQVgKKyMgIGRlZmluZSBHVF9PRkYoeCkgKHNpemVvZihpbnQpID09IHNpemVvZih6X29mZjY0X3QpICYmICh4KSA+IElOVF9NQVgpCisjZWxzZQordW5zaWduZWQgWkxJQl9JTlRFUk5BTCBnel9pbnRtYXggT0YoKHZvaWQpKTsKKyMgIGRlZmluZSBHVF9PRkYoeCkgKHNpemVvZihpbnQpID09IHNpemVvZih6X29mZjY0X3QpICYmICh4KSA+IGd6X2ludG1heCgpKQorI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvZ3ppcC9pbmZiYWNrLmMgYi9zcmMvZ3ppcC9pbmZiYWNrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY0YzE0ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9nemlwL2luZmJhY2suYwpAQCAtMCwwICsxLDY0NCBAQAorLyogaW5mYmFjay5jIC0tIGluZmxhdGUgdXNpbmcgYSBjYWxsLWJhY2sgaW50ZXJmYWNlCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAyMiBNYXJrIEFkbGVyCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCisgKi8KKworLyoKKyAgIFRoaXMgY29kZSBpcyBsYXJnZWx5IGNvcGllZCBmcm9tIGluZmxhdGUuYy4gIE5vcm1hbGx5IGVpdGhlciBpbmZiYWNrLm8gb3IKKyAgIGluZmxhdGUubyB3b3VsZCBiZSBsaW5rZWQgaW50byBhbiBhcHBsaWNhdGlvbi0tbm90IGJvdGguICBUaGUgaW50ZXJmYWNlCisgICB3aXRoIGluZmZhc3QuYyBpcyByZXRhaW5lZCBzbyB0aGF0IG9wdGltaXplZCBhc3NlbWJsZXItY29kZWQgdmVyc2lvbnMgb2YKKyAgIGluZmxhdGVfZmFzdCgpIGNhbiBiZSB1c2VkIHdpdGggZWl0aGVyIGluZmxhdGUuYyBvciBpbmZiYWNrLmMuCisgKi8KKworI2luY2x1ZGUgInp1dGlsLmgiCisjaW5jbHVkZSAiaW5mdHJlZXMuaCIKKyNpbmNsdWRlICJpbmZsYXRlLmgiCisjaW5jbHVkZSAiaW5mZmFzdC5oIgorCisvKiBmdW5jdGlvbiBwcm90b3R5cGVzICovCitsb2NhbCB2b2lkIGZpeGVkdGFibGVzIE9GKChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlKSk7CisKKy8qCisgICBzdHJtIHByb3ZpZGVzIG1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyBpbiB6YWxsb2MgYW5kIHpmcmVlLCBvcgorICAgWl9OVUxMIHRvIHVzZSB0aGUgbGlicmFyeSBtZW1vcnkgYWxsb2NhdGlvbiBmdW5jdGlvbnMuCisKKyAgIHdpbmRvd0JpdHMgaXMgaW4gdGhlIHJhbmdlIDguLjE1LCBhbmQgd2luZG93IGlzIGEgdXNlci1zdXBwbGllZAorICAgd2luZG93IGFuZCBvdXRwdXQgYnVmZmVyIHRoYXQgaXMgMioqd2luZG93Qml0cyBieXRlcy4KKyAqLworaW50IFpFWFBPUlQgaW5mbGF0ZUJhY2tJbml0XygKKyAgICB6X3N0cmVhbXAgc3RybSwKKyAgICBpbnQgd2luZG93Qml0cywKKyAgICB1bnNpZ25lZCBjaGFyIEZBUiAqd2luZG93LAorICAgIGNvbnN0IGNoYXIgKnZlcnNpb24sCisgICAgaW50IHN0cmVhbV9zaXplKQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisKKyAgICBpZiAodmVyc2lvbiA9PSBaX05VTEwgfHwgdmVyc2lvblswXSAhPSBaTElCX1ZFUlNJT05bMF0gfHwKKyAgICAgICAgc3RyZWFtX3NpemUgIT0gKGludCkoc2l6ZW9mKHpfc3RyZWFtKSkpCisgICAgICAgIHJldHVybiBaX1ZFUlNJT05fRVJST1I7CisgICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8IHdpbmRvdyA9PSBaX05VTEwgfHwKKyAgICAgICAgd2luZG93Qml0cyA8IDggfHwgd2luZG93Qml0cyA+IDE1KQorICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RybS0+bXNnID0gWl9OVUxMOyAgICAgICAgICAgICAgICAgLyogaW4gY2FzZSB3ZSByZXR1cm4gYW4gZXJyb3IgKi8KKyAgICBpZiAoc3RybS0+emFsbG9jID09IChhbGxvY19mdW5jKTApIHsKKyNpZmRlZiBaX1NPTE8KKyAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworI2Vsc2UKKyAgICAgICAgc3RybS0+emFsbG9jID0gemNhbGxvYzsKKyAgICAgICAgc3RybS0+b3BhcXVlID0gKHZvaWRwZikwOworI2VuZGlmCisgICAgfQorICAgIGlmIChzdHJtLT56ZnJlZSA9PSAoZnJlZV9mdW5jKTApCisjaWZkZWYgWl9TT0xPCisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyNlbHNlCisgICAgc3RybS0+emZyZWUgPSB6Y2ZyZWU7CisjZW5kaWYKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilaQUxMT0Moc3RybSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBpbmZsYXRlX3N0YXRlKSk7CisgICAgaWYgKHN0YXRlID09IFpfTlVMTCkgcmV0dXJuIFpfTUVNX0VSUk9SOworICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogYWxsb2NhdGVkXG4iKSk7CisgICAgc3RybS0+c3RhdGUgPSAoc3RydWN0IGludGVybmFsX3N0YXRlIEZBUiAqKXN0YXRlOworICAgIHN0YXRlLT5kbWF4ID0gMzI3NjhVOworICAgIHN0YXRlLT53Yml0cyA9ICh1SW50KXdpbmRvd0JpdHM7CisgICAgc3RhdGUtPndzaXplID0gMVUgPDwgd2luZG93Qml0czsKKyAgICBzdGF0ZS0+d2luZG93ID0gd2luZG93OworICAgIHN0YXRlLT53bmV4dCA9IDA7CisgICAgc3RhdGUtPndoYXZlID0gMDsKKyAgICBzdGF0ZS0+c2FuZSA9IDE7CisgICAgcmV0dXJuIFpfT0s7Cit9CisKKy8qCisgICBSZXR1cm4gc3RhdGUgd2l0aCBsZW5ndGggYW5kIGRpc3RhbmNlIGRlY29kaW5nIHRhYmxlcyBhbmQgaW5kZXggc2l6ZXMgc2V0IHRvCisgICBmaXhlZCBjb2RlIGRlY29kaW5nLiAgTm9ybWFsbHkgdGhpcyByZXR1cm5zIGZpeGVkIHRhYmxlcyBmcm9tIGluZmZpeGVkLmguCisgICBJZiBCVUlMREZJWEVEIGlzIGRlZmluZWQsIHRoZW4gaW5zdGVhZCB0aGlzIHJvdXRpbmUgYnVpbGRzIHRoZSB0YWJsZXMgdGhlCisgICBmaXJzdCB0aW1lIGl0J3MgY2FsbGVkLCBhbmQgcmV0dXJucyB0aG9zZSB0YWJsZXMgdGhlIGZpcnN0IHRpbWUgYW5kCisgICB0aGVyZWFmdGVyLiAgVGhpcyByZWR1Y2VzIHRoZSBzaXplIG9mIHRoZSBjb2RlIGJ5IGFib3V0IDJLIGJ5dGVzLCBpbgorICAgZXhjaGFuZ2UgZm9yIGEgbGl0dGxlIGV4ZWN1dGlvbiB0aW1lLiAgSG93ZXZlciwgQlVJTERGSVhFRCBzaG91bGQgbm90IGJlCisgICB1c2VkIGZvciB0aHJlYWRlZCBhcHBsaWNhdGlvbnMsIHNpbmNlIHRoZSByZXdyaXRpbmcgb2YgdGhlIHRhYmxlcyBhbmQgdmlyZ2luCisgICBtYXkgbm90IGJlIHRocmVhZC1zYWZlLgorICovCitsb2NhbCB2b2lkIGZpeGVkdGFibGVzKAorICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGUpCit7CisjaWZkZWYgQlVJTERGSVhFRAorICAgIHN0YXRpYyBpbnQgdmlyZ2luID0gMTsKKyAgICBzdGF0aWMgY29kZSAqbGVuZml4LCAqZGlzdGZpeDsKKyAgICBzdGF0aWMgY29kZSBmaXhlZFs1NDRdOworCisgICAgLyogYnVpbGQgZml4ZWQgaHVmZm1hbiB0YWJsZXMgaWYgZmlyc3QgY2FsbCAobWF5IG5vdCBiZSB0aHJlYWQgc2FmZSkgKi8KKyAgICBpZiAodmlyZ2luKSB7CisgICAgICAgIHVuc2lnbmVkIHN5bSwgYml0czsKKyAgICAgICAgc3RhdGljIGNvZGUgKm5leHQ7CisKKyAgICAgICAgLyogbGl0ZXJhbC9sZW5ndGggdGFibGUgKi8KKyAgICAgICAgc3ltID0gMDsKKyAgICAgICAgd2hpbGUgKHN5bSA8IDE0NCkgc3RhdGUtPmxlbnNbc3ltKytdID0gODsKKyAgICAgICAgd2hpbGUgKHN5bSA8IDI1Nikgc3RhdGUtPmxlbnNbc3ltKytdID0gOTsKKyAgICAgICAgd2hpbGUgKHN5bSA8IDI4MCkgc3RhdGUtPmxlbnNbc3ltKytdID0gNzsKKyAgICAgICAgd2hpbGUgKHN5bSA8IDI4OCkgc3RhdGUtPmxlbnNbc3ltKytdID0gODsKKyAgICAgICAgbmV4dCA9IGZpeGVkOworICAgICAgICBsZW5maXggPSBuZXh0OworICAgICAgICBiaXRzID0gOTsKKyAgICAgICAgaW5mbGF0ZV90YWJsZShMRU5TLCBzdGF0ZS0+bGVucywgMjg4LCAmKG5leHQpLCAmKGJpdHMpLCBzdGF0ZS0+d29yayk7CisKKyAgICAgICAgLyogZGlzdGFuY2UgdGFibGUgKi8KKyAgICAgICAgc3ltID0gMDsKKyAgICAgICAgd2hpbGUgKHN5bSA8IDMyKSBzdGF0ZS0+bGVuc1tzeW0rK10gPSA1OworICAgICAgICBkaXN0Zml4ID0gbmV4dDsKKyAgICAgICAgYml0cyA9IDU7CisgICAgICAgIGluZmxhdGVfdGFibGUoRElTVFMsIHN0YXRlLT5sZW5zLCAzMiwgJihuZXh0KSwgJihiaXRzKSwgc3RhdGUtPndvcmspOworCisgICAgICAgIC8qIGRvIHRoaXMganVzdCBvbmNlICovCisgICAgICAgIHZpcmdpbiA9IDA7CisgICAgfQorI2Vsc2UgLyogIUJVSUxERklYRUQgKi8KKyMgICBpbmNsdWRlICJpbmZmaXhlZC5oIgorI2VuZGlmIC8qIEJVSUxERklYRUQgKi8KKyAgICBzdGF0ZS0+bGVuY29kZSA9IGxlbmZpeDsKKyAgICBzdGF0ZS0+bGVuYml0cyA9IDk7CisgICAgc3RhdGUtPmRpc3Rjb2RlID0gZGlzdGZpeDsKKyAgICBzdGF0ZS0+ZGlzdGJpdHMgPSA1OworfQorCisvKiBNYWNyb3MgZm9yIGluZmxhdGVCYWNrKCk6ICovCisKKy8qIExvYWQgcmV0dXJuZWQgc3RhdGUgZnJvbSBpbmZsYXRlX2Zhc3QoKSAqLworI2RlZmluZSBMT0FEKCkgXAorICAgIGRvIHsgXAorICAgICAgICBwdXQgPSBzdHJtLT5uZXh0X291dDsgXAorICAgICAgICBsZWZ0ID0gc3RybS0+YXZhaWxfb3V0OyBcCisgICAgICAgIG5leHQgPSBzdHJtLT5uZXh0X2luOyBcCisgICAgICAgIGhhdmUgPSBzdHJtLT5hdmFpbF9pbjsgXAorICAgICAgICBob2xkID0gc3RhdGUtPmhvbGQ7IFwKKyAgICAgICAgYml0cyA9IHN0YXRlLT5iaXRzOyBcCisgICAgfSB3aGlsZSAoMCkKKworLyogU2V0IHN0YXRlIGZyb20gcmVnaXN0ZXJzIGZvciBpbmZsYXRlX2Zhc3QoKSAqLworI2RlZmluZSBSRVNUT1JFKCkgXAorICAgIGRvIHsgXAorICAgICAgICBzdHJtLT5uZXh0X291dCA9IHB1dDsgXAorICAgICAgICBzdHJtLT5hdmFpbF9vdXQgPSBsZWZ0OyBcCisgICAgICAgIHN0cm0tPm5leHRfaW4gPSBuZXh0OyBcCisgICAgICAgIHN0cm0tPmF2YWlsX2luID0gaGF2ZTsgXAorICAgICAgICBzdGF0ZS0+aG9sZCA9IGhvbGQ7IFwKKyAgICAgICAgc3RhdGUtPmJpdHMgPSBiaXRzOyBcCisgICAgfSB3aGlsZSAoMCkKKworLyogQ2xlYXIgdGhlIGlucHV0IGJpdCBhY2N1bXVsYXRvciAqLworI2RlZmluZSBJTklUQklUUygpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaG9sZCA9IDA7IFwKKyAgICAgICAgYml0cyA9IDA7IFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBBc3N1cmUgdGhhdCBzb21lIGlucHV0IGlzIGF2YWlsYWJsZS4gIElmIGlucHV0IGlzIHJlcXVlc3RlZCwgYnV0IGRlbmllZCwKKyAgIHRoZW4gcmV0dXJuIGEgWl9CVUZfRVJST1IgZnJvbSBpbmZsYXRlQmFjaygpLiAqLworI2RlZmluZSBQVUxMKCkgXAorICAgIGRvIHsgXAorICAgICAgICBpZiAoaGF2ZSA9PSAwKSB7IFwKKyAgICAgICAgICAgIGhhdmUgPSBpbihpbl9kZXNjLCAmbmV4dCk7IFwKKyAgICAgICAgICAgIGlmIChoYXZlID09IDApIHsgXAorICAgICAgICAgICAgICAgIG5leHQgPSBaX05VTEw7IFwKKyAgICAgICAgICAgICAgICByZXQgPSBaX0JVRl9FUlJPUjsgXAorICAgICAgICAgICAgICAgIGdvdG8gaW5mX2xlYXZlOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkKKworLyogR2V0IGEgYnl0ZSBvZiBpbnB1dCBpbnRvIHRoZSBiaXQgYWNjdW11bGF0b3IsIG9yIHJldHVybiBmcm9tIGluZmxhdGVCYWNrKCkKKyAgIHdpdGggYW4gZXJyb3IgaWYgdGhlcmUgaXMgbm8gaW5wdXQgYXZhaWxhYmxlLiAqLworI2RlZmluZSBQVUxMQllURSgpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgUFVMTCgpOyBcCisgICAgICAgIGhhdmUtLTsgXAorICAgICAgICBob2xkICs9ICh1bnNpZ25lZCBsb25nKSgqbmV4dCsrKSA8PCBiaXRzOyBcCisgICAgICAgIGJpdHMgKz0gODsgXAorICAgIH0gd2hpbGUgKDApCisKKy8qIEFzc3VyZSB0aGF0IHRoZXJlIGFyZSBhdCBsZWFzdCBuIGJpdHMgaW4gdGhlIGJpdCBhY2N1bXVsYXRvci4gIElmIHRoZXJlIGlzCisgICBub3QgZW5vdWdoIGF2YWlsYWJsZSBpbnB1dCB0byBkbyB0aGF0LCB0aGVuIHJldHVybiBmcm9tIGluZmxhdGVCYWNrKCkgd2l0aAorICAgYW4gZXJyb3IuICovCisjZGVmaW5lIE5FRURCSVRTKG4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgd2hpbGUgKGJpdHMgPCAodW5zaWduZWQpKG4pKSBcCisgICAgICAgICAgICBQVUxMQllURSgpOyBcCisgICAgfSB3aGlsZSAoMCkKKworLyogUmV0dXJuIHRoZSBsb3cgbiBiaXRzIG9mIHRoZSBiaXQgYWNjdW11bGF0b3IgKG4gPCAxNikgKi8KKyNkZWZpbmUgQklUUyhuKSBcCisgICAgKCh1bnNpZ25lZClob2xkICYgKCgxVSA8PCAobikpIC0gMSkpCisKKy8qIFJlbW92ZSBuIGJpdHMgZnJvbSB0aGUgYml0IGFjY3VtdWxhdG9yICovCisjZGVmaW5lIERST1BCSVRTKG4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaG9sZCA+Pj0gKG4pOyBcCisgICAgICAgIGJpdHMgLT0gKHVuc2lnbmVkKShuKTsgXAorICAgIH0gd2hpbGUgKDApCisKKy8qIFJlbW92ZSB6ZXJvIHRvIHNldmVuIGJpdHMgYXMgbmVlZGVkIHRvIGdvIHRvIGEgYnl0ZSBib3VuZGFyeSAqLworI2RlZmluZSBCWVRFQklUUygpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaG9sZCA+Pj0gYml0cyAmIDc7IFwKKyAgICAgICAgYml0cyAtPSBiaXRzICYgNzsgXAorICAgIH0gd2hpbGUgKDApCisKKy8qIEFzc3VyZSB0aGF0IHNvbWUgb3V0cHV0IHNwYWNlIGlzIGF2YWlsYWJsZSwgYnkgd3JpdGluZyBvdXQgdGhlIHdpbmRvdworICAgaWYgaXQncyBmdWxsLiAgSWYgdGhlIHdyaXRlIGZhaWxzLCByZXR1cm4gZnJvbSBpbmZsYXRlQmFjaygpIHdpdGggYQorICAgWl9CVUZfRVJST1IuICovCisjZGVmaW5lIFJPT00oKSBcCisgICAgZG8geyBcCisgICAgICAgIGlmIChsZWZ0ID09IDApIHsgXAorICAgICAgICAgICAgcHV0ID0gc3RhdGUtPndpbmRvdzsgXAorICAgICAgICAgICAgbGVmdCA9IHN0YXRlLT53c2l6ZTsgXAorICAgICAgICAgICAgc3RhdGUtPndoYXZlID0gbGVmdDsgXAorICAgICAgICAgICAgaWYgKG91dChvdXRfZGVzYywgcHV0LCBsZWZ0KSkgeyBcCisgICAgICAgICAgICAgICAgcmV0ID0gWl9CVUZfRVJST1I7IFwKKyAgICAgICAgICAgICAgICBnb3RvIGluZl9sZWF2ZTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUgKDApCisKKy8qCisgICBzdHJtIHByb3ZpZGVzIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmdW5jdGlvbnMgYW5kIHdpbmRvdyBidWZmZXIgb24gaW5wdXQsCisgICBhbmQgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gdGhlIHVudXNlZCBpbnB1dCBvbiByZXR1cm4uICBGb3IgWl9EQVRBX0VSUk9SCisgICByZXR1cm5zLCBzdHJtIHdpbGwgYWxzbyBwcm92aWRlIGFuIGVycm9yIG1lc3NhZ2UuCisKKyAgIGluKCkgYW5kIG91dCgpIGFyZSB0aGUgY2FsbC1iYWNrIGlucHV0IGFuZCBvdXRwdXQgZnVuY3Rpb25zLiAgV2hlbgorICAgaW5mbGF0ZUJhY2soKSBuZWVkcyBtb3JlIGlucHV0LCBpdCBjYWxscyBpbigpLiAgV2hlbiBpbmZsYXRlQmFjaygpIGhhcworICAgZmlsbGVkIHRoZSB3aW5kb3cgd2l0aCBvdXRwdXQsIG9yIHdoZW4gaXQgY29tcGxldGVzIHdpdGggZGF0YSBpbiB0aGUKKyAgIHdpbmRvdywgaXQgY2FsbHMgb3V0KCkgdG8gd3JpdGUgb3V0IHRoZSBkYXRhLiAgVGhlIGFwcGxpY2F0aW9uIG11c3Qgbm90CisgICBjaGFuZ2UgdGhlIHByb3ZpZGVkIGlucHV0IHVudGlsIGluKCkgaXMgY2FsbGVkIGFnYWluIG9yIGluZmxhdGVCYWNrKCkKKyAgIHJldHVybnMuICBUaGUgYXBwbGljYXRpb24gbXVzdCBub3QgY2hhbmdlIHRoZSB3aW5kb3cvb3V0cHV0IGJ1ZmZlciB1bnRpbAorICAgaW5mbGF0ZUJhY2soKSByZXR1cm5zLgorCisgICBpbigpIGFuZCBvdXQoKSBhcmUgY2FsbGVkIHdpdGggYSBkZXNjcmlwdG9yIHBhcmFtZXRlciBwcm92aWRlZCBpbiB0aGUKKyAgIGluZmxhdGVCYWNrKCkgY2FsbC4gIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHN0cnVjdHVyZSB0aGF0IHByb3ZpZGVzIHRoZQorICAgaW5mb3JtYXRpb24gcmVxdWlyZWQgdG8gZG8gdGhlIHJlYWQgb3Igd3JpdGUsIGFzIHdlbGwgYXMgYWNjdW11bGF0ZWQKKyAgIGluZm9ybWF0aW9uIG9uIHRoZSBpbnB1dCBhbmQgb3V0cHV0IHN1Y2ggYXMgdG90YWxzIGFuZCBjaGVjayB2YWx1ZXMuCisKKyAgIGluKCkgc2hvdWxkIHJldHVybiB6ZXJvIG9uIGZhaWx1cmUuICBvdXQoKSBzaG91bGQgcmV0dXJuIG5vbi16ZXJvIG9uCisgICBmYWlsdXJlLiAgSWYgZWl0aGVyIGluKCkgb3Igb3V0KCkgZmFpbHMsIHRoYW4gaW5mbGF0ZUJhY2soKSByZXR1cm5zIGEKKyAgIFpfQlVGX0VSUk9SLiAgc3RybS0+bmV4dF9pbiBjYW4gYmUgY2hlY2tlZCBmb3IgWl9OVUxMIHRvIHNlZSB3aGV0aGVyIGl0CisgICB3YXMgaW4oKSBvciBvdXQoKSB0aGF0IGNhdXNlZCBpbiB0aGUgZXJyb3IuICBPdGhlcndpc2UsICBpbmZsYXRlQmFjaygpCisgICByZXR1cm5zIFpfU1RSRUFNX0VORCBvbiBzdWNjZXNzLCBaX0RBVEFfRVJST1IgZm9yIGFuIGRlZmxhdGUgZm9ybWF0CisgICBlcnJvciwgb3IgWl9NRU1fRVJST1IgaWYgaXQgY291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIHN0YXRlLgorICAgaW5mbGF0ZUJhY2soKSBjYW4gYWxzbyByZXR1cm4gWl9TVFJFQU1fRVJST1IgaWYgdGhlIGlucHV0IHBhcmFtZXRlcnMKKyAgIGFyZSBub3QgY29ycmVjdCwgaS5lLiBzdHJtIGlzIFpfTlVMTCBvciB0aGUgc3RhdGUgd2FzIG5vdCBpbml0aWFsaXplZC4KKyAqLworaW50IFpFWFBPUlQgaW5mbGF0ZUJhY2soCisgICAgel9zdHJlYW1wIHN0cm0sCisgICAgaW5fZnVuYyBpbiwKKyAgICB2b2lkIEZBUiAqaW5fZGVzYywKKyAgICBvdXRfZnVuYyBvdXQsCisgICAgdm9pZCBGQVIgKm91dF9kZXNjKQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisgICAgel9jb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqbmV4dDsgICAgLyogbmV4dCBpbnB1dCAqLworICAgIHVuc2lnbmVkIGNoYXIgRkFSICpwdXQ7ICAgICAvKiBuZXh0IG91dHB1dCAqLworICAgIHVuc2lnbmVkIGhhdmUsIGxlZnQ7ICAgICAgICAvKiBhdmFpbGFibGUgaW5wdXQgYW5kIG91dHB1dCAqLworICAgIHVuc2lnbmVkIGxvbmcgaG9sZDsgICAgICAgICAvKiBiaXQgYnVmZmVyICovCisgICAgdW5zaWduZWQgYml0czsgICAgICAgICAgICAgIC8qIGJpdHMgaW4gYml0IGJ1ZmZlciAqLworICAgIHVuc2lnbmVkIGNvcHk7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2Ygc3RvcmVkIG9yIG1hdGNoIGJ5dGVzIHRvIGNvcHkgKi8KKyAgICB1bnNpZ25lZCBjaGFyIEZBUiAqZnJvbTsgICAgLyogd2hlcmUgdG8gY29weSBtYXRjaCBieXRlcyBmcm9tICovCisgICAgY29kZSBoZXJlOyAgICAgICAgICAgICAgICAgIC8qIGN1cnJlbnQgZGVjb2RpbmcgdGFibGUgZW50cnkgKi8KKyAgICBjb2RlIGxhc3Q7ICAgICAgICAgICAgICAgICAgLyogcGFyZW50IHRhYmxlIGVudHJ5ICovCisgICAgdW5zaWduZWQgbGVuOyAgICAgICAgICAgICAgIC8qIGxlbmd0aCB0byBjb3B5IGZvciByZXBlYXRzLCBiaXRzIHRvIGRyb3AgKi8KKyAgICBpbnQgcmV0OyAgICAgICAgICAgICAgICAgICAgLyogcmV0dXJuIGNvZGUgKi8KKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgb3JkZXJbMTldID0gLyogcGVybXV0YXRpb24gb2YgY29kZSBsZW5ndGhzICovCisgICAgICAgIHsxNiwgMTcsIDE4LCAwLCA4LCA3LCA5LCA2LCAxMCwgNSwgMTEsIDQsIDEyLCAzLCAxMywgMiwgMTQsIDEsIDE1fTsKKworICAgIC8qIENoZWNrIHRoYXQgdGhlIHN0cm0gZXhpc3RzIGFuZCB0aGF0IHRoZSBzdGF0ZSB3YXMgaW5pdGlhbGl6ZWQgKi8KKyAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMKQorICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CisKKyAgICAvKiBSZXNldCB0aGUgc3RhdGUgKi8KKyAgICBzdHJtLT5tc2cgPSBaX05VTEw7CisgICAgc3RhdGUtPm1vZGUgPSBUWVBFOworICAgIHN0YXRlLT5sYXN0ID0gMDsKKyAgICBzdGF0ZS0+d2hhdmUgPSAwOworICAgIG5leHQgPSBzdHJtLT5uZXh0X2luOworICAgIGhhdmUgPSBuZXh0ICE9IFpfTlVMTCA/IHN0cm0tPmF2YWlsX2luIDogMDsKKyAgICBob2xkID0gMDsKKyAgICBiaXRzID0gMDsKKyAgICBwdXQgPSBzdGF0ZS0+d2luZG93OworICAgIGxlZnQgPSBzdGF0ZS0+d3NpemU7CisKKyAgICAvKiBJbmZsYXRlIHVudGlsIGVuZCBvZiBibG9jayBtYXJrZWQgYXMgbGFzdCAqLworICAgIGZvciAoOzspCisgICAgICAgIHN3aXRjaCAoc3RhdGUtPm1vZGUpIHsKKyAgICAgICAgY2FzZSBUWVBFOgorICAgICAgICAgICAgLyogZGV0ZXJtaW5lIGFuZCBkaXNwYXRjaCBibG9jayB0eXBlICovCisgICAgICAgICAgICBpZiAoc3RhdGUtPmxhc3QpIHsKKyAgICAgICAgICAgICAgICBCWVRFQklUUygpOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gRE9ORTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE5FRURCSVRTKDMpOworICAgICAgICAgICAgc3RhdGUtPmxhc3QgPSBCSVRTKDEpOworICAgICAgICAgICAgRFJPUEJJVFMoMSk7CisgICAgICAgICAgICBzd2l0Y2ggKEJJVFMoMikpIHsKKyAgICAgICAgICAgIGNhc2UgMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0b3JlZCBibG9jayAqLworICAgICAgICAgICAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICAgIHN0b3JlZCBibG9jayVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxhc3QgPyAiIChsYXN0KSIgOiAiIikpOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gU1RPUkVEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZml4ZWQgYmxvY2sgKi8KKyAgICAgICAgICAgICAgICBmaXhlZHRhYmxlcyhzdGF0ZSk7CisgICAgICAgICAgICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgZml4ZWQgY29kZXMgYmxvY2slc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5sYXN0ID8gIiAobGFzdCkiIDogIiIpKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IExFTjsgICAgICAgICAgICAgIC8qIGRlY29kZSBjb2RlcyAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZHluYW1pYyBibG9jayAqLworICAgICAgICAgICAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICAgIGR5bmFtaWMgY29kZXMgYmxvY2slc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5sYXN0ID8gIiAobGFzdCkiIDogIiIpKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IFRBQkxFOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgYmxvY2sgdHlwZSI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBEUk9QQklUUygyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgU1RPUkVEOgorICAgICAgICAgICAgLyogZ2V0IGFuZCB2ZXJpZnkgc3RvcmVkIGJsb2NrIGxlbmd0aCAqLworICAgICAgICAgICAgQllURUJJVFMoKTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogZ28gdG8gYnl0ZSBib3VuZGFyeSAqLworICAgICAgICAgICAgTkVFREJJVFMoMzIpOworICAgICAgICAgICAgaWYgKChob2xkICYgMHhmZmZmKSAhPSAoKGhvbGQgPj4gMTYpIF4gMHhmZmZmKSkgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCA9ICh1bnNpZ25lZClob2xkICYgMHhmZmZmOworICAgICAgICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICBzdG9yZWQgbGVuZ3RoICV1XG4iLAorICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bGVuZ3RoKSk7CisgICAgICAgICAgICBJTklUQklUUygpOworCisgICAgICAgICAgICAvKiBjb3B5IHN0b3JlZCBibG9jayBmcm9tIGlucHV0IHRvIG91dHB1dCAqLworICAgICAgICAgICAgd2hpbGUgKHN0YXRlLT5sZW5ndGggIT0gMCkgeworICAgICAgICAgICAgICAgIGNvcHkgPSBzdGF0ZS0+bGVuZ3RoOworICAgICAgICAgICAgICAgIFBVTEwoKTsKKyAgICAgICAgICAgICAgICBST09NKCk7CisgICAgICAgICAgICAgICAgaWYgKGNvcHkgPiBoYXZlKSBjb3B5ID0gaGF2ZTsKKyAgICAgICAgICAgICAgICBpZiAoY29weSA+IGxlZnQpIGNvcHkgPSBsZWZ0OworICAgICAgICAgICAgICAgIHptZW1jcHkocHV0LCBuZXh0LCBjb3B5KTsKKyAgICAgICAgICAgICAgICBoYXZlIC09IGNvcHk7CisgICAgICAgICAgICAgICAgbmV4dCArPSBjb3B5OworICAgICAgICAgICAgICAgIGxlZnQgLT0gY29weTsKKyAgICAgICAgICAgICAgICBwdXQgKz0gY29weTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bGVuZ3RoIC09IGNvcHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBUcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgIHN0b3JlZCBlbmRcbiIpKTsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gVFlQRTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgVEFCTEU6CisgICAgICAgICAgICAvKiBnZXQgZHluYW1pYyB0YWJsZSBlbnRyaWVzIGRlc2NyaXB0b3IgKi8KKyAgICAgICAgICAgIE5FRURCSVRTKDE0KTsKKyAgICAgICAgICAgIHN0YXRlLT5ubGVuID0gQklUUyg1KSArIDI1NzsKKyAgICAgICAgICAgIERST1BCSVRTKDUpOworICAgICAgICAgICAgc3RhdGUtPm5kaXN0ID0gQklUUyg1KSArIDE7CisgICAgICAgICAgICBEUk9QQklUUyg1KTsKKyAgICAgICAgICAgIHN0YXRlLT5uY29kZSA9IEJJVFMoNCkgKyA0OworICAgICAgICAgICAgRFJPUEJJVFMoNCk7CisjaWZuZGVmIFBLWklQX0JVR19XT1JLQVJPVU5ECisgICAgICAgICAgICBpZiAoc3RhdGUtPm5sZW4gPiAyODYgfHwgc3RhdGUtPm5kaXN0ID4gMzApIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJ0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scyI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgdGFibGUgc2l6ZXMgb2tcbiIpKTsKKworICAgICAgICAgICAgLyogZ2V0IGNvZGUgbGVuZ3RoIGNvZGUgbGVuZ3RocyAobm90IGEgdHlwbykgKi8KKyAgICAgICAgICAgIHN0YXRlLT5oYXZlID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChzdGF0ZS0+aGF2ZSA8IHN0YXRlLT5uY29kZSkgeworICAgICAgICAgICAgICAgIE5FRURCSVRTKDMpOworICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5zW29yZGVyW3N0YXRlLT5oYXZlKytdXSA9ICh1bnNpZ25lZCBzaG9ydClCSVRTKDMpOworICAgICAgICAgICAgICAgIERST1BCSVRTKDMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2hpbGUgKHN0YXRlLT5oYXZlIDwgMTkpCisgICAgICAgICAgICAgICAgc3RhdGUtPmxlbnNbb3JkZXJbc3RhdGUtPmhhdmUrK11dID0gMDsKKyAgICAgICAgICAgIHN0YXRlLT5uZXh0ID0gc3RhdGUtPmNvZGVzOworICAgICAgICAgICAgc3RhdGUtPmxlbmNvZGUgPSAoY29kZSBjb25zdCBGQVIgKikoc3RhdGUtPm5leHQpOworICAgICAgICAgICAgc3RhdGUtPmxlbmJpdHMgPSA3OworICAgICAgICAgICAgcmV0ID0gaW5mbGF0ZV90YWJsZShDT0RFUywgc3RhdGUtPmxlbnMsIDE5LCAmKHN0YXRlLT5uZXh0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihzdGF0ZS0+bGVuYml0cyksIHN0YXRlLT53b3JrKTsKKyAgICAgICAgICAgIGlmIChyZXQpIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICBjb2RlIGxlbmd0aHMgb2tcbiIpKTsKKworICAgICAgICAgICAgLyogZ2V0IGxlbmd0aCBhbmQgZGlzdGFuY2UgY29kZSBjb2RlIGxlbmd0aHMgKi8KKyAgICAgICAgICAgIHN0YXRlLT5oYXZlID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChzdGF0ZS0+aGF2ZSA8IHN0YXRlLT5ubGVuICsgc3RhdGUtPm5kaXN0KSB7CisgICAgICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgICAgICBoZXJlID0gc3RhdGUtPmxlbmNvZGVbQklUUyhzdGF0ZS0+bGVuYml0cyldOworICAgICAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkKShoZXJlLmJpdHMpIDw9IGJpdHMpIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBQVUxMQllURSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaGVyZS52YWwgPCAxNikgeworICAgICAgICAgICAgICAgICAgICBEUk9QQklUUyhoZXJlLmJpdHMpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bGVuc1tzdGF0ZS0+aGF2ZSsrXSA9IGhlcmUudmFsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhlcmUudmFsID09IDE2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBORUVEQklUUyhoZXJlLmJpdHMgKyAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIERST1BCSVRTKGhlcmUuYml0cyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPmhhdmUgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgYml0IGxlbmd0aCByZXBlYXQiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gKHVuc2lnbmVkKShzdGF0ZS0+bGVuc1tzdGF0ZS0+aGF2ZSAtIDFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkgPSAzICsgQklUUygyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIERST1BCSVRTKDIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGhlcmUudmFsID09IDE3KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBORUVEQklUUyhoZXJlLmJpdHMgKyAzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIERST1BCSVRTKGhlcmUuYml0cyk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgY29weSA9IDMgKyBCSVRTKDMpOworICAgICAgICAgICAgICAgICAgICAgICAgRFJPUEJJVFMoMyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBORUVEQklUUyhoZXJlLmJpdHMgKyA3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIERST1BCSVRTKGhlcmUuYml0cyk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgY29weSA9IDExICsgQklUUyg3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIERST1BCSVRTKDcpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS0+aGF2ZSArIGNvcHkgPiBzdGF0ZS0+bmxlbiArIHN0YXRlLT5uZGlzdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCI7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChjb3B5LS0pCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bGVuc1tzdGF0ZS0+aGF2ZSsrXSA9ICh1bnNpZ25lZCBzaG9ydClsZW47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBoYW5kbGUgZXJyb3IgYnJlYWtzIGluIHdoaWxlICovCisgICAgICAgICAgICBpZiAoc3RhdGUtPm1vZGUgPT0gQkFEKSBicmVhazsKKworICAgICAgICAgICAgLyogY2hlY2sgZm9yIGVuZC1vZi1ibG9jayBjb2RlIChiZXR0ZXIgaGF2ZSBvbmUpICovCisgICAgICAgICAgICBpZiAoc3RhdGUtPmxlbnNbMjU2XSA9PSAwKSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrIjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogYnVpbGQgY29kZSB0YWJsZXMgLS0gbm90ZTogZG8gbm90IGNoYW5nZSB0aGUgbGVuYml0cyBvciBkaXN0Yml0cworICAgICAgICAgICAgICAgdmFsdWVzIGhlcmUgKDkgYW5kIDYpIHdpdGhvdXQgcmVhZGluZyB0aGUgY29tbWVudHMgaW4gaW5mdHJlZXMuaAorICAgICAgICAgICAgICAgY29uY2VybmluZyB0aGUgRU5PVUdIIGNvbnN0YW50cywgd2hpY2ggZGVwZW5kIG9uIHRob3NlIHZhbHVlcyAqLworICAgICAgICAgICAgc3RhdGUtPm5leHQgPSBzdGF0ZS0+Y29kZXM7CisgICAgICAgICAgICBzdGF0ZS0+bGVuY29kZSA9IChjb2RlIGNvbnN0IEZBUiAqKShzdGF0ZS0+bmV4dCk7CisgICAgICAgICAgICBzdGF0ZS0+bGVuYml0cyA9IDk7CisgICAgICAgICAgICByZXQgPSBpbmZsYXRlX3RhYmxlKExFTlMsIHN0YXRlLT5sZW5zLCBzdGF0ZS0+bmxlbiwgJihzdGF0ZS0+bmV4dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoc3RhdGUtPmxlbmJpdHMpLCBzdGF0ZS0+d29yayk7CisgICAgICAgICAgICBpZiAocmV0KSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBsaXRlcmFsL2xlbmd0aHMgc2V0IjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlLT5kaXN0Y29kZSA9IChjb2RlIGNvbnN0IEZBUiAqKShzdGF0ZS0+bmV4dCk7CisgICAgICAgICAgICBzdGF0ZS0+ZGlzdGJpdHMgPSA2OworICAgICAgICAgICAgcmV0ID0gaW5mbGF0ZV90YWJsZShESVNUUywgc3RhdGUtPmxlbnMgKyBzdGF0ZS0+bmxlbiwgc3RhdGUtPm5kaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoc3RhdGUtPm5leHQpLCAmKHN0YXRlLT5kaXN0Yml0cyksIHN0YXRlLT53b3JrKTsKKyAgICAgICAgICAgIGlmIChyZXQpIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGRpc3RhbmNlcyBzZXQiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICBjb2RlcyBva1xuIikpOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBMRU47CisgICAgICAgICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKworICAgICAgICBjYXNlIExFTjoKKyAgICAgICAgICAgIC8qIHVzZSBpbmZsYXRlX2Zhc3QoKSBpZiB3ZSBoYXZlIGVub3VnaCBpbnB1dCBhbmQgb3V0cHV0ICovCisgICAgICAgICAgICBpZiAoaGF2ZSA+PSA2ICYmIGxlZnQgPj0gMjU4KSB7CisgICAgICAgICAgICAgICAgUkVTVE9SRSgpOworICAgICAgICAgICAgICAgIGlmIChzdGF0ZS0+d2hhdmUgPCBzdGF0ZS0+d3NpemUpCisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT53aGF2ZSA9IHN0YXRlLT53c2l6ZSAtIGxlZnQ7CisgICAgICAgICAgICAgICAgaW5mbGF0ZV9mYXN0KHN0cm0sIHN0YXRlLT53c2l6ZSk7CisgICAgICAgICAgICAgICAgTE9BRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBnZXQgYSBsaXRlcmFsLCBsZW5ndGgsIG9yIGVuZC1vZi1ibG9jayBjb2RlICovCisgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgaGVyZSA9IHN0YXRlLT5sZW5jb2RlW0JJVFMoc3RhdGUtPmxlbmJpdHMpXTsKKyAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkKShoZXJlLmJpdHMpIDw9IGJpdHMpIGJyZWFrOworICAgICAgICAgICAgICAgIFBVTExCWVRFKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaGVyZS5vcCAmJiAoaGVyZS5vcCAmIDB4ZjApID09IDApIHsKKyAgICAgICAgICAgICAgICBsYXN0ID0gaGVyZTsKKyAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgIGhlcmUgPSBzdGF0ZS0+bGVuY29kZVtsYXN0LnZhbCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJJVFMobGFzdC5iaXRzICsgbGFzdC5vcCkgPj4gbGFzdC5iaXRzKV07CisgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQpKGxhc3QuYml0cyArIGhlcmUuYml0cykgPD0gYml0cykgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIFBVTExCWVRFKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIERST1BCSVRTKGxhc3QuYml0cyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBEUk9QQklUUyhoZXJlLmJpdHMpOworICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCA9ICh1bnNpZ25lZCloZXJlLnZhbDsKKworICAgICAgICAgICAgLyogcHJvY2VzcyBsaXRlcmFsICovCisgICAgICAgICAgICBpZiAoaGVyZS5vcCA9PSAwKSB7CisgICAgICAgICAgICAgICAgVHJhY2V2digoc3RkZXJyLCBoZXJlLnZhbCA+PSAweDIwICYmIGhlcmUudmFsIDwgMHg3ZiA/CisgICAgICAgICAgICAgICAgICAgICAgICAiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsICclYydcbiIgOgorICAgICAgICAgICAgICAgICAgICAgICAgImluZmxhdGU6ICAgICAgICAgbGl0ZXJhbCAweCUwMnhcbiIsIGhlcmUudmFsKSk7CisgICAgICAgICAgICAgICAgUk9PTSgpOworICAgICAgICAgICAgICAgICpwdXQrKyA9ICh1bnNpZ25lZCBjaGFyKShzdGF0ZS0+bGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBsZWZ0LS07CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBMRU47CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIHByb2Nlc3MgZW5kIG9mIGJsb2NrICovCisgICAgICAgICAgICBpZiAoaGVyZS5vcCAmIDMyKSB7CisgICAgICAgICAgICAgICAgVHJhY2V2digoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgICBlbmQgb2YgYmxvY2tcbiIpKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IFRZUEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIGludmFsaWQgY29kZSAqLworICAgICAgICAgICAgaWYgKGhlcmUub3AgJiA2NCkgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIGxlbmd0aCBjb2RlIC0tIGdldCBleHRyYSBiaXRzLCBpZiBhbnkgKi8KKyAgICAgICAgICAgIHN0YXRlLT5leHRyYSA9ICh1bnNpZ25lZCkoaGVyZS5vcCkgJiAxNTsKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+ZXh0cmEgIT0gMCkgeworICAgICAgICAgICAgICAgIE5FRURCSVRTKHN0YXRlLT5leHRyYSk7CisgICAgICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCArPSBCSVRTKHN0YXRlLT5leHRyYSk7CisgICAgICAgICAgICAgICAgRFJPUEJJVFMoc3RhdGUtPmV4dHJhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFRyYWNldnYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgICAgbGVuZ3RoICV1XG4iLCBzdGF0ZS0+bGVuZ3RoKSk7CisKKyAgICAgICAgICAgIC8qIGdldCBkaXN0YW5jZSBjb2RlICovCisgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgaGVyZSA9IHN0YXRlLT5kaXN0Y29kZVtCSVRTKHN0YXRlLT5kaXN0Yml0cyldOworICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQpKGhlcmUuYml0cykgPD0gYml0cykgYnJlYWs7CisgICAgICAgICAgICAgICAgUFVMTEJZVEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoaGVyZS5vcCAmIDB4ZjApID09IDApIHsKKyAgICAgICAgICAgICAgICBsYXN0ID0gaGVyZTsKKyAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgIGhlcmUgPSBzdGF0ZS0+ZGlzdGNvZGVbbGFzdC52YWwgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCSVRTKGxhc3QuYml0cyArIGxhc3Qub3ApID4+IGxhc3QuYml0cyldOworICAgICAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkKShsYXN0LmJpdHMgKyBoZXJlLmJpdHMpIDw9IGJpdHMpIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBQVUxMQllURSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBEUk9QQklUUyhsYXN0LmJpdHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRFJPUEJJVFMoaGVyZS5iaXRzKTsKKyAgICAgICAgICAgIGlmIChoZXJlLm9wICYgNjQpIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGRpc3RhbmNlIGNvZGUiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGUtPm9mZnNldCA9ICh1bnNpZ25lZCloZXJlLnZhbDsKKworICAgICAgICAgICAgLyogZ2V0IGRpc3RhbmNlIGV4dHJhIGJpdHMsIGlmIGFueSAqLworICAgICAgICAgICAgc3RhdGUtPmV4dHJhID0gKHVuc2lnbmVkKShoZXJlLm9wKSAmIDE1OworICAgICAgICAgICAgaWYgKHN0YXRlLT5leHRyYSAhPSAwKSB7CisgICAgICAgICAgICAgICAgTkVFREJJVFMoc3RhdGUtPmV4dHJhKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+b2Zmc2V0ICs9IEJJVFMoc3RhdGUtPmV4dHJhKTsKKyAgICAgICAgICAgICAgICBEUk9QQklUUyhzdGF0ZS0+ZXh0cmEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0YXRlLT5vZmZzZXQgPiBzdGF0ZS0+d3NpemUgLSAoc3RhdGUtPndoYXZlIDwgc3RhdGUtPndzaXplID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgOiAwKSkgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFRyYWNldnYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgICAgZGlzdGFuY2UgJXVcbiIsIHN0YXRlLT5vZmZzZXQpKTsKKworICAgICAgICAgICAgLyogY29weSBtYXRjaCBmcm9tIHdpbmRvdyB0byBvdXRwdXQgKi8KKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBST09NKCk7CisgICAgICAgICAgICAgICAgY29weSA9IHN0YXRlLT53c2l6ZSAtIHN0YXRlLT5vZmZzZXQ7CisgICAgICAgICAgICAgICAgaWYgKGNvcHkgPCBsZWZ0KSB7CisgICAgICAgICAgICAgICAgICAgIGZyb20gPSBwdXQgKyBjb3B5OworICAgICAgICAgICAgICAgICAgICBjb3B5ID0gbGVmdCAtIGNvcHk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBmcm9tID0gcHV0IC0gc3RhdGUtPm9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgY29weSA9IGxlZnQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjb3B5ID4gc3RhdGUtPmxlbmd0aCkgY29weSA9IHN0YXRlLT5sZW5ndGg7CisgICAgICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCAtPSBjb3B5OworICAgICAgICAgICAgICAgIGxlZnQgLT0gY29weTsKKyAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICpwdXQrKyA9ICpmcm9tKys7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1jb3B5KTsKKyAgICAgICAgICAgIH0gd2hpbGUgKHN0YXRlLT5sZW5ndGggIT0gMCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIERPTkU6CisgICAgICAgICAgICAvKiBpbmZsYXRlIHN0cmVhbSB0ZXJtaW5hdGVkIHByb3Blcmx5ICovCisgICAgICAgICAgICByZXQgPSBaX1NUUkVBTV9FTkQ7CisgICAgICAgICAgICBnb3RvIGluZl9sZWF2ZTsKKworICAgICAgICBjYXNlIEJBRDoKKyAgICAgICAgICAgIHJldCA9IFpfREFUQV9FUlJPUjsKKyAgICAgICAgICAgIGdvdG8gaW5mX2xlYXZlOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvKiBjYW4ndCBoYXBwZW4sIGJ1dCBtYWtlcyBjb21waWxlcnMgaGFwcHkgKi8KKyAgICAgICAgICAgIHJldCA9IFpfU1RSRUFNX0VSUk9SOworICAgICAgICAgICAgZ290byBpbmZfbGVhdmU7CisgICAgICAgIH0KKworICAgIC8qIFdyaXRlIGxlZnRvdmVyIG91dHB1dCBhbmQgcmV0dXJuIHVudXNlZCBpbnB1dCAqLworICBpbmZfbGVhdmU6CisgICAgaWYgKGxlZnQgPCBzdGF0ZS0+d3NpemUpIHsKKyAgICAgICAgaWYgKG91dChvdXRfZGVzYywgc3RhdGUtPndpbmRvdywgc3RhdGUtPndzaXplIC0gbGVmdCkgJiYKKyAgICAgICAgICAgIHJldCA9PSBaX1NUUkVBTV9FTkQpCisgICAgICAgICAgICByZXQgPSBaX0JVRl9FUlJPUjsKKyAgICB9CisgICAgc3RybS0+bmV4dF9pbiA9IG5leHQ7CisgICAgc3RybS0+YXZhaWxfaW4gPSBoYXZlOworICAgIHJldHVybiByZXQ7Cit9CisKK2ludCBaRVhQT1JUIGluZmxhdGVCYWNrRW5kKAorICAgIHpfc3RyZWFtcCBzdHJtKQoreworICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwgfHwgc3RybS0+emZyZWUgPT0gKGZyZWVfZnVuYykwKQorICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgWkZSRUUoc3RybSwgc3RybS0+c3RhdGUpOworICAgIHN0cm0tPnN0YXRlID0gWl9OVUxMOworICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogZW5kXG4iKSk7CisgICAgcmV0dXJuIFpfT0s7Cit9CmRpZmYgLS1naXQgYS9zcmMvZ3ppcC9pbmZibG9jay5jIGIvc3JjL2d6aXAvaW5mYmxvY2suYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI0ZjBjMi4uMDAwMDAwMAotLS0gYS9zcmMvZ3ppcC9pbmZibG9jay5jCisrKyAvZGV2L251bGwKQEAgLTEsMzkyICswLDAgQEAKLS8qIGluZmJsb2NrLmMgLS0gaW50ZXJwcmV0IGFuZCBwcm9jZXNzIGJsb2NrIHR5cGVzIHRvIGxhc3QgYmxvY2sKLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDAyIE1hcmsgQWRsZXIKLSAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKLSAqLwotCi0jaW5jbHVkZSAienV0aWwuaCIKLSNpbmNsdWRlICJpbmZibG9jay5oIgotI2luY2x1ZGUgImluZnRyZWVzLmgiCi0jaW5jbHVkZSAiaW5mY29kZXMuaCIKLSNpbmNsdWRlICJpbmZ1dGlsLmgiCi0KLQotLyogc2ltcGxpZnkgdGhlIHVzZSBvZiB0aGUgaW5mbGF0ZV9odWZ0IHR5cGUgd2l0aCBzb21lIGRlZmluZXMgKi8KLSNkZWZpbmUgZXhvcCB3b3JkLndoYXQuRXhvcAotI2RlZmluZSBiaXRzIHdvcmQud2hhdC5CaXRzCi0KLS8qIFRhYmxlIGZvciBkZWZsYXRlIGZyb20gUEtaSVAncyBhcHBub3RlLnR4dC4gKi8KLWxvY2FsIGNvbnN0IHVJbnQgYm9yZGVyW10gPSB7IC8qIE9yZGVyIG9mIHRoZSBiaXQgbGVuZ3RoIGNvZGUgbGVuZ3RocyAqLwotICAgICAgICAxNiwgMTcsIDE4LCAwLCA4LCA3LCA5LCA2LCAxMCwgNSwgMTEsIDQsIDEyLCAzLCAxMywgMiwgMTQsIDEsIDE1fTsKLQotLyoKLSAgIE5vdGVzIGJleW9uZCB0aGUgMS45M2EgYXBwbm90ZS50eHQ6Ci0KLSAgIDEuIERpc3RhbmNlIHBvaW50ZXJzIG5ldmVyIHBvaW50IGJlZm9yZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBvdXRwdXQKLSAgICAgIHN0cmVhbS4KLSAgIDIuIERpc3RhbmNlIHBvaW50ZXJzIGNhbiBwb2ludCBiYWNrIGFjcm9zcyBibG9ja3MsIHVwIHRvIDMyayBhd2F5LgotICAgMy4gVGhlcmUgaXMgYW4gaW1wbGllZCBtYXhpbXVtIG9mIDcgYml0cyBmb3IgdGhlIGJpdCBsZW5ndGggdGFibGUgYW5kCi0gICAgICAxNSBiaXRzIGZvciB0aGUgYWN0dWFsIGRhdGEuCi0gICA0LiBJZiBvbmx5IG9uZSBjb2RlIGV4aXN0cywgdGhlbiBpdCBpcyBlbmNvZGVkIHVzaW5nIG9uZSBiaXQuICAoWmVybwotICAgICAgd291bGQgYmUgbW9yZSBlZmZpY2llbnQsIGJ1dCBwZXJoYXBzIGEgbGl0dGxlIGNvbmZ1c2luZy4pICBJZiB0d28KLSAgICAgIGNvZGVzIGV4aXN0LCB0aGV5IGFyZSBjb2RlZCB1c2luZyBvbmUgYml0IGVhY2ggKDAgYW5kIDEpLgotICAgNS4gVGhlcmUgaXMgbm8gd2F5IG9mIHNlbmRpbmcgemVybyBkaXN0YW5jZSBjb2Rlcy0tYSBkdW1teSBtdXN0IGJlCi0gICAgICBzZW50IGlmIHRoZXJlIGFyZSBub25lLiAgKEhpc3Rvcnk6IGEgcHJlIDIuMCB2ZXJzaW9uIG9mIFBLWklQIHdvdWxkCi0gICAgICBzdG9yZSBibG9ja3Mgd2l0aCBubyBkaXN0YW5jZSBjb2RlcywgYnV0IHRoaXMgd2FzIGRpc2NvdmVyZWQgdG8gYmUKLSAgICAgIHRvbyBoYXJzaCBhIGNyaXRlcmlvbi4pICBWYWxpZCBvbmx5IGZvciAxLjkzYS4gIDIuMDRjIGRvZXMgYWxsb3cKLSAgICAgIHplcm8gZGlzdGFuY2UgY29kZXMsIHdoaWNoIGlzIHNlbnQgYXMgb25lIGNvZGUgb2YgemVybyBiaXRzIGluCi0gICAgICBsZW5ndGguCi0gICA2LiBUaGVyZSBhcmUgdXAgdG8gMjg2IGxpdGVyYWwvbGVuZ3RoIGNvZGVzLiAgQ29kZSAyNTYgcmVwcmVzZW50cyB0aGUKLSAgICAgIGVuZC1vZi1ibG9jay4gIE5vdGUgaG93ZXZlciB0aGF0IHRoZSBzdGF0aWMgbGVuZ3RoIHRyZWUgZGVmaW5lcwotICAgICAgMjg4IGNvZGVzIGp1c3QgdG8gZmlsbCBvdXQgdGhlIEh1ZmZtYW4gY29kZXMuICBDb2RlcyAyODYgYW5kIDI4NwotICAgICAgY2Fubm90IGJlIHVzZWQgdGhvdWdoLCBzaW5jZSB0aGVyZSBpcyBubyBsZW5ndGggYmFzZSBvciBleHRyYSBiaXRzCi0gICAgICBkZWZpbmVkIGZvciB0aGVtLiAgU2ltaWxhcmlseSwgdGhlcmUgYXJlIHVwIHRvIDMwIGRpc3RhbmNlIGNvZGVzLgotICAgICAgSG93ZXZlciwgc3RhdGljIHRyZWVzIGRlZmluZSAzMiBjb2RlcyAoYWxsIDUgYml0cykgdG8gZmlsbCBvdXQgdGhlCi0gICAgICBIdWZmbWFuIGNvZGVzLCBidXQgdGhlIGxhc3QgdHdvIGhhZCBiZXR0ZXIgbm90IHNob3cgdXAgaW4gdGhlIGRhdGEuCi0gICA3LiBVbnppcCBjYW4gY2hlY2sgZHluYW1pYyBIdWZmbWFuIGJsb2NrcyBmb3IgY29tcGxldGUgY29kZSBzZXRzLgotICAgICAgVGhlIGV4Y2VwdGlvbiBpcyB0aGF0IGEgc2luZ2xlIGNvZGUgd291bGQgbm90IGJlIGNvbXBsZXRlIChzZWUgIzQpLgotICAgOC4gVGhlIGZpdmUgYml0cyBmb2xsb3dpbmcgdGhlIGJsb2NrIHR5cGUgaXMgcmVhbGx5IHRoZSBudW1iZXIgb2YKLSAgICAgIGxpdGVyYWwgY29kZXMgc2VudCBtaW51cyAyNTcuCi0gICA5LiBMZW5ndGggY29kZXMgOCwxNiwxNiBhcmUgaW50ZXJwcmV0ZWQgYXMgMTMgbGVuZ3RoIGNvZGVzIG9mIDggYml0cwotICAgICAgKDErNis2KS4gIFRoZXJlZm9yZSwgdG8gb3V0cHV0IHRocmVlIHRpbWVzIHRoZSBsZW5ndGgsIHlvdSBvdXRwdXQKLSAgICAgIHRocmVlIGNvZGVzICgxKzErMSksIHdoZXJlYXMgdG8gb3V0cHV0IGZvdXIgdGltZXMgdGhlIHNhbWUgbGVuZ3RoLAotICAgICAgeW91IG9ubHkgbmVlZCB0d28gY29kZXMgKDErMykuICBIbW0uCi0gIDEwLiBJbiB0aGUgdHJlZSByZWNvbnN0cnVjdGlvbiBhbGdvcml0aG0sIENvZGUgPSBDb2RlICsgSW5jcmVtZW50Ci0gICAgICBvbmx5IGlmIEJpdExlbmd0aChpKSBpcyBub3QgemVyby4gIChQcmV0dHkgb2J2aW91cy4pCi0gIDExLiBDb3JyZWN0aW9uOiA0IEJpdHM6ICMgb2YgQml0IExlbmd0aCBjb2RlcyAtIDQgICAgICg0IC0gMTkpCi0gIDEyLiBOb3RlOiBsZW5ndGggY29kZSAyODQgY2FuIHJlcHJlc2VudCAyMjctMjU4LCBidXQgbGVuZ3RoIGNvZGUgMjg1Ci0gICAgICByZWFsbHkgaXMgMjU4LiAgVGhlIGxhc3QgbGVuZ3RoIGRlc2VydmVzIGl0cyBvd24sIHNob3J0IGNvZGUKLSAgICAgIHNpbmNlIGl0IGdldHMgdXNlZCBhIGxvdCBpbiB2ZXJ5IHJlZHVuZGFudCBmaWxlcy4gIFRoZSBsZW5ndGgKLSAgICAgIDI1OCBpcyBzcGVjaWFsIHNpbmNlIDI1OCAtIDMgKHRoZSBtaW4gbWF0Y2ggbGVuZ3RoKSBpcyAyNTUuCi0gIDEzLiBUaGUgbGl0ZXJhbC9sZW5ndGggYW5kIGRpc3RhbmNlIGNvZGUgYml0IGxlbmd0aHMgYXJlIHJlYWQgYXMgYQotICAgICAgc2luZ2xlIHN0cmVhbSBvZiBsZW5ndGhzLiAgSXQgaXMgcG9zc2libGUgKGFuZCBhZHZhbnRhZ2VvdXMpIGZvcgotICAgICAgYSByZXBlYXQgY29kZSAoMTYsIDE3LCBvciAxOCkgdG8gZ28gYWNyb3NzIHRoZSBib3VuZGFyeSBiZXR3ZWVuCi0gICAgICB0aGUgdHdvIHNldHMgb2YgbGVuZ3Rocy4KLSAqLwotCi0KLWxvY2FsIHZvaWQgaW5mbGF0ZV9ibG9ja3NfcmVzZXQoIC8qIHMsIHosIGMpICovCi1pbmZsYXRlX2Jsb2Nrc19zdGF0ZWYgKnMsCi16X3N0cmVhbXAgeiwKLXVMb25nZiAqYyApCi17Ci0gIGlmIChjICE9IFpfTlVMTCkKLSAgICAqYyA9IHMtPmNoZWNrOwotICBpZiAocy0+bW9kZSA9PSBCVFJFRSB8fCBzLT5tb2RlID09IERUUkVFKQotICAgIFpGUkVFKHosIHMtPnN1Yi50cmVlcy5ibGVucyk7Ci0gIGlmIChzLT5tb2RlID09IENPREVTKQotICAgIGluZmxhdGVfY29kZXNfZnJlZShzLT5zdWIuZGVjb2RlLmNvZGVzLCB6KTsKLSAgcy0+bW9kZSA9IFRZUEU7Ci0gIHMtPmJpdGsgPSAwOwotICBzLT5iaXRiID0gMDsKLSAgcy0+cmVhZCA9IHMtPndyaXRlID0gcy0+d2luZG93OwotICBpZiAocy0+Y2hlY2tmbiAhPSBaX05VTEwpCi0gICAgei0+YWRsZXIgPSBzLT5jaGVjayA9ICgqcy0+Y2hlY2tmbikoMEwsIChjb25zdCBCeXRlZiAqKVpfTlVMTCwgMCk7Ci0gIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICBibG9ja3MgcmVzZXRcbiIpKTsKLX0KLQotCi1sb2NhbCBpbmZsYXRlX2Jsb2Nrc19zdGF0ZWYgKmluZmxhdGVfYmxvY2tzX25ldyggLyogeiwgYywgdykgKi8KLXpfc3RyZWFtcCB6LAotY2hlY2tfZnVuYyBjLAotdUludCB3ICkKLXsKLSAgaW5mbGF0ZV9ibG9ja3Nfc3RhdGVmICpzOwotCi0gIGlmICgocyA9IChpbmZsYXRlX2Jsb2Nrc19zdGF0ZWYgKilaQUxMT0MKLSAgICAgICAoeiwxLHNpemVvZihzdHJ1Y3QgaW5mbGF0ZV9ibG9ja3Nfc3RhdGUpKSkgPT0gWl9OVUxMKQotICAgIHJldHVybiBzOwotICBpZiAoKHMtPmh1ZnRzID0KLSAgICAgICAoaW5mbGF0ZV9odWZ0ICopWkFMTE9DKHosIHNpemVvZihpbmZsYXRlX2h1ZnQpLCBNQU5ZKSkgPT0gWl9OVUxMKQotICB7Ci0gICAgWkZSRUUoeiwgcyk7Ci0gICAgcmV0dXJuIFpfTlVMTDsKLSAgfQotICBpZiAoKHMtPndpbmRvdyA9IChCeXRlZiAqKVpBTExPQyh6LCAxLCB3KSkgPT0gWl9OVUxMKQotICB7Ci0gICAgWkZSRUUoeiwgcy0+aHVmdHMpOwotICAgIFpGUkVFKHosIHMpOwotICAgIHJldHVybiBaX05VTEw7Ci0gIH0KLSAgcy0+ZW5kID0gcy0+d2luZG93ICsgdzsKLSAgcy0+Y2hlY2tmbiA9IGM7Ci0gIHMtPm1vZGUgPSBUWVBFOwotICBUcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgYmxvY2tzIGFsbG9jYXRlZFxuIikpOwotICBpbmZsYXRlX2Jsb2Nrc19yZXNldChzLCB6LCBaX05VTEwpOwotICByZXR1cm4gczsKLX0KLQotCi1sb2NhbCBpbnQgaW5mbGF0ZV9ibG9ja3MoIC8qIHMsIHosIHIpICovCi1pbmZsYXRlX2Jsb2Nrc19zdGF0ZWYgKnMsCi16X3N0cmVhbXAgeiwKLWludCByICkKLXsKLSAgdUludCB0OyAgICAgICAgICAgICAgIC8qIHRlbXBvcmFyeSBzdG9yYWdlICovCi0gIHVMb25nIGI7ICAgICAgICAgICAgICAvKiBiaXQgYnVmZmVyICovCi0gIHVJbnQgazsgICAgICAgICAgICAgICAvKiBiaXRzIGluIGJpdCBidWZmZXIgKi8KLSAgQnl0ZWYgKnA7ICAgICAgICAgICAgIC8qIGlucHV0IGRhdGEgcG9pbnRlciAqLwotICB1SW50IG47ICAgICAgICAgICAgICAgLyogYnl0ZXMgYXZhaWxhYmxlIHRoZXJlICovCi0gIEJ5dGVmICpxOyAgICAgICAgICAgICAvKiBvdXRwdXQgd2luZG93IHdyaXRlIHBvaW50ZXIgKi8KLSAgdUludCBtOyAgICAgICAgICAgICAgIC8qIGJ5dGVzIHRvIGVuZCBvZiB3aW5kb3cgb3IgcmVhZCBwb2ludGVyICovCi0KLSAgLyogY29weSBpbnB1dC9vdXRwdXQgaW5mb3JtYXRpb24gdG8gbG9jYWxzIChVUERBVEUgbWFjcm8gcmVzdG9yZXMpICovCi0gIExPQUQKLQotICAvKiBwcm9jZXNzIGlucHV0IGJhc2VkIG9uIGN1cnJlbnQgc3RhdGUgKi8KLSAgd2hpbGUgKDEpIHN3aXRjaCAocy0+bW9kZSkKLSAgewotICAgIGNhc2UgVFlQRToKLSAgICAgIE5FRURCSVRTKDMpCi0gICAgICB0ID0gKHVJbnQpYiAmIDc7Ci0gICAgICBzLT5sYXN0ID0gdCAmIDE7Ci0gICAgICBzd2l0Y2ggKHQgPj4gMSkKLSAgICAgIHsKLSAgICAgICAgY2FzZSAwOiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdG9yZWQgKi8KLSAgICAgICAgICBUcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICBzdG9yZWQgYmxvY2slc1xuIiwKLSAgICAgICAgICAgICAgICAgcy0+bGFzdCA/ICIgKGxhc3QpIiA6ICIiKSk7Ci0gICAgICAgICAgRFVNUEJJVFMoMykKLSAgICAgICAgICB0ID0gayAmIDc7ICAgICAgICAgICAgICAgICAgICAvKiBnbyB0byBieXRlIGJvdW5kYXJ5ICovCi0gICAgICAgICAgRFVNUEJJVFModCkKLSAgICAgICAgICBzLT5tb2RlID0gTEVOUzsgICAgICAgICAgICAgICAvKiBnZXQgbGVuZ3RoIG9mIHN0b3JlZCBibG9jayAqLwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpeGVkICovCi0gICAgICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgZml4ZWQgY29kZXMgYmxvY2slc1xuIiwKLSAgICAgICAgICAgICAgICAgcy0+bGFzdCA/ICIgKGxhc3QpIiA6ICIiKSk7Ci0gICAgICAgICAgewotICAgICAgICAgICAgdUludCBibCwgYmQ7Ci0gICAgICAgICAgICBpbmZsYXRlX2h1ZnQgKnRsLCAqdGQ7Ci0KLSAgICAgICAgICAgIGluZmxhdGVfdHJlZXNfZml4ZWQoJmJsLCAmYmQsIChjb25zdCBpbmZsYXRlX2h1ZnQqKikmdGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgaW5mbGF0ZV9odWZ0KiopJnRkLCB6KTsKLSAgICAgICAgICAgIHMtPnN1Yi5kZWNvZGUuY29kZXMgPSBpbmZsYXRlX2NvZGVzX25ldyhibCwgYmQsIHRsLCB0ZCwgeik7Ci0gICAgICAgICAgICBpZiAocy0+c3ViLmRlY29kZS5jb2RlcyA9PSBaX05VTEwpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHIgPSBaX01FTV9FUlJPUjsKLSAgICAgICAgICAgICAgTEVBVkUKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgRFVNUEJJVFMoMykKLSAgICAgICAgICBzLT5tb2RlID0gQ09ERVM7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMjogICAgICAgICAgICAgICAgICAgICAgICAgLyogZHluYW1pYyAqLwotICAgICAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICAgIGR5bmFtaWMgY29kZXMgYmxvY2slc1xuIiwKLSAgICAgICAgICAgICAgICAgcy0+bGFzdCA/ICIgKGxhc3QpIiA6ICIiKSk7Ci0gICAgICAgICAgRFVNUEJJVFMoMykKLSAgICAgICAgICBzLT5tb2RlID0gVEFCTEU7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMzogICAgICAgICAgICAgICAgICAgICAgICAgLyogaWxsZWdhbCAqLwotICAgICAgICAgIERVTVBCSVRTKDMpCi0gICAgICAgICAgcy0+bW9kZSA9IEJBRDsKLSAgICAgICAgICB6LT5tc2cgPSAoY2hhciopImludmFsaWQgYmxvY2sgdHlwZSI7Ci0gICAgICAgICAgciA9IFpfREFUQV9FUlJPUjsKLSAgICAgICAgICBMRUFWRQotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMRU5TOgotICAgICAgTkVFREJJVFMoMzIpCi0gICAgICBpZiAoKCgofmIpID4+IDE2KSAmIDB4ZmZmZikgIT0gKGIgJiAweGZmZmYpKQotICAgICAgewotICAgICAgICBzLT5tb2RlID0gQkFEOwotICAgICAgICB6LT5tc2cgPSAoY2hhciopImludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMiOwotICAgICAgICByID0gWl9EQVRBX0VSUk9SOwotICAgICAgICBMRUFWRQotICAgICAgfQotICAgICAgcy0+c3ViLmxlZnQgPSAodUludCliICYgMHhmZmZmOwotICAgICAgYiA9IGsgPSAwOyAgICAgICAgICAgICAgICAgICAgICAvKiBkdW1wIGJpdHMgKi8KLSAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgc3RvcmVkIGxlbmd0aCAldVxuIiwgcy0+c3ViLmxlZnQpKTsKLSAgICAgIHMtPm1vZGUgPSBzLT5zdWIubGVmdCA/IFNUT1JFRCA6IChzLT5sYXN0ID8gRFJZIDogVFlQRSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNUT1JFRDoKLSAgICAgIGlmIChuID09IDApCi0gICAgICAgIExFQVZFCi0gICAgICBORUVET1VUCi0gICAgICB0ID0gcy0+c3ViLmxlZnQ7Ci0gICAgICBpZiAodCA+IG4pIHQgPSBuOwotICAgICAgaWYgKHQgPiBtKSB0ID0gbTsKLSAgICAgIHptZW1jcHkocSwgcCwgdCk7Ci0gICAgICBwICs9IHQ7ICBuIC09IHQ7Ci0gICAgICBxICs9IHQ7ICBtIC09IHQ7Ci0gICAgICBpZiAoKHMtPnN1Yi5sZWZ0IC09IHQpICE9IDApCi0gICAgICAgIGJyZWFrOwotICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICBzdG9yZWQgZW5kLCAlbHUgdG90YWwgb3V0XG4iLAotICAgICAgICAgICAgICB6LT50b3RhbF9vdXQgKyAocSA+PSBzLT5yZWFkID8gcSAtIHMtPnJlYWQgOgotICAgICAgICAgICAgICAocy0+ZW5kIC0gcy0+cmVhZCkgKyAocSAtIHMtPndpbmRvdykpKSk7Ci0gICAgICBzLT5tb2RlID0gcy0+bGFzdCA/IERSWSA6IFRZUEU7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFRBQkxFOgotICAgICAgTkVFREJJVFMoMTQpCi0gICAgICBzLT5zdWIudHJlZXMudGFibGUgPSB0ID0gKHVJbnQpYiAmIDB4M2ZmZjsKLSNpZm5kZWYgUEtaSVBfQlVHX1dPUktBUk9VTkQKLSAgICAgIGlmICgodCAmIDB4MWYpID4gMjkgfHwgKCh0ID4+IDUpICYgMHgxZikgPiAyOSkKLSAgICAgIHsKLSAgICAgICAgcy0+bW9kZSA9IEJBRDsKLSAgICAgICAgei0+bXNnID0gKGNoYXIqKSJ0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scyI7Ci0gICAgICAgIHIgPSBaX0RBVEFfRVJST1I7Ci0gICAgICAgIExFQVZFCi0gICAgICB9Ci0jZW5kaWYKLSAgICAgIHQgPSAyNTggKyAodCAmIDB4MWYpICsgKCh0ID4+IDUpICYgMHgxZik7Ci0gICAgICBpZiAoKHMtPnN1Yi50cmVlcy5ibGVucyA9ICh1SW50ZiopWkFMTE9DKHosIHQsIHNpemVvZih1SW50KSkpID09IFpfTlVMTCkKLSAgICAgIHsKLSAgICAgICAgciA9IFpfTUVNX0VSUk9SOwotICAgICAgICBMRUFWRQotICAgICAgfQotICAgICAgRFVNUEJJVFMoMTQpCi0gICAgICBzLT5zdWIudHJlZXMuaW5kZXggPSAwOwotICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICB0YWJsZSBzaXplcyBva1xuIikpOwotICAgICAgcy0+bW9kZSA9IEJUUkVFOwotICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2FzZSBCVFJFRToKLSAgICAgIHdoaWxlIChzLT5zdWIudHJlZXMuaW5kZXggPCA0ICsgKHMtPnN1Yi50cmVlcy50YWJsZSA+PiAxMCkpCi0gICAgICB7Ci0gICAgICAgIE5FRURCSVRTKDMpCi0gICAgICAgIHMtPnN1Yi50cmVlcy5ibGVuc1tib3JkZXJbcy0+c3ViLnRyZWVzLmluZGV4KytdXSA9ICh1SW50KWIgJiA3OwotICAgICAgICBEVU1QQklUUygzKQotICAgICAgfQotICAgICAgd2hpbGUgKHMtPnN1Yi50cmVlcy5pbmRleCA8IDE5KQotICAgICAgICBzLT5zdWIudHJlZXMuYmxlbnNbYm9yZGVyW3MtPnN1Yi50cmVlcy5pbmRleCsrXV0gPSAwOwotICAgICAgcy0+c3ViLnRyZWVzLmJiID0gNzsKLSAgICAgIHQgPSBpbmZsYXRlX3RyZWVzX2JpdHMocy0+c3ViLnRyZWVzLmJsZW5zLCAmcy0+c3ViLnRyZWVzLmJiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcy0+c3ViLnRyZWVzLnRiLCBzLT5odWZ0cywgeik7Ci0gICAgICBpZiAodCAhPSBaX09LKQotICAgICAgewotICAgICAgICByID0gdDsKLSAgICAgICAgaWYgKHIgPT0gWl9EQVRBX0VSUk9SKQotICAgICAgICB7Ci0gICAgICAgICAgWkZSRUUoeiwgcy0+c3ViLnRyZWVzLmJsZW5zKTsKLSAgICAgICAgICBzLT5tb2RlID0gQkFEOwotICAgICAgICB9Ci0gICAgICAgIExFQVZFCi0gICAgICB9Ci0gICAgICBzLT5zdWIudHJlZXMuaW5kZXggPSAwOwotICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICBiaXRzIHRyZWUgb2tcbiIpKTsKLSAgICAgIHMtPm1vZGUgPSBEVFJFRTsKLSAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgIGNhc2UgRFRSRUU6Ci0gICAgICB3aGlsZSAodCA9IHMtPnN1Yi50cmVlcy50YWJsZSwKLSAgICAgICAgICAgICBzLT5zdWIudHJlZXMuaW5kZXggPCAyNTggKyAodCAmIDB4MWYpICsgKCh0ID4+IDUpICYgMHgxZikpCi0gICAgICB7Ci0gICAgICAgIGluZmxhdGVfaHVmdCAqaDsKLSAgICAgICAgdUludCBpLCBqLCBjOwotCi0gICAgICAgIHQgPSBzLT5zdWIudHJlZXMuYmI7Ci0gICAgICAgIE5FRURCSVRTKHQpCi0gICAgICAgIGggPSBzLT5zdWIudHJlZXMudGIgKyAoKHVJbnQpYiAmIGluZmxhdGVfbWFza1t0XSk7Ci0gICAgICAgIHQgPSBoLT5iaXRzOwotICAgICAgICBjID0gaC0+YmFzZTsKLSAgICAgICAgaWYgKGMgPCAxNikKLSAgICAgICAgewotICAgICAgICAgIERVTVBCSVRTKHQpCi0gICAgICAgICAgcy0+c3ViLnRyZWVzLmJsZW5zW3MtPnN1Yi50cmVlcy5pbmRleCsrXSA9IGM7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSAvKiBjID09IDE2Li4xOCAqLwotICAgICAgICB7Ci0gICAgICAgICAgaSA9IGMgPT0gMTggPyA3IDogYyAtIDE0OwotICAgICAgICAgIGogPSBjID09IDE4ID8gMTEgOiAzOwotICAgICAgICAgIE5FRURCSVRTKHQgKyBpKQotICAgICAgICAgIERVTVBCSVRTKHQpCi0gICAgICAgICAgaiArPSAodUludCliICYgaW5mbGF0ZV9tYXNrW2ldOwotICAgICAgICAgIERVTVBCSVRTKGkpCi0gICAgICAgICAgaSA9IHMtPnN1Yi50cmVlcy5pbmRleDsKLSAgICAgICAgICB0ID0gcy0+c3ViLnRyZWVzLnRhYmxlOwotICAgICAgICAgIGlmIChpICsgaiA+IDI1OCArICh0ICYgMHgxZikgKyAoKHQgPj4gNSkgJiAweDFmKSB8fAotICAgICAgICAgICAgICAoYyA9PSAxNiAmJiBpIDwgMSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgWkZSRUUoeiwgcy0+c3ViLnRyZWVzLmJsZW5zKTsKLSAgICAgICAgICAgIHMtPm1vZGUgPSBCQUQ7Ci0gICAgICAgICAgICB6LT5tc2cgPSAoY2hhciopImludmFsaWQgYml0IGxlbmd0aCByZXBlYXQiOwotICAgICAgICAgICAgciA9IFpfREFUQV9FUlJPUjsKLSAgICAgICAgICAgIExFQVZFCi0gICAgICAgICAgfQotICAgICAgICAgIGMgPSBjID09IDE2ID8gcy0+c3ViLnRyZWVzLmJsZW5zW2kgLSAxXSA6IDA7Ci0gICAgICAgICAgZG8gewotICAgICAgICAgICAgcy0+c3ViLnRyZWVzLmJsZW5zW2krK10gPSBjOwotICAgICAgICAgIH0gd2hpbGUgKC0taik7Ci0gICAgICAgICAgcy0+c3ViLnRyZWVzLmluZGV4ID0gaTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgcy0+c3ViLnRyZWVzLnRiID0gWl9OVUxMOwotICAgICAgewotICAgICAgICB1SW50IGJsLCBiZDsKLSAgICAgICAgaW5mbGF0ZV9odWZ0ICp0bCwgKnRkOwotICAgICAgICBpbmZsYXRlX2NvZGVzX3N0YXRlZiAqYzsKLQotICAgICAgICBibCA9IDk7ICAgICAgICAgLyogbXVzdCBiZSA8PSA5IGZvciBsb29rYWhlYWQgYXNzdW1wdGlvbnMgKi8KLSAgICAgICAgYmQgPSA2OyAgICAgICAgIC8qIG11c3QgYmUgPD0gOSBmb3IgbG9va2FoZWFkIGFzc3VtcHRpb25zICovCi0gICAgICAgIHQgPSBzLT5zdWIudHJlZXMudGFibGU7Ci0gICAgICAgIHQgPSBpbmZsYXRlX3RyZWVzX2R5bmFtaWMoMjU3ICsgKHQgJiAweDFmKSwgMSArICgodCA+PiA1KSAmIDB4MWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnN1Yi50cmVlcy5ibGVucywgJmJsLCAmYmQsICZ0bCwgJnRkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmh1ZnRzLCB6KTsKLSAgICAgICAgaWYgKHQgIT0gWl9PSykKLSAgICAgICAgewotICAgICAgICAgIGlmICh0ID09ICh1SW50KVpfREFUQV9FUlJPUikKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBaRlJFRSh6LCBzLT5zdWIudHJlZXMuYmxlbnMpOwotICAgICAgICAgICAgcy0+bW9kZSA9IEJBRDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgciA9IHQ7Ci0gICAgICAgICAgTEVBVkUKLSAgICAgICAgfQotICAgICAgICBUcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgIHRyZWVzIG9rXG4iKSk7Ci0gICAgICAgIGlmICgoYyA9IGluZmxhdGVfY29kZXNfbmV3KGJsLCBiZCwgdGwsIHRkLCB6KSkgPT0gWl9OVUxMKQotICAgICAgICB7Ci0gICAgICAgICAgciA9IFpfTUVNX0VSUk9SOwotICAgICAgICAgIExFQVZFCi0gICAgICAgIH0KLSAgICAgICAgcy0+c3ViLmRlY29kZS5jb2RlcyA9IGM7Ci0gICAgICB9Ci0gICAgICBaRlJFRSh6LCBzLT5zdWIudHJlZXMuYmxlbnMpOwotICAgICAgcy0+bW9kZSA9IENPREVTOwotICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2FzZSBDT0RFUzoKLSAgICAgIFVQREFURQotICAgICAgaWYgKChyID0gaW5mbGF0ZV9jb2RlcyhzLCB6LCByKSkgIT0gWl9TVFJFQU1fRU5EKQotICAgICAgICByZXR1cm4gaW5mbGF0ZV9mbHVzaChzLCB6LCByKTsKLSAgICAgIHIgPSBaX09LOwotICAgICAgaW5mbGF0ZV9jb2Rlc19mcmVlKHMtPnN1Yi5kZWNvZGUuY29kZXMsIHopOwotICAgICAgTE9BRAotICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICBjb2RlcyBlbmQsICVsdSB0b3RhbCBvdXRcbiIsCi0gICAgICAgICAgICAgIHotPnRvdGFsX291dCArIChxID49IHMtPnJlYWQgPyBxIC0gcy0+cmVhZCA6Ci0gICAgICAgICAgICAgIChzLT5lbmQgLSBzLT5yZWFkKSArIChxIC0gcy0+d2luZG93KSkpKTsKLSAgICAgIGlmICghcy0+bGFzdCkKLSAgICAgIHsKLSAgICAgICAgcy0+bW9kZSA9IFRZUEU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgcy0+bW9kZSA9IERSWTsKLSAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgIGNhc2UgRFJZOgotICAgICAgRkxVU0gKLSAgICAgIGlmIChzLT5yZWFkICE9IHMtPndyaXRlKQotICAgICAgICBMRUFWRQotICAgICAgcy0+bW9kZSA9IERPTkU7Ci0gICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBjYXNlIERPTkU6Ci0gICAgICByID0gWl9TVFJFQU1fRU5EOwotICAgICAgTEVBVkUKLSAgICBjYXNlIEJBRDoKLSAgICAgIHIgPSBaX0RBVEFfRVJST1I7Ci0gICAgICBMRUFWRQotICAgIGRlZmF1bHQ6Ci0gICAgICByID0gWl9TVFJFQU1fRVJST1I7Ci0gICAgICBMRUFWRQotICB9Ci0jaWZkZWYgTkVFRF9EVU1NWV9SRVRVUk4KLSAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotCi1sb2NhbCBpbnQgaW5mbGF0ZV9ibG9ja3NfZnJlZSggLyogcywgeikgKi8KLWluZmxhdGVfYmxvY2tzX3N0YXRlZiAqcywKLXpfc3RyZWFtcCB6ICkKLXsKLSAgaW5mbGF0ZV9ibG9ja3NfcmVzZXQocywgeiwgWl9OVUxMKTsKLSAgWkZSRUUoeiwgcy0+d2luZG93KTsKLSAgWkZSRUUoeiwgcy0+aHVmdHMpOwotICBaRlJFRSh6LCBzKTsKLSAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgIGJsb2NrcyBmcmVlZFxuIikpOwotICByZXR1cm4gWl9PSzsKLX0KLQotCmRpZmYgLS1naXQgYS9zcmMvZ3ppcC9pbmZibG9jay5oIGIvc3JjL2d6aXAvaW5mYmxvY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI1MzVhMS4uMDAwMDAwMAotLS0gYS9zcmMvZ3ppcC9pbmZibG9jay5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyogaW5mYmxvY2suaCAtLSBoZWFkZXIgdG8gdXNlIGluZmJsb2NrLmMKLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDAyIE1hcmsgQWRsZXIKLSAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKLSAqLwotCi0vKiBXQVJOSU5HOiB0aGlzIGZpbGUgc2hvdWxkICpub3QqIGJlIHVzZWQgYnkgYXBwbGljYXRpb25zLiBJdCBpcwotICAgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkgYW5kIGlzCi0gICBzdWJqZWN0IHRvIGNoYW5nZS4gQXBwbGljYXRpb25zIHNob3VsZCBvbmx5IHVzZSB6bGliLmguCi0gKi8KLQotI2lmbmRlZiBfSU5GQkxPQ0tfSAotI2RlZmluZSBfSU5GQkxPQ0tfSAotCi1zdHJ1Y3QgaW5mbGF0ZV9ibG9ja3Nfc3RhdGU7Ci10eXBlZGVmIHN0cnVjdCBpbmZsYXRlX2Jsb2Nrc19zdGF0ZSBGQVIgaW5mbGF0ZV9ibG9ja3Nfc3RhdGVmOwotCi1sb2NhbCAgaW5mbGF0ZV9ibG9ja3Nfc3RhdGVmICogaW5mbGF0ZV9ibG9ja3NfbmV3IE9GKCgKLSAgICB6X3N0cmVhbXAgeiwKLSAgICBjaGVja19mdW5jIGMsICAgICAgICAgICAgICAgLyogY2hlY2sgZnVuY3Rpb24gKi8KLSAgICB1SW50IHcpKTsgICAgICAgICAgICAgICAgICAgLyogd2luZG93IHNpemUgKi8KLQotbG9jYWwgIGludCBpbmZsYXRlX2Jsb2NrcyBPRigoCi0gICAgaW5mbGF0ZV9ibG9ja3Nfc3RhdGVmICosCi0gICAgel9zdHJlYW1wICwKLSAgICBpbnQpKTsgICAgICAgICAgICAgICAgICAgICAgLyogaW5pdGlhbCByZXR1cm4gY29kZSAqLwotCi1sb2NhbCAgdm9pZCBpbmZsYXRlX2Jsb2Nrc19yZXNldCBPRigoCi0gICAgaW5mbGF0ZV9ibG9ja3Nfc3RhdGVmICosCi0gICAgel9zdHJlYW1wICwKLSAgICB1TG9uZ2YgKikpOyAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIHZhbHVlIG9uIG91dHB1dCAqLwotCi1sb2NhbCAgaW50IGluZmxhdGVfYmxvY2tzX2ZyZWUgT0YoKAotICAgIGluZmxhdGVfYmxvY2tzX3N0YXRlZiAqLAotICAgIHpfc3RyZWFtcCkpOwotCi0jZW5kaWYgLyogX0lORkJMT0NLX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9nemlwL2luZmNvZGVzLmMgYi9zcmMvZ3ppcC9pbmZjb2Rlcy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTMwNjU0Li4wMDAwMDAwCi0tLSBhL3NyYy9nemlwL2luZmNvZGVzLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNTQgKzAsMCBAQAotLyogaW5mY29kZXMuYyAtLSBwcm9jZXNzIGxpdGVyYWxzIGFuZCBsZW5ndGgvZGlzdGFuY2UgcGFpcnMKLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDAyIE1hcmsgQWRsZXIKLSAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKLSAqLwotCi0jaW5jbHVkZSAienV0aWwuaCIKLSNpbmNsdWRlICJpbmZ0cmVlcy5oIgotI2luY2x1ZGUgImluZmJsb2NrLmgiCi0jaW5jbHVkZSAiaW5mY29kZXMuaCIKLSNpbmNsdWRlICJpbmZ1dGlsLmgiCi0KLS8qIHNpbXBsaWZ5IHRoZSB1c2Ugb2YgdGhlIGluZmxhdGVfaHVmdCB0eXBlIHdpdGggc29tZSBkZWZpbmVzICovCi0jZGVmaW5lIGV4b3Agd29yZC53aGF0LkV4b3AKLSNkZWZpbmUgYml0cyB3b3JkLndoYXQuQml0cwotCi10eXBlZGVmIGVudW0geyAgICAgICAgLyogd2FpdGluZyBmb3IgImk6Ij1pbnB1dCwgIm86Ij1vdXRwdXQsICJ4OiI9bm90aGluZyAqLwotICAgICAgU1RBUlQsICAgIC8qIHg6IHNldCB1cCBmb3IgTEVOICovCi0gICAgICBMRU4sICAgICAgLyogaTogZ2V0IGxlbmd0aC9saXRlcmFsL2VvYiBuZXh0ICovCi0gICAgICBMRU5FWFQsICAgLyogaTogZ2V0dGluZyBsZW5ndGggZXh0cmEgKGhhdmUgYmFzZSkgKi8KLSAgICAgIERJU1QsICAgICAvKiBpOiBnZXQgZGlzdGFuY2UgbmV4dCAqLwotICAgICAgRElTVEVYVCwgIC8qIGk6IGdldHRpbmcgZGlzdGFuY2UgZXh0cmEgKi8KLSAgICAgIENPUFksICAgICAvKiBvOiBjb3B5aW5nIGJ5dGVzIGluIHdpbmRvdywgd2FpdGluZyBmb3Igc3BhY2UgKi8KLSAgICAgIExJVCwgICAgICAvKiBvOiBnb3QgbGl0ZXJhbCwgd2FpdGluZyBmb3Igb3V0cHV0IHNwYWNlICovCi0gICAgICBXQVNILCAgICAgLyogbzogZ290IGVvYiwgcG9zc2libHkgc3RpbGwgb3V0cHV0IHdhaXRpbmcgKi8KLSAgICAgIEVORCwgICAgICAvKiB4OiBnb3QgZW9iIGFuZCBhbGwgZGF0YSBmbHVzaGVkICovCi0gICAgICBCQURDT0RFfSAgLyogeDogZ290IGVycm9yICovCi1pbmZsYXRlX2NvZGVzX21vZGU7Ci0KLS8qIGluZmxhdGUgY29kZXMgcHJpdmF0ZSBzdGF0ZSAqLwotc3RydWN0IGluZmxhdGVfY29kZXNfc3RhdGUgewotCi0gIC8qIG1vZGUgKi8KLSAgaW5mbGF0ZV9jb2Rlc19tb2RlIG1vZGU7ICAgICAgLyogY3VycmVudCBpbmZsYXRlX2NvZGVzIG1vZGUgKi8KLQotICAvKiBtb2RlIGRlcGVuZGVudCBpbmZvcm1hdGlvbiAqLwotICB1SW50IGxlbjsKLSAgdW5pb24gewotICAgIHN0cnVjdCB7Ci0gICAgICBpbmZsYXRlX2h1ZnQgKnRyZWU7ICAgICAgIC8qIHBvaW50ZXIgaW50byB0cmVlICovCi0gICAgICB1SW50IG5lZWQ7ICAgICAgICAgICAgICAgIC8qIGJpdHMgbmVlZGVkICovCi0gICAgfSBjb2RlOyAgICAgICAgICAgICAvKiBpZiBMRU4gb3IgRElTVCwgd2hlcmUgaW4gdHJlZSAqLwotICAgIHVJbnQgbGl0OyAgICAgICAgICAgLyogaWYgTElULCBsaXRlcmFsICovCi0gICAgc3RydWN0IHsKLSAgICAgIHVJbnQgZ2V0OyAgICAgICAgICAgICAgICAgLyogYml0cyB0byBnZXQgZm9yIGV4dHJhICovCi0gICAgICB1SW50IGRpc3Q7ICAgICAgICAgICAgICAgIC8qIGRpc3RhbmNlIGJhY2sgdG8gY29weSBmcm9tICovCi0gICAgfSBjb3B5OyAgICAgICAgICAgICAvKiBpZiBFWFQgb3IgQ09QWSwgd2hlcmUgYW5kIGhvdyBtdWNoICovCi0gIH0gc3ViOyAgICAgICAgICAgICAgICAvKiBzdWJtb2RlICovCi0KLSAgLyogbW9kZSBpbmRlcGVuZGVudCBpbmZvcm1hdGlvbiAqLwotICBCeXRlIGxiaXRzOyAgICAgICAgICAgLyogbHRyZWUgYml0cyBkZWNvZGVkIHBlciBicmFuY2ggKi8KLSAgQnl0ZSBkYml0czsgICAgICAgICAgIC8qIGR0cmVlIGJpdHMgZGVjb2RlciBwZXIgYnJhbmNoICovCi0gIGluZmxhdGVfaHVmdCAqbHRyZWU7ICAgICAgICAgIC8qIGxpdGVyYWwvbGVuZ3RoL2VvYiB0cmVlICovCi0gIGluZmxhdGVfaHVmdCAqZHRyZWU7ICAgICAgICAgIC8qIGRpc3RhbmNlIHRyZWUgKi8KLQotfTsKLQotCi1sb2NhbCBpbmZsYXRlX2NvZGVzX3N0YXRlZiAqaW5mbGF0ZV9jb2Rlc19uZXcoIC8qIGJsLCBiZCwgdGwsIHRkLCB6KSAqLwotdUludCBibCwgdUludCBiZCwKLWluZmxhdGVfaHVmdCAqdGwsCi1pbmZsYXRlX2h1ZnQgKnRkLCAvKiBuZWVkIHNlcGFyYXRlIGRlY2xhcmF0aW9uIGZvciBCb3JsYW5kIEMrKyAqLwotel9zdHJlYW1wIHogKQotewotICBpbmZsYXRlX2NvZGVzX3N0YXRlZiAqYzsKLQotICBpZiAoKGMgPSAoaW5mbGF0ZV9jb2Rlc19zdGF0ZWYgKikKLSAgICAgICBaQUxMT0MoeiwxLHNpemVvZihzdHJ1Y3QgaW5mbGF0ZV9jb2Rlc19zdGF0ZSkpKSAhPSBaX05VTEwpCi0gIHsKLSAgICBjLT5tb2RlID0gU1RBUlQ7Ci0gICAgYy0+bGJpdHMgPSAoQnl0ZSlibDsKLSAgICBjLT5kYml0cyA9IChCeXRlKWJkOwotICAgIGMtPmx0cmVlID0gdGw7Ci0gICAgYy0+ZHRyZWUgPSB0ZDsKLSAgICBUcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgIGNvZGVzIG5ld1xuIikpOwotICB9Ci0gIHJldHVybiBjOwotfQotCi0KLWxvY2FsIGludCBpbmZsYXRlX2NvZGVzKCAvKiBzLCB6LCByKSAqLwotaW5mbGF0ZV9ibG9ja3Nfc3RhdGVmICpzLAotel9zdHJlYW1wIHosCi1pbnQgciApCi17Ci0gIHVJbnQgajsgICAgICAgICAgICAgICAvKiB0ZW1wb3Jhcnkgc3RvcmFnZSAqLwotICBpbmZsYXRlX2h1ZnQgKnQ7ICAgICAgLyogdGVtcG9yYXJ5IHBvaW50ZXIgKi8KLSAgdUludCBlOyAgICAgICAgICAgICAgIC8qIGV4dHJhIGJpdHMgb3Igb3BlcmF0aW9uICovCi0gIHVMb25nIGI7ICAgICAgICAgICAgICAvKiBiaXQgYnVmZmVyICovCi0gIHVJbnQgazsgICAgICAgICAgICAgICAvKiBiaXRzIGluIGJpdCBidWZmZXIgKi8KLSAgQnl0ZWYgKnA7ICAgICAgICAgICAgIC8qIGlucHV0IGRhdGEgcG9pbnRlciAqLwotICB1SW50IG47ICAgICAgICAgICAgICAgLyogYnl0ZXMgYXZhaWxhYmxlIHRoZXJlICovCi0gIEJ5dGVmICpxOyAgICAgICAgICAgICAvKiBvdXRwdXQgd2luZG93IHdyaXRlIHBvaW50ZXIgKi8KLSAgdUludCBtOyAgICAgICAgICAgICAgIC8qIGJ5dGVzIHRvIGVuZCBvZiB3aW5kb3cgb3IgcmVhZCBwb2ludGVyICovCi0gIEJ5dGVmICpmOyAgICAgICAgICAgICAvKiBwb2ludGVyIHRvIGNvcHkgc3RyaW5ncyBmcm9tICovCi0gIGluZmxhdGVfY29kZXNfc3RhdGVmICpjID0gcy0+c3ViLmRlY29kZS5jb2RlczsgIC8qIGNvZGVzIHN0YXRlICovCi0KLSAgLyogY29weSBpbnB1dC9vdXRwdXQgaW5mb3JtYXRpb24gdG8gbG9jYWxzIChVUERBVEUgbWFjcm8gcmVzdG9yZXMpICovCi0gIExPQUQKLQotICAvKiBwcm9jZXNzIGlucHV0IGFuZCBvdXRwdXQgYmFzZWQgb24gY3VycmVudCBzdGF0ZSAqLwotICB3aGlsZSAoMSkgc3dpdGNoIChjLT5tb2RlKQotICB7ICAgICAgICAgICAgIC8qIHdhaXRpbmcgZm9yICJpOiI9aW5wdXQsICJvOiI9b3V0cHV0LCAieDoiPW5vdGhpbmcgKi8KLSAgICBjYXNlIFNUQVJUOiAgICAgICAgIC8qIHg6IHNldCB1cCBmb3IgTEVOICovCi0jaWZuZGVmIFNMT1cKLSAgICAgIGlmIChtID49IDI1OCAmJiBuID49IDEwKQotICAgICAgewotICAgICAgICBVUERBVEUKLSAgICAgICAgciA9IGluZmxhdGVfZmFzdChjLT5sYml0cywgYy0+ZGJpdHMsIGMtPmx0cmVlLCBjLT5kdHJlZSwgcywgeik7Ci0gICAgICAgIExPQUQKLSAgICAgICAgaWYgKHIgIT0gWl9PSykKLSAgICAgICAgewotICAgICAgICAgIGMtPm1vZGUgPSByID09IFpfU1RSRUFNX0VORCA/IFdBU0ggOiBCQURDT0RFOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0jZW5kaWYgLyogIVNMT1cgKi8KLSAgICAgIGMtPnN1Yi5jb2RlLm5lZWQgPSBjLT5sYml0czsKLSAgICAgIGMtPnN1Yi5jb2RlLnRyZWUgPSBjLT5sdHJlZTsKLSAgICAgIGMtPm1vZGUgPSBMRU47Ci0gICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBjYXNlIExFTjogICAgICAgICAgIC8qIGk6IGdldCBsZW5ndGgvbGl0ZXJhbC9lb2IgbmV4dCAqLwotICAgICAgaiA9IGMtPnN1Yi5jb2RlLm5lZWQ7Ci0gICAgICBORUVEQklUUyhqKQotICAgICAgdCA9IGMtPnN1Yi5jb2RlLnRyZWUgKyAoKHVJbnQpYiAmIGluZmxhdGVfbWFza1tqXSk7Ci0gICAgICBEVU1QQklUUyh0LT5iaXRzKQotICAgICAgZSA9ICh1SW50KSh0LT5leG9wKTsKLSAgICAgIGlmIChlID09IDApICAgICAgICAgICAgICAgLyogbGl0ZXJhbCAqLwotICAgICAgewotICAgICAgICBjLT5zdWIubGl0ID0gdC0+YmFzZTsKLSAgICAgICAgVHJhY2V2digoc3RkZXJyLCB0LT5iYXNlID49IDB4MjAgJiYgdC0+YmFzZSA8IDB4N2YgPwotICAgICAgICAgICAgICAgICAiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsICclYydcbiIgOgotICAgICAgICAgICAgICAgICAiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsIDB4JTAyeFxuIiwgdC0+YmFzZSkpOwotICAgICAgICBjLT5tb2RlID0gTElUOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGlmIChlICYgMTYpICAgICAgICAgICAgICAgLyogbGVuZ3RoICovCi0gICAgICB7Ci0gICAgICAgIGMtPnN1Yi5jb3B5LmdldCA9IGUgJiAxNTsKLSAgICAgICAgYy0+bGVuID0gdC0+YmFzZTsKLSAgICAgICAgYy0+bW9kZSA9IExFTkVYVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBpZiAoKGUgJiA2NCkgPT0gMCkgICAgICAgIC8qIG5leHQgdGFibGUgKi8KLSAgICAgIHsKLSAgICAgICAgYy0+c3ViLmNvZGUubmVlZCA9IGU7Ci0gICAgICAgIGMtPnN1Yi5jb2RlLnRyZWUgPSB0ICsgdC0+YmFzZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBpZiAoZSAmIDMyKSAgICAgICAgICAgICAgIC8qIGVuZCBvZiBibG9jayAqLwotICAgICAgewotICAgICAgICBUcmFjZXZ2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICAgIGVuZCBvZiBibG9ja1xuIikpOwotICAgICAgICBjLT5tb2RlID0gV0FTSDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBjLT5tb2RlID0gQkFEQ09ERTsgICAgICAgIC8qIGludmFsaWQgY29kZSAqLwotICAgICAgei0+bXNnID0gKGNoYXIqKSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiOwotICAgICAgciA9IFpfREFUQV9FUlJPUjsKLSAgICAgIExFQVZFCi0gICAgY2FzZSBMRU5FWFQ6ICAgICAgICAvKiBpOiBnZXR0aW5nIGxlbmd0aCBleHRyYSAoaGF2ZSBiYXNlKSAqLwotICAgICAgaiA9IGMtPnN1Yi5jb3B5LmdldDsKLSAgICAgIE5FRURCSVRTKGopCi0gICAgICBjLT5sZW4gKz0gKHVJbnQpYiAmIGluZmxhdGVfbWFza1tqXTsKLSAgICAgIERVTVBCSVRTKGopCi0gICAgICBjLT5zdWIuY29kZS5uZWVkID0gYy0+ZGJpdHM7Ci0gICAgICBjLT5zdWIuY29kZS50cmVlID0gYy0+ZHRyZWU7Ci0gICAgICBUcmFjZXZ2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICAgIGxlbmd0aCAldVxuIiwgYy0+bGVuKSk7Ci0gICAgICBjLT5tb2RlID0gRElTVDsKLSAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgIGNhc2UgRElTVDogICAgICAgICAgLyogaTogZ2V0IGRpc3RhbmNlIG5leHQgKi8KLSAgICAgIGogPSBjLT5zdWIuY29kZS5uZWVkOwotICAgICAgTkVFREJJVFMoaikKLSAgICAgIHQgPSBjLT5zdWIuY29kZS50cmVlICsgKCh1SW50KWIgJiBpbmZsYXRlX21hc2tbal0pOwotICAgICAgRFVNUEJJVFModC0+Yml0cykKLSAgICAgIGUgPSAodUludCkodC0+ZXhvcCk7Ci0gICAgICBpZiAoZSAmIDE2KSAgICAgICAgICAgICAgIC8qIGRpc3RhbmNlICovCi0gICAgICB7Ci0gICAgICAgIGMtPnN1Yi5jb3B5LmdldCA9IGUgJiAxNTsKLSAgICAgICAgYy0+c3ViLmNvcHkuZGlzdCA9IHQtPmJhc2U7Ci0gICAgICAgIGMtPm1vZGUgPSBESVNURVhUOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGlmICgoZSAmIDY0KSA9PSAwKSAgICAgICAgLyogbmV4dCB0YWJsZSAqLwotICAgICAgewotICAgICAgICBjLT5zdWIuY29kZS5uZWVkID0gZTsKLSAgICAgICAgYy0+c3ViLmNvZGUudHJlZSA9IHQgKyB0LT5iYXNlOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGMtPm1vZGUgPSBCQURDT0RFOyAgICAgICAgLyogaW52YWxpZCBjb2RlICovCi0gICAgICB6LT5tc2cgPSAoY2hhciopImludmFsaWQgZGlzdGFuY2UgY29kZSI7Ci0gICAgICByID0gWl9EQVRBX0VSUk9SOwotICAgICAgTEVBVkUKLSAgICBjYXNlIERJU1RFWFQ6ICAgICAgIC8qIGk6IGdldHRpbmcgZGlzdGFuY2UgZXh0cmEgKi8KLSAgICAgIGogPSBjLT5zdWIuY29weS5nZXQ7Ci0gICAgICBORUVEQklUUyhqKQotICAgICAgYy0+c3ViLmNvcHkuZGlzdCArPSAodUludCliICYgaW5mbGF0ZV9tYXNrW2pdOwotICAgICAgRFVNUEJJVFMoaikKLSAgICAgIFRyYWNldnYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgICAgZGlzdGFuY2UgJXVcbiIsIGMtPnN1Yi5jb3B5LmRpc3QpKTsKLSAgICAgIGMtPm1vZGUgPSBDT1BZOwotICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2FzZSBDT1BZOiAgICAgICAgICAvKiBvOiBjb3B5aW5nIGJ5dGVzIGluIHdpbmRvdywgd2FpdGluZyBmb3Igc3BhY2UgKi8KLSAgICAgIGYgPSBxIC0gYy0+c3ViLmNvcHkuZGlzdDsKLSAgICAgIHdoaWxlIChmIDwgcy0+d2luZG93KSAgICAgICAgICAgICAvKiBtb2R1bG8gd2luZG93IHNpemUtIndoaWxlIiBpbnN0ZWFkICovCi0gICAgICAgIGYgKz0gcy0+ZW5kIC0gcy0+d2luZG93OyAgICAgICAgLyogb2YgImlmIiBoYW5kbGVzIGludmFsaWQgZGlzdGFuY2VzICovCi0gICAgICB3aGlsZSAoYy0+bGVuKQotICAgICAgewotICAgICAgICBORUVET1VUCi0gICAgICAgIE9VVEJZVEUoKmYrKykKLSAgICAgICAgaWYgKGYgPT0gcy0+ZW5kKQotICAgICAgICAgIGYgPSBzLT53aW5kb3c7Ci0gICAgICAgIGMtPmxlbi0tOwotICAgICAgfQotICAgICAgYy0+bW9kZSA9IFNUQVJUOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMSVQ6ICAgICAgICAgICAvKiBvOiBnb3QgbGl0ZXJhbCwgd2FpdGluZyBmb3Igb3V0cHV0IHNwYWNlICovCi0gICAgICBORUVET1VUCi0gICAgICBPVVRCWVRFKGMtPnN1Yi5saXQpCi0gICAgICBjLT5tb2RlID0gU1RBUlQ7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFdBU0g6ICAgICAgICAgIC8qIG86IGdvdCBlb2IsIHBvc3NpYmx5IG1vcmUgb3V0cHV0ICovCi0gICAgICBpZiAoayA+IDcpICAgICAgICAvKiByZXR1cm4gdW51c2VkIGJ5dGUsIGlmIGFueSAqLwotICAgICAgewotICAgICAgICBBc3NlcnQoayA8IDE2LCAiaW5mbGF0ZV9jb2RlcyBncmFiYmVkIHRvbyBtYW55IGJ5dGVzIikKLSAgICAgICAgayAtPSA4OwotICAgICAgICBuKys7Ci0gICAgICAgIHAtLTsgICAgICAgICAgICAvKiBjYW4gYWx3YXlzIHJldHVybiBvbmUgKi8KLSAgICAgIH0KLSAgICAgIEZMVVNICi0gICAgICBpZiAocy0+cmVhZCAhPSBzLT53cml0ZSkKLSAgICAgICAgTEVBVkUKLSAgICAgIGMtPm1vZGUgPSBFTkQ7Ci0gICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBjYXNlIEVORDoKLSAgICAgIHIgPSBaX1NUUkVBTV9FTkQ7Ci0gICAgICBMRUFWRQotICAgIGNhc2UgQkFEQ09ERTogICAgICAgLyogeDogZ290IGVycm9yICovCi0gICAgICByID0gWl9EQVRBX0VSUk9SOwotICAgICAgTEVBVkUKLSAgICBkZWZhdWx0OgotICAgICAgciA9IFpfU1RSRUFNX0VSUk9SOwotICAgICAgTEVBVkUKLSAgfQotI2lmZGVmIE5FRURfRFVNTVlfUkVUVVJOCi0gIHJldHVybiBaX1NUUkVBTV9FUlJPUjsgIC8qIFNvbWUgZHVtYiBjb21waWxlcnMgY29tcGxhaW4gd2l0aG91dCB0aGlzICovCi0jZW5kaWYKLX0KLQotCi1sb2NhbCB2b2lkIGluZmxhdGVfY29kZXNfZnJlZSggLyogYywgeikgKi8KLWluZmxhdGVfY29kZXNfc3RhdGVmICpjLAotel9zdHJlYW1wIHogKQotewotICBaRlJFRSh6LCBjKTsKLSAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICBjb2RlcyBmcmVlXG4iKSk7Ci19CmRpZmYgLS1naXQgYS9zcmMvZ3ppcC9pbmZjb2Rlcy5oIGIvc3JjL2d6aXAvaW5mY29kZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0ZDdmOC4uMDAwMDAwMAotLS0gYS9zcmMvZ3ppcC9pbmZjb2Rlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotLyogaW5mY29kZXMuaCAtLSBoZWFkZXIgdG8gdXNlIGluZmNvZGVzLmMKLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDAyIE1hcmsgQWRsZXIKLSAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKLSAqLwotCi0vKiBXQVJOSU5HOiB0aGlzIGZpbGUgc2hvdWxkICpub3QqIGJlIHVzZWQgYnkgYXBwbGljYXRpb25zLiBJdCBpcwotICAgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkgYW5kIGlzCi0gICBzdWJqZWN0IHRvIGNoYW5nZS4gQXBwbGljYXRpb25zIHNob3VsZCBvbmx5IHVzZSB6bGliLmguCi0gKi8KLQotI2lmbmRlZiBfSU5GQ09ERVNfSAotI2RlZmluZSBfSU5GQ09ERVNfSAotCi1zdHJ1Y3QgaW5mbGF0ZV9jb2Rlc19zdGF0ZTsKLXR5cGVkZWYgc3RydWN0IGluZmxhdGVfY29kZXNfc3RhdGUgRkFSIGluZmxhdGVfY29kZXNfc3RhdGVmOwotCi1sb2NhbCBpbmZsYXRlX2NvZGVzX3N0YXRlZiAqaW5mbGF0ZV9jb2Rlc19uZXcgT0YoKAotICAgIHVJbnQsIHVJbnQsCi0gICAgaW5mbGF0ZV9odWZ0ICosIGluZmxhdGVfaHVmdCAqLAotICAgIHpfc3RyZWFtcCApKTsKLQotbG9jYWwgaW50IGluZmxhdGVfY29kZXMgT0YoKAotICAgIGluZmxhdGVfYmxvY2tzX3N0YXRlZiAqLAotICAgIHpfc3RyZWFtcCAsCi0gICAgaW50KSk7Ci0KLWxvY2FsIHZvaWQgaW5mbGF0ZV9jb2Rlc19mcmVlIE9GKCgKLSAgICBpbmZsYXRlX2NvZGVzX3N0YXRlZiAqLAotICAgIHpfc3RyZWFtcCApKTsKLQotI2VuZGlmIC8qIF9JTkZDT0RFU19IICovCmRpZmYgLS1naXQgYS9zcmMvZ3ppcC9pbmZmYXN0LmMgYi9zcmMvZ3ppcC9pbmZmYXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA5NzM3YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9nemlwL2luZmZhc3QuYwpAQCAtMCwwICsxLDMyMyBAQAorLyogaW5mZmFzdC5jIC0tIGZhc3QgZGVjb2RpbmcKKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDE3IE1hcmsgQWRsZXIKKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKKyAqLworCisjaW5jbHVkZSAienV0aWwuaCIKKyNpbmNsdWRlICJpbmZ0cmVlcy5oIgorI2luY2x1ZGUgImluZmxhdGUuaCIKKyNpbmNsdWRlICJpbmZmYXN0LmgiCisKKyNpZmRlZiBBU01JTkYKKyMgIHByYWdtYSBtZXNzYWdlKCJBc3NlbWJsZXIgY29kZSBtYXkgaGF2ZSBidWdzIC0tIHVzZSBhdCB5b3VyIG93biByaXNrIikKKyNlbHNlCisKKy8qCisgICBEZWNvZGUgbGl0ZXJhbCwgbGVuZ3RoLCBhbmQgZGlzdGFuY2UgY29kZXMgYW5kIHdyaXRlIG91dCB0aGUgcmVzdWx0aW5nCisgICBsaXRlcmFsIGFuZCBtYXRjaCBieXRlcyB1bnRpbCBlaXRoZXIgbm90IGVub3VnaCBpbnB1dCBvciBvdXRwdXQgaXMKKyAgIGF2YWlsYWJsZSwgYW4gZW5kLW9mLWJsb2NrIGlzIGVuY291bnRlcmVkLCBvciBhIGRhdGEgZXJyb3IgaXMgZW5jb3VudGVyZWQuCisgICBXaGVuIGxhcmdlIGVub3VnaCBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMgYXJlIHN1cHBsaWVkIHRvIGluZmxhdGUoKSwgZm9yCisgICBleGFtcGxlLCBhIDE2SyBpbnB1dCBidWZmZXIgYW5kIGEgNjRLIG91dHB1dCBidWZmZXIsIG1vcmUgdGhhbiA5NSUgb2YgdGhlCisgICBpbmZsYXRlIGV4ZWN1dGlvbiB0aW1lIGlzIHNwZW50IGluIHRoaXMgcm91dGluZS4KKworICAgRW50cnkgYXNzdW1wdGlvbnM6CisKKyAgICAgICAgc3RhdGUtPm1vZGUgPT0gTEVOCisgICAgICAgIHN0cm0tPmF2YWlsX2luID49IDYKKyAgICAgICAgc3RybS0+YXZhaWxfb3V0ID49IDI1OAorICAgICAgICBzdGFydCA+PSBzdHJtLT5hdmFpbF9vdXQKKyAgICAgICAgc3RhdGUtPmJpdHMgPCA4CisKKyAgIE9uIHJldHVybiwgc3RhdGUtPm1vZGUgaXMgb25lIG9mOgorCisgICAgICAgIExFTiAtLSByYW4gb3V0IG9mIGVub3VnaCBvdXRwdXQgc3BhY2Ugb3IgZW5vdWdoIGF2YWlsYWJsZSBpbnB1dAorICAgICAgICBUWVBFIC0tIHJlYWNoZWQgZW5kIG9mIGJsb2NrIGNvZGUsIGluZmxhdGUoKSB0byBpbnRlcnByZXQgbmV4dCBibG9jaworICAgICAgICBCQUQgLS0gZXJyb3IgaW4gYmxvY2sgZGF0YQorCisgICBOb3RlczoKKworICAgIC0gVGhlIG1heGltdW0gaW5wdXQgYml0cyB1c2VkIGJ5IGEgbGVuZ3RoL2Rpc3RhbmNlIHBhaXIgaXMgMTUgYml0cyBmb3IgdGhlCisgICAgICBsZW5ndGggY29kZSwgNSBiaXRzIGZvciB0aGUgbGVuZ3RoIGV4dHJhLCAxNSBiaXRzIGZvciB0aGUgZGlzdGFuY2UgY29kZSwKKyAgICAgIGFuZCAxMyBiaXRzIGZvciB0aGUgZGlzdGFuY2UgZXh0cmEuICBUaGlzIHRvdGFscyA0OCBiaXRzLCBvciBzaXggYnl0ZXMuCisgICAgICBUaGVyZWZvcmUgaWYgc3RybS0+YXZhaWxfaW4gPj0gNiwgdGhlbiB0aGVyZSBpcyBlbm91Z2ggaW5wdXQgdG8gYXZvaWQKKyAgICAgIGNoZWNraW5nIGZvciBhdmFpbGFibGUgaW5wdXQgd2hpbGUgZGVjb2RpbmcuCisKKyAgICAtIFRoZSBtYXhpbXVtIGJ5dGVzIHRoYXQgYSBzaW5nbGUgbGVuZ3RoL2Rpc3RhbmNlIHBhaXIgY2FuIG91dHB1dCBpcyAyNTgKKyAgICAgIGJ5dGVzLCB3aGljaCBpcyB0aGUgbWF4aW11bSBsZW5ndGggdGhhdCBjYW4gYmUgY29kZWQuICBpbmZsYXRlX2Zhc3QoKQorICAgICAgcmVxdWlyZXMgc3RybS0+YXZhaWxfb3V0ID49IDI1OCBmb3IgZWFjaCBsb29wIHRvIGF2b2lkIGNoZWNraW5nIGZvcgorICAgICAgb3V0cHV0IHNwYWNlLgorICovCit2b2lkIFpMSUJfSU5URVJOQUwgaW5mbGF0ZV9mYXN0KAorICAgIHpfc3RyZWFtcCBzdHJtLAorICAgIHVuc2lnbmVkIHN0YXJ0KQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisgICAgel9jb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqaW47ICAgICAgLyogbG9jYWwgc3RybS0+bmV4dF9pbiAqLworICAgIHpfY29uc3QgdW5zaWduZWQgY2hhciBGQVIgKmxhc3Q7ICAgIC8qIGhhdmUgZW5vdWdoIGlucHV0IHdoaWxlIGluIDwgbGFzdCAqLworICAgIHVuc2lnbmVkIGNoYXIgRkFSICpvdXQ7ICAgICAvKiBsb2NhbCBzdHJtLT5uZXh0X291dCAqLworICAgIHVuc2lnbmVkIGNoYXIgRkFSICpiZWc7ICAgICAvKiBpbmZsYXRlKCkncyBpbml0aWFsIHN0cm0tPm5leHRfb3V0ICovCisgICAgdW5zaWduZWQgY2hhciBGQVIgKmVuZDsgICAgIC8qIHdoaWxlIG91dCA8IGVuZCwgZW5vdWdoIHNwYWNlIGF2YWlsYWJsZSAqLworI2lmZGVmIElORkxBVEVfU1RSSUNUCisgICAgdW5zaWduZWQgZG1heDsgICAgICAgICAgICAgIC8qIG1heGltdW0gZGlzdGFuY2UgZnJvbSB6bGliIGhlYWRlciAqLworI2VuZGlmCisgICAgdW5zaWduZWQgd3NpemU7ICAgICAgICAgICAgIC8qIHdpbmRvdyBzaXplIG9yIHplcm8gaWYgbm90IHVzaW5nIHdpbmRvdyAqLworICAgIHVuc2lnbmVkIHdoYXZlOyAgICAgICAgICAgICAvKiB2YWxpZCBieXRlcyBpbiB0aGUgd2luZG93ICovCisgICAgdW5zaWduZWQgd25leHQ7ICAgICAgICAgICAgIC8qIHdpbmRvdyB3cml0ZSBpbmRleCAqLworICAgIHVuc2lnbmVkIGNoYXIgRkFSICp3aW5kb3c7ICAvKiBhbGxvY2F0ZWQgc2xpZGluZyB3aW5kb3csIGlmIHdzaXplICE9IDAgKi8KKyAgICB1bnNpZ25lZCBsb25nIGhvbGQ7ICAgICAgICAgLyogbG9jYWwgc3RybS0+aG9sZCAqLworICAgIHVuc2lnbmVkIGJpdHM7ICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLT5iaXRzICovCisgICAgY29kZSBjb25zdCBGQVIgKmxjb2RlOyAgICAgIC8qIGxvY2FsIHN0cm0tPmxlbmNvZGUgKi8KKyAgICBjb2RlIGNvbnN0IEZBUiAqZGNvZGU7ICAgICAgLyogbG9jYWwgc3RybS0+ZGlzdGNvZGUgKi8KKyAgICB1bnNpZ25lZCBsbWFzazsgICAgICAgICAgICAgLyogbWFzayBmb3IgZmlyc3QgbGV2ZWwgb2YgbGVuZ3RoIGNvZGVzICovCisgICAgdW5zaWduZWQgZG1hc2s7ICAgICAgICAgICAgIC8qIG1hc2sgZm9yIGZpcnN0IGxldmVsIG9mIGRpc3RhbmNlIGNvZGVzICovCisgICAgY29kZSBjb25zdCAqaGVyZTsgICAgICAgICAgIC8qIHJldHJpZXZlZCB0YWJsZSBlbnRyeSAqLworICAgIHVuc2lnbmVkIG9wOyAgICAgICAgICAgICAgICAvKiBjb2RlIGJpdHMsIG9wZXJhdGlvbiwgZXh0cmEgYml0cywgb3IgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIHdpbmRvdyBwb3NpdGlvbiwgd2luZG93IGJ5dGVzIHRvIGNvcHkgKi8KKyAgICB1bnNpZ25lZCBsZW47ICAgICAgICAgICAgICAgLyogbWF0Y2ggbGVuZ3RoLCB1bnVzZWQgYnl0ZXMgKi8KKyAgICB1bnNpZ25lZCBkaXN0OyAgICAgICAgICAgICAgLyogbWF0Y2ggZGlzdGFuY2UgKi8KKyAgICB1bnNpZ25lZCBjaGFyIEZBUiAqZnJvbTsgICAgLyogd2hlcmUgdG8gY29weSBtYXRjaCBmcm9tICovCisKKyAgICAvKiBjb3B5IHN0YXRlIHRvIGxvY2FsIHZhcmlhYmxlcyAqLworICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOworICAgIGluID0gc3RybS0+bmV4dF9pbjsKKyAgICBsYXN0ID0gaW4gKyAoc3RybS0+YXZhaWxfaW4gLSA1KTsKKyAgICBvdXQgPSBzdHJtLT5uZXh0X291dDsKKyAgICBiZWcgPSBvdXQgLSAoc3RhcnQgLSBzdHJtLT5hdmFpbF9vdXQpOworICAgIGVuZCA9IG91dCArIChzdHJtLT5hdmFpbF9vdXQgLSAyNTcpOworI2lmZGVmIElORkxBVEVfU1RSSUNUCisgICAgZG1heCA9IHN0YXRlLT5kbWF4OworI2VuZGlmCisgICAgd3NpemUgPSBzdGF0ZS0+d3NpemU7CisgICAgd2hhdmUgPSBzdGF0ZS0+d2hhdmU7CisgICAgd25leHQgPSBzdGF0ZS0+d25leHQ7CisgICAgd2luZG93ID0gc3RhdGUtPndpbmRvdzsKKyAgICBob2xkID0gc3RhdGUtPmhvbGQ7CisgICAgYml0cyA9IHN0YXRlLT5iaXRzOworICAgIGxjb2RlID0gc3RhdGUtPmxlbmNvZGU7CisgICAgZGNvZGUgPSBzdGF0ZS0+ZGlzdGNvZGU7CisgICAgbG1hc2sgPSAoMVUgPDwgc3RhdGUtPmxlbmJpdHMpIC0gMTsKKyAgICBkbWFzayA9ICgxVSA8PCBzdGF0ZS0+ZGlzdGJpdHMpIC0gMTsKKworICAgIC8qIGRlY29kZSBsaXRlcmFscyBhbmQgbGVuZ3RoL2Rpc3RhbmNlcyB1bnRpbCBlbmQtb2YtYmxvY2sgb3Igbm90IGVub3VnaAorICAgICAgIGlucHV0IGRhdGEgb3Igb3V0cHV0IHNwYWNlICovCisgICAgZG8geworICAgICAgICBpZiAoYml0cyA8IDE1KSB7CisgICAgICAgICAgICBob2xkICs9ICh1bnNpZ25lZCBsb25nKSgqaW4rKykgPDwgYml0czsKKyAgICAgICAgICAgIGJpdHMgKz0gODsKKyAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKCppbisrKSA8PCBiaXRzOworICAgICAgICAgICAgYml0cyArPSA4OworICAgICAgICB9CisgICAgICAgIGhlcmUgPSBsY29kZSArIChob2xkICYgbG1hc2spOworICAgICAgZG9sZW46CisgICAgICAgIG9wID0gKHVuc2lnbmVkKShoZXJlLT5iaXRzKTsKKyAgICAgICAgaG9sZCA+Pj0gb3A7CisgICAgICAgIGJpdHMgLT0gb3A7CisgICAgICAgIG9wID0gKHVuc2lnbmVkKShoZXJlLT5vcCk7CisgICAgICAgIGlmIChvcCA9PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsaXRlcmFsICovCisgICAgICAgICAgICBUcmFjZXZ2KChzdGRlcnIsIGhlcmUtPnZhbCA+PSAweDIwICYmIGhlcmUtPnZhbCA8IDB4N2YgPworICAgICAgICAgICAgICAgICAgICAiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsICclYydcbiIgOgorICAgICAgICAgICAgICAgICAgICAiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsIDB4JTAyeFxuIiwgaGVyZS0+dmFsKSk7CisgICAgICAgICAgICAqb3V0KysgPSAodW5zaWduZWQgY2hhcikoaGVyZS0+dmFsKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChvcCAmIDE2KSB7ICAgICAgICAgICAgICAgICAgICAgLyogbGVuZ3RoIGJhc2UgKi8KKyAgICAgICAgICAgIGxlbiA9ICh1bnNpZ25lZCkoaGVyZS0+dmFsKTsKKyAgICAgICAgICAgIG9wICY9IDE1OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBleHRyYSBiaXRzICovCisgICAgICAgICAgICBpZiAob3ApIHsKKyAgICAgICAgICAgICAgICBpZiAoYml0cyA8IG9wKSB7CisgICAgICAgICAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKCppbisrKSA8PCBiaXRzOworICAgICAgICAgICAgICAgICAgICBiaXRzICs9IDg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxlbiArPSAodW5zaWduZWQpaG9sZCAmICgoMVUgPDwgb3ApIC0gMSk7CisgICAgICAgICAgICAgICAgaG9sZCA+Pj0gb3A7CisgICAgICAgICAgICAgICAgYml0cyAtPSBvcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFRyYWNldnYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgICAgbGVuZ3RoICV1XG4iLCBsZW4pKTsKKyAgICAgICAgICAgIGlmIChiaXRzIDwgMTUpIHsKKyAgICAgICAgICAgICAgICBob2xkICs9ICh1bnNpZ25lZCBsb25nKSgqaW4rKykgPDwgYml0czsKKyAgICAgICAgICAgICAgICBiaXRzICs9IDg7CisgICAgICAgICAgICAgICAgaG9sZCArPSAodW5zaWduZWQgbG9uZykoKmluKyspIDw8IGJpdHM7CisgICAgICAgICAgICAgICAgYml0cyArPSA4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaGVyZSA9IGRjb2RlICsgKGhvbGQgJiBkbWFzayk7CisgICAgICAgICAgZG9kaXN0OgorICAgICAgICAgICAgb3AgPSAodW5zaWduZWQpKGhlcmUtPmJpdHMpOworICAgICAgICAgICAgaG9sZCA+Pj0gb3A7CisgICAgICAgICAgICBiaXRzIC09IG9wOworICAgICAgICAgICAgb3AgPSAodW5zaWduZWQpKGhlcmUtPm9wKTsKKyAgICAgICAgICAgIGlmIChvcCAmIDE2KSB7ICAgICAgICAgICAgICAgICAgICAgIC8qIGRpc3RhbmNlIGJhc2UgKi8KKyAgICAgICAgICAgICAgICBkaXN0ID0gKHVuc2lnbmVkKShoZXJlLT52YWwpOworICAgICAgICAgICAgICAgIG9wICY9IDE1OyAgICAgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGV4dHJhIGJpdHMgKi8KKyAgICAgICAgICAgICAgICBpZiAoYml0cyA8IG9wKSB7CisgICAgICAgICAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKCppbisrKSA8PCBiaXRzOworICAgICAgICAgICAgICAgICAgICBiaXRzICs9IDg7CisgICAgICAgICAgICAgICAgICAgIGlmIChiaXRzIDwgb3ApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKCppbisrKSA8PCBiaXRzOworICAgICAgICAgICAgICAgICAgICAgICAgYml0cyArPSA4OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRpc3QgKz0gKHVuc2lnbmVkKWhvbGQgJiAoKDFVIDw8IG9wKSAtIDEpOworI2lmZGVmIElORkxBVEVfU1RSSUNUCisgICAgICAgICAgICAgICAgaWYgKGRpc3QgPiBkbWF4KSB7CisgICAgICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIjsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgICAgIGhvbGQgPj49IG9wOworICAgICAgICAgICAgICAgIGJpdHMgLT0gb3A7CisgICAgICAgICAgICAgICAgVHJhY2V2digoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgICBkaXN0YW5jZSAldVxuIiwgZGlzdCkpOworICAgICAgICAgICAgICAgIG9wID0gKHVuc2lnbmVkKShvdXQgLSBiZWcpOyAgICAgLyogbWF4IGRpc3RhbmNlIGluIG91dHB1dCAqLworICAgICAgICAgICAgICAgIGlmIChkaXN0ID4gb3ApIHsgICAgICAgICAgICAgICAgLyogc2VlIGlmIGNvcHkgZnJvbSB3aW5kb3cgKi8KKyAgICAgICAgICAgICAgICAgICAgb3AgPSBkaXN0IC0gb3A7ICAgICAgICAgICAgIC8qIGRpc3RhbmNlIGJhY2sgaW4gd2luZG93ICovCisgICAgICAgICAgICAgICAgICAgIGlmIChvcCA+IHdoYXZlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPnNhbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisjaWZkZWYgSU5GTEFURV9BTExPV19JTlZBTElEX0RJU1RBTkNFX1RPT0ZBUl9BUlJSCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuIDw9IG9wIC0gd2hhdmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpvdXQrKyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1sZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbGVuIC09IG9wIC0gd2hhdmU7CisgICAgICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm91dCsrID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3AgPiB3aGF2ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3AgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gPSBvdXQgLSBkaXN0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm91dCsrID0gKmZyb20rKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLWxlbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBmcm9tID0gd2luZG93OworICAgICAgICAgICAgICAgICAgICBpZiAod25leHQgPT0gMCkgeyAgICAgICAgICAgLyogdmVyeSBjb21tb24gY2FzZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSArPSB3c2l6ZSAtIG9wOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wIDwgbGVuKSB7ICAgICAgICAgLyogc29tZSBmcm9tIHdpbmRvdyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpvdXQrKyA9ICpmcm9tKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA9IG91dCAtIGRpc3Q7ICAvKiByZXN0IGZyb20gb3V0cHV0ICovCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAod25leHQgPCBvcCkgeyAgICAgIC8qIHdyYXAgYXJvdW5kIHdpbmRvdyAqLworICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSArPSB3c2l6ZSArIHduZXh0IC0gb3A7CisgICAgICAgICAgICAgICAgICAgICAgICBvcCAtPSB3bmV4dDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcCA8IGxlbikgeyAgICAgICAgIC8qIHNvbWUgZnJvbSBlbmQgb2Ygd2luZG93ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuIC09IG9wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm91dCsrID0gKmZyb20rKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLW9wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tID0gd2luZG93OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3bmV4dCA8IGxlbikgeyAgLyogc29tZSBmcm9tIHN0YXJ0IG9mIHdpbmRvdyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IHduZXh0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gLT0gb3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpvdXQrKyA9ICpmcm9tKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3ApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tID0gb3V0IC0gZGlzdDsgICAgICAvKiByZXN0IGZyb20gb3V0cHV0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAvKiBjb250aWd1b3VzIGluIHdpbmRvdyAqLworICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSArPSB3bmV4dCAtIG9wOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wIDwgbGVuKSB7ICAgICAgICAgLyogc29tZSBmcm9tIHdpbmRvdyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpvdXQrKyA9ICpmcm9tKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA9IG91dCAtIGRpc3Q7ICAvKiByZXN0IGZyb20gb3V0cHV0ICovCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGxlbiA+IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpvdXQrKyA9ICpmcm9tKys7CisgICAgICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSAqZnJvbSsrOworICAgICAgICAgICAgICAgICAgICAgICAgKm91dCsrID0gKmZyb20rKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbiAtPSAzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChsZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpvdXQrKyA9ICpmcm9tKys7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuID4gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSAqZnJvbSsrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBmcm9tID0gb3V0IC0gZGlzdDsgICAgICAgICAgLyogY29weSBkaXJlY3QgZnJvbSBvdXRwdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1pbmltdW0gbGVuZ3RoIGlzIHRocmVlICovCisgICAgICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSAqZnJvbSsrOworICAgICAgICAgICAgICAgICAgICAgICAgKm91dCsrID0gKmZyb20rKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICpvdXQrKyA9ICpmcm9tKys7CisgICAgICAgICAgICAgICAgICAgICAgICBsZW4gLT0gMzsKKyAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAobGVuID4gMik7CisgICAgICAgICAgICAgICAgICAgIGlmIChsZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpvdXQrKyA9ICpmcm9tKys7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuID4gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSAqZnJvbSsrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoKG9wICYgNjQpID09IDApIHsgICAgICAgICAgLyogMm5kIGxldmVsIGRpc3RhbmNlIGNvZGUgKi8KKyAgICAgICAgICAgICAgICBoZXJlID0gZGNvZGUgKyBoZXJlLT52YWwgKyAoaG9sZCAmICgoMVUgPDwgb3ApIC0gMSkpOworICAgICAgICAgICAgICAgIGdvdG8gZG9kaXN0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBkaXN0YW5jZSBjb2RlIjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICgob3AgJiA2NCkgPT0gMCkgeyAgICAgICAgICAgICAgLyogMm5kIGxldmVsIGxlbmd0aCBjb2RlICovCisgICAgICAgICAgICBoZXJlID0gbGNvZGUgKyBoZXJlLT52YWwgKyAoaG9sZCAmICgoMVUgPDwgb3ApIC0gMSkpOworICAgICAgICAgICAgZ290byBkb2xlbjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChvcCAmIDMyKSB7ICAgICAgICAgICAgICAgICAgICAgLyogZW5kLW9mLWJsb2NrICovCisgICAgICAgICAgICBUcmFjZXZ2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICAgIGVuZCBvZiBibG9ja1xuIikpOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBUWVBFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gd2hpbGUgKGluIDwgbGFzdCAmJiBvdXQgPCBlbmQpOworCisgICAgLyogcmV0dXJuIHVudXNlZCBieXRlcyAob24gZW50cnksIGJpdHMgPCA4LCBzbyBpbiB3b24ndCBnbyB0b28gZmFyIGJhY2spICovCisgICAgbGVuID0gYml0cyA+PiAzOworICAgIGluIC09IGxlbjsKKyAgICBiaXRzIC09IGxlbiA8PCAzOworICAgIGhvbGQgJj0gKDFVIDw8IGJpdHMpIC0gMTsKKworICAgIC8qIHVwZGF0ZSBzdGF0ZSBhbmQgcmV0dXJuICovCisgICAgc3RybS0+bmV4dF9pbiA9IGluOworICAgIHN0cm0tPm5leHRfb3V0ID0gb3V0OworICAgIHN0cm0tPmF2YWlsX2luID0gKHVuc2lnbmVkKShpbiA8IGxhc3QgPyA1ICsgKGxhc3QgLSBpbikgOiA1IC0gKGluIC0gbGFzdCkpOworICAgIHN0cm0tPmF2YWlsX291dCA9ICh1bnNpZ25lZCkob3V0IDwgZW5kID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NyArIChlbmQgLSBvdXQpIDogMjU3IC0gKG91dCAtIGVuZCkpOworICAgIHN0YXRlLT5ob2xkID0gaG9sZDsKKyAgICBzdGF0ZS0+Yml0cyA9IGJpdHM7CisgICAgcmV0dXJuOworfQorCisvKgorICAgaW5mbGF0ZV9mYXN0KCkgc3BlZWR1cHMgdGhhdCB0dXJuZWQgb3V0IHNsb3dlciAob24gYSBQb3dlclBDIEczIDc1MENYZSk6CisgICAtIFVzaW5nIGJpdCBmaWVsZHMgZm9yIGNvZGUgc3RydWN0dXJlCisgICAtIERpZmZlcmVudCBvcCBkZWZpbml0aW9uIHRvIGF2b2lkICYgZm9yIGV4dHJhIGJpdHMgKGRvICYgZm9yIHRhYmxlIGJpdHMpCisgICAtIFRocmVlIHNlcGFyYXRlIGRlY29kaW5nIGRvLWxvb3BzIGZvciBkaXJlY3QsIHdpbmRvdywgYW5kIHduZXh0ID09IDAKKyAgIC0gU3BlY2lhbCBjYXNlIGZvciBkaXN0YW5jZSA+IDEgY29waWVzIHRvIGRvIG92ZXJsYXBwZWQgbG9hZCBhbmQgc3RvcmUgY29weQorICAgLSBFeHBsaWNpdCBicmFuY2ggcHJlZGljdGlvbnMgKGJhc2VkIG9uIG1lYXN1cmVkIGJyYW5jaCBwcm9iYWJpbGl0aWVzKQorICAgLSBEZWZlcnJpbmcgbWF0Y2ggY29weSBhbmQgaW50ZXJzcGVyc2VkIGl0IHdpdGggZGVjb2Rpbmcgc3Vic2VxdWVudCBjb2RlcworICAgLSBTd2FwcGluZyBsaXRlcmFsL2xlbmd0aCBlbHNlCisgICAtIFN3YXBwaW5nIHdpbmRvdy9kaXJlY3QgZWxzZQorICAgLSBMYXJnZXIgdW5yb2xsZWQgY29weSBsb29wcyAodGhyZWUgaXMgYWJvdXQgcmlnaHQpCisgICAtIE1vdmluZyBsZW4gLT0gMyBzdGF0ZW1lbnQgaW50byBtaWRkbGUgb2YgbG9vcAorICovCisKKyNlbmRpZiAvKiAhQVNNSU5GICovCmRpZmYgLS1naXQgYS9zcmMvZ3ppcC9pbmZmYXN0LmggYi9zcmMvZ3ppcC9pbmZmYXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg0YWU4NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9nemlwL2luZmZhc3QuaApAQCAtMCwwICsxLDExIEBACisvKiBpbmZmYXN0LmggLS0gaGVhZGVyIHRvIHVzZSBpbmZmYXN0LmMKKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDAzLCAyMDEwIE1hcmsgQWRsZXIKKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKKyAqLworCisvKiBXQVJOSU5HOiB0aGlzIGZpbGUgc2hvdWxkICpub3QqIGJlIHVzZWQgYnkgYXBwbGljYXRpb25zLiBJdCBpcworICAgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkgYW5kIGlzCisgICBzdWJqZWN0IHRvIGNoYW5nZS4gQXBwbGljYXRpb25zIHNob3VsZCBvbmx5IHVzZSB6bGliLmguCisgKi8KKworc3RhdGljIHZvaWQgWkxJQl9JTlRFUk5BTCBpbmZsYXRlX2Zhc3QgT0YoKHpfc3RyZWFtcCBzdHJtLCB1bnNpZ25lZCBzdGFydCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2d6aXAvaW5mZml4ZWQuaCBiL3NyYy9nemlwL2luZmZpeGVkLmgKaW5kZXggNGQ0NzYwZS4uZDYyODMyNyAxMDA2NDQKLS0tIGEvc3JjL2d6aXAvaW5mZml4ZWQuaAorKysgYi9zcmMvZ3ppcC9pbmZmaXhlZC5oCkBAIC0xLDE1MSArMSw5NCBAQAotLyogaW5mZml4ZWQuaCAtLSB0YWJsZSBmb3IgZGVjb2RpbmcgZml4ZWQgY29kZXMKLSAqIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBtYWtldHJlZS5jIHByb2dyYW0KLSAqLworICAgIC8qIGluZmZpeGVkLmggLS0gdGFibGUgZm9yIGRlY29kaW5nIGZpeGVkIGNvZGVzCisgICAgICogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgbWFrZWZpeGVkKCkuCisgICAgICovCiAKLS8qIFdBUk5JTkc6IHRoaXMgZmlsZSBzaG91bGQgKm5vdCogYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMuIEl0IGlzCi0gICBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY29tcHJlc3Npb24gbGlicmFyeSBhbmQgaXMKLSAgIHN1YmplY3QgdG8gY2hhbmdlLiBBcHBsaWNhdGlvbnMgc2hvdWxkIG9ubHkgdXNlIHpsaWIuaC4KLSAqLworICAgIC8qIFdBUk5JTkc6IHRoaXMgZmlsZSBzaG91bGQgKm5vdCogYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMuCisgICAgICAgSXQgaXMgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBsaWJyYXJ5IGFuZCBpcworICAgICAgIHN1YmplY3QgdG8gY2hhbmdlLiBBcHBsaWNhdGlvbnMgc2hvdWxkIG9ubHkgdXNlIHpsaWIuaC4KKyAgICAgKi8KIAotbG9jYWwgY29uc3QgdUludCBmaXhlZF9ibCA9IDk7Ci1sb2NhbCBjb25zdCB1SW50IGZpeGVkX2JkID0gNTsKLWxvY2FsIGNvbnN0IGluZmxhdGVfaHVmdCBmaXhlZF90bFtdID0gewotICAgIHt7ezk2LDd9fSwyNTZ9LCB7e3swLDh9fSw4MH0sIHt7ezAsOH19LDE2fSwge3t7ODQsOH19LDExNX0sCi0gICAge3t7ODIsN319LDMxfSwge3t7MCw4fX0sMTEyfSwge3t7MCw4fX0sNDh9LCB7e3swLDl9fSwxOTJ9LAotICAgIHt7ezgwLDd9fSwxMH0sIHt7ezAsOH19LDk2fSwge3t7MCw4fX0sMzJ9LCB7e3swLDl9fSwxNjB9LAotICAgIHt7ezAsOH19LDB9LCB7e3swLDh9fSwxMjh9LCB7e3swLDh9fSw2NH0sIHt7ezAsOX19LDIyNH0sCi0gICAge3t7ODAsN319LDZ9LCB7e3swLDh9fSw4OH0sIHt7ezAsOH19LDI0fSwge3t7MCw5fX0sMTQ0fSwKLSAgICB7e3s4Myw3fX0sNTl9LCB7e3swLDh9fSwxMjB9LCB7e3swLDh9fSw1Nn0sIHt7ezAsOX19LDIwOH0sCi0gICAge3t7ODEsN319LDE3fSwge3t7MCw4fX0sMTA0fSwge3t7MCw4fX0sNDB9LCB7e3swLDl9fSwxNzZ9LAotICAgIHt7ezAsOH19LDh9LCB7e3swLDh9fSwxMzZ9LCB7e3swLDh9fSw3Mn0sIHt7ezAsOX19LDI0MH0sCi0gICAge3t7ODAsN319LDR9LCB7e3swLDh9fSw4NH0sIHt7ezAsOH19LDIwfSwge3t7ODUsOH19LDIyN30sCi0gICAge3t7ODMsN319LDQzfSwge3t7MCw4fX0sMTE2fSwge3t7MCw4fX0sNTJ9LCB7e3swLDl9fSwyMDB9LAotICAgIHt7ezgxLDd9fSwxM30sIHt7ezAsOH19LDEwMH0sIHt7ezAsOH19LDM2fSwge3t7MCw5fX0sMTY4fSwKLSAgICB7e3swLDh9fSw0fSwge3t7MCw4fX0sMTMyfSwge3t7MCw4fX0sNjh9LCB7e3swLDl9fSwyMzJ9LAotICAgIHt7ezgwLDd9fSw4fSwge3t7MCw4fX0sOTJ9LCB7e3swLDh9fSwyOH0sIHt7ezAsOX19LDE1Mn0sCi0gICAge3t7ODQsN319LDgzfSwge3t7MCw4fX0sMTI0fSwge3t7MCw4fX0sNjB9LCB7e3swLDl9fSwyMTZ9LAotICAgIHt7ezgyLDd9fSwyM30sIHt7ezAsOH19LDEwOH0sIHt7ezAsOH19LDQ0fSwge3t7MCw5fX0sMTg0fSwKLSAgICB7e3swLDh9fSwxMn0sIHt7ezAsOH19LDE0MH0sIHt7ezAsOH19LDc2fSwge3t7MCw5fX0sMjQ4fSwKLSAgICB7e3s4MCw3fX0sM30sIHt7ezAsOH19LDgyfSwge3t7MCw4fX0sMTh9LCB7e3s4NSw4fX0sMTYzfSwKLSAgICB7e3s4Myw3fX0sMzV9LCB7e3swLDh9fSwxMTR9LCB7e3swLDh9fSw1MH0sIHt7ezAsOX19LDE5Nn0sCi0gICAge3t7ODEsN319LDExfSwge3t7MCw4fX0sOTh9LCB7e3swLDh9fSwzNH0sIHt7ezAsOX19LDE2NH0sCi0gICAge3t7MCw4fX0sMn0sIHt7ezAsOH19LDEzMH0sIHt7ezAsOH19LDY2fSwge3t7MCw5fX0sMjI4fSwKLSAgICB7e3s4MCw3fX0sN30sIHt7ezAsOH19LDkwfSwge3t7MCw4fX0sMjZ9LCB7e3swLDl9fSwxNDh9LAotICAgIHt7ezg0LDd9fSw2N30sIHt7ezAsOH19LDEyMn0sIHt7ezAsOH19LDU4fSwge3t7MCw5fX0sMjEyfSwKLSAgICB7e3s4Miw3fX0sMTl9LCB7e3swLDh9fSwxMDZ9LCB7e3swLDh9fSw0Mn0sIHt7ezAsOX19LDE4MH0sCi0gICAge3t7MCw4fX0sMTB9LCB7e3swLDh9fSwxMzh9LCB7e3swLDh9fSw3NH0sIHt7ezAsOX19LDI0NH0sCi0gICAge3t7ODAsN319LDV9LCB7e3swLDh9fSw4Nn0sIHt7ezAsOH19LDIyfSwge3t7MTkyLDh9fSwwfSwKLSAgICB7e3s4Myw3fX0sNTF9LCB7e3swLDh9fSwxMTh9LCB7e3swLDh9fSw1NH0sIHt7ezAsOX19LDIwNH0sCi0gICAge3t7ODEsN319LDE1fSwge3t7MCw4fX0sMTAyfSwge3t7MCw4fX0sMzh9LCB7e3swLDl9fSwxNzJ9LAotICAgIHt7ezAsOH19LDZ9LCB7e3swLDh9fSwxMzR9LCB7e3swLDh9fSw3MH0sIHt7ezAsOX19LDIzNn0sCi0gICAge3t7ODAsN319LDl9LCB7e3swLDh9fSw5NH0sIHt7ezAsOH19LDMwfSwge3t7MCw5fX0sMTU2fSwKLSAgICB7e3s4NCw3fX0sOTl9LCB7e3swLDh9fSwxMjZ9LCB7e3swLDh9fSw2Mn0sIHt7ezAsOX19LDIyMH0sCi0gICAge3t7ODIsN319LDI3fSwge3t7MCw4fX0sMTEwfSwge3t7MCw4fX0sNDZ9LCB7e3swLDl9fSwxODh9LAotICAgIHt7ezAsOH19LDE0fSwge3t7MCw4fX0sMTQyfSwge3t7MCw4fX0sNzh9LCB7e3swLDl9fSwyNTJ9LAotICAgIHt7ezk2LDd9fSwyNTZ9LCB7e3swLDh9fSw4MX0sIHt7ezAsOH19LDE3fSwge3t7ODUsOH19LDEzMX0sCi0gICAge3t7ODIsN319LDMxfSwge3t7MCw4fX0sMTEzfSwge3t7MCw4fX0sNDl9LCB7e3swLDl9fSwxOTR9LAotICAgIHt7ezgwLDd9fSwxMH0sIHt7ezAsOH19LDk3fSwge3t7MCw4fX0sMzN9LCB7e3swLDl9fSwxNjJ9LAotICAgIHt7ezAsOH19LDF9LCB7e3swLDh9fSwxMjl9LCB7e3swLDh9fSw2NX0sIHt7ezAsOX19LDIyNn0sCi0gICAge3t7ODAsN319LDZ9LCB7e3swLDh9fSw4OX0sIHt7ezAsOH19LDI1fSwge3t7MCw5fX0sMTQ2fSwKLSAgICB7e3s4Myw3fX0sNTl9LCB7e3swLDh9fSwxMjF9LCB7e3swLDh9fSw1N30sIHt7ezAsOX19LDIxMH0sCi0gICAge3t7ODEsN319LDE3fSwge3t7MCw4fX0sMTA1fSwge3t7MCw4fX0sNDF9LCB7e3swLDl9fSwxNzh9LAotICAgIHt7ezAsOH19LDl9LCB7e3swLDh9fSwxMzd9LCB7e3swLDh9fSw3M30sIHt7ezAsOX19LDI0Mn0sCi0gICAge3t7ODAsN319LDR9LCB7e3swLDh9fSw4NX0sIHt7ezAsOH19LDIxfSwge3t7ODAsOH19LDI1OH0sCi0gICAge3t7ODMsN319LDQzfSwge3t7MCw4fX0sMTE3fSwge3t7MCw4fX0sNTN9LCB7e3swLDl9fSwyMDJ9LAotICAgIHt7ezgxLDd9fSwxM30sIHt7ezAsOH19LDEwMX0sIHt7ezAsOH19LDM3fSwge3t7MCw5fX0sMTcwfSwKLSAgICB7e3swLDh9fSw1fSwge3t7MCw4fX0sMTMzfSwge3t7MCw4fX0sNjl9LCB7e3swLDl9fSwyMzR9LAotICAgIHt7ezgwLDd9fSw4fSwge3t7MCw4fX0sOTN9LCB7e3swLDh9fSwyOX0sIHt7ezAsOX19LDE1NH0sCi0gICAge3t7ODQsN319LDgzfSwge3t7MCw4fX0sMTI1fSwge3t7MCw4fX0sNjF9LCB7e3swLDl9fSwyMTh9LAotICAgIHt7ezgyLDd9fSwyM30sIHt7ezAsOH19LDEwOX0sIHt7ezAsOH19LDQ1fSwge3t7MCw5fX0sMTg2fSwKLSAgICB7e3swLDh9fSwxM30sIHt7ezAsOH19LDE0MX0sIHt7ezAsOH19LDc3fSwge3t7MCw5fX0sMjUwfSwKLSAgICB7e3s4MCw3fX0sM30sIHt7ezAsOH19LDgzfSwge3t7MCw4fX0sMTl9LCB7e3s4NSw4fX0sMTk1fSwKLSAgICB7e3s4Myw3fX0sMzV9LCB7e3swLDh9fSwxMTV9LCB7e3swLDh9fSw1MX0sIHt7ezAsOX19LDE5OH0sCi0gICAge3t7ODEsN319LDExfSwge3t7MCw4fX0sOTl9LCB7e3swLDh9fSwzNX0sIHt7ezAsOX19LDE2Nn0sCi0gICAge3t7MCw4fX0sM30sIHt7ezAsOH19LDEzMX0sIHt7ezAsOH19LDY3fSwge3t7MCw5fX0sMjMwfSwKLSAgICB7e3s4MCw3fX0sN30sIHt7ezAsOH19LDkxfSwge3t7MCw4fX0sMjd9LCB7e3swLDl9fSwxNTB9LAotICAgIHt7ezg0LDd9fSw2N30sIHt7ezAsOH19LDEyM30sIHt7ezAsOH19LDU5fSwge3t7MCw5fX0sMjE0fSwKLSAgICB7e3s4Miw3fX0sMTl9LCB7e3swLDh9fSwxMDd9LCB7e3swLDh9fSw0M30sIHt7ezAsOX19LDE4Mn0sCi0gICAge3t7MCw4fX0sMTF9LCB7e3swLDh9fSwxMzl9LCB7e3swLDh9fSw3NX0sIHt7ezAsOX19LDI0Nn0sCi0gICAge3t7ODAsN319LDV9LCB7e3swLDh9fSw4N30sIHt7ezAsOH19LDIzfSwge3t7MTkyLDh9fSwwfSwKLSAgICB7e3s4Myw3fX0sNTF9LCB7e3swLDh9fSwxMTl9LCB7e3swLDh9fSw1NX0sIHt7ezAsOX19LDIwNn0sCi0gICAge3t7ODEsN319LDE1fSwge3t7MCw4fX0sMTAzfSwge3t7MCw4fX0sMzl9LCB7e3swLDl9fSwxNzR9LAotICAgIHt7ezAsOH19LDd9LCB7e3swLDh9fSwxMzV9LCB7e3swLDh9fSw3MX0sIHt7ezAsOX19LDIzOH0sCi0gICAge3t7ODAsN319LDl9LCB7e3swLDh9fSw5NX0sIHt7ezAsOH19LDMxfSwge3t7MCw5fX0sMTU4fSwKLSAgICB7e3s4NCw3fX0sOTl9LCB7e3swLDh9fSwxMjd9LCB7e3swLDh9fSw2M30sIHt7ezAsOX19LDIyMn0sCi0gICAge3t7ODIsN319LDI3fSwge3t7MCw4fX0sMTExfSwge3t7MCw4fX0sNDd9LCB7e3swLDl9fSwxOTB9LAotICAgIHt7ezAsOH19LDE1fSwge3t7MCw4fX0sMTQzfSwge3t7MCw4fX0sNzl9LCB7e3swLDl9fSwyNTR9LAotICAgIHt7ezk2LDd9fSwyNTZ9LCB7e3swLDh9fSw4MH0sIHt7ezAsOH19LDE2fSwge3t7ODQsOH19LDExNX0sCi0gICAge3t7ODIsN319LDMxfSwge3t7MCw4fX0sMTEyfSwge3t7MCw4fX0sNDh9LCB7e3swLDl9fSwxOTN9LAotICAgIHt7ezgwLDd9fSwxMH0sIHt7ezAsOH19LDk2fSwge3t7MCw4fX0sMzJ9LCB7e3swLDl9fSwxNjF9LAotICAgIHt7ezAsOH19LDB9LCB7e3swLDh9fSwxMjh9LCB7e3swLDh9fSw2NH0sIHt7ezAsOX19LDIyNX0sCi0gICAge3t7ODAsN319LDZ9LCB7e3swLDh9fSw4OH0sIHt7ezAsOH19LDI0fSwge3t7MCw5fX0sMTQ1fSwKLSAgICB7e3s4Myw3fX0sNTl9LCB7e3swLDh9fSwxMjB9LCB7e3swLDh9fSw1Nn0sIHt7ezAsOX19LDIwOX0sCi0gICAge3t7ODEsN319LDE3fSwge3t7MCw4fX0sMTA0fSwge3t7MCw4fX0sNDB9LCB7e3swLDl9fSwxNzd9LAotICAgIHt7ezAsOH19LDh9LCB7e3swLDh9fSwxMzZ9LCB7e3swLDh9fSw3Mn0sIHt7ezAsOX19LDI0MX0sCi0gICAge3t7ODAsN319LDR9LCB7e3swLDh9fSw4NH0sIHt7ezAsOH19LDIwfSwge3t7ODUsOH19LDIyN30sCi0gICAge3t7ODMsN319LDQzfSwge3t7MCw4fX0sMTE2fSwge3t7MCw4fX0sNTJ9LCB7e3swLDl9fSwyMDF9LAotICAgIHt7ezgxLDd9fSwxM30sIHt7ezAsOH19LDEwMH0sIHt7ezAsOH19LDM2fSwge3t7MCw5fX0sMTY5fSwKLSAgICB7e3swLDh9fSw0fSwge3t7MCw4fX0sMTMyfSwge3t7MCw4fX0sNjh9LCB7e3swLDl9fSwyMzN9LAotICAgIHt7ezgwLDd9fSw4fSwge3t7MCw4fX0sOTJ9LCB7e3swLDh9fSwyOH0sIHt7ezAsOX19LDE1M30sCi0gICAge3t7ODQsN319LDgzfSwge3t7MCw4fX0sMTI0fSwge3t7MCw4fX0sNjB9LCB7e3swLDl9fSwyMTd9LAotICAgIHt7ezgyLDd9fSwyM30sIHt7ezAsOH19LDEwOH0sIHt7ezAsOH19LDQ0fSwge3t7MCw5fX0sMTg1fSwKLSAgICB7e3swLDh9fSwxMn0sIHt7ezAsOH19LDE0MH0sIHt7ezAsOH19LDc2fSwge3t7MCw5fX0sMjQ5fSwKLSAgICB7e3s4MCw3fX0sM30sIHt7ezAsOH19LDgyfSwge3t7MCw4fX0sMTh9LCB7e3s4NSw4fX0sMTYzfSwKLSAgICB7e3s4Myw3fX0sMzV9LCB7e3swLDh9fSwxMTR9LCB7e3swLDh9fSw1MH0sIHt7ezAsOX19LDE5N30sCi0gICAge3t7ODEsN319LDExfSwge3t7MCw4fX0sOTh9LCB7e3swLDh9fSwzNH0sIHt7ezAsOX19LDE2NX0sCi0gICAge3t7MCw4fX0sMn0sIHt7ezAsOH19LDEzMH0sIHt7ezAsOH19LDY2fSwge3t7MCw5fX0sMjI5fSwKLSAgICB7e3s4MCw3fX0sN30sIHt7ezAsOH19LDkwfSwge3t7MCw4fX0sMjZ9LCB7e3swLDl9fSwxNDl9LAotICAgIHt7ezg0LDd9fSw2N30sIHt7ezAsOH19LDEyMn0sIHt7ezAsOH19LDU4fSwge3t7MCw5fX0sMjEzfSwKLSAgICB7e3s4Miw3fX0sMTl9LCB7e3swLDh9fSwxMDZ9LCB7e3swLDh9fSw0Mn0sIHt7ezAsOX19LDE4MX0sCi0gICAge3t7MCw4fX0sMTB9LCB7e3swLDh9fSwxMzh9LCB7e3swLDh9fSw3NH0sIHt7ezAsOX19LDI0NX0sCi0gICAge3t7ODAsN319LDV9LCB7e3swLDh9fSw4Nn0sIHt7ezAsOH19LDIyfSwge3t7MTkyLDh9fSwwfSwKLSAgICB7e3s4Myw3fX0sNTF9LCB7e3swLDh9fSwxMTh9LCB7e3swLDh9fSw1NH0sIHt7ezAsOX19LDIwNX0sCi0gICAge3t7ODEsN319LDE1fSwge3t7MCw4fX0sMTAyfSwge3t7MCw4fX0sMzh9LCB7e3swLDl9fSwxNzN9LAotICAgIHt7ezAsOH19LDZ9LCB7e3swLDh9fSwxMzR9LCB7e3swLDh9fSw3MH0sIHt7ezAsOX19LDIzN30sCi0gICAge3t7ODAsN319LDl9LCB7e3swLDh9fSw5NH0sIHt7ezAsOH19LDMwfSwge3t7MCw5fX0sMTU3fSwKLSAgICB7e3s4NCw3fX0sOTl9LCB7e3swLDh9fSwxMjZ9LCB7e3swLDh9fSw2Mn0sIHt7ezAsOX19LDIyMX0sCi0gICAge3t7ODIsN319LDI3fSwge3t7MCw4fX0sMTEwfSwge3t7MCw4fX0sNDZ9LCB7e3swLDl9fSwxODl9LAotICAgIHt7ezAsOH19LDE0fSwge3t7MCw4fX0sMTQyfSwge3t7MCw4fX0sNzh9LCB7e3swLDl9fSwyNTN9LAotICAgIHt7ezk2LDd9fSwyNTZ9LCB7e3swLDh9fSw4MX0sIHt7ezAsOH19LDE3fSwge3t7ODUsOH19LDEzMX0sCi0gICAge3t7ODIsN319LDMxfSwge3t7MCw4fX0sMTEzfSwge3t7MCw4fX0sNDl9LCB7e3swLDl9fSwxOTV9LAotICAgIHt7ezgwLDd9fSwxMH0sIHt7ezAsOH19LDk3fSwge3t7MCw4fX0sMzN9LCB7e3swLDl9fSwxNjN9LAotICAgIHt7ezAsOH19LDF9LCB7e3swLDh9fSwxMjl9LCB7e3swLDh9fSw2NX0sIHt7ezAsOX19LDIyN30sCi0gICAge3t7ODAsN319LDZ9LCB7e3swLDh9fSw4OX0sIHt7ezAsOH19LDI1fSwge3t7MCw5fX0sMTQ3fSwKLSAgICB7e3s4Myw3fX0sNTl9LCB7e3swLDh9fSwxMjF9LCB7e3swLDh9fSw1N30sIHt7ezAsOX19LDIxMX0sCi0gICAge3t7ODEsN319LDE3fSwge3t7MCw4fX0sMTA1fSwge3t7MCw4fX0sNDF9LCB7e3swLDl9fSwxNzl9LAotICAgIHt7ezAsOH19LDl9LCB7e3swLDh9fSwxMzd9LCB7e3swLDh9fSw3M30sIHt7ezAsOX19LDI0M30sCi0gICAge3t7ODAsN319LDR9LCB7e3swLDh9fSw4NX0sIHt7ezAsOH19LDIxfSwge3t7ODAsOH19LDI1OH0sCi0gICAge3t7ODMsN319LDQzfSwge3t7MCw4fX0sMTE3fSwge3t7MCw4fX0sNTN9LCB7e3swLDl9fSwyMDN9LAotICAgIHt7ezgxLDd9fSwxM30sIHt7ezAsOH19LDEwMX0sIHt7ezAsOH19LDM3fSwge3t7MCw5fX0sMTcxfSwKLSAgICB7e3swLDh9fSw1fSwge3t7MCw4fX0sMTMzfSwge3t7MCw4fX0sNjl9LCB7e3swLDl9fSwyMzV9LAotICAgIHt7ezgwLDd9fSw4fSwge3t7MCw4fX0sOTN9LCB7e3swLDh9fSwyOX0sIHt7ezAsOX19LDE1NX0sCi0gICAge3t7ODQsN319LDgzfSwge3t7MCw4fX0sMTI1fSwge3t7MCw4fX0sNjF9LCB7e3swLDl9fSwyMTl9LAotICAgIHt7ezgyLDd9fSwyM30sIHt7ezAsOH19LDEwOX0sIHt7ezAsOH19LDQ1fSwge3t7MCw5fX0sMTg3fSwKLSAgICB7e3swLDh9fSwxM30sIHt7ezAsOH19LDE0MX0sIHt7ezAsOH19LDc3fSwge3t7MCw5fX0sMjUxfSwKLSAgICB7e3s4MCw3fX0sM30sIHt7ezAsOH19LDgzfSwge3t7MCw4fX0sMTl9LCB7e3s4NSw4fX0sMTk1fSwKLSAgICB7e3s4Myw3fX0sMzV9LCB7e3swLDh9fSwxMTV9LCB7e3swLDh9fSw1MX0sIHt7ezAsOX19LDE5OX0sCi0gICAge3t7ODEsN319LDExfSwge3t7MCw4fX0sOTl9LCB7e3swLDh9fSwzNX0sIHt7ezAsOX19LDE2N30sCi0gICAge3t7MCw4fX0sM30sIHt7ezAsOH19LDEzMX0sIHt7ezAsOH19LDY3fSwge3t7MCw5fX0sMjMxfSwKLSAgICB7e3s4MCw3fX0sN30sIHt7ezAsOH19LDkxfSwge3t7MCw4fX0sMjd9LCB7e3swLDl9fSwxNTF9LAotICAgIHt7ezg0LDd9fSw2N30sIHt7ezAsOH19LDEyM30sIHt7ezAsOH19LDU5fSwge3t7MCw5fX0sMjE1fSwKLSAgICB7e3s4Miw3fX0sMTl9LCB7e3swLDh9fSwxMDd9LCB7e3swLDh9fSw0M30sIHt7ezAsOX19LDE4M30sCi0gICAge3t7MCw4fX0sMTF9LCB7e3swLDh9fSwxMzl9LCB7e3swLDh9fSw3NX0sIHt7ezAsOX19LDI0N30sCi0gICAge3t7ODAsN319LDV9LCB7e3swLDh9fSw4N30sIHt7ezAsOH19LDIzfSwge3t7MTkyLDh9fSwwfSwKLSAgICB7e3s4Myw3fX0sNTF9LCB7e3swLDh9fSwxMTl9LCB7e3swLDh9fSw1NX0sIHt7ezAsOX19LDIwN30sCi0gICAge3t7ODEsN319LDE1fSwge3t7MCw4fX0sMTAzfSwge3t7MCw4fX0sMzl9LCB7e3swLDl9fSwxNzV9LAotICAgIHt7ezAsOH19LDd9LCB7e3swLDh9fSwxMzV9LCB7e3swLDh9fSw3MX0sIHt7ezAsOX19LDIzOX0sCi0gICAge3t7ODAsN319LDl9LCB7e3swLDh9fSw5NX0sIHt7ezAsOH19LDMxfSwge3t7MCw5fX0sMTU5fSwKLSAgICB7e3s4NCw3fX0sOTl9LCB7e3swLDh9fSwxMjd9LCB7e3swLDh9fSw2M30sIHt7ezAsOX19LDIyM30sCi0gICAge3t7ODIsN319LDI3fSwge3t7MCw4fX0sMTExfSwge3t7MCw4fX0sNDd9LCB7e3swLDl9fSwxOTF9LAotICAgIHt7ezAsOH19LDE1fSwge3t7MCw4fX0sMTQzfSwge3t7MCw4fX0sNzl9LCB7e3swLDl9fSwyNTV9Ci0gIH07Ci1sb2NhbCBjb25zdCBpbmZsYXRlX2h1ZnQgZml4ZWRfdGRbXSA9IHsKLSAgICB7e3s4MCw1fX0sMX0sIHt7ezg3LDV9fSwyNTd9LCB7e3s4Myw1fX0sMTd9LCB7e3s5MSw1fX0sNDA5N30sCi0gICAge3t7ODEsNX19LDV9LCB7e3s4OSw1fX0sMTAyNX0sIHt7ezg1LDV9fSw2NX0sIHt7ezkzLDV9fSwxNjM4NX0sCi0gICAge3t7ODAsNX19LDN9LCB7e3s4OCw1fX0sNTEzfSwge3t7ODQsNX19LDMzfSwge3t7OTIsNX19LDgxOTN9LAotICAgIHt7ezgyLDV9fSw5fSwge3t7OTAsNX19LDIwNDl9LCB7e3s4Niw1fX0sMTI5fSwge3t7MTkyLDV9fSwyNDU3N30sCi0gICAge3t7ODAsNX19LDJ9LCB7e3s4Nyw1fX0sMzg1fSwge3t7ODMsNX19LDI1fSwge3t7OTEsNX19LDYxNDV9LAotICAgIHt7ezgxLDV9fSw3fSwge3t7ODksNX19LDE1Mzd9LCB7e3s4NSw1fX0sOTd9LCB7e3s5Myw1fX0sMjQ1Nzd9LAotICAgIHt7ezgwLDV9fSw0fSwge3t7ODgsNX19LDc2OX0sIHt7ezg0LDV9fSw0OX0sIHt7ezkyLDV9fSwxMjI4OX0sCi0gICAge3t7ODIsNX19LDEzfSwge3t7OTAsNX19LDMwNzN9LCB7e3s4Niw1fX0sMTkzfSwge3t7MTkyLDV9fSwyNDU3N30KLSAgfTsKKyAgICBzdGF0aWMgY29uc3QgY29kZSBsZW5maXhbNTEyXSA9IHsKKyAgICAgICAgezk2LDcsMH0sezAsOCw4MH0sezAsOCwxNn0sezIwLDgsMTE1fSx7MTgsNywzMX0sezAsOCwxMTJ9LHswLDgsNDh9LAorICAgICAgICB7MCw5LDE5Mn0sezE2LDcsMTB9LHswLDgsOTZ9LHswLDgsMzJ9LHswLDksMTYwfSx7MCw4LDB9LHswLDgsMTI4fSwKKyAgICAgICAgezAsOCw2NH0sezAsOSwyMjR9LHsxNiw3LDZ9LHswLDgsODh9LHswLDgsMjR9LHswLDksMTQ0fSx7MTksNyw1OX0sCisgICAgICAgIHswLDgsMTIwfSx7MCw4LDU2fSx7MCw5LDIwOH0sezE3LDcsMTd9LHswLDgsMTA0fSx7MCw4LDQwfSx7MCw5LDE3Nn0sCisgICAgICAgIHswLDgsOH0sezAsOCwxMzZ9LHswLDgsNzJ9LHswLDksMjQwfSx7MTYsNyw0fSx7MCw4LDg0fSx7MCw4LDIwfSwKKyAgICAgICAgezIxLDgsMjI3fSx7MTksNyw0M30sezAsOCwxMTZ9LHswLDgsNTJ9LHswLDksMjAwfSx7MTcsNywxM30sezAsOCwxMDB9LAorICAgICAgICB7MCw4LDM2fSx7MCw5LDE2OH0sezAsOCw0fSx7MCw4LDEzMn0sezAsOCw2OH0sezAsOSwyMzJ9LHsxNiw3LDh9LAorICAgICAgICB7MCw4LDkyfSx7MCw4LDI4fSx7MCw5LDE1Mn0sezIwLDcsODN9LHswLDgsMTI0fSx7MCw4LDYwfSx7MCw5LDIxNn0sCisgICAgICAgIHsxOCw3LDIzfSx7MCw4LDEwOH0sezAsOCw0NH0sezAsOSwxODR9LHswLDgsMTJ9LHswLDgsMTQwfSx7MCw4LDc2fSwKKyAgICAgICAgezAsOSwyNDh9LHsxNiw3LDN9LHswLDgsODJ9LHswLDgsMTh9LHsyMSw4LDE2M30sezE5LDcsMzV9LHswLDgsMTE0fSwKKyAgICAgICAgezAsOCw1MH0sezAsOSwxOTZ9LHsxNyw3LDExfSx7MCw4LDk4fSx7MCw4LDM0fSx7MCw5LDE2NH0sezAsOCwyfSwKKyAgICAgICAgezAsOCwxMzB9LHswLDgsNjZ9LHswLDksMjI4fSx7MTYsNyw3fSx7MCw4LDkwfSx7MCw4LDI2fSx7MCw5LDE0OH0sCisgICAgICAgIHsyMCw3LDY3fSx7MCw4LDEyMn0sezAsOCw1OH0sezAsOSwyMTJ9LHsxOCw3LDE5fSx7MCw4LDEwNn0sezAsOCw0Mn0sCisgICAgICAgIHswLDksMTgwfSx7MCw4LDEwfSx7MCw4LDEzOH0sezAsOCw3NH0sezAsOSwyNDR9LHsxNiw3LDV9LHswLDgsODZ9LAorICAgICAgICB7MCw4LDIyfSx7NjQsOCwwfSx7MTksNyw1MX0sezAsOCwxMTh9LHswLDgsNTR9LHswLDksMjA0fSx7MTcsNywxNX0sCisgICAgICAgIHswLDgsMTAyfSx7MCw4LDM4fSx7MCw5LDE3Mn0sezAsOCw2fSx7MCw4LDEzNH0sezAsOCw3MH0sezAsOSwyMzZ9LAorICAgICAgICB7MTYsNyw5fSx7MCw4LDk0fSx7MCw4LDMwfSx7MCw5LDE1Nn0sezIwLDcsOTl9LHswLDgsMTI2fSx7MCw4LDYyfSwKKyAgICAgICAgezAsOSwyMjB9LHsxOCw3LDI3fSx7MCw4LDExMH0sezAsOCw0Nn0sezAsOSwxODh9LHswLDgsMTR9LHswLDgsMTQyfSwKKyAgICAgICAgezAsOCw3OH0sezAsOSwyNTJ9LHs5Niw3LDB9LHswLDgsODF9LHswLDgsMTd9LHsyMSw4LDEzMX0sezE4LDcsMzF9LAorICAgICAgICB7MCw4LDExM30sezAsOCw0OX0sezAsOSwxOTR9LHsxNiw3LDEwfSx7MCw4LDk3fSx7MCw4LDMzfSx7MCw5LDE2Mn0sCisgICAgICAgIHswLDgsMX0sezAsOCwxMjl9LHswLDgsNjV9LHswLDksMjI2fSx7MTYsNyw2fSx7MCw4LDg5fSx7MCw4LDI1fSwKKyAgICAgICAgezAsOSwxNDZ9LHsxOSw3LDU5fSx7MCw4LDEyMX0sezAsOCw1N30sezAsOSwyMTB9LHsxNyw3LDE3fSx7MCw4LDEwNX0sCisgICAgICAgIHswLDgsNDF9LHswLDksMTc4fSx7MCw4LDl9LHswLDgsMTM3fSx7MCw4LDczfSx7MCw5LDI0Mn0sezE2LDcsNH0sCisgICAgICAgIHswLDgsODV9LHswLDgsMjF9LHsxNiw4LDI1OH0sezE5LDcsNDN9LHswLDgsMTE3fSx7MCw4LDUzfSx7MCw5LDIwMn0sCisgICAgICAgIHsxNyw3LDEzfSx7MCw4LDEwMX0sezAsOCwzN30sezAsOSwxNzB9LHswLDgsNX0sezAsOCwxMzN9LHswLDgsNjl9LAorICAgICAgICB7MCw5LDIzNH0sezE2LDcsOH0sezAsOCw5M30sezAsOCwyOX0sezAsOSwxNTR9LHsyMCw3LDgzfSx7MCw4LDEyNX0sCisgICAgICAgIHswLDgsNjF9LHswLDksMjE4fSx7MTgsNywyM30sezAsOCwxMDl9LHswLDgsNDV9LHswLDksMTg2fSx7MCw4LDEzfSwKKyAgICAgICAgezAsOCwxNDF9LHswLDgsNzd9LHswLDksMjUwfSx7MTYsNywzfSx7MCw4LDgzfSx7MCw4LDE5fSx7MjEsOCwxOTV9LAorICAgICAgICB7MTksNywzNX0sezAsOCwxMTV9LHswLDgsNTF9LHswLDksMTk4fSx7MTcsNywxMX0sezAsOCw5OX0sezAsOCwzNX0sCisgICAgICAgIHswLDksMTY2fSx7MCw4LDN9LHswLDgsMTMxfSx7MCw4LDY3fSx7MCw5LDIzMH0sezE2LDcsN30sezAsOCw5MX0sCisgICAgICAgIHswLDgsMjd9LHswLDksMTUwfSx7MjAsNyw2N30sezAsOCwxMjN9LHswLDgsNTl9LHswLDksMjE0fSx7MTgsNywxOX0sCisgICAgICAgIHswLDgsMTA3fSx7MCw4LDQzfSx7MCw5LDE4Mn0sezAsOCwxMX0sezAsOCwxMzl9LHswLDgsNzV9LHswLDksMjQ2fSwKKyAgICAgICAgezE2LDcsNX0sezAsOCw4N30sezAsOCwyM30sezY0LDgsMH0sezE5LDcsNTF9LHswLDgsMTE5fSx7MCw4LDU1fSwKKyAgICAgICAgezAsOSwyMDZ9LHsxNyw3LDE1fSx7MCw4LDEwM30sezAsOCwzOX0sezAsOSwxNzR9LHswLDgsN30sezAsOCwxMzV9LAorICAgICAgICB7MCw4LDcxfSx7MCw5LDIzOH0sezE2LDcsOX0sezAsOCw5NX0sezAsOCwzMX0sezAsOSwxNTh9LHsyMCw3LDk5fSwKKyAgICAgICAgezAsOCwxMjd9LHswLDgsNjN9LHswLDksMjIyfSx7MTgsNywyN30sezAsOCwxMTF9LHswLDgsNDd9LHswLDksMTkwfSwKKyAgICAgICAgezAsOCwxNX0sezAsOCwxNDN9LHswLDgsNzl9LHswLDksMjU0fSx7OTYsNywwfSx7MCw4LDgwfSx7MCw4LDE2fSwKKyAgICAgICAgezIwLDgsMTE1fSx7MTgsNywzMX0sezAsOCwxMTJ9LHswLDgsNDh9LHswLDksMTkzfSx7MTYsNywxMH0sezAsOCw5Nn0sCisgICAgICAgIHswLDgsMzJ9LHswLDksMTYxfSx7MCw4LDB9LHswLDgsMTI4fSx7MCw4LDY0fSx7MCw5LDIyNX0sezE2LDcsNn0sCisgICAgICAgIHswLDgsODh9LHswLDgsMjR9LHswLDksMTQ1fSx7MTksNyw1OX0sezAsOCwxMjB9LHswLDgsNTZ9LHswLDksMjA5fSwKKyAgICAgICAgezE3LDcsMTd9LHswLDgsMTA0fSx7MCw4LDQwfSx7MCw5LDE3N30sezAsOCw4fSx7MCw4LDEzNn0sezAsOCw3Mn0sCisgICAgICAgIHswLDksMjQxfSx7MTYsNyw0fSx7MCw4LDg0fSx7MCw4LDIwfSx7MjEsOCwyMjd9LHsxOSw3LDQzfSx7MCw4LDExNn0sCisgICAgICAgIHswLDgsNTJ9LHswLDksMjAxfSx7MTcsNywxM30sezAsOCwxMDB9LHswLDgsMzZ9LHswLDksMTY5fSx7MCw4LDR9LAorICAgICAgICB7MCw4LDEzMn0sezAsOCw2OH0sezAsOSwyMzN9LHsxNiw3LDh9LHswLDgsOTJ9LHswLDgsMjh9LHswLDksMTUzfSwKKyAgICAgICAgezIwLDcsODN9LHswLDgsMTI0fSx7MCw4LDYwfSx7MCw5LDIxN30sezE4LDcsMjN9LHswLDgsMTA4fSx7MCw4LDQ0fSwKKyAgICAgICAgezAsOSwxODV9LHswLDgsMTJ9LHswLDgsMTQwfSx7MCw4LDc2fSx7MCw5LDI0OX0sezE2LDcsM30sezAsOCw4Mn0sCisgICAgICAgIHswLDgsMTh9LHsyMSw4LDE2M30sezE5LDcsMzV9LHswLDgsMTE0fSx7MCw4LDUwfSx7MCw5LDE5N30sezE3LDcsMTF9LAorICAgICAgICB7MCw4LDk4fSx7MCw4LDM0fSx7MCw5LDE2NX0sezAsOCwyfSx7MCw4LDEzMH0sezAsOCw2Nn0sezAsOSwyMjl9LAorICAgICAgICB7MTYsNyw3fSx7MCw4LDkwfSx7MCw4LDI2fSx7MCw5LDE0OX0sezIwLDcsNjd9LHswLDgsMTIyfSx7MCw4LDU4fSwKKyAgICAgICAgezAsOSwyMTN9LHsxOCw3LDE5fSx7MCw4LDEwNn0sezAsOCw0Mn0sezAsOSwxODF9LHswLDgsMTB9LHswLDgsMTM4fSwKKyAgICAgICAgezAsOCw3NH0sezAsOSwyNDV9LHsxNiw3LDV9LHswLDgsODZ9LHswLDgsMjJ9LHs2NCw4LDB9LHsxOSw3LDUxfSwKKyAgICAgICAgezAsOCwxMTh9LHswLDgsNTR9LHswLDksMjA1fSx7MTcsNywxNX0sezAsOCwxMDJ9LHswLDgsMzh9LHswLDksMTczfSwKKyAgICAgICAgezAsOCw2fSx7MCw4LDEzNH0sezAsOCw3MH0sezAsOSwyMzd9LHsxNiw3LDl9LHswLDgsOTR9LHswLDgsMzB9LAorICAgICAgICB7MCw5LDE1N30sezIwLDcsOTl9LHswLDgsMTI2fSx7MCw4LDYyfSx7MCw5LDIyMX0sezE4LDcsMjd9LHswLDgsMTEwfSwKKyAgICAgICAgezAsOCw0Nn0sezAsOSwxODl9LHswLDgsMTR9LHswLDgsMTQyfSx7MCw4LDc4fSx7MCw5LDI1M30sezk2LDcsMH0sCisgICAgICAgIHswLDgsODF9LHswLDgsMTd9LHsyMSw4LDEzMX0sezE4LDcsMzF9LHswLDgsMTEzfSx7MCw4LDQ5fSx7MCw5LDE5NX0sCisgICAgICAgIHsxNiw3LDEwfSx7MCw4LDk3fSx7MCw4LDMzfSx7MCw5LDE2M30sezAsOCwxfSx7MCw4LDEyOX0sezAsOCw2NX0sCisgICAgICAgIHswLDksMjI3fSx7MTYsNyw2fSx7MCw4LDg5fSx7MCw4LDI1fSx7MCw5LDE0N30sezE5LDcsNTl9LHswLDgsMTIxfSwKKyAgICAgICAgezAsOCw1N30sezAsOSwyMTF9LHsxNyw3LDE3fSx7MCw4LDEwNX0sezAsOCw0MX0sezAsOSwxNzl9LHswLDgsOX0sCisgICAgICAgIHswLDgsMTM3fSx7MCw4LDczfSx7MCw5LDI0M30sezE2LDcsNH0sezAsOCw4NX0sezAsOCwyMX0sezE2LDgsMjU4fSwKKyAgICAgICAgezE5LDcsNDN9LHswLDgsMTE3fSx7MCw4LDUzfSx7MCw5LDIwM30sezE3LDcsMTN9LHswLDgsMTAxfSx7MCw4LDM3fSwKKyAgICAgICAgezAsOSwxNzF9LHswLDgsNX0sezAsOCwxMzN9LHswLDgsNjl9LHswLDksMjM1fSx7MTYsNyw4fSx7MCw4LDkzfSwKKyAgICAgICAgezAsOCwyOX0sezAsOSwxNTV9LHsyMCw3LDgzfSx7MCw4LDEyNX0sezAsOCw2MX0sezAsOSwyMTl9LHsxOCw3LDIzfSwKKyAgICAgICAgezAsOCwxMDl9LHswLDgsNDV9LHswLDksMTg3fSx7MCw4LDEzfSx7MCw4LDE0MX0sezAsOCw3N30sezAsOSwyNTF9LAorICAgICAgICB7MTYsNywzfSx7MCw4LDgzfSx7MCw4LDE5fSx7MjEsOCwxOTV9LHsxOSw3LDM1fSx7MCw4LDExNX0sezAsOCw1MX0sCisgICAgICAgIHswLDksMTk5fSx7MTcsNywxMX0sezAsOCw5OX0sezAsOCwzNX0sezAsOSwxNjd9LHswLDgsM30sezAsOCwxMzF9LAorICAgICAgICB7MCw4LDY3fSx7MCw5LDIzMX0sezE2LDcsN30sezAsOCw5MX0sezAsOCwyN30sezAsOSwxNTF9LHsyMCw3LDY3fSwKKyAgICAgICAgezAsOCwxMjN9LHswLDgsNTl9LHswLDksMjE1fSx7MTgsNywxOX0sezAsOCwxMDd9LHswLDgsNDN9LHswLDksMTgzfSwKKyAgICAgICAgezAsOCwxMX0sezAsOCwxMzl9LHswLDgsNzV9LHswLDksMjQ3fSx7MTYsNyw1fSx7MCw4LDg3fSx7MCw4LDIzfSwKKyAgICAgICAgezY0LDgsMH0sezE5LDcsNTF9LHswLDgsMTE5fSx7MCw4LDU1fSx7MCw5LDIwN30sezE3LDcsMTV9LHswLDgsMTAzfSwKKyAgICAgICAgezAsOCwzOX0sezAsOSwxNzV9LHswLDgsN30sezAsOCwxMzV9LHswLDgsNzF9LHswLDksMjM5fSx7MTYsNyw5fSwKKyAgICAgICAgezAsOCw5NX0sezAsOCwzMX0sezAsOSwxNTl9LHsyMCw3LDk5fSx7MCw4LDEyN30sezAsOCw2M30sezAsOSwyMjN9LAorICAgICAgICB7MTgsNywyN30sezAsOCwxMTF9LHswLDgsNDd9LHswLDksMTkxfSx7MCw4LDE1fSx7MCw4LDE0M30sezAsOCw3OX0sCisgICAgICAgIHswLDksMjU1fQorICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgY29kZSBkaXN0Zml4WzMyXSA9IHsKKyAgICAgICAgezE2LDUsMX0sezIzLDUsMjU3fSx7MTksNSwxN30sezI3LDUsNDA5N30sezE3LDUsNX0sezI1LDUsMTAyNX0sCisgICAgICAgIHsyMSw1LDY1fSx7MjksNSwxNjM4NX0sezE2LDUsM30sezI0LDUsNTEzfSx7MjAsNSwzM30sezI4LDUsODE5M30sCisgICAgICAgIHsxOCw1LDl9LHsyNiw1LDIwNDl9LHsyMiw1LDEyOX0sezY0LDUsMH0sezE2LDUsMn0sezIzLDUsMzg1fSwKKyAgICAgICAgezE5LDUsMjV9LHsyNyw1LDYxNDV9LHsxNyw1LDd9LHsyNSw1LDE1Mzd9LHsyMSw1LDk3fSx7MjksNSwyNDU3N30sCisgICAgICAgIHsxNiw1LDR9LHsyNCw1LDc2OX0sezIwLDUsNDl9LHsyOCw1LDEyMjg5fSx7MTgsNSwxM30sezI2LDUsMzA3M30sCisgICAgICAgIHsyMiw1LDE5M30sezY0LDUsMH0KKyAgICB9OwpkaWZmIC0tZ2l0IGEvc3JjL2d6aXAvaW5mbGF0ZS5jIGIvc3JjL2d6aXAvaW5mbGF0ZS5jCmluZGV4IDk1ZTI2NTMuLjUxMTdlMmUgMTAwNjQ0Ci0tLSBhL3NyYy9nemlwL2luZmxhdGUuYworKysgYi9zcmMvZ3ppcC9pbmZsYXRlLmMKQEAgLTEsMjgzICsxLDE2MDUgQEAKLS8qIGluZmxhdGUuYyAtLSB6bGliIGludGVyZmFjZSB0byBpbmZsYXRlIG1vZHVsZXMKLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDAyIE1hcmsgQWRsZXIKKy8qIGluZmxhdGUuYyAtLSB6bGliIGRlY29tcHJlc3Npb24KKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDIyIE1hcmsgQWRsZXIKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKICAqLwogCisvKgorICogQ2hhbmdlIGhpc3Rvcnk6CisgKgorICogMS4yLmJldGEwICAgIDI0IE5vdiAyMDAyCisgKiAtIEZpcnN0IHZlcnNpb24gLS0gY29tcGxldGUgcmV3cml0ZSBvZiBpbmZsYXRlIHRvIHNpbXBsaWZ5IGNvZGUsIGF2b2lkCisgKiAgIGNyZWF0aW9uIG9mIHdpbmRvdyB3aGVuIG5vdCBuZWVkZWQsIG1pbmltaXplIHVzZSBvZiB3aW5kb3cgd2hlbiBpdCBpcworICogICBuZWVkZWQsIG1ha2UgaW5mZmFzdC5jIGV2ZW4gZmFzdGVyLCBpbXBsZW1lbnQgZ3ppcCBkZWNvZGluZywgYW5kIHRvCisgKiAgIGltcHJvdmUgY29kZSByZWFkYWJpbGl0eSBhbmQgc3R5bGUgb3ZlciB0aGUgcHJldmlvdXMgemxpYiBpbmZsYXRlIGNvZGUKKyAqCisgKiAxLjIuYmV0YTEgICAgMjUgTm92IDIwMDIKKyAqIC0gVXNlIHBvaW50ZXJzIGZvciBhdmFpbGFibGUgaW5wdXQgYW5kIG91dHB1dCBjaGVja2luZyBpbiBpbmZmYXN0LmMKKyAqIC0gUmVtb3ZlIGlucHV0IGFuZCBvdXRwdXQgY291bnRlcnMgaW4gaW5mZmFzdC5jCisgKiAtIENoYW5nZSBpbmZmYXN0LmMgZW50cnkgYW5kIGxvb3AgZnJvbSBhdmFpbF9pbiA+PSA3IHRvID49IDYKKyAqIC0gUmVtb3ZlIHVubmVjZXNzYXJ5IHNlY29uZCBieXRlIHB1bGwgZnJvbSBsZW5ndGggZXh0cmEgaW4gaW5mZmFzdC5jCisgKiAtIFVucm9sbCBkaXJlY3QgY29weSB0byB0aHJlZSBjb3BpZXMgcGVyIGxvb3AgaW4gaW5mZmFzdC5jCisgKgorICogMS4yLmJldGEyICAgIDQgRGVjIDIwMDIKKyAqIC0gQ2hhbmdlIGV4dGVybmFsIHJvdXRpbmUgbmFtZXMgdG8gcmVkdWNlIHBvdGVudGlhbCBjb25mbGljdHMKKyAqIC0gQ29ycmVjdCBmaWxlbmFtZSB0byBpbmZmaXhlZC5oIGZvciBmaXhlZCB0YWJsZXMgaW4gaW5mbGF0ZS5jCisgKiAtIE1ha2UgaGJ1ZltdIHVuc2lnbmVkIGNoYXIgdG8gbWF0Y2ggcGFyYW1ldGVyIHR5cGUgaW4gaW5mbGF0ZS5jCisgKiAtIENoYW5nZSBzdHJtLT5uZXh0X291dFstc3RhdGUtPm9mZnNldF0gdG8gKihzdHJtLT5uZXh0X291dCAtIHN0YXRlLT5vZmZzZXQpCisgKiAgIHRvIGF2b2lkIG5lZ2F0aW9uIHByb2JsZW0gb24gQWxwaGFzICg2NCBiaXQpIGluIGluZmxhdGUuYworICoKKyAqIDEuMi5iZXRhMyAgICAyMiBEZWMgMjAwMgorICogLSBBZGQgY29tbWVudHMgb24gc3RhdGUtPmJpdHMgYXNzZXJ0aW9uIGluIGluZmZhc3QuYworICogLSBBZGQgY29tbWVudHMgb24gb3AgZmllbGQgaW4gaW5mdHJlZXMuaAorICogLSBGaXggYnVnIGluIHJldXNlIG9mIGFsbG9jYXRlZCB3aW5kb3cgYWZ0ZXIgaW5mbGF0ZVJlc2V0KCkKKyAqIC0gUmVtb3ZlIGJpdCBmaWVsZHMtLWJhY2sgdG8gYnl0ZSBzdHJ1Y3R1cmUgZm9yIHNwZWVkCisgKiAtIFJlbW92ZSBkaXN0YW5jZSBleHRyYSA9PSAwIGNoZWNrIGluIGluZmxhdGVfZmFzdCgpLS1vbmx5IGhlbHBzIGZvciBsZW5ndGhzCisgKiAtIENoYW5nZSBwb3N0LWluY3JlbWVudHMgdG8gcHJlLWluY3JlbWVudHMgaW4gaW5mbGF0ZV9mYXN0KCksIFBQQyBiaWFzZWQ/CisgKiAtIEFkZCBjb21waWxlIHRpbWUgb3B0aW9uLCBQT1NUSU5DLCB0byB1c2UgcG9zdC1pbmNyZW1lbnRzIGluc3RlYWQgKEludGVsPykKKyAqIC0gTWFrZSBNQVRDSCBjb3B5IGluIGluZmxhdGUoKSBtdWNoIGZhc3RlciBmb3Igd2hlbiBpbmZsYXRlX2Zhc3QoKSBub3QgdXNlZAorICogLSBVc2UgbG9jYWwgY29waWVzIG9mIHN0cmVhbSBuZXh0IGFuZCBhdmFpbCB2YWx1ZXMsIGFzIHdlbGwgYXMgbG9jYWwgYml0CisgKiAgIGJ1ZmZlciBhbmQgYml0IGNvdW50IGluIGluZmxhdGUoKS0tZm9yIHNwZWVkIHdoZW4gaW5mbGF0ZV9mYXN0KCkgbm90IHVzZWQKKyAqCisgKiAxLjIuYmV0YTQgICAgMSBKYW4gMjAwMworICogLSBTcGxpdCBwdHIgLSAyNTcgc3RhdGVtZW50cyBpbiBpbmZsYXRlX3RhYmxlKCkgdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3MKKyAqIC0gTW92ZSBhIGNvbW1lbnQgb24gb3V0cHV0IGJ1ZmZlciBzaXplcyBmcm9tIGluZmZhc3QuYyB0byBpbmZsYXRlLmMKKyAqIC0gQWRkIGNvbW1lbnRzIGluIGluZmZhc3QuYyB0byBpbnRyb2R1Y2UgdGhlIGluZmxhdGVfZmFzdCgpIHJvdXRpbmUKKyAqIC0gUmVhcnJhbmdlIHdpbmRvdyBjb3BpZXMgaW4gaW5mbGF0ZV9mYXN0KCkgZm9yIHNwZWVkIGFuZCBzaW1wbGlmaWNhdGlvbgorICogLSBVbnJvbGwgbGFzdCBjb3B5IGZvciB3aW5kb3cgbWF0Y2ggaW4gaW5mbGF0ZV9mYXN0KCkKKyAqIC0gVXNlIGxvY2FsIGNvcGllcyBvZiB3aW5kb3cgdmFyaWFibGVzIGluIGluZmxhdGVfZmFzdCgpIGZvciBzcGVlZAorICogLSBQdWxsIG91dCBjb21tb24gd25leHQgPT0gMCBjYXNlIGZvciBzcGVlZCBpbiBpbmZsYXRlX2Zhc3QoKQorICogLSBNYWtlIG9wIGFuZCBsZW4gaW4gaW5mbGF0ZV9mYXN0KCkgdW5zaWduZWQgZm9yIGNvbnNpc3RlbmN5CisgKiAtIEFkZCBGQVIgdG8gbGNvZGUgYW5kIGRjb2RlIGRlY2xhcmF0aW9ucyBpbiBpbmZsYXRlX2Zhc3QoKQorICogLSBTaW1wbGlmaWVkIGJhZCBkaXN0YW5jZSBjaGVjayBpbiBpbmZsYXRlX2Zhc3QoKQorICogLSBBZGRlZCBpbmZsYXRlQmFja0luaXQoKSwgaW5mbGF0ZUJhY2soKSwgYW5kIGluZmxhdGVCYWNrRW5kKCkgaW4gbmV3CisgKiAgIHNvdXJjZSBmaWxlIGluZmJhY2suYyB0byBwcm92aWRlIGEgY2FsbC1iYWNrIGludGVyZmFjZSB0byBpbmZsYXRlIGZvcgorICogICBwcm9ncmFtcyBsaWtlIGd6aXAgYW5kIHVuemlwIC0tIHVzZXMgd2luZG93IGFzIG91dHB1dCBidWZmZXIgdG8gYXZvaWQKKyAqICAgd2luZG93IGNvcHlpbmcKKyAqCisgKiAxLjIuYmV0YTUgICAgMSBKYW4gMjAwMworICogLSBJbXByb3ZlZCBpbmZsYXRlQmFjaygpIGludGVyZmFjZSB0byBhbGxvdyB0aGUgY2FsbGVyIHRvIHByb3ZpZGUgaW5pdGlhbAorICogICBpbnB1dCBpbiBzdHJtLgorICogLSBGaXhlZCBzdG9yZWQgYmxvY2tzIGJ1ZyBpbiBpbmZsYXRlQmFjaygpCisgKgorICogMS4yLmJldGE2ICAgIDQgSmFuIDIwMDMKKyAqIC0gQWRkZWQgY29tbWVudHMgaW4gaW5mZmFzdC5jIG9uIGVmZmVjdGl2ZW5lc3Mgb2YgUE9TVElOQworICogLSBUeXBlY2FzdGluZyBhbGwgYXJvdW5kIHRvIHJlZHVjZSBjb21waWxlciB3YXJuaW5ncworICogLSBDaGFuZ2VkIGxvb3BzIGZyb20gd2hpbGUgKDEpIG9yIGRvIHt9IHdoaWxlICgxKSB0byBmb3IgKDs7KSwgYWdhaW4gdG8KKyAqICAgbWFrZSBjb21waWxlcnMgaGFwcHkKKyAqIC0gQ2hhbmdlZCB0eXBlIG9mIHdpbmRvdyBpbiBpbmZsYXRlQmFja0luaXQoKSB0byB1bnNpZ25lZCBjaGFyICoKKyAqCisgKiAxLjIuYmV0YTcgICAgMjcgSmFuIDIwMDMKKyAqIC0gQ2hhbmdlZCBtYW55IHR5cGVzIHRvIHVuc2lnbmVkIG9yIHVuc2lnbmVkIHNob3J0IHRvIGF2b2lkIHdhcm5pbmdzCisgKiAtIEFkZGVkIGluZmxhdGVDb3B5KCkgZnVuY3Rpb24KKyAqCisgKiAxLjIuMCAgICAgICAgOSBNYXIgMjAwMworICogLSBDaGFuZ2VkIGluZmxhdGVCYWNrKCkgaW50ZXJmYWNlIHRvIHByb3ZpZGUgc2VwYXJhdGUgb3BhcXVlIGRlc2NyaXB0b3JzCisgKiAgIGZvciB0aGUgaW4oKSBhbmQgb3V0KCkgZnVuY3Rpb25zCisgKiAtIENoYW5nZWQgaW5mbGF0ZUJhY2soKSBhcmd1bWVudCBhbmQgaW5fZnVuYyB0eXBlZGVmIHRvIHN3YXAgdGhlIGxlbmd0aAorICogICBhbmQgYnVmZmVyIGFkZHJlc3MgcmV0dXJuIHZhbHVlcyBmb3IgdGhlIGlucHV0IGZ1bmN0aW9uCisgKiAtIENoZWNrIG5leHRfaW4gYW5kIG5leHRfb3V0IGZvciBaX05VTEwgb24gZW50cnkgdG8gaW5mbGF0ZSgpCisgKgorICogVGhlIGhpc3RvcnkgZm9yIHZlcnNpb25zIGFmdGVyIDEuMi4wIGFyZSBpbiBDaGFuZ2VMb2cgaW4gemxpYiBkaXN0cmlidXRpb24uCisgKi8KKwogI2luY2x1ZGUgInp1dGlsLmgiCi0jaW5jbHVkZSAiaW5mYmxvY2suaCIKKyNpbmNsdWRlICJpbmZ0cmVlcy5oIgorI2luY2x1ZGUgImluZmxhdGUuaCIKKyNpbmNsdWRlICJpbmZmYXN0LmgiCiAKLSNkZWZpbmUgIERPTkUgIElORkxBVEVfRE9ORQotI2RlZmluZSAgQkFEICAgSU5GTEFURV9CQUQKKyNpZmRlZiBNQUtFRklYRUQKKyMgIGlmbmRlZiBCVUlMREZJWEVECisjICAgIGRlZmluZSBCVUlMREZJWEVECisjICBlbmRpZgorI2VuZGlmCiAKLXR5cGVkZWYgZW51bSB7Ci0gICAgICBNRVRIT0QsICAgLyogd2FpdGluZyBmb3IgbWV0aG9kIGJ5dGUgKi8KLSAgICAgIEZMQUcsICAgICAvKiB3YWl0aW5nIGZvciBmbGFnIGJ5dGUgKi8KLSAgICAgIERJQ1Q0LCAgICAvKiBmb3VyIGRpY3Rpb25hcnkgY2hlY2sgYnl0ZXMgdG8gZ28gKi8KLSAgICAgIERJQ1QzLCAgICAvKiB0aHJlZSBkaWN0aW9uYXJ5IGNoZWNrIGJ5dGVzIHRvIGdvICovCi0gICAgICBESUNUMiwgICAgLyogdHdvIGRpY3Rpb25hcnkgY2hlY2sgYnl0ZXMgdG8gZ28gKi8KLSAgICAgIERJQ1QxLCAgICAvKiBvbmUgZGljdGlvbmFyeSBjaGVjayBieXRlIHRvIGdvICovCi0gICAgICBESUNUMCwgICAgLyogd2FpdGluZyBmb3IgaW5mbGF0ZVNldERpY3Rpb25hcnkgKi8KLSAgICAgIEJMT0NLUywgICAvKiBkZWNvbXByZXNzaW5nIGJsb2NrcyAqLwotICAgICAgQ0hFQ0s0LCAgIC8qIGZvdXIgY2hlY2sgYnl0ZXMgdG8gZ28gKi8KLSAgICAgIENIRUNLMywgICAvKiB0aHJlZSBjaGVjayBieXRlcyB0byBnbyAqLwotICAgICAgQ0hFQ0syLCAgIC8qIHR3byBjaGVjayBieXRlcyB0byBnbyAqLwotICAgICAgQ0hFQ0sxLCAgIC8qIG9uZSBjaGVjayBieXRlIHRvIGdvICovCi0gICAgICBET05FLCAgICAgLyogZmluaXNoZWQgY2hlY2ssIGRvbmUgKi8KLSAgICAgIEJBRH0gICAgICAvKiBnb3QgYW4gZXJyb3ItLXN0YXkgaGVyZSAqLwotaW5mbGF0ZV9tb2RlOworLyogZnVuY3Rpb24gcHJvdG90eXBlcyAqLworbG9jYWwgaW50IGluZmxhdGVTdGF0ZUNoZWNrIE9GKCh6X3N0cmVhbXAgc3RybSkpOworbG9jYWwgdm9pZCBmaXhlZHRhYmxlcyBPRigoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZSkpOworbG9jYWwgaW50IHVwZGF0ZXdpbmRvdyBPRigoel9zdHJlYW1wIHN0cm0sIGNvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICplbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjb3B5KSk7CisjaWZkZWYgQlVJTERGSVhFRAorICAgdm9pZCBtYWtlZml4ZWQgT0YoKHZvaWQpKTsKKyNlbmRpZgorI2lmbmRlZiBaX0ZSRUVUWVBFCitsb2NhbCB1bnNpZ25lZCBzeW5jc2VhcmNoIE9GKCh1bnNpZ25lZCBGQVIgKmhhdmUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW4pKTsKKyNlbmRpZgogCi0vKiBpbmZsYXRlIHByaXZhdGUgc3RhdGUgKi8KLXN0cnVjdCBpbnRlcm5hbF9zdGF0ZSB7Ci0KLSAgLyogbW9kZSAqLwotICBpbmZsYXRlX21vZGUgIG1vZGU7ICAgLyogY3VycmVudCBpbmZsYXRlIG1vZGUgKi8KLQotICAvKiBtb2RlIGRlcGVuZGVudCBpbmZvcm1hdGlvbiAqLwotICB1bmlvbiB7Ci0gICAgdUludCBtZXRob2Q7ICAgICAgICAvKiBpZiBGTEFHUywgbWV0aG9kIGJ5dGUgKi8KLSAgICBzdHJ1Y3QgewotICAgICAgdUxvbmcgd2FzOyAgICAgICAgICAgICAgICAvKiBjb21wdXRlZCBjaGVjayB2YWx1ZSAqLwotICAgICAgdUxvbmcgbmVlZDsgICAgICAgICAgICAgICAvKiBzdHJlYW0gY2hlY2sgdmFsdWUgKi8KLSAgICB9IGNoZWNrOyAgICAgICAgICAgIC8qIGlmIENIRUNLLCBjaGVjayB2YWx1ZXMgdG8gY29tcGFyZSAqLwotICAgIHVJbnQgbWFya2VyOyAgICAgICAgLyogaWYgQkFELCBpbmZsYXRlU3luYydzIG1hcmtlciBieXRlcyBjb3VudCAqLwotICB9IHN1YjsgICAgICAgIC8qIHN1Ym1vZGUgKi8KLQotICAvKiBtb2RlIGluZGVwZW5kZW50IGluZm9ybWF0aW9uICovCi0gIGludCAgbm93cmFwOyAgICAgICAgICAvKiBmbGFnIGZvciBubyB3cmFwcGVyICovCi0gIHVJbnQgd2JpdHM7ICAgICAgICAgICAvKiBsb2cyKHdpbmRvdyBzaXplKSAgKDguLjE1LCBkZWZhdWx0cyB0byAxNSkgKi8KLSAgaW5mbGF0ZV9ibG9ja3Nfc3RhdGVmCi0gICAgKmJsb2NrczsgICAgICAgICAgICAvKiBjdXJyZW50IGluZmxhdGVfYmxvY2tzIHN0YXRlICovCi0KLX07Ci0KLQotWkVYUE9SVChpbnQpIGluZmxhdGVSZXNldCggLyogeikgKi8KLXpfc3RyZWFtcCB6ICkKK2xvY2FsIGludCBpbmZsYXRlU3RhdGVDaGVjaygKKyAgICB6X3N0cmVhbXAgc3RybSkKIHsKLSAgaWYgKHogPT0gWl9OVUxMIHx8IHotPnN0YXRlID09IFpfTlVMTCkKLSAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7Ci0gIHotPnRvdGFsX2luID0gei0+dG90YWxfb3V0ID0gMDsKLSAgei0+bXNnID0gWl9OVUxMOwotICB6LT5zdGF0ZS0+bW9kZSA9IHotPnN0YXRlLT5ub3dyYXAgPyBCTE9DS1MgOiBNRVRIT0Q7Ci0gIGluZmxhdGVfYmxvY2tzX3Jlc2V0KHotPnN0YXRlLT5ibG9ja3MsIHosIFpfTlVMTCk7Ci0gIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogcmVzZXRcbiIpKTsKLSAgcmV0dXJuIFpfT0s7CisgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKKyAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwKKyAgICAgICAgc3RybS0+emFsbG9jID09IChhbGxvY19mdW5jKTAgfHwgc3RybS0+emZyZWUgPT0gKGZyZWVfZnVuYykwKQorICAgICAgICByZXR1cm4gMTsKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKyAgICBpZiAoc3RhdGUgPT0gWl9OVUxMIHx8IHN0YXRlLT5zdHJtICE9IHN0cm0gfHwKKyAgICAgICAgc3RhdGUtPm1vZGUgPCBIRUFEIHx8IHN0YXRlLT5tb2RlID4gU1lOQykKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIDA7CiB9CiAKLQotWkVYUE9SVChpbnQpIGluZmxhdGVFbmQoIC8qIHopICovCi16X3N0cmVhbXAgeiApCitpbnQgWkVYUE9SVCBpbmZsYXRlUmVzZXRLZWVwKAorICAgIHpfc3RyZWFtcCBzdHJtKQogewotICBpZiAoeiA9PSBaX05VTEwgfHwgei0+c3RhdGUgPT0gWl9OVUxMIHx8IHotPnpmcmVlID09IFpfTlVMTCkKLSAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7Ci0gIGlmICh6LT5zdGF0ZS0+YmxvY2tzICE9IFpfTlVMTCkKLSAgICBpbmZsYXRlX2Jsb2Nrc19mcmVlKHotPnN0YXRlLT5ibG9ja3MsIHopOwotICBaRlJFRSh6LCB6LT5zdGF0ZSk7Ci0gIHotPnN0YXRlID0gWl9OVUxMOwotICBUcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6IGVuZFxuIikpOwotICByZXR1cm4gWl9PSzsKKyAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlOworCisgICAgaWYgKGluZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CisgICAgc3RybS0+dG90YWxfaW4gPSBzdHJtLT50b3RhbF9vdXQgPSBzdGF0ZS0+dG90YWwgPSAwOworICAgIHN0cm0tPm1zZyA9IFpfTlVMTDsKKyAgICBpZiAoc3RhdGUtPndyYXApICAgICAgICAvKiB0byBzdXBwb3J0IGlsbC1jb25jZWl2ZWQgSmF2YSB0ZXN0IHN1aXRlICovCisgICAgICAgIHN0cm0tPmFkbGVyID0gc3RhdGUtPndyYXAgJiAxOworICAgIHN0YXRlLT5tb2RlID0gSEVBRDsKKyAgICBzdGF0ZS0+bGFzdCA9IDA7CisgICAgc3RhdGUtPmhhdmVkaWN0ID0gMDsKKyAgICBzdGF0ZS0+ZmxhZ3MgPSAtMTsKKyAgICBzdGF0ZS0+ZG1heCA9IDMyNzY4VTsKKyAgICBzdGF0ZS0+aGVhZCA9IFpfTlVMTDsKKyAgICBzdGF0ZS0+aG9sZCA9IDA7CisgICAgc3RhdGUtPmJpdHMgPSAwOworICAgIHN0YXRlLT5sZW5jb2RlID0gc3RhdGUtPmRpc3Rjb2RlID0gc3RhdGUtPm5leHQgPSBzdGF0ZS0+Y29kZXM7CisgICAgc3RhdGUtPnNhbmUgPSAxOworICAgIHN0YXRlLT5iYWNrID0gLTE7CisgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiByZXNldFxuIikpOworICAgIHJldHVybiBaX09LOwogfQogCi0KLVpFWFBPUlQoaW50KSBpbmZsYXRlSW5pdDJfKCAvKiB6LCB3LCB2ZXJzaW9uLCBzdHJlYW1fc2l6ZSkgKi8KLXpfc3RyZWFtcCB6LAotaW50IHcsCi1jb25zdCBjaGFyICp2ZXJzaW9uLAotaW50IHN0cmVhbV9zaXplICkKK2ludCBaRVhQT1JUIGluZmxhdGVSZXNldCgKKyAgICB6X3N0cmVhbXAgc3RybSkKIHsKLSAgaWYgKHZlcnNpb24gPT0gWl9OVUxMIHx8IHZlcnNpb25bMF0gIT0gWkxJQl9WRVJTSU9OWzBdIHx8Ci0gICAgICBzdHJlYW1fc2l6ZSAhPSBzaXplb2Yoel9zdHJlYW0pKQotICAgICAgcmV0dXJuIFpfVkVSU0lPTl9FUlJPUjsKKyAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlOwogCi0gIC8qIGluaXRpYWxpemUgc3RhdGUgKi8KLSAgaWYgKHogPT0gWl9OVUxMKQotICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKLSAgei0+bXNnID0gWl9OVUxMOwotICBpZiAoei0+emFsbG9jID09IFpfTlVMTCkKLSAgewotICAgIHotPnphbGxvYyA9IHpjYWxsb2M7Ci0gICAgei0+b3BhcXVlID0gKHZvaWRwZikwOwotICB9Ci0gIGlmICh6LT56ZnJlZSA9PSBaX05VTEwpIHotPnpmcmVlID0gemNmcmVlOwotICBpZiAoKHotPnN0YXRlID0gKHN0cnVjdCBpbnRlcm5hbF9zdGF0ZSBGQVIgKikKLSAgICAgICBaQUxMT0MoeiwxLHNpemVvZihzdHJ1Y3QgaW50ZXJuYWxfc3RhdGUpKSkgPT0gWl9OVUxMKQotICAgIHJldHVybiBaX01FTV9FUlJPUjsKLSAgei0+c3RhdGUtPmJsb2NrcyA9IFpfTlVMTDsKLQotICAvKiBoYW5kbGUgdW5kb2N1bWVudGVkIG5vd3JhcCBvcHRpb24gKG5vIHpsaWIgaGVhZGVyIG9yIGNoZWNrKSAqLwotICB6LT5zdGF0ZS0+bm93cmFwID0gMDsKLSAgaWYgKHcgPCAwKQotICB7Ci0gICAgdyA9IC0gdzsKLSAgICB6LT5zdGF0ZS0+bm93cmFwID0gMTsKLSAgfQotCi0gIC8qIHNldCB3aW5kb3cgc2l6ZSAqLwotICBpZiAodyA8IDggfHwgdyA+IDE1KQotICB7Ci0gICAgaW5mbGF0ZUVuZCh6KTsKLSAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7Ci0gIH0KLSAgei0+c3RhdGUtPndiaXRzID0gKHVJbnQpdzsKLQotICAvKiBjcmVhdGUgaW5mbGF0ZV9ibG9ja3Mgc3RhdGUgKi8KLSAgaWYgKCh6LT5zdGF0ZS0+YmxvY2tzID0KLSAgICAgIGluZmxhdGVfYmxvY2tzX25ldyh6LCB6LT5zdGF0ZS0+bm93cmFwID8gWl9OVUxMIDogYWRsZXIzMiwgKHVJbnQpMSA8PCB3KSkKLSAgICAgID09IFpfTlVMTCkKLSAgewotICAgIGluZmxhdGVFbmQoeik7Ci0gICAgcmV0dXJuIFpfTUVNX0VSUk9SOwotICB9Ci0gIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogYWxsb2NhdGVkXG4iKSk7Ci0KLSAgLyogcmVzZXQgc3RhdGUgKi8KLSAgaW5mbGF0ZVJlc2V0KHopOwotICByZXR1cm4gWl9PSzsKKyAgICBpZiAoaW5mbGF0ZVN0YXRlQ2hlY2soc3RybSkpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKyAgICBzdGF0ZS0+d3NpemUgPSAwOworICAgIHN0YXRlLT53aGF2ZSA9IDA7CisgICAgc3RhdGUtPnduZXh0ID0gMDsKKyAgICByZXR1cm4gaW5mbGF0ZVJlc2V0S2VlcChzdHJtKTsKIH0KIAotCi0KLSN1bmRlZiAgTkVFREJZVEUKLSNkZWZpbmUgTkVFREJZVEUge2lmKHotPmF2YWlsX2luPT0wKXJldHVybiByO3I9Zjt9Ci0KLSN1bmRlZiAgTkVYVEJZVEUKLSNkZWZpbmUgTkVYVEJZVEUgKHotPmF2YWlsX2luLS0sei0+dG90YWxfaW4rKywqei0+bmV4dF9pbisrKQotCi0KLVpFWFBPUlQoaW50KSBpbmZsYXRlKCAvKiB6LCBmKSAqLwotel9zdHJlYW1wIHosCi1pbnQgZiApCitpbnQgWkVYUE9SVCBpbmZsYXRlUmVzZXQyKAorICAgIHpfc3RyZWFtcCBzdHJtLAorICAgIGludCB3aW5kb3dCaXRzKQogewotICBpbnQgcjsKLSAgdUludCBiOworICAgIGludCB3cmFwOworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CiAKLSAgaWYgKHogPT0gWl9OVUxMIHx8IHotPnN0YXRlID09IFpfTlVMTCB8fCB6LT5uZXh0X2luID09IFpfTlVMTCkKLSAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7Ci0gIGYgPSBmID09IFpfRklOSVNIID8gWl9CVUZfRVJST1IgOiBaX09LOwotICByID0gWl9CVUZfRVJST1I7Ci0gIHdoaWxlICgxKSBzd2l0Y2ggKHotPnN0YXRlLT5tb2RlKQotICB7Ci0gICAgY2FzZSBNRVRIT0Q6Ci0gICAgICBORUVEQllURQotICAgICAgaWYgKCgoei0+c3RhdGUtPnN1Yi5tZXRob2QgPSBORVhUQllURSkgJiAweGYpICE9IFpfREVGTEFURUQpCi0gICAgICB7Ci0gICAgICAgIHotPnN0YXRlLT5tb2RlID0gQkFEOwotICAgICAgICB6LT5tc2cgPSAoY2hhciopInVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIjsKLSAgICAgICAgei0+c3RhdGUtPnN1Yi5tYXJrZXIgPSA1OyAgICAgICAvKiBjYW4ndCB0cnkgaW5mbGF0ZVN5bmMgKi8KLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBpZiAoKHotPnN0YXRlLT5zdWIubWV0aG9kID4+IDQpICsgOCA+IHotPnN0YXRlLT53Yml0cykKLSAgICAgIHsKLSAgICAgICAgei0+c3RhdGUtPm1vZGUgPSBCQUQ7Ci0gICAgICAgIHotPm1zZyA9IChjaGFyKikiaW52YWxpZCB3aW5kb3cgc2l6ZSI7Ci0gICAgICAgIHotPnN0YXRlLT5zdWIubWFya2VyID0gNTsgICAgICAgLyogY2FuJ3QgdHJ5IGluZmxhdGVTeW5jICovCi0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgei0+c3RhdGUtPm1vZGUgPSBGTEFHOwotICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2FzZSBGTEFHOgotICAgICAgTkVFREJZVEUKLSAgICAgIGIgPSBORVhUQllURTsKLSAgICAgIGlmICgoKHotPnN0YXRlLT5zdWIubWV0aG9kIDw8IDgpICsgYikgJSAzMSkKLSAgICAgIHsKLSAgICAgICAgei0+c3RhdGUtPm1vZGUgPSBCQUQ7Ci0gICAgICAgIHotPm1zZyA9IChjaGFyKikiaW5jb3JyZWN0IGhlYWRlciBjaGVjayI7Ci0gICAgICAgIHotPnN0YXRlLT5zdWIubWFya2VyID0gNTsgICAgICAgLyogY2FuJ3QgdHJ5IGluZmxhdGVTeW5jICovCi0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiB6bGliIGhlYWRlciBva1xuIikpOwotICAgICAgaWYgKCEoYiAmIFBSRVNFVF9ESUNUKSkKLSAgICAgIHsKLSAgICAgICAgei0+c3RhdGUtPm1vZGUgPSBCTE9DS1M7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgei0+c3RhdGUtPm1vZGUgPSBESUNUNDsKLSAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgIGNhc2UgRElDVDQ6Ci0gICAgICBORUVEQllURQotICAgICAgei0+c3RhdGUtPnN1Yi5jaGVjay5uZWVkID0gKHVMb25nKU5FWFRCWVRFIDw8IDI0OwotICAgICAgei0+c3RhdGUtPm1vZGUgPSBESUNUMzsKLSAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgIGNhc2UgRElDVDM6Ci0gICAgICBORUVEQllURQotICAgICAgei0+c3RhdGUtPnN1Yi5jaGVjay5uZWVkICs9ICh1TG9uZylORVhUQllURSA8PCAxNjsKLSAgICAgIHotPnN0YXRlLT5tb2RlID0gRElDVDI7Ci0gICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBjYXNlIERJQ1QyOgotICAgICAgTkVFREJZVEUKLSAgICAgIHotPnN0YXRlLT5zdWIuY2hlY2submVlZCArPSAodUxvbmcpTkVYVEJZVEUgPDwgODsKLSAgICAgIHotPnN0YXRlLT5tb2RlID0gRElDVDE7Ci0gICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBjYXNlIERJQ1QxOgotICAgICAgTkVFREJZVEUKLSAgICAgIHotPnN0YXRlLT5zdWIuY2hlY2submVlZCArPSAodUxvbmcpTkVYVEJZVEU7Ci0gICAgICB6LT5hZGxlciA9IHotPnN0YXRlLT5zdWIuY2hlY2submVlZDsKLSAgICAgIHotPnN0YXRlLT5tb2RlID0gRElDVDA7Ci0gICAgICByZXR1cm4gWl9ORUVEX0RJQ1Q7Ci0gICAgY2FzZSBESUNUMDoKLSAgICAgIHotPnN0YXRlLT5tb2RlID0gQkFEOwotICAgICAgei0+bXNnID0gKGNoYXIqKSJuZWVkIGRpY3Rpb25hcnkiOwotICAgICAgei0+c3RhdGUtPnN1Yi5tYXJrZXIgPSAwOyAgICAgICAvKiBjYW4gdHJ5IGluZmxhdGVTeW5jICovCi0gICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7Ci0gICAgY2FzZSBCTE9DS1M6Ci0gICAgICByID0gaW5mbGF0ZV9ibG9ja3Moei0+c3RhdGUtPmJsb2Nrcywgeiwgcik7Ci0gICAgICBpZiAociA9PSBaX0RBVEFfRVJST1IpCi0gICAgICB7Ci0gICAgICAgIHotPnN0YXRlLT5tb2RlID0gQkFEOwotICAgICAgICB6LT5zdGF0ZS0+c3ViLm1hcmtlciA9IDA7ICAgICAgIC8qIGNhbiB0cnkgaW5mbGF0ZVN5bmMgKi8KLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBpZiAociA9PSBaX09LKQotICAgICAgICByID0gZjsKLSAgICAgIGlmIChyICE9IFpfU1RSRUFNX0VORCkKLSAgICAgICAgcmV0dXJuIHI7Ci0gICAgICByID0gZjsKLSAgICAgIGluZmxhdGVfYmxvY2tzX3Jlc2V0KHotPnN0YXRlLT5ibG9ja3MsIHosICZ6LT5zdGF0ZS0+c3ViLmNoZWNrLndhcyk7Ci0gICAgICBpZiAoei0+c3RhdGUtPm5vd3JhcCkKLSAgICAgIHsKLSAgICAgICAgei0+c3RhdGUtPm1vZGUgPSBET05FOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHotPnN0YXRlLT5tb2RlID0gQ0hFQ0s0OwotICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2FzZSBDSEVDSzQ6Ci0gICAgICBORUVEQllURQotICAgICAgei0+c3RhdGUtPnN1Yi5jaGVjay5uZWVkID0gKHVMb25nKU5FWFRCWVRFIDw8IDI0OwotICAgICAgei0+c3RhdGUtPm1vZGUgPSBDSEVDSzM7Ci0gICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBjYXNlIENIRUNLMzoKLSAgICAgIE5FRURCWVRFCi0gICAgICB6LT5zdGF0ZS0+c3ViLmNoZWNrLm5lZWQgKz0gKHVMb25nKU5FWFRCWVRFIDw8IDE2OwotICAgICAgei0+c3RhdGUtPm1vZGUgPSBDSEVDSzI7Ci0gICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBjYXNlIENIRUNLMjoKLSAgICAgIE5FRURCWVRFCi0gICAgICB6LT5zdGF0ZS0+c3ViLmNoZWNrLm5lZWQgKz0gKHVMb25nKU5FWFRCWVRFIDw8IDg7Ci0gICAgICB6LT5zdGF0ZS0+bW9kZSA9IENIRUNLMTsKLSAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgIGNhc2UgQ0hFQ0sxOgotICAgICAgTkVFREJZVEUKLSAgICAgIHotPnN0YXRlLT5zdWIuY2hlY2submVlZCArPSAodUxvbmcpTkVYVEJZVEU7CisgICAgLyogZ2V0IHRoZSBzdGF0ZSAqLworICAgIGlmIChpbmZsYXRlU3RhdGVDaGVjayhzdHJtKSkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOwogCi0gICAgICBpZiAoei0+c3RhdGUtPnN1Yi5jaGVjay53YXMgIT0gei0+c3RhdGUtPnN1Yi5jaGVjay5uZWVkKQotICAgICAgewotICAgICAgICB6LT5zdGF0ZS0+bW9kZSA9IEJBRDsKLSAgICAgICAgei0+bXNnID0gKGNoYXIqKSJpbmNvcnJlY3QgZGF0YSBjaGVjayI7Ci0gICAgICAgIHotPnN0YXRlLT5zdWIubWFya2VyID0gNTsgICAgICAgLyogY2FuJ3QgdHJ5IGluZmxhdGVTeW5jICovCisgICAgLyogZXh0cmFjdCB3cmFwIHJlcXVlc3QgZnJvbSB3aW5kb3dCaXRzIHBhcmFtZXRlciAqLworICAgIGlmICh3aW5kb3dCaXRzIDwgMCkgeworICAgICAgICBpZiAod2luZG93Qml0cyA8IC0xNSkKKyAgICAgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICAgICAgd3JhcCA9IDA7CisgICAgICAgIHdpbmRvd0JpdHMgPSAtd2luZG93Qml0czsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHdyYXAgPSAod2luZG93Qml0cyA+PiA0KSArIDU7CisjaWZkZWYgR1VOWklQCisgICAgICAgIGlmICh3aW5kb3dCaXRzIDwgNDgpCisgICAgICAgICAgICB3aW5kb3dCaXRzICY9IDE1OworI2VuZGlmCisgICAgfQorCisgICAgLyogc2V0IG51bWJlciBvZiB3aW5kb3cgYml0cywgZnJlZSB3aW5kb3cgaWYgZGlmZmVyZW50ICovCisgICAgaWYgKHdpbmRvd0JpdHMgJiYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkpCisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBpZiAoc3RhdGUtPndpbmRvdyAhPSBaX05VTEwgJiYgc3RhdGUtPndiaXRzICE9ICh1bnNpZ25lZCl3aW5kb3dCaXRzKSB7CisgICAgICAgIFpGUkVFKHN0cm0sIHN0YXRlLT53aW5kb3cpOworICAgICAgICBzdGF0ZS0+d2luZG93ID0gWl9OVUxMOworICAgIH0KKworICAgIC8qIHVwZGF0ZSBzdGF0ZSBhbmQgcmVzZXQgdGhlIHJlc3Qgb2YgaXQgKi8KKyAgICBzdGF0ZS0+d3JhcCA9IHdyYXA7CisgICAgc3RhdGUtPndiaXRzID0gKHVuc2lnbmVkKXdpbmRvd0JpdHM7CisgICAgcmV0dXJuIGluZmxhdGVSZXNldChzdHJtKTsKK30KKworaW50IFpFWFBPUlQgaW5mbGF0ZUluaXQyXygKKyAgICB6X3N0cmVhbXAgc3RybSwKKyAgICBpbnQgd2luZG93Qml0cywKKyAgICBjb25zdCBjaGFyICp2ZXJzaW9uLAorICAgIGludCBzdHJlYW1fc2l6ZSkKK3sKKyAgICBpbnQgcmV0OworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisKKyAgICBpZiAodmVyc2lvbiA9PSBaX05VTEwgfHwgdmVyc2lvblswXSAhPSBaTElCX1ZFUlNJT05bMF0gfHwKKyAgICAgICAgc3RyZWFtX3NpemUgIT0gKGludCkoc2l6ZW9mKHpfc3RyZWFtKSkpCisgICAgICAgIHJldHVybiBaX1ZFUlNJT05fRVJST1I7CisgICAgaWYgKHN0cm0gPT0gWl9OVUxMKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RybS0+bXNnID0gWl9OVUxMOyAgICAgICAgICAgICAgICAgLyogaW4gY2FzZSB3ZSByZXR1cm4gYW4gZXJyb3IgKi8KKyAgICBpZiAoc3RybS0+emFsbG9jID09IChhbGxvY19mdW5jKTApIHsKKyNpZmRlZiBaX1NPTE8KKyAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworI2Vsc2UKKyAgICAgICAgc3RybS0+emFsbG9jID0gemNhbGxvYzsKKyAgICAgICAgc3RybS0+b3BhcXVlID0gKHZvaWRwZikwOworI2VuZGlmCisgICAgfQorICAgIGlmIChzdHJtLT56ZnJlZSA9PSAoZnJlZV9mdW5jKTApCisjaWZkZWYgWl9TT0xPCisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyNlbHNlCisgICAgICAgIHN0cm0tPnpmcmVlID0gemNmcmVlOworI2VuZGlmCisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopCisgICAgICAgICAgICBaQUxMT0Moc3RybSwgMSwgc2l6ZW9mKHN0cnVjdCBpbmZsYXRlX3N0YXRlKSk7CisgICAgaWYgKHN0YXRlID09IFpfTlVMTCkgcmV0dXJuIFpfTUVNX0VSUk9SOworICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogYWxsb2NhdGVkXG4iKSk7CisgICAgc3RybS0+c3RhdGUgPSAoc3RydWN0IGludGVybmFsX3N0YXRlIEZBUiAqKXN0YXRlOworICAgIHN0YXRlLT5zdHJtID0gc3RybTsKKyAgICBzdGF0ZS0+d2luZG93ID0gWl9OVUxMOworICAgIHN0YXRlLT5tb2RlID0gSEVBRDsgICAgIC8qIHRvIHBhc3Mgc3RhdGUgdGVzdCBpbiBpbmZsYXRlUmVzZXQyKCkgKi8KKyAgICByZXQgPSBpbmZsYXRlUmVzZXQyKHN0cm0sIHdpbmRvd0JpdHMpOworICAgIGlmIChyZXQgIT0gWl9PSykgeworICAgICAgICBaRlJFRShzdHJtLCBzdGF0ZSk7CisgICAgICAgIHN0cm0tPnN0YXRlID0gWl9OVUxMOworICAgIH0KKyAgICByZXR1cm4gcmV0OworfQorCisjaWZuZGVmIFpfRlJFRVRZUEUKKworaW50IFpFWFBPUlQgaW5mbGF0ZUluaXRfKAorICAgIHpfc3RyZWFtcCBzdHJtLAorICAgIGNvbnN0IGNoYXIgKnZlcnNpb24sCisgICAgaW50IHN0cmVhbV9zaXplKQoreworICAgIHJldHVybiBpbmZsYXRlSW5pdDJfKHN0cm0sIERFRl9XQklUUywgdmVyc2lvbiwgc3RyZWFtX3NpemUpOworfQorCitpbnQgWkVYUE9SVCBpbmZsYXRlUHJpbWUoCisgICAgel9zdHJlYW1wIHN0cm0sCisgICAgaW50IGJpdHMsCisgICAgaW50IHZhbHVlKQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisKKyAgICBpZiAoaW5mbGF0ZVN0YXRlQ2hlY2soc3RybSkpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKyAgICBpZiAoYml0cyA8IDApIHsKKyAgICAgICAgc3RhdGUtPmhvbGQgPSAwOworICAgICAgICBzdGF0ZS0+Yml0cyA9IDA7CisgICAgICAgIHJldHVybiBaX09LOworICAgIH0KKyAgICBpZiAoYml0cyA+IDE2IHx8IHN0YXRlLT5iaXRzICsgKHVJbnQpYml0cyA+IDMyKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgdmFsdWUgJj0gKDFMIDw8IGJpdHMpIC0gMTsKKyAgICBzdGF0ZS0+aG9sZCArPSAodW5zaWduZWQpdmFsdWUgPDwgc3RhdGUtPmJpdHM7CisgICAgc3RhdGUtPmJpdHMgKz0gKHVJbnQpYml0czsKKyAgICByZXR1cm4gWl9PSzsKK30KKworI2VuZGlmICAvKiAhWl9GUkVFVFlQRSAqLworCisvKgorICAgUmV0dXJuIHN0YXRlIHdpdGggbGVuZ3RoIGFuZCBkaXN0YW5jZSBkZWNvZGluZyB0YWJsZXMgYW5kIGluZGV4IHNpemVzIHNldCB0bworICAgZml4ZWQgY29kZSBkZWNvZGluZy4gIE5vcm1hbGx5IHRoaXMgcmV0dXJucyBmaXhlZCB0YWJsZXMgZnJvbSBpbmZmaXhlZC5oLgorICAgSWYgQlVJTERGSVhFRCBpcyBkZWZpbmVkLCB0aGVuIGluc3RlYWQgdGhpcyByb3V0aW5lIGJ1aWxkcyB0aGUgdGFibGVzIHRoZQorICAgZmlyc3QgdGltZSBpdCdzIGNhbGxlZCwgYW5kIHJldHVybnMgdGhvc2UgdGFibGVzIHRoZSBmaXJzdCB0aW1lIGFuZAorICAgdGhlcmVhZnRlci4gIFRoaXMgcmVkdWNlcyB0aGUgc2l6ZSBvZiB0aGUgY29kZSBieSBhYm91dCAySyBieXRlcywgaW4KKyAgIGV4Y2hhbmdlIGZvciBhIGxpdHRsZSBleGVjdXRpb24gdGltZS4gIEhvd2V2ZXIsIEJVSUxERklYRUQgc2hvdWxkIG5vdCBiZQorICAgdXNlZCBmb3IgdGhyZWFkZWQgYXBwbGljYXRpb25zLCBzaW5jZSB0aGUgcmV3cml0aW5nIG9mIHRoZSB0YWJsZXMgYW5kIHZpcmdpbgorICAgbWF5IG5vdCBiZSB0aHJlYWQtc2FmZS4KKyAqLworbG9jYWwgdm9pZCBmaXhlZHRhYmxlcygKKyAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlKQoreworI2lmZGVmIEJVSUxERklYRUQKKyAgICBzdGF0aWMgaW50IHZpcmdpbiA9IDE7CisgICAgc3RhdGljIGNvZGUgKmxlbmZpeCwgKmRpc3RmaXg7CisgICAgc3RhdGljIGNvZGUgZml4ZWRbNTQ0XTsKKworICAgIC8qIGJ1aWxkIGZpeGVkIGh1ZmZtYW4gdGFibGVzIGlmIGZpcnN0IGNhbGwgKG1heSBub3QgYmUgdGhyZWFkIHNhZmUpICovCisgICAgaWYgKHZpcmdpbikgeworICAgICAgICB1bnNpZ25lZCBzeW0sIGJpdHM7CisgICAgICAgIHN0YXRpYyBjb2RlICpuZXh0OworCisgICAgICAgIC8qIGxpdGVyYWwvbGVuZ3RoIHRhYmxlICovCisgICAgICAgIHN5bSA9IDA7CisgICAgICAgIHdoaWxlIChzeW0gPCAxNDQpIHN0YXRlLT5sZW5zW3N5bSsrXSA9IDg7CisgICAgICAgIHdoaWxlIChzeW0gPCAyNTYpIHN0YXRlLT5sZW5zW3N5bSsrXSA9IDk7CisgICAgICAgIHdoaWxlIChzeW0gPCAyODApIHN0YXRlLT5sZW5zW3N5bSsrXSA9IDc7CisgICAgICAgIHdoaWxlIChzeW0gPCAyODgpIHN0YXRlLT5sZW5zW3N5bSsrXSA9IDg7CisgICAgICAgIG5leHQgPSBmaXhlZDsKKyAgICAgICAgbGVuZml4ID0gbmV4dDsKKyAgICAgICAgYml0cyA9IDk7CisgICAgICAgIGluZmxhdGVfdGFibGUoTEVOUywgc3RhdGUtPmxlbnMsIDI4OCwgJihuZXh0KSwgJihiaXRzKSwgc3RhdGUtPndvcmspOworCisgICAgICAgIC8qIGRpc3RhbmNlIHRhYmxlICovCisgICAgICAgIHN5bSA9IDA7CisgICAgICAgIHdoaWxlIChzeW0gPCAzMikgc3RhdGUtPmxlbnNbc3ltKytdID0gNTsKKyAgICAgICAgZGlzdGZpeCA9IG5leHQ7CisgICAgICAgIGJpdHMgPSA1OworICAgICAgICBpbmZsYXRlX3RhYmxlKERJU1RTLCBzdGF0ZS0+bGVucywgMzIsICYobmV4dCksICYoYml0cyksIHN0YXRlLT53b3JrKTsKKworICAgICAgICAvKiBkbyB0aGlzIGp1c3Qgb25jZSAqLworICAgICAgICB2aXJnaW4gPSAwOworICAgIH0KKyNlbHNlIC8qICFCVUlMREZJWEVEICovCisjICAgaW5jbHVkZSAiaW5mZml4ZWQuaCIKKyNlbmRpZiAvKiBCVUlMREZJWEVEICovCisgICAgc3RhdGUtPmxlbmNvZGUgPSBsZW5maXg7CisgICAgc3RhdGUtPmxlbmJpdHMgPSA5OworICAgIHN0YXRlLT5kaXN0Y29kZSA9IGRpc3RmaXg7CisgICAgc3RhdGUtPmRpc3RiaXRzID0gNTsKK30KKworI2lmZGVmIE1BS0VGSVhFRAorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKy8qCisgICBXcml0ZSBvdXQgdGhlIGluZmZpeGVkLmggdGhhdCBpcyAjaW5jbHVkZSdkIGFib3ZlLiAgRGVmaW5pbmcgTUFLRUZJWEVEIGFsc28KKyAgIGRlZmluZXMgQlVJTERGSVhFRCwgc28gdGhlIHRhYmxlcyBhcmUgYnVpbHQgb24gdGhlIGZseS4gIG1ha2VmaXhlZCgpIHdyaXRlcworICAgdGhvc2UgdGFibGVzIHRvIHN0ZG91dCwgd2hpY2ggd291bGQgYmUgcGlwZWQgdG8gaW5mZml4ZWQuaC4gIEEgc21hbGwgcHJvZ3JhbQorICAgY2FuIHNpbXBseSBjYWxsIG1ha2VmaXhlZCB0byBkbyB0aGlzOgorCisgICAgdm9pZCBtYWtlZml4ZWQodm9pZCk7CisKKyAgICBpbnQgbWFpbih2b2lkKQorICAgIHsKKyAgICAgICAgbWFrZWZpeGVkKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgVGhlbiB0aGF0IGNhbiBiZSBsaW5rZWQgd2l0aCB6bGliIGJ1aWx0IHdpdGggTUFLRUZJWEVEIGRlZmluZWQgYW5kIHJ1bjoKKworICAgIGEub3V0ID4gaW5mZml4ZWQuaAorICovCit2b2lkIG1ha2VmaXhlZCgpCit7CisgICAgdW5zaWduZWQgbG93LCBzaXplOworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIHN0YXRlOworCisgICAgZml4ZWR0YWJsZXMoJnN0YXRlKTsKKyAgICBwdXRzKCIgICAgLyogaW5mZml4ZWQuaCAtLSB0YWJsZSBmb3IgZGVjb2RpbmcgZml4ZWQgY29kZXMiKTsKKyAgICBwdXRzKCIgICAgICogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgbWFrZWZpeGVkKCkuIik7CisgICAgcHV0cygiICAgICAqLyIpOworICAgIHB1dHMoIiIpOworICAgIHB1dHMoIiAgICAvKiBXQVJOSU5HOiB0aGlzIGZpbGUgc2hvdWxkICpub3QqIGJlIHVzZWQgYnkgYXBwbGljYXRpb25zLiIpOworICAgIHB1dHMoIiAgICAgICBJdCBpcyBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGxpYnJhcnkgYW5kIGlzIik7CisgICAgcHV0cygiICAgICAgIHN1YmplY3QgdG8gY2hhbmdlLiBBcHBsaWNhdGlvbnMgc2hvdWxkIG9ubHkgdXNlIHpsaWIuaC4iKTsKKyAgICBwdXRzKCIgICAgICovIik7CisgICAgcHV0cygiIik7CisgICAgc2l6ZSA9IDFVIDw8IDk7CisgICAgcHJpbnRmKCIgICAgc3RhdGljIGNvbnN0IGNvZGUgbGVuZml4WyV1XSA9IHsiLCBzaXplKTsKKyAgICBsb3cgPSAwOworICAgIGZvciAoOzspIHsKKyAgICAgICAgaWYgKChsb3cgJSA3KSA9PSAwKSBwcmludGYoIlxuICAgICAgICAiKTsKKyAgICAgICAgcHJpbnRmKCJ7JXUsJXUsJWR9IiwgKGxvdyAmIDEyNykgPT0gOTkgPyA2NCA6IHN0YXRlLmxlbmNvZGVbbG93XS5vcCwKKyAgICAgICAgICAgICAgIHN0YXRlLmxlbmNvZGVbbG93XS5iaXRzLCBzdGF0ZS5sZW5jb2RlW2xvd10udmFsKTsKKyAgICAgICAgaWYgKCsrbG93ID09IHNpemUpIGJyZWFrOworICAgICAgICBwdXRjaGFyKCcsJyk7CisgICAgfQorICAgIHB1dHMoIlxuICAgIH07Iik7CisgICAgc2l6ZSA9IDFVIDw8IDU7CisgICAgcHJpbnRmKCJcbiAgICBzdGF0aWMgY29uc3QgY29kZSBkaXN0Zml4WyV1XSA9IHsiLCBzaXplKTsKKyAgICBsb3cgPSAwOworICAgIGZvciAoOzspIHsKKyAgICAgICAgaWYgKChsb3cgJSA2KSA9PSAwKSBwcmludGYoIlxuICAgICAgICAiKTsKKyAgICAgICAgcHJpbnRmKCJ7JXUsJXUsJWR9Iiwgc3RhdGUuZGlzdGNvZGVbbG93XS5vcCwgc3RhdGUuZGlzdGNvZGVbbG93XS5iaXRzLAorICAgICAgICAgICAgICAgc3RhdGUuZGlzdGNvZGVbbG93XS52YWwpOworICAgICAgICBpZiAoKytsb3cgPT0gc2l6ZSkgYnJlYWs7CisgICAgICAgIHB1dGNoYXIoJywnKTsKKyAgICB9CisgICAgcHV0cygiXG4gICAgfTsiKTsKK30KKyNlbmRpZiAvKiBNQUtFRklYRUQgKi8KKworLyoKKyAgIFVwZGF0ZSB0aGUgd2luZG93IHdpdGggdGhlIGxhc3Qgd3NpemUgKG5vcm1hbGx5IDMySykgYnl0ZXMgd3JpdHRlbiBiZWZvcmUKKyAgIHJldHVybmluZy4gIElmIHdpbmRvdyBkb2VzIG5vdCBleGlzdCB5ZXQsIGNyZWF0ZSBpdC4gIFRoaXMgaXMgb25seSBjYWxsZWQKKyAgIHdoZW4gYSB3aW5kb3cgaXMgYWxyZWFkeSBpbiB1c2UsIG9yIHdoZW4gb3V0cHV0IGhhcyBiZWVuIHdyaXR0ZW4gZHVyaW5nIHRoaXMKKyAgIGluZmxhdGUgY2FsbCwgYnV0IHRoZSBlbmQgb2YgdGhlIGRlZmxhdGUgc3RyZWFtIGhhcyBub3QgYmVlbiByZWFjaGVkIHlldC4KKyAgIEl0IGlzIGFsc28gY2FsbGVkIHRvIGNyZWF0ZSBhIHdpbmRvdyBmb3IgZGljdGlvbmFyeSBkYXRhIHdoZW4gYSBkaWN0aW9uYXJ5CisgICBpcyBsb2FkZWQuCisKKyAgIFByb3ZpZGluZyBvdXRwdXQgYnVmZmVycyBsYXJnZXIgdGhhbiAzMksgdG8gaW5mbGF0ZSgpIHNob3VsZCBwcm92aWRlIGEgc3BlZWQKKyAgIGFkdmFudGFnZSwgc2luY2Ugb25seSB0aGUgbGFzdCAzMksgb2Ygb3V0cHV0IGlzIGNvcGllZCB0byB0aGUgc2xpZGluZyB3aW5kb3cKKyAgIHVwb24gcmV0dXJuIGZyb20gaW5mbGF0ZSgpLCBhbmQgc2luY2UgYWxsIGRpc3RhbmNlcyBhZnRlciB0aGUgZmlyc3QgMzJLIG9mCisgICBvdXRwdXQgd2lsbCBmYWxsIGluIHRoZSBvdXRwdXQgZGF0YSwgbWFraW5nIG1hdGNoIGNvcGllcyBzaW1wbGVyIGFuZCBmYXN0ZXIuCisgICBUaGUgYWR2YW50YWdlIG1heSBiZSBkZXBlbmRlbnQgb24gdGhlIHNpemUgb2YgdGhlIHByb2Nlc3NvcidzIGRhdGEgY2FjaGVzLgorICovCitsb2NhbCBpbnQgdXBkYXRld2luZG93KAorICAgIHpfc3RyZWFtcCBzdHJtLAorICAgIGNvbnN0IEJ5dGVmICplbmQsCisgICAgdW5zaWduZWQgY29weSkKK3sKKyAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlOworICAgIHVuc2lnbmVkIGRpc3Q7CisKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKworICAgIC8qIGlmIGl0IGhhc24ndCBiZWVuIGRvbmUgYWxyZWFkeSwgYWxsb2NhdGUgc3BhY2UgZm9yIHRoZSB3aW5kb3cgKi8KKyAgICBpZiAoc3RhdGUtPndpbmRvdyA9PSBaX05VTEwpIHsKKyAgICAgICAgc3RhdGUtPndpbmRvdyA9ICh1bnNpZ25lZCBjaGFyIEZBUiAqKQorICAgICAgICAgICAgICAgICAgICAgICAgWkFMTE9DKHN0cm0sIDFVIDw8IHN0YXRlLT53Yml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodW5zaWduZWQgY2hhcikpOworICAgICAgICBpZiAoc3RhdGUtPndpbmRvdyA9PSBaX05VTEwpIHJldHVybiAxOworICAgIH0KKworICAgIC8qIGlmIHdpbmRvdyBub3QgaW4gdXNlIHlldCwgaW5pdGlhbGl6ZSAqLworICAgIGlmIChzdGF0ZS0+d3NpemUgPT0gMCkgeworICAgICAgICBzdGF0ZS0+d3NpemUgPSAxVSA8PCBzdGF0ZS0+d2JpdHM7CisgICAgICAgIHN0YXRlLT53bmV4dCA9IDA7CisgICAgICAgIHN0YXRlLT53aGF2ZSA9IDA7CisgICAgfQorCisgICAgLyogY29weSBzdGF0ZS0+d3NpemUgb3IgbGVzcyBvdXRwdXQgYnl0ZXMgaW50byB0aGUgY2lyY3VsYXIgd2luZG93ICovCisgICAgaWYgKGNvcHkgPj0gc3RhdGUtPndzaXplKSB7CisgICAgICAgIHptZW1jcHkoc3RhdGUtPndpbmRvdywgZW5kIC0gc3RhdGUtPndzaXplLCBzdGF0ZS0+d3NpemUpOworICAgICAgICBzdGF0ZS0+d25leHQgPSAwOworICAgICAgICBzdGF0ZS0+d2hhdmUgPSBzdGF0ZS0+d3NpemU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkaXN0ID0gc3RhdGUtPndzaXplIC0gc3RhdGUtPnduZXh0OworICAgICAgICBpZiAoZGlzdCA+IGNvcHkpIGRpc3QgPSBjb3B5OworICAgICAgICB6bWVtY3B5KHN0YXRlLT53aW5kb3cgKyBzdGF0ZS0+d25leHQsIGVuZCAtIGNvcHksIGRpc3QpOworICAgICAgICBjb3B5IC09IGRpc3Q7CisgICAgICAgIGlmIChjb3B5KSB7CisgICAgICAgICAgICB6bWVtY3B5KHN0YXRlLT53aW5kb3csIGVuZCAtIGNvcHksIGNvcHkpOworICAgICAgICAgICAgc3RhdGUtPnduZXh0ID0gY29weTsKKyAgICAgICAgICAgIHN0YXRlLT53aGF2ZSA9IHN0YXRlLT53c2l6ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN0YXRlLT53bmV4dCArPSBkaXN0OworICAgICAgICAgICAgaWYgKHN0YXRlLT53bmV4dCA9PSBzdGF0ZS0+d3NpemUpIHN0YXRlLT53bmV4dCA9IDA7CisgICAgICAgICAgICBpZiAoc3RhdGUtPndoYXZlIDwgc3RhdGUtPndzaXplKSBzdGF0ZS0+d2hhdmUgKz0gZGlzdDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLyogTWFjcm9zIGZvciBpbmZsYXRlKCk6ICovCisKKy8qIGNoZWNrIGZ1bmN0aW9uIHRvIHVzZSBhZGxlcjMyKCkgZm9yIHpsaWIgb3IgY3JjMzIoKSBmb3IgZ3ppcCAqLworI2lmZGVmIEdVTlpJUAorIyAgZGVmaW5lIFVQREFURV9DSEVDSyhjaGVjaywgYnVmLCBsZW4pIFwKKyAgICAoc3RhdGUtPmZsYWdzID8gY3JjMzIoY2hlY2ssIGJ1ZiwgbGVuKSA6IGFkbGVyMzIoY2hlY2ssIGJ1ZiwgbGVuKSkKKyNlbHNlCisjICBkZWZpbmUgVVBEQVRFX0NIRUNLKGNoZWNrLCBidWYsIGxlbikgYWRsZXIzMihjaGVjaywgYnVmLCBsZW4pCisjZW5kaWYKKworLyogY2hlY2sgbWFjcm9zIGZvciBoZWFkZXIgY3JjICovCisjaWZkZWYgR1VOWklQCisjICBkZWZpbmUgQ1JDMihjaGVjaywgd29yZCkgXAorICAgIGRvIHsgXAorICAgICAgICBoYnVmWzBdID0gKHVuc2lnbmVkIGNoYXIpKHdvcmQpOyBcCisgICAgICAgIGhidWZbMV0gPSAodW5zaWduZWQgY2hhcikoKHdvcmQpID4+IDgpOyBcCisgICAgICAgIGNoZWNrID0gY3JjMzIoY2hlY2ssIGhidWYsIDIpOyBcCisgICAgfSB3aGlsZSAoMCkKKworIyAgZGVmaW5lIENSQzQoY2hlY2ssIHdvcmQpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaGJ1ZlswXSA9ICh1bnNpZ25lZCBjaGFyKSh3b3JkKTsgXAorICAgICAgICBoYnVmWzFdID0gKHVuc2lnbmVkIGNoYXIpKCh3b3JkKSA+PiA4KTsgXAorICAgICAgICBoYnVmWzJdID0gKHVuc2lnbmVkIGNoYXIpKCh3b3JkKSA+PiAxNik7IFwKKyAgICAgICAgaGJ1ZlszXSA9ICh1bnNpZ25lZCBjaGFyKSgod29yZCkgPj4gMjQpOyBcCisgICAgICAgIGNoZWNrID0gY3JjMzIoY2hlY2ssIGhidWYsIDQpOyBcCisgICAgfSB3aGlsZSAoMCkKKyNlbmRpZgorCisvKiBMb2FkIHJlZ2lzdGVycyB3aXRoIHN0YXRlIGluIGluZmxhdGUoKSBmb3Igc3BlZWQgKi8KKyNkZWZpbmUgTE9BRCgpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgcHV0ID0gc3RybS0+bmV4dF9vdXQ7IFwKKyAgICAgICAgbGVmdCA9IHN0cm0tPmF2YWlsX291dDsgXAorICAgICAgICBuZXh0ID0gc3RybS0+bmV4dF9pbjsgXAorICAgICAgICBoYXZlID0gc3RybS0+YXZhaWxfaW47IFwKKyAgICAgICAgaG9sZCA9IHN0YXRlLT5ob2xkOyBcCisgICAgICAgIGJpdHMgPSBzdGF0ZS0+Yml0czsgXAorICAgIH0gd2hpbGUgKDApCisKKy8qIFJlc3RvcmUgc3RhdGUgZnJvbSByZWdpc3RlcnMgaW4gaW5mbGF0ZSgpICovCisjZGVmaW5lIFJFU1RPUkUoKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0cm0tPm5leHRfb3V0ID0gcHV0OyBcCisgICAgICAgIHN0cm0tPmF2YWlsX291dCA9IGxlZnQ7IFwKKyAgICAgICAgc3RybS0+bmV4dF9pbiA9IG5leHQ7IFwKKyAgICAgICAgc3RybS0+YXZhaWxfaW4gPSBoYXZlOyBcCisgICAgICAgIHN0YXRlLT5ob2xkID0gaG9sZDsgXAorICAgICAgICBzdGF0ZS0+Yml0cyA9IGJpdHM7IFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBDbGVhciB0aGUgaW5wdXQgYml0IGFjY3VtdWxhdG9yICovCisjZGVmaW5lIElOSVRCSVRTKCkgXAorICAgIGRvIHsgXAorICAgICAgICBob2xkID0gMDsgXAorICAgICAgICBiaXRzID0gMDsgXAorICAgIH0gd2hpbGUgKDApCisKKy8qIEdldCBhIGJ5dGUgb2YgaW5wdXQgaW50byB0aGUgYml0IGFjY3VtdWxhdG9yLCBvciByZXR1cm4gZnJvbSBpbmZsYXRlKCkKKyAgIGlmIHRoZXJlIGlzIG5vIGlucHV0IGF2YWlsYWJsZS4gKi8KKyNkZWZpbmUgUFVMTEJZVEUoKSBcCisgICAgZG8geyBcCisgICAgICAgIGlmIChoYXZlID09IDApIGdvdG8gaW5mX2xlYXZlOyBcCisgICAgICAgIGhhdmUtLTsgXAorICAgICAgICBob2xkICs9ICh1bnNpZ25lZCBsb25nKSgqbmV4dCsrKSA8PCBiaXRzOyBcCisgICAgICAgIGJpdHMgKz0gODsgXAorICAgIH0gd2hpbGUgKDApCisKKy8qIEFzc3VyZSB0aGF0IHRoZXJlIGFyZSBhdCBsZWFzdCBuIGJpdHMgaW4gdGhlIGJpdCBhY2N1bXVsYXRvci4gIElmIHRoZXJlIGlzCisgICBub3QgZW5vdWdoIGF2YWlsYWJsZSBpbnB1dCB0byBkbyB0aGF0LCB0aGVuIHJldHVybiBmcm9tIGluZmxhdGUoKS4gKi8KKyNkZWZpbmUgTkVFREJJVFMobikgXAorICAgIGRvIHsgXAorICAgICAgICB3aGlsZSAoYml0cyA8ICh1bnNpZ25lZCkobikpIFwKKyAgICAgICAgICAgIFBVTExCWVRFKCk7IFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBSZXR1cm4gdGhlIGxvdyBuIGJpdHMgb2YgdGhlIGJpdCBhY2N1bXVsYXRvciAobiA8IDE2KSAqLworI2RlZmluZSBCSVRTKG4pIFwKKyAgICAoKHVuc2lnbmVkKWhvbGQgJiAoKDFVIDw8IChuKSkgLSAxKSkKKworLyogUmVtb3ZlIG4gYml0cyBmcm9tIHRoZSBiaXQgYWNjdW11bGF0b3IgKi8KKyNkZWZpbmUgRFJPUEJJVFMobikgXAorICAgIGRvIHsgXAorICAgICAgICBob2xkID4+PSAobik7IFwKKyAgICAgICAgYml0cyAtPSAodW5zaWduZWQpKG4pOyBcCisgICAgfSB3aGlsZSAoMCkKKworLyogUmVtb3ZlIHplcm8gdG8gc2V2ZW4gYml0cyBhcyBuZWVkZWQgdG8gZ28gdG8gYSBieXRlIGJvdW5kYXJ5ICovCisjZGVmaW5lIEJZVEVCSVRTKCkgXAorICAgIGRvIHsgXAorICAgICAgICBob2xkID4+PSBiaXRzICYgNzsgXAorICAgICAgICBiaXRzIC09IGJpdHMgJiA3OyBcCisgICAgfSB3aGlsZSAoMCkKKworLyoKKyAgIGluZmxhdGUoKSB1c2VzIGEgc3RhdGUgbWFjaGluZSB0byBwcm9jZXNzIGFzIG11Y2ggaW5wdXQgZGF0YSBhbmQgZ2VuZXJhdGUgYXMKKyAgIG11Y2ggb3V0cHV0IGRhdGEgYXMgcG9zc2libGUgYmVmb3JlIHJldHVybmluZy4gIFRoZSBzdGF0ZSBtYWNoaW5lIGlzCisgICBzdHJ1Y3R1cmVkIHJvdWdobHkgYXMgZm9sbG93czoKKworICAgIGZvciAoOzspIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAuLi4KKyAgICBjYXNlIFNUQVRFbjoKKyAgICAgICAgaWYgKG5vdCBlbm91Z2ggaW5wdXQgZGF0YSBvciBvdXRwdXQgc3BhY2UgdG8gbWFrZSBwcm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLi4uIG1ha2UgcHJvZ3Jlc3MgLi4uCisgICAgICAgIHN0YXRlID0gU1RBVEVtOwogICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogemxpYiBjaGVjayBva1xuIikpOwotICAgICAgei0+c3RhdGUtPm1vZGUgPSBET05FOwotICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2FzZSBET05FOgotICAgICAgcmV0dXJuIFpfU1RSRUFNX0VORDsKLSAgICBjYXNlIEJBRDoKLSAgICAgIHJldHVybiBaX0RBVEFfRVJST1I7Ci0gICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKLSAgfQotI2lmZGVmIE5FRURfRFVNTVlfUkVUVVJOCi0gIHJldHVybiBaX1NUUkVBTV9FUlJPUjsgIC8qIFNvbWUgZHVtYiBjb21waWxlcnMgY29tcGxhaW4gd2l0aG91dCB0aGlzICovCisgICAgLi4uCisgICAgfQorCisgICBzbyB3aGVuIGluZmxhdGUoKSBpcyBjYWxsZWQgYWdhaW4sIHRoZSBzYW1lIGNhc2UgaXMgYXR0ZW1wdGVkIGFnYWluLCBhbmQKKyAgIGlmIHRoZSBhcHByb3ByaWF0ZSByZXNvdXJjZXMgYXJlIHByb3ZpZGVkLCB0aGUgbWFjaGluZSBwcm9jZWVkcyB0byB0aGUKKyAgIG5leHQgc3RhdGUuICBUaGUgTkVFREJJVFMoKSBtYWNybyBpcyB1c3VhbGx5IHRoZSB3YXkgdGhlIHN0YXRlIGV2YWx1YXRlcworICAgd2hldGhlciBpdCBjYW4gcHJvY2VlZCBvciBzaG91bGQgcmV0dXJuLiAgTkVFREJJVFMoKSBkb2VzIHRoZSByZXR1cm4gaWYKKyAgIHRoZSByZXF1ZXN0ZWQgYml0cyBhcmUgbm90IGF2YWlsYWJsZS4gIFRoZSB0eXBpY2FsIHVzZSBvZiB0aGUgQklUUyBtYWNyb3MKKyAgIGlzOgorCisgICAgICAgIE5FRURCSVRTKG4pOworICAgICAgICAuLi4gZG8gc29tZXRoaW5nIHdpdGggQklUUyhuKSAuLi4KKyAgICAgICAgRFJPUEJJVFMobik7CisKKyAgIHdoZXJlIE5FRURCSVRTKG4pIGVpdGhlciByZXR1cm5zIGZyb20gaW5mbGF0ZSgpIGlmIHRoZXJlIGlzbid0IGVub3VnaAorICAgaW5wdXQgbGVmdCB0byBsb2FkIG4gYml0cyBpbnRvIHRoZSBhY2N1bXVsYXRvciwgb3IgaXQgY29udGludWVzLiAgQklUUyhuKQorICAgZ2l2ZXMgdGhlIGxvdyBuIGJpdHMgaW4gdGhlIGFjY3VtdWxhdG9yLiAgV2hlbiBkb25lLCBEUk9QQklUUyhuKSBkcm9wcworICAgdGhlIGxvdyBuIGJpdHMgb2ZmIHRoZSBhY2N1bXVsYXRvci4gIElOSVRCSVRTKCkgY2xlYXJzIHRoZSBhY2N1bXVsYXRvcgorICAgYW5kIHNldHMgdGhlIG51bWJlciBvZiBhdmFpbGFibGUgYml0cyB0byB6ZXJvLiAgQllURUJJVFMoKSBkaXNjYXJkcyBqdXN0CisgICBlbm91Z2ggYml0cyB0byBwdXQgdGhlIGFjY3VtdWxhdG9yIG9uIGEgYnl0ZSBib3VuZGFyeS4gIEFmdGVyIEJZVEVCSVRTKCkKKyAgIGFuZCBhIE5FRURCSVRTKDgpLCB0aGVuIEJJVFMoOCkgd291bGQgcmV0dXJuIHRoZSBuZXh0IGJ5dGUgaW4gdGhlIHN0cmVhbS4KKworICAgTkVFREJJVFMobikgdXNlcyBQVUxMQllURSgpIHRvIGdldCBhbiBhdmFpbGFibGUgYnl0ZSBvZiBpbnB1dCwgb3IgdG8gcmV0dXJuCisgICBpZiB0aGVyZSBpcyBubyBpbnB1dCBhdmFpbGFibGUuICBUaGUgZGVjb2Rpbmcgb2YgdmFyaWFibGUgbGVuZ3RoIGNvZGVzIHVzZXMKKyAgIFBVTExCWVRFKCkgZGlyZWN0bHkgaW4gb3JkZXIgdG8gcHVsbCBqdXN0IGVub3VnaCBieXRlcyB0byBkZWNvZGUgdGhlIG5leHQKKyAgIGNvZGUsIGFuZCBubyBtb3JlLgorCisgICBTb21lIHN0YXRlcyBsb29wIHVudGlsIHRoZXkgZ2V0IGVub3VnaCBpbnB1dCwgbWFraW5nIHN1cmUgdGhhdCBlbm91Z2gKKyAgIHN0YXRlIGluZm9ybWF0aW9uIGlzIG1haW50YWluZWQgdG8gY29udGludWUgdGhlIGxvb3Agd2hlcmUgaXQgbGVmdCBvZmYKKyAgIGlmIE5FRURCSVRTKCkgcmV0dXJucyBpbiB0aGUgbG9vcC4gIEZvciBleGFtcGxlLCB3YW50LCBuZWVkLCBhbmQga2VlcAorICAgd291bGQgYWxsIGhhdmUgdG8gYWN0dWFsbHkgYmUgcGFydCBvZiB0aGUgc2F2ZWQgc3RhdGUgaW4gY2FzZSBORUVEQklUUygpCisgICByZXR1cm5zOgorCisgICAgY2FzZSBTVEFURXc6CisgICAgICAgIHdoaWxlICh3YW50IDwgbmVlZCkgeworICAgICAgICAgICAgTkVFREJJVFMobik7CisgICAgICAgICAgICBrZWVwW3dhbnQrK10gPSBCSVRTKG4pOworICAgICAgICAgICAgRFJPUEJJVFMobik7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGUgPSBTVEFURXg7CisgICAgY2FzZSBTVEFURXg6CisKKyAgIEFzIHNob3duIGFib3ZlLCBpZiB0aGUgbmV4dCBzdGF0ZSBpcyBhbHNvIHRoZSBuZXh0IGNhc2UsIHRoZW4gdGhlIGJyZWFrCisgICBpcyBvbWl0dGVkLgorCisgICBBIHN0YXRlIG1heSBhbHNvIHJldHVybiBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIG91dHB1dCBzcGFjZSBhdmFpbGFibGUgdG8KKyAgIGNvbXBsZXRlIHRoYXQgc3RhdGUuICBUaG9zZSBzdGF0ZXMgYXJlIGNvcHlpbmcgc3RvcmVkIGRhdGEsIHdyaXRpbmcgYQorICAgbGl0ZXJhbCBieXRlLCBhbmQgY29weWluZyBhIG1hdGNoaW5nIHN0cmluZy4KKworICAgV2hlbiByZXR1cm5pbmcsIGEgImdvdG8gaW5mX2xlYXZlIiBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgdG90YWwgY291bnRlcnMsCisgICB1cGRhdGUgdGhlIGNoZWNrIHZhbHVlLCBhbmQgZGV0ZXJtaW5lIHdoZXRoZXIgYW55IHByb2dyZXNzIGhhcyBiZWVuIG1hZGUKKyAgIGR1cmluZyB0aGF0IGluZmxhdGUoKSBjYWxsIGluIG9yZGVyIHRvIHJldHVybiB0aGUgcHJvcGVyIHJldHVybiBjb2RlLgorICAgUHJvZ3Jlc3MgaXMgZGVmaW5lZCBhcyBhIGNoYW5nZSBpbiBlaXRoZXIgc3RybS0+YXZhaWxfaW4gb3Igc3RybS0+YXZhaWxfb3V0LgorICAgV2hlbiB0aGVyZSBpcyBhIHdpbmRvdywgZ290byBpbmZfbGVhdmUgd2lsbCB1cGRhdGUgdGhlIHdpbmRvdyB3aXRoIHRoZSBsYXN0CisgICBvdXRwdXQgd3JpdHRlbi4gIElmIGEgZ290byBpbmZfbGVhdmUgb2NjdXJzIGluIHRoZSBtaWRkbGUgb2YgZGVjb21wcmVzc2lvbgorICAgYW5kIHRoZXJlIGlzIG5vIHdpbmRvdyBjdXJyZW50bHksIGdvdG8gaW5mX2xlYXZlIHdpbGwgY3JlYXRlIG9uZSBhbmQgY29weQorICAgb3V0cHV0IHRvIHRoZSB3aW5kb3cgZm9yIHRoZSBuZXh0IGNhbGwgb2YgaW5mbGF0ZSgpLgorCisgICBJbiB0aGlzIGltcGxlbWVudGF0aW9uLCB0aGUgZmx1c2ggcGFyYW1ldGVyIG9mIGluZmxhdGUoKSBvbmx5IGFmZmVjdHMgdGhlCisgICByZXR1cm4gY29kZSAocGVyIHpsaWIuaCkuICBpbmZsYXRlKCkgYWx3YXlzIHdyaXRlcyBhcyBtdWNoIGFzIHBvc3NpYmxlIHRvCisgICBzdHJtLT5uZXh0X291dCwgZ2l2ZW4gdGhlIHNwYWNlIGF2YWlsYWJsZSBhbmQgdGhlIHByb3ZpZGVkIGlucHV0LS10aGUgZWZmZWN0CisgICBkb2N1bWVudGVkIGluIHpsaWIuaCBvZiBaX1NZTkNfRkxVU0guICBGdXJ0aGVybW9yZSwgaW5mbGF0ZSgpIGFsd2F5cyBkZWZlcnMKKyAgIHRoZSBhbGxvY2F0aW9uIG9mIGFuZCBjb3B5aW5nIGludG8gYSBzbGlkaW5nIHdpbmRvdyB1bnRpbCBuZWNlc3NhcnksIHdoaWNoCisgICBwcm92aWRlcyB0aGUgZWZmZWN0IGRvY3VtZW50ZWQgaW4gemxpYi5oIGZvciBaX0ZJTklTSCB3aGVuIHRoZSBlbnRpcmUgaW5wdXQKKyAgIHN0cmVhbSBhdmFpbGFibGUuICBTbyB0aGUgb25seSB0aGluZyB0aGUgZmx1c2ggcGFyYW1ldGVyIGFjdHVhbGx5IGRvZXMgaXM6CisgICB3aGVuIGZsdXNoIGlzIHNldCB0byBaX0ZJTklTSCwgaW5mbGF0ZSgpIGNhbm5vdCByZXR1cm4gWl9PSy4gIEluc3RlYWQgaXQKKyAgIHdpbGwgcmV0dXJuIFpfQlVGX0VSUk9SIGlmIGl0IGhhcyBub3QgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0uCisgKi8KKworaW50IFpFWFBPUlQgaW5mbGF0ZSgKKyAgICB6X3N0cmVhbXAgc3RybSwKKyAgICBpbnQgZmx1c2gpCit7CisgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKKyAgICB6X2NvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICpuZXh0OyAgICAvKiBuZXh0IGlucHV0ICovCisgICAgdW5zaWduZWQgY2hhciBGQVIgKnB1dDsgICAgIC8qIG5leHQgb3V0cHV0ICovCisgICAgdW5zaWduZWQgaGF2ZSwgbGVmdDsgICAgICAgIC8qIGF2YWlsYWJsZSBpbnB1dCBhbmQgb3V0cHV0ICovCisgICAgdW5zaWduZWQgbG9uZyBob2xkOyAgICAgICAgIC8qIGJpdCBidWZmZXIgKi8KKyAgICB1bnNpZ25lZCBiaXRzOyAgICAgICAgICAgICAgLyogYml0cyBpbiBiaXQgYnVmZmVyICovCisgICAgdW5zaWduZWQgaW4sIG91dDsgICAgICAgICAgIC8qIHNhdmUgc3RhcnRpbmcgYXZhaWxhYmxlIGlucHV0IGFuZCBvdXRwdXQgKi8KKyAgICB1bnNpZ25lZCBjb3B5OyAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIHN0b3JlZCBvciBtYXRjaCBieXRlcyB0byBjb3B5ICovCisgICAgdW5zaWduZWQgY2hhciBGQVIgKmZyb207ICAgIC8qIHdoZXJlIHRvIGNvcHkgbWF0Y2ggYnl0ZXMgZnJvbSAqLworICAgIGNvZGUgaGVyZTsgICAgICAgICAgICAgICAgICAvKiBjdXJyZW50IGRlY29kaW5nIHRhYmxlIGVudHJ5ICovCisgICAgY29kZSBsYXN0OyAgICAgICAgICAgICAgICAgIC8qIHBhcmVudCB0YWJsZSBlbnRyeSAqLworICAgIHVuc2lnbmVkIGxlbjsgICAgICAgICAgICAgICAvKiBsZW5ndGggdG8gY29weSBmb3IgcmVwZWF0cywgYml0cyB0byBkcm9wICovCisgICAgaW50IHJldDsgICAgICAgICAgICAgICAgICAgIC8qIHJldHVybiBjb2RlICovCisjaWZkZWYgR1VOWklQCisgICAgdW5zaWduZWQgY2hhciBoYnVmWzRdOyAgICAgIC8qIGJ1ZmZlciBmb3IgZ3ppcCBoZWFkZXIgY3JjIGNhbGN1bGF0aW9uICovCisjZW5kaWYKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgb3JkZXJbMTldID0gLyogcGVybXV0YXRpb24gb2YgY29kZSBsZW5ndGhzICovCisgICAgICAgIHsxNiwgMTcsIDE4LCAwLCA4LCA3LCA5LCA2LCAxMCwgNSwgMTEsIDQsIDEyLCAzLCAxMywgMiwgMTQsIDEsIDE1fTsKKworICAgIGlmIChpbmZsYXRlU3RhdGVDaGVjayhzdHJtKSB8fCBzdHJtLT5uZXh0X291dCA9PSBaX05VTEwgfHwKKyAgICAgICAgKHN0cm0tPm5leHRfaW4gPT0gWl9OVUxMICYmIHN0cm0tPmF2YWlsX2luICE9IDApKQorICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKyAgICBpZiAoc3RhdGUtPm1vZGUgPT0gVFlQRSkgc3RhdGUtPm1vZGUgPSBUWVBFRE87ICAgICAgLyogc2tpcCBjaGVjayAqLworICAgIExPQUQoKTsKKyAgICBpbiA9IGhhdmU7CisgICAgb3V0ID0gbGVmdDsKKyAgICByZXQgPSBaX09LOworICAgIGZvciAoOzspCisgICAgICAgIHN3aXRjaCAoc3RhdGUtPm1vZGUpIHsKKyAgICAgICAgY2FzZSBIRUFEOgorICAgICAgICAgICAgaWYgKHN0YXRlLT53cmFwID09IDApIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IFRZUEVETzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE5FRURCSVRTKDE2KTsKKyNpZmRlZiBHVU5aSVAKKyAgICAgICAgICAgIGlmICgoc3RhdGUtPndyYXAgJiAyKSAmJiBob2xkID09IDB4OGIxZikgeyAgLyogZ3ppcCBoZWFkZXIgKi8KKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPndiaXRzID09IDApCisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT53Yml0cyA9IDE1OworICAgICAgICAgICAgICAgIHN0YXRlLT5jaGVjayA9IGNyYzMyKDBMLCBaX05VTEwsIDApOworICAgICAgICAgICAgICAgIENSQzIoc3RhdGUtPmNoZWNrLCBob2xkKTsKKyAgICAgICAgICAgICAgICBJTklUQklUUygpOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gRkxBR1M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3RhdGUtPmhlYWQgIT0gWl9OVUxMKQorICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT5kb25lID0gLTE7CisgICAgICAgICAgICBpZiAoIShzdGF0ZS0+d3JhcCAmIDEpIHx8ICAgLyogY2hlY2sgaWYgemxpYiBoZWFkZXIgYWxsb3dlZCAqLworI2Vsc2UKKyAgICAgICAgICAgIGlmICgKKyNlbmRpZgorICAgICAgICAgICAgICAgICgoQklUUyg4KSA8PCA4KSArIChob2xkID4+IDgpKSAlIDMxKSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW5jb3JyZWN0IGhlYWRlciBjaGVjayI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoQklUUyg0KSAhPSBaX0RFRkxBVEVEKSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikidW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRFJPUEJJVFMoNCk7CisgICAgICAgICAgICBsZW4gPSBCSVRTKDQpICsgODsKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+d2JpdHMgPT0gMCkKKyAgICAgICAgICAgICAgICBzdGF0ZS0+d2JpdHMgPSBsZW47CisgICAgICAgICAgICBpZiAobGVuID4gMTUgfHwgbGVuID4gc3RhdGUtPndiaXRzKSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCB3aW5kb3cgc2l6ZSI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZS0+ZG1heCA9IDFVIDw8IGxlbjsKKyAgICAgICAgICAgIHN0YXRlLT5mbGFncyA9IDA7ICAgICAgICAgICAgICAgLyogaW5kaWNhdGUgemxpYiBoZWFkZXIgKi8KKyAgICAgICAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICB6bGliIGhlYWRlciBva1xuIikpOworICAgICAgICAgICAgc3RybS0+YWRsZXIgPSBzdGF0ZS0+Y2hlY2sgPSBhZGxlcjMyKDBMLCBaX05VTEwsIDApOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBob2xkICYgMHgyMDAgPyBESUNUSUQgOiBUWVBFOworICAgICAgICAgICAgSU5JVEJJVFMoKTsKKyAgICAgICAgICAgIGJyZWFrOworI2lmZGVmIEdVTlpJUAorICAgICAgICBjYXNlIEZMQUdTOgorICAgICAgICAgICAgTkVFREJJVFMoMTYpOworICAgICAgICAgICAgc3RhdGUtPmZsYWdzID0gKGludCkoaG9sZCk7CisgICAgICAgICAgICBpZiAoKHN0YXRlLT5mbGFncyAmIDB4ZmYpICE9IFpfREVGTEFURUQpIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJ1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3RhdGUtPmZsYWdzICYgMHhlMDAwKSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikidW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0IjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGF0ZS0+aGVhZCAhPSBaX05VTEwpCisgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPnRleHQgPSAoaW50KSgoaG9sZCA+PiA4KSAmIDEpOworICAgICAgICAgICAgaWYgKChzdGF0ZS0+ZmxhZ3MgJiAweDAyMDApICYmIChzdGF0ZS0+d3JhcCAmIDQpKQorICAgICAgICAgICAgICAgIENSQzIoc3RhdGUtPmNoZWNrLCBob2xkKTsKKyAgICAgICAgICAgIElOSVRCSVRTKCk7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IFRJTUU7CisgICAgICAgICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICAgICAgY2FzZSBUSU1FOgorICAgICAgICAgICAgTkVFREJJVFMoMzIpOworICAgICAgICAgICAgaWYgKHN0YXRlLT5oZWFkICE9IFpfTlVMTCkKKyAgICAgICAgICAgICAgICBzdGF0ZS0+aGVhZC0+dGltZSA9IGhvbGQ7CisgICAgICAgICAgICBpZiAoKHN0YXRlLT5mbGFncyAmIDB4MDIwMCkgJiYgKHN0YXRlLT53cmFwICYgNCkpCisgICAgICAgICAgICAgICAgQ1JDNChzdGF0ZS0+Y2hlY2ssIGhvbGQpOworICAgICAgICAgICAgSU5JVEJJVFMoKTsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gT1M7CisgICAgICAgICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICAgICAgY2FzZSBPUzoKKyAgICAgICAgICAgIE5FRURCSVRTKDE2KTsKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+aGVhZCAhPSBaX05VTEwpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+aGVhZC0+eGZsYWdzID0gKGludCkoaG9sZCAmIDB4ZmYpOworICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT5vcyA9IChpbnQpKGhvbGQgPj4gOCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKHN0YXRlLT5mbGFncyAmIDB4MDIwMCkgJiYgKHN0YXRlLT53cmFwICYgNCkpCisgICAgICAgICAgICAgICAgQ1JDMihzdGF0ZS0+Y2hlY2ssIGhvbGQpOworICAgICAgICAgICAgSU5JVEJJVFMoKTsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gRVhMRU47CisgICAgICAgICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICAgICAgY2FzZSBFWExFTjoKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiAweDA0MDApIHsKKyAgICAgICAgICAgICAgICBORUVEQklUUygxNik7CisgICAgICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCA9ICh1bnNpZ25lZCkoaG9sZCk7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLT5oZWFkICE9IFpfTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPmV4dHJhX2xlbiA9ICh1bnNpZ25lZClob2xkOworICAgICAgICAgICAgICAgIGlmICgoc3RhdGUtPmZsYWdzICYgMHgwMjAwKSAmJiAoc3RhdGUtPndyYXAgJiA0KSkKKyAgICAgICAgICAgICAgICAgICAgQ1JDMihzdGF0ZS0+Y2hlY2ssIGhvbGQpOworICAgICAgICAgICAgICAgIElOSVRCSVRTKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChzdGF0ZS0+aGVhZCAhPSBaX05VTEwpCisgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPmV4dHJhID0gWl9OVUxMOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBFWFRSQTsKKyAgICAgICAgICAgICAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgICAgICBjYXNlIEVYVFJBOgorICAgICAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIDB4MDQwMCkgeworICAgICAgICAgICAgICAgIGNvcHkgPSBzdGF0ZS0+bGVuZ3RoOworICAgICAgICAgICAgICAgIGlmIChjb3B5ID4gaGF2ZSkgY29weSA9IGhhdmU7CisgICAgICAgICAgICAgICAgaWYgKGNvcHkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLT5oZWFkICE9IFpfTlVMTCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPmV4dHJhICE9IFpfTlVMTCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgKGxlbiA9IHN0YXRlLT5oZWFkLT5leHRyYV9sZW4gLSBzdGF0ZS0+bGVuZ3RoKSA8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPmV4dHJhX21heCkgeworICAgICAgICAgICAgICAgICAgICAgICAgem1lbWNweShzdGF0ZS0+aGVhZC0+ZXh0cmEgKyBsZW4sIG5leHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiArIGNvcHkgPiBzdGF0ZS0+aGVhZC0+ZXh0cmFfbWF4ID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPmV4dHJhX21heCAtIGxlbiA6IGNvcHkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgoc3RhdGUtPmZsYWdzICYgMHgwMjAwKSAmJiAoc3RhdGUtPndyYXAgJiA0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5jaGVjayA9IGNyYzMyKHN0YXRlLT5jaGVjaywgbmV4dCwgY29weSk7CisgICAgICAgICAgICAgICAgICAgIGhhdmUgLT0gY29weTsKKyAgICAgICAgICAgICAgICAgICAgbmV4dCArPSBjb3B5OworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bGVuZ3RoIC09IGNvcHk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChzdGF0ZS0+bGVuZ3RoKSBnb3RvIGluZl9sZWF2ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlLT5sZW5ndGggPSAwOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBOQU1FOworICAgICAgICAgICAgICAgIC8qIGZhbGx0aHJvdWdoICovCisgICAgICAgIGNhc2UgTkFNRToKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiAweDA4MDApIHsKKyAgICAgICAgICAgICAgICBpZiAoaGF2ZSA9PSAwKSBnb3RvIGluZl9sZWF2ZTsKKyAgICAgICAgICAgICAgICBjb3B5ID0gMDsKKyAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgIGxlbiA9ICh1bnNpZ25lZCkobmV4dFtjb3B5KytdKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLT5oZWFkICE9IFpfTlVMTCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT5uYW1lICE9IFpfTlVMTCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5ndGggPCBzdGF0ZS0+aGVhZC0+bmFtZV9tYXgpCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aGVhZC0+bmFtZVtzdGF0ZS0+bGVuZ3RoKytdID0gKEJ5dGVmKWxlbjsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChsZW4gJiYgY29weSA8IGhhdmUpOworICAgICAgICAgICAgICAgIGlmICgoc3RhdGUtPmZsYWdzICYgMHgwMjAwKSAmJiAoc3RhdGUtPndyYXAgJiA0KSkKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmNoZWNrID0gY3JjMzIoc3RhdGUtPmNoZWNrLCBuZXh0LCBjb3B5KTsKKyAgICAgICAgICAgICAgICBoYXZlIC09IGNvcHk7CisgICAgICAgICAgICAgICAgbmV4dCArPSBjb3B5OworICAgICAgICAgICAgICAgIGlmIChsZW4pIGdvdG8gaW5mX2xlYXZlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoc3RhdGUtPmhlYWQgIT0gWl9OVUxMKQorICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT5uYW1lID0gWl9OVUxMOworICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCA9IDA7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IENPTU1FTlQ7CisgICAgICAgICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICAgICAgY2FzZSBDT01NRU5UOgorICAgICAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIDB4MTAwMCkgeworICAgICAgICAgICAgICAgIGlmIChoYXZlID09IDApIGdvdG8gaW5mX2xlYXZlOworICAgICAgICAgICAgICAgIGNvcHkgPSAwOworICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgbGVuID0gKHVuc2lnbmVkKShuZXh0W2NvcHkrK10pOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPmhlYWQgIT0gWl9OVUxMICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPmNvbW1lbnQgIT0gWl9OVUxMICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCA8IHN0YXRlLT5oZWFkLT5jb21tX21heCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT5jb21tZW50W3N0YXRlLT5sZW5ndGgrK10gPSAoQnl0ZWYpbGVuOworICAgICAgICAgICAgICAgIH0gd2hpbGUgKGxlbiAmJiBjb3B5IDwgaGF2ZSk7CisgICAgICAgICAgICAgICAgaWYgKChzdGF0ZS0+ZmxhZ3MgJiAweDAyMDApICYmIChzdGF0ZS0+d3JhcCAmIDQpKQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+Y2hlY2sgPSBjcmMzMihzdGF0ZS0+Y2hlY2ssIG5leHQsIGNvcHkpOworICAgICAgICAgICAgICAgIGhhdmUgLT0gY29weTsKKyAgICAgICAgICAgICAgICBuZXh0ICs9IGNvcHk7CisgICAgICAgICAgICAgICAgaWYgKGxlbikgZ290byBpbmZfbGVhdmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChzdGF0ZS0+aGVhZCAhPSBaX05VTEwpCisgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPmNvbW1lbnQgPSBaX05VTEw7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEhDUkM7CisgICAgICAgICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICAgICAgY2FzZSBIQ1JDOgorICAgICAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIDB4MDIwMCkgeworICAgICAgICAgICAgICAgIE5FRURCSVRTKDE2KTsKKyAgICAgICAgICAgICAgICBpZiAoKHN0YXRlLT53cmFwICYgNCkgJiYgaG9sZCAhPSAoc3RhdGUtPmNoZWNrICYgMHhmZmZmKSkgeworICAgICAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJoZWFkZXIgY3JjIG1pc21hdGNoIjsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBJTklUQklUUygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0YXRlLT5oZWFkICE9IFpfTlVMTCkgeworICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT5oY3JjID0gKGludCkoKHN0YXRlLT5mbGFncyA+PiA5KSAmIDEpOworICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT5kb25lID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gc3RhdGUtPmNoZWNrID0gY3JjMzIoMEwsIFpfTlVMTCwgMCk7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IFRZUEU7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorICAgICAgICBjYXNlIERJQ1RJRDoKKyAgICAgICAgICAgIE5FRURCSVRTKDMyKTsKKyAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gc3RhdGUtPmNoZWNrID0gWlNXQVAzMihob2xkKTsKKyAgICAgICAgICAgIElOSVRCSVRTKCk7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IERJQ1Q7CisgICAgICAgICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICAgICAgY2FzZSBESUNUOgorICAgICAgICAgICAgaWYgKHN0YXRlLT5oYXZlZGljdCA9PSAwKSB7CisgICAgICAgICAgICAgICAgUkVTVE9SRSgpOworICAgICAgICAgICAgICAgIHJldHVybiBaX05FRURfRElDVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gc3RhdGUtPmNoZWNrID0gYWRsZXIzMigwTCwgWl9OVUxMLCAwKTsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gVFlQRTsKKyAgICAgICAgICAgICAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgICAgICBjYXNlIFRZUEU6CisgICAgICAgICAgICBpZiAoZmx1c2ggPT0gWl9CTE9DSyB8fCBmbHVzaCA9PSBaX1RSRUVTKSBnb3RvIGluZl9sZWF2ZTsKKyAgICAgICAgICAgICAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgICAgICBjYXNlIFRZUEVETzoKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+bGFzdCkgeworICAgICAgICAgICAgICAgIEJZVEVCSVRTKCk7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBDSEVDSzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE5FRURCSVRTKDMpOworICAgICAgICAgICAgc3RhdGUtPmxhc3QgPSBCSVRTKDEpOworICAgICAgICAgICAgRFJPUEJJVFMoMSk7CisgICAgICAgICAgICBzd2l0Y2ggKEJJVFMoMikpIHsKKyAgICAgICAgICAgIGNhc2UgMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0b3JlZCBibG9jayAqLworICAgICAgICAgICAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICAgIHN0b3JlZCBibG9jayVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxhc3QgPyAiIChsYXN0KSIgOiAiIikpOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gU1RPUkVEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZml4ZWQgYmxvY2sgKi8KKyAgICAgICAgICAgICAgICBmaXhlZHRhYmxlcyhzdGF0ZSk7CisgICAgICAgICAgICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgZml4ZWQgY29kZXMgYmxvY2slc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5sYXN0ID8gIiAobGFzdCkiIDogIiIpKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IExFTl87ICAgICAgICAgICAgIC8qIGRlY29kZSBjb2RlcyAqLworICAgICAgICAgICAgICAgIGlmIChmbHVzaCA9PSBaX1RSRUVTKSB7CisgICAgICAgICAgICAgICAgICAgIERST1BCSVRTKDIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGluZl9sZWF2ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkeW5hbWljIGJsb2NrICovCisgICAgICAgICAgICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgZHluYW1pYyBjb2RlcyBibG9jayVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxhc3QgPyAiIChsYXN0KSIgOiAiIikpOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gVEFCTEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBibG9jayB0eXBlIjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERST1BCSVRTKDIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1RPUkVEOgorICAgICAgICAgICAgQllURUJJVFMoKTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogZ28gdG8gYnl0ZSBib3VuZGFyeSAqLworICAgICAgICAgICAgTkVFREJJVFMoMzIpOworICAgICAgICAgICAgaWYgKChob2xkICYgMHhmZmZmKSAhPSAoKGhvbGQgPj4gMTYpIF4gMHhmZmZmKSkgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCA9ICh1bnNpZ25lZClob2xkICYgMHhmZmZmOworICAgICAgICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICBzdG9yZWQgbGVuZ3RoICV1XG4iLAorICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bGVuZ3RoKSk7CisgICAgICAgICAgICBJTklUQklUUygpOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBDT1BZXzsKKyAgICAgICAgICAgIGlmIChmbHVzaCA9PSBaX1RSRUVTKSBnb3RvIGluZl9sZWF2ZTsKKyAgICAgICAgICAgICAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgICAgICBjYXNlIENPUFlfOgorICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBDT1BZOworICAgICAgICAgICAgICAgIC8qIGZhbGx0aHJvdWdoICovCisgICAgICAgIGNhc2UgQ09QWToKKyAgICAgICAgICAgIGNvcHkgPSBzdGF0ZS0+bGVuZ3RoOworICAgICAgICAgICAgaWYgKGNvcHkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29weSA+IGhhdmUpIGNvcHkgPSBoYXZlOworICAgICAgICAgICAgICAgIGlmIChjb3B5ID4gbGVmdCkgY29weSA9IGxlZnQ7CisgICAgICAgICAgICAgICAgaWYgKGNvcHkgPT0gMCkgZ290byBpbmZfbGVhdmU7CisgICAgICAgICAgICAgICAgem1lbWNweShwdXQsIG5leHQsIGNvcHkpOworICAgICAgICAgICAgICAgIGhhdmUgLT0gY29weTsKKyAgICAgICAgICAgICAgICBuZXh0ICs9IGNvcHk7CisgICAgICAgICAgICAgICAgbGVmdCAtPSBjb3B5OworICAgICAgICAgICAgICAgIHB1dCArPSBjb3B5OworICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5ndGggLT0gY29weTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgc3RvcmVkIGVuZFxuIikpOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBUWVBFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVEFCTEU6CisgICAgICAgICAgICBORUVEQklUUygxNCk7CisgICAgICAgICAgICBzdGF0ZS0+bmxlbiA9IEJJVFMoNSkgKyAyNTc7CisgICAgICAgICAgICBEUk9QQklUUyg1KTsKKyAgICAgICAgICAgIHN0YXRlLT5uZGlzdCA9IEJJVFMoNSkgKyAxOworICAgICAgICAgICAgRFJPUEJJVFMoNSk7CisgICAgICAgICAgICBzdGF0ZS0+bmNvZGUgPSBCSVRTKDQpICsgNDsKKyAgICAgICAgICAgIERST1BCSVRTKDQpOworI2lmbmRlZiBQS1pJUF9CVUdfV09SS0FST1VORAorICAgICAgICAgICAgaWYgKHN0YXRlLT5ubGVuID4gMjg2IHx8IHN0YXRlLT5uZGlzdCA+IDMwKSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikidG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICBUcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgIHRhYmxlIHNpemVzIG9rXG4iKSk7CisgICAgICAgICAgICBzdGF0ZS0+aGF2ZSA9IDA7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IExFTkxFTlM7CisgICAgICAgICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICAgICAgY2FzZSBMRU5MRU5TOgorICAgICAgICAgICAgd2hpbGUgKHN0YXRlLT5oYXZlIDwgc3RhdGUtPm5jb2RlKSB7CisgICAgICAgICAgICAgICAgTkVFREJJVFMoMyk7CisgICAgICAgICAgICAgICAgc3RhdGUtPmxlbnNbb3JkZXJbc3RhdGUtPmhhdmUrK11dID0gKHVuc2lnbmVkIHNob3J0KUJJVFMoMyk7CisgICAgICAgICAgICAgICAgRFJPUEJJVFMoMyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3aGlsZSAoc3RhdGUtPmhhdmUgPCAxOSkKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bGVuc1tvcmRlcltzdGF0ZS0+aGF2ZSsrXV0gPSAwOworICAgICAgICAgICAgc3RhdGUtPm5leHQgPSBzdGF0ZS0+Y29kZXM7CisgICAgICAgICAgICBzdGF0ZS0+bGVuY29kZSA9IChjb25zdCBjb2RlIEZBUiAqKShzdGF0ZS0+bmV4dCk7CisgICAgICAgICAgICBzdGF0ZS0+bGVuYml0cyA9IDc7CisgICAgICAgICAgICByZXQgPSBpbmZsYXRlX3RhYmxlKENPREVTLCBzdGF0ZS0+bGVucywgMTksICYoc3RhdGUtPm5leHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHN0YXRlLT5sZW5iaXRzKSwgc3RhdGUtPndvcmspOworICAgICAgICAgICAgaWYgKHJldCkgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgY29kZSBsZW5ndGhzIHNldCI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBUcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgIGNvZGUgbGVuZ3RocyBva1xuIikpOworICAgICAgICAgICAgc3RhdGUtPmhhdmUgPSAwOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBDT0RFTEVOUzsKKyAgICAgICAgICAgICAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgICAgICBjYXNlIENPREVMRU5TOgorICAgICAgICAgICAgd2hpbGUgKHN0YXRlLT5oYXZlIDwgc3RhdGUtPm5sZW4gKyBzdGF0ZS0+bmRpc3QpIHsKKyAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgIGhlcmUgPSBzdGF0ZS0+bGVuY29kZVtCSVRTKHN0YXRlLT5sZW5iaXRzKV07CisgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQpKGhlcmUuYml0cykgPD0gYml0cykgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIFBVTExCWVRFKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChoZXJlLnZhbCA8IDE2KSB7CisgICAgICAgICAgICAgICAgICAgIERST1BCSVRTKGhlcmUuYml0cyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5zW3N0YXRlLT5oYXZlKytdID0gaGVyZS52YWw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoaGVyZS52YWwgPT0gMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5FRURCSVRTKGhlcmUuYml0cyArIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgRFJPUEJJVFMoaGVyZS5iaXRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS0+aGF2ZSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBzdGF0ZS0+bGVuc1tzdGF0ZS0+aGF2ZSAtIDFdOworICAgICAgICAgICAgICAgICAgICAgICAgY29weSA9IDMgKyBCSVRTKDIpOworICAgICAgICAgICAgICAgICAgICAgICAgRFJPUEJJVFMoMik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaGVyZS52YWwgPT0gMTcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5FRURCSVRTKGhlcmUuYml0cyArIDMpOworICAgICAgICAgICAgICAgICAgICAgICAgRFJPUEJJVFMoaGVyZS5iaXRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBjb3B5ID0gMyArIEJJVFMoMyk7CisgICAgICAgICAgICAgICAgICAgICAgICBEUk9QQklUUygzKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5FRURCSVRTKGhlcmUuYml0cyArIDcpOworICAgICAgICAgICAgICAgICAgICAgICAgRFJPUEJJVFMoaGVyZS5iaXRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBjb3B5ID0gMTEgKyBCSVRTKDcpOworICAgICAgICAgICAgICAgICAgICAgICAgRFJPUEJJVFMoNyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLT5oYXZlICsgY29weSA+IHN0YXRlLT5ubGVuICsgc3RhdGUtPm5kaXN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGNvcHktLSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5zW3N0YXRlLT5oYXZlKytdID0gKHVuc2lnbmVkIHNob3J0KWxlbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIGhhbmRsZSBlcnJvciBicmVha3MgaW4gd2hpbGUgKi8KKyAgICAgICAgICAgIGlmIChzdGF0ZS0+bW9kZSA9PSBCQUQpIGJyZWFrOworCisgICAgICAgICAgICAvKiBjaGVjayBmb3IgZW5kLW9mLWJsb2NrIGNvZGUgKGJldHRlciBoYXZlIG9uZSkgKi8KKyAgICAgICAgICAgIGlmIChzdGF0ZS0+bGVuc1syNTZdID09IDApIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2siOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBidWlsZCBjb2RlIHRhYmxlcyAtLSBub3RlOiBkbyBub3QgY2hhbmdlIHRoZSBsZW5iaXRzIG9yIGRpc3RiaXRzCisgICAgICAgICAgICAgICB2YWx1ZXMgaGVyZSAoOSBhbmQgNikgd2l0aG91dCByZWFkaW5nIHRoZSBjb21tZW50cyBpbiBpbmZ0cmVlcy5oCisgICAgICAgICAgICAgICBjb25jZXJuaW5nIHRoZSBFTk9VR0ggY29uc3RhbnRzLCB3aGljaCBkZXBlbmQgb24gdGhvc2UgdmFsdWVzICovCisgICAgICAgICAgICBzdGF0ZS0+bmV4dCA9IHN0YXRlLT5jb2RlczsKKyAgICAgICAgICAgIHN0YXRlLT5sZW5jb2RlID0gKGNvbnN0IGNvZGUgRkFSICopKHN0YXRlLT5uZXh0KTsKKyAgICAgICAgICAgIHN0YXRlLT5sZW5iaXRzID0gOTsKKyAgICAgICAgICAgIHJldCA9IGluZmxhdGVfdGFibGUoTEVOUywgc3RhdGUtPmxlbnMsIHN0YXRlLT5ubGVuLCAmKHN0YXRlLT5uZXh0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihzdGF0ZS0+bGVuYml0cyksIHN0YXRlLT53b3JrKTsKKyAgICAgICAgICAgIGlmIChyZXQpIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGUtPmRpc3Rjb2RlID0gKGNvbnN0IGNvZGUgRkFSICopKHN0YXRlLT5uZXh0KTsKKyAgICAgICAgICAgIHN0YXRlLT5kaXN0Yml0cyA9IDY7CisgICAgICAgICAgICByZXQgPSBpbmZsYXRlX3RhYmxlKERJU1RTLCBzdGF0ZS0+bGVucyArIHN0YXRlLT5ubGVuLCBzdGF0ZS0+bmRpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihzdGF0ZS0+bmV4dCksICYoc3RhdGUtPmRpc3RiaXRzKSwgc3RhdGUtPndvcmspOworICAgICAgICAgICAgaWYgKHJldCkgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgZGlzdGFuY2VzIHNldCI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBUcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgIGNvZGVzIG9rXG4iKSk7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IExFTl87CisgICAgICAgICAgICBpZiAoZmx1c2ggPT0gWl9UUkVFUykgZ290byBpbmZfbGVhdmU7CisgICAgICAgICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICAgICAgY2FzZSBMRU5fOgorICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBMRU47CisgICAgICAgICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICAgICAgY2FzZSBMRU46CisgICAgICAgICAgICBpZiAoaGF2ZSA+PSA2ICYmIGxlZnQgPj0gMjU4KSB7CisgICAgICAgICAgICAgICAgUkVTVE9SRSgpOworICAgICAgICAgICAgICAgIGluZmxhdGVfZmFzdChzdHJtLCBvdXQpOworICAgICAgICAgICAgICAgIExPQUQoKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPm1vZGUgPT0gVFlQRSkKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmJhY2sgPSAtMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlLT5iYWNrID0gMDsKKyAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICBoZXJlID0gc3RhdGUtPmxlbmNvZGVbQklUUyhzdGF0ZS0+bGVuYml0cyldOworICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQpKGhlcmUuYml0cykgPD0gYml0cykgYnJlYWs7CisgICAgICAgICAgICAgICAgUFVMTEJZVEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChoZXJlLm9wICYmIChoZXJlLm9wICYgMHhmMCkgPT0gMCkgeworICAgICAgICAgICAgICAgIGxhc3QgPSBoZXJlOworICAgICAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICAgICAgaGVyZSA9IHN0YXRlLT5sZW5jb2RlW2xhc3QudmFsICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQklUUyhsYXN0LmJpdHMgKyBsYXN0Lm9wKSA+PiBsYXN0LmJpdHMpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCkobGFzdC5iaXRzICsgaGVyZS5iaXRzKSA8PSBiaXRzKSBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgUFVMTEJZVEUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgRFJPUEJJVFMobGFzdC5iaXRzKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+YmFjayArPSBsYXN0LmJpdHM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBEUk9QQklUUyhoZXJlLmJpdHMpOworICAgICAgICAgICAgc3RhdGUtPmJhY2sgKz0gaGVyZS5iaXRzOworICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCA9ICh1bnNpZ25lZCloZXJlLnZhbDsKKyAgICAgICAgICAgIGlmICgoaW50KShoZXJlLm9wKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgVHJhY2V2digoc3RkZXJyLCBoZXJlLnZhbCA+PSAweDIwICYmIGhlcmUudmFsIDwgMHg3ZiA/CisgICAgICAgICAgICAgICAgICAgICAgICAiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsICclYydcbiIgOgorICAgICAgICAgICAgICAgICAgICAgICAgImluZmxhdGU6ICAgICAgICAgbGl0ZXJhbCAweCUwMnhcbiIsIGhlcmUudmFsKSk7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBMSVQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaGVyZS5vcCAmIDMyKSB7CisgICAgICAgICAgICAgICAgVHJhY2V2digoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgICBlbmQgb2YgYmxvY2tcbiIpKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+YmFjayA9IC0xOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gVFlQRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChoZXJlLm9wICYgNjQpIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGUtPmV4dHJhID0gKHVuc2lnbmVkKShoZXJlLm9wKSAmIDE1OworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBMRU5FWFQ7CisgICAgICAgICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICAgICAgY2FzZSBMRU5FWFQ6CisgICAgICAgICAgICBpZiAoc3RhdGUtPmV4dHJhKSB7CisgICAgICAgICAgICAgICAgTkVFREJJVFMoc3RhdGUtPmV4dHJhKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bGVuZ3RoICs9IEJJVFMoc3RhdGUtPmV4dHJhKTsKKyAgICAgICAgICAgICAgICBEUk9QQklUUyhzdGF0ZS0+ZXh0cmEpOworICAgICAgICAgICAgICAgIHN0YXRlLT5iYWNrICs9IHN0YXRlLT5leHRyYTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFRyYWNldnYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgICAgbGVuZ3RoICV1XG4iLCBzdGF0ZS0+bGVuZ3RoKSk7CisgICAgICAgICAgICBzdGF0ZS0+d2FzID0gc3RhdGUtPmxlbmd0aDsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gRElTVDsKKyAgICAgICAgICAgICAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgICAgICBjYXNlIERJU1Q6CisgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgaGVyZSA9IHN0YXRlLT5kaXN0Y29kZVtCSVRTKHN0YXRlLT5kaXN0Yml0cyldOworICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQpKGhlcmUuYml0cykgPD0gYml0cykgYnJlYWs7CisgICAgICAgICAgICAgICAgUFVMTEJZVEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoaGVyZS5vcCAmIDB4ZjApID09IDApIHsKKyAgICAgICAgICAgICAgICBsYXN0ID0gaGVyZTsKKyAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgIGhlcmUgPSBzdGF0ZS0+ZGlzdGNvZGVbbGFzdC52YWwgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCSVRTKGxhc3QuYml0cyArIGxhc3Qub3ApID4+IGxhc3QuYml0cyldOworICAgICAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkKShsYXN0LmJpdHMgKyBoZXJlLmJpdHMpIDw9IGJpdHMpIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBQVUxMQllURSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBEUk9QQklUUyhsYXN0LmJpdHMpOworICAgICAgICAgICAgICAgIHN0YXRlLT5iYWNrICs9IGxhc3QuYml0czsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERST1BCSVRTKGhlcmUuYml0cyk7CisgICAgICAgICAgICBzdGF0ZS0+YmFjayArPSBoZXJlLmJpdHM7CisgICAgICAgICAgICBpZiAoaGVyZS5vcCAmIDY0KSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBkaXN0YW5jZSBjb2RlIjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlLT5vZmZzZXQgPSAodW5zaWduZWQpaGVyZS52YWw7CisgICAgICAgICAgICBzdGF0ZS0+ZXh0cmEgPSAodW5zaWduZWQpKGhlcmUub3ApICYgMTU7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IERJU1RFWFQ7CisgICAgICAgICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICAgICAgY2FzZSBESVNURVhUOgorICAgICAgICAgICAgaWYgKHN0YXRlLT5leHRyYSkgeworICAgICAgICAgICAgICAgIE5FRURCSVRTKHN0YXRlLT5leHRyYSk7CisgICAgICAgICAgICAgICAgc3RhdGUtPm9mZnNldCArPSBCSVRTKHN0YXRlLT5leHRyYSk7CisgICAgICAgICAgICAgICAgRFJPUEJJVFMoc3RhdGUtPmV4dHJhKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+YmFjayArPSBzdGF0ZS0+ZXh0cmE7CisgICAgICAgICAgICB9CisjaWZkZWYgSU5GTEFURV9TVFJJQ1QKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+b2Zmc2V0ID4gc3RhdGUtPmRtYXgpIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgIFRyYWNldnYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgICAgZGlzdGFuY2UgJXVcbiIsIHN0YXRlLT5vZmZzZXQpKTsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gTUFUQ0g7CisgICAgICAgICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICAgICAgY2FzZSBNQVRDSDoKKyAgICAgICAgICAgIGlmIChsZWZ0ID09IDApIGdvdG8gaW5mX2xlYXZlOworICAgICAgICAgICAgY29weSA9IG91dCAtIGxlZnQ7CisgICAgICAgICAgICBpZiAoc3RhdGUtPm9mZnNldCA+IGNvcHkpIHsgICAgICAgICAvKiBjb3B5IGZyb20gd2luZG93ICovCisgICAgICAgICAgICAgICAgY29weSA9IHN0YXRlLT5vZmZzZXQgLSBjb3B5OworICAgICAgICAgICAgICAgIGlmIChjb3B5ID4gc3RhdGUtPndoYXZlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS0+c2FuZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2siOworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorI2lmZGVmIElORkxBVEVfQUxMT1dfSU5WQUxJRF9ESVNUQU5DRV9UT09GQVJfQVJSUgorICAgICAgICAgICAgICAgICAgICBUcmFjZSgoc3RkZXJyLCAiaW5mbGF0ZS5jIHRvbyBmYXJcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgY29weSAtPSBzdGF0ZS0+d2hhdmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb3B5ID4gc3RhdGUtPmxlbmd0aCkgY29weSA9IHN0YXRlLT5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb3B5ID4gbGVmdCkgY29weSA9IGxlZnQ7CisgICAgICAgICAgICAgICAgICAgIGxlZnQgLT0gY29weTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCAtPSBjb3B5OworICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICAqcHV0KysgPSAwOworICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLWNvcHkpOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPmxlbmd0aCA9PSAwKSBzdGF0ZS0+bW9kZSA9IExFTjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGNvcHkgPiBzdGF0ZS0+d25leHQpIHsKKyAgICAgICAgICAgICAgICAgICAgY29weSAtPSBzdGF0ZS0+d25leHQ7CisgICAgICAgICAgICAgICAgICAgIGZyb20gPSBzdGF0ZS0+d2luZG93ICsgKHN0YXRlLT53c2l6ZSAtIGNvcHkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZyb20gPSBzdGF0ZS0+d2luZG93ICsgKHN0YXRlLT53bmV4dCAtIGNvcHkpOworICAgICAgICAgICAgICAgIGlmIChjb3B5ID4gc3RhdGUtPmxlbmd0aCkgY29weSA9IHN0YXRlLT5sZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb3B5IGZyb20gb3V0cHV0ICovCisgICAgICAgICAgICAgICAgZnJvbSA9IHB1dCAtIHN0YXRlLT5vZmZzZXQ7CisgICAgICAgICAgICAgICAgY29weSA9IHN0YXRlLT5sZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29weSA+IGxlZnQpIGNvcHkgPSBsZWZ0OworICAgICAgICAgICAgbGVmdCAtPSBjb3B5OworICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCAtPSBjb3B5OworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICpwdXQrKyA9ICpmcm9tKys7CisgICAgICAgICAgICB9IHdoaWxlICgtLWNvcHkpOworICAgICAgICAgICAgaWYgKHN0YXRlLT5sZW5ndGggPT0gMCkgc3RhdGUtPm1vZGUgPSBMRU47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMSVQ6CisgICAgICAgICAgICBpZiAobGVmdCA9PSAwKSBnb3RvIGluZl9sZWF2ZTsKKyAgICAgICAgICAgICpwdXQrKyA9ICh1bnNpZ25lZCBjaGFyKShzdGF0ZS0+bGVuZ3RoKTsKKyAgICAgICAgICAgIGxlZnQtLTsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gTEVOOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ0hFQ0s6CisgICAgICAgICAgICBpZiAoc3RhdGUtPndyYXApIHsKKyAgICAgICAgICAgICAgICBORUVEQklUUygzMik7CisgICAgICAgICAgICAgICAgb3V0IC09IGxlZnQ7CisgICAgICAgICAgICAgICAgc3RybS0+dG90YWxfb3V0ICs9IG91dDsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+dG90YWwgKz0gb3V0OworICAgICAgICAgICAgICAgIGlmICgoc3RhdGUtPndyYXAgJiA0KSAmJiBvdXQpCisgICAgICAgICAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gc3RhdGUtPmNoZWNrID0KKyAgICAgICAgICAgICAgICAgICAgICAgIFVQREFURV9DSEVDSyhzdGF0ZS0+Y2hlY2ssIHB1dCAtIG91dCwgb3V0KTsKKyAgICAgICAgICAgICAgICBvdXQgPSBsZWZ0OworICAgICAgICAgICAgICAgIGlmICgoc3RhdGUtPndyYXAgJiA0KSAmJiAoCisjaWZkZWYgR1VOWklQCisgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+ZmxhZ3MgPyBob2xkIDoKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgWlNXQVAzMihob2xkKSkgIT0gc3RhdGUtPmNoZWNrKSB7CisgICAgICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImluY29ycmVjdCBkYXRhIGNoZWNrIjsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBJTklUQklUUygpOworICAgICAgICAgICAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICBjaGVjayBtYXRjaGVzIHRyYWlsZXJcbiIpKTsKKyAgICAgICAgICAgIH0KKyNpZmRlZiBHVU5aSVAKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gTEVOR1RIOworICAgICAgICAgICAgICAgIC8qIGZhbGx0aHJvdWdoICovCisgICAgICAgIGNhc2UgTEVOR1RIOgorICAgICAgICAgICAgaWYgKHN0YXRlLT53cmFwICYmIHN0YXRlLT5mbGFncykgeworICAgICAgICAgICAgICAgIE5FRURCSVRTKDMyKTsKKyAgICAgICAgICAgICAgICBpZiAoKHN0YXRlLT53cmFwICYgNCkgJiYgaG9sZCAhPSAoc3RhdGUtPnRvdGFsICYgMHhmZmZmZmZmZikpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW5jb3JyZWN0IGxlbmd0aCBjaGVjayI7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgSU5JVEJJVFMoKTsKKyAgICAgICAgICAgICAgICBUcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgbGVuZ3RoIG1hdGNoZXMgdHJhaWxlclxuIikpOworICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IERPTkU7CisgICAgICAgICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICAgICAgY2FzZSBET05FOgorICAgICAgICAgICAgcmV0ID0gWl9TVFJFQU1fRU5EOworICAgICAgICAgICAgZ290byBpbmZfbGVhdmU7CisgICAgICAgIGNhc2UgQkFEOgorICAgICAgICAgICAgcmV0ID0gWl9EQVRBX0VSUk9SOworICAgICAgICAgICAgZ290byBpbmZfbGVhdmU7CisgICAgICAgIGNhc2UgTUVNOgorICAgICAgICAgICAgcmV0dXJuIFpfTUVNX0VSUk9SOworICAgICAgICBjYXNlIFNZTkM6CisgICAgICAgICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICAgICAgfQorCisgICAgLyoKKyAgICAgICBSZXR1cm4gZnJvbSBpbmZsYXRlKCksIHVwZGF0aW5nIHRoZSB0b3RhbCBjb3VudHMgYW5kIHRoZSBjaGVjayB2YWx1ZS4KKyAgICAgICBJZiB0aGVyZSB3YXMgbm8gcHJvZ3Jlc3MgZHVyaW5nIHRoZSBpbmZsYXRlKCkgY2FsbCwgcmV0dXJuIGEgYnVmZmVyCisgICAgICAgZXJyb3IuICBDYWxsIHVwZGF0ZXdpbmRvdygpIHRvIGNyZWF0ZSBhbmQvb3IgdXBkYXRlIHRoZSB3aW5kb3cgc3RhdGUuCisgICAgICAgTm90ZTogYSBtZW1vcnkgZXJyb3IgZnJvbSBpbmZsYXRlKCkgaXMgbm9uLXJlY292ZXJhYmxlLgorICAgICAqLworICBpbmZfbGVhdmU6CisgICAgUkVTVE9SRSgpOworICAgIGlmIChzdGF0ZS0+d3NpemUgfHwgKG91dCAhPSBzdHJtLT5hdmFpbF9vdXQgJiYgc3RhdGUtPm1vZGUgPCBCQUQgJiYKKyAgICAgICAgICAgIChzdGF0ZS0+bW9kZSA8IENIRUNLIHx8IGZsdXNoICE9IFpfRklOSVNIKSkpCisgICAgICAgIGlmICh1cGRhdGV3aW5kb3coc3RybSwgc3RybS0+bmV4dF9vdXQsIG91dCAtIHN0cm0tPmF2YWlsX291dCkpIHsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gTUVNOworICAgICAgICAgICAgcmV0dXJuIFpfTUVNX0VSUk9SOworICAgICAgICB9CisgICAgaW4gLT0gc3RybS0+YXZhaWxfaW47CisgICAgb3V0IC09IHN0cm0tPmF2YWlsX291dDsKKyAgICBzdHJtLT50b3RhbF9pbiArPSBpbjsKKyAgICBzdHJtLT50b3RhbF9vdXQgKz0gb3V0OworICAgIHN0YXRlLT50b3RhbCArPSBvdXQ7CisgICAgaWYgKChzdGF0ZS0+d3JhcCAmIDQpICYmIG91dCkKKyAgICAgICAgc3RybS0+YWRsZXIgPSBzdGF0ZS0+Y2hlY2sgPQorICAgICAgICAgICAgVVBEQVRFX0NIRUNLKHN0YXRlLT5jaGVjaywgc3RybS0+bmV4dF9vdXQgLSBvdXQsIG91dCk7CisgICAgc3RybS0+ZGF0YV90eXBlID0gKGludClzdGF0ZS0+Yml0cyArIChzdGF0ZS0+bGFzdCA/IDY0IDogMCkgKworICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZS0+bW9kZSA9PSBUWVBFID8gMTI4IDogMCkgKworICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZS0+bW9kZSA9PSBMRU5fIHx8IHN0YXRlLT5tb2RlID09IENPUFlfID8gMjU2IDogMCk7CisgICAgaWYgKCgoaW4gPT0gMCAmJiBvdXQgPT0gMCkgfHwgZmx1c2ggPT0gWl9GSU5JU0gpICYmIHJldCA9PSBaX09LKQorICAgICAgICByZXQgPSBaX0JVRl9FUlJPUjsKKyAgICByZXR1cm4gcmV0OworfQorCitpbnQgWkVYUE9SVCBpbmZsYXRlRW5kKAorICAgIHpfc3RyZWFtcCBzdHJtKQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisgICAgaWYgKGluZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKQorICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CisgICAgaWYgKHN0YXRlLT53aW5kb3cgIT0gWl9OVUxMKSBaRlJFRShzdHJtLCBzdGF0ZS0+d2luZG93KTsKKyAgICBaRlJFRShzdHJtLCBzdHJtLT5zdGF0ZSk7CisgICAgc3RybS0+c3RhdGUgPSBaX05VTEw7CisgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiBlbmRcbiIpKTsKKyAgICByZXR1cm4gWl9PSzsKK30KKworI2lmbmRlZiBaX0ZSRUVUWVBFCisKK2ludCBaRVhQT1JUIGluZmxhdGVHZXREaWN0aW9uYXJ5KAorICAgIHpfc3RyZWFtcCBzdHJtLAorICAgIEJ5dGVmICpkaWN0aW9uYXJ5LAorICAgIHVJbnQgKmRpY3RMZW5ndGgpCit7CisgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKKworICAgIC8qIGNoZWNrIHN0YXRlICovCisgICAgaWYgKGluZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CisKKyAgICAvKiBjb3B5IGRpY3Rpb25hcnkgKi8KKyAgICBpZiAoc3RhdGUtPndoYXZlICYmIGRpY3Rpb25hcnkgIT0gWl9OVUxMKSB7CisgICAgICAgIHptZW1jcHkoZGljdGlvbmFyeSwgc3RhdGUtPndpbmRvdyArIHN0YXRlLT53bmV4dCwKKyAgICAgICAgICAgICAgICBzdGF0ZS0+d2hhdmUgLSBzdGF0ZS0+d25leHQpOworICAgICAgICB6bWVtY3B5KGRpY3Rpb25hcnkgKyBzdGF0ZS0+d2hhdmUgLSBzdGF0ZS0+d25leHQsCisgICAgICAgICAgICAgICAgc3RhdGUtPndpbmRvdywgc3RhdGUtPnduZXh0KTsKKyAgICB9CisgICAgaWYgKGRpY3RMZW5ndGggIT0gWl9OVUxMKQorICAgICAgICAqZGljdExlbmd0aCA9IHN0YXRlLT53aGF2ZTsKKyAgICByZXR1cm4gWl9PSzsKK30KKworaW50IFpFWFBPUlQgaW5mbGF0ZVNldERpY3Rpb25hcnkoCisgICAgel9zdHJlYW1wIHN0cm0sCisgICAgY29uc3QgQnl0ZWYgKmRpY3Rpb25hcnksCisgICAgdUludCBkaWN0TGVuZ3RoKQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisgICAgdW5zaWduZWQgbG9uZyBkaWN0aWQ7CisgICAgaW50IHJldDsKKworICAgIC8qIGNoZWNrIHN0YXRlICovCisgICAgaWYgKGluZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CisgICAgaWYgKHN0YXRlLT53cmFwICE9IDAgJiYgc3RhdGUtPm1vZGUgIT0gRElDVCkKKyAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworCisgICAgLyogY2hlY2sgZm9yIGNvcnJlY3QgZGljdGlvbmFyeSBpZGVudGlmaWVyICovCisgICAgaWYgKHN0YXRlLT5tb2RlID09IERJQ1QpIHsKKyAgICAgICAgZGljdGlkID0gYWRsZXIzMigwTCwgWl9OVUxMLCAwKTsKKyAgICAgICAgZGljdGlkID0gYWRsZXIzMihkaWN0aWQsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgpOworICAgICAgICBpZiAoZGljdGlkICE9IHN0YXRlLT5jaGVjaykKKyAgICAgICAgICAgIHJldHVybiBaX0RBVEFfRVJST1I7CisgICAgfQorCisgICAgLyogY29weSBkaWN0aW9uYXJ5IHRvIHdpbmRvdyB1c2luZyB1cGRhdGV3aW5kb3coKSwgd2hpY2ggd2lsbCBhbWVuZCB0aGUKKyAgICAgICBleGlzdGluZyBkaWN0aW9uYXJ5IGlmIGFwcHJvcHJpYXRlICovCisgICAgcmV0ID0gdXBkYXRld2luZG93KHN0cm0sIGRpY3Rpb25hcnkgKyBkaWN0TGVuZ3RoLCBkaWN0TGVuZ3RoKTsKKyAgICBpZiAocmV0KSB7CisgICAgICAgIHN0YXRlLT5tb2RlID0gTUVNOworICAgICAgICByZXR1cm4gWl9NRU1fRVJST1I7CisgICAgfQorICAgIHN0YXRlLT5oYXZlZGljdCA9IDE7CisgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgIGRpY3Rpb25hcnkgc2V0XG4iKSk7CisgICAgcmV0dXJuIFpfT0s7Cit9CisKK2ludCBaRVhQT1JUIGluZmxhdGVHZXRIZWFkZXIoCisgICAgel9zdHJlYW1wIHN0cm0sCisgICAgZ3pfaGVhZGVycCBoZWFkKQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisKKyAgICAvKiBjaGVjayBzdGF0ZSAqLworICAgIGlmIChpbmZsYXRlU3RhdGVDaGVjayhzdHJtKSkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOworICAgIGlmICgoc3RhdGUtPndyYXAgJiAyKSA9PSAwKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisKKyAgICAvKiBzYXZlIGhlYWRlciBzdHJ1Y3R1cmUgKi8KKyAgICBzdGF0ZS0+aGVhZCA9IGhlYWQ7CisgICAgaGVhZC0+ZG9uZSA9IDA7CisgICAgcmV0dXJuIFpfT0s7Cit9CisKKy8qCisgICBTZWFyY2ggYnVmWzAuLmxlbi0xXSBmb3IgdGhlIHBhdHRlcm46IDAsIDAsIDB4ZmYsIDB4ZmYuICBSZXR1cm4gd2hlbiBmb3VuZAorICAgb3Igd2hlbiBvdXQgb2YgaW5wdXQuICBXaGVuIGNhbGxlZCwgKmhhdmUgaXMgdGhlIG51bWJlciBvZiBwYXR0ZXJuIGJ5dGVzCisgICBmb3VuZCBpbiBvcmRlciBzbyBmYXIsIGluIDAuLjMuICBPbiByZXR1cm4gKmhhdmUgaXMgdXBkYXRlZCB0byB0aGUgbmV3CisgICBzdGF0ZS4gIElmIG9uIHJldHVybiAqaGF2ZSBlcXVhbHMgZm91ciwgdGhlbiB0aGUgcGF0dGVybiB3YXMgZm91bmQgYW5kIHRoZQorICAgcmV0dXJuIHZhbHVlIGlzIGhvdyBtYW55IGJ5dGVzIHdlcmUgcmVhZCBpbmNsdWRpbmcgdGhlIGxhc3QgYnl0ZSBvZiB0aGUKKyAgIHBhdHRlcm4uICBJZiAqaGF2ZSBpcyBsZXNzIHRoYW4gZm91ciwgdGhlbiB0aGUgcGF0dGVybiBoYXMgbm90IGJlZW4gZm91bmQKKyAgIHlldCBhbmQgdGhlIHJldHVybiB2YWx1ZSBpcyBsZW4uICBJbiB0aGUgbGF0dGVyIGNhc2UsIHN5bmNzZWFyY2goKSBjYW4gYmUKKyAgIGNhbGxlZCBhZ2FpbiB3aXRoIG1vcmUgZGF0YSBhbmQgdGhlICpoYXZlIHN0YXRlLiAgKmhhdmUgaXMgaW5pdGlhbGl6ZWQgdG8KKyAgIHplcm8gZm9yIHRoZSBmaXJzdCBjYWxsLgorICovCitsb2NhbCB1bnNpZ25lZCBzeW5jc2VhcmNoKAorICAgIHVuc2lnbmVkIEZBUiAqaGF2ZSwKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqYnVmLAorICAgIHVuc2lnbmVkIGxlbikKK3sKKyAgICB1bnNpZ25lZCBnb3Q7CisgICAgdW5zaWduZWQgbmV4dDsKKworICAgIGdvdCA9ICpoYXZlOworICAgIG5leHQgPSAwOworICAgIHdoaWxlIChuZXh0IDwgbGVuICYmIGdvdCA8IDQpIHsKKyAgICAgICAgaWYgKChpbnQpKGJ1ZltuZXh0XSkgPT0gKGdvdCA8IDIgPyAwIDogMHhmZikpCisgICAgICAgICAgICBnb3QrKzsKKyAgICAgICAgZWxzZSBpZiAoYnVmW25leHRdKQorICAgICAgICAgICAgZ290ID0gMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ290ID0gNCAtIGdvdDsKKyAgICAgICAgbmV4dCsrOworICAgIH0KKyAgICAqaGF2ZSA9IGdvdDsKKyAgICByZXR1cm4gbmV4dDsKK30KKworaW50IFpFWFBPUlQgaW5mbGF0ZVN5bmMoCisgICAgel9zdHJlYW1wIHN0cm0pCit7CisgICAgdW5zaWduZWQgbGVuOyAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBieXRlcyB0byBsb29rIGF0IG9yIGxvb2tlZCBhdCAqLworICAgIGludCBmbGFnczsgICAgICAgICAgICAgICAgICAvKiB0ZW1wb3JhcnkgdG8gc2F2ZSBoZWFkZXIgc3RhdHVzICovCisgICAgdW5zaWduZWQgbG9uZyBpbiwgb3V0OyAgICAgIC8qIHRlbXBvcmFyeSB0byBzYXZlIHRvdGFsX2luIGFuZCB0b3RhbF9vdXQgKi8KKyAgICB1bnNpZ25lZCBjaGFyIGJ1Zls0XTsgICAgICAgLyogdG8gcmVzdG9yZSBiaXQgYnVmZmVyIHRvIGJ5dGUgc3RyaW5nICovCisgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKKworICAgIC8qIGNoZWNrIHBhcmFtZXRlcnMgKi8KKyAgICBpZiAoaW5mbGF0ZVN0YXRlQ2hlY2soc3RybSkpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKyAgICBpZiAoc3RybS0+YXZhaWxfaW4gPT0gMCAmJiBzdGF0ZS0+Yml0cyA8IDgpIHJldHVybiBaX0JVRl9FUlJPUjsKKworICAgIC8qIGlmIGZpcnN0IHRpbWUsIHN0YXJ0IHNlYXJjaCBpbiBiaXQgYnVmZmVyICovCisgICAgaWYgKHN0YXRlLT5tb2RlICE9IFNZTkMpIHsKKyAgICAgICAgc3RhdGUtPm1vZGUgPSBTWU5DOworICAgICAgICBzdGF0ZS0+aG9sZCA8PD0gc3RhdGUtPmJpdHMgJiA3OworICAgICAgICBzdGF0ZS0+Yml0cyAtPSBzdGF0ZS0+Yml0cyAmIDc7CisgICAgICAgIGxlbiA9IDA7CisgICAgICAgIHdoaWxlIChzdGF0ZS0+Yml0cyA+PSA4KSB7CisgICAgICAgICAgICBidWZbbGVuKytdID0gKHVuc2lnbmVkIGNoYXIpKHN0YXRlLT5ob2xkKTsKKyAgICAgICAgICAgIHN0YXRlLT5ob2xkID4+PSA4OworICAgICAgICAgICAgc3RhdGUtPmJpdHMgLT0gODsKKyAgICAgICAgfQorICAgICAgICBzdGF0ZS0+aGF2ZSA9IDA7CisgICAgICAgIHN5bmNzZWFyY2goJihzdGF0ZS0+aGF2ZSksIGJ1ZiwgbGVuKTsKKyAgICB9CisKKyAgICAvKiBzZWFyY2ggYXZhaWxhYmxlIGlucHV0ICovCisgICAgbGVuID0gc3luY3NlYXJjaCgmKHN0YXRlLT5oYXZlKSwgc3RybS0+bmV4dF9pbiwgc3RybS0+YXZhaWxfaW4pOworICAgIHN0cm0tPmF2YWlsX2luIC09IGxlbjsKKyAgICBzdHJtLT5uZXh0X2luICs9IGxlbjsKKyAgICBzdHJtLT50b3RhbF9pbiArPSBsZW47CisKKyAgICAvKiByZXR1cm4gbm8gam95IG9yIHNldCB1cCB0byByZXN0YXJ0IGluZmxhdGUoKSBvbiBhIG5ldyBibG9jayAqLworICAgIGlmIChzdGF0ZS0+aGF2ZSAhPSA0KSByZXR1cm4gWl9EQVRBX0VSUk9SOworICAgIGlmIChzdGF0ZS0+ZmxhZ3MgPT0gLTEpCisgICAgICAgIHN0YXRlLT53cmFwID0gMDsgICAgLyogaWYgbm8gaGVhZGVyIHlldCwgdHJlYXQgYXMgcmF3ICovCisgICAgZWxzZQorICAgICAgICBzdGF0ZS0+d3JhcCAmPSB+NDsgIC8qIG5vIHBvaW50IGluIGNvbXB1dGluZyBhIGNoZWNrIHZhbHVlIG5vdyAqLworICAgIGZsYWdzID0gc3RhdGUtPmZsYWdzOworICAgIGluID0gc3RybS0+dG90YWxfaW47ICBvdXQgPSBzdHJtLT50b3RhbF9vdXQ7CisgICAgaW5mbGF0ZVJlc2V0KHN0cm0pOworICAgIHN0cm0tPnRvdGFsX2luID0gaW47ICBzdHJtLT50b3RhbF9vdXQgPSBvdXQ7CisgICAgc3RhdGUtPmZsYWdzID0gZmxhZ3M7CisgICAgc3RhdGUtPm1vZGUgPSBUWVBFOworICAgIHJldHVybiBaX09LOworfQorCisvKgorICAgUmV0dXJucyB0cnVlIGlmIGluZmxhdGUgaXMgY3VycmVudGx5IGF0IHRoZSBlbmQgb2YgYSBibG9jayBnZW5lcmF0ZWQgYnkKKyAgIFpfU1lOQ19GTFVTSCBvciBaX0ZVTExfRkxVU0guIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBieSBvbmUgUFBQCisgICBpbXBsZW1lbnRhdGlvbiB0byBwcm92aWRlIGFuIGFkZGl0aW9uYWwgc2FmZXR5IGNoZWNrLiBQUFAgdXNlcworICAgWl9TWU5DX0ZMVVNIIGJ1dCByZW1vdmVzIHRoZSBsZW5ndGggYnl0ZXMgb2YgdGhlIHJlc3VsdGluZyBlbXB0eSBzdG9yZWQKKyAgIGJsb2NrLiBXaGVuIGRlY29tcHJlc3NpbmcsIFBQUCBjaGVja3MgdGhhdCBhdCB0aGUgZW5kIG9mIGlucHV0IHBhY2tldCwKKyAgIGluZmxhdGUgaXMgd2FpdGluZyBmb3IgdGhlc2UgbGVuZ3RoIGJ5dGVzLgorICovCitpbnQgWkVYUE9SVCBpbmZsYXRlU3luY1BvaW50KAorICAgIHpfc3RyZWFtcCBzdHJtKQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisKKyAgICBpZiAoaW5mbGF0ZVN0YXRlQ2hlY2soc3RybSkpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKyAgICByZXR1cm4gc3RhdGUtPm1vZGUgPT0gU1RPUkVEICYmIHN0YXRlLT5iaXRzID09IDA7Cit9CisKK2ludCBaRVhQT1JUIGluZmxhdGVDb3B5KAorICAgIHpfc3RyZWFtcCBkZXN0LAorICAgIHpfc3RyZWFtcCBzb3VyY2UpCit7CisgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKKyAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKmNvcHk7CisgICAgdW5zaWduZWQgY2hhciBGQVIgKndpbmRvdzsKKyAgICB1bnNpZ25lZCB3c2l6ZTsKKworICAgIC8qIGNoZWNrIGlucHV0ICovCisgICAgaWYgKGluZmxhdGVTdGF0ZUNoZWNrKHNvdXJjZSkgfHwgZGVzdCA9PSBaX05VTEwpCisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzb3VyY2UtPnN0YXRlOworCisgICAgLyogYWxsb2NhdGUgc3BhY2UgKi8KKyAgICBjb3B5ID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKQorICAgICAgICAgICBaQUxMT0Moc291cmNlLCAxLCBzaXplb2Yoc3RydWN0IGluZmxhdGVfc3RhdGUpKTsKKyAgICBpZiAoY29weSA9PSBaX05VTEwpIHJldHVybiBaX01FTV9FUlJPUjsKKyAgICB3aW5kb3cgPSBaX05VTEw7CisgICAgaWYgKHN0YXRlLT53aW5kb3cgIT0gWl9OVUxMKSB7CisgICAgICAgIHdpbmRvdyA9ICh1bnNpZ25lZCBjaGFyIEZBUiAqKQorICAgICAgICAgICAgICAgICBaQUxMT0Moc291cmNlLCAxVSA8PCBzdGF0ZS0+d2JpdHMsIHNpemVvZih1bnNpZ25lZCBjaGFyKSk7CisgICAgICAgIGlmICh3aW5kb3cgPT0gWl9OVUxMKSB7CisgICAgICAgICAgICBaRlJFRShzb3VyY2UsIGNvcHkpOworICAgICAgICAgICAgcmV0dXJuIFpfTUVNX0VSUk9SOworICAgICAgICB9CisgICAgfQorCisgICAgLyogY29weSBzdGF0ZSAqLworICAgIHptZW1jcHkoKHZvaWRwZilkZXN0LCAodm9pZHBmKXNvdXJjZSwgc2l6ZW9mKHpfc3RyZWFtKSk7CisgICAgem1lbWNweSgodm9pZHBmKWNvcHksICh2b2lkcGYpc3RhdGUsIHNpemVvZihzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSkpOworICAgIGNvcHktPnN0cm0gPSBkZXN0OworICAgIGlmIChzdGF0ZS0+bGVuY29kZSA+PSBzdGF0ZS0+Y29kZXMgJiYKKyAgICAgICAgc3RhdGUtPmxlbmNvZGUgPD0gc3RhdGUtPmNvZGVzICsgRU5PVUdIIC0gMSkgeworICAgICAgICBjb3B5LT5sZW5jb2RlID0gY29weS0+Y29kZXMgKyAoc3RhdGUtPmxlbmNvZGUgLSBzdGF0ZS0+Y29kZXMpOworICAgICAgICBjb3B5LT5kaXN0Y29kZSA9IGNvcHktPmNvZGVzICsgKHN0YXRlLT5kaXN0Y29kZSAtIHN0YXRlLT5jb2Rlcyk7CisgICAgfQorICAgIGNvcHktPm5leHQgPSBjb3B5LT5jb2RlcyArIChzdGF0ZS0+bmV4dCAtIHN0YXRlLT5jb2Rlcyk7CisgICAgaWYgKHdpbmRvdyAhPSBaX05VTEwpIHsKKyAgICAgICAgd3NpemUgPSAxVSA8PCBzdGF0ZS0+d2JpdHM7CisgICAgICAgIHptZW1jcHkod2luZG93LCBzdGF0ZS0+d2luZG93LCB3c2l6ZSk7CisgICAgfQorICAgIGNvcHktPndpbmRvdyA9IHdpbmRvdzsKKyAgICBkZXN0LT5zdGF0ZSA9IChzdHJ1Y3QgaW50ZXJuYWxfc3RhdGUgRkFSICopY29weTsKKyAgICByZXR1cm4gWl9PSzsKK30KKworaW50IFpFWFBPUlQgaW5mbGF0ZVVuZGVybWluZSgKKyAgICB6X3N0cmVhbXAgc3RybSwKKyAgICBpbnQgc3VidmVydCkKK3sKKyAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlOworCisgICAgaWYgKGluZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CisjaWZkZWYgSU5GTEFURV9BTExPV19JTlZBTElEX0RJU1RBTkNFX1RPT0ZBUl9BUlJSCisgICAgc3RhdGUtPnNhbmUgPSAhc3VidmVydDsKKyAgICByZXR1cm4gWl9PSzsKKyNlbHNlCisgICAgKHZvaWQpc3VidmVydDsKKyAgICBzdGF0ZS0+c2FuZSA9IDE7CisgICAgcmV0dXJuIFpfREFUQV9FUlJPUjsKICNlbmRpZgogfQogCitpbnQgWkVYUE9SVCBpbmZsYXRlVmFsaWRhdGUoCisgICAgel9zdHJlYW1wIHN0cm0sCisgICAgaW50IGNoZWNrKQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisKKyAgICBpZiAoaW5mbGF0ZVN0YXRlQ2hlY2soc3RybSkpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKyAgICBpZiAoY2hlY2sgJiYgc3RhdGUtPndyYXApCisgICAgICAgIHN0YXRlLT53cmFwIHw9IDQ7CisgICAgZWxzZQorICAgICAgICBzdGF0ZS0+d3JhcCAmPSB+NDsKKyAgICByZXR1cm4gWl9PSzsKK30KKworbG9uZyBaRVhQT1JUIGluZmxhdGVNYXJrKAorICAgIHpfc3RyZWFtcCBzdHJtKQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisKKyAgICBpZiAoaW5mbGF0ZVN0YXRlQ2hlY2soc3RybSkpCisgICAgICAgIHJldHVybiAtKDFMIDw8IDE2KTsKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKyAgICByZXR1cm4gKGxvbmcpKCgodW5zaWduZWQgbG9uZykoKGxvbmcpc3RhdGUtPmJhY2spKSA8PCAxNikgKworICAgICAgICAoc3RhdGUtPm1vZGUgPT0gQ09QWSA/IHN0YXRlLT5sZW5ndGggOgorICAgICAgICAgICAgKHN0YXRlLT5tb2RlID09IE1BVENIID8gc3RhdGUtPndhcyAtIHN0YXRlLT5sZW5ndGggOiAwKSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgWkVYUE9SVCBpbmZsYXRlQ29kZXNVc2VkKAorICAgIHpfc3RyZWFtcCBzdHJtKQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisgICAgaWYgKGluZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gKHVuc2lnbmVkIGxvbmcpLTE7CisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CisgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nKShzdGF0ZS0+bmV4dCAtIHN0YXRlLT5jb2Rlcyk7Cit9CisKKyNlbmRpZiAgLyogIVpfRlJFRVRZUEUgKi8KZGlmZiAtLWdpdCBhL3NyYy9nemlwL2luZmxhdGUuaCBiL3NyYy9nemlwL2luZmxhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmY1YTUyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2d6aXAvaW5mbGF0ZS5oCkBAIC0wLDAgKzEsMTMxIEBACisvKiBpbmZsYXRlLmggLS0gaW50ZXJuYWwgaW5mbGF0ZSBzdGF0ZSBkZWZpbml0aW9uCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxOSBNYXJrIEFkbGVyCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCisgKi8KKworI2lmbmRlZiBJTkZMQVRFX0gKKyNkZWZpbmUgSU5GTEFURV9ICisKKy8qIFdBUk5JTkc6IHRoaXMgZmlsZSBzaG91bGQgKm5vdCogYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMuIEl0IGlzCisgICBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY29tcHJlc3Npb24gbGlicmFyeSBhbmQgaXMKKyAgIHN1YmplY3QgdG8gY2hhbmdlLiBBcHBsaWNhdGlvbnMgc2hvdWxkIG9ubHkgdXNlIHpsaWIuaC4KKyAqLworCisvKiBkZWZpbmUgTk9fR1pJUCB3aGVuIGNvbXBpbGluZyBpZiB5b3Ugd2FudCB0byBkaXNhYmxlIGd6aXAgaGVhZGVyIGFuZAorICAgdHJhaWxlciBkZWNvZGluZyBieSBpbmZsYXRlKCkuICBOT19HWklQIHdvdWxkIGJlIHVzZWQgdG8gYXZvaWQgbGlua2luZyBpbgorICAgdGhlIGNyYyBjb2RlIHdoZW4gaXQgaXMgbm90IG5lZWRlZC4gIEZvciBzaGFyZWQgbGlicmFyaWVzLCBnemlwIGRlY29kaW5nCisgICBzaG91bGQgYmUgbGVmdCBlbmFibGVkLiAqLworI2lmbmRlZiBOT19HWklQCisjICBkZWZpbmUgR1VOWklQCisjZW5kaWYKKworLyogUG9zc2libGUgaW5mbGF0ZSBtb2RlcyBiZXR3ZWVuIGluZmxhdGUoKSBjYWxscyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBIRUFEID0gMTYxODAsICAgLyogaTogd2FpdGluZyBmb3IgbWFnaWMgaGVhZGVyICovCisgICAgRkxBR1MsICAgICAgLyogaTogd2FpdGluZyBmb3IgbWV0aG9kIGFuZCBmbGFncyAoZ3ppcCkgKi8KKyAgICBUSU1FLCAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBtb2RpZmljYXRpb24gdGltZSAoZ3ppcCkgKi8KKyAgICBPUywgICAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBleHRyYSBmbGFncyBhbmQgb3BlcmF0aW5nIHN5c3RlbSAoZ3ppcCkgKi8KKyAgICBFWExFTiwgICAgICAvKiBpOiB3YWl0aW5nIGZvciBleHRyYSBsZW5ndGggKGd6aXApICovCisgICAgRVhUUkEsICAgICAgLyogaTogd2FpdGluZyBmb3IgZXh0cmEgYnl0ZXMgKGd6aXApICovCisgICAgTkFNRSwgICAgICAgLyogaTogd2FpdGluZyBmb3IgZW5kIG9mIGZpbGUgbmFtZSAoZ3ppcCkgKi8KKyAgICBDT01NRU5ULCAgICAvKiBpOiB3YWl0aW5nIGZvciBlbmQgb2YgY29tbWVudCAoZ3ppcCkgKi8KKyAgICBIQ1JDLCAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBoZWFkZXIgY3JjIChnemlwKSAqLworICAgIERJQ1RJRCwgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGRpY3Rpb25hcnkgY2hlY2sgdmFsdWUgKi8KKyAgICBESUNULCAgICAgICAvKiB3YWl0aW5nIGZvciBpbmZsYXRlU2V0RGljdGlvbmFyeSgpIGNhbGwgKi8KKyAgICAgICAgVFlQRSwgICAgICAgLyogaTogd2FpdGluZyBmb3IgdHlwZSBiaXRzLCBpbmNsdWRpbmcgbGFzdC1mbGFnIGJpdCAqLworICAgICAgICBUWVBFRE8sICAgICAvKiBpOiBzYW1lLCBidXQgc2tpcCBjaGVjayB0byBleGl0IGluZmxhdGUgb24gbmV3IGJsb2NrICovCisgICAgICAgIFNUT1JFRCwgICAgIC8qIGk6IHdhaXRpbmcgZm9yIHN0b3JlZCBzaXplIChsZW5ndGggYW5kIGNvbXBsZW1lbnQpICovCisgICAgICAgIENPUFlfLCAgICAgIC8qIGkvbzogc2FtZSBhcyBDT1BZIGJlbG93LCBidXQgb25seSBmaXJzdCB0aW1lIGluICovCisgICAgICAgIENPUFksICAgICAgIC8qIGkvbzogd2FpdGluZyBmb3IgaW5wdXQgb3Igb3V0cHV0IHRvIGNvcHkgc3RvcmVkIGJsb2NrICovCisgICAgICAgIFRBQkxFLCAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGR5bmFtaWMgYmxvY2sgdGFibGUgbGVuZ3RocyAqLworICAgICAgICBMRU5MRU5TLCAgICAvKiBpOiB3YWl0aW5nIGZvciBjb2RlIGxlbmd0aCBjb2RlIGxlbmd0aHMgKi8KKyAgICAgICAgQ09ERUxFTlMsICAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoL2xpdCBhbmQgZGlzdGFuY2UgY29kZSBsZW5ndGhzICovCisgICAgICAgICAgICBMRU5fLCAgICAgICAvKiBpOiBzYW1lIGFzIExFTiBiZWxvdywgYnV0IG9ubHkgZmlyc3QgdGltZSBpbiAqLworICAgICAgICAgICAgTEVOLCAgICAgICAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoL2xpdC9lb2IgY29kZSAqLworICAgICAgICAgICAgTEVORVhULCAgICAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoIGV4dHJhIGJpdHMgKi8KKyAgICAgICAgICAgIERJU1QsICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGRpc3RhbmNlIGNvZGUgKi8KKyAgICAgICAgICAgIERJU1RFWFQsICAgIC8qIGk6IHdhaXRpbmcgZm9yIGRpc3RhbmNlIGV4dHJhIGJpdHMgKi8KKyAgICAgICAgICAgIE1BVENILCAgICAgIC8qIG86IHdhaXRpbmcgZm9yIG91dHB1dCBzcGFjZSB0byBjb3B5IHN0cmluZyAqLworICAgICAgICAgICAgTElULCAgICAgICAgLyogbzogd2FpdGluZyBmb3Igb3V0cHV0IHNwYWNlIHRvIHdyaXRlIGxpdGVyYWwgKi8KKyAgICBDSEVDSywgICAgICAvKiBpOiB3YWl0aW5nIGZvciAzMi1iaXQgY2hlY2sgdmFsdWUgKi8KKyAgICBMRU5HVEgsICAgICAvKiBpOiB3YWl0aW5nIGZvciAzMi1iaXQgbGVuZ3RoIChnemlwKSAqLworICAgIERPTkUsICAgICAgIC8qIGZpbmlzaGVkIGNoZWNrLCBkb25lIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovCisgICAgQkFELCAgICAgICAgLyogZ290IGEgZGF0YSBlcnJvciAtLSByZW1haW4gaGVyZSB1bnRpbCByZXNldCAqLworICAgIE1FTSwgICAgICAgIC8qIGdvdCBhbiBpbmZsYXRlKCkgbWVtb3J5IGVycm9yIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovCisgICAgU1lOQyAgICAgICAgLyogbG9va2luZyBmb3Igc3luY2hyb25pemF0aW9uIGJ5dGVzIHRvIHJlc3RhcnQgaW5mbGF0ZSgpICovCit9IGluZmxhdGVfbW9kZTsKKworLyoKKyAgICBTdGF0ZSB0cmFuc2l0aW9ucyBiZXR3ZWVuIGFib3ZlIG1vZGVzIC0KKworICAgIChtb3N0IG1vZGVzIGNhbiBnbyB0byBCQUQgb3IgTUVNIG9uIGVycm9yIC0tIG5vdCBzaG93biBmb3IgY2xhcml0eSkKKworICAgIFByb2Nlc3MgaGVhZGVyOgorICAgICAgICBIRUFEIC0+IChnemlwKSBvciAoemxpYikgb3IgKHJhdykKKyAgICAgICAgKGd6aXApIC0+IEZMQUdTIC0+IFRJTUUgLT4gT1MgLT4gRVhMRU4gLT4gRVhUUkEgLT4gTkFNRSAtPiBDT01NRU5UIC0+CisgICAgICAgICAgICAgICAgICBIQ1JDIC0+IFRZUEUKKyAgICAgICAgKHpsaWIpIC0+IERJQ1RJRCBvciBUWVBFCisgICAgICAgIERJQ1RJRCAtPiBESUNUIC0+IFRZUEUKKyAgICAgICAgKHJhdykgLT4gVFlQRURPCisgICAgUmVhZCBkZWZsYXRlIGJsb2NrczoKKyAgICAgICAgICAgIFRZUEUgLT4gVFlQRURPIC0+IFNUT1JFRCBvciBUQUJMRSBvciBMRU5fIG9yIENIRUNLCisgICAgICAgICAgICBTVE9SRUQgLT4gQ09QWV8gLT4gQ09QWSAtPiBUWVBFCisgICAgICAgICAgICBUQUJMRSAtPiBMRU5MRU5TIC0+IENPREVMRU5TIC0+IExFTl8KKyAgICAgICAgICAgIExFTl8gLT4gTEVOCisgICAgUmVhZCBkZWZsYXRlIGNvZGVzIGluIGZpeGVkIG9yIGR5bmFtaWMgYmxvY2s6CisgICAgICAgICAgICAgICAgTEVOIC0+IExFTkVYVCBvciBMSVQgb3IgVFlQRQorICAgICAgICAgICAgICAgIExFTkVYVCAtPiBESVNUIC0+IERJU1RFWFQgLT4gTUFUQ0ggLT4gTEVOCisgICAgICAgICAgICAgICAgTElUIC0+IExFTgorICAgIFByb2Nlc3MgdHJhaWxlcjoKKyAgICAgICAgQ0hFQ0sgLT4gTEVOR1RIIC0+IERPTkUKKyAqLworCisvKiBTdGF0ZSBtYWludGFpbmVkIGJldHdlZW4gaW5mbGF0ZSgpIGNhbGxzIC0tIGFwcHJveGltYXRlbHkgN0sgYnl0ZXMsIG5vdAorICAgaW5jbHVkaW5nIHRoZSBhbGxvY2F0ZWQgc2xpZGluZyB3aW5kb3csIHdoaWNoIGlzIHVwIHRvIDMySyBieXRlcy4gKi8KK3N0cnVjdCBpbmZsYXRlX3N0YXRlIHsKKyAgICB6X3N0cmVhbXAgc3RybTsgICAgICAgICAgICAgLyogcG9pbnRlciBiYWNrIHRvIHRoaXMgemxpYiBzdHJlYW0gKi8KKyAgICBpbmZsYXRlX21vZGUgbW9kZTsgICAgICAgICAgLyogY3VycmVudCBpbmZsYXRlIG1vZGUgKi8KKyAgICBpbnQgbGFzdDsgICAgICAgICAgICAgICAgICAgLyogdHJ1ZSBpZiBwcm9jZXNzaW5nIGxhc3QgYmxvY2sgKi8KKyAgICBpbnQgd3JhcDsgICAgICAgICAgICAgICAgICAgLyogYml0IDAgdHJ1ZSBmb3IgemxpYiwgYml0IDEgdHJ1ZSBmb3IgZ3ppcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0IDIgdHJ1ZSB0byB2YWxpZGF0ZSBjaGVjayB2YWx1ZSAqLworICAgIGludCBoYXZlZGljdDsgICAgICAgICAgICAgICAvKiB0cnVlIGlmIGRpY3Rpb25hcnkgcHJvdmlkZWQgKi8KKyAgICBpbnQgZmxhZ3M7ICAgICAgICAgICAgICAgICAgLyogZ3ppcCBoZWFkZXIgbWV0aG9kIGFuZCBmbGFncywgMCBpZiB6bGliLCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSBpZiByYXcgb3Igbm8gaGVhZGVyIHlldCAqLworICAgIHVuc2lnbmVkIGRtYXg7ICAgICAgICAgICAgICAvKiB6bGliIGhlYWRlciBtYXggZGlzdGFuY2UgKElORkxBVEVfU1RSSUNUKSAqLworICAgIHVuc2lnbmVkIGxvbmcgY2hlY2s7ICAgICAgICAvKiBwcm90ZWN0ZWQgY29weSBvZiBjaGVjayB2YWx1ZSAqLworICAgIHVuc2lnbmVkIGxvbmcgdG90YWw7ICAgICAgICAvKiBwcm90ZWN0ZWQgY29weSBvZiBvdXRwdXQgY291bnQgKi8KKyAgICBnel9oZWFkZXJwIGhlYWQ7ICAgICAgICAgICAgLyogd2hlcmUgdG8gc2F2ZSBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiAqLworICAgICAgICAvKiBzbGlkaW5nIHdpbmRvdyAqLworICAgIHVuc2lnbmVkIHdiaXRzOyAgICAgICAgICAgICAvKiBsb2cgYmFzZSAyIG9mIHJlcXVlc3RlZCB3aW5kb3cgc2l6ZSAqLworICAgIHVuc2lnbmVkIHdzaXplOyAgICAgICAgICAgICAvKiB3aW5kb3cgc2l6ZSBvciB6ZXJvIGlmIG5vdCB1c2luZyB3aW5kb3cgKi8KKyAgICB1bnNpZ25lZCB3aGF2ZTsgICAgICAgICAgICAgLyogdmFsaWQgYnl0ZXMgaW4gdGhlIHdpbmRvdyAqLworICAgIHVuc2lnbmVkIHduZXh0OyAgICAgICAgICAgICAvKiB3aW5kb3cgd3JpdGUgaW5kZXggKi8KKyAgICB1bnNpZ25lZCBjaGFyIEZBUiAqd2luZG93OyAgLyogYWxsb2NhdGVkIHNsaWRpbmcgd2luZG93LCBpZiBuZWVkZWQgKi8KKyAgICAgICAgLyogYml0IGFjY3VtdWxhdG9yICovCisgICAgdW5zaWduZWQgbG9uZyBob2xkOyAgICAgICAgIC8qIGlucHV0IGJpdCBhY2N1bXVsYXRvciAqLworICAgIHVuc2lnbmVkIGJpdHM7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgYml0cyBpbiAiaW4iICovCisgICAgICAgIC8qIGZvciBzdHJpbmcgYW5kIHN0b3JlZCBibG9jayBjb3B5aW5nICovCisgICAgdW5zaWduZWQgbGVuZ3RoOyAgICAgICAgICAgIC8qIGxpdGVyYWwgb3IgbGVuZ3RoIG9mIGRhdGEgdG8gY29weSAqLworICAgIHVuc2lnbmVkIG9mZnNldDsgICAgICAgICAgICAvKiBkaXN0YW5jZSBiYWNrIHRvIGNvcHkgc3RyaW5nIGZyb20gKi8KKyAgICAgICAgLyogZm9yIHRhYmxlIGFuZCBjb2RlIGRlY29kaW5nICovCisgICAgdW5zaWduZWQgZXh0cmE7ICAgICAgICAgICAgIC8qIGV4dHJhIGJpdHMgbmVlZGVkICovCisgICAgICAgIC8qIGZpeGVkIGFuZCBkeW5hbWljIGNvZGUgdGFibGVzICovCisgICAgY29kZSBjb25zdCBGQVIgKmxlbmNvZGU7ICAgIC8qIHN0YXJ0aW5nIHRhYmxlIGZvciBsZW5ndGgvbGl0ZXJhbCBjb2RlcyAqLworICAgIGNvZGUgY29uc3QgRkFSICpkaXN0Y29kZTsgICAvKiBzdGFydGluZyB0YWJsZSBmb3IgZGlzdGFuY2UgY29kZXMgKi8KKyAgICB1bnNpZ25lZCBsZW5iaXRzOyAgICAgICAgICAgLyogaW5kZXggYml0cyBmb3IgbGVuY29kZSAqLworICAgIHVuc2lnbmVkIGRpc3RiaXRzOyAgICAgICAgICAvKiBpbmRleCBiaXRzIGZvciBkaXN0Y29kZSAqLworICAgICAgICAvKiBkeW5hbWljIHRhYmxlIGJ1aWxkaW5nICovCisgICAgdW5zaWduZWQgbmNvZGU7ICAgICAgICAgICAgIC8qIG51bWJlciBvZiBjb2RlIGxlbmd0aCBjb2RlIGxlbmd0aHMgKi8KKyAgICB1bnNpZ25lZCBubGVuOyAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGxlbmd0aCBjb2RlIGxlbmd0aHMgKi8KKyAgICB1bnNpZ25lZCBuZGlzdDsgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGRpc3RhbmNlIGNvZGUgbGVuZ3RocyAqLworICAgIHVuc2lnbmVkIGhhdmU7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgY29kZSBsZW5ndGhzIGluIGxlbnNbXSAqLworICAgIGNvZGUgRkFSICpuZXh0OyAgICAgICAgICAgICAvKiBuZXh0IGF2YWlsYWJsZSBzcGFjZSBpbiBjb2Rlc1tdICovCisgICAgdW5zaWduZWQgc2hvcnQgbGVuc1szMjBdOyAgIC8qIHRlbXBvcmFyeSBzdG9yYWdlIGZvciBjb2RlIGxlbmd0aHMgKi8KKyAgICB1bnNpZ25lZCBzaG9ydCB3b3JrWzI4OF07ICAgLyogd29yayBhcmVhIGZvciBjb2RlIHRhYmxlIGJ1aWxkaW5nICovCisgICAgY29kZSBjb2Rlc1tFTk9VR0hdOyAgICAgICAgIC8qIHNwYWNlIGZvciBjb2RlIHRhYmxlcyAqLworICAgIGludCBzYW5lOyAgICAgICAgICAgICAgICAgICAvKiBpZiBmYWxzZSwgYWxsb3cgaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyICovCisgICAgaW50IGJhY2s7ICAgICAgICAgICAgICAgICAgIC8qIGJpdHMgYmFjayBvZiBsYXN0IHVucHJvY2Vzc2VkIGxlbmd0aC9saXQgKi8KKyAgICB1bnNpZ25lZCB3YXM7ICAgICAgICAgICAgICAgLyogaW5pdGlhbCBsZW5ndGggb2YgbWF0Y2ggKi8KK307CisKKyNlbmRpZiAgLyogSU5GTEFURV9IICovCmRpZmYgLS1naXQgYS9zcmMvZ3ppcC9pbmZ0cmVlcy5jIGIvc3JjL2d6aXAvaW5mdHJlZXMuYwppbmRleCA1NmY1MmIxLi5kZDQ5NjVlIDEwMDY0NAotLS0gYS9zcmMvZ3ppcC9pbmZ0cmVlcy5jCisrKyBiL3NyYy9nemlwL2luZnRyZWVzLmMKQEAgLTEsMjAgKzEsMTUgQEAKIC8qIGluZnRyZWVzLmMgLS0gZ2VuZXJhdGUgSHVmZm1hbiB0cmVlcyBmb3IgZWZmaWNpZW50IGRlY29kaW5nCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMiBNYXJrIEFkbGVyCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAyMiBNYXJrIEFkbGVyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAgKi8KIAogI2luY2x1ZGUgInp1dGlsLmgiCiAjaW5jbHVkZSAiaW5mdHJlZXMuaCIKIAotI2lmICFkZWZpbmVkKEJVSUxERklYRUQpICYmICFkZWZpbmVkKFNUREMpCi0jICBkZWZpbmUgQlVJTERGSVhFRCAgIC8qIG5vbiBBTlNJIGNvbXBpbGVycyBtYXkgbm90IGFjY2VwdCBpbmZmaXhlZC5oICovCi0jZW5kaWYKKyNkZWZpbmUgTUFYQklUUyAxNQogCi0KLSNpZiAwCi1sb2NhbCBjb25zdCBjaGFyIGluZmxhdGVfY29weXJpZ2h0W10gPQotICAgIiBpbmZsYXRlIDEuMS40IENvcHlyaWdodCAxOTk1LTIwMDIgTWFyayBBZGxlciAiOwotI2VuZGlmCitzdGF0aWMgY29uc3QgY2hhciBpbmZsYXRlX2NvcHlyaWdodFtdID0KKyAgICIgaW5mbGF0ZSAxLjIuMTMgQ29weXJpZ2h0IDE5OTUtMjAyMiBNYXJrIEFkbGVyICI7CiAvKgogICBJZiB5b3UgdXNlIHRoZSB6bGliIGxpYnJhcnkgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpcyB3ZWxjb21lCiAgIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHlvdXIgcHJvZHVjdC4gSWYgZm9yIHNvbWUgcmVhc29uIHlvdSBjYW5ub3QKQEAgLTIyLDQ0NyArMTcsMjg4IEBACiAgIGNvcHlyaWdodCBzdHJpbmcgaW4gdGhlIGV4ZWN1dGFibGUgb2YgeW91ciBwcm9kdWN0LgogICovCiAKLS8qIHNpbXBsaWZ5IHRoZSB1c2Ugb2YgdGhlIGluZmxhdGVfaHVmdCB0eXBlIHdpdGggc29tZSBkZWZpbmVzICovCi0jZGVmaW5lIGV4b3Agd29yZC53aGF0LkV4b3AKLSNkZWZpbmUgYml0cyB3b3JkLndoYXQuQml0cwotCi0KLWxvY2FsIGludCBodWZ0X2J1aWxkIE9GKCgKLSAgICB1SW50ZiAqLCAgICAgICAgICAgIC8qIGNvZGUgbGVuZ3RocyBpbiBiaXRzICovCi0gICAgdUludCwgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgY29kZXMgKi8KLSAgICB1SW50LCAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiAic2ltcGxlIiBjb2RlcyAqLwotICAgIGNvbnN0IHVJbnRmICosICAgICAgLyogbGlzdCBvZiBiYXNlIHZhbHVlcyBmb3Igbm9uLXNpbXBsZSBjb2RlcyAqLwotICAgIGNvbnN0IHVJbnRmICosICAgICAgLyogbGlzdCBvZiBleHRyYSBiaXRzIGZvciBub24tc2ltcGxlIGNvZGVzICovCi0gICAgaW5mbGF0ZV9odWZ0ICogRkFSKiwvKiByZXN1bHQ6IHN0YXJ0aW5nIHRhYmxlICovCi0gICAgdUludGYgKiwgICAgICAgICAgICAvKiBtYXhpbXVtIGxvb2t1cCBiaXRzIChyZXR1cm5zIGFjdHVhbCkgKi8KLSAgICBpbmZsYXRlX2h1ZnQgKiwgICAgIC8qIHNwYWNlIGZvciB0cmVlcyAqLwotICAgIHVJbnQgKiwgICAgICAgICAgICAgLyogaHVmdHMgdXNlZCBpbiBzcGFjZSAqLwotICAgIHVJbnRmICogKSk7ICAgICAgICAgLyogc3BhY2UgZm9yIHZhbHVlcyAqLwotCi0vKiBUYWJsZXMgZm9yIGRlZmxhdGUgZnJvbSBQS1pJUCdzIGFwcG5vdGUudHh0LiAqLwotbG9jYWwgY29uc3QgdUludCBjcGxlbnNbMzFdID0geyAvKiBDb3B5IGxlbmd0aHMgZm9yIGxpdGVyYWwgY29kZXMgMjU3Li4yODUgKi8KKy8qCisgICBCdWlsZCBhIHNldCBvZiB0YWJsZXMgdG8gZGVjb2RlIHRoZSBwcm92aWRlZCBjYW5vbmljYWwgSHVmZm1hbiBjb2RlLgorICAgVGhlIGNvZGUgbGVuZ3RocyBhcmUgbGVuc1swLi5jb2Rlcy0xXS4gIFRoZSByZXN1bHQgc3RhcnRzIGF0ICp0YWJsZSwKKyAgIHdob3NlIGluZGljZXMgYXJlIDAuLjJeYml0cy0xLiAgd29yayBpcyBhIHdyaXRhYmxlIGFycmF5IG9mIGF0IGxlYXN0CisgICBsZW5zIHNob3J0cywgd2hpY2ggaXMgdXNlZCBhcyBhIHdvcmsgYXJlYS4gIHR5cGUgaXMgdGhlIHR5cGUgb2YgY29kZQorICAgdG8gYmUgZ2VuZXJhdGVkLCBDT0RFUywgTEVOUywgb3IgRElTVFMuICBPbiByZXR1cm4sIHplcm8gaXMgc3VjY2VzcywKKyAgIC0xIGlzIGFuIGludmFsaWQgY29kZSwgYW5kICsxIG1lYW5zIHRoYXQgRU5PVUdIIGlzbid0IGVub3VnaC4gIHRhYmxlCisgICBvbiByZXR1cm4gcG9pbnRzIHRvIHRoZSBuZXh0IGF2YWlsYWJsZSBlbnRyeSdzIGFkZHJlc3MuICBiaXRzIGlzIHRoZQorICAgcmVxdWVzdGVkIHJvb3QgdGFibGUgaW5kZXggYml0cywgYW5kIG9uIHJldHVybiBpdCBpcyB0aGUgYWN0dWFsIHJvb3QKKyAgIHRhYmxlIGluZGV4IGJpdHMuICBJdCB3aWxsIGRpZmZlciBpZiB0aGUgcmVxdWVzdCBpcyBncmVhdGVyIHRoYW4gdGhlCisgICBsb25nZXN0IGNvZGUgb3IgaWYgaXQgaXMgbGVzcyB0aGFuIHRoZSBzaG9ydGVzdCBjb2RlLgorICovCitpbnQgWkxJQl9JTlRFUk5BTCBpbmZsYXRlX3RhYmxlKAorICAgIGNvZGV0eXBlIHR5cGUsCisgICAgdW5zaWduZWQgc2hvcnQgRkFSICpsZW5zLAorICAgIHVuc2lnbmVkIGNvZGVzLAorICAgIGNvZGUgRkFSICogRkFSICp0YWJsZSwKKyAgICB1bnNpZ25lZCBGQVIgKmJpdHMsCisgICAgdW5zaWduZWQgc2hvcnQgRkFSICp3b3JrKQoreworICAgIHVuc2lnbmVkIGxlbjsgICAgICAgICAgICAgICAvKiBhIGNvZGUncyBsZW5ndGggaW4gYml0cyAqLworICAgIHVuc2lnbmVkIHN5bTsgICAgICAgICAgICAgICAvKiBpbmRleCBvZiBjb2RlIHN5bWJvbHMgKi8KKyAgICB1bnNpZ25lZCBtaW4sIG1heDsgICAgICAgICAgLyogbWluaW11bSBhbmQgbWF4aW11bSBjb2RlIGxlbmd0aHMgKi8KKyAgICB1bnNpZ25lZCByb290OyAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGluZGV4IGJpdHMgZm9yIHJvb3QgdGFibGUgKi8KKyAgICB1bnNpZ25lZCBjdXJyOyAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGluZGV4IGJpdHMgZm9yIGN1cnJlbnQgdGFibGUgKi8KKyAgICB1bnNpZ25lZCBkcm9wOyAgICAgICAgICAgICAgLyogY29kZSBiaXRzIHRvIGRyb3AgZm9yIHN1Yi10YWJsZSAqLworICAgIGludCBsZWZ0OyAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgcHJlZml4IGNvZGVzIGF2YWlsYWJsZSAqLworICAgIHVuc2lnbmVkIHVzZWQ7ICAgICAgICAgICAgICAvKiBjb2RlIGVudHJpZXMgaW4gdGFibGUgdXNlZCAqLworICAgIHVuc2lnbmVkIGh1ZmY7ICAgICAgICAgICAgICAvKiBIdWZmbWFuIGNvZGUgKi8KKyAgICB1bnNpZ25lZCBpbmNyOyAgICAgICAgICAgICAgLyogZm9yIGluY3JlbWVudGluZyBjb2RlLCBpbmRleCAqLworICAgIHVuc2lnbmVkIGZpbGw7ICAgICAgICAgICAgICAvKiBpbmRleCBmb3IgcmVwbGljYXRpbmcgZW50cmllcyAqLworICAgIHVuc2lnbmVkIGxvdzsgICAgICAgICAgICAgICAvKiBsb3cgYml0cyBmb3IgY3VycmVudCByb290IGVudHJ5ICovCisgICAgdW5zaWduZWQgbWFzazsgICAgICAgICAgICAgIC8qIG1hc2sgZm9yIGxvdyByb290IGJpdHMgKi8KKyAgICBjb2RlIGhlcmU7ICAgICAgICAgICAgICAgICAgLyogdGFibGUgZW50cnkgZm9yIGR1cGxpY2F0aW9uICovCisgICAgY29kZSBGQVIgKm5leHQ7ICAgICAgICAgICAgIC8qIG5leHQgYXZhaWxhYmxlIHNwYWNlIGluIHRhYmxlICovCisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRkFSICpiYXNlOyAgICAgLyogYmFzZSB2YWx1ZSB0YWJsZSB0byB1c2UgKi8KKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBGQVIgKmV4dHJhOyAgICAvKiBleHRyYSBiaXRzIHRhYmxlIHRvIHVzZSAqLworICAgIHVuc2lnbmVkIG1hdGNoOyAgICAgICAgICAgICAvKiB1c2UgYmFzZSBhbmQgZXh0cmEgZm9yIHN5bWJvbCA+PSBtYXRjaCAqLworICAgIHVuc2lnbmVkIHNob3J0IGNvdW50W01BWEJJVFMrMV07ICAgIC8qIG51bWJlciBvZiBjb2RlcyBvZiBlYWNoIGxlbmd0aCAqLworICAgIHVuc2lnbmVkIHNob3J0IG9mZnNbTUFYQklUUysxXTsgICAgIC8qIG9mZnNldHMgaW4gdGFibGUgZm9yIGVhY2ggbGVuZ3RoICovCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGxiYXNlWzMxXSA9IHsgLyogTGVuZ3RoIGNvZGVzIDI1Ny4uMjg1IGJhc2UgKi8KICAgICAgICAgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMywgMTUsIDE3LCAxOSwgMjMsIDI3LCAzMSwKICAgICAgICAgMzUsIDQzLCA1MSwgNTksIDY3LCA4MywgOTksIDExNSwgMTMxLCAxNjMsIDE5NSwgMjI3LCAyNTgsIDAsIDB9OwotICAgICAgICAvKiBzZWUgbm90ZSAjMTMgYWJvdmUgYWJvdXQgMjU4ICovCi1sb2NhbCBjb25zdCB1SW50IGNwbGV4dFszMV0gPSB7IC8qIEV4dHJhIGJpdHMgZm9yIGxpdGVyYWwgY29kZXMgMjU3Li4yODUgKi8KLSAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMiwgMiwgMiwgMiwKLSAgICAgICAgMywgMywgMywgMywgNCwgNCwgNCwgNCwgNSwgNSwgNSwgNSwgMCwgMTEyLCAxMTJ9OyAvKiAxMTI9PWludmFsaWQgKi8KLWxvY2FsIGNvbnN0IHVJbnQgY3BkaXN0WzMwXSA9IHsgLyogQ29weSBvZmZzZXRzIGZvciBkaXN0YW5jZSBjb2RlcyAwLi4yOSAqLworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBsZXh0WzMxXSA9IHsgLyogTGVuZ3RoIGNvZGVzIDI1Ny4uMjg1IGV4dHJhICovCisgICAgICAgIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTcsIDE3LCAxNywgMTcsIDE4LCAxOCwgMTgsIDE4LAorICAgICAgICAxOSwgMTksIDE5LCAxOSwgMjAsIDIwLCAyMCwgMjAsIDIxLCAyMSwgMjEsIDIxLCAxNiwgMTk0LCA2NX07CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGRiYXNlWzMyXSA9IHsgLyogRGlzdGFuY2UgY29kZXMgMC4uMjkgYmFzZSAqLwogICAgICAgICAxLCAyLCAzLCA0LCA1LCA3LCA5LCAxMywgMTcsIDI1LCAzMywgNDksIDY1LCA5NywgMTI5LCAxOTMsCiAgICAgICAgIDI1NywgMzg1LCA1MTMsIDc2OSwgMTAyNSwgMTUzNywgMjA0OSwgMzA3MywgNDA5NywgNjE0NSwKLSAgICAgICAgODE5MywgMTIyODksIDE2Mzg1LCAyNDU3N307Ci1sb2NhbCBjb25zdCB1SW50IGNwZGV4dFszMF0gPSB7IC8qIEV4dHJhIGJpdHMgZm9yIGRpc3RhbmNlIGNvZGVzICovCi0gICAgICAgIDAsIDAsIDAsIDAsIDEsIDEsIDIsIDIsIDMsIDMsIDQsIDQsIDUsIDUsIDYsIDYsCi0gICAgICAgIDcsIDcsIDgsIDgsIDksIDksIDEwLCAxMCwgMTEsIDExLAotICAgICAgICAxMiwgMTIsIDEzLCAxM307CisgICAgICAgIDgxOTMsIDEyMjg5LCAxNjM4NSwgMjQ1NzcsIDAsIDB9OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBkZXh0WzMyXSA9IHsgLyogRGlzdGFuY2UgY29kZXMgMC4uMjkgZXh0cmEgKi8KKyAgICAgICAgMTYsIDE2LCAxNiwgMTYsIDE3LCAxNywgMTgsIDE4LCAxOSwgMTksIDIwLCAyMCwgMjEsIDIxLCAyMiwgMjIsCisgICAgICAgIDIzLCAyMywgMjQsIDI0LCAyNSwgMjUsIDI2LCAyNiwgMjcsIDI3LAorICAgICAgICAyOCwgMjgsIDI5LCAyOSwgNjQsIDY0fTsKIAotLyoKLSAgIEh1ZmZtYW4gY29kZSBkZWNvZGluZyBpcyBwZXJmb3JtZWQgdXNpbmcgYSBtdWx0aS1sZXZlbCB0YWJsZSBsb29rdXAuCi0gICBUaGUgZmFzdGVzdCB3YXkgdG8gZGVjb2RlIGlzIHRvIHNpbXBseSBidWlsZCBhIGxvb2t1cCB0YWJsZSB3aG9zZQotICAgc2l6ZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsb25nZXN0IGNvZGUuICBIb3dldmVyLCB0aGUgdGltZSBpdCB0YWtlcwotICAgdG8gYnVpbGQgdGhpcyB0YWJsZSBjYW4gYWxzbyBiZSBhIGZhY3RvciBpZiB0aGUgZGF0YSBiZWluZyBkZWNvZGVkCi0gICBpcyBub3QgdmVyeSBsb25nLiAgVGhlIG1vc3QgY29tbW9uIGNvZGVzIGFyZSBuZWNlc3NhcmlseSB0aGUKLSAgIHNob3J0ZXN0IGNvZGVzLCBzbyB0aG9zZSBjb2RlcyBkb21pbmF0ZSB0aGUgZGVjb2RpbmcgdGltZSwgYW5kIGhlbmNlCi0gICB0aGUgc3BlZWQuICBUaGUgaWRlYSBpcyB5b3UgY2FuIGhhdmUgYSBzaG9ydGVyIHRhYmxlIHRoYXQgZGVjb2RlcyB0aGUKLSAgIHNob3J0ZXIsIG1vcmUgcHJvYmFibGUgY29kZXMsIGFuZCB0aGVuIHBvaW50IHRvIHN1YnNpZGlhcnkgdGFibGVzIGZvcgotICAgdGhlIGxvbmdlciBjb2Rlcy4gIFRoZSB0aW1lIGl0IGNvc3RzIHRvIGRlY29kZSB0aGUgbG9uZ2VyIGNvZGVzIGlzCi0gICB0aGVuIHRyYWRlZCBhZ2FpbnN0IHRoZSB0aW1lIGl0IHRha2VzIHRvIG1ha2UgbG9uZ2VyIHRhYmxlcy4KKyAgICAvKgorICAgICAgIFByb2Nlc3MgYSBzZXQgb2YgY29kZSBsZW5ndGhzIHRvIGNyZWF0ZSBhIGNhbm9uaWNhbCBIdWZmbWFuIGNvZGUuICBUaGUKKyAgICAgICBjb2RlIGxlbmd0aHMgYXJlIGxlbnNbMC4uY29kZXMtMV0uICBFYWNoIGxlbmd0aCBjb3JyZXNwb25kcyB0byB0aGUKKyAgICAgICBzeW1ib2xzIDAuLmNvZGVzLTEuICBUaGUgSHVmZm1hbiBjb2RlIGlzIGdlbmVyYXRlZCBieSBmaXJzdCBzb3J0aW5nIHRoZQorICAgICAgIHN5bWJvbHMgYnkgbGVuZ3RoIGZyb20gc2hvcnQgdG8gbG9uZywgYW5kIHJldGFpbmluZyB0aGUgc3ltYm9sIG9yZGVyCisgICAgICAgZm9yIGNvZGVzIHdpdGggZXF1YWwgbGVuZ3Rocy4gIFRoZW4gdGhlIGNvZGUgc3RhcnRzIHdpdGggYWxsIHplcm8gYml0cworICAgICAgIGZvciB0aGUgZmlyc3QgY29kZSBvZiB0aGUgc2hvcnRlc3QgbGVuZ3RoLCBhbmQgdGhlIGNvZGVzIGFyZSBpbnRlZ2VyCisgICAgICAgaW5jcmVtZW50cyBmb3IgdGhlIHNhbWUgbGVuZ3RoLCBhbmQgemVyb3MgYXJlIGFwcGVuZGVkIGFzIHRoZSBsZW5ndGgKKyAgICAgICBpbmNyZWFzZXMuICBGb3IgdGhlIGRlZmxhdGUgZm9ybWF0LCB0aGVzZSBiaXRzIGFyZSBzdG9yZWQgYmFja3dhcmRzCisgICAgICAgZnJvbSB0aGVpciBtb3JlIG5hdHVyYWwgaW50ZWdlciBpbmNyZW1lbnQgb3JkZXJpbmcsIGFuZCBzbyB3aGVuIHRoZQorICAgICAgIGRlY29kaW5nIHRhYmxlcyBhcmUgYnVpbHQgaW4gdGhlIGxhcmdlIGxvb3AgYmVsb3csIHRoZSBpbnRlZ2VyIGNvZGVzCisgICAgICAgYXJlIGluY3JlbWVudGVkIGJhY2t3YXJkcy4KIAotICAgVGhpcyByZXN1bHRzIG9mIHRoaXMgdHJhZGUgYXJlIGluIHRoZSB2YXJpYWJsZXMgbGJpdHMgYW5kIGRiaXRzCi0gICBiZWxvdy4gIGxiaXRzIGlzIHRoZSBudW1iZXIgb2YgYml0cyB0aGUgZmlyc3QgbGV2ZWwgdGFibGUgZm9yIGxpdGVyYWwvCi0gICBsZW5ndGggY29kZXMgY2FuIGRlY29kZSBpbiBvbmUgc3RlcCwgYW5kIGRiaXRzIGlzIHRoZSBzYW1lIHRoaW5nIGZvcgotICAgdGhlIGRpc3RhbmNlIGNvZGVzLiAgU3Vic2VxdWVudCB0YWJsZXMgYXJlIGFsc28gbGVzcyB0aGFuIG9yIGVxdWFsIHRvCi0gICB0aG9zZSBzaXplcy4gIFRoZXNlIHZhbHVlcyBtYXkgYmUgYWRqdXN0ZWQgZWl0aGVyIHdoZW4gYWxsIG9mIHRoZQotICAgY29kZXMgYXJlIHNob3J0ZXIgdGhhbiB0aGF0LCBpbiB3aGljaCBjYXNlIHRoZSBsb25nZXN0IGNvZGUgbGVuZ3RoIGluCi0gICBiaXRzIGlzIHVzZWQsIG9yIHdoZW4gdGhlIHNob3J0ZXN0IGNvZGUgaXMgKmxvbmdlciogdGhhbiB0aGUgcmVxdWVzdGVkCi0gICB0YWJsZSBzaXplLCBpbiB3aGljaCBjYXNlIHRoZSBsZW5ndGggb2YgdGhlIHNob3J0ZXN0IGNvZGUgaW4gYml0cyBpcwotICAgdXNlZC4KKyAgICAgICBUaGlzIHJvdXRpbmUgYXNzdW1lcywgYnV0IGRvZXMgbm90IGNoZWNrLCB0aGF0IGFsbCBvZiB0aGUgZW50cmllcyBpbgorICAgICAgIGxlbnNbXSBhcmUgaW4gdGhlIHJhbmdlIDAuLk1BWEJJVFMuICBUaGUgY2FsbGVyIG11c3QgYXNzdXJlIHRoaXMuCisgICAgICAgMS4uTUFYQklUUyBpcyBpbnRlcnByZXRlZCBhcyB0aGF0IGNvZGUgbGVuZ3RoLiAgemVybyBtZWFucyB0aGF0IHRoYXQKKyAgICAgICBzeW1ib2wgZG9lcyBub3Qgb2NjdXIgaW4gdGhpcyBjb2RlLgogCi0gICBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudCB2YWx1ZXMgZm9yIHRoZSB0d28gdGFibGVzLCBzaW5jZSB0aGV5IGNvZGUgYQotICAgZGlmZmVyZW50IG51bWJlciBvZiBwb3NzaWJpbGl0aWVzIGVhY2guICBUaGUgbGl0ZXJhbC9sZW5ndGggdGFibGUKLSAgIGNvZGVzIDI4NiBwb3NzaWJsZSB2YWx1ZXMsIG9yIGluIGEgZmxhdCBjb2RlLCBhIGxpdHRsZSBvdmVyIGVpZ2h0Ci0gICBiaXRzLiAgVGhlIGRpc3RhbmNlIHRhYmxlIGNvZGVzIDMwIHBvc3NpYmxlIHZhbHVlcywgb3IgYSBsaXR0bGUgbGVzcwotICAgdGhhbiBmaXZlIGJpdHMsIGZsYXQuICBUaGUgb3B0aW11bSB2YWx1ZXMgZm9yIHNwZWVkIGVuZCB1cCBiZWluZwotICAgYWJvdXQgb25lIGJpdCBtb3JlIHRoYW4gdGhvc2UsIHNvIGxiaXRzIGlzIDgrMSBhbmQgZGJpdHMgaXMgNSsxLgotICAgVGhlIG9wdGltdW0gdmFsdWVzIG1heSBkaWZmZXIgdGhvdWdoIGZyb20gbWFjaGluZSB0byBtYWNoaW5lLCBhbmQKLSAgIHBvc3NpYmx5IGV2ZW4gYmV0d2VlbiBjb21waWxlcnMuICBZb3VyIG1pbGVhZ2UgbWF5IHZhcnkuCi0gKi8KKyAgICAgICBUaGUgY29kZXMgYXJlIHNvcnRlZCBieSBjb21wdXRpbmcgYSBjb3VudCBvZiBjb2RlcyBmb3IgZWFjaCBsZW5ndGgsCisgICAgICAgY3JlYXRpbmcgZnJvbSB0aGF0IGEgdGFibGUgb2Ygc3RhcnRpbmcgaW5kaWNlcyBmb3IgZWFjaCBsZW5ndGggaW4gdGhlCisgICAgICAgc29ydGVkIHRhYmxlLCBhbmQgdGhlbiBlbnRlcmluZyB0aGUgc3ltYm9scyBpbiBvcmRlciBpbiB0aGUgc29ydGVkCisgICAgICAgdGFibGUuICBUaGUgc29ydGVkIHRhYmxlIGlzIHdvcmtbXSwgd2l0aCB0aGF0IHNwYWNlIGJlaW5nIHByb3ZpZGVkIGJ5CisgICAgICAgdGhlIGNhbGxlci4KIAorICAgICAgIFRoZSBsZW5ndGggY291bnRzIGFyZSB1c2VkIGZvciBvdGhlciBwdXJwb3NlcyBhcyB3ZWxsLCBpLmUuIGZpbmRpbmcKKyAgICAgICB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBsZW5ndGggY29kZXMsIGRldGVybWluaW5nIGlmIHRoZXJlIGFyZSBhbnkKKyAgICAgICBjb2RlcyBhdCBhbGwsIGNoZWNraW5nIGZvciBhIHZhbGlkIHNldCBvZiBsZW5ndGhzLCBhbmQgbG9va2luZyBhaGVhZAorICAgICAgIGF0IGxlbmd0aCBjb3VudHMgdG8gZGV0ZXJtaW5lIHN1Yi10YWJsZSBzaXplcyB3aGVuIGJ1aWxkaW5nIHRoZQorICAgICAgIGRlY29kaW5nIHRhYmxlcy4KKyAgICAgKi8KIAotLyogSWYgQk1BWCBuZWVkcyB0byBiZSBsYXJnZXIgdGhhbiAxNiwgdGhlbiBoIGFuZCB4W10gc2hvdWxkIGJlIHVMb25nLiAqLwotI2RlZmluZSBCTUFYIDE1ICAgICAgICAgLyogbWF4aW11bSBiaXQgbGVuZ3RoIG9mIGFueSBjb2RlICovCisgICAgLyogYWNjdW11bGF0ZSBsZW5ndGhzIGZvciBjb2RlcyAoYXNzdW1lcyBsZW5zW10gYWxsIGluIDAuLk1BWEJJVFMpICovCisgICAgZm9yIChsZW4gPSAwOyBsZW4gPD0gTUFYQklUUzsgbGVuKyspCisgICAgICAgIGNvdW50W2xlbl0gPSAwOworICAgIGZvciAoc3ltID0gMDsgc3ltIDwgY29kZXM7IHN5bSsrKQorICAgICAgICBjb3VudFtsZW5zW3N5bV1dKys7CiAKLWxvY2FsIGludCBodWZ0X2J1aWxkKCAvKiBiLCBuLCBzLCBkLCBlLCB0LCBtLCBocCwgaG4sIHYpICovCi11SW50ZiAqYiwgICAgICAgICAgICAgICAvKiBjb2RlIGxlbmd0aHMgaW4gYml0cyAoYWxsIGFzc3VtZWQgPD0gQk1BWCkgKi8KLXVJbnQgbiwgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBjb2RlcyAoYXNzdW1lZCA8PSAyODgpICovCi11SW50IHMsICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2Ygc2ltcGxlLXZhbHVlZCBjb2RlcyAoMC4ucy0xKSAqLwotY29uc3QgdUludGYgKmQsICAgICAgICAgLyogbGlzdCBvZiBiYXNlIHZhbHVlcyBmb3Igbm9uLXNpbXBsZSBjb2RlcyAqLwotY29uc3QgdUludGYgKmUsICAgICAgICAgLyogbGlzdCBvZiBleHRyYSBiaXRzIGZvciBub24tc2ltcGxlIGNvZGVzICovCi1pbmZsYXRlX2h1ZnQgKiBGQVIgKnQsICAvKiByZXN1bHQ6IHN0YXJ0aW5nIHRhYmxlICovCi11SW50ZiAqbSwgICAgICAgICAgICAgICAvKiBtYXhpbXVtIGxvb2t1cCBiaXRzLCByZXR1cm5zIGFjdHVhbCAqLwotaW5mbGF0ZV9odWZ0ICpocCwgICAgICAgLyogc3BhY2UgZm9yIHRyZWVzICovCi11SW50ICpobiwgICAgICAgICAgICAgICAvKiBodWZ0cyB1c2VkIGluIHNwYWNlICovCi11SW50ZiAqdiAgICAgICAgICAgICAgICAvKiB3b3JraW5nIGFyZWE6IHZhbHVlcyBpbiBvcmRlciBvZiBiaXQgbGVuZ3RoICovCi0vKiBHaXZlbiBhIGxpc3Qgb2YgY29kZSBsZW5ndGhzIGFuZCBhIG1heGltdW0gdGFibGUgc2l6ZSwgbWFrZSBhIHNldCBvZgotICAgdGFibGVzIHRvIGRlY29kZSB0aGF0IHNldCBvZiBjb2Rlcy4gIFJldHVybiBaX09LIG9uIHN1Y2Nlc3MsIFpfQlVGX0VSUk9SCi0gICBpZiB0aGUgZ2l2ZW4gY29kZSBzZXQgaXMgaW5jb21wbGV0ZSAodGhlIHRhYmxlcyBhcmUgc3RpbGwgYnVpbHQgaW4gdGhpcwotICAgY2FzZSksIG9yIFpfREFUQV9FUlJPUiBpZiB0aGUgaW5wdXQgaXMgaW52YWxpZC4gKi8KLSkKLXsKKyAgICAvKiBib3VuZCBjb2RlIGxlbmd0aHMsIGZvcmNlIHJvb3QgdG8gYmUgd2l0aGluIGNvZGUgbGVuZ3RocyAqLworICAgIHJvb3QgPSAqYml0czsKKyAgICBmb3IgKG1heCA9IE1BWEJJVFM7IG1heCA+PSAxOyBtYXgtLSkKKyAgICAgICAgaWYgKGNvdW50W21heF0gIT0gMCkgYnJlYWs7CisgICAgaWYgKHJvb3QgPiBtYXgpIHJvb3QgPSBtYXg7CisgICAgaWYgKG1heCA9PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgLyogbm8gc3ltYm9scyB0byBjb2RlIGF0IGFsbCAqLworICAgICAgICBoZXJlLm9wID0gKHVuc2lnbmVkIGNoYXIpNjQ7ICAgIC8qIGludmFsaWQgY29kZSBtYXJrZXIgKi8KKyAgICAgICAgaGVyZS5iaXRzID0gKHVuc2lnbmVkIGNoYXIpMTsKKyAgICAgICAgaGVyZS52YWwgPSAodW5zaWduZWQgc2hvcnQpMDsKKyAgICAgICAgKigqdGFibGUpKysgPSBoZXJlOyAgICAgICAgICAgICAvKiBtYWtlIGEgdGFibGUgdG8gZm9yY2UgYW4gZXJyb3IgKi8KKyAgICAgICAgKigqdGFibGUpKysgPSBoZXJlOworICAgICAgICAqYml0cyA9IDE7CisgICAgICAgIHJldHVybiAwOyAgICAgLyogbm8gc3ltYm9scywgYnV0IHdhaXQgZm9yIGRlY29kaW5nIHRvIHJlcG9ydCBlcnJvciAqLworICAgIH0KKyAgICBmb3IgKG1pbiA9IDE7IG1pbiA8IG1heDsgbWluKyspCisgICAgICAgIGlmIChjb3VudFttaW5dICE9IDApIGJyZWFrOworICAgIGlmIChyb290IDwgbWluKSByb290ID0gbWluOwogCi0gIHVJbnQgYTsgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvdW50ZXIgZm9yIGNvZGVzIG9mIGxlbmd0aCBrICovCi0gIHVJbnQgY1tCTUFYKzFdOyAgICAgICAgICAgICAgIC8qIGJpdCBsZW5ndGggY291bnQgdGFibGUgKi8KLSAgdUludCBmOyAgICAgICAgICAgICAgICAgICAgICAgLyogaSByZXBlYXRzIGluIHRhYmxlIGV2ZXJ5IGYgZW50cmllcyAqLwotICBpbnQgZzsgICAgICAgICAgICAgICAgICAgICAgICAvKiBtYXhpbXVtIGNvZGUgbGVuZ3RoICovCi0gIGludCBoOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRhYmxlIGxldmVsICovCi0gIHVJbnQgaTsgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvdW50ZXIsIGN1cnJlbnQgY29kZSAqLwotICB1SW50IGo7ICAgICAgICAgICAgICAgICAgICAgICAvKiBjb3VudGVyICovCi0gIGludCBrOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBiaXRzIGluIGN1cnJlbnQgY29kZSAqLwotICBpbnQgbDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBiaXRzIHBlciB0YWJsZSAocmV0dXJuZWQgaW4gbSkgKi8KLSAgdUludCBtYXNrOyAgICAgICAgICAgICAgICAgICAgLyogKDEgPDwgdykgLSAxLCB0byBhdm9pZCBjYyAtTyBidWcgb24gSFAgKi8KLSAgdUludGYgKnA7ICAgICAgICAgICAgICAgICAgICAgLyogcG9pbnRlciBpbnRvIGNbXSwgYltdLCBvciB2W10gKi8KLSAgaW5mbGF0ZV9odWZ0ICpxOyAgICAgICAgICAgICAgLyogcG9pbnRzIHRvIGN1cnJlbnQgdGFibGUgKi8KLSAgc3RydWN0IGluZmxhdGVfaHVmdF9zIHI7ICAgICAgLyogdGFibGUgZW50cnkgZm9yIHN0cnVjdHVyZSBhc3NpZ25tZW50ICovCi0gIGluZmxhdGVfaHVmdCAqdVtCTUFYXTsgICAgICAgIC8qIHRhYmxlIHN0YWNrICovCi0gIGludCB3OyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJpdHMgYmVmb3JlIHRoaXMgdGFibGUgPT0gKGwgKiBoKSAqLwotICB1SW50IHhbQk1BWCsxXTsgICAgICAgICAgICAgICAvKiBiaXQgb2Zmc2V0cywgdGhlbiBjb2RlIHN0YWNrICovCi0gIHVJbnRmICp4cDsgICAgICAgICAgICAgICAgICAgIC8qIHBvaW50ZXIgaW50byB4ICovCi0gIGludCB5OyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBkdW1teSBjb2RlcyBhZGRlZCAqLwotICB1SW50IHo7ICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZW50cmllcyBpbiBjdXJyZW50IHRhYmxlICovCisgICAgLyogY2hlY2sgZm9yIGFuIG92ZXItc3Vic2NyaWJlZCBvciBpbmNvbXBsZXRlIHNldCBvZiBsZW5ndGhzICovCisgICAgbGVmdCA9IDE7CisgICAgZm9yIChsZW4gPSAxOyBsZW4gPD0gTUFYQklUUzsgbGVuKyspIHsKKyAgICAgICAgbGVmdCA8PD0gMTsKKyAgICAgICAgbGVmdCAtPSBjb3VudFtsZW5dOworICAgICAgICBpZiAobGVmdCA8IDApIHJldHVybiAtMTsgICAgICAgIC8qIG92ZXItc3Vic2NyaWJlZCAqLworICAgIH0KKyAgICBpZiAobGVmdCA+IDAgJiYgKHR5cGUgPT0gQ09ERVMgfHwgbWF4ICE9IDEpKQorICAgICAgICByZXR1cm4gLTE7ICAgICAgICAgICAgICAgICAgICAgIC8qIGluY29tcGxldGUgc2V0ICovCiAKKyAgICAvKiBnZW5lcmF0ZSBvZmZzZXRzIGludG8gc3ltYm9sIHRhYmxlIGZvciBlYWNoIGxlbmd0aCBmb3Igc29ydGluZyAqLworICAgIG9mZnNbMV0gPSAwOworICAgIGZvciAobGVuID0gMTsgbGVuIDwgTUFYQklUUzsgbGVuKyspCisgICAgICAgIG9mZnNbbGVuICsgMV0gPSBvZmZzW2xlbl0gKyBjb3VudFtsZW5dOwogCi0gIC8qIE1ha2UgY29tcGlsZXIgaGFwcHkgKi8KLSAgci5iYXNlID0gMDsKKyAgICAvKiBzb3J0IHN5bWJvbHMgYnkgbGVuZ3RoLCBieSBzeW1ib2wgb3JkZXIgd2l0aGluIGVhY2ggbGVuZ3RoICovCisgICAgZm9yIChzeW0gPSAwOyBzeW0gPCBjb2Rlczsgc3ltKyspCisgICAgICAgIGlmIChsZW5zW3N5bV0gIT0gMCkgd29ya1tvZmZzW2xlbnNbc3ltXV0rK10gPSAodW5zaWduZWQgc2hvcnQpc3ltOwogCi0gIC8qIEdlbmVyYXRlIGNvdW50cyBmb3IgZWFjaCBiaXQgbGVuZ3RoICovCi0gIHAgPSBjOwotI2RlZmluZSBDMCAqcCsrID0gMDsKLSNkZWZpbmUgQzIgQzAgQzAgQzAgQzAKLSNkZWZpbmUgQzQgQzIgQzIgQzIgQzIKLSAgQzQgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2xlYXIgY1tdLS1hc3N1bWUgQk1BWCsxIGlzIDE2ICovCi0gIHAgPSBiOyAgaSA9IG47Ci0gIGRvIHsKLSAgICBjWypwKytdKys7ICAgICAgICAgICAgICAgICAgLyogYXNzdW1lIGFsbCBlbnRyaWVzIDw9IEJNQVggKi8KLSAgfSB3aGlsZSAoLS1pKTsKLSAgaWYgKGNbMF0gPT0gbikgICAgICAgICAgICAgICAgLyogbnVsbCBpbnB1dC0tYWxsIHplcm8gbGVuZ3RoIGNvZGVzICovCi0gIHsKLSAgICAqdCA9IChpbmZsYXRlX2h1ZnQgKilaX05VTEw7Ci0gICAgKm0gPSAwOwotICAgIHJldHVybiBaX09LOwotICB9CisgICAgLyoKKyAgICAgICBDcmVhdGUgYW5kIGZpbGwgaW4gZGVjb2RpbmcgdGFibGVzLiAgSW4gdGhpcyBsb29wLCB0aGUgdGFibGUgYmVpbmcKKyAgICAgICBmaWxsZWQgaXMgYXQgbmV4dCBhbmQgaGFzIGN1cnIgaW5kZXggYml0cy4gIFRoZSBjb2RlIGJlaW5nIHVzZWQgaXMgaHVmZgorICAgICAgIHdpdGggbGVuZ3RoIGxlbi4gIFRoYXQgY29kZSBpcyBjb252ZXJ0ZWQgdG8gYW4gaW5kZXggYnkgZHJvcHBpbmcgZHJvcAorICAgICAgIGJpdHMgb2ZmIG9mIHRoZSBib3R0b20uICBGb3IgY29kZXMgd2hlcmUgbGVuIGlzIGxlc3MgdGhhbiBkcm9wICsgY3VyciwKKyAgICAgICB0aG9zZSB0b3AgZHJvcCArIGN1cnIgLSBsZW4gYml0cyBhcmUgaW5jcmVtZW50ZWQgdGhyb3VnaCBhbGwgdmFsdWVzIHRvCisgICAgICAgZmlsbCB0aGUgdGFibGUgd2l0aCByZXBsaWNhdGVkIGVudHJpZXMuCiAKKyAgICAgICByb290IGlzIHRoZSBudW1iZXIgb2YgaW5kZXggYml0cyBmb3IgdGhlIHJvb3QgdGFibGUuICBXaGVuIGxlbiBleGNlZWRzCisgICAgICAgcm9vdCwgc3ViLXRhYmxlcyBhcmUgY3JlYXRlZCBwb2ludGVkIHRvIGJ5IHRoZSByb290IGVudHJ5IHdpdGggYW4gaW5kZXgKKyAgICAgICBvZiB0aGUgbG93IHJvb3QgYml0cyBvZiBodWZmLiAgVGhpcyBpcyBzYXZlZCBpbiBsb3cgdG8gY2hlY2sgZm9yIHdoZW4gYQorICAgICAgIG5ldyBzdWItdGFibGUgc2hvdWxkIGJlIHN0YXJ0ZWQuICBkcm9wIGlzIHplcm8gd2hlbiB0aGUgcm9vdCB0YWJsZSBpcworICAgICAgIGJlaW5nIGZpbGxlZCwgYW5kIGRyb3AgaXMgcm9vdCB3aGVuIHN1Yi10YWJsZXMgYXJlIGJlaW5nIGZpbGxlZC4KIAotICAvKiBGaW5kIG1pbmltdW0gYW5kIG1heGltdW0gbGVuZ3RoLCBib3VuZCAqbSBieSB0aG9zZSAqLwotICBsID0gKm07Ci0gIGZvciAoaiA9IDE7IGogPD0gQk1BWDsgaisrKQotICAgIGlmIChjW2pdKQotICAgICAgYnJlYWs7Ci0gIGsgPSBqOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1pbmltdW0gY29kZSBsZW5ndGggKi8KLSAgaWYgKCh1SW50KWwgPCBqKQotICAgIGwgPSBqOwotICBmb3IgKGkgPSBCTUFYOyBpOyBpLS0pCi0gICAgaWYgKGNbaV0pCi0gICAgICBicmVhazsKLSAgZyA9IGk7ICAgICAgICAgICAgICAgICAgICAgICAgLyogbWF4aW11bSBjb2RlIGxlbmd0aCAqLwotICBpZiAoKHVJbnQpbCA+IGkpCi0gICAgbCA9IGk7Ci0gICptID0gbDsKKyAgICAgICBXaGVuIGEgbmV3IHN1Yi10YWJsZSBpcyBuZWVkZWQsIGl0IGlzIG5lY2Vzc2FyeSB0byBsb29rIGFoZWFkIGluIHRoZQorICAgICAgIGNvZGUgbGVuZ3RocyB0byBkZXRlcm1pbmUgd2hhdCBzaXplIHN1Yi10YWJsZSBpcyBuZWVkZWQuICBUaGUgbGVuZ3RoCisgICAgICAgY291bnRzIGFyZSB1c2VkIGZvciB0aGlzLCBhbmQgc28gY291bnRbXSBpcyBkZWNyZW1lbnRlZCBhcyBjb2RlcyBhcmUKKyAgICAgICBlbnRlcmVkIGluIHRoZSB0YWJsZXMuCiAKKyAgICAgICB1c2VkIGtlZXBzIHRyYWNrIG9mIGhvdyBtYW55IHRhYmxlIGVudHJpZXMgaGF2ZSBiZWVuIGFsbG9jYXRlZCBmcm9tIHRoZQorICAgICAgIHByb3ZpZGVkICp0YWJsZSBzcGFjZS4gIEl0IGlzIGNoZWNrZWQgZm9yIExFTlMgYW5kIERJU1QgdGFibGVzIGFnYWluc3QKKyAgICAgICB0aGUgY29uc3RhbnRzIEVOT1VHSF9MRU5TIGFuZCBFTk9VR0hfRElTVFMgdG8gZ3VhcmQgYWdhaW5zdCBjaGFuZ2VzIGluCisgICAgICAgdGhlIGluaXRpYWwgcm9vdCB0YWJsZSBzaXplIGNvbnN0YW50cy4gIFNlZSB0aGUgY29tbWVudHMgaW4gaW5mdHJlZXMuaAorICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCi0gIC8qIEFkanVzdCBsYXN0IGxlbmd0aCBjb3VudCB0byBmaWxsIG91dCBjb2RlcywgaWYgbmVlZGVkICovCi0gIGZvciAoeSA9IDEgPDwgajsgaiA8IGk7IGorKywgeSA8PD0gMSkKLSAgICBpZiAoKHkgLT0gY1tqXSkgPCAwKQotICAgICAgcmV0dXJuIFpfREFUQV9FUlJPUjsKLSAgaWYgKCh5IC09IGNbaV0pIDwgMCkKLSAgICByZXR1cm4gWl9EQVRBX0VSUk9SOwotICBjW2ldICs9IHk7CisgICAgICAgc3ltIGluY3JlbWVudHMgdGhyb3VnaCBhbGwgc3ltYm9scywgYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMgd2hlbgorICAgICAgIGFsbCBjb2RlcyBvZiBsZW5ndGggbWF4LCBpLmUuIGFsbCBjb2RlcywgaGF2ZSBiZWVuIHByb2Nlc3NlZC4gIFRoaXMKKyAgICAgICByb3V0aW5lIHBlcm1pdHMgaW5jb21wbGV0ZSBjb2Rlcywgc28gYW5vdGhlciBsb29wIGFmdGVyIHRoaXMgb25lIGZpbGxzCisgICAgICAgaW4gdGhlIHJlc3Qgb2YgdGhlIGRlY29kaW5nIHRhYmxlcyB3aXRoIGludmFsaWQgY29kZSBtYXJrZXJzLgorICAgICAqLwogCisgICAgLyogc2V0IHVwIGZvciBjb2RlIHR5cGUgKi8KKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIENPREVTOgorICAgICAgICBiYXNlID0gZXh0cmEgPSB3b3JrOyAgICAvKiBkdW1teSB2YWx1ZS0tbm90IHVzZWQgKi8KKyAgICAgICAgbWF0Y2ggPSAyMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMRU5TOgorICAgICAgICBiYXNlID0gbGJhc2U7CisgICAgICAgIGV4dHJhID0gbGV4dDsKKyAgICAgICAgbWF0Y2ggPSAyNTc7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6ICAgIC8qIERJU1RTICovCisgICAgICAgIGJhc2UgPSBkYmFzZTsKKyAgICAgICAgZXh0cmEgPSBkZXh0OworICAgICAgICBtYXRjaCA9IDA7CisgICAgfQogCi0gIC8qIEdlbmVyYXRlIHN0YXJ0aW5nIG9mZnNldHMgaW50byB0aGUgdmFsdWUgdGFibGUgZm9yIGVhY2ggbGVuZ3RoICovCi0gIHhbMV0gPSBqID0gMDsKLSAgcCA9IGMgKyAxOyAgeHAgPSB4ICsgMjsKLSAgd2hpbGUgKC0taSkgeyAgICAgICAgICAgICAgICAgLyogbm90ZSB0aGF0IGkgPT0gZyBmcm9tIGFib3ZlICovCi0gICAgKnhwKysgPSAoaiArPSAqcCsrKTsKLSAgfQorICAgIC8qIGluaXRpYWxpemUgc3RhdGUgZm9yIGxvb3AgKi8KKyAgICBodWZmID0gMDsgICAgICAgICAgICAgICAgICAgLyogc3RhcnRpbmcgY29kZSAqLworICAgIHN5bSA9IDA7ICAgICAgICAgICAgICAgICAgICAvKiBzdGFydGluZyBjb2RlIHN5bWJvbCAqLworICAgIGxlbiA9IG1pbjsgICAgICAgICAgICAgICAgICAvKiBzdGFydGluZyBjb2RlIGxlbmd0aCAqLworICAgIG5leHQgPSAqdGFibGU7ICAgICAgICAgICAgICAvKiBjdXJyZW50IHRhYmxlIHRvIGZpbGwgaW4gKi8KKyAgICBjdXJyID0gcm9vdDsgICAgICAgICAgICAgICAgLyogY3VycmVudCB0YWJsZSBpbmRleCBiaXRzICovCisgICAgZHJvcCA9IDA7ICAgICAgICAgICAgICAgICAgIC8qIGN1cnJlbnQgYml0cyB0byBkcm9wIGZyb20gY29kZSBmb3IgaW5kZXggKi8KKyAgICBsb3cgPSAodW5zaWduZWQpKC0xKTsgICAgICAgLyogdHJpZ2dlciBuZXcgc3ViLXRhYmxlIHdoZW4gbGVuID4gcm9vdCAqLworICAgIHVzZWQgPSAxVSA8PCByb290OyAgICAgICAgICAvKiB1c2Ugcm9vdCB0YWJsZSBlbnRyaWVzICovCisgICAgbWFzayA9IHVzZWQgLSAxOyAgICAgICAgICAgIC8qIG1hc2sgZm9yIGNvbXBhcmluZyBsb3cgKi8KIAorICAgIC8qIGNoZWNrIGF2YWlsYWJsZSB0YWJsZSBzcGFjZSAqLworICAgIGlmICgodHlwZSA9PSBMRU5TICYmIHVzZWQgPiBFTk9VR0hfTEVOUykgfHwKKyAgICAgICAgKHR5cGUgPT0gRElTVFMgJiYgdXNlZCA+IEVOT1VHSF9ESVNUUykpCisgICAgICAgIHJldHVybiAxOwogCi0gIC8qIE1ha2UgYSB0YWJsZSBvZiB2YWx1ZXMgaW4gb3JkZXIgb2YgYml0IGxlbmd0aHMgKi8KLSAgcCA9IGI7ICBpID0gMDsKLSAgZG8gewotICAgIGlmICgoaiA9ICpwKyspICE9IDApCi0gICAgICB2W3hbal0rK10gPSBpOwotICB9IHdoaWxlICgrK2kgPCBuKTsKLSAgbiA9IHhbZ107ICAgICAgICAgICAgICAgICAgICAgLyogc2V0IG4gdG8gbGVuZ3RoIG9mIHYgKi8KLQotCi0gIC8qIEdlbmVyYXRlIHRoZSBIdWZmbWFuIGNvZGVzIGFuZCBmb3IgZWFjaCwgbWFrZSB0aGUgdGFibGUgZW50cmllcyAqLwotICB4WzBdID0gaSA9IDA7ICAgICAgICAgICAgICAgICAvKiBmaXJzdCBIdWZmbWFuIGNvZGUgaXMgemVybyAqLwotICBwID0gdjsgICAgICAgICAgICAgICAgICAgICAgICAvKiBncmFiIHZhbHVlcyBpbiBiaXQgb3JkZXIgKi8KLSAgaCA9IC0xOyAgICAgICAgICAgICAgICAgICAgICAgLyogbm8gdGFibGVzIHlldC0tbGV2ZWwgLTEgKi8KLSAgdyA9IC1sOyAgICAgICAgICAgICAgICAgICAgICAgLyogYml0cyBkZWNvZGVkID09IChsICogaCkgKi8KLSAgdVswXSA9IChpbmZsYXRlX2h1ZnQgKilaX05VTEw7ICAgICAgICAvKiBqdXN0IHRvIGtlZXAgY29tcGlsZXJzIGhhcHB5ICovCi0gIHEgPSAoaW5mbGF0ZV9odWZ0ICopWl9OVUxMOyAgIC8qIGRpdHRvICovCi0gIHogPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRpdHRvICovCi0KLSAgLyogZ28gdGhyb3VnaCB0aGUgYml0IGxlbmd0aHMgKGsgYWxyZWFkeSBpcyBiaXRzIGluIHNob3J0ZXN0IGNvZGUpICovCi0gIGZvciAoOyBrIDw9IGc7IGsrKykKLSAgewotICAgIGEgPSBjW2tdOwotICAgIHdoaWxlIChhLS0pCi0gICAgewotICAgICAgLyogaGVyZSBpIGlzIHRoZSBIdWZmbWFuIGNvZGUgb2YgbGVuZ3RoIGsgYml0cyBmb3IgdmFsdWUgKnAgKi8KLSAgICAgIC8qIG1ha2UgdGFibGVzIHVwIHRvIHJlcXVpcmVkIGxldmVsICovCi0gICAgICB3aGlsZSAoayA+IHcgKyBsKQotICAgICAgewotICAgICAgICBoKys7Ci0gICAgICAgIHcgKz0gbDsgICAgICAgICAgICAgICAgIC8qIHByZXZpb3VzIHRhYmxlIGFsd2F5cyBsIGJpdHMgKi8KLQotICAgICAgICAvKiBjb21wdXRlIG1pbmltdW0gc2l6ZSB0YWJsZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gbCBiaXRzICovCi0gICAgICAgIHogPSBnIC0gdzsKLSAgICAgICAgeiA9IHogPiAodUludClsID8gKHVJbnQpbCA6IHo7ICAgICAgICAvKiB0YWJsZSBzaXplIHVwcGVyIGxpbWl0ICovCi0gICAgICAgIGlmICgoZiA9IDEgPDwgKGogPSBrIC0gdykpID4gYSArIDEpICAgICAvKiB0cnkgYSBrLXcgYml0IHRhYmxlICovCi0gICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgIC8qIHRvbyBmZXcgY29kZXMgZm9yIGstdyBiaXQgdGFibGUgKi8KLSAgICAgICAgICBmIC09IGEgKyAxOyAgICAgICAgICAgLyogZGVkdWN0IGNvZGVzIGZyb20gcGF0dGVybnMgbGVmdCAqLwotICAgICAgICAgIHhwID0gYyArIGs7Ci0gICAgICAgICAgaWYgKGogPCB6KQotICAgICAgICAgICAgd2hpbGUgKCsraiA8IHopICAgICAvKiB0cnkgc21hbGxlciB0YWJsZXMgdXAgdG8geiBiaXRzICovCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGlmICgoZiA8PD0gMSkgPD0gKisreHApCi0gICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgIC8qIGVub3VnaCBjb2RlcyB0byB1c2UgdXAgaiBiaXRzICovCi0gICAgICAgICAgICAgIGYgLT0gKnhwOyAgICAgICAgIC8qIGVsc2UgZGVkdWN0IGNvZGVzIGZyb20gcGF0dGVybnMgKi8KLSAgICAgICAgICAgIH0KKyAgICAvKiBwcm9jZXNzIGFsbCBjb2RlcyBhbmQgbWFrZSB0YWJsZSBlbnRyaWVzICovCisgICAgZm9yICg7OykgeworICAgICAgICAvKiBjcmVhdGUgdGFibGUgZW50cnkgKi8KKyAgICAgICAgaGVyZS5iaXRzID0gKHVuc2lnbmVkIGNoYXIpKGxlbiAtIGRyb3ApOworICAgICAgICBpZiAod29ya1tzeW1dICsgMVUgPCBtYXRjaCkgeworICAgICAgICAgICAgaGVyZS5vcCA9ICh1bnNpZ25lZCBjaGFyKTA7CisgICAgICAgICAgICBoZXJlLnZhbCA9IHdvcmtbc3ltXTsKICAgICAgICAgfQotICAgICAgICB6ID0gMSA8PCBqOyAgICAgICAgICAgICAvKiB0YWJsZSBlbnRyaWVzIGZvciBqLWJpdCB0YWJsZSAqLworICAgICAgICBlbHNlIGlmICh3b3JrW3N5bV0gPj0gbWF0Y2gpIHsKKyAgICAgICAgICAgIGhlcmUub3AgPSAodW5zaWduZWQgY2hhcikoZXh0cmFbd29ya1tzeW1dIC0gbWF0Y2hdKTsKKyAgICAgICAgICAgIGhlcmUudmFsID0gYmFzZVt3b3JrW3N5bV0gLSBtYXRjaF07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBoZXJlLm9wID0gKHVuc2lnbmVkIGNoYXIpKDMyICsgNjQpOyAgICAgICAgIC8qIGVuZCBvZiBibG9jayAqLworICAgICAgICAgICAgaGVyZS52YWwgPSAwOworICAgICAgICB9CiAKLSAgICAgICAgLyogYWxsb2NhdGUgbmV3IHRhYmxlICovCi0gICAgICAgIGlmICgqaG4gKyB6ID4gTUFOWSkgICAgIC8qIChub3RlOiBkb2Vzbid0IG1hdHRlciBmb3IgZml4ZWQpICovCi0gICAgICAgICAgcmV0dXJuIFpfREFUQV9FUlJPUjsgIC8qIG92ZXJmbG93IG9mIE1BTlkgKi8KLSAgICAgICAgdVtoXSA9IHEgPSBocCArICpobjsKLSAgICAgICAgKmhuICs9IHo7CisgICAgICAgIC8qIHJlcGxpY2F0ZSBmb3IgdGhvc2UgaW5kaWNlcyB3aXRoIGxvdyBsZW4gYml0cyBlcXVhbCB0byBodWZmICovCisgICAgICAgIGluY3IgPSAxVSA8PCAobGVuIC0gZHJvcCk7CisgICAgICAgIGZpbGwgPSAxVSA8PCBjdXJyOworICAgICAgICBtaW4gPSBmaWxsOyAgICAgICAgICAgICAgICAgLyogc2F2ZSBvZmZzZXQgdG8gbmV4dCB0YWJsZSAqLworICAgICAgICBkbyB7CisgICAgICAgICAgICBmaWxsIC09IGluY3I7CisgICAgICAgICAgICBuZXh0WyhodWZmID4+IGRyb3ApICsgZmlsbF0gPSBoZXJlOworICAgICAgICB9IHdoaWxlIChmaWxsICE9IDApOwogCi0gICAgICAgIC8qIGNvbm5lY3QgdG8gbGFzdCB0YWJsZSwgaWYgdGhlcmUgaXMgb25lICovCi0gICAgICAgIGlmIChoKQotICAgICAgICB7Ci0gICAgICAgICAgeFtoXSA9IGk7ICAgICAgICAgICAgIC8qIHNhdmUgcGF0dGVybiBmb3IgYmFja2luZyB1cCAqLwotICAgICAgICAgIHIuYml0cyA9IChCeXRlKWw7ICAgICAvKiBiaXRzIHRvIGR1bXAgYmVmb3JlIHRoaXMgdGFibGUgKi8KLSAgICAgICAgICByLmV4b3AgPSAoQnl0ZSlqOyAgICAgLyogYml0cyBpbiB0aGlzIHRhYmxlICovCi0gICAgICAgICAgaiA9IGkgPj4gKHcgLSBsKTsKLSAgICAgICAgICByLmJhc2UgPSAodUludCkocSAtIHVbaC0xXSAtIGopOyAgIC8qIG9mZnNldCB0byB0aGlzIHRhYmxlICovCi0gICAgICAgICAgdVtoLTFdW2pdID0gcjsgICAgICAgIC8qIGNvbm5lY3QgdG8gbGFzdCB0YWJsZSAqLworICAgICAgICAvKiBiYWNrd2FyZHMgaW5jcmVtZW50IHRoZSBsZW4tYml0IGNvZGUgaHVmZiAqLworICAgICAgICBpbmNyID0gMVUgPDwgKGxlbiAtIDEpOworICAgICAgICB3aGlsZSAoaHVmZiAmIGluY3IpCisgICAgICAgICAgICBpbmNyID4+PSAxOworICAgICAgICBpZiAoaW5jciAhPSAwKSB7CisgICAgICAgICAgICBodWZmICY9IGluY3IgLSAxOworICAgICAgICAgICAgaHVmZiArPSBpbmNyOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAqdCA9IHE7ICAgICAgICAgICAgICAgLyogZmlyc3QgdGFibGUgaXMgcmV0dXJuZWQgcmVzdWx0ICovCi0gICAgICB9CisgICAgICAgICAgICBodWZmID0gMDsKIAotICAgICAgLyogc2V0IHVwIHRhYmxlIGVudHJ5IGluIHIgKi8KLSAgICAgIHIuYml0cyA9IChCeXRlKShrIC0gdyk7Ci0gICAgICBpZiAocCA+PSB2ICsgbikKLSAgICAgICAgci5leG9wID0gMTI4ICsgNjQ7ICAgICAgLyogb3V0IG9mIHZhbHVlcy0taW52YWxpZCBjb2RlICovCi0gICAgICBlbHNlIGlmICgqcCA8IHMpCi0gICAgICB7Ci0gICAgICAgIHIuZXhvcCA9IChCeXRlKSgqcCA8IDI1NiA/IDAgOiAzMiArIDY0KTsgICAgIC8qIDI1NiBpcyBlbmQtb2YtYmxvY2sgKi8KLSAgICAgICAgci5iYXNlID0gKnArKzsgICAgICAgICAgLyogc2ltcGxlIGNvZGUgaXMganVzdCB0aGUgdmFsdWUgKi8KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgci5leG9wID0gKEJ5dGUpKGVbKnAgLSBzXSArIDE2ICsgNjQpOy8qIG5vbi1zaW1wbGUtLWxvb2sgdXAgaW4gbGlzdHMgKi8KLSAgICAgICAgci5iYXNlID0gZFsqcCsrIC0gc107Ci0gICAgICB9CisgICAgICAgIC8qIGdvIHRvIG5leHQgc3ltYm9sLCB1cGRhdGUgY291bnQsIGxlbiAqLworICAgICAgICBzeW0rKzsKKyAgICAgICAgaWYgKC0tKGNvdW50W2xlbl0pID09IDApIHsKKyAgICAgICAgICAgIGlmIChsZW4gPT0gbWF4KSBicmVhazsKKyAgICAgICAgICAgIGxlbiA9IGxlbnNbd29ya1tzeW1dXTsKKyAgICAgICAgfQogCi0gICAgICAvKiBmaWxsIGNvZGUtbGlrZSBlbnRyaWVzIHdpdGggciAqLwotICAgICAgZiA9IDEgPDwgKGsgLSB3KTsKLSAgICAgIGZvciAoaiA9IGkgPj4gdzsgaiA8IHo7IGogKz0gZikKLSAgICAgICAgcVtqXSA9IHI7CisgICAgICAgIC8qIGNyZWF0ZSBuZXcgc3ViLXRhYmxlIGlmIG5lZWRlZCAqLworICAgICAgICBpZiAobGVuID4gcm9vdCAmJiAoaHVmZiAmIG1hc2spICE9IGxvdykgeworICAgICAgICAgICAgLyogaWYgZmlyc3QgdGltZSwgdHJhbnNpdGlvbiB0byBzdWItdGFibGVzICovCisgICAgICAgICAgICBpZiAoZHJvcCA9PSAwKQorICAgICAgICAgICAgICAgIGRyb3AgPSByb290OwogCi0gICAgICAvKiBiYWNrd2FyZHMgaW5jcmVtZW50IHRoZSBrLWJpdCBjb2RlIGkgKi8KLSAgICAgIGZvciAoaiA9IDEgPDwgKGsgLSAxKTsgaSAmIGo7IGogPj49IDEpCi0gICAgICAgIGkgXj0gajsKLSAgICAgIGkgXj0gajsKKyAgICAgICAgICAgIC8qIGluY3JlbWVudCBwYXN0IGxhc3QgdGFibGUgKi8KKyAgICAgICAgICAgIG5leHQgKz0gbWluOyAgICAgICAgICAgIC8qIGhlcmUgbWluIGlzIDEgPDwgY3VyciAqLwogCi0gICAgICAvKiBiYWNrdXAgb3ZlciBmaW5pc2hlZCB0YWJsZXMgKi8KLSAgICAgIG1hc2sgPSAoMSA8PCB3KSAtIDE7ICAgICAgLyogbmVlZGVkIG9uIEhQLCBjYyAtTyBidWcgKi8KLSAgICAgIHdoaWxlICgoaSAmIG1hc2spICE9IHhbaF0pCi0gICAgICB7Ci0gICAgICAgIGgtLTsgICAgICAgICAgICAgICAgICAgIC8qIGRvbid0IG5lZWQgdG8gdXBkYXRlIHEgKi8KLSAgICAgICAgdyAtPSBsOwotICAgICAgICBtYXNrID0gKDEgPDwgdykgLSAxOwotICAgICAgfQotICAgIH0KLSAgfQorICAgICAgICAgICAgLyogZGV0ZXJtaW5lIGxlbmd0aCBvZiBuZXh0IHRhYmxlICovCisgICAgICAgICAgICBjdXJyID0gbGVuIC0gZHJvcDsKKyAgICAgICAgICAgIGxlZnQgPSAoaW50KSgxIDw8IGN1cnIpOworICAgICAgICAgICAgd2hpbGUgKGN1cnIgKyBkcm9wIDwgbWF4KSB7CisgICAgICAgICAgICAgICAgbGVmdCAtPSBjb3VudFtjdXJyICsgZHJvcF07CisgICAgICAgICAgICAgICAgaWYgKGxlZnQgPD0gMCkgYnJlYWs7CisgICAgICAgICAgICAgICAgY3VycisrOworICAgICAgICAgICAgICAgIGxlZnQgPDw9IDE7CisgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIC8qIGNoZWNrIGZvciBlbm91Z2ggc3BhY2UgKi8KKyAgICAgICAgICAgIHVzZWQgKz0gMVUgPDwgY3VycjsKKyAgICAgICAgICAgIGlmICgodHlwZSA9PSBMRU5TICYmIHVzZWQgPiBFTk9VR0hfTEVOUykgfHwKKyAgICAgICAgICAgICAgICAodHlwZSA9PSBESVNUUyAmJiB1c2VkID4gRU5PVUdIX0RJU1RTKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKIAotICAvKiBSZXR1cm4gWl9CVUZfRVJST1IgaWYgd2Ugd2VyZSBnaXZlbiBhbiBpbmNvbXBsZXRlIHRhYmxlICovCi0gIHJldHVybiB5ICE9IDAgJiYgZyAhPSAxID8gWl9CVUZfRVJST1IgOiBaX09LOwotfQotCi0KLWxvY2FsIGludCBpbmZsYXRlX3RyZWVzX2JpdHMoIC8qIGMsIGJiLCB0YiwgaHAsIHopICovCi11SW50ZiAqYywgICAgICAgICAgICAgICAvKiAxOSBjb2RlIGxlbmd0aHMgKi8KLXVJbnRmICpiYiwgICAgICAgICAgICAgIC8qIGJpdHMgdHJlZSBkZXNpcmVkL2FjdHVhbCBkZXB0aCAqLwotaW5mbGF0ZV9odWZ0ICogRkFSICp0YiwgLyogYml0cyB0cmVlIHJlc3VsdCAqLwotaW5mbGF0ZV9odWZ0ICpocCwgICAgICAgLyogc3BhY2UgZm9yIHRyZWVzICovCi16X3N0cmVhbXAgeiAgICAgICAgICAgICAvKiBmb3IgbWVzc2FnZXMgKi8KLSkKLXsKLSAgaW50IHI7Ci0gIHVJbnQgaG4gPSAwOyAgICAgICAgICAvKiBodWZ0cyB1c2VkIGluIHNwYWNlICovCi0gIHVJbnRmICp2OyAgICAgICAgICAgICAvKiB3b3JrIGFyZWEgZm9yIGh1ZnRfYnVpbGQgKi8KLQotICBpZiAoKHYgPSAodUludGYqKVpBTExPQyh6LCAxOSwgc2l6ZW9mKHVJbnQpKSkgPT0gWl9OVUxMKQotICAgIHJldHVybiBaX01FTV9FUlJPUjsKLSAgciA9IGh1ZnRfYnVpbGQoYywgMTksIDE5LCAodUludGYqKVpfTlVMTCwgKHVJbnRmKilaX05VTEwsCi0gICAgICAgICAgICAgICAgIHRiLCBiYiwgaHAsICZobiwgdik7Ci0gIGlmIChyID09IFpfREFUQV9FUlJPUikKLSAgICB6LT5tc2cgPSAoY2hhciopIm92ZXJzdWJzY3JpYmVkIGR5bmFtaWMgYml0IGxlbmd0aHMgdHJlZSI7Ci0gIGVsc2UgaWYgKHIgPT0gWl9CVUZfRVJST1IgfHwgKmJiID09IDApCi0gIHsKLSAgICB6LT5tc2cgPSAoY2hhciopImluY29tcGxldGUgZHluYW1pYyBiaXQgbGVuZ3RocyB0cmVlIjsKLSAgICByID0gWl9EQVRBX0VSUk9SOwotICB9Ci0gIFpGUkVFKHosIHYpOwotICByZXR1cm4gcjsKLX0KLQotCi1sb2NhbCBpbnQgaW5mbGF0ZV90cmVlc19keW5hbWljKCAvKiBubCwgbmQsIGMsIGJsLCBiZCwgdGwsIHRkLCBocCwgeikgKi8KLXVJbnQgbmwsICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBsaXRlcmFsL2xlbmd0aCBjb2RlcyAqLwotdUludCBuZCwgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGRpc3RhbmNlIGNvZGVzICovCi11SW50ZiAqYywgICAgICAgICAgICAgICAvKiB0aGF0IG1hbnkgKHRvdGFsKSBjb2RlIGxlbmd0aHMgKi8KLXVJbnRmICpibCwgICAgICAgICAgICAgIC8qIGxpdGVyYWwgZGVzaXJlZC9hY3R1YWwgYml0IGRlcHRoICovCi11SW50ZiAqYmQsICAgICAgICAgICAgICAvKiBkaXN0YW5jZSBkZXNpcmVkL2FjdHVhbCBiaXQgZGVwdGggKi8KLWluZmxhdGVfaHVmdCAqIEZBUiAqdGwsIC8qIGxpdGVyYWwvbGVuZ3RoIHRyZWUgcmVzdWx0ICovCi1pbmZsYXRlX2h1ZnQgKiBGQVIgKnRkLCAvKiBkaXN0YW5jZSB0cmVlIHJlc3VsdCAqLwotaW5mbGF0ZV9odWZ0ICpocCwgICAgICAgLyogc3BhY2UgZm9yIHRyZWVzICovCi16X3N0cmVhbXAgeiAgICAgICAgICAgICAvKiBmb3IgbWVzc2FnZXMgKi8KLSkKLXsKLSAgaW50IHI7Ci0gIHVJbnQgaG4gPSAwOyAgICAgICAgICAvKiBodWZ0cyB1c2VkIGluIHNwYWNlICovCi0gIHVJbnRmICp2OyAgICAgICAgICAgICAvKiB3b3JrIGFyZWEgZm9yIGh1ZnRfYnVpbGQgKi8KLQotICAvKiBhbGxvY2F0ZSB3b3JrIGFyZWEgKi8KLSAgaWYgKCh2ID0gKHVJbnRmKilaQUxMT0MoeiwgMjg4LCBzaXplb2YodUludCkpKSA9PSBaX05VTEwpCi0gICAgcmV0dXJuIFpfTUVNX0VSUk9SOwotCi0gIC8qIGJ1aWxkIGxpdGVyYWwvbGVuZ3RoIHRyZWUgKi8KLSAgciA9IGh1ZnRfYnVpbGQoYywgbmwsIDI1NywgY3BsZW5zLCBjcGxleHQsIHRsLCBibCwgaHAsICZobiwgdik7Ci0gIGlmIChyICE9IFpfT0sgfHwgKmJsID09IDApCi0gIHsKLSAgICBpZiAociA9PSBaX0RBVEFfRVJST1IpCi0gICAgICB6LT5tc2cgPSAoY2hhciopIm92ZXJzdWJzY3JpYmVkIGxpdGVyYWwvbGVuZ3RoIHRyZWUiOwotICAgIGVsc2UgaWYgKHIgIT0gWl9NRU1fRVJST1IpCi0gICAgewotICAgICAgei0+bXNnID0gKGNoYXIqKSJpbmNvbXBsZXRlIGxpdGVyYWwvbGVuZ3RoIHRyZWUiOwotICAgICAgciA9IFpfREFUQV9FUlJPUjsKLSAgICB9Ci0gICAgWkZSRUUoeiwgdik7Ci0gICAgcmV0dXJuIHI7Ci0gIH0KLQotICAvKiBidWlsZCBkaXN0YW5jZSB0cmVlICovCi0gIHIgPSBodWZ0X2J1aWxkKGMgKyBubCwgbmQsIDAsIGNwZGlzdCwgY3BkZXh0LCB0ZCwgYmQsIGhwLCAmaG4sIHYpOwotICBpZiAociAhPSBaX09LIHx8ICgqYmQgPT0gMCAmJiBubCA+IDI1NykpCi0gIHsKLSAgICBpZiAociA9PSBaX0RBVEFfRVJST1IpCi0gICAgICB6LT5tc2cgPSAoY2hhciopIm92ZXJzdWJzY3JpYmVkIGRpc3RhbmNlIHRyZWUiOwotICAgIGVsc2UgaWYgKHIgPT0gWl9CVUZfRVJST1IpIHsKLSNpZiAwCi0gICAgewotI2VuZGlmCi0jaWZkZWYgUEtaSVBfQlVHX1dPUktBUk9VTkQKLSAgICAgIHIgPSBaX09LOwotICAgIH0KLSNlbHNlCi0gICAgICB6LT5tc2cgPSAoY2hhciopImluY29tcGxldGUgZGlzdGFuY2UgdHJlZSI7Ci0gICAgICByID0gWl9EQVRBX0VSUk9SOwotICAgIH0KLSAgICBlbHNlIGlmIChyICE9IFpfTUVNX0VSUk9SKQotICAgIHsKLSAgICAgIHotPm1zZyA9IChjaGFyKikiZW1wdHkgZGlzdGFuY2UgdHJlZSB3aXRoIGxlbmd0aHMiOwotICAgICAgciA9IFpfREFUQV9FUlJPUjsKLSAgICB9Ci0gICAgWkZSRUUoeiwgdik7Ci0gICAgcmV0dXJuIHI7Ci0jZW5kaWYKLSAgfQotCi0gIC8qIGRvbmUgKi8KLSAgWkZSRUUoeiwgdik7Ci0gIHJldHVybiBaX09LOwotfQotCi0KLS8qIGJ1aWxkIGZpeGVkIHRhYmxlcyBvbmx5IG9uY2UtLWtlZXAgdGhlbSBoZXJlICovCi0jaWZkZWYgQlVJTERGSVhFRAotbG9jYWwgaW50IGZpeGVkX2J1aWx0ID0gMDsKLSNkZWZpbmUgRklYRURIIDU0NCAgICAgIC8qIG51bWJlciBvZiBodWZ0cyB1c2VkIGJ5IGZpeGVkIHRhYmxlcyAqLwotbG9jYWwgaW5mbGF0ZV9odWZ0IGZpeGVkX21lbVtGSVhFREhdOwotbG9jYWwgdUludCBmaXhlZF9ibDsKLWxvY2FsIHVJbnQgZml4ZWRfYmQ7Ci1sb2NhbCBpbmZsYXRlX2h1ZnQgKmZpeGVkX3RsOwotbG9jYWwgaW5mbGF0ZV9odWZ0ICpmaXhlZF90ZDsKLSNlbHNlCi0jaW5jbHVkZSAiaW5mZml4ZWQuaCIKLSNlbmRpZgotCi0KLWxvY2FsIGludCBpbmZsYXRlX3RyZWVzX2ZpeGVkKCAvKiBibCwgYmQsIHRsLCB0ZCwgeikgKi8KLXVJbnRmICpibCwgICAgICAgICAgICAgICAgICAgICAgLyogbGl0ZXJhbCBkZXNpcmVkL2FjdHVhbCBiaXQgZGVwdGggKi8KLXVJbnRmICpiZCwgICAgICAgICAgICAgICAgICAgICAgLyogZGlzdGFuY2UgZGVzaXJlZC9hY3R1YWwgYml0IGRlcHRoICovCi1jb25zdCBpbmZsYXRlX2h1ZnQgKiBGQVIgKnRsLCAgIC8qIGxpdGVyYWwvbGVuZ3RoIHRyZWUgcmVzdWx0ICovCi1jb25zdCBpbmZsYXRlX2h1ZnQgKiBGQVIgKnRkLCAgIC8qIGRpc3RhbmNlIHRyZWUgcmVzdWx0ICovCi16X3N0cmVhbXAgeiAgICAgICAgICAgICAgICAgICAgIC8qIGZvciBtZW1vcnkgYWxsb2NhdGlvbiAqLwotKQotewotI2lmZGVmIEJVSUxERklYRUQKLSAgLyogYnVpbGQgZml4ZWQgdGFibGVzIGlmIG5vdCBhbHJlYWR5ICovCi0gIGlmICghZml4ZWRfYnVpbHQpCi0gIHsKLSAgICBpbnQgazsgICAgICAgICAgICAgIC8qIHRlbXBvcmFyeSB2YXJpYWJsZSAqLwotICAgIHVJbnQgZiA9IDA7ICAgICAgICAgLyogbnVtYmVyIG9mIGh1ZnRzIHVzZWQgaW4gZml4ZWRfbWVtICovCi0gICAgdUludGYgKmM7ICAgICAgICAgICAvKiBsZW5ndGggbGlzdCBmb3IgaHVmdF9idWlsZCAqLwotICAgIHVJbnRmICp2OyAgICAgICAgICAgLyogd29yayBhcmVhIGZvciBodWZ0X2J1aWxkICovCi0KLSAgICAvKiBhbGxvY2F0ZSBtZW1vcnkgKi8KLSAgICBpZiAoKGMgPSAodUludGYqKVpBTExPQyh6LCAyODgsIHNpemVvZih1SW50KSkpID09IFpfTlVMTCkKLSAgICAgIHJldHVybiBaX01FTV9FUlJPUjsKLSAgICBpZiAoKHYgPSAodUludGYqKVpBTExPQyh6LCAyODgsIHNpemVvZih1SW50KSkpID09IFpfTlVMTCkKLSAgICB7Ci0gICAgICBaRlJFRSh6LCBjKTsKLSAgICAgIHJldHVybiBaX01FTV9FUlJPUjsKKyAgICAgICAgICAgIC8qIHBvaW50IGVudHJ5IGluIHJvb3QgdGFibGUgdG8gc3ViLXRhYmxlICovCisgICAgICAgICAgICBsb3cgPSBodWZmICYgbWFzazsKKyAgICAgICAgICAgICgqdGFibGUpW2xvd10ub3AgPSAodW5zaWduZWQgY2hhciljdXJyOworICAgICAgICAgICAgKCp0YWJsZSlbbG93XS5iaXRzID0gKHVuc2lnbmVkIGNoYXIpcm9vdDsKKyAgICAgICAgICAgICgqdGFibGUpW2xvd10udmFsID0gKHVuc2lnbmVkIHNob3J0KShuZXh0IC0gKnRhYmxlKTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIC8qIGxpdGVyYWwgdGFibGUgKi8KLSAgICBmb3IgKGsgPSAwOyBrIDwgMTQ0OyBrKyspCi0gICAgICBjW2tdID0gODsKLSAgICBmb3IgKDsgayA8IDI1NjsgaysrKQotICAgICAgY1trXSA9IDk7Ci0gICAgZm9yICg7IGsgPCAyODA7IGsrKykKLSAgICAgIGNba10gPSA3OwotICAgIGZvciAoOyBrIDwgMjg4OyBrKyspCi0gICAgICBjW2tdID0gODsKLSAgICBmaXhlZF9ibCA9IDk7Ci0gICAgaHVmdF9idWlsZChjLCAyODgsIDI1NywgY3BsZW5zLCBjcGxleHQsICZmaXhlZF90bCwgJmZpeGVkX2JsLAotICAgICAgICAgICAgICAgZml4ZWRfbWVtLCAmZiwgdik7CisgICAgLyogZmlsbCBpbiByZW1haW5pbmcgdGFibGUgZW50cnkgaWYgY29kZSBpcyBpbmNvbXBsZXRlIChndWFyYW50ZWVkIHRvIGhhdmUKKyAgICAgICBhdCBtb3N0IG9uZSByZW1haW5pbmcgZW50cnksIHNpbmNlIGlmIHRoZSBjb2RlIGlzIGluY29tcGxldGUsIHRoZQorICAgICAgIG1heGltdW0gY29kZSBsZW5ndGggdGhhdCB3YXMgYWxsb3dlZCB0byBnZXQgdGhpcyBmYXIgaXMgb25lIGJpdCkgKi8KKyAgICBpZiAoaHVmZiAhPSAwKSB7CisgICAgICAgIGhlcmUub3AgPSAodW5zaWduZWQgY2hhcik2NDsgICAgICAgICAgICAvKiBpbnZhbGlkIGNvZGUgbWFya2VyICovCisgICAgICAgIGhlcmUuYml0cyA9ICh1bnNpZ25lZCBjaGFyKShsZW4gLSBkcm9wKTsKKyAgICAgICAgaGVyZS52YWwgPSAodW5zaWduZWQgc2hvcnQpMDsKKyAgICAgICAgbmV4dFtodWZmXSA9IGhlcmU7CisgICAgfQogCi0gICAgLyogZGlzdGFuY2UgdGFibGUgKi8KLSAgICBmb3IgKGsgPSAwOyBrIDwgMzA7IGsrKykKLSAgICAgIGNba10gPSA1OwotICAgIGZpeGVkX2JkID0gNTsKLSAgICBodWZ0X2J1aWxkKGMsIDMwLCAwLCBjcGRpc3QsIGNwZGV4dCwgJmZpeGVkX3RkLCAmZml4ZWRfYmQsCi0gICAgICAgICAgICAgICBmaXhlZF9tZW0sICZmLCB2KTsKLQotICAgIC8qIGRvbmUgKi8KLSAgICBaRlJFRSh6LCB2KTsKLSAgICBaRlJFRSh6LCBjKTsKLSAgICBmaXhlZF9idWlsdCA9IDE7Ci0gIH0KLSNlbHNlCi0gIEZUX1VOVVNFRCh6KTsKLSNlbmRpZgotICAqYmwgPSBmaXhlZF9ibDsKLSAgKmJkID0gZml4ZWRfYmQ7Ci0gICp0bCA9IGZpeGVkX3RsOwotICAqdGQgPSBmaXhlZF90ZDsKLSAgcmV0dXJuIFpfT0s7CisgICAgLyogc2V0IHJldHVybiBwYXJhbWV0ZXJzICovCisgICAgKnRhYmxlICs9IHVzZWQ7CisgICAgKmJpdHMgPSByb290OworICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2d6aXAvaW5mdHJlZXMuaCBiL3NyYy9nemlwL2luZnRyZWVzLmgKaW5kZXggMDdiZjJhYS4uYTIyMDdlZiAxMDA2NDQKLS0tIGEvc3JjL2d6aXAvaW5mdHJlZXMuaAorKysgYi9zcmMvZ3ppcC9pbmZ0cmVlcy5oCkBAIC0xLDYzICsxLDY3IEBACiAvKiBpbmZ0cmVlcy5oIC0tIGhlYWRlciB0byB1c2UgaW5mdHJlZXMuYwotICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDIgTWFyayBBZGxlcgorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDUsIDIwMTAgTWFyayBBZGxlcgogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAogICovCiAKKyNpZm5kZWYgSU5GVFJFRVNfSAorI2RlZmluZSBJTkZUUkVFU19ICisKIC8qIFdBUk5JTkc6IHRoaXMgZmlsZSBzaG91bGQgKm5vdCogYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMuIEl0IGlzCiAgICBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY29tcHJlc3Npb24gbGlicmFyeSBhbmQgaXMKICAgIHN1YmplY3QgdG8gY2hhbmdlLiBBcHBsaWNhdGlvbnMgc2hvdWxkIG9ubHkgdXNlIHpsaWIuaC4KICAqLwogCi0vKiBIdWZmbWFuIGNvZGUgbG9va3VwIHRhYmxlIGVudHJ5LS10aGlzIGVudHJ5IGlzIGZvdXIgYnl0ZXMgZm9yIG1hY2hpbmVzCi0gICB0aGF0IGhhdmUgMTYtYml0IHBvaW50ZXJzIChlLmcuIFBDJ3MgaW4gdGhlIHNtYWxsIG9yIG1lZGl1bSBtb2RlbCkuICovCisvKiBTdHJ1Y3R1cmUgZm9yIGRlY29kaW5nIHRhYmxlcy4gIEVhY2ggZW50cnkgcHJvdmlkZXMgZWl0aGVyIHRoZQorICAgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGRvIHRoZSBvcGVyYXRpb24gcmVxdWVzdGVkIGJ5IHRoZSBjb2RlIHRoYXQKKyAgIGluZGV4ZWQgdGhhdCB0YWJsZSBlbnRyeSwgb3IgaXQgcHJvdmlkZXMgYSBwb2ludGVyIHRvIGFub3RoZXIKKyAgIHRhYmxlIHRoYXQgaW5kZXhlcyBtb3JlIGJpdHMgb2YgdGhlIGNvZGUuICBvcCBpbmRpY2F0ZXMgd2hldGhlcgorICAgdGhlIGVudHJ5IGlzIGEgcG9pbnRlciB0byBhbm90aGVyIHRhYmxlLCBhIGxpdGVyYWwsIGEgbGVuZ3RoIG9yCisgICBkaXN0YW5jZSwgYW4gZW5kLW9mLWJsb2NrLCBvciBhbiBpbnZhbGlkIGNvZGUuICBGb3IgYSB0YWJsZQorICAgcG9pbnRlciwgdGhlIGxvdyBmb3VyIGJpdHMgb2Ygb3AgaXMgdGhlIG51bWJlciBvZiBpbmRleCBiaXRzIG9mCisgICB0aGF0IHRhYmxlLiAgRm9yIGEgbGVuZ3RoIG9yIGRpc3RhbmNlLCB0aGUgbG93IGZvdXIgYml0cyBvZiBvcAorICAgaXMgdGhlIG51bWJlciBvZiBleHRyYSBiaXRzIHRvIGdldCBhZnRlciB0aGUgY29kZS4gIGJpdHMgaXMKKyAgIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGlzIGNvZGUgb3IgcGFydCBvZiB0aGUgY29kZSB0byBkcm9wIG9mZgorICAgb2YgdGhlIGJpdCBidWZmZXIuICB2YWwgaXMgdGhlIGFjdHVhbCBieXRlIHRvIG91dHB1dCBpbiB0aGUgY2FzZQorICAgb2YgYSBsaXRlcmFsLCB0aGUgYmFzZSBsZW5ndGggb3IgZGlzdGFuY2UsIG9yIHRoZSBvZmZzZXQgZnJvbQorICAgdGhlIGN1cnJlbnQgdGFibGUgdG8gdGhlIG5leHQgdGFibGUuICBFYWNoIGVudHJ5IGlzIGZvdXIgYnl0ZXMuICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdW5zaWduZWQgY2hhciBvcDsgICAgICAgICAgIC8qIG9wZXJhdGlvbiwgZXh0cmEgYml0cywgdGFibGUgYml0cyAqLworICAgIHVuc2lnbmVkIGNoYXIgYml0czsgICAgICAgICAvKiBiaXRzIGluIHRoaXMgcGFydCBvZiB0aGUgY29kZSAqLworICAgIHVuc2lnbmVkIHNob3J0IHZhbDsgICAgICAgICAvKiBvZmZzZXQgaW4gdGFibGUgb3IgY29kZSB2YWx1ZSAqLworfSBjb2RlOwogCi0jaWZuZGVmIF9JTkZUUkVFU19ICi0jZGVmaW5lIF9JTkZUUkVFU19ICisvKiBvcCB2YWx1ZXMgYXMgc2V0IGJ5IGluZmxhdGVfdGFibGUoKToKKyAgICAwMDAwMDAwMCAtIGxpdGVyYWwKKyAgICAwMDAwdHR0dCAtIHRhYmxlIGxpbmssIHR0dHQgIT0gMCBpcyB0aGUgbnVtYmVyIG9mIHRhYmxlIGluZGV4IGJpdHMKKyAgICAwMDAxZWVlZSAtIGxlbmd0aCBvciBkaXN0YW5jZSwgZWVlZSBpcyB0aGUgbnVtYmVyIG9mIGV4dHJhIGJpdHMKKyAgICAwMTEwMDAwMCAtIGVuZCBvZiBibG9jaworICAgIDAxMDAwMDAwIC0gaW52YWxpZCBjb2RlCisgKi8KIAotdHlwZWRlZiBzdHJ1Y3QgaW5mbGF0ZV9odWZ0X3MgRkFSIGluZmxhdGVfaHVmdDsKKy8qIE1heGltdW0gc2l6ZSBvZiB0aGUgZHluYW1pYyB0YWJsZS4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb2RlIHN0cnVjdHVyZXMgaXMKKyAgIDE0NDQsIHdoaWNoIGlzIHRoZSBzdW0gb2YgODUyIGZvciBsaXRlcmFsL2xlbmd0aCBjb2RlcyBhbmQgNTkyIGZvciBkaXN0YW5jZQorICAgY29kZXMuICBUaGVzZSB2YWx1ZXMgd2VyZSBmb3VuZCBieSBleGhhdXN0aXZlIHNlYXJjaGVzIHVzaW5nIHRoZSBwcm9ncmFtCisgICBleGFtcGxlcy9lbm91Z2guYyBmb3VuZCBpbiB0aGUgemxpYiBkaXN0cmlidXRpb24uICBUaGUgYXJndW1lbnRzIHRvIHRoYXQKKyAgIHByb2dyYW0gYXJlIHRoZSBudW1iZXIgb2Ygc3ltYm9scywgdGhlIGluaXRpYWwgcm9vdCB0YWJsZSBzaXplLCBhbmQgdGhlCisgICBtYXhpbXVtIGJpdCBsZW5ndGggb2YgYSBjb2RlLiAgImVub3VnaCAyODYgOSAxNSIgZm9yIGxpdGVyYWwvbGVuZ3RoIGNvZGVzCisgICByZXR1cm5zIHJldHVybnMgODUyLCBhbmQgImVub3VnaCAzMCA2IDE1IiBmb3IgZGlzdGFuY2UgY29kZXMgcmV0dXJucyA1OTIuCisgICBUaGUgaW5pdGlhbCByb290IHRhYmxlIHNpemUgKDkgb3IgNikgaXMgZm91bmQgaW4gdGhlIGZpZnRoIGFyZ3VtZW50IG9mIHRoZQorICAgaW5mbGF0ZV90YWJsZSgpIGNhbGxzIGluIGluZmxhdGUuYyBhbmQgaW5mYmFjay5jLiAgSWYgdGhlIHJvb3QgdGFibGUgc2l6ZSBpcworICAgY2hhbmdlZCwgdGhlbiB0aGVzZSBtYXhpbXVtIHNpemVzIHdvdWxkIGJlIG5lZWQgdG8gYmUgcmVjYWxjdWxhdGVkIGFuZAorICAgdXBkYXRlZC4gKi8KKyNkZWZpbmUgRU5PVUdIX0xFTlMgODUyCisjZGVmaW5lIEVOT1VHSF9ESVNUUyA1OTIKKyNkZWZpbmUgRU5PVUdIIChFTk9VR0hfTEVOUytFTk9VR0hfRElTVFMpCiAKLXN0cnVjdCBpbmZsYXRlX2h1ZnRfcyB7Ci0gIHVuaW9uIHsKLSAgICBzdHJ1Y3QgewotICAgICAgQnl0ZSBFeG9wOyAgICAgICAgLyogbnVtYmVyIG9mIGV4dHJhIGJpdHMgb3Igb3BlcmF0aW9uICovCi0gICAgICBCeXRlIEJpdHM7ICAgICAgICAvKiBudW1iZXIgb2YgYml0cyBpbiB0aGlzIGNvZGUgb3Igc3ViY29kZSAqLwotICAgIH0gd2hhdDsKLSAgICB1SW50IHBhZDsgICAgICAgICAgIC8qIHBhZCBzdHJ1Y3R1cmUgdG8gYSBwb3dlciBvZiAyICg0IGJ5dGVzIGZvciAqLwotICB9IHdvcmQ7ICAgICAgICAgICAgICAgLyogIDE2LWJpdCwgOCBieXRlcyBmb3IgMzItYml0IGludCdzKSAqLwotICB1SW50IGJhc2U7ICAgICAgICAgICAgLyogbGl0ZXJhbCwgbGVuZ3RoIGJhc2UsIGRpc3RhbmNlIGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0YWJsZSBvZmZzZXQgKi8KLX07CisvKiBUeXBlIG9mIGNvZGUgdG8gYnVpbGQgZm9yIGluZmxhdGVfdGFibGUoKSAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBDT0RFUywKKyAgICBMRU5TLAorICAgIERJU1RTCit9IGNvZGV0eXBlOwogCi0vKiBNYXhpbXVtIHNpemUgb2YgZHluYW1pYyB0cmVlLiAgVGhlIG1heGltdW0gZm91bmQgaW4gYSBsb25nIGJ1dCBub24tCi0gICBleGhhdXN0aXZlIHNlYXJjaCB3YXMgMTAwNCBodWZ0IHN0cnVjdHVyZXMgKDg1MCBmb3IgbGVuZ3RoL2xpdGVyYWxzCi0gICBhbmQgMTU0IGZvciBkaXN0YW5jZXMsIHRoZSBsYXR0ZXIgYWN0dWFsbHkgdGhlIHJlc3VsdCBvZiBhbgotICAgZXhoYXVzdGl2ZSBzZWFyY2gpLiAgVGhlIGFjdHVhbCBtYXhpbXVtIGlzIG5vdCBrbm93biwgYnV0IHRoZQotICAgdmFsdWUgYmVsb3cgaXMgbW9yZSB0aGFuIHNhZmUuICovCi0jZGVmaW5lIE1BTlkgMTQ0MAorc3RhdGljIGludCBaTElCX0lOVEVSTkFMIGluZmxhdGVfdGFibGUgT0YoKGNvZGV0eXBlIHR5cGUsIHVuc2lnbmVkIHNob3J0IEZBUiAqbGVucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29kZXMsIGNvZGUgRkFSICogRkFSICp0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgRkFSICpiaXRzLCB1bnNpZ25lZCBzaG9ydCBGQVIgKndvcmspKTsKIAotbG9jYWwgIGludCBpbmZsYXRlX3RyZWVzX2JpdHMgT0YoKAotICAgIHVJbnRmICosICAgICAgICAgICAgICAgICAgICAvKiAxOSBjb2RlIGxlbmd0aHMgKi8KLSAgICB1SW50ZiAqLCAgICAgICAgICAgICAgICAgICAgLyogYml0cyB0cmVlIGRlc2lyZWQvYWN0dWFsIGRlcHRoICovCi0gICAgaW5mbGF0ZV9odWZ0ICogRkFSICosICAgICAgIC8qIGJpdHMgdHJlZSByZXN1bHQgKi8KLSAgICBpbmZsYXRlX2h1ZnQgKiwgICAgICAgICAgICAgLyogc3BhY2UgZm9yIHRyZWVzICovCi0gICAgel9zdHJlYW1wKSk7ICAgICAgICAgICAgICAgIC8qIGZvciBtZXNzYWdlcyAqLwotCi1sb2NhbCAgaW50IGluZmxhdGVfdHJlZXNfZHluYW1pYyBPRigoCi0gICAgdUludCwgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBsaXRlcmFsL2xlbmd0aCBjb2RlcyAqLwotICAgIHVJbnQsICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZGlzdGFuY2UgY29kZXMgKi8KLSAgICB1SW50ZiAqLCAgICAgICAgICAgICAgICAgICAgLyogdGhhdCBtYW55ICh0b3RhbCkgY29kZSBsZW5ndGhzICovCi0gICAgdUludGYgKiwgICAgICAgICAgICAgICAgICAgIC8qIGxpdGVyYWwgZGVzaXJlZC9hY3R1YWwgYml0IGRlcHRoICovCi0gICAgdUludGYgKiwgICAgICAgICAgICAgICAgICAgIC8qIGRpc3RhbmNlIGRlc2lyZWQvYWN0dWFsIGJpdCBkZXB0aCAqLwotICAgIGluZmxhdGVfaHVmdCAqIEZBUiAqLCAgICAgICAvKiBsaXRlcmFsL2xlbmd0aCB0cmVlIHJlc3VsdCAqLwotICAgIGluZmxhdGVfaHVmdCAqIEZBUiAqLCAgICAgICAvKiBkaXN0YW5jZSB0cmVlIHJlc3VsdCAqLwotICAgIGluZmxhdGVfaHVmdCAqLCAgICAgICAgICAgICAvKiBzcGFjZSBmb3IgdHJlZXMgKi8KLSAgICB6X3N0cmVhbXApKTsgICAgICAgICAgICAgICAgLyogZm9yIG1lc3NhZ2VzICovCi0KLWxvY2FsICBpbnQgaW5mbGF0ZV90cmVlc19maXhlZCBPRigoCi0gICAgdUludGYgKiwgICAgICAgICAgICAgICAgICAgIC8qIGxpdGVyYWwgZGVzaXJlZC9hY3R1YWwgYml0IGRlcHRoICovCi0gICAgdUludGYgKiwgICAgICAgICAgICAgICAgICAgIC8qIGRpc3RhbmNlIGRlc2lyZWQvYWN0dWFsIGJpdCBkZXB0aCAqLwotICAgIGNvbnN0IGluZmxhdGVfaHVmdCAqIEZBUiAqLCAvKiBsaXRlcmFsL2xlbmd0aCB0cmVlIHJlc3VsdCAqLwotICAgIGNvbnN0IGluZmxhdGVfaHVmdCAqIEZBUiAqLCAvKiBkaXN0YW5jZSB0cmVlIHJlc3VsdCAqLwotICAgIHpfc3RyZWFtcCkpOyAgICAgICAgICAgICAgICAvKiBmb3IgbWVtb3J5IGFsbG9jYXRpb24gKi8KLQotI2VuZGlmIC8qIF9JTkZUUkVFU19IICovCisjZW5kaWYgIC8qIElORlRSRUVTX0hfICovCmRpZmYgLS1naXQgYS9zcmMvZ3ppcC9pbmZ1dGlsLmMgYi9zcmMvZ3ppcC9pbmZ1dGlsLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwODdiNDAuLjAwMDAwMDAKLS0tIGEvc3JjL2d6aXAvaW5mdXRpbC5jCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyogaW5mbGF0ZV91dGlsLmMgLS0gZGF0YSBhbmQgcm91dGluZXMgY29tbW9uIHRvIGJsb2NrcyBhbmQgY29kZXMKLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDAyIE1hcmsgQWRsZXIKLSAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKLSAqLwotCi0jaW5jbHVkZSAienV0aWwuaCIKLSNpbmNsdWRlICJpbmZibG9jay5oIgotI2luY2x1ZGUgImluZnRyZWVzLmgiCi0jaW5jbHVkZSAiaW5mY29kZXMuaCIKLSNpbmNsdWRlICJpbmZ1dGlsLmgiCi0KLQotLyogQW5kJ2luZyB3aXRoIG1hc2tbbl0gbWFza3MgdGhlIGxvd2VyIG4gYml0cyAqLwotbG9jYWwgY29uc3QgdUludCBpbmZsYXRlX21hc2tbMTddID0gewotICAgIDB4MDAwMCwKLSAgICAweDAwMDEsIDB4MDAwMywgMHgwMDA3LCAweDAwMGYsIDB4MDAxZiwgMHgwMDNmLCAweDAwN2YsIDB4MDBmZiwKLSAgICAweDAxZmYsIDB4MDNmZiwgMHgwN2ZmLCAweDBmZmYsIDB4MWZmZiwgMHgzZmZmLCAweDdmZmYsIDB4ZmZmZgotfTsKLQotCi0vKiBjb3B5IGFzIG11Y2ggYXMgcG9zc2libGUgZnJvbSB0aGUgc2xpZGluZyB3aW5kb3cgdG8gdGhlIG91dHB1dCBhcmVhICovCi1sb2NhbCBpbnQgaW5mbGF0ZV9mbHVzaCggLyogcywgeiwgcikgKi8KLWluZmxhdGVfYmxvY2tzX3N0YXRlZiAqcywKLXpfc3RyZWFtcCB6LAotaW50IHIgKQotewotICB1SW50IG47Ci0gIEJ5dGVmICpwOwotICBCeXRlZiAqcTsKLQotICAvKiBsb2NhbCBjb3BpZXMgb2Ygc291cmNlIGFuZCBkZXN0aW5hdGlvbiBwb2ludGVycyAqLwotICBwID0gei0+bmV4dF9vdXQ7Ci0gIHEgPSBzLT5yZWFkOwotCi0gIC8qIGNvbXB1dGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGNvcHkgYXMgZmFyIGFzIGVuZCBvZiB3aW5kb3cgKi8KLSAgbiA9ICh1SW50KSgocSA8PSBzLT53cml0ZSA/IHMtPndyaXRlIDogcy0+ZW5kKSAtIHEpOwotICBpZiAobiA+IHotPmF2YWlsX291dCkgbiA9IHotPmF2YWlsX291dDsKLSAgaWYgKG4gJiYgciA9PSBaX0JVRl9FUlJPUikgciA9IFpfT0s7Ci0KLSAgLyogdXBkYXRlIGNvdW50ZXJzICovCi0gIHotPmF2YWlsX291dCAtPSBuOwotICB6LT50b3RhbF9vdXQgKz0gbjsKLQotICAvKiB1cGRhdGUgY2hlY2sgaW5mb3JtYXRpb24gKi8KLSAgaWYgKHMtPmNoZWNrZm4gIT0gWl9OVUxMKQotICAgIHotPmFkbGVyID0gcy0+Y2hlY2sgPSAoKnMtPmNoZWNrZm4pKHMtPmNoZWNrLCBxLCBuKTsKLQotICAvKiBjb3B5IGFzIGZhciBhcyBlbmQgb2Ygd2luZG93ICovCi0gIHptZW1jcHkocCwgcSwgbik7Ci0gIHAgKz0gbjsKLSAgcSArPSBuOwotCi0gIC8qIHNlZSBpZiBtb3JlIHRvIGNvcHkgYXQgYmVnaW5uaW5nIG9mIHdpbmRvdyAqLwotICBpZiAocSA9PSBzLT5lbmQpCi0gIHsKLSAgICAvKiB3cmFwIHBvaW50ZXJzICovCi0gICAgcSA9IHMtPndpbmRvdzsKLSAgICBpZiAocy0+d3JpdGUgPT0gcy0+ZW5kKQotICAgICAgcy0+d3JpdGUgPSBzLT53aW5kb3c7Ci0KLSAgICAvKiBjb21wdXRlIGJ5dGVzIHRvIGNvcHkgKi8KLSAgICBuID0gKHVJbnQpKHMtPndyaXRlIC0gcSk7Ci0gICAgaWYgKG4gPiB6LT5hdmFpbF9vdXQpIG4gPSB6LT5hdmFpbF9vdXQ7Ci0gICAgaWYgKG4gJiYgciA9PSBaX0JVRl9FUlJPUikgciA9IFpfT0s7Ci0KLSAgICAvKiB1cGRhdGUgY291bnRlcnMgKi8KLSAgICB6LT5hdmFpbF9vdXQgLT0gbjsKLSAgICB6LT50b3RhbF9vdXQgKz0gbjsKLQotICAgIC8qIHVwZGF0ZSBjaGVjayBpbmZvcm1hdGlvbiAqLwotICAgIGlmIChzLT5jaGVja2ZuICE9IFpfTlVMTCkKLSAgICAgIHotPmFkbGVyID0gcy0+Y2hlY2sgPSAoKnMtPmNoZWNrZm4pKHMtPmNoZWNrLCBxLCBuKTsKLQotICAgIC8qIGNvcHkgKi8KLSAgICB6bWVtY3B5KHAsIHEsIG4pOwotICAgIHAgKz0gbjsKLSAgICBxICs9IG47Ci0gIH0KLQotICAvKiB1cGRhdGUgcG9pbnRlcnMgKi8KLSAgei0+bmV4dF9vdXQgPSBwOwotICBzLT5yZWFkID0gcTsKLQotICAvKiBkb25lICovCi0gIHJldHVybiByOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2d6aXAvaW5mdXRpbC5oIGIvc3JjL2d6aXAvaW5mdXRpbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGYxOGI0Li4wMDAwMDAwCi0tLSBhL3NyYy9nemlwL2luZnV0aWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qIGluZnV0aWwuaCAtLSB0eXBlcyBhbmQgbWFjcm9zIGNvbW1vbiB0byBibG9ja3MgYW5kIGNvZGVzCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMiBNYXJrIEFkbGVyCi0gKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCi0gKi8KLQotLyogV0FSTklORzogdGhpcyBmaWxlIHNob3VsZCAqbm90KiBiZSB1c2VkIGJ5IGFwcGxpY2F0aW9ucy4gSXQgaXMKLSAgIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBjb21wcmVzc2lvbiBsaWJyYXJ5IGFuZCBpcwotICAgc3ViamVjdCB0byBjaGFuZ2UuIEFwcGxpY2F0aW9ucyBzaG91bGQgb25seSB1c2UgemxpYi5oLgotICovCi0KLSNpZm5kZWYgX0lORlVUSUxfSAotI2RlZmluZSBfSU5GVVRJTF9ICi0KLXR5cGVkZWYgZW51bSB7Ci0gICAgICBUWVBFLCAgICAgLyogZ2V0IHR5cGUgYml0cyAoMywgaW5jbHVkaW5nIGVuZCBiaXQpICovCi0gICAgICBMRU5TLCAgICAgLyogZ2V0IGxlbmd0aHMgZm9yIHN0b3JlZCAqLwotICAgICAgU1RPUkVELCAgIC8qIHByb2Nlc3Npbmcgc3RvcmVkIGJsb2NrICovCi0gICAgICBUQUJMRSwgICAgLyogZ2V0IHRhYmxlIGxlbmd0aHMgKi8KLSAgICAgIEJUUkVFLCAgICAvKiBnZXQgYml0IGxlbmd0aHMgdHJlZSBmb3IgYSBkeW5hbWljIGJsb2NrICovCi0gICAgICBEVFJFRSwgICAgLyogZ2V0IGxlbmd0aCwgZGlzdGFuY2UgdHJlZXMgZm9yIGEgZHluYW1pYyBibG9jayAqLwotICAgICAgQ09ERVMsICAgIC8qIHByb2Nlc3NpbmcgZml4ZWQgb3IgZHluYW1pYyBibG9jayAqLwotICAgICAgRFJZLCAgICAgIC8qIG91dHB1dCByZW1haW5pbmcgd2luZG93IGJ5dGVzICovCi0gICAgICBET05FLCAgICAgLyogZmluaXNoZWQgbGFzdCBibG9jaywgZG9uZSAqLwotICAgICAgQkFEfSAgICAgIC8qIGdvdCBhIGRhdGEgZXJyb3ItLXN0dWNrIGhlcmUgKi8KLWluZmxhdGVfYmxvY2tfbW9kZTsKLQotLyogaW5mbGF0ZSBibG9ja3Mgc2VtaS1wcml2YXRlIHN0YXRlICovCi1zdHJ1Y3QgaW5mbGF0ZV9ibG9ja3Nfc3RhdGUgewotCi0gIC8qIG1vZGUgKi8KLSAgaW5mbGF0ZV9ibG9ja19tb2RlICBtb2RlOyAgICAgLyogY3VycmVudCBpbmZsYXRlX2Jsb2NrIG1vZGUgKi8KLQotICAvKiBtb2RlIGRlcGVuZGVudCBpbmZvcm1hdGlvbiAqLwotICB1bmlvbiB7Ci0gICAgdUludCBsZWZ0OyAgICAgICAgICAvKiBpZiBTVE9SRUQsIGJ5dGVzIGxlZnQgdG8gY29weSAqLwotICAgIHN0cnVjdCB7Ci0gICAgICB1SW50IHRhYmxlOyAgICAgICAgICAgICAgIC8qIHRhYmxlIGxlbmd0aHMgKDE0IGJpdHMpICovCi0gICAgICB1SW50IGluZGV4OyAgICAgICAgICAgICAgIC8qIGluZGV4IGludG8gYmxlbnMgKG9yIGJvcmRlcikgKi8KLSAgICAgIHVJbnRmICpibGVuczsgICAgICAgICAgICAgLyogYml0IGxlbmd0aHMgb2YgY29kZXMgKi8KLSAgICAgIHVJbnQgYmI7ICAgICAgICAgICAgICAgICAgLyogYml0IGxlbmd0aCB0cmVlIGRlcHRoICovCi0gICAgICBpbmZsYXRlX2h1ZnQgKnRiOyAgICAgICAgIC8qIGJpdCBsZW5ndGggZGVjb2RpbmcgdHJlZSAqLwotICAgIH0gdHJlZXM7ICAgICAgICAgICAgLyogaWYgRFRSRUUsIGRlY29kaW5nIGluZm8gZm9yIHRyZWVzICovCi0gICAgc3RydWN0IHsKLSAgICAgIGluZmxhdGVfY29kZXNfc3RhdGVmCi0gICAgICAgICAqY29kZXM7Ci0gICAgfSBkZWNvZGU7ICAgICAgICAgICAvKiBpZiBDT0RFUywgY3VycmVudCBzdGF0ZSAqLwotICB9IHN1YjsgICAgICAgICAgICAgICAgLyogc3VibW9kZSAqLwotICB1SW50IGxhc3Q7ICAgICAgICAgICAgLyogdHJ1ZSBpZiB0aGlzIGJsb2NrIGlzIHRoZSBsYXN0IGJsb2NrICovCi0KLSAgLyogbW9kZSBpbmRlcGVuZGVudCBpbmZvcm1hdGlvbiAqLwotICB1SW50IGJpdGs7ICAgICAgICAgICAgLyogYml0cyBpbiBiaXQgYnVmZmVyICovCi0gIHVMb25nIGJpdGI7ICAgICAgICAgICAvKiBiaXQgYnVmZmVyICovCi0gIGluZmxhdGVfaHVmdCAqaHVmdHM7ICAvKiBzaW5nbGUgbWFsbG9jIGZvciB0cmVlIHNwYWNlICovCi0gIEJ5dGVmICp3aW5kb3c7ICAgICAgICAvKiBzbGlkaW5nIHdpbmRvdyAqLwotICBCeXRlZiAqZW5kOyAgICAgICAgICAgLyogb25lIGJ5dGUgYWZ0ZXIgc2xpZGluZyB3aW5kb3cgKi8KLSAgQnl0ZWYgKnJlYWQ7ICAgICAgICAgIC8qIHdpbmRvdyByZWFkIHBvaW50ZXIgKi8KLSAgQnl0ZWYgKndyaXRlOyAgICAgICAgIC8qIHdpbmRvdyB3cml0ZSBwb2ludGVyICovCi0gIGNoZWNrX2Z1bmMgY2hlY2tmbjsgICAvKiBjaGVjayBmdW5jdGlvbiAqLwotICB1TG9uZyBjaGVjazsgICAgICAgICAgLyogY2hlY2sgb24gb3V0cHV0ICovCi0KLX07Ci0KLQotLyogZGVmaW5lcyBmb3IgaW5mbGF0ZSBpbnB1dC9vdXRwdXQgKi8KLS8qICAgdXBkYXRlIHBvaW50ZXJzIGFuZCByZXR1cm4gKi8KLSNkZWZpbmUgVVBEQklUUyB7cy0+Yml0Yj1iO3MtPmJpdGs9azt9Ci0jZGVmaW5lIFVQRElOIHt6LT5hdmFpbF9pbj1uO3otPnRvdGFsX2luKz1wLXotPm5leHRfaW47ei0+bmV4dF9pbj1wO30KLSNkZWZpbmUgVVBET1VUIHtzLT53cml0ZT1xO30KLSNkZWZpbmUgVVBEQVRFIHtVUERCSVRTIFVQRElOIFVQRE9VVH0KLSNkZWZpbmUgTEVBVkUge1VQREFURSByZXR1cm4gaW5mbGF0ZV9mbHVzaChzLHoscik7fQotLyogICBnZXQgYnl0ZXMgYW5kIGJpdHMgKi8KLSNkZWZpbmUgTE9BRElOIHtwPXotPm5leHRfaW47bj16LT5hdmFpbF9pbjtiPXMtPmJpdGI7az1zLT5iaXRrO30KLSNkZWZpbmUgTkVFREJZVEUge2lmKG4pcj1aX09LO2Vsc2UgTEVBVkV9Ci0jZGVmaW5lIE5FWFRCWVRFIChuLS0sKnArKykKLSNkZWZpbmUgTkVFREJJVFMoaikge3doaWxlKGs8KGopKXtORUVEQllURTtifD0oKHVMb25nKU5FWFRCWVRFKTw8aztrKz04O319Ci0jZGVmaW5lIERVTVBCSVRTKGopIHtiPj49KGopO2stPShqKTt9Ci0vKiAgIG91dHB1dCBieXRlcyAqLwotI2RlZmluZSBXQVZBSUwgKHVJbnQpKHE8cy0+cmVhZD9zLT5yZWFkLXEtMTpzLT5lbmQtcSkKLSNkZWZpbmUgTE9BRE9VVCB7cT1zLT53cml0ZTttPSh1SW50KVdBVkFJTDt9Ci0jZGVmaW5lIFdSQVAge2lmKHE9PXMtPmVuZCYmcy0+cmVhZCE9cy0+d2luZG93KXtxPXMtPndpbmRvdzttPSh1SW50KVdBVkFJTDt9fQotI2RlZmluZSBGTFVTSCB7VVBET1VUIHI9aW5mbGF0ZV9mbHVzaChzLHoscik7IExPQURPVVR9Ci0jZGVmaW5lIE5FRURPVVQge2lmKG09PTApe1dSQVAgaWYobT09MCl7RkxVU0ggV1JBUCBpZihtPT0wKSBMRUFWRX19cj1aX09LO30KLSNkZWZpbmUgT1VUQllURShhKSB7KnErKz0oQnl0ZSkoYSk7bS0tO30KLS8qICAgbG9hZCBsb2NhbCBwb2ludGVycyAqLwotI2RlZmluZSBMT0FEIHtMT0FESU4gTE9BRE9VVH0KLQotLyogbWFza3MgZm9yIGxvd2VyIGJpdHMgKHNpemUgZ2l2ZW4gdG8gYXZvaWQgc2lsbHkgd2FybmluZ3Mgd2l0aCBWaXN1YWwgQysrKSAqLwotI2lmbmRlZiBOT19JTkZMQVRFX01BU0sKLWxvY2FsIGNvbnN0IHVJbnQgaW5mbGF0ZV9tYXNrWzE3XTsKLSNlbmRpZgotCi0vKiBjb3B5IGFzIG11Y2ggYXMgcG9zc2libGUgZnJvbSB0aGUgc2xpZGluZyB3aW5kb3cgdG8gdGhlIG91dHB1dCBhcmVhICovCi1sb2NhbCBpbnQgaW5mbGF0ZV9mbHVzaCBPRigoCi0gICAgaW5mbGF0ZV9ibG9ja3Nfc3RhdGVmICosCi0gICAgel9zdHJlYW1wICwKLSAgICBpbnQpKTsKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvZ3ppcC9wYXRjaGVzL2ZyZWV0eXBlLXpsaWIuZGlmZiBiL3NyYy9nemlwL3BhdGNoZXMvZnJlZXR5cGUtemxpYi5kaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhYzc2ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvZ3ppcC9wYXRjaGVzL2ZyZWV0eXBlLXpsaWIuZGlmZgpAQCAtMCwwICsxLDQ2OSBAQAorW3psaWJdIEZpeCB6bGliIHNvdXJjZXMgZm9yIGNvbXBpbGF0aW9uIHdpdGggRnJlZVR5cGUKKworV2UgbXVzdCBlbnN1cmUgdGhhdCB0aGV5IGRvIG5vdCBpc3N1ZSBjb21waWxlciBlcnJvcnMgb3Igd2FybmluZ3Mgd2hlbiB0aGV5CithcmUgY29tcGlsZWQgYXMgcGFydCBvZiBgc3JjL2d6aXAvZnRnemlwLmNgLgorCisqIHNyYy9nemlwL2d6Z3V0cy5oIChDT1BZKTogUmVuYW1lIHRvLi4uCisoQ09QWV9fKTogLi4uIHRoaXMgc2luY2UgYENPUFlgIGFuZCBgQ09QWV9gIGNvbmZsaWN0IHdpdGggZW51bSB2YWx1ZXMsCit3aGljaCBoYXZlIHRoZSBzYW1lIG5hbWUgaW4gYHpsaWIuaGAuCisKKyogc3JjL2d6aXAvaW5mbGF0ZS5jLCBzcmMvZ3ppcC9hZGxlcjMyLmMsIHNyYy9nemlwL2NyYzMyLmMsCitzcmMvZ3ppcC96dXRpbC5jOiBPbWl0IHVudXNlZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgYW5kIGRlZmluaXRpb25zIHdoZW4KK2BaX0ZSRUVUWVBFYCBpcyBkZWZpbmVkLgorCisqIHNyYy9nemlwL2luZmZhc3QuaCAoaW5mbGF0ZV9mYXN0KTogRGVjbGFyZSBhcyBzdGF0aWMuCisKKyogc3JjL2d6aXAvaW5mdHJlZXMuYyAoaW5mbGF0ZV9jb3B5cmlnaHQpOiBEZWNsYXJlIGFzIHN0YXRpYy4KKworKiBzcmMvZ3ppcC96bGliLmg6IEluY2x1ZGUgYGZ0emNvbmYuaGAgaW5zdGVhZCBvZiBgemNvbmYuaGAgdG8gYXZvaWQKK2NvbmZsaWN0cyB3aXRoIHN5c3RlbS1pbnN0YWxsZWQgaGVhZGVycy4KK09taXQgdW51c2VkIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyB3aGVuIGBaX0ZSRUVUWVBFYCBpcyBkZWZpbmVkLgorKGluZmxhdGVJbml0MilbWl9GUkVFVFlQRV06IFByb3ZpZGUgcHJvcGVyIGRlY2xhcmF0aW9uLgorCisqIHNyYy9nemlwL3p1dGlsLmg6IFVzZSBgZnRfbWVteHh4YCBmdW5jdGlvbnMgaW5zdGVhZCBvZiBgbWVteHh4YC4KK09taXQgdW51c2VkIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyB3aGVuIGBaX0ZSRUVUWVBFYCBpcyBkZWZpbmVkLgorCisqIHNyYy9nemlwL2luZmxhdGUuaCwgc3JjL2d6aXAvaW5mdHJlZXMuaDogQWRkIGhlYWRlciBndWFyZCBtYWNyb3MgdG8KK3ByZXZlbnQgY29tcGlsZXIgZXJyb3JzLgorCisqIHNyYy9nemlwL2luZnRyZWVzLmg6IEFkZCBoZWFkZXIgZ3VhcmQgbWFjcm9zIHRvIHByZXZlbnQgY29tcGlsZXIgZXJyb3JzLgorKGluZmxhdGVfdGFibGUpOiBEZWNsYXJlIGFzIHN0YXRpYy4KKworZGlmZiAtLWdpdCBiL3NyYy9nemlwL2FkbGVyMzIuYyBhL3NyYy9nemlwL2FkbGVyMzIuYworaW5kZXggYmU1ZThhMjQ3Li5hYTAzMmUxZGQgMTAwNjQ0CistLS0gYi9zcmMvZ3ppcC9hZGxlcjMyLmMKKysrKyBhL3NyYy9nemlwL2FkbGVyMzIuYworQEAgLTcsNyArNyw5IEBACisgCisgI2luY2x1ZGUgInp1dGlsLmgiCisgCisrI2lmbmRlZiBaX0ZSRUVUWVBFCisgbG9jYWwgdUxvbmcgYWRsZXIzMl9jb21iaW5lXyBPRigodUxvbmcgYWRsZXIxLCB1TG9uZyBhZGxlcjIsIHpfb2ZmNjRfdCBsZW4yKSk7CisrI2VuZGlmCisgCisgI2RlZmluZSBCQVNFIDY1NTIxVSAgICAgLyogbGFyZ2VzdCBwcmltZSBzbWFsbGVyIHRoYW4gNjU1MzYgKi8KKyAjZGVmaW5lIE5NQVggNTU1MgorQEAgLTEzOSw2ICsxNDEsOCBAQCB1TG9uZyBaRVhQT1JUIGFkbGVyMzIoCisgICAgIHJldHVybiBhZGxlcjMyX3ooYWRsZXIsIGJ1ZiwgbGVuKTsKKyB9CisgCisrI2lmbmRlZiBaX0ZSRUVUWVBFCisrCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworIGxvY2FsIHVMb25nIGFkbGVyMzJfY29tYmluZV8oCisgICAgIHVMb25nIGFkbGVyMSwKK0BAIC0xODQsMyArMTg4LDUgQEAgdUxvbmcgWkVYUE9SVCBhZGxlcjMyX2NvbWJpbmU2NCgKKyB7CisgICAgIHJldHVybiBhZGxlcjMyX2NvbWJpbmVfKGFkbGVyMSwgYWRsZXIyLCBsZW4yKTsKKyB9CisrCisrI2VuZGlmICAvKiAhWl9GUkVFVFlQRSAqLworZGlmZiAtLWdpdCBiL3NyYy9nemlwL2NyYzMyLmMgYS9zcmMvZ3ppcC9jcmMzMi5jCitpbmRleCAzYTUyYWE4OWQuLjZjZDFiMDlkNSAxMDA2NDQKKy0tLSBiL3NyYy9nemlwL2NyYzMyLmMKKysrKyBhL3NyYy9nemlwL2NyYzMyLmMKK0BAIC0xMDMsOSArMTAzLDExIEBACisgIyAgZGVmaW5lIEFSTUNSQzMyCisgI2VuZGlmCisgCisrI2lmbmRlZiBaX0ZSRUVUWVBFCisgLyogTG9jYWwgZnVuY3Rpb25zLiAqLworIGxvY2FsIHpfY3JjX3QgbXVsdG1vZHAgT0YoKHpfY3JjX3QgYSwgel9jcmNfdCBiKSk7CisgbG9jYWwgel9jcmNfdCB4Mm5tb2RwIE9GKCh6X29mZjY0X3QgbiwgdW5zaWduZWQgaykpOworKyNlbmRpZiAgLyogWl9GUkVFVFlQRSAqLworIAorICNpZiBkZWZpbmVkKFcpICYmICghZGVmaW5lZChBUk1DUkMzMikgfHwgZGVmaW5lZChEWU5BTUlDX0NSQ19UQUJMRSkpCisgICAgIGxvY2FsIHpfd29yZF90IGJ5dGVfc3dhcCBPRigoel93b3JkX3Qgd29yZCkpOworQEAgLTU0NCw2ICs1NDYsOCBAQCBsb2NhbCB2b2lkIGJyYWlkKGx0bCwgYmlnLCBuLCB3KQorICAqIGdlbmVyYXRpb24gYWJvdmUuCisgICovCisgCisrI2lmbmRlZiBaX0ZSRUVUWVBFCisrCisgLyoKKyAgIFJldHVybiBhKHgpIG11bHRpcGxpZWQgYnkgYih4KSBtb2R1bG8gcCh4KSwgd2hlcmUgcCh4KSBpcyB0aGUgQ1JDIHBvbHlub21pYWwsCisgICByZWZsZWN0ZWQuIEZvciBzcGVlZCwgdGhpcyByZXF1aXJlcyB0aGF0IGEgbm90IGJlIHplcm8uCitAQCAtNjAwLDYgKzYwNCw4IEBAIGNvbnN0IHpfY3JjX3QgRkFSICogWkVYUE9SVCBnZXRfY3JjX3RhYmxlKCkKKyAgICAgcmV0dXJuIChjb25zdCB6X2NyY190IEZBUiAqKWNyY190YWJsZTsKKyB9CisgCisrI2VuZGlmICAvKiBaX0ZSRUVUWVBFICovCisrCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAqIFVzZSBBUk0gbWFjaGluZSBpbnN0cnVjdGlvbnMgaWYgYXZhaWxhYmxlLiBUaGlzIHdpbGwgY29tcHV0ZSB0aGUgQ1JDIGFib3V0CisgICogdGVuIHRpbWVzIGZhc3RlciB0aGFuIHRoZSBicmFpZGVkIGNhbGN1bGF0aW9uLiBUaGlzIGNvZGUgZG9lcyBub3QgY2hlY2sgZm9yCitAQCAtMTA3Nyw2ICsxMDgzLDggQEAgdW5zaWduZWQgbG9uZyBaRVhQT1JUIGNyYzMyKAorICAgICByZXR1cm4gY3JjMzJfeihjcmMsIGJ1ZiwgbGVuKTsKKyB9CisgCisrI2lmbmRlZiBaX0ZSRUVUWVBFCisrCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworIHVMb25nIFpFWFBPUlQgY3JjMzJfY29tYmluZTY0KAorICAgICB1TG9uZyBjcmMxLAorQEAgLTExMjMsMyArMTEzMSw1IEBAIHVMb25nIFpFWFBPUlQgY3JjMzJfY29tYmluZV9vcCgKKyB7CisgICAgIHJldHVybiBtdWx0bW9kcChvcCwgY3JjMSkgXiAoY3JjMiAmIDB4ZmZmZmZmZmYpOworIH0KKysKKysjZW5kaWYgIC8qIFpfRlJFRVRZUEUgKi8KK2RpZmYgLS1naXQgYi9zcmMvZ3ppcC9nemd1dHMuaCBhL3NyYy9nemlwL2d6Z3V0cy5oCitpbmRleCA1N2ZhZjM3MTYuLjRmMDlhNTJhNyAxMDA2NDQKKy0tLSBiL3NyYy9nemlwL2d6Z3V0cy5oCisrKysgYS9zcmMvZ3ppcC9nemd1dHMuaAorQEAgLTE2Myw3ICsxNjMsNyBAQAorIAorIC8qIHZhbHVlcyBmb3IgZ3pfc3RhdGUgaG93ICovCisgI2RlZmluZSBMT09LIDAgICAgICAvKiBsb29rIGZvciBhIGd6aXAgaGVhZGVyICovCistI2RlZmluZSBDT1BZIDEgICAgICAvKiBjb3B5IGlucHV0IGRpcmVjdGx5ICovCisrI2RlZmluZSBDT1BZX18gMSAgICAvKiBjb3B5IGlucHV0IGRpcmVjdGx5ICovCisgI2RlZmluZSBHWklQIDIgICAgICAvKiBkZWNvbXByZXNzIGEgZ3ppcCBzdHJlYW0gKi8KKyAKKyAvKiBpbnRlcm5hbCBnemlwIGZpbGUgc3RhdGUgZGF0YSBzdHJ1Y3R1cmUgKi8KK2RpZmYgLS1naXQgYi9zcmMvZ3ppcC9pbmZmYXN0LmggYS9zcmMvZ3ppcC9pbmZmYXN0LmgKK2luZGV4IGU1YzFhYTRjYS4uNjg0YWU4NzhjIDEwMDY0NAorLS0tIGIvc3JjL2d6aXAvaW5mZmFzdC5oCisrKysgYS9zcmMvZ3ppcC9pbmZmYXN0LmgKK0BAIC04LDQgKzgsNCBAQAorICAgIHN1YmplY3QgdG8gY2hhbmdlLiBBcHBsaWNhdGlvbnMgc2hvdWxkIG9ubHkgdXNlIHpsaWIuaC4KKyAgKi8KKyAKKy12b2lkIFpMSUJfSU5URVJOQUwgaW5mbGF0ZV9mYXN0IE9GKCh6X3N0cmVhbXAgc3RybSwgdW5zaWduZWQgc3RhcnQpKTsKKytzdGF0aWMgdm9pZCBaTElCX0lOVEVSTkFMIGluZmxhdGVfZmFzdCBPRigoel9zdHJlYW1wIHN0cm0sIHVuc2lnbmVkIHN0YXJ0KSk7CitkaWZmIC0tZ2l0IGIvc3JjL2d6aXAvaW5mbGF0ZS5jIGEvc3JjL2d6aXAvaW5mbGF0ZS5jCitpbmRleCBjOWU1NjZiMDMuLjUxMTdlMmUyNiAxMDA2NDQKKy0tLSBiL3NyYy9nemlwL2luZmxhdGUuYworKysrIGEvc3JjL2d6aXAvaW5mbGF0ZS5jCitAQCAtOTksOCArOTksMTAgQEAgbG9jYWwgaW50IHVwZGF0ZXdpbmRvdyBPRigoel9zdHJlYW1wIHN0cm0sIGNvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICplbmQsCisgI2lmZGVmIEJVSUxERklYRUQKKyAgICB2b2lkIG1ha2VmaXhlZCBPRigodm9pZCkpOworICNlbmRpZgorKyNpZm5kZWYgWl9GUkVFVFlQRQorIGxvY2FsIHVuc2lnbmVkIHN5bmNzZWFyY2ggT0YoKHVuc2lnbmVkIEZBUiAqaGF2ZSwgY29uc3QgdW5zaWduZWQgY2hhciBGQVIgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW4pKTsKKysjZW5kaWYKKyAKKyBsb2NhbCBpbnQgaW5mbGF0ZVN0YXRlQ2hlY2soCisgICAgIHpfc3RyZWFtcCBzdHJtKQorQEAgLTIzOSw2ICsyNDEsOCBAQCBpbnQgWkVYUE9SVCBpbmZsYXRlSW5pdDJfKAorICAgICByZXR1cm4gcmV0OworIH0KKyAKKysjaWZuZGVmIFpfRlJFRVRZUEUKKysKKyBpbnQgWkVYUE9SVCBpbmZsYXRlSW5pdF8oCisgICAgIHpfc3RyZWFtcCBzdHJtLAorICAgICBjb25zdCBjaGFyICp2ZXJzaW9uLAorQEAgLTI2OCw2ICsyNzIsOCBAQCBpbnQgWkVYUE9SVCBpbmZsYXRlUHJpbWUoCisgICAgIHJldHVybiBaX09LOworIH0KKyAKKysjZW5kaWYgIC8qICFaX0ZSRUVUWVBFICovCisrCisgLyoKKyAgICBSZXR1cm4gc3RhdGUgd2l0aCBsZW5ndGggYW5kIGRpc3RhbmNlIGRlY29kaW5nIHRhYmxlcyBhbmQgaW5kZXggc2l6ZXMgc2V0IHRvCisgICAgZml4ZWQgY29kZSBkZWNvZGluZy4gIE5vcm1hbGx5IHRoaXMgcmV0dXJucyBmaXhlZCB0YWJsZXMgZnJvbSBpbmZmaXhlZC5oLgorQEAgLTEzMTUsNiArMTMyMSw4IEBAIGludCBaRVhQT1JUIGluZmxhdGVFbmQoCisgICAgIHJldHVybiBaX09LOworIH0KKyAKKysjaWZuZGVmIFpfRlJFRVRZUEUKKysKKyBpbnQgWkVYUE9SVCBpbmZsYXRlR2V0RGljdGlvbmFyeSgKKyAgICAgel9zdHJlYW1wIHN0cm0sCisgICAgIEJ5dGVmICpkaWN0aW9uYXJ5LAorQEAgLTE1OTMsMyArMTYwMSw1IEBAIHVuc2lnbmVkIGxvbmcgWkVYUE9SVCBpbmZsYXRlQ29kZXNVc2VkKAorICAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKyAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nKShzdGF0ZS0+bmV4dCAtIHN0YXRlLT5jb2Rlcyk7CisgfQorKworKyNlbmRpZiAgLyogIVpfRlJFRVRZUEUgKi8KK2RpZmYgLS1naXQgYi9zcmMvZ3ppcC9pbmZsYXRlLmggYS9zcmMvZ3ppcC9pbmZsYXRlLmgKK2luZGV4IGYxMjdiNmIxZi4uYzZmNWE1MmUxIDEwMDY0NAorLS0tIGIvc3JjL2d6aXAvaW5mbGF0ZS5oCisrKysgYS9zcmMvZ3ppcC9pbmZsYXRlLmgKK0BAIC0zLDYgKzMsOSBAQAorICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKKyAgKi8KKyAKKysjaWZuZGVmIElORkxBVEVfSAorKyNkZWZpbmUgSU5GTEFURV9ICisrCisgLyogV0FSTklORzogdGhpcyBmaWxlIHNob3VsZCAqbm90KiBiZSB1c2VkIGJ5IGFwcGxpY2F0aW9ucy4gSXQgaXMKKyAgICBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY29tcHJlc3Npb24gbGlicmFyeSBhbmQgaXMKKyAgICBzdWJqZWN0IHRvIGNoYW5nZS4gQXBwbGljYXRpb25zIHNob3VsZCBvbmx5IHVzZSB6bGliLmguCitAQCAtMTI0LDMgKzEyNyw1IEBAIHN0cnVjdCBpbmZsYXRlX3N0YXRlIHsKKyAgICAgaW50IGJhY2s7ICAgICAgICAgICAgICAgICAgIC8qIGJpdHMgYmFjayBvZiBsYXN0IHVucHJvY2Vzc2VkIGxlbmd0aC9saXQgKi8KKyAgICAgdW5zaWduZWQgd2FzOyAgICAgICAgICAgICAgIC8qIGluaXRpYWwgbGVuZ3RoIG9mIG1hdGNoICovCisgfTsKKysKKysjZW5kaWYgIC8qIElORkxBVEVfSCAqLworZGlmZiAtLWdpdCBiL3NyYy9nemlwL2luZnRyZWVzLmMgYS9zcmMvZ3ppcC9pbmZ0cmVlcy5jCitpbmRleCBkODQwNWEyNGMuLmRkNDk2NWU5YSAxMDA2NDQKKy0tLSBiL3NyYy9nemlwL2luZnRyZWVzLmMKKysrKyBhL3NyYy9nemlwL2luZnRyZWVzLmMKK0BAIC04LDcgKzgsNyBAQAorIAorICNkZWZpbmUgTUFYQklUUyAxNQorIAorLWNvbnN0IGNoYXIgaW5mbGF0ZV9jb3B5cmlnaHRbXSA9Cisrc3RhdGljIGNvbnN0IGNoYXIgaW5mbGF0ZV9jb3B5cmlnaHRbXSA9CisgICAgIiBpbmZsYXRlIDEuMi4xMyBDb3B5cmlnaHQgMTk5NS0yMDIyIE1hcmsgQWRsZXIgIjsKKyAvKgorICAgSWYgeW91IHVzZSB0aGUgemxpYiBsaWJyYXJ5IGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaXMgd2VsY29tZQorZGlmZiAtLWdpdCBiL3NyYy9nemlwL2luZnRyZWVzLmggYS9zcmMvZ3ppcC9pbmZ0cmVlcy5oCitpbmRleCBmNTM2NjUzMTEuLmEyMjA3ZWZiMSAxMDA2NDQKKy0tLSBiL3NyYy9nemlwL2luZnRyZWVzLmgKKysrKyBhL3NyYy9nemlwL2luZnRyZWVzLmgKK0BAIC0zLDYgKzMsOSBAQAorICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKKyAgKi8KKyAKKysjaWZuZGVmIElORlRSRUVTX0gKKysjZGVmaW5lIElORlRSRUVTX0gKKysKKyAvKiBXQVJOSU5HOiB0aGlzIGZpbGUgc2hvdWxkICpub3QqIGJlIHVzZWQgYnkgYXBwbGljYXRpb25zLiBJdCBpcworICAgIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBjb21wcmVzc2lvbiBsaWJyYXJ5IGFuZCBpcworICAgIHN1YmplY3QgdG8gY2hhbmdlLiBBcHBsaWNhdGlvbnMgc2hvdWxkIG9ubHkgdXNlIHpsaWIuaC4KK0BAIC01Nyw2ICs2MCw4IEBAIHR5cGVkZWYgZW51bSB7CisgICAgIERJU1RTCisgfSBjb2RldHlwZTsKKyAKKy1pbnQgWkxJQl9JTlRFUk5BTCBpbmZsYXRlX3RhYmxlIE9GKChjb2RldHlwZSB0eXBlLCB1bnNpZ25lZCBzaG9ydCBGQVIgKmxlbnMsCisrc3RhdGljIGludCBaTElCX0lOVEVSTkFMIGluZmxhdGVfdGFibGUgT0YoKGNvZGV0eXBlIHR5cGUsIHVuc2lnbmVkIHNob3J0IEZBUiAqbGVucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvZGVzLCBjb2RlIEZBUiAqIEZBUiAqdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBGQVIgKmJpdHMsIHVuc2lnbmVkIHNob3J0IEZBUiAqd29yaykpOworKworKyNlbmRpZiAgLyogSU5GVFJFRVNfSF8gKi8KK2RpZmYgLS1naXQgYi9zcmMvZ3ppcC96bGliLmggYS9zcmMvZ3ppcC96bGliLmgKK2luZGV4IDk1M2NiNTAxMi4uM2YyZjc2ZTNjIDEwMDY0NAorLS0tIGIvc3JjL2d6aXAvemxpYi5oCisrKysgYS9zcmMvZ3ppcC96bGliLmgKK0BAIC0zMSw3ICszMSw3IEBACisgI2lmbmRlZiBaTElCX0gKKyAjZGVmaW5lIFpMSUJfSAorIAorLSNpbmNsdWRlICJ6Y29uZi5oIgorKyNpbmNsdWRlICJmdHpjb25mLmgiCisgCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CitAQCAtMjExLDYgKzIxMSw4IEBAIHR5cGVkZWYgZ3pfaGVhZGVyIEZBUiAqZ3pfaGVhZGVycDsKKyAKKyAjZGVmaW5lIFpfTlVMTCAgMCAgLyogZm9yIGluaXRpYWxpemluZyB6YWxsb2MsIHpmcmVlLCBvcGFxdWUgKi8KKyAKKysjaWZuZGVmIFpfRlJFRVRZUEUKKysKKyAjZGVmaW5lIHpsaWJfdmVyc2lvbiB6bGliVmVyc2lvbigpCisgLyogZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB2ZXJzaW9ucyA8IDEuMC4yICovCisgCitAQCAtMzczLDYgKzM3NSw3IEBAIFpFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZUVuZCBPRigoel9zdHJlYW1wIHN0cm0pKTsKKyAgICBkZWFsbG9jYXRlZCkuCisgKi8KKyAKKysjZW5kaWYgIC8qICFaX0ZSRUVUWVBFICovCisgCisgLyoKKyBaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVJbml0IE9GKCh6X3N0cmVhbXAgc3RybSkpOworQEAgLTUzNCw2ICs1MzcsOCBAQCBaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVFbmQgT0YoKHpfc3RyZWFtcCBzdHJtKSk7CisgICAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBuZWVkZWQgb25seSBpbiBzb21lIHNwZWNpYWwgYXBwbGljYXRpb25zLgorICovCisgCisrI2lmbmRlZiBaX0ZSRUVUWVBFCisrCisgLyoKKyBaRVhURVJOIGludCBaRVhQT1JUIGRlZmxhdGVJbml0MiBPRigoel9zdHJlYW1wIHN0cm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgbGV2ZWwsCitAQCAtOTU2LDYgKzk2MSw4IEBAIFpFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUNvcHkgT0YoKHpfc3RyZWFtcCBkZXN0LAorICAgIGRlc3RpbmF0aW9uLgorICovCisgCisrI2VuZGlmICAvKiAhWl9GUkVFVFlQRSAqLworKworIFpFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZVJlc2V0IE9GKCh6X3N0cmVhbXAgc3RybSkpOworIC8qCisgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gaW5mbGF0ZUVuZCBmb2xsb3dlZCBieSBpbmZsYXRlSW5pdCwKK0BAIC05ODAsNiArOTg3LDggQEAgWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlUmVzZXQyIE9GKCh6X3N0cmVhbXAgc3RybSwKKyAgICB0aGUgd2luZG93Qml0cyBwYXJhbWV0ZXIgaXMgaW52YWxpZC4KKyAqLworIAorKyNpZm5kZWYgWl9GUkVFVFlQRQorKworIFpFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZVByaW1lIE9GKCh6X3N0cmVhbXAgc3RybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSkpOworQEAgLTEwNjksNiArMTA3OCw4IEBAIFpFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUdldEhlYWRlciBPRigoel9zdHJlYW1wIHN0cm0sCisgICAgc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQuCisgKi8KKyAKKysjZW5kaWYgIC8qICFaX0ZSRUVUWVBFICovCisrCisgLyoKKyBaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVCYWNrSW5pdCBPRigoel9zdHJlYW1wIHN0cm0sIGludCB3aW5kb3dCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEZBUiAqd2luZG93KSk7CitAQCAtMTA5NSw2ICsxMTA2LDggQEAgdHlwZWRlZiB1bnNpZ25lZCAoKmluX2Z1bmMpIE9GKCh2b2lkIEZBUiAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgel9jb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqIEZBUiAqKSk7CisgdHlwZWRlZiBpbnQgKCpvdXRfZnVuYykgT0YoKHZvaWQgRkFSICosIHVuc2lnbmVkIGNoYXIgRkFSICosIHVuc2lnbmVkKSk7CisgCisrI2lmbmRlZiBaX0ZSRUVUWVBFCisrCisgWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlQmFjayBPRigoel9zdHJlYW1wIHN0cm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fZnVuYyBpbiwgdm9pZCBGQVIgKmluX2Rlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X2Z1bmMgb3V0LCB2b2lkIEZBUiAqb3V0X2Rlc2MpKTsKK0BAIC0xMjE0LDYgKzEyMjcsOCBAQCBaRVhURVJOIHVMb25nIFpFWFBPUlQgemxpYkNvbXBpbGVGbGFncyBPRigodm9pZCkpOworICAgICAgMjctMzE6IDAgKHJlc2VydmVkKQorICAqLworIAorKyNlbmRpZiAgLyogIVpfRlJFRVRZUEUgKi8KKysKKyAjaWZuZGVmIFpfU09MTworIAorICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHV0aWxpdHkgZnVuY3Rpb25zICovCitAQCAtMTc2NSw2ICsxNzgwLDggQEAgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGNyYzMyX2NvbWJpbmVfZ2VuIE9GKCh6X29mZl90IGxlbjIpKTsKKyAgICBjcmMzMl9jb21iaW5lX29wKCkuCisgKi8KKyAKKysjaWZuZGVmIFpfRlJFRVRZUEUKKysKKyBaRVhURVJOIHVMb25nIFpFWFBPUlQgY3JjMzJfY29tYmluZV9vcCBPRigodUxvbmcgY3JjMSwgdUxvbmcgY3JjMiwgdUxvbmcgb3ApKTsKKyAvKgorICAgICAgR2l2ZSB0aGUgc2FtZSByZXN1bHQgYXMgY3JjMzJfY29tYmluZSgpLCB1c2luZyBvcCBpbiBwbGFjZSBvZiBsZW4yLiBvcCBpcworQEAgLTE4MjIsNiArMTgzOSwxOSBAQCBaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVCYWNrSW5pdF8gT0YoKHpfc3RyZWFtcCBzdHJtLCBpbnQgd2luZG93Qml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBaTElCX1ZFUlNJT04sIChpbnQpc2l6ZW9mKHpfc3RyZWFtKSkKKyAjZW5kaWYKKyAKKysjZWxzZSAgLyogWl9GUkVFVFlQRSAqLworKworKworK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUluaXQyXyBPRigoel9zdHJlYW1wIHN0cm0sIGludCAgd2luZG93Qml0cywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZlcnNpb24sIGludCBzdHJlYW1fc2l6ZSkpOworKworKyMgIGRlZmluZSBpbmZsYXRlSW5pdDIoc3RybSwgd2luZG93Qml0cykgXAorKyAgICAgICAgICBpbmZsYXRlSW5pdDJfKChzdHJtKSwgKHdpbmRvd0JpdHMpLCBaTElCX1ZFUlNJT04sIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAoaW50KXNpemVvZih6X3N0cmVhbSkpCisrCisrI2VuZGlmICAvKiBaX0ZSRUVUWVBFICovCisrCisrCisgI2lmbmRlZiBaX1NPTE8KKyAKKyAvKiBnemdldGMoKSBtYWNybyBhbmQgaXRzIHN1cHBvcnRpbmcgZnVuY3Rpb24gYW5kIGV4cG9zZWQgZGF0YSBzdHJ1Y3R1cmUuICBOb3RlCitAQCAtMTkwMSwyMCArMTkzMSwyNSBAQCBaRVhURVJOIGludCBaRVhQT1JUIGd6Z2V0Y18gT0YoKGd6RmlsZSBmaWxlKSk7ICAvKiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovCisgCisgI2Vsc2UgLyogWl9TT0xPICovCisgCisrI2lmbmRlZiBaX0ZSRUVUWVBFCisgICAgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGFkbGVyMzJfY29tYmluZSBPRigodUxvbmcsIHVMb25nLCB6X29mZl90KSk7CisgICAgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGNyYzMyX2NvbWJpbmUgT0YoKHVMb25nLCB1TG9uZywgel9vZmZfdCkpOworICAgIFpFWFRFUk4gdUxvbmcgWkVYUE9SVCBjcmMzMl9jb21iaW5lX2dlbiBPRigoel9vZmZfdCkpOworKyNlbmRpZgorIAorICNlbmRpZiAvKiAhWl9TT0xPICovCisgCisgLyogdW5kb2N1bWVudGVkIGZ1bmN0aW9ucyAqLworKyNpZm5kZWYgWl9GUkVFVFlQRQorIFpFWFRFUk4gY29uc3QgY2hhciAgICogWkVYUE9SVCB6RXJyb3IgICAgICAgICAgIE9GKChpbnQpKTsKKyBaRVhURVJOIGludCAgICAgICAgICAgIFpFWFBPUlQgaW5mbGF0ZVN5bmNQb2ludCBPRigoel9zdHJlYW1wKSk7CisgWkVYVEVSTiBjb25zdCB6X2NyY190IEZBUiAqIFpFWFBPUlQgZ2V0X2NyY190YWJsZSAgICBPRigodm9pZCkpOworIFpFWFRFUk4gaW50ICAgICAgICAgICAgWkVYUE9SVCBpbmZsYXRlVW5kZXJtaW5lIE9GKCh6X3N0cmVhbXAsIGludCkpOworIFpFWFRFUk4gaW50ICAgICAgICAgICAgWkVYUE9SVCBpbmZsYXRlVmFsaWRhdGUgT0YoKHpfc3RyZWFtcCwgaW50KSk7CisgWkVYVEVSTiB1bnNpZ25lZCBsb25nICBaRVhQT1JUIGluZmxhdGVDb2Rlc1VzZWQgT0YoKHpfc3RyZWFtcCkpOworKyNlbmRpZiAgLyogIVpfRlJFRVRZUEUgKi8KKyBaRVhURVJOIGludCAgICAgICAgICAgIFpFWFBPUlQgaW5mbGF0ZVJlc2V0S2VlcCBPRigoel9zdHJlYW1wKSk7CisrI2lmbmRlZiBaX0ZSRUVUWVBFCisgWkVYVEVSTiBpbnQgICAgICAgICAgICBaRVhQT1JUIGRlZmxhdGVSZXNldEtlZXAgT0YoKHpfc3RyZWFtcCkpOworICNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoWl9TT0xPKQorIFpFWFRFUk4gZ3pGaWxlICAgICAgICAgWkVYUE9SVCBnem9wZW5fdyBPRigoY29uc3Qgd2NoYXJfdCAqcGF0aCwKK0BAIC0xOTI3LDYgKzE5NjIsNyBAQCBaRVhURVJOIGludCAgICAgICAgICAgIFpFWFBPUlRWQSBnenZwcmludGYgWl9BUkcoKGd6RmlsZSBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCB2YSkpOworICMgIGVuZGlmCisgI2VuZGlmCisrI2VuZGlmICAvKiAhWl9GUkVFVFlQRSAqLworIAorICNpZmRlZiBfX2NwbHVzcGx1cworIH0KK2RpZmYgLS1naXQgYi9zcmMvZ3ppcC96dXRpbC5jIGEvc3JjL2d6aXAvenV0aWwuYworaW5kZXggZWYxNzRjYTY0Li41NDI3MDZjYTAgMTAwNjQ0CistLS0gYi9zcmMvZ3ppcC96dXRpbC5jCisrKysgYS9zcmMvZ3ppcC96dXRpbC5jCitAQCAtMTAsNiArMTAsOCBAQAorICMgIGluY2x1ZGUgImd6Z3V0cy5oIgorICNlbmRpZgorIAorKyNpZm5kZWYgWl9GUkVFVFlQRQorKworIHpfY29uc3QgY2hhciAqIGNvbnN0IHpfZXJybXNnWzEwXSA9IHsKKyAgICAgKHpfY29uc3QgY2hhciAqKSJuZWVkIGRpY3Rpb25hcnkiLCAgICAgLyogWl9ORUVEX0RJQ1QgICAgICAgMiAgKi8KKyAgICAgKHpfY29uc3QgY2hhciAqKSJzdHJlYW0gZW5kIiwgICAgICAgICAgLyogWl9TVFJFQU1fRU5EICAgICAgMSAgKi8KK0BAIC0xMzgsNiArMTQwLDggQEAgY29uc3QgY2hhciAqIFpFWFBPUlQgekVycm9yKAorICAgICByZXR1cm4gRVJSX01TRyhlcnIpOworIH0KKyAKKysjZW5kaWYgIC8qICFaX0ZSRUVUWVBFICovCisrCisgI2lmIGRlZmluZWQoX1dJTjMyX1dDRSkgJiYgX1dJTjMyX1dDRSA8IDB4ODAwCisgICAgIC8qIFRoZSBvbGRlciBNaWNyb3NvZnQgQyBSdW4tVGltZSBMaWJyYXJ5IGZvciBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZQorICAgICAgKiBlcnJuby4gIFdlIGRlZmluZSBpdCBhcyBhIGdsb2JhbCB2YXJpYWJsZSB0byBzaW1wbGlmeSBwb3J0aW5nLgorQEAgLTE1OSw2ICsxNjMsOCBAQCB2b2lkIFpMSUJfSU5URVJOQUwgem1lbWNweSgKKyAgICAgfSB3aGlsZSAoLS1sZW4gIT0gMCk7CisgfQorIAorKyNpZm5kZWYgWl9GUkVFVFlQRQorKworIGludCBaTElCX0lOVEVSTkFMIHptZW1jbXAoCisgICAgIGNvbnN0IEJ5dGVmKiBzMSwKKyAgICAgY29uc3QgQnl0ZWYqIHMyLAorQEAgLTE4MSw2ICsxODcsNyBAQCB2b2lkIFpMSUJfSU5URVJOQUwgem1lbXplcm8oCisgICAgICAgICAqZGVzdCsrID0gMDsgIC8qID8/PyB0byBiZSB1bnJvbGxlZCAqLworICAgICB9IHdoaWxlICgtLWxlbiAhPSAwKTsKKyB9CisrI2VuZGlmICAvKiAhWl9GUkVFVFlQRSAqLworICNlbmRpZgorIAorICNpZm5kZWYgWl9TT0xPCitkaWZmIC0tZ2l0IGIvc3JjL2d6aXAvenV0aWwuaCBhL3NyYy9nemlwL3p1dGlsLmgKK2luZGV4IDBiYzdmNGVjZC4uMDU1YmE4YjYyIDEwMDY0NAorLS0tIGIvc3JjL2d6aXAvenV0aWwuaAorKysrIGEvc3JjL2d6aXAvenV0aWwuaAorQEAgLTUzLDggKzUzLDEwIEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgdWxnOworICMgIGVuZGlmCisgI2VuZGlmCisgCisrI2lmbmRlZiBaX0ZSRUVUWVBFCisgZXh0ZXJuIHpfY29uc3QgY2hhciAqIGNvbnN0IHpfZXJybXNnWzEwXTsgLyogaW5kZXhlZCBieSAyLXpsaWJfZXJyb3IgKi8KKyAvKiAoc2l6ZSBnaXZlbiB0byBhdm9pZCBzaWxseSB3YXJuaW5ncyB3aXRoIFZpc3VhbCBDKyspICovCisrI2VuZGlmICAvKiAhWl9GUkVFVFlQRSAqLworIAorICNkZWZpbmUgRVJSX01TRyhlcnIpIHpfZXJybXNnW1pfTkVFRF9ESUNULShlcnIpXQorIAorQEAgLTE4OCw2ICsxOTAsOCBAQCBleHRlcm4gel9jb25zdCBjaGFyICogY29uc3Qgel9lcnJtc2dbMTBdOyAvKiBpbmRleGVkIGJ5IDItemxpYl9lcnJvciAqLworICAgI3ByYWdtYSB3YXJuIC04MDY2CisgI2VuZGlmCisgCisrI2lmbmRlZiBaX0ZSRUVUWVBFCisrCisgLyogcHJvdmlkZSBwcm90b3R5cGVzIGZvciB0aGVzZSB3aGVuIGJ1aWxkaW5nIHpsaWIgd2l0aG91dCBMRlMgKi8KKyAjaWYgIWRlZmluZWQoX1dJTjMyKSAmJiBcCisgICAgICghZGVmaW5lZChfTEFSR0VGSUxFNjRfU09VUkNFKSB8fCBfTEZTNjRfTEFSR0VGSUxFLTAgPT0gMCkKK0BAIC0xOTYsNiArMjAwLDggQEAgZXh0ZXJuIHpfY29uc3QgY2hhciAqIGNvbnN0IHpfZXJybXNnWzEwXTsgLyogaW5kZXhlZCBieSAyLXpsaWJfZXJyb3IgKi8KKyAgICAgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGNyYzMyX2NvbWJpbmVfZ2VuNjQgT0YoKHpfb2ZmX3QpKTsKKyAjZW5kaWYKKyAKKysjZW5kaWYgIC8qICFaX0ZSRUVUWVBFICovCisrCisgICAgICAgICAvKiBjb21tb24gZGVmYXVsdHMgKi8KKyAKKyAjaWZuZGVmIE9TX0NPREUKK0BAIC0yMjcsOSArMjMzLDkgQEAgZXh0ZXJuIHpfY29uc3QgY2hhciAqIGNvbnN0IHpfZXJybXNnWzEwXTsgLyogaW5kZXhlZCBieSAyLXpsaWJfZXJyb3IgKi8KKyAjICAgIGRlZmluZSB6bWVtY21wIF9mbWVtY21wCisgIyAgICBkZWZpbmUgem1lbXplcm8oZGVzdCwgbGVuKSBfZm1lbXNldChkZXN0LCAwLCBsZW4pCisgIyAgZWxzZQorLSMgICAgZGVmaW5lIHptZW1jcHkgbWVtY3B5CistIyAgICBkZWZpbmUgem1lbWNtcCBtZW1jbXAKKy0jICAgIGRlZmluZSB6bWVtemVybyhkZXN0LCBsZW4pIG1lbXNldChkZXN0LCAwLCBsZW4pCisrIyAgICBkZWZpbmUgem1lbWNweSBmdF9tZW1jcHkKKysjICAgIGRlZmluZSB6bWVtY21wIGZ0X21lbWNtcAorKyMgICAgZGVmaW5lIHptZW16ZXJvKGRlc3QsIGxlbikgZnRfbWVtc2V0KGRlc3QsIDAsIGxlbikKKyAjICBlbmRpZgorICNlbHNlCisgICAgdm9pZCBaTElCX0lOVEVSTkFMIHptZW1jcHkgT0YoKEJ5dGVmKiBkZXN0LCBjb25zdCBCeXRlZiogc291cmNlLCB1SW50IGxlbikpOwpkaWZmIC0tZ2l0IGEvc3JjL2d6aXAvcnVsZXMubWsgYi9zcmMvZ3ppcC9ydWxlcy5tawppbmRleCAxYTkwYWU4Li42ZmViNmY1IDEwMDY0NAotLS0gYS9zcmMvZ3ppcC9ydWxlcy5taworKysgYi9zcmMvZ3ppcC9ydWxlcy5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKQEAgLTQwLDE3ICs0MCwxNyBAQAogIyB1bmNvbmRpdGlvbmFsbHkuCiAjCiBHWklQX0RSVl9TUkNTIDo9ICQoR1pJUF9ESVIpL2FkbGVyMzIuYyAgXAorICAgICAgICAgICAgICAgICAkKEdaSVBfRElSKS9jcmMzMi5jICAgIFwKKyAgICAgICAgICAgICAgICAgJChHWklQX0RJUikvY3JjMzIuaCAgICBcCiAgICAgICAgICAgICAgICAgICQoR1pJUF9ESVIpL2Z0emNvbmYuaCAgXAotICAgICAgICAgICAgICAgICAkKEdaSVBfRElSKS9pbmZibG9jay5jIFwKLSAgICAgICAgICAgICAgICAgJChHWklQX0RJUikvaW5mYmxvY2suaCBcCi0gICAgICAgICAgICAgICAgICQoR1pJUF9ESVIpL2luZmNvZGVzLmMgXAotICAgICAgICAgICAgICAgICAkKEdaSVBfRElSKS9pbmZjb2Rlcy5oIFwKKyAgICAgICAgICAgICAgICAgJChHWklQX0RJUikvaW5mYmFjay5jICBcCisgICAgICAgICAgICAgICAgICQoR1pJUF9ESVIpL2luZmZhc3QuYyAgXAorICAgICAgICAgICAgICAgICAkKEdaSVBfRElSKS9pbmZmYXN0LmggIFwKICAgICAgICAgICAgICAgICAgJChHWklQX0RJUikvaW5mZml4ZWQuaCBcCiAgICAgICAgICAgICAgICAgICQoR1pJUF9ESVIpL2luZmxhdGUuYyAgXAorICAgICAgICAgICAgICAgICAkKEdaSVBfRElSKS9pbmZsYXRlLmggIFwKICAgICAgICAgICAgICAgICAgJChHWklQX0RJUikvaW5mdHJlZXMuYyBcCiAgICAgICAgICAgICAgICAgICQoR1pJUF9ESVIpL2luZnRyZWVzLmggXAotICAgICAgICAgICAgICAgICAkKEdaSVBfRElSKS9pbmZ1dGlsLmMgIFwKLSAgICAgICAgICAgICAgICAgJChHWklQX0RJUikvaW5mdXRpbC5oICBcCiAgICAgICAgICAgICAgICAgICQoR1pJUF9ESVIpL3psaWIuaCAgICAgXAogICAgICAgICAgICAgICAgICAkKEdaSVBfRElSKS96dXRpbC5jICAgIFwKICAgICAgICAgICAgICAgICAgJChHWklQX0RJUikvenV0aWwuaApkaWZmIC0tZ2l0IGEvc3JjL2d6aXAvemxpYi5oIGIvc3JjL2d6aXAvemxpYi5oCmluZGV4IGE0ZTgyYzYuLjNmMmY3NmUgMTAwNjQ0Ci0tLSBhL3NyYy9nemlwL3psaWIuaAorKysgYi9zcmMvZ3ppcC96bGliLmgKQEAgLTEsNyArMSw3IEBACiAvKiB6bGliLmggLS0gaW50ZXJmYWNlIG9mIHRoZSAnemxpYicgZ2VuZXJhbCBwdXJwb3NlIGNvbXByZXNzaW9uIGxpYnJhcnkKLSAgdmVyc2lvbiAxLjEuNCwgTWFyY2ggMTF0aCwgMjAwMgorICB2ZXJzaW9uIDEuMi4xMywgT2N0b2JlciAxM3RoLCAyMDIyCiAKLSAgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDIgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlcgorICBDb3B5cmlnaHQgKEMpIDE5OTUtMjAyMiBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyCiAKICAgVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKICAgd2FycmFudHkuICBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcwpAQCAtMjQsMTIgKzI0LDEyIEBACiAKIAogICBUaGUgZGF0YSBmb3JtYXQgdXNlZCBieSB0aGUgemxpYiBsaWJyYXJ5IGlzIGRlc2NyaWJlZCBieSBSRkNzIChSZXF1ZXN0IGZvcgotICBDb21tZW50cykgMTk1MCB0byAxOTUyIGluIHRoZSBmaWxlcyBmdHA6Ly9kcy5pbnRlcm5pYy5uZXQvcmZjL3JmYzE5NTAudHh0Ci0gICh6bGliIGZvcm1hdCksIHJmYzE5NTEudHh0IChkZWZsYXRlIGZvcm1hdCkgYW5kIHJmYzE5NTIudHh0IChnemlwIGZvcm1hdCkuCisgIENvbW1lbnRzKSAxOTUwIHRvIDE5NTIgaW4gdGhlIGZpbGVzIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzE5NTAKKyAgKHpsaWIgZm9ybWF0KSwgcmZjMTk1MSAoZGVmbGF0ZSBmb3JtYXQpIGFuZCByZmMxOTUyIChnemlwIGZvcm1hdCkuCiAqLwogCi0jaWZuZGVmIF9aTElCX0gKLSNkZWZpbmUgX1pMSUJfSAorI2lmbmRlZiBaTElCX0gKKyNkZWZpbmUgWkxJQl9ICiAKICNpbmNsdWRlICJmdHpjb25mLmgiCiAKQEAgLTM3LDI3ICszNyw0NSBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotI2RlZmluZSBaTElCX1ZFUlNJT04gIjEuMS40IgorI2RlZmluZSBaTElCX1ZFUlNJT04gIjEuMi4xMyIKKyNkZWZpbmUgWkxJQl9WRVJOVU0gMHgxMmQwCisjZGVmaW5lIFpMSUJfVkVSX01BSk9SIDEKKyNkZWZpbmUgWkxJQl9WRVJfTUlOT1IgMgorI2RlZmluZSBaTElCX1ZFUl9SRVZJU0lPTiAxMworI2RlZmluZSBaTElCX1ZFUl9TVUJSRVZJU0lPTiAwCiAKIC8qCi0gICAgIFRoZSAnemxpYicgY29tcHJlc3Npb24gbGlicmFyeSBwcm92aWRlcyBpbi1tZW1vcnkgY29tcHJlc3Npb24gYW5kCi0gIGRlY29tcHJlc3Npb24gZnVuY3Rpb25zLCBpbmNsdWRpbmcgaW50ZWdyaXR5IGNoZWNrcyBvZiB0aGUgdW5jb21wcmVzc2VkCi0gIGRhdGEuICBUaGlzIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkgc3VwcG9ydHMgb25seSBvbmUgY29tcHJlc3Npb24gbWV0aG9kCi0gIChkZWZsYXRpb24pIGJ1dCBvdGhlciBhbGdvcml0aG1zIHdpbGwgYmUgYWRkZWQgbGF0ZXIgYW5kIHdpbGwgaGF2ZSB0aGUgc2FtZQotICBzdHJlYW0gaW50ZXJmYWNlLgorICAgIFRoZSAnemxpYicgY29tcHJlc3Npb24gbGlicmFyeSBwcm92aWRlcyBpbi1tZW1vcnkgY29tcHJlc3Npb24gYW5kCisgIGRlY29tcHJlc3Npb24gZnVuY3Rpb25zLCBpbmNsdWRpbmcgaW50ZWdyaXR5IGNoZWNrcyBvZiB0aGUgdW5jb21wcmVzc2VkIGRhdGEuCisgIFRoaXMgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSBzdXBwb3J0cyBvbmx5IG9uZSBjb21wcmVzc2lvbiBtZXRob2QgKGRlZmxhdGlvbikKKyAgYnV0IG90aGVyIGFsZ29yaXRobXMgd2lsbCBiZSBhZGRlZCBsYXRlciBhbmQgd2lsbCBoYXZlIHRoZSBzYW1lIHN0cmVhbQorICBpbnRlcmZhY2UuCiAKLSAgICAgQ29tcHJlc3Npb24gY2FuIGJlIGRvbmUgaW4gYSBzaW5nbGUgc3RlcCBpZiB0aGUgYnVmZmVycyBhcmUgbGFyZ2UKLSAgZW5vdWdoIChmb3IgZXhhbXBsZSBpZiBhbiBpbnB1dCBmaWxlIGlzIG1tYXAnZWQpLCBvciBjYW4gYmUgZG9uZSBieQotICByZXBlYXRlZCBjYWxscyBvZiB0aGUgY29tcHJlc3Npb24gZnVuY3Rpb24uICBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZQotICBhcHBsaWNhdGlvbiBtdXN0IHByb3ZpZGUgbW9yZSBpbnB1dCBhbmQvb3IgY29uc3VtZSB0aGUgb3V0cHV0CisgICAgQ29tcHJlc3Npb24gY2FuIGJlIGRvbmUgaW4gYSBzaW5nbGUgc3RlcCBpZiB0aGUgYnVmZmVycyBhcmUgbGFyZ2UgZW5vdWdoLAorICBvciBjYW4gYmUgZG9uZSBieSByZXBlYXRlZCBjYWxscyBvZiB0aGUgY29tcHJlc3Npb24gZnVuY3Rpb24uICBJbiB0aGUgbGF0dGVyCisgIGNhc2UsIHRoZSBhcHBsaWNhdGlvbiBtdXN0IHByb3ZpZGUgbW9yZSBpbnB1dCBhbmQvb3IgY29uc3VtZSB0aGUgb3V0cHV0CiAgIChwcm92aWRpbmcgbW9yZSBvdXRwdXQgc3BhY2UpIGJlZm9yZSBlYWNoIGNhbGwuCiAKLSAgICAgVGhlIGxpYnJhcnkgYWxzbyBzdXBwb3J0cyByZWFkaW5nIGFuZCB3cml0aW5nIGZpbGVzIGluIGd6aXAgKC5neikgZm9ybWF0Ci0gIHdpdGggYW4gaW50ZXJmYWNlIHNpbWlsYXIgdG8gdGhhdCBvZiBzdGRpby4KKyAgICBUaGUgY29tcHJlc3NlZCBkYXRhIGZvcm1hdCB1c2VkIGJ5IGRlZmF1bHQgYnkgdGhlIGluLW1lbW9yeSBmdW5jdGlvbnMgaXMKKyAgdGhlIHpsaWIgZm9ybWF0LCB3aGljaCBpcyBhIHpsaWIgd3JhcHBlciBkb2N1bWVudGVkIGluIFJGQyAxOTUwLCB3cmFwcGVkCisgIGFyb3VuZCBhIGRlZmxhdGUgc3RyZWFtLCB3aGljaCBpcyBpdHNlbGYgZG9jdW1lbnRlZCBpbiBSRkMgMTk1MS4KIAotICAgICBUaGUgbGlicmFyeSBkb2VzIG5vdCBpbnN0YWxsIGFueSBzaWduYWwgaGFuZGxlci4gVGhlIGRlY29kZXIgY2hlY2tzCi0gIHRoZSBjb25zaXN0ZW5jeSBvZiB0aGUgY29tcHJlc3NlZCBkYXRhLCBzbyB0aGUgbGlicmFyeSBzaG91bGQgbmV2ZXIKLSAgY3Jhc2ggZXZlbiBpbiBjYXNlIG9mIGNvcnJ1cHRlZCBpbnB1dC4KKyAgICBUaGUgbGlicmFyeSBhbHNvIHN1cHBvcnRzIHJlYWRpbmcgYW5kIHdyaXRpbmcgZmlsZXMgaW4gZ3ppcCAoLmd6KSBmb3JtYXQKKyAgd2l0aCBhbiBpbnRlcmZhY2Ugc2ltaWxhciB0byB0aGF0IG9mIHN0ZGlvIHVzaW5nIHRoZSBmdW5jdGlvbnMgdGhhdCBzdGFydAorICB3aXRoICJneiIuICBUaGUgZ3ppcCBmb3JtYXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIHpsaWIgZm9ybWF0LiAgZ3ppcCBpcyBhCisgIGd6aXAgd3JhcHBlciwgZG9jdW1lbnRlZCBpbiBSRkMgMTk1Miwgd3JhcHBlZCBhcm91bmQgYSBkZWZsYXRlIHN0cmVhbS4KKworICAgIFRoaXMgbGlicmFyeSBjYW4gb3B0aW9uYWxseSByZWFkIGFuZCB3cml0ZSBnemlwIGFuZCByYXcgZGVmbGF0ZSBzdHJlYW1zIGluCisgIG1lbW9yeSBhcyB3ZWxsLgorCisgICAgVGhlIHpsaWIgZm9ybWF0IHdhcyBkZXNpZ25lZCB0byBiZSBjb21wYWN0IGFuZCBmYXN0IGZvciB1c2UgaW4gbWVtb3J5CisgIGFuZCBvbiBjb21tdW5pY2F0aW9ucyBjaGFubmVscy4gIFRoZSBnemlwIGZvcm1hdCB3YXMgZGVzaWduZWQgZm9yIHNpbmdsZS0KKyAgZmlsZSBjb21wcmVzc2lvbiBvbiBmaWxlIHN5c3RlbXMsIGhhcyBhIGxhcmdlciBoZWFkZXIgdGhhbiB6bGliIHRvIG1haW50YWluCisgIGRpcmVjdG9yeSBpbmZvcm1hdGlvbiwgYW5kIHVzZXMgYSBkaWZmZXJlbnQsIHNsb3dlciBjaGVjayBtZXRob2QgdGhhbiB6bGliLgorCisgICAgVGhlIGxpYnJhcnkgZG9lcyBub3QgaW5zdGFsbCBhbnkgc2lnbmFsIGhhbmRsZXIuICBUaGUgZGVjb2RlciBjaGVja3MKKyAgdGhlIGNvbnNpc3RlbmN5IG9mIHRoZSBjb21wcmVzc2VkIGRhdGEsIHNvIHRoZSBsaWJyYXJ5IHNob3VsZCBuZXZlciBjcmFzaAorICBldmVuIGluIHRoZSBjYXNlIG9mIGNvcnJ1cHRlZCBpbnB1dC4KICovCiAKIHR5cGVkZWYgdm9pZHBmICgqYWxsb2NfZnVuYykgT0YoKHZvaWRwZiBvcGFxdWUsIHVJbnQgaXRlbXMsIHVJbnQgc2l6ZSkpOwpAQCAtNjYsNjggKzg0LDk1IEBACiBzdHJ1Y3QgaW50ZXJuYWxfc3RhdGU7CiAKIHR5cGVkZWYgc3RydWN0IHpfc3RyZWFtX3MgewotICAgIEJ5dGVmICAgICpuZXh0X2luOyAgLyogbmV4dCBpbnB1dCBieXRlICovCisgICAgel9jb25zdCBCeXRlZiAqbmV4dF9pbjsgICAgIC8qIG5leHQgaW5wdXQgYnl0ZSAqLwogICAgIHVJbnQgICAgIGF2YWlsX2luOyAgLyogbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBhdCBuZXh0X2luICovCi0gICAgdUxvbmcgICAgdG90YWxfaW47ICAvKiB0b3RhbCBuYiBvZiBpbnB1dCBieXRlcyByZWFkIHNvIGZhciAqLworICAgIHVMb25nICAgIHRvdGFsX2luOyAgLyogdG90YWwgbnVtYmVyIG9mIGlucHV0IGJ5dGVzIHJlYWQgc28gZmFyICovCiAKLSAgICBCeXRlZiAgICAqbmV4dF9vdXQ7IC8qIG5leHQgb3V0cHV0IGJ5dGUgc2hvdWxkIGJlIHB1dCB0aGVyZSAqLworICAgIEJ5dGVmICAgICpuZXh0X291dDsgLyogbmV4dCBvdXRwdXQgYnl0ZSB3aWxsIGdvIGhlcmUgKi8KICAgICB1SW50ICAgICBhdmFpbF9vdXQ7IC8qIHJlbWFpbmluZyBmcmVlIHNwYWNlIGF0IG5leHRfb3V0ICovCi0gICAgdUxvbmcgICAgdG90YWxfb3V0OyAvKiB0b3RhbCBuYiBvZiBieXRlcyBvdXRwdXQgc28gZmFyICovCisgICAgdUxvbmcgICAgdG90YWxfb3V0OyAvKiB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgb3V0cHV0IHNvIGZhciAqLwogCi0gICAgY2hhciAgICAgKm1zZzsgICAgICAvKiBsYXN0IGVycm9yIG1lc3NhZ2UsIE5VTEwgaWYgbm8gZXJyb3IgKi8KKyAgICB6X2NvbnN0IGNoYXIgKm1zZzsgIC8qIGxhc3QgZXJyb3IgbWVzc2FnZSwgTlVMTCBpZiBubyBlcnJvciAqLwogICAgIHN0cnVjdCBpbnRlcm5hbF9zdGF0ZSBGQVIgKnN0YXRlOyAvKiBub3QgdmlzaWJsZSBieSBhcHBsaWNhdGlvbnMgKi8KIAogICAgIGFsbG9jX2Z1bmMgemFsbG9jOyAgLyogdXNlZCB0byBhbGxvY2F0ZSB0aGUgaW50ZXJuYWwgc3RhdGUgKi8KICAgICBmcmVlX2Z1bmMgIHpmcmVlOyAgIC8qIHVzZWQgdG8gZnJlZSB0aGUgaW50ZXJuYWwgc3RhdGUgKi8KICAgICB2b2lkcGYgICAgIG9wYXF1ZTsgIC8qIHByaXZhdGUgZGF0YSBvYmplY3QgcGFzc2VkIHRvIHphbGxvYyBhbmQgemZyZWUgKi8KIAotICAgIGludCAgICAgZGF0YV90eXBlOyAgLyogYmVzdCBndWVzcyBhYm91dCB0aGUgZGF0YSB0eXBlOiBhc2NpaSBvciBiaW5hcnkgKi8KLSAgICB1TG9uZyAgIGFkbGVyOyAgICAgIC8qIGFkbGVyMzIgdmFsdWUgb2YgdGhlIHVuY29tcHJlc3NlZCBkYXRhICovCisgICAgaW50ICAgICBkYXRhX3R5cGU7ICAvKiBiZXN0IGd1ZXNzIGFib3V0IHRoZSBkYXRhIHR5cGU6IGJpbmFyeSBvciB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGVmbGF0ZSwgb3IgdGhlIGRlY29kaW5nIHN0YXRlIGZvciBpbmZsYXRlICovCisgICAgdUxvbmcgICBhZGxlcjsgICAgICAvKiBBZGxlci0zMiBvciBDUkMtMzIgdmFsdWUgb2YgdGhlIHVuY29tcHJlc3NlZCBkYXRhICovCiAgICAgdUxvbmcgICByZXNlcnZlZDsgICAvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLwogfSB6X3N0cmVhbTsKIAogdHlwZWRlZiB6X3N0cmVhbSBGQVIgKnpfc3RyZWFtcDsKIAogLyoKLSAgIFRoZSBhcHBsaWNhdGlvbiBtdXN0IHVwZGF0ZSBuZXh0X2luIGFuZCBhdmFpbF9pbiB3aGVuIGF2YWlsX2luIGhhcwotICAgZHJvcHBlZCB0byB6ZXJvLiBJdCBtdXN0IHVwZGF0ZSBuZXh0X291dCBhbmQgYXZhaWxfb3V0IHdoZW4gYXZhaWxfb3V0Ci0gICBoYXMgZHJvcHBlZCB0byB6ZXJvLiBUaGUgYXBwbGljYXRpb24gbXVzdCBpbml0aWFsaXplIHphbGxvYywgemZyZWUgYW5kCi0gICBvcGFxdWUgYmVmb3JlIGNhbGxpbmcgdGhlIGluaXQgZnVuY3Rpb24uIEFsbCBvdGhlciBmaWVsZHMgYXJlIHNldCBieSB0aGUKLSAgIGNvbXByZXNzaW9uIGxpYnJhcnkgYW5kIG11c3Qgbm90IGJlIHVwZGF0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgorICAgICBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiBwYXNzZWQgdG8gYW5kIGZyb20gemxpYiByb3V0aW5lcy4gIFNlZSBSRkMgMTk1MgorICBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSBtZWFuaW5ncyBvZiB0aGVzZSBmaWVsZHMuCisqLwordHlwZWRlZiBzdHJ1Y3QgZ3pfaGVhZGVyX3MgeworICAgIGludCAgICAgdGV4dDsgICAgICAgLyogdHJ1ZSBpZiBjb21wcmVzc2VkIGRhdGEgYmVsaWV2ZWQgdG8gYmUgdGV4dCAqLworICAgIHVMb25nICAgdGltZTsgICAgICAgLyogbW9kaWZpY2F0aW9uIHRpbWUgKi8KKyAgICBpbnQgICAgIHhmbGFnczsgICAgIC8qIGV4dHJhIGZsYWdzIChub3QgdXNlZCB3aGVuIHdyaXRpbmcgYSBnemlwIGZpbGUpICovCisgICAgaW50ICAgICBvczsgICAgICAgICAvKiBvcGVyYXRpbmcgc3lzdGVtICovCisgICAgQnl0ZWYgICAqZXh0cmE7ICAgICAvKiBwb2ludGVyIHRvIGV4dHJhIGZpZWxkIG9yIFpfTlVMTCBpZiBub25lICovCisgICAgdUludCAgICBleHRyYV9sZW47ICAvKiBleHRyYSBmaWVsZCBsZW5ndGggKHZhbGlkIGlmIGV4dHJhICE9IFpfTlVMTCkgKi8KKyAgICB1SW50ICAgIGV4dHJhX21heDsgIC8qIHNwYWNlIGF0IGV4dHJhIChvbmx5IHdoZW4gcmVhZGluZyBoZWFkZXIpICovCisgICAgQnl0ZWYgICAqbmFtZTsgICAgICAvKiBwb2ludGVyIHRvIHplcm8tdGVybWluYXRlZCBmaWxlIG5hbWUgb3IgWl9OVUxMICovCisgICAgdUludCAgICBuYW1lX21heDsgICAvKiBzcGFjZSBhdCBuYW1lIChvbmx5IHdoZW4gcmVhZGluZyBoZWFkZXIpICovCisgICAgQnl0ZWYgICAqY29tbWVudDsgICAvKiBwb2ludGVyIHRvIHplcm8tdGVybWluYXRlZCBjb21tZW50IG9yIFpfTlVMTCAqLworICAgIHVJbnQgICAgY29tbV9tYXg7ICAgLyogc3BhY2UgYXQgY29tbWVudCAob25seSB3aGVuIHJlYWRpbmcgaGVhZGVyKSAqLworICAgIGludCAgICAgaGNyYzsgICAgICAgLyogdHJ1ZSBpZiB0aGVyZSB3YXMgb3Igd2lsbCBiZSBhIGhlYWRlciBjcmMgKi8KKyAgICBpbnQgICAgIGRvbmU7ICAgICAgIC8qIHRydWUgd2hlbiBkb25lIHJlYWRpbmcgZ3ppcCBoZWFkZXIgKG5vdCB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHdyaXRpbmcgYSBnemlwIGZpbGUpICovCit9IGd6X2hlYWRlcjsKIAotICAgVGhlIG9wYXF1ZSB2YWx1ZSBwcm92aWRlZCBieSB0aGUgYXBwbGljYXRpb24gd2lsbCBiZSBwYXNzZWQgYXMgdGhlIGZpcnN0Ci0gICBwYXJhbWV0ZXIgZm9yIGNhbGxzIG9mIHphbGxvYyBhbmQgemZyZWUuIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgY3VzdG9tCi0gICBtZW1vcnkgbWFuYWdlbWVudC4gVGhlIGNvbXByZXNzaW9uIGxpYnJhcnkgYXR0YWNoZXMgbm8gbWVhbmluZyB0byB0aGUKK3R5cGVkZWYgZ3pfaGVhZGVyIEZBUiAqZ3pfaGVhZGVycDsKKworLyoKKyAgICAgVGhlIGFwcGxpY2F0aW9uIG11c3QgdXBkYXRlIG5leHRfaW4gYW5kIGF2YWlsX2luIHdoZW4gYXZhaWxfaW4gaGFzIGRyb3BwZWQKKyAgIHRvIHplcm8uICBJdCBtdXN0IHVwZGF0ZSBuZXh0X291dCBhbmQgYXZhaWxfb3V0IHdoZW4gYXZhaWxfb3V0IGhhcyBkcm9wcGVkCisgICB0byB6ZXJvLiAgVGhlIGFwcGxpY2F0aW9uIG11c3QgaW5pdGlhbGl6ZSB6YWxsb2MsIHpmcmVlIGFuZCBvcGFxdWUgYmVmb3JlCisgICBjYWxsaW5nIHRoZSBpbml0IGZ1bmN0aW9uLiAgQWxsIG90aGVyIGZpZWxkcyBhcmUgc2V0IGJ5IHRoZSBjb21wcmVzc2lvbgorICAgbGlicmFyeSBhbmQgbXVzdCBub3QgYmUgdXBkYXRlZCBieSB0aGUgYXBwbGljYXRpb24uCisKKyAgICAgVGhlIG9wYXF1ZSB2YWx1ZSBwcm92aWRlZCBieSB0aGUgYXBwbGljYXRpb24gd2lsbCBiZSBwYXNzZWQgYXMgdGhlIGZpcnN0CisgICBwYXJhbWV0ZXIgZm9yIGNhbGxzIG9mIHphbGxvYyBhbmQgemZyZWUuICBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGN1c3RvbQorICAgbWVtb3J5IG1hbmFnZW1lbnQuICBUaGUgY29tcHJlc3Npb24gbGlicmFyeSBhdHRhY2hlcyBubyBtZWFuaW5nIHRvIHRoZQogICAgb3BhcXVlIHZhbHVlLgogCi0gICB6YWxsb2MgbXVzdCByZXR1cm4gWl9OVUxMIGlmIHRoZXJlIGlzIG5vdCBlbm91Z2ggbWVtb3J5IGZvciB0aGUgb2JqZWN0LgorICAgICB6YWxsb2MgbXVzdCByZXR1cm4gWl9OVUxMIGlmIHRoZXJlIGlzIG5vdCBlbm91Z2ggbWVtb3J5IGZvciB0aGUgb2JqZWN0LgogICAgSWYgemxpYiBpcyB1c2VkIGluIGEgbXVsdGktdGhyZWFkZWQgYXBwbGljYXRpb24sIHphbGxvYyBhbmQgemZyZWUgbXVzdCBiZQotICAgdGhyZWFkIHNhZmUuCisgICB0aHJlYWQgc2FmZS4gIEluIHRoYXQgY2FzZSwgemxpYiBpcyB0aHJlYWQtc2FmZS4gIFdoZW4gemFsbG9jIGFuZCB6ZnJlZSBhcmUKKyAgIFpfTlVMTCBvbiBlbnRyeSB0byB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24sIHRoZXkgYXJlIHNldCB0byBpbnRlcm5hbAorICAgcm91dGluZXMgdGhhdCB1c2UgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb25zIG1hbGxvYygpIGFuZCBmcmVlKCkuCiAKLSAgIE9uIDE2LWJpdCBzeXN0ZW1zLCB0aGUgZnVuY3Rpb25zIHphbGxvYyBhbmQgemZyZWUgbXVzdCBiZSBhYmxlIHRvIGFsbG9jYXRlCi0gICBleGFjdGx5IDY1NTM2IGJ5dGVzLCBidXQgd2lsbCBub3QgYmUgcmVxdWlyZWQgdG8gYWxsb2NhdGUgbW9yZSB0aGFuIHRoaXMKLSAgIGlmIHRoZSBzeW1ib2wgTUFYU0VHXzY0SyBpcyBkZWZpbmVkIChzZWUgemNvbmYuaCkuIFdBUk5JTkc6IE9uIE1TRE9TLAotICAgcG9pbnRlcnMgcmV0dXJuZWQgYnkgemFsbG9jIGZvciBvYmplY3RzIG9mIGV4YWN0bHkgNjU1MzYgYnl0ZXMgKm11c3QqCi0gICBoYXZlIHRoZWlyIG9mZnNldCBub3JtYWxpemVkIHRvIHplcm8uIFRoZSBkZWZhdWx0IGFsbG9jYXRpb24gZnVuY3Rpb24KLSAgIHByb3ZpZGVkIGJ5IHRoaXMgbGlicmFyeSBlbnN1cmVzIHRoaXMgKHNlZSB6dXRpbC5jKS4gVG8gcmVkdWNlIG1lbW9yeQotICAgcmVxdWlyZW1lbnRzIGFuZCBhdm9pZCBhbnkgYWxsb2NhdGlvbiBvZiA2NEsgb2JqZWN0cywgYXQgdGhlIGV4cGVuc2Ugb2YKLSAgIGNvbXByZXNzaW9uIHJhdGlvLCBjb21waWxlIHRoZSBsaWJyYXJ5IHdpdGggLURNQVhfV0JJVFM9MTQgKHNlZSB6Y29uZi5oKS4KKyAgICAgT24gMTYtYml0IHN5c3RlbXMsIHRoZSBmdW5jdGlvbnMgemFsbG9jIGFuZCB6ZnJlZSBtdXN0IGJlIGFibGUgdG8gYWxsb2NhdGUKKyAgIGV4YWN0bHkgNjU1MzYgYnl0ZXMsIGJ1dCB3aWxsIG5vdCBiZSByZXF1aXJlZCB0byBhbGxvY2F0ZSBtb3JlIHRoYW4gdGhpcyBpZgorICAgdGhlIHN5bWJvbCBNQVhTRUdfNjRLIGlzIGRlZmluZWQgKHNlZSB6Y29uZi5oKS4gIFdBUk5JTkc6IE9uIE1TRE9TLCBwb2ludGVycworICAgcmV0dXJuZWQgYnkgemFsbG9jIGZvciBvYmplY3RzIG9mIGV4YWN0bHkgNjU1MzYgYnl0ZXMgKm11c3QqIGhhdmUgdGhlaXIKKyAgIG9mZnNldCBub3JtYWxpemVkIHRvIHplcm8uICBUaGUgZGVmYXVsdCBhbGxvY2F0aW9uIGZ1bmN0aW9uIHByb3ZpZGVkIGJ5IHRoaXMKKyAgIGxpYnJhcnkgZW5zdXJlcyB0aGlzIChzZWUgenV0aWwuYykuICBUbyByZWR1Y2UgbWVtb3J5IHJlcXVpcmVtZW50cyBhbmQgYXZvaWQKKyAgIGFueSBhbGxvY2F0aW9uIG9mIDY0SyBvYmplY3RzLCBhdCB0aGUgZXhwZW5zZSBvZiBjb21wcmVzc2lvbiByYXRpbywgY29tcGlsZQorICAgdGhlIGxpYnJhcnkgd2l0aCAtRE1BWF9XQklUUz0xNCAoc2VlIHpjb25mLmgpLgogCi0gICBUaGUgZmllbGRzIHRvdGFsX2luIGFuZCB0b3RhbF9vdXQgY2FuIGJlIHVzZWQgZm9yIHN0YXRpc3RpY3Mgb3IKLSAgIHByb2dyZXNzIHJlcG9ydHMuIEFmdGVyIGNvbXByZXNzaW9uLCB0b3RhbF9pbiBob2xkcyB0aGUgdG90YWwgc2l6ZSBvZgotICAgdGhlIHVuY29tcHJlc3NlZCBkYXRhIGFuZCBtYXkgYmUgc2F2ZWQgZm9yIHVzZSBpbiB0aGUgZGVjb21wcmVzc29yCi0gICAocGFydGljdWxhcmx5IGlmIHRoZSBkZWNvbXByZXNzb3Igd2FudHMgdG8gZGVjb21wcmVzcyBldmVyeXRoaW5nIGluCi0gICBhIHNpbmdsZSBzdGVwKS4KKyAgICAgVGhlIGZpZWxkcyB0b3RhbF9pbiBhbmQgdG90YWxfb3V0IGNhbiBiZSB1c2VkIGZvciBzdGF0aXN0aWNzIG9yIHByb2dyZXNzCisgICByZXBvcnRzLiAgQWZ0ZXIgY29tcHJlc3Npb24sIHRvdGFsX2luIGhvbGRzIHRoZSB0b3RhbCBzaXplIG9mIHRoZQorICAgdW5jb21wcmVzc2VkIGRhdGEgYW5kIG1heSBiZSBzYXZlZCBmb3IgdXNlIGJ5IHRoZSBkZWNvbXByZXNzb3IgKHBhcnRpY3VsYXJseQorICAgaWYgdGhlIGRlY29tcHJlc3NvciB3YW50cyB0byBkZWNvbXByZXNzIGV2ZXJ5dGhpbmcgaW4gYSBzaW5nbGUgc3RlcCkuCiAqLwogCiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb25zdGFudHMgKi8KIAogI2RlZmluZSBaX05PX0ZMVVNIICAgICAgMAotI2RlZmluZSBaX1BBUlRJQUxfRkxVU0ggMSAvKiB3aWxsIGJlIHJlbW92ZWQsIHVzZSBaX1NZTkNfRkxVU0ggaW5zdGVhZCAqLworI2RlZmluZSBaX1BBUlRJQUxfRkxVU0ggMQogI2RlZmluZSBaX1NZTkNfRkxVU0ggICAgMgogI2RlZmluZSBaX0ZVTExfRkxVU0ggICAgMwogI2RlZmluZSBaX0ZJTklTSCAgICAgICAgNAotLyogQWxsb3dlZCBmbHVzaCB2YWx1ZXM7IHNlZSBkZWZsYXRlKCkgYmVsb3cgZm9yIGRldGFpbHMgKi8KKyNkZWZpbmUgWl9CTE9DSyAgICAgICAgIDUKKyNkZWZpbmUgWl9UUkVFUyAgICAgICAgIDYKKy8qIEFsbG93ZWQgZmx1c2ggdmFsdWVzOyBzZWUgZGVmbGF0ZSgpIGFuZCBpbmZsYXRlKCkgYmVsb3cgZm9yIGRldGFpbHMgKi8KIAogI2RlZmluZSBaX09LICAgICAgICAgICAgMAogI2RlZmluZSBaX1NUUkVBTV9FTkQgICAgMQpAQCAtMTM4LDggKzE4Myw4IEBACiAjZGVmaW5lIFpfTUVNX0VSUk9SICAgICgtNCkKICNkZWZpbmUgWl9CVUZfRVJST1IgICAgKC01KQogI2RlZmluZSBaX1ZFUlNJT05fRVJST1IgKC02KQotLyogUmV0dXJuIGNvZGVzIGZvciB0aGUgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBmdW5jdGlvbnMuIE5lZ2F0aXZlCi0gKiB2YWx1ZXMgYXJlIGVycm9ycywgcG9zaXRpdmUgdmFsdWVzIGFyZSB1c2VkIGZvciBzcGVjaWFsIGJ1dCBub3JtYWwgZXZlbnRzLgorLyogUmV0dXJuIGNvZGVzIGZvciB0aGUgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBmdW5jdGlvbnMuIE5lZ2F0aXZlIHZhbHVlcworICogYXJlIGVycm9ycywgcG9zaXRpdmUgdmFsdWVzIGFyZSB1c2VkIGZvciBzcGVjaWFsIGJ1dCBub3JtYWwgZXZlbnRzLgogICovCiAKICNkZWZpbmUgWl9OT19DT01QUkVTU0lPTiAgICAgICAgIDAKQEAgLTE1MCw2MzYgKzE5NSwxNTIzIEBACiAKICNkZWZpbmUgWl9GSUxURVJFRCAgICAgICAgICAgIDEKICNkZWZpbmUgWl9IVUZGTUFOX09OTFkgICAgICAgIDIKKyNkZWZpbmUgWl9STEUgICAgICAgICAgICAgICAgIDMKKyNkZWZpbmUgWl9GSVhFRCAgICAgICAgICAgICAgIDQKICNkZWZpbmUgWl9ERUZBVUxUX1NUUkFURUdZICAgIDAKIC8qIGNvbXByZXNzaW9uIHN0cmF0ZWd5OyBzZWUgZGVmbGF0ZUluaXQyKCkgYmVsb3cgZm9yIGRldGFpbHMgKi8KIAogI2RlZmluZSBaX0JJTkFSWSAgIDAKLSNkZWZpbmUgWl9BU0NJSSAgICAxCisjZGVmaW5lIFpfVEVYVCAgICAgMQorI2RlZmluZSBaX0FTQ0lJICAgIFpfVEVYVCAgIC8qIGZvciBjb21wYXRpYmlsaXR5IHdpdGggMS4yLjIgYW5kIGVhcmxpZXIgKi8KICNkZWZpbmUgWl9VTktOT1dOICAyCi0vKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAqLworLyogUG9zc2libGUgdmFsdWVzIG9mIHRoZSBkYXRhX3R5cGUgZmllbGQgZm9yIGRlZmxhdGUoKSAqLwogCiAjZGVmaW5lIFpfREVGTEFURUQgICA4CiAvKiBUaGUgZGVmbGF0ZSBjb21wcmVzc2lvbiBtZXRob2QgKHRoZSBvbmx5IG9uZSBzdXBwb3J0ZWQgaW4gdGhpcyB2ZXJzaW9uKSAqLwogCiAjZGVmaW5lIFpfTlVMTCAgMCAgLyogZm9yIGluaXRpYWxpemluZyB6YWxsb2MsIHpmcmVlLCBvcGFxdWUgKi8KIAorI2lmbmRlZiBaX0ZSRUVUWVBFCisKKyNkZWZpbmUgemxpYl92ZXJzaW9uIHpsaWJWZXJzaW9uKCkKKy8qIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdmVyc2lvbnMgPCAxLjAuMiAqLworCiAKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJhc2ljIGZ1bmN0aW9ucyAqLwogCitaRVhURVJOIGNvbnN0IGNoYXIgKiBaRVhQT1JUIHpsaWJWZXJzaW9uIE9GKCh2b2lkKSk7CiAvKiBUaGUgYXBwbGljYXRpb24gY2FuIGNvbXBhcmUgemxpYlZlcnNpb24gYW5kIFpMSUJfVkVSU0lPTiBmb3IgY29uc2lzdGVuY3kuCi0gICBJZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGRpZmZlcnMsIHRoZSBsaWJyYXJ5IGNvZGUgYWN0dWFsbHkgdXNlZCBpcwotICAgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgemxpYi5oIGhlYWRlciBmaWxlIHVzZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgotICAgVGhpcyBjaGVjayBpcyBhdXRvbWF0aWNhbGx5IG1hZGUgYnkgZGVmbGF0ZUluaXQgYW5kIGluZmxhdGVJbml0LgorICAgSWYgdGhlIGZpcnN0IGNoYXJhY3RlciBkaWZmZXJzLCB0aGUgbGlicmFyeSBjb2RlIGFjdHVhbGx5IHVzZWQgaXMgbm90CisgICBjb21wYXRpYmxlIHdpdGggdGhlIHpsaWIuaCBoZWFkZXIgZmlsZSB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gIFRoaXMgY2hlY2sKKyAgIGlzIGF1dG9tYXRpY2FsbHkgbWFkZSBieSBkZWZsYXRlSW5pdCBhbmQgaW5mbGF0ZUluaXQuCiAgKi8KIAogLyoKLVpFWFRFUk4oaW50KSAgZGVmbGF0ZUluaXQgT0YoKHpfc3RyZWFtcCBzdHJtLCBpbnQgbGV2ZWwpKTsKK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZUluaXQgT0YoKHpfc3RyZWFtcCBzdHJtLCBpbnQgbGV2ZWwpKTsKIAotICAgICBJbml0aWFsaXplcyB0aGUgaW50ZXJuYWwgc3RyZWFtIHN0YXRlIGZvciBjb21wcmVzc2lvbi4gVGhlIGZpZWxkcwotICAgemFsbG9jLCB6ZnJlZSBhbmQgb3BhcXVlIG11c3QgYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIGJ5IHRoZSBjYWxsZXIuCi0gICBJZiB6YWxsb2MgYW5kIHpmcmVlIGFyZSBzZXQgdG8gWl9OVUxMLCBkZWZsYXRlSW5pdCB1cGRhdGVzIHRoZW0gdG8KLSAgIHVzZSBkZWZhdWx0IGFsbG9jYXRpb24gZnVuY3Rpb25zLgorICAgICBJbml0aWFsaXplcyB0aGUgaW50ZXJuYWwgc3RyZWFtIHN0YXRlIGZvciBjb21wcmVzc2lvbi4gIFRoZSBmaWVsZHMKKyAgIHphbGxvYywgemZyZWUgYW5kIG9wYXF1ZSBtdXN0IGJlIGluaXRpYWxpemVkIGJlZm9yZSBieSB0aGUgY2FsbGVyLiAgSWYKKyAgIHphbGxvYyBhbmQgemZyZWUgYXJlIHNldCB0byBaX05VTEwsIGRlZmxhdGVJbml0IHVwZGF0ZXMgdGhlbSB0byB1c2UgZGVmYXVsdAorICAgYWxsb2NhdGlvbiBmdW5jdGlvbnMuCiAKICAgICAgVGhlIGNvbXByZXNzaW9uIGxldmVsIG11c3QgYmUgWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCBvciBiZXR3ZWVuIDAgYW5kIDk6Ci0gICAxIGdpdmVzIGJlc3Qgc3BlZWQsIDkgZ2l2ZXMgYmVzdCBjb21wcmVzc2lvbiwgMCBnaXZlcyBubyBjb21wcmVzc2lvbiBhdAotICAgYWxsICh0aGUgaW5wdXQgZGF0YSBpcyBzaW1wbHkgY29waWVkIGEgYmxvY2sgYXQgYSB0aW1lKS4KLSAgIFpfREVGQVVMVF9DT01QUkVTU0lPTiByZXF1ZXN0cyBhIGRlZmF1bHQgY29tcHJvbWlzZSBiZXR3ZWVuIHNwZWVkIGFuZAotICAgY29tcHJlc3Npb24gKGN1cnJlbnRseSBlcXVpdmFsZW50IHRvIGxldmVsIDYpLgorICAgMSBnaXZlcyBiZXN0IHNwZWVkLCA5IGdpdmVzIGJlc3QgY29tcHJlc3Npb24sIDAgZ2l2ZXMgbm8gY29tcHJlc3Npb24gYXQgYWxsCisgICAodGhlIGlucHV0IGRhdGEgaXMgc2ltcGx5IGNvcGllZCBhIGJsb2NrIGF0IGEgdGltZSkuICBaX0RFRkFVTFRfQ09NUFJFU1NJT04KKyAgIHJlcXVlc3RzIGEgZGVmYXVsdCBjb21wcm9taXNlIGJldHdlZW4gc3BlZWQgYW5kIGNvbXByZXNzaW9uIChjdXJyZW50bHkKKyAgIGVxdWl2YWxlbnQgdG8gbGV2ZWwgNikuCiAKLSAgICAgZGVmbGF0ZUluaXQgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QKLSAgIGVub3VnaCBtZW1vcnksIFpfU1RSRUFNX0VSUk9SIGlmIGxldmVsIGlzIG5vdCBhIHZhbGlkIGNvbXByZXNzaW9uIGxldmVsLAorICAgICBkZWZsYXRlSW5pdCByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2gKKyAgIG1lbW9yeSwgWl9TVFJFQU1fRVJST1IgaWYgbGV2ZWwgaXMgbm90IGEgdmFsaWQgY29tcHJlc3Npb24gbGV2ZWwsIG9yCiAgICBaX1ZFUlNJT05fRVJST1IgaWYgdGhlIHpsaWIgbGlicmFyeSB2ZXJzaW9uICh6bGliX3ZlcnNpb24pIGlzIGluY29tcGF0aWJsZQotICAgd2l0aCB0aGUgdmVyc2lvbiBhc3N1bWVkIGJ5IHRoZSBjYWxsZXIgKFpMSUJfVkVSU0lPTikuCi0gICBtc2cgaXMgc2V0IHRvIG51bGwgaWYgdGhlcmUgaXMgbm8gZXJyb3IgbWVzc2FnZS4gIGRlZmxhdGVJbml0IGRvZXMgbm90Ci0gICBwZXJmb3JtIGFueSBjb21wcmVzc2lvbjogdGhpcyB3aWxsIGJlIGRvbmUgYnkgZGVmbGF0ZSgpLgorICAgd2l0aCB0aGUgdmVyc2lvbiBhc3N1bWVkIGJ5IHRoZSBjYWxsZXIgKFpMSUJfVkVSU0lPTikuICBtc2cgaXMgc2V0IHRvIG51bGwKKyAgIGlmIHRoZXJlIGlzIG5vIGVycm9yIG1lc3NhZ2UuICBkZWZsYXRlSW5pdCBkb2VzIG5vdCBwZXJmb3JtIGFueSBjb21wcmVzc2lvbjoKKyAgIHRoaXMgd2lsbCBiZSBkb25lIGJ5IGRlZmxhdGUoKS4KICovCiAKIAorWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlIE9GKCh6X3N0cmVhbXAgc3RybSwgaW50IGZsdXNoKSk7CiAvKgogICAgIGRlZmxhdGUgY29tcHJlc3NlcyBhcyBtdWNoIGRhdGEgYXMgcG9zc2libGUsIGFuZCBzdG9wcyB3aGVuIHRoZSBpbnB1dAotICBidWZmZXIgYmVjb21lcyBlbXB0eSBvciB0aGUgb3V0cHV0IGJ1ZmZlciBiZWNvbWVzIGZ1bGwuIEl0IG1heSBpbnRyb2R1Y2Ugc29tZQotICBvdXRwdXQgbGF0ZW5jeSAocmVhZGluZyBpbnB1dCB3aXRob3V0IHByb2R1Y2luZyBhbnkgb3V0cHV0KSBleGNlcHQgd2hlbgorICBidWZmZXIgYmVjb21lcyBlbXB0eSBvciB0aGUgb3V0cHV0IGJ1ZmZlciBiZWNvbWVzIGZ1bGwuICBJdCBtYXkgaW50cm9kdWNlCisgIHNvbWUgb3V0cHV0IGxhdGVuY3kgKHJlYWRpbmcgaW5wdXQgd2l0aG91dCBwcm9kdWNpbmcgYW55IG91dHB1dCkgZXhjZXB0IHdoZW4KICAgZm9yY2VkIHRvIGZsdXNoLgogCi0gICAgVGhlIGRldGFpbGVkIHNlbWFudGljcyBhcmUgYXMgZm9sbG93cy4gZGVmbGF0ZSBwZXJmb3JtcyBvbmUgb3IgYm90aCBvZiB0aGUKKyAgICBUaGUgZGV0YWlsZWQgc2VtYW50aWNzIGFyZSBhcyBmb2xsb3dzLiAgZGVmbGF0ZSBwZXJmb3JtcyBvbmUgb3IgYm90aCBvZiB0aGUKICAgZm9sbG93aW5nIGFjdGlvbnM6CiAKICAgLSBDb21wcmVzcyBtb3JlIGlucHV0IHN0YXJ0aW5nIGF0IG5leHRfaW4gYW5kIHVwZGF0ZSBuZXh0X2luIGFuZCBhdmFpbF9pbgotICAgIGFjY29yZGluZ2x5LiBJZiBub3QgYWxsIGlucHV0IGNhbiBiZSBwcm9jZXNzZWQgKGJlY2F1c2UgdGhlcmUgaXMgbm90CisgICAgYWNjb3JkaW5nbHkuICBJZiBub3QgYWxsIGlucHV0IGNhbiBiZSBwcm9jZXNzZWQgKGJlY2F1c2UgdGhlcmUgaXMgbm90CiAgICAgZW5vdWdoIHJvb20gaW4gdGhlIG91dHB1dCBidWZmZXIpLCBuZXh0X2luIGFuZCBhdmFpbF9pbiBhcmUgdXBkYXRlZCBhbmQKICAgICBwcm9jZXNzaW5nIHdpbGwgcmVzdW1lIGF0IHRoaXMgcG9pbnQgZm9yIHRoZSBuZXh0IGNhbGwgb2YgZGVmbGF0ZSgpLgogCi0gIC0gUHJvdmlkZSBtb3JlIG91dHB1dCBzdGFydGluZyBhdCBuZXh0X291dCBhbmQgdXBkYXRlIG5leHRfb3V0IGFuZCBhdmFpbF9vdXQKLSAgICBhY2NvcmRpbmdseS4gVGhpcyBhY3Rpb24gaXMgZm9yY2VkIGlmIHRoZSBwYXJhbWV0ZXIgZmx1c2ggaXMgbm9uIHplcm8uCisgIC0gR2VuZXJhdGUgbW9yZSBvdXRwdXQgc3RhcnRpbmcgYXQgbmV4dF9vdXQgYW5kIHVwZGF0ZSBuZXh0X291dCBhbmQgYXZhaWxfb3V0CisgICAgYWNjb3JkaW5nbHkuICBUaGlzIGFjdGlvbiBpcyBmb3JjZWQgaWYgdGhlIHBhcmFtZXRlciBmbHVzaCBpcyBub24gemVyby4KICAgICBGb3JjaW5nIGZsdXNoIGZyZXF1ZW50bHkgZGVncmFkZXMgdGhlIGNvbXByZXNzaW9uIHJhdGlvLCBzbyB0aGlzIHBhcmFtZXRlcgotICAgIHNob3VsZCBiZSBzZXQgb25seSB3aGVuIG5lY2Vzc2FyeSAoaW4gaW50ZXJhY3RpdmUgYXBwbGljYXRpb25zKS4KLSAgICBTb21lIG91dHB1dCBtYXkgYmUgcHJvdmlkZWQgZXZlbiBpZiBmbHVzaCBpcyBub3Qgc2V0LgorICAgIHNob3VsZCBiZSBzZXQgb25seSB3aGVuIG5lY2Vzc2FyeS4gIFNvbWUgb3V0cHV0IG1heSBiZSBwcm92aWRlZCBldmVuIGlmCisgICAgZmx1c2ggaXMgemVyby4KIAotICBCZWZvcmUgdGhlIGNhbGwgb2YgZGVmbGF0ZSgpLCB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGVuc3VyZSB0aGF0IGF0IGxlYXN0Ci0gIG9uZSBvZiB0aGUgYWN0aW9ucyBpcyBwb3NzaWJsZSwgYnkgcHJvdmlkaW5nIG1vcmUgaW5wdXQgYW5kL29yIGNvbnN1bWluZwotICBtb3JlIG91dHB1dCwgYW5kIHVwZGF0aW5nIGF2YWlsX2luIG9yIGF2YWlsX291dCBhY2NvcmRpbmdseTsgYXZhaWxfb3V0Ci0gIHNob3VsZCBuZXZlciBiZSB6ZXJvIGJlZm9yZSB0aGUgY2FsbC4gVGhlIGFwcGxpY2F0aW9uIGNhbiBjb25zdW1lIHRoZQotICBjb21wcmVzc2VkIG91dHB1dCB3aGVuIGl0IHdhbnRzLCBmb3IgZXhhbXBsZSB3aGVuIHRoZSBvdXRwdXQgYnVmZmVyIGlzIGZ1bGwKLSAgKGF2YWlsX291dCA9PSAwKSwgb3IgYWZ0ZXIgZWFjaCBjYWxsIG9mIGRlZmxhdGUoKS4gSWYgZGVmbGF0ZSByZXR1cm5zIFpfT0sKLSAgYW5kIHdpdGggemVybyBhdmFpbF9vdXQsIGl0IG11c3QgYmUgY2FsbGVkIGFnYWluIGFmdGVyIG1ha2luZyByb29tIGluIHRoZQotICBvdXRwdXQgYnVmZmVyIGJlY2F1c2UgdGhlcmUgbWlnaHQgYmUgbW9yZSBvdXRwdXQgcGVuZGluZy4KKyAgICBCZWZvcmUgdGhlIGNhbGwgb2YgZGVmbGF0ZSgpLCB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGVuc3VyZSB0aGF0IGF0IGxlYXN0CisgIG9uZSBvZiB0aGUgYWN0aW9ucyBpcyBwb3NzaWJsZSwgYnkgcHJvdmlkaW5nIG1vcmUgaW5wdXQgYW5kL29yIGNvbnN1bWluZyBtb3JlCisgIG91dHB1dCwgYW5kIHVwZGF0aW5nIGF2YWlsX2luIG9yIGF2YWlsX291dCBhY2NvcmRpbmdseTsgYXZhaWxfb3V0IHNob3VsZAorICBuZXZlciBiZSB6ZXJvIGJlZm9yZSB0aGUgY2FsbC4gIFRoZSBhcHBsaWNhdGlvbiBjYW4gY29uc3VtZSB0aGUgY29tcHJlc3NlZAorICBvdXRwdXQgd2hlbiBpdCB3YW50cywgZm9yIGV4YW1wbGUgd2hlbiB0aGUgb3V0cHV0IGJ1ZmZlciBpcyBmdWxsIChhdmFpbF9vdXQKKyAgPT0gMCksIG9yIGFmdGVyIGVhY2ggY2FsbCBvZiBkZWZsYXRlKCkuICBJZiBkZWZsYXRlIHJldHVybnMgWl9PSyBhbmQgd2l0aAorICB6ZXJvIGF2YWlsX291dCwgaXQgbXVzdCBiZSBjYWxsZWQgYWdhaW4gYWZ0ZXIgbWFraW5nIHJvb20gaW4gdGhlIG91dHB1dAorICBidWZmZXIgYmVjYXVzZSB0aGVyZSBtaWdodCBiZSBtb3JlIG91dHB1dCBwZW5kaW5nLiBTZWUgZGVmbGF0ZVBlbmRpbmcoKSwKKyAgd2hpY2ggY2FuIGJlIHVzZWQgaWYgZGVzaXJlZCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlcmUgaXMgbW9yZSBvdXRwdXQKKyAgaW4gdGhhdCBjYXNlLgorCisgICAgTm9ybWFsbHkgdGhlIHBhcmFtZXRlciBmbHVzaCBpcyBzZXQgdG8gWl9OT19GTFVTSCwgd2hpY2ggYWxsb3dzIGRlZmxhdGUgdG8KKyAgZGVjaWRlIGhvdyBtdWNoIGRhdGEgdG8gYWNjdW11bGF0ZSBiZWZvcmUgcHJvZHVjaW5nIG91dHB1dCwgaW4gb3JkZXIgdG8KKyAgbWF4aW1pemUgY29tcHJlc3Npb24uCiAKICAgICBJZiB0aGUgcGFyYW1ldGVyIGZsdXNoIGlzIHNldCB0byBaX1NZTkNfRkxVU0gsIGFsbCBwZW5kaW5nIG91dHB1dCBpcwogICBmbHVzaGVkIHRvIHRoZSBvdXRwdXQgYnVmZmVyIGFuZCB0aGUgb3V0cHV0IGlzIGFsaWduZWQgb24gYSBieXRlIGJvdW5kYXJ5LCBzbwotICB0aGF0IHRoZSBkZWNvbXByZXNzb3IgY2FuIGdldCBhbGwgaW5wdXQgZGF0YSBhdmFpbGFibGUgc28gZmFyLiAoSW4gcGFydGljdWxhcgotICBhdmFpbF9pbiBpcyB6ZXJvIGFmdGVyIHRoZSBjYWxsIGlmIGVub3VnaCBvdXRwdXQgc3BhY2UgaGFzIGJlZW4gcHJvdmlkZWQKLSAgYmVmb3JlIHRoZSBjYWxsLikgIEZsdXNoaW5nIG1heSBkZWdyYWRlIGNvbXByZXNzaW9uIGZvciBzb21lIGNvbXByZXNzaW9uCi0gIGFsZ29yaXRobXMgYW5kIHNvIGl0IHNob3VsZCBiZSB1c2VkIG9ubHkgd2hlbiBuZWNlc3NhcnkuCisgIHRoYXQgdGhlIGRlY29tcHJlc3NvciBjYW4gZ2V0IGFsbCBpbnB1dCBkYXRhIGF2YWlsYWJsZSBzbyBmYXIuICAoSW4KKyAgcGFydGljdWxhciBhdmFpbF9pbiBpcyB6ZXJvIGFmdGVyIHRoZSBjYWxsIGlmIGVub3VnaCBvdXRwdXQgc3BhY2UgaGFzIGJlZW4KKyAgcHJvdmlkZWQgYmVmb3JlIHRoZSBjYWxsLikgRmx1c2hpbmcgbWF5IGRlZ3JhZGUgY29tcHJlc3Npb24gZm9yIHNvbWUKKyAgY29tcHJlc3Npb24gYWxnb3JpdGhtcyBhbmQgc28gaXQgc2hvdWxkIGJlIHVzZWQgb25seSB3aGVuIG5lY2Vzc2FyeS4gIFRoaXMKKyAgY29tcGxldGVzIHRoZSBjdXJyZW50IGRlZmxhdGUgYmxvY2sgYW5kIGZvbGxvd3MgaXQgd2l0aCBhbiBlbXB0eSBzdG9yZWQgYmxvY2sKKyAgdGhhdCBpcyB0aHJlZSBiaXRzIHBsdXMgZmlsbGVyIGJpdHMgdG8gdGhlIG5leHQgYnl0ZSwgZm9sbG93ZWQgYnkgZm91ciBieXRlcworICAoMDAgMDAgZmYgZmYpLgorCisgICAgSWYgZmx1c2ggaXMgc2V0IHRvIFpfUEFSVElBTF9GTFVTSCwgYWxsIHBlbmRpbmcgb3V0cHV0IGlzIGZsdXNoZWQgdG8gdGhlCisgIG91dHB1dCBidWZmZXIsIGJ1dCB0aGUgb3V0cHV0IGlzIG5vdCBhbGlnbmVkIHRvIGEgYnl0ZSBib3VuZGFyeS4gIEFsbCBvZiB0aGUKKyAgaW5wdXQgZGF0YSBzbyBmYXIgd2lsbCBiZSBhdmFpbGFibGUgdG8gdGhlIGRlY29tcHJlc3NvciwgYXMgZm9yIFpfU1lOQ19GTFVTSC4KKyAgVGhpcyBjb21wbGV0ZXMgdGhlIGN1cnJlbnQgZGVmbGF0ZSBibG9jayBhbmQgZm9sbG93cyBpdCB3aXRoIGFuIGVtcHR5IGZpeGVkCisgIGNvZGVzIGJsb2NrIHRoYXQgaXMgMTAgYml0cyBsb25nLiAgVGhpcyBhc3N1cmVzIHRoYXQgZW5vdWdoIGJ5dGVzIGFyZSBvdXRwdXQKKyAgaW4gb3JkZXIgZm9yIHRoZSBkZWNvbXByZXNzb3IgdG8gZmluaXNoIHRoZSBibG9jayBiZWZvcmUgdGhlIGVtcHR5IGZpeGVkCisgIGNvZGVzIGJsb2NrLgorCisgICAgSWYgZmx1c2ggaXMgc2V0IHRvIFpfQkxPQ0ssIGEgZGVmbGF0ZSBibG9jayBpcyBjb21wbGV0ZWQgYW5kIGVtaXR0ZWQsIGFzCisgIGZvciBaX1NZTkNfRkxVU0gsIGJ1dCB0aGUgb3V0cHV0IGlzIG5vdCBhbGlnbmVkIG9uIGEgYnl0ZSBib3VuZGFyeSwgYW5kIHVwIHRvCisgIHNldmVuIGJpdHMgb2YgdGhlIGN1cnJlbnQgYmxvY2sgYXJlIGhlbGQgdG8gYmUgd3JpdHRlbiBhcyB0aGUgbmV4dCBieXRlIGFmdGVyCisgIHRoZSBuZXh0IGRlZmxhdGUgYmxvY2sgaXMgY29tcGxldGVkLiAgSW4gdGhpcyBjYXNlLCB0aGUgZGVjb21wcmVzc29yIG1heSBub3QKKyAgYmUgcHJvdmlkZWQgZW5vdWdoIGJpdHMgYXQgdGhpcyBwb2ludCBpbiBvcmRlciB0byBjb21wbGV0ZSBkZWNvbXByZXNzaW9uIG9mCisgIHRoZSBkYXRhIHByb3ZpZGVkIHNvIGZhciB0byB0aGUgY29tcHJlc3Nvci4gIEl0IG1heSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBuZXh0CisgIGJsb2NrIHRvIGJlIGVtaXR0ZWQuICBUaGlzIGlzIGZvciBhZHZhbmNlZCBhcHBsaWNhdGlvbnMgdGhhdCBuZWVkIHRvIGNvbnRyb2wKKyAgdGhlIGVtaXNzaW9uIG9mIGRlZmxhdGUgYmxvY2tzLgogCiAgICAgSWYgZmx1c2ggaXMgc2V0IHRvIFpfRlVMTF9GTFVTSCwgYWxsIG91dHB1dCBpcyBmbHVzaGVkIGFzIHdpdGgKICAgWl9TWU5DX0ZMVVNILCBhbmQgdGhlIGNvbXByZXNzaW9uIHN0YXRlIGlzIHJlc2V0IHNvIHRoYXQgZGVjb21wcmVzc2lvbiBjYW4KICAgcmVzdGFydCBmcm9tIHRoaXMgcG9pbnQgaWYgcHJldmlvdXMgY29tcHJlc3NlZCBkYXRhIGhhcyBiZWVuIGRhbWFnZWQgb3IgaWYKLSAgcmFuZG9tIGFjY2VzcyBpcyBkZXNpcmVkLiBVc2luZyBaX0ZVTExfRkxVU0ggdG9vIG9mdGVuIGNhbiBzZXJpb3VzbHkgZGVncmFkZQotICB0aGUgY29tcHJlc3Npb24uCisgIHJhbmRvbSBhY2Nlc3MgaXMgZGVzaXJlZC4gIFVzaW5nIFpfRlVMTF9GTFVTSCB0b28gb2Z0ZW4gY2FuIHNlcmlvdXNseSBkZWdyYWRlCisgIGNvbXByZXNzaW9uLgogCiAgICAgSWYgZGVmbGF0ZSByZXR1cm5zIHdpdGggYXZhaWxfb3V0ID09IDAsIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgYWdhaW4KICAgd2l0aCB0aGUgc2FtZSB2YWx1ZSBvZiB0aGUgZmx1c2ggcGFyYW1ldGVyIGFuZCBtb3JlIG91dHB1dCBzcGFjZSAodXBkYXRlZAogICBhdmFpbF9vdXQpLCB1bnRpbCB0aGUgZmx1c2ggaXMgY29tcGxldGUgKGRlZmxhdGUgcmV0dXJucyB3aXRoIG5vbi16ZXJvCi0gIGF2YWlsX291dCkuCisgIGF2YWlsX291dCkuICBJbiB0aGUgY2FzZSBvZiBhIFpfRlVMTF9GTFVTSCBvciBaX1NZTkNfRkxVU0gsIG1ha2Ugc3VyZSB0aGF0CisgIGF2YWlsX291dCBpcyBncmVhdGVyIHRoYW4gc2l4IHRvIGF2b2lkIHJlcGVhdGVkIGZsdXNoIG1hcmtlcnMgZHVlIHRvCisgIGF2YWlsX291dCA9PSAwIG9uIHJldHVybi4KIAogICAgIElmIHRoZSBwYXJhbWV0ZXIgZmx1c2ggaXMgc2V0IHRvIFpfRklOSVNILCBwZW5kaW5nIGlucHV0IGlzIHByb2Nlc3NlZCwKLSAgcGVuZGluZyBvdXRwdXQgaXMgZmx1c2hlZCBhbmQgZGVmbGF0ZSByZXR1cm5zIHdpdGggWl9TVFJFQU1fRU5EIGlmIHRoZXJlCi0gIHdhcyBlbm91Z2ggb3V0cHV0IHNwYWNlOyBpZiBkZWZsYXRlIHJldHVybnMgd2l0aCBaX09LLCB0aGlzIGZ1bmN0aW9uIG11c3QgYmUKLSAgY2FsbGVkIGFnYWluIHdpdGggWl9GSU5JU0ggYW5kIG1vcmUgb3V0cHV0IHNwYWNlICh1cGRhdGVkIGF2YWlsX291dCkgYnV0IG5vCi0gIG1vcmUgaW5wdXQgZGF0YSwgdW50aWwgaXQgcmV0dXJucyB3aXRoIFpfU1RSRUFNX0VORCBvciBhbiBlcnJvci4gQWZ0ZXIKLSAgZGVmbGF0ZSBoYXMgcmV0dXJuZWQgWl9TVFJFQU1fRU5ELCB0aGUgb25seSBwb3NzaWJsZSBvcGVyYXRpb25zIG9uIHRoZQotICBzdHJlYW0gYXJlIGRlZmxhdGVSZXNldCBvciBkZWZsYXRlRW5kLgorICBwZW5kaW5nIG91dHB1dCBpcyBmbHVzaGVkIGFuZCBkZWZsYXRlIHJldHVybnMgd2l0aCBaX1NUUkVBTV9FTkQgaWYgdGhlcmUgd2FzCisgIGVub3VnaCBvdXRwdXQgc3BhY2UuICBJZiBkZWZsYXRlIHJldHVybnMgd2l0aCBaX09LIG9yIFpfQlVGX0VSUk9SLCB0aGlzCisgIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGFnYWluIHdpdGggWl9GSU5JU0ggYW5kIG1vcmUgb3V0cHV0IHNwYWNlICh1cGRhdGVkCisgIGF2YWlsX291dCkgYnV0IG5vIG1vcmUgaW5wdXQgZGF0YSwgdW50aWwgaXQgcmV0dXJucyB3aXRoIFpfU1RSRUFNX0VORCBvciBhbgorICBlcnJvci4gIEFmdGVyIGRlZmxhdGUgaGFzIHJldHVybmVkIFpfU1RSRUFNX0VORCwgdGhlIG9ubHkgcG9zc2libGUgb3BlcmF0aW9ucworICBvbiB0aGUgc3RyZWFtIGFyZSBkZWZsYXRlUmVzZXQgb3IgZGVmbGF0ZUVuZC4KIAotICAgIFpfRklOSVNIIGNhbiBiZSB1c2VkIGltbWVkaWF0ZWx5IGFmdGVyIGRlZmxhdGVJbml0IGlmIGFsbCB0aGUgY29tcHJlc3Npb24KLSAgaXMgdG8gYmUgZG9uZSBpbiBhIHNpbmdsZSBzdGVwLiBJbiB0aGlzIGNhc2UsIGF2YWlsX291dCBtdXN0IGJlIGF0IGxlYXN0Ci0gIDAuMSUgbGFyZ2VyIHRoYW4gYXZhaWxfaW4gcGx1cyAxMiBieXRlcy4gIElmIGRlZmxhdGUgZG9lcyBub3QgcmV0dXJuCi0gIFpfU1RSRUFNX0VORCwgdGhlbiBpdCBtdXN0IGJlIGNhbGxlZCBhZ2FpbiBhcyBkZXNjcmliZWQgYWJvdmUuCisgICAgWl9GSU5JU0ggY2FuIGJlIHVzZWQgaW4gdGhlIGZpcnN0IGRlZmxhdGUgY2FsbCBhZnRlciBkZWZsYXRlSW5pdCBpZiBhbGwgdGhlCisgIGNvbXByZXNzaW9uIGlzIHRvIGJlIGRvbmUgaW4gYSBzaW5nbGUgc3RlcC4gIEluIG9yZGVyIHRvIGNvbXBsZXRlIGluIG9uZQorICBjYWxsLCBhdmFpbF9vdXQgbXVzdCBiZSBhdCBsZWFzdCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgZGVmbGF0ZUJvdW5kIChzZWUKKyAgYmVsb3cpLiAgVGhlbiBkZWZsYXRlIGlzIGd1YXJhbnRlZWQgdG8gcmV0dXJuIFpfU1RSRUFNX0VORC4gIElmIG5vdCBlbm91Z2gKKyAgb3V0cHV0IHNwYWNlIGlzIHByb3ZpZGVkLCBkZWZsYXRlIHdpbGwgbm90IHJldHVybiBaX1NUUkVBTV9FTkQsIGFuZCBpdCBtdXN0CisgIGJlIGNhbGxlZCBhZ2FpbiBhcyBkZXNjcmliZWQgYWJvdmUuCiAKLSAgICBkZWZsYXRlKCkgc2V0cyBzdHJtLT5hZGxlciB0byB0aGUgYWRsZXIzMiBjaGVja3N1bSBvZiBhbGwgaW5wdXQgcmVhZAotICBzbyBmYXIgKHRoYXQgaXMsIHRvdGFsX2luIGJ5dGVzKS4KKyAgICBkZWZsYXRlKCkgc2V0cyBzdHJtLT5hZGxlciB0byB0aGUgQWRsZXItMzIgY2hlY2tzdW0gb2YgYWxsIGlucHV0IHJlYWQKKyAgc28gZmFyICh0aGF0IGlzLCB0b3RhbF9pbiBieXRlcykuICBJZiBhIGd6aXAgc3RyZWFtIGlzIGJlaW5nIGdlbmVyYXRlZCwgdGhlbgorICBzdHJtLT5hZGxlciB3aWxsIGJlIHRoZSBDUkMtMzIgY2hlY2tzdW0gb2YgdGhlIGlucHV0IHJlYWQgc28gZmFyLiAgKFNlZQorICBkZWZsYXRlSW5pdDIgYmVsb3cuKQogCi0gICAgZGVmbGF0ZSgpIG1heSB1cGRhdGUgZGF0YV90eXBlIGlmIGl0IGNhbiBtYWtlIGEgZ29vZCBndWVzcyBhYm91dAotICB0aGUgaW5wdXQgZGF0YSB0eXBlIChaX0FTQ0lJIG9yIFpfQklOQVJZKS4gSW4gZG91YnQsIHRoZSBkYXRhIGlzIGNvbnNpZGVyZWQKLSAgYmluYXJ5LiBUaGlzIGZpZWxkIGlzIG9ubHkgZm9yIGluZm9ybWF0aW9uIHB1cnBvc2VzIGFuZCBkb2VzIG5vdCBhZmZlY3QKLSAgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobSBpbiBhbnkgbWFubmVyLgorICAgIGRlZmxhdGUoKSBtYXkgdXBkYXRlIHN0cm0tPmRhdGFfdHlwZSBpZiBpdCBjYW4gbWFrZSBhIGdvb2QgZ3Vlc3MgYWJvdXQKKyAgdGhlIGlucHV0IGRhdGEgdHlwZSAoWl9CSU5BUlkgb3IgWl9URVhUKS4gIElmIGluIGRvdWJ0LCB0aGUgZGF0YSBpcworICBjb25zaWRlcmVkIGJpbmFyeS4gIFRoaXMgZmllbGQgaXMgb25seSBmb3IgaW5mb3JtYXRpb24gcHVycG9zZXMgYW5kIGRvZXMgbm90CisgIGFmZmVjdCB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtIGluIGFueSBtYW5uZXIuCiAKICAgICBkZWZsYXRlKCkgcmV0dXJucyBaX09LIGlmIHNvbWUgcHJvZ3Jlc3MgaGFzIGJlZW4gbWFkZSAobW9yZSBpbnB1dAogICBwcm9jZXNzZWQgb3IgbW9yZSBvdXRwdXQgcHJvZHVjZWQpLCBaX1NUUkVBTV9FTkQgaWYgYWxsIGlucHV0IGhhcyBiZWVuCiAgIGNvbnN1bWVkIGFuZCBhbGwgb3V0cHV0IGhhcyBiZWVuIHByb2R1Y2VkIChvbmx5IHdoZW4gZmx1c2ggaXMgc2V0IHRvCiAgIFpfRklOSVNIKSwgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50IChmb3IgZXhhbXBsZQotICBpZiBuZXh0X2luIG9yIG5leHRfb3V0IHdhcyBOVUxMKSwgWl9CVUZfRVJST1IgaWYgbm8gcHJvZ3Jlc3MgaXMgcG9zc2libGUKLSAgKGZvciBleGFtcGxlIGF2YWlsX2luIG9yIGF2YWlsX291dCB3YXMgemVybykuCisgIGlmIG5leHRfaW4gb3IgbmV4dF9vdXQgd2FzIFpfTlVMTCBvciB0aGUgc3RhdGUgd2FzIGluYWR2ZXJ0ZW50bHkgd3JpdHRlbiBvdmVyCisgIGJ5IHRoZSBhcHBsaWNhdGlvbiksIG9yIFpfQlVGX0VSUk9SIGlmIG5vIHByb2dyZXNzIGlzIHBvc3NpYmxlIChmb3IgZXhhbXBsZQorICBhdmFpbF9pbiBvciBhdmFpbF9vdXQgd2FzIHplcm8pLiAgTm90ZSB0aGF0IFpfQlVGX0VSUk9SIGlzIG5vdCBmYXRhbCwgYW5kCisgIGRlZmxhdGUoKSBjYW4gYmUgY2FsbGVkIGFnYWluIHdpdGggbW9yZSBpbnB1dCBhbmQgbW9yZSBvdXRwdXQgc3BhY2UgdG8KKyAgY29udGludWUgY29tcHJlc3NpbmcuCiAqLwogCiAKK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZUVuZCBPRigoel9zdHJlYW1wIHN0cm0pKTsKIC8qCiAgICAgIEFsbCBkeW5hbWljYWxseSBhbGxvY2F0ZWQgZGF0YSBzdHJ1Y3R1cmVzIGZvciB0aGlzIHN0cmVhbSBhcmUgZnJlZWQuCi0gICBUaGlzIGZ1bmN0aW9uIGRpc2NhcmRzIGFueSB1bnByb2Nlc3NlZCBpbnB1dCBhbmQgZG9lcyBub3QgZmx1c2ggYW55Ci0gICBwZW5kaW5nIG91dHB1dC4KKyAgIFRoaXMgZnVuY3Rpb24gZGlzY2FyZHMgYW55IHVucHJvY2Vzc2VkIGlucHV0IGFuZCBkb2VzIG5vdCBmbHVzaCBhbnkgcGVuZGluZworICAgb3V0cHV0LgogCiAgICAgIGRlZmxhdGVFbmQgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfU1RSRUFNX0VSUk9SIGlmIHRoZQogICAgc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQsIFpfREFUQV9FUlJPUiBpZiB0aGUgc3RyZWFtIHdhcyBmcmVlZAotICAgcHJlbWF0dXJlbHkgKHNvbWUgaW5wdXQgb3Igb3V0cHV0IHdhcyBkaXNjYXJkZWQpLiBJbiB0aGUgZXJyb3IgY2FzZSwKLSAgIG1zZyBtYXkgYmUgc2V0IGJ1dCB0aGVuIHBvaW50cyB0byBhIHN0YXRpYyBzdHJpbmcgKHdoaWNoIG11c3Qgbm90IGJlCisgICBwcmVtYXR1cmVseSAoc29tZSBpbnB1dCBvciBvdXRwdXQgd2FzIGRpc2NhcmRlZCkuICBJbiB0aGUgZXJyb3IgY2FzZSwgbXNnCisgICBtYXkgYmUgc2V0IGJ1dCB0aGVuIHBvaW50cyB0byBhIHN0YXRpYyBzdHJpbmcgKHdoaWNoIG11c3Qgbm90IGJlCiAgICBkZWFsbG9jYXRlZCkuCiAqLwogCisjZW5kaWYgIC8qICFaX0ZSRUVUWVBFICovCiAKIC8qCi1aRVhURVJOKGludCkgIGluZmxhdGVJbml0IE9GKCh6X3N0cmVhbXAgc3RybSkpOworWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlSW5pdCBPRigoel9zdHJlYW1wIHN0cm0pKTsKIAotICAgICBJbml0aWFsaXplcyB0aGUgaW50ZXJuYWwgc3RyZWFtIHN0YXRlIGZvciBkZWNvbXByZXNzaW9uLiBUaGUgZmllbGRzCisgICAgIEluaXRpYWxpemVzIHRoZSBpbnRlcm5hbCBzdHJlYW0gc3RhdGUgZm9yIGRlY29tcHJlc3Npb24uICBUaGUgZmllbGRzCiAgICBuZXh0X2luLCBhdmFpbF9pbiwgemFsbG9jLCB6ZnJlZSBhbmQgb3BhcXVlIG11c3QgYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIGJ5Ci0gICB0aGUgY2FsbGVyLiBJZiBuZXh0X2luIGlzIG5vdCBaX05VTEwgYW5kIGF2YWlsX2luIGlzIGxhcmdlIGVub3VnaCAodGhlIGV4YWN0Ci0gICB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBjb21wcmVzc2lvbiBtZXRob2QpLCBpbmZsYXRlSW5pdCBkZXRlcm1pbmVzIHRoZQotICAgY29tcHJlc3Npb24gbWV0aG9kIGZyb20gdGhlIHpsaWIgaGVhZGVyIGFuZCBhbGxvY2F0ZXMgYWxsIGRhdGEgc3RydWN0dXJlcwotICAgYWNjb3JkaW5nbHk7IG90aGVyd2lzZSB0aGUgYWxsb2NhdGlvbiB3aWxsIGJlIGRlZmVycmVkIHRvIHRoZSBmaXJzdCBjYWxsIG9mCi0gICBpbmZsYXRlLiAgSWYgemFsbG9jIGFuZCB6ZnJlZSBhcmUgc2V0IHRvIFpfTlVMTCwgaW5mbGF0ZUluaXQgdXBkYXRlcyB0aGVtIHRvCi0gICB1c2UgZGVmYXVsdCBhbGxvY2F0aW9uIGZ1bmN0aW9ucy4KKyAgIHRoZSBjYWxsZXIuICBJbiB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIGluZmxhdGUsIHRoZSBwcm92aWRlZCBpbnB1dCBpcyBub3QKKyAgIHJlYWQgb3IgY29uc3VtZWQuICBUaGUgYWxsb2NhdGlvbiBvZiBhIHNsaWRpbmcgd2luZG93IHdpbGwgYmUgZGVmZXJyZWQgdG8KKyAgIHRoZSBmaXJzdCBjYWxsIG9mIGluZmxhdGUgKGlmIHRoZSBkZWNvbXByZXNzaW9uIGRvZXMgbm90IGNvbXBsZXRlIG9uIHRoZQorICAgZmlyc3QgY2FsbCkuICBJZiB6YWxsb2MgYW5kIHpmcmVlIGFyZSBzZXQgdG8gWl9OVUxMLCBpbmZsYXRlSW5pdCB1cGRhdGVzCisgICB0aGVtIHRvIHVzZSBkZWZhdWx0IGFsbG9jYXRpb24gZnVuY3Rpb25zLgogCiAgICAgIGluZmxhdGVJbml0IHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX01FTV9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaAogICAgbWVtb3J5LCBaX1ZFUlNJT05fRVJST1IgaWYgdGhlIHpsaWIgbGlicmFyeSB2ZXJzaW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZQotICAgdmVyc2lvbiBhc3N1bWVkIGJ5IHRoZSBjYWxsZXIuICBtc2cgaXMgc2V0IHRvIG51bGwgaWYgdGhlcmUgaXMgbm8gZXJyb3IKLSAgIG1lc3NhZ2UuIGluZmxhdGVJbml0IGRvZXMgbm90IHBlcmZvcm0gYW55IGRlY29tcHJlc3Npb24gYXBhcnQgZnJvbSByZWFkaW5nCi0gICB0aGUgemxpYiBoZWFkZXIgaWYgcHJlc2VudDogdGhpcyB3aWxsIGJlIGRvbmUgYnkgaW5mbGF0ZSgpLiAgKFNvIG5leHRfaW4gYW5kCi0gICBhdmFpbF9pbiBtYXkgYmUgbW9kaWZpZWQsIGJ1dCBuZXh0X291dCBhbmQgYXZhaWxfb3V0IGFyZSB1bmNoYW5nZWQuKQorICAgdmVyc2lvbiBhc3N1bWVkIGJ5IHRoZSBjYWxsZXIsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBwYXJhbWV0ZXJzIGFyZQorICAgaW52YWxpZCwgc3VjaCBhcyBhIG51bGwgcG9pbnRlciB0byB0aGUgc3RydWN0dXJlLiAgbXNnIGlzIHNldCB0byBudWxsIGlmCisgICB0aGVyZSBpcyBubyBlcnJvciBtZXNzYWdlLiAgaW5mbGF0ZUluaXQgZG9lcyBub3QgcGVyZm9ybSBhbnkgZGVjb21wcmVzc2lvbi4KKyAgIEFjdHVhbCBkZWNvbXByZXNzaW9uIHdpbGwgYmUgZG9uZSBieSBpbmZsYXRlKCkuICBTbyBuZXh0X2luLCBhbmQgYXZhaWxfaW4sCisgICBuZXh0X291dCwgYW5kIGF2YWlsX291dCBhcmUgdW51c2VkIGFuZCB1bmNoYW5nZWQuICBUaGUgY3VycmVudAorICAgaW1wbGVtZW50YXRpb24gb2YgaW5mbGF0ZUluaXQoKSBkb2VzIG5vdCBwcm9jZXNzIGFueSBoZWFkZXIgaW5mb3JtYXRpb24gLS0KKyAgIHRoYXQgaXMgZGVmZXJyZWQgdW50aWwgaW5mbGF0ZSgpIGlzIGNhbGxlZC4KICovCiAKIAotWkVYVEVSTihpbnQpIGluZmxhdGUgT0YoKHpfc3RyZWFtcCBzdHJtLCBpbnQgZmx1c2gpKTsKK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZSBPRigoel9zdHJlYW1wIHN0cm0sIGludCBmbHVzaCkpOwogLyoKICAgICBpbmZsYXRlIGRlY29tcHJlc3NlcyBhcyBtdWNoIGRhdGEgYXMgcG9zc2libGUsIGFuZCBzdG9wcyB3aGVuIHRoZSBpbnB1dAotICBidWZmZXIgYmVjb21lcyBlbXB0eSBvciB0aGUgb3V0cHV0IGJ1ZmZlciBiZWNvbWVzIGZ1bGwuIEl0IG1heSBzb21lCi0gIGludHJvZHVjZSBzb21lIG91dHB1dCBsYXRlbmN5IChyZWFkaW5nIGlucHV0IHdpdGhvdXQgcHJvZHVjaW5nIGFueSBvdXRwdXQpCi0gIGV4Y2VwdCB3aGVuIGZvcmNlZCB0byBmbHVzaC4KKyAgYnVmZmVyIGJlY29tZXMgZW1wdHkgb3IgdGhlIG91dHB1dCBidWZmZXIgYmVjb21lcyBmdWxsLiAgSXQgbWF5IGludHJvZHVjZQorICBzb21lIG91dHB1dCBsYXRlbmN5IChyZWFkaW5nIGlucHV0IHdpdGhvdXQgcHJvZHVjaW5nIGFueSBvdXRwdXQpIGV4Y2VwdCB3aGVuCisgIGZvcmNlZCB0byBmbHVzaC4KIAotICBUaGUgZGV0YWlsZWQgc2VtYW50aWNzIGFyZSBhcyBmb2xsb3dzLiBpbmZsYXRlIHBlcmZvcm1zIG9uZSBvciBib3RoIG9mIHRoZQorICBUaGUgZGV0YWlsZWQgc2VtYW50aWNzIGFyZSBhcyBmb2xsb3dzLiAgaW5mbGF0ZSBwZXJmb3JtcyBvbmUgb3IgYm90aCBvZiB0aGUKICAgZm9sbG93aW5nIGFjdGlvbnM6CiAKICAgLSBEZWNvbXByZXNzIG1vcmUgaW5wdXQgc3RhcnRpbmcgYXQgbmV4dF9pbiBhbmQgdXBkYXRlIG5leHRfaW4gYW5kIGF2YWlsX2luCi0gICAgYWNjb3JkaW5nbHkuIElmIG5vdCBhbGwgaW5wdXQgY2FuIGJlIHByb2Nlc3NlZCAoYmVjYXVzZSB0aGVyZSBpcyBub3QKLSAgICBlbm91Z2ggcm9vbSBpbiB0aGUgb3V0cHV0IGJ1ZmZlciksIG5leHRfaW4gaXMgdXBkYXRlZCBhbmQgcHJvY2Vzc2luZwotICAgIHdpbGwgcmVzdW1lIGF0IHRoaXMgcG9pbnQgZm9yIHRoZSBuZXh0IGNhbGwgb2YgaW5mbGF0ZSgpLgorICAgIGFjY29yZGluZ2x5LiAgSWYgbm90IGFsbCBpbnB1dCBjYW4gYmUgcHJvY2Vzc2VkIChiZWNhdXNlIHRoZXJlIGlzIG5vdAorICAgIGVub3VnaCByb29tIGluIHRoZSBvdXRwdXQgYnVmZmVyKSwgdGhlbiBuZXh0X2luIGFuZCBhdmFpbF9pbiBhcmUgdXBkYXRlZAorICAgIGFjY29yZGluZ2x5LCBhbmQgcHJvY2Vzc2luZyB3aWxsIHJlc3VtZSBhdCB0aGlzIHBvaW50IGZvciB0aGUgbmV4dCBjYWxsIG9mCisgICAgaW5mbGF0ZSgpLgogCi0gIC0gUHJvdmlkZSBtb3JlIG91dHB1dCBzdGFydGluZyBhdCBuZXh0X291dCBhbmQgdXBkYXRlIG5leHRfb3V0IGFuZCBhdmFpbF9vdXQKLSAgICBhY2NvcmRpbmdseS4gIGluZmxhdGUoKSBwcm92aWRlcyBhcyBtdWNoIG91dHB1dCBhcyBwb3NzaWJsZSwgdW50aWwgdGhlcmUKLSAgICBpcyBubyBtb3JlIGlucHV0IGRhdGEgb3Igbm8gbW9yZSBzcGFjZSBpbiB0aGUgb3V0cHV0IGJ1ZmZlciAoc2VlIGJlbG93Ci0gICAgYWJvdXQgdGhlIGZsdXNoIHBhcmFtZXRlcikuCisgIC0gR2VuZXJhdGUgbW9yZSBvdXRwdXQgc3RhcnRpbmcgYXQgbmV4dF9vdXQgYW5kIHVwZGF0ZSBuZXh0X291dCBhbmQgYXZhaWxfb3V0CisgICAgYWNjb3JkaW5nbHkuICBpbmZsYXRlKCkgcHJvdmlkZXMgYXMgbXVjaCBvdXRwdXQgYXMgcG9zc2libGUsIHVudGlsIHRoZXJlIGlzCisgICAgbm8gbW9yZSBpbnB1dCBkYXRhIG9yIG5vIG1vcmUgc3BhY2UgaW4gdGhlIG91dHB1dCBidWZmZXIgKHNlZSBiZWxvdyBhYm91dAorICAgIHRoZSBmbHVzaCBwYXJhbWV0ZXIpLgogCi0gIEJlZm9yZSB0aGUgY2FsbCBvZiBpbmZsYXRlKCksIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgZW5zdXJlIHRoYXQgYXQgbGVhc3QKLSAgb25lIG9mIHRoZSBhY3Rpb25zIGlzIHBvc3NpYmxlLCBieSBwcm92aWRpbmcgbW9yZSBpbnB1dCBhbmQvb3IgY29uc3VtaW5nCi0gIG1vcmUgb3V0cHV0LCBhbmQgdXBkYXRpbmcgdGhlIG5leHRfKiBhbmQgYXZhaWxfKiB2YWx1ZXMgYWNjb3JkaW5nbHkuCi0gIFRoZSBhcHBsaWNhdGlvbiBjYW4gY29uc3VtZSB0aGUgdW5jb21wcmVzc2VkIG91dHB1dCB3aGVuIGl0IHdhbnRzLCBmb3IKLSAgZXhhbXBsZSB3aGVuIHRoZSBvdXRwdXQgYnVmZmVyIGlzIGZ1bGwgKGF2YWlsX291dCA9PSAwKSwgb3IgYWZ0ZXIgZWFjaAotICBjYWxsIG9mIGluZmxhdGUoKS4gSWYgaW5mbGF0ZSByZXR1cm5zIFpfT0sgYW5kIHdpdGggemVybyBhdmFpbF9vdXQsIGl0Ci0gIG11c3QgYmUgY2FsbGVkIGFnYWluIGFmdGVyIG1ha2luZyByb29tIGluIHRoZSBvdXRwdXQgYnVmZmVyIGJlY2F1c2UgdGhlcmUKLSAgbWlnaHQgYmUgbW9yZSBvdXRwdXQgcGVuZGluZy4KKyAgICBCZWZvcmUgdGhlIGNhbGwgb2YgaW5mbGF0ZSgpLCB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGVuc3VyZSB0aGF0IGF0IGxlYXN0CisgIG9uZSBvZiB0aGUgYWN0aW9ucyBpcyBwb3NzaWJsZSwgYnkgcHJvdmlkaW5nIG1vcmUgaW5wdXQgYW5kL29yIGNvbnN1bWluZyBtb3JlCisgIG91dHB1dCwgYW5kIHVwZGF0aW5nIHRoZSBuZXh0XyogYW5kIGF2YWlsXyogdmFsdWVzIGFjY29yZGluZ2x5LiAgSWYgdGhlCisgIGNhbGxlciBvZiBpbmZsYXRlKCkgZG9lcyBub3QgcHJvdmlkZSBib3RoIGF2YWlsYWJsZSBpbnB1dCBhbmQgYXZhaWxhYmxlCisgIG91dHB1dCBzcGFjZSwgaXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSB3aWxsIGJlIG5vIHByb2dyZXNzIG1hZGUuICBUaGUKKyAgYXBwbGljYXRpb24gY2FuIGNvbnN1bWUgdGhlIHVuY29tcHJlc3NlZCBvdXRwdXQgd2hlbiBpdCB3YW50cywgZm9yIGV4YW1wbGUKKyAgd2hlbiB0aGUgb3V0cHV0IGJ1ZmZlciBpcyBmdWxsIChhdmFpbF9vdXQgPT0gMCksIG9yIGFmdGVyIGVhY2ggY2FsbCBvZgorICBpbmZsYXRlKCkuICBJZiBpbmZsYXRlIHJldHVybnMgWl9PSyBhbmQgd2l0aCB6ZXJvIGF2YWlsX291dCwgaXQgbXVzdCBiZQorICBjYWxsZWQgYWdhaW4gYWZ0ZXIgbWFraW5nIHJvb20gaW4gdGhlIG91dHB1dCBidWZmZXIgYmVjYXVzZSB0aGVyZSBtaWdodCBiZQorICBtb3JlIG91dHB1dCBwZW5kaW5nLgogCi0gICAgSWYgdGhlIHBhcmFtZXRlciBmbHVzaCBpcyBzZXQgdG8gWl9TWU5DX0ZMVVNILCBpbmZsYXRlIGZsdXNoZXMgYXMgbXVjaAotICBvdXRwdXQgYXMgcG9zc2libGUgdG8gdGhlIG91dHB1dCBidWZmZXIuIFRoZSBmbHVzaGluZyBiZWhhdmlvciBvZiBpbmZsYXRlIGlzCi0gIG5vdCBzcGVjaWZpZWQgZm9yIHZhbHVlcyBvZiB0aGUgZmx1c2ggcGFyYW1ldGVyIG90aGVyIHRoYW4gWl9TWU5DX0ZMVVNICi0gIGFuZCBaX0ZJTklTSCwgYnV0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGFjdHVhbGx5IGZsdXNoZXMgYXMgbXVjaCBvdXRwdXQKLSAgYXMgcG9zc2libGUgYW55d2F5LgorICAgIFRoZSBmbHVzaCBwYXJhbWV0ZXIgb2YgaW5mbGF0ZSgpIGNhbiBiZSBaX05PX0ZMVVNILCBaX1NZTkNfRkxVU0gsIFpfRklOSVNILAorICBaX0JMT0NLLCBvciBaX1RSRUVTLiAgWl9TWU5DX0ZMVVNIIHJlcXVlc3RzIHRoYXQgaW5mbGF0ZSgpIGZsdXNoIGFzIG11Y2gKKyAgb3V0cHV0IGFzIHBvc3NpYmxlIHRvIHRoZSBvdXRwdXQgYnVmZmVyLiAgWl9CTE9DSyByZXF1ZXN0cyB0aGF0IGluZmxhdGUoKQorICBzdG9wIGlmIGFuZCB3aGVuIGl0IGdldHMgdG8gdGhlIG5leHQgZGVmbGF0ZSBibG9jayBib3VuZGFyeS4gIFdoZW4gZGVjb2RpbmcKKyAgdGhlIHpsaWIgb3IgZ3ppcCBmb3JtYXQsIHRoaXMgd2lsbCBjYXVzZSBpbmZsYXRlKCkgdG8gcmV0dXJuIGltbWVkaWF0ZWx5CisgIGFmdGVyIHRoZSBoZWFkZXIgYW5kIGJlZm9yZSB0aGUgZmlyc3QgYmxvY2suICBXaGVuIGRvaW5nIGEgcmF3IGluZmxhdGUsCisgIGluZmxhdGUoKSB3aWxsIGdvIGFoZWFkIGFuZCBwcm9jZXNzIHRoZSBmaXJzdCBibG9jaywgYW5kIHdpbGwgcmV0dXJuIHdoZW4gaXQKKyAgZ2V0cyB0byB0aGUgZW5kIG9mIHRoYXQgYmxvY2ssIG9yIHdoZW4gaXQgcnVucyBvdXQgb2YgZGF0YS4KKworICAgIFRoZSBaX0JMT0NLIG9wdGlvbiBhc3Npc3RzIGluIGFwcGVuZGluZyB0byBvciBjb21iaW5pbmcgZGVmbGF0ZSBzdHJlYW1zLgorICBUbyBhc3Npc3QgaW4gdGhpcywgb24gcmV0dXJuIGluZmxhdGUoKSBhbHdheXMgc2V0cyBzdHJtLT5kYXRhX3R5cGUgdG8gdGhlCisgIG51bWJlciBvZiB1bnVzZWQgYml0cyBpbiB0aGUgbGFzdCBieXRlIHRha2VuIGZyb20gc3RybS0+bmV4dF9pbiwgcGx1cyA2NCBpZgorICBpbmZsYXRlKCkgaXMgY3VycmVudGx5IGRlY29kaW5nIHRoZSBsYXN0IGJsb2NrIGluIHRoZSBkZWZsYXRlIHN0cmVhbSwgcGx1cworICAxMjggaWYgaW5mbGF0ZSgpIHJldHVybmVkIGltbWVkaWF0ZWx5IGFmdGVyIGRlY29kaW5nIGFuIGVuZC1vZi1ibG9jayBjb2RlIG9yCisgIGRlY29kaW5nIHRoZSBjb21wbGV0ZSBoZWFkZXIgdXAgdG8ganVzdCBiZWZvcmUgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIGRlZmxhdGUKKyAgc3RyZWFtLiAgVGhlIGVuZC1vZi1ibG9jayB3aWxsIG5vdCBiZSBpbmRpY2F0ZWQgdW50aWwgYWxsIG9mIHRoZSB1bmNvbXByZXNzZWQKKyAgZGF0YSBmcm9tIHRoYXQgYmxvY2sgaGFzIGJlZW4gd3JpdHRlbiB0byBzdHJtLT5uZXh0X291dC4gIFRoZSBudW1iZXIgb2YKKyAgdW51c2VkIGJpdHMgbWF5IGluIGdlbmVyYWwgYmUgZ3JlYXRlciB0aGFuIHNldmVuLCBleGNlcHQgd2hlbiBiaXQgNyBvZgorICBkYXRhX3R5cGUgaXMgc2V0LCBpbiB3aGljaCBjYXNlIHRoZSBudW1iZXIgb2YgdW51c2VkIGJpdHMgd2lsbCBiZSBsZXNzIHRoYW4KKyAgZWlnaHQuICBkYXRhX3R5cGUgaXMgc2V0IGFzIG5vdGVkIGhlcmUgZXZlcnkgdGltZSBpbmZsYXRlKCkgcmV0dXJucyBmb3IgYWxsCisgIGZsdXNoIG9wdGlvbnMsIGFuZCBzbyBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGFtb3VudCBvZiBjdXJyZW50bHkKKyAgY29uc3VtZWQgaW5wdXQgaW4gYml0cy4KKworICAgIFRoZSBaX1RSRUVTIG9wdGlvbiBiZWhhdmVzIGFzIFpfQkxPQ0sgZG9lcywgYnV0IGl0IGFsc28gcmV0dXJucyB3aGVuIHRoZQorICBlbmQgb2YgZWFjaCBkZWZsYXRlIGJsb2NrIGhlYWRlciBpcyByZWFjaGVkLCBiZWZvcmUgYW55IGFjdHVhbCBkYXRhIGluIHRoYXQKKyAgYmxvY2sgaXMgZGVjb2RlZC4gIFRoaXMgYWxsb3dzIHRoZSBjYWxsZXIgdG8gZGV0ZXJtaW5lIHRoZSBsZW5ndGggb2YgdGhlCisgIGRlZmxhdGUgYmxvY2sgaGVhZGVyIGZvciBsYXRlciB1c2UgaW4gcmFuZG9tIGFjY2VzcyB3aXRoaW4gYSBkZWZsYXRlIGJsb2NrLgorICAyNTYgaXMgYWRkZWQgdG8gdGhlIHZhbHVlIG9mIHN0cm0tPmRhdGFfdHlwZSB3aGVuIGluZmxhdGUoKSByZXR1cm5zCisgIGltbWVkaWF0ZWx5IGFmdGVyIHJlYWNoaW5nIHRoZSBlbmQgb2YgdGhlIGRlZmxhdGUgYmxvY2sgaGVhZGVyLgogCiAgICAgaW5mbGF0ZSgpIHNob3VsZCBub3JtYWxseSBiZSBjYWxsZWQgdW50aWwgaXQgcmV0dXJucyBaX1NUUkVBTV9FTkQgb3IgYW4KLSAgZXJyb3IuIEhvd2V2ZXIgaWYgYWxsIGRlY29tcHJlc3Npb24gaXMgdG8gYmUgcGVyZm9ybWVkIGluIGEgc2luZ2xlIHN0ZXAKLSAgKGEgc2luZ2xlIGNhbGwgb2YgaW5mbGF0ZSksIHRoZSBwYXJhbWV0ZXIgZmx1c2ggc2hvdWxkIGJlIHNldCB0bwotICBaX0ZJTklTSC4gSW4gdGhpcyBjYXNlIGFsbCBwZW5kaW5nIGlucHV0IGlzIHByb2Nlc3NlZCBhbmQgYWxsIHBlbmRpbmcKLSAgb3V0cHV0IGlzIGZsdXNoZWQ7IGF2YWlsX291dCBtdXN0IGJlIGxhcmdlIGVub3VnaCB0byBob2xkIGFsbCB0aGUKLSAgdW5jb21wcmVzc2VkIGRhdGEuIChUaGUgc2l6ZSBvZiB0aGUgdW5jb21wcmVzc2VkIGRhdGEgbWF5IGhhdmUgYmVlbiBzYXZlZAotICBieSB0aGUgY29tcHJlc3NvciBmb3IgdGhpcyBwdXJwb3NlLikgVGhlIG5leHQgb3BlcmF0aW9uIG9uIHRoaXMgc3RyZWFtIG11c3QKLSAgYmUgaW5mbGF0ZUVuZCB0byBkZWFsbG9jYXRlIHRoZSBkZWNvbXByZXNzaW9uIHN0YXRlLiBUaGUgdXNlIG9mIFpfRklOSVNICi0gIGlzIG5ldmVyIHJlcXVpcmVkLCBidXQgY2FuIGJlIHVzZWQgdG8gaW5mb3JtIGluZmxhdGUgdGhhdCBhIGZhc3RlciByb3V0aW5lCi0gIG1heSBiZSB1c2VkIGZvciB0aGUgc2luZ2xlIGluZmxhdGUoKSBjYWxsLgorICBlcnJvci4gIEhvd2V2ZXIgaWYgYWxsIGRlY29tcHJlc3Npb24gaXMgdG8gYmUgcGVyZm9ybWVkIGluIGEgc2luZ2xlIHN0ZXAgKGEKKyAgc2luZ2xlIGNhbGwgb2YgaW5mbGF0ZSksIHRoZSBwYXJhbWV0ZXIgZmx1c2ggc2hvdWxkIGJlIHNldCB0byBaX0ZJTklTSC4gIEluCisgIHRoaXMgY2FzZSBhbGwgcGVuZGluZyBpbnB1dCBpcyBwcm9jZXNzZWQgYW5kIGFsbCBwZW5kaW5nIG91dHB1dCBpcyBmbHVzaGVkOworICBhdmFpbF9vdXQgbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gaG9sZCBhbGwgb2YgdGhlIHVuY29tcHJlc3NlZCBkYXRhIGZvciB0aGUKKyAgb3BlcmF0aW9uIHRvIGNvbXBsZXRlLiAgKFRoZSBzaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YSBtYXkgaGF2ZSBiZWVuCisgIHNhdmVkIGJ5IHRoZSBjb21wcmVzc29yIGZvciB0aGlzIHB1cnBvc2UuKSAgVGhlIHVzZSBvZiBaX0ZJTklTSCBpcyBub3QKKyAgcmVxdWlyZWQgdG8gcGVyZm9ybSBhbiBpbmZsYXRpb24gaW4gb25lIHN0ZXAuICBIb3dldmVyIGl0IG1heSBiZSB1c2VkIHRvCisgIGluZm9ybSBpbmZsYXRlIHRoYXQgYSBmYXN0ZXIgYXBwcm9hY2ggY2FuIGJlIHVzZWQgZm9yIHRoZSBzaW5nbGUgaW5mbGF0ZSgpCisgIGNhbGwuICBaX0ZJTklTSCBhbHNvIGluZm9ybXMgaW5mbGF0ZSB0byBub3QgbWFpbnRhaW4gYSBzbGlkaW5nIHdpbmRvdyBpZiB0aGUKKyAgc3RyZWFtIGNvbXBsZXRlcywgd2hpY2ggcmVkdWNlcyBpbmZsYXRlJ3MgbWVtb3J5IGZvb3RwcmludC4gIElmIHRoZSBzdHJlYW0KKyAgZG9lcyBub3QgY29tcGxldGUsIGVpdGhlciBiZWNhdXNlIG5vdCBhbGwgb2YgdGhlIHN0cmVhbSBpcyBwcm92aWRlZCBvciBub3QKKyAgZW5vdWdoIG91dHB1dCBzcGFjZSBpcyBwcm92aWRlZCwgdGhlbiBhIHNsaWRpbmcgd2luZG93IHdpbGwgYmUgYWxsb2NhdGVkIGFuZAorICBpbmZsYXRlKCkgY2FuIGJlIGNhbGxlZCBhZ2FpbiB0byBjb250aW51ZSB0aGUgb3BlcmF0aW9uIGFzIGlmIFpfTk9fRkxVU0ggaGFkCisgIGJlZW4gdXNlZC4KIAotICAgICBJZiBhIHByZXNldCBkaWN0aW9uYXJ5IGlzIG5lZWRlZCBhdCB0aGlzIHBvaW50IChzZWUgaW5mbGF0ZVNldERpY3Rpb25hcnkKLSAgYmVsb3cpLCBpbmZsYXRlIHNldHMgc3RybS1hZGxlciB0byB0aGUgYWRsZXIzMiBjaGVja3N1bSBvZiB0aGUKLSAgZGljdGlvbmFyeSBjaG9zZW4gYnkgdGhlIGNvbXByZXNzb3IgYW5kIHJldHVybnMgWl9ORUVEX0RJQ1Q7IG90aGVyd2lzZQotICBpdCBzZXRzIHN0cm0tPmFkbGVyIHRvIHRoZSBhZGxlcjMyIGNoZWNrc3VtIG9mIGFsbCBvdXRwdXQgcHJvZHVjZWQKLSAgc28gZmFyICh0aGF0IGlzLCB0b3RhbF9vdXQgYnl0ZXMpIGFuZCByZXR1cm5zIFpfT0ssIFpfU1RSRUFNX0VORCBvcgotICBhbiBlcnJvciBjb2RlIGFzIGRlc2NyaWJlZCBiZWxvdy4gQXQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLCBpbmZsYXRlKCkKLSAgY2hlY2tzIHRoYXQgaXRzIGNvbXB1dGVkIGFkbGVyMzIgY2hlY2tzdW0gaXMgZXF1YWwgdG8gdGhhdCBzYXZlZCBieSB0aGUKLSAgY29tcHJlc3NvciBhbmQgcmV0dXJucyBaX1NUUkVBTV9FTkQgb25seSBpZiB0aGUgY2hlY2tzdW0gaXMgY29ycmVjdC4KKyAgICAgSW4gdGhpcyBpbXBsZW1lbnRhdGlvbiwgaW5mbGF0ZSgpIGFsd2F5cyBmbHVzaGVzIGFzIG11Y2ggb3V0cHV0IGFzCisgIHBvc3NpYmxlIHRvIHRoZSBvdXRwdXQgYnVmZmVyLCBhbmQgYWx3YXlzIHVzZXMgdGhlIGZhc3RlciBhcHByb2FjaCBvbiB0aGUKKyAgZmlyc3QgY2FsbC4gIFNvIHRoZSBlZmZlY3RzIG9mIHRoZSBmbHVzaCBwYXJhbWV0ZXIgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbiBhcmUKKyAgb24gdGhlIHJldHVybiB2YWx1ZSBvZiBpbmZsYXRlKCkgYXMgbm90ZWQgYmVsb3csIHdoZW4gaW5mbGF0ZSgpIHJldHVybnMgZWFybHkKKyAgd2hlbiBaX0JMT0NLIG9yIFpfVFJFRVMgaXMgdXNlZCwgYW5kIHdoZW4gaW5mbGF0ZSgpIGF2b2lkcyB0aGUgYWxsb2NhdGlvbiBvZgorICBtZW1vcnkgZm9yIGEgc2xpZGluZyB3aW5kb3cgd2hlbiBaX0ZJTklTSCBpcyB1c2VkLgorCisgICAgIElmIGEgcHJlc2V0IGRpY3Rpb25hcnkgaXMgbmVlZGVkIGFmdGVyIHRoaXMgY2FsbCAoc2VlIGluZmxhdGVTZXREaWN0aW9uYXJ5CisgIGJlbG93KSwgaW5mbGF0ZSBzZXRzIHN0cm0tPmFkbGVyIHRvIHRoZSBBZGxlci0zMiBjaGVja3N1bSBvZiB0aGUgZGljdGlvbmFyeQorICBjaG9zZW4gYnkgdGhlIGNvbXByZXNzb3IgYW5kIHJldHVybnMgWl9ORUVEX0RJQ1Q7IG90aGVyd2lzZSBpdCBzZXRzCisgIHN0cm0tPmFkbGVyIHRvIHRoZSBBZGxlci0zMiBjaGVja3N1bSBvZiBhbGwgb3V0cHV0IHByb2R1Y2VkIHNvIGZhciAodGhhdCBpcywKKyAgdG90YWxfb3V0IGJ5dGVzKSBhbmQgcmV0dXJucyBaX09LLCBaX1NUUkVBTV9FTkQgb3IgYW4gZXJyb3IgY29kZSBhcyBkZXNjcmliZWQKKyAgYmVsb3cuICBBdCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0sIGluZmxhdGUoKSBjaGVja3MgdGhhdCBpdHMgY29tcHV0ZWQgQWRsZXItMzIKKyAgY2hlY2tzdW0gaXMgZXF1YWwgdG8gdGhhdCBzYXZlZCBieSB0aGUgY29tcHJlc3NvciBhbmQgcmV0dXJucyBaX1NUUkVBTV9FTkQKKyAgb25seSBpZiB0aGUgY2hlY2tzdW0gaXMgY29ycmVjdC4KKworICAgIGluZmxhdGUoKSBjYW4gZGVjb21wcmVzcyBhbmQgY2hlY2sgZWl0aGVyIHpsaWItd3JhcHBlZCBvciBnemlwLXdyYXBwZWQKKyAgZGVmbGF0ZSBkYXRhLiAgVGhlIGhlYWRlciB0eXBlIGlzIGRldGVjdGVkIGF1dG9tYXRpY2FsbHksIGlmIHJlcXVlc3RlZCB3aGVuCisgIGluaXRpYWxpemluZyB3aXRoIGluZmxhdGVJbml0MigpLiAgQW55IGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGUgZ3ppcAorICBoZWFkZXIgaXMgbm90IHJldGFpbmVkIHVubGVzcyBpbmZsYXRlR2V0SGVhZGVyKCkgaXMgdXNlZC4gIFdoZW4gcHJvY2Vzc2luZworICBnemlwLXdyYXBwZWQgZGVmbGF0ZSBkYXRhLCBzdHJtLT5hZGxlcjMyIGlzIHNldCB0byB0aGUgQ1JDLTMyIG9mIHRoZSBvdXRwdXQKKyAgcHJvZHVjZWQgc28gZmFyLiAgVGhlIENSQy0zMiBpcyBjaGVja2VkIGFnYWluc3QgdGhlIGd6aXAgdHJhaWxlciwgYXMgaXMgdGhlCisgIHVuY29tcHJlc3NlZCBsZW5ndGgsIG1vZHVsbyAyXjMyLgogCiAgICAgaW5mbGF0ZSgpIHJldHVybnMgWl9PSyBpZiBzb21lIHByb2dyZXNzIGhhcyBiZWVuIG1hZGUgKG1vcmUgaW5wdXQgcHJvY2Vzc2VkCiAgIG9yIG1vcmUgb3V0cHV0IHByb2R1Y2VkKSwgWl9TVFJFQU1fRU5EIGlmIHRoZSBlbmQgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSBoYXMKICAgYmVlbiByZWFjaGVkIGFuZCBhbGwgdW5jb21wcmVzc2VkIG91dHB1dCBoYXMgYmVlbiBwcm9kdWNlZCwgWl9ORUVEX0RJQ1QgaWYgYQogICBwcmVzZXQgZGljdGlvbmFyeSBpcyBuZWVkZWQgYXQgdGhpcyBwb2ludCwgWl9EQVRBX0VSUk9SIGlmIHRoZSBpbnB1dCBkYXRhIHdhcwotICBjb3JydXB0ZWQgKGlucHV0IHN0cmVhbSBub3QgY29uZm9ybWluZyB0byB0aGUgemxpYiBmb3JtYXQgb3IgaW5jb3JyZWN0Ci0gIGFkbGVyMzIgY2hlY2tzdW0pLCBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc3RyZWFtIHN0cnVjdHVyZSB3YXMgaW5jb25zaXN0ZW50Ci0gIChmb3IgZXhhbXBsZSBpZiBuZXh0X2luIG9yIG5leHRfb3V0IHdhcyBOVUxMKSwgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdAotICBlbm91Z2ggbWVtb3J5LCBaX0JVRl9FUlJPUiBpZiBubyBwcm9ncmVzcyBpcyBwb3NzaWJsZSBvciBpZiB0aGVyZSB3YXMgbm90Ci0gIGVub3VnaCByb29tIGluIHRoZSBvdXRwdXQgYnVmZmVyIHdoZW4gWl9GSU5JU0ggaXMgdXNlZC4gSW4gdGhlIFpfREFUQV9FUlJPUgotICBjYXNlLCB0aGUgYXBwbGljYXRpb24gbWF5IHRoZW4gY2FsbCBpbmZsYXRlU3luYyB0byBsb29rIGZvciBhIGdvb2QKLSAgY29tcHJlc3Npb24gYmxvY2suCisgIGNvcnJ1cHRlZCAoaW5wdXQgc3RyZWFtIG5vdCBjb25mb3JtaW5nIHRvIHRoZSB6bGliIGZvcm1hdCBvciBpbmNvcnJlY3QgY2hlY2sKKyAgdmFsdWUsIGluIHdoaWNoIGNhc2Ugc3RybS0+bXNnIHBvaW50cyB0byBhIHN0cmluZyB3aXRoIGEgbW9yZSBzcGVjaWZpYworICBlcnJvciksIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzdHJlYW0gc3RydWN0dXJlIHdhcyBpbmNvbnNpc3RlbnQgKGZvciBleGFtcGxlCisgIG5leHRfaW4gb3IgbmV4dF9vdXQgd2FzIFpfTlVMTCwgb3IgdGhlIHN0YXRlIHdhcyBpbmFkdmVydGVudGx5IHdyaXR0ZW4gb3ZlcgorICBieSB0aGUgYXBwbGljYXRpb24pLCBaX01FTV9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaCBtZW1vcnksIFpfQlVGX0VSUk9SCisgIGlmIG5vIHByb2dyZXNzIHdhcyBwb3NzaWJsZSBvciBpZiB0aGVyZSB3YXMgbm90IGVub3VnaCByb29tIGluIHRoZSBvdXRwdXQKKyAgYnVmZmVyIHdoZW4gWl9GSU5JU0ggaXMgdXNlZC4gIE5vdGUgdGhhdCBaX0JVRl9FUlJPUiBpcyBub3QgZmF0YWwsIGFuZAorICBpbmZsYXRlKCkgY2FuIGJlIGNhbGxlZCBhZ2FpbiB3aXRoIG1vcmUgaW5wdXQgYW5kIG1vcmUgb3V0cHV0IHNwYWNlIHRvCisgIGNvbnRpbnVlIGRlY29tcHJlc3NpbmcuICBJZiBaX0RBVEFfRVJST1IgaXMgcmV0dXJuZWQsIHRoZSBhcHBsaWNhdGlvbiBtYXkKKyAgdGhlbiBjYWxsIGluZmxhdGVTeW5jKCkgdG8gbG9vayBmb3IgYSBnb29kIGNvbXByZXNzaW9uIGJsb2NrIGlmIGEgcGFydGlhbAorICByZWNvdmVyeSBvZiB0aGUgZGF0YSBpcyB0byBiZSBhdHRlbXB0ZWQuCiAqLwogCiAKLVpFWFRFUk4oaW50KSAgaW5mbGF0ZUVuZCBPRigoel9zdHJlYW1wIHN0cm0pKTsKK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUVuZCBPRigoel9zdHJlYW1wIHN0cm0pKTsKIC8qCiAgICAgIEFsbCBkeW5hbWljYWxseSBhbGxvY2F0ZWQgZGF0YSBzdHJ1Y3R1cmVzIGZvciB0aGlzIHN0cmVhbSBhcmUgZnJlZWQuCi0gICBUaGlzIGZ1bmN0aW9uIGRpc2NhcmRzIGFueSB1bnByb2Nlc3NlZCBpbnB1dCBhbmQgZG9lcyBub3QgZmx1c2ggYW55Ci0gICBwZW5kaW5nIG91dHB1dC4KKyAgIFRoaXMgZnVuY3Rpb24gZGlzY2FyZHMgYW55IHVucHJvY2Vzc2VkIGlucHV0IGFuZCBkb2VzIG5vdCBmbHVzaCBhbnkgcGVuZGluZworICAgb3V0cHV0LgogCi0gICAgIGluZmxhdGVFbmQgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzdHJlYW0gc3RhdGUKLSAgIHdhcyBpbmNvbnNpc3RlbnQuIEluIHRoZSBlcnJvciBjYXNlLCBtc2cgbWF5IGJlIHNldCBidXQgdGhlbiBwb2ludHMgdG8gYQotICAgc3RhdGljIHN0cmluZyAod2hpY2ggbXVzdCBub3QgYmUgZGVhbGxvY2F0ZWQpLgorICAgICBpbmZsYXRlRW5kIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc3RyZWFtIHN0YXRlCisgICB3YXMgaW5jb25zaXN0ZW50LgogKi8KIAorCiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBZHZhbmNlZCBmdW5jdGlvbnMgKi8KIAogLyoKICAgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgbmVlZGVkIG9ubHkgaW4gc29tZSBzcGVjaWFsIGFwcGxpY2F0aW9ucy4KICovCiAKKyNpZm5kZWYgWl9GUkVFVFlQRQorCiAvKgotWkVYVEVSTihpbnQpICBkZWZsYXRlSW5pdDIgT0YoKHpfc3RyZWFtcCBzdHJtLAorWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlSW5pdDIgT0YoKHpfc3RyZWFtcCBzdHJtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICBtZXRob2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICB3aW5kb3dCaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgbWVtTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICBzdHJhdGVneSkpOwogCi0gICAgIFRoaXMgaXMgYW5vdGhlciB2ZXJzaW9uIG9mIGRlZmxhdGVJbml0IHdpdGggbW9yZSBjb21wcmVzc2lvbiBvcHRpb25zLiBUaGUKLSAgIGZpZWxkcyBuZXh0X2luLCB6YWxsb2MsIHpmcmVlIGFuZCBvcGFxdWUgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgYnkKLSAgIHRoZSBjYWxsZXIuCisgICAgIFRoaXMgaXMgYW5vdGhlciB2ZXJzaW9uIG9mIGRlZmxhdGVJbml0IHdpdGggbW9yZSBjb21wcmVzc2lvbiBvcHRpb25zLiAgVGhlCisgICBmaWVsZHMgemFsbG9jLCB6ZnJlZSBhbmQgb3BhcXVlIG11c3QgYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIGJ5IHRoZSBjYWxsZXIuCiAKLSAgICAgVGhlIG1ldGhvZCBwYXJhbWV0ZXIgaXMgdGhlIGNvbXByZXNzaW9uIG1ldGhvZC4gSXQgbXVzdCBiZSBaX0RFRkxBVEVEIGluCisgICAgIFRoZSBtZXRob2QgcGFyYW1ldGVyIGlzIHRoZSBjb21wcmVzc2lvbiBtZXRob2QuICBJdCBtdXN0IGJlIFpfREVGTEFURUQgaW4KICAgIHRoaXMgdmVyc2lvbiBvZiB0aGUgbGlicmFyeS4KIAogICAgICBUaGUgd2luZG93Qml0cyBwYXJhbWV0ZXIgaXMgdGhlIGJhc2UgdHdvIGxvZ2FyaXRobSBvZiB0aGUgd2luZG93IHNpemUKICAgICh0aGUgc2l6ZSBvZiB0aGUgaGlzdG9yeSBidWZmZXIpLiAgSXQgc2hvdWxkIGJlIGluIHRoZSByYW5nZSA4Li4xNSBmb3IgdGhpcwotICAgdmVyc2lvbiBvZiB0aGUgbGlicmFyeS4gTGFyZ2VyIHZhbHVlcyBvZiB0aGlzIHBhcmFtZXRlciByZXN1bHQgaW4gYmV0dGVyCi0gICBjb21wcmVzc2lvbiBhdCB0aGUgZXhwZW5zZSBvZiBtZW1vcnkgdXNhZ2UuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDE1IGlmCisgICB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LiAgTGFyZ2VyIHZhbHVlcyBvZiB0aGlzIHBhcmFtZXRlciByZXN1bHQgaW4gYmV0dGVyCisgICBjb21wcmVzc2lvbiBhdCB0aGUgZXhwZW5zZSBvZiBtZW1vcnkgdXNhZ2UuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxNSBpZgogICAgZGVmbGF0ZUluaXQgaXMgdXNlZCBpbnN0ZWFkLgogCisgICAgIEZvciB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBkZWZsYXRlKCksIGEgd2luZG93Qml0cyB2YWx1ZSBvZiA4IChhCisgICB3aW5kb3cgc2l6ZSBvZiAyNTYgYnl0ZXMpIGlzIG5vdCBzdXBwb3J0ZWQuICBBcyBhIHJlc3VsdCwgYSByZXF1ZXN0IGZvciA4CisgICB3aWxsIHJlc3VsdCBpbiA5IChhIDUxMi1ieXRlIHdpbmRvdykuICBJbiB0aGF0IGNhc2UsIHByb3ZpZGluZyA4IHRvCisgICBpbmZsYXRlSW5pdDIoKSB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvciB3aGVuIHRoZSB6bGliIGhlYWRlciB3aXRoIDkgaXMKKyAgIGNoZWNrZWQgYWdhaW5zdCB0aGUgaW5pdGlhbGl6YXRpb24gb2YgaW5mbGF0ZSgpLiAgVGhlIHJlbWVkeSBpcyB0byBub3QgdXNlIDgKKyAgIHdpdGggZGVmbGF0ZUluaXQyKCkgd2l0aCB0aGlzIGluaXRpYWxpemF0aW9uLCBvciBhdCBsZWFzdCBpbiB0aGF0IGNhc2UgdXNlIDkKKyAgIHdpdGggaW5mbGF0ZUluaXQyKCkuCisKKyAgICAgd2luZG93Qml0cyBjYW4gYWxzbyBiZSAtOC4uLTE1IGZvciByYXcgZGVmbGF0ZS4gIEluIHRoaXMgY2FzZSwgLXdpbmRvd0JpdHMKKyAgIGRldGVybWluZXMgdGhlIHdpbmRvdyBzaXplLiAgZGVmbGF0ZSgpIHdpbGwgdGhlbiBnZW5lcmF0ZSByYXcgZGVmbGF0ZSBkYXRhCisgICB3aXRoIG5vIHpsaWIgaGVhZGVyIG9yIHRyYWlsZXIsIGFuZCB3aWxsIG5vdCBjb21wdXRlIGEgY2hlY2sgdmFsdWUuCisKKyAgICAgd2luZG93Qml0cyBjYW4gYWxzbyBiZSBncmVhdGVyIHRoYW4gMTUgZm9yIG9wdGlvbmFsIGd6aXAgZW5jb2RpbmcuICBBZGQKKyAgIDE2IHRvIHdpbmRvd0JpdHMgdG8gd3JpdGUgYSBzaW1wbGUgZ3ppcCBoZWFkZXIgYW5kIHRyYWlsZXIgYXJvdW5kIHRoZQorICAgY29tcHJlc3NlZCBkYXRhIGluc3RlYWQgb2YgYSB6bGliIHdyYXBwZXIuICBUaGUgZ3ppcCBoZWFkZXIgd2lsbCBoYXZlIG5vCisgICBmaWxlIG5hbWUsIG5vIGV4dHJhIGRhdGEsIG5vIGNvbW1lbnQsIG5vIG1vZGlmaWNhdGlvbiB0aW1lIChzZXQgdG8gemVybyksIG5vCisgICBoZWFkZXIgY3JjLCBhbmQgdGhlIG9wZXJhdGluZyBzeXN0ZW0gd2lsbCBiZSBzZXQgdG8gdGhlIGFwcHJvcHJpYXRlIHZhbHVlLAorICAgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gd2FzIGRldGVybWluZWQgYXQgY29tcGlsZSB0aW1lLiAgSWYgYSBnemlwIHN0cmVhbSBpcworICAgYmVpbmcgd3JpdHRlbiwgc3RybS0+YWRsZXIgaXMgYSBDUkMtMzIgaW5zdGVhZCBvZiBhbiBBZGxlci0zMi4KKworICAgICBGb3IgcmF3IGRlZmxhdGUgb3IgZ3ppcCBlbmNvZGluZywgYSByZXF1ZXN0IGZvciBhIDI1Ni1ieXRlIHdpbmRvdyBpcworICAgcmVqZWN0ZWQgYXMgaW52YWxpZCwgc2luY2Ugb25seSB0aGUgemxpYiBoZWFkZXIgcHJvdmlkZXMgYSBtZWFucyBvZgorICAgdHJhbnNtaXR0aW5nIHRoZSB3aW5kb3cgc2l6ZSB0byB0aGUgZGVjb21wcmVzc29yLgorCiAgICAgIFRoZSBtZW1MZXZlbCBwYXJhbWV0ZXIgc3BlY2lmaWVzIGhvdyBtdWNoIG1lbW9yeSBzaG91bGQgYmUgYWxsb2NhdGVkCi0gICBmb3IgdGhlIGludGVybmFsIGNvbXByZXNzaW9uIHN0YXRlLiBtZW1MZXZlbD0xIHVzZXMgbWluaW11bSBtZW1vcnkgYnV0Ci0gICBpcyBzbG93IGFuZCByZWR1Y2VzIGNvbXByZXNzaW9uIHJhdGlvOyBtZW1MZXZlbD05IHVzZXMgbWF4aW11bSBtZW1vcnkKLSAgIGZvciBvcHRpbWFsIHNwZWVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA4LiBTZWUgemNvbmYuaCBmb3IgdG90YWwgbWVtb3J5Ci0gICB1c2FnZSBhcyBhIGZ1bmN0aW9uIG9mIHdpbmRvd0JpdHMgYW5kIG1lbUxldmVsLgorICAgZm9yIHRoZSBpbnRlcm5hbCBjb21wcmVzc2lvbiBzdGF0ZS4gIG1lbUxldmVsPTEgdXNlcyBtaW5pbXVtIG1lbW9yeSBidXQgaXMKKyAgIHNsb3cgYW5kIHJlZHVjZXMgY29tcHJlc3Npb24gcmF0aW87IG1lbUxldmVsPTkgdXNlcyBtYXhpbXVtIG1lbW9yeSBmb3IKKyAgIG9wdGltYWwgc3BlZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA4LiAgU2VlIHpjb25mLmggZm9yIHRvdGFsIG1lbW9yeSB1c2FnZQorICAgYXMgYSBmdW5jdGlvbiBvZiB3aW5kb3dCaXRzIGFuZCBtZW1MZXZlbC4KIAotICAgICBUaGUgc3RyYXRlZ3kgcGFyYW1ldGVyIGlzIHVzZWQgdG8gdHVuZSB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtLiBVc2UgdGhlCisgICAgIFRoZSBzdHJhdGVneSBwYXJhbWV0ZXIgaXMgdXNlZCB0byB0dW5lIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0uICBVc2UgdGhlCiAgICB2YWx1ZSBaX0RFRkFVTFRfU1RSQVRFR1kgZm9yIG5vcm1hbCBkYXRhLCBaX0ZJTFRFUkVEIGZvciBkYXRhIHByb2R1Y2VkIGJ5IGEKLSAgIGZpbHRlciAob3IgcHJlZGljdG9yKSwgb3IgWl9IVUZGTUFOX09OTFkgdG8gZm9yY2UgSHVmZm1hbiBlbmNvZGluZyBvbmx5IChubwotICAgc3RyaW5nIG1hdGNoKS4gIEZpbHRlcmVkIGRhdGEgY29uc2lzdHMgbW9zdGx5IG9mIHNtYWxsIHZhbHVlcyB3aXRoIGEKLSAgIHNvbWV3aGF0IHJhbmRvbSBkaXN0cmlidXRpb24uIEluIHRoaXMgY2FzZSwgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobSBpcwotICAgdHVuZWQgdG8gY29tcHJlc3MgdGhlbSBiZXR0ZXIuIFRoZSBlZmZlY3Qgb2YgWl9GSUxURVJFRCBpcyB0byBmb3JjZSBtb3JlCi0gICBIdWZmbWFuIGNvZGluZyBhbmQgbGVzcyBzdHJpbmcgbWF0Y2hpbmc7IGl0IGlzIHNvbWV3aGF0IGludGVybWVkaWF0ZQotICAgYmV0d2VlbiBaX0RFRkFVTFQgYW5kIFpfSFVGRk1BTl9PTkxZLiBUaGUgc3RyYXRlZ3kgcGFyYW1ldGVyIG9ubHkgYWZmZWN0cwotICAgdGhlIGNvbXByZXNzaW9uIHJhdGlvIGJ1dCBub3QgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBjb21wcmVzc2VkIG91dHB1dCBldmVuCi0gICBpZiBpdCBpcyBub3Qgc2V0IGFwcHJvcHJpYXRlbHkuCisgICBmaWx0ZXIgKG9yIHByZWRpY3RvciksIFpfSFVGRk1BTl9PTkxZIHRvIGZvcmNlIEh1ZmZtYW4gZW5jb2Rpbmcgb25seSAobm8KKyAgIHN0cmluZyBtYXRjaCksIG9yIFpfUkxFIHRvIGxpbWl0IG1hdGNoIGRpc3RhbmNlcyB0byBvbmUgKHJ1bi1sZW5ndGgKKyAgIGVuY29kaW5nKS4gIEZpbHRlcmVkIGRhdGEgY29uc2lzdHMgbW9zdGx5IG9mIHNtYWxsIHZhbHVlcyB3aXRoIGEgc29tZXdoYXQKKyAgIHJhbmRvbSBkaXN0cmlidXRpb24uICBJbiB0aGlzIGNhc2UsIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0gaXMgdHVuZWQgdG8KKyAgIGNvbXByZXNzIHRoZW0gYmV0dGVyLiAgVGhlIGVmZmVjdCBvZiBaX0ZJTFRFUkVEIGlzIHRvIGZvcmNlIG1vcmUgSHVmZm1hbgorICAgY29kaW5nIGFuZCBsZXNzIHN0cmluZyBtYXRjaGluZzsgaXQgaXMgc29tZXdoYXQgaW50ZXJtZWRpYXRlIGJldHdlZW4KKyAgIFpfREVGQVVMVF9TVFJBVEVHWSBhbmQgWl9IVUZGTUFOX09OTFkuICBaX1JMRSBpcyBkZXNpZ25lZCB0byBiZSBhbG1vc3QgYXMKKyAgIGZhc3QgYXMgWl9IVUZGTUFOX09OTFksIGJ1dCBnaXZlIGJldHRlciBjb21wcmVzc2lvbiBmb3IgUE5HIGltYWdlIGRhdGEuICBUaGUKKyAgIHN0cmF0ZWd5IHBhcmFtZXRlciBvbmx5IGFmZmVjdHMgdGhlIGNvbXByZXNzaW9uIHJhdGlvIGJ1dCBub3QgdGhlCisgICBjb3JyZWN0bmVzcyBvZiB0aGUgY29tcHJlc3NlZCBvdXRwdXQgZXZlbiBpZiBpdCBpcyBub3Qgc2V0IGFwcHJvcHJpYXRlbHkuCisgICBaX0ZJWEVEIHByZXZlbnRzIHRoZSB1c2Ugb2YgZHluYW1pYyBIdWZmbWFuIGNvZGVzLCBhbGxvd2luZyBmb3IgYSBzaW1wbGVyCisgICBkZWNvZGVyIGZvciBzcGVjaWFsIGFwcGxpY2F0aW9ucy4KIAotICAgICAgZGVmbGF0ZUluaXQyIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX01FTV9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaAotICAgbWVtb3J5LCBaX1NUUkVBTV9FUlJPUiBpZiBhIHBhcmFtZXRlciBpcyBpbnZhbGlkIChzdWNoIGFzIGFuIGludmFsaWQKLSAgIG1ldGhvZCkuIG1zZyBpcyBzZXQgdG8gbnVsbCBpZiB0aGVyZSBpcyBubyBlcnJvciBtZXNzYWdlLiAgZGVmbGF0ZUluaXQyIGRvZXMKLSAgIG5vdCBwZXJmb3JtIGFueSBjb21wcmVzc2lvbjogdGhpcyB3aWxsIGJlIGRvbmUgYnkgZGVmbGF0ZSgpLgorICAgICBkZWZsYXRlSW5pdDIgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QgZW5vdWdoCisgICBtZW1vcnksIFpfU1RSRUFNX0VSUk9SIGlmIGFueSBwYXJhbWV0ZXIgaXMgaW52YWxpZCAoc3VjaCBhcyBhbiBpbnZhbGlkCisgICBtZXRob2QpLCBvciBaX1ZFUlNJT05fRVJST1IgaWYgdGhlIHpsaWIgbGlicmFyeSB2ZXJzaW9uICh6bGliX3ZlcnNpb24pIGlzCisgICBpbmNvbXBhdGlibGUgd2l0aCB0aGUgdmVyc2lvbiBhc3N1bWVkIGJ5IHRoZSBjYWxsZXIgKFpMSUJfVkVSU0lPTikuICBtc2cgaXMKKyAgIHNldCB0byBudWxsIGlmIHRoZXJlIGlzIG5vIGVycm9yIG1lc3NhZ2UuICBkZWZsYXRlSW5pdDIgZG9lcyBub3QgcGVyZm9ybSBhbnkKKyAgIGNvbXByZXNzaW9uOiB0aGlzIHdpbGwgYmUgZG9uZSBieSBkZWZsYXRlKCkuCiAqLwogCitaRVhURVJOIGludCBaRVhQT1JUIGRlZmxhdGVTZXREaWN0aW9uYXJ5IE9GKCh6X3N0cmVhbXAgc3RybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJ5dGVmICpkaWN0aW9uYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdUludCAgZGljdExlbmd0aCkpOwogLyoKICAgICAgSW5pdGlhbGl6ZXMgdGhlIGNvbXByZXNzaW9uIGRpY3Rpb25hcnkgZnJvbSB0aGUgZ2l2ZW4gYnl0ZSBzZXF1ZW5jZQotICAgd2l0aG91dCBwcm9kdWNpbmcgYW55IGNvbXByZXNzZWQgb3V0cHV0LiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkCi0gICBpbW1lZGlhdGVseSBhZnRlciBkZWZsYXRlSW5pdCwgZGVmbGF0ZUluaXQyIG9yIGRlZmxhdGVSZXNldCwgYmVmb3JlIGFueQotICAgY2FsbCBvZiBkZWZsYXRlLiBUaGUgY29tcHJlc3NvciBhbmQgZGVjb21wcmVzc29yIG11c3QgdXNlIGV4YWN0bHkgdGhlIHNhbWUKLSAgIGRpY3Rpb25hcnkgKHNlZSBpbmZsYXRlU2V0RGljdGlvbmFyeSkuCisgICB3aXRob3V0IHByb2R1Y2luZyBhbnkgY29tcHJlc3NlZCBvdXRwdXQuICBXaGVuIHVzaW5nIHRoZSB6bGliIGZvcm1hdCwgdGhpcworICAgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZGVmbGF0ZUluaXQsIGRlZmxhdGVJbml0MiBvcgorICAgZGVmbGF0ZVJlc2V0LCBhbmQgYmVmb3JlIGFueSBjYWxsIG9mIGRlZmxhdGUuICBXaGVuIGRvaW5nIHJhdyBkZWZsYXRlLCB0aGlzCisgICBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBlaXRoZXIgYmVmb3JlIGFueSBjYWxsIG9mIGRlZmxhdGUsIG9yIGltbWVkaWF0ZWx5CisgICBhZnRlciB0aGUgY29tcGxldGlvbiBvZiBhIGRlZmxhdGUgYmxvY2ssIGkuZS4gYWZ0ZXIgYWxsIGlucHV0IGhhcyBiZWVuCisgICBjb25zdW1lZCBhbmQgYWxsIG91dHB1dCBoYXMgYmVlbiBkZWxpdmVyZWQgd2hlbiB1c2luZyBhbnkgb2YgdGhlIGZsdXNoCisgICBvcHRpb25zIFpfQkxPQ0ssIFpfUEFSVElBTF9GTFVTSCwgWl9TWU5DX0ZMVVNILCBvciBaX0ZVTExfRkxVU0guICBUaGUKKyAgIGNvbXByZXNzb3IgYW5kIGRlY29tcHJlc3NvciBtdXN0IHVzZSBleGFjdGx5IHRoZSBzYW1lIGRpY3Rpb25hcnkgKHNlZQorICAgaW5mbGF0ZVNldERpY3Rpb25hcnkpLgogCiAgICAgIFRoZSBkaWN0aW9uYXJ5IHNob3VsZCBjb25zaXN0IG9mIHN0cmluZ3MgKGJ5dGUgc2VxdWVuY2VzKSB0aGF0IGFyZSBsaWtlbHkKICAgIHRvIGJlIGVuY291bnRlcmVkIGxhdGVyIGluIHRoZSBkYXRhIHRvIGJlIGNvbXByZXNzZWQsIHdpdGggdGhlIG1vc3QgY29tbW9ubHkKLSAgIHVzZWQgc3RyaW5ncyBwcmVmZXJhYmx5IHB1dCB0b3dhcmRzIHRoZSBlbmQgb2YgdGhlIGRpY3Rpb25hcnkuIFVzaW5nIGEKKyAgIHVzZWQgc3RyaW5ncyBwcmVmZXJhYmx5IHB1dCB0b3dhcmRzIHRoZSBlbmQgb2YgdGhlIGRpY3Rpb25hcnkuICBVc2luZyBhCiAgICBkaWN0aW9uYXJ5IGlzIG1vc3QgdXNlZnVsIHdoZW4gdGhlIGRhdGEgdG8gYmUgY29tcHJlc3NlZCBpcyBzaG9ydCBhbmQgY2FuIGJlCiAgICBwcmVkaWN0ZWQgd2l0aCBnb29kIGFjY3VyYWN5OyB0aGUgZGF0YSBjYW4gdGhlbiBiZSBjb21wcmVzc2VkIGJldHRlciB0aGFuCiAgICB3aXRoIHRoZSBkZWZhdWx0IGVtcHR5IGRpY3Rpb25hcnkuCiAKICAgICAgRGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIHRoZSBjb21wcmVzc2lvbiBkYXRhIHN0cnVjdHVyZXMgc2VsZWN0ZWQgYnkKICAgIGRlZmxhdGVJbml0IG9yIGRlZmxhdGVJbml0MiwgYSBwYXJ0IG9mIHRoZSBkaWN0aW9uYXJ5IG1heSBpbiBlZmZlY3QgYmUKLSAgIGRpc2NhcmRlZCwgZm9yIGV4YW1wbGUgaWYgdGhlIGRpY3Rpb25hcnkgaXMgbGFyZ2VyIHRoYW4gdGhlIHdpbmRvdyBzaXplIGluCi0gICBkZWZsYXRlIG9yIGRlZmxhdGUyLiBUaHVzIHRoZSBzdHJpbmdzIG1vc3QgbGlrZWx5IHRvIGJlIHVzZWZ1bCBzaG91bGQgYmUKLSAgIHB1dCBhdCB0aGUgZW5kIG9mIHRoZSBkaWN0aW9uYXJ5LCBub3QgYXQgdGhlIGZyb250LgorICAgZGlzY2FyZGVkLCBmb3IgZXhhbXBsZSBpZiB0aGUgZGljdGlvbmFyeSBpcyBsYXJnZXIgdGhhbiB0aGUgd2luZG93IHNpemUKKyAgIHByb3ZpZGVkIGluIGRlZmxhdGVJbml0IG9yIGRlZmxhdGVJbml0Mi4gIFRodXMgdGhlIHN0cmluZ3MgbW9zdCBsaWtlbHkgdG8gYmUKKyAgIHVzZWZ1bCBzaG91bGQgYmUgcHV0IGF0IHRoZSBlbmQgb2YgdGhlIGRpY3Rpb25hcnksIG5vdCBhdCB0aGUgZnJvbnQuICBJbgorICAgYWRkaXRpb24sIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIGRlZmxhdGUgd2lsbCB1c2UgYXQgbW9zdCB0aGUgd2luZG93CisgICBzaXplIG1pbnVzIDI2MiBieXRlcyBvZiB0aGUgcHJvdmlkZWQgZGljdGlvbmFyeS4KIAotICAgICBVcG9uIHJldHVybiBvZiB0aGlzIGZ1bmN0aW9uLCBzdHJtLT5hZGxlciBpcyBzZXQgdG8gdGhlIEFkbGVyMzIgdmFsdWUKKyAgICAgVXBvbiByZXR1cm4gb2YgdGhpcyBmdW5jdGlvbiwgc3RybS0+YWRsZXIgaXMgc2V0IHRvIHRoZSBBZGxlci0zMiB2YWx1ZQogICAgb2YgdGhlIGRpY3Rpb25hcnk7IHRoZSBkZWNvbXByZXNzb3IgbWF5IGxhdGVyIHVzZSB0aGlzIHZhbHVlIHRvIGRldGVybWluZQotICAgd2hpY2ggZGljdGlvbmFyeSBoYXMgYmVlbiB1c2VkIGJ5IHRoZSBjb21wcmVzc29yLiAoVGhlIEFkbGVyMzIgdmFsdWUKKyAgIHdoaWNoIGRpY3Rpb25hcnkgaGFzIGJlZW4gdXNlZCBieSB0aGUgY29tcHJlc3Nvci4gIChUaGUgQWRsZXItMzIgdmFsdWUKICAgIGFwcGxpZXMgdG8gdGhlIHdob2xlIGRpY3Rpb25hcnkgZXZlbiBpZiBvbmx5IGEgc3Vic2V0IG9mIHRoZSBkaWN0aW9uYXJ5IGlzCi0gICBhY3R1YWxseSB1c2VkIGJ5IHRoZSBjb21wcmVzc29yLikKKyAgIGFjdHVhbGx5IHVzZWQgYnkgdGhlIGNvbXByZXNzb3IuKSBJZiBhIHJhdyBkZWZsYXRlIHdhcyByZXF1ZXN0ZWQsIHRoZW4gdGhlCisgICBBZGxlci0zMiB2YWx1ZSBpcyBub3QgY29tcHV0ZWQgYW5kIHN0cm0tPmFkbGVyIGlzIG5vdCBzZXQuCiAKICAgICAgZGVmbGF0ZVNldERpY3Rpb25hcnkgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIGEKLSAgIHBhcmFtZXRlciBpcyBpbnZhbGlkIChzdWNoIGFzIE5VTEwgZGljdGlvbmFyeSkgb3IgdGhlIHN0cmVhbSBzdGF0ZSBpcworICAgcGFyYW1ldGVyIGlzIGludmFsaWQgKGUuZy4gIGRpY3Rpb25hcnkgYmVpbmcgWl9OVUxMKSBvciB0aGUgc3RyZWFtIHN0YXRlIGlzCiAgICBpbmNvbnNpc3RlbnQgKGZvciBleGFtcGxlIGlmIGRlZmxhdGUgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgZm9yIHRoaXMgc3RyZWFtCi0gICBvciBpZiB0aGUgY29tcHJlc3Npb24gbWV0aG9kIGlzIGJzb3J0KS4gZGVmbGF0ZVNldERpY3Rpb25hcnkgZG9lcyBub3QKLSAgIHBlcmZvcm0gYW55IGNvbXByZXNzaW9uOiB0aGlzIHdpbGwgYmUgZG9uZSBieSBkZWZsYXRlKCkuCisgICBvciBpZiBub3QgYXQgYSBibG9jayBib3VuZGFyeSBmb3IgcmF3IGRlZmxhdGUpLiAgZGVmbGF0ZVNldERpY3Rpb25hcnkgZG9lcworICAgbm90IHBlcmZvcm0gYW55IGNvbXByZXNzaW9uOiB0aGlzIHdpbGwgYmUgZG9uZSBieSBkZWZsYXRlKCkuCiAqLwogCitaRVhURVJOIGludCBaRVhQT1JUIGRlZmxhdGVHZXREaWN0aW9uYXJ5IE9GKCh6X3N0cmVhbXAgc3RybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVmICpkaWN0aW9uYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdUludCAgKmRpY3RMZW5ndGgpKTsKKy8qCisgICAgIFJldHVybnMgdGhlIHNsaWRpbmcgZGljdGlvbmFyeSBiZWluZyBtYWludGFpbmVkIGJ5IGRlZmxhdGUuICBkaWN0TGVuZ3RoIGlzCisgICBzZXQgdG8gdGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgZGljdGlvbmFyeSwgYW5kIHRoYXQgbWFueSBieXRlcyBhcmUgY29waWVkCisgICB0byBkaWN0aW9uYXJ5LiAgZGljdGlvbmFyeSBtdXN0IGhhdmUgZW5vdWdoIHNwYWNlLCB3aGVyZSAzMjc2OCBieXRlcyBpcworICAgYWx3YXlzIGVub3VnaC4gIElmIGRlZmxhdGVHZXREaWN0aW9uYXJ5KCkgaXMgY2FsbGVkIHdpdGggZGljdGlvbmFyeSBlcXVhbCB0bworICAgWl9OVUxMLCB0aGVuIG9ubHkgdGhlIGRpY3Rpb25hcnkgbGVuZ3RoIGlzIHJldHVybmVkLCBhbmQgbm90aGluZyBpcyBjb3BpZWQuCisgICBTaW1pbGFybHksIGlmIGRpY3RMZW5ndGggaXMgWl9OVUxMLCB0aGVuIGl0IGlzIG5vdCBzZXQuCisKKyAgICAgZGVmbGF0ZUdldERpY3Rpb25hcnkoKSBtYXkgcmV0dXJuIGEgbGVuZ3RoIGxlc3MgdGhhbiB0aGUgd2luZG93IHNpemUsIGV2ZW4KKyAgIHdoZW4gbW9yZSB0aGFuIHRoZSB3aW5kb3cgc2l6ZSBpbiBpbnB1dCBoYXMgYmVlbiBwcm92aWRlZC4gSXQgbWF5IHJldHVybiB1cAorICAgdG8gMjU4IGJ5dGVzIGxlc3MgaW4gdGhhdCBjYXNlLCBkdWUgdG8gaG93IHpsaWIncyBpbXBsZW1lbnRhdGlvbiBvZiBkZWZsYXRlCisgICBtYW5hZ2VzIHRoZSBzbGlkaW5nIHdpbmRvdyBhbmQgbG9va2FoZWFkIGZvciBtYXRjaGVzLCB3aGVyZSBtYXRjaGVzIGNhbiBiZQorICAgdXAgdG8gMjU4IGJ5dGVzIGxvbmcuIElmIHRoZSBhcHBsaWNhdGlvbiBuZWVkcyB0aGUgbGFzdCB3aW5kb3ctc2l6ZSBieXRlcyBvZgorICAgaW5wdXQsIHRoZW4gdGhhdCB3b3VsZCBuZWVkIHRvIGJlIHNhdmVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBvdXRzaWRlIG9mIHpsaWIuCisKKyAgICAgZGVmbGF0ZUdldERpY3Rpb25hcnkgcmV0dXJucyBaX09LIG9uIHN1Y2Nlc3MsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZQorICAgc3RyZWFtIHN0YXRlIGlzIGluY29uc2lzdGVudC4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZUNvcHkgT0YoKHpfc3RyZWFtcCBkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgel9zdHJlYW1wIHNvdXJjZSkpOwogLyoKICAgICAgU2V0cyB0aGUgZGVzdGluYXRpb24gc3RyZWFtIGFzIGEgY29tcGxldGUgY29weSBvZiB0aGUgc291cmNlIHN0cmVhbS4KIAogICAgICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VmdWwgd2hlbiBzZXZlcmFsIGNvbXByZXNzaW9uIHN0cmF0ZWdpZXMgd2lsbCBiZQogICAgdHJpZWQsIGZvciBleGFtcGxlIHdoZW4gdGhlcmUgYXJlIHNldmVyYWwgd2F5cyBvZiBwcmUtcHJvY2Vzc2luZyB0aGUgaW5wdXQKLSAgIGRhdGEgd2l0aCBhIGZpbHRlci4gVGhlIHN0cmVhbXMgdGhhdCB3aWxsIGJlIGRpc2NhcmRlZCBzaG91bGQgdGhlbiBiZSBmcmVlZAorICAgZGF0YSB3aXRoIGEgZmlsdGVyLiAgVGhlIHN0cmVhbXMgdGhhdCB3aWxsIGJlIGRpc2NhcmRlZCBzaG91bGQgdGhlbiBiZSBmcmVlZAogICAgYnkgY2FsbGluZyBkZWZsYXRlRW5kLiAgTm90ZSB0aGF0IGRlZmxhdGVDb3B5IGR1cGxpY2F0ZXMgdGhlIGludGVybmFsCi0gICBjb21wcmVzc2lvbiBzdGF0ZSB3aGljaCBjYW4gYmUgcXVpdGUgbGFyZ2UsIHNvIHRoaXMgc3RyYXRlZ3kgaXMgc2xvdyBhbmQKLSAgIGNhbiBjb25zdW1lIGxvdHMgb2YgbWVtb3J5LgorICAgY29tcHJlc3Npb24gc3RhdGUgd2hpY2ggY2FuIGJlIHF1aXRlIGxhcmdlLCBzbyB0aGlzIHN0cmF0ZWd5IGlzIHNsb3cgYW5kIGNhbgorICAgY29uc3VtZSBsb3RzIG9mIG1lbW9yeS4KIAogICAgICBkZWZsYXRlQ29weSByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdAogICAgZW5vdWdoIG1lbW9yeSwgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHNvdXJjZSBzdHJlYW0gc3RhdGUgd2FzIGluY29uc2lzdGVudAotICAgKHN1Y2ggYXMgemFsbG9jIGJlaW5nIE5VTEwpLiBtc2cgaXMgbGVmdCB1bmNoYW5nZWQgaW4gYm90aCBzb3VyY2UgYW5kCisgICAoc3VjaCBhcyB6YWxsb2MgYmVpbmcgWl9OVUxMKS4gIG1zZyBpcyBsZWZ0IHVuY2hhbmdlZCBpbiBib3RoIHNvdXJjZSBhbmQKICAgIGRlc3RpbmF0aW9uLgogKi8KIAorWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlUmVzZXQgT0YoKHpfc3RyZWFtcCBzdHJtKSk7CiAvKgotICAgICBUaGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gZGVmbGF0ZUVuZCBmb2xsb3dlZCBieSBkZWZsYXRlSW5pdCwKLSAgIGJ1dCBkb2VzIG5vdCBmcmVlIGFuZCByZWFsbG9jYXRlIGFsbCB0aGUgaW50ZXJuYWwgY29tcHJlc3Npb24gc3RhdGUuCi0gICBUaGUgc3RyZWFtIHdpbGwga2VlcCB0aGUgc2FtZSBjb21wcmVzc2lvbiBsZXZlbCBhbmQgYW55IG90aGVyIGF0dHJpYnV0ZXMKLSAgIHRoYXQgbWF5IGhhdmUgYmVlbiBzZXQgYnkgZGVmbGF0ZUluaXQyLgorICAgICBUaGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gZGVmbGF0ZUVuZCBmb2xsb3dlZCBieSBkZWZsYXRlSW5pdCwgYnV0CisgICBkb2VzIG5vdCBmcmVlIGFuZCByZWFsbG9jYXRlIHRoZSBpbnRlcm5hbCBjb21wcmVzc2lvbiBzdGF0ZS4gIFRoZSBzdHJlYW0KKyAgIHdpbGwgbGVhdmUgdGhlIGNvbXByZXNzaW9uIGxldmVsIGFuZCBhbnkgb3RoZXIgYXR0cmlidXRlcyB0aGF0IG1heSBoYXZlIGJlZW4KKyAgIHNldCB1bmNoYW5nZWQuCiAKLSAgICAgIGRlZmxhdGVSZXNldCByZXR1cm5zIFpfT0sgaWYgc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHNvdXJjZQotICAgc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQgKHN1Y2ggYXMgemFsbG9jIG9yIHN0YXRlIGJlaW5nIE5VTEwpLgorICAgICBkZWZsYXRlUmVzZXQgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzb3VyY2UKKyAgIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50IChzdWNoIGFzIHphbGxvYyBvciBzdGF0ZSBiZWluZyBaX05VTEwpLgogKi8KIAorWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlUGFyYW1zIE9GKCh6X3N0cmVhbXAgc3RybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RyYXRlZ3kpKTsKIC8qCiAgICAgIER5bmFtaWNhbGx5IHVwZGF0ZSB0aGUgY29tcHJlc3Npb24gbGV2ZWwgYW5kIGNvbXByZXNzaW9uIHN0cmF0ZWd5LiAgVGhlCi0gICBpbnRlcnByZXRhdGlvbiBvZiBsZXZlbCBhbmQgc3RyYXRlZ3kgaXMgYXMgaW4gZGVmbGF0ZUluaXQyLiAgVGhpcyBjYW4gYmUKKyAgIGludGVycHJldGF0aW9uIG9mIGxldmVsIGFuZCBzdHJhdGVneSBpcyBhcyBpbiBkZWZsYXRlSW5pdDIoKS4gIFRoaXMgY2FuIGJlCiAgICB1c2VkIHRvIHN3aXRjaCBiZXR3ZWVuIGNvbXByZXNzaW9uIGFuZCBzdHJhaWdodCBjb3B5IG9mIHRoZSBpbnB1dCBkYXRhLCBvcgotICAgdG8gc3dpdGNoIHRvIGEgZGlmZmVyZW50IGtpbmQgb2YgaW5wdXQgZGF0YSByZXF1aXJpbmcgYSBkaWZmZXJlbnQKLSAgIHN0cmF0ZWd5LiBJZiB0aGUgY29tcHJlc3Npb24gbGV2ZWwgaXMgY2hhbmdlZCwgdGhlIGlucHV0IGF2YWlsYWJsZSBzbyBmYXIKLSAgIGlzIGNvbXByZXNzZWQgd2l0aCB0aGUgb2xkIGxldmVsIChhbmQgbWF5IGJlIGZsdXNoZWQpOyB0aGUgbmV3IGxldmVsIHdpbGwKLSAgIHRha2UgZWZmZWN0IG9ubHkgYXQgdGhlIG5leHQgY2FsbCBvZiBkZWZsYXRlKCkuCisgICB0byBzd2l0Y2ggdG8gYSBkaWZmZXJlbnQga2luZCBvZiBpbnB1dCBkYXRhIHJlcXVpcmluZyBhIGRpZmZlcmVudCBzdHJhdGVneS4KKyAgIElmIHRoZSBjb21wcmVzc2lvbiBhcHByb2FjaCAod2hpY2ggaXMgYSBmdW5jdGlvbiBvZiB0aGUgbGV2ZWwpIG9yIHRoZQorICAgc3RyYXRlZ3kgaXMgY2hhbmdlZCwgYW5kIGlmIHRoZXJlIGhhdmUgYmVlbiBhbnkgZGVmbGF0ZSgpIGNhbGxzIHNpbmNlIHRoZQorICAgc3RhdGUgd2FzIGluaXRpYWxpemVkIG9yIHJlc2V0LCB0aGVuIHRoZSBpbnB1dCBhdmFpbGFibGUgc28gZmFyIGlzCisgICBjb21wcmVzc2VkIHdpdGggdGhlIG9sZCBsZXZlbCBhbmQgc3RyYXRlZ3kgdXNpbmcgZGVmbGF0ZShzdHJtLCBaX0JMT0NLKS4KKyAgIFRoZXJlIGFyZSB0aHJlZSBhcHByb2FjaGVzIGZvciB0aGUgY29tcHJlc3Npb24gbGV2ZWxzIDAsIDEuLjMsIGFuZCA0Li45CisgICByZXNwZWN0aXZlbHkuICBUaGUgbmV3IGxldmVsIGFuZCBzdHJhdGVneSB3aWxsIHRha2UgZWZmZWN0IGF0IHRoZSBuZXh0IGNhbGwKKyAgIG9mIGRlZmxhdGUoKS4KIAotICAgICBCZWZvcmUgdGhlIGNhbGwgb2YgZGVmbGF0ZVBhcmFtcywgdGhlIHN0cmVhbSBzdGF0ZSBtdXN0IGJlIHNldCBhcyBmb3IKLSAgIGEgY2FsbCBvZiBkZWZsYXRlKCksIHNpbmNlIHRoZSBjdXJyZW50bHkgYXZhaWxhYmxlIGlucHV0IG1heSBoYXZlIHRvCi0gICBiZSBjb21wcmVzc2VkIGFuZCBmbHVzaGVkLiBJbiBwYXJ0aWN1bGFyLCBzdHJtLT5hdmFpbF9vdXQgbXVzdCBiZSBub24temVyby4KKyAgICAgSWYgYSBkZWZsYXRlKHN0cm0sIFpfQkxPQ0spIGlzIHBlcmZvcm1lZCBieSBkZWZsYXRlUGFyYW1zKCksIGFuZCBpdCBkb2VzCisgICBub3QgaGF2ZSBlbm91Z2ggb3V0cHV0IHNwYWNlIHRvIGNvbXBsZXRlLCB0aGVuIHRoZSBwYXJhbWV0ZXIgY2hhbmdlIHdpbGwgbm90CisgICB0YWtlIGVmZmVjdC4gIEluIHRoaXMgY2FzZSwgZGVmbGF0ZVBhcmFtcygpIGNhbiBiZSBjYWxsZWQgYWdhaW4gd2l0aCB0aGUKKyAgIHNhbWUgcGFyYW1ldGVycyBhbmQgbW9yZSBvdXRwdXQgc3BhY2UgdG8gdHJ5IGFnYWluLgogCi0gICAgIGRlZmxhdGVQYXJhbXMgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzb3VyY2UKLSAgIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50IG9yIGlmIGEgcGFyYW1ldGVyIHdhcyBpbnZhbGlkLCBaX0JVRl9FUlJPUgotICAgaWYgc3RybS0+YXZhaWxfb3V0IHdhcyB6ZXJvLgorICAgICBJbiBvcmRlciB0byBhc3N1cmUgYSBjaGFuZ2UgaW4gdGhlIHBhcmFtZXRlcnMgb24gdGhlIGZpcnN0IHRyeSwgdGhlCisgICBkZWZsYXRlIHN0cmVhbSBzaG91bGQgYmUgZmx1c2hlZCB1c2luZyBkZWZsYXRlKCkgd2l0aCBaX0JMT0NLIG9yIG90aGVyIGZsdXNoCisgICByZXF1ZXN0IHVudGlsIHN0cm0uYXZhaWxfb3V0IGlzIG5vdCB6ZXJvLCBiZWZvcmUgY2FsbGluZyBkZWZsYXRlUGFyYW1zKCkuCisgICBUaGVuIG5vIG1vcmUgaW5wdXQgZGF0YSBzaG91bGQgYmUgcHJvdmlkZWQgYmVmb3JlIHRoZSBkZWZsYXRlUGFyYW1zKCkgY2FsbC4KKyAgIElmIHRoaXMgaXMgZG9uZSwgdGhlIG9sZCBsZXZlbCBhbmQgc3RyYXRlZ3kgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBkYXRhCisgICBjb21wcmVzc2VkIGJlZm9yZSBkZWZsYXRlUGFyYW1zKCksIGFuZCB0aGUgbmV3IGxldmVsIGFuZCBzdHJhdGVneSB3aWxsIGJlCisgICBhcHBsaWVkIHRvIHRoZSB0aGUgZGF0YSBjb21wcmVzc2VkIGFmdGVyIGRlZmxhdGVQYXJhbXMoKS4KKworICAgICBkZWZsYXRlUGFyYW1zIHJldHVybnMgWl9PSyBvbiBzdWNjZXNzLCBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc291cmNlIHN0cmVhbQorICAgc3RhdGUgd2FzIGluY29uc2lzdGVudCBvciBpZiBhIHBhcmFtZXRlciB3YXMgaW52YWxpZCwgb3IgWl9CVUZfRVJST1IgaWYKKyAgIHRoZXJlIHdhcyBub3QgZW5vdWdoIG91dHB1dCBzcGFjZSB0byBjb21wbGV0ZSB0aGUgY29tcHJlc3Npb24gb2YgdGhlCisgICBhdmFpbGFibGUgaW5wdXQgZGF0YSBiZWZvcmUgYSBjaGFuZ2UgaW4gdGhlIHN0cmF0ZWd5IG9yIGFwcHJvYWNoLiAgTm90ZSB0aGF0CisgICBpbiB0aGUgY2FzZSBvZiBhIFpfQlVGX0VSUk9SLCB0aGUgcGFyYW1ldGVycyBhcmUgbm90IGNoYW5nZWQuICBBIHJldHVybgorICAgdmFsdWUgb2YgWl9CVUZfRVJST1IgaXMgbm90IGZhdGFsLCBpbiB3aGljaCBjYXNlIGRlZmxhdGVQYXJhbXMoKSBjYW4gYmUKKyAgIHJldHJpZWQgd2l0aCBtb3JlIG91dHB1dCBzcGFjZS4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZVR1bmUgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdvb2RfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heF9sYXp5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5pY2VfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heF9jaGFpbikpOworLyoKKyAgICAgRmluZSB0dW5lIGRlZmxhdGUncyBpbnRlcm5hbCBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzLiAgVGhpcyBzaG91bGQgb25seSBiZQorICAgdXNlZCBieSBzb21lb25lIHdobyB1bmRlcnN0YW5kcyB0aGUgYWxnb3JpdGhtIHVzZWQgYnkgemxpYidzIGRlZmxhdGUgZm9yCisgICBzZWFyY2hpbmcgZm9yIHRoZSBiZXN0IG1hdGNoaW5nIHN0cmluZywgYW5kIGV2ZW4gdGhlbiBvbmx5IGJ5IHRoZSBtb3N0CisgICBmYW5hdGljIG9wdGltaXplciB0cnlpbmcgdG8gc3F1ZWV6ZSBvdXQgdGhlIGxhc3QgY29tcHJlc3NlZCBiaXQgZm9yIHRoZWlyCisgICBzcGVjaWZpYyBpbnB1dCBkYXRhLiAgUmVhZCB0aGUgZGVmbGF0ZS5jIHNvdXJjZSBjb2RlIGZvciB0aGUgbWVhbmluZyBvZiB0aGUKKyAgIG1heF9sYXp5LCBnb29kX2xlbmd0aCwgbmljZV9sZW5ndGgsIGFuZCBtYXhfY2hhaW4gcGFyYW1ldGVycy4KKworICAgICBkZWZsYXRlVHVuZSgpIGNhbiBiZSBjYWxsZWQgYWZ0ZXIgZGVmbGF0ZUluaXQoKSBvciBkZWZsYXRlSW5pdDIoKSwgYW5kCisgICByZXR1cm5zIFpfT0sgb24gc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgZm9yIGFuIGludmFsaWQgZGVmbGF0ZSBzdHJlYW0uCisgKi8KKworWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGRlZmxhdGVCb3VuZCBPRigoel9zdHJlYW1wIHN0cm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1TG9uZyBzb3VyY2VMZW4pKTsKKy8qCisgICAgIGRlZmxhdGVCb3VuZCgpIHJldHVybnMgYW4gdXBwZXIgYm91bmQgb24gdGhlIGNvbXByZXNzZWQgc2l6ZSBhZnRlcgorICAgZGVmbGF0aW9uIG9mIHNvdXJjZUxlbiBieXRlcy4gIEl0IG11c3QgYmUgY2FsbGVkIGFmdGVyIGRlZmxhdGVJbml0KCkgb3IKKyAgIGRlZmxhdGVJbml0MigpLCBhbmQgYWZ0ZXIgZGVmbGF0ZVNldEhlYWRlcigpLCBpZiB1c2VkLiAgVGhpcyB3b3VsZCBiZSB1c2VkCisgICB0byBhbGxvY2F0ZSBhbiBvdXRwdXQgYnVmZmVyIGZvciBkZWZsYXRpb24gaW4gYSBzaW5nbGUgcGFzcywgYW5kIHNvIHdvdWxkIGJlCisgICBjYWxsZWQgYmVmb3JlIGRlZmxhdGUoKS4gIElmIHRoYXQgZmlyc3QgZGVmbGF0ZSgpIGNhbGwgaXMgcHJvdmlkZWQgdGhlCisgICBzb3VyY2VMZW4gaW5wdXQgYnl0ZXMsIGFuIG91dHB1dCBidWZmZXIgYWxsb2NhdGVkIHRvIHRoZSBzaXplIHJldHVybmVkIGJ5CisgICBkZWZsYXRlQm91bmQoKSwgYW5kIHRoZSBmbHVzaCB2YWx1ZSBaX0ZJTklTSCwgdGhlbiBkZWZsYXRlKCkgaXMgZ3VhcmFudGVlZAorICAgdG8gcmV0dXJuIFpfU1RSRUFNX0VORC4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIGNvbXByZXNzZWQgc2l6ZSB0bworICAgYmUgbGFyZ2VyIHRoYW4gdGhlIHZhbHVlIHJldHVybmVkIGJ5IGRlZmxhdGVCb3VuZCgpIGlmIGZsdXNoIG9wdGlvbnMgb3RoZXIKKyAgIHRoYW4gWl9GSU5JU0ggb3IgWl9OT19GTFVTSCBhcmUgdXNlZC4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZVBlbmRpbmcgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgKnBlbmRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmJpdHMpKTsKKy8qCisgICAgIGRlZmxhdGVQZW5kaW5nKCkgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGFuZCBiaXRzIG9mIG91dHB1dCB0aGF0IGhhdmUKKyAgIGJlZW4gZ2VuZXJhdGVkLCBidXQgbm90IHlldCBwcm92aWRlZCBpbiB0aGUgYXZhaWxhYmxlIG91dHB1dC4gIFRoZSBieXRlcyBub3QKKyAgIHByb3ZpZGVkIHdvdWxkIGJlIGR1ZSB0byB0aGUgYXZhaWxhYmxlIG91dHB1dCBzcGFjZSBoYXZpbmcgYmVpbmcgY29uc3VtZWQuCisgICBUaGUgbnVtYmVyIG9mIGJpdHMgb2Ygb3V0cHV0IG5vdCBwcm92aWRlZCBhcmUgYmV0d2VlbiAwIGFuZCA3LCB3aGVyZSB0aGV5CisgICBhd2FpdCBtb3JlIGJpdHMgdG8gam9pbiB0aGVtIGluIG9yZGVyIHRvIGZpbGwgb3V0IGEgZnVsbCBieXRlLiAgSWYgcGVuZGluZworICAgb3IgYml0cyBhcmUgWl9OVUxMLCB0aGVuIHRob3NlIHZhbHVlcyBhcmUgbm90IHNldC4KKworICAgICBkZWZsYXRlUGVuZGluZyByZXR1cm5zIFpfT0sgaWYgc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHNvdXJjZQorICAgc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQuCisgKi8KKworWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlUHJpbWUgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSkpOworLyoKKyAgICAgZGVmbGF0ZVByaW1lKCkgaW5zZXJ0cyBiaXRzIGluIHRoZSBkZWZsYXRlIG91dHB1dCBzdHJlYW0uICBUaGUgaW50ZW50CisgICBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBzdGFydCBvZmYgdGhlIGRlZmxhdGUgb3V0cHV0IHdpdGggdGhlIGJpdHMKKyAgIGxlZnRvdmVyIGZyb20gYSBwcmV2aW91cyBkZWZsYXRlIHN0cmVhbSB3aGVuIGFwcGVuZGluZyB0byBpdC4gIEFzIHN1Y2gsIHRoaXMKKyAgIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIHVzZWQgZm9yIHJhdyBkZWZsYXRlLCBhbmQgbXVzdCBiZSB1c2VkIGJlZm9yZSB0aGUgZmlyc3QKKyAgIGRlZmxhdGUoKSBjYWxsIGFmdGVyIGEgZGVmbGF0ZUluaXQyKCkgb3IgZGVmbGF0ZVJlc2V0KCkuICBiaXRzIG11c3QgYmUgbGVzcworICAgdGhhbiBvciBlcXVhbCB0byAxNiwgYW5kIHRoYXQgbWFueSBvZiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB2YWx1ZQorICAgd2lsbCBiZSBpbnNlcnRlZCBpbiB0aGUgb3V0cHV0LgorCisgICAgIGRlZmxhdGVQcmltZSByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9CVUZfRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2gKKyAgIHJvb20gaW4gdGhlIGludGVybmFsIGJ1ZmZlciB0byBpbnNlcnQgdGhlIGJpdHMsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZQorICAgc291cmNlIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50LgorKi8KKworWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlU2V0SGVhZGVyIE9GKCh6X3N0cmVhbXAgc3RybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3pfaGVhZGVycCBoZWFkKSk7CisvKgorICAgICBkZWZsYXRlU2V0SGVhZGVyKCkgcHJvdmlkZXMgZ3ppcCBoZWFkZXIgaW5mb3JtYXRpb24gZm9yIHdoZW4gYSBnemlwCisgICBzdHJlYW0gaXMgcmVxdWVzdGVkIGJ5IGRlZmxhdGVJbml0MigpLiAgZGVmbGF0ZVNldEhlYWRlcigpIG1heSBiZSBjYWxsZWQKKyAgIGFmdGVyIGRlZmxhdGVJbml0MigpIG9yIGRlZmxhdGVSZXNldCgpIGFuZCBiZWZvcmUgdGhlIGZpcnN0IGNhbGwgb2YKKyAgIGRlZmxhdGUoKS4gIFRoZSB0ZXh0LCB0aW1lLCBvcywgZXh0cmEgZmllbGQsIG5hbWUsIGFuZCBjb21tZW50IGluZm9ybWF0aW9uCisgICBpbiB0aGUgcHJvdmlkZWQgZ3pfaGVhZGVyIHN0cnVjdHVyZSBhcmUgd3JpdHRlbiB0byB0aGUgZ3ppcCBoZWFkZXIgKHhmbGFnIGlzCisgICBpZ25vcmVkIC0tIHRoZSBleHRyYSBmbGFncyBhcmUgc2V0IGFjY29yZGluZyB0byB0aGUgY29tcHJlc3Npb24gbGV2ZWwpLiAgVGhlCisgICBjYWxsZXIgbXVzdCBhc3N1cmUgdGhhdCwgaWYgbm90IFpfTlVMTCwgbmFtZSBhbmQgY29tbWVudCBhcmUgdGVybWluYXRlZCB3aXRoCisgICBhIHplcm8gYnl0ZSwgYW5kIHRoYXQgaWYgZXh0cmEgaXMgbm90IFpfTlVMTCwgdGhhdCBleHRyYV9sZW4gYnl0ZXMgYXJlCisgICBhdmFpbGFibGUgdGhlcmUuICBJZiBoY3JjIGlzIHRydWUsIGEgZ3ppcCBoZWFkZXIgY3JjIGlzIGluY2x1ZGVkLiAgTm90ZSB0aGF0CisgICB0aGUgY3VycmVudCB2ZXJzaW9ucyBvZiB0aGUgY29tbWFuZC1saW5lIHZlcnNpb24gb2YgZ3ppcCAodXAgdGhyb3VnaCB2ZXJzaW9uCisgICAxLjMueCkgZG8gbm90IHN1cHBvcnQgaGVhZGVyIGNyYydzLCBhbmQgd2lsbCByZXBvcnQgdGhhdCBpdCBpcyBhICJtdWx0aS1wYXJ0CisgICBnemlwIGZpbGUiIGFuZCBnaXZlIHVwLgorCisgICAgIElmIGRlZmxhdGVTZXRIZWFkZXIgaXMgbm90IHVzZWQsIHRoZSBkZWZhdWx0IGd6aXAgaGVhZGVyIGhhcyB0ZXh0IGZhbHNlLAorICAgdGhlIHRpbWUgc2V0IHRvIHplcm8sIGFuZCBvcyBzZXQgdG8gMjU1LCB3aXRoIG5vIGV4dHJhLCBuYW1lLCBvciBjb21tZW50CisgICBmaWVsZHMuICBUaGUgZ3ppcCBoZWFkZXIgaXMgcmV0dXJuZWQgdG8gdGhlIGRlZmF1bHQgc3RhdGUgYnkgZGVmbGF0ZVJlc2V0KCkuCisKKyAgICAgZGVmbGF0ZVNldEhlYWRlciByZXR1cm5zIFpfT0sgaWYgc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHNvdXJjZQorICAgc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQuCiAqLwogCiAvKgotWkVYVEVSTihpbnQpICBpbmZsYXRlSW5pdDIgT0YoKHpfc3RyZWFtcCBzdHJtLAorWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlSW5pdDIgT0YoKHpfc3RyZWFtcCBzdHJtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgd2luZG93Qml0cykpOwogCi0gICAgIFRoaXMgaXMgYW5vdGhlciB2ZXJzaW9uIG9mIGluZmxhdGVJbml0IHdpdGggYW4gZXh0cmEgcGFyYW1ldGVyLiBUaGUKKyAgICAgVGhpcyBpcyBhbm90aGVyIHZlcnNpb24gb2YgaW5mbGF0ZUluaXQgd2l0aCBhbiBleHRyYSBwYXJhbWV0ZXIuICBUaGUKICAgIGZpZWxkcyBuZXh0X2luLCBhdmFpbF9pbiwgemFsbG9jLCB6ZnJlZSBhbmQgb3BhcXVlIG11c3QgYmUgaW5pdGlhbGl6ZWQKICAgIGJlZm9yZSBieSB0aGUgY2FsbGVyLgogCiAgICAgIFRoZSB3aW5kb3dCaXRzIHBhcmFtZXRlciBpcyB0aGUgYmFzZSB0d28gbG9nYXJpdGhtIG9mIHRoZSBtYXhpbXVtIHdpbmRvdwogICAgc2l6ZSAodGhlIHNpemUgb2YgdGhlIGhpc3RvcnkgYnVmZmVyKS4gIEl0IHNob3VsZCBiZSBpbiB0aGUgcmFuZ2UgOC4uMTUgZm9yCi0gICB0aGlzIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDE1IGlmIGluZmxhdGVJbml0IGlzIHVzZWQKLSAgIGluc3RlYWQuIElmIGEgY29tcHJlc3NlZCBzdHJlYW0gd2l0aCBhIGxhcmdlciB3aW5kb3cgc2l6ZSBpcyBnaXZlbiBhcwotICAgaW5wdXQsIGluZmxhdGUoKSB3aWxsIHJldHVybiB3aXRoIHRoZSBlcnJvciBjb2RlIFpfREFUQV9FUlJPUiBpbnN0ZWFkIG9mCi0gICB0cnlpbmcgdG8gYWxsb2NhdGUgYSBsYXJnZXIgd2luZG93LgorICAgdGhpcyB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTUgaWYgaW5mbGF0ZUluaXQgaXMgdXNlZAorICAgaW5zdGVhZC4gIHdpbmRvd0JpdHMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHdpbmRvd0JpdHMgdmFsdWUKKyAgIHByb3ZpZGVkIHRvIGRlZmxhdGVJbml0MigpIHdoaWxlIGNvbXByZXNzaW5nLCBvciBpdCBtdXN0IGJlIGVxdWFsIHRvIDE1IGlmCisgICBkZWZsYXRlSW5pdDIoKSB3YXMgbm90IHVzZWQuICBJZiBhIGNvbXByZXNzZWQgc3RyZWFtIHdpdGggYSBsYXJnZXIgd2luZG93CisgICBzaXplIGlzIGdpdmVuIGFzIGlucHV0LCBpbmZsYXRlKCkgd2lsbCByZXR1cm4gd2l0aCB0aGUgZXJyb3IgY29kZQorICAgWl9EQVRBX0VSUk9SIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGFsbG9jYXRlIGEgbGFyZ2VyIHdpbmRvdy4KIAotICAgICAgaW5mbGF0ZUluaXQyIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX01FTV9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaAotICAgbWVtb3J5LCBaX1NUUkVBTV9FUlJPUiBpZiBhIHBhcmFtZXRlciBpcyBpbnZhbGlkIChzdWNoIGFzIGEgbmVnYXRpdmUKLSAgIG1lbUxldmVsKS4gbXNnIGlzIHNldCB0byBudWxsIGlmIHRoZXJlIGlzIG5vIGVycm9yIG1lc3NhZ2UuICBpbmZsYXRlSW5pdDIKLSAgIGRvZXMgbm90IHBlcmZvcm0gYW55IGRlY29tcHJlc3Npb24gYXBhcnQgZnJvbSByZWFkaW5nIHRoZSB6bGliIGhlYWRlciBpZgotICAgcHJlc2VudDogdGhpcyB3aWxsIGJlIGRvbmUgYnkgaW5mbGF0ZSgpLiAoU28gbmV4dF9pbiBhbmQgYXZhaWxfaW4gbWF5IGJlCi0gICBtb2RpZmllZCwgYnV0IG5leHRfb3V0IGFuZCBhdmFpbF9vdXQgYXJlIHVuY2hhbmdlZC4pCisgICAgIHdpbmRvd0JpdHMgY2FuIGFsc28gYmUgemVybyB0byByZXF1ZXN0IHRoYXQgaW5mbGF0ZSB1c2UgdGhlIHdpbmRvdyBzaXplIGluCisgICB0aGUgemxpYiBoZWFkZXIgb2YgdGhlIGNvbXByZXNzZWQgc3RyZWFtLgorCisgICAgIHdpbmRvd0JpdHMgY2FuIGFsc28gYmUgLTguLi0xNSBmb3IgcmF3IGluZmxhdGUuICBJbiB0aGlzIGNhc2UsIC13aW5kb3dCaXRzCisgICBkZXRlcm1pbmVzIHRoZSB3aW5kb3cgc2l6ZS4gIGluZmxhdGUoKSB3aWxsIHRoZW4gcHJvY2VzcyByYXcgZGVmbGF0ZSBkYXRhLAorICAgbm90IGxvb2tpbmcgZm9yIGEgemxpYiBvciBnemlwIGhlYWRlciwgbm90IGdlbmVyYXRpbmcgYSBjaGVjayB2YWx1ZSwgYW5kIG5vdAorICAgbG9va2luZyBmb3IgYW55IGNoZWNrIHZhbHVlcyBmb3IgY29tcGFyaXNvbiBhdCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0uICBUaGlzCisgICBpcyBmb3IgdXNlIHdpdGggb3RoZXIgZm9ybWF0cyB0aGF0IHVzZSB0aGUgZGVmbGF0ZSBjb21wcmVzc2VkIGRhdGEgZm9ybWF0CisgICBzdWNoIGFzIHppcC4gIFRob3NlIGZvcm1hdHMgcHJvdmlkZSB0aGVpciBvd24gY2hlY2sgdmFsdWVzLiAgSWYgYSBjdXN0b20KKyAgIGZvcm1hdCBpcyBkZXZlbG9wZWQgdXNpbmcgdGhlIHJhdyBkZWZsYXRlIGZvcm1hdCBmb3IgY29tcHJlc3NlZCBkYXRhLCBpdCBpcworICAgcmVjb21tZW5kZWQgdGhhdCBhIGNoZWNrIHZhbHVlIHN1Y2ggYXMgYW4gQWRsZXItMzIgb3IgYSBDUkMtMzIgYmUgYXBwbGllZCB0bworICAgdGhlIHVuY29tcHJlc3NlZCBkYXRhIGFzIGlzIGRvbmUgaW4gdGhlIHpsaWIsIGd6aXAsIGFuZCB6aXAgZm9ybWF0cy4gIEZvcgorICAgbW9zdCBhcHBsaWNhdGlvbnMsIHRoZSB6bGliIGZvcm1hdCBzaG91bGQgYmUgdXNlZCBhcyBpcy4gIE5vdGUgdGhhdCBjb21tZW50cworICAgYWJvdmUgb24gdGhlIHVzZSBpbiBkZWZsYXRlSW5pdDIoKSBhcHBsaWVzIHRvIHRoZSBtYWduaXR1ZGUgb2Ygd2luZG93Qml0cy4KKworICAgICB3aW5kb3dCaXRzIGNhbiBhbHNvIGJlIGdyZWF0ZXIgdGhhbiAxNSBmb3Igb3B0aW9uYWwgZ3ppcCBkZWNvZGluZy4gIEFkZAorICAgMzIgdG8gd2luZG93Qml0cyB0byBlbmFibGUgemxpYiBhbmQgZ3ppcCBkZWNvZGluZyB3aXRoIGF1dG9tYXRpYyBoZWFkZXIKKyAgIGRldGVjdGlvbiwgb3IgYWRkIDE2IHRvIGRlY29kZSBvbmx5IHRoZSBnemlwIGZvcm1hdCAodGhlIHpsaWIgZm9ybWF0IHdpbGwKKyAgIHJldHVybiBhIFpfREFUQV9FUlJPUikuICBJZiBhIGd6aXAgc3RyZWFtIGlzIGJlaW5nIGRlY29kZWQsIHN0cm0tPmFkbGVyIGlzIGEKKyAgIENSQy0zMiBpbnN0ZWFkIG9mIGFuIEFkbGVyLTMyLiAgVW5saWtlIHRoZSBndW56aXAgdXRpbGl0eSBhbmQgZ3pyZWFkKCkgKHNlZQorICAgYmVsb3cpLCBpbmZsYXRlKCkgd2lsbCAqbm90KiBhdXRvbWF0aWNhbGx5IGRlY29kZSBjb25jYXRlbmF0ZWQgZ3ppcCBtZW1iZXJzLgorICAgaW5mbGF0ZSgpIHdpbGwgcmV0dXJuIFpfU1RSRUFNX0VORCBhdCB0aGUgZW5kIG9mIHRoZSBnemlwIG1lbWJlci4gIFRoZSBzdGF0ZQorICAgd291bGQgbmVlZCB0byBiZSByZXNldCB0byBjb250aW51ZSBkZWNvZGluZyBhIHN1YnNlcXVlbnQgZ3ppcCBtZW1iZXIuICBUaGlzCisgICAqbXVzdCogYmUgZG9uZSBpZiB0aGVyZSBpcyBtb3JlIGRhdGEgYWZ0ZXIgYSBnemlwIG1lbWJlciwgaW4gb3JkZXIgZm9yIHRoZQorICAgZGVjb21wcmVzc2lvbiB0byBiZSBjb21wbGlhbnQgd2l0aCB0aGUgZ3ppcCBzdGFuZGFyZCAoUkZDIDE5NTIpLgorCisgICAgIGluZmxhdGVJbml0MiByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2gKKyAgIG1lbW9yeSwgWl9WRVJTSU9OX0VSUk9SIGlmIHRoZSB6bGliIGxpYnJhcnkgdmVyc2lvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUKKyAgIHZlcnNpb24gYXNzdW1lZCBieSB0aGUgY2FsbGVyLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgcGFyYW1ldGVycyBhcmUKKyAgIGludmFsaWQsIHN1Y2ggYXMgYSBudWxsIHBvaW50ZXIgdG8gdGhlIHN0cnVjdHVyZS4gIG1zZyBpcyBzZXQgdG8gbnVsbCBpZgorICAgdGhlcmUgaXMgbm8gZXJyb3IgbWVzc2FnZS4gIGluZmxhdGVJbml0MiBkb2VzIG5vdCBwZXJmb3JtIGFueSBkZWNvbXByZXNzaW9uCisgICBhcGFydCBmcm9tIHBvc3NpYmx5IHJlYWRpbmcgdGhlIHpsaWIgaGVhZGVyIGlmIHByZXNlbnQ6IGFjdHVhbCBkZWNvbXByZXNzaW9uCisgICB3aWxsIGJlIGRvbmUgYnkgaW5mbGF0ZSgpLiAgKFNvIG5leHRfaW4gYW5kIGF2YWlsX2luIG1heSBiZSBtb2RpZmllZCwgYnV0CisgICBuZXh0X291dCBhbmQgYXZhaWxfb3V0IGFyZSB1bnVzZWQgYW5kIHVuY2hhbmdlZC4pIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uCisgICBvZiBpbmZsYXRlSW5pdDIoKSBkb2VzIG5vdCBwcm9jZXNzIGFueSBoZWFkZXIgaW5mb3JtYXRpb24gLS0gdGhhdCBpcworICAgZGVmZXJyZWQgdW50aWwgaW5mbGF0ZSgpIGlzIGNhbGxlZC4KICovCiAKK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZVNldERpY3Rpb25hcnkgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnl0ZWYgKmRpY3Rpb25hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1SW50ICBkaWN0TGVuZ3RoKSk7CiAvKgogICAgICBJbml0aWFsaXplcyB0aGUgZGVjb21wcmVzc2lvbiBkaWN0aW9uYXJ5IGZyb20gdGhlIGdpdmVuIHVuY29tcHJlc3NlZCBieXRlCi0gICBzZXF1ZW5jZS4gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciBhIGNhbGwgb2YgaW5mbGF0ZQotICAgaWYgdGhpcyBjYWxsIHJldHVybmVkIFpfTkVFRF9ESUNULiBUaGUgZGljdGlvbmFyeSBjaG9zZW4gYnkgdGhlIGNvbXByZXNzb3IKLSAgIGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gdGhlIEFkbGVyMzIgdmFsdWUgcmV0dXJuZWQgYnkgdGhpcyBjYWxsIG9mCi0gICBpbmZsYXRlLiBUaGUgY29tcHJlc3NvciBhbmQgZGVjb21wcmVzc29yIG11c3QgdXNlIGV4YWN0bHkgdGhlIHNhbWUKLSAgIGRpY3Rpb25hcnkgKHNlZSBkZWZsYXRlU2V0RGljdGlvbmFyeSkuCisgICBzZXF1ZW5jZS4gIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgYSBjYWxsIG9mIGluZmxhdGUsCisgICBpZiB0aGF0IGNhbGwgcmV0dXJuZWQgWl9ORUVEX0RJQ1QuICBUaGUgZGljdGlvbmFyeSBjaG9zZW4gYnkgdGhlIGNvbXByZXNzb3IKKyAgIGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gdGhlIEFkbGVyLTMyIHZhbHVlIHJldHVybmVkIGJ5IHRoYXQgY2FsbCBvZiBpbmZsYXRlLgorICAgVGhlIGNvbXByZXNzb3IgYW5kIGRlY29tcHJlc3NvciBtdXN0IHVzZSBleGFjdGx5IHRoZSBzYW1lIGRpY3Rpb25hcnkgKHNlZQorICAgZGVmbGF0ZVNldERpY3Rpb25hcnkpLiAgRm9yIHJhdyBpbmZsYXRlLCB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgYXQgYW55CisgICB0aW1lIHRvIHNldCB0aGUgZGljdGlvbmFyeS4gIElmIHRoZSBwcm92aWRlZCBkaWN0aW9uYXJ5IGlzIHNtYWxsZXIgdGhhbiB0aGUKKyAgIHdpbmRvdyBhbmQgdGhlcmUgaXMgYWxyZWFkeSBkYXRhIGluIHRoZSB3aW5kb3csIHRoZW4gdGhlIHByb3ZpZGVkIGRpY3Rpb25hcnkKKyAgIHdpbGwgYW1lbmQgd2hhdCdzIHRoZXJlLiAgVGhlIGFwcGxpY2F0aW9uIG11c3QgaW5zdXJlIHRoYXQgdGhlIGRpY3Rpb25hcnkKKyAgIHRoYXQgd2FzIHVzZWQgZm9yIGNvbXByZXNzaW9uIGlzIHByb3ZpZGVkLgogCiAgICAgIGluZmxhdGVTZXREaWN0aW9uYXJ5IHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX1NUUkVBTV9FUlJPUiBpZiBhCi0gICBwYXJhbWV0ZXIgaXMgaW52YWxpZCAoc3VjaCBhcyBOVUxMIGRpY3Rpb25hcnkpIG9yIHRoZSBzdHJlYW0gc3RhdGUgaXMKKyAgIHBhcmFtZXRlciBpcyBpbnZhbGlkIChlLmcuICBkaWN0aW9uYXJ5IGJlaW5nIFpfTlVMTCkgb3IgdGhlIHN0cmVhbSBzdGF0ZSBpcwogICAgaW5jb25zaXN0ZW50LCBaX0RBVEFfRVJST1IgaWYgdGhlIGdpdmVuIGRpY3Rpb25hcnkgZG9lc24ndCBtYXRjaCB0aGUKLSAgIGV4cGVjdGVkIG9uZSAoaW5jb3JyZWN0IEFkbGVyMzIgdmFsdWUpLiBpbmZsYXRlU2V0RGljdGlvbmFyeSBkb2VzIG5vdAorICAgZXhwZWN0ZWQgb25lIChpbmNvcnJlY3QgQWRsZXItMzIgdmFsdWUpLiAgaW5mbGF0ZVNldERpY3Rpb25hcnkgZG9lcyBub3QKICAgIHBlcmZvcm0gYW55IGRlY29tcHJlc3Npb246IHRoaXMgd2lsbCBiZSBkb25lIGJ5IHN1YnNlcXVlbnQgY2FsbHMgb2YKICAgIGluZmxhdGUoKS4KICovCiAKK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUdldERpY3Rpb25hcnkgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnl0ZWYgKmRpY3Rpb25hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1SW50ICAqZGljdExlbmd0aCkpOwogLyoKLSAgICBTa2lwcyBpbnZhbGlkIGNvbXByZXNzZWQgZGF0YSB1bnRpbCBhIGZ1bGwgZmx1c2ggcG9pbnQgKHNlZSBhYm92ZSB0aGUKLSAgZGVzY3JpcHRpb24gb2YgZGVmbGF0ZSB3aXRoIFpfRlVMTF9GTFVTSCkgY2FuIGJlIGZvdW5kLCBvciB1bnRpbCBhbGwKLSAgYXZhaWxhYmxlIGlucHV0IGlzIHNraXBwZWQuIE5vIG91dHB1dCBpcyBwcm92aWRlZC4KKyAgICAgUmV0dXJucyB0aGUgc2xpZGluZyBkaWN0aW9uYXJ5IGJlaW5nIG1haW50YWluZWQgYnkgaW5mbGF0ZS4gIGRpY3RMZW5ndGggaXMKKyAgIHNldCB0byB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkaWN0aW9uYXJ5LCBhbmQgdGhhdCBtYW55IGJ5dGVzIGFyZSBjb3BpZWQKKyAgIHRvIGRpY3Rpb25hcnkuICBkaWN0aW9uYXJ5IG11c3QgaGF2ZSBlbm91Z2ggc3BhY2UsIHdoZXJlIDMyNzY4IGJ5dGVzIGlzCisgICBhbHdheXMgZW5vdWdoLiAgSWYgaW5mbGF0ZUdldERpY3Rpb25hcnkoKSBpcyBjYWxsZWQgd2l0aCBkaWN0aW9uYXJ5IGVxdWFsIHRvCisgICBaX05VTEwsIHRoZW4gb25seSB0aGUgZGljdGlvbmFyeSBsZW5ndGggaXMgcmV0dXJuZWQsIGFuZCBub3RoaW5nIGlzIGNvcGllZC4KKyAgIFNpbWlsYXJseSwgaWYgZGljdExlbmd0aCBpcyBaX05VTEwsIHRoZW4gaXQgaXMgbm90IHNldC4KIAotICAgIGluZmxhdGVTeW5jIHJldHVybnMgWl9PSyBpZiBhIGZ1bGwgZmx1c2ggcG9pbnQgaGFzIGJlZW4gZm91bmQsIFpfQlVGX0VSUk9SCi0gIGlmIG5vIG1vcmUgaW5wdXQgd2FzIHByb3ZpZGVkLCBaX0RBVEFfRVJST1IgaWYgbm8gZmx1c2ggcG9pbnQgaGFzIGJlZW4gZm91bmQsCi0gIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzdHJlYW0gc3RydWN0dXJlIHdhcyBpbmNvbnNpc3RlbnQuIEluIHRoZSBzdWNjZXNzCi0gIGNhc2UsIHRoZSBhcHBsaWNhdGlvbiBtYXkgc2F2ZSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0b3RhbF9pbiB3aGljaAotICBpbmRpY2F0ZXMgd2hlcmUgdmFsaWQgY29tcHJlc3NlZCBkYXRhIHdhcyBmb3VuZC4gSW4gdGhlIGVycm9yIGNhc2UsIHRoZQotICBhcHBsaWNhdGlvbiBtYXkgcmVwZWF0ZWRseSBjYWxsIGluZmxhdGVTeW5jLCBwcm92aWRpbmcgbW9yZSBpbnB1dCBlYWNoIHRpbWUsCi0gIHVudGlsIHN1Y2Nlc3Mgb3IgZW5kIG9mIHRoZSBpbnB1dCBkYXRhLgorICAgICBpbmZsYXRlR2V0RGljdGlvbmFyeSByZXR1cm5zIFpfT0sgb24gc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlCisgICBzdHJlYW0gc3RhdGUgaXMgaW5jb25zaXN0ZW50LgogKi8KIAotWkVYVEVSTihpbnQpICBpbmZsYXRlUmVzZXQgT0YoKHpfc3RyZWFtcCBzdHJtKSk7CitaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVTeW5jIE9GKCh6X3N0cmVhbXAgc3RybSkpOworLyoKKyAgICAgU2tpcHMgaW52YWxpZCBjb21wcmVzc2VkIGRhdGEgdW50aWwgYSBwb3NzaWJsZSBmdWxsIGZsdXNoIHBvaW50IChzZWUgYWJvdmUKKyAgIGZvciB0aGUgZGVzY3JpcHRpb24gb2YgZGVmbGF0ZSB3aXRoIFpfRlVMTF9GTFVTSCkgY2FuIGJlIGZvdW5kLCBvciB1bnRpbCBhbGwKKyAgIGF2YWlsYWJsZSBpbnB1dCBpcyBza2lwcGVkLiAgTm8gb3V0cHV0IGlzIHByb3ZpZGVkLgorCisgICAgIGluZmxhdGVTeW5jIHNlYXJjaGVzIGZvciBhIDAwIDAwIEZGIEZGIHBhdHRlcm4gaW4gdGhlIGNvbXByZXNzZWQgZGF0YS4KKyAgIEFsbCBmdWxsIGZsdXNoIHBvaW50cyBoYXZlIHRoaXMgcGF0dGVybiwgYnV0IG5vdCBhbGwgb2NjdXJyZW5jZXMgb2YgdGhpcworICAgcGF0dGVybiBhcmUgZnVsbCBmbHVzaCBwb2ludHMuCisKKyAgICAgaW5mbGF0ZVN5bmMgcmV0dXJucyBaX09LIGlmIGEgcG9zc2libGUgZnVsbCBmbHVzaCBwb2ludCBoYXMgYmVlbiBmb3VuZCwKKyAgIFpfQlVGX0VSUk9SIGlmIG5vIG1vcmUgaW5wdXQgd2FzIHByb3ZpZGVkLCBaX0RBVEFfRVJST1IgaWYgbm8gZmx1c2ggcG9pbnQKKyAgIGhhcyBiZWVuIGZvdW5kLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc3RyZWFtIHN0cnVjdHVyZSB3YXMgaW5jb25zaXN0ZW50LgorICAgSW4gdGhlIHN1Y2Nlc3MgY2FzZSwgdGhlIGFwcGxpY2F0aW9uIG1heSBzYXZlIHRoZSBjdXJyZW50IGN1cnJlbnQgdmFsdWUgb2YKKyAgIHRvdGFsX2luIHdoaWNoIGluZGljYXRlcyB3aGVyZSB2YWxpZCBjb21wcmVzc2VkIGRhdGEgd2FzIGZvdW5kLiAgSW4gdGhlCisgICBlcnJvciBjYXNlLCB0aGUgYXBwbGljYXRpb24gbWF5IHJlcGVhdGVkbHkgY2FsbCBpbmZsYXRlU3luYywgcHJvdmlkaW5nIG1vcmUKKyAgIGlucHV0IGVhY2ggdGltZSwgdW50aWwgc3VjY2VzcyBvciBlbmQgb2YgdGhlIGlucHV0IGRhdGEuCisqLworCitaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVDb3B5IE9GKCh6X3N0cmVhbXAgZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpfc3RyZWFtcCBzb3VyY2UpKTsKKy8qCisgICAgIFNldHMgdGhlIGRlc3RpbmF0aW9uIHN0cmVhbSBhcyBhIGNvbXBsZXRlIGNvcHkgb2YgdGhlIHNvdXJjZSBzdHJlYW0uCisKKyAgICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZnVsIHdoZW4gcmFuZG9tbHkgYWNjZXNzaW5nIGEgbGFyZ2Ugc3RyZWFtLiAgVGhlCisgICBmaXJzdCBwYXNzIHRocm91Z2ggdGhlIHN0cmVhbSBjYW4gcGVyaW9kaWNhbGx5IHJlY29yZCB0aGUgaW5mbGF0ZSBzdGF0ZSwKKyAgIGFsbG93aW5nIHJlc3RhcnRpbmcgaW5mbGF0ZSBhdCB0aG9zZSBwb2ludHMgd2hlbiByYW5kb21seSBhY2Nlc3NpbmcgdGhlCisgICBzdHJlYW0uCisKKyAgICAgaW5mbGF0ZUNvcHkgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QKKyAgIGVub3VnaCBtZW1vcnksIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzb3VyY2Ugc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQKKyAgIChzdWNoIGFzIHphbGxvYyBiZWluZyBaX05VTEwpLiAgbXNnIGlzIGxlZnQgdW5jaGFuZ2VkIGluIGJvdGggc291cmNlIGFuZAorICAgZGVzdGluYXRpb24uCisqLworCisjZW5kaWYgIC8qICFaX0ZSRUVUWVBFICovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZVJlc2V0IE9GKCh6X3N0cmVhbXAgc3RybSkpOwogLyoKICAgICAgVGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGluZmxhdGVFbmQgZm9sbG93ZWQgYnkgaW5mbGF0ZUluaXQsCi0gICBidXQgZG9lcyBub3QgZnJlZSBhbmQgcmVhbGxvY2F0ZSBhbGwgdGhlIGludGVybmFsIGRlY29tcHJlc3Npb24gc3RhdGUuCi0gICBUaGUgc3RyZWFtIHdpbGwga2VlcCBhdHRyaWJ1dGVzIHRoYXQgbWF5IGhhdmUgYmVlbiBzZXQgYnkgaW5mbGF0ZUluaXQyLgorICAgYnV0IGRvZXMgbm90IGZyZWUgYW5kIHJlYWxsb2NhdGUgdGhlIGludGVybmFsIGRlY29tcHJlc3Npb24gc3RhdGUuICBUaGUKKyAgIHN0cmVhbSB3aWxsIGtlZXAgYXR0cmlidXRlcyB0aGF0IG1heSBoYXZlIGJlZW4gc2V0IGJ5IGluZmxhdGVJbml0Mi4KIAotICAgICAgaW5mbGF0ZVJlc2V0IHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc291cmNlCi0gICBzdHJlYW0gc3RhdGUgd2FzIGluY29uc2lzdGVudCAoc3VjaCBhcyB6YWxsb2Mgb3Igc3RhdGUgYmVpbmcgTlVMTCkuCisgICAgIGluZmxhdGVSZXNldCByZXR1cm5zIFpfT0sgaWYgc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHNvdXJjZQorICAgc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQgKHN1Y2ggYXMgemFsbG9jIG9yIHN0YXRlIGJlaW5nIFpfTlVMTCkuCiAqLwogCitaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVSZXNldDIgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2luZG93Qml0cykpOworLyoKKyAgICAgVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBpbmZsYXRlUmVzZXQsIGJ1dCBpdCBhbHNvIHBlcm1pdHMgY2hhbmdpbmcKKyAgIHRoZSB3cmFwIGFuZCB3aW5kb3cgc2l6ZSByZXF1ZXN0cy4gIFRoZSB3aW5kb3dCaXRzIHBhcmFtZXRlciBpcyBpbnRlcnByZXRlZAorICAgdGhlIHNhbWUgYXMgaXQgaXMgZm9yIGluZmxhdGVJbml0Mi4gIElmIHRoZSB3aW5kb3cgc2l6ZSBpcyBjaGFuZ2VkLCB0aGVuIHRoZQorICAgbWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhlIHdpbmRvdyBpcyBmcmVlZCwgYW5kIHRoZSB3aW5kb3cgd2lsbCBiZSByZWFsbG9jYXRlZAorICAgYnkgaW5mbGF0ZSgpIGlmIG5lZWRlZC4KKworICAgICBpbmZsYXRlUmVzZXQyIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc291cmNlCisgICBzdHJlYW0gc3RhdGUgd2FzIGluY29uc2lzdGVudCAoc3VjaCBhcyB6YWxsb2Mgb3Igc3RhdGUgYmVpbmcgWl9OVUxMKSwgb3IgaWYKKyAgIHRoZSB3aW5kb3dCaXRzIHBhcmFtZXRlciBpcyBpbnZhbGlkLgorKi8KKworI2lmbmRlZiBaX0ZSRUVUWVBFCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZVByaW1lIE9GKCh6X3N0cmVhbXAgc3RybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUpKTsKKy8qCisgICAgIFRoaXMgZnVuY3Rpb24gaW5zZXJ0cyBiaXRzIGluIHRoZSBpbmZsYXRlIGlucHV0IHN0cmVhbS4gIFRoZSBpbnRlbnQgaXMKKyAgIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHN0YXJ0IGluZmxhdGluZyBhdCBhIGJpdCBwb3NpdGlvbiBpbiB0aGUKKyAgIG1pZGRsZSBvZiBhIGJ5dGUuICBUaGUgcHJvdmlkZWQgYml0cyB3aWxsIGJlIHVzZWQgYmVmb3JlIGFueSBieXRlcyBhcmUgdXNlZAorICAgZnJvbSBuZXh0X2luLiAgVGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggcmF3IGluZmxhdGUsIGFuZAorICAgc2hvdWxkIGJlIHVzZWQgYmVmb3JlIHRoZSBmaXJzdCBpbmZsYXRlKCkgY2FsbCBhZnRlciBpbmZsYXRlSW5pdDIoKSBvcgorICAgaW5mbGF0ZVJlc2V0KCkuICBiaXRzIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDE2LCBhbmQgdGhhdCBtYW55IG9mIHRoZQorICAgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB2YWx1ZSB3aWxsIGJlIGluc2VydGVkIGluIHRoZSBpbnB1dC4KKworICAgICBJZiBiaXRzIGlzIG5lZ2F0aXZlLCB0aGVuIHRoZSBpbnB1dCBzdHJlYW0gYml0IGJ1ZmZlciBpcyBlbXB0aWVkLiAgVGhlbgorICAgaW5mbGF0ZVByaW1lKCkgY2FuIGJlIGNhbGxlZCBhZ2FpbiB0byBwdXQgYml0cyBpbiB0aGUgYnVmZmVyLiAgVGhpcyBpcyB1c2VkCisgICB0byBjbGVhciBvdXQgYml0cyBsZWZ0b3ZlciBhZnRlciBmZWVkaW5nIGluZmxhdGUgYSBibG9jayBkZXNjcmlwdGlvbiBwcmlvcgorICAgdG8gZmVlZGluZyBpbmZsYXRlIGNvZGVzLgorCisgICAgIGluZmxhdGVQcmltZSByZXR1cm5zIFpfT0sgaWYgc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHNvdXJjZQorICAgc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQuCisqLworCitaRVhURVJOIGxvbmcgWkVYUE9SVCBpbmZsYXRlTWFyayBPRigoel9zdHJlYW1wIHN0cm0pKTsKKy8qCisgICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0d28gdmFsdWVzLCBvbmUgaW4gdGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhlIHJldHVybgorICAgdmFsdWUsIGFuZCB0aGUgb3RoZXIgaW4gdGhlIHJlbWFpbmluZyB1cHBlciBiaXRzLCBvYnRhaW5lZCBieSBzaGlmdGluZyB0aGUKKyAgIHJldHVybiB2YWx1ZSBkb3duIDE2IGJpdHMuICBJZiB0aGUgdXBwZXIgdmFsdWUgaXMgLTEgYW5kIHRoZSBsb3dlciB2YWx1ZSBpcworICAgemVybywgdGhlbiBpbmZsYXRlKCkgaXMgY3VycmVudGx5IGRlY29kaW5nIGluZm9ybWF0aW9uIG91dHNpZGUgb2YgYSBibG9jay4KKyAgIElmIHRoZSB1cHBlciB2YWx1ZSBpcyAtMSBhbmQgdGhlIGxvd2VyIHZhbHVlIGlzIG5vbi16ZXJvLCB0aGVuIGluZmxhdGUgaXMgaW4KKyAgIHRoZSBtaWRkbGUgb2YgYSBzdG9yZWQgYmxvY2ssIHdpdGggdGhlIGxvd2VyIHZhbHVlIGVxdWFsaW5nIHRoZSBudW1iZXIgb2YKKyAgIGJ5dGVzIGZyb20gdGhlIGlucHV0IHJlbWFpbmluZyB0byBjb3B5LiAgSWYgdGhlIHVwcGVyIHZhbHVlIGlzIG5vdCAtMSwgdGhlbgorICAgaXQgaXMgdGhlIG51bWJlciBvZiBiaXRzIGJhY2sgZnJvbSB0aGUgY3VycmVudCBiaXQgcG9zaXRpb24gaW4gdGhlIGlucHV0IG9mCisgICB0aGUgY29kZSAobGl0ZXJhbCBvciBsZW5ndGgvZGlzdGFuY2UgcGFpcikgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZC4gIEluCisgICB0aGF0IGNhc2UgdGhlIGxvd2VyIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgYWxyZWFkeSBlbWl0dGVkIGZvciB0aGF0CisgICBjb2RlLgorCisgICAgIEEgY29kZSBpcyBiZWluZyBwcm9jZXNzZWQgaWYgaW5mbGF0ZSBpcyB3YWl0aW5nIGZvciBtb3JlIGlucHV0IHRvIGNvbXBsZXRlCisgICBkZWNvZGluZyBvZiB0aGUgY29kZSwgb3IgaWYgaXQgaGFzIGNvbXBsZXRlZCBkZWNvZGluZyBidXQgaXMgd2FpdGluZyBmb3IKKyAgIG1vcmUgb3V0cHV0IHNwYWNlIHRvIHdyaXRlIHRoZSBsaXRlcmFsIG9yIG1hdGNoIGRhdGEuCisKKyAgICAgaW5mbGF0ZU1hcmsoKSBpcyB1c2VkIHRvIG1hcmsgbG9jYXRpb25zIGluIHRoZSBpbnB1dCBkYXRhIGZvciByYW5kb20KKyAgIGFjY2Vzcywgd2hpY2ggbWF5IGJlIGF0IGJpdCBwb3NpdGlvbnMsIGFuZCB0byBub3RlIHRob3NlIGNhc2VzIHdoZXJlIHRoZQorICAgb3V0cHV0IG9mIGEgY29kZSBtYXkgc3BhbiBib3VuZGFyaWVzIG9mIHJhbmRvbSBhY2Nlc3MgYmxvY2tzLiAgVGhlIGN1cnJlbnQKKyAgIGxvY2F0aW9uIGluIHRoZSBpbnB1dCBzdHJlYW0gY2FuIGJlIGRldGVybWluZWQgZnJvbSBhdmFpbF9pbiBhbmQgZGF0YV90eXBlCisgICBhcyBub3RlZCBpbiB0aGUgZGVzY3JpcHRpb24gZm9yIHRoZSBaX0JMT0NLIGZsdXNoIHBhcmFtZXRlciBmb3IgaW5mbGF0ZS4KKworICAgICBpbmZsYXRlTWFyayByZXR1cm5zIHRoZSB2YWx1ZSBub3RlZCBhYm92ZSwgb3IgLTY1NTM2IGlmIHRoZSBwcm92aWRlZAorICAgc291cmNlIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50LgorKi8KKworWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlR2V0SGVhZGVyIE9GKCh6X3N0cmVhbXAgc3RybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3pfaGVhZGVycCBoZWFkKSk7CisvKgorICAgICBpbmZsYXRlR2V0SGVhZGVyKCkgcmVxdWVzdHMgdGhhdCBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiBiZSBzdG9yZWQgaW4gdGhlCisgICBwcm92aWRlZCBnel9oZWFkZXIgc3RydWN0dXJlLiAgaW5mbGF0ZUdldEhlYWRlcigpIG1heSBiZSBjYWxsZWQgYWZ0ZXIKKyAgIGluZmxhdGVJbml0MigpIG9yIGluZmxhdGVSZXNldCgpLCBhbmQgYmVmb3JlIHRoZSBmaXJzdCBjYWxsIG9mIGluZmxhdGUoKS4KKyAgIEFzIGluZmxhdGUoKSBwcm9jZXNzZXMgdGhlIGd6aXAgc3RyZWFtLCBoZWFkLT5kb25lIGlzIHplcm8gdW50aWwgdGhlIGhlYWRlcgorICAgaXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIGhlYWQtPmRvbmUgaXMgc2V0IHRvIG9uZS4gIElmIGEgemxpYiBzdHJlYW0gaXMKKyAgIGJlaW5nIGRlY29kZWQsIHRoZW4gaGVhZC0+ZG9uZSBpcyBzZXQgdG8gLTEgdG8gaW5kaWNhdGUgdGhhdCB0aGVyZSB3aWxsIGJlCisgICBubyBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiBmb3J0aGNvbWluZy4gIE5vdGUgdGhhdCBaX0JMT0NLIG9yIFpfVFJFRVMgY2FuIGJlCisgICB1c2VkIHRvIGZvcmNlIGluZmxhdGUoKSB0byByZXR1cm4gaW1tZWRpYXRlbHkgYWZ0ZXIgaGVhZGVyIHByb2Nlc3NpbmcgaXMKKyAgIGNvbXBsZXRlIGFuZCBiZWZvcmUgYW55IGFjdHVhbCBkYXRhIGlzIGRlY29tcHJlc3NlZC4KKworICAgICBUaGUgdGV4dCwgdGltZSwgeGZsYWdzLCBhbmQgb3MgZmllbGRzIGFyZSBmaWxsZWQgaW4gd2l0aCB0aGUgZ3ppcCBoZWFkZXIKKyAgIGNvbnRlbnRzLiAgaGNyYyBpcyBzZXQgdG8gdHJ1ZSBpZiB0aGVyZSBpcyBhIGhlYWRlciBDUkMuICAoVGhlIGhlYWRlciBDUkMKKyAgIHdhcyB2YWxpZCBpZiBkb25lIGlzIHNldCB0byBvbmUuKSBJZiBleHRyYSBpcyBub3QgWl9OVUxMLCB0aGVuIGV4dHJhX21heAorICAgY29udGFpbnMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHdyaXRlIHRvIGV4dHJhLiAgT25jZSBkb25lIGlzIHRydWUsCisgICBleHRyYV9sZW4gY29udGFpbnMgdGhlIGFjdHVhbCBleHRyYSBmaWVsZCBsZW5ndGgsIGFuZCBleHRyYSBjb250YWlucyB0aGUKKyAgIGV4dHJhIGZpZWxkLCBvciB0aGF0IGZpZWxkIHRydW5jYXRlZCBpZiBleHRyYV9tYXggaXMgbGVzcyB0aGFuIGV4dHJhX2xlbi4KKyAgIElmIG5hbWUgaXMgbm90IFpfTlVMTCwgdGhlbiB1cCB0byBuYW1lX21heCBjaGFyYWN0ZXJzIGFyZSB3cml0dGVuIHRoZXJlLAorICAgdGVybWluYXRlZCB3aXRoIGEgemVybyB1bmxlc3MgdGhlIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gbmFtZV9tYXguICBJZgorICAgY29tbWVudCBpcyBub3QgWl9OVUxMLCB0aGVuIHVwIHRvIGNvbW1fbWF4IGNoYXJhY3RlcnMgYXJlIHdyaXR0ZW4gdGhlcmUsCisgICB0ZXJtaW5hdGVkIHdpdGggYSB6ZXJvIHVubGVzcyB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBjb21tX21heC4gIFdoZW4gYW55CisgICBvZiBleHRyYSwgbmFtZSwgb3IgY29tbWVudCBhcmUgbm90IFpfTlVMTCBhbmQgdGhlIHJlc3BlY3RpdmUgZmllbGQgaXMgbm90CisgICBwcmVzZW50IGluIHRoZSBoZWFkZXIsIHRoZW4gdGhhdCBmaWVsZCBpcyBzZXQgdG8gWl9OVUxMIHRvIHNpZ25hbCBpdHMKKyAgIGFic2VuY2UuICBUaGlzIGFsbG93cyB0aGUgdXNlIG9mIGRlZmxhdGVTZXRIZWFkZXIoKSB3aXRoIHRoZSByZXR1cm5lZAorICAgc3RydWN0dXJlIHRvIGR1cGxpY2F0ZSB0aGUgaGVhZGVyLiAgSG93ZXZlciBpZiB0aG9zZSBmaWVsZHMgYXJlIHNldCB0bworICAgYWxsb2NhdGVkIG1lbW9yeSwgdGhlbiB0aGUgYXBwbGljYXRpb24gd2lsbCBuZWVkIHRvIHNhdmUgdGhvc2UgcG9pbnRlcnMKKyAgIGVsc2V3aGVyZSBzbyB0aGF0IHRoZXkgY2FuIGJlIGV2ZW50dWFsbHkgZnJlZWQuCisKKyAgICAgSWYgaW5mbGF0ZUdldEhlYWRlciBpcyBub3QgdXNlZCwgdGhlbiB0aGUgaGVhZGVyIGluZm9ybWF0aW9uIGlzIHNpbXBseQorICAgZGlzY2FyZGVkLiAgVGhlIGhlYWRlciBpcyBhbHdheXMgY2hlY2tlZCBmb3IgdmFsaWRpdHksIGluY2x1ZGluZyB0aGUgaGVhZGVyCisgICBDUkMgaWYgcHJlc2VudC4gIGluZmxhdGVSZXNldCgpIHdpbGwgcmVzZXQgdGhlIHByb2Nlc3MgdG8gZGlzY2FyZCB0aGUgaGVhZGVyCisgICBpbmZvcm1hdGlvbi4gIFRoZSBhcHBsaWNhdGlvbiB3b3VsZCBuZWVkIHRvIGNhbGwgaW5mbGF0ZUdldEhlYWRlcigpIGFnYWluIHRvCisgICByZXRyaWV2ZSB0aGUgaGVhZGVyIGZyb20gdGhlIG5leHQgZ3ppcCBzdHJlYW0uCisKKyAgICAgaW5mbGF0ZUdldEhlYWRlciByZXR1cm5zIFpfT0sgaWYgc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHNvdXJjZQorICAgc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQuCisqLworCisjZW5kaWYgIC8qICFaX0ZSRUVUWVBFICovCisKKy8qCitaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVCYWNrSW5pdCBPRigoel9zdHJlYW1wIHN0cm0sIGludCB3aW5kb3dCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgRkFSICp3aW5kb3cpKTsKKworICAgICBJbml0aWFsaXplIHRoZSBpbnRlcm5hbCBzdHJlYW0gc3RhdGUgZm9yIGRlY29tcHJlc3Npb24gdXNpbmcgaW5mbGF0ZUJhY2soKQorICAgY2FsbHMuICBUaGUgZmllbGRzIHphbGxvYywgemZyZWUgYW5kIG9wYXF1ZSBpbiBzdHJtIG11c3QgYmUgaW5pdGlhbGl6ZWQKKyAgIGJlZm9yZSB0aGUgY2FsbC4gIElmIHphbGxvYyBhbmQgemZyZWUgYXJlIFpfTlVMTCwgdGhlbiB0aGUgZGVmYXVsdCBsaWJyYXJ5LQorICAgZGVyaXZlZCBtZW1vcnkgYWxsb2NhdGlvbiByb3V0aW5lcyBhcmUgdXNlZC4gIHdpbmRvd0JpdHMgaXMgdGhlIGJhc2UgdHdvCisgICBsb2dhcml0aG0gb2YgdGhlIHdpbmRvdyBzaXplLCBpbiB0aGUgcmFuZ2UgOC4uMTUuICB3aW5kb3cgaXMgYSBjYWxsZXIKKyAgIHN1cHBsaWVkIGJ1ZmZlciBvZiB0aGF0IHNpemUuICBFeGNlcHQgZm9yIHNwZWNpYWwgYXBwbGljYXRpb25zIHdoZXJlIGl0IGlzCisgICBhc3N1cmVkIHRoYXQgZGVmbGF0ZSB3YXMgdXNlZCB3aXRoIHNtYWxsIHdpbmRvdyBzaXplcywgd2luZG93Qml0cyBtdXN0IGJlIDE1CisgICBhbmQgYSAzMksgYnl0ZSB3aW5kb3cgbXVzdCBiZSBzdXBwbGllZCB0byBiZSBhYmxlIHRvIGRlY29tcHJlc3MgZ2VuZXJhbAorICAgZGVmbGF0ZSBzdHJlYW1zLgorCisgICAgIFNlZSBpbmZsYXRlQmFjaygpIGZvciB0aGUgdXNhZ2Ugb2YgdGhlc2Ugcm91dGluZXMuCisKKyAgICAgaW5mbGF0ZUJhY2tJbml0IHdpbGwgcmV0dXJuIFpfT0sgb24gc3VjY2VzcywgWl9TVFJFQU1fRVJST1IgaWYgYW55IG9mCisgICB0aGUgcGFyYW1ldGVycyBhcmUgaW52YWxpZCwgWl9NRU1fRVJST1IgaWYgdGhlIGludGVybmFsIHN0YXRlIGNvdWxkIG5vdCBiZQorICAgYWxsb2NhdGVkLCBvciBaX1ZFUlNJT05fRVJST1IgaWYgdGhlIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkgZG9lcyBub3QgbWF0Y2gKKyAgIHRoZSB2ZXJzaW9uIG9mIHRoZSBoZWFkZXIgZmlsZS4KKyovCisKK3R5cGVkZWYgdW5zaWduZWQgKCppbl9mdW5jKSBPRigodm9pZCBGQVIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgel9jb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqIEZBUiAqKSk7Cit0eXBlZGVmIGludCAoKm91dF9mdW5jKSBPRigodm9pZCBGQVIgKiwgdW5zaWduZWQgY2hhciBGQVIgKiwgdW5zaWduZWQpKTsKKworI2lmbmRlZiBaX0ZSRUVUWVBFCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUJhY2sgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fZnVuYyBpbiwgdm9pZCBGQVIgKmluX2Rlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfZnVuYyBvdXQsIHZvaWQgRkFSICpvdXRfZGVzYykpOworLyoKKyAgICAgaW5mbGF0ZUJhY2soKSBkb2VzIGEgcmF3IGluZmxhdGUgd2l0aCBhIHNpbmdsZSBjYWxsIHVzaW5nIGEgY2FsbC1iYWNrCisgICBpbnRlcmZhY2UgZm9yIGlucHV0IGFuZCBvdXRwdXQuICBUaGlzIGlzIHBvdGVudGlhbGx5IG1vcmUgZWZmaWNpZW50IHRoYW4KKyAgIGluZmxhdGUoKSBmb3IgZmlsZSBpL28gYXBwbGljYXRpb25zLCBpbiB0aGF0IGl0IGF2b2lkcyBjb3B5aW5nIGJldHdlZW4gdGhlCisgICBvdXRwdXQgYW5kIHRoZSBzbGlkaW5nIHdpbmRvdyBieSBzaW1wbHkgbWFraW5nIHRoZSB3aW5kb3cgaXRzZWxmIHRoZSBvdXRwdXQKKyAgIGJ1ZmZlci4gIGluZmxhdGUoKSBjYW4gYmUgZmFzdGVyIG9uIG1vZGVybiBDUFVzIHdoZW4gdXNlZCB3aXRoIGxhcmdlCisgICBidWZmZXJzLiAgaW5mbGF0ZUJhY2soKSB0cnVzdHMgdGhlIGFwcGxpY2F0aW9uIHRvIG5vdCBjaGFuZ2UgdGhlIG91dHB1dAorICAgYnVmZmVyIHBhc3NlZCBieSB0aGUgb3V0cHV0IGZ1bmN0aW9uLCBhdCBsZWFzdCB1bnRpbCBpbmZsYXRlQmFjaygpIHJldHVybnMuCisKKyAgICAgaW5mbGF0ZUJhY2tJbml0KCkgbXVzdCBiZSBjYWxsZWQgZmlyc3QgdG8gYWxsb2NhdGUgdGhlIGludGVybmFsIHN0YXRlCisgICBhbmQgdG8gaW5pdGlhbGl6ZSB0aGUgc3RhdGUgd2l0aCB0aGUgdXNlci1wcm92aWRlZCB3aW5kb3cgYnVmZmVyLgorICAgaW5mbGF0ZUJhY2soKSBtYXkgdGhlbiBiZSB1c2VkIG11bHRpcGxlIHRpbWVzIHRvIGluZmxhdGUgYSBjb21wbGV0ZSwgcmF3CisgICBkZWZsYXRlIHN0cmVhbSB3aXRoIGVhY2ggY2FsbC4gIGluZmxhdGVCYWNrRW5kKCkgaXMgdGhlbiBjYWxsZWQgdG8gZnJlZSB0aGUKKyAgIGFsbG9jYXRlZCBzdGF0ZS4KKworICAgICBBIHJhdyBkZWZsYXRlIHN0cmVhbSBpcyBvbmUgd2l0aCBubyB6bGliIG9yIGd6aXAgaGVhZGVyIG9yIHRyYWlsZXIuCisgICBUaGlzIHJvdXRpbmUgd291bGQgbm9ybWFsbHkgYmUgdXNlZCBpbiBhIHV0aWxpdHkgdGhhdCByZWFkcyB6aXAgb3IgZ3ppcAorICAgZmlsZXMgYW5kIHdyaXRlcyBvdXQgdW5jb21wcmVzc2VkIGZpbGVzLiAgVGhlIHV0aWxpdHkgd291bGQgZGVjb2RlIHRoZQorICAgaGVhZGVyIGFuZCBwcm9jZXNzIHRoZSB0cmFpbGVyIG9uIGl0cyBvd24sIGhlbmNlIHRoaXMgcm91dGluZSBleHBlY3RzIG9ubHkKKyAgIHRoZSByYXcgZGVmbGF0ZSBzdHJlYW0gdG8gZGVjb21wcmVzcy4gIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQKKyAgIGJlaGF2aW9yIG9mIGluZmxhdGUoKSwgd2hpY2ggZXhwZWN0cyBhIHpsaWIgaGVhZGVyIGFuZCB0cmFpbGVyIGFyb3VuZCB0aGUKKyAgIGRlZmxhdGUgc3RyZWFtLgorCisgICAgIGluZmxhdGVCYWNrKCkgdXNlcyB0d28gc3Vicm91dGluZXMgc3VwcGxpZWQgYnkgdGhlIGNhbGxlciB0aGF0IGFyZSB0aGVuCisgICBjYWxsZWQgYnkgaW5mbGF0ZUJhY2soKSBmb3IgaW5wdXQgYW5kIG91dHB1dC4gIGluZmxhdGVCYWNrKCkgY2FsbHMgdGhvc2UKKyAgIHJvdXRpbmVzIHVudGlsIGl0IHJlYWRzIGEgY29tcGxldGUgZGVmbGF0ZSBzdHJlYW0gYW5kIHdyaXRlcyBvdXQgYWxsIG9mIHRoZQorICAgdW5jb21wcmVzc2VkIGRhdGEsIG9yIHVudGlsIGl0IGVuY291bnRlcnMgYW4gZXJyb3IuICBUaGUgZnVuY3Rpb24ncworICAgcGFyYW1ldGVycyBhbmQgcmV0dXJuIHR5cGVzIGFyZSBkZWZpbmVkIGFib3ZlIGluIHRoZSBpbl9mdW5jIGFuZCBvdXRfZnVuYworICAgdHlwZWRlZnMuICBpbmZsYXRlQmFjaygpIHdpbGwgY2FsbCBpbihpbl9kZXNjLCAmYnVmKSB3aGljaCBzaG91bGQgcmV0dXJuIHRoZQorICAgbnVtYmVyIG9mIGJ5dGVzIG9mIHByb3ZpZGVkIGlucHV0LCBhbmQgYSBwb2ludGVyIHRvIHRoYXQgaW5wdXQgaW4gYnVmLiAgSWYKKyAgIHRoZXJlIGlzIG5vIGlucHV0IGF2YWlsYWJsZSwgaW4oKSBtdXN0IHJldHVybiB6ZXJvIC0tIGJ1ZiBpcyBpZ25vcmVkIGluIHRoYXQKKyAgIGNhc2UgLS0gYW5kIGluZmxhdGVCYWNrKCkgd2lsbCByZXR1cm4gYSBidWZmZXIgZXJyb3IuICBpbmZsYXRlQmFjaygpIHdpbGwKKyAgIGNhbGwgb3V0KG91dF9kZXNjLCBidWYsIGxlbikgdG8gd3JpdGUgdGhlIHVuY29tcHJlc3NlZCBkYXRhIGJ1ZlswLi5sZW4tMV0uCisgICBvdXQoKSBzaG91bGQgcmV0dXJuIHplcm8gb24gc3VjY2Vzcywgb3Igbm9uLXplcm8gb24gZmFpbHVyZS4gIElmIG91dCgpCisgICByZXR1cm5zIG5vbi16ZXJvLCBpbmZsYXRlQmFjaygpIHdpbGwgcmV0dXJuIHdpdGggYW4gZXJyb3IuICBOZWl0aGVyIGluKCkgbm9yCisgICBvdXQoKSBhcmUgcGVybWl0dGVkIHRvIGNoYW5nZSB0aGUgY29udGVudHMgb2YgdGhlIHdpbmRvdyBwcm92aWRlZCB0bworICAgaW5mbGF0ZUJhY2tJbml0KCksIHdoaWNoIGlzIGFsc28gdGhlIGJ1ZmZlciB0aGF0IG91dCgpIHVzZXMgdG8gd3JpdGUgZnJvbS4KKyAgIFRoZSBsZW5ndGggd3JpdHRlbiBieSBvdXQoKSB3aWxsIGJlIGF0IG1vc3QgdGhlIHdpbmRvdyBzaXplLiAgQW55IG5vbi16ZXJvCisgICBhbW91bnQgb2YgaW5wdXQgbWF5IGJlIHByb3ZpZGVkIGJ5IGluKCkuCisKKyAgICAgRm9yIGNvbnZlbmllbmNlLCBpbmZsYXRlQmFjaygpIGNhbiBiZSBwcm92aWRlZCBpbnB1dCBvbiB0aGUgZmlyc3QgY2FsbCBieQorICAgc2V0dGluZyBzdHJtLT5uZXh0X2luIGFuZCBzdHJtLT5hdmFpbF9pbi4gIElmIHRoYXQgaW5wdXQgaXMgZXhoYXVzdGVkLCB0aGVuCisgICBpbigpIHdpbGwgYmUgY2FsbGVkLiAgVGhlcmVmb3JlIHN0cm0tPm5leHRfaW4gbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUKKyAgIGNhbGxpbmcgaW5mbGF0ZUJhY2soKS4gIElmIHN0cm0tPm5leHRfaW4gaXMgWl9OVUxMLCB0aGVuIGluKCkgd2lsbCBiZSBjYWxsZWQKKyAgIGltbWVkaWF0ZWx5IGZvciBpbnB1dC4gIElmIHN0cm0tPm5leHRfaW4gaXMgbm90IFpfTlVMTCwgdGhlbiBzdHJtLT5hdmFpbF9pbgorICAgbXVzdCBhbHNvIGJlIGluaXRpYWxpemVkLCBhbmQgdGhlbiBpZiBzdHJtLT5hdmFpbF9pbiBpcyBub3QgemVybywgaW5wdXQgd2lsbAorICAgaW5pdGlhbGx5IGJlIHRha2VuIGZyb20gc3RybS0+bmV4dF9pblswIC4uICBzdHJtLT5hdmFpbF9pbiAtIDFdLgorCisgICAgIFRoZSBpbl9kZXNjIGFuZCBvdXRfZGVzYyBwYXJhbWV0ZXJzIG9mIGluZmxhdGVCYWNrKCkgaXMgcGFzc2VkIGFzIHRoZQorICAgZmlyc3QgcGFyYW1ldGVyIG9mIGluKCkgYW5kIG91dCgpIHJlc3BlY3RpdmVseSB3aGVuIHRoZXkgYXJlIGNhbGxlZC4gIFRoZXNlCisgICBkZXNjcmlwdG9ycyBjYW4gYmUgb3B0aW9uYWxseSB1c2VkIHRvIHBhc3MgYW55IGluZm9ybWF0aW9uIHRoYXQgdGhlIGNhbGxlci0KKyAgIHN1cHBsaWVkIGluKCkgYW5kIG91dCgpIGZ1bmN0aW9ucyBuZWVkIHRvIGRvIHRoZWlyIGpvYi4KKworICAgICBPbiByZXR1cm4sIGluZmxhdGVCYWNrKCkgd2lsbCBzZXQgc3RybS0+bmV4dF9pbiBhbmQgc3RybS0+YXZhaWxfaW4gdG8KKyAgIHBhc3MgYmFjayBhbnkgdW51c2VkIGlucHV0IHRoYXQgd2FzIHByb3ZpZGVkIGJ5IHRoZSBsYXN0IGluKCkgY2FsbC4gIFRoZQorICAgcmV0dXJuIHZhbHVlcyBvZiBpbmZsYXRlQmFjaygpIGNhbiBiZSBaX1NUUkVBTV9FTkQgb24gc3VjY2VzcywgWl9CVUZfRVJST1IKKyAgIGlmIGluKCkgb3Igb3V0KCkgcmV0dXJuZWQgYW4gZXJyb3IsIFpfREFUQV9FUlJPUiBpZiB0aGVyZSB3YXMgYSBmb3JtYXQgZXJyb3IKKyAgIGluIHRoZSBkZWZsYXRlIHN0cmVhbSAoaW4gd2hpY2ggY2FzZSBzdHJtLT5tc2cgaXMgc2V0IHRvIGluZGljYXRlIHRoZSBuYXR1cmUKKyAgIG9mIHRoZSBlcnJvciksIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzdHJlYW0gd2FzIG5vdCBwcm9wZXJseSBpbml0aWFsaXplZC4KKyAgIEluIHRoZSBjYXNlIG9mIFpfQlVGX0VSUk9SLCBhbiBpbnB1dCBvciBvdXRwdXQgZXJyb3IgY2FuIGJlIGRpc3Rpbmd1aXNoZWQKKyAgIHVzaW5nIHN0cm0tPm5leHRfaW4gd2hpY2ggd2lsbCBiZSBaX05VTEwgb25seSBpZiBpbigpIHJldHVybmVkIGFuIGVycm9yLiAgSWYKKyAgIHN0cm0tPm5leHRfaW4gaXMgbm90IFpfTlVMTCwgdGhlbiB0aGUgWl9CVUZfRVJST1Igd2FzIGR1ZSB0byBvdXQoKSByZXR1cm5pbmcKKyAgIG5vbi16ZXJvLiAgKGluKCkgd2lsbCBhbHdheXMgYmUgY2FsbGVkIGJlZm9yZSBvdXQoKSwgc28gc3RybS0+bmV4dF9pbiBpcworICAgYXNzdXJlZCB0byBiZSBkZWZpbmVkIGlmIG91dCgpIHJldHVybnMgbm9uLXplcm8uKSAgTm90ZSB0aGF0IGluZmxhdGVCYWNrKCkKKyAgIGNhbm5vdCByZXR1cm4gWl9PSy4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUJhY2tFbmQgT0YoKHpfc3RyZWFtcCBzdHJtKSk7CisvKgorICAgICBBbGwgbWVtb3J5IGFsbG9jYXRlZCBieSBpbmZsYXRlQmFja0luaXQoKSBpcyBmcmVlZC4KKworICAgICBpbmZsYXRlQmFja0VuZCgpIHJldHVybnMgWl9PSyBvbiBzdWNjZXNzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc3RyZWFtCisgICBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50LgorKi8KKworWkVYVEVSTiB1TG9uZyBaRVhQT1JUIHpsaWJDb21waWxlRmxhZ3MgT0YoKHZvaWQpKTsKKy8qIFJldHVybiBmbGFncyBpbmRpY2F0aW5nIGNvbXBpbGUtdGltZSBvcHRpb25zLgorCisgICAgVHlwZSBzaXplcywgdHdvIGJpdHMgZWFjaCwgMDAgPSAxNiBiaXRzLCAwMSA9IDMyLCAxMCA9IDY0LCAxMSA9IG90aGVyOgorICAgICAxLjA6IHNpemUgb2YgdUludAorICAgICAzLjI6IHNpemUgb2YgdUxvbmcKKyAgICAgNS40OiBzaXplIG9mIHZvaWRwZiAocG9pbnRlcikKKyAgICAgNy42OiBzaXplIG9mIHpfb2ZmX3QKKworICAgIENvbXBpbGVyLCBhc3NlbWJsZXIsIGFuZCBkZWJ1ZyBvcHRpb25zOgorICAgICA4OiBaTElCX0RFQlVHCisgICAgIDk6IEFTTVYgb3IgQVNNSU5GIC0tIHVzZSBBU00gY29kZQorICAgICAxMDogWkxJQl9XSU5BUEkgLS0gZXhwb3J0ZWQgZnVuY3Rpb25zIHVzZSB0aGUgV0lOQVBJIGNhbGxpbmcgY29udmVudGlvbgorICAgICAxMTogMCAocmVzZXJ2ZWQpCisKKyAgICBPbmUtdGltZSB0YWJsZSBidWlsZGluZyAoc21hbGxlciBjb2RlLCBidXQgbm90IHRocmVhZC1zYWZlIGlmIHRydWUpOgorICAgICAxMjogQlVJTERGSVhFRCAtLSBidWlsZCBzdGF0aWMgYmxvY2sgZGVjb2RpbmcgdGFibGVzIHdoZW4gbmVlZGVkCisgICAgIDEzOiBEWU5BTUlDX0NSQ19UQUJMRSAtLSBidWlsZCBDUkMgY2FsY3VsYXRpb24gdGFibGVzIHdoZW4gbmVlZGVkCisgICAgIDE0LDE1OiAwIChyZXNlcnZlZCkKKworICAgIExpYnJhcnkgY29udGVudCAoaW5kaWNhdGVzIG1pc3NpbmcgZnVuY3Rpb25hbGl0eSk6CisgICAgIDE2OiBOT19HWkNPTVBSRVNTIC0tIGd6KiBmdW5jdGlvbnMgY2Fubm90IGNvbXByZXNzICh0byBhdm9pZCBsaW5raW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmxhdGUgY29kZSB3aGVuIG5vdCBuZWVkZWQpCisgICAgIDE3OiBOT19HWklQIC0tIGRlZmxhdGUgY2FuJ3Qgd3JpdGUgZ3ppcCBzdHJlYW1zLCBhbmQgaW5mbGF0ZSBjYW4ndCBkZXRlY3QKKyAgICAgICAgICAgICAgICAgICAgYW5kIGRlY29kZSBnemlwIHN0cmVhbXMgKHRvIGF2b2lkIGxpbmtpbmcgY3JjIGNvZGUpCisgICAgIDE4LTE5OiAwIChyZXNlcnZlZCkKKworICAgIE9wZXJhdGlvbiB2YXJpYXRpb25zIChjaGFuZ2VzIGluIGxpYnJhcnkgZnVuY3Rpb25hbGl0eSk6CisgICAgIDIwOiBQS1pJUF9CVUdfV09SS0FST1VORCAtLSBzbGlnaHRseSBtb3JlIHBlcm1pc3NpdmUgaW5mbGF0ZQorICAgICAyMTogRkFTVEVTVCAtLSBkZWZsYXRlIGFsZ29yaXRobSB3aXRoIG9ubHkgb25lLCBsb3dlc3QgY29tcHJlc3Npb24gbGV2ZWwKKyAgICAgMjIsMjM6IDAgKHJlc2VydmVkKQorCisgICAgVGhlIHNwcmludGYgdmFyaWFudCB1c2VkIGJ5IGd6cHJpbnRmICh6ZXJvIGlzIGJlc3QpOgorICAgICAyNDogMCA9IHZzKiwgMSA9IHMqIC0tIDEgbWVhbnMgbGltaXRlZCB0byAyMCBhcmd1bWVudHMgYWZ0ZXIgdGhlIGZvcm1hdAorICAgICAyNTogMCA9ICpucHJpbnRmLCAxID0gKnByaW50ZiAtLSAxIG1lYW5zIGd6cHJpbnRmKCkgbm90IHNlY3VyZSEKKyAgICAgMjY6IDAgPSByZXR1cm5zIHZhbHVlLCAxID0gdm9pZCAtLSAxIG1lYW5zIGluZmVycmVkIHN0cmluZyBsZW5ndGggcmV0dXJuZWQKKworICAgIFJlbWFpbmRlcjoKKyAgICAgMjctMzE6IDAgKHJlc2VydmVkKQorICovCisKKyNlbmRpZiAgLyogIVpfRlJFRVRZUEUgKi8KKworI2lmbmRlZiBaX1NPTE8KIAogICAgICAgICAgICAgICAgICAgICAgICAgLyogdXRpbGl0eSBmdW5jdGlvbnMgKi8KIAogLyoKLSAgICAgVGhlIGZvbGxvd2luZyB1dGlsaXR5IGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mIHRoZQotICAgYmFzaWMgc3RyZWFtLW9yaWVudGVkIGZ1bmN0aW9ucy4gVG8gc2ltcGxpZnkgdGhlIGludGVyZmFjZSwgc29tZQotICAgZGVmYXVsdCBvcHRpb25zIGFyZSBhc3N1bWVkIChjb21wcmVzc2lvbiBsZXZlbCBhbmQgbWVtb3J5IHVzYWdlLAotICAgc3RhbmRhcmQgbWVtb3J5IGFsbG9jYXRpb24gZnVuY3Rpb25zKS4gVGhlIHNvdXJjZSBjb2RlIG9mIHRoZXNlCi0gICB1dGlsaXR5IGZ1bmN0aW9ucyBjYW4gZWFzaWx5IGJlIG1vZGlmaWVkIGlmIHlvdSBuZWVkIHNwZWNpYWwgb3B0aW9ucy4KKyAgICAgVGhlIGZvbGxvd2luZyB1dGlsaXR5IGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mIHRoZSBiYXNpYworICAgc3RyZWFtLW9yaWVudGVkIGZ1bmN0aW9ucy4gIFRvIHNpbXBsaWZ5IHRoZSBpbnRlcmZhY2UsIHNvbWUgZGVmYXVsdCBvcHRpb25zCisgICBhcmUgYXNzdW1lZCAoY29tcHJlc3Npb24gbGV2ZWwgYW5kIG1lbW9yeSB1c2FnZSwgc3RhbmRhcmQgbWVtb3J5IGFsbG9jYXRpb24KKyAgIGZ1bmN0aW9ucykuICBUaGUgc291cmNlIGNvZGUgb2YgdGhlc2UgdXRpbGl0eSBmdW5jdGlvbnMgY2FuIGJlIG1vZGlmaWVkIGlmCisgICB5b3UgbmVlZCBzcGVjaWFsIG9wdGlvbnMuCiAqLwogCitaRVhURVJOIGludCBaRVhQT1JUIGNvbXByZXNzIE9GKChCeXRlZiAqZGVzdCwgICB1TG9uZ2YgKmRlc3RMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCeXRlZiAqc291cmNlLCB1TG9uZyBzb3VyY2VMZW4pKTsKIC8qCiAgICAgIENvbXByZXNzZXMgdGhlIHNvdXJjZSBidWZmZXIgaW50byB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgc291cmNlTGVuIGlzCi0gICB0aGUgYnl0ZSBsZW5ndGggb2YgdGhlIHNvdXJjZSBidWZmZXIuIFVwb24gZW50cnksIGRlc3RMZW4gaXMgdGhlIHRvdGFsCi0gICBzaXplIG9mIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIsIHdoaWNoIG11c3QgYmUgYXQgbGVhc3QgMC4xJSBsYXJnZXIgdGhhbgotICAgc291cmNlTGVuIHBsdXMgMTIgYnl0ZXMuIFVwb24gZXhpdCwgZGVzdExlbiBpcyB0aGUgYWN0dWFsIHNpemUgb2YgdGhlCi0gICBjb21wcmVzc2VkIGJ1ZmZlci4KLSAgICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBjb21wcmVzcyBhIHdob2xlIGZpbGUgYXQgb25jZSBpZiB0aGUKLSAgIGlucHV0IGZpbGUgaXMgbW1hcCdlZC4KKyAgIHRoZSBieXRlIGxlbmd0aCBvZiB0aGUgc291cmNlIGJ1ZmZlci4gIFVwb24gZW50cnksIGRlc3RMZW4gaXMgdGhlIHRvdGFsIHNpemUKKyAgIG9mIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIsIHdoaWNoIG11c3QgYmUgYXQgbGVhc3QgdGhlIHZhbHVlIHJldHVybmVkIGJ5CisgICBjb21wcmVzc0JvdW5kKHNvdXJjZUxlbikuICBVcG9uIGV4aXQsIGRlc3RMZW4gaXMgdGhlIGFjdHVhbCBzaXplIG9mIHRoZQorICAgY29tcHJlc3NlZCBkYXRhLiAgY29tcHJlc3MoKSBpcyBlcXVpdmFsZW50IHRvIGNvbXByZXNzMigpIHdpdGggYSBsZXZlbAorICAgcGFyYW1ldGVyIG9mIFpfREVGQVVMVF9DT01QUkVTU0lPTi4KKwogICAgICBjb21wcmVzcyByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdAogICAgZW5vdWdoIG1lbW9yeSwgWl9CVUZfRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2ggcm9vbSBpbiB0aGUgb3V0cHV0CiAgICBidWZmZXIuCiAqLwogCitaRVhURVJOIGludCBaRVhQT1JUIGNvbXByZXNzMiBPRigoQnl0ZWYgKmRlc3QsICAgdUxvbmdmICpkZXN0TGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJ5dGVmICpzb3VyY2UsIHVMb25nIHNvdXJjZUxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWwpKTsKIC8qCi0gICAgIENvbXByZXNzZXMgdGhlIHNvdXJjZSBidWZmZXIgaW50byB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiBUaGUgbGV2ZWwKKyAgICAgQ29tcHJlc3NlcyB0aGUgc291cmNlIGJ1ZmZlciBpbnRvIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIuICBUaGUgbGV2ZWwKICAgIHBhcmFtZXRlciBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyBpbiBkZWZsYXRlSW5pdC4gIHNvdXJjZUxlbiBpcyB0aGUgYnl0ZQotICAgbGVuZ3RoIG9mIHRoZSBzb3VyY2UgYnVmZmVyLiBVcG9uIGVudHJ5LCBkZXN0TGVuIGlzIHRoZSB0b3RhbCBzaXplIG9mIHRoZQotICAgZGVzdGluYXRpb24gYnVmZmVyLCB3aGljaCBtdXN0IGJlIGF0IGxlYXN0IDAuMSUgbGFyZ2VyIHRoYW4gc291cmNlTGVuIHBsdXMKLSAgIDEyIGJ5dGVzLiBVcG9uIGV4aXQsIGRlc3RMZW4gaXMgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBjb21wcmVzc2VkIGJ1ZmZlci4KKyAgIGxlbmd0aCBvZiB0aGUgc291cmNlIGJ1ZmZlci4gIFVwb24gZW50cnksIGRlc3RMZW4gaXMgdGhlIHRvdGFsIHNpemUgb2YgdGhlCisgICBkZXN0aW5hdGlvbiBidWZmZXIsIHdoaWNoIG11c3QgYmUgYXQgbGVhc3QgdGhlIHZhbHVlIHJldHVybmVkIGJ5CisgICBjb21wcmVzc0JvdW5kKHNvdXJjZUxlbikuICBVcG9uIGV4aXQsIGRlc3RMZW4gaXMgdGhlIGFjdHVhbCBzaXplIG9mIHRoZQorICAgY29tcHJlc3NlZCBkYXRhLgogCiAgICAgIGNvbXByZXNzMiByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2gKICAgIG1lbW9yeSwgWl9CVUZfRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2ggcm9vbSBpbiB0aGUgb3V0cHV0IGJ1ZmZlciwKICAgIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBsZXZlbCBwYXJhbWV0ZXIgaXMgaW52YWxpZC4KICovCiAKK1pFWFRFUk4gdUxvbmcgWkVYUE9SVCBjb21wcmVzc0JvdW5kIE9GKCh1TG9uZyBzb3VyY2VMZW4pKTsKKy8qCisgICAgIGNvbXByZXNzQm91bmQoKSByZXR1cm5zIGFuIHVwcGVyIGJvdW5kIG9uIHRoZSBjb21wcmVzc2VkIHNpemUgYWZ0ZXIKKyAgIGNvbXByZXNzKCkgb3IgY29tcHJlc3MyKCkgb24gc291cmNlTGVuIGJ5dGVzLiAgSXQgd291bGQgYmUgdXNlZCBiZWZvcmUgYQorICAgY29tcHJlc3MoKSBvciBjb21wcmVzczIoKSBjYWxsIHRvIGFsbG9jYXRlIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIuCisqLworCitaRVhURVJOIGludCBaRVhQT1JUIHVuY29tcHJlc3MgT0YoKEJ5dGVmICpkZXN0LCAgIHVMb25nZiAqZGVzdExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnl0ZWYgKnNvdXJjZSwgdUxvbmcgc291cmNlTGVuKSk7CiAvKgogICAgICBEZWNvbXByZXNzZXMgdGhlIHNvdXJjZSBidWZmZXIgaW50byB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgc291cmNlTGVuIGlzCi0gICB0aGUgYnl0ZSBsZW5ndGggb2YgdGhlIHNvdXJjZSBidWZmZXIuIFVwb24gZW50cnksIGRlc3RMZW4gaXMgdGhlIHRvdGFsCi0gICBzaXplIG9mIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIsIHdoaWNoIG11c3QgYmUgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdGhlCi0gICBlbnRpcmUgdW5jb21wcmVzc2VkIGRhdGEuIChUaGUgc2l6ZSBvZiB0aGUgdW5jb21wcmVzc2VkIGRhdGEgbXVzdCBoYXZlCi0gICBiZWVuIHNhdmVkIHByZXZpb3VzbHkgYnkgdGhlIGNvbXByZXNzb3IgYW5kIHRyYW5zbWl0dGVkIHRvIHRoZSBkZWNvbXByZXNzb3IKLSAgIGJ5IHNvbWUgbWVjaGFuaXNtIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoaXMgY29tcHJlc3Npb24gbGlicmFyeS4pCi0gICBVcG9uIGV4aXQsIGRlc3RMZW4gaXMgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBjb21wcmVzc2VkIGJ1ZmZlci4KLSAgICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBkZWNvbXByZXNzIGEgd2hvbGUgZmlsZSBhdCBvbmNlIGlmIHRoZQotICAgaW5wdXQgZmlsZSBpcyBtbWFwJ2VkLgorICAgdGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSBzb3VyY2UgYnVmZmVyLiAgVXBvbiBlbnRyeSwgZGVzdExlbiBpcyB0aGUgdG90YWwgc2l6ZQorICAgb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciwgd2hpY2ggbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gaG9sZCB0aGUgZW50aXJlCisgICB1bmNvbXByZXNzZWQgZGF0YS4gIChUaGUgc2l6ZSBvZiB0aGUgdW5jb21wcmVzc2VkIGRhdGEgbXVzdCBoYXZlIGJlZW4gc2F2ZWQKKyAgIHByZXZpb3VzbHkgYnkgdGhlIGNvbXByZXNzb3IgYW5kIHRyYW5zbWl0dGVkIHRvIHRoZSBkZWNvbXByZXNzb3IgYnkgc29tZQorICAgbWVjaGFuaXNtIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoaXMgY29tcHJlc3Npb24gbGlicmFyeS4pIFVwb24gZXhpdCwgZGVzdExlbgorICAgaXMgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YS4KIAogICAgICB1bmNvbXByZXNzIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX01FTV9FUlJPUiBpZiB0aGVyZSB3YXMgbm90CiAgICBlbm91Z2ggbWVtb3J5LCBaX0JVRl9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaCByb29tIGluIHRoZSBvdXRwdXQKLSAgIGJ1ZmZlciwgb3IgWl9EQVRBX0VSUk9SIGlmIHRoZSBpbnB1dCBkYXRhIHdhcyBjb3JydXB0ZWQuCisgICBidWZmZXIsIG9yIFpfREFUQV9FUlJPUiBpZiB0aGUgaW5wdXQgZGF0YSB3YXMgY29ycnVwdGVkIG9yIGluY29tcGxldGUuICBJbgorICAgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgbm90IGVub3VnaCByb29tLCB1bmNvbXByZXNzKCkgd2lsbCBmaWxsIHRoZSBvdXRwdXQKKyAgIGJ1ZmZlciB3aXRoIHRoZSB1bmNvbXByZXNzZWQgZGF0YSB1cCB0byB0aGF0IHBvaW50LgogKi8KIAorWkVYVEVSTiBpbnQgWkVYUE9SVCB1bmNvbXByZXNzMiBPRigoQnl0ZWYgKmRlc3QsICAgdUxvbmdmICpkZXN0TGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnl0ZWYgKnNvdXJjZSwgdUxvbmcgKnNvdXJjZUxlbikpOworLyoKKyAgICAgU2FtZSBhcyB1bmNvbXByZXNzLCBleGNlcHQgdGhhdCBzb3VyY2VMZW4gaXMgYSBwb2ludGVyLCB3aGVyZSB0aGUKKyAgIGxlbmd0aCBvZiB0aGUgc291cmNlIGlzICpzb3VyY2VMZW4uICBPbiByZXR1cm4sICpzb3VyY2VMZW4gaXMgdGhlIG51bWJlciBvZgorICAgc291cmNlIGJ5dGVzIGNvbnN1bWVkLgorKi8KKworICAgICAgICAgICAgICAgICAgICAgICAgLyogZ3ppcCBmaWxlIGFjY2VzcyBmdW5jdGlvbnMgKi8KIAogLyoKLSAgICAgT3BlbnMgYSBnemlwICguZ3opIGZpbGUgZm9yIHJlYWRpbmcgb3Igd3JpdGluZy4gVGhlIG1vZGUgcGFyYW1ldGVyCi0gICBpcyBhcyBpbiBmb3BlbiAoInJiIiBvciAid2IiKSBidXQgY2FuIGFsc28gaW5jbHVkZSBhIGNvbXByZXNzaW9uIGxldmVsCi0gICAoIndiOSIpIG9yIGEgc3RyYXRlZ3k6ICdmJyBmb3IgZmlsdGVyZWQgZGF0YSBhcyBpbiAid2I2ZiIsICdoJyBmb3IKLSAgIEh1ZmZtYW4gb25seSBjb21wcmVzc2lvbiBhcyBpbiAid2IxaCIuIChTZWUgdGhlIGRlc2NyaXB0aW9uCi0gICBvZiBkZWZsYXRlSW5pdDIgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0cmF0ZWd5IHBhcmFtZXRlci4pCisgICAgIFRoaXMgbGlicmFyeSBzdXBwb3J0cyByZWFkaW5nIGFuZCB3cml0aW5nIGZpbGVzIGluIGd6aXAgKC5neikgZm9ybWF0IHdpdGgKKyAgIGFuIGludGVyZmFjZSBzaW1pbGFyIHRvIHRoYXQgb2Ygc3RkaW8sIHVzaW5nIHRoZSBmdW5jdGlvbnMgdGhhdCBzdGFydCB3aXRoCisgICAiZ3oiLiAgVGhlIGd6aXAgZm9ybWF0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSB6bGliIGZvcm1hdC4gIGd6aXAgaXMgYSBnemlwCisgICB3cmFwcGVyLCBkb2N1bWVudGVkIGluIFJGQyAxOTUyLCB3cmFwcGVkIGFyb3VuZCBhIGRlZmxhdGUgc3RyZWFtLgorKi8KKwordHlwZWRlZiBzdHJ1Y3QgZ3pGaWxlX3MgKmd6RmlsZTsgICAgLyogc2VtaS1vcGFxdWUgZ3ppcCBmaWxlIGRlc2NyaXB0b3IgKi8KKworLyoKK1pFWFRFUk4gZ3pGaWxlIFpFWFBPUlQgZ3pvcGVuIE9GKChjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlKSk7CisKKyAgICAgT3BlbiB0aGUgZ3ppcCAoLmd6KSBmaWxlIGF0IHBhdGggZm9yIHJlYWRpbmcgYW5kIGRlY29tcHJlc3NpbmcsIG9yCisgICBjb21wcmVzc2luZyBhbmQgd3JpdGluZy4gIFRoZSBtb2RlIHBhcmFtZXRlciBpcyBhcyBpbiBmb3BlbiAoInJiIiBvciAid2IiKQorICAgYnV0IGNhbiBhbHNvIGluY2x1ZGUgYSBjb21wcmVzc2lvbiBsZXZlbCAoIndiOSIpIG9yIGEgc3RyYXRlZ3k6ICdmJyBmb3IKKyAgIGZpbHRlcmVkIGRhdGEgYXMgaW4gIndiNmYiLCAnaCcgZm9yIEh1ZmZtYW4tb25seSBjb21wcmVzc2lvbiBhcyBpbiAid2IxaCIsCisgICAnUicgZm9yIHJ1bi1sZW5ndGggZW5jb2RpbmcgYXMgaW4gIndiMVIiLCBvciAnRicgZm9yIGZpeGVkIGNvZGUgY29tcHJlc3Npb24KKyAgIGFzIGluICJ3YjlGIi4gIChTZWUgdGhlIGRlc2NyaXB0aW9uIG9mIGRlZmxhdGVJbml0MiBmb3IgbW9yZSBpbmZvcm1hdGlvbgorICAgYWJvdXQgdGhlIHN0cmF0ZWd5IHBhcmFtZXRlci4pICAnVCcgd2lsbCByZXF1ZXN0IHRyYW5zcGFyZW50IHdyaXRpbmcgb3IKKyAgIGFwcGVuZGluZyB3aXRoIG5vIGNvbXByZXNzaW9uIGFuZCBub3QgdXNpbmcgdGhlIGd6aXAgZm9ybWF0LgorCisgICAgICJhIiBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mICJ3IiB0byByZXF1ZXN0IHRoYXQgdGhlIGd6aXAgc3RyZWFtIHRoYXQgd2lsbAorICAgYmUgd3JpdHRlbiBiZSBhcHBlbmRlZCB0byB0aGUgZmlsZS4gICIrIiB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvciwgc2luY2UKKyAgIHJlYWRpbmcgYW5kIHdyaXRpbmcgdG8gdGhlIHNhbWUgZ3ppcCBmaWxlIGlzIG5vdCBzdXBwb3J0ZWQuICBUaGUgYWRkaXRpb24gb2YKKyAgICJ4IiB3aGVuIHdyaXRpbmcgd2lsbCBjcmVhdGUgdGhlIGZpbGUgZXhjbHVzaXZlbHksIHdoaWNoIGZhaWxzIGlmIHRoZSBmaWxlCisgICBhbHJlYWR5IGV4aXN0cy4gIE9uIHN5c3RlbXMgdGhhdCBzdXBwb3J0IGl0LCB0aGUgYWRkaXRpb24gb2YgImUiIHdoZW4KKyAgIHJlYWRpbmcgb3Igd3JpdGluZyB3aWxsIHNldCB0aGUgZmxhZyB0byBjbG9zZSB0aGUgZmlsZSBvbiBhbiBleGVjdmUoKSBjYWxsLgorCisgICAgIFRoZXNlIGZ1bmN0aW9ucywgYXMgd2VsbCBhcyBnemlwLCB3aWxsIHJlYWQgYW5kIGRlY29kZSBhIHNlcXVlbmNlIG9mIGd6aXAKKyAgIHN0cmVhbXMgaW4gYSBmaWxlLiAgVGhlIGFwcGVuZCBmdW5jdGlvbiBvZiBnem9wZW4oKSBjYW4gYmUgdXNlZCB0byBjcmVhdGUKKyAgIHN1Y2ggYSBmaWxlLiAgKEFsc28gc2VlIGd6Zmx1c2goKSBmb3IgYW5vdGhlciB3YXkgdG8gZG8gdGhpcy4pICBXaGVuCisgICBhcHBlbmRpbmcsIGd6b3BlbiBkb2VzIG5vdCB0ZXN0IHdoZXRoZXIgdGhlIGZpbGUgYmVnaW5zIHdpdGggYSBnemlwIHN0cmVhbSwKKyAgIG5vciBkb2VzIGl0IGxvb2sgZm9yIHRoZSBlbmQgb2YgdGhlIGd6aXAgc3RyZWFtcyB0byBiZWdpbiBhcHBlbmRpbmcuICBnem9wZW4KKyAgIHdpbGwgc2ltcGx5IGFwcGVuZCBhIGd6aXAgc3RyZWFtIHRvIHRoZSBleGlzdGluZyBmaWxlLgogCiAgICAgIGd6b3BlbiBjYW4gYmUgdXNlZCB0byByZWFkIGEgZmlsZSB3aGljaCBpcyBub3QgaW4gZ3ppcCBmb3JtYXQ7IGluIHRoaXMKLSAgIGNhc2UgZ3pyZWFkIHdpbGwgZGlyZWN0bHkgcmVhZCBmcm9tIHRoZSBmaWxlIHdpdGhvdXQgZGVjb21wcmVzc2lvbi4KKyAgIGNhc2UgZ3pyZWFkIHdpbGwgZGlyZWN0bHkgcmVhZCBmcm9tIHRoZSBmaWxlIHdpdGhvdXQgZGVjb21wcmVzc2lvbi4gIFdoZW4KKyAgIHJlYWRpbmcsIHRoaXMgd2lsbCBiZSBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5IGJ5IGxvb2tpbmcgZm9yIHRoZSBtYWdpYyB0d28tCisgICBieXRlIGd6aXAgaGVhZGVyLgogCi0gICAgIGd6b3BlbiByZXR1cm5zIE5VTEwgaWYgdGhlIGZpbGUgY291bGQgbm90IGJlIG9wZW5lZCBvciBpZiB0aGVyZSB3YXMKLSAgIGluc3VmZmljaWVudCBtZW1vcnkgdG8gYWxsb2NhdGUgdGhlIChkZSljb21wcmVzc2lvbiBzdGF0ZTsgZXJybm8KLSAgIGNhbiBiZSBjaGVja2VkIHRvIGRpc3Rpbmd1aXNoIHRoZSB0d28gY2FzZXMgKGlmIGVycm5vIGlzIHplcm8sIHRoZQotICAgemxpYiBlcnJvciBpcyBaX01FTV9FUlJPUikuICAqLwotCi0vKgotICAgICBnemRvcGVuKCkgYXNzb2NpYXRlcyBhIGd6RmlsZSB3aXRoIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQuICBGaWxlCi0gICBkZXNjcmlwdG9ycyBhcmUgb2J0YWluZWQgZnJvbSBjYWxscyBsaWtlIG9wZW4sIGR1cCwgY3JlYXQsIHBpcGUgb3IKLSAgIGZpbGVubyAoaW4gdGhlIGZpbGUgaGFzIGJlZW4gcHJldmlvdXNseSBvcGVuZWQgd2l0aCBmb3BlbikuCi0gICBUaGUgbW9kZSBwYXJhbWV0ZXIgaXMgYXMgaW4gZ3pvcGVuLgotICAgICBUaGUgbmV4dCBjYWxsIG9mIGd6Y2xvc2Ugb24gdGhlIHJldHVybmVkIGd6RmlsZSB3aWxsIGFsc28gY2xvc2UgdGhlCi0gICBmaWxlIGRlc2NyaXB0b3IgZmQsIGp1c3QgbGlrZSBmY2xvc2UoZmRvcGVuKGZkKSwgbW9kZSkgY2xvc2VzIHRoZSBmaWxlCi0gICBkZXNjcmlwdG9yIGZkLiBJZiB5b3Ugd2FudCB0byBrZWVwIGZkIG9wZW4sIHVzZSBnemRvcGVuKGR1cChmZCksIG1vZGUpLgotICAgICBnemRvcGVuIHJldHVybnMgTlVMTCBpZiB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IG1lbW9yeSB0byBhbGxvY2F0ZQotICAgdGhlIChkZSljb21wcmVzc2lvbiBzdGF0ZS4KKyAgICAgZ3pvcGVuIHJldHVybnMgTlVMTCBpZiB0aGUgZmlsZSBjb3VsZCBub3QgYmUgb3BlbmVkLCBpZiB0aGVyZSB3YXMKKyAgIGluc3VmZmljaWVudCBtZW1vcnkgdG8gYWxsb2NhdGUgdGhlIGd6RmlsZSBzdGF0ZSwgb3IgaWYgYW4gaW52YWxpZCBtb2RlIHdhcworICAgc3BlY2lmaWVkIChhbiAncicsICd3Jywgb3IgJ2EnIHdhcyBub3QgcHJvdmlkZWQsIG9yICcrJyB3YXMgcHJvdmlkZWQpLgorICAgZXJybm8gY2FuIGJlIGNoZWNrZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSByZWFzb24gZ3pvcGVuIGZhaWxlZCB3YXMgdGhhdCB0aGUKKyAgIGZpbGUgY291bGQgbm90IGJlIG9wZW5lZC4KICovCiAKK1pFWFRFUk4gZ3pGaWxlIFpFWFBPUlQgZ3pkb3BlbiBPRigoaW50IGZkLCBjb25zdCBjaGFyICptb2RlKSk7CiAvKgotICAgICBEeW5hbWljYWxseSB1cGRhdGUgdGhlIGNvbXByZXNzaW9uIGxldmVsIG9yIHN0cmF0ZWd5LiBTZWUgdGhlIGRlc2NyaXB0aW9uCi0gICBvZiBkZWZsYXRlSW5pdDIgZm9yIHRoZSBtZWFuaW5nIG9mIHRoZXNlIHBhcmFtZXRlcnMuCi0gICAgIGd6c2V0cGFyYW1zIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgZmlsZSB3YXMgbm90Ci0gICBvcGVuZWQgZm9yIHdyaXRpbmcuCisgICAgIEFzc29jaWF0ZSBhIGd6RmlsZSB3aXRoIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQuICBGaWxlIGRlc2NyaXB0b3JzIGFyZQorICAgb2J0YWluZWQgZnJvbSBjYWxscyBsaWtlIG9wZW4sIGR1cCwgY3JlYXQsIHBpcGUgb3IgZmlsZW5vIChpZiB0aGUgZmlsZSBoYXMKKyAgIGJlZW4gcHJldmlvdXNseSBvcGVuZWQgd2l0aCBmb3BlbikuICBUaGUgbW9kZSBwYXJhbWV0ZXIgaXMgYXMgaW4gZ3pvcGVuLgorCisgICAgIFRoZSBuZXh0IGNhbGwgb2YgZ3pjbG9zZSBvbiB0aGUgcmV0dXJuZWQgZ3pGaWxlIHdpbGwgYWxzbyBjbG9zZSB0aGUgZmlsZQorICAgZGVzY3JpcHRvciBmZCwganVzdCBsaWtlIGZjbG9zZShmZG9wZW4oZmQsIG1vZGUpKSBjbG9zZXMgdGhlIGZpbGUgZGVzY3JpcHRvcgorICAgZmQuICBJZiB5b3Ugd2FudCB0byBrZWVwIGZkIG9wZW4sIHVzZSBmZCA9IGR1cChmZF9rZWVwKTsgZ3ogPSBnemRvcGVuKGZkLAorICAgbW9kZSk7LiAgVGhlIGR1cGxpY2F0ZWQgZGVzY3JpcHRvciBzaG91bGQgYmUgc2F2ZWQgdG8gYXZvaWQgYSBsZWFrLCBzaW5jZQorICAgZ3pkb3BlbiBkb2VzIG5vdCBjbG9zZSBmZCBpZiBpdCBmYWlscy4gIElmIHlvdSBhcmUgdXNpbmcgZmlsZW5vKCkgdG8gZ2V0IHRoZQorICAgZmlsZSBkZXNjcmlwdG9yIGZyb20gYSBGSUxFICosIHRoZW4geW91IHdpbGwgaGF2ZSB0byB1c2UgZHVwKCkgdG8gYXZvaWQKKyAgIGRvdWJsZS1jbG9zZSgpaW5nIHRoZSBmaWxlIGRlc2NyaXB0b3IuICBCb3RoIGd6Y2xvc2UoKSBhbmQgZmNsb3NlKCkgd2lsbAorICAgY2xvc2UgdGhlIGFzc29jaWF0ZWQgZmlsZSBkZXNjcmlwdG9yLCBzbyB0aGV5IG5lZWQgdG8gaGF2ZSBkaWZmZXJlbnQgZmlsZQorICAgZGVzY3JpcHRvcnMuCisKKyAgICAgZ3pkb3BlbiByZXR1cm5zIE5VTEwgaWYgdGhlcmUgd2FzIGluc3VmZmljaWVudCBtZW1vcnkgdG8gYWxsb2NhdGUgdGhlCisgICBnekZpbGUgc3RhdGUsIGlmIGFuIGludmFsaWQgbW9kZSB3YXMgc3BlY2lmaWVkIChhbiAncicsICd3Jywgb3IgJ2EnIHdhcyBub3QKKyAgIHByb3ZpZGVkLCBvciAnKycgd2FzIHByb3ZpZGVkKSwgb3IgaWYgZmQgaXMgLTEuICBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIG5vdAorICAgdXNlZCB1bnRpbCB0aGUgbmV4dCBneiogcmVhZCwgd3JpdGUsIHNlZWssIG9yIGNsb3NlIG9wZXJhdGlvbiwgc28gZ3pkb3BlbgorICAgd2lsbCBub3QgZGV0ZWN0IGlmIGZkIGlzIGludmFsaWQgKHVubGVzcyBmZCBpcyAtMSkuCiAqLwogCitaRVhURVJOIGludCBaRVhQT1JUIGd6YnVmZmVyIE9GKChnekZpbGUgZmlsZSwgdW5zaWduZWQgc2l6ZSkpOwogLyoKLSAgICAgUmVhZHMgdGhlIGdpdmVuIG51bWJlciBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgZnJvbSB0aGUgY29tcHJlc3NlZCBmaWxlLgotICAgSWYgdGhlIGlucHV0IGZpbGUgd2FzIG5vdCBpbiBnemlwIGZvcm1hdCwgZ3pyZWFkIGNvcGllcyB0aGUgZ2l2ZW4gbnVtYmVyCi0gICBvZiBieXRlcyBpbnRvIHRoZSBidWZmZXIuCi0gICAgIGd6cmVhZCByZXR1cm5zIHRoZSBudW1iZXIgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIGFjdHVhbGx5IHJlYWQgKDAgZm9yCi0gICBlbmQgb2YgZmlsZSwgLTEgZm9yIGVycm9yKS4gKi8KKyAgICAgU2V0IHRoZSBpbnRlcm5hbCBidWZmZXIgc2l6ZSB1c2VkIGJ5IHRoaXMgbGlicmFyeSdzIGZ1bmN0aW9ucyBmb3IgZmlsZSB0bworICAgc2l6ZS4gIFRoZSBkZWZhdWx0IGJ1ZmZlciBzaXplIGlzIDgxOTIgYnl0ZXMuICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkCisgICBhZnRlciBnem9wZW4oKSBvciBnemRvcGVuKCksIGFuZCBiZWZvcmUgYW55IG90aGVyIGNhbGxzIHRoYXQgcmVhZCBvciB3cml0ZQorICAgdGhlIGZpbGUuICBUaGUgYnVmZmVyIG1lbW9yeSBhbGxvY2F0aW9uIGlzIGFsd2F5cyBkZWZlcnJlZCB0byB0aGUgZmlyc3QgcmVhZAorICAgb3Igd3JpdGUuICBUaHJlZSB0aW1lcyB0aGF0IHNpemUgaW4gYnVmZmVyIHNwYWNlIGlzIGFsbG9jYXRlZC4gIEEgbGFyZ2VyCisgICBidWZmZXIgc2l6ZSBvZiwgZm9yIGV4YW1wbGUsIDY0SyBvciAxMjhLIGJ5dGVzIHdpbGwgbm90aWNlYWJseSBpbmNyZWFzZSB0aGUKKyAgIHNwZWVkIG9mIGRlY29tcHJlc3Npb24gKHJlYWRpbmcpLgogCi0vKgotICAgICBXcml0ZXMgdGhlIGdpdmVuIG51bWJlciBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgaW50byB0aGUgY29tcHJlc3NlZCBmaWxlLgotICAgZ3p3cml0ZSByZXR1cm5zIHRoZSBudW1iZXIgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4KLSAgICgwIGluIGNhc2Ugb2YgZXJyb3IpLgorICAgICBUaGUgbmV3IGJ1ZmZlciBzaXplIGFsc28gYWZmZWN0cyB0aGUgbWF4aW11bSBsZW5ndGggZm9yIGd6cHJpbnRmKCkuCisKKyAgICAgZ3pidWZmZXIoKSByZXR1cm5zIDAgb24gc3VjY2Vzcywgb3IgLTEgb24gZmFpbHVyZSwgc3VjaCBhcyBiZWluZyBjYWxsZWQKKyAgIHRvbyBsYXRlLgogKi8KIAorWkVYVEVSTiBpbnQgWkVYUE9SVCBnenNldHBhcmFtcyBPRigoZ3pGaWxlIGZpbGUsIGludCBsZXZlbCwgaW50IHN0cmF0ZWd5KSk7CiAvKgotICAgICBDb252ZXJ0cywgZm9ybWF0cywgYW5kIHdyaXRlcyB0aGUgYXJncyB0byB0aGUgY29tcHJlc3NlZCBmaWxlIHVuZGVyCi0gICBjb250cm9sIG9mIHRoZSBmb3JtYXQgc3RyaW5nLCBhcyBpbiBmcHJpbnRmLiBnenByaW50ZiByZXR1cm5zIHRoZSBudW1iZXIgb2YKLSAgIHVuY29tcHJlc3NlZCBieXRlcyBhY3R1YWxseSB3cml0dGVuICgwIGluIGNhc2Ugb2YgZXJyb3IpLgorICAgICBEeW5hbWljYWxseSB1cGRhdGUgdGhlIGNvbXByZXNzaW9uIGxldmVsIGFuZCBzdHJhdGVneSBmb3IgZmlsZS4gIFNlZSB0aGUKKyAgIGRlc2NyaXB0aW9uIG9mIGRlZmxhdGVJbml0MiBmb3IgdGhlIG1lYW5pbmcgb2YgdGhlc2UgcGFyYW1ldGVycy4gUHJldmlvdXNseQorICAgcHJvdmlkZWQgZGF0YSBpcyBmbHVzaGVkIGJlZm9yZSBhcHBseWluZyB0aGUgcGFyYW1ldGVyIGNoYW5nZXMuCisKKyAgICAgZ3pzZXRwYXJhbXMgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBmaWxlIHdhcyBub3QKKyAgIG9wZW5lZCBmb3Igd3JpdGluZywgWl9FUlJOTyBpZiB0aGVyZSBpcyBhbiBlcnJvciB3cml0aW5nIHRoZSBmbHVzaGVkIGRhdGEsCisgICBvciBaX01FTV9FUlJPUiBpZiB0aGVyZSBpcyBhIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yLgogKi8KIAorWkVYVEVSTiBpbnQgWkVYUE9SVCBnenJlYWQgT0YoKGd6RmlsZSBmaWxlLCB2b2lkcCBidWYsIHVuc2lnbmVkIGxlbikpOwogLyoKLSAgICAgIFdyaXRlcyB0aGUgZ2l2ZW4gbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB0byB0aGUgY29tcHJlc3NlZCBmaWxlLCBleGNsdWRpbmcKKyAgICAgUmVhZCBhbmQgZGVjb21wcmVzcyB1cCB0byBsZW4gdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gZmlsZSBpbnRvIGJ1Zi4gIElmCisgICB0aGUgaW5wdXQgZmlsZSBpcyBub3QgaW4gZ3ppcCBmb3JtYXQsIGd6cmVhZCBjb3BpZXMgdGhlIGdpdmVuIG51bWJlciBvZgorICAgYnl0ZXMgaW50byB0aGUgYnVmZmVyIGRpcmVjdGx5IGZyb20gdGhlIGZpbGUuCisKKyAgICAgQWZ0ZXIgcmVhY2hpbmcgdGhlIGVuZCBvZiBhIGd6aXAgc3RyZWFtIGluIHRoZSBpbnB1dCwgZ3pyZWFkIHdpbGwgY29udGludWUKKyAgIHRvIHJlYWQsIGxvb2tpbmcgZm9yIGFub3RoZXIgZ3ppcCBzdHJlYW0uICBBbnkgbnVtYmVyIG9mIGd6aXAgc3RyZWFtcyBtYXkgYmUKKyAgIGNvbmNhdGVuYXRlZCBpbiB0aGUgaW5wdXQgZmlsZSwgYW5kIHdpbGwgYWxsIGJlIGRlY29tcHJlc3NlZCBieSBnenJlYWQoKS4KKyAgIElmIHNvbWV0aGluZyBvdGhlciB0aGFuIGEgZ3ppcCBzdHJlYW0gaXMgZW5jb3VudGVyZWQgYWZ0ZXIgYSBnemlwIHN0cmVhbSwKKyAgIHRoYXQgcmVtYWluaW5nIHRyYWlsaW5nIGdhcmJhZ2UgaXMgaWdub3JlZCAoYW5kIG5vIGVycm9yIGlzIHJldHVybmVkKS4KKworICAgICBnenJlYWQgY2FuIGJlIHVzZWQgdG8gcmVhZCBhIGd6aXAgZmlsZSB0aGF0IGlzIGJlaW5nIGNvbmN1cnJlbnRseSB3cml0dGVuLgorICAgVXBvbiByZWFjaGluZyB0aGUgZW5kIG9mIHRoZSBpbnB1dCwgZ3pyZWFkIHdpbGwgcmV0dXJuIHdpdGggdGhlIGF2YWlsYWJsZQorICAgZGF0YS4gIElmIHRoZSBlcnJvciBjb2RlIHJldHVybmVkIGJ5IGd6ZXJyb3IgaXMgWl9PSyBvciBaX0JVRl9FUlJPUiwgdGhlbgorICAgZ3pjbGVhcmVyciBjYW4gYmUgdXNlZCB0byBjbGVhciB0aGUgZW5kIG9mIGZpbGUgaW5kaWNhdG9yIGluIG9yZGVyIHRvIHBlcm1pdAorICAgZ3pyZWFkIHRvIGJlIHRyaWVkIGFnYWluLiAgWl9PSyBpbmRpY2F0ZXMgdGhhdCBhIGd6aXAgc3RyZWFtIHdhcyBjb21wbGV0ZWQKKyAgIG9uIHRoZSBsYXN0IGd6cmVhZC4gIFpfQlVGX0VSUk9SIGluZGljYXRlcyB0aGF0IHRoZSBpbnB1dCBmaWxlIGVuZGVkIGluIHRoZQorICAgbWlkZGxlIG9mIGEgZ3ppcCBzdHJlYW0uICBOb3RlIHRoYXQgZ3pyZWFkIGRvZXMgbm90IHJldHVybiAtMSBpbiB0aGUgZXZlbnQKKyAgIG9mIGFuIGluY29tcGxldGUgZ3ppcCBzdHJlYW0uICBUaGlzIGVycm9yIGlzIGRlZmVycmVkIHVudGlsIGd6Y2xvc2UoKSwgd2hpY2gKKyAgIHdpbGwgcmV0dXJuIFpfQlVGX0VSUk9SIGlmIHRoZSBsYXN0IGd6cmVhZCBlbmRlZCBpbiB0aGUgbWlkZGxlIG9mIGEgZ3ppcAorICAgc3RyZWFtLiAgQWx0ZXJuYXRpdmVseSwgZ3plcnJvciBjYW4gYmUgdXNlZCBiZWZvcmUgZ3pjbG9zZSB0byBkZXRlY3QgdGhpcworICAgY2FzZS4KKworICAgICBnenJlYWQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHVuY29tcHJlc3NlZCBieXRlcyBhY3R1YWxseSByZWFkLCBsZXNzIHRoYW4KKyAgIGxlbiBmb3IgZW5kIG9mIGZpbGUsIG9yIC0xIGZvciBlcnJvci4gIElmIGxlbiBpcyB0b28gbGFyZ2UgdG8gZml0IGluIGFuIGludCwKKyAgIHRoZW4gbm90aGluZyBpcyByZWFkLCAtMSBpcyByZXR1cm5lZCwgYW5kIHRoZSBlcnJvciBzdGF0ZSBpcyBzZXQgdG8KKyAgIFpfU1RSRUFNX0VSUk9SLgorKi8KKworWkVYVEVSTiB6X3NpemVfdCBaRVhQT1JUIGd6ZnJlYWQgT0YoKHZvaWRwIGJ1Ziwgel9zaXplX3Qgc2l6ZSwgel9zaXplX3Qgbml0ZW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd6RmlsZSBmaWxlKSk7CisvKgorICAgICBSZWFkIGFuZCBkZWNvbXByZXNzIHVwIHRvIG5pdGVtcyBpdGVtcyBvZiBzaXplIHNpemUgZnJvbSBmaWxlIGludG8gYnVmLAorICAgb3RoZXJ3aXNlIG9wZXJhdGluZyBhcyBnenJlYWQoKSBkb2VzLiAgVGhpcyBkdXBsaWNhdGVzIHRoZSBpbnRlcmZhY2Ugb2YKKyAgIHN0ZGlvJ3MgZnJlYWQoKSwgd2l0aCBzaXplX3QgcmVxdWVzdCBhbmQgcmV0dXJuIHR5cGVzLiAgSWYgdGhlIGxpYnJhcnkKKyAgIGRlZmluZXMgc2l6ZV90LCB0aGVuIHpfc2l6ZV90IGlzIGlkZW50aWNhbCB0byBzaXplX3QuICBJZiBub3QsIHRoZW4gel9zaXplX3QKKyAgIGlzIGFuIHVuc2lnbmVkIGludGVnZXIgdHlwZSB0aGF0IGNhbiBjb250YWluIGEgcG9pbnRlci4KKworICAgICBnemZyZWFkKCkgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGZ1bGwgaXRlbXMgcmVhZCBvZiBzaXplIHNpemUsIG9yIHplcm8gaWYKKyAgIHRoZSBlbmQgb2YgdGhlIGZpbGUgd2FzIHJlYWNoZWQgYW5kIGEgZnVsbCBpdGVtIGNvdWxkIG5vdCBiZSByZWFkLCBvciBpZgorICAgdGhlcmUgd2FzIGFuIGVycm9yLiAgZ3plcnJvcigpIG11c3QgYmUgY29uc3VsdGVkIGlmIHplcm8gaXMgcmV0dXJuZWQgaW4KKyAgIG9yZGVyIHRvIGRldGVybWluZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuICBJZiB0aGUgbXVsdGlwbGljYXRpb24gb2Ygc2l6ZSBhbmQKKyAgIG5pdGVtcyBvdmVyZmxvd3MsIGkuZS4gdGhlIHByb2R1Y3QgZG9lcyBub3QgZml0IGluIGEgel9zaXplX3QsIHRoZW4gbm90aGluZworICAgaXMgcmVhZCwgemVybyBpcyByZXR1cm5lZCwgYW5kIHRoZSBlcnJvciBzdGF0ZSBpcyBzZXQgdG8gWl9TVFJFQU1fRVJST1IuCisKKyAgICAgSW4gdGhlIGV2ZW50IHRoYXQgdGhlIGVuZCBvZiBmaWxlIGlzIHJlYWNoZWQgYW5kIG9ubHkgYSBwYXJ0aWFsIGl0ZW0gaXMKKyAgIGF2YWlsYWJsZSBhdCB0aGUgZW5kLCBpLmUuIHRoZSByZW1haW5pbmcgdW5jb21wcmVzc2VkIGRhdGEgbGVuZ3RoIGlzIG5vdCBhCisgICBtdWx0aXBsZSBvZiBzaXplLCB0aGVuIHRoZSBmaW5hbCBwYXJ0aWFsIGl0ZW0gaXMgbmV2ZXJ0aGVsZXNzIHJlYWQgaW50byBidWYKKyAgIGFuZCB0aGUgZW5kLW9mLWZpbGUgZmxhZyBpcyBzZXQuICBUaGUgbGVuZ3RoIG9mIHRoZSBwYXJ0aWFsIGl0ZW0gcmVhZCBpcyBub3QKKyAgIHByb3ZpZGVkLCBidXQgY291bGQgYmUgaW5mZXJyZWQgZnJvbSB0aGUgcmVzdWx0IG9mIGd6dGVsbCgpLiAgVGhpcyBiZWhhdmlvcgorICAgaXMgdGhlIHNhbWUgYXMgdGhlIGJlaGF2aW9yIG9mIGZyZWFkKCkgaW1wbGVtZW50YXRpb25zIGluIGNvbW1vbiBsaWJyYXJpZXMsCisgICBidXQgaXQgcHJldmVudHMgdGhlIGRpcmVjdCB1c2Ugb2YgZ3pmcmVhZCgpIHRvIHJlYWQgYSBjb25jdXJyZW50bHkgd3JpdHRlbgorICAgZmlsZSwgcmVzZXR0aW5nIGFuZCByZXRyeWluZyBvbiBlbmQtb2YtZmlsZSwgd2hlbiBzaXplIGlzIG5vdCAxLgorKi8KKworWkVYVEVSTiBpbnQgWkVYUE9SVCBnendyaXRlIE9GKChnekZpbGUgZmlsZSwgdm9pZHBjIGJ1ZiwgdW5zaWduZWQgbGVuKSk7CisvKgorICAgICBDb21wcmVzcyBhbmQgd3JpdGUgdGhlIGxlbiB1bmNvbXByZXNzZWQgYnl0ZXMgYXQgYnVmIHRvIGZpbGUuIGd6d3JpdGUKKyAgIHJldHVybnMgdGhlIG51bWJlciBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgd3JpdHRlbiBvciAwIGluIGNhc2Ugb2YgZXJyb3IuCisqLworCitaRVhURVJOIHpfc2l6ZV90IFpFWFBPUlQgZ3pmd3JpdGUgT0YoKHZvaWRwYyBidWYsIHpfc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpfc2l6ZV90IG5pdGVtcywgZ3pGaWxlIGZpbGUpKTsKKy8qCisgICAgIENvbXByZXNzIGFuZCB3cml0ZSBuaXRlbXMgaXRlbXMgb2Ygc2l6ZSBzaXplIGZyb20gYnVmIHRvIGZpbGUsIGR1cGxpY2F0aW5nCisgICB0aGUgaW50ZXJmYWNlIG9mIHN0ZGlvJ3MgZndyaXRlKCksIHdpdGggc2l6ZV90IHJlcXVlc3QgYW5kIHJldHVybiB0eXBlcy4gIElmCisgICB0aGUgbGlicmFyeSBkZWZpbmVzIHNpemVfdCwgdGhlbiB6X3NpemVfdCBpcyBpZGVudGljYWwgdG8gc2l6ZV90LiAgSWYgbm90LAorICAgdGhlbiB6X3NpemVfdCBpcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgdGhhdCBjYW4gY29udGFpbiBhIHBvaW50ZXIuCisKKyAgICAgZ3pmd3JpdGUoKSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZnVsbCBpdGVtcyB3cml0dGVuIG9mIHNpemUgc2l6ZSwgb3IgemVybworICAgaWYgdGhlcmUgd2FzIGFuIGVycm9yLiAgSWYgdGhlIG11bHRpcGxpY2F0aW9uIG9mIHNpemUgYW5kIG5pdGVtcyBvdmVyZmxvd3MsCisgICBpLmUuIHRoZSBwcm9kdWN0IGRvZXMgbm90IGZpdCBpbiBhIHpfc2l6ZV90LCB0aGVuIG5vdGhpbmcgaXMgd3JpdHRlbiwgemVybworICAgaXMgcmV0dXJuZWQsIGFuZCB0aGUgZXJyb3Igc3RhdGUgaXMgc2V0IHRvIFpfU1RSRUFNX0VSUk9SLgorKi8KKworWkVYVEVSTiBpbnQgWkVYUE9SVFZBIGd6cHJpbnRmIFpfQVJHKChnekZpbGUgZmlsZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pKTsKKy8qCisgICAgIENvbnZlcnQsIGZvcm1hdCwgY29tcHJlc3MsIGFuZCB3cml0ZSB0aGUgYXJndW1lbnRzICguLi4pIHRvIGZpbGUgdW5kZXIKKyAgIGNvbnRyb2wgb2YgdGhlIHN0cmluZyBmb3JtYXQsIGFzIGluIGZwcmludGYuICBnenByaW50ZiByZXR1cm5zIHRoZSBudW1iZXIgb2YKKyAgIHVuY29tcHJlc3NlZCBieXRlcyBhY3R1YWxseSB3cml0dGVuLCBvciBhIG5lZ2F0aXZlIHpsaWIgZXJyb3IgY29kZSBpbiBjYXNlCisgICBvZiBlcnJvci4gIFRoZSBudW1iZXIgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIHdyaXR0ZW4gaXMgbGltaXRlZCB0byA4MTkxLCBvcgorICAgb25lIGxlc3MgdGhhbiB0aGUgYnVmZmVyIHNpemUgZ2l2ZW4gdG8gZ3pidWZmZXIoKS4gIFRoZSBjYWxsZXIgc2hvdWxkIGFzc3VyZQorICAgdGhhdCB0aGlzIGxpbWl0IGlzIG5vdCBleGNlZWRlZC4gIElmIGl0IGlzIGV4Y2VlZGVkLCB0aGVuIGd6cHJpbnRmKCkgd2lsbAorICAgcmV0dXJuIGFuIGVycm9yICgwKSB3aXRoIG5vdGhpbmcgd3JpdHRlbi4gIEluIHRoaXMgY2FzZSwgdGhlcmUgbWF5IGFsc28gYmUgYQorICAgYnVmZmVyIG92ZXJmbG93IHdpdGggdW5wcmVkaWN0YWJsZSBjb25zZXF1ZW5jZXMsIHdoaWNoIGlzIHBvc3NpYmxlIG9ubHkgaWYKKyAgIHpsaWIgd2FzIGNvbXBpbGVkIHdpdGggdGhlIGluc2VjdXJlIGZ1bmN0aW9ucyBzcHJpbnRmKCkgb3IgdnNwcmludGYoKSwKKyAgIGJlY2F1c2UgdGhlIHNlY3VyZSBzbnByaW50ZigpIG9yIHZzbnByaW50ZigpIGZ1bmN0aW9ucyB3ZXJlIG5vdCBhdmFpbGFibGUuCisgICBUaGlzIGNhbiBiZSBkZXRlcm1pbmVkIHVzaW5nIHpsaWJDb21waWxlRmxhZ3MoKS4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgZ3pwdXRzIE9GKChnekZpbGUgZmlsZSwgY29uc3QgY2hhciAqcykpOworLyoKKyAgICAgQ29tcHJlc3MgYW5kIHdyaXRlIHRoZSBnaXZlbiBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIHMgdG8gZmlsZSwgZXhjbHVkaW5nCiAgICB0aGUgdGVybWluYXRpbmcgbnVsbCBjaGFyYWN0ZXIuCi0gICAgICBnenB1dHMgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbiwgb3IgLTEgaW4gY2FzZSBvZiBlcnJvci4KKworICAgICBnenB1dHMgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbiwgb3IgLTEgaW4gY2FzZSBvZiBlcnJvci4KKyovCisKK1pFWFRFUk4gY2hhciAqIFpFWFBPUlQgZ3pnZXRzIE9GKChnekZpbGUgZmlsZSwgY2hhciAqYnVmLCBpbnQgbGVuKSk7CisvKgorICAgICBSZWFkIGFuZCBkZWNvbXByZXNzIGJ5dGVzIGZyb20gZmlsZSBpbnRvIGJ1ZiwgdW50aWwgbGVuLTEgY2hhcmFjdGVycyBhcmUKKyAgIHJlYWQsIG9yIHVudGlsIGEgbmV3bGluZSBjaGFyYWN0ZXIgaXMgcmVhZCBhbmQgdHJhbnNmZXJyZWQgdG8gYnVmLCBvciBhbgorICAgZW5kLW9mLWZpbGUgY29uZGl0aW9uIGlzIGVuY291bnRlcmVkLiAgSWYgYW55IGNoYXJhY3RlcnMgYXJlIHJlYWQgb3IgaWYgbGVuCisgICBpcyBvbmUsIHRoZSBzdHJpbmcgaXMgdGVybWluYXRlZCB3aXRoIGEgbnVsbCBjaGFyYWN0ZXIuICBJZiBubyBjaGFyYWN0ZXJzCisgICBhcmUgcmVhZCBkdWUgdG8gYW4gZW5kLW9mLWZpbGUgb3IgbGVuIGlzIGxlc3MgdGhhbiBvbmUsIHRoZW4gdGhlIGJ1ZmZlciBpcworICAgbGVmdCB1bnRvdWNoZWQuCisKKyAgICAgZ3pnZXRzIHJldHVybnMgYnVmIHdoaWNoIGlzIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZywgb3IgaXQgcmV0dXJucyBOVUxMCisgICBmb3IgZW5kLW9mLWZpbGUgb3IgaW4gY2FzZSBvZiBlcnJvci4gIElmIHRoZXJlIHdhcyBhbiBlcnJvciwgdGhlIGNvbnRlbnRzIGF0CisgICBidWYgYXJlIGluZGV0ZXJtaW5hdGUuCisqLworCitaRVhURVJOIGludCBaRVhQT1JUIGd6cHV0YyBPRigoZ3pGaWxlIGZpbGUsIGludCBjKSk7CisvKgorICAgICBDb21wcmVzcyBhbmQgd3JpdGUgYywgY29udmVydGVkIHRvIGFuIHVuc2lnbmVkIGNoYXIsIGludG8gZmlsZS4gIGd6cHV0YworICAgcmV0dXJucyB0aGUgdmFsdWUgdGhhdCB3YXMgd3JpdHRlbiwgb3IgLTEgaW4gY2FzZSBvZiBlcnJvci4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgZ3pnZXRjIE9GKChnekZpbGUgZmlsZSkpOworLyoKKyAgICAgUmVhZCBhbmQgZGVjb21wcmVzcyBvbmUgYnl0ZSBmcm9tIGZpbGUuICBnemdldGMgcmV0dXJucyB0aGlzIGJ5dGUgb3IgLTEKKyAgIGluIGNhc2Ugb2YgZW5kIG9mIGZpbGUgb3IgZXJyb3IuICBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgbWFjcm8gZm9yIHNwZWVkLgorICAgQXMgc3VjaCwgaXQgZG9lcyBub3QgZG8gYWxsIG9mIHRoZSBjaGVja2luZyB0aGUgb3RoZXIgZnVuY3Rpb25zIGRvLiAgSS5lLgorICAgaXQgZG9lcyBub3QgY2hlY2sgdG8gc2VlIGlmIGZpbGUgaXMgTlVMTCwgbm9yIHdoZXRoZXIgdGhlIHN0cnVjdHVyZSBmaWxlCisgICBwb2ludHMgdG8gaGFzIGJlZW4gY2xvYmJlcmVkIG9yIG5vdC4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgZ3p1bmdldGMgT0YoKGludCBjLCBnekZpbGUgZmlsZSkpOworLyoKKyAgICAgUHVzaCBjIGJhY2sgb250byB0aGUgc3RyZWFtIGZvciBmaWxlIHRvIGJlIHJlYWQgYXMgdGhlIGZpcnN0IGNoYXJhY3RlciBvbgorICAgdGhlIG5leHQgcmVhZC4gIEF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgb2YgcHVzaC1iYWNrIGlzIGFsd2F5cyBhbGxvd2VkLgorICAgZ3p1bmdldGMoKSByZXR1cm5zIHRoZSBjaGFyYWN0ZXIgcHVzaGVkLCBvciAtMSBvbiBmYWlsdXJlLiAgZ3p1bmdldGMoKSB3aWxsCisgICBmYWlsIGlmIGMgaXMgLTEsIGFuZCBtYXkgZmFpbCBpZiBhIGNoYXJhY3RlciBoYXMgYmVlbiBwdXNoZWQgYnV0IG5vdCByZWFkCisgICB5ZXQuICBJZiBnenVuZ2V0YyBpcyB1c2VkIGltbWVkaWF0ZWx5IGFmdGVyIGd6b3BlbiBvciBnemRvcGVuLCBhdCBsZWFzdCB0aGUKKyAgIG91dHB1dCBidWZmZXIgc2l6ZSBvZiBwdXNoZWQgY2hhcmFjdGVycyBpcyBhbGxvd2VkLiAgKFNlZSBnemJ1ZmZlciBhYm92ZS4pCisgICBUaGUgcHVzaGVkIGNoYXJhY3RlciB3aWxsIGJlIGRpc2NhcmRlZCBpZiB0aGUgc3RyZWFtIGlzIHJlcG9zaXRpb25lZCB3aXRoCisgICBnenNlZWsoKSBvciBnenJld2luZCgpLgorKi8KKworWkVYVEVSTiBpbnQgWkVYUE9SVCBnemZsdXNoIE9GKChnekZpbGUgZmlsZSwgaW50IGZsdXNoKSk7CisvKgorICAgICBGbHVzaCBhbGwgcGVuZGluZyBvdXRwdXQgdG8gZmlsZS4gIFRoZSBwYXJhbWV0ZXIgZmx1c2ggaXMgYXMgaW4gdGhlCisgICBkZWZsYXRlKCkgZnVuY3Rpb24uICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSB6bGliIGVycm9yIG51bWJlciAoc2VlIGZ1bmN0aW9uCisgICBnemVycm9yIGJlbG93KS4gIGd6Zmx1c2ggaXMgb25seSBwZXJtaXR0ZWQgd2hlbiB3cml0aW5nLgorCisgICAgIElmIHRoZSBmbHVzaCBwYXJhbWV0ZXIgaXMgWl9GSU5JU0gsIHRoZSByZW1haW5pbmcgZGF0YSBpcyB3cml0dGVuIGFuZCB0aGUKKyAgIGd6aXAgc3RyZWFtIGlzIGNvbXBsZXRlZCBpbiB0aGUgb3V0cHV0LiAgSWYgZ3p3cml0ZSgpIGlzIGNhbGxlZCBhZ2FpbiwgYSBuZXcKKyAgIGd6aXAgc3RyZWFtIHdpbGwgYmUgc3RhcnRlZCBpbiB0aGUgb3V0cHV0LiAgZ3pyZWFkKCkgaXMgYWJsZSB0byByZWFkIHN1Y2gKKyAgIGNvbmNhdGVuYXRlZCBnemlwIHN0cmVhbXMuCisKKyAgICAgZ3pmbHVzaCBzaG91bGQgYmUgY2FsbGVkIG9ubHkgd2hlbiBzdHJpY3RseSBuZWNlc3NhcnkgYmVjYXVzZSBpdCB3aWxsCisgICBkZWdyYWRlIGNvbXByZXNzaW9uIGlmIGNhbGxlZCB0b28gb2Z0ZW4uCiAqLwogCiAvKgotICAgICAgUmVhZHMgYnl0ZXMgZnJvbSB0aGUgY29tcHJlc3NlZCBmaWxlIHVudGlsIGxlbi0xIGNoYXJhY3RlcnMgYXJlIHJlYWQsIG9yCi0gICBhIG5ld2xpbmUgY2hhcmFjdGVyIGlzIHJlYWQgYW5kIHRyYW5zZmVycmVkIHRvIGJ1Ziwgb3IgYW4gZW5kLW9mLWZpbGUKLSAgIGNvbmRpdGlvbiBpcyBlbmNvdW50ZXJlZC4gIFRoZSBzdHJpbmcgaXMgdGhlbiB0ZXJtaW5hdGVkIHdpdGggYSBudWxsCi0gICBjaGFyYWN0ZXIuCi0gICAgICBnemdldHMgcmV0dXJucyBidWYsIG9yIFpfTlVMTCBpbiBjYXNlIG9mIGVycm9yLgotKi8KK1pFWFRFUk4gel9vZmZfdCBaRVhQT1JUIGd6c2VlayBPRigoZ3pGaWxlIGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpfb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKSk7CiAKLS8qCi0gICAgICBXcml0ZXMgYywgY29udmVydGVkIHRvIGFuIHVuc2lnbmVkIGNoYXIsIGludG8gdGhlIGNvbXByZXNzZWQgZmlsZS4KLSAgIGd6cHV0YyByZXR1cm5zIHRoZSB2YWx1ZSB0aGF0IHdhcyB3cml0dGVuLCBvciAtMSBpbiBjYXNlIG9mIGVycm9yLgotKi8KLQotLyoKLSAgICAgIFJlYWRzIG9uZSBieXRlIGZyb20gdGhlIGNvbXByZXNzZWQgZmlsZS4gZ3pnZXRjIHJldHVybnMgdGhpcyBieXRlCi0gICBvciAtMSBpbiBjYXNlIG9mIGVuZCBvZiBmaWxlIG9yIGVycm9yLgotKi8KLQotLyoKLSAgICAgRmx1c2hlcyBhbGwgcGVuZGluZyBvdXRwdXQgaW50byB0aGUgY29tcHJlc3NlZCBmaWxlLiBUaGUgcGFyYW1ldGVyCi0gICBmbHVzaCBpcyBhcyBpbiB0aGUgZGVmbGF0ZSgpIGZ1bmN0aW9uLiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSB6bGliCi0gICBlcnJvciBudW1iZXIgKHNlZSBmdW5jdGlvbiBnemVycm9yIGJlbG93KS4gZ3pmbHVzaCByZXR1cm5zIFpfT0sgaWYKLSAgIHRoZSBmbHVzaCBwYXJhbWV0ZXIgaXMgWl9GSU5JU0ggYW5kIGFsbCBvdXRwdXQgY291bGQgYmUgZmx1c2hlZC4KLSAgICAgZ3pmbHVzaCBzaG91bGQgYmUgY2FsbGVkIG9ubHkgd2hlbiBzdHJpY3RseSBuZWNlc3NhcnkgYmVjYXVzZSBpdCBjYW4KLSAgIGRlZ3JhZGUgY29tcHJlc3Npb24uCi0qLwotCi0vKgotICAgICAgU2V0cyB0aGUgc3RhcnRpbmcgcG9zaXRpb24gZm9yIHRoZSBuZXh0IGd6cmVhZCBvciBnendyaXRlIG9uIHRoZQotICAgZ2l2ZW4gY29tcHJlc3NlZCBmaWxlLiBUaGUgb2Zmc2V0IHJlcHJlc2VudHMgYSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlCi0gICB1bmNvbXByZXNzZWQgZGF0YSBzdHJlYW0uIFRoZSB3aGVuY2UgcGFyYW1ldGVyIGlzIGRlZmluZWQgYXMgaW4gbHNlZWsoMik7CisgICAgIFNldCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gdG8gb2Zmc2V0IHJlbGF0aXZlIHRvIHdoZW5jZSBmb3IgdGhlIG5leHQgZ3pyZWFkCisgICBvciBnendyaXRlIG9uIGZpbGUuICBUaGUgb2Zmc2V0IHJlcHJlc2VudHMgYSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlCisgICB1bmNvbXByZXNzZWQgZGF0YSBzdHJlYW0uICBUaGUgd2hlbmNlIHBhcmFtZXRlciBpcyBkZWZpbmVkIGFzIGluIGxzZWVrKDIpOwogICAgdGhlIHZhbHVlIFNFRUtfRU5EIGlzIG5vdCBzdXBwb3J0ZWQuCisKICAgICAgSWYgdGhlIGZpbGUgaXMgb3BlbmVkIGZvciByZWFkaW5nLCB0aGlzIGZ1bmN0aW9uIGlzIGVtdWxhdGVkIGJ1dCBjYW4gYmUKLSAgIGV4dHJlbWVseSBzbG93LiBJZiB0aGUgZmlsZSBpcyBvcGVuZWQgZm9yIHdyaXRpbmcsIG9ubHkgZm9yd2FyZCBzZWVrcyBhcmUKKyAgIGV4dHJlbWVseSBzbG93LiAgSWYgdGhlIGZpbGUgaXMgb3BlbmVkIGZvciB3cml0aW5nLCBvbmx5IGZvcndhcmQgc2Vla3MgYXJlCiAgICBzdXBwb3J0ZWQ7IGd6c2VlayB0aGVuIGNvbXByZXNzZXMgYSBzZXF1ZW5jZSBvZiB6ZXJvZXMgdXAgdG8gdGhlIG5ldwogICAgc3RhcnRpbmcgcG9zaXRpb24uCiAKLSAgICAgIGd6c2VlayByZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0IGxvY2F0aW9uIGFzIG1lYXN1cmVkIGluIGJ5dGVzIGZyb20KKyAgICAgZ3pzZWVrIHJldHVybnMgdGhlIHJlc3VsdGluZyBvZmZzZXQgbG9jYXRpb24gYXMgbWVhc3VyZWQgaW4gYnl0ZXMgZnJvbQogICAgdGhlIGJlZ2lubmluZyBvZiB0aGUgdW5jb21wcmVzc2VkIHN0cmVhbSwgb3IgLTEgaW4gY2FzZSBvZiBlcnJvciwgaW4KICAgIHBhcnRpY3VsYXIgaWYgdGhlIGZpbGUgaXMgb3BlbmVkIGZvciB3cml0aW5nIGFuZCB0aGUgbmV3IHN0YXJ0aW5nIHBvc2l0aW9uCiAgICB3b3VsZCBiZSBiZWZvcmUgdGhlIGN1cnJlbnQgcG9zaXRpb24uCiAqLwogCitaRVhURVJOIGludCBaRVhQT1JUICAgIGd6cmV3aW5kIE9GKChnekZpbGUgZmlsZSkpOwogLyoKLSAgICAgUmV3aW5kcyB0aGUgZ2l2ZW4gZmlsZS4gVGhpcyBmdW5jdGlvbiBpcyBzdXBwb3J0ZWQgb25seSBmb3IgcmVhZGluZy4KKyAgICAgUmV3aW5kIGZpbGUuIFRoaXMgZnVuY3Rpb24gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHJlYWRpbmcuCiAKLSAgIGd6cmV3aW5kKGZpbGUpIGlzIGVxdWl2YWxlbnQgdG8gKGludClnenNlZWsoZmlsZSwgMEwsIFNFRUtfU0VUKQorICAgICBnenJld2luZChmaWxlKSBpcyBlcXVpdmFsZW50IHRvIChpbnQpZ3pzZWVrKGZpbGUsIDBMLCBTRUVLX1NFVCkuCiAqLwogCiAvKgotICAgICBSZXR1cm5zIHRoZSBzdGFydGluZyBwb3NpdGlvbiBmb3IgdGhlIG5leHQgZ3pyZWFkIG9yIGd6d3JpdGUgb24gdGhlCi0gICBnaXZlbiBjb21wcmVzc2VkIGZpbGUuIFRoaXMgcG9zaXRpb24gcmVwcmVzZW50cyBhIG51bWJlciBvZiBieXRlcyBpbiB0aGUKLSAgIHVuY29tcHJlc3NlZCBkYXRhIHN0cmVhbS4KK1pFWFRFUk4gel9vZmZfdCBaRVhQT1JUICAgIGd6dGVsbCBPRigoZ3pGaWxlIGZpbGUpKTsKIAotICAgZ3p0ZWxsKGZpbGUpIGlzIGVxdWl2YWxlbnQgdG8gZ3pzZWVrKGZpbGUsIDBMLCBTRUVLX0NVUikKKyAgICAgUmV0dXJuIHRoZSBzdGFydGluZyBwb3NpdGlvbiBmb3IgdGhlIG5leHQgZ3pyZWFkIG9yIGd6d3JpdGUgb24gZmlsZS4KKyAgIFRoaXMgcG9zaXRpb24gcmVwcmVzZW50cyBhIG51bWJlciBvZiBieXRlcyBpbiB0aGUgdW5jb21wcmVzc2VkIGRhdGEgc3RyZWFtLAorICAgYW5kIGlzIHplcm8gd2hlbiBzdGFydGluZywgZXZlbiBpZiBhcHBlbmRpbmcgb3IgcmVhZGluZyBhIGd6aXAgc3RyZWFtIGZyb20KKyAgIHRoZSBtaWRkbGUgb2YgYSBmaWxlIHVzaW5nIGd6ZG9wZW4oKS4KKworICAgICBnenRlbGwoZmlsZSkgaXMgZXF1aXZhbGVudCB0byBnenNlZWsoZmlsZSwgMEwsIFNFRUtfQ1VSKQogKi8KIAogLyoKLSAgICAgUmV0dXJucyAxIHdoZW4gRU9GIGhhcyBwcmV2aW91c2x5IGJlZW4gZGV0ZWN0ZWQgcmVhZGluZyB0aGUgZ2l2ZW4KLSAgIGlucHV0IHN0cmVhbSwgb3RoZXJ3aXNlIHplcm8uCitaRVhURVJOIHpfb2ZmX3QgWkVYUE9SVCBnem9mZnNldCBPRigoZ3pGaWxlIGZpbGUpKTsKKworICAgICBSZXR1cm4gdGhlIGN1cnJlbnQgY29tcHJlc3NlZCAoYWN0dWFsKSByZWFkIG9yIHdyaXRlIG9mZnNldCBvZiBmaWxlLiAgVGhpcworICAgb2Zmc2V0IGluY2x1ZGVzIHRoZSBjb3VudCBvZiBieXRlcyB0aGF0IHByZWNlZGUgdGhlIGd6aXAgc3RyZWFtLCBmb3IgZXhhbXBsZQorICAgd2hlbiBhcHBlbmRpbmcgb3Igd2hlbiB1c2luZyBnemRvcGVuKCkgZm9yIHJlYWRpbmcuICBXaGVuIHJlYWRpbmcsIHRoZQorICAgb2Zmc2V0IGRvZXMgbm90IGluY2x1ZGUgYXMgeWV0IHVudXNlZCBidWZmZXJlZCBpbnB1dC4gIFRoaXMgaW5mb3JtYXRpb24gY2FuCisgICBiZSB1c2VkIGZvciBhIHByb2dyZXNzIGluZGljYXRvci4gIE9uIGVycm9yLCBnem9mZnNldCgpIHJldHVybnMgLTEuCiAqLwogCitaRVhURVJOIGludCBaRVhQT1JUIGd6ZW9mIE9GKChnekZpbGUgZmlsZSkpOwogLyoKLSAgICAgRmx1c2hlcyBhbGwgcGVuZGluZyBvdXRwdXQgaWYgbmVjZXNzYXJ5LCBjbG9zZXMgdGhlIGNvbXByZXNzZWQgZmlsZQotICAgYW5kIGRlYWxsb2NhdGVzIGFsbCB0aGUgKGRlKWNvbXByZXNzaW9uIHN0YXRlLiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSB6bGliCi0gICBlcnJvciBudW1iZXIgKHNlZSBmdW5jdGlvbiBnemVycm9yIGJlbG93KS4KKyAgICAgUmV0dXJuIHRydWUgKDEpIGlmIHRoZSBlbmQtb2YtZmlsZSBpbmRpY2F0b3IgZm9yIGZpbGUgaGFzIGJlZW4gc2V0IHdoaWxlCisgICByZWFkaW5nLCBmYWxzZSAoMCkgb3RoZXJ3aXNlLiAgTm90ZSB0aGF0IHRoZSBlbmQtb2YtZmlsZSBpbmRpY2F0b3IgaXMgc2V0CisgICBvbmx5IGlmIHRoZSByZWFkIHRyaWVkIHRvIGdvIHBhc3QgdGhlIGVuZCBvZiB0aGUgaW5wdXQsIGJ1dCBjYW1lIHVwIHNob3J0LgorICAgVGhlcmVmb3JlLCBqdXN0IGxpa2UgZmVvZigpLCBnemVvZigpIG1heSByZXR1cm4gZmFsc2UgZXZlbiBpZiB0aGVyZSBpcyBubworICAgbW9yZSBkYXRhIHRvIHJlYWQsIGluIHRoZSBldmVudCB0aGF0IHRoZSBsYXN0IHJlYWQgcmVxdWVzdCB3YXMgZm9yIHRoZSBleGFjdAorICAgbnVtYmVyIG9mIGJ5dGVzIHJlbWFpbmluZyBpbiB0aGUgaW5wdXQgZmlsZS4gIFRoaXMgd2lsbCBoYXBwZW4gaWYgdGhlIGlucHV0CisgICBmaWxlIHNpemUgaXMgYW4gZXhhY3QgbXVsdGlwbGUgb2YgdGhlIGJ1ZmZlciBzaXplLgorCisgICAgIElmIGd6ZW9mKCkgcmV0dXJucyB0cnVlLCB0aGVuIHRoZSByZWFkIGZ1bmN0aW9ucyB3aWxsIHJldHVybiBubyBtb3JlIGRhdGEsCisgICB1bmxlc3MgdGhlIGVuZC1vZi1maWxlIGluZGljYXRvciBpcyByZXNldCBieSBnemNsZWFyZXJyKCkgYW5kIHRoZSBpbnB1dCBmaWxlCisgICBoYXMgZ3Jvd24gc2luY2UgdGhlIHByZXZpb3VzIGVuZCBvZiBmaWxlIHdhcyBkZXRlY3RlZC4KICovCiAKK1pFWFRFUk4gaW50IFpFWFBPUlQgZ3pkaXJlY3QgT0YoKGd6RmlsZSBmaWxlKSk7CiAvKgotICAgICBSZXR1cm5zIHRoZSBlcnJvciBtZXNzYWdlIGZvciB0aGUgbGFzdCBlcnJvciB3aGljaCBvY2N1cnJlZCBvbiB0aGUKLSAgIGdpdmVuIGNvbXByZXNzZWQgZmlsZS4gZXJybnVtIGlzIHNldCB0byB6bGliIGVycm9yIG51bWJlci4gSWYgYW4KLSAgIGVycm9yIG9jY3VycmVkIGluIHRoZSBmaWxlIHN5c3RlbSBhbmQgbm90IGluIHRoZSBjb21wcmVzc2lvbiBsaWJyYXJ5LAotICAgZXJybnVtIGlzIHNldCB0byBaX0VSUk5PIGFuZCB0aGUgYXBwbGljYXRpb24gbWF5IGNvbnN1bHQgZXJybm8KLSAgIHRvIGdldCB0aGUgZXhhY3QgZXJyb3IgY29kZS4KKyAgICAgUmV0dXJuIHRydWUgKDEpIGlmIGZpbGUgaXMgYmVpbmcgY29waWVkIGRpcmVjdGx5IHdoaWxlIHJlYWRpbmcsIG9yIGZhbHNlCisgICAoMCkgaWYgZmlsZSBpcyBhIGd6aXAgc3RyZWFtIGJlaW5nIGRlY29tcHJlc3NlZC4KKworICAgICBJZiB0aGUgaW5wdXQgZmlsZSBpcyBlbXB0eSwgZ3pkaXJlY3QoKSB3aWxsIHJldHVybiB0cnVlLCBzaW5jZSB0aGUgaW5wdXQKKyAgIGRvZXMgbm90IGNvbnRhaW4gYSBnemlwIHN0cmVhbS4KKworICAgICBJZiBnemRpcmVjdCgpIGlzIHVzZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZ3pvcGVuKCkgb3IgZ3pkb3BlbigpIGl0IHdpbGwKKyAgIGNhdXNlIGJ1ZmZlcnMgdG8gYmUgYWxsb2NhdGVkIHRvIGFsbG93IHJlYWRpbmcgdGhlIGZpbGUgdG8gZGV0ZXJtaW5lIGlmIGl0CisgICBpcyBhIGd6aXAgZmlsZS4gIFRoZXJlZm9yZSBpZiBnemJ1ZmZlcigpIGlzIHVzZWQsIGl0IHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlCisgICBnemRpcmVjdCgpLgorCisgICAgIFdoZW4gd3JpdGluZywgZ3pkaXJlY3QoKSByZXR1cm5zIHRydWUgKDEpIGlmIHRyYW5zcGFyZW50IHdyaXRpbmcgd2FzCisgICByZXF1ZXN0ZWQgKCJ3VCIgZm9yIHRoZSBnem9wZW4oKSBtb2RlKSwgb3IgZmFsc2UgKDApIG90aGVyd2lzZS4gIChOb3RlOgorICAgZ3pkaXJlY3QoKSBpcyBub3QgbmVlZGVkIHdoZW4gd3JpdGluZy4gIFRyYW5zcGFyZW50IHdyaXRpbmcgbXVzdCBiZQorICAgZXhwbGljaXRseSByZXF1ZXN0ZWQsIHNvIHRoZSBhcHBsaWNhdGlvbiBhbHJlYWR5IGtub3dzIHRoZSBhbnN3ZXIuICBXaGVuCisgICBsaW5raW5nIHN0YXRpY2FsbHksIHVzaW5nIGd6ZGlyZWN0KCkgd2lsbCBpbmNsdWRlIGFsbCBvZiB0aGUgemxpYiBjb2RlIGZvcgorICAgZ3ppcCBmaWxlIHJlYWRpbmcgYW5kIGRlY29tcHJlc3Npb24sIHdoaWNoIG1heSBub3QgYmUgZGVzaXJlZC4pCiAqLwogCitaRVhURVJOIGludCBaRVhQT1JUICAgIGd6Y2xvc2UgT0YoKGd6RmlsZSBmaWxlKSk7CisvKgorICAgICBGbHVzaCBhbGwgcGVuZGluZyBvdXRwdXQgZm9yIGZpbGUsIGlmIG5lY2Vzc2FyeSwgY2xvc2UgZmlsZSBhbmQKKyAgIGRlYWxsb2NhdGUgdGhlIChkZSljb21wcmVzc2lvbiBzdGF0ZS4gIE5vdGUgdGhhdCBvbmNlIGZpbGUgaXMgY2xvc2VkLCB5b3UKKyAgIGNhbm5vdCBjYWxsIGd6ZXJyb3Igd2l0aCBmaWxlLCBzaW5jZSBpdHMgc3RydWN0dXJlcyBoYXZlIGJlZW4gZGVhbGxvY2F0ZWQuCisgICBnemNsb3NlIG11c3Qgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSBvbiB0aGUgc2FtZSBmaWxlLCBqdXN0IGFzIGZyZWUKKyAgIG11c3Qgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSBvbiB0aGUgc2FtZSBhbGxvY2F0aW9uLgorCisgICAgIGd6Y2xvc2Ugd2lsbCByZXR1cm4gWl9TVFJFQU1fRVJST1IgaWYgZmlsZSBpcyBub3QgdmFsaWQsIFpfRVJSTk8gb24gYQorICAgZmlsZSBvcGVyYXRpb24gZXJyb3IsIFpfTUVNX0VSUk9SIGlmIG91dCBvZiBtZW1vcnksIFpfQlVGX0VSUk9SIGlmIHRoZQorICAgbGFzdCByZWFkIGVuZGVkIGluIHRoZSBtaWRkbGUgb2YgYSBnemlwIHN0cmVhbSwgb3IgWl9PSyBvbiBzdWNjZXNzLgorKi8KKworWkVYVEVSTiBpbnQgWkVYUE9SVCBnemNsb3NlX3IgT0YoKGd6RmlsZSBmaWxlKSk7CitaRVhURVJOIGludCBaRVhQT1JUIGd6Y2xvc2VfdyBPRigoZ3pGaWxlIGZpbGUpKTsKKy8qCisgICAgIFNhbWUgYXMgZ3pjbG9zZSgpLCBidXQgZ3pjbG9zZV9yKCkgaXMgb25seSBmb3IgdXNlIHdoZW4gcmVhZGluZywgYW5kCisgICBnemNsb3NlX3coKSBpcyBvbmx5IGZvciB1c2Ugd2hlbiB3cml0aW5nIG9yIGFwcGVuZGluZy4gIFRoZSBhZHZhbnRhZ2UgdG8KKyAgIHVzaW5nIHRoZXNlIGluc3RlYWQgb2YgZ3pjbG9zZSgpIGlzIHRoYXQgdGhleSBhdm9pZCBsaW5raW5nIGluIHpsaWIKKyAgIGNvbXByZXNzaW9uIG9yIGRlY29tcHJlc3Npb24gY29kZSB0aGF0IGlzIG5vdCB1c2VkIHdoZW4gb25seSByZWFkaW5nIG9yIG9ubHkKKyAgIHdyaXRpbmcgcmVzcGVjdGl2ZWx5LiAgSWYgZ3pjbG9zZSgpIGlzIHVzZWQsIHRoZW4gYm90aCBjb21wcmVzc2lvbiBhbmQKKyAgIGRlY29tcHJlc3Npb24gY29kZSB3aWxsIGJlIGluY2x1ZGVkIHRoZSBhcHBsaWNhdGlvbiB3aGVuIGxpbmtpbmcgdG8gYSBzdGF0aWMKKyAgIHpsaWIgbGlicmFyeS4KKyovCisKK1pFWFRFUk4gY29uc3QgY2hhciAqIFpFWFBPUlQgZ3plcnJvciBPRigoZ3pGaWxlIGZpbGUsIGludCAqZXJybnVtKSk7CisvKgorICAgICBSZXR1cm4gdGhlIGVycm9yIG1lc3NhZ2UgZm9yIHRoZSBsYXN0IGVycm9yIHdoaWNoIG9jY3VycmVkIG9uIGZpbGUuCisgICBlcnJudW0gaXMgc2V0IHRvIHpsaWIgZXJyb3IgbnVtYmVyLiAgSWYgYW4gZXJyb3Igb2NjdXJyZWQgaW4gdGhlIGZpbGUgc3lzdGVtCisgICBhbmQgbm90IGluIHRoZSBjb21wcmVzc2lvbiBsaWJyYXJ5LCBlcnJudW0gaXMgc2V0IHRvIFpfRVJSTk8gYW5kIHRoZQorICAgYXBwbGljYXRpb24gbWF5IGNvbnN1bHQgZXJybm8gdG8gZ2V0IHRoZSBleGFjdCBlcnJvciBjb2RlLgorCisgICAgIFRoZSBhcHBsaWNhdGlvbiBtdXN0IG5vdCBtb2RpZnkgdGhlIHJldHVybmVkIHN0cmluZy4gIEZ1dHVyZSBjYWxscyB0bworICAgdGhpcyBmdW5jdGlvbiBtYXkgaW52YWxpZGF0ZSB0aGUgcHJldmlvdXNseSByZXR1cm5lZCBzdHJpbmcuICBJZiBmaWxlIGlzCisgICBjbG9zZWQsIHRoZW4gdGhlIHN0cmluZyBwcmV2aW91c2x5IHJldHVybmVkIGJ5IGd6ZXJyb3Igd2lsbCBubyBsb25nZXIgYmUKKyAgIGF2YWlsYWJsZS4KKworICAgICBnemVycm9yKCkgc2hvdWxkIGJlIHVzZWQgdG8gZGlzdGluZ3Vpc2ggZXJyb3JzIGZyb20gZW5kLW9mLWZpbGUgZm9yIHRob3NlCisgICBmdW5jdGlvbnMgYWJvdmUgdGhhdCBkbyBub3QgZGlzdGluZ3Vpc2ggdGhvc2UgY2FzZXMgaW4gdGhlaXIgcmV0dXJuIHZhbHVlcy4KKyovCisKK1pFWFRFUk4gdm9pZCBaRVhQT1JUIGd6Y2xlYXJlcnIgT0YoKGd6RmlsZSBmaWxlKSk7CisvKgorICAgICBDbGVhciB0aGUgZXJyb3IgYW5kIGVuZC1vZi1maWxlIGZsYWdzIGZvciBmaWxlLiAgVGhpcyBpcyBhbmFsb2dvdXMgdG8gdGhlCisgICBjbGVhcmVycigpIGZ1bmN0aW9uIGluIHN0ZGlvLiAgVGhpcyBpcyB1c2VmdWwgZm9yIGNvbnRpbnVpbmcgdG8gcmVhZCBhIGd6aXAKKyAgIGZpbGUgdGhhdCBpcyBiZWluZyB3cml0dGVuIGNvbmN1cnJlbnRseS4KKyovCisKKyNlbmRpZiAvKiAhWl9TT0xPICovCisKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrc3VtIGZ1bmN0aW9ucyAqLwogCiAvKgogICAgICBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCByZWxhdGVkIHRvIGNvbXByZXNzaW9uIGJ1dCBhcmUgZXhwb3J0ZWQKLSAgIGFueXdheSBiZWNhdXNlIHRoZXkgbWlnaHQgYmUgdXNlZnVsIGluIGFwcGxpY2F0aW9ucyB1c2luZyB0aGUKLSAgIGNvbXByZXNzaW9uIGxpYnJhcnkuCisgICBhbnl3YXkgYmVjYXVzZSB0aGV5IG1pZ2h0IGJlIHVzZWZ1bCBpbiBhcHBsaWNhdGlvbnMgdXNpbmcgdGhlIGNvbXByZXNzaW9uCisgICBsaWJyYXJ5LgogKi8KIAotWkVYVEVSTih1TG9uZykgIGFkbGVyMzIgT0YoKHVMb25nIGFkbGVyLCBjb25zdCBCeXRlZiAqYnVmLCB1SW50IGxlbikpOwotCitaRVhURVJOIHVMb25nIFpFWFBPUlQgYWRsZXIzMiBPRigodUxvbmcgYWRsZXIsIGNvbnN0IEJ5dGVmICpidWYsIHVJbnQgbGVuKSk7CiAvKgogICAgICBVcGRhdGUgYSBydW5uaW5nIEFkbGVyLTMyIGNoZWNrc3VtIHdpdGggdGhlIGJ5dGVzIGJ1ZlswLi5sZW4tMV0gYW5kCi0gICByZXR1cm4gdGhlIHVwZGF0ZWQgY2hlY2tzdW0uIElmIGJ1ZiBpcyBOVUxMLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMKLSAgIHRoZSByZXF1aXJlZCBpbml0aWFsIHZhbHVlIGZvciB0aGUgY2hlY2tzdW0uCi0gICBBbiBBZGxlci0zMiBjaGVja3N1bSBpcyBhbG1vc3QgYXMgcmVsaWFibGUgYXMgYSBDUkMzMiBidXQgY2FuIGJlIGNvbXB1dGVkCi0gICBtdWNoIGZhc3Rlci4gVXNhZ2UgZXhhbXBsZToKKyAgIHJldHVybiB0aGUgdXBkYXRlZCBjaGVja3N1bS4gQW4gQWRsZXItMzIgdmFsdWUgaXMgaW4gdGhlIHJhbmdlIG9mIGEgMzItYml0CisgICB1bnNpZ25lZCBpbnRlZ2VyLiBJZiBidWYgaXMgWl9OVUxMLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlcXVpcmVkCisgICBpbml0aWFsIHZhbHVlIGZvciB0aGUgY2hlY2tzdW0uCisKKyAgICAgQW4gQWRsZXItMzIgY2hlY2tzdW0gaXMgYWxtb3N0IGFzIHJlbGlhYmxlIGFzIGEgQ1JDLTMyIGJ1dCBjYW4gYmUgY29tcHV0ZWQKKyAgIG11Y2ggZmFzdGVyLgorCisgICBVc2FnZSBleGFtcGxlOgogCiAgICAgIHVMb25nIGFkbGVyID0gYWRsZXIzMigwTCwgWl9OVUxMLCAwKTsKIApAQCAtNzg5LDExICsxNzIxLDMyIEBACiAgICAgIGlmIChhZGxlciAhPSBvcmlnaW5hbF9hZGxlcikgZXJyb3IoKTsKICovCiAKK1pFWFRFUk4gdUxvbmcgWkVYUE9SVCBhZGxlcjMyX3ogT0YoKHVMb25nIGFkbGVyLCBjb25zdCBCeXRlZiAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgel9zaXplX3QgbGVuKSk7CiAvKgotICAgICBVcGRhdGUgYSBydW5uaW5nIGNyYyB3aXRoIHRoZSBieXRlcyBidWZbMC4ubGVuLTFdIGFuZCByZXR1cm4gdGhlIHVwZGF0ZWQKLSAgIGNyYy4gSWYgYnVmIGlzIE5VTEwsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVxdWlyZWQgaW5pdGlhbCB2YWx1ZQotICAgZm9yIHRoZSBjcmMuIFByZS0gYW5kIHBvc3QtY29uZGl0aW9uaW5nIChvbmUncyBjb21wbGVtZW50KSBpcyBwZXJmb3JtZWQKLSAgIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIHNvIGl0IHNob3VsZG4ndCBiZSBkb25lIGJ5IHRoZSBhcHBsaWNhdGlvbi4KKyAgICAgU2FtZSBhcyBhZGxlcjMyKCksIGJ1dCB3aXRoIGEgc2l6ZV90IGxlbmd0aC4KKyovCisKKy8qCitaRVhURVJOIHVMb25nIFpFWFBPUlQgYWRsZXIzMl9jb21iaW5lIE9GKCh1TG9uZyBhZGxlcjEsIHVMb25nIGFkbGVyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpfb2ZmX3QgbGVuMikpOworCisgICAgIENvbWJpbmUgdHdvIEFkbGVyLTMyIGNoZWNrc3VtcyBpbnRvIG9uZS4gIEZvciB0d28gc2VxdWVuY2VzIG9mIGJ5dGVzLCBzZXExCisgICBhbmQgc2VxMiB3aXRoIGxlbmd0aHMgbGVuMSBhbmQgbGVuMiwgQWRsZXItMzIgY2hlY2tzdW1zIHdlcmUgY2FsY3VsYXRlZCBmb3IKKyAgIGVhY2gsIGFkbGVyMSBhbmQgYWRsZXIyLiAgYWRsZXIzMl9jb21iaW5lKCkgcmV0dXJucyB0aGUgQWRsZXItMzIgY2hlY2tzdW0gb2YKKyAgIHNlcTEgYW5kIHNlcTIgY29uY2F0ZW5hdGVkLCByZXF1aXJpbmcgb25seSBhZGxlcjEsIGFkbGVyMiwgYW5kIGxlbjIuICBOb3RlCisgICB0aGF0IHRoZSB6X29mZl90IHR5cGUgKGxpa2Ugb2ZmX3QpIGlzIGEgc2lnbmVkIGludGVnZXIuICBJZiBsZW4yIGlzCisgICBuZWdhdGl2ZSwgdGhlIHJlc3VsdCBoYXMgbm8gbWVhbmluZyBvciB1dGlsaXR5LgorKi8KKworWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGNyYzMyIE9GKCh1TG9uZyBjcmMsIGNvbnN0IEJ5dGVmICpidWYsIHVJbnQgbGVuKSk7CisvKgorICAgICBVcGRhdGUgYSBydW5uaW5nIENSQy0zMiB3aXRoIHRoZSBieXRlcyBidWZbMC4ubGVuLTFdIGFuZCByZXR1cm4gdGhlCisgICB1cGRhdGVkIENSQy0zMi4gQSBDUkMtMzIgdmFsdWUgaXMgaW4gdGhlIHJhbmdlIG9mIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuCisgICBJZiBidWYgaXMgWl9OVUxMLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlcXVpcmVkIGluaXRpYWwgdmFsdWUgZm9yIHRoZQorICAgY3JjLiBQcmUtIGFuZCBwb3N0LWNvbmRpdGlvbmluZyAob25lJ3MgY29tcGxlbWVudCkgaXMgcGVyZm9ybWVkIHdpdGhpbiB0aGlzCisgICBmdW5jdGlvbiBzbyBpdCBzaG91bGRuJ3QgYmUgZG9uZSBieSB0aGUgYXBwbGljYXRpb24uCisKICAgIFVzYWdlIGV4YW1wbGU6CiAKICAgICAgdUxvbmcgY3JjID0gY3JjMzIoMEwsIFpfTlVMTCwgMCk7CkBAIC04MDQsMjcgKzE3NTcsMjE1IEBACiAgICAgIGlmIChjcmMgIT0gb3JpZ2luYWxfY3JjKSBlcnJvcigpOwogKi8KIAorWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGNyYzMyX3ogT0YoKHVMb25nIGNyYywgY29uc3QgQnl0ZWYgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6X3NpemVfdCBsZW4pKTsKKy8qCisgICAgIFNhbWUgYXMgY3JjMzIoKSwgYnV0IHdpdGggYSBzaXplX3QgbGVuZ3RoLgorKi8KKworLyoKK1pFWFRFUk4gdUxvbmcgWkVYUE9SVCBjcmMzMl9jb21iaW5lIE9GKCh1TG9uZyBjcmMxLCB1TG9uZyBjcmMyLCB6X29mZl90IGxlbjIpKTsKKworICAgICBDb21iaW5lIHR3byBDUkMtMzIgY2hlY2sgdmFsdWVzIGludG8gb25lLiAgRm9yIHR3byBzZXF1ZW5jZXMgb2YgYnl0ZXMsCisgICBzZXExIGFuZCBzZXEyIHdpdGggbGVuZ3RocyBsZW4xIGFuZCBsZW4yLCBDUkMtMzIgY2hlY2sgdmFsdWVzIHdlcmUKKyAgIGNhbGN1bGF0ZWQgZm9yIGVhY2gsIGNyYzEgYW5kIGNyYzIuICBjcmMzMl9jb21iaW5lKCkgcmV0dXJucyB0aGUgQ1JDLTMyCisgICBjaGVjayB2YWx1ZSBvZiBzZXExIGFuZCBzZXEyIGNvbmNhdGVuYXRlZCwgcmVxdWlyaW5nIG9ubHkgY3JjMSwgY3JjMiwgYW5kCisgICBsZW4yLgorKi8KKworLyoKK1pFWFRFUk4gdUxvbmcgWkVYUE9SVCBjcmMzMl9jb21iaW5lX2dlbiBPRigoel9vZmZfdCBsZW4yKSk7CisKKyAgICAgUmV0dXJuIHRoZSBvcGVyYXRvciBjb3JyZXNwb25kaW5nIHRvIGxlbmd0aCBsZW4yLCB0byBiZSB1c2VkIHdpdGgKKyAgIGNyYzMyX2NvbWJpbmVfb3AoKS4KKyovCisKKyNpZm5kZWYgWl9GUkVFVFlQRQorCitaRVhURVJOIHVMb25nIFpFWFBPUlQgY3JjMzJfY29tYmluZV9vcCBPRigodUxvbmcgY3JjMSwgdUxvbmcgY3JjMiwgdUxvbmcgb3ApKTsKKy8qCisgICAgIEdpdmUgdGhlIHNhbWUgcmVzdWx0IGFzIGNyYzMyX2NvbWJpbmUoKSwgdXNpbmcgb3AgaW4gcGxhY2Ugb2YgbGVuMi4gb3AgaXMKKyAgIGlzIGdlbmVyYXRlZCBmcm9tIGxlbjIgYnkgY3JjMzJfY29tYmluZV9nZW4oKS4gVGhpcyB3aWxsIGJlIGZhc3RlciB0aGFuCisgICBjcmMzMl9jb21iaW5lKCkgaWYgdGhlIGdlbmVyYXRlZCBvcCBpcyB1c2VkIG1vcmUgdGhhbiBvbmNlLgorKi8KKwogCiAgICAgICAgICAgICAgICAgICAgICAgICAvKiB2YXJpb3VzIGhhY2tzLCBkb24ndCBsb29rIDopICovCiAKIC8qIGRlZmxhdGVJbml0IGFuZCBpbmZsYXRlSW5pdCBhcmUgbWFjcm9zIHRvIGFsbG93IGNoZWNraW5nIHRoZSB6bGliIHZlcnNpb24KICAqIGFuZCB0aGUgY29tcGlsZXIncyB2aWV3IG9mIHpfc3RyZWFtOgogICovCi1aRVhURVJOKGludCkgIGluZmxhdGVJbml0Ml8gT0YoKHpfc3RyZWFtcCBzdHJtLCBpbnQgIHdpbmRvd0JpdHMsCitaRVhURVJOIGludCBaRVhQT1JUIGRlZmxhdGVJbml0XyBPRigoel9zdHJlYW1wIHN0cm0sIGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2ZXJzaW9uLCBpbnQgc3RyZWFtX3NpemUpKTsKK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUluaXRfIE9GKCh6X3N0cmVhbXAgc3RybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2ZXJzaW9uLCBpbnQgc3RyZWFtX3NpemUpKTsKK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZUluaXQyXyBPRigoel9zdHJlYW1wIHN0cm0sIGludCAgbGV2ZWwsIGludCAgbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2luZG93Qml0cywgaW50IG1lbUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RyYXRlZ3ksIGNvbnN0IGNoYXIgKnZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdHJlYW1fc2l6ZSkpOworWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlSW5pdDJfIE9GKCh6X3N0cmVhbXAgc3RybSwgaW50ICB3aW5kb3dCaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2ZXJzaW9uLCBpbnQgc3RyZWFtX3NpemUpKTsKLSNkZWZpbmUgZGVmbGF0ZUluaXQoc3RybSwgbGV2ZWwpIFwKLSAgICAgICAgZGVmbGF0ZUluaXRfKChzdHJtKSwgKGxldmVsKSwgICAgICAgWkxJQl9WRVJTSU9OLCBzaXplb2Yoel9zdHJlYW0pKQotI2RlZmluZSBpbmZsYXRlSW5pdChzdHJtKSBcCi0gICAgICAgIGluZmxhdGVJbml0Xygoc3RybSksICAgICAgICAgICAgICAgIFpMSUJfVkVSU0lPTiwgc2l6ZW9mKHpfc3RyZWFtKSkKLSNkZWZpbmUgZGVmbGF0ZUluaXQyKHN0cm0sIGxldmVsLCBtZXRob2QsIHdpbmRvd0JpdHMsIG1lbUxldmVsLCBzdHJhdGVneSkgXAotICAgICAgICBkZWZsYXRlSW5pdDJfKChzdHJtKSwobGV2ZWwpLChtZXRob2QpLCh3aW5kb3dCaXRzKSwobWVtTGV2ZWwpLFwKLSAgICAgICAgICAgICAgICAgICAgICAoc3RyYXRlZ3kpLCAgICAgICAgICAgWkxJQl9WRVJTSU9OLCBzaXplb2Yoel9zdHJlYW0pKQotI2RlZmluZSBpbmZsYXRlSW5pdDIoc3RybSwgd2luZG93Qml0cykgXAotICAgICAgICBpbmZsYXRlSW5pdDJfKChzdHJtKSwgKHdpbmRvd0JpdHMpLCBaTElCX1ZFUlNJT04sIHNpemVvZih6X3N0cmVhbSkpCitaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVCYWNrSW5pdF8gT0YoKHpfc3RyZWFtcCBzdHJtLCBpbnQgd2luZG93Qml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBGQVIgKndpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0cmVhbV9zaXplKSk7CisjaWZkZWYgWl9QUkVGSVhfU0VUCisjICBkZWZpbmUgel9kZWZsYXRlSW5pdChzdHJtLCBsZXZlbCkgXAorICAgICAgICAgIGRlZmxhdGVJbml0Xygoc3RybSksIChsZXZlbCksIFpMSUJfVkVSU0lPTiwgKGludClzaXplb2Yoel9zdHJlYW0pKQorIyAgZGVmaW5lIHpfaW5mbGF0ZUluaXQoc3RybSkgXAorICAgICAgICAgIGluZmxhdGVJbml0Xygoc3RybSksIFpMSUJfVkVSU0lPTiwgKGludClzaXplb2Yoel9zdHJlYW0pKQorIyAgZGVmaW5lIHpfZGVmbGF0ZUluaXQyKHN0cm0sIGxldmVsLCBtZXRob2QsIHdpbmRvd0JpdHMsIG1lbUxldmVsLCBzdHJhdGVneSkgXAorICAgICAgICAgIGRlZmxhdGVJbml0Ml8oKHN0cm0pLChsZXZlbCksKG1ldGhvZCksKHdpbmRvd0JpdHMpLChtZW1MZXZlbCksXAorICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmF0ZWd5KSwgWkxJQl9WRVJTSU9OLCAoaW50KXNpemVvZih6X3N0cmVhbSkpCisjICBkZWZpbmUgel9pbmZsYXRlSW5pdDIoc3RybSwgd2luZG93Qml0cykgXAorICAgICAgICAgIGluZmxhdGVJbml0Ml8oKHN0cm0pLCAod2luZG93Qml0cyksIFpMSUJfVkVSU0lPTiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgKGludClzaXplb2Yoel9zdHJlYW0pKQorIyAgZGVmaW5lIHpfaW5mbGF0ZUJhY2tJbml0KHN0cm0sIHdpbmRvd0JpdHMsIHdpbmRvdykgXAorICAgICAgICAgIGluZmxhdGVCYWNrSW5pdF8oKHN0cm0pLCAod2luZG93Qml0cyksICh3aW5kb3cpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBaTElCX1ZFUlNJT04sIChpbnQpc2l6ZW9mKHpfc3RyZWFtKSkKKyNlbHNlCisjICBkZWZpbmUgZGVmbGF0ZUluaXQoc3RybSwgbGV2ZWwpIFwKKyAgICAgICAgICBkZWZsYXRlSW5pdF8oKHN0cm0pLCAobGV2ZWwpLCBaTElCX1ZFUlNJT04sIChpbnQpc2l6ZW9mKHpfc3RyZWFtKSkKKyMgIGRlZmluZSBpbmZsYXRlSW5pdChzdHJtKSBcCisgICAgICAgICAgaW5mbGF0ZUluaXRfKChzdHJtKSwgWkxJQl9WRVJTSU9OLCAoaW50KXNpemVvZih6X3N0cmVhbSkpCisjICBkZWZpbmUgZGVmbGF0ZUluaXQyKHN0cm0sIGxldmVsLCBtZXRob2QsIHdpbmRvd0JpdHMsIG1lbUxldmVsLCBzdHJhdGVneSkgXAorICAgICAgICAgIGRlZmxhdGVJbml0Ml8oKHN0cm0pLChsZXZlbCksKG1ldGhvZCksKHdpbmRvd0JpdHMpLChtZW1MZXZlbCksXAorICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmF0ZWd5KSwgWkxJQl9WRVJTSU9OLCAoaW50KXNpemVvZih6X3N0cmVhbSkpCisjICBkZWZpbmUgaW5mbGF0ZUluaXQyKHN0cm0sIHdpbmRvd0JpdHMpIFwKKyAgICAgICAgICBpbmZsYXRlSW5pdDJfKChzdHJtKSwgKHdpbmRvd0JpdHMpLCBaTElCX1ZFUlNJT04sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpc2l6ZW9mKHpfc3RyZWFtKSkKKyMgIGRlZmluZSBpbmZsYXRlQmFja0luaXQoc3RybSwgd2luZG93Qml0cywgd2luZG93KSBcCisgICAgICAgICAgaW5mbGF0ZUJhY2tJbml0Xygoc3RybSksICh3aW5kb3dCaXRzKSwgKHdpbmRvdyksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFpMSUJfVkVSU0lPTiwgKGludClzaXplb2Yoel9zdHJlYW0pKQorI2VuZGlmCiAKKyNlbHNlICAvKiBaX0ZSRUVUWVBFICovCisKKworWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlSW5pdDJfIE9GKCh6X3N0cmVhbXAgc3RybSwgaW50ICB3aW5kb3dCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2ZXJzaW9uLCBpbnQgc3RyZWFtX3NpemUpKTsKKworIyAgZGVmaW5lIGluZmxhdGVJbml0MihzdHJtLCB3aW5kb3dCaXRzKSBcCisgICAgICAgICAgaW5mbGF0ZUluaXQyXygoc3RybSksICh3aW5kb3dCaXRzKSwgWkxJQl9WRVJTSU9OLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAoaW50KXNpemVvZih6X3N0cmVhbSkpCisKKyNlbmRpZiAgLyogWl9GUkVFVFlQRSAqLworCisKKyNpZm5kZWYgWl9TT0xPCisKKy8qIGd6Z2V0YygpIG1hY3JvIGFuZCBpdHMgc3VwcG9ydGluZyBmdW5jdGlvbiBhbmQgZXhwb3NlZCBkYXRhIHN0cnVjdHVyZS4gIE5vdGUKKyAqIHRoYXQgdGhlIHJlYWwgaW50ZXJuYWwgc3RhdGUgaXMgbXVjaCBsYXJnZXIgdGhhbiB0aGUgZXhwb3NlZCBzdHJ1Y3R1cmUuCisgKiBUaGlzIGFiYnJldmlhdGVkIHN0cnVjdHVyZSBleHBvc2VzIGp1c3QgZW5vdWdoIGZvciB0aGUgZ3pnZXRjKCkgbWFjcm8uICBUaGUKKyAqIHVzZXIgc2hvdWxkIG5vdCBtZXNzIHdpdGggdGhlc2UgZXhwb3NlZCBlbGVtZW50cywgc2luY2UgdGhlaXIgbmFtZXMgb3IKKyAqIGJlaGF2aW9yIGNvdWxkIGNoYW5nZSBpbiB0aGUgZnV0dXJlLCBwZXJoYXBzIGV2ZW4gY2FwcmljaW91c2x5LiAgVGhleSBjYW4KKyAqIG9ubHkgYmUgdXNlZCBieSB0aGUgZ3pnZXRjKCkgbWFjcm8uICBZb3UgaGF2ZSBiZWVuIHdhcm5lZC4KKyAqLworc3RydWN0IGd6RmlsZV9zIHsKKyAgICB1bnNpZ25lZCBoYXZlOworICAgIHVuc2lnbmVkIGNoYXIgKm5leHQ7CisgICAgel9vZmY2NF90IHBvczsKK307CitaRVhURVJOIGludCBaRVhQT1JUIGd6Z2V0Y18gT0YoKGd6RmlsZSBmaWxlKSk7ICAvKiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovCisjaWZkZWYgWl9QUkVGSVhfU0VUCisjICB1bmRlZiB6X2d6Z2V0YworIyAgZGVmaW5lIHpfZ3pnZXRjKGcpIFwKKyAgICAgICAgICAoKGcpLT5oYXZlID8gKChnKS0+aGF2ZS0tLCAoZyktPnBvcysrLCAqKChnKS0+bmV4dCkrKykgOiAoZ3pnZXRjKShnKSkKKyNlbHNlCisjICBkZWZpbmUgZ3pnZXRjKGcpIFwKKyAgICAgICAgICAoKGcpLT5oYXZlID8gKChnKS0+aGF2ZS0tLCAoZyktPnBvcysrLCAqKChnKS0+bmV4dCkrKykgOiAoZ3pnZXRjKShnKSkKKyNlbmRpZgorCisvKiBwcm92aWRlIDY0LWJpdCBvZmZzZXQgZnVuY3Rpb25zIGlmIF9MQVJHRUZJTEU2NF9TT1VSQ0UgZGVmaW5lZCwgYW5kL29yCisgKiBjaGFuZ2UgdGhlIHJlZ3VsYXIgZnVuY3Rpb25zIHRvIDY0IGJpdHMgaWYgX0ZJTEVfT0ZGU0VUX0JJVFMgaXMgNjQgKGlmCisgKiBib3RoIGFyZSB0cnVlLCB0aGUgYXBwbGljYXRpb24gZ2V0cyB0aGUgKjY0IGZ1bmN0aW9ucywgYW5kIHRoZSByZWd1bGFyCisgKiBmdW5jdGlvbnMgYXJlIGNoYW5nZWQgdG8gNjQgYml0cykgLS0gaW4gY2FzZSB0aGVzZSBhcmUgc2V0IG9uIHN5c3RlbXMKKyAqIHdpdGhvdXQgbGFyZ2UgZmlsZSBzdXBwb3J0LCBfTEZTNjRfTEFSR0VGSUxFIG11c3QgYWxzbyBiZSB0cnVlCisgKi8KKyNpZmRlZiBaX0xBUkdFNjQKKyAgIFpFWFRFUk4gZ3pGaWxlIFpFWFBPUlQgZ3pvcGVuNjQgT0YoKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKSk7CisgICBaRVhURVJOIHpfb2ZmNjRfdCBaRVhQT1JUIGd6c2VlazY0IE9GKChnekZpbGUsIHpfb2ZmNjRfdCwgaW50KSk7CisgICBaRVhURVJOIHpfb2ZmNjRfdCBaRVhQT1JUIGd6dGVsbDY0IE9GKChnekZpbGUpKTsKKyAgIFpFWFRFUk4gel9vZmY2NF90IFpFWFBPUlQgZ3pvZmZzZXQ2NCBPRigoZ3pGaWxlKSk7CisgICBaRVhURVJOIHVMb25nIFpFWFBPUlQgYWRsZXIzMl9jb21iaW5lNjQgT0YoKHVMb25nLCB1TG9uZywgel9vZmY2NF90KSk7CisgICBaRVhURVJOIHVMb25nIFpFWFBPUlQgY3JjMzJfY29tYmluZTY0IE9GKCh1TG9uZywgdUxvbmcsIHpfb2ZmNjRfdCkpOworICAgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGNyYzMyX2NvbWJpbmVfZ2VuNjQgT0YoKHpfb2ZmNjRfdCkpOworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChaTElCX0lOVEVSTkFMKSAmJiBkZWZpbmVkKFpfV0FOVDY0KQorIyAgaWZkZWYgWl9QUkVGSVhfU0VUCisjICAgIGRlZmluZSB6X2d6b3BlbiB6X2d6b3BlbjY0CisjICAgIGRlZmluZSB6X2d6c2VlayB6X2d6c2VlazY0CisjICAgIGRlZmluZSB6X2d6dGVsbCB6X2d6dGVsbDY0CisjICAgIGRlZmluZSB6X2d6b2Zmc2V0IHpfZ3pvZmZzZXQ2NAorIyAgICBkZWZpbmUgel9hZGxlcjMyX2NvbWJpbmUgel9hZGxlcjMyX2NvbWJpbmU2NAorIyAgICBkZWZpbmUgel9jcmMzMl9jb21iaW5lIHpfY3JjMzJfY29tYmluZTY0CisjICAgIGRlZmluZSB6X2NyYzMyX2NvbWJpbmVfZ2VuIHpfY3JjMzJfY29tYmluZV9nZW42NAorIyAgZWxzZQorIyAgICBkZWZpbmUgZ3pvcGVuIGd6b3BlbjY0CisjICAgIGRlZmluZSBnenNlZWsgZ3pzZWVrNjQKKyMgICAgZGVmaW5lIGd6dGVsbCBnenRlbGw2NAorIyAgICBkZWZpbmUgZ3pvZmZzZXQgZ3pvZmZzZXQ2NAorIyAgICBkZWZpbmUgYWRsZXIzMl9jb21iaW5lIGFkbGVyMzJfY29tYmluZTY0CisjICAgIGRlZmluZSBjcmMzMl9jb21iaW5lIGNyYzMyX2NvbWJpbmU2NAorIyAgICBkZWZpbmUgY3JjMzJfY29tYmluZV9nZW4gY3JjMzJfY29tYmluZV9nZW42NAorIyAgZW5kaWYKKyMgIGlmbmRlZiBaX0xBUkdFNjQKKyAgICAgWkVYVEVSTiBnekZpbGUgWkVYUE9SVCBnem9wZW42NCBPRigoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopKTsKKyAgICAgWkVYVEVSTiB6X29mZl90IFpFWFBPUlQgZ3pzZWVrNjQgT0YoKGd6RmlsZSwgel9vZmZfdCwgaW50KSk7CisgICAgIFpFWFRFUk4gel9vZmZfdCBaRVhQT1JUIGd6dGVsbDY0IE9GKChnekZpbGUpKTsKKyAgICAgWkVYVEVSTiB6X29mZl90IFpFWFBPUlQgZ3pvZmZzZXQ2NCBPRigoZ3pGaWxlKSk7CisgICAgIFpFWFRFUk4gdUxvbmcgWkVYUE9SVCBhZGxlcjMyX2NvbWJpbmU2NCBPRigodUxvbmcsIHVMb25nLCB6X29mZl90KSk7CisgICAgIFpFWFRFUk4gdUxvbmcgWkVYUE9SVCBjcmMzMl9jb21iaW5lNjQgT0YoKHVMb25nLCB1TG9uZywgel9vZmZfdCkpOworICAgICBaRVhURVJOIHVMb25nIFpFWFBPUlQgY3JjMzJfY29tYmluZV9nZW42NCBPRigoel9vZmZfdCkpOworIyAgZW5kaWYKKyNlbHNlCisgICBaRVhURVJOIGd6RmlsZSBaRVhQT1JUIGd6b3BlbiBPRigoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopKTsKKyAgIFpFWFRFUk4gel9vZmZfdCBaRVhQT1JUIGd6c2VlayBPRigoZ3pGaWxlLCB6X29mZl90LCBpbnQpKTsKKyAgIFpFWFRFUk4gel9vZmZfdCBaRVhQT1JUIGd6dGVsbCBPRigoZ3pGaWxlKSk7CisgICBaRVhURVJOIHpfb2ZmX3QgWkVYUE9SVCBnem9mZnNldCBPRigoZ3pGaWxlKSk7CisgICBaRVhURVJOIHVMb25nIFpFWFBPUlQgYWRsZXIzMl9jb21iaW5lIE9GKCh1TG9uZywgdUxvbmcsIHpfb2ZmX3QpKTsKKyAgIFpFWFRFUk4gdUxvbmcgWkVYUE9SVCBjcmMzMl9jb21iaW5lIE9GKCh1TG9uZywgdUxvbmcsIHpfb2ZmX3QpKTsKKyAgIFpFWFRFUk4gdUxvbmcgWkVYUE9SVCBjcmMzMl9jb21iaW5lX2dlbiBPRigoel9vZmZfdCkpOworI2VuZGlmCisKKyNlbHNlIC8qIFpfU09MTyAqLworCisjaWZuZGVmIFpfRlJFRVRZUEUKKyAgIFpFWFRFUk4gdUxvbmcgWkVYUE9SVCBhZGxlcjMyX2NvbWJpbmUgT0YoKHVMb25nLCB1TG9uZywgel9vZmZfdCkpOworICAgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGNyYzMyX2NvbWJpbmUgT0YoKHVMb25nLCB1TG9uZywgel9vZmZfdCkpOworICAgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGNyYzMyX2NvbWJpbmVfZ2VuIE9GKCh6X29mZl90KSk7CisjZW5kaWYKKworI2VuZGlmIC8qICFaX1NPTE8gKi8KKworLyogdW5kb2N1bWVudGVkIGZ1bmN0aW9ucyAqLworI2lmbmRlZiBaX0ZSRUVUWVBFCitaRVhURVJOIGNvbnN0IGNoYXIgICAqIFpFWFBPUlQgekVycm9yICAgICAgICAgICBPRigoaW50KSk7CitaRVhURVJOIGludCAgICAgICAgICAgIFpFWFBPUlQgaW5mbGF0ZVN5bmNQb2ludCBPRigoel9zdHJlYW1wKSk7CitaRVhURVJOIGNvbnN0IHpfY3JjX3QgRkFSICogWkVYUE9SVCBnZXRfY3JjX3RhYmxlICAgIE9GKCh2b2lkKSk7CitaRVhURVJOIGludCAgICAgICAgICAgIFpFWFBPUlQgaW5mbGF0ZVVuZGVybWluZSBPRigoel9zdHJlYW1wLCBpbnQpKTsKK1pFWFRFUk4gaW50ICAgICAgICAgICAgWkVYUE9SVCBpbmZsYXRlVmFsaWRhdGUgT0YoKHpfc3RyZWFtcCwgaW50KSk7CitaRVhURVJOIHVuc2lnbmVkIGxvbmcgIFpFWFBPUlQgaW5mbGF0ZUNvZGVzVXNlZCBPRigoel9zdHJlYW1wKSk7CisjZW5kaWYgIC8qICFaX0ZSRUVUWVBFICovCitaRVhURVJOIGludCAgICAgICAgICAgIFpFWFBPUlQgaW5mbGF0ZVJlc2V0S2VlcCBPRigoel9zdHJlYW1wKSk7CisjaWZuZGVmIFpfRlJFRVRZUEUKK1pFWFRFUk4gaW50ICAgICAgICAgICAgWkVYUE9SVCBkZWZsYXRlUmVzZXRLZWVwIE9GKCh6X3N0cmVhbXApKTsKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoWl9TT0xPKQorWkVYVEVSTiBnekZpbGUgICAgICAgICBaRVhQT1JUIGd6b3Blbl93IE9GKChjb25zdCB3Y2hhcl90ICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptb2RlKSk7CisjZW5kaWYKKyNpZiBkZWZpbmVkKFNUREMpIHx8IGRlZmluZWQoWl9IQVZFX1NUREFSR19IKQorIyAgaWZuZGVmIFpfU09MTworWkVYVEVSTiBpbnQgICAgICAgICAgICBaRVhQT1JUVkEgZ3p2cHJpbnRmIFpfQVJHKChnekZpbGUgZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0IHZhKSk7CisjICBlbmRpZgorI2VuZGlmCisjZW5kaWYgIC8qICFaX0ZSRUVUWVBFICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCiAKLSNlbmRpZiAvKiBfWkxJQl9IICovCisjZW5kaWYgLyogWkxJQl9IICovCmRpZmYgLS1naXQgYS9zcmMvZ3ppcC96dXRpbC5jIGIvc3JjL2d6aXAvenV0aWwuYwppbmRleCA3YWQwYzFmLi41NDI3MDZjIDEwMDY0NAotLS0gYS9zcmMvZ3ppcC96dXRpbC5jCisrKyBiL3NyYy9nemlwL3p1dGlsLmMKQEAgLTEsMjMgKzEsMTYxIEBACiAvKiB6dXRpbC5jIC0tIHRhcmdldCBkZXBlbmRlbnQgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHRoZSBjb21wcmVzc2lvbiBsaWJyYXJ5Ci0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMiBKZWFuLWxvdXAgR2FpbGx5LgorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMTcgSmVhbi1sb3VwIEdhaWxseQogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAogICovCiAKIC8qIEAoIykgJElkJCAqLwogCiAjaW5jbHVkZSAienV0aWwuaCIKLQotI2lmbmRlZiBTVERDCi1leHRlcm4gdm9pZCBleGl0IE9GKChpbnQpKTsKKyNpZm5kZWYgWl9TT0xPCisjICBpbmNsdWRlICJnemd1dHMuaCIKICNlbmRpZgogCisjaWZuZGVmIFpfRlJFRVRZUEUKKworel9jb25zdCBjaGFyICogY29uc3Qgel9lcnJtc2dbMTBdID0geworICAgICh6X2NvbnN0IGNoYXIgKikibmVlZCBkaWN0aW9uYXJ5IiwgICAgIC8qIFpfTkVFRF9ESUNUICAgICAgIDIgICovCisgICAgKHpfY29uc3QgY2hhciAqKSJzdHJlYW0gZW5kIiwgICAgICAgICAgLyogWl9TVFJFQU1fRU5EICAgICAgMSAgKi8KKyAgICAoel9jb25zdCBjaGFyICopIiIsICAgICAgICAgICAgICAgICAgICAvKiBaX09LICAgICAgICAgICAgICAwICAqLworICAgICh6X2NvbnN0IGNoYXIgKikiZmlsZSBlcnJvciIsICAgICAgICAgIC8qIFpfRVJSTk8gICAgICAgICAoLTEpICovCisgICAgKHpfY29uc3QgY2hhciAqKSJzdHJlYW0gZXJyb3IiLCAgICAgICAgLyogWl9TVFJFQU1fRVJST1IgICgtMikgKi8KKyAgICAoel9jb25zdCBjaGFyICopImRhdGEgZXJyb3IiLCAgICAgICAgICAvKiBaX0RBVEFfRVJST1IgICAgKC0zKSAqLworICAgICh6X2NvbnN0IGNoYXIgKikiaW5zdWZmaWNpZW50IG1lbW9yeSIsIC8qIFpfTUVNX0VSUk9SICAgICAoLTQpICovCisgICAgKHpfY29uc3QgY2hhciAqKSJidWZmZXIgZXJyb3IiLCAgICAgICAgLyogWl9CVUZfRVJST1IgICAgICgtNSkgKi8KKyAgICAoel9jb25zdCBjaGFyICopImluY29tcGF0aWJsZSB2ZXJzaW9uIiwvKiBaX1ZFUlNJT05fRVJST1IgKC02KSAqLworICAgICh6X2NvbnN0IGNoYXIgKikiIgorfTsKKworCitjb25zdCBjaGFyICogWkVYUE9SVCB6bGliVmVyc2lvbigpCit7CisgICAgcmV0dXJuIFpMSUJfVkVSU0lPTjsKK30KKwordUxvbmcgWkVYUE9SVCB6bGliQ29tcGlsZUZsYWdzKCkKK3sKKyAgICB1TG9uZyBmbGFnczsKKworICAgIGZsYWdzID0gMDsKKyAgICBzd2l0Y2ggKChpbnQpKHNpemVvZih1SW50KSkpIHsKKyAgICBjYXNlIDI6ICAgICBicmVhazsKKyAgICBjYXNlIDQ6ICAgICBmbGFncyArPSAxOyAgICAgYnJlYWs7CisgICAgY2FzZSA4OiAgICAgZmxhZ3MgKz0gMjsgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6ICAgIGZsYWdzICs9IDM7CisgICAgfQorICAgIHN3aXRjaCAoKGludCkoc2l6ZW9mKHVMb25nKSkpIHsKKyAgICBjYXNlIDI6ICAgICBicmVhazsKKyAgICBjYXNlIDQ6ICAgICBmbGFncyArPSAxIDw8IDI7ICAgICAgICBicmVhazsKKyAgICBjYXNlIDg6ICAgICBmbGFncyArPSAyIDw8IDI7ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OiAgICBmbGFncyArPSAzIDw8IDI7CisgICAgfQorICAgIHN3aXRjaCAoKGludCkoc2l6ZW9mKHZvaWRwZikpKSB7CisgICAgY2FzZSAyOiAgICAgYnJlYWs7CisgICAgY2FzZSA0OiAgICAgZmxhZ3MgKz0gMSA8PCA0OyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA4OiAgICAgZmxhZ3MgKz0gMiA8PCA0OyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDogICAgZmxhZ3MgKz0gMyA8PCA0OworICAgIH0KKyAgICBzd2l0Y2ggKChpbnQpKHNpemVvZih6X29mZl90KSkpIHsKKyAgICBjYXNlIDI6ICAgICBicmVhazsKKyAgICBjYXNlIDQ6ICAgICBmbGFncyArPSAxIDw8IDY7ICAgICAgICBicmVhazsKKyAgICBjYXNlIDg6ICAgICBmbGFncyArPSAyIDw8IDY7ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OiAgICBmbGFncyArPSAzIDw8IDY7CisgICAgfQorI2lmZGVmIFpMSUJfREVCVUcKKyAgICBmbGFncyArPSAxIDw8IDg7CisjZW5kaWYKKyAgICAvKgorI2lmIGRlZmluZWQoQVNNVikgfHwgZGVmaW5lZChBU01JTkYpCisgICAgZmxhZ3MgKz0gMSA8PCA5OworI2VuZGlmCisgICAgICovCisjaWZkZWYgWkxJQl9XSU5BUEkKKyAgICBmbGFncyArPSAxIDw8IDEwOworI2VuZGlmCisjaWZkZWYgQlVJTERGSVhFRAorICAgIGZsYWdzICs9IDEgPDwgMTI7CisjZW5kaWYKKyNpZmRlZiBEWU5BTUlDX0NSQ19UQUJMRQorICAgIGZsYWdzICs9IDEgPDwgMTM7CisjZW5kaWYKKyNpZmRlZiBOT19HWkNPTVBSRVNTCisgICAgZmxhZ3MgKz0gMUwgPDwgMTY7CisjZW5kaWYKKyNpZmRlZiBOT19HWklQCisgICAgZmxhZ3MgKz0gMUwgPDwgMTc7CisjZW5kaWYKKyNpZmRlZiBQS1pJUF9CVUdfV09SS0FST1VORAorICAgIGZsYWdzICs9IDFMIDw8IDIwOworI2VuZGlmCisjaWZkZWYgRkFTVEVTVAorICAgIGZsYWdzICs9IDFMIDw8IDIxOworI2VuZGlmCisjaWYgZGVmaW5lZChTVERDKSB8fCBkZWZpbmVkKFpfSEFWRV9TVERBUkdfSCkKKyMgIGlmZGVmIE5PX3ZzbnByaW50ZgorICAgIGZsYWdzICs9IDFMIDw8IDI1OworIyAgICBpZmRlZiBIQVNfdnNwcmludGZfdm9pZAorICAgIGZsYWdzICs9IDFMIDw8IDI2OworIyAgICBlbmRpZgorIyAgZWxzZQorIyAgICBpZmRlZiBIQVNfdnNucHJpbnRmX3ZvaWQKKyAgICBmbGFncyArPSAxTCA8PCAyNjsKKyMgICAgZW5kaWYKKyMgIGVuZGlmCisjZWxzZQorICAgIGZsYWdzICs9IDFMIDw8IDI0OworIyAgaWZkZWYgTk9fc25wcmludGYKKyAgICBmbGFncyArPSAxTCA8PCAyNTsKKyMgICAgaWZkZWYgSEFTX3NwcmludGZfdm9pZAorICAgIGZsYWdzICs9IDFMIDw8IDI2OworIyAgICBlbmRpZgorIyAgZWxzZQorIyAgICBpZmRlZiBIQVNfc25wcmludGZfdm9pZAorICAgIGZsYWdzICs9IDFMIDw8IDI2OworIyAgICBlbmRpZgorIyAgZW5kaWYKKyNlbmRpZgorICAgIHJldHVybiBmbGFnczsKK30KKworI2lmZGVmIFpMSUJfREVCVUcKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyMgIGlmbmRlZiB2ZXJib3NlCisjICAgIGRlZmluZSB2ZXJib3NlIDAKKyMgIGVuZGlmCitpbnQgWkxJQl9JTlRFUk5BTCB6X3ZlcmJvc2UgPSB2ZXJib3NlOworCit2b2lkIFpMSUJfSU5URVJOQUwgel9lcnJvcigKKyAgICBjaGFyICptKQoreworICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG0pOworICAgIGV4aXQoMSk7Cit9CisjZW5kaWYKKworLyogZXhwb3J0ZWQgdG8gYWxsb3cgY29udmVyc2lvbiBvZiBlcnJvciBjb2RlIHRvIHN0cmluZyBmb3IgY29tcHJlc3MoKSBhbmQKKyAqIHVuY29tcHJlc3MoKQorICovCitjb25zdCBjaGFyICogWkVYUE9SVCB6RXJyb3IoCisgICAgaW50IGVycikKK3sKKyAgICByZXR1cm4gRVJSX01TRyhlcnIpOworfQorCisjZW5kaWYgIC8qICFaX0ZSRUVUWVBFICovCisKKyNpZiBkZWZpbmVkKF9XSU4zMl9XQ0UpICYmIF9XSU4zMl9XQ0UgPCAweDgwMAorICAgIC8qIFRoZSBvbGRlciBNaWNyb3NvZnQgQyBSdW4tVGltZSBMaWJyYXJ5IGZvciBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZQorICAgICAqIGVycm5vLiAgV2UgZGVmaW5lIGl0IGFzIGEgZ2xvYmFsIHZhcmlhYmxlIHRvIHNpbXBsaWZ5IHBvcnRpbmcuCisgICAgICogSXRzIHZhbHVlIGlzIGFsd2F5cyAwIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuCisgICAgICovCisgICAgaW50IGVycm5vID0gMDsKKyNlbmRpZgogCiAjaWZuZGVmIEhBVkVfTUVNQ1BZCiAKLXZvaWQgem1lbWNweShkZXN0LCBzb3VyY2UsIGxlbikKLSAgICBCeXRlZiogZGVzdDsKLSAgICBjb25zdCBCeXRlZiogc291cmNlOwotICAgIHVJbnQgIGxlbjsKK3ZvaWQgWkxJQl9JTlRFUk5BTCB6bWVtY3B5KAorICAgIEJ5dGVmKiBkZXN0LAorICAgIGNvbnN0IEJ5dGVmKiBzb3VyY2UsCisgICAgdUludCAgbGVuKQogewogICAgIGlmIChsZW4gPT0gMCkgcmV0dXJuOwogICAgIGRvIHsKQEAgLTI1LDEwICsxNjMsMTIgQEAKICAgICB9IHdoaWxlICgtLWxlbiAhPSAwKTsKIH0KIAotaW50IHptZW1jbXAoczEsIHMyLCBsZW4pCi0gICAgY29uc3QgQnl0ZWYqIHMxOwotICAgIGNvbnN0IEJ5dGVmKiBzMjsKLSAgICB1SW50ICBsZW47CisjaWZuZGVmIFpfRlJFRVRZUEUKKworaW50IFpMSUJfSU5URVJOQUwgem1lbWNtcCgKKyAgICBjb25zdCBCeXRlZiogczEsCisgICAgY29uc3QgQnl0ZWYqIHMyLAorICAgIHVJbnQgIGxlbikKIHsKICAgICB1SW50IGo7CiAKQEAgLTM4LDIyICsxNzgsMjUgQEAKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCB6bWVtemVybyhkZXN0LCBsZW4pCi0gICAgQnl0ZWYqIGRlc3Q7Ci0gICAgdUludCAgbGVuOwordm9pZCBaTElCX0lOVEVSTkFMIHptZW16ZXJvKAorICAgIEJ5dGVmKiBkZXN0LAorICAgIHVJbnQgIGxlbikKIHsKICAgICBpZiAobGVuID09IDApIHJldHVybjsKICAgICBkbyB7CiAgICAgICAgICpkZXN0KysgPSAwOyAgLyogPz8/IHRvIGJlIHVucm9sbGVkICovCiAgICAgfSB3aGlsZSAoLS1sZW4gIT0gMCk7CiB9CisjZW5kaWYgIC8qICFaX0ZSRUVUWVBFICovCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoIE1TRE9TICkgJiYgZGVmaW5lZCggX19UVVJCT0NfXyApICYmICFkZWZpbmVkKCBNWV9aQ0FMTE9DICkKLSNpZiAoZGVmaW5lZCggX19CT1JMQU5EQ19fKSB8fCAhZGVmaW5lZChTTUFMTF9NRURJVU0pKSAmJiAhZGVmaW5lZChfXzMyQklUX18pCi0vKiBTbWFsbCBhbmQgbWVkaXVtIG1vZGVsIGluIFR1cmJvIEMgYXJlIGZvciBub3cgbGltaXRlZCB0byBuZWFyIGFsbG9jYXRpb24KLSAqIHdpdGggcmVkdWNlZCBNQVhfV0JJVFMgYW5kIE1BWF9NRU1fTEVWRUwKLSAqLworI2lmbmRlZiBaX1NPTE8KKworI2lmZGVmIFNZUzE2QklUCisKKyNpZmRlZiBfX1RVUkJPQ19fCisvKiBUdXJibyBDIGluIDE2LWJpdCBtb2RlICovCisKICMgIGRlZmluZSBNWV9aQ0FMTE9DCiAKIC8qIFR1cmJvIEMgbWFsbG9jKCkgZG9lcyBub3QgYWxsb3cgZHluYW1pYyBhbGxvY2F0aW9uIG9mIDY0SyBieXRlcwpAQCAtODAsMTEgKzIyMywxMyBAQAogICogYSBwcm90ZWN0ZWQgc3lzdGVtIGxpa2UgT1MvMi4gVXNlIE1pY3Jvc29mdCBDIGluc3RlYWQuCiAgKi8KIAotdm9pZHBmIHpjYWxsb2MgKHZvaWRwZiBvcGFxdWUsIHVuc2lnbmVkIGl0ZW1zLCB1bnNpZ25lZCBzaXplKQordm9pZHBmIFpMSUJfSU5URVJOQUwgemNhbGxvYyh2b2lkcGYgb3BhcXVlLCB1bnNpZ25lZCBpdGVtcywgdW5zaWduZWQgc2l6ZSkKIHsKLSAgICB2b2lkcGYgYnVmID0gb3BhcXVlOyAvKiBqdXN0IHRvIG1ha2Ugc29tZSBjb21waWxlcnMgaGFwcHkgKi8KKyAgICB2b2lkcGYgYnVmOwogICAgIHVsZyBic2l6ZSA9ICh1bGcpaXRlbXMqc2l6ZTsKIAorICAgICh2b2lkKW9wYXF1ZTsKKwogICAgIC8qIElmIHdlIGFsbG9jYXRlIGxlc3MgdGhhbiA2NTUyMCBieXRlcywgd2UgYXNzdW1lIHRoYXQgZmFybWFsbG9jCiAgICAgICogd2lsbCByZXR1cm4gYSB1c2FibGUgcG9pbnRlciB3aGljaCBkb2Vzbid0IGhhdmUgdG8gYmUgbm9ybWFsaXplZC4KICAgICAgKi8KQEAgLTEwNCw5ICsyNDksMTIgQEAKICAgICByZXR1cm4gYnVmOwogfQogCi12b2lkICB6Y2ZyZWUgKHZvaWRwZiBvcGFxdWUsIHZvaWRwZiBwdHIpCit2b2lkIFpMSUJfSU5URVJOQUwgemNmcmVlKHZvaWRwZiBvcGFxdWUsIHZvaWRwZiBwdHIpCiB7CiAgICAgaW50IG47CisKKyAgICAodm9pZClvcGFxdWU7CisKICAgICBpZiAoKih1c2gqKSZwdHIgIT0gMCkgeyAvKiBvYmplY3QgPCA2NEsgKi8KICAgICAgICAgZmFyZnJlZShwdHIpOwogICAgICAgICByZXR1cm47CkBAIC0xMjIsMTQgKzI3MCwxMyBAQAogICAgICAgICBuZXh0X3B0ci0tOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHB0ciA9IG9wYXF1ZTsgLyoganVzdCB0byBtYWtlIHNvbWUgY29tcGlsZXJzIGhhcHB5ICovCiAgICAgQXNzZXJ0KDAsICJ6Y2ZyZWU6IHB0ciBub3QgZm91bmQiKTsKIH0KLSNlbmRpZgotI2VuZGlmIC8qIE1TRE9TICYmIF9fVFVSQk9DX18gKi8KKworI2VuZGlmIC8qIF9fVFVSQk9DX18gKi8KIAogCi0jaWYgZGVmaW5lZChNX0k4NikgJiYgIWRlZmluZWQoX18zMkJJVF9fKSAmJiAhZGVmaW5lZCggTVlfWkNBTExPQyApCisjaWZkZWYgTV9JODYKIC8qIE1pY3Jvc29mdCBDIGluIDE2LWJpdCBtb2RlICovCiAKICMgIGRlZmluZSBNWV9aQ0FMTE9DCkBAIC0xMzksNDMgKzI4Niw0OSBAQAogIyAgZGVmaW5lIF9oZnJlZSAgIGhmcmVlCiAjZW5kaWYKIAotdm9pZHBmIHpjYWxsb2MgKHZvaWRwZiBvcGFxdWUsIHVuc2lnbmVkIGl0ZW1zLCB1bnNpZ25lZCBzaXplKQordm9pZHBmIFpMSUJfSU5URVJOQUwgemNhbGxvYyh2b2lkcGYgb3BhcXVlLCB1SW50IGl0ZW1zLCB1SW50IHNpemUpCiB7Ci0gICAgaWYgKG9wYXF1ZSkgb3BhcXVlID0gMDsgLyogdG8gbWFrZSBjb21waWxlciBoYXBweSAqLworICAgICh2b2lkKW9wYXF1ZTsKICAgICByZXR1cm4gX2hhbGxvYygobG9uZylpdGVtcywgc2l6ZSk7CiB9CiAKLXZvaWQgIHpjZnJlZSAodm9pZHBmIG9wYXF1ZSwgdm9pZHBmIHB0cikKK3ZvaWQgWkxJQl9JTlRFUk5BTCB6Y2ZyZWUodm9pZHBmIG9wYXF1ZSwgdm9pZHBmIHB0cikKIHsKLSAgICBpZiAob3BhcXVlKSBvcGFxdWUgPSAwOyAvKiB0byBtYWtlIGNvbXBpbGVyIGhhcHB5ICovCisgICAgKHZvaWQpb3BhcXVlOwogICAgIF9oZnJlZShwdHIpOwogfQogCi0jZW5kaWYgLyogTVNDICovCisjZW5kaWYgLyogTV9JODYgKi8KKworI2VuZGlmIC8qIFNZUzE2QklUICovCiAKIAogI2lmbmRlZiBNWV9aQ0FMTE9DIC8qIEFueSBzeXN0ZW0gd2l0aG91dCBhIHNwZWNpYWwgYWxsb2MgZnVuY3Rpb24gKi8KIAogI2lmbmRlZiBTVERDCi1leHRlcm4gdm9pZHAgIGZ0X3NjYWxsb2MgT0YoKHVJbnQgaXRlbXMsIHVJbnQgc2l6ZSkpOwotZXh0ZXJuIHZvaWQgICBmdF9zZnJlZSAgIE9GKCh2b2lkcGYgcHRyKSk7CitleHRlcm4gdm9pZHAgIG1hbGxvYyBPRigodUludCBzaXplKSk7CitleHRlcm4gdm9pZHAgIGNhbGxvYyBPRigodUludCBpdGVtcywgdUludCBzaXplKSk7CitleHRlcm4gdm9pZCAgIGZyZWUgICBPRigodm9pZHBmIHB0cikpOwogI2VuZGlmCiAKLXZvaWRwZiB6Y2FsbG9jIChvcGFxdWUsIGl0ZW1zLCBzaXplKQotICAgIHZvaWRwZiBvcGFxdWU7Ci0gICAgdW5zaWduZWQgaXRlbXM7Ci0gICAgdW5zaWduZWQgc2l6ZTsKK3ZvaWRwZiBaTElCX0lOVEVSTkFMIHpjYWxsb2MoCisgICAgdm9pZHBmIG9wYXF1ZSwKKyAgICB1bnNpZ25lZCBpdGVtcywKKyAgICB1bnNpZ25lZCBzaXplKQogewotICAgIGlmIChvcGFxdWUpIGl0ZW1zICs9IHNpemUgLSBzaXplOyAvKiBtYWtlIGNvbXBpbGVyIGhhcHB5ICovCi0gICAgcmV0dXJuICh2b2lkcGYpZnRfc2NhbGxvYyhpdGVtcywgc2l6ZSk7CisgICAgKHZvaWQpb3BhcXVlOworICAgIHJldHVybiBzaXplb2YodUludCkgPiAyID8gKHZvaWRwZiltYWxsb2MoaXRlbXMgKiBzaXplKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZHBmKWNhbGxvYyhpdGVtcywgc2l6ZSk7CiB9CiAKLXZvaWQgIHpjZnJlZSAob3BhcXVlLCBwdHIpCi0gICAgdm9pZHBmIG9wYXF1ZTsKLSAgICB2b2lkcGYgcHRyOwordm9pZCBaTElCX0lOVEVSTkFMIHpjZnJlZSgKKyAgICB2b2lkcGYgb3BhcXVlLAorICAgIHZvaWRwZiBwdHIpCiB7Ci0gICAgZnRfc2ZyZWUocHRyKTsKLSAgICBpZiAob3BhcXVlKSByZXR1cm47IC8qIG1ha2UgY29tcGlsZXIgaGFwcHkgKi8KKyAgICAodm9pZClvcGFxdWU7CisgICAgZnJlZShwdHIpOwogfQogCiAjZW5kaWYgLyogTVlfWkNBTExPQyAqLworCisjZW5kaWYgLyogIVpfU09MTyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2d6aXAvenV0aWwuaCBiL3NyYy9nemlwL3p1dGlsLmgKaW5kZXggYzk2ODhjZC4uMDU1YmE4YiAxMDA2NDQKLS0tIGEvc3JjL2d6aXAvenV0aWwuaAorKysgYi9zcmMvZ3ppcC96dXRpbC5oCkBAIC0xLDUgKzEsNSBAQAogLyogenV0aWwuaCAtLSBpbnRlcm5hbCBpbnRlcmZhY2UgYW5kIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkKLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDAyIEplYW4tbG91cCBHYWlsbHkuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAyMiBKZWFuLWxvdXAgR2FpbGx5LCBNYXJrIEFkbGVyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAgKi8KIApAQCAtMTAsMjYgKzEwLDMxIEBACiAKIC8qIEAoIykgJElkJCAqLwogCi0jaWZuZGVmIF9aX1VUSUxfSAotI2RlZmluZSBfWl9VVElMX0gKKyNpZm5kZWYgWlVUSUxfSAorI2RlZmluZSBaVVRJTF9ICisKKyNpZmRlZiBIQVZFX0hJRERFTgorIyAgZGVmaW5lIFpMSUJfSU5URVJOQUwgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImhpZGRlbiIpKSkKKyNlbHNlCisjICBkZWZpbmUgWkxJQl9JTlRFUk5BTAorI2VuZGlmCiAKICNpbmNsdWRlICJ6bGliLmgiCiAKLSNpZmRlZiBTVERDCi0jICBpbmNsdWRlIDxzdGRkZWYuaD4KKyNpZiBkZWZpbmVkKFNUREMpICYmICFkZWZpbmVkKFpfU09MTykKKyMgIGlmICEoZGVmaW5lZChfV0lOMzJfV0NFKSAmJiBkZWZpbmVkKF9NU0NfVkVSKSkKKyMgICAgaW5jbHVkZSA8c3RkZGVmLmg+CisjICBlbmRpZgogIyAgaW5jbHVkZSA8c3RyaW5nLmg+CiAjICBpbmNsdWRlIDxzdGRsaWIuaD4KICNlbmRpZgotI2lmZGVmIE5PX0VSUk5PX0gKLSAgICBleHRlcm4gaW50IGVycm5vOwotI2Vsc2UKLSMgICBpbmNsdWRlIDxlcnJuby5oPgotI2VuZGlmCiAKICNpZm5kZWYgbG9jYWwKICMgIGRlZmluZSBsb2NhbCBzdGF0aWMKICNlbmRpZgotLyogY29tcGlsZSB3aXRoIC1EbG9jYWwgaWYgeW91ciBkZWJ1Z2dlciBjYW4ndCBmaW5kIHN0YXRpYyBzeW1ib2xzICovCisvKiBzaW5jZSAic3RhdGljIiBpcyB1c2VkIHRvIG1lYW4gdHdvIGNvbXBsZXRlbHkgZGlmZmVyZW50IHRoaW5ncyBpbiBDLCB3ZQorICAgZGVmaW5lICJsb2NhbCIgZm9yIHRoZSBub24tc3RhdGljIG1lYW5pbmcgb2YgInN0YXRpYyIsIGZvciByZWFkYWJpbGl0eQorICAgKGNvbXBpbGUgd2l0aCAtRGxvY2FsIGlmIHlvdXIgZGVidWdnZXIgY2FuJ3QgZmluZCBzdGF0aWMgc3ltYm9scykgKi8KIAogdHlwZWRlZiB1bnNpZ25lZCBjaGFyICB1Y2g7CiB0eXBlZGVmIHVjaCBGQVIgdWNoZjsKQEAgLTM3LDkgKzQyLDI2IEBACiB0eXBlZGVmIHVzaCBGQVIgdXNoZjsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgdWxnOwogCisjaWYgIWRlZmluZWQoWl9VOCkgJiYgIWRlZmluZWQoWl9TT0xPKSAmJiBkZWZpbmVkKFNUREMpCisjICBpbmNsdWRlIDxsaW1pdHMuaD4KKyMgIGlmIChVTE9OR19NQVggPT0gMHhmZmZmZmZmZmZmZmZmZmZmKQorIyAgICBkZWZpbmUgWl9VOCB1bnNpZ25lZCBsb25nCisjICBlbGlmIChVTExPTkdfTUFYID09IDB4ZmZmZmZmZmZmZmZmZmZmZikKKyMgICAgZGVmaW5lIFpfVTggdW5zaWduZWQgbG9uZyBsb25nCisjICBlbGlmIChVSU5UX01BWCA9PSAweGZmZmZmZmZmZmZmZmZmZmYpCisjICAgIGRlZmluZSBaX1U4IHVuc2lnbmVkCisjICBlbmRpZgorI2VuZGlmCisKKyNpZm5kZWYgWl9GUkVFVFlQRQorZXh0ZXJuIHpfY29uc3QgY2hhciAqIGNvbnN0IHpfZXJybXNnWzEwXTsgLyogaW5kZXhlZCBieSAyLXpsaWJfZXJyb3IgKi8KKy8qIChzaXplIGdpdmVuIHRvIGF2b2lkIHNpbGx5IHdhcm5pbmdzIHdpdGggVmlzdWFsIEMrKykgKi8KKyNlbmRpZiAgLyogIVpfRlJFRVRZUEUgKi8KKworI2RlZmluZSBFUlJfTVNHKGVycikgel9lcnJtc2dbWl9ORUVEX0RJQ1QtKGVycildCiAKICNkZWZpbmUgRVJSX1JFVFVSTihzdHJtLGVycikgXAotICByZXR1cm4gKHN0cm0tPm1zZyA9IChjaGFyKilFUlJfTVNHKGVyciksIChlcnIpKQorICByZXR1cm4gKHN0cm0tPm1zZyA9IEVSUl9NU0coZXJyKSwgKGVycikpCiAvKiBUbyBiZSB1c2VkIG9ubHkgd2hlbiB0aGUgc3RhdGUgaXMga25vd24gdG8gYmUgdmFsaWQgKi8KIAogICAgICAgICAvKiBjb21tb24gY29uc3RhbnRzICovCkBAIC02OSw5MCArOTEsMTMwIEBACiAKICAgICAgICAgLyogdGFyZ2V0IGRlcGVuZGVuY2llcyAqLwogCi0jaWZkZWYgTVNET1MKKyNpZiBkZWZpbmVkKE1TRE9TKSB8fCAoZGVmaW5lZChXSU5ET1dTKSAmJiAhZGVmaW5lZChXSU4zMikpCiAjICBkZWZpbmUgT1NfQ09ERSAgMHgwMAotIyAgaWYgZGVmaW5lZChfX1RVUkJPQ19fKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKLSMgICAgaWYoX19TVERDX18gPT0gMSkgJiYgKGRlZmluZWQoX19MQVJHRV9fKSB8fCBkZWZpbmVkKF9fQ09NUEFDVF9fKSkKLSAgICAgICAvKiBBbGxvdyBjb21waWxhdGlvbiB3aXRoIEFOU0kga2V5d29yZHMgb25seSBlbmFibGVkICovCi0gICAgICAgdm9pZCBfQ2RlY2wgZmFyZnJlZSggdm9pZCAqYmxvY2sgKTsKLSAgICAgICB2b2lkICpfQ2RlY2wgZmFybWFsbG9jKCB1bnNpZ25lZCBsb25nIG5ieXRlcyApOwotIyAgICBlbHNlCi0jICAgICBpbmNsdWRlIDxhbGxvYy5oPgorIyAgaWZuZGVmIFpfU09MTworIyAgICBpZiBkZWZpbmVkKF9fVFVSQk9DX18pIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQorIyAgICAgIGlmIChfX1NURENfXyA9PSAxKSAmJiAoZGVmaW5lZChfX0xBUkdFX18pIHx8IGRlZmluZWQoX19DT01QQUNUX18pKQorICAgICAgICAgLyogQWxsb3cgY29tcGlsYXRpb24gd2l0aCBBTlNJIGtleXdvcmRzIG9ubHkgZW5hYmxlZCAqLworICAgICAgICAgdm9pZCBfQ2RlY2wgZmFyZnJlZSggdm9pZCAqYmxvY2sgKTsKKyAgICAgICAgIHZvaWQgKl9DZGVjbCBmYXJtYWxsb2MoIHVuc2lnbmVkIGxvbmcgbmJ5dGVzICk7CisjICAgICAgZWxzZQorIyAgICAgICAgaW5jbHVkZSA8YWxsb2MuaD4KKyMgICAgICBlbmRpZgorIyAgICBlbHNlIC8qIE1TQyBvciBESkdQUCAqLworIyAgICAgIGluY2x1ZGUgPG1hbGxvYy5oPgogIyAgICBlbmRpZgotIyAgZWxzZSAvKiBNU0Mgb3IgREpHUFAgKi8KICMgIGVuZGlmCiAjZW5kaWYKIAotI2lmZGVmIE9TMgotIyAgZGVmaW5lIE9TX0NPREUgIDB4MDYKLSNlbmRpZgotCi0jaWZkZWYgV0lOMzIgLyogV2luZG93IDk1ICYgV2luZG93cyBOVCAqLwotIyAgZGVmaW5lIE9TX0NPREUgIDB4MGIKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChWQVhDKSB8fCBkZWZpbmVkKFZNUykKLSMgIGRlZmluZSBPU19DT0RFICAweDAyCi0jICBkZWZpbmUgRl9PUEVOKG5hbWUsIG1vZGUpIFwKLSAgICAgZnRfZm9wZW4oKG5hbWUpLCAobW9kZSksICJtYmM9NjAiLCAiY3R4PXN0bSIsICJyZm09Zml4IiwgIm1ycz01MTIiKQotI2VuZGlmCi0KICNpZmRlZiBBTUlHQQotIyAgZGVmaW5lIE9TX0NPREUgIDB4MDEKKyMgIGRlZmluZSBPU19DT0RFICAxCisjZW5kaWYKKworI2lmIGRlZmluZWQoVkFYQykgfHwgZGVmaW5lZChWTVMpCisjICBkZWZpbmUgT1NfQ09ERSAgMgorIyAgZGVmaW5lIEZfT1BFTihuYW1lLCBtb2RlKSBcCisgICAgIGZvcGVuKChuYW1lKSwgKG1vZGUpLCAibWJjPTYwIiwgImN0eD1zdG0iLCAicmZtPWZpeCIsICJtcnM9NTEyIikKKyNlbmRpZgorCisjaWZkZWYgX18zNzBfXworIyAgaWYgX19UQVJHRVRfTElCX18gPCAweDIwMDAwMDAwCisjICAgIGRlZmluZSBPU19DT0RFIDQKKyMgIGVsaWYgX19UQVJHRVRfTElCX18gPCAweDQwMDAwMDAwCisjICAgIGRlZmluZSBPU19DT0RFIDExCisjICBlbHNlCisjICAgIGRlZmluZSBPU19DT0RFIDgKKyMgIGVuZGlmCiAjZW5kaWYKIAogI2lmIGRlZmluZWQoQVRBUkkpIHx8IGRlZmluZWQoYXRhcmlzdCkKLSMgIGRlZmluZSBPU19DT0RFICAweDA1CisjICBkZWZpbmUgT1NfQ09ERSAgNQorI2VuZGlmCisKKyNpZmRlZiBPUzIKKyMgIGRlZmluZSBPU19DT0RFICA2CisjICBpZiBkZWZpbmVkKE1fSTg2KSAmJiAhZGVmaW5lZChaX1NPTE8pCisjICAgIGluY2x1ZGUgPG1hbGxvYy5oPgorIyAgZW5kaWYKICNlbmRpZgogCiAjaWYgZGVmaW5lZChNQUNPUykgfHwgZGVmaW5lZChUQVJHRVRfT1NfTUFDKQotIyAgZGVmaW5lIE9TX0NPREUgIDB4MDcKLSMgIGlmIGRlZmluZWQoX19NV0VSS1NfXykgJiYgX19kZXN0X29zICE9IF9fYmVfb3MgJiYgX19kZXN0X29zICE9IF9fd2luMzJfb3MKLSMgICAgaW5jbHVkZSA8dW5peC5oPiAvKiBmb3IgZmRvcGVuICovCi0jICBlbHNlCi0jICAgIGlmbmRlZiBmZG9wZW4KLSMgICAgICBkZWZpbmUgZmRvcGVuKGZkLG1vZGUpIE5VTEwgLyogTm8gZmRvcGVuKCkgKi8KKyMgIGRlZmluZSBPU19DT0RFICA3CisjICBpZm5kZWYgWl9TT0xPCisjICAgIGlmIGRlZmluZWQoX19NV0VSS1NfXykgJiYgX19kZXN0X29zICE9IF9fYmVfb3MgJiYgX19kZXN0X29zICE9IF9fd2luMzJfb3MKKyMgICAgICBpbmNsdWRlIDx1bml4Lmg+IC8qIGZvciBmZG9wZW4gKi8KKyMgICAgZWxzZQorIyAgICAgIGlmbmRlZiBmZG9wZW4KKyMgICAgICAgIGRlZmluZSBmZG9wZW4oZmQsbW9kZSkgTlVMTCAvKiBObyBmZG9wZW4oKSAqLworIyAgICAgIGVuZGlmCiAjICAgIGVuZGlmCiAjICBlbmRpZgogI2VuZGlmCiAKLSNpZmRlZiBfXzUwU0VSSUVTIC8qIFByaW1lL1BSSU1PUyAqLwotIyAgZGVmaW5lIE9TX0NPREUgIDB4MEYKKyNpZmRlZiBfX2Fjb3JuCisjICBkZWZpbmUgT1NfQ09ERSAxMwogI2VuZGlmCiAKLSNpZmRlZiBUT1BTMjAKLSMgIGRlZmluZSBPU19DT0RFICAweDBhCisjaWYgZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoX19DWUdXSU5fXykKKyMgIGRlZmluZSBPU19DT0RFICAxMAorI2VuZGlmCisKKyNpZmRlZiBfQkVPU18KKyMgIGRlZmluZSBPU19DT0RFICAxNgorI2VuZGlmCisKKyNpZmRlZiBfX1RPU19PUzQwMF9fCisjICBkZWZpbmUgT1NfQ09ERSAxOAorI2VuZGlmCisKKyNpZmRlZiBfX0FQUExFX18KKyMgIGRlZmluZSBPU19DT0RFIDE5CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoX0JFT1NfKSB8fCBkZWZpbmVkKFJJU0NPUykKICMgIGRlZmluZSBmZG9wZW4oZmQsbW9kZSkgTlVMTCAvKiBObyBmZG9wZW4oKSAqLwogI2VuZGlmCiAKLSNpZiAoZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID4gNjAwKSkKLSMgIGRlZmluZSBmZG9wZW4oZmQsdHlwZSkgIF9mZG9wZW4oZmQsdHlwZSkKKyNpZiAoZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID4gNjAwKSkgJiYgIWRlZmluZWQgX19JTlRFUklYCisjICBpZiBkZWZpbmVkKF9XSU4zMl9XQ0UpCisjICAgIGRlZmluZSBmZG9wZW4oZmQsbW9kZSkgTlVMTCAvKiBObyBmZG9wZW4oKSAqLworIyAgZWxzZQorIyAgICBkZWZpbmUgZmRvcGVuKGZkLHR5cGUpICBfZmRvcGVuKGZkLHR5cGUpCisjICBlbmRpZgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgIWRlZmluZWQoTVNET1MpCisgICNwcmFnbWEgd2FybiAtODAwNAorICAjcHJhZ21hIHdhcm4gLTgwMDgKKyAgI3ByYWdtYSB3YXJuIC04MDY2CisjZW5kaWYKIAotICAgICAgICAvKiBDb21tb24gZGVmYXVsdHMgKi8KKyNpZm5kZWYgWl9GUkVFVFlQRQorCisvKiBwcm92aWRlIHByb3RvdHlwZXMgZm9yIHRoZXNlIHdoZW4gYnVpbGRpbmcgemxpYiB3aXRob3V0IExGUyAqLworI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgXAorICAgICghZGVmaW5lZChfTEFSR0VGSUxFNjRfU09VUkNFKSB8fCBfTEZTNjRfTEFSR0VGSUxFLTAgPT0gMCkKKyAgICBaRVhURVJOIHVMb25nIFpFWFBPUlQgYWRsZXIzMl9jb21iaW5lNjQgT0YoKHVMb25nLCB1TG9uZywgel9vZmZfdCkpOworICAgIFpFWFRFUk4gdUxvbmcgWkVYUE9SVCBjcmMzMl9jb21iaW5lNjQgT0YoKHVMb25nLCB1TG9uZywgel9vZmZfdCkpOworICAgIFpFWFRFUk4gdUxvbmcgWkVYUE9SVCBjcmMzMl9jb21iaW5lX2dlbjY0IE9GKCh6X29mZl90KSk7CisjZW5kaWYKKworI2VuZGlmICAvKiAhWl9GUkVFVFlQRSAqLworCisgICAgICAgIC8qIGNvbW1vbiBkZWZhdWx0cyAqLwogCiAjaWZuZGVmIE9TX0NPREUKLSMgIGRlZmluZSBPU19DT0RFICAweDAzICAvKiBhc3N1bWUgVW5peCAqLworIyAgZGVmaW5lIE9TX0NPREUgIDMgICAgIC8qIGFzc3VtZSBVbml4ICovCiAjZW5kaWYKIAogI2lmbmRlZiBGX09QRU4KLSMgIGRlZmluZSBGX09QRU4obmFtZSwgbW9kZSkgZnRfZm9wZW4oKG5hbWUpLCAobW9kZSkpCisjICBkZWZpbmUgRl9PUEVOKG5hbWUsIG1vZGUpIGZvcGVuKChuYW1lKSwgKG1vZGUpKQogI2VuZGlmCiAKICAgICAgICAgIC8qIGZ1bmN0aW9ucyAqLwogCi0jaWZkZWYgSEFWRV9TVFJFUlJPUgotICAgZXh0ZXJuIGNoYXIgKnN0cmVycm9yIE9GKChpbnQpKTsKLSMgIGRlZmluZSB6c3RyZXJyb3IoZXJybnVtKSBzdHJlcnJvcihlcnJudW0pCi0jZWxzZQotIyAgZGVmaW5lIHpzdHJlcnJvcihlcnJudW0pICIiCi0jZW5kaWYKLQotI2lmIGRlZmluZWQocHlyKQorI2lmIGRlZmluZWQocHlyKSB8fCBkZWZpbmVkKFpfU09MTykKICMgIGRlZmluZSBOT19NRU1DUFkKICNlbmRpZgogI2lmIGRlZmluZWQoU01BTExfTUVESVVNKSAmJiAhZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoX19TQ19fKQpAQCAtMTc2LDE2ICsyMzgsMTYgQEAKICMgICAgZGVmaW5lIHptZW16ZXJvKGRlc3QsIGxlbikgZnRfbWVtc2V0KGRlc3QsIDAsIGxlbikKICMgIGVuZGlmCiAjZWxzZQotICAgZXh0ZXJuIHZvaWQgem1lbWNweSAgT0YoKEJ5dGVmKiBkZXN0LCBjb25zdCBCeXRlZiogc291cmNlLCB1SW50IGxlbikpOwotICAgZXh0ZXJuIGludCAgem1lbWNtcCAgT0YoKGNvbnN0IEJ5dGVmKiBzMSwgY29uc3QgQnl0ZWYqIHMyLCB1SW50IGxlbikpOwotICAgZXh0ZXJuIHZvaWQgem1lbXplcm8gT0YoKEJ5dGVmKiBkZXN0LCB1SW50IGxlbikpOworICAgdm9pZCBaTElCX0lOVEVSTkFMIHptZW1jcHkgT0YoKEJ5dGVmKiBkZXN0LCBjb25zdCBCeXRlZiogc291cmNlLCB1SW50IGxlbikpOworICAgaW50IFpMSUJfSU5URVJOQUwgem1lbWNtcCBPRigoY29uc3QgQnl0ZWYqIHMxLCBjb25zdCBCeXRlZiogczIsIHVJbnQgbGVuKSk7CisgICB2b2lkIFpMSUJfSU5URVJOQUwgem1lbXplcm8gT0YoKEJ5dGVmKiBkZXN0LCB1SW50IGxlbikpOwogI2VuZGlmCiAKIC8qIERpYWdub3N0aWMgZnVuY3Rpb25zICovCi0jaWZkZWYgREVCVUcKKyNpZmRlZiBaTElCX0RFQlVHCiAjICBpbmNsdWRlIDxzdGRpby5oPgotICAgZXh0ZXJuIGludCB6X3ZlcmJvc2U7Ci0gICBleHRlcm4gdm9pZCB6X2Vycm9yICAgIE9GKChjaGFyICptKSk7CisgICBleHRlcm4gaW50IFpMSUJfSU5URVJOQUwgel92ZXJib3NlOworICAgZXh0ZXJuIHZvaWQgWkxJQl9JTlRFUk5BTCB6X2Vycm9yIE9GKChjaGFyICptKSk7CiAjICBkZWZpbmUgQXNzZXJ0KGNvbmQsbXNnKSB7aWYoIShjb25kKSkgel9lcnJvcihtc2cpO30KICMgIGRlZmluZSBUcmFjZSh4KSB7aWYgKHpfdmVyYm9zZT49MCkgZnByaW50ZiB4IDt9CiAjICBkZWZpbmUgVHJhY2V2KHgpIHtpZiAoel92ZXJib3NlPjApIGZwcmludGYgeCA7fQpAQCAtMjAxLDE1ICsyNjMsMTkgQEAKICMgIGRlZmluZSBUcmFjZWN2KGMseCkKICNlbmRpZgogCi0KLXR5cGVkZWYgdUxvbmcgKCpjaGVja19mdW5jKSBPRigodUxvbmcgY2hlY2ssIGNvbnN0IEJ5dGVmICpidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVJbnQgbGVuKSk7Ci1sb2NhbCB2b2lkcGYgemNhbGxvYyBPRigodm9pZHBmIG9wYXF1ZSwgdW5zaWduZWQgaXRlbXMsIHVuc2lnbmVkIHNpemUpKTsKLWxvY2FsIHZvaWQgICB6Y2ZyZWUgIE9GKCh2b2lkcGYgb3BhcXVlLCB2b2lkcGYgcHRyKSk7CisjaWZuZGVmIFpfU09MTworICAgdm9pZHBmIFpMSUJfSU5URVJOQUwgemNhbGxvYyBPRigodm9pZHBmIG9wYXF1ZSwgdW5zaWduZWQgaXRlbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaXplKSk7CisgICB2b2lkIFpMSUJfSU5URVJOQUwgemNmcmVlICBPRigodm9pZHBmIG9wYXF1ZSwgdm9pZHBmIHB0cikpOworI2VuZGlmCiAKICNkZWZpbmUgWkFMTE9DKHN0cm0sIGl0ZW1zLCBzaXplKSBcCiAgICAgICAgICAgICgqKChzdHJtKS0+emFsbG9jKSkoKHN0cm0pLT5vcGFxdWUsIChpdGVtcyksIChzaXplKSkKICNkZWZpbmUgWkZSRUUoc3RybSwgYWRkcikgICgqKChzdHJtKS0+emZyZWUpKSgoc3RybSktPm9wYXF1ZSwgKHZvaWRwZikoYWRkcikpCiAjZGVmaW5lIFRSWV9GUkVFKHMsIHApIHtpZiAocCkgWkZSRUUocywgcCk7fQogCi0jZW5kaWYgLyogX1pfVVRJTF9IICovCisvKiBSZXZlcnNlIHRoZSBieXRlcyBpbiBhIDMyLWJpdCB2YWx1ZSAqLworI2RlZmluZSBaU1dBUDMyKHEpICgoKChxKSA+PiAyNCkgJiAweGZmKSArICgoKHEpID4+IDgpICYgMHhmZjAwKSArIFwKKyAgICAgICAgICAgICAgICAgICAgKCgocSkgJiAweGZmMDApIDw8IDgpICsgKCgocSkgJiAweGZmKSA8PCAyNCkpCisKKyNlbmRpZiAvKiBaVVRJTF9IICovCmRpZmYgLS1naXQgYS9zcmMvbHp3L2Z0bHp3LmMgYi9zcmMvbHp3L2Z0bHp3LmMKaW5kZXggZTExMjQxOC4uODgzODM3OSAxMDA2NDQKLS0tIGEvc3JjL2x6dy9mdGx6dy5jCisrKyBiL3NyYy9sencvZnRsencuYwpAQCAtOCw3ICs4LDcgQEAKICAqIGJlIHVzZWQgdG8gcGFyc2UgY29tcHJlc3NlZCBQQ0YgZm9udHMsIGFzIGZvdW5kIHdpdGggbWFueSBYMTEgc2VydmVyCiAgKiBkaXN0cmlidXRpb25zLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQogICogQWxiZXJ0IENoaW4tQS1Zb3VuZy4KICAqCiAgKiBiYXNlZCBvbiBjb2RlIGluIGBzcmMvZ3ppcC9mdGd6aXAuYycKQEAgLTM2OSw3ICszNjksNyBAQAogICAgIEZUX1pFUk8oIHN0cmVhbSApOwogICAgIHN0cmVhbS0+bWVtb3J5ID0gbWVtb3J5OwogCi0gICAgaWYgKCAhRlRfTkVXKCB6aXAgKSApCisgICAgaWYgKCAhRlRfUU5FVyggemlwICkgKQogICAgIHsKICAgICAgIGVycm9yID0gZnRfbHp3X2ZpbGVfaW5pdCggemlwLCBzdHJlYW0sIHNvdXJjZSApOwogICAgICAgaWYgKCBlcnJvciApCmRpZmYgLS1naXQgYS9zcmMvbHp3L2Z0em9wZW4uYyBiL3NyYy9sencvZnR6b3Blbi5jCmluZGV4IDhiNWIzNTcuLmU2ODBjNGQgMTAwNjQ0Ci0tLSBhL3NyYy9sencvZnR6b3Blbi5jCisrKyBiL3NyYy9sencvZnR6b3Blbi5jCkBAIC04LDcgKzgsNyBAQAogICogYmUgdXNlZCB0byBwYXJzZSBjb21wcmVzc2VkIFBDRiBmb250cywgYXMgZm91bmQgd2l0aCBtYW55IFgxMSBzZXJ2ZXIKICAqIGRpc3RyaWJ1dGlvbnMuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMTQzLDcgKzE0Myw3IEBACiAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgfQogCi0gICAgICBpZiAoIEZUX1FSRU5FV19BUlJBWSggc3RhdGUtPnN0YWNrLCBvbGRfc2l6ZSwgbmV3X3NpemUgKSApCisgICAgICBpZiAoIEZUX1FSRUFMTE9DKCBzdGF0ZS0+c3RhY2ssIG9sZF9zaXplLCBuZXdfc2l6ZSApICkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgICAvKiBpZiByZWxvY2F0aW5nIHRvIGhlYXAgKi8KQEAgLTMxNSw3ICszMTUsNyBAQAogCiAgICAgICAgIHN0YXRlLT5waGFzZSA9IEZUX0xaV19QSEFTRV9DT0RFOwogICAgICAgfQotICAgICAgLyogZmFsbC10aHJvdWdoICovCisgICAgICBGQUxMX1RIUk9VR0g7CiAKICAgICBjYXNlIEZUX0xaV19QSEFTRV9DT0RFOgogICAgICAgewpAQCAtMzczLDcgKzM3Myw3IEBACiAKICAgICAgICAgc3RhdGUtPnBoYXNlID0gRlRfTFpXX1BIQVNFX1NUQUNLOwogICAgICAgfQotICAgICAgLyogZmFsbC10aHJvdWdoICovCisgICAgICBGQUxMX1RIUk9VR0g7CiAKICAgICBjYXNlIEZUX0xaV19QSEFTRV9TVEFDSzoKICAgICAgIHsKZGlmZiAtLWdpdCBhL3NyYy9sencvZnR6b3Blbi5oIGIvc3JjL2x6dy9mdHpvcGVuLmgKaW5kZXggOWFkYTc0Mi4uNmM3NTYzNiAxMDA2NDQKLS0tIGEvc3JjL2x6dy9mdHpvcGVuLmgKKysrIGIvc3JjL2x6dy9mdHpvcGVuLmgKQEAgLTgsNyArOCw3IEBACiAgKiBiZSB1c2VkIHRvIHBhcnNlIGNvbXByZXNzZWQgUENGIGZvbnRzLCBhcyBmb3VuZCB3aXRoIG1hbnkgWDExIHNlcnZlcgogICogZGlzdHJpYnV0aW9ucy4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lci4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvbHp3L3J1bGVzLm1rIGIvc3JjL2x6dy9ydWxlcy5tawppbmRleCA3NDdjYmRjLi5iNzUwMjE2IDEwMDY0NAotLS0gYS9zcmMvbHp3L3J1bGVzLm1rCisrKyBiL3NyYy9sencvcnVsZXMubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQogIyBBbGJlcnQgQ2hpbi1BLVlvdW5nLgogIwogIyBiYXNlZCBvbiBgc3JjL2x6dy9ydWxlcy5taycKZGlmZiAtLWdpdCBhL3NyYy9vdHZhbGlkL21vZHVsZS5tayBiL3NyYy9vdHZhbGlkL21vZHVsZS5tawppbmRleCAzMDA5MzQ5Li45MDEzODQyIDEwMDY0NAotLS0gYS9zcmMvb3R2YWxpZC9tb2R1bGUubWsKKysrIGIvc3JjL290dmFsaWQvbW9kdWxlLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvc3JjL290dmFsaWQvb3R2YWxpZC5jIGIvc3JjL290dmFsaWQvb3R2YWxpZC5jCmluZGV4IDg2OTIzM2MuLjNiMWUyM2EgMTAwNjQ0Ci0tLSBhL3NyYy9vdHZhbGlkL290dmFsaWQuYworKysgYi9zcmMvb3R2YWxpZC9vdHZhbGlkLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSB2YWxpZGF0b3IgZm9yIE9wZW5UeXBlIHRhYmxlcyAoYm9keSBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvb3R2YWxpZC9vdHZhbGlkLmggYi9zcmMvb3R2YWxpZC9vdHZhbGlkLmgKaW5kZXggZjhjYTQ1NC4uN2VkYWRiNyAxMDA2NDQKLS0tIGEvc3JjL290dmFsaWQvb3R2YWxpZC5oCisrKyBiL3NyYy9vdHZhbGlkL290dmFsaWQuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIE9wZW5UeXBlIHRhYmxlIHZhbGlkYXRpb24gKHNwZWNpZmljYXRpb24gb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL290dmFsaWQvb3R2YmFzZS5jIGIvc3JjL290dmFsaWQvb3R2YmFzZS5jCmluZGV4IDgzZjk5OGMuLmY0NDk3OTUgMTAwNjQ0Ci0tLSBhL3NyYy9vdHZhbGlkL290dmJhc2UuYworKysgYi9zcmMvb3R2YWxpZC9vdHZiYXNlLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBPcGVuVHlwZSBCQVNFIHRhYmxlIHZhbGlkYXRpb24gKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9vdHZhbGlkL290dmNvbW1uLmMgYi9zcmMvb3R2YWxpZC9vdHZjb21tbi5jCmluZGV4IDQwNjI0YmIuLmI5NGQ4YTAgMTAwNjQ0Ci0tLSBhL3NyYy9vdHZhbGlkL290dmNvbW1uLmMKKysrIGIvc3JjL290dmFsaWQvb3R2Y29tbW4uYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIE9wZW5UeXBlIGNvbW1vbiB0YWJsZXMgdmFsaWRhdGlvbiAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL290dmFsaWQvb3R2Y29tbW4uaCBiL3NyYy9vdHZhbGlkL290dmNvbW1uLmgKaW5kZXggM2IwOTZlYy4uNjcwMmMwMCAxMDA2NDQKLS0tIGEvc3JjL290dmFsaWQvb3R2Y29tbW4uaAorKysgYi9zcmMvb3R2YWxpZC9vdHZjb21tbi5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgT3BlblR5cGUgY29tbW9uIHRhYmxlcyB2YWxpZGF0aW9uIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvb3R2YWxpZC9vdHZlcnJvci5oIGIvc3JjL290dmFsaWQvb3R2ZXJyb3IuaAppbmRleCAzZTIzMjM0Li40YzQwNDljIDEwMDY0NAotLS0gYS9zcmMvb3R2YWxpZC9vdHZlcnJvci5oCisrKyBiL3NyYy9vdHZhbGlkL290dmVycm9yLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBPcGVuVHlwZSB2YWxpZGF0aW9uIG1vZHVsZSBlcnJvciBjb2RlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvb3R2YWxpZC9vdHZnZGVmLmMgYi9zcmMvb3R2YWxpZC9vdHZnZGVmLmMKaW5kZXggNWExNjBhNC4uZDYyZTgxOCAxMDA2NDQKLS0tIGEvc3JjL290dmFsaWQvb3R2Z2RlZi5jCisrKyBiL3NyYy9vdHZhbGlkL290dmdkZWYuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIE9wZW5UeXBlIEdERUYgdGFibGUgdmFsaWRhdGlvbiAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL290dmFsaWQvb3R2Z3Bvcy5jIGIvc3JjL290dmFsaWQvb3R2Z3Bvcy5jCmluZGV4IGUwZDRlNDIuLmY2MTAyYWYgMTAwNjQ0Ci0tLSBhL3NyYy9vdHZhbGlkL290dmdwb3MuYworKysgYi9zcmMvb3R2YWxpZC9vdHZncG9zLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBPcGVuVHlwZSBHUE9TIHRhYmxlIHZhbGlkYXRpb24gKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9vdHZhbGlkL290dmdwb3MuaCBiL3NyYy9vdHZhbGlkL290dmdwb3MuaAppbmRleCAxNzZhNjg4Li5iNWQwZjU0IDEwMDY0NAotLS0gYS9zcmMvb3R2YWxpZC9vdHZncG9zLmgKKysrIGIvc3JjL290dmFsaWQvb3R2Z3Bvcy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgT3BlblR5cGUgR1BPUyB0YWJsZSB2YWxpZGF0b3IgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9vdHZhbGlkL290dmdzdWIuYyBiL3NyYy9vdHZhbGlkL290dmdzdWIuYwppbmRleCBiNDI2YTE3Li41ZDQwZDkyIDEwMDY0NAotLS0gYS9zcmMvb3R2YWxpZC9vdHZnc3ViLmMKKysrIGIvc3JjL290dmFsaWQvb3R2Z3N1Yi5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgT3BlblR5cGUgR1NVQiB0YWJsZSB2YWxpZGF0aW9uIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC02MSw3ICs2MSw4IEBACiAgICAgICB7CiAgICAgICAgIEZUX0J5dGVzICBDb3ZlcmFnZTsKICAgICAgICAgRlRfSW50ICAgIERlbHRhR2x5cGhJRDsKLSAgICAgICAgRlRfTG9uZyAgIGlkeDsKKyAgICAgICAgRlRfVUludCAgIGZpcnN0X2NvdiwgbGFzdF9jb3Y7CisgICAgICAgIEZUX1VJbnQgICBmaXJzdF9pZHgsIGxhc3RfaWR4OwogCiAKICAgICAgICAgT1RWX0xJTUlUX0NIRUNLKCA0ICk7CkBAIC03MCwxMiArNzEsMjEgQEAKIAogICAgICAgICBvdHZfQ292ZXJhZ2VfdmFsaWRhdGUoIENvdmVyYWdlLCBvdHZhbGlkLCAtMSApOwogCi0gICAgICAgIGlkeCA9IChGVF9Mb25nKW90dl9Db3ZlcmFnZV9nZXRfZmlyc3QoIENvdmVyYWdlICkgKyBEZWx0YUdseXBoSUQ7Ci0gICAgICAgIGlmICggaWR4IDwgMCApCisgICAgICAgIGZpcnN0X2NvdiA9IG90dl9Db3ZlcmFnZV9nZXRfZmlyc3QoIENvdmVyYWdlICk7CisgICAgICAgIGxhc3RfY292ICA9IG90dl9Db3ZlcmFnZV9nZXRfbGFzdCggQ292ZXJhZ2UgKTsKKworICAgICAgICAvKiBUaGVzZSBhZGRpdGlvbnMgYXJlIG1vZHVsbyA2NTUzNi4gKi8KKyAgICAgICAgZmlyc3RfaWR4ID0gKEZUX1VJbnQpKCAoRlRfSW50KWZpcnN0X2NvdiArIERlbHRhR2x5cGhJRCApICYgMHhGRkZGVTsKKyAgICAgICAgbGFzdF9pZHggID0gKEZUX1VJbnQpKCAoRlRfSW50KWxhc3RfY292ICsgRGVsdGFHbHlwaElEICkgJiAweEZGRkZVOworCisgICAgICAgIC8qIFNpbmNlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBnbHlwaHMgaXMgMl4xNiAtIDEgPSA2NTUzNSwgKi8KKyAgICAgICAgLyogdGhlIGxhcmdlc3QgcG9zc2libGUgZ2x5cGggaW5kZXggaXMgNjU1MzQuICBGb3IgdGhpcyAgICAqLworICAgICAgICAvKiByZWFzb24gdGhlcmUgY2FuJ3QgYmUgYSB3cmFwLWFyb3VuZCByZWdpb24sIHdoaWNoIHdvdWxkICovCisgICAgICAgIC8qIGltcGx5IHRoZSB1c2Ugb2YgdGhlIGludmFsaWQgZ2x5cGggaW5kZXggNjU1MzUuICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBmaXJzdF9pZHggPiBsYXN0X2lkeCApCiAgICAgICAgICAgRlRfSU5WQUxJRF9EQVRBOwogCi0gICAgICAgIGlkeCA9IChGVF9Mb25nKW90dl9Db3ZlcmFnZV9nZXRfbGFzdCggQ292ZXJhZ2UgKSArIERlbHRhR2x5cGhJRDsKLSAgICAgICAgaWYgKCAoRlRfVUludClpZHggPj0gb3R2YWxpZC0+Z2x5cGhfY291bnQgKQorICAgICAgICBpZiAoIGxhc3RfaWR4ID49IG90dmFsaWQtPmdseXBoX2NvdW50ICkKICAgICAgICAgICBGVF9JTlZBTElEX0RBVEE7CiAgICAgICB9CiAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9vdHZhbGlkL290dmpzdGYuYyBiL3NyYy9vdHZhbGlkL290dmpzdGYuYwppbmRleCA0MDRkZGE4Li43MTIwMzljIDEwMDY0NAotLS0gYS9zcmMvb3R2YWxpZC9vdHZqc3RmLmMKKysrIGIvc3JjL290dmFsaWQvb3R2anN0Zi5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgT3BlblR5cGUgSlNURiB0YWJsZSB2YWxpZGF0aW9uIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvb3R2YWxpZC9vdHZtYXRoLmMgYi9zcmMvb3R2YWxpZC9vdHZtYXRoLmMKaW5kZXggYjRiZmFiYi4uMDFmZDg2MyAxMDA2NDQKLS0tIGEvc3JjL290dmFsaWQvb3R2bWF0aC5jCisrKyBiL3NyYy9vdHZhbGlkL290dm1hdGguYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIE9wZW5UeXBlIE1BVEggdGFibGUgdmFsaWRhdGlvbiAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogV3JpdHRlbiBieSBHZW9yZ2UgV2lsbGlhbXMuCmRpZmYgLS1naXQgYS9zcmMvb3R2YWxpZC9vdHZtb2QuYyBiL3NyYy9vdHZhbGlkL290dm1vZC5jCmluZGV4IGI3ZDY3NGIuLmQ2MDU3YzUgMTAwNjQ0Ci0tLSBhL3NyYy9vdHZhbGlkL290dm1vZC5jCisrKyBiL3NyYy9vdHZhbGlkL290dm1vZC5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUncyBPcGVuVHlwZSB2YWxpZGF0aW9uIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL290dmFsaWQvb3R2bW9kLmggYi9zcmMvb3R2YWxpZC9vdHZtb2QuaAppbmRleCAzN2MyMGUwLi5mMGU2OGRiIDEwMDY0NAotLS0gYS9zcmMvb3R2YWxpZC9vdHZtb2QuaAorKysgYi9zcmMvb3R2YWxpZC9vdHZtb2QuaApAQCAtNSw3ICs1LDcgQEAKICAqICAgRnJlZVR5cGUncyBPcGVuVHlwZSB2YWxpZGF0aW9uIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgogICogICAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL290dmFsaWQvcnVsZXMubWsgYi9zcmMvb3R2YWxpZC9ydWxlcy5tawppbmRleCA2MzRhMzUwLi44MDBjYjg3IDEwMDY0NAotLS0gYS9zcmMvb3R2YWxpZC9ydWxlcy5taworKysgYi9zcmMvb3R2YWxpZC9ydWxlcy5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAwNC0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL3NyYy9wY2YvcGNmZHJpdnIuYyBiL3NyYy9wY2YvcGNmZHJpdnIuYwppbmRleCAyYTQwYWY5Li5iZmE2ZWFjIDEwMDY0NAotLS0gYS9zcmMvcGNmL3BjZmRyaXZyLmMKKysrIGIvc3JjL3BjZi9wY2Zkcml2ci5jCkBAIC0xMDQsMjYgKzEwNCwxOSBAQAogICBwY2ZfY21hcF9jaGFyX2luZGV4KCBGVF9DTWFwICAgIHBjZmNtYXAsICAvKiBQQ0ZfQ01hcCAqLwogICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgIGNoYXJjb2RlICkKICAgewotICAgIFBDRl9DTWFwICAgY21hcCA9IChQQ0ZfQ01hcClwY2ZjbWFwOwotICAgIFBDRl9FbmMgICAgZW5jICA9IGNtYXAtPmVuYzsKLSAgICBGVF9VU2hvcnQgIGNoYXJjb2RlUm93OwotICAgIEZUX1VTaG9ydCAgY2hhcmNvZGVDb2w7CisgICAgUENGX0VuYyAgZW5jID0gKCAoUENGX0NNYXApcGNmY21hcCApLT5lbmM7CisKKyAgICBGVF9VSW50MzIgIGkgPSAoIGNoYXJjb2RlID4+IDggICApIC0gZW5jLT5maXJzdFJvdzsKKyAgICBGVF9VSW50MzIgIGogPSAoIGNoYXJjb2RlICYgMHhGRiApIC0gZW5jLT5maXJzdENvbDsKKyAgICBGVF9VSW50MzIgIGggPSBlbmMtPmxhc3RSb3cgLSBlbmMtPmZpcnN0Um93ICsgMTsKKyAgICBGVF9VSW50MzIgIHcgPSBlbmMtPmxhc3RDb2wgLSBlbmMtPmZpcnN0Q29sICsgMTsKIAogCi0gICAgaWYgKCBjaGFyY29kZSA+IChGVF9VSW50MzIpKCBlbmMtPmxhc3RSb3cgICogMjU2ICsgZW5jLT5sYXN0Q29sICApIHx8Ci0gICAgICAgICBjaGFyY29kZSA8IChGVF9VSW50MzIpKCBlbmMtPmZpcnN0Um93ICogMjU2ICsgZW5jLT5maXJzdENvbCApICkKKyAgICAvKiB3cmFwcGVkIGFyb3VuZCAibmVnYXRpdmUiIHZhbHVlcyBhcmUgYWxzbyByZWplY3RlZCAqLworICAgIGlmICggaSA+PSBoIHx8IGogPj0gdyApCiAgICAgICByZXR1cm4gMDsKIAotICAgIGNoYXJjb2RlUm93ID0gKEZUX1VTaG9ydCkoIGNoYXJjb2RlID4+IDggKTsKLSAgICBjaGFyY29kZUNvbCA9IChGVF9VU2hvcnQpKCBjaGFyY29kZSAmIDB4RkYgKTsKLQotICAgIGlmICggY2hhcmNvZGVDb2wgPCBlbmMtPmZpcnN0Q29sIHx8Ci0gICAgICAgICBjaGFyY29kZUNvbCA+IGVuYy0+bGFzdENvbCAgKQotICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gKEZUX1VJbnQpZW5jLT5vZmZzZXRbKCBjaGFyY29kZVJvdyAtIGVuYy0+Zmlyc3RSb3cgKSAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBlbmMtPmxhc3RDb2wgLSBlbmMtPmZpcnN0Q29sICsgMSApICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmNvZGVDb2wgLSBlbmMtPmZpcnN0Q29sXTsKKyAgICByZXR1cm4gKEZUX1VJbnQpZW5jLT5vZmZzZXRbaSAqIHcgKyBqXTsKICAgfQogCiAKQEAgLTEzMSw0MiArMTI0LDMzIEBACiAgIHBjZl9jbWFwX2NoYXJfbmV4dCggRlRfQ01hcCAgICBwY2ZjbWFwLCAgIC8qIFBDRl9DTWFwICovCiAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICAqYWNoYXJjb2RlICkKICAgewotICAgIFBDRl9DTWFwICAgY21hcCAgICAgID0gKFBDRl9DTWFwKXBjZmNtYXA7Ci0gICAgUENGX0VuYyAgICBlbmMgICAgICAgPSBjbWFwLT5lbmM7Ci0gICAgRlRfVUludDMyICBjaGFyY29kZSAgPSAqYWNoYXJjb2RlOwotICAgIEZUX1VTaG9ydCAgY2hhcmNvZGVSb3c7Ci0gICAgRlRfVVNob3J0ICBjaGFyY29kZUNvbDsKLSAgICBGVF9VSW50ICAgIHJlc3VsdCA9IDA7CisgICAgUENGX0VuYyAgICBlbmMgPSAoIChQQ0ZfQ01hcClwY2ZjbWFwICktPmVuYzsKKyAgICBGVF9VSW50MzIgIGNoYXJjb2RlID0gKmFjaGFyY29kZSArIDE7CisKKyAgICBGVF9VSW50MzIgIGkgPSAoIGNoYXJjb2RlID4+IDggICApIC0gZW5jLT5maXJzdFJvdzsKKyAgICBGVF9VSW50MzIgIGogPSAoIGNoYXJjb2RlICYgMHhGRiApIC0gZW5jLT5maXJzdENvbDsKKyAgICBGVF9VSW50MzIgIGggPSBlbmMtPmxhc3RSb3cgLSBlbmMtPmZpcnN0Um93ICsgMTsKKyAgICBGVF9VSW50MzIgIHcgPSBlbmMtPmxhc3RDb2wgLSBlbmMtPmZpcnN0Q29sICsgMTsKKworICAgIEZUX1VJbnQgIHJlc3VsdCA9IDA7CiAKIAotICAgIHdoaWxlICggY2hhcmNvZGUgPCAoRlRfVUludDMyKSggZW5jLT5sYXN0Um93ICogMjU2ICsgZW5jLT5sYXN0Q29sICkgKQotICAgIHsKLSAgICAgIGNoYXJjb2RlKys7CisgICAgLyogYWRqdXN0IHdyYXBwZWQgYXJvdW5kICJuZWdhdGl2ZSIgdmFsdWVzICovCisgICAgaWYgKCAoRlRfSW50MzIpaSA8IDAgKQorICAgICAgaSA9IDA7CisgICAgaWYgKCAoRlRfSW50MzIpaiA8IDAgKQorICAgICAgaiA9IDA7CiAKLSAgICAgIGlmICggY2hhcmNvZGUgPCAoRlRfVUludDMyKSggZW5jLT5maXJzdFJvdyAqIDI1NiArIGVuYy0+Zmlyc3RDb2wgKSApCi0gICAgICAgIGNoYXJjb2RlID0gKEZUX1VJbnQzMikoIGVuYy0+Zmlyc3RSb3cgKiAyNTYgKyBlbmMtPmZpcnN0Q29sICk7Ci0KLSAgICAgIGNoYXJjb2RlUm93ID0gKEZUX1VTaG9ydCkoIGNoYXJjb2RlID4+IDggKTsKLSAgICAgIGNoYXJjb2RlQ29sID0gKEZUX1VTaG9ydCkoIGNoYXJjb2RlICYgMHhGRiApOwotCi0gICAgICBpZiAoIGNoYXJjb2RlQ29sIDwgZW5jLT5maXJzdENvbCApCi0gICAgICAgIGNoYXJjb2RlQ29sID0gZW5jLT5maXJzdENvbDsKLSAgICAgIGVsc2UgaWYgKCBjaGFyY29kZUNvbCA+IGVuYy0+bGFzdENvbCApCisgICAgZm9yICggOyBpIDwgaDsgaSsrLCBqID0gMCApCisgICAgICBmb3IgKCA7IGogPCB3OyBqKysgKQogICAgICAgewotICAgICAgICBjaGFyY29kZVJvdysrOwotICAgICAgICBjaGFyY29kZUNvbCA9IGVuYy0+Zmlyc3RDb2w7CisgICAgICAgIHJlc3VsdCA9IChGVF9VSW50KWVuYy0+b2Zmc2V0W2kgKiB3ICsgal07CisgICAgICAgIGlmICggcmVzdWx0ICE9IDB4RkZGRlUgKQorICAgICAgICAgIGdvdG8gRXhpdDsKICAgICAgIH0KIAotICAgICAgY2hhcmNvZGUgPSAoRlRfVUludDMyKSggY2hhcmNvZGVSb3cgKiAyNTYgKyBjaGFyY29kZUNvbCApOwotCi0gICAgICByZXN1bHQgPSAoRlRfVUludCllbmMtPm9mZnNldFsoIGNoYXJjb2RlUm93IC0gZW5jLT5maXJzdFJvdyApICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBlbmMtPmxhc3RDb2wgLSBlbmMtPmZpcnN0Q29sICsgMSApICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJjb2RlQ29sIC0gZW5jLT5maXJzdENvbF07Ci0gICAgICBpZiAoIHJlc3VsdCAhPSAweEZGRkZVICkKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgKmFjaGFyY29kZSA9IGNoYXJjb2RlOworICBFeGl0OgorICAgICphY2hhcmNvZGUgPSAoICggaSArIGVuYy0+Zmlyc3RSb3cgKSA8PCA4ICkgfCAoIGogKyBlbmMtPmZpcnN0Q29sICk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogICB9CmRpZmYgLS1naXQgYS9zcmMvcGNmL3BjZnJlYWQuYyBiL3NyYy9wY2YvcGNmcmVhZC5jCmluZGV4IGU2MGEwYTUuLmYxNjdiY2IgMTAwNjQ0Ci0tLSBhL3NyYy9wY2YvcGNmcmVhZC5jCisrKyBiL3NyYy9wY2YvcGNmcmVhZC5jCkBAIC0xMDM0LDE2ICsxMDM0LDYgQEAKICAgICAgICAgIGVuYy0+bGFzdFJvdyAgPiAweEZGICAgICAgICAgKQogICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX1RhYmxlICk7CiAKLSAgICBuZW5jb2RpbmcgPSAoRlRfVUxvbmcpKCBlbmMtPmxhc3RDb2wgLSBlbmMtPmZpcnN0Q29sICsgMSApICoKLSAgICAgICAgICAgICAgICAoRlRfVUxvbmcpKCBlbmMtPmxhc3RSb3cgLSBlbmMtPmZpcnN0Um93ICsgMSApOwotCi0gICAgaWYgKCBGVF9ORVdfQVJSQVkoIGVuYy0+b2Zmc2V0LCBuZW5jb2RpbmcgKSApCi0gICAgICBnb3RvIEJhaWw7Ci0KLSAgICBlcnJvciA9IEZUX1N0cmVhbV9FbnRlckZyYW1lKCBzdHJlYW0sIDIgKiBuZW5jb2RpbmcgKTsKLSAgICBpZiAoIGVycm9yICkKLSAgICAgIGdvdG8gRXhpdDsKLQogICAgIEZUX1RSQUNFNSgoICJcbiIgKSk7CiAKICAgICBkZWZhdWx0Q2hhclJvdyA9IGVuYy0+ZGVmYXVsdENoYXIgPj4gODsKQEAgLTEwNjQsNiArMTA1NCwxMyBAQAogICAgICAgZGVmYXVsdENoYXJDb2wgPSBlbmMtPmZpcnN0Q29sOwogICAgIH0KIAorICAgIG5lbmNvZGluZyA9IChGVF9VTG9uZykoIGVuYy0+bGFzdENvbCAtIGVuYy0+Zmlyc3RDb2wgKyAxICkgKgorICAgICAgICAgICAgICAgIChGVF9VTG9uZykoIGVuYy0+bGFzdFJvdyAtIGVuYy0+Zmlyc3RSb3cgKyAxICk7CisKKyAgICBlcnJvciA9IEZUX1N0cmVhbV9FbnRlckZyYW1lKCBzdHJlYW0sIDIgKiBuZW5jb2RpbmcgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gQmFpbDsKKwogICAgIC8qCiAgICAgICogRnJlZVR5cGUgbWFuZGF0ZXMgdGhhdCBnbHlwaCBpbmRleCAwIGlzIHRoZSBgdW5kZWZpbmVkIGdseXBoJywgd2hpY2gKICAgICAgKiBQQ0YgY2FsbHMgdGhlIGBkZWZhdWx0IGNoYXJhY3RlcicuICBIb3dldmVyLCBGcmVlVHlwZSBuZWVkcyBnbHlwaApAQCAtMTEwOSw2ICsxMTA2LDkgQEAKICAgICAvKiBjb3B5IG1ldHJpY3Mgb2YgZGVmYXVsdCBjaGFyYWN0ZXIgdG8gaW5kZXggMCAqLwogICAgIGZhY2UtPm1ldHJpY3NbMF0gPSBmYWNlLT5tZXRyaWNzW2RlZmF1bHRDaGFyRW5jb2RpbmdPZmZzZXRdOwogCisgICAgaWYgKCBGVF9RTkVXX0FSUkFZKCBlbmMtPm9mZnNldCwgbmVuY29kaW5nICkgKQorICAgICAgZ290byBCYWlsOworCiAgICAgLyogbm93IGxvb3Agb3ZlciBhbGwgdmFsdWVzICovCiAgICAgb2Zmc2V0ID0gZW5jLT5vZmZzZXQ7CiAgICAgZm9yICggaSA9IGVuYy0+Zmlyc3RSb3c7IGkgPD0gZW5jLT5sYXN0Um93OyBpKysgKQpAQCAtMTEzMSwxMSArMTEzMSw2IEBACiAgICAgfQogICAgIEZUX1N0cmVhbV9FeGl0RnJhbWUoIHN0cmVhbSApOwogCi0gICAgcmV0dXJuIGVycm9yOwotCi0gIEV4aXQ6Ci0gICAgRlRfRlJFRSggZW5jLT5vZmZzZXQgKTsKLQogICBCYWlsOgogICAgIHJldHVybiBlcnJvcjsKICAgfQpkaWZmIC0tZ2l0IGEvc3JjL3BjZi9wY2Z1dGlsLmMgYi9zcmMvcGNmL3BjZnV0aWwuYwppbmRleCA1ZDNjMDA3Li45NTc1NzI2IDEwMDY0NAotLS0gYS9zcmMvcGNmL3BjZnV0aWwuYworKysgYi9zcmMvcGNmL3BjZnV0aWwuYwpAQCAtNTcsNiArNTcsMzQgQEAKICAgfQogCiAKKyNpZiBkZWZpbmVkKCBfX2NsYW5nX18gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgXAorICAgICggZGVmaW5lZCggX19HTlVDX18gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICBcCisgICAgICAoIF9fR05VQ19fID4gNCB8fCAoIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gOCApICkgKQorCisjZGVmaW5lIEJTV0FQMTYoIHggKSAgX19idWlsdGluX2Jzd2FwMTYoIHggKQorI2RlZmluZSBCU1dBUDMyKCB4ICkgIF9fYnVpbHRpbl9ic3dhcDMyKCB4ICkKKworI2VsaWYgZGVmaW5lZCggX01TQ19WRVIgKSAmJiBfTVNDX1ZFUiA+PSAxMzAwCisKKyNwcmFnbWEgaW50cmluc2ljKCBfYnl0ZXN3YXBfdXNob3J0ICkKKyNwcmFnbWEgaW50cmluc2ljKCBfYnl0ZXN3YXBfdWxvbmcgKQorCisjZGVmaW5lIEJTV0FQMTYoIHggKSAgX2J5dGVzd2FwX3VzaG9ydCggeCApCisjZGVmaW5lIEJTV0FQMzIoIHggKSAgX2J5dGVzd2FwX3Vsb25nKCB4ICkKKworI2Vsc2UKKworI2RlZmluZSBCU1dBUDE2KCB4ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKEZUX1VJbnQxNikoICggKCAoIHggKSA+PiA4ICkgJiAweGZmICkgfCBcCisgICAgICAgICAgICAgICAgICAgICAoICggKCB4ICkgJiAweGZmICkgPDwgOCApICkKKyNkZWZpbmUgQlNXQVAzMiggeCApICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKEZUX1VJbnQzMikoICggKCAoIHggKSAmIDB4ZmYwMDAwMDB1ICkgPj4gMjQgKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICggKCAoIHggKSAmIDB4MDBmZjAwMDB1ICkgPj4gOCAgKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICggKCAoIHggKSAmIDB4MDAwMGZmMDB1ICkgPDwgOCAgKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICggKCAoIHggKSAmIDB4MDAwMDAwZmZ1ICkgPDwgMjQgKSApCisKKyNlbmRpZgorCiAgIC8qCiAgICAqIEludmVydCBieXRlIG9yZGVyIHdpdGhpbiBlYWNoIDE2LWJpdHMgb2YgYW4gYXJyYXkuCiAgICAqLwpAQCAtNjUsMTUgKzkzLDExIEBACiAgIFR3b0J5dGVTd2FwKCB1bnNpZ25lZCBjaGFyKiAgYnVmLAogICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgIG5ieXRlcyApCiAgIHsKLSAgICBmb3IgKCA7IG5ieXRlcyA+PSAyOyBuYnl0ZXMgLT0gMiwgYnVmICs9IDIgKQotICAgIHsKLSAgICAgIHVuc2lnbmVkIGNoYXIgIGM7CisgICAgRlRfVUludDE2KiAgYiA9IChGVF9VSW50MTYqKWJ1ZjsKIAogCi0gICAgICBjICAgICAgPSBidWZbMF07Ci0gICAgICBidWZbMF0gPSBidWZbMV07Ci0gICAgICBidWZbMV0gPSBjOwotICAgIH0KKyAgICBmb3IgKCA7IG5ieXRlcyA+PSAyOyBuYnl0ZXMgLT0gMiwgYisrICkKKyAgICAgICpiID0gQlNXQVAxNiggKmIgKTsKICAgfQogCiAgIC8qCkBAIC04NCwxOSArMTA4LDExIEBACiAgIEZvdXJCeXRlU3dhcCggdW5zaWduZWQgY2hhciogIGJ1ZiwKICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgICAgbmJ5dGVzICkKICAgewotICAgIGZvciAoIDsgbmJ5dGVzID49IDQ7IG5ieXRlcyAtPSA0LCBidWYgKz0gNCApCi0gICAgewotICAgICAgdW5zaWduZWQgY2hhciAgYzsKKyAgICBGVF9VSW50MzIqICBiID0gKEZUX1VJbnQzMiopYnVmOwogCiAKLSAgICAgIGMgICAgICA9IGJ1ZlswXTsKLSAgICAgIGJ1ZlswXSA9IGJ1ZlszXTsKLSAgICAgIGJ1ZlszXSA9IGM7Ci0KLSAgICAgIGMgICAgICA9IGJ1ZlsxXTsKLSAgICAgIGJ1ZlsxXSA9IGJ1ZlsyXTsKLSAgICAgIGJ1ZlsyXSA9IGM7Ci0gICAgfQorICAgIGZvciAoIDsgbmJ5dGVzID49IDQ7IG5ieXRlcyAtPSA0LCBiKysgKQorICAgICAgKmIgPSBCU1dBUDMyKCAqYiApOwogICB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL3Bmci9tb2R1bGUubWsgYi9zcmMvcGZyL21vZHVsZS5tawppbmRleCA0ZjQ5ZTEyLi4zODhhMzhlIDEwMDY0NAotLS0gYS9zcmMvcGZyL21vZHVsZS5taworKysgYi9zcmMvcGZyL21vZHVsZS5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL3NyYy9wZnIvcGZyLmMgYi9zcmMvcGZyL3Bmci5jCmluZGV4IDQwNThhZDUuLmQzNzM4MTUgMTAwNjQ0Ci0tLSBhL3NyYy9wZnIvcGZyLmMKKysrIGIvc3JjL3Bmci9wZnIuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIFBGUiBkcml2ZXIgY29tcG9uZW50LgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9wZnIvcGZyY21hcC5jIGIvc3JjL3Bmci9wZnJjbWFwLmMKaW5kZXggNmE3ZjU3My4uMzEyYTlmZiAxMDA2NDQKLS0tIGEvc3JjL3Bmci9wZnJjbWFwLmMKKysrIGIvc3JjL3Bmci9wZnJjbWFwLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBQRlIgY21hcCBoYW5kbGluZyAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtNjksMTcgKzY5LDE0IEBACiAgIHBmcl9jbWFwX2NoYXJfaW5kZXgoIFBGUl9DTWFwICAgY21hcCwKICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICBjaGFyX2NvZGUgKQogICB7Ci0gICAgRlRfVUludCAgbWluID0gMDsKLSAgICBGVF9VSW50ICBtYXggPSBjbWFwLT5udW1fY2hhcnM7CisgICAgRlRfVUludCAgIG1pbiA9IDA7CisgICAgRlRfVUludCAgIG1heCA9IGNtYXAtPm51bV9jaGFyczsKKyAgICBGVF9VSW50ICAgbWlkID0gbWluICsgKCBtYXggLSBtaW4gKSAvIDI7CisgICAgUEZSX0NoYXIgIGdjaGFyOwogCiAKICAgICB3aGlsZSAoIG1pbiA8IG1heCApCiAgICAgewotICAgICAgUEZSX0NoYXIgIGdjaGFyOwotICAgICAgRlRfVUludCAgIG1pZDsKLQotCi0gICAgICBtaWQgICA9IG1pbiArICggbWF4IC0gbWluICkgLyAyOwogICAgICAgZ2NoYXIgPSBjbWFwLT5jaGFycyArIG1pZDsKIAogICAgICAgaWYgKCBnY2hhci0+Y2hhcl9jb2RlID09IGNoYXJfY29kZSApCkBAIC04OSw2ICs4NiwxMSBAQAogICAgICAgICBtaW4gPSBtaWQgKyAxOwogICAgICAgZWxzZQogICAgICAgICBtYXggPSBtaWQ7CisKKyAgICAgIC8qIHJlYXNvbmFibGUgcHJlZGljdGlvbiBpbiBhIGNvbnRpbnVvdXMgYmxvY2sgKi8KKyAgICAgIG1pZCArPSBjaGFyX2NvZGUgLSBnY2hhci0+Y2hhcl9jb2RlOworICAgICAgaWYgKCBtaWQgPj0gbWF4IHx8IG1pZCA8IG1pbiApCisgICAgICAgIG1pZCA9IG1pbiArICggbWF4IC0gbWluICkgLyAyOwogICAgIH0KICAgICByZXR1cm4gMDsKICAgfQpAQCAtMTA2LDEzICsxMDgsMTIgQEAKICAgICB7CiAgICAgICBGVF9VSW50ICAgbWluID0gMDsKICAgICAgIEZUX1VJbnQgICBtYXggPSBjbWFwLT5udW1fY2hhcnM7Ci0gICAgICBGVF9VSW50ICAgbWlkOworICAgICAgRlRfVUludCAgIG1pZCA9IG1pbiArICggbWF4IC0gbWluICkgLyAyOwogICAgICAgUEZSX0NoYXIgIGdjaGFyOwogCiAKICAgICAgIHdoaWxlICggbWluIDwgbWF4ICkKICAgICAgIHsKLSAgICAgICAgbWlkICAgPSBtaW4gKyAoICggbWF4IC0gbWluICkgPj4gMSApOwogICAgICAgICBnY2hhciA9IGNtYXAtPmNoYXJzICsgbWlkOwogCiAgICAgICAgIGlmICggZ2NoYXItPmNoYXJfY29kZSA9PSBjaGFyX2NvZGUgKQpAQCAtMTMyLDYgKzEzMywxMSBAQAogICAgICAgICAgIG1pbiA9IG1pZCArIDE7CiAgICAgICAgIGVsc2UKICAgICAgICAgICBtYXggPSBtaWQ7CisKKyAgICAgICAgLyogcmVhc29uYWJsZSBwcmVkaWN0aW9uIGluIGEgY29udGludW91cyBibG9jayAqLworICAgICAgICBtaWQgKz0gY2hhcl9jb2RlIC0gZ2NoYXItPmNoYXJfY29kZTsKKyAgICAgICAgaWYgKCBtaWQgPj0gbWF4IHx8IG1pZCA8IG1pbiApCisgICAgICAgICAgbWlkID0gbWluICsgKCBtYXggLSBtaW4gKSAvIDI7CiAgICAgICB9CiAKICAgICAgIC8qIHdlIGRpZG4ndCBmaW5kIGl0LCBidXQgd2UgaGF2ZSBhIHBhaXIganVzdCBhYm92ZSBpdCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Bmci9wZnJjbWFwLmggYi9zcmMvcGZyL3BmcmNtYXAuaAppbmRleCAxN2MwMmEyLi44MTEwZjE3IDEwMDY0NAotLS0gYS9zcmMvcGZyL3BmcmNtYXAuaAorKysgYi9zcmMvcGZyL3BmcmNtYXAuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIFBGUiBjbWFwIGhhbmRsaW5nIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvcGZyL3BmcmRyaXZyLmMgYi9zcmMvcGZyL3BmcmRyaXZyLmMKaW5kZXggMTZiOGY3OS4uNzhjNmM2OCAxMDA2NDQKLS0tIGEvc3JjL3Bmci9wZnJkcml2ci5jCisrKyBiL3NyYy9wZnIvcGZyZHJpdnIuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIFBGUiBkcml2ZXIgaW50ZXJmYWNlIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvcGZyL3BmcmRyaXZyLmggYi9zcmMvcGZyL3BmcmRyaXZyLmgKaW5kZXggNmZmMTZmZS4uZGExNDQ2OCAxMDA2NDQKLS0tIGEvc3JjL3Bmci9wZnJkcml2ci5oCisrKyBiL3NyYy9wZnIvcGZyZHJpdnIuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEhpZ2gtbGV2ZWwgVHlwZSBQRlIgZHJpdmVyIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3Bmci9wZnJlcnJvci5oIGIvc3JjL3Bmci9wZnJlcnJvci5oCmluZGV4IDI1NTY5NmUuLjVkZmIyNTQgMTAwNjQ0Ci0tLSBhL3NyYy9wZnIvcGZyZXJyb3IuaAorKysgYi9zcmMvcGZyL3BmcmVycm9yLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBQRlIgZXJyb3IgY29kZXMgKHNwZWNpZmljYXRpb24gb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3Bmci9wZnJnbG9hZC5jIGIvc3JjL3Bmci9wZnJnbG9hZC5jCmluZGV4IGI0MDAwNDIuLjE0ZjJlYzMgMTAwNjQ0Ci0tLSBhL3NyYy9wZnIvcGZyZ2xvYWQuYworKysgYi9zcmMvcGZyL3Bmcmdsb2FkLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBQRlIgZ2x5cGggbG9hZGVyIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC00Miw4ICs0Miw3IEBACiAgIHsKICAgICBGVF9aRVJPKCBnbHlwaCApOwogCi0gICAgZ2x5cGgtPmxvYWRlciAgICAgPSBsb2FkZXI7Ci0gICAgZ2x5cGgtPnBhdGhfYmVndW4gPSAwOworICAgIGdseXBoLT5sb2FkZXIgPSBsb2FkZXI7CiAKICAgICBGVF9HbHlwaExvYWRlcl9SZXdpbmQoIGxvYWRlciApOwogICB9CkBAIC00MDksNyArNDA4LDcgQEAKICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIDY6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGhvcml6b250YWwgdG8gdmVydGljYWwgY3VydmUgKi8KLSAgICAgICAgICBGVF9UUkFDRTYoKCAiLSBodiBjdXJ2ZSAiICkpOworICAgICAgICAgIEZUX1RSQUNFNigoICItIGh2IGN1cnZlIiApKTsKICAgICAgICAgICBhcmdzX2Zvcm1hdCA9IDB4QjhFOwogICAgICAgICAgIGFyZ3NfY291bnQgID0gMzsKICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9wZnIvcGZyZ2xvYWQuaCBiL3NyYy9wZnIvcGZyZ2xvYWQuaAppbmRleCBiNzI2ZDU2Li45MmE1OWJjIDEwMDY0NAotLS0gYS9zcmMvcGZyL3Bmcmdsb2FkLmgKKysrIGIvc3JjL3Bmci9wZnJnbG9hZC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgUEZSIGdseXBoIGxvYWRlciAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3Bmci9wZnJsb2FkLmMgYi9zcmMvcGZyL3BmcmxvYWQuYwppbmRleCBhOWMxZTI4Li5kZTg1ZWU2IDEwMDY0NAotLS0gYS9zcmMvcGZyL3BmcmxvYWQuYworKysgYi9zcmMvcGZyL3BmcmxvYWQuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIFBGUiBsb2FkZXIgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTI2OCw5ICsyNjgsNyBAQAogICAgICAgICAgaGVhZGVyLT52ZXJzaW9uICAgICA+IDQgICAgICAgICAgIHx8CiAgICAgICAgICBoZWFkZXItPmhlYWRlcl9zaXplIDwgNTggICAgICAgICAgfHwKICAgICAgICAgIGhlYWRlci0+c2lnbmF0dXJlMiAhPSAweDBEMEEgICAgICApICAgIC8qIENSL0xGICAqLwotICAgIHsKICAgICAgIHJlc3VsdCA9IDA7Ci0gICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKICAgfQpAQCAtNDA2LDExICs0MDQsOSBAQAogICAgICAgfQogCiAgICAgICBpZiAoIGZsYWdzICYgUEZSX0xPR19CT0xEICkKLSAgICAgIHsKICAgICAgICAgbG9nX2ZvbnQtPmJvbGRfdGhpY2tuZXNzID0gKCBmbGFncyAmIFBGUl9MT0dfMkJZVEVfQk9MRCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gUEZSX05FWFRfU0hPUlQoIHAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFBGUl9ORVhUX0JZVEUoIHAgKTsKLSAgICAgIH0KIAogICAgICAgaWYgKCBmbGFncyAmIFBGUl9MT0dfRVhUUkFfSVRFTVMgKQogICAgICAgewpAQCAtNjA0LDcgKzYwMCw3IEBACiAgICAgaWYgKCBGVF9RTkVXX0FSUkFZKCBzbmFwcywgY291bnQgKSApCiAgICAgICBnb3RvIEV4aXQ7CiAKLSAgICBwaHlfZm9udC0+dmVydGljYWwuc3RlbV9zbmFwcyA9IHNuYXBzOworICAgIHBoeV9mb250LT52ZXJ0aWNhbC5zdGVtX3NuYXBzICAgPSBzbmFwczsKICAgICBwaHlfZm9udC0+aG9yaXpvbnRhbC5zdGVtX3NuYXBzID0gc25hcHMgKyBudW1fdmVydDsKIAogICAgIGZvciAoIDsgY291bnQgPiAwOyBjb3VudC0tLCBzbmFwcysrICkKQEAgLTYyMSw3ICs2MTcsNiBAQAogICB9CiAKIAotCiAgIC8qIGxvYWQga2VybmluZyBwYWlyIGRhdGEgKi8KICAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCiAgIHBmcl9leHRyYV9pdGVtX2xvYWRfa2VybmluZ19wYWlycyggRlRfQnl0ZSogICAgIHAsCkBAIC04NTcsOCArODUyLDE2IEBACiAgICAgcGh5X2ZvbnQtPmJib3gueU1heCAgICAgICAgICA9IFBGUl9ORVhUX1NIT1JUKCBwICk7CiAgICAgcGh5X2ZvbnQtPmZsYWdzICAgICAgPSBmbGFncyA9IFBGUl9ORVhUX0JZVEUoIHAgKTsKIAorICAgIGlmICggIXBoeV9mb250LT5vdXRsaW5lX3Jlc29sdXRpb24gfHwKKyAgICAgICAgICFwaHlfZm9udC0+bWV0cmljc19yZXNvbHV0aW9uICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1RhYmxlICk7CisgICAgICBGVF9FUlJPUigoICJwZnJfcGh5X2ZvbnRfbG9hZDogaW52YWxpZCByZXNvbHV0aW9uXG4iICkpOworICAgICAgZ290byBGYWlsOworICAgIH0KKwogICAgIC8qIGdldCB0aGUgc3RhbmRhcmQgYWR2YW5jZSBmb3Igbm9uLXByb3BvcnRpb25hbCBmb250cyAqLwotICAgIGlmICggIShmbGFncyAmIFBGUl9QSFlfUFJPUE9SVElPTkFMKSApCisgICAgaWYgKCAhKCBmbGFncyAmIFBGUl9QSFlfUFJPUE9SVElPTkFMICkgKQogICAgIHsKICAgICAgIFBGUl9DSEVDSyggMiApOwogICAgICAgcGh5X2ZvbnQtPnN0YW5kYXJkX2FkdmFuY2UgPSBQRlJfTkVYVF9TSE9SVCggcCApOwpAQCAtODY5LDE0ICs4NzIsMTMgQEAKICAgICB7CiAgICAgICBlcnJvciA9IHBmcl9leHRyYV9pdGVtc19wYXJzZSggJnAsIGxpbWl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmcl9waHlfZm9udF9leHRyYV9pdGVtcywgcGh5X2ZvbnQgKTsKLQogICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgIGdvdG8gRmFpbDsKICAgICB9CiAKICAgICAvKiBJbiBjZXJ0YWluIGZvbnRzLCB0aGUgYXV4aWxpYXJ5IGJ5dGVzIGNvbnRhaW4gaW50ZXJlc3RpbmcgICAqLwogICAgIC8qIGluZm9ybWF0aW9uLiAgVGhlc2UgYXJlIG5vdCBpbiB0aGUgc3BlY2lmaWNhdGlvbiBidXQgY2FuIGJlICovCi0gICAgLyogZ3Vlc3NlZCBieSBsb29raW5nIGF0IHRoZSBjb250ZW50IG9mIGEgZmV3IFBGUjAgZm9udHMuICAgICAgKi8KKyAgICAvKiBndWVzc2VkIGJ5IGxvb2tpbmcgYXQgdGhlIGNvbnRlbnQgb2YgYSBmZXcgJ1BGUjAnIGZvbnRzLiAgICAqLwogICAgIFBGUl9DSEVDSyggMyApOwogICAgIG51bV9hdXggPSBQRlJfTkVYVF9VTE9ORyggcCApOwogCkBAIC05NzUsNiArOTc3LDEzIEBACiAgICAgICBwaHlfZm9udC0+bnVtX2NoYXJzICAgID0gY291bnQgPSBQRlJfTkVYVF9VU0hPUlQoIHAgKTsKICAgICAgIHBoeV9mb250LT5jaGFyc19vZmZzZXQgPSBvZmZzZXQgKyAoRlRfT2Zmc2V0KSggcCAtIHN0cmVhbS0+Y3Vyc29yICk7CiAKKyAgICAgIGlmICggIXBoeV9mb250LT5udW1fY2hhcnMgKQorICAgICAgeworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1RhYmxlICk7CisgICAgICAgIEZUX0VSUk9SKCggInBmcl9waHlfZm9udF9sb2FkOiBubyBnbHlwaHNcbiIgKSk7CisgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgIH0KKwogICAgICAgU2l6ZSA9IDEgKyAxICsgMjsKICAgICAgIGlmICggZmxhZ3MgJiBQRlJfUEhZXzJCWVRFX0NIQVJDT0RFICkKICAgICAgICAgU2l6ZSArPSAxOwpAQCAtOTkzLDcgKzEwMDIsNyBAQAogCiAgICAgICBQRlJfQ0hFQ0tfU0laRSggY291bnQgKiBTaXplICk7CiAKLSAgICAgIGlmICggRlRfTkVXX0FSUkFZKCBwaHlfZm9udC0+Y2hhcnMsIGNvdW50ICkgKQorICAgICAgaWYgKCBGVF9RTkVXX0FSUkFZKCBwaHlfZm9udC0+Y2hhcnMsIGNvdW50ICkgKQogICAgICAgICBnb3RvIEZhaWw7CiAKICAgICAgIGZvciAoIG4gPSAwOyBuIDwgY291bnQ7IG4rKyApCmRpZmYgLS1naXQgYS9zcmMvcGZyL3BmcmxvYWQuaCBiL3NyYy9wZnIvcGZybG9hZC5oCmluZGV4IDRmNDY3ZDEuLmQ3YjIwYTQgMTAwNjQ0Ci0tLSBhL3NyYy9wZnIvcGZybG9hZC5oCisrKyBiL3NyYy9wZnIvcGZybG9hZC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgUEZSIGxvYWRlciAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3Bmci9wZnJvYmpzLmMgYi9zcmMvcGZyL3Bmcm9ianMuYwppbmRleCAzMDgwY2I2Li4zZGI4ZjBhIDEwMDY0NAotLS0gYS9zcmMvcGZyL3Bmcm9ianMuYworKysgYi9zcmMvcGZyL3Bmcm9ianMuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIFBGUiBvYmplY3QgbWV0aG9kcyAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMTMwLDE0ICsxMzAsMTQgQEAKICAgICBpZiAoIGVycm9yICkKICAgICAgIGdvdG8gRXhpdDsKIAotICAgIC8qIG5vdyBsb2FkIHRoZSBwaHlzaWNhbCBmb250IGRlc2NyaXB0b3IgKi8KKyAgICAvKiBsb2FkIHRoZSBwaHlzaWNhbCBmb250IGRlc2NyaXB0b3IgKi8KICAgICBlcnJvciA9IHBmcl9waHlfZm9udF9sb2FkKCAmZmFjZS0+cGh5X2ZvbnQsIHN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5sb2dfZm9udC5waHlzX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5sb2dfZm9udC5waHlzX3NpemUgKTsKICAgICBpZiAoIGVycm9yICkKICAgICAgIGdvdG8gRXhpdDsKIAotICAgIC8qIG5vdyBzZXQgdXAgYWxsIHJvb3QgZmFjZSBmaWVsZHMgKi8KKyAgICAvKiBzZXQgdXAgYWxsIHJvb3QgZmFjZSBmaWVsZHMgKi8KICAgICB7CiAgICAgICBQRlJfUGh5Rm9udCAgcGh5X2ZvbnQgPSAmZmFjZS0+cGh5X2ZvbnQ7CiAKQEAgLTE2MCw3ICsxNjAsNyBAQAogICAgICAgICBpZiAoIG5uID09IHBoeV9mb250LT5udW1fY2hhcnMgKQogICAgICAgICB7CiAgICAgICAgICAgaWYgKCBwaHlfZm9udC0+bnVtX3N0cmlrZXMgPiAwICkKLSAgICAgICAgICAgIHBmcmZhY2UtPmZhY2VfZmxhZ3MgPSAwOyAgICAgICAgLyogbm90IHNjYWxhYmxlICovCisgICAgICAgICAgICBwZnJmYWNlLT5mYWNlX2ZsYWdzICY9IH5GVF9GQUNFX0ZMQUdfU0NBTEFCTEU7CiAgICAgICAgICAgZWxzZQogICAgICAgICAgIHsKICAgICAgICAgICAgIEZUX0VSUk9SKCggInBmcl9mYWNlX2luaXQ6IGZvbnQgZG9lc24ndCBjb250YWluIGdseXBoc1xuIiApKTsKQEAgLTE3MCw3ICsxNzAsNyBAQAogICAgICAgICB9CiAgICAgICB9CiAKLSAgICAgIGlmICggKCBwaHlfZm9udC0+ZmxhZ3MgJiBQRlJfUEhZX1BST1BPUlRJT05BTCApID09IDAgKQorICAgICAgaWYgKCAhKCBwaHlfZm9udC0+ZmxhZ3MgJiBQRlJfUEhZX1BST1BPUlRJT05BTCApICkKICAgICAgICAgcGZyZmFjZS0+ZmFjZV9mbGFncyB8PSBGVF9GQUNFX0ZMQUdfRklYRURfV0lEVEg7CiAKICAgICAgIGlmICggcGh5X2ZvbnQtPmZsYWdzICYgUEZSX1BIWV9WRVJUSUNBTCApCkBAIC0yMDcsNyArMjA3LDcgQEAKIAogICAgICAgcGZyZmFjZS0+aGVpZ2h0ID0gKEZUX1Nob3J0KSggKCBwZnJmYWNlLT51bml0c19wZXJfRU0gKiAxMiApIC8gMTAgKTsKICAgICAgIGlmICggcGZyZmFjZS0+aGVpZ2h0IDwgcGZyZmFjZS0+YXNjZW5kZXIgLSBwZnJmYWNlLT5kZXNjZW5kZXIgKQotICAgICAgICBwZnJmYWNlLT5oZWlnaHQgPSAoRlRfU2hvcnQpKHBmcmZhY2UtPmFzY2VuZGVyIC0gcGZyZmFjZS0+ZGVzY2VuZGVyKTsKKyAgICAgICAgcGZyZmFjZS0+aGVpZ2h0ID0gKEZUX1Nob3J0KSggcGZyZmFjZS0+YXNjZW5kZXIgLSBwZnJmYWNlLT5kZXNjZW5kZXIgKTsKIAogICAgICAgaWYgKCBwaHlfZm9udC0+bnVtX3N0cmlrZXMgPiAwICkKICAgICAgIHsKQEAgLTMzOCw3ICszMzgsNyBAQAogICAgIH0KIAogICAgIC8qIHRyeSB0byBsb2FkIGFuIGVtYmVkZGVkIGJpdG1hcCAqLwotICAgIGlmICggKCBsb2FkX2ZsYWdzICYgKCBGVF9MT0FEX05PX1NDQUxFIHwgRlRfTE9BRF9OT19CSVRNQVAgKSApID09IDAgKQorICAgIGlmICggISggbG9hZF9mbGFncyAmICggRlRfTE9BRF9OT19TQ0FMRSB8IEZUX0xPQURfTk9fQklUTUFQICkgKSApCiAgICAgewogICAgICAgZXJyb3IgPSBwZnJfc2xvdF9sb2FkX2JpdG1hcCgKICAgICAgICAgICAgICAgICBzbG90LApAQCAtNDg2LDE3ICs0ODYsMTYgQEAKICAgICBrZXJuaW5nLT54ID0gMDsKICAgICBrZXJuaW5nLT55ID0gMDsKIAotICAgIGlmICggZ2x5cGgxID4gMCApCi0gICAgICBnbHlwaDEtLTsKKyAgICAvKiBQRlIgaW5kZXhpbmcgc2tpcHMgLm5vdGRlZiwgd2hpY2ggYmVjb21lcyBVSU5UX01BWCAqLworICAgIGdseXBoMS0tOworICAgIGdseXBoMi0tOwogCi0gICAgaWYgKCBnbHlwaDIgPiAwICkKLSAgICAgIGdseXBoMi0tOwotCi0gICAgLyogY29udmVydCBnbHlwaCBpbmRpY2VzIHRvIGNoYXJhY3RlciBjb2RlcyAqLwotICAgIGlmICggZ2x5cGgxID4gcGh5X2ZvbnQtPm51bV9jaGFycyB8fAotICAgICAgICAgZ2x5cGgyID4gcGh5X2ZvbnQtPm51bV9jaGFycyApCisgICAgLyogY2hlY2sgdGhlIGFycmF5IGJvdW5kcywgLm5vdGRlZiBpcyBhdXRvbWF0aWNhbGx5IG91dCAqLworICAgIGlmICggZ2x5cGgxID49IHBoeV9mb250LT5udW1fY2hhcnMgfHwKKyAgICAgICAgIGdseXBoMiA+PSBwaHlfZm9udC0+bnVtX2NoYXJzICkKICAgICAgIGdvdG8gRXhpdDsKIAorICAgIC8qIGNvbnZlcnQgZ2x5cGggaW5kaWNlcyB0byBjaGFyYWN0ZXIgY29kZXMgKi8KICAgICBjb2RlMSA9IHBoeV9mb250LT5jaGFyc1tnbHlwaDFdLmNoYXJfY29kZTsKICAgICBjb2RlMiA9IHBoeV9mb250LT5jaGFyc1tnbHlwaDJdLmNoYXJfY29kZTsKICAgICBwYWlyICA9IFBGUl9LRVJOX0lOREVYKCBjb2RlMSwgY29kZTIgKTsKZGlmZiAtLWdpdCBhL3NyYy9wZnIvcGZyb2Jqcy5oIGIvc3JjL3Bmci9wZnJvYmpzLmgKaW5kZXggNzBiMDUzOS4uZmNmOGMzOCAxMDA2NDQKLS0tIGEvc3JjL3Bmci9wZnJvYmpzLmgKKysrIGIvc3JjL3Bmci9wZnJvYmpzLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBQRlIgb2JqZWN0IG1ldGhvZHMgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9wZnIvcGZyc2JpdC5jIGIvc3JjL3Bmci9wZnJzYml0LmMKaW5kZXggMjU1ZmQ1OC4uNDZhOTg4ZSAxMDA2NDQKLS0tIGEvc3JjL3Bmci9wZnJzYml0LmMKKysrIGIvc3JjL3Bmci9wZnJzYml0LmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBQRlIgYml0bWFwIGxvYWRlciAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMjgyLDcgKzI4Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nKiAgZm91bmRfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyogIGZvdW5kX3NpemUgKQogICB7Ci0gICAgRlRfVUludCAgIG1pbiwgbWF4LCBjaGFyX2xlbjsKKyAgICBGVF9VSW50ICAgbWluLCBtYXgsIG1pZCwgY2hhcl9sZW47CiAgICAgRlRfQm9vbCAgIHR3byA9IEZUX0JPT0woICpmbGFncyAmIFBGUl9CSVRNQVBfMkJZVEVfQ0hBUkNPREUgKTsKICAgICBGVF9CeXRlKiAgYnVmZjsKIApAQCAtMzQ5LDE0ICszNDksMTQgQEAKIAogICAgIG1pbiA9IDA7CiAgICAgbWF4ID0gY291bnQ7CisgICAgbWlkID0gbWluICsgKCBtYXggLSBtaW4gKSAvIDI7CiAKICAgICAvKiBiaW5hcnkgc2VhcmNoICovCiAgICAgd2hpbGUgKCBtaW4gPCBtYXggKQogICAgIHsKLSAgICAgIEZUX1VJbnQgIG1pZCwgY29kZTsKKyAgICAgIEZUX1VJbnQgIGNvZGU7CiAKIAotICAgICAgbWlkICA9ICggbWluICsgbWF4ICkgPj4gMTsKICAgICAgIGJ1ZmYgPSBiYXNlICsgbWlkICogY2hhcl9sZW47CiAKICAgICAgIGlmICggdHdvICkKQEAgLTM3MCw2ICszNzAsMTEgQEAKICAgICAgICAgbWluID0gbWlkICsgMTsKICAgICAgIGVsc2UKICAgICAgICAgZ290byBGb3VuZF9JdDsKKworICAgICAgLyogcmVhc29uYWJsZSBwcmVkaWN0aW9uIGluIGEgY29udGludW91cyBibG9jayAqLworICAgICAgbWlkICs9IGNoYXJfY29kZSAtIGNvZGU7CisgICAgICBpZiAoIG1pZCA+PSBtYXggfHwgbWlkIDwgbWluICkKKyAgICAgICAgbWlkID0gbWluICsgKCBtYXggLSBtaW4gKSAvIDI7CiAgICAgfQogCiAgIEZhaWw6CkBAIC0zOTEsNyArMzk2LDcgQEAKICAgfQogCiAKLSAgLyogbG9hZCBiaXRtYXAgbWV0cmljcy4gIGAqcGFkdmFuY2UnIG11c3QgYmUgc2V0IHRvIHRoZSBkZWZhdWx0IHZhbHVlICovCisgIC8qIGxvYWQgYml0bWFwIG1ldHJpY3MuICBgKmFhZHZhbmNlJyBtdXN0IGJlIHNldCB0byB0aGUgZGVmYXVsdCB2YWx1ZSAqLwogICAvKiBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgIHN0YXRpYyBGVF9FcnJvcgpAQCAtNTc1LDcgKzU4MCw3IEBACiAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKICAgcGZyX3Nsb3RfbG9hZF9iaXRtYXAoIFBGUl9TbG90ICBnbHlwaCwKICAgICAgICAgICAgICAgICAgICAgICAgIFBGUl9TaXplICBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIGdseXBoX2luZGV4LApAQCAtNjI4LDcgKzYzMyw3IEBACiAgICAgICBpZiAoIHN0cmlrZS0+ZmxhZ3MgJiBQRlJfQklUTUFQXzNCWVRFX09GRlNFVCApCiAgICAgICAgIGNoYXJfbGVuICs9IDE7CiAKLSAgICAgIC8qIGFjY2VzcyBkYXRhIGRpcmVjdGx5IGluIHRoZSBmcmFtZSB0byBzcGVlZCBsb29rdXBzICovCisgICAgICAvKiBhY2Nlc3MgZGF0YSBkaXJlY3RseSBpbiB0aGUgZnJhbWUgdG8gc3BlZWQgdXAgbG9va3VwcyAqLwogICAgICAgaWYgKCBGVF9TVFJFQU1fU0VFSyggcGh5cy0+YmN0X29mZnNldCArIHN0cmlrZS0+YmN0X29mZnNldCApIHx8CiAgICAgICAgICAgIEZUX0ZSQU1FX0VOVEVSKCBjaGFyX2xlbiAqIHN0cmlrZS0+bnVtX2JpdG1hcHMgKSAgICAgICAgKQogICAgICAgICBnb3RvIEV4aXQ7CkBAIC03NDQsOCArNzQ5LDggQEAKICAgICAgICAgICAgeXBvcyA+IEZUX0lOVF9NQVggLSAoRlRfTG9uZyl5c2l6ZSB8fAogICAgICAgICAgICB5cG9zICsgKEZUX0xvbmcpeXNpemUgPCBGVF9JTlRfTUlOICkKICAgICAgIHsKLSAgICAgICAgRlRfVFJBQ0UxKCggInBmcl9zbG90X2xvYWRfYml0bWFwOiIgKSk7Ci0gICAgICAgIEZUX1RSQUNFMSgoICJodWdlIGJpdG1hcCBnbHlwaCAlbGR4JWxkIG92ZXIgRlRfR2x5cGhTbG90XG4iLAorICAgICAgICBGVF9UUkFDRTEoKCAicGZyX3Nsb3RfbG9hZF9iaXRtYXA6IgorICAgICAgICAgICAgICAgICAgICAiIGh1Z2UgYml0bWFwIGdseXBoICVsZHglbGQgb3ZlciBGVF9HbHlwaFNsb3RcbiIsCiAgICAgICAgICAgICAgICAgICAgICB4cG9zLCB5cG9zICkpOwogICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1BpeGVsX1NpemUgKTsKICAgICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9wZnIvcGZyc2JpdC5oIGIvc3JjL3Bmci9wZnJzYml0LmgKaW5kZXggZjUwZDgwMS4uM2UxZGJhOSAxMDA2NDQKLS0tIGEvc3JjL3Bmci9wZnJzYml0LmgKKysrIGIvc3JjL3Bmci9wZnJzYml0LmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBQRlIgYml0bWFwIGxvYWRlciAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3Bmci9wZnJ0eXBlcy5oIGIvc3JjL3Bmci9wZnJ0eXBlcy5oCmluZGV4IGRjNGZlYWQuLjJmODkwOWYgMTAwNjQ0Ci0tLSBhL3NyYy9wZnIvcGZydHlwZXMuaAorKysgYi9zcmMvcGZyL3BmcnR5cGVzLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBQRlIgZGF0YSBzdHJ1Y3R1cmVzIChzcGVjaWZpY2F0aW9uIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9wZnIvcnVsZXMubWsgYi9zcmMvcGZyL3J1bGVzLm1rCmluZGV4IDAwYzc5MWYuLjUwNjk1ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9wZnIvcnVsZXMubWsKKysrIGIvc3JjL3Bmci9ydWxlcy5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL3NyYy9wc2F1eC9hZm1wYXJzZS5jIGIvc3JjL3BzYXV4L2FmbXBhcnNlLmMKaW5kZXggMGFkMTc2MC4uNjhmOTU2OSAxMDA2NDQKLS0tIGEvc3JjL3BzYXV4L2FmbXBhcnNlLmMKKysrIGIvc3JjL3BzYXV4L2FmbXBhcnNlLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBBRk0gcGFyc2VyIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC01NjMsNyArNTYzLDcgQEAKICAgfQogCiAKLSAgRlRfTE9DQUwoIHZvaWQgKQorICBGVF9MT0NBTF9ERUYoIHZvaWQgKQogICBhZm1fcGFyc2VyX2RvbmUoIEFGTV9QYXJzZXIgIHBhcnNlciApCiAgIHsKICAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IHBhcnNlci0+bWVtb3J5OwpAQCAtMTA2MSw3ICsxMDYxLDcgQEAKICAgICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgICAgZ290byBGYWlsOwogICAgICAgICAvKiB3ZSBvbmx5IHN1cHBvcnQga2VybiBkYXRhLCBzbyAuLi4gKi8KLSAgICAgICAgLyogZmFsbCB0aHJvdWdoICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIEZBTExfVEhST1VHSDsKIAogICAgICAgY2FzZSBBRk1fVE9LRU5fRU5ERk9OVE1FVFJJQ1M6CiAgICAgICAgIHJldHVybiBGVF9FcnJfT2s7CmRpZmYgLS1naXQgYS9zcmMvcHNhdXgvYWZtcGFyc2UuaCBiL3NyYy9wc2F1eC9hZm1wYXJzZS5oCmluZGV4IDQ0YjA1YjIuLjJkM2I2ZTYgMTAwNjQ0Ci0tLSBhL3NyYy9wc2F1eC9hZm1wYXJzZS5oCisrKyBiL3NyYy9wc2F1eC9hZm1wYXJzZS5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQUZNIHBhcnNlciAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3BzYXV4L2NmZmRlY29kZS5jIGIvc3JjL3BzYXV4L2NmZmRlY29kZS5jCmluZGV4IDI5YjY4YTguLjJjZDkxYzkgMTAwNjQ0Ci0tLSBhL3NyYy9wc2F1eC9jZmZkZWNvZGUuYworKysgYi9zcmMvcHNhdXgvY2ZmZGVjb2RlLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBQb3N0U2NyaXB0IENGRiAoVHlwZSAyKSBkZWNvZGluZyByb3V0aW5lcyAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMjQ4LDcgKzI0OCw3IEBACiAgICAgZWxzZQogI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwgKi8KICAgICB7Ci0gICAgICBDRkZfRm9udCBjZmYgPSAoQ0ZGX0ZvbnQpKGZhY2UtPmV4dHJhLmRhdGEpOworICAgICAgQ0ZGX0ZvbnQgY2ZmID0gKENGRl9Gb250KSggZmFjZS0+ZXh0cmEuZGF0YSApOwogCiAKICAgICAgIGJjaGFyX2luZGV4ID0gY2ZmX2xvb2t1cF9nbHlwaF9ieV9zdGRjaGFyY29kZSggY2ZmLCBiY2hhciApOwpkaWZmIC0tZ2l0IGEvc3JjL3BzYXV4L2NmZmRlY29kZS5oIGIvc3JjL3BzYXV4L2NmZmRlY29kZS5oCmluZGV4IGIxMzE0ZWQuLmU4YmI0MDAgMTAwNjQ0Ci0tLSBhL3NyYy9wc2F1eC9jZmZkZWNvZGUuaAorKysgYi9zcmMvcHNhdXgvY2ZmZGVjb2RlLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBQb3N0U2NyaXB0IENGRiAoVHlwZSAyKSBkZWNvZGluZyByb3V0aW5lcyAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3BzYXV4L21vZHVsZS5tayBiL3NyYy9wc2F1eC9tb2R1bGUubWsKaW5kZXggMDZmN2U3Mi4uYzZmYjRlYiAxMDA2NDQKLS0tIGEvc3JjL3BzYXV4L21vZHVsZS5taworKysgYi9zcmMvcHNhdXgvbW9kdWxlLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvc3JjL3BzYXV4L3BzYXV4LmMgYi9zcmMvcHNhdXgvcHNhdXguYwppbmRleCAyOTYwYzhiLi41ODc5ZWQxIDEwMDY0NAotLS0gYS9zcmMvcHNhdXgvcHNhdXguYworKysgYi9zcmMvcHNhdXgvcHNhdXguYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIGF1eGlsaWFyeSBQb3N0U2NyaXB0IGRyaXZlciBjb21wb25lbnQgKGJvZHkgb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3BzYXV4L3BzYXV4ZXJyLmggYi9zcmMvcHNhdXgvcHNhdXhlcnIuaAppbmRleCBlOGVlMjkxLi44OTVmZmE0IDEwMDY0NAotLS0gYS9zcmMvcHNhdXgvcHNhdXhlcnIuaAorKysgYi9zcmMvcHNhdXgvcHNhdXhlcnIuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFBTIGF1eGlsaWFyeSBtb2R1bGUgZXJyb3IgY29kZXMgKHNwZWNpZmljYXRpb24gb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3BzYXV4L3BzYXV4bW9kLmMgYi9zcmMvcHNhdXgvcHNhdXhtb2QuYwppbmRleCA1MmRhMjMzLi40NWUzNWFhIDEwMDY0NAotLS0gYS9zcmMvcHNhdXgvcHNhdXhtb2QuYworKysgYi9zcmMvcHNhdXgvcHNhdXhtb2QuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIGF1eGlsaWFyeSBQb3N0U2NyaXB0IG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3BzYXV4L3BzYXV4bW9kLmggYi9zcmMvcHNhdXgvcHNhdXhtb2QuaAppbmRleCBlM2U4MDYzLi45NGRiZjQ4IDEwMDY0NAotLS0gYS9zcmMvcHNhdXgvcHNhdXhtb2QuaAorKysgYi9zcmMvcHNhdXgvcHNhdXhtb2QuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIGF1eGlsaWFyeSBQb3N0U2NyaXB0IG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3BzYXV4L3BzY29udi5jIGIvc3JjL3BzYXV4L3BzY29udi5jCmluZGV4IGMyOGQ2NWQuLmI5YzcxMzggMTAwNjQ0Ci0tLSBhL3NyYy9wc2F1eC9wc2NvbnYuYworKysgYi9zcmMvcHNhdXgvcHNjb252LmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBTb21lIGNvbnZlbmllbmNlIGNvbnZlcnNpb25zIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC01MzUsMTEgKzUzNSwxMSBAQAogCiAgICAgICBpZiAoIHIgJiAxICkKICAgICAgIHsKLSAgICAgICAgKmJ1ZmZlciA9IChGVF9CeXRlKSgqYnVmZmVyICsgYyk7CisgICAgICAgICpidWZmZXIgPSAoRlRfQnl0ZSkoICpidWZmZXIgKyBjICk7CiAgICAgICAgIGJ1ZmZlcisrOwogICAgICAgfQogICAgICAgZWxzZQotICAgICAgICAqYnVmZmVyID0gKEZUX0J5dGUpKGMgPDwgNCk7CisgICAgICAgICpidWZmZXIgPSAoRlRfQnl0ZSkoIGMgPDwgNCApOwogCiAgICAgICByKys7CiAgICAgfQpAQCAtNTcyLDggKzU3Miw4IEBACiAgICAgaWYgKCBwID49IGxpbWl0ICkKICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKCBuID4gKEZUX1VJbnQpKGxpbWl0IC0gcCkgKQotICAgICAgbiA9IChGVF9VSW50KShsaW1pdCAtIHApOworICAgIGlmICggbiA+IChGVF9VSW50KSggbGltaXQgLSBwICkgKQorICAgICAgbiA9IChGVF9VSW50KSggbGltaXQgLSBwICk7CiAKICAgICBmb3IgKCByID0gMDsgciA8IG47IHIrKyApCiAgICAgewpkaWZmIC0tZ2l0IGEvc3JjL3BzYXV4L3BzY29udi5oIGIvc3JjL3BzYXV4L3BzY29udi5oCmluZGV4IGNkOTFhN2IuLmI3YzNlZTAgMTAwNjQ0Ci0tLSBhL3NyYy9wc2F1eC9wc2NvbnYuaAorKysgYi9zcmMvcHNhdXgvcHNjb252LmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBTb21lIGNvbnZlbmllbmNlIGNvbnZlcnNpb25zIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvcHNhdXgvcHNmaXhlZC5oIGIvc3JjL3BzYXV4L3BzZml4ZWQuaAppbmRleCA3ZGZmOWVmLi4yOTlkMDc2IDEwMDY0NAotLS0gYS9zcmMvcHNhdXgvcHNmaXhlZC5oCisrKyBiL3NyYy9wc2F1eC9wc2ZpeGVkLmgKQEAgLTIsNyArMiw3IEBACiAgKgogICogcHNmaXhlZC5oCiAgKgotICogICBBZG9iZSdzIGNvZGUgZm9yIEZpeGVkIFBvaW50IE1hdGhlbWF0aWNzIChzcGVjaWZpY2F0aW9uIG9ubHkpLgorICogICBBZG9iZSdzIGNvZGUgZm9yIEZpeGVkLVBvaW50IE1hdGhlbWF0aWNzIChzcGVjaWZpY2F0aW9uIG9ubHkpLgogICoKICAqIENvcHlyaWdodCAyMDA3LTIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuCiAgKgpAQCAtNDMsMTAgKzQzLDEwIEBACiBGVF9CRUdJTl9IRUFERVIKIAogCi0gIC8qIHJhc3Rlcml6ZXIgaW50ZWdlciBhbmQgZml4ZWQgcG9pbnQgYXJpdGhtZXRpYyBtdXN0IGJlIDMyLWJpdCAqLworICAvKiByYXN0ZXJpemVyIGludGVnZXIgYW5kIGZpeGVkLXBvaW50IGFyaXRobWV0aWMgbXVzdCBiZSAzMi1iaXQgKi8KIAogI2RlZmluZSAgIENGMl9GaXhlZCAgQ0YyX0YxNkRvdDE2Ci0gIHR5cGVkZWYgRlRfSW50MzIgICBDRjJfRnJhYzsgICAvKiAyLjMwIGZpeGVkIHBvaW50ICovCisgIHR5cGVkZWYgRlRfSW50MzIgICBDRjJfRnJhYzsgICAvKiAyLjMwIGZpeGVkLXBvaW50ICovCiAKIAogI2RlZmluZSBDRjJfRklYRURfTUFYICAgICAgKCAoQ0YyX0ZpeGVkKTB4N0ZGRkZGRkZMICkKZGlmZiAtLWdpdCBhL3NyYy9wc2F1eC9wc2Z0LmMgYi9zcmMvcHNhdXgvcHNmdC5jCmluZGV4IGFjNzJkODIuLjYxODg2NGUgMTAwNjQ0Ci0tLSBhL3NyYy9wc2F1eC9wc2Z0LmMKKysrIGIvc3JjL3BzYXV4L3BzZnQuYwpAQCAtNjgsMTEgKzY4LDEwIEBACiAgICAgQ0YyX0ZpeGVkICBtYXhTY2FsZTsKIAogCi0gICAgRlRfQVNTRVJUKCB1bml0c1BlckVtID4gMCApOwotCiAgICAgaWYgKCB0cmFuc2Zvcm0tPmEgPD0gMCB8fCB0cmFuc2Zvcm0tPmQgPD0gMCApCiAgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfU2l6ZV9IYW5kbGUgKTsKIAorICAgIEZUX0FTU0VSVCggdW5pdHNQZXJFbSA+IDAgKTsKICAgICBGVF9BU1NFUlQoIHRyYW5zZm9ybS0+YiA9PSAwICYmIHRyYW5zZm9ybS0+YyA9PSAwICk7CiAgICAgRlRfQVNTRVJUKCB0cmFuc2Zvcm0tPnR4ID09IDAgJiYgdHJhbnNmb3JtLT50eSA9PSAwICk7CiAKQEAgLTI5Nyw3ICsyOTYsNiBAQAogICBjZjJfZ2V0VW5pdHNQZXJFbSggUFNfRGVjb2RlciogIGRlY29kZXIgKQogICB7CiAgICAgRlRfQVNTRVJUKCBkZWNvZGVyICYmIGRlY29kZXItPmJ1aWxkZXIuZmFjZSApOwotICAgIEZUX0FTU0VSVCggZGVjb2Rlci0+YnVpbGRlci5mYWNlLT51bml0c19wZXJfRU0gKTsKIAogICAgIHJldHVybiBkZWNvZGVyLT5idWlsZGVyLmZhY2UtPnVuaXRzX3Blcl9FTTsKICAgfQpkaWZmIC0tZ2l0IGEvc3JjL3BzYXV4L3BzZ2x1ZS5oIGIvc3JjL3BzYXV4L3BzZ2x1ZS5oCmluZGV4IDAyMmFhZmIuLjYzMDg1ZDcgMTAwNjQ0Ci0tLSBhL3NyYy9wc2F1eC9wc2dsdWUuaAorKysgYi9zcmMvcHNhdXgvcHNnbHVlLmgKQEAgLTcyLDcgKzcyLDcgQEAKICAgfSBDRjJfUGF0aE9wOwogCiAKLSAgLyogYSBtYXRyaXggb2YgZml4ZWQgcG9pbnQgdmFsdWVzICovCisgIC8qIGEgbWF0cml4IG9mIGZpeGVkLXBvaW50IHZhbHVlcyAqLwogICB0eXBlZGVmIHN0cnVjdCAgQ0YyX01hdHJpeF8KICAgewogICAgIENGMl9GMTZEb3QxNiAgYTsKZGlmZiAtLWdpdCBhL3NyYy9wc2F1eC9wc2hpbnRzLmMgYi9zcmMvcHNhdXgvcHNoaW50cy5jCmluZGV4IGFkNDcyYzkuLjZmNDRkMGEgMTAwNjQ0Ci0tLSBhL3NyYy9wc2F1eC9wc2hpbnRzLmMKKysrIGIvc3JjL3BzYXV4L3BzaGludHMuYwpAQCAtNjkzLDggKzY5MywxMCBAQAogICAgICAgICBDRjJfRml4ZWQgIG1pZHBvaW50ID0KICAgICAgICAgICAgICAgICAgICAgIGNmMl9oaW50bWFwX21hcCgKICAgICAgICAgICAgICAgICAgICAgICAgaGludG1hcC0+aW5pdGlhbEhpbnRNYXAsCi0gICAgICAgICAgICAgICAgICAgICAgIEFERF9JTlQzMiggc2Vjb25kSGludEVkZ2UtPmNzQ29vcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RIaW50RWRnZS0+Y3NDb29yZCApIC8gMiApOworICAgICAgICAgICAgICAgICAgICAgICBBRERfSU5UMzIoCisgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RIaW50RWRnZS0+Y3NDb29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTVUJfSU5UMzIgKCBzZWNvbmRIaW50RWRnZS0+Y3NDb29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdEhpbnRFZGdlLT5jc0Nvb3JkICkgLyAyICkgKTsKICAgICAgICAgQ0YyX0ZpeGVkICBoYWxmV2lkdGggPQogICAgICAgICAgICAgICAgICAgICAgRlRfTXVsRml4KCBTVUJfSU5UMzIoIHNlY29uZEhpbnRFZGdlLT5jc0Nvb3JkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0SGludEVkZ2UtPmNzQ29vcmQgKSAvIDIsCkBAIC0xMDM0LDEwICsxMDM2LDEwIEBACiAgICAgewogICAgICAgRlRfVFJBQ0U2KCggImZsYWdzOiBbcF1haXIgW2ddaG9zdCBbdF1vcCIKICAgICAgICAgICAgICAgICAgICIgW2Jdb3R0b20gW0xdb2NrZWQgW1NdeW50aGV0aWNcbiIgKSk7Ci0gICAgICBGVF9UUkFDRTYoKCAiSW5pdGlhbCBoaW50bWFwIiApKTsKKyAgICAgIEZUX1RSQUNFNigoICJJbml0aWFsIGhpbnRtYXA6XG4iICkpOwogICAgIH0KICAgICBlbHNlCi0gICAgICBGVF9UUkFDRTYoKCAiSGludHM6IiApKTsKKyAgICAgIEZUX1RSQUNFNigoICJIaW50czpcbiIgKSk7CiAjZW5kaWYKIAogICAgIGNmMl9oaW50bWFwX2R1bXAoIGhpbnRtYXAgKTsKQEAgLTEwNTQsNyArMTA1Niw3IEBACiAgICAgLyogYWRqdXN0IHBvc2l0aW9ucyBvZiBoaW50IGVkZ2VzIHRoYXQgYXJlIG5vdCBsb2NrZWQgdG8gYmx1ZSB6b25lcyAqLwogICAgIGNmMl9oaW50bWFwX2FkanVzdEhpbnRzKCBoaW50bWFwICk7CiAKLSAgICBGVF9UUkFDRTYoKCAiKGFkanVzdGVkKVxuIiApKTsKKyAgICBGVF9UUkFDRTYoKCAiSGludHMgYWRqdXN0ZWQ6XG4iICkpOwogICAgIGNmMl9oaW50bWFwX2R1bXAoIGhpbnRtYXAgKTsKIAogICAgIC8qIHNhdmUgdGhlIHBvc2l0aW9uIG9mIGFsbCBoaW50cyB0aGF0IHdlcmUgdXNlZCBpbiB0aGlzIGhpbnQgbWFwOyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3BzYXV4L3BzaW50cnAuYyBiL3NyYy9wc2F1eC9wc2ludHJwLmMKaW5kZXggYzU1MDUzMy4uNmM2NDBlZSAxMDA2NDQKLS0tIGEvc3JjL3BzYXV4L3BzaW50cnAuYworKysgYi9zcmMvcHNhdXgvcHNpbnRycC5jCkBAIC0xOTAwLDcgKzE5MDAsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIC8qICAgICBXZWlnaHRWZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgaWR4OwotICAgICAgICAgICAgICAgICAgICAgICAgUFNfQmxlbmQgIGJsZW5kID0gZGVjb2Rlci0+YmxlbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBQU19CbGVuZCAgYmxlbmQgICAgICAgICA9IGRlY29kZXItPmJsZW5kOworICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIGxlbl9idWlsZGNoYXIgPSBkZWNvZGVyLT5sZW5fYnVpbGRjaGFyOwogCiAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggYXJnX2NudCAhPSAxIHx8ICFibGVuZCApCkBAIC0xOTA4LDE0ICsxOTA5LDE1IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgIGlkeCA9IChGVF9VSW50KWNmMl9zdGFja19wb3BJbnQoIG9wU3RhY2sgKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBpZHggKyBibGVuZC0+bnVtX2Rlc2lnbnMgPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZXItPmxlbl9idWlsZGNoYXIgICApCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGxlbl9idWlsZGNoYXIgPCBibGVuZC0+bnVtX2Rlc2lnbnMgICAgICAgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuX2J1aWxkY2hhciAtIGJsZW5kLT5udW1fZGVzaWducyA8IGlkeCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gVW5leHBlY3RlZF9PdGhlclN1YnI7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ0X21lbWNweSggJmRlY29kZXItPmJ1aWxkY2hhcltpZHhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGVuZC0+d2VpZ2h0X3ZlY3RvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmQtPm51bV9kZXNpZ25zICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mICggYmxlbmQtPndlaWdodF92ZWN0b3JbMF0gKSApOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBkZWNvZGVyLT5idWlsZGNoYXIgJiYgYmxlbmQtPndlaWdodF92ZWN0b3IgKQorICAgICAgICAgICAgICAgICAgICAgICAgICBmdF9tZW1jcHkoICZkZWNvZGVyLT5idWlsZGNoYXJbaWR4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGVuZC0+d2VpZ2h0X3ZlY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGVuZC0+bnVtX2Rlc2lnbnMgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mICggYmxlbmQtPndlaWdodF92ZWN0b3JbMF0gKSApOwogICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvc3JjL3BzYXV4L3Bzb2Jqcy5jIGIvc3JjL3BzYXV4L3Bzb2Jqcy5jCmluZGV4IDMwZjUwMTkuLjhkYTc1NWQgMTAwNjQ0Ci0tLSBhL3NyYy9wc2F1eC9wc29ianMuYworKysgYi9zcmMvcHNhdXgvcHNvYmpzLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBBdXhpbGlhcnkgZnVuY3Rpb25zIGZvciBQb3N0U2NyaXB0IGZvbnRzIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC04NCw3ICs4NCw2IEBACiAKICAgICB0YWJsZS0+bWF4X2VsZW1zID0gY291bnQ7CiAgICAgdGFibGUtPmluaXQgICAgICA9IDB4REVBREJFRUZVTDsKLSAgICB0YWJsZS0+bnVtX2VsZW1zID0gMDsKICAgICB0YWJsZS0+YmxvY2sgICAgID0gTlVMTDsKICAgICB0YWJsZS0+Y2FwYWNpdHkgID0gMDsKICAgICB0YWJsZS0+Y3Vyc29yICAgID0gMDsKQEAgLTk5LDQ1ICs5OCwzMSBAQAogICB9CiAKIAotICBzdGF0aWMgdm9pZAotICBzaGlmdF9lbGVtZW50cyggUFNfVGFibGUgIHRhYmxlLAotICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogIG9sZF9iYXNlICkKLSAgewotICAgIEZUX1B0ckRpc3QgIGRlbHRhICA9IHRhYmxlLT5ibG9jayAtIG9sZF9iYXNlOwotICAgIEZUX0J5dGUqKiAgIG9mZnNldCA9IHRhYmxlLT5lbGVtZW50czsKLSAgICBGVF9CeXRlKiogICBsaW1pdCAgPSBvZmZzZXQgKyB0YWJsZS0+bWF4X2VsZW1zOwotCi0KLSAgICBmb3IgKCA7IG9mZnNldCA8IGxpbWl0OyBvZmZzZXQrKyApCi0gICAgewotICAgICAgaWYgKCBvZmZzZXRbMF0gKQotICAgICAgICBvZmZzZXRbMF0gKz0gZGVsdGE7Ci0gICAgfQotICB9Ci0KLQogICBzdGF0aWMgRlRfRXJyb3IKLSAgcmVhbGxvY2F0ZV90MV90YWJsZSggUFNfVGFibGUgICB0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgRlRfT2Zmc2V0ICBuZXdfc2l6ZSApCisgIHBzX3RhYmxlX3JlYWxsb2MoIFBTX1RhYmxlICAgdGFibGUsCisgICAgICAgICAgICAgICAgICAgIEZUX09mZnNldCAgbmV3X3NpemUgKQogICB7CiAgICAgRlRfTWVtb3J5ICBtZW1vcnkgICA9IHRhYmxlLT5tZW1vcnk7CiAgICAgRlRfQnl0ZSogICBvbGRfYmFzZSA9IHRhYmxlLT5ibG9jazsKICAgICBGVF9FcnJvciAgIGVycm9yOwogCiAKLSAgICAvKiBhbGxvY2F0ZSBuZXcgYmFzZSBibG9jayAqLwotICAgIGlmICggRlRfQUxMT0MoIHRhYmxlLT5ibG9jaywgbmV3X3NpemUgKSApCi0gICAgewotICAgICAgdGFibGUtPmJsb2NrID0gb2xkX2Jhc2U7CisgICAgLyogKHJlKWFsbG9jYXRlIHRoZSBiYXNlIGJsb2NrICovCisgICAgaWYgKCBGVF9SRUFMTE9DKCB0YWJsZS0+YmxvY2ssIHRhYmxlLT5jYXBhY2l0eSwgbmV3X3NpemUgKSApCiAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQogCi0gICAgLyogY29weSBlbGVtZW50cyBhbmQgc2hpZnQgb2Zmc2V0cyAqLwotICAgIGlmICggb2xkX2Jhc2UgKQorICAgIC8qIHJlYmFzZSBvZmZzZXRzIGlmIG5lY2Vzc2FyeSAqLworICAgIGlmICggb2xkX2Jhc2UgJiYgdGFibGUtPmJsb2NrICE9IG9sZF9iYXNlICkKICAgICB7Ci0gICAgICBGVF9NRU1fQ09QWSggdGFibGUtPmJsb2NrLCBvbGRfYmFzZSwgdGFibGUtPmNhcGFjaXR5ICk7Ci0gICAgICBzaGlmdF9lbGVtZW50cyggdGFibGUsIG9sZF9iYXNlICk7Ci0gICAgICBGVF9GUkVFKCBvbGRfYmFzZSApOworICAgICAgRlRfQnl0ZSoqICAgb2Zmc2V0ID0gdGFibGUtPmVsZW1lbnRzOworICAgICAgRlRfQnl0ZSoqICAgbGltaXQgID0gb2Zmc2V0ICsgdGFibGUtPm1heF9lbGVtczsKKworCisgICAgICBmb3IgKCA7IG9mZnNldCA8IGxpbWl0OyBvZmZzZXQrKyApCisgICAgICB7CisgICAgICAgIGlmICggKm9mZnNldCApCisgICAgICAgICAgKm9mZnNldCA9IHRhYmxlLT5ibG9jayArICggKm9mZnNldCAtIG9sZF9iYXNlICk7CisgICAgICB9CiAgICAgfQogCiAgICAgdGFibGUtPmNhcGFjaXR5ID0gbmV3X3NpemU7CkBAIC0yMDQsNyArMTg5LDcgQEAKICAgICAgICAgbmV3X3NpemUgID0gRlRfUEFEX0NFSUwoIG5ld19zaXplLCAxMDI0ICk7CiAgICAgICB9CiAKLSAgICAgIGVycm9yID0gcmVhbGxvY2F0ZV90MV90YWJsZSggdGFibGUsIG5ld19zaXplICk7CisgICAgICBlcnJvciA9IHBzX3RhYmxlX3JlYWxsb2MoIHRhYmxlLCBuZXdfc2l6ZSApOwogICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgIHJldHVybiBlcnJvcjsKIApAQCAtMjM0LDMyICsyMTksMTIgQEAKICAgICogQEluT3V0OgogICAgKiAgIHRhYmxlIDo6CiAgICAqICAgICBUaGUgdGFyZ2V0IHRhYmxlLgotICAgKgotICAgKiBATm90ZToKLSAgICogICBUaGlzIGZ1bmN0aW9uIGRvZXMgTk9UIHJlbGVhc2UgdGhlIGhlYXAncyBtZW1vcnkgYmxvY2suICBJdCBpcyB1cAotICAgKiAgIHRvIHRoZSBjYWxsZXIgdG8gY2xlYW4gaXQsIG9yIHJlZmVyZW5jZSBpdCBpbiBpdHMgb3duIHN0cnVjdHVyZXMuCiAgICAqLwogICBGVF9MT0NBTF9ERUYoIHZvaWQgKQogICBwc190YWJsZV9kb25lKCBQU19UYWJsZSAgdGFibGUgKQogICB7Ci0gICAgRlRfTWVtb3J5ICBtZW1vcnkgPSB0YWJsZS0+bWVtb3J5OwotICAgIEZUX0Vycm9yICAgZXJyb3I7Ci0gICAgRlRfQnl0ZSogICBvbGRfYmFzZSA9IHRhYmxlLT5ibG9jazsKLQotCi0gICAgLyogc2hvdWxkIG5ldmVyIGZhaWwsIGJlY2F1c2UgcmVjLmN1cnNvciA8PSByZWMuc2l6ZSAqLwotICAgIGlmICggIW9sZF9iYXNlICkKLSAgICAgIHJldHVybjsKLQotICAgIGlmICggRlRfUUFMTE9DKCB0YWJsZS0+YmxvY2ssIHRhYmxlLT5jdXJzb3IgKSApCi0gICAgICByZXR1cm47Ci0gICAgRlRfTUVNX0NPUFkoIHRhYmxlLT5ibG9jaywgb2xkX2Jhc2UsIHRhYmxlLT5jdXJzb3IgKTsKLSAgICBzaGlmdF9lbGVtZW50cyggdGFibGUsIG9sZF9iYXNlICk7Ci0KLSAgICB0YWJsZS0+Y2FwYWNpdHkgPSB0YWJsZS0+Y3Vyc29yOwotICAgIEZUX0ZSRUUoIG9sZF9iYXNlICk7Ci0KLSAgICBGVF9VTlVTRUQoIGVycm9yICk7CisgICAgLyogbm8gcHJvYmxlbSBpZiBzaHJpbmtpbmcgZmFpbHMgKi8KKyAgICBwc190YWJsZV9yZWFsbG9jKCB0YWJsZSwgdGFibGUtPmN1cnNvciApOwogICB9CiAKIApAQCAtMjY5LDcgKzIzNCw3IEBACiAgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSB0YWJsZS0+bWVtb3J5OwogCiAKLSAgICBpZiAoIChGVF9VTG9uZyl0YWJsZS0+aW5pdCA9PSAweERFQURCRUVGVUwgKQorICAgIGlmICggdGFibGUtPmluaXQgPT0gMHhERUFEQkVFRlVMICkKICAgICB7CiAgICAgICBGVF9GUkVFKCB0YWJsZS0+YmxvY2sgKTsKICAgICAgIEZUX0ZSRUUoIHRhYmxlLT5lbGVtZW50cyApOwpAQCAtNTUyLDcgKzUxNyw3IEBACiAKICAgICBpZiAoICpjdXIgPT0gJzwnICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA8Li4uPiAqLwogICAgIHsKLSAgICAgIGlmICggY3VyICsgMSA8IGxpbWl0ICYmICooY3VyICsgMSkgPT0gJzwnICkgICAvKiA8PCAqLworICAgICAgaWYgKCBjdXIgKyAxIDwgbGltaXQgJiYgKiggY3VyICsgMSApID09ICc8JyApIC8qIDw8ICovCiAgICAgICB7CiAgICAgICAgIGN1cisrOwogICAgICAgICBjdXIrKzsKQEAgLTEwOTgsNyArMTA2Myw2IEBACiAgICAgewogICAgICAgRlRfQnl0ZSogICAgcSAgICAgID0gKEZUX0J5dGUqKW9iamVjdHNbaWR4XSArIGZpZWxkLT5vZmZzZXQ7CiAgICAgICBGVF9Mb25nICAgICB2YWw7Ci0gICAgICBGVF9TdHJpbmcqICBzdHJpbmcgPSBOVUxMOwogCiAKICAgICAgIHNraXBfc3BhY2VzKCAmY3VyLCBsaW1pdCApOwpAQCAtMTE0OCw4ICsxMTEyLDkgQEAKICAgICAgIGNhc2UgVDFfRklFTERfVFlQRV9TVFJJTkc6CiAgICAgICBjYXNlIFQxX0ZJRUxEX1RZUEVfS0VZOgogICAgICAgICB7Ci0gICAgICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBwYXJzZXItPm1lbW9yeTsKLSAgICAgICAgICBGVF9VSW50ICAgIGxlbiAgICA9IChGVF9VSW50KSggbGltaXQgLSBjdXIgKTsKKyAgICAgICAgICBGVF9NZW1vcnkgICBtZW1vcnkgPSBwYXJzZXItPm1lbW9yeTsKKyAgICAgICAgICBGVF9VSW50ICAgICBsZW4gICAgPSAoRlRfVUludCkoIGxpbWl0IC0gY3VyICk7CisgICAgICAgICAgRlRfU3RyaW5nKiAgc3RyaW5nID0gTlVMTDsKIAogCiAgICAgICAgICAgaWYgKCBjdXIgPj0gbGltaXQgKQpAQCAtMTE5MCw3ICsxMTU1LDYgQEAKICAgICAgICAgICAgIEZUX1RSQUNFMCgoICJwc19wYXJzZXJfbG9hZF9maWVsZDogb3ZlcndyaXRpbmcgZmllbGQgJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC0+aWRlbnQgKSk7CiAgICAgICAgICAgICBGVF9GUkVFKCAqKEZUX1N0cmluZyoqKXEgKTsKLSAgICAgICAgICAgICooRlRfU3RyaW5nKiopcSA9IE5VTEw7CiAgICAgICAgICAgfQogCiAgICAgICAgICAgaWYgKCBGVF9RQUxMT0MoIHN0cmluZywgbGVuICsgMSApICkKZGlmZiAtLWdpdCBhL3NyYy9wc2F1eC9wc29ianMuaCBiL3NyYy9wc2F1eC9wc29ianMuaAppbmRleCA5OWQxNjk1Li5kNWJjZTU0IDEwMDY0NAotLS0gYS9zcmMvcHNhdXgvcHNvYmpzLmgKKysrIGIvc3JjL3BzYXV4L3Bzb2Jqcy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQXV4aWxpYXJ5IGZ1bmN0aW9ucyBmb3IgUG9zdFNjcmlwdCBmb250cyAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3BzYXV4L3Bzc3RhY2suaCBiL3NyYy9wc2F1eC9wc3N0YWNrLmgKaW5kZXggYjllZjllZC4uOTA3YjQyNCAxMDA2NDQKLS0tIGEvc3JjL3BzYXV4L3Bzc3RhY2suaAorKysgYi9zcmMvcHNhdXgvcHNzdGFjay5oCkBAIC00OSw4ICs0OSw4IEBACiAgIHsKICAgICB1bmlvbgogICAgIHsKLSAgICAgIENGMl9GaXhlZCAgcjsgICAgICAvKiAxNi4xNiBmaXhlZCBwb2ludCAqLwotICAgICAgQ0YyX0ZyYWMgICBmOyAgICAgIC8qIDIuMzAgZml4ZWQgcG9pbnQgKGZvciBmb250IG1hdHJpeCkgKi8KKyAgICAgIENGMl9GaXhlZCAgcjsgICAgICAvKiAxNi4xNiBmaXhlZC1wb2ludCAqLworICAgICAgQ0YyX0ZyYWMgICBmOyAgICAgIC8qIDIuMzAgZml4ZWQtcG9pbnQgKGZvciBmb250IG1hdHJpeCkgKi8KICAgICAgIENGMl9JbnQgICAgaTsKICAgICB9IHU7CiAKZGlmZiAtLWdpdCBhL3NyYy9wc2F1eC9ydWxlcy5tayBiL3NyYy9wc2F1eC9ydWxlcy5tawppbmRleCAwNTQzOTEyLi5kNTQyYWI4IDEwMDY0NAotLS0gYS9zcmMvcHNhdXgvcnVsZXMubWsKKysrIGIvc3JjL3BzYXV4L3J1bGVzLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvc3JjL3BzYXV4L3QxY21hcC5jIGIvc3JjL3BzYXV4L3QxY21hcC5jCmluZGV4IDNlN2M1NzcuLmJmMGEzOTMgMTAwNjQ0Ci0tLSBhL3NyYy9wc2F1eC90MWNtYXAuYworKysgYi9zcmMvcHNhdXgvdDFjbWFwLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUeXBlIDEgY2hhcmFjdGVyIG1hcCBzdXBwb3J0IChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvcHNhdXgvdDFjbWFwLmggYi9zcmMvcHNhdXgvdDFjbWFwLmgKaW5kZXggOGY2OTYwMC4uYjM3MDI0OSAxMDA2NDQKLS0tIGEvc3JjL3BzYXV4L3QxY21hcC5oCisrKyBiL3NyYy9wc2F1eC90MWNtYXAuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFR5cGUgMSBjaGFyYWN0ZXIgbWFwIHN1cHBvcnQgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9wc2F1eC90MWRlY29kZS5jIGIvc3JjL3BzYXV4L3QxZGVjb2RlLmMKaW5kZXggN2U2NWJkZS4uYmZlZDQ1YiAxMDA2NDQKLS0tIGEvc3JjL3BzYXV4L3QxZGVjb2RlLmMKKysrIGIvc3JjL3BzYXV4L3QxZGVjb2RlLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBQb3N0U2NyaXB0IFR5cGUgMSBkZWNvZGluZyByb3V0aW5lcyAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3BzYXV4L3QxZGVjb2RlLmggYi9zcmMvcHNhdXgvdDFkZWNvZGUuaAppbmRleCBlZWE5ZDM0Li4wOTcwZGVmIDEwMDY0NAotLS0gYS9zcmMvcHNhdXgvdDFkZWNvZGUuaAorKysgYi9zcmMvcHNhdXgvdDFkZWNvZGUuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFBvc3RTY3JpcHQgVHlwZSAxIGRlY29kaW5nIHJvdXRpbmVzIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvcHNoaW50ZXIvbW9kdWxlLm1rIGIvc3JjL3BzaGludGVyL21vZHVsZS5tawppbmRleCBjYTE4MWVlLi5kYmMxMzdkIDEwMDY0NAotLS0gYS9zcmMvcHNoaW50ZXIvbW9kdWxlLm1rCisrKyBiL3NyYy9wc2hpbnRlci9tb2R1bGUubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9zcmMvcHNoaW50ZXIvcHNoYWxnby5jIGIvc3JjL3BzaGludGVyL3BzaGFsZ28uYwppbmRleCAyMjdjYWVhLi5hN2YzMjEyIDEwMDY0NAotLS0gYS9zcmMvcHNoaW50ZXIvcHNoYWxnby5jCisrKyBiL3NyYy9wc2hpbnRlci9wc2hhbGdvLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBQb3N0U2NyaXB0IGhpbnRpbmcgYWxnb3JpdGhtIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQKQEAgLTE4MiwxMyArMTgyLDEzIEBACiAgICAgY291bnQgPSBoaW50cy0+bnVtX2hpbnRzOwogCiAgICAgLyogYWxsb2NhdGUgb3VyIHRhYmxlcyAqLwotICAgIGlmICggRlRfTkVXX0FSUkFZKCB0YWJsZS0+c29ydCwgIDIgKiBjb3VudCAgICAgKSB8fAotICAgICAgICAgRlRfTkVXX0FSUkFZKCB0YWJsZS0+aGludHMsICAgICBjb3VudCAgICAgKSB8fAotICAgICAgICAgRlRfTkVXX0FSUkFZKCB0YWJsZS0+em9uZXMsIDIgKiBjb3VudCArIDEgKSApCisgICAgaWYgKCBGVF9RTkVXX0FSUkFZKCB0YWJsZS0+c29ydCwgIDIgKiBjb3VudCAgICAgKSB8fAorICAgICAgICAgRlRfUU5FV19BUlJBWSggdGFibGUtPmhpbnRzLCAgICAgY291bnQgICAgICkgfHwKKyAgICAgICAgIEZUX1FORVdfQVJSQVkoIHRhYmxlLT56b25lcywgMiAqIGNvdW50ICsgMSApICkKICAgICAgIGdvdG8gRXhpdDsKIAogICAgIHRhYmxlLT5tYXhfaGludHMgICA9IGNvdW50OwotICAgIHRhYmxlLT5zb3J0X2dsb2JhbCA9IHRhYmxlLT5zb3J0ICsgY291bnQ7CisgICAgdGFibGUtPnNvcnRfZ2xvYmFsID0gRlRfT0ZGU0VUKCB0YWJsZS0+c29ydCwgY291bnQgKTsKICAgICB0YWJsZS0+bnVtX2hpbnRzICAgPSAwOwogICAgIHRhYmxlLT5udW1fem9uZXMgICA9IDA7CiAgICAgdGFibGUtPnpvbmUgICAgICAgID0gTlVMTDsKQEAgLTExNjcsOCArMTE2Nyw4IEBACiAgICAgbWVtb3J5ID0gZ2x5cGgtPm1lbW9yeSA9IGdsb2JhbHMtPm1lbW9yeTsKIAogICAgIC8qIGFsbG9jYXRlIGFuZCBzZXR1cCBwb2ludHMgKyBjb250b3VycyBhcnJheXMgKi8KLSAgICBpZiAoIEZUX05FV19BUlJBWSggZ2x5cGgtPnBvaW50cywgICBvdXRsaW5lLT5uX3BvaW50cyAgICkgfHwKLSAgICAgICAgIEZUX05FV19BUlJBWSggZ2x5cGgtPmNvbnRvdXJzLCBvdXRsaW5lLT5uX2NvbnRvdXJzICkgKQorICAgIGlmICggRlRfUU5FV19BUlJBWSggZ2x5cGgtPnBvaW50cywgICBvdXRsaW5lLT5uX3BvaW50cyAgICkgfHwKKyAgICAgICAgIEZUX1FORVdfQVJSQVkoIGdseXBoLT5jb250b3Vycywgb3V0bGluZS0+bl9jb250b3VycyApICkKICAgICAgIGdvdG8gRXhpdDsKIAogICAgIGdseXBoLT5udW1fcG9pbnRzICAgPSAoRlRfVUludClvdXRsaW5lLT5uX3BvaW50czsKQEAgLTEyMjgsOCArMTIyOCw5IEBACiAgICAgICAgIEZUX1BvcyAgZHhpLCBkeWksIGR4bywgZHlvOwogCiAKKyAgICAgICAgcG9pbnQtPmZsYWdzID0gMDsKICAgICAgICAgaWYgKCAhKCBvdXRsaW5lLT50YWdzW25dICYgRlRfQ1VSVkVfVEFHX09OICkgKQotICAgICAgICAgIHBvaW50LT5mbGFncyA9IFBTSF9QT0lOVF9PRkY7CisgICAgICAgICAgcHNoX3BvaW50X3NldF9vZmYoIHBvaW50ICk7CiAKICAgICAgICAgZHhpID0gdmVjW25dLnggLSB2ZWNbbl9wcmV2XS54OwogICAgICAgICBkeWkgPSB2ZWNbbl0ueSAtIHZlY1tuX3ByZXZdLnk7CkBAIC0xMjQyLDE0ICsxMjQzLDE0IEBACiAgICAgICAgIHBvaW50LT5kaXJfb3V0ID0gcHNoX2NvbXB1dGVfZGlyKCBkeG8sIGR5byApOwogCiAgICAgICAgIC8qIGRldGVjdCBzbW9vdGggcG9pbnRzICovCi0gICAgICAgIGlmICggcG9pbnQtPmZsYWdzICYgUFNIX1BPSU5UX09GRiApCi0gICAgICAgICAgcG9pbnQtPmZsYWdzIHw9IFBTSF9QT0lOVF9TTU9PVEg7CisgICAgICAgIGlmICggcHNoX3BvaW50X2lzX29mZiggcG9pbnQgKSApCisgICAgICAgICAgcHNoX3BvaW50X3NldF9zbW9vdGgoIHBvaW50ICk7CiAKICAgICAgICAgZWxzZSBpZiAoIHBvaW50LT5kaXJfaW4gPT0gcG9pbnQtPmRpcl9vdXQgKQogICAgICAgICB7CiAgICAgICAgICAgaWYgKCBwb2ludC0+ZGlyX291dCAhPSBQU0hfRElSX05PTkUgICAgICAgICAgIHx8CiAgICAgICAgICAgICAgICBwc2hfY29ybmVyX2lzX2ZsYXQoIGR4aSwgZHlpLCBkeG8sIGR5byApICkKLSAgICAgICAgICAgIHBvaW50LT5mbGFncyB8PSBQU0hfUE9JTlRfU01PT1RIOworICAgICAgICAgICAgcHNoX3BvaW50X3NldF9zbW9vdGgoIHBvaW50ICk7CiAgICAgICAgIH0KICAgICAgIH0KICAgICB9CkBAIC0xNTQ3LDggKzE1NDgsOSBAQAogICAvKiB0aGUgYWNjZXB0ZWQgc2hpZnQgZm9yIHN0cm9uZyBwb2ludHMgaW4gZnJhY3Rpb25hbCBwaXhlbHMgKi8KICNkZWZpbmUgUFNIX1NUUk9OR19USFJFU0hPTEQgIDMyCiAKLSAgLyogdGhlIG1heGltdW0gc2hpZnQgdmFsdWUgaW4gZm9udCB1bml0cyAqLwotI2RlZmluZSBQU0hfU1RST05HX1RIUkVTSE9MRF9NQVhJTVVNICAzMAorICAvKiB0aGUgbWF4aW11bSBzaGlmdCB2YWx1ZSBpbiBmb250IHVuaXRzIHR1bmVkIHRvIGRpc3Rpbmd1aXNoICovCisgIC8qIGJldHdlZW4gc3RlbXMgYW5kIHNlcmlmcyBpbiBVUlcrIGZvbnQgY29sbGVjdGlvbiAgICAgICAgICAgKi8KKyNkZWZpbmUgUFNIX1NUUk9OR19USFJFU0hPTERfTUFYSU1VTSAgMTIKIAogCiAgIC8qIGZpbmQgc3Ryb25nIHBvaW50cyBpbiBhIGdseXBoICovCkBAIC0xNzk3LDcgKzE3OTksNyBAQAogICAgICAgRlRfRXJyb3IgIGVycm9yOwogCiAKLSAgICAgIGlmICggRlRfTkVXX0FSUkFZKCBzdHJvbmdzLCBudW1fc3Ryb25ncyApICkKKyAgICAgIGlmICggRlRfUU5FV19BUlJBWSggc3Ryb25ncywgbnVtX3N0cm9uZ3MgKSApCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIxMTAsMTQgKzIxMTIsMTcgQEAKICAgICAgIEZUX0ZpeGVkICBvbGRfeF9zY2FsZSA9IHhfc2NhbGU7CiAgICAgICBGVF9GaXhlZCAgb2xkX3lfc2NhbGUgPSB5X3NjYWxlOwogCi0gICAgICBGVF9GaXhlZCAgc2NhbGVkOwotICAgICAgRlRfRml4ZWQgIGZpdHRlZDsKKyAgICAgIEZUX0ZpeGVkICBzY2FsZWQgPSAwOworICAgICAgRlRfRml4ZWQgIGZpdHRlZCA9IDA7CiAKICAgICAgIEZUX0Jvb2wgIHJlc2NhbGUgPSBGQUxTRTsKIAogCi0gICAgICBzY2FsZWQgPSBGVF9NdWxGaXgoIGdsb2JhbHMtPmJsdWVzLm5vcm1hbF90b3Auem9uZXMtPm9yZ19yZWYsIHlfc2NhbGUgKTsKLSAgICAgIGZpdHRlZCA9IEZUX1BJWF9ST1VORCggc2NhbGVkICk7CisgICAgICBpZiAoIGdsb2JhbHMtPmJsdWVzLm5vcm1hbF90b3AuY291bnQgKQorICAgICAgeworICAgICAgICBzY2FsZWQgPSBGVF9NdWxGaXgoIGdsb2JhbHMtPmJsdWVzLm5vcm1hbF90b3Auem9uZXMtPm9yZ19yZWYsIHlfc2NhbGUgKTsKKyAgICAgICAgZml0dGVkID0gRlRfUElYX1JPVU5EKCBzY2FsZWQgKTsKKyAgICAgIH0KIAogICAgICAgaWYgKCBmaXR0ZWQgIT0gMCAmJiBzY2FsZWQgIT0gZml0dGVkICkKICAgICAgIHsKZGlmZiAtLWdpdCBhL3NyYy9wc2hpbnRlci9wc2hhbGdvLmggYi9zcmMvcHNoaW50ZXIvcHNoYWxnby5oCmluZGV4IDk5OWM2MDEuLjNmMGJhMjggMTAwNjQ0Ci0tLSBhL3NyYy9wc2hpbnRlci9wc2hhbGdvLmgKKysrIGIvc3JjL3BzaGludGVyL3BzaGFsZ28uaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFBvc3RTY3JpcHQgaGludGluZyBhbGdvcml0aG0gKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9wc2hpbnRlci9wc2hnbG9iLmMgYi9zcmMvcHNoaW50ZXIvcHNoZ2xvYi5jCmluZGV4IDJjYTBmNjYuLmQ0YzVlYjMgMTAwNjQ0Ci0tLSBhL3NyYy9wc2hpbnRlci9wc2hnbG9iLmMKKysrIGIvc3JjL3BzaGludGVyL3BzaGdsb2IuYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgUG9zdFNjcmlwdCBoaW50ZXIgZ2xvYmFsIGhpbnRpbmcgbWFuYWdlbWVudCAoYm9keSkuCiAgKiAgIEluc3BpcmVkIGJ5IHRoZSBuZXcgYXV0by1oaW50ZXIgbW9kdWxlLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZApAQCAtNjUwLDcgKzY1MCw3IEBACiAgICAgRlRfRXJyb3IgICAgIGVycm9yOwogCiAKLSAgICBpZiAoICFGVF9ORVcoIGdsb2JhbHMgKSApCisgICAgaWYgKCAhRlRfUU5FVyggZ2xvYmFscyApICkKICAgICB7CiAgICAgICBGVF9VSW50ICAgIGNvdW50OwogICAgICAgRlRfU2hvcnQqICByZWFkOwpkaWZmIC0tZ2l0IGEvc3JjL3BzaGludGVyL3BzaGdsb2IuaCBiL3NyYy9wc2hpbnRlci9wc2hnbG9iLmgKaW5kZXggYThmOTk1My4uNTc5ZWIyMSAxMDA2NDQKLS0tIGEvc3JjL3BzaGludGVyL3BzaGdsb2IuaAorKysgYi9zcmMvcHNoaW50ZXIvcHNoZ2xvYi5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgUG9zdFNjcmlwdCBoaW50ZXIgZ2xvYmFsIGhpbnRpbmcgbWFuYWdlbWVudC4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvcHNoaW50ZXIvcHNoaW50ZXIuYyBiL3NyYy9wc2hpbnRlci9wc2hpbnRlci5jCmluZGV4IDcwNTE0M2QuLjU0ZWQ0MTAgMTAwNjQ0Ci0tLSBhL3NyYy9wc2hpbnRlci9wc2hpbnRlci5jCisrKyBiL3NyYy9wc2hpbnRlci9wc2hpbnRlci5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgUG9zdFNjcmlwdCBIaW50aW5nIG1vZHVsZQogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9wc2hpbnRlci9wc2htb2QuYyBiL3NyYy9wc2hpbnRlci9wc2htb2QuYwppbmRleCA2Njc0MDQxLi5hMTJlNDg1IDEwMDY0NAotLS0gYS9zcmMvcHNoaW50ZXIvcHNobW9kLmMKKysrIGIvc3JjL3BzaGludGVyL3BzaG1vZC5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgUG9zdFNjcmlwdCBoaW50ZXIgbW9kdWxlIGltcGxlbWVudGF0aW9uIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvcHNoaW50ZXIvcHNobW9kLmggYi9zcmMvcHNoaW50ZXIvcHNobW9kLmgKaW5kZXggOGIyMjliYi4uNGJkNzgxYSAxMDA2NDQKLS0tIGEvc3JjL3BzaGludGVyL3BzaG1vZC5oCisrKyBiL3NyYy9wc2hpbnRlci9wc2htb2QuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFBvc3RTY3JpcHQgaGludGVyIG1vZHVsZSBpbnRlcmZhY2UgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9wc2hpbnRlci9wc2hudGVyci5oIGIvc3JjL3BzaGludGVyL3BzaG50ZXJyLmgKaW5kZXggNTY3ZDc2NS4uOTc2MjQ5NSAxMDA2NDQKLS0tIGEvc3JjL3BzaGludGVyL3BzaG50ZXJyLmgKKysrIGIvc3JjL3BzaGludGVyL3BzaG50ZXJyLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBQUyBIaW50ZXIgZXJyb3IgY29kZXMgKHNwZWNpZmljYXRpb24gb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3BzaGludGVyL3BzaHJlYy5jIGIvc3JjL3BzaGludGVyL3BzaHJlYy5jCmluZGV4IDFmYWFiZGEuLjU4YzhjZjEgMTAwNjQ0Ci0tLSBhL3NyYy9wc2hpbnRlci9wc2hyZWMuYworKysgYi9zcmMvcHNoaW50ZXIvcHNocmVjLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBQb3N0U2NyaXB0IGhpbnRzIHJlY29yZGVyIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC02MywxNiArNjMsMTQgQEAKICAgewogICAgIEZUX1VJbnQgICBvbGRfbWF4ID0gdGFibGUtPm1heF9oaW50czsKICAgICBGVF9VSW50ICAgbmV3X21heCA9IGNvdW50OwotICAgIEZUX0Vycm9yICBlcnJvciAgID0gRlRfRXJyX09rOworICAgIEZUX0Vycm9yICBlcnJvcjsKIAogCi0gICAgaWYgKCBuZXdfbWF4ID4gb2xkX21heCApCi0gICAgewotICAgICAgLyogdHJ5IHRvIGdyb3cgdGhlIHRhYmxlICovCi0gICAgICBuZXdfbWF4ID0gRlRfUEFEX0NFSUwoIG5ld19tYXgsIDggKTsKLSAgICAgIGlmICggIUZUX1JFTkVXX0FSUkFZKCB0YWJsZS0+aGludHMsIG9sZF9tYXgsIG5ld19tYXggKSApCi0gICAgICAgIHRhYmxlLT5tYXhfaGludHMgPSBuZXdfbWF4OwotICAgIH0KKyAgICAvKiB0cnkgdG8gZ3JvdyB0aGUgdGFibGUgKi8KKyAgICBuZXdfbWF4ID0gRlRfUEFEX0NFSUwoIG5ld19tYXgsIDggKTsKKyAgICBpZiAoICFGVF9RUkVORVdfQVJSQVkoIHRhYmxlLT5oaW50cywgb2xkX21heCwgbmV3X21heCApICkKKyAgICAgIHRhYmxlLT5tYXhfaGludHMgPSBuZXdfbWF4OworCiAgICAgcmV0dXJuIGVycm9yOwogICB9CiAKQEAgLTkwLDE3ICs4OCwxNCBAQAogICAgIGNvdW50ID0gdGFibGUtPm51bV9oaW50czsKICAgICBjb3VudCsrOwogCi0gICAgaWYgKCBjb3VudCA+PSB0YWJsZS0+bWF4X2hpbnRzICkKKyAgICBpZiAoIGNvdW50ID4gdGFibGUtPm1heF9oaW50cyApCiAgICAgewogICAgICAgZXJyb3IgPSBwc19oaW50X3RhYmxlX2Vuc3VyZSggdGFibGUsIGNvdW50LCBtZW1vcnkgKTsKICAgICAgIGlmICggZXJyb3IgKQogICAgICAgICBnb3RvIEV4aXQ7CiAgICAgfQogCi0gICAgaGludCAgICAgICAgPSB0YWJsZS0+aGludHMgKyBjb3VudCAtIDE7Ci0gICAgaGludC0+cG9zICAgPSAwOwotICAgIGhpbnQtPmxlbiAgID0gMDsKLSAgICBoaW50LT5mbGFncyA9IDA7CisgICAgaGludCA9IHRhYmxlLT5oaW50cyArIGNvdW50IC0gMTsgIC8qIGluaXRpYWxpemVkIHVwc3RyZWFtICovCiAKICAgICB0YWJsZS0+bnVtX2hpbnRzID0gY291bnQ7CiAKQEAgLTEzNiwxNCArMTMxLDE1IEBACiAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIGNvdW50LAogICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgKQogICB7Ci0gICAgRlRfVUludCAgIG9sZF9tYXggPSAoIG1hc2stPm1heF9iaXRzICsgNyApID4+IDM7Ci0gICAgRlRfVUludCAgIG5ld19tYXggPSAoIGNvdW50ICAgICAgICAgICsgNyApID4+IDM7CisgICAgRlRfVUludCAgIG9sZF9tYXggPSBtYXNrLT5tYXhfYml0cyA+PiAzOworICAgIEZUX1VJbnQgICBuZXdfbWF4ID0gKCBjb3VudCArIDcgKSA+PiAzOwogICAgIEZUX0Vycm9yICBlcnJvciAgID0gRlRfRXJyX09rOwogCiAKICAgICBpZiAoIG5ld19tYXggPiBvbGRfbWF4ICkKICAgICB7CiAgICAgICBuZXdfbWF4ID0gRlRfUEFEX0NFSUwoIG5ld19tYXgsIDggKTsKKyAgICAgIC8qIGFkZGVkIGJ5dGVzIGFyZSB6ZXJvZWQgaGVyZSAqLwogICAgICAgaWYgKCAhRlRfUkVORVdfQVJSQVkoIG1hc2stPmJ5dGVzLCBvbGRfbWF4LCBuZXdfbWF4ICkgKQogICAgICAgICBtYXNrLT5tYXhfYml0cyA9IG5ld19tYXggKiA4OwogICAgIH0KQEAgLTE1NCwzMSArMTUwLDE1IEBACiAgIC8qIHRlc3QgYSBiaXQgdmFsdWUgaW4gYSBnaXZlbiBtYXNrICovCiAgIHN0YXRpYyBGVF9JbnQKICAgcHNfbWFza190ZXN0X2JpdCggUFNfTWFzayAgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgaWR4ICkKKyAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgaWR4ICkKICAgewotICAgIGlmICggKEZUX1VJbnQpaWR4ID49IG1hc2stPm51bV9iaXRzICkKKyAgICBpZiAoIGlkeCA+PSBtYXNrLT5udW1fYml0cyApCiAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBtYXNrLT5ieXRlc1tpZHggPj4gM10gJiAoIDB4ODAgPj4gKCBpZHggJiA3ICkgKTsKICAgfQogCiAKLSAgLyogY2xlYXIgYSBnaXZlbiBiaXQgKi8KLSAgc3RhdGljIHZvaWQKLSAgcHNfbWFza19jbGVhcl9iaXQoIFBTX01hc2sgIG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICBpZHggKQotICB7Ci0gICAgRlRfQnl0ZSogIHA7Ci0KLQotICAgIGlmICggaWR4ID49IG1hc2stPm51bV9iaXRzICkKLSAgICAgIHJldHVybjsKLQotICAgIHAgICAgPSBtYXNrLT5ieXRlcyArICggaWR4ID4+IDMgKTsKLSAgICBwWzBdID0gKEZUX0J5dGUpKCBwWzBdICYgfiggMHg4MCA+PiAoIGlkeCAmIDcgKSApICk7Ci0gIH0KLQotCiAgIC8qIHNldCBhIGdpdmVuIGJpdCwgcG9zc2libHkgZ3JvdyB0aGUgbWFzayAqLwogICBzdGF0aWMgRlRfRXJyb3IKICAgcHNfbWFza19zZXRfYml0KCBQU19NYXNrICAgIG1hc2ssCkBAIC0yNjksNiArMjQ5LDEwIEBACiAgICAgbWFzayAgICAgICAgICAgICA9IHRhYmxlLT5tYXNrcyArIGNvdW50IC0gMTsKICAgICBtYXNrLT5udW1fYml0cyAgID0gMDsKICAgICBtYXNrLT5lbmRfcG9pbnQgID0gMDsKKyAgICAvKiByZXVzZWQgbWFzayBtdXN0IGJlIGNsZWFyZWQgKi8KKyAgICBpZiAoIG1hc2stPm1heF9iaXRzICkKKyAgICAgIEZUX01FTV9aRVJPKCBtYXNrLT5ieXRlcywgbWFzay0+bWF4X2JpdHMgPj4gMyApOworCiAgICAgdGFibGUtPm51bV9tYXNrcyA9IGNvdW50OwogCiAgIEV4aXQ6CkBAIC00MjYsNyArNDEwLDcgQEAKICAgICAgIFBTX01hc2sgIG1hc2syICA9IHRhYmxlLT5tYXNrcyArIGluZGV4MjsKICAgICAgIEZUX1VJbnQgIGNvdW50MSA9IG1hc2sxLT5udW1fYml0czsKICAgICAgIEZUX1VJbnQgIGNvdW50MiA9IG1hc2syLT5udW1fYml0czsKLSAgICAgIEZUX0ludCAgIGRlbHRhOworICAgICAgRlRfVUludCAgZGVsdGE7CiAKIAogICAgICAgaWYgKCBjb3VudDIgPiAwICkKQEAgLTQzNywxNSArNDIxLDE0IEBACiAKIAogICAgICAgICAvKiBpZiAiY291bnQyIiBpcyBncmVhdGVyIHRoYW4gImNvdW50MSIsIHdlIG5lZWQgdG8gZ3JvdyB0aGUgKi8KLSAgICAgICAgLyogZmlyc3QgYml0c2V0LCBhbmQgY2xlYXIgdGhlIGhpZ2hlc3QgYml0cyAgICAgICAgICAgICAgICAgICovCisgICAgICAgIC8qIGZpcnN0IGJpdHNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgICAgICBpZiAoIGNvdW50MiA+IGNvdW50MSApCiAgICAgICAgIHsKICAgICAgICAgICBlcnJvciA9IHBzX21hc2tfZW5zdXJlKCBtYXNrMSwgY291bnQyLCBtZW1vcnkgKTsKICAgICAgICAgICBpZiAoIGVycm9yICkKICAgICAgICAgICAgIGdvdG8gRXhpdDsKIAotICAgICAgICAgIGZvciAoIHBvcyA9IGNvdW50MTsgcG9zIDwgY291bnQyOyBwb3MrKyApCi0gICAgICAgICAgICBwc19tYXNrX2NsZWFyX2JpdCggbWFzazEsIHBvcyApOworICAgICAgICAgIG1hc2sxLT5udW1fYml0cyA9IGNvdW50MjsKICAgICAgICAgfQogCiAgICAgICAgIC8qIG1lcmdlICh1bml0ZSkgdGhlIGJpdHNldHMgKi8KQEAgLTQ2Nyw3ICs0NTAsNyBAQAogICAgICAgbWFzazItPmVuZF9wb2ludCA9IDA7CiAKICAgICAgIC8qIG51bWJlciBvZiBtYXNrcyB0byBtb3ZlICovCi0gICAgICBkZWx0YSA9IChGVF9JbnQpKCB0YWJsZS0+bnVtX21hc2tzIC0gMSAtIGluZGV4MiApOworICAgICAgZGVsdGEgPSB0YWJsZS0+bnVtX21hc2tzIC0gMSAtIGluZGV4MjsKICAgICAgIGlmICggZGVsdGEgPiAwICkKICAgICAgIHsKICAgICAgICAgLyogbW92ZSB0byBlbmQgb2YgdGFibGUgZm9yIHJldXNlICovCkBAIC00NzYsNyArNDU5LDcgQEAKIAogICAgICAgICBmdF9tZW1tb3ZlKCBtYXNrMiwKICAgICAgICAgICAgICAgICAgICAgbWFzazIgKyAxLAotICAgICAgICAgICAgICAgICAgICAoRlRfVUludClkZWx0YSAqIHNpemVvZiAoIFBTX01hc2tSZWMgKSApOworICAgICAgICAgICAgICAgICAgICBkZWx0YSAqIHNpemVvZiAoIFBTX01hc2tSZWMgKSApOwogCiAgICAgICAgIG1hc2syW2RlbHRhXSA9IGR1bW15OwogICAgICAgfQpAQCAtNjQ3LDcgKzYzMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgIHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICAgICBtZW1vcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgKmFpbmRleCApCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgKmFpbmRleCApCiAgIHsKICAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CiAgICAgRlRfVUludCAgIGZsYWdzID0gMDsKQEAgLTY2NSw5ICs2NDgsNiBAQAogICAgICAgbGVuID0gMDsKICAgICB9CiAKLSAgICBpZiAoIGFpbmRleCApCi0gICAgICAqYWluZGV4ID0gLTE7Ci0KICAgICAvKiBub3csIGxvb2t1cCBzdGVtIGluIHRoZSBjdXJyZW50IGhpbnRzIHRhYmxlICovCiAgICAgewogICAgICAgUFNfTWFzayAgbWFzazsKQEAgLTcwNCw3ICs2ODQsNyBAQAogICAgICAgICBnb3RvIEV4aXQ7CiAKICAgICAgIGlmICggYWluZGV4ICkKLSAgICAgICAgKmFpbmRleCA9IChGVF9JbnQpaWR4OworICAgICAgICAqYWluZGV4ID0gaWR4OwogICAgIH0KIAogICBFeGl0OgpAQCAtNzE1LDkgKzY5NSw5IEBACiAgIC8qIGFkZCBhICJoc3RlbTMvdnN0ZW0zIiBjb3VudGVyIHRvIG91ciBkaW1lbnNpb24gdGFibGUgKi8KICAgc3RhdGljIEZUX0Vycm9yCiAgIHBzX2RpbWVuc2lvbl9hZGRfY291bnRlciggUFNfRGltZW5zaW9uICBkaW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICBoaW50MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgIGhpbnQyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgaGludDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBoaW50MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgIGhpbnQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgaGludDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICAgICBtZW1vcnkgKQogICB7CiAgICAgRlRfRXJyb3IgIGVycm9yICAgPSBGVF9FcnJfT2s7CkBAIC03NDQsMjYgKzcyNCwxNyBAQAogICAgIH0KIAogICAgIC8qIG5vdywgc2V0IHRoZSBiaXRzIGZvciBvdXIgaGludHMgaW4gdGhlIGNvdW50ZXIgbWFzayAqLwotICAgIGlmICggaGludDEgPj0gMCApCi0gICAgewotICAgICAgZXJyb3IgPSBwc19tYXNrX3NldF9iaXQoIGNvdW50ZXIsIChGVF9VSW50KWhpbnQxLCBtZW1vcnkgKTsKLSAgICAgIGlmICggZXJyb3IgKQotICAgICAgICBnb3RvIEV4aXQ7Ci0gICAgfQorICAgIGVycm9yID0gcHNfbWFza19zZXRfYml0KCBjb3VudGVyLCBoaW50MSwgbWVtb3J5ICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CiAKLSAgICBpZiAoIGhpbnQyID49IDAgKQotICAgIHsKLSAgICAgIGVycm9yID0gcHNfbWFza19zZXRfYml0KCBjb3VudGVyLCAoRlRfVUludCloaW50MiwgbWVtb3J5ICk7Ci0gICAgICBpZiAoIGVycm9yICkKLSAgICAgICAgZ290byBFeGl0OwotICAgIH0KKyAgICBlcnJvciA9IHBzX21hc2tfc2V0X2JpdCggY291bnRlciwgaGludDIsIG1lbW9yeSApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OwogCi0gICAgaWYgKCBoaW50MyA+PSAwICkKLSAgICB7Ci0gICAgICBlcnJvciA9IHBzX21hc2tfc2V0X2JpdCggY291bnRlciwgKEZUX1VJbnQpaGludDMsIG1lbW9yeSApOwotICAgICAgaWYgKCBlcnJvciApCi0gICAgICAgIGdvdG8gRXhpdDsKLSAgICB9CisgICAgZXJyb3IgPSBwc19tYXNrX3NldF9iaXQoIGNvdW50ZXIsIGhpbnQzLCBtZW1vcnkgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKIAogICBFeGl0OgogICAgIHJldHVybiBlcnJvcjsKQEAgLTc5NCw3ICs3NjUsNyBAQAogCiAKICAgLyogZGVzdHJveSBoaW50cyAqLwotICBGVF9MT0NBTCggdm9pZCApCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCiAgIHBzX2hpbnRzX2RvbmUoIFBTX0hpbnRzICBoaW50cyApCiAgIHsKICAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGhpbnRzLT5tZW1vcnk7CkBAIC04MDgsNyArNzc5LDcgQEAKICAgfQogCiAKLSAgRlRfTE9DQUwoIHZvaWQgKQorICBGVF9MT0NBTF9ERUYoIHZvaWQgKQogICBwc19oaW50c19pbml0KCBQU19IaW50cyAgIGhpbnRzLAogICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgIG1lbW9yeSApCiAgIHsKQEAgLTg5Miw3ICs4NjMsNyBAQAogICAgICAgUFNfRGltZW5zaW9uICBkaW07CiAgICAgICBGVF9NZW1vcnkgICAgIG1lbW9yeSA9IGhpbnRzLT5tZW1vcnk7CiAgICAgICBGVF9JbnQgICAgICAgIGNvdW50OwotICAgICAgRlRfSW50ICAgICAgICBpZHhbM107CisgICAgICBGVF9VSW50ICAgICAgIGlkeFszXTsKIAogCiAgICAgICAvKiBsaW1pdCAiZGltZW5zaW9uIiB0byAwLi4xICovCmRpZmYgLS1naXQgYS9zcmMvcHNoaW50ZXIvcHNocmVjLmggYi9zcmMvcHNoaW50ZXIvcHNocmVjLmgKaW5kZXggZTQ4Mzk4MS4uMGIyNDg0YSAxMDA2NDQKLS0tIGEvc3JjL3BzaGludGVyL3BzaHJlYy5oCisrKyBiL3NyYy9wc2hpbnRlci9wc2hyZWMuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFBvc3RzY3JpcHQgKFR5cGUxL1R5cGUyKSBoaW50cyByZWNvcmRlciAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3BzaGludGVyL3J1bGVzLm1rIGIvc3JjL3BzaGludGVyL3J1bGVzLm1rCmluZGV4IDNjNWE1OWEuLjUwMDU4ZTggMTAwNjQ0Ci0tLSBhL3NyYy9wc2hpbnRlci9ydWxlcy5taworKysgYi9zcmMvcHNoaW50ZXIvcnVsZXMubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9zcmMvcHNuYW1lcy9tb2R1bGUubWsgYi9zcmMvcHNuYW1lcy9tb2R1bGUubWsKaW5kZXggYWJmYjU0Zi4uMWVlMGVmOCAxMDA2NDQKLS0tIGEvc3JjL3BzbmFtZXMvbW9kdWxlLm1rCisrKyBiL3NyYy9wc25hbWVzL21vZHVsZS5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL3NyYy9wc25hbWVzL3BzbW9kdWxlLmMgYi9zcmMvcHNuYW1lcy9wc21vZHVsZS5jCmluZGV4IDc0YWRlZmEuLmRiNDU0ZTUgMTAwNjQ0Ci0tLSBhL3NyYy9wc25hbWVzL3BzbW9kdWxlLmMKKysrIGIvc3JjL3BzbmFtZXMvcHNtb2R1bGUuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIHBzbmFtZXMgbW9kdWxlIGltcGxlbWVudGF0aW9uIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC00MTIsMjEgKzQxMiwxOCBAQAogICBwc191bmljb2Rlc19jaGFyX2luZGV4KCBQU19Vbmljb2RlcyAgdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgICB1bmljb2RlICkKICAgewotICAgIFBTX1VuaU1hcCAgKm1pbiwgKm1heCwgKm1pZCwgKnJlc3VsdCA9IE5VTEw7CisgICAgUFNfVW5pTWFwICAqcmVzdWx0ID0gTlVMTDsKKyAgICBQU19VbmlNYXAgICptaW4gPSB0YWJsZS0+bWFwczsKKyAgICBQU19VbmlNYXAgICptYXggPSBtaW4gKyB0YWJsZS0+bnVtX21hcHM7CisgICAgUFNfVW5pTWFwICAqbWlkID0gbWluICsgKCAoIG1heCAtIG1pbiApID4+IDEgKTsKIAogCiAgICAgLyogUGVyZm9ybSBhIGJpbmFyeSBzZWFyY2ggb24gdGhlIHRhYmxlLiAqLwotCi0gICAgbWluID0gdGFibGUtPm1hcHM7Ci0gICAgbWF4ID0gbWluICsgdGFibGUtPm51bV9tYXBzIC0gMTsKLQotICAgIHdoaWxlICggbWluIDw9IG1heCApCisgICAgd2hpbGUgKCBtaW4gPCBtYXggKQogICAgIHsKICAgICAgIEZUX1VJbnQzMiAgYmFzZV9nbHlwaDsKIAogCi0gICAgICBtaWQgPSBtaW4gKyAoICggbWF4IC0gbWluICkgPj4gMSApOwotCiAgICAgICBpZiAoIG1pZC0+dW5pY29kZSA9PSB1bmljb2RlICkKICAgICAgIHsKICAgICAgICAgcmVzdWx0ID0gbWlkOwpAQCAtNDM4LDEzICs0MzUsMTUgQEAKICAgICAgIGlmICggYmFzZV9nbHlwaCA9PSB1bmljb2RlICkKICAgICAgICAgcmVzdWx0ID0gbWlkOyAvKiByZW1lbWJlciBtYXRjaCBidXQgY29udGludWUgc2VhcmNoIGZvciBiYXNlIGdseXBoICovCiAKLSAgICAgIGlmICggbWluID09IG1heCApCi0gICAgICAgIGJyZWFrOwotCiAgICAgICBpZiAoIGJhc2VfZ2x5cGggPCB1bmljb2RlICkKICAgICAgICAgbWluID0gbWlkICsgMTsKICAgICAgIGVsc2UKLSAgICAgICAgbWF4ID0gbWlkIC0gMTsKKyAgICAgICAgbWF4ID0gbWlkOworCisgICAgICAvKiByZWFzb25hYmxlIHByZWRpY3Rpb24gaW4gYSBjb250aW51b3VzIGJsb2NrICovCisgICAgICBtaWQgKz0gdW5pY29kZSAtIGJhc2VfZ2x5cGg7CisgICAgICBpZiAoIG1pZCA+PSBtYXggfHwgbWlkIDwgbWluICkKKyAgICAgICAgbWlkID0gbWluICsgKCAoIG1heCAtIG1pbiApID4+IDEgKTsKICAgICB9CiAKICAgICBpZiAoIHJlc3VsdCApCkBAIC00NjUsMTQgKzQ2NCwxMyBAQAogICAgIHsKICAgICAgIEZUX1VJbnQgICAgIG1pbiA9IDA7CiAgICAgICBGVF9VSW50ICAgICBtYXggPSB0YWJsZS0+bnVtX21hcHM7Ci0gICAgICBGVF9VSW50ICAgICBtaWQ7CisgICAgICBGVF9VSW50ICAgICBtaWQgPSBtaW4gKyAoICggbWF4IC0gbWluICkgPj4gMSApOwogICAgICAgUFNfVW5pTWFwKiAgbWFwOwogICAgICAgRlRfVUludDMyICAgYmFzZV9nbHlwaDsKIAogCiAgICAgICB3aGlsZSAoIG1pbiA8IG1heCApCiAgICAgICB7Ci0gICAgICAgIG1pZCA9IG1pbiArICggKCBtYXggLSBtaW4gKSA+PiAxICk7CiAgICAgICAgIG1hcCA9IHRhYmxlLT5tYXBzICsgbWlkOwogCiAgICAgICAgIGlmICggbWFwLT51bmljb2RlID09IGNoYXJfY29kZSApCkBAIC00OTAsNiArNDg4LDExIEBACiAgICAgICAgICAgbWluID0gbWlkICsgMTsKICAgICAgICAgZWxzZQogICAgICAgICAgIG1heCA9IG1pZDsKKworICAgICAgICAvKiByZWFzb25hYmxlIHByZWRpY3Rpb24gaW4gYSBjb250aW51b3VzIGJsb2NrICovCisgICAgICAgIG1pZCArPSBjaGFyX2NvZGUgLSBiYXNlX2dseXBoOworICAgICAgICBpZiAoIG1pZCA+PSBtYXggfHwgbWlkIDwgbWluICkKKyAgICAgICAgICBtaWQgPSBtaW4gKyAoIG1heCAtIG1pbiApIC8gMjsKICAgICAgIH0KIAogICAgICAgaWYgKCByZXN1bHQgKQpkaWZmIC0tZ2l0IGEvc3JjL3BzbmFtZXMvcHNtb2R1bGUuaCBiL3NyYy9wc25hbWVzL3BzbW9kdWxlLmgKaW5kZXggZTkyYTk3NS4uMDkwNDcwMCAxMDA2NDQKLS0tIGEvc3JjL3BzbmFtZXMvcHNtb2R1bGUuaAorKysgYi9zcmMvcHNuYW1lcy9wc21vZHVsZS5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgSGlnaC1sZXZlbCBwc25hbWVzIG1vZHVsZSBpbnRlcmZhY2UgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9wc25hbWVzL3BzbmFtZXJyLmggYi9zcmMvcHNuYW1lcy9wc25hbWVyci5oCmluZGV4IDg4OGI3NmMuLjAwNzNmODIgMTAwNjQ0Ci0tLSBhL3NyYy9wc25hbWVzL3BzbmFtZXJyLmgKKysrIGIvc3JjL3BzbmFtZXMvcHNuYW1lcnIuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFBTIG5hbWVzIG1vZHVsZSBlcnJvciBjb2RlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvcHNuYW1lcy9wc25hbWVzLmMgYi9zcmMvcHNuYW1lcy9wc25hbWVzLmMKaW5kZXggZTdiZTY3MC4uOTNlZDkzMyAxMDA2NDQKLS0tIGEvc3JjL3BzbmFtZXMvcHNuYW1lcy5jCisrKyBiL3NyYy9wc25hbWVzL3BzbmFtZXMuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIHBzbmFtZXMgbW9kdWxlIGNvbXBvbmVudCAoYm9keSBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvcHNuYW1lcy9wc3RhYmxlcy5oIGIvc3JjL3BzbmFtZXMvcHN0YWJsZXMuaAppbmRleCAwYmNhZGNhLi43ZjkyY2NlIDEwMDY0NAotLS0gYS9zcmMvcHNuYW1lcy9wc3RhYmxlcy5oCisrKyBiL3NyYy9wc25hbWVzL3BzdGFibGVzLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBQb3N0U2NyaXB0IGdseXBoIG5hbWVzLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9wc25hbWVzL3J1bGVzLm1rIGIvc3JjL3BzbmFtZXMvcnVsZXMubWsKaW5kZXggNjY5NGY0ZS4uOGQ3YzU4MCAxMDA2NDQKLS0tIGEvc3JjL3BzbmFtZXMvcnVsZXMubWsKKysrIGIvc3JjL3BzbmFtZXMvcnVsZXMubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9zcmMvcmFzdGVyL2Z0bWlzYy5oIGIvc3JjL3Jhc3Rlci9mdG1pc2MuaAppbmRleCBiMTJhMDUxLi4zM2RiZmQ2IDEwMDY0NAotLS0gYS9zcmMvcmFzdGVyL2Z0bWlzYy5oCisrKyBiL3NyYy9yYXN0ZXIvZnRtaXNjLmgKQEAgLTUsNyArNSw3IEBACiAgKiAgIE1pc2NlbGxhbmVvdXMgbWFjcm9zIGZvciBzdGFuZC1hbG9uZSByYXN0ZXJpemVyIChzcGVjaWZpY2F0aW9uCiAgKiAgIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZApkaWZmIC0tZ2l0IGEvc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIGIvc3JjL3Jhc3Rlci9mdHJhc3Rlci5jCmluZGV4IGJmYzA1OWMuLjY3Y2JmZDUgMTAwNjQ0Ci0tLSBhL3NyYy9yYXN0ZXIvZnRyYXN0ZXIuYworKysgYi9zcmMvcmFzdGVyL2Z0cmFzdGVyLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUaGUgRnJlZVR5cGUgZ2x5cGggcmFzdGVyaXplciAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMjIxOSw4ICsyMjE5LDggQEAKICAgICAvKiByZXByZXNlbnQgbXVsdGlwbGVzIG9mIDEvKDE8PDEyKSA9IDEvNDA5NiAgICAgICAgICAgICAgICAgICAgKi8KICAgICBGVF9UUkFDRTcoKCAiICB5PSVkIHg9WyUgLjEyZjslIC4xMmZdIiwKICAgICAgICAgICAgICAgICB5LAotICAgICAgICAgICAgICAgIHgxIC8gKGRvdWJsZSlyYXMucHJlY2lzaW9uLAotICAgICAgICAgICAgICAgIHgyIC8gKGRvdWJsZSlyYXMucHJlY2lzaW9uICkpOworICAgICAgICAgICAgICAgIChkb3VibGUpeDEgLyAoZG91YmxlKXJhcy5wcmVjaXNpb24sCisgICAgICAgICAgICAgICAgKGRvdWJsZSl4MiAvIChkb3VibGUpcmFzLnByZWNpc2lvbiApKTsKIAogICAgIC8qIERyb3Atb3V0IGNvbnRyb2wgKi8KIApAQCAtMjI2OSw3ICsyMjY5LDcgQEAKICAgICAgICAgLyogVGhpcyBpcyBkdWUgdG8gdGhlIGZhY3QgdGhhdCwgaW4gdGhlIHZhc3QgbWFqb3JpdHkgb2YgY2FzZXMsICAqLwogICAgICAgICAvKiB0aGUgc3BhbiBsZW5ndGggaW4gYnl0ZXMgaXMgcmVsYXRpdmVseSBzbWFsbC4gICAgICAgICAgICAgICAgICovCiAgICAgICAgIHdoaWxlICggLS1jMiA+IDAgKQotICAgICAgICAgICooKyt0YXJnZXQpID0gMHhGRjsKKyAgICAgICAgICAqKCArK3RhcmdldCApID0gMHhGRjsKIAogICAgICAgICB0YXJnZXRbMV0gfD0gZjI7CiAgICAgICB9CkBAIC0yMjk0LDggKzIyOTQsOCBAQAogCiAgICAgRlRfVFJBQ0U3KCggIiAgeT0lZCB4PVslIC4xMmY7JSAuMTJmXSIsCiAgICAgICAgICAgICAgICAgeSwKLSAgICAgICAgICAgICAgICB4MSAvIChkb3VibGUpcmFzLnByZWNpc2lvbiwKLSAgICAgICAgICAgICAgICB4MiAvIChkb3VibGUpcmFzLnByZWNpc2lvbiApKTsKKyAgICAgICAgICAgICAgICAoZG91YmxlKXgxIC8gKGRvdWJsZSlyYXMucHJlY2lzaW9uLAorICAgICAgICAgICAgICAgIChkb3VibGUpeDIgLyAoZG91YmxlKXJhcy5wcmVjaXNpb24gKSk7CiAKICAgICAvKiBEcm9wLW91dCBjb250cm9sICovCiAKQEAgLTI0NzcsOCArMjQ3Nyw4IEBACiAKICAgICBGVF9UUkFDRTcoKCAiICB4PSVkIHk9WyUgLjEyZjslIC4xMmZdIiwKICAgICAgICAgICAgICAgICB5LAotICAgICAgICAgICAgICAgIHgxIC8gKGRvdWJsZSlyYXMucHJlY2lzaW9uLAotICAgICAgICAgICAgICAgIHgyIC8gKGRvdWJsZSlyYXMucHJlY2lzaW9uICkpOworICAgICAgICAgICAgICAgIChkb3VibGUpeDEgLyAoZG91YmxlKXJhcy5wcmVjaXNpb24sCisgICAgICAgICAgICAgICAgKGRvdWJsZSl4MiAvIChkb3VibGUpcmFzLnByZWNpc2lvbiApKTsKIAogICAgIC8qIFdlIHNob3VsZCBub3QgbmVlZCB0aGlzIHByb2NlZHVyZSBidXQgdGhlIHZlcnRpY2FsIHN3ZWVwICAgKi8KICAgICAvKiBtaXNoYW5kbGVzIGhvcml6b250YWwgbGluZXMgdGhyb3VnaCBwaXhlbCBjZW50ZXJzLiAgU28gd2UgICovCkBAIC0yNTQ4LDggKzI1NDgsOCBAQAogCiAgICAgRlRfVFJBQ0U3KCggIiAgeD0lZCB5PVslIC4xMmY7JSAuMTJmXSIsCiAgICAgICAgICAgICAgICAgeSwKLSAgICAgICAgICAgICAgICB4MSAvIChkb3VibGUpcmFzLnByZWNpc2lvbiwKLSAgICAgICAgICAgICAgICB4MiAvIChkb3VibGUpcmFzLnByZWNpc2lvbiApKTsKKyAgICAgICAgICAgICAgICAoZG91YmxlKXgxIC8gKGRvdWJsZSlyYXMucHJlY2lzaW9uLAorICAgICAgICAgICAgICAgIChkb3VibGUpeDIgLyAoZG91YmxlKXJhcy5wcmVjaXNpb24gKSk7CiAKICAgICAvKiBEdXJpbmcgdGhlIGhvcml6b250YWwgc3dlZXAsIHdlIG9ubHkgdGFrZSBjYXJlIG9mIGRyb3Atb3V0cyAqLwogCmRpZmYgLS1naXQgYS9zcmMvcmFzdGVyL2Z0cmFzdGVyLmggYi9zcmMvcmFzdGVyL2Z0cmFzdGVyLmgKaW5kZXggNGFmZmQ0OC4uYjUxMWIzYSAxMDA2NDQKLS0tIGEvc3JjL3Jhc3Rlci9mdHJhc3Rlci5oCisrKyBiL3NyYy9yYXN0ZXIvZnRyYXN0ZXIuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRoZSBGcmVlVHlwZSBnbHlwaCByYXN0ZXJpemVyIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQKZGlmZiAtLWdpdCBhL3NyYy9yYXN0ZXIvZnRyZW5kMS5jIGIvc3JjL3Jhc3Rlci9mdHJlbmQxLmMKaW5kZXggMjM2YThkYS4uMGI1ZDg2NyAxMDA2NDQKLS0tIGEvc3JjL3Jhc3Rlci9mdHJlbmQxLmMKKysrIGIvc3JjL3Jhc3Rlci9mdHJlbmQxLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUaGUgRnJlZVR5cGUgZ2x5cGggcmFzdGVyaXplciBpbnRlcmZhY2UgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9yYXN0ZXIvZnRyZW5kMS5oIGIvc3JjL3Jhc3Rlci9mdHJlbmQxLmgKaW5kZXggZTRjZWE1My4uY2VjMzVjOCAxMDA2NDQKLS0tIGEvc3JjL3Jhc3Rlci9mdHJlbmQxLmgKKysrIGIvc3JjL3Jhc3Rlci9mdHJlbmQxLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUaGUgRnJlZVR5cGUgZ2x5cGggcmFzdGVyaXplciBpbnRlcmZhY2UgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9yYXN0ZXIvbW9kdWxlLm1rIGIvc3JjL3Jhc3Rlci9tb2R1bGUubWsKaW5kZXggZmJjMWQ2NC4uNmFkMWFhNyAxMDA2NDQKLS0tIGEvc3JjL3Jhc3Rlci9tb2R1bGUubWsKKysrIGIvc3JjL3Jhc3Rlci9tb2R1bGUubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9zcmMvcmFzdGVyL3Jhc3Rlci5jIGIvc3JjL3Jhc3Rlci9yYXN0ZXIuYwppbmRleCBhZDgxYTM5Li44MmY0NzQ1IDEwMDY0NAotLS0gYS9zcmMvcmFzdGVyL3Jhc3Rlci5jCisrKyBiL3NyYy9yYXN0ZXIvcmFzdGVyLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBtb25vY2hyb21lIHJhc3RlcmVyIG1vZHVsZSBjb21wb25lbnQgKGJvZHkgb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3Jhc3Rlci9yYXN0ZXJycy5oIGIvc3JjL3Jhc3Rlci9yYXN0ZXJycy5oCmluZGV4IDg1MmRkNWIuLjk4OWQ4YjQgMTAwNjQ0Ci0tLSBhL3NyYy9yYXN0ZXIvcmFzdGVycnMuaAorKysgYi9zcmMvcmFzdGVyL3Jhc3RlcnJzLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBtb25vY2hyb21lIHJlbmRlcmVyIGVycm9yIGNvZGVzIChzcGVjaWZpY2F0aW9uIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9yYXN0ZXIvcnVsZXMubWsgYi9zcmMvcmFzdGVyL3J1bGVzLm1rCmluZGV4IDdmZmRhNzcuLjAzMWI4NWYgMTAwNjQ0Ci0tLSBhL3NyYy9yYXN0ZXIvcnVsZXMubWsKKysrIGIvc3JjL3Jhc3Rlci9ydWxlcy5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL3NyYy9zZGYvZnRic2RmLmMgYi9zcmMvc2RmL2Z0YnNkZi5jCmluZGV4IDhkYTVjOWQuLjkwMWQ4YjcgMTAwNjQ0Ci0tLSBhL3NyYy9zZGYvZnRic2RmLmMKKysrIGIvc3JjL3NkZi9mdGJzZGYuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFNpZ25lZCBEaXN0YW5jZSBGaWVsZCBzdXBwb3J0IGZvciBiaXRtYXAgZm9udHMgKGJvZHkgb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogV3JpdHRlbiBieSBBbnVqIFZlcm1hLgpAQCAtMTc3LDExICsxNzcsMTEgQEAKICAgICoKICAgICogQEZpZWxkczoKICAgICogICBkaXN0IDo6Ci0gICAqICAgICBWZWN0b3IgbGVuZ3RoIG9mIHRoZSBgbmVhcmAgcGFyYW1ldGVyLiAgQ2FuIGJlIHNxdWFyZWQgb3IgYWJzb2x1dGUKKyAgICogICAgIFZlY3RvciBsZW5ndGggb2YgdGhlIGBwcm94YCBwYXJhbWV0ZXIuICBDYW4gYmUgc3F1YXJlZCBvciBhYnNvbHV0ZQogICAgKiAgICAgZGVwZW5kaW5nIG9uIHRoZSBgVVNFX1NRVUFSRURfRElTVEFOQ0VTYCBtYWNybyBkZWZpbmVkIGluIGZpbGUKICAgICogICAgIGBmdHNkZmNvbW1vbi5oYC4KICAgICoKLSAgICogICBuZWFyIDo6CisgICAqICAgcHJveCA6OgogICAgKiAgICAgVmVjdG9yIHRvIHRoZSBuZWFyZXN0IGVkZ2UuICBDYW4gYWxzbyBiZSBpbnRlcnByZXRlZCBhcyBzaG9ydGVzdAogICAgKiAgICAgZGlzdGFuY2Ugb2YgYSBwb2ludC4KICAgICoKQEAgLTE5NCw3ICsxOTQsNyBAQAogICB0eXBlZGVmIHN0cnVjdCAgRURfCiAgIHsKICAgICBGVF8xNkQxNiAgICAgIGRpc3Q7Ci0gICAgRlRfMTZEMTZfVmVjICBuZWFyOworICAgIEZUXzE2RDE2X1ZlYyAgcHJveDsKICAgICBGVF9CeXRlICAgICAgIGFscGhhOwogCiAgIH0gRUQ7CkBAIC01OTUsMTggKzU5NSwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2VyLT5yb3dzICkgKQogICAgICAgICB7CiAgICAgICAgICAgLyogYXBwcm94aW1hdGUgdGhlIGVkZ2UgZGlzdGFuY2UgZm9yIGVkZ2UgcGl4ZWxzICovCi0gICAgICAgICAgZWRbaW5kZXhdLm5lYXIgPSBjb21wdXRlX2VkZ2VfZGlzdGFuY2UoIGVkICsgaW5kZXgsCisgICAgICAgICAgZWRbaW5kZXhdLnByb3ggPSBjb21wdXRlX2VkZ2VfZGlzdGFuY2UoIGVkICsgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksIGosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlci0+d2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlci0+cm93cyApOwotICAgICAgICAgIGVkW2luZGV4XS5kaXN0ID0gVkVDVE9SX0xFTkdUSF8xNkQxNiggZWRbaW5kZXhdLm5lYXIgKTsKKyAgICAgICAgICBlZFtpbmRleF0uZGlzdCA9IFZFQ1RPUl9MRU5HVEhfMTZEMTYoIGVkW2luZGV4XS5wcm94ICk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgLyogZm9yIG5vbi1lZGdlIHBpeGVscyBhc3NpZ24gZmFyIGF3YXkgZGlzdGFuY2VzICovCiAgICAgICAgICAgZWRbaW5kZXhdLmRpc3QgICA9IDQwMCAqIE9ORTsKLSAgICAgICAgICBlZFtpbmRleF0ubmVhci54ID0gMjAwICogT05FOwotICAgICAgICAgIGVkW2luZGV4XS5uZWFyLnkgPSAyMDAgKiBPTkU7CisgICAgICAgICAgZWRbaW5kZXhdLnByb3gueCA9IDIwMCAqIE9ORTsKKyAgICAgICAgICBlZFtpbmRleF0ucHJveC55ID0gMjAwICogT05FOwogICAgICAgICB9CiAgICAgICB9CiAgICAgfQpAQCAtNzU2LDggKzc1Niw2IEBACiAgICAgICAgICAgICBieXRlICA9IChGVF9CeXRlKSggMSA8PCBtb2QgKTsKIAogICAgICAgICAgICAgdFt0X2luZGV4XS5hbHBoYSA9IHBpeGVsICYgYnl0ZSA/IDI1NSA6IDA7Ci0KLSAgICAgICAgICAgIHBpeGVsID0gMDsKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgIH0KQEAgLTg3Myw3ICs4NzEsNyBAQAogCiAgICAgaWYgKCBkaXN0IDwgY3VycmVudC0+ZGlzdCApCiAgICAgewotICAgICAgZGlzdF92ZWMgPSB0b19jaGVjay0+bmVhcjsKKyAgICAgIGRpc3RfdmVjID0gdG9fY2hlY2stPnByb3g7CiAKICAgICAgIGRpc3RfdmVjLnggKz0geF9vZmZzZXQgKiBPTkU7CiAgICAgICBkaXN0X3ZlYy55ICs9IHlfb2Zmc2V0ICogT05FOwpAQCAtODgyLDcgKzg4MCw3IEBACiAgICAgICBpZiAoIGRpc3QgPCBjdXJyZW50LT5kaXN0ICkKICAgICAgIHsKICAgICAgICAgY3VycmVudC0+ZGlzdCA9IGRpc3Q7Ci0gICAgICAgIGN1cnJlbnQtPm5lYXIgPSBkaXN0X3ZlYzsKKyAgICAgICAgY3VycmVudC0+cHJveCA9IGRpc3RfdmVjOwogICAgICAgfQogICAgIH0KICAgfQpAQCAtMTA5OCw3ICsxMDk2LDcgQEAKICAgICBGVF9JbnQgIGksIGo7CiAKICAgICBGVF9TREZGb3JtYXQqICB0X2J1ZmZlcjsKLSAgICBGVF8xNkQxNiAgICAgICBzcHJlYWQ7CisgICAgRlRfMTZEMTYgICAgICAgc3Bfc3EsIHNwcmVhZDsKIAogCiAgICAgaWYgKCAhd29ya2VyIHx8ICF0YXJnZXQgKQpAQCAtMTExOCwxMSArMTExNiwxMyBAQAogICAgICAgZ290byBFeGl0OwogICAgIH0KIAorICAgIHNwcmVhZCA9IChGVF8xNkQxNilGVF9JTlRfMTZEMTYoIHdvcmtlci0+cGFyYW1zLnNwcmVhZCApOworCiAjaWYgVVNFX1NRVUFSRURfRElTVEFOQ0VTCi0gICAgc3ByZWFkID0gRlRfSU5UXzE2RDE2KCB3b3JrZXItPnBhcmFtcy5zcHJlYWQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2VyLT5wYXJhbXMuc3ByZWFkICk7CisgICAgc3Bfc3EgPSAoRlRfMTZEMTYpRlRfSU5UXzE2RDE2KCB3b3JrZXItPnBhcmFtcy5zcHJlYWQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2VyLT5wYXJhbXMuc3ByZWFkICk7CiAjZWxzZQotICAgIHNwcmVhZCA9IEZUX0lOVF8xNkQxNiggd29ya2VyLT5wYXJhbXMuc3ByZWFkICk7CisgICAgc3Bfc3EgPSAoRlRfMTZEMTYpRlRfSU5UXzE2RDE2KCB3b3JrZXItPnBhcmFtcy5zcHJlYWQgKTsKICNlbmRpZgogCiAgICAgZm9yICggaiA9IDA7IGogPCByOyBqKysgKQpAQCAtMTEzOCw4ICsxMTM4LDggQEAKICAgICAgICAgaW5kZXggPSBqICogdyArIGk7CiAgICAgICAgIGRpc3QgID0gd29ya2VyLT5kaXN0YW5jZV9tYXBbaW5kZXhdLmRpc3Q7CiAKLSAgICAgICAgaWYgKCBkaXN0IDwgMCB8fCBkaXN0ID4gc3ByZWFkICkKLSAgICAgICAgICBkaXN0ID0gc3ByZWFkOworICAgICAgICBpZiAoIGRpc3QgPCAwIHx8IGRpc3QgPiBzcF9zcSApCisgICAgICAgICAgZGlzdCA9IHNwX3NxOwogCiAjaWYgVVNFX1NRVUFSRURfRElTVEFOQ0VTCiAgICAgICAgIGRpc3QgPSBzcXVhcmVfcm9vdCggZGlzdCApOwpkaWZmIC0tZ2l0IGEvc3JjL3NkZi9mdHNkZi5jIGIvc3JjL3NkZi9mdHNkZi5jCmluZGV4IGY2OWNmNDkuLjI2YTZkMDAgMTAwNjQ0Ci0tLSBhL3NyYy9zZGYvZnRzZGYuYworKysgYi9zcmMvc2RmL2Z0c2RmLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBTaWduZWQgRGlzdGFuY2UgRmllbGQgc3VwcG9ydCBmb3Igb3V0bGluZSBmb250cyAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogV3JpdHRlbiBieSBBbnVqIFZlcm1hLgpAQCAtNDk3LDcgKzQ5Nyw3IEBACiAgICAgICBnb3RvIEV4aXQ7CiAgICAgfQogCi0gICAgaWYgKCAhRlRfUUFMTE9DKCBwdHIsIHNpemVvZiAoICpwdHIgKSApICkKKyAgICBpZiAoICFGVF9RTkVXKCBwdHIgKSApCiAgICAgewogICAgICAgKnB0ciA9IG51bGxfZWRnZTsKICAgICAgICplZGdlID0gcHRyOwpAQCAtNTM2LDcgKzUzNiw3IEBACiAgICAgICBnb3RvIEV4aXQ7CiAgICAgfQogCi0gICAgaWYgKCAhRlRfUUFMTE9DKCBwdHIsIHNpemVvZiAoICpwdHIgKSApICkKKyAgICBpZiAoICFGVF9RTkVXKCBwdHIgKSApCiAgICAgewogICAgICAgKnB0ciAgICAgPSBudWxsX2NvbnRvdXI7CiAgICAgICAqY29udG91ciA9IHB0cjsKQEAgLTU5MSw3ICs1OTEsNyBAQAogICAgICAgZ290byBFeGl0OwogICAgIH0KIAotICAgIGlmICggIUZUX1FBTExPQyggcHRyLCBzaXplb2YgKCAqcHRyICkgKSApCisgICAgaWYgKCAhRlRfUU5FVyggcHRyICkgKQogICAgIHsKICAgICAgICpwdHIgICAgICAgID0gbnVsbF9zaGFwZTsKICAgICAgIHB0ci0+bWVtb3J5ID0gbWVtb3J5OwpAQCAtNzM4LDYgKzczOCwxOCBAQAogCiAgICAgY29udG91ciA9IHNoYXBlLT5jb250b3VyczsKIAorICAgIC8qIElmIHRoZSBjb250cm9sIHBvaW50IGNvaW5jaWRlcyB3aXRoIGFueSBvZiB0aGUgZW5kIHBvaW50cyAqLworICAgIC8qIHRoZW4gaXQgaXMgYSBsaW5lIGFuZCBzaG91bGQgYmUgdHJlYXRlZCBhcyBvbmUgdG8gYXZvaWQgICAqLworICAgIC8qIHVubmVjZXNzYXJ5IGNvbXBsZXhpdHkgbGF0ZXIgaW4gdGhlIGFsZ29yaXRobS4gICAgICAgICAgICAqLworICAgIGlmICggKCBjb250b3VyLT5sYXN0X3Bvcy54ID09IGNvbnRyb2xfMS0+eCAmJgorICAgICAgICAgICBjb250b3VyLT5sYXN0X3Bvcy55ID09IGNvbnRyb2xfMS0+eSApIHx8CisgICAgICAgICAoIGNvbnRyb2xfMS0+eCA9PSB0by0+eCAmJgorICAgICAgICAgICBjb250cm9sXzEtPnkgPT0gdG8tPnkgKSAgICAgICAgICAgICAgICkKKyAgICB7CisgICAgICBzZGZfbGluZV90byggdG8sIHVzZXIgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKICAgICBGVF9DQUxMKCBzZGZfZWRnZV9uZXcoIG1lbW9yeSwgJmVkZ2UgKSApOwogCiAgICAgZWRnZS0+ZWRnZV90eXBlID0gU0RGX0VER0VfQ09OSUM7CkBAIC03NjQsOSArNzc2LDkgQEAKICAgICAgICAgICAgICAgICBjb25zdCBGVF8yNkQ2X1ZlYyogIHRvLAogICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgICAgICAgdXNlciApCiAgIHsKLSAgICBTREZfU2hhcGUqICAgIHNoYXBlICAgID0gKCBTREZfU2hhcGUqICl1c2VyOwotICAgIFNERl9FZGdlKiAgICAgZWRnZSAgICAgPSBOVUxMOwotICAgIFNERl9Db250b3VyKiAgY29udG91ciAgPSBOVUxMOworICAgIFNERl9TaGFwZSogICAgc2hhcGUgICA9ICggU0RGX1NoYXBlKiApdXNlcjsKKyAgICBTREZfRWRnZSogICAgIGVkZ2UgICAgPSBOVUxMOworICAgIFNERl9Db250b3VyKiAgY29udG91ciA9IE5VTEw7CiAKICAgICBGVF9FcnJvciAgIGVycm9yICA9IEZUX0Vycl9PazsKICAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IHNoYXBlLT5tZW1vcnk7CkBAIC04NTksNyArODcxLDcgQEAKICAgICAgIGNib3gueU1heCA9IGVkZ2UuY29udHJvbF9iLnk7CiAKICAgICAgIGlzX3NldCA9IDE7Ci0gICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICAgIEZBTExfVEhST1VHSDsKIAogICAgIGNhc2UgU0RGX0VER0VfQ09OSUM6CiAgICAgICBpZiAoIGlzX3NldCApCkBAIC04ODcsNyArODk5LDcgQEAKIAogICAgICAgICBpc19zZXQgPSAxOwogICAgICAgfQotICAgICAgLyogZmFsbCB0aHJvdWdoICovCisgICAgICBGQUxMX1RIUk9VR0g7CiAKICAgICBjYXNlIFNERl9FREdFX0xJTkU6CiAgICAgICBpZiAoIGlzX3NldCApCkBAIC0xMDY1LDcgKzEwNzcsNyBAQAogICBzdGF0aWMgRlRfRXJyb3IKICAgc3BsaXRfc2RmX2NvbmljKCBGVF9NZW1vcnkgICAgIG1lbW9yeSwKICAgICAgICAgICAgICAgICAgICBGVF8yNkQ2X1ZlYyogIGNvbnRyb2xfcG9pbnRzLAotICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgbWF4X3NwbGl0cywKKyAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgIG1heF9zcGxpdHMsCiAgICAgICAgICAgICAgICAgICAgU0RGX0VkZ2UqKiAgICBvdXQgKQogICB7CiAgICAgRlRfRXJyb3IgICAgIGVycm9yID0gRlRfRXJyX09rOwpAQCAtMTEzNCwyNiArMTE0Niw0MSBAQAogICBzdGF0aWMgRlRfRXJyb3IKICAgc3BsaXRfc2RmX2N1YmljKCBGVF9NZW1vcnkgICAgIG1lbW9yeSwKICAgICAgICAgICAgICAgICAgICBGVF8yNkQ2X1ZlYyogIGNvbnRyb2xfcG9pbnRzLAotICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgbWF4X3NwbGl0cywKKyAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgIG1heF9zcGxpdHMsCiAgICAgICAgICAgICAgICAgICAgU0RGX0VkZ2UqKiAgICBvdXQgKQogICB7Ci0gICAgRlRfRXJyb3IgICAgIGVycm9yID0gRlRfRXJyX09rOwotICAgIEZUXzI2RDZfVmVjICBjcG9zWzddOwotICAgIFNERl9FZGdlKiAgICBsZWZ0LCogIHJpZ2h0OworICAgIEZUX0Vycm9yICAgICAgIGVycm9yID0gRlRfRXJyX09rOworICAgIEZUXzI2RDZfVmVjICAgIGNwb3NbN107CisgICAgU0RGX0VkZ2UqICAgICAgbGVmdCwgKnJpZ2h0OworICAgIGNvbnN0IEZUXzI2RDYgIHRocmVzaG9sZCA9IE9ORV9QSVhFTCAvIDQ7CiAKIAotICAgIGlmICggIW1lbW9yeSB8fCAhb3V0ICApCisgICAgaWYgKCAhbWVtb3J5IHx8ICFvdXQgKQogICAgIHsKICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKICAgICAgIGdvdG8gRXhpdDsKICAgICB9CiAKLSAgICAvKiBzcGxpdCB0aGUgY29uaWMgKi8KKyAgICAvKiBzcGxpdCB0aGUgY3ViaWMgKi8KICAgICBjcG9zWzBdID0gY29udHJvbF9wb2ludHNbMF07CiAgICAgY3Bvc1sxXSA9IGNvbnRyb2xfcG9pbnRzWzFdOwogICAgIGNwb3NbMl0gPSBjb250cm9sX3BvaW50c1syXTsKICAgICBjcG9zWzNdID0gY29udHJvbF9wb2ludHNbM107CiAKKyAgICAvKiBJZiB0aGUgc2VnbWVudCBpcyBmbGF0IGVub3VnaCB3ZSB3b24ndCBnZXQgYW55IGJlbmVmaXQgYnkgKi8KKyAgICAvKiBzcGxpdHRpbmcgaXQgZnVydGhlciwgc28gd2UgY2FuIGp1c3Qgc3RvcCBzcGxpdHRpbmcuICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBDaGVjayB0aGUgZGV2aWF0aW9uIG9mIHRoZSBCZXppZXIgY3VydmUgYW5kIHN0b3AgaWYgaXQgaXMgKi8KKyAgICAvKiBzbWFsbGVyIHRoYW4gdGhlIHByZS1kZWZpbmVkIGB0aHJlc2hvbGRgIHZhbHVlLiAgICAgICAgICAgKi8KKyAgICBpZiAoIEZUX0FCUyggMiAqIGNwb3NbMF0ueCAtIDMgKiBjcG9zWzFdLnggKyBjcG9zWzNdLnggKSA8IHRocmVzaG9sZCAmJgorICAgICAgICAgRlRfQUJTKCAyICogY3Bvc1swXS55IC0gMyAqIGNwb3NbMV0ueSArIGNwb3NbM10ueSApIDwgdGhyZXNob2xkICYmCisgICAgICAgICBGVF9BQlMoIGNwb3NbMF0ueCAtIDMgKiBjcG9zWzJdLnggKyAyICogY3Bvc1szXS54ICkgPCB0aHJlc2hvbGQgJiYKKyAgICAgICAgIEZUX0FCUyggY3Bvc1swXS55IC0gMyAqIGNwb3NbMl0ueSArIDIgKiBjcG9zWzNdLnkgKSA8IHRocmVzaG9sZCApCisgICAgeworICAgICAgc3BsaXRfY3ViaWMoIGNwb3MgKTsKKyAgICAgIGdvdG8gQXBwZW5kOworICAgIH0KKwogICAgIHNwbGl0X2N1YmljKCBjcG9zICk7CiAKICAgICAvKiBJZiBtYXggbnVtYmVyIG9mIHNwbGl0cyBpcyBkb25lICovCkBAIC0xMjUwLDEzICsxMjc3LDMyIEBACiAgICAgICAgICAgLyogU3ViZGl2aWRlIHRoZSBjdXJ2ZSBhbmQgYWRkIGl0IHRvIHRoZSBsaXN0LiAqLwogICAgICAgICAgIHsKICAgICAgICAgICAgIEZUXzI2RDZfVmVjICBjdHJsc1szXTsKKyAgICAgICAgICAgIEZUXzI2RDYgICAgICBkeCwgZHk7CisgICAgICAgICAgICBGVF9VSW50ICAgICAgbnVtX3NwbGl0czsKIAogCiAgICAgICAgICAgICBjdHJsc1swXSA9IGVkZ2UtPnN0YXJ0X3BvczsKICAgICAgICAgICAgIGN0cmxzWzFdID0gZWRnZS0+Y29udHJvbF9hOwogICAgICAgICAgICAgY3RybHNbMl0gPSBlZGdlLT5lbmRfcG9zOwogCi0gICAgICAgICAgICBlcnJvciA9IHNwbGl0X3NkZl9jb25pYyggbWVtb3J5LCBjdHJscywgMzIsICZuZXdfZWRnZXMgKTsKKyAgICAgICAgICAgIGR4ID0gRlRfQUJTKCBjdHJsc1syXS54ICsgY3RybHNbMF0ueCAtIDIgKiBjdHJsc1sxXS54ICk7CisgICAgICAgICAgICBkeSA9IEZUX0FCUyggY3RybHNbMl0ueSArIGN0cmxzWzBdLnkgLSAyICogY3RybHNbMV0ueSApOworICAgICAgICAgICAgaWYgKCBkeCA8IGR5ICkKKyAgICAgICAgICAgICAgZHggPSBkeTsKKworICAgICAgICAgICAgLyogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgbmVjZXNzYXJ5IGJpc2VjdGlvbnMuICBFYWNoICAgICAgKi8KKyAgICAgICAgICAgIC8qIGJpc2VjdGlvbiBjYXVzZXMgYSBmb3VyLWZvbGQgcmVkdWN0aW9uIG9mIHRoZSBkZXZpYXRpb24sICovCisgICAgICAgICAgICAvKiBoZW5jZSB3ZSBiaXNlY3QgdGhlIEJlemllciBjdXJ2ZSB1bnRpbCB0aGUgZGV2aWF0aW9uICAgICAqLworICAgICAgICAgICAgLyogYmVjb21lcyBsZXNzIHRoYW4gMS84IG9mIGEgcGl4ZWwuICBGb3IgbW9yZSBkZXRhaWxzICAgICAgKi8KKyAgICAgICAgICAgIC8qIGNoZWNrIGZpbGUgYGZ0Z3JheXMuY2AuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICBudW1fc3BsaXRzID0gMTsKKyAgICAgICAgICAgIHdoaWxlICggZHggPiBPTkVfUElYRUwgLyA4ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgZHggICAgICAgICA+Pj0gMjsKKyAgICAgICAgICAgICAgbnVtX3NwbGl0cyA8PD0gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXJyb3IgPSBzcGxpdF9zZGZfY29uaWMoIG1lbW9yeSwgY3RybHMsIG51bV9zcGxpdHMsICZuZXdfZWRnZXMgKTsKICAgICAgICAgICB9CiAgICAgICAgICAgYnJlYWs7CiAKQEAgLTEyNzcsOSArMTMyMywxMSBAQAogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOwotICAgICAgICAgIGdvdG8gRXhpdDsKICAgICAgICAgfQogCisgICAgICAgIGlmICggZXJyb3IgIT0gRlRfRXJyX09rICkKKyAgICAgICAgICBnb3RvIEV4aXQ7CisKICAgICAgICAgZWRnZXMgPSBlZGdlcy0+bmV4dDsKICAgICAgIH0KIApAQCAtMTg5MSw3ICsxOTM5LDcgQEAKICAgICAvKiBub3cgZmFjdG9yIGlzIDE2LjE2ICovCiAgICAgZmFjdG9yID0gRlRfRGl2Rml4KCBmYWN0b3IsIHNxX2xpbmVfbGVuZ3RoICk7CiAKLSAgICAvKiBjbGFtcCB0aGUgZmFjdG9yIGJldHdlZW4gMC4wIGFuZCAxLjAgaW4gZml4ZWQgcG9pbnQgKi8KKyAgICAvKiBjbGFtcCB0aGUgZmFjdG9yIGJldHdlZW4gMC4wIGFuZCAxLjAgaW4gZml4ZWQtcG9pbnQgKi8KICAgICBpZiAoIGZhY3RvciA+IEZUX0lOVF8xNkQxNiggMSApICkKICAgICAgIGZhY3RvciA9IEZUX0lOVF8xNkQxNiggMSApOwogICAgIGlmICggZmFjdG9yIDwgMCApCkBAIC0yMDYxLDcgKzIxMDksOCBAQAogICAgIEZUX0Vycm9yICBlcnJvciA9IEZUX0Vycl9PazsKIAogICAgIEZUXzI2RDZfVmVjICBhQSwgYkI7ICAgICAgICAgLyogQSwgQiBpbiB0aGUgYWJvdmUgY29tbWVudCAgICAgICAgICAgICAqLwotICAgIEZUXzI2RDZfVmVjICBuZWFyZXN0X3BvaW50OyAgLyogcG9pbnQgb24gY3VydmUgbmVhcmVzdCB0byBgcG9pbnRgICAgICAqLworICAgIEZUXzI2RDZfVmVjICBuZWFyZXN0X3BvaW50ID0geyAwLCAwIH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwb2ludCBvbiBjdXJ2ZSBuZWFyZXN0IHRvIGBwb2ludGAgICAgICovCiAgICAgRlRfMjZENl9WZWMgIGRpcmVjdGlvbjsgICAgICAvKiBkaXJlY3Rpb24gb2YgY3VydmUgYXQgYG5lYXJlc3RfcG9pbnRgICovCiAKICAgICBGVF8yNkQ2X1ZlYyAgcDAsIHAxLCBwMjsgICAgIC8qIGNvbnRyb2wgcG9pbnRzIG9mIGEgY29uaWMgY3VydmUgICAgICAgKi8KQEAgLTIzNTcsNyArMjQwNiw4IEBACiAgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOwogCiAgICAgRlRfMjZENl9WZWMgIGFBLCBiQiwgY0M7ICAgICAvKiBBLCBCLCBDIGluIHRoZSBhYm92ZSBjb21tZW50ICAgICAgICAgICovCi0gICAgRlRfMjZENl9WZWMgIG5lYXJlc3RfcG9pbnQ7ICAvKiBwb2ludCBvbiBjdXJ2ZSBuZWFyZXN0IHRvIGBwb2ludGAgICAgICovCisgICAgRlRfMjZENl9WZWMgIG5lYXJlc3RfcG9pbnQgPSB7IDAsIDAgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBvaW50IG9uIGN1cnZlIG5lYXJlc3QgdG8gYHBvaW50YCAgICAgKi8KICAgICBGVF8yNkQ2X1ZlYyAgZGlyZWN0aW9uOyAgICAgIC8qIGRpcmVjdGlvbiBvZiBjdXJ2ZSBhdCBgbmVhcmVzdF9wb2ludGAgKi8KIAogICAgIEZUXzI2RDZfVmVjICBwMCwgcDEsIHAyOyAgICAgLyogY29udHJvbCBwb2ludHMgb2YgYSBjb25pYyBjdXJ2ZSAgICAgICAqLwpAQCAtMjk2Niw3ICszMDE2LDcgQEAKICAgICAgICAgZGlmZiA9IGN1cnJlbnRfZGlzdC5kaXN0YW5jZSAtIG1pbl9kaXN0LmRpc3RhbmNlOwogCiAKLSAgICAgICAgaWYgKCBGVF9BQlMoZGlmZiApIDwgQ09STkVSX0NIRUNLX0VQU0lMT04gKQorICAgICAgICBpZiAoIEZUX0FCUyggZGlmZiApIDwgQ09STkVSX0NIRUNLX0VQU0lMT04gKQogICAgICAgICAgIG1pbl9kaXN0ID0gcmVzb2x2ZV9jb3JuZXIoIG1pbl9kaXN0LCBjdXJyZW50X2Rpc3QgKTsKICAgICAgICAgZWxzZSBpZiAoIGRpZmYgPCAwICkKICAgICAgICAgICBtaW5fZGlzdCA9IGN1cnJlbnRfZGlzdDsKQEAgLTMxMTYsNyArMzE2Niw3IEBACiAgICAgICAgIGlmICggbWluX2Rpc3QuZGlzdGFuY2UgPiBzcF9zcSApCiAgICAgICAgICAgbWluX2Rpc3QuZGlzdGFuY2UgPSBzcF9zcTsKIAotICAgICAgICAvKiBzcXVhcmVfcm9vdCB0aGUgdmFsdWVzIGFuZCBmaXQgaW4gYSA2LjEwIGZpeGVkIHBvaW50ICovCisgICAgICAgIC8qIHNxdWFyZV9yb290IHRoZSB2YWx1ZXMgYW5kIGZpdCBpbiBhIDYuMTAgZml4ZWQtcG9pbnQgKi8KICAgICAgICAgaWYgKCBVU0VfU1FVQVJFRF9ESVNUQU5DRVMgKQogICAgICAgICAgIG1pbl9kaXN0LmRpc3RhbmNlID0gc3F1YXJlX3Jvb3QoIG1pbl9kaXN0LmRpc3RhbmNlICk7CiAKQEAgLTMyMDgsNyArMzI1OCw3IEBACiAgICAgLyogYW5kIGFsc28gZGV0ZXJtaW5lIHRoZSBzaWducyBwcm9wZXJseS4gICAgICAgICAgICAgKi8KICAgICBTREZfU2lnbmVkX0Rpc3RhbmNlKiAgZGlzdHMgPSBOVUxMOwogCi0gICAgY29uc3QgRlRfMTZEMTYgIGZpeGVkX3NwcmVhZCA9IEZUX0lOVF8xNkQxNiggc3ByZWFkICk7CisgICAgY29uc3QgRlRfMTZEMTYgIGZpeGVkX3NwcmVhZCA9IChGVF8xNkQxNilGVF9JTlRfMTZEMTYoIHNwcmVhZCApOwogCiAKICAgICBpZiAoICFzaGFwZSB8fCAhYml0bWFwICkKQEAgLTMyNDAsNyArMzI5MCw3IEBACiAgICAgYnVmZmVyICAgPSAoRlRfU0RGRm9ybWF0KiliaXRtYXAtPmJ1ZmZlcjsKIAogICAgIGlmICggVVNFX1NRVUFSRURfRElTVEFOQ0VTICkKLSAgICAgIHNwX3NxID0gZml4ZWRfc3ByZWFkICogZml4ZWRfc3ByZWFkOworICAgICAgc3Bfc3EgPSBGVF9JTlRfMTZEMTYoIChGVF9JbnQpKCBzcHJlYWQgKiBzcHJlYWQgKSApOwogICAgIGVsc2UKICAgICAgIHNwX3NxID0gZml4ZWRfc3ByZWFkOwogCkBAIC0zMjg0LDYgKzMzMzQsNyBAQAogICAgICAgICAgICAgRlRfMjZENl9WZWMgICAgICAgICAgZ3JpZF9wb2ludCA9IHplcm9fdmVjdG9yOwogICAgICAgICAgICAgU0RGX1NpZ25lZF9EaXN0YW5jZSAgZGlzdCAgICAgICA9IG1heF9zZGY7CiAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgICAgICBpbmRleCAgICAgID0gMDsKKyAgICAgICAgICAgIEZUXzE2RDE2ICAgICAgICAgICAgIGRpZmYgICAgICAgPSAwOwogCiAKICAgICAgICAgICAgIGlmICggeCA8IDAgfHwgeCA+PSB3aWR0aCApCkBAIC0zMzExLDcgKzMzNjIsNyBAQAogICAgICAgICAgICAgaWYgKCBkaXN0LmRpc3RhbmNlID4gc3Bfc3EgKQogICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgLyogc3F1YXJlX3Jvb3QgdGhlIHZhbHVlcyBhbmQgZml0IGluIGEgNi4xMCBmaXhlZC1wb2ludCAqLworICAgICAgICAgICAgLyogdGFrZSB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIGRpc3RhbmNlIGlmIHJlcXVpcmVkICovCiAgICAgICAgICAgICBpZiAoIFVTRV9TUVVBUkVEX0RJU1RBTkNFUyApCiAgICAgICAgICAgICAgIGRpc3QuZGlzdGFuY2UgPSBzcXVhcmVfcm9vdCggZGlzdC5kaXN0YW5jZSApOwogCkBAIC0zMzIzLDExICszMzc0LDE1IEBACiAgICAgICAgICAgICAvKiBjaGVjayB3aGV0aGVyIHRoZSBwaXhlbCBpcyBzZXQgb3Igbm90ICovCiAgICAgICAgICAgICBpZiAoIGRpc3RzW2luZGV4XS5zaWduID09IDAgKQogICAgICAgICAgICAgICBkaXN0c1tpbmRleF0gPSBkaXN0OwotICAgICAgICAgICAgZWxzZSBpZiAoIGRpc3RzW2luZGV4XS5kaXN0YW5jZSA+IGRpc3QuZGlzdGFuY2UgKQotICAgICAgICAgICAgICBkaXN0c1tpbmRleF0gPSBkaXN0OwotICAgICAgICAgICAgZWxzZSBpZiAoIEZUX0FCUyggZGlzdHNbaW5kZXhdLmRpc3RhbmNlIC0gZGlzdC5kaXN0YW5jZSApCi0gICAgICAgICAgICAgICAgICAgICAgICA8IENPUk5FUl9DSEVDS19FUFNJTE9OICkKLSAgICAgICAgICAgICAgZGlzdHNbaW5kZXhdID0gcmVzb2x2ZV9jb3JuZXIoIGRpc3RzW2luZGV4XSwgZGlzdCApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBkaWZmID0gRlRfQUJTKCBkaXN0c1tpbmRleF0uZGlzdGFuY2UgLSBkaXN0LmRpc3RhbmNlICk7CisKKyAgICAgICAgICAgICAgaWYgKCBkaWZmIDw9IENPUk5FUl9DSEVDS19FUFNJTE9OICkKKyAgICAgICAgICAgICAgICBkaXN0c1tpbmRleF0gPSByZXNvbHZlX2Nvcm5lciggZGlzdHNbaW5kZXhdLCBkaXN0ICk7CisgICAgICAgICAgICAgIGVsc2UgaWYgKCBkaXN0c1tpbmRleF0uZGlzdGFuY2UgPiBkaXN0LmRpc3RhbmNlICkKKyAgICAgICAgICAgICAgICBkaXN0c1tpbmRleF0gPSBkaXN0OworICAgICAgICAgICAgfQogICAgICAgICAgIH0KICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9zcmMvc2RmL2Z0c2RmLmggYi9zcmMvc2RmL2Z0c2RmLmgKaW5kZXggMTg3YjQxOC4uMjM0YzA3NSAxMDA2NDQKLS0tIGEvc3JjL3NkZi9mdHNkZi5oCisrKyBiL3NyYy9zZGYvZnRzZGYuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFNpZ25lZCBEaXN0YW5jZSBGaWVsZCBzdXBwb3J0IChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBXcml0dGVuIGJ5IEFudWogVmVybWEuCmRpZmYgLS1naXQgYS9zcmMvc2RmL2Z0c2RmY29tbW9uLmMgYi9zcmMvc2RmL2Z0c2RmY29tbW9uLmMKaW5kZXggOTFhYTUyMS4uNTA1MjIwMSAxMDA2NDQKLS0tIGEvc3JjL3NkZi9mdHNkZmNvbW1vbi5jCisrKyBiL3NyYy9zZGYvZnRzZGZjb21tb24uYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEF1eGlsaWFyeSBkYXRhIGZvciBTaWduZWQgRGlzdGFuY2UgRmllbGQgc3VwcG9ydCAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogV3JpdHRlbiBieSBBbnVqIFZlcm1hLgpAQCAtMzMsNyArMzMsNyBAQAogICAgKgogICAgKiAgIGh0dHBzOi8vZ2l0aHViLmNvbS9jaG1pa2UvZnBzcXJ0CiAgICAqCi0gICAqIFVzZSB0aGlzIHRvIGNvbXB1dGUgdGhlIHNxdWFyZSByb290IG9mIGEgMTYuMTYgZml4ZWQgcG9pbnQgbnVtYmVyLgorICAgKiBVc2UgdGhpcyB0byBjb21wdXRlIHRoZSBzcXVhcmUgcm9vdCBvZiBhIDE2LjE2IGZpeGVkLXBvaW50IG51bWJlci4KICAgICovCiAgIEZUX0xPQ0FMX0RFRiggRlRfMTZEMTYgKQogICBzcXVhcmVfcm9vdCggRlRfMTZEMTYgIHZhbCApCkBAIC03Miw4ICs3Miw4IEBACiAgICAqLwogCiAgIC8qCi0gICAqIENvbnZlcnQgMTYuMTYgZml4ZWQgcG9pbnQgdmFsdWVzIHRvIHRoZSBkZXNpcmVkIG91dHB1dCBmb3JtYXQuCi0gICAqIEluIHRoaXMgY2FzZSB3ZSByZWR1Y2UgMTYuMTYgZml4ZWQgcG9pbnQgdmFsdWVzIHRvIG5vcm1hbGl6ZWQKKyAgICogQ29udmVydCAxNi4xNiBmaXhlZC1wb2ludCB2YWx1ZXMgdG8gdGhlIGRlc2lyZWQgb3V0cHV0IGZvcm1hdC4KKyAgICogSW4gdGhpcyBjYXNlIHdlIHJlZHVjZSAxNi4xNiBmaXhlZC1wb2ludCB2YWx1ZXMgdG8gbm9ybWFsaXplZAogICAgKiA4LWJpdCB2YWx1ZXMuCiAgICAqCiAgICAqIFRoZSBgbWF4X3ZhbHVlYCBpbiB0aGUgcGFyYW1ldGVyIGlzIHRoZSBtYXhpbXVtIHZhbHVlIGluIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL3NkZi9mdHNkZmNvbW1vbi5oIGIvc3JjL3NkZi9mdHNkZmNvbW1vbi5oCmluZGV4IDQ0ZjZiYmEuLjYwY2E5NzcgMTAwNjQ0Ci0tLSBhL3NyYy9zZGYvZnRzZGZjb21tb24uaAorKysgYi9zcmMvc2RmL2Z0c2RmY29tbW9uLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBBdXhpbGlhcnkgZGF0YSBmb3IgU2lnbmVkIERpc3RhbmNlIEZpZWxkIHN1cHBvcnQgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFdyaXR0ZW4gYnkgQW51aiBWZXJtYS4KQEAgLTQ4LDYgKzQ4LDggQEAKICNkZWZpbmUgTUlOX1NQUkVBRCAgICAgIDIKICAgLyogbWF4aW11bSBzcHJlYWQgc3VwcG9ydGVkIGJ5IHRoZSByZW5kZXJlciAqLwogI2RlZmluZSBNQVhfU1BSRUFEICAgICAgMzIKKyAgLyogcGl4ZWwgc2l6ZSBpbiAyNi42ICovCisjZGVmaW5lIE9ORV9QSVhFTCAgICAgICAoIDEgPDwgNiApCiAKIAogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTExMyw4ICsxMTUsOCBAQAogICB0eXBlZGVmIEZUX1ZlY3RvciBGVF8yNkQ2X1ZlYzsgICAvKiB3aXRoIDI2LjYgZml4ZWQtcG9pbnQgY29tcG9uZW50cyAgKi8KICAgdHlwZWRlZiBGVF9WZWN0b3IgRlRfMTZEMTZfVmVjOyAgLyogd2l0aCAxNi4xNiBmaXhlZC1wb2ludCBjb21wb25lbnRzICovCiAKLSAgdHlwZWRlZiBGVF9GaXhlZCAgRlRfMTZEMTY7ICAgICAgLyogMTYuMTYgZml4ZWQtcG9pbnQgcmVwcmVzZW50YXRpb24gICovCi0gIHR5cGVkZWYgRlRfRml4ZWQgIEZUXzI2RDY7ICAgICAgIC8qIDI2LjYgZml4ZWQtcG9pbnQgcmVwcmVzZW50YXRpb24gICAqLworICB0eXBlZGVmIEZUX0ludDMyICBGVF8xNkQxNjsgICAgICAvKiAxNi4xNiBmaXhlZC1wb2ludCByZXByZXNlbnRhdGlvbiAgKi8KKyAgdHlwZWRlZiBGVF9JbnQzMiAgRlRfMjZENjsgICAgICAgLyogMjYuNiBmaXhlZC1wb2ludCByZXByZXNlbnRhdGlvbiAgICovCiAgIHR5cGVkZWYgRlRfQnl0ZSAgIEZUX1NERkZvcm1hdDsgIC8qIGZvcm1hdCB0byByZXByZXNlbnQgU0RGIGRhdGEgICAgICAqLwogCiAgIHR5cGVkZWYgRlRfQkJveCAgIEZUX0NCb3g7ICAgICAgIC8qIGNvbnRyb2wgYm94IG9mIGEgY3VydmUgICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvc3JjL3NkZi9mdHNkZmVycnMuaCBiL3NyYy9zZGYvZnRzZGZlcnJzLmgKaW5kZXggZGJiMTEzZC4uNTE5ZGIwZiAxMDA2NDQKLS0tIGEvc3JjL3NkZi9mdHNkZmVycnMuaAorKysgYi9zcmMvc2RmL2Z0c2RmZXJycy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgU2lnbmVkIERpc3RhbmNlIEZpZWxkIGVycm9yIGNvZGVzIChzcGVjaWZpY2F0aW9uIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFdyaXR0ZW4gYnkgQW51aiBWZXJtYS4KZGlmZiAtLWdpdCBhL3NyYy9zZGYvZnRzZGZyZW5kLmMgYi9zcmMvc2RmL2Z0c2RmcmVuZC5jCmluZGV4IDMwZjJlNjIuLjlhYzdkNmYgMTAwNjQ0Ci0tLSBhL3NyYy9zZGYvZnRzZGZyZW5kLmMKKysrIGIvc3JjL3NkZi9mdHNkZnJlbmQuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFNpZ25lZCBEaXN0YW5jZSBGaWVsZCByZW5kZXJlciBpbnRlcmZhY2UgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFdyaXR0ZW4gYnkgQW51aiBWZXJtYS4KQEAgLTI5OCwxNSArMjk4LDkgQEAKICAgICAgIGdvdG8gRXhpdDsKICAgICB9CiAKLSAgICAvKiB0aGUgcm93cyBhbmQgcGl0Y2ggbXVzdCBiZSB2YWxpZCBhZnRlciBwcmVzZXR0aW5nIHRoZSAqLwotICAgIC8qIGJpdG1hcCB1c2luZyBvdXRsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogbm90aGluZyB0byByZW5kZXIgKi8KICAgICBpZiAoICFiaXRtYXAtPnJvd3MgfHwgIWJpdG1hcC0+cGl0Y2ggKQotICAgIHsKLSAgICAgIEZUX0VSUk9SKCggImZ0X3NkZl9yZW5kZXI6IGZhaWxlZCB0byBwcmVzZXQgYml0bWFwXG4iICkpOwotCi0gICAgICBlcnJvciA9IEZUX1RIUk9XKCBDYW5ub3RfUmVuZGVyX0dseXBoICk7Ci0gICAgICBnb3RvIEV4aXQ7Ci0gICAgfQorICAgICAgcmV0dXJuIEZUX0Vycl9PazsKIAogICAgIC8qIHRoZSBwYWRkaW5nIHdpbGwgc2ltcGx5IGJlIGVxdWFsIHRvIHRoZSBgc3ByZWFkJyAqLwogICAgIHhfcGFkID0gc2RmX21vZHVsZS0+c3ByZWFkOwpAQCAtNTI1LDEzICs1MTksOSBAQAogICAgICAgZ290byBFeGl0OwogICAgIH0KIAorICAgIC8qIG5vdGhpbmcgdG8gcmVuZGVyICovCiAgICAgaWYgKCAhYml0bWFwLT5yb3dzIHx8ICFiaXRtYXAtPnBpdGNoICkKLSAgICB7Ci0gICAgICBGVF9FUlJPUigoICJmdF9ic2RmX3JlbmRlcjogaW52YWxpZCBiaXRtYXAgc2l6ZVxuIiApKTsKLQotICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOwotICAgICAgZ290byBFeGl0OwotICAgIH0KKyAgICAgIHJldHVybiBGVF9FcnJfT2s7CiAKICAgICBGVF9CaXRtYXBfTmV3KCAmdGFyZ2V0ICk7CiAKZGlmZiAtLWdpdCBhL3NyYy9zZGYvZnRzZGZyZW5kLmggYi9zcmMvc2RmL2Z0c2RmcmVuZC5oCmluZGV4IGJjODg3MDcuLjU3MWFjODMgMTAwNjQ0Ci0tLSBhL3NyYy9zZGYvZnRzZGZyZW5kLmgKKysrIGIvc3JjL3NkZi9mdHNkZnJlbmQuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFNpZ25lZCBEaXN0YW5jZSBGaWVsZCByZW5kZXJlciBpbnRlcmZhY2UgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFdyaXR0ZW4gYnkgQW51aiBWZXJtYS4KZGlmZiAtLWdpdCBhL3NyYy9zZGYvbW9kdWxlLm1rIGIvc3JjL3NkZi9tb2R1bGUubWsKaW5kZXggNmJlNGIwYy4uZTg5NmQyMCAxMDA2NDQKLS0tIGEvc3JjL3NkZi9tb2R1bGUubWsKKysrIGIvc3JjL3NkZi9tb2R1bGUubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9zcmMvc2RmL3J1bGVzLm1rIGIvc3JjL3NkZi9ydWxlcy5tawppbmRleCA3ZTdlNGZiLi5kNzc0MjQxIDEwMDY0NAotLS0gYS9zcmMvc2RmL3J1bGVzLm1rCisrKyBiL3NyYy9zZGYvcnVsZXMubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9zcmMvc2RmL3NkZi5jIGIvc3JjL3NkZi9zZGYuYwppbmRleCAxYmMzZmMzLi5jMTU5YjA4IDEwMDY0NAotLS0gYS9zcmMvc2RmL3NkZi5jCisrKyBiL3NyYy9zZGYvc2RmLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBTaWduZWQgRGlzdGFuY2UgRmllbGQgcmVuZGVyZXIgbW9kdWxlIGNvbXBvbmVudCAoYm9keSBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBXcml0dGVuIGJ5IEFudWogVmVybWEuCmRpZmYgLS1naXQgYS9zcmMvc2ZudC9tb2R1bGUubWsgYi9zcmMvc2ZudC9tb2R1bGUubWsKaW5kZXggZWFiZDQ4Zi4uNDQ5MWExYiAxMDA2NDQKLS0tIGEvc3JjL3NmbnQvbW9kdWxlLm1rCisrKyBiL3NyYy9zZm50L21vZHVsZS5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL3NyYy9zZm50L3BuZ3NoaW0uYyBiL3NyYy9zZm50L3BuZ3NoaW0uYwppbmRleCAwMmZlMzc0Li40MjNiMDdiIDEwMDY0NAotLS0gYS9zcmMvc2ZudC9wbmdzaGltLmMKKysrIGIvc3JjL3NmbnQvcG5nc2hpbS5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgUE5HIEJpdG1hcCBnbHlwaCBzdXBwb3J0LgogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMyBieQogICogR29vZ2xlLCBJbmMuCiAgKiBXcml0dGVuIGJ5IFN0dWFydCBHaWxsIGFuZCBCZWhkYWQgRXNmYWhib2QuCiAgKgpAQCAtMjM5LDcgKzIzOSw3IEBACiAgICAgICAqZSA9IEZUX1RIUk9XKCBJbnZhbGlkX1N0cmVhbV9SZWFkICk7CiAgICAgICBwbmdfZXJyb3IoIHBuZywgTlVMTCApOwogCi0gICAgICByZXR1cm47CisgICAgICAvKiByZXR1cm47IChuZXZlciByZWFjaGVkKSAqLwogICAgIH0KIAogICAgIGZ0X21lbWNweSggZGF0YSwgc3RyZWFtLT5jdXJzb3IsIGxlbmd0aCApOwpAQCAtMzY3LDcgKzM2Nyw3IEBACiAgICAgfQogCiAgICAgLyogdHJhbnNmb3JtIHRyYW5zcGFyZW5jeSB0byBhbHBoYSAqLwotICAgIGlmICggcG5nX2dldF92YWxpZChwbmcsIGluZm8sIFBOR19JTkZPX3RSTlMgKSApCisgICAgaWYgKCBwbmdfZ2V0X3ZhbGlkKCBwbmcsIGluZm8sIFBOR19JTkZPX3RSTlMgKSApCiAgICAgICBwbmdfc2V0X3RSTlNfdG9fYWxwaGEoIHBuZyApOwogCiAgICAgaWYgKCBiaXRkZXB0aCA9PSAxNiApCkBAIC0zODcsNyArMzg3LDcgQEAKICAgICBwbmdfc2V0X2ZpbGxlciggcG5nLCAweEZGLCBQTkdfRklMTEVSX0FGVEVSICk7CiAKICAgICAvKiByZWNoZWNrIGhlYWRlciBhZnRlciBzZXR0aW5nIEVYUEFORCBvcHRpb25zICovCi0gICAgcG5nX3JlYWRfdXBkYXRlX2luZm8ocG5nLCBpbmZvICk7CisgICAgcG5nX3JlYWRfdXBkYXRlX2luZm8oIHBuZywgaW5mbyApOwogICAgIHBuZ19nZXRfSUhEUiggcG5nLCBpbmZvLAogICAgICAgICAgICAgICAgICAgJmltZ1dpZHRoLCAmaW1nSGVpZ2h0LAogICAgICAgICAgICAgICAgICAgJmJpdGRlcHRoLCAmY29sb3JfdHlwZSwgJmludGVybGFjZSwKQEAgLTQwNyw3ICs0MDcsOCBAQAogICAgIHN3aXRjaCAoIGNvbG9yX3R5cGUgKQogICAgIHsKICAgICBkZWZhdWx0OgotICAgICAgLyogU2hvdWxkbid0IGhhcHBlbiwgYnV0IGZhbGwgdGhyb3VnaC4gKi8KKyAgICAgIC8qIFNob3VsZG4ndCBoYXBwZW4sIGJ1dCAuLi4gKi8KKyAgICAgIEZBTExfVEhST1VHSDsKIAogICAgIGNhc2UgUE5HX0NPTE9SX1RZUEVfUkdCX0FMUEhBOgogICAgICAgcG5nX3NldF9yZWFkX3VzZXJfdHJhbnNmb3JtX2ZuKCBwbmcsIHByZW11bHRpcGx5X2RhdGEgKTsKZGlmZiAtLWdpdCBhL3NyYy9zZm50L3BuZ3NoaW0uaCBiL3NyYy9zZm50L3BuZ3NoaW0uaAppbmRleCA4OWVmZDI3Li45MDNiZDJiIDEwMDY0NAotLS0gYS9zcmMvc2ZudC9wbmdzaGltLmgKKysrIGIvc3JjL3NmbnQvcG5nc2hpbS5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgUE5HIEJpdG1hcCBnbHlwaCBzdXBwb3J0LgogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMyBieQogICogR29vZ2xlLCBJbmMuCiAgKiBXcml0dGVuIGJ5IFN0dWFydCBHaWxsIGFuZCBCZWhkYWQgRXNmYWhib2QuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL3NmbnQvcnVsZXMubWsgYi9zcmMvc2ZudC9ydWxlcy5tawppbmRleCBkNDEzMDVjLi40ZDJkN2U4IDEwMDY0NAotLS0gYS9zcmMvc2ZudC9ydWxlcy5taworKysgYi9zcmMvc2ZudC9ydWxlcy5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKQEAgLTM2LDYgKzM2LDcgQEAKICAgICAgICAgICAgICAgICAkKFNGTlRfRElSKS90dGJkZi5jICAgICBcCiAgICAgICAgICAgICAgICAgJChTRk5UX0RJUikvdHRjbWFwLmMgICAgXAogICAgICAgICAgICAgICAgICQoU0ZOVF9ESVIpL3R0Y29sci5jICAgIFwKKyAgICAgICAgICAgICAgICAkKFNGTlRfRElSKS90dHN2Zy5jICAgICBcCiAgICAgICAgICAgICAgICAgJChTRk5UX0RJUikvdHRjcGFsLmMgICAgXAogICAgICAgICAgICAgICAgICQoU0ZOVF9ESVIpL3R0a2Vybi5jICAgIFwKICAgICAgICAgICAgICAgICAkKFNGTlRfRElSKS90dGxvYWQuYyAgICBcCmRpZmYgLS1naXQgYS9zcmMvc2ZudC9zZmRyaXZlci5jIGIvc3JjL3NmbnQvc2Zkcml2ZXIuYwppbmRleCBkMWQwMWM5Li43NjI4ODNkIDEwMDY0NAotLS0gYS9zcmMvc2ZudC9zZmRyaXZlci5jCisrKyBiL3NyYy9zZm50L3NmZHJpdmVyLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBIaWdoLWxldmVsIFNGTlQgZHJpdmVyIGludGVyZmFjZSAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMzYsNiArMzYsMTAgQEAKICNpbmNsdWRlICJ0dGNwYWwuaCIKICNlbmRpZgogCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9TVkcKKyNpbmNsdWRlICJ0dHN2Zy5oIgorI2VuZGlmCisKICNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVMKICNpbmNsdWRlICJ0dHBvc3QuaCIKICNlbmRpZgpAQCAtMzc0LDYxICszNzgsNjEgQEAKICAgICAgIHsKICAgICAgIGNhc2UgMTU6CiAgICAgICAgIGs0IF49IChGVF9VSW50MzIpdGFpbFsxNF0gPDwgMTY7Ci0gICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAgICAgICBGQUxMX1RIUk9VR0g7CiAgICAgICBjYXNlIDE0OgogICAgICAgICBrNCBePSAoRlRfVUludDMyKXRhaWxbMTNdIDw8IDg7Ci0gICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAgICAgICBGQUxMX1RIUk9VR0g7CiAgICAgICBjYXNlIDEzOgogICAgICAgICBrNCBePSAoRlRfVUludDMyKXRhaWxbMTJdOwogICAgICAgICBrNCAqPSBjNDsKICAgICAgICAgazQgID0gUk9UTDMyKCBrNCwgMTggKTsKICAgICAgICAgazQgKj0gYzE7CiAgICAgICAgIGg0IF49IGs0OwotICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICAgICAgRkFMTF9USFJPVUdIOwogCiAgICAgICBjYXNlIDEyOgogICAgICAgICBrMyBePSAoRlRfVUludDMyKXRhaWxbMTFdIDw8IDI0OwotICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICAgICAgRkFMTF9USFJPVUdIOwogICAgICAgY2FzZSAxMToKICAgICAgICAgazMgXj0gKEZUX1VJbnQzMil0YWlsWzEwXSA8PCAxNjsKLSAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCisgICAgICAgIEZBTExfVEhST1VHSDsKICAgICAgIGNhc2UgMTA6CiAgICAgICAgIGszIF49IChGVF9VSW50MzIpdGFpbFs5XSA8PCA4OwotICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICAgICAgRkFMTF9USFJPVUdIOwogICAgICAgY2FzZSA5OgogICAgICAgICBrMyBePSAoRlRfVUludDMyKXRhaWxbOF07CiAgICAgICAgIGszICo9IGMzOwogICAgICAgICBrMyAgPSBST1RMMzIoIGszLCAxNyApOwogICAgICAgICBrMyAqPSBjNDsKICAgICAgICAgaDMgXj0gazM7Ci0gICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAgICAgICBGQUxMX1RIUk9VR0g7CiAKICAgICAgIGNhc2UgODoKICAgICAgICAgazIgXj0gKEZUX1VJbnQzMil0YWlsWzddIDw8IDI0OwotICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICAgICAgRkFMTF9USFJPVUdIOwogICAgICAgY2FzZSA3OgogICAgICAgICBrMiBePSAoRlRfVUludDMyKXRhaWxbNl0gPDwgMTY7Ci0gICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAgICAgICBGQUxMX1RIUk9VR0g7CiAgICAgICBjYXNlIDY6CiAgICAgICAgIGsyIF49IChGVF9VSW50MzIpdGFpbFs1XSA8PCA4OwotICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICAgICAgRkFMTF9USFJPVUdIOwogICAgICAgY2FzZSA1OgogICAgICAgICBrMiBePSAoRlRfVUludDMyKXRhaWxbNF07CiAgICAgICAgIGsyICo9IGMyOwogICAgICAgICBrMiAgPSBST1RMMzIoIGsyLCAxNiApOwogICAgICAgICBrMiAqPSBjMzsKICAgICAgICAgaDIgXj0gazI7Ci0gICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAgICAgICBGQUxMX1RIUk9VR0g7CiAKICAgICAgIGNhc2UgNDoKICAgICAgICAgazEgXj0gKEZUX1VJbnQzMil0YWlsWzNdIDw8IDI0OwotICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICAgICAgRkFMTF9USFJPVUdIOwogICAgICAgY2FzZSAzOgogICAgICAgICBrMSBePSAoRlRfVUludDMyKXRhaWxbMl0gPDwgMTY7Ci0gICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAgICAgICBGQUxMX1RIUk9VR0g7CiAgICAgICBjYXNlIDI6CiAgICAgICAgIGsxIF49IChGVF9VSW50MzIpdGFpbFsxXSA8PCA4OwotICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICAgICAgRkFMTF9USFJPVUdIOwogICAgICAgY2FzZSAxOgogICAgICAgICBrMSBePSAoRlRfVUludDMyKXRhaWxbMF07CiAgICAgICAgIGsxICo9IGMxOwpAQCAtNDkxLDE1ICs0OTUsMTMgQEAKICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZV9mdW5jICBjaGFyX3R5cGUsCiAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgICAgcmVwb3J0X2ludmFsaWRfY2hhcmFjdGVycyApCiAgIHsKLSAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgRlRfRXJyb3IgIGVycm9yOwogCiAgICAgY2hhciogICAgICAgcmVzdWx0ID0gTlVMTDsKICAgICBGVF9TdHJpbmcqICByOwogICAgIEZUX0NoYXIqICAgIHA7CiAgICAgRlRfVUludCAgICAgbGVuOwogCi0gICAgRlRfVU5VU0VEKCBlcnJvciApOwotCiAKICAgICBpZiAoIEZUX1FBTExPQyggcmVzdWx0LCBlbnRyeS0+c3RyaW5nTGVuZ3RoIC8gMiArIDEgKSApCiAgICAgICByZXR1cm4gTlVMTDsKQEAgLTU1MCwxNSArNTUyLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZV9mdW5jICBjaGFyX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgICByZXBvcnRfaW52YWxpZF9jaGFyYWN0ZXJzICkKICAgewotICAgIEZUX0Vycm9yICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICBGVF9FcnJvciAgZXJyb3I7CiAKICAgICBjaGFyKiAgICAgICByZXN1bHQgPSBOVUxMOwogICAgIEZUX1N0cmluZyogIHI7CiAgICAgRlRfQ2hhciogICAgcDsKICAgICBGVF9VSW50ICAgICBsZW47CiAKLSAgICBGVF9VTlVTRUQoIGVycm9yICk7Ci0KIAogICAgIGlmICggRlRfUUFMTE9DKCByZXN1bHQsIGVudHJ5LT5zdHJpbmdMZW5ndGggKyAxICkgKQogICAgICAgcmV0dXJuIE5VTEw7CkBAIC02NTcsNyArNjU3LDcgQEAKIAogCiAgIC8qCi0gICAqIEZpbmQgdGhlIHNob3J0ZXN0IGRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYSAxNi4xNiBmaXhlZCBwb2ludAorICAgKiBGaW5kIHRoZSBzaG9ydGVzdCBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIGEgMTYuMTYgZml4ZWQtcG9pbnQKICAgICogbnVtYmVyLiAgVGhlIGZ1bmN0aW9uIGZpbGxzIGBidWYnIHdpdGggdGhlIHJlc3VsdCwgcmV0dXJuaW5nIGEgcG9pbnRlcgogICAgKiB0byB0aGUgcG9zaXRpb24gYWZ0ZXIgdGhlIHJlcHJlc2VudGF0aW9uJ3MgbGFzdCBieXRlLgogICAgKi8KQEAgLTczMyw3ICs3MzMsNyBAQAogICAgICAgICBhbiBlcXVpdmFsZW50IHJlcHJlc2VudGF0aW9uIG9mIGBmaXhlZCcuCiAKICAgICAgICAgVGhlIGFib3ZlIEZPUiBsb29wIGFsd2F5cyBmaW5kcyB0aGUgbGFyZ2VyIG9mIHRoZSB0d28gdmFsdWVzOyBJCi0gICAgICAgIHZlcmlmaWVkIHRoaXMgYnkgaXRlcmF0aW5nIG92ZXIgYWxsIHBvc3NpYmxlIGZpeGVkIHBvaW50IG51bWJlcnMuCisgICAgICAgIHZlcmlmaWVkIHRoaXMgYnkgaXRlcmF0aW5nIG92ZXIgYWxsIHBvc3NpYmxlIGZpeGVkLXBvaW50IG51bWJlcnMuCiAKICAgICAgICAgSWYgdGhlIHJlbWFpbmRlciBpcyAxNzIzMioxMCwgYm90aCB2YWx1ZXMgYXJlIGVxdWFsbHkgZ29vZCwgYW5kIHdlCiAgICAgICAgIHRha2UgdGhlIG5leHQgZXZlbiBudW1iZXIgKGZvbGxvd2luZyBJRUVFIDc1NCdzIGByb3VuZCB0byBuZWFyZXN0LApAQCAtNzQxLDcgKzc0MSw3IEBACiAKICAgICAgICAgSWYgdGhlIHJlbWFpbmRlciBpcyBzbWFsbGVyIHRoYW4gMTcyMzIqMTAsIHRoZSBsb3dlciBvZiB0aGUgdHdvCiAgICAgICAgIG51bWJlcnMgaXMgbmVhcmVyIHRvIHRoZSBleGFjdCByZXN1bHQgKHZhbHVlcyAxNzIzMiBhbmQgMzQ0ODAgd2VyZQotICAgICAgICBhbHNvIGZvdW5kIGJ5IHRlc3RpbmcgYWxsIHBvc3NpYmxlIGZpeGVkIHBvaW50IHZhbHVlcykuCisgICAgICAgIGFsc28gZm91bmQgYnkgdGVzdGluZyBhbGwgcG9zc2libGUgZml4ZWQtcG9pbnQgdmFsdWVzKS4KIAogICAgICAgICBXZSB1c2UgdGhpcyB0byBmaW5kIGEgc2hvcnRlciBkZWNpbWFsIHJlcHJlc2VudGF0aW9uLiAgSWYgbm90IGVuZGluZwogICAgICAgICB3aXRoIGRpZ2l0IHplcm8sIHdlIHRha2UgdGhlIHJlcHJlc2VudGF0aW9uIHdpdGggbGVzcyBlcnJvci4KQEAgLTEyMTQsNiArMTIxNCwxMiBAQAogI2RlZmluZSBQVVRfQ09MT1JfTEFZRVJTKCBhICkgIE5VTEwKICNlbmRpZgogCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9TVkcKKyNkZWZpbmUgUFVUX1NWR19TVVBQT1JUKCBhICkgIGEKKyNlbHNlCisjZGVmaW5lIFBVVF9TVkdfU1VQUE9SVCggYSApICBOVUxMCisjZW5kaWYKKwogI2RlZmluZSBQVVRfQ09MT1JfTEFZRVJTX1YxKCBhICkgIFBVVF9DT0xPUl9MQVlFUlMoIGEgKQogCiAjaWZkZWYgVFRfQ09ORklHX09QVElPTl9QT1NUU0NSSVBUX05BTUVTCkBAIC0xMzA4LDcgKzEzMTQsMTQgQEAKICAgICB0dF9mYWNlX2dldF9tZXRyaWNzLCAgICAvKiBUVF9HZXRfTWV0cmljc19GdW5jICAgICBnZXRfbWV0cmljcyAgICAgKi8KIAogICAgIHR0X2ZhY2VfZ2V0X25hbWUsICAgICAgIC8qIFRUX0dldF9OYW1lX0Z1bmMgICAgICAgIGdldF9uYW1lICAgICAgICAqLwotICAgIHNmbnRfZ2V0X25hbWVfaWQgICAgICAgIC8qIFRUX0dldF9OYW1lX0lEX0Z1bmMgICAgIGdldF9uYW1lX2lkICAgICAqLworICAgIHNmbnRfZ2V0X25hbWVfaWQsICAgICAgIC8qIFRUX0dldF9OYW1lX0lEX0Z1bmMgICAgIGdldF9uYW1lX2lkICAgICAqLworCisgICAgUFVUX1NWR19TVVBQT1JUKCB0dF9mYWNlX2xvYWRfc3ZnICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFRfTG9hZF9UYWJsZV9GdW5jICAgICAgbG9hZF9zdmcgICAgICAgICovCisgICAgUFVUX1NWR19TVVBQT1JUKCB0dF9mYWNlX2ZyZWVfc3ZnICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFRfRnJlZV9UYWJsZV9GdW5jICAgICAgZnJlZV9zdmcgICAgICAgICovCisgICAgUFVUX1NWR19TVVBQT1JUKCB0dF9mYWNlX2xvYWRfc3ZnX2RvYyApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFRfTG9hZF9TdmdfRG9jX0Z1bmMgICAgbG9hZF9zdmdfZG9jICAgICovCiAgICkKIAogCmRpZmYgLS1naXQgYS9zcmMvc2ZudC9zZmRyaXZlci5oIGIvc3JjL3NmbnQvc2Zkcml2ZXIuaAppbmRleCA4ZDViNWNlLi4yNDQ1OTU4IDEwMDY0NAotLS0gYS9zcmMvc2ZudC9zZmRyaXZlci5oCisrKyBiL3NyYy9zZm50L3NmZHJpdmVyLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBIaWdoLWxldmVsIFNGTlQgZHJpdmVyIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3NmbnQvc2ZlcnJvcnMuaCBiL3NyYy9zZm50L3NmZXJyb3JzLmgKaW5kZXggNzhlNmYwMy4uZTdhOGViMCAxMDA2NDQKLS0tIGEvc3JjL3NmbnQvc2ZlcnJvcnMuaAorKysgYi9zcmMvc2ZudC9zZmVycm9ycy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgU0ZOVCBlcnJvciBjb2RlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvc2ZudC9zZm50LmMgYi9zcmMvc2ZudC9zZm50LmMKaW5kZXggOTc2OTJjZC4uOGU0ZjA4YSAxMDA2NDQKLS0tIGEvc3JjL3NmbnQvc2ZudC5jCisrKyBiL3NyYy9zZm50L3NmbnQuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFNpbmdsZSBvYmplY3QgbGlicmFyeSBjb21wb25lbnQuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgInR0Y21hcC5jIgogI2luY2x1ZGUgInR0Y29sci5jIgogI2luY2x1ZGUgInR0Y3BhbC5jIgorI2luY2x1ZGUgInR0c3ZnLmMiCiAKICNpbmNsdWRlICJ0dGtlcm4uYyIKICNpbmNsdWRlICJ0dGxvYWQuYyIKZGlmZiAtLWdpdCBhL3NyYy9zZm50L3Nmb2Jqcy5jIGIvc3JjL3NmbnQvc2ZvYmpzLmMKaW5kZXggNzg5MTAyNC4uMzEyZDQ2YiAxMDA2NDQKLS0tIGEvc3JjL3NmbnQvc2ZvYmpzLmMKKysrIGIvc3JjL3NmbnQvc2ZvYmpzLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBTRk5UIG9iamVjdCBtYW5hZ2VtZW50IChiYXNlKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC01MzQsMTcgKzUzNCwyMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgKTsKICAgICB9CiAKLSAgICBpZiAoICFmYWNlLT52YXIgKQorICAgIGlmICggIWZhY2UtPnR0X3ZhciApCiAgICAgewogICAgICAgLyogd2Ugd2FudCB0aGUgbWV0cmljcyB2YXJpYXRpb25zIGludGVyZmFjZSAqLwogICAgICAgLyogZnJvbSB0aGUgYHRydWV0eXBlJyBtb2R1bGUgb25seSAgICAgICAgICAqLwogICAgICAgRlRfTW9kdWxlICB0dF9tb2R1bGUgPSBGVF9HZXRfTW9kdWxlKCBsaWJyYXJ5LCAidHJ1ZXR5cGUiICk7CiAKIAotICAgICAgZmFjZS0+dmFyID0gZnRfbW9kdWxlX2dldF9zZXJ2aWNlKCB0dF9tb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NFUlZJQ0VfSURfTUVUUklDU19WQVJJQVRJT05TLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwICk7CisgICAgICBmYWNlLT50dF92YXIgPSBmdF9tb2R1bGVfZ2V0X3NlcnZpY2UoIHR0X21vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU0VSVklDRV9JRF9NRVRSSUNTX1ZBUklBVElPTlMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgKTsKICAgICB9CisKKyAgICBpZiAoICFmYWNlLT5mYWNlX3ZhciApCisgICAgICBmYWNlLT5mYWNlX3ZhciA9IGZ0X21vZHVsZV9nZXRfc2VydmljZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAmZmFjZS0+cm9vdC5kcml2ZXItPnJvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU0VSVklDRV9JRF9NRVRSSUNTX1ZBUklBVElPTlMsCisgICAgICAgICAgICAgICAgICAgICAgICAgMCApOwogI2VuZGlmCiAKICAgICBGVF9UUkFDRTIoKCAiU0ZOVCBkcml2ZXJcbiIgKSk7CkBAIC01NjYsNyArNTcyLDcgQEAKICAgICBmYWNlX2luZGV4ID0gRlRfQUJTKCBmYWNlX2luc3RhbmNlX2luZGV4ICkgJiAweEZGRkY7CiAKICAgICAvKiB2YWx1ZSAtKE4rMSkgcmVxdWVzdHMgaW5mb3JtYXRpb24gb24gaW5kZXggTiAqLwotICAgIGlmICggZmFjZV9pbnN0YW5jZV9pbmRleCA8IDAgKQorICAgIGlmICggZmFjZV9pbnN0YW5jZV9pbmRleCA8IDAgJiYgZmFjZV9pbmRleCA+IDAgKQogICAgICAgZmFjZV9pbmRleC0tOwogCiAgICAgaWYgKCBmYWNlX2luZGV4ID49IGZhY2UtPnR0Y19oZWFkZXIuY291bnQgKQpAQCAtNzg0LDE3ICs3OTAsMjMgQEAKICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIG51bV9wYXJhbXMsCiAgICAgICAgICAgICAgICAgICBGVF9QYXJhbWV0ZXIqICBwYXJhbXMgKQogICB7Ci0gICAgRlRfRXJyb3IgICAgICBlcnJvcjsKKyAgICBGVF9FcnJvciAgZXJyb3I7CiAjaWZkZWYgVFRfQ09ORklHX09QVElPTl9QT1NUU0NSSVBUX05BTUVTCi0gICAgRlRfRXJyb3IgICAgICBwc25hbWVzX2Vycm9yOworICAgIEZUX0Vycm9yICBwc25hbWVzX2Vycm9yOwogI2VuZGlmCi0gICAgRlRfQm9vbCAgICAgICBoYXNfb3V0bGluZTsKLSAgICBGVF9Cb29sICAgICAgIGlzX2FwcGxlX3NiaXQ7Ci0gICAgRlRfQm9vbCAgICAgICBpc19hcHBsZV9zYml4OwotICAgIEZUX0Jvb2wgICAgICAgaGFzX0NCTEM7Ci0gICAgRlRfQm9vbCAgICAgICBoYXNfQ0JEVDsKLSAgICBGVF9Cb29sICAgICAgIGlnbm9yZV90eXBvZ3JhcGhpY19mYW1pbHkgICAgPSBGQUxTRTsKLSAgICBGVF9Cb29sICAgICAgIGlnbm9yZV90eXBvZ3JhcGhpY19zdWJmYW1pbHkgPSBGQUxTRTsKKworICAgIEZUX0Jvb2wgIGhhc19vdXRsaW5lOworICAgIEZUX0Jvb2wgIGlzX2FwcGxlX3NiaXQ7CisKKyAgICBGVF9Cb29sICBoYXNfQ0JMQzsKKyAgICBGVF9Cb29sICBoYXNfQ0JEVDsKKyAgICBGVF9Cb29sICBoYXNfRUJMQzsKKyAgICBGVF9Cb29sICBoYXNfYmxvYzsKKyAgICBGVF9Cb29sICBoYXNfc2JpeDsKKworICAgIEZUX0Jvb2wgIGlnbm9yZV90eXBvZ3JhcGhpY19mYW1pbHkgICAgPSBGQUxTRTsKKyAgICBGVF9Cb29sICBpZ25vcmVfdHlwb2dyYXBoaWNfc3ViZmFtaWx5ID0gRkFMU0U7CisgICAgRlRfQm9vbCAgaWdub3JlX3NiaXggICAgICAgICAgICAgICAgICA9IEZBTFNFOwogCiAgICAgU0ZOVF9TZXJ2aWNlICBzZm50ID0gKFNGTlRfU2VydmljZSlmYWNlLT5zZm50OwogCkBAIC04MTMsNiArODI1LDggQEAKICAgICAgICAgICBpZ25vcmVfdHlwb2dyYXBoaWNfZmFtaWx5ID0gVFJVRTsKICAgICAgICAgZWxzZSBpZiAoIHBhcmFtc1tpXS50YWcgPT0gRlRfUEFSQU1fVEFHX0lHTk9SRV9UWVBPR1JBUEhJQ19TVUJGQU1JTFkgKQogICAgICAgICAgIGlnbm9yZV90eXBvZ3JhcGhpY19zdWJmYW1pbHkgPSBUUlVFOworICAgICAgICBlbHNlIGlmICggcGFyYW1zW2ldLnRhZyA9PSBGVF9QQVJBTV9UQUdfSUdOT1JFX1NCSVggKQorICAgICAgICAgIGlnbm9yZV9zYml4ID0gVFJVRTsKICAgICAgIH0KICAgICB9CiAKQEAgLTg0OCwxNCArODYyLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dF9mYWNlX2xvb2t1cF90YWJsZSggZmFjZSwgVFRBR19DRkYyICkgKTsKICNlbmRpZgogCi0gICAgaXNfYXBwbGVfc2JpdCA9IDA7Ci0gICAgaXNfYXBwbGVfc2JpeCA9ICFmYWNlLT5nb3RvX3RhYmxlKCBmYWNlLCBUVEFHX3NiaXgsIHN0cmVhbSwgMCApOworICAgIC8qIGNoZWNrIHdoaWNoIHNiaXQgZm9ybWF0cyBhcmUgcHJlc2VudCAqLworICAgIGhhc19DQkxDID0gIWZhY2UtPmdvdG9fdGFibGUoIGZhY2UsIFRUQUdfQ0JMQywgc3RyZWFtLCAwICk7CisgICAgaGFzX0NCRFQgPSAhZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19DQkRULCBzdHJlYW0sIDAgKTsKKyAgICBoYXNfRUJMQyA9ICFmYWNlLT5nb3RvX3RhYmxlKCBmYWNlLCBUVEFHX0VCTEMsIHN0cmVhbSwgMCApOworICAgIGhhc19ibG9jID0gIWZhY2UtPmdvdG9fdGFibGUoIGZhY2UsIFRUQUdfYmxvYywgc3RyZWFtLCAwICk7CisgICAgaGFzX3NiaXggPSAhZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19zYml4LCBzdHJlYW0sIDAgKTsKIAotICAgIC8qIEFwcGxlICdzYml4JyBjb2xvciBiaXRtYXBzIGFyZSByZW5kZXJlZCBzY2FsZWQgYW5kIHRoZW4gdGhlICdnbHlmJwotICAgICAqIG91dGxpbmUgcmVuZGVyZWQgb24gdG9wLiAgV2UgZG9uJ3Qgc3VwcG9ydCB0aGF0IHlldCwgc28ganVzdCBpZ25vcmUKLSAgICAgKiB0aGUgJ2dseWYnIG91dGxpbmUgYW5kIGFkdmVydGlzZSBpdCBhcyBhIGJpdG1hcC1vbmx5IGZvbnQuICovCi0gICAgaWYgKCBpc19hcHBsZV9zYml4ICkKLSAgICAgIGhhc19vdXRsaW5lID0gRkFMU0U7CisgICAgaXNfYXBwbGVfc2JpdCA9IEZBTFNFOworCisgICAgaWYgKCBpZ25vcmVfc2JpeCApCisgICAgICBoYXNfc2JpeCA9IEZBTFNFOwogCiAgICAgLyogaWYgdGhpcyBmb250IGRvZXNuJ3QgY29udGFpbiBvdXRsaW5lcywgd2UgdHJ5IHRvIGxvYWQgKi8KICAgICAvKiBhIGBiaGVkJyB0YWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwpAQCAtODY3LDE2ICs4ODQsMTMgQEAKIAogICAgIC8qIGxvYWQgdGhlIGZvbnQgaGVhZGVyIChgaGVhZCcgdGFibGUpIGlmIHRoaXMgaXNuJ3QgYW4gQXBwbGUgKi8KICAgICAvKiBzYml0IGZvbnQgZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgaWYgKCAhaXNfYXBwbGVfc2JpdCB8fCBpc19hcHBsZV9zYml4ICkKKyAgICBpZiAoICFpc19hcHBsZV9zYml0IHx8IGhhc19zYml4ICkKICAgICB7CiAgICAgICBMT0FEXyggaGVhZCApOwogICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgIGdvdG8gRXhpdDsKICAgICB9CiAKLSAgICBoYXNfQ0JMQyA9ICFmYWNlLT5nb3RvX3RhYmxlKCBmYWNlLCBUVEFHX0NCTEMsIHN0cmVhbSwgMCApOwotICAgIGhhc19DQkRUID0gIWZhY2UtPmdvdG9fdGFibGUoIGZhY2UsIFRUQUdfQ0JEVCwgc3RyZWFtLCAwICk7Ci0KICAgICAvKiBJZ25vcmUgb3V0bGluZXMgZm9yIENCTEMvQ0JEVCBmb250cy4gKi8KICAgICBpZiAoIGhhc19DQkxDIHx8IGhhc19DQkRUICkKICAgICAgIGhhc19vdXRsaW5lID0gRkFMU0U7CkBAIC05ODYsNyArMTAwMCwxMSBAQAogICAgIC8qIHRoZSBvcHRpb25hbCB0YWJsZXMgKi8KIAogICAgIC8qIGVtYmVkZGVkIGJpdG1hcCBzdXBwb3J0ICovCi0gICAgaWYgKCBzZm50LT5sb2FkX2VibGMgKQorICAgIC8qIFRPRE86IFJlcGxhY2UgdGhpcyBjbHVtc3kgY2hlY2sgZm9yIGFsbCBwb3NzaWJsZSBzYml0IHRhYmxlcyAgICAgKi8KKyAgICAvKiAgICAgICB3aXRoIHNvbWV0aGluZyBiZXR0ZXIgKGZvciBleGFtcGxlLCBieSBwYXNzaW5nIGEgcGFyYW1ldGVyICovCisgICAgLyogICAgICAgdG8gc3VwcHJlc3MgJ3NiaXgnIGxvYWRpbmcpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGlmICggc2ZudC0+bG9hZF9lYmxjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAoIGhhc19DQkxDIHx8IGhhc19FQkxDIHx8IGhhc19ibG9jIHx8IGhhc19zYml4ICkgKQogICAgICAgTE9BRF8oIGVibGMgKTsKIAogICAgIC8qIGNvbG9yZWQgZ2x5cGggc3VwcG9ydCAqLwpAQCAtOTk2LDYgKzEwMTQsMTAgQEAKICAgICAgIExPQURfKCBjb2xyICk7CiAgICAgfQogCisgICAgLyogT3BlblR5cGUtU1ZHIGdseXBoIHN1cHBvcnQgKi8KKyAgICBpZiAoIHNmbnQtPmxvYWRfc3ZnICkKKyAgICAgIExPQURfKCBzdmcgKTsKKwogICAgIC8qIGNvbnNpZGVyIHRoZSBwY2x0LCBrZXJuaW5nLCBhbmQgZ2FzcCB0YWJsZXMgYXMgb3B0aW9uYWwgKi8KICAgICBMT0FEXyggcGNsdCApOwogICAgIExPQURfKCBnYXNwICk7CkBAIC0xMDUwLDExICsxMDcyLDE5IEBACiAgICAgICAgKi8KICAgICAgIGlmICggZmFjZS0+c2JpdF90YWJsZV90eXBlID09IFRUX1NCSVRfVEFCTEVfVFlQRV9DQkxDIHx8CiAgICAgICAgICAgIGZhY2UtPnNiaXRfdGFibGVfdHlwZSA9PSBUVF9TQklUX1RBQkxFX1RZUEVfU0JJWCB8fAotICAgICAgICAgICBmYWNlLT5jb2xyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICBmYWNlLT5jb2xyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgZmFjZS0+c3ZnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgZmxhZ3MgfD0gRlRfRkFDRV9GTEFHX0NPTE9SOyAgICAgIC8qIGNvbG9yIGdseXBocyAqLwogCiAgICAgICBpZiAoIGhhc19vdXRsaW5lID09IFRSVUUgKQotICAgICAgICBmbGFncyB8PSBGVF9GQUNFX0ZMQUdfU0NBTEFCTEU7ICAgLyogc2NhbGFibGUgb3V0bGluZXMgKi8KKyAgICAgIHsKKyAgICAgICAgLyogYnkgZGVmYXVsdCAoYW5kIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSB3ZSBoYW5kbGUgKi8KKyAgICAgICAgLyogZm9udHMgd2l0aCBhbiAnc2JpeCcgdGFibGUgYXMgYml0bWFwLW9ubHkgICAgICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBoYXNfc2JpeCApCisgICAgICAgICAgZmxhZ3MgfD0gRlRfRkFDRV9GTEFHX1NCSVg7ICAgICAvKiB3aXRoICdzYml4JyBiaXRtYXBzICovCisgICAgICAgIGVsc2UKKyAgICAgICAgICBmbGFncyB8PSBGVF9GQUNFX0ZMQUdfU0NBTEFCTEU7IC8qIHNjYWxhYmxlIG91dGxpbmVzICovCisgICAgICB9CiAKICAgICAgIC8qIFRoZSBzZm50IGRyaXZlciBvbmx5IHN1cHBvcnRzIGJpdG1hcCBmb250cyBuYXRpdmVseSwgdGh1cyB3ZSAqLwogICAgICAgLyogZG9uJ3Qgc2V0IEZUX0ZBQ0VfRkxBR19ISU5URVIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCkBAIC0xMDgzLDEzICsxMTEzLDcgQEAKICAgICAgIC8qIERvbid0IGJvdGhlciB0byBsb2FkIHRoZSB0YWJsZXMgdW5sZXNzIHNvbWVib2R5IGFza3MgZm9yIHRoZW0uICovCiAgICAgICAvKiBObyBuZWVkIHRvIGRvIHdvcmsgd2hpY2ggd2lsbCAocHJvYmFibHkpIG5vdCBiZSB1c2VkLiAgICAgICAgICAqLwogICAgICAgaWYgKCBmYWNlLT52YXJpYXRpb25fc3VwcG9ydCAmIFRUX0ZBQ0VfRkxBR19WQVJfRlZBUiApCi0gICAgICB7Ci0gICAgICAgIGlmICggdHRfZmFjZV9sb29rdXBfdGFibGUoIGZhY2UsIFRUQUdfZ2x5ZiApICE9IDAgJiYKLSAgICAgICAgICAgICB0dF9mYWNlX2xvb2t1cF90YWJsZSggZmFjZSwgVFRBR19ndmFyICkgIT0gMCApCi0gICAgICAgICAgZmxhZ3MgfD0gRlRfRkFDRV9GTEFHX01VTFRJUExFX01BU1RFUlM7Ci0gICAgICAgIGlmICggdHRfZmFjZV9sb29rdXBfdGFibGUoIGZhY2UsIFRUQUdfQ0ZGMiApICE9IDAgKQotICAgICAgICAgIGZsYWdzIHw9IEZUX0ZBQ0VfRkxBR19NVUxUSVBMRV9NQVNURVJTOwotICAgICAgfQorICAgICAgICBmbGFncyB8PSBGVF9GQUNFX0ZMQUdfTVVMVElQTEVfTUFTVEVSUzsKICNlbmRpZgogCiAgICAgICByb290LT5mYWNlX2ZsYWdzID0gZmxhZ3M7CkBAIC0xMjc3LDcgKzEzMDEsOCBAQAogICAgICAgICoKICAgICAgICAqIFNldCB1cCBtZXRyaWNzLgogICAgICAgICovCi0gICAgICBpZiAoIEZUX0lTX1NDQUxBQkxFKCByb290ICkgKQorICAgICAgaWYgKCBGVF9JU19TQ0FMQUJMRSggcm9vdCApIHx8CisgICAgICAgICAgIEZUX0hBU19TQklYKCByb290ICkgICAgKQogICAgICAgewogICAgICAgICAvKiBYWFggV2hhdCBhYm91dCBpZiBvdXRsaW5lIGhlYWRlciBpcyBtaXNzaW5nICovCiAgICAgICAgIC8qICAgICAoZS5nLiBzZm50IHdyYXBwZWQgYml0bWFwKT8gICAgICAgICAgICAgKi8KQEAgLTE0MTYsNiArMTQ0MSwxMiBAQAogICAgICAgICBzZm50LT5mcmVlX2NwYWwoIGZhY2UgKTsKICAgICAgICAgc2ZudC0+ZnJlZV9jb2xyKCBmYWNlICk7CiAgICAgICB9CisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1NWRworICAgICAgLyogZnJlZSBTVkcgZGF0YSAqLworICAgICAgaWYgKCBzZm50LT5mcmVlX3N2ZyApCisgICAgICAgIHNmbnQtPmZyZWVfc3ZnKCBmYWNlICk7CisjZW5kaWYKICAgICB9CiAKICNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0JERgpkaWZmIC0tZ2l0IGEvc3JjL3NmbnQvc2ZvYmpzLmggYi9zcmMvc2ZudC9zZm9ianMuaAppbmRleCAxNzJjNDdlLi45MDZhZWJiIDEwMDY0NAotLS0gYS9zcmMvc2ZudC9zZm9ianMuaAorKysgYi9zcmMvc2ZudC9zZm9ianMuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFNGTlQgb2JqZWN0IG1hbmFnZW1lbnQgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9zZm50L3Nmd29mZi5jIGIvc3JjL3NmbnQvc2Z3b2ZmLmMKaW5kZXggNDIyYzgxNi4uOTU1OWJmMyAxMDA2NDQKLS0tIGEvc3JjL3NmbnQvc2Z3b2ZmLmMKKysrIGIvc3JjL3NmbnQvc2Z3b2ZmLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBXT0ZGIGZvcm1hdCBtYW5hZ2VtZW50IChiYXNlKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC02NCw3ICs2NCw2IEBACiAgICAgRlRfRlJFRSggc3RyZWFtLT5iYXNlICk7CiAKICAgICBzdHJlYW0tPnNpemUgID0gMDsKLSAgICBzdHJlYW0tPmJhc2UgID0gTlVMTDsKICAgICBzdHJlYW0tPmNsb3NlID0gTlVMTDsKICAgfQogCkBAIC0xNjMsOCArMTYyLDcgQEAKICAgICB9CiAKICAgICAvKiBEb24ndCB0cnVzdCBgdG90YWxTZm50U2l6ZScgYmVmb3JlIHRob3JvdWdoIGNoZWNrcy4gKi8KLSAgICBpZiAoIEZUX1FBTExPQyggc2ZudCwgMTIgKyB3b2ZmLm51bV90YWJsZXMgKiAxNlVMICkgfHwKLSAgICAgICAgIEZUX05FVyggc2ZudF9zdHJlYW0gKSAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgIGlmICggRlRfUUFMTE9DKCBzZm50LCAxMiApIHx8IEZUX05FVyggc2ZudF9zdHJlYW0gKSApCiAgICAgICBnb3RvIEV4aXQ7CiAKICAgICBzZm50X2hlYWRlciA9IHNmbnQ7CkBAIC0xOTcsOCArMTk1LDggQEAKICAgICAvKiB0YWcgdmFsdWUsIHRoZSB0YWJsZXMgdGhlbXNlbHZlcyBhcmUgbm90LiAgV2UgdGh1cyBoYXZlIHRvICovCiAgICAgLyogc29ydCB0aGVtIGJ5IG9mZnNldCBhbmQgY2hlY2sgdGhhdCB0aGV5IGRvbid0IG92ZXJsYXAuICAgICAqLwogCi0gICAgaWYgKCBGVF9ORVdfQVJSQVkoIHRhYmxlcywgd29mZi5udW1fdGFibGVzICkgIHx8Ci0gICAgICAgICBGVF9ORVdfQVJSQVkoIGluZGljZXMsIHdvZmYubnVtX3RhYmxlcyApICkKKyAgICBpZiAoIEZUX1FORVdfQVJSQVkoIHRhYmxlcywgd29mZi5udW1fdGFibGVzICkgIHx8CisgICAgICAgICBGVF9RTkVXX0FSUkFZKCBpbmRpY2VzLCB3b2ZmLm51bV90YWJsZXMgKSApCiAgICAgICBnb3RvIEV4aXQ7CiAKICAgICBGVF9UUkFDRTIoKCAiXG4iICkpOwpAQCAtMzI5LDkgKzMyNyw3IEBACiAgICAgfQogCiAgICAgLyogTm93IHVzZSBgdG90YWxTZm50U2l6ZScuICovCi0gICAgaWYgKCBGVF9SRUFMTE9DKCBzZm50LAotICAgICAgICAgICAgICAgICAgICAgMTIgKyB3b2ZmLm51bV90YWJsZXMgKiAxNlVMLAotICAgICAgICAgICAgICAgICAgICAgd29mZi50b3RhbFNmbnRTaXplICkgKQorICAgIGlmICggRlRfUVJFQUxMT0MoIHNmbnQsIDEyLCB3b2ZmLnRvdGFsU2ZudFNpemUgKSApCiAgICAgICBnb3RvIEV4aXQ7CiAKICAgICBzZm50X2hlYWRlciA9IHNmbnQgKyAxMjsKZGlmZiAtLWdpdCBhL3NyYy9zZm50L3Nmd29mZi5oIGIvc3JjL3NmbnQvc2Z3b2ZmLmgKaW5kZXggM2ZiZGFjMC4uZDQzODQyMiAxMDA2NDQKLS0tIGEvc3JjL3NmbnQvc2Z3b2ZmLmgKKysrIGIvc3JjL3NmbnQvc2Z3b2ZmLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBXT0ZGRiBmb3JtYXQgbWFuYWdlbWVudCAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3NmbnQvc2Z3b2ZmMi5jIGIvc3JjL3NmbnQvc2Z3b2ZmMi5jCmluZGV4IDVlZThkZWEuLjdhMDE5NzcgMTAwNjQ0Ci0tLSBhL3NyYy9zZm50L3Nmd29mZjIuYworKysgYi9zcmMvc2ZudC9zZndvZmYyLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBXT0ZGMiBmb3JtYXQgbWFuYWdlbWVudCAoYmFzZSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIzIGJ5CiAgKiBOaWtoaWwgUmFtYWtyaXNobmFuLCBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtODQsNiArODQsOCBAQAogI2RlZmluZSBCQk9YX1NUUkVBTSAgICAgICAgIDUKICNkZWZpbmUgSU5TVFJVQ1RJT05fU1RSRUFNICA2CiAKKyNkZWZpbmUgSEFWRV9PVkVSTEFQX1NJTVBMRV9CSVRNQVAgIDB4MQorCiAKICAgc3RhdGljIHZvaWQKICAgc3RyZWFtX2Nsb3NlKCBGVF9TdHJlYW0gIHN0cmVhbSApCkBAIC05NCw3ICs5Niw2IEBACiAgICAgRlRfRlJFRSggc3RyZWFtLT5iYXNlICk7CiAKICAgICBzdHJlYW0tPnNpemUgID0gMDsKLSAgICBzdHJlYW0tPmJhc2UgID0gTlVMTDsKICAgICBzdHJlYW0tPmNsb3NlID0gTlVMTDsKICAgfQogCkBAIC0yMjgsOSArMjI5LDkgQEAKICAgICB7CiAgICAgICBGVF9UUkFDRTYoKCAiUmVhbGxvY2F0aW5nICVsdSB0byAlbHUuXG4iLAogICAgICAgICAgICAgICAgICAgKmRzdF9zaXplLCAoKm9mZnNldCArIHNpemUpICkpOwotICAgICAgaWYgKCBGVF9SRUFMTE9DKCBkc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIChGVF9VTG9uZykoICpkc3Rfc2l6ZSApLAotICAgICAgICAgICAgICAgICAgICAgICAoRlRfVUxvbmcpKCAqb2Zmc2V0ICsgc2l6ZSApICkgKQorICAgICAgaWYgKCBGVF9RUkVBTExPQyggZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgKEZUX1VMb25nKSggKmRzdF9zaXplICksCisgICAgICAgICAgICAgICAgICAgICAgICAoRlRfVUxvbmcpKCAqb2Zmc2V0ICsgc2l6ZSApICkgKQogICAgICAgICBnb3RvIEV4aXQ7CiAKICAgICAgICpkc3Rfc2l6ZSA9ICpvZmZzZXQgKyBzaXplOwpAQCAtNTIzLDYgKzUyNCw3IEBACiAgICAgICAgICAgICAgICAgY29uc3QgV09GRjJfUG9pbnQgIHBvaW50cywKICAgICAgICAgICAgICAgICBGVF9VU2hvcnQgICAgICAgICAgbl9jb250b3VycywKICAgICAgICAgICAgICAgICBGVF9VU2hvcnQgICAgICAgICAgaW5zdHJ1Y3Rpb25fbGVuLAorICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgICAgICBoYXZlX292ZXJsYXAsCiAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgICAgICAgIGRzdCwKICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgICAgICAgZHN0X3NpemUsCiAgICAgICAgICAgICAgICAgRlRfVUxvbmcqICAgICAgICAgIGdseXBoX3NpemUgKQpAQCAtNTUwLDYgKzU1Miw5IEBACiAgICAgICBGVF9JbnQgICBkeSAgID0gcG9pbnQueSAtIGxhc3RfeTsKIAogCisgICAgICBpZiAoIGkgPT0gMCAmJiBoYXZlX292ZXJsYXAgKQorICAgICAgICBmbGFnIHw9IEdMWUZfT1ZFUkxBUF9TSU1QTEU7CisKICAgICAgIGlmICggZHggPT0gMCApCiAgICAgICAgIGZsYWcgfD0gR0xZRl9USElTX1hfSVNfU0FNRTsKICAgICAgIGVsc2UgaWYgKCBkeCA+IC0yNTYgJiYgZHggPCAyNTYgKQpAQCAtNzc5LDcgKzc4NCw3IEBACiAgICAgICBnb3RvIEZhaWw7CiAKICAgICBsb2NhX2J1Zl9zaXplID0gbG9jYV92YWx1ZXNfc2l6ZSAqIG9mZnNldF9zaXplOwotICAgIGlmICggRlRfUU5FV19BUlJBWSggbG9jYV9idWYsIGxvY2FfYnVmX3NpemUgKSApCisgICAgaWYgKCBGVF9RQUxMT0MoIGxvY2FfYnVmLCBsb2NhX2J1Zl9zaXplICkgKQogICAgICAgZ290byBGYWlsOwogCiAgICAgZHN0ID0gbG9jYV9idWY7CkBAIC04MzQsMTUgKzgzOSwxOCBAQAogCiAgICAgRlRfVUludCAgbnVtX3N1YnN0cmVhbXMgPSA3OwogCisgICAgRlRfVVNob3J0ICBvcHRpb25fZmxhZ3M7CiAgICAgRlRfVVNob3J0ICBudW1fZ2x5cGhzOwogICAgIEZUX1VTaG9ydCAgaW5kZXhfZm9ybWF0OwogICAgIEZUX1VMb25nICAgZXhwZWN0ZWRfbG9jYV9sZW5ndGg7CiAgICAgRlRfVUludCAgICBvZmZzZXQ7CiAgICAgRlRfVUludCAgICBpOwogICAgIEZUX1VMb25nICAgcG9pbnRzX3NpemU7Ci0gICAgRlRfVUxvbmcgICBiaXRtYXBfbGVuZ3RoOwogICAgIEZUX1VMb25nICAgZ2x5cGhfYnVmX3NpemU7CiAgICAgRlRfVUxvbmcgICBiYm94X2JpdG1hcF9vZmZzZXQ7CisgICAgRlRfVUxvbmcgICBiYm94X2JpdG1hcF9sZW5ndGg7CisgICAgRlRfVUxvbmcgICBvdmVybGFwX2JpdG1hcF9vZmZzZXQgPSAwOworICAgIEZUX1VMb25nICAgb3ZlcmxhcF9iaXRtYXBfbGVuZ3RoID0gMDsKIAogICAgIGNvbnN0IEZUX1VMb25nICBnbHlmX3N0YXJ0ICA9ICpvdXRfb2Zmc2V0OwogICAgIEZUX1VMb25nICAgICAgICBkZXN0X29mZnNldCA9ICpvdXRfb2Zmc2V0OwpAQCAtODU1LDE4ICs4NjMsMjAgQEAKICAgICBXT0ZGMl9Qb2ludCAgcG9pbnRzICAgICAgID0gTlVMTDsKIAogCi0gICAgaWYgKCBGVF9ORVdfQVJSQVkoIHN1YnN0cmVhbXMsIG51bV9zdWJzdHJlYW1zICkgKQorICAgIGlmICggRlRfUU5FV19BUlJBWSggc3Vic3RyZWFtcywgbnVtX3N1YnN0cmVhbXMgKSApCiAgICAgICBnb3RvIEZhaWw7CiAKLSAgICBpZiAoIEZUX1NUUkVBTV9TS0lQKCA0ICkgKQorICAgIGlmICggRlRfU1RSRUFNX1NLSVAoIDIgKSApCisgICAgICBnb3RvIEZhaWw7CisgICAgaWYgKCBGVF9SRUFEX1VTSE9SVCggb3B0aW9uX2ZsYWdzICkgKQogICAgICAgZ290byBGYWlsOwogICAgIGlmICggRlRfUkVBRF9VU0hPUlQoIG51bV9nbHlwaHMgKSApCiAgICAgICBnb3RvIEZhaWw7CiAgICAgaWYgKCBGVF9SRUFEX1VTSE9SVCggaW5kZXhfZm9ybWF0ICkgKQogICAgICAgZ290byBGYWlsOwogCi0gICAgRlRfVFJBQ0U0KCggIm51bV9nbHlwaHMgPSAldTsgaW5kZXhfZm9ybWF0ID0gJXVcbiIsCi0gICAgICAgICAgICAgICAgbnVtX2dseXBocywgaW5kZXhfZm9ybWF0ICkpOworICAgIEZUX1RSQUNFNCgoICJvcHRpb25fZmxhZ3MgPSAldTsgbnVtX2dseXBocyA9ICV1OyBpbmRleF9mb3JtYXQgPSAldVxuIiwKKyAgICAgICAgICAgICAgICBvcHRpb25fZmxhZ3MsIG51bV9nbHlwaHMsIGluZGV4X2Zvcm1hdCApKTsKIAogICAgIGluZm8tPm51bV9nbHlwaHMgPSBudW1fZ2x5cGhzOwogCkBAIC04NzksNyArODg5LDcgQEAKICAgICBpZiAoIGluZm8tPmxvY2FfdGFibGUtPmRzdF9sZW5ndGggIT0gZXhwZWN0ZWRfbG9jYV9sZW5ndGggKQogICAgICAgZ290byBGYWlsOwogCi0gICAgb2Zmc2V0ID0gKCAyICsgbnVtX3N1YnN0cmVhbXMgKSAqIDQ7CisgICAgb2Zmc2V0ID0gMiArIDIgKyAyICsgMiArICggbnVtX3N1YnN0cmVhbXMgKiA0ICk7CiAgICAgaWYgKCBvZmZzZXQgPiBpbmZvLT5nbHlmX3RhYmxlLT5UcmFuc2Zvcm1MZW5ndGggKQogICAgICAgZ290byBGYWlsOwogCkBAIC05MDIsMjEgKzkxMiwzNiBAQAogICAgICAgb2Zmc2V0ICs9IHN1YnN0cmVhbV9zaXplOwogICAgIH0KIAotICAgIGlmICggRlRfTkVXX0FSUkFZKCBsb2NhX3ZhbHVlcywgbnVtX2dseXBocyArIDEgKSApCisgICAgaWYgKCBvcHRpb25fZmxhZ3MgJiBIQVZFX09WRVJMQVBfU0lNUExFX0JJVE1BUCApCisgICAgeworICAgICAgLyogU2l6ZSBvZiBvdmVybGFwQml0bWFwID0gZmxvb3IoKG51bUdseXBocyArIDcpIC8gOCkgKi8KKyAgICAgIG92ZXJsYXBfYml0bWFwX2xlbmd0aCA9ICggbnVtX2dseXBocyArIDdVICkgPj4gMzsKKyAgICAgIGlmICggb3ZlcmxhcF9iaXRtYXBfbGVuZ3RoID4gaW5mby0+Z2x5Zl90YWJsZS0+VHJhbnNmb3JtTGVuZ3RoIC0gb2Zmc2V0ICkKKyAgICAgICAgZ290byBGYWlsOworCisgICAgICBvdmVybGFwX2JpdG1hcF9vZmZzZXQgPSBwb3MgKyBvZmZzZXQ7CisKKyAgICAgIEZUX1RSQUNFNSgoICIgIE92ZXJsYXAgYml0bWFwOiBvZmZzZXQgPSAlbHU7IHNpemUgPSAlbHU7XG4iLAorICAgICAgICAgICAgICAgICAgb3ZlcmxhcF9iaXRtYXBfb2Zmc2V0LCBvdmVybGFwX2JpdG1hcF9sZW5ndGggKSk7CisgICAgICBvZmZzZXQgKz0gb3ZlcmxhcF9iaXRtYXBfbGVuZ3RoOworICAgIH0KKworICAgIGlmICggRlRfUU5FV19BUlJBWSggbG9jYV92YWx1ZXMsIG51bV9nbHlwaHMgKyAxICkgKQogICAgICAgZ290byBGYWlsOwogCiAgICAgcG9pbnRzX3NpemUgICAgICAgID0gMDsKICAgICBiYm94X2JpdG1hcF9vZmZzZXQgPSBzdWJzdHJlYW1zW0JCT1hfU1RSRUFNXS5vZmZzZXQ7CiAKICAgICAvKiBTaXplIG9mIGJib3hCaXRtYXAgPSA0ICogZmxvb3IoKG51bUdseXBocyArIDMxKSAvIDMyKSAqLwotICAgIGJpdG1hcF9sZW5ndGggICAgICAgICAgICAgICAgICAgPSAoICggbnVtX2dseXBocyArIDMxVSApID4+IDUgKSA8PCAyOwotICAgIHN1YnN0cmVhbXNbQkJPWF9TVFJFQU1dLm9mZnNldCArPSBiaXRtYXBfbGVuZ3RoOworICAgIGJib3hfYml0bWFwX2xlbmd0aCAgICAgICAgICAgICAgPSAoICggbnVtX2dseXBocyArIDMxVSApID4+IDUgKSA8PCAyOworICAgIC8qIGJib3hTdHJlYW1TaXplIGlzIHRoZSBjb21iaW5lZCBzaXplIG9mIGJib3hCaXRtYXAgYW5kIGJib3hTdHJlYW0uICovCisgICAgc3Vic3RyZWFtc1tCQk9YX1NUUkVBTV0ub2Zmc2V0ICs9IGJib3hfYml0bWFwX2xlbmd0aDsKIAogICAgIGdseXBoX2J1Zl9zaXplID0gV09GRjJfREVGQVVMVF9HTFlQSF9CVUY7Ci0gICAgaWYgKCBGVF9ORVdfQVJSQVkoIGdseXBoX2J1ZiwgZ2x5cGhfYnVmX3NpemUgKSApCisgICAgaWYgKCBGVF9RQUxMT0MoIGdseXBoX2J1ZiwgZ2x5cGhfYnVmX3NpemUgKSApCiAgICAgICBnb3RvIEZhaWw7CiAKLSAgICBpZiAoIEZUX05FV19BUlJBWSggaW5mby0+eF9taW5zLCBudW1fZ2x5cGhzICkgKQorICAgIGlmICggRlRfUU5FV19BUlJBWSggaW5mby0+eF9taW5zLCBudW1fZ2x5cGhzICkgKQogICAgICAgZ290byBGYWlsOwogCiAgICAgZm9yICggaSA9IDA7IGkgPCBudW1fZ2x5cGhzOyArK2kgKQpAQCAtOTQ4LDcgKzk3Myw3IEBACiAgICAgICAgIC8qIGNvbXBvc2l0ZSBnbHlwaCAqLwogICAgICAgICBGVF9Cb29sICAgIGhhdmVfaW5zdHJ1Y3Rpb25zID0gRkFMU0U7CiAgICAgICAgIEZUX1VTaG9ydCAgaW5zdHJ1Y3Rpb25fc2l6ZSAgPSAwOwotICAgICAgICBGVF9VTG9uZyAgIGNvbXBvc2l0ZV9zaXplOworICAgICAgICBGVF9VTG9uZyAgIGNvbXBvc2l0ZV9zaXplICAgID0gMDsKICAgICAgICAgRlRfVUxvbmcgICBzaXplX25lZWRlZDsKICAgICAgICAgRlRfQnl0ZSogICBwb2ludGVyICAgICAgICAgICA9IE5VTEw7CiAKQEAgLTk3NCw3ICs5OTksNyBAQAogICAgICAgICBzaXplX25lZWRlZCA9IDEyICsgY29tcG9zaXRlX3NpemUgKyBpbnN0cnVjdGlvbl9zaXplOwogICAgICAgICBpZiAoIGdseXBoX2J1Zl9zaXplIDwgc2l6ZV9uZWVkZWQgKQogICAgICAgICB7Ci0gICAgICAgICAgaWYgKCBGVF9SRU5FV19BUlJBWSggZ2x5cGhfYnVmLCBnbHlwaF9idWZfc2l6ZSwgc2l6ZV9uZWVkZWQgKSApCisgICAgICAgICAgaWYgKCBGVF9RUkVBTExPQyggZ2x5cGhfYnVmLCBnbHlwaF9idWZfc2l6ZSwgc2l6ZV9uZWVkZWQgKSApCiAgICAgICAgICAgICBnb3RvIEZhaWw7CiAgICAgICAgICAgZ2x5cGhfYnVmX3NpemUgPSBzaXplX25lZWRlZDsKICAgICAgICAgfQpAQCAtMTAyNiw4ICsxMDUxLDExIEBACiAgICAgICAgIEZUX1VMb25nICAgZmxhZ19zaXplOwogICAgICAgICBGVF9VTG9uZyAgIHRyaXBsZXRfc2l6ZTsKICAgICAgICAgRlRfVUxvbmcgICB0cmlwbGV0X2J5dGVzX3VzZWQ7Ci0gICAgICAgIEZUX0J5dGUqICAgZmxhZ3NfYnVmICAgPSBOVUxMOwotICAgICAgICBGVF9CeXRlKiAgIHRyaXBsZXRfYnVmID0gTlVMTDsKKyAgICAgICAgRlRfQm9vbCAgICBoYXZlX292ZXJsYXAgID0gRkFMU0U7CisgICAgICAgIEZUX0J5dGUgICAgb3ZlcmxhcF9iaXRtYXA7CisgICAgICAgIEZUX1VMb25nICAgb3ZlcmxhcF9vZmZzZXQ7CisgICAgICAgIEZUX0J5dGUqICAgZmxhZ3NfYnVmICAgICA9IE5VTEw7CisgICAgICAgIEZUX0J5dGUqICAgdHJpcGxldF9idWYgICA9IE5VTEw7CiAgICAgICAgIEZUX1VTaG9ydCAgaW5zdHJ1Y3Rpb25fc2l6ZTsKICAgICAgICAgRlRfVUxvbmcgICBzaXplX25lZWRlZDsKICAgICAgICAgRlRfSW50ICAgICBlbmRfcG9pbnQ7CkBAIC0xMDM2LDcgKzEwNjQsMTggQEAKICAgICAgICAgRlRfQnl0ZSogICBwb2ludGVyID0gTlVMTDsKIAogCi0gICAgICAgIGlmICggRlRfTkVXX0FSUkFZKCBuX3BvaW50c19hcnIsIG5fY29udG91cnMgKSApCisgICAgICAgIC8qIFNldCBgaGF2ZV9vdmVybGFwYC4gKi8KKyAgICAgICAgaWYgKCBvdmVybGFwX2JpdG1hcF9vZmZzZXQgKQorICAgICAgICB7CisgICAgICAgICAgb3ZlcmxhcF9vZmZzZXQgPSBvdmVybGFwX2JpdG1hcF9vZmZzZXQgKyAoIGkgPj4gMyApOworICAgICAgICAgIGlmICggRlRfU1RSRUFNX1NFRUsoIG92ZXJsYXBfb2Zmc2V0ICkgfHwKKyAgICAgICAgICAgICAgIEZUX1JFQURfQllURSggb3ZlcmxhcF9iaXRtYXAgKSAgICkKKyAgICAgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgICAgICBpZiAoIG92ZXJsYXBfYml0bWFwICYgKCAweDgwID4+ICggaSAmIDcgKSApICkKKyAgICAgICAgICAgIGhhdmVfb3ZlcmxhcCA9IFRSVUU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIEZUX1FORVdfQVJSQVkoIG5fcG9pbnRzX2Fyciwgbl9jb250b3VycyApICkKICAgICAgICAgICBnb3RvIEZhaWw7CiAKICAgICAgICAgaWYgKCBGVF9TVFJFQU1fU0VFSyggc3Vic3RyZWFtc1tOX1BPSU5UU19TVFJFQU1dLm9mZnNldCApICkKQEAgLTEwNzMsNyArMTExMiw3IEBACiAKICAgICAgICAgLyogQ3JlYXRlIGFycmF5IHRvIHN0b3JlIHBvaW50IGluZm9ybWF0aW9uLiAqLwogICAgICAgICBwb2ludHNfc2l6ZSA9IHRvdGFsX25fcG9pbnRzOwotICAgICAgICBpZiAoIEZUX05FV19BUlJBWSggcG9pbnRzLCBwb2ludHNfc2l6ZSApICkKKyAgICAgICAgaWYgKCBGVF9RTkVXX0FSUkFZKCBwb2ludHMsIHBvaW50c19zaXplICkgKQogICAgICAgICAgIGdvdG8gRmFpbDsKIAogICAgICAgICBpZiAoIHRyaXBsZXRfZGVjb2RlKCBmbGFnc19idWYsCkBAIC0xMTAyLDcgKzExNDEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uX3NpemU7CiAgICAgICAgIGlmICggZ2x5cGhfYnVmX3NpemUgPCBzaXplX25lZWRlZCApCiAgICAgICAgIHsKLSAgICAgICAgICBpZiAoIEZUX1JFTkVXX0FSUkFZKCBnbHlwaF9idWYsIGdseXBoX2J1Zl9zaXplLCBzaXplX25lZWRlZCApICkKKyAgICAgICAgICBpZiAoIEZUX1FSRUFMTE9DKCBnbHlwaF9idWYsIGdseXBoX2J1Zl9zaXplLCBzaXplX25lZWRlZCApICkKICAgICAgICAgICAgIGdvdG8gRmFpbDsKICAgICAgICAgICBnbHlwaF9idWZfc2l6ZSA9IHNpemVfbmVlZGVkOwogICAgICAgICB9CkBAIC0xMTU2LDYgKzExOTUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9jb250b3VycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlX292ZXJsYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9idWZfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnbHlwaF9zaXplICkgKQpAQCAtMTE4Niw4ICsxMjI2LDcgQEAKICAgICAgICpnbHlmX2NoZWNrc3VtICs9IGNvbXB1dGVfVUxvbmdfc3VtKCBnbHlwaF9idWYsIGdseXBoX3NpemUgKTsKIAogICAgICAgLyogU3RvcmUgeF9taW5zLCBtYXkgYmUgcmVxdWlyZWQgdG8gcmVjb25zdHJ1Y3QgYGhtdHgnLiAqLwotICAgICAgaWYgKCBuX2NvbnRvdXJzID4gMCApCi0gICAgICAgIGluZm8tPnhfbWluc1tpXSA9IChGVF9TaG9ydCl4X21pbjsKKyAgICAgIGluZm8tPnhfbWluc1tpXSA9IChGVF9TaG9ydCl4X21pbjsKICAgICB9CiAKICAgICBpbmZvLT5nbHlmX3RhYmxlLT5kc3RfbGVuZ3RoID0gZGVzdF9vZmZzZXQgLSBpbmZvLT5nbHlmX3RhYmxlLT5kc3Rfb2Zmc2V0OwpAQCAtMTMwNCw3ICsxMzQzLDcgQEAKICAgICBvZmZzZXRfc2l6ZSA9IGluZGV4X2Zvcm1hdCA/IDQgOiAyOwogCiAgICAgLyogQ3JlYXRlIGB4X21pbnMnIGFycmF5LiAqLwotICAgIGlmICggRlRfTkVXX0FSUkFZKCBpbmZvLT54X21pbnMsIG51bV9nbHlwaHMgKSApCisgICAgaWYgKCBGVF9RTkVXX0FSUkFZKCBpbmZvLT54X21pbnMsIG51bV9nbHlwaHMgKSApCiAgICAgICByZXR1cm4gZXJyb3I7CiAKICAgICBsb2NhX29mZnNldCA9IGluZm8tPmxvY2FfdGFibGUtPnNyY19vZmZzZXQ7CkBAIC0xMzkyLDggKzE0MzEsOCBAQAogICAgIGlmICggbnVtX2htZXRyaWNzIDwgMSApCiAgICAgICBnb3RvIEZhaWw7CiAKLSAgICBpZiAoIEZUX05FV19BUlJBWSggYWR2YW5jZV93aWR0aHMsIG51bV9obWV0cmljcyApIHx8Ci0gICAgICAgICBGVF9ORVdfQVJSQVkoIGxzYnMsIG51bV9nbHlwaHMgKSAgICAgICAgICAgICApCisgICAgaWYgKCBGVF9RTkVXX0FSUkFZKCBhZHZhbmNlX3dpZHRocywgbnVtX2htZXRyaWNzICkgfHwKKyAgICAgICAgIEZUX1FORVdfQVJSQVkoIGxzYnMsIG51bV9nbHlwaHMgKSAgICAgICAgICAgICApCiAgICAgICBnb3RvIEZhaWw7CiAKICAgICAvKiBSZWFkIGBhZHZhbmNlV2lkdGgnIHN0cmVhbS4gIEFsd2F5cyBwcmVzZW50LiAqLwpAQCAtMTQ0NCw3ICsxNDgzLDcgQEAKIAogICAgIC8qIEJ1aWxkIHRoZSBobXR4IHRhYmxlLiAqLwogICAgIGhtdHhfdGFibGVfc2l6ZSA9IDIgKiBudW1faG1ldHJpY3MgKyAyICogbnVtX2dseXBoczsKLSAgICBpZiAoIEZUX05FV19BUlJBWSggaG10eF90YWJsZSwgaG10eF90YWJsZV9zaXplICkgKQorICAgIGlmICggRlRfUUFMTE9DKCBobXR4X3RhYmxlLCBobXR4X3RhYmxlX3NpemUgKSApCiAgICAgICBnb3RvIEZhaWw7CiAKICAgICBkc3QgPSBobXR4X3RhYmxlOwpAQCAtMTUwMSwxMCArMTU0MCwxMCBAQAogICB7CiAgICAgLyogTWVtb3J5IG1hbmFnZW1lbnQgb2YgYHRyYW5zZm9ybWVkX2J1ZicgaXMgaGFuZGxlZCBieSB0aGUgY2FsbGVyLiAqLwogCi0gICAgRlRfRXJyb3IgICBlcnJvciAgICAgICA9IEZUX0Vycl9PazsKLSAgICBGVF9TdHJlYW0gIHN0cmVhbSAgICAgID0gTlVMTDsKLSAgICBGVF9CeXRlKiAgIGJ1Zl9jdXJzb3IgID0gTlVMTDsKLSAgICBGVF9CeXRlKiAgIHRhYmxlX2VudHJ5ID0gTlVMTDsKKyAgICBGVF9FcnJvciAgIGVycm9yICAgICAgPSBGVF9FcnJfT2s7CisgICAgRlRfU3RyZWFtICBzdHJlYW0gICAgID0gTlVMTDsKKyAgICBGVF9CeXRlKiAgIGJ1Zl9jdXJzb3IgPSBOVUxMOworICAgIEZUX0J5dGUgICAgdGFibGVfZW50cnlbMTZdOwogCiAgICAgLyogV2UgYXJlIHJlYWxsb2NhdGluZyBtZW1vcnkgZm9yIGBzZm50Jywgc28gaXRzIHBvaW50ZXIgbWF5IGNoYW5nZS4gKi8KICAgICBGVF9CeXRlKiAgIHNmbnQgPSAqc2ZudF9ieXRlczsKQEAgLTE1NDUsMTAgKzE1ODQsNiBAQAogICAgICAgfQogICAgIH0KIAotICAgIC8qIENyZWF0ZSBidWZmZXIgZm9yIHRhYmxlIGVudHJpZXMuICovCi0gICAgaWYgKCBGVF9ORVdfQVJSQVkoIHRhYmxlX2VudHJ5LCAxNiApICkKLSAgICAgIGdvdG8gRmFpbDsKLQogICAgIC8qIENyZWF0ZSBhIHN0cmVhbSBmb3IgdGhlIHVuY29tcHJlc3NlZCBidWZmZXIuICovCiAgICAgaWYgKCBGVF9ORVcoIHN0cmVhbSApICkKICAgICAgIGdvdG8gRmFpbDsKQEAgLTE3MTEsNyArMTc0Niw2IEBACiAgICAgLyogU2V0IHBvaW50ZXIgb2Ygc2ZudCBzdHJlYW0gdG8gaXRzIGNvcnJlY3QgdmFsdWUuICovCiAgICAgKnNmbnRfYnl0ZXMgPSBzZm50OwogCi0gICAgRlRfRlJFRSggdGFibGVfZW50cnkgKTsKICAgICBGVF9TdHJlYW1fQ2xvc2UoIHN0cmVhbSApOwogICAgIEZUX0ZSRUUoIHN0cmVhbSApOwogCkBAIC0xNzI0LDcgKzE3NTgsNiBAQAogICAgIC8qIFNldCBwb2ludGVyIG9mIHNmbnQgc3RyZWFtIHRvIGl0cyBjb3JyZWN0IHZhbHVlLiAqLwogICAgICpzZm50X2J5dGVzID0gc2ZudDsKIAotICAgIEZUX0ZSRUUoIHRhYmxlX2VudHJ5ICk7CiAgICAgRlRfU3RyZWFtX0Nsb3NlKCBzdHJlYW0gKTsKICAgICBGVF9GUkVFKCBzdHJlYW0gKTsKIApAQCAtMTgzNyw4ICsxODcwLDggQEAKICAgICB3b2ZmMi50dGNfZm9udHMgPSBOVUxMOwogCiAgICAgLyogUmVhZCB0YWJsZSBkaXJlY3RvcnkuICovCi0gICAgaWYgKCBGVF9ORVdfQVJSQVkoIHRhYmxlcywgd29mZjIubnVtX3RhYmxlcyApICB8fAotICAgICAgICAgRlRfTkVXX0FSUkFZKCBpbmRpY2VzLCB3b2ZmMi5udW1fdGFibGVzICkgKQorICAgIGlmICggRlRfUU5FV19BUlJBWSggdGFibGVzLCB3b2ZmMi5udW1fdGFibGVzICkgIHx8CisgICAgICAgICBGVF9RTkVXX0FSUkFZKCBpbmRpY2VzLCB3b2ZmMi5udW1fdGFibGVzICkgKQogICAgICAgZ290byBFeGl0OwogCiAgICAgRlRfVFJBQ0UyKCggIlxuIiApKTsKQEAgLTE5MDksMTAgKzE5NDIsMTEgQEAKICAgICAgICAgZ290byBFeGl0OwogICAgICAgfQogCisgICAgICB0YWJsZS0+ZmxhZ3MgICAgICA9IGZsYWdzOwogICAgICAgdGFibGUtPnNyY19vZmZzZXQgPSBzcmNfb2Zmc2V0OwogICAgICAgdGFibGUtPnNyY19sZW5ndGggPSB0YWJsZS0+VHJhbnNmb3JtTGVuZ3RoOwogICAgICAgc3JjX29mZnNldCAgICAgICArPSB0YWJsZS0+VHJhbnNmb3JtTGVuZ3RoOwotICAgICAgdGFibGUtPmZsYWdzICAgICAgPSBmbGFnczsKKyAgICAgIHRhYmxlLT5kc3Rfb2Zmc2V0ID0gMDsKIAogICAgICAgRlRfVFJBQ0UyKCggIiAgJWMlYyVjJWMgICUwOGQgICUwOGQgICAlMDhsZCAgICAlMDhsZCAgICAlMDhsZFxuIiwKICAgICAgICAgICAgICAgICAgIChGVF9DaGFyKSggdGFibGUtPlRhZyA+PiAyNCApLApAQCAtMTk3MCw2ICsyMDA0LDcgQEAKIAogICAgICAgRlRfVFJBQ0U0KCggIk51bWJlciBvZiBmb250cyBpbiBUVEM6ICVkXG4iLCB3b2ZmMi5udW1fZm9udHMgKSk7CiAKKyAgICAgIC8qIHByZS16ZXJvIHBvaW50ZXJzIHdpdGhpbiBpbiBjYXNlIG9mIGZhaWx1cmUgKi8KICAgICAgIGlmICggRlRfTkVXX0FSUkFZKCB3b2ZmMi50dGNfZm9udHMsIHdvZmYyLm51bV9mb250cyApICkKICAgICAgICAgZ290byBFeGl0OwogCkBAIC0xOTgzLDcgKzIwMTgsNyBAQAogICAgICAgICBpZiAoIEZUX1JFQURfVUxPTkcoIHR0Y19mb250LT5mbGF2b3IgKSApCiAgICAgICAgICAgZ290byBFeGl0OwogCi0gICAgICAgIGlmICggRlRfTkVXX0FSUkFZKCB0dGNfZm9udC0+dGFibGVfaW5kaWNlcywgdHRjX2ZvbnQtPm51bV90YWJsZXMgKSApCisgICAgICAgIGlmICggRlRfUU5FV19BUlJBWSggdHRjX2ZvbnQtPnRhYmxlX2luZGljZXMsIHR0Y19mb250LT5udW1fdGFibGVzICkgKQogICAgICAgICAgIGdvdG8gRXhpdDsKIAogICAgICAgICBGVF9UUkFDRTUoKCAiTnVtYmVyIG9mIHRhYmxlcyBpbiBmb250ICVkOiAlZFxuIiwKQEAgLTIwNjQsNyArMjA5OSw3IEBACiAgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfVGFibGUgKTsKICAgICAgICAgZ290byBFeGl0OwogICAgICAgfQotICAgICAgZmlsZV9vZmZzZXQgPSBST1VORDQod29mZjIubWV0YU9mZnNldCArIHdvZmYyLm1ldGFMZW5ndGgpOworICAgICAgZmlsZV9vZmZzZXQgPSBST1VORDQoIHdvZmYyLm1ldGFPZmZzZXQgKyB3b2ZmMi5tZXRhTGVuZ3RoICk7CiAgICAgfQogCiAgICAgaWYgKCB3b2ZmMi5wcml2T2Zmc2V0ICkKQEAgLTIwNzQsNyArMjEwOSw3IEBACiAgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfVGFibGUgKTsKICAgICAgICAgZ290byBFeGl0OwogICAgICAgfQotICAgICAgZmlsZV9vZmZzZXQgPSBST1VORDQod29mZjIucHJpdk9mZnNldCArIHdvZmYyLnByaXZMZW5ndGgpOworICAgICAgZmlsZV9vZmZzZXQgPSBST1VORDQoIHdvZmYyLnByaXZPZmZzZXQgKyB3b2ZmMi5wcml2TGVuZ3RoICk7CiAgICAgfQogCiAgICAgaWYgKCBmaWxlX29mZnNldCAhPSAoIFJPVU5ENCggd29mZjIubGVuZ3RoICkgKSApCkBAIC0yMDg2LDcgKzIxMjEsNyBAQAogICAgIC8qIFZhbGlkYXRlIHJlcXVlc3RlZCBmYWNlIGluZGV4LiAqLwogICAgICpudW1fZmFjZXMgPSB3b2ZmMi5udW1fZm9udHM7CiAgICAgLyogdmFsdWUgLShOKzEpIHJlcXVlc3RzIGluZm9ybWF0aW9uIG9uIGluZGV4IE4gKi8KLSAgICBpZiAoICpmYWNlX2luc3RhbmNlX2luZGV4IDwgMCApCisgICAgaWYgKCAqZmFjZV9pbnN0YW5jZV9pbmRleCA8IDAgJiYgZmFjZV9pbmRleCA+IDAgKQogICAgICAgZmFjZV9pbmRleC0tOwogCiAgICAgaWYgKCBmYWNlX2luZGV4ID49IHdvZmYyLm51bV9mb250cyApCkBAIC0yMjYyLDkgKzIyOTcsOSBAQAogICAgIHsKICAgICAgIEZUX1RSQUNFNSgoICJUcmltbWluZyBzZm50IHN0cmVhbSBmcm9tICVsdSB0byAlbHUuXG4iLAogICAgICAgICAgICAgICAgICAgc2ZudF9zaXplLCB3b2ZmMi5hY3R1YWxfc2ZudF9zaXplICkpOwotICAgICAgaWYgKCBGVF9SRUFMTE9DKCBzZm50LAotICAgICAgICAgICAgICAgICAgICAgICAoRlRfVUxvbmcpKCBzZm50X3NpemUgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgKEZUX1VMb25nKSggd29mZjIuYWN0dWFsX3NmbnRfc2l6ZSApICkgKQorICAgICAgaWYgKCBGVF9RUkVBTExPQyggc2ZudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIChGVF9VTG9uZykoIHNmbnRfc2l6ZSApLAorICAgICAgICAgICAgICAgICAgICAgICAgKEZUX1VMb25nKSggd29mZjIuYWN0dWFsX3NmbnRfc2l6ZSApICkgKQogICAgICAgICBnb3RvIEV4aXQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9zcmMvc2ZudC9zZndvZmYyLmggYi9zcmMvc2ZudC9zZndvZmYyLmgKaW5kZXggZmE3OGIwMi4uNDkwMTI4NiAxMDA2NDQKLS0tIGEvc3JjL3NmbnQvc2Z3b2ZmMi5oCisrKyBiL3NyYy9zZm50L3Nmd29mZjIuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFdPRkZGMiBmb3JtYXQgbWFuYWdlbWVudCAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIzIGJ5CiAgKiBOaWtoaWwgUmFtYWtyaXNobmFuLCBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtNTYsNiArNTYsNyBAQAogI2RlZmluZSBHTFlGX1JFUEVBVCAgICAgICAgICAxIDw8IDMKICNkZWZpbmUgR0xZRl9USElTX1hfSVNfU0FNRSAgMSA8PCA0CiAjZGVmaW5lIEdMWUZfVEhJU19ZX0lTX1NBTUUgIDEgPDwgNQorI2RlZmluZSBHTFlGX09WRVJMQVBfU0lNUExFICAxIDw8IDYKIAogICAvKiBPdGhlciBjb25zdGFudHMgKi8KICNkZWZpbmUgQ09OVE9VUl9PRkZTRVRfRU5EX1BPSU5UICAxMApkaWZmIC0tZ2l0IGEvc3JjL3NmbnQvdHRiZGYuYyBiL3NyYy9zZm50L3R0YmRmLmMKaW5kZXggYjhkOTQ3My4uMTE4ZjQ3NSAxMDA2NDQKLS0tIGEvc3JjL3NmbnQvdHRiZGYuYworKysgYi9zcmMvc2ZudC90dGJkZi5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHJ1ZVR5cGUgYW5kIE9wZW5UeXBlIGVtYmVkZGVkIEJERiBwcm9wZXJ0aWVzIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvc2ZudC90dGJkZi5oIGIvc3JjL3NmbnQvdHRiZGYuaAppbmRleCA5MTI3MWQ5Li41OTVhZWI3IDEwMDY0NAotLS0gYS9zcmMvc2ZudC90dGJkZi5oCisrKyBiL3NyYy9zZm50L3R0YmRmLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUcnVlVHlwZSBhbmQgT3BlblR5cGUgZW1iZWRkZWQgQkRGIHByb3BlcnRpZXMgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9zZm50L3R0Y21hcC5jIGIvc3JjL3NmbnQvdHRjbWFwLmMKaW5kZXggYjM2OWQ4My4uODIwY2QwOCAxMDA2NDQKLS0tIGEvc3JjL3NmbnQvdHRjbWFwLmMKKysrIGIvc3JjL3NmbnQvdHRjbWFwLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUcnVlVHlwZSBjaGFyYWN0ZXIgbWFwcGluZyB0YWJsZSAoY21hcCkgc3VwcG9ydCAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtNDY1LDcgKzQ2NSw3IEBACiAgICAgaWYgKCBzdWJoZWFkZXIgKQogICAgIHsKICAgICAgIEZUX0J5dGUqICBwICAgPSBzdWJoZWFkZXI7Ci0gICAgICBGVF9VSW50ICAgaWR4ID0gKEZUX1VJbnQpKGNoYXJfY29kZSAmIDB4RkYpOworICAgICAgRlRfVUludCAgIGlkeCA9IChGVF9VSW50KSggY2hhcl9jb2RlICYgMHhGRiApOwogICAgICAgRlRfVUludCAgIHN0YXJ0LCBjb3VudDsKICAgICAgIEZUX0ludCAgICBkZWx0YTsKICAgICAgIEZUX1VJbnQgICBvZmZzZXQ7CkBAIC0zODc5LDEzICszODc5LDE0IEBACiAgIH0KIAogCi0gIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQogICB0dF9nZXRfY21hcF9pbmZvKCBGVF9DaGFyTWFwICAgIGNoYXJtYXAsCiAgICAgICAgICAgICAgICAgICAgIFRUX0NNYXBJbmZvICAqY21hcF9pbmZvICkKICAgewogICAgIEZUX0NNYXAgICAgICAgIGNtYXAgID0gKEZUX0NNYXApY2hhcm1hcDsKICAgICBUVF9DTWFwX0NsYXNzICBjbGF6eiA9IChUVF9DTWFwX0NsYXNzKWNtYXAtPmNsYXp6OwogCisKICAgICBpZiAoIGNsYXp6LT5nZXRfY21hcF9pbmZvICkKICAgICAgIHJldHVybiBjbGF6ei0+Z2V0X2NtYXBfaW5mbyggY2hhcm1hcCwgY21hcF9pbmZvICk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL3NmbnQvdHRjbWFwLmggYi9zcmMvc2ZudC90dGNtYXAuaAppbmRleCA1MDRmYzk1Li5mZjUyOTE3IDEwMDY0NAotLS0gYS9zcmMvc2ZudC90dGNtYXAuaAorKysgYi9zcmMvc2ZudC90dGNtYXAuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRydWVUeXBlIGNoYXJhY3RlciBtYXBwaW5nIHRhYmxlIChjbWFwKSBzdXBwb3J0IChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvc2ZudC90dGNtYXBjLmggYi9zcmMvc2ZudC90dGNtYXBjLmgKaW5kZXggNGU2Y2Q0Ni4uMGFmNDhjMiAxMDA2NDQKLS0tIGEvc3JjL3NmbnQvdHRjbWFwYy5oCisrKyBiL3NyYy9zZm50L3R0Y21hcGMuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRUIENNQVAgY2xhc3NlcyBkZWZpbml0aW9ucyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjMgYnkKICAqIE9yYW4gQWdyYSBhbmQgTWlja2V5IEdhYmVsLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9zZm50L3R0Y29sci5jIGIvc3JjL3NmbnQvdHRjb2xyLmMKaW5kZXggZWM5NzJhOC4uNWQ5OGRjYSAxMDA2NDQKLS0tIGEvc3JjL3NmbnQvdHRjb2xyLmMKKysrIGIvc3JjL3NmbnQvdHRjb2xyLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUcnVlVHlwZSBhbmQgT3BlblR5cGUgY29sb3JlZCBnbHlwaCBsYXllciBzdXBwb3J0IChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIERvbWluaWsgUsO2dHRzY2hlcywgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBTaGFvIFl1IFpoYW5nIDxzaGFvemhhbmdAZmIuY29tPi4KQEAgLTM0LDYgKzM0LDkgQEAKICNpbmNsdWRlIDxmcmVldHlwZS9mdGNvbG9yLmg+CiAjaW5jbHVkZSA8ZnJlZXR5cGUvY29uZmlnL2ludGVnZXItdHlwZXMuaD4KIAorI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQKKyNpbmNsdWRlIDxmcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdm1tLmg+CisjZW5kaWYKIAogI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fQ09MT1JfTEFZRVJTCiAKQEAgLTQ2LDIyICs0OSw0MiBAQAogI2RlZmluZSBMQVlFUl9WMV9MSVNUX1BBSU5UX09GRlNFVF9TSVpFICAgNFUKICNkZWZpbmUgTEFZRVJfVjFfTElTVF9OVU1fTEFZRVJTX1NJWkUgICAgIDRVCiAjZGVmaW5lIENPTE9SX1NUT1BfU0laRSAgICAgICAgICAgICAgICAgICA2VQorI2RlZmluZSBWQVJfSURYX0JBU0VfU0laRSAgICAgICAgICAgICAgICAgNFUKICNkZWZpbmUgTEFZRVJfU0laRSAgICAgICAgICAgICAgICAgICAgICAgIDRVCi0jZGVmaW5lIENPTFJfSEVBREVSX1NJWkUgICAgICAgICAgICAgICAgIDE0VQorLyogaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvdHlwb2dyYXBoeS9vcGVudHlwZS9zcGVjL2NvbHIjY29sci1oZWFkZXIgKi8KKy8qIDMgKiB1aW50MTYgKyAyICogT2Zmc2V0MzIgKi8KKyNkZWZpbmUgQ09MUlYwX0hFQURFUl9TSVpFICAgICAgICAgICAgICAgMTRVCisvKiBDT0xSVjBfSEVBREVSX1NJWkUgKyA1ICogT2Zmc2V0MzIgKi8KKyNkZWZpbmUgQ09MUlYxX0hFQURFUl9TSVpFICAgICAgICAgICAgICAgMzRVCisKIAogI2RlZmluZSBFTlNVUkVfUkVBRF9CWVRFUyggYnl0ZV9zaXplICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgaWYgKCBwIDwgY29sci0+cGFpbnRzX3N0YXJ0X3YxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBcCiAgICAgICAgcCA+IChGVF9CeXRlKiljb2xyLT50YWJsZSArIGNvbHItPnRhYmxlX3NpemUgLSBieXRlX3NpemUgKSAgXAotICAgIHJldHVybiAwOworICAgIHJldHVybiAwCiAKIAogICB0eXBlZGVmIGVudW0gIEZUX1BhaW50Rm9ybWF0X0ludGVybmFsXwogICB7Ci0gICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9TQ0FMRV9DRU5URVIgICAgICAgICA9IDE4LAotICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfU0NBTEVfVU5JRk9STSAgICAgICAgPSAyMCwKLSAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1NDQUxFX1VOSUZPUk1fQ0VOVEVSID0gMjIsCi0gICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9ST1RBVEVfQ0VOVEVSICAgICAgICA9IDI2LAotICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfU0tFV19DRU5URVIgICAgICAgICAgPSAzMAorICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfVkFSX1NPTElEICAgICAgICAgICAgICAgID0gMywKKyAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9MSU5FQVJfR1JBRElFTlQgICAgICA9IDUsCisgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9WQVJfUkFESUFMX0dSQURJRU5UICAgICAgPSA3LAorICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfVkFSX1NXRUVQX0dSQURJRU5UICAgICAgID0gOSwKKyAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9UUkFOU0ZPUk0gICAgICAgICAgICA9IDEzLAorICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfVkFSX1RSQU5TTEFURSAgICAgICAgICAgID0gMTUsCisgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9WQVJfU0NBTEUgICAgICAgICAgICAgICAgPSAxNywKKyAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1NDQUxFX0NFTlRFUiAgICAgICAgICAgICA9IDE4LAorICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfVkFSX1NDQUxFX0NFTlRFUiAgICAgICAgID0gMTksCisgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9TQ0FMRV9VTklGT1JNICAgICAgICAgICAgPSAyMCwKKyAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9TQ0FMRV9VTklGT1JNICAgICAgICA9IDIxLAorICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfU0NBTEVfVU5JRk9STV9DRU5URVIgICAgID0gMjIsCisgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9WQVJfU0NBTEVfVU5JRk9STV9DRU5URVIgPSAyMywKKyAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9ST1RBVEUgICAgICAgICAgICAgICA9IDI1LAorICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfUk9UQVRFX0NFTlRFUiAgICAgICAgICAgID0gMjYsCisgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9WQVJfUk9UQVRFX0NFTlRFUiAgICAgICAgPSAyNywKKyAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9TS0VXICAgICAgICAgICAgICAgICA9IDI5LAorICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfU0tFV19DRU5URVIgICAgICAgICAgICAgID0gMzAsCisgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9WQVJfU0tFV19DRU5URVIgICAgICAgICAgPSAzMSwKIAogICB9IEZUX1BhaW50Rm9ybWF0X0ludGVybmFsOwogCkBAIC0xMDksNiArMTMyLDEyIEBACiAgICAgICovCiAgICAgRlRfQnl0ZSogIHBhaW50c19zdGFydF92MTsKIAorI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQKKyAgICAvKiBJdGVtIFZhcmlhdGlvbiBTdG9yZSBmb3IgdmFyaWFibGUgJ0NPTFInIHYxLiAqLworICAgIEdYX0l0ZW1WYXJTdG9yZVJlYyAgICB2YXJfc3RvcmU7CisgICAgR1hfRGVsdGFTZXRJZHhNYXBSZWMgIGRlbHRhX3NldF9pZHhfbWFwOworI2VuZGlmCisKICAgICAvKiBUaGUgbWVtb3J5IHRoYXQgYmFja3MgdXAgdGhlIGBDT0xSJyB0YWJsZS4gKi8KICAgICB2b2lkKiAgICAgdGFibGU7CiAgICAgRlRfVUxvbmcgIHRhYmxlX3NpemU7CkBAIC0xNDQsNiArMTczLDkgQEAKICAgICBGVF9VTG9uZyAgYmFzZV9nbHlwaHNfb2Zmc2V0X3YxLCBudW1fYmFzZV9nbHlwaHNfdjE7CiAgICAgRlRfVUxvbmcgIGxheWVyX29mZnNldF92MSwgbnVtX2xheWVyc192MSwgY2xpcF9saXN0X29mZnNldDsKICAgICBGVF9VTG9uZyAgdGFibGVfc2l6ZTsKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisgICAgRlRfVUxvbmcgIGNvbHJfb2Zmc2V0X2luX3N0cmVhbTsKKyNlbmRpZgogCiAKICAgICAvKiBgQ09MUicgYWx3YXlzIG5lZWRzIGBDUEFMJyAqLwpAQCAtMTU0LDggKzE4NiwxMiBAQAogICAgIGlmICggZXJyb3IgKQogICAgICAgZ290byBOb0NvbHI7CiAKLSAgICBpZiAoIHRhYmxlX3NpemUgPCBDT0xSX0hFQURFUl9TSVpFICkKLSAgICAgIGdvdG8gSW52YWxpZFRhYmxlOworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQKKyAgICBjb2xyX29mZnNldF9pbl9zdHJlYW0gPSBGVF9TVFJFQU1fUE9TKCk7CisjZW5kaWYKKworICAgIGlmICggdGFibGVfc2l6ZSA8IENPTFJWMF9IRUFERVJfU0laRSApCisgICAgICBnb3RvIE5vQ29scjsKIAogICAgIGlmICggRlRfRlJBTUVfRVhUUkFDVCggdGFibGVfc2l6ZSwgdGFibGUgKSApCiAgICAgICBnb3RvIE5vQ29scjsKQEAgLTE4OCw5ICsyMjQsMTIgQEAKIAogICAgIGlmICggY29sci0+dmVyc2lvbiA9PSAxICkKICAgICB7CisgICAgICBpZiAoIHRhYmxlX3NpemUgPCBDT0xSVjFfSEVBREVSX1NJWkUgKQorICAgICAgICBnb3RvIEludmFsaWRUYWJsZTsKKwogICAgICAgYmFzZV9nbHlwaHNfb2Zmc2V0X3YxID0gRlRfTkVYVF9VTE9ORyggcCApOwogCi0gICAgICBpZiAoIGJhc2VfZ2x5cGhzX29mZnNldF92MSA+PSB0YWJsZV9zaXplICkKKyAgICAgIGlmICggYmFzZV9nbHlwaHNfb2Zmc2V0X3YxICsgNCA+PSB0YWJsZV9zaXplICkKICAgICAgICAgZ290byBJbnZhbGlkVGFibGU7CiAKICAgICAgIHAxICAgICAgICAgICAgICAgICA9IChGVF9CeXRlKikoIHRhYmxlICsgYmFzZV9nbHlwaHNfb2Zmc2V0X3YxICk7CkBAIC0yMTAsNiArMjQ5LDkgQEAKIAogICAgICAgaWYgKCBsYXllcl9vZmZzZXRfdjEgKQogICAgICAgeworICAgICAgICBpZiAoIGxheWVyX29mZnNldF92MSArIDQgPj0gdGFibGVfc2l6ZSApCisgICAgICAgICAgZ290byBJbnZhbGlkVGFibGU7CisKICAgICAgICAgcDEgICAgICAgICAgICA9IChGVF9CeXRlKikoIHRhYmxlICsgbGF5ZXJfb2Zmc2V0X3YxICk7CiAgICAgICAgIG51bV9sYXllcnNfdjEgPSBGVF9QRUVLX1VMT05HKCBwMSApOwogCkBAIC0yNDQsNiArMjg2LDY1IEBACiAgICAgICAgIGNvbHItPmNsaXBfbGlzdCA9IChGVF9CeXRlKikoIHRhYmxlICsgY2xpcF9saXN0X29mZnNldCApOwogICAgICAgZWxzZQogICAgICAgICBjb2xyLT5jbGlwX2xpc3QgPSAwOworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVAorICAgICAgY29sci0+dmFyX3N0b3JlLmRhdGFDb3VudCAgICAgPSAwOworICAgICAgY29sci0+dmFyX3N0b3JlLnZhckRhdGEgICAgICAgPSBOVUxMOworICAgICAgY29sci0+dmFyX3N0b3JlLmF4aXNDb3VudCAgICAgPSAwOworICAgICAgY29sci0+dmFyX3N0b3JlLnJlZ2lvbkNvdW50ICAgPSAwOworICAgICAgY29sci0+dmFyX3N0b3JlLnZhclJlZ2lvbkxpc3QgPSAwOworCisgICAgICBjb2xyLT5kZWx0YV9zZXRfaWR4X21hcC5tYXBDb3VudCAgID0gMDsKKyAgICAgIGNvbHItPmRlbHRhX3NldF9pZHhfbWFwLm91dGVySW5kZXggPSBOVUxMOworICAgICAgY29sci0+ZGVsdGFfc2V0X2lkeF9tYXAuaW5uZXJJbmRleCA9IE5VTEw7CisKKyAgICAgIGlmICggZmFjZS0+dmFyaWF0aW9uX3N1cHBvcnQgJiBUVF9GQUNFX0ZMQUdfVkFSX0ZWQVIgKQorICAgICAgeworICAgICAgICBGVF9VTG9uZyAgdmFyX2lkeF9tYXBfb2Zmc2V0LCB2YXJfc3RvcmVfb2Zmc2V0OworCisgICAgICAgIEZUX1NlcnZpY2VfTXVsdGlNYXN0ZXJzICBtbSA9IChGVF9TZXJ2aWNlX011bHRpTWFzdGVycylmYWNlLT5tbTsKKworCisgICAgICAgIHZhcl9pZHhfbWFwX29mZnNldCA9IEZUX05FWFRfVUxPTkcoIHAgKTsKKworICAgICAgICBpZiAoIHZhcl9pZHhfbWFwX29mZnNldCA+PSB0YWJsZV9zaXplICkKKyAgICAgICAgICBnb3RvIEludmFsaWRUYWJsZTsKKworICAgICAgICB2YXJfc3RvcmVfb2Zmc2V0ID0gRlRfTkVYVF9VTE9ORyggcCApOworICAgICAgICBpZiAoIHZhcl9zdG9yZV9vZmZzZXQgPj0gdGFibGVfc2l6ZSApCisgICAgICAgICAgZ290byBJbnZhbGlkVGFibGU7CisKKyAgICAgICAgaWYgKCB2YXJfc3RvcmVfb2Zmc2V0ICkKKyAgICAgICAgeworICAgICAgICAgIC8qIElmIHZhcmlhdGlvbiBpbmZvIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXQsIHRyeSBkb2luZyBzbywgKi8KKyAgICAgICAgICAvKiBvdGhlcndpc2UgbG9hZGluZyB0aGUgdmFyaWF0aW9uIHN0b3JlIHdpbGwgZmFpbCBhcyBpdCAgICAgICAgICovCisgICAgICAgICAgLyogcmVxdWlyZXMgYWNjZXNzIHRvIGBibGVuZGAgZm9yIGNoZWNraW5nIHRoZSBudW1iZXIgb2YgYXhlcy4gICAqLworICAgICAgICAgIGlmICggIWZhY2UtPmJsZW5kICkKKyAgICAgICAgICAgIGlmICggbW0tPmdldF9tbV92YXIoIEZUX0ZBQ0UoIGZhY2UgKSwgTlVMTCApICkKKyAgICAgICAgICAgICAgZ290byBJbnZhbGlkVGFibGU7CisKKyAgICAgICAgICAvKiBUcnkgbG9hZGluZyBgVmFySWR4TWFwYCBhbmQgYFZhclN0b3JlYC4gKi8KKyAgICAgICAgICBlcnJvciA9IG1tLT5sb2FkX2l0ZW1fdmFyX3N0b3JlKAorICAgICAgICAgICAgICAgICAgICBGVF9GQUNFKCBmYWNlICksCisgICAgICAgICAgICAgICAgICAgIGNvbHJfb2Zmc2V0X2luX3N0cmVhbSArIHZhcl9zdG9yZV9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICZjb2xyLT52YXJfc3RvcmUgKTsKKyAgICAgICAgICBpZiAoIGVycm9yICE9IEZUX0Vycl9PayApCisgICAgICAgICAgICBnb3RvIEludmFsaWRUYWJsZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggY29sci0+dmFyX3N0b3JlLmF4aXNDb3VudCAmJiB2YXJfaWR4X21hcF9vZmZzZXQgKQorICAgICAgICB7CisgICAgICAgICAgZXJyb3IgPSBtbS0+bG9hZF9kZWx0YV9zZXRfaWR4X21hcCgKKyAgICAgICAgICAgICAgICAgICAgRlRfRkFDRSggZmFjZSApLAorICAgICAgICAgICAgICAgICAgICBjb2xyX29mZnNldF9pbl9zdHJlYW0gKyB2YXJfaWR4X21hcF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICZjb2xyLT5kZWx0YV9zZXRfaWR4X21hcCwKKyAgICAgICAgICAgICAgICAgICAgJmNvbHItPnZhcl9zdG9yZSwKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfc2l6ZSApOworICAgICAgICAgIGlmICggZXJyb3IgIT0gRlRfRXJyX09rICkKKyAgICAgICAgICAgIGdvdG8gSW52YWxpZFRhYmxlOworICAgICAgICB9CisgICAgICB9CisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVCAqLwogICAgIH0KIAogICAgIGNvbHItPmJhc2VfZ2x5cGhzID0gKEZUX0J5dGUqKSggdGFibGUgKyBiYXNlX2dseXBoX29mZnNldCApOwpAQCAtMjU2LDYgKzM1NywxOCBAQAogICAgIHJldHVybiBGVF9FcnJfT2s7CiAKICAgSW52YWxpZFRhYmxlOgorI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQKKyAgICB7CisgICAgICBGVF9TZXJ2aWNlX011bHRpTWFzdGVycyAgbW0gPSAoRlRfU2VydmljZV9NdWx0aU1hc3RlcnMpZmFjZS0+bW07CisKKworICAgICAgbW0tPmRvbmVfZGVsdGFfc2V0X2lkeF9tYXAoIEZUX0ZBQ0UoIGZhY2UgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29sci0+ZGVsdGFfc2V0X2lkeF9tYXAgKTsKKyAgICAgIG1tLT5kb25lX2l0ZW1fdmFyX3N0b3JlKCBGVF9GQUNFKCBmYWNlICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbHItPnZhcl9zdG9yZSApOworICAgIH0KKyNlbmRpZgorCiAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9UYWJsZSApOwogCiAgIE5vQ29scjoKQEAgLTI3Nyw2ICszOTAsMTcgQEAKIAogICAgIGlmICggY29sciApCiAgICAgeworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQKKyAgICAgIHsKKyAgICAgICAgRlRfU2VydmljZV9NdWx0aU1hc3RlcnMgIG1tID0gKEZUX1NlcnZpY2VfTXVsdGlNYXN0ZXJzKWZhY2UtPm1tOworCisKKyAgICAgICAgbW0tPmRvbmVfZGVsdGFfc2V0X2lkeF9tYXAoIEZUX0ZBQ0UoIGZhY2UgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb2xyLT5kZWx0YV9zZXRfaWR4X21hcCApOworICAgICAgICBtbS0+ZG9uZV9pdGVtX3Zhcl9zdG9yZSggRlRfRkFDRSggZmFjZSApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbHItPnZhcl9zdG9yZSApOworICAgICAgfQorI2VuZGlmCiAgICAgICBGVF9GUkFNRV9SRUxFQVNFKCBjb2xyLT50YWJsZSApOwogICAgICAgRlRfRlJFRSggY29sciApOwogICAgIH0KQEAgLTM1OSw3ICs0ODMsOSBAQAogICAgICAgaXRlcmF0b3ItPnAgPSBjb2xyLT5sYXllcnMgKyBvZmZzZXQ7CiAgICAgfQogCi0gICAgaWYgKCBpdGVyYXRvci0+bGF5ZXIgPj0gaXRlcmF0b3ItPm51bV9sYXllcnMgKQorICAgIGlmICggaXRlcmF0b3ItPmxheWVyID49IGl0ZXJhdG9yLT5udW1fbGF5ZXJzICAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgIGl0ZXJhdG9yLT5wIDwgY29sci0+bGF5ZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICBpdGVyYXRvci0+cCA+PSAoIChGVF9CeXRlKiljb2xyLT50YWJsZSArIGNvbHItPnRhYmxlX3NpemUgKSApCiAgICAgICByZXR1cm4gMDsKIAogICAgICphZ2x5cGhfaW5kZXggPSBGVF9ORVhUX1VTSE9SVCggaXRlcmF0b3ItPnAgKTsKQEAgLTM3OSw3ICs1MDUsOCBAQAogICBzdGF0aWMgRlRfQm9vbAogICByZWFkX2NvbG9yX2xpbmUoIENvbHIqICAgICAgICAgIGNvbHIsCiAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgICAgY29sb3JfbGluZV9wLAotICAgICAgICAgICAgICAgICAgIEZUX0NvbG9yTGluZSogIGNvbG9ybGluZSkKKyAgICAgICAgICAgICAgICAgICBGVF9Db2xvckxpbmUqICBjb2xvcmxpbmUsCisgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICAgICAgcmVhZF92YXJpYWJsZSApCiAgIHsKICAgICBGVF9CeXRlKiAgICAgICAgcCA9IGNvbG9yX2xpbmVfcDsKICAgICBGVF9QYWludEV4dGVuZCAgcGFpbnRfZXh0ZW5kOwpAQCAtMzk2LDYgKzUyMyw3IEBACiAgICAgY29sb3JsaW5lLT5jb2xvcl9zdG9wX2l0ZXJhdG9yLm51bV9jb2xvcl9zdG9wcyAgICA9IEZUX05FWFRfVVNIT1JUKCBwICk7CiAgICAgY29sb3JsaW5lLT5jb2xvcl9zdG9wX2l0ZXJhdG9yLnAgICAgICAgICAgICAgICAgICA9IHA7CiAgICAgY29sb3JsaW5lLT5jb2xvcl9zdG9wX2l0ZXJhdG9yLmN1cnJlbnRfY29sb3Jfc3RvcCA9IDA7CisgICAgY29sb3JsaW5lLT5jb2xvcl9zdG9wX2l0ZXJhdG9yLnJlYWRfdmFyaWFibGUgICAgICA9IHJlYWRfdmFyaWFibGU7CiAKICAgICByZXR1cm4gMTsKICAgfQpAQCAtNDIxLDYgKzU0OSwxMCBAQAogICAgIGlmICggIWNoaWxkX3RhYmxlX3BvaW50ZXIgKQogICAgICAgcmV0dXJuIDA7CiAKKyAgICBpZiAoICpwIDwgY29sci0+cGFpbnRzX3N0YXJ0X3YxICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAqcCA+IChGVF9CeXRlKiljb2xyLT50YWJsZSArIGNvbHItPnRhYmxlX3NpemUgLSAxIC0gMyApCisgICAgICByZXR1cm4gMDsKKwogICAgIHBhaW50X29mZnNldCA9IEZUX05FWFRfVU9GRjMoICpwICk7CiAgICAgaWYgKCAhcGFpbnRfb2Zmc2V0ICkKICAgICAgIHJldHVybiAwOwpAQCAtNDM2LDIwICs1NjgsODUgQEAKICAgfQogCiAKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisKICAgc3RhdGljIEZUX0Jvb2wKLSAgcmVhZF9wYWludCggQ29sciogICAgICAgICAgIGNvbHIsCisgIGdldF9kZWx0YXNfZm9yX3Zhcl9pbmRleF9iYXNlICggVFRfRmFjZSAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xyKiAgICAgICAgICAgICBjb2xyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICAgICAgIHZhcl9pbmRleF9iYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgIG51bV9kZWx0YXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSXRlbVZhckRlbHRhKiAgZGVsdGFzICkKKyAgeworICAgIEZUX1VJbnQgICBvdXRlcl9pbmRleCAgICA9IDA7CisgICAgRlRfVUludCAgIGlubmVyX2luZGV4ICAgID0gMDsKKyAgICBGVF9VTG9uZyAgbG9vcF92YXJfaW5kZXggPSB2YXJfaW5kZXhfYmFzZTsKKworICAgIEZUX1NlcnZpY2VfTXVsdGlNYXN0ZXJzICBtbSA9IChGVF9TZXJ2aWNlX011bHRpTWFzdGVycylmYWNlLT5tbTsKKworICAgIEZUX1VJbnQgIGkgPSAwOworCisKKyAgICBpZiAoIHZhcl9pbmRleF9iYXNlID09IDB4RkZGRkZGRkYgKQorICAgIHsKKyAgICAgIGZvciAoIGkgPSAwOyBpIDwgbnVtX2RlbHRhczsgKytpICkKKyAgICAgICAgZGVsdGFzW2ldID0gMDsKKyAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGZvciAoIGkgPSAwOyBpIDwgbnVtX2RlbHRhczsgKytpICkKKyAgICB7CisgICAgICBsb29wX3Zhcl9pbmRleCA9IHZhcl9pbmRleF9iYXNlICsgaTsKKworICAgICAgaWYgKCBjb2xyLT5kZWx0YV9zZXRfaWR4X21hcC5pbm5lckluZGV4ICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBsb29wX3Zhcl9pbmRleCA+PSBjb2xyLT5kZWx0YV9zZXRfaWR4X21hcC5tYXBDb3VudCApCisgICAgICAgICAgbG9vcF92YXJfaW5kZXggPSBjb2xyLT5kZWx0YV9zZXRfaWR4X21hcC5tYXBDb3VudCAtIDE7CisKKyAgICAgICAgb3V0ZXJfaW5kZXggPSBjb2xyLT5kZWx0YV9zZXRfaWR4X21hcC5vdXRlckluZGV4W2xvb3BfdmFyX2luZGV4XTsKKyAgICAgICAgaW5uZXJfaW5kZXggPSBjb2xyLT5kZWx0YV9zZXRfaWR4X21hcC5pbm5lckluZGV4W2xvb3BfdmFyX2luZGV4XTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgb3V0ZXJfaW5kZXggPSAwOworICAgICAgICBpbm5lcl9pbmRleCA9IGxvb3BfdmFyX2luZGV4OworICAgICAgfQorCisgICAgICBkZWx0YXNbaV0gPSBtbS0+Z2V0X2l0ZW1fZGVsdGEoIEZUX0ZBQ0UoIGZhY2UgKSwgJmNvbHItPnZhcl9zdG9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJfaW5kZXgsIGlubmVyX2luZGV4ICk7CisgICAgfQorCisgICAgcmV0dXJuIDE7CisgIH0KKworI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQgKi8KKworCisgIHN0YXRpYyBGVF9Cb29sCisgIHJlYWRfcGFpbnQoIFRUX0ZhY2UgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICBDb2xyKiAgICAgICAgICAgY29sciwKICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgICAgIHAsCiAgICAgICAgICAgICAgIEZUX0NPTFJfUGFpbnQqICBhcGFpbnQgKQogICB7Ci0gICAgRlRfQnl0ZSogIHBhaW50X2Jhc2UgICAgID0gcDsKLSAgICBGVF9CeXRlKiAgY2hpbGRfdGFibGVfcCAgPSBOVUxMOworICAgIEZUX0J5dGUqICBwYWludF9iYXNlICAgID0gcDsKKyAgICBGVF9CeXRlKiAgY2hpbGRfdGFibGVfcCA9IE5VTEw7CisgICAgRlRfQm9vbCAgIGRvX3JlYWRfdmFyICAgPSBGQUxTRTsKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQKKyAgICBGVF9VTG9uZyAgICAgICAgIHZhcl9pbmRleF9iYXNlID0gMDsKKyAgICAvKiBMb25nZXN0IHZhckluZGV4QmFzZSBvZmZzZXQgaXMgNSBpbiB0aGUgc3BlYy4gKi8KKyAgICBGVF9JdGVtVmFyRGVsdGEgIGl0ZW1fZGVsdGFzWzZdID0geyAwLCAwLCAwLCAwLCAwLCAwIH07CisjZWxzZQorICAgIEZUX1VOVVNFRCggZmFjZSApOworI2VuZGlmCiAKIAogICAgIGlmICggIXAgfHwgIWNvbHIgfHwgIWNvbHItPnRhYmxlICkKICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKCBwIDwgY29sci0+cGFpbnRzX3N0YXJ0X3YxICAgICAgICAgICAgICAgICAgICAgICAgIHx8Ci0gICAgICAgICBwID49ICggKEZUX0J5dGUqKWNvbHItPnRhYmxlICsgY29sci0+dGFibGVfc2l6ZSApICkKKyAgICAvKiBUaGUgbGFzdCBieXRlIG9mIHRoZSAnQ09MUicgdGFibGUgaXMgYXQgJ3NpemUtMSc7IHN1YnRyYWN0IDEgb2YgICAgKi8KKyAgICAvKiB0aGF0IHRvIGFjY291bnQgZm9yIHRoZSBleHBlY3RlZCBmb3JtYXQgYnl0ZSB3ZSBhcmUgZ29pbmcgdG8gcmVhZC4gKi8KKyAgICBpZiAoIHAgPCBjb2xyLT5wYWludHNfc3RhcnRfdjEgICAgICAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgcCA+IChGVF9CeXRlKiljb2xyLT50YWJsZSArIGNvbHItPnRhYmxlX3NpemUgLSAyICkKICAgICAgIHJldHVybiAwOwogCiAgICAgYXBhaW50LT5mb3JtYXQgPSAoRlRfUGFpbnRGb3JtYXQpRlRfTkVYVF9CWVRFKCBwICk7CkBAIC00ODMsMTIgKzY4MCwzMSBAQAogICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAgZWxzZSBpZiAoIGFwYWludC0+Zm9ybWF0ID09IEZUX0NPTFJfUEFJTlRGT1JNQVRfU09MSUQgKQorICAgIGVsc2UgaWYgKCBhcGFpbnQtPmZvcm1hdCA9PSBGVF9DT0xSX1BBSU5URk9STUFUX1NPTElEIHx8CisgICAgICAgICAgICAgIChGVF9QYWludEZvcm1hdF9JbnRlcm5hbClhcGFpbnQtPmZvcm1hdCA9PQorICAgICAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9TT0xJRCAgICkKICAgICB7CiAgICAgICBFTlNVUkVfUkVBRF9CWVRFUyggNCApOwogICAgICAgYXBhaW50LT51LnNvbGlkLmNvbG9yLnBhbGV0dGVfaW5kZXggPSBGVF9ORVhUX1VTSE9SVCggcCApOwogICAgICAgYXBhaW50LT51LnNvbGlkLmNvbG9yLmFscGhhICAgICAgICAgPSBGVF9ORVhUX1NIT1JUKCBwICk7CiAKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisgICAgICBpZiAoIChGVF9QYWludEZvcm1hdF9JbnRlcm5hbClhcGFpbnQtPmZvcm1hdCA9PQorICAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9TT0xJRCApCisgICAgICB7CisgICAgICAgIEVOU1VSRV9SRUFEX0JZVEVTKCA0ICk7CisgICAgICAgIHZhcl9pbmRleF9iYXNlID0gRlRfTkVYVF9VTE9ORyggcCApOworCisgICAgICAgIGlmICggIWdldF9kZWx0YXNfZm9yX3Zhcl9pbmRleF9iYXNlKCBmYWNlLCBjb2xyLCB2YXJfaW5kZXhfYmFzZSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1fZGVsdGFzICkgKQorICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGFwYWludC0+dS5zb2xpZC5jb2xvci5hbHBoYSArPSBpdGVtX2RlbHRhc1swXTsKKyAgICAgIH0KKyNlbmRpZgorCisgICAgICBhcGFpbnQtPmZvcm1hdCA9IEZUX0NPTFJfUEFJTlRGT1JNQVRfU09MSUQ7CisKICAgICAgIHJldHVybiAxOwogICAgIH0KIApAQCAtNTEwLDE2ICs3MjYsMjEgQEAKICAgICBpZiAoICFnZXRfY2hpbGRfdGFibGVfcG9pbnRlciggY29sciwgcGFpbnRfYmFzZSwgJnAsICZjaGlsZF90YWJsZV9wICkgKQogICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoIGFwYWludC0+Zm9ybWF0ID09IEZUX0NPTFJfUEFJTlRGT1JNQVRfTElORUFSX0dSQURJRU5UICkKKyAgICBpZiAoIGFwYWludC0+Zm9ybWF0ID09IEZUX0NPTFJfUEFJTlRGT1JNQVRfTElORUFSX0dSQURJRU5UICAgICAgfHwKKyAgICAgICAgICggZG9fcmVhZF92YXIgPQorICAgICAgICAgICAgICggKEZUX1BhaW50Rm9ybWF0X0ludGVybmFsKWFwYWludC0+Zm9ybWF0ID09CisgICAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9MSU5FQVJfR1JBRElFTlQgKSApICkKICAgICB7CiAgICAgICBpZiAoICFyZWFkX2NvbG9yX2xpbmUoIGNvbHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX3RhYmxlX3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcGFpbnQtPnUubGluZWFyX2dyYWRpZW50LmNvbG9ybGluZSkgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXBhaW50LT51LmxpbmVhcl9ncmFkaWVudC5jb2xvcmxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX3JlYWRfdmFyICkgKQogICAgICAgICByZXR1cm4gMDsKIAogICAgICAgLyoKLSAgICAgICAqIEluIG9yZGVyIHRvIHN1cHBvcnQgdmFyaWF0aW9ucyBleHBvc2UgdGhlc2UgYXMgRlRfRml4ZWQgMTYuMTYgdmFsdWVzIHNvCi0gICAgICAgKiB0aGF0IHdlIGNhbiBzdXBwb3J0IGZyYWN0aW9uYWwgdmFsdWVzIGFmdGVyIGludGVycG9sYXRpb24uCisgICAgICAgKiBJbiBvcmRlciB0byBzdXBwb3J0IHZhcmlhdGlvbnMgZXhwb3NlIHRoZXNlIGFzIEZUX0ZpeGVkIDE2LjE2CisgICAgICAgKiB2YWx1ZXMgc28gdGhhdCB3ZSBjYW4gc3VwcG9ydCBmcmFjdGlvbmFsIHZhbHVlcyBhZnRlcgorICAgICAgICogaW50ZXJwb2xhdGlvbi4KICAgICAgICAqLwogICAgICAgRU5TVVJFX1JFQURfQllURVMoIDEyICk7CiAgICAgICBhcGFpbnQtPnUubGluZWFyX2dyYWRpZW50LnAwLnggPSBJTlRfVE9fRklYRUQoIEZUX05FWFRfU0hPUlQoIHAgKSApOwpAQCAtNTI5LDE5ICs3NTAsNDUgQEAKICAgICAgIGFwYWludC0+dS5saW5lYXJfZ3JhZGllbnQucDIueCA9IElOVF9UT19GSVhFRCggRlRfTkVYVF9TSE9SVCggcCApICk7CiAgICAgICBhcGFpbnQtPnUubGluZWFyX2dyYWRpZW50LnAyLnkgPSBJTlRfVE9fRklYRUQoIEZUX05FWFRfU0hPUlQoIHAgKSApOwogCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVAorICAgICAgaWYgKCBkb19yZWFkX3ZhciApCisgICAgICB7CisgICAgICAgIEVOU1VSRV9SRUFEX0JZVEVTKCA0ICk7CisgICAgICAgIHZhcl9pbmRleF9iYXNlID0gRlRfTkVYVF9VTE9ORyAoIHAgKTsKKworICAgICAgICBpZiAoICFnZXRfZGVsdGFzX2Zvcl92YXJfaW5kZXhfYmFzZSggZmFjZSwgY29sciwgdmFyX2luZGV4X2Jhc2UsIDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtX2RlbHRhcyApICkKKyAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBhcGFpbnQtPnUubGluZWFyX2dyYWRpZW50LnAwLnggKz0gSU5UX1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1swXSApOworICAgICAgICBhcGFpbnQtPnUubGluZWFyX2dyYWRpZW50LnAwLnkgKz0gSU5UX1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1sxXSApOworICAgICAgICBhcGFpbnQtPnUubGluZWFyX2dyYWRpZW50LnAxLnggKz0gSU5UX1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1syXSApOworICAgICAgICBhcGFpbnQtPnUubGluZWFyX2dyYWRpZW50LnAxLnkgKz0gSU5UX1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1szXSApOworICAgICAgICBhcGFpbnQtPnUubGluZWFyX2dyYWRpZW50LnAyLnggKz0gSU5UX1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1s0XSApOworICAgICAgICBhcGFpbnQtPnUubGluZWFyX2dyYWRpZW50LnAyLnkgKz0gSU5UX1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1s1XSApOworICAgICAgfQorI2VuZGlmCisKKyAgICAgIGFwYWludC0+Zm9ybWF0ID0gRlRfQ09MUl9QQUlOVEZPUk1BVF9MSU5FQVJfR1JBRElFTlQ7CisKICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIGVsc2UgaWYgKCBhcGFpbnQtPmZvcm1hdCA9PSBGVF9DT0xSX1BBSU5URk9STUFUX1JBRElBTF9HUkFESUVOVCApCisgICAgZWxzZSBpZiAoIGFwYWludC0+Zm9ybWF0ID09IEZUX0NPTFJfUEFJTlRGT1JNQVRfUkFESUFMX0dSQURJRU5UICAgICAgfHwKKyAgICAgICAgICAgICAgKCBkb19yZWFkX3ZhciA9CisgICAgICAgICAgICAgICAgICAoIChGVF9QYWludEZvcm1hdF9JbnRlcm5hbClhcGFpbnQtPmZvcm1hdCA9PQorICAgICAgICAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9SQURJQUxfR1JBRElFTlQgKSApICkKICAgICB7CiAgICAgICBGVF9Qb3MgIHRtcDsKIAogCiAgICAgICBpZiAoICFyZWFkX2NvbG9yX2xpbmUoIGNvbHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX3RhYmxlX3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcGFpbnQtPnUucmFkaWFsX2dyYWRpZW50LmNvbG9ybGluZSkgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXBhaW50LT51LnJhZGlhbF9ncmFkaWVudC5jb2xvcmxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX3JlYWRfdmFyICkgKQogICAgICAgICByZXR1cm4gMDsKIAorCiAgICAgICAvKiBJbiB0aGUgT3BlblR5cGUgc3BlY2lmaWNhdGlvbiwgYHIwYCBhbmQgYHIxYCBhcmUgZGVmaW5lZCBhcyAgICovCiAgICAgICAvKiBgVUZXT1JEYC4gIFNpbmNlIEZyZWVUeXBlIGRvZXNuJ3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgMTYuMTYgICovCiAgICAgICAvKiBmb3JtYXQgd2UgY29udmVydCB0byBgRldPUkRgIGFuZCByZXBsYWNlIG5lZ2F0aXZlIHZhbHVlcyB3aXRoICovCkBAIC01NTIsMjEgKzc5OSw1MiBAQAogICAgICAgYXBhaW50LT51LnJhZGlhbF9ncmFkaWVudC5jMC54ID0gSU5UX1RPX0ZJWEVEKCBGVF9ORVhUX1NIT1JUKCBwICkgKTsKICAgICAgIGFwYWludC0+dS5yYWRpYWxfZ3JhZGllbnQuYzAueSA9IElOVF9UT19GSVhFRCggRlRfTkVYVF9TSE9SVCggcCApICk7CiAKLSAgICAgIGFwYWludC0+dS5yYWRpYWxfZ3JhZGllbnQucjAgPSBGVF9ORVhUX1VTSE9SVCggcCApIDw8IDE2OworICAgICAgdG1wICAgICAgICAgICAgICAgICAgICAgICAgICA9IElOVF9UT19GSVhFRCggRlRfTkVYVF9TSE9SVCggcCApICk7CisgICAgICBhcGFpbnQtPnUucmFkaWFsX2dyYWRpZW50LnIwID0gdG1wIDwgMCA/IEZUX0lOVF9NQVggOiB0bXA7CiAKICAgICAgIGFwYWludC0+dS5yYWRpYWxfZ3JhZGllbnQuYzEueCA9IElOVF9UT19GSVhFRCggRlRfTkVYVF9TSE9SVCggcCApICk7CiAgICAgICBhcGFpbnQtPnUucmFkaWFsX2dyYWRpZW50LmMxLnkgPSBJTlRfVE9fRklYRUQoIEZUX05FWFRfU0hPUlQoIHAgKSApOwogCi0gICAgICBhcGFpbnQtPnUucmFkaWFsX2dyYWRpZW50LnIxID0gRlRfTkVYVF9VU0hPUlQoIHAgKSA8PCAxNjsKKyAgICAgIHRtcCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBJTlRfVE9fRklYRUQoIEZUX05FWFRfU0hPUlQoIHAgKSApOworICAgICAgYXBhaW50LT51LnJhZGlhbF9ncmFkaWVudC5yMSA9IHRtcCA8IDAgPyBGVF9JTlRfTUFYIDogdG1wOworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVAorICAgICAgaWYgKCBkb19yZWFkX3ZhciApCisgICAgICB7CisgICAgICAgIEVOU1VSRV9SRUFEX0JZVEVTKCA0ICk7CisgICAgICAgIHZhcl9pbmRleF9iYXNlID0gRlRfTkVYVF9VTE9ORyAoIHAgKTsKKworICAgICAgICBpZiAoICFnZXRfZGVsdGFzX2Zvcl92YXJfaW5kZXhfYmFzZSggZmFjZSwgY29sciwgdmFyX2luZGV4X2Jhc2UsIDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtX2RlbHRhcyApICkKKyAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBhcGFpbnQtPnUucmFkaWFsX2dyYWRpZW50LmMwLnggKz0gSU5UX1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1swXSApOworICAgICAgICBhcGFpbnQtPnUucmFkaWFsX2dyYWRpZW50LmMwLnkgKz0gSU5UX1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1sxXSApOworCisgICAgICAgIC8vIFRPRE86IEFueXRoaW5nIHRvIGJlIGRvbmUgYWJvdXQgVUZXT1JEIGRlbHRhcyBoZXJlPworICAgICAgICBhcGFpbnQtPnUucmFkaWFsX2dyYWRpZW50LnIwICs9IElOVF9UT19GSVhFRCggaXRlbV9kZWx0YXNbMl0gKTsKKworICAgICAgICBhcGFpbnQtPnUucmFkaWFsX2dyYWRpZW50LmMxLnggKz0gSU5UX1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1szXSApOworICAgICAgICBhcGFpbnQtPnUucmFkaWFsX2dyYWRpZW50LmMxLnkgKz0gSU5UX1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1s0XSApOworCisgICAgICAgIGFwYWludC0+dS5yYWRpYWxfZ3JhZGllbnQucjEgKz0gSU5UX1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1s1XSApOworICAgICAgfQorI2VuZGlmCisKKyAgICAgIGFwYWludC0+Zm9ybWF0ID0gRlRfQ09MUl9QQUlOVEZPUk1BVF9SQURJQUxfR1JBRElFTlQ7CiAKICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIGVsc2UgaWYgKCBhcGFpbnQtPmZvcm1hdCA9PSBGVF9DT0xSX1BBSU5URk9STUFUX1NXRUVQX0dSQURJRU5UICkKKyAgICBlbHNlIGlmICggYXBhaW50LT5mb3JtYXQgPT0gRlRfQ09MUl9QQUlOVEZPUk1BVF9TV0VFUF9HUkFESUVOVCAgICAgIHx8CisgICAgICAgICAgICAgICggZG9fcmVhZF92YXIgPQorICAgICAgICAgICAgICAgICAgKCAoRlRfUGFpbnRGb3JtYXRfSW50ZXJuYWwpYXBhaW50LT5mb3JtYXQgPT0KKyAgICAgICAgICAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9WQVJfU1dFRVBfR1JBRElFTlQgKSApICkKICAgICB7CiAgICAgICBpZiAoICFyZWFkX2NvbG9yX2xpbmUoIGNvbHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX3RhYmxlX3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcGFpbnQtPnUuc3dlZXBfZ3JhZGllbnQuY29sb3JsaW5lKSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcGFpbnQtPnUuc3dlZXBfZ3JhZGllbnQuY29sb3JsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19yZWFkX3ZhcikgKQogICAgICAgICByZXR1cm4gMDsKIAogICAgICAgRU5TVVJFX1JFQURfQllURVMoIDggKTsKQEAgLTU4MSw2ICs4NTksMjggQEAKICAgICAgIGFwYWludC0+dS5zd2VlcF9ncmFkaWVudC5lbmRfYW5nbGUgPQogICAgICAgICAgIEYyRE9UMTRfVE9fRklYRUQoIEZUX05FWFRfU0hPUlQoIHAgKSApOwogCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVAorICAgICAgaWYgKCBkb19yZWFkX3ZhciApCisgICAgICB7CisgICAgICAgIEVOU1VSRV9SRUFEX0JZVEVTKCA0ICk7CisgICAgICAgIHZhcl9pbmRleF9iYXNlID0gRlRfTkVYVF9VTE9ORyAoIHAgKTsKKworICAgICAgICBpZiAoICFnZXRfZGVsdGFzX2Zvcl92YXJfaW5kZXhfYmFzZSggZmFjZSwgY29sciwgdmFyX2luZGV4X2Jhc2UsIDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtX2RlbHRhcyApICkKKyAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAvLyBUT0RPOiBIYW5kbGUgb3ZlcmZsb3c/CisgICAgICAgIGFwYWludC0+dS5zd2VlcF9ncmFkaWVudC5jZW50ZXIueCArPSBJTlRfVE9fRklYRUQoIGl0ZW1fZGVsdGFzWzBdICk7CisgICAgICAgIGFwYWludC0+dS5zd2VlcF9ncmFkaWVudC5jZW50ZXIueSArPSBJTlRfVE9fRklYRUQoIGl0ZW1fZGVsdGFzWzFdICk7CisKKyAgICAgICAgYXBhaW50LT51LnN3ZWVwX2dyYWRpZW50LnN0YXJ0X2FuZ2xlICs9CisgICAgICAgICAgRjJET1QxNF9UT19GSVhFRCggaXRlbV9kZWx0YXNbMl0gKTsKKyAgICAgICAgYXBhaW50LT51LnN3ZWVwX2dyYWRpZW50LmVuZF9hbmdsZSArPQorICAgICAgICAgIEYyRE9UMTRfVE9fRklYRUQoIGl0ZW1fZGVsdGFzWzNdICk7CisgICAgICB9CisjZW5kaWYKKyAgICAgIGFwYWludC0+Zm9ybWF0ID0gRlRfQ09MUl9QQUlOVEZPUk1BVF9TV0VFUF9HUkFESUVOVDsKKwogICAgICAgcmV0dXJuIDE7CiAgICAgfQogCkBAIC01OTQsNyArODk0LDkgQEAKICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIGVsc2UgaWYgKCBhcGFpbnQtPmZvcm1hdCA9PSBGVF9DT0xSX1BBSU5URk9STUFUX1RSQU5TRk9STSApCisgICAgZWxzZSBpZiAoIGFwYWludC0+Zm9ybWF0ID09IEZUX0NPTFJfUEFJTlRGT1JNQVRfVFJBTlNGT1JNIHx8CisgICAgICAgICAgICAgIChGVF9QYWludEZvcm1hdF9JbnRlcm5hbClhcGFpbnQtPmZvcm1hdCA9PQorICAgICAgICAgICAgICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfVkFSX1RSQU5TRk9STSAgICApCiAgICAgewogICAgICAgYXBhaW50LT51LnRyYW5zZm9ybS5wYWludC5wICAgICAgICAgICAgICAgICAgICAgPSBjaGlsZF90YWJsZV9wOwogICAgICAgYXBhaW50LT51LnRyYW5zZm9ybS5wYWludC5pbnNlcnRfcm9vdF90cmFuc2Zvcm0gPSAwOwpAQCAtNjE2LDEwICs5MTgsMzQgQEAKICAgICAgIGFwYWludC0+dS50cmFuc2Zvcm0uYWZmaW5lLmR4ID0gRlRfTkVYVF9MT05HKCBwICk7CiAgICAgICBhcGFpbnQtPnUudHJhbnNmb3JtLmFmZmluZS5keSA9IEZUX05FWFRfTE9ORyggcCApOwogCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVAorICAgICAgaWYgKCAoRlRfUGFpbnRGb3JtYXRfSW50ZXJuYWwpYXBhaW50LT5mb3JtYXQgPT0KKyAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9UUkFOU0ZPUk0gKQorICAgICAgeworICAgICAgICBFTlNVUkVfUkVBRF9CWVRFUyggNCApOworICAgICAgICB2YXJfaW5kZXhfYmFzZSA9IEZUX05FWFRfVUxPTkcoIHAgKTsKKworICAgICAgICBpZiAoICFnZXRfZGVsdGFzX2Zvcl92YXJfaW5kZXhfYmFzZSggZmFjZSwgY29sciwgdmFyX2luZGV4X2Jhc2UsIDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtX2RlbHRhcyApICkKKyAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBhcGFpbnQtPnUudHJhbnNmb3JtLmFmZmluZS54eCArPSAoRlRfRml4ZWQpaXRlbV9kZWx0YXNbMF07CisgICAgICAgIGFwYWludC0+dS50cmFuc2Zvcm0uYWZmaW5lLnl4ICs9IChGVF9GaXhlZClpdGVtX2RlbHRhc1sxXTsKKyAgICAgICAgYXBhaW50LT51LnRyYW5zZm9ybS5hZmZpbmUueHkgKz0gKEZUX0ZpeGVkKWl0ZW1fZGVsdGFzWzJdOworICAgICAgICBhcGFpbnQtPnUudHJhbnNmb3JtLmFmZmluZS55eSArPSAoRlRfRml4ZWQpaXRlbV9kZWx0YXNbM107CisgICAgICAgIGFwYWludC0+dS50cmFuc2Zvcm0uYWZmaW5lLmR4ICs9IChGVF9GaXhlZClpdGVtX2RlbHRhc1s0XTsKKyAgICAgICAgYXBhaW50LT51LnRyYW5zZm9ybS5hZmZpbmUuZHkgKz0gKEZUX0ZpeGVkKWl0ZW1fZGVsdGFzWzVdOworICAgICAgfQorI2VuZGlmCisKKyAgICAgIGFwYWludC0+Zm9ybWF0ID0gRlRfQ09MUl9QQUlOVEZPUk1BVF9UUkFOU0ZPUk07CisKICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIGVsc2UgaWYgKCBhcGFpbnQtPmZvcm1hdCA9PSBGVF9DT0xSX1BBSU5URk9STUFUX1RSQU5TTEFURSApCisgICAgZWxzZSBpZiAoIGFwYWludC0+Zm9ybWF0ID09IEZUX0NPTFJfUEFJTlRGT1JNQVRfVFJBTlNMQVRFIHx8CisgICAgICAgICAgICAgIChGVF9QYWludEZvcm1hdF9JbnRlcm5hbClhcGFpbnQtPmZvcm1hdCA9PQorICAgICAgICAgICAgICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfVkFSX1RSQU5TTEFURSAgICApCiAgICAgewogICAgICAgYXBhaW50LT51LnRyYW5zbGF0ZS5wYWludC5wICAgICAgICAgICAgICAgICAgICAgPSBjaGlsZF90YWJsZV9wOwogICAgICAgYXBhaW50LT51LnRyYW5zbGF0ZS5wYWludC5pbnNlcnRfcm9vdF90cmFuc2Zvcm0gPSAwOwpAQCAtNjI4LDE3ICs5NTQsMzAgQEAKICAgICAgIGFwYWludC0+dS50cmFuc2xhdGUuZHggPSBJTlRfVE9fRklYRUQoIEZUX05FWFRfU0hPUlQoIHAgKSApOwogICAgICAgYXBhaW50LT51LnRyYW5zbGF0ZS5keSA9IElOVF9UT19GSVhFRCggRlRfTkVYVF9TSE9SVCggcCApICk7CiAKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisgICAgICBpZiAoIChGVF9QYWludEZvcm1hdF9JbnRlcm5hbClhcGFpbnQtPmZvcm1hdCA9PQorICAgICAgICAgICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfVkFSX1RSQU5TTEFURSApCisgICAgICB7CisgICAgICAgIEVOU1VSRV9SRUFEX0JZVEVTKCA0ICk7CisgICAgICAgIHZhcl9pbmRleF9iYXNlID0gRlRfTkVYVF9VTE9ORyggcCApOworCisgICAgICAgIGlmICggIWdldF9kZWx0YXNfZm9yX3Zhcl9pbmRleF9iYXNlKCBmYWNlLCBjb2xyLCB2YXJfaW5kZXhfYmFzZSwgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1fZGVsdGFzICkgKQorICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGFwYWludC0+dS50cmFuc2xhdGUuZHggKz0gSU5UX1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1swXSApOworICAgICAgICBhcGFpbnQtPnUudHJhbnNsYXRlLmR5ICs9IElOVF9UT19GSVhFRCggaXRlbV9kZWx0YXNbMV0gKTsKKyAgICAgIH0KKyNlbmRpZgorCisgICAgICBhcGFpbnQtPmZvcm1hdCA9IEZUX0NPTFJfUEFJTlRGT1JNQVRfVFJBTlNMQVRFOworCiAgICAgICByZXR1cm4gMTsKICAgICB9CiAKLSAgICBlbHNlIGlmICggYXBhaW50LT5mb3JtYXQgPT0KLSAgICAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX1NDQUxFICAgICAgICAgICAgICAgICAgICAgICAgIHx8Ci0gICAgICAgICAgICAgIChGVF9QYWludEZvcm1hdF9JbnRlcm5hbClhcGFpbnQtPmZvcm1hdCA9PQotICAgICAgICAgICAgICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfU0NBTEVfQ0VOVEVSICAgICAgICAgfHwKLSAgICAgICAgICAgICAgKEZUX1BhaW50Rm9ybWF0X0ludGVybmFsKWFwYWludC0+Zm9ybWF0ID09Ci0gICAgICAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9TQ0FMRV9VTklGT1JNICAgICAgICB8fAotICAgICAgICAgICAgICAoRlRfUGFpbnRGb3JtYXRfSW50ZXJuYWwpYXBhaW50LT5mb3JtYXQgPT0KLSAgICAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1NDQUxFX1VOSUZPUk1fQ0VOVEVSICkKKyAgICBlbHNlIGlmICggYXBhaW50LT5mb3JtYXQgPj0gRlRfQ09MUl9QQUlOVEZPUk1BVF9TQ0FMRSAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICAoRlRfUGFpbnRGb3JtYXRfSW50ZXJuYWwpYXBhaW50LT5mb3JtYXQgPD0KKyAgICAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9TQ0FMRV9VTklGT1JNX0NFTlRFUiApCiAgICAgewogICAgICAgYXBhaW50LT51LnNjYWxlLnBhaW50LnAgICAgICAgICAgICAgICAgICAgICA9IGNoaWxkX3RhYmxlX3A7CiAgICAgICBhcGFpbnQtPnUuc2NhbGUucGFpbnQuaW5zZXJ0X3Jvb3RfdHJhbnNmb3JtID0gMDsKQEAgLTY0OCwxMCArOTg3LDEzIEBACiAgICAgICBhcGFpbnQtPnUuc2NhbGUuc2NhbGVfeCA9IEYyRE9UMTRfVE9fRklYRUQoIEZUX05FWFRfU0hPUlQoIHAgKSApOwogCiAgICAgICAvKiBOb24tdW5pZm9ybSBvbmVzIHJlYWQgYW4gZXh0cmEgeSB2YWx1ZS4gKi8KLSAgICAgIGlmICggYXBhaW50LT5mb3JtYXQgPT0KLSAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX1NDQUxFICAgICAgICAgICAgICAgICB8fAorICAgICAgaWYgKCBhcGFpbnQtPmZvcm1hdCA9PSBGVF9DT0xSX1BBSU5URk9STUFUX1NDQUxFICAgICB8fAogICAgICAgICAgICAoRlRfUGFpbnRGb3JtYXRfSW50ZXJuYWwpYXBhaW50LT5mb3JtYXQgPT0KLSAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1NDQUxFX0NFTlRFUiApCisgICAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9WQVJfU0NBTEUgICAgICAgIHx8CisgICAgICAgICAgIChGVF9QYWludEZvcm1hdF9JbnRlcm5hbClhcGFpbnQtPmZvcm1hdCA9PQorICAgICAgICAgICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfU0NBTEVfQ0VOVEVSICAgICB8fAorICAgICAgICAgICAoRlRfUGFpbnRGb3JtYXRfSW50ZXJuYWwpYXBhaW50LT5mb3JtYXQgPT0KKyAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9TQ0FMRV9DRU5URVIgKQogICAgICAgewogICAgICAgICBFTlNVUkVfUkVBRF9CWVRFUyggMiApOwogICAgICAgICBhcGFpbnQtPnUuc2NhbGUuc2NhbGVfeSA9IEYyRE9UMTRfVE9fRklYRUQoIEZUX05FWFRfU0hPUlQoIHAgKSApOwpAQCAtNjYyLDkgKzEwMDQsMTMgQEAKICAgICAgIC8qIFNjYWxlIHBhaW50cyB0aGF0IGhhdmUgYSBjZW50ZXIgcmVhZCBjZW50ZXIgY29vcmRpbmF0ZXMsICovCiAgICAgICAvKiBvdGhlcndpc2UgdGhlIGNlbnRlciBpcyAoMCwwKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgICAgaWYgKCAoRlRfUGFpbnRGb3JtYXRfSW50ZXJuYWwpYXBhaW50LT5mb3JtYXQgPT0KLSAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1NDQUxFX0NFTlRFUiAgICAgICAgIHx8CisgICAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9TQ0FMRV9DRU5URVIgICAgICAgICAgICAgfHwKICAgICAgICAgICAgKEZUX1BhaW50Rm9ybWF0X0ludGVybmFsKWFwYWludC0+Zm9ybWF0ID09Ci0gICAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9TQ0FMRV9VTklGT1JNX0NFTlRFUiApCisgICAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9WQVJfU0NBTEVfQ0VOVEVSICAgICAgICAgfHwKKyAgICAgICAgICAgKEZUX1BhaW50Rm9ybWF0X0ludGVybmFsKWFwYWludC0+Zm9ybWF0ID09CisgICAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9TQ0FMRV9VTklGT1JNX0NFTlRFUiAgICAgfHwKKyAgICAgICAgICAgKEZUX1BhaW50Rm9ybWF0X0ludGVybmFsKWFwYWludC0+Zm9ybWF0ID09CisgICAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9WQVJfU0NBTEVfVU5JRk9STV9DRU5URVIgKQogICAgICAgewogICAgICAgICBFTlNVUkVfUkVBRF9CWVRFUyggNCApOwogICAgICAgICBhcGFpbnQtPnUuc2NhbGUuY2VudGVyX3ggPSBJTlRfVE9fRklYRUQoIEZUX05FWFRfU0hPUlQgKCBwICkgKTsKQEAgLTY3Niw2ICsxMDIyLDcxIEBACiAgICAgICAgIGFwYWludC0+dS5zY2FsZS5jZW50ZXJfeSA9IDA7CiAgICAgICB9CiAKKyAgICAgIC8qIEJhc2UgdmFsdWVzIHNldCwgbm93IGhhbmRsZSB2YXJpYXRpb25zLiAqLworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVAorICAgICAgaWYgKCAoRlRfUGFpbnRGb3JtYXRfSW50ZXJuYWwpYXBhaW50LT5mb3JtYXQgPT0KKyAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9TQ0FMRSAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAoRlRfUGFpbnRGb3JtYXRfSW50ZXJuYWwpYXBhaW50LT5mb3JtYXQgPT0KKyAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9TQ0FMRV9DRU5URVIgICAgICAgICB8fAorICAgICAgICAgICAoRlRfUGFpbnRGb3JtYXRfSW50ZXJuYWwpYXBhaW50LT5mb3JtYXQgPT0KKyAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9TQ0FMRV9VTklGT1JNICAgICAgICB8fAorICAgICAgICAgICAoRlRfUGFpbnRGb3JtYXRfSW50ZXJuYWwpYXBhaW50LT5mb3JtYXQgPT0KKyAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9TQ0FMRV9VTklGT1JNX0NFTlRFUiApCisgICAgICB7CisgICAgICAgIEVOU1VSRV9SRUFEX0JZVEVTKCA0ICk7CisgICAgICAgIHZhcl9pbmRleF9iYXNlID0gRlRfTkVYVF9VTE9ORyggcCApOworCisgICAgICAgIGlmICggKEZUX1BhaW50Rm9ybWF0X0ludGVybmFsKWFwYWludC0+Zm9ybWF0ID09CisgICAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9TQ0FMRSApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoICFnZXRfZGVsdGFzX2Zvcl92YXJfaW5kZXhfYmFzZSggZmFjZSwgY29sciwgdmFyX2luZGV4X2Jhc2UsIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1fZGVsdGFzICkgKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICBhcGFpbnQtPnUuc2NhbGUuc2NhbGVfeCArPSBGMkRPVDE0X1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1swXSApOworICAgICAgICAgIGFwYWludC0+dS5zY2FsZS5zY2FsZV95ICs9IEYyRE9UMTRfVE9fRklYRUQoIGl0ZW1fZGVsdGFzWzFdICk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIChGVF9QYWludEZvcm1hdF9JbnRlcm5hbClhcGFpbnQtPmZvcm1hdCA9PQorICAgICAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9WQVJfU0NBTEVfQ0VOVEVSICkKKyAgICAgICAgeworICAgICAgICAgIGlmICggIWdldF9kZWx0YXNfZm9yX3Zhcl9pbmRleF9iYXNlKCBmYWNlLCBjb2xyLCB2YXJfaW5kZXhfYmFzZSwgNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV9kZWx0YXMgKSApCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgIGFwYWludC0+dS5zY2FsZS5zY2FsZV94ICArPSBGMkRPVDE0X1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1swXSApOworICAgICAgICAgIGFwYWludC0+dS5zY2FsZS5zY2FsZV95ICArPSBGMkRPVDE0X1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1sxXSApOworICAgICAgICAgIGFwYWludC0+dS5zY2FsZS5jZW50ZXJfeCArPSBJTlRfVE9fRklYRUQoIGl0ZW1fZGVsdGFzWzJdICk7CisgICAgICAgICAgYXBhaW50LT51LnNjYWxlLmNlbnRlcl95ICs9IElOVF9UT19GSVhFRCggaXRlbV9kZWx0YXNbM10gKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggKEZUX1BhaW50Rm9ybWF0X0ludGVybmFsKWFwYWludC0+Zm9ybWF0ID09CisgICAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9TQ0FMRV9VTklGT1JNICkKKyAgICAgICAgeworICAgICAgICAgIGlmICggIWdldF9kZWx0YXNfZm9yX3Zhcl9pbmRleF9iYXNlKCBmYWNlLCBjb2xyLCB2YXJfaW5kZXhfYmFzZSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV9kZWx0YXMgKSApCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgIGFwYWludC0+dS5zY2FsZS5zY2FsZV94ICs9IEYyRE9UMTRfVE9fRklYRUQoIGl0ZW1fZGVsdGFzWzBdICk7CisgICAgICAgICAgYXBhaW50LT51LnNjYWxlLnNjYWxlX3kgKz0gRjJET1QxNF9UT19GSVhFRCggaXRlbV9kZWx0YXNbMF0gKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggKEZUX1BhaW50Rm9ybWF0X0ludGVybmFsKWFwYWludC0+Zm9ybWF0ID09CisgICAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9TQ0FMRV9VTklGT1JNX0NFTlRFUiApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoICFnZXRfZGVsdGFzX2Zvcl92YXJfaW5kZXhfYmFzZSggZmFjZSwgY29sciwgdmFyX2luZGV4X2Jhc2UsIDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1fZGVsdGFzICkgKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICBhcGFpbnQtPnUuc2NhbGUuc2NhbGVfeCAgKz0gRjJET1QxNF9UT19GSVhFRCggaXRlbV9kZWx0YXNbMF0gKTsKKyAgICAgICAgICBhcGFpbnQtPnUuc2NhbGUuc2NhbGVfeSAgKz0gRjJET1QxNF9UT19GSVhFRCggaXRlbV9kZWx0YXNbMF0gKTsKKyAgICAgICAgICBhcGFpbnQtPnUuc2NhbGUuY2VudGVyX3ggKz0gSU5UX1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1sxXSApOworICAgICAgICAgIGFwYWludC0+dS5zY2FsZS5jZW50ZXJfeSArPSBJTlRfVE9fRklYRUQoIGl0ZW1fZGVsdGFzWzJdICk7CisgICAgICAgIH0KKyAgICAgIH0KKyNlbmRpZgorCiAgICAgICAvKiBGVCAnQ09MUicgdjEgQVBJIG91dHB1dCBmb3JtYXQgYWx3YXlzIHJldHVybnMgZnVsbHkgZGVmaW5lZCAqLwogICAgICAgLyogc3RydWN0czsgd2UgdGh1cyBzZXQgdGhlIGZvcm1hdCB0byB0aGUgcHVibGljIEFQSSB2YWx1ZS4gICAgKi8KICAgICAgIGFwYWludC0+Zm9ybWF0ID0gRlRfQ09MUl9QQUlOVEZPUk1BVF9TQ0FMRTsKQEAgLTY4Myw5ICsxMDk0LDEzIEBACiAgICAgICByZXR1cm4gMTsKICAgICB9CiAKLSAgICBlbHNlIGlmICggYXBhaW50LT5mb3JtYXQgPT0gRlRfQ09MUl9QQUlOVEZPUk1BVF9ST1RBVEUgfHwKKyAgICBlbHNlIGlmICggYXBhaW50LT5mb3JtYXQgPT0gRlRfQ09MUl9QQUlOVEZPUk1BVF9ST1RBVEUgICAgIHx8CiAgICAgICAgICAgICAgIChGVF9QYWludEZvcm1hdF9JbnRlcm5hbClhcGFpbnQtPmZvcm1hdCA9PQotICAgICAgICAgICAgICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfUk9UQVRFX0NFTlRFUiApCisgICAgICAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9ST1RBVEVfQ0VOVEVSICAgICB8fAorICAgICAgICAgICAgICAoRlRfUGFpbnRGb3JtYXRfSW50ZXJuYWwpYXBhaW50LT5mb3JtYXQgPT0KKyAgICAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9ST1RBVEUgICAgICAgIHx8CisgICAgICAgICAgICAgIChGVF9QYWludEZvcm1hdF9JbnRlcm5hbClhcGFpbnQtPmZvcm1hdCA9PQorICAgICAgICAgICAgICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfVkFSX1JPVEFURV9DRU5URVIgKQogICAgIHsKICAgICAgIGFwYWludC0+dS5yb3RhdGUucGFpbnQucCAgICAgICAgICAgICAgICAgICAgID0gY2hpbGRfdGFibGVfcDsKICAgICAgIGFwYWludC0+dS5yb3RhdGUucGFpbnQuaW5zZXJ0X3Jvb3RfdHJhbnNmb3JtID0gMDsKQEAgLTY5NCw3ICsxMTA5LDkgQEAKICAgICAgIGFwYWludC0+dS5yb3RhdGUuYW5nbGUgPSBGMkRPVDE0X1RPX0ZJWEVEKCBGVF9ORVhUX1NIT1JUKCBwICkgKTsKIAogICAgICAgaWYgKCAoRlRfUGFpbnRGb3JtYXRfSW50ZXJuYWwpYXBhaW50LT5mb3JtYXQgPT0KLSAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9ST1RBVEVfQ0VOVEVSICkKKyAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1JPVEFURV9DRU5URVIgICAgIHx8CisgICAgICAgICAgIChGVF9QYWludEZvcm1hdF9JbnRlcm5hbClhcGFpbnQtPmZvcm1hdCA9PQorICAgICAgICAgICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfVkFSX1JPVEFURV9DRU5URVIgKQogICAgICAgewogICAgICAgICBFTlNVUkVfUkVBRF9CWVRFUyggNCApOwogICAgICAgICBhcGFpbnQtPnUucm90YXRlLmNlbnRlcl94ID0gSU5UX1RPX0ZJWEVEKCBGVF9ORVhUX1NIT1JUKCBwICkgKTsKQEAgLTcwNiwxNCArMTEyMyw1NSBAQAogICAgICAgICBhcGFpbnQtPnUucm90YXRlLmNlbnRlcl95ID0gMDsKICAgICAgIH0KIAorI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQKKyAgICAgIGlmICggKEZUX1BhaW50Rm9ybWF0X0ludGVybmFsKWFwYWludC0+Zm9ybWF0ID09CisgICAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9WQVJfUk9UQVRFICAgICAgICB8fAorICAgICAgICAgICAoRlRfUGFpbnRGb3JtYXRfSW50ZXJuYWwpYXBhaW50LT5mb3JtYXQgPT0KKyAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9ST1RBVEVfQ0VOVEVSICkKKyAgICAgIHsKKyAgICAgICAgRlRfVUludCAgbnVtX2RlbHRhcyA9IDA7CisKKworICAgICAgICBFTlNVUkVfUkVBRF9CWVRFUyggNCApOworICAgICAgICB2YXJfaW5kZXhfYmFzZSA9IEZUX05FWFRfVUxPTkcoIHAgKTsKKworICAgICAgICBpZiAoIChGVF9QYWludEZvcm1hdF9JbnRlcm5hbClhcGFpbnQtPmZvcm1hdCA9PQorICAgICAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9WQVJfUk9UQVRFX0NFTlRFUiApCisgICAgICAgICAgbnVtX2RlbHRhcyA9IDM7CisgICAgICAgIGlmICggKEZUX1BhaW50Rm9ybWF0X0ludGVybmFsKWFwYWludC0+Zm9ybWF0ID09CisgICAgICAgICAgICAgICBGVF9DT0xSX1BBSU5URk9STUFUX0lOVEVSTkFMX1ZBUl9ST1RBVEUgKQorICAgICAgICAgIG51bV9kZWx0YXMgPSAxOworCisgICAgICAgIGlmICggbnVtX2RlbHRhcyA+IDAgKQorICAgICAgICB7CisgICAgICAgICAgaWYgKCAhZ2V0X2RlbHRhc19mb3JfdmFyX2luZGV4X2Jhc2UoIGZhY2UsIGNvbHIsIHZhcl9pbmRleF9iYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fZGVsdGFzLCBpdGVtX2RlbHRhcyApICkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgYXBhaW50LT51LnJvdGF0ZS5hbmdsZSArPSBGMkRPVDE0X1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1swXSApOworCisgICAgICAgICAgaWYgKCBudW1fZGVsdGFzID09IDMgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGFwYWludC0+dS5yb3RhdGUuY2VudGVyX3ggKz0gSU5UX1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1sxXSApOworICAgICAgICAgICAgYXBhaW50LT51LnJvdGF0ZS5jZW50ZXJfeSArPSBJTlRfVE9fRklYRUQoIGl0ZW1fZGVsdGFzWzJdICk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisjZW5kaWYKKwogICAgICAgYXBhaW50LT5mb3JtYXQgPSBGVF9DT0xSX1BBSU5URk9STUFUX1JPVEFURTsKIAorCiAgICAgICByZXR1cm4gMTsKICAgICB9CiAKLSAgICBlbHNlIGlmICggYXBhaW50LT5mb3JtYXQgPT0gRlRfQ09MUl9QQUlOVEZPUk1BVF9TS0VXIHx8CisgICAgZWxzZSBpZiAoIGFwYWludC0+Zm9ybWF0ID09IEZUX0NPTFJfUEFJTlRGT1JNQVRfU0tFVyAgICAgfHwKICAgICAgICAgICAgICAgKEZUX1BhaW50Rm9ybWF0X0ludGVybmFsKWFwYWludC0+Zm9ybWF0ID09Ci0gICAgICAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9TS0VXX0NFTlRFUiApCisgICAgICAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9WQVJfU0tFVyAgICAgICAgfHwKKyAgICAgICAgICAgICAgKEZUX1BhaW50Rm9ybWF0X0ludGVybmFsKWFwYWludC0+Zm9ybWF0ID09CisgICAgICAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9TS0VXX0NFTlRFUiAgICAgfHwKKyAgICAgICAgICAgICAgKEZUX1BhaW50Rm9ybWF0X0ludGVybmFsKWFwYWludC0+Zm9ybWF0ID09CisgICAgICAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9WQVJfU0tFV19DRU5URVIgKQogICAgIHsKICAgICAgIGFwYWludC0+dS5za2V3LnBhaW50LnAgICAgICAgICAgICAgICAgICAgICA9IGNoaWxkX3RhYmxlX3A7CiAgICAgICBhcGFpbnQtPnUuc2tldy5wYWludC5pbnNlcnRfcm9vdF90cmFuc2Zvcm0gPSAwOwpAQCAtNzIzLDcgKzExODEsOSBAQAogICAgICAgYXBhaW50LT51LnNrZXcueV9za2V3X2FuZ2xlID0gRjJET1QxNF9UT19GSVhFRCggRlRfTkVYVF9TSE9SVCggcCApICk7CiAKICAgICAgIGlmICggKEZUX1BhaW50Rm9ybWF0X0ludGVybmFsKWFwYWludC0+Zm9ybWF0ID09Ci0gICAgICAgICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfU0tFV19DRU5URVIgKQorICAgICAgICAgICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfU0tFV19DRU5URVIgICAgIHx8CisgICAgICAgICAgIChGVF9QYWludEZvcm1hdF9JbnRlcm5hbClhcGFpbnQtPmZvcm1hdCA9PQorICAgICAgICAgICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfVkFSX1NLRVdfQ0VOVEVSICkKICAgICAgIHsKICAgICAgICAgRU5TVVJFX1JFQURfQllURVMoIDQgKTsKICAgICAgICAgYXBhaW50LT51LnNrZXcuY2VudGVyX3ggPSBJTlRfVE9fRklYRUQoIEZUX05FWFRfU0hPUlQoIHAgKSApOwpAQCAtNzM1LDYgKzExOTUsNDIgQEAKICAgICAgICAgYXBhaW50LT51LnNrZXcuY2VudGVyX3kgPSAwOwogICAgICAgfQogCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisgICAgICBpZiAoIChGVF9QYWludEZvcm1hdF9JbnRlcm5hbClhcGFpbnQtPmZvcm1hdCA9PQorICAgICAgICAgICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfVkFSX1NLRVcgICAgICAgIHx8CisgICAgICAgICAgIChGVF9QYWludEZvcm1hdF9JbnRlcm5hbClhcGFpbnQtPmZvcm1hdCA9PQorICAgICAgICAgICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfVkFSX1NLRVdfQ0VOVEVSICkKKyAgICAgIHsKKyAgICAgICAgRU5TVVJFX1JFQURfQllURVMoIDQgKTsKKyAgICAgICAgdmFyX2luZGV4X2Jhc2UgPSBGVF9ORVhUX1VMT05HKCBwICk7CisKKyAgICAgICAgaWYgKCAoRlRfUGFpbnRGb3JtYXRfSW50ZXJuYWwpYXBhaW50LT5mb3JtYXQgPT0KKyAgICAgICAgICAgICAgIEZUX0NPTFJfUEFJTlRGT1JNQVRfSU5URVJOQUxfVkFSX1NLRVcgKQorICAgICAgICB7CisgICAgICAgICAgaWYgKCAhZ2V0X2RlbHRhc19mb3JfdmFyX2luZGV4X2Jhc2UoIGZhY2UsIGNvbHIsIHZhcl9pbmRleF9iYXNlLCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtX2RlbHRhcyApICkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgYXBhaW50LT51LnNrZXcueF9za2V3X2FuZ2xlICs9IEYyRE9UMTRfVE9fRklYRUQoIGl0ZW1fZGVsdGFzWzBdICk7CisgICAgICAgICAgYXBhaW50LT51LnNrZXcueV9za2V3X2FuZ2xlICs9IEYyRE9UMTRfVE9fRklYRUQoIGl0ZW1fZGVsdGFzWzFdICk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIChGVF9QYWludEZvcm1hdF9JbnRlcm5hbClhcGFpbnQtPmZvcm1hdCA9PQorICAgICAgICAgICAgICAgRlRfQ09MUl9QQUlOVEZPUk1BVF9JTlRFUk5BTF9WQVJfU0tFV19DRU5URVIgKQorICAgICAgICB7CisgICAgICAgICAgaWYgKCAhZ2V0X2RlbHRhc19mb3JfdmFyX2luZGV4X2Jhc2UoIGZhY2UsIGNvbHIsIHZhcl9pbmRleF9iYXNlLCA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtX2RlbHRhcyApICkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgYXBhaW50LT51LnNrZXcueF9za2V3X2FuZ2xlICs9IEYyRE9UMTRfVE9fRklYRUQoIGl0ZW1fZGVsdGFzWzBdICk7CisgICAgICAgICAgYXBhaW50LT51LnNrZXcueV9za2V3X2FuZ2xlICs9IEYyRE9UMTRfVE9fRklYRUQoIGl0ZW1fZGVsdGFzWzFdICk7CisgICAgICAgICAgYXBhaW50LT51LnNrZXcuY2VudGVyX3ggICAgICs9IElOVF9UT19GSVhFRCggaXRlbV9kZWx0YXNbMl0gKTsKKyAgICAgICAgICBhcGFpbnQtPnUuc2tldy5jZW50ZXJfeSAgICAgKz0gSU5UX1RPX0ZJWEVEKCBpdGVtX2RlbHRhc1szXSApOworICAgICAgICB9CisgICAgICB9CisjZW5kaWYKKwogICAgICAgYXBhaW50LT5mb3JtYXQgPSBGVF9DT0xSX1BBSU5URk9STUFUX1NLRVc7CiAKICAgICAgIHJldHVybiAxOwpAQCAtODYzLDcgKzEzNTksNyBAQAogICB7CiAgICAgQ29sciogIGNvbHI7CiAKLSAgICBGVF9CeXRlICAqcCwgKnAxLCAqY2xpcF9iYXNlOworICAgIEZUX0J5dGUgICpwLCAqcDEsICpjbGlwX2Jhc2UsICpsaW1pdDsKIAogICAgIEZUX0J5dGUgICAgY2xpcF9saXN0X2Zvcm1hdDsKICAgICBGVF9VTG9uZyAgIG51bV9jbGlwX2JveGVzLCBpOwpAQCAtODg2LDE2ICsxMzgyLDMyIEBACiAKICAgICBwID0gY29sci0+Y2xpcF9saXN0OwogCisgICAgLyogTGltaXQgcG9pbnRzIHRvIHRoZSBmaXJzdCBieXRlIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGNvbG9yIHRhYmxlLiAgICAqLworICAgIC8qIFRodXMsIGluIHN1YnNlcXVlbnQgbGltaXQgY2hlY2tzIGJlbG93IHdlIG5lZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgKi8KKyAgICAvKiByZWFkIHBvaW50ZXIgaXMgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIGEgcG9zaXRpb24gb2Zmc2V0IGJ5IGNlcnRhaW4gICovCisgICAgLyogZmllbGQgc2l6ZXMgdG8gdGhlIGxlZnQgb2YgdGhhdCBwb3NpdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGxpbWl0ID0gKEZUX0J5dGUqKWNvbHItPnRhYmxlICsgY29sci0+dGFibGVfc2l6ZTsKKworICAgIC8qIENoZWNrIHdoZXRoZXIgd2UgY2FuIGV4dHJhY3Qgb25lIGB1aW50OGAgYW5kIG9uZSBgdWludDMyYC4gKi8KKyAgICBpZiAoIHAgPiBsaW1pdCAtICggMSArIDQgKSApCisgICAgICByZXR1cm4gMDsKKwogICAgIGNsaXBfYmFzZSAgICAgICAgPSBwOwogICAgIGNsaXBfbGlzdF9mb3JtYXQgPSBGVF9ORVhUX0JZVEUgKCBwICk7CiAKICAgICAvKiBGb3JtYXQgYnl0ZSB1c2VkIGhlcmUgdG8gYmUgYWJsZSB0byB1cGdyYWRlIENsaXBMaXN0IGZvciA+MTZiaXQgKi8KLSAgICAvKiBnbHlwaCBpZHM7IGZvciBub3cgd2UgY2FuIGV4cGVjdCBpdCB0byBiZSAwLiAqLworICAgIC8qIGdseXBoIGlkczsgZm9yIG5vdyB3ZSBjYW4gZXhwZWN0IGl0IHRvIGJlIDEuICAgICAgICAgICAgICAgICAgICAqLwogICAgIGlmICggISggY2xpcF9saXN0X2Zvcm1hdCA9PSAxICkgKQogICAgICAgcmV0dXJuIDA7CiAKICAgICBudW1fY2xpcF9ib3hlcyA9IEZUX05FWFRfVUxPTkcoIHAgKTsKIAorICAgIC8qIENoZWNrIHdoZXRoZXIgd2UgY2FuIGV4dHJhY3QgdHdvIGB1aW50MTZgIGFuZCBvbmUgYE9mZnNldDI0YCwgKi8KKyAgICAvKiBgbnVtX2NsaXBfYm94ZXNgIHRpbWVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCBjb2xyLT50YWJsZV9zaXplIC8gKCAyICsgMiArIDMgKSA8IG51bV9jbGlwX2JveGVzIHx8CisgICAgICAgICBwID4gbGltaXQgLSAoIDIgKyAyICsgMyApICogbnVtX2NsaXBfYm94ZXMgICAgICAgICkKKyAgICAgIHJldHVybiAwOworCiAgICAgZm9yICggaSA9IDA7IGkgPCBudW1fY2xpcF9ib3hlczsgKytpICkKICAgICB7CiAgICAgICBnaWRfc3RhcnQgICAgICAgPSBGVF9ORVhUX1VTSE9SVCggcCApOwpAQCAtOTA2LDEyICsxNDE4LDE3IEBACiAgICAgICB7CiAgICAgICAgIHAxID0gKEZUX0J5dGUqKSggY2xpcF9iYXNlICsgY2xpcF9ib3hfb2Zmc2V0ICk7CiAKLSAgICAgICAgaWYgKCBwMSA+PSAoIChGVF9CeXRlKiljb2xyLT50YWJsZSArIGNvbHItPnRhYmxlX3NpemUgKSApCisgICAgICAgIC8qIENoZWNrIHdoZXRoZXIgd2UgY2FuIGV4dHJhY3Qgb25lIGB1aW50OGAuICovCisgICAgICAgIGlmICggcDEgPiBsaW1pdCAtIDEgKQogICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIGZvcm1hdCA9IEZUX05FWFRfQllURSggcDEgKTsKIAotICAgICAgICBpZiAoIGZvcm1hdCA+IDEgKQorICAgICAgICBpZiAoIGZvcm1hdCA+IDIgKQorICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIC8qIENoZWNrIHdoZXRoZXIgd2UgY2FuIGV4dHJhY3QgZm91ciBgRldPUkRgLiAqLworICAgICAgICBpZiAoIHAxID4gbGltaXQgLSAoIDIgKyAyICsgMiArIDIgKSApCiAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgLyogYGZhY2UtPnJvb3Quc2l6ZS0+bWV0cmljcy54X3NjYWxlYCBhbmQgYHlfc2NhbGVgIGFyZSBmYWN0b3JzICAgKi8KQEAgLTkyMSwxMSArMTQzOCw0MCBAQAogICAgICAgICBmb250X2NsaXBfYm94LnhNaW4gPSBGVF9NdWxGaXgoIEZUX05FWFRfU0hPUlQoIHAxICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+cm9vdC5zaXplLT5tZXRyaWNzLnhfc2NhbGUgKTsKICAgICAgICAgZm9udF9jbGlwX2JveC55TWluID0gRlRfTXVsRml4KCBGVF9ORVhUX1NIT1JUKCBwMSApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UtPnJvb3Quc2l6ZS0+bWV0cmljcy54X3NjYWxlICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+cm9vdC5zaXplLT5tZXRyaWNzLnlfc2NhbGUgKTsKICAgICAgICAgZm9udF9jbGlwX2JveC54TWF4ID0gRlRfTXVsRml4KCBGVF9ORVhUX1NIT1JUKCBwMSApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UtPnJvb3Quc2l6ZS0+bWV0cmljcy54X3NjYWxlICk7CiAgICAgICAgIGZvbnRfY2xpcF9ib3gueU1heCA9IEZUX011bEZpeCggRlRfTkVYVF9TSE9SVCggcDEgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5yb290LnNpemUtPm1ldHJpY3MueF9zY2FsZSApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UtPnJvb3Quc2l6ZS0+bWV0cmljcy55X3NjYWxlICk7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisgICAgICAgIGlmICggZm9ybWF0ID09IDIgKQorICAgICAgICB7CisgICAgICAgICAgRlRfVUxvbmcgICAgICAgICB2YXJfaW5kZXhfYmFzZSA9IDA7CisgICAgICAgICAgLyogdmFySW5kZXhCYXNlIG9mZnNldCBmb3IgY2xpcGJveCBpcyAzIGF0IG1vc3QuICovCisgICAgICAgICAgRlRfSXRlbVZhckRlbHRhICBpdGVtX2RlbHRhc1s0XSA9IHsgMCwgMCwgMCwgMCB9OworCisKKyAgICAgICAgICAvKiBDaGVjayB3aGV0aGVyIHdlIGNhbiBleHRyYWN0IGEgMzItYml0IHZhckluZGV4QmFzZSBub3cuICovCisgICAgICAgICAgaWYgKCBwMSA+IGxpbWl0IC0gNCApCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgIHZhcl9pbmRleF9iYXNlID0gRlRfTkVYVF9VTE9ORyggcDEgKTsKKworICAgICAgICAgIGlmICggIWdldF9kZWx0YXNfZm9yX3Zhcl9pbmRleF9iYXNlKCBmYWNlLCBjb2xyLCB2YXJfaW5kZXhfYmFzZSwgNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV9kZWx0YXMgKSApCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgIGZvbnRfY2xpcF9ib3gueE1pbiArPQorICAgICAgICAgICAgRlRfTXVsRml4KCBpdGVtX2RlbHRhc1swXSwgZmFjZS0+cm9vdC5zaXplLT5tZXRyaWNzLnhfc2NhbGUgKTsKKyAgICAgICAgICBmb250X2NsaXBfYm94LnlNaW4gKz0KKyAgICAgICAgICAgIEZUX011bEZpeCggaXRlbV9kZWx0YXNbMV0sIGZhY2UtPnJvb3Quc2l6ZS0+bWV0cmljcy55X3NjYWxlICk7CisgICAgICAgICAgZm9udF9jbGlwX2JveC54TWF4ICs9CisgICAgICAgICAgICBGVF9NdWxGaXgoIGl0ZW1fZGVsdGFzWzJdLCBmYWNlLT5yb290LnNpemUtPm1ldHJpY3MueF9zY2FsZSApOworICAgICAgICAgIGZvbnRfY2xpcF9ib3gueU1heCArPQorICAgICAgICAgICAgRlRfTXVsRml4KCBpdGVtX2RlbHRhc1szXSwgZmFjZS0+cm9vdC5zaXplLT5tZXRyaWNzLnlfc2NhbGUgKTsKKyAgICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgLyogTWFrZSA0IGNvcm5lciBwb2ludHMgKHhNaW4sIHlNaW4pLCAoeE1heCwgeU1heCkgYW5kIHRyYW5zZm9ybSAqLwogICAgICAgICAvKiB0aGVtLiAgSWYgd2Ugd2Ugd291bGQgb25seSB0cmFuc2Zvcm0gdHdvIGNvcm5lciBwb2ludHMgYW5kICAgICovCkBAIC0xMDEzLDggKzE1NTksOCBAQAogICAgICAqIEJlZm9yZSByZWFkaW5nLCBlbnN1cmUgdGhhdCBgcGAgaXMgd2l0aGluICdDT0xSJyB2MSBhbmQgd2UgY2FuIHJlYWQgYQogICAgICAqIDQtYnl0ZSBVTE9ORy4KICAgICAgKi8KLSAgICBpZiAoIHAgPCBjb2xyLT5sYXllcnNfdjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKLSAgICAgICAgIHAgPiAoIChGVF9CeXRlKiljb2xyLT50YWJsZSArIGNvbHItPnRhYmxlX3NpemUgLSA0ICkgKQorICAgIGlmICggcCA8IGNvbHItPmxheWVyc192MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICBwID4gKEZUX0J5dGUqKWNvbHItPnRhYmxlICsgY29sci0+dGFibGVfc2l6ZSAtIDQgKQogICAgICAgcmV0dXJuIDA7CiAKICAgICBwYWludF9vZmZzZXQgPQpAQCAtMTA0NiwyOSArMTU5Miw2NyBAQAogICAgIENvbHIqICBjb2xyID0gKENvbHIqKWZhY2UtPmNvbHI7CiAKICAgICBGVF9CeXRlKiAgcDsKKyAgICBGVF9VTG9uZyAgdmFyX2luZGV4X2Jhc2U7CisgICAgRlRfQnl0ZSogIGxhc3RfZW50cnlfcCA9IE5VTEw7CisgICAgRlRfVUludCAgIGVudHJ5X3NpemUgICA9IENPTE9SX1NUT1BfU0laRTsKIAogCi0gICAgaWYgKCAhY29sciB8fCAhY29sci0+dGFibGUgKQorICAgIGlmICggIWNvbHIgfHwgIWNvbHItPnRhYmxlIHx8ICFpdGVyYXRvciApCiAgICAgICByZXR1cm4gMDsKIAogICAgIGlmICggaXRlcmF0b3ItPmN1cnJlbnRfY29sb3Jfc3RvcCA+PSBpdGVyYXRvci0+bnVtX2NvbG9yX3N0b3BzICkKICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKCBpdGVyYXRvci0+cCArCi0gICAgICAgICAgICggKCBpdGVyYXRvci0+bnVtX2NvbG9yX3N0b3BzIC0gaXRlcmF0b3ItPmN1cnJlbnRfY29sb3Jfc3RvcCApICoKLSAgICAgICAgICAgICBDT0xPUl9TVE9QX1NJWkUgKSA+Ci0gICAgICAgICAoIChGVF9CeXRlICopY29sci0+dGFibGUgKyBjb2xyLT50YWJsZV9zaXplICkgKQorICAgIGlmICggaXRlcmF0b3ItPnJlYWRfdmFyaWFibGUgKQorICAgICAgZW50cnlfc2l6ZSArPSBWQVJfSURYX0JBU0VfU0laRTsKKworICAgIC8qIENhbGN1bGF0ZSB0aGUgc3RhcnQgcG9pbnRlciBmb3IgdGhlIGxhc3QgdG8tYmUtcmVhZCAoVmFyKUNvbG9yU3RvcCAqLworICAgIC8qIGFuZCBjaGVjayB3aGV0aGVyIHdlIGNhbiByZWFkIGEgZnVsbCAoVmFyKUNvbG9yU3RvcCBhdCB0aGF0ICAgICAgICAqLworICAgIC8qIHBvc2l0aW9uIGJ5IGNvbXBhcmluZyBpdCB0byB0aGUgcG9zaXRpb24gdGhhdCBpcyB0aGUgc2l6ZSBvZiBvbmUgICAqLworICAgIC8qIChWYXIpQ29sb3JTdG9wIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSAnQ09MUicgdGFibGUuICAgICAgICAgICAgICAgICAqLworICAgIGxhc3RfZW50cnlfcCA9CisgICAgICBpdGVyYXRvci0+cCArICggaXRlcmF0b3ItPm51bV9jb2xvcl9zdG9wcyAtIDEgLQorICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yLT5jdXJyZW50X2NvbG9yX3N0b3AgKSAqIGVudHJ5X3NpemU7CisgICAgaWYgKCBpdGVyYXRvci0+cCA8IGNvbHItPnBhaW50c19zdGFydF92MSAgICAgICAgICB8fAorICAgICAgICAgbGFzdF9lbnRyeV9wID4gKEZUX0J5dGUqKWNvbHItPnRhYmxlICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbHItPnRhYmxlX3NpemUgLSBlbnRyeV9zaXplICkKICAgICAgIHJldHVybiAwOwogCiAgICAgLyogSXRlcmF0b3IgcG9pbnRzIGF0IGZpcnN0IGBDb2xvclN0b3BgIG9mIGBDb2xvckxpbmVgLiAqLwogICAgIHAgPSBpdGVyYXRvci0+cDsKIAotICAgIGNvbG9yX3N0b3AtPnN0b3Bfb2Zmc2V0ID0gRlRfTkVYVF9TSE9SVCggcCApOworICAgIGNvbG9yX3N0b3AtPnN0b3Bfb2Zmc2V0ID0gRjJET1QxNF9UT19GSVhFRCggRlRfTkVYVF9TSE9SVCggcCApICk7CiAKICAgICBjb2xvcl9zdG9wLT5jb2xvci5wYWxldHRlX2luZGV4ID0gRlRfTkVYVF9VU0hPUlQoIHAgKTsKIAogICAgIGNvbG9yX3N0b3AtPmNvbG9yLmFscGhhID0gRlRfTkVYVF9TSE9SVCggcCApOwogCisgICAgaWYgKCBpdGVyYXRvci0+cmVhZF92YXJpYWJsZSApCisgICAgeworICAgICAgLyogUG9pbnRlciBwIG5lZWRzIHRvIGJlIGFkdmFuY2VkIGluZGVwZW5kZW50bHkgb2Ygd2hldGhlciB3ZSBpbnRlbmQgKi8KKyAgICAgIC8qIHRvIHRha2UgdmFyaWFibGUgZGVsdGFzIGludG8gYWNjb3VudCBvciBub3QuICBPdGhlcndpc2UgaXRlcmF0aW9uICovCisgICAgICAvKiB3b3VsZCBmYWlsIGR1ZSB0byB3cm9uZyBvZmZzZXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgdmFyX2luZGV4X2Jhc2UgPSBGVF9ORVhUX1VMT05HKCBwICk7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisgICAgICB7CisgICAgICAgIEZUX0ludCAgaXRlbV9kZWx0YXNbMl07CisKKworICAgICAgICBpZiAoICFnZXRfZGVsdGFzX2Zvcl92YXJfaW5kZXhfYmFzZSggZmFjZSwgY29sciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcl9pbmRleF9iYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1fZGVsdGFzICkgKQorICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNvbG9yX3N0b3AtPnN0b3Bfb2Zmc2V0ICs9IEYyRE9UMTRfVE9fRklYRUQoIGl0ZW1fZGVsdGFzWzBdICk7CisgICAgICAgIGNvbG9yX3N0b3AtPmNvbG9yLmFscGhhICs9IGl0ZW1fZGVsdGFzWzFdOworICAgICAgfQorI2Vsc2UKKyAgICAgIEZUX1VOVVNFRCggdmFyX2luZGV4X2Jhc2UgKTsKKyNlbmRpZgorICAgIH0KKwogICAgIGl0ZXJhdG9yLT5wID0gcDsKICAgICBpdGVyYXRvci0+Y3VycmVudF9jb2xvcl9zdG9wKys7CiAKQEAgLTExNDgsNyArMTczMiw3IEBACiAgICAgICByZXR1cm4gMTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVhZF9wYWludCggY29sciwgb3BhcXVlX3BhaW50LnAsIHBhaW50ICk7CisgICAgcmV0dXJuIHJlYWRfcGFpbnQoIGZhY2UsIGNvbHIsIG9wYXF1ZV9wYWludC5wLCBwYWludCApOwogICB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL3NmbnQvdHRjb2xyLmggYi9zcmMvc2ZudC90dGNvbHIuaAppbmRleCBiODFlNGNiLi4yMGM4NWYwIDEwMDY0NAotLS0gYS9zcmMvc2ZudC90dGNvbHIuaAorKysgYi9zcmMvc2ZudC90dGNvbHIuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRydWVUeXBlIGFuZCBPcGVuVHlwZSBjb2xvcmVkIGdseXBoIGxheWVyIHN1cHBvcnQgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBTaGFvIFl1IFpoYW5nIDxzaGFvemhhbmdAZmIuY29tPi4KZGlmZiAtLWdpdCBhL3NyYy9zZm50L3R0Y3BhbC5jIGIvc3JjL3NmbnQvdHRjcGFsLmMKaW5kZXggYTBkODRiYy4uNDI3OWJjMCAxMDA2NDQKLS0tIGEvc3JjL3NmbnQvdHRjcGFsLmMKKysrIGIvc3JjL3NmbnQvdHRjcGFsLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUcnVlVHlwZSBhbmQgT3BlblR5cGUgY29sb3IgcGFsZXR0ZSBzdXBwb3J0IChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgU2hhbyBZdSBaaGFuZyA8c2hhb3poYW5nQGZiLmNvbT4uCmRpZmYgLS1naXQgYS9zcmMvc2ZudC90dGNwYWwuaCBiL3NyYy9zZm50L3R0Y3BhbC5oCmluZGV4IDFjNTU4NjguLjhlOTkxM2YgMTAwNjQ0Ci0tLSBhL3NyYy9zZm50L3R0Y3BhbC5oCisrKyBiL3NyYy9zZm50L3R0Y3BhbC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHJ1ZVR5cGUgYW5kIE9wZW5UeXBlIGNvbG9yIHBhbGV0dGUgc3VwcG9ydCAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogT3JpZ2luYWxseSB3cml0dGVuIGJ5IFNoYW8gWXUgWmhhbmcgPHNoYW96aGFuZ0BmYi5jb20+LgpkaWZmIC0tZ2l0IGEvc3JjL3NmbnQvdHRrZXJuLmMgYi9zcmMvc2ZudC90dGtlcm4uYwppbmRleCBiYjE5MjJjLi5hNDdkMDhiIDEwMDY0NAotLS0gYS9zcmMvc2ZudC90dGtlcm4uYworKysgYi9zcmMvc2ZudC90dGtlcm4uYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgTG9hZCB0aGUgYmFzaWMgVHJ1ZVR5cGUga2VybmluZyB0YWJsZS4gIFRoaXMgZG9lc24ndCBoYW5kbGUKICAqICAga2VybmluZyBkYXRhIHdpdGhpbiB0aGUgR1BPUyB0YWJsZSBhdCB0aGUgbW9tZW50LgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTk0LDcgKzk0LDcgQEAKIAogICAgICAgcF9uZXh0ID0gcDsKIAotICAgICAgcCArPSAyOyAvKiBza2lwIHZlcnNpb24gKi8KKyAgICAgIHAgICAgICAgKz0gMjsgLyogc2tpcCB2ZXJzaW9uICovCiAgICAgICBsZW5ndGggICA9IEZUX05FWFRfVVNIT1JUKCBwICk7CiAgICAgICBjb3ZlcmFnZSA9IEZUX05FWFRfVVNIT1JUKCBwICk7CiAKQEAgLTE0NCw3ICsxNDQsNyBAQAogCiAKICAgICAgICAgICBjdXJfcGFpciA9IEZUX05FWFRfVUxPTkcoIHAgKTsKLSAgICAgICAgICBpZiAoIGN1cl9wYWlyIDw9IG9sZF9wYWlyICkKKyAgICAgICAgICBpZiAoIGN1cl9wYWlyIDwgb2xkX3BhaXIgKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICBwICs9IDI7CkBAIC0xODcsMTEgKzE4NywxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICBsZWZ0X2dseXBoLAogICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICByaWdodF9nbHlwaCApCiAgIHsKLSAgICBGVF9JbnQgICAgcmVzdWx0ID0gMDsKLSAgICBGVF9VSW50ICAgY291bnQsIG1hc2s7Ci0gICAgRlRfQnl0ZSogIHAgICAgICAgPSBmYWNlLT5rZXJuX3RhYmxlOwotICAgIEZUX0J5dGUqICBwX2xpbWl0ID0gcCArIGZhY2UtPmtlcm5fdGFibGVfc2l6ZTsKKyAgICBGVF9JbnQgICByZXN1bHQgPSAwOworICAgIEZUX1VJbnQgIGNvdW50LCBtYXNrOwogCisgICAgRlRfQnl0ZSogIHA7CisgICAgRlRfQnl0ZSogIHBfbGltaXQ7CisKKworICAgIGlmICggIWZhY2UtPmtlcm5fdGFibGUgKQorICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgIHAgICAgICAgPSBmYWNlLT5rZXJuX3RhYmxlOworICAgIHBfbGltaXQgPSBwICsgZmFjZS0+a2Vybl90YWJsZV9zaXplOwogCiAgICAgcCAgICs9IDQ7CiAgICAgbWFzayA9IDB4MDAwMTsKZGlmZiAtLWdpdCBhL3NyYy9zZm50L3R0a2Vybi5oIGIvc3JjL3NmbnQvdHRrZXJuLmgKaW5kZXggM2Q4ZjFlOC4uOTYwYzdkYSAxMDA2NDQKLS0tIGEvc3JjL3NmbnQvdHRrZXJuLmgKKysrIGIvc3JjL3NmbnQvdHRrZXJuLmgKQEAgLTUsNyArNSw3IEBACiAgKiAgIExvYWQgdGhlIGJhc2ljIFRydWVUeXBlIGtlcm5pbmcgdGFibGUuICBUaGlzIGRvZXNuJ3QgaGFuZGxlCiAgKiAgIGtlcm5pbmcgZGF0YSB3aXRoaW4gdGhlIEdQT1MgdGFibGUgYXQgdGhlIG1vbWVudC4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvc2ZudC90dGxvYWQuYyBiL3NyYy9zZm50L3R0bG9hZC5jCmluZGV4IDUxNDE2ZDguLjE0ZjYyNWMgMTAwNjQ0Ci0tLSBhL3NyYy9zZm50L3R0bG9hZC5jCisrKyBiL3NyYy9zZm50L3R0bG9hZC5jCkBAIC01LDcgKzUsNyBAQAogICogICBMb2FkIHRoZSBiYXNpYyBUcnVlVHlwZSB0YWJsZXMsIGkuZS4sIHRhYmxlcyB0aGF0IGNhbiBiZSBlaXRoZXIgaW4KICAqICAgVFRGIG9yIE9URiBmb250cyAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMjA1LDkgKzIwNSw4IEBACiAKICAgICAgIGlmICggRlRfU1RSRUFNX1JFQURfRklFTERTKCB0YWJsZV9kaXJfZW50cnlfZmllbGRzLCAmdGFibGUgKSApCiAgICAgICB7Ci0gICAgICAgIG5uLS07CiAgICAgICAgIEZUX1RSQUNFMigoICJjaGVja190YWJsZV9kaXI6IgotICAgICAgICAgICAgICAgICAgICAiIGNhbiByZWFkIG9ubHkgJWQgdGFibGUlcyBpbiBmb250IChpbnN0ZWFkIG9mICVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgIiBjYW4gcmVhZCBvbmx5ICVodSB0YWJsZSVzIGluIGZvbnQgKGluc3RlYWQgb2YgJWh1KVxuIiwKICAgICAgICAgICAgICAgICAgICAgbm4sIG5uID09IDEgPyAiIiA6ICJzIiwgc2ZudC0+bnVtX3RhYmxlcyApKTsKICAgICAgICAgc2ZudC0+bnVtX3RhYmxlcyA9IG5uOwogICAgICAgICBicmVhazsKQEAgLTIxNyw3ICsyMTYsNyBAQAogCiAgICAgICBpZiAoIHRhYmxlLk9mZnNldCA+IHN0cmVhbS0+c2l6ZSApCiAgICAgICB7Ci0gICAgICAgIEZUX1RSQUNFMigoICJjaGVja190YWJsZV9kaXI6IHRhYmxlIGVudHJ5ICVkIGludmFsaWRcbiIsIG5uICkpOworICAgICAgICBGVF9UUkFDRTIoKCAiY2hlY2tfdGFibGVfZGlyOiB0YWJsZSBlbnRyeSAlaHUgaW52YWxpZFxuIiwgbm4gKSk7CiAgICAgICAgIGNvbnRpbnVlOwogICAgICAgfQogICAgICAgZWxzZSBpZiAoIHRhYmxlLkxlbmd0aCA+IHN0cmVhbS0+c2l6ZSAtIHRhYmxlLk9mZnNldCApCkBAIC0yMzIsNyArMjMxLDcgQEAKICAgICAgICAgICB2YWxpZF9lbnRyaWVzKys7CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgIEZUX1RSQUNFMigoICJjaGVja190YWJsZV9kaXI6IHRhYmxlIGVudHJ5ICVkIGludmFsaWRcbiIsIG5uICkpOworICAgICAgICAgIEZUX1RSQUNFMigoICJjaGVja190YWJsZV9kaXI6IHRhYmxlIGVudHJ5ICVodSBpbnZhbGlkXG4iLCBubiApKTsKICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgfQpAQCAtMzgxLDcgKzM4MCw3IEBACiAKICAgICAvKiBsb2FkIHRoZSB0YWJsZSBkaXJlY3RvcnkgKi8KIAotICAgIEZUX1RSQUNFMigoICItLSBOdW1iZXIgb2YgdGFibGVzOiAlMTB1XG4iLCAgICBzZm50Lm51bV90YWJsZXMgKSk7CisgICAgRlRfVFJBQ0UyKCggIi0tIE51bWJlciBvZiB0YWJsZXM6ICUxMGh1XG4iLCAgIHNmbnQubnVtX3RhYmxlcyApKTsKICAgICBGVF9UUkFDRTIoKCAiLS0gRm9ybWF0IHZlcnNpb246ICAgMHglMDhseFxuIiwgc2ZudC5mb3JtYXRfdGFnICkpOwogCiAgICAgaWYgKCBzZm50LmZvcm1hdF90YWcgIT0gVFRBR19PVFRPICkKQEAgLTY3Miw4ICs2NzEsOCBAQAogICAgIGlmICggRlRfU1RSRUFNX1JFQURfRklFTERTKCBoZWFkZXJfZmllbGRzLCBoZWFkZXIgKSApCiAgICAgICBnb3RvIEV4aXQ7CiAKLSAgICBGVF9UUkFDRTMoKCAiVW5pdHMgcGVyIEVNOiAlNHVcbiIsIGhlYWRlci0+VW5pdHNfUGVyX0VNICkpOwotICAgIEZUX1RSQUNFMygoICJJbmRleFRvTG9jOiAgICU0ZFxuIiwgaGVhZGVyLT5JbmRleF9Ub19Mb2NfRm9ybWF0ICkpOworICAgIEZUX1RSQUNFMygoICJVbml0cyBwZXIgRU06ICU0aHVcbiIsIGhlYWRlci0+VW5pdHNfUGVyX0VNICkpOworICAgIEZUX1RSQUNFMygoICJJbmRleFRvTG9jOiAgICU0aGRcbiIsIGhlYWRlci0+SW5kZXhfVG9fTG9jX0Zvcm1hdCApKTsKIAogICBFeGl0OgogICAgIHJldHVybiBlcnJvcjsKQEAgLTgwMyw3ICs4MDIsNyBAQAogICAgICAgfQogICAgIH0KIAotICAgIEZUX1RSQUNFMygoICJudW1HbHlwaHM6ICV1XG4iLCBtYXhQcm9maWxlLT5udW1HbHlwaHMgKSk7CisgICAgRlRfVFJBQ0UzKCggIm51bUdseXBoczogJWh1XG4iLCBtYXhQcm9maWxlLT5udW1HbHlwaHMgKSk7CiAKICAgRXhpdDoKICAgICByZXR1cm4gZXJyb3I7CkBAIC0xMjY2LDExICsxMjY1LDExIEBACiAgICAgICB9CiAgICAgfQogCi0gICAgRlRfVFJBQ0UzKCggInNUeXBvQXNjZW5kZXI6ICAlNGRcbiIsICAgb3MyLT5zVHlwb0FzY2VuZGVyICkpOwotICAgIEZUX1RSQUNFMygoICJzVHlwb0Rlc2NlbmRlcjogJTRkXG4iLCAgIG9zMi0+c1R5cG9EZXNjZW5kZXIgKSk7Ci0gICAgRlRfVFJBQ0UzKCggInVzV2luQXNjZW50OiAgICAlNHVcbiIsICAgb3MyLT51c1dpbkFzY2VudCApKTsKLSAgICBGVF9UUkFDRTMoKCAidXNXaW5EZXNjZW50OiAgICU0dVxuIiwgICBvczItPnVzV2luRGVzY2VudCApKTsKLSAgICBGVF9UUkFDRTMoKCAiZnNTZWxlY3Rpb246ICAgIDB4JTJ4XG4iLCBvczItPmZzU2VsZWN0aW9uICkpOworICAgIEZUX1RSQUNFMygoICJzVHlwb0FzY2VuZGVyOiAgJTRoZFxuIiwgICBvczItPnNUeXBvQXNjZW5kZXIgKSk7CisgICAgRlRfVFJBQ0UzKCggInNUeXBvRGVzY2VuZGVyOiAlNGhkXG4iLCAgIG9zMi0+c1R5cG9EZXNjZW5kZXIgKSk7CisgICAgRlRfVFJBQ0UzKCggInVzV2luQXNjZW50OiAgICAlNGh1XG4iLCAgIG9zMi0+dXNXaW5Bc2NlbnQgKSk7CisgICAgRlRfVFJBQ0UzKCggInVzV2luRGVzY2VudDogICAlNGh1XG4iLCAgIG9zMi0+dXNXaW5EZXNjZW50ICkpOworICAgIEZUX1RSQUNFMygoICJmc1NlbGVjdGlvbjogICAgMHglMmh4XG4iLCBvczItPmZzU2VsZWN0aW9uICkpOwogCiAgIEV4aXQ6CiAgICAgcmV0dXJuIGVycm9yOwpAQCAtMTQ2OSw3ICsxNDY4LDcgQEAKICAgICAgIGdhc3BfcmFuZ2VzW2pdLm1heFBQRU0gID0gRlRfR0VUX1VTSE9SVCgpOwogICAgICAgZ2FzcF9yYW5nZXNbal0uZ2FzcEZsYWcgPSBGVF9HRVRfVVNIT1JUKCk7CiAKLSAgICAgIEZUX1RSQUNFMygoICJnYXNwUmFuZ2UgJWQ6IHJhbmdlTWF4UFBFTSAlNWQsIHJhbmdlR2FzcEJlaGF2aW9yIDB4JXhcbiIsCisgICAgICBGVF9UUkFDRTMoKCAiZ2FzcFJhbmdlICVodTogcmFuZ2VNYXhQUEVNICU1aHUsIHJhbmdlR2FzcEJlaGF2aW9yIDB4JWh4XG4iLAogICAgICAgICAgICAgICAgICAgaiwKICAgICAgICAgICAgICAgICAgIGdhc3BfcmFuZ2VzW2pdLm1heFBQRU0sCiAgICAgICAgICAgICAgICAgICBnYXNwX3Jhbmdlc1tqXS5nYXNwRmxhZyApKTsKZGlmZiAtLWdpdCBhL3NyYy9zZm50L3R0bG9hZC5oIGIvc3JjL3NmbnQvdHRsb2FkLmgKaW5kZXggY2FiMTVjZC4uMTQ5OWRkNSAxMDA2NDQKLS0tIGEvc3JjL3NmbnQvdHRsb2FkLmgKKysrIGIvc3JjL3NmbnQvdHRsb2FkLmgKQEAgLTUsNyArNSw3IEBACiAgKiAgIExvYWQgdGhlIGJhc2ljIFRydWVUeXBlIHRhYmxlcywgaS5lLiwgdGFibGVzIHRoYXQgY2FuIGJlIGVpdGhlciBpbgogICogICBUVEYgb3IgT1RGIGZvbnRzIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvc2ZudC90dG10eC5jIGIvc3JjL3NmbnQvdHRtdHguYwppbmRleCA3YWVjZTM2Li4zOGVlOWFlIDEwMDY0NAotLS0gYS9zcmMvc2ZudC90dG10eC5jCisrKyBiL3NyYy9zZm50L3R0bXR4LmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBMb2FkIHRoZSBtZXRyaWNzIHRhYmxlcyBjb21tb24gdG8gVFRGIGFuZCBPVEYgZm9udHMgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTIzOSw3ICsyMzksNyBAQAogCiAjaWZkZWYgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVAogICAgIEZUX1NlcnZpY2VfTWV0cmljc1ZhcmlhdGlvbnMgIHZhciA9Ci0gICAgICAoRlRfU2VydmljZV9NZXRyaWNzVmFyaWF0aW9ucylmYWNlLT52YXI7CisgICAgICAoRlRfU2VydmljZV9NZXRyaWNzVmFyaWF0aW9ucylmYWNlLT50dF92YXI7CiAjZW5kaWYKIAogCkBAIC0zMDYsNyArMzA2LDcgQEAKICAgICB9CiAKICNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCi0gICAgaWYgKCB2YXIgKQorICAgIGlmICggdmFyICYmIGZhY2UtPmJsZW5kICkKICAgICB7CiAgICAgICBGVF9GYWNlICBmID0gRlRfRkFDRSggZmFjZSApOwogICAgICAgRlRfSW50ICAgYSA9IChGVF9JbnQpKmFhZHZhbmNlOwpkaWZmIC0tZ2l0IGEvc3JjL3NmbnQvdHRtdHguaCBiL3NyYy9zZm50L3R0bXR4LmgKaW5kZXggMjcwMTcwZC4uNTZkMmI2MiAxMDA2NDQKLS0tIGEvc3JjL3NmbnQvdHRtdHguaAorKysgYi9zcmMvc2ZudC90dG10eC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgTG9hZCB0aGUgbWV0cmljcyB0YWJsZXMgY29tbW9uIHRvIFRURiBhbmQgT1RGIGZvbnRzIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvc2ZudC90dHBvc3QuYyBiL3NyYy9zZm50L3R0cG9zdC5jCmluZGV4IGI5MmNhNWQuLjBlMTdjNmYgMTAwNjQ0Ci0tLSBhL3NyYy9zZm50L3R0cG9zdC5jCisrKyBiL3NyYy9zZm50L3R0cG9zdC5jCkBAIC01LDcgKzUsNyBAQAogICogICBQb3N0U2NyaXB0IG5hbWUgdGFibGUgcHJvY2Vzc2luZyBmb3IgVHJ1ZVR5cGUgYW5kIE9wZW5UeXBlIGZvbnRzCiAgKiAgIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC01OCw3ICs1OCw3IEBACiAjZGVmaW5lIE1BQ19OQU1FKCB4ICkgIChGVF9TdHJpbmcqKXBzbmFtZXMtPm1hY2ludG9zaF9uYW1lKCAoRlRfVUludCkoeCkgKQogCiAKLSNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUE9TVFNDUklQVF9OQU1FUyAqLworI2Vsc2UgLyogIUZUX0NPTkZJR19PUFRJT05fUE9TVFNDUklQVF9OQU1FUyAqLwogCiAKICAgIC8qIE90aGVyd2lzZSwgd2UgaWdub3JlIHRoZSBgcHNuYW1lcycgbW9kdWxlLCBhbmQgcHJvdmlkZSBvdXIgb3duICAqLwpAQCAtMTUyLDcgKzE1Miw3IEBACiAgIH07CiAKIAotI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUE9TVFNDUklQVF9OQU1FUyAqLworI2VuZGlmIC8qICFGVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVMgKi8KIAogCiAgIHN0YXRpYyBGVF9FcnJvcgpkaWZmIC0tZ2l0IGEvc3JjL3NmbnQvdHRwb3N0LmggYi9zcmMvc2ZudC90dHBvc3QuaAppbmRleCA2ZDY1YjU3Li41MjhmMWM1IDEwMDY0NAotLS0gYS9zcmMvc2ZudC90dHBvc3QuaAorKysgYi9zcmMvc2ZudC90dHBvc3QuaApAQCAtNSw3ICs1LDcgQEAKICAqICAgUG9zdFNjcmlwdCBuYW1lIHRhYmxlIHByb2Nlc3NpbmcgZm9yIFRydWVUeXBlIGFuZCBPcGVuVHlwZSBmb250cwogICogICAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3NmbnQvdHRzYml0LmMgYi9zcmMvc2ZudC90dHNiaXQuYwppbmRleCBlOWJhNjk3Li4zYzA2OTU1IDEwMDY0NAotLS0gYS9zcmMvc2ZudC90dHNiaXQuYworKysgYi9zcmMvc2ZudC90dHNiaXQuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRydWVUeXBlIGFuZCBPcGVuVHlwZSBlbWJlZGRlZCBiaXRtYXAgc3VwcG9ydCAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogQ29weXJpZ2h0IDIwMTMgYnkgR29vZ2xlLCBJbmMuCkBAIC0xNzIsMTcgKzE3Miw4IEBACiAgICAgICAgICAgZ290byBFeGl0OwogICAgICAgICB9CiAKLSNpZmRlZiBGVF9ERUJVR19MRVZFTF9UUkFDRQotICAgICAgICAvKiB3ZSBjdXJyZW50bHkgZG9uJ3Qgc3VwcG9ydCBiaXQgMTsgaG93ZXZlciwgaXQgaXMgYmV0dGVyIHRvICovCi0gICAgICAgIC8qIGRyYXcgYXQgbGVhc3Qgc29tZXRoaW5nLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgaWYgKCBmbGFncyA9PSAzICkKLSAgICAgICAgewotICAgICAgICAgIEZUX1RSQUNFMSgoICJ0dF9mYWNlX2xvYWRfc2JpdF9zdHJpa2VzOiIKLSAgICAgICAgICAgICAgICAgICAgICAiIHNiaXggb3ZlcmxheSBub3Qgc3VwcG9ydGVkIHlldFxuIiApKTsKLSAgICAgICAgICBGVF9UUkFDRTEoKCAiICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0gICAgICAgICAgICAgICAgICAgICAgIiBleHBlY3QgYmFkIHJlbmRlcmluZyByZXN1bHRzXG4iICkpOwotICAgICAgICB9Ci0jZW5kaWYKKyAgICAgICAgICBmYWNlLT5yb290LmZhY2VfZmxhZ3MgfD0gRlRfRkFDRV9GTEFHX1NCSVhfT1ZFUkxBWTsKIAogICAgICAgICAvKgogICAgICAgICAgKiBDb3VudCB0aGUgbnVtYmVyIG9mIHN0cmlrZXMgYXZhaWxhYmxlIGluIHRoZSB0YWJsZS4gIFdlIGFyZSBhIGJpdApAQCAtMzk0LDExICszODUsOSBAQAogCiAgICAgICAgIC8qIHNldCB0aGUgc2NhbGUgdmFsdWVzIChpbiAxNi4xNiB1bml0cykgc28gYWR2YW5jZXMgKi8KICAgICAgICAgLyogZnJvbSB0aGUgaG10eCBhbmQgdm10eCB0YWJsZSBhcmUgc2NhbGVkIGNvcnJlY3RseSAqLwotICAgICAgICBtZXRyaWNzLT54X3NjYWxlID0gRlRfTXVsRGl2KCBtZXRyaWNzLT54X3BwZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY0ICogMHgxMDAwMCwKKyAgICAgICAgbWV0cmljcy0+eF9zY2FsZSA9IEZUX0RpdkZpeCggbWV0cmljcy0+eF9wcGVtICogNjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UtPmhlYWRlci5Vbml0c19QZXJfRU0gKTsKLSAgICAgICAgbWV0cmljcy0+eV9zY2FsZSA9IEZUX011bERpdiggbWV0cmljcy0+eV9wcGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NCAqIDB4MTAwMDAsCisgICAgICAgIG1ldHJpY3MtPnlfc2NhbGUgPSBGVF9EaXZGaXgoIG1ldHJpY3MtPnlfcHBlbSAqIDY0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5oZWFkZXIuVW5pdHNfUGVyX0VNICk7CiAKICAgICAgICAgcmV0dXJuIEZUX0Vycl9PazsKQEAgLTQwOCw5ICszOTcsOSBAQAogICAgICAgewogICAgICAgICBGVF9TdHJlYW0gICAgICAgc3RyZWFtID0gZmFjZS0+cm9vdC5zdHJlYW07CiAgICAgICAgIEZUX1VJbnQgICAgICAgICBvZmZzZXQ7Ci0gICAgICAgIEZUX1VTaG9ydCAgICAgICB1cGVtLCBwcGVtLCByZXNvbHV0aW9uOworICAgICAgICBGVF9VU2hvcnQgICAgICAgcHBlbSwgcmVzb2x1dGlvbjsKICAgICAgICAgVFRfSG9yaUhlYWRlciAgKmhvcmk7Ci0gICAgICAgIEZUX1BvcyAgICAgICAgICBwcGVtXzsgLyogdG8gcmVkdWNlIGNhc3RzICovCisgICAgICAgIEZUX0ZpeGVkICAgICAgICBzY2FsZTsKIAogICAgICAgICBGVF9FcnJvciAgZXJyb3I7CiAgICAgICAgIEZUX0J5dGUqICBwOwpAQCAtNDMzLDMyICs0MjIsMjMgQEAKIAogICAgICAgICBGVF9GUkFNRV9FWElUKCk7CiAKLSAgICAgICAgdXBlbSA9IGZhY2UtPmhlYWRlci5Vbml0c19QZXJfRU07Ci0gICAgICAgIGhvcmkgPSAmZmFjZS0+aG9yaXpvbnRhbDsKLQogICAgICAgICBtZXRyaWNzLT54X3BwZW0gPSBwcGVtOwogICAgICAgICBtZXRyaWNzLT55X3BwZW0gPSBwcGVtOwogCi0gICAgICAgIHBwZW1fID0gKEZUX1BvcylwcGVtOworICAgICAgICBzY2FsZSA9IEZUX0RpdkZpeCggcHBlbSAqIDY0LCBmYWNlLT5oZWFkZXIuVW5pdHNfUGVyX0VNICk7CisgICAgICAgIGhvcmkgID0gJmZhY2UtPmhvcml6b250YWw7CiAKLSAgICAgICAgbWV0cmljcy0+YXNjZW5kZXIgPQotICAgICAgICAgIEZUX011bERpdiggaG9yaS0+QXNjZW5kZXIsIHBwZW1fICogNjQsIHVwZW0gKTsKLSAgICAgICAgbWV0cmljcy0+ZGVzY2VuZGVyID0KLSAgICAgICAgICBGVF9NdWxEaXYoIGhvcmktPkRlc2NlbmRlciwgcHBlbV8gKiA2NCwgdXBlbSApOwotICAgICAgICBtZXRyaWNzLT5oZWlnaHQgPQotICAgICAgICAgIEZUX011bERpdiggaG9yaS0+QXNjZW5kZXIgLSBob3JpLT5EZXNjZW5kZXIgKyBob3JpLT5MaW5lX0dhcCwKLSAgICAgICAgICAgICAgICAgICAgIHBwZW1fICogNjQsIHVwZW0gKTsKLSAgICAgICAgbWV0cmljcy0+bWF4X2FkdmFuY2UgPQotICAgICAgICAgIEZUX011bERpdiggaG9yaS0+YWR2YW5jZV9XaWR0aF9NYXgsIHBwZW1fICogNjQsIHVwZW0gKTsKKyAgICAgICAgbWV0cmljcy0+YXNjZW5kZXIgICAgPSBGVF9NdWxGaXgoIGhvcmktPkFzY2VuZGVyLCBzY2FsZSApOworICAgICAgICBtZXRyaWNzLT5kZXNjZW5kZXIgICA9IEZUX011bEZpeCggaG9yaS0+RGVzY2VuZGVyLCBzY2FsZSApOworICAgICAgICBtZXRyaWNzLT5oZWlnaHQgICAgICA9CisgICAgICAgICAgRlRfTXVsRml4KCBob3JpLT5Bc2NlbmRlciAtIGhvcmktPkRlc2NlbmRlciArIGhvcmktPkxpbmVfR2FwLAorICAgICAgICAgICAgICAgICAgICAgc2NhbGUgKTsKKyAgICAgICAgbWV0cmljcy0+bWF4X2FkdmFuY2UgPSBGVF9NdWxGaXgoIGhvcmktPmFkdmFuY2VfV2lkdGhfTWF4LCBzY2FsZSApOwogCiAgICAgICAgIC8qIHNldCB0aGUgc2NhbGUgdmFsdWVzIChpbiAxNi4xNiB1bml0cykgc28gYWR2YW5jZXMgKi8KICAgICAgICAgLyogZnJvbSB0aGUgaG10eCBhbmQgdm10eCB0YWJsZSBhcmUgc2NhbGVkIGNvcnJlY3RseSAqLwotICAgICAgICBtZXRyaWNzLT54X3NjYWxlID0gRlRfTXVsRGl2KCBtZXRyaWNzLT54X3BwZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY0ICogMHgxMDAwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+aGVhZGVyLlVuaXRzX1Blcl9FTSApOwotICAgICAgICBtZXRyaWNzLT55X3NjYWxlID0gRlRfTXVsRGl2KCBtZXRyaWNzLT55X3BwZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY0ICogMHgxMDAwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+aGVhZGVyLlVuaXRzX1Blcl9FTSApOworICAgICAgICBtZXRyaWNzLT54X3NjYWxlID0gc2NhbGU7CisgICAgICAgIG1ldHJpY3MtPnlfc2NhbGUgPSBzY2FsZTsKIAogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgICB9CkBAIC03MzAsNiArNzEwLDkgQEAKICAgICBwaXRjaCAgICAgID0gYml0bWFwLT5waXRjaDsKICAgICBsaW5lICAgICAgID0gYml0bWFwLT5idWZmZXI7CiAKKyAgICBpZiAoICFsaW5lICkKKyAgICAgIGdvdG8gRXhpdDsKKwogICAgIHdpZHRoICA9IGRlY29kZXItPm1ldHJpY3MtPndpZHRoOwogICAgIGhlaWdodCA9IGRlY29kZXItPm1ldHJpY3MtPmhlaWdodDsKIApAQCAtMTIxMCw3ICsxMTkzLDcgQEAKICAgICAgICAgICBnb3RvIEZhaWw7CiAKICAgICAgICAgcCArPSAxOyAgLyogc2tpcCBwYWRkaW5nICovCi0gICAgICAgIC8qIGZhbGwtdGhyb3VnaCAqLworICAgICAgICBGQUxMX1RIUk9VR0g7CiAKICAgICAgIGNhc2UgOToKICAgICAgICAgbG9hZGVyID0gdHRfc2JpdF9kZWNvZGVyX2xvYWRfY29tcG91bmQ7CkBAIC0xNTc3LDIzICsxNTYwLDQwIEBACiAKICAgICBpZiAoICFlcnJvciApCiAgICAgewotICAgICAgRlRfU2hvcnQgICBhYmVhcmluZzsKKyAgICAgIEZUX1Nob3J0ICAgYWJlYXJpbmc7IC8qIG5vdCB1c2VkIGhlcmUgKi8KICAgICAgIEZUX1VTaG9ydCAgYWFkdmFuY2U7CiAKIAogICAgICAgdHRfZmFjZV9nZXRfbWV0cmljcyggZmFjZSwgRkFMU0UsIGdseXBoX2luZGV4LCAmYWJlYXJpbmcsICZhYWR2YW5jZSApOwogCiAgICAgICBtZXRyaWNzLT5ob3JpQmVhcmluZ1ggPSAoRlRfU2hvcnQpb3JpZ2luT2Zmc2V0WDsKLSAgICAgIG1ldHJpY3MtPmhvcmlCZWFyaW5nWSA9IChGVF9TaG9ydCkoIC1vcmlnaW5PZmZzZXRZICsgbWV0cmljcy0+aGVpZ2h0ICk7CisgICAgICBtZXRyaWNzLT52ZXJ0QmVhcmluZ1ggPSAoRlRfU2hvcnQpb3JpZ2luT2Zmc2V0WDsKKworICAgICAgbWV0cmljcy0+aG9yaUJlYXJpbmdZID0gKEZUX1Nob3J0KSggb3JpZ2luT2Zmc2V0WSArIG1ldHJpY3MtPmhlaWdodCApOworICAgICAgbWV0cmljcy0+dmVydEJlYXJpbmdZID0gKEZUX1Nob3J0KW9yaWdpbk9mZnNldFk7CisKICAgICAgIG1ldHJpY3MtPmhvcmlBZHZhbmNlICA9IChGVF9VU2hvcnQpKCBhYWR2YW5jZSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+cm9vdC5zaXplLT5tZXRyaWNzLnhfcHBlbSAvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+aGVhZGVyLlVuaXRzX1Blcl9FTSApOworCisgICAgICBpZiAoIGZhY2UtPnZlcnRpY2FsX2luZm8gKQorICAgICAgICB0dF9mYWNlX2dldF9tZXRyaWNzKCBmYWNlLCBUUlVFLCBnbHlwaF9pbmRleCwgJmFiZWFyaW5nLCAmYWFkdmFuY2UgKTsKKyAgICAgIGVsc2UgaWYgKCBmYWNlLT5vczIudmVyc2lvbiAhPSAweEZGRkZVICkKKyAgICAgICAgYWFkdmFuY2UgPSAoRlRfVVNob3J0KUZUX0FCUyggZmFjZS0+b3MyLnNUeXBvQXNjZW5kZXIgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5vczIuc1R5cG9EZXNjZW5kZXIgKTsKKyAgICAgIGVsc2UKKyAgICAgICAgYWFkdmFuY2UgPSAoRlRfVVNob3J0KUZUX0FCUyggZmFjZS0+aG9yaXpvbnRhbC5Bc2NlbmRlciAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UtPmhvcml6b250YWwuRGVzY2VuZGVyICk7CisKKyAgICAgIG1ldHJpY3MtPnZlcnRBZHZhbmNlICA9IChGVF9VU2hvcnQpKCBhYWR2YW5jZSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+cm9vdC5zaXplLT5tZXRyaWNzLnhfcHBlbSAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+aGVhZGVyLlVuaXRzX1Blcl9FTSApOwogICAgIH0KIAogICAgIHJldHVybiBlcnJvcjsKICAgfQogCi0gIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQogICB0dF9mYWNlX2xvYWRfc2JpdF9pbWFnZSggVFRfRmFjZSAgICAgICAgICAgICAgZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICAgICAgICAgIHN0cmlrZV9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgICAgIGdseXBoX2luZGV4LApkaWZmIC0tZ2l0IGEvc3JjL3NmbnQvdHRzYml0LmggYi9zcmMvc2ZudC90dHNiaXQuaAppbmRleCA3YTBlZDkyLi4wN2UyZGI0IDEwMDY0NAotLS0gYS9zcmMvc2ZudC90dHNiaXQuaAorKysgYi9zcmMvc2ZudC90dHNiaXQuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRydWVUeXBlIGFuZCBPcGVuVHlwZSBlbWJlZGRlZCBiaXRtYXAgc3VwcG9ydCAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3NmbnQvdHRzdmcuYyBiL3NyYy9zZm50L3R0c3ZnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFiYmI2NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9zZm50L3R0c3ZnLmMKQEAgLTAsMCArMSw0MTMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogdHRzdmcuYworICoKKyAqICAgT3BlblR5cGUgU1ZHIENvbG9yIChzcGVjaWZpY2F0aW9uKS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMyBieQorICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgV2VybmVyIExlbWJlcmcsIGFuZCBNb2F6aW4gS2hhdHRpLgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKKyAqIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CisgKiBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKKyAqIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAorICogdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorICoKKyAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqICdTVkcnIHRhYmxlIHNwZWNpZmljYXRpb246CisgICAqCisgICAqICAgIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3R5cG9ncmFwaHkvb3BlbnR5cGUvc3BlYy9zdmcKKyAgICoKKyAgICovCisKKyNpbmNsdWRlIDxmdDJidWlsZC5oPgorI2luY2x1ZGUgPGZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmg+CisjaW5jbHVkZSA8ZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmg+CisjaW5jbHVkZSA8ZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oPgorI2luY2x1ZGUgPGZyZWV0eXBlL3R0dGFncy5oPgorI2luY2x1ZGUgPGZyZWV0eXBlL2Z0Z3ppcC5oPgorI2luY2x1ZGUgPGZyZWV0eXBlL290c3ZnLmg+CisKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fU1ZHCisKKyNpbmNsdWRlICJ0dHN2Zy5oIgorCisKKyAgLyogTk9URTogVGhlc2UgdGFibGUgc2l6ZXMgYXJlIGdpdmVuIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLiAqLworI2RlZmluZSBTVkdfVEFCTEVfSEVBREVSX1NJWkUgICAgICAgICAgICgxMFUpCisjZGVmaW5lIFNWR19ET0NVTUVOVF9SRUNPUkRfU0laRSAgICAgICAgKDEyVSkKKyNkZWZpbmUgU1ZHX0RPQ1VNRU5UX0xJU1RfTUlOSU1VTV9TSVpFICAoMlUgKyBTVkdfRE9DVU1FTlRfUkVDT1JEX1NJWkUpCisjZGVmaW5lIFNWR19NSU5JTVVNX1NJWkUgICAgICAgICAgICAgICAgKFNWR19UQUJMRV9IRUFERVJfU0laRSArICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR19ET0NVTUVOVF9MSVNUX01JTklNVU1fU0laRSkKKworCisgIHR5cGVkZWYgc3RydWN0ICBTdmdfCisgIHsKKyAgICBGVF9VU2hvcnQgIHZlcnNpb247ICAgICAgICAgICAgICAgICAvKiB0YWJsZSB2ZXJzaW9uIChzdGFydGluZyBhdCAwKSAgKi8KKyAgICBGVF9VU2hvcnQgIG51bV9lbnRyaWVzOyAgICAgICAgICAgICAvKiBudW1iZXIgb2YgU1ZHIGRvY3VtZW50IHJlY29yZHMgKi8KKworICAgIEZUX0J5dGUqICBzdmdfZG9jX2xpc3Q7ICAvKiBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiBTVkcgRG9jdW1lbnQgTGlzdCAqLworCisgICAgdm9pZCogICAgIHRhYmxlOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbWVtb3J5IHRoYXQgYmFja3MgdXAgU1ZHICovCisgICAgRlRfVUxvbmcgIHRhYmxlX3NpemU7CisKKyAgfSBTdmc7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogVGhlIG1hY3JvIEZUX0NPTVBPTkVOVCBpcyB1c2VkIGluIHRyYWNlIG1vZGUuICBJdCBpcyBhbiBpbXBsaWNpdAorICAgKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c3VlZCB0byBwcmludC9sb2cKKyAgICogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4KKyAgICovCisjdW5kZWYgIEZUX0NPTVBPTkVOVAorI2RlZmluZSBGVF9DT01QT05FTlQgIHR0c3ZnCisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgdHRfZmFjZV9sb2FkX3N2ZyggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSApCisgIHsKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gZmFjZS0+cm9vdC5tZW1vcnk7CisKKyAgICBGVF9VTG9uZyAgdGFibGVfc2l6ZTsKKyAgICBGVF9CeXRlKiAgdGFibGUgPSBOVUxMOworICAgIEZUX0J5dGUqICBwICAgICA9IE5VTEw7CisgICAgU3ZnKiAgICAgIHN2ZyAgID0gTlVMTDsKKyAgICBGVF9VTG9uZyAgb2Zmc2V0VG9TVkdEb2N1bWVudExpc3Q7CisKKworICAgIGVycm9yID0gZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19TVkcsIHN0cmVhbSwgJnRhYmxlX3NpemUgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gTm9TVkc7CisKKyAgICBpZiAoIHRhYmxlX3NpemUgPCBTVkdfTUlOSU1VTV9TSVpFICkKKyAgICAgIGdvdG8gSW52YWxpZFRhYmxlOworCisgICAgaWYgKCBGVF9GUkFNRV9FWFRSQUNUKCB0YWJsZV9zaXplLCB0YWJsZSApICkKKyAgICAgIGdvdG8gTm9TVkc7CisKKyAgICAvKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBTVkcgb2JqZWN0ICovCisgICAgaWYgKCBGVF9ORVcoIHN2ZyApICkKKyAgICAgIGdvdG8gTm9TVkc7CisKKyAgICBwICAgICAgICAgICAgICAgICAgICAgICA9IHRhYmxlOworICAgIHN2Zy0+dmVyc2lvbiAgICAgICAgICAgID0gRlRfTkVYVF9VU0hPUlQoIHAgKTsKKyAgICBvZmZzZXRUb1NWR0RvY3VtZW50TGlzdCA9IEZUX05FWFRfVUxPTkcoIHAgKTsKKworICAgIGlmICggb2Zmc2V0VG9TVkdEb2N1bWVudExpc3QgPCBTVkdfVEFCTEVfSEVBREVSX1NJWkUgICAgICAgICAgICB8fAorICAgICAgICAgb2Zmc2V0VG9TVkdEb2N1bWVudExpc3QgPiB0YWJsZV9zaXplIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdfRE9DVU1FTlRfTElTVF9NSU5JTVVNX1NJWkUgKQorICAgICAgZ290byBJbnZhbGlkVGFibGU7CisKKyAgICBzdmctPnN2Z19kb2NfbGlzdCA9IChGVF9CeXRlKikoIHRhYmxlICsgb2Zmc2V0VG9TVkdEb2N1bWVudExpc3QgKTsKKworICAgIHAgICAgICAgICAgICAgICAgPSBzdmctPnN2Z19kb2NfbGlzdDsKKyAgICBzdmctPm51bV9lbnRyaWVzID0gRlRfTkVYVF9VU0hPUlQoIHAgKTsKKworICAgIEZUX1RSQUNFMygoICJ2ZXJzaW9uOiAlZFxuIiwgc3ZnLT52ZXJzaW9uICkpOworICAgIEZUX1RSQUNFMygoICJudW1iZXIgb2YgZW50cmllczogJWRcbiIsIHN2Zy0+bnVtX2VudHJpZXMgKSk7CisKKyAgICBpZiAoIG9mZnNldFRvU1ZHRG9jdW1lbnRMaXN0ICsgMlUgKworICAgICAgICAgICBzdmctPm51bV9lbnRyaWVzICogU1ZHX0RPQ1VNRU5UX1JFQ09SRF9TSVpFID4gdGFibGVfc2l6ZSApCisgICAgICBnb3RvIEludmFsaWRUYWJsZTsKKworICAgIHN2Zy0+dGFibGUgICAgICA9IHRhYmxlOworICAgIHN2Zy0+dGFibGVfc2l6ZSA9IHRhYmxlX3NpemU7CisKKyAgICBmYWNlLT5zdmcgICAgICAgICAgICAgID0gc3ZnOworICAgIGZhY2UtPnJvb3QuZmFjZV9mbGFncyB8PSBGVF9GQUNFX0ZMQUdfU1ZHOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKworICBJbnZhbGlkVGFibGU6CisgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9UYWJsZSApOworCisgIE5vU1ZHOgorICAgIEZUX0ZSQU1FX1JFTEVBU0UoIHRhYmxlICk7CisgICAgRlRfRlJFRSggc3ZnICk7CisgICAgZmFjZS0+c3ZnID0gTlVMTDsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgdHRfZmFjZV9mcmVlX3N2ZyggVFRfRmFjZSAgZmFjZSApCisgIHsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGZhY2UtPnJvb3QubWVtb3J5OworICAgIEZUX1N0cmVhbSAgc3RyZWFtID0gZmFjZS0+cm9vdC5zdHJlYW07CisKKyAgICBTdmcqICBzdmcgPSAoU3ZnKilmYWNlLT5zdmc7CisKKworICAgIGlmICggc3ZnICkKKyAgICB7CisgICAgICBGVF9GUkFNRV9SRUxFQVNFKCBzdmctPnRhYmxlICk7CisgICAgICBGVF9GUkVFKCBzdmcgKTsKKyAgICB9CisgIH0KKworCisgIHR5cGVkZWYgc3RydWN0ICBTdmdfZG9jXworICB7CisgICAgRlRfVVNob3J0ICBzdGFydF9nbHlwaF9pZDsKKyAgICBGVF9VU2hvcnQgIGVuZF9nbHlwaF9pZDsKKworICAgIEZUX1VMb25nICBvZmZzZXQ7CisgICAgRlRfVUxvbmcgIGxlbmd0aDsKKworICB9IFN2Z19kb2M7CisKKworICBzdGF0aWMgU3ZnX2RvYworICBleHRyYWN0X3N2Z19kb2MoIEZUX0J5dGUqICBzdHJlYW0gKQorICB7CisgICAgU3ZnX2RvYyAgZG9jOworCisKKyAgICBkb2Muc3RhcnRfZ2x5cGhfaWQgPSBGVF9ORVhUX1VTSE9SVCggc3RyZWFtICk7CisgICAgZG9jLmVuZF9nbHlwaF9pZCAgID0gRlRfTkVYVF9VU0hPUlQoIHN0cmVhbSApOworCisgICAgZG9jLm9mZnNldCA9IEZUX05FWFRfVUxPTkcoIHN0cmVhbSApOworICAgIGRvYy5sZW5ndGggPSBGVF9ORVhUX1VMT05HKCBzdHJlYW0gKTsKKworICAgIHJldHVybiBkb2M7CisgIH0KKworCisgIHN0YXRpYyBGVF9JbnQKKyAgY29tcGFyZV9zdmdfZG9jKCBTdmdfZG9jICBkb2MsCisgICAgICAgICAgICAgICAgICAgRlRfVUludCAgZ2x5cGhfaW5kZXggKQorICB7CisgICAgaWYgKCBnbHlwaF9pbmRleCA8IGRvYy5zdGFydF9nbHlwaF9pZCApCisgICAgICByZXR1cm4gLTE7CisgICAgZWxzZSBpZiAoIGdseXBoX2luZGV4ID4gZG9jLmVuZF9nbHlwaF9pZCApCisgICAgICByZXR1cm4gMTsKKyAgICBlbHNlCisgICAgICByZXR1cm4gMDsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGZpbmRfZG9jKCBGVF9CeXRlKiAgICBkb2N1bWVudF9yZWNvcmRzLAorICAgICAgICAgICAgRlRfVVNob3J0ICAgbnVtX2VudHJpZXMsCisgICAgICAgICAgICBGVF9VSW50ICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgIEZUX1VMb25nICAgKmRvY19vZmZzZXQsCisgICAgICAgICAgICBGVF9VTG9uZyAgICpkb2NfbGVuZ3RoLAorICAgICAgICAgICAgRlRfVVNob3J0ICAqc3RhcnRfZ2x5cGgsCisgICAgICAgICAgICBGVF9VU2hvcnQgICplbmRfZ2x5cGggKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yOworCisgICAgU3ZnX2RvYyAgc3RhcnRfZG9jOworICAgIFN2Z19kb2MgIG1pZF9kb2MgPSB7IDAsIDAsIDAsIDAgfTsgLyogcGFjaWZ5IGNvbXBpbGVyICovCisgICAgU3ZnX2RvYyAgZW5kX2RvYzsKKworICAgIEZUX0Jvb2wgIGZvdW5kID0gRkFMU0U7CisgICAgRlRfVUludCAgaSAgICAgPSAwOworCisgICAgRlRfVUludCAgc3RhcnRfaW5kZXggPSAwOworICAgIEZUX1VJbnQgIGVuZF9pbmRleCAgID0gbnVtX2VudHJpZXMgLSAxOworICAgIEZUX0ludCAgIGNvbXBfcmVzOworCisKKyAgICAvKiBzZWFyY2ggYWxnb3JpdGhtICovCisgICAgaWYgKCBudW1fZW50cmllcyA9PSAwICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1RhYmxlICk7CisgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgc3RhcnRfZG9jID0gZXh0cmFjdF9zdmdfZG9jKCBkb2N1bWVudF9yZWNvcmRzICsgc3RhcnRfaW5kZXggKiAxMiApOworICAgIGVuZF9kb2MgICA9IGV4dHJhY3Rfc3ZnX2RvYyggZG9jdW1lbnRfcmVjb3JkcyArIGVuZF9pbmRleCAqIDEyICk7CisKKyAgICBpZiAoICggY29tcGFyZV9zdmdfZG9jKCBzdGFydF9kb2MsIGdseXBoX2luZGV4ICkgPT0gLTEgKSB8fAorICAgICAgICAgKCBjb21wYXJlX3N2Z19kb2MoIGVuZF9kb2MsIGdseXBoX2luZGV4ICkgPT0gMSApICAgICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0dseXBoX0luZGV4ICk7CisgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgd2hpbGUgKCBzdGFydF9pbmRleCA8PSBlbmRfaW5kZXggKQorICAgIHsKKyAgICAgIGkgICAgICAgID0gKCBzdGFydF9pbmRleCArIGVuZF9pbmRleCApIC8gMjsKKyAgICAgIG1pZF9kb2MgID0gZXh0cmFjdF9zdmdfZG9jKCBkb2N1bWVudF9yZWNvcmRzICsgaSAqIDEyICk7CisgICAgICBjb21wX3JlcyA9IGNvbXBhcmVfc3ZnX2RvYyggbWlkX2RvYywgZ2x5cGhfaW5kZXggKTsKKworICAgICAgaWYgKCBjb21wX3JlcyA9PSAxICkKKyAgICAgIHsKKyAgICAgICAgc3RhcnRfaW5kZXggPSBpICsgMTsKKyAgICAgICAgc3RhcnRfZG9jICAgPSBleHRyYWN0X3N2Z19kb2MoIGRvY3VtZW50X3JlY29yZHMgKyBzdGFydF9pbmRleCAqIDQgKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKCBjb21wX3JlcyA9PSAtMSApCisgICAgICB7CisgICAgICAgIGVuZF9pbmRleCA9IGkgLSAxOworICAgICAgICBlbmRfZG9jICAgPSBleHRyYWN0X3N2Z19kb2MoIGRvY3VtZW50X3JlY29yZHMgKyBlbmRfaW5kZXggKiA0ICk7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIGZvdW5kID0gVFJVRTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIC8qIHNlYXJjaCBhbGdvcml0aG0gZW5kICovCisKKyAgICBpZiAoIGZvdW5kICE9IFRSVUUgKQorICAgIHsKKyAgICAgIEZUX1RSQUNFNSgoICJTVkcgZ2x5cGggbm90IGZvdW5kXG4iICkpOworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9HbHlwaF9JbmRleCApOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgKmRvY19vZmZzZXQgPSBtaWRfZG9jLm9mZnNldDsKKyAgICAgICpkb2NfbGVuZ3RoID0gbWlkX2RvYy5sZW5ndGg7CisKKyAgICAgICpzdGFydF9nbHlwaCA9IG1pZF9kb2Muc3RhcnRfZ2x5cGhfaWQ7CisgICAgICAqZW5kX2dseXBoICAgPSBtaWRfZG9jLmVuZF9nbHlwaF9pZDsKKworICAgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgdHRfZmFjZV9sb2FkX3N2Z19kb2MoIEZUX0dseXBoU2xvdCAgZ2x5cGgsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgIGdseXBoX2luZGV4ICkKKyAgeworICAgIEZUX0Vycm9yICAgZXJyb3IgID0gRlRfRXJyX09rOworICAgIFRUX0ZhY2UgICAgZmFjZSAgID0gKFRUX0ZhY2UpZ2x5cGgtPmZhY2U7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBmYWNlLT5yb290Lm1lbW9yeTsKKyAgICBTdmcqICAgICAgIHN2ZyAgICA9IChTdmcqKWZhY2UtPnN2ZzsKKworICAgIEZUX0J5dGUqICBkb2NfbGlzdDsKKyAgICBGVF9VTG9uZyAgZG9jX2xpbWl0OworCisgICAgRlRfQnl0ZSogICBkb2M7CisgICAgRlRfVUxvbmcgICBkb2Nfb2Zmc2V0OworICAgIEZUX1VMb25nICAgZG9jX2xlbmd0aDsKKyAgICBGVF9VU2hvcnQgIGRvY19zdGFydF9nbHlwaF9pZDsKKyAgICBGVF9VU2hvcnQgIGRvY19lbmRfZ2x5cGhfaWQ7CisKKyAgICBGVF9TVkdfRG9jdW1lbnQgIHN2Z19kb2N1bWVudCA9IChGVF9TVkdfRG9jdW1lbnQpZ2x5cGgtPm90aGVyOworCisKKyAgICBGVF9BU1NFUlQoICEoIHN2ZyA9PSBOVUxMICkgKTsKKworICAgIGRvY19saXN0ID0gc3ZnLT5zdmdfZG9jX2xpc3Q7CisKKyAgICBlcnJvciA9IGZpbmRfZG9jKCBkb2NfbGlzdCArIDIsIHN2Zy0+bnVtX2VudHJpZXMsIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRvY19vZmZzZXQsICZkb2NfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRvY19zdGFydF9nbHlwaF9pZCwgJmRvY19lbmRfZ2x5cGhfaWQgKTsKKyAgICBpZiAoIGVycm9yICE9IEZUX0Vycl9PayApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBkb2NfbGltaXQgPSBzdmctPnRhYmxlX3NpemUgLQorICAgICAgICAgICAgICAgICAgKEZUX1VMb25nKSggZG9jX2xpc3QgLSAoRlRfQnl0ZSopc3ZnLT50YWJsZSApOworICAgIGlmICggZG9jX29mZnNldCA+IGRvY19saW1pdCAgICAgICAgICAgICAgfHwKKyAgICAgICAgIGRvY19sZW5ndGggPiBkb2NfbGltaXQgLSBkb2Nfb2Zmc2V0ICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1RhYmxlICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgZG9jID0gZG9jX2xpc3QgKyBkb2Nfb2Zmc2V0OworCisgICAgaWYgKCBkb2NfbGVuZ3RoID4gNiAmJgorICAgICAgICAgZG9jWzBdID09IDB4MUYgJiYKKyAgICAgICAgIGRvY1sxXSA9PSAweDhCICYmCisgICAgICAgICBkb2NbMl0gPT0gMHgwOCApCisgICAgeworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fVVNFX1pMSUIKKworICAgICAgRlRfVUxvbmcgIHVuY29tcF9zaXplOworICAgICAgRlRfQnl0ZSogIHVuY29tcF9idWZmZXIgPSBOVUxMOworCisKKyAgICAgIC8qCisgICAgICAgKiBHZXQgdGhlIHNpemUgb2YgdGhlIG9yaWdpbmFsIGRvY3VtZW50LiAgVGhpcyBoZWxwcyBpbiBhbGxvdHRpbmcgdGhlCisgICAgICAgKiBidWZmZXIgdG8gYWNjb21tb2RhdGUgdGhlIHVuY29tcHJlc3NlZCB2ZXJzaW9uLiAgVGhlIGxhc3QgNCBieXRlcworICAgICAgICogb2YgdGhlIGNvbXByZXNzZWQgZG9jdW1lbnQgYXJlIGVxdWFsIHRvIHRoZSBvcmlnaW5hbCBzaXplIG1vZHVsbworICAgICAgICogMl4zMi4gIFNpbmNlIHRoZSBzaXplIG9mIFNWRyBkb2N1bWVudHMgaXMgbGVzcyB0aGFuIDJeMzIgYnl0ZXMgd2UKKyAgICAgICAqIGNhbiB1c2UgdGhpcyBhY2N1cmF0ZWx5LiAgVGhlIGZvdXIgYnl0ZXMgYXJlIHN0b3JlZCBpbgorICAgICAgICogbGl0dGxlLWVuZGlhbiBmb3JtYXQuCisgICAgICAgKi8KKyAgICAgIEZUX1RSQUNFNCgoICJTVkcgZG9jdW1lbnQgaXMgR1pJUCBjb21wcmVzc2VkXG4iICkpOworICAgICAgdW5jb21wX3NpemUgPSAoRlRfVUxvbmcpZG9jW2RvY19sZW5ndGggLSAxXSA8PCAyNCB8CisgICAgICAgICAgICAgICAgICAgIChGVF9VTG9uZylkb2NbZG9jX2xlbmd0aCAtIDJdIDw8IDE2IHwKKyAgICAgICAgICAgICAgICAgICAgKEZUX1VMb25nKWRvY1tkb2NfbGVuZ3RoIC0gM10gPDwgOCAgfAorICAgICAgICAgICAgICAgICAgICAoRlRfVUxvbmcpZG9jW2RvY19sZW5ndGggLSA0XTsKKworICAgICAgaWYgKCBGVF9RQUxMT0MoIHVuY29tcF9idWZmZXIsIHVuY29tcF9zaXplICkgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGVycm9yID0gRlRfR3ppcF9VbmNvbXByZXNzKCBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5jb21wX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdW5jb21wX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY19sZW5ndGggKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgeworICAgICAgICBGVF9GUkVFKCB1bmNvbXBfYnVmZmVyICk7CisgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfVGFibGUgKTsKKyAgICAgICAgZ290byBFeGl0OworICAgICAgfQorCisgICAgICBnbHlwaC0+aW50ZXJuYWwtPmZsYWdzIHw9IEZUX0dMWVBIX09XTl9HWklQX1NWRzsKKworICAgICAgZG9jICAgICAgICA9IHVuY29tcF9idWZmZXI7CisgICAgICBkb2NfbGVuZ3RoID0gdW5jb21wX3NpemU7CisKKyNlbHNlIC8qICFGVF9DT05GSUdfT1BUSU9OX1VTRV9aTElCICovCisKKyAgICAgIGVycm9yID0gRlRfVEhST1coIFVuaW1wbGVtZW50ZWRfRmVhdHVyZSApOworICAgICAgZ290byBFeGl0OworCisjZW5kaWYgLyogIUZUX0NPTkZJR19PUFRJT05fVVNFX1pMSUIgKi8KKyAgICB9CisKKyAgICBzdmdfZG9jdW1lbnQtPnN2Z19kb2N1bWVudCAgICAgICAgPSBkb2M7CisgICAgc3ZnX2RvY3VtZW50LT5zdmdfZG9jdW1lbnRfbGVuZ3RoID0gZG9jX2xlbmd0aDsKKworICAgIHN2Z19kb2N1bWVudC0+bWV0cmljcyAgICAgID0gZ2x5cGgtPmZhY2UtPnNpemUtPm1ldHJpY3M7CisgICAgc3ZnX2RvY3VtZW50LT51bml0c19wZXJfRU0gPSBnbHlwaC0+ZmFjZS0+dW5pdHNfcGVyX0VNOworCisgICAgc3ZnX2RvY3VtZW50LT5zdGFydF9nbHlwaF9pZCA9IGRvY19zdGFydF9nbHlwaF9pZDsKKyAgICBzdmdfZG9jdW1lbnQtPmVuZF9nbHlwaF9pZCAgID0gZG9jX2VuZF9nbHlwaF9pZDsKKworICAgIHN2Z19kb2N1bWVudC0+dHJhbnNmb3JtLnh4ID0gMHgxMDAwMDsKKyAgICBzdmdfZG9jdW1lbnQtPnRyYW5zZm9ybS54eSA9IDA7CisgICAgc3ZnX2RvY3VtZW50LT50cmFuc2Zvcm0ueXggPSAwOworICAgIHN2Z19kb2N1bWVudC0+dHJhbnNmb3JtLnl5ID0gMHgxMDAwMDsKKworICAgIHN2Z19kb2N1bWVudC0+ZGVsdGEueCA9IDA7CisgICAgc3ZnX2RvY3VtZW50LT5kZWx0YS55ID0gMDsKKworICAgIEZUX1RSQUNFNSgoICJzdGFydF9nbHlwaF9pZDogJWRcbiIsIGRvY19zdGFydF9nbHlwaF9pZCApKTsKKyAgICBGVF9UUkFDRTUoKCAiZW5kX2dseXBoX2lkOiAgICVkXG4iLCBkb2NfZW5kX2dseXBoX2lkICkpOworICAgIEZUX1RSQUNFNSgoICJzdmdfZG9jdW1lbnQ6XG4iICkpOworICAgIEZUX1RSQUNFNSgoICIgJS4qc1xuIiwgKEZUX1VJbnQpZG9jX2xlbmd0aCwgZG9jICkpOworCisgICAgZ2x5cGgtPm90aGVyID0gc3ZnX2RvY3VtZW50OworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKyNlbHNlIC8qICFGVF9DT05GSUdfT1BUSU9OX1NWRyAqLworCisgIC8qIEFOU0kgQyBkb2Vzbid0IGxpa2UgZW1wdHkgc291cmNlIGZpbGVzICovCisgIHR5cGVkZWYgaW50ICBfdHRfc3ZnX2R1bW15OworCisjZW5kaWYgLyogIUZUX0NPTkZJR19PUFRJT05fU1ZHICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9zcmMvc2ZudC90dHN2Zy5oIGIvc3JjL3NmbnQvdHRzdmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjMyMzIxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3NmbnQvdHRzdmcuaApAQCAtMCwwICsxLDQzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIHR0c3ZnLmgKKyAqCisgKiAgIE9wZW5UeXBlIFNWRyBDb2xvciAoc3BlY2lmaWNhdGlvbikuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDIyLTIwMjMgYnkKKyAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIFdlcm5lciBMZW1iZXJnLCBhbmQgTW9hemluIEtoYXR0aS4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCisgKiBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorICogbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCisgKiB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKKyAqIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKyAqCisgKi8KKworI2lmbmRlZiBUVFNWR19IXworI2RlZmluZSBUVFNWR19IXworCisjaW5jbHVkZSA8ZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaD4KKyNpbmNsdWRlIDxmcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmg+CisKKworRlRfQkVHSU5fSEVBREVSCisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgdHRfZmFjZV9sb2FkX3N2ZyggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSApOworCisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgdHRfZmFjZV9mcmVlX3N2ZyggVFRfRmFjZSAgZmFjZSApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHR0X2ZhY2VfbG9hZF9zdmdfZG9jKCBGVF9HbHlwaFNsb3QgIGdseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBnbHlwaF9pbmRleCApOworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBUVFNWR19IXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3NmbnQvd29mZjJ0YWdzLmMgYi9zcmMvc2ZudC93b2ZmMnRhZ3MuYwppbmRleCBmZThmNWNmLi43YTBhMzUxIDEwMDY0NAotLS0gYS9zcmMvc2ZudC93b2ZmMnRhZ3MuYworKysgYi9zcmMvc2ZudC93b2ZmMnRhZ3MuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFdPRkYyIEZvbnQgdGFibGUgdGFncyAoYmFzZSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIzIGJ5CiAgKiBOaWtoaWwgUmFtYWtyaXNobmFuLCBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3NmbnQvd29mZjJ0YWdzLmggYi9zcmMvc2ZudC93b2ZmMnRhZ3MuaAppbmRleCA0ZWYwYTY1Li4xMjAxODQ4IDEwMDY0NAotLS0gYS9zcmMvc2ZudC93b2ZmMnRhZ3MuaAorKysgYi9zcmMvc2ZudC93b2ZmMnRhZ3MuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFdPRkYyIEZvbnQgdGFibGUgdGFncyAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIzIGJ5CiAgKiBOaWtoaWwgUmFtYWtyaXNobmFuLCBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3Ntb290aC9mdGdyYXlzLmMgYi9zcmMvc21vb3RoL2Z0Z3JheXMuYwppbmRleCBkOTgyYzI4Li5kOWYyMGVlIDEwMDY0NAotLS0gYS9zcmMvc21vb3RoL2Z0Z3JheXMuYworKysgYi9zcmMvc21vb3RoL2Z0Z3JheXMuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEEgbmV3IGBwZXJmZWN0JyBhbnRpLWFsaWFzaW5nIHJlbmRlcmVyIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0zMzMsNyArMzMzLDkgQEAKICNkZWZpbmUgUElYRUxfQklUUyAgOAogCiAjZGVmaW5lIE9ORV9QSVhFTCAgICAgICAoIDEgPDwgUElYRUxfQklUUyApCisjdW5kZWYgVFJVTkMKICNkZWZpbmUgVFJVTkMoIHggKSAgICAgIChUQ29vcmQpKCAoeCkgPj4gUElYRUxfQklUUyApCisjdW5kZWYgRlJBQ1QKICNkZWZpbmUgRlJBQ1QoIHggKSAgICAgIChUQ29vcmQpKCAoeCkgJiAoIE9ORV9QSVhFTCAtIDEgKSApCiAKICNpZiBQSVhFTF9CSVRTID49IDYKQEAgLTQxNiwyMSArNDE4LDIxIEBACiAKICAgLyogSXQgaXMgZmFzdGVyIHRvIHdyaXRlIHNtYWxsIHNwYW5zIGJ5dGUtYnktYnl0ZSB0aGFuIGNhbGxpbmcgICAgICovCiAgIC8qIGBtZW1zZXQnLiAgVGhpcyBpcyBtYWlubHkgZHVlIHRvIHRoZSBjb3N0IG9mIHRoZSBmdW5jdGlvbiBjYWxsLiAqLwotI2RlZmluZSBGVF9HUkFZX1NFVCggZCwgcywgY291bnQgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBGVF9CRUdJTl9TVE1OVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHVuc2lnbmVkIGNoYXIqIHEgPSBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN3aXRjaCAoIGNvdW50ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgY2FzZSA3OiAqcSsrID0gKHVuc2lnbmVkIGNoYXIpczsgLyogZmFsbCB0aHJvdWdoICovICAgXAotICAgICAgY2FzZSA2OiAqcSsrID0gKHVuc2lnbmVkIGNoYXIpczsgLyogZmFsbCB0aHJvdWdoICovICAgXAotICAgICAgY2FzZSA1OiAqcSsrID0gKHVuc2lnbmVkIGNoYXIpczsgLyogZmFsbCB0aHJvdWdoICovICAgXAotICAgICAgY2FzZSA0OiAqcSsrID0gKHVuc2lnbmVkIGNoYXIpczsgLyogZmFsbCB0aHJvdWdoICovICAgXAotICAgICAgY2FzZSAzOiAqcSsrID0gKHVuc2lnbmVkIGNoYXIpczsgLyogZmFsbCB0aHJvdWdoICovICAgXAotICAgICAgY2FzZSAyOiAqcSsrID0gKHVuc2lnbmVkIGNoYXIpczsgLyogZmFsbCB0aHJvdWdoICovICAgXAotICAgICAgY2FzZSAxOiAqcSAgID0gKHVuc2lnbmVkIGNoYXIpczsgLyogZmFsbCB0aHJvdWdoICovICAgXAotICAgICAgY2FzZSAwOiBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgZGVmYXVsdDogRlRfTUVNX1NFVCggZCwgcywgY291bnQgKTsgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBGVF9HUkFZX1NFVCggZCwgcywgY291bnQgKSAgICAgICAgICAgICAgICAgICBcCisgIEZUX0JFR0lOX1NUTU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1bnNpZ25lZCBjaGFyKiBxID0gZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN3aXRjaCAoIGNvdW50ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGNhc2UgNzogKnErKyA9ICh1bnNpZ25lZCBjaGFyKXM7IEZBTExfVEhST1VHSDsgXAorICAgICAgY2FzZSA2OiAqcSsrID0gKHVuc2lnbmVkIGNoYXIpczsgRkFMTF9USFJPVUdIOyBcCisgICAgICBjYXNlIDU6ICpxKysgPSAodW5zaWduZWQgY2hhcilzOyBGQUxMX1RIUk9VR0g7IFwKKyAgICAgIGNhc2UgNDogKnErKyA9ICh1bnNpZ25lZCBjaGFyKXM7IEZBTExfVEhST1VHSDsgXAorICAgICAgY2FzZSAzOiAqcSsrID0gKHVuc2lnbmVkIGNoYXIpczsgRkFMTF9USFJPVUdIOyBcCisgICAgICBjYXNlIDI6ICpxKysgPSAodW5zaWduZWQgY2hhcilzOyBGQUxMX1RIUk9VR0g7IFwKKyAgICAgIGNhc2UgMTogKnEgICA9ICh1bnNpZ25lZCBjaGFyKXM7IEZBTExfVEhST1VHSDsgXAorICAgICAgY2FzZSAwOiBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBkZWZhdWx0OiBGVF9NRU1fU0VUKCBkLCBzLCBjb3VudCApOyAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICBGVF9FTkRfU1RNTlQKIAogCkBAIC0xOTA3LDEwICsxOTA5LDEwIEBACiAKIAogICBzdGF0aWMgaW50Ci0gIGdyYXlfY29udmVydF9nbHlwaF9pbm5lciggUkFTX0FSRywKKyAgZ3JheV9jb252ZXJ0X2dseXBoX2lubmVyKCBSQVNfQVJHXwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgY29udGludWVkICkKICAgewotICAgIGludCAgZXJyb3I7CisgICAgdm9sYXRpbGUgaW50ICBlcnJvcjsKIAogCiAgICAgaWYgKCBmdF9zZXRqbXAoIHJhcy5qdW1wX2J1ZmZlciApID09IDAgKQpAQCAtMjAwMiw3ICsyMDA0LDcgQEAKICAgICAgICAgcmFzLm1heF9leSAgICA9IGJhbmRbMF07CiAgICAgICAgIHJhcy5jb3VudF9leSAgPSB3aWR0aDsKIAotICAgICAgICBlcnJvciAgICAgPSBncmF5X2NvbnZlcnRfZ2x5cGhfaW5uZXIoIFJBU19WQVIsIGNvbnRpbnVlZCApOworICAgICAgICBlcnJvciAgICAgPSBncmF5X2NvbnZlcnRfZ2x5cGhfaW5uZXIoIFJBU19WQVJfIGNvbnRpbnVlZCApOwogICAgICAgICBjb250aW51ZWQgPSAxOwogCiAgICAgICAgIGlmICggIWVycm9yICkKZGlmZiAtLWdpdCBhL3NyYy9zbW9vdGgvZnRncmF5cy5oIGIvc3JjL3Ntb290aC9mdGdyYXlzLmgKaW5kZXggM2RhZDA0OS4uYTUwMDFiZiAxMDA2NDQKLS0tIGEvc3JjL3Ntb290aC9mdGdyYXlzLmgKKysrIGIvc3JjL3Ntb290aC9mdGdyYXlzLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBzbW9vdGggcmVuZGVyZXIgZGVjbGFyYXRpb24KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvc21vb3RoL2Z0c21lcnJzLmggYi9zcmMvc21vb3RoL2Z0c21lcnJzLmgKaW5kZXggZGMyYzQwYy4uZjRhYzkzZCAxMDA2NDQKLS0tIGEvc3JjL3Ntb290aC9mdHNtZXJycy5oCisrKyBiL3NyYy9zbW9vdGgvZnRzbWVycnMuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIHNtb290aCByZW5kZXJlciBlcnJvciBjb2RlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvc21vb3RoL2Z0c21vb3RoLmMgYi9zcmMvc21vb3RoL2Z0c21vb3RoLmMKaW5kZXggYmVhM2I0YS4uY2RiYzc4YyAxMDA2NDQKLS0tIGEvc3JjL3Ntb290aC9mdHNtb290aC5jCisrKyBiL3NyYy9zbW9vdGgvZnRzbW9vdGguYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEFudGktYWxpYXNpbmcgcmVuZGVyZXIgaW50ZXJmYWNlIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvc21vb3RoL2Z0c21vb3RoLmggYi9zcmMvc21vb3RoL2Z0c21vb3RoLmgKaW5kZXggMmRkODFlOC4uZjhiZGM5OSAxMDA2NDQKLS0tIGEvc3JjL3Ntb290aC9mdHNtb290aC5oCisrKyBiL3NyYy9zbW9vdGgvZnRzbW9vdGguaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEFudGktYWxpYXNpbmcgcmVuZGVyZXIgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvc21vb3RoL21vZHVsZS5tayBiL3NyYy9zbW9vdGgvbW9kdWxlLm1rCmluZGV4IGVjNjUzN2YuLjgyYWIyZmEgMTAwNjQ0Ci0tLSBhL3NyYy9zbW9vdGgvbW9kdWxlLm1rCisrKyBiL3NyYy9zbW9vdGgvbW9kdWxlLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvc3JjL3Ntb290aC9ydWxlcy5tayBiL3NyYy9zbW9vdGgvcnVsZXMubWsKaW5kZXggZGU3MDFkOS4uNWQ4OWM3NSAxMDA2NDQKLS0tIGEvc3JjL3Ntb290aC9ydWxlcy5taworKysgYi9zcmMvc21vb3RoL3J1bGVzLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvc3JjL3Ntb290aC9zbW9vdGguYyBiL3NyYy9zbW9vdGgvc21vb3RoLmMKaW5kZXggOWUyNTQ0MC4uOWEwYjgyNCAxMDA2NDQKLS0tIGEvc3JjL3Ntb290aC9zbW9vdGguYworKysgYi9zcmMvc21vb3RoL3Ntb290aC5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgYW50aS1hbGlhc2luZyByYXN0ZXJlciBtb2R1bGUgY29tcG9uZW50IChib2R5IG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy9zdmcvZnRzdmcuYyBiL3NyYy9zdmcvZnRzdmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWRiMWEzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3N2Zy9mdHN2Zy5jCkBAIC0wLDAgKzEsMzUwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIGZ0c3ZnLmMKKyAqCisgKiAgIFRoZSBGcmVlVHlwZSBTVkcgcmVuZGVyZXIgaW50ZXJmYWNlIChib2R5KS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMyBieQorICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgV2VybmVyIExlbWJlcmcsIGFuZCBNb2F6aW4gS2hhdHRpLgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKKyAqIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CisgKiBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKKyAqIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAorICogdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorICoKKyAqLworCisjaW5jbHVkZSA8ZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oPgorI2luY2x1ZGUgPGZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oPgorI2luY2x1ZGUgPGZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHJvcC5oPgorI2luY2x1ZGUgPGZyZWV0eXBlL290c3ZnLmg+CisjaW5jbHVkZSA8ZnJlZXR5cGUvaW50ZXJuYWwvc3ZnaW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8ZnJlZXR5cGUvZnRiYm94Lmg+CisKKyNpbmNsdWRlICJmdHN2Zy5oIgorI2luY2x1ZGUgInN2Z3R5cGVzLmgiCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogVGhlIG1hY3JvIEZUX0NPTVBPTkVOVCBpcyB1c2VkIGluIHRyYWNlIG1vZGUuICBJdCBpcyBhbiBpbXBsaWNpdAorICAgKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c3VlZCB0byBwcmludC9sb2cKKyAgICogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4KKyAgICovCisjdW5kZWYgIEZUX0NPTVBPTkVOVAorI2RlZmluZSBGVF9DT01QT05FTlQgIG90c3ZnCisKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fU1ZHCisKKyAgLyogZnRfc3ZnX2luaXQgKi8KKyAgc3RhdGljIEZUX0Vycm9yCisgIGZ0X3N2Z19pbml0KCBTVkdfUmVuZGVyZXIgIHN2Z19tb2R1bGUgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworCisKKyAgICBzdmdfbW9kdWxlLT5sb2FkZWQgICAgPSBGQUxTRTsKKyAgICBzdmdfbW9kdWxlLT5ob29rc19zZXQgPSBGQUxTRTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgZnRfc3ZnX2RvbmUoIFNWR19SZW5kZXJlciAgc3ZnX21vZHVsZSApCisgIHsKKyAgICBpZiAoIHN2Z19tb2R1bGUtPmxvYWRlZCAgICA9PSBUUlVFICYmCisgICAgICAgICBzdmdfbW9kdWxlLT5ob29rc19zZXQgPT0gVFJVRSApCisgICAgICBzdmdfbW9kdWxlLT5ob29rcy5mcmVlX3N2ZyggJnN2Z19tb2R1bGUtPnN0YXRlICk7CisKKyAgICBzdmdfbW9kdWxlLT5sb2FkZWQgPSBGQUxTRTsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGZ0X3N2Z19wcmVzZXRfc2xvdCggRlRfTW9kdWxlICAgICBtb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhTbG90ICBzbG90LAorICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgY2FjaGUgKQorICB7CisgICAgU1ZHX1JlbmRlcmVyICAgICAgIHN2Z19yZW5kZXJlciA9IChTVkdfUmVuZGVyZXIpbW9kdWxlOworICAgIFNWR19SZW5kZXJlckhvb2tzICBob29rcyAgICAgICAgPSBzdmdfcmVuZGVyZXItPmhvb2tzOworCisKKyAgICBpZiAoIHN2Z19yZW5kZXJlci0+aG9va3Nfc2V0ID09IEZBTFNFICkKKyAgICB7CisgICAgICBGVF9UUkFDRTEoKCAiSG9va3MgYXJlIE5PVCBzZXQuICBDYW4ndCByZW5kZXIgT1QtU1ZHIGdseXBoc1xuIiApKTsKKyAgICAgIHJldHVybiBGVF9USFJPVyggTWlzc2luZ19TVkdfSG9va3MgKTsKKyAgICB9CisKKyAgICBpZiAoIHN2Z19yZW5kZXJlci0+bG9hZGVkID09IEZBTFNFICkKKyAgICB7CisgICAgICBGVF9UUkFDRTMoKCAiZnRfc3ZnX3ByZXNldF9zbG90OiBmaXJzdCBwcmVzZXR0aW5nIGNhbGwsIgorICAgICAgICAgICAgICAgICAgIiBjYWxsaW5nIGluaXQgaG9va1xuIiApKTsKKyAgICAgIGhvb2tzLmluaXRfc3ZnKCAmc3ZnX3JlbmRlcmVyLT5zdGF0ZSApOworCisgICAgICBzdmdfcmVuZGVyZXItPmxvYWRlZCA9IFRSVUU7CisgICAgfQorCisgICAgcmV0dXJuIGhvb2tzLnByZXNldF9zbG90KCBzbG90LCBjYWNoZSwgJnN2Z19yZW5kZXJlci0+c3RhdGUgKTsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGZ0X3N2Z19yZW5kZXIoIEZUX1JlbmRlcmVyICAgICAgIHJlbmRlcmVyLAorICAgICAgICAgICAgICAgICBGVF9HbHlwaFNsb3QgICAgICBzbG90LAorICAgICAgICAgICAgICAgICBGVF9SZW5kZXJfTW9kZSAgICBtb2RlLAorICAgICAgICAgICAgICAgICBjb25zdCBGVF9WZWN0b3IqICBvcmlnaW4gKQorICB7CisgICAgU1ZHX1JlbmRlcmVyICBzdmdfcmVuZGVyZXIgPSAoU1ZHX1JlbmRlcmVyKXJlbmRlcmVyOworCisgICAgRlRfTGlicmFyeSAgbGlicmFyeSA9IHJlbmRlcmVyLT5yb290LmxpYnJhcnk7CisgICAgRlRfTWVtb3J5ICAgbWVtb3J5ICA9IGxpYnJhcnktPm1lbW9yeTsKKyAgICBGVF9FcnJvciAgICBlcnJvcjsKKworICAgIEZUX1VMb25nICBzaXplX2ltYWdlX2J1ZmZlcjsKKworICAgIFNWR19SZW5kZXJlckhvb2tzICBob29rcyA9IHN2Z19yZW5kZXJlci0+aG9va3M7CisKKworICAgIEZUX1VOVVNFRCggbW9kZSApOworICAgIEZUX1VOVVNFRCggb3JpZ2luICk7CisKKyAgICBpZiAoIG1vZGUgIT0gRlRfUkVOREVSX01PREVfTk9STUFMICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggQmFkX0FyZ3VtZW50ICk7CisKKyAgICBpZiAoIHN2Z19yZW5kZXJlci0+aG9va3Nfc2V0ID09IEZBTFNFICkKKyAgICB7CisgICAgICBGVF9UUkFDRTEoKCAiSG9va3MgYXJlIE5PVCBzZXQuICBDYW4ndCByZW5kZXIgT1QtU1ZHIGdseXBoc1xuIiApKTsKKyAgICAgIHJldHVybiBGVF9USFJPVyggTWlzc2luZ19TVkdfSG9va3MgKTsKKyAgICB9CisKKyAgICBpZiAoIHN2Z19yZW5kZXJlci0+bG9hZGVkID09IEZBTFNFICkKKyAgICB7CisgICAgICBGVF9UUkFDRTMoKCAiZnRfc3ZnX3JlbmRlcjogZmlyc3QgcmVuZGVyaW5nLCBjYWxsaW5nIGluaXQgaG9va1xuIiApKTsKKyAgICAgIGVycm9yID0gaG9va3MuaW5pdF9zdmcoICZzdmdfcmVuZGVyZXItPnN0YXRlICk7CisKKyAgICAgIHN2Z19yZW5kZXJlci0+bG9hZGVkID0gVFJVRTsKKyAgICB9CisKKyAgICBmdF9zdmdfcHJlc2V0X3Nsb3QoIChGVF9Nb2R1bGUpcmVuZGVyZXIsIHNsb3QsIFRSVUUgKTsKKworICAgIHNpemVfaW1hZ2VfYnVmZmVyID0gKEZUX1VMb25nKXNsb3QtPmJpdG1hcC5waXRjaCAqIHNsb3QtPmJpdG1hcC5yb3dzOworICAgIC8qIE5vIGBGVF9RQUxMT0NgIGhlcmUgc2luY2Ugd2UgbmVlZCBhIGNsZWFuLCBlbXB0eSBjYW52YXMgKi8KKyAgICAvKiB0byBzdGFydCB3aXRoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCBGVF9BTExPQyggc2xvdC0+Yml0bWFwLmJ1ZmZlciwgc2l6ZV9pbWFnZV9idWZmZXIgKSApCisgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICBlcnJvciA9IGhvb2tzLnJlbmRlcl9zdmcoIHNsb3QsICZzdmdfcmVuZGVyZXItPnN0YXRlICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBGVF9GUkVFKCBzbG90LT5iaXRtYXAuYnVmZmVyICk7CisgICAgZWxzZQorICAgICAgc2xvdC0+aW50ZXJuYWwtPmZsYWdzIHw9IEZUX0dMWVBIX09XTl9CSVRNQVA7CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIHN0YXRpYyBjb25zdCBTVkdfSW50ZXJmYWNlICBzdmdfaW50ZXJmYWNlID0KKyAgeworICAgIChQcmVzZXRfQml0bWFwX0Z1bmMpZnRfc3ZnX3ByZXNldF9zbG90CisgIH07CisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgZnRfc3ZnX3Byb3BlcnR5X3NldCggRlRfTW9kdWxlICAgIG1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogIHByb3BlcnR5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqICB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICAgIHZhbHVlX2lzX3N0cmluZyApCisgIHsKKyAgICBGVF9FcnJvciAgICAgIGVycm9yICAgID0gRlRfRXJyX09rOworICAgIFNWR19SZW5kZXJlciAgcmVuZGVyZXIgPSAoU1ZHX1JlbmRlcmVyKW1vZHVsZTsKKworCisgICAgaWYgKCAhZnRfc3RyY21wKCBwcm9wZXJ0eV9uYW1lLCAic3ZnLWhvb2tzIiApICkKKyAgICB7CisgICAgICBTVkdfUmVuZGVyZXJIb29rcyogIGhvb2tzOworCisKKyAgICAgIGlmICggdmFsdWVfaXNfc3RyaW5nID09IFRSVUUgKQorICAgICAgeworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKworICAgICAgaG9va3MgPSAoU1ZHX1JlbmRlcmVySG9va3MqKXZhbHVlOworCisgICAgICBpZiAoICFob29rcy0+aW5pdF9zdmcgICAgfHwKKyAgICAgICAgICAgIWhvb2tzLT5mcmVlX3N2ZyAgICB8fAorICAgICAgICAgICAhaG9va3MtPnJlbmRlcl9zdmcgIHx8CisgICAgICAgICAgICFob29rcy0+cHJlc2V0X3Nsb3QgKQorICAgICAgeworICAgICAgICBGVF9UUkFDRTAoKCAiZnRfc3ZnX3Byb3BlcnR5X3NldDoiCisgICAgICAgICAgICAgICAgICAgICIgU1ZHIHJlbmRlcmluZyBob29rcyBub3Qgc2V0IGJlY2F1c2VcbiIgKSk7CisgICAgICAgIEZUX1RSQUNFMCgoICIgICAgICAgICAgICAgICAgICAgICIKKyAgICAgICAgICAgICAgICAgICAgIiBhdCBsZWFzdCBvbmUgZnVuY3Rpb24gcG9pbnRlciBpcyBOVUxMXG4iICkpOworCisgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICAgICAgZ290byBFeGl0OworICAgICAgfQorCisgICAgICByZW5kZXJlci0+aG9va3MgICAgID0gKmhvb2tzOworICAgICAgcmVuZGVyZXItPmhvb2tzX3NldCA9IFRSVUU7CisgICAgfQorICAgIGVsc2UKKyAgICAgIGVycm9yID0gRlRfVEhST1coIE1pc3NpbmdfUHJvcGVydHkgKTsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGZ0X3N2Z19wcm9wZXJ0eV9nZXQoIEZUX01vZHVsZSAgICBtb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBwcm9wZXJ0eV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkKiAgdmFsdWUgKQorICB7CisgICAgRlRfRXJyb3IgICAgICBlcnJvciAgICA9IEZUX0Vycl9PazsKKyAgICBTVkdfUmVuZGVyZXIgIHJlbmRlcmVyID0gKFNWR19SZW5kZXJlciltb2R1bGU7CisKKworICAgIGlmICggIWZ0X3N0cmNtcCggcHJvcGVydHlfbmFtZSwgInN2Zy1ob29rcyIgKSApCisgICAgeworICAgICAgU1ZHX1JlbmRlcmVySG9va3MqICBob29rcyA9IChTVkdfUmVuZGVyZXJIb29rcyopdmFsdWU7CisKKworICAgICAgKmhvb2tzID0gcmVuZGVyZXItPmhvb2tzOworICAgIH0KKyAgICBlbHNlCisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBNaXNzaW5nX1Byb3BlcnR5ICk7CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0RFRklORV9TRVJWSUNFX1BST1BFUlRJRVNSRUMoCisgICAgZnRfc3ZnX3NlcnZpY2VfcHJvcGVydGllcywKKworICAgIChGVF9Qcm9wZXJ0aWVzX1NldEZ1bmMpZnRfc3ZnX3Byb3BlcnR5X3NldCwgLyogc2V0X3Byb3BlcnR5ICovCisgICAgKEZUX1Byb3BlcnRpZXNfR2V0RnVuYylmdF9zdmdfcHJvcGVydHlfZ2V0ICAvKiBnZXRfcHJvcGVydHkgKi8KKyAgKQorCisKKyAgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDMSgKKyAgICBmdF9zdmdfc2VydmljZXMsCisgICAgRlRfU0VSVklDRV9JRF9QUk9QRVJUSUVTLCAmZnRfc3ZnX3NlcnZpY2VfcHJvcGVydGllcyApCisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX01vZHVsZV9JbnRlcmZhY2UgKQorICBmdF9zdmdfZ2V0X2ludGVyZmFjZSggRlRfTW9kdWxlICAgIG1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBmdF9zdmdfaW50ZXJmYWNlICkKKyAgeworICAgIEZUX01vZHVsZV9JbnRlcmZhY2UgIHJlc3VsdDsKKworCisgICAgRlRfVU5VU0VEKCBtb2R1bGUgKTsKKworICAgIHJlc3VsdCA9IGZ0X3NlcnZpY2VfbGlzdF9sb29rdXAoIGZ0X3N2Z19zZXJ2aWNlcywgZnRfc3ZnX2ludGVyZmFjZSApOworICAgIGlmICggcmVzdWx0ICkKKyAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICByZXR1cm4gMDsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGZ0X3N2Z190cmFuc2Zvcm0oIEZUX1JlbmRlcmVyICAgICAgIHJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICBGVF9HbHlwaFNsb3QgICAgICBzbG90LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9NYXRyaXgqICBfbWF0cml4LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9WZWN0b3IqICBfZGVsdGEgKQorICB7CisgICAgRlRfU1ZHX0RvY3VtZW50ICBkb2MgICAgPSAoRlRfU1ZHX0RvY3VtZW50KXNsb3QtPm90aGVyOworICAgIEZUX01hdHJpeCogICAgICAgbWF0cml4ID0gKEZUX01hdHJpeCopX21hdHJpeDsKKyAgICBGVF9WZWN0b3IqICAgICAgIGRlbHRhICA9IChGVF9WZWN0b3IqKV9kZWx0YTsKKworICAgIEZUX01hdHJpeCAgdG1wX21hdHJpeDsKKyAgICBGVF9WZWN0b3IgIHRtcF9kZWx0YTsKKworICAgIEZUX01hdHJpeCAgYSwgYjsKKyAgICBGVF9Qb3MgICAgIHgsIHk7CisKKworICAgIEZUX1VOVVNFRCggcmVuZGVyZXIgKTsKKworICAgIGlmICggIW1hdHJpeCApCisgICAgeworICAgICAgdG1wX21hdHJpeC54eCA9IDB4MTAwMDA7CisgICAgICB0bXBfbWF0cml4Lnh5ID0gMDsKKyAgICAgIHRtcF9tYXRyaXgueXggPSAwOworICAgICAgdG1wX21hdHJpeC55eSA9IDB4MTAwMDA7CisKKyAgICAgIG1hdHJpeCA9ICZ0bXBfbWF0cml4OworICAgIH0KKworICAgIGlmICggIWRlbHRhICkKKyAgICB7CisgICAgICB0bXBfZGVsdGEueCA9IDA7CisgICAgICB0bXBfZGVsdGEueSA9IDA7CisKKyAgICAgIGRlbHRhID0gJnRtcF9kZWx0YTsKKyAgICB9CisKKyAgICBhID0gZG9jLT50cmFuc2Zvcm07CisgICAgYiA9ICptYXRyaXg7CisgICAgRlRfTWF0cml4X011bHRpcGx5KCAmYiwgJmEgKTsKKworCisgICAgeCA9IEFERF9MT05HKCBBRERfTE9ORyggRlRfTXVsRml4KCBtYXRyaXgtPnh4LCBkb2MtPmRlbHRhLnggKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NdWxGaXgoIG1hdHJpeC0+eHksIGRvYy0+ZGVsdGEueSApICksCisgICAgICAgICAgICAgICAgICBkZWx0YS0+eCApOworICAgIHkgPSBBRERfTE9ORyggQUREX0xPTkcoIEZUX011bEZpeCggbWF0cml4LT55eCwgZG9jLT5kZWx0YS54ICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTXVsRml4KCBtYXRyaXgtPnl5LCBkb2MtPmRlbHRhLnkgKSApLAorICAgICAgICAgICAgICAgICAgZGVsdGEtPnkgKTsKKworICAgIGRvYy0+ZGVsdGEueCAgID0geDsKKyAgICBkb2MtPmRlbHRhLnkgICA9IHk7CisgICAgZG9jLT50cmFuc2Zvcm0gPSBhOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9TVkcgKi8KKworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9TVkcKKyNkZWZpbmUgUFVUX1NWR19NT0RVTEUoIGEgKSAgYQorI2RlZmluZSBTVkdfR0xZUEhfRk9STUFUICAgICBGVF9HTFlQSF9GT1JNQVRfU1ZHCisjZWxzZQorI2RlZmluZSBQVVRfU1ZHX01PRFVMRSggYSApICBOVUxMCisjZGVmaW5lIFNWR19HTFlQSF9GT1JNQVQgICAgIEZUX0dMWVBIX0ZPUk1BVF9OT05FCisjZW5kaWYKKworCisgIEZUX0RFRklORV9SRU5ERVJFUigKKyAgICBmdF9zdmdfcmVuZGVyZXJfY2xhc3MsCisKKyAgICAgIEZUX01PRFVMRV9SRU5ERVJFUiwKKyAgICAgIHNpemVvZiAoIFNWR19SZW5kZXJlclJlYyApLAorCisgICAgICAib3Qtc3ZnIiwKKyAgICAgIDB4MTAwMDBMLAorICAgICAgMHgyMDAwMEwsCisKKyAgICAgIChjb25zdCB2b2lkKilQVVRfU1ZHX01PRFVMRSggJnN2Z19pbnRlcmZhY2UgKSwgLyogbW9kdWxlIHNwZWNpZmljIGludGVyZmFjZSAqLworCisgICAgICAoRlRfTW9kdWxlX0NvbnN0cnVjdG9yKVBVVF9TVkdfTU9EVUxFKCBmdF9zdmdfaW5pdCApLCAvKiBtb2R1bGVfaW5pdCAgICovCisgICAgICAoRlRfTW9kdWxlX0Rlc3RydWN0b3IpUFVUX1NWR19NT0RVTEUoIGZ0X3N2Z19kb25lICksICAvKiBtb2R1bGVfZG9uZSAgICovCisgICAgICBQVVRfU1ZHX01PRFVMRSggZnRfc3ZnX2dldF9pbnRlcmZhY2UgKSwgICAgICAgICAgICAgICAvKiBnZXRfaW50ZXJmYWNlICovCisKKyAgICAgIFNWR19HTFlQSF9GT1JNQVQsCisKKyAgICAgIChGVF9SZW5kZXJlcl9SZW5kZXJGdW5jKSAgIFBVVF9TVkdfTU9EVUxFKCBmdF9zdmdfcmVuZGVyICksICAgIC8qIHJlbmRlcl9nbHlwaCAgICAqLworICAgICAgKEZUX1JlbmRlcmVyX1RyYW5zZm9ybUZ1bmMpUFVUX1NWR19NT0RVTEUoIGZ0X3N2Z190cmFuc2Zvcm0gKSwgLyogdHJhbnNmb3JtX2dseXBoICovCisgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBnZXRfZ2x5cGhfY2JveCAgKi8KKyAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNldF9tb2RlICAgICAgICAqLworICAgICAgTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmFzdGVyX2NsYXNzICAgICovCisgICkKKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL3NyYy9zdmcvZnRzdmcuaCBiL3NyYy9zdmcvZnRzdmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzQ5NmNhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3N2Zy9mdHN2Zy5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogZnRzdmcuaAorICoKKyAqICAgVGhlIEZyZWVUeXBlIFNWRyByZW5kZXJlciBpbnRlcmZhY2UgKHNwZWNpZmljYXRpb24pLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMi0yMDIzIGJ5CisgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBXZXJuZXIgTGVtYmVyZywgYW5kIE1vYXppbiBLaGF0dGkuCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLAorICogbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QKKyAqIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZQorICogdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kCisgKiB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuCisgKgorICovCisKKyNpZm5kZWYgRlRTVkdfSF8KKyNkZWZpbmUgRlRTVkdfSF8KKworI2luY2x1ZGUgPGZ0MmJ1aWxkLmg+CisjaW5jbHVkZSA8ZnJlZXR5cGUvZnRyZW5kZXIuaD4KKyNpbmNsdWRlIDxmcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaD4KKworCitGVF9CRUdJTl9IRUFERVIKKworICBGVF9ERUNMQVJFX1JFTkRFUkVSKCBmdF9zdmdfcmVuZGVyZXJfY2xhc3MgKQorCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBGVFNWR19IXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3N2Zy9tb2R1bGUubWsgYi9zcmMvc3ZnL21vZHVsZS5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMGJlY2E2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3N2Zy9tb2R1bGUubWsKQEAgLTAsMCArMSwyMyBAQAorIworIyBGcmVlVHlwZSAyIFNWRyByZW5kZXJlciBtb2R1bGUgZGVmaW5pdGlvbgorIworCisKKyMgQ29weXJpZ2h0IChDKSAyMDIyLTIwMjMgYnkKKyMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgV2VybmVyIExlbWJlcmcsIGFuZCBNb2F6aW4gS2hhdHRpLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCisjIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CisjIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CisjIGZ1bGx5LgorCisKK0ZUTU9EVUxFX0hfQ09NTUFORFMgKz0gU1ZHX01PRFVMRQorCitkZWZpbmUgU1ZHX01PRFVMRQorJChPUEVOX0RSSVZFUikgRlRfUmVuZGVyZXJfQ2xhc3MsIGZ0X3N2Z19yZW5kZXJlcl9jbGFzcyAkKENMT1NFX0RSSVZFUikKKyQoRUNIT19EUklWRVIpb3Qtc3ZnICAgICQoRUNIT19EUklWRVJfREVTQylPVC1TVkcgZ2x5cGggcmVuZGVyZXIgbW9kdWxlJChFQ0hPX0RSSVZFUl9ET05FKQorZW5kZWYKKworIyBFT0YKZGlmZiAtLWdpdCBhL3NyYy9zdmcvcnVsZXMubWsgYi9zcmMvc3ZnL3J1bGVzLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmNDQwOTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvc3ZnL3J1bGVzLm1rCkBAIC0wLDAgKzEsNzAgQEAKKyMKKyMgRnJlZVR5cGUgMiBTVkcgcmVuZGVyZXIgbW9kdWxlIGJ1aWxkIHJ1bGVzCisjCisKKworIyBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMyBieQorIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBXZXJuZXIgTGVtYmVyZywgYW5kIE1vYXppbiBLaGF0dGkuCisjCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCisjIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKKyMgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKKyMgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKKyMgZnVsbHkuCisKKworIyBTVkcgcmVuZGVyZXIgZHJpdmVyIGRpcmVjdG9yeQorIworU1ZHX0RJUiA6PSAkKFNSQ19ESVIpL3N2ZworCisjIGNvbXBpbGF0aW9uIGZsYWdzIGZvciB0aGUgZHJpdmVyCisjCitTVkdfQ09NUElMRSA6PSAkKENDKSAkKEFOU0lGTEFHUykgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgJEkkKHN1YnN0IC8sJChDT01QSUxFUl9TRVApLCQoU1ZHX0RJUikpIFwKKyAgICAgICAgICAgICAgICAgICAgICQoSU5DTFVERV9GTEFHUykgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAkKEZUX0NGTEFHUykKKworIyBTVkcgcmVuZGVyZXIgc291cmNlcyAoaS5lLiwgQyBmaWxlcykKKyMKK1NWR19EUlZfU1JDIDo9ICQoU1ZHX0RJUikvZnRzdmcuYworCisKKyMgU1ZHIHJlbmRlcmVyIGhlYWRlcnMKKyMKK1NWR19EUlZfSCA6PSAkKFNWR19ESVIpL2Z0c3ZnLmggICAgXAorICAgICAgICAgICAgICQoU1ZHX0RJUikvc3ZndHlwZXMuaAorCisKKyMgU1ZHIHJlbmRlcmVyIG9iamVjdChzKQorIworIyAgIFNWR19EUlZfT0JKX00gaXMgdXNlZCBkdXJpbmcgYG11bHRpJyBidWlsZHMuCisjICAgU1ZHX0RSVl9PQkpfUyBpcyB1c2VkIGR1cmluZyBgc2luZ2xlJyBidWlsZHMuCisjCitTVkdfRFJWX09CSl9NIDo9ICQoU1ZHX0RSVl9TUkM6JChTVkdfRElSKS8lLmM9JChPQkpfRElSKS8lLiRPKQorU1ZHX0RSVl9PQkpfUyA6PSAkKE9CSl9ESVIpL3N2Zy4kTworCisjIFNWRyByZW5kZXJlciBzb3VyY2UgZmlsZSBmb3Igc2luZ2xlIGJ1aWxkCisjCitTVkdfRFJWX1NSQ19TIDo9ICQoU1ZHX0RJUikvc3ZnLmMKKworCisjIFNWRyByZW5kZXJlciAtIHNpbmdsZSBvYmplY3QKKyMKKyQoU1ZHX0RSVl9PQkpfUyk6ICQoU1ZHX0RSVl9TUkNfUykgJChTVkdfRFJWX1NSQykgXAorICAgICAgICAgICAgICAgICAgJChGUkVFVFlQRV9IKSAkKFNWR19EUlZfSCkKKwkkKFNWR19DT01QSUxFKSAkVCQoc3Vic3QgLywkKENPTVBJTEVSX1NFUCksJEAgJChTVkdfRFJWX1NSQ19TKSkKKworCisjIFNWRyByZW5kZXJlciAtIG11bHRpcGxlIG9iamVjdHMKKyMKKyQoT0JKX0RJUikvJS4kTzogJChTVkdfRElSKS8lLmMgJChGUkVFVFlQRV9IKSAkKFNWR19EUlZfSCkKKwkkKFNWR19DT01QSUxFKSAkVCQoc3Vic3QgLywkKENPTVBJTEVSX1NFUCksJEAgJDwpCisKKworIyB1cGRhdGUgbWFpbiBkcml2ZXIgb2JqZWN0IGxpc3RzCisjCitEUlZfT0JKU19TICs9ICQoU1ZHX0RSVl9PQkpfUykKK0RSVl9PQkpTX00gKz0gJChTVkdfRFJWX09CSl9NKQorCisKKyMgRU9GCmRpZmYgLS1naXQgYS9zcmMvc3ZnL3N2Zy5jIGIvc3JjL3N2Zy9zdmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzNjMjhlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3N2Zy9zdmcuYwpAQCAtMCwwICsxLDI0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIHN2Zy5jCisgKgorICogICBGcmVlVHlwZSBTVkcgcmVuZGVyZXIgbW9kdWxlIGNvbXBvbmVudCAoYm9keSBvbmx5KS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMyBieQorICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgV2VybmVyIExlbWJlcmcsIGFuZCBNb2F6aW4gS2hhdHRpLgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKKyAqIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0CisgKiBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUKKyAqIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZAorICogdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LgorICoKKyAqLworCisjZGVmaW5lIEZUX01BS0VfT1BUSU9OX1NJTkdMRV9PQkpFQ1QKKworI2luY2x1ZGUgInN2Z3R5cGVzLmgiCisjaW5jbHVkZSAiZnRzdmcuYyIKKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL3NyYy9zdmcvc3ZndHlwZXMuaCBiL3NyYy9zdmcvc3ZndHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDYwODAzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3N2Zy9zdmd0eXBlcy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogc3ZndHlwZXMuaAorICoKKyAqICAgVGhlIEZyZWVUeXBlIFNWRyByZW5kZXJlciBpbnRlcm5hbCB0eXBlcyAoc3BlY2lmaWNhdGlvbikuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDIyLTIwMjMgYnkKKyAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIFdlcm5lciBMZW1iZXJnLCBhbmQgTW9hemluIEtoYXR0aS4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCisgKiBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdAorICogbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlCisgKiB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQKKyAqIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4KKyAqCisgKi8KKworI2lmbmRlZiBTVkdUWVBFU19IXworI2RlZmluZSBTVkdUWVBFU19IXworCisjaW5jbHVkZSA8ZnQyYnVpbGQuaD4KKyNpbmNsdWRlIDxmcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaD4KKyNpbmNsdWRlIDxmcmVldHlwZS9mdHJlbmRlci5oPgorI2luY2x1ZGUgPGZyZWV0eXBlL290c3ZnLmg+CisKKworICB0eXBlZGVmIHN0cnVjdCBTVkdfUmVuZGVyZXJSZWNfCisgIHsKKyAgICBGVF9SZW5kZXJlclJlYyAgICAgcm9vdDsgICAvKiB0aGlzIGluaGVyaXRzIEZUX1JlbmRlcmVyUmVjICAgICAgICAgICAgICAgICovCisgICAgRlRfQm9vbCAgICAgICAgICAgIGxvYWRlZDsKKyAgICBGVF9Cb29sICAgICAgICAgICAgaG9va3Nfc2V0OworICAgIFNWR19SZW5kZXJlckhvb2tzICBob29rczsgIC8qIHRoaXMgaG9sZHMgaG9va3MgZm9yIFNWRyByZW5kZXJpbmcgICAgICAgICAgKi8KKyAgICBGVF9Qb2ludGVyICAgICAgICAgc3RhdGU7ICAvKiBhIHBsYWNlIGZvciBob29rcyB0byBzdG9yZSBzdGF0ZSwgaWYgbmVlZGVkICovCisKKyAgfSBTVkdfUmVuZGVyZXJSZWM7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgU1ZHX1JlbmRlcmVyUmVjXyogIFNWR19SZW5kZXJlcjsKKworI2VuZGlmIC8qIFNWR1RZUEVTX0hfICovCisKKworLyogRU9GICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvYWZibHVlLnBsIGIvc3JjL3Rvb2xzL2FmYmx1ZS5wbAppbmRleCA5NTQ4MTYyLi4xMDk4ZTMwIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvYWZibHVlLnBsCisrKyBiL3NyYy90b29scy9hZmJsdWUucGwKQEAgLTUsNyArNSw3IEBACiAjCiAjIFByb2Nlc3MgYSBibHVlIHpvbmUgY2hhcmFjdGVyIGRhdGEgZmlsZS4KICMKLSMgQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAyMDEzLTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvY2hrdHJjbXAucHkgYi9zcmMvdG9vbHMvY2hrdHJjbXAucHkKaW5kZXggMjQ0YTI0YS4uZDA3MmE4NyAxMDA3NTUKLS0tIGEvc3JjL3Rvb2xzL2Noa3RyY21wLnB5CisrKyBiL3NyYy90b29scy9jaGt0cmNtcC5weQpAQCAtMSwxMTQgKzEsMTE5IEBACi0jIS91c3IvYmluL2VudiBweXRob24KKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKICMKICMgQ2hlY2sgdHJhY2UgY29tcG9uZW50cyBpbiBGcmVlVHlwZSAyIHNvdXJjZS4KICMgQXV0aG9yOiBzdXp1a2kgdG9zaGl5YSwgMjAwOSwgMjAxMywgMjAyMAogIwogIyBUaGlzIGNvZGUgaXMgZXhwbGljaXRseSBpbnRvIHRoZSBwdWJsaWMgZG9tYWluLgogCi0KIGltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IHJlCiAKLVNSQ19GSUxFX0xJU1QgICA9IFtdCi1VU0VEX0NPTVBPTkVOVCAgPSB7fQorU1JDX0ZJTEVfTElTVCA9IFtdCitVU0VEX0NPTVBPTkVOVCA9IHt9CiBLTk9XTl9DT01QT05FTlQgPSB7fQogCi1TUkNfRklMRV9ESVJTICAgPSBbICJzcmMiIF0KLVRSQUNFX0RFRl9GSUxFUyA9IFsgImluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR0cmFjZS5oIiBdCitTUkNfRklMRV9ESVJTID0gWyJzcmMiXQorVFJBQ0VfREVGX0ZJTEVTID0gWyJpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaCJdCisKKworZGVmIHVzYWdlKCk6CisgICAgcHJpbnQoIlVzYWdlOiAlcyBbb3B0aW9uXSIgJSBzeXMuYXJndlswXSkKKyAgICBwcmludCgiU2VhcmNoIHVzZWQtYnV0LWRlZmluZWQgYW5kIGRlZmluZWQtYnV0LW5vdC11c2VkIHRyYWNlX1hYWCBtYWNyb3MiKQorICAgIHByaW50KCIiKQorICAgIHByaW50KCIgIC0taGVscDoiKQorICAgIHByaW50KCIgICAgICAgIFNob3cgdGhpcyBoZWxwIikKKyAgICBwcmludCgiIikKKyAgICBwcmludCgiICAtLXNyYy1kaXJzPWRpcjE6ZGlyMjouLi4iKQorICAgIHByaW50KCIgICAgICAgIFNwZWNpZnkgdGhlIGRpcmVjdG9yaWVzIG9mIEMgc291cmNlIGZpbGVzIHRvIGJlIGNoZWNrZWQiKQorICAgIHByaW50KCIgICAgICAgIERlZmF1bHQgaXMgJXMiICUgIjoiLmpvaW4oU1JDX0ZJTEVfRElSUykpCisgICAgcHJpbnQoIiIpCisgICAgcHJpbnQoIiAgLS1kZWYtZmlsZXM9ZmlsZTE6ZmlsZTI6Li4uIikKKyAgICBwcmludCgiICAgICAgICBTcGVjaWZ5IHRoZSBoZWFkZXIgZmlsZXMgaW5jbHVkaW5nIEZUX1RSQUNFX0RFRigpIikKKyAgICBwcmludCgiICAgICAgICBEZWZhdWx0IGlzICVzIiAlICI6Ii5qb2luKFRSQUNFX0RFRl9GSUxFUykpCisgICAgcHJpbnQoIiIpCiAKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBQYXJzZSBjb21tYW5kIGxpbmUgb3B0aW9ucwogIwotCi1mb3IgaSBpbiByYW5nZSggMSwgbGVuKCBzeXMuYXJndiApICk6Ci0gIGlmIHN5cy5hcmd2W2ldLnN0YXJ0c3dpdGgoICItLWhlbHAiICk6Ci0gICAgcHJpbnQgIlVzYWdlOiAlcyBbb3B0aW9uXSIgJSBzeXMuYXJndlswXQotICAgIHByaW50ICJTZWFyY2ggdXNlZC1idXQtZGVmaW5lZCBhbmQgZGVmaW5lZC1idXQtbm90LXVzZWQgdHJhY2VfWFhYIG1hY3JvcyIKLSAgICBwcmludCAiIgotICAgIHByaW50ICIgIC0taGVscDoiCi0gICAgcHJpbnQgIiAgICAgICAgU2hvdyB0aGlzIGhlbHAiCi0gICAgcHJpbnQgIiIKLSAgICBwcmludCAiICAtLXNyYy1kaXJzPWRpcjE6ZGlyMjouLi4iCi0gICAgcHJpbnQgIiAgICAgICAgU3BlY2lmeSB0aGUgZGlyZWN0b3JpZXMgb2YgQyBzb3VyY2UgZmlsZXMgdG8gYmUgY2hlY2tlZCIKLSAgICBwcmludCAiICAgICAgICBEZWZhdWx0IGlzICVzIiAlICI6Ii5qb2luKCBTUkNfRklMRV9ESVJTICkKLSAgICBwcmludCAiIgotICAgIHByaW50ICIgIC0tZGVmLWZpbGVzPWZpbGUxOmZpbGUyOi4uLiIKLSAgICBwcmludCAiICAgICAgICBTcGVjaWZ5IHRoZSBoZWFkZXIgZmlsZXMgaW5jbHVkaW5nIEZUX1RSQUNFX0RFRigpIgotICAgIHByaW50ICIgICAgICAgIERlZmF1bHQgaXMgJXMiICUgIjoiLmpvaW4oIFRSQUNFX0RFRl9GSUxFUyApCi0gICAgcHJpbnQgIiIKLSAgICBleGl0KDApCi0gIGlmIHN5cy5hcmd2W2ldLnN0YXJ0c3dpdGgoICItLXNyYy1kaXJzPSIgKToKLSAgICBTUkNfRklMRV9ESVJTID0gc3lzLmFyZ3ZbaV0ucmVwbGFjZSggIi0tc3JjLWRpcnM9IiwgIiIsIDEgKS5zcGxpdCggIjoiICkKLSAgZWxpZiBzeXMuYXJndltpXS5zdGFydHN3aXRoKCAiLS1kZWYtZmlsZXM9IiApOgotICAgIFRSQUNFX0RFRl9GSUxFUyA9IHN5cy5hcmd2W2ldLnJlcGxhY2UoICItLWRlZi1maWxlcz0iLCAiIiwgMSApLnNwbGl0KCAiOiIgKQotCitmb3IgaSBpbiByYW5nZSgxLCBsZW4oc3lzLmFyZ3YpKToKKyAgICBpZiBzeXMuYXJndltpXS5zdGFydHN3aXRoKCItLWhlbHAiKToKKyAgICAgICAgdXNhZ2UoKQorICAgICAgICBleGl0KDApCisgICAgaWYgc3lzLmFyZ3ZbaV0uc3RhcnRzd2l0aCgiLS1zcmMtZGlycz0iKToKKyAgICAgICAgU1JDX0ZJTEVfRElSUyA9IHN5cy5hcmd2W2ldLnJlcGxhY2UoIi0tc3JjLWRpcnM9IiwgIiIsIDEpLnNwbGl0KCI6IikKKyAgICBlbGlmIHN5cy5hcmd2W2ldLnN0YXJ0c3dpdGgoIi0tZGVmLWZpbGVzPSIpOgorICAgICAgICBUUkFDRV9ERUZfRklMRVMgPSBzeXMuYXJndltpXS5yZXBsYWNlKCItLWRlZi1maWxlcz0iLCAiIiwgMSkuc3BsaXQoIjoiKQogCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFNjYW4gQyBzb3VyY2UgYW5kIGhlYWRlciBmaWxlcyB1c2luZyB0cmFjZSBtYWNyb3MuCiAjCiAKLWNfcGF0aG5hbWVfcGF0ID0gcmUuY29tcGlsZSggJ14uKlwuW2NoXSQnLCByZS5JR05PUkVDQVNFICkKLXRyYWNlX3VzZV9wYXQgID0gcmUuY29tcGlsZSggJ15bIFx0XSojZGVmaW5lWyBcdF0rRlRfQ09NUE9ORU5UWyBcdF0rJyApCitjX3BhdGhuYW1lX3BhdCA9IHJlLmNvbXBpbGUoJ14uKlwuW2NoXSQnLCByZS5JR05PUkVDQVNFKQordHJhY2VfdXNlX3BhdCA9IHJlLmNvbXBpbGUoJ15bIFx0XSojZGVmaW5lWyBcdF0rRlRfQ09NUE9ORU5UWyBcdF0rJykKIAogZm9yIGQgaW4gU1JDX0ZJTEVfRElSUzoKLSAgZm9yICggcCwgZGxzdCwgZmxzdCApIGluIG9zLndhbGsoIGQgKToKLSAgICBmb3IgZiBpbiBmbHN0OgotICAgICAgaWYgY19wYXRobmFtZV9wYXQubWF0Y2goIGYgKSAhPSBOb25lOgotICAgICAgICBzcmNfcGF0aG5hbWUgPSBvcy5wYXRoLmpvaW4oIHAsIGYgKQorICAgIGZvciAocCwgZGxzdCwgZmxzdCkgaW4gb3Mud2FsayhkKToKKyAgICAgICAgZm9yIGYgaW4gZmxzdDoKKyAgICAgICAgICAgIGlmIGNfcGF0aG5hbWVfcGF0Lm1hdGNoKGYpIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNyY19wYXRobmFtZSA9IG9zLnBhdGguam9pbihwLCBmKQogCi0gICAgICAgIGxpbmVfbnVtID0gMAotICAgICAgICBmb3Igc3JjX2xpbmUgaW4gb3Blbiggc3JjX3BhdGhuYW1lLCAncicgKToKLSAgICAgICAgICBsaW5lX251bSA9IGxpbmVfbnVtICsgMQotICAgICAgICAgIHNyY19saW5lID0gc3JjX2xpbmUuc3RyaXAoKQotICAgICAgICAgIGlmIHRyYWNlX3VzZV9wYXQubWF0Y2goIHNyY19saW5lICkgIT0gTm9uZToKLSAgICAgICAgICAgIGNvbXBvbmVudF9uYW1lID0gdHJhY2VfdXNlX3BhdC5zdWIoICcnLCBzcmNfbGluZSApCi0gICAgICAgICAgICBpZiBjb21wb25lbnRfbmFtZSBpbiBVU0VEX0NPTVBPTkVOVDoKLSAgICAgICAgICAgICAgVVNFRF9DT01QT05FTlRbY29tcG9uZW50X25hbWVdLmFwcGVuZCggIiVzOiVkIiAlICggc3JjX3BhdGhuYW1lLCBsaW5lX251bSApICkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgIFVTRURfQ09NUE9ORU5UW2NvbXBvbmVudF9uYW1lXSA9IFsgIiVzOiVkIiAlICggc3JjX3BhdGhuYW1lLCBsaW5lX251bSApIF0KLQorICAgICAgICAgICAgICAgIGxpbmVfbnVtID0gMAorICAgICAgICAgICAgICAgIGZvciBzcmNfbGluZSBpbiBvcGVuKHNyY19wYXRobmFtZSwgJ3InKToKKyAgICAgICAgICAgICAgICAgICAgbGluZV9udW0gPSBsaW5lX251bSArIDEKKyAgICAgICAgICAgICAgICAgICAgc3JjX2xpbmUgPSBzcmNfbGluZS5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgIGlmIHRyYWNlX3VzZV9wYXQubWF0Y2goc3JjX2xpbmUpIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50X25hbWUgPSB0cmFjZV91c2VfcGF0LnN1YignJywgc3JjX2xpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb21wb25lbnRfbmFtZSBpbiBVU0VEX0NPTVBPTkVOVDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0VEX0NPTVBPTkVOVFtjb21wb25lbnRfbmFtZV1cCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoIiVzOiVkIiAlIChzcmNfcGF0aG5hbWUsIGxpbmVfbnVtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNFRF9DT01QT05FTlRbY29tcG9uZW50X25hbWVdID1cCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiJXM6JWQiICUgKHNyY19wYXRobmFtZSwgbGluZV9udW0pXQogCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFNjYW4gaGVhZGVyIGZpbGUocykgZGVmaW5pbmcgdHJhY2UgbWFjcm9zLgogIwogCi10cmFjZV9kZWZfcGF0X29wbiA9IHJlLmNvbXBpbGUoICdeLipGVF9UUkFDRV9ERUZbIFx0XSpcKFsgXHRdKicgKQotdHJhY2VfZGVmX3BhdF9jbHMgPSByZS5jb21waWxlKCAnWyBcdFwpXS4qJCcgKQordHJhY2VfZGVmX3BhdF9vcG4gPSByZS5jb21waWxlKCdeLipGVF9UUkFDRV9ERUZbIFx0XSpcKFsgXHRdKicpCit0cmFjZV9kZWZfcGF0X2NscyA9IHJlLmNvbXBpbGUoJ1sgXHRcKV0uKiQnKQogCiBmb3IgZiBpbiBUUkFDRV9ERUZfRklMRVM6Ci0gIGxpbmVfbnVtID0gMAotICBmb3IgaGRyX2xpbmUgaW4gb3BlbiggZiwgJ3InICk6Ci0gICAgbGluZV9udW0gPSBsaW5lX251bSArIDEKLSAgICBoZHJfbGluZSA9IGhkcl9saW5lLnN0cmlwKCkKLSAgICBpZiB0cmFjZV9kZWZfcGF0X29wbi5tYXRjaCggaGRyX2xpbmUgKSAhPSBOb25lOgotICAgICAgY29tcG9uZW50X25hbWUgPSB0cmFjZV9kZWZfcGF0X29wbi5zdWIoICcnLCBoZHJfbGluZSApCi0gICAgICBjb21wb25lbnRfbmFtZSA9IHRyYWNlX2RlZl9wYXRfY2xzLnN1YiggJycsIGNvbXBvbmVudF9uYW1lICkKLSAgICAgIGlmIGNvbXBvbmVudF9uYW1lIGluIEtOT1dOX0NPTVBPTkVOVDoKLSAgICAgICAgcHJpbnQgInRyYWNlIGNvbXBvbmVudCAlcyBpcyBkZWZpbmVkIHR3aWNlLCBzZWUgJXMgYW5kIGZ0dHJhY2UuaDolZCIgJSBcCi0gICAgICAgICAgKCBjb21wb25lbnRfbmFtZSwgS05PV05fQ09NUE9ORU5UW2NvbXBvbmVudF9uYW1lXSwgbGluZV9udW0gKQotICAgICAgZWxzZToKLSAgICAgICAgS05PV05fQ09NUE9ORU5UW2NvbXBvbmVudF9uYW1lXSA9ICIlczolZCIgJSBcCi0gICAgICAgICAgKCBvcy5wYXRoLmJhc2VuYW1lKCBmICksIGxpbmVfbnVtICkKLQorICAgIGxpbmVfbnVtID0gMAorICAgIGZvciBoZHJfbGluZSBpbiBvcGVuKGYsICdyJyk6CisgICAgICAgIGxpbmVfbnVtID0gbGluZV9udW0gKyAxCisgICAgICAgIGhkcl9saW5lID0gaGRyX2xpbmUuc3RyaXAoKQorICAgICAgICBpZiB0cmFjZV9kZWZfcGF0X29wbi5tYXRjaChoZHJfbGluZSkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb21wb25lbnRfbmFtZSA9IHRyYWNlX2RlZl9wYXRfb3BuLnN1YignJywgaGRyX2xpbmUpCisgICAgICAgICAgICBjb21wb25lbnRfbmFtZSA9IHRyYWNlX2RlZl9wYXRfY2xzLnN1YignJywgY29tcG9uZW50X25hbWUpCisgICAgICAgICAgICBpZiBjb21wb25lbnRfbmFtZSBpbiBLTk9XTl9DT01QT05FTlQ6CisgICAgICAgICAgICAgICAgcHJpbnQoInRyYWNlIGNvbXBvbmVudCAlcyBpcyBkZWZpbmVkIHR3aWNlLCIKKyAgICAgICAgICAgICAgICAgICAgICAiIHNlZSAlcyBhbmQgZnR0cmFjZS5oOiVkIiAlCisgICAgICAgICAgICAgICAgICAgICAgKGNvbXBvbmVudF9uYW1lLCBLTk9XTl9DT01QT05FTlRbY29tcG9uZW50X25hbWVdLAorICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIEtOT1dOX0NPTVBPTkVOVFtjb21wb25lbnRfbmFtZV0gPVwKKyAgICAgICAgICAgICAgICAgICAgIiVzOiVkIiAlIChvcy5wYXRoLmJhc2VuYW1lKGYpLCBsaW5lX251bSkKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBDb21wYXJlIHRoZSB1c2VkIGFuZCBkZWZpbmVkIHRyYWNlIG1hY3Jvcy4KICMKIAotcHJpbnQgIiMgVHJhY2UgY29tcG9uZW50IHVzZWQgaW4gdGhlIGltcGxlbWVudGF0aW9ucyBidXQgbm90IGRlZmluZWQgaW4gZnR0cmFjZS5oLiIKLWNtcG50ID0gVVNFRF9DT01QT05FTlQua2V5cygpCitwcmludCgiIyBUcmFjZSBjb21wb25lbnQgdXNlZCBpbiB0aGUgaW1wbGVtZW50YXRpb25zIGJ1dCBub3QgZGVmaW5lZCBpbiAiCisgICAgICAiZnR0cmFjZS5oLiIpCitjbXBudCA9IGxpc3QoVVNFRF9DT01QT05FTlQua2V5cygpKQogY21wbnQuc29ydCgpCiBmb3IgYyBpbiBjbXBudDoKLSAgaWYgYyBub3QgaW4gS05PV05fQ09NUE9ORU5UOgotICAgIHByaW50ICJUcmFjZSBjb21wb25lbnQgJXMgKHVzZWQgaW4gJXMpIGlzIG5vdCBkZWZpbmVkLiIgJSAoIGMsICIsICIuam9pbiggVVNFRF9DT01QT05FTlRbY10gKSApCisgICAgaWYgYyBub3QgaW4gS05PV05fQ09NUE9ORU5UOgorICAgICAgICBwcmludCgiVHJhY2UgY29tcG9uZW50ICVzICh1c2VkIGluICVzKSBpcyBub3QgZGVmaW5lZC4iICUKKyAgICAgICAgICAgICAgKGMsICIsICIuam9pbihVU0VEX0NPTVBPTkVOVFtjXSkpKQogCi1wcmludCAiIyBUcmFjZSBjb21wb25lbnQgaXMgZGVmaW5lZCBidXQgbm90IHVzZWQgaW4gdGhlIGltcGxlbWVudGF0aW9ucy4iCi1jbXBudCA9IEtOT1dOX0NPTVBPTkVOVC5rZXlzKCkKK3ByaW50KCIjIFRyYWNlIGNvbXBvbmVudCBpcyBkZWZpbmVkIGJ1dCBub3QgdXNlZCBpbiB0aGUgaW1wbGVtZW50YXRpb25zLiIpCitjbXBudCA9IGxpc3QoS05PV05fQ09NUE9ORU5ULmtleXMoKSkKIGNtcG50LnNvcnQoKQogZm9yIGMgaW4gY21wbnQ6Ci0gIGlmIGMgbm90IGluIFVTRURfQ09NUE9ORU5UOgotICAgIGlmIGMgIT0gImFueSI6Ci0gICAgICBwcmludCAiVHJhY2UgY29tcG9uZW50ICVzIChkZWZpbmVkIGluICVzKSBpcyBub3QgdXNlZC4iICUgKCBjLCBLTk9XTl9DT01QT05FTlRbY10gKQotCisgICAgaWYgYyBub3QgaW4gVVNFRF9DT01QT05FTlQ6CisgICAgICAgIGlmIGMgIT0gImFueSI6CisgICAgICAgICAgICBwcmludCgiVHJhY2UgY29tcG9uZW50ICVzIChkZWZpbmVkIGluICVzKSBpcyBub3QgdXNlZC4iICUKKyAgICAgICAgICAgICAgICAgIChjLCBLTk9XTl9DT01QT05FTlRbY10pKQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL2NvcmRpYy5weSBiL3NyYy90b29scy9jb3JkaWMucHkKaW5kZXggNjc0MmM5MC4uNjUxMTQyOSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL2NvcmRpYy5weQorKysgYi9zcmMvdG9vbHMvY29yZGljLnB5CkBAIC0xLDMzICsxLDMyIEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKICMgY29tcHV0ZSBhcmN0YW5nZW50IHRhYmxlIGZvciBDT1JESUMgY29tcHV0YXRpb25zIGluIGZ0dHJpZ29uLmMKLWltcG9ydCBzeXMsIG1hdGgKK2ltcG9ydCBtYXRoCiAKLSN1bml0cyAgPSA2NCo2NTUzNi4wICAgIyBkb24ndCBjaGFuZ2UgISEKLXVuaXRzICA9IDE4MCAqIDIqKjE2Ci1zY2FsZSAgPSB1bml0cy9tYXRoLnBpCisjIHVuaXRzICA9IDY0KjY1NTM2LjAgICAjIGRvbid0IGNoYW5nZSAhIQordW5pdHMgPSAxODAgKiAyICoqIDE2CitzY2FsZSA9IHVuaXRzIC8gbWF0aC5waQogc2hyaW5rID0gMS4wCi1jb21tYSAgPSAiIgorYW5nbGVzMiA9IFtdCiAKLXByaW50ICIiCi1wcmludCAidGFibGUgb2YgYXJjdGFuKCAxLzJebiApIGZvciBQSSA9ICIgKyByZXByKHVuaXRzLzY1NTM2LjApICsgIiB1bml0cyIKK3ByaW50KCIiKQorcHJpbnQoInRhYmxlIG9mIGFyY3RhbiggMS8yXm4gKSBmb3IgUEkgPSAiICsgcmVwcih1bml0cyAvIDY1NTM2LjApICsgIiB1bml0cyIpCiAKLWZvciBuIGluIHJhbmdlKDEsMzIpOgorZm9yIG4gaW4gcmFuZ2UoMSwgMzIpOgogCi0gICAgeCA9IDAuNSoqbiAgICAgICAgICAgICAgICAgICAgICAjIHRhbmdlbnQgdmFsdWUKKyAgICB4ID0gMC41ICoqIG4gICMgdGFuZ2VudCB2YWx1ZQogCi0gICAgYW5nbGUgID0gbWF0aC5hdGFuKHgpICAgICAgICAgICAjIGFyY3RhbmdlbnQKLSAgICBhbmdsZTIgPSByb3VuZChhbmdsZSpzY2FsZSkgICAgICMgYXJjdGFuZ2VudCBpbiBGVF9BbmdsZSB1bml0cworICAgIGFuZ2xlID0gbWF0aC5hdGFuKHgpICAjIGFyY3RhbmdlbnQKKyAgICBhbmdsZTIgPSByb3VuZChhbmdsZSAqIHNjYWxlKSAgIyBhcmN0YW5nZW50IGluIEZUX0FuZ2xlIHVuaXRzCiAKICAgICBpZiBhbmdsZTIgPD0gMDoKICAgICAgICAgYnJlYWsKIAotICAgIHN5cy5zdGRvdXQud3JpdGUoIGNvbW1hICsgcmVwciggaW50KGFuZ2xlMikgKSApCi0gICAgY29tbWEgPSAiLCAiCisgICAgYW5nbGVzMi5hcHBlbmQocmVwcihpbnQoYW5nbGUyKSkpCisgICAgc2hyaW5rIC89IG1hdGguc3FydCgxICsgeCAqIHgpCiAKLSAgICBzaHJpbmsgLz0gbWF0aC5zcXJ0KCAxICsgeCp4ICkKLQotcHJpbnQKLXByaW50ICJzaHJpbmsgZmFjdG9yICAgID0gIiArIHJlcHIoIHNocmluayApCi1wcmludCAic2hyaW5rIGZhY3RvciAyICA9ICIgKyByZXByKCBpbnQoIHNocmluayAqICgyKiozMikgKSApCi1wcmludCAiZXhwYW5zaW9uIGZhY3RvciA9ICIgKyByZXByKCAxL3NocmluayApCi1wcmludCAiIgotCitwcmludCgiLCAiLmpvaW4oYW5nbGVzMikpCitwcmludCgic2hyaW5rIGZhY3RvciAgICA9ICIgKyByZXByKHNocmluaykpCitwcmludCgic2hyaW5rIGZhY3RvciAyICA9ICIgKyByZXByKGludChzaHJpbmsgKiAoMiAqKiAzMikpKSkKK3ByaW50KCJleHBhbnNpb24gZmFjdG9yID0gIiArIHJlcHIoMSAvIHNocmluaykpCitwcmludCgiIikKZGlmZiAtLWdpdCBhL3NyYy90b29scy9nbG5hbWVzLnB5IGIvc3JjL3Rvb2xzL2dsbmFtZXMucHkKaW5kZXggYzZmMmYyNy4uNDE1MDlkYiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL2dsbmFtZXMucHkKKysrIGIvc3JjL3Rvb2xzL2dsbmFtZXMucHkKQEAgLTEsMTIgKzEsOSBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCisjIS91c3IvYmluL2VudiBweXRob24zCiAKICMKICMgRnJlZVR5cGUgMiBnbHlwaCBuYW1lIGJ1aWxkZXIKICMKLQotCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKQEAgLTE2LDggKzEzLDcgQEAKICMgZnVsbHkuCiAKIAotIiIiXAotCisiIiIKIHVzYWdlOiAlcyA8b3V0cHV0LWZpbGU+CiAKICAgVGhpcyBweXRob24gc2NyaXB0IGdlbmVyYXRlcyB0aGUgZ2x5cGggbmFtZXMgdGFibGVzIGRlZmluZWQgaW4gdGhlCkBAIC0yNiw5ICsyMiw5IEBACiAgIEl0cyBzaW5nbGUgYXJndW1lbnQgaXMgdGhlIG5hbWUgb2YgdGhlIGhlYWRlciBmaWxlIHRvIGJlIGNyZWF0ZWQuCiAiIiIKIAotCi1pbXBvcnQgc3lzLCBzdHJpbmcsIHN0cnVjdCwgcmUsIG9zLnBhdGgKLQoraW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9ydCBzeXMKIAogIyBUaGlzIHRhYmxlIGxpc3RzIHRoZSBnbHlwaHMgYWNjb3JkaW5nIHRvIHRoZSBNYWNpbnRvc2ggc3BlY2lmaWNhdGlvbi4KICMgSXQgaXMgdXNlZCBieSB0aGUgVHJ1ZVR5cGUgUG9zdHNjcmlwdCBuYW1lcyB0YWJsZS4KQEAgLTM5LDM3OSArMzUsMzcxIEBACiAjCiAjIGZvciB0aGUgb2ZmaWNpYWwgbGlzdC4KICMKLW1hY19zdGFuZGFyZF9uYW1lcyA9IFwKLVsKLSAgIyAwCi0gICIubm90ZGVmIiwgIi5udWxsIiwgIm5vbm1hcmtpbmdyZXR1cm4iLCAic3BhY2UiLCAiZXhjbGFtIiwKLSAgInF1b3RlZGJsIiwgIm51bWJlcnNpZ24iLCAiZG9sbGFyIiwgInBlcmNlbnQiLCAiYW1wZXJzYW5kIiwKK21hY19zdGFuZGFyZF9uYW1lcyA9IFsKKyAgICAjIDAKKyAgICAiLm5vdGRlZiIsICIubnVsbCIsICJub25tYXJraW5ncmV0dXJuIiwgInNwYWNlIiwgImV4Y2xhbSIsCisgICAgInF1b3RlZGJsIiwgIm51bWJlcnNpZ24iLCAiZG9sbGFyIiwgInBlcmNlbnQiLCAiYW1wZXJzYW5kIiwKIAotICAjIDEwCi0gICJxdW90ZXNpbmdsZSIsICJwYXJlbmxlZnQiLCAicGFyZW5yaWdodCIsICJhc3RlcmlzayIsICJwbHVzIiwKLSAgImNvbW1hIiwgImh5cGhlbiIsICJwZXJpb2QiLCAic2xhc2giLCAiemVybyIsCisgICAgIyAxMAorICAgICJxdW90ZXNpbmdsZSIsICJwYXJlbmxlZnQiLCAicGFyZW5yaWdodCIsICJhc3RlcmlzayIsICJwbHVzIiwKKyAgICAiY29tbWEiLCAiaHlwaGVuIiwgInBlcmlvZCIsICJzbGFzaCIsICJ6ZXJvIiwKIAotICAjIDIwCi0gICJvbmUiLCAidHdvIiwgInRocmVlIiwgImZvdXIiLCAiZml2ZSIsCi0gICJzaXgiLCAic2V2ZW4iLCAiZWlnaHQiLCAibmluZSIsICJjb2xvbiIsCisgICAgIyAyMAorICAgICJvbmUiLCAidHdvIiwgInRocmVlIiwgImZvdXIiLCAiZml2ZSIsCisgICAgInNpeCIsICJzZXZlbiIsICJlaWdodCIsICJuaW5lIiwgImNvbG9uIiwKIAotICAjIDMwCi0gICJzZW1pY29sb24iLCAibGVzcyIsICJlcXVhbCIsICJncmVhdGVyIiwgInF1ZXN0aW9uIiwKLSAgImF0IiwgIkEiLCAiQiIsICJDIiwgIkQiLAorICAgICMgMzAKKyAgICAic2VtaWNvbG9uIiwgImxlc3MiLCAiZXF1YWwiLCAiZ3JlYXRlciIsICJxdWVzdGlvbiIsCisgICAgImF0IiwgIkEiLCAiQiIsICJDIiwgIkQiLAogCi0gICMgNDAKLSAgIkUiLCAiRiIsICJHIiwgIkgiLCAiSSIsCi0gICJKIiwgIksiLCAiTCIsICJNIiwgIk4iLAorICAgICMgNDAKKyAgICAiRSIsICJGIiwgIkciLCAiSCIsICJJIiwKKyAgICAiSiIsICJLIiwgIkwiLCAiTSIsICJOIiwKIAotICAjIDUwCi0gICJPIiwgIlAiLCAiUSIsICJSIiwgIlMiLAotICAiVCIsICJVIiwgIlYiLCAiVyIsICJYIiwKKyAgICAjIDUwCisgICAgIk8iLCAiUCIsICJRIiwgIlIiLCAiUyIsCisgICAgIlQiLCAiVSIsICJWIiwgIlciLCAiWCIsCiAKLSAgIyA2MAotICAiWSIsICJaIiwgImJyYWNrZXRsZWZ0IiwgImJhY2tzbGFzaCIsICJicmFja2V0cmlnaHQiLAotICAiYXNjaWljaXJjdW0iLCAidW5kZXJzY29yZSIsICJncmF2ZSIsICJhIiwgImIiLAorICAgICMgNjAKKyAgICAiWSIsICJaIiwgImJyYWNrZXRsZWZ0IiwgImJhY2tzbGFzaCIsICJicmFja2V0cmlnaHQiLAorICAgICJhc2NpaWNpcmN1bSIsICJ1bmRlcnNjb3JlIiwgImdyYXZlIiwgImEiLCAiYiIsCiAKLSAgIyA3MAotICAiYyIsICJkIiwgImUiLCAiZiIsICJnIiwKLSAgImgiLCAiaSIsICJqIiwgImsiLCAibCIsCisgICAgIyA3MAorICAgICJjIiwgImQiLCAiZSIsICJmIiwgImciLAorICAgICJoIiwgImkiLCAiaiIsICJrIiwgImwiLAogCi0gICMgODAKLSAgIm0iLCAibiIsICJvIiwgInAiLCAicSIsCi0gICJyIiwgInMiLCAidCIsICJ1IiwgInYiLAorICAgICMgODAKKyAgICAibSIsICJuIiwgIm8iLCAicCIsICJxIiwKKyAgICAiciIsICJzIiwgInQiLCAidSIsICJ2IiwKIAotICAjIDkwCi0gICJ3IiwgIngiLCAieSIsICJ6IiwgImJyYWNlbGVmdCIsCi0gICJiYXIiLCAiYnJhY2VyaWdodCIsICJhc2NpaXRpbGRlIiwgIkFkaWVyZXNpcyIsICJBcmluZyIsCisgICAgIyA5MAorICAgICJ3IiwgIngiLCAieSIsICJ6IiwgImJyYWNlbGVmdCIsCisgICAgImJhciIsICJicmFjZXJpZ2h0IiwgImFzY2lpdGlsZGUiLCAiQWRpZXJlc2lzIiwgIkFyaW5nIiwKIAotICAjIDEwMAotICAiQ2NlZGlsbGEiLCAiRWFjdXRlIiwgIk50aWxkZSIsICJPZGllcmVzaXMiLCAiVWRpZXJlc2lzIiwKLSAgImFhY3V0ZSIsICJhZ3JhdmUiLCAiYWNpcmN1bWZsZXgiLCAiYWRpZXJlc2lzIiwgImF0aWxkZSIsCisgICAgIyAxMDAKKyAgICAiQ2NlZGlsbGEiLCAiRWFjdXRlIiwgIk50aWxkZSIsICJPZGllcmVzaXMiLCAiVWRpZXJlc2lzIiwKKyAgICAiYWFjdXRlIiwgImFncmF2ZSIsICJhY2lyY3VtZmxleCIsICJhZGllcmVzaXMiLCAiYXRpbGRlIiwKIAotICAjIDExMAotICAiYXJpbmciLCAiY2NlZGlsbGEiLCAiZWFjdXRlIiwgImVncmF2ZSIsICJlY2lyY3VtZmxleCIsCi0gICJlZGllcmVzaXMiLCAiaWFjdXRlIiwgImlncmF2ZSIsICJpY2lyY3VtZmxleCIsICJpZGllcmVzaXMiLAorICAgICMgMTEwCisgICAgImFyaW5nIiwgImNjZWRpbGxhIiwgImVhY3V0ZSIsICJlZ3JhdmUiLCAiZWNpcmN1bWZsZXgiLAorICAgICJlZGllcmVzaXMiLCAiaWFjdXRlIiwgImlncmF2ZSIsICJpY2lyY3VtZmxleCIsICJpZGllcmVzaXMiLAogCi0gICMgMTIwCi0gICJudGlsZGUiLCAib2FjdXRlIiwgIm9ncmF2ZSIsICJvY2lyY3VtZmxleCIsICJvZGllcmVzaXMiLAotICAib3RpbGRlIiwgInVhY3V0ZSIsICJ1Z3JhdmUiLCAidWNpcmN1bWZsZXgiLCAidWRpZXJlc2lzIiwKKyAgICAjIDEyMAorICAgICJudGlsZGUiLCAib2FjdXRlIiwgIm9ncmF2ZSIsICJvY2lyY3VtZmxleCIsICJvZGllcmVzaXMiLAorICAgICJvdGlsZGUiLCAidWFjdXRlIiwgInVncmF2ZSIsICJ1Y2lyY3VtZmxleCIsICJ1ZGllcmVzaXMiLAogCi0gICMgMTMwCi0gICJkYWdnZXIiLCAiZGVncmVlIiwgImNlbnQiLCAic3RlcmxpbmciLCAic2VjdGlvbiIsCi0gICJidWxsZXQiLCAicGFyYWdyYXBoIiwgImdlcm1hbmRibHMiLCAicmVnaXN0ZXJlZCIsICJjb3B5cmlnaHQiLAorICAgICMgMTMwCisgICAgImRhZ2dlciIsICJkZWdyZWUiLCAiY2VudCIsICJzdGVybGluZyIsICJzZWN0aW9uIiwKKyAgICAiYnVsbGV0IiwgInBhcmFncmFwaCIsICJnZXJtYW5kYmxzIiwgInJlZ2lzdGVyZWQiLCAiY29weXJpZ2h0IiwKIAotICAjIDE0MAotICAidHJhZGVtYXJrIiwgImFjdXRlIiwgImRpZXJlc2lzIiwgIm5vdGVxdWFsIiwgIkFFIiwKLSAgIk9zbGFzaCIsICJpbmZpbml0eSIsICJwbHVzbWludXMiLCAibGVzc2VxdWFsIiwgImdyZWF0ZXJlcXVhbCIsCisgICAgIyAxNDAKKyAgICAidHJhZGVtYXJrIiwgImFjdXRlIiwgImRpZXJlc2lzIiwgIm5vdGVxdWFsIiwgIkFFIiwKKyAgICAiT3NsYXNoIiwgImluZmluaXR5IiwgInBsdXNtaW51cyIsICJsZXNzZXF1YWwiLCAiZ3JlYXRlcmVxdWFsIiwKIAotICAjIDE1MAotICAieWVuIiwgIm11IiwgInBhcnRpYWxkaWZmIiwgInN1bW1hdGlvbiIsICJwcm9kdWN0IiwKLSAgInBpIiwgImludGVncmFsIiwgIm9yZGZlbWluaW5lIiwgIm9yZG1hc2N1bGluZSIsICJPbWVnYSIsCisgICAgIyAxNTAKKyAgICAieWVuIiwgIm11IiwgInBhcnRpYWxkaWZmIiwgInN1bW1hdGlvbiIsICJwcm9kdWN0IiwKKyAgICAicGkiLCAiaW50ZWdyYWwiLCAib3JkZmVtaW5pbmUiLCAib3JkbWFzY3VsaW5lIiwgIk9tZWdhIiwKIAotICAjIDE2MAotICAiYWUiLCAib3NsYXNoIiwgInF1ZXN0aW9uZG93biIsICJleGNsYW1kb3duIiwgImxvZ2ljYWxub3QiLAotICAicmFkaWNhbCIsICJmbG9yaW4iLCAiYXBwcm94ZXF1YWwiLCAiRGVsdGEiLCAiZ3VpbGxlbW90bGVmdCIsCisgICAgIyAxNjAKKyAgICAiYWUiLCAib3NsYXNoIiwgInF1ZXN0aW9uZG93biIsICJleGNsYW1kb3duIiwgImxvZ2ljYWxub3QiLAorICAgICJyYWRpY2FsIiwgImZsb3JpbiIsICJhcHByb3hlcXVhbCIsICJEZWx0YSIsICJndWlsbGVtb3RsZWZ0IiwKIAotICAjIDE3MAotICAiZ3VpbGxlbW90cmlnaHQiLCAiZWxsaXBzaXMiLCAibm9uYnJlYWtpbmdzcGFjZSIsICJBZ3JhdmUiLCAiQXRpbGRlIiwKLSAgIk90aWxkZSIsICJPRSIsICJvZSIsICJlbmRhc2giLCAiZW1kYXNoIiwKKyAgICAjIDE3MAorICAgICJndWlsbGVtb3RyaWdodCIsICJlbGxpcHNpcyIsICJub25icmVha2luZ3NwYWNlIiwgIkFncmF2ZSIsICJBdGlsZGUiLAorICAgICJPdGlsZGUiLCAiT0UiLCAib2UiLCAiZW5kYXNoIiwgImVtZGFzaCIsCiAKLSAgIyAxODAKLSAgInF1b3RlZGJsbGVmdCIsICJxdW90ZWRibHJpZ2h0IiwgInF1b3RlbGVmdCIsICJxdW90ZXJpZ2h0IiwgImRpdmlkZSIsCi0gICJsb3plbmdlIiwgInlkaWVyZXNpcyIsICJZZGllcmVzaXMiLCAiZnJhY3Rpb24iLCAiY3VycmVuY3kiLAorICAgICMgMTgwCisgICAgInF1b3RlZGJsbGVmdCIsICJxdW90ZWRibHJpZ2h0IiwgInF1b3RlbGVmdCIsICJxdW90ZXJpZ2h0IiwgImRpdmlkZSIsCisgICAgImxvemVuZ2UiLCAieWRpZXJlc2lzIiwgIllkaWVyZXNpcyIsICJmcmFjdGlvbiIsICJjdXJyZW5jeSIsCiAKLSAgIyAxOTAKLSAgImd1aWxzaW5nbGxlZnQiLCAiZ3VpbHNpbmdscmlnaHQiLCAiZmkiLCAiZmwiLCAiZGFnZ2VyZGJsIiwKLSAgInBlcmlvZGNlbnRlcmVkIiwgInF1b3Rlc2luZ2xiYXNlIiwgInF1b3RlZGJsYmFzZSIsICJwZXJ0aG91c2FuZCIsCisgICAgIyAxOTAKKyAgICAiZ3VpbHNpbmdsbGVmdCIsICJndWlsc2luZ2xyaWdodCIsICJmaSIsICJmbCIsICJkYWdnZXJkYmwiLAorICAgICJwZXJpb2RjZW50ZXJlZCIsICJxdW90ZXNpbmdsYmFzZSIsICJxdW90ZWRibGJhc2UiLCAicGVydGhvdXNhbmQiLAogICAgICJBY2lyY3VtZmxleCIsCiAKLSAgIyAyMDAKLSAgIkVjaXJjdW1mbGV4IiwgIkFhY3V0ZSIsICJFZGllcmVzaXMiLCAiRWdyYXZlIiwgIklhY3V0ZSIsCi0gICJJY2lyY3VtZmxleCIsICJJZGllcmVzaXMiLCAiSWdyYXZlIiwgIk9hY3V0ZSIsICJPY2lyY3VtZmxleCIsCisgICAgIyAyMDAKKyAgICAiRWNpcmN1bWZsZXgiLCAiQWFjdXRlIiwgIkVkaWVyZXNpcyIsICJFZ3JhdmUiLCAiSWFjdXRlIiwKKyAgICAiSWNpcmN1bWZsZXgiLCAiSWRpZXJlc2lzIiwgIklncmF2ZSIsICJPYWN1dGUiLCAiT2NpcmN1bWZsZXgiLAogCi0gICMgMjEwCi0gICJhcHBsZSIsICJPZ3JhdmUiLCAiVWFjdXRlIiwgIlVjaXJjdW1mbGV4IiwgIlVncmF2ZSIsCi0gICJkb3RsZXNzaSIsICJjaXJjdW1mbGV4IiwgInRpbGRlIiwgIm1hY3JvbiIsICJicmV2ZSIsCisgICAgIyAyMTAKKyAgICAiYXBwbGUiLCAiT2dyYXZlIiwgIlVhY3V0ZSIsICJVY2lyY3VtZmxleCIsICJVZ3JhdmUiLAorICAgICJkb3RsZXNzaSIsICJjaXJjdW1mbGV4IiwgInRpbGRlIiwgIm1hY3JvbiIsICJicmV2ZSIsCiAKLSAgIyAyMjAKLSAgImRvdGFjY2VudCIsICJyaW5nIiwgImNlZGlsbGEiLCAiaHVuZ2FydW1sYXV0IiwgIm9nb25layIsCi0gICJjYXJvbiIsICJMc2xhc2giLCAibHNsYXNoIiwgIlNjYXJvbiIsICJzY2Fyb24iLAorICAgICMgMjIwCisgICAgImRvdGFjY2VudCIsICJyaW5nIiwgImNlZGlsbGEiLCAiaHVuZ2FydW1sYXV0IiwgIm9nb25layIsCisgICAgImNhcm9uIiwgIkxzbGFzaCIsICJsc2xhc2giLCAiU2Nhcm9uIiwgInNjYXJvbiIsCiAKLSAgIyAyMzAKLSAgIlpjYXJvbiIsICJ6Y2Fyb24iLCAiYnJva2VuYmFyIiwgIkV0aCIsICJldGgiLAotICAiWWFjdXRlIiwgInlhY3V0ZSIsICJUaG9ybiIsICJ0aG9ybiIsICJtaW51cyIsCisgICAgIyAyMzAKKyAgICAiWmNhcm9uIiwgInpjYXJvbiIsICJicm9rZW5iYXIiLCAiRXRoIiwgImV0aCIsCisgICAgIllhY3V0ZSIsICJ5YWN1dGUiLCAiVGhvcm4iLCAidGhvcm4iLCAibWludXMiLAogCi0gICMgMjQwCi0gICJtdWx0aXBseSIsICJvbmVzdXBlcmlvciIsICJ0d29zdXBlcmlvciIsICJ0aHJlZXN1cGVyaW9yIiwgIm9uZWhhbGYiLAotICAib25lcXVhcnRlciIsICJ0aHJlZXF1YXJ0ZXJzIiwgImZyYW5jIiwgIkdicmV2ZSIsICJnYnJldmUiLAorICAgICMgMjQwCisgICAgIm11bHRpcGx5IiwgIm9uZXN1cGVyaW9yIiwgInR3b3N1cGVyaW9yIiwgInRocmVlc3VwZXJpb3IiLCAib25laGFsZiIsCisgICAgIm9uZXF1YXJ0ZXIiLCAidGhyZWVxdWFydGVycyIsICJmcmFuYyIsICJHYnJldmUiLCAiZ2JyZXZlIiwKIAotICAjIDI1MAotICAiSWRvdGFjY2VudCIsICJTY2VkaWxsYSIsICJzY2VkaWxsYSIsICJDYWN1dGUiLCAiY2FjdXRlIiwKLSAgIkNjYXJvbiIsICJjY2Fyb24iLCAiZGNyb2F0IgorICAgICMgMjUwCisgICAgIklkb3RhY2NlbnQiLCAiU2NlZGlsbGEiLCAic2NlZGlsbGEiLCAiQ2FjdXRlIiwgImNhY3V0ZSIsCisgICAgIkNjYXJvbiIsICJjY2Fyb24iLCAiZGNyb2F0IgogXQogCi0KICMgVGhlIGxpc3Qgb2Ygc3RhbmRhcmQgYFNJRCcgZ2x5cGggbmFtZXMuICBGb3IgdGhlIG9mZmljaWFsIGxpc3QsCiAjIHNlZSBBbm5leCBBIG9mIGRvY3VtZW50IGF0CiAjCi0jICAgaHR0cHM6Ly93d3cuYWRvYmUuY29tL2NvbnRlbnQvZGFtL2Fjb20vZW4vZGV2bmV0L2ZvbnQvcGRmcy81MTc2LkNGRi5wZGYgIC4KKyMgICBodHRwczovL3d3dy5hZG9iZS5jb20vY29udGVudC9kYW0vYWNvbS9lbi9kZXZuZXQvZm9udC9wZGZzLzUxNzYuQ0ZGLnBkZgogIwotc2lkX3N0YW5kYXJkX25hbWVzID0gXAotWwotICAjIDAKLSAgIi5ub3RkZWYiLCAic3BhY2UiLCAiZXhjbGFtIiwgInF1b3RlZGJsIiwgIm51bWJlcnNpZ24iLAotICAiZG9sbGFyIiwgInBlcmNlbnQiLCAiYW1wZXJzYW5kIiwgInF1b3RlcmlnaHQiLCAicGFyZW5sZWZ0IiwKK3NpZF9zdGFuZGFyZF9uYW1lcyA9IFsKKyAgICAjIDAKKyAgICAiLm5vdGRlZiIsICJzcGFjZSIsICJleGNsYW0iLCAicXVvdGVkYmwiLCAibnVtYmVyc2lnbiIsCisgICAgImRvbGxhciIsICJwZXJjZW50IiwgImFtcGVyc2FuZCIsICJxdW90ZXJpZ2h0IiwgInBhcmVubGVmdCIsCiAKLSAgIyAxMAotICAicGFyZW5yaWdodCIsICJhc3RlcmlzayIsICJwbHVzIiwgImNvbW1hIiwgImh5cGhlbiIsCi0gICJwZXJpb2QiLCAic2xhc2giLCAiemVybyIsICJvbmUiLCAidHdvIiwKKyAgICAjIDEwCisgICAgInBhcmVucmlnaHQiLCAiYXN0ZXJpc2siLCAicGx1cyIsICJjb21tYSIsICJoeXBoZW4iLAorICAgICJwZXJpb2QiLCAic2xhc2giLCAiemVybyIsICJvbmUiLCAidHdvIiwKIAotICAjIDIwCi0gICJ0aHJlZSIsICJmb3VyIiwgImZpdmUiLCAic2l4IiwgInNldmVuIiwKLSAgImVpZ2h0IiwgIm5pbmUiLCAiY29sb24iLCAic2VtaWNvbG9uIiwgImxlc3MiLAorICAgICMgMjAKKyAgICAidGhyZWUiLCAiZm91ciIsICJmaXZlIiwgInNpeCIsICJzZXZlbiIsCisgICAgImVpZ2h0IiwgIm5pbmUiLCAiY29sb24iLCAic2VtaWNvbG9uIiwgImxlc3MiLAogCi0gICMgMzAKLSAgImVxdWFsIiwgImdyZWF0ZXIiLCAicXVlc3Rpb24iLCAiYXQiLCAiQSIsCi0gICJCIiwgIkMiLCAiRCIsICJFIiwgIkYiLAorICAgICMgMzAKKyAgICAiZXF1YWwiLCAiZ3JlYXRlciIsICJxdWVzdGlvbiIsICJhdCIsICJBIiwKKyAgICAiQiIsICJDIiwgIkQiLCAiRSIsICJGIiwKIAotICAjIDQwCi0gICJHIiwgIkgiLCAiSSIsICJKIiwgIksiLAotICAiTCIsICJNIiwgIk4iLCAiTyIsICJQIiwKKyAgICAjIDQwCisgICAgIkciLCAiSCIsICJJIiwgIkoiLCAiSyIsCisgICAgIkwiLCAiTSIsICJOIiwgIk8iLCAiUCIsCiAKLSAgIyA1MAotICAiUSIsICJSIiwgIlMiLCAiVCIsICJVIiwKLSAgIlYiLCAiVyIsICJYIiwgIlkiLCAiWiIsCisgICAgIyA1MAorICAgICJRIiwgIlIiLCAiUyIsICJUIiwgIlUiLAorICAgICJWIiwgIlciLCAiWCIsICJZIiwgIloiLAogCi0gICMgNjAKLSAgImJyYWNrZXRsZWZ0IiwgImJhY2tzbGFzaCIsICJicmFja2V0cmlnaHQiLCAiYXNjaWljaXJjdW0iLCAidW5kZXJzY29yZSIsCi0gICJxdW90ZWxlZnQiLCAiYSIsICJiIiwgImMiLCAiZCIsCisgICAgIyA2MAorICAgICJicmFja2V0bGVmdCIsICJiYWNrc2xhc2giLCAiYnJhY2tldHJpZ2h0IiwgImFzY2lpY2lyY3VtIiwgInVuZGVyc2NvcmUiLAorICAgICJxdW90ZWxlZnQiLCAiYSIsICJiIiwgImMiLCAiZCIsCiAKLSAgIyA3MAotICAiZSIsICJmIiwgImciLCAiaCIsICJpIiwKLSAgImoiLCAiayIsICJsIiwgIm0iLCAibiIsCisgICAgIyA3MAorICAgICJlIiwgImYiLCAiZyIsICJoIiwgImkiLAorICAgICJqIiwgImsiLCAibCIsICJtIiwgIm4iLAogCi0gICMgODAKLSAgIm8iLCAicCIsICJxIiwgInIiLCAicyIsCi0gICJ0IiwgInUiLCAidiIsICJ3IiwgIngiLAorICAgICMgODAKKyAgICAibyIsICJwIiwgInEiLCAiciIsICJzIiwKKyAgICAidCIsICJ1IiwgInYiLCAidyIsICJ4IiwKIAotICAjIDkwCi0gICJ5IiwgInoiLCAiYnJhY2VsZWZ0IiwgImJhciIsICJicmFjZXJpZ2h0IiwKLSAgImFzY2lpdGlsZGUiLCAiZXhjbGFtZG93biIsICJjZW50IiwgInN0ZXJsaW5nIiwgImZyYWN0aW9uIiwKKyAgICAjIDkwCisgICAgInkiLCAieiIsICJicmFjZWxlZnQiLCAiYmFyIiwgImJyYWNlcmlnaHQiLAorICAgICJhc2NpaXRpbGRlIiwgImV4Y2xhbWRvd24iLCAiY2VudCIsICJzdGVybGluZyIsICJmcmFjdGlvbiIsCiAKLSAgIyAxMDAKLSAgInllbiIsICJmbG9yaW4iLCAic2VjdGlvbiIsICJjdXJyZW5jeSIsICJxdW90ZXNpbmdsZSIsCi0gICJxdW90ZWRibGxlZnQiLCAiZ3VpbGxlbW90bGVmdCIsICJndWlsc2luZ2xsZWZ0IiwgImd1aWxzaW5nbHJpZ2h0IiwgImZpIiwKKyAgICAjIDEwMAorICAgICJ5ZW4iLCAiZmxvcmluIiwgInNlY3Rpb24iLCAiY3VycmVuY3kiLCAicXVvdGVzaW5nbGUiLAorICAgICJxdW90ZWRibGxlZnQiLCAiZ3VpbGxlbW90bGVmdCIsICJndWlsc2luZ2xsZWZ0IiwgImd1aWxzaW5nbHJpZ2h0IiwgImZpIiwKIAotICAjIDExMAotICAiZmwiLCAiZW5kYXNoIiwgImRhZ2dlciIsICJkYWdnZXJkYmwiLCAicGVyaW9kY2VudGVyZWQiLAotICAicGFyYWdyYXBoIiwgImJ1bGxldCIsICJxdW90ZXNpbmdsYmFzZSIsICJxdW90ZWRibGJhc2UiLCAicXVvdGVkYmxyaWdodCIsCisgICAgIyAxMTAKKyAgICAiZmwiLCAiZW5kYXNoIiwgImRhZ2dlciIsICJkYWdnZXJkYmwiLCAicGVyaW9kY2VudGVyZWQiLAorICAgICJwYXJhZ3JhcGgiLCAiYnVsbGV0IiwgInF1b3Rlc2luZ2xiYXNlIiwgInF1b3RlZGJsYmFzZSIsICJxdW90ZWRibHJpZ2h0IiwKIAotICAjIDEyMAotICAiZ3VpbGxlbW90cmlnaHQiLCAiZWxsaXBzaXMiLCAicGVydGhvdXNhbmQiLCAicXVlc3Rpb25kb3duIiwgImdyYXZlIiwKLSAgImFjdXRlIiwgImNpcmN1bWZsZXgiLCAidGlsZGUiLCAibWFjcm9uIiwgImJyZXZlIiwKKyAgICAjIDEyMAorICAgICJndWlsbGVtb3RyaWdodCIsICJlbGxpcHNpcyIsICJwZXJ0aG91c2FuZCIsICJxdWVzdGlvbmRvd24iLCAiZ3JhdmUiLAorICAgICJhY3V0ZSIsICJjaXJjdW1mbGV4IiwgInRpbGRlIiwgIm1hY3JvbiIsICJicmV2ZSIsCiAKLSAgIyAxMzAKLSAgImRvdGFjY2VudCIsICJkaWVyZXNpcyIsICJyaW5nIiwgImNlZGlsbGEiLCAiaHVuZ2FydW1sYXV0IiwKLSAgIm9nb25layIsICJjYXJvbiIsICJlbWRhc2giLCAiQUUiLCAib3JkZmVtaW5pbmUiLAorICAgICMgMTMwCisgICAgImRvdGFjY2VudCIsICJkaWVyZXNpcyIsICJyaW5nIiwgImNlZGlsbGEiLCAiaHVuZ2FydW1sYXV0IiwKKyAgICAib2dvbmVrIiwgImNhcm9uIiwgImVtZGFzaCIsICJBRSIsICJvcmRmZW1pbmluZSIsCiAKLSAgIyAxNDAKLSAgIkxzbGFzaCIsICJPc2xhc2giLCAiT0UiLCAib3JkbWFzY3VsaW5lIiwgImFlIiwKLSAgImRvdGxlc3NpIiwgImxzbGFzaCIsICJvc2xhc2giLCAib2UiLCAiZ2VybWFuZGJscyIsCisgICAgIyAxNDAKKyAgICAiTHNsYXNoIiwgIk9zbGFzaCIsICJPRSIsICJvcmRtYXNjdWxpbmUiLCAiYWUiLAorICAgICJkb3RsZXNzaSIsICJsc2xhc2giLCAib3NsYXNoIiwgIm9lIiwgImdlcm1hbmRibHMiLAogCi0gICMgMTUwCi0gICJvbmVzdXBlcmlvciIsICJsb2dpY2Fsbm90IiwgIm11IiwgInRyYWRlbWFyayIsICJFdGgiLAotICAib25laGFsZiIsICJwbHVzbWludXMiLCAiVGhvcm4iLCAib25lcXVhcnRlciIsICJkaXZpZGUiLAorICAgICMgMTUwCisgICAgIm9uZXN1cGVyaW9yIiwgImxvZ2ljYWxub3QiLCAibXUiLCAidHJhZGVtYXJrIiwgIkV0aCIsCisgICAgIm9uZWhhbGYiLCAicGx1c21pbnVzIiwgIlRob3JuIiwgIm9uZXF1YXJ0ZXIiLCAiZGl2aWRlIiwKIAotICAjIDE2MAotICAiYnJva2VuYmFyIiwgImRlZ3JlZSIsICJ0aG9ybiIsICJ0aHJlZXF1YXJ0ZXJzIiwgInR3b3N1cGVyaW9yIiwKLSAgInJlZ2lzdGVyZWQiLCAibWludXMiLCAiZXRoIiwgIm11bHRpcGx5IiwgInRocmVlc3VwZXJpb3IiLAorICAgICMgMTYwCisgICAgImJyb2tlbmJhciIsICJkZWdyZWUiLCAidGhvcm4iLCAidGhyZWVxdWFydGVycyIsICJ0d29zdXBlcmlvciIsCisgICAgInJlZ2lzdGVyZWQiLCAibWludXMiLCAiZXRoIiwgIm11bHRpcGx5IiwgInRocmVlc3VwZXJpb3IiLAogCi0gICMgMTcwCi0gICJjb3B5cmlnaHQiLCAiQWFjdXRlIiwgIkFjaXJjdW1mbGV4IiwgIkFkaWVyZXNpcyIsICJBZ3JhdmUiLAotICAiQXJpbmciLCAiQXRpbGRlIiwgIkNjZWRpbGxhIiwgIkVhY3V0ZSIsICJFY2lyY3VtZmxleCIsCisgICAgIyAxNzAKKyAgICAiY29weXJpZ2h0IiwgIkFhY3V0ZSIsICJBY2lyY3VtZmxleCIsICJBZGllcmVzaXMiLCAiQWdyYXZlIiwKKyAgICAiQXJpbmciLCAiQXRpbGRlIiwgIkNjZWRpbGxhIiwgIkVhY3V0ZSIsICJFY2lyY3VtZmxleCIsCiAKLSAgIyAxODAKLSAgIkVkaWVyZXNpcyIsICJFZ3JhdmUiLCAiSWFjdXRlIiwgIkljaXJjdW1mbGV4IiwgIklkaWVyZXNpcyIsCi0gICJJZ3JhdmUiLCAiTnRpbGRlIiwgIk9hY3V0ZSIsICJPY2lyY3VtZmxleCIsICJPZGllcmVzaXMiLAorICAgICMgMTgwCisgICAgIkVkaWVyZXNpcyIsICJFZ3JhdmUiLCAiSWFjdXRlIiwgIkljaXJjdW1mbGV4IiwgIklkaWVyZXNpcyIsCisgICAgIklncmF2ZSIsICJOdGlsZGUiLCAiT2FjdXRlIiwgIk9jaXJjdW1mbGV4IiwgIk9kaWVyZXNpcyIsCiAKLSAgIyAxOTAKLSAgIk9ncmF2ZSIsICJPdGlsZGUiLCAiU2Nhcm9uIiwgIlVhY3V0ZSIsICJVY2lyY3VtZmxleCIsCi0gICJVZGllcmVzaXMiLCAiVWdyYXZlIiwgIllhY3V0ZSIsICJZZGllcmVzaXMiLCAiWmNhcm9uIiwKKyAgICAjIDE5MAorICAgICJPZ3JhdmUiLCAiT3RpbGRlIiwgIlNjYXJvbiIsICJVYWN1dGUiLCAiVWNpcmN1bWZsZXgiLAorICAgICJVZGllcmVzaXMiLCAiVWdyYXZlIiwgIllhY3V0ZSIsICJZZGllcmVzaXMiLCAiWmNhcm9uIiwKIAotICAjIDIwMAotICAiYWFjdXRlIiwgImFjaXJjdW1mbGV4IiwgImFkaWVyZXNpcyIsICJhZ3JhdmUiLCAiYXJpbmciLAotICAiYXRpbGRlIiwgImNjZWRpbGxhIiwgImVhY3V0ZSIsICJlY2lyY3VtZmxleCIsICJlZGllcmVzaXMiLAorICAgICMgMjAwCisgICAgImFhY3V0ZSIsICJhY2lyY3VtZmxleCIsICJhZGllcmVzaXMiLCAiYWdyYXZlIiwgImFyaW5nIiwKKyAgICAiYXRpbGRlIiwgImNjZWRpbGxhIiwgImVhY3V0ZSIsICJlY2lyY3VtZmxleCIsICJlZGllcmVzaXMiLAogCi0gICMgMjEwCi0gICJlZ3JhdmUiLCAiaWFjdXRlIiwgImljaXJjdW1mbGV4IiwgImlkaWVyZXNpcyIsICJpZ3JhdmUiLAotICAibnRpbGRlIiwgIm9hY3V0ZSIsICJvY2lyY3VtZmxleCIsICJvZGllcmVzaXMiLCAib2dyYXZlIiwKKyAgICAjIDIxMAorICAgICJlZ3JhdmUiLCAiaWFjdXRlIiwgImljaXJjdW1mbGV4IiwgImlkaWVyZXNpcyIsICJpZ3JhdmUiLAorICAgICJudGlsZGUiLCAib2FjdXRlIiwgIm9jaXJjdW1mbGV4IiwgIm9kaWVyZXNpcyIsICJvZ3JhdmUiLAogCi0gICMgMjIwCi0gICJvdGlsZGUiLCAic2Nhcm9uIiwgInVhY3V0ZSIsICJ1Y2lyY3VtZmxleCIsICJ1ZGllcmVzaXMiLAotICAidWdyYXZlIiwgInlhY3V0ZSIsICJ5ZGllcmVzaXMiLCAiemNhcm9uIiwgImV4Y2xhbXNtYWxsIiwKKyAgICAjIDIyMAorICAgICJvdGlsZGUiLCAic2Nhcm9uIiwgInVhY3V0ZSIsICJ1Y2lyY3VtZmxleCIsICJ1ZGllcmVzaXMiLAorICAgICJ1Z3JhdmUiLCAieWFjdXRlIiwgInlkaWVyZXNpcyIsICJ6Y2Fyb24iLCAiZXhjbGFtc21hbGwiLAogCi0gICMgMjMwCi0gICJIdW5nYXJ1bWxhdXRzbWFsbCIsICJkb2xsYXJvbGRzdHlsZSIsICJkb2xsYXJzdXBlcmlvciIsICJhbXBlcnNhbmRzbWFsbCIsCisgICAgIyAyMzAKKyAgICAiSHVuZ2FydW1sYXV0c21hbGwiLCAiZG9sbGFyb2xkc3R5bGUiLCAiZG9sbGFyc3VwZXJpb3IiLCAiYW1wZXJzYW5kc21hbGwiLAogICAgICJBY3V0ZXNtYWxsIiwKLSAgInBhcmVubGVmdHN1cGVyaW9yIiwgInBhcmVucmlnaHRzdXBlcmlvciIsICJ0d29kb3RlbmxlYWRlciIsCisgICAgInBhcmVubGVmdHN1cGVyaW9yIiwgInBhcmVucmlnaHRzdXBlcmlvciIsICJ0d29kb3RlbmxlYWRlciIsCiAgICAgIm9uZWRvdGVubGVhZGVyIiwgInplcm9vbGRzdHlsZSIsCiAKLSAgIyAyNDAKLSAgIm9uZW9sZHN0eWxlIiwgInR3b29sZHN0eWxlIiwgInRocmVlb2xkc3R5bGUiLCAiZm91cm9sZHN0eWxlIiwKKyAgICAjIDI0MAorICAgICJvbmVvbGRzdHlsZSIsICJ0d29vbGRzdHlsZSIsICJ0aHJlZW9sZHN0eWxlIiwgImZvdXJvbGRzdHlsZSIsCiAgICAgImZpdmVvbGRzdHlsZSIsCi0gICJzaXhvbGRzdHlsZSIsICJzZXZlbm9sZHN0eWxlIiwgImVpZ2h0b2xkc3R5bGUiLCAibmluZW9sZHN0eWxlIiwKKyAgICAic2l4b2xkc3R5bGUiLCAic2V2ZW5vbGRzdHlsZSIsICJlaWdodG9sZHN0eWxlIiwgIm5pbmVvbGRzdHlsZSIsCiAgICAgImNvbW1hc3VwZXJpb3IiLAogCi0gICMgMjUwCi0gICJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwgInBlcmlvZHN1cGVyaW9yIiwgInF1ZXN0aW9uc21hbGwiLCAiYXN1cGVyaW9yIiwKKyAgICAjIDI1MAorICAgICJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwgInBlcmlvZHN1cGVyaW9yIiwgInF1ZXN0aW9uc21hbGwiLCAiYXN1cGVyaW9yIiwKICAgICAiYnN1cGVyaW9yIiwKLSAgImNlbnRzdXBlcmlvciIsICJkc3VwZXJpb3IiLCAiZXN1cGVyaW9yIiwgImlzdXBlcmlvciIsICJsc3VwZXJpb3IiLAorICAgICJjZW50c3VwZXJpb3IiLCAiZHN1cGVyaW9yIiwgImVzdXBlcmlvciIsICJpc3VwZXJpb3IiLCAibHN1cGVyaW9yIiwKIAotICAjIDI2MAotICAibXN1cGVyaW9yIiwgIm5zdXBlcmlvciIsICJvc3VwZXJpb3IiLCAicnN1cGVyaW9yIiwgInNzdXBlcmlvciIsCi0gICJ0c3VwZXJpb3IiLCAiZmYiLCAiZmZpIiwgImZmbCIsICJwYXJlbmxlZnRpbmZlcmlvciIsCisgICAgIyAyNjAKKyAgICAibXN1cGVyaW9yIiwgIm5zdXBlcmlvciIsICJvc3VwZXJpb3IiLCAicnN1cGVyaW9yIiwgInNzdXBlcmlvciIsCisgICAgInRzdXBlcmlvciIsICJmZiIsICJmZmkiLCAiZmZsIiwgInBhcmVubGVmdGluZmVyaW9yIiwKIAotICAjIDI3MAotICAicGFyZW5yaWdodGluZmVyaW9yIiwgIkNpcmN1bWZsZXhzbWFsbCIsICJoeXBoZW5zdXBlcmlvciIsICJHcmF2ZXNtYWxsIiwKKyAgICAjIDI3MAorICAgICJwYXJlbnJpZ2h0aW5mZXJpb3IiLCAiQ2lyY3VtZmxleHNtYWxsIiwgImh5cGhlbnN1cGVyaW9yIiwgIkdyYXZlc21hbGwiLAogICAgICJBc21hbGwiLAotICAiQnNtYWxsIiwgIkNzbWFsbCIsICJEc21hbGwiLCAiRXNtYWxsIiwgIkZzbWFsbCIsCisgICAgIkJzbWFsbCIsICJDc21hbGwiLCAiRHNtYWxsIiwgIkVzbWFsbCIsICJGc21hbGwiLAogCi0gICMgMjgwCi0gICJHc21hbGwiLCAiSHNtYWxsIiwgIklzbWFsbCIsICJKc21hbGwiLCAiS3NtYWxsIiwKLSAgIkxzbWFsbCIsICJNc21hbGwiLCAiTnNtYWxsIiwgIk9zbWFsbCIsICJQc21hbGwiLAorICAgICMgMjgwCisgICAgIkdzbWFsbCIsICJIc21hbGwiLCAiSXNtYWxsIiwgIkpzbWFsbCIsICJLc21hbGwiLAorICAgICJMc21hbGwiLCAiTXNtYWxsIiwgIk5zbWFsbCIsICJPc21hbGwiLCAiUHNtYWxsIiwKIAotICAjIDI5MAotICAiUXNtYWxsIiwgIlJzbWFsbCIsICJTc21hbGwiLCAiVHNtYWxsIiwgIlVzbWFsbCIsCi0gICJWc21hbGwiLCAiV3NtYWxsIiwgIlhzbWFsbCIsICJZc21hbGwiLCAiWnNtYWxsIiwKKyAgICAjIDI5MAorICAgICJRc21hbGwiLCAiUnNtYWxsIiwgIlNzbWFsbCIsICJUc21hbGwiLCAiVXNtYWxsIiwKKyAgICAiVnNtYWxsIiwgIldzbWFsbCIsICJYc21hbGwiLCAiWXNtYWxsIiwgIlpzbWFsbCIsCiAKLSAgIyAzMDAKLSAgImNvbG9ubW9uZXRhcnkiLCAib25lZml0dGVkIiwgInJ1cGlhaCIsICJUaWxkZXNtYWxsIiwgImV4Y2xhbWRvd25zbWFsbCIsCi0gICJjZW50b2xkc3R5bGUiLCAiTHNsYXNoc21hbGwiLCAiU2Nhcm9uc21hbGwiLCAiWmNhcm9uc21hbGwiLAorICAgICMgMzAwCisgICAgImNvbG9ubW9uZXRhcnkiLCAib25lZml0dGVkIiwgInJ1cGlhaCIsICJUaWxkZXNtYWxsIiwgImV4Y2xhbWRvd25zbWFsbCIsCisgICAgImNlbnRvbGRzdHlsZSIsICJMc2xhc2hzbWFsbCIsICJTY2Fyb25zbWFsbCIsICJaY2Fyb25zbWFsbCIsCiAgICAgIkRpZXJlc2lzc21hbGwiLAogCi0gICMgMzEwCi0gICJCcmV2ZXNtYWxsIiwgIkNhcm9uc21hbGwiLCAiRG90YWNjZW50c21hbGwiLCAiTWFjcm9uc21hbGwiLCAiZmlndXJlZGFzaCIsCi0gICJoeXBoZW5pbmZlcmlvciIsICJPZ29uZWtzbWFsbCIsICJSaW5nc21hbGwiLCAiQ2VkaWxsYXNtYWxsIiwKKyAgICAjIDMxMAorICAgICJCcmV2ZXNtYWxsIiwgIkNhcm9uc21hbGwiLCAiRG90YWNjZW50c21hbGwiLCAiTWFjcm9uc21hbGwiLCAiZmlndXJlZGFzaCIsCisgICAgImh5cGhlbmluZmVyaW9yIiwgIk9nb25la3NtYWxsIiwgIlJpbmdzbWFsbCIsICJDZWRpbGxhc21hbGwiLAogICAgICJxdWVzdGlvbmRvd25zbWFsbCIsCiAKLSAgIyAzMjAKLSAgIm9uZWVpZ2h0aCIsICJ0aHJlZWVpZ2h0aHMiLCAiZml2ZWVpZ2h0aHMiLCAic2V2ZW5laWdodGhzIiwgIm9uZXRoaXJkIiwKLSAgInR3b3RoaXJkcyIsICJ6ZXJvc3VwZXJpb3IiLCAiZm91cnN1cGVyaW9yIiwgImZpdmVzdXBlcmlvciIsCisgICAgIyAzMjAKKyAgICAib25lZWlnaHRoIiwgInRocmVlZWlnaHRocyIsICJmaXZlZWlnaHRocyIsICJzZXZlbmVpZ2h0aHMiLCAib25ldGhpcmQiLAorICAgICJ0d290aGlyZHMiLCAiemVyb3N1cGVyaW9yIiwgImZvdXJzdXBlcmlvciIsICJmaXZlc3VwZXJpb3IiLAogICAgICJzaXhzdXBlcmlvciIsCiAKLSAgIyAzMzAKLSAgInNldmVuc3VwZXJpb3IiLCAiZWlnaHRzdXBlcmlvciIsICJuaW5lc3VwZXJpb3IiLCAiemVyb2luZmVyaW9yIiwKKyAgICAjIDMzMAorICAgICJzZXZlbnN1cGVyaW9yIiwgImVpZ2h0c3VwZXJpb3IiLCAibmluZXN1cGVyaW9yIiwgInplcm9pbmZlcmlvciIsCiAgICAgIm9uZWluZmVyaW9yIiwKLSAgInR3b2luZmVyaW9yIiwgInRocmVlaW5mZXJpb3IiLCAiZm91cmluZmVyaW9yIiwgImZpdmVpbmZlcmlvciIsCisgICAgInR3b2luZmVyaW9yIiwgInRocmVlaW5mZXJpb3IiLCAiZm91cmluZmVyaW9yIiwgImZpdmVpbmZlcmlvciIsCiAgICAgInNpeGluZmVyaW9yIiwKIAotICAjIDM0MAotICAic2V2ZW5pbmZlcmlvciIsICJlaWdodGluZmVyaW9yIiwgIm5pbmVpbmZlcmlvciIsICJjZW50aW5mZXJpb3IiLAorICAgICMgMzQwCisgICAgInNldmVuaW5mZXJpb3IiLCAiZWlnaHRpbmZlcmlvciIsICJuaW5laW5mZXJpb3IiLCAiY2VudGluZmVyaW9yIiwKICAgICAiZG9sbGFyaW5mZXJpb3IiLAotICAicGVyaW9kaW5mZXJpb3IiLCAiY29tbWFpbmZlcmlvciIsICJBZ3JhdmVzbWFsbCIsICJBYWN1dGVzbWFsbCIsCisgICAgInBlcmlvZGluZmVyaW9yIiwgImNvbW1haW5mZXJpb3IiLCAiQWdyYXZlc21hbGwiLCAiQWFjdXRlc21hbGwiLAogICAgICJBY2lyY3VtZmxleHNtYWxsIiwKIAotICAjIDM1MAotICAiQXRpbGRlc21hbGwiLCAiQWRpZXJlc2lzc21hbGwiLCAiQXJpbmdzbWFsbCIsICJBRXNtYWxsIiwgIkNjZWRpbGxhc21hbGwiLAotICAiRWdyYXZlc21hbGwiLCAiRWFjdXRlc21hbGwiLCAiRWNpcmN1bWZsZXhzbWFsbCIsICJFZGllcmVzaXNzbWFsbCIsCisgICAgIyAzNTAKKyAgICAiQXRpbGRlc21hbGwiLCAiQWRpZXJlc2lzc21hbGwiLCAiQXJpbmdzbWFsbCIsICJBRXNtYWxsIiwgIkNjZWRpbGxhc21hbGwiLAorICAgICJFZ3JhdmVzbWFsbCIsICJFYWN1dGVzbWFsbCIsICJFY2lyY3VtZmxleHNtYWxsIiwgIkVkaWVyZXNpc3NtYWxsIiwKICAgICAiSWdyYXZlc21hbGwiLAogCi0gICMgMzYwCi0gICJJYWN1dGVzbWFsbCIsICJJY2lyY3VtZmxleHNtYWxsIiwgIklkaWVyZXNpc3NtYWxsIiwgIkV0aHNtYWxsIiwKKyAgICAjIDM2MAorICAgICJJYWN1dGVzbWFsbCIsICJJY2lyY3VtZmxleHNtYWxsIiwgIklkaWVyZXNpc3NtYWxsIiwgIkV0aHNtYWxsIiwKICAgICAiTnRpbGRlc21hbGwiLAotICAiT2dyYXZlc21hbGwiLCAiT2FjdXRlc21hbGwiLCAiT2NpcmN1bWZsZXhzbWFsbCIsICJPdGlsZGVzbWFsbCIsCisgICAgIk9ncmF2ZXNtYWxsIiwgIk9hY3V0ZXNtYWxsIiwgIk9jaXJjdW1mbGV4c21hbGwiLCAiT3RpbGRlc21hbGwiLAogICAgICJPZGllcmVzaXNzbWFsbCIsCiAKLSAgIyAzNzAKLSAgIk9Fc21hbGwiLCAiT3NsYXNoc21hbGwiLCAiVWdyYXZlc21hbGwiLCAiVWFjdXRlc21hbGwiLAorICAgICMgMzcwCisgICAgIk9Fc21hbGwiLCAiT3NsYXNoc21hbGwiLCAiVWdyYXZlc21hbGwiLCAiVWFjdXRlc21hbGwiLAogICAgICJVY2lyY3VtZmxleHNtYWxsIiwKLSAgIlVkaWVyZXNpc3NtYWxsIiwgIllhY3V0ZXNtYWxsIiwgIlRob3Juc21hbGwiLCAiWWRpZXJlc2lzc21hbGwiLAorICAgICJVZGllcmVzaXNzbWFsbCIsICJZYWN1dGVzbWFsbCIsICJUaG9ybnNtYWxsIiwgIllkaWVyZXNpc3NtYWxsIiwKICAgICAiMDAxLjAwMCIsCiAKLSAgIyAzODAKLSAgIjAwMS4wMDEiLCAiMDAxLjAwMiIsICIwMDEuMDAzIiwgIkJsYWNrIiwgIkJvbGQiLAotICAiQm9vayIsICJMaWdodCIsICJNZWRpdW0iLCAiUmVndWxhciIsICJSb21hbiIsCisgICAgIyAzODAKKyAgICAiMDAxLjAwMSIsICIwMDEuMDAyIiwgIjAwMS4wMDMiLCAiQmxhY2siLCAiQm9sZCIsCisgICAgIkJvb2siLCAiTGlnaHQiLCAiTWVkaXVtIiwgIlJlZ3VsYXIiLCAiUm9tYW4iLAogCi0gICMgMzkwCi0gICJTZW1pYm9sZCIKKyAgICAjIDM5MAorICAgICJTZW1pYm9sZCIKIF0KIAotCiAjIFRoaXMgdGFibGUgbWFwcyBjaGFyYWN0ZXIgY29kZXMgb2YgdGhlIEFkb2JlIFN0YW5kYXJkIFR5cGUgMQogIyBlbmNvZGluZyB0byBnbHlwaCBpbmRpY2VzIGluIHRoZSBzaWRfc3RhbmRhcmRfbmFtZXMgdGFibGUuCiAjCi10MV9zdGFuZGFyZF9lbmNvZGluZyA9IFwKLVsKLSAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAotICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCi0gICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwKLSAgICAwLCAgIDAsICAgMSwgICAyLCAgIDMsICAgNCwgICA1LCAgIDYsICAgNywgICA4LAotICAgIDksICAxMCwgIDExLCAgMTIsICAxMywgIDE0LCAgMTUsICAxNiwgIDE3LCAgMTgsCit0MV9zdGFuZGFyZF9lbmNvZGluZyA9IFsKKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwKKyAgICAgIDAsICAgMCwgICAxLCAgIDIsICAgMywgICA0LCAgIDUsICAgNiwgICA3LCAgIDgsCisgICAgICA5LCAgMTAsICAxMSwgIDEyLCAgMTMsICAxNCwgIDE1LCAgMTYsICAxNywgIDE4LAogCi0gICAxOSwgIDIwLCAgMjEsICAyMiwgIDIzLCAgMjQsICAyNSwgIDI2LCAgMjcsICAyOCwKLSAgIDI5LCAgMzAsICAzMSwgIDMyLCAgMzMsICAzNCwgIDM1LCAgMzYsICAzNywgIDM4LAotICAgMzksICA0MCwgIDQxLCAgNDIsICA0MywgIDQ0LCAgNDUsICA0NiwgIDQ3LCAgNDgsCi0gICA0OSwgIDUwLCAgNTEsICA1MiwgIDUzLCAgNTQsICA1NSwgIDU2LCAgNTcsICA1OCwKLSAgIDU5LCAgNjAsICA2MSwgIDYyLCAgNjMsICA2NCwgIDY1LCAgNjYsICA2NywgIDY4LAorICAgICAxOSwgIDIwLCAgMjEsICAyMiwgIDIzLCAgMjQsICAyNSwgIDI2LCAgMjcsICAyOCwKKyAgICAgMjksICAzMCwgIDMxLCAgMzIsICAzMywgIDM0LCAgMzUsICAzNiwgIDM3LCAgMzgsCisgICAgIDM5LCAgNDAsICA0MSwgIDQyLCAgNDMsICA0NCwgIDQ1LCAgNDYsICA0NywgIDQ4LAorICAgICA0OSwgIDUwLCAgNTEsICA1MiwgIDUzLCAgNTQsICA1NSwgIDU2LCAgNTcsICA1OCwKKyAgICAgNTksICA2MCwgIDYxLCAgNjIsICA2MywgIDY0LCAgNjUsICA2NiwgIDY3LCAgNjgsCiAKLSAgIDY5LCAgNzAsICA3MSwgIDcyLCAgNzMsICA3NCwgIDc1LCAgNzYsICA3NywgIDc4LAotICAgNzksICA4MCwgIDgxLCAgODIsICA4MywgIDg0LCAgODUsICA4NiwgIDg3LCAgODgsCi0gICA4OSwgIDkwLCAgOTEsICA5MiwgIDkzLCAgOTQsICA5NSwgICAwLCAgIDAsICAgMCwKLSAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAotICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCisgICAgIDY5LCAgNzAsICA3MSwgIDcyLCAgNzMsICA3NCwgIDc1LCAgNzYsICA3NywgIDc4LAorICAgICA3OSwgIDgwLCAgODEsICA4MiwgIDgzLCAgODQsICA4NSwgIDg2LCAgODcsICA4OCwKKyAgICAgODksICA5MCwgIDkxLCAgOTIsICA5MywgIDk0LCAgOTUsICAgMCwgICAwLCAgIDAsCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwKIAotICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCi0gICAgMCwgIDk2LCAgOTcsICA5OCwgIDk5LCAxMDAsIDEwMSwgMTAyLCAxMDMsIDEwNCwKLSAgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksIDExMCwgICAwLCAxMTEsIDExMiwgMTEzLAotICAxMTQsICAgMCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAxMjIsCi0gICAgMCwgMTIzLCAgIDAsIDEyNCwgMTI1LCAxMjYsIDEyNywgMTI4LCAxMjksIDEzMCwKKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCisgICAgICAwLCAgOTYsICA5NywgIDk4LCAgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LAorICAgIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTA5LCAxMTAsICAgMCwgMTExLCAxMTIsIDExMywKKyAgICAxMTQsICAgMCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAxMjIsCisgICAgICAwLCAxMjMsICAgMCwgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDEyOSwgMTMwLAogCi0gIDEzMSwgICAwLCAxMzIsIDEzMywgICAwLCAxMzQsIDEzNSwgMTM2LCAxMzcsICAgMCwKLSAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAotICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgMTM4LCAgIDAsIDEzOSwgICAwLCAgIDAsCi0gICAgMCwgICAwLCAxNDAsIDE0MSwgMTQyLCAxNDMsICAgMCwgICAwLCAgIDAsICAgMCwKLSAgICAwLCAxNDQsICAgMCwgICAwLCAgIDAsIDE0NSwgICAwLCAgIDAsIDE0NiwgMTQ3LAorICAgIDEzMSwgICAwLCAxMzIsIDEzMywgICAwLCAxMzQsIDEzNSwgMTM2LCAxMzcsICAgMCwKKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIDEzOCwgICAwLCAxMzksICAgMCwgICAwLAorICAgICAgMCwgICAwLCAxNDAsIDE0MSwgMTQyLCAxNDMsICAgMCwgICAwLCAgIDAsICAgMCwKKyAgICAgIDAsIDE0NCwgICAwLCAgIDAsICAgMCwgMTQ1LCAgIDAsICAgMCwgMTQ2LCAxNDcsCiAKLSAgMTQ4LCAxNDksICAgMCwgICAwLCAgIDAsICAgMAorICAgIDE0OCwgMTQ5LCAgIDAsICAgMCwgICAwLCAwCiBdCiAKLQogIyBUaGlzIHRhYmxlIG1hcHMgY2hhcmFjdGVyIGNvZGVzIG9mIHRoZSBBZG9iZSBFeHBlcnQgVHlwZSAxCiAjIGVuY29kaW5nIHRvIGdseXBoIGluZGljZXMgaW4gdGhlIHNpZF9zdGFuZGFyZF9uYW1lcyB0YWJsZS4KICMKLXQxX2V4cGVydF9lbmNvZGluZyA9IFwKLVsKLSAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAotICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCi0gICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwKLSAgICAwLCAgIDAsICAgMSwgMjI5LCAyMzAsICAgMCwgMjMxLCAyMzIsIDIzMywgMjM0LAotICAyMzUsIDIzNiwgMjM3LCAyMzgsICAxMywgIDE0LCAgMTUsICA5OSwgMjM5LCAyNDAsCit0MV9leHBlcnRfZW5jb2RpbmcgPSBbCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwKKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCisgICAgICAwLCAgIDAsICAgMSwgMjI5LCAyMzAsICAgMCwgMjMxLCAyMzIsIDIzMywgMjM0LAorICAgIDIzNSwgMjM2LCAyMzcsIDIzOCwgIDEzLCAgMTQsICAxNSwgIDk5LCAyMzksIDI0MCwKIAotICAyNDEsIDI0MiwgMjQzLCAyNDQsIDI0NSwgMjQ2LCAyNDcsIDI0OCwgIDI3LCAgMjgsCi0gIDI0OSwgMjUwLCAyNTEsIDI1MiwgICAwLCAyNTMsIDI1NCwgMjU1LCAyNTYsIDI1NywKLSAgICAwLCAgIDAsICAgMCwgMjU4LCAgIDAsICAgMCwgMjU5LCAyNjAsIDI2MSwgMjYyLAotICAgIDAsICAgMCwgMjYzLCAyNjQsIDI2NSwgICAwLCAyNjYsIDEwOSwgMTEwLCAyNjcsCi0gIDI2OCwgMjY5LCAgIDAsIDI3MCwgMjcxLCAyNzIsIDI3MywgMjc0LCAyNzUsIDI3NiwKKyAgICAyNDEsIDI0MiwgMjQzLCAyNDQsIDI0NSwgMjQ2LCAyNDcsIDI0OCwgIDI3LCAgMjgsCisgICAgMjQ5LCAyNTAsIDI1MSwgMjUyLCAgIDAsIDI1MywgMjU0LCAyNTUsIDI1NiwgMjU3LAorICAgICAgMCwgICAwLCAgIDAsIDI1OCwgICAwLCAgIDAsIDI1OSwgMjYwLCAyNjEsIDI2MiwKKyAgICAgIDAsICAgMCwgMjYzLCAyNjQsIDI2NSwgICAwLCAyNjYsIDEwOSwgMTEwLCAyNjcsCisgICAgMjY4LCAyNjksICAgMCwgMjcwLCAyNzEsIDI3MiwgMjczLCAyNzQsIDI3NSwgMjc2LAogCi0gIDI3NywgMjc4LCAyNzksIDI4MCwgMjgxLCAyODIsIDI4MywgMjg0LCAyODUsIDI4NiwKLSAgMjg3LCAyODgsIDI4OSwgMjkwLCAyOTEsIDI5MiwgMjkzLCAyOTQsIDI5NSwgMjk2LAotICAyOTcsIDI5OCwgMjk5LCAzMDAsIDMwMSwgMzAyLCAzMDMsICAgMCwgICAwLCAgIDAsCi0gICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwKLSAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgIDI3NywgMjc4LCAyNzksIDI4MCwgMjgxLCAyODIsIDI4MywgMjg0LCAyODUsIDI4NiwKKyAgICAyODcsIDI4OCwgMjg5LCAyOTAsIDI5MSwgMjkyLCAyOTMsIDI5NCwgMjk1LCAyOTYsCisgICAgMjk3LCAyOTgsIDI5OSwgMzAwLCAzMDEsIDMwMiwgMzAzLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwKKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCiAKLSAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAotICAgIDAsIDMwNCwgMzA1LCAzMDYsICAgMCwgICAwLCAzMDcsIDMwOCwgMzA5LCAzMTAsCi0gIDMxMSwgICAwLCAzMTIsICAgMCwgICAwLCAzMTMsICAgMCwgICAwLCAzMTQsIDMxNSwKLSAgICAwLCAgIDAsIDMxNiwgMzE3LCAzMTgsICAgMCwgICAwLCAgIDAsIDE1OCwgMTU1LAotICAxNjMsIDMxOSwgMzIwLCAzMjEsIDMyMiwgMzIzLCAzMjQsIDMyNSwgICAwLCAgIDAsCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgMzA0LCAzMDUsIDMwNiwgICAwLCAgIDAsIDMwNywgMzA4LCAzMDksIDMxMCwKKyAgICAzMTEsICAgMCwgMzEyLCAgIDAsICAgMCwgMzEzLCAgIDAsICAgMCwgMzE0LCAzMTUsCisgICAgICAwLCAgIDAsIDMxNiwgMzE3LCAzMTgsICAgMCwgICAwLCAgIDAsIDE1OCwgMTU1LAorICAgIDE2MywgMzE5LCAzMjAsIDMyMSwgMzIyLCAzMjMsIDMyNCwgMzI1LCAgIDAsICAgMCwKIAotICAzMjYsIDE1MCwgMTY0LCAxNjksIDMyNywgMzI4LCAzMjksIDMzMCwgMzMxLCAzMzIsCi0gIDMzMywgMzM0LCAzMzUsIDMzNiwgMzM3LCAzMzgsIDMzOSwgMzQwLCAzNDEsIDM0MiwKLSAgMzQzLCAzNDQsIDM0NSwgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMzUyLAotICAzNTMsIDM1NCwgMzU1LCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAzNjIsCi0gIDM2MywgMzY0LCAzNjUsIDM2NiwgMzY3LCAzNjgsIDM2OSwgMzcwLCAzNzEsIDM3MiwKKyAgICAzMjYsIDE1MCwgMTY0LCAxNjksIDMyNywgMzI4LCAzMjksIDMzMCwgMzMxLCAzMzIsCisgICAgMzMzLCAzMzQsIDMzNSwgMzM2LCAzMzcsIDMzOCwgMzM5LCAzNDAsIDM0MSwgMzQyLAorICAgIDM0MywgMzQ0LCAzNDUsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDM1MiwKKyAgICAzNTMsIDM1NCwgMzU1LCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAzNjIsCisgICAgMzYzLCAzNjQsIDM2NSwgMzY2LCAzNjcsIDM2OCwgMzY5LCAzNzAsIDM3MSwgMzcyLAogCi0gIDM3MywgMzc0LCAzNzUsIDM3NiwgMzc3LCAzNzgKKyAgICAzNzMsIDM3NCwgMzc1LCAzNzYsIDM3NywgMzc4CiBdCiAKLQogIyBUaGlzIGRhdGEgaGFzIGJlZW4gdGFrZW4gbGl0ZXJhbGx5IGZyb20gdGhlIGZpbGVzIGBnbHlwaGxpc3QudHh0JwogIyBhbmQgYHphcGZkaW5nYmF0cy50eHQnIHZlcnNpb24gMi4wLCBTZXB0IDIwMDIuICBJdCBpcyBhdmFpbGFibGUgZnJvbQogIwpAQCAtNDkwNiw4MSArNDg5NCw4MSBAQAogIyBzdHJpbmcgdGFibGUgbWFuYWdlbWVudAogIwogY2xhc3MgU3RyaW5nVGFibGU6Ci0gIGRlZiBfX2luaXRfXyggc2VsZiwgbmFtZV9saXN0LCBtYXN0ZXJfdGFibGVfbmFtZSApOgotICAgIHNlbGYubmFtZXMgICAgICAgID0gbmFtZV9saXN0Ci0gICAgc2VsZi5tYXN0ZXJfdGFibGUgPSBtYXN0ZXJfdGFibGVfbmFtZQotICAgIHNlbGYuaW5kaWNlcyAgICAgID0ge30KLSAgICBpbmRleCAgICAgICAgICAgICA9IDAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZV9saXN0LCBtYXN0ZXJfdGFibGVfbmFtZSk6CisgICAgICAgIHNlbGYubmFtZXMgPSBuYW1lX2xpc3QKKyAgICAgICAgc2VsZi5tYXN0ZXJfdGFibGUgPSBtYXN0ZXJfdGFibGVfbmFtZQorICAgICAgICBzZWxmLmluZGljZXMgPSB7fQorICAgICAgICBpbmRleCA9IDAKIAotICAgIGZvciBuYW1lIGluIG5hbWVfbGlzdDoKLSAgICAgIHNlbGYuaW5kaWNlc1tuYW1lXSA9IGluZGV4Ci0gICAgICBpbmRleCArPSBsZW4oIG5hbWUgKSArIDEKKyAgICAgICAgZm9yIG5hbWUgaW4gbmFtZV9saXN0OgorICAgICAgICAgICAgc2VsZi5pbmRpY2VzW25hbWVdID0gaW5kZXgKKyAgICAgICAgICAgIGluZGV4ICs9IGxlbihuYW1lKSArIDEKIAotICAgIHNlbGYudG90YWwgPSBpbmRleAorICAgICAgICBzZWxmLnRvdGFsID0gaW5kZXgKIAotICBkZWYgZHVtcCggc2VsZiwgZmlsZSApOgotICAgIHdyaXRlID0gZmlsZS53cml0ZQotICAgIHdyaXRlKCAiI2lmbmRlZiAgREVGSU5FX1BTX1RBQkxFU19EQVRBXG4iICkKLSAgICB3cml0ZSggIiNpZmRlZiAgX19jcGx1c3BsdXNcbiIgKQotICAgIHdyaXRlKCAnICBleHRlcm4gIkMiXG4nICkKLSAgICB3cml0ZSggIiNlbHNlXG4iICkKLSAgICB3cml0ZSggIiAgZXh0ZXJuXG4iICkKLSAgICB3cml0ZSggIiNlbmRpZlxuIiApCi0gICAgd3JpdGUoICIjZW5kaWZcbiIgKQotICAgIHdyaXRlKCAiICBjb25zdCBjaGFyICAiICsgc2VsZi5tYXN0ZXJfdGFibGUgKwotICAgICAgICAgICAiWyIgKyByZXByKCBzZWxmLnRvdGFsICkgKyAiXVxuIiApCi0gICAgd3JpdGUoICIjaWZkZWYgIERFRklORV9QU19UQUJMRVNfREFUQVxuIiApCi0gICAgd3JpdGUoICIgID1cbiIgKQotICAgIHdyaXRlKCAiICB7XG4iICkKKyAgICBkZWYgZHVtcChzZWxmLCBmaWxlKToKKyAgICAgICAgd3JpdGUgPSBmaWxlLndyaXRlCisgICAgICAgIHdyaXRlKCIjaWZuZGVmICBERUZJTkVfUFNfVEFCTEVTX0RBVEFcbiIpCisgICAgICAgIHdyaXRlKCIjaWZkZWYgIF9fY3BsdXNwbHVzXG4iKQorICAgICAgICB3cml0ZSgnICBleHRlcm4gIkMiXG4nKQorICAgICAgICB3cml0ZSgiI2Vsc2VcbiIpCisgICAgICAgIHdyaXRlKCIgIGV4dGVyblxuIikKKyAgICAgICAgd3JpdGUoIiNlbmRpZlxuIikKKyAgICAgICAgd3JpdGUoIiNlbmRpZlxuIikKKyAgICAgICAgd3JpdGUoIiAgY29uc3QgY2hhciAgIiArIHNlbGYubWFzdGVyX3RhYmxlICsKKyAgICAgICAgICAgICAgIlsiICsgcmVwcihzZWxmLnRvdGFsKSArICJdXG4iKQorICAgICAgICB3cml0ZSgiI2lmZGVmICBERUZJTkVfUFNfVEFCTEVTX0RBVEFcbiIpCisgICAgICAgIHdyaXRlKCIgID1cbiIpCisgICAgICAgIHdyaXRlKCIgIHtcbiIpCiAKLSAgICBsaW5lID0gIiIKLSAgICBmb3IgbmFtZSBpbiBzZWxmLm5hbWVzOgotICAgICAgbGluZSArPSAiICAgICciCi0gICAgICBsaW5lICs9IHN0cmluZy5qb2luKCAoIHJlLmZpbmRhbGwoICIuIiwgbmFtZSApICksICInLCciICkKLSAgICAgIGxpbmUgKz0gIicsIDAsXG4iCisgICAgICAgIGxpbmUgPSAiIgorICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLm5hbWVzOgorICAgICAgICAgICAgbGluZSArPSAiICAgICciCisgICAgICAgICAgICBsaW5lICs9ICInLCciLmpvaW4obGlzdChuYW1lKSkKKyAgICAgICAgICAgIGxpbmUgKz0gIicsIDAsXG4iCiAKLSAgICB3cml0ZSggbGluZSApCi0gICAgd3JpdGUoICIgIH1cbiIgKQotICAgIHdyaXRlKCAiI2VuZGlmIC8qIERFRklORV9QU19UQUJMRVNfREFUQSAqL1xuIiApCi0gICAgd3JpdGUoICIgIDtcblxuXG4iICkKKyAgICAgICAgd3JpdGUobGluZSkKKyAgICAgICAgd3JpdGUoIiAgfVxuIikKKyAgICAgICAgd3JpdGUoIiNlbmRpZiAvKiBERUZJTkVfUFNfVEFCTEVTX0RBVEEgKi9cbiIpCisgICAgICAgIHdyaXRlKCIgIDtcblxuXG4iKQogCi0gIGRlZiBkdW1wX3N1Ymxpc3QoIHNlbGYsIGZpbGUsIHRhYmxlX25hbWUsIG1hY3JvX25hbWUsIHN1Ymxpc3QgKToKLSAgICB3cml0ZSA9IGZpbGUud3JpdGUKLSAgICB3cml0ZSggIiNkZWZpbmUgIiArIG1hY3JvX25hbWUgKyAiICAiICsgcmVwciggbGVuKCBzdWJsaXN0ICkgKSArICJcblxuIiApCisgICAgZGVmIGR1bXBfc3VibGlzdChzZWxmLCBmaWxlLCB0YWJsZV9uYW1lLCBtYWNyb19uYW1lLCBzdWJsaXN0KToKKyAgICAgICAgd3JpdGUgPSBmaWxlLndyaXRlCisgICAgICAgIHdyaXRlKCIjZGVmaW5lICIgKyBtYWNyb19uYW1lICsgIiAgIiArIHJlcHIobGVuKHN1Ymxpc3QpKSArICJcblxuIikKIAotICAgIHdyaXRlKCAiICAvKiBWYWx1ZXMgYXJlIG9mZnNldHMgaW50byB0aGUgYCIgKwotICAgICAgICAgICBzZWxmLm1hc3Rlcl90YWJsZSArICInIHRhYmxlICovXG5cbiIgKQotICAgIHdyaXRlKCAiI2lmbmRlZiAgREVGSU5FX1BTX1RBQkxFU19EQVRBXG4iICkKLSAgICB3cml0ZSggIiNpZmRlZiAgX19jcGx1c3BsdXNcbiIgKQotICAgIHdyaXRlKCAnICBleHRlcm4gIkMiXG4nICkKLSAgICB3cml0ZSggIiNlbHNlXG4iICkKLSAgICB3cml0ZSggIiAgZXh0ZXJuXG4iICkKLSAgICB3cml0ZSggIiNlbmRpZlxuIiApCi0gICAgd3JpdGUoICIjZW5kaWZcbiIgKQotICAgIHdyaXRlKCAiICBjb25zdCBzaG9ydCAgIiArIHRhYmxlX25hbWUgKwotICAgICAgICAgICAiWyIgKyBtYWNyb19uYW1lICsgIl1cbiIgKQotICAgIHdyaXRlKCAiI2lmZGVmICBERUZJTkVfUFNfVEFCTEVTX0RBVEFcbiIgKQotICAgIHdyaXRlKCAiICA9XG4iICkKLSAgICB3cml0ZSggIiAge1xuIiApCisgICAgICAgIHdyaXRlKCIgIC8qIFZhbHVlcyBhcmUgb2Zmc2V0cyBpbnRvIHRoZSBgIiArCisgICAgICAgICAgICAgIHNlbGYubWFzdGVyX3RhYmxlICsgIicgdGFibGUgKi9cblxuIikKKyAgICAgICAgd3JpdGUoIiNpZm5kZWYgIERFRklORV9QU19UQUJMRVNfREFUQVxuIikKKyAgICAgICAgd3JpdGUoIiNpZmRlZiAgX19jcGx1c3BsdXNcbiIpCisgICAgICAgIHdyaXRlKCcgIGV4dGVybiAiQyJcbicpCisgICAgICAgIHdyaXRlKCIjZWxzZVxuIikKKyAgICAgICAgd3JpdGUoIiAgZXh0ZXJuXG4iKQorICAgICAgICB3cml0ZSgiI2VuZGlmXG4iKQorICAgICAgICB3cml0ZSgiI2VuZGlmXG4iKQorICAgICAgICB3cml0ZSgiICBjb25zdCBzaG9ydCAgIiArIHRhYmxlX25hbWUgKworICAgICAgICAgICAgICAiWyIgKyBtYWNyb19uYW1lICsgIl1cbiIpCisgICAgICAgIHdyaXRlKCIjaWZkZWYgIERFRklORV9QU19UQUJMRVNfREFUQVxuIikKKyAgICAgICAgd3JpdGUoIiAgPVxuIikKKyAgICAgICAgd3JpdGUoIiAge1xuIikKIAotICAgIGxpbmUgID0gIiAgICAiCi0gICAgY29tbWEgPSAiIgotICAgIGNvbCAgID0gMAorICAgICAgICBsaW5lID0gIiAgICAiCisgICAgICAgIGNvbW1hID0gIiIKKyAgICAgICAgY29sID0gMAogCi0gICAgZm9yIG5hbWUgaW4gc3VibGlzdDoKLSAgICAgIGxpbmUgKz0gY29tbWEKLSAgICAgIGxpbmUgKz0gIiU0ZCIgJSBzZWxmLmluZGljZXNbbmFtZV0KLSAgICAgIGNvbCAgKz0gMQotICAgICAgY29tbWEgPSAiLCIKLSAgICAgIGlmIGNvbCA9PSAxNDoKLSAgICAgICAgY29sICAgPSAwCi0gICAgICAgIGNvbW1hID0gIixcbiAgICAiCisgICAgICAgIGZvciBuYW1lIGluIHN1Ymxpc3Q6CisgICAgICAgICAgICBsaW5lICs9IGNvbW1hCisgICAgICAgICAgICBsaW5lICs9ICIlNGQiICUgc2VsZi5pbmRpY2VzW25hbWVdCisgICAgICAgICAgICBjb2wgKz0gMQorICAgICAgICAgICAgY29tbWEgPSAiLCIKKyAgICAgICAgICAgIGlmIGNvbCA9PSAxNDoKKyAgICAgICAgICAgICAgICBjb2wgPSAwCisgICAgICAgICAgICAgICAgY29tbWEgPSAiLFxuICAgICIKIAotICAgIHdyaXRlKCBsaW5lICkKLSAgICB3cml0ZSggIlxuIiApCi0gICAgd3JpdGUoICIgIH1cbiIgKQotICAgIHdyaXRlKCAiI2VuZGlmIC8qIERFRklORV9QU19UQUJMRVNfREFUQSAqL1xuIiApCi0gICAgd3JpdGUoICIgIDtcblxuXG4iICkKKyAgICAgICAgd3JpdGUobGluZSkKKyAgICAgICAgd3JpdGUoIlxuIikKKyAgICAgICAgd3JpdGUoIiAgfVxuIikKKyAgICAgICAgd3JpdGUoIiNlbmRpZiAvKiBERUZJTkVfUFNfVEFCTEVTX0RBVEEgKi9cbiIpCisgICAgICAgIHdyaXRlKCIgIDtcblxuXG4iKQogCiAKICMgV2Ugbm93IHN0b3JlIHRoZSBBZG9iZSBHbHlwaCBMaXN0IGluIGNvbXByZXNzZWQgZm9ybS4gIFRoZSBsaXN0IGlzIHB1dApAQCAtNTA1OSwzMDcgKzUwNDcsMzEyIEBACiAjIFRoZSByb290IG5vZGUgaGFzIGZpcnN0IGxldHRlciA9IDAsIGFuZCBubyB2YWx1ZS4KICMKIGNsYXNzIFN0cmluZ05vZGU6Ci0gIGRlZiBfX2luaXRfXyggc2VsZiwgbGV0dGVyLCB2YWx1ZSApOgotICAgIHNlbGYubGV0dGVyICAgPSBsZXR0ZXIKLSAgICBzZWxmLnZhbHVlICAgID0gdmFsdWUKLSAgICBzZWxmLmNoaWxkcmVuID0ge30KKyAgICBkZWYgX19pbml0X18oc2VsZiwgbGV0dGVyLCB2YWx1ZSk6CisgICAgICAgIHNlbGYubGV0dGVyID0gbGV0dGVyCisgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQorICAgICAgICBzZWxmLmNoaWxkcmVuID0ge30KIAotICBkZWYgX19jbXBfXyggc2VsZiwgb3RoZXIgKToKLSAgICByZXR1cm4gb3JkKCBzZWxmLmxldHRlclswXSApIC0gb3JkKCBvdGhlci5sZXR0ZXJbMF0gKQorICAgIGRlZiBfX2NtcF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIG9yZChzZWxmLmxldHRlclswXSkgLSBvcmQob3RoZXIubGV0dGVyWzBdKQogCi0gIGRlZiBhZGQoIHNlbGYsIHdvcmQsIHZhbHVlICk6Ci0gICAgaWYgbGVuKCB3b3JkICkgPT0gMDoKLSAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQotICAgICAgcmV0dXJuCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLmxldHRlclswXSA8IG90aGVyLmxldHRlclswXQogCi0gICAgbGV0dGVyID0gd29yZFswXQotICAgIHdvcmQgICA9IHdvcmRbMTpdCisgICAgZGVmIGFkZChzZWxmLCB3b3JkLCB2YWx1ZSk6CisgICAgICAgIGlmIGxlbih3b3JkKSA9PSAwOgorICAgICAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCisgICAgICAgICAgICByZXR1cm4KIAotICAgIGlmIHNlbGYuY2hpbGRyZW4uaGFzX2tleSggbGV0dGVyICk6Ci0gICAgICBjaGlsZCA9IHNlbGYuY2hpbGRyZW5bbGV0dGVyXQotICAgIGVsc2U6Ci0gICAgICBjaGlsZCA9IFN0cmluZ05vZGUoIGxldHRlciwgMCApCi0gICAgICBzZWxmLmNoaWxkcmVuW2xldHRlcl0gPSBjaGlsZAorICAgICAgICBsZXR0ZXIgPSB3b3JkWzBdCisgICAgICAgIHdvcmQgPSB3b3JkWzE6XQogCi0gICAgY2hpbGQuYWRkKCB3b3JkLCB2YWx1ZSApCisgICAgICAgIGlmIGxldHRlciBpbiBzZWxmLmNoaWxkcmVuOgorICAgICAgICAgICAgY2hpbGQgPSBzZWxmLmNoaWxkcmVuW2xldHRlcl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNoaWxkID0gU3RyaW5nTm9kZShsZXR0ZXIsIDApCisgICAgICAgICAgICBzZWxmLmNoaWxkcmVuW2xldHRlcl0gPSBjaGlsZAogCi0gIGRlZiBvcHRpbWl6ZSggc2VsZiApOgotICAgICMgb3B0aW1pemUgYWxsIGNoaWxkcmVuIGZpcnN0Ci0gICAgY2hpbGRyZW4gICAgICA9IHNlbGYuY2hpbGRyZW4udmFsdWVzKCkKLSAgICBzZWxmLmNoaWxkcmVuID0ge30KKyAgICAgICAgY2hpbGQuYWRkKHdvcmQsIHZhbHVlKQogCi0gICAgZm9yIGNoaWxkIGluIGNoaWxkcmVuOgotICAgICAgc2VsZi5jaGlsZHJlbltjaGlsZC5sZXR0ZXJbMF1dID0gY2hpbGQub3B0aW1pemUoKQorICAgIGRlZiBvcHRpbWl6ZShzZWxmKToKKyAgICAgICAgIyBvcHRpbWl6ZSBhbGwgY2hpbGRyZW4gZmlyc3QKKyAgICAgICAgY2hpbGRyZW4gPSBsaXN0KHNlbGYuY2hpbGRyZW4udmFsdWVzKCkpCisgICAgICAgIHNlbGYuY2hpbGRyZW4gPSB7fQogCi0gICAgIyBkb24ndCBvcHRpbWl6ZSBpZiB0aGVyZSdzIGEgdmFsdWUsCi0gICAgIyBpZiB3ZSBkb24ndCBoYXZlIGFueSBjaGlsZCBvciBpZiB3ZQotICAgICMgaGF2ZSBtb3JlIHRoYW4gb25lIGNoaWxkCi0gICAgaWYgKCBzZWxmLnZhbHVlICE9IDAgKSBvciAoIG5vdCBjaGlsZHJlbiApIG9yIGxlbiggY2hpbGRyZW4gKSA+IDE6Ci0gICAgICByZXR1cm4gc2VsZgorICAgICAgICBmb3IgY2hpbGQgaW4gY2hpbGRyZW46CisgICAgICAgICAgICBzZWxmLmNoaWxkcmVuW2NoaWxkLmxldHRlclswXV0gPSBjaGlsZC5vcHRpbWl6ZSgpCiAKLSAgICBjaGlsZCA9IGNoaWxkcmVuWzBdCisgICAgICAgICMgZG9uJ3Qgb3B0aW1pemUgaWYgdGhlcmUncyBhIHZhbHVlLAorICAgICAgICAjIGlmIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkIG9yIGlmIHdlCisgICAgICAgICMgaGF2ZSBtb3JlIHRoYW4gb25lIGNoaWxkCisgICAgICAgIGlmIChzZWxmLnZhbHVlICE9IDApIG9yIChub3QgY2hpbGRyZW4pIG9yIGxlbihjaGlsZHJlbikgPiAxOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYKIAotICAgIHNlbGYubGV0dGVyICArPSBjaGlsZC5sZXR0ZXIKLSAgICBzZWxmLnZhbHVlICAgID0gY2hpbGQudmFsdWUKLSAgICBzZWxmLmNoaWxkcmVuID0gY2hpbGQuY2hpbGRyZW4KKyAgICAgICAgY2hpbGQgPSBjaGlsZHJlblswXQogCi0gICAgcmV0dXJuIHNlbGYKKyAgICAgICAgc2VsZi5sZXR0ZXIgKz0gY2hpbGQubGV0dGVyCisgICAgICAgIHNlbGYudmFsdWUgPSBjaGlsZC52YWx1ZQorICAgICAgICBzZWxmLmNoaWxkcmVuID0gY2hpbGQuY2hpbGRyZW4KIAotICBkZWYgZHVtcF9kZWJ1Zyggc2VsZiwgd3JpdGUsIG1hcmdpbiApOgotICAgICMgdGhpcyBpcyB1c2VkIGR1cmluZyBkZWJ1Z2dpbmcKLSAgICBsaW5lID0gbWFyZ2luICsgIistIgotICAgIGlmIGxlbiggc2VsZi5sZXR0ZXIgKSA9PSAwOgotICAgICAgbGluZSArPSAiPE5PTEVUVEVSPiIKLSAgICBlbHNlOgotICAgICAgbGluZSArPSBzZWxmLmxldHRlcgorICAgICAgICByZXR1cm4gc2VsZgogCi0gICAgaWYgc2VsZi52YWx1ZToKLSAgICAgIGxpbmUgKz0gIiA9PiAiICsgcmVwciggc2VsZi52YWx1ZSApCisgICAgZGVmIGR1bXBfZGVidWcoc2VsZiwgd3JpdGUsIG1hcmdpbik6CisgICAgICAgICMgdGhpcyBpcyB1c2VkIGR1cmluZyBkZWJ1Z2dpbmcKKyAgICAgICAgbGluZSA9IG1hcmdpbiArICIrLSIKKyAgICAgICAgaWYgbGVuKHNlbGYubGV0dGVyKSA9PSAwOgorICAgICAgICAgICAgbGluZSArPSAiPE5PTEVUVEVSPiIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxpbmUgKz0gc2VsZi5sZXR0ZXIKIAotICAgIHdyaXRlKCBsaW5lICsgIlxuIiApCisgICAgICAgIGlmIHNlbGYudmFsdWU6CisgICAgICAgICAgICBsaW5lICs9ICIgPT4gIiArIHJlcHIoc2VsZi52YWx1ZSkKIAotICAgIGlmIHNlbGYuY2hpbGRyZW46Ci0gICAgICBtYXJnaW4gKz0gInwgIgotICAgICAgZm9yIGNoaWxkIGluIHNlbGYuY2hpbGRyZW4udmFsdWVzKCk6Ci0gICAgICAgIGNoaWxkLmR1bXBfZGVidWcoIHdyaXRlLCBtYXJnaW4gKQorICAgICAgICB3cml0ZShsaW5lICsgIlxuIikKIAotICBkZWYgbG9jYXRlKCBzZWxmLCBpbmRleCApOgotICAgIHNlbGYuaW5kZXggPSBpbmRleAotICAgIGlmIGxlbiggc2VsZi5sZXR0ZXIgKSA+IDA6Ci0gICAgICBpbmRleCArPSBsZW4oIHNlbGYubGV0dGVyICkgKyAxCi0gICAgZWxzZToKLSAgICAgIGluZGV4ICs9IDIKKyAgICAgICAgaWYgc2VsZi5jaGlsZHJlbjoKKyAgICAgICAgICAgIG1hcmdpbiArPSAifCAiCisgICAgICAgICAgICBmb3IgY2hpbGQgaW4gc2VsZi5jaGlsZHJlbi52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBjaGlsZC5kdW1wX2RlYnVnKHdyaXRlLCBtYXJnaW4pCiAKLSAgICBpZiBzZWxmLnZhbHVlICE9IDA6Ci0gICAgICBpbmRleCArPSAyCisgICAgZGVmIGxvY2F0ZShzZWxmLCBpbmRleCk6CisgICAgICAgIHNlbGYuaW5kZXggPSBpbmRleAorICAgICAgICBpZiBsZW4oc2VsZi5sZXR0ZXIpID4gMDoKKyAgICAgICAgICAgIGluZGV4ICs9IGxlbihzZWxmLmxldHRlcikgKyAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpbmRleCArPSAyCiAKLSAgICBjaGlsZHJlbiA9IHNlbGYuY2hpbGRyZW4udmFsdWVzKCkKLSAgICBjaGlsZHJlbi5zb3J0KCkKKyAgICAgICAgaWYgc2VsZi52YWx1ZSAhPSAwOgorICAgICAgICAgICAgaW5kZXggKz0gMgogCi0gICAgaW5kZXggKz0gMiAqIGxlbiggY2hpbGRyZW4gKQotICAgIGZvciBjaGlsZCBpbiBjaGlsZHJlbjoKLSAgICAgIGluZGV4ID0gY2hpbGQubG9jYXRlKCBpbmRleCApCisgICAgICAgIGNoaWxkcmVuID0gbGlzdChzZWxmLmNoaWxkcmVuLnZhbHVlcygpKQorICAgICAgICBjaGlsZHJlbi5zb3J0KCkKIAotICAgIHJldHVybiBpbmRleAorICAgICAgICBpbmRleCArPSAyICogbGVuKGNoaWxkcmVuKQorICAgICAgICBmb3IgY2hpbGQgaW4gY2hpbGRyZW46CisgICAgICAgICAgICBpbmRleCA9IGNoaWxkLmxvY2F0ZShpbmRleCkKIAotICBkZWYgc3RvcmUoIHNlbGYsIHN0b3JhZ2UgKToKLSAgICAjIHdyaXRlIHRoZSBsZXR0ZXJzCi0gICAgbCA9IGxlbiggc2VsZi5sZXR0ZXIgKQotICAgIGlmIGwgPT0gMDoKLSAgICAgIHN0b3JhZ2UgKz0gc3RydWN0LnBhY2soICJCIiwgMCApCi0gICAgZWxzZToKLSAgICAgIGZvciBuIGluIHJhbmdlKCBsICk6Ci0gICAgICAgIHZhbCA9IG9yZCggc2VsZi5sZXR0ZXJbbl0gKQotICAgICAgICBpZiBuIDwgbCAtIDE6Ci0gICAgICAgICAgdmFsICs9IDEyOAotICAgICAgICBzdG9yYWdlICs9IHN0cnVjdC5wYWNrKCAiQiIsIHZhbCApCisgICAgICAgIHJldHVybiBpbmRleAogCi0gICAgIyB3cml0ZSB0aGUgY291bnQKLSAgICBjaGlsZHJlbiA9IHNlbGYuY2hpbGRyZW4udmFsdWVzKCkKLSAgICBjaGlsZHJlbi5zb3J0KCkKKyAgICBkZWYgc3RvcmUoc2VsZiwgc3RvcmFnZSk6CisgICAgICAgICMgd3JpdGUgdGhlIGxldHRlcnMKKyAgICAgICAgbGVuZ3RoID0gbGVuKHNlbGYubGV0dGVyKQorICAgICAgICBpZiBsZW5ndGggPT0gMDoKKyAgICAgICAgICAgIHN0b3JhZ2UgKz0gc3RydWN0LnBhY2soIkIiLCAwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm9yIG4gaW4gcmFuZ2UobGVuZ3RoKToKKyAgICAgICAgICAgICAgICB2YWwgPSBvcmQoc2VsZi5sZXR0ZXJbbl0pCisgICAgICAgICAgICAgICAgaWYgbiA8IGxlbmd0aCAtIDE6CisgICAgICAgICAgICAgICAgICAgIHZhbCArPSAxMjgKKyAgICAgICAgICAgICAgICBzdG9yYWdlICs9IHN0cnVjdC5wYWNrKCJCIiwgdmFsKQogCi0gICAgY291bnQgPSBsZW4oIGNoaWxkcmVuICkKKyAgICAgICAgIyB3cml0ZSB0aGUgY291bnQKKyAgICAgICAgY2hpbGRyZW4gPSBsaXN0KHNlbGYuY2hpbGRyZW4udmFsdWVzKCkpCisgICAgICAgIGNoaWxkcmVuLnNvcnQoKQogCi0gICAgaWYgc2VsZi52YWx1ZSAhPSAwOgotICAgICAgc3RvcmFnZSArPSBzdHJ1Y3QucGFjayggIiFCSCIsIGNvdW50ICsgMTI4LCBzZWxmLnZhbHVlICkKLSAgICBlbHNlOgotICAgICAgc3RvcmFnZSArPSBzdHJ1Y3QucGFjayggIkIiLCBjb3VudCApCisgICAgICAgIGNvdW50ID0gbGVuKGNoaWxkcmVuKQogCi0gICAgZm9yIGNoaWxkIGluIGNoaWxkcmVuOgotICAgICAgc3RvcmFnZSArPSBzdHJ1Y3QucGFjayggIiFIIiwgY2hpbGQuaW5kZXggKQorICAgICAgICBpZiBzZWxmLnZhbHVlICE9IDA6CisgICAgICAgICAgICBzdG9yYWdlICs9IHN0cnVjdC5wYWNrKCIhQkgiLCBjb3VudCArIDEyOCwgc2VsZi52YWx1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN0b3JhZ2UgKz0gc3RydWN0LnBhY2soIkIiLCBjb3VudCkKIAotICAgIGZvciBjaGlsZCBpbiBjaGlsZHJlbjoKLSAgICAgIHN0b3JhZ2UgPSBjaGlsZC5zdG9yZSggc3RvcmFnZSApCisgICAgICAgIGZvciBjaGlsZCBpbiBjaGlsZHJlbjoKKyAgICAgICAgICAgIHN0b3JhZ2UgKz0gc3RydWN0LnBhY2soIiFIIiwgY2hpbGQuaW5kZXgpCiAKLSAgICByZXR1cm4gc3RvcmFnZQorICAgICAgICBmb3IgY2hpbGQgaW4gY2hpbGRyZW46CisgICAgICAgICAgICBzdG9yYWdlID0gY2hpbGQuc3RvcmUoc3RvcmFnZSkKKworICAgICAgICByZXR1cm4gc3RvcmFnZQogCiAKIGRlZiBhZG9iZV9nbHlwaF92YWx1ZXMoKToKLSAgIiIicmV0dXJuIHRoZSBsaXN0IG9mIGdseXBoIG5hbWVzIGFuZCB0aGVpciB1bmljb2RlIHZhbHVlcyIiIgorICAgICIiInJldHVybiB0aGUgbGlzdCBvZiBnbHlwaCBuYW1lcyBhbmQgdGhlaXIgdW5pY29kZSB2YWx1ZXMiIiIKIAotICBsaW5lcyAgPSBzdHJpbmcuc3BsaXQoIGFkb2JlX2dseXBoX2xpc3QsICdcbicgKQotICBnbHlwaHMgPSBbXQotICB2YWx1ZXMgPSBbXQorICAgIGxpbmVzID0gYWRvYmVfZ2x5cGhfbGlzdC5zcGxpdCgiXG4iKQorICAgIGdseXBocyA9IFtdCisgICAgdmFsdWVzID0gW10KIAotICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICBpZiBsaW5lOgotICAgICAgZmllbGRzID0gc3RyaW5nLnNwbGl0KCBsaW5lLCAnOycgKQotIyAgICAgcHJpbnQgZmllbGRzWzFdICsgJyAtICcgKyBmaWVsZHNbMF0KLSAgICAgIHN1YmZpZWxkcyA9IHN0cmluZy5zcGxpdCggZmllbGRzWzFdLCAnICcgKQotICAgICAgaWYgbGVuKCBzdWJmaWVsZHMgKSA9PSAxOgotICAgICAgICBnbHlwaHMuYXBwZW5kKCBmaWVsZHNbMF0gKQotICAgICAgICB2YWx1ZXMuYXBwZW5kKCBmaWVsZHNbMV0gKQorICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICBpZiBsaW5lOgorICAgICAgICAgICAgZmllbGRzID0gbGluZS5zcGxpdCgnOycpCisgICAgICAgICAgICAjICAgICBwcmludCBmaWVsZHNbMV0gKyAnIC0gJyArIGZpZWxkc1swXQorICAgICAgICAgICAgc3ViZmllbGRzID0gZmllbGRzWzFdLnNwbGl0KCcgJykKKyAgICAgICAgICAgIGlmIGxlbihzdWJmaWVsZHMpID09IDE6CisgICAgICAgICAgICAgICAgZ2x5cGhzLmFwcGVuZChmaWVsZHNbMF0pCisgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChmaWVsZHNbMV0pCiAKLSAgcmV0dXJuIGdseXBocywgdmFsdWVzCisgICAgcmV0dXJuIGdseXBocywgdmFsdWVzCiAKIAotZGVmIGZpbHRlcl9nbHlwaF9uYW1lcyggYWxpc3QsIGZpbHRlciApOgotICAiIiJmaWx0ZXIgYGFsaXN0JyBieSB0YWtpbmcgX291dF8gYWxsIGdseXBoIG5hbWVzIHRoYXQgYXJlIGluIGBmaWx0ZXInIiIiCitkZWYgZmlsdGVyX2dseXBoX25hbWVzKGFsaXN0LCBmaWx0ZXIpOgorICAgICIiImZpbHRlciBgYWxpc3QnIGJ5IHRha2luZyBfb3V0XyBhbGwgZ2x5cGggbmFtZXMgdGhhdCBhcmUgaW4gYGZpbHRlciciIiIKIAotICBjb3VudCAgPSAwCi0gIGV4dHJhcyA9IFtdCisgICAgY291bnQgPSAwCisgICAgZXh0cmFzID0gW10KIAotICBmb3IgbmFtZSBpbiBhbGlzdDoKLSAgICB0cnk6Ci0gICAgICBmaWx0ZXJlZF9pbmRleCA9IGZpbHRlci5pbmRleCggbmFtZSApCi0gICAgZXhjZXB0OgotICAgICAgZXh0cmFzLmFwcGVuZCggbmFtZSApCisgICAgZm9yIG5hbWUgaW4gYWxpc3Q6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZpbHRlcmVkX2luZGV4ID0gZmlsdGVyLmluZGV4KG5hbWUpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGV4dHJhcy5hcHBlbmQobmFtZSkKIAotICByZXR1cm4gZXh0cmFzCisgICAgcmV0dXJuIGV4dHJhcwogCiAKLWRlZiBkdW1wX2VuY29kaW5nKCBmaWxlLCBlbmNvZGluZ19uYW1lLCBlbmNvZGluZ19saXN0ICk6Ci0gICIiImR1bXAgYSBnaXZlbiBlbmNvZGluZyIiIgorZGVmIGR1bXBfZW5jb2RpbmcoZmlsZSwgZW5jb2RpbmdfbmFtZSwgZW5jb2RpbmdfbGlzdCk6CisgICAgIiIiZHVtcCBhIGdpdmVuIGVuY29kaW5nIiIiCiAKLSAgd3JpdGUgPSBmaWxlLndyaXRlCi0gIHdyaXRlKCAiICAvKiB0aGUgZm9sbG93aW5nIGFyZSBpbmRpY2VzIGludG8gdGhlIFNJRCBuYW1lIHRhYmxlICovXG4iICkKLSAgd3JpdGUoICIjaWZuZGVmICBERUZJTkVfUFNfVEFCTEVTX0RBVEFcbiIgKQotICB3cml0ZSggIiNpZmRlZiAgX19jcGx1c3BsdXNcbiIgKQotICB3cml0ZSggJyAgZXh0ZXJuICJDIlxuJyApCi0gIHdyaXRlKCAiI2Vsc2VcbiIgKQotICB3cml0ZSggIiAgZXh0ZXJuXG4iICkKLSAgd3JpdGUoICIjZW5kaWZcbiIgKQotICB3cml0ZSggIiNlbmRpZlxuIiApCi0gIHdyaXRlKCAiICBjb25zdCB1bnNpZ25lZCBzaG9ydCAgIiArIGVuY29kaW5nX25hbWUgKwotICAgICAgICAgIlsiICsgcmVwciggbGVuKCBlbmNvZGluZ19saXN0ICkgKSArICJdXG4iICkKLSAgd3JpdGUoICIjaWZkZWYgIERFRklORV9QU19UQUJMRVNfREFUQVxuIiApCi0gIHdyaXRlKCAiICA9XG4iICkKLSAgd3JpdGUoICIgIHtcbiIgKQorICAgIHdyaXRlID0gZmlsZS53cml0ZQorICAgIHdyaXRlKCIgIC8qIHRoZSBmb2xsb3dpbmcgYXJlIGluZGljZXMgaW50byB0aGUgU0lEIG5hbWUgdGFibGUgKi9cbiIpCisgICAgd3JpdGUoIiNpZm5kZWYgIERFRklORV9QU19UQUJMRVNfREFUQVxuIikKKyAgICB3cml0ZSgiI2lmZGVmICBfX2NwbHVzcGx1c1xuIikKKyAgICB3cml0ZSgnICBleHRlcm4gIkMiXG4nKQorICAgIHdyaXRlKCIjZWxzZVxuIikKKyAgICB3cml0ZSgiICBleHRlcm5cbiIpCisgICAgd3JpdGUoIiNlbmRpZlxuIikKKyAgICB3cml0ZSgiI2VuZGlmXG4iKQorICAgIHdyaXRlKCIgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICAiICsgZW5jb2RpbmdfbmFtZSArCisgICAgICAgICAgIlsiICsgcmVwcihsZW4oZW5jb2RpbmdfbGlzdCkpICsgIl1cbiIpCisgICAgd3JpdGUoIiNpZmRlZiAgREVGSU5FX1BTX1RBQkxFU19EQVRBXG4iKQorICAgIHdyaXRlKCIgID1cbiIpCisgICAgd3JpdGUoIiAge1xuIikKIAotICBsaW5lICA9ICIgICAgIgotICBjb21tYSA9ICIiCi0gIGNvbCAgID0gMAotICBmb3IgdmFsdWUgaW4gZW5jb2RpbmdfbGlzdDoKLSAgICBsaW5lICs9IGNvbW1hCi0gICAgbGluZSArPSAiJTNkIiAlIHZhbHVlCi0gICAgY29tbWEgPSAiLCIKLSAgICBjb2wgICs9IDEKLSAgICBpZiBjb2wgPT0gMTY6Ci0gICAgICBjb2wgPSAwCi0gICAgICBjb21tYSA9ICIsXG4gICAgIgorICAgIGxpbmUgPSAiICAgICIKKyAgICBjb21tYSA9ICIiCisgICAgY29sID0gMAorICAgIGZvciB2YWx1ZSBpbiBlbmNvZGluZ19saXN0OgorICAgICAgICBsaW5lICs9IGNvbW1hCisgICAgICAgIGxpbmUgKz0gIiUzZCIgJSB2YWx1ZQorICAgICAgICBjb21tYSA9ICIsIgorICAgICAgICBjb2wgKz0gMQorICAgICAgICBpZiBjb2wgPT0gMTY6CisgICAgICAgICAgICBjb2wgPSAwCisgICAgICAgICAgICBjb21tYSA9ICIsXG4gICAgIgogCi0gIHdyaXRlKCBsaW5lICkKLSAgd3JpdGUoICJcbiIgKQotICB3cml0ZSggIiAgfVxuIiApCi0gIHdyaXRlKCAiI2VuZGlmIC8qIERFRklORV9QU19UQUJMRVNfREFUQSAqL1xuIiApCi0gIHdyaXRlKCAiICA7XG5cblxuIiApCisgICAgd3JpdGUobGluZSkKKyAgICB3cml0ZSgiXG4iKQorICAgIHdyaXRlKCIgIH1cbiIpCisgICAgd3JpdGUoIiNlbmRpZiAvKiBERUZJTkVfUFNfVEFCTEVTX0RBVEEgKi9cbiIpCisgICAgd3JpdGUoIiAgO1xuXG5cbiIpCiAKIAotZGVmIGR1bXBfYXJyYXkoIHRoZV9hcnJheSwgd3JpdGUsIGFycmF5X25hbWUgKToKLSAgIiIiZHVtcHMgYSBnaXZlbiBlbmNvZGluZyIiIgorZGVmIGR1bXBfYXJyYXkodGhlX2FycmF5LCB3cml0ZSwgYXJyYXlfbmFtZSk6CisgICAgIiIiZHVtcHMgYSBnaXZlbiBlbmNvZGluZyIiIgogCi0gIHdyaXRlKCAiI2lmbmRlZiAgREVGSU5FX1BTX1RBQkxFU19EQVRBXG4iICkKLSAgd3JpdGUoICIjaWZkZWYgIF9fY3BsdXNwbHVzXG4iICkKLSAgd3JpdGUoICcgIGV4dGVybiAiQyJcbicgKQotICB3cml0ZSggIiNlbHNlXG4iICkKLSAgd3JpdGUoICIgIGV4dGVyblxuIiApCi0gIHdyaXRlKCAiI2VuZGlmXG4iICkKLSAgd3JpdGUoICIjZW5kaWZcbiIgKQotICB3cml0ZSggIiAgY29uc3QgdW5zaWduZWQgY2hhciAgIiArIGFycmF5X25hbWUgKwotICAgICAgICAgIlsiICsgcmVwciggbGVuKCB0aGVfYXJyYXkgKSApICsgIkxdXG4iICkKLSAgd3JpdGUoICIjaWZkZWYgIERFRklORV9QU19UQUJMRVNfREFUQVxuIiApCi0gIHdyaXRlKCAiICA9XG4iICkKLSAgd3JpdGUoICIgIHtcbiIgKQorICAgIHdyaXRlKCIjaWZuZGVmICBERUZJTkVfUFNfVEFCTEVTX0RBVEFcbiIpCisgICAgd3JpdGUoIiNpZmRlZiAgX19jcGx1c3BsdXNcbiIpCisgICAgd3JpdGUoJyAgZXh0ZXJuICJDIlxuJykKKyAgICB3cml0ZSgiI2Vsc2VcbiIpCisgICAgd3JpdGUoIiAgZXh0ZXJuXG4iKQorICAgIHdyaXRlKCIjZW5kaWZcbiIpCisgICAgd3JpdGUoIiNlbmRpZlxuIikKKyAgICB3cml0ZSgiICBjb25zdCB1bnNpZ25lZCBjaGFyICAiICsgYXJyYXlfbmFtZSArCisgICAgICAgICAgIlsiICsgcmVwcihsZW4odGhlX2FycmF5KSkgKyAiTF1cbiIpCisgICAgd3JpdGUoIiNpZmRlZiAgREVGSU5FX1BTX1RBQkxFU19EQVRBXG4iKQorICAgIHdyaXRlKCIgID1cbiIpCisgICAgd3JpdGUoIiAge1xuIikKIAotICBsaW5lICA9ICIiCi0gIGNvbW1hID0gIiAgICAiCi0gIGNvbCAgID0gMAorICAgIGxpbmUgPSAiIgorICAgIGNvbW1hID0gIiAgICAiCisgICAgY29sID0gMAogCi0gIGZvciB2YWx1ZSBpbiB0aGVfYXJyYXk6Ci0gICAgbGluZSArPSBjb21tYQotICAgIGxpbmUgKz0gIiUzZCIgJSBvcmQoIHZhbHVlICkKLSAgICBjb21tYSA9ICIsIgotICAgIGNvbCAgKz0gMQorICAgIGZvciB2YWx1ZSBpbiB0aGVfYXJyYXk6CisgICAgICAgIGxpbmUgKz0gY29tbWEKKyAgICAgICAgbGluZSArPSAiJTNkIiAlIHZhbHVlCisgICAgICAgIGNvbW1hID0gIiwiCisgICAgICAgIGNvbCArPSAxCiAKLSAgICBpZiBjb2wgPT0gMTY6Ci0gICAgICBjb2wgICA9IDAKLSAgICAgIGNvbW1hID0gIixcbiAgICAiCisgICAgICAgIGlmIGNvbCA9PSAxNjoKKyAgICAgICAgICAgIGNvbCA9IDAKKyAgICAgICAgICAgIGNvbW1hID0gIixcbiAgICAiCiAKLSAgICBpZiBsZW4oIGxpbmUgKSA+IDEwMjQ6Ci0gICAgICB3cml0ZSggbGluZSApCi0gICAgICBsaW5lID0gIiIKKyAgICAgICAgaWYgbGVuKGxpbmUpID4gMTAyNDoKKyAgICAgICAgICAgIHdyaXRlKGxpbmUpCisgICAgICAgICAgICBsaW5lID0gIiIKIAotICB3cml0ZSggbGluZSApCi0gIHdyaXRlKCAiXG4iICkKLSAgd3JpdGUoICIgIH1cbiIgKQotICB3cml0ZSggIiNlbmRpZiAvKiBERUZJTkVfUFNfVEFCTEVTX0RBVEEgKi9cbiIgKQotICB3cml0ZSggIiAgO1xuXG5cbiIgKQorICAgIHdyaXRlKGxpbmUpCisgICAgd3JpdGUoIlxuIikKKyAgICB3cml0ZSgiICB9XG4iKQorICAgIHdyaXRlKCIjZW5kaWYgLyogREVGSU5FX1BTX1RBQkxFU19EQVRBICovXG4iKQorICAgIHdyaXRlKCIgIDtcblxuXG4iKQogCiAKIGRlZiBtYWluKCk6Ci0gICIiIm1haW4gcHJvZ3JhbSBib2R5IiIiCisgICAgIiIibWFpbiBwcm9ncmFtIGJvZHkiIiIKIAotICBpZiBsZW4oIHN5cy5hcmd2ICkgIT0gMjoKLSAgICBwcmludCBfX2RvY19fICUgc3lzLmFyZ3ZbMF0KLSAgICBzeXMuZXhpdCggMSApCisgICAgaWYgbGVuKHN5cy5hcmd2KSAhPSAyOgorICAgICAgICBwcmludChfX2RvY19fICUgc3lzLmFyZ3ZbMF0pCisgICAgICAgIHN5cy5leGl0KDEpCiAKLSAgZmlsZSAgPSBvcGVuKCBzeXMuYXJndlsxXSwgIndiIiApCi0gIHdyaXRlID0gZmlsZS53cml0ZQorICAgIGZpbGUgPSBvcGVuKHN5cy5hcmd2WzFdLCAidyIpCisgICAgd3JpdGUgPSBmaWxlLndyaXRlCiAKLSAgY291bnRfc2lkID0gbGVuKCBzaWRfc3RhbmRhcmRfbmFtZXMgKQorICAgIGNvdW50X3NpZCA9IGxlbihzaWRfc3RhbmRhcmRfbmFtZXMpCiAKLSAgIyBgbWFjX2V4dHJhcycgY29udGFpbnMgdGhlIGxpc3Qgb2YgZ2x5cGggbmFtZXMgaW4gdGhlIE1hY2ludG9zaCBzdGFuZGFyZAotICAjIGVuY29kaW5nIHdoaWNoIGFyZSBub3QgaW4gdGhlIFNJRCBTdGFuZGFyZCBOYW1lcy4KLSAgIwotICBtYWNfZXh0cmFzID0gZmlsdGVyX2dseXBoX25hbWVzKCBtYWNfc3RhbmRhcmRfbmFtZXMsIHNpZF9zdGFuZGFyZF9uYW1lcyApCisgICAgIyBgbWFjX2V4dHJhcycgY29udGFpbnMgdGhlIGxpc3Qgb2YgZ2x5cGggbmFtZXMgaW4gdGhlIE1hY2ludG9zaCBzdGFuZGFyZAorICAgICMgZW5jb2Rpbmcgd2hpY2ggYXJlIG5vdCBpbiB0aGUgU0lEIFN0YW5kYXJkIE5hbWVzLgorICAgICMKKyAgICBtYWNfZXh0cmFzID0gZmlsdGVyX2dseXBoX25hbWVzKG1hY19zdGFuZGFyZF9uYW1lcywgc2lkX3N0YW5kYXJkX25hbWVzKQogCi0gICMgYGJhc2VfbGlzdCcgY29udGFpbnMgdGhlIG5hbWVzIG9mIG91ciBmaW5hbCBnbHlwaCBuYW1lcyB0YWJsZS4KLSAgIyBJdCBjb25zaXN0cyBvZiB0aGUgYG1hY19leHRyYXMnIGdseXBoIG5hbWVzLCBmb2xsb3dlZCBieSB0aGUgU0lECi0gICMgc3RhbmRhcmQgbmFtZXMuCi0gICMKLSAgbWFjX2V4dHJhc19jb3VudCA9IGxlbiggbWFjX2V4dHJhcyApCi0gIGJhc2VfbGlzdCAgICAgICAgPSBtYWNfZXh0cmFzICsgc2lkX3N0YW5kYXJkX25hbWVzCisgICAgIyBgYmFzZV9saXN0JyBjb250YWlucyB0aGUgbmFtZXMgb2Ygb3VyIGZpbmFsIGdseXBoIG5hbWVzIHRhYmxlLgorICAgICMgSXQgY29uc2lzdHMgb2YgdGhlIGBtYWNfZXh0cmFzJyBnbHlwaCBuYW1lcywgZm9sbG93ZWQgYnkgdGhlIFNJRAorICAgICMgc3RhbmRhcmQgbmFtZXMuCisgICAgIworICAgIG1hY19leHRyYXNfY291bnQgPSBsZW4obWFjX2V4dHJhcykKKyAgICBiYXNlX2xpc3QgPSBtYWNfZXh0cmFzICsgc2lkX3N0YW5kYXJkX25hbWVzCiAKLSAgd3JpdGUoICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIiApCi0gIHdyaXRlKCAiICpcbiIgKQorICAgIHdyaXRlKCIvKlxuIikKKyAgICB3cml0ZSgiICpcbiIpCisgICAgd3JpdGUoIiAqICUtNzFzXG4iICUgb3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlsxXSkpCisgICAgd3JpdGUoIiAqXG4iKQorICAgIHdyaXRlKCIgKiAgIFBvc3RTY3JpcHQgZ2x5cGggbmFtZXMuXG4iKQorICAgIHdyaXRlKCIgKlxuIikKKyAgICB3cml0ZSgiICogQ29weXJpZ2h0IDIwMDUtMjAyMiBieVxuIikKKyAgICB3cml0ZSgiICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLlxuIikKKyAgICB3cml0ZSgiICpcbiIpCisgICAgd3JpdGUoIiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgIgorICAgICAgICAgICJ1c2VkLFxuIikKKyAgICB3cml0ZSgiICogbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlICIKKyAgICAgICAgICAicHJvamVjdFxuIikKKyAgICB3cml0ZSgiICogbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciAiCisgICAgICAgICAgImRpc3RyaWJ1dGVcbiIpCisgICAgd3JpdGUoIiAqIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZFxuIikKKyAgICB3cml0ZSgiICogdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LlxuIikKKyAgICB3cml0ZSgiICpcbiIpCisgICAgd3JpdGUoIiAqL1xuIikKKyAgICB3cml0ZSgiXG4iKQorICAgIHdyaXRlKCJcbiIpCisgICAgd3JpdGUoIiAgLyogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IC0tIGRvIG5vdCBlZGl0ISAqLyIKKyAgICAgICAgICAiXG4iKQorICAgIHdyaXRlKCJcbiIpCisgICAgd3JpdGUoIlxuIikKIAotICB3cml0ZSggIiAqICUtNzFzXG4iICUgb3MucGF0aC5iYXNlbmFtZSggc3lzLmFyZ3ZbMV0gKSApCisgICAgIyBkdW1wIGZpbmFsIGdseXBoIGxpc3QgKG1hYyBleHRyYXMgKyBzaWQgc3RhbmRhcmQgbmFtZXMpCisgICAgIworICAgIHN0ID0gU3RyaW5nVGFibGUoYmFzZV9saXN0LCAiZnRfc3RhbmRhcmRfZ2x5cGhfbmFtZXMiKQogCi0gIHdyaXRlKCAiICpcbiIgKQotICB3cml0ZSggIiAqICAgUG9zdFNjcmlwdCBnbHlwaCBuYW1lcy5cbiIgKQotICB3cml0ZSggIiAqXG4iICkKLSAgd3JpdGUoICIgKiBDb3B5cmlnaHQgMjAwNS0yMDE5IGJ5XG4iICkKLSAgd3JpdGUoICIgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuXG4iICkKLSAgd3JpdGUoICIgKlxuIiApCi0gIHdyaXRlKCAiICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLFxuIiApCi0gIHdyaXRlKCAiICogbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3RcbiIgKQotICB3cml0ZSggIiAqIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZVxuIiApCi0gIHdyaXRlKCAiICogdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kXG4iICkKLSAgd3JpdGUoICIgKiB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuXG4iICkKLSAgd3JpdGUoICIgKlxuIiApCi0gIHdyaXRlKCAiICovXG4iICkKLSAgd3JpdGUoICJcbiIgKQotICB3cml0ZSggIlxuIiApCi0gIHdyaXRlKCAiICAvKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgLS0gZG8gbm90IGVkaXQhICovXG4iICkKLSAgd3JpdGUoICJcbiIgKQotICB3cml0ZSggIlxuIiApCisgICAgc3QuZHVtcChmaWxlKQorICAgIHN0LmR1bXBfc3VibGlzdChmaWxlLCAiZnRfbWFjX25hbWVzIiwKKyAgICAgICAgICAgICAgICAgICAgIkZUX05VTV9NQUNfTkFNRVMiLCBtYWNfc3RhbmRhcmRfbmFtZXMpCisgICAgc3QuZHVtcF9zdWJsaXN0KGZpbGUsICJmdF9zaWRfbmFtZXMiLAorICAgICAgICAgICAgICAgICAgICAiRlRfTlVNX1NJRF9OQU1FUyIsIHNpZF9zdGFuZGFyZF9uYW1lcykKIAotICAjIGR1bXAgZmluYWwgZ2x5cGggbGlzdCAobWFjIGV4dHJhcyArIHNpZCBzdGFuZGFyZCBuYW1lcykKLSAgIwotICBzdCA9IFN0cmluZ1RhYmxlKCBiYXNlX2xpc3QsICJmdF9zdGFuZGFyZF9nbHlwaF9uYW1lcyIgKQorICAgIGR1bXBfZW5jb2RpbmcoZmlsZSwgInQxX3N0YW5kYXJkX2VuY29kaW5nIiwgdDFfc3RhbmRhcmRfZW5jb2RpbmcpCisgICAgZHVtcF9lbmNvZGluZyhmaWxlLCAidDFfZXhwZXJ0X2VuY29kaW5nIiwgdDFfZXhwZXJ0X2VuY29kaW5nKQogCi0gIHN0LmR1bXAoIGZpbGUgKQotICBzdC5kdW1wX3N1Ymxpc3QoIGZpbGUsICJmdF9tYWNfbmFtZXMiLAotICAgICAgICAgICAgICAgICAgICJGVF9OVU1fTUFDX05BTUVTIiwgbWFjX3N0YW5kYXJkX25hbWVzICkKLSAgc3QuZHVtcF9zdWJsaXN0KCBmaWxlLCAiZnRfc2lkX25hbWVzIiwKLSAgICAgICAgICAgICAgICAgICAiRlRfTlVNX1NJRF9OQU1FUyIsIHNpZF9zdGFuZGFyZF9uYW1lcyApCisgICAgIyBkdW1wIHRoZSBBR0wgaW4gaXRzIGNvbXByZXNzZWQgZm9ybQorICAgICMKKyAgICBhZ2xfZ2x5cGhzLCBhZ2xfdmFsdWVzID0gYWRvYmVfZ2x5cGhfdmFsdWVzKCkKKyAgICBkaWN0aW9uYXJ5ID0gU3RyaW5nTm9kZSgiIiwgMCkKIAotICBkdW1wX2VuY29kaW5nKCBmaWxlLCAidDFfc3RhbmRhcmRfZW5jb2RpbmciLCB0MV9zdGFuZGFyZF9lbmNvZGluZyApCi0gIGR1bXBfZW5jb2RpbmcoIGZpbGUsICJ0MV9leHBlcnRfZW5jb2RpbmciLCB0MV9leHBlcnRfZW5jb2RpbmcgKQorICAgIGZvciBnIGluIHJhbmdlKGxlbihhZ2xfZ2x5cGhzKSk6CisgICAgICAgIGRpY3Rpb25hcnkuYWRkKGFnbF9nbHlwaHNbZ10sIGV2YWwoIjB4IiArIGFnbF92YWx1ZXNbZ10pKQogCi0gICMgZHVtcCB0aGUgQUdMIGluIGl0cyBjb21wcmVzc2VkIGZvcm0KLSAgIwotICBhZ2xfZ2x5cGhzLCBhZ2xfdmFsdWVzID0gYWRvYmVfZ2x5cGhfdmFsdWVzKCkKLSAgZGljdCA9IFN0cmluZ05vZGUoICIiLCAwICkKKyAgICBkaWN0aW9uYXJ5ID0gZGljdGlvbmFyeS5vcHRpbWl6ZSgpCisgICAgZGljdF9sZW4gPSBkaWN0aW9uYXJ5LmxvY2F0ZSgwKQorICAgIGRpY3RfYXJyYXkgPSBkaWN0aW9uYXJ5LnN0b3JlKGIiIikKIAotICBmb3IgZyBpbiByYW5nZSggbGVuKCBhZ2xfZ2x5cGhzICkgKToKLSAgICBkaWN0LmFkZCggYWdsX2dseXBoc1tnXSwgZXZhbCggIjB4IiArIGFnbF92YWx1ZXNbZ10gKSApCi0KLSAgZGljdCAgICAgICA9IGRpY3Qub3B0aW1pemUoKQotICBkaWN0X2xlbiAgID0gZGljdC5sb2NhdGUoIDAgKQotICBkaWN0X2FycmF5ID0gZGljdC5zdG9yZSggIiIgKQotCi0gIHdyaXRlKCAiIiJcCisgICAgd3JpdGUoIiIiXAogICAvKgogICAgKiBUaGlzIHRhYmxlIGlzIGEgY29tcHJlc3NlZCB2ZXJzaW9uIG9mIHRoZSBBZG9iZSBHbHlwaCBMaXN0IChBR0wpLAogICAgKiBvcHRpbWl6ZWQgZm9yIGVmZmljaWVudCBzZWFyY2hpbmcuICBJdCBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgdGhlCkBAIC01MzcxLDEzICs1MzY0LDEzIEBACiAKICNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0FET0JFX0dMWVBIX0xJU1QKIAotIiIiICkKKyIiIikKIAotICBkdW1wX2FycmF5KCBkaWN0X2FycmF5LCB3cml0ZSwgImZ0X2Fkb2JlX2dseXBoX2xpc3QiICkKKyAgICBkdW1wX2FycmF5KGRpY3RfYXJyYXksIHdyaXRlLCAiZnRfYWRvYmVfZ2x5cGhfbGlzdCIpCiAKLSAgIyB3cml0ZSB0aGUgbG9va3VwIHJvdXRpbmUgbm93Ci0gICMKLSAgd3JpdGUoICIiIlwKKyAgICAjIHdyaXRlIHRoZSBsb29rdXAgcm91dGluZSBub3cKKyAgICAjCisgICAgd3JpdGUoIiIiXAogI2lmZGVmICBERUZJTkVfUFNfVEFCTEVTCiAgIC8qCiAgICAqIFRoaXMgZnVuY3Rpb24gc2VhcmNoZXMgdGhlIGNvbXByZXNzZWQgdGFibGUgZWZmaWNpZW50bHkuCkBAIC01NDc3LDY0ICs1NDcwLDY0IEBACiAKICNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX0FET0JFX0dMWVBIX0xJU1QgKi8KIAotIiIiICkKKyIiIikKIAotICBpZiAwOiAgIyBnZW5lcmF0ZSB1bml0IHRlc3QsIG9yIGRvbid0Ci0gICAgIwotICAgICMgbm93IHdyaXRlIHRoZSB1bml0IHRlc3QgdG8gY2hlY2sgdGhhdCBldmVyeXRoaW5nIHdvcmtzIE9LCi0gICAgIwotICAgIHdyaXRlKCAiI2lmZGVmIFRFU1RcblxuIiApCisgICAgaWYgMDogICMgZ2VuZXJhdGUgdW5pdCB0ZXN0LCBvciBkb24ndAorICAgICAgICAjCisgICAgICAgICMgbm93IHdyaXRlIHRoZSB1bml0IHRlc3QgdG8gY2hlY2sgdGhhdCBldmVyeXRoaW5nIHdvcmtzIE9LCisgICAgICAgICMKKyAgICAgICAgd3JpdGUoIiNpZmRlZiBURVNUXG5cbiIpCiAKLSAgICB3cml0ZSggInN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCAgdGhlX25hbWVzW10gPSB7XG4iICkKLSAgICBmb3IgbmFtZSBpbiBhZ2xfZ2x5cGhzOgotICAgICAgd3JpdGUoICcgICInICsgbmFtZSArICciLFxuJyApCi0gICAgd3JpdGUoICIgIDBcbn07XG4iICkKKyAgICAgICAgd3JpdGUoInN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCAgdGhlX25hbWVzW10gPSB7XG4iKQorICAgICAgICBmb3IgbmFtZSBpbiBhZ2xfZ2x5cGhzOgorICAgICAgICAgICAgd3JpdGUoJyAgIicgKyBuYW1lICsgJyIsXG4nKQorICAgICAgICB3cml0ZSgiICAwXG59O1xuIikKIAotICAgIHdyaXRlKCAic3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgIHRoZV92YWx1ZXNbXSA9IHtcbiIgKQotICAgIGZvciB2YWwgaW4gYWdsX3ZhbHVlczoKLSAgICAgIHdyaXRlKCAnICAweCcgKyB2YWwgKyAnLFxuJyApCi0gICAgd3JpdGUoICIgIDBcbn07XG4iICkKKyAgICAgICAgd3JpdGUoInN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nICB0aGVfdmFsdWVzW10gPSB7XG4iKQorICAgICAgICBmb3IgdmFsIGluIGFnbF92YWx1ZXM6CisgICAgICAgICAgICB3cml0ZSgnICAweCcgKyB2YWwgKyAnLFxuJykKKyAgICAgICAgd3JpdGUoIiAgMFxufTtcbiIpCiAKLSAgICB3cml0ZSggIiIiCisgICAgICAgIHdyaXRlKCIiIgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAKLSAgaW50Ci0gIG1haW4oIHZvaWQgKQoraW50CittYWluKCB2b2lkICkKK3sKK2ludCAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAwOworY29uc3QgY2hhciogY29uc3QqICAgIG5hbWVzICA9IHRoZV9uYW1lczsKK2NvbnN0IHVuc2lnbmVkIGxvbmcqICB2YWx1ZXMgPSB0aGVfdmFsdWVzOworCisKK2ZvciAoIDsgKm5hbWVzOyBuYW1lcysrLCB2YWx1ZXMrKyApCit7CisgIGNvbnN0IGNoYXIqICAgIG5hbWUgICAgICA9ICpuYW1lczsKKyAgdW5zaWduZWQgbG9uZyAgcmVmZXJlbmNlID0gKnZhbHVlczsKKyAgdW5zaWduZWQgbG9uZyAgdmFsdWU7CisKKworICB2YWx1ZSA9IGZ0X2dldF9hZG9iZV9nbHlwaF9pbmRleCggbmFtZSwgbmFtZSArIHN0cmxlbiggbmFtZSApICk7CisgIGlmICggdmFsdWUgIT0gcmVmZXJlbmNlICkKICAgewotICAgIGludCAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAwOwotICAgIGNvbnN0IGNoYXIqIGNvbnN0KiAgICBuYW1lcyAgPSB0aGVfbmFtZXM7Ci0gICAgY29uc3QgdW5zaWduZWQgbG9uZyogIHZhbHVlcyA9IHRoZV92YWx1ZXM7Ci0KLQotICAgIGZvciAoIDsgKm5hbWVzOyBuYW1lcysrLCB2YWx1ZXMrKyApCi0gICAgewotICAgICAgY29uc3QgY2hhciogICAgbmFtZSAgICAgID0gKm5hbWVzOwotICAgICAgdW5zaWduZWQgbG9uZyAgcmVmZXJlbmNlID0gKnZhbHVlczsKLSAgICAgIHVuc2lnbmVkIGxvbmcgIHZhbHVlOwotCi0KLSAgICAgIHZhbHVlID0gZnRfZ2V0X2Fkb2JlX2dseXBoX2luZGV4KCBuYW1lLCBuYW1lICsgc3RybGVuKCBuYW1lICkgKTsKLSAgICAgIGlmICggdmFsdWUgIT0gcmVmZXJlbmNlICkKLSAgICAgIHsKLSAgICAgICAgcmVzdWx0ID0gMTsKLSAgICAgICAgZnByaW50Ziggc3RkZXJyLCAibmFtZSAnJXMnID0+ICUwNHggaW5zdGVhZCBvZiAlMDR4XFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCB2YWx1ZSwgcmVmZXJlbmNlICk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXN1bHQgPSAxOworICAgIGZwcmludGYoIHN0ZGVyciwgIm5hbWUgJyVzJyA9PiAlMDR4IGluc3RlYWQgb2YgJTA0eFxcbiIsCisgICAgICAgICAgICAgICAgICAgICBuYW1lLCB2YWx1ZSwgcmVmZXJlbmNlICk7CiAgIH0KLSIiIiApCit9CiAKLSAgICB3cml0ZSggIiNlbmRpZiAvKiBURVNUICovXG4iICkKK3JldHVybiByZXN1bHQ7Cit9CisiIiIpCiAKLSAgd3JpdGUoIlxuLyogRU5EICovXG4iKQorICAgICAgICB3cml0ZSgiI2VuZGlmIC8qIFRFU1QgKi9cbiIpCisKKyAgICB3cml0ZSgiXG4vKiBFTkQgKi9cbiIpCiAKIAogIyBOb3cgcnVuIHRoZSBtYWluIHJvdXRpbmUKICMKIG1haW4oKQogCi0KICMgRU5ECmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvbm8tY29weXJpZ2h0IGIvc3JjL3Rvb2xzL25vLWNvcHlyaWdodAppbmRleCAxZWFhNjMwLi5lMTcxYjc2IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvbm8tY29weXJpZ2h0CisrKyBiL3NyYy90b29scy9uby1jb3B5cmlnaHQKQEAgLTEsOSArMSw5IEBACiAjIEZpbGVzIHRoYXQgZG9uJ3QgZ2V0IGEgY29weXJpZ2h0LCBvciB3aGljaCBhcmUgdGFrZW4gZnJvbSBlbHNld2hlcmUuCiAjCi0jIEFsbCBsaW5lcyBpbiB0aGlzIGZpbGUgYXJlIHBhdHRlcm5zLCBpbmNsdWRpbmcgdGhlIGNvbW1lbnQgbGluZXM7IHRoaXMKLSMgbWVhbnMgdGhhdCBlLmcuIGBGVEwuVFhUJyBtYXRjaGVzIGFsbCBmaWxlcyB0aGF0IGhhdmUgdGhpcyBzdHJpbmcgaW4KLSMgdGhlIGZpbGUgbmFtZSAoaW5jbHVkaW5nIHRoZSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwKLSMgYWx3YXlzIHN0YXJ0aW5nIHdpdGggYC4vJykuCisjIEFsbCBsaW5lcyBpbiB0aGlzIGZpbGUgYXJlIHBhdHRlcm5zIChyZWxhdGl2ZSB0byB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSksCisjIGluY2x1ZGluZyB0aGUgY29tbWVudCBsaW5lczsgdGhpcyBtZWFucyB0aGF0IGUuZy4gYEZUTC5UWFQnIG1hdGNoZXMgYWxsCisjIGZpbGVzIHRoYXQgaGF2ZSB0aGlzIHN0cmluZyBpbiB0aGUgZmlsZSBuYW1lIChpbmNsdWRpbmcgdGhlIHBhdGggcmVsYXRpdmUKKyMgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCBhbHdheXMgc3RhcnRpbmcgd2l0aCBgLi8nKS4KICMKICMgRG9uJ3QgcHV0IGVtcHR5IGxpbmVzIGludG8gdGhpcyBmaWxlIQogIwpAQCAtNDIsNiArNDIsNyBAQAogc3JjL3BjZi9ydWxlcy5tawogIwogc3JjL2d6aXAvYWRsZXIzMi5jCitzcmMvZ3ppcC9mdHpjb25mLmMKIHNyYy9nemlwL2luZmJsb2NrLmMKIHNyYy9nemlwL2luZmJsb2NrLmgKIHNyYy9nemlwL2luZmNvZGVzLmMKZGlmZiAtLWdpdCBhL3NyYy90b29scy91cGRhdGUtY29weXJpZ2h0IGIvc3JjL3Rvb2xzL3VwZGF0ZS1jb3B5cmlnaHQKaW5kZXggNGE4YmY5Yi4uNjc0ODIzYyAxMDA3NTUKLS0tIGEvc3JjL3Rvb2xzL3VwZGF0ZS1jb3B5cmlnaHQKKysrIGIvc3JjL3Rvb2xzL3VwZGF0ZS1jb3B5cmlnaHQKQEAgLTQsMTAgKzQsMTAgQEAKICMgdGFraW5nIGNhcmUgb2YgZXhjZXB0aW9ucyBzdG9yZWQgaW4gZmlsZSBgbm8tY29weXJpZ2h0Jy4KIAogdG9wZGlyPWBnaXQgcmV2LXBhcnNlIC0tc2hvdy10b3BsZXZlbGAKLXRvb2xzZGlyPSR0b3BkaXIvc3JjL3Rvb2xzCit0b29sc2Rpcj1gZGlybmFtZSAkMGAKIAogZ2l0IGxzLWZpbGVzIC0tZnVsbC1uYW1lICR0b3BkaXIgICAgICAgIFwKLXwgc2VkICdzfF58Li4vLi4vfCcgICAgICAgICAgICAgICAgICAgICBcCit8IHNlZCAic3xefCR0b3BkaXIvfCIgICAgICAgICAgICAgICAgICAgXAogfCBncmVwIC12RmYgJHRvb2xzZGlyL25vLWNvcHlyaWdodCAgICAgIFwKIHwgeGFyZ3MgJHRvb2xzZGlyL3VwZGF0ZS1jb3B5cmlnaHQteWVhcgogCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvdXBkYXRlLWNvcHlyaWdodC15ZWFyIGIvc3JjL3Rvb2xzL3VwZGF0ZS1jb3B5cmlnaHQteWVhcgppbmRleCA2OWQ2M2I2Li5iMGI2MGZiIDEwMDc1NQotLS0gYS9zcmMvdG9vbHMvdXBkYXRlLWNvcHlyaWdodC15ZWFyCisrKyBiL3NyYy90b29scy91cGRhdGUtY29weXJpZ2h0LXllYXIKQEAgLTIsNyArMiw3IEBACiAgICYgZXZhbCAnZXhlYyBwZXJsIC13UyAtaSAiJDAiICRhcmd2OnEnCiAgICAgaWYgMDsKIAotIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMyBieQogIyBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL3NyYy90cnVldHlwZS9tb2R1bGUubWsgYi9zcmMvdHJ1ZXR5cGUvbW9kdWxlLm1rCmluZGV4IDQ4NWVmMDUuLjVkNDRhYzEgMTAwNjQ0Ci0tLSBhL3NyYy90cnVldHlwZS9tb2R1bGUubWsKKysrIGIvc3JjL3RydWV0eXBlL21vZHVsZS5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL3NyYy90cnVldHlwZS9ydWxlcy5tayBiL3NyYy90cnVldHlwZS9ydWxlcy5tawppbmRleCBjZmQ2YjNiLi4yM2Y2ZjAwIDEwMDY0NAotLS0gYS9zcmMvdHJ1ZXR5cGUvcnVsZXMubWsKKysrIGIvc3JjL3RydWV0eXBlL3J1bGVzLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvc3JjL3RydWV0eXBlL3RydWV0eXBlLmMgYi9zcmMvdHJ1ZXR5cGUvdHJ1ZXR5cGUuYwppbmRleCA0MjMyYWNhLi5jNWZhYTk2IDEwMDY0NAotLS0gYS9zcmMvdHJ1ZXR5cGUvdHJ1ZXR5cGUuYworKysgYi9zcmMvdHJ1ZXR5cGUvdHJ1ZXR5cGUuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIFRydWVUeXBlIGRyaXZlciBjb21wb25lbnQgKGJvZHkgb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgYi9zcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYwppbmRleCA2ZmNmZGIyLi44MTNiNTJiIDEwMDY0NAotLS0gYS9zcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYworKysgYi9zcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRydWVUeXBlIGZvbnQgZHJpdmVyIGltcGxlbWVudGF0aW9uIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0zMDYsNyArMzA2LDcgQEAKICAgICAgIC8qIHVzZSB0aGUgc2NhbGVkIG1ldHJpY3MsIGV2ZW4gd2hlbiB0dF9zaXplX3Jlc2V0IGZhaWxzICovCiAgICAgICBGVF9TZWxlY3RfTWV0cmljcyggc2l6ZS0+ZmFjZSwgc3RyaWtlX2luZGV4ICk7CiAKLSAgICAgIHR0X3NpemVfcmVzZXQoIHR0c2l6ZSwgMCApOyAvKiBpZ25vcmUgcmV0dXJuIHZhbHVlICovCisgICAgICB0dF9zaXplX3Jlc2V0KCB0dHNpemUgKTsgLyogaWdub3JlIHJldHVybiB2YWx1ZSAqLwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMzY3LDcgKzM2Nyw3IEBACiAKICAgICBpZiAoIEZUX0lTX1NDQUxBQkxFKCBzaXplLT5mYWNlICkgKQogICAgIHsKLSAgICAgIGVycm9yID0gdHRfc2l6ZV9yZXNldCggdHRzaXplLCAwICk7CisgICAgICBlcnJvciA9IHR0X3NpemVfcmVzZXQoIHR0c2l6ZSApOwogCiAjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCiAgICAgICAvKiBmb3IgdGhlIGBNUFMnIGJ5dGVjb2RlIGluc3RydWN0aW9uIHdlIG5lZWQgdGhlIHBvaW50IHNpemUgKi8KQEAgLTUwNywxOSArNTA3LDM0IEBACiAgIEZUX0RFRklORV9TRVJWSUNFX01VTFRJTUFTVEVSU1JFQygKICAgICB0dF9zZXJ2aWNlX2d4X211bHRpX21hc3RlcnMsCiAKLSAgICAoRlRfR2V0X01NX0Z1bmMpICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgLyogZ2V0X21tICAgICAgICAgICAgICAqLwotICAgIChGVF9TZXRfTU1fRGVzaWduX0Z1bmMpICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAvKiBzZXRfbW1fZGVzaWduICAgICAgICovCi0gICAgKEZUX1NldF9NTV9CbGVuZF9GdW5jKSAgICAgICBUVF9TZXRfTU1fQmxlbmQsICAgICAgIC8qIHNldF9tbV9ibGVuZCAgICAgICAgKi8KLSAgICAoRlRfR2V0X01NX0JsZW5kX0Z1bmMpICAgICAgIFRUX0dldF9NTV9CbGVuZCwgICAgICAgLyogZ2V0X21tX2JsZW5kICAgICAgICAqLwotICAgIChGVF9HZXRfTU1fVmFyX0Z1bmMpICAgICAgICAgVFRfR2V0X01NX1ZhciwgICAgICAgICAvKiBnZXRfbW1fdmFyICAgICAgICAgICovCi0gICAgKEZUX1NldF9WYXJfRGVzaWduX0Z1bmMpICAgICBUVF9TZXRfVmFyX0Rlc2lnbiwgICAgIC8qIHNldF92YXJfZGVzaWduICAgICAgKi8KLSAgICAoRlRfR2V0X1Zhcl9EZXNpZ25fRnVuYykgICAgIFRUX0dldF9WYXJfRGVzaWduLCAgICAgLyogZ2V0X3Zhcl9kZXNpZ24gICAgICAqLwotICAgIChGVF9TZXRfSW5zdGFuY2VfRnVuYykgICAgICAgVFRfU2V0X05hbWVkX0luc3RhbmNlLCAvKiBzZXRfaW5zdGFuY2UgICAgICAgICovCi0gICAgKEZUX1NldF9NTV9XZWlnaHRWZWN0b3JfRnVuYylOVUxMLCAgICAgICAgICAgICAgICAgIC8qIHNldF9tbV93ZWlnaHR2ZWN0b3IgKi8KLSAgICAoRlRfR2V0X01NX1dlaWdodFZlY3Rvcl9GdW5jKU5VTEwsICAgICAgICAgICAgICAgICAgLyogZ2V0X21tX3dlaWdodHZlY3RvciAqLwotCi0gICAgKEZUX0dldF9WYXJfQmxlbmRfRnVuYykgICAgICB0dF9nZXRfdmFyX2JsZW5kLCAgICAgIC8qIGdldF92YXJfYmxlbmQgICAgICAgKi8KLSAgICAoRlRfRG9uZV9CbGVuZF9GdW5jKSAgICAgICAgIHR0X2RvbmVfYmxlbmQgICAgICAgICAgLyogZG9uZV9ibGVuZCAgICAgICAgICAqLworICAgIChGVF9HZXRfTU1fRnVuYykgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgLyogZ2V0X21tICAgICAgICAgICAgICAgICAgICAqLworICAgIChGVF9TZXRfTU1fRGVzaWduX0Z1bmMpIE5VTEwsICAgICAgICAgICAgICAgICAgLyogc2V0X21tX2Rlc2lnbiAgICAgICAgICAgICAqLworICAgIChGVF9TZXRfTU1fQmxlbmRfRnVuYykgIFRUX1NldF9NTV9CbGVuZCwgICAgICAgLyogc2V0X21tX2JsZW5kICAgICAgICAgICAgICAqLworICAgIChGVF9HZXRfTU1fQmxlbmRfRnVuYykgIFRUX0dldF9NTV9CbGVuZCwgICAgICAgLyogZ2V0X21tX2JsZW5kICAgICAgICAgICAgICAqLworICAgIChGVF9HZXRfTU1fVmFyX0Z1bmMpICAgIFRUX0dldF9NTV9WYXIsICAgICAgICAgLyogZ2V0X21tX3ZhciAgICAgICAgICAgICAgICAqLworICAgIChGVF9TZXRfVmFyX0Rlc2lnbl9GdW5jKVRUX1NldF9WYXJfRGVzaWduLCAgICAgLyogc2V0X3Zhcl9kZXNpZ24gICAgICAgICAgICAqLworICAgIChGVF9HZXRfVmFyX0Rlc2lnbl9GdW5jKVRUX0dldF9WYXJfRGVzaWduLCAgICAgLyogZ2V0X3Zhcl9kZXNpZ24gICAgICAgICAgICAqLworICAgIChGVF9TZXRfSW5zdGFuY2VfRnVuYykgIFRUX1NldF9OYW1lZF9JbnN0YW5jZSwgLyogc2V0X2luc3RhbmNlICAgICAgICAgICAgICAqLworICAgIChGVF9TZXRfTU1fV2VpZ2h0VmVjdG9yX0Z1bmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAvKiBzZXRfbW1fd2VpZ2h0dmVjdG9yICAgICAgICovCisgICAgKEZUX0dldF9NTV9XZWlnaHRWZWN0b3JfRnVuYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgIC8qIGdldF9tbV93ZWlnaHR2ZWN0b3IgICAgICAgKi8KKyAgICAoRlRfVmFyX0xvYWRfRGVsdGFfU2V0X0lkeF9NYXBfRnVuYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dF92YXJfbG9hZF9kZWx0YV9zZXRfaW5kZXhfbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxvYWRfZGVsdGFfc2V0X2lkeF9tYXAgICAgKi8KKyAgICAoRlRfVmFyX0xvYWRfSXRlbV9WYXJfU3RvcmVfRnVuYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dF92YXJfbG9hZF9pdGVtX3ZhcmlhdGlvbl9zdG9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxvYWRfaXRlbV92YXJpYXRpb25fc3RvcmUgKi8KKyAgICAoRlRfVmFyX0dldF9JdGVtX0RlbHRhX0Z1bmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHRfdmFyX2dldF9pdGVtX2RlbHRhLCAvKiBnZXRfaXRlbV9kZWx0YSAgICAgICAgICAgICovCisgICAgKEZUX1Zhcl9Eb25lX0l0ZW1fVmFyX1N0b3JlX0Z1bmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHRfdmFyX2RvbmVfaXRlbV92YXJpYXRpb25fc3RvcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb25lX2l0ZW1fdmFyaWF0aW9uX3N0b3JlICovCisgICAgKEZUX1Zhcl9Eb25lX0RlbHRhX1NldF9JZHhfTWFwX0Z1bmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHRfdmFyX2RvbmVfZGVsdGFfc2V0X2luZGV4X21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvbmVfZGVsdGFfc2V0X2luZGV4X21hcCAgKi8KKyAgICAoRlRfR2V0X1Zhcl9CbGVuZF9GdW5jKSB0dF9nZXRfdmFyX2JsZW5kLCAgICAgIC8qIGdldF92YXJfYmxlbmQgICAgICAgICAgICAgKi8KKyAgICAoRlRfRG9uZV9CbGVuZF9GdW5jKSAgICB0dF9kb25lX2JsZW5kICAgICAgICAgIC8qIGRvbmVfYmxlbmQgICAgICAgICAgICAgICAgKi8KICAgKQogCiAgIEZUX0RFRklORV9TRVJWSUNFX01FVFJJQ1NWQVJJQVRJT05TUkVDKApAQCAtNTM0LDcgKzU0OSw4IEBACiAgICAgKEZUX0JTQl9BZGp1c3RfRnVuYykgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgIC8qIGJzYl9hZGp1c3QgICAgICAqLwogICAgIChGVF9WT3JnX0FkanVzdF9GdW5jKSAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAvKiB2b3JnX2FkanVzdCAgICAgKi8KIAotICAgIChGVF9NZXRyaWNzX0FkanVzdF9GdW5jKSB0dF9hcHBseV9tdmFyICAgICAgICAgICAvKiBtZXRyaWNzX2FkanVzdCAgKi8KKyAgICAoRlRfTWV0cmljc19BZGp1c3RfRnVuYykgdHRfYXBwbHlfbXZhciwgICAgICAgICAgLyogbWV0cmljc19hZGp1c3QgICovCisgICAgKEZUX1NpemVfUmVzZXRfRnVuYykgICAgIHR0X3NpemVfcmVzZXRfaGVpZ2h0ICAgIC8qIHNpemVfcmVzZXQgICAgICAqLwogICApCiAKICNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUICovCmRpZmYgLS1naXQgYS9zcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuaCBiL3NyYy90cnVldHlwZS90dGRyaXZlci5oCmluZGV4IDRlNmQ1MmQuLjc1N2E2NmYgMTAwNjQ0Ci0tLSBhL3NyYy90cnVldHlwZS90dGRyaXZlci5oCisrKyBiL3NyYy90cnVldHlwZS90dGRyaXZlci5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgSGlnaC1sZXZlbCBUcnVlVHlwZSBkcml2ZXIgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvdHJ1ZXR5cGUvdHRlcnJvcnMuaCBiL3NyYy90cnVldHlwZS90dGVycm9ycy5oCmluZGV4IDBjZTI0N2UuLjAwOGVlOTkgMTAwNjQ0Ci0tLSBhL3NyYy90cnVldHlwZS90dGVycm9ycy5oCisrKyBiL3NyYy90cnVldHlwZS90dGVycm9ycy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHJ1ZVR5cGUgZXJyb3IgY29kZXMgKHNwZWNpZmljYXRpb24gb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyBiL3NyYy90cnVldHlwZS90dGdsb2FkLmMKaW5kZXggMTE5NjhmNi4uZDMzYmRhZCAxMDA2NDQKLS0tIGEvc3JjL3RydWV0eXBlL3R0Z2xvYWQuYworKysgYi9zcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHJ1ZVR5cGUgR2x5cGggTG9hZGVyIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC03MzcsMTkgKzczNywxOSBAQAogCiAgICAgICAgIGlmICggc3ViZ2x5cGgtPmZsYWdzICYgV0VfSEFWRV9BX1NDQUxFICkKICAgICAgICAgICBGVF9UUkFDRTcoKCAiICAgICAgc2NhbGluZzogJWZcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgc3ViZ2x5cGgtPnRyYW5zZm9ybS54eCAvIDY1NTM2LjAgKSk7CisgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSlzdWJnbHlwaC0+dHJhbnNmb3JtLnh4IC8gNjU1MzYgKSk7CiAgICAgICAgIGVsc2UgaWYgKCBzdWJnbHlwaC0+ZmxhZ3MgJiBXRV9IQVZFX0FOX1hZX1NDQUxFICkKICAgICAgICAgICBGVF9UUkFDRTcoKCAiICAgICAgc2NhbGluZzogeD0lZiwgeT0lZlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICBzdWJnbHlwaC0+dHJhbnNmb3JtLnh4IC8gNjU1MzYuMCwKLSAgICAgICAgICAgICAgICAgICAgICBzdWJnbHlwaC0+dHJhbnNmb3JtLnl5IC8gNjU1MzYuMCApKTsKKyAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXN1YmdseXBoLT50cmFuc2Zvcm0ueHggLyA2NTUzNiwKKyAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXN1YmdseXBoLT50cmFuc2Zvcm0ueXkgLyA2NTUzNiApKTsKICAgICAgICAgZWxzZSBpZiAoIHN1YmdseXBoLT5mbGFncyAmIFdFX0hBVkVfQV8yWDIgKQogICAgICAgICB7CiAgICAgICAgICAgRlRfVFJBQ0U3KCggIiAgICAgIHNjYWxpbmc6IHh4PSVmLCB5eD0lZlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICBzdWJnbHlwaC0+dHJhbnNmb3JtLnh4IC8gNjU1MzYuMCwKLSAgICAgICAgICAgICAgICAgICAgICBzdWJnbHlwaC0+dHJhbnNmb3JtLnl4IC8gNjU1MzYuMCApKTsKKyAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXN1YmdseXBoLT50cmFuc2Zvcm0ueHggLyA2NTUzNiwKKyAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXN1YmdseXBoLT50cmFuc2Zvcm0ueXggLyA2NTUzNiApKTsKICAgICAgICAgICBGVF9UUkFDRTcoKCAiICAgICAgICAgICAgICAgeHk9JWYsIHl5PSVmXG4iLAotICAgICAgICAgICAgICAgICAgICAgIHN1YmdseXBoLT50cmFuc2Zvcm0ueHkgLyA2NTUzNi4wLAotICAgICAgICAgICAgICAgICAgICAgIHN1YmdseXBoLT50cmFuc2Zvcm0ueXkgLyA2NTUzNi4wICkpOworICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpc3ViZ2x5cGgtPnRyYW5zZm9ybS54eSAvIDY1NTM2LAorICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpc3ViZ2x5cGgtPnRyYW5zZm9ybS55eSAvIDY1NTM2ICkpOwogICAgICAgICB9CiAKICAgICAgICAgc3ViZ2x5cGgrKzsKQEAgLTgwMSw3ICs4MDEsNyBAQAogICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgc3RhcnRfcG9pbnQsCiAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBzdGFydF9jb250b3VyICkKICAgewotICAgIHpvbmUtPm5fcG9pbnRzICAgID0gKEZUX1VTaG9ydClsb2FkLT5vdXRsaW5lLm5fcG9pbnRzIC0KKyAgICB6b25lLT5uX3BvaW50cyAgICA9IChGVF9VU2hvcnQpbG9hZC0+b3V0bGluZS5uX3BvaW50cyArIDQgLQogICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfVVNob3J0KXN0YXJ0X3BvaW50OwogICAgIHpvbmUtPm5fY29udG91cnMgID0gbG9hZC0+b3V0bGluZS5uX2NvbnRvdXJzIC0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX1Nob3J0KXN0YXJ0X2NvbnRvdXI7CkBAIC05NzAsMTEgKzk3MCw2IEBACiAgICAgb3V0bGluZS0+cG9pbnRzW25fcG9pbnRzICsgMl0gPSBsb2FkZXItPnBwMzsKICAgICBvdXRsaW5lLT5wb2ludHNbbl9wb2ludHMgKyAzXSA9IGxvYWRlci0+cHA0OwogCi0gICAgb3V0bGluZS0+dGFnc1tuX3BvaW50cyAgICBdID0gMDsKLSAgICBvdXRsaW5lLT50YWdzW25fcG9pbnRzICsgMV0gPSAwOwotICAgIG91dGxpbmUtPnRhZ3Nbbl9wb2ludHMgKyAyXSA9IDA7Ci0gICAgb3V0bGluZS0+dGFnc1tuX3BvaW50cyArIDNdID0gMDsKLQogICAgIG5fcG9pbnRzICs9IDQ7CiAKICNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCkBAIC05ODUsMjQgKzk4MCw5IEBACiAgICAgICAgIGdvdG8gRXhpdDsKIAogICAgICAgLyogRGVsdGFzIGFwcGx5IHRvIHRoZSB1bnNjYWxlZCBkYXRhLiAqLwotICAgICAgZXJyb3IgPSBUVF9WYXJ5X0FwcGx5X0dseXBoX0RlbHRhcyggbG9hZGVyLT5mYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyLT5nbHlwaF9pbmRleCwKKyAgICAgIGVycm9yID0gVFRfVmFyeV9BcHBseV9HbHlwaF9EZWx0YXMoIGxvYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnJvdW5kZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfVUludCluX3BvaW50cyApOwotCi0gICAgICAvKiByZWNhbGN1bGF0ZSBsaW5lYXIgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgYWR2YW5jZXMgKi8KLSAgICAgIC8qIGlmIHdlIGRvbid0IGhhdmUgSFZBUiBhbmQgVlZBUiwgcmVzcGVjdGl2ZWx5ICAgICAgICAqLwotCi0gICAgICAvKiBYWFg6IGNoYW5nZSBhbGwgRnJlZVR5cGUgbW9kdWxlcyB0byBzdG9yZSBgbGluZWFyJyBhbmQgYHZhZHZhbmNlJyAqLwotICAgICAgLyogICAgICBpbiAyNi42IGZvcm1hdCBiZWZvcmUgdGhlIGBiYXNlJyBtb2R1bGUgc2NhbGVzIHRoZW0gdG8gMTYuMTYgKi8KLSAgICAgIGlmICggISggbG9hZGVyLT5mYWNlLT52YXJpYXRpb25fc3VwcG9ydCAmIFRUX0ZBQ0VfRkxBR19WQVJfSEFEVkFOQ0UgKSApCi0gICAgICAgIGxvYWRlci0+bGluZWFyID0gRlRfUElYX1JPVU5EKCB1bnJvdW5kZWRbbl9wb2ludHMgLSAzXS54IC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucm91bmRlZFtuX3BvaW50cyAtIDRdLnggKSAvIDY0OwotICAgICAgaWYgKCAhKCBsb2FkZXItPmZhY2UtPnZhcmlhdGlvbl9zdXBwb3J0ICYgVFRfRkFDRV9GTEFHX1ZBUl9WQURWQU5DRSApICkKLSAgICAgICAgbG9hZGVyLT52YWR2YW5jZSA9IEZUX1BJWF9ST1VORCggdW5yb3VuZGVkW25fcG9pbnRzIC0gMV0ueCAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucm91bmRlZFtuX3BvaW50cyAtIDJdLnggKSAvIDY0OwotCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnJvdW5kZWQgKTsKICAgICAgIGlmICggZXJyb3IgKQogICAgICAgICBnb3RvIEV4aXQ7CiAgICAgfQpAQCAtMTAxNCw3ICs5OTQsNyBAQAogICAgICAgdHRfcHJlcGFyZV96b25lKCAmbG9hZGVyLT56b25lLCAmZ2xvYWRlci0+Y3VycmVudCwgMCwgMCApOwogCiAgICAgICBGVF9BUlJBWV9DT1BZKCBsb2FkZXItPnpvbmUub3J1cywgbG9hZGVyLT56b25lLmN1ciwKLSAgICAgICAgICAgICAgICAgICAgIGxvYWRlci0+em9uZS5uX3BvaW50cyArIDQgKTsKKyAgICAgICAgICAgICAgICAgICAgIGxvYWRlci0+em9uZS5uX3BvaW50cyApOwogICAgIH0KIAogICAgIHsKQEAgLTExMDQsOCArMTA4NCw4IEBACiAKICAgICAgICAgICBmb3IgKCA7IHZlYyA8IGxpbWl0OyB2ZWMrKywgdSsrICkKICAgICAgICAgICB7Ci0gICAgICAgICAgICB2ZWMtPnggPSAoIEZUX011bEZpeCggdS0+eCwgeF9zY2FsZSApICsgMzIgKSA+PiA2OwotICAgICAgICAgICAgdmVjLT55ID0gKCBGVF9NdWxGaXgoIHUtPnksIHlfc2NhbGUgKSArIDMyICkgPj4gNjsKKyAgICAgICAgICAgIHZlYy0+eCA9IEFERF9MT05HKCBGVF9NdWxGaXgoIHUtPngsIHhfc2NhbGUgKSwgMzIgKSA+PiA2OworICAgICAgICAgICAgdmVjLT55ID0gQUREX0xPTkcoIEZUX011bEZpeCggdS0+eSwgeV9zY2FsZSApLCAzMiApID4+IDY7CiAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UKQEAgLTExNTYsMTEgKzExMzYsNyBAQAogICAgIH0KIAogICAgIGlmICggSVNfSElOVEVEKCBsb2FkZXItPmxvYWRfZmxhZ3MgKSApCi0gICAgewotICAgICAgbG9hZGVyLT56b25lLm5fcG9pbnRzICs9IDQ7Ci0KICAgICAgIGVycm9yID0gVFRfSGludF9HbHlwaCggbG9hZGVyLCAwICk7Ci0gICAgfQogCiAjaWZkZWYgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVAogICBFeGl0OgpAQCAtMTIyOCw4ICsxMjA0LDggQEAKICAgICAgIHAxID0gZ2xvYWRlci0+YmFzZS5vdXRsaW5lLnBvaW50cyArIGs7CiAgICAgICBwMiA9IGdsb2FkZXItPmJhc2Uub3V0bGluZS5wb2ludHMgKyBsOwogCi0gICAgICB4ID0gcDEtPnggLSBwMi0+eDsKLSAgICAgIHkgPSBwMS0+eSAtIHAyLT55OworICAgICAgeCA9IFNVQl9MT05HKCBwMS0+eCwgcDItPnggKTsKKyAgICAgIHkgPSBTVUJfTE9ORyggcDEtPnksIHAyLT55ICk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0xMzczLDExICsxMzQ5LDYgQEAKICAgICBvdXRsaW5lLT5wb2ludHNbb3V0bGluZS0+bl9wb2ludHMgKyAyXSA9IGxvYWRlci0+cHAzOwogICAgIG91dGxpbmUtPnBvaW50c1tvdXRsaW5lLT5uX3BvaW50cyArIDNdID0gbG9hZGVyLT5wcDQ7CiAKLSAgICBvdXRsaW5lLT50YWdzW291dGxpbmUtPm5fcG9pbnRzICAgIF0gPSAwOwotICAgIG91dGxpbmUtPnRhZ3Nbb3V0bGluZS0+bl9wb2ludHMgKyAxXSA9IDA7Ci0gICAgb3V0bGluZS0+dGFnc1tvdXRsaW5lLT5uX3BvaW50cyArIDJdID0gMDsKLSAgICBvdXRsaW5lLT50YWdzW291dGxpbmUtPm5fcG9pbnRzICsgM10gPSAwOwotCiAjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCiAKICAgICB7CkBAIC0xNDM2LDExICsxNDA3LDkgQEAKIAogICAgIC8qIFNvbWUgcG9pbnRzIGFyZSBsaWtlbHkgdG91Y2hlZCBkdXJpbmcgZXhlY3V0aW9uIG9mICAqLwogICAgIC8qIGluc3RydWN0aW9ucyBvbiBjb21wb25lbnRzLiAgU28gbGV0J3MgdW50b3VjaCB0aGVtLiAqLwotICAgIGZvciAoIGkgPSAwOyBpIDwgbG9hZGVyLT56b25lLm5fcG9pbnRzOyBpKysgKQorICAgIGZvciAoIGkgPSAwOyBpIDwgbG9hZGVyLT56b25lLm5fcG9pbnRzIC0gNFU7IGkrKyApCiAgICAgICBsb2FkZXItPnpvbmUudGFnc1tpXSAmPSB+RlRfQ1VSVkVfVEFHX1RPVUNIX0JPVEg7CiAKLSAgICBsb2FkZXItPnpvbmUubl9wb2ludHMgKz0gNDsKLQogICAgIHJldHVybiBUVF9IaW50X0dseXBoKCBsb2FkZXIsIDEgKTsKICAgfQogCkBAIC0xNzYxLDU3ICsxNzMwLDI5IEBACiAgICAgICAgIC8qIGEgc21hbGwgb3V0bGluZSBzdHJ1Y3R1cmUgd2l0aCBmb3VyIGVsZW1lbnRzIGZvciAqLwogICAgICAgICAvKiBjb21tdW5pY2F0aW9uIHdpdGggYFRUX1ZhcnlfQXBwbHlfR2x5cGhfRGVsdGFzJyAgKi8KICAgICAgICAgRlRfVmVjdG9yICAgcG9pbnRzWzRdOwotICAgICAgICBjaGFyICAgICAgICB0YWdzWzRdICAgICA9IHsgMSwgMSwgMSwgMSB9OwotICAgICAgICBzaG9ydCAgICAgICBjb250b3Vyc1s0XSA9IHsgMCwgMSwgMiwgMyB9OwogICAgICAgICBGVF9PdXRsaW5lICBvdXRsaW5lOwogCiAgICAgICAgIC8qIHVucm91bmRlZCB2YWx1ZXMgKi8KICAgICAgICAgRlRfVmVjdG9yICB1bnJvdW5kZWRbNF0gPSB7IHswLCAwfSwgezAsIDB9LCB7MCwgMH0sIHswLCAwfSB9OwogCiAKLSAgICAgICAgcG9pbnRzWzBdLnggPSBsb2FkZXItPnBwMS54OwotICAgICAgICBwb2ludHNbMF0ueSA9IGxvYWRlci0+cHAxLnk7Ci0gICAgICAgIHBvaW50c1sxXS54ID0gbG9hZGVyLT5wcDIueDsKLSAgICAgICAgcG9pbnRzWzFdLnkgPSBsb2FkZXItPnBwMi55OworICAgICAgICBwb2ludHNbMF0gPSBsb2FkZXItPnBwMTsKKyAgICAgICAgcG9pbnRzWzFdID0gbG9hZGVyLT5wcDI7CisgICAgICAgIHBvaW50c1syXSA9IGxvYWRlci0+cHAzOworICAgICAgICBwb2ludHNbM10gPSBsb2FkZXItPnBwNDsKIAotICAgICAgICBwb2ludHNbMl0ueCA9IGxvYWRlci0+cHAzLng7Ci0gICAgICAgIHBvaW50c1syXS55ID0gbG9hZGVyLT5wcDMueTsKLSAgICAgICAgcG9pbnRzWzNdLnggPSBsb2FkZXItPnBwNC54OwotICAgICAgICBwb2ludHNbM10ueSA9IGxvYWRlci0+cHA0Lnk7Ci0KLSAgICAgICAgb3V0bGluZS5uX3BvaW50cyAgID0gNDsKLSAgICAgICAgb3V0bGluZS5uX2NvbnRvdXJzID0gNDsKKyAgICAgICAgb3V0bGluZS5uX3BvaW50cyAgID0gMDsKKyAgICAgICAgb3V0bGluZS5uX2NvbnRvdXJzID0gMDsKICAgICAgICAgb3V0bGluZS5wb2ludHMgICAgID0gcG9pbnRzOwotICAgICAgICBvdXRsaW5lLnRhZ3MgICAgICAgPSB0YWdzOwotICAgICAgICBvdXRsaW5lLmNvbnRvdXJzICAgPSBjb250b3VyczsKKyAgICAgICAgb3V0bGluZS50YWdzICAgICAgID0gTlVMTDsKKyAgICAgICAgb3V0bGluZS5jb250b3VycyAgID0gTlVMTDsKIAogICAgICAgICAvKiB0aGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgc2NhbGluZyAqLwotICAgICAgICBlcnJvciA9IFRUX1ZhcnlfQXBwbHlfR2x5cGhfRGVsdGFzKCBsb2FkZXItPmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoX2luZGV4LAorICAgICAgICBlcnJvciA9IFRUX1ZhcnlfQXBwbHlfR2x5cGhfRGVsdGFzKCBsb2FkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnJvdW5kZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9VSW50KW91dGxpbmUubl9wb2ludHMgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5yb3VuZGVkICk7CiAgICAgICAgIGlmICggZXJyb3IgKQogICAgICAgICAgIGdvdG8gRXhpdDsKLQotICAgICAgICBsb2FkZXItPnBwMS54ID0gcG9pbnRzWzBdLng7Ci0gICAgICAgIGxvYWRlci0+cHAxLnkgPSBwb2ludHNbMF0ueTsKLSAgICAgICAgbG9hZGVyLT5wcDIueCA9IHBvaW50c1sxXS54OwotICAgICAgICBsb2FkZXItPnBwMi55ID0gcG9pbnRzWzFdLnk7Ci0KLSAgICAgICAgbG9hZGVyLT5wcDMueCA9IHBvaW50c1syXS54OwotICAgICAgICBsb2FkZXItPnBwMy55ID0gcG9pbnRzWzJdLnk7Ci0gICAgICAgIGxvYWRlci0+cHA0LnggPSBwb2ludHNbM10ueDsKLSAgICAgICAgbG9hZGVyLT5wcDQueSA9IHBvaW50c1szXS55OwotCi0gICAgICAgIC8qIHJlY2FsY3VsYXRlIGxpbmVhciBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBhZHZhbmNlcyAqLwotICAgICAgICAvKiBpZiB3ZSBkb24ndCBoYXZlIEhWQVIgYW5kIFZWQVIsIHJlc3BlY3RpdmVseSAgICAgICAgKi8KLSAgICAgICAgaWYgKCAhKCBsb2FkZXItPmZhY2UtPnZhcmlhdGlvbl9zdXBwb3J0ICYgVFRfRkFDRV9GTEFHX1ZBUl9IQURWQU5DRSApICkKLSAgICAgICAgICBsb2FkZXItPmxpbmVhciA9IEZUX1BJWF9ST1VORCggdW5yb3VuZGVkWzFdLnggLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnJvdW5kZWRbMF0ueCApIC8gNjQ7Ci0gICAgICAgIGlmICggISggbG9hZGVyLT5mYWNlLT52YXJpYXRpb25fc3VwcG9ydCAmIFRUX0ZBQ0VfRkxBR19WQVJfVkFEVkFOQ0UgKSApCi0gICAgICAgICAgbG9hZGVyLT52YWR2YW5jZSA9IEZUX1BJWF9ST1VORCggdW5yb3VuZGVkWzNdLnggLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucm91bmRlZFsyXS54ICkgLyA2NDsKICAgICAgIH0KIAogI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQgKi8KQEAgLTE5NTksMTcgKzE5MDAsMTYgQEAKIAogICAgICAgICAvKiBjb25zdHJ1Y3QgYW4gb3V0bGluZSBzdHJ1Y3R1cmUgZm9yICAgICAgICAgICAgICAqLwogICAgICAgICAvKiBjb21tdW5pY2F0aW9uIHdpdGggYFRUX1ZhcnlfQXBwbHlfR2x5cGhfRGVsdGFzJyAqLwotICAgICAgICBvdXRsaW5lLm5fcG9pbnRzICAgPSAoc2hvcnQpKCBnbG9hZGVyLT5jdXJyZW50Lm51bV9zdWJnbHlwaHMgKyA0ICk7Ci0gICAgICAgIG91dGxpbmUubl9jb250b3VycyA9IG91dGxpbmUubl9wb2ludHM7CisgICAgICAgIG91dGxpbmUubl9jb250b3VycyA9IG91dGxpbmUubl9wb2ludHMgPSBsaW1pdDsKIAogICAgICAgICBvdXRsaW5lLnBvaW50cyAgID0gTlVMTDsKICAgICAgICAgb3V0bGluZS50YWdzICAgICA9IE5VTEw7CiAgICAgICAgIG91dGxpbmUuY29udG91cnMgPSBOVUxMOwogCi0gICAgICAgIGlmICggRlRfTkVXX0FSUkFZKCBwb2ludHMsIG91dGxpbmUubl9wb2ludHMgKSAgICB8fAotICAgICAgICAgICAgIEZUX05FV19BUlJBWSggdGFncywgb3V0bGluZS5uX3BvaW50cyApICAgICAgfHwKLSAgICAgICAgICAgICBGVF9ORVdfQVJSQVkoIGNvbnRvdXJzLCBvdXRsaW5lLm5fcG9pbnRzICkgIHx8Ci0gICAgICAgICAgICAgRlRfTkVXX0FSUkFZKCB1bnJvdW5kZWQsIG91dGxpbmUubl9wb2ludHMgKSApCisgICAgICAgIGlmICggRlRfTkVXX0FSUkFZKCBwb2ludHMsIGxpbWl0ICsgNCApICAgIHx8CisgICAgICAgICAgICAgRlRfTkVXX0FSUkFZKCB0YWdzLCBsaW1pdCArIDQgKSAgICAgIHx8CisgICAgICAgICAgICAgRlRfTkVXX0FSUkFZKCBjb250b3VycywgbGltaXQgKyA0ICkgIHx8CisgICAgICAgICAgICAgRlRfTkVXX0FSUkFZKCB1bnJvdW5kZWQsIGxpbWl0ICsgNCApICkKICAgICAgICAgICBnb3RvIEV4aXQxOwogCiAgICAgICAgIHN1YmdseXBoID0gZ2xvYWRlci0+Y3VycmVudC5zdWJnbHlwaHM7CkBAIC0xOTg1LDI4ICsxOTI1LDEwIEBACiAgICAgICAgICAgY29udG91cnNbaV0gPSBpOwogICAgICAgICB9CiAKLSAgICAgICAgcG9pbnRzW2ldLnggPSBsb2FkZXItPnBwMS54OwotICAgICAgICBwb2ludHNbaV0ueSA9IGxvYWRlci0+cHAxLnk7Ci0gICAgICAgIHRhZ3NbaV0gICAgID0gMTsKLSAgICAgICAgY29udG91cnNbaV0gPSBpOwotCi0gICAgICAgIGkrKzsKLSAgICAgICAgcG9pbnRzW2ldLnggPSBsb2FkZXItPnBwMi54OwotICAgICAgICBwb2ludHNbaV0ueSA9IGxvYWRlci0+cHAyLnk7Ci0gICAgICAgIHRhZ3NbaV0gICAgID0gMTsKLSAgICAgICAgY29udG91cnNbaV0gPSBpOwotCi0gICAgICAgIGkrKzsKLSAgICAgICAgcG9pbnRzW2ldLnggPSBsb2FkZXItPnBwMy54OwotICAgICAgICBwb2ludHNbaV0ueSA9IGxvYWRlci0+cHAzLnk7Ci0gICAgICAgIHRhZ3NbaV0gICAgID0gMTsKLSAgICAgICAgY29udG91cnNbaV0gPSBpOwotCi0gICAgICAgIGkrKzsKLSAgICAgICAgcG9pbnRzW2ldLnggPSBsb2FkZXItPnBwNC54OwotICAgICAgICBwb2ludHNbaV0ueSA9IGxvYWRlci0+cHA0Lnk7Ci0gICAgICAgIHRhZ3NbaV0gICAgID0gMTsKLSAgICAgICAgY29udG91cnNbaV0gPSBpOworICAgICAgICBwb2ludHNbaSsrXSA9IGxvYWRlci0+cHAxOworICAgICAgICBwb2ludHNbaSsrXSA9IGxvYWRlci0+cHAyOworICAgICAgICBwb2ludHNbaSsrXSA9IGxvYWRlci0+cHAzOworICAgICAgICBwb2ludHNbaSAgXSA9IGxvYWRlci0+cHA0OwogCiAgICAgICAgIG91dGxpbmUucG9pbnRzICAgPSBwb2ludHM7CiAgICAgICAgIG91dGxpbmUudGFncyAgICAgPSB0YWdzOwpAQCAtMjAxNCwxMiArMTkzNiw5IEBACiAKICAgICAgICAgLyogdGhpcyBjYWxsIHByb3ZpZGVzIGFkZGl0aW9uYWwgb2Zmc2V0cyAqLwogICAgICAgICAvKiBmb3IgZWFjaCBjb21wb25lbnQncyB0cmFuc2xhdGlvbiAgICAgICovCi0gICAgICAgIGlmICggRlRfU0VUX0VSUk9SKCBUVF9WYXJ5X0FwcGx5X0dseXBoX0RlbHRhcygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnJvdW5kZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9VSW50KW91dGxpbmUubl9wb2ludHMgKSApICkKKyAgICAgICAgaWYgKCBGVF9TRVRfRVJST1IoIFRUX1ZhcnlfQXBwbHlfR2x5cGhfRGVsdGFzKCBsb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5yb3VuZGVkICkgKSApCiAgICAgICAgICAgZ290byBFeGl0MTsKIAogICAgICAgICBzdWJnbHlwaCA9IGdsb2FkZXItPmN1cnJlbnQuc3ViZ2x5cGhzOwpAQCAtMjAzMywyNyArMTk1Miw2IEBACiAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgbG9hZGVyLT5wcDEueCA9IHBvaW50c1tpICsgMF0ueDsKLSAgICAgICAgbG9hZGVyLT5wcDEueSA9IHBvaW50c1tpICsgMF0ueTsKLSAgICAgICAgbG9hZGVyLT5wcDIueCA9IHBvaW50c1tpICsgMV0ueDsKLSAgICAgICAgbG9hZGVyLT5wcDIueSA9IHBvaW50c1tpICsgMV0ueTsKLQotICAgICAgICBsb2FkZXItPnBwMy54ID0gcG9pbnRzW2kgKyAyXS54OwotICAgICAgICBsb2FkZXItPnBwMy55ID0gcG9pbnRzW2kgKyAyXS55OwotICAgICAgICBsb2FkZXItPnBwNC54ID0gcG9pbnRzW2kgKyAzXS54OwotICAgICAgICBsb2FkZXItPnBwNC55ID0gcG9pbnRzW2kgKyAzXS55OwotCi0gICAgICAgIC8qIHJlY2FsY3VsYXRlIGxpbmVhciBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBhZHZhbmNlcyAqLwotICAgICAgICAvKiBpZiB3ZSBkb24ndCBoYXZlIEhWQVIgYW5kIFZWQVIsIHJlc3BlY3RpdmVseSAgICAgICAgKi8KLSAgICAgICAgaWYgKCAhKCBmYWNlLT52YXJpYXRpb25fc3VwcG9ydCAmIFRUX0ZBQ0VfRkxBR19WQVJfSEFEVkFOQ0UgKSApCi0gICAgICAgICAgbG9hZGVyLT5saW5lYXIgPQotICAgICAgICAgICAgRlRfUElYX1JPVU5EKCB1bnJvdW5kZWRbb3V0bGluZS5uX3BvaW50cyAtIDNdLnggLQotICAgICAgICAgICAgICAgICAgICAgICAgICB1bnJvdW5kZWRbb3V0bGluZS5uX3BvaW50cyAtIDRdLnggKSAvIDY0OwotICAgICAgICBpZiAoICEoIGZhY2UtPnZhcmlhdGlvbl9zdXBwb3J0ICYgVFRfRkFDRV9GTEFHX1ZBUl9WQURWQU5DRSApICkKLSAgICAgICAgICBsb2FkZXItPnZhZHZhbmNlID0KLSAgICAgICAgICAgIEZUX1BJWF9ST1VORCggdW5yb3VuZGVkW291dGxpbmUubl9wb2ludHMgLSAxXS54IC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5yb3VuZGVkW291dGxpbmUubl9wb2ludHMgLSAyXS54ICkgLyA2NDsKLQogICAgICAgRXhpdDE6CiAgICAgICAgIEZUX0ZSRUUoIG91dGxpbmUucG9pbnRzICk7CiAgICAgICAgIEZUX0ZSRUUoIG91dGxpbmUudGFncyApOwpAQCAtMjIyOSwxNiArMjEyNywxMSBAQAogICBjb21wdXRlX2dseXBoX21ldHJpY3MoIFRUX0xvYWRlciAgbG9hZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgZ2x5cGhfaW5kZXggKQogICB7Ci0gICAgVFRfRmFjZSAgICBmYWNlICAgPSBsb2FkZXItPmZhY2U7Ci0jaWYgZGVmaW5lZCBUVF9TVVBQT1JUX1NVQlBJWEVMX0hJTlRJTkdfSU5GSU5BTElUWSB8fCBcCi0gICAgZGVmaW5lZCBUVF9TVVBQT1JUX1NVQlBJWEVMX0hJTlRJTkdfTUlOSU1BTAotICAgIFRUX0RyaXZlciAgZHJpdmVyID0gKFRUX0RyaXZlcilGVF9GQUNFX0RSSVZFUiggZmFjZSApOwotI2VuZGlmCi0KKyAgICBUVF9GYWNlICAgICAgIGZhY2UgID0gbG9hZGVyLT5mYWNlOworICAgIFRUX1NpemUgICAgICAgc2l6ZSAgPSBsb2FkZXItPnNpemU7CisgICAgVFRfR2x5cGhTbG90ICBnbHlwaCA9IGxvYWRlci0+Z2x5cGg7CiAgICAgRlRfQkJveCAgICAgICBiYm94OwogICAgIEZUX0ZpeGVkICAgICAgeV9zY2FsZTsKLSAgICBUVF9HbHlwaFNsb3QgIGdseXBoID0gbG9hZGVyLT5nbHlwaDsKLSAgICBUVF9TaXplICAgICAgIHNpemUgID0gbG9hZGVyLT5zaXplOwogCiAKICAgICB5X3NjYWxlID0gMHgxMDAwMEw7CkBAIC0yMjU2LDUzICsyMTQ5LDEwIEBACiAKICAgICBnbHlwaC0+bWV0cmljcy5ob3JpQmVhcmluZ1ggPSBiYm94LnhNaW47CiAgICAgZ2x5cGgtPm1ldHJpY3MuaG9yaUJlYXJpbmdZID0gYmJveC55TWF4OwotICAgIGdseXBoLT5tZXRyaWNzLmhvcmlBZHZhbmNlICA9IFNVQl9MT05HKGxvYWRlci0+cHAyLngsIGxvYWRlci0+cHAxLngpOwotCi0gICAgLyogQWRqdXN0IGFkdmFuY2Ugd2lkdGggdG8gdGhlIHZhbHVlIGNvbnRhaW5lZCBpbiB0aGUgaGRteCB0YWJsZSAgICovCi0gICAgLyogdW5sZXNzIEZUX0xPQURfQ09NUFVURV9NRVRSSUNTIGlzIHNldCBvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovCi0gICAgLyogbW9kZSBvZiB0aGUgdjQwIGludGVycHJldGVyIGlzIGFjdGl2ZS4gIFNlZSBgdHRpbnRlcnAuaCcgZm9yICAgICovCi0gICAgLyogZGV0YWlscyBvbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG1vZGUuICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgaWYgKAotI2lmZGVmIFRUX1NVUFBPUlRfU1VCUElYRUxfSElOVElOR19NSU5JTUFMCi0gICAgICAgICAhKCBkcml2ZXItPmludGVycHJldGVyX3ZlcnNpb24gPT0gVFRfSU5URVJQUkVURVJfVkVSU0lPTl80MCAgJiYKLSAgICAgICAgICAgICggbG9hZGVyLT5leGVjICYmIGxvYWRlci0+ZXhlYy0+YmFja3dhcmRfY29tcGF0aWJpbGl0eSAgKSApICYmCi0jZW5kaWYKLSAgICAgICAgICFmYWNlLT5wb3N0c2NyaXB0LmlzRml4ZWRQaXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCi0gICAgICAgICBJU19ISU5URUQoIGxvYWRlci0+bG9hZF9mbGFncyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgotICAgICAgICAgISggbG9hZGVyLT5sb2FkX2ZsYWdzICYgRlRfTE9BRF9DT01QVVRFX01FVFJJQ1MgKSAgICAgICAgICAgICAgKQotICAgIHsKLSAgICAgIEZUX0J5dGUqICB3aWR0aHA7Ci0KLQotICAgICAgd2lkdGhwID0gdHRfZmFjZV9nZXRfZGV2aWNlX21ldHJpY3MoIGZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS0+bWV0cmljcy0+eF9wcGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoX2luZGV4ICk7Ci0KLSNpZmRlZiBUVF9TVVBQT1JUX1NVQlBJWEVMX0hJTlRJTkdfSU5GSU5BTElUWQotCi0gICAgICBpZiAoIGRyaXZlci0+aW50ZXJwcmV0ZXJfdmVyc2lvbiA9PSBUVF9JTlRFUlBSRVRFUl9WRVJTSU9OXzM4ICkKLSAgICAgIHsKLSAgICAgICAgRlRfQm9vbCAgaWdub3JlX3hfbW9kZTsKLQotCi0gICAgICAgIGlnbm9yZV94X21vZGUgPSBGVF9CT09MKCBGVF9MT0FEX1RBUkdFVF9NT0RFKCBsb2FkZXItPmxvYWRfZmxhZ3MgKSAhPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUkVOREVSX01PREVfTU9OTyApOwotCi0gICAgICAgIGlmICggd2lkdGhwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKLSAgICAgICAgICAgICAoICggaWdub3JlX3hfbW9kZSAmJiBsb2FkZXItPmV4ZWMtPmNvbXBhdGlibGVfd2lkdGhzICkgfHwKLSAgICAgICAgICAgICAgICAhaWdub3JlX3hfbW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKLSAgICAgICAgICAgICAgICBTUEhfT1BUSU9OX0JJVE1BUF9XSURUSFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSApCi0gICAgICAgICAgZ2x5cGgtPm1ldHJpY3MuaG9yaUFkdmFuY2UgPSAqd2lkdGhwICogNjQ7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0KLSNlbmRpZiAvKiBUVF9TVVBQT1JUX1NVQlBJWEVMX0hJTlRJTkdfSU5GSU5BTElUWSAqLwotCi0gICAgICB7Ci0gICAgICAgIGlmICggd2lkdGhwICkKLSAgICAgICAgICBnbHlwaC0+bWV0cmljcy5ob3JpQWR2YW5jZSA9ICp3aWR0aHAgKiA2NDsKLSAgICAgIH0KLSAgICB9CisgICAgaWYgKCBsb2FkZXItPndpZHRocCApCisgICAgICBnbHlwaC0+bWV0cmljcy5ob3JpQWR2YW5jZSA9IGxvYWRlci0+d2lkdGhwW2dseXBoX2luZGV4XSAqIDY0OworICAgIGVsc2UKKyAgICAgIGdseXBoLT5tZXRyaWNzLmhvcmlBZHZhbmNlID0gU1VCX0xPTkcoIGxvYWRlci0+cHAyLngsIGxvYWRlci0+cHAxLnggKTsKIAogICAgIC8qIHNldCBnbHlwaCBkaW1lbnNpb25zICovCiAgICAgZ2x5cGgtPm1ldHJpY3Mud2lkdGggID0gU1VCX0xPTkcoIGJib3gueE1heCwgYmJveC54TWluICk7CkBAIC0yNDE5LDE3ICsyMjY5LDEzIEBACiAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBnbHlwaF9pbmRleCwKICAgICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgICAgIGxvYWRfZmxhZ3MgKQogICB7Ci0gICAgVFRfRmFjZSAgICAgICAgICAgICBmYWNlOwotICAgIFNGTlRfU2VydmljZSAgICAgICAgc2ZudDsKLSAgICBGVF9TdHJlYW0gICAgICAgICAgIHN0cmVhbTsKKyAgICBUVF9GYWNlICAgICAgICAgICAgIGZhY2UgICA9IChUVF9GYWNlKWdseXBoLT5mYWNlOworICAgIFNGTlRfU2VydmljZSAgICAgICAgc2ZudCAgID0gKFNGTlRfU2VydmljZSlmYWNlLT5zZm50OworICAgIEZUX1N0cmVhbSAgICAgICAgICAgc3RyZWFtID0gZmFjZS0+cm9vdC5zdHJlYW07CiAgICAgRlRfRXJyb3IgICAgICAgICAgICBlcnJvcjsKICAgICBUVF9TQml0X01ldHJpY3NSZWMgIHNiaXRfbWV0cmljczsKIAogCi0gICAgZmFjZSAgID0gKFRUX0ZhY2UpZ2x5cGgtPmZhY2U7Ci0gICAgc2ZudCAgID0gKFNGTlRfU2VydmljZSlmYWNlLT5zZm50OwotICAgIHN0cmVhbSA9IGZhY2UtPnJvb3Quc3RyZWFtOwotCiAgICAgZXJyb3IgPSBzZm50LT5sb2FkX3NiaXRfaW1hZ2UoIGZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUtPnN0cmlrZV9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhfaW5kZXgsCkBAIC0yNDgwLDIyICsyMzI2LDE5IEBACiAgICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgICAgIGxvYWRfZmxhZ3MsCiAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgIGdseWZfdGFibGVfb25seSApCiAgIHsKLSAgICBUVF9GYWNlICAgIGZhY2U7Ci0gICAgRlRfU3RyZWFtICBzdHJlYW07CisgICAgVFRfRmFjZSAgICBmYWNlICAgPSAoVFRfRmFjZSlnbHlwaC0+ZmFjZTsKKyAgICBGVF9TdHJlYW0gIHN0cmVhbSA9IGZhY2UtPnJvb3Quc3RyZWFtOwogCiAjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCiAgICAgRlRfRXJyb3IgICBlcnJvcjsKICAgICBGVF9Cb29sICAgIHBlZGFudGljID0gRlRfQk9PTCggbG9hZF9mbGFncyAmIEZUX0xPQURfUEVEQU5USUMgKTsKICNpZiBkZWZpbmVkIFRUX1NVUFBPUlRfU1VCUElYRUxfSElOVElOR19JTkZJTkFMSVRZIHx8IFwKICAgICBkZWZpbmVkIFRUX1NVUFBPUlRfU1VCUElYRUxfSElOVElOR19NSU5JTUFMCi0gICAgVFRfRHJpdmVyICBkcml2ZXIgPSAoVFRfRHJpdmVyKUZUX0ZBQ0VfRFJJVkVSKCAoVFRfRmFjZSlnbHlwaC0+ZmFjZSApOworICAgIFRUX0RyaXZlciAgZHJpdmVyICAgPSAoVFRfRHJpdmVyKUZUX0ZBQ0VfRFJJVkVSKCBnbHlwaC0+ZmFjZSApOwogI2VuZGlmCiAjZW5kaWYKIAogCi0gICAgZmFjZSAgID0gKFRUX0ZhY2UpZ2x5cGgtPmZhY2U7Ci0gICAgc3RyZWFtID0gZmFjZS0+cm9vdC5zdHJlYW07Ci0KICAgICBGVF9aRVJPKCBsb2FkZXIgKTsKIAogI2lmZGVmIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUgpAQCAtMjczNSwxMiArMjU3OCw1OCBAQAogICAgICAgLyogbm90ZSB0aGF0IHRoaXMgZmxhZyBjYW4gYWxzbyBiZSBtb2RpZmllZCBpbiBhIGdseXBoJ3MgYnl0ZWNvZGUgKi8KICAgICAgIGlmICggZHJpdmVyLT5pbnRlcnByZXRlcl92ZXJzaW9uID09IFRUX0lOVEVSUFJFVEVSX1ZFUlNJT05fMzggJiYKICAgICAgICAgICAgZXhlYy0+R1MuaW5zdHJ1Y3RfY29udHJvbCAmIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICBleGVjLT5pZ25vcmVfeF9tb2RlID0gMDsKLSNlbmRpZgorICAgICAgICBleGVjLT5pZ25vcmVfeF9tb2RlID0gRkFMU0U7CisjZW5kaWYgLyogVFRfU1VQUE9SVF9TVUJQSVhFTF9ISU5USU5HX0lORklOQUxJVFkgKi8KKworI2lmZGVmIFRUX1NVUFBPUlRfU1VCUElYRUxfSElOVElOR19NSU5JTUFMCisgICAgICAvKgorICAgICAgICogVG9nZ2xlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYWNjb3JkaW5nIHRvIHdoYXQgZm9udCB3YW50cywgZXhjZXB0CisgICAgICAgKiB3aGVuCisgICAgICAgKgorICAgICAgICogMSkgd2UgaGF2ZSBhIGB0cmlja3knIGZvbnQgdGhhdCBoZWF2aWx5IHJlbGllcyBvbiB0aGUgaW50ZXJwcmV0ZXIgdG8KKyAgICAgICAqICAgIHJlbmRlciBnbHlwaHMgY29ycmVjdGx5LCBmb3IgZXhhbXBsZSBERkthaS1TQiwgb3IKKyAgICAgICAqIDIpIEZUX1JFTkRFUl9NT0RFX01PTk8gKGkuZSwgbW9ub2Nob21lIHJlbmRlcmluZykgaXMgcmVxdWVzdGVkLgorICAgICAgICoKKyAgICAgICAqIEluIHRob3NlIGNhc2VzLCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG5lZWRzIHRvIGJlIHR1cm5lZCBvZmYgdG8gZ2V0CisgICAgICAgKiBjb3JyZWN0IHJlbmRlcmluZy4gIFRoZSByZW5kZXJpbmcgaXMgdGhlbiBjb21wbGV0ZWx5IHVwIHRvIHRoZQorICAgICAgICogZm9udCdzIHByb2dyYW1taW5nLgorICAgICAgICoKKyAgICAgICAqLworICAgICAgaWYgKCBkcml2ZXItPmludGVycHJldGVyX3ZlcnNpb24gPT0gVFRfSU5URVJQUkVURVJfVkVSU0lPTl80MCAmJgorICAgICAgICAgICBzdWJwaXhlbF9oaW50aW5nX2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAhRlRfSVNfVFJJQ0tZKCBnbHlwaC0+ZmFjZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIGV4ZWMtPmJhY2t3YXJkX2NvbXBhdGliaWxpdHkgPSAhKCBleGVjLT5HUy5pbnN0cnVjdF9jb250cm9sICYgNCApOworICAgICAgZWxzZQorICAgICAgICBleGVjLT5iYWNrd2FyZF9jb21wYXRpYmlsaXR5ID0gRkFMU0U7CisjZW5kaWYgLyogVFRfU1VQUE9SVF9TVUJQSVhFTF9ISU5USU5HX01JTklNQUwgKi8KIAogICAgICAgZXhlYy0+cGVkYW50aWNfaGludGluZyA9IEZUX0JPT0woIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX1BFREFOVElDICk7CiAgICAgICBsb2FkZXItPmV4ZWMgPSBleGVjOwogICAgICAgbG9hZGVyLT5pbnN0cnVjdGlvbnMgPSBleGVjLT5nbHlwaEluczsKKworICAgICAgLyogVXNlIHRoZSBoZG14IHRhYmxlIGlmIGFueSB1bmxlc3MgRlRfTE9BRF9DT01QVVRFX01FVFJJQ1MgKi8KKyAgICAgIC8qIGlzIHNldCBvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG1vZGUgb2YgdGhlIHYzOCBvciB2NDAgICovCisgICAgICAvKiBpbnRlcnByZXRlcnMgaXMgYWN0aXZlLiAgU2VlIGB0dGludGVycC5oJyBmb3IgZGV0YWlscyBvbiAqLworICAgICAgLyogYmFja3dhcmQgY29tcGF0aWJpbGl0eSBtb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIGlmICggSVNfSElOVEVEKCBsb2FkZXItPmxvYWRfZmxhZ3MgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgISggbG9hZGVyLT5sb2FkX2ZsYWdzICYgRlRfTE9BRF9DT01QVVRFX01FVFJJQ1MgKSAgICAgICAgICAgICAgJiYKKyNpZmRlZiBUVF9TVVBQT1JUX1NVQlBJWEVMX0hJTlRJTkdfTUlOSU1BTAorICAgICAgICAgICAhKCBkcml2ZXItPmludGVycHJldGVyX3ZlcnNpb24gPT0gVFRfSU5URVJQUkVURVJfVkVSU0lPTl80MCAgJiYKKyAgICAgICAgICAgICAgZXhlYy0+YmFja3dhcmRfY29tcGF0aWJpbGl0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgJiYKKyNlbmRpZgorI2lmZGVmIFRUX1NVUFBPUlRfU1VCUElYRUxfSElOVElOR19JTkZJTkFMSVRZCisgICAgICAgICAgICEoIGRyaXZlci0+aW50ZXJwcmV0ZXJfdmVyc2lvbiA9PSBUVF9JTlRFUlBSRVRFUl9WRVJTSU9OXzM4ICAmJgorICAgICAgICAgICAgICAhU1BIX09QVElPTl9CSVRNQVBfV0lEVEhTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgRlRfTE9BRF9UQVJHRVRfTU9ERSggbG9hZGVyLT5sb2FkX2ZsYWdzICkgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1JFTkRFUl9NT0RFX01PTk8gICYmCisgICAgICAgICAgICAgIGV4ZWMtPmNvbXBhdGlibGVfd2lkdGhzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApICYmCisjZW5kaWYKKyAgICAgICAgICAgIWZhY2UtPnBvc3RzY3JpcHQuaXNGaXhlZFBpdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgeworICAgICAgICBsb2FkZXItPndpZHRocCA9IHNpemUtPndpZHRocDsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgbG9hZGVyLT53aWR0aHAgPSBOVUxMOwogICAgIH0KIAogI2VuZGlmIC8qIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUiAqLwpAQCAtMjc4OCwxMSArMjY3NywxMiBAQAogICAgKiAgIEEgZnVuY3Rpb24gdXNlZCB0byBsb2FkIGEgc2luZ2xlIGdseXBoIHdpdGhpbiBhIGdpdmVuIGdseXBoIHNsb3QsCiAgICAqICAgZm9yIGEgZ2l2ZW4gc2l6ZS4KICAgICoKLSAgICogQElucHV0OgorICAgKiBASW5PdXQ6CiAgICAqICAgZ2x5cGggOjoKICAgICogICAgIEEgaGFuZGxlIHRvIGEgdGFyZ2V0IHNsb3Qgb2JqZWN0IHdoZXJlIHRoZSBnbHlwaAogICAgKiAgICAgd2lsbCBiZSBsb2FkZWQuCiAgICAqCisgICAqIEBJbnB1dDoKICAgICogICBzaXplIDo6CiAgICAqICAgICBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2Ugc2l6ZSBhdCB3aGljaCB0aGUgZ2x5cGgKICAgICogICAgIG11c3QgYmUgc2NhbGVkL2xvYWRlZC4KQEAgLTI4MTYsNiArMjcwNiw3IEBACiAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgZ2x5cGhfaW5kZXgsCiAgICAgICAgICAgICAgICAgIEZUX0ludDMyICAgICAgbG9hZF9mbGFncyApCiAgIHsKKyAgICBUVF9GYWNlICAgICAgIGZhY2UgPSAoVFRfRmFjZSlnbHlwaC0+ZmFjZTsKICAgICBGVF9FcnJvciAgICAgIGVycm9yOwogICAgIFRUX0xvYWRlclJlYyAgbG9hZGVyOwogCkBAIC0yODQwLDggKzI3MzEsNiBAQAogICAgICAgICAvKiBpZiB3ZSBoYXZlIGEgYml0bWFwLW9ubHkgZm9udCwgcmV0dXJuIGFuIGVtcHR5IGdseXBoICAgICAgICAgICAgKi8KICAgICAgICAgaWYgKCAhRlRfSVNfU0NBTEFCTEUoIGdseXBoLT5mYWNlICkgKQogICAgICAgICB7Ci0gICAgICAgICAgVFRfRmFjZSAgZmFjZSA9IChUVF9GYWNlKWdseXBoLT5mYWNlOwotCiAgICAgICAgICAgRlRfU2hvcnQgIGxlZnRfYmVhcmluZyA9IDA7CiAgICAgICAgICAgRlRfU2hvcnQgIHRvcF9iZWFyaW5nICA9IDA7CiAKQEAgLTI4OTcsNyArMjc4Niw4IEBACiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7Ci0gICAgICAgIGlmICggRlRfSVNfU0NBTEFCTEUoIGdseXBoLT5mYWNlICkgKQorICAgICAgICBpZiAoIEZUX0lTX1NDQUxBQkxFKCBnbHlwaC0+ZmFjZSApIHx8CisgICAgICAgICAgICAgRlRfSEFTX1NCSVgoIGdseXBoLT5mYWNlICkgICAgKQogICAgICAgICB7CiAgICAgICAgICAgLyogZm9yIHRoZSBiYm94IHdlIG5lZWQgdGhlIGhlYWRlciBvbmx5ICovCiAgICAgICAgICAgKHZvaWQpdHRfbG9hZGVyX2luaXQoICZsb2FkZXIsIHNpemUsIGdseXBoLCBsb2FkX2ZsYWdzLCBUUlVFICk7CkBAIC0yOTA2LDYgKzI3OTYsMzUgQEAKICAgICAgICAgICBnbHlwaC0+bGluZWFySG9yaUFkdmFuY2UgPSBsb2FkZXIubGluZWFyOwogICAgICAgICAgIGdseXBoLT5saW5lYXJWZXJ0QWR2YW5jZSA9IGxvYWRlci52YWR2YW5jZTsKIAorICAgICAgICAgIC8qIEJpdG1hcHMgZnJvbSB0aGUgJ3NiaXgnIHRhYmxlIG5lZWQgc3BlY2lhbCB0cmVhdG1lbnQ6ICAqLworICAgICAgICAgIC8qIGlmIHRoZXJlIGlzIGEgZ2x5cGggY29udG91ciwgdGhlIGJpdG1hcCBvcmlnaW4gbXVzdCBiZSAqLworICAgICAgICAgIC8qIHNoaWZ0ZWQgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIGxvd2VyIGxlZnQgY29ybmVyIG9mIHRoZSAqLworICAgICAgICAgIC8qIGdseXBoIGJvdW5kaW5nIGJveCwgYWxzbyB0YWtpbmcgdGhlIGxlZnQtc2lkZSBiZWFyaW5nICAqLworICAgICAgICAgIC8qIChvciB0b3AgYmVhcmluZykgaW50byBhY2NvdW50LiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIGlmICggZmFjZS0+c2JpdF90YWJsZV90eXBlID09IFRUX1NCSVRfVEFCTEVfVFlQRV9TQklYICYmCisgICAgICAgICAgICAgICBsb2FkZXIubl9jb250b3VycyA+IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX0ludCAgYml0bWFwX2xlZnQ7CisgICAgICAgICAgICBGVF9JbnQgIGJpdG1hcF90b3A7CisKKworICAgICAgICAgICAgaWYgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9WRVJUSUNBTF9MQVlPVVQgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBUaGlzIGlzIGEgZ3Vlc3MsIHNpbmNlIEFwcGxlJ3MgQ29yZVRleHQgZW5naW5lIGRvZXNuJ3QgKi8KKyAgICAgICAgICAgICAgLyogcmVhbGx5IGRvIHZlcnRpY2FsIHR5cGVzZXR0aW5nLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgIGJpdG1hcF9sZWZ0ID0gbG9hZGVyLmJib3gueE1pbjsKKyAgICAgICAgICAgICAgYml0bWFwX3RvcCAgPSBsb2FkZXIudG9wX2JlYXJpbmc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGJpdG1hcF9sZWZ0ID0gbG9hZGVyLmxlZnRfYmVhcmluZzsKKyAgICAgICAgICAgICAgYml0bWFwX3RvcCAgPSBsb2FkZXIuYmJveC55TWluOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnbHlwaC0+Yml0bWFwX2xlZnQgKz0gRlRfTXVsRml4KCBiaXRtYXBfbGVmdCwgeF9zY2FsZSApID4+IDY7CisgICAgICAgICAgICBnbHlwaC0+Yml0bWFwX3RvcCAgKz0gRlRfTXVsRml4KCBiaXRtYXBfdG9wLCAgeV9zY2FsZSApID4+IDY7CisgICAgICAgICAgfQorCiAgICAgICAgICAgLyogc2FuaXR5IGNoZWNrczogaWYgYHh4eEFkdmFuY2UnIGluIHRoZSBzYml0IG1ldHJpYyAqLwogICAgICAgICAgIC8qIHN0cnVjdHVyZSBpc24ndCBzZXQsIHVzZSBgbGluZWFyWFhYQWR2YW5jZScgICAgICAqLwogICAgICAgICAgIGlmICggIWdseXBoLT5tZXRyaWNzLmhvcmlBZHZhbmNlICYmIGdseXBoLT5saW5lYXJIb3JpQWR2YW5jZSApCkBAIC0yOTIwLDYgKzI4MzksMTIgQEAKICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX1NCSVRTX09OTFkgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKICNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX0VNQkVEREVEX0JJVE1BUFMgKi8KIAogICAgIC8qIGlmIEZUX0xPQURfTk9fU0NBTEUgaXMgbm90IHNldCwgYHR0bWV0cmljcycgbXVzdCBiZSB2YWxpZCAqLwpAQCAtMjkyOSwxNiArMjg1NCw3NyBAQAogICAgICAgZ290byBFeGl0OwogICAgIH0KIAotICAgIGlmICggbG9hZF9mbGFncyAmIEZUX0xPQURfU0JJVFNfT05MWSApCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9TVkcKKworICAgIC8qIGNoZWNrIGZvciBPVC1TVkcgKi8KKyAgICBpZiAoICggbG9hZF9mbGFncyAmIEZUX0xPQURfQ09MT1IgKSAmJiBmYWNlLT5zdmcgKQorICAgIHsKKyAgICAgIFNGTlRfU2VydmljZSAgc2ZudCA9IChTRk5UX1NlcnZpY2UpZmFjZS0+c2ZudDsKKworCisgICAgICBGVF9UUkFDRTMoKCAiVHJ5aW5nIHRvIGxvYWQgU1ZHIGdseXBoXG4iICkpOworCisgICAgICBlcnJvciA9IHNmbnQtPmxvYWRfc3ZnX2RvYyggZ2x5cGgsIGdseXBoX2luZGV4ICk7CisgICAgICBpZiAoICFlcnJvciApCisgICAgICB7CisgICAgICAgIEZUX0ZpeGVkICB4X3NjYWxlID0gc2l6ZS0+cm9vdC5tZXRyaWNzLnhfc2NhbGU7CisgICAgICAgIEZUX0ZpeGVkICB5X3NjYWxlID0gc2l6ZS0+cm9vdC5tZXRyaWNzLnlfc2NhbGU7CisKKyAgICAgICAgRlRfU2hvcnQgICBsZWZ0QmVhcmluZzsKKyAgICAgICAgRlRfU2hvcnQgICB0b3BCZWFyaW5nOworICAgICAgICBGVF9VU2hvcnQgIGFkdmFuY2VYOworICAgICAgICBGVF9VU2hvcnQgIGFkdmFuY2VZOworCisKKyAgICAgICAgRlRfVFJBQ0UzKCggIlN1Y2Nlc3NmdWxseSBsb2FkZWQgU1ZHIGdseXBoXG4iICkpOworCisgICAgICAgIGdseXBoLT5mb3JtYXQgPSBGVF9HTFlQSF9GT1JNQVRfU1ZHOworCisgICAgICAgIHNmbnQtPmdldF9tZXRyaWNzKCBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZWZ0QmVhcmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZHZhbmNlWCApOworICAgICAgICBzZm50LT5nZXRfbWV0cmljcyggZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0b3BCZWFyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFkdmFuY2VZICk7CisKKyAgICAgICAgZ2x5cGgtPmxpbmVhckhvcmlBZHZhbmNlID0gYWR2YW5jZVg7CisgICAgICAgIGdseXBoLT5saW5lYXJWZXJ0QWR2YW5jZSA9IGFkdmFuY2VZOworCisgICAgICAgIGdseXBoLT5tZXRyaWNzLmhvcmlBZHZhbmNlID0gRlRfTXVsRml4KCBhZHZhbmNlWCwgeF9zY2FsZSApOworICAgICAgICBnbHlwaC0+bWV0cmljcy52ZXJ0QWR2YW5jZSA9IEZUX011bEZpeCggYWR2YW5jZVksIHlfc2NhbGUgKTsKKworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICB9CisKKyAgICAgIEZUX1RSQUNFMygoICJGYWlsZWQgdG8gbG9hZCBTVkcgZ2x5cGhcbiIgKSk7CisgICAgfQorCisgICAgLyogcmV0dXJuIGltbWVkaWF0ZWx5IGlmIHdlIG9ubHkgd2FudCBTVkcgZ2x5cGhzICovCisgICAgaWYgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9TVkdfT05MWSApCiAgICAgewogICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOwogICAgICAgZ290byBFeGl0OwogICAgIH0KIAorI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fU1ZHICovCisKICAgICBlcnJvciA9IHR0X2xvYWRlcl9pbml0KCAmbG9hZGVyLCBzaXplLCBnbHlwaCwgbG9hZF9mbGFncywgRkFMU0UgKTsKICAgICBpZiAoIGVycm9yICkKICAgICAgIGdvdG8gRXhpdDsKIAorICAgIC8qIGRvbmUgaWYgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgYGhkbXhgIGFkdmFuY2UgKi8KKyAgICBpZiAoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX0FEVkFOQ0VfT05MWSAgICAgICAgICYmCisgICAgICAgICAhKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9WRVJUSUNBTF9MQVlPVVQgKSAmJgorICAgICAgICAgbG9hZGVyLndpZHRocCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgIHsKKyAgICAgIGdseXBoLT5tZXRyaWNzLmhvcmlBZHZhbmNlID0gbG9hZGVyLndpZHRocFtnbHlwaF9pbmRleF0gKiA2NDsKKyAgICAgIGdvdG8gRG9uZTsKKyAgICB9CisKICAgICBnbHlwaC0+Zm9ybWF0ICAgICAgICA9IEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FOwogICAgIGdseXBoLT5udW1fc3ViZ2x5cGhzID0gMDsKICAgICBnbHlwaC0+b3V0bGluZS5mbGFncyA9IDA7CkBAIC0zMDE3LDYgKzMwMDMsNyBAQAogICAgICAgICAgICAgICAgIGdseXBoLT5vdXRsaW5lLm5fcG9pbnRzLAogICAgICAgICAgICAgICAgIGdseXBoLT5vdXRsaW5lLmZsYWdzICkpOwogCisgIERvbmU6CiAgICAgdHRfbG9hZGVyX2RvbmUoICZsb2FkZXIgKTsKIAogICBFeGl0OgpkaWZmIC0tZ2l0IGEvc3JjL3RydWV0eXBlL3R0Z2xvYWQuaCBiL3NyYy90cnVldHlwZS90dGdsb2FkLmgKaW5kZXggNzhmZGVhYS4uZjE4NjM3ZCAxMDA2NDQKLS0tIGEvc3JjL3RydWV0eXBlL3R0Z2xvYWQuaAorKysgYi9zcmMvdHJ1ZXR5cGUvdHRnbG9hZC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHJ1ZVR5cGUgR2x5cGggTG9hZGVyIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvdHJ1ZXR5cGUvdHRneHZhci5jIGIvc3JjL3RydWV0eXBlL3R0Z3h2YXIuYwppbmRleCA3ZjJkYjBjLi5kOTgzZTllIDEwMDY0NAotLS0gYS9zcmMvdHJ1ZXR5cGUvdHRneHZhci5jCisrKyBiL3NyYy90cnVldHlwZS90dGd4dmFyLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUcnVlVHlwZSBHWCBGb250IFZhcmlhdGlvbiBsb2FkZXIKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIFdlcm5lciBMZW1iZXJnLCBhbmQgR2VvcmdlIFdpbGxpYW1zLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxmdDJidWlsZC5oPgogI2luY2x1ZGUgPGZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaD4KICNpbmNsdWRlIEZUX0NPTkZJR19DT05GSUdfSAorI2luY2x1ZGUgPGZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oPgogI2luY2x1ZGUgPGZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmg+CiAjaW5jbHVkZSA8ZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oPgogI2luY2x1ZGUgPGZyZWV0eXBlL3R0dGFncy5oPgpAQCAtMTUxLDkgKzE1Miw3IEBACiAgICAgRlRfVUludCAgICBpLCBqOwogICAgIEZUX1VTaG9ydCAgZmlyc3Q7CiAgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBzdHJlYW0tPm1lbW9yeTsKLSAgICBGVF9FcnJvciAgIGVycm9yICA9IEZUX0Vycl9PazsKLQotICAgIEZUX1VOVVNFRCggZXJyb3IgKTsKKyAgICBGVF9FcnJvciAgIGVycm9yOwogCiAKICAgICAqcG9pbnRfY250ID0gMDsKQEAgLTI2Niw5ICsyNjUsNyBAQAogICAgIEZUX1VJbnQgICAgaSwgajsKICAgICBGVF9VSW50ICAgIGJ5dGVzX3VzZWQ7CiAgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBzdHJlYW0tPm1lbW9yeTsKLSAgICBGVF9FcnJvciAgIGVycm9yICA9IEZUX0Vycl9PazsKLQotICAgIEZUX1VOVVNFRCggZXJyb3IgKTsKKyAgICBGVF9FcnJvciAgIGVycm9yOwogCiAKICAgICBpZiAoIEZUX1FORVdfQVJSQVkoIGRlbHRhcywgZGVsdGFfY250ICkgKQpAQCAtMzU3LDE3ICszNTQsMjQgQEAKICAgc3RhdGljIHZvaWQKICAgZnRfdmFyX2xvYWRfYXZhciggVFRfRmFjZSAgZmFjZSApCiAgIHsKLSAgICBGVF9TdHJlYW0gICAgICAgc3RyZWFtID0gRlRfRkFDRV9TVFJFQU0oIGZhY2UgKTsKLSAgICBGVF9NZW1vcnkgICAgICAgbWVtb3J5ID0gc3RyZWFtLT5tZW1vcnk7CisgICAgRlRfRXJyb3IgICBlcnJvcjsKKyAgICBGVF9TdHJlYW0gIHN0cmVhbSA9IEZUX0ZBQ0VfU1RSRUFNKCBmYWNlICk7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBzdHJlYW0tPm1lbW9yeTsKKyAgICBGVF9JbnQgICAgIGksIGo7CisKICAgICBHWF9CbGVuZCAgICAgICAgYmxlbmQgID0gZmFjZS0+YmxlbmQ7CiAgICAgR1hfQVZhclNlZ21lbnQgIHNlZ21lbnQ7Ci0gICAgRlRfRXJyb3IgICAgICAgIGVycm9yID0gRlRfRXJyX09rOwotICAgIEZUX0xvbmcgICAgICAgICB2ZXJzaW9uOwotICAgIEZUX0xvbmcgICAgICAgICBheGlzQ291bnQ7Ci0gICAgRlRfSW50ICAgICAgICAgIGksIGo7Ci0gICAgRlRfVUxvbmcgICAgICAgIHRhYmxlX2xlbjsKKyAgICBHWF9BVmFyVGFibGUgICAgdGFibGU7CiAKLSAgICBGVF9VTlVTRUQoIGVycm9yICk7CisgICAgRlRfTG9uZyAgIHZlcnNpb247CisgICAgRlRfTG9uZyAgIGF4aXNDb3VudDsKKyAgICBGVF9VTG9uZyAgdGFibGVfbGVuOworCisjaWZuZGVmIFRUX0NPTkZJR19PUFRJT05fTk9fQk9SSU5HX0VYUEFOU0lPTgorICAgIEZUX1VMb25nICB0YWJsZV9vZmZzZXQ7CisgICAgRlRfVUxvbmcgIHN0b3JlX29mZnNldDsKKyAgICBGVF9VTG9uZyAgYXhpc01hcF9vZmZzZXQ7CisjZW5kaWYKIAogCiAgICAgRlRfVFJBQ0UyKCggIkFWQVIgIiApKTsKQEAgLTM4MCwxMyArMzg0LDIxIEBACiAgICAgICByZXR1cm47CiAgICAgfQogCisjaWZuZGVmIFRUX0NPTkZJR19PUFRJT05fTk9fQk9SSU5HX0VYUEFOU0lPTgorICAgIHRhYmxlX29mZnNldCA9IEZUX1NUUkVBTV9QT1MoKTsKKyNlbmRpZgorCiAgICAgaWYgKCBGVF9GUkFNRV9FTlRFUiggdGFibGVfbGVuICkgKQogICAgICAgcmV0dXJuOwogCiAgICAgdmVyc2lvbiAgID0gRlRfR0VUX0xPTkcoKTsKICAgICBheGlzQ291bnQgPSBGVF9HRVRfTE9ORygpOwogCi0gICAgaWYgKCB2ZXJzaW9uICE9IDB4MDAwMTAwMDBMICkKKyAgICBpZiAoIHZlcnNpb24gIT0gMHgwMDAxMDAwMEwKKyNpZm5kZWYgVFRfQ09ORklHX09QVElPTl9OT19CT1JJTkdfRVhQQU5TSU9OCisgICAgICAgICAmJiB2ZXJzaW9uICE9IDB4MDAwMjAwMDBMCisjZW5kaWYKKyAgICAgICApCiAgICAgewogICAgICAgRlRfVFJBQ0UyKCggImJhZCB0YWJsZSB2ZXJzaW9uXG4iICkpOwogICAgICAgZ290byBFeGl0OwpAQCAtNDAyLDEwICs0MTQsMTQgQEAKICAgICAgIGdvdG8gRXhpdDsKICAgICB9CiAKLSAgICBpZiAoIEZUX1FORVdfQVJSQVkoIGJsZW5kLT5hdmFyX3NlZ21lbnQsIGF4aXNDb3VudCApICkKKyAgICBpZiAoIEZUX05FVyggYmxlbmQtPmF2YXJfdGFibGUgKSApCisgICAgICBnb3RvIEV4aXQ7CisgICAgdGFibGUgPSBibGVuZC0+YXZhcl90YWJsZTsKKworICAgIGlmICggRlRfUU5FV19BUlJBWSggdGFibGUtPmF2YXJfc2VnbWVudCwgYXhpc0NvdW50ICkgKQogICAgICAgZ290byBFeGl0OwogCi0gICAgc2VnbWVudCA9ICZibGVuZC0+YXZhcl9zZWdtZW50WzBdOworICAgIHNlZ21lbnQgPSAmdGFibGUtPmF2YXJfc2VnbWVudFswXTsKICAgICBmb3IgKCBpID0gMDsgaSA8IGF4aXNDb3VudDsgaSsrLCBzZWdtZW50KysgKQogICAgIHsKICAgICAgIEZUX1RSQUNFNSgoICIgIGF4aXMgJWQ6XG4iLCBpICkpOwpAQCAtNDE4LDEwICs0MzQsOSBAQAogICAgICAgICAvKiBpdCByaWdodCBub3cgc2luY2UgbG9hZGluZyB0aGUgYGF2YXInIHRhYmxlIGlzIG9wdGlvbmFsLiAgICovCiAKICAgICAgICAgZm9yICggaiA9IGkgLSAxOyBqID49IDA7IGotLSApCi0gICAgICAgICAgRlRfRlJFRSggYmxlbmQtPmF2YXJfc2VnbWVudFtqXS5jb3JyZXNwb25kZW5jZSApOworICAgICAgICAgIEZUX0ZSRUUoIHRhYmxlLT5hdmFyX3NlZ21lbnRbal0uY29ycmVzcG9uZGVuY2UgKTsKIAotICAgICAgICBGVF9GUkVFKCBibGVuZC0+YXZhcl9zZWdtZW50ICk7Ci0gICAgICAgIGJsZW5kLT5hdmFyX3NlZ21lbnQgPSBOVUxMOworICAgICAgICBGVF9GUkVFKCB0YWJsZS0+YXZhcl9zZWdtZW50ICk7CiAgICAgICAgIGdvdG8gRXhpdDsKICAgICAgIH0KIApAQCAtNDMzLDIwICs0NDgsNTEgQEAKICAgICAgICAgICBGVF9mZG90MTRUb0ZpeGVkKCBGVF9HRVRfU0hPUlQoKSApOwogCiAgICAgICAgIEZUX1RSQUNFNSgoICIgICAgbWFwcGluZyAlLjVmIHRvICUuNWZcbiIsCi0gICAgICAgICAgICAgICAgICAgIHNlZ21lbnQtPmNvcnJlc3BvbmRlbmNlW2pdLmZyb21Db29yZCAvIDY1NTM2LjAsCi0gICAgICAgICAgICAgICAgICAgIHNlZ21lbnQtPmNvcnJlc3BvbmRlbmNlW2pdLnRvQ29vcmQgLyA2NTUzNi4wICkpOworICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXNlZ21lbnQtPmNvcnJlc3BvbmRlbmNlW2pdLmZyb21Db29yZCAvIDY1NTM2LAorICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXNlZ21lbnQtPmNvcnJlc3BvbmRlbmNlW2pdLnRvQ29vcmQgLyA2NTUzNiApKTsKICAgICAgIH0KIAogICAgICAgRlRfVFJBQ0U1KCggIlxuIiApKTsKICAgICB9CiAKKyNpZm5kZWYgVFRfQ09ORklHX09QVElPTl9OT19CT1JJTkdfRVhQQU5TSU9OCisgICAgaWYgKCB2ZXJzaW9uIDwgMHgwMDAyMDAwMEwgKQorICAgICAgZ290byBFeGl0OworCisgICAgYXhpc01hcF9vZmZzZXQgPSBGVF9HRVRfVUxPTkcoKTsKKyAgICBzdG9yZV9vZmZzZXQgICA9IEZUX0dFVF9VTE9ORygpOworCisgICAgaWYgKCBzdG9yZV9vZmZzZXQgKQorICAgIHsKKyAgICAgIGVycm9yID0gdHRfdmFyX2xvYWRfaXRlbV92YXJpYXRpb25fc3RvcmUoCisgICAgICAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICB0YWJsZV9vZmZzZXQgKyBzdG9yZV9vZmZzZXQsCisgICAgICAgICAgICAgICAgJnRhYmxlLT5pdGVtU3RvcmUgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgaWYgKCBheGlzTWFwX29mZnNldCApCisgICAgeworICAgICAgZXJyb3IgPSB0dF92YXJfbG9hZF9kZWx0YV9zZXRfaW5kZXhfbWFwcGluZygKKyAgICAgICAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgIHRhYmxlX29mZnNldCArIGF4aXNNYXBfb2Zmc2V0LAorICAgICAgICAgICAgICAgICZ0YWJsZS0+YXhpc01hcCwKKyAgICAgICAgICAgICAgICAmdGFibGUtPml0ZW1TdG9yZSwKKyAgICAgICAgICAgICAgICB0YWJsZV9sZW4gKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisgICAgfQorI2VuZGlmCisKKwogICBFeGl0OgogICAgIEZUX0ZSQU1FX0VYSVQoKTsKICAgfQogCiAKLSAgc3RhdGljIEZUX0Vycm9yCi0gIGZ0X3Zhcl9sb2FkX2l0ZW1fdmFyaWF0aW9uX3N0b3JlKCBUVF9GYWNlICAgICAgICAgIGZhY2UsCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF92YXJfbG9hZF9pdGVtX3ZhcmlhdGlvbl9zdG9yZSggVFRfRmFjZSAgICAgICAgICBmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICAgICBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHWF9JdGVtVmFyU3RvcmUgIGl0ZW1TdG9yZSApCiAgIHsKQEAgLTQ1NiwxMyArNTAyLDE1IEBACiAgICAgRlRfRXJyb3IgICBlcnJvcjsKICAgICBGVF9VU2hvcnQgIGZvcm1hdDsKICAgICBGVF9VTG9uZyAgIHJlZ2lvbl9vZmZzZXQ7Ci0gICAgRlRfVUludCAgICBpLCBqLCBrOwotICAgIEZUX1VJbnQgICAgd29yZERlbHRhQ291bnQ7Ci0gICAgRlRfQm9vbCAgICBsb25nX3dvcmRzOwogCi0gICAgR1hfQmxlbmQgICAgICAgIGJsZW5kID0gZmFjZS0+YmxlbmQ7Ci0gICAgR1hfSXRlbVZhckRhdGEgIHZhckRhdGE7CisgICAgRlRfVUludCAgICBkYXRhX2NvdW50OworICAgIEZUX1VTaG9ydCAgYXhpc19jb3VudDsKKyAgICBGVF9VSW50ICAgIHJlZ2lvbl9jb3VudDsKIAorICAgIEZUX1VJbnQgIGksIGosIGs7CisgICAgRlRfQm9vbCAgbG9uZ193b3JkczsKKworICAgIEdYX0JsZW5kICAgYmxlbmQgICAgICAgICAgID0gZmFjZS0+YmxlbmQ7CiAgICAgRlRfVUxvbmcqICBkYXRhT2Zmc2V0QXJyYXkgPSBOVUxMOwogCiAKQEAgLTQ3MiwzMSArNTIwLDMxIEBACiAKICAgICBpZiAoIGZvcm1hdCAhPSAxICkKICAgICB7Ci0gICAgICBGVF9UUkFDRTIoKCAiZnRfdmFyX2xvYWRfaXRlbV92YXJpYXRpb25fc3RvcmU6IGJhZCBzdG9yZSBmb3JtYXQgJWRcbiIsCisgICAgICBGVF9UUkFDRTIoKCAidHRfdmFyX2xvYWRfaXRlbV92YXJpYXRpb25fc3RvcmU6IGJhZCBzdG9yZSBmb3JtYXQgJWRcbiIsCiAgICAgICAgICAgICAgICAgICBmb3JtYXQgKSk7CiAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1RhYmxlICk7CiAgICAgICBnb3RvIEV4aXQ7CiAgICAgfQogCiAgICAgLyogcmVhZCB0b3AgbGV2ZWwgZmllbGRzICovCi0gICAgaWYgKCBGVF9SRUFEX1VMT05HKCByZWdpb25fb2Zmc2V0ICkgICAgICAgICB8fAotICAgICAgICAgRlRfUkVBRF9VU0hPUlQoIGl0ZW1TdG9yZS0+ZGF0YUNvdW50ICkgKQorICAgIGlmICggRlRfUkVBRF9VTE9ORyggcmVnaW9uX29mZnNldCApIHx8CisgICAgICAgICBGVF9SRUFEX1VTSE9SVCggZGF0YV9jb3VudCApICAgKQogICAgICAgZ290byBFeGl0OwogCiAgICAgLyogd2UgbmVlZCBhdCBsZWFzdCBvbmUgZW50cnkgaW4gYGl0ZW1TdG9yZS0+dmFyRGF0YScgKi8KLSAgICBpZiAoICFpdGVtU3RvcmUtPmRhdGFDb3VudCApCisgICAgaWYgKCAhZGF0YV9jb3VudCApCiAgICAgewotICAgICAgRlRfVFJBQ0UyKCggImZ0X3Zhcl9sb2FkX2l0ZW1fdmFyaWF0aW9uX3N0b3JlOiBtaXNzaW5nIHZhckRhdGFcbiIgKSk7CisgICAgICBGVF9UUkFDRTIoKCAidHRfdmFyX2xvYWRfaXRlbV92YXJpYXRpb25fc3RvcmU6IG1pc3NpbmcgdmFyRGF0YVxuIiApKTsKICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfVGFibGUgKTsKICAgICAgIGdvdG8gRXhpdDsKICAgICB9CiAKICAgICAvKiBtYWtlIHRlbXBvcmFyeSBjb3B5IG9mIGl0ZW0gdmFyaWF0aW9uIGRhdGEgb2Zmc2V0czsgKi8KICAgICAvKiB3ZSB3aWxsIHBhcnNlIHJlZ2lvbiBsaXN0IGZpcnN0LCB0aGVuIGNvbWUgYmFjayAgICAgKi8KLSAgICBpZiAoIEZUX1FORVdfQVJSQVkoIGRhdGFPZmZzZXRBcnJheSwgaXRlbVN0b3JlLT5kYXRhQ291bnQgKSApCisgICAgaWYgKCBGVF9RTkVXX0FSUkFZKCBkYXRhT2Zmc2V0QXJyYXksIGRhdGFfY291bnQgKSApCiAgICAgICBnb3RvIEV4aXQ7CiAKLSAgICBmb3IgKCBpID0gMDsgaSA8IGl0ZW1TdG9yZS0+ZGF0YUNvdW50OyBpKysgKQorICAgIGZvciAoIGkgPSAwOyBpIDwgZGF0YV9jb3VudDsgaSsrICkKICAgICB7CiAgICAgICBpZiAoIEZUX1JFQURfVUxPTkcoIGRhdGFPZmZzZXRBcnJheVtpXSApICkKICAgICAgICAgZ290byBFeGl0OwpAQCAtNTA2LDM5ICs1NTQsNDAgQEAKICAgICBpZiAoIEZUX1NUUkVBTV9TRUVLKCBvZmZzZXQgKyByZWdpb25fb2Zmc2V0ICkgKQogICAgICAgZ290byBFeGl0OwogCi0gICAgaWYgKCBGVF9SRUFEX1VTSE9SVCggaXRlbVN0b3JlLT5heGlzQ291bnQgKSAgIHx8Ci0gICAgICAgICBGVF9SRUFEX1VTSE9SVCggaXRlbVN0b3JlLT5yZWdpb25Db3VudCApICkKKyAgICBpZiAoIEZUX1JFQURfVVNIT1JUKCBheGlzX2NvdW50ICkgICB8fAorICAgICAgICAgRlRfUkVBRF9VU0hPUlQoIHJlZ2lvbl9jb3VudCApICkKICAgICAgIGdvdG8gRXhpdDsKIAotICAgIGlmICggaXRlbVN0b3JlLT5heGlzQ291bnQgIT0gKEZUX0xvbmcpYmxlbmQtPm1tdmFyLT5udW1fYXhpcyApCisgICAgaWYgKCBheGlzX2NvdW50ICE9IChGVF9Mb25nKWJsZW5kLT5tbXZhci0+bnVtX2F4aXMgKQogICAgIHsKLSAgICAgIEZUX1RSQUNFMigoICJmdF92YXJfbG9hZF9pdGVtX3ZhcmlhdGlvbl9zdG9yZToiCisgICAgICBGVF9UUkFDRTIoKCAidHRfdmFyX2xvYWRfaXRlbV92YXJpYXRpb25fc3RvcmU6IgogICAgICAgICAgICAgICAgICAgIiBudW1iZXIgb2YgYXhlcyBpbiBpdGVtIHZhcmlhdGlvbiBzdG9yZVxuIiApKTsKICAgICAgIEZUX1RSQUNFMigoICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAiIGFuZCBgZnZhcicgdGFibGUgYXJlIGRpZmZlcmVudFxuIiApKTsKICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfVGFibGUgKTsKICAgICAgIGdvdG8gRXhpdDsKICAgICB9CisgICAgaXRlbVN0b3JlLT5heGlzQ291bnQgPSBheGlzX2NvdW50OwogCiAgICAgLyogbmV3IGNvbnN0cmFpbnQgaW4gT3BlblR5cGUgMS44LjQgKi8KLSAgICBpZiAoIGl0ZW1TdG9yZS0+cmVnaW9uQ291bnQgPj0gMzI3NjhVICkKKyAgICBpZiAoIHJlZ2lvbl9jb3VudCA+PSAzMjc2OFUgKQogICAgIHsKLSAgICAgIEZUX1RSQUNFMigoICJmdF92YXJfbG9hZF9pdGVtX3ZhcmlhdGlvbl9zdG9yZToiCisgICAgICBGVF9UUkFDRTIoKCAidHRfdmFyX2xvYWRfaXRlbV92YXJpYXRpb25fc3RvcmU6IgogICAgICAgICAgICAgICAgICAgIiB0b28gbWFueSB2YXJpYXRpb24gcmVnaW9uIHRhYmxlc1xuIiApKTsKICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfVGFibGUgKTsKICAgICAgIGdvdG8gRXhpdDsKICAgICB9CiAKLSAgICBpZiAoIEZUX05FV19BUlJBWSggaXRlbVN0b3JlLT52YXJSZWdpb25MaXN0LCBpdGVtU3RvcmUtPnJlZ2lvbkNvdW50ICkgKQorICAgIGlmICggRlRfTkVXX0FSUkFZKCBpdGVtU3RvcmUtPnZhclJlZ2lvbkxpc3QsIHJlZ2lvbl9jb3VudCApICkKICAgICAgIGdvdG8gRXhpdDsKKyAgICBpdGVtU3RvcmUtPnJlZ2lvbkNvdW50ID0gcmVnaW9uX2NvdW50OwogCiAgICAgZm9yICggaSA9IDA7IGkgPCBpdGVtU3RvcmUtPnJlZ2lvbkNvdW50OyBpKysgKQogICAgIHsKICAgICAgIEdYX0F4aXNDb29yZHMgIGF4aXNDb29yZHM7CiAKIAotICAgICAgaWYgKCBGVF9ORVdfQVJSQVkoIGl0ZW1TdG9yZS0+dmFyUmVnaW9uTGlzdFtpXS5heGlzTGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtU3RvcmUtPmF4aXNDb3VudCApICkKKyAgICAgIGlmICggRlRfTkVXX0FSUkFZKCBpdGVtU3RvcmUtPnZhclJlZ2lvbkxpc3RbaV0uYXhpc0xpc3QsIGF4aXNfY291bnQgKSApCiAgICAgICAgIGdvdG8gRXhpdDsKIAogICAgICAgYXhpc0Nvb3JkcyA9IGl0ZW1TdG9yZS0+dmFyUmVnaW9uTGlzdFtpXS5heGlzTGlzdDsKQEAgLTU2Miw0NyArNjExLDUzIEBACiAgICAgLyogZW5kIG9mIHJlZ2lvbiBsaXN0IHBhcnNlICovCiAKICAgICAvKiB1c2UgZGF0YU9mZnNldEFycmF5IG5vdyB0byBwYXJzZSB2YXJEYXRhIGl0ZW1zICovCi0gICAgaWYgKCBGVF9ORVdfQVJSQVkoIGl0ZW1TdG9yZS0+dmFyRGF0YSwgaXRlbVN0b3JlLT5kYXRhQ291bnQgKSApCisgICAgaWYgKCBGVF9ORVdfQVJSQVkoIGl0ZW1TdG9yZS0+dmFyRGF0YSwgZGF0YV9jb3VudCApICkKICAgICAgIGdvdG8gRXhpdDsKKyAgICBpdGVtU3RvcmUtPmRhdGFDb3VudCA9IGRhdGFfY291bnQ7CiAKLSAgICBmb3IgKCBpID0gMDsgaSA8IGl0ZW1TdG9yZS0+ZGF0YUNvdW50OyBpKysgKQorICAgIGZvciAoIGkgPSAwOyBpIDwgZGF0YV9jb3VudDsgaSsrICkKICAgICB7Ci0gICAgICB2YXJEYXRhID0gJml0ZW1TdG9yZS0+dmFyRGF0YVtpXTsKKyAgICAgIEdYX0l0ZW1WYXJEYXRhICB2YXJEYXRhID0gJml0ZW1TdG9yZS0+dmFyRGF0YVtpXTsKKworICAgICAgRlRfVUludCAgaXRlbV9jb3VudDsKKyAgICAgIEZUX1VJbnQgIHdvcmRfZGVsdGFfY291bnQ7CisgICAgICBGVF9VSW50ICByZWdpb25faWR4X2NvdW50OworCiAKICAgICAgIGlmICggRlRfU1RSRUFNX1NFRUsoIG9mZnNldCArIGRhdGFPZmZzZXRBcnJheVtpXSApICkKICAgICAgICAgZ290byBFeGl0OwogCi0gICAgICBpZiAoIEZUX1JFQURfVVNIT1JUKCB2YXJEYXRhLT5pdGVtQ291bnQgKSAgICAgIHx8Ci0gICAgICAgICAgIEZUX1JFQURfVVNIT1JUKCB3b3JkRGVsdGFDb3VudCApICAgICAgICAgIHx8Ci0gICAgICAgICAgIEZUX1JFQURfVVNIT1JUKCB2YXJEYXRhLT5yZWdpb25JZHhDb3VudCApICkKKyAgICAgIGlmICggRlRfUkVBRF9VU0hPUlQoIGl0ZW1fY291bnQgKSAgICAgICB8fAorICAgICAgICAgICBGVF9SRUFEX1VTSE9SVCggd29yZF9kZWx0YV9jb3VudCApIHx8CisgICAgICAgICAgIEZUX1JFQURfVVNIT1JUKCByZWdpb25faWR4X2NvdW50ICkgKQogICAgICAgICBnb3RvIEV4aXQ7CiAKLSAgICAgIGxvbmdfd29yZHMgICAgICA9ICEhKCB3b3JkRGVsdGFDb3VudCAmIDB4ODAwMCApOwotICAgICAgd29yZERlbHRhQ291bnQgJj0gMHg3RkZGOworICAgICAgbG9uZ193b3JkcyAgICAgICAgPSAhISggd29yZF9kZWx0YV9jb3VudCAmIDB4ODAwMCApOworICAgICAgd29yZF9kZWx0YV9jb3VudCAmPSAweDdGRkY7CiAKICAgICAgIC8qIGNoZWNrIHNvbWUgZGF0YSBjb25zaXN0ZW5jeSAqLwotICAgICAgaWYgKCB3b3JkRGVsdGFDb3VudCA+IHZhckRhdGEtPnJlZ2lvbklkeENvdW50ICkKKyAgICAgIGlmICggd29yZF9kZWx0YV9jb3VudCA+IHJlZ2lvbl9pZHhfY291bnQgKQogICAgICAgewogICAgICAgICBGVF9UUkFDRTIoKCAiYmFkIHNob3J0IGNvdW50ICVkIG9yIHJlZ2lvbiBjb3VudCAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgd29yZERlbHRhQ291bnQsCi0gICAgICAgICAgICAgICAgICAgIHZhckRhdGEtPnJlZ2lvbklkeENvdW50ICkpOworICAgICAgICAgICAgICAgICAgICB3b3JkX2RlbHRhX2NvdW50LAorICAgICAgICAgICAgICAgICAgICByZWdpb25faWR4X2NvdW50ICkpOwogICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1RhYmxlICk7CiAgICAgICAgIGdvdG8gRXhpdDsKICAgICAgIH0KIAotICAgICAgaWYgKCB2YXJEYXRhLT5yZWdpb25JZHhDb3VudCA+IGl0ZW1TdG9yZS0+cmVnaW9uQ291bnQgKQorICAgICAgaWYgKCByZWdpb25faWR4X2NvdW50ID4gaXRlbVN0b3JlLT5yZWdpb25Db3VudCApCiAgICAgICB7CiAgICAgICAgIEZUX1RSQUNFMigoICJpbmNvbnNpc3RlbnQgcmVnaW9uQ291bnQgJWQgaW4gdmFyRGF0YVslZF1cbiIsCi0gICAgICAgICAgICAgICAgICAgIHZhckRhdGEtPnJlZ2lvbklkeENvdW50LAorICAgICAgICAgICAgICAgICAgICByZWdpb25faWR4X2NvdW50LAogICAgICAgICAgICAgICAgICAgICBpICkpOwogICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1RhYmxlICk7CiAgICAgICAgIGdvdG8gRXhpdDsKICAgICAgIH0KIAogICAgICAgLyogcGFyc2UgcmVnaW9uIGluZGljZXMgKi8KLSAgICAgIGlmICggRlRfTkVXX0FSUkFZKCB2YXJEYXRhLT5yZWdpb25JbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgIHZhckRhdGEtPnJlZ2lvbklkeENvdW50ICkgKQorICAgICAgaWYgKCBGVF9ORVdfQVJSQVkoIHZhckRhdGEtPnJlZ2lvbkluZGljZXMsIHJlZ2lvbl9pZHhfY291bnQgKSApCiAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIHZhckRhdGEtPnJlZ2lvbklkeENvdW50ID0gcmVnaW9uX2lkeF9jb3VudDsKIAogICAgICAgZm9yICggaiA9IDA7IGogPCB2YXJEYXRhLT5yZWdpb25JZHhDb3VudDsgaisrICkKICAgICAgIHsKQEAgLTYxOCw1NCArNjczLDM1IEBACiAgICAgICAgIH0KICAgICAgIH0KIAotICAgICAgLyogUGFyc2UgZGVsdGEgc2V0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgIC8qIE9uIGlucHV0LCBkZWx0YXMgYXJlICh3b3JkRGVsdGFDb3VudCArIHJlZ2lvbklkeENvdW50KSBieXRlcyAgICAqLwotICAgICAgLyogZWFjaCBpZiBgbG9uZ193b3Jkc2AgaXNuJ3Qgc2V0LCBhbmQgdHdpY2UgYXMgbXVjaCBvdGhlcndpc2UuICAgICovCi0gICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgIC8qIE9uIG91dHB1dCwgZGVsdGFzIGFyZSBleHBhbmRlZCB0byBgcmVnaW9uSWR4Q291bnRgIHNob3J0cyBlYWNoLiAqLwotICAgICAgaWYgKCBGVF9ORVdfQVJSQVkoIHZhckRhdGEtPmRlbHRhU2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgIHZhckRhdGEtPnJlZ2lvbklkeENvdW50ICogdmFyRGF0YS0+aXRlbUNvdW50ICkgKQorICAgICAgLyogUGFyc2UgZGVsdGEgc2V0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiBPbiBpbnB1dCwgZGVsdGFzIGFyZSAod29yZF9kZWx0YV9jb3VudCArIHJlZ2lvbl9pZHhfY291bnQpIGJ5dGVzICAqLworICAgICAgLyogZWFjaCBpZiBgbG9uZ193b3Jkc2AgaXNuJ3Qgc2V0LCBhbmQgdHdpY2UgYXMgbXVjaCBvdGhlcndpc2UuICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiBPbiBvdXRwdXQsIGRlbHRhcyBhcmUgZXhwYW5kZWQgdG8gYHJlZ2lvbl9pZHhfY291bnRgIHNob3J0cyBlYWNoLiAqLworICAgICAgaWYgKCBGVF9ORVdfQVJSQVkoIHZhckRhdGEtPmRlbHRhU2V0LCBpdGVtX2NvdW50ICogcmVnaW9uX2lkeF9jb3VudCApICkKICAgICAgICAgZ290byBFeGl0OworICAgICAgdmFyRGF0YS0+aXRlbUNvdW50ID0gaXRlbV9jb3VudDsKIAotICAgICAgLyogdGhlIGRlbHRhIHNldCBpcyBzdG9yZWQgYXMgYSAyLWRpbWVuc2lvbmFsIGFycmF5IG9mIHNob3J0cyAqLwotICAgICAgaWYgKCBsb25nX3dvcmRzICkKKyAgICAgIGZvciAoIGogPSAwOyBqIDwgaXRlbV9jb3VudCAqIHJlZ2lvbl9pZHhfY291bnQ7ICkKICAgICAgIHsKLSAgICAgICAgLyogbmV3IGluIE9wZW5UeXBlIDEuOSwgY3VycmVudGx5IGZvciAnQ09MUicgdGFibGUgb25seTsgICAgICAgICAgKi8KLSAgICAgICAgLyogdGhlIGRlbHRhcyBhcmUgaW50ZXJwcmV0ZWQgYXMgMTYuMTYgZml4ZWQtcG9pbnQgc2NhbGluZyB2YWx1ZXMgKi8KLQotICAgICAgICAvKiBub3Qgc3VwcG9ydGVkIHlldCAqLwotCi0gICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfVGFibGUgKTsKLSAgICAgICAgZ290byBFeGl0OwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBmb3IgKCBqID0gMDsgaiA8IHZhckRhdGEtPml0ZW1Db3VudCAqIHZhckRhdGEtPnJlZ2lvbklkeENvdW50OyApCisgICAgICAgIGlmICggbG9uZ193b3JkcyApCiAgICAgICAgIHsKLSAgICAgICAgICBmb3IgKCBrID0gMDsgayA8IHdvcmREZWx0YUNvdW50OyBrKyssIGorKyApCi0gICAgICAgICAgewotICAgICAgICAgICAgLyogcmVhZCB0aGUgc2hvcnQgZGVsdGFzICovCi0gICAgICAgICAgICBGVF9TaG9ydCAgZGVsdGE7Ci0KLQotICAgICAgICAgICAgaWYgKCBGVF9SRUFEX1NIT1JUKCBkZWx0YSApICkKKyAgICAgICAgICBmb3IgKCBrID0gMDsgayA8IHdvcmRfZGVsdGFfY291bnQ7IGsrKywgaisrICkKKyAgICAgICAgICAgIGlmICggRlRfUkVBRF9MT05HKCB2YXJEYXRhLT5kZWx0YVNldFtqXSApICkKICAgICAgICAgICAgICAgZ290byBFeGl0OwotCi0gICAgICAgICAgICB2YXJEYXRhLT5kZWx0YVNldFtqXSA9IGRlbHRhOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGZvciAoIDsgayA8IHZhckRhdGEtPnJlZ2lvbklkeENvdW50OyBrKyssIGorKyApCi0gICAgICAgICAgewotICAgICAgICAgICAgLyogcmVhZCB0aGUgKHNpZ25lZCkgYnl0ZSBkZWx0YXMgKi8KLSAgICAgICAgICAgIEZUX0NoYXIgIGRlbHRhOwotCi0KLSAgICAgICAgICAgIGlmICggRlRfUkVBRF9DSEFSKCBkZWx0YSApICkKKyAgICAgICAgICBmb3IgKCA7IGsgPCByZWdpb25faWR4X2NvdW50OyBrKyssIGorKyApCisgICAgICAgICAgICBpZiAoIEZUX1JFQURfU0hPUlQoIHZhckRhdGEtPmRlbHRhU2V0W2pdICkgKQogICAgICAgICAgICAgICBnb3RvIEV4aXQ7Ci0KLSAgICAgICAgICAgIHZhckRhdGEtPmRlbHRhU2V0W2pdID0gZGVsdGE7Ci0gICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIGZvciAoIGsgPSAwOyBrIDwgd29yZF9kZWx0YV9jb3VudDsgaysrLCBqKysgKQorICAgICAgICAgICAgaWYgKCBGVF9SRUFEX1NIT1JUKCB2YXJEYXRhLT5kZWx0YVNldFtqXSApICkKKyAgICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgIGZvciAoIDsgayA8IHJlZ2lvbl9pZHhfY291bnQ7IGsrKywgaisrICkKKyAgICAgICAgICAgIGlmICggRlRfUkVBRF9DSEFSKCB2YXJEYXRhLT5kZWx0YVNldFtqXSApICkKKyAgICAgICAgICAgICAgZ290byBFeGl0OwogICAgICAgICB9CiAgICAgICB9CiAgICAgfQpAQCAtNjc3LDggKzcxMyw4IEBACiAgIH0KIAogCi0gIHN0YXRpYyBGVF9FcnJvcgotICBmdF92YXJfbG9hZF9kZWx0YV9zZXRfaW5kZXhfbWFwcGluZyggVFRfRmFjZSAgICAgICAgICAgIGZhY2UsCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF92YXJfbG9hZF9kZWx0YV9zZXRfaW5kZXhfbWFwcGluZyggVFRfRmFjZSAgICAgICAgICAgIGZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgICAgICAgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1hfRGVsdGFTZXRJZHhNYXAgIG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdYX0l0ZW1WYXJTdG9yZSAgICBpdGVtU3RvcmUsCkBAIC03MzUsNyArNzcxLDcgQEAKICAgICAvKiByb3VnaCBzYW5pdHkgY2hlY2sgKi8KICAgICBpZiAoIG1hcC0+bWFwQ291bnQgKiBlbnRyeVNpemUgPiB0YWJsZV9sZW4gKQogICAgIHsKLSAgICAgIEZUX1RSQUNFMSgoICJmdF92YXJfbG9hZF9kZWx0YV9zZXRfaW5kZXhfbWFwcGluZzoiCisgICAgICBGVF9UUkFDRTEoKCAidHRfdmFyX2xvYWRfZGVsdGFfc2V0X2luZGV4X21hcHBpbmc6IgogICAgICAgICAgICAgICAgICAgIiBpbnZhbGlkIG51bWJlciBvZiBkZWx0YS1zZXQgaW5kZXggbWFwcGluZ3NcbiIgKSk7CiAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1RhYmxlICk7CiAgICAgICBnb3RvIEV4aXQ7CkBAIC03NjUsNiArODAxLDE2IEBACiAgICAgICAgIG1hcERhdGEgPSAoIG1hcERhdGEgPDwgOCApIHwgZGF0YTsKICAgICAgIH0KIAorICAgICAgLyogbmV3IGluIE9wZW5UeXBlIDEuOC40ICovCisgICAgICBpZiAoIG1hcERhdGEgPT0gMHhGRkZGRkZGRlVMICkKKyAgICAgIHsKKyAgICAgICAgLyogbm8gdmFyaWF0aW9uIGRhdGEgZm9yIHRoaXMgaXRlbSAqLworICAgICAgICBtYXAtPm91dGVySW5kZXhbaV0gPSAweEZGRkZVOworICAgICAgICBtYXAtPmlubmVySW5kZXhbaV0gPSAweEZGRkZVOworCisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorCiAgICAgICBvdXRlckluZGV4ID0gbWFwRGF0YSA+PiBpbm5lckJpdENvdW50OwogCiAgICAgICBpZiAoIG91dGVySW5kZXggPj0gaXRlbVN0b3JlLT5kYXRhQ291bnQgKQpAQCAtODk0LDcgKzk0MCw3IEBACiAgICAgICB0YWJsZSA9IGJsZW5kLT5odmFyX3RhYmxlOwogICAgIH0KIAotICAgIGVycm9yID0gZnRfdmFyX2xvYWRfaXRlbV92YXJpYXRpb25fc3RvcmUoCisgICAgZXJyb3IgPSB0dF92YXJfbG9hZF9pdGVtX3ZhcmlhdGlvbl9zdG9yZSgKICAgICAgICAgICAgICAgZmFjZSwKICAgICAgICAgICAgICAgdGFibGVfb2Zmc2V0ICsgc3RvcmVfb2Zmc2V0LAogICAgICAgICAgICAgICAmdGFibGUtPml0ZW1TdG9yZSApOwpAQCAtOTAzLDcgKzk0OSw3IEBACiAKICAgICBpZiAoIHdpZHRoTWFwX29mZnNldCApCiAgICAgewotICAgICAgZXJyb3IgPSBmdF92YXJfbG9hZF9kZWx0YV9zZXRfaW5kZXhfbWFwcGluZygKKyAgICAgIGVycm9yID0gdHRfdmFyX2xvYWRfZGVsdGFfc2V0X2luZGV4X21hcHBpbmcoCiAgICAgICAgICAgICAgICAgZmFjZSwKICAgICAgICAgICAgICAgICB0YWJsZV9vZmZzZXQgKyB3aWR0aE1hcF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgJnRhYmxlLT53aWR0aE1hcCwKQEAgLTk0NSwyNiArOTkxLDQ3IEBACiAgIH0KIAogCi0gIHN0YXRpYyBGVF9JbnQKLSAgZnRfdmFyX2dldF9pdGVtX2RlbHRhKCBUVF9GYWNlICAgICAgICAgIGZhY2UsCisgIEZUX0xPQ0FMX0RFRiggRlRfSXRlbVZhckRlbHRhICkKKyAgdHRfdmFyX2dldF9pdGVtX2RlbHRhKCBUVF9GYWNlICAgICAgICAgIGZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR1hfSXRlbVZhclN0b3JlICBpdGVtU3RvcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICBvdXRlckluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgaW5uZXJJbmRleCApCiAgIHsKLSAgICBHWF9JdGVtVmFyRGF0YSAgdmFyRGF0YTsKLSAgICBGVF9TaG9ydCogICAgICAgZGVsdGFTZXQ7CisgICAgRlRfU3RyZWFtICBzdHJlYW0gPSBGVF9GQUNFX1NUUkVBTSggZmFjZSApOworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gc3RyZWFtLT5tZW1vcnk7CisgICAgRlRfRXJyb3IgICBlcnJvciAgPSBGVF9FcnJfT2s7CiAKLSAgICBGVF9VSW50ICAgbWFzdGVyLCBqOwotICAgIEZUX0ZpeGVkICBuZXRBZGp1c3RtZW50ID0gMDsgICAgIC8qIGFjY3VtdWxhdGVkIGFkanVzdG1lbnQgKi8KLSAgICBGVF9GaXhlZCAgc2NhbGVkRGVsdGE7Ci0gICAgRlRfRml4ZWQgIGRlbHRhOworICAgIEdYX0l0ZW1WYXJEYXRhICAgIHZhckRhdGE7CisgICAgRlRfSXRlbVZhckRlbHRhKiAgZGVsdGFTZXQ7CiAKKyAgICBGVF9VSW50ICAgICAgICAgIG1hc3RlciwgajsKKyAgICBGVF9GaXhlZCogICAgICAgIHNjYWxhcnMgPSBOVUxMOworICAgIEZUX0l0ZW1WYXJEZWx0YSAgcmV0dXJuVmFsdWU7CisKKworICAgIGlmICggIWZhY2UtPmJsZW5kIHx8ICFmYWNlLT5ibGVuZC0+bm9ybWFsaXplZGNvb3JkcyApCisgICAgICByZXR1cm4gMDsKKworICAgIC8qIE9wZW5UeXBlIDEuOC40KzogTm8gdmFyaWF0aW9uIGRhdGEgZm9yIHRoaXMgaXRlbSAqLworICAgIC8qIGFzIGluZGljZXMgaGF2ZSBzcGVjaWFsIHZhbHVlIDB4RkZGRi4gICAgICAgICAgICAqLworICAgIGlmICggb3V0ZXJJbmRleCA9PSAweEZGRkYgJiYgaW5uZXJJbmRleCA9PSAweEZGRkYgKQorICAgICAgcmV0dXJuIDA7CiAKICAgICAvKiBTZWUgcHNldWRvIGNvZGUgZnJvbSBgRm9udCBWYXJpYXRpb25zIE92ZXJ2aWV3JyAqLwogICAgIC8qIGluIHRoZSBPcGVuVHlwZSBzcGVjaWZpY2F0aW9uLiAgICAgICAgICAgICAgICAgICovCiAKKyAgICBpZiAoIG91dGVySW5kZXggPj0gaXRlbVN0b3JlLT5kYXRhQ291bnQgKQorICAgICAgcmV0dXJuIDA7IC8qIE91dCBvZiByYW5nZS4gKi8KKwogICAgIHZhckRhdGEgID0gJml0ZW1TdG9yZS0+dmFyRGF0YVtvdXRlckluZGV4XTsKLSAgICBkZWx0YVNldCA9ICZ2YXJEYXRhLT5kZWx0YVNldFt2YXJEYXRhLT5yZWdpb25JZHhDb3VudCAqIGlubmVySW5kZXhdOworICAgIGRlbHRhU2V0ID0gRlRfT0ZGU0VUKCB2YXJEYXRhLT5kZWx0YVNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyRGF0YS0+cmVnaW9uSWR4Q291bnQgKiBpbm5lckluZGV4ICk7CisKKyAgICBpZiAoIGlubmVySW5kZXggPj0gdmFyRGF0YS0+aXRlbUNvdW50ICkKKyAgICAgIHJldHVybiAwOyAvKiBPdXQgb2YgcmFuZ2UuICovCisKKyAgICBpZiAoIEZUX1FORVdfQVJSQVkoIHNjYWxhcnMsIHZhckRhdGEtPnJlZ2lvbklkeENvdW50ICkgKQorICAgICAgcmV0dXJuIDA7CiAKICAgICAvKiBvdXRlciBsb29wIHN0ZXBzIHRocm91Z2ggbWFzdGVyIGRlc2lnbnMgdG8gYmUgYmxlbmRlZCAqLwogICAgIGZvciAoIG1hc3RlciA9IDA7IG1hc3RlciA8IHZhckRhdGEtPnJlZ2lvbklkeENvdW50OyBtYXN0ZXIrKyApCkBAIC0xMDE1LDE4ICsxMDgyLDMzIEBACiAgICAgICAgICAgICBGVF9NdWxEaXYoIHNjYWxhciwKICAgICAgICAgICAgICAgICAgICAgICAgYXhpcy0+ZW5kQ29vcmQgLSBmYWNlLT5ibGVuZC0+bm9ybWFsaXplZGNvb3Jkc1tqXSwKICAgICAgICAgICAgICAgICAgICAgICAgYXhpcy0+ZW5kQ29vcmQgLSBheGlzLT5wZWFrQ29vcmQgKTsKKwogICAgICAgfSAvKiBwZXItYXhpcyBsb29wICovCiAKLSAgICAgIC8qIGdldCB0aGUgc2NhbGVkIGRlbHRhIGZvciB0aGlzIHJlZ2lvbiAqLwotICAgICAgZGVsdGEgICAgICAgPSBGVF9pbnRUb0ZpeGVkKCBkZWx0YVNldFttYXN0ZXJdICk7Ci0gICAgICBzY2FsZWREZWx0YSA9IEZUX011bEZpeCggc2NhbGFyLCBkZWx0YSApOwotCi0gICAgICAvKiBhY2N1bXVsYXRlIHRoZSBhZGp1c3RtZW50cyBmcm9tIGVhY2ggcmVnaW9uICovCi0gICAgICBuZXRBZGp1c3RtZW50ID0gbmV0QWRqdXN0bWVudCArIHNjYWxlZERlbHRhOworICAgICAgc2NhbGFyc1ttYXN0ZXJdID0gc2NhbGFyOwogCiAgICAgfSAvKiBwZXItcmVnaW9uIGxvb3AgKi8KIAotICAgIHJldHVybiBGVF9maXhlZFRvSW50KCBuZXRBZGp1c3RtZW50ICk7CisKKyAgICAvKiBDb21wdXRlIHRoZSBzY2FsZWQgZGVsdGEgZm9yIHRoaXMgcmVnaW9uLgorICAgICAqCisgICAgICogRnJvbTogaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvdHlwb2dyYXBoeS9vcGVudHlwZS9zcGVjL290dmFyY29tbW9uZm9ybWF0cyNpdGVtLXZhcmlhdGlvbi1zdG9yZS1oZWFkZXItYW5kLWl0ZW0tdmFyaWF0aW9uLWRhdGEtc3VidGFibGVzOgorICAgICAqCisgICAgICogICBgRml4ZWRgIGlzIGEgMzItYml0ICgxNi4xNikgdHlwZSBhbmQsIGluIHRoZSBnZW5lcmFsIGNhc2UsIHJlcXVpcmVzCisgICAgICogICAzMi1iaXQgZGVsdGFzLiAgQXMgZGVzY3JpYmVkIGFib3ZlLCB0aGUgYERlbHRhU2V0YCByZWNvcmQgY2FuCisgICAgICogICBhY2NvbW1vZGF0ZSBkZWx0YXMgdGhhdCBhcmUsIGxvZ2ljYWxseSwgZWl0aGVyIDE2LWJpdCBvciAzMi1iaXQuCisgICAgICogICBXaGVuIHNjYWxlZCBkZWx0YXMgYXJlIGFwcGxpZWQgdG8gYEZpeGVkYCB2YWx1ZXMsIHRoZSBgRml4ZWRgIHZhbHVlCisgICAgICogICBpcyB0cmVhdGVkIGxpa2UgYSAzMi1iaXQgaW50ZWdlci4KKyAgICAgKgorICAgICAqIGBGVF9NdWxBZGRGaXhgIGludGVybmFsbHkgdXNlcyA2NC1iaXQgcHJlY2lzaW9uOyBpdCB0aHVzIGNhbiBoYW5kbGUKKyAgICAgKiBkZWx0YXMgcmFuZ2luZyBmcm9tIHNtYWxsIDgtYml0IHRvIGxhcmdlIDMyLWJpdCB2YWx1ZXMgdGhhdCBhcmUKKyAgICAgKiBhcHBsaWVkIHRvIDE2LjE2IGBGVF9GaXhlZGAgLyBPcGVuVHlwZSBgRml4ZWRgIHZhbHVlcy4KKyAgICAgKi8KKyAgICByZXR1cm5WYWx1ZSA9IEZUX011bEFkZEZpeCggc2NhbGFycywgZGVsdGFTZXQsIHZhckRhdGEtPnJlZ2lvbklkeENvdW50ICk7CisKKyAgICBGVF9GUkVFKCBzY2FsYXJzICk7CisKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgIH0KIAogCkBAIC0xMTE5LDM1ICsxMjAxLDI3IEBACiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICBHWF9JdGVtVmFyRGF0YSAgdmFyRGF0YTsKLQotCiAgICAgICAvKiBubyB3aWR0aE1hcCBkYXRhICovCiAgICAgICBvdXRlckluZGV4ID0gMDsKICAgICAgIGlubmVySW5kZXggPSBnaW5kZXg7Ci0KLSAgICAgIHZhckRhdGEgPSAmdGFibGUtPml0ZW1TdG9yZS52YXJEYXRhW291dGVySW5kZXhdOwotICAgICAgaWYgKCBnaW5kZXggPj0gdmFyRGF0YS0+aXRlbUNvdW50ICkKLSAgICAgIHsKLSAgICAgICAgRlRfVFJBQ0UyKCggImdpbmRleCAlZCBvdXQgb2YgcmFuZ2VcbiIsIGdpbmRleCApKTsKLSAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOwotICAgICAgICBnb3RvIEV4aXQ7Ci0gICAgICB9CiAgICAgfQogCi0gICAgZGVsdGEgPSBmdF92YXJfZ2V0X2l0ZW1fZGVsdGEoIGZhY2UsCisgICAgZGVsdGEgPSB0dF92YXJfZ2V0X2l0ZW1fZGVsdGEoIGZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWJsZS0+aXRlbVN0b3JlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRlckluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lckluZGV4ICk7CiAKLSAgICBGVF9UUkFDRTUoKCAiJXMgdmFsdWUgJWQgYWRqdXN0ZWQgYnkgJWQgdW5pdCVzICglcylcbiIsCi0gICAgICAgICAgICAgICAgdmVydGljYWwgPyAidmVydGljYWwgaGVpZ2h0IiA6ICJob3Jpem9udGFsIHdpZHRoIiwKLSAgICAgICAgICAgICAgICAqYXZhbHVlLAotICAgICAgICAgICAgICAgIGRlbHRhLAotICAgICAgICAgICAgICAgIGRlbHRhID09IDEgPyAiIiA6ICJzIiwKLSAgICAgICAgICAgICAgICB2ZXJ0aWNhbCA/ICJWVkFSIiA6ICJIVkFSIiApKTsKKyAgICBpZiAoIGRlbHRhICkKKyAgICB7CisgICAgICBGVF9UUkFDRTUoKCAiJXMgdmFsdWUgJWQgYWRqdXN0ZWQgYnkgJWQgdW5pdCVzICglcylcbiIsCisgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbCA/ICJ2ZXJ0aWNhbCBoZWlnaHQiIDogImhvcml6b250YWwgd2lkdGgiLAorICAgICAgICAgICAgICAgICAgKmF2YWx1ZSwKKyAgICAgICAgICAgICAgICAgIGRlbHRhLAorICAgICAgICAgICAgICAgICAgZGVsdGEgPT0gMSA/ICIiIDogInMiLAorICAgICAgICAgICAgICAgICAgdmVydGljYWwgPyAiVlZBUiIgOiAiSFZBUiIgKSk7CiAKLSAgICAqYXZhbHVlICs9IGRlbHRhOworICAgICAgKmF2YWx1ZSA9IEFERF9JTlQoICphdmFsdWUsIGRlbHRhICk7CisgICAgfQogCiAgIEV4aXQ6CiAgICAgcmV0dXJuIGVycm9yOwpAQCAtMTMxNCw3ICsxMzg4LDcgQEAKIAogICAgIHJlY29yZHNfb2Zmc2V0ID0gRlRfU1RSRUFNX1BPUygpOwogCi0gICAgZXJyb3IgPSBmdF92YXJfbG9hZF9pdGVtX3ZhcmlhdGlvbl9zdG9yZSgKKyAgICBlcnJvciA9IHR0X3Zhcl9sb2FkX2l0ZW1fdmFyaWF0aW9uX3N0b3JlKAogICAgICAgICAgICAgICBmYWNlLAogICAgICAgICAgICAgICB0YWJsZV9vZmZzZXQgKyBzdG9yZV9vZmZzZXQsCiAgICAgICAgICAgICAgICZibGVuZC0+bXZhcl90YWJsZS0+aXRlbVN0b3JlICk7CkBAIC0xMzMwLDcgKzE0MDQsNyBAQAogICAgICAgcmV0dXJuOwogCiAgICAgdmFsdWUgICAgID0gYmxlbmQtPm12YXJfdGFibGUtPnZhbHVlczsKLSAgICBsaW1pdCAgICAgPSB2YWx1ZSArIGJsZW5kLT5tdmFyX3RhYmxlLT52YWx1ZUNvdW50OworICAgIGxpbWl0ICAgICA9IEZUX09GRlNFVCggdmFsdWUsIGJsZW5kLT5tdmFyX3RhYmxlLT52YWx1ZUNvdW50ICk7CiAgICAgaXRlbVN0b3JlID0gJmJsZW5kLT5tdmFyX3RhYmxlLT5pdGVtU3RvcmU7CiAKICAgICBmb3IgKCA7IHZhbHVlIDwgbGltaXQ7IHZhbHVlKysgKQpAQCAtMTMzOSw2ICsxNDEzLDEzIEBACiAgICAgICB2YWx1ZS0+b3V0ZXJJbmRleCA9IEZUX0dFVF9VU0hPUlQoKTsKICAgICAgIHZhbHVlLT5pbm5lckluZGV4ID0gRlRfR0VUX1VTSE9SVCgpOwogCisgICAgICAvKiBuZXcgaW4gT3BlblR5cGUgMS44LjQgKi8KKyAgICAgIGlmICggdmFsdWUtPm91dGVySW5kZXggPT0gMHhGRkZGVSAmJiB2YWx1ZS0+aW5uZXJJbmRleCA9PSAweEZGRkZVICkKKyAgICAgIHsKKyAgICAgICAgLyogbm8gdmFyaWF0aW9uIGRhdGEgZm9yIHRoaXMgaXRlbSAqLworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKwogICAgICAgaWYgKCB2YWx1ZS0+b3V0ZXJJbmRleCA+PSBpdGVtU3RvcmUtPmRhdGFDb3VudCAgICAgICAgICAgICAgICAgIHx8CiAgICAgICAgICAgIHZhbHVlLT5pbm5lckluZGV4ID49IGl0ZW1TdG9yZS0+dmFyRGF0YVt2YWx1ZS0+b3V0ZXJJbmRleF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLml0ZW1Db3VudCAgICAgICAgICApCkBAIC0xMzU2LDcgKzE0MzcsNyBAQAogICAgIEZUX1RSQUNFMigoICJsb2FkZWRcbiIgKSk7CiAKICAgICB2YWx1ZSA9IGJsZW5kLT5tdmFyX3RhYmxlLT52YWx1ZXM7Ci0gICAgbGltaXQgPSB2YWx1ZSArIGJsZW5kLT5tdmFyX3RhYmxlLT52YWx1ZUNvdW50OworICAgIGxpbWl0ID0gRlRfT0ZGU0VUKCB2YWx1ZSwgYmxlbmQtPm12YXJfdGFibGUtPnZhbHVlQ291bnQgKTsKIAogICAgIC8qIHNhdmUgb3JpZ2luYWwgdmFsdWVzIG9mIHRoZSBkYXRhIE1WQVIgaXMgZ29pbmcgdG8gbW9kaWZ5ICovCiAgICAgZm9yICggOyB2YWx1ZSA8IGxpbWl0OyB2YWx1ZSsrICkKQEAgLTEzODEsMTUgKzE0NjIsMTQgQEAKIAogCiAgIHN0YXRpYyBGVF9FcnJvcgotICB0dF9zaXplX3Jlc2V0X2l0ZXJhdG9yKCBGVF9MaXN0Tm9kZSAgbm9kZSwKKyAgZnRfc2l6ZV9yZXNldF9pdGVyYXRvciggRlRfTGlzdE5vZGUgIG5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICB1c2VyICkKICAgewotICAgIFRUX1NpemUgIHNpemUgPSAoVFRfU2l6ZSlub2RlLT5kYXRhOwotCi0gICAgRlRfVU5VU0VEKCB1c2VyICk7CisgICAgRlRfU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IChGVF9TaXplKW5vZGUtPmRhdGE7CisgICAgRlRfU2VydmljZV9NZXRyaWNzVmFyaWF0aW9ucyAgdmFyICA9IChGVF9TZXJ2aWNlX01ldHJpY3NWYXJpYXRpb25zKXVzZXI7CiAKIAotICAgIHR0X3NpemVfcmVzZXQoIHNpemUsIDEgKTsKKyAgICB2YXItPnNpemVfcmVzZXQoIHNpemUgKTsKIAogICAgIHJldHVybiBGVF9FcnJfT2s7CiAgIH0KQEAgLTE0MjEsNyArMTUwMSw3IEBACiAgICAgICByZXR1cm47CiAKICAgICB2YWx1ZSA9IGJsZW5kLT5tdmFyX3RhYmxlLT52YWx1ZXM7Ci0gICAgbGltaXQgPSB2YWx1ZSArIGJsZW5kLT5tdmFyX3RhYmxlLT52YWx1ZUNvdW50OworICAgIGxpbWl0ID0gRlRfT0ZGU0VUKCB2YWx1ZSwgYmxlbmQtPm12YXJfdGFibGUtPnZhbHVlQ291bnQgKTsKIAogICAgIGZvciAoIDsgdmFsdWUgPCBsaW1pdDsgdmFsdWUrKyApCiAgICAgewpAQCAtMTQyOSwxMiArMTUwOSwxMiBAQAogICAgICAgRlRfSW50ICAgICBkZWx0YTsKIAogCi0gICAgICBkZWx0YSA9IGZ0X3Zhcl9nZXRfaXRlbV9kZWx0YSggZmFjZSwKKyAgICAgIGRlbHRhID0gdHRfdmFyX2dldF9pdGVtX2RlbHRhKCBmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZibGVuZC0+bXZhcl90YWJsZS0+aXRlbVN0b3JlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLT5vdXRlckluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLT5pbm5lckluZGV4ICk7CiAKLSAgICAgIGlmICggcCApCisgICAgICBpZiAoIHAgJiYgZGVsdGEgKQogICAgICAgewogICAgICAgICBGVF9UUkFDRTUoKCAidmFsdWUgJWMlYyVjJWMgKCVkIHVuaXQlcykgYWRqdXN0ZWQgYnkgJWQgdW5pdCVzIChNVkFSKVxuIiwKICAgICAgICAgICAgICAgICAgICAgKEZUX0NoYXIpKCB2YWx1ZS0+dGFnID4+IDI0ICksCkBAIC0xNDYyLDYgKzE1NDIsOSBAQAogCiAgICAgLyogYWRqdXN0IGFsbCBkZXJpdmVkIHZhbHVlcyAqLwogICAgIHsKKyAgICAgIEZUX1NlcnZpY2VfTWV0cmljc1ZhcmlhdGlvbnMgIHZhciA9CisgICAgICAgIChGVF9TZXJ2aWNlX01ldHJpY3NWYXJpYXRpb25zKWZhY2UtPmZhY2VfdmFyOworCiAgICAgICBGVF9GYWNlICByb290ID0gJmZhY2UtPnJvb3Q7CiAKICAgICAgIC8qCkBAIC0xNTAzLDExICsxNTg2LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+cG9zdHNjcmlwdC51bmRlcmxpbmVUaGlja25lc3MgLyAyOwogICAgICAgcm9vdC0+dW5kZXJsaW5lX3RoaWNrbmVzcyA9IGZhY2UtPnBvc3RzY3JpcHQudW5kZXJsaW5lVGhpY2tuZXNzOwogCi0gICAgICAvKiBpdGVyYXRlIG92ZXIgYWxsIEZUX1NpemUgb2JqZWN0cyBhbmQgY2FsbCBgdHRfc2l6ZV9yZXNldCcgKi8KLSAgICAgIC8qIHRvIHByb3BhZ2F0ZSB0aGUgbWV0cmljcyBjaGFuZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgRlRfTGlzdF9JdGVyYXRlKCAmcm9vdC0+c2l6ZXNfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgdHRfc2l6ZV9yZXNldF9pdGVyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgTlVMTCApOworICAgICAgLyogaXRlcmF0ZSBvdmVyIGFsbCBGVF9TaXplIG9iamVjdHMgYW5kIGNhbGwgYHZhci0+c2l6ZV9yZXNldCcgKi8KKyAgICAgIC8qIHRvIHByb3BhZ2F0ZSB0aGUgbWV0cmljcyBjaGFuZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICBpZiAoIHZhciAmJiB2YXItPnNpemVfcmVzZXQgKQorICAgICAgICBGVF9MaXN0X0l0ZXJhdGUoICZyb290LT5zaXplc19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ0X3NpemVfcmVzZXRfaXRlcmF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKXZhciApOwogICAgIH0KICAgfQogCkBAIC0xNzMyLDcgKzE4MTYsNyBAQAogICAgICAgICAgIGJsZW5kLT50dXBsZWNvb3Jkc1tpICogZ3Zhcl9oZWFkLmF4aXNDb3VudCArIGpdID0KICAgICAgICAgICAgIEZUX2Zkb3QxNFRvRml4ZWQoIEZUX0dFVF9TSE9SVCgpICk7CiAgICAgICAgICAgRlRfVFJBQ0U1KCggIiUuNWYgIiwKLSAgICAgICAgICAgIGJsZW5kLT50dXBsZWNvb3Jkc1tpICogZ3Zhcl9oZWFkLmF4aXNDb3VudCArIGpdIC8gNjU1MzYuMCApKTsKKyAgICAgICAgICAgIChkb3VibGUpYmxlbmQtPnR1cGxlY29vcmRzW2kgKiBndmFyX2hlYWQuYXhpc0NvdW50ICsgal0gLyA2NTUzNiApKTsKICAgICAgICAgfQogICAgICAgICBGVF9UUkFDRTUoKCAiXVxuIiApKTsKICAgICAgIH0KQEAgLTE4MDMsNyArMTg4Nyw3IEBACiAgICAgZm9yICggaSA9IDA7IGkgPCBibGVuZC0+bnVtX2F4aXM7IGkrKyApCiAgICAgewogICAgICAgRlRfVFJBQ0U2KCggIiAgICBheGlzICVkIGNvb3JkaW5hdGUgJS41ZjpcbiIsCi0gICAgICAgICAgICAgICAgICBpLCBibGVuZC0+bm9ybWFsaXplZGNvb3Jkc1tpXSAvIDY1NTM2LjAgKSk7CisgICAgICAgICAgICAgICAgICBpLCAoZG91YmxlKWJsZW5kLT5ub3JtYWxpemVkY29vcmRzW2ldIC8gNjU1MzYgKSk7CiAKICAgICAgIC8qIEl0J3Mgbm90IGNsZWFyIHdoeSAoZm9yIGludGVybWVkaWF0ZSB0dXBsZXMpIHdlIGRvbid0IG5lZWQgICAgICovCiAgICAgICAvKiB0byBjaGVjayBhZ2FpbnN0IHN0YXJ0L2VuZCAtLSB0aGUgZG9jdW1lbnRhdGlvbiBzYXlzIHdlIGRvbid0LiAqLwpAQCAtMTgyNiw3ICsxOTEwLDcgQEAKICAgICAgIGlmICggYmxlbmQtPm5vcm1hbGl6ZWRjb29yZHNbaV0gPT0gdHVwbGVfY29vcmRzW2ldICkKICAgICAgIHsKICAgICAgICAgRlRfVFJBQ0U2KCggIiAgICAgIHR1cGxlIGNvb3JkaW5hdGUgJS41ZiBmaXRzIHBlcmZlY3RseVxuIiwKLSAgICAgICAgICAgICAgICAgICAgdHVwbGVfY29vcmRzW2ldIC8gNjU1MzYuMCApKTsKKyAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl0dXBsZV9jb29yZHNbaV0gLyA2NTUzNiApKTsKICAgICAgICAgLyogYGFwcGx5JyBkb2VzIG5vdCBjaGFuZ2UgKi8KICAgICAgICAgY29udGludWU7CiAgICAgICB9CkBAIC0xODM5LDEzICsxOTIzLDEzIEBACiAgICAgICAgICAgICAgYmxlbmQtPm5vcm1hbGl6ZWRjb29yZHNbaV0gPiBGVF9NQVgoIDAsIHR1cGxlX2Nvb3Jkc1tpXSApICkKICAgICAgICAgewogICAgICAgICAgIEZUX1RSQUNFNigoICIgICAgICB0dXBsZSBjb29yZGluYXRlICUuNWYgaXMgZXhjZWVkZWQsIHN0b3BcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgdHVwbGVfY29vcmRzW2ldIC8gNjU1MzYuMCApKTsKKyAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXR1cGxlX2Nvb3Jkc1tpXSAvIDY1NTM2ICkpOwogICAgICAgICAgIGFwcGx5ID0gMDsKICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIEZUX1RSQUNFNigoICIgICAgICB0dXBsZSBjb29yZGluYXRlICUuNWYgZml0c1xuIiwKLSAgICAgICAgICAgICAgICAgICAgdHVwbGVfY29vcmRzW2ldIC8gNjU1MzYuMCApKTsKKyAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl0dXBsZV9jb29yZHNbaV0gLyA2NTUzNiApKTsKICAgICAgICAgYXBwbHkgPSBGVF9NdWxEaXYoIGFwcGx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmQtPm5vcm1hbGl6ZWRjb29yZHNbaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dXBsZV9jb29yZHNbaV0gKTsKQEAgLTE4NTksMTUgKzE5NDMsMTUgQEAKICAgICAgICAgewogICAgICAgICAgIEZUX1RSQUNFNigoICIgICAgICBpbnRlcm1lZGlhdGUgdHVwbGUgcmFuZ2UgXSUuNWY7JS41ZlsgaXMgZXhjZWVkZWQsIgogICAgICAgICAgICAgICAgICAgICAgICIgc3RvcFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICBpbV9zdGFydF9jb29yZHNbaV0gLyA2NTUzNi4wLAotICAgICAgICAgICAgICAgICAgICAgIGltX2VuZF9jb29yZHNbaV0gLyA2NTUzNi4wICkpOworICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpaW1fc3RhcnRfY29vcmRzW2ldIC8gNjU1MzYsCisgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSlpbV9lbmRfY29vcmRzW2ldIC8gNjU1MzYgKSk7CiAgICAgICAgICAgYXBwbHkgPSAwOwogICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgRlRfVFJBQ0U2KCggIiAgICAgIGludGVybWVkaWF0ZSB0dXBsZSByYW5nZSBdJS41ZjslLjVmWyBmaXRzXG4iLAotICAgICAgICAgICAgICAgICAgICBpbV9zdGFydF9jb29yZHNbaV0gLyA2NTUzNi4wLAotICAgICAgICAgICAgICAgICAgICBpbV9lbmRfY29vcmRzW2ldIC8gNjU1MzYuMCApKTsKKyAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSlpbV9zdGFydF9jb29yZHNbaV0gLyA2NTUzNiwKKyAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSlpbV9lbmRfY29vcmRzW2ldIC8gNjU1MzYgKSk7CiAgICAgICAgIGlmICggYmxlbmQtPm5vcm1hbGl6ZWRjb29yZHNbaV0gPCB0dXBsZV9jb29yZHNbaV0gKQogICAgICAgICAgIGFwcGx5ID0gRlRfTXVsRGl2KCBhcHBseSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmQtPm5vcm1hbGl6ZWRjb29yZHNbaV0gLSBpbV9zdGFydF9jb29yZHNbaV0sCkBAIC0xODc5LDcgKzE5NjMsNyBAQAogICAgICAgfQogICAgIH0KIAotICAgIEZUX1RSQUNFNigoICIgICAgYXBwbHkgZmFjdG9yIGlzICUuNWZcbiIsIGFwcGx5IC8gNjU1MzYuMCApKTsKKyAgICBGVF9UUkFDRTYoKCAiICAgIGFwcGx5IGZhY3RvciBpcyAlLjVmXG4iLCAoZG91YmxlKWFwcGx5IC8gNjU1MzYgKSk7CiAKICAgICByZXR1cm4gYXBwbHk7CiAgIH0KQEAgLTE4OTMsMTIgKzE5NzcsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgY29vcmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBub3JtYWxpemVkICkKICAgeworICAgIEZUX0Vycm9yICAgZXJyb3IgID0gRlRfRXJyX09rOworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gZmFjZS0+cm9vdC5tZW1vcnk7CisgICAgRlRfVUludCAgICBpLCBqOworCiAgICAgR1hfQmxlbmQgICAgICAgIGJsZW5kOwogICAgIEZUX01NX1ZhciogICAgICBtbXZhcjsKLSAgICBGVF9VSW50ICAgICAgICAgaSwgajsKICAgICBGVF9WYXJfQXhpcyogICAgYTsKICAgICBHWF9BVmFyU2VnbWVudCAgYXY7CiAKKyAgICBGVF9GaXhlZCogIG5ld19ub3JtYWxpemVkID0gTlVMTDsKKyAgICBGVF9GaXhlZCogIG9sZF9ub3JtYWxpemVkOworCiAKICAgICBibGVuZCA9IGZhY2UtPmJsZW5kOwogICAgIG1tdmFyID0gYmxlbmQtPm1tdmFyOwpAQCAtMTkyMSwxNSArMjAxMSwxNSBAQAogICAgICAgRlRfRml4ZWQgIGNvb3JkID0gY29vcmRzW2ldOwogCiAKLSAgICAgIEZUX1RSQUNFNSgoICIgICAgJWQ6ICUuNWZcbiIsIGksIGNvb3JkIC8gNjU1MzYuMCApKTsKKyAgICAgIEZUX1RSQUNFNSgoICIgICAgJWQ6ICUuNWZcbiIsIGksIChkb3VibGUpY29vcmQgLyA2NTUzNiApKTsKICAgICAgIGlmICggY29vcmQgPiBhLT5tYXhpbXVtIHx8IGNvb3JkIDwgYS0+bWluaW11bSApCiAgICAgICB7CiAgICAgICAgIEZUX1RSQUNFMSgoICJmdF92YXJfdG9fbm9ybWFsaXplZDogZGVzaWduIGNvb3JkaW5hdGUgJS41ZlxuIiwKLSAgICAgICAgICAgICAgICAgICAgY29vcmQgLyA2NTUzNi4wICkpOworICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWNvb3JkIC8gNjU1MzYgKSk7CiAgICAgICAgIEZUX1RSQUNFMSgoICIgICAgICAgICAgICAgICAgICAgICAgaXMgb3V0IG9mIHJhbmdlIFslLjVmOyUuNWZdOyIKICAgICAgICAgICAgICAgICAgICAgIiBjbGFtcGluZ1xuIiwKLSAgICAgICAgICAgICAgICAgICAgYS0+bWluaW11bSAvIDY1NTM2LjAsCi0gICAgICAgICAgICAgICAgICAgIGEtPm1heGltdW0gLyA2NTUzNi4wICkpOworICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWEtPm1pbmltdW0gLyA2NTUzNiwKKyAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSlhLT5tYXhpbXVtIC8gNjU1MzYgKSk7CiAgICAgICB9CiAKICAgICAgIGlmICggY29vcmQgPiBhLT5kZWYgKQpAQCAtMTk0OSwzMSArMjAzOSw5MiBAQAogICAgIGZvciAoIDsgaSA8IG1tdmFyLT5udW1fYXhpczsgaSsrICkKICAgICAgIG5vcm1hbGl6ZWRbaV0gPSAwOwogCi0gICAgaWYgKCBibGVuZC0+YXZhcl9zZWdtZW50ICkKKyAgICBpZiAoIGJsZW5kLT5hdmFyX3RhYmxlICkKICAgICB7CisgICAgICBHWF9BVmFyVGFibGUgIHRhYmxlID0gYmxlbmQtPmF2YXJfdGFibGU7CisKKwogICAgICAgRlRfVFJBQ0U1KCggIm5vcm1hbGl6ZWQgZGVzaWduIGNvb3JkaW5hdGVzIgogICAgICAgICAgICAgICAgICAgIiBiZWZvcmUgYXBwbHlpbmcgYGF2YXInIGRhdGE6XG4iICkpOwogCi0gICAgICBhdiA9IGJsZW5kLT5hdmFyX3NlZ21lbnQ7Ci0gICAgICBmb3IgKCBpID0gMDsgaSA8IG1tdmFyLT5udW1fYXhpczsgaSsrLCBhdisrICkKKyAgICAgIGlmICggdGFibGUtPmF2YXJfc2VnbWVudCApCiAgICAgICB7Ci0gICAgICAgIGZvciAoIGogPSAxOyBqIDwgKEZUX1VJbnQpYXYtPnBhaXJDb3VudDsgaisrICkKLSAgICAgICAgewotICAgICAgICAgIGlmICggbm9ybWFsaXplZFtpXSA8IGF2LT5jb3JyZXNwb25kZW5jZVtqXS5mcm9tQ29vcmQgKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIEZUX1RSQUNFNSgoICIgICUuNWZcbiIsIG5vcm1hbGl6ZWRbaV0gLyA2NTUzNi4wICkpOworICAgICAgICBhdiA9IHRhYmxlLT5hdmFyX3NlZ21lbnQ7CiAKLSAgICAgICAgICAgIG5vcm1hbGl6ZWRbaV0gPQotICAgICAgICAgICAgICBGVF9NdWxEaXYoIG5vcm1hbGl6ZWRbaV0gLSBhdi0+Y29ycmVzcG9uZGVuY2VbaiAtIDFdLmZyb21Db29yZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhdi0+Y29ycmVzcG9uZGVuY2Vbal0udG9Db29yZCAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBhdi0+Y29ycmVzcG9uZGVuY2VbaiAtIDFdLnRvQ29vcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYXYtPmNvcnJlc3BvbmRlbmNlW2pdLmZyb21Db29yZCAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBhdi0+Y29ycmVzcG9uZGVuY2VbaiAtIDFdLmZyb21Db29yZCApICsKLSAgICAgICAgICAgICAgYXYtPmNvcnJlc3BvbmRlbmNlW2ogLSAxXS50b0Nvb3JkOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgbW12YXItPm51bV9heGlzOyBpKyssIGF2KysgKQorICAgICAgICB7CisgICAgICAgICAgZm9yICggaiA9IDE7IGogPCAoRlRfVUludClhdi0+cGFpckNvdW50OyBqKysgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggbm9ybWFsaXplZFtpXSA8IGF2LT5jb3JyZXNwb25kZW5jZVtqXS5mcm9tQ29vcmQgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBGVF9UUkFDRTUoKCAiICAlLjVmXG4iLCAoZG91YmxlKW5vcm1hbGl6ZWRbaV0gLyA2NTUzNiApKTsKKworICAgICAgICAgICAgICBub3JtYWxpemVkW2ldID0KKyAgICAgICAgICAgICAgICBGVF9NdWxEaXYoIG5vcm1hbGl6ZWRbaV0gLSBhdi0+Y29ycmVzcG9uZGVuY2VbaiAtIDFdLmZyb21Db29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2LT5jb3JyZXNwb25kZW5jZVtqXS50b0Nvb3JkIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXYtPmNvcnJlc3BvbmRlbmNlW2ogLSAxXS50b0Nvb3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYXYtPmNvcnJlc3BvbmRlbmNlW2pdLmZyb21Db29yZCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2LT5jb3JyZXNwb25kZW5jZVtqIC0gMV0uZnJvbUNvb3JkICkgKworICAgICAgICAgICAgICAgIGF2LT5jb3JyZXNwb25kZW5jZVtqIC0gMV0udG9Db29yZDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICB9CisKKyAgICAgIGlmICggdGFibGUtPml0ZW1TdG9yZS52YXJEYXRhICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBGVF9RTkVXX0FSUkFZKCBuZXdfbm9ybWFsaXplZCwgbW12YXItPm51bV9heGlzICkgKQorICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvKiBJbnN0YWxsIG91ciBoYWxmLW5vcm1hbGl6ZWQgY29vcmRpbmF0ZXMgZm9yIHRoZSBuZXh0ICovCisgICAgICAgIC8qIEl0ZW0gVmFyaWF0aW9uIFN0b3JlIHRvIHdvcmsgd2l0aC4gICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgb2xkX25vcm1hbGl6ZWQgICAgICAgICAgICAgICAgPSBmYWNlLT5ibGVuZC0+bm9ybWFsaXplZGNvb3JkczsKKyAgICAgICAgZmFjZS0+YmxlbmQtPm5vcm1hbGl6ZWRjb29yZHMgPSBub3JtYWxpemVkOworCisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgbW12YXItPm51bV9heGlzOyBpKysgKQorICAgICAgICB7CisgICAgICAgICAgRlRfRml4ZWQgIHYgICAgICAgICAgPSBub3JtYWxpemVkW2ldOworICAgICAgICAgIEZUX1VJbnQgICBpbm5lckluZGV4ID0gaTsKKyAgICAgICAgICBGVF9VSW50ICAgb3V0ZXJJbmRleCA9IDA7CisgICAgICAgICAgRlRfSW50ICAgIGRlbHRhOworCisKKyAgICAgICAgICBpZiAoIHRhYmxlLT5heGlzTWFwLmlubmVySW5kZXggKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1VJbnQgIGlkeCA9IGk7CisKKworICAgICAgICAgICAgaWYgKCBpZHggPj0gdGFibGUtPmF4aXNNYXAubWFwQ291bnQgKQorICAgICAgICAgICAgICBpZHggPSB0YWJsZS0+YXhpc01hcC5tYXBDb3VudCAtIDE7CisKKyAgICAgICAgICAgIG91dGVySW5kZXggPSB0YWJsZS0+YXhpc01hcC5vdXRlckluZGV4W2lkeF07CisgICAgICAgICAgICBpbm5lckluZGV4ID0gdGFibGUtPmF4aXNNYXAuaW5uZXJJbmRleFtpZHhdOworICAgICAgICAgIH0KKworICAgICAgICAgIGRlbHRhID0gdHRfdmFyX2dldF9pdGVtX2RlbHRhKCBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFibGUtPml0ZW1TdG9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJJbmRleCApOworCisJICB2ICs9IGRlbHRhIDw8IDI7CisKKwkgIC8qIENsYW1wIHZhbHVlIHJhbmdlLiAqLworCSAgdiA9IHYgPj0gIDB4MTAwMDBMID8gIDB4MTAwMDAgOiB2OworCSAgdiA9IHYgPD0gLTB4MTAwMDBMID8gLTB4MTAwMDAgOiB2OworCisgICAgICAgICAgbmV3X25vcm1hbGl6ZWRbaV0gPSB2OworICAgICAgICB9CisKKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBtbXZhci0+bnVtX2F4aXM7IGkrKyApCisgICAgICAgIHsKKyAgICAgICAgICBub3JtYWxpemVkW2ldID0gbmV3X25vcm1hbGl6ZWRbaV07CisgICAgICAgIH0KKworICAgICAgICBmYWNlLT5ibGVuZC0+bm9ybWFsaXplZGNvb3JkcyA9IG9sZF9ub3JtYWxpemVkOworCisgICAgICAgIEZUX0ZSRUUoIG5ld19ub3JtYWxpemVkICk7CisgICAgICB9CiAgICAgfQogICB9CiAKQEAgLTIwMTAsOSArMjE2MSw5IEBACiAgICAgZm9yICggOyBpIDwgbnVtX2Nvb3JkczsgaSsrICkKICAgICAgIGRlc2lnbltpXSA9IDA7CiAKLSAgICBpZiAoIGJsZW5kLT5hdmFyX3NlZ21lbnQgKQorICAgIGlmICggYmxlbmQtPmF2YXJfdGFibGUgJiYgYmxlbmQtPmF2YXJfdGFibGUtPmF2YXJfc2VnbWVudCApCiAgICAgewotICAgICAgR1hfQVZhclNlZ21lbnQgIGF2ID0gYmxlbmQtPmF2YXJfc2VnbWVudDsKKyAgICAgIEdYX0FWYXJTZWdtZW50ICBhdiA9IGJsZW5kLT5hdmFyX3RhYmxlLT5hdmFyX3NlZ21lbnQ7CiAKIAogICAgICAgRlRfVFJBQ0U1KCggImRlc2lnbiBjb29yZGluYXRlcyIKQEAgLTIwMzIsNyArMjE4Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdi0+Y29ycmVzcG9uZGVuY2VbaiAtIDFdLnRvQ29vcmQgKSArCiAgICAgICAgICAgICAgIGF2LT5jb3JyZXNwb25kZW5jZVtqIC0gMV0uZnJvbUNvb3JkOwogCi0gICAgICAgICAgICBGVF9UUkFDRTUoKCAiICAlLjVmXG4iLCBkZXNpZ25baV0gLyA2NTUzNi4wICkpOworICAgICAgICAgICAgRlRfVFJBQ0U1KCggIiAgJS41ZlxuIiwgKGRvdWJsZSlkZXNpZ25baV0gLyA2NTUzNiApKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjE3Nyw2ICsyMzI4LDExIEBACiAgICAgICBGVF9GUkFNRV9FTkQKICAgICB9OwogCisgICAgLyogYG51bV9pbnN0YW5jZXNgIGhvbGRzIHRoZSBudW1iZXIgb2YgYWxsIG5hbWVkIGluc3RhbmNlcyBpbmNsdWRpbmcgICovCisgICAgLyogdGhlIGRlZmF1bHQgaW5zdGFuY2UsIHdoaWNoIG1pZ2h0IGJlIG1pc3NpbmcgaW4gdGhlIHRhYmxlIG9mIG5hbWVkICovCisgICAgLyogaW5zdGFuY2VzIChpbiAnZnZhcicpLiAgVGhpcyB2YWx1ZSBpcyB2YWxpZGF0ZWQgaW4gYHNmb2Jqcy5jYCBhbmQgICovCisgICAgLyogbWF5IGJlIHJlc2V0IHRvIDAgaWYgY29uc2lzdGVuY3kgY2hlY2tzIGZhaWwuICAgICAgICAgICAgICAgICAgICAgICovCisgICAgbnVtX2luc3RhbmNlcyA9IChGVF9VSW50KWZhY2UtPnJvb3Quc3R5bGVfZmxhZ3MgPj4gMTY7CiAKICAgICAvKiByZWFkIHRoZSBmb250IGRhdGEgYW5kIHNldCB1cCB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gKi8KICAgICAvKiBpZiBub3QgYWxyZWFkeSBkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KQEAgLTIxODcsMjAgKzIzNDMsNiBAQAogICAgIHsKICAgICAgIEZUX1RSQUNFMigoICJGVkFSICIgKSk7CiAKLSAgICAgIC8qIGJvdGggYGZ2YXInIGFuZCBgZ3ZhcicgbXVzdCBiZSBwcmVzZW50ICovCi0gICAgICBpZiAoIEZUX1NFVF9FUlJPUiggZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19ndmFyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSwgJnRhYmxlX2xlbiApICkgKQotICAgICAgewotICAgICAgICAvKiBDRkYyIGlzIGFuIGFsdGVybmF0ZSB0byBndmFyIGhlcmUgKi8KLSAgICAgICAgaWYgKCBGVF9TRVRfRVJST1IoIGZhY2UtPmdvdG9fdGFibGUoIGZhY2UsIFRUQUdfQ0ZGMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSwgJnRhYmxlX2xlbiApICkgKQotICAgICAgICB7Ci0gICAgICAgICAgRlRfVFJBQ0UxKCggIlxuIiApKTsKLSAgICAgICAgICBGVF9UUkFDRTEoKCAiVFRfR2V0X01NX1ZhcjogYGd2YXInIG9yIGBDRkYyJyB0YWJsZSBpcyBtaXNzaW5nXG4iICkpOwotICAgICAgICAgIGdvdG8gRXhpdDsKLSAgICAgICAgfQotICAgICAgfQotCiAgICAgICBpZiAoIEZUX1NFVF9FUlJPUiggZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19mdmFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSwgJnRhYmxlX2xlbiApICkgKQogICAgICAgewpAQCAtMjIxNSw2ICsyMzU3LDE3IEBACiAgICAgICBpZiAoIEZUX1NUUkVBTV9SRUFEX0ZJRUxEUyggZnZhcl9maWVsZHMsICZmdmFyX2hlYWQgKSApCiAgICAgICAgIGdvdG8gRXhpdDsKIAorICAgICAgLyogSWYgYG51bV9pbnN0YW5jZXNgIGlzIGxhcmdlciwgc3ludGhldGl6YXRpb24gb2YgdGhlIGRlZmF1bHQgICovCisgICAgICAvKiBpbnN0YW5jZSBpcyByZXF1aXJlZC4gIElmIGBudW1faW5zdGFuY2VzYCBpcyBzbWFsbGVyLCAgICAgICAgKi8KKyAgICAgIC8qIGhvd2V2ZXIsIHRoZSB2YWx1ZSBoYXMgYmVlbiByZXNldCB0byAwIGluIGBzZm50X2luaXRfZmFjZWAgICAqLworICAgICAgLyogKGluIGBzZm9ianMuY2ApOyBpbiB0aGlzIGNhc2Ugd2UgaGF2ZSB1bmRlcmFsbG9jYXRlZCBgbW12YXJgICovCisgICAgICAvKiBzdHJ1Y3RzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIGlmICggbnVtX2luc3RhbmNlcyA8IGZ2YXJfaGVhZC5pbnN0YW5jZUNvdW50ICkKKyAgICAgIHsKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9UYWJsZSApOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisKICAgICAgIHVzZVBzTmFtZSA9IEZUX0JPT0woIGZ2YXJfaGVhZC5pbnN0YW5jZVNpemUgPT0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYgKyA0ICogZnZhcl9oZWFkLmF4aXNDb3VudCApOwogCkBAIC0yMjMzLDExICsyMzg2LDYgQEAKICAgICBlbHNlCiAgICAgICBudW1fYXhlcyA9IGZhY2UtPmJsZW5kLT5udW1fYXhpczsKIAotICAgIC8qIGBudW1faW5zdGFuY2VzJyBob2xkcyB0aGUgbnVtYmVyIG9mIGFsbCBuYW1lZCBpbnN0YW5jZXMsICovCi0gICAgLyogaW5jbHVkaW5nIHRoZSBkZWZhdWx0IGluc3RhbmNlIHdoaWNoIG1pZ2h0IGJlIG1pc3NpbmcgICAgKi8KLSAgICAvKiBpbiBmdmFyJ3MgdGFibGUgb2YgbmFtZWQgaW5zdGFuY2VzICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIG51bV9pbnN0YW5jZXMgPSAoRlRfVUludClmYWNlLT5yb290LnN0eWxlX2ZsYWdzID4+IDE2OwotCiAgICAgLyogcHJlcGFyZSBzdG9yYWdlIGFyZWEgZm9yIE1NIGRhdGE7IHRoaXMgY2Fubm90IG92ZXJmbG93ICAgKi8KICAgICAvKiAzMi1iaXQgYXJpdGhtZXRpYyBiZWNhdXNlIG9mIHRoZSBzaXplIGxpbWl0cyB1c2VkIGluIHRoZSAqLwogICAgIC8qIGBmdmFyJyB0YWJsZSB2YWxpZGl0eSBjaGVjayBpbiBgc2ZudF9pbml0X2ZhY2UnICAgICAgICAgICovCkBAIC0yMzY1LDkgKzI1MTMsOSBAQAogICAgICAgICAgICAgICAgICAgICAiICAlMTAuNWYgICUxMC41ZiAgJTEwLjVmICAweCUwNFglc1xuIiwKICAgICAgICAgICAgICAgICAgICAgaSwKICAgICAgICAgICAgICAgICAgICAgYS0+bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgYS0+bWluaW11bSAvIDY1NTM2LjAsCi0gICAgICAgICAgICAgICAgICAgIGEtPmRlZiAvIDY1NTM2LjAsCi0gICAgICAgICAgICAgICAgICAgIGEtPm1heGltdW0gLyA2NTUzNi4wLAorICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWEtPm1pbmltdW0gLyA2NTUzNiwKKyAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSlhLT5kZWYgLyA2NTUzNiwKKyAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSlhLT5tYXhpbXVtIC8gNjU1MzYsCiAgICAgICAgICAgICAgICAgICAgICpheGlzX2ZsYWdzLAogICAgICAgICAgICAgICAgICAgICBpbnZhbGlkID8gIiAoaW52YWxpZCwgZGlzYWJsZWQpIiA6ICIiICkpOwogI2VuZGlmCkBAIC0yNTY4LDYgKzI3MTYsOCBAQAogICAgICAgICAgIGEtPm5hbWUgPSAoY2hhciopIk9wdGljYWxTaXplIjsKICAgICAgICAgZWxzZSBpZiAoIGEtPnRhZyA9PSBUVEFHX3NsbnQgKQogICAgICAgICAgIGEtPm5hbWUgPSAoY2hhciopIlNsYW50IjsKKyAgICAgICAgZWxzZSBpZiAoIGEtPnRhZyA9PSBUVEFHX2l0YWwgKQorICAgICAgICAgIGEtPm5hbWUgPSAoY2hhciopIkl0YWxpYyI7CiAKICAgICAgICAgbmV4dF9uYW1lICs9IDU7CiAgICAgICAgIGErKzsKQEAgLTI2MjksMTEgKzI3NzksMTEgQEAKIAogICAgIGZvciAoIGkgPSAwOyBpIDwgbnVtX2Nvb3JkczsgaSsrICkKICAgICB7Ci0gICAgICBGVF9UUkFDRTUoKCAiICAgICUuNWZcbiIsIGNvb3Jkc1tpXSAvIDY1NTM2LjAgKSk7CisgICAgICBGVF9UUkFDRTUoKCAiICAgICUuNWZcbiIsIChkb3VibGUpY29vcmRzW2ldIC8gNjU1MzYgKSk7CiAgICAgICBpZiAoIGNvb3Jkc1tpXSA8IC0weDAwMDEwMDAwTCB8fCBjb29yZHNbaV0gPiAweDAwMDEwMDAwTCApCiAgICAgICB7CiAgICAgICAgIEZUX1RSQUNFMSgoICJUVF9TZXRfTU1fQmxlbmQ6IG5vcm1hbGl6ZWQgZGVzaWduIGNvb3JkaW5hdGUgJS41ZlxuIiwKLSAgICAgICAgICAgICAgICAgICAgY29vcmRzW2ldIC8gNjU1MzYuMCApKTsKKyAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSljb29yZHNbaV0gLyA2NTUzNiApKTsKICAgICAgICAgRlRfVFJBQ0UxKCggIiAgICAgICAgICAgICAgICAgaXMgb3V0IG9mIHJhbmdlIFstMTsxXVxuIiApKTsKICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOwogICAgICAgICBnb3RvIEV4aXQ7CkBAIC0yNjQzLDggKzI3OTMsMTYgQEAKICAgICBGVF9UUkFDRTUoKCAiXG4iICkpOwogCiAgICAgaWYgKCAhZmFjZS0+aXNfY2ZmMiAmJiAhYmxlbmQtPmdseXBob2Zmc2V0cyApCi0gICAgICBpZiAoIEZUX1NFVF9FUlJPUiggZnRfdmFyX2xvYWRfZ3ZhciggZmFjZSApICkgKQorICAgIHsKKyAgICAgIC8qIFdoaWxlIGEgbWlzc2luZyAnZ3ZhcicgdGFibGUgaXMgYWNjZXB0YWJsZSwgZm9yIGV4YW1wbGUgZm9yICovCisgICAgICAvKiBmb250cyB0aGF0IG9ubHkgdmFyeSBtZXRyaWNzIGluZm9ybWF0aW9uIG9yICdDT0xSJyB2MSAgICAgICAqLworICAgICAgLyogYFBhaW50VmFyKmAgdGFibGVzLCBhbiBpbmNvcnJlY3QgU0ZOVCB0YWJsZSBvZmZzZXQgb3Igc2l6ZSAgKi8KKyAgICAgIC8qIGZvciAnZ3ZhcicsIG9yIGFuIGluY29uc2lzdGVudCAnZ3ZhcicgdGFibGUgaXMgbm90LiAgICAgICAgICovCisgICAgICBlcnJvciA9IGZ0X3Zhcl9sb2FkX2d2YXIoIGZhY2UgKTsKKyAgICAgIGlmICggZXJyb3IgIT0gRlRfRXJyX1RhYmxlX01pc3NpbmcgJiYgZXJyb3IgIT0gRlRfRXJyX09rICkKICAgICAgICAgZ290byBFeGl0OworICAgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgfQogCiAgICAgaWYgKCAhYmxlbmQtPmNvb3JkcyApCiAgICAgewpAQCAtMjc1Myw3ICsyOTExLDYgQEAKICAgICAgICAgLyogVGhlIGN2dCB0YWJsZSBoYXMgYmVlbiBsb2FkZWQgYWxyZWFkeTsgZXZlcnkgdGltZSB3ZSBjaGFuZ2UgdGhlICovCiAgICAgICAgIC8qIGJsZW5kIHdlIG1heSBuZWVkIHRvIHJlbG9hZCBhbmQgcmVtb2RpZnkgdGhlIGN2dCB0YWJsZS4gICAgICAgICAqLwogICAgICAgICBGVF9GUkVFKCBmYWNlLT5jdnQgKTsKLSAgICAgICAgZmFjZS0+Y3Z0ID0gTlVMTDsKIAogICAgICAgICBlcnJvciA9IHR0X2ZhY2VfbG9hZF9jdnQoIGZhY2UsIGZhY2UtPnJvb3Quc3RyZWFtICk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjc3Miw3ICsyOTI5LDYgQEAKIAogICAgIC8qIGVuZm9yY2UgcmVjb21wdXRhdGlvbiBvZiB0aGUgUG9zdFNjcmlwdCBuYW1lOyAqLwogICAgIEZUX0ZSRUUoIGZhY2UtPnBvc3RzY3JpcHRfbmFtZSApOwotICAgIGZhY2UtPnBvc3RzY3JpcHRfbmFtZSA9IE5VTEw7CiAKICAgRXhpdDoKICAgICByZXR1cm4gZXJyb3I7CkBAIC0zNDc2LDYgKzM2MzIsNyBAQAogICAgICAgfQogICAgICAgZWxzZQogICAgICAgeworICAgICAgICBsb2NhbHBvaW50cyA9IE5VTEw7CiAgICAgICAgIHBvaW50cyAgICAgID0gc2hhcmVkcG9pbnRzOwogICAgICAgICBwb2ludF9jb3VudCA9IHNwb2ludF9jb3VudDsKICAgICAgIH0KQEAgLTM1MTEsMTAgKzM2NjgsMTAgQEAKICAgICAgICAgICB7CiAgICAgICAgICAgICBGVF9UUkFDRTcoKCAiICAgICAgJWQ6ICVmIC0+ICVmXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICggRlRfZmRvdDZUb0ZpeGVkKCBmYWNlLT5jdnRbal0gKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9jdnRfZGVsdGEgKSAvIDY1NTM2LjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAoIEZUX2Zkb3Q2VG9GaXhlZCggZmFjZS0+Y3Z0W2pdICkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICBjdnRfZGVsdGFzW2pdICkgLyA2NTUzNi4wICkpOworICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkoIEZUX2Zkb3Q2VG9GaXhlZCggZmFjZS0+Y3Z0W2pdICkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2N2dF9kZWx0YSApIC8gNjU1MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKSggRlRfZmRvdDZUb0ZpeGVkKCBmYWNlLT5jdnRbal0gKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdnRfZGVsdGFzW2pdICkgLyA2NTUzNiApKTsKICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgfQogI2VuZGlmCkBAIC0zNTUzLDEwICszNzEwLDEwIEBACiAgICAgICAgICAgewogICAgICAgICAgICAgRlRfVFJBQ0U3KCggIiAgICAgICVkOiAlZiAtPiAlZlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICggRlRfZmRvdDZUb0ZpeGVkKCBmYWNlLT5jdnRbcGluZGV4XSApICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2N2dF9kZWx0YSApIC8gNjU1MzYuMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICggRlRfZmRvdDZUb0ZpeGVkKCBmYWNlLT5jdnRbcGluZGV4XSApICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3Z0X2RlbHRhc1twaW5kZXhdICkgLyA2NTUzNi4wICkpOworICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkoIEZUX2Zkb3Q2VG9GaXhlZCggZmFjZS0+Y3Z0W3BpbmRleF0gKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfY3Z0X2RlbHRhICkgLyA2NTUzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpKCBGVF9mZG90NlRvRml4ZWQoIGZhY2UtPmN2dFtwaW5kZXhdICkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Z0X2RlbHRhc1twaW5kZXhdICkgLyA2NTUzNiApKTsKICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgfQogI2VuZGlmCkBAIC0zODIxLDIwICszOTc4LDEyIEBACiAgICAqIEBEZXNjcmlwdGlvbjoKICAgICogICBBcHBseSB0aGUgYXBwcm9wcmlhdGUgZGVsdGFzIHRvIHRoZSBjdXJyZW50IGdseXBoLgogICAgKgotICAgKiBASW5wdXQ6Ci0gICAqICAgZmFjZSA6OgotICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBmYWNlIG9iamVjdC4KLSAgICoKLSAgICogICBnbHlwaF9pbmRleCA6OgotICAgKiAgICAgVGhlIGluZGV4IG9mIHRoZSBnbHlwaCBiZWluZyBtb2RpZmllZC4KLSAgICoKLSAgICogICBuX3BvaW50cyA6OgotICAgKiAgICAgVGhlIG51bWJlciBvZiB0aGUgcG9pbnRzIGluIHRoZSBnbHlwaCwgaW5jbHVkaW5nCi0gICAqICAgICBwaGFudG9tIHBvaW50cy4KLSAgICoKICAgICogQEluT3V0OgorICAgKiAgIGxvYWRlciA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIGxvYWRlciBvYmplY3QuCisgICAqCiAgICAqICAgb3V0bGluZSA6OgotICAgKiAgICAgVGhlIG91dGxpbmUgdG8gY2hhbmdlLgorICAgKiAgICAgVGhlIG91dGxpbmUgdG8gY2hhbmdlLCB3aXRoIGFwcGVuZGVkIHBoYW50b20gcG9pbnRzLgogICAgKgogICAgKiBAT3V0cHV0OgogICAgKiAgIHVucm91bmRlZCA6OgpAQCAtMzg0NSwxNSArMzk5NCwxNiBAQAogICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuCiAgICAqLwogICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKLSAgVFRfVmFyeV9BcHBseV9HbHlwaF9EZWx0YXMoIFRUX0ZhY2UgICAgICBmYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgIGdseXBoX2luZGV4LAorICBUVF9WYXJ5X0FwcGx5X0dseXBoX0RlbHRhcyggVFRfTG9hZGVyICAgIGxvYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX091dGxpbmUqICBvdXRsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgIHVucm91bmRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICBuX3BvaW50cyApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICAgdW5yb3VuZGVkICkKICAgewogICAgIEZUX0Vycm9yICAgZXJyb3I7Ci0gICAgRlRfU3RyZWFtICBzdHJlYW0gPSBmYWNlLT5yb290LnN0cmVhbTsKLSAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IHN0cmVhbS0+bWVtb3J5OworICAgIFRUX0ZhY2UgICAgZmFjZSAgICAgICAgPSBsb2FkZXItPmZhY2U7CisgICAgRlRfU3RyZWFtICBzdHJlYW0gICAgICA9IGZhY2UtPnJvb3Quc3RyZWFtOworICAgIEZUX01lbW9yeSAgbWVtb3J5ICAgICAgPSBzdHJlYW0tPm1lbW9yeTsKKyAgICBGVF9VSW50ICAgIGdseXBoX2luZGV4ID0gbG9hZGVyLT5nbHlwaF9pbmRleDsKKyAgICBGVF9VSW50ICAgIG5fcG9pbnRzICAgID0gKEZUX1VJbnQpb3V0bGluZS0+bl9wb2ludHMgKyA0OwogCiAgICAgRlRfVmVjdG9yKiAgcG9pbnRzX29yZyA9IE5VTEw7ICAvKiBjb29yZGluYXRlcyBpbiAxNi4xNiBmb3JtYXQgKi8KICAgICBGVF9WZWN0b3IqICBwb2ludHNfb3V0ID0gTlVMTDsgIC8qIGNvb3JkaW5hdGVzIGluIDE2LjE2IGZvcm1hdCAqLwpAQCAtNDA3MSw1MCArNDIyMSwyMiBAQAogICAgICAgICAgIEZUX0ZpeGVkICBwb2ludF9kZWx0YV95ID0gRlRfTXVsRml4KCBkZWx0YXNfeVtqXSwgYXBwbHkgKTsKIAogCi0gICAgICAgICAgaWYgKCBqIDwgbl9wb2ludHMgLSA0ICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBwb2ludF9kZWx0YXNfeFtqXSA9IG9sZF9wb2ludF9kZWx0YV94ICsgcG9pbnRfZGVsdGFfeDsKLSAgICAgICAgICAgIHBvaW50X2RlbHRhc195W2pdID0gb2xkX3BvaW50X2RlbHRhX3kgKyBwb2ludF9kZWx0YV95OwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgLyogVG8gYXZvaWQgZG91YmxlIGFkanVzdG1lbnQgb2YgYWR2YW5jZSB3aWR0aCBvciBoZWlnaHQsICovCi0gICAgICAgICAgICAvKiBhZGp1c3QgcGhhbnRvbSBwb2ludHMgb25seSBpZiB0aGVyZSBpcyBubyBIVkFSIG9yIFZWQVIgKi8KLSAgICAgICAgICAgIC8qIHN1cHBvcnQsIHJlc3BlY3RpdmVseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKCBqID09ICggbl9wb2ludHMgLSA0ICkgICAgICAgICYmCi0gICAgICAgICAgICAgICAgICEoIGZhY2UtPnZhcmlhdGlvbl9zdXBwb3J0ICYKLSAgICAgICAgICAgICAgICAgICAgVFRfRkFDRV9GTEFHX1ZBUl9MU0IgICAgKSApCi0gICAgICAgICAgICAgIHBvaW50X2RlbHRhc194W2pdID0gb2xkX3BvaW50X2RlbHRhX3ggKyBwb2ludF9kZWx0YV94OwotCi0gICAgICAgICAgICBlbHNlIGlmICggaiA9PSAoIG5fcG9pbnRzIC0gMyApICAgICAgICAgICYmCi0gICAgICAgICAgICAgICAgICAgICAgISggZmFjZS0+dmFyaWF0aW9uX3N1cHBvcnQgICAmCi0gICAgICAgICAgICAgICAgICAgICAgICAgVFRfRkFDRV9GTEFHX1ZBUl9IQURWQU5DRSApICkKLSAgICAgICAgICAgICAgcG9pbnRfZGVsdGFzX3hbal0gPSBvbGRfcG9pbnRfZGVsdGFfeCArIHBvaW50X2RlbHRhX3g7Ci0KLSAgICAgICAgICAgIGVsc2UgaWYgKCBqID09ICggbl9wb2ludHMgLSAyICkgICAgICAgICYmCi0gICAgICAgICAgICAgICAgICAgICAgISggZmFjZS0+dmFyaWF0aW9uX3N1cHBvcnQgJgotICAgICAgICAgICAgICAgICAgICAgICAgIFRUX0ZBQ0VfRkxBR19WQVJfVFNCICAgICkgKQotICAgICAgICAgICAgICBwb2ludF9kZWx0YXNfeVtqXSA9IG9sZF9wb2ludF9kZWx0YV95ICsgcG9pbnRfZGVsdGFfeTsKLQotICAgICAgICAgICAgZWxzZSBpZiAoIGogPT0gKCBuX3BvaW50cyAtIDEgKSAgICAgICAgICAmJgotICAgICAgICAgICAgICAgICAgICAgICEoIGZhY2UtPnZhcmlhdGlvbl9zdXBwb3J0ICAgJgotICAgICAgICAgICAgICAgICAgICAgICAgIFRUX0ZBQ0VfRkxBR19WQVJfVkFEVkFOQ0UgKSApCi0gICAgICAgICAgICAgIHBvaW50X2RlbHRhc195W2pdID0gb2xkX3BvaW50X2RlbHRhX3kgKyBwb2ludF9kZWx0YV95OwotICAgICAgICAgIH0KKyAgICAgICAgICBwb2ludF9kZWx0YXNfeFtqXSA9IG9sZF9wb2ludF9kZWx0YV94ICsgcG9pbnRfZGVsdGFfeDsKKyAgICAgICAgICBwb2ludF9kZWx0YXNfeVtqXSA9IG9sZF9wb2ludF9kZWx0YV95ICsgcG9pbnRfZGVsdGFfeTsKIAogI2lmZGVmIEZUX0RFQlVHX0xFVkVMX1RSQUNFCiAgICAgICAgICAgaWYgKCBwb2ludF9kZWx0YV94IHx8IHBvaW50X2RlbHRhX3kgKQogICAgICAgICAgIHsKICAgICAgICAgICAgIEZUX1RSQUNFNygoICIgICAgICAlZDogKCVmLCAlZikgLT4gKCVmLCAlZilcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBqLAotICAgICAgICAgICAgICAgICAgICAgICAgKCBGVF9pbnRUb0ZpeGVkKCBvdXRsaW5lLT5wb2ludHNbal0ueCApICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX3BvaW50X2RlbHRhX3ggKSAvIDY1NTM2LjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAoIEZUX2ludFRvRml4ZWQoIG91dGxpbmUtPnBvaW50c1tqXS55ICkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfcG9pbnRfZGVsdGFfeSApIC8gNjU1MzYuMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICggRlRfaW50VG9GaXhlZCggb3V0bGluZS0+cG9pbnRzW2pdLnggKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50X2RlbHRhc194W2pdICkgLyA2NTUzNi4wLAotICAgICAgICAgICAgICAgICAgICAgICAgKCBGVF9pbnRUb0ZpeGVkKCBvdXRsaW5lLT5wb2ludHNbal0ueSApICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRfZGVsdGFzX3lbal0gKSAvIDY1NTM2LjAgKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKSggRlRfaW50VG9GaXhlZCggb3V0bGluZS0+cG9pbnRzW2pdLnggKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfcG9pbnRfZGVsdGFfeCApIC8gNjU1MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKSggRlRfaW50VG9GaXhlZCggb3V0bGluZS0+cG9pbnRzW2pdLnkgKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfcG9pbnRfZGVsdGFfeSApIC8gNjU1MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKSggRlRfaW50VG9GaXhlZCggb3V0bGluZS0+cG9pbnRzW2pdLnggKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludF9kZWx0YXNfeFtqXSApIC8gNjU1MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKSggRlRfaW50VG9GaXhlZCggb3V0bGluZS0+cG9pbnRzW2pdLnkgKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludF9kZWx0YXNfeVtqXSApIC8gNjU1MzYgKSk7CiAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgIH0KICNlbmRpZgpAQCAtNDE3Myw1MCArNDI5NSwyMiBAQAogICAgICAgICAgIEZUX1BvcyAgcG9pbnRfZGVsdGFfeSA9IHBvaW50c19vdXRbal0ueSAtIHBvaW50c19vcmdbal0ueTsKIAogCi0gICAgICAgICAgaWYgKCBqIDwgbl9wb2ludHMgLSA0ICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBwb2ludF9kZWx0YXNfeFtqXSA9IG9sZF9wb2ludF9kZWx0YV94ICsgcG9pbnRfZGVsdGFfeDsKLSAgICAgICAgICAgIHBvaW50X2RlbHRhc195W2pdID0gb2xkX3BvaW50X2RlbHRhX3kgKyBwb2ludF9kZWx0YV95OwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgLyogVG8gYXZvaWQgZG91YmxlIGFkanVzdG1lbnQgb2YgYWR2YW5jZSB3aWR0aCBvciBoZWlnaHQsICovCi0gICAgICAgICAgICAvKiBhZGp1c3QgcGhhbnRvbSBwb2ludHMgb25seSBpZiB0aGVyZSBpcyBubyBIVkFSIG9yIFZWQVIgKi8KLSAgICAgICAgICAgIC8qIHN1cHBvcnQsIHJlc3BlY3RpdmVseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKCBqID09ICggbl9wb2ludHMgLSA0ICkgICAgICAgICYmCi0gICAgICAgICAgICAgICAgICEoIGZhY2UtPnZhcmlhdGlvbl9zdXBwb3J0ICYKLSAgICAgICAgICAgICAgICAgICAgVFRfRkFDRV9GTEFHX1ZBUl9MU0IgICAgKSApCi0gICAgICAgICAgICAgIHBvaW50X2RlbHRhc194W2pdID0gb2xkX3BvaW50X2RlbHRhX3ggKyBwb2ludF9kZWx0YV94OwotCi0gICAgICAgICAgICBlbHNlIGlmICggaiA9PSAoIG5fcG9pbnRzIC0gMyApICAgICAgICAgICYmCi0gICAgICAgICAgICAgICAgICAgICAgISggZmFjZS0+dmFyaWF0aW9uX3N1cHBvcnQgICAmCi0gICAgICAgICAgICAgICAgICAgICAgICAgVFRfRkFDRV9GTEFHX1ZBUl9IQURWQU5DRSApICkKLSAgICAgICAgICAgICAgcG9pbnRfZGVsdGFzX3hbal0gPSBvbGRfcG9pbnRfZGVsdGFfeCArIHBvaW50X2RlbHRhX3g7Ci0KLSAgICAgICAgICAgIGVsc2UgaWYgKCBqID09ICggbl9wb2ludHMgLSAyICkgICAgICAgICYmCi0gICAgICAgICAgICAgICAgICAgICAgISggZmFjZS0+dmFyaWF0aW9uX3N1cHBvcnQgJgotICAgICAgICAgICAgICAgICAgICAgICAgIFRUX0ZBQ0VfRkxBR19WQVJfVFNCICAgICkgKQotICAgICAgICAgICAgICBwb2ludF9kZWx0YXNfeVtqXSA9IG9sZF9wb2ludF9kZWx0YV95ICsgcG9pbnRfZGVsdGFfeTsKLQotICAgICAgICAgICAgZWxzZSBpZiAoIGogPT0gKCBuX3BvaW50cyAtIDEgKSAgICAgICAgICAmJgotICAgICAgICAgICAgICAgICAgICAgICEoIGZhY2UtPnZhcmlhdGlvbl9zdXBwb3J0ICAgJgotICAgICAgICAgICAgICAgICAgICAgICAgIFRUX0ZBQ0VfRkxBR19WQVJfVkFEVkFOQ0UgKSApCi0gICAgICAgICAgICAgIHBvaW50X2RlbHRhc195W2pdID0gb2xkX3BvaW50X2RlbHRhX3kgKyBwb2ludF9kZWx0YV95OwotICAgICAgICAgIH0KKyAgICAgICAgICBwb2ludF9kZWx0YXNfeFtqXSA9IG9sZF9wb2ludF9kZWx0YV94ICsgcG9pbnRfZGVsdGFfeDsKKyAgICAgICAgICBwb2ludF9kZWx0YXNfeVtqXSA9IG9sZF9wb2ludF9kZWx0YV95ICsgcG9pbnRfZGVsdGFfeTsKIAogI2lmZGVmIEZUX0RFQlVHX0xFVkVMX1RSQUNFCiAgICAgICAgICAgaWYgKCBwb2ludF9kZWx0YV94IHx8IHBvaW50X2RlbHRhX3kgKQogICAgICAgICAgIHsKICAgICAgICAgICAgIEZUX1RSQUNFNygoICIgICAgICAlZDogKCVmLCAlZikgLT4gKCVmLCAlZilcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBqLAotICAgICAgICAgICAgICAgICAgICAgICAgKCBGVF9pbnRUb0ZpeGVkKCBvdXRsaW5lLT5wb2ludHNbal0ueCApICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX3BvaW50X2RlbHRhX3ggKSAvIDY1NTM2LjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAoIEZUX2ludFRvRml4ZWQoIG91dGxpbmUtPnBvaW50c1tqXS55ICkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfcG9pbnRfZGVsdGFfeSApIC8gNjU1MzYuMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICggRlRfaW50VG9GaXhlZCggb3V0bGluZS0+cG9pbnRzW2pdLnggKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50X2RlbHRhc194W2pdICkgLyA2NTUzNi4wLAotICAgICAgICAgICAgICAgICAgICAgICAgKCBGVF9pbnRUb0ZpeGVkKCBvdXRsaW5lLT5wb2ludHNbal0ueSApICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRfZGVsdGFzX3lbal0gKSAvIDY1NTM2LjAgKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKSggRlRfaW50VG9GaXhlZCggb3V0bGluZS0+cG9pbnRzW2pdLnggKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfcG9pbnRfZGVsdGFfeCApIC8gNjU1MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKSggRlRfaW50VG9GaXhlZCggb3V0bGluZS0+cG9pbnRzW2pdLnkgKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfcG9pbnRfZGVsdGFfeSApIC8gNjU1MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKSggRlRfaW50VG9GaXhlZCggb3V0bGluZS0+cG9pbnRzW2pdLnggKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludF9kZWx0YXNfeFtqXSApIC8gNjU1MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKSggRlRfaW50VG9GaXhlZCggb3V0bGluZS0+cG9pbnRzW2pdLnkgKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludF9kZWx0YXNfeVtqXSApIC8gNjU1MzYgKSk7CiAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgIH0KICNlbmRpZgpAQCAtNDI0MCw2ICs0MzM0LDI0IEBACiAKICAgICBGVF9UUkFDRTUoKCAiXG4iICkpOwogCisgICAgLyogVG8gYXZvaWQgZG91YmxlIGFkanVzdG1lbnQgb2YgYWR2YW5jZSB3aWR0aCBvciBoZWlnaHQsICovCisgICAgLyogZG8gbm90IG1vdmUgcGhhbnRvbSBwb2ludHMgaWYgdGhlcmUgaXMgSFZBUiBvciBWVkFSICAgICovCisgICAgLyogc3VwcG9ydCwgcmVzcGVjdGl2ZWx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCBmYWNlLT52YXJpYXRpb25fc3VwcG9ydCAmIFRUX0ZBQ0VfRkxBR19WQVJfSEFEVkFOQ0UgKQorICAgIHsKKyAgICAgIHBvaW50X2RlbHRhc194W25fcG9pbnRzIC0gNF0gPSAwOworICAgICAgcG9pbnRfZGVsdGFzX3lbbl9wb2ludHMgLSA0XSA9IDA7CisgICAgICBwb2ludF9kZWx0YXNfeFtuX3BvaW50cyAtIDNdID0gMDsKKyAgICAgIHBvaW50X2RlbHRhc195W25fcG9pbnRzIC0gM10gPSAwOworICAgIH0KKyAgICBpZiAoIGZhY2UtPnZhcmlhdGlvbl9zdXBwb3J0ICYgVFRfRkFDRV9GTEFHX1ZBUl9WQURWQU5DRSApCisgICAgeworICAgICAgcG9pbnRfZGVsdGFzX3hbbl9wb2ludHMgLSAyXSA9IDA7CisgICAgICBwb2ludF9kZWx0YXNfeVtuX3BvaW50cyAtIDJdID0gMDsKKyAgICAgIHBvaW50X2RlbHRhc194W25fcG9pbnRzIC0gMV0gPSAwOworICAgICAgcG9pbnRfZGVsdGFzX3lbbl9wb2ludHMgLSAxXSA9IDA7CisgICAgfQorCiAgICAgZm9yICggaSA9IDA7IGkgPCBuX3BvaW50czsgaSsrICkKICAgICB7CiAgICAgICB1bnJvdW5kZWRbaV0ueCArPSBGVF9maXhlZFRvRmRvdDYoIHBvaW50X2RlbHRhc194W2ldICk7CkBAIC00MjQ5LDYgKzQzNjEsMjQgQEAKICAgICAgIG91dGxpbmUtPnBvaW50c1tpXS55ICs9IEZUX2ZpeGVkVG9JbnQoIHBvaW50X2RlbHRhc195W2ldICk7CiAgICAgfQogCisgICAgLyogVG8gYXZvaWQgZG91YmxlIGFkanVzdG1lbnQgb2YgYWR2YW5jZSB3aWR0aCBvciBoZWlnaHQsICovCisgICAgLyogYWRqdXN0IHBoYW50b20gcG9pbnRzIG9ubHkgaWYgdGhlcmUgaXMgbm8gSFZBUiBvciBWVkFSICovCisgICAgLyogc3VwcG9ydCwgcmVzcGVjdGl2ZWx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCAhKCBmYWNlLT52YXJpYXRpb25fc3VwcG9ydCAmIFRUX0ZBQ0VfRkxBR19WQVJfSEFEVkFOQ0UgKSApCisgICAgeworICAgICAgbG9hZGVyLT5wcDEgICAgICA9IG91dGxpbmUtPnBvaW50c1tuX3BvaW50cyAtIDRdOworICAgICAgbG9hZGVyLT5wcDIgICAgICA9IG91dGxpbmUtPnBvaW50c1tuX3BvaW50cyAtIDNdOworICAgICAgbG9hZGVyLT5saW5lYXIgICA9IEZUX1BJWF9ST1VORCggdW5yb3VuZGVkW25fcG9pbnRzIC0gM10ueCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnJvdW5kZWRbbl9wb2ludHMgLSA0XS54ICkgLyA2NDsKKyAgICB9CisgICAgaWYgKCAhKCBmYWNlLT52YXJpYXRpb25fc3VwcG9ydCAmIFRUX0ZBQ0VfRkxBR19WQVJfVkFEVkFOQ0UgKSApCisgICAgeworICAgICAgbG9hZGVyLT5wcDMgICAgICA9IG91dGxpbmUtPnBvaW50c1tuX3BvaW50cyAtIDJdOworICAgICAgbG9hZGVyLT5wcDQgICAgICA9IG91dGxpbmUtPnBvaW50c1tuX3BvaW50cyAtIDFdOworICAgICAgbG9hZGVyLT52YWR2YW5jZSA9IEZUX1BJWF9ST1VORCggdW5yb3VuZGVkW25fcG9pbnRzIC0gMV0ueSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnJvdW5kZWRbbl9wb2ludHMgLSAyXS55ICkgLyA2NDsKKyAgICB9CisKICAgRmFpbDM6CiAgICAgRlRfRlJFRSggcG9pbnRfZGVsdGFzX3ggKTsKICAgICBGVF9GUkVFKCBwb2ludF9kZWx0YXNfeSApOwpAQCAtNDMxMyw4ICs0NDQzLDggQEAKICAgfQogCiAKLSAgc3RhdGljIHZvaWQKLSAgZnRfdmFyX2RvbmVfaXRlbV92YXJpYXRpb25fc3RvcmUoIFRUX0ZhY2UgICAgICAgICAgZmFjZSwKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgdHRfdmFyX2RvbmVfaXRlbV92YXJpYXRpb25fc3RvcmUoIFRUX0ZhY2UgICAgICAgICAgZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdYX0l0ZW1WYXJTdG9yZSAgaXRlbVN0b3JlICkKICAgewogICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gRlRfRkFDRV9NRU1PUlkoIGZhY2UgKTsKQEAgLTQzNDIsNiArNDQ3MiwxOCBAQAogICB9CiAKIAorICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICB0dF92YXJfZG9uZV9kZWx0YV9zZXRfaW5kZXhfbWFwKCBUVF9GYWNlICAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1hfRGVsdGFTZXRJZHhNYXAgIGRlbHRhU2V0SWR4TWFwICkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gRlRfRkFDRV9NRU1PUlkoIGZhY2UgKTsKKworCisgICAgRlRfRlJFRSggZGVsdGFTZXRJZHhNYXAtPmlubmVySW5kZXggKTsKKyAgICBGVF9GUkVFKCBkZWx0YVNldElkeE1hcC0+b3V0ZXJJbmRleCApOworICB9CisKKwogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICoKICAgICogQEZ1bmN0aW9uOgpAQCAtNDM3MCwzNiArNDUxMiw0NyBAQAogICAgICAgRlRfRlJFRSggYmxlbmQtPm5vcm1hbGl6ZWRfc3R5bGVjb29yZHMgKTsKICAgICAgIEZUX0ZSRUUoIGJsZW5kLT5tbXZhciApOwogCi0gICAgICBpZiAoIGJsZW5kLT5hdmFyX3NlZ21lbnQgKQorICAgICAgaWYgKCBibGVuZC0+YXZhcl90YWJsZSApCiAgICAgICB7Ci0gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgbnVtX2F4ZXM7IGkrKyApCi0gICAgICAgICAgRlRfRlJFRSggYmxlbmQtPmF2YXJfc2VnbWVudFtpXS5jb3JyZXNwb25kZW5jZSApOwotICAgICAgICBGVF9GUkVFKCBibGVuZC0+YXZhcl9zZWdtZW50ICk7CisgICAgICAgIGlmICggYmxlbmQtPmF2YXJfdGFibGUtPmF2YXJfc2VnbWVudCApCisgICAgICAgIHsKKyAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IG51bV9heGVzOyBpKysgKQorICAgICAgICAgICAgRlRfRlJFRSggYmxlbmQtPmF2YXJfdGFibGUtPmF2YXJfc2VnbWVudFtpXS5jb3JyZXNwb25kZW5jZSApOworICAgICAgICAgIEZUX0ZSRUUoIGJsZW5kLT5hdmFyX3RhYmxlLT5hdmFyX3NlZ21lbnQgKTsKKyAgICAgICAgfQorCisgICAgICAgIHR0X3Zhcl9kb25lX2l0ZW1fdmFyaWF0aW9uX3N0b3JlKCBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJsZW5kLT5hdmFyX3RhYmxlLT5pdGVtU3RvcmUgKTsKKworICAgICAgICB0dF92YXJfZG9uZV9kZWx0YV9zZXRfaW5kZXhfbWFwKCBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYmxlbmQtPmF2YXJfdGFibGUtPmF4aXNNYXAgKTsKKworICAgICAgICBGVF9GUkVFKCBibGVuZC0+YXZhcl90YWJsZSApOwogICAgICAgfQogCiAgICAgICBpZiAoIGJsZW5kLT5odmFyX3RhYmxlICkKICAgICAgIHsKLSAgICAgICAgZnRfdmFyX2RvbmVfaXRlbV92YXJpYXRpb25fc3RvcmUoIGZhY2UsCisgICAgICAgIHR0X3Zhcl9kb25lX2l0ZW1fdmFyaWF0aW9uX3N0b3JlKCBmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJsZW5kLT5odmFyX3RhYmxlLT5pdGVtU3RvcmUgKTsKIAotICAgICAgICBGVF9GUkVFKCBibGVuZC0+aHZhcl90YWJsZS0+d2lkdGhNYXAuaW5uZXJJbmRleCApOwotICAgICAgICBGVF9GUkVFKCBibGVuZC0+aHZhcl90YWJsZS0+d2lkdGhNYXAub3V0ZXJJbmRleCApOworICAgICAgICB0dF92YXJfZG9uZV9kZWx0YV9zZXRfaW5kZXhfbWFwKCBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYmxlbmQtPmh2YXJfdGFibGUtPndpZHRoTWFwICk7CiAgICAgICAgIEZUX0ZSRUUoIGJsZW5kLT5odmFyX3RhYmxlICk7CiAgICAgICB9CiAKICAgICAgIGlmICggYmxlbmQtPnZ2YXJfdGFibGUgKQogICAgICAgewotICAgICAgICBmdF92YXJfZG9uZV9pdGVtX3ZhcmlhdGlvbl9zdG9yZSggZmFjZSwKKyAgICAgICAgdHRfdmFyX2RvbmVfaXRlbV92YXJpYXRpb25fc3RvcmUoIGZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYmxlbmQtPnZ2YXJfdGFibGUtPml0ZW1TdG9yZSApOwogCi0gICAgICAgIEZUX0ZSRUUoIGJsZW5kLT52dmFyX3RhYmxlLT53aWR0aE1hcC5pbm5lckluZGV4ICk7Ci0gICAgICAgIEZUX0ZSRUUoIGJsZW5kLT52dmFyX3RhYmxlLT53aWR0aE1hcC5vdXRlckluZGV4ICk7CisgICAgICAgIHR0X3Zhcl9kb25lX2RlbHRhX3NldF9pbmRleF9tYXAoIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZibGVuZC0+dnZhcl90YWJsZS0+d2lkdGhNYXAgKTsKICAgICAgICAgRlRfRlJFRSggYmxlbmQtPnZ2YXJfdGFibGUgKTsKICAgICAgIH0KIAogICAgICAgaWYgKCBibGVuZC0+bXZhcl90YWJsZSApCiAgICAgICB7Ci0gICAgICAgIGZ0X3Zhcl9kb25lX2l0ZW1fdmFyaWF0aW9uX3N0b3JlKCBmYWNlLAorICAgICAgICB0dF92YXJfZG9uZV9pdGVtX3ZhcmlhdGlvbl9zdG9yZSggZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZibGVuZC0+bXZhcl90YWJsZS0+aXRlbVN0b3JlICk7CiAKICAgICAgICAgRlRfRlJFRSggYmxlbmQtPm12YXJfdGFibGUtPnZhbHVlcyApOwpkaWZmIC0tZ2l0IGEvc3JjL3RydWV0eXBlL3R0Z3h2YXIuaCBiL3NyYy90cnVldHlwZS90dGd4dmFyLmgKaW5kZXggZGVkOWVhMS4uNGZlYzk4MCAxMDA2NDQKLS0tIGEvc3JjL3RydWV0eXBlL3R0Z3h2YXIuaAorKysgYi9zcmMvdHJ1ZXR5cGUvdHRneHZhci5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHJ1ZVR5cGUgR1ggRm9udCBWYXJpYXRpb24gbG9hZGVyIChzcGVjaWZpY2F0aW9uKQogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgV2VybmVyIExlbWJlcmcgYW5kIEdlb3JnZSBXaWxsaWFtcy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0yMCw2ICsyMCw3IEBACiAjZGVmaW5lIFRUR1hWQVJfSF8KIAogCisjaW5jbHVkZSA8ZnJlZXR5cGUvaW50ZXJuYWwvZnRtbXR5cGVzLmg+CiAjaW5jbHVkZSAidHRvYmpzLmgiCiAKIApAQCAtNjIsNTUgKzYzLDIxIEBACiAgIH0gR1hfQVZhclNlZ21lbnRSZWMsICpHWF9BVmFyU2VnbWVudDsKIAogCi0gIHR5cGVkZWYgc3RydWN0ICBHWF9JdGVtVmFyRGF0YVJlY18KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBTdHJ1Y3Q6CisgICAqICAgR1hfQVZhclRhYmxlUmVjCisgICAqCisgICAqIEBEZXNjcmlwdGlvbjoKKyAgICogICBEYXRhIGZyb20gdGhlIGBhdmFyJyB0YWJsZS4KKyAgICovCisgIHR5cGVkZWYgc3RydWN0ICBHWF9BVmFyVGFibGVSZWNfCiAgIHsKLSAgICBGVF9VSW50ICAgIGl0ZW1Db3VudDsgICAgICAvKiBudW1iZXIgb2YgZGVsdGEgc2V0cyBwZXIgaXRlbSAgICAgICAgICovCi0gICAgRlRfVUludCAgICByZWdpb25JZHhDb3VudDsgLyogbnVtYmVyIG9mIHJlZ2lvbiBpbmRpY2VzIGluIHRoaXMgZGF0YSAqLwotICAgIEZUX1VJbnQqICAgcmVnaW9uSW5kaWNlczsgIC8qIGFycmF5IG9mIGByZWdpb25Db3VudCcgaW5kaWNlczsgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0aGVzZSBpbmRleCBgdmFyUmVnaW9uTGlzdCcgICAgICAgICAgICovCi0gICAgRlRfU2hvcnQqICBkZWx0YVNldDsgICAgICAgLyogYXJyYXkgb2YgYGl0ZW1Db3VudCcgZGVsdGFzICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHVzZSBgaW5uZXJJbmRleCcgZm9yIHRoaXMgYXJyYXkgICAgICAgKi8KKyAgICBHWF9BVmFyU2VnbWVudCAgICAgICAgYXZhcl9zZWdtZW50OyAgIC8qIGF2YXJfc2VnbWVudFtudW1fYXhpc10gKi8KKyAgICBHWF9JdGVtVmFyU3RvcmVSZWMgICAgaXRlbVN0b3JlOyAgICAgIC8qIEl0ZW0gVmFyaWF0aW9uIFN0b3JlICAgKi8KKyAgICBHWF9EZWx0YVNldElkeE1hcFJlYyAgYXhpc01hcDsgICAgICAgIC8qIEF4aXMgTWFwcGluZyAgICAgICAgICAgKi8KIAotICB9IEdYX0l0ZW1WYXJEYXRhUmVjLCAqR1hfSXRlbVZhckRhdGE7Ci0KLQotICAvKiBjb250cmlidXRpb24gb2Ygb25lIGF4aXMgdG8gYSByZWdpb24gKi8KLSAgdHlwZWRlZiBzdHJ1Y3QgIEdYX0F4aXNDb29yZHNSZWNfCi0gIHsKLSAgICBGVF9GaXhlZCAgc3RhcnRDb29yZDsKLSAgICBGVF9GaXhlZCAgcGVha0Nvb3JkOyAgICAgIC8qIHplcm8gbWVhbnMgbm8gZWZmZWN0IChmYWN0b3IgPSAxKSAqLwotICAgIEZUX0ZpeGVkICBlbmRDb29yZDsKLQotICB9IEdYX0F4aXNDb29yZHNSZWMsICpHWF9BeGlzQ29vcmRzOwotCi0KLSAgdHlwZWRlZiBzdHJ1Y3QgIEdYX1ZhclJlZ2lvblJlY18KLSAgewotICAgIEdYX0F4aXNDb29yZHMgIGF4aXNMaXN0OyAgICAgICAgICAgICAgIC8qIGFycmF5IG9mIGF4aXNDb3VudCByZWNvcmRzICovCi0KLSAgfSBHWF9WYXJSZWdpb25SZWMsICpHWF9WYXJSZWdpb247Ci0KLQotICAvKiBpdGVtIHZhcmlhdGlvbiBzdG9yZSAqLwotICB0eXBlZGVmIHN0cnVjdCAgR1hfSXRlbVZhclN0b3JlUmVjXwotICB7Ci0gICAgRlRfVUludCAgICAgICAgIGRhdGFDb3VudDsKLSAgICBHWF9JdGVtVmFyRGF0YSAgdmFyRGF0YTsgICAgICAgICAgICAvKiBhcnJheSBvZiBkYXRhQ291bnQgcmVjb3JkczsgICAgICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdXNlIGBvdXRlckluZGV4JyBmb3IgdGhpcyBhcnJheSAqLwotICAgIEZUX1VTaG9ydCAgICAgYXhpc0NvdW50OwotICAgIEZUX1VJbnQgICAgICAgcmVnaW9uQ291bnQ7ICAgICAgICAgIC8qIHRvdGFsIG51bWJlciBvZiByZWdpb25zIGRlZmluZWQgKi8KLSAgICBHWF9WYXJSZWdpb24gIHZhclJlZ2lvbkxpc3Q7Ci0KLSAgfSBHWF9JdGVtVmFyU3RvcmVSZWMsICpHWF9JdGVtVmFyU3RvcmU7Ci0KLQotICB0eXBlZGVmIHN0cnVjdCAgR1hfRGVsdGFTZXRJZHhNYXBSZWNfCi0gIHsKLSAgICBGVF9VTG9uZyAgbWFwQ291bnQ7Ci0gICAgRlRfVUludCogIG91dGVySW5kZXg7ICAgICAgICAgICAgICAgLyogaW5kaWNlcyB0byBpdGVtIHZhciBkYXRhICovCi0gICAgRlRfVUludCogIGlubmVySW5kZXg7ICAgICAgICAgICAgICAgLyogaW5kaWNlcyB0byBkZWx0YSBzZXQgICAgICovCi0KLSAgfSBHWF9EZWx0YVNldElkeE1hcFJlYywgKkdYX0RlbHRhU2V0SWR4TWFwOworICB9IEdYX0FWYXJUYWJsZVJlYywgKkdYX0FWYXJUYWJsZTsKIAogCiAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMjQ1LDcgKzIxMiw3IEBACiAgICAqICAgICBBIEJvb2xlYW47IGlmIHNldCwgRnJlZVR5cGUgdHJpZWQgdG8gbG9hZCAoYW5kIHBhcnNlKSB0aGUgYGF2YXInCiAgICAqICAgICB0YWJsZS4KICAgICoKLSAgICogICBhdmFyX3NlZ21lbnQgOjoKKyAgICogICBhdmFyX3RhYmxlIDo6CiAgICAqICAgICBEYXRhIGZyb20gdGhlIGBhdmFyJyB0YWJsZS4KICAgICoKICAgICogICBodmFyX2xvYWRlZCA6OgpAQCAtMzEwLDcgKzI3Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgLyogbm9ybWFsaXplZF9zdHlsZWNvb3Jkc1tudW1fbmFtZWRzdHlsZXNdW251bV9heGlzXSAqLwogCiAgICAgRlRfQm9vbCAgICAgICAgIGF2YXJfbG9hZGVkOwotICAgIEdYX0FWYXJTZWdtZW50ICBhdmFyX3NlZ21lbnQ7ICAgICAgICAgICAgICAgIC8qIGF2YXJfc2VnbWVudFtudW1fYXhpc10gKi8KKyAgICBHWF9BVmFyVGFibGUgICAgYXZhcl90YWJsZTsKIAogICAgIEZUX0Jvb2wgICAgICAgICBodmFyX2xvYWRlZDsKICAgICBGVF9Cb29sICAgICAgICAgaHZhcl9jaGVja2VkOwpAQCAtMzc2LDYgKzM0Myw3IEBACiAjZGVmaW5lIFRUQUdfd2R0aCAgRlRfTUFLRV9UQUcoICd3JywgJ2QnLCAndCcsICdoJyApCiAjZGVmaW5lIFRUQUdfb3BzeiAgRlRfTUFLRV9UQUcoICdvJywgJ3AnLCAncycsICd6JyApCiAjZGVmaW5lIFRUQUdfc2xudCAgRlRfTUFLRV9UQUcoICdzJywgJ2wnLCAnbicsICd0JyApCisjZGVmaW5lIFRUQUdfaXRhbCAgRlRfTUFLRV9UQUcoICdpJywgJ3QnLCAnYScsICdsJyApCiAKIAogICBGVF9MT0NBTCggRlRfRXJyb3IgKQpAQCAtNDEyLDExICszODAsOSBAQAogCiAKICAgRlRfTE9DQUwoIEZUX0Vycm9yICkKLSAgVFRfVmFyeV9BcHBseV9HbHlwaF9EZWx0YXMoIFRUX0ZhY2UgICAgICBmYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgIGdseXBoX2luZGV4LAorICBUVF9WYXJ5X0FwcGx5X0dseXBoX0RlbHRhcyggVFRfTG9hZGVyICAgIGxvYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX091dGxpbmUqICBvdXRsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgIHVucm91bmRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICBuX3BvaW50cyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgIHVucm91bmRlZCApOwogCiAgIEZUX0xPQ0FMKCBGVF9FcnJvciApCiAgIHR0X2hhZHZhbmNlX2FkanVzdCggVFRfRmFjZSAgZmFjZSwKQEAgLTQzMSw2ICszOTcsMzQgQEAKICAgRlRfTE9DQUwoIHZvaWQgKQogICB0dF9hcHBseV9tdmFyKCBUVF9GYWNlICBmYWNlICk7CiAKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF92YXJfbG9hZF9pdGVtX3ZhcmlhdGlvbl9zdG9yZSggVFRfRmFjZSAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICAgICBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHWF9JdGVtVmFyU3RvcmUgIGl0ZW1TdG9yZSApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHR0X3Zhcl9sb2FkX2RlbHRhX3NldF9pbmRleF9tYXBwaW5nKCBUVF9GYWNlICAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICAgICAgICBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHWF9EZWx0YVNldElkeE1hcCAgbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1hfSXRlbVZhclN0b3JlICAgIGl0ZW1TdG9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICAgICAgICB0YWJsZV9sZW4gKTsKKworICBGVF9MT0NBTCggRlRfSXRlbVZhckRlbHRhICkKKyAgdHRfdmFyX2dldF9pdGVtX2RlbHRhKCBUVF9GYWNlICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgR1hfSXRlbVZhclN0b3JlICBpdGVtU3RvcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICBvdXRlckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgaW5uZXJJbmRleCApOworCisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgdHRfdmFyX2RvbmVfaXRlbV92YXJpYXRpb25fc3RvcmUoIFRUX0ZhY2UgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdYX0l0ZW1WYXJTdG9yZSAgaXRlbVN0b3JlICk7CisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICB0dF92YXJfZG9uZV9kZWx0YV9zZXRfaW5kZXhfbWFwKCBUVF9GYWNlICAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1hfRGVsdGFTZXRJZHhNYXAgIGRlbHRhU2V0SWR4TWFwICk7CisKKwogICBGVF9MT0NBTCggRlRfRXJyb3IgKQogICB0dF9nZXRfdmFyX2JsZW5kKCBUVF9GYWNlICAgICAgZmFjZSwKICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgKm51bV9jb29yZHMsCmRpZmYgLS1naXQgYS9zcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYyBiL3NyYy90cnVldHlwZS90dGludGVycC5jCmluZGV4IDczMTA5NWUuLjRmY2ZhYTMgMTAwNjQ0Ci0tLSBhL3NyYy90cnVldHlwZS90dGludGVycC5jCisrKyBiL3NyYy90cnVldHlwZS90dGludGVycC5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHJ1ZVR5cGUgYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTE1MjcsOSArMTUyNyw4IEBACiAgIHN0YXRpYyB2b2lkCiAgIE1vZGlmeV9DVlRfQ2hlY2soIFRUX0V4ZWNDb250ZXh0ICBleGMgKQogICB7Ci0gICAgLyogVFRfUnVuSW5zIHNldHMgb3JpZ0N2dCBhbmQgcmVzdG9yZXMgY3Z0IHRvIG9yaWdDdnQgd2hlbiBkb25lLiAqLwogICAgIGlmICggZXhjLT5pbmlSYW5nZSA9PSB0dF9jb2RlcmFuZ2VfZ2x5cGggJiYKLSAgICAgICAgIGV4Yy0+Y3Z0ID09IGV4Yy0+b3JpZ0N2dCAgICAgICAgICAgICkKKyAgICAgICAgIGV4Yy0+Y3Z0ICE9IGV4Yy0+Z2x5ZkN2dCAgICAgICAgICAgICkKICAgICB7CiAgICAgICBleGMtPmVycm9yID0gVXBkYXRlX01heCggZXhjLT5tZW1vcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4Yy0+Z2x5ZkN2dFNpemUsCkBAIC0zMTE1LDEwICszMTE0LDggQEAKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgIC8qIFRUX1J1bklucyBzZXRzIG9yaWdTdG9yYWdlIGFuZCByZXN0b3JlcyBzdG9yYWdlIHRvIG9yaWdTdG9yYWdlICovCi0gICAgICAvKiB3aGVuIGRvbmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgICAgaWYgKCBleGMtPmluaVJhbmdlID09IHR0X2NvZGVyYW5nZV9nbHlwaCAmJgotICAgICAgICAgICBleGMtPnN0b3JhZ2UgPT0gZXhjLT5vcmlnU3RvcmFnZSAgICApCisgICAgICAgICAgIGV4Yy0+c3RvcmFnZSAhPSBleGMtPmdseWZTdG9yYWdlICAgICkKICAgICAgIHsKICAgICAgICAgRlRfVUxvbmcgIHRtcCA9IChGVF9VTG9uZylleGMtPmdseWZTdG9yZVNpemU7CiAKQEAgLTUyNjAsMTYgKzUyNTcsMjEgQEAKICAgICAgIH0KICAgICB9CiAKLSAgICBleGMtPkdTLmluc3RydWN0X2NvbnRyb2wgJj0gfihGVF9CeXRlKUtmOwotICAgIGV4Yy0+R1MuaW5zdHJ1Y3RfY29udHJvbCB8PSAoRlRfQnl0ZSlMOworICAgIC8qIElOU1RDVFJMIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhlIENWVCBwcm9ncmFtICovCisgICAgaWYgKCBleGMtPmluaVJhbmdlID09IHR0X2NvZGVyYW5nZV9jdnQgKQorICAgIHsKKyAgICAgIGV4Yy0+R1MuaW5zdHJ1Y3RfY29udHJvbCAmPSB+KEZUX0J5dGUpS2Y7CisgICAgICBleGMtPkdTLmluc3RydWN0X2NvbnRyb2wgfD0gKEZUX0J5dGUpTDsKKyAgICB9CiAKLSAgICBpZiAoIEsgPT0gMyApCisgICAgLyogZXhjZXB0IHRvIGNoYW5nZSB0aGUgc3VicGl4ZWwgZmxhZ3MgdGVtcG9yYXJpbHkgKi8KKyAgICBlbHNlIGlmICggZXhjLT5pbmlSYW5nZSA9PSB0dF9jb2RlcmFuZ2VfZ2x5cGggJiYgSyA9PSAzICkKICAgICB7CiAjaWZkZWYgVFRfU1VQUE9SVF9TVUJQSVhFTF9ISU5USU5HX0lORklOQUxJVFkKICAgICAgIC8qIElOU1RDVFJMIG1vZGlmeWluZyBmbGFnIDMgYWxzbyBoYXMgYW4gZWZmZWN0ICovCiAgICAgICAvKiBvdXRzaWRlIG9mIHRoZSBDVlQgcHJvZ3JhbSAgICAgICAgICAgICAgICAgICAqLwogICAgICAgaWYgKCBTVUJQSVhFTF9ISU5USU5HX0lORklOQUxJVFkgKQotICAgICAgICBleGMtPmlnbm9yZV94X21vZGUgPSBGVF9CT09MKCBMID09IDQgKTsKKyAgICAgICAgZXhjLT5pZ25vcmVfeF9tb2RlID0gIUZUX0JPT0woIEwgPT0gNCApOwogI2VuZGlmCiAKICNpZmRlZiBUVF9TVVBQT1JUX1NVQlBJWEVMX0hJTlRJTkdfTUlOSU1BTApAQCAtNTI4MCw2ICs1MjgyLDggQEAKICAgICAgICAgZXhjLT5iYWNrd2FyZF9jb21wYXRpYmlsaXR5ID0gIUZUX0JPT0woIEwgPT0gNCApOwogI2VuZGlmCiAgICAgfQorICAgIGVsc2UgaWYgKCBleGMtPnBlZGFudGljX2hpbnRpbmcgKQorICAgICAgZXhjLT5lcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1JlZmVyZW5jZSApOwogICB9CiAKIApAQCAtNjg2Nyw3ICs2ODcxLDcgQEAKIAogCiAgIHN0YXRpYyB2b2lkCi0gIF9pdXBfd29ya2VyX3NoaWZ0KCBJVVBfV29ya2VyICB3b3JrZXIsCisgIGl1cF93b3JrZXJfc2hpZnRfKCBJVVBfV29ya2VyICB3b3JrZXIsCiAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBwMSwKICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIHAyLAogICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgcCApCkBAIC02ODg5LDcgKzY4OTMsNyBAQAogCiAKICAgc3RhdGljIHZvaWQKLSAgX2l1cF93b3JrZXJfaW50ZXJwb2xhdGUoIElVUF9Xb3JrZXIgIHdvcmtlciwKKyAgaXVwX3dvcmtlcl9pbnRlcnBvbGF0ZV8oIElVUF9Xb3JrZXIgIHdvcmtlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIHAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgcDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICByZWYxLApAQCAtNzA4Myw3ICs3MDg3LDcgQEAKICAgICAgICAgewogICAgICAgICAgIGlmICggKCBleGMtPnB0cy50YWdzW3BvaW50XSAmIG1hc2sgKSAhPSAwICkKICAgICAgICAgICB7Ci0gICAgICAgICAgICBfaXVwX3dvcmtlcl9pbnRlcnBvbGF0ZSggJlYsCisgICAgICAgICAgICBpdXBfd29ya2VyX2ludGVycG9sYXRlXyggJlYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyX3RvdWNoZWQgKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50IC0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJfdG91Y2hlZCwKQEAgLTcwOTUsMTcgKzcwOTksMTcgQEAKICAgICAgICAgfQogCiAgICAgICAgIGlmICggY3VyX3RvdWNoZWQgPT0gZmlyc3RfdG91Y2hlZCApCi0gICAgICAgICAgX2l1cF93b3JrZXJfc2hpZnQoICZWLCBmaXJzdF9wb2ludCwgZW5kX3BvaW50LCBjdXJfdG91Y2hlZCApOworICAgICAgICAgIGl1cF93b3JrZXJfc2hpZnRfKCAmViwgZmlyc3RfcG9pbnQsIGVuZF9wb2ludCwgY3VyX3RvdWNoZWQgKTsKICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgX2l1cF93b3JrZXJfaW50ZXJwb2xhdGUoICZWLAorICAgICAgICAgIGl1cF93b3JrZXJfaW50ZXJwb2xhdGVfKCAmViwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX1VTaG9ydCkoIGN1cl90b3VjaGVkICsgMSApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfcG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cl90b3VjaGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF90b3VjaGVkICk7CiAKICAgICAgICAgICBpZiAoIGZpcnN0X3RvdWNoZWQgPiAwICkKLSAgICAgICAgICAgIF9pdXBfd29ya2VyX2ludGVycG9sYXRlKCAmViwKKyAgICAgICAgICAgIGl1cF93b3JrZXJfaW50ZXJwb2xhdGVfKCAmViwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF9wb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF90b3VjaGVkIC0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJfdG91Y2hlZCwKQEAgLTc3NTUsMzUgKzc3NTksNiBAQAogI2VuZGlmIC8qIFRUX1NVUFBPUlRfU1VCUElYRUxfSElOVElOR19JTkZJTkFMSVRZICovCiAKIAotI2lmZGVmIFRUX1NVUFBPUlRfU1VCUElYRUxfSElOVElOR19JTkZJTkFMSVRZCi0gICAgZXhjLT5pdXBfY2FsbGVkID0gRkFMU0U7Ci0jZW5kaWYgLyogVFRfU1VQUE9SVF9TVUJQSVhFTF9ISU5USU5HX0lORklOQUxJVFkgKi8KLQotI2lmZGVmIFRUX1NVUFBPUlRfU1VCUElYRUxfSElOVElOR19NSU5JTUFMCi0gICAgLyoKLSAgICAgKiBUb2dnbGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBhY2NvcmRpbmcgdG8gd2hhdCBmb250IHdhbnRzLCBleGNlcHQKLSAgICAgKiB3aGVuCi0gICAgICoKLSAgICAgKiAxKSB3ZSBoYXZlIGEgYHRyaWNreScgZm9udCB0aGF0IGhlYXZpbHkgcmVsaWVzIG9uIHRoZSBpbnRlcnByZXRlciB0bwotICAgICAqICAgIHJlbmRlciBnbHlwaHMgY29ycmVjdGx5LCBmb3IgZXhhbXBsZSBERkthaS1TQiwgb3IKLSAgICAgKiAyKSBGVF9SRU5ERVJfTU9ERV9NT05PIChpLmUsIG1vbm9jaG9tZSByZW5kZXJpbmcpIGlzIHJlcXVlc3RlZC4KLSAgICAgKgotICAgICAqIEluIHRob3NlIGNhc2VzLCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG5lZWRzIHRvIGJlIHR1cm5lZCBvZmYgdG8gZ2V0Ci0gICAgICogY29ycmVjdCByZW5kZXJpbmcuICBUaGUgcmVuZGVyaW5nIGlzIHRoZW4gY29tcGxldGVseSB1cCB0byB0aGUKLSAgICAgKiBmb250J3MgcHJvZ3JhbW1pbmcuCi0gICAgICoKLSAgICAgKi8KLSAgICBpZiAoIFNVQlBJWEVMX0hJTlRJTkdfTUlOSU1BTCAgICAgICAgICAmJgotICAgICAgICAgZXhjLT5zdWJwaXhlbF9oaW50aW5nX2xlYW4gICAgICAgICYmCi0gICAgICAgICAhRlRfSVNfVFJJQ0tZKCAmZXhjLT5mYWNlLT5yb290ICkgKQotICAgICAgZXhjLT5iYWNrd2FyZF9jb21wYXRpYmlsaXR5ID0gISggZXhjLT5HUy5pbnN0cnVjdF9jb250cm9sICYgNCApOwotICAgIGVsc2UKLSAgICAgIGV4Yy0+YmFja3dhcmRfY29tcGF0aWJpbGl0eSA9IEZBTFNFOwotCi0gICAgZXhjLT5pdXB4X2NhbGxlZCA9IEZBTFNFOwotICAgIGV4Yy0+aXVweV9jYWxsZWQgPSBGQUxTRTsKLSNlbmRpZgotCiAgICAgLyogV2UgcmVzdHJpY3QgdGhlIG51bWJlciBvZiB0d2lsaWdodCBwb2ludHMgdG8gYSByZWFzb25hYmxlLCAgICAgKi8KICAgICAvKiBoZXVyaXN0aWMgdmFsdWUgdG8gYXZvaWQgc2xvdyBleGVjdXRpb24gb2YgbWFsZm9ybWVkIGJ5dGVjb2RlLiAqLwogICAgIG51bV90d2lsaWdodF9wb2ludHMgPSBGVF9NQVgoIDMwLApAQCAtNzg1NCwxMyArNzgyOSwyMCBAQAogICAgICAgZXhjLT5mdW5jX21vdmVfY3Z0ICA9IE1vdmVfQ1ZUOwogICAgIH0KIAotICAgIGV4Yy0+b3JpZ0N2dCAgICAgPSBleGMtPmN2dDsKLSAgICBleGMtPm9yaWdTdG9yYWdlID0gZXhjLT5zdG9yYWdlOwogICAgIGV4Yy0+aW5pUmFuZ2UgICAgPSBleGMtPmN1clJhbmdlOwogCiAgICAgQ29tcHV0ZV9GdW5jcyggZXhjICk7CiAgICAgQ29tcHV0ZV9Sb3VuZCggZXhjLCAoRlRfQnl0ZSlleGMtPkdTLnJvdW5kX3N0YXRlICk7CiAKKyAgICAvKiBUaGVzZSBmbGFncyBjYW5jZWwgZXhlY3V0aW9uIG9mIHNvbWUgb3Bjb2RlcyBhZnRlciBJVVAgaXMgY2FsbGVkICovCisjaWZkZWYgVFRfU1VQUE9SVF9TVUJQSVhFTF9ISU5USU5HX0lORklOQUxJVFkKKyAgICBleGMtPml1cF9jYWxsZWQgID0gRkFMU0U7CisjZW5kaWYKKyNpZmRlZiBUVF9TVVBQT1JUX1NVQlBJWEVMX0hJTlRJTkdfTUlOSU1BTAorICAgIGV4Yy0+aXVweF9jYWxsZWQgPSBGQUxTRTsKKyAgICBleGMtPml1cHlfY2FsbGVkID0gRkFMU0U7CisjZW5kaWYKKwogICAgIGRvCiAgICAgewogICAgICAgZXhjLT5vcGNvZGUgPSBleGMtPmNvZGVbZXhjLT5JUF07CkBAIC04NTgzLDcgKzg1NjUsOCBAQAogCiAgICAgICAvKiBpbmNyZW1lbnQgaW5zdHJ1Y3Rpb24gY291bnRlciBhbmQgY2hlY2sgaWYgd2UgZGlkbid0ICovCiAgICAgICAvKiBydW4gdGhpcyBwcm9ncmFtIGZvciB0b28gbG9uZyAoZS5nLiBpbmZpbml0ZSBsb29wcykuICovCi0gICAgICBpZiAoICsraW5zX2NvdW50ZXIgPiBUVF9DT05GSUdfT1BUSU9OX01BWF9SVU5OQUJMRV9PUENPREVTICkgeworICAgICAgaWYgKCArK2luc19jb3VudGVyID4gVFRfQ09ORklHX09QVElPTl9NQVhfUlVOTkFCTEVfT1BDT0RFUyApCisgICAgICB7CiAgICAgICAgIGV4Yy0+ZXJyb3IgPSBGVF9USFJPVyggRXhlY3V0aW9uX1Rvb19Mb25nICk7CiAgICAgICAgIGdvdG8gTEVycm9yTGFiZWxfOwogICAgICAgfQpAQCAtODYwNiw5ICs4NTg5LDYgQEAKICAgICAgICAgICAgICAgICBpbnNfY291bnRlciwKICAgICAgICAgICAgICAgICBpbnNfY291bnRlciA9PSAxID8gIiIgOiAicyIgKSk7CiAKLSAgICBleGMtPmN2dCAgICAgPSBleGMtPm9yaWdDdnQ7Ci0gICAgZXhjLT5zdG9yYWdlID0gZXhjLT5vcmlnU3RvcmFnZTsKLQogICAgIHJldHVybiBGVF9FcnJfT2s7CiAKICAgTEVycm9yQ29kZU92ZXJmbG93XzoKQEAgLTg2MTgsOSArODU5OCw2IEBACiAgICAgaWYgKCBleGMtPmVycm9yICYmICFleGMtPmluc3RydWN0aW9uX3RyYXAgKQogICAgICAgRlRfVFJBQ0UxKCggIiAgVGhlIGludGVycHJldGVyIHJldHVybmVkIGVycm9yIDB4JXhcbiIsIGV4Yy0+ZXJyb3IgKSk7CiAKLSAgICBleGMtPmN2dCAgICAgPSBleGMtPm9yaWdDdnQ7Ci0gICAgZXhjLT5zdG9yYWdlID0gZXhjLT5vcmlnU3RvcmFnZTsKLQogICAgIHJldHVybiBleGMtPmVycm9yOwogICB9CiAKZGlmZiAtLWdpdCBhL3NyYy90cnVldHlwZS90dGludGVycC5oIGIvc3JjL3RydWV0eXBlL3R0aW50ZXJwLmgKaW5kZXggOWMwMWVjOC4uYzU0YzA1MyAxMDA2NDQKLS0tIGEvc3JjL3RydWV0eXBlL3R0aW50ZXJwLmgKKysrIGIvc3JjL3RydWV0eXBlL3R0aW50ZXJwLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUcnVlVHlwZSBieXRlY29kZSBpbnRlcnByZXRlciAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMTkzLDcgKzE5Myw2IEBACiAgICAgRlRfTG9uZyogICAgICAgICAgIGN2dDsgICAgICAgLyogISAqLwogICAgIEZUX1VMb25nICAgICAgICAgICBnbHlmQ3Z0U2l6ZTsKICAgICBGVF9Mb25nKiAgICAgICAgICAgZ2x5ZkN2dDsgICAvKiBjdnQgd29ya2luZyBjb3B5IGZvciBnbHlwaCAqLwotICAgIEZUX0xvbmcqICAgICAgICAgICBvcmlnQ3Z0OwogCiAgICAgRlRfVUludCAgICAgICAgICAgIGdseXBoU2l6ZTsgLyogISBnbHlwaCBpbnN0cnVjdGlvbnMgYnVmZmVyIHNpemUgKi8KICAgICBGVF9CeXRlKiAgICAgICAgICAgZ2x5cGhJbnM7ICAvKiAhIGdseXBoIGluc3RydWN0aW9ucyBidWZmZXIgICAgICAqLwpAQCAtMjI0LDcgKzIyMyw2IEBACiAgICAgRlRfTG9uZyogICAgICAgICAgIHN0b3JhZ2U7ICAgICAgLyogISBzdG9yYWdlIGFyZWEgICAgICAgICAgICAqLwogICAgIEZUX1VTaG9ydCAgICAgICAgICBnbHlmU3RvcmVTaXplOwogICAgIEZUX0xvbmcqICAgICAgICAgICBnbHlmU3RvcmFnZTsgIC8qIHN0b3JhZ2Ugd29ya2luZyBjb3B5IGZvciBnbHlwaCAqLwotICAgIEZUX0xvbmcqICAgICAgICAgICBvcmlnU3RvcmFnZTsKIAogICAgIEZUX0YyNkRvdDYgICAgICAgICBwZXJpb2Q7ICAgICAvKiB2YWx1ZXMgdXNlZCBmb3IgdGhlICovCiAgICAgRlRfRjI2RG90NiAgICAgICAgIHBoYXNlOyAgICAgIC8qIGBTdXBlclJvdW5kaW5nJyAgICAgKi8KZGlmZiAtLWdpdCBhL3NyYy90cnVldHlwZS90dG9ianMuYyBiL3NyYy90cnVldHlwZS90dG9ianMuYwppbmRleCA5M2ZjNTQ4Li5jMzUxZTA4IDEwMDY0NAotLS0gYS9zcmMvdHJ1ZXR5cGUvdHRvYmpzLmMKKysrIGIvc3JjL3RydWV0eXBlL3R0b2Jqcy5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgT2JqZWN0cyBtYW5hZ2VyIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC03MjcsNyArNzI3LDggQEAKICAgICBpZiAoIGVycm9yICkKICAgICAgIGdvdG8gRXhpdDsKIAotICAgIGlmICggRlRfSVNfU0NBTEFCTEUoIHR0ZmFjZSApICkKKyAgICBpZiAoIEZUX0lTX1NDQUxBQkxFKCB0dGZhY2UgKSB8fAorICAgICAgICAgRlRfSEFTX1NCSVgoIHR0ZmFjZSApICAgICkKICAgICB7CiAjaWZkZWYgRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTAogICAgICAgaWYgKCAhdHRmYWNlLT5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlICkKQEAgLTEwMDMsNyArMTAwNCw3IEBACiAgICAgewogICAgICAgc2l6ZS0+Y3Z0W2ldID0gRlRfTXVsRml4KCBmYWNlLT5jdnRbaV0sIHNjYWxlICk7CiAgICAgICBGVF9UUkFDRTYoKCAiICAlM2Q6ICVmICglZilcbiIsCi0gICAgICAgICAgICAgICAgICBpLCBmYWNlLT5jdnRbaV0gLyA2NC4wLCBzaXplLT5jdnRbaV0gLyA2NC4wICkpOworICAgICAgICAgICAgICAgICAgaSwgKGRvdWJsZSlmYWNlLT5jdnRbaV0gLyA2NCwgKGRvdWJsZSlzaXplLT5jdnRbaV0gLyA2NCApKTsKICAgICB9CiAgICAgRlRfVFJBQ0U2KCggIlxuIiApKTsKIApAQCAtMTMzNywzOSArMTMzOCwyOSBAQAogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICoKICAgICogQEZ1bmN0aW9uOgotICAgKiAgIHR0X3NpemVfcmVzZXQKKyAgICogICB0dF9zaXplX3Jlc2V0X2hlaWdodAogICAgKgogICAgKiBARGVzY3JpcHRpb246Ci0gICAqICAgUmVzZXQgYSBUcnVlVHlwZSBzaXplIHdoZW4gcmVzb2x1dGlvbnMgYW5kIGNoYXJhY3RlciBkaW1lbnNpb25zCi0gICAqICAgaGF2ZSBiZWVuIGNoYW5nZWQuCisgICAqICAgUmVjb21wdXRlIGEgVHJ1ZVR5cGUgc2l6ZSdzIGFzY2VuZGVyLCBkZXNjZW5kZXIsIGFuZCBoZWlnaHQKKyAgICogICB3aGVuIHJlc29sdXRpb25zIGFuZCBjaGFyYWN0ZXIgZGltZW5zaW9ucyBoYXZlIGJlZW4gY2hhbmdlZC4KKyAgICogICBVc2VkIGZvciB2YXJpYXRpb24gZm9udHMgYXMgYW4gaXRlcmF0b3IgZnVuY3Rpb24uCiAgICAqCiAgICAqIEBJbnB1dDoKLSAgICogICBzaXplIDo6Ci0gICAqICAgICBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IHNpemUgb2JqZWN0LgotICAgKgotICAgKiAgIG9ubHlfaGVpZ2h0IDo6Ci0gICAqICAgICBPbmx5IHJlY29tcHV0ZSBhc2NlbmRlciwgZGVzY2VuZGVyLCBhbmQgaGVpZ2h0OwotICAgKiAgICAgdGhpcyBmbGFnIGlzIHVzZWQgZm9yIHZhcmlhdGlvbiBmb250cyB3aGVyZQotICAgKiAgICAgYHR0X3NpemVfcmVzZXQnIGlzIHVzZWQgYXMgYW4gaXRlcmF0b3IgZnVuY3Rpb24uCisgICAqICAgZnRfc2l6ZSA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBUVF9TaXplIG9iamVjdC4gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZAorICAgKiAgICAgdGhyb3VnaCBhIGBGVF9TaXplX1Jlc2V0X0Z1bmNgIHBvaW50ZXIgd2hpY2ggdGFrZXMgYEZUX1NpemVgLiBUaGlzCisgICAqICAgICBmdW5jdGlvbiBtdXN0IHRha2UgYEZUX1NpemVgIGFzIGEgcmVzdWx0LiBUaGUgcGFzc2VkIGBGVF9TaXplYCBpcworICAgKiAgICAgZXhwZWN0ZWQgdG8gcG9pbnQgdG8gYSBgVFRfU2l6ZWAuCiAgICAqLwogICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKLSAgdHRfc2l6ZV9yZXNldCggVFRfU2l6ZSAgc2l6ZSwKLSAgICAgICAgICAgICAgICAgRlRfQm9vbCAgb25seV9oZWlnaHQgKQorICB0dF9zaXplX3Jlc2V0X2hlaWdodCggRlRfU2l6ZSAgZnRfc2l6ZSApCiAgIHsKLSAgICBUVF9GYWNlICAgICAgICAgICBmYWNlOwotICAgIEZUX1NpemVfTWV0cmljcyogIHNpemVfbWV0cmljczsKLQotCi0gICAgZmFjZSA9IChUVF9GYWNlKXNpemUtPnJvb3QuZmFjZTsKLQotICAgIC8qIG5vdGhpbmcgdG8gZG8gZm9yIENGRjIgKi8KLSAgICBpZiAoIGZhY2UtPmlzX2NmZjIgKQotICAgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgICBUVF9TaXplICAgICAgICAgICBzaXplICAgICAgICAgPSAoVFRfU2l6ZSlmdF9zaXplOworICAgIFRUX0ZhY2UgICAgICAgICAgIGZhY2UgICAgICAgICA9IChUVF9GYWNlKXNpemUtPnJvb3QuZmFjZTsKKyAgICBGVF9TaXplX01ldHJpY3MqICBzaXplX21ldHJpY3MgPSAmc2l6ZS0+aGludGVkX21ldHJpY3M7CiAKICAgICBzaXplLT50dG1ldHJpY3MudmFsaWQgPSBGQUxTRTsKIAotICAgIHNpemVfbWV0cmljcyA9ICZzaXplLT5oaW50ZWRfbWV0cmljczsKLQogICAgIC8qIGNvcHkgdGhlIHJlc3VsdCBmcm9tIGJhc2UgbGF5ZXIgKi8KICAgICAqc2l6ZV9tZXRyaWNzID0gc2l6ZS0+cm9vdC5tZXRyaWNzOwogCkBAIC0xMzk2LDEyICsxMzg3LDM0IEBACiAKICAgICBzaXplLT50dG1ldHJpY3MudmFsaWQgPSBUUlVFOwogCi0gICAgaWYgKCBvbmx5X2hlaWdodCApCi0gICAgewotICAgICAgLyogd2UgbXVzdCBub3QgcmVjb21wdXRlIHRoZSBzY2FsaW5nIHZhbHVlcyBoZXJlIHNpbmNlICAgICAgICovCi0gICAgICAvKiBgdHRfc2l6ZV9yZXNldCcgd2FzIGFscmVhZHkgY2FsbGVkICh3aXRoIG9ubHlfaGVpZ2h0ID0gMCkgKi8KLSAgICAgIHJldHVybiBGVF9FcnJfT2s7Ci0gICAgfQorICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBARnVuY3Rpb246CisgICAqICAgdHRfc2l6ZV9yZXNldAorICAgKgorICAgKiBARGVzY3JpcHRpb246CisgICAqICAgUmVzZXQgYSBUcnVlVHlwZSBzaXplIHdoZW4gcmVzb2x1dGlvbnMgYW5kIGNoYXJhY3RlciBkaW1lbnNpb25zCisgICAqICAgaGF2ZSBiZWVuIGNoYW5nZWQuCisgICAqCisgICAqIEBJbnB1dDoKKyAgICogICBzaXplIDo6CisgICAqICAgICBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IHNpemUgb2JqZWN0LgorICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIHR0X3NpemVfcmVzZXQoIFRUX1NpemUgIHNpemUgKQorICB7CisgICAgRlRfRXJyb3IgICAgICAgICAgZXJyb3I7CisgICAgVFRfRmFjZSAgICAgICAgICAgZmFjZSAgICAgICAgID0gKFRUX0ZhY2Upc2l6ZS0+cm9vdC5mYWNlOworICAgIEZUX1NpemVfTWV0cmljcyogIHNpemVfbWV0cmljcyA9ICZzaXplLT5oaW50ZWRfbWV0cmljczsKKworCisgICAgZXJyb3IgPSB0dF9zaXplX3Jlc2V0X2hlaWdodCggKEZUX1NpemUpc2l6ZSApOworICAgIGlmICggZXJyb3IgKQorICAgICAgcmV0dXJuIGVycm9yOwogCiAgICAgaWYgKCBmYWNlLT5oZWFkZXIuRmxhZ3MgJiA4ICkKICAgICB7CkBAIC0xNDM1LDYgKzE0NDgsOCBAQAogICAgICAgc2l6ZS0+dHRtZXRyaWNzLnlfcmF0aW8gPSAweDEwMDAwTDsKICAgICB9CiAKKyAgICBzaXplLT53aWR0aHAgPSB0dF9mYWNlX2dldF9kZXZpY2VfbWV0cmljcyggZmFjZSwgc2l6ZV9tZXRyaWNzLT54X3BwZW0sIDAgKTsKKwogICAgIHNpemUtPm1ldHJpY3MgPSBzaXplX21ldHJpY3M7CiAKICNpZmRlZiBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIKZGlmZiAtLWdpdCBhL3NyYy90cnVldHlwZS90dG9ianMuaCBiL3NyYy90cnVldHlwZS90dG9ianMuaAppbmRleCBmZDcyMzc4Li5kMTgzNGMwIDEwMDY0NAotLS0gYS9zcmMvdHJ1ZXR5cGUvdHRvYmpzLmgKKysrIGIvc3JjL3RydWV0eXBlL3R0b2Jqcy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgT2JqZWN0cyBtYW5hZ2VyIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0yODIsNiArMjgyLDggQEAKIAogICAgIFRUX1NpemVfTWV0cmljcyAgICB0dG1ldHJpY3M7CiAKKyAgICBGVF9CeXRlKiAgICAgICAgICAgd2lkdGhwOyAgICAgICAgICAvKiBnbHlwaCB3aWR0aHMgZnJvbSB0aGUgaGRteCB0YWJsZSAqLworCiAgICAgRlRfVUxvbmcgICAgICAgICAgIHN0cmlrZV9pbmRleDsgICAgICAvKiAweEZGRkZGRkZGIHRvIGluZGljYXRlIGludmFsaWQgKi8KIAogI2lmZGVmIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUgpAQCAtMzg5LDggKzM5MSwxMCBAQAogI2VuZGlmIC8qIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUiAqLwogCiAgIEZUX0xPQ0FMKCBGVF9FcnJvciApCi0gIHR0X3NpemVfcmVzZXQoIFRUX1NpemUgIHNpemUsCi0gICAgICAgICAgICAgICAgIEZUX0Jvb2wgIG9ubHlfaGVpZ2h0ICk7CisgIHR0X3NpemVfcmVzZXRfaGVpZ2h0KCBGVF9TaXplICBzaXplICk7CisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgdHRfc2l6ZV9yZXNldCggVFRfU2l6ZSAgc2l6ZSApOwogCiAKICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9zcmMvdHJ1ZXR5cGUvdHRwbG9hZC5jIGIvc3JjL3RydWV0eXBlL3R0cGxvYWQuYwppbmRleCA3MWRiNzVhLi5lMDhiZjMwIDEwMDY0NAotLS0gYS9zcmMvdHJ1ZXR5cGUvdHRwbG9hZC5jCisrKyBiL3NyYy90cnVldHlwZS90dHBsb2FkLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUcnVlVHlwZS1zcGVjaWZpYyB0YWJsZXMgbG9hZGVyIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC00OTgsNiArNDk4LDE0IEBACiAgIH0KIAogCisgIEZUX0NPTVBBUkVfREVGKCBpbnQgKQorICBjb21wYXJlX3BwZW0oIGNvbnN0IHZvaWQqICBhLAorICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqICBiICkKKyAgeworICAgIHJldHVybiAqKihGVF9CeXRlKiopYSAtICoqKEZUX0J5dGUqKiliOworICB9CisKKwogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICoKICAgICogQEZ1bmN0aW9uOgpAQCAtNTc0LDIwICs1ODIsMjEgQEAKICAgICAgIGdvdG8gRmFpbDsKICAgICB9CiAKLSAgICBpZiAoIEZUX1FORVdfQVJSQVkoIGZhY2UtPmhkbXhfcmVjb3JkX3NpemVzLCBudW1fcmVjb3JkcyApICkKKyAgICBpZiAoIEZUX1FORVdfQVJSQVkoIGZhY2UtPmhkbXhfcmVjb3JkcywgbnVtX3JlY29yZHMgKSApCiAgICAgICBnb3RvIEZhaWw7CiAKLSAgICAvKiBYWFg6IFdlIGRvIG5vdCBjaGVjayBpZiB0aGUgcmVjb3JkcyBhcmUgc29ydGVkIGJ5IHBwZW0gKi8KLSAgICAvKiBhbmQgY2Fubm90IHVzZSBiaW5hcnkgc2VhcmNoIGxhdGVyLiAgICAgICAgICAgICAgICAgICAgKi8KICAgICBmb3IgKCBubiA9IDA7IG5uIDwgbnVtX3JlY29yZHM7IG5uKysgKQogICAgIHsKICAgICAgIGlmICggcCArIHJlY29yZF9zaXplID4gbGltaXQgKQogICAgICAgICBicmVhazsKLQotICAgICAgZmFjZS0+aGRteF9yZWNvcmRfc2l6ZXNbbm5dID0gcFswXTsKLSAgICAgIHAgICAgICAgICAgICAgICAgICAgICAgICAgICs9IHJlY29yZF9zaXplOworICAgICAgZmFjZS0+aGRteF9yZWNvcmRzW25uXSA9IHA7CisgICAgICBwICAgICAgICAgICAgICAgICAgICAgKz0gcmVjb3JkX3NpemU7CiAgICAgfQogCisgICAgLyogVGhlIHJlY29yZHMgbXVzdCBiZSBhbHJlYWR5IHNvcnRlZCBieSBwcGVtIGJ1dCBpdCBkb2VzIG5vdCAqLworICAgIC8qIGh1cnQgdG8gbWFrZSBzdXJlIHNvIHRoYXQgdGhlIGJpbmFyeSBzZWFyY2ggd29ya3MgbGF0ZXIuICAgKi8KKyAgICBmdF9xc29ydCggZmFjZS0+aGRteF9yZWNvcmRzLCBubiwgc2l6ZW9mICggRlRfQnl0ZSogKSwgY29tcGFyZV9wcGVtICk7CisKICAgICBmYWNlLT5oZG14X3JlY29yZF9jb3VudCA9IG5uOwogICAgIGZhY2UtPmhkbXhfdGFibGVfc2l6ZSAgID0gdGFibGVfc2l6ZTsKICAgICBmYWNlLT5oZG14X3JlY29yZF9zaXplICA9IHJlY29yZF9zaXplOwpAQCAtNjExLDcgKzYyMCw3IEBACiAgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBzdHJlYW0tPm1lbW9yeTsKIAogCi0gICAgRlRfRlJFRSggZmFjZS0+aGRteF9yZWNvcmRfc2l6ZXMgKTsKKyAgICBGVF9GUkVFKCBmYWNlLT5oZG14X3JlY29yZHMgKTsKICAgICBGVF9GUkFNRV9SRUxFQVNFKCBmYWNlLT5oZG14X3RhYmxlICk7CiAgIH0KIApAQCAtNjE5LDI3ICs2MjgsMzQgQEAKICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAqCiAgICAqIFJldHVybiB0aGUgYWR2YW5jZSB3aWR0aCB0YWJsZSBmb3IgYSBnaXZlbiBwaXhlbCBzaXplIGlmIGl0IGlzIGZvdW5kCi0gICAqIGluIHRoZSBmb250J3MgYGhkbXgnIHRhYmxlIChpZiBhbnkpLgorICAgKiBpbiB0aGUgZm9udCdzIGBoZG14JyB0YWJsZSAoaWYgYW55KS4gIFRoZSByZWNvcmRzIG11c3QgYmUgc29ydGVkIGZvcgorICAgKiB0aGUgYmluYXJ5IHNlYXJjaCB0byB3b3JrIHByb3Blcmx5LgogICAgKi8KICAgRlRfTE9DQUxfREVGKCBGVF9CeXRlKiApCiAgIHR0X2ZhY2VfZ2V0X2RldmljZV9tZXRyaWNzKCBUVF9GYWNlICBmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgcHBlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgIGdpbmRleCApCiAgIHsKLSAgICBGVF9VSW50ICAgbm47Ci0gICAgRlRfQnl0ZSogIHJlc3VsdCAgICAgID0gTlVMTDsKLSAgICBGVF9VTG9uZyAgcmVjb3JkX3NpemUgPSBmYWNlLT5oZG14X3JlY29yZF9zaXplOwotICAgIEZUX0J5dGUqICByZWNvcmQgICAgICA9IEZUX09GRlNFVCggZmFjZS0+aGRteF90YWJsZSwgOCApOworICAgIEZUX1VJbnQgICBtaW4gICAgPSAwOworICAgIEZUX1VJbnQgICBtYXggICAgPSBmYWNlLT5oZG14X3JlY29yZF9jb3VudDsKKyAgICBGVF9VSW50ICAgbWlkOworICAgIEZUX0J5dGUqICByZXN1bHQgPSBOVUxMOwogCiAKLSAgICBmb3IgKCBubiA9IDA7IG5uIDwgZmFjZS0+aGRteF9yZWNvcmRfY291bnQ7IG5uKysgKQotICAgICAgaWYgKCBmYWNlLT5oZG14X3JlY29yZF9zaXplc1tubl0gPT0gcHBlbSApCisgICAgd2hpbGUgKCBtaW4gPCBtYXggKQorICAgIHsKKyAgICAgIG1pZCA9ICggbWluICsgbWF4ICkgPj4gMTsKKworICAgICAgaWYgKCBmYWNlLT5oZG14X3JlY29yZHNbbWlkXVswXSA+IHBwZW0gKQorICAgICAgICBtYXggPSBtaWQ7CisgICAgICBlbHNlIGlmICggZmFjZS0+aGRteF9yZWNvcmRzW21pZF1bMF0gPCBwcGVtICkKKyAgICAgICAgbWluID0gbWlkICsgMTsKKyAgICAgIGVsc2UKICAgICAgIHsKLSAgICAgICAgZ2luZGV4ICs9IDI7Ci0gICAgICAgIGlmICggZ2luZGV4IDwgcmVjb3JkX3NpemUgKQotICAgICAgICAgIHJlc3VsdCA9IHJlY29yZCArIG5uICogcmVjb3JkX3NpemUgKyBnaW5kZXg7CisgICAgICAgIHJlc3VsdCA9IGZhY2UtPmhkbXhfcmVjb3Jkc1ttaWRdICsgMiArIGdpbmRleDsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CisgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKICAgfQpkaWZmIC0tZ2l0IGEvc3JjL3RydWV0eXBlL3R0cGxvYWQuaCBiL3NyYy90cnVldHlwZS90dHBsb2FkLmgKaW5kZXggODRjNDJjZC4uOTM5ZTAyZiAxMDA2NDQKLS0tIGEvc3JjL3RydWV0eXBlL3R0cGxvYWQuaAorKysgYi9zcmMvdHJ1ZXR5cGUvdHRwbG9hZC5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHJ1ZVR5cGUtc3BlY2lmaWMgdGFibGVzIGxvYWRlciAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3RydWV0eXBlL3R0c3VicGl4LmMgYi9zcmMvdHJ1ZXR5cGUvdHRzdWJwaXguYwppbmRleCBjNDg0NjY1Li5kODExYmVlIDEwMDY0NAotLS0gYS9zcmMvdHJ1ZXR5cGUvdHRzdWJwaXguYworKysgYi9zcmMvdHJ1ZXR5cGUvdHRzdWJwaXguYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRydWVUeXBlIFN1YnBpeGVsIEhpbnRpbmcuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3RydWV0eXBlL3R0c3VicGl4LmggYi9zcmMvdHJ1ZXR5cGUvdHRzdWJwaXguaAppbmRleCA3NjJiN2M5Li42MmFmNGMyIDEwMDY0NAotLS0gYS9zcmMvdHJ1ZXR5cGUvdHRzdWJwaXguaAorKysgYi9zcmMvdHJ1ZXR5cGUvdHRzdWJwaXguaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFRydWVUeXBlIFN1YnBpeGVsIEhpbnRpbmcuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3R5cGUxL21vZHVsZS5tayBiL3NyYy90eXBlMS9tb2R1bGUubWsKaW5kZXggNWRhNDcxNi4uMzNiY2VmZiAxMDA2NDQKLS0tIGEvc3JjL3R5cGUxL21vZHVsZS5taworKysgYi9zcmMvdHlwZTEvbW9kdWxlLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvc3JjL3R5cGUxL3J1bGVzLm1rIGIvc3JjL3R5cGUxL3J1bGVzLm1rCmluZGV4IDk4NTI0OGQuLmVmZTc0NGIgMTAwNjQ0Ci0tLSBhL3NyYy90eXBlMS9ydWxlcy5taworKysgYi9zcmMvdHlwZTEvcnVsZXMubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9zcmMvdHlwZTEvdDFhZm0uYyBiL3NyYy90eXBlMS90MWFmbS5jCmluZGV4IDRjMThlZDEuLjc4N2FhOTIgMTAwNjQ0Ci0tLSBhL3NyYy90eXBlMS90MWFmbS5jCisrKyBiL3NyYy90eXBlMS90MWFmbS5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgQUZNIHN1cHBvcnQgZm9yIFR5cGUgMSBmb250cyAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMTc4LDcgKzE3OCw2IEBACiAgICAgLyogdGVtcG9yYXJpbHkuICBJZiB3ZSBmaW5kIG5vIFBvc3RTY3JpcHQgY2hhcm1hcCwgdGhlbiBqdXN0IHVzZSAgICAqLwogICAgIC8qIHRoZSBkZWZhdWx0IGFuZCBob3BlIGl0IGlzIHRoZSByaWdodCBvbmUuICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICBvbGRjaGFybWFwID0gdDFfZmFjZS0+Y2hhcm1hcDsKLSAgICBjaGFybWFwICAgID0gTlVMTDsKIAogICAgIGZvciAoIG4gPSAwOyBuIDwgdDFfZmFjZS0+bnVtX2NoYXJtYXBzOyBuKysgKQogICAgIHsKQEAgLTE4Niw5ICsxODUsNyBAQAogICAgICAgLyogY2hlY2sgYWdhaW5zdCBQb3N0U2NyaXB0IHBzZXVkbyBwbGF0Zm9ybSAqLwogICAgICAgaWYgKCBjaGFybWFwLT5wbGF0Zm9ybV9pZCA9PSA3ICkKICAgICAgIHsKLSAgICAgICAgZXJyb3IgPSBGVF9TZXRfQ2hhcm1hcCggdDFfZmFjZSwgY2hhcm1hcCApOwotICAgICAgICBpZiAoIGVycm9yICkKLSAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgIHQxX2ZhY2UtPmNoYXJtYXAgPSBjaGFybWFwOwogICAgICAgICBicmVhazsKICAgICAgIH0KICAgICB9CkBAIC0yMDMsMTYgKzIwMCwxMyBAQAogICAgICAga3AtPmluZGV4MSA9IEZUX0dldF9DaGFyX0luZGV4KCB0MV9mYWNlLCBwWzBdICk7CiAgICAgICBrcC0+aW5kZXgyID0gRlRfR2V0X0NoYXJfSW5kZXgoIHQxX2ZhY2UsIHBbMV0gKTsKIAotICAgICAga3AtPnggPSAoRlRfSW50KUZUX1BFRUtfU0hPUlRfTEUocCArIDIpOworICAgICAga3AtPnggPSAoRlRfSW50KUZUX1BFRUtfU0hPUlRfTEUoIHAgKyAyICk7CiAgICAgICBrcC0+eSA9IDA7CiAKICAgICAgIGtwKys7CiAgICAgfQogCi0gICAgaWYgKCBvbGRjaGFybWFwICkKLSAgICAgIGVycm9yID0gRlRfU2V0X0NoYXJtYXAoIHQxX2ZhY2UsIG9sZGNoYXJtYXAgKTsKLSAgICBpZiAoIGVycm9yICkKLSAgICAgIGdvdG8gRXhpdDsKKyAgICB0MV9mYWNlLT5jaGFybWFwID0gb2xkY2hhcm1hcDsKIAogICAgIC8qIG5vdywgc29ydCB0aGUga2VybiBwYWlycyBhY2NvcmRpbmcgdG8gdGhlaXIgZ2x5cGggaW5kaWNlcyAqLwogICAgIGZ0X3Fzb3J0KCBmaS0+S2VyblBhaXJzLCBmaS0+TnVtS2VyblBhaXIsIHNpemVvZiAoIEFGTV9LZXJuUGFpclJlYyApLApAQCAtMzAyLDkgKzI5NiwxNCBAQAogICAgICAgdDFfZmFjZS0+YmJveC54TWF4ID0gKCBmaS0+Rm9udEJCb3gueE1heCArIDB4RkZGRiApID4+IDE2OwogICAgICAgdDFfZmFjZS0+YmJveC55TWF4ID0gKCBmaS0+Rm9udEJCb3gueU1heCArIDB4RkZGRiApID4+IDE2OwogCi0gICAgICAvKiBubyBgVScgc3VmZml4IGhlcmUgdG8gMHg4MDAwISAqLwotICAgICAgdDFfZmFjZS0+YXNjZW5kZXIgID0gKEZUX1Nob3J0KSggKCBmaS0+QXNjZW5kZXIgICsgMHg4MDAwICkgPj4gMTYgKTsKLSAgICAgIHQxX2ZhY2UtPmRlc2NlbmRlciA9IChGVF9TaG9ydCkoICggZmktPkRlc2NlbmRlciArIDB4ODAwMCApID4+IDE2ICk7CisgICAgICAvKiBhc2NlbmRlciBhbmQgZGVzY2VuZGVyIGFyZSBvcHRpb25hbCBhbmQgY291bGQgYm90aCBiZSB6ZXJvICovCisgICAgICAvKiBjaGVjayBpZiB2YWx1ZXMgYXJlIG1lYW5pbmdmdWwgYmVmb3JlIG92ZXJyaWRpbmcgZGVmYXVsdHMgICovCisgICAgICBpZiAoIGZpLT5Bc2NlbmRlciA+IGZpLT5EZXNjZW5kZXIgKQorICAgICAgeyAgCisgICAgICAgIC8qIG5vIGBVJyBzdWZmaXggaGVyZSB0byAweDgwMDAhICovCisgICAgICAgIHQxX2ZhY2UtPmFzY2VuZGVyICA9IChGVF9TaG9ydCkoICggZmktPkFzY2VuZGVyICArIDB4ODAwMCApID4+IDE2ICk7CisgICAgICAgIHQxX2ZhY2UtPmRlc2NlbmRlciA9IChGVF9TaG9ydCkoICggZmktPkRlc2NlbmRlciArIDB4ODAwMCApID4+IDE2ICk7CisgICAgICB9CiAKICAgICAgIGlmICggZmktPk51bUtlcm5QYWlyICkKICAgICAgIHsKZGlmZiAtLWdpdCBhL3NyYy90eXBlMS90MWFmbS5oIGIvc3JjL3R5cGUxL3QxYWZtLmgKaW5kZXggODZmZTQ1ZS4uZTBkNWFhNSAxMDA2NDQKLS0tIGEvc3JjL3R5cGUxL3QxYWZtLmgKKysrIGIvc3JjL3R5cGUxL3QxYWZtLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBBRk0gc3VwcG9ydCBmb3IgVHlwZSAxIGZvbnRzIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvdHlwZTEvdDFkcml2ZXIuYyBiL3NyYy90eXBlMS90MWRyaXZlci5jCmluZGV4IGY0ZDdhMDguLmRlZDNiMjYgMTAwNjQ0Ci0tLSBhL3NyYy90eXBlMS90MWRyaXZlci5jCisrKyBiL3NyYy90eXBlMS90MWRyaXZlci5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHlwZSAxIGRyaXZlciBpbnRlcmZhY2UgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTEyMSwxOSArMTIxLDMwIEBACiAjaWZuZGVmIFQxX0NPTkZJR19PUFRJT05fTk9fTU1fU1VQUE9SVAogICBzdGF0aWMgY29uc3QgRlRfU2VydmljZV9NdWx0aU1hc3RlcnNSZWMgIHQxX3NlcnZpY2VfbXVsdGlfbWFzdGVycyA9CiAgIHsKLSAgICAoRlRfR2V0X01NX0Z1bmMpICAgICAgICAgICAgIFQxX0dldF9NdWx0aV9NYXN0ZXIsICAgIC8qIGdldF9tbSAgICAgICAgICAgICAgKi8KLSAgICAoRlRfU2V0X01NX0Rlc2lnbl9GdW5jKSAgICAgIFQxX1NldF9NTV9EZXNpZ24sICAgICAgIC8qIHNldF9tbV9kZXNpZ24gICAgICAgKi8KLSAgICAoRlRfU2V0X01NX0JsZW5kX0Z1bmMpICAgICAgIFQxX1NldF9NTV9CbGVuZCwgICAgICAgIC8qIHNldF9tbV9ibGVuZCAgICAgICAgKi8KLSAgICAoRlRfR2V0X01NX0JsZW5kX0Z1bmMpICAgICAgIFQxX0dldF9NTV9CbGVuZCwgICAgICAgIC8qIGdldF9tbV9ibGVuZCAgICAgICAgKi8KLSAgICAoRlRfR2V0X01NX1Zhcl9GdW5jKSAgICAgICAgIFQxX0dldF9NTV9WYXIsICAgICAgICAgIC8qIGdldF9tbV92YXIgICAgICAgICAgKi8KLSAgICAoRlRfU2V0X1Zhcl9EZXNpZ25fRnVuYykgICAgIFQxX1NldF9WYXJfRGVzaWduLCAgICAgIC8qIHNldF92YXJfZGVzaWduICAgICAgKi8KLSAgICAoRlRfR2V0X1Zhcl9EZXNpZ25fRnVuYykgICAgIFQxX0dldF9WYXJfRGVzaWduLCAgICAgIC8qIGdldF92YXJfZGVzaWduICAgICAgKi8KLSAgICAoRlRfU2V0X0luc3RhbmNlX0Z1bmMpICAgICAgIFQxX1Jlc2V0X01NX0JsZW5kLCAgICAgIC8qIHNldF9pbnN0YW5jZSAgICAgICAgKi8KLSAgICAoRlRfU2V0X01NX1dlaWdodFZlY3Rvcl9GdW5jKVQxX1NldF9NTV9XZWlnaHRWZWN0b3IsIC8qIHNldF9tbV93ZWlnaHR2ZWN0b3IgKi8KLSAgICAoRlRfR2V0X01NX1dlaWdodFZlY3Rvcl9GdW5jKVQxX0dldF9NTV9XZWlnaHRWZWN0b3IsIC8qIGdldF9tbV93ZWlnaHR2ZWN0b3IgKi8KLQotICAgIChGVF9HZXRfVmFyX0JsZW5kX0Z1bmMpICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgLyogZ2V0X3Zhcl9ibGVuZCAgICAgICAqLwotICAgIChGVF9Eb25lX0JsZW5kX0Z1bmMpICAgICAgICAgVDFfRG9uZV9CbGVuZCAgICAgICAgICAgLyogZG9uZV9ibGVuZCAgICAgICAgICAqLworICAgIChGVF9HZXRfTU1fRnVuYykgICAgICAgIFQxX0dldF9NdWx0aV9NYXN0ZXIsICAgIC8qIGdldF9tbSAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAoRlRfU2V0X01NX0Rlc2lnbl9GdW5jKSBUMV9TZXRfTU1fRGVzaWduLCAgICAgICAvKiBzZXRfbW1fZGVzaWduICAgICAgICAgICAgICovCisgICAgKEZUX1NldF9NTV9CbGVuZF9GdW5jKSAgVDFfU2V0X01NX0JsZW5kLCAgICAgICAgLyogc2V0X21tX2JsZW5kICAgICAgICAgICAgICAqLworICAgIChGVF9HZXRfTU1fQmxlbmRfRnVuYykgIFQxX0dldF9NTV9CbGVuZCwgICAgICAgIC8qIGdldF9tbV9ibGVuZCAgICAgICAgICAgICAgKi8KKyAgICAoRlRfR2V0X01NX1Zhcl9GdW5jKSAgICBUMV9HZXRfTU1fVmFyLCAgICAgICAgICAvKiBnZXRfbW1fdmFyICAgICAgICAgICAgICAgICovCisgICAgKEZUX1NldF9WYXJfRGVzaWduX0Z1bmMpVDFfU2V0X1Zhcl9EZXNpZ24sICAgICAgLyogc2V0X3Zhcl9kZXNpZ24gICAgICAgICAgICAqLworICAgIChGVF9HZXRfVmFyX0Rlc2lnbl9GdW5jKVQxX0dldF9WYXJfRGVzaWduLCAgICAgIC8qIGdldF92YXJfZGVzaWduICAgICAgICAgICAgKi8KKyAgICAoRlRfU2V0X0luc3RhbmNlX0Z1bmMpICBUMV9SZXNldF9NTV9CbGVuZCwgICAgICAvKiBzZXRfaW5zdGFuY2UgICAgICAgICAgICAgICovCisgICAgKEZUX1NldF9NTV9XZWlnaHRWZWN0b3JfRnVuYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUMV9TZXRfTU1fV2VpZ2h0VmVjdG9yLCAvKiBzZXRfbW1fd2VpZ2h0dmVjdG9yICAgICAgICovCisgICAgKEZUX0dldF9NTV9XZWlnaHRWZWN0b3JfRnVuYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUMV9HZXRfTU1fV2VpZ2h0VmVjdG9yLCAvKiBnZXRfbW1fd2VpZ2h0dmVjdG9yICAgICAgICovCisgICAgKEZUX1Zhcl9Mb2FkX0RlbHRhX1NldF9JZHhfTWFwX0Z1bmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgLyogbG9hZF9kZWx0YV9zZXRfaWR4X21hcCAgICAqLworICAgIChGVF9WYXJfTG9hZF9JdGVtX1Zhcl9TdG9yZV9GdW5jKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgIC8qIGxvYWRfaXRlbV92YXJpYXRpb25fc3RvcmUgKi8KKyAgICAoRlRfVmFyX0dldF9JdGVtX0RlbHRhX0Z1bmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgLyogZ2V0X2l0ZW1fZGVsdGEgICAgICAgICAgICAqLworICAgIChGVF9WYXJfRG9uZV9JdGVtX1Zhcl9TdG9yZV9GdW5jKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgIC8qIGRvbmVfaXRlbV92YXJpYXRpb25fc3RvcmUgKi8KKyAgICAoRlRfVmFyX0RvbmVfRGVsdGFfU2V0X0lkeF9NYXBfRnVuYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAvKiBkb25lX2RlbHRhX3NldF9pbmRleF9tYXAgICovCisgICAgKEZUX0dldF9WYXJfQmxlbmRfRnVuYykgTlVMTCwgICAgICAgICAgICAgICAgICAgLyogZ2V0X3Zhcl9ibGVuZCAgICAgICAgICAgICAqLworICAgIChGVF9Eb25lX0JsZW5kX0Z1bmMpICAgIFQxX0RvbmVfQmxlbmQgICAgICAgICAgIC8qIGRvbmVfYmxlbmQgICAgICAgICAgICAgICAgKi8KICAgfTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9zcmMvdHlwZTEvdDFkcml2ZXIuaCBiL3NyYy90eXBlMS90MWRyaXZlci5oCmluZGV4IDIwYTgyN2YuLmVlN2ZjZjQgMTAwNjQ0Ci0tLSBhL3NyYy90eXBlMS90MWRyaXZlci5oCisrKyBiL3NyYy90eXBlMS90MWRyaXZlci5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgSGlnaC1sZXZlbCBUeXBlIDEgZHJpdmVyIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3R5cGUxL3QxZXJyb3JzLmggYi9zcmMvdHlwZTEvdDFlcnJvcnMuaAppbmRleCAxOGVmNzU0Li4yZmJkMWU1IDEwMDY0NAotLS0gYS9zcmMvdHlwZTEvdDFlcnJvcnMuaAorKysgYi9zcmMvdHlwZTEvdDFlcnJvcnMuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFR5cGUgMSBlcnJvciBjb2RlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvdHlwZTEvdDFnbG9hZC5jIGIvc3JjL3R5cGUxL3QxZ2xvYWQuYwppbmRleCA4NjY0OWVkLi5hMzJhNDY0IDEwMDY0NAotLS0gYS9zcmMvdHlwZTEvdDFnbG9hZC5jCisrKyBiL3NyYy90eXBlMS90MWdsb2FkLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUeXBlIDEgR2x5cGggTG9hZGVyIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0yNjQsNyArMjY0LDcgQEAKICAgICB9CiAKICAgICBGVF9UUkFDRTYoKCAiVDFfQ29tcHV0ZV9NYXhfQWR2YW5jZTogbWF4IGFkdmFuY2U6ICVmXG4iLAotICAgICAgICAgICAgICAgICptYXhfYWR2YW5jZSAvIDY1NTM2LjAgKSk7CisgICAgICAgICAgICAgICAgKGRvdWJsZSkqbWF4X2FkdmFuY2UgLyA2NTUzNiApKTsKIAogICAgIHBzYXV4LT50MV9kZWNvZGVyX2Z1bmNzLT5kb25lKCAmZGVjb2RlciApOwogCmRpZmYgLS1naXQgYS9zcmMvdHlwZTEvdDFnbG9hZC5oIGIvc3JjL3R5cGUxL3QxZ2xvYWQuaAppbmRleCBhOTI0ZDU1Li5jMDY0ODQ3IDEwMDY0NAotLS0gYS9zcmMvdHlwZTEvdDFnbG9hZC5oCisrKyBiL3NyYy90eXBlMS90MWdsb2FkLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUeXBlIDEgR2x5cGggTG9hZGVyIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvdHlwZTEvdDFsb2FkLmMgYi9zcmMvdHlwZTEvdDFsb2FkLmMKaW5kZXggYmI2MmM3OS4uNWExYWZkOCAxMDA2NDQKLS0tIGEvc3JjL3R5cGUxL3QxbG9hZC5jCisrKyBiL3NyYy90eXBlMS90MWxvYWQuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFR5cGUgMSBmb250IGxvYWRlciAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtMzU1LDYgKzM1NSwxMCBAQAogICAgICAgICBtbXZhci0+YXhpc1tpXS50YWcgPSBGVF9NQUtFX1RBRyggJ3cnLCAnZCcsICd0JywgJ2gnICk7CiAgICAgICBlbHNlIGlmICggZnRfc3RyY21wKCBtbXZhci0+YXhpc1tpXS5uYW1lLCAiT3B0aWNhbFNpemUiICkgPT0gMCApCiAgICAgICAgIG1tdmFyLT5heGlzW2ldLnRhZyA9IEZUX01BS0VfVEFHKCAnbycsICdwJywgJ3MnLCAneicgKTsKKyAgICAgIGVsc2UgaWYgKCBmdF9zdHJjbXAoIG1tdmFyLT5heGlzW2ldLm5hbWUsICJTbGFudCIgKSA9PSAwICkKKyAgICAgICAgbW12YXItPmF4aXNbaV0udGFnID0gRlRfTUFLRV9UQUcoICdzJywgJ2wnLCAnbicsICd0JyApOworICAgICAgZWxzZSBpZiAoIGZ0X3N0cmNtcCggbW12YXItPmF4aXNbaV0ubmFtZSwgIkl0YWxpYyIgKSA9PSAwICkKKyAgICAgICAgbW12YXItPmF4aXNbaV0udGFnID0gRlRfTUFLRV9UQUcoICdpJywgJ3QnLCAnYScsICdsJyApOwogICAgIH0KIAogICAgIG1tX3dlaWdodHNfdW5tYXAoIGJsZW5kLT5kZWZhdWx0X3dlaWdodF92ZWN0b3IsCkBAIC0xNTMwLDggKzE1MzQsOCBAQAogCiAgICAgICAvKiB3ZSB1c2UgYSBUMV9UYWJsZSB0byBzdG9yZSBvdXIgY2hhcm5hbWVzICovCiAgICAgICBsb2FkZXItPm51bV9jaGFycyA9IGVuY29kZS0+bnVtX2NoYXJzID0gYXJyYXlfc2l6ZTsKLSAgICAgIGlmICggRlRfTkVXX0FSUkFZKCBlbmNvZGUtPmNoYXJfaW5kZXgsIGFycmF5X3NpemUgKSAgICAgfHwKLSAgICAgICAgICAgRlRfTkVXX0FSUkFZKCBlbmNvZGUtPmNoYXJfbmFtZSwgIGFycmF5X3NpemUgKSAgICAgfHwKKyAgICAgIGlmICggRlRfUU5FV19BUlJBWSggZW5jb2RlLT5jaGFyX2luZGV4LCBhcnJheV9zaXplICkgICAgfHwKKyAgICAgICAgICAgRlRfUU5FV19BUlJBWSggZW5jb2RlLT5jaGFyX25hbWUsICBhcnJheV9zaXplICkgICAgfHwKICAgICAgICAgICAgRlRfU0VUX0VSUk9SKCBwc2F1eC0+cHNfdGFibGVfZnVuY3MtPmluaXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3RhYmxlLCBhcnJheV9zaXplLCBtZW1vcnkgKSApICkKICAgICAgIHsKQEAgLTE3NzIsNyArMTc3Niw3IEBACiAKICAgICAgIGlmICggIWxvYWRlci0+c3VicnNfaGFzaCApCiAgICAgICB7Ci0gICAgICAgIGlmICggRlRfTkVXKCBsb2FkZXItPnN1YnJzX2hhc2ggKSApCisgICAgICAgIGlmICggRlRfUU5FVyggbG9hZGVyLT5zdWJyc19oYXNoICkgKQogICAgICAgICAgIGdvdG8gRmFpbDsKIAogICAgICAgICBlcnJvciA9IGZ0X2hhc2hfbnVtX2luaXQoIGxvYWRlci0+c3VicnNfaGFzaCwgbWVtb3J5ICk7CkBAIC0yMDU3LDkgKzIwNjEsOSBAQAogICAgICAgICBuYW1lX3RhYmxlLT5lbGVtZW50c1tuXVtsZW5dID0gJ1wwJzsKIAogICAgICAgICAvKiByZWNvcmQgaW5kZXggb2YgLy5ub3RkZWYgKi8KLSAgICAgICAgaWYgKCAqY3VyID09ICcuJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICBpZiAoICpjdXIgPT0gJy4nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKICAgICAgICAgICAgICBmdF9zdHJjbXAoICIubm90ZGVmIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyKikobmFtZV90YWJsZS0+ZWxlbWVudHNbbl0pICkgPT0gMCApCisgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciopKCBuYW1lX3RhYmxlLT5lbGVtZW50c1tuXSApICkgPT0gMCApCiAgICAgICAgIHsKICAgICAgICAgICBub3RkZWZfaW5kZXggPSBuOwogICAgICAgICAgIG5vdGRlZl9mb3VuZCA9IDE7CkBAIC0yMzMxLDggKzIzMzUsOCBAQAogICAgICAgLyogaW4gdmFsaWQgVHlwZSAxIGZvbnRzIHdlIGRvbid0IHNlZSBgUkQnIG9yIGAtfCcgZGlyZWN0bHkgKi8KICAgICAgIC8qIHNpbmNlIHRob3NlIHRva2VucyBhcmUgaGFuZGxlZCBieSBwYXJzZV9zdWJycyBhbmQgICAgICAgICovCiAgICAgICAvKiBwYXJzZV9jaGFyc3RyaW5ncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgZWxzZSBpZiAoICpjdXIgPT0gJ1InICYmIGN1ciArIDYgPCBsaW1pdCAmJiAqKGN1ciArIDEpID09ICdEJyAmJgotICAgICAgICAgICAgICAgIGhhdmVfaW50ZWdlciApCisgICAgICBlbHNlIGlmICggKmN1ciA9PSAnUicgJiYgY3VyICsgNiA8IGxpbWl0ICYmICooIGN1ciArIDEgKSA9PSAnRCcgJiYKKyAgICAgICAgICAgICAgICBoYXZlX2ludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICB7CiAgICAgICAgIEZUX1VMb25nICBzOwogICAgICAgICBGVF9CeXRlKiAgYjsKQEAgLTIzNDQsOCArMjM0OCw4IEBACiAgICAgICAgIGhhdmVfaW50ZWdlciA9IDA7CiAgICAgICB9CiAKLSAgICAgIGVsc2UgaWYgKCAqY3VyID09ICctJyAmJiBjdXIgKyA2IDwgbGltaXQgJiYgKihjdXIgKyAxKSA9PSAnfCcgJiYKLSAgICAgICAgICAgICAgICBoYXZlX2ludGVnZXIgKQorICAgICAgZWxzZSBpZiAoICpjdXIgPT0gJy0nICYmIGN1ciArIDYgPCBsaW1pdCAmJiAqKCBjdXIgKyAxICkgPT0gJ3wnICYmCisgICAgICAgICAgICAgICAgaGF2ZV9pbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgewogICAgICAgICBGVF9VTG9uZyAgczsKICAgICAgICAgRlRfQnl0ZSogIGI7CmRpZmYgLS1naXQgYS9zcmMvdHlwZTEvdDFsb2FkLmggYi9zcmMvdHlwZTEvdDFsb2FkLmgKaW5kZXggYmExOWFkYi4uZjg1MTFjYyAxMDA2NDQKLS0tIGEvc3JjL3R5cGUxL3QxbG9hZC5oCisrKyBiL3NyYy90eXBlMS90MWxvYWQuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFR5cGUgMSBmb250IGxvYWRlciAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3R5cGUxL3Qxb2Jqcy5jIGIvc3JjL3R5cGUxL3Qxb2Jqcy5jCmluZGV4IDUwZGFkMDMuLjFiYjJmMTUgMTAwNjQ0Ci0tLSBhL3NyYy90eXBlMS90MW9ianMuYworKysgYi9zcmMvdHlwZTEvdDFvYmpzLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUeXBlIDEgb2JqZWN0cyBtYW5hZ2VyIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0xNDYsNyArMTQ2LDkgQEAKICAgRlRfTE9DQUxfREVGKCB2b2lkICkKICAgVDFfR2x5cGhTbG90X0RvbmUoIEZUX0dseXBoU2xvdCAgc2xvdCApCiAgIHsKLSAgICBzbG90LT5pbnRlcm5hbC0+Z2x5cGhfaGludHMgPSBOVUxMOworICAgIC8qIGBzbG90LT5pbnRlcm5hbGAgbWlnaHQgYmUgTlVMTCBpbiBvdXQtb2YtbWVtb3J5IHNpdHVhdGlvbnMuICovCisgICAgaWYgKCBzbG90LT5pbnRlcm5hbCApCisgICAgICBzbG90LT5pbnRlcm5hbC0+Z2x5cGhfaGludHMgPSBOVUxMOwogICB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL3R5cGUxL3Qxb2Jqcy5oIGIvc3JjL3R5cGUxL3Qxb2Jqcy5oCmluZGV4IDVmMTAzYjUuLjAzODQ3YjIgMTAwNjQ0Ci0tLSBhL3NyYy90eXBlMS90MW9ianMuaAorKysgYi9zcmMvdHlwZTEvdDFvYmpzLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUeXBlIDEgb2JqZWN0cyBtYW5hZ2VyIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvdHlwZTEvdDFwYXJzZS5jIGIvc3JjL3R5cGUxL3QxcGFyc2UuYwppbmRleCA5ZjIyNjI5Li42ZGVjNmMxIDEwMDY0NAotLS0gYS9zcmMvdHlwZTEvdDFwYXJzZS5jCisrKyBiL3NyYy90eXBlMS90MXBhcnNlLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUeXBlIDEgcGFyc2VyIChib2R5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCkBAIC0zMzAsNTAgKzMzMCwyNSBAQAogICAgICAgLyogdGhlIHByaXZhdGUgZGljdC4gIE90aGVyd2lzZSwgc2ltcGx5IG92ZXJ3cml0ZSBpbnRvIHRoZSBiYXNlICAqLwogICAgICAgLyogZGljdGlvbmFyeSBibG9jayBpbiB0aGUgaGVhcC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogCi0gICAgICAvKiBmaXJzdCBvZiBhbGwsIGxvb2sgYXQgdGhlIGBlZXhlYycga2V5d29yZCAqLworICAgICAgLyogRmlyc3QgbG9vayBmb3IgdGhlIGBlZXhlYycga2V5d29yZC4gRW5zdXJlIGBlZXhlYycgaXMgcmVhbCAtLSAqLworICAgICAgLyogaXQgY291bGQgYmUgaW4gYSBjb21tZW50IG9yIHN0cmluZyAoYXMgZS5nLiBpbiB1MDAzMDQzdC5nc2YgICAqLworICAgICAgLyogZnJvbSBnaG9zdHNjcmlwdCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgICAgRlRfQnl0ZSogICAgY3VyICAgPSBwYXJzZXItPmJhc2VfZGljdDsKICAgICAgIEZUX0J5dGUqICAgIGxpbWl0ID0gY3VyICsgcGFyc2VyLT5iYXNlX2xlbjsKICAgICAgIEZUX1BvaW50ZXIgIHBvc19sZjsKICAgICAgIEZUX0Jvb2wgICAgIHRlc3RfY3I7CiAKIAotICAgIEFnYWluOgotICAgICAgZm9yICg7OykKLSAgICAgIHsKLSAgICAgICAgaWYgKCBjdXJbMF0gPT0gJ2UnICAgJiYKLSAgICAgICAgICAgICBjdXIgKyA5IDwgbGltaXQgKSAgICAgIC8qIDkgPSA1IGxldHRlcnMgZm9yIGBlZXhlYycgKyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogd2hpdGVzcGFjZSArIDQgY2hhcnMgICAgICAgICovCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoIGN1clsxXSA9PSAnZScgJiYKLSAgICAgICAgICAgICAgIGN1clsyXSA9PSAneCcgJiYKLSAgICAgICAgICAgICAgIGN1clszXSA9PSAnZScgJiYKLSAgICAgICAgICAgICAgIGN1cls0XSA9PSAnYycgKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY3VyKys7Ci0gICAgICAgIGlmICggY3VyID49IGxpbWl0ICkKLSAgICAgICAgewotICAgICAgICAgIEZUX0VSUk9SKCggIlQxX0dldF9Qcml2YXRlX0RpY3Q6IgotICAgICAgICAgICAgICAgICAgICAgIiBjb3VsZCBub3QgZmluZCBgZWV4ZWMnIGtleXdvcmRcbiIgKSk7Ci0gICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOwotICAgICAgICAgIGdvdG8gRXhpdDsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAvKiBjaGVjayB3aGV0aGVyIGBlZXhlYycgd2FzIHJlYWwgLS0gaXQgY291bGQgYmUgaW4gYSBjb21tZW50ICovCi0gICAgICAvKiBvciBzdHJpbmcgKGFzIGUuZy4gaW4gdTAwMzA0M3QuZ3NmIGZyb20gZ2hvc3RzY3JpcHQpICAgICAgICovCi0KICAgICAgIHBhcnNlci0+cm9vdC5jdXJzb3IgPSBwYXJzZXItPmJhc2VfZGljdDsKLSAgICAgIC8qIHNldCBsaW1pdCB0byBgZWV4ZWMnICsgd2hpdGVzcGFjZSArIDQgY2hhcmFjdGVycyAqLwotICAgICAgcGFyc2VyLT5yb290LmxpbWl0ICA9IGN1ciArIDEwOworICAgICAgcGFyc2VyLT5yb290LmxpbWl0ICA9IHBhcnNlci0+YmFzZV9kaWN0ICsgcGFyc2VyLT5iYXNlX2xlbjsKIAogICAgICAgY3VyICAgPSBwYXJzZXItPnJvb3QuY3Vyc29yOwogICAgICAgbGltaXQgPSBwYXJzZXItPnJvb3QubGltaXQ7CiAKICAgICAgIHdoaWxlICggY3VyIDwgbGltaXQgKQogICAgICAgewotICAgICAgICBpZiAoIGN1clswXSA9PSAnZScgICAmJgotICAgICAgICAgICAgIGN1ciArIDUgPCBsaW1pdCApCisgICAgICAgIC8qIDkgPSA1IGxldHRlcnMgZm9yIGBlZXhlYycgKyB3aGl0ZXNwYWNlICsgNCBjaGFycyAqLworICAgICAgICBpZiAoIGN1clswXSA9PSAnZScgJiYgY3VyICsgOSA8IGxpbWl0ICkKICAgICAgICAgewogICAgICAgICAgIGlmICggY3VyWzFdID09ICdlJyAmJgogICAgICAgICAgICAgICAgY3VyWzJdID09ICd4JyAmJgpAQCAtMzg5LDIxICszNjQsOSBAQAogICAgICAgICBjdXIgPSBwYXJzZXItPnJvb3QuY3Vyc29yOwogICAgICAgfQogCi0gICAgICAvKiB3ZSBoYXZlbid0IGZvdW5kIHRoZSBjb3JyZWN0IGBlZXhlYyc7IGdvIGJhY2sgYW5kIGNvbnRpbnVlICovCi0gICAgICAvKiBzZWFyY2hpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLSAgICAgIGN1ciAgID0gbGltaXQ7Ci0gICAgICBsaW1pdCA9IHBhcnNlci0+YmFzZV9kaWN0ICsgcGFyc2VyLT5iYXNlX2xlbjsKLQotICAgICAgaWYgKCBjdXIgPj0gbGltaXQgKQotICAgICAgewotICAgICAgICBGVF9FUlJPUigoICJUMV9HZXRfUHJpdmF0ZV9EaWN0OiIKLSAgICAgICAgICAgICAgICAgICAiIHByZW1hdHVyZSBlbmQgaW4gcHJpdmF0ZSBkaWN0aW9uYXJ5XG4iICkpOwotICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7Ci0gICAgICAgIGdvdG8gRXhpdDsKLSAgICAgIH0KLQotICAgICAgZ290byBBZ2FpbjsKKyAgICAgIEZUX0VSUk9SKCggIlQxX0dldF9Qcml2YXRlX0RpY3Q6IGNvdWxkIG5vdCBmaW5kIGBlZXhlYycga2V5d29yZFxuIiApKTsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICAgIGdvdG8gRXhpdDsKIAogICAgICAgLyogbm93IGRldGVybWluZSB3aGVyZSB0byB3cml0ZSB0aGUgX2VuY3J5cHRlZF8gYmluYXJ5IHByaXZhdGUgICovCiAgICAgICAvKiBkaWN0aW9uYXJ5LiAgV2Ugb3ZlcndyaXRlIHRoZSBiYXNlIGRpY3Rpb25hcnkgZm9yIGRpc2stYmFzZWQgKi8KZGlmZiAtLWdpdCBhL3NyYy90eXBlMS90MXBhcnNlLmggYi9zcmMvdHlwZTEvdDFwYXJzZS5oCmluZGV4IDI0N2ZmNzMuLjBkOWEyODYgMTAwNjQ0Ci0tLSBhL3NyYy90eXBlMS90MXBhcnNlLmgKKysrIGIvc3JjL3R5cGUxL3QxcGFyc2UuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIFR5cGUgMSBwYXJzZXIgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy90eXBlMS90MXRva2Vucy5oIGIvc3JjL3R5cGUxL3QxdG9rZW5zLmgKaW5kZXggMTNhYzhhYy4uNDBmMzYwOSAxMDA2NDQKLS0tIGEvc3JjL3R5cGUxL3QxdG9rZW5zLmgKKysrIGIvc3JjL3R5cGUxL3QxdG9rZW5zLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUeXBlIDEgdG9rZW5pemVyIChzcGVjaWZpY2F0aW9uKS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvdHlwZTEvdHlwZTEuYyBiL3NyYy90eXBlMS90eXBlMS5jCmluZGV4IDAwM2I3OGMuLmQ5YmQ4Y2EgMTAwNjQ0Ci0tLSBhL3NyYy90eXBlMS90eXBlMS5jCisrKyBiL3NyYy90eXBlMS90eXBlMS5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgRnJlZVR5cGUgVHlwZSAxIGRyaXZlciBjb21wb25lbnQgKGJvZHkgb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3R5cGU0Mi9tb2R1bGUubWsgYi9zcmMvdHlwZTQyL21vZHVsZS5tawppbmRleCBlYzMyMTRjLi5kOThiMTIzIDEwMDY0NAotLS0gYS9zcmMvdHlwZTQyL21vZHVsZS5taworKysgYi9zcmMvdHlwZTQyL21vZHVsZS5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL3NyYy90eXBlNDIvcnVsZXMubWsgYi9zcmMvdHlwZTQyL3J1bGVzLm1rCmluZGV4IDk4MjE5NDMuLjQxY2IzNTggMTAwNjQ0Ci0tLSBhL3NyYy90eXBlNDIvcnVsZXMubWsKKysrIGIvc3JjL3R5cGU0Mi9ydWxlcy5tawpAQCAtMyw3ICszLDcgQEAKICMKIAogCi0jIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisjIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKZGlmZiAtLWdpdCBhL3NyYy90eXBlNDIvdDQyZHJpdnIuYyBiL3NyYy90eXBlNDIvdDQyZHJpdnIuYwppbmRleCBlNzRiYTFkLi5jZTE1MjhlIDEwMDY0NAotLS0gYS9zcmMvdHlwZTQyL3Q0MmRyaXZyLmMKKysrIGIvc3JjL3R5cGU0Mi90NDJkcml2ci5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgSGlnaC1sZXZlbCBUeXBlIDQyIGRyaXZlciBpbnRlcmZhY2UgKGJvZHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogUm9iZXJ0byBBbGFtZWRhLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKQEAgLTE1MCwyMiArMTUwLDEzIEBACiAgIH0KIAogCi0gIHN0YXRpYyBGVF9FcnJvcgotICB0NDJfcHNfZ2V0X2ZvbnRfcHJpdmF0ZSggRlRfRmFjZSAgICAgICAgIGZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQU19Qcml2YXRlUmVjKiAgYWZvbnRfcHJpdmF0ZSApCi0gIHsKLSAgICAqYWZvbnRfcHJpdmF0ZSA9ICgoVDQyX0ZhY2UpZmFjZSktPnR5cGUxLnByaXZhdGVfZGljdDsKLQotICAgIHJldHVybiBGVF9FcnJfT2s7Ci0gIH0KLQotCiAgIHN0YXRpYyBjb25zdCBGVF9TZXJ2aWNlX1BzSW5mb1JlYyAgdDQyX3NlcnZpY2VfcHNfaW5mbyA9CiAgIHsKICAgICAoUFNfR2V0Rm9udEluZm9GdW5jKSAgIHQ0Ml9wc19nZXRfZm9udF9pbmZvLCAgICAvKiBwc19nZXRfZm9udF9pbmZvICAgICovCiAgICAgKFBTX0dldEZvbnRFeHRyYUZ1bmMpICB0NDJfcHNfZ2V0X2ZvbnRfZXh0cmEsICAgLyogcHNfZ2V0X2ZvbnRfZXh0cmEgICAqLwogICAgIChQU19IYXNHbHlwaE5hbWVzRnVuYykgdDQyX3BzX2hhc19nbHlwaF9uYW1lcywgIC8qIHBzX2hhc19nbHlwaF9uYW1lcyAgKi8KLSAgICAoUFNfR2V0Rm9udFByaXZhdGVGdW5jKXQ0Ml9wc19nZXRfZm9udF9wcml2YXRlLCAvKiBwc19nZXRfZm9udF9wcml2YXRlICovCisgICAgLyogVHlwZTQyIGZvbnRzIGRvbid0IGhhdmUgYSBQcml2YXRlIGRpY3QgKi8KKyAgICAoUFNfR2V0Rm9udFByaXZhdGVGdW5jKU5VTEwsICAgICAgICAgICAgICAgICAgICAvKiBwc19nZXRfZm9udF9wcml2YXRlICovCiAgICAgLyogbm90IGltcGxlbWVudGVkICovCiAgICAgKFBTX0dldEZvbnRWYWx1ZUZ1bmMpICBOVUxMICAgICAgICAgICAgICAgICAgICAgLyogcHNfZ2V0X2ZvbnRfdmFsdWUgICAqLwogICB9OwpkaWZmIC0tZ2l0IGEvc3JjL3R5cGU0Mi90NDJkcml2ci5oIGIvc3JjL3R5cGU0Mi90NDJkcml2ci5oCmluZGV4IGM2ZDhhNDQuLmVjN2RhMTggMTAwNjQ0Ci0tLSBhL3NyYy90eXBlNDIvdDQyZHJpdnIuaAorKysgYi9zcmMvdHlwZTQyL3Q0MmRyaXZyLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBIaWdoLWxldmVsIFR5cGUgNDIgZHJpdmVyIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBSb2JlcnRvIEFsYW1lZGEuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3R5cGU0Mi90NDJlcnJvci5oIGIvc3JjL3R5cGU0Mi90NDJlcnJvci5oCmluZGV4IDQ3MGY1MTguLmRjZWE5YzQgMTAwNjQ0Ci0tLSBhL3NyYy90eXBlNDIvdDQyZXJyb3IuaAorKysgYi9zcmMvdHlwZTQyL3Q0MmVycm9yLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUeXBlIDQyIGVycm9yIGNvZGVzIChzcGVjaWZpY2F0aW9uIG9ubHkpLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy90eXBlNDIvdDQyb2Jqcy5jIGIvc3JjL3R5cGU0Mi90NDJvYmpzLmMKaW5kZXggMDM5NTVlOS4uYmY0MDI4ZSAxMDA2NDQKLS0tIGEvc3JjL3R5cGU0Mi90NDJvYmpzLmMKKysrIGIvc3JjL3R5cGU0Mi90NDJvYmpzLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUeXBlIDQyIG9iamVjdHMgbWFuYWdlciAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBSb2JlcnRvIEFsYW1lZGEuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtNDQsMTQgKzQ0LDggQEAKIAogICAgIHBhcnNlciA9ICZsb2FkZXIucGFyc2VyOwogCi0gICAgaWYgKCBGVF9RQUxMT0MoIGZhY2UtPnR0Zl9kYXRhLCAxMiApICkKLSAgICAgIGdvdG8gRXhpdDsKLQotICAgIC8qIHdoaWxlIHBhcnNpbmcgdGhlIGZvbnQgd2UgYWx3YXlzIHVwZGF0ZSBgZmFjZS0+dHRmX3NpemUnIHNvIHRoYXQgKi8KLSAgICAvKiBldmVuIGluIGNhc2Ugb2YgYnVnZ3kgZGF0YSAod2hpY2ggbWlnaHQgbGVhZCB0byBwcmVtYXR1cmUgZW5kIG9mICovCi0gICAgLyogc2Nhbm5pbmcgd2l0aG91dCBjYXVzaW5nIGFuIGVycm9yKSB0aGUgY2FsbCB0byBgRlRfT3Blbl9GYWNlJyBpbiAqLwotICAgIC8qIGBUNDJfRmFjZV9Jbml0JyBwYXNzZXMgdGhlIGNvcnJlY3Qgc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBmYWNlLT50dGZfc2l6ZSA9IDEyOworICAgIGZhY2UtPnR0Zl9kYXRhID0gTlVMTDsKKyAgICBmYWNlLT50dGZfc2l6ZSA9IDA7CiAKICAgICBlcnJvciA9IHQ0Ml9wYXJzZXJfaW5pdCggcGFyc2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5yb290LnN0cmVhbSwKQEAgLTE1Miw2ICsxNDYsMTEgQEAKIAogICBFeGl0OgogICAgIHQ0Ml9sb2FkZXJfZG9uZSggJmxvYWRlciApOworICAgIGlmICggZXJyb3IgKQorICAgIHsKKyAgICAgIEZUX0ZSRUUoIGZhY2UtPnR0Zl9kYXRhICk7CisgICAgICBmYWNlLT50dGZfc2l6ZSA9IDA7CisgICAgfQogICAgIHJldHVybiBlcnJvcjsKICAgfQogCmRpZmYgLS1naXQgYS9zcmMvdHlwZTQyL3Q0Mm9ianMuaCBiL3NyYy90eXBlNDIvdDQyb2Jqcy5oCmluZGV4IGNiZDM0NGYuLjMzZTYyMTUgMTAwNjQ0Ci0tLSBhL3NyYy90eXBlNDIvdDQyb2Jqcy5oCisrKyBiL3NyYy90eXBlNDIvdDQyb2Jqcy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHlwZSA0MiBvYmplY3RzIG1hbmFnZXIgKHNwZWNpZmljYXRpb24pLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIxIGJ5CisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMyBieQogICogUm9iZXJ0byBBbGFtZWRhLgogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwKZGlmZiAtLWdpdCBhL3NyYy90eXBlNDIvdDQycGFyc2UuYyBiL3NyYy90eXBlNDIvdDQycGFyc2UuYwppbmRleCBlYTJjNTE5Li42ZDc2NWM4IDEwMDY0NAotLS0gYS9zcmMvdHlwZTQyL3Q0MnBhcnNlLmMKKysrIGIvc3JjL3R5cGU0Mi90NDJwYXJzZS5jCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHlwZSA0MiBmb250IHBhcnNlciAoYm9keSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBSb2JlcnRvIEFsYW1lZGEuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApAQCAtOTIsNyArOTIsNyBAQAogI3VuZGVmICBUMUNPREUKICNkZWZpbmUgVDFDT0RFICAgICAgICBUMV9GSUVMRF9MT0NBVElPTl9CQk9YCiAKLSAgICBUMV9GSUVMRF9CQk9YKCJGb250QkJveCIsIHhNaW4sIDAgKQorICAgIFQxX0ZJRUxEX0JCT1goICJGb250QkJveCIsIHhNaW4sIDAgKQogCiAgICAgVDFfRklFTERfQ0FMTEJBQ0soICJGb250TWF0cml4IiwgIHQ0Ml9wYXJzZV9mb250X21hdHJpeCwgMCApCiAgICAgVDFfRklFTERfQ0FMTEJBQ0soICJFbmNvZGluZyIsICAgIHQ0Ml9wYXJzZV9lbmNvZGluZywgICAgMCApCkBAIC0zNjMsOCArMzYzLDggQEAKIAogICAgICAgLyogd2UgdXNlIGEgVDFfVGFibGUgdG8gc3RvcmUgb3VyIGNoYXJuYW1lcyAqLwogICAgICAgbG9hZGVyLT5udW1fY2hhcnMgPSBlbmNvZGUtPm51bV9jaGFycyA9IGNvdW50OwotICAgICAgaWYgKCBGVF9ORVdfQVJSQVkoIGVuY29kZS0+Y2hhcl9pbmRleCwgY291bnQgKSAgICAgfHwKLSAgICAgICAgICAgRlRfTkVXX0FSUkFZKCBlbmNvZGUtPmNoYXJfbmFtZSwgIGNvdW50ICkgICAgIHx8CisgICAgICBpZiAoIEZUX1FORVdfQVJSQVkoIGVuY29kZS0+Y2hhcl9pbmRleCwgY291bnQgKSAgICB8fAorICAgICAgICAgICBGVF9RTkVXX0FSUkFZKCBlbmNvZGUtPmNoYXJfbmFtZSwgIGNvdW50ICkgICAgfHwKICAgICAgICAgICAgRlRfU0VUX0VSUk9SKCBwc2F1eC0+cHNfdGFibGVfZnVuY3MtPmluaXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3RhYmxlLCBjb3VudCwgbWVtb3J5ICkgKSApCiAgICAgICB7CkBAIC01MzgsNyArNTM4LDggQEAKICAgICBGVF9CeXRlKiAgICBsaW1pdCAgPSBwYXJzZXItPnJvb3QubGltaXQ7CiAgICAgRlRfRXJyb3IgICAgZXJyb3I7CiAgICAgRlRfSW50ICAgICAgbnVtX3RhYmxlcyA9IDA7Ci0gICAgRlRfTG9uZyAgICAgY291bnQ7CisgICAgRlRfTG9uZyAgICAgdHRmX2NvdW50OworICAgIEZUX0xvbmcgICAgIHR0Zl9yZXNlcnZlZDsKIAogICAgIEZUX1VMb25nICAgIG4sIHN0cmluZ19zaXplLCBvbGRfc3RyaW5nX3NpemUsIHJlYWxfc2l6ZTsKICAgICBGVF9CeXRlKiAgICBzdHJpbmdfYnVmID0gTlVMTDsKQEAgLTU0Niw2ICs1NDcsOSBAQAogCiAgICAgVDQyX0xvYWRfU3RhdHVzICBzdGF0dXM7CiAKKyAgICAvKiogVGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIHNmbnRzIGFycmF5LCBidXQgZnJlZSBhbnkgcHJldmlvdXMuICovCisgICAgRlRfRlJFRSggZmFjZS0+dHRmX2RhdGEgKTsKKyAgICBmYWNlLT50dGZfc2l6ZSA9IDA7CiAKICAgICAvKiBUaGUgZm9ybWF0IGlzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCkBAIC01NzQsNyArNTc4LDEwIEBACiAgICAgc3RhdHVzICAgICAgICAgID0gQkVGT1JFX1NUQVJUOwogICAgIHN0cmluZ19zaXplICAgICA9IDA7CiAgICAgb2xkX3N0cmluZ19zaXplID0gMDsKLSAgICBjb3VudCAgICAgICAgICAgPSAwOworICAgIHR0Zl9jb3VudCAgICAgICA9IDA7CisgICAgdHRmX3Jlc2VydmVkICAgID0gMTI7CisgICAgaWYgKCBGVF9RQUxMT0MoIGZhY2UtPnR0Zl9kYXRhLCB0dGZfcmVzZXJ2ZWQgKSApCisgICAgICBnb3RvIEZhaWw7CiAKICAgICBGVF9UUkFDRTIoKCAiXG4iICkpOwogICAgIEZUX1RSQUNFMigoICJ0NDJfcGFyc2Vfc2ZudHM6XG4iICkpOwpAQCAtNTg5LDYgKzU5Niw3IEBACiAgICAgICBpZiAoICpjdXIgPT0gJ10nICkKICAgICAgIHsKICAgICAgICAgcGFyc2VyLT5yb290LmN1cnNvcisrOworICAgICAgICBmYWNlLT50dGZfc2l6ZSA9IHR0Zl9jb3VudDsKICAgICAgICAgZ290byBFeGl0OwogICAgICAgfQogCkBAIC02ODQsNyArNjkyLDcgQEAKICAgICAgIH0KIAogICAgICAgRlRfVFJBQ0UyKCggIiAgUFMgc3RyaW5nIHNpemUgJTVsdSBieXRlcywgb2Zmc2V0IDB4JTA4bHggKCVsdSlcbiIsCi0gICAgICAgICAgICAgICAgICBzdHJpbmdfc2l6ZSwgY291bnQsIGNvdW50ICkpOworICAgICAgICAgICAgICAgICAgc3RyaW5nX3NpemUsIHR0Zl9jb3VudCwgdHRmX2NvdW50ICkpOwogCiAgICAgICAvKiBUaGUgd2hvbGUgVFRGIGlzIG5vdyBsb2FkZWQgaW50byBgc3RyaW5nX2J1ZicuICBXZSBhcmUgKi8KICAgICAgIC8qIGNoZWNraW5nIGl0cyBjb250ZW50cyB3aGlsZSBjb3B5aW5nIGl0IHRvIGB0dGZfZGF0YScuICAqLwpAQCAtNjk3LDQzICs3MDUsNDggQEAKICAgICAgICAgewogICAgICAgICBjYXNlIEJFRk9SRV9TVEFSVDoKICAgICAgICAgICAvKiBsb2FkIG9mZnNldCB0YWJsZSwgMTIgYnl0ZXMgKi8KLSAgICAgICAgICBpZiAoIGNvdW50IDwgMTIgKQorICAgICAgICAgIGlmICggdHRmX2NvdW50IDwgMTIgKQogICAgICAgICAgIHsKLSAgICAgICAgICAgIGZhY2UtPnR0Zl9kYXRhW2NvdW50KytdID0gc3RyaW5nX2J1ZltuXTsKKyAgICAgICAgICAgIGZhY2UtPnR0Zl9kYXRhW3R0Zl9jb3VudCsrXSA9IHN0cmluZ19idWZbbl07CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICB9CiAgICAgICAgICAgZWxzZQogICAgICAgICAgIHsKLSAgICAgICAgICAgIG51bV90YWJsZXMgICAgID0gMTYgKiBmYWNlLT50dGZfZGF0YVs0XSArIGZhY2UtPnR0Zl9kYXRhWzVdOwotICAgICAgICAgICAgc3RhdHVzICAgICAgICAgPSBCRUZPUkVfVEFCTEVfRElSOwotICAgICAgICAgICAgZmFjZS0+dHRmX3NpemUgPSAxMiArIDE2ICogbnVtX3RhYmxlczsKKyAgICAgICAgICAgIEZUX0xvbmcgdHRmX3Jlc2VydmVkX3ByZXYgPSB0dGZfcmVzZXJ2ZWQ7CisKKworICAgICAgICAgICAgbnVtX3RhYmxlcyAgID0gMTYgKiBmYWNlLT50dGZfZGF0YVs0XSArIGZhY2UtPnR0Zl9kYXRhWzVdOworICAgICAgICAgICAgc3RhdHVzICAgICAgID0gQkVGT1JFX1RBQkxFX0RJUjsKKyAgICAgICAgICAgIHR0Zl9yZXNlcnZlZCA9IDEyICsgMTYgKiBudW1fdGFibGVzOwogCiAgICAgICAgICAgICBGVF9UUkFDRTIoKCAiICBTRk5UIGRpcmVjdG9yeSBjb250YWlucyAlZCB0YWJsZXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBudW1fdGFibGVzICkpOwogCi0gICAgICAgICAgICBpZiAoIChGVF9Mb25nKXNpemUgPCBmYWNlLT50dGZfc2l6ZSApCisgICAgICAgICAgICBpZiAoIChGVF9Mb25nKXNpemUgPCB0dGZfcmVzZXJ2ZWQgKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICBGVF9FUlJPUigoICJ0NDJfcGFyc2Vfc2ZudHM6IGludmFsaWQgZGF0YSBpbiBzZm50cyBhcnJheVxuIiApKTsKICAgICAgICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOwogICAgICAgICAgICAgICBnb3RvIEZhaWw7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICggRlRfUVJFQUxMT0MoIGZhY2UtPnR0Zl9kYXRhLCAxMiwgZmFjZS0+dHRmX3NpemUgKSApCisgICAgICAgICAgICBpZiAoIEZUX1FSRUFMTE9DKCBmYWNlLT50dGZfZGF0YSwgdHRmX3Jlc2VydmVkX3ByZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dGZfcmVzZXJ2ZWQgKSApCiAgICAgICAgICAgICAgIGdvdG8gRmFpbDsKICAgICAgICAgICB9Ci0gICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCisgICAgICAgICAgRkFMTF9USFJPVUdIOwogCiAgICAgICAgIGNhc2UgQkVGT1JFX1RBQkxFX0RJUjoKICAgICAgICAgICAvKiB0aGUgb2Zmc2V0IHRhYmxlIGlzIHJlYWQ7IHJlYWQgdGhlIHRhYmxlIGRpcmVjdG9yeSAqLwotICAgICAgICAgIGlmICggY291bnQgPCBmYWNlLT50dGZfc2l6ZSApCisgICAgICAgICAgaWYgKCB0dGZfY291bnQgPCB0dGZfcmVzZXJ2ZWQgKQogICAgICAgICAgIHsKLSAgICAgICAgICAgIGZhY2UtPnR0Zl9kYXRhW2NvdW50KytdID0gc3RyaW5nX2J1ZltuXTsKKyAgICAgICAgICAgIGZhY2UtPnR0Zl9kYXRhW3R0Zl9jb3VudCsrXSA9IHN0cmluZ19idWZbbl07CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICB9CiAgICAgICAgICAgZWxzZQogICAgICAgICAgIHsKICAgICAgICAgICAgIGludCAgICAgICBpOwogICAgICAgICAgICAgRlRfVUxvbmcgIGxlbjsKKyAgICAgICAgICAgIEZUX0xvbmcgdHRmX3Jlc2VydmVkX3ByZXYgPSB0dGZfcmVzZXJ2ZWQ7CiAKIAogICAgICAgICAgICAgRlRfVFJBQ0UyKCggIlxuIiApKTsKQEAgLTc0OSw3ICs3NjIsNyBAQAogICAgICAgICAgICAgICBGVF9UUkFDRTIoKCAiICAgJTRpICAweCUwOGx4ICglbHUpXG4iLCBpLCBsZW4sIGxlbiApKTsKIAogICAgICAgICAgICAgICBpZiAoIGxlbiA+IHNpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKLSAgICAgICAgICAgICAgICAgICBmYWNlLT50dGZfc2l6ZSA+IChGVF9Mb25nKSggc2l6ZSAtIGxlbiApICkKKyAgICAgICAgICAgICAgICAgICB0dGZfcmVzZXJ2ZWQgPiAoRlRfTG9uZykoIHNpemUgLSBsZW4gKSApCiAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBGVF9FUlJPUigoICJ0NDJfcGFyc2Vfc2ZudHM6IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBpbnZhbGlkIGRhdGEgaW4gc2ZudHMgYXJyYXlcbiIgKSk7CkBAIC03NTgsMzAgKzc3MSwzMSBAQAogICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgLyogUGFkIHRvIGEgNC1ieXRlIGJvdW5kYXJ5IGxlbmd0aCAqLwotICAgICAgICAgICAgICBmYWNlLT50dGZfc2l6ZSArPSAoRlRfTG9uZykoICggbGVuICsgMyApICYgfjNVICk7CisgICAgICAgICAgICAgIHR0Zl9yZXNlcnZlZCArPSAoRlRfTG9uZykoICggbGVuICsgMyApICYgfjNVICk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICB0dGZfcmVzZXJ2ZWQgKz0gMTsKIAogICAgICAgICAgICAgc3RhdHVzID0gT1RIRVJfVEFCTEVTOwogCiAgICAgICAgICAgICBGVF9UUkFDRTIoKCAiXG4iICkpOwotICAgICAgICAgICAgRlRfVFJBQ0UyKCggIiAgYWxsb2NhdGluZyAlbGQgYnl0ZXNcbiIsIGZhY2UtPnR0Zl9zaXplICsgMSApKTsKKyAgICAgICAgICAgIEZUX1RSQUNFMigoICIgIGFsbG9jYXRpbmcgJWxkIGJ5dGVzXG4iLCB0dGZfcmVzZXJ2ZWQgKSk7CiAgICAgICAgICAgICBGVF9UUkFDRTIoKCAiXG4iICkpOwogCi0gICAgICAgICAgICBpZiAoIEZUX1FSRUFMTE9DKCBmYWNlLT50dGZfZGF0YSwgMTIgKyAxNiAqIG51bV90YWJsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT50dGZfc2l6ZSArIDEgKSApCisgICAgICAgICAgICBpZiAoIEZUX1FSRUFMTE9DKCBmYWNlLT50dGZfZGF0YSwgdHRmX3Jlc2VydmVkX3ByZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dGZfcmVzZXJ2ZWQgKSApCiAgICAgICAgICAgICAgIGdvdG8gRmFpbDsKICAgICAgICAgICB9Ci0gICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCisgICAgICAgICAgRkFMTF9USFJPVUdIOwogCiAgICAgICAgIGNhc2UgT1RIRVJfVEFCTEVTOgogICAgICAgICAgIC8qIGFsbCBvdGhlciB0YWJsZXMgYXJlIGp1c3QgY29waWVkICovCi0gICAgICAgICAgaWYgKCBjb3VudCA+PSBmYWNlLT50dGZfc2l6ZSApCisgICAgICAgICAgaWYgKCB0dGZfY291bnQgPj0gdHRmX3Jlc2VydmVkICkKICAgICAgICAgICB7CiAgICAgICAgICAgICBGVF9FUlJPUigoICJ0NDJfcGFyc2Vfc2ZudHM6IHRvbyBtdWNoIGJpbmFyeSBkYXRhXG4iICkpOwogICAgICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOwogICAgICAgICAgICAgZ290byBGYWlsOwogICAgICAgICAgIH0KLSAgICAgICAgICBmYWNlLT50dGZfZGF0YVtjb3VudCsrXSA9IHN0cmluZ19idWZbbl07CisgICAgICAgICAgZmFjZS0+dHRmX2RhdGFbdHRmX2NvdW50KytdID0gc3RyaW5nX2J1ZltuXTsKICAgICAgICAgfQogICAgICAgfQogCkBAIC03OTUsNiArODA5LDExIEBACiAgICAgcGFyc2VyLT5yb290LmVycm9yID0gZXJyb3I7CiAKICAgRXhpdDoKKyAgICBpZiAoIHBhcnNlci0+cm9vdC5lcnJvciApCisgICAgeworICAgICAgRlRfRlJFRSggZmFjZS0+dHRmX2RhdGEgKTsKKyAgICAgIGZhY2UtPnR0Zl9zaXplID0gMDsKKyAgICB9CiAgICAgaWYgKCBhbGxvY2F0ZWQgKQogICAgICAgRlRfRlJFRSggc3RyaW5nX2J1ZiApOwogICB9CkBAIC05ODksOSArMTAwOCw5IEBACiAgICAgICAgIG5hbWVfdGFibGUtPmVsZW1lbnRzW25dW2xlbl0gPSAnXDAnOwogCiAgICAgICAgIC8qIHJlY29yZCBpbmRleCBvZiAvLm5vdGRlZiAqLwotICAgICAgICBpZiAoICpjdXIgPT0gJy4nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgIGlmICggKmN1ciA9PSAnLicgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgogICAgICAgICAgICAgIGZ0X3N0cmNtcCggIi5ub3RkZWYiLAotICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIqKShuYW1lX3RhYmxlLT5lbGVtZW50c1tuXSkgKSA9PSAwICkKKyAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyKikoIG5hbWVfdGFibGUtPmVsZW1lbnRzW25dICkgKSA9PSAwICkKICAgICAgICAgewogICAgICAgICAgIG5vdGRlZl9pbmRleCA9IG47CiAgICAgICAgICAgbm90ZGVmX2ZvdW5kID0gMTsKZGlmZiAtLWdpdCBhL3NyYy90eXBlNDIvdDQycGFyc2UuaCBiL3NyYy90eXBlNDIvdDQycGFyc2UuaAppbmRleCAwZmJkMmI1Li41NzQxYzU0IDEwMDY0NAotLS0gYS9zcmMvdHlwZTQyL3Q0MnBhcnNlLmgKKysrIGIvc3JjL3R5cGU0Mi90NDJwYXJzZS5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgVHlwZSA0MiBmb250IHBhcnNlciAoc3BlY2lmaWNhdGlvbikuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBSb2JlcnRvIEFsYW1lZGEuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3R5cGU0Mi90NDJ0eXBlcy5oIGIvc3JjL3R5cGU0Mi90NDJ0eXBlcy5oCmluZGV4IGVhMmYwM2UuLjBiZmUxNGUgMTAwNjQ0Ci0tLSBhL3NyYy90eXBlNDIvdDQydHlwZXMuaAorKysgYi9zcmMvdHlwZTQyL3Q0MnR5cGVzLmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBUeXBlIDQyIGZvbnQgZGF0YSB0eXBlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjMgYnkKICAqIFJvYmVydG8gQWxhbWVkYS4KICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsCmRpZmYgLS1naXQgYS9zcmMvdHlwZTQyL3R5cGU0Mi5jIGIvc3JjL3R5cGU0Mi90eXBlNDIuYwppbmRleCBkOGQzOTM2Li44ZDIzMDJjIDEwMDY0NAotLS0gYS9zcmMvdHlwZTQyL3R5cGU0Mi5jCisrKyBiL3NyYy90eXBlNDIvdHlwZTQyLmMKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBUeXBlIDQyIGRyaXZlciBjb21wb25lbnQuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3dpbmZvbnRzL2ZudGVycnMuaCBiL3NyYy93aW5mb250cy9mbnRlcnJzLmgKaW5kZXggZDU4MmE5Yi4uZGFmZGIwNyAxMDA2NDQKLS0tIGEvc3JjL3dpbmZvbnRzL2ZudGVycnMuaAorKysgYi9zcmMvd2luZm9udHMvZm50ZXJycy5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqICAgV2luIEZOVC9GT04gZXJyb3IgY29kZXMgKHNwZWNpZmljYXRpb24gb25seSkuCiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKgogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLApkaWZmIC0tZ2l0IGEvc3JjL3dpbmZvbnRzL21vZHVsZS5tayBiL3NyYy93aW5mb250cy9tb2R1bGUubWsKaW5kZXggNGE4NTgwYy4uNzhhMjkwMCAxMDA2NDQKLS0tIGEvc3JjL3dpbmZvbnRzL21vZHVsZS5taworKysgYi9zcmMvd2luZm9udHMvbW9kdWxlLm1rCkBAIC0zLDcgKzMsNyBAQAogIwogCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLApkaWZmIC0tZ2l0IGEvc3JjL3dpbmZvbnRzL3J1bGVzLm1rIGIvc3JjL3dpbmZvbnRzL3J1bGVzLm1rCmluZGV4IDEzODRmMjMuLmIzOWM1MTkgMTAwNjQ0Ci0tLSBhL3NyYy93aW5mb250cy9ydWxlcy5taworKysgYi9zcmMvd2luZm9udHMvcnVsZXMubWsKQEAgLTMsNyArMyw3IEBACiAjCiAKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMyBieQogIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAjCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmRpZmYgLS1naXQgYS9zcmMvd2luZm9udHMvd2luZm50LmMgYi9zcmMvd2luZm9udHMvd2luZm50LmMKaW5kZXggYjRmYWJhZC4uZmE3M2FlNCAxMDA2NDQKLS0tIGEvc3JjL3dpbmZvbnRzL3dpbmZudC5jCisrKyBiL3NyYy93aW5mb250cy93aW5mbnQuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiAgIEZyZWVUeXBlIGZvbnQgZHJpdmVyIGZvciBXaW5kb3dzIEZOVC9GT04gZmlsZXMKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAyMSBieQorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjMgYnkKICAqIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KICAqIENvcHlyaWdodCAyMDAzIEh1dyBEIE0gRGF2aWVzIGZvciBDb2Rld2VhdmVycwogICogQ29weXJpZ2h0IDIwMDcgRG1pdHJ5IFRpbW9zaGtvdiBmb3IgQ29kZXdlYXZlcnMKQEAgLTM1Miw2ICszNTIsMTAgQEAKIAogICAgICAgICAgIGNvdW50ID0gRlRfR0VUX1VTSE9SVF9MRSgpOwogCisgICAgICAgICAgRlRfVFJBQ0UyKCggdHlwZV9pZCA9PSAweDgwMDdVID8gIlJUX0ZPTlRESVIgY291bnQgJWh1XG4iIDoKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlX2lkID09IDB4ODAwOFUgPyAiUlRfRk9OVCBjb3VudCAlaHVcbiIgOiAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCApKTsKKwogICAgICAgICAgIGlmICggdHlwZV9pZCA9PSAweDgwMDhVICkKICAgICAgICAgICB7CiAgICAgICAgICAgICBmb250X2NvdW50ICA9IGNvdW50OwpAQCAtNDg1LDcgKzQ4OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkaXJfZW50cnkxICkgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgZ290byBFeGl0OwogCi0gICAgICAgICAgaWYgKCAhKGRpcl9lbnRyeTEub2Zmc2V0ICYgMHg4MDAwMDAwMFVMICkgLyogRGF0YUlzRGlyZWN0b3J5ICovICkKKyAgICAgICAgICBpZiAoICEoIGRpcl9lbnRyeTEub2Zmc2V0ICYgMHg4MDAwMDAwMFVMICkgLyogRGF0YUlzRGlyZWN0b3J5ICovICkKICAgICAgICAgICB7CiAgICAgICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CiAgICAgICAgICAgICBnb3RvIEV4aXQ7CkBAIC01MDksNyArNTEzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGlyX2VudHJ5MiApICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgZ290byBFeGl0OwogCi0gICAgICAgICAgICBpZiAoICEoZGlyX2VudHJ5Mi5vZmZzZXQgJiAweDgwMDAwMDAwVUwgKSAvKiBEYXRhSXNEaXJlY3RvcnkgKi8gKQorICAgICAgICAgICAgaWYgKCAhKCBkaXJfZW50cnkyLm9mZnNldCAmIDB4ODAwMDAwMDBVTCApIC8qIERhdGFJc0RpcmVjdG9yeSAqLyApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKICAgICAgICAgICAgICAgZ290byBFeGl0OwpkaWZmIC0tZ2l0IGEvc3JjL3dpbmZvbnRzL3dpbmZudC5oIGIvc3JjL3dpbmZvbnRzL3dpbmZudC5oCmluZGV4IGE3MTM0YWIuLjJmNzViOWUgMTAwNjQ0Ci0tLSBhL3NyYy93aW5mb250cy93aW5mbnQuaAorKysgYi9zcmMvd2luZm9udHMvd2luZm50LmgKQEAgLTQsNyArNCw3IEBACiAgKgogICogICBGcmVlVHlwZSBmb250IGRyaXZlciBmb3IgV2luZG93cyBGTlQvRk9OIGZpbGVzCiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMjEgYnkKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDIzIGJ5CiAgKiBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAgKiBDb3B5cmlnaHQgMjAwNyBEbWl0cnkgVGltb3Noa292IGZvciBDb2Rld2VhdmVycwogICoKZGlmZiAtLWdpdCBhL3N1YnByb2plY3RzL2RsZyBiL3N1YnByb2plY3RzL2RsZwpkZWxldGVkIGZpbGUgbW9kZSAxNjAwMDAKaW5kZXggZDE0MmU2NC4uMDAwMDAwMAotLS0gYS9zdWJwcm9qZWN0cy9kbGcKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TdWJwcm9qZWN0IGNvbW1pdCBkMTQyZTY0NmUyNjNjODlmOTM2NjNlMDI3YzJmMGQwMzczOWFiNDJkCmRpZmYgLS1naXQgYS9zdWJwcm9qZWN0cy9oYXJmYnV6ei53cmFwIGIvc3VicHJvamVjdHMvaGFyZmJ1enoud3JhcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDFiZTYzCi0tLSAvZGV2L251bGwKKysrIGIvc3VicHJvamVjdHMvaGFyZmJ1enoud3JhcApAQCAtMCwwICsxLDEyIEBACitbd3JhcC1maWxlXQorZGlyZWN0b3J5ID0gaGFyZmJ1enotNS4yLjAKK3NvdXJjZV91cmwgPSBodHRwczovL2dpdGh1Yi5jb20vaGFyZmJ1enovaGFyZmJ1enovcmVsZWFzZXMvZG93bmxvYWQvNS4yLjAvaGFyZmJ1enotNS4yLjAudGFyLnh6Citzb3VyY2VfZmlsZW5hbWUgPSBoYXJmYnV6ei01LjIuMC50YXIueHoKK3NvdXJjZV9oYXNoID0gNzM1YTk0OTE3YjQ3OTM2NTc1YWNiNGQ0ZmE3ZTc5ODY1MjJmOGE4OTUyN2U0NjM1NzIxNDc0ZGVlMmJjOTQyYword3JhcGRiX3ZlcnNpb24gPSA1LjIuMC0xCisKK1twcm92aWRlXQoraGFyZmJ1enogPSBsaWJoYXJmYnV6el9kZXAKK2hhcmZidXp6LWljdSA9IGxpYmhhcmZidXp6X2ljdV9kZXAKK2hhcmZidXp6LXN1YnNldCA9IGxpYmhhcmZidXp6X3N1YnNldF9kZXAKK2hhcmZidXp6LWdvYmplY3QgPSBsaWJoYXJmYnV6el9nb2JqZWN0X2RlcApkaWZmIC0tZ2l0IGEvc3VicHJvamVjdHMvbGlicG5nLndyYXAgYi9zdWJwcm9qZWN0cy9saWJwbmcud3JhcAppbmRleCA5NDQzNWU4Li4xMmJhNWIxIDEwMDY0NAotLS0gYS9zdWJwcm9qZWN0cy9saWJwbmcud3JhcAorKysgYi9zdWJwcm9qZWN0cy9saWJwbmcud3JhcApAQCAtMSwxMiArMSwxMiBAQAogW3dyYXAtZmlsZV0KLWRpcmVjdG9yeSA9IGxpYnBuZy0xLjYuMzcKLXNvdXJjZV91cmwgPSBodHRwczovL2dpdGh1Yi5jb20vZ2xlbm5ycC9saWJwbmcvYXJjaGl2ZS92MS42LjM3LnRhci5negotc291cmNlX2ZpbGVuYW1lID0gbGlicG5nLTEuNi4zNy50YXIuZ3oKLXNvdXJjZV9oYXNoID0gY2E3NGEwZGFjZTE3OWE4NDIyMTg3NjcxYWVlOTdkZDM4OTJiNTNlMTY4NjI3MTQ1MjcxY2FkNWI1YWM4MTMwNwotcGF0Y2hfZmlsZW5hbWUgPSBsaWJwbmdfMS42LjM3LTVfcGF0Y2guemlwCi1wYXRjaF91cmwgPSBodHRwczovL3dyYXBkYi5tZXNvbmJ1aWxkLmNvbS92Mi9saWJwbmdfMS42LjM3LTUvZ2V0X3BhdGNoCi1wYXRjaF9oYXNoID0gODIyMjAwOTA2YWQyZTgyZGM4YjQ0ZTc5ZmU5NjBlOTgwY2NhZDk2MjYzNTQ4YzM1ZWVmNzIxMDg2YTk5MjZmMQorZGlyZWN0b3J5ID0gbGlicG5nLTEuNi4zOQorc291cmNlX3VybCA9IGh0dHBzOi8vZ2l0aHViLmNvbS9nbGVubnJwL2xpYnBuZy9hcmNoaXZlL3YxLjYuMzkudGFyLmd6Citzb3VyY2VfZmlsZW5hbWUgPSBsaWJwbmctMS42LjM5LnRhci5negorc291cmNlX2hhc2ggPSBhMDBlOWQyZjJmNjY0MTg2ZTQyMDJkYjkyOTkzOTdmODUxYWVhNzFiMzZhMzVlNzQ5MTBiODgyMGUzODBkNDQxCitwYXRjaF9maWxlbmFtZSA9IGxpYnBuZ18xLjYuMzktMl9wYXRjaC56aXAKK3BhdGNoX3VybCA9IGh0dHBzOi8vd3JhcGRiLm1lc29uYnVpbGQuY29tL3YyL2xpYnBuZ18xLjYuMzktMi9nZXRfcGF0Y2gKK3BhdGNoX2hhc2ggPSA4YmNmOGY2OWY1MDIzM2YzYTM1ZTM3MThhYjNjOTFiMGM1MWI0YzFhMDhhODRjODdiZTBiMWY0ODEzYWRmMTdmCit3cmFwZGJfdmVyc2lvbiA9IDEuNi4zOS0yCiAKIFtwcm92aWRlXQogbGlicG5nID0gbGlicG5nX2RlcAotCmRpZmYgLS1naXQgYS9zdWJwcm9qZWN0cy96bGliLndyYXAgYi9zdWJwcm9qZWN0cy96bGliLndyYXAKaW5kZXggY2UyMGZiMC4uMjNhZjA3MSAxMDA2NDQKLS0tIGEvc3VicHJvamVjdHMvemxpYi53cmFwCisrKyBiL3N1YnByb2plY3RzL3psaWIud3JhcApAQCAtMSwxMiArMSwxMiBAQAogW3dyYXAtZmlsZV0KLWRpcmVjdG9yeSA9IHpsaWItMS4yLjExCi1zb3VyY2VfdXJsID0gaHR0cDovL3psaWIubmV0L2Zvc3NpbHMvemxpYi0xLjIuMTEudGFyLmd6Ci1zb3VyY2VfZmlsZW5hbWUgPSB6bGliLTEuMi4xMS50YXIuZ3oKLXNvdXJjZV9oYXNoID0gYzNlNWU5ZmRkNTAwNGRjYjU0MmZlZGE1ZWU0ZjBmZjA3NDQ2MjhiYWY4ZWQyZGQ1ZDY2ZjhjYTExOTdjYjFhMQotcGF0Y2hfdXJsID0gaHR0cHM6Ly93cmFwZGIubWVzb25idWlsZC5jb20vdjEvcHJvamVjdHMvemxpYi8xLjIuMTEvNS9nZXRfemlwCi1wYXRjaF9maWxlbmFtZSA9IHpsaWItMS4yLjExLTUtd3JhcC56aXAKLXBhdGNoX2hhc2ggPSA3MjhjOGUyNGFjYmMyZTY2ODJmYmQ5NTBmZWMzOWUyZmM3NzUyOGFmMzYxYWRiODcyNTlmOGE4NTExNDM0MDA0CitkaXJlY3RvcnkgPSB6bGliLTEuMi4xMworc291cmNlX3VybCA9IGh0dHA6Ly96bGliLm5ldC9mb3NzaWxzL3psaWItMS4yLjEzLnRhci5negorc291cmNlX2ZpbGVuYW1lID0gemxpYi0xLjIuMTMudGFyLmd6Citzb3VyY2VfaGFzaCA9IGIzYTI0ZGU5N2E4ZmRiYzgzNWI5ODMzMTY5NTAxMDMwYjg5NzcwMzFiY2I1NGIzYjNhYzEzNzQwZjg0NmFiMzAKK3BhdGNoX2ZpbGVuYW1lID0gemxpYl8xLjIuMTMtMl9wYXRjaC56aXAKK3BhdGNoX3VybCA9IGh0dHBzOi8vd3JhcGRiLm1lc29uYnVpbGQuY29tL3YyL3psaWJfMS4yLjEzLTIvZ2V0X3BhdGNoCitwYXRjaF9oYXNoID0gYTdhYmVhM2FkNjVkYzJjMjkxYWQ1ZmJiZjUzNTVkMDU4NWE3ZjdiOGM5MzVkNGE3NDMzNWI4ZmUxODY4NDUwNgord3JhcGRiX3ZlcnNpb24gPSAxLjIuMTMtMgogCiBbcHJvdmlkZV0KIHpsaWIgPSB6bGliX2RlcAotCmRpZmYgLS1naXQgYS92bXNfbWFrZS5jb20gYi92bXNfbWFrZS5jb20KaW5kZXggNmU2MzM3ZC4uYTFjY2I2NSAxMDA2NDQKLS0tIGEvdm1zX21ha2UuY29tCisrKyBiL3Ztc19tYWtlLmNvbQpAQCAtMSw2ICsxLDYgQEAKICQhIG1ha2UgRnJlZVR5cGUgMiB1bmRlciBPcGVuVk1TCiAkIQotJCEgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgYnkKKyQhIENvcHlyaWdodCAoQykgMjAwMy0yMDIzIGJ5CiAkISBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCiAkIQogJCEgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwK