From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Tomas Mraz To: git-commits@fedoraproject.org Subject: [rpms/openssl] rebase_40beta: update to upstream version 1.1.0b Date: Tue, 09 Jun 2026 12:43:50 GMT Message-ID: <178100903088.1.5214597315986411735.rpms-openssl-510bcc2e3ab6@fedoraproject.org> List-ID: X-Git-Repo: rpms/openssl X-Git-Branch: rebase_40beta X-Git-Rev: 510bcc2e3ab6eca74d51e88f435470e8af780666 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb3BlbnNzbApCcmFu Y2ggOiByZWJhc2VfNDBiZXRhCkNvbW1pdCA6IDUxMGJjYzJlM2FiNmVjYTc0ZDUxZTg4ZjQzNTQ3 MGU4YWY3ODA2NjYKQXV0aG9yIDogVG9tYXMgTXJheiA8dG1yYXpAZmVkb3JhcHJvamVjdC5vcmc+ CkRhdGUgICA6IDIwMTYtMTAtMTFUMTA6MzE6NTQrMDI6MDAKU3RhdHMgIDogKzEzNDc0Ly0yMTc1 MiBpbiA3MSBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3Jw bXMvb3BlbnNzbC9jLzUxMGJjYzJlM2FiNmVjYTc0ZDUxZTg4ZjQzNTQ3MGU4YWY3ODA2NjY/YnJh bmNoPXJlYmFzZV80MGJldGEKCkxvZzoKdXBkYXRlIHRvIHVwc3RyZWFtIHZlcnNpb24gMS4xLjBi CgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGUyYzc4MmIu LjE2ZGMxNWQgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMzEs MyArMzEsNCBAQCBvcGVuc3NsLTEuMC4wYS11c2EudGFyLmJ6MgogL29wZW5zc2wtMS4wLjJoLWhv YmJsZWQudGFyLnh6CiAvb3BlbnNzbC0xLjAuMmktaG9iYmxlZC50YXIueHoKIC9vcGVuc3NsLTEu MC4yai1ob2JibGVkLnRhci54egorL29wZW5zc2wtMS4xLjBiLWhvYmJsZWQudGFyLnh6CgpkaWZm IC0tZ2l0IGEvUkVBRE1FLkZJUFMgYi9SRUFETUUuRklQUwppbmRleCA3NGE4MGI5Li5hMzZjNTQ3 IDEwMDY0NAotLS0gYS9SRUFETUUuRklQUworKysgYi9SRUFETUUuRklQUwpAQCAtNiwxNyArNiwx NyBAQCBSZWQgSGF0IEVudGVycHJpc2UgTGludXggLSBPUEVOU1NMIE1vZHVsZS4KIAogVGhlIG1v ZHVsZSBmaWxlcwogPT09PT09PT09PT09PT09PQotL3Vzci9saWJbNjRdL2xpYmNyeXB0by5zby4x LjAuMWUKLS91c3IvbGliWzY0XS9saWJzc2wuc28uMS4wLjFlCi0vdXNyL2xpYls2NF0vLmxpYmNy eXB0by5zby4xLjAuMWUuaG1hYwotL3Vzci9saWJbNjRdLy5saWJzc2wuc28uMS4wLjFlLmhtYWMK Ky91c3IvbGliWzY0XS9saWJjcnlwdG8uc28uMS4xLjAKKy91c3IvbGliWzY0XS9saWJzc2wuc28u MS4xLjAKKy91c3IvbGliWzY0XS8ubGliY3J5cHRvLnNvLjEuMS4wLmhtYWMKKy91c3IvbGliWzY0 XS8ubGlic3NsLnNvLjEuMS4wLmhtYWMKIAogRGVwZW5kZW5jaWVzCiA9PT09PT09PT09PT0KIAog VGhlIGFwcHJvdmVkIG1vZGUgb2Ygb3BlcmF0aW9uIHJlcXVpcmVzIGtlcm5lbCB3aXRoIC9kZXYv dXJhbmRvbSBSTkcgcnVubmluZwogd2l0aCBwcm9wZXJ0aWVzIGFzIGRlZmluZWQgaW4gdGhlIHNl Y3VyaXR5IHBvbGljeSBvZiB0aGUgbW9kdWxlLiBUaGlzIGlzCi1wcm92aWRlZCBieSBrZXJuZWwg cGFja2FnZXMgd2l0aCB2YWxpZGF0ZWQgUmVkIEhhdCBFbnRlcnByaXNlIExpbnV4IC0gSVBTZWMK K3Byb3ZpZGVkIGJ5IGtlcm5lbCBwYWNrYWdlcyB3aXRoIHZhbGlkYXRlZCBSZWQgSGF0IEVudGVy cHJpc2UgTGludXggS2VybmVsCiBDcnl0b2dyYXBoaWMgTW9kdWxlLgogCiBJbnN0YWxsYXRpb24K QEAgLTI2LDExICsyNiw4IEBAIFRoZSBSUE0gcGFja2FnZSBvZiB0aGUgbW9kdWxlIGNhbiBiZSBp bnN0YWxsZWQgYnkgc3RhbmRhcmQgdG9vbHMgcmVjb21tZW5kZWQKIGZvciBpbnN0YWxsYXRpb24g b2YgUlBNIHBhY2thZ2VzIG9uIHRoZSBSZWQgSGF0IEVudGVycHJpc2UgTGludXggc3lzdGVtICh5 dW0sCiBycG0sIFJITiByZW1vdGUgbWFuYWdlbWVudCB0b29sKS4KIAotRm9yIHByb3BlciBvcGVy YXRpb24gb2YgdGhlIGluLW1vZHVsZSBpbnRlZ3JpdHkgdmVyaWZpY2F0aW9uIHRoZSBwcmVsaW5r IGhhcyB0bwotYmUgZGlzYWJsZWQuIFRoaXMgY2FuIGJlIGRvbmUgd2l0aCBzZXR0aW5nIFBSRUxJ TktJTkc9bm8gaW4gdGhlCi0vZXRjL3N5c2NvbmZpZy9wcmVsaW5rIGNvbmZpZ3VyYXRpb24gZmls ZS4gSWYgdGhlIGxpYnJhcmllcyB3ZXJlIGFscmVhZHkKLXByZWxpbmtlZCB0aGUgcHJlbGluayBz aG91bGQgYmUgdW5kb25lIG9uIGFsbCB0aGUgc3lzdGVtIGZpbGVzIHdpdGggdGhlCi0ncHJlbGlu ayAtdSAtYScgY29tbWFuZC4KK1RoZSBSUE0gcGFja2FnZSBkcmFjdXQtZmlwcyBtdXN0IGJlIGlu c3RhbGxlZCBmb3IgdGhlIGFwcHJvdmVkIG1vZGUgb2YKK29wZXJhdGlvbi4KIAogVXNhZ2UgYW5k IEFQSQogPT09PT09PT09PT09PQoKZGlmZiAtLWdpdCBhL2VjX2N1cnZlLmMgYi9lY19jdXJ2ZS5j CmluZGV4IGVhM2E0NzkuLjBhMWNhM2QgMTAwNjQ0Ci0tLSBhL2VjX2N1cnZlLmMKKysrIGIvZWNf Y3VydmUuYwpAQCAtMSw2MCArMSwxMiBAQAotLyogY3J5cHRvL2VjL2VjX2N1cnZlLmMgKi8KIC8q Ci0gKiBXcml0dGVuIGJ5IE5pbHMgTGFyc2NoIGZvciB0aGUgT3BlblNTTCBwcm9qZWN0LgotICov Ci0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAgVGhlIE9wZW5TU0wg UHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqCi0gKiAy LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0gKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiAgICBkaXN0cmlidXRpb24uCi0g KgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9y IHVzZSBvZiB0aGlzCi0gKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBh Y2tub3dsZWRnbWVudDoKLSAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2 ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5T U0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSAqCi0gKiA0LiBUaGUgbmFt ZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVz ZWQgdG8KLSAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhp cyBzb2Z0d2FyZSB3aXRob3V0Ci0gKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3 cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0gKiAgICBvcGVuc3NsLWNvcmVAb3Bl bnNzbC5vcmcuCi0gKgotICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUg bWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0gKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBl YXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0gKiAgICBwZXJtaXNzaW9u IG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCi0gKgotICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFu eSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotICogICAgYWNrbm93 bGVkZ21lbnQ6Ci0gKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3Bl ZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0gKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRv b2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT IFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY UFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P IEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSAqIElUUyBDT05UUklCVVRPUlMg QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAot ICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U RVJSVVBUSU9OKQotICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotICogT0Yg VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAqCi0gKiBU aGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRvZ3JhcGhpYyBzb2Z0d2FyZSB3cml0dGVuIGJ5IEVy aWMgWW91bmcKLSAqIChlYXlAY3J5cHRzb2Z0LmNvbSkuICBUaGlzIHByb2R1Y3QgaW5jbHVkZXMg c29mdHdhcmUgd3JpdHRlbiBieSBUaW0KLSAqIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pLgor ICogQ29weXJpZ2h0IDIwMDItMjAxNiBUaGUgT3BlblNTTCBQcm9qZWN0IEF1dGhvcnMuIEFsbCBS aWdodHMgUmVzZXJ2ZWQuCiAgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIE9wZW5TU0wgbGljZW5z ZSAodGhlICJMaWNlbnNlIikuICBZb3UgbWF5IG5vdCB1c2UKKyAqIHRoaXMgZmlsZSBleGNlcHQg aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IGNhbiBvYnRhaW4gYSBjb3B5Cisg KiBpbiB0aGUgZmlsZSBMSUNFTlNFIGluIHRoZSBzb3VyY2UgZGlzdHJpYnV0aW9uIG9yIGF0Cisg KiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCiAgKi8KKwogLyog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KICAqIENvcHlyaWdodCAyMDAyIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQUxM IFJJR0hUUyBSRVNFUlZFRC4KICAqCkBAIC03NCwxMCArMjYsNyBAQAogI2luY2x1ZGUgPG9wZW5z c2wvZXJyLmg+CiAjaW5jbHVkZSA8b3BlbnNzbC9vYmpfbWFjLmg+CiAjaW5jbHVkZSA8b3BlbnNz bC9vcGVuc3NsY29uZi5oPgotCi0jaWZkZWYgT1BFTlNTTF9GSVBTCi0jIGluY2x1ZGUgPG9wZW5z c2wvZmlwcy5oPgotI2VuZGlmCisjaW5jbHVkZSAiZV9vcy5oIgogCiB0eXBlZGVmIHN0cnVjdCB7 CiAgICAgaW50IGZpZWxkX3R5cGUsICAgICAgICAgICAgIC8qIGVpdGhlciBOSURfWDlfNjJfcHJp bWVfZmllbGQgb3IKQEAgLTIyNSw2ICsxNzQsNDIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB7CiAg ICAgfQogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCB7CisgICAgRUNfQ1VSVkVfREFUQSBoOwor ICAgIHVuc2lnbmVkIGNoYXIgZGF0YVswICsgMzIgKiA2XTsKK30gX0VDX1NFQ0dfUFJJTUVfMjU2 SzEgPSB7CisgICAgeworICAgICAgICBOSURfWDlfNjJfcHJpbWVfZmllbGQsIDAsIDMyLCAxCisg ICAgfSwKKyAgICB7CisgICAgICAgIC8qIG5vIHNlZWQgKi8KKyAgICAgICAgLyogcCAqLworICAg ICAgICAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZG LCAweEZGLCAweEZGLCAweEZGLAorICAgICAgICAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZG LCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLAorICAgICAgICAweEZG LCAweEZGLCAweEZGLCAweEZFLCAweEZGLCAweEZGLCAweEZDLCAweDJGLAorICAgICAgICAvKiBh ICovCisgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgICAg ICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgICAg ICAgIC8qIGIgKi8KKyAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKyAgICAgICAgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwKKyAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw NywKKyAgICAgICAgLyogeCAqLworICAgICAgICAweDc5LCAweEJFLCAweDY2LCAweDdFLCAweEY5 LCAweERDLCAweEJCLCAweEFDLCAweDU1LCAweEEwLCAweDYyLCAweDk1LAorICAgICAgICAweENF LCAweDg3LCAweDBCLCAweDA3LCAweDAyLCAweDlCLCAweEZDLCAweERCLCAweDJELCAweENFLCAw eDI4LCAweEQ5LAorICAgICAgICAweDU5LCAweEYyLCAweDgxLCAweDVCLCAweDE2LCAweEY4LCAw eDE3LCAweDk4LAorICAgICAgICAvKiB5ICovCisgICAgICAgIDB4NDgsIDB4M2EsIDB4ZGEsIDB4 NzcsIDB4MjYsIDB4YTMsIDB4YzQsIDB4NjUsIDB4NWQsIDB4YTQsIDB4ZmIsIDB4ZmMsCisgICAg ICAgIDB4MGUsIDB4MTEsIDB4MDgsIDB4YTgsIDB4ZmQsIDB4MTcsIDB4YjQsIDB4NDgsIDB4YTYs IDB4ODUsIDB4NTQsIDB4MTksCisgICAgICAgIDB4OWMsIDB4NDcsIDB4ZDAsIDB4OGYsIDB4ZmIs IDB4MTAsIDB4ZDQsIDB4YjgsCisgICAgICAgIC8qIG9yZGVyICovCisgICAgICAgIDB4RkYsIDB4 RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYs IDB4RkYsCisgICAgICAgIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkUsIDB4QkEsIDB4QUUsIDB4REMs IDB4RTYsIDB4QUYsIDB4NDgsIDB4QTAsIDB4M0IsCisgICAgICAgIDB4QkYsIDB4RDIsIDB4NUUs IDB4OEMsIDB4RDAsIDB4MzYsIDB4NDEsIDB4NDEKKyAgICB9Cit9OworCiB0eXBlZGVmIHN0cnVj dCBfZWNfbGlzdF9lbGVtZW50X3N0IHsKICAgICBpbnQgbmlkOwogICAgIGNvbnN0IEVDX0NVUlZF X0RBVEEgKmRhdGE7CkBAIC0yMzUsNiArMjIwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgX2VjX2xpc3Rf ZWxlbWVudF9zdCB7CiBzdGF0aWMgY29uc3QgZWNfbGlzdF9lbGVtZW50IGN1cnZlX2xpc3RbXSA9 IHsKICAgICAvKiBwcmltZSBmaWVsZCBjdXJ2ZXMgKi8KICAgICAvKiBzZWNnIGN1cnZlcyAqLwor ICAgIHtOSURfc2VjcDI1NmsxLCAmX0VDX1NFQ0dfUFJJTUVfMjU2SzEuaCwgMCwKKyAgICAgIlNF Q0cgY3VydmUgb3ZlciBhIDI1NiBiaXQgcHJpbWUgZmllbGQifSwKICAgICAvKiBTRUNHIHNlY3Ay NTZyMSBpcyB0aGUgc2FtZSBhcyBYOS42MiBwcmltZTI1NnYxIGFuZCBoZW5jZSBvbWl0dGVkICov CiAgICAge05JRF9zZWNwMzg0cjEsICZfRUNfTklTVF9QUklNRV8zODQuaCwgMCwKICAgICAgIk5J U1QvU0VDRyBjdXJ2ZSBvdmVyIGEgMzg0IGJpdCBwcmltZSBmaWVsZCJ9LApAQCAtMjU3LDcgKzI0 NCw3IEBAIHN0YXRpYyBjb25zdCBlY19saXN0X2VsZW1lbnQgY3VydmVfbGlzdFtdID0gewogICAg ICAiWDkuNjIvU0VDRyBjdXJ2ZSBvdmVyIGEgMjU2IGJpdCBwcmltZSBmaWVsZCJ9LAogfTsKIAot I2RlZmluZSBjdXJ2ZV9saXN0X2xlbmd0aCAoc2l6ZW9mKGN1cnZlX2xpc3QpL3NpemVvZihlY19s aXN0X2VsZW1lbnQpKQorI2RlZmluZSBjdXJ2ZV9saXN0X2xlbmd0aCBPU1NMX05FTEVNKGN1cnZl X2xpc3QpCiAKIHN0YXRpYyBFQ19HUk9VUCAqZWNfZ3JvdXBfbmV3X2Zyb21fZGF0YShjb25zdCBl Y19saXN0X2VsZW1lbnQgY3VydmUpCiB7CkBAIC0yNzIsNiArMjU5LDEwIEBAIHN0YXRpYyBFQ19H Uk9VUCAqZWNfZ3JvdXBfbmV3X2Zyb21fZGF0YShjb25zdCBlY19saXN0X2VsZW1lbnQgY3VydmUp CiAgICAgY29uc3QgRUNfQ1VSVkVfREFUQSAqZGF0YTsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFy ICpwYXJhbXM7CiAKKyAgICAvKiBJZiBubyBjdXJ2ZSBkYXRhIGN1cnZlIG1ldGhvZCBtdXN0IGhh bmRsZSBldmVyeXRoaW5nICovCisgICAgaWYgKGN1cnZlLmRhdGEgPT0gTlVMTCkKKyAgICAgICAg cmV0dXJuIEVDX0dST1VQX25ldyhjdXJ2ZS5tZXRoICE9IE5VTEwgPyBjdXJ2ZS5tZXRoKCkgOiBO VUxMKTsKKwogICAgIGlmICgoY3R4ID0gQk5fQ1RYX25ldygpKSA9PSBOVUxMKSB7CiAgICAgICAg IEVDZXJyKEVDX0ZfRUNfR1JPVVBfTkVXX0ZST01fREFUQSwgRVJSX1JfTUFMTE9DX0ZBSUxVUkUp OwogICAgICAgICBnb3RvIGVycjsKQEAgLTI4Myw5ICsyNzQsOSBAQCBzdGF0aWMgRUNfR1JPVVAg KmVjX2dyb3VwX25ld19mcm9tX2RhdGEoY29uc3QgZWNfbGlzdF9lbGVtZW50IGN1cnZlKQogICAg IHBhcmFtcyA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopKGRhdGEgKyAxKTsgLyogc2tpcCBoZWFk ZXIgKi8KICAgICBwYXJhbXMgKz0gc2VlZF9sZW47ICAgICAgICAgLyogc2tpcCBzZWVkICovCiAK LSAgICBpZiAoIShwID0gQk5fYmluMmJuKHBhcmFtcyArIDAgKiBwYXJhbV9sZW4sIHBhcmFtX2xl biwgTlVMTCkpCi0gICAgICAgIHx8ICEoYSA9IEJOX2JpbjJibihwYXJhbXMgKyAxICogcGFyYW1f bGVuLCBwYXJhbV9sZW4sIE5VTEwpKQotICAgICAgICB8fCAhKGIgPSBCTl9iaW4yYm4ocGFyYW1z ICsgMiAqIHBhcmFtX2xlbiwgcGFyYW1fbGVuLCBOVUxMKSkpIHsKKyAgICBpZiAoKHAgPSBCTl9i aW4yYm4ocGFyYW1zICsgMCAqIHBhcmFtX2xlbiwgcGFyYW1fbGVuLCBOVUxMKSkgPT0gTlVMTAor ICAgICAgICB8fCAoYSA9IEJOX2JpbjJibihwYXJhbXMgKyAxICogcGFyYW1fbGVuLCBwYXJhbV9s ZW4sIE5VTEwpKSA9PSBOVUxMCisgICAgICAgIHx8IChiID0gQk5fYmluMmJuKHBhcmFtcyArIDIg KiBwYXJhbV9sZW4sIHBhcmFtX2xlbiwgTlVMTCkpID09IE5VTEwpIHsKICAgICAgICAgRUNlcnIo RUNfRl9FQ19HUk9VUF9ORVdfRlJPTV9EQVRBLCBFUlJfUl9CTl9MSUIpOwogICAgICAgICBnb3Rv IGVycjsKICAgICB9CkBAIC0zMTksOCArMzEwLDggQEAgc3RhdGljIEVDX0dST1VQICplY19ncm91 cF9uZXdfZnJvbV9kYXRhKGNvbnN0IGVjX2xpc3RfZWxlbWVudCBjdXJ2ZSkKICAgICAgICAgZ290 byBlcnI7CiAgICAgfQogCi0gICAgaWYgKCEoeCA9IEJOX2JpbjJibihwYXJhbXMgKyAzICogcGFy YW1fbGVuLCBwYXJhbV9sZW4sIE5VTEwpKQotICAgICAgICB8fCAhKHkgPSBCTl9iaW4yYm4ocGFy YW1zICsgNCAqIHBhcmFtX2xlbiwgcGFyYW1fbGVuLCBOVUxMKSkpIHsKKyAgICBpZiAoKHggPSBC Tl9iaW4yYm4ocGFyYW1zICsgMyAqIHBhcmFtX2xlbiwgcGFyYW1fbGVuLCBOVUxMKSkgPT0gTlVM TAorICAgICAgICB8fCAoeSA9IEJOX2JpbjJibihwYXJhbXMgKyA0ICogcGFyYW1fbGVuLCBwYXJh bV9sZW4sIE5VTEwpKSA9PSBOVUxMKSB7CiAgICAgICAgIEVDZXJyKEVDX0ZfRUNfR1JPVVBfTkVX X0ZST01fREFUQSwgRVJSX1JfQk5fTElCKTsKICAgICAgICAgZ290byBlcnI7CiAgICAgfQpAQCAt MzI4LDcgKzMxOSw3IEBAIHN0YXRpYyBFQ19HUk9VUCAqZWNfZ3JvdXBfbmV3X2Zyb21fZGF0YShj b25zdCBlY19saXN0X2VsZW1lbnQgY3VydmUpCiAgICAgICAgIEVDZXJyKEVDX0ZfRUNfR1JPVVBf TkVXX0ZST01fREFUQSwgRVJSX1JfRUNfTElCKTsKICAgICAgICAgZ290byBlcnI7CiAgICAgfQot ICAgIGlmICghKG9yZGVyID0gQk5fYmluMmJuKHBhcmFtcyArIDUgKiBwYXJhbV9sZW4sIHBhcmFt X2xlbiwgTlVMTCkpCisgICAgaWYgKChvcmRlciA9IEJOX2JpbjJibihwYXJhbXMgKyA1ICogcGFy YW1fbGVuLCBwYXJhbV9sZW4sIE5VTEwpKSA9PSBOVUxMCiAgICAgICAgIHx8ICFCTl9zZXRfd29y ZCh4LCAoQk5fVUxPTkcpZGF0YS0+Y29mYWN0b3IpKSB7CiAgICAgICAgIEVDZXJyKEVDX0ZfRUNf R1JPVVBfTkVXX0ZST01fREFUQSwgRVJSX1JfQk5fTElCKTsKICAgICAgICAgZ290byBlcnI7CkBA IC0zNDksMjIgKzM0MCwxNCBAQCBzdGF0aWMgRUNfR1JPVVAgKmVjX2dyb3VwX25ld19mcm9tX2Rh dGEoY29uc3QgZWNfbGlzdF9lbGVtZW50IGN1cnZlKQogICAgICAgICBFQ19HUk9VUF9mcmVlKGdy b3VwKTsKICAgICAgICAgZ3JvdXAgPSBOVUxMOwogICAgIH0KLSAgICBpZiAoUCkKLSAgICAgICAg RUNfUE9JTlRfZnJlZShQKTsKLSAgICBpZiAoY3R4KQotICAgICAgICBCTl9DVFhfZnJlZShjdHgp OwotICAgIGlmIChwKQotICAgICAgICBCTl9mcmVlKHApOwotICAgIGlmIChhKQotICAgICAgICBC Tl9mcmVlKGEpOwotICAgIGlmIChiKQotICAgICAgICBCTl9mcmVlKGIpOwotICAgIGlmIChvcmRl cikKLSAgICAgICAgQk5fZnJlZShvcmRlcik7Ci0gICAgaWYgKHgpCi0gICAgICAgIEJOX2ZyZWUo eCk7Ci0gICAgaWYgKHkpCi0gICAgICAgIEJOX2ZyZWUoeSk7CisgICAgRUNfUE9JTlRfZnJlZShQ KTsKKyAgICBCTl9DVFhfZnJlZShjdHgpOworICAgIEJOX2ZyZWUocCk7CisgICAgQk5fZnJlZShh KTsKKyAgICBCTl9mcmVlKGIpOworICAgIEJOX2ZyZWUob3JkZXIpOworICAgIEJOX2ZyZWUoeCk7 CisgICAgQk5fZnJlZSh5KTsKICAgICByZXR1cm4gZ3JvdXA7CiB9CiAKQEAgLTQzNyw3ICs0MjAs NyBAQCBzdGF0aWMgRUNfTklTVF9OQU1FIG5pc3RfY3VydmVzW10gPSB7CiBjb25zdCBjaGFyICpF Q19jdXJ2ZV9uaWQybmlzdChpbnQgbmlkKQogewogICAgIHNpemVfdCBpOwotICAgIGZvciAoaSA9 IDA7IGkgPCBzaXplb2YobmlzdF9jdXJ2ZXMpIC8gc2l6ZW9mKEVDX05JU1RfTkFNRSk7IGkrKykg eworICAgIGZvciAoaSA9IDA7IGkgPCBPU1NMX05FTEVNKG5pc3RfY3VydmVzKTsgaSsrKSB7CiAg ICAgICAgIGlmIChuaXN0X2N1cnZlc1tpXS5uaWQgPT0gbmlkKQogICAgICAgICAgICAgcmV0dXJu IG5pc3RfY3VydmVzW2ldLm5hbWU7CiAgICAgfQpAQCAtNDQ3LDggKzQzMCw4IEBAIGNvbnN0IGNo YXIgKkVDX2N1cnZlX25pZDJuaXN0KGludCBuaWQpCiBpbnQgRUNfY3VydmVfbmlzdDJuaWQoY29u c3QgY2hhciAqbmFtZSkKIHsKICAgICBzaXplX3QgaTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgc2l6 ZW9mKG5pc3RfY3VydmVzKSAvIHNpemVvZihFQ19OSVNUX05BTUUpOyBpKyspIHsKLSAgICAgICAg aWYgKCFzdHJjbXAobmlzdF9jdXJ2ZXNbaV0ubmFtZSwgbmFtZSkpCisgICAgZm9yIChpID0gMDsg aSA8IE9TU0xfTkVMRU0obmlzdF9jdXJ2ZXMpOyBpKyspIHsKKyAgICAgICAgaWYgKHN0cmNtcChu aXN0X2N1cnZlc1tpXS5uYW1lLCBuYW1lKSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIG5pc3Rf Y3VydmVzW2ldLm5pZDsKICAgICB9CiAgICAgcmV0dXJuIE5JRF91bmRlZjsKCmRpZmYgLS1naXQg YS9lY3Rlc3QuYyBiL2VjdGVzdC5jCmluZGV4IDcwMWU3MDYuLmFmMGY3ZjMgMTAwNjQ0Ci0tLSBh L2VjdGVzdC5jCisrKyBiL2VjdGVzdC5jCkBAIC0xLDYwICsxLDEyIEBACi0vKiBjcnlwdG8vZWMv ZWN0ZXN0LmMgKi8KIC8qCi0gKiBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgQm9kbyBNb2VsbGVyIGZv ciB0aGUgT3BlblNTTCBwcm9qZWN0LgotICovCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICogQ29weXJpZ2h0 IChjKSAxOTk4LTIwMDEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4g UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5 cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcgZGlzY2xhaW1lci4KLSAqCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0gKiAg ICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg dGhlCi0gKiAgICBkaXN0cmlidXRpb24uCi0gKgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVy aWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0gKiAgICBzb2Z0d2FyZSBt dXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSAqICAgICJUaGlzIHBy b2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QK LSAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNz bC5vcmcvKSIKLSAqCi0gKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVu U1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSAqICAgIGVuZG9yc2Ugb3IgcHJvbW90 ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0gKiAgICBwcmlv ciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250 YWN0Ci0gKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCi0gKgotICogNS4gUHJvZHVjdHMg ZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0g KiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlv ciB3cml0dGVuCi0gKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCi0gKgot ICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4g dGhlIGZvbGxvd2luZwotICogICAgYWNrbm93bGVkZ21lbnQ6Ci0gKiAgICAiVGhpcyBwcm9kdWN0 IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0gKiAg ICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcv KSIKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pF Q1QgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pF Q1QgT1IKLSAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotICogSE9XRVZFUiBDQVVTRUQg QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotICog U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB UkUsIEVWRU4gSUYgQURWSVNFRAotICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF LgotICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLSAqCi0gKiBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRvZ3Jh cGhpYyBzb2Z0d2FyZSB3cml0dGVuIGJ5IEVyaWMgWW91bmcKLSAqIChlYXlAY3J5cHRzb2Z0LmNv bSkuICBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgd3JpdHRlbiBieSBUaW0KLSAqIEh1 ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pLgorICogQ29weXJpZ2h0IDIwMDEtMjAxNiBUaGUgT3Bl blNTTCBQcm9qZWN0IEF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgorICogTGljZW5z ZWQgdW5kZXIgdGhlIE9wZW5TU0wgbGljZW5zZSAodGhlICJMaWNlbnNlIikuICBZb3UgbWF5IG5v dCB1c2UKKyAqIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl LiAgWW91IGNhbiBvYnRhaW4gYSBjb3B5CisgKiBpbiB0aGUgZmlsZSBMSUNFTlNFIGluIHRoZSBz b3VyY2UgZGlzdHJpYnV0aW9uIG9yIGF0CisgKiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3Vy Y2UvbGljZW5zZS5odG1sCiAgKi8KKwogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAqIENvcHlyaWdodCAyMDAy IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQUxMIFJJR0hUUyBSRVNFUlZFRC4KICAqCkBAIC0xMTQs MTAzICs2NiwxNCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogIyBkZWZpbmUg VElNSU5HX1JBTkRfUFQgMQogIyBkZWZpbmUgVElNSU5HX1NJTVVMIDIKIAotIyBpZiAwCi1zdGF0 aWMgdm9pZCB0aW1pbmdzKEVDX0dST1VQICpncm91cCwgaW50IHR5cGUsIEJOX0NUWCAqY3R4KQot ewotICAgIGNsb2NrX3QgY2xjazsKLSAgICBpbnQgaSwgajsKLSAgICBCSUdOVU0gKnM7Ci0gICAg QklHTlVNICpyWzEwXSwgKnIwWzEwXTsKLSAgICBFQ19QT0lOVCAqUDsKLQotICAgIHMgPSBCTl9u ZXcoKTsKLSAgICBpZiAocyA9PSBOVUxMKQotICAgICAgICBBQk9SVDsKLQotICAgIGZwcmludGYo c3Rkb3V0LCAiVGltaW5ncyBmb3IgJWQtYml0IGZpZWxkLCAiLCBFQ19HUk9VUF9nZXRfZGVncmVl KGdyb3VwKSk7Ci0gICAgaWYgKCFFQ19HUk9VUF9nZXRfb3JkZXIoZ3JvdXAsIHMsIGN0eCkpCi0g ICAgICAgIEFCT1JUOwotICAgIGZwcmludGYoc3Rkb3V0LCAiJWQtYml0IHNjYWxhcnMgIiwgKGlu dClCTl9udW1fYml0cyhzKSk7Ci0gICAgZmZsdXNoKHN0ZG91dCk7Ci0KLSAgICBQID0gRUNfUE9J TlRfbmV3KGdyb3VwKTsKLSAgICBpZiAoUCA9PSBOVUxMKQotICAgICAgICBBQk9SVDsKLSAgICBF Q19QT0lOVF9jb3B5KFAsIEVDX0dST1VQX2dldDBfZ2VuZXJhdG9yKGdyb3VwKSk7Ci0KLSAgICBm b3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgewotICAgICAgICBpZiAoKHJbaV0gPSBCTl9uZXcoKSkg PT0gTlVMTCkKLSAgICAgICAgICAgIEFCT1JUOwotICAgICAgICBpZiAoIUJOX3BzZXVkb19yYW5k KHJbaV0sIEJOX251bV9iaXRzKHMpLCAwLCAwKSkKLSAgICAgICAgICAgIEFCT1JUOwotICAgICAg ICBpZiAodHlwZSAhPSBUSU1JTkdfQkFTRV9QVCkgewotICAgICAgICAgICAgaWYgKChyMFtpXSA9 IEJOX25ldygpKSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIEFCT1JUOwotICAgICAgICAgICAg aWYgKCFCTl9wc2V1ZG9fcmFuZChyMFtpXSwgQk5fbnVtX2JpdHMocyksIDAsIDApKQotICAgICAg ICAgICAgICAgIEFCT1JUOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY2xjayA9IGNsb2NrKCk7 Ci0gICAgZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKLSAgICAgICAgZm9yIChqID0gMDsgaiA8 IDEwOyBqKyspIHsKLSAgICAgICAgICAgIGlmICghRUNfUE9JTlRfbXVsCi0gICAgICAgICAgICAg ICAgKGdyb3VwLCBQLCAodHlwZSAhPSBUSU1JTkdfUkFORF9QVCkgPyByW2ldIDogTlVMTCwKLSAg ICAgICAgICAgICAgICAgKHR5cGUgIT0gVElNSU5HX0JBU0VfUFQpID8gUCA6IE5VTEwsCi0gICAg ICAgICAgICAgICAgICh0eXBlICE9IFRJTUlOR19CQVNFX1BUKSA/IHIwW2ldIDogTlVMTCwgY3R4 KSkKLSAgICAgICAgICAgICAgICBBQk9SVDsKLSAgICAgICAgfQotICAgIH0KLSAgICBjbGNrID0g Y2xvY2soKSAtIGNsY2s7Ci0KLSAgICBmcHJpbnRmKHN0ZG91dCwgIlxuIik7Ci0KLSMgIGlmZGVm IENMT0NLU19QRVJfU0VDCi0gICAgLyoKLSAgICAgKiAiVG8gZGV0ZXJtaW5lIHRoZSB0aW1lIGlu IHNlY29uZHMsIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgY2xvY2sKLSAgICAgKiBmdW5jdGlv biBzaG91bGQgYmUgZGl2aWRlZCBieSB0aGUgdmFsdWUgb2YgdGhlIG1hY3JvIENMT0NLU19QRVJf U0VDLiIKLSAgICAgKiAtLSBJU08vSUVDIDk4OTkKLSAgICAgKi8KLSMgICBkZWZpbmUgVU5JVCAi cyIKLSMgIGVsc2UKLSAgICAvKgotICAgICAqICJgQ0xPQ0tTX1BFUl9TRUMnIHVuZGVjbGFyZWQg KGZpcnN0IHVzZSB0aGlzIGZ1bmN0aW9uKSIgLS0gY2Mgb24KLSAgICAgKiBOZVhUc3RlcC9PcGVu U3RlcAotICAgICAqLwotIyAgIGRlZmluZSBVTklUICJ1bml0cyIKLSMgICBkZWZpbmUgQ0xPQ0tT X1BFUl9TRUMgMQotIyAgZW5kaWYKLQotICAgIGlmICh0eXBlID09IFRJTUlOR19CQVNFX1BUKSB7 Ci0gICAgICAgIGZwcmludGYoc3Rkb3V0LCAiJWkgJXMgaW4gJS4yZiAiIFVOSVQgIlxuIiwgaSAq IGosCi0gICAgICAgICAgICAgICAgImJhc2UgcG9pbnQgbXVsdGlwbGljYXRpb25zIiwgKGRvdWJs ZSljbGNrIC8gQ0xPQ0tTX1BFUl9TRUMpOwotICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUSU1JTkdf UkFORF9QVCkgewotICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIiVpICVzIGluICUuMmYgIiBVTklU ICJcbiIsIGkgKiBqLAotICAgICAgICAgICAgICAgICJyYW5kb20gcG9pbnQgbXVsdGlwbGljYXRp b25zIiwKLSAgICAgICAgICAgICAgICAoZG91YmxlKWNsY2sgLyBDTE9DS1NfUEVSX1NFQyk7Ci0g ICAgfSBlbHNlIGlmICh0eXBlID09IFRJTUlOR19TSU1VTCkgewotICAgICAgICBmcHJpbnRmKHN0 ZG91dCwgIiVpICVzIGluICUuMmYgIiBVTklUICJcbiIsIGkgKiBqLAotICAgICAgICAgICAgICAg ICJzKlArdCpRIG9wZXJhdGlvbnMiLCAoZG91YmxlKWNsY2sgLyBDTE9DS1NfUEVSX1NFQyk7Ci0g ICAgfQotICAgIGZwcmludGYoc3Rkb3V0LCAiYXZlcmFnZTogJS40ZiAiIFVOSVQgIlxuIiwKLSAg ICAgICAgICAgIChkb3VibGUpY2xjayAvIChDTE9DS1NfUEVSX1NFQyAqIGkgKiBqKSk7Ci0KLSAg ICBFQ19QT0lOVF9mcmVlKFApOwotICAgIEJOX2ZyZWUocyk7Ci0gICAgZm9yIChpID0gMDsgaSA8 IDEwOyBpKyspIHsKLSAgICAgICAgQk5fZnJlZShyW2ldKTsKLSAgICAgICAgaWYgKHR5cGUgIT0g VElNSU5HX0JBU0VfUFQpCi0gICAgICAgICAgICBCTl9mcmVlKHIwW2ldKTsKLSAgICB9Ci19Ci0j IGVuZGlmCi0KIC8qIHRlc3QgbXVsdGlwbGljYXRpb24gd2l0aCBncm91cCBvcmRlciwgbG9uZyBh bmQgbmVnYXRpdmUgc2NhbGFycyAqLwogc3RhdGljIHZvaWQgZ3JvdXBfb3JkZXJfdGVzdHMoRUNf R1JPVVAgKmdyb3VwKQogewogICAgIEJJR05VTSAqbjEsICpuMiwgKm9yZGVyOwogICAgIEVDX1BP SU5UICpQID0gRUNfUE9JTlRfbmV3KGdyb3VwKTsKICAgICBFQ19QT0lOVCAqUSA9IEVDX1BPSU5U X25ldyhncm91cCk7CisgICAgRUNfUE9JTlQgKlIgPSBFQ19QT0lOVF9uZXcoZ3JvdXApOworICAg IEVDX1BPSU5UICpTID0gRUNfUE9JTlRfbmV3KGdyb3VwKTsKICAgICBCTl9DVFggKmN0eCA9IEJO X0NUWF9uZXcoKTsKICAgICBpbnQgaTsKIApAQCAtMjkwLDYgKzE1MywxNyBAQCBzdGF0aWMgdm9p ZCBncm91cF9vcmRlcl90ZXN0cyhFQ19HUk9VUCAqZ3JvdXApCiAgICAgICAgIC8qIEV4ZXJjaXNl IEVDX1BPSU5Uc19tdWwsIGluY2x1ZGluZyBjb3JuZXIgY2FzZXMuICovCiAgICAgICAgIGlmIChF Q19QT0lOVF9pc19hdF9pbmZpbml0eShncm91cCwgUCkpCiAgICAgICAgICAgICBBQk9SVDsKKwor ICAgICAgICBzY2FsYXJzWzBdID0gc2NhbGFyc1sxXSA9IEJOX3ZhbHVlX29uZSgpOworICAgICAg ICBwb2ludHNbMF0gID0gcG9pbnRzWzFdICA9IFA7CisKKyAgICAgICAgaWYgKCFFQ19QT0lOVHNf bXVsKGdyb3VwLCBSLCBOVUxMLCAyLCBwb2ludHMsIHNjYWxhcnMsIGN0eCkpCisgICAgICAgICAg ICBBQk9SVDsKKyAgICAgICAgaWYgKCFFQ19QT0lOVF9kYmwoZ3JvdXAsIFMsIHBvaW50c1swXSwg Y3R4KSkKKyAgICAgICAgICAgIEFCT1JUOworICAgICAgICBpZiAoMCAhPSBFQ19QT0lOVF9jbXAo Z3JvdXAsIFIsIFMsIGN0eCkpCisgICAgICAgICAgICBBQk9SVDsKKwogICAgICAgICBzY2FsYXJz WzBdID0gbjE7CiAgICAgICAgIHBvaW50c1swXSA9IFE7ICAgICAgICAgIC8qID0+IGluZmluaXR5 ICovCiAgICAgICAgIHNjYWxhcnNbMV0gPSBuMjsKQEAgLTMxMSw2ICsxODUsOCBAQCBzdGF0aWMg dm9pZCBncm91cF9vcmRlcl90ZXN0cyhFQ19HUk9VUCAqZ3JvdXApCiAKICAgICBFQ19QT0lOVF9m cmVlKFApOwogICAgIEVDX1BPSU5UX2ZyZWUoUSk7CisgICAgRUNfUE9JTlRfZnJlZShSKTsKKyAg ICBFQ19QT0lOVF9mcmVlKFMpOwogICAgIEJOX2ZyZWUobjEpOwogICAgIEJOX2ZyZWUobjIpOwog ICAgIEJOX2ZyZWUob3JkZXIpOwpAQCAtMzI1LDE2ICsyMDEsMTQgQEAgc3RhdGljIHZvaWQgcHJp bWVfZmllbGRfdGVzdHModm9pZCkKICAgICBFQ19HUk9VUCAqUF8xNjAgPSBOVUxMLCAqUF8xOTIg PSBOVUxMLCAqUF8yMjQgPSBOVUxMLCAqUF8yNTYgPQogICAgICAgICBOVUxMLCAqUF8zODQgPSBO VUxMLCAqUF81MjEgPSBOVUxMOwogICAgIEVDX1BPSU5UICpQLCAqUSwgKlI7Ci0gICAgQklHTlVN ICp4LCAqeSwgKno7CisgICAgQklHTlVNICp4LCAqeSwgKnosICp5cGx1c29uZTsKICAgICB1bnNp Z25lZCBjaGFyIGJ1ZlsxMDBdOwogICAgIHNpemVfdCBpLCBsZW47CiAgICAgaW50IGs7CiAKLSMg aWYgMSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb3B0aW9uYWwgKi8KICAgICBjdHggPSBC Tl9DVFhfbmV3KCk7CiAgICAgaWYgKCFjdHgpCiAgICAgICAgIEFCT1JUOwotIyBlbmRpZgogCiAg ICAgcCA9IEJOX25ldygpOwogICAgIGEgPSBCTl9uZXcoKTsKQEAgLTM1OCw3ICsyMzIsOCBAQCBz dGF0aWMgdm9pZCBwcmltZV9maWVsZF90ZXN0cyh2b2lkKQogICAgIHggPSBCTl9uZXcoKTsKICAg ICB5ID0gQk5fbmV3KCk7CiAgICAgeiA9IEJOX25ldygpOwotICAgIGlmICgheCB8fCAheSB8fCAh eikKKyAgICB5cGx1c29uZSA9IEJOX25ldygpOworICAgIGlmICh4ID09IE5VTEwgfHwgeSA9PSBO VUxMIHx8IHogPT0gTlVMTCB8fCB5cGx1c29uZSA9PSBOVUxMKQogICAgICAgICBBQk9SVDsKIAog ICAgIC8qIEN1cnZlIFAtMjU2IChGSVBTIFBVQiAxODYtMiwgQXBwLiA2KSAqLwpAQCAtNDA5LDYg KzI4NCwxNSBAQCBzdGF0aWMgdm9pZCBwcmltZV9maWVsZF90ZXN0cyh2b2lkKQogICAgIGlmICgw ICE9IEJOX2NtcCh5LCB6KSkKICAgICAgICAgQUJPUlQ7CiAKKyAgICBpZiAoIUJOX2FkZCh5cGx1 c29uZSwgeSwgQk5fdmFsdWVfb25lKCkpKQorICAgICAgICBBQk9SVDsKKyAgICAvKgorICAgICAq IFdoZW4gKHgsIHkpIGlzIG9uIHRoZSBjdXJ2ZSwgKHgsIHkgKyAxKSBpcywgYXMgaXQgaGFwcGVu cywgbm90LAorICAgICAqIGFuZCB0aGVyZWZvcmUgc2V0dGluZyB0aGUgY29vcmRpbmF0ZXMgc2hv dWxkIGZhaWwuCisgICAgICovCisgICAgaWYgKEVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0 ZXNfR0ZwKGdyb3VwLCBQLCB4LCB5cGx1c29uZSwgY3R4KSkKKyAgICAgICAgQUJPUlQ7CisKICAg ICBmcHJpbnRmKHN0ZG91dCwgInZlcmlmeSBkZWdyZWUgLi4uIik7CiAgICAgaWYgKEVDX0dST1VQ X2dldF9kZWdyZWUoZ3JvdXApICE9IDI1NikKICAgICAgICAgQUJPUlQ7CkBAIC00MTYsNyArMzAw LDcgQEAgc3RhdGljIHZvaWQgcHJpbWVfZmllbGRfdGVzdHModm9pZCkKIAogICAgIGdyb3VwX29y ZGVyX3Rlc3RzKGdyb3VwKTsKIAotICAgIGlmICghKFBfMjU2ID0gRUNfR1JPVVBfbmV3KEVDX0dS T1VQX21ldGhvZF9vZihncm91cCkpKSkKKyAgICBpZiAoKFBfMjU2ID0gRUNfR1JPVVBfbmV3KEVD X0dST1VQX21ldGhvZF9vZihncm91cCkpKSA9PSBOVUxMKQogICAgICAgICBBQk9SVDsKICAgICBp ZiAoIUVDX0dST1VQX2NvcHkoUF8yNTYsIGdyb3VwKSkKICAgICAgICAgQUJPUlQ7CkBAIC00NjQs NiArMzQ4LDE1IEBAIHN0YXRpYyB2b2lkIHByaW1lX2ZpZWxkX3Rlc3RzKHZvaWQpCiAgICAgaWYg KDAgIT0gQk5fY21wKHksIHopKQogICAgICAgICBBQk9SVDsKIAorICAgIGlmICghQk5fYWRkKHlw bHVzb25lLCB5LCBCTl92YWx1ZV9vbmUoKSkpCisgICAgICAgIEFCT1JUOworICAgIC8qCisgICAg ICogV2hlbiAoeCwgeSkgaXMgb24gdGhlIGN1cnZlLCAoeCwgeSArIDEpIGlzLCBhcyBpdCBoYXBw ZW5zLCBub3QsCisgICAgICogYW5kIHRoZXJlZm9yZSBzZXR0aW5nIHRoZSBjb29yZGluYXRlcyBz aG91bGQgZmFpbC4KKyAgICAgKi8KKyAgICBpZiAoRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGlu YXRlc19HRnAoZ3JvdXAsIFAsIHgsIHlwbHVzb25lLCBjdHgpKQorICAgICAgICBBQk9SVDsKKwog ICAgIGZwcmludGYoc3Rkb3V0LCAidmVyaWZ5IGRlZ3JlZSAuLi4iKTsKICAgICBpZiAoRUNfR1JP VVBfZ2V0X2RlZ3JlZShncm91cCkgIT0gMzg0KQogICAgICAgICBBQk9SVDsKQEAgLTQ3MSw3ICsz NjQsNyBAQCBzdGF0aWMgdm9pZCBwcmltZV9maWVsZF90ZXN0cyh2b2lkKQogCiAgICAgZ3JvdXBf b3JkZXJfdGVzdHMoZ3JvdXApOwogCi0gICAgaWYgKCEoUF8zODQgPSBFQ19HUk9VUF9uZXcoRUNf R1JPVVBfbWV0aG9kX29mKGdyb3VwKSkpKQorICAgIGlmICgoUF8zODQgPSBFQ19HUk9VUF9uZXco RUNfR1JPVVBfbWV0aG9kX29mKGdyb3VwKSkpID09IE5VTEwpCiAgICAgICAgIEFCT1JUOwogICAg IGlmICghRUNfR1JPVVBfY29weShQXzM4NCwgZ3JvdXApKQogICAgICAgICBBQk9SVDsKQEAgLTUy NSw2ICs0MTgsMTUgQEAgc3RhdGljIHZvaWQgcHJpbWVfZmllbGRfdGVzdHModm9pZCkKICAgICBp ZiAoMCAhPSBCTl9jbXAoeSwgeikpCiAgICAgICAgIEFCT1JUOwogCisgICAgaWYgKCFCTl9hZGQo eXBsdXNvbmUsIHksIEJOX3ZhbHVlX29uZSgpKSkKKyAgICAgICAgQUJPUlQ7CisgICAgLyoKKyAg ICAgKiBXaGVuICh4LCB5KSBpcyBvbiB0aGUgY3VydmUsICh4LCB5ICsgMSkgaXMsIGFzIGl0IGhh cHBlbnMsIG5vdCwKKyAgICAgKiBhbmQgdGhlcmVmb3JlIHNldHRpbmcgdGhlIGNvb3JkaW5hdGVz IHNob3VsZCBmYWlsLgorICAgICAqLworICAgIGlmIChFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3Jk aW5hdGVzX0dGcChncm91cCwgUCwgeCwgeXBsdXNvbmUsIGN0eCkpCisgICAgICAgIEFCT1JUOwor CiAgICAgZnByaW50ZihzdGRvdXQsICJ2ZXJpZnkgZGVncmVlIC4uLiIpOwogICAgIGlmIChFQ19H Uk9VUF9nZXRfZGVncmVlKGdyb3VwKSAhPSA1MjEpCiAgICAgICAgIEFCT1JUOwpAQCAtNTMyLDEz ICs0MzQsMTcgQEAgc3RhdGljIHZvaWQgcHJpbWVfZmllbGRfdGVzdHModm9pZCkKIAogICAgIGdy b3VwX29yZGVyX3Rlc3RzKGdyb3VwKTsKIAotICAgIGlmICghKFBfNTIxID0gRUNfR1JPVVBfbmV3 KEVDX0dST1VQX21ldGhvZF9vZihncm91cCkpKSkKKyAgICBpZiAoKFBfNTIxID0gRUNfR1JPVVBf bmV3KEVDX0dST1VQX21ldGhvZF9vZihncm91cCkpKSA9PSBOVUxMKQogICAgICAgICBBQk9SVDsK ICAgICBpZiAoIUVDX0dST1VQX2NvcHkoUF81MjEsIGdyb3VwKSkKICAgICAgICAgQUJPUlQ7CiAK ICAgICAvKiBtb3JlIHRlc3RzIHVzaW5nIHRoZSBsYXN0IGN1cnZlICovCiAKKyAgICAvKiBSZXN0 b3JlIHRoZSBwb2ludCB0aGF0IGdvdCBtYW5nbGVkIGluIHRoZSAoeCwgeSArIDEpIHRlc3QuICov CisgICAgaWYgKCFFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwgUCwg eCwgeSwgY3R4KSkKKyAgICAgICAgQUJPUlQ7CisKICAgICBpZiAoIUVDX1BPSU5UX2NvcHkoUSwg UCkpCiAgICAgICAgIEFCT1JUOwogICAgIGlmIChFQ19QT0lOVF9pc19hdF9pbmZpbml0eShncm91 cCwgUSkpCkBAIC01NjAsNyArNDY2LDcgQEAgc3RhdGljIHZvaWQgcHJpbWVfZmllbGRfdGVzdHMo dm9pZCkKICAgICB7CiAgICAgICAgIGNvbnN0IEVDX1BPSU5UICpwb2ludHNbNF07CiAgICAgICAg IGNvbnN0IEJJR05VTSAqc2NhbGFyc1s0XTsKLSAgICAgICAgQklHTlVNIHNjYWxhcjM7CisgICAg ICAgIEJJR05VTSAqc2NhbGFyMzsKIAogICAgICAgICBpZiAoRUNfUE9JTlRfaXNfYXRfaW5maW5p dHkoZ3JvdXAsIFEpKQogICAgICAgICAgICAgQUJPUlQ7CkBAIC02MjEsOSArNTI3LDExIEBAIHN0 YXRpYyB2b2lkIHByaW1lX2ZpZWxkX3Rlc3RzKHZvaWQpCiAgICAgICAgIHNjYWxhcnNbMV0gPSB5 OwogICAgICAgICBzY2FsYXJzWzJdID0gejsgICAgICAgICAvKiB6ID0gLSh4K3kpICovCiAKLSAg ICAgICAgQk5faW5pdCgmc2NhbGFyMyk7Ci0gICAgICAgIEJOX3plcm8oJnNjYWxhcjMpOwotICAg ICAgICBzY2FsYXJzWzNdID0gJnNjYWxhcjM7CisgICAgICAgIHNjYWxhcjMgPSBCTl9uZXcoKTsK KyAgICAgICAgaWYgKCFzY2FsYXIzKQorICAgICAgICAgICAgQUJPUlQ7CisgICAgICAgIEJOX3pl cm8oc2NhbGFyMyk7CisgICAgICAgIHNjYWxhcnNbM10gPSBzY2FsYXIzOwogCiAgICAgICAgIGlm ICghRUNfUE9JTlRzX211bChncm91cCwgUCwgTlVMTCwgNCwgcG9pbnRzLCBzY2FsYXJzLCBjdHgp KQogICAgICAgICAgICAgQUJPUlQ7CkBAIC02MzIsMjMgKzU0MCwxMCBAQCBzdGF0aWMgdm9pZCBw cmltZV9maWVsZF90ZXN0cyh2b2lkKQogCiAgICAgICAgIGZwcmludGYoc3Rkb3V0LCAiIG9rXG5c biIpOwogCi0gICAgICAgIEJOX2ZyZWUoJnNjYWxhcjMpOworICAgICAgICBCTl9mcmVlKHNjYWxh cjMpOwogICAgIH0KIAotIyBpZiAwCi0gICAgdGltaW5ncyhQXzI1NiwgVElNSU5HX0JBU0VfUFQs IGN0eCk7Ci0gICAgdGltaW5ncyhQXzI1NiwgVElNSU5HX1JBTkRfUFQsIGN0eCk7Ci0gICAgdGlt aW5ncyhQXzI1NiwgVElNSU5HX1NJTVVMLCBjdHgpOwotICAgIHRpbWluZ3MoUF8zODQsIFRJTUlO R19CQVNFX1BULCBjdHgpOwotICAgIHRpbWluZ3MoUF8zODQsIFRJTUlOR19SQU5EX1BULCBjdHgp OwotICAgIHRpbWluZ3MoUF8zODQsIFRJTUlOR19TSU1VTCwgY3R4KTsKLSAgICB0aW1pbmdzKFBf NTIxLCBUSU1JTkdfQkFTRV9QVCwgY3R4KTsKLSAgICB0aW1pbmdzKFBfNTIxLCBUSU1JTkdfUkFO RF9QVCwgY3R4KTsKLSAgICB0aW1pbmdzKFBfNTIxLCBUSU1JTkdfU0lNVUwsIGN0eCk7Ci0jIGVu ZGlmCi0KLSAgICBpZiAoY3R4KQotICAgICAgICBCTl9DVFhfZnJlZShjdHgpOworICAgIEJOX0NU WF9mcmVlKGN0eCk7CiAgICAgQk5fZnJlZShwKTsKICAgICBCTl9mcmVlKGEpOwogICAgIEJOX2Zy ZWUoYik7CkBAIC02NTksMjMgKzU1NCwxNCBAQCBzdGF0aWMgdm9pZCBwcmltZV9maWVsZF90ZXN0 cyh2b2lkKQogICAgIEJOX2ZyZWUoeCk7CiAgICAgQk5fZnJlZSh5KTsKICAgICBCTl9mcmVlKHop OworICAgIEJOX2ZyZWUoeXBsdXNvbmUpOwogCi0gICAgaWYgKFBfMTYwKQotICAgICAgICBFQ19H Uk9VUF9mcmVlKFBfMTYwKTsKLSAgICBpZiAoUF8xOTIpCi0gICAgICAgIEVDX0dST1VQX2ZyZWUo UF8xOTIpOwotICAgIGlmIChQXzIyNCkKLSAgICAgICAgRUNfR1JPVVBfZnJlZShQXzIyNCk7Ci0g ICAgaWYgKFBfMjU2KQotICAgICAgICBFQ19HUk9VUF9mcmVlKFBfMjU2KTsKLSAgICBpZiAoUF8z ODQpCi0gICAgICAgIEVDX0dST1VQX2ZyZWUoUF8zODQpOwotICAgIGlmIChQXzUyMSkKLSAgICAg ICAgRUNfR1JPVVBfZnJlZShQXzUyMSk7CisgICAgRUNfR1JPVVBfZnJlZShQXzI1Nik7CisgICAg RUNfR1JPVVBfZnJlZShQXzM4NCk7CisgICAgRUNfR1JPVVBfZnJlZShQXzUyMSk7CiAKIH0KIAot CiBzdGF0aWMgdm9pZCBpbnRlcm5hbF9jdXJ2ZV90ZXN0KHZvaWQpCiB7CiAgICAgRUNfYnVpbHRp bl9jdXJ2ZSAqY3VydmVzID0gTlVMTDsKQEAgLTY4Myw5ICs1NjksNyBAQCBzdGF0aWMgdm9pZCBp bnRlcm5hbF9jdXJ2ZV90ZXN0KHZvaWQpCiAgICAgaW50IG9rID0gMTsKIAogICAgIGNydl9sZW4g PSBFQ19nZXRfYnVpbHRpbl9jdXJ2ZXMoTlVMTCwgMCk7Ci0KLSAgICBjdXJ2ZXMgPSBPUEVOU1NM X21hbGxvYyhzaXplb2YoRUNfYnVpbHRpbl9jdXJ2ZSkgKiBjcnZfbGVuKTsKLQorICAgIGN1cnZl cyA9IE9QRU5TU0xfbWFsbG9jKHNpemVvZigqY3VydmVzKSAqIGNydl9sZW4pOwogICAgIGlmIChj dXJ2ZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOwogCkBAIC03MjQsNiArNjA4LDI2IEBAIHN0 YXRpYyB2b2lkIGludGVybmFsX2N1cnZlX3Rlc3Qodm9pZCkKICAgICAgICAgZnByaW50ZihzdGRv dXQsICIgZmFpbGVkXG5cbiIpOwogICAgICAgICBBQk9SVDsKICAgICB9CisKKyAgICAvKiBUZXN0 IGFsbCBidWlsdC1pbiBjdXJ2ZXMgYW5kIGxldCB0aGUgbGlicmFyeSBjaG9vc2UgdGhlIEVDX01F VEhPRCAqLworICAgIGZvciAobiA9IDA7IG4gPCBjcnZfbGVuOyBuKyspIHsKKyAgICAgICAgRUNf R1JPVVAgKmdyb3VwID0gTlVMTDsKKyAgICAgICAgaW50IG5pZCA9IGN1cnZlc1tuXS5uaWQ7Cisg ICAgICAgIC8qCisgICAgICAgICAqIFNraXAgZm9yIFgyNTUxOSBiZWNhdXNlIGxvdyBsZXZlbCBv cGVyYXRpb25zIHN1Y2ggYXMgRUNfUE9JTlRfbXVsKCkKKyAgICAgICAgICogYXJlIG5vdCBzdXBw b3J0ZWQgZm9yIHRoaXMgY3VydmUKKyAgICAgICAgICovCisgICAgICAgIGlmIChuaWQgPT0gTklE X1gyNTUxOSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBmcHJpbnRmKHN0ZG91dCwg IiVzOlxuIiwgT0JKX25pZDJzbihuaWQpKTsKKyAgICAgICAgZmZsdXNoKHN0ZG91dCk7CisgICAg ICAgIGlmICgoZ3JvdXAgPSBFQ19HUk9VUF9uZXdfYnlfY3VydmVfbmFtZShuaWQpKSA9PSBOVUxM KSB7CisgICAgICAgICAgICBBQk9SVDsKKyAgICAgICAgfQorICAgICAgICBncm91cF9vcmRlcl90 ZXN0cyhncm91cCk7CisgICAgICAgIEVDX0dST1VQX2ZyZWUoZ3JvdXApOworICAgIH0KKwogICAg IE9QRU5TU0xfZnJlZShjdXJ2ZXMpOwogICAgIHJldHVybjsKIH0KQEAgLTc5Niw3ICs3MDAsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IG5pc3RwX3Rlc3RfcGFyYW1zIG5pc3RwX3Rlc3RzX3BhcmFt c1tdID0gewogc3RhdGljIHZvaWQgbmlzdHBfc2luZ2xlX3Rlc3QoY29uc3Qgc3RydWN0IG5pc3Rw X3Rlc3RfcGFyYW1zICp0ZXN0KQogewogICAgIEJOX0NUWCAqY3R4OwotICAgIEJJR05VTSAqcCwg KmEsICpiLCAqeCwgKnksICpuLCAqbSwgKm9yZGVyOworICAgIEJJR05VTSAqcCwgKmEsICpiLCAq eCwgKnksICpuLCAqbSwgKm9yZGVyLCAqeXBsdXNvbmU7CiAgICAgRUNfR1JPVVAgKk5JU1RQOwog ICAgIEVDX1BPSU5UICpHLCAqUCwgKlEsICpRX0NIRUNLOwogCkBAIC04MTEsNiArNzE1LDcgQEAg c3RhdGljIHZvaWQgbmlzdHBfc2luZ2xlX3Rlc3QoY29uc3Qgc3RydWN0IG5pc3RwX3Rlc3RfcGFy YW1zICp0ZXN0KQogICAgIG0gPSBCTl9uZXcoKTsKICAgICBuID0gQk5fbmV3KCk7CiAgICAgb3Jk ZXIgPSBCTl9uZXcoKTsKKyAgICB5cGx1c29uZSA9IEJOX25ldygpOwogCiAgICAgTklTVFAgPSBF Q19HUk9VUF9uZXcodGVzdC0+bWV0aCgpKTsKICAgICBpZiAoIU5JU1RQKQpAQCAtODMzLDYgKzcz OCwxNCBAQCBzdGF0aWMgdm9pZCBuaXN0cF9zaW5nbGVfdGVzdChjb25zdCBzdHJ1Y3QgbmlzdHBf dGVzdF9wYXJhbXMgKnRlc3QpCiAgICAgICAgIEFCT1JUOwogICAgIGlmICghQk5faGV4MmJuKCZ5 LCB0ZXN0LT5ReSkpCiAgICAgICAgIEFCT1JUOworICAgIGlmICghQk5fYWRkKHlwbHVzb25lLCB5 LCBCTl92YWx1ZV9vbmUoKSkpCisgICAgICAgIEFCT1JUOworICAgIC8qCisgICAgICogV2hlbiAo eCwgeSkgaXMgb24gdGhlIGN1cnZlLCAoeCwgeSArIDEpIGlzLCBhcyBpdCBoYXBwZW5zLCBub3Qs CisgICAgICogYW5kIHRoZXJlZm9yZSBzZXR0aW5nIHRoZSBjb29yZGluYXRlcyBzaG91bGQgZmFp bC4KKyAgICAgKi8KKyAgICBpZiAoRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRnAo TklTVFAsIFFfQ0hFQ0ssIHgsIHlwbHVzb25lLCBjdHgpKQorICAgICAgICBBQk9SVDsKICAgICBp ZiAoIUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwKE5JU1RQLCBRX0NIRUNLLCB4 LCB5LCBjdHgpKQogICAgICAgICBBQk9SVDsKICAgICBpZiAoIUJOX2hleDJibigmeCwgdGVzdC0+ R3gpKQpAQCAtOTE4LDEwICs4MzEsNiBAQCBzdGF0aWMgdm9pZCBuaXN0cF9zaW5nbGVfdGVzdChj b25zdCBzdHJ1Y3QgbmlzdHBfdGVzdF9wYXJhbXMgKnRlc3QpCiAKICAgICBmcHJpbnRmKHN0ZG91 dCwgIm9rXG4iKTsKICAgICBncm91cF9vcmRlcl90ZXN0cyhOSVNUUCk7Ci0jICBpZiAwCi0gICAg dGltaW5ncyhOSVNUUCwgVElNSU5HX0JBU0VfUFQsIGN0eCk7Ci0gICAgdGltaW5ncyhOSVNUUCwg VElNSU5HX1JBTkRfUFQsIGN0eCk7Ci0jICBlbmRpZgogICAgIEVDX0dST1VQX2ZyZWUoTklTVFAp OwogICAgIEVDX1BPSU5UX2ZyZWUoRyk7CiAgICAgRUNfUE9JTlRfZnJlZShQKTsKQEAgLTkzNSw2 ICs4NDQsNyBAQCBzdGF0aWMgdm9pZCBuaXN0cF9zaW5nbGVfdGVzdChjb25zdCBzdHJ1Y3Qgbmlz dHBfdGVzdF9wYXJhbXMgKnRlc3QpCiAgICAgQk5fZnJlZSh4KTsKICAgICBCTl9mcmVlKHkpOwog ICAgIEJOX2ZyZWUob3JkZXIpOworICAgIEJOX2ZyZWUoeXBsdXNvbmUpOwogICAgIEJOX0NUWF9m cmVlKGN0eCk7CiB9CiAKQEAgLTk0MiwzMSArODUyLDUwIEBAIHN0YXRpYyB2b2lkIG5pc3RwX3Rl c3RzKCkKIHsKICAgICB1bnNpZ25lZCBpOwogCi0gICAgZm9yIChpID0gMDsKLSAgICAgICAgIGkg PCBzaXplb2YobmlzdHBfdGVzdHNfcGFyYW1zKSAvIHNpemVvZihzdHJ1Y3QgbmlzdHBfdGVzdF9w YXJhbXMpOwotICAgICAgICAgaSsrKSB7CisgICAgZm9yIChpID0gMDsgaSA8IE9TU0xfTkVMRU0o bmlzdHBfdGVzdHNfcGFyYW1zKTsgaSsrKSB7CiAgICAgICAgIG5pc3RwX3NpbmdsZV90ZXN0KCZu aXN0cF90ZXN0c19wYXJhbXNbaV0pOwogICAgIH0KIH0KICMgZW5kaWYKIAorc3RhdGljIHZvaWQg cGFyYW1ldGVyX3Rlc3Qodm9pZCkKK3sKKyAgICBFQ19HUk9VUCAqZ3JvdXAsICpncm91cDI7Cisg ICAgRUNQQVJBTUVURVJTICplY3BhcmFtZXRlcnM7CisKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlxu dGVzdGluZyBlY3BhcmFtZXRlcnMgY29udmVyc2lvbiAuLi4iKTsKKworICAgIGdyb3VwID0gRUNf R1JPVVBfbmV3X2J5X2N1cnZlX25hbWUoTklEX3NlY3AzODRyMSk7CisgICAgaWYgKCFncm91cCkK KyAgICAgICAgQUJPUlQ7CisKKyAgICBlY3BhcmFtZXRlcnMgPSBFQ19HUk9VUF9nZXRfZWNwYXJh bWV0ZXJzKGdyb3VwLCBOVUxMKTsKKyAgICBpZiAoIWVjcGFyYW1ldGVycykKKyAgICAgICAgQUJP UlQ7CisgICAgZ3JvdXAyID0gRUNfR1JPVVBfbmV3X2Zyb21fZWNwYXJhbWV0ZXJzKGVjcGFyYW1l dGVycyk7CisgICAgaWYgKCFncm91cDIpCisgICAgICAgIEFCT1JUOworICAgIGlmIChFQ19HUk9V UF9jbXAoZ3JvdXAsIGdyb3VwMiwgTlVMTCkpCisgICAgICAgIEFCT1JUOworCisgICAgZnByaW50 ZihzdGRlcnIsICIgb2tcbiIpOworCisgICAgRUNfR1JPVVBfZnJlZShncm91cCk7CisgICAgRUNf R1JPVVBfZnJlZShncm91cDIpOworICAgIEVDUEFSQU1FVEVSU19mcmVlKGVjcGFyYW1ldGVycyk7 Cit9CisKIHN0YXRpYyBjb25zdCBjaGFyIHJuZF9zZWVkW10gPQogICAgICJzdHJpbmcgdG8gbWFr ZSB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgdGhpbmsgaXQgaGFzIGVudHJvcHkiOwogCiBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogeworICAgIGNoYXIgKnA7CiAKLSAgICAv KiBlbmFibGUgbWVtb3J5IGxlYWsgY2hlY2tpbmcgdW5sZXNzIGV4cGxpY2l0bHkgZGlzYWJsZWQg Ki8KLSAgICBpZiAoISgoZ2V0ZW52KCJPUEVOU1NMX0RFQlVHX01FTU9SWSIpICE9IE5VTEwpCi0g ICAgICAgICAgJiYgKDAgPT0gc3RyY21wKGdldGVudigiT1BFTlNTTF9ERUJVR19NRU1PUlkiKSwg Im9mZiIpKSkpIHsKLSAgICAgICAgQ1JZUFRPX21hbGxvY19kZWJ1Z19pbml0KCk7Ci0gICAgICAg IENSWVBUT19zZXRfbWVtX2RlYnVnX29wdGlvbnMoVl9DUllQVE9fTURFQlVHX0FMTCk7Ci0gICAg fSBlbHNlIHsKLSAgICAgICAgLyogT1BFTlNTTF9ERUJVR19NRU1PUlk9b2ZmICovCi0gICAgICAg IENSWVBUT19zZXRfbWVtX2RlYnVnX2Z1bmN0aW9ucygwLCAwLCAwLCAwLCAwKTsKLSAgICB9Cisg ICAgcCA9IGdldGVudigiT1BFTlNTTF9ERUJVR19NRU1PUlkiKTsKKyAgICBpZiAocCAhPSBOVUxM ICYmIHN0cmNtcChwLCAib24iKSA9PSAwKQorICAgICAgICBDUllQVE9fc2V0X21lbV9kZWJ1Zygx KTsKICAgICBDUllQVE9fbWVtX2N0cmwoQ1JZUFRPX01FTV9DSEVDS19PTik7Ci0gICAgRVJSX2xv YWRfY3J5cHRvX3N0cmluZ3MoKTsKIAogICAgIFJBTkRfc2VlZChybmRfc2VlZCwgc2l6ZW9mIHJu ZF9zZWVkKTsgLyogb3IgQk5fZ2VuZXJhdGVfcHJpbWUgbWF5IGZhaWwgKi8KIApAQCAtOTgxLDEz ICs5MTAsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAvKiB0ZXN0 IHRoZSBpbnRlcm5hbCBjdXJ2ZXMgKi8KICAgICBpbnRlcm5hbF9jdXJ2ZV90ZXN0KCk7CiAKLSMg aWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5FCi0gICAgRU5HSU5FX2NsZWFudXAoKTsKLSMgZW5kaWYK LSAgICBDUllQVE9fY2xlYW51cF9hbGxfZXhfZGF0YSgpOwotICAgIEVSUl9mcmVlX3N0cmluZ3Mo KTsKLSAgICBFUlJfcmVtb3ZlX3RocmVhZF9zdGF0ZShOVUxMKTsKLSAgICBDUllQVE9fbWVtX2xl YWtzX2ZwKHN0ZGVycik7CisgICAgcGFyYW1ldGVyX3Rlc3QoKTsKKworI2lmbmRlZiBPUEVOU1NM X05PX0NSWVBUT19NREVCVUcKKyAgICBpZiAoQ1JZUFRPX21lbV9sZWFrc19mcChzdGRlcnIpIDw9 IDApCisgICAgICAgIHJldHVybiAxOworI2VuZGlmCiAKICAgICByZXR1cm4gMDsKIH0KCmRpZmYg LS1naXQgYS9ob2JibGUtb3BlbnNzbCBiL2hvYmJsZS1vcGVuc3NsCmluZGV4IDg3NTBhZDYuLmQ5 NjI3NDIgMTAwNzU1Ci0tLSBhL2hvYmJsZS1vcGVuc3NsCisrKyBiL2hvYmJsZS1vcGVuc3NsCkBA IC0yNiw3ICsyNiwxNyBAQCBmb3IgYyBpbiBgZmluZCBjcnlwdG8vYm4gLW5hbWUgIipnZjJtLmMi YDsgZG8KIAk+ICRjCiBkb25lCiAKLWZvciBjIGluIGBmaW5kIGNyeXB0by9lYyAtbmFtZSAiZWMy Ki5jIiAtbyAtbmFtZSAiZWNfY3VydmUuYyIgLW8gLW5hbWUgImVjcF9uaXN0cDIyPy5jIiAtbyAt bmFtZSAiZWN0ZXN0LmMiYDsgZG8KK2ZvciBjIGluIGBmaW5kIGNyeXB0by9lYyAtbmFtZSAiZWMy Ki5jIiAtbyAtbmFtZSAiZWNfY3VydmUuYyIgLW8gLW5hbWUgImVjcF9uaXN0cDIyPy5jImA7IGRv CisJZWNobyBEZXN0cm95aW5nICRjCisJPiAkYworZG9uZQorCitmb3IgYyBpbiBgZmluZCBjcnlw dG8vZWMgLW5hbWUgImVjMiouYyIgLW8gLW5hbWUgImVjX2N1cnZlLmMiIC1vIC1uYW1lICJlY3Bf bmlzdHAyMj8uYyJgOyBkbworCWVjaG8gRGVzdHJveWluZyAkYworCT4gJGMKK2RvbmUKKworZm9y IGMgaW4gYGZpbmQgdGVzdCAtbmFtZSAiZWN0ZXN0LmMiYDsgZG8KIAllY2hvIERlc3Ryb3lpbmcg JGMKIAk+ICRjCiBkb25lCkBAIC00Miw2ICs1MiwzIEBAIGZvciBoIGluIGBmaW5kIGNyeXB0byBz c2wgYXBwcyB0ZXN0IC1uYW1lICIqLmgiYCA7IGRvCiAJCS9eI1sgXHRdKmVuZGlmLyB7aWYoZWNo IDwgMSkgZWNoKys7fScgPiAkaC5ob2JibGVkICYmIFwKIAltdiAkaC5ob2JibGVkICRoCiBkb25l Ci0KLSMgTWFrZSB0aGUgbWFrZWZpbGVzIGhhcHB5LgotIyB0b3VjaCBjcnlwdG8vcmM1L2FzbS9y YzUtNTg2LnBsCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMC1iZXRhNC1jYS1kaXIucGF0Y2gg Yi9vcGVuc3NsLTEuMC4wLWJldGE0LWNhLWRpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggNzUxY2FiZC4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4wLWJldGE0LWNhLWRp ci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjAtYmV0YTQvYXBwcy9DQS5wbC5pbi5jYS1kaXIgb3BlbnNzbC0xLjAuMC1iZXRhNC9hcHBz L0NBLnBsLmluCi0tLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9hcHBzL0NBLnBsLmluLmNhLWRpcgky MDA2LTA0LTI4IDAyOjMwOjQ5LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0 YTQvYXBwcy9DQS5wbC5pbgkyMDA5LTExLTEyIDEyOjMzOjEzLjAwMDAwMDAwMCArMDEwMAotQEAg LTUzLDcgKzUzLDcgQEAgJFZFUklGWT0iJG9wZW5zc2wgdmVyaWZ5IjsKLSAkWDUwOT0iJG9wZW5z c2wgeDUwOSI7Ci0gJFBLQ1MxMj0iJG9wZW5zc2wgcGtjczEyIjsKLSAKLS0kQ0FUT1A9Ii4vZGVt b0NBIjsKLSskQ0FUT1A9Ii9ldGMvcGtpL0NBIjsKLSAkQ0FLRVk9ImNha2V5LnBlbSI7Ci0gJENB UkVRPSJjYXJlcS5wZW0iOwotICRDQUNFUlQ9ImNhY2VydC5wZW0iOwotZGlmZiAtdXAgb3BlbnNz bC0xLjAuMC1iZXRhNC9hcHBzL0NBLnNoLmNhLWRpciBvcGVuc3NsLTEuMC4wLWJldGE0L2FwcHMv Q0Euc2gKLS0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L2FwcHMvQ0Euc2guY2EtZGlyCTIwMDktMTAt MTUgMTk6Mjc6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMC1iZXRhNC9hcHBz L0NBLnNoCTIwMDktMTEtMTIgMTI6MzU6MTQuMDAwMDAwMDAwICswMTAwCi1AQCAtNjgsNyArNjgs NyBAQCBWRVJJRlk9IiRPUEVOU1NMIHZlcmlmeSIKLSBYNTA5PSIkT1BFTlNTTCB4NTA5IgotIFBL Q1MxMj0ib3BlbnNzbCBwa2NzMTIiCi0gCi0taWYgWyAteiAiJENBVE9QIiBdIDsgdGhlbiBDQVRP UD0uL2RlbW9DQSA7IGZpCi0raWYgWyAteiAiJENBVE9QIiBdIDsgdGhlbiBDQVRPUD0vZXRjL3Br aS9DQSA7IGZpCi0gQ0FLRVk9Li9jYWtleS5wZW0KLSBDQVJFUT0uL2NhcmVxLnBlbQotIENBQ0VS VD0uL2NhY2VydC5wZW0KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTQvYXBwcy9vcGVuc3Ns LmNuZi5jYS1kaXIgb3BlbnNzbC0xLjAuMC1iZXRhNC9hcHBzL29wZW5zc2wuY25mCi0tLS0gb3Bl bnNzbC0xLjAuMC1iZXRhNC9hcHBzL29wZW5zc2wuY25mLmNhLWRpcgkyMDA5LTExLTEyIDEyOjMz OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvYXBwcy9vcGVuc3Ns LmNuZgkyMDA5LTExLTEyIDEyOjMzOjEzLjAwMDAwMDAwMCArMDEwMAotQEAgLTM5LDcgKzM5LDcg QEAgZGVmYXVsdF9jYQk9IENBX2RlZmF1bHQJCSMgVGhlIGRlZmF1bHQgYwotICMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Ci0gWyBDQV9kZWZhdWx0IF0KLSAKLS1kaXIJCT0gLi9kZW1vQ0EJCSMgV2hlcmUgZXZlcnl0aGlu ZyBpcyBrZXB0Ci0rZGlyCQk9IC9ldGMvcGtpL0NBCQkjIFdoZXJlIGV2ZXJ5dGhpbmcgaXMga2Vw dAotIGNlcnRzCQk9ICRkaXIvY2VydHMJCSMgV2hlcmUgdGhlIGlzc3VlZCBjZXJ0cyBhcmUga2Vw dAotIGNybF9kaXIJCT0gJGRpci9jcmwJCSMgV2hlcmUgdGhlIGlzc3VlZCBjcmwgYXJlIGtlcHQK LSBkYXRhYmFzZQk9ICRkaXIvaW5kZXgudHh0CSMgZGF0YWJhc2UgaW5kZXggZmlsZS4KCmRpZmYg LS1naXQgYS9vcGVuc3NsLTEuMC4wLXRpbWV6b25lLnBhdGNoIGIvb3BlbnNzbC0xLjAuMC10aW1l em9uZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFkNjY4Mi4uMDAwMDAw MAotLS0gYS9vcGVuc3NsLTEuMC4wLXRpbWV6b25lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MjEgKzAsMCBAQAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC9NYWtlZmlsZS5vcmcudGltZXpvbmUg b3BlbnNzbC0xLjAuMC9NYWtlZmlsZS5vcmcKLS0tLSBvcGVuc3NsLTEuMC4wL01ha2VmaWxlLm9y Zy50aW1lem9uZQkyMDEwLTAzLTMwIDExOjA4OjQwLjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5z c2wtMS4wLjAvTWFrZWZpbGUub3JnCTIwMTAtMDQtMDYgMTI6NDk6MjEuMDAwMDAwMDAwICswMjAw Ci1AQCAtNjA5LDcgKzYwOSw3IEBAIGluc3RhbGxfZG9jczoKLSAJCXNlYz1gJChQRVJMKSB1dGls L2V4dHJhY3Qtc2VjdGlvbi5wbCAxIDwgJCRpYDsgXAotIAkJZWNobyAiaW5zdGFsbGluZyBtYW4k JHNlYy8kJGZuLiQke3NlY30kKE1BTlNVRkZJWCkiOyBcCi0gCQkoY2QgYCQoUEVSTCkgdXRpbC9k aXJuYW1lLnBsICQkaWA7IFwKLS0JCXNoIC1jICIkJHBvZDJtYW4gXAotKwkJc2ggLWMgIlRaPVVU QyAkJHBvZDJtYW4gXAotIAkJCS0tc2VjdGlvbj0kJHNlYyAtLWNlbnRlcj1PcGVuU1NMIFwKLSAJ CQktLXJlbGVhc2U9JChWRVJTSU9OKSBgYmFzZW5hbWUgJCRpYCIpIFwKLSAJCQk+ICAkKElOU1RB TExfUFJFRklYKSQoTUFORElSKS9tYW4kJHNlYy8kJGZuLiQke3NlY30kKE1BTlNVRkZJWCk7IFwK LUBAIC02MjYsNyArNjI2LDcgQEAgaW5zdGFsbF9kb2NzOgotIAkJc2VjPWAkKFBFUkwpIHV0aWwv ZXh0cmFjdC1zZWN0aW9uLnBsIDMgPCAkJGlgOyBcCi0gCQllY2hvICJpbnN0YWxsaW5nIG1hbiQk c2VjLyQkZm4uJCR7c2VjfSQoTUFOU1VGRklYKSI7IFwKLSAJCShjZCBgJChQRVJMKSB1dGlsL2Rp cm5hbWUucGwgJCRpYDsgXAotLQkJc2ggLWMgIiQkcG9kMm1hbiBcCi0rCQlzaCAtYyAiVFo9VVRD ICQkcG9kMm1hbiBcCi0gCQkJLS1zZWN0aW9uPSQkc2VjIC0tY2VudGVyPU9wZW5TU0wgXAotIAkJ CS0tcmVsZWFzZT0kKFZFUlNJT04pIGBiYXNlbmFtZSAkJGlgIikgXAotIAkJCT4gICQoSU5TVEFM TF9QUkVGSVgpJChNQU5ESVIpL21hbiQkc2VjLyQkZm4uJCR7c2VjfSQoTUFOU1VGRklYKTsgXAoK ZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjFjLWFsaWFzaW5nLnBhdGNoIGIvb3BlbnNzbC0xLjAu MWMtYWxpYXNpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4MjQxOGMu LjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMWMtYWxpYXNpbmcucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwxMiArMCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xYy9jcnlwdG8vbW9kZXMv TWFrZWZpbGUuYWxpYXNpbmcgb3BlbnNzbC0xLjAuMWMvY3J5cHRvL21vZGVzL01ha2VmaWxlCi0t LS0gb3BlbnNzbC0xLjAuMWMvY3J5cHRvL21vZGVzL01ha2VmaWxlLmFsaWFzaW5nCTIwMTEtMDgt MTIgMDA6MzY6MTcuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMWMvY3J5cHRvL21v ZGVzL01ha2VmaWxlCTIwMTItMDctMTMgMTE6MzI6MTAuNzY3ODI5MDc3ICswMjAwCi1AQCAtMTIs NyArMTIsNyBAQCBBUj0JCWFyIHIKLSAKLSBNT0RFU19BU01fT0JKPQotIAotLUNGTEFHUz0gJChJ TkNMVURFUykgJChDRkxBRykKLStDRkxBR1M9ICQoSU5DTFVERVMpICQoQ0ZMQUcpIC1mbm8tc3Ry aWN0LWFsaWFzaW5nCi0gQVNGTEFHUz0gJChJTkNMVURFUykgJChBU0ZMQUcpCi0gQUZMQUdTPSAk KEFTRkxBR1MpCi0gCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMWMtcGVybGZpbmQucGF0Y2gg Yi9vcGVuc3NsLTEuMC4xYy1wZXJsZmluZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggOTU2YWZkNi4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4xYy1wZXJsZmluZC5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFj L3V0aWwvcGVybHBhdGgucGwucGVybGZpbmQgb3BlbnNzbC0xLjAuMWMvdXRpbC9wZXJscGF0aC5w bAotLS0tIG9wZW5zc2wtMS4wLjFjL3V0aWwvcGVybHBhdGgucGwucGVybGZpbmQJMjAxMi0wNy0x MSAyMjo1NzozMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4xYy91dGlsL3Blcmxw YXRoLnBsCTIwMTItMDctMTIgMDA6MzE6MTIuMTAyMTU2Mjc1ICswMjAwCi1AQCAtNCwxMCArNCwx MCBAQAotICMgbGluZSBpbiBhbGwgc2NyaXB0cyB0aGF0IHJlbHkgb24gcGVybC4KLSAjCi0gCi0t cmVxdWlyZSAiZmluZC5wbCI7Ci0rdXNlIEZpbGU6OkZpbmQ7Ci0gCi0gJCNBUkdWID09IDAgfHwg cHJpbnQgU1RERVJSICJ1c2FnZTogcGVybHBhdGggbmV3cGF0aCAgKGVnIC91c3IvYmluKVxuIjsK LS0mZmluZCgiLiIpOwotK2ZpbmQoXCZ3YW50ZWQsICIuIik7Ci0gCi0gc3ViIHdhbnRlZAotIAl7 CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMWktYWxnby1kb2MucGF0Y2ggYi9vcGVuc3NsLTEu MC4xaS1hbGdvLWRvYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE5ODc3 ZC4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4xaS1hbGdvLWRvYy5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDc3ICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjFpL2RvYy9jcnlwdG8v RVZQX0RpZ2VzdEluaXQucG9kLmFsZ28tZG9jIG9wZW5zc2wtMS4wLjFpL2RvYy9jcnlwdG8vRVZQ X0RpZ2VzdEluaXQucG9kCi0tLS0gb3BlbnNzbC0xLjAuMWkvZG9jL2NyeXB0by9FVlBfRGlnZXN0 SW5pdC5wb2QuYWxnby1kb2MJMjAxNC0wOC0wNiAyMzoxMDo1Ni4wMDAwMDAwMDAgKzAyMDAKLSsr KyBvcGVuc3NsLTEuMC4xaS9kb2MvY3J5cHRvL0VWUF9EaWdlc3RJbml0LnBvZAkyMDE0LTA4LTA3 IDExOjE4OjAxLjI5MDc3Mzk3MCArMDIwMAotQEAgLTc1LDcgKzc1LDcgQEAgRVZQX01EX0NUWF9j cmVhdGUoKSBhbGxvY2F0ZXMsIGluaXRpYWxpegotIAotIEVWUF9EaWdlc3RJbml0X2V4KCkgc2V0 cyB1cCBkaWdlc3QgY29udGV4dCBCPGN0eD4gdG8gdXNlIGEgZGlnZXN0Ci0gQjx0eXBlPiBmcm9t IEVOR0lORSBCPGltcGw+LiBCPGN0eD4gbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgY2FsbGlu ZyB0aGlzCi0tZnVuY3Rpb24uIEI8dHlwZT4gd2lsbCB0eXBpY2FsbHkgYmUgc3VwcGxpZWQgYnkg YSBmdW5jdGlvbnN1Y2ggYXMgRVZQX3NoYTEoKS4KLStmdW5jdGlvbi4gQjx0eXBlPiB3aWxsIHR5 cGljYWxseSBiZSBzdXBwbGllZCBieSBhIGZ1bmN0aW9uIHN1Y2ggYXMgRVZQX3NoYTEoKS4KLSBJ ZiBCPGltcGw+IGlzIE5VTEwgdGhlbiB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBkaWdl c3QgQjx0eXBlPiBpcyB1c2VkLgotIAotIEVWUF9EaWdlc3RVcGRhdGUoKSBoYXNoZXMgQjxjbnQ+ IGJ5dGVzIG9mIGRhdGEgYXQgQjxkPiBpbnRvIHRoZQotQEAgLTE2NCw3ICsxNjQsOCBAQCBjb3Jy ZXNwb25kaW5nIE9CSkVDVCBJREVOVElGSUVSIG9yIE5JRF91Ci0gRVZQX01EX3NpemUoKSwgRVZQ X01EX2Jsb2NrX3NpemUoKSwgRVZQX01EX0NUWF9zaXplKCkgYW5kCi0gRVZQX01EX0NUWF9ibG9j a19zaXplKCkgcmV0dXJuIHRoZSBkaWdlc3Qgb3IgYmxvY2sgc2l6ZSBpbiBieXRlcy4KLSAKLS1F VlBfbWRfbnVsbCgpLCBFVlBfbWQyKCksIEVWUF9tZDUoKSwgRVZQX3NoYSgpLCBFVlBfc2hhMSgp LCBFVlBfZHNzKCksCi0rRVZQX21kX251bGwoKSwgRVZQX21kMigpLCBFVlBfbWQ1KCksIEVWUF9z aGEoKSwgRVZQX3NoYTEoKSwKLStFVlBfc2hhMjI0KCksIEVWUF9zaGEyNTYoKSwgRVZQX3NoYTM4 NCgpLCBFVlBfc2hhNTEyKCksIEVWUF9kc3MoKSwKLSBFVlBfZHNzMSgpLCBFVlBfbWRjMigpIGFu ZCBFVlBfcmlwZW1kMTYwKCkgcmV0dXJuIHBvaW50ZXJzIHRvIHRoZQotIGNvcnJlc3BvbmRpbmcg RVZQX01EIHN0cnVjdHVyZXMuCi0gCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4xaS9kb2MvY3J5cHRv L0VWUF9FbmNyeXB0SW5pdC5wb2QuYWxnby1kb2Mgb3BlbnNzbC0xLjAuMWkvZG9jL2NyeXB0by9F VlBfRW5jcnlwdEluaXQucG9kCi0tLS0gb3BlbnNzbC0xLjAuMWkvZG9jL2NyeXB0by9FVlBfRW5j cnlwdEluaXQucG9kLmFsZ28tZG9jCTIwMTQtMDgtMDYgMjM6MTA6NTYuMDAwMDAwMDAwICswMjAw Ci0rKysgb3BlbnNzbC0xLjAuMWkvZG9jL2NyeXB0by9FVlBfRW5jcnlwdEluaXQucG9kCTIwMTQt MDgtMDcgMTA6NTU6MjUuMTAwNjM4MjUyICswMjAwCi1AQCAtOTEsNiArOTEsMzIgQEAgRVZQX0NJ UEhFUl9DVFhfc2V0X3BhZGRpbmcgLSBFVlAgY2lwaGVyCi0gIGludCBFVlBfQ0lQSEVSX3BhcmFt X3RvX2FzbjEoRVZQX0NJUEhFUl9DVFggKmMsIEFTTjFfVFlQRSAqdHlwZSk7Ci0gIGludCBFVlBf Q0lQSEVSX2FzbjFfdG9fcGFyYW0oRVZQX0NJUEhFUl9DVFggKmMsIEFTTjFfVFlQRSAqdHlwZSk7 Ci0gCi0rIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9kZXNfZWRlMyh2b2lkKTsKLSsgY29uc3QgRVZQ X0NJUEhFUiAqRVZQX2Rlc19lZGUzX2VjYih2b2lkKTsKLSsgY29uc3QgRVZQX0NJUEhFUiAqRVZQ X2Rlc19lZGUzX2NmYjY0KHZvaWQpOwotKyBjb25zdCBFVlBfQ0lQSEVSICpFVlBfZGVzX2VkZTNf Y2ZiMSh2b2lkKTsKLSsgY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Rlc19lZGUzX2NmYjgodm9pZCk7 Ci0rIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9kZXNfZWRlM19vZmIodm9pZCk7Ci0rIGNvbnN0IEVW UF9DSVBIRVIgKkVWUF9kZXNfZWRlM19jYmModm9pZCk7Ci0rIGNvbnN0IEVWUF9DSVBIRVIgKkVW UF9hZXNfMTI4X2VjYih2b2lkKTsKLSsgY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18xMjhfY2Jj KHZvaWQpOwotKyBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzEyOF9jZmIxKHZvaWQpOwotKyBj b25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzEyOF9jZmI4KHZvaWQpOwotKyBjb25zdCBFVlBfQ0lQ SEVSICpFVlBfYWVzXzEyOF9jZmIxMjgodm9pZCk7Ci0rIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9h ZXNfMTI4X29mYih2b2lkKTsKLSsgY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18xOTJfZWNiKHZv aWQpOwotKyBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzE5Ml9jYmModm9pZCk7Ci0rIGNvbnN0 IEVWUF9DSVBIRVIgKkVWUF9hZXNfMTkyX2NmYjEodm9pZCk7Ci0rIGNvbnN0IEVWUF9DSVBIRVIg KkVWUF9hZXNfMTkyX2NmYjgodm9pZCk7Ci0rIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMTky X2NmYjEyOCh2b2lkKTsKLSsgY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18xOTJfb2ZiKHZvaWQp OwotKyBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzI1Nl9lY2Iodm9pZCk7Ci0rIGNvbnN0IEVW UF9DSVBIRVIgKkVWUF9hZXNfMjU2X2NiYyh2b2lkKTsKLSsgY29uc3QgRVZQX0NJUEhFUiAqRVZQ X2Flc18yNTZfY2ZiMSh2b2lkKTsKLSsgY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18yNTZfY2Zi OCh2b2lkKTsKLSsgY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18yNTZfY2ZiMTI4KHZvaWQpOwot KyBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzI1Nl9vZmIodm9pZCk7Ci0rCi0gPWhlYWQxIERF U0NSSVBUSU9OCi0gCi0gVGhlIEVWUCBjaXBoZXIgcm91dGluZXMgYXJlIGEgaGlnaCBsZXZlbCBp bnRlcmZhY2UgdG8gY2VydGFpbgotQEAgLTI5Nyw2ICszMjMsMTggQEAgVGhyZWUga2V5IHRyaXBs ZSBERVMgaW4gQ0JDLCBFQ0IsIENGQiBhbgotIAotIERFU1ggYWxnb3JpdGhtIGluIENCQyBtb2Rl LgotIAotKz1pdGVtIEVWUF9hZXNfMTI4X2NiYyh2b2lkKSwgRVZQX2Flc18xMjhfZWNiKCksIEVW UF9hZXNfMTI4X29mYih2b2lkKSwgRVZQX2Flc18xMjhfY2ZiMSh2b2lkKSwgRVZQX2Flc18xMjhf Y2ZiOCh2b2lkKSwgRVZQX2Flc18xMjhfY2ZiMTI4KHZvaWQpCi0rCi0rQUVTIHdpdGggMTI4IGJp dCBrZXkgbGVuZ3RoIGluIENCQywgRUNCLCBPRkIgYW5kIENGQiBtb2RlcyByZXNwZWN0aXZlbHku Ci0rCi0rPWl0ZW0gRVZQX2Flc18xOTJfY2JjKHZvaWQpLCBFVlBfYWVzXzE5Ml9lY2IoKSwgRVZQ X2Flc18xOTJfb2ZiKHZvaWQpLCBFVlBfYWVzXzE5Ml9jZmIxKHZvaWQpLCBFVlBfYWVzXzE5Ml9j ZmI4KHZvaWQpLCBFVlBfYWVzXzE5Ml9jZmIxMjgodm9pZCkKLSsKLStBRVMgd2l0aCAxOTIgYml0 IGtleSBsZW5ndGggaW4gQ0JDLCBFQ0IsIE9GQiBhbmQgQ0ZCIG1vZGVzIHJlc3BlY3RpdmVseS4K LSsKLSs9aXRlbSBFVlBfYWVzXzI1Nl9jYmModm9pZCksIEVWUF9hZXNfMjU2X2VjYigpLCBFVlBf YWVzXzI1Nl9vZmIodm9pZCksIEVWUF9hZXNfMjU2X2NmYjEodm9pZCksIEVWUF9hZXNfMjU2X2Nm Yjgodm9pZCksIEVWUF9hZXNfMjU2X2NmYjEyOCh2b2lkKQotKwotK0FFUyB3aXRoIDI1NiBiaXQg a2V5IGxlbmd0aCBpbiBDQkMsIEVDQiwgT0ZCIGFuZCBDRkIgbW9kZXMgcmVzcGVjdGl2ZWx5Lgot KwotID1pdGVtIEVWUF9yYzQodm9pZCkKLSAKLSBSQzQgc3RyZWFtIGNpcGhlci4gVGhpcyBpcyBh IHZhcmlhYmxlIGtleSBsZW5ndGggY2lwaGVyIHdpdGggZGVmYXVsdCBrZXkgbGVuZ3RoIDEyOCBi aXRzLgoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJhLWFwcHMtZGdzdC5wYXRjaCBiL29wZW5z c2wtMS4wLjJhLWFwcHMtZGdzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MmJiODMyNy4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4yYS1hcHBzLWRnc3QucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvYXBw cy9jYS5jLmRnc3Qgb3BlbnNzbC0xLjAuMmEvYXBwcy9jYS5jCi0tLS0gb3BlbnNzbC0xLjAuMmEv YXBwcy9jYS5jLmRnc3QJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBv cGVuc3NsLTEuMC4yYS9hcHBzL2NhLmMJMjAxNS0wNC0yMSAxNzowMTozOC44NDE1NTE2MTYgKzAy MDAKLUBAIC0xNTcsNyArMTU3LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNhX3VzYWdlW10gPSB7 Ci0gICAgICIgLXN0YXJ0ZGF0ZSBZWU1NRERISE1NU1NaICAtIGNlcnRpZmljYXRlIHZhbGlkaXR5 IG5vdEJlZm9yZVxuIiwKLSAgICAgIiAtZW5kZGF0ZSBZWU1NRERISE1NU1NaICAgIC0gY2VydGlm aWNhdGUgdmFsaWRpdHkgbm90QWZ0ZXIgKG92ZXJyaWRlcyAtZGF5cylcbiIsCi0gICAgICIgLWRh eXMgYXJnICAgICAgIC0gbnVtYmVyIG9mIGRheXMgdG8gY2VydGlmeSB0aGUgY2VydGlmaWNhdGUg Zm9yXG4iLAotLSAgICAiIC1tZCBhcmcgICAgICAgICAtIG1kIHRvIHVzZSwgb25lIG9mIG1kMiwg bWQ1LCBzaGEgb3Igc2hhMVxuIiwKLSsgICAgIiAtbWQgYXJnICAgICAgICAgLSBtZCB0byB1c2Us IHNlZSBvcGVuc3NsIGRnc3QgLWggZm9yIGxpc3RcbiIsCi0gICAgICIgLXBvbGljeSBhcmcgICAg IC0gVGhlIENBICdwb2xpY3knIHRvIHN1cHBvcnRcbiIsCi0gICAgICIgLWtleWZpbGUgYXJnICAg IC0gcHJpdmF0ZSBrZXkgZmlsZVxuIiwKLSAgICAgIiAta2V5Zm9ybSBhcmcgICAgLSBwcml2YXRl IGtleSBmaWxlIGZvcm1hdCAoUEVNIG9yIEVOR0lORSlcbiIsCi1kaWZmIC11cCBvcGVuc3NsLTEu MC4yYS9hcHBzL2VuYy5jLmRnc3Qgb3BlbnNzbC0xLjAuMmEvYXBwcy9lbmMuYwotLS0tIG9wZW5z c2wtMS4wLjJhL2FwcHMvZW5jLmMuZGdzdAkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCAr MDEwMAotKysrIG9wZW5zc2wtMS4wLjJhL2FwcHMvZW5jLmMJMjAxNS0wNC0yMSAxNzowMTozOC44 NDE1NTE2MTYgKzAyMDAKLUBAIC0yOTQsNyArMjk0LDcgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQotICAgICAgICAgICAgICAgICAgICAgICAgIiUtMTRzIHRoZSBuZXh0IGFyZ3Vt ZW50IGlzIHRoZSBtZCB0byB1c2UgdG8gY3JlYXRlIGEga2V5XG4iLAotICAgICAgICAgICAgICAg ICAgICAgICAgIi1tZCIpOwotICAgICAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwKLS0gICAg ICAgICAgICAgICAgICAgICAgICIlLTE0cyAgIGZyb20gYSBwYXNzcGhyYXNlLiAgT25lIG9mIG1k MiwgbWQ1LCBzaGEgb3Igc2hhMVxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICIlLTE0cyAg IGZyb20gYSBwYXNzcGhyYXNlLiBTZWUgb3BlbnNzbCBkZ3N0IC1oIGZvciBsaXN0LlxuIiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICIiKTsKLSAgICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19l cnIsICIlLTE0cyBzYWx0IGluIGhleCBpcyB0aGUgbmV4dCBhcmd1bWVudFxuIiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICItUyIpOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvYXBwcy9yZXEu Yy5kZ3N0IG9wZW5zc2wtMS4wLjJhL2FwcHMvcmVxLmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9hcHBz L3JlcS5jLmRnc3QJMjAxNS0wMy0xOSAxNDoxOTowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVu c3NsLTEuMC4yYS9hcHBzL3JlcS5jCTIwMTUtMDQtMjEgMTc6MDE6MzguODQyNTUxNjQwICswMjAw Ci1AQCAtNDE0LDcgKzQxNCw3IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAg ICAgICAgICAgICAgICAgICAgIiAtbmV3a2V5IGVjOmZpbGUgZ2VuZXJhdGUgYSBuZXcgRUMga2V5 LCBwYXJhbWV0ZXJzIHRha2VuIGZyb20gQ0EgaW4gJ2ZpbGUnXG4iKTsKLSAjZW5kaWYKLSAgICAg ICAgIEJJT19wcmludGYoYmlvX2VyciwKLS0gICAgICAgICAgICAgICAgICAgIiAtW2RpZ2VzdF0g ICAgICBEaWdlc3QgdG8gc2lnbiB3aXRoIChtZDUsIHNoYTEsIG1kMiwgbWRjMiwgbWQ0KVxuIik7 Ci0rICAgICAgICAgICAgICAgICAgICIgLVtkaWdlc3RdICAgICAgRGlnZXN0IHRvIHNpZ24gd2l0 aCAoc2VlIG9wZW5zc2wgZGdzdCAtaCBmb3IgbGlzdClcbiIpOwotICAgICAgICAgQklPX3ByaW50 ZihiaW9fZXJyLCAiIC1jb25maWcgZmlsZSAgIHJlcXVlc3QgdGVtcGxhdGUgZmlsZS5cbiIpOwot ICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLAotICAgICAgICAgICAgICAgICAgICAiIC1zdWJq IGFyZyAgICAgIHNldCBvciBtb2RpZnkgcmVxdWVzdCBzdWJqZWN0XG4iKTsKLWRpZmYgLXVwIG9w ZW5zc2wtMS4wLjJhL2FwcHMvdHMuYy5kZ3N0IG9wZW5zc2wtMS4wLjJhL2FwcHMvdHMuYwotLS0t IG9wZW5zc2wtMS4wLjJhL2FwcHMvdHMuYy5kZ3N0CTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAw MDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmEvYXBwcy90cy5jCTIwMTUtMDQtMjEgMTc6MDE6 MzguODQyNTUxNjQwICswMjAwCi1AQCAtMzM3LDcgKzMzNyw3IEBAIGludCBNQUlOKGludCBhcmdj LCBjaGFyICoqYXJndikKLSAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAidXNhZ2U6XG4iCi0gICAg ICAgICAgICAgICAgInRzIC1xdWVyeSBbLXJhbmQgZmlsZSVjZmlsZSVjLi4uXSBbLWNvbmZpZyBj b25maWdmaWxlXSAiCi0gICAgICAgICAgICAgICAgIlstZGF0YSBmaWxlX3RvX2hhc2hdIFstZGln ZXN0IGRpZ2VzdF9ieXRlc10iCi0tICAgICAgICAgICAgICAgIlstbWQyfC1tZDR8LW1kNXwtc2hh fC1zaGExfC1tZGMyfC1yaXBlbWQxNjBdICIKLSsgICAgICAgICAgICAgICAiWy08aGFzaGFsZz5d ICIKLSAgICAgICAgICAgICAgICAiWy1wb2xpY3kgb2JqZWN0X2lkXSBbLW5vX25vbmNlXSBbLWNl cnRdICIKLSAgICAgICAgICAgICAgICAiWy1pbiByZXF1ZXN0LnRzcV0gWy1vdXQgcmVxdWVzdC50 c3FdIFstdGV4dF1cbiIsCi0gICAgICAgICAgICAgICAgTElTVF9TRVBBUkFUT1JfQ0hBUiwgTElT VF9TRVBBUkFUT1JfQ0hBUik7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9hcHBzL3g1MDkuYy5k Z3N0IG9wZW5zc2wtMS4wLjJhL2FwcHMveDUwOS5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvYXBwcy94 NTA5LmMuZGdzdAkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5z c2wtMS4wLjJhL2FwcHMveDUwOS5jCTIwMTUtMDQtMjEgMTc6MDE6MzguODQyNTUxNjQwICswMjAw Ci1AQCAtMTQxLDcgKzE0MSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICp4NTA5X3VzYWdlW10gPSB7 Ci0gICAgICIgLXNldF9zZXJpYWwgICAgIC0gc2VyaWFsIG51bWJlciB0byB1c2VcbiIsCi0gICAg ICIgLXRleHQgICAgICAgICAgIC0gcHJpbnQgdGhlIGNlcnRpZmljYXRlIGluIHRleHQgZm9ybVxu IiwKLSAgICAgIiAtQyAgICAgICAgICAgICAgLSBwcmludCBvdXQgQyBjb2RlIGZvcm1zXG4iLAot LSAgICAiIC1tZDIvLW1kNS8tc2hhMS8tbWRjMiAtIGRpZ2VzdCB0byB1c2VcbiIsCi0rICAgICIg LTxkZ3N0PiAgICAgICAgIC0gZGlnZXN0IHRvIHVzZSwgc2VlIG9wZW5zc2wgZGdzdCAtaCBvdXRw dXQgZm9yIGxpc3RcbiIsCi0gICAgICIgLWV4dGZpbGUgICAgICAgIC0gY29uZmlndXJhdGlvbiBm aWxlIHdpdGggWDUwOVYzIGV4dGVuc2lvbnMgdG8gYWRkXG4iLAotICAgICAiIC1leHRlbnNpb25z ICAgICAtIHNlY3Rpb24gZnJvbSBjb25maWcgZmlsZSB3aXRoIFg1MDlWMyBleHRlbnNpb25zIHRv IGFkZFxuIiwKLSAgICAgIiAtY2xyZXh0ICAgICAgICAgLSBkZWxldGUgZXh0ZW5zaW9ucyBiZWZv cmUgc2lnbmluZyBhbmQgaW5wdXQgY2VydGlmaWNhdGVcbiIsCi1kaWZmIC11cCBvcGVuc3NsLTEu MC4yYS9kb2MvYXBwcy9jYS5wb2QuZGdzdCBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9jYS5wb2QK LS0tLSBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9jYS5wb2QuZGdzdAkyMDE1LTAxLTIwIDEzOjMz OjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL2NhLnBvZAky MDE1LTA0LTIxIDE3OjAxOjM4Ljg0MjU1MTY0MCArMDIwMAotQEAgLTE2OCw3ICsxNjgsOCBAQCB0 aGUgbnVtYmVyIG9mIGRheXMgdG8gY2VydGlmeSB0aGUgY2VydGlmCi0gPWl0ZW0gQjwtbWQgYWxn PgotIAotIHRoZSBtZXNzYWdlIGRpZ2VzdCB0byB1c2UuIFBvc3NpYmxlIHZhbHVlcyBpbmNsdWRl IG1kNSwgc2hhMSBhbmQgbWRjMi4KLS1UaGlzIG9wdGlvbiBhbHNvIGFwcGxpZXMgdG8gQ1JMcy4K LStGb3IgZnVsbCBsaXN0IG9mIGRpZ2VzdHMgc2VlIG9wZW5zc2wgZGdzdCAtaCBvdXRwdXQuIFRo aXMgb3B0aW9uIGFsc28KLSthcHBsaWVzIHRvIENSTHMuCi0gCi0gPWl0ZW0gQjwtcG9saWN5IGFy Zz4KLSAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL29jc3AucG9kLmRnc3Qgb3Bl bnNzbC0xLjAuMmEvZG9jL2FwcHMvb2NzcC5wb2QKLS0tLSBvcGVuc3NsLTEuMC4yYS9kb2MvYXBw cy9vY3NwLnBvZC5kZ3N0CTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAwCi0rKysg b3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvb2NzcC5wb2QJMjAxNS0wNC0yMSAxNzowMTozOC44NDI1 NTE2NDAgKzAyMDAKLUBAIC0yMTksNyArMjE5LDggQEAgY2hlY2sgaXMgbm90IHBlcmZvcm1lZC4K LSA9aXRlbSBCPC1tZDV8LXNoYTF8LXNoYTI1NnwtcmlwZW1vZDE2MHwuLi4+Ci0gCi0gdGhpcyBv cHRpb24gc2V0cyBkaWdlc3QgYWxnb3JpdGhtIHRvIHVzZSBmb3IgY2VydGlmaWNhdGUgaWRlbnRp ZmljYXRpb24KLS1pbiB0aGUgT0NTUCByZXF1ZXN0LiBCeSBkZWZhdWx0IFNIQS0xIGlzIHVzZWQu IAotK2luIHRoZSBPQ1NQIHJlcXVlc3QuIEJ5IGRlZmF1bHQgU0hBLTEgaXMgdXNlZC4gU2VlIG9w ZW5zc2wgZGdzdCAtaCBvdXRwdXQgZm9yCi0rdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGFsZ29yaXRo bXMuCi0gCi0gPWJhY2sKLSAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3JlcS5w b2QuZGdzdCBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9yZXEucG9kCi0tLS0gb3BlbnNzbC0xLjAu MmEvZG9jL2FwcHMvcmVxLnBvZC5kZ3N0CTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAwICsw MTAwCi0rKysgb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvcmVxLnBvZAkyMDE1LTA0LTIxIDE3OjAx OjM4Ljg0MzU1MTY2NCArMDIwMAotQEAgLTIwMSw3ICsyMDEsOCBAQCB3aWxsIG5vdCBiZSBlbmNy eXB0ZWQuCi0gCi0gdGhpcyBzcGVjaWZpZXMgdGhlIG1lc3NhZ2UgZGlnZXN0IHRvIHNpZ24gdGhl IHJlcXVlc3Qgd2l0aCAoc3VjaCBhcwotIEI8LW1kNT4sIEI8LXNoYTE+KS4gVGhpcyBvdmVycmlk ZXMgdGhlIGRpZ2VzdCBhbGdvcml0aG0gc3BlY2lmaWVkIGluCi0tdGhlIGNvbmZpZ3VyYXRpb24g ZmlsZS4KLSt0aGUgY29uZmlndXJhdGlvbiBmaWxlLiBGb3IgZnVsbCBsaXN0IG9mIHBvc3NpYmxl IGRpZ2VzdHMgc2VlIG9wZW5zc2wKLStkZ3N0IC1oIG91dHB1dC4KLSAKLSBTb21lIHB1YmxpYyBr ZXkgYWxnb3JpdGhtcyBtYXkgb3ZlcnJpZGUgdGhpcyBjaG9pY2UuIEZvciBpbnN0YW5jZSwgRFNB Ci0gc2lnbmF0dXJlcyBhbHdheXMgdXNlIFNIQTEsIEdPU1QgUiAzNC4xMCBzaWduYXR1cmVzIGFs d2F5cyB1c2UKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3g1MDkucG9kLmRnc3Qg b3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMveDUwOS5wb2QKLS0tLSBvcGVuc3NsLTEuMC4yYS9kb2Mv YXBwcy94NTA5LnBvZC5kZ3N0CTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCi0r Kysgb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMveDUwOS5wb2QJMjAxNS0wNC0yMSAxNzowMTozOC44 NDM1NTE2NjQgKzAyMDAKLUBAIC0xMDcsNiArMTA3LDcgQEAgdGhlIGRpZ2VzdCB0byB1c2UuIFRo aXMgYWZmZWN0cyBhbnkgc2lnbgotIGRpZ2VzdCwgc3VjaCBhcyB0aGUgQjwtZmluZ2VycHJpbnQ+ LCBCPC1zaWdua2V5PiBhbmQgQjwtQ0E+IG9wdGlvbnMuIElmIG5vdAotIHNwZWNpZmllZCB0aGVu IFNIQTEgaXMgdXNlZC4gSWYgdGhlIGtleSBiZWluZyB1c2VkIHRvIHNpZ24gd2l0aCBpcyBhIERT QSBrZXkKLSB0aGVuIHRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Q6IFNIQTEgaXMgYWx3YXlzIHVz ZWQgd2l0aCBEU0Ega2V5cy4KLStGb3IgZnVsbCBsaXN0IG9mIGRpZ2VzdHMgc2VlIG9wZW5zc2wg ZGdzdCAtaCBvdXRwdXQuCi0gCi0gPWl0ZW0gQjwtZW5naW5lIGlkPgotIAoKZGlmZiAtLWdpdCBh L29wZW5zc2wtMS4wLjJhLWNjLXJlcXMucGF0Y2ggYi9vcGVuc3NsLTEuMC4yYS1jYy1yZXFzLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjY4ZDYyLi4wMDAwMDAwCi0tLSBh L29wZW5zc2wtMS4wLjJhLWNjLXJlcXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCww IEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcnNhL3JzYV9nZW4uYy5jYy1yZXFz IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhX2dlbi5jCi0tLS0gb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL3JzYS9yc2FfZ2VuLmMuY2MtcmVxcwkyMDE1LTA0LTA5IDE4OjIyOjU4LjYzODQ0ODQz MiArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhX2dlbi5jCTIwMTUtMDQt MDkgMTg6MjI6NTcuMjY0NDE2NjkyICswMjAwCi1AQCAtNDc0LDYgKzQ3NCwxMiBAQCBzdGF0aWMg aW50IHJzYV9idWlsdGluX2tleWdlbihSU0EgKnJzYSwKLSAgICAgaWYgKCFyc2EtPmlxbXAgJiYg KChyc2EtPmlxbXAgPSBCTl9uZXcoKSkgPT0gTlVMTCkpCi0gICAgICAgICBnb3RvIGVycjsKLSAK LSsgICAgLyogcHJlcGFyZSBtaW5pbXVtIHAgYW5kIHEgZGlmZmVyZW5jZSAqLwotKyAgICBpZiAo IUJOX29uZShyMykpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgaWYgKGJpdHNwID4gMTAwICYm ICFCTl9sc2hpZnQocjMsIHIzLCBiaXRzcCAtIDEwMCkpCi0rICAgICAgICBnb3RvIGVycjsKLSsK LSAgICAgQk5fY29weShyc2EtPmUsIGVfdmFsdWUpOwotIAotICAgICAvKiBnZW5lcmF0ZSBwIGFu ZCBxICovCi1AQCAtNTAxLDcgKzUwNyw5IEBAIHN0YXRpYyBpbnQgcnNhX2J1aWx0aW5fa2V5Z2Vu KFJTQSAqcnNhLAotICAgICAgICAgZG8gewotICAgICAgICAgICAgIGlmICghQk5fZ2VuZXJhdGVf cHJpbWVfZXgocnNhLT5xLCBiaXRzcSwgMCwgTlVMTCwgTlVMTCwgY2IpKQotICAgICAgICAgICAg ICAgICBnb3RvIGVycjsKLS0gICAgICAgIH0gd2hpbGUgKChCTl9jbXAocnNhLT5wLCByc2EtPnEp ID09IDApICYmICgrK2RlZ2VuZXJhdGUgPCAzKSk7Ci0rICAgICAgICAgICAgaWYgKCFCTl9zdWIo cjIsIHJzYS0+cSwgcnNhLT5wKSkKLSsgICAgICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgICAg ICB9IHdoaWxlICgoQk5fdWNtcChyMiwgcjMpIDw9IDApICYmICgrK2RlZ2VuZXJhdGUgPCAzKSk7 Ci0gICAgICAgICBpZiAoZGVnZW5lcmF0ZSA9PSAzKSB7Ci0gICAgICAgICAgICAgb2sgPSAwOyAg ICAgICAgICAgICAvKiB3ZSBzZXQgb3VyIG93biBlcnIgKi8KLSAgICAgICAgICAgICBSU0FlcnIo UlNBX0ZfUlNBX0JVSUxUSU5fS0VZR0VOLCBSU0FfUl9LRVlfU0laRV9UT09fU01BTEwpOwoKZGlm ZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJhLWNvbXBhdC1zeW1ib2xzLnBhdGNoIGIvb3BlbnNzbC0x LjAuMmEtY29tcGF0LXN5bWJvbHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDFlMDk5M2UuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMmEtY29tcGF0LXN5bWJvbHMucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vZHNhL2RzYV9rZXkuYy5jb21wYXQgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9k c2Ffa2V5LmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZHNhL2RzYV9rZXkuYy5jb21wYXQJ MjAxNS0wNC0wOSAxODoyMToxMS42ODc5Nzc4NTggKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vZHNhL2RzYV9rZXkuYwkyMDE1LTA0LTA5IDE4OjIxOjA3Ljg2OTg4OTY1OSArMDIwMAot QEAgLTY4LDYgKzY4LDExIEBACi0gIyAgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0gIyAgaW5j bHVkZSA8b3BlbnNzbC9ldnAuaD4KLSAKLSsvKiBqdXN0IGEgY29tcGF0aWJpbGl0eSBzeW1ib2wg LSBuby1vcCAqLwotK3ZvaWQgRklQU19jb3JydXB0X2RzYV9rZXlnZW4odm9pZCkKLSt7Ci0rfQot KwotIHN0YXRpYyBpbnQgZmlwc19jaGVja19kc2EoRFNBICpkc2EpCi0gewotICAgICBFVlBfUEtF WSAqcGs7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZW5naW5lL2VuZ19hbGwuYy5j b21wYXQgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VuZ2luZS9lbmdfYWxsLmMKLS0tLSBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vZW5naW5lL2VuZ19hbGwuYy5jb21wYXQJMjAxNS0wNC0wOSAxODoyMTox MS42ODg5Nzc4ODEgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZW5naW5lL2VuZ19h bGwuYwkyMDE1LTA0LTA5IDE4OjIxOjA5LjE1OTkxOTQ1OSArMDIwMAotQEAgLTYzLDYgKzYzLDEx IEBACi0gIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSAjZW5kaWYKLSAKLSsvKiBqdXN0IGJh Y2t3YXJkcyBjb21wYXRpYmlsaXR5IHN5bWJvbCAtIG5vLW9wICovCi0rdm9pZCBFTkdJTkVfbG9h ZF9hZXNuaSh2b2lkKQotK3sKLSt9Ci0rCi0gdm9pZCBFTkdJTkVfbG9hZF9idWlsdGluX2VuZ2lu ZXModm9pZCkKLSB7Ci0gICAgIC8qIFNvbWUgRU5HSU5FcyBuZWVkIHRoaXMgKi8KLWRpZmYgLXVw IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHMuYy5jb21wYXQgb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL2ZpcHMvZmlwcy5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwcy5j LmNvbXBhdAkyMDE1LTA0LTA5IDE4OjIxOjExLjY4OTk3NzkwNCArMDIwMAotKysrIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9maXBzL2ZpcHMuYwkyMDE1LTA0LTA5IDE4OjIxOjA5LjkyNTkzNzE1NCAr MDIwMAotQEAgLTExMyw2ICsxMTMsMTIgQEAgaW50IEZJUFNfbW9kdWxlX21vZGUodm9pZCkKLSAg ICAgcmV0dXJuIHJldDsKLSB9Ci0gCi0rLyoganVzdCBhIGNvbXBhdCBzeW1ib2wgLSByZXR1cm4g TlVMTCAqLwotK2NvbnN0IHZvaWQgKkZJUFNfcmFuZF9jaGVjayh2b2lkKQotK3sKLSsgICAgcmV0 dXJuIE5VTEw7Ci0rfQotKwotIGludCBGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCh2b2lkKQotIHsKLSAg ICAgaW50IHJldCA9IDA7CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMmEtZGVmYXVsdHMucGF0 Y2ggYi9vcGVuc3NsLTEuMC4yYS1kZWZhdWx0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMzE1YTliMC4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4yYS1kZWZhdWx0cy5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4w LjJhL2FwcHMvb3BlbnNzbC5jbmYuZGVmYXVsdHMgb3BlbnNzbC0xLjAuMmEvYXBwcy9vcGVuc3Ns LmNuZgotLS0tIG9wZW5zc2wtMS4wLjJhL2FwcHMvb3BlbnNzbC5jbmYuZGVmYXVsdHMJMjAxNS0w My0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9hcHBzL29w ZW5zc2wuY25mCTIwMTUtMDQtMjAgMTQ6Mzc6MTAuMTEyMjcxODUwICswMjAwCi1AQCAtNzIsNyAr NzIsNyBAQCBjZXJ0X29wdCAJPSBjYV9kZWZhdWx0CQkjIENlcnRpZmljYXRlIGZpCi0gCi0gZGVm YXVsdF9kYXlzCT0gMzY1CQkJIyBob3cgbG9uZyB0byBjZXJ0aWZ5IGZvcgotIGRlZmF1bHRfY3Js X2RheXM9IDMwCQkJIyBob3cgbG9uZyBiZWZvcmUgbmV4dCBDUkwKLS1kZWZhdWx0X21kCT0gZGVm YXVsdAkJIyB1c2UgcHVibGljIGtleSBkZWZhdWx0IE1ECi0rZGVmYXVsdF9tZAk9IHNoYTI1NgkJ IyB1c2UgU0hBLTI1NiBieSBkZWZhdWx0Ci0gcHJlc2VydmUJPSBubwkJCSMga2VlcCBwYXNzZWQg RE4gb3JkZXJpbmcKLSAKLSAjIEEgZmV3IGRpZmZlcmVuY2Ugd2F5IG9mIHNwZWNpZnlpbmcgaG93 IHNpbWlsYXIgdGhlIHJlcXVlc3Qgc2hvdWxkIGxvb2sKLUBAIC0xMDQsNiArMTA0LDcgQEAgZW1h aWxBZGRyZXNzCQk9IG9wdGlvbmFsCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSBbIHJlcSBdCi0gZGVmYXVsdF9i aXRzCQk9IDIwNDgKLStkZWZhdWx0X21kCQk9IHNoYTI1NgotIGRlZmF1bHRfa2V5ZmlsZSAJPSBw cml2a2V5LnBlbQotIGRpc3Rpbmd1aXNoZWRfbmFtZQk9IHJlcV9kaXN0aW5ndWlzaGVkX25hbWUK LSBhdHRyaWJ1dGVzCQk9IHJlcV9hdHRyaWJ1dGVzCi1AQCAtMTI2LDE3ICsxMjcsMTggQEAgc3Ry aW5nX21hc2sgPSB1dGY4b25seQotIAotIFsgcmVxX2Rpc3Rpbmd1aXNoZWRfbmFtZSBdCi0gY291 bnRyeU5hbWUJCQk9IENvdW50cnkgTmFtZSAoMiBsZXR0ZXIgY29kZSkKLS1jb3VudHJ5TmFtZV9k ZWZhdWx0CQk9IEFVCi0rY291bnRyeU5hbWVfZGVmYXVsdAkJPSBYWAotIGNvdW50cnlOYW1lX21p bgkJCT0gMgotIGNvdW50cnlOYW1lX21heAkJCT0gMgotIAotIHN0YXRlT3JQcm92aW5jZU5hbWUJ CT0gU3RhdGUgb3IgUHJvdmluY2UgTmFtZSAoZnVsbCBuYW1lKQotLXN0YXRlT3JQcm92aW5jZU5h bWVfZGVmYXVsdAk9IFNvbWUtU3RhdGUKLSsjc3RhdGVPclByb3ZpbmNlTmFtZV9kZWZhdWx0CT0g RGVmYXVsdCBQcm92aW5jZQotIAotIGxvY2FsaXR5TmFtZQkJCT0gTG9jYWxpdHkgTmFtZSAoZWcs IGNpdHkpCi0rbG9jYWxpdHlOYW1lX2RlZmF1bHQJCT0gRGVmYXVsdCBDaXR5Ci0gCi0gMC5vcmdh bml6YXRpb25OYW1lCQk9IE9yZ2FuaXphdGlvbiBOYW1lIChlZywgY29tcGFueSkKLS0wLm9yZ2Fu aXphdGlvbk5hbWVfZGVmYXVsdAk9IEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZAotKzAub3JnYW5p emF0aW9uTmFtZV9kZWZhdWx0CT0gRGVmYXVsdCBDb21wYW55IEx0ZAotIAotICMgd2UgY2FuIGRv IHRoaXMgYnV0IGl0IGlzIG5vdCBuZWVkZWQgbm9ybWFsbHkgOi0pCi0gIzEub3JnYW5pemF0aW9u TmFtZQkJPSBTZWNvbmQgT3JnYW5pemF0aW9uIE5hbWUgKGVnLCBjb21wYW55KQotQEAgLTE0NSw3 ICsxNDcsNyBAQCBsb2NhbGl0eU5hbWUJCQk9IExvY2FsaXR5IE5hbWUgKGVnLCBjaXR5Ci0gb3Jn YW5pemF0aW9uYWxVbml0TmFtZQkJPSBPcmdhbml6YXRpb25hbCBVbml0IE5hbWUgKGVnLCBzZWN0 aW9uKQotICNvcmdhbml6YXRpb25hbFVuaXROYW1lX2RlZmF1bHQJPQotIAotLWNvbW1vbk5hbWUJ CQk9IENvbW1vbiBOYW1lIChlLmcuIHNlcnZlciBGUUROIG9yIFlPVVIgbmFtZSkKLStjb21tb25O YW1lCQkJPSBDb21tb24gTmFtZSAoZWcsIHlvdXIgbmFtZSBvciB5b3VyIHNlcnZlclwncyBob3N0 bmFtZSkKLSBjb21tb25OYW1lX21heAkJCT0gNjQKLSAKLSBlbWFpbEFkZHJlc3MJCQk9IEVtYWls IEFkZHJlc3MKLUBAIC0zMzksNyArMzQxLDcgQEAgc2lnbmVyX2tleQk9ICRkaXIvcHJpdmF0ZS90 c2FrZXkucGVtICMgVAotIGRlZmF1bHRfcG9saWN5CT0gdHNhX3BvbGljeTEJCSMgUG9saWN5IGlm IHJlcXVlc3QgZGlkIG5vdCBzcGVjaWZ5IGl0Ci0gCQkJCQkjIChvcHRpb25hbCkKLSBvdGhlcl9w b2xpY2llcwk9IHRzYV9wb2xpY3kyLCB0c2FfcG9saWN5MwkjIGFjY2VwdGFibGUgcG9saWNpZXMg KG9wdGlvbmFsKQotLWRpZ2VzdHMJCT0gbWQ1LCBzaGExCQkjIEFjY2VwdGFibGUgbWVzc2FnZSBk aWdlc3RzIChtYW5kYXRvcnkpCi0rZGlnZXN0cwkJPSBzaGExLCBzaGEyNTYsIHNoYTM4NCwgc2hh NTEyCSMgQWNjZXB0YWJsZSBtZXNzYWdlIGRpZ2VzdHMgKG1hbmRhdG9yeSkKLSBhY2N1cmFjeQk9 IHNlY3M6MSwgbWlsbGlzZWNzOjUwMCwgbWljcm9zZWNzOjEwMAkjIChvcHRpb25hbCkKLSBjbG9j a19wcmVjaXNpb25fZGlnaXRzICA9IDAJIyBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIGRvdC4gKG9w dGlvbmFsKQotIG9yZGVyaW5nCQk9IHllcwkjIElzIG9yZGVyaW5nIGRlZmluZWQgZm9yIHRpbWVz dGFtcHM/CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMmEtZHRsczEtYWJpLnBhdGNoIGIvb3Bl bnNzbC0xLjAuMmEtZHRsczEtYWJpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBhNmE3OWQ3Li4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjJhLWR0bHMxLWFiaS5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL3Nz bC9kdGxzMS5oLmR0bHMxLWFiaSBvcGVuc3NsLTEuMC4yYS9zc2wvZHRsczEuaAotLS0tIG9wZW5z c2wtMS4wLjJhL3NzbC9kdGxzMS5oLmR0bHMxLWFiaQkyMDE1LTA0LTIxIDEwOjQ5OjU3Ljk4NDc4 MTE0MyArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL3NzbC9kdGxzMS5oCTIwMTUtMDQtMjEgMTY6 NDE6MzcuODM1MTY0MjY0ICswMjAwCi1AQCAtMjE0LDkgKzIxNCw2IEBAIHR5cGVkZWYgc3RydWN0 IGR0bHMxX3N0YXRlX3N0IHsKLSAgICAgICogbG9zcy4KLSAgICAgICovCi0gICAgIHJlY29yZF9w cXVldWUgYnVmZmVyZWRfYXBwX2RhdGE7Ci0tICAgIC8qIElzIHNldCB3aGVuIGxpc3RlbmluZyBm b3IgbmV3IGNvbm5lY3Rpb25zIHdpdGggZHRsczFfbGlzdGVuKCkgKi8KLS0gICAgdW5zaWduZWQg aW50IGxpc3RlbjsKLS0gICAgdW5zaWduZWQgaW50IGxpbmtfbXR1OyAgICAgIC8qIG1heCBvbi10 aGUtd2lyZSBEVExTIHBhY2tldCBzaXplICovCi0gICAgIHVuc2lnbmVkIGludCBtdHU7ICAgICAg ICAgICAvKiBtYXggRFRMUyBwYWNrZXQgc2l6ZSAqLwotICAgICBzdHJ1Y3QgaG1faGVhZGVyX3N0 IHdfbXNnX2hkcjsKLSAgICAgc3RydWN0IGhtX2hlYWRlcl9zdCByX21zZ19oZHI7Ci1AQCAtMjQx LDYgKzIzOCw5IEBAIHR5cGVkZWYgc3RydWN0IGR0bHMxX3N0YXRlX3N0IHsKLSAgICAgICogQ2xl YXJlZCBhZnRlciB0aGUgbWVzc2FnZSBoYXMgYmVlbiBwcm9jZXNzZWQuCi0gICAgICAqLwotICAg ICB1bnNpZ25lZCBpbnQgY2hhbmdlX2NpcGhlcl9zcGVjX29rOwotKyAgICAvKiBJcyBzZXQgd2hl biBsaXN0ZW5pbmcgZm9yIG5ldyBjb25uZWN0aW9ucyB3aXRoIGR0bHMxX2xpc3RlbigpICovCi0r ICAgIHVuc2lnbmVkIGludCBsaXN0ZW47Ci0rICAgIHVuc2lnbmVkIGludCBsaW5rX210dTsgICAg ICAvKiBtYXggb24tdGhlLXdpcmUgRFRMUyBwYWNrZXQgc2l6ZSAqLwotICMgIGlmbmRlZiBPUEVO U1NMX05PX1NDVFAKLSAgICAgLyogdXNlZCB3aGVuIFNTTF9TVF9YWF9GTFVTSCBpcyBlbnRlcmVk ICovCi0gICAgIGludCBuZXh0X3N0YXRlOwoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJhLWVu di16bGliLnBhdGNoIGIvb3BlbnNzbC0xLjAuMmEtZW52LXpsaWIucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDMyODA3OWIuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMmEt ZW52LXpsaWIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1kaWZmIC11cCBv cGVuc3NsLTEuMC4yYS9kb2Mvc3NsL1NTTF9DT01QX2FkZF9jb21wcmVzc2lvbl9tZXRob2QucG9k LmVudi16bGliIG9wZW5zc2wtMS4wLjJhL2RvYy9zc2wvU1NMX0NPTVBfYWRkX2NvbXByZXNzaW9u X21ldGhvZC5wb2QKLS0tLSBvcGVuc3NsLTEuMC4yYS9kb2Mvc3NsL1NTTF9DT01QX2FkZF9jb21w cmVzc2lvbl9tZXRob2QucG9kLmVudi16bGliCTIwMTUtMDQtMDkgMTg6MTc6MjAuNTA5NjM3NTk3 ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvZG9jL3NzbC9TU0xfQ09NUF9hZGRfY29tcHJlc3Np b25fbWV0aG9kLnBvZAkyMDE1LTA0LTA5IDE4OjE3OjE0Ljc2NzUwNDk1MyArMDIwMAotQEAgLTQ3 LDYgKzQ3LDEzIEBAIE9uY2UgdGhlIGlkZW50aXRpZXMgb2YgdGhlIGNvbXByZXNzaW9uIG0KLSBi ZWVuIHN0YW5kYXJkaXplZCwgdGhlIGNvbXByZXNzaW9uIEFQSSB3aWxsIG1vc3QgbGlrZWx5IGJl IGNoYW5nZWQuIFVzaW5nCi0gaXQgaW4gdGhlIGN1cnJlbnQgc3RhdGUgaXMgbm90IHJlY29tbWVu ZGVkLgotIAotK0l0IGlzIGFsc28gbm90IHJlY29tbWVuZGVkIHRvIHVzZSBjb21wcmVzc2lvbiBp ZiBkYXRhIHRyYW5zZmVyZWQgY29udGFpbgotK3VudHJ1c3RlZCBwYXJ0cyB0aGF0IGNhbiBiZSBt YW5pcHVsYXRlZCBieSBhbiBhdHRhY2tlciBhcyBoZSBjb3VsZCB0aGVuCi0rZ2V0IGluZm9ybWF0 aW9uIGFib3V0IHRoZSBlbmNyeXB0ZWQgZGF0YS4gU2VlIHRoZSBDUklNRSBhdHRhY2suIEZvcgot K3RoYXQgcmVhc29uIHRoZSBkZWZhdWx0IGxvYWRpbmcgb2YgdGhlIHpsaWIgY29tcHJlc3Npb24g bWV0aG9kIGlzCi0rZGlzYWJsZWQgYW5kIGVuYWJsZWQgb25seSBpZiB0aGUgZW52aXJvbm1lbnQg dmFyaWFibGUgQjxPUEVOU1NMX0RFRkFVTFRfWkxJQj4KLStpcyBwcmVzZW50IGR1cmluZyB0aGUg bGlicmFyeSBpbml0aWFsaXphdGlvbi4KLSsKLSA9aGVhZDEgUkVUVVJOIFZBTFVFUwotIAotIFNT TF9DT01QX2FkZF9jb21wcmVzc2lvbl9tZXRob2QoKSBtYXkgcmV0dXJuIHRoZSBmb2xsb3dpbmcg dmFsdWVzOgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvc3NsL3NzbF9jaXBoLmMuZW52LXpsaWIg b3BlbnNzbC0xLjAuMmEvc3NsL3NzbF9jaXBoLmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9zc2wvc3Ns X2NpcGguYy5lbnYtemxpYgkyMDE1LTA0LTA5IDE4OjE3OjIwLjUxMDYzNzYyMCArMDIwMAotKysr IG9wZW5zc2wtMS4wLjJhL3NzbC9zc2xfY2lwaC5jCTIwMTUtMDQtMDkgMTg6MTc6MjAuMjY0NjMx OTM3ICswMjAwCi1AQCAtMTQwLDYgKzE0MCw4IEBACi0gICogT1RIRVJXSVNFLgotICAqLwotIAot Ky8qIGZvciBzZWN1cmVfZ2V0ZW52ICovCi0rI2RlZmluZSBfR05VX1NPVVJDRQotICNpbmNsdWRl IDxzdGRpby5oPgotICNpbmNsdWRlIDxvcGVuc3NsL29iamVjdHMuaD4KLSAjaWZuZGVmIE9QRU5T U0xfTk9fQ09NUAotQEAgLTQ1MCw3ICs0NTIsOCBAQCBzdGF0aWMgdm9pZCBsb2FkX2J1aWx0aW5f Y29tcHJlc3Npb25zKHZvCi0gCi0gICAgICAgICAgICAgTWVtQ2hlY2tfb2ZmKCk7Ci0gICAgICAg ICAgICAgc3NsX2NvbXBfbWV0aG9kcyA9IHNrX1NTTF9DT01QX25ldyhza19jb21wX2NtcCk7Ci0t ICAgICAgICAgICAgaWYgKHNzbF9jb21wX21ldGhvZHMgIT0gTlVMTCkgewotKyAgICAgICAgICAg IGlmIChzc2xfY29tcF9tZXRob2RzICE9IE5VTEwKLSsgICAgICAgICAgICAgICAgJiYgc2VjdXJl X2dldGVudigiT1BFTlNTTF9ERUZBVUxUX1pMSUIiKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAg ICAgIGNvbXAgPSAoU1NMX0NPTVAgKilPUEVOU1NMX21hbGxvYyhzaXplb2YoU1NMX0NPTVApKTsK LSAgICAgICAgICAgICAgICAgaWYgKGNvbXAgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAg ICAgY29tcC0+bWV0aG9kID0gQ09NUF96bGliKCk7CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAu MmEtZmlwcy1jdG9yLnBhdGNoIGIvb3BlbnNzbC0xLjAuMmEtZmlwcy1jdG9yLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWY2NTJjLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wt MS4wLjJhLWZpcHMtY3Rvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3NCArMCwwIEBACi1k aWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzLmMuZmlwcy1jdG9yIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHMuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9m aXBzL2ZpcHMuYy5maXBzLWN0b3IJMjAxNS0wNC0yMSAxNzo0MjoxOC43MDI3NjU4NTYgKzAyMDAK LSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzLmMJMjAxNS0wNC0yMSAxNzo0Mjox OC43NDI3NjY3OTQgKzAyMDAKLUBAIC02MCw2ICs2MCw4IEBACi0gI2luY2x1ZGUgPGRsZmNuLmg+ Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDx1 bmlzdGQuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSAiZmlwc19sb2NsLmgiCi0g Ci0gI2lmZGVmIE9QRU5TU0xfRklQUwotQEAgLTIwMSw3ICsyMDMsOSBAQCBzdGF0aWMgY2hhciAq YmluMmhleCh2b2lkICpidWYsIHNpemVfdCBsCi0gfQotIAotICMgZGVmaW5lIEhNQUNfUFJFRklY ICIuIgotLSMgZGVmaW5lIEhNQUNfU1VGRklYICIuaG1hYyIKLSsjIGlmbmRlZiBITUFDX1NVRkZJ WAotKyMgIGRlZmluZSBITUFDX1NVRkZJWCAiLmhtYWMiCi0rIyBlbmRpZgotICMgZGVmaW5lIFJF QURfQlVGRkVSX0xFTkdUSCAxNjM4NAotIAotIHN0YXRpYyBjaGFyICptYWtlX2htYWNfcGF0aChj b25zdCBjaGFyICpvcmlncGF0aCkKLUBAIC0yNzksMjAgKzI4MywxNCBAQCBzdGF0aWMgaW50IGNv bXB1dGVfZmlsZV9obWFjKGNvbnN0IGNoYXIKLSAgICAgcmV0dXJuIHJ2OwotIH0KLSAKLS1zdGF0 aWMgaW50IEZJUFNDSEVDS192ZXJpZnkoY29uc3QgY2hhciAqbGlibmFtZSwgY29uc3QgY2hhciAq c3ltYm9sbmFtZSkKLStzdGF0aWMgaW50IEZJUFNDSEVDS192ZXJpZnkoY29uc3QgY2hhciAqcGF0 aCkKLSB7Ci0tICAgIGNoYXIgcGF0aFtQQVRIX01BWCArIDFdOwotLSAgICBpbnQgcnY7Ci0rICAg IGludCBydiA9IDA7Ci0gICAgIEZJTEUgKmhmOwotICAgICBjaGFyICpobWFjcGF0aCwgKnA7Ci0g ICAgIGNoYXIgKmhtYWMgPSBOVUxMOwotICAgICBzaXplX3QgbjsKLSAKLS0gICAgcnYgPSBnZXRf bGlicmFyeV9wYXRoKGxpYm5hbWUsIHN5bWJvbG5hbWUsIHBhdGgsIHNpemVvZihwYXRoKSk7Ci0t Ci0tICAgIGlmIChydiA8IDApCi0tICAgICAgICByZXR1cm4gMDsKLS0KLSAgICAgaG1hY3BhdGgg PSBtYWtlX2htYWNfcGF0aChwYXRoKTsKLSAgICAgaWYgKGhtYWNwYXRoID09IE5VTEwpCi0gICAg ICAgICByZXR1cm4gMDsKLUBAIC0zNDMsNiArMzQxLDUxIEBAIHN0YXRpYyBpbnQgRklQU0NIRUNL X3ZlcmlmeShjb25zdCBjaGFyICoKLSAgICAgcmV0dXJuIDE7Ci0gfQotIAotK3N0YXRpYyBpbnQg dmVyaWZ5X2NoZWNrc3Vtcyh2b2lkKQotK3sKLSsgICAgaW50IHJ2OwotKyAgICBjaGFyIHBhdGhb UEFUSF9NQVggKyAxXTsKLSsgICAgY2hhciAqcDsKLSsKLSsgICAgLyogd2UgbmVlZCB0byBhdm9p ZCBkbG9wZW5pbmcgbGlic3NsLCBhc3N1bWUgYm90aCBsaWJjcnlwdG8gYW5kIGxpYnNzbAotKyAg ICAgICBhcmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5ICovCi0rCi0rICAgIHJ2ID0gZ2V0X2xpYnJh cnlfcGF0aCgibGliY3J5cHRvLnNvLiIgU0hMSUJfVkVSU0lPTl9OVU1CRVIsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAiRklQU19tb2RlX3NldCIsIHBhdGgsIHNpemVvZihwYXRoKSk7Ci0r ICAgIGlmIChydiA8IDApCi0rICAgICAgICByZXR1cm4gMDsKLSsKLSsgICAgcnYgPSBGSVBTQ0hF Q0tfdmVyaWZ5KHBhdGgpOwotKyAgICBpZiAoIXJ2KQotKyAgICAgICAgcmV0dXJuIDA7Ci0rCi0r ICAgIC8qIHJlcGxhY2UgbGliY3J5cHRvIHdpdGggbGlic3NsICovCi0rICAgIHdoaWxlICgocCA9 IHN0cnN0cihwYXRoLCAibGliY3J5cHRvLnNvIikpICE9IE5VTEwpIHsKLSsgICAgICAgIHAgPSBz dHBjcHkocCwgImxpYnNzbCIpOwotKyAgICAgICAgbWVtbW92ZShwLCBwICsgMywgc3RybGVuKHAg KyAyKSk7Ci0rICAgIH0KLSsKLSsgICAgcnYgPSBGSVBTQ0hFQ0tfdmVyaWZ5KHBhdGgpOwotKyAg ICBpZiAoIXJ2KQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLSsj IGlmbmRlZiBGSVBTX01PRFVMRV9QQVRICi0rIyAgZGVmaW5lIEZJUFNfTU9EVUxFX1BBVEggIi9l dGMvc3lzdGVtLWZpcHMiCi0rIyBlbmRpZgotKwotK2ludCBGSVBTX21vZHVsZV9pbnN0YWxsZWQo dm9pZCkKLSt7Ci0rICAgIGludCBydjsKLSsgICAgcnYgPSBhY2Nlc3MoRklQU19NT0RVTEVfUEFU SCwgRl9PSyk7Ci0rICAgIGlmIChydiA8IDAgJiYgZXJybm8gIT0gRU5PRU5UKQotKyAgICAgICAg cnYgPSAwOwotKwotKyAgICAvKiBJbnN0YWxsZWQgPT0gdHJ1ZSAqLwotKyAgICByZXR1cm4gIXJ2 OwotK30KLSsKLSBpbnQgRklQU19tb2R1bGVfbW9kZV9zZXQoaW50IG9ub2ZmLCBjb25zdCBjaGFy ICphdXRoKQotIHsKLSAgICAgaW50IHJldCA9IDA7Ci1AQCAtMzgwLDE3ICs0MjMsNyBAQCBpbnQg RklQU19tb2R1bGVfbW9kZV9zZXQoaW50IG9ub2ZmLCBjb25zCi0gICAgICAgICB9Ci0gIyBlbmRp ZgotIAotLSAgICAgICAgaWYgKCFGSVBTQ0hFQ0tfdmVyaWZ5Ci0tICAgICAgICAgICAgKCJsaWJj cnlwdG8uc28uIiBTSExJQl9WRVJTSU9OX05VTUJFUiwgIkZJUFNfbW9kZV9zZXQiKSkgewotLSAg ICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfTU9EVUxFX01PREVfU0VULAotLSAgICAgICAg ICAgICAgICAgICAgRklQU19SX0ZJTkdFUlBSSU5UX0RPRVNfTk9UX01BVENIKTsKLS0gICAgICAg ICAgICBmaXBzX3NlbGZ0ZXN0X2ZhaWwgPSAxOwotLSAgICAgICAgICAgIHJldCA9IDA7Ci0tICAg ICAgICAgICAgZ290byBlbmQ7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBpZiAoIUZJUFNDSEVD S192ZXJpZnkKLS0gICAgICAgICAgICAoImxpYnNzbC5zby4iIFNITElCX1ZFUlNJT05fTlVNQkVS LCAiU1NMX0NUWF9uZXciKSkgewotKyAgICAgICAgaWYgKCF2ZXJpZnlfY2hlY2tzdW1zKCkpIHsK LSAgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX01PRFVMRV9NT0RFX1NFVCwKLSAgICAg ICAgICAgICAgICAgICAgIEZJUFNfUl9GSU5HRVJQUklOVF9ET0VTX05PVF9NQVRDSCk7Ci0gICAg ICAgICAgICAgZmlwc19zZWxmdGVzdF9mYWlsID0gMTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9maXBzL2ZpcHMuaC5maXBzLWN0b3Igb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMv Zmlwcy5oCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwcy5oLmZpcHMtY3Rvcgky MDE1LTA0LTIxIDE3OjQyOjE4LjczOTc2NjcyNCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9maXBzL2ZpcHMuaAkyMDE1LTA0LTIxIDE3OjQyOjE4Ljc0Mzc2NjgxOCArMDIwMAotQEAg LTc0LDYgKzc0LDcgQEAgZXh0ZXJuICJDIiB7Ci0gCi0gICAgIGludCBGSVBTX21vZHVsZV9tb2Rl X3NldChpbnQgb25vZmYsIGNvbnN0IGNoYXIgKmF1dGgpOwotICAgICBpbnQgRklQU19tb2R1bGVf bW9kZSh2b2lkKTsKLSsgICAgaW50IEZJUFNfbW9kdWxlX2luc3RhbGxlZCh2b2lkKTsKLSAgICAg Y29uc3Qgdm9pZCAqRklQU19yYW5kX2NoZWNrKHZvaWQpOwotICAgICBpbnQgRklQU19zZWxmdGVz dCh2b2lkKTsKLSAgICAgaW50IEZJUFNfc2VsZnRlc3RfZmFpbGVkKHZvaWQpOwotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMmEvY3J5cHRvL29faW5pdC5jLmZpcHMtY3RvciBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vb19pbml0LmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vb19pbml0LmMuZmlwcy1j dG9yCTIwMTUtMDQtMjEgMTc6NDI6MTguNzMyNzY2NTU5ICswMjAwCi0rKysgb3BlbnNzbC0xLjAu MmEvY3J5cHRvL29faW5pdC5jCTIwMTUtMDQtMjEgMTc6NDU6MDIuNjYyNjEzMTczICswMjAwCi1A QCAtNzQsNiArNzQsOSBAQCBzdGF0aWMgdm9pZCBpbml0X2ZpcHNfbW9kZSh2b2lkKQotICAgICBj aGFyIGJ1ZlsyXSA9ICIwIjsKLSAgICAgaW50IGZkOwotIAotKyAgICAvKiBFbnN1cmUgdGhlIHNl bGZ0ZXN0cyBhbHdheXMgcnVuICovCi0rICAgIEZJUFNfbW9kZV9zZXQoMSk7Ci0rCi0gICAgIGlm IChzZWN1cmVfZ2V0ZW52KCJPUEVOU1NMX0ZPUkNFX0ZJUFNfTU9ERSIpICE9IE5VTEwpIHsKLSAg ICAgICAgIGJ1ZlswXSA9ICcxJzsKLSAgICAgfSBlbHNlIGlmICgoZmQgPSBvcGVuKEZJUFNfTU9E RV9TV0lUQ0hfRklMRSwgT19SRE9OTFkpKSA+PSAwKSB7Ci1AQCAtODUsOCArODgsMTIgQEAgc3Rh dGljIHZvaWQgaW5pdF9maXBzX21vZGUodm9pZCkKLSAgICAgICogb3RoZXJ3aXNlLi4KLSAgICAg ICovCi0gCi0tICAgIGlmIChidWZbMF0gPT0gJzEnKSB7Ci0tICAgICAgICBGSVBTX21vZGVfc2V0 KDEpOwotKyAgICBpZiAoYnVmWzBdICE9ICcxJykgewotKyAgICAgICAgLyogZHJvcCBkb3duIHRv IG5vbi1GSVBTIG1vZGUgaWYgaXQgaXMgbm90IHJlcXVlc3RlZCAqLwotKyAgICAgICAgRklQU19t b2RlX3NldCgwKTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAgIC8qIGFib3J0IGlmIHNlbGZ0ZXN0 IGZhaWxlZCAqLwotKyAgICAgICAgRklQU19zZWxmdGVzdF9jaGVjaygpOwotICAgICB9Ci0gfQot ICNlbmRpZgotQEAgLTk2LDEzICsxMDMsMTYgQEAgc3RhdGljIHZvaWQgaW5pdF9maXBzX21vZGUo dm9pZCkKLSAgKiBzZXRzIEZJUFMgY2FsbGJhY2tzCi0gICovCi0gCi0tdm9pZCBPUEVOU1NMX2lu aXRfbGlicmFyeSh2b2lkKQotK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKGNvbnN0cnVjdG9yKSkgT1BF TlNTTF9pbml0X2xpYnJhcnkodm9pZCkKLSB7Ci0gICAgIHN0YXRpYyBpbnQgZG9uZSA9IDA7Ci0g ICAgIGlmIChkb25lKQotICAgICAgICAgcmV0dXJuOwotICAgICBkb25lID0gMTsKLSAjaWZkZWYg T1BFTlNTTF9GSVBTCi0rICAgIGlmICghRklQU19tb2R1bGVfaW5zdGFsbGVkKCkpIHsKLSsgICAg ICAgIHJldHVybjsKLSsgICAgfQotICAgICBSQU5EX2luaXRfZmlwcygpOwotICAgICBpbml0X2Zp cHNfbW9kZSgpOwotICAgICBpZiAoIUZJUFNfbW9kZSgpKSB7CgpkaWZmIC0tZ2l0IGEvb3BlbnNz bC0xLjAuMmEtZmlwcy1lYy5wYXRjaCBiL29wZW5zc2wtMS4wLjJhLWZpcHMtZWMucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MmY0YTEuLjAwMDAwMDAKLS0tIGEvb3BlbnNz bC0xLjAuMmEtZmlwcy1lYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5MjkgKzAsMCBAQAot ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjZGgvZWNkaHRlc3QuYy5maXBzLWVjIG9w ZW5zc2wtMS4wLjJhL2NyeXB0by9lY2RoL2VjZGh0ZXN0LmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vZWNkaC9lY2RodGVzdC5jLmZpcHMtZWMJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAw MDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZWNkaC9lY2RodGVzdC5jCTIwMTUt MDQtMjIgMTk6MDA6MTkuNzIxODg0NTEyICswMjAwCi1AQCAtNTAxLDExICs1MDEsMTMgQEAgaW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAgICAgIGdvdG8gZXJyOwotIAotICAg ICAvKiBOSVNUIFBSSU1FIENVUlZFUyBURVNUUyAqLwotKyMgaWYgMAotICAgICBpZiAoIXRlc3Rf ZWNkaF9jdXJ2ZQotICAgICAgICAgKE5JRF9YOV82Ml9wcmltZTE5MnYxLCAiTklTVCBQcmltZS1D dXJ2ZSBQLTE5MiIsIGN0eCwgb3V0KSkKLSAgICAgICAgIGdvdG8gZXJyOwotICAgICBpZiAoIXRl c3RfZWNkaF9jdXJ2ZShOSURfc2VjcDIyNHIxLCAiTklTVCBQcmltZS1DdXJ2ZSBQLTIyNCIsIGN0 eCwgb3V0KSkKLSAgICAgICAgIGdvdG8gZXJyOwotKyMgZW5kaWYKLSAgICAgaWYgKCF0ZXN0X2Vj ZGhfY3VydmUKLSAgICAgICAgIChOSURfWDlfNjJfcHJpbWUyNTZ2MSwgIk5JU1QgUHJpbWUtQ3Vy dmUgUC0yNTYiLCBjdHgsIG91dCkpCi0gICAgICAgICBnb3RvIGVycjsKLUBAIC01MzYsMTMgKzUz OCwxNCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgICBpZiAoIXRlc3Rf ZWNkaF9jdXJ2ZShOSURfc2VjdDU3MXIxLCAiTklTVCBCaW5hcnktQ3VydmUgQi01NzEiLCBjdHgs IG91dCkpCi0gICAgICAgICBnb3RvIGVycjsKLSAjIGVuZGlmCi0rIyBpZiAwCi0gICAgIGlmICgh dGVzdF9lY2RoX2thdChvdXQsICJCcmFpbnBvb2wgUHJpbWUtQ3VydmUgYnJhaW5wb29sUDI1NnIx IiwgMjU2KSkKLSAgICAgICAgIGdvdG8gZXJyOwotICAgICBpZiAoIXRlc3RfZWNkaF9rYXQob3V0 LCAiQnJhaW5wb29sIFByaW1lLUN1cnZlIGJyYWlucG9vbFAzODRyMSIsIDM4NCkpCi0gICAgICAg ICBnb3RvIGVycjsKLSAgICAgaWYgKCF0ZXN0X2VjZGhfa2F0KG91dCwgIkJyYWlucG9vbCBQcmlt ZS1DdXJ2ZSBicmFpbnBvb2xQNTEycjEiLCA1MTIpKQotICAgICAgICAgZ290byBlcnI7Ci0tCi0r IyBlbmRpZgotICAgICByZXQgPSAwOwotIAotICBlcnI6Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vZWNkaC9lY2hfbGliLmMuZmlwcy1lYyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZWNk aC9lY2hfbGliLmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZWNkaC9lY2hfbGliLmMuZmlw cy1lYwkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9lY2RoL2VjaF9saWIuYwkyMDE1LTA0LTIyIDE5OjAwOjE5LjcyMTg4NDUxMiAr MDIwMAotQEAgLTkzLDE0ICs5Myw3IEBAIHZvaWQgRUNESF9zZXRfZGVmYXVsdF9tZXRob2QoY29u c3QgRUNESF8KLSBjb25zdCBFQ0RIX01FVEhPRCAqRUNESF9nZXRfZGVmYXVsdF9tZXRob2Qodm9p ZCkKLSB7Ci0gICAgIGlmICghZGVmYXVsdF9FQ0RIX21ldGhvZCkgewotLSNpZmRlZiBPUEVOU1NM X0ZJUFMKLS0gICAgICAgIGlmIChGSVBTX21vZGUoKSkKLS0gICAgICAgICAgICByZXR1cm4gRklQ U19lY2RoX29wZW5zc2woKTsKLS0gICAgICAgIGVsc2UKLS0gICAgICAgICAgICByZXR1cm4gRUNE SF9PcGVuU1NMKCk7Ci0tI2Vsc2UKLSAgICAgICAgIGRlZmF1bHRfRUNESF9tZXRob2QgPSBFQ0RI X09wZW5TU0woKTsKLS0jZW5kaWYKLSAgICAgfQotICAgICByZXR1cm4gZGVmYXVsdF9FQ0RIX21l dGhvZDsKLSB9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZWNkaC9lY2hfb3NzbC5j LmZpcHMtZWMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjZGgvZWNoX29zc2wuYwotLS0tIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9lY2RoL2VjaF9vc3NsLmMuZmlwcy1lYwkyMDE1LTAzLTE5IDE0OjMw OjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9lY2RoL2VjaF9v c3NsLmMJMjAxNS0wNC0yMiAxOTowMDoxOS43MjI4ODQ1MzYgKzAyMDAKLUBAIC03OCw2ICs3OCwx MCBAQAotICNpbmNsdWRlIDxvcGVuc3NsL29ial9tYWMuaD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9i bi5oPgotIAotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5o PgotKyNlbmRpZgotKwotIHN0YXRpYyBpbnQgZWNkaF9jb21wdXRlX2tleSh2b2lkICpvdXQsIHNp emVfdCBsZW4sIGNvbnN0IEVDX1BPSU5UICpwdWJfa2V5LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFQ19LRVkgKmVjZGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg KigqS0RGKSAoY29uc3Qgdm9pZCAqaW4sIHNpemVfdCBpbmxlbiwKLUBAIC05MCw3ICs5NCw3IEBA IHN0YXRpYyBFQ0RIX01FVEhPRCBvcGVuc3NsX2VjZGhfbWV0aCA9IHsKLSAgICAgTlVMTCwgICAg ICAgICAgICAgICAgICAgICAgIC8qIGluaXQgKi8KLSAgICAgTlVMTCwgICAgICAgICAgICAgICAg ICAgICAgIC8qIGZpbmlzaCAqLwotICNlbmRpZgotLSAgICAwLCAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogZmxhZ3MgKi8KLSsgICAgRUNESF9GTEFHX0ZJUFNfTUVUSE9ELCAgICAgIC8qIGZs YWdzICovCi0gICAgIE5VTEwgICAgICAgICAgICAgICAgICAgICAgICAvKiBhcHBfZGF0YSAqLwot IH07Ci0gCi1AQCAtMTE5LDYgKzEyMywxMyBAQCBzdGF0aWMgaW50IGVjZGhfY29tcHV0ZV9rZXko dm9pZCAqb3V0LCBzCi0gICAgIHNpemVfdCBidWZsZW4sIGxlbjsKLSAgICAgdW5zaWduZWQgY2hh ciAqYnVmID0gTlVMTDsKLSAKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rICAgIGlmIChGSVBTX3Nl bGZ0ZXN0X2ZhaWxlZCgpKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9FQ0RIX0NPTVBVVEVf S0VZLCBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOwotKyAgICAgICAgcmV0dXJuIC0xOwot KyAgICB9Ci0rI2VuZGlmCi0rCi0gICAgIGlmIChvdXRsZW4gPiBJTlRfTUFYKSB7Ci0gICAgICAg ICBFQ0RIZXJyKEVDREhfRl9FQ0RIX0NPTVBVVEVfS0VZLCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7 IC8qIHNvcnQgb2YsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqIGFueXdheSAqLwotZGlmZiAtdXAgb3BlbnNzbC0xLjAu MmEvY3J5cHRvL2VjZHNhL2VjZHNhdGVzdC5jLmZpcHMtZWMgb3BlbnNzbC0xLjAuMmEvY3J5cHRv L2VjZHNhL2VjZHNhdGVzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjZHNhL2VjZHNh dGVzdC5jLmZpcHMtZWMJMjAxNS0wMy0xOSAxNDoxOTowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vZWNkc2EvZWNkc2F0ZXN0LmMJMjAxNS0wNC0yMiAxOTowMDox OS43MjI4ODQ1MzYgKzAyMDAKLUBAIC0xMzgsMTEgKzEzOCwxNCBAQCBpbnQgcmVzdG9yZV9yYW5k KHZvaWQpCi0gfQotIAotIHN0YXRpYyBpbnQgZmJ5dGVzX2NvdW50ZXIgPSAwOwotLXN0YXRpYyBj b25zdCBjaGFyICpudW1iZXJzWzhdID0gewotK3N0YXRpYyBjb25zdCBjaGFyICpudW1iZXJzWzEw XSA9IHsKLSsgICAgIjY1MTA1Njc3MDkwNjAxNTA3NjA1NjgxMDc2MzQ1NjM1ODU2NzE5MDEwMDE1 NjY5NTYxNTY2NTY1OSIsCi0gICAgICI2NTEwNTY3NzA5MDYwMTUwNzYwNTY4MTA3NjM0NTYzNTg1 NjcxOTAxMDAxNTY2OTU2MTU2NjU2NTkiLAotICAgICAiNjE0MDUwNzA2NzA2NTAwMTA2MzA2NTA2 NTU2NTY2NzQwNTU2MDAwNjE2MTU1NjU2NTY2NTY1NjY1NCIsCi0gICAgICI4NzYzMDAxMDE1MDcx MDc1Njc1MDEwNjYxMzA3NjE2NzEwNzgzNTcwMTA2NzEwNjc3ODE3NzY3MTY2IgotICAgICAgICAg IjcxNjc2MTc4NzI2NzE3IiwKLSsgICAgIjg3NjMwMDEwMTUwNzEwNzU2NzUwMTA2NjEzMDc2MTY3 MTA3ODM1NzAxMDY3MTA2Nzc4MTc3NjcxNjYiCi0rICAgICAgICAiNzE2NzYxNzg3MjY3MTciLAot ICAgICAiNzAwMDAwMDE3NTY5MDU2NjQ2NjU1NTA1NzgxNzU3MTU3MTA3NTcwNTAxNTc1Nzc1NzA1 Nzc5NTc1NSIKLSAgICAgICAgICI1NTY1NzE1Njc1NjY1NSIsCi0gICAgICIxMjc1NTUyMTkxMTEz MjEyMzAwMDEyMDMwNDM5MTg3MTQ2MTY0NjQ2MTQ2NjQ2NDY2NzQ5NDk0Nzk5IiwKLUBAIC0xNTgs NyArMTYxLDcgQEAgaW50IGZieXRlcyh1bnNpZ25lZCBjaGFyICpidWYsIGludCBudW0pCi0gICAg IGludCByZXQ7Ci0gICAgIEJJR05VTSAqdG1wID0gTlVMTDsKLSAKLS0gICAgaWYgKGZieXRlc19j b3VudGVyID49IDgpCi0rICAgIGlmIChmYnl0ZXNfY291bnRlciA+PSAxMCkKLSAgICAgICAgIHJl dHVybiAwOwotICAgICB0bXAgPSBCTl9uZXcoKTsKLSAgICAgaWYgKCF0bXApCi1AQCAtNTMyLDgg KzUzNSwxMCBAQCBpbnQgbWFpbih2b2lkKQotICAgICBSQU5EX3NlZWQocm5kX3NlZWQsIHNpemVv ZihybmRfc2VlZCkpOwotIAotICAgICAvKiB0aGUgdGVzdHMgKi8KLSsjIGlmIDAKLSAgICAgaWYg KCF4OV82Ml90ZXN0cyhvdXQpKQotICAgICAgICAgZ290byBlcnI7Ci0rIyBlbmRpZgotICAgICBp ZiAoIXRlc3RfYnVpbHRpbihvdXQpKQotICAgICAgICAgZ290byBlcnI7Ci0gCi1kaWZmIC11cCBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vZWNkc2EvZWNzX2xpYi5jLmZpcHMtZWMgb3BlbnNzbC0xLjAu MmEvY3J5cHRvL2VjZHNhL2Vjc19saWIuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9lY2Rz YS9lY3NfbGliLmMuZmlwcy1lYwkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAot KysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9lY2RzYS9lY3NfbGliLmMJMjAxNS0wNC0yMiAxOTow MDoxOS43MjI4ODQ1MzYgKzAyMDAKLUBAIC04MCwxNCArODAsNyBAQCB2b2lkIEVDRFNBX3NldF9k ZWZhdWx0X21ldGhvZChjb25zdCBFQ0RTCi0gY29uc3QgRUNEU0FfTUVUSE9EICpFQ0RTQV9nZXRf ZGVmYXVsdF9tZXRob2Qodm9pZCkKLSB7Ci0gICAgIGlmICghZGVmYXVsdF9FQ0RTQV9tZXRob2Qp IHsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgICAgICBpZiAoRklQU19tb2RlKCkpCi0tICAg ICAgICAgICAgcmV0dXJuIEZJUFNfZWNkc2Ffb3BlbnNzbCgpOwotLSAgICAgICAgZWxzZQotLSAg ICAgICAgICAgIHJldHVybiBFQ0RTQV9PcGVuU1NMKCk7Ci0tI2Vsc2UKLSAgICAgICAgIGRlZmF1 bHRfRUNEU0FfbWV0aG9kID0gRUNEU0FfT3BlblNTTCgpOwotLSNlbmRpZgotICAgICB9Ci0gICAg IHJldHVybiBkZWZhdWx0X0VDRFNBX21ldGhvZDsKLSB9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vZWNkc2EvZWNzX29zc2wuYy5maXBzLWVjIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9l Y2RzYS9lY3Nfb3NzbC5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjZHNhL2Vjc19vc3Ns LmMuZmlwcy1lYwkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9lY2RzYS9lY3Nfb3NzbC5jCTIwMTUtMDQtMjIgMTk6MDA6MTkuNzIy ODg0NTM2ICswMjAwCi1AQCAtNjAsNiArNjAsOSBAQAotICNpbmNsdWRlIDxvcGVuc3NsL2Vyci5o PgotICNpbmNsdWRlIDxvcGVuc3NsL29ial9tYWMuaD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9ibi5o PgotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyNl bmRpZgotIAotIHN0YXRpYyBFQ0RTQV9TSUcgKmVjZHNhX2RvX3NpZ24oY29uc3QgdW5zaWduZWQg Y2hhciAqZGdzdCwgaW50IGRsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBCSUdOVU0gKiwgY29uc3QgQklHTlVNICosCi1AQCAtNzgsNyArODEsNyBAQCBzdGF0aWMg RUNEU0FfTUVUSE9EIG9wZW5zc2xfZWNkc2FfbWV0aCA9Ci0gICAgIE5VTEwsICAgICAgICAgICAg ICAgICAgICAgICAvKiBpbml0ICovCi0gICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAv KiBmaW5pc2ggKi8KLSAjZW5kaWYKLS0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8q IGZsYWdzICovCi0rICAgIEVDRFNBX0ZMQUdfRklQU19NRVRIT0QsICAgICAvKiBmbGFncyAqLwot ICAgICBOVUxMICAgICAgICAgICAgICAgICAgICAgICAgLyogYXBwX2RhdGEgKi8KLSB9OwotIAot QEAgLTI0NSw2ICsyNDgsMTMgQEAgc3RhdGljIEVDRFNBX1NJRyAqZWNkc2FfZG9fc2lnbihjb25z dCB1bgotICAgICBFQ0RTQV9EQVRBICplY2RzYTsKLSAgICAgY29uc3QgQklHTlVNICpwcml2X2tl eTsKLSAKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxl ZCgpKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9FQ0RTQV9ET19TSUdOLCBGSVBTX1JfRklQ U19TRUxGVEVTVF9GQUlMRUQpOwotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsjZW5k aWYKLSsKLSAgICAgZWNkc2EgPSBlY2RzYV9jaGVjayhlY2tleSk7Ci0gICAgIGdyb3VwID0gRUNf S0VZX2dldDBfZ3JvdXAoZWNrZXkpOwotICAgICBwcml2X2tleSA9IEVDX0tFWV9nZXQwX3ByaXZh dGVfa2V5KGVja2V5KTsKLUBAIC0zNTgsNiArMzY4LDEzIEBAIHN0YXRpYyBpbnQgZWNkc2FfZG9f dmVyaWZ5KGNvbnN0IHVuc2lnbmUKLSAgICAgY29uc3QgRUNfR1JPVVAgKmdyb3VwOwotICAgICBj b25zdCBFQ19QT0lOVCAqcHViX2tleTsKLSAKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rICAgIGlm IChGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9FQ0RT QV9ET19WRVJJRlksIEZJUFNfUl9GSVBTX1NFTEZURVNUX0ZBSUxFRCk7Ci0rICAgICAgICByZXR1 cm4gLTE7Ci0rICAgIH0KLSsjZW5kaWYKLSsKLSAgICAgLyogY2hlY2sgaW5wdXQgdmFsdWVzICov Ci0gICAgIGlmIChlY2tleSA9PSBOVUxMIHx8IChncm91cCA9IEVDX0tFWV9nZXQwX2dyb3VwKGVj a2V5KSkgPT0gTlVMTCB8fAotICAgICAgICAgKHB1Yl9rZXkgPSBFQ19LRVlfZ2V0MF9wdWJsaWNf a2V5KGVja2V5KSkgPT0gTlVMTCB8fCBzaWcgPT0gTlVMTCkgewotZGlmZiAtdXAgb3BlbnNzbC0x LjAuMmEvY3J5cHRvL2VjL2VjX2N2dC5jLmZpcHMtZWMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2Vj L2VjX2N2dC5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjL2VjX2N2dC5jLmZpcHMtZWMJ MjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vZWMvZWNfY3Z0LmMJMjAxNS0wNC0yMiAxOTowMTowOC43MDMwNDA3NTYgKzAyMDAKLUBA IC04MiwxMCArODIsNiBAQCBFQ19HUk9VUCAqRUNfR1JPVVBfbmV3X2N1cnZlX0dGcChjb25zdCBC Ci0gICAgIGNvbnN0IEVDX01FVEhPRCAqbWV0aDsKLSAgICAgRUNfR1JPVVAgKnJldDsKLSAKLS0j aWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgIGlmIChGSVBTX21vZGUoKSkKLS0gICAgICAgIHJldHVy biBGSVBTX2VjX2dyb3VwX25ld19jdXJ2ZV9nZnAocCwgYSwgYiwgY3R4KTsKLS0jZW5kaWYKLSAj aWYgZGVmaW5lZChPUEVOU1NMX0JOX0FTTV9NT05UKQotICAgICAvKgotICAgICAgKiBUaGlzIG1p Z2h0IGFwcGVhciBjb250cm92ZXJzaWFsLCBidXQgdGhlIGZhY3QgaXMgdGhhdCBnZW5lcmljCi1A QCAtMTYwLDEwICsxNTYsNiBAQCBFQ19HUk9VUCAqRUNfR1JPVVBfbmV3X2N1cnZlX0dGMm0oY29u c3QKLSAgICAgY29uc3QgRUNfTUVUSE9EICptZXRoOwotICAgICBFQ19HUk9VUCAqcmV0OwotIAot LSMgaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgIGlmIChGSVBTX21vZGUoKSkKLS0gICAgICAgIHJl dHVybiBGSVBTX2VjX2dyb3VwX25ld19jdXJ2ZV9nZjJtKHAsIGEsIGIsIGN0eCk7Ci0tIyBlbmRp ZgotICAgICBtZXRoID0gRUNfR0YybV9zaW1wbGVfbWV0aG9kKCk7Ci0gCi0gICAgIHJldCA9IEVD X0dST1VQX25ldyhtZXRoKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9lYy9lY19r ZXkuYy5maXBzLWVjIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9lYy9lY19rZXkuYwotLS0tIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9lYy9lY19rZXkuYy5maXBzLWVjCTIwMTUtMDMtMTkgMTQ6MTk6MDAu MDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjL2VjX2tleS5jCTIw MTUtMDQtMjIgMTk6MDA6MTkuNzIyODg0NTM2ICswMjAwCi1AQCAtNjQsOSArNjQsNiBAQAotICNp bmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSAiZWNfbGNsLmgiCi0gI2luY2x1ZGUgPG9wZW5z c2wvZXJyLmg+Ci0tI2lmZGVmIE9QRU5TU0xfRklQUwotLSMgaW5jbHVkZSA8b3BlbnNzbC9maXBz Lmg+Ci0tI2VuZGlmCi0gCi0gRUNfS0VZICpFQ19LRVlfbmV3KHZvaWQpCi0gewotQEAgLTIyNyw2 ICsyMjQsMzggQEAgaW50IEVDX0tFWV91cF9yZWYoRUNfS0VZICpyKQotICAgICByZXR1cm4gKChp ID4gMSkgPyAxIDogMCk7Ci0gfQotIAotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsKLSsjIGluY2x1 ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjIGluY2x1 ZGUgPG9wZW5zc2wvZmlwc19yYW5kLmg+Ci0rCi0rc3RhdGljIGludCBmaXBzX2NoZWNrX2VjKEVD X0tFWSAqa2V5KQotK3sKLSsgICAgRVZQX1BLRVkgKnBrOwotKyAgICB1bnNpZ25lZCBjaGFyIHRi c1tdID0gIkVDRFNBIFBhaXJ3aXNlIENoZWNrIERhdGEiOwotKyAgICBpbnQgcmV0ID0gMDsKLSsK LSsgICAgaWYgKChwayA9IEVWUF9QS0VZX25ldygpKSA9PSBOVUxMKQotKyAgICAgICAgZ290byBl cnI7Ci0rCi0rICAgIEVWUF9QS0VZX3NldDFfRUNfS0VZKHBrLCBrZXkpOwotKwotKyAgICBpZiAo Zmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCB0YnMsIC0xLCBOVUxMLCAwLCBOVUxMLCAwLCBO VUxMKSkKLSsgICAgICAgIHJldCA9IDE7Ci0rCi0rIGVycjoKLSsgICAgaWYgKHJldCA9PSAwKSB7 Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0NIRUNLX0VDLCBGSVBTX1JfUEFJUldJU0Vf VEVTVF9GQUlMRUQpOwotKyAgICAgICAgZmlwc19zZXRfc2VsZnRlc3RfZmFpbCgpOwotKyAgICB9 Ci0rICAgIGlmIChwaykKLSsgICAgICAgIEVWUF9QS0VZX2ZyZWUocGspOwotKyAgICByZXR1cm4g cmV0OwotK30KLSsKLSsjZW5kaWYKLSsKLSBpbnQgRUNfS0VZX2dlbmVyYXRlX2tleShFQ19LRVkg KmVja2V5KQotIHsKLSAgICAgaW50IG9rID0gMDsKLUBAIC0yMzUsOCArMjY0LDEwIEBAIGludCBF Q19LRVlfZ2VuZXJhdGVfa2V5KEVDX0tFWSAqZWNrZXkpCi0gICAgIEVDX1BPSU5UICpwdWJfa2V5 ID0gTlVMTDsKLSAKLSAjaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgIGlmIChGSVBTX21vZGUoKSkK LS0gICAgICAgIHJldHVybiBGSVBTX2VjX2tleV9nZW5lcmF0ZV9rZXkoZWNrZXkpOwotKyAgICBp ZiAoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRUNf S0VZX0dFTkVSQVRFX0tFWSwgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEKTsKLSsgICAgICAg IHJldHVybiAwOwotKyAgICB9Ci0gI2VuZGlmCi0gCi0gICAgIGlmICghZWNrZXkgfHwgIWVja2V5 LT5ncm91cCkgewotQEAgLTI3Nyw2ICszMDgsMTQgQEAgaW50IEVDX0tFWV9nZW5lcmF0ZV9rZXko RUNfS0VZICplY2tleSkKLSAgICAgZWNrZXktPnByaXZfa2V5ID0gcHJpdl9rZXk7Ci0gICAgIGVj a2V5LT5wdWJfa2V5ID0gcHViX2tleTsKLSAKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rICAgIGlm ICghZmlwc19jaGVja19lYyhlY2tleSkpIHsKLSsgICAgICAgIGVja2V5LT5wcml2X2tleSA9IE5V TEw7Ci0rICAgICAgICBlY2tleS0+cHViX2tleSA9IE5VTEw7Ci0rICAgICAgICBnb3RvIGVycjsK LSsgICAgfQotKyNlbmRpZgotKwotICAgICBvayA9IDE7Ci0gCi0gIGVycjoKLUBAIC00MDgsMTAg KzQ0NywxMiBAQCBpbnQgRUNfS0VZX3NldF9wdWJsaWNfa2V5X2FmZmluZV9jb29yZGluCi0gICAg ICAgICAgICAgZ290byBlcnI7Ci0gICAgIH0KLSAgICAgLyoKLS0gICAgICogQ2hlY2sgaWYgcmV0 cmlldmVkIGNvb3JkaW5hdGVzIG1hdGNoIG9yaWdpbmFsczogaWYgbm90IHZhbHVlcyBhcmUgb3V0 Ci0tICAgICAqIG9mIHJhbmdlLgotKyAgICAgKiBDaGVjayBpZiByZXRyaWV2ZWQgY29vcmRpbmF0 ZXMgbWF0Y2ggb3JpZ2luYWxzIGFuZCBhcmUgbGVzcwotKyAgICAgKiB0aGFuIGZpZWxkIG9yZGVy OiBpZiBub3QgdmFsdWVzIGFyZSBvdXQgb2YgcmFuZ2UuCi0gICAgICAqLwotLSAgICBpZiAoQk5f Y21wKHgsIHR4KSB8fCBCTl9jbXAoeSwgdHkpKSB7Ci0rICAgIGlmIChCTl9jbXAoeCwgdHgpIHx8 IEJOX2NtcCh5LCB0eSkKLSsgICAgICAgIHx8IChCTl9jbXAoeCwgJmtleS0+Z3JvdXAtPmZpZWxk KSA+PSAwKQotKyAgICAgICAgfHwgKEJOX2NtcCh5LCAma2V5LT5ncm91cC0+ZmllbGQpID49IDAp KSB7Ci0gICAgICAgICBFQ2VycihFQ19GX0VDX0tFWV9TRVRfUFVCTElDX0tFWV9BRkZJTkVfQ09P UkRJTkFURVMsCi0gICAgICAgICAgICAgICBFQ19SX0NPT1JESU5BVEVTX09VVF9PRl9SQU5HRSk7 Ci0gICAgICAgICBnb3RvIGVycjsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9lYy9l Y3BfbW9udC5jLmZpcHMtZWMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjL2VjcF9tb250LmMKLS0t LSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZWMvZWNwX21vbnQuYy5maXBzLWVjCTIwMTUtMDMtMTkg MTQ6MTk6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjL2Vj cF9tb250LmMJMjAxNS0wNC0yMiAxOTowMDoxOS43MjI4ODQ1MzYgKzAyMDAKLUBAIC02MywxMCAr NjMsNiBAQAotIAotICNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotIAotLSNpZmRlZiBPUEVOU1NM X0ZJUFMKLS0jIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotLSNlbmRpZgotLQotICNpbmNsdWRl ICJlY19sY2wuaCIKLSAKLSBjb25zdCBFQ19NRVRIT0QgKkVDX0dGcF9tb250X21ldGhvZCh2b2lk KQotQEAgLTExMSwxMSArMTA3LDYgQEAgY29uc3QgRUNfTUVUSE9EICpFQ19HRnBfbW9udF9tZXRo b2Qodm9pZAotICAgICAgICAgZWNfR0ZwX21vbnRfZmllbGRfc2V0X3RvX29uZQotICAgICB9Owot IAotLSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0gICAgaWYgKEZJUFNfbW9kZSgpKQotLSAgICAgICAg cmV0dXJuIGZpcHNfZWNfZ2ZwX21vbnRfbWV0aG9kKCk7Ci0tI2VuZGlmCi0tCi0gICAgIHJldHVy biAmcmV0OwotIH0KLSAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9lYy9lY3Bfbmlz dC5jLmZpcHMtZWMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjL2VjcF9uaXN0LmMKLS0tLSBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vZWMvZWNwX25pc3QuYy5maXBzLWVjCTIwMTUtMDMtMTkgMTQ6MTk6 MDAuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjL2VjcF9uaXN0 LmMJMjAxNS0wNC0yMiAxOTowMDoxOS43MjM4ODQ1NjAgKzAyMDAKLUBAIC02NywxMCArNjcsNiBA QAotICNpbmNsdWRlIDxvcGVuc3NsL29ial9tYWMuaD4KLSAjaW5jbHVkZSAiZWNfbGNsLmgiCi0g Ci0tI2lmZGVmIE9QRU5TU0xfRklQUwotLSMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0tI2Vu ZGlmCi0tCi0gY29uc3QgRUNfTUVUSE9EICpFQ19HRnBfbmlzdF9tZXRob2Qodm9pZCkKLSB7Ci0g ICAgIHN0YXRpYyBjb25zdCBFQ19NRVRIT0QgcmV0ID0gewotQEAgLTExMywxMSArMTA5LDYgQEAg Y29uc3QgRUNfTUVUSE9EICpFQ19HRnBfbmlzdF9tZXRob2Qodm9pZAotICAgICAgICAgMCAgICAg ICAgICAgICAgICAgICAgICAgLyogZmllbGRfc2V0X3RvX29uZSAqLwotICAgICB9OwotIAotLSNp ZmRlZiBPUEVOU1NMX0ZJUFMKLS0gICAgaWYgKEZJUFNfbW9kZSgpKQotLSAgICAgICAgcmV0dXJu IGZpcHNfZWNfZ2ZwX25pc3RfbWV0aG9kKCk7Ci0tI2VuZGlmCi0tCi0gICAgIHJldHVybiAmcmV0 OwotIH0KLSAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9lYy9lY3Bfc21wbC5jLmZp cHMtZWMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjL2VjcF9zbXBsLmMKLS0tLSBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vZWMvZWNwX3NtcGwuYy5maXBzLWVjCTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAw MDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VjL2VjcF9zbXBsLmMJMjAx NS0wNC0yMiAxOTowMDoxOS43MjM4ODQ1NjAgKzAyMDAKLUBAIC02NiwxMCArNjYsNiBAQAotICNp bmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotICNpbmNsdWRlIDxvcGVuc3NsL3N5bWhhY2tzLmg+Ci0g Ci0tI2lmZGVmIE9QRU5TU0xfRklQUwotLSMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0tI2Vu ZGlmCi0tCi0gI2luY2x1ZGUgImVjX2xjbC5oIgotIAotIGNvbnN0IEVDX01FVEhPRCAqRUNfR0Zw X3NpbXBsZV9tZXRob2Qodm9pZCkKLUBAIC0xMTQsMTEgKzExMCw2IEBAIGNvbnN0IEVDX01FVEhP RCAqRUNfR0ZwX3NpbXBsZV9tZXRob2Qodm8KLSAgICAgICAgIDAgICAgICAgICAgICAgICAgICAg ICAgIC8qIGZpZWxkX3NldF90b19vbmUgKi8KLSAgICAgfTsKLSAKLS0jaWZkZWYgT1BFTlNTTF9G SVBTCi0tICAgIGlmIChGSVBTX21vZGUoKSkKLS0gICAgICAgIHJldHVybiBmaXBzX2VjX2dmcF9z aW1wbGVfbWV0aG9kKCk7Ci0tI2VuZGlmCi0tCi0gICAgIHJldHVybiAmcmV0OwotIH0KLSAKLUBA IC0xODcsNiArMTc4LDExIEBAIGludCBlY19HRnBfc2ltcGxlX2dyb3VwX3NldF9jdXJ2ZShFQ19H Uk8KLSAgICAgICAgIHJldHVybiAwOwotICAgICB9Ci0gCi0rICAgIGlmIChCTl9udW1fYml0cyhw KSA8IDI1NikgewotKyAgICAgICAgRUNlcnIoRUNfRl9FQ19HRlBfU0lNUExFX0dST1VQX1NFVF9D VVJWRSwgRUNfUl9VTlNVUFBPUlRFRF9GSUVMRCk7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAg fQotKwotICAgICBpZiAoY3R4ID09IE5VTEwpIHsKLSAgICAgICAgIGN0eCA9IG5ld19jdHggPSBC Tl9DVFhfbmV3KCk7Ci0gICAgICAgICBpZiAoY3R4ID09IE5VTEwpCi1kaWZmIC11cCBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vZXZwL21fZWNkc2EuYy5maXBzLWVjIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9ldnAvbV9lY2RzYS5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9tX2VjZHNhLmMu Zmlwcy1lYwkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9ldnAvbV9lY2RzYS5jCTIwMTUtMDQtMjIgMTk6MDA6MTkuNzIzODg0NTYw ICswMjAwCi1AQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBjb25zdCBFVlBfTUQgZWNkc2FfbWQg PSB7Ci0gICAgIE5JRF9lY2RzYV93aXRoX1NIQTEsCi0gICAgIE5JRF9lY2RzYV93aXRoX1NIQTEs Ci0gICAgIFNIQV9ESUdFU1RfTEVOR1RILAotLSAgICBFVlBfTURfRkxBR19QS0VZX0RJR0VTVCwK LSsgICAgRVZQX01EX0ZMQUdfUEtFWV9ESUdFU1QgfCBFVlBfTURfRkxBR19GSVBTLAotICAgICBp bml0LAotICAgICB1cGRhdGUsCi0gICAgIGZpbmFsLAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL2ZpcHMvY2F2cy9maXBzX2VjZGh2cy5jLmZpcHMtZWMgb3BlbnNzbC0xLjAuMmEvY3J5 cHRvL2ZpcHMvY2F2cy9maXBzX2VjZGh2cy5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2Zp cHMvY2F2cy9maXBzX2VjZGh2cy5jLmZpcHMtZWMJMjAxNS0wNC0yMiAxOTowMDoxOS43MjM4ODQ1 NjAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9jYXZzL2ZpcHNfZWNkaHZz LmMJMjAxNS0wNC0yMiAxOTowMDoxOS43MjM4ODQ1NjAgKzAyMDAKLUBAIC0wLDAgKzEsNDU2IEBA Ci0rLyogZmlwcy9lY2RoL2ZpcHNfZWNkaHZzLmMgKi8KLSsvKiBXcml0dGVuIGJ5IERyIFN0ZXBo ZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5zc2wub3JnKSBmb3IgdGhlIE9wZW5TU0wKLSsgKiBwcm9q ZWN0LgotKyAqLwotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBP cGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmli dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0 Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv d2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9u cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRv Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAq ICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMg bWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3Qg ZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1 Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsg KiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wu b3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVu U1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21v dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHBy aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNv bnRhY3QKLSsgKiAgICBsaWNlbnNpbmdAT3BlblNTTC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0 cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIK LSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBw cmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0Lgot KyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCBy ZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlz IHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2pl Y3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3Bl blNTTC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9w ZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVE IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBM SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF IE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlks IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRF RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBM T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQot KyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF UiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NT SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqLwotKwotKyNkZWZp bmUgT1BFTlNTTF9GSVBTQVBJCi0rI2luY2x1ZGUgPG9wZW5zc2wvb3BlbnNzbGNvbmYuaD4KLSsK LSsjaWZuZGVmIE9QRU5TU0xfRklQUwotKyMgaW5jbHVkZSA8c3RkaW8uaD4KLSsKLStpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rewotKyAgICBwcmludGYoIk5vIEZJUFMgRUNESCBz dXBwb3J0XG4iKTsKLSsgICAgcmV0dXJuICgwKTsKLSt9Ci0rI2Vsc2UKLSsKLSsjIGluY2x1ZGUg PG9wZW5zc2wvY3J5cHRvLmg+Ci0rIyBpbmNsdWRlIDxvcGVuc3NsL2JuLmg+Ci0rIyBpbmNsdWRl IDxvcGVuc3NsL2VjZGguaD4KLSsjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyMgaW5jbHVk ZSA8b3BlbnNzbC9lcnIuaD4KLSsjIGluY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rIyBpbmNsdWRl IDxzdHJpbmcuaD4KLSsjIGluY2x1ZGUgPGN0eXBlLmg+Ci0rCi0rIyBpbmNsdWRlICJmaXBzX3V0 bC5oIgotKwotK3N0YXRpYyBjb25zdCBFVlBfTUQgKmVwYXJzZV9tZChjaGFyICpsaW5lKQotK3sK LSsgICAgY2hhciAqcDsKLSsgICAgaWYgKGxpbmVbMF0gIT0gJ1snIHx8IGxpbmVbMV0gIT0gJ0Un KQotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIHAgPSBzdHJjaHIobGluZSwgJy0nKTsKLSsg ICAgaWYgKCFwKQotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIGxpbmUgPSBwICsgMTsKLSsg ICAgcCA9IHN0cmNocihsaW5lLCAnXScpOwotKyAgICBpZiAoIXApCi0rICAgICAgICByZXR1cm4g TlVMTDsKLSsgICAgKnAgPSAwOwotKyAgICBwID0gbGluZTsKLSsgICAgd2hpbGUgKGlzc3BhY2Uo KnApKQotKyAgICAgICAgcCsrOwotKyAgICBpZiAoIXN0cmNtcChwLCAiU0hBMSIpKQotKyAgICAg ICAgcmV0dXJuIEVWUF9zaGExKCk7Ci0rICAgIGVsc2UgaWYgKCFzdHJjbXAocCwgIlNIQTIyNCIp KQotKyAgICAgICAgcmV0dXJuIEVWUF9zaGEyMjQoKTsKLSsgICAgZWxzZSBpZiAoIXN0cmNtcChw LCAiU0hBMjU2IikpCi0rICAgICAgICByZXR1cm4gRVZQX3NoYTI1NigpOwotKyAgICBlbHNlIGlm ICghc3RyY21wKHAsICJTSEEzODQiKSkKLSsgICAgICAgIHJldHVybiBFVlBfc2hhMzg0KCk7Ci0r ICAgIGVsc2UgaWYgKCFzdHJjbXAocCwgIlNIQTUxMiIpKQotKyAgICAgICAgcmV0dXJuIEVWUF9z aGE1MTIoKTsKLSsgICAgZWxzZQotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rfQotKwotK3N0YXRp YyBpbnQgbG9va3VwX2N1cnZlMihjaGFyICpjbmFtZSkKLSt7Ci0rICAgIGNoYXIgKnA7Ci0rICAg IHAgPSBzdHJjaHIoY25hbWUsICddJyk7Ci0rICAgIGlmICghcCkgewotKyAgICAgICAgZnByaW50 ZihzdGRlcnIsICJQYXJzZSBlcnJvcjogbWlzc2luZyBdXG4iKTsKLSsgICAgICAgIHJldHVybiBO SURfdW5kZWY7Ci0rICAgIH0KLSsgICAgKnAgPSAwOwotKwotKyAgICBpZiAoIXN0cmNtcChjbmFt ZSwgIkItMTYzIikpCi0rICAgICAgICByZXR1cm4gTklEX3NlY3QxNjNyMjsKLSsgICAgaWYgKCFz dHJjbXAoY25hbWUsICJCLTIzMyIpKQotKyAgICAgICAgcmV0dXJuIE5JRF9zZWN0MjMzcjE7Ci0r ICAgIGlmICghc3RyY21wKGNuYW1lLCAiQi0yODMiKSkKLSsgICAgICAgIHJldHVybiBOSURfc2Vj dDI4M3IxOwotKyAgICBpZiAoIXN0cmNtcChjbmFtZSwgIkItNDA5IikpCi0rICAgICAgICByZXR1 cm4gTklEX3NlY3Q0MDlyMTsKLSsgICAgaWYgKCFzdHJjbXAoY25hbWUsICJCLTU3MSIpKQotKyAg ICAgICAgcmV0dXJuIE5JRF9zZWN0NTcxcjE7Ci0rICAgIGlmICghc3RyY21wKGNuYW1lLCAiSy0x NjMiKSkKLSsgICAgICAgIHJldHVybiBOSURfc2VjdDE2M2sxOwotKyAgICBpZiAoIXN0cmNtcChj bmFtZSwgIkstMjMzIikpCi0rICAgICAgICByZXR1cm4gTklEX3NlY3QyMzNrMTsKLSsgICAgaWYg KCFzdHJjbXAoY25hbWUsICJLLTI4MyIpKQotKyAgICAgICAgcmV0dXJuIE5JRF9zZWN0MjgzazE7 Ci0rICAgIGlmICghc3RyY21wKGNuYW1lLCAiSy00MDkiKSkKLSsgICAgICAgIHJldHVybiBOSURf c2VjdDQwOWsxOwotKyAgICBpZiAoIXN0cmNtcChjbmFtZSwgIkstNTcxIikpCi0rICAgICAgICBy ZXR1cm4gTklEX3NlY3Q1NzFrMTsKLSsgICAgaWYgKCFzdHJjbXAoY25hbWUsICJQLTE5MiIpKQot KyAgICAgICAgcmV0dXJuIE5JRF9YOV82Ml9wcmltZTE5MnYxOwotKyAgICBpZiAoIXN0cmNtcChj bmFtZSwgIlAtMjI0IikpCi0rICAgICAgICByZXR1cm4gTklEX3NlY3AyMjRyMTsKLSsgICAgaWYg KCFzdHJjbXAoY25hbWUsICJQLTI1NiIpKQotKyAgICAgICAgcmV0dXJuIE5JRF9YOV82Ml9wcmlt ZTI1NnYxOwotKyAgICBpZiAoIXN0cmNtcChjbmFtZSwgIlAtMzg0IikpCi0rICAgICAgICByZXR1 cm4gTklEX3NlY3AzODRyMTsKLSsgICAgaWYgKCFzdHJjbXAoY25hbWUsICJQLTUyMSIpKQotKyAg ICAgICAgcmV0dXJuIE5JRF9zZWNwNTIxcjE7Ci0rCi0rICAgIGZwcmludGYoc3RkZXJyLCAiVW5r bm93biBDdXJ2ZSBuYW1lICVzXG4iLCBjbmFtZSk7Ci0rICAgIHJldHVybiBOSURfdW5kZWY7Ci0r fQotKwotK3N0YXRpYyBpbnQgbG9va3VwX2N1cnZlKGNoYXIgKmNuYW1lKQotK3sKLSsgICAgY2hh ciAqcDsKLSsgICAgcCA9IHN0cmNocihjbmFtZSwgJzonKTsKLSsgICAgaWYgKCFwKSB7Ci0rICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgIlBhcnNlIGVycm9yOiBtaXNzaW5nIDpcbiIpOwotKyAgICAg ICAgcmV0dXJuIE5JRF91bmRlZjsKLSsgICAgfQotKyAgICBjbmFtZSA9IHAgKyAxOwotKyAgICB3 aGlsZSAoaXNzcGFjZSgqY25hbWUpKQotKyAgICAgICAgY25hbWUrKzsKLSsgICAgcmV0dXJuIGxv b2t1cF9jdXJ2ZTIoY25hbWUpOwotK30KLSsKLStzdGF0aWMgRUNfUE9JTlQgKm1ha2VfcGVlcihF Q19HUk9VUCAqZ3JvdXAsIEJJR05VTSAqeCwgQklHTlVNICp5KQotK3sKLSsgICAgRUNfUE9JTlQg KnBlZXI7Ci0rICAgIGludCBydjsKLSsgICAgQk5fQ1RYICpjOwotKyAgICBwZWVyID0gRUNfUE9J TlRfbmV3KGdyb3VwKTsKLSsgICAgaWYgKCFwZWVyKQotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0r ICAgIGMgPSBCTl9DVFhfbmV3KCk7Ci0rICAgIGlmIChFQ19NRVRIT0RfZ2V0X2ZpZWxkX3R5cGUo RUNfR1JPVVBfbWV0aG9kX29mKGdyb3VwKSkKLSsgICAgICAgID09IE5JRF9YOV82Ml9wcmltZV9m aWVsZCkKLSsgICAgICAgIHJ2ID0gRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRnAo Z3JvdXAsIHBlZXIsIHgsIHksIGMpOwotKyAgICBlbHNlCi0rIyBpZmRlZiBPUEVOU1NMX05PX0VD Mk0KLSsgICAgewotKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJFUlJPUjogR0YybSBub3Qgc3Vw cG9ydGVkXG4iKTsKLSsgICAgICAgIGV4aXQoMSk7Ci0rICAgIH0KLSsjIGVsc2UKLSsgICAgICAg IHJ2ID0gRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRjJtKGdyb3VwLCBwZWVyLCB4 LCB5LCBjKTsKLSsjIGVuZGlmCi0rCi0rICAgIEJOX0NUWF9mcmVlKGMpOwotKyAgICBpZiAocnYp Ci0rICAgICAgICByZXR1cm4gcGVlcjsKLSsgICAgRUNfUE9JTlRfZnJlZShwZWVyKTsKLSsgICAg cmV0dXJuIE5VTEw7Ci0rfQotKwotK3N0YXRpYyBpbnQgZWNfcHJpbnRfa2V5KEZJTEUgKm91dCwg RUNfS0VZICprZXksIGludCBhZGRfZSwgaW50IGV4b3V0KQotK3sKLSsgICAgY29uc3QgRUNfUE9J TlQgKnB0OwotKyAgICBjb25zdCBFQ19HUk9VUCAqZ3JwOwotKyAgICBjb25zdCBFQ19NRVRIT0Qg Km1ldGg7Ci0rICAgIGludCBydjsKLSsgICAgQklHTlVNICp0eCwgKnR5OwotKyAgICBjb25zdCBC SUdOVU0gKmQgPSBOVUxMOwotKyAgICBCTl9DVFggKmN0eDsKLSsgICAgY3R4ID0gQk5fQ1RYX25l dygpOwotKyAgICBpZiAoIWN0eCkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICB0eCA9IEJOX0NU WF9nZXQoY3R4KTsKLSsgICAgdHkgPSBCTl9DVFhfZ2V0KGN0eCk7Ci0rICAgIGlmICghdHggfHwg IXR5KQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIGdycCA9IEVDX0tFWV9nZXQwX2dyb3VwKGtl eSk7Ci0rICAgIHB0ID0gRUNfS0VZX2dldDBfcHVibGljX2tleShrZXkpOwotKyAgICBpZiAoZXhv dXQpCi0rICAgICAgICBkID0gRUNfS0VZX2dldDBfcHJpdmF0ZV9rZXkoa2V5KTsKLSsgICAgbWV0 aCA9IEVDX0dST1VQX21ldGhvZF9vZihncnApOwotKyAgICBpZiAoRUNfTUVUSE9EX2dldF9maWVs ZF90eXBlKG1ldGgpID09IE5JRF9YOV82Ml9wcmltZV9maWVsZCkKLSsgICAgICAgIHJ2ID0gRUNf UE9JTlRfZ2V0X2FmZmluZV9jb29yZGluYXRlc19HRnAoZ3JwLCBwdCwgdHgsIHR5LCBjdHgpOwot KyAgICBlbHNlCi0rIyBpZmRlZiBPUEVOU1NMX05PX0VDMk0KLSsgICAgewotKyAgICAgICAgZnBy aW50ZihzdGRlcnIsICJFUlJPUjogR0YybSBub3Qgc3VwcG9ydGVkXG4iKTsKLSsgICAgICAgIGV4 aXQoMSk7Ci0rICAgIH0KLSsjIGVsc2UKLSsgICAgICAgIHJ2ID0gRUNfUE9JTlRfZ2V0X2FmZmlu ZV9jb29yZGluYXRlc19HRjJtKGdycCwgcHQsIHR4LCB0eSwgY3R4KTsKLSsjIGVuZGlmCi0rCi0r ICAgIGlmIChhZGRfZSkgewotKyAgICAgICAgZG9fYm5fcHJpbnRfbmFtZShvdXQsICJRZUlVVHgi LCB0eCk7Ci0rICAgICAgICBkb19ibl9wcmludF9uYW1lKG91dCwgIlFlSVVUeSIsIHR5KTsKLSsg ICAgICAgIGlmIChkKQotKyAgICAgICAgICAgIGRvX2JuX3ByaW50X25hbWUob3V0LCAiUWVJVVRk IiwgZCk7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBkb19ibl9wcmludF9uYW1lKG91dCwgIlFJ VVR4IiwgdHgpOwotKyAgICAgICAgZG9fYm5fcHJpbnRfbmFtZShvdXQsICJRSVVUeSIsIHR5KTsK LSsgICAgICAgIGlmIChkKQotKyAgICAgICAgICAgIGRvX2JuX3ByaW50X25hbWUob3V0LCAiUUlV VGQiLCBkKTsKLSsgICAgfQotKwotKyAgICBCTl9DVFhfZnJlZShjdHgpOwotKwotKyAgICByZXR1 cm4gcnY7Ci0rCi0rfQotKwotK3N0YXRpYyB2b2lkIGVjX291dHB1dF9aaGFzaChGSUxFICpvdXQs IGludCBleG91dCwgRUNfR1JPVVAgKmdyb3VwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBCSUdOVU0gKml4LCBCSUdOVU0gKml5LCBCSUdOVU0gKmlkLCBCSUdOVU0gKmN4LAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBCSUdOVU0gKmN5LCBjb25zdCBFVlBfTUQgKm1kLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpyaGFzaCwgc2l6ZV90IHJo YXNobGVuKQotK3sKLSsgICAgRUNfS0VZICplYyA9IE5VTEw7Ci0rICAgIEVDX1BPSU5UICpwZWVy a2V5ID0gTlVMTDsKLSsgICAgdW5zaWduZWQgY2hhciAqWjsKLSsgICAgdW5zaWduZWQgY2hhciBj aGFzaFtFVlBfTUFYX01EX1NJWkVdOwotKyAgICBpbnQgWmxlbjsKLSsgICAgZWMgPSBFQ19LRVlf bmV3KCk7Ci0rICAgIEVDX0tFWV9zZXRfZmxhZ3MoZWMsIEVDX0ZMQUdfQ09GQUNUT1JfRUNESCk7 Ci0rICAgIEVDX0tFWV9zZXRfZ3JvdXAoZWMsIGdyb3VwKTsKLSsgICAgcGVlcmtleSA9IG1ha2Vf cGVlcihncm91cCwgY3gsIGN5KTsKLSsgICAgaWYgKHJoYXNoID09IE5VTEwpIHsKLSsgICAgICAg IGlmIChtZCkKLSsgICAgICAgICAgICByaGFzaGxlbiA9IE1fRVZQX01EX3NpemUobWQpOwotKyAg ICAgICAgRUNfS0VZX2dlbmVyYXRlX2tleShlYyk7Ci0rICAgICAgICBlY19wcmludF9rZXkob3V0 LCBlYywgbWQgPyAxIDogMCwgZXhvdXQpOwotKyAgICB9IGVsc2UgewotKyAgICAgICAgRUNfS0VZ X3NldF9wdWJsaWNfa2V5X2FmZmluZV9jb29yZGluYXRlcyhlYywgaXgsIGl5KTsKLSsgICAgICAg IEVDX0tFWV9zZXRfcHJpdmF0ZV9rZXkoZWMsIGlkKTsKLSsgICAgfQotKyAgICBabGVuID0gKEVD X0dST1VQX2dldF9kZWdyZWUoZ3JvdXApICsgNykgLyA4OwotKyAgICBaID0gT1BFTlNTTF9tYWxs b2MoWmxlbik7Ci0rICAgIGlmICghWikKLSsgICAgICAgIGV4aXQoMSk7Ci0rICAgIEVDREhfY29t cHV0ZV9rZXkoWiwgWmxlbiwgcGVlcmtleSwgZWMsIDApOwotKyAgICBpZiAobWQpIHsKLSsgICAg ICAgIGlmIChleG91dCkKLSsgICAgICAgICAgICBPdXRwdXRWYWx1ZSgiWiIsIFosIFpsZW4sIG91 dCwgMCk7Ci0rICAgICAgICBGSVBTX2RpZ2VzdChaLCBabGVuLCBjaGFzaCwgTlVMTCwgbWQpOwot KyAgICAgICAgT3V0cHV0VmFsdWUocmhhc2ggPyAiSVVUSGFzaFpaIiA6ICJIYXNoWloiLCBjaGFz aCwgcmhhc2hsZW4sIG91dCwgMCk7Ci0rICAgICAgICBpZiAocmhhc2gpIHsKLSsgICAgICAgICAg ICBmcHJpbnRmKG91dCwgIlJlc3VsdCA9ICVzXG4iLAotKyAgICAgICAgICAgICAgICAgICAgbWVt Y21wKGNoYXNoLCByaGFzaCwgcmhhc2hsZW4pID8gIkYiIDogIlAiKTsKLSsgICAgICAgIH0KLSsg ICAgfSBlbHNlCi0rICAgICAgICBPdXRwdXRWYWx1ZSgiWklVVCIsIFosIFpsZW4sIG91dCwgMCk7 Ci0rICAgIE9QRU5TU0xfY2xlYW5zZShaLCBabGVuKTsKLSsgICAgT1BFTlNTTF9mcmVlKFopOwot KyAgICBFQ19LRVlfZnJlZShlYyk7Ci0rICAgIEVDX1BPSU5UX2ZyZWUocGVlcmtleSk7Ci0rfQot KwotKyMgaWZkZWYgRklQU19BTEdWUwotK2ludCBmaXBzX2VjZGh2c19tYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKLSsjIGVsc2UKLStpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0r IyBlbmRpZgotK3sKLSsgICAgY2hhciAqKmFyZ3MgPSBhcmd2ICsgMTsKLSsgICAgaW50IGFyZ24g PSBhcmdjIC0gMTsKLSsgICAgRklMRSAqaW4sICpvdXQ7Ci0rICAgIGNoYXIgYnVmWzIwNDhdLCBs YnVmWzIwNDhdOwotKyAgICB1bnNpZ25lZCBjaGFyICpyaGFzaCA9IE5VTEw7Ci0rICAgIGxvbmcg cmhhc2hsZW47Ci0rICAgIEJJR05VTSAqY3ggPSBOVUxMLCAqY3kgPSBOVUxMOwotKyAgICBCSUdO VU0gKmlkID0gTlVMTCwgKml4ID0gTlVMTCwgKml5ID0gTlVMTDsKLSsgICAgY29uc3QgRVZQX01E ICptZCA9IE5VTEw7Ci0rICAgIEVDX0dST1VQICpncm91cCA9IE5VTEw7Ci0rICAgIGNoYXIgKmtl eXdvcmQgPSBOVUxMLCAqdmFsdWUgPSBOVUxMOwotKyAgICBpbnQgZG9fdmVyaWZ5ID0gLTEsIGV4 b3V0ID0gMDsKLSsgICAgaW50IHJ2ID0gMTsKLSsKLSsgICAgaW50IGN1cnZlX25pZHNbNV0gPSB7 IDAsIDAsIDAsIDAsIDAgfTsKLSsgICAgaW50IHBhcmFtX3NldCA9IC0xOwotKwotKyAgICBmaXBz X2FsZ3Rlc3RfaW5pdCgpOwotKwotKyAgICBpZiAoYXJnbiAmJiAhc3RyY21wKCphcmdzLCAiZWNk aHZlciIpKSB7Ci0rICAgICAgICBkb192ZXJpZnkgPSAxOwotKyAgICAgICAgYXJncysrOwotKyAg ICAgICAgYXJnbi0tOwotKyAgICB9IGVsc2UgaWYgKGFyZ24gJiYgIXN0cmNtcCgqYXJncywgImVj ZGhnZW4iKSkgewotKyAgICAgICAgZG9fdmVyaWZ5ID0gMDsKLSsgICAgICAgIGFyZ3MrKzsKLSsg ICAgICAgIGFyZ24tLTsKLSsgICAgfQotKwotKyAgICBpZiAoYXJnbiAmJiAhc3RyY21wKCphcmdz LCAiLWV4b3V0IikpIHsKLSsgICAgICAgIGV4b3V0ID0gMTsKLSsgICAgICAgIGFyZ3MrKzsKLSsg ICAgICAgIGFyZ24tLTsKLSsgICAgfQotKwotKyAgICBpZiAoZG9fdmVyaWZ5ID09IC0xKSB7Ci0r ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIFtlY2RodmVyfGVjZGhnZW58XSBbLWV4b3V0XSAo aW5maWxlIG91dGZpbGUpXG4iLAotKyAgICAgICAgICAgICAgICBhcmd2WzBdKTsKLSsgICAgICAg IGV4aXQoMSk7Ci0rICAgIH0KLSsKLSsgICAgaWYgKGFyZ24gPT0gMikgewotKyAgICAgICAgaW4g PSBmb3BlbigqYXJncywgInIiKTsKLSsgICAgICAgIGlmICghaW4pIHsKLSsgICAgICAgICAgICBm cHJpbnRmKHN0ZGVyciwgIkVycm9yIG9wZW5pbmcgaW5wdXQgZmlsZVxuIik7Ci0rICAgICAgICAg ICAgZXhpdCgxKTsKLSsgICAgICAgIH0KLSsgICAgICAgIG91dCA9IGZvcGVuKGFyZ3NbMV0sICJ3 Iik7Ci0rICAgICAgICBpZiAoIW91dCkgewotKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi RXJyb3Igb3BlbmluZyBvdXRwdXQgZmlsZVxuIik7Ci0rICAgICAgICAgICAgZXhpdCgxKTsKLSsg ICAgICAgIH0KLSsgICAgfSBlbHNlIGlmIChhcmduID09IDApIHsKLSsgICAgICAgIGluID0gc3Rk aW47Ci0rICAgICAgICBvdXQgPSBzdGRvdXQ7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBmcHJp bnRmKHN0ZGVyciwgIiVzIFtkaHZlcnxkaGdlbnxdIFstZXhvdXRdIChpbmZpbGUgb3V0ZmlsZSlc biIsCi0rICAgICAgICAgICAgICAgIGFyZ3ZbMF0pOwotKyAgICAgICAgZXhpdCgxKTsKLSsgICAg fQotKwotKyAgICB3aGlsZSAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgaW4pICE9IE5VTEwpIHsK LSsgICAgICAgIGZwdXRzKGJ1Ziwgb3V0KTsKLSsgICAgICAgIGlmIChidWZbMF0gPT0gJ1snICYm IGJ1ZlsxXSA9PSAnRScpIHsKLSsgICAgICAgICAgICBpbnQgYyA9IGJ1ZlsyXTsKLSsgICAgICAg ICAgICBpZiAoYyA8ICdBJyB8fCBjID4gJ0UnKQotKyAgICAgICAgICAgICAgICBnb3RvIHBhcnNl X2Vycm9yOwotKyAgICAgICAgICAgIHBhcmFtX3NldCA9IGMgLSAnQSc7Ci0rICAgICAgICAgICAg LyogSWYganVzdCBbRT9dIHRoZW4gaW5pdGlhbCBwYXJhbXNldCAqLwotKyAgICAgICAgICAgIGlm IChidWZbM10gPT0gJ10nKQotKyAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAg ICBpZiAoZ3JvdXApCi0rICAgICAgICAgICAgICAgIEVDX0dST1VQX2ZyZWUoZ3JvdXApOwotKyAg ICAgICAgICAgIGdyb3VwID0gRUNfR1JPVVBfbmV3X2J5X2N1cnZlX25hbWUoY3VydmVfbmlkc1tj IC0gJ0EnXSk7Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAoc3RybGVuKGJ1ZikgPiAxMCAmJiAh c3RybmNtcChidWYsICJbQ3VydmUiLCA2KSkgewotKyAgICAgICAgICAgIGludCBuaWQ7Ci0rICAg ICAgICAgICAgaWYgKHBhcmFtX3NldCA9PSAtMSkKLSsgICAgICAgICAgICAgICAgZ290byBwYXJz ZV9lcnJvcjsKLSsgICAgICAgICAgICBuaWQgPSBsb29rdXBfY3VydmUoYnVmKTsKLSsgICAgICAg ICAgICBpZiAobmlkID09IE5JRF91bmRlZikKLSsgICAgICAgICAgICAgICAgZ290byBwYXJzZV9l cnJvcjsKLSsgICAgICAgICAgICBjdXJ2ZV9uaWRzW3BhcmFtX3NldF0gPSBuaWQ7Ci0rICAgICAg ICB9Ci0rCi0rICAgICAgICBpZiAoc3RybGVuKGJ1ZikgPiA0ICYmIGJ1ZlswXSA9PSAnWycgJiYg YnVmWzJdID09ICctJykgewotKyAgICAgICAgICAgIGludCBuaWQgPSBsb29rdXBfY3VydmUyKGJ1 ZiArIDEpOwotKyAgICAgICAgICAgIGlmIChuaWQgPT0gTklEX3VuZGVmKQotKyAgICAgICAgICAg ICAgICBnb3RvIHBhcnNlX2Vycm9yOwotKyAgICAgICAgICAgIGlmIChncm91cCkKLSsgICAgICAg ICAgICAgICAgRUNfR1JPVVBfZnJlZShncm91cCk7Ci0rICAgICAgICAgICAgZ3JvdXAgPSBFQ19H Uk9VUF9uZXdfYnlfY3VydmVfbmFtZShuaWQpOwotKyAgICAgICAgICAgIGlmICghZ3JvdXApIHsK LSsgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFUlJPUjogdW5zdXBwb3J0ZWQgY3Vy dmUgJXNcbiIsIGJ1ZiArIDEpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSsgICAgICAg ICAgICB9Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBpZiAoc3RybGVuKGJ1ZikgPiA2ICYmICFz dHJuY21wKGJ1ZiwgIltFIiwgMikpIHsKLSsgICAgICAgICAgICBtZCA9IGVwYXJzZV9tZChidWYp OwotKyAgICAgICAgICAgIGlmIChtZCA9PSBOVUxMKQotKyAgICAgICAgICAgICAgICBnb3RvIHBh cnNlX2Vycm9yOwotKyAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgfQotKyAgICAgICAg aWYgKCFwYXJzZV9saW5lKCZrZXl3b3JkLCAmdmFsdWUsIGxidWYsIGJ1ZikpCi0rICAgICAgICAg ICAgY29udGludWU7Ci0rICAgICAgICBpZiAoIXN0cmNtcChrZXl3b3JkLCAiUWVDQVZTeCIpIHx8 ICFzdHJjbXAoa2V5d29yZCwgIlFDQVZTeCIpKSB7Ci0rICAgICAgICAgICAgaWYgKCFkb19oZXgy Ym4oJmN4LCB2YWx1ZSkpCi0rICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7Ci0rICAg ICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoa2V5d29yZCwgIlFlQ0FWU3kiKSB8fCAhc3RyY21wKGtl eXdvcmQsICJRQ0FWU3kiKSkgewotKyAgICAgICAgICAgIGlmICghZG9faGV4MmJuKCZjeSwgdmFs dWUpKQotKyAgICAgICAgICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwotKyAgICAgICAgICAgIGlm IChkb192ZXJpZnkgPT0gMCkKLSsgICAgICAgICAgICAgICAgZWNfb3V0cHV0X1poYXNoKG91dCwg ZXhvdXQsIGdyb3VwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVM TCwgTlVMTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN4LCBjeSwgbWQsIHJo YXNoLCByaGFzaGxlbik7Ci0rICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoa2V5d29yZCwgImRl SVVUIikpIHsKLSsgICAgICAgICAgICBpZiAoIWRvX2hleDJibigmaWQsIHZhbHVlKSkKLSsgICAg ICAgICAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKLSsgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNt cChrZXl3b3JkLCAiUWVJVVR4IikpIHsKLSsgICAgICAgICAgICBpZiAoIWRvX2hleDJibigmaXgs IHZhbHVlKSkKLSsgICAgICAgICAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKLSsgICAgICAgIH0g ZWxzZSBpZiAoIXN0cmNtcChrZXl3b3JkLCAiUWVJVVR5IikpIHsKLSsgICAgICAgICAgICBpZiAo IWRvX2hleDJibigmaXksIHZhbHVlKSkKLSsgICAgICAgICAgICAgICAgZ290byBwYXJzZV9lcnJv cjsKLSsgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChrZXl3b3JkLCAiQ0FWU0hhc2haWiIpKSB7 Ci0rICAgICAgICAgICAgaWYgKCFtZCkKLSsgICAgICAgICAgICAgICAgZ290byBwYXJzZV9lcnJv cjsKLSsgICAgICAgICAgICByaGFzaCA9IGhleDJiaW5fbSh2YWx1ZSwgJnJoYXNobGVuKTsKLSsg ICAgICAgICAgICBpZiAoIXJoYXNoIHx8IHJoYXNobGVuICE9IE1fRVZQX01EX3NpemUobWQpKQot KyAgICAgICAgICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwotKyAgICAgICAgICAgIGVjX291dHB1 dF9aaGFzaChvdXQsIGV4b3V0LCBncm91cCwgaXgsIGl5LCBpZCwgY3gsIGN5LAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtZCwgcmhhc2gsIHJoYXNobGVuKTsKLSsgICAgICAgIH0KLSsg ICAgfQotKyAgICBydiA9IDA7Ci0rIHBhcnNlX2Vycm9yOgotKyAgICBpZiAoaWQpCi0rICAgICAg ICBCTl9mcmVlKGlkKTsKLSsgICAgaWYgKGl4KQotKyAgICAgICAgQk5fZnJlZShpeCk7Ci0rICAg IGlmIChpeSkKLSsgICAgICAgIEJOX2ZyZWUoaXkpOwotKyAgICBpZiAoY3gpCi0rICAgICAgICBC Tl9mcmVlKGN4KTsKLSsgICAgaWYgKGN5KQotKyAgICAgICAgQk5fZnJlZShjeSk7Ci0rICAgIGlm IChncm91cCkKLSsgICAgICAgIEVDX0dST1VQX2ZyZWUoZ3JvdXApOwotKyAgICBpZiAoaW4gJiYg aW4gIT0gc3RkaW4pCi0rICAgICAgICBmY2xvc2UoaW4pOwotKyAgICBpZiAob3V0ICYmIG91dCAh PSBzdGRvdXQpCi0rICAgICAgICBmY2xvc2Uob3V0KTsKLSsgICAgaWYgKHJ2KQotKyAgICAgICAg ZnByaW50ZihzdGRlcnIsICJFcnJvciBQYXJzaW5nIHJlcXVlc3QgZmlsZVxuIik7Ci0rICAgIHJl dHVybiBydjsKLSt9Ci0rCi0rI2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8v Zmlwcy9jYXZzL2ZpcHNfZWNkc2F2cy5jLmZpcHMtZWMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2Zp cHMvY2F2cy9maXBzX2VjZHNhdnMuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2Nh dnMvZmlwc19lY2RzYXZzLmMuZmlwcy1lYwkyMDE1LTA0LTIyIDE5OjAwOjE5LjcyMzg4NDU2MCAr MDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2NhdnMvZmlwc19lY2RzYXZzLmMJ MjAxNS0wNC0yMiAxOTowMDoxOS43MjM4ODQ1NjAgKzAyMDAKLUBAIC0wLDAgKzEsNDg2IEBACi0r LyogZmlwcy9lY2RzYS9maXBzX2VjZHNhdnMuYyAqLwotKy8qIFdyaXR0ZW4gYnkgRHIgU3RlcGhl biBOIEhlbnNvbiAoc3RldmVAb3BlbnNzbC5vcmcpIGZvciB0aGUgT3BlblNTTAotKyAqIHByb2pl Y3QuCi0rICovCi0rLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIE9w ZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1 dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK LSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVkaXN0cmlidXRpb25z IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBu b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIuIAotKyAqCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAgICB0aGUgZG9j dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0rICog ICAgZGlzdHJpYnV0aW9uLgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBt ZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29mdHdhcmUgbXVzdCBk aXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVj dCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAq ICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cuT3BlblNTTC5v cmcvKSIKLSsgKgotKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5T U0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90 ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0rICogICAgcHJp b3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29u dGFjdAotKyAqICAgIGxpY2Vuc2luZ0BPcGVuU1NMLm9yZy4KLSsgKgotKyAqIDUuIFByb2R1Y3Rz IGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgot KyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHBy aW9yIHdyaXR0ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCi0r ICoKLSsgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJl dGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMg cHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVj dAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5PcGVu U1NMLm9yZy8pIgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3Bl blNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VEIE9SIElNUExJRUQg V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKyAqIElNUExJ RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUgotKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg T3BlblNTTCBQUk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5PVCBMSU1JVEVE IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotKyAqIExP U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0r ICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS IElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICogT0YgVEhFIFBPU1NJ QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICovCi0rCi0rI2RlZmlu ZSBPUEVOU1NMX0ZJUFNBUEkKLSsjaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3NsY29uZi5oPgotKyNp bmNsdWRlIDxzdGRpby5oPgotKwotKyNpZm5kZWYgT1BFTlNTTF9GSVBTCi0rCi0raW50IG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQotK3sKLSsgICAgcHJpbnRmKCJObyBGSVBTIEVDRFNBIHN1 cHBvcnRcbiIpOwotKyAgICByZXR1cm4gKDApOwotK30KLSsjZWxzZQotKwotKyMgaW5jbHVkZSA8 c3RyaW5nLmg+Ci0rIyBpbmNsdWRlIDxjdHlwZS5oPgotKyMgaW5jbHVkZSA8b3BlbnNzbC9lcnIu aD4KLSsjIGluY2x1ZGUgPG9wZW5zc2wvYm4uaD4KLSsjIGluY2x1ZGUgPG9wZW5zc2wvZWNkc2Eu aD4KLSsjIGluY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rIyBpbmNsdWRlICJmaXBzX3V0bC5oIgot KwotKyMgaW5jbHVkZSA8b3BlbnNzbC9vYmplY3RzLmg+Ci0rCi0rc3RhdGljIGludCBlbG9va3Vw X2N1cnZlKGNoYXIgKmluLCBjaGFyICpjdXJ2ZV9uYW1lLCBjb25zdCBFVlBfTUQgKipwbWQpCi0r ewotKyAgICBjaGFyICpjbmFtZSwgKnA7Ci0rICAgIC8qIENvcHkgYnVmZmVyIGFzIHdlIHdpbGwg Y2hhbmdlIGl0ICovCi0rICAgIHN0cmNweShjdXJ2ZV9uYW1lLCBpbik7Ci0rICAgIGNuYW1lID0g Y3VydmVfbmFtZSArIDE7Ci0rICAgIHAgPSBzdHJjaHIoY25hbWUsICddJyk7Ci0rICAgIGlmICgh cCkgewotKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJQYXJzZSBlcnJvcjogbWlzc2luZyBdXG4i KTsKLSsgICAgICAgIHJldHVybiBOSURfdW5kZWY7Ci0rICAgIH0KLSsgICAgKnAgPSAwOwotKyAg ICBwID0gc3RyY2hyKGNuYW1lLCAnLCcpOwotKyAgICBpZiAocCkgewotKyAgICAgICAgaWYgKCFw bWQpIHsKLSsgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlBhcnNlIGVycm9yOiB1bmV4cGVj dGVkIGRpZ2VzdFxuIik7Ci0rICAgICAgICAgICAgcmV0dXJuIE5JRF91bmRlZjsKLSsgICAgICAg IH0KLSsgICAgICAgICpwID0gMDsKLSsgICAgICAgIHArKzsKLSsKLSsgICAgICAgIGlmICghc3Ry Y21wKHAsICJTSEEtMSIpKQotKyAgICAgICAgICAgICpwbWQgPSBFVlBfc2hhMSgpOwotKyAgICAg ICAgZWxzZSBpZiAoIXN0cmNtcChwLCAiU0hBLTIyNCIpKQotKyAgICAgICAgICAgICpwbWQgPSBF VlBfc2hhMjI0KCk7Ci0rICAgICAgICBlbHNlIGlmICghc3RyY21wKHAsICJTSEEtMjU2IikpCi0r ICAgICAgICAgICAgKnBtZCA9IEVWUF9zaGEyNTYoKTsKLSsgICAgICAgIGVsc2UgaWYgKCFzdHJj bXAocCwgIlNIQS0zODQiKSkKLSsgICAgICAgICAgICAqcG1kID0gRVZQX3NoYTM4NCgpOwotKyAg ICAgICAgZWxzZSBpZiAoIXN0cmNtcChwLCAiU0hBLTUxMiIpKQotKyAgICAgICAgICAgICpwbWQg PSBFVlBfc2hhNTEyKCk7Ci0rICAgICAgICBlbHNlIHsKLSsgICAgICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIlVua25vd24gZGlnZXN0ICVzXG4iLCBwKTsKLSsgICAgICAgICAgICByZXR1cm4gTklE X3VuZGVmOwotKyAgICAgICAgfQotKyAgICB9IGVsc2UgaWYgKHBtZCkKLSsgICAgICAgICpwbWQg PSBFVlBfc2hhMSgpOwotKwotKyAgICBpZiAoIXN0cmNtcChjbmFtZSwgIkItMTYzIikpCi0rICAg ICAgICByZXR1cm4gTklEX3NlY3QxNjNyMjsKLSsgICAgaWYgKCFzdHJjbXAoY25hbWUsICJCLTIz MyIpKQotKyAgICAgICAgcmV0dXJuIE5JRF9zZWN0MjMzcjE7Ci0rICAgIGlmICghc3RyY21wKGNu YW1lLCAiQi0yODMiKSkKLSsgICAgICAgIHJldHVybiBOSURfc2VjdDI4M3IxOwotKyAgICBpZiAo IXN0cmNtcChjbmFtZSwgIkItNDA5IikpCi0rICAgICAgICByZXR1cm4gTklEX3NlY3Q0MDlyMTsK LSsgICAgaWYgKCFzdHJjbXAoY25hbWUsICJCLTU3MSIpKQotKyAgICAgICAgcmV0dXJuIE5JRF9z ZWN0NTcxcjE7Ci0rICAgIGlmICghc3RyY21wKGNuYW1lLCAiSy0xNjMiKSkKLSsgICAgICAgIHJl dHVybiBOSURfc2VjdDE2M2sxOwotKyAgICBpZiAoIXN0cmNtcChjbmFtZSwgIkstMjMzIikpCi0r ICAgICAgICByZXR1cm4gTklEX3NlY3QyMzNrMTsKLSsgICAgaWYgKCFzdHJjbXAoY25hbWUsICJL LTI4MyIpKQotKyAgICAgICAgcmV0dXJuIE5JRF9zZWN0MjgzazE7Ci0rICAgIGlmICghc3RyY21w KGNuYW1lLCAiSy00MDkiKSkKLSsgICAgICAgIHJldHVybiBOSURfc2VjdDQwOWsxOwotKyAgICBp ZiAoIXN0cmNtcChjbmFtZSwgIkstNTcxIikpCi0rICAgICAgICByZXR1cm4gTklEX3NlY3Q1NzFr MTsKLSsgICAgaWYgKCFzdHJjbXAoY25hbWUsICJQLTE5MiIpKQotKyAgICAgICAgcmV0dXJuIE5J RF9YOV82Ml9wcmltZTE5MnYxOwotKyAgICBpZiAoIXN0cmNtcChjbmFtZSwgIlAtMjI0IikpCi0r ICAgICAgICByZXR1cm4gTklEX3NlY3AyMjRyMTsKLSsgICAgaWYgKCFzdHJjbXAoY25hbWUsICJQ LTI1NiIpKQotKyAgICAgICAgcmV0dXJuIE5JRF9YOV82Ml9wcmltZTI1NnYxOwotKyAgICBpZiAo IXN0cmNtcChjbmFtZSwgIlAtMzg0IikpCi0rICAgICAgICByZXR1cm4gTklEX3NlY3AzODRyMTsK LSsgICAgaWYgKCFzdHJjbXAoY25hbWUsICJQLTUyMSIpKQotKyAgICAgICAgcmV0dXJuIE5JRF9z ZWNwNTIxcjE7Ci0rCi0rICAgIGZwcmludGYoc3RkZXJyLCAiVW5rbm93biBDdXJ2ZSBuYW1lICVz XG4iLCBjbmFtZSk7Ci0rICAgIHJldHVybiBOSURfdW5kZWY7Ci0rfQotKwotK3N0YXRpYyBpbnQg ZWNfZ2V0X3B1YmtleShFQ19LRVkgKmtleSwgQklHTlVNICp4LCBCSUdOVU0gKnkpCi0rewotKyAg ICBjb25zdCBFQ19QT0lOVCAqcHQ7Ci0rICAgIGNvbnN0IEVDX0dST1VQICpncnA7Ci0rICAgIGNv bnN0IEVDX01FVEhPRCAqbWV0aDsKLSsgICAgaW50IHJ2OwotKyAgICBCTl9DVFggKmN0eDsKLSsg ICAgY3R4ID0gQk5fQ1RYX25ldygpOwotKyAgICBpZiAoIWN0eCkKLSsgICAgICAgIHJldHVybiAw OwotKyAgICBncnAgPSBFQ19LRVlfZ2V0MF9ncm91cChrZXkpOwotKyAgICBwdCA9IEVDX0tFWV9n ZXQwX3B1YmxpY19rZXkoa2V5KTsKLSsgICAgbWV0aCA9IEVDX0dST1VQX21ldGhvZF9vZihncnAp OwotKyAgICBpZiAoRUNfTUVUSE9EX2dldF9maWVsZF90eXBlKG1ldGgpID09IE5JRF9YOV82Ml9w cmltZV9maWVsZCkKLSsgICAgICAgIHJ2ID0gRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZGluYXRl c19HRnAoZ3JwLCBwdCwgeCwgeSwgY3R4KTsKLSsgICAgZWxzZQotKyMgaWZkZWYgT1BFTlNTTF9O T19FQzJNCi0rICAgIHsKLSsgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRVJST1I6IEdGMm0gbm90 IHN1cHBvcnRlZFxuIik7Ci0rICAgICAgICBleGl0KDEpOwotKyAgICB9Ci0rIyBlbHNlCi0rICAg ICAgICBydiA9IEVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0YybShncnAsIHB0LCB4 LCB5LCBjdHgpOwotKyMgZW5kaWYKLSsKLSsgICAgQk5fQ1RYX2ZyZWUoY3R4KTsKLSsKLSsgICAg cmV0dXJuIHJ2OwotKwotK30KLSsKLStzdGF0aWMgaW50IEtleVBhaXIoRklMRSAqaW4sIEZJTEUg Km91dCkKLSt7Ci0rICAgIGNoYXIgYnVmWzIwNDhdLCBsYnVmWzIwNDhdOwotKyAgICBjaGFyICpr ZXl3b3JkLCAqdmFsdWU7Ci0rICAgIGludCBjdXJ2ZV9uaWQgPSBOSURfdW5kZWY7Ci0rICAgIGlu dCBpLCBjb3VudDsKLSsgICAgQklHTlVNICpReCA9IE5VTEwsICpReSA9IE5VTEw7Ci0rICAgIGNv bnN0IEJJR05VTSAqZCA9IE5VTEw7Ci0rICAgIEVDX0tFWSAqa2V5ID0gTlVMTDsKLSsgICAgUXgg PSBCTl9uZXcoKTsKLSsgICAgUXkgPSBCTl9uZXcoKTsKLSsgICAgd2hpbGUgKGZnZXRzKGJ1Ziwg c2l6ZW9mIGJ1ZiwgaW4pICE9IE5VTEwpIHsKLSsgICAgICAgIGlmICgqYnVmID09ICdbJyAmJiBi dWZbMl0gPT0gJy0nKSB7Ci0rICAgICAgICAgICAgaWYgKGJ1ZlsyXSA9PSAnLScpCi0rICAgICAg ICAgICAgICAgIGN1cnZlX25pZCA9IGVsb29rdXBfY3VydmUoYnVmLCBsYnVmLCBOVUxMKTsKLSsg ICAgICAgICAgICBmcHV0cyhidWYsIG91dCk7Ci0rICAgICAgICAgICAgY29udGludWU7Ci0rICAg ICAgICB9Ci0rICAgICAgICBpZiAoIXBhcnNlX2xpbmUoJmtleXdvcmQsICZ2YWx1ZSwgbGJ1Ziwg YnVmKSkgewotKyAgICAgICAgICAgIGZwdXRzKGJ1Ziwgb3V0KTsKLSsgICAgICAgICAgICBjb250 aW51ZTsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmICghc3RyY21wKGtleXdvcmQsICJOIikpIHsK LSsgICAgICAgICAgICBjb3VudCA9IGF0b2kodmFsdWUpOwotKwotKyAgICAgICAgICAgIGZvciAo aSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0rCi0rICAgICAgICAgICAgICAgIGtleSA9IEVDX0tF WV9uZXdfYnlfY3VydmVfbmFtZShjdXJ2ZV9uaWQpOwotKyAgICAgICAgICAgICAgICBpZiAoIUVD X0tFWV9nZW5lcmF0ZV9rZXkoa2V5KSkgewotKyAgICAgICAgICAgICAgICAgICAgZnByaW50Zihz dGRlcnIsICJFcnJvciBnZW5lcmF0aW5nIGtleVxuIik7Ci0rICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gMDsKLSsgICAgICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgICAgICBpZiAoIWVj X2dldF9wdWJrZXkoa2V5LCBReCwgUXkpKSB7Ci0rICAgICAgICAgICAgICAgICAgICBmcHJpbnRm KHN0ZGVyciwgIkVycm9yIGdldHRpbmcgcHVibGljIGtleVxuIik7Ci0rICAgICAgICAgICAgICAg ICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgICAgICBk ID0gRUNfS0VZX2dldDBfcHJpdmF0ZV9rZXkoa2V5KTsKLSsKLSsgICAgICAgICAgICAgICAgZG9f Ym5fcHJpbnRfbmFtZShvdXQsICJkIiwgZCk7Ci0rICAgICAgICAgICAgICAgIGRvX2JuX3ByaW50 X25hbWUob3V0LCAiUXgiLCBReCk7Ci0rICAgICAgICAgICAgICAgIGRvX2JuX3ByaW50X25hbWUo b3V0LCAiUXkiLCBReSk7Ci0rICAgICAgICAgICAgICAgIGZwdXRzKFJFU1BfRU9MLCBvdXQpOwot KyAgICAgICAgICAgICAgICBFQ19LRVlfZnJlZShrZXkpOwotKwotKyAgICAgICAgICAgIH0KLSsK LSsgICAgICAgIH0KLSsKLSsgICAgfQotKyAgICBCTl9mcmVlKFF4KTsKLSsgICAgQk5fZnJlZShR eSk7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLStzdGF0aWMgaW50IFBLVihGSUxFICppbiwgRklM RSAqb3V0KQotK3sKLSsKLSsgICAgY2hhciBidWZbMjA0OF0sIGxidWZbMjA0OF07Ci0rICAgIGNo YXIgKmtleXdvcmQsICp2YWx1ZTsKLSsgICAgaW50IGN1cnZlX25pZCA9IE5JRF91bmRlZjsKLSsg ICAgQklHTlVNICpReCA9IE5VTEwsICpReSA9IE5VTEw7Ci0rICAgIEVDX0tFWSAqa2V5ID0gTlVM TDsKLSsgICAgd2hpbGUgKGZnZXRzKGJ1Ziwgc2l6ZW9mIGJ1ZiwgaW4pICE9IE5VTEwpIHsKLSsg ICAgICAgIGZwdXRzKGJ1Ziwgb3V0KTsKLSsgICAgICAgIGlmICgqYnVmID09ICdbJyAmJiBidWZb Ml0gPT0gJy0nKSB7Ci0rICAgICAgICAgICAgY3VydmVfbmlkID0gZWxvb2t1cF9jdXJ2ZShidWYs IGxidWYsIE5VTEwpOwotKyAgICAgICAgICAgIGlmIChjdXJ2ZV9uaWQgPT0gTklEX3VuZGVmKQot KyAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmICgh cGFyc2VfbGluZSgma2V5d29yZCwgJnZhbHVlLCBsYnVmLCBidWYpKQotKyAgICAgICAgICAgIGNv bnRpbnVlOwotKyAgICAgICAgaWYgKCFzdHJjbXAoa2V5d29yZCwgIlF4IikpIHsKLSsgICAgICAg ICAgICBpZiAoIWRvX2hleDJibigmUXgsIHZhbHVlKSkgewotKyAgICAgICAgICAgICAgICBmcHJp bnRmKHN0ZGVyciwgIkludmFsaWQgUXggdmFsdWVcbiIpOwotKyAgICAgICAgICAgICAgICByZXR1 cm4gMDsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAoIXN0cmNtcChr ZXl3b3JkLCAiUXkiKSkgewotKyAgICAgICAgICAgIGludCBydjsKLSsgICAgICAgICAgICBpZiAo IWRvX2hleDJibigmUXksIHZhbHVlKSkgewotKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy ciwgIkludmFsaWQgUXkgdmFsdWVcbiIpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsg ICAgICAgICAgICB9Ci0rICAgICAgICAgICAga2V5ID0gRUNfS0VZX25ld19ieV9jdXJ2ZV9uYW1l KGN1cnZlX25pZCk7Ci0rICAgICAgICAgICAgbm9fZXJyID0gMTsKLSsgICAgICAgICAgICBydiA9 IEVDX0tFWV9zZXRfcHVibGljX2tleV9hZmZpbmVfY29vcmRpbmF0ZXMoa2V5LCBReCwgUXkpOwot KyAgICAgICAgICAgIG5vX2VyciA9IDA7Ci0rICAgICAgICAgICAgRUNfS0VZX2ZyZWUoa2V5KTsK LSsgICAgICAgICAgICBmcHJpbnRmKG91dCwgIlJlc3VsdCA9ICVzIiBSRVNQX0VPTCwgcnYgPyAi UCIgOiAiRiIpOwotKyAgICAgICAgfQotKwotKyAgICB9Ci0rICAgIEJOX2ZyZWUoUXgpOwotKyAg ICBCTl9mcmVlKFF5KTsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBpbnQgU2lnR2Vu KEZJTEUgKmluLCBGSUxFICpvdXQpCi0rewotKyAgICBjaGFyIGJ1ZlsyMDQ4XSwgbGJ1ZlsyMDQ4 XTsKLSsgICAgY2hhciAqa2V5d29yZCwgKnZhbHVlOwotKyAgICB1bnNpZ25lZCBjaGFyICptc2c7 Ci0rICAgIGludCBjdXJ2ZV9uaWQgPSBOSURfdW5kZWY7Ci0rICAgIGxvbmcgbWxlbjsKLSsgICAg QklHTlVNICpReCA9IE5VTEwsICpReSA9IE5VTEw7Ci0rICAgIEVDX0tFWSAqa2V5ID0gTlVMTDsK LSsgICAgRUNEU0FfU0lHICpzaWcgPSBOVUxMOwotKyAgICBjb25zdCBFVlBfTUQgKmRpZ2VzdCA9 IE5VTEw7Ci0rICAgIFF4ID0gQk5fbmV3KCk7Ci0rICAgIFF5ID0gQk5fbmV3KCk7Ci0rICAgIHdo aWxlIChmZ2V0cyhidWYsIHNpemVvZiBidWYsIGluKSAhPSBOVUxMKSB7Ci0rICAgICAgICBmcHV0 cyhidWYsIG91dCk7Ci0rICAgICAgICBpZiAoKmJ1ZiA9PSAnWycpIHsKLSsgICAgICAgICAgICBj dXJ2ZV9uaWQgPSBlbG9va3VwX2N1cnZlKGJ1ZiwgbGJ1ZiwgJmRpZ2VzdCk7Ci0rICAgICAgICAg ICAgaWYgKGN1cnZlX25pZCA9PSBOSURfdW5kZWYpCi0rICAgICAgICAgICAgICAgIHJldHVybiAw OwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKCFwYXJzZV9saW5lKCZrZXl3b3JkLCAmdmFsdWUs IGxidWYsIGJ1ZikpCi0rICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICBpZiAoIXN0cmNt cChrZXl3b3JkLCAiTXNnIikpIHsKLSsgICAgICAgICAgICBtc2cgPSBoZXgyYmluX20odmFsdWUs ICZtbGVuKTsKLSsgICAgICAgICAgICBpZiAoIW1zZykgewotKyAgICAgICAgICAgICAgICBmcHJp bnRmKHN0ZGVyciwgIkludmFsaWQgTWVzc2FnZVxuIik7Ci0rICAgICAgICAgICAgICAgIHJldHVy biAwOwotKyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICBrZXkgPSBFQ19LRVlfbmV3X2J5 X2N1cnZlX25hbWUoY3VydmVfbmlkKTsKLSsgICAgICAgICAgICBpZiAoIUVDX0tFWV9nZW5lcmF0 ZV9rZXkoa2V5KSkgewotKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGdl bmVyYXRpbmcga2V5XG4iKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAg ICAgfQotKwotKyAgICAgICAgICAgIGlmICghZWNfZ2V0X3B1YmtleShrZXksIFF4LCBReSkpIHsK LSsgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBnZXR0aW5nIHB1YmxpYyBr ZXlcbiIpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICB9Ci0rCi0r ICAgICAgICAgICAgc2lnID0gRklQU19lY2RzYV9zaWduKGtleSwgbXNnLCBtbGVuLCBkaWdlc3Qp OwotKwotKyAgICAgICAgICAgIGlmICghc2lnKSB7Ci0rICAgICAgICAgICAgICAgIGZwcmludGYo c3RkZXJyLCAiRXJyb3Igc2lnbmluZyBtZXNzYWdlXG4iKTsKLSsgICAgICAgICAgICAgICAgcmV0 dXJuIDA7Ci0rICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgIGRvX2JuX3ByaW50X25hbWUo b3V0LCAiUXgiLCBReCk7Ci0rICAgICAgICAgICAgZG9fYm5fcHJpbnRfbmFtZShvdXQsICJReSIs IFF5KTsKLSsgICAgICAgICAgICBkb19ibl9wcmludF9uYW1lKG91dCwgIlIiLCBzaWctPnIpOwot KyAgICAgICAgICAgIGRvX2JuX3ByaW50X25hbWUob3V0LCAiUyIsIHNpZy0+cyk7Ci0rCi0rICAg ICAgICAgICAgRUNfS0VZX2ZyZWUoa2V5KTsKLSsgICAgICAgICAgICBPUEVOU1NMX2ZyZWUobXNn KTsKLSsgICAgICAgICAgICBGSVBTX2VjZHNhX3NpZ19mcmVlKHNpZyk7Ci0rCi0rICAgICAgICB9 Ci0rCi0rICAgIH0KLSsgICAgQk5fZnJlZShReCk7Ci0rICAgIEJOX2ZyZWUoUXkpOwotKyAgICBy ZXR1cm4gMTsKLSt9Ci0rCi0rc3RhdGljIGludCBTaWdWZXIoRklMRSAqaW4sIEZJTEUgKm91dCkK LSt7Ci0rICAgIGNoYXIgYnVmWzIwNDhdLCBsYnVmWzIwNDhdOwotKyAgICBjaGFyICprZXl3b3Jk LCAqdmFsdWU7Ci0rICAgIHVuc2lnbmVkIGNoYXIgKm1zZyA9IE5VTEw7Ci0rICAgIGludCBjdXJ2 ZV9uaWQgPSBOSURfdW5kZWY7Ci0rICAgIGxvbmcgbWxlbjsKLSsgICAgQklHTlVNICpReCA9IE5V TEwsICpReSA9IE5VTEw7Ci0rICAgIEVDX0tFWSAqa2V5ID0gTlVMTDsKLSsgICAgRUNEU0FfU0lH IHNnLCAqc2lnID0gJnNnOwotKyAgICBjb25zdCBFVlBfTUQgKmRpZ2VzdCA9IE5VTEw7Ci0rICAg IHNpZy0+ciA9IE5VTEw7Ci0rICAgIHNpZy0+cyA9IE5VTEw7Ci0rICAgIHdoaWxlIChmZ2V0cyhi dWYsIHNpemVvZiBidWYsIGluKSAhPSBOVUxMKSB7Ci0rICAgICAgICBmcHV0cyhidWYsIG91dCk7 Ci0rICAgICAgICBpZiAoKmJ1ZiA9PSAnWycpIHsKLSsgICAgICAgICAgICBjdXJ2ZV9uaWQgPSBl bG9va3VwX2N1cnZlKGJ1ZiwgbGJ1ZiwgJmRpZ2VzdCk7Ci0rICAgICAgICAgICAgaWYgKGN1cnZl X25pZCA9PSBOSURfdW5kZWYpCi0rICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAg fQotKyAgICAgICAgaWYgKCFwYXJzZV9saW5lKCZrZXl3b3JkLCAmdmFsdWUsIGxidWYsIGJ1Zikp Ci0rICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICBpZiAoIXN0cmNtcChrZXl3b3JkLCAi TXNnIikpIHsKLSsgICAgICAgICAgICBtc2cgPSBoZXgyYmluX20odmFsdWUsICZtbGVuKTsKLSsg ICAgICAgICAgICBpZiAoIW1zZykgewotKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg IkludmFsaWQgTWVzc2FnZVxuIik7Ci0rICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAg ICAgICAgIH0KLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGlmICghc3RyY21wKGtleXdvcmQsICJR eCIpKSB7Ci0rICAgICAgICAgICAgaWYgKCFkb19oZXgyYm4oJlF4LCB2YWx1ZSkpIHsKLSsgICAg ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIFF4IHZhbHVlXG4iKTsKLSsgICAg ICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotKyAgICAg ICAgaWYgKCFzdHJjbXAoa2V5d29yZCwgIlF5IikpIHsKLSsgICAgICAgICAgICBpZiAoIWRvX2hl eDJibigmUXksIHZhbHVlKSkgewotKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIklu dmFsaWQgUXkgdmFsdWVcbiIpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAg ICAgICB9Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAoIXN0cmNtcChrZXl3b3JkLCAiUiIpKSB7 Ci0rICAgICAgICAgICAgaWYgKCFkb19oZXgyYm4oJnNpZy0+ciwgdmFsdWUpKSB7Ci0rICAgICAg ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBSIHZhbHVlXG4iKTsKLSsgICAgICAg ICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotKyAgICAgICAg aWYgKCFzdHJjbXAoa2V5d29yZCwgIlMiKSkgewotKyAgICAgICAgICAgIGludCBydjsKLSsgICAg ICAgICAgICBpZiAoIWRvX2hleDJibigmc2lnLT5zLCB2YWx1ZSkpIHsKLSsgICAgICAgICAgICAg ICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIFMgdmFsdWVcbiIpOwotKyAgICAgICAgICAgICAg ICByZXR1cm4gMDsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAga2V5ID0gRUNfS0VZX25l d19ieV9jdXJ2ZV9uYW1lKGN1cnZlX25pZCk7Ci0rICAgICAgICAgICAgcnYgPSBFQ19LRVlfc2V0 X3B1YmxpY19rZXlfYWZmaW5lX2Nvb3JkaW5hdGVzKGtleSwgUXgsIFF5KTsKLSsKLSsgICAgICAg ICAgICBpZiAocnYgIT0gMSkgewotKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVy cm9yIHNldHRpbmcgcHVibGljIGtleVxuIik7Ci0rICAgICAgICAgICAgICAgIHJldHVybiAwOwot KyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICBub19lcnIgPSAxOwotKyAgICAgICAgICAg IHJ2ID0gRklQU19lY2RzYV92ZXJpZnkoa2V5LCBtc2csIG1sZW4sIGRpZ2VzdCwgc2lnKTsKLSsg ICAgICAgICAgICBFQ19LRVlfZnJlZShrZXkpOwotKyAgICAgICAgICAgIGlmIChtc2cpCi0rICAg ICAgICAgICAgICAgIE9QRU5TU0xfZnJlZShtc2cpOwotKyAgICAgICAgICAgIG5vX2VyciA9IDA7 Ci0rCi0rICAgICAgICAgICAgZnByaW50ZihvdXQsICJSZXN1bHQgPSAlcyIgUkVTUF9FT0wsIHJ2 ID8gIlAiIDogIkYiKTsKLSsgICAgICAgIH0KLSsKLSsgICAgfQotKyAgICBpZiAoc2lnLT5yKQot KyAgICAgICAgQk5fZnJlZShzaWctPnIpOwotKyAgICBpZiAoc2lnLT5zKQotKyAgICAgICAgQk5f ZnJlZShzaWctPnMpOwotKyAgICBpZiAoUXgpCi0rICAgICAgICBCTl9mcmVlKFF4KTsKLSsgICAg aWYgKFF5KQotKyAgICAgICAgQk5fZnJlZShReSk7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLSsj IGlmZGVmIEZJUFNfQUxHVlMKLStpbnQgZmlwc19lY2RzYXZzX21haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQotKyMgZWxzZQotK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSsjIGVu ZGlmCi0rewotKyAgICBGSUxFICppbiA9IE5VTEwsICpvdXQgPSBOVUxMOwotKyAgICBjb25zdCBj aGFyICpjbWQgPSBhcmd2WzFdOwotKyAgICBpbnQgcnYgPSAwOwotKyAgICBmaXBzX2FsZ3Rlc3Rf aW5pdCgpOwotKwotKyAgICBpZiAoYXJnYyA9PSA0KSB7Ci0rICAgICAgICBpbiA9IGZvcGVuKGFy Z3ZbMl0sICJyIik7Ci0rICAgICAgICBpZiAoIWluKSB7Ci0rICAgICAgICAgICAgZnByaW50Zihz dGRlcnIsICJFcnJvciBvcGVuaW5nIGlucHV0IGZpbGVcbiIpOwotKyAgICAgICAgICAgIGV4aXQo MSk7Ci0rICAgICAgICB9Ci0rICAgICAgICBvdXQgPSBmb3Blbihhcmd2WzNdLCAidyIpOwotKyAg ICAgICAgaWYgKCFvdXQpIHsKLSsgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIG9w ZW5pbmcgb3V0cHV0IGZpbGVcbiIpOwotKyAgICAgICAgICAgIGV4aXQoMSk7Ci0rICAgICAgICB9 Ci0rICAgIH0gZWxzZSBpZiAoYXJnYyA9PSAyKSB7Ci0rICAgICAgICBpbiA9IHN0ZGluOwotKyAg ICAgICAgb3V0ID0gc3Rkb3V0OwotKyAgICB9Ci0rCi0rICAgIGlmICghY21kKSB7Ci0rICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgImZpcHNfZWNkc2F2cyBbS2V5UGFpcnxQS1Z8U2lnR2VufFNpZ1Zl cl1cbiIpOwotKyAgICAgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsgICAgaWYgKCFzdHJjbXAoY21k LCAiS2V5UGFpciIpKQotKyAgICAgICAgcnYgPSBLZXlQYWlyKGluLCBvdXQpOwotKyAgICBlbHNl IGlmICghc3RyY21wKGNtZCwgIlBLViIpKQotKyAgICAgICAgcnYgPSBQS1YoaW4sIG91dCk7Ci0r ICAgIGVsc2UgaWYgKCFzdHJjbXAoY21kLCAiU2lnVmVyIikpCi0rICAgICAgICBydiA9IFNpZ1Zl cihpbiwgb3V0KTsKLSsgICAgZWxzZSBpZiAoIXN0cmNtcChjbWQsICJTaWdHZW4iKSkKLSsgICAg ICAgIHJ2ID0gU2lnR2VuKGluLCBvdXQpOwotKyAgICBlbHNlIHsKLSsgICAgICAgIGZwcmludGYo c3RkZXJyLCAiVW5rbm93biBjb21tYW5kICVzXG4iLCBjbWQpOwotKyAgICAgICAgcmV0dXJuIDE7 Ci0rICAgIH0KLSsKLSsgICAgaWYgKGFyZ2MgPT0gNCkgewotKyAgICAgICAgZmNsb3NlKGluKTsK LSsgICAgICAgIGZjbG9zZShvdXQpOwotKyAgICB9Ci0rCi0rICAgIGlmIChydiA8PSAwKSB7Ci0r ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIHJ1bm5pbmcgJXNcbiIsIGNtZCk7Ci0rICAg ICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rI2VuZGlm Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2VjZGhfc2VsZnRlc3Qu Yy5maXBzLWVjIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZWNkaF9zZWxmdGVzdC5j Ci0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19lY2RoX3NlbGZ0ZXN0LmMuZmlw cy1lYwkyMDE1LTA0LTIyIDE5OjAwOjE5LjcyNDg4NDU4MyArMDIwMAotKysrIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9maXBzL2ZpcHNfZWNkaF9zZWxmdGVzdC5jCTIwMTUtMDQtMjIgMTk6MDA6MTku NzI0ODg0NTgzICswMjAwCi1AQCAtMCwwICsxLDI0MiBAQAotKy8qIGZpcHMvZWNkaC9maXBzX2Vj ZGhfc2VsZnRlc3QuYyAqLwotKy8qIFdyaXR0ZW4gYnkgRHIgU3RlcGhlbiBOIEhlbnNvbiAoc3Rl dmVAb3BlbnNzbC5vcmcpIGZvciB0aGUgT3BlblNTTAotKyAqIHByb2plY3QgMjAxMS4KLSsgKi8K LSsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9q ZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1 c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlm aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoK LSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl IGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9u IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmli dXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcg ZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhl IGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVz IHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVz ZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgotKyAq Ci0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0 IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz IGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVu IHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICog ICAgbGljZW5zaW5nQE9wZW5TU0wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBm cm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9y IG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRl bgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYu IFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBm b2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGlu Y2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAg Zm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLyki Ci0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pF Q1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVT LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICog UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBS T0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NV UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0Us IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVS IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB Q1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug T1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg U1VDSCBEQU1BR0UuCi0rICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKgotKyAqLwotKwotKyNkZWZpbmUgT1BF TlNTTF9GSVBTQVBJCi0rCi0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxvcGVuc3Ns L2NyeXB0by5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2VjLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wv ZWNkaC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9l cnIuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9ibi5o PgotKwotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsKLSsjIGluY2x1ZGUgImZpcHNfbG9jbC5oIgot KwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHAyNTZfcWNhdnN4W10gPSB7Ci0rICAgIDB4 NTIsIDB4YzYsIDB4YTUsIDB4NzUsIDB4ZjMsIDB4MDQsIDB4OTgsIDB4YjMsIDB4MjksIDB4NjYs IDB4MGMsIDB4NjIsCi0rICAgIDB4MTgsIDB4NjAsIDB4NTUsIDB4NDEsIDB4NTksIDB4ZDQsIDB4 NjAsIDB4ODUsIDB4OTksIDB4YzEsIDB4NTEsIDB4MTMsCi0rICAgIDB4NmYsIDB4OTcsIDB4ODUs IDB4OTMsIDB4MzMsIDB4MzQsIDB4MDcsIDB4NTAKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIHAyNTZfcWNhdnN5W10gPSB7Ci0rICAgIDB4NmYsIDB4NjksIDB4MjQsIDB4ZWIs IDB4ZTksIDB4M2IsIDB4YTcsIDB4Y2MsIDB4NDcsIDB4MTcsIDB4YWEsIDB4M2YsCi0rICAgIDB4 NzAsIDB4ZmMsIDB4MTAsIDB4NzMsIDB4MGEsIDB4Y2QsIDB4MjEsIDB4ZWUsIDB4MjksIDB4MTks IDB4MWYsIDB4YWYsCi0rICAgIDB4YjQsIDB4MWMsIDB4MWUsIDB4YzIsIDB4OGUsIDB4OTcsIDB4 ODEsIDB4NmUKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHAyNTZfcWl1dHhb XSA9IHsKLSsgICAgMHg3MSwgMHg0NiwgMHg4OCwgMHgwOCwgMHg5MiwgMHgyMSwgMHgxYiwgMHgx MCwgMHgyMSwgMHg3NCwgMHhmZiwgMHgwYywKLSsgICAgMHg5NCwgMHhkZSwgMHgzNCwgMHg3Yywg MHg4NiwgMHg3NCwgMHhiZSwgMHg2NywgMHg0MSwgMHg2OCwgMHhkNCwgMHhjMSwKLSsgICAgMHhl NSwgMHg3NSwgMHg2MywgMHg5YywgMHhhNywgMHg0NiwgMHg5MywgMHg2ZgotK307Ci0rCi0rc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcDI1Nl9xaXV0eVtdID0gewotKyAgICAweDMzLCAweDQw LCAweGE5LCAweDZhLCAweGY1LCAweDIwLCAweGI1LCAweDllLCAweGZjLCAweDYwLCAweDFhLCAw eGFlLAotKyAgICAweDNkLCAweGY4LCAweDIxLCAweGQyLCAweGE3LCAweGNhLCAweDUyLCAweDM0 LCAweGI5LCAweDVmLCAweDI3LCAweDc1LAotKyAgICAweDZjLCAweDgxLCAweGJlLCAweDMyLCAw eDRkLCAweGJhLCAweGJiLCAweGY4Ci0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBwMjU2X3FpdXRkW10gPSB7Ci0rICAgIDB4MWEsIDB4NDgsIDB4NTUsIDB4NmIsIDB4MTEsIDB4 YmUsIDB4OTIsIDB4ZDQsIDB4MWMsIDB4ZDcsIDB4NDUsIDB4YzMsCi0rICAgIDB4ODIsIDB4ODEs IDB4NTEsIDB4ZjEsIDB4MjMsIDB4NDAsIDB4YjcsIDB4ODMsIDB4ZmQsIDB4MDEsIDB4NmQsIDB4 YmMsCi0rICAgIDB4YTEsIDB4NjYsIDB4YWYsIDB4MGEsIDB4MDMsIDB4MjMsIDB4Y2QsIDB4YzgK LSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHAyNTZfeml1dFtdID0gewotKyAg ICAweDc3LCAweDJhLCAweDFlLCAweDM3LCAweGVlLCAweGU2LCAweDUxLCAweDAyLCAweDcxLCAw eDQwLCAweGY4LCAweDZhLAotKyAgICAweDM2LCAweGY4LCAweDY1LCAweDYxLCAweDJiLCAweDE4 LCAweDcxLCAweDgyLCAweDIzLCAweGU2LCAweGYyLCAweDc3LAotKyAgICAweGNlLCAweGVjLCAw eGI4LCAweDQ5LCAweGM3LCAweGJmLCAweDM2LCAweDRmCi0rfTsKLSsKLSt0eXBlZGVmIHN0cnVj dCB7Ci0rICAgIGludCBjdXJ2ZTsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hhciAqeDE7Ci0rICAg IHNpemVfdCB4MWxlbjsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hhciAqeTE7Ci0rICAgIHNpemVf dCB5MWxlbjsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZDE7Ci0rICAgIHNpemVfdCBkMWxl bjsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hhciAqeDI7Ci0rICAgIHNpemVfdCB4MmxlbjsKLSsg ICAgY29uc3QgdW5zaWduZWQgY2hhciAqeTI7Ci0rICAgIHNpemVfdCB5MmxlbjsKLSsgICAgY29u c3QgdW5zaWduZWQgY2hhciAqejsKLSsgICAgc2l6ZV90IHpsZW47Ci0rfSBFQ0RIX1NFTEZURVNU X0RBVEE7Ci0rCi0rIyBkZWZpbmUgbWFrZV9lY2RoX3Rlc3QobmlkLCBwcikgeyBuaWQsIFwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByIyNfcWl1dHgsIHNpemVvZihwciMjX3Fp dXR4KSwgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHIjI19xaXV0eSwgc2l6 ZW9mKHByIyNfcWl1dHkpLCBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwciMj X3FpdXRkLCBzaXplb2YocHIjI19xaXV0ZCksIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHByIyNfcWNhdnN4LCBzaXplb2YocHIjI19xY2F2c3gpLCBcCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwciMjX3FjYXZzeSwgc2l6ZW9mKHByIyNfcWNhdnN5KSwgXAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHIjI196aXV0LCBzaXplb2YocHIjI196 aXV0KSB9Ci0rCi0rc3RhdGljIEVDREhfU0VMRlRFU1RfREFUQSB0ZXN0X2VjZGhfZGF0YVtdID0g ewotKyAgICBtYWtlX2VjZGhfdGVzdChOSURfWDlfNjJfcHJpbWUyNTZ2MSwgcDI1NiksCi0rfTsK LSsKLStpbnQgRklQU19zZWxmdGVzdF9lY2RoKHZvaWQpCi0rewotKyAgICBFQ19LRVkgKmVjMSA9 IE5VTEwsICplYzIgPSBOVUxMOwotKyAgICBjb25zdCBFQ19QT0lOVCAqZWNwID0gTlVMTDsKLSsg ICAgQklHTlVNICp4ID0gTlVMTCwgKnkgPSBOVUxMLCAqZCA9IE5VTEw7Ci0rICAgIHVuc2lnbmVk IGNoYXIgKnp0bXAgPSBOVUxMOwotKyAgICBpbnQgcnYgPSAxOwotKyAgICBzaXplX3QgaTsKLSsK LSsgICAgZm9yIChpID0gMDsgaSA8IHNpemVvZih0ZXN0X2VjZGhfZGF0YSkgLyBzaXplb2YoRUNE SF9TRUxGVEVTVF9EQVRBKTsgaSsrKSB7Ci0rICAgICAgICBFQ0RIX1NFTEZURVNUX0RBVEEgKmVj ZCA9IHRlc3RfZWNkaF9kYXRhICsgaTsKLSsgICAgICAgIGlmICghZmlwc19wb3N0X3N0YXJ0ZWQo RklQU19URVNUX0VDREgsIGVjZC0+Y3VydmUsIDApKQotKyAgICAgICAgICAgIGNvbnRpbnVlOwot KyAgICAgICAgenRtcCA9IE9QRU5TU0xfbWFsbG9jKGVjZC0+emxlbik7Ci0rCi0rICAgICAgICB4 ID0gQk5fYmluMmJuKGVjZC0+eDEsIGVjZC0+eDFsZW4sIHgpOwotKyAgICAgICAgeSA9IEJOX2Jp bjJibihlY2QtPnkxLCBlY2QtPnkxbGVuLCB5KTsKLSsgICAgICAgIGQgPSBCTl9iaW4yYm4oZWNk LT5kMSwgZWNkLT5kMWxlbiwgZCk7Ci0rCi0rICAgICAgICBpZiAoIXggfHwgIXkgfHwgIWQgfHwg IXp0bXApIHsKLSsgICAgICAgICAgICBydiA9IC0xOwotKyAgICAgICAgICAgIGdvdG8gZXJyOwot KyAgICAgICAgfQotKwotKyAgICAgICAgZWMxID0gRUNfS0VZX25ld19ieV9jdXJ2ZV9uYW1lKGVj ZC0+Y3VydmUpOwotKyAgICAgICAgaWYgKCFlYzEpIHsKLSsgICAgICAgICAgICBydiA9IC0xOwot KyAgICAgICAgICAgIGdvdG8gZXJyOwotKyAgICAgICAgfQotKyAgICAgICAgRUNfS0VZX3NldF9m bGFncyhlYzEsIEVDX0ZMQUdfQ09GQUNUT1JfRUNESCk7Ci0rCi0rICAgICAgICBpZiAoIUVDX0tF WV9zZXRfcHVibGljX2tleV9hZmZpbmVfY29vcmRpbmF0ZXMoZWMxLCB4LCB5KSkgewotKyAgICAg ICAgICAgIHJ2ID0gLTE7Ci0rICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgICAgICB9Ci0rCi0r ICAgICAgICBpZiAoIUVDX0tFWV9zZXRfcHJpdmF0ZV9rZXkoZWMxLCBkKSkgewotKyAgICAgICAg ICAgIHJ2ID0gLTE7Ci0rICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgICAgICB9Ci0rCi0rICAg ICAgICB4ID0gQk5fYmluMmJuKGVjZC0+eDIsIGVjZC0+eDJsZW4sIHgpOwotKyAgICAgICAgeSA9 IEJOX2JpbjJibihlY2QtPnkyLCBlY2QtPnkybGVuLCB5KTsKLSsKLSsgICAgICAgIGlmICgheCB8 fCAheSkgewotKyAgICAgICAgICAgIHJ2ID0gLTE7Ci0rICAgICAgICAgICAgZ290byBlcnI7Ci0r ICAgICAgICB9Ci0rCi0rICAgICAgICBlYzIgPSBFQ19LRVlfbmV3X2J5X2N1cnZlX25hbWUoZWNk LT5jdXJ2ZSk7Ci0rICAgICAgICBpZiAoIWVjMikgewotKyAgICAgICAgICAgIHJ2ID0gLTE7Ci0r ICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgICAgICB9Ci0rICAgICAgICBFQ19LRVlfc2V0X2Zs YWdzKGVjMSwgRUNfRkxBR19DT0ZBQ1RPUl9FQ0RIKTsKLSsKLSsgICAgICAgIGlmICghRUNfS0VZ X3NldF9wdWJsaWNfa2V5X2FmZmluZV9jb29yZGluYXRlcyhlYzIsIHgsIHkpKSB7Ci0rICAgICAg ICAgICAgcnYgPSAtMTsKLSsgICAgICAgICAgICBnb3RvIGVycjsKLSsgICAgICAgIH0KLSsKLSsg ICAgICAgIGVjcCA9IEVDX0tFWV9nZXQwX3B1YmxpY19rZXkoZWMyKTsKLSsgICAgICAgIGlmICgh ZWNwKSB7Ci0rICAgICAgICAgICAgcnYgPSAtMTsKLSsgICAgICAgICAgICBnb3RvIGVycjsKLSsg ICAgICAgIH0KLSsKLSsgICAgICAgIGlmICghRUNESF9jb21wdXRlX2tleSh6dG1wLCBlY2QtPnps ZW4sIGVjcCwgZWMxLCAwKSkgewotKyAgICAgICAgICAgIHJ2ID0gLTE7Ci0rICAgICAgICAgICAg Z290byBlcnI7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBpZiAoIWZpcHNfcG9zdF9jb3JydXB0 KEZJUFNfVEVTVF9FQ0RILCBlY2QtPmN1cnZlLCBOVUxMKSkKLSsgICAgICAgICAgICB6dG1wWzBd IF49IDB4MTsKLSsKLSsgICAgICAgIGlmIChtZW1jbXAoenRtcCwgZWNkLT56LCBlY2QtPnpsZW4p KSB7Ci0rICAgICAgICAgICAgZmlwc19wb3N0X2ZhaWxlZChGSVBTX1RFU1RfRUNESCwgZWNkLT5j dXJ2ZSwgMCk7Ci0rICAgICAgICAgICAgcnYgPSAwOwotKyAgICAgICAgfSBlbHNlIGlmICghZmlw c19wb3N0X3N1Y2Nlc3MoRklQU19URVNUX0VDREgsIGVjZC0+Y3VydmUsIDApKQotKyAgICAgICAg ICAgIGdvdG8gZXJyOwotKwotKyAgICAgICAgRUNfS0VZX2ZyZWUoZWMxKTsKLSsgICAgICAgIGVj MSA9IE5VTEw7Ci0rICAgICAgICBFQ19LRVlfZnJlZShlYzIpOwotKyAgICAgICAgZWMyID0gTlVM TDsKLSsgICAgICAgIE9QRU5TU0xfZnJlZSh6dG1wKTsKLSsgICAgICAgIHp0bXAgPSBOVUxMOwot KyAgICB9Ci0rCi0rIGVycjoKLSsKLSsgICAgaWYgKHgpCi0rICAgICAgICBCTl9jbGVhcl9mcmVl KHgpOwotKyAgICBpZiAoeSkKLSsgICAgICAgIEJOX2NsZWFyX2ZyZWUoeSk7Ci0rICAgIGlmIChk KQotKyAgICAgICAgQk5fY2xlYXJfZnJlZShkKTsKLSsgICAgaWYgKGVjMSkKLSsgICAgICAgIEVD X0tFWV9mcmVlKGVjMSk7Ci0rICAgIGlmIChlYzIpCi0rICAgICAgICBFQ19LRVlfZnJlZShlYzIp OwotKyAgICBpZiAoenRtcCkKLSsgICAgICAgIE9QRU5TU0xfZnJlZSh6dG1wKTsKLSsKLSsgICAg cmV0dXJuIHJ2OwotKwotK30KLSsKLSsjZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9maXBzL2ZpcHNfZWNkc2Ffc2VsZnRlc3QuYy5maXBzLWVjIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9maXBzL2ZpcHNfZWNkc2Ffc2VsZnRlc3QuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9maXBzL2ZpcHNfZWNkc2Ffc2VsZnRlc3QuYy5maXBzLWVjCTIwMTUtMDQtMjIgMTk6MDA6MTku NzI0ODg0NTgzICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19lY2Rz YV9zZWxmdGVzdC5jCTIwMTUtMDQtMjIgMTk6MDA6MTkuNzI0ODg0NTgzICswMjAwCi1AQCAtMCww ICsxLDE2NSBAQAotKy8qIGZpcHMvZWNkc2EvZmlwc19lY2RzYV9zZWxmdGVzdC5jICovCi0rLyog V3JpdHRlbiBieSBEciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRo ZSBPcGVuU1NMCi0rICogcHJvamVjdCAyMDExLgotKyAqLwotKy8qID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICog Q29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2Vy dmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsg KgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg YWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICog ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs cyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFs bCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhp cwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdt ZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5 IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xr aXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9w ZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8K LSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29m dHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0 ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBsaWNlbnNpbmdAT3BlblNTTC5v cmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkg bm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIg aW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBv ZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFu eSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25v d2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxv cGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NM IFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdB UkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQot KyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM SU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05U UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK LSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE SU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH T09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig QlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklM SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJ U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg QURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotKyAqCi0rICovCi0rCi0rI2RlZmluZSBPUEVOU1NMX0ZJUFNBUEkKLSsKLSsjaW5j bHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Ci0rI2luY2x1ZGUg PG9wZW5zc2wvZWMuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lY2RzYS5oPgotKyNpbmNsdWRlIDxv cGVuc3NsL2ZpcHMuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KLSsjaW5jbHVkZSA8b3Bl bnNzbC9ldnAuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgotKwotKyNpZmRlZiBPUEVOU1NM X0ZJUFMKLSsKLStzdGF0aWMgY29uc3QgY2hhciBQXzI1Nl9uYW1lW10gPSAiRUNEU0EgUC0yNTYi OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFBfMjU2X2RbXSA9IHsKLSsgICAgMHg1 MSwgMHhiZCwgMHgwNiwgMHhhMSwgMHgxYywgMHhkYSwgMHhlMiwgMHgxMiwgMHg5OSwgMHhjOSwg MHg1MiwgMHgzZiwKLSsgICAgMHhlYSwgMHhhNCwgMHhkMiwgMHhkMSwgMHhmNCwgMHg3ZiwgMHhk NCwgMHgzZSwgMHhiZCwgMHhmOCwgMHhmYywgMHg4NywKLSsgICAgMHhkYywgMHg4MiwgMHg1Mywg MHgyMSwgMHhlZSwgMHhhMCwgMHhkYywgMHg2NAotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgUF8yNTZfcXhbXSA9IHsKLSsgICAgMHgyMywgMHg4OSwgMHhlMCwgMHhmNCwgMHg2 OSwgMHhlMCwgMHg0OSwgMHhlNSwgMHhjNywgMHhlNSwgMHg0MCwgMHg2ZSwKLSsgICAgMHg4Ziwg MHgyNSwgMHhkZCwgMHhhZCwgMHgxMSwgMHgxNiwgMHgxNCwgMHg5YiwgMHhhYiwgMHg0NCwgMHgw NiwgMHgzMSwKLSsgICAgMHhiZiwgMHg1ZSwgMHhhNiwgMHg0NCwgMHhhYywgMHg4NiwgMHgwMCwg MHgwNwotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgUF8yNTZfcXlbXSA9IHsK LSsgICAgMHhiMywgMHgwNSwgMHgwZCwgMHhkMCwgMHhkYywgMHhmNywgMHg0MCwgMHhlNiwgMHhm OSwgMHhkOCwgMHg2ZCwgMHg3YiwKLSsgICAgMHg2MywgMHhjYSwgMHg5NywgMHhlNiwgMHgxMiwg MHhmOSwgMHhkNCwgMHgxOCwgMHg1OSwgMHhiZSwgMHhiMiwgMHg1ZSwKLSsgICAgMHg0YSwgMHg2 YSwgMHg3NywgMHgyMywgMHhmNCwgMHgxMSwgMHg5ZCwgMHhlYgotK307Ci0rCi0rdHlwZWRlZiBz dHJ1Y3QgewotKyAgICBpbnQgY3VydmU7Ci0rICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0rICAgIGNv bnN0IHVuc2lnbmVkIGNoYXIgKng7Ci0rICAgIHNpemVfdCB4bGVuOwotKyAgICBjb25zdCB1bnNp Z25lZCBjaGFyICp5OwotKyAgICBzaXplX3QgeWxlbjsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hh ciAqZDsKLSsgICAgc2l6ZV90IGRsZW47Ci0rfSBFQ19TRUxGVEVTVF9EQVRBOwotKwotKyMgZGVm aW5lIG1ha2VfZWNkc2FfdGVzdChuaWQsIHByKSB7IG5pZCwgcHIjI19uYW1lLCBcCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwciMjX3F4LCBzaXplb2YocHIjI19xeCksIFwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByIyNfcXksIHNpemVvZihwciMjX3F5KSwg XAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHIjI19kLCBzaXplb2YocHIjI19k KX0KLSsKLStzdGF0aWMgRUNfU0VMRlRFU1RfREFUQSB0ZXN0X2VjX2RhdGFbXSA9IHsKLSsgICAg bWFrZV9lY2RzYV90ZXN0KE5JRF9YOV82Ml9wcmltZTI1NnYxLCBQXzI1NiksCi0rfTsKLSsKLStp bnQgRklQU19zZWxmdGVzdF9lY2RzYSgpCi0rewotKyAgICBFQ19LRVkgKmVjID0gTlVMTDsKLSsg ICAgQklHTlVNICp4ID0gTlVMTCwgKnkgPSBOVUxMLCAqZCA9IE5VTEw7Ci0rICAgIEVWUF9QS0VZ ICpwayA9IE5VTEw7Ci0rICAgIGludCBydiA9IDA7Ci0rICAgIHNpemVfdCBpOwotKwotKyAgICBm b3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHRlc3RfZWNfZGF0YSkgLyBzaXplb2YoRUNfU0VMRlRFU1Rf REFUQSk7IGkrKykgewotKyAgICAgICAgRUNfU0VMRlRFU1RfREFUQSAqZWNkID0gdGVzdF9lY19k YXRhICsgaTsKLSsKLSsgICAgICAgIHggPSBCTl9iaW4yYm4oZWNkLT54LCBlY2QtPnhsZW4sIHgp OwotKyAgICAgICAgeSA9IEJOX2JpbjJibihlY2QtPnksIGVjZC0+eWxlbiwgeSk7Ci0rICAgICAg ICBkID0gQk5fYmluMmJuKGVjZC0+ZCwgZWNkLT5kbGVuLCBkKTsKLSsKLSsgICAgICAgIGlmICgh eCB8fCAheSB8fCAhZCkKLSsgICAgICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgICAgIGVjID0g RUNfS0VZX25ld19ieV9jdXJ2ZV9uYW1lKGVjZC0+Y3VydmUpOwotKyAgICAgICAgaWYgKCFlYykK LSsgICAgICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgICAgIGlmICghRUNfS0VZX3NldF9wdWJs aWNfa2V5X2FmZmluZV9jb29yZGluYXRlcyhlYywgeCwgeSkpCi0rICAgICAgICAgICAgZ290byBl cnI7Ci0rCi0rICAgICAgICBpZiAoIUVDX0tFWV9zZXRfcHJpdmF0ZV9rZXkoZWMsIGQpKQotKyAg ICAgICAgICAgIGdvdG8gZXJyOwotKwotKyAgICAgICAgaWYgKChwayA9IEVWUF9QS0VZX25ldygp KSA9PSBOVUxMKQotKyAgICAgICAgICAgIGdvdG8gZXJyOwotKwotKyAgICAgICAgRVZQX1BLRVlf YXNzaWduX0VDX0tFWShwaywgZWMpOwotKwotKyAgICAgICAgaWYgKCFmaXBzX3BrZXlfc2lnbmF0 dXJlX3Rlc3QocGssIE5VTEwsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOVUxMLCAwLCBFVlBfc2hhMjU2KCksIDAsIGVjZC0+bmFtZSkpCi0rICAgICAgICAgICAg Z290byBlcnI7Ci0rICAgIH0KLSsKLSsgICAgcnYgPSAxOwotKwotKyBlcnI6Ci0rCi0rICAgIGlm ICh4KQotKyAgICAgICAgQk5fY2xlYXJfZnJlZSh4KTsKLSsgICAgaWYgKHkpCi0rICAgICAgICBC Tl9jbGVhcl9mcmVlKHkpOwotKyAgICBpZiAoZCkKLSsgICAgICAgIEJOX2NsZWFyX2ZyZWUoZCk7 Ci0rICAgIGlmIChwaykKLSsgICAgICAgIEVWUF9QS0VZX2ZyZWUocGspOwotKyAgICBlbHNlIGlm IChlYykKLSsgICAgICAgIEVDX0tFWV9mcmVlKGVjKTsKLSsKLSsgICAgcmV0dXJuIHJ2OwotKwot K30KLSsKLSsjZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHMu aC5maXBzLWVjIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHMuaAotLS0tIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9maXBzL2ZpcHMuaC5maXBzLWVjCTIwMTUtMDQtMjIgMTk6MDA6MTkuNjg4 ODgzNzMzICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwcy5oCTIwMTUt MDQtMjIgMTk6MDA6MTkuNzI0ODg0NTgzICswMjAwCi1AQCAtOTMsNiArOTMsOCBAQCBleHRlcm4g IkMiIHsKLSAgICAgdm9pZCBGSVBTX2NvcnJ1cHRfZHNhKHZvaWQpOwotICAgICB2b2lkIEZJUFNf Y29ycnVwdF9kc2Ffa2V5Z2VuKHZvaWQpOwotICAgICBpbnQgRklQU19zZWxmdGVzdF9kc2Eodm9p ZCk7Ci0rICAgIGludCBGSVBTX3NlbGZ0ZXN0X2VjZHNhKHZvaWQpOwotKyAgICBpbnQgRklQU19z ZWxmdGVzdF9lY2RoKHZvaWQpOwotICAgICB2b2lkIEZJUFNfY29ycnVwdF9ybmcodm9pZCk7Ci0g ICAgIHZvaWQgRklQU19ybmdfc3RpY2sodm9pZCk7Ci0gICAgIHZvaWQgRklQU194OTMxX3N0aWNr KGludCBvbm9mZik7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3Bv c3QuYy5maXBzLWVjIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfcG9zdC5jCi0tLS0g b3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19wb3N0LmMuZmlwcy1lYwkyMDE1LTA0LTIy IDE5OjAwOjE5LjY4ODg4MzczMyArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBz L2ZpcHNfcG9zdC5jCTIwMTUtMDQtMjIgMTk6MDA6MTkuNzI0ODg0NTgzICswMjAwCi1AQCAtOTUs OCArOTUsMTIgQEAgaW50IEZJUFNfc2VsZnRlc3Qodm9pZCkKLSAgICAgICAgIHJ2ID0gMDsKLSAg ICAgaWYgKCFGSVBTX3NlbGZ0ZXN0X3JzYSgpKQotICAgICAgICAgcnYgPSAwOwotKyAgICBpZiAo IUZJUFNfc2VsZnRlc3RfZWNkc2EoKSkKLSsgICAgICAgIHJ2ID0gMDsKLSAgICAgaWYgKCFGSVBT X3NlbGZ0ZXN0X2RzYSgpKQotICAgICAgICAgcnYgPSAwOwotKyAgICBpZiAoIUZJUFNfc2VsZnRl c3RfZWNkaCgpKQotKyAgICAgICAgcnYgPSAwOwotICAgICByZXR1cm4gcnY7Ci0gfQotIAotZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvTWFrZWZpbGUuZmlwcy1lYyBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vZmlwcy9NYWtlZmlsZQotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9m aXBzL01ha2VmaWxlLmZpcHMtZWMJMjAxNS0wNC0yMiAxOTowMDoxOS42OTE4ODM4MDUgKzAyMDAK LSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9NYWtlZmlsZQkyMDE1LTA0LTIyIDE5OjAw OjE5LjcyNDg4NDU4MyArMDIwMAotQEAgLTI0LDEzICsyNCwxMyBAQCBMSUJTUkM9Zmlwc19hZXNf c2VsZnRlc3QuYyBmaXBzX2Rlc19zZWxmCi0gICAgIGZpcHNfcnNhX3NlbGZ0ZXN0LmMgZmlwc19z aGFfc2VsZnRlc3QuYyBmaXBzLmMgZmlwc19kc2Ffc2VsZnRlc3QuYyAgZmlwc19yYW5kLmMgXAot ICAgICBmaXBzX3JzYV94OTMxZy5jIGZpcHNfcG9zdC5jIGZpcHNfZHJiZ19jdHIuYyBmaXBzX2Ry YmdfaGFzaC5jIGZpcHNfZHJiZ19obWFjLmMgXAotICAgICBmaXBzX2RyYmdfbGliLmMgZmlwc19k cmJnX3JhbmQuYyBmaXBzX2RyYmdfc2VsZnRlc3QuYyBmaXBzX3JhbmRfbGliLmMgXAotLSAgICBm aXBzX2NtYWNfc2VsZnRlc3QuYyBmaXBzX2VuYy5jIGZpcHNfbWQuYwotKyAgICBmaXBzX2NtYWNf c2VsZnRlc3QuYyBmaXBzX2VjZGhfc2VsZnRlc3QuYyBmaXBzX2VjZHNhX3NlbGZ0ZXN0LmMgZmlw c19lbmMuYyBmaXBzX21kLmMKLSAKLSBMSUJPQko9Zmlwc19hZXNfc2VsZnRlc3QubyBmaXBzX2Rl c19zZWxmdGVzdC5vIGZpcHNfaG1hY19zZWxmdGVzdC5vIGZpcHNfcmFuZF9zZWxmdGVzdC5vIFwK LSAgICAgZmlwc19yc2Ffc2VsZnRlc3QubyBmaXBzX3NoYV9zZWxmdGVzdC5vIGZpcHMubyBmaXBz X2RzYV9zZWxmdGVzdC5vICBmaXBzX3JhbmQubyBcCi0gICAgIGZpcHNfcnNhX3g5MzFnLm8gZmlw c19wb3N0Lm8gZmlwc19kcmJnX2N0ci5vIGZpcHNfZHJiZ19oYXNoLm8gZmlwc19kcmJnX2htYWMu byBcCi0gICAgIGZpcHNfZHJiZ19saWIubyBmaXBzX2RyYmdfcmFuZC5vIGZpcHNfZHJiZ19zZWxm dGVzdC5vIGZpcHNfcmFuZF9saWIubyBcCi0tICAgIGZpcHNfY21hY19zZWxmdGVzdC5vIGZpcHNf ZW5jLm8gZmlwc19tZC5vCi0rICAgIGZpcHNfY21hY19zZWxmdGVzdC5vIGZpcHNfZWNkaF9zZWxm dGVzdC5vIGZpcHNfZWNkc2Ffc2VsZnRlc3QubyBmaXBzX2VuYy5vIGZpcHNfbWQubwotIAotIExJ QkNSWVBUTz0tTC4uIC1sY3J5cHRvCi0gCi1AQCAtMTE5LDYgKzExOSwyMSBAQCBmaXBzX2Flc19z ZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zCi0gZmlwc19hZXNfc2VsZnRlc3QubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCi0gZmlwc19hZXNfc2VsZnRlc3QubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKLSBmaXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX2Flc19zZWxmdGVzdC5jCi0rZmlwc19jbWFj X3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmggLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2Jpby5oCi0rZmlwc19jbWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9jbWFjLmgKLStmaXBzX2NtYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Ny eXB0by5oCi0rZmlwc19jbWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29z Mi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lcnIuaAotK2ZpcHNfY21hY19zZWxmdGVzdC5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaAot K2ZpcHNfY21hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAotK2Zp cHNfY21hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqX21hYy5oCi0rZmlw c19jbWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKLStmaXBz X2NtYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKLStm aXBzX2NtYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmgKLStm aXBzX2NtYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmgKLStm aXBzX2NtYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCi0r Zmlwc19jbWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oCi0rZmlw c19jbWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNf Y21hY19zZWxmdGVzdC5jCi0rZmlwc19jbWFjX3NlbGZ0ZXN0Lm86IGZpcHNfbG9jbC5oCi0gZmlw c19kZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNs dWRlL29wZW5zc2wvYmlvLmgKLSBmaXBzX2Rlc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvY3J5cHRvLmgKLSBmaXBzX2Rlc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmgKLUBAIC0yMzIsNiArMjQ3LDQ2 IEBAIGZpcHNfZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnMKLSBmaXBzX2RzYV9z ZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAotIGZpcHNfZHNhX3NlbGZ0 ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfZHNhX3NlbGZ0ZXN0 LmMKLSBmaXBzX2RzYV9zZWxmdGVzdC5vOiBmaXBzX2xvY2wuaAotK2ZpcHNfZWNkaF9zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9i aW8uaAotK2ZpcHNfZWNkaF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYm4uaCAu Li8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKLStmaXBzX2VjZGhfc2VsZnRlc3QubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2VjLmgKLStm aXBzX2VjZGhfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2VjZGguaCAuLi8uLi9p bmNsdWRlL29wZW5zc2wvZXJyLmgKLStmaXBzX2VjZGhfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2V2cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmgKLStmaXBzX2VjZGhf c2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2xoYXNoLmgKLStmaXBzX2VjZGhfc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29ial9tYWMuaAotK2ZpcHNfZWNkaF9zZWxm dGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCi0rZmlwc19lY2RoX3NlbGZ0 ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCi0rZmlwc19lY2RoX3Nl bGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCi0rZmlwc19lY2RoX3Nl bGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oCi0rZmlwc19lY2RoX3Nl bGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAotK2ZpcHNfZWNkaF9z ZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAotK2ZpcHNfZWNkaF9zZWxm dGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX2VjZGhfc2VsZnRl c3QuYwotK2ZpcHNfZWNkaF9zZWxmdGVzdC5vOiBmaXBzX2xvY2wuaAotK2ZpcHNfZWNkc2Ffc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNsdWRlL29wZW5z c2wvYmlvLmgKLStmaXBzX2VjZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9i bi5oCi0rZmlwc19lY2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRv LmgKLStmaXBzX2VjZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5o IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lYy5oCi0rZmlwc19lY2RzYV9zZWxmdGVzdC5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvZWNkc2EuaAotK2ZpcHNfZWNkc2Ffc2VsZnRlc3QubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL2Vyci5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaAotK2ZpcHNf ZWNkc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaAotK2ZpcHNfZWNk c2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2xoYXNoLmgKLStmaXBzX2VjZHNh X3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKLStmaXBzX2VjZHNh X3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKLStmaXBzX2VjZHNh X3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCi0rZmlwc19l Y2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAotK2ZpcHNf ZWNkc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmgKLStmaXBz X2VjZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAotK2Zp cHNfZWNkc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKLStmaXBz X2VjZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNf ZWNkc2Ffc2VsZnRlc3QuYwotK2ZpcHNfZW5jLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24x LmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oCi0rZmlwc19lbmMubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2NyeXB0by5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oCi0rZmlwc19l bmMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9l dnAuaAotK2ZpcHNfZW5jLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmggLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2xoYXNoLmgKLStmaXBzX2VuYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv b2JqX21hYy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKLStmaXBzX2VuYy5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAotK2ZpcHNfZW5jLm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5o Ci0rZmlwc19lbmMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oIC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9zdGFjay5oCi0rZmlwc19lbmMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L3N5bWhhY2tzLmggZmlwc19lbmMuYwotIGZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvYXNuMS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAotIGZpcHNfaG1h Y19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKLSBmaXBzX2htYWNf c2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2Vyci5oCi1AQCAtMjQ2LDYgKzMwMSwxNSBAQCBmaXBzX2htYWNfc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuCi0gZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9zYWZlc3RhY2suaAotIGZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvc3RhY2suaAotIGZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvc3ltaGFja3MuaCBmaXBzX2htYWNfc2VsZnRlc3QuYwotK2ZpcHNfbWQubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgKLStmaXBz X21kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaCAuLi8uLi9pbmNsdWRlL29wZW5z c2wvZV9vczIuaAotK2ZpcHNfbWQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oIC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9ldnAuaAotK2ZpcHNfbWQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2ZpcHMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAotK2ZpcHNfbWQubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL29ial9tYWMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5o Ci0rZmlwc19tZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaCAuLi8uLi9p bmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAotK2ZpcHNfbWQubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL29zc2xfdHlwLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCi0rZmlwc19t ZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wv c3ltaGFja3MuaAotK2ZpcHNfbWQubzogZmlwc19tZC5jCi0gZmlwc19wb3N0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9hZXMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oCi0gZmlwc19w b3N0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wv Y3J5cHRvLmgKLSBmaXBzX3Bvc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2RzYS5oIC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS92ZXJzaW9u Lm1hcC5maXBzLWVjIG9wZW5zc2wtMS4wLjJhL3ZlcnNpb24ubWFwCi0tLS0gb3BlbnNzbC0xLjAu MmEvdmVyc2lvbi5tYXAuZmlwcy1lYwkyMDE1LTA0LTIyIDE5OjAwOjE5LjcwNDg4NDExMSArMDIw MAotKysrIG9wZW5zc2wtMS4wLjJhL3ZlcnNpb24ubWFwCTIwMTUtMDQtMjIgMTk6MDA6MTkuNzI0 ODg0NTgzICswMjAwCi1AQCAtNiw2ICs2LDEwIEBAIE9QRU5TU0xfMS4wLjEgewotIAkgICAgX29y aWdpbmFsKjsKLSAJICAgIF9jdXJyZW50KjsKLSB9OwotK09QRU5TU0xfMS4wLjFfRUMgewotKyAg ICBnbG9iYWw6Ci0rICAgICAgICAgICAgRUMqOwotK307Ci0gT1BFTlNTTF8xLjAuMiB7Ci0gICAg IGdsb2JhbDoKLSAJICAgIFNTTGVheTsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4yYS1maXBz LW1kNS1hbGxvdy5wYXRjaCBiL29wZW5zc2wtMS4wLjJhLWZpcHMtbWQ1LWFsbG93LnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjU0MTdmLi4wMDAwMDAwCi0tLSBhL29wZW5z c2wtMS4wLjJhLWZpcHMtbWQ1LWFsbG93LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAs MCBAQAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL21kNS9tZDVfZGdzdC5jLm1kNS1h bGxvdyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vbWQ1L21kNV9kZ3N0LmMKLS0tLSBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vbWQ1L21kNV9kZ3N0LmMubWQ1LWFsbG93CTIwMTUtMDQtMDkgMTg6MTg6MzYu NTA1MzkzMTEzICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL21kNS9tZDVfZGdzdC5j CTIwMTUtMDQtMDkgMTg6MTg6MzIuNDA4Mjk4NDY5ICswMjAwCi1AQCAtNzIsNyArNzIsMTYgQEAg Y29uc3QgY2hhciBNRDVfdmVyc2lvbltdID0gIk1ENSIgT1BFTlNTTAotICNkZWZpbmUgSU5JVF9E QVRBX0MgKHVuc2lnbmVkIGxvbmcpMHg5OGJhZGNmZUwKLSAjZGVmaW5lIElOSVRfREFUQV9EICh1 bnNpZ25lZCBsb25nKTB4MTAzMjU0NzZMCi0gCi0tbm9uZmlwc19tZF9pbml0KE1ENSkKLStpbnQg TUQ1X0luaXQoTUQ1X0NUWCAqYykKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rewotKyAgICBpZiAo RklQU19tb2RlKCkgJiYgZ2V0ZW52KCJPUEVOU1NMX0ZJUFNfTk9OX0FQUFJPVkVEX01ENV9BTExP VyIpID09IE5VTEwpCi0rICAgICAgICBPcGVuU1NMRGllKF9fRklMRV9fLCBfX0xJTkVfXywgIkRp Z2VzdCBNRDUgZm9yYmlkZGVuIGluIEZJUFMgbW9kZSEiKTsKLSsgICAgcmV0dXJuIHByaXZhdGVf TUQ1X0luaXQoYyk7Ci0rfQotKwotK2ludCBwcml2YXRlX01ENV9Jbml0KE1ENV9DVFggKmMpCi0r I2VuZGlmCi0gewotICAgICBtZW1zZXQoYywgMCwgc2l6ZW9mKCpjKSk7Ci0gICAgIGMtPkEgPSBJ TklUX0RBVEFfQTsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4yYS1pcHY2LWFwcHMucGF0Y2gg Yi9vcGVuc3NsLTEuMC4yYS1pcHY2LWFwcHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGRkOGI0MmMuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMmEtaXB2Ni1hcHBzLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTI1ICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4w LjJhL2FwcHMvc19hcHBzLmguaXB2Ni1hcHBzIG9wZW5zc2wtMS4wLjJhL2FwcHMvc19hcHBzLmgK LS0tLSBvcGVuc3NsLTEuMC4yYS9hcHBzL3NfYXBwcy5oLmlwdjYtYXBwcwkyMDE1LTA0LTIwIDE1 OjAxOjI0LjAyOTEyMDEwNCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2FwcHMvc19hcHBzLmgJ MjAxNS0wNC0yMCAxNTowNTowMC4zNTMxMzc3MDEgKzAyMDAKLUBAIC0xNTEsNyArMTUxLDcgQEAg dHlwZWRlZiBmZF9tYXNrIGZkX3NldDsKLSAjZGVmaW5lIFBPUlRfU1RSICAgICAgICAiNDQzMyIK LSAjZGVmaW5lIFBST1RPQ09MICAgICAgICAidGNwIgotIAotLWludCBkb19zZXJ2ZXIoaW50IHBv cnQsIGludCB0eXBlLCBpbnQgKnJldCwKLStpbnQgZG9fc2VydmVyKGNoYXIgKnBvcnQsIGludCB0 eXBlLCBpbnQgKnJldCwKLSAgICAgICAgICAgICAgIGludCAoKmNiKSAoY2hhciAqaG9zdG5hbWUs IGludCBzLCBpbnQgc3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo YXIgKmNvbnRleHQpLCB1bnNpZ25lZCBjaGFyICpjb250ZXh0LAotICAgICAgICAgICAgICAgaW50 IG5hY2NlcHQpOwotQEAgLTE2NywxMSArMTY3LDEwIEBAIGludCBzc2xfcHJpbnRfcG9pbnRfZm9y bWF0cyhCSU8gKm91dCwgU1MKLSBpbnQgc3NsX3ByaW50X2N1cnZlcyhCSU8gKm91dCwgU1NMICpz LCBpbnQgbm9zaGFyZWQpOwotICNlbmRpZgotIGludCBzc2xfcHJpbnRfdG1wX2tleShCSU8gKm91 dCwgU1NMICpzKTsKLS1pbnQgaW5pdF9jbGllbnQoaW50ICpzb2NrLCBjaGFyICpzZXJ2ZXIsIGlu dCBwb3J0LCBpbnQgdHlwZSk7Ci0raW50IGluaXRfY2xpZW50KGludCAqc29jaywgY2hhciAqc2Vy dmVyLCBjaGFyICpwb3J0LCBpbnQgdHlwZSk7Ci0gaW50IHNob3VsZF9yZXRyeShpbnQgaSk7Ci0g aW50IGV4dHJhY3RfcG9ydChjaGFyICpzdHIsIHNob3J0ICpwb3J0X3B0cik7Ci0taW50IGV4dHJh Y3RfaG9zdF9wb3J0KGNoYXIgKnN0ciwgY2hhciAqKmhvc3RfcHRyLCB1bnNpZ25lZCBjaGFyICpp cCwKLS0gICAgICAgICAgICAgICAgICAgICAgc2hvcnQgKnApOwotK2ludCBleHRyYWN0X2hvc3Rf cG9ydChjaGFyICpzdHIsIGNoYXIgKipob3N0X3B0ciwgY2hhciAqKnBvcnRfcHRyKTsKLSAKLSBs b25nIE1TX0NBTExCQUNLIGJpb19kdW1wX2NhbGxiYWNrKEJJTyAqYmlvLCBpbnQgY21kLCBjb25z dCBjaGFyICphcmdwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFy Z2ksIGxvbmcgYXJnbCwgbG9uZyByZXQpOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvYXBwcy9z X2NsaWVudC5jLmlwdjYtYXBwcyBvcGVuc3NsLTEuMC4yYS9hcHBzL3NfY2xpZW50LmMKLS0tLSBv cGVuc3NsLTEuMC4yYS9hcHBzL3NfY2xpZW50LmMuaXB2Ni1hcHBzCTIwMTUtMDQtMjAgMTU6MDE6 MjQuMDIyMTE5OTQyICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvYXBwcy9zX2NsaWVudC5jCTIw MTUtMDQtMjAgMTU6MDY6NDIuMzM4NTAzMjM0ICswMjAwCi1AQCAtNjYyLDcgKzY2Miw3IEBAIGlu dCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgaW50IGNidWZfbGVuLCBjYnVmX29m ZjsKLSAgICAgaW50IHNidWZfbGVuLCBzYnVmX29mZjsKLSAgICAgZmRfc2V0IHJlYWRmZHMsIHdy aXRlZmRzOwotLSAgICBzaG9ydCBwb3J0ID0gUE9SVDsKLSsgICAgY2hhciAqcG9ydF9zdHIgPSBQ T1JUX1NUUjsKLSAgICAgaW50IGZ1bGxfbG9nID0gMTsKLSAgICAgY2hhciAqaG9zdCA9IFNTTF9I T1NUX05BTUU7Ci0gICAgIGNoYXIgKmNlcnRfZmlsZSA9IE5VTEwsICprZXlfZmlsZSA9IE5VTEws ICpjaGFpbl9maWxlID0gTlVMTDsKLUBAIC03ODUsMTMgKzc4NSwxMSBAQCBpbnQgTUFJTihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgIi1w b3J0IikgPT0gMCkgewotICAgICAgICAgICAgIGlmICgtLWFyZ2MgPCAxKQotICAgICAgICAgICAg ICAgICBnb3RvIGJhZDsKLS0gICAgICAgICAgICBwb3J0ID0gYXRvaSgqKCsrYXJndikpOwotLSAg ICAgICAgICAgIGlmIChwb3J0ID09IDApCi0tICAgICAgICAgICAgICAgIGdvdG8gYmFkOwotKyAg ICAgICAgICAgIHBvcnRfc3RyID0gKigrK2FyZ3YpOwotICAgICAgICAgfSBlbHNlIGlmIChzdHJj bXAoKmFyZ3YsICItY29ubmVjdCIpID09IDApIHsKLSAgICAgICAgICAgICBpZiAoLS1hcmdjIDwg MSkKLSAgICAgICAgICAgICAgICAgZ290byBiYWQ7Ci0tICAgICAgICAgICAgaWYgKCFleHRyYWN0 X2hvc3RfcG9ydCgqKCsrYXJndiksICZob3N0LCBOVUxMLCAmcG9ydCkpCi0rICAgICAgICAgICAg aWYgKCFleHRyYWN0X2hvc3RfcG9ydCgqKCsrYXJndiksICZob3N0LCAmcG9ydF9zdHIpKQotICAg ICAgICAgICAgICAgICBnb3RvIGJhZDsKLSAgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKCphcmd2 LCAiLXZlcmlmeSIpID09IDApIHsKLSAgICAgICAgICAgICB2ZXJpZnkgPSBTU0xfVkVSSUZZX1BF RVI7Ci1AQCAtMTQxNyw3ICsxNDE1LDcgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQotIAotICByZV9zdGFydDoKLSAKLS0gICAgaWYgKGluaXRfY2xpZW50KCZzLCBob3N0LCBwb3J0 LCBzb2NrZXRfdHlwZSkgPT0gMCkgewotKyAgICBpZiAoaW5pdF9jbGllbnQoJnMsIGhvc3QsIHBv cnRfc3RyLCBzb2NrZXRfdHlwZSkgPT0gMCkgewotICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJy LCAiY29ubmVjdDplcnJubz0lZFxuIiwgZ2V0X2xhc3Rfc29ja2V0X2Vycm9yKCkpOwotICAgICAg ICAgU0hVVERPV04ocyk7Ci0gICAgICAgICBnb3RvIGVuZDsKLWRpZmYgLXVwIG9wZW5zc2wtMS4w LjJhL2FwcHMvc19zZXJ2ZXIuYy5pcHY2LWFwcHMgb3BlbnNzbC0xLjAuMmEvYXBwcy9zX3NlcnZl ci5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvYXBwcy9zX3NlcnZlci5jLmlwdjYtYXBwcwkyMDE1LTA0 LTIwIDE1OjAxOjI0LjAzMDEyMDEyNyArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2FwcHMvc19z ZXJ2ZXIuYwkyMDE1LTA0LTIwIDE1OjEwOjQ3LjI0NTE4Nzc0NiArMDIwMAotQEAgLTEwNjEsNyAr MTA2MSw3IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gewotICAgICBYNTA5 X1ZFUklGWV9QQVJBTSAqdnBtID0gTlVMTDsKLSAgICAgaW50IGJhZGFyZyA9IDA7Ci0tICAgIHNo b3J0IHBvcnQgPSBQT1JUOwotKyAgICBjaGFyICpwb3J0X3N0ciA9IFBPUlRfU1RSOwotICAgICBj aGFyICpDQXBhdGggPSBOVUxMLCAqQ0FmaWxlID0gTlVMTDsKLSAgICAgY2hhciAqY2hDQXBhdGgg PSBOVUxMLCAqY2hDQWZpbGUgPSBOVUxMOwotICAgICBjaGFyICp2ZnlDQXBhdGggPSBOVUxMLCAq dmZ5Q0FmaWxlID0gTlVMTDsKLUBAIC0xMTQ4LDcgKzExNDgsOCBAQCBpbnQgTUFJTihpbnQgYXJn YywgY2hhciAqYXJndltdKQotICAgICAgICAgaWYgKChzdHJjbXAoKmFyZ3YsICItcG9ydCIpID09 IDApIHx8IChzdHJjbXAoKmFyZ3YsICItYWNjZXB0IikgPT0gMCkpIHsKLSAgICAgICAgICAgICBp ZiAoLS1hcmdjIDwgMSkKLSAgICAgICAgICAgICAgICAgZ290byBiYWQ7Ci0tICAgICAgICAgICAg aWYgKCFleHRyYWN0X3BvcnQoKigrK2FyZ3YpLCAmcG9ydCkpCi0rICAgICAgICAgICAgcG9ydF9z dHIgPSAqKCsrYXJndik7Ci0rICAgICAgICAgICAgaWYgKHBvcnRfc3RyID09IE5VTEwgfHwgKnBv cnRfc3RyID09ICdcMCcpCi0gICAgICAgICAgICAgICAgIGdvdG8gYmFkOwotICAgICAgICAgfSBl bHNlIGlmIChzdHJjbXAoKmFyZ3YsICItbmFjY2VwdCIpID09IDApIHsKLSAgICAgICAgICAgICBp ZiAoLS1hcmdjIDwgMSkKLUBAIC0yMDIwLDEzICsyMDIxLDEzIEBAIGludCBNQUlOKGludCBhcmdj LCBjaGFyICphcmd2W10pCi0gICAgIEJJT19wcmludGYoYmlvX3Nfb3V0LCAiQUNDRVBUXG4iKTsK LSAgICAgKHZvaWQpQklPX2ZsdXNoKGJpb19zX291dCk7Ci0gICAgIGlmIChyZXYpCi0tICAgICAg ICBkb19zZXJ2ZXIocG9ydCwgc29ja2V0X3R5cGUsICZhY2NlcHRfc29ja2V0LCByZXZfYm9keSwg Y29udGV4dCwKLSsgICAgICAgIGRvX3NlcnZlcihwb3J0X3N0ciwgc29ja2V0X3R5cGUsICZhY2Nl cHRfc29ja2V0LCByZXZfYm9keSwgY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICBuYWNjZXB0 KTsKLSAgICAgZWxzZSBpZiAod3d3KQotLSAgICAgICAgZG9fc2VydmVyKHBvcnQsIHNvY2tldF90 eXBlLCAmYWNjZXB0X3NvY2tldCwgd3d3X2JvZHksIGNvbnRleHQsCi0rICAgICAgICBkb19zZXJ2 ZXIocG9ydF9zdHIsIHNvY2tldF90eXBlLCAmYWNjZXB0X3NvY2tldCwgd3d3X2JvZHksIGNvbnRl eHQsCi0gICAgICAgICAgICAgICAgICAgbmFjY2VwdCk7Ci0gICAgIGVsc2UKLS0gICAgICAgIGRv X3NlcnZlcihwb3J0LCBzb2NrZXRfdHlwZSwgJmFjY2VwdF9zb2NrZXQsIHN2X2JvZHksIGNvbnRl eHQsCi0rICAgICAgICBkb19zZXJ2ZXIocG9ydF9zdHIsIHNvY2tldF90eXBlLCAmYWNjZXB0X3Nv Y2tldCwgc3ZfYm9keSwgY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICBuYWNjZXB0KTsKLSAg ICAgcHJpbnRfc3RhdHMoYmlvX3Nfb3V0LCBjdHgpOwotICAgICByZXQgPSAwOwotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMmEvYXBwcy9zX3NvY2tldC5jLmlwdjYtYXBwcyBvcGVuc3NsLTEuMC4yYS9h cHBzL3Nfc29ja2V0LmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9hcHBzL3Nfc29ja2V0LmMuaXB2Ni1h cHBzCTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAu MmEvYXBwcy9zX3NvY2tldC5jCTIwMTUtMDQtMjAgMTU6MzI6NTMuOTYwMDc5NTA3ICswMjAwCi1A QCAtMTA2LDkgKzEwNiw3IEBAIHN0YXRpYyBzdHJ1Y3QgaG9zdGVudCAqR2V0SG9zdEJ5TmFtZShj aGEKLSBzdGF0aWMgdm9pZCBzc2xfc29ja19jbGVhbnVwKHZvaWQpOwotICMgZW5kaWYKLSBzdGF0 aWMgaW50IHNzbF9zb2NrX2luaXQodm9pZCk7Ci0tc3RhdGljIGludCBpbml0X2NsaWVudF9pcChp bnQgKnNvY2ssIHVuc2lnbmVkIGNoYXIgaXBbNF0sIGludCBwb3J0LCBpbnQgdHlwZSk7Ci0tc3Rh dGljIGludCBpbml0X3NlcnZlcihpbnQgKnNvY2ssIGludCBwb3J0LCBpbnQgdHlwZSk7Ci0tc3Rh dGljIGludCBpbml0X3NlcnZlcl9sb25nKGludCAqc29jaywgaW50IHBvcnQsIGNoYXIgKmlwLCBp bnQgdHlwZSk7Ci0rc3RhdGljIGludCBpbml0X3NlcnZlcihpbnQgKnNvY2ssIGNoYXIgKnBvcnQs IGludCB0eXBlKTsKLSBzdGF0aWMgaW50IGRvX2FjY2VwdChpbnQgYWNjX3NvY2ssIGludCAqc29j aywgY2hhciAqKmhvc3QpOwotIHN0YXRpYyBpbnQgaG9zdF9pcChjaGFyICpzdHIsIHVuc2lnbmVk IGNoYXIgaXBbNF0pOwotIAotQEAgLTIzMSw2NSArMjI5LDY2IEBAIHN0YXRpYyBpbnQgc3NsX3Nv Y2tfaW5pdCh2b2lkKQotICAgICByZXR1cm4gKDEpOwotIH0KLSAKLS1pbnQgaW5pdF9jbGllbnQo aW50ICpzb2NrLCBjaGFyICpob3N0LCBpbnQgcG9ydCwgaW50IHR5cGUpCi0raW50IGluaXRfY2xp ZW50KGludCAqc29jaywgY2hhciAqaG9zdCwgY2hhciAqcG9ydCwgaW50IHR5cGUpCi0gewotLSAg ICB1bnNpZ25lZCBjaGFyIGlwWzRdOwotLQotLSAgICBtZW1zZXQoaXAsICdcMCcsIHNpemVvZiBp cCk7Ci0tICAgIGlmICghaG9zdF9pcChob3N0LCAmKGlwWzBdKSkpCi0tICAgICAgICByZXR1cm4g MDsKLS0gICAgcmV0dXJuIGluaXRfY2xpZW50X2lwKHNvY2ssIGlwLCBwb3J0LCB0eXBlKTsKLS19 Ci0tCi0tc3RhdGljIGludCBpbml0X2NsaWVudF9pcChpbnQgKnNvY2ssIHVuc2lnbmVkIGNoYXIg aXBbNF0sIGludCBwb3J0LCBpbnQgdHlwZSkKLS17Ci0tICAgIHVuc2lnbmVkIGxvbmcgYWRkcjsK LS0gICAgc3RydWN0IHNvY2thZGRyX2luIHRoZW07Ci0tICAgIGludCBzLCBpOwotKyAgICBzdHJ1 Y3QgYWRkcmluZm8gKnJlcywgKnJlczAsIGhpbnRzOwotKyAgICBjaGFyICpmYWlsZWRfY2FsbCA9 IE5VTEw7Ci0rICAgIGludCBzOwotKyAgICBpbnQgZTsKLSAKLSAgICAgaWYgKCFzc2xfc29ja19p bml0KCkpCi0gICAgICAgICByZXR1cm4gKDApOwotIAotLSAgICBtZW1zZXQoKGNoYXIgKikmdGhl bSwgMCwgc2l6ZW9mKHRoZW0pKTsKLS0gICAgdGhlbS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLS0g ICAgdGhlbS5zaW5fcG9ydCA9IGh0b25zKCh1bnNpZ25lZCBzaG9ydClwb3J0KTsKLS0gICAgYWRk ciA9ICh1bnNpZ25lZCBsb25nKQotLSAgICAgICAgKCh1bnNpZ25lZCBsb25nKWlwWzBdIDw8IDI0 TCkgfAotLSAgICAgICAgKCh1bnNpZ25lZCBsb25nKWlwWzFdIDw8IDE2TCkgfAotLSAgICAgICAg KCh1bnNpZ25lZCBsb25nKWlwWzJdIDw8IDhMKSB8ICgodW5zaWduZWQgbG9uZylpcFszXSk7Ci0t ICAgIHRoZW0uc2luX2FkZHIuc19hZGRyID0gaHRvbmwoYWRkcik7Ci0tCi0tICAgIGlmICh0eXBl ID09IFNPQ0tfU1RSRUFNKQotLSAgICAgICAgcyA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVB TSwgU09DS0VUX1BST1RPQ09MKTsKLS0gICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgIC8q ICggdHlwZSA9PSBTT0NLX0RHUkFNKSAqLwotLSAgICAgICAgcyA9IHNvY2tldChBRl9JTkVULCBT T0NLX0RHUkFNLCBJUFBST1RPX1VEUCk7Ci0tCi0tICAgIGlmIChzID09IElOVkFMSURfU09DS0VU KSB7Ci0tICAgICAgICBwZXJyb3IoInNvY2tldCIpOwotKyAgICBtZW1zZXQoJmhpbnRzLCAnXDAn LCBzaXplb2YoaGludHMpKTsKLSsgICAgaGludHMuYWlfc29ja3R5cGUgPSB0eXBlOwotKyAgICBo aW50cy5haV9mbGFncyA9IEFJX0FERFJDT05GSUc7Ci0rCi0rICAgIGUgPSBnZXRhZGRyaW5mbyho b3N0LCBwb3J0LCAmaGludHMsICZyZXMpOwotKyAgICBpZiAoZSkgewotKyAgICAgICAgZnByaW50 ZihzdGRlcnIsICJnZXRhZGRyaW5mbzogJXNcbiIsIGdhaV9zdHJlcnJvcihlKSk7Ci0rICAgICAg ICBpZiAoZSA9PSBFQUlfU1lTVEVNKQotKyAgICAgICAgICAgIHBlcnJvcigiZ2V0YWRkcmluZm8i KTsKLSAgICAgICAgIHJldHVybiAoMCk7Ci0gICAgIH0KLSsKLSsgICAgcmVzMCA9IHJlczsKLSsg ICAgd2hpbGUgKHJlcykgewotKyAgICAgICAgcyA9IHNvY2tldChyZXMtPmFpX2ZhbWlseSwgcmVz LT5haV9zb2NrdHlwZSwgcmVzLT5haV9wcm90b2NvbCk7Ci0rICAgICAgICBpZiAocyA9PSBJTlZB TElEX1NPQ0tFVCkgewotKyAgICAgICAgICAgIGZhaWxlZF9jYWxsID0gInNvY2tldCI7Ci0rICAg ICAgICAgICAgZ290byBuZXh0cmVzOwotKyAgICAgICAgfQotICMgaWYgZGVmaW5lZChTT19LRUVQ QUxJVkUpICYmICFkZWZpbmVkKE9QRU5TU0xfU1lTX01QRSkKLS0gICAgaWYgKHR5cGUgPT0gU09D S19TVFJFQU0pIHsKLS0gICAgICAgIGkgPSAwOwotLSAgICAgICAgaSA9IHNldHNvY2tvcHQocywg U09MX1NPQ0tFVCwgU09fS0VFUEFMSVZFLCAoY2hhciAqKSZpLCBzaXplb2YoaSkpOwotLSAgICAg ICAgaWYgKGkgPCAwKSB7Ci0tICAgICAgICAgICAgY2xvc2Vzb2NrZXQocyk7Ci0tICAgICAgICAg ICAgcGVycm9yKCJrZWVwYWxpdmUiKTsKLS0gICAgICAgICAgICByZXR1cm4gKDApOwotKyAgICAg ICAgaWYgKHR5cGUgPT0gU09DS19TVFJFQU0pIHsKLSsgICAgICAgICAgICBpbnQgaSA9IDA7Ci0r ICAgICAgICAgICAgaSA9IHNldHNvY2tvcHQocywgU09MX1NPQ0tFVCwgU09fS0VFUEFMSVZFLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopJmksIHNpemVvZihpKSk7Ci0rICAg ICAgICAgICAgaWYgKGkgPCAwKSB7Ci0rICAgICAgICAgICAgICAgIGZhaWxlZF9jYWxsID0gImtl ZXBhbGl2ZSI7Ci0rICAgICAgICAgICAgICAgIGdvdG8gbmV4dHJlczsKLSsgICAgICAgICAgICB9 Ci0gICAgICAgICB9Ci0tICAgIH0KLSAjIGVuZGlmCi0tCi0tICAgIGlmIChjb25uZWN0KHMsIChz dHJ1Y3Qgc29ja2FkZHIgKikmdGhlbSwgc2l6ZW9mKHRoZW0pKSA9PSAtMSkgewotLSAgICAgICAg Y2xvc2Vzb2NrZXQocyk7Ci0tICAgICAgICBwZXJyb3IoImNvbm5lY3QiKTsKLS0gICAgICAgIHJl dHVybiAoMCk7Ci0rICAgICAgICBpZiAoY29ubmVjdChzLCAoc3RydWN0IHNvY2thZGRyICopcmVz LT5haV9hZGRyLCByZXMtPmFpX2FkZHJsZW4pID09IDApIHsKLSsgICAgICAgICAgICBmcmVlYWRk cmluZm8ocmVzMCk7Ci0rICAgICAgICAgICAgKnNvY2sgPSBzOwotKyAgICAgICAgICAgIHJldHVy biAoMSk7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBmYWlsZWRfY2FsbCA9ICJzb2NrZXQiOwot KyBuZXh0cmVzOgotKyAgICAgICAgaWYgKHMgIT0gSU5WQUxJRF9TT0NLRVQpCi0rICAgICAgICAg ICAgY2xvc2Uocyk7Ci0rICAgICAgICByZXMgPSByZXMtPmFpX25leHQ7Ci0gICAgIH0KLS0gICAg KnNvY2sgPSBzOwotLSAgICByZXR1cm4gKDEpOwotKyAgICBmcmVlYWRkcmluZm8ocmVzMCk7Ci0r ICAgIGNsb3Nlc29ja2V0KHMpOwotKwotKyAgICBwZXJyb3IoZmFpbGVkX2NhbGwpOwotKyAgICBy ZXR1cm4gKDApOwotIH0KLSAKLS1pbnQgZG9fc2VydmVyKGludCBwb3J0LCBpbnQgdHlwZSwgaW50 ICpyZXQsCi0raW50IGRvX3NlcnZlcihjaGFyICpwb3J0LCBpbnQgdHlwZSwgaW50ICpyZXQsCi0g ICAgICAgICAgICAgICBpbnQgKCpjYikgKGNoYXIgKmhvc3RuYW1lLCBpbnQgcywgaW50IHN0eXBl LAotICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpjb250ZXh0KSwgdW5z aWduZWQgY2hhciAqY29udGV4dCwKLSAgICAgICAgICAgICAgIGludCBuYWNjZXB0KQotQEAgLTMy OCw2OSArMzI3LDg5IEBAIGludCBkb19zZXJ2ZXIoaW50IHBvcnQsIGludCB0eXBlLCBpbnQgKnIK LSAgICAgfQotIH0KLSAKLS1zdGF0aWMgaW50IGluaXRfc2VydmVyX2xvbmcoaW50ICpzb2NrLCBp bnQgcG9ydCwgY2hhciAqaXAsIGludCB0eXBlKQotK3N0YXRpYyBpbnQgaW5pdF9zZXJ2ZXIoaW50 ICpzb2NrLCBjaGFyICpwb3J0LCBpbnQgdHlwZSkKLSB7Ci0tICAgIGludCByZXQgPSAwOwotLSAg ICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc2VydmVyOwotLSAgICBpbnQgcyA9IC0xOwotKyAgICBzdHJ1 Y3QgYWRkcmluZm8gKnJlcywgKnJlczAgPSBOVUxMLCBoaW50czsKLSsgICAgY2hhciAqZmFpbGVk X2NhbGwgPSBOVUxMOwotKyAgICBpbnQgcyA9IElOVkFMSURfU09DS0VUOwotKyAgICBpbnQgZTsK LSAKLSAgICAgaWYgKCFzc2xfc29ja19pbml0KCkpCi0gICAgICAgICByZXR1cm4gKDApOwotIAot LSAgICBtZW1zZXQoKGNoYXIgKikmc2VydmVyLCAwLCBzaXplb2Yoc2VydmVyKSk7Ci0tICAgIHNl cnZlci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLS0gICAgc2VydmVyLnNpbl9wb3J0ID0gaHRvbnMo KHVuc2lnbmVkIHNob3J0KXBvcnQpOwotLSAgICBpZiAoaXAgPT0gTlVMTCkKLS0gICAgICAgIHNl cnZlci5zaW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOwotLSAgICBlbHNlCi0tLyogQWRkZWQg Zm9yIFQzRSwgYWRkcmVzcy1vZiBmYWlscyBvbiBiaXQgZmllbGQgKGJlY2ttYW5AYWNsLmxhbmwu Z292KSAqLwotLSMgaWZuZGVmIEJJVF9GSUVMRF9MSU1JVFMKLS0gICAgICAgIG1lbWNweSgmc2Vy dmVyLnNpbl9hZGRyLnNfYWRkciwgaXAsIDQpOwotLSMgZWxzZQotLSAgICAgICAgbWVtY3B5KCZz ZXJ2ZXIuc2luX2FkZHIsIGlwLCA0KTsKLS0jIGVuZGlmCi0tCi0tICAgIGlmICh0eXBlID09IFNP Q0tfU1RSRUFNKQotLSAgICAgICAgcyA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgU09D S0VUX1BST1RPQ09MKTsKLS0gICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgIC8qIHR5cGUg PT0gU09DS19ER1JBTSAqLwotLSAgICAgICAgcyA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFN LCBJUFBST1RPX1VEUCk7Ci0rICAgIG1lbXNldCgmaGludHMsICdcMCcsIHNpemVvZihoaW50cykp OwotKyAgICBoaW50cy5haV9mYW1pbHkgPSBBRl9JTkVUNjsKLSsgdHJ5aXB2NDoKLSsgICAgaGlu dHMuYWlfc29ja3R5cGUgPSB0eXBlOwotKyAgICBoaW50cy5haV9mbGFncyA9IEFJX1BBU1NJVkU7 Ci0rCi0rICAgIGUgPSBnZXRhZGRyaW5mbyhOVUxMLCBwb3J0LCAmaGludHMsICZyZXMpOwotKyAg ICBpZiAoZSkgewotKyAgICAgICAgaWYgKGhpbnRzLmFpX2ZhbWlseSA9PSBBRl9JTkVUKSB7Ci0r ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJnZXRhZGRyaW5mbzogJXNcbiIsIGdhaV9zdHJl cnJvcihlKSk7Ci0rICAgICAgICAgICAgaWYgKGUgPT0gRUFJX1NZU1RFTSkKLSsgICAgICAgICAg ICAgICAgcGVycm9yKCJnZXRhZGRyaW5mbyIpOwotKyAgICAgICAgICAgIHJldHVybiAoMCk7Ci0r ICAgICAgICB9IGVsc2UKLSsgICAgICAgICAgICByZXMgPSBOVUxMOwotKyAgICB9Ci0gCi0tICAg IGlmIChzID09IElOVkFMSURfU09DS0VUKQotLSAgICAgICAgZ290byBlcnI7Ci0rICAgIHJlczAg PSByZXM7Ci0rICAgIHdoaWxlIChyZXMpIHsKLSsgICAgICAgIHMgPSBzb2NrZXQocmVzLT5haV9m YW1pbHksIHJlcy0+YWlfc29ja3R5cGUsIHJlcy0+YWlfcHJvdG9jb2wpOwotKyAgICAgICAgaWYg KHMgPT0gSU5WQUxJRF9TT0NLRVQpIHsKLSsgICAgICAgICAgICBmYWlsZWRfY2FsbCA9ICJzb2Nr ZXQiOwotKyAgICAgICAgICAgIGdvdG8gbmV4dHJlczsKLSsgICAgICAgIH0KLSsgICAgICAgIGlm IChoaW50cy5haV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKLSsgICAgICAgICAgICBpbnQgaiA9IDA7 Ci0rICAgICAgICAgICAgc2V0c29ja29wdChzLCBJUFBST1RPX0lQVjYsIElQVjZfVjZPTkxZLCAo dm9pZCAqKSZqLCBzaXplb2Ygaik7Ci0rICAgICAgICB9Ci0gIyBpZiBkZWZpbmVkIFNPTF9TT0NL RVQgJiYgZGVmaW5lZCBTT19SRVVTRUFERFIKLS0gICAgewotLSAgICAgICAgaW50IGogPSAxOwot LSAgICAgICAgc2V0c29ja29wdChzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsICh2b2lkICop JmosIHNpemVvZiBqKTsKLS0gICAgfQotLSMgZW5kaWYKLS0gICAgaWYgKGJpbmQocywgKHN0cnVj dCBzb2NrYWRkciAqKSZzZXJ2ZXIsIHNpemVvZihzZXJ2ZXIpKSA9PSAtMSkgewotLSMgaWZuZGVm IE9QRU5TU0xfU1lTX1dJTkRPV1MKLS0gICAgICAgIHBlcnJvcigiYmluZCIpOwotKyAgICAgICAg ewotKyAgICAgICAgICAgIGludCBqID0gMTsKLSsgICAgICAgICAgICBzZXRzb2Nrb3B0KHMsIFNP TF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgKHZvaWQgKikmaiwgc2l6ZW9mIGopOwotKyAgICAgICAg fQotICMgZW5kaWYKLS0gICAgICAgIGdvdG8gZXJyOwotKwotKyAgICAgICAgaWYgKGJpbmQocywg KHN0cnVjdCBzb2NrYWRkciAqKXJlcy0+YWlfYWRkciwgcmVzLT5haV9hZGRybGVuKSA9PSAtMSkg ewotKyAgICAgICAgICAgIGZhaWxlZF9jYWxsID0gImJpbmQiOwotKyAgICAgICAgICAgIGdvdG8g bmV4dHJlczsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmICh0eXBlID09IFNPQ0tfU1RSRUFNICYm IGxpc3RlbihzLCAxMjgpID09IC0xKSB7Ci0rICAgICAgICAgICAgZmFpbGVkX2NhbGwgPSAibGlz dGVuIjsKLSsgICAgICAgICAgICBnb3RvIG5leHRyZXM7Ci0rICAgICAgICB9Ci0rCi0rICAgICAg ICAqc29jayA9IHM7Ci0rICAgICAgICByZXR1cm4gKDEpOwotKwotKyBuZXh0cmVzOgotKyAgICAg ICAgaWYgKHMgIT0gSU5WQUxJRF9TT0NLRVQpCi0rICAgICAgICAgICAgY2xvc2Uocyk7Ci0rICAg ICAgICByZXMgPSByZXMtPmFpX25leHQ7Ci0gICAgIH0KLS0gICAgLyogTWFrZSBpdCAxMjggZm9y IGxpbnV4ICovCi0tICAgIGlmICh0eXBlID09IFNPQ0tfU1RSRUFNICYmIGxpc3RlbihzLCAxMjgp ID09IC0xKQotLSAgICAgICAgZ290byBlcnI7Ci0tICAgICpzb2NrID0gczsKLS0gICAgcmV0ID0g MTsKLS0gZXJyOgotLSAgICBpZiAoKHJldCA9PSAwKSAmJiAocyAhPSAtMSkpIHsKLS0gICAgICAg IFNIVVRET1dOKHMpOwotKyAgICBpZiAocmVzMCkKLSsgICAgICAgIGZyZWVhZGRyaW5mbyhyZXMw KTsKLSsKLSsgICAgaWYgKHMgPT0gSU5WQUxJRF9TT0NLRVQpIHsKLSsgICAgICAgIGlmIChoaW50 cy5haV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKLSsgICAgICAgICAgICBoaW50cy5haV9mYW1pbHkg PSBBRl9JTkVUOwotKyAgICAgICAgICAgIGdvdG8gdHJ5aXB2NDsKLSsgICAgICAgIH0KLSsgICAg ICAgIHBlcnJvcigic29ja2V0Iik7Ci0rICAgICAgICByZXR1cm4gKDApOwotICAgICB9Ci0tICAg IHJldHVybiAocmV0KTsKLS19Ci0gCi0tc3RhdGljIGludCBpbml0X3NlcnZlcihpbnQgKnNvY2ss IGludCBwb3J0LCBpbnQgdHlwZSkKLS17Ci0tICAgIHJldHVybiAoaW5pdF9zZXJ2ZXJfbG9uZyhz b2NrLCBwb3J0LCBOVUxMLCB0eXBlKSk7Ci0rICAgIHBlcnJvcihmYWlsZWRfY2FsbCk7Ci0rICAg IHJldHVybiAoMCk7Ci0gfQotIAotIHN0YXRpYyBpbnQgZG9fYWNjZXB0KGludCBhY2Nfc29jaywg aW50ICpzb2NrLCBjaGFyICoqaG9zdCkKLSB7Ci0rICAgIHN0YXRpYyBzdHJ1Y3Qgc29ja2FkZHJf c3RvcmFnZSBmcm9tOwotKyAgICBjaGFyIGJ1ZmZlcltOSV9NQVhIT1NUXTsKLSAgICAgaW50IHJl dDsKLS0gICAgc3RydWN0IGhvc3RlbnQgKmgxLCAqaDI7Ci0tICAgIHN0YXRpYyBzdHJ1Y3Qgc29j a2FkZHJfaW4gZnJvbTsKLSAgICAgaW50IGxlbjsKLSAvKiAgICAgIHN0cnVjdCBsaW5nZXIgbGlu ZzsgKi8KLSAKLUBAIC00MzIsMTM0ICs0NTEsNjAgQEAgc3RhdGljIGludCBkb19hY2NlcHQoaW50 IGFjY19zb2NrLCBpbnQgKgotICAgICBsaW5nLmxfb25vZmY9MTsKLSAgICAgbGluZy5sX2xpbmdl cj0wOwotICAgICBpPXNldHNvY2tvcHQocmV0LFNPTF9TT0NLRVQsU09fTElOR0VSLChjaGFyICop Jmxpbmcsc2l6ZW9mKGxpbmcpKTsKLS0gICAgaWYgKGkgPCAwKSB7IHBlcnJvcigibGluZ2VyIik7 IHJldHVybigwKTsgfQotKyAgICBpZiAoaSA8IDApIHsgY2xvc2Vzb2NrZXQocmV0KTsgcGVycm9y KCJsaW5nZXIiKTsgcmV0dXJuKDApOyB9Ci0gICAgIGk9MDsKLSAgICAgaT1zZXRzb2Nrb3B0KHJl dCxTT0xfU09DS0VULFNPX0tFRVBBTElWRSwoY2hhciAqKSZpLHNpemVvZihpKSk7Ci0tICAgIGlm IChpIDwgMCkgeyBwZXJyb3IoImtlZXBhbGl2ZSIpOyByZXR1cm4oMCk7IH0KLSsgICAgaWYgKGkg PCAwKSB7IGNsb3Nlc29ja2V0KHJldCk7IHBlcnJvcigia2VlcGFsaXZlIik7IHJldHVybigwKTsg fQotICovCi0gCi0gICAgIGlmIChob3N0ID09IE5VTEwpCi0gICAgICAgICBnb3RvIGVuZDsKLS0j IGlmbmRlZiBCSVRfRklFTERfTElNSVRTCi0tICAgIC8qIEkgc2hvdWxkIHVzZSBXU0FBc3luY0dl dEhvc3RCeU5hbWUoKSB1bmRlciB3aW5kb3dzICovCi0tICAgIGgxID0gZ2V0aG9zdGJ5YWRkcigo Y2hhciAqKSZmcm9tLnNpbl9hZGRyLnNfYWRkciwKLS0gICAgICAgICAgICAgICAgICAgICAgIHNp emVvZihmcm9tLnNpbl9hZGRyLnNfYWRkciksIEFGX0lORVQpOwotLSMgZWxzZQotLSAgICBoMSA9 IGdldGhvc3RieWFkZHIoKGNoYXIgKikmZnJvbS5zaW5fYWRkciwKLS0gICAgICAgICAgICAgICAg ICAgICAgIHNpemVvZihzdHJ1Y3QgaW5fYWRkciksIEFGX0lORVQpOwotLSMgZW5kaWYKLS0gICAg aWYgKGgxID09IE5VTEwpIHsKLS0gICAgICAgIEJJT19wcmludGYoYmlvX2VyciwgImJhZCBnZXRo b3N0YnlhZGRyXG4iKTsKLSsKLSsgICAgaWYgKGdldG5hbWVpbmZvKChzdHJ1Y3Qgc29ja2FkZHIg KikmZnJvbSwgc2l6ZW9mKGZyb20pLAotKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyLCBzaXpl b2YoYnVmZmVyKSwgTlVMTCwgMCwgMCkpIHsKLSsgICAgICAgIEJJT19wcmludGYoYmlvX2Vyciwg ImdldG5hbWVpbmZvIGZhaWxlZFxuIik7Ci0gICAgICAgICAqaG9zdCA9IE5VTEw7Ci0gICAgICAg ICAvKiByZXR1cm4oMCk7ICovCi0gICAgIH0gZWxzZSB7Ci0tICAgICAgICBpZiAoKCpob3N0ID0g KGNoYXIgKilPUEVOU1NMX21hbGxvYyhzdHJsZW4oaDEtPmhfbmFtZSkgKyAxKSkgPT0gTlVMTCkg ewotKyAgICAgICAgaWYgKCgqaG9zdCA9IChjaGFyICopT1BFTlNTTF9tYWxsb2Moc3RybGVuKGJ1 ZmZlcikgKyAxKSkgPT0gTlVMTCkgewotICAgICAgICAgICAgIHBlcnJvcigiT1BFTlNTTF9tYWxs b2MiKTsKLSAgICAgICAgICAgICBjbG9zZXNvY2tldChyZXQpOwotICAgICAgICAgICAgIHJldHVy biAoMCk7Ci0gICAgICAgICB9Ci0tICAgICAgICBCVUZfc3RybGNweSgqaG9zdCwgaDEtPmhfbmFt ZSwgc3RybGVuKGgxLT5oX25hbWUpICsgMSk7Ci0tCi0tICAgICAgICBoMiA9IEdldEhvc3RCeU5h bWUoKmhvc3QpOwotLSAgICAgICAgaWYgKGgyID09IE5VTEwpIHsKLS0gICAgICAgICAgICBCSU9f cHJpbnRmKGJpb19lcnIsICJnZXRob3N0YnluYW1lIGZhaWx1cmVcbiIpOwotLSAgICAgICAgICAg IGNsb3Nlc29ja2V0KHJldCk7Ci0tICAgICAgICAgICAgcmV0dXJuICgwKTsKLS0gICAgICAgIH0K LS0gICAgICAgIGlmIChoMi0+aF9hZGRydHlwZSAhPSBBRl9JTkVUKSB7Ci0tICAgICAgICAgICAg QklPX3ByaW50ZihiaW9fZXJyLCAiZ2V0aG9zdGJ5bmFtZSBhZGRyIGlzIG5vdCBBRl9JTkVUXG4i KTsKLS0gICAgICAgICAgICBjbG9zZXNvY2tldChyZXQpOwotLSAgICAgICAgICAgIHJldHVybiAo MCk7Ci0tICAgICAgICB9Ci0rICAgICAgICBzdHJjcHkoKmhvc3QsIGJ1ZmZlcik7Ci0gICAgIH0K LSAgZW5kOgotICAgICAqc29jayA9IHJldDsKLSAgICAgcmV0dXJuICgxKTsKLSB9Ci0gCi0taW50 IGV4dHJhY3RfaG9zdF9wb3J0KGNoYXIgKnN0ciwgY2hhciAqKmhvc3RfcHRyLCB1bnNpZ25lZCBj aGFyICppcCwKLS0gICAgICAgICAgICAgICAgICAgICAgc2hvcnQgKnBvcnRfcHRyKQotK2ludCBl eHRyYWN0X2hvc3RfcG9ydChjaGFyICpzdHIsIGNoYXIgKipob3N0X3B0ciwgY2hhciAqKnBvcnRf cHRyKQotIHsKLS0gICAgY2hhciAqaCwgKnA7Ci0rICAgIGNoYXIgKmgsICpwLCAqeDsKLSAKLS0g ICAgaCA9IHN0cjsKLS0gICAgcCA9IHN0cmNocihzdHIsICc6Jyk7Ci0rICAgIHggPSBoID0gc3Ry OwotKyAgICBpZiAoKmggPT0gJ1snKSB7Ci0rICAgICAgICBoKys7Ci0rICAgICAgICBwID0gc3Ry Y2hyKGgsICddJyk7Ci0rICAgICAgICBpZiAocCA9PSBOVUxMKSB7Ci0rICAgICAgICAgICAgQklP X3ByaW50ZihiaW9fZXJyLCAibm8gZW5kaW5nIGJyYWNrZXQgZm9yIElQdjYgYWRkcmVzc1xuIik7 Ci0rICAgICAgICAgICAgcmV0dXJuICgwKTsKLSsgICAgICAgIH0KLSsgICAgICAgICoocCsrKSA9 ICdcMCc7Ci0rICAgICAgICB4ID0gcDsKLSsgICAgfQotKyAgICBwID0gc3RyY2hyKHgsICc6Jyk7 Ci0gICAgIGlmIChwID09IE5VTEwpIHsKLSAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwgIm5v IHBvcnQgZGVmaW5lZFxuIik7Ci0gICAgICAgICByZXR1cm4gKDApOwotICAgICB9Ci0gICAgICoo cCsrKSA9ICdcMCc7Ci0gCi0tICAgIGlmICgoaXAgIT0gTlVMTCkgJiYgIWhvc3RfaXAoc3RyLCBp cCkpCi0tICAgICAgICBnb3RvIGVycjsKLSAgICAgaWYgKGhvc3RfcHRyICE9IE5VTEwpCi0gICAg ICAgICAqaG9zdF9wdHIgPSBoOwotKyAgICBpZiAocG9ydF9wdHIgIT0gTlVMTCkKLSsgICAgICAg ICpwb3J0X3B0ciA9IHA7Ci0gCi0tICAgIGlmICghZXh0cmFjdF9wb3J0KHAsIHBvcnRfcHRyKSkK LS0gICAgICAgIGdvdG8gZXJyOwotLSAgICByZXR1cm4gKDEpOwotLSBlcnI6Ci0tICAgIHJldHVy biAoMCk7Ci0tfQotLQotLXN0YXRpYyBpbnQgaG9zdF9pcChjaGFyICpzdHIsIHVuc2lnbmVkIGNo YXIgaXBbNF0pCi0tewotLSAgICB1bnNpZ25lZCBpbnQgaW5bNF07Ci0tICAgIGludCBpOwotLQot LSAgICBpZiAoc3NjYW5mKHN0ciwgIiV1LiV1LiV1LiV1IiwgJihpblswXSksICYoaW5bMV0pLCAm KGluWzJdKSwgJihpblszXSkpID09Ci0tICAgICAgICA0KSB7Ci0tICAgICAgICBmb3IgKGkgPSAw OyBpIDwgNDsgaSsrKQotLSAgICAgICAgICAgIGlmIChpbltpXSA+IDI1NSkgewotLSAgICAgICAg ICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICJpbnZhbGlkIElQIGFkZHJlc3NcbiIpOwotLSAg ICAgICAgICAgICAgICBnb3RvIGVycjsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICBpcFswXSA9 IGluWzBdOwotLSAgICAgICAgaXBbMV0gPSBpblsxXTsKLS0gICAgICAgIGlwWzJdID0gaW5bMl07 Ci0tICAgICAgICBpcFszXSA9IGluWzNdOwotLSAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAg ICAgLyogZG8gYSBnZXRob3N0YnluYW1lICovCi0tICAgICAgICBzdHJ1Y3QgaG9zdGVudCAqaGU7 Ci0tCi0tICAgICAgICBpZiAoIXNzbF9zb2NrX2luaXQoKSkKLS0gICAgICAgICAgICByZXR1cm4g KDApOwotLQotLSAgICAgICAgaGUgPSBHZXRIb3N0QnlOYW1lKHN0cik7Ci0tICAgICAgICBpZiAo aGUgPT0gTlVMTCkgewotLSAgICAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwgImdldGhvc3Ri eW5hbWUgZmFpbHVyZVxuIik7Ci0tICAgICAgICAgICAgZ290byBlcnI7Ci0tICAgICAgICB9Ci0t ICAgICAgICAvKiBjYXN0IHRvIHNob3J0IGJlY2F1c2Ugb2Ygd2luMTYgd2luc29jayBkZWZpbml0 aW9uICovCi0tICAgICAgICBpZiAoKHNob3J0KWhlLT5oX2FkZHJ0eXBlICE9IEFGX0lORVQpIHsK LS0gICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICJnZXRob3N0YnluYW1lIGFkZHIgaXMg bm90IEFGX0lORVRcbiIpOwotLSAgICAgICAgICAgIHJldHVybiAoMCk7Ci0tICAgICAgICB9Ci0t ICAgICAgICBpcFswXSA9IGhlLT5oX2FkZHJfbGlzdFswXVswXTsKLS0gICAgICAgIGlwWzFdID0g aGUtPmhfYWRkcl9saXN0WzBdWzFdOwotLSAgICAgICAgaXBbMl0gPSBoZS0+aF9hZGRyX2xpc3Rb MF1bMl07Ci0tICAgICAgICBpcFszXSA9IGhlLT5oX2FkZHJfbGlzdFswXVszXTsKLS0gICAgfQot LSAgICByZXR1cm4gKDEpOwotLSBlcnI6Ci0tICAgIHJldHVybiAoMCk7Ci0tfQotLQotLWludCBl eHRyYWN0X3BvcnQoY2hhciAqc3RyLCBzaG9ydCAqcG9ydF9wdHIpCi0tewotLSAgICBpbnQgaTsK LS0gICAgc3RydWN0IHNlcnZlbnQgKnM7Ci0tCi0tICAgIGkgPSBhdG9pKHN0cik7Ci0tICAgIGlm IChpICE9IDApCi0tICAgICAgICAqcG9ydF9wdHIgPSAodW5zaWduZWQgc2hvcnQpaTsKLS0gICAg ZWxzZSB7Ci0tICAgICAgICBzID0gZ2V0c2VydmJ5bmFtZShzdHIsICJ0Y3AiKTsKLS0gICAgICAg IGlmIChzID09IE5VTEwpIHsKLS0gICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICJnZXRz ZXJ2YnluYW1lIGZhaWx1cmUgZm9yICVzXG4iLCBzdHIpOwotLSAgICAgICAgICAgIHJldHVybiAo MCk7Ci0tICAgICAgICB9Ci0tICAgICAgICAqcG9ydF9wdHIgPSBudG9ocygodW5zaWduZWQgc2hv cnQpcy0+c19wb3J0KTsKLS0gICAgfQotICAgICByZXR1cm4gKDEpOwotIH0KLSAKCmRpZmYgLS1n aXQgYS9vcGVuc3NsLTEuMC4yYS1pc3N1ZXItaGFzaC5wYXRjaCBiL29wZW5zc2wtMS4wLjJhLWlz c3Vlci1oYXNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDM5ZDE0Li4w MDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjJhLWlzc3Vlci1oYXNoLnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMTEgKzAsMCBAQAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3g1MDkv eDUwOV9jbXAuYy5pc3N1ZXItaGFzaCBvcGVuc3NsLTEuMC4xay9jcnlwdG8veDUwOS94NTA5X2Nt cC5jCi0tLS0gb3BlbnNzbC0xLjAuMWsvY3J5cHRvL3g1MDkveDUwOV9jbXAuYy5pc3N1ZXItaGFz aAkyMDE1LTA0LTA5IDE4OjE2OjAzLjM0OTg1NTE5MyArMDIwMAotKysrIG9wZW5zc2wtMS4wLjFr L2NyeXB0by94NTA5L3g1MDlfY21wLmMJMjAxNS0wNC0wOSAxODoxNjowMC42MTY3OTIwNTggKzAy MDAKLUBAIC04Niw2ICs4Niw3IEBAIHVuc2lnbmVkIGxvbmcgWDUwOV9pc3N1ZXJfYW5kX3Nlcmlh bF9oYXMKLSAgICAgY2hhciAqZjsKLSAKLSAgICAgRVZQX01EX0NUWF9pbml0KCZjdHgpOwotKyAg ICBFVlBfTURfQ1RYX3NldF9mbGFncygmY3R4LCBFVlBfTURfQ1RYX0ZMQUdfTk9OX0ZJUFNfQUxM T1cpOwotICAgICBmID0gWDUwOV9OQU1FX29uZWxpbmUoYS0+Y2VydF9pbmZvLT5pc3N1ZXIsIE5V TEwsIDApOwotICAgICBpZiAoIUVWUF9EaWdlc3RJbml0X2V4KCZjdHgsIEVWUF9tZDUoKSwgTlVM TCkpCi0gICAgICAgICBnb3RvIGVycjsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4yYS1uby1t ZDUtdmVyaWZ5LnBhdGNoIGIvb3BlbnNzbC0xLjAuMmEtbm8tbWQ1LXZlcmlmeS5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjdlNjY2My4uMDAwMDAwMAotLS0gYS9vcGVuc3Ns LTEuMC4yYS1uby1tZDUtdmVyaWZ5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBA QAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2FzbjEvYV92ZXJpZnkuYy5uby1tZDUt dmVyaWZ5IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9hc24xL2FfdmVyaWZ5LmMKLS0tLSBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vYXNuMS9hX3ZlcmlmeS5jLm5vLW1kNS12ZXJpZnkJMjAxNS0wNC0wOSAx ODoyMDo1OC44Mjk2ODA4MjkgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vYXNuMS9h X3ZlcmlmeS5jCTIwMTUtMDQtMDkgMTg6MjA6NTQuNDk1NTgwNzEwICswMjAwCi1AQCAtNTYsNiAr NTYsOSBAQAotICAqIFtpbmNsdWRpbmcgdGhlIEdOVSBQdWJsaWMgTGljZW5jZS5dCi0gICovCi0g Ci0rLyogZm9yIHNlY3VyZV9nZXRlbnYgKi8KLSsjZGVmaW5lIF9HTlVfU09VUkNFCi0rCi0gI2lu Y2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLSAKLUBAIC0xNzEsNiArMTc0LDEx IEBAIGludCBBU04xX2l0ZW1fdmVyaWZ5KGNvbnN0IEFTTjFfSVRFTSAqaXQKLSAgICAgICAgIGlm IChyZXQgIT0gMikKLSAgICAgICAgICAgICBnb3RvIGVycjsKLSAgICAgICAgIHJldCA9IC0xOwot KyAgICB9IGVsc2UgaWYgKG1kbmlkID09IE5JRF9tZDUKLSsgICAgICAgICAgICAgICAmJiBzZWN1 cmVfZ2V0ZW52KCJPUEVOU1NMX0VOQUJMRV9NRDVfVkVSSUZZIikgPT0gTlVMTCkgewotKyAgICAg ICAgQVNOMWVycihBU04xX0ZfQVNOMV9JVEVNX1ZFUklGWSwKLSsgICAgICAgICAgICAgICAgQVNO MV9SX1VOS05PV05fTUVTU0FHRV9ESUdFU1RfQUxHT1JJVEhNKTsKLSsgICAgICAgIGdvdG8gZXJy OwotICAgICB9IGVsc2UgewotICAgICAgICAgY29uc3QgRVZQX01EICp0eXBlOwotICAgICAgICAg dHlwZSA9IEVWUF9nZXRfZGlnZXN0YnluaWQobWRuaWQpOwoKZGlmZiAtLWdpdCBhL29wZW5zc2wt MS4wLjJhLW5vLXJwYXRoLnBhdGNoIGIvb3BlbnNzbC0xLjAuMmEtbm8tcnBhdGgucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhYWZlZmQuLjAwMDAwMDAKLS0tIGEvb3BlbnNz bC0xLjAuMmEtbm8tcnBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1k aWZmIC11cCBvcGVuc3NsLTEuMC4yYS9NYWtlZmlsZS5zaGFyZWQubm8tcnBhdGggb3BlbnNzbC0x LjAuMmEvTWFrZWZpbGUuc2hhcmVkCi0tLS0gb3BlbnNzbC0xLjAuMmEvTWFrZWZpbGUuc2hhcmVk Lm5vLXJwYXRoCTIwMTUtMDQtMDkgMTg6MTQ6MzkuNjQ3OTIxNjYzICswMjAwCi0rKysgb3BlbnNz bC0xLjAuMmEvTWFrZWZpbGUuc2hhcmVkCTIwMTUtMDQtMDkgMTg6MTQ6MzQuNDIzODAwOTg1ICsw MjAwCi1AQCAtMTUzLDcgKzE1Myw3IEBAIERPX0dOVV9TTz0kKENBTENfVkVSU0lPTlMpOyBcCi0g CU5PQUxMU1lNU0ZMQUdTPSctV2wsLS1uby13aG9sZS1hcmNoaXZlJzsgXAotIAlTSEFSRURGTEFH Uz0iJChDRkxBR1MpICQoU0hBUkVEX0xERkxBR1MpIC1zaGFyZWQgLVdsLC1Cc3ltYm9saWMgLVds LC1zb25hbWU9JCRTSExJQiQkU0hMSUJfU09WRVIkJFNITElCX1NVRkZJWCIKLSAKLS1ET19HTlVf QVBQPUxERkxBR1M9IiQoQ0ZMQUdTKSAtV2wsLXJwYXRoLCQoTElCUlBBVEgpIgotK0RPX0dOVV9B UFA9TERGTEFHUz0iJChDRkxBR1MpIgotIAotICNUaGlzIGlzIHJhdGhlciBzcGVjaWFsLiAgSXQn cyBhIHNwZWNpYWwgdGFyZ2V0IHdpdGggd2hpY2ggb25lIGNhbiBsaW5rCi0gI2FwcGxpY2F0aW9u cyB3aXRob3V0IGJvdGhlcmluZyB3aXRoIGFueSBmZWF0dXJlcyB0aGF0IGhhdmUgYW55dGhpbmcg dG8KCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4yYS1wYWRsb2NrNjQucGF0Y2ggYi9vcGVuc3Ns LTEuMC4yYS1wYWRsb2NrNjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5 ZDM5NTguLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMmEtcGFkbG9jazY0LnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMTk4ICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2VuZ2lu ZXMvZV9wYWRsb2NrLmMucGFkbG9jazY0IG9wZW5zc2wtMS4wLjJhL2VuZ2luZXMvZV9wYWRsb2Nr LmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9lbmdpbmVzL2VfcGFkbG9jay5jLnBhZGxvY2s2NAkyMDE1 LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJhL2VuZ2lu ZXMvZV9wYWRsb2NrLmMJMjAxNS0wNC0yMiAxNjoyMzo0NC4xMDU2MTc0NjggKzAyMDAKLUBAIC0x MDEsNyArMTAxLDEwIEBACi0gICovCi0gIyAgdW5kZWYgQ09NUElMRV9IV19QQURMT0NLCi0gIyAg aWYgIWRlZmluZWQoSTM4Nl9PTkxZKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0lOTElORV9BU00p Ci0tIyAgIGlmIChkZWZpbmVkKF9fR05VQ19fKSAmJiAoZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX2kzODYpKSkgfHwgXAotKyMgIGlmIChkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNf Xz49MiAmJiBcCi0rICAgICAgIChkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9faTM4Nikg fHwgXAotKyAgICAgICAgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9feDg2XzY0KSkg XAotKyAgICAgKSB8fCBcCi0gICAgICAoZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChfTV9J WDg2KSkKLSAjICAgIGRlZmluZSBDT01QSUxFX0hXX1BBRExPQ0sKLSAjICAgZW5kaWYKLUBAIC0x NDAsNyArMTQzLDcgQEAgdm9pZCBFTkdJTkVfbG9hZF9wYWRsb2NrKHZvaWQpCi0gIyAgICBlbmRp ZgotICMgICBlbGlmIGRlZmluZWQoX19HTlVDX18pCi0gIyAgICBpZm5kZWYgYWxsb2NhCi0tIyAg ICAgZGVmaW5lIGFsbG9jYShzKSBfX2J1aWx0aW5fYWxsb2NhKHMpCi0rIyAgICAgZGVmaW5lIGFs bG9jYShzKSBfX2J1aWx0aW5fYWxsb2NhKChzKSkKLSAjICAgIGVuZGlmCi0gIyAgIGVuZGlmCi0g Ci1AQCAtMzAzLDYgKzMwNiw3IEBAIHN0YXRpYyB2b2xhdGlsZSBzdHJ1Y3QgcGFkbG9ja19jaXBo ZXJfZGEKLSAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0gICovCi0gIyAgIGlmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fPj0y Ci0rIyAgICBpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9faTM4NikKLSAvKgotICAq IEFzIGZvciBleGNlc3NpdmUgInB1c2ggJWVieCIvInBvcCAlZWJ4IiBmb3VuZCBhbGwgb3Zlci4K LSAgKiBXaGVuIGdlbmVyYXRpbmcgcG9zaXRpb24taW5kZXBlbmRlbnQgY29kZSBHQ0Mgd29uJ3Qg bGV0Ci1AQCAtMzc5LDIyICszODMsNiBAQCBzdGF0aWMgaW50IHBhZGxvY2tfYXZhaWxhYmxlKHZv aWQpCi0gICAgIHJldHVybiBwYWRsb2NrX3VzZV9hY2UgKyBwYWRsb2NrX3VzZV9ybmc7Ci0gfQot IAotLSMgICAgaWZuZGVmIE9QRU5TU0xfTk9fQUVTCi0tIyAgICAgaWZuZGVmIEFFU19BU00KLS0v KiBPdXIgb3duIGh0b25sKCkvbnRvaGwoKSAqLwotLXN0YXRpYyBpbmxpbmUgdm9pZCBwYWRsb2Nr X2Jzd2FwbChBRVNfS0VZICprcykKLS17Ci0tICAgIHNpemVfdCBpID0gc2l6ZW9mKGtzLT5yZF9r ZXkpIC8gc2l6ZW9mKGtzLT5yZF9rZXlbMF0pOwotLSAgICB1bnNpZ25lZCBpbnQgKmtleSA9IGtz LT5yZF9rZXk7Ci0tCi0tICAgIHdoaWxlIChpLS0pIHsKLS0gICAgICAgIGFzbSB2b2xhdGlsZSAo ImJzd2FwbCAlMCI6IityIiAoKmtleSkpOwotLSAgICAgICAga2V5Kys7Ci0tICAgIH0KLS19Ci0t IyAgICAgZW5kaWYKLS0jICAgIGVuZGlmCi0tCi0gLyoKLSAgKiBGb3JjZSBrZXkgcmVsb2FkIGZy b20gbWVtb3J5IHRvIHRoZSBDUFUgbWljcm9jb2RlLiBMb2FkaW5nIEVGTEFHUyBmcm9tIHRoZQot ICAqIHN0YWNrIGNsZWFycyBFRkxBR1NbMzBdIHdoaWNoIGRvZXMgdGhlIHRyaWNrLgotQEAgLTQw NCw3ICszOTIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGFkbG9ja19yZWxvYWRfa2V5KHZvCi0g ICAgIGFzbSB2b2xhdGlsZSAoInB1c2hmbDsgcG9wZmwiKTsKLSB9Ci0gCi0tIyAgICBpZm5kZWYg T1BFTlNTTF9OT19BRVMKLSsjICAgICBpZm5kZWYgT1BFTlNTTF9OT19BRVMKLSAvKgotICAqIFRo aXMgaXMgaGV1cmlzdGljIGtleSBjb250ZXh0IHRyYWNpbmcuIEF0IGZpcnN0IG9uZQotICAqIGJl bGlldmVzIHRoYXQgb25lIHNob3VsZCB1c2UgYXRvbWljIHN3YXAgaW5zdHJ1Y3Rpb25zLAotQEAg LTQ0OCw2ICs0MzYsMTAxIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqbmFtZShzaXplX3QgY250LAot ICAgICAgICAgICAgICAgICA6ICJlZHgiLCAiY2MiLCAibWVtb3J5Iik7ICAgICAgIFwKLSAgICAg ICAgIHJldHVybiBpdjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gfQotKyMgICAg IGVuZGlmCi0rCi0rIyAgICBlbGlmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3g4 Nl82NCkKLSsKLSsvKiBMb2FkIHN1cHBvcnRlZCBmZWF0dXJlcyBvZiB0aGUgQ1BVIHRvIHNlZSBp ZgotKyAgIHRoZSBQYWRMb2NrIGlzIGF2YWlsYWJsZS4gKi8KLStzdGF0aWMgaW50IHBhZGxvY2tf YXZhaWxhYmxlKHZvaWQpCi0rewotKyAgICBjaGFyIHZlbmRvcl9zdHJpbmdbMTZdOwotKyAgICB1 bnNpZ25lZCBpbnQgZWF4LCBlZHg7Ci0rCi0rICAgIC8qIEFyZSB3ZSBydW5uaW5nIG9uIHRoZSBD ZW50YXVyIChWSUEpIENQVT8gKi8KLSsgICAgZWF4ID0gMHgwMDAwMDAwMDsKLSsgICAgdmVuZG9y X3N0cmluZ1sxMl0gPSAwOwotKyAgICBhc20gdm9sYXRpbGUgKCJjcHVpZFxuIgotKyAgICAgICAg ICAgICAgICAgICJtb3ZsICAgJSVlYngsKCUxKVxuIgotKyAgICAgICAgICAgICAgICAgICJtb3Zs ICAgJSVlZHgsNCglMSlcbiIKLSsgICAgICAgICAgICAgICAgICAibW92bCAgICUlZWN4LDgoJTEp XG4iOiIrYSIgKGVheCk6InIiKHZlbmRvcl9zdHJpbmcpOiJyYngiLAotKyAgICAgICAgICAgICAg ICAgICJyY3giLCAicmR4Iik7Ci0rICAgIGlmIChzdHJjbXAodmVuZG9yX3N0cmluZywgIkNlbnRh dXJIYXVscyIpICE9IDApCi0rICAgICAgICByZXR1cm4gMDsKLSsKLSsgICAgLyogQ2hlY2sgZm9y IENlbnRhdXIgRXh0ZW5kZWQgRmVhdHVyZSBGbGFncyBwcmVzZW5jZSAqLwotKyAgICBlYXggPSAw eEMwMDAwMDAwOwotKyAgICBhc20gdm9sYXRpbGUgKCJjcHVpZCI6IithIiAoZWF4KTo6InJieCIs ICJyY3giLCAicmR4Iik7Ci0rICAgIGlmIChlYXggPCAweEMwMDAwMDAxKQotKyAgICAgICAgcmV0 dXJuIDA7Ci0rCi0rICAgIC8qIFJlYWQgdGhlIENlbnRhdXIgRXh0ZW5kZWQgRmVhdHVyZSBGbGFn cyAqLwotKyAgICBlYXggPSAweEMwMDAwMDAxOwotKyAgICBhc20gdm9sYXRpbGUgKCJjcHVpZCI6 IithIiAoZWF4KSwgIj1kIihlZHgpOjoicmJ4IiwgInJjeCIpOwotKwotKyAgICAvKiBGaWxsIHVw IHNvbWUgZmxhZ3MgKi8KLSsgICAgcGFkbG9ja191c2VfYWNlID0gKChlZHggJiAoMHgzIDw8IDYp KSA9PSAoMHgzIDw8IDYpKTsKLSsgICAgcGFkbG9ja191c2Vfcm5nID0gKChlZHggJiAoMHgzIDw8 IDIpKSA9PSAoMHgzIDw8IDIpKTsKLSsKLSsgICAgcmV0dXJuIHBhZGxvY2tfdXNlX2FjZSArIHBh ZGxvY2tfdXNlX3JuZzsKLSt9Ci0rCi0rLyogRm9yY2Uga2V5IHJlbG9hZCBmcm9tIG1lbW9yeSB0 byB0aGUgQ1BVIG1pY3JvY29kZS4KLSsgICBMb2FkaW5nIEVGTEFHUyBmcm9tIHRoZSBzdGFjayBj bGVhcnMgRUZMQUdTWzMwXQotKyAgIHdoaWNoIGRvZXMgdGhlIHRyaWNrLiAqLwotK3N0YXRpYyBp bmxpbmUgdm9pZCBwYWRsb2NrX3JlbG9hZF9rZXkodm9pZCkKLSt7Ci0rICAgIGFzbSB2b2xhdGls ZSAoInB1c2hmcTsgcG9wZnEiKTsKLSt9Ci0rCi0rIyAgICAgaWZuZGVmIE9QRU5TU0xfTk9fQUVT Ci0rLyoKLSsgKiBUaGlzIGlzIGhldXJpc3RpYyBrZXkgY29udGV4dCB0cmFjaW5nLiBBdCBmaXJz dCBvbmUKLSsgKiBiZWxpZXZlcyB0aGF0IG9uZSBzaG91bGQgdXNlIGF0b21pYyBzd2FwIGluc3Ry dWN0aW9ucywKLSsgKiBidXQgaXQncyBub3QgYWN0dWFsbHkgbmVjZXNzYXJ5LiBQb2ludCBpcyB0 aGF0IGlmCi0rICogcGFkbG9ja19zYXZlZF9jb250ZXh0IHdhcyBjaGFuZ2VkIGJ5IGFub3RoZXIg dGhyZWFkCi0rICogYWZ0ZXIgd2UndmUgcmVhZCBpdCBhbmQgYmVmb3JlIHdlIGNvbXBhcmUgaXQg d2l0aCBjZGF0YSwKLSsgKiBvdXIga2V5ICpzaGFsbCogYmUgcmVsb2FkZWQgdXBvbiB0aHJlYWQg Y29udGV4dCBzd2l0Y2gKLSsgKiBhbmQgd2UgYXJlIHRoZXJlZm9yZSBzZXQgaW4gZWl0aGVyIGNh c2UuLi4KLSsgKi8KLStzdGF0aWMgaW5saW5lIHZvaWQgcGFkbG9ja192ZXJpZnlfY29udGV4dChz dHJ1Y3QgcGFkbG9ja19jaXBoZXJfZGF0YSAqY2RhdGEpCi0rewotKyAgICBhc20gdm9sYXRpbGUg KCJwdXNoZnFcbiIKLSsgICAgICAgICAgICAgICAgICAiICAgICAgIGJ0bCAgICAgJDMwLCglJXJz cClcbiIKLSsgICAgICAgICAgICAgICAgICAiICAgICAgIGpuYyAgICAgMWZcbiIKLSsgICAgICAg ICAgICAgICAgICAiICAgICAgIGNtcHEgICAgJTIsJTFcbiIKLSsgICAgICAgICAgICAgICAgICAi ICAgICAgIGplICAgICAgMWZcbiIKLSsgICAgICAgICAgICAgICAgICAiICAgICAgIHBvcGZxXG4i Ci0rICAgICAgICAgICAgICAgICAgIiAgICAgICBzdWJxICAgICQ4LCUlcnNwXG4iCi0rICAgICAg ICAgICAgICAgICAgIjE6ICAgICBhZGRxICAgICQ4LCUlcnNwXG4iCi0rICAgICAgICAgICAgICAg ICAgIiAgICAgICBtb3ZxICAgICUyLCUwIjoiK20iIChwYWRsb2NrX3NhdmVkX2NvbnRleHQpCi0r ICAgICAgICAgICAgICAgICAgOiJyIihwYWRsb2NrX3NhdmVkX2NvbnRleHQpLCAiciIoY2RhdGEp OiJjYyIpOwotK30KLSsKLSsvKiBUZW1wbGF0ZSBmb3IgcGFkbG9ja194Y3J5cHRfKiBtb2RlcyAq LwotKy8qIEJJRyBGQVQgV0FSTklORzoKLSsgKiAgICAgIFRoZSBvZmZzZXRzIHVzZWQgd2l0aCAn bGVhbCcgaW5zdHJ1Y3Rpb25zCi0rICogICAgICBkZXNjcmliZSBpdGVtcyBvZiB0aGUgJ3BhZGxv Y2tfY2lwaGVyX2RhdGEnCi0rICogICAgICBzdHJ1Y3R1cmUuCi0rICovCi0rIyAgICAgIGRlZmlu ZSBQQURMT0NLX1hDUllQVF9BU00obmFtZSxyZXBfeGNyeXB0KSAgICAgXAotK3N0YXRpYyBpbmxp bmUgdm9pZCAqbmFtZShzaXplX3QgY250LCAgICAgICAgICAgIFwKLSsgICAgICAgIHN0cnVjdCBw YWRsb2NrX2NpcGhlcl9kYXRhICpjZGF0YSwgICAgICBcCi0rICAgICAgICB2b2lkICpvdXQsIGNv bnN0IHZvaWQgKmlucCkgICAgICAgICAgICAgXAotK3sgICAgICAgdm9pZCAqaXY7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIGFzbSB2b2xhdGlsZSAoICJsZWFxICAg IDE2KCUwKSwlJXJkeFxuIiBcCi0rICAgICAgICAgICAgICAgICIgICAgICAgbGVhcSAgICAzMigl MCksJSVyYnhcbiIgXAotKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcF94Y3J5cHQgIlxuIiAg ICAgICAgIFwKLSsgICAgICAgICAgICAgICAgOiAiPWEiKGl2KSwgIj1jIihjbnQpLCAiPUQiKG91 dCksICI9UyIoaW5wKSBcCi0rICAgICAgICAgICAgICAgIDogIjAiKGNkYXRhKSwgIjEiKGNudCks ICIyIihvdXQpLCAiMyIoaW5wKSAgXAotKyAgICAgICAgICAgICAgICA6ICJyYngiLCAicmR4Iiwg ImNjIiwgIm1lbW9yeSIpOyAgICAgICAgXAotKyAgICAgICAgcmV0dXJuIGl2OyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSt9Ci0rIyAgICAgZW5kaWYKLSsKLSsjICAgIGVuZGlmICAg ICAgICAgICAgICAgICAgICAgIC8qIGNwdSAqLwotKwotKyMgICAgaWZuZGVmIE9QRU5TU0xfTk9f QUVTCi0gCi0gLyogR2VuZXJhdGUgYWxsIGZ1bmN0aW9ucyB3aXRoIGFwcHJvcHJpYXRlIG9wY29k ZXMgKi8KLSAvKiByZXAgeGNyeXB0ZWNiICovCi1AQCAtNDU4LDYgKzU0MSwyMCBAQCBQQURMT0NL X1hDUllQVF9BU00ocGFkbG9ja194Y3J5cHRfZWNiLCAiCi0gICAgIFBBRExPQ0tfWENSWVBUX0FT TShwYWRsb2NrX3hjcnlwdF9jZmIsICIuYnl0ZSAweGYzLDB4MGYsMHhhNywweGUwIikKLSAvKiBy ZXAgeGNyeXB0b2ZiICovCi0gICAgIFBBRExPQ0tfWENSWVBUX0FTTShwYWRsb2NrX3hjcnlwdF9v ZmIsICIuYnl0ZSAweGYzLDB4MGYsMHhhNywweGU4IikKLSsKLSsjICAgICBpZm5kZWYgQUVTX0FT TQotKy8qIE91ciBvd24gaHRvbmwoKS9udG9obCgpICovCi0rc3RhdGljIGlubGluZSB2b2lkIHBh ZGxvY2tfYnN3YXBsKEFFU19LRVkgKmtzKQotK3sKLSsgICAgc2l6ZV90IGkgPSBzaXplb2Yoa3Mt PnJkX2tleSkgLyBzaXplb2Yoa3MtPnJkX2tleVswXSk7Ci0rICAgIHVuc2lnbmVkIGludCAqa2V5 ID0ga3MtPnJkX2tleTsKLSsKLSsgICAgd2hpbGUgKGktLSkgewotKyAgICAgICAgYXNtIHZvbGF0 aWxlICgiYnN3YXBsICUwIjoiK3IiICgqa2V5KSk7Ci0rICAgICAgICBrZXkrKzsKLSsgICAgfQot K30KLSsjICAgICBlbmRpZgotICMgICAgZW5kaWYKLSAvKiBUaGUgUk5HIGNhbGwgaXRzZWxmICov Ci0gc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgcGFkbG9ja194c3RvcmUodm9pZCAqYWRkciwg dW5zaWduZWQgaW50IGVkeF9pbikKLUBAIC00ODUsOCArNTgyLDggQEAgc3RhdGljIGlubGluZSB1 bnNpZ25lZCBpbnQgcGFkbG9ja194c3RvcgotIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAq cGFkbG9ja19tZW1jcHkodm9pZCAqZHN0LCBjb25zdCB2b2lkICpzcmMsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbikKLSB7Ci0tICAgIGxvbmcg KmQgPSBkc3Q7Ci0tICAgIGNvbnN0IGxvbmcgKnMgPSBzcmM7Ci0rICAgIHNpemVfdCAqZCA9IGRz dDsKLSsgICAgY29uc3Qgc2l6ZV90ICpzID0gc3JjOwotIAotICAgICBuIC89IHNpemVvZigqZCk7 Ci0gICAgIGRvIHsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4yYS1yZWFkbWUtd2FybmluZy5w YXRjaCBiL29wZW5zc2wtMS4wLjJhLXJlYWRtZS13YXJuaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA3MDY5OTg5Li4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjJhLXJl YWRtZS13YXJuaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotZGlmZiAt dXAgb3BlbnNzbC0xLjAuMmEvUkVBRE1FLndhcm5pbmcgb3BlbnNzbC0xLjAuMmEvUkVBRE1FCi0t LS0gb3BlbnNzbC0xLjAuMmEvUkVBRE1FLndhcm5pbmcJMjAxNS0wMy0yMCAxNjowMDo0Ny4wMDAw MDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9SRUFETUUJMjAxNS0wMy0yMSAwOTowNjox MS4wMDAwMDAwMDAgKzAxMDAKLUBAIC01LDYgKzUsNDYgQEAKLSAgQ29weXJpZ2h0IChjKSAxOTk1 LTE5OTggRXJpYyBBLiBZb3VuZywgVGltIEouIEh1ZHNvbgotICBBbGwgcmlnaHRzIHJlc2VydmVk LgotIAotKyBXQVJOSU5HCi0rIC0tLS0tLS0KLSsKLSsgVGhpcyB2ZXJzaW9uIG9mIE9wZW5TU0wg aXMgYnVpbHQgaW4gYSB3YXkgdGhhdCBzdXBwb3J0cyBvcGVyYXRpb24gaW4KLSsgdGhlIHNvIGNh bGxlZCBGSVBTIG1vZGUuIE5vdGUgdGhvdWdoIHRoYXQgdGhlIGxpYnJhcnkgYXMgd2UgYnVpbGQg aXQKLSsgaXMgbm90IEZJUFMgMTQwLTIgdmFsaWRhdGVkIGFuZCB0aGUgRklQUyBtb2RlIGlzIHBy ZXNlbnQgZm9yIHRlc3RpbmcKLSsgcHVycG9zZXMgb25seS4KLSsKLSsgVGhpcyB2ZXJzaW9uIGFs c28gY29udGFpbnMgYSBmZXcgZGlmZmVyZW5jZXMgZnJvbSB0aGUgdXBzdHJlYW0gY29kZQotKyBz b21lIG9mIHdoaWNoIGFyZToKLSsgICAqIFRoZSBGSVBTIHZhbGlkYXRpb24gc3VwcG9ydCBpcyBz aWduaWZpY2FudGx5IGRpZmZlcmVudCBmcm9tIHRoZQotKyAgICAgdXBzdHJlYW0gRklQUyBzdXBw b3J0LiBGb3IgZXhhbXBsZSB0aGUgRklQUyBpbnRlZ3JpdHkgdmVyaWZpY2F0aW9uCi0rICAgICBj aGVjayBpcyBpbXBsZW1lbnRlZCBkaWZmZXJlbnRseSBhcyB0aGUgRklQUyBtb2R1bGUgaXMgYnVp bHQgaW5zaWRlCi0rICAgICB0aGUgc2hhcmVkIGxpYnJhcnkuIFRoZSBITUFDLVNIQTI1NiBjaGVj a3N1bXMgb2YgdGhlIHdob2xlIHNoYXJlZAotKyAgICAgbGlicmFyaWVzIGFyZSB2ZXJpZmllZC4g QWxzbyBub3RlIHRoYXQgdGhlIEZJUFMgaW50ZWdyaXR5Ci0rICAgICB2ZXJpZmljYXRpb24gY2hl Y2sgcmVxdWlyZXMgdGhhdCB0aGUgbGliY3J5cHRvIGFuZCBsaWJzc2wgc2hhcmVkCi0rICAgICBs aWJyYXJ5IGZpbGVzIGFyZSB1bm1vZGlmaWVkIHdoaWNoIG1lYW5zIHRoYXQgaXQgd2lsbCBmYWls IGlmIHRoZXNlCi0rICAgICBmaWxlcyBhcmUgY2hhbmdlZCBmb3IgZXhhbXBsZSBieSBwcmVsaW5r LgotKyAgICogSWYgdGhlIGZpbGUgL2V0Yy9zeXN0ZW0tZmlwcyBpcyBwcmVzZW50IHRoZSBpbnRl Z3JpdHkgdmVyaWZpY2F0aW9uCi0rICAgICBhbmQgc2VsZnRlc3RzIG9mIHRoZSBjcnlwdG8gYWxn b3JpdGhtcyBhcmUgcnVuIGluc2lkZSB0aGUgbGlicmFyeQotKyAgICAgY29uc3RydWN0b3IgY29k ZS4KLSsgICAqIFdpdGggdGhlIC9ldGMvc3lzdGVtLWZpcHMgcHJlc2VudCB0aGUgbW9kdWxlIHJl c3BlY3RzIHRoZSBrZXJuZWwKLSsgICAgIEZJUFMgZmxhZyAvcHJvYy9zeXMvY3J5cHRvL2ZpcHMg YW5kIHRyaWVzIHRvIGluaXRpYWxpemUgdGhlIEZJUFMgbW9kZQotKyAgICAgaWYgaXQgaXMgc2V0 IHRvIDEgYWJvcnRpbmcgaWYgdGhlIEZJUFMgbW9kZSBjb3VsZCBub3QgYmUgaW5pdGlhbGl6ZWQu Ci0rICAgICBXaXRoIHRoZSAvZXRjL3N5c3RlbS1maXBzIHByZXNlbnQgaXQgaXMgYWxzbyBwb3Nz aWJsZSB0byBmb3JjZSB0aGUKLSsgICAgIE9wZW5TU0wgbGlicmFyeSB0byBGSVBTIG1vZGUgZXNw ZWNpYWxseSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzIGJ5Ci0rICAgICBzZXR0aW5nIHRoZSBlbnZp cm9ubWVudCB2YXJpYWJsZSBPUEVOU1NMX0ZPUkNFX0ZJUFNfTU9ERS4KLSsgICAqIElmIHRoZSBl bnZpcm9ubWVudCB2YXJpYWJsZSBPUEVOU1NMX05PX0RFRkFVTFRfWkxJQiBpcyBzZXQgdGhlIG1v ZHVsZQotKyAgICAgd2lsbCBub3QgYXV0b21hdGljYWxseSBsb2FkIHRoZSBidWlsdCBpbiBjb21w cmVzc2lvbiBtZXRob2QgWkxJQgotKyAgICAgd2hlbiBpbml0aWFsaXplZC4gQXBwbGljYXRpb25z IGNhbiBzdGlsbCBleHBsaWNpdGVseSBhc2sgZm9yIFpMSUIKLSsgICAgIGNvbXByZXNzaW9uIG1l dGhvZC4KLSsgICAqIFRoZSBsaWJyYXJ5IHdhcyBwYXRjaGVkIHNvIHRoZSBjZXJ0aWZpY2F0ZXMs IENSTHMgYW5kIG90aGVyIG9iamVjdHMKLSsgICAgIHNpZ25lZCB3aXRoIHVzZSBvZiBNRDUgZmFp bCB2ZXJpZmljYXRpb24gYXMgdGhlIE1ENSBpcyB0b28gaW5zZWN1cmUKLSsgICAgIHRvIGJlIHVz ZWQgZm9yIHNpZ25hdHVyZXMuIElmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQotKyAgICAgT1BF TlNTTF9FTkFCTEVfTUQ1X1ZFUklGWSBpcyBzZXQsIHRoZSB2ZXJpZmljYXRpb24gY2FuIHByb2Nl ZWQKLSsgICAgIG5vcm1hbGx5LgotKyAgICogSWYgdGhlIE9QRU5TU0xfRU5GT1JDRV9NT0RVTFVT X0JJVFMgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0LAotKyAgICAgdGhlIGxpYnJhcnkgd2ls bCBub3QgYWxsb3cgZ2VuZXJhdGlvbiBvZiBEU0EgYW5kIFJTQSBrZXlzIHdpdGgKLSsgICAgIG90 aGVyIGxlbmd0aHMgdGhhbiBzcGVjaWZpZWQgaW4gdGhlIEZJUFMgMTg2LTQgc3RhbmRhcmQuCi0r Ci0gIERFU0NSSVBUSU9OCi0gIC0tLS0tLS0tLS0tCi0gCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0x LjAuMmEtcnNhLXg5MzEucGF0Y2ggYi9vcGVuc3NsLTEuMC4yYS1yc2EteDkzMS5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRlNzE2YS4uMDAwMDAwMAotLS0gYS9vcGVuc3Ns LTEuMC4yYS1yc2EteDkzMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLWRp ZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2FwcHMvZ2VucnNhLmMueDkzMSBvcGVuc3NsLTEuMC4yYS9h cHBzL2dlbnJzYS5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvYXBwcy9nZW5yc2EuYy54OTMxCTIwMTUt MDQtMDkgMTg6MTg6MjQuMTMyMTA3Mjg3ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvYXBwcy9n ZW5yc2EuYwkyMDE1LTA0LTA5IDE4OjE4OjE4Ljg1Mjk4NTMzOSArMDIwMAotQEAgLTk3LDYgKzk3 LDcgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICBpbnQgcmV0ID0gMTsK LSAgICAgaW50IGksIG51bSA9IERFRkJJVFM7Ci0gICAgIGxvbmcgbDsKLSsgICAgaW50IHVzZV94 OTMxID0gMDsKLSAgICAgY29uc3QgRVZQX0NJUEhFUiAqZW5jID0gTlVMTDsKLSAgICAgdW5zaWdu ZWQgbG9uZyBmNCA9IFJTQV9GNDsKLSAgICAgY2hhciAqb3V0ZmlsZSA9IE5VTEw7Ci1AQCAtMTM5 LDYgKzE0MCw4IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgICAg ICBmNCA9IDM7Ci0gICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICItRjQiKSA9PSAwIHx8 IHN0cmNtcCgqYXJndiwgIi1mNCIpID09IDApCi0gICAgICAgICAgICAgZjQgPSBSU0FfRjQ7Ci0r ICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICIteDkzMSIpID09IDApCi0rICAgICAgICAg ICAgdXNlX3g5MzEgPSAxOwotICMgaWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5FCi0gICAgICAgICBl bHNlIGlmIChzdHJjbXAoKmFyZ3YsICItZW5naW5lIikgPT0gMCkgewotICAgICAgICAgICAgIGlm ICgtLWFyZ2MgPCAxKQotQEAgLTI3OCw3ICsyODEsMTMgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQotICAgICBpZiAoIXJzYSkKLSAgICAgICAgIGdvdG8gZXJyOwotIAotLSAgICBp ZiAoIUJOX3NldF93b3JkKGJuLCBmNCkgfHwgIVJTQV9nZW5lcmF0ZV9rZXlfZXgocnNhLCBudW0s IGJuLCAmY2IpKQotKyAgICBpZiAodXNlX3g5MzEpIHsKLSsgICAgICAgIGlmICghQk5fc2V0X3dv cmQoYm4sIGY0KSkKLSsgICAgICAgICAgICBnb3RvIGVycjsKLSsgICAgICAgIGlmICghUlNBX1g5 MzFfZ2VuZXJhdGVfa2V5X2V4KHJzYSwgbnVtLCBibiwgJmNiKSkKLSsgICAgICAgICAgICBnb3Rv IGVycjsKLSsgICAgfSBlbHNlIGlmICghQk5fc2V0X3dvcmQoYm4sIGY0KQotKyAgICAgICAgICAg ICAgIHx8ICFSU0FfZ2VuZXJhdGVfa2V5X2V4KHJzYSwgbnVtLCBibiwgJmNiKSkKLSAgICAgICAg IGdvdG8gZXJyOwotIAotICAgICBhcHBfUkFORF93cml0ZV9maWxlKE5VTEwsIGJpb19lcnIpOwoK ZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJhLXN5c3RlbS1jaXBoZXJsaXN0LnBhdGNoIGIvb3Bl bnNzbC0xLjAuMmEtc3lzdGVtLWNpcGhlcmxpc3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGVhODdkZTIuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMmEtc3lzdGVtLWNp cGhlcmxpc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyODUgKzAsMCBAQAotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMmEvQ29uZmlndXJlLnN5c3RlbSBvcGVuc3NsLTEuMC4yYS9Db25maWd1cmUK LS0tLSBvcGVuc3NsLTEuMC4yYS9Db25maWd1cmUuc3lzdGVtCTIwMTUtMDQtMjIgMTU6MjM6NDcu OTcwNjMzNjUwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvQ29uZmlndXJlCTIwMTUtMDQtMjIg MTU6MjM6NDguMDQyNjM1NDA3ICswMjAwCi1AQCAtMTAsNyArMTAsNyBAQCB1c2Ugc3RyaWN0Owot IAotICMgc2VlIElOU1RBTEwgZm9yIGluc3RydWN0aW9ucy4KLSAKLS1teSAkdXNhZ2U9IlVzYWdl OiBDb25maWd1cmUgW25vLTxjaXBoZXI+IC4uLl0gW2VuYWJsZS08Y2lwaGVyPiAuLi5dIFtleHBl cmltZW50YWwtPGNpcGhlcj4gLi4uXSBbLUR4eHhdIFstbHh4eF0gWy1MeHh4XSBbLWZ4eHhdIFst S3h4eF0gW25vLWh3LXh4eHxuby1od10gW1tuby1ddGhyZWFkc10gW1tuby1dc2hhcmVkXSBbW25v LV16bGlifHpsaWItZHluYW1pY10gW25vLWFzbV0gW25vLWRzb10gW25vLWtyYjVdIFtzY3RwXSBb Mzg2XSBbLS1wcmVmaXg9RElSXSBbLS1vcGVuc3NsZGlyPU9QRU5TU0xESVJdIFstLXdpdGgteHh4 Wz12dnZdXSBbLS10ZXN0LXNhbml0eV0gb3MvY29tcGlsZXJbOmZsYWdzXVxuIjsKLStteSAkdXNh Z2U9IlVzYWdlOiBDb25maWd1cmUgW25vLTxjaXBoZXI+IC4uLl0gW2VuYWJsZS08Y2lwaGVyPiAu Li5dIFtleHBlcmltZW50YWwtPGNpcGhlcj4gLi4uXSBbLUR4eHhdIFstbHh4eF0gWy1MeHh4XSBb LWZ4eHhdIFstS3h4eF0gW25vLWh3LXh4eHxuby1od10gW1tuby1ddGhyZWFkc10gW1tuby1dc2hh cmVkXSBbW25vLV16bGlifHpsaWItZHluYW1pY10gW25vLWFzbV0gW25vLWRzb10gW25vLWtyYjVd IFtzY3RwXSBbMzg2XSBbLS1wcmVmaXg9RElSXSBbLS1vcGVuc3NsZGlyPU9QRU5TU0xESVJdIFst LXN5c3RlbS1jaXBoZXJzLWZpbGU9U1lTVEVNQ0lQSEVSRklMRV0gWy0td2l0aC14eHhbPXZ2dl1d IFstLXRlc3Qtc2FuaXR5XSBvcy9jb21waWxlcls6ZmxhZ3NdXG4iOwotIAotICMgT3B0aW9uczoK LSAjCi1AQCAtMzUsNiArMzUsOSBAQCBteSAkdXNhZ2U9IlVzYWdlOiBDb25maWd1cmUgW25vLTxj aXBoZXI+Ci0gIyAtLXdpdGgta3JiNS1mbGF2b3IgIERlY2xhcmUgd2hhdCBmbGF2b3Igb2YgS2Vy YmVyb3MgNSBpcyB1c2VkLiAgQ3VycmVudGx5Ci0gIwkJc3VwcG9ydGVkIHZhbHVlcyBhcmUgIk1J VCIgYW5kICJIZWltZGFsIi4gIEEgdmFsdWUgaXMgcmVxdWlyZWQuCi0gIwotKyMgLS1zeXN0ZW0t Y2lwaGVycy1maWxlICBBIGZpbGUgdG8gcmVhZCBjaXBoZXIgc3RyaW5nIGZyb20gd2hlbiB0aGUg UFJPRklMRT1TWVNURU0KLSsjCQljaXBoZXIgaXMgc3BlY2lmaWVkIChkZWZhdWx0KS4KLSsjCi0g IyAtLXRlc3Qtc2FuaXR5IE1ha2UgYSBudW1iZXIgb2Ygc2FuaXR5IGNoZWNrcyBvbiB0aGUgZGF0 YSBpbiB0aGlzIGZpbGUuCi0gIyAgICAgICAgICAgICAgIFRoaXMgaXMgYSBkZWJ1Z2dpbmcgdG9v bCBmb3IgT3BlblNTTCBkZXZlbG9wZXJzLgotICMKLUBAIC03MDMsNiArNzA2LDcgQEAgbXkgJHBy ZWZpeD0iIjsKLSBteSAkbGliZGlyPSIiOwotIG15ICRvcGVuc3NsZGlyPSIiOwotIG15ICRlbmdp bmVzZGlyPSIiOwotK215ICRzeXN0ZW1fY2lwaGVyc19maWxlPSIiOwotIG15ICRleGVfZXh0PSIi OwotIG15ICRpbnN0YWxsX3ByZWZpeD0gIiRFTlZ7J0lOU1RBTExfUFJFRklYJ30iOwotIG15ICRj cm9zc19jb21waWxlX3ByZWZpeD0iIjsKLUBAIC05MzQsNiArOTM4LDEwIEBAIFBST0NFU1NfQVJH UzoKLSAJCQkJewotIAkJCQkkZW5naW5lc2Rpcj0kMTsKLSAJCQkJfQotKwkJCWVsc2lmICgvXi0t c3lzdGVtLWNpcGhlcnMtZmlsZT0oLiopJC8pCi0rCQkJCXsKLSsJCQkJJHN5c3RlbV9jaXBoZXJz X2ZpbGU9JDE7Ci0rCQkJCX0KLSAJCQllbHNpZiAoL14tLWluc3RhbGwucHJlZml4PSguKikkLykK LSAJCQkJewotIAkJCQkkaW5zdGFsbF9wcmVmaXg9JDE7Ci1AQCAtMTA5Niw2ICsxMTA0LDcgQEAg cHJpbnQgIkNvbmZpZ3VyaW5nIGZvciAkdGFyZ2V0XG4iOwotIAotICZ1c2FnZSBpZiAoIWRlZmlu ZWQoJHRhYmxleyR0YXJnZXR9KSk7Ci0gCi0rY2hvcCAkc3lzdGVtX2NpcGhlcnNfZmlsZSBpZiAk c3lzdGVtX2NpcGhlcnNfZmlsZSA9fiAvXC8kLzsKLSAKLSBmb3JlYWNoIChzb3J0IChrZXlzICVk aXNhYmxlZCkpCi0gCXsKLUBAIC0xNjY4LDYgKzE2NzcsNyBAQCB3aGlsZSAoPElOPikKLSAJcy9e TVVMVElMSUI9LiokL01VTFRJTElCPSRtdWx0aWxpYi87Ci0gCXMvXk9QRU5TU0xESVI9LiokL09Q RU5TU0xESVI9JG9wZW5zc2xkaXIvOwotIAlzL15FTkdJTkVTRElSPS4qJC9FTkdJTkVTRElSPSRl bmdpbmVzZGlyLzsKLSsJcy9eU1lTVEVNX0NJUEhFUlNfRklMRT0uKiQvU1lTVEVNX0NJUEhFUlNf RklMRT0kc3lzdGVtX2NpcGhlcnNfZmlsZS87Ci0gCXMvXkxJQkRJUj0uKiQvTElCRElSPSRsaWJk aXIvOwotIAlzL15JTlNUQUxMX1BSRUZJWD0uKiQvSU5TVEFMTF9QUkVGSVg9JGluc3RhbGxfcHJl Zml4LzsKLSAJcy9eUExBVEZPUk09LiokL1BMQVRGT1JNPSR0YXJnZXQvOwotQEAgLTE4NzcsNiAr MTg4NywxNCBAQCB3aGlsZSAoPElOPikKLSAJCSRmb28gPX4gcy9cXC9cXFxcL2c7Ci0gCQlwcmlu dCBPVVQgIiNkZWZpbmUgRU5HSU5FU0RJUiBcIiRmb29cIlxuIjsKLSAJCX0KLSsJZWxzaWYJKC9e IygoZGVmaW5lKXwodW5kZWYpKVxzK1NZU1RFTV9DSVBIRVJTX0ZJTEUvKQotKwkJewotKwkJbXkg JGZvbyA9ICIkc3lzdGVtX2NpcGhlcnNfZmlsZSI7Ci0rCQlpZiAoJGZvbyBuZSAnJykgewotKwkJ CSRmb28gPX4gcy9cXC9cXFxcL2c7Ci0rCQkJcHJpbnQgT1VUICIjZGVmaW5lIFNZU1RFTV9DSVBI RVJTX0ZJTEUgXCIkZm9vXCJcbiI7Ci0rCQl9Ci0rCQl9Ci0gCWVsc2lmCSgvXiMoKGRlZmluZSl8 KHVuZGVmKSlccytPUEVOU1NMX0VYUE9SVF9WQVJfQVNfRlVOQ1RJT04vKQotIAkJeyBwcmludGYg T1VUICIjdW5kZWYgT1BFTlNTTF9FWFBPUlRfVkFSX0FTX0ZVTkNUSU9OXG4iCi0gCQkJaWYgJGV4 cG9ydF92YXJfYXNfZm47Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vb3BlbnNzbGNv bmYuaC5pbi5zeXN0ZW0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL29wZW5zc2xjb25mLmguaW4KLS0t LSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vb3BlbnNzbGNvbmYuaC5pbi5zeXN0ZW0JMjAxNS0wNC0y MiAxNToyMzo0Ny45ODg2MzQwODkgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vb3Bl bnNzbGNvbmYuaC5pbgkyMDE1LTA0LTIyIDE1OjIzOjQ4LjA0MjYzNTQwNyArMDIwMAotQEAgLTI1 LDYgKzI1LDggQEAKLSAjZW5kaWYKLSAjZW5kaWYKLSAKLSsjdW5kZWYgU1lTVEVNX0NJUEhFUlNf RklMRQotKwotICN1bmRlZiBPUEVOU1NMX1VOSVNURAotICNkZWZpbmUgT1BFTlNTTF9VTklTVEQg PHVuaXN0ZC5oPgotIAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvc3NsL3NzbF9jaXBoLmMuc3lz dGVtIG9wZW5zc2wtMS4wLjJhL3NzbC9zc2xfY2lwaC5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvc3Ns L3NzbF9jaXBoLmMuc3lzdGVtCTIwMTUtMDQtMjIgMTU6MjM6NDcuOTkzNjM0MjExICswMjAwCi0r Kysgb3BlbnNzbC0xLjAuMmEvc3NsL3NzbF9jaXBoLmMJMjAxNS0wNC0yMiAxNToyOTozMC4xODU5 ODIzNTYgKzAyMDAKLUBAIC0xNDYzLDYgKzE0NjMsNTAgQEAgc3RhdGljIGludCBjaGVja19zdWl0 ZWJfY2lwaGVyX2xpc3QoY29ucwotIH0KLSAjZW5kaWYKLSAKLSsjaWZkZWYgU1lTVEVNX0NJUEhF UlNfRklMRQotK3N0YXRpYyBjaGFyICpsb2FkX3N5c3RlbV9zdHIoY29uc3QgY2hhciAqc3VmZml4 KQotK3sKLSsgICAgRklMRSAqZnA7Ci0rICAgIGNoYXIgYnVmWzEwMjRdOwotKyAgICBjaGFyICpu ZXdfcnVsZXM7Ci0rICAgIHVuc2lnbmVkIGxlbiwgc2xlbjsKLSsKLSsgICAgZnAgPSBmb3BlbihT WVNURU1fQ0lQSEVSU19GSUxFLCAiciIpOwotKyAgICBpZiAoZnAgPT0gTlVMTCB8fCBmZ2V0cyhi dWYsIHNpemVvZihidWYpLCBmcCkgPT0gTlVMTCkgewotKyAgICAgICAgLyogY2Fubm90IG9wZW4g b3IgZmlsZSBpcyBlbXB0eSAqLwotKyAgICAgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwg IiVzIiwgU1NMX0RFRkFVTFRfQ0lQSEVSX0xJU1QpOwotKyAgICB9Ci0rCi0rICAgIGlmIChmcCkK LSsgICAgICAgIGZjbG9zZShmcCk7Ci0rCi0rICAgIHNsZW4gPSBzdHJsZW4oc3VmZml4KTsKLSsg ICAgbGVuID0gc3RybGVuKGJ1Zik7Ci0rCi0rICAgIGlmIChidWZbbGVuIC0gMV0gPT0gJ1xuJykg ewotKyAgICAgICAgbGVuLS07Ci0rICAgICAgICBidWZbbGVuXSA9IDA7Ci0rICAgIH0KLSsgICAg aWYgKGJ1ZltsZW4gLSAxXSA9PSAnXHInKSB7Ci0rICAgICAgICBsZW4tLTsKLSsgICAgICAgIGJ1 ZltsZW5dID0gMDsKLSsgICAgfQotKwotKyAgICBuZXdfcnVsZXMgPSBPUEVOU1NMX21hbGxvYyhs ZW4gKyBzbGVuICsgMSk7Ci0rICAgIGlmIChuZXdfcnVsZXMgPT0gMCkKLSsgICAgICAgIHJldHVy biBOVUxMOwotKwotKyAgICBtZW1jcHkobmV3X3J1bGVzLCBidWYsIGxlbik7Ci0rICAgIGlmIChz bGVuID4gMCkgewotKyAgICAgICAgbWVtY3B5KCZuZXdfcnVsZXNbbGVuXSwgc3VmZml4LCBzbGVu KTsKLSsgICAgICAgIGxlbiArPSBzbGVuOwotKyAgICB9Ci0rICAgIG5ld19ydWxlc1tsZW5dID0g MDsKLSsKLSsgICAgcmV0dXJuIG5ld19ydWxlczsKLSt9Ci0rI2VuZGlmCi0rCi0gU1RBQ0tfT0Yo U1NMX0NJUEhFUikgKnNzbF9jcmVhdGVfY2lwaGVyX2xpc3QoY29uc3QgU1NMX01FVEhPRCAqc3Ns X21ldGhvZCwgU1RBQ0tfT0YoU1NMX0NJUEhFUikKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqKmNpcGhlcl9saXN0LCBTVEFDS19PRihTU0xfQ0lQSEVSKQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqY2lwaGVyX2xp c3RfYnlfaWQsCi1AQCAtMTQ3MSwxOSArMTUxNSwyOSBAQCBTVEFDS19PRihTU0xfQ0lQSEVSKSAq c3NsX2NyZWF0ZV9jaXBoZXJfCi0gICAgIGludCBvaywgbnVtX29mX2NpcGhlcnMsIG51bV9vZl9h bGlhc19tYXgsIG51bV9vZl9ncm91cF9hbGlhc2VzOwotICAgICB1bnNpZ25lZCBsb25nIGRpc2Fi bGVkX21rZXksIGRpc2FibGVkX2F1dGgsIGRpc2FibGVkX2VuYywgZGlzYWJsZWRfbWFjLAotICAg ICAgICAgZGlzYWJsZWRfc3NsOwotLSAgICBTVEFDS19PRihTU0xfQ0lQSEVSKSAqY2lwaGVyc3Rh Y2ssICp0bXBfY2lwaGVyX2xpc3Q7Ci0rICAgIFNUQUNLX09GKFNTTF9DSVBIRVIpICpjaXBoZXJz dGFjayA9IE5VTEwsICp0bXBfY2lwaGVyX2xpc3Q7Ci0gICAgIGNvbnN0IGNoYXIgKnJ1bGVfcDsK LSAgICAgQ0lQSEVSX09SREVSICpjb19saXN0ID0gTlVMTCwgKmhlYWQgPSBOVUxMLCAqdGFpbCA9 IE5VTEwsICpjdXJyOwotICAgICBjb25zdCBTU0xfQ0lQSEVSICoqY2FfbGlzdCA9IE5VTEw7Ci0r I2lmZGVmIFNZU1RFTV9DSVBIRVJTX0ZJTEUKLSsgICAgY2hhciAqbmV3X3J1bGVzID0gTlVMTDsK LSsKLSsgICAgaWYgKHJ1bGVfc3RyICE9IE5VTEwgJiYgc3RybmNtcChydWxlX3N0ciwgIlBST0ZJ TEU9U1lTVEVNIiwgMTQpID09IDApIHsKLSsgICAgICAgIGNoYXIgKnAgPSBydWxlX3N0ciArIDE0 OwotKyAgICAKLSsgICAgICAgIG5ld19ydWxlcyA9IGxvYWRfc3lzdGVtX3N0cihwKTsKLSsgICAg ICAgIHJ1bGVfc3RyID0gbmV3X3J1bGVzOwotKyAgICB9Ci0rI2VuZGlmCi0gCi0gICAgIC8qCi0g ICAgICAqIFJldHVybiB3aXRoIGVycm9yIGlmIG5vdGhpbmcgdG8gZG8uCi0gICAgICAqLwotICAg ICBpZiAocnVsZV9zdHIgPT0gTlVMTCB8fCBjaXBoZXJfbGlzdCA9PSBOVUxMIHx8IGNpcGhlcl9s aXN0X2J5X2lkID09IE5VTEwpCi0tICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgICAgIGdvdG8g ZW5kOwotICNpZm5kZWYgT1BFTlNTTF9OT19FQwotICAgICBpZiAoIWNoZWNrX3N1aXRlYl9jaXBo ZXJfbGlzdChzc2xfbWV0aG9kLCBjLCAmcnVsZV9zdHIpKQotLSAgICAgICAgcmV0dXJuIE5VTEw7 Ci0rICAgICAgICBnb3RvIGVuZDsKLSAjZW5kaWYKLSAKLSAgICAgLyoKLUBAIC0xNTA3LDcgKzE1 NjEsNyBAQCBTVEFDS19PRihTU0xfQ0lQSEVSKSAqc3NsX2NyZWF0ZV9jaXBoZXJfCi0gICAgICAg ICAoQ0lQSEVSX09SREVSICopT1BFTlNTTF9tYWxsb2Moc2l6ZW9mKENJUEhFUl9PUkRFUikgKiBu dW1fb2ZfY2lwaGVycyk7Ci0gICAgIGlmIChjb19saXN0ID09IE5VTEwpIHsKLSAgICAgICAgIFNT TGVycihTU0xfRl9TU0xfQ1JFQVRFX0NJUEhFUl9MSVNULCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7 Ci0tICAgICAgICByZXR1cm4gKE5VTEwpOyAgICAgICAgICAvKiBGYWlsdXJlICovCi0rICAgICAg ICBnb3RvIGVuZDsKLSAgICAgfQotIAotICAgICBzc2xfY2lwaGVyX2NvbGxlY3RfY2lwaGVycyhz c2xfbWV0aG9kLCBudW1fb2ZfY2lwaGVycywKLUBAIC0xNTY4LDggKzE2MjIsNyBAQCBTVEFDS19P RihTU0xfQ0lQSEVSKSAqc3NsX2NyZWF0ZV9jaXBoZXJfCi0gICAgICAqIGluIGZvcmNlIHdpdGhp biBlYWNoIGNsYXNzCi0gICAgICAqLwotICAgICBpZiAoIXNzbF9jaXBoZXJfc3RyZW5ndGhfc29y dCgmaGVhZCwgJnRhaWwpKSB7Ci0tICAgICAgICBPUEVOU1NMX2ZyZWUoY29fbGlzdCk7Ci0tICAg ICAgICByZXR1cm4gTlVMTDsKLSsgICAgICAgIGdvdG8gZW5kOwotICAgICB9Ci0gCi0gICAgIC8q IE5vdyBkaXNhYmxlIGV2ZXJ5dGhpbmcgKG1haW50YWluaW5nIHRoZSBvcmRlcmluZyEpICovCi1A QCAtMTU4Nyw5ICsxNjQwLDggQEAgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKnNzbF9jcmVhdGVfY2lw aGVyXwotICAgICBudW1fb2ZfYWxpYXNfbWF4ID0gbnVtX29mX2NpcGhlcnMgKyBudW1fb2ZfZ3Jv dXBfYWxpYXNlcyArIDE7Ci0gICAgIGNhX2xpc3QgPSBPUEVOU1NMX21hbGxvYyhzaXplb2YoU1NM X0NJUEhFUiAqKSAqIG51bV9vZl9hbGlhc19tYXgpOwotICAgICBpZiAoY2FfbGlzdCA9PSBOVUxM KSB7Ci0tICAgICAgICBPUEVOU1NMX2ZyZWUoY29fbGlzdCk7Ci0gICAgICAgICBTU0xlcnIoU1NM X0ZfU1NMX0NSRUFURV9DSVBIRVJfTElTVCwgRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOwotLSAgICAg ICAgcmV0dXJuIChOVUxMKTsgICAgICAgICAgLyogRmFpbHVyZSAqLwotKyAgICAgICAgZ290byBl bmQ7Ci0gICAgIH0KLSAgICAgc3NsX2NpcGhlcl9jb2xsZWN0X2FsaWFzZXMoY2FfbGlzdCwgbnVt X29mX2dyb3VwX2FsaWFzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2Fi bGVkX21rZXksIGRpc2FibGVkX2F1dGgsIGRpc2FibGVkX2VuYywKLUBAIC0xNjE1LDggKzE2Njcs NyBAQCBTVEFDS19PRihTU0xfQ0lQSEVSKSAqc3NsX2NyZWF0ZV9jaXBoZXJfCi0gICAgIE9QRU5T U0xfZnJlZSgodm9pZCAqKWNhX2xpc3QpOyAvKiBOb3QgbmVlZGVkIGFueW1vcmUgKi8KLSAKLSAg ICAgaWYgKCFvaykgeyAgICAgICAgICAgICAgICAgIC8qIFJ1bGUgcHJvY2Vzc2luZyBmYWlsdXJl ICovCi0tICAgICAgICBPUEVOU1NMX2ZyZWUoY29fbGlzdCk7Ci0tICAgICAgICByZXR1cm4gKE5V TEwpOwotKyAgICAgICAgZ290byBlbmQ7Ci0gICAgIH0KLSAKLSAgICAgLyoKLUBAIC0xNjI0LDgg KzE2NzUsNyBAQCBTVEFDS19PRihTU0xfQ0lQSEVSKSAqc3NsX2NyZWF0ZV9jaXBoZXJfCi0gICAg ICAqIGlmIHdlIGNhbm5vdCBnZXQgb25lLgotICAgICAgKi8KLSAgICAgaWYgKChjaXBoZXJzdGFj ayA9IHNrX1NTTF9DSVBIRVJfbmV3X251bGwoKSkgPT0gTlVMTCkgewotLSAgICAgICAgT1BFTlNT TF9mcmVlKGNvX2xpc3QpOwotLSAgICAgICAgcmV0dXJuIChOVUxMKTsKLSsgICAgICAgIGdvdG8g ZW5kOwotICAgICB9Ci0gCi0gICAgIC8qCi1AQCAtMTY0NiwxMiArMTY5NiwxMiBAQCBTVEFDS19P RihTU0xfQ0lQSEVSKSAqc3NsX2NyZWF0ZV9jaXBoZXJfCi0gI2VuZGlmCi0gICAgICAgICB9Ci0g ICAgIH0KLS0gICAgT1BFTlNTTF9mcmVlKGNvX2xpc3QpOyAgICAgIC8qIE5vdCBuZWVkZWQgYW55 IGxvbmdlciAqLwotIAotICAgICB0bXBfY2lwaGVyX2xpc3QgPSBza19TU0xfQ0lQSEVSX2R1cChj aXBoZXJzdGFjayk7Ci0gICAgIGlmICh0bXBfY2lwaGVyX2xpc3QgPT0gTlVMTCkgewotICAgICAg ICAgc2tfU1NMX0NJUEhFUl9mcmVlKGNpcGhlcnN0YWNrKTsKLS0gICAgICAgIHJldHVybiBOVUxM OwotKyAgICAgICAgY2lwaGVyc3RhY2sgPSBOVUxMOwotKyAgICAgICAgZ290byBlbmQ7Ci0gICAg IH0KLSAgICAgaWYgKCpjaXBoZXJfbGlzdCAhPSBOVUxMKQotICAgICAgICAgc2tfU1NMX0NJUEhF Ul9mcmVlKCpjaXBoZXJfbGlzdCk7Ci1AQCAtMTY2Myw2ICsxNzEzLDEyIEBAIFNUQUNLX09GKFNT TF9DSVBIRVIpICpzc2xfY3JlYXRlX2NpcGhlcl8KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3NsX2NpcGhlcl9wdHJfaWRfY21wKTsKLSAKLSAgICAgc2tfU1NMX0NJUEhF Ul9zb3J0KCpjaXBoZXJfbGlzdF9ieV9pZCk7Ci0rCi0rIGVuZDoKLSsgICAgT1BFTlNTTF9mcmVl KGNvX2xpc3QpOwotKyNpZmRlZiBTWVNURU1fQ0lQSEVSU19GSUxFCi0rICAgIE9QRU5TU0xfZnJl ZShuZXdfcnVsZXMpOwotKyNlbmRpZgotICAgICByZXR1cm4gKGNpcGhlcnN0YWNrKTsKLSB9Ci0g Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9zc2wvc3NsLmguc3lzdGVtIG9wZW5zc2wtMS4wLjJh L3NzbC9zc2wuaAotLS0tIG9wZW5zc2wtMS4wLjJhL3NzbC9zc2wuaC5zeXN0ZW0JMjAxNS0wNC0y MiAxNToyMzo0OC4wNDM2MzU0MzEgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9zc2wvc3NsLmgJ MjAxNS0wNC0yMiAxNTozNTo0My42NjYwOTM3OTkgKzAyMDAKLUBAIC0zNDUsNiArMzQ1LDExIEBA IGV4dGVybiAiQyIgewotICAqIHRocm93aW5nIG91dCBhbm9ueW1vdXMgYW5kIHVuZW5jcnlwdGVk IGNpcGhlcnN1aXRlcyEgKFRoZSBsYXR0ZXIgYXJlIG5vdAotICAqIGFjdHVhbGx5IGVuYWJsZWQg YnkgQUxMLCBidXQgIkFMTDpSU0EiIHdvdWxkIGVuYWJsZSBzb21lIG9mIHRoZW0uKQotICAqLwot KyMgaWZkZWYgU1lTVEVNX0NJUEhFUlNfRklMRQotKyMgIGRlZmluZSBTU0xfU1lTVEVNX0RFRkFV TFRfQ0lQSEVSX0xJU1QgIlBST0ZJTEU9U1lTVEVNIgotKyMgZWxzZQotKyMgIGRlZmluZSBTU0xf U1lTVEVNX0RFRkFVTFRfQ0lQSEVSX0xJU1QgU1NMX0RFRkFVTFRfQ0lQSEVSX0xJU1QKLSsjIGVu ZGlmCi0gCi0gLyogVXNlZCBpbiBTU0xfc2V0X3NodXRkb3duKCkvU1NMX2dldF9zaHV0ZG93bigp OyAqLwotICMgZGVmaW5lIFNTTF9TRU5UX1NIVVRET1dOICAgICAgIDEKLWRpZmYgLXVwIG9wZW5z c2wtMS4wLjJhL3NzbC9zc2xfbGliLmMuc3lzdGVtIG9wZW5zc2wtMS4wLjJhL3NzbC9zc2xfbGli LmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9zc2wvc3NsX2xpYi5jLnN5c3RlbQkyMDE1LTA0LTIyIDE1 OjIzOjQ4LjA0NDYzNTQ1NSArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL3NzbC9zc2xfbGliLmMJ MjAxNS0wNC0yMiAxNTozMTo1NS43OTQ1MzQ2MzEgKzAyMDAKLUBAIC0yNzMsNyArMjczLDcgQEAg aW50IFNTTF9DVFhfc2V0X3NzbF92ZXJzaW9uKFNTTF9DVFggKmN0eAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJihjdHgtPmNpcGhlcl9saXN0X2J5X2lkKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1ldGgtPnZlcnNpb24gPT0KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNTTDJfVkVSU0lPTiA/ICJTU0x2MiIgOgotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU1NMX0RFRkFVTFRfQ0lQSEVSX0xJU1QsIGN0eC0+Y2VydCk7Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfU1lTVEVNX0RFRkFVTFRfQ0lQSEVS X0xJU1QsIGN0eC0+Y2VydCk7Ci0gICAgIGlmICgoc2sgPT0gTlVMTCkgfHwgKHNrX1NTTF9DSVBI RVJfbnVtKHNrKSA8PSAwKSkgewotICAgICAgICAgU1NMZXJyKFNTTF9GX1NTTF9DVFhfU0VUX1NT TF9WRVJTSU9OLAotICAgICAgICAgICAgICAgIFNTTF9SX1NTTF9MSUJSQVJZX0hBU19OT19DSVBI RVJTKTsKLUBAIC0xOTQ1LDcgKzE5NDUsNyBAQCBTU0xfQ1RYICpTU0xfQ1RYX25ldyhjb25zdCBT U0xfTUVUSE9EICptCi0gICAgIHNzbF9jcmVhdGVfY2lwaGVyX2xpc3QocmV0LT5tZXRob2QsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJldC0+Y2lwaGVyX2xpc3QsICZyZXQtPmNpcGhl cl9saXN0X2J5X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGgtPnZlcnNpb24g PT0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBTU0wyX1ZFUlNJT04gPyAiU1NMdjIiIDog U1NMX0RFRkFVTFRfQ0lQSEVSX0xJU1QsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NM Ml9WRVJTSU9OID8gIlNTTHYyIiA6IFNTTF9TWVNURU1fREVGQVVMVF9DSVBIRVJfTElTVCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXQtPmNlcnQpOwotICAgICBpZiAocmV0LT5jaXBo ZXJfbGlzdCA9PSBOVUxMIHx8IHNrX1NTTF9DSVBIRVJfbnVtKHJldC0+Y2lwaGVyX2xpc3QpIDw9 IDApIHsKLSAgICAgICAgIFNTTGVycihTU0xfRl9TU0xfQ1RYX05FVywgU1NMX1JfTElCUkFSWV9I QVNfTk9fQ0lQSEVSUyk7CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMmEtdGVzdC11c2UtbG9j YWxob3N0LnBhdGNoIGIvb3BlbnNzbC0xLjAuMmEtdGVzdC11c2UtbG9jYWxob3N0LnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTEwZTZlLi4wMDAwMDAwCi0tLSBhL29wZW5z c2wtMS4wLjJhLXRlc3QtdXNlLWxvY2FsaG9zdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIx ICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL3NzbC9zc2x0ZXN0LmMudXNlLWxvY2Fs aG9zdCBvcGVuc3NsLTEuMC4yYS9zc2wvc3NsdGVzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvc3Ns L3NzbHRlc3QuYy51c2UtbG9jYWxob3N0CTIwMTUtMDQtMjAgMTQ6NDM6MDcuMTcyNjAxNjYzICsw MjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvc3NsL3NzbHRlc3QuYwkyMDE1LTA0LTIwIDE0OjQ1OjAy LjgzMTI5OTg0OSArMDIwMAotQEAgLTE1MTYsMTYgKzE1MTYsNyBAQCBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQotIAotICNpZm5kZWYgT1BFTlNTTF9OT19LUkI1Ci0gICAgIGlmIChj X3NzbCAmJiBjX3NzbC0+a3NzbF9jdHgpIHsKLS0gICAgICAgIGNoYXIgbG9jYWxob3N0W01BWEhP U1ROQU1FTEVOICsgMl07Ci0tCi0tICAgICAgICBpZiAoZ2V0aG9zdG5hbWUobG9jYWxob3N0LCBz aXplb2YgbG9jYWxob3N0IC0gMSkgPT0gMCkgewotLSAgICAgICAgICAgIGxvY2FsaG9zdFtzaXpl b2YgbG9jYWxob3N0IC0gMV0gPSAnXDAnOwotLSAgICAgICAgICAgIGlmIChzdHJsZW4obG9jYWxo b3N0KSA9PSBzaXplb2YgbG9jYWxob3N0IC0gMSkgewotLSAgICAgICAgICAgICAgICBCSU9fcHJp bnRmKGJpb19lcnIsICJsb2NhbGhvc3QgbmFtZSB0b28gbG9uZ1xuIik7Ci0tICAgICAgICAgICAg ICAgIGdvdG8gZW5kOwotLSAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBrc3NsX2N0eF9zZXRz dHJpbmcoY19zc2wtPmtzc2xfY3R4LCBLU1NMX1NFUlZFUiwgbG9jYWxob3N0KTsKLS0gICAgICAg IH0KLSsgICAgICAgIGtzc2xfY3R4X3NldHN0cmluZyhjX3NzbC0+a3NzbF9jdHgsIEtTU0xfU0VS VkVSLCAibG9jYWxob3N0Iik7Ci0gICAgIH0KLSAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIE9QRU5TU0xfTk9fS1JCNSAqLwotIAoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJh LXZlcnNpb24tYWRkLWVuZ2luZXMucGF0Y2ggYi9vcGVuc3NsLTEuMC4yYS12ZXJzaW9uLWFkZC1l bmdpbmVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzkzNmIzLi4wMDAw MDAwCi0tLSBhL29wZW5zc2wtMS4wLjJhLXZlcnNpb24tYWRkLWVuZ2luZXMucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9hcHBzL3Zl cnNpb24uYy52ZXJzaW9uLWFkZC1lbmdpbmVzIG9wZW5zc2wtMS4wLjJhL2FwcHMvdmVyc2lvbi5j Ci0tLS0gb3BlbnNzbC0xLjAuMmEvYXBwcy92ZXJzaW9uLmMudmVyc2lvbi1hZGQtZW5naW5lcwky MDE1LTA0LTA5IDE4OjE2OjQyLjM0NTc1NjAwNSArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2Fw cHMvdmVyc2lvbi5jCTIwMTUtMDQtMDkgMTg6MTY6MzYuNTczNjIyNjY3ICswMjAwCi1AQCAtMTMx LDYgKzEzMSw3IEBACi0gI2lmbmRlZiBPUEVOU1NMX05PX0JGCi0gIyBpbmNsdWRlIDxvcGVuc3Ns L2Jsb3dmaXNoLmg+Ci0gI2VuZGlmCi0rI2luY2x1ZGUgPG9wZW5zc2wvZW5naW5lLmg+Ci0gCi0g I3VuZGVmIFBST0cKLSAjZGVmaW5lIFBST0cgICAgdmVyc2lvbl9tYWluCi1AQCAtMTQwLDcgKzE0 MSw4IEBAIGludCBNQUlOKGludCwgY2hhciAqKik7Ci0gaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQotIHsKLSAgICAgaW50IGksIHJldCA9IDA7Ci0tICAgIGludCBjZmxhZ3MgPSAwLCB2 ZXJzaW9uID0gMCwgZGF0ZSA9IDAsIG9wdGlvbnMgPSAwLCBwbGF0Zm9ybSA9IDAsIGRpciA9IDA7 Ci0rICAgIGludCBjZmxhZ3MgPSAwLCB2ZXJzaW9uID0gMCwgZGF0ZSA9IDAsIG9wdGlvbnMgPSAw LCBwbGF0Zm9ybSA9IDAsIGRpciA9Ci0rICAgICAgICAwLCBlbmdpbmVzID0gMDsKLSAKLSAgICAg YXBwc19zdGFydHVwKCk7Ci0gCi1AQCAtMTY0LDcgKzE2Niw3IEBAIGludCBNQUlOKGludCBhcmdj LCBjaGFyICoqYXJndikKLSAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2W2ldLCAiLWQiKSA9 PSAwKQotICAgICAgICAgICAgIGRpciA9IDE7Ci0gICAgICAgICBlbHNlIGlmIChzdHJjbXAoYXJn dltpXSwgIi1hIikgPT0gMCkKLS0gICAgICAgICAgICBkYXRlID0gdmVyc2lvbiA9IGNmbGFncyA9 IG9wdGlvbnMgPSBwbGF0Zm9ybSA9IGRpciA9IDE7Ci0rICAgICAgICAgICAgZGF0ZSA9IHZlcnNp b24gPSBjZmxhZ3MgPSBvcHRpb25zID0gcGxhdGZvcm0gPSBkaXIgPSBlbmdpbmVzID0gMTsKLSAg ICAgICAgIGVsc2UgewotICAgICAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwgInVzYWdlOnZl cnNpb24gLVthdmJvZnBkXVxuIik7Ci0gICAgICAgICAgICAgcmV0ID0gMTsKLUBAIC0yMDgsNiAr MjEwLDE2IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIHByaW50 ZigiJXNcbiIsIFNTTGVheV92ZXJzaW9uKFNTTEVBWV9DRkxBR1MpKTsKLSAgICAgaWYgKGRpcikK LSAgICAgICAgIHByaW50ZigiJXNcbiIsIFNTTGVheV92ZXJzaW9uKFNTTEVBWV9ESVIpKTsKLSsg ICAgaWYgKGVuZ2luZXMpIHsKLSsgICAgICAgIEVOR0lORSAqZTsKLSsgICAgICAgIHByaW50Zigi ZW5naW5lczogICIpOwotKyAgICAgICAgZSA9IEVOR0lORV9nZXRfZmlyc3QoKTsKLSsgICAgICAg IHdoaWxlIChlKSB7Ci0rICAgICAgICAgICAgcHJpbnRmKCIlcyAiLCBFTkdJTkVfZ2V0X2lkKGUp KTsKLSsgICAgICAgICAgICBlID0gRU5HSU5FX2dldF9uZXh0KGUpOwotKyAgICAgICAgfQotKyAg ICAgICAgcHJpbnRmKCJcbiIpOwotKyAgICB9Ci0gIGVuZDoKLSAgICAgYXBwc19zaHV0ZG93bigp OwotICAgICBPUEVOU1NMX0VYSVQocmV0KTsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4yYS12 ZXJzaW9uLnBhdGNoIGIvb3BlbnNzbC0xLjAuMmEtdmVyc2lvbi5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMjVkZmZmNS4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4yYS12 ZXJzaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotZGlmZiAtdXAgb3Bl bnNzbC0xLjAuMmEvY3J5cHRvL2N2ZXJzaW9uLmMudmVyc2lvbiBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vY3ZlcnNpb24uYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9jdmVyc2lvbi5jLnZlcnNp b24JMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vY3ZlcnNpb24uYwkyMDE1LTA0LTIxIDE2OjQ4OjU2LjI4NTUzNTMxNiArMDIwMAot QEAgLTYyLDcgKzYyLDcgQEAKLSAjIGluY2x1ZGUgImJ1aWxkaW5mLmgiCi0gI2VuZGlmCi0gCi0t Y29uc3QgY2hhciAqU1NMZWF5X3ZlcnNpb24oaW50IHQpCi0rY29uc3QgY2hhciAqX2N1cnJlbnRf U1NMZWF5X3ZlcnNpb24oaW50IHQpCi0gewotICAgICBpZiAodCA9PSBTU0xFQVlfVkVSU0lPTikK LSAgICAgICAgIHJldHVybiBPUEVOU1NMX1ZFUlNJT05fVEVYVDsKLUBAIC0xMDEsNyArMTAxLDQw IEBAIGNvbnN0IGNoYXIgKlNTTGVheV92ZXJzaW9uKGludCB0KQotICAgICByZXR1cm4gKCJub3Qg YXZhaWxhYmxlIik7Ci0gfQotIAotLXVuc2lnbmVkIGxvbmcgU1NMZWF5KHZvaWQpCi0rY29uc3Qg Y2hhciAqX29yaWdpbmFsX1NTTGVheV92ZXJzaW9uKGludCB0KQotK3sKLSsgICAgaWYgKHQgPT0g U1NMRUFZX1ZFUlNJT04pCi0rICAgICAgICByZXR1cm4gIk9wZW5TU0wgMS4wLjAtZmlwcyAyOSBN YXIgMjAxMCI7Ci0rICAgIGVsc2UKLSsgICAgICAgIHJldHVybiBfY3VycmVudF9TU0xlYXlfdmVy c2lvbih0KTsKLSt9Ci0rCi0rY29uc3QgY2hhciAqX29yaWdpbmFsMTAxX1NTTGVheV92ZXJzaW9u KGludCB0KQotK3sKLSsgICAgaWYgKHQgPT0gU1NMRUFZX1ZFUlNJT04pCi0rICAgICAgICByZXR1 cm4gIk9wZW5TU0wgMS4wLjFlLWZpcHMgMTEgRmViIDIwMTMiOwotKyAgICBlbHNlCi0rICAgICAg ICByZXR1cm4gX2N1cnJlbnRfU1NMZWF5X3ZlcnNpb24odCk7Ci0rfQotKwotK3Vuc2lnbmVkIGxv bmcgX29yaWdpbmFsX1NTTGVheSh2b2lkKQotK3sKLSsgICAgcmV0dXJuICgweDEwMDAwMDAzTCk7 Ci0rfQotKwotK3Vuc2lnbmVkIGxvbmcgX29yaWdpbmFsMTAxX1NTTGVheSh2b2lkKQotK3sKLSsg ICAgcmV0dXJuICgweDEwMDAxMDVmTCk7Ci0rfQotKwotK3Vuc2lnbmVkIGxvbmcgX2N1cnJlbnRf U1NMZWF5KHZvaWQpCi0gewotICAgICByZXR1cm4gKFNTTEVBWV9WRVJTSU9OX05VTUJFUik7Ci0g fQotKwotK19fYXNtX18oIi5zeW12ZXIgX29yaWdpbmFsX1NTTGVheSxTU0xlYXlAIik7Ci0rX19h c21fXygiLnN5bXZlciBfb3JpZ2luYWxfU1NMZWF5X3ZlcnNpb24sU1NMZWF5X3ZlcnNpb25AIik7 Ci0rX19hc21fXygiLnN5bXZlciBfb3JpZ2luYWwxMDFfU1NMZWF5LFNTTGVheUBPUEVOU1NMXzEu MC4xIik7Ci0rX19hc21fXygiLnN5bXZlciBfb3JpZ2luYWwxMDFfU1NMZWF5X3ZlcnNpb24sU1NM ZWF5X3ZlcnNpb25AT1BFTlNTTF8xLjAuMSIpOwotK19fYXNtX18oIi5zeW12ZXIgX2N1cnJlbnRf U1NMZWF5LFNTTGVheUBAT1BFTlNTTF8xLjAuMiIpOwotK19fYXNtX18oIi5zeW12ZXIgX2N1cnJl bnRfU1NMZWF5X3ZlcnNpb24sU1NMZWF5X3ZlcnNpb25AQE9QRU5TU0xfMS4wLjIiKTsKLWRpZmYg LXVwIG9wZW5zc2wtMS4wLjJhL01ha2VmaWxlLnNoYXJlZC52ZXJzaW9uIG9wZW5zc2wtMS4wLjJh L01ha2VmaWxlLnNoYXJlZAotLS0tIG9wZW5zc2wtMS4wLjJhL01ha2VmaWxlLnNoYXJlZC52ZXJz aW9uCTIwMTUtMDQtMjEgMTY6NDM6MDIuNjI0MTcwNjQ4ICswMjAwCi0rKysgb3BlbnNzbC0xLjAu MmEvTWFrZWZpbGUuc2hhcmVkCTIwMTUtMDQtMjEgMTY6NDM6MDIuNjc2MTcxODc5ICswMjAwCi1A QCAtMTUxLDcgKzE1MSw3IEBAIERPX0dOVV9TTz0kKENBTENfVkVSU0lPTlMpOyBcCi0gCVNITElC X1NVRkZJWD07IFwKLSAJQUxMU1lNU0ZMQUdTPSctV2wsLS13aG9sZS1hcmNoaXZlJzsgXAotIAlO T0FMTFNZTVNGTEFHUz0nLVdsLC0tbm8td2hvbGUtYXJjaGl2ZSc7IFwKLS0JU0hBUkVERkxBR1M9 IiQoQ0ZMQUdTKSAkKFNIQVJFRF9MREZMQUdTKSAtc2hhcmVkIC1XbCwtQnN5bWJvbGljIC1XbCwt c29uYW1lPSQkU0hMSUIkJFNITElCX1NPVkVSJCRTSExJQl9TVUZGSVgiCi0rCVNIQVJFREZMQUdT PSIkKENGTEFHUykgJChTSEFSRURfTERGTEFHUykgLXNoYXJlZCAtV2wsLUJzeW1ib2xpYyAtV2ws LS1kZWZhdWx0LXN5bXZlciwtLXZlcnNpb24tc2NyaXB0PXZlcnNpb24ubWFwIC1XbCwtc29uYW1l PSQkU0hMSUIkJFNITElCX1NPVkVSJCRTSExJQl9TVUZGSVgiCi0gCi0gRE9fR05VX0FQUD1MREZM QUdTPSIkKENGTEFHUykiCi0gCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS92ZXJzaW9uLm1hcC52 ZXJzaW9uIG9wZW5zc2wtMS4wLjJhL3ZlcnNpb24ubWFwCi0tLS0gb3BlbnNzbC0xLjAuMmEvdmVy c2lvbi5tYXAudmVyc2lvbgkyMDE1LTA0LTIxIDE2OjQzOjAyLjY3NjE3MTg3OSArMDIwMAotKysr IG9wZW5zc2wtMS4wLjJhL3ZlcnNpb24ubWFwCTIwMTUtMDQtMjEgMTY6NTE6NDkuNjIxNjMwNTg5 ICswMjAwCi1AQCAtMCwwICsxLDEzIEBACi0rT1BFTlNTTF8xLjAuMSB7Ci0rICAgIGdsb2JhbDoK LSsJICAgIFNTTGVheTsKLSsJICAgIFNTTGVheV92ZXJzaW9uOwotKyAgICBsb2NhbDoKLSsJICAg IF9vcmlnaW5hbCo7Ci0rCSAgICBfY3VycmVudCo7Ci0rfTsKLStPUEVOU1NMXzEuMC4yIHsKLSsg ICAgZ2xvYmFsOgotKwkgICAgU1NMZWF5OwotKwkgICAgU1NMZWF5X3ZlcnNpb247Ci0rfSBPUEVO U1NMXzEuMC4xOwoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJhLXg1MDkucGF0Y2ggYi9vcGVu c3NsLTEuMC4yYS14NTA5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Yzk2 YTU3Li4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjJhLXg1MDkucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwyOCArMCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8veDUwOS9i eV9maWxlLmMueDUwOSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8veDUwOS9ieV9maWxlLmMKLS0tLSBv cGVuc3NsLTEuMC4yYS9jcnlwdG8veDUwOS9ieV9maWxlLmMueDUwOQkyMDE1LTA0LTA5IDE4OjE2 OjI5LjM2NTQ1NjE1NyArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by94NTA5L2J5X2Zp bGUuYwkyMDE1LTA0LTA5IDE4OjE2OjI2LjM5ODM4NzYxOCArMDIwMAotQEAgLTE1Miw5ICsxNTIs MTIgQEAgaW50IFg1MDlfbG9hZF9jZXJ0X2ZpbGUoWDUwOV9MT09LVVAgKmN0eAotICAgICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIGkgPSBYNTA5X1NUT1JFX2Fk ZF9jZXJ0KGN0eC0+c3RvcmVfY3R4LCB4KTsKLS0gICAgICAgICAgICBpZiAoIWkpCi0tICAgICAg ICAgICAgICAgIGdvdG8gZXJyOwotLSAgICAgICAgICAgIGNvdW50Kys7Ci0rICAgICAgICAgICAg LyogaWdub3JlIGFueSBwcm9ibGVtcyB3aXRoIGN1cnJlbnQgY2VydGlmaWNhdGUgCi0rICAgICAg ICAgICAgICAgYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgb25lICovCi0rICAgICAgICAgICAg aWYgKGkpCi0rICAgICAgICAgICAgICAgIGNvdW50Kys7Ci0rICAgICAgICAgICAgZWxzZQotKyAg ICAgICAgICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKLSAgICAgICAgICAgICBYNTA5X2ZyZWUo eCk7Ci0gICAgICAgICAgICAgeCA9IE5VTEw7Ci0gICAgICAgICB9Ci1AQCAtMTY3LDcgKzE3MCw3 IEBAIGludCBYNTA5X2xvYWRfY2VydF9maWxlKFg1MDlfTE9PS1VQICpjdHgKLSAgICAgICAgIH0K LSAgICAgICAgIGkgPSBYNTA5X1NUT1JFX2FkZF9jZXJ0KGN0eC0+c3RvcmVfY3R4LCB4KTsKLSAg ICAgICAgIGlmICghaSkKLS0gICAgICAgICAgICBnb3RvIGVycjsKLSsgICAgICAgICAgICBFUlJf Y2xlYXJfZXJyb3IoKTsKLSAgICAgICAgIHJldCA9IGk7Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAg ICBYNTA5ZXJyKFg1MDlfRl9YNTA5X0xPQURfQ0VSVF9GSUxFLCBYNTA5X1JfQkFEX1g1MDlfRklM RVRZUEUpOwoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJhLXhtcHAtc3RhcnR0bHMucGF0Y2gg Yi9vcGVuc3NsLTEuMC4yYS14bXBwLXN0YXJ0dGxzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBkMmMzYmNkLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjJhLXhtcHAtc3Rh cnR0bHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1kaWZmIC11cCBvcGVu c3NsLTEuMC4yYS9hcHBzL3NfY2xpZW50LmMuc3RhcnR0bHMgb3BlbnNzbC0xLjAuMmEvYXBwcy9z X2NsaWVudC5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvYXBwcy9zX2NsaWVudC5jLnN0YXJ0dGxzCTIw MTUtMDQtMjIgMTg6MjM6MTIuOTY0Mzg3MTU3ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvYXBw cy9zX2NsaWVudC5jCTIwMTUtMDQtMjIgMTg6MjM6NTYuNDk2NDE0ODIwICswMjAwCi1AQCAtMTM0 LDcgKzEzNCw4IEBACi0gICogT1RIRVIgRU5USVRZIEJBU0VEIE9OIElORlJJTkdFTUVOVCBPRiBJ TlRFTExFQ1RVQUwgUFJPUEVSVFkgUklHSFRTIE9SCi0gICogT1RIRVJXSVNFLgotICAqLwotLQot Ky8qIGZvciBzdHJjYXNlc3RyICovCi0rI2RlZmluZSBfR05VX1NPVVJDRQotICNpbmNsdWRlIDxh c3NlcnQuaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLUBAIC0x NjI2LDggKzE2MjcsMTEgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAg ICAgICAgICAgICAgICAieG1sbnM9J2phYmJlcjpjbGllbnQnIHRvPSclcycgdmVyc2lvbj0nMS4w Jz4iLCBob3N0KTsKLSAgICAgICAgIHNlZW4gPSBCSU9fcmVhZChzYmlvLCBtYnVmLCBCVUZTSVpa KTsKLSAgICAgICAgIG1idWZbc2Vlbl0gPSAwOwotLSAgICAgICAgd2hpbGUgKCFzdHJzdHIKLS0g ICAgICAgICAgICAgICAobWJ1ZiwgIjxzdGFydHRscyB4bWxucz0ndXJuOmlldGY6cGFyYW1zOnht bDpuczp4bXBwLXRscyciKSkgewotKyAgICAgICAgd2hpbGUgKCFzdHJjYXNlc3RyCi0rICAgICAg ICAgICAgICAgKG1idWYsICI8c3RhcnR0bHMgeG1sbnM9J3VybjppZXRmOnBhcmFtczp4bWw6bnM6 eG1wcC10bHMnIikKLSsgICAgICAgICAgICAgICAmJiAhc3RyY2FzZXN0cihtYnVmLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICI8c3RhcnR0bHMgeG1sbnM9XCJ1cm46aWV0ZjpwYXJh bXM6eG1sOm5zOnhtcHAtdGxzXCIiKSkKLSsgICAgICAgIHsKLSAgICAgICAgICAgICBpZiAoc3Ry c3RyKG1idWYsICIvc3RyZWFtOmZlYXR1cmVzPiIpKQotICAgICAgICAgICAgICAgICBnb3RvIHNo dXQ7Ci0gICAgICAgICAgICAgc2VlbiA9IEJJT19yZWFkKHNiaW8sIG1idWYsIEJVRlNJWlopOwoK ZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJjLWRlZmF1bHQtcGF0aHMucGF0Y2ggYi9vcGVuc3Ns LTEuMC4yYy1kZWZhdWx0LXBhdGhzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBhYTYwN2JlLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjJjLWRlZmF1bHQtcGF0aHMucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMC4y Yy9hcHBzL3Nfc2VydmVyLmMuZGVmYXVsdC1wYXRocyBvcGVuc3NsLTEuMC4yYy9hcHBzL3Nfc2Vy dmVyLmMKLS0tLSBvcGVuc3NsLTEuMC4yYy9hcHBzL3Nfc2VydmVyLmMuZGVmYXVsdC1wYXRocwky MDE1LTA2LTEyIDE2OjUxOjIxLjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJjL2Fw cHMvc19zZXJ2ZXIuYwkyMDE1LTA2LTE1IDE3OjI0OjE3Ljc0NzQ0NjUxNSArMDIwMAotQEAgLTE3 ODgsMTIgKzE3ODgsMTYgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAg fQotICNlbmRpZgotIAotLSAgICBpZiAoKCFTU0xfQ1RYX2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhj dHgsIENBZmlsZSwgQ0FwYXRoKSkgfHwKLS0gICAgICAgICghU1NMX0NUWF9zZXRfZGVmYXVsdF92 ZXJpZnlfcGF0aHMoY3R4KSkpIHsKLS0gICAgICAgIC8qIEJJT19wcmludGYoYmlvX2VyciwiWDUw OV9sb2FkX3ZlcmlmeV9sb2NhdGlvbnNcbiIpOyAqLwotLSAgICAgICAgRVJSX3ByaW50X2Vycm9y cyhiaW9fZXJyKTsKLS0gICAgICAgIC8qIGdvdG8gZW5kOyAqLwotKyAgICBpZiAoQ0FmaWxlID09 IE5VTEwgJiYgQ0FwYXRoID09IE5VTEwpIHsKLSsgICAgICAgIGlmICghU1NMX0NUWF9zZXRfZGVm YXVsdF92ZXJpZnlfcGF0aHMoY3R4KSkgewotKyAgICAgICAgICAgIEVSUl9wcmludF9lcnJvcnMo YmlvX2Vycik7Ci0rICAgICAgICB9Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBpZiAoIVNTTF9D VFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zKGN0eCwgQ0FmaWxlLCBDQXBhdGgpKSB7Ci0rICAgICAg ICAgICAgRVJSX3ByaW50X2Vycm9ycyhiaW9fZXJyKTsKLSsgICAgICAgIH0KLSAgICAgfQotKwot ICAgICBpZiAodnBtKQotICAgICAgICAgU1NMX0NUWF9zZXQxX3BhcmFtKGN0eCwgdnBtKTsKLSAK LUBAIC0xODUwLDggKzE4NTQsMTAgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK LSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICBTU0xfQ1RYX3Nlc3Nfc2V0X2NhY2hlX3NpemUo Y3R4MiwgMTI4KTsKLSAKLS0gICAgICAgIGlmICgoIVNTTF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRp b25zKGN0eDIsIENBZmlsZSwgQ0FwYXRoKSkgfHwKLS0gICAgICAgICAgICAoIVNTTF9DVFhfc2V0 X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKGN0eDIpKSkgewotKyAgICAgICAgaWYgKCFTU0xfQ1RYX2xv YWRfdmVyaWZ5X2xvY2F0aW9ucyhjdHgyLCBDQWZpbGUsIENBcGF0aCkpIHsKLSsgICAgICAgICAg ICBFUlJfcHJpbnRfZXJyb3JzKGJpb19lcnIpOwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKCFT U0xfQ1RYX3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyhjdHgyKSkgewotICAgICAgICAgICAgIEVS Ul9wcmludF9lcnJvcnMoYmlvX2Vycik7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZiAodnBtKQot ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvYXBwcy9zX3RpbWUuYy5kZWZhdWx0LXBhdGhzIG9wZW5z c2wtMS4wLjJjL2FwcHMvc190aW1lLmMKLS0tLSBvcGVuc3NsLTEuMC4yYy9hcHBzL3NfdGltZS5j LmRlZmF1bHQtcGF0aHMJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBv cGVuc3NsLTEuMC4yYy9hcHBzL3NfdGltZS5jCTIwMTUtMDYtMTUgMTc6MjQ6MTcuNzQ3NDQ2NTE1 ICswMjAwCi1AQCAtMzgxLDEzICszODEsMTQgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQotIAotICAgICBTU0xfbG9hZF9lcnJvcl9zdHJpbmdzKCk7Ci0gCi0tICAgIGlmICgoIVNT TF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zKHRtX2N0eCwgQ0FmaWxlLCBDQXBhdGgpKSB8fAot LSAgICAgICAgKCFTU0xfQ1RYX3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyh0bV9jdHgpKSkgewot LSAgICAgICAgLyoKLS0gICAgICAgICAqIEJJT19wcmludGYoYmlvX2VyciwiZXJyb3Igc2V0dGlu ZyBkZWZhdWx0IHZlcmlmeSBsb2NhdGlvbnNcbiIpOwotLSAgICAgICAgICovCi0tICAgICAgICBF UlJfcHJpbnRfZXJyb3JzKGJpb19lcnIpOwotLSAgICAgICAgLyogZ290byBlbmQ7ICovCi0rICAg IGlmIChDQWZpbGUgPT0gTlVMTCAmJiBDQXBhdGggPT0gTlVMTCkgewotKyAgICAgICAgaWYgKCFT U0xfQ1RYX3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyh0bV9jdHgpKSB7Ci0rICAgICAgICAgICAg RVJSX3ByaW50X2Vycm9ycyhiaW9fZXJyKTsKLSsgICAgICAgIH0KLSsgICAgfSBlbHNlIHsKLSsg ICAgICAgIGlmICghU1NMX0NUWF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnModG1fY3R4LCBDQWZpbGUs IENBcGF0aCkpIHsKLSsgICAgICAgICAgICBFUlJfcHJpbnRfZXJyb3JzKGJpb19lcnIpOwotKyAg ICAgICAgfQotICAgICB9Ci0gCi0gICAgIGlmICh0bV9jaXBoZXIgPT0gTlVMTCkKCmRpZmYgLS1n aXQgYS9vcGVuc3NsLTEuMC4yYy1lY2Mtc3VpdGViLnBhdGNoIGIvb3BlbnNzbC0xLjAuMmMtZWNj LXN1aXRlYi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZjYWU3Ni4uMDAw MDAwMAotLS0gYS9vcGVuc3NsLTEuMC4yYy1lY2Mtc3VpdGViLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMTk1ICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2FwcHMvc3BlZWQuYy5z dWl0ZWIgb3BlbnNzbC0xLjAuMmMvYXBwcy9zcGVlZC5jCi0tLS0gb3BlbnNzbC0xLjAuMmMvYXBw cy9zcGVlZC5jLnN1aXRlYgkyMDE1LTA2LTE1IDE3OjM3OjA2LjI4NTA4MzY4NSArMDIwMAotKysr IG9wZW5zc2wtMS4wLjJjL2FwcHMvc3BlZWQuYwkyMDE1LTA2LTE1IDE3OjM3OjA2LjMzNTA4NDgz NiArMDIwMAotQEAgLTk5Niw3OCArOTk2LDI2IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoq YXJndikKLSAgICAgICAgIH0gZWxzZQotICMgZW5kaWYKLSAjIGlmbmRlZiBPUEVOU1NMX05PX0VD RFNBCi0tICAgICAgICBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FwMTYwIikgPT0gMCkKLS0gICAg ICAgICAgICBlY2RzYV9kb2l0W1JfRUNfUDE2MF0gPSAyOwotLSAgICAgICAgZWxzZSBpZiAoc3Ry Y21wKCphcmd2LCAiZWNkc2FwMTkyIikgPT0gMCkKLS0gICAgICAgICAgICBlY2RzYV9kb2l0W1Jf RUNfUDE5Ml0gPSAyOwotLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FwMjI0 IikgPT0gMCkKLS0gICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfUDIyNF0gPSAyOwotLSAgICAg ICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FwMjU2IikgPT0gMCkKLSsgICAgICAgIGlm IChzdHJjbXAoKmFyZ3YsICJlY2RzYXAyNTYiKSA9PSAwKQotICAgICAgICAgICAgIGVjZHNhX2Rv aXRbUl9FQ19QMjU2XSA9IDI7Ci0gICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2Rz YXAzODQiKSA9PSAwKQotICAgICAgICAgICAgIGVjZHNhX2RvaXRbUl9FQ19QMzg0XSA9IDI7Ci0g ICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RzYXA1MjEiKSA9PSAwKQotICAgICAg ICAgICAgIGVjZHNhX2RvaXRbUl9FQ19QNTIxXSA9IDI7Ci0tICAgICAgICBlbHNlIGlmIChzdHJj bXAoKmFyZ3YsICJlY2RzYWsxNjMiKSA9PSAwKQotLSAgICAgICAgICAgIGVjZHNhX2RvaXRbUl9F Q19LMTYzXSA9IDI7Ci0tICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RzYWsyMzMi KSA9PSAwKQotLSAgICAgICAgICAgIGVjZHNhX2RvaXRbUl9FQ19LMjMzXSA9IDI7Ci0tICAgICAg ICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RzYWsyODMiKSA9PSAwKQotLSAgICAgICAgICAg IGVjZHNhX2RvaXRbUl9FQ19LMjgzXSA9IDI7Ci0tICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFy Z3YsICJlY2RzYWs0MDkiKSA9PSAwKQotLSAgICAgICAgICAgIGVjZHNhX2RvaXRbUl9FQ19LNDA5 XSA9IDI7Ci0tICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RzYWs1NzEiKSA9PSAw KQotLSAgICAgICAgICAgIGVjZHNhX2RvaXRbUl9FQ19LNTcxXSA9IDI7Ci0tICAgICAgICBlbHNl IGlmIChzdHJjbXAoKmFyZ3YsICJlY2RzYWIxNjMiKSA9PSAwKQotLSAgICAgICAgICAgIGVjZHNh X2RvaXRbUl9FQ19CMTYzXSA9IDI7Ci0tICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJl Y2RzYWIyMzMiKSA9PSAwKQotLSAgICAgICAgICAgIGVjZHNhX2RvaXRbUl9FQ19CMjMzXSA9IDI7 Ci0tICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RzYWIyODMiKSA9PSAwKQotLSAg ICAgICAgICAgIGVjZHNhX2RvaXRbUl9FQ19CMjgzXSA9IDI7Ci0tICAgICAgICBlbHNlIGlmIChz dHJjbXAoKmFyZ3YsICJlY2RzYWI0MDkiKSA9PSAwKQotLSAgICAgICAgICAgIGVjZHNhX2RvaXRb Ul9FQ19CNDA5XSA9IDI7Ci0tICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RzYWI1 NzEiKSA9PSAwKQotLSAgICAgICAgICAgIGVjZHNhX2RvaXRbUl9FQ19CNTcxXSA9IDI7Ci0gICAg ICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RzYSIpID09IDApIHsKLS0gICAgICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgRUNfTlVNOyBpKyspCi0rICAgICAgICAgICAgZm9yIChpID0gUl9F Q19QMjU2OyBpIDw9IFJfRUNfUDUyMTsgaSsrKQotICAgICAgICAgICAgICAgICBlY2RzYV9kb2l0 W2ldID0gMTsKLSAgICAgICAgIH0gZWxzZQotICMgZW5kaWYKLSAjIGlmbmRlZiBPUEVOU1NMX05P X0VDREgKLS0gICAgICAgIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RocDE2MCIpID09IDApCi0tICAg ICAgICAgICAgZWNkaF9kb2l0W1JfRUNfUDE2MF0gPSAyOwotLSAgICAgICAgZWxzZSBpZiAoc3Ry Y21wKCphcmd2LCAiZWNkaHAxOTIiKSA9PSAwKQotLSAgICAgICAgICAgIGVjZGhfZG9pdFtSX0VD X1AxOTJdID0gMjsKLS0gICAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgImVjZGhwMjI0Iikg PT0gMCkKLS0gICAgICAgICAgICBlY2RoX2RvaXRbUl9FQ19QMjI0XSA9IDI7Ci0tICAgICAgICBl bHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RocDI1NiIpID09IDApCi0rICAgICAgICBpZiAoc3Ry Y21wKCphcmd2LCAiZWNkaHAyNTYiKSA9PSAwKQotICAgICAgICAgICAgIGVjZGhfZG9pdFtSX0VD X1AyNTZdID0gMjsKLSAgICAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgImVjZGhwMzg0Iikg PT0gMCkKLSAgICAgICAgICAgICBlY2RoX2RvaXRbUl9FQ19QMzg0XSA9IDI7Ci0gICAgICAgICBl bHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RocDUyMSIpID09IDApCi0gICAgICAgICAgICAgZWNk aF9kb2l0W1JfRUNfUDUyMV0gPSAyOwotLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAi ZWNkaGsxNjMiKSA9PSAwKQotLSAgICAgICAgICAgIGVjZGhfZG9pdFtSX0VDX0sxNjNdID0gMjsK LS0gICAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgImVjZGhrMjMzIikgPT0gMCkKLS0gICAg ICAgICAgICBlY2RoX2RvaXRbUl9FQ19LMjMzXSA9IDI7Ci0tICAgICAgICBlbHNlIGlmIChzdHJj bXAoKmFyZ3YsICJlY2RoazI4MyIpID09IDApCi0tICAgICAgICAgICAgZWNkaF9kb2l0W1JfRUNf SzI4M10gPSAyOwotLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkaGs0MDkiKSA9 PSAwKQotLSAgICAgICAgICAgIGVjZGhfZG9pdFtSX0VDX0s0MDldID0gMjsKLS0gICAgICAgIGVs c2UgaWYgKHN0cmNtcCgqYXJndiwgImVjZGhrNTcxIikgPT0gMCkKLS0gICAgICAgICAgICBlY2Ro X2RvaXRbUl9FQ19LNTcxXSA9IDI7Ci0tICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJl Y2RoYjE2MyIpID09IDApCi0tICAgICAgICAgICAgZWNkaF9kb2l0W1JfRUNfQjE2M10gPSAyOwot LSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkaGIyMzMiKSA9PSAwKQotLSAgICAg ICAgICAgIGVjZGhfZG9pdFtSX0VDX0IyMzNdID0gMjsKLS0gICAgICAgIGVsc2UgaWYgKHN0cmNt cCgqYXJndiwgImVjZGhiMjgzIikgPT0gMCkKLS0gICAgICAgICAgICBlY2RoX2RvaXRbUl9FQ19C MjgzXSA9IDI7Ci0tICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RoYjQwOSIpID09 IDApCi0tICAgICAgICAgICAgZWNkaF9kb2l0W1JfRUNfQjQwOV0gPSAyOwotLSAgICAgICAgZWxz ZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkaGI1NzEiKSA9PSAwKQotLSAgICAgICAgICAgIGVjZGhf ZG9pdFtSX0VDX0I1NzFdID0gMjsKLSAgICAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgImVj ZGgiKSA9PSAwKSB7Ci0tICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IEVDX05VTTsgaSsrKQot KyAgICAgICAgICAgIGZvciAoaSA9IFJfRUNfUDI1NjsgaSA8PSBSX0VDX1A1MjE7IGkrKykKLSAg ICAgICAgICAgICAgICAgZWNkaF9kb2l0W2ldID0gMTsKLSAgICAgICAgIH0gZWxzZQotICMgZW5k aWYKLUBAIC0xMTU2LDIxICsxMTA0LDExIEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJn dikKLSAgICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICJkc2E1MTIgICBkc2ExMDI0ICBk c2EyMDQ4XG4iKTsKLSAjIGVuZGlmCi0gIyBpZm5kZWYgT1BFTlNTTF9OT19FQ0RTQQotLSAgICAg ICAgICAgIEJJT19wcmludGYoYmlvX2VyciwgImVjZHNhcDE2MCBlY2RzYXAxOTIgZWNkc2FwMjI0 ICIKLS0gICAgICAgICAgICAgICAgICAgICAgICJlY2RzYXAyNTYgZWNkc2FwMzg0IGVjZHNhcDUy MVxuIik7Ci0tICAgICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLAotLSAgICAgICAgICAgICAg ICAgICAgICAgImVjZHNhazE2MyBlY2RzYWsyMzMgZWNkc2FrMjgzIGVjZHNhazQwOSBlY2RzYWs1 NzFcbiIpOwotLSAgICAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwKLS0gICAgICAgICAgICAg ICAgICAgICAgICJlY2RzYWIxNjMgZWNkc2FiMjMzIGVjZHNhYjI4MyBlY2RzYWI0MDkgZWNkc2Fi NTcxXG4iKTsKLSsgICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICJlY2RzYXAyNTYgZWNk c2FwMzg0IGVjZHNhcDUyMVxuIik7Ci0gICAgICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAi ZWNkc2FcbiIpOwotICMgZW5kaWYKLSAjIGlmbmRlZiBPUEVOU1NMX05PX0VDREgKLS0gICAgICAg ICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICJlY2RocDE2MCAgZWNkaHAxOTIgIGVjZGhwMjI0ICIK LS0gICAgICAgICAgICAgICAgICAgICAgICJlY2RocDI1NiAgZWNkaHAzODQgIGVjZGhwNTIxXG4i KTsKLS0gICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0tICAgICAgICAgICAgICAgICAg ICAgICAiZWNkaGsxNjMgIGVjZGhrMjMzICBlY2RoazI4MyAgZWNkaGs0MDkgIGVjZGhrNTcxXG4i KTsKLS0gICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0tICAgICAgICAgICAgICAgICAg ICAgICAiZWNkaGIxNjMgIGVjZGhiMjMzICBlY2RoYjI4MyAgZWNkaGI0MDkgIGVjZGhiNTcxXG4i KTsKLSsgICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICJlY2RocDI1NiAgZWNkaHAzODQg IGVjZGhwNTIxXG4iKTsKLSAgICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICJlY2RoXG4i KTsKLSAjIGVuZGlmCi0gCi1AQCAtMTI1NSwxMSArMTE5MywxMSBAQCBpbnQgTUFJTihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCi0gICAgICAgICAgICAgaWYgKCFGSVBTX21vZGUoKSB8fCBpICE9IFJf RFNBXzUxMikKLSAgICAgICAgICAgICAgICAgZHNhX2RvaXRbaV0gPSAxOwotICMgaWZuZGVmIE9Q RU5TU0xfTk9fRUNEU0EKLS0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBFQ19OVU07IGkrKykKLSsg ICAgICAgIGZvciAoaSA9IFJfRUNfUDI1NjsgaSA8PSBSX0VDX1A1MjE7IGkrKykKLSAgICAgICAg ICAgICBlY2RzYV9kb2l0W2ldID0gMTsKLSAjIGVuZGlmCi0gIyBpZm5kZWYgT1BFTlNTTF9OT19F Q0RICi0tICAgICAgICBmb3IgKGkgPSAwOyBpIDwgRUNfTlVNOyBpKyspCi0rICAgICAgICBmb3Ig KGkgPSBSX0VDX1AyNTY7IGkgPD0gUl9FQ19QNTIxOyBpKyspCi0gICAgICAgICAgICAgZWNkaF9k b2l0W2ldID0gMTsKLSAjIGVuZGlmCi0gICAgIH0KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL3Nz bC90MV9saWIuYy5zdWl0ZWIgb3BlbnNzbC0xLjAuMmMvc3NsL3QxX2xpYi5jCi0tLS0gb3BlbnNz bC0xLjAuMmMvc3NsL3QxX2xpYi5jLnN1aXRlYgkyMDE1LTA2LTEyIDE2OjUxOjI3LjAwMDAwMDAw MCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJjL3NzbC90MV9saWIuYwkyMDE1LTA2LTE1IDE3OjQ0 OjAzLjU3ODY4MTI3MSArMDIwMAotQEAgLTI2OCwxMSArMjY4LDcgQEAgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgZWNjdXJ2ZXNfYXV0bwotICAgICAwLCAyMywgICAgICAgICAgICAgICAgICAg ICAgLyogc2VjcDI1NnIxICgyMykgKi8KLSAgICAgLyogT3RoZXIgPj0gMjU2LWJpdCBwcmltZSBj dXJ2ZXMuICovCi0gICAgIDAsIDI1LCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwNTIxcjEg KDI1KSAqLwotLSAgICAwLCAyOCwgICAgICAgICAgICAgICAgICAgICAgLyogYnJhaW5wb29sNTEy cjEgKDI4KSAqLwotLSAgICAwLCAyNywgICAgICAgICAgICAgICAgICAgICAgLyogYnJhaW5wb29s UDM4NHIxICgyNykgKi8KLSAgICAgMCwgMjQsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3Az ODRyMSAoMjQpICovCi0tICAgIDAsIDI2LCAgICAgICAgICAgICAgICAgICAgICAvKiBicmFpbnBv b2xQMjU2cjEgKDI2KSAqLwotLSAgICAwLCAyMiwgICAgICAgICAgICAgICAgICAgICAgLyogc2Vj cDI1NmsxICgyMikgKi8KLSAjIGlmbmRlZiBPUEVOU1NMX05PX0VDMk0KLSAgICAgLyogPj0gMjU2 LWJpdCBiaW5hcnkgY3VydmVzLiAqLwotICAgICAwLCAxNCwgICAgICAgICAgICAgICAgICAgICAg Lyogc2VjdDU3MXIxICgxNCkgKi8KLUBAIC0yODksMTEgKzI4NSw3IEBAIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGVjY3VydmVzX2FsbFsKLSAgICAgMCwgMjMsICAgICAgICAgICAgICAgICAg ICAgIC8qIHNlY3AyNTZyMSAoMjMpICovCi0gICAgIC8qIE90aGVyID49IDI1Ni1iaXQgcHJpbWUg Y3VydmVzLiAqLwotICAgICAwLCAyNSwgICAgICAgICAgICAgICAgICAgICAgLyogc2VjcDUyMXIx ICgyNSkgKi8KLS0gICAgMCwgMjgsICAgICAgICAgICAgICAgICAgICAgIC8qIGJyYWlucG9vbDUx MnIxICgyOCkgKi8KLS0gICAgMCwgMjcsICAgICAgICAgICAgICAgICAgICAgIC8qIGJyYWlucG9v bFAzODRyMSAoMjcpICovCi0gICAgIDAsIDI0LCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNw Mzg0cjEgKDI0KSAqLwotLSAgICAwLCAyNiwgICAgICAgICAgICAgICAgICAgICAgLyogYnJhaW5w b29sUDI1NnIxICgyNikgKi8KLS0gICAgMCwgMjIsICAgICAgICAgICAgICAgICAgICAgIC8qIHNl Y3AyNTZrMSAoMjIpICovCi0gIyBpZm5kZWYgT1BFTlNTTF9OT19FQzJNCi0gICAgIC8qID49IDI1 Ni1iaXQgYmluYXJ5IGN1cnZlcy4gKi8KLSAgICAgMCwgMTQsICAgICAgICAgICAgICAgICAgICAg IC8qIHNlY3Q1NzFyMSAoMTQpICovCi1AQCAtMzA3LDEzICsyOTksNiBAQCBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBlY2N1cnZlc19hbGxbCi0gICAgICAqIFJlbWFpbmluZyBjdXJ2ZXMgZGlz YWJsZWQgYnkgZGVmYXVsdCBidXQgc3RpbGwgcGVybWl0dGVkIGlmIHNldAotICAgICAgKiB2aWEg YW4gZXhwbGljaXQgY2FsbGJhY2sgb3IgcGFyYW1ldGVycy4KLSAgICAgICovCi0tICAgIDAsIDIw LCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwMjI0azEgKDIwKSAqLwotLSAgICAwLCAyMSwg ICAgICAgICAgICAgICAgICAgICAgLyogc2VjcDIyNHIxICgyMSkgKi8KLS0gICAgMCwgMTgsICAg ICAgICAgICAgICAgICAgICAgIC8qIHNlY3AxOTJrMSAoMTgpICovCi0tICAgIDAsIDE5LCAgICAg ICAgICAgICAgICAgICAgICAvKiBzZWNwMTkycjEgKDE5KSAqLwotLSAgICAwLCAxNSwgICAgICAg ICAgICAgICAgICAgICAgLyogc2VjcDE2MGsxICgxNSkgKi8KLS0gICAgMCwgMTYsICAgICAgICAg ICAgICAgICAgICAgIC8qIHNlY3AxNjByMSAoMTYpICovCi0tICAgIDAsIDE3LCAgICAgICAgICAg ICAgICAgICAgICAvKiBzZWNwMTYwcjIgKDE3KSAqLwotICMgaWZuZGVmIE9QRU5TU0xfTk9fRUMy TQotICAgICAwLCA4LCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDIzOWsxICg4KSAqLwot ICAgICAwLCA2LCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDIzM2sxICg2KSAqLwotQEAg LTM0OCwyOSArMzMzLDIxIEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGZpcHNfY3VydmVz X2QKLSAgICAgMCwgOSwgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3QyODNrMSAoOSkgKi8K LSAgICAgMCwgMTAsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3QyODNyMSAoMTApICovCi0g IyAgZW5kaWYKLS0gICAgMCwgMjIsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3AyNTZrMSAo MjIpICovCi0gICAgIDAsIDIzLCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwMjU2cjEgKDIz KSAqLwotICMgIGlmbmRlZiBPUEVOU1NMX05PX0VDMk0KLSAgICAgMCwgOCwgICAgICAgICAgICAg ICAgICAgICAgIC8qIHNlY3QyMzlrMSAoOCkgKi8KLSAgICAgMCwgNiwgICAgICAgICAgICAgICAg ICAgICAgIC8qIHNlY3QyMzNrMSAoNikgKi8KLSAgICAgMCwgNywgICAgICAgICAgICAgICAgICAg ICAgIC8qIHNlY3QyMzNyMSAoNykgKi8KLSAjICBlbmRpZgotLSAgICAwLCAyMCwgICAgICAgICAg ICAgICAgICAgICAgLyogc2VjcDIyNGsxICgyMCkgKi8KLS0gICAgMCwgMjEsICAgICAgICAgICAg ICAgICAgICAgIC8qIHNlY3AyMjRyMSAoMjEpICovCi0gIyAgaWZuZGVmIE9QRU5TU0xfTk9fRUMy TQotICAgICAwLCA0LCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDE5M3IxICg0KSAqLwot ICAgICAwLCA1LCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDE5M3IyICg1KSAqLwotICMg IGVuZGlmCi0tICAgIDAsIDE4LCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwMTkyazEgKDE4 KSAqLwotLSAgICAwLCAxOSwgICAgICAgICAgICAgICAgICAgICAgLyogc2VjcDE5MnIxICgxOSkg Ki8KLSAjICBpZm5kZWYgT1BFTlNTTF9OT19FQzJNCi0gICAgIDAsIDEsICAgICAgICAgICAgICAg ICAgICAgICAvKiBzZWN0MTYzazEgKDEpICovCi0gICAgIDAsIDIsICAgICAgICAgICAgICAgICAg ICAgICAvKiBzZWN0MTYzcjEgKDIpICovCi0gICAgIDAsIDMsICAgICAgICAgICAgICAgICAgICAg ICAvKiBzZWN0MTYzcjIgKDMpICovCi0gIyAgZW5kaWYKLS0gICAgMCwgMTUsICAgICAgICAgICAg ICAgICAgICAgIC8qIHNlY3AxNjBrMSAoMTUpICovCi0tICAgIDAsIDE2LCAgICAgICAgICAgICAg ICAgICAgICAvKiBzZWNwMTYwcjEgKDE2KSAqLwotLSAgICAwLCAxNywgICAgICAgICAgICAgICAg ICAgICAgLyogc2VjcDE2MHIyICgxNykgKi8KLSB9OwotICMgZW5kaWYKLSAKCmRpZmYgLS1naXQg YS9vcGVuc3NsLTEuMC4yZC1zZWNwMjU2azEucGF0Y2ggYi9vcGVuc3NsLTEuMC4yZC1zZWNwMjU2 azEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjOTQxMzMuLjAwMDAwMDAK LS0tIGEvb3BlbnNzbC0xLjAuMmQtc2VjcDI1NmsxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs ODIgKzAsMCBAQAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmQvY3J5cHRvL2VjL2VjX2N1cnZlLmMu c2VjcDI1NmsxIG9wZW5zc2wtMS4wLjJkL2NyeXB0by9lYy9lY19jdXJ2ZS5jCi0tLS0gb3BlbnNz bC0xLjAuMmQvY3J5cHRvL2VjL2VjX2N1cnZlLmMuc2VjcDI1NmsxCTIwMTUtMDgtMTIgMTQ6NTU6 MTUuMjAzNDE1NDIwIC0wNDAwCi0rKysgb3BlbnNzbC0xLjAuMmQvY3J5cHRvL2VjL2VjX2N1cnZl LmMJMjAxNS0wOC0xMiAxNTowNzoxMi42NTkxMTMyNjIgLTA0MDAKLUBAIC04Niw2ICs4Niw0MiBA QCB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgIHVuc2lnbmVkIGludCBjb2ZhY3RvcjsgICAgICAvKiBw cm9tb3RlZCB0byBCTl9VTE9ORyAqLwotIH0gRUNfQ1VSVkVfREFUQTsKLSAKLStzdGF0aWMgY29u c3Qgc3RydWN0IHsKLSsgICAgRUNfQ1VSVkVfREFUQSBoOwotKyAgICB1bnNpZ25lZCBjaGFyIGRh dGFbMCArIDMyICogNl07Ci0rfSBfRUNfU0VDR19QUklNRV8yNTZLMSA9IHsKLSsgICAgewotKyAg ICAgICAgTklEX1g5XzYyX3ByaW1lX2ZpZWxkLCAwLCAzMiwgMQotKyAgICB9LAotKyAgICB7Ci0r ICAgICAgICAvKiBubyBzZWVkICovCi0rICAgICAgICAvKiBwICovCi0rICAgICAgICAweEZGLCAw eEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZG LCAweEZGLAotKyAgICAgICAgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhG RiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwKLSsgICAgICAgIDB4RkYsIDB4RkYsIDB4 RkYsIDB4RkUsIDB4RkYsIDB4RkYsIDB4RkMsIDB4MkYsCi0rICAgICAgICAvKiBhICovCi0rICAg ICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLAotKyAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLSsgICAgICAgIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0rICAgICAgICAv KiBiICovCi0rICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotKyAgICAgICAgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwK LSsgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcs Ci0rICAgICAgICAvKiB4ICovCi0rICAgICAgICAweDc5LCAweEJFLCAweDY2LCAweDdFLCAweEY5 LCAweERDLCAweEJCLCAweEFDLCAweDU1LCAweEEwLCAweDYyLCAweDk1LAotKyAgICAgICAgMHhD RSwgMHg4NywgMHgwQiwgMHgwNywgMHgwMiwgMHg5QiwgMHhGQywgMHhEQiwgMHgyRCwgMHhDRSwg MHgyOCwgMHhEOSwKLSsgICAgICAgIDB4NTksIDB4RjIsIDB4ODEsIDB4NUIsIDB4MTYsIDB4Rjgs IDB4MTcsIDB4OTgsCi0rICAgICAgICAvKiB5ICovCi0rICAgICAgICAweDQ4LCAweDNhLCAweGRh LCAweDc3LCAweDI2LCAweGEzLCAweGM0LCAweDY1LCAweDVkLCAweGE0LCAweGZiLCAweGZjLAot KyAgICAgICAgMHgwZSwgMHgxMSwgMHgwOCwgMHhhOCwgMHhmZCwgMHgxNywgMHhiNCwgMHg0OCwg MHhhNiwgMHg4NSwgMHg1NCwgMHgxOSwKLSsgICAgICAgIDB4OWMsIDB4NDcsIDB4ZDAsIDB4OGYs IDB4ZmIsIDB4MTAsIDB4ZDQsIDB4YjgsCi0rICAgICAgICAvKiBvcmRlciAqLwotKyAgICAgICAg MHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhG RiwgMHhGRiwgMHhGRiwKLSsgICAgICAgIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkUsIDB4QkEsIDB4 QUUsIDB4REMsIDB4RTYsIDB4QUYsIDB4NDgsIDB4QTAsIDB4M0IsCi0rICAgICAgICAweEJGLCAw eEQyLCAweDVFLCAweDhDLCAweEQwLCAweDM2LCAweDQxLCAweDQxCi0rICAgIH0KLSt9OwotKwot IC8qIHRoZSBuaXN0IHByaW1lIGN1cnZlcyAqLwotIHN0YXRpYyBjb25zdCBzdHJ1Y3QgewotICAg ICBFQ19DVVJWRV9EQVRBIGg7Ci1AQCAtMjM1LDYgKzI3MSw4IEBAIHR5cGVkZWYgc3RydWN0IF9l Y19saXN0X2VsZW1lbnRfc3QgewotIHN0YXRpYyBjb25zdCBlY19saXN0X2VsZW1lbnQgY3VydmVf bGlzdFtdID0gewotICAgICAvKiBwcmltZSBmaWVsZCBjdXJ2ZXMgKi8KLSAgICAgLyogc2VjZyBj dXJ2ZXMgKi8KLSsgICAge05JRF9zZWNwMjU2azEsICZfRUNfU0VDR19QUklNRV8yNTZLMS5oLCAw LAotKyAgICAgIlNFQ0cgY3VydmUgb3ZlciBhIDI1NiBiaXQgcHJpbWUgZmllbGQifSwKLSAgICAg LyogU0VDRyBzZWNwMjU2cjEgaXMgdGhlIHNhbWUgYXMgWDkuNjIgcHJpbWUyNTZ2MSBhbmQgaGVu Y2Ugb21pdHRlZCAqLwotICAgICB7TklEX3NlY3AzODRyMSwgJl9FQ19OSVNUX1BSSU1FXzM4NC5o LCAwLAotICAgICAgIk5JU1QvU0VDRyBjdXJ2ZSBvdmVyIGEgMzg0IGJpdCBwcmltZSBmaWVsZCJ9 LAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmQvc3NsL3QxX2xpYi5jLnNlY3AyNTZrMSBvcGVuc3Ns LTEuMC4yZC9zc2wvdDFfbGliLmMKLS0tLSBvcGVuc3NsLTEuMC4yZC9zc2wvdDFfbGliLmMuc2Vj cDI1NmsxCTIwMTUtMDgtMTIgMTU6MDQ6NDIuODc2OTI1NDQxIC0wNDAwCi0rKysgb3BlbnNzbC0x LjAuMmQvc3NsL3QxX2xpYi5jCTIwMTUtMDgtMTIgMTU6MDQ6NDcuODM3Njk5ODIyIC0wNDAwCi1A QCAtMjY5LDYgKzI2OSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGVjY3VydmVzX2F1 dG8KLSAgICAgLyogT3RoZXIgPj0gMjU2LWJpdCBwcmltZSBjdXJ2ZXMuICovCi0gICAgIDAsIDI1 LCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwNTIxcjEgKDI1KSAqLwotICAgICAwLCAyNCwg ICAgICAgICAgICAgICAgICAgICAgLyogc2VjcDM4NHIxICgyNCkgKi8KLSsgICAgMCwgMjIsICAg ICAgICAgICAgICAgICAgICAgIC8qIHNlY3AyNTZrMSAoMjIpICovCi0gIyBpZm5kZWYgT1BFTlNT TF9OT19FQzJNCi0gICAgIC8qID49IDI1Ni1iaXQgYmluYXJ5IGN1cnZlcy4gKi8KLSAgICAgMCwg MTQsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3Q1NzFyMSAoMTQpICovCi1AQCAtMjg2LDYg KzI4Nyw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGVjY3VydmVzX2FsbFsKLSAgICAg LyogT3RoZXIgPj0gMjU2LWJpdCBwcmltZSBjdXJ2ZXMuICovCi0gICAgIDAsIDI1LCAgICAgICAg ICAgICAgICAgICAgICAvKiBzZWNwNTIxcjEgKDI1KSAqLwotICAgICAwLCAyNCwgICAgICAgICAg ICAgICAgICAgICAgLyogc2VjcDM4NHIxICgyNCkgKi8KLSsgICAgMCwgMjIsICAgICAgICAgICAg ICAgICAgICAgIC8qIHNlY3AyNTZrMSAoMjIpICovCi0gIyBpZm5kZWYgT1BFTlNTTF9OT19FQzJN Ci0gICAgIC8qID49IDI1Ni1iaXQgYmluYXJ5IGN1cnZlcy4gKi8KLSAgICAgMCwgMTQsICAgICAg ICAgICAgICAgICAgICAgIC8qIHNlY3Q1NzFyMSAoMTQpICovCi1AQCAtMzMzLDYgKzMzNSw3IEBA IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGZpcHNfY3VydmVzX2QKLSAgICAgMCwgOSwgICAg ICAgICAgICAgICAgICAgICAgIC8qIHNlY3QyODNrMSAoOSkgKi8KLSAgICAgMCwgMTAsICAgICAg ICAgICAgICAgICAgICAgIC8qIHNlY3QyODNyMSAoMTApICovCi0gIyAgZW5kaWYKLSsgICAgMCwg MjIsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3AyNTZrMSAoMjIpICovCi0gICAgIDAsIDIz LCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwMjU2cjEgKDIzKSAqLwotICMgIGlmbmRlZiBP UEVOU1NMX05PX0VDMk0KLSAgICAgMCwgOCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3Qy MzlrMSAoOCkgKi8KCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4yZS1yZW1vdmUtbmlzdHAyMjQu cGF0Y2ggYi9vcGVuc3NsLTEuMC4yZS1yZW1vdmUtbmlzdHAyMjQucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDIyYjk5YzEuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMmUt cmVtb3ZlLW5pc3RwMjI0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMmUvY3J5cHRvL2VjL2VjLmgubmlzdHAyMjQgb3BlbnNzbC0xLjAu MmUvY3J5cHRvL2VjL2VjLmgKLS0tLSBvcGVuc3NsLTEuMC4yZS9jcnlwdG8vZWMvZWMuaC5uaXN0 cDIyNAkyMDE1LTEyLTA0IDE0OjAwOjU3LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4w LjJlL2NyeXB0by9lYy9lYy5oCTIwMTUtMTItMDggMTU6NTE6MzcuMDQ2NzQ3OTE2ICswMTAwCi1A QCAtMTQ5LDExICsxNDksNiBAQCBjb25zdCBFQ19NRVRIT0QgKkVDX0dGcF9tb250X21ldGhvZCh2 b2lkCi0gY29uc3QgRUNfTUVUSE9EICpFQ19HRnBfbmlzdF9tZXRob2Qodm9pZCk7Ci0gCi0gIyBp Zm5kZWYgT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4Ci0tLyoqIFJldHVybnMgNjQtYml0 IG9wdGltaXplZCBtZXRob2RzIGZvciBuaXN0cDIyNAotLSAqICBccmV0dXJuICBFQ19NRVRIT0Qg b2JqZWN0Ci0tICovCi0tY29uc3QgRUNfTUVUSE9EICpFQ19HRnBfbmlzdHAyMjRfbWV0aG9kKHZv aWQpOwotLQotIC8qKiBSZXR1cm5zIDY0LWJpdCBvcHRpbWl6ZWQgbWV0aG9kcyBmb3IgbmlzdHAy NTYKLSAgKiAgXHJldHVybiAgRUNfTUVUSE9EIG9iamVjdAotICAqLwoKZGlmZiAtLWdpdCBhL29w ZW5zc2wtMS4wLjJlLXJwbWJ1aWxkLnBhdGNoIGIvb3BlbnNzbC0xLjAuMmUtcnBtYnVpbGQucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiMTQ2MGMuLjAwMDAwMDAKLS0tIGEv b3BlbnNzbC0xLjAuMmUtcnBtYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAs MCBAQAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmUvQ29uZmlndXJlLnJwbWJ1aWxkIG9wZW5zc2wt MS4wLjJlL0NvbmZpZ3VyZQotLS0tIG9wZW5zc2wtMS4wLjJlL0NvbmZpZ3VyZS5ycG1idWlsZAky MDE1LTEyLTAzIDE1OjA0OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJlL0Nv bmZpZ3VyZQkyMDE1LTEyLTA0IDEzOjIwOjIyLjk5NjgzNTYwNCArMDEwMAotQEAgLTM2NSw4ICsz NjUsOCBAQCBteSAldGFibGU9KAotICMjIyMKLSAjICotZ2VuZXJpYyogaXMgZW5kaWFuLW5ldXRy YWwgdGFyZ2V0LCBidXQgLi9jb25maWcgaXMgZnJlZSB0bwotICMgdGhyb3cgaW4gLURbQkxdX0VO RElBTiwgd2hpY2hldmVyIGFwcHJvcHJpYXRlLi4uCi0tImxpbnV4LWdlbmVyaWMzMiIsImdjYzot TzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9O RyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06 ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01J Tk9SKSIsCi0tImxpbnV4LXBwYyIsCSJnY2M6LURCX0VORElBTiAtTzMgLVdhbGw6Oi1EX1JFRU5U UkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJP TEw6JHtwcGMzMl9hc219OmxpbnV4MzI6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQo U0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImxpbnV4LWdlbmVyaWMzMiIsImdjYzot V2FsbCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOjotV2wsLXoscmVscm8gLWxkbDpC Tl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25v X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOlwkKFJQTV9PUFRfRkxBR1MpOi5zby5cJChT SExJQl9TT05BTUVWRVIpIiwKLSsibGludXgtcHBjIiwJImdjYzotREJfRU5ESUFOIC1XYWxsIFwk KFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxybyAtbGRsOkJOX0xMT05H IFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzMyX2FzbX06bGlu dXgzMjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6XCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNI TElCX1NPTkFNRVZFUikiLAotIAotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gIyBOb3RlIHRoYXQgLW1hcmNo IGlzIG5vdCBhbW9uZyBjb21waWxlciBvcHRpb25zIGluIGJlbG93IGxpbnV4LWFybXY0Ci1AQCAt Mzk1LDMxICszOTUsMzEgQEAgbXkgJXRhYmxlPSgKLSAjCi0gIyAgICAgICAuL0NvbmZpZ3VyZSBs aW51eC1hcm12NCAtbWFyY2g9YXJtdjYgLURfX0FSTV9NQVhfQVJDSF9fPTgKLSAjCi0tImxpbnV4 LWFybXY0IiwJImdjYzogLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0 X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHthcm12NF9hc219OmRs ZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5P UikiLAotLSJsaW51eC1hYXJjaDY0IiwiZ2NjOiAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxk bDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJP TEwgQkZfUFRSOiR7YWFyY2g2NF9hc219OmxpbnV4NjQ6ZGxmY246bGludXgtc2hhcmVkOi1mUElD Ojouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImxpbnV4LWFybXY0IiwJ ImdjYzotV2FsbCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOjotV2wsLXoscmVscm8g LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BU Ujoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOlwkKFJQTV9PUFRfRkxBR1Mp Oi5zby5cJChTSExJQl9TT05BTUVWRVIpIiwKLSsibGludXgtYWFyY2g2NCIsImdjYzotRExfRU5E SUFOIC1XYWxsIFwkKFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxybyAt bGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VO Uk9MTCBCRl9QVFI6JHthYXJjaDY0X2FzbX06bGludXg2NDpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQ SUM6XCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUik6Ojo2NCIsCi0gIyBD b25maWd1cmUgc2NyaXB0IGFkZHMgbWluaW1hbGx5IHJlcXVpcmVkIC1tYXJjaCBmb3IgYXNzZW1i bHkgc3VwcG9ydCwKLSAjIGlmIG5vIC1tYXJjaCB3YXMgc3BlY2lmaWVkIGF0IGNvbW1hbmQgbGlu ZS4gbWlwczMyIGFuZCBtaXBzNjQgYmVsb3cKLSAjIHJlZmVyIHRvIGNvbnRlbXBvcmFyeSBNSVBT IEFyY2hpdGVjdHVyZSBzcGVjaWZpY2F0aW9ucywgTUlQUzMyIGFuZAotICMgTUlQUzY0LCByYXRo ZXIgdGhhbiB0byBrZXJuZWwgYml0bmVzcy4KLS0ibGludXgtbWlwczMyIiwJImdjYzotbWFiaT0z MiAtTzMgLVdhbGwgLURCTl9ESVYzVzo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9D SEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7bWlwczMyX2FzbX06bzMy OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9N SU5PUikiLAotLSJsaW51eC1taXBzNjQiLCAgICJnY2M6LW1hYmk9bjMyIC1PMyAtV2FsbCAtREJO X0RJVjNXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVQgUkM0X0NIQVIgUkM0X0NI VU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHttaXBzNjRfYXNtfTpuMzI6ZGxmY246bGlu dXgtc2hhcmVkOi1mUElDOi1tYWJpPW4zMjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01J Tk9SKTo6OjMyIiwKLS0ibGludXg2NC1taXBzNjQiLCAgICJnY2M6LW1hYmk9NjQgLU8zIC1XYWxs IC1EQk5fRElWM1c6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9D SEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7bWlwczY0X2FzbX06NjQ6 ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tYWJpPTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQo U0hMSUJfTUlOT1IpOjo6NjQiLAotKyJsaW51eC1taXBzMzIiLAkiZ2NjOi1tYWJpPTMyIC1XYWxs IFwkKFJQTV9PUFRfRkxBR1MpIC1EQk5fRElWM1c6Oi1EX1JFRU5UUkFOVDo6LVdsLC16LHJlbHJv IC1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9Q VFI6JHttaXBzMzJfYXNtfTpvMzI6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOlwkKFJQTV9PUFRf RkxBR1MpOi5zby5cJChTSExJQl9TT05BTUVWRVIpIiwKLSsibGludXgtbWlwczY0IiwgICAiZ2Nj Oi1tYWJpPW4zMiAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKSAtREJOX0RJVjNXOjotRF9SRUVOVFJB TlQ6Oi1XbCwteixyZWxybyAtbGRsOlNJWFRZX0ZPVVJfQklUIFJDNF9DSEFSIFJDNF9DSFVOSyBE RVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7bWlwczY0X2FzbX06bjMyOmRsZmNuOmxpbnV4LXNo YXJlZDotZlBJQzotbWFiaT1uMzIgXCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFN RVZFUik6OjozMiIsCi0rImxpbnV4NjQtbWlwczY0IiwgICAiZ2NjOi1tYWJpPTY0IC1XYWxsIFwk KFJQTV9PUFRfRkxBR1MpIC1EQk5fRElWM1c6Oi1EX1JFRU5UUkFOVDo6LVdsLC16LHJlbHJvIC1s ZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5S T0xMIEJGX1BUUjoke21pcHM2NF9hc219OjY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbWFi aT02NCBcJChSUE1fT1BUX0ZMQUdTKTouc28uXCQoU0hMSUJfU09OQU1FVkVSKTo6OjY0IiwKLSAj IyMjIElBLTMyIHRhcmdldHMuLi4KLSAibGludXgtaWEzMi1pY2MiLAkiaWNjOi1ETF9FTkRJQU4g LU8yOjotRF9SRUVOVFJBTlQ6Oi1sZGwgLW5vX2NwcHJ0OkJOX0xMT05HICR7eDg2X2djY19kZXN9 ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LUtQSUM6 Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLS0ibGludXgtZWxmIiwJImdj YzotRExfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5U OjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZf YXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hM SUJfTUlOT1IpIiwKLSsibGludXgtZWxmIiwJImdjYzotRExfRU5ESUFOIC1XYWxsIFwkKFJQTV9P UFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxybyAtbGRsOkJOX0xMT05HICR7eDg2 X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFy ZWQ6LWZQSUM6XCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUikiLAotICJs aW51eC1hb3V0IiwJImdjYzotRExfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtbWFy Y2g9aTQ4NiAtV2FsbDo6KHVua25vd24pOjo6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZf Z2NjX29wdHN9OiR7eDg2X2FzbX06YS5vdXQiLAotICMjIyMKLS0ibGludXgtZ2VuZXJpYzY0Iiwi Z2NjOi1PMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0 X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHtub19hc219OmRsZmNu OmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUiki LAotLSJsaW51eC1wcGM2NCIsCSJnY2M6LW02NCAtREJfRU5ESUFOIC1PMyAtV2FsbDo6LURfUkVF TlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19S SVNDMSBERVNfVU5ST0xMOiR7cHBjNjRfYXNtfTpsaW51eDY0OmRsZmNuOmxpbnV4LXNoYXJlZDot ZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6NjQiLAotLSJs aW51eC1wcGM2NGxlIiwiZ2NjOi1tNjQgLURMX0VORElBTiAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFO VDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEg REVTX1VOUk9MTDokcHBjNjRfYXNtOmxpbnV4NjRsZTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6 LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OiIsCi0tImxpbnV4LWlh NjQiLAkiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1s ZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1VOUk9MTCBERVNfSU5UOiR7aWE2 NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChT SExJQl9NSU5PUikiLAotKyJsaW51eC1nZW5lcmljNjQiLCJnY2M6LVdhbGwgXCQoUlBNX09QVF9G TEFHUyk6Oi1EX1JFRU5UUkFOVDo6LVdsLC16LHJlbHJvIC1sZGw6U0lYVFlfRk9VUl9CSVRfTE9O RyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06 ZGxmY246bGludXgtc2hhcmVkOi1mUElDOlwkKFJQTV9PUFRfRkxBR1MpOi5zby5cJChTSExJQl9T T05BTUVWRVIpOjo6NjQiLAotKyJsaW51eC1wcGM2NCIsCSJnY2M6LW02NCAtREJfRU5ESUFOIC1X YWxsIFwkKFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxybyAtbGRsOlNJ WFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xM OiR7cHBjNjRfYXNtfTpsaW51eDY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0IFwkKFJQ TV9PUFRfRkxBR1MpOi5zby5cJChTSExJQl9TT05BTUVWRVIpOjo6NjQiLAotKyJsaW51eC1wcGM2 NGxlIiwiZ2NjOi1tNjQgLURMX0VORElBTiAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVF TlRSQU5UOjotV2wsLXoscmVscm8gLWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJD NF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDokcHBjNjRfYXNtOmxpbnV4NjRsZTpkbGZjbjps aW51eC1zaGFyZWQ6LWZQSUM6LW02NCBcJChSUE1fT1BUX0ZMQUdTKTouc28uXCQoU0hMSUJfU09O QU1FVkVSKTo6OjY0IiwKLSsibGludXgtaWE2NCIsCSJnY2M6LURMX0VORElBTiAtV2FsbCBcJChS UE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOjotV2wsLXoscmVscm8gLWxkbDpTSVhUWV9GT1VS X0JJVF9MT05HIFJDNF9DSFVOSyBERVNfVU5ST0xMIERFU19JTlQ6JHtpYTY0X2FzbX06ZGxmY246 bGludXgtc2hhcmVkOi1mUElDOlwkKFJQTV9PUFRfRkxBR1MpOi5zby5cJChTSExJQl9TT05BTUVW RVIpIiwKLSAibGludXgtaWE2NC1pY2MiLCJpY2M6LURMX0VORElBTiAtTzIgLVdhbGw6Oi1EX1JF RU5UUkFOVDo6LWxkbCAtbm9fY3BwcnQ6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVT X1JJU0MxIERFU19JTlQ6JHtpYTY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28u XCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0tImxpbnV4LXg4Nl82NCIsCSJnY2M6 LW02NCAtRExfRU5ESUFOIC1PMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJf QklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpk bGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElC X01JTk9SKTo6OjY0IiwKLSsibGludXgteDg2XzY0IiwJImdjYzotbTY0IC1ETF9FTkRJQU4gLVdh bGwgXCQoUlBNX09QVF9GTEFHUyk6Oi1EX1JFRU5UUkFOVDo6LVdsLC16LHJlbHJvIC1sZGw6U0lY VFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2Fz bX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0IFwkKFJQTV9PUFRfRkxBR1MpOi5z by5cJChTSExJQl9TT05BTUVWRVIpOjo6NjQiLAotICJsaW51eC14ODZfNjQtY2xhbmciLAkiY2xh bmc6IC1tNjQgLURMX0VORElBTiAtTzMgLVdhbGwgLVdleHRyYSAkY2xhbmdfZGlzYWJsZWRfd2Fy bmluZ3MgLVF1bnVzZWQtYXJndW1lbnRzOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9C SVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRs ZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJf TUlOT1IpOjo6NjQiLAotICJkZWJ1Zy1saW51eC14ODZfNjQtY2xhbmciLAkiY2xhbmc6IC1EQk5f REVCVUcgLURSRUZfQ0hFQ0sgLURDT05GX0RFQlVHIC1EQ1JZUFRPX01ERUJVRyAtbTY0IC1ETF9F TkRJQU4gLWcgLVdhbGwgLVdleHRyYSAkY2xhbmdfZGlzYWJsZWRfd2FybmluZ3MgLVF1bnVzZWQt YXJndW1lbnRzOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hV TksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJl ZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6NjQiLAot ICJsaW51eC14ODZfNjQtaWNjIiwgImljYzotRExfRU5ESUFOIC1PMjo6LURfUkVFTlRSQU5UOjot bGRsIC1ub19jcHBydDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19V TlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQo U0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OjY0IiwKLSAibGludXgteDMyIiwJImdjYzot bXgzMiAtRExfRU5ESUFOIC1PMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJf QklUIFJDNF9DSFVOS19MTCBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxm Y246bGludXgtc2hhcmVkOi1mUElDOi1teDMyOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJf TUlOT1IpOjo6eDMyIiwKLS0ibGludXg2NC1zMzkweCIsCSJnY2M6LW02NCAtREJfRU5ESUFOIC1P MyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIg UkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3MzOTB4X2FzbX06NjQ6ZGxmY246bGludXgt c2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojo2 NCIsCi0rImxpbnV4NjQtczM5MHgiLAkiZ2NjOi1tNjQgLURCX0VORElBTiAtV2FsbCBcJChSUE1f T1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOjotV2wsLXoscmVscm8gLWxkbDpTSVhUWV9GT1VSX0JJ VF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHtzMzkweF9hc219 OjY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0IFwkKFJQTV9PUFRfRkxBR1MpOi5zby5c JChTSExJQl9TT05BTUVWRVIpOjo6NjQiLAotICMjIyMgU28gY2FsbGVkICJoaWdoZ3BycyIgdGFy Z2V0IGZvciB6L0FyY2hpdGVjdHVyZSBDUFVzCi0gIyAiSGlnaGdwcnMiIGlzIGtlcm5lbCBmZWF0 dXJlIGZpcnN0IGltcGxlbWVudGVkIGluIExpbnV4IDIuNi4zMiwgc2VlCi0gIyAvcHJvYy9jcHVp bmZvLiBUaGUgaWRlYSBpcyB0byBwcmVzZXJ2ZSBtb3N0IHNpZ25pZmljYW50IGJpdHMgb2YKLUBA IC00MzcsMTIgKzQzNywxMiBAQCBteSAldGFibGU9KAotICMjIyMgU1BBUkMgTGludXggc2V0dXBz Ci0gIyBSYXkgTWlsbGVyIDxyYXkubWlsbGVyQGNvbXB1dGluZy1zZXJ2aWNlcy5veGZvcmQuYWMu dWs+IGhhcyBwYXRpZW50bHkKLSAjIGFzc2lzdGVkIHdpdGggZGVidWdnaW5nIG9mIGZvbGxvd2lu ZyB0d28gY29uZmlncy4KLS0ibGludXgtc3BhcmN2OCIsImdjYzotbWNwdT12OCAtREJfRU5ESUFO IC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6 Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7c3Bh cmN2OF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5c JChTSExJQl9NSU5PUikiLAotKyJsaW51eC1zcGFyY3Y4IiwiZ2NjOi1tY3B1PXY4IC1EQl9FTkRJ QU4gLVdhbGwgXCQoUlBNX09QVF9GTEFHUykgLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotV2ws LXoscmVscm8gLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9Q VFI6JHtzcGFyY3Y4X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOlwkKFJQTV9PUFRfRkxB R1MpOi5zby5cJChTSExJQl9TT05BTUVWRVIpIiwKLSAjIGl0J3MgYSByZWFsIG1lc3Mgd2l0aCAt bWNwdT11bHRyYXNwYXJjIG9wdGlvbiB1bmRlciBMaW51eCwgYnV0Ci0gIyAtV2EsLUF2OHBsdXMg c2hvdWxkIGRvIHRoZSB0cmljayBubyBtYXR0ZXIgd2hhdC4KLS0ibGludXgtc3BhcmN2OSIsImdj YzotbTMyIC1tY3B1PXVsdHJhc3BhcmMgLURCX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50 ZXIgLVdhbGwgLVdhLC1BdjhwbHVzIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDpVTFRSQVNQQVJD Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7c3Bh cmN2OV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTMyOi5zby5cJChTSExJQl9NQUpP UikuXCQoU0hMSUJfTUlOT1IpIiwKLSsibGludXgtc3BhcmN2OSIsImdjYzotbTMyIC1tY3B1PXVs dHJhc3BhcmMgLURCX0VORElBTiAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKSAtV2EsLUF2OHBsdXMg LURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOlVMVFJBU1BBUkM6LVdsLC16LHJlbHJvIC1sZGw6Qk5f TExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OV9hc219 OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTMyIFwkKFJQTV9PUFRfRkxBR1MpOi5zby5cJChT SExJQl9TT05BTUVWRVIpIiwKLSAjIEdDQyAzLjEgaXMgYSByZXF1aXJlbWVudAotLSJsaW51eDY0 LXNwYXJjdjkiLCJnY2M6LW02NCAtbWNwdT11bHRyYXNwYXJjIC1EQl9FTkRJQU4gLU8zIC1mb21p dC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6VUxUUkFTUEFSQzotbGRsOkJOX0xM T05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19QVFIgREVTX1JJU0MxIERFU19VTlJP TEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5z by5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6NjQiLAotKyJsaW51eDY0LXNwYXJj djkiLCJnY2M6LW02NCAtbWNwdT11bHRyYXNwYXJjIC1EQl9FTkRJQU4gLVdhbGwgXCQoUlBNX09Q VF9GTEFHUyk6Oi1EX1JFRU5UUkFOVDpVTFRSQVNQQVJDOi1XbCwteixyZWxybyAtbGRsOkJOX0xM T05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19QVFIgREVTX1JJU0MxIERFU19VTlJP TEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0IFwk KFJQTV9PUFRfRkxBR1MpOi5zby5cJChTSExJQl9TT05BTUVWRVIpOjo6NjQiLAotICMjIyMgQWxw aGEgTGludXggd2l0aCBHTlUgQyBhbmQgQ29tcGFxIEMgc2V0dXBzCi0gIyBTcGVjaWFsIG5vdGVz OgotICMgLSBsaW51eC1hbHBoYStid3gtZ2NjIGlzIG1lbnQgdG8gYmUgdXNlZCBmcm9tIC4vY29u ZmlnIG9ubHkuIElmIHlvdQotQEAgLTE3NjcsNyArMTc2Nyw3IEBAIHdoaWxlICg8SU4+KQotIAll bHNpZiAoJHNoYXJlZF9leHRlbnNpb24gbmUgIiIgJiYgJHNoYXJlZF9leHRlbnNpb24gPX4gL15c LnMoW29sXSlcLlteXC5dKlwuW15cLl0qJC8pCi0gCQl7Ci0gCQlteSAkc290bXAgPSAkMTsKLS0J CXMvXlNIQVJFRF9MSUJTX0xJTktfRVhUUz0uKi9TSEFSRURfTElCU19MSU5LX0VYVFM9LnMkc290 bXAuXCQoU0hMSUJfTUFKT1IpIC5zJHNvdG1wLzsKLSsJCXMvXlNIQVJFRF9MSUJTX0xJTktfRVhU Uz0uKi9TSEFSRURfTElCU19MSU5LX0VYVFM9LnMkc290bXAuXCQoU0hMSUJfU09OQU1FVkVSKSAu cyRzb3RtcC87Ci0gCQl9Ci0gCWVsc2lmICgkc2hhcmVkX2V4dGVuc2lvbiBuZSAiIiAmJiAkc2hh cmVkX2V4dGVuc2lvbiA9fiAvXlwuW15cLl0qXC5bXlwuXSpcLmR5bGliJC8pCi0gCQl7Ci1kaWZm IC11cCBvcGVuc3NsLTEuMC4yZS9NYWtlZmlsZS5vcmcucnBtYnVpbGQgb3BlbnNzbC0xLjAuMmUv TWFrZWZpbGUub3JnCi0tLS0gb3BlbnNzbC0xLjAuMmUvTWFrZWZpbGUub3JnLnJwbWJ1aWxkCTIw MTUtMTItMDMgMTU6MDQ6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmUvTWFr ZWZpbGUub3JnCTIwMTUtMTItMDQgMTM6MTg6NDQuOTEzNTM4NjE2ICswMTAwCi1AQCAtMTAsNiAr MTAsNyBAQCBTSExJQl9WRVJTSU9OX0hJU1RPUlk9Ci0gU0hMSUJfTUFKT1I9Ci0gU0hMSUJfTUlO T1I9Ci0gU0hMSUJfRVhUPQotK1NITElCX1NPTkFNRVZFUj0xMAotIFBMQVRGT1JNPWRpc3QKLSBP UFRJT05TPQotIENPTkZJR1VSRV9BUkdTPQotQEAgLTM0MSwxMCArMzQyLDkgQEAgY2xlYW4tc2hh cmVkOgotIGxpbmstc2hhcmVkOgotIAlAIHNldCAtZTsgZm9yIGkgaW4gJChTSExJQkRJUlMpOyBk byBcCi0gCQkkKE1BS0UpIC1mICQoSEVSRSkvTWFrZWZpbGUuc2hhcmVkIC1lICQoQlVJTERFTlYp IFwKLS0JCQlMSUJOQU1FPSQkaSBMSUJWRVJTSU9OPSQoU0hMSUJfTUFKT1IpLiQoU0hMSUJfTUlO T1IpIFwKLSsJCQlMSUJOQU1FPSQkaSBMSUJWRVJTSU9OPSQoU0hMSUJfU09OQU1FVkVSKSBcCi0g CQkJTElCQ09NUEFUVkVSU0lPTlM9IjskKFNITElCX1ZFUlNJT05fSElTVE9SWSkiIFwKLSAJCQlz eW1saW5rLiQoU0hMSUJfVEFSR0VUKTsgXAotLQkJbGlicz0iJCRsaWJzIC1sJCRpIjsgXAotIAlk b25lCi0gCi0gYnVpbGQtc2hhcmVkOiBkb18kKFNITElCX1RBUkdFVCkgbGluay1zaGFyZWQKLUBA IC0zNTUsNyArMzU1LDcgQEAgZG9fJChTSExJQl9UQVJHRVQpOgotIAkJCWxpYnM9IiQoTElCS1JC NSkgJCRsaWJzIjsgXAotIAkJZmk7IFwKLSAJCSQoQ0xFQVJFTlYpICYmICQoTUFLRSkgLWYgTWFr ZWZpbGUuc2hhcmVkIC1lICQoQlVJTERFTlYpIFwKLS0JCQlMSUJOQU1FPSQkaSBMSUJWRVJTSU9O PSQoU0hMSUJfTUFKT1IpLiQoU0hMSUJfTUlOT1IpIFwKLSsJCQlMSUJOQU1FPSQkaSBMSUJWRVJT SU9OPSQoU0hMSUJfU09OQU1FVkVSKSBcCi0gCQkJTElCQ09NUEFUVkVSU0lPTlM9IjskKFNITElC X1ZFUlNJT05fSElTVE9SWSkiIFwKLSAJCQlMSUJERVBTPSIkJGxpYnMgJChFWF9MSUJTKSIgXAot IAkJCWxpbmtfYS4kKFNITElCX1RBUkdFVCk7IFwKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4y ZS1zcGVlZC1kb2MucGF0Y2ggYi9vcGVuc3NsLTEuMC4yZS1zcGVlZC1kb2MucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlM2Q5NWIuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0x LjAuMmUtc3BlZWQtZG9jLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMmUvYXBwcy9zcGVlZC5jLnNwZWVkLWRvYyBvcGVuc3NsLTEuMC4y ZS9hcHBzL3NwZWVkLmMKLS0tLSBvcGVuc3NsLTEuMC4yZS9hcHBzL3NwZWVkLmMuc3BlZWQtZG9j CTIwMTUtMTItMDQgMTQ6MDA6NTguMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmUv YXBwcy9zcGVlZC5jCTIwMTYtMDEtMTUgMTQ6MTU6NTYuNDgyMzQzNTU3ICswMTAwCi1AQCAtNjQ4 LDEwICs2NDgsNiBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gIyBlbmRpZgot ICAgICBpbnQgbXVsdGlibG9jayA9IDA7Ci0gCi0tIyBpZm5kZWYgVElNRVMKLS0gICAgdXNlcnRp bWUgPSAtMTsKLS0jIGVuZGlmCi0tCi0gICAgIGFwcHNfc3RhcnR1cCgpOwotICAgICBtZW1zZXQo cmVzdWx0cywgMCwgc2l6ZW9mKHJlc3VsdHMpKTsKLSAjIGlmbmRlZiBPUEVOU1NMX05PX0RTQQot QEAgLTExNDUsMTAgKzExNDEsOCBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0g Ci0gICAgICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiXG4iKTsKLSAgICAgICAgICAgICBC SU9fcHJpbnRmKGJpb19lcnIsICJBdmFpbGFibGUgb3B0aW9uczpcbiIpOwotLSMgaWYgZGVmaW5l ZChUSU1FUykgfHwgZGVmaW5lZChVU0VfVE9EKQotICAgICAgICAgICAgIEJJT19wcmludGYoYmlv X2VyciwgIi1lbGFwc2VkICAgICAgICAiCi0gICAgICAgICAgICAgICAgICAgICAgICAibWVhc3Vy ZSB0aW1lIGluIHJlYWwgdGltZSBpbnN0ZWFkIG9mIENQVSB1c2VyIHRpbWUuXG4iKTsKLS0jIGVu ZGlmCi0gIyBpZm5kZWYgT1BFTlNTTF9OT19FTkdJTkUKLSAgICAgICAgICAgICBCSU9fcHJpbnRm KGJpb19lcnIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiLWVuZ2luZSBlICAgICAgICIKLWRp ZmYgLXVwIG9wZW5zc2wtMS4wLjJlL2RvYy9hcHBzL3NwZWVkLnBvZC5zcGVlZC1kb2Mgb3BlbnNz bC0xLjAuMmUvZG9jL2FwcHMvc3BlZWQucG9kCi0tLS0gb3BlbnNzbC0xLjAuMmUvZG9jL2FwcHMv c3BlZWQucG9kLnNwZWVkLWRvYwkyMDE1LTEyLTAzIDE0OjQyOjA3LjAwMDAwMDAwMCArMDEwMAot KysrIG9wZW5zc2wtMS4wLjJlL2RvYy9hcHBzL3NwZWVkLnBvZAkyMDE2LTAxLTE1IDE0OjA1OjIz LjA0NDIyMjM3NiArMDEwMAotQEAgLTgsNiArOCw5IEBAIHNwZWVkIC0gdGVzdCBsaWJyYXJ5IHBl cmZvcm1hbmNlCi0gCi0gQjxvcGVuc3NsIHNwZWVkPgotIFtCPC1lbmdpbmUgaWQ+XQotK1tCPC1l bGFwc2VkPl0KLStbQjwtZXZwIGFsZ28+XQotK1tCPC1kZWNyeXB0Pl0KLSBbQjxtZDI+XQotIFtC PG1kYzI+XQotIFtCPG1kNT5dCi1AQCAtNDksNiArNTIsMTkgQEAgdG8gYXR0ZW1wdCB0byBvYnRh aW4gYSBmdW5jdGlvbmFsIHJlZmVyZQotIHRodXMgaW5pdGlhbGlzaW5nIGl0IGlmIG5lZWRlZC4g VGhlIGVuZ2luZSB3aWxsIHRoZW4gYmUgc2V0IGFzIHRoZSBkZWZhdWx0Ci0gZm9yIGFsbCBhdmFp bGFibGUgYWxnb3JpdGhtcy4KLSAKLSs9aXRlbSBCPC1lbGFwc2VkPgotKwotK01lYXN1cmUgdGlt ZSBpbiByZWFsIHRpbWUgaW5zdGVhZCBvZiBDUFUgdGltZS4gSXQgY2FuIGJlIHVzZWZ1bCB3aGVu IHRlc3RpbmcKLStzcGVlZCBvZiBoYXJkd2FyZSBlbmdpbmVzLgotKwotKz1pdGVtIEI8LWV2cCBh bGdvPgotKwotK1VzZSB0aGUgc3BlY2lmaWVkIGNpcGhlciBvciBtZXNzYWdlIGRpZ2VzdCBhbGdv cml0aG0gdmlhIHRoZSBFVlAgaW50ZXJmYWNlLgotKwotKz1pdGVtIEI8LWRlY3J5cHQ+Ci0rCi0r VGltZSB0aGUgZGVjcnlwdGlvbiBpbnN0ZWFkIG9mIGVuY3J5cHRpb24uIEFmZmVjdHMgb25seSB0 aGUgRVZQIHRlc3RpbmcuCi0rCi0gPWl0ZW0gQjxbemVybyBvciBtb3JlIHRlc3QgYWxnb3JpdGht c10+Ci0gCi0gSWYgYW55IG9wdGlvbnMgYXJlIGdpdmVuLCBCPHNwZWVkPiB0ZXN0cyB0aG9zZSBh bGdvcml0aG1zLCBvdGhlcndpc2UgYWxsIG9mCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMmUt d3JhcC1wYWQucGF0Y2ggYi9vcGVuc3NsLTEuMC4yZS13cmFwLXBhZC5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggZmFkMDQzYy4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4y ZS13cmFwLXBhZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0MSArMCwwIEBACi1kaWZmIC11 cCBvcGVuc3NsLTEuMC4yZS9jcnlwdG8vZXZwL2NfYWxsYy5jLndyYXAgb3BlbnNzbC0xLjAuMmUv Y3J5cHRvL2V2cC9jX2FsbGMuYwotLS0tIG9wZW5zc2wtMS4wLjJlL2NyeXB0by9ldnAvY19hbGxj LmMud3JhcAkyMDE1LTEyLTA0IDEzOjMzOjQyLjExODU1MDAzNiArMDEwMAotKysrIG9wZW5zc2wt MS4wLjJlL2NyeXB0by9ldnAvY19hbGxjLmMJMjAxNS0xMi0wNCAxMzozMzo0Mi4xOTA1NTE3MjIg KzAxMDAKLUBAIC0xNzksNiArMTc5LDcgQEAgdm9pZCBPcGVuU1NMX2FkZF9hbGxfY2lwaGVycyh2 b2lkKQotICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF94dHMoKSk7Ci0gICAgIEVWUF9h ZGRfY2lwaGVyKEVWUF9hZXNfMTI4X2NjbSgpKTsKLSAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Fl c18xMjhfd3JhcCgpKTsKLSsgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfd3JhcF9wYWQo KSk7Ci0gICAgIEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18xMjhfY2JjLCAiQUVTMTI4Iik7 Ci0gICAgIEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18xMjhfY2JjLCAiYWVzMTI4Iik7Ci0g ICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX2VjYigpKTsKLUBAIC0xOTEsNiArMTkyLDcg QEAgdm9pZCBPcGVuU1NMX2FkZF9hbGxfY2lwaGVycyh2b2lkKQotICAgICBFVlBfYWRkX2NpcGhl cihFVlBfYWVzXzE5Ml9nY20oKSk7Ci0gICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX2Nj bSgpKTsKLSAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfd3JhcCgpKTsKLSsgICAgRVZQ X2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfd3JhcF9wYWQoKSk7Ci0gICAgIEVWUF9hZGRfY2lwaGVy X2FsaWFzKFNOX2Flc18xOTJfY2JjLCAiQUVTMTkyIik7Ci0gICAgIEVWUF9hZGRfY2lwaGVyX2Fs aWFzKFNOX2Flc18xOTJfY2JjLCAiYWVzMTkyIik7Ci0gICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9h ZXNfMjU2X2VjYigpKTsKLUBAIC0yMDQsNiArMjA2LDcgQEAgdm9pZCBPcGVuU1NMX2FkZF9hbGxf Y2lwaGVycyh2b2lkKQotICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl94dHMoKSk7Ci0g ICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X2NjbSgpKTsKLSAgICAgRVZQX2FkZF9jaXBo ZXIoRVZQX2Flc18yNTZfd3JhcCgpKTsKLSsgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZf d3JhcF9wYWQoKSk7Ci0gICAgIEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18yNTZfY2JjLCAi QUVTMjU2Iik7Ci0gICAgIEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18yNTZfY2JjLCAiYWVz MjU2Iik7Ci0gIyBpZiAhZGVmaW5lZChPUEVOU1NMX05PX1NIQSkgJiYgIWRlZmluZWQoT1BFTlNT TF9OT19TSEExKQotQEAgLTI1OCw2ICsyNjEsNyBAQCB2b2lkIE9wZW5TU0xfYWRkX2FsbF9jaXBo ZXJzKHZvaWQpCi0gCi0gICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfZGVzX2VkZSgpKTsKLSAg ICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9kZXNfZWRlMygpKTsKLSsgICAgICAgIEVWUF9hZGRf Y2lwaGVyKEVWUF9kZXNfZWRlM193cmFwKCkpOwotICMgZW5kaWYKLSAKLSAjIGlmbmRlZiBPUEVO U1NMX05PX0FFUwotQEAgLTI3Miw2ICsyNzYsNyBAQCB2b2lkIE9wZW5TU0xfYWRkX2FsbF9jaXBo ZXJzKHZvaWQpCi0gICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF94dHMoKSk7Ci0g ICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF9jY20oKSk7Ci0gICAgICAgICBFVlBf YWRkX2NpcGhlcihFVlBfYWVzXzEyOF93cmFwKCkpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIo RVZQX2Flc18xMjhfd3JhcF9wYWQoKSk7Ci0gICAgICAgICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhT Tl9hZXNfMTI4X2NiYywgIkFFUzEyOCIpOwotICAgICAgICAgRVZQX2FkZF9jaXBoZXJfYWxpYXMo U05fYWVzXzEyOF9jYmMsICJhZXMxMjgiKTsKLSAgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9h ZXNfMTkyX2VjYigpKTsKLUBAIC0yODQsNiArMjg5LDcgQEAgdm9pZCBPcGVuU1NMX2FkZF9hbGxf Y2lwaGVycyh2b2lkKQotICAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfZ2NtKCkp OwotICAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfY2NtKCkpOwotICAgICAgICAg RVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfd3JhcCgpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lw aGVyKEVWUF9hZXNfMTkyX3dyYXBfcGFkKCkpOwotICAgICAgICAgRVZQX2FkZF9jaXBoZXJfYWxp YXMoU05fYWVzXzE5Ml9jYmMsICJBRVMxOTIiKTsKLSAgICAgICAgIEVWUF9hZGRfY2lwaGVyX2Fs aWFzKFNOX2Flc18xOTJfY2JjLCAiYWVzMTkyIik7Ci0gICAgICAgICBFVlBfYWRkX2NpcGhlcihF VlBfYWVzXzI1Nl9lY2IoKSk7Ci1AQCAtMjk3LDYgKzMwMyw3IEBAIHZvaWQgT3BlblNTTF9hZGRf YWxsX2NpcGhlcnModm9pZCkKLSAgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X3h0 cygpKTsKLSAgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X2NjbSgpKTsKLSAgICAg ICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X3dyYXAoKSk7Ci0rICAgICAgICBFVlBfYWRk X2NpcGhlcihFVlBfYWVzXzI1Nl93cmFwX3BhZCgpKTsKLSAgICAgICAgIEVWUF9hZGRfY2lwaGVy X2FsaWFzKFNOX2Flc18yNTZfY2JjLCAiQUVTMjU2Iik7Ci0gICAgICAgICBFVlBfYWRkX2NpcGhl cl9hbGlhcyhTTl9hZXNfMjU2X2NiYywgImFlczI1NiIpOwotICMgZW5kaWYKLWRpZmYgLXVwIG9w ZW5zc2wtMS4wLjJlL2NyeXB0by9ldnAvZV9hZXMuYy53cmFwIG9wZW5zc2wtMS4wLjJlL2NyeXB0 by9ldnAvZV9hZXMuYwotLS0tIG9wZW5zc2wtMS4wLjJlL2NyeXB0by9ldnAvZV9hZXMuYy53cmFw CTIwMTUtMTItMDQgMTM6MzM6NDIuMTE5NTUwMDU5ICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmUv Y3J5cHRvL2V2cC9lX2Flcy5jCTIwMTUtMTItMDQgMTM6MzM6NDIuMTkwNTUxNzIyICswMTAwCi1A QCAtMSw1ICsxLDUgQEAKLSAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLSAqIENvcHlyaWdodCAoYykgMjAwMS0y MDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqIENvcHly aWdodCAoYykgMjAwMS0yMDE0IFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2Vy dmVkLgotICAqCi0gICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi1AQCAtMTk1Myw3ICsxOTUz LDcgQEAgc3RhdGljIGludCBhZXNfd3JhcF9pbml0X2tleShFVlBfQ0lQSEVSXwotICAgICAgICAg ICAgIHdjdHgtPml2ID0gTlVMTDsKLSAgICAgfQotICAgICBpZiAoaXYpIHsKLS0gICAgICAgIG1l bWNweShjdHgtPml2LCBpdiwgOCk7Ci0rICAgICAgICBtZW1jcHkoY3R4LT5pdiwgaXYsIEVWUF9D SVBIRVJfQ1RYX2l2X2xlbmd0aChjdHgpKTsKLSAgICAgICAgIHdjdHgtPml2ID0gY3R4LT5pdjsK LSAgICAgfQotICAgICByZXR1cm4gMTsKLUBAIC0xOTY0LDMwICsxOTY0LDU3IEBAIHN0YXRpYyBp bnQgYWVzX3dyYXBfY2lwaGVyKEVWUF9DSVBIRVJfQ1QKLSB7Ci0gICAgIEVWUF9BRVNfV1JBUF9D VFggKndjdHggPSBjdHgtPmNpcGhlcl9kYXRhOwotICAgICBzaXplX3QgcnY7Ci0rICAgIC8qIEFF UyB3cmFwIHdpdGggcGFkZGluZyBoYXMgSVYgbGVuZ3RoIG9mIDQsIHdpdGhvdXQgcGFkZGluZyA4 ICovCi0rICAgIGludCBwYWQgPSBFVlBfQ0lQSEVSX0NUWF9pdl9sZW5ndGgoY3R4KSA9PSA0Owot KyAgICAvKiBObyBmaW5hbCBvcGVyYXRpb24gc28gYWx3YXlzIHJldHVybiB6ZXJvIGxlbmd0aCAq LwotICAgICBpZiAoIWluKQotICAgICAgICAgcmV0dXJuIDA7Ci0tICAgIGlmIChpbmxlbiAlIDgp Ci0rICAgIC8qIElucHV0IGxlbmd0aCBtdXN0IGFsd2F5cyBiZSBub24temVybyAqLwotKyAgICBp ZiAoIWlubGVuKQotICAgICAgICAgcmV0dXJuIC0xOwotLSAgICBpZiAoY3R4LT5lbmNyeXB0ICYm IGlubGVuIDwgOCkKLSsgICAgLyogSWYgZGVjcnlwdGluZyBuZWVkIGF0IGxlYXN0IDE2IGJ5dGVz IGFuZCBtdWx0aXBsZSBvZiA4ICovCi0rICAgIGlmICghY3R4LT5lbmNyeXB0ICYmIChpbmxlbiA8 IDE2IHx8IGlubGVuICYgMHg3KSkKLSAgICAgICAgIHJldHVybiAtMTsKLS0gICAgaWYgKCFjdHgt PmVuY3J5cHQgJiYgaW5sZW4gPCAxNikKLSsgICAgLyogSWYgbm90IHBhZGRpbmcgaW5wdXQgbXVz dCBiZSBtdWx0aXBsZSBvZiA4ICovCi0rICAgIGlmICghcGFkICYmIGlubGVuICYgMHg3KQotICAg ICAgICAgcmV0dXJuIC0xOwotICAgICBpZiAoIW91dCkgewotLSAgICAgICAgaWYgKGN0eC0+ZW5j cnlwdCkKLSsgICAgICAgIGlmIChjdHgtPmVuY3J5cHQpIHsKLSsgICAgICAgICAgICAvKiBJZiBw YWRkaW5nIHJvdW5kIHVwIHRvIG11bHRpcGxlIG9mIDggKi8KLSsgICAgICAgICAgICBpZiAocGFk KQotKyAgICAgICAgICAgICAgICBpbmxlbiA9IChpbmxlbiArIDcpIC8gOCAqIDg7Ci0rICAgICAg ICAgICAgLyogOCBieXRlIHByZWZpeCAqLwotICAgICAgICAgICAgIHJldHVybiBpbmxlbiArIDg7 Ci0tICAgICAgICBlbHNlCi0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIC8qIElmIG5v dCBwYWRkaW5nIG91dHB1dCB3aWxsIGJlIGV4YWN0bHkgOCBieXRlcwotKyAgICAgICAgICAgICAq IHNtYWxsZXIgdGhhbiBpbnB1dC4gSWYgcGFkZGluZyBpdCB3aWxsIGJlIGF0Ci0rICAgICAgICAg ICAgICogbGVhc3QgOCBieXRlcyBzbWFsbGVyIGJ1dCB3ZSBkb24ndCBrbm93IGhvdwotKyAgICAg ICAgICAgICAqIG11Y2guCi0rICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgcmV0dXJuIGlu bGVuIC0gODsKLSAgICAgfQotKyAgICB9Ci0rICAgIGlmIChwYWQpIHsKLSAgICAgaWYgKGN0eC0+ ZW5jcnlwdCkKLS0gICAgICAgIHJ2ID0gQ1JZUFRPXzEyOF93cmFwKCZ3Y3R4LT5rcy5rcywgd2N0 eC0+aXYsIG91dCwgaW4sIGlubGVuLAotKyAgICAgICAgICAgIHJ2ID0gQ1JZUFRPXzEyOF93cmFw X3BhZCgmd2N0eC0+a3Mua3MsIHdjdHgtPml2LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvdXQsIGluLCBpbmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChibG9jazEyOF9mKSBBRVNfZW5jcnlwdCk7Ci0gICAgIGVsc2UKLS0gICAgICAgIHJ2ID0gQ1JZ UFRPXzEyOF91bndyYXAoJndjdHgtPmtzLmtzLCB3Y3R4LT5pdiwgb3V0LCBpbiwgaW5sZW4sCi0r ICAgICAgICAgICAgcnYgPSBDUllQVE9fMTI4X3Vud3JhcF9wYWQoJndjdHgtPmtzLmtzLCB3Y3R4 LT5pdiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQsIGluLCBp bmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsb2NrMTI4X2YpIEFFU19k ZWNyeXB0KTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAgIGlmIChjdHgtPmVuY3J5cHQpCi0rICAg ICAgICAgICAgcnYgPSBDUllQVE9fMTI4X3dyYXAoJndjdHgtPmtzLmtzLCB3Y3R4LT5pdiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQsIGluLCBpbmxlbiwgKGJsb2NrMTI4 X2YpIEFFU19lbmNyeXB0KTsKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgICBydiA9IENSWVBU T18xMjhfdW53cmFwKCZ3Y3R4LT5rcy5rcywgd2N0eC0+aXYsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvdXQsIGluLCBpbmxlbiwgKGJsb2NrMTI4X2YpIEFFU19kZWNyeXB0 KTsKLSsgICAgfQotICAgICByZXR1cm4gcnYgPyAoaW50KXJ2IDogLTE7Ci0gfQotIAotLSNkZWZp bmUgV1JBUF9GTEFHUyAgICAgIChFVlBfQ0lQSF9XUkFQX01PREUgXAotKyMgZGVmaW5lIFdSQVBf RkxBR1MgICAgICAoRVZQX0NJUEhfV1JBUF9NT0RFIHwgRVZQX0NJUEhfRkxBR19GSVBTIFwKLSAg ICAgICAgICAgICAgICAgfCBFVlBfQ0lQSF9DVVNUT01fSVYgfCBFVlBfQ0lQSF9GTEFHX0NVU1RP TV9DSVBIRVIgXAotICAgICAgICAgICAgICAgICB8IEVWUF9DSVBIX0FMV0FZU19DQUxMX0lOSVQg fCBFVlBfQ0lQSF9GTEFHX0RFRkFVTFRfQVNOMSkKLSAKLUBAIC0yMDMyLDMgKzIwNTksNDUgQEAg Y29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18yNTZfd3JhcCh2b2lkKQotIHsKLSAgICAgcmV0dXJu ICZhZXNfMjU2X3dyYXA7Ci0gfQotKwotK3N0YXRpYyBjb25zdCBFVlBfQ0lQSEVSIGFlc18xMjhf d3JhcF9wYWQgPSB7Ci0rICAgIE5JRF9pZF9hZXMxMjhfd3JhcF9wYWQsCi0rICAgIDgsIDE2LCA0 LCBXUkFQX0ZMQUdTLAotKyAgICBhZXNfd3JhcF9pbml0X2tleSwgYWVzX3dyYXBfY2lwaGVyLAot KyAgICBOVUxMLAotKyAgICBzaXplb2YoRVZQX0FFU19XUkFQX0NUWCksCi0rICAgIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEwKLSt9OwotKwotK2NvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMTI4X3dy YXBfcGFkKHZvaWQpCi0rewotKyAgICByZXR1cm4gJmFlc18xMjhfd3JhcF9wYWQ7Ci0rfQotKwot K3N0YXRpYyBjb25zdCBFVlBfQ0lQSEVSIGFlc18xOTJfd3JhcF9wYWQgPSB7Ci0rICAgIE5JRF9p ZF9hZXMxOTJfd3JhcF9wYWQsCi0rICAgIDgsIDI0LCA0LCBXUkFQX0ZMQUdTLAotKyAgICBhZXNf d3JhcF9pbml0X2tleSwgYWVzX3dyYXBfY2lwaGVyLAotKyAgICBOVUxMLAotKyAgICBzaXplb2Yo RVZQX0FFU19XUkFQX0NUWCksCi0rICAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwKLSt9OwotKwot K2NvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMTkyX3dyYXBfcGFkKHZvaWQpCi0rewotKyAgICBy ZXR1cm4gJmFlc18xOTJfd3JhcF9wYWQ7Ci0rfQotKwotK3N0YXRpYyBjb25zdCBFVlBfQ0lQSEVS IGFlc18yNTZfd3JhcF9wYWQgPSB7Ci0rICAgIE5JRF9pZF9hZXMyNTZfd3JhcF9wYWQsCi0rICAg IDgsIDMyLCA0LCBXUkFQX0ZMQUdTLAotKyAgICBhZXNfd3JhcF9pbml0X2tleSwgYWVzX3dyYXBf Y2lwaGVyLAotKyAgICBOVUxMLAotKyAgICBzaXplb2YoRVZQX0FFU19XUkFQX0NUWCksCi0rICAg IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwKLSt9OwotKwotK2NvbnN0IEVWUF9DSVBIRVIgKkVWUF9h ZXNfMjU2X3dyYXBfcGFkKHZvaWQpCi0rewotKyAgICByZXR1cm4gJmFlc18yNTZfd3JhcF9wYWQ7 Ci0rfQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmUvY3J5cHRvL2V2cC9lX2RlczMuYy53cmFwIG9w ZW5zc2wtMS4wLjJlL2NyeXB0by9ldnAvZV9kZXMzLmMKLS0tLSBvcGVuc3NsLTEuMC4yZS9jcnlw dG8vZXZwL2VfZGVzMy5jLndyYXAJMjAxNS0xMi0wNCAxMzozMzo0Mi4xMTk1NTAwNTkgKzAxMDAK LSsrKyBvcGVuc3NsLTEuMC4yZS9jcnlwdG8vZXZwL2VfZGVzMy5jCTIwMTUtMTItMDQgMTM6MzM6 NDIuMTkxNTUxNzQ1ICswMTAwCi1AQCAtNDc0LDcgKzQ3NCw3IEBAIHN0YXRpYyBjb25zdCBFVlBf Q0lQSEVSIGRlczNfd3JhcCA9IHsKLSAgICAgTklEX2lkX3NtaW1lX2FsZ19DTVMzREVTd3JhcCwK LSAgICAgOCwgMjQsIDAsCi0gICAgIEVWUF9DSVBIX1dSQVBfTU9ERSB8IEVWUF9DSVBIX0NVU1RP TV9JViB8IEVWUF9DSVBIX0ZMQUdfQ1VTVE9NX0NJUEhFUgotLSAgICAgICAgfCBFVlBfQ0lQSF9G TEFHX0RFRkFVTFRfQVNOMSwKLSsgICAgICAgIHwgRVZQX0NJUEhfRkxBR19ERUZBVUxUX0FTTjEg fCBFVlBfQ0lQSF9GTEFHX0ZJUFMsCi0gICAgIGRlc19lZGUzX2luaXRfa2V5LCBkZXNfZWRlM193 cmFwX2NpcGhlciwKLSAgICAgTlVMTCwKLSAgICAgc2l6ZW9mKERFU19FREVfS0VZKSwKLWRpZmYg LXVwIG9wZW5zc2wtMS4wLjJlL2NyeXB0by9ldnAvZXZwLmgud3JhcCBvcGVuc3NsLTEuMC4yZS9j cnlwdG8vZXZwL2V2cC5oCi0tLS0gb3BlbnNzbC0xLjAuMmUvY3J5cHRvL2V2cC9ldnAuaC53cmFw CTIwMTUtMTItMDQgMTM6MzM6NDIuMTIwNTUwMDgzICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmUv Y3J5cHRvL2V2cC9ldnAuaAkyMDE1LTEyLTA0IDEzOjMzOjQyLjE5MTU1MTc0NSArMDEwMAotQEAg LTgzNCw2ICs4MzQsNyBAQCBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzEyOF9jY20odm9pZCk7 Ci0gY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18xMjhfZ2NtKHZvaWQpOwotIGNvbnN0IEVWUF9D SVBIRVIgKkVWUF9hZXNfMTI4X3h0cyh2b2lkKTsKLSBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVz XzEyOF93cmFwKHZvaWQpOwotK2NvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMTI4X3dyYXBfcGFk KHZvaWQpOwotIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMTkyX2VjYih2b2lkKTsKLSBjb25z dCBFVlBfQ0lQSEVSICpFVlBfYWVzXzE5Ml9jYmModm9pZCk7Ci0gY29uc3QgRVZQX0NJUEhFUiAq RVZQX2Flc18xOTJfY2ZiMSh2b2lkKTsKLUBAIC04NDUsNiArODQ2LDcgQEAgY29uc3QgRVZQX0NJ UEhFUiAqRVZQX2Flc18xOTJfY3RyKHZvaWQpOwotIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNf MTkyX2NjbSh2b2lkKTsKLSBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzE5Ml9nY20odm9pZCk7 Ci0gY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18xOTJfd3JhcCh2b2lkKTsKLStjb25zdCBFVlBf Q0lQSEVSICpFVlBfYWVzXzE5Ml93cmFwX3BhZCh2b2lkKTsKLSBjb25zdCBFVlBfQ0lQSEVSICpF VlBfYWVzXzI1Nl9lY2Iodm9pZCk7Ci0gY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18yNTZfY2Jj KHZvaWQpOwotIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMjU2X2NmYjEodm9pZCk7Ci1AQCAt ODU3LDYgKzg1OSw3IEBAIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMjU2X2NjbSh2b2lkKTsK LSBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzI1Nl9nY20odm9pZCk7Ci0gY29uc3QgRVZQX0NJ UEhFUiAqRVZQX2Flc18yNTZfeHRzKHZvaWQpOwotIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNf MjU2X3dyYXAodm9pZCk7Ci0rY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18yNTZfd3JhcF9wYWQo dm9pZCk7Ci0gIyAgaWYgIWRlZmluZWQoT1BFTlNTTF9OT19TSEEpICYmICFkZWZpbmVkKE9QRU5T U0xfTk9fU0hBMSkKLSBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzEyOF9jYmNfaG1hY19zaGEx KHZvaWQpOwotIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMjU2X2NiY19obWFjX3NoYTEodm9p ZCk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yZS9jcnlwdG8vZXZwL2V2cHRlc3RzLnR4dC53cmFw IG9wZW5zc2wtMS4wLjJlL2NyeXB0by9ldnAvZXZwdGVzdHMudHh0Ci0tLS0gb3BlbnNzbC0xLjAu MmUvY3J5cHRvL2V2cC9ldnB0ZXN0cy50eHQud3JhcAkyMDE1LTEyLTAzIDE1OjA0OjIzLjAwMDAw MDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJlL2NyeXB0by9ldnAvZXZwdGVzdHMudHh0CTIw MTUtMTItMDQgMTM6MzM6NDIuMTkxNTUxNzQ1ICswMTAwCi1AQCAtMzk5LDMgKzM5OSw3IEBAIGlk LWFlczI1Ni13cmFwOjAwMDEwMjAzMDQwNTA2MDcwODA5MEEwQjAKLSBpZC1hZXMxOTItd3JhcDow MDAxMDIwMzA0MDUwNjA3MDgwOTBBMEIwQzBEMEUwRjEwMTExMjEzMTQxNTE2MTc6OjAwMTEyMjMz NDQ1NTY2Nzc4ODk5QUFCQkNDRERFRUZGMDAwMTAyMDMwNDA1MDYwNzowMzFEMzMyNjRFMTVEMzMy NjhGMjRFQzI2MDc0M0VEQ0UxQzZDN0RERUU3MjVBOTM2QkE4MTQ5MTVDNjc2MkQyCi0gaWQtYWVz MjU2LXdyYXA6MDAwMTAyMDMwNDA1MDYwNzA4MDkwQTBCMEMwRDBFMEYxMDExMTIxMzE0MTUxNjE3 MTgxOTFBMUIxQzFEMUUxRjo6MDAxMTIyMzM0NDU1NjY3Nzg4OTlBQUJCQ0NEREVFRkYwMDAxMDIw MzA0MDUwNjA3OkE4RjlCQzE2MTJDNjhCM0ZGNkU2RjRGQkUzMEU3MUU0NzY5QzhCODBBMzJDQjg5 NThDRDVEMTdENkIyNTREQTEKLSBpZC1hZXMyNTYtd3JhcDowMDAxMDIwMzA0MDUwNjA3MDgwOTBB MEIwQzBEMEUwRjEwMTExMjEzMTQxNTE2MTcxODE5MUExQjFDMUQxRTFGOjowMDExMjIzMzQ0NTU2 Njc3ODg5OUFBQkJDQ0RERUVGRjAwMDEwMjAzMDQwNTA2MDcwODA5MEEwQjBDMEQwRTBGOjI4QzlG NDA0QzRCODEwRjRDQkNDQjM1Q0ZCODdGODI2M0Y1Nzg2RTJEODBFRDMyNkNCQzdGMEU3MUE5OUY0 M0JGQjk4OEI5QjdBMDJERDIxCi0rIyBBRVMgd3JhcCB0ZXN0cyBmcm9tIFJGQzU2NDkKLStpZC1h ZXMxOTItd3JhcC1wYWQ6NTg0MGRmNmUyOWIwMmFmMWFiNDkzYjcwNWJmMTZlYTFhZTgzMzhmNGRj YzE3NmE4OjpjMzdiN2U2NDkyNTg0MzQwYmVkMTIyMDc4MDg5NDExNTUwNjhmNzM4OjEzOGJkZWFh OWI4ZmE3ZmM2MWY5Nzc0MmU3MjI0OGVlNWFlNmFlNTM2MGQxYWU2YTVmNTRmMzczZmE1NDNiNmEK LStpZC1hZXMxOTItd3JhcC1wYWQ6NTg0MGRmNmUyOWIwMmFmMWFiNDkzYjcwNWJmMTZlYTFhZTgz MzhmNGRjYzE3NmE4Ojo0NjZmNzI1MDYxNzM2OTphZmJlYjBmMDdkZmJmNTQxOTIwMGYyY2NiNTBi YjI0ZgotKwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmUvY3J5cHRvL21vZGVzL21vZGVzLmgud3Jh cCBvcGVuc3NsLTEuMC4yZS9jcnlwdG8vbW9kZXMvbW9kZXMuaAotLS0tIG9wZW5zc2wtMS4wLjJl L2NyeXB0by9tb2Rlcy9tb2Rlcy5oLndyYXAJMjAxNS0xMi0wNCAxMzozMzo0MS43NzA1NDE4ODYg KzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4yZS9jcnlwdG8vbW9kZXMvbW9kZXMuaAkyMDE1LTEyLTA0 IDEzOjMzOjQyLjE5MTU1MTc0NSArMDEwMAotQEAgLTE1Nyw2ICsxNTcsMTIgQEAgc2l6ZV90IENS WVBUT18xMjhfdW53cmFwKHZvaWQgKmtleSwgY29ucwotICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBjaGFyICpvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVu c2lnbmVkIGNoYXIgKmluLCBzaXplX3QgaW5sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg IGJsb2NrMTI4X2YgYmxvY2spOwotK3NpemVfdCBDUllQVE9fMTI4X3dyYXBfcGFkKHZvaWQgKmtl eSwgY29uc3QgdW5zaWduZWQgY2hhciAqaWN2LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGNoYXIgKm91dCwgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZV90IGlubGVuLCBibG9jazEyOF9mIGJsb2NrKTsKLStzaXpl X3QgQ1JZUFRPXzEyOF91bndyYXBfcGFkKHZvaWQgKmtleSwgY29uc3QgdW5zaWduZWQgY2hhciAq aWN2LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LCBj b25zdCB1bnNpZ25lZCBjaGFyICppbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp emVfdCBpbmxlbiwgYmxvY2sxMjhfZiBibG9jayk7Ci0gCi0gI2lmZGVmICBfX2NwbHVzcGx1cwot IH0KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJlL2NyeXB0by9tb2Rlcy93cmFwMTI4LmMud3JhcCBv cGVuc3NsLTEuMC4yZS9jcnlwdG8vbW9kZXMvd3JhcDEyOC5jCi0tLS0gb3BlbnNzbC0xLjAuMmUv Y3J5cHRvL21vZGVzL3dyYXAxMjguYy53cmFwCTIwMTUtMTItMDMgMTU6MDQ6MjMuMDAwMDAwMDAw ICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmUvY3J5cHRvL21vZGVzL3dyYXAxMjguYwkyMDE1LTEy LTA0IDEzOjM3OjUxLjQ4NjM2Njk4NCArMDEwMAotQEAgLTIsNiArMiw3IEBACi0gLyoKLSAgKiBX cml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5zc2wub3JnKSBmb3IgdGhl IE9wZW5TU0wKLSAgKiBwcm9qZWN0LgotKyAqIE1vZGUgd2l0aCBwYWRkaW5nIGNvbnRyaWJ1dGVk IGJ5IFBldHIgU3BhY2VrIChwc3BhY2VrQHJlZGhhdC5jb20pLgotICAqLwotIC8qID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0gICogQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmln aHRzIHJlc2VydmVkLgotQEAgLTUyLDE5ICs1Myw0NCBAQAotICAqID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICov Ci0gCi0rLyoqICBCZXdhcmUhCi0rICoKLSsgKiAgRm9sbG93aW5nIHdyYXBwaW5nIG1vZGVzIHdl cmUgZGVzaWduZWQgZm9yIEFFUyBidXQgdGhpcyBpbXBsZW1lbnRhdGlvbgotKyAqICBhbGxvd3Mg eW91IHRvIHVzZSB0aGVtIGZvciBhbnkgMTI4IGJpdCBibG9jayBjaXBoZXIuCi0rICovCi0rCi0g I2luY2x1ZGUgImNyeXB0bGliLmgiCi0gI2luY2x1ZGUgPG9wZW5zc2wvbW9kZXMuaD4KLSAKLSsv KiogUkZDIDMzOTQgc2VjdGlvbiAyLjIuMy4xIERlZmF1bHQgSW5pdGlhbCBWYWx1ZSAqLwotIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRlZmF1bHRfaXZbXSA9IHsKLSAgICAgMHhBNiwgMHhB NiwgMHhBNiwgMHhBNiwgMHhBNiwgMHhBNiwgMHhBNiwgMHhBNiwKLSB9OwotIAotLS8qCi0tICog SW5wdXQgc2l6ZSBsaW1pdDogbG93ZXIgdGhhbiBtYXhpbXVtIG9mIHN0YW5kYXJkcyBidXQgZmFy IGxhcmdlciB0aGFuCi0rLyoqIFJGQyA1NjQ5IHNlY3Rpb24gMyBBbHRlcm5hdGl2ZSBJbml0aWFs IFZhbHVlIDMyLWJpdCBjb25zdGFudCAqLwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRl ZmF1bHRfYWl2W10gPSB7Ci0rICAgIDB4QTYsIDB4NTksIDB4NTksIDB4QTYKLSt9OwotKwotKy8q KiBJbnB1dCBzaXplIGxpbWl0OiBsb3dlciB0aGFuIG1heGltdW0gb2Ygc3RhbmRhcmRzIGJ1dCBm YXIgbGFyZ2VyIHRoYW4KLSAgKiBhbnl0aGluZyB0aGF0IHdpbGwgYmUgdXNlZCBpbiBwcmFjdGlj ZS4KLSAgKi8KLSAjZGVmaW5lIENSWVBUTzEyOF9XUkFQX01BWCAoMVVMIDw8IDMxKQotIAotKy8q KiBXcmFwcGluZyBhY2NvcmRpbmcgdG8gUkZDIDMzOTQgc2VjdGlvbiAyLjIuMS4KLSsgKgotKyAq ICBAcGFyYW1baW5dICBrZXkgICAgS2V5IHZhbHVlLiAKLSsgKiAgQHBhcmFtW2luXSAgaXYgICAg IElWIHZhbHVlLiBMZW5ndGggPSA4IGJ5dGVzLiBOVUxMID0gdXNlIGRlZmF1bHRfaXYuCi0rICog IEBwYXJhbVtpbl0gIGluICAgICBQbGFpbiB0ZXh0IGFzIG4gNjQtYml0IGJsb2NrcywgbiA+PSAy LgotKyAqICBAcGFyYW1baW5dICBpbmxlbiAgTGVuZ3RoIG9mIGluLgotKyAqICBAcGFyYW1bb3V0 XSBvdXQgICAgQ2lwaGVyIHRleHQuIE1pbmltYWwgYnVmZmVyIGxlbmd0aCA9IChpbmxlbiArIDgp IGJ5dGVzLgotKyAqICAgICAgICAgICAgICAgICAgICAgSW5wdXQgYW5kIG91dHB1dCBidWZmZXJz IGNhbiBvdmVybGFwIGlmIGJsb2NrIGZ1bmN0aW9uCi0rICogICAgICAgICAgICAgICAgICAgICBz dXBwb3J0cyB0aGF0LgotKyAqICBAcGFyYW1baW5dICBibG9jayAgQmxvY2sgcHJvY2Vzc2luZyBm dW5jdGlvbi4KLSsgKiAgQHJldHVybiAgICAgICAgICAgIDAgaWYgaW5sZW4gZG9lcyBub3QgY29u c2lzdCBvZiBuIDY0LWJpdCBibG9ja3MsIG4gPj0gMi4KLSsgKiAgICAgICAgICAgICAgICAgICAg IG9yIGlmIGlubGVuID4gQ1JZUFRPMTI4X1dSQVBfTUFYLgotKyAqICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0IGxlbmd0aCBpZiB3cmFwcGluZyBzdWNjZWVkZWQuCi0rICovCi0gc2l6ZV90IENS WVBUT18xMjhfd3JhcCh2b2lkICprZXksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKml2LAotICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LAotICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmxlbiwKLUBAIC03Miw3ICs5 OCw3IEBAIHNpemVfdCBDUllQVE9fMTI4X3dyYXAodm9pZCAqa2V5LCBjb25zdAotIHsKLSAgICAg dW5zaWduZWQgY2hhciAqQSwgQlsxNl0sICpSOwotICAgICBzaXplX3QgaSwgaiwgdDsKLS0gICAg aWYgKChpbmxlbiAmIDB4NykgfHwgKGlubGVuIDwgOCkgfHwgKGlubGVuID4gQ1JZUFRPMTI4X1dS QVBfTUFYKSkKLSsgICAgaWYgKChpbmxlbiAmIDB4NykgfHwgKGlubGVuIDwgMTYpIHx8IChpbmxl biA+IENSWVBUTzEyOF9XUkFQX01BWCkpCi0gICAgICAgICByZXR1cm4gMDsKLSAgICAgQSA9IEI7 Ci0gICAgIHQgPSAxOwotQEAgLTEwMCw3ICsxMjYsMjMgQEAgc2l6ZV90IENSWVBUT18xMjhfd3Jh cCh2b2lkICprZXksIGNvbnN0Ci0gICAgIHJldHVybiBpbmxlbiArIDg7Ci0gfQotIAotLXNpemVf dCBDUllQVE9fMTI4X3Vud3JhcCh2b2lkICprZXksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKml2LAot Ky8qKiBVbndyYXBwaW5nIGFjY29yZGluZyB0byBSRkMgMzM5NCBzZWN0aW9uIDIuMi4yIHN0ZXBz IDEtMi4KLSsgKiAgSVYgY2hlY2sgKHN0ZXAgMykgaXMgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNh bGxlci4KLSsgKgotKyAqICBAcGFyYW1baW5dICBrZXkgICAgS2V5IHZhbHVlLiAKLSsgKiAgQHBh cmFtW291dF0gaXYgICAgIFVuY2hlY2tlZCBJViB2YWx1ZS4gTWluaW1hbCBidWZmZXIgbGVuZ3Ro ID0gOCBieXRlcy4KLSsgKiAgQHBhcmFtW291dF0gb3V0ICAgIFBsYWluIHRleHQgd2l0aG91dCBJ Vi4KLSsgKiAgICAgICAgICAgICAgICAgICAgIE1pbmltYWwgYnVmZmVyIGxlbmd0aCA9IChpbmxl biAtIDgpIGJ5dGVzLgotKyAqICAgICAgICAgICAgICAgICAgICAgSW5wdXQgYW5kIG91dHB1dCBi dWZmZXJzIGNhbiBvdmVybGFwIGlmIGJsb2NrIGZ1bmN0aW9uCi0rICogICAgICAgICAgICAgICAg ICAgICBzdXBwb3J0cyB0aGF0LgotKyAqICBAcGFyYW1baW5dICBpbiAgICAgQ2lwaGVydGV4dCB0 ZXh0IGFzIG4gNjQtYml0IGJsb2NrcwotKyAqICBAcGFyYW1baW5dICBpbmxlbiAgTGVuZ3RoIG9m IGluLgotKyAqICBAcGFyYW1baW5dICBibG9jayAgQmxvY2sgcHJvY2Vzc2luZyBmdW5jdGlvbi4K LSsgKiAgQHJldHVybiAgICAgICAgICAgIDAgaWYgaW5sZW4gaXMgb3V0IG9mIHJhbmdlIFsyNCwg Q1JZUFRPMTI4X1dSQVBfTUFYXQotKyAqICAgICAgICAgICAgICAgICAgICAgb3IgaWYgaW5sZW4g aXMgbm90IG11bHRpcGx5IG9mIDguCi0rICogICAgICAgICAgICAgICAgICAgICBPdXRwdXQgbGVu Z3RoIG90aGVyd2lzZS4KLSsgKi8KLStzdGF0aWMgc2l6ZV90IGNyeXB0b18xMjhfdW53cmFwX3Jh dyh2b2lkICprZXksIHVuc2lnbmVkIGNoYXIgKml2LAotICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBjaGFyICpvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVu c2lnbmVkIGNoYXIgKmluLCBzaXplX3QgaW5sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg IGJsb2NrMTI4X2YgYmxvY2spCi1AQCAtMTI4LDExICsxNzAsMTkwIEBAIHNpemVfdCBDUllQVE9f MTI4X3Vud3JhcCh2b2lkICprZXksIGNvbnMKLSAgICAgICAgICAgICBtZW1jcHkoUiwgQiArIDgs IDgpOwotICAgICAgICAgfQotICAgICB9Ci0rICAgIG1lbWNweShpdiwgQSwgOCk7Ci0rICAgIHJl dHVybiBpbmxlbjsKLSt9Ci0rCi0rLyoqIFVud3JhcHBpbmcgYWNjb3JkaW5nIHRvIFJGQyAzMzk0 IHNlY3Rpb24gMi4yLjIgaW5jbHVkaW5nIElWIGNoZWNrLgotKyAqICBGaXJzdCBibG9jayBvZiBw bGFpbiB0ZXh0IGhhdmUgdG8gbWF0Y2ggc3VwcGxpZWQgSVYgb3RoZXJ3aXNlIGFuIGVycm9yIGlz Ci0rICogIHJldHVybmVkLgotKyAqCi0rICogIEBwYXJhbVtpbl0gIGtleSAgICBLZXkgdmFsdWUu IAotKyAqICBAcGFyYW1bb3V0XSBpdiAgICAgVW5jaGVja2VkIElWIHZhbHVlLiBNaW5pbWFsIGJ1 ZmZlciBsZW5ndGggPSA4IGJ5dGVzLgotKyAqICBAcGFyYW1bb3V0XSBvdXQgICAgUGxhaW4gdGV4 dCB3aXRob3V0IElWLgotKyAqICAgICAgICAgICAgICAgICAgICAgTWluaW1hbCBidWZmZXIgbGVu Z3RoID0gKGlubGVuIC0gOCkgYnl0ZXMuCi0rICogICAgICAgICAgICAgICAgICAgICBJbnB1dCBh bmQgb3V0cHV0IGJ1ZmZlcnMgY2FuIG92ZXJsYXAgaWYgYmxvY2sgZnVuY3Rpb24KLSsgKiAgICAg ICAgICAgICAgICAgICAgIHN1cHBvcnRzIHRoYXQuCi0rICogIEBwYXJhbVtpbl0gIGluICAgICBD aXBoZXJ0ZXh0IHRleHQgYXMgbiA2NC1iaXQgYmxvY2tzCi0rICogIEBwYXJhbVtpbl0gIGlubGVu ICBMZW5ndGggb2YgaW4uCi0rICogIEBwYXJhbVtpbl0gIGJsb2NrICBCbG9jayBwcm9jZXNzaW5n IGZ1bmN0aW9uLgotKyAqICBAcmV0dXJuICAgICAgICAgICAgMCBpZiBpbmxlbiBpcyBvdXQgb2Yg cmFuZ2UgWzI0LCBDUllQVE8xMjhfV1JBUF9NQVhdCi0rICogICAgICAgICAgICAgICAgICAgICBv ciBpZiBpbmxlbiBpcyBub3QgbXVsdGlwbHkgb2YgOAotKyAqICAgICAgICAgICAgICAgICAgICAg b3IgaWYgSVYgZG9lc24ndCBtYXRjaCBleHBlY3RlZCB2YWx1ZS4KLSsgKiAgICAgICAgICAgICAg ICAgICAgIE91dHB1dCBsZW5ndGggb3RoZXJ3aXNlLgotKyAqLwotK3NpemVfdCBDUllQVE9fMTI4 X3Vud3JhcCh2b2lkICprZXksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKml2LAotKyAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlu LAotKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5sZW4sIGJsb2NrMTI4X2YgYmxv Y2spCi0rewotKyAgICBzaXplX3QgcmV0OwotKyAgICB1bnNpZ25lZCBjaGFyIGdvdF9pdls4XTsK LSsKLSsgICAgcmV0ID0gY3J5cHRvXzEyOF91bndyYXBfcmF3KGtleSwgZ290X2l2LCBvdXQsIGlu LCBpbmxlbiwgYmxvY2spOwotKyAgICBpZiAocmV0ID09IDApCi0rICAgICAgICByZXR1cm4gMDsK LSsKLSAgICAgaWYgKCFpdikKLSAgICAgICAgIGl2ID0gZGVmYXVsdF9pdjsKLS0gICAgaWYgKG1l bWNtcChBLCBpdiwgOCkpIHsKLSsgICAgaWYgKENSWVBUT19tZW1jbXAoZ290X2l2LCBpdiwgOCkp IHsKLSsgICAgICAgIE9QRU5TU0xfY2xlYW5zZShvdXQsIHJldCk7Ci0rICAgICAgICByZXR1cm4g MDsKLSsgICAgfQotKyAgICByZXR1cm4gcmV0OwotK30KLSsKLSsvKiogV3JhcHBpbmcgYWNjb3Jk aW5nIHRvIFJGQyA1NjQ5IHNlY3Rpb24gNC4xLgotKyAqCi0rICogIEBwYXJhbVtpbl0gIGtleSAg ICBLZXkgdmFsdWUuIAotKyAqICBAcGFyYW1baW5dICBpY3YgICAgKE5vbi1zdGFuZGFyZCkgSVYs IDQgYnl0ZXMuIE5VTEwgPSB1c2UgZGVmYXVsdF9haXYuCi0rICogIEBwYXJhbVtvdXRdIG91dCAg ICBDaXBoZXIgdGV4dC4gTWluaW1hbCBidWZmZXIgbGVuZ3RoID0gKGlubGVuICsgMTUpIGJ5dGVz LgotKyAqICAgICAgICAgICAgICAgICAgICAgSW5wdXQgYW5kIG91dHB1dCBidWZmZXJzIGNhbiBv dmVybGFwIGlmIGJsb2NrIGZ1bmN0aW9uCi0rICogICAgICAgICAgICAgICAgICAgICBzdXBwb3J0 cyB0aGF0LgotKyAqICBAcGFyYW1baW5dICBpbiAgICAgUGxhaW4gdGV4dCBhcyBuIDY0LWJpdCBi bG9ja3MsIG4gPj0gMi4KLSsgKiAgQHBhcmFtW2luXSAgaW5sZW4gIExlbmd0aCBvZiBpbi4KLSsg KiAgQHBhcmFtW2luXSAgYmxvY2sgIEJsb2NrIHByb2Nlc3NpbmcgZnVuY3Rpb24uCi0rICogIEBy ZXR1cm4gICAgICAgICAgICAwIGlmIGlubGVuIGlzIG91dCBvZiByYW5nZSBbMSwgQ1JZUFRPMTI4 X1dSQVBfTUFYXS4KLSsgKiAgICAgICAgICAgICAgICAgICAgIE91dHB1dCBsZW5ndGggaWYgd3Jh cHBpbmcgc3VjY2VlZGVkLgotKyAqLwotK3NpemVfdCBDUllQVE9fMTI4X3dyYXBfcGFkKHZvaWQg KmtleSwgY29uc3QgdW5zaWduZWQgY2hhciAqaWN2LAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGNoYXIgKm91dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGlubGVuLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJsb2NrMTI4X2YgYmxvY2spCi0rewotKyAgICAvKiBuOiBudW1iZXIgb2YgNjQtYml0 IGJsb2NrcyBpbiB0aGUgcGFkZGVkIGtleSBkYXRhICovCi0rICAgIGNvbnN0IHNpemVfdCBibG9j a3NfcGFkZGVkID0gKGlubGVuICsgNykgLyA4OwotKyAgICBjb25zdCBzaXplX3QgcGFkZGVkX2xl biA9IGJsb2Nrc19wYWRkZWQgKiA4OwotKyAgICBjb25zdCBzaXplX3QgcGFkZGluZ19sZW4gPSBw YWRkZWRfbGVuIC0gaW5sZW47Ci0rICAgIC8qIFJGQyA1NjQ5IHNlY3Rpb24gMzogQWx0ZXJuYXRp dmUgSW5pdGlhbCBWYWx1ZSAqLwotKyAgICB1bnNpZ25lZCBjaGFyIGFpdls4XTsKLSsgICAgaW50 IHJldDsKLSsKLSsgICAgLyogU2VjdGlvbiAxOiB1c2UgMzItYml0IGZpeGVkIGZpZWxkIGZvciBw bGFpbnRleHQgb2N0ZXQgbGVuZ3RoICovCi0rICAgIGlmIChpbmxlbiA9PSAwIHx8IGlubGVuID49 IENSWVBUTzEyOF9XUkFQX01BWCkKLSsgICAgICAgIHJldHVybiAwOwotKwotKyAgICAvKiBTZWN0 aW9uIDM6IEFsdGVybmF0aXZlIEluaXRpYWwgVmFsdWUgKi8KLSsgICAgaWYgKCFpY3YpCi0rICAg ICAgICBtZW1jcHkoYWl2LCBkZWZhdWx0X2FpdiwgNCk7Ci0rICAgIGVsc2UKLSsgICAgICAgIG1l bWNweShhaXYsIGljdiwgNCk7ICAgIC8qIFN0YW5kYXJkIGRvZXNuJ3QgbWVudGlvbiB0aGlzLiAq LwotKwotKyAgICBhaXZbNF0gPSAoaW5sZW4gPj4gMjQpICYgMHhGRjsKLSsgICAgYWl2WzVdID0g KGlubGVuID4+IDE2KSAmIDB4RkY7Ci0rICAgIGFpdls2XSA9IChpbmxlbiA+PiA4KSAmIDB4RkY7 Ci0rICAgIGFpdls3XSA9IGlubGVuICYgMHhGRjsKLSsKLSsgICAgaWYgKHBhZGRlZF9sZW4gPT0g OCkgewotKyAgICAgICAgLyogU2VjdGlvbiA0LjEgLSBzcGVjaWFsIGNhc2UgaW4gc3RlcCAyOgot KyAgICAgICAgICogSWYgdGhlIHBhZGRlZCBwbGFpbnRleHQgY29udGFpbnMgZXhhY3RseSBlaWdo dCBvY3RldHMsIHRoZW4KLSsgICAgICAgICAqIHByZXBlbmQgdGhlIEFJViBhbmQgZW5jcnlwdCB0 aGUgcmVzdWx0aW5nIDEyOC1iaXQgYmxvY2sKLSsgICAgICAgICAqIHVzaW5nIEFFUyBpbiBFQ0Ig bW9kZS4gKi8KLSsgICAgICAgIG1lbW1vdmUob3V0ICsgOCwgaW4sIGlubGVuKTsKLSsgICAgICAg IG1lbWNweShvdXQsIGFpdiwgOCk7Ci0rICAgICAgICBtZW1zZXQob3V0ICsgOCArIGlubGVuLCAw LCBwYWRkaW5nX2xlbik7Ci0rICAgICAgICBibG9jayhvdXQsIG91dCwga2V5KTsKLSsgICAgICAg IHJldCA9IDE2OyAgICAgICAgICAgICAgIC8qIEFJViArIHBhZGRlZCBpbnB1dCAqLwotKyAgICB9 IGVsc2UgewotKyAgICAgICAgbWVtbW92ZShvdXQsIGluLCBpbmxlbik7Ci0rICAgICAgICBtZW1z ZXQob3V0ICsgaW5sZW4sIDAsIHBhZGRpbmdfbGVuKTsgLyogU2VjdGlvbiA0LjEgc3RlcCAxICov Ci0rICAgICAgICByZXQgPSBDUllQVE9fMTI4X3dyYXAoa2V5LCBhaXYsIG91dCwgb3V0LCBwYWRk ZWRfbGVuLCBibG9jayk7Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rLyoq IFVud3JhcHBpbmcgYWNjb3JkaW5nIHRvIFJGQyA1NjQ5IHNlY3Rpb24gNC4yLgotKyAqCi0rICog IEBwYXJhbVtpbl0gIGtleSAgICBLZXkgdmFsdWUuIAotKyAqICBAcGFyYW1baW5dICBpY3YgICAg KE5vbi1zdGFuZGFyZCkgSVYsIDQgYnl0ZXMuIE5VTEwgPSB1c2UgZGVmYXVsdF9haXYuCi0rICog IEBwYXJhbVtvdXRdIG91dCAgICBQbGFpbiB0ZXh0LiBNaW5pbWFsIGJ1ZmZlciBsZW5ndGggPSBp bmxlbiBieXRlcy4KLSsgKiAgICAgICAgICAgICAgICAgICAgIElucHV0IGFuZCBvdXRwdXQgYnVm ZmVycyBjYW4gb3ZlcmxhcCBpZiBibG9jayBmdW5jdGlvbgotKyAqICAgICAgICAgICAgICAgICAg ICAgc3VwcG9ydHMgdGhhdC4KLSsgKiAgQHBhcmFtW2luXSAgaW4gICAgIENpcGhlcnRleHQgdGV4 dCBhcyBuIDY0LWJpdCBibG9ja3MKLSsgKiAgQHBhcmFtW2luXSAgaW5sZW4gIExlbmd0aCBvZiBp bi4KLSsgKiAgQHBhcmFtW2luXSAgYmxvY2sgIEJsb2NrIHByb2Nlc3NpbmcgZnVuY3Rpb24uCi0r ICogIEByZXR1cm4gICAgICAgICAgICAwIGlmIGlubGVuIGlzIG91dCBvZiByYW5nZSBbMTYsIENS WVBUTzEyOF9XUkFQX01BWF0sCi0rICogICAgICAgICAgICAgICAgICAgICBvciBpZiBpbmxlbiBp cyBub3QgbXVsdGlwbHkgb2YgOAotKyAqICAgICAgICAgICAgICAgICAgICAgb3IgaWYgSVYgYW5k IG1lc3NhZ2UgbGVuZ3RoIGluZGljYXRvciBkb2Vzbid0IG1hdGNoLgotKyAqICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0IGxlbmd0aCBpZiB1bndyYXBwaW5nIHN1Y2NlZWRlZCBhbmQgSVYgbWF0 Y2hlcy4KLSsgKi8KLStzaXplX3QgQ1JZUFRPXzEyOF91bndyYXBfcGFkKHZvaWQgKmtleSwgY29u c3QgdW5zaWduZWQgY2hhciAqaWN2LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgY2hhciAqb3V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5z aWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmxlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJsb2NrMTI4X2YgYmxvY2spCi0rewotKyAgICAvKiBuOiBudW1iZXIgb2YgNjQtYml0IGJs b2NrcyBpbiB0aGUgcGFkZGVkIGtleSBkYXRhICovCi0rICAgIHNpemVfdCBuID0gaW5sZW4gLyA4 IC0gMTsKLSsgICAgc2l6ZV90IHBhZGRlZF9sZW47Ci0rICAgIHNpemVfdCBwYWRkaW5nX2xlbjsK LSsgICAgc2l6ZV90IHB0ZXh0X2xlbjsKLSsgICAgLyogUkZDIDU2NDkgc2VjdGlvbiAzOiBBbHRl cm5hdGl2ZSBJbml0aWFsIFZhbHVlICovCi0rICAgIHVuc2lnbmVkIGNoYXIgYWl2WzhdOwotKyAg ICBzdGF0aWMgdW5zaWduZWQgY2hhciB6ZXJvc1s4XSA9IHsgMHgwIH07Ci0rICAgIHNpemVfdCBy ZXQ7Ci0rCi0rICAgIC8qIFNlY3Rpb24gNC4yOiBDaXBoZXIgdGV4dCBsZW5ndGggaGFzIHRvIGJl IChuKzEpIDY0LWJpdCBibG9ja3MuICovCi0rICAgIGlmICgoaW5sZW4gJiAweDcpICE9IDAgfHwg aW5sZW4gPCAxNiB8fCBpbmxlbiA+PSBDUllQVE8xMjhfV1JBUF9NQVgpCi0rICAgICAgICByZXR1 cm4gMDsKLSsKLSsgICAgbWVtbW92ZShvdXQsIGluLCBpbmxlbik7Ci0rICAgIGlmIChpbmxlbiA9 PSAxNikgewotKyAgICAgICAgLyogU2VjdGlvbiA0LjIgLSBzcGVjaWFsIGNhc2UgaW4gc3RlcCAx OgotKyAgICAgICAgICogV2hlbiBuPTEsIHRoZSBjaXBoZXJ0ZXh0IGNvbnRhaW5zIGV4YWN0bHkg dHdvIDY0LWJpdAotKyAgICAgICAgICogYmxvY2tzIGFuZCB0aGV5IGFyZSBkZWNyeXB0ZWQgYXMg YSBzaW5nbGUgQUVTCi0rICAgICAgICAgKiBibG9jayB1c2luZyBBRVMgaW4gRUNCIG1vZGU6Ci0r ICAgICAgICAgKiBBSVYgfCBQWzFdID0gREVDKEssIENbMF0gfCBDWzFdKQotKyAgICAgICAgICov Ci0rICAgICAgICBibG9jayhvdXQsIG91dCwga2V5KTsKLSsgICAgICAgIG1lbWNweShhaXYsIG91 dCwgOCk7Ci0rICAgICAgICAvKiBSZW1vdmUgQUlWICovCi0rICAgICAgICBtZW1tb3ZlKG91dCwg b3V0ICsgOCwgOCk7Ci0rICAgICAgICBwYWRkZWRfbGVuID0gODsKLSsgICAgfSBlbHNlIHsKLSsg ICAgICAgIHBhZGRlZF9sZW4gPSBpbmxlbiAtIDg7Ci0rICAgICAgICByZXQgPSBjcnlwdG9fMTI4 X3Vud3JhcF9yYXcoa2V5LCBhaXYsIG91dCwgb3V0LCBpbmxlbiwgYmxvY2spOwotKyAgICAgICAg aWYgKHBhZGRlZF9sZW4gIT0gcmV0KSB7Ci0gICAgICAgICBPUEVOU1NMX2NsZWFuc2Uob3V0LCBp bmxlbik7Ci0gICAgICAgICByZXR1cm4gMDsKLSAgICAgfQotLSAgICByZXR1cm4gaW5sZW47Ci0r ICAgIH0KLSsKLSsgICAgLyogU2VjdGlvbiAzOiBBSVYgY2hlY2tzOiBDaGVjayB0aGF0IE1TQigz MixBKSA9IEE2NTk1OUE2LgotKyAgICAgKiBPcHRpb25hbGx5IGEgdXNlci1zdXBwbGllZCB2YWx1 ZSBjYW4gYmUgdXNlZAotKyAgICAgKiAoZXZlbiBpZiBzdGFuZGFyZCBkb2Vzbid0IG1lbnRpb24g dGhpcykuICovCi0rICAgIGlmICgoIWljdiAmJiBDUllQVE9fbWVtY21wKGFpdiwgZGVmYXVsdF9h aXYsIDQpKQotKyAgICAgICAgfHwgKGljdiAmJiBDUllQVE9fbWVtY21wKGFpdiwgaWN2LCA0KSkp IHsKLSsgICAgICAgIE9QRU5TU0xfY2xlYW5zZShvdXQsIGlubGVuKTsKLSsgICAgICAgIHJldHVy biAwOwotKyAgICB9Ci0rCi0rICAgIC8qIENoZWNrIHRoYXQgOCoobi0xKSA8IExTQigzMixBSVYp IDw9IDgqbi4KLSsgICAgICogSWYgc28sIGxldCBwdGV4dF9sZW4gPSBMU0IoMzIsQUlWKS4gKi8K LSsKLSsgICAgcHRleHRfbGVuID0gKGFpdls0XSA8PCAyNCkgfCAoYWl2WzVdIDw8IDE2KSB8IChh aXZbNl0gPDwgOCkgfCBhaXZbN107Ci0rICAgIGlmICg4ICogKG4gLSAxKSA+PSBwdGV4dF9sZW4g fHwgcHRleHRfbGVuID4gOCAqIG4pIHsKLSsgICAgICAgIE9QRU5TU0xfY2xlYW5zZShvdXQsIGlu bGVuKTsKLSsgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rICAgIC8qIENoZWNrIHRoYXQg dGhlIHJpZ2h0bW9zdCBwYWRkaW5nX2xlbiBvY3RldHMgb2YgdGhlIG91dHB1dCBkYXRhCi0rICAg ICAqIGFyZSB6ZXJvLiAqLwotKyAgICBwYWRkaW5nX2xlbiA9IHBhZGRlZF9sZW4gLSBwdGV4dF9s ZW47Ci0rICAgIGlmIChDUllQVE9fbWVtY21wKG91dCArIHB0ZXh0X2xlbiwgemVyb3MsIHBhZGRp bmdfbGVuKSAhPSAwKSB7Ci0rICAgICAgICBPUEVOU1NMX2NsZWFuc2Uob3V0LCBpbmxlbik7Ci0r ICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKyAgICAvKiBTZWN0aW9uIDQuMiBzdGVwIDM6 IFJlbW92ZSBwYWRkaW5nICovCi0rICAgIHJldHVybiBwdGV4dF9sZW47Ci0gfQoKZGlmZiAtLWdp dCBhL29wZW5zc2wtMS4wLjJnLWRpc2FibGUtc3NsdjJ2My5wYXRjaCBiL29wZW5zc2wtMS4wLjJn LWRpc2FibGUtc3NsdjJ2My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZm NTEzMi4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4yZy1kaXNhYmxlLXNzbHYydjMucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yZy9z c2wvc3NsX2xpYi5jLnYydjMgb3BlbnNzbC0xLjAuMmcvc3NsL3NzbF9saWIuYwotLS0tIG9wZW5z c2wtMS4wLjJnL3NzbC9zc2xfbGliLmMudjJ2MwkyMDE2LTAzLTAxIDE2OjM4OjI2Ljg3OTE0MjAy MSArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJnL3NzbC9zc2xfbGliLmMJMjAxNi0wMy0wMSAxNjo0 MTozMi45NzczNTM3NjkgKzAxMDAKLUBAIC0yMDU1LDExICsyMDU1LDExIEBAIFNTTF9DVFggKlNT TF9DVFhfbmV3KGNvbnN0IFNTTF9NRVRIT0QgKm0KLSAgICAgcmV0LT5vcHRpb25zIHw9IFNTTF9P UF9MRUdBQ1lfU0VSVkVSX0NPTk5FQ1Q7Ci0gCi0gICAgIC8qCi0tICAgICAqIERpc2FibGUgU1NM djIgYnkgZGVmYXVsdCwgY2FsbGVycyB0aGF0IHdhbnQgdG8gZW5hYmxlIFNTTHYyIHdpbGwgaGF2 ZSB0bwotLSAgICAgKiBleHBsaWNpdGx5IGNsZWFyIHRoaXMgb3B0aW9uIHZpYSBlaXRoZXIgb2Yg U1NMX0NUWF9jbGVhcl9vcHRpb25zKCkgb3IKLSsgICAgICogRGlzYWJsZSBTU0x2MiBhbmQgU1NM djMgYnkgZGVmYXVsdCwgY2FsbGVycyB0aGF0IHdhbnQgdG8gZW5hYmxlIHRoZXNlIHdpbGwgaGF2 ZSB0bwotKyAgICAgKiBleHBsaWNpdGx5IGNsZWFyIHRoZXNlIG9wdGlvbnMgdmlhIGVpdGhlciBv ZiBTU0xfQ1RYX2NsZWFyX29wdGlvbnMoKSBvcgotICAgICAgKiBTU0xfY2xlYXJfb3B0aW9ucygp LgotICAgICAgKi8KLS0gICAgcmV0LT5vcHRpb25zIHw9IFNTTF9PUF9OT19TU0x2MjsKLSsgICAg cmV0LT5vcHRpb25zIHw9IFNTTF9PUF9OT19TU0x2MiB8IFNTTF9PUF9OT19TU0x2MzsKLSAKLSAg ICAgcmV0dXJuIChyZXQpOwotICBlcnI6CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMmctbWFu Zml4LnBhdGNoIGIvb3BlbnNzbC0xLjAuMmctbWFuZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAxMmU1MTAzLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjJnLW1hbmZp eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjJnL2RvYy9hcHBzL2VjLnBvZC5tYW5maXggb3BlbnNzbC0xLjAuMmcvZG9jL2FwcHMvZWMu cG9kCi0tLS0gb3BlbnNzbC0xLjAuMmcvZG9jL2FwcHMvZWMucG9kLm1hbmZpeAkyMDE2LTAzLTAx IDE0OjM1OjA1LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJnL2RvYy9hcHBzL2Vj LnBvZAkyMDE2LTAzLTAxIDE2OjQ3OjM1LjMzMTU2ODI5MCArMDEwMAotQEAgLTkzLDEwICs5Myw2 IEBAIHByaW50cyBvdXQgdGhlIHB1YmxpYywgcHJpdmF0ZSBrZXkgY29tcG8KLSAKLSB0aGlzIG9w dGlvbiBwcmV2ZW50cyBvdXRwdXQgb2YgdGhlIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUga2V5Lgot IAotLT1pdGVtIEI8LW1vZHVsdXM+Ci0tCi0tdGhpcyBvcHRpb24gcHJpbnRzIG91dCB0aGUgdmFs dWUgb2YgdGhlIHB1YmxpYyBrZXkgY29tcG9uZW50IG9mIHRoZSBrZXkuCi0tCi0gPWl0ZW0gQjwt cHViaW4+Ci0gCi0gYnkgZGVmYXVsdCBhIHByaXZhdGUga2V5IGlzIHJlYWQgZnJvbSB0aGUgaW5w dXQgZmlsZTogd2l0aCB0aGlzIG9wdGlvbiBhCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yZy9kb2Mv YXBwcy9vcGVuc3NsLnBvZC5tYW5maXggb3BlbnNzbC0xLjAuMmcvZG9jL2FwcHMvb3BlbnNzbC5w b2QKLS0tLSBvcGVuc3NsLTEuMC4yZy9kb2MvYXBwcy9vcGVuc3NsLnBvZC5tYW5maXgJMjAxNi0w My0wMSAxNDozNTowNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4yZy9kb2MvYXBw cy9vcGVuc3NsLnBvZAkyMDE2LTAzLTAxIDE2OjQ3OjM1LjMzMTU2ODI5MCArMDEwMAotQEAgLTE2 Myw3ICsxNjMsNyBAQCBDcmVhdGUgb3IgZXhhbWluZSBhIG5ldHNjYXBlIGNlcnRpZmljYXRlCi0g Ci0gT25saW5lIENlcnRpZmljYXRlIFN0YXR1cyBQcm90b2NvbCB1dGlsaXR5LgotIAotLT1pdGVt IEw8QjxwYXNzd2Q+fHBhc3N3ZCgxKT4KLSs9aXRlbSBMPEI8cGFzc3dkPnxzc2xwYXNzd2QoMSk+ Ci0gCi0gR2VuZXJhdGlvbiBvZiBoYXNoZWQgcGFzc3dvcmRzLgotIAotQEAgLTE4Nyw3ICsxODcs NyBAQCBQdWJsaWMga2V5IGFsZ29yaXRobSBwYXJhbWV0ZXIgbWFuYWdlbWVuCi0gCi0gUHVibGlj IGtleSBhbGdvcml0aG0gY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb24gdXRpbGl0eS4KLSAKLS09aXRl bSBMPEI8cmFuZD58cmFuZCgxKT4KLSs9aXRlbSBMPEI8cmFuZD58c3NscmFuZCgxKT4KLSAKLSBH ZW5lcmF0ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzLgotIAotQEAgLTQwMSw5ICs0MDEsOSBAQCBMPGNy bCgxKXxjcmwoMSk+LCBMPGNybDJwa2NzNygxKXxjcmwycGtjCi0gTDxkaHBhcmFtKDEpfGRocGFy YW0oMSk+LCBMPGRzYSgxKXxkc2EoMSk+LCBMPGRzYXBhcmFtKDEpfGRzYXBhcmFtKDEpPiwKLSBM PGVuYygxKXxlbmMoMSk+LCBMPGdlbmRzYSgxKXxnZW5kc2EoMSk+LCBMPGdlbnBrZXkoMSl8Z2Vu cGtleSgxKT4sCi0gTDxnZW5yc2EoMSl8Z2VucnNhKDEpPiwgTDxuc2VxKDEpfG5zZXEoMSk+LCBM PG9wZW5zc2woMSl8b3BlbnNzbCgxKT4sCi0tTDxwYXNzd2QoMSl8cGFzc3dkKDEpPiwKLStMPHNz bHBhc3N3ZCgxKXxzc2xwYXNzd2QoMSk+LAotIEw8cGtjczEyKDEpfHBrY3MxMigxKT4sIEw8cGtj czcoMSl8cGtjczcoMSk+LCBMPHBrY3M4KDEpfHBrY3M4KDEpPiwKLS1MPHJhbmQoMSl8cmFuZCgx KT4sIEw8cmVxKDEpfHJlcSgxKT4sIEw8cnNhKDEpfHJzYSgxKT4sCi0rTDxzc2xyYW5kKDEpfHNz bHJhbmQoMSk+LCBMPHJlcSgxKXxyZXEoMSk+LCBMPHJzYSgxKXxyc2EoMSk+LAotIEw8cnNhdXRs KDEpfHJzYXV0bCgxKT4sIEw8c19jbGllbnQoMSl8c19jbGllbnQoMSk+LAotIEw8c19zZXJ2ZXIo MSl8c19zZXJ2ZXIoMSk+LCBMPHNfdGltZSgxKXxzX3RpbWUoMSk+LAotIEw8c21pbWUoMSl8c21p bWUoMSk+LCBMPHNwa2FjKDEpfHNwa2FjKDEpPiwKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJnL2Rv Yy9hcHBzL3NfY2xpZW50LnBvZC5tYW5maXggb3BlbnNzbC0xLjAuMmcvZG9jL2FwcHMvc19jbGll bnQucG9kCi0tLS0gb3BlbnNzbC0xLjAuMmcvZG9jL2FwcHMvc19jbGllbnQucG9kLm1hbmZpeAky MDE2LTAzLTAxIDE0OjM1OjUzLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJnL2Rv Yy9hcHBzL3NfY2xpZW50LnBvZAkyMDE2LTAzLTAxIDE2OjQ3OjM1LjM1ODU2ODkwMiArMDEwMAot QEAgLTM1LDYgKzM1LDkgQEAgQjxvcGVuc3NsPiBCPHNfY2xpZW50PgotIFtCPC1zc2wyPl0KLSBb Qjwtc3NsMz5dCi0gW0I8LXRsczE+XQotK1tCPC10bHMxXzE+XQotK1tCPC10bHMxXzI+XQotK1tC PC1kdGxzMT5dCi0gW0I8LW5vX3NzbDI+XQotIFtCPC1ub19zc2wzPl0KLSBbQjwtbm9fdGxzMT5d Ci1AQCAtMjAxLDcgKzIwNCw3IEBAIFVzZSB0aGUgUFNLIGtleSBCPGtleT4gd2hlbiB1c2luZyBh IFBTSwotIGdpdmVuIGFzIGEgaGV4YWRlY2ltYWwgbnVtYmVyIHdpdGhvdXQgbGVhZGluZyAweCwg Zm9yIGV4YW1wbGUgLXBzawotIDFhMmIzYzRkLgotIAotLT1pdGVtIEI8LXNzbDI+LCBCPC1zc2wz PiwgQjwtdGxzMT4sIEI8LXRsczFfMT4sIEI8LXRsczFfMj4sIEI8LW5vX3NzbDI+LCBCPC1ub19z c2wzPiwgQjwtbm9fdGxzMT4sIEI8LW5vX3RsczFfMT4sIEI8LW5vX3RsczFfMj4KLSs9aXRlbSBC PC1zc2wyPiwgQjwtc3NsMz4sIEI8LXRsczE+LCBCPC10bHMxXzE+LCBCPC10bHMxXzI+LCBCPC1k dGxzMT4sIEI8LW5vX3NzbDI+LCBCPC1ub19zc2wzPiwgQjwtbm9fdGxzMT4sIEI8LW5vX3RsczFf MT4sIEI8LW5vX3RsczFfMj4KLSAKLSBUaGVzZSBvcHRpb25zIHJlcXVpcmUgb3IgZGlzYWJsZSB0 aGUgdXNlIG9mIHRoZSBzcGVjaWZpZWQgU1NMIG9yIFRMUyBwcm90b2NvbHMuCi0gQnkgZGVmYXVs dCB0aGUgaW5pdGlhbCBoYW5kc2hha2UgdXNlcyBhIEk8dmVyc2lvbi1mbGV4aWJsZT4gbWV0aG9k IHdoaWNoIHdpbGwKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJnL2RvYy9hcHBzL3Nfc2VydmVyLnBv ZC5tYW5maXggb3BlbnNzbC0xLjAuMmcvZG9jL2FwcHMvc19zZXJ2ZXIucG9kCi0tLS0gb3BlbnNz bC0xLjAuMmcvZG9jL2FwcHMvc19zZXJ2ZXIucG9kLm1hbmZpeAkyMDE2LTAzLTAxIDE0OjM1OjUz LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJnL2RvYy9hcHBzL3Nfc2VydmVyLnBv ZAkyMDE2LTAzLTAxIDE2OjQ3OjM1LjM1OTU2ODkyNSArMDEwMAotQEAgLTQyLDYgKzQyLDggQEAg QjxvcGVuc3NsPiBCPHNfc2VydmVyPgotIFtCPC1zc2wyPl0KLSBbQjwtc3NsMz5dCi0gW0I8LXRs czE+XQotK1tCPC10bHMxXzE+XQotK1tCPC10bHMxXzI+XQotIFtCPC1ub19zc2wyPl0KLSBbQjwt bm9fc3NsMz5dCi0gW0I8LW5vX3RsczE+XQotQEAgLTIxNyw3ICsyMTksNyBAQCBVc2UgdGhlIFBT SyBrZXkgQjxrZXk+IHdoZW4gdXNpbmcgYSBQU0sKLSBnaXZlbiBhcyBhIGhleGFkZWNpbWFsIG51 bWJlciB3aXRob3V0IGxlYWRpbmcgMHgsIGZvciBleGFtcGxlIC1wc2sKLSAxYTJiM2M0ZC4KLSAK LS09aXRlbSBCPC1zc2wyPiwgQjwtc3NsMz4sIEI8LXRsczE+LCBCPC10bHMxXzE+LCBCPC10bHMx XzI+LCBCPC1ub19zc2wyPiwgQjwtbm9fc3NsMz4sIEI8LW5vX3RsczE+LCBCPC1ub190bHMxXzE+ LCBCPC1ub190bHMxXzI+Ci0rPWl0ZW0gQjwtc3NsMj4sIEI8LXNzbDM+LCBCPC10bHMxPiwgQjwt dGxzMV8xPiwgQjwtdGxzMV8yPiwgQjwtZHRsczE+LCBCPC1ub19zc2wyPiwgQjwtbm9fc3NsMz4s IEI8LW5vX3RsczE+LCBCPC1ub190bHMxXzE+LCBCPC1ub190bHMxXzI+Ci0gCi0gVGhlc2Ugb3B0 aW9ucyByZXF1aXJlIG9yIGRpc2FibGUgdGhlIHVzZSBvZiB0aGUgc3BlY2lmaWVkIFNTTCBvciBU TFMgcHJvdG9jb2xzLgotIEJ5IGRlZmF1bHQgdGhlIGluaXRpYWwgaGFuZHNoYWtlIHVzZXMgYSBJ PHZlcnNpb24tZmxleGlibGU+IG1ldGhvZCB3aGljaCB3aWxsCgpkaWZmIC0tZ2l0IGEvb3BlbnNz bC0xLjAuMmgtcGtnY29uZmlnLnBhdGNoIGIvb3BlbnNzbC0xLjAuMmgtcGtnY29uZmlnLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODEwMTU3Li4wMDAwMDAwCi0tLSBhL29w ZW5zc2wtMS4wLjJoLXBrZ2NvbmZpZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAg QEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJoL01ha2VmaWxlLm9yZy5wa2djb25maWcgb3BlbnNz bC0xLjAuMmgvTWFrZWZpbGUub3JnCi0tLS0gb3BlbnNzbC0xLjAuMmgvTWFrZWZpbGUub3JnLnBr Z2NvbmZpZwkyMDE2LTA1LTAzIDE4OjA2OjQ1Ljg2OTgzNDczMCArMDIwMAotKysrIG9wZW5zc2wt MS4wLjJoL01ha2VmaWxlLm9yZwkyMDE2LTA2LTI3IDEyOjA0OjE1LjQ0NDI0NTAxOCArMDIwMAot QEAgLTM3Nyw3ICszNzcsNyBAQCBsaWJjcnlwdG8ucGM6IE1ha2VmaWxlCi0gCSAgICBlY2hvICdS ZXF1aXJlczogJzsgXAotIAkgICAgZWNobyAnTGliczogLUwkJHtsaWJkaXJ9IC1sY3J5cHRvJzsg XAotIAkgICAgZWNobyAnTGlicy5wcml2YXRlOiAkKEVYX0xJQlMpJzsgXAotLQkgICAgZWNobyAn Q2ZsYWdzOiAtSSQke2luY2x1ZGVkaXJ9ICQoS1JCNV9JTkNMVURFUyknICkgPiBsaWJjcnlwdG8u cGMKLSsJICAgIGVjaG8gJ0NmbGFnczogLUkkJHtpbmNsdWRlZGlyfScgKSA+IGxpYmNyeXB0by5w YwotIAotIGxpYnNzbC5wYzogTWFrZWZpbGUKLSAJQCAoIGVjaG8gJ3ByZWZpeD0kKElOU1RBTExU T1ApJzsgXAotQEAgLTM4OCw5ICszODgsOSBAQCBsaWJzc2wucGM6IE1ha2VmaWxlCi0gCSAgICBl Y2hvICdOYW1lOiBPcGVuU1NMLWxpYnNzbCc7IFwKLSAJICAgIGVjaG8gJ0Rlc2NyaXB0aW9uOiBT ZWN1cmUgU29ja2V0cyBMYXllciBhbmQgY3J5cHRvZ3JhcGh5IGxpYnJhcmllcyc7IFwKLSAJICAg IGVjaG8gJ1ZlcnNpb246ICckKFZFUlNJT04pOyBcCi0tCSAgICBlY2hvICdSZXF1aXJlcy5wcml2 YXRlOiBsaWJjcnlwdG8nOyBcCi0rCSAgICBlY2hvICdSZXF1aXJlczogbGliY3J5cHRvJzsgXAot IAkgICAgZWNobyAnTGliczogLUwkJHtsaWJkaXJ9IC1sc3NsJzsgXAotLQkgICAgZWNobyAnTGli cy5wcml2YXRlOiAkKEVYX0xJQlMpJzsgXAotKwkgICAgZWNobyAnTGlicy5wcml2YXRlOiAkKEVY X0xJQlMpICQoTElCS1JCNSknOyBcCi0gCSAgICBlY2hvICdDZmxhZ3M6IC1JJCR7aW5jbHVkZWRp cn0gJChLUkI1X0lOQ0xVREVTKScgKSA+IGxpYnNzbC5wYwotIAotIG9wZW5zc2wucGM6IE1ha2Vm aWxlCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMmktY2hpbC1maXhlcy5wYXRjaCBiL29wZW5z c2wtMS4wLjJpLWNoaWwtZml4ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGM3ZjE4MjAuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMmktY2hpbC1maXhlcy5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2Vu Z2luZXMvZV9jaGlsLmMuY2hpbCBvcGVuc3NsLTEuMC4yaS9lbmdpbmVzL2VfY2hpbC5jCi0tLS0g b3BlbnNzbC0xLjAuMmkvZW5naW5lcy9lX2NoaWwuYy5jaGlsCTIwMTYtMDktMjIgMTI6MjM6MDYu MDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvZW5naW5lcy9lX2NoaWwuYwkyMDE2 LTA5LTIyIDEzOjQ5OjMyLjUzMjAxNzEwMiArMDIwMAotQEAgLTEyNzQsNiArMTI3NCwxMSBAQCBz dGF0aWMgaW50IGh3Y3Joa19pbnNlcnRfY2FyZChjb25zdCBjaGFyCi0gICAgIFVJICp1aTsKLSAg ICAgdm9pZCAqY2FsbGJhY2tfZGF0YSA9IE5VTEw7Ci0gICAgIFVJX01FVEhPRCAqdWlfbWV0aG9k ID0gTlVMTDsKLSsgICAgLyogRGVzcGl0ZSB3aGF0IHRoZSBkb2N1bWVudGF0aW9uIHNheXMgcHJv bXB0X2luZm8gY2FuIGJlCi0rICAgICAqIGFuIGVtcHR5IHN0cmluZy4KLSsgICAgICovCi0rICAg IGlmIChwcm9tcHRfaW5mbyAmJiAhKnByb21wdF9pbmZvKQotKyAgICAgICAgcHJvbXB0X2luZm8g PSBOVUxMOwotIAotICAgICBpZiAoY2FjdHgpIHsKLSAgICAgICAgIGlmIChjYWN0eC0+dWlfbWV0 aG9kKQoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJpLWVuYy1mYWlsLnBhdGNoIGIvb3BlbnNz bC0xLjAuMmktZW5jLWZhaWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgx OWEzZmMuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMmktZW5jLWZhaWwucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8v ZXZwL2Jpb19lbmMuYy5lbmMtZmFpbCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZwL2Jpb19lbmMu YwotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9ldnAvYmlvX2VuYy5jLmVuYy1mYWlsCTIwMTYt MDktMjIgMTI6MjM6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvY3J5cHRv L2V2cC9iaW9fZW5jLmMJMjAxNi0wOS0yMiAxMzo1ODoyNC41OTIzODEwMDIgKzAyMDAKLUBAIC0z MDcsOCArMzA3LDkgQEAgc3RhdGljIGxvbmcgZW5jX2N0cmwoQklPICpiLCBpbnQgY21kLCBsbwot ICAgICBjYXNlIEJJT19DVFJMX1JFU0VUOgotICAgICAgICAgY3R4LT5vayA9IDE7Ci0gICAgICAg ICBjdHgtPmZpbmlzaGVkID0gMDsKLS0gICAgICAgIEVWUF9DaXBoZXJJbml0X2V4KCYoY3R4LT5j aXBoZXIpLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgY3R4LT5jaXBoZXIuZW5jcnlwdCk7Ci0rICAgICAgICBpZiAoIUVWUF9DaXBoZXJJbml0X2V4 KCYoY3R4LT5jaXBoZXIpLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjdHgtPmNpcGhlci5lbmNyeXB0KSkKLSsgICAgICAgICAgICAgY3R4 LT5vayA9IDA7Ci0gICAgICAgICByZXQgPSBCSU9fY3RybChiLT5uZXh0X2JpbywgY21kLCBudW0s IHB0cik7Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBCSU9fQ1RSTF9FT0Y6ICAgICAgICAg LyogTW9yZSB0byByZWFkICovCi1AQCAtNDMwLDcgKzQzMSw4IEBAIHZvaWQgQklPX3NldF9jaXBo ZXIoQklPICpiLCBjb25zdCBFVlBfQ0kKLSAKLSAgICAgYi0+aW5pdCA9IDE7Ci0gICAgIGN0eCA9 IChCSU9fRU5DX0NUWCAqKWItPnB0cjsKLS0gICAgRVZQX0NpcGhlckluaXRfZXgoJihjdHgtPmNp cGhlciksIGMsIE5VTEwsIGssIGksIGUpOwotKyAgICBpZiAoIUVWUF9DaXBoZXJJbml0X2V4KCYo Y3R4LT5jaXBoZXIpLCBjLCBOVUxMLCBrLCBpLCBlKSkKLSsgICAgICAgIGN0eC0+b2sgPSAwOwot IAotICAgICBpZiAoYi0+Y2FsbGJhY2sgIT0gTlVMTCkKLSAgICAgICAgIGItPmNhbGxiYWNrKGIs IEJJT19DQl9DVFJMLCAoY29uc3QgY2hhciAqKWMsIEJJT19DVFJMX1NFVCwgZSwgMUwpOwoKZGlm ZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJpLWVuZ2luZXNkaXIucGF0Y2ggYi9vcGVuc3NsLTEuMC4y aS1lbmdpbmVzZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjJlZjFi Li4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjJpLWVuZ2luZXNkaXIucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSw4MyArMCwwIEBACi1kaWZmIC0tZ2l0IGEvQ29uZmlndXJlIGIvQ29uZmlndXJl Ci1pbmRleCBjMzlmNzFhLi43ZjNkOTA1IDEwMDc1NQotLS0tIGEvQ29uZmlndXJlCi0rKysgYi9D b25maWd1cmUKLUBAIC03MjcsNiArNzI3LDcgQEAgbXkgJGlkeF9tdWx0aWxpYiA9ICRpZHgrKzsK LSBteSAkcHJlZml4PSIiOwotIG15ICRsaWJkaXI9IiI7Ci0gbXkgJG9wZW5zc2xkaXI9IiI7Ci0r bXkgJGVuZ2luZXNkaXI9IiI7Ci0gbXkgJGV4ZV9leHQ9IiI7Ci0gbXkgJGluc3RhbGxfcHJlZml4 PSAiJEVOVnsnSU5TVEFMTF9QUkVGSVgnfSI7Ci0gbXkgJGNyb3NzX2NvbXBpbGVfcHJlZml4PSIi OwotQEAgLTk1Niw2ICs5NTcsMTAgQEAgUFJPQ0VTU19BUkdTOgotIAkJCQl7Ci0gCQkJCSRvcGVu c3NsZGlyPSQxOwotIAkJCQl9Ci0rCQkJZWxzaWYgKC9eLS1lbmdpbmVzZGlyPSguKikkLykKLSsJ CQkJewotKwkJCQkkZW5naW5lc2Rpcj0kMTsKLSsJCQkJfQotIAkJCWVsc2lmICgvXi0taW5zdGFs bC5wcmVmaXg9KC4qKSQvKQotIAkJCQl7Ci0gCQkJCSRpbnN0YWxsX3ByZWZpeD0kMTsKLUBAIC0x MjA3LDcgKzEyMTIsNyBAQCBjaG9wICRwcmVmaXggaWYgJHByZWZpeCA9fiAvLlwvJC87Ci0gCi0g JG9wZW5zc2xkaXI9JHByZWZpeCAuICIvc3NsIiBpZiAkb3BlbnNzbGRpciBlcSAiIjsKLSAkb3Bl bnNzbGRpcj0kcHJlZml4IC4gIi8iIC4gJG9wZW5zc2xkaXIgaWYgJG9wZW5zc2xkaXIgIX4gLyhe XC98XlthLXpBLVpdOltcXFwvXSkvOwotLQotKyRlbmdpbmVzZGlyPSIkcHJlZml4L2xpYi9lbmdp bmVzIiBpZiAkZW5naW5lc2RpciBlcSAiIjsKLSAKLSBwcmludCAiSXNNSzFNRj0kSXNNSzFNRlxu IjsKLSAKLUBAIC0xNzA5LDYgKzE3MTQsNyBAQCB3aGlsZSAoPElOPikKLSAJcy9eSU5TVEFMTFRP UD0uKiQvSU5TVEFMTFRPUD0kcHJlZml4LzsKLSAJcy9eTVVMVElMSUI9LiokL01VTFRJTElCPSRt dWx0aWxpYi87Ci0gCXMvXk9QRU5TU0xESVI9LiokL09QRU5TU0xESVI9JG9wZW5zc2xkaXIvOwot KwlzL15FTkdJTkVTRElSPS4qJC9FTkdJTkVTRElSPSRlbmdpbmVzZGlyLzsKLSAJcy9eTElCRElS PS4qJC9MSUJESVI9JGxpYmRpci87Ci0gCXMvXklOU1RBTExfUFJFRklYPS4qJC9JTlNUQUxMX1BS RUZJWD0kaW5zdGFsbF9wcmVmaXgvOwotIAlzL15QTEFURk9STT0uKiQvUExBVEZPUk09JHRhcmdl dC87Ci1AQCAtMTkxNSw3ICsxOTIxLDcgQEAgd2hpbGUgKDxJTj4pCi0gCQl9Ci0gCWVsc2lmCSgv XiNkZWZpbmVccytFTkdJTkVTRElSLykKLSAJCXsKLS0JCW15ICRmb28gPSAiJHByZWZpeC8kbGli ZGlyL2VuZ2luZXMiOwotKwkJbXkgJGZvbyA9ICIkZW5naW5lc2RpciI7Ci0gCQkkZm9vID1+IHMv XFwvXFxcXC9nOwotIAkJcHJpbnQgT1VUICIjZGVmaW5lIEVOR0lORVNESVIgXCIkZm9vXCJcbiI7 Ci0gCQl9Ci1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUub3JnIGIvTWFrZWZpbGUub3JnCi1pbmRleCAy Mzc3ZjUwLi5mZThkNTRjIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUub3JnCi0rKysgYi9NYWtlZmls ZS5vcmcKLUBAIC0yOCw2ICsyOCw3IEBAIElOU1RBTExUT1A9L3Vzci9sb2NhbC9zc2wKLSAKLSAj IERvIG5vdCBlZGl0IHRoaXMgbWFudWFsbHkuIFVzZSBDb25maWd1cmUgLS1vcGVuc3NsZGlyPURJ UiBkbyBjaGFuZ2UgdGhpcyEKLSBPUEVOU1NMRElSPS91c3IvbG9jYWwvc3NsCi0rRU5HSU5FU0RJ Uj0kJHtsaWJkaXJ9L2VuZ2luZXMKLSAKLSAjIE5PX0lERUEgLSBEZWZpbmUgdG8gYnVpbGQgd2l0 aG91dCB0aGUgSURFQSBhbGdvcml0aG0KLSAjIE5PX1JDNCAgLSBEZWZpbmUgdG8gYnVpbGQgd2l0 aG91dCB0aGUgUkM0IGFsZ29yaXRobQotQEAgLTM2OCw3ICszNjksNyBAQCBsaWJjcnlwdG8ucGM6 IE1ha2VmaWxlCi0gCSAgICBlY2hvICdleGVjX3ByZWZpeD0kJHtwcmVmaXh9JzsgXAotIAkgICAg ZWNobyAnbGliZGlyPSQke2V4ZWNfcHJlZml4fS8kKExJQkRJUiknOyBcCi0gCSAgICBlY2hvICdp bmNsdWRlZGlyPSQke3ByZWZpeH0vaW5jbHVkZSc7IFwKLS0JICAgIGVjaG8gJ2VuZ2luZXNkaXI9 JCR7bGliZGlyfS9lbmdpbmVzJzsgXAotKwkgICAgZWNobyAnZW5naW5lc2Rpcj0kKEVOR0lORVNE SVIpJzsgXAotIAkgICAgZWNobyAnJzsgXAotIAkgICAgZWNobyAnTmFtZTogT3BlblNTTC1saWJj cnlwdG8nOyBcCi0gCSAgICBlY2hvICdEZXNjcmlwdGlvbjogT3BlblNTTCBjcnlwdG9ncmFwaHkg bGlicmFyeSc7IFwKLWRpZmYgLS1naXQgYS9lbmdpbmVzL01ha2VmaWxlIGIvZW5naW5lcy9NYWtl ZmlsZQotaW5kZXggMjA1OGZmNC4uYTJjNDA3YiAxMDA2NDQKLS0tLSBhL2VuZ2luZXMvTWFrZWZp bGUKLSsrKyBiL2VuZ2luZXMvTWFrZWZpbGUKLUBAIC0xMjQsNyArMTI0LDcgQEAgaW5zdGFsbDoK LSAJCQkJZXNhYzsgXAotIAkJCQljcCAkJHBmeCQkbCQkc2Z4ICQoSU5TVEFMTF9QUkVGSVgpJChJ TlNUQUxMVE9QKS8kKExJQkRJUikvZW5naW5lcy8kJHBmeCQkbCQkc2Z4Lm5ldzsgXAotIAkJCSAg Zmk7IFwKLS0JCQkgIGNobW9kIDU1NSAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvJChM SUJESVIpL2VuZ2luZXMvJCRwZngkJGwkJHNmeC5uZXc7IFwKLSsJCQkgIGNobW9kIDc1NSAkKElO U1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvJChMSUJESVIpL2VuZ2luZXMvJCRwZngkJGwkJHNm eC5uZXc7IFwKLSAJCQkgIG12IC1mICQoSU5TVEFMTF9QUkVGSVgpJChJTlNUQUxMVE9QKS8kKExJ QkRJUikvZW5naW5lcy8kJHBmeCQkbCQkc2Z4Lm5ldyAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFM TFRPUCkvJChMSUJESVIpL2VuZ2luZXMvJCRwZngkJGwkJHNmeCApOyBcCi0gCQlkb25lOyBcCi0g CWZpCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMmktZmlwcy5wYXRjaCBiL29wZW5zc2wtMS4w LjJpLWZpcHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5MWM3ODguLjAw MDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMmktZmlwcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDEzNzA1ICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2FwcHMvc3BlZWQuYy5maXBz IG9wZW5zc2wtMS4wLjJpL2FwcHMvc3BlZWQuYwotLS0tIG9wZW5zc2wtMS4wLjJpL2FwcHMvc3Bl ZWQuYy5maXBzCTIwMTYtMDktMjIgMTI6MjM6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNz bC0xLjAuMmkvYXBwcy9zcGVlZC5jCTIwMTYtMDktMjIgMTM6MzU6NTcuMDA3MjIwNzY3ICswMjAw Ci1AQCAtMTk3LDcgKzE5Nyw2IEBACi0gIyAgaWZkZWYgT1BFTlNTTF9ET0lOR19NQUtFREVQRU5E Ci0gIyAgIHVuZGVmIEFFU19zZXRfZW5jcnlwdF9rZXkKLSAjICAgdW5kZWYgQUVTX3NldF9kZWNy eXB0X2tleQotLSMgICB1bmRlZiBERVNfc2V0X2tleV91bmNoZWNrZWQKLSAjICBlbmRpZgotICMg IGRlZmluZSBCRl9zZXRfa2V5ICAgICAgcHJpdmF0ZV9CRl9zZXRfa2V5Ci0gIyAgZGVmaW5lIENB U1Rfc2V0X2tleSAgICBwcml2YXRlX0NBU1Rfc2V0X2tleQotQEAgLTIwNSw3ICsyMDQsNiBAQAot ICMgIGRlZmluZSBTRUVEX3NldF9rZXkgICAgcHJpdmF0ZV9TRUVEX3NldF9rZXkKLSAjICBkZWZp bmUgUkMyX3NldF9rZXkgICAgIHByaXZhdGVfUkMyX3NldF9rZXkKLSAjICBkZWZpbmUgUkM0X3Nl dF9rZXkgICAgIHByaXZhdGVfUkM0X3NldF9rZXkKLS0jICBkZWZpbmUgREVTX3NldF9rZXlfdW5j aGVja2VkICAgcHJpdmF0ZV9ERVNfc2V0X2tleV91bmNoZWNrZWQKLSAjICBkZWZpbmUgQUVTX3Nl dF9lbmNyeXB0X2tleSAgICAgcHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5Ci0gIyAgZGVmaW5l IEFFU19zZXRfZGVjcnlwdF9rZXkgICAgIHByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleQotICMg IGRlZmluZSBDYW1lbGxpYV9zZXRfa2V5ICAgICAgICBwcml2YXRlX0NhbWVsbGlhX3NldF9rZXkK LUBAIC05NzQsNyArOTcyLDEyIEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAj IGVuZGlmCi0gIyBpZm5kZWYgT1BFTlNTTF9OT19SU0EKLSAgICAgICAgIGlmIChzdHJjbXAoKmFy Z3YsICJyc2EiKSA9PSAwKSB7Ci0tICAgICAgICAgICAgcnNhX2RvaXRbUl9SU0FfNTEyXSA9IDE7 Ci0rIyAgaWZkZWYgT1BFTlNTTF9GSVBTCi0rICAgICAgICAgICAgaWYgKCFGSVBTX21vZGUoKSkK LSsjICBlbmRpZgotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgcnNhX2RvaXRbUl9S U0FfNTEyXSA9IDE7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgICAgIHJzYV9kb2l0W1JfUlNB XzEwMjRdID0gMTsKLSAgICAgICAgICAgICByc2FfZG9pdFtSX1JTQV8yMDQ4XSA9IDE7Ci0gICAg ICAgICAgICAgcnNhX2RvaXRbUl9SU0FfNDA5Nl0gPSAxOwotQEAgLTk4Miw3ICs5ODUsMTIgQEAg aW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICMgZW5kaWYKLSAjIGlmbmRlZiBPUEVO U1NMX05PX0RTQQotICAgICAgICAgaWYgKHN0cmNtcCgqYXJndiwgImRzYSIpID09IDApIHsKLS0g ICAgICAgICAgICBkc2FfZG9pdFtSX0RTQV81MTJdID0gMTsKLSsjICBpZmRlZiBPUEVOU1NMX0ZJ UFMKLSsgICAgICAgICAgICBpZiAoIUZJUFNfbW9kZSgpKQotKyMgIGVuZGlmCi0rICAgICAgICAg ICAgewotKyAgICAgICAgICAgICAgICBkc2FfZG9pdFtSX0RTQV81MTJdID0gMTsKLSsgICAgICAg ICAgICB9Ci0gICAgICAgICAgICAgZHNhX2RvaXRbUl9EU0FfMTAyNF0gPSAxOwotICAgICAgICAg ICAgIGRzYV9kb2l0W1JfRFNBXzIwNDhdID0gMTsKLSAgICAgICAgIH0gZWxzZQotQEAgLTEyMzMs MTMgKzEyNDEsMTkgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAotICAgICBp ZiAoaiA9PSAwKSB7Ci0gICAgICAgICBmb3IgKGkgPSAwOyBpIDwgQUxHT1JfTlVNOyBpKyspIHsK LS0gICAgICAgICAgICBpZiAoaSAhPSBEX0VWUCkKLSsgICAgICAgICAgICBpZiAoaSAhPSBEX0VW UCAmJgotKyAgICAgICAgICAgICAgICAoIUZJUFNfbW9kZSgpIHx8IChpICE9IERfV0hJUkxQT09M ICYmCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT0gRF9NRDIgJiYgaSAh PSBEX01ENCAmJgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IERfTUQ1 ICYmIGkgIT0gRF9NREMyICYmCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkg IT0gRF9STUQxNjApKSkKLSAgICAgICAgICAgICAgICAgZG9pdFtpXSA9IDE7Ci0gICAgICAgICB9 Ci0gICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUlNBX05VTTsgaSsrKQotLSAgICAgICAgICAgIHJz YV9kb2l0W2ldID0gMTsKLSsgICAgICAgICAgICBpZiAoIUZJUFNfbW9kZSgpIHx8IGkgIT0gUl9S U0FfNTEyKQotKyAgICAgICAgICAgICAgICByc2FfZG9pdFtpXSA9IDE7Ci0gICAgICAgICBmb3Ig KGkgPSAwOyBpIDwgRFNBX05VTTsgaSsrKQotLSAgICAgICAgICAgIGRzYV9kb2l0W2ldID0gMTsK LSsgICAgICAgICAgICBpZiAoIUZJUFNfbW9kZSgpIHx8IGkgIT0gUl9EU0FfNTEyKQotKyAgICAg ICAgICAgICAgICBkc2FfZG9pdFtpXSA9IDE7Ci0gIyBpZm5kZWYgT1BFTlNTTF9OT19FQ0RTQQot ICAgICAgICAgZm9yIChpID0gMDsgaSA8IEVDX05VTTsgaSsrKQotICAgICAgICAgICAgIGVjZHNh X2RvaXRbaV0gPSAxOwotQEAgLTEyOTksMzAgKzEzMTMsNDYgQEAgaW50IE1BSU4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQotICAgICBBRVNfc2V0X2VuY3J5cHRfa2V5KGtleTMyLCAyNTYsICZhZXNf a3MzKTsKLSAjIGVuZGlmCi0gIyBpZm5kZWYgT1BFTlNTTF9OT19DQU1FTExJQQotLSAgICBDYW1l bGxpYV9zZXRfa2V5KGtleTE2LCAxMjgsICZjYW1lbGxpYV9rczEpOwotLSAgICBDYW1lbGxpYV9z ZXRfa2V5KGNrZXkyNCwgMTkyLCAmY2FtZWxsaWFfa3MyKTsKLS0gICAgQ2FtZWxsaWFfc2V0X2tl eShja2V5MzIsIDI1NiwgJmNhbWVsbGlhX2tzMyk7Ci0rICAgIGlmIChkb2l0W0RfQ0JDXzEyOF9D TUxdIHx8IGRvaXRbRF9DQkNfMTkyX0NNTF0gfHwgZG9pdFtEX0NCQ18yNTZfQ01MXSkgewotKyAg ICAgICAgQ2FtZWxsaWFfc2V0X2tleShrZXkxNiwgMTI4LCAmY2FtZWxsaWFfa3MxKTsKLSsgICAg ICAgIENhbWVsbGlhX3NldF9rZXkoY2tleTI0LCAxOTIsICZjYW1lbGxpYV9rczIpOwotKyAgICAg ICAgQ2FtZWxsaWFfc2V0X2tleShja2V5MzIsIDI1NiwgJmNhbWVsbGlhX2tzMyk7Ci0rICAgIH0K LSAjIGVuZGlmCi0gIyBpZm5kZWYgT1BFTlNTTF9OT19JREVBCi0tICAgIGlkZWFfc2V0X2VuY3J5 cHRfa2V5KGtleTE2LCAmaWRlYV9rcyk7Ci0rICAgIGlmIChkb2l0W0RfQ0JDX0lERUFdKSB7Ci0r ICAgICAgICBpZGVhX3NldF9lbmNyeXB0X2tleShrZXkxNiwgJmlkZWFfa3MpOwotKyAgICB9Ci0g IyBlbmRpZgotICMgaWZuZGVmIE9QRU5TU0xfTk9fU0VFRAotLSAgICBTRUVEX3NldF9rZXkoa2V5 MTYsICZzZWVkX2tzKTsKLSsgICAgaWYgKGRvaXRbRF9DQkNfU0VFRF0pIHsKLSsgICAgICAgIFNF RURfc2V0X2tleShrZXkxNiwgJnNlZWRfa3MpOwotKyAgICB9Ci0gIyBlbmRpZgotICMgaWZuZGVm IE9QRU5TU0xfTk9fUkM0Ci0tICAgIFJDNF9zZXRfa2V5KCZyYzRfa3MsIDE2LCBrZXkxNik7Ci0r ICAgIGlmIChkb2l0W0RfUkM0XSkgewotKyAgICAgICAgUkM0X3NldF9rZXkoJnJjNF9rcywgMTYs IGtleTE2KTsKLSsgICAgfQotICMgZW5kaWYKLSAjIGlmbmRlZiBPUEVOU1NMX05PX1JDMgotLSAg ICBSQzJfc2V0X2tleSgmcmMyX2tzLCAxNiwga2V5MTYsIDEyOCk7Ci0rICAgIGlmIChkb2l0W0Rf Q0JDX1JDMl0pIHsKLSsgICAgICAgIFJDMl9zZXRfa2V5KCZyYzJfa3MsIDE2LCBrZXkxNiwgMTI4 KTsKLSsgICAgfQotICMgZW5kaWYKLSAjIGlmbmRlZiBPUEVOU1NMX05PX1JDNQotLSAgICBSQzVf MzJfc2V0X2tleSgmcmM1X2tzLCAxNiwga2V5MTYsIDEyKTsKLSsgICAgaWYgKGRvaXRbRF9DQkNf UkM1XSkgewotKyAgICAgICAgUkM1XzMyX3NldF9rZXkoJnJjNV9rcywgMTYsIGtleTE2LCAxMik7 Ci0rICAgIH0KLSAjIGVuZGlmCi0gIyBpZm5kZWYgT1BFTlNTTF9OT19CRgotLSAgICBCRl9zZXRf a2V5KCZiZl9rcywgMTYsIGtleTE2KTsKLSsgICAgaWYgKGRvaXRbRF9DQkNfQkZdKSB7Ci0rICAg ICAgICBCRl9zZXRfa2V5KCZiZl9rcywgMTYsIGtleTE2KTsKLSsgICAgfQotICMgZW5kaWYKLSAj IGlmbmRlZiBPUEVOU1NMX05PX0NBU1QKLS0gICAgQ0FTVF9zZXRfa2V5KCZjYXN0X2tzLCAxNiwg a2V5MTYpOwotKyAgICBpZiAoZG9pdFtEX0NCQ19DQVNUXSkgewotKyAgICAgICAgQ0FTVF9zZXRf a2V5KCZjYXN0X2tzLCAxNiwga2V5MTYpOwotKyAgICB9Ci0gIyBlbmRpZgotICMgaWZuZGVmIE9Q RU5TU0xfTk9fUlNBCi0gICAgIG1lbXNldChyc2FfYywgMCwgc2l6ZW9mKHJzYV9jKSk7Ci1AQCAt MTYwNSw2ICsxNjM1LDcgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAg ICAgSE1BQ19DVFggaGN0eDsKLSAKLSAgICAgICAgIEhNQUNfQ1RYX2luaXQoJmhjdHgpOwotKyAg ICAgICAgSE1BQ19DVFhfc2V0X2ZsYWdzKCZoY3R4LCBFVlBfTURfQ1RYX0ZMQUdfTk9OX0ZJUFNf QUxMT1cpOwotICAgICAgICAgSE1BQ19Jbml0X2V4KCZoY3R4LCAodW5zaWduZWQgY2hhciAqKSJU aGlzIGlzIGEga2V5Li4uIiwKLSAgICAgICAgICAgICAgICAgICAgICAxNiwgRVZQX21kNSgpLCBO VUxMKTsKLSAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL0NvbmZpZ3VyZS5maXBzIG9wZW5zc2wt MS4wLjJpL0NvbmZpZ3VyZQotLS0tIG9wZW5zc2wtMS4wLjJpL0NvbmZpZ3VyZS5maXBzCTIwMTYt MDktMjIgMTM6MzU6NTYuOTkzMjIwNDQ0ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvQ29uZmln dXJlCTIwMTYtMDktMjIgMTM6MzU6NTcuMDA4MjIwNzkwICswMjAwCi1AQCAtMTA2NywxMSArMTA2 Nyw2IEBAIGlmIChkZWZpbmVkKCRkaXNhYmxlZHsibWQ1In0pIHx8IGRlZmluZWQKLSAJJGRpc2Fi bGVkeyJzc2wyIn0gPSAiZm9yY2VkIjsKLSAJfQotIAotLWlmICgkZmlwcyAmJiAkZmlwc2xpYmRp ciBlcSAiIikKLS0JewotLQkkZmlwc2xpYmRpciA9ICRmaXBzZGlyIC4gIi9saWIvIjsKLS0JfQot LQotICMgUlNBWCBFTkdJTkUgc2V0cyBkZWZhdWx0IG5vbi1GSVBTIFJTQSBtZXRob2QuCi0gaWYg KCRmaXBzKQotIAl7Ci1AQCAtMTU1Niw3ICsxNTUxLDYgQEAgJGNmbGFncy49IiAtRE9QRU5TU0xf Qk5fQVNNX0dGMm0iIGlmICgkYgotIGlmICgkZmlwcykKLSAJewotIAkkb3BlbnNzbF9vdGhlcl9k ZWZpbmVzLj0iI2RlZmluZSBPUEVOU1NMX0ZJUFNcbiI7Ci0tCSRjZmxhZ3MgLj0gIiAtSVwkKEZJ UFNESVIpL2luY2x1ZGUiOwotIAl9Ci0gCi0gJGNwdWlkX29iaj0ibWVtX2Nsci5vIgl1bmxlc3Mg KCRjcHVpZF9vYmogPX4gL1wubyQvKTsKLUBAIC0xNzY4LDkgKzE3NjIsMTIgQEAgd2hpbGUgKDxJ Tj4pCi0gCi0gCXMvXkZJUFNESVI9LiovRklQU0RJUj0kZmlwc2Rpci87Ci0gCXMvXkZJUFNMSUJE SVI9LiovRklQU0xJQkRJUj0kZmlwc2xpYmRpci87Ci0tCXMvXkZJUFNDQU5MSUI9LiovRklQU0NB TkxJQj1saWJjcnlwdG8vIGlmICRmaXBzOwotIAlzL15CQVNFQUREUj0uKi9CQVNFQUREUj0kYmFz ZWFkZHIvOwotIAotKwlpZiAoJGZpcHMpCi0rCQl7Ci0rCQlzL15GSVBTPS4qL0ZJUFM9eWVzLzsK LSsJCX0KLSAJcy9eU0hMSUJfVEFSR0VUPS4qL1NITElCX1RBUkdFVD0kc2hhcmVkX3RhcmdldC87 Ci0gCXMvXlNITElCX01BUks9LiovU0hMSUJfTUFSSz0kc2hhcmVkX21hcmsvOwotIAlzL15TSEFS RURfTElCUz0uKi9TSEFSRURfTElCUz1cJChTSEFSRURfQ1JZUFRPKSBcJChTSEFSRURfU1NMKS8g aWYgKCEkbm9fc2hhcmVkKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9hZXMvYWVz X21pc2MuYy5maXBzIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9hZXMvYWVzX21pc2MuYwotLS0tIG9w ZW5zc2wtMS4wLjJpL2NyeXB0by9hZXMvYWVzX21pc2MuYy5maXBzCTIwMTYtMDktMjIgMTI6MjM6 MDYuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2Flcy9hZXNfbWlz Yy5jCTIwMTYtMDktMjIgMTM6MzU6NTcuMDA4MjIwNzkwICswMjAwCi1AQCAtNzAsMTcgKzcwLDEx IEBAIGNvbnN0IGNoYXIgKkFFU19vcHRpb25zKHZvaWQpCi0gaW50IEFFU19zZXRfZW5jcnlwdF9r ZXkoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwgY29uc3QgaW50IGJpdHMsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgQUVTX0tFWSAqa2V5KQotIHsKLS0jaWZkZWYgT1BFTlNTTF9GSVBT Ci0tICAgIGZpcHNfY2lwaGVyX2Fib3J0KEFFUyk7Ci0tI2VuZGlmCi0gICAgIHJldHVybiBwcml2 YXRlX0FFU19zZXRfZW5jcnlwdF9rZXkodXNlcktleSwgYml0cywga2V5KTsKLSB9Ci0gCi0gaW50 IEFFU19zZXRfZGVjcnlwdF9rZXkoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwgY29uc3Qg aW50IGJpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQUVTX0tFWSAqa2V5KQotIHsKLS0j aWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgIGZpcHNfY2lwaGVyX2Fib3J0KEFFUyk7Ci0tI2VuZGlm Ci0gICAgIHJldHVybiBwcml2YXRlX0FFU19zZXRfZGVjcnlwdF9rZXkodXNlcktleSwgYml0cywg a2V5KTsKLSB9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vY21hYy9jbWFjLmMuZmlw cyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vY21hYy9jbWFjLmMKLS0tLSBvcGVuc3NsLTEuMC4yaS9j cnlwdG8vY21hYy9jbWFjLmMuZmlwcwkyMDE2LTA5LTIyIDEyOjIzOjA2LjAwMDAwMDAwMCArMDIw MAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9jbWFjL2NtYWMuYwkyMDE2LTA5LTIyIDEzOjM1 OjU3LjAwODIyMDc5MCArMDIwMAotQEAgLTEwNSwxMiArMTA1LDYgQEAgQ01BQ19DVFggKkNNQUNf Q1RYX25ldyh2b2lkKQotIAotIHZvaWQgQ01BQ19DVFhfY2xlYW51cChDTUFDX0NUWCAqY3R4KQot IHsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgIGlmIChGSVBTX21vZGUoKSAmJiAhY3R4LT5j Y3R4LmVuZ2luZSkgewotLSAgICAgICAgRklQU19jbWFjX2N0eF9jbGVhbnVwKGN0eCk7Ci0tICAg ICAgICByZXR1cm47Ci0tICAgIH0KLS0jZW5kaWYKLSAgICAgRVZQX0NJUEhFUl9DVFhfY2xlYW51 cCgmY3R4LT5jY3R4KTsKLSAgICAgT1BFTlNTTF9jbGVhbnNlKGN0eC0+dGJsLCBFVlBfTUFYX0JM T0NLX0xFTkdUSCk7Ci0gICAgIE9QRU5TU0xfY2xlYW5zZShjdHgtPmsxLCBFVlBfTUFYX0JMT0NL X0xFTkdUSCk7Ci1AQCAtMTYwLDIwICsxNTQsNiBAQCBpbnQgQ01BQ19Jbml0KENNQUNfQ1RYICpj dHgsIGNvbnN0IHZvaWQKLSAgICAgICAgICAgICBFVlBlcnIoRVZQX0ZfQ01BQ19JTklULCBFVlBf Ul9ESVNBQkxFRF9GT1JfRklQUyk7Ci0gICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICB9 Ci0tCi0tICAgICAgICAvKiBTd2l0Y2ggdG8gRklQUyBjaXBoZXIgaW1wbGVtZW50YXRpb24gaWYg cG9zc2libGUgKi8KLS0gICAgICAgIGlmIChjaXBoZXIgIT0gTlVMTCkgewotLSAgICAgICAgICAg IGNvbnN0IEVWUF9DSVBIRVIgKmZjaXBoZXI7Ci0tICAgICAgICAgICAgZmNpcGhlciA9IEZJUFNf Z2V0X2NpcGhlcmJ5bmlkKEVWUF9DSVBIRVJfbmlkKGNpcGhlcikpOwotLSAgICAgICAgICAgIGlm IChmY2lwaGVyICE9IE5VTEwpCi0tICAgICAgICAgICAgICAgIGNpcGhlciA9IGZjaXBoZXI7Ci0t ICAgICAgICB9Ci0tICAgICAgICAvKgotLSAgICAgICAgICogT3RoZXIgYWxnb3JpdGhtIGJsb2Nr aW5nIHdpbGwgYmUgZG9uZSBpbiBGSVBTX2NtYWNfaW5pdCwgdmlhCi0tICAgICAgICAgKiBGSVBT X2NpcGhlcmluaXQoKS4KLS0gICAgICAgICAqLwotLSAgICAgICAgaWYgKCFpbXBsICYmICFjdHgt PmNjdHguZW5naW5lKQotLSAgICAgICAgICAgIHJldHVybiBGSVBTX2NtYWNfaW5pdChjdHgsIGtl eSwga2V5bGVuLCBjaXBoZXIsIE5VTEwpOwotICAgICB9Ci0gI2VuZGlmCi0gICAgIC8qIEFsbCB6 ZXJvcyBtZWFucyByZXN0YXJ0ICovCi1AQCAtMjE5LDEwICsxOTksNiBAQCBpbnQgQ01BQ19VcGRh dGUoQ01BQ19DVFggKmN0eCwgY29uc3Qgdm9pCi0gewotICAgICBjb25zdCB1bnNpZ25lZCBjaGFy ICpkYXRhID0gaW47Ci0gICAgIHNpemVfdCBibDsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAg IGlmIChGSVBTX21vZGUoKSAmJiAhY3R4LT5jY3R4LmVuZ2luZSkKLS0gICAgICAgIHJldHVybiBG SVBTX2NtYWNfdXBkYXRlKGN0eCwgaW4sIGRsZW4pOwotLSNlbmRpZgotICAgICBpZiAoY3R4LT5u bGFzdF9ibG9jayA9PSAtMSkKLSAgICAgICAgIHJldHVybiAwOwotICAgICBpZiAoZGxlbiA9PSAw KQotQEAgLTI2MiwxMCArMjM4LDYgQEAgaW50IENNQUNfVXBkYXRlKENNQUNfQ1RYICpjdHgsIGNv bnN0IHZvaQotIGludCBDTUFDX0ZpbmFsKENNQUNfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKm91 dCwgc2l6ZV90ICpwb3V0bGVuKQotIHsKLSAgICAgaW50IGksIGJsLCBsYjsKLS0jaWZkZWYgT1BF TlNTTF9GSVBTCi0tICAgIGlmIChGSVBTX21vZGUoKSAmJiAhY3R4LT5jY3R4LmVuZ2luZSkKLS0g ICAgICAgIHJldHVybiBGSVBTX2NtYWNfZmluYWwoY3R4LCBvdXQsIHBvdXRsZW4pOwotLSNlbmRp ZgotICAgICBpZiAoY3R4LT5ubGFzdF9ibG9jayA9PSAtMSkKLSAgICAgICAgIHJldHVybiAwOwot ICAgICBibCA9IEVWUF9DSVBIRVJfQ1RYX2Jsb2NrX3NpemUoJmN0eC0+Y2N0eCk7Ci1kaWZmIC11 cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vY3J5cHRvLmguZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlw dG8vY3J5cHRvLmgKLS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vY3J5cHRvLmguZmlwcwkyMDE2 LTA5LTIyIDEzOjM1OjU2Ljg5MDIxODA3MCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0 by9jcnlwdG8uaAkyMDE2LTA5LTIyIDEzOjM1OjU3LjAwODIyMDc5MCArMDIwMAotQEAgLTYwMCwy NCArNjAwLDI5IEBAIGludCBGSVBTX21vZGVfc2V0KGludCByKTsKLSB2b2lkIE9QRU5TU0xfaW5p dCh2b2lkKTsKLSAKLSAjIGRlZmluZSBmaXBzX21kX2luaXQoYWxnKSBmaXBzX21kX2luaXRfY3R4 KGFsZywgYWxnKQotKyMgZGVmaW5lIG5vbmZpcHNfbWRfaW5pdChhbGcpIG5vbmZpcHNfbWRfaW5p dF9jdHgoYWxnLCBhbGcpCi0rIyBkZWZpbmUgZmlwc19tZF9pbml0X2N0eChhbGcsIGN4KSBcCi0r ICAgICAgICBpbnQgYWxnIyNfSW5pdChjeCMjX0NUWCAqYykKLSAKLSAjIGlmZGVmIE9QRU5TU0xf RklQUwotLSMgIGRlZmluZSBmaXBzX21kX2luaXRfY3R4KGFsZywgY3gpIFwKLSsjICBkZWZpbmUg bm9uZmlwc19tZF9pbml0X2N0eChhbGcsIGN4KSBcCi0gICAgICAgICBpbnQgYWxnIyNfSW5pdChj eCMjX0NUWCAqYykgXAotICAgICAgICAgeyBcCi0gICAgICAgICBpZiAoRklQU19tb2RlKCkpIE9w ZW5TU0xEaWUoX19GSUxFX18sIF9fTElORV9fLCBcCi0tICAgICAgICAgICAgICAgICJMb3cgbGV2 ZWwgQVBJIGNhbGwgdG8gZGlnZXN0ICIgI2FsZyAiIGZvcmJpZGRlbiBpbiBGSVBTIG1vZGUhIik7 IFwKLSsgICAgICAgICAgICAgICAgIkRpZ2VzdCAiICNhbGcgIiBmb3JiaWRkZW4gaW4gRklQUyBt b2RlISIpOyBcCi0gICAgICAgICByZXR1cm4gcHJpdmF0ZV8jI2FsZyMjX0luaXQoYyk7IFwKLSAg ICAgICAgIH0gXAotICAgICAgICAgaW50IHByaXZhdGVfIyNhbGcjI19Jbml0KGN4IyNfQ1RYICpj KQotIAotICMgIGRlZmluZSBmaXBzX2NpcGhlcl9hYm9ydChhbGcpIFwKLSAgICAgICAgIGlmIChG SVBTX21vZGUoKSkgT3BlblNTTERpZShfX0ZJTEVfXywgX19MSU5FX18sIFwKLS0gICAgICAgICAg ICAgICAgIkxvdyBsZXZlbCBBUEkgY2FsbCB0byBjaXBoZXIgIiAjYWxnICIgZm9yYmlkZGVuIGlu IEZJUFMgbW9kZSEiKQotKyAgICAgICAgICAgICAgICAiQ2lwaGVyICIgI2FsZyAiIGZvcmJpZGRl biBpbiBGSVBTIG1vZGUhIikKLSsKLSsvKiBkaWUgaWYgRklQUyBzZWxmdGVzdCBmYWlsZWQgKi8K LSt2b2lkIEZJUFNfc2VsZnRlc3RfY2hlY2sodm9pZCk7Ci0gCi0gIyBlbHNlCi0tIyAgZGVmaW5l IGZpcHNfbWRfaW5pdF9jdHgoYWxnLCBjeCkgXAotLSAgICAgICAgaW50IGFsZyMjX0luaXQoY3gj I19DVFggKmMpCi0rIyAgZGVmaW5lIG5vbmZpcHNfbWRfaW5pdF9jdHgoYWxnLCBjeCkgZmlwc19t ZF9pbml0X2N0eChhbGcsIGN4KQotICMgIGRlZmluZSBmaXBzX2NpcGhlcl9hYm9ydChhbGcpIHdo aWxlKDApCi0gIyBlbmRpZgotIAotQEAgLTYzNyw2ICs2NDIsOSBAQCBpbnQgQ1JZUFRPX21lbWNt cChjb25zdCB2b2xhdGlsZSB2b2lkICphCi0gICovCi0gdm9pZCBFUlJfbG9hZF9DUllQVE9fc3Ry aW5ncyh2b2lkKTsKLSAKLSsjIGRlZmluZSBPUEVOU1NMX0hBVkVfSU5JVCAgICAgICAxCi0rdm9p ZCBPUEVOU1NMX2luaXRfbGlicmFyeSh2b2lkKTsKLSsKLSAvKiBFcnJvciBjb2RlcyBmb3IgdGhl IENSWVBUTyBmdW5jdGlvbnMuICovCi0gCi0gLyogRnVuY3Rpb24gY29kZXMuICovCi1kaWZmIC11 cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZGVzL2Rlcy5oLmZpcHMgb3BlbnNzbC0xLjAuMmkvY3J5 cHRvL2Rlcy9kZXMuaAotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kZXMvZGVzLmguZmlwcwky MDE2LTA5LTIyIDEzOjM1OjU2LjkxODIxODcxNSArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2Ny eXB0by9kZXMvZGVzLmgJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMDgyMjA3OTAgKzAyMDAKLUBAIC0y MzEsMTAgKzIzMSw2IEBAIGludCBERVNfc2V0X2tleShjb25zdF9ERVNfY2Jsb2NrICprZXksIEQK LSBpbnQgREVTX2tleV9zY2hlZChjb25zdF9ERVNfY2Jsb2NrICprZXksIERFU19rZXlfc2NoZWR1 bGUgKnNjaGVkdWxlKTsKLSBpbnQgREVTX3NldF9rZXlfY2hlY2tlZChjb25zdF9ERVNfY2Jsb2Nr ICprZXksIERFU19rZXlfc2NoZWR1bGUgKnNjaGVkdWxlKTsKLSB2b2lkIERFU19zZXRfa2V5X3Vu Y2hlY2tlZChjb25zdF9ERVNfY2Jsb2NrICprZXksIERFU19rZXlfc2NoZWR1bGUgKnNjaGVkdWxl KTsKLS0jIGlmZGVmIE9QRU5TU0xfRklQUwotLXZvaWQgcHJpdmF0ZV9ERVNfc2V0X2tleV91bmNo ZWNrZWQoY29uc3RfREVTX2NibG9jayAqa2V5LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgREVTX2tleV9zY2hlZHVsZSAqc2NoZWR1bGUpOwotLSMgZW5kaWYKLSB2b2lkIERF U19zdHJpbmdfdG9fa2V5KGNvbnN0IGNoYXIgKnN0ciwgREVTX2NibG9jayAqa2V5KTsKLSB2b2lk IERFU19zdHJpbmdfdG9fMmtleXMoY29uc3QgY2hhciAqc3RyLCBERVNfY2Jsb2NrICprZXkxLCBE RVNfY2Jsb2NrICprZXkyKTsKLSB2b2lkIERFU19jZmI2NF9lbmNyeXB0KGNvbnN0IHVuc2lnbmVk IGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQsCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9j cnlwdG8vZGVzL3NldF9rZXkuYy5maXBzIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kZXMvc2V0X2tl eS5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2Rlcy9zZXRfa2V5LmMuZmlwcwkyMDE2LTA5 LTIyIDEyOjIzOjA2LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9k ZXMvc2V0X2tleS5jCTIwMTYtMDktMjIgMTM6MzU6NTcuMDA4MjIwNzkwICswMjAwCi1AQCAtMzU5 LDE1ICszNTksNiBAQCBpbnQgREVTX3NldF9rZXlfY2hlY2tlZChjb25zdF9ERVNfY2Jsb2NrCi0g fQotIAotIHZvaWQgREVTX3NldF9rZXlfdW5jaGVja2VkKGNvbnN0X0RFU19jYmxvY2sgKmtleSwg REVTX2tleV9zY2hlZHVsZSAqc2NoZWR1bGUpCi0tI2lmZGVmIE9QRU5TU0xfRklQUwotLXsKLS0g ICAgZmlwc19jaXBoZXJfYWJvcnQoREVTKTsKLS0gICAgcHJpdmF0ZV9ERVNfc2V0X2tleV91bmNo ZWNrZWQoa2V5LCBzY2hlZHVsZSk7Ci0tfQotLQotLXZvaWQgcHJpdmF0ZV9ERVNfc2V0X2tleV91 bmNoZWNrZWQoY29uc3RfREVTX2NibG9jayAqa2V5LAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgREVTX2tleV9zY2hlZHVsZSAqc2NoZWR1bGUpCi0tI2VuZGlmCi0gewotICAg ICBzdGF0aWMgY29uc3QgaW50IHNoaWZ0czJbMTZdID0KLSAgICAgICAgIHsgMCwgMCwgMSwgMSwg MSwgMSwgMSwgMSwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMCB9OwotZGlmZiAtdXAgb3BlbnNzbC0x LjAuMmkvY3J5cHRvL2RoL2RoX2dlbi5jLmZpcHMgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2RoL2Ro X2dlbi5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2RoL2RoX2dlbi5jLmZpcHMJMjAxNi0w OS0yMiAxMjoyMzowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8v ZGgvZGhfZ2VuLmMJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMDkyMjA4MTMgKzAyMDAKLUBAIC04NSwx MCArODUsNiBAQCBpbnQgREhfZ2VuZXJhdGVfcGFyYW1ldGVyc19leChESCAqcmV0LCBpCi0gI2Vu ZGlmCi0gICAgIGlmIChyZXQtPm1ldGgtPmdlbmVyYXRlX3BhcmFtcykKLSAgICAgICAgIHJldHVy biByZXQtPm1ldGgtPmdlbmVyYXRlX3BhcmFtcyhyZXQsIHByaW1lX2xlbiwgZ2VuZXJhdG9yLCBj Yik7Ci0tI2lmZGVmIE9QRU5TU0xfRklQUwotLSAgICBpZiAoRklQU19tb2RlKCkpCi0tICAgICAg ICByZXR1cm4gRklQU19kaF9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4KHJldCwgcHJpbWVfbGVuLCBn ZW5lcmF0b3IsIGNiKTsKLS0jZW5kaWYKLSAgICAgcmV0dXJuIGRoX2J1aWx0aW5fZ2VucGFyYW1z KHJldCwgcHJpbWVfbGVuLCBnZW5lcmF0b3IsIGNiKTsKLSB9Ci0gCi1AQCAtMTI2LDYgKzEyMiwx OCBAQCBzdGF0aWMgaW50IGRoX2J1aWx0aW5fZ2VucGFyYW1zKERIICpyZXQsCi0gICAgIGludCBn LCBvayA9IC0xOwotICAgICBCTl9DVFggKmN0eCA9IE5VTEw7Ci0gCi0rI2lmZGVmIE9QRU5TU0xf RklQUwotKyAgICBpZiAoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkgewotKyAgICAgICAgRklQU2Vy cihGSVBTX0ZfREhfQlVJTFRJTl9HRU5QQVJBTVMsIEZJUFNfUl9GSVBTX1NFTEZURVNUX0ZBSUxF RCk7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKyAgICBpZiAoRklQU19tb2RlKCkg JiYgKHByaW1lX2xlbiA8IE9QRU5TU0xfREhfRklQU19NSU5fTU9EVUxVU19CSVRTKSkgewotKyAg ICAgICAgREhlcnIoREhfRl9ESF9CVUlMVElOX0dFTlBBUkFNUywgREhfUl9LRVlfU0laRV9UT09f U01BTEwpOwotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsjZW5kaWYKLSsKLSAgICAgY3R4 ID0gQk5fQ1RYX25ldygpOwotICAgICBpZiAoY3R4ID09IE5VTEwpCi0gICAgICAgICBnb3RvIGVy cjsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kaC9kaC5oLmZpcHMgb3BlbnNzbC0x LjAuMmkvY3J5cHRvL2RoL2RoLmgKLS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZGgvZGguaC5m aXBzCTIwMTYtMDktMjIgMTM6MzU6NTYuODYzMjE3NDQ3ICswMjAwCi0rKysgb3BlbnNzbC0xLjAu MmkvY3J5cHRvL2RoL2RoLmgJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMDkyMjA4MTMgKzAyMDAKLUBA IC03Nyw2ICs3Nyw4IEBACi0gIyAgZGVmaW5lIE9QRU5TU0xfREhfTUFYX01PRFVMVVNfQklUUyAg ICAxMDAwMAotICMgZW5kaWYKLSAKLSsjIGRlZmluZSBPUEVOU1NMX0RIX0ZJUFNfTUlOX01PRFVM VVNfQklUUyAxMDI0Ci0rCi0gIyBkZWZpbmUgREhfRkxBR19DQUNIRV9NT05UX1AgICAgIDB4MDEK LSAKLSAvKgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2RoL2RoX2tleS5jLmZpcHMg b3BlbnNzbC0xLjAuMmkvY3J5cHRvL2RoL2RoX2tleS5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5 cHRvL2RoL2RoX2tleS5jLmZpcHMJMjAxNi0wOS0yMiAxMjoyMzowNi4wMDAwMDAwMDAgKzAyMDAK LSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZGgvZGhfa2V5LmMJMjAxNi0wOS0yMiAxMzozNTo1 Ny4wMDkyMjA4MTMgKzAyMDAKLUBAIC02MSw2ICs2MSw5IEBACi0gI2luY2x1ZGUgPG9wZW5zc2wv Ym4uaD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvZGgu aD4KLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsj ZW5kaWYKLSAKLSBzdGF0aWMgaW50IGdlbmVyYXRlX2tleShESCAqZGgpOwotIHN0YXRpYyBpbnQg Y29tcHV0ZV9rZXkodW5zaWduZWQgY2hhciAqa2V5LCBjb25zdCBCSUdOVU0gKnB1Yl9rZXksIERI ICpkaCk7Ci1AQCAtOTcsNyArMTAwLDcgQEAgaW50IERIX2NvbXB1dGVfa2V5KHVuc2lnbmVkIGNo YXIgKmtleSwgYwotIGludCBESF9jb21wdXRlX2tleV9wYWRkZWQodW5zaWduZWQgY2hhciAqa2V5 LCBjb25zdCBCSUdOVU0gKnB1Yl9rZXksIERIICpkaCkKLSB7Ci0gICAgIGludCBydiwgcGFkOwot LSAgICBydiA9IGRoLT5tZXRoLT5jb21wdXRlX2tleShrZXksIHB1Yl9rZXksIGRoKTsKLSsgICAg cnYgPSBESF9jb21wdXRlX2tleShrZXksIHB1Yl9rZXksIGRoKTsKLSAgICAgaWYgKHJ2IDw9IDAp Ci0gICAgICAgICByZXR1cm4gcnY7Ci0gICAgIHBhZCA9IEJOX251bV9ieXRlcyhkaC0+cCkgLSBy djsKLUBAIC0xMTUsNyArMTE4LDcgQEAgc3RhdGljIERIX01FVEhPRCBkaF9vc3NsID0gewotICAg ICBkaF9ibl9tb2RfZXhwLAotICAgICBkaF9pbml0LAotICAgICBkaF9maW5pc2gsCi0tICAgIDAs Ci0rICAgIERIX0ZMQUdfRklQU19NRVRIT0QsCi0gICAgIE5VTEwsCi0gICAgIE5VTEwKLSB9Owot QEAgLTEzNCw2ICsxMzcsMTQgQEAgc3RhdGljIGludCBnZW5lcmF0ZV9rZXkoREggKmRoKQotICAg ICBCTl9NT05UX0NUWCAqbW9udCA9IE5VTEw7Ci0gICAgIEJJR05VTSAqcHViX2tleSA9IE5VTEws ICpwcml2X2tleSA9IE5VTEw7Ci0gCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKyAgICBpZiAoRklQ U19tb2RlKCkKLSsgICAgICAgICYmIChCTl9udW1fYml0cyhkaC0+cCkgPCBPUEVOU1NMX0RIX0ZJ UFNfTUlOX01PRFVMVVNfQklUUykpIHsKLSsgICAgICAgIERIZXJyKERIX0ZfR0VORVJBVEVfS0VZ LCBESF9SX0tFWV9TSVpFX1RPT19TTUFMTCk7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQot KyNlbmRpZgotKwotICAgICBjdHggPSBCTl9DVFhfbmV3KCk7Ci0gICAgIGlmIChjdHggPT0gTlVM TCkKLSAgICAgICAgIGdvdG8gZXJyOwotQEAgLTIxNyw2ICsyMjgsMTMgQEAgc3RhdGljIGludCBj b21wdXRlX2tleSh1bnNpZ25lZCBjaGFyICprZQotICAgICAgICAgREhlcnIoREhfRl9DT01QVVRF X0tFWSwgREhfUl9NT0RVTFVTX1RPT19MQVJHRSk7Ci0gICAgICAgICBnb3RvIGVycjsKLSAgICAg fQotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgaWYgKEZJUFNfbW9kZSgpCi0rICAgICAgICAm JiAoQk5fbnVtX2JpdHMoZGgtPnApIDwgT1BFTlNTTF9ESF9GSVBTX01JTl9NT0RVTFVTX0JJVFMp KSB7Ci0rICAgICAgICBESGVycihESF9GX0NPTVBVVEVfS0VZLCBESF9SX0tFWV9TSVpFX1RPT19T TUFMTCk7Ci0rICAgICAgICBnb3RvIGVycjsKLSsgICAgfQotKyNlbmRpZgotIAotICAgICBjdHgg PSBCTl9DVFhfbmV3KCk7Ci0gICAgIGlmIChjdHggPT0gTlVMTCkKLUBAIC0yNzcsNiArMjk1LDkg QEAgc3RhdGljIGludCBkaF9ibl9tb2RfZXhwKGNvbnN0IERIICpkaCwgQgotIAotIHN0YXRpYyBp bnQgZGhfaW5pdChESCAqZGgpCi0gewotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgRklQU19z ZWxmdGVzdF9jaGVjaygpOwotKyNlbmRpZgotICAgICBkaC0+ZmxhZ3MgfD0gREhfRkxBR19DQUNI RV9NT05UX1A7Ci0gICAgIHJldHVybiAoMSk7Ci0gfQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkv Y3J5cHRvL2RoL2RoX2xpYi5jLmZpcHMgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2RoL2RoX2xpYi5j Ci0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2RoL2RoX2xpYi5jLmZpcHMJMjAxNi0wOS0yMiAx MjoyMzowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZGgvZGhf bGliLmMJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMDkyMjA4MTMgKzAyMDAKLUBAIC04MCwxNCArODAs NyBAQCB2b2lkIERIX3NldF9kZWZhdWx0X21ldGhvZChjb25zdCBESF9NRVRICi0gY29uc3QgREhf TUVUSE9EICpESF9nZXRfZGVmYXVsdF9tZXRob2Qodm9pZCkKLSB7Ci0gICAgIGlmICghZGVmYXVs dF9ESF9tZXRob2QpIHsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgICAgICBpZiAoRklQU19t b2RlKCkpCi0tICAgICAgICAgICAgcmV0dXJuIEZJUFNfZGhfb3BlbnNzbCgpOwotLSAgICAgICAg ZWxzZQotLSAgICAgICAgICAgIHJldHVybiBESF9PcGVuU1NMKCk7Ci0tI2Vsc2UKLSAgICAgICAg IGRlZmF1bHRfREhfbWV0aG9kID0gREhfT3BlblNTTCgpOwotLSNlbmRpZgotICAgICB9Ci0gICAg IHJldHVybiBkZWZhdWx0X0RIX21ldGhvZDsKLSB9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9j cnlwdG8vZHNhL2RzYV9lcnIuYy5maXBzIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kc2EvZHNhX2Vy ci5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2RzYS9kc2FfZXJyLmMuZmlwcwkyMDE2LTA5 LTIyIDEyOjIzOjA2LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9k c2EvZHNhX2Vyci5jCTIwMTYtMDktMjIgMTM6MzU6NTcuMDA5MjIwODEzICswMjAwCi1AQCAtNzQs NiArNzQsOCBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIERTQV9zdHJfZnVuY3RzW10KLSAgICAg e0VSUl9GVU5DKERTQV9GX0RPX0RTQV9QUklOVCksICJET19EU0FfUFJJTlQifSwKLSAgICAge0VS Ul9GVU5DKERTQV9GX0RTQVBBUkFNU19QUklOVCksICJEU0FwYXJhbXNfcHJpbnQifSwKLSAgICAg e0VSUl9GVU5DKERTQV9GX0RTQVBBUkFNU19QUklOVF9GUCksICJEU0FwYXJhbXNfcHJpbnRfZnAi fSwKLSsgICAge0VSUl9GVU5DKERTQV9GX0RTQV9CVUlMVElOX0tFWUdFTiksICJkc2FfYnVpbHRp bl9rZXlnZW4ifSwKLSsgICAge0VSUl9GVU5DKERTQV9GX0RTQV9CVUlMVElOX1BBUkFNR0VOKSwg ImRzYV9idWlsdGluX3BhcmFtZ2VuIn0sCi0gICAgIHtFUlJfRlVOQyhEU0FfRl9EU0FfQlVJTFRJ Tl9QQVJBTUdFTjIpLCAiRFNBX0JVSUxUSU5fUEFSQU1HRU4yIn0sCi0gICAgIHtFUlJfRlVOQyhE U0FfRl9EU0FfRE9fU0lHTiksICJEU0FfZG9fc2lnbiJ9LAotICAgICB7RVJSX0ZVTkMoRFNBX0Zf RFNBX0RPX1ZFUklGWSksICJEU0FfZG9fdmVyaWZ5In0sCi1AQCAtMTA5LDYgKzExMSw4IEBAIHN0 YXRpYyBFUlJfU1RSSU5HX0RBVEEgRFNBX3N0cl9yZWFzb25zW10KLSAgICAge0VSUl9SRUFTT04o RFNBX1JfREVDT0RFX0VSUk9SKSwgImRlY29kZSBlcnJvciJ9LAotICAgICB7RVJSX1JFQVNPTihE U0FfUl9JTlZBTElEX0RJR0VTVF9UWVBFKSwgImludmFsaWQgZGlnZXN0IHR5cGUifSwKLSAgICAg e0VSUl9SRUFTT04oRFNBX1JfSU5WQUxJRF9QQVJBTUVURVJTKSwgImludmFsaWQgcGFyYW1ldGVy cyJ9LAotKyAgICB7RVJSX1JFQVNPTihEU0FfUl9LRVlfU0laRV9JTlZBTElEKSwgImtleSBzaXpl IGludmFsaWQifSwKLSsgICAge0VSUl9SRUFTT04oRFNBX1JfS0VZX1NJWkVfVE9PX1NNQUxMKSwg ImtleSBzaXplIHRvbyBzbWFsbCJ9LAotICAgICB7RVJSX1JFQVNPTihEU0FfUl9NSVNTSU5HX1BB UkFNRVRFUlMpLCAibWlzc2luZyBwYXJhbWV0ZXJzIn0sCi0gICAgIHtFUlJfUkVBU09OKERTQV9S X01PRFVMVVNfVE9PX0xBUkdFKSwgIm1vZHVsdXMgdG9vIGxhcmdlIn0sCi0gICAgIHtFUlJfUkVB U09OKERTQV9SX05FRURfTkVXX1NFVFVQX1ZBTFVFUyksICJuZWVkIG5ldyBzZXR1cCB2YWx1ZXMi fSwKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kc2EvZHNhX2dlbi5jLmZpcHMgb3Bl bnNzbC0xLjAuMmkvY3J5cHRvL2RzYS9kc2FfZ2VuLmMKLS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlw dG8vZHNhL2RzYV9nZW4uYy5maXBzCTIwMTYtMDktMjIgMTI6MjM6MDYuMDAwMDAwMDAwICswMjAw Ci0rKysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2RzYS9kc2FfZ2VuLmMJMjAxNi0wOS0yMiAxMzo0 Mjo1NC4zODk4NDA2NjIgKzAyMDAKLUBAIC05MSw2ICs5MSwxNiBAQAotICMgIGluY2x1ZGUgPG9w ZW5zc2wvZmlwcy5oPgotICMgZW5kaWYKLSAKLSsjIGlmbmRlZiBPUEVOU1NMX0ZJUFMKLStzdGF0 aWMgaW50IEZJUFNfZHNhX2dlbmVyYXRlX3BxKEJOX0NUWCAqY3R4LCBzaXplX3QgYml0cywgc2l6 ZV90IHFiaXRzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRVZQX01E ICpldnBtZCwgdW5zaWduZWQgY2hhciAqc2VlZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBzZWVkX2xlbiwgQklHTlVNICoqcF9yZXQsIEJJR05VTSAqKnFfcmV0LAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpjb3VudGVyX3JldCwgQk5fR0VOQ0Ig KmNiKTsKLStzdGF0aWMgaW50IEZJUFNfZHNhX2dlbmVyYXRlX2coQk5fQ1RYICpjdHgsIEJJR05V TSAqcCwgQklHTlVNICpxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSUdOVU0g KipnX3JldCwgdW5zaWduZWQgbG9uZyAqaF9yZXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEJOX0dFTkNCICpjYik7Ci0rIyBlbmRpZgotKwotIGludCBEU0FfZ2VuZXJhdGVfcGFy YW1ldGVyc19leChEU0EgKnJldCwgaW50IGJpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlZWRfaW4sIGludCBzZWVkX2xlbiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpjb3VudGVyX3JldCwgdW5zaWduZWQgbG9u ZyAqaF9yZXQsCi1AQCAtMTA2LDgzICsxMTYsMTQ2IEBAIGludCBEU0FfZ2VuZXJhdGVfcGFyYW1l dGVyc19leChEU0EgKnJldCwKLSAgICAgaWYgKHJldC0+bWV0aC0+ZHNhX3BhcmFtZ2VuKQotICAg ICAgICAgcmV0dXJuIHJldC0+bWV0aC0+ZHNhX3BhcmFtZ2VuKHJldCwgYml0cywgc2VlZF9pbiwg c2VlZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRl cl9yZXQsIGhfcmV0LCBjYik7Ci0tIyBpZmRlZiBPUEVOU1NMX0ZJUFMKLS0gICAgZWxzZSBpZiAo RklQU19tb2RlKCkpIHsKLS0gICAgICAgIHJldHVybiBGSVBTX2RzYV9nZW5lcmF0ZV9wYXJhbWV0 ZXJzX2V4KHJldCwgYml0cywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlZWRfaW4sIHNlZWRfbGVuLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9yZXQsIGhfcmV0LCBjYik7Ci0tICAgIH0KLS0j IGVuZGlmCi0gICAgIGVsc2UgewotICAgICAgICAgY29uc3QgRVZQX01EICpldnBtZCA9IGJpdHMg Pj0gMjA0OCA/IEVWUF9zaGEyNTYoKSA6IEVWUF9zaGExKCk7Ci0gICAgICAgICBzaXplX3QgcWJp dHMgPSBFVlBfTURfc2l6ZShldnBtZCkgKiA4OwotIAotICAgICAgICAgcmV0dXJuIGRzYV9idWls dGluX3BhcmFtZ2VuKHJldCwgYml0cywgcWJpdHMsIGV2cG1kLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlZWRfaW4sIHNlZWRfbGVuLCBOVUxMLCBjb3VudGVyX3JldCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVkX2luLCBzZWVkX2xlbiwg Y291bnRlcl9yZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaF9yZXQs IGNiKTsKLSAgICAgfQotIH0KLSAKLSsjIGlmZGVmIE9QRU5TU0xfRklQUwotK2ludCBGSVBTX2Rz YV9idWlsdGluX3BhcmFtZ2VuKERTQSAqcmV0LCBzaXplX3QgYml0cywgc2l6ZV90IHFiaXRzLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVWUF9NRCAqZXZwbWQsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2VlZF9pbiwg c2l6ZV90IHNlZWRfbGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY291 bnRlcl9yZXQsIHVuc2lnbmVkIGxvbmcgKmhfcmV0LAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEJOX0dFTkNCICpjYikKLSt7Ci0rICAgIHJldHVybiBkc2FfYnVpbHRpbl9wYXJhbWdl bihyZXQsIGJpdHMsIHFiaXRzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZw bWQsIHNlZWRfaW4sIHNlZWRfbGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y291bnRlcl9yZXQsIGhfcmV0LCBjYik7Ci0rfQotKyMgZW5kaWYKLSsKLSBpbnQgZHNhX2J1aWx0 aW5fcGFyYW1nZW4oRFNBICpyZXQsIHNpemVfdCBiaXRzLCBzaXplX3QgcWJpdHMsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IEVWUF9NRCAqZXZwbWQsIGNvbnN0IHVuc2lnbmVkIGNo YXIgKnNlZWRfaW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzZWVkX2xlbiwg dW5zaWduZWQgY2hhciAqc2VlZF9vdXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf dCBzZWVkX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpjb3VudGVyX3JldCwg dW5zaWduZWQgbG9uZyAqaF9yZXQsIEJOX0dFTkNCICpjYikKLSB7Ci0gICAgIGludCBvayA9IDA7 Ci0gICAgIHVuc2lnbmVkIGNoYXIgc2VlZFtTSEEyNTZfRElHRVNUX0xFTkdUSF07Ci0rICAgIEJJ R05VTSAqZyA9IE5VTEwsICpxID0gTlVMTCwgKnAgPSBOVUxMOwotKyAgICBzaXplX3QgcXNpemUg PSBxYml0cyA+PiAzOwotKyAgICBCTl9DVFggKmN0eCA9IE5VTEw7Ci0rICAgIAotKyMgaWZkZWYg T1BFTlNTTF9GSVBTCi0rICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7Ci0rICAgICAg ICBGSVBTZXJyKEZJUFNfRl9EU0FfQlVJTFRJTl9QQVJBTUdFTiwgRklQU19SX0ZJUFNfU0VMRlRF U1RfRkFJTEVEKTsKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICB9Ci0rCi0rICAgIGlmIChGSVBT X21vZHVsZV9tb2RlKCkgJiYKLSsgICAgICAgIChiaXRzICE9IDEwMjQgfHwgcWJpdHMgIT0gMTYw KSAmJgotKyAgICAgICAgKGJpdHMgIT0gMjA0OCB8fCBxYml0cyAhPSAyMjQpICYmCi0rICAgICAg ICAoYml0cyAhPSAyMDQ4IHx8IHFiaXRzICE9IDI1NikgJiYgKGJpdHMgIT0gMzA3MiB8fCBxYml0 cyAhPSAyNTYpKSB7Ci0rICAgICAgICBEU0FlcnIoRFNBX0ZfRFNBX0JVSUxUSU5fUEFSQU1HRU4s IERTQV9SX0tFWV9TSVpFX0lOVkFMSUQpOwotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsj IGVuZGlmCi0rICAgIGlmIChzZWVkX2xlbiAmJiAoc2VlZF9sZW4gPCAoc2l6ZV90KXFzaXplKSkK LSsgICAgICAgIHNlZWRfaW4gPSBOVUxMOyAgICAgICAgIC8qIHNlZWQgYnVmZmVyIHRvbyBzbWFs bCAtLSBpZ25vcmUgKi8KLSsgICAgaWYgKHNlZWRfbGVuID4gc2l6ZW9mKHNlZWQpKQotKyAgICAg ICAgc2VlZF9sZW4gPSBzaXplb2Yoc2VlZCk7IC8qIEFwcC4gMi4yIG9mIEZJUFMgUFVCIDE4NiBh bGxvd3MgbGFyZ2VyIFNFRUQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICog YnV0IG91ciBpbnRlcm5hbCBidWZmZXJzIGFyZSByZXN0cmljdGVkIHRvIDI1NiBiaXRzKi8KLSsg ICAgaWYgKHNlZWRfaW4gIT0gTlVMTCkKLSsgICAgICAgIG1lbWNweShzZWVkLCBzZWVkX2luLCBz ZWVkX2xlbik7Ci0rICAgIGVsc2UKLSsgICAgICAgIHNlZWRfbGVuID0gMDsKLSsgICAgICAgIAot KyAgICBpZiAoKGN0eCA9IEJOX0NUWF9uZXcoKSkgPT0gTlVMTCkKLSsgICAgICAgIGdvdG8gZXJy OwotKyAKLSsgICAgQk5fQ1RYX3N0YXJ0KGN0eCk7Ci0rIAotKyAgICBpZiAoIUZJUFNfZHNhX2dl bmVyYXRlX3BxKGN0eCwgYml0cywgcWJpdHMsIGV2cG1kLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlZWQsIHNlZWRfbGVuLCAmcCwgJnEsIGNvdW50ZXJfcmV0LCBjYikpCi0rICAg ICAgICBnb3RvIGVycjsKLSsgCi0rICAgIGlmICghRklQU19kc2FfZ2VuZXJhdGVfZyhjdHgsIHAs IHEsICZnLCBoX3JldCwgY2IpKQotKyAgICAgICAgZ290byBlcnI7Ci0rIAotKyAgICBvayA9IDE7 Ci0rIGVycjoKLSsgICAgaWYgKG9rKSB7Ci0rICAgICAgICBpZiAocmV0LT5wKSB7Ci0rICAgICAg ICAgICAgQk5fZnJlZShyZXQtPnApOwotKyAgICAgICAgICAgIHJldC0+cCA9IE5VTEw7Ci0rICAg ICAgICB9Ci0rICAgICAgICBpZiAocmV0LT5xKSB7Ci0rICAgICAgICAgICAgQk5fZnJlZShyZXQt PnEpOwotKyAgICAgICAgICAgIHJldC0+cSA9IE5VTEw7Ci0rICAgICAgICB9Ci0rICAgICAgICBp ZiAocmV0LT5nKSB7Ci0rICAgICAgICAgICAgQk5fZnJlZShyZXQtPmcpOwotKyAgICAgICAgICAg IHJldC0+ZyA9IE5VTEw7Ci0rICAgICAgICB9Ci0rICAgICAgICByZXQtPnAgPSBCTl9kdXAocCk7 Ci0rICAgICAgICByZXQtPnEgPSBCTl9kdXAocSk7Ci0rICAgICAgICByZXQtPmcgPSBCTl9kdXAo Zyk7Ci0rICAgICAgICBpZiAocmV0LT5wID09IE5VTEwgfHwgcmV0LT5xID09IE5VTEwgfHwgcmV0 LT5nID09IE5VTEwpCi0rICAgICAgICAgICAgb2sgPSAwOwotKyAgICB9Ci0rICAgIGlmIChjdHgp IHsKLSsgICAgICAgIEJOX0NUWF9lbmQoY3R4KTsKLSsgICAgICAgIEJOX0NUWF9mcmVlKGN0eCk7 Ci0rICAgIH0KLSsgICAgcmV0dXJuIG9rOwotK30KLSsKLSsjIGlmbmRlZiBPUEVOU1NMX0ZJUFMK LStzdGF0aWMKLSsjIGVuZGlmCi0raW50IEZJUFNfZHNhX2dlbmVyYXRlX3BxKEJOX0NUWCAqY3R4 LCBzaXplX3QgYml0cywgc2l6ZV90IHFiaXRzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBFVlBfTUQgKmV2cG1kLCB1bnNpZ25lZCBjaGFyICpzZWVkLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgc2VlZF9sZW4sIEJJR05VTSAqKnBfcmV0LCBCSUdOVU0gKipxX3JldCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpjb3VudGVyX3JldCwgQk5fR0VOQ0IgKmNi KQotK3sKLSsgICAgaW50IG9rID0gMDsKLSAgICAgdW5zaWduZWQgY2hhciBtZFtTSEEyNTZfRElH RVNUX0xFTkdUSF07Ci0tICAgIHVuc2lnbmVkIGNoYXIgYnVmW1NIQTI1Nl9ESUdFU1RfTEVOR1RI XSwgYnVmMltTSEEyNTZfRElHRVNUX0xFTkdUSF07Ci0rICAgIHVuc2lnbmVkIGNoYXIgYnVmW1NI QTI1Nl9ESUdFU1RfTEVOR1RIXTsKLSAgICAgQklHTlVNICpyMCwgKlcsICpYLCAqYywgKnRlc3Q7 Ci0tICAgIEJJR05VTSAqZyA9IE5VTEwsICpxID0gTlVMTCwgKnAgPSBOVUxMOwotLSAgICBCTl9N T05UX0NUWCAqbW9udCA9IE5VTEw7Ci0tICAgIGludCBpLCBrLCBuID0gMCwgbSA9IDAsIHFzaXpl ID0gcWJpdHMgPj4gMzsKLSsgICAgQklHTlVNICpxID0gTlVMTCwgKnAgPSBOVUxMOwotKyAgICBp bnQgaSwgaywgYiwgbiA9IDAsIG0gPSAwLCBxc2l6ZSA9IHFiaXRzID4+IDM7Ci0gICAgIGludCBj b3VudGVyID0gMDsKLSAgICAgaW50IHIgPSAwOwotLSAgICBCTl9DVFggKmN0eCA9IE5VTEw7Ci0t ICAgIHVuc2lnbmVkIGludCBoID0gMjsKLSAKLSAgICAgaWYgKHFzaXplICE9IFNIQV9ESUdFU1Rf TEVOR1RIICYmIHFzaXplICE9IFNIQTIyNF9ESUdFU1RfTEVOR1RIICYmCi0gICAgICAgICBxc2l6 ZSAhPSBTSEEyNTZfRElHRVNUX0xFTkdUSCkKLSAgICAgICAgIC8qIGludmFsaWQgcSBzaXplICov Ci0gICAgICAgICByZXR1cm4gMDsKLSAKLS0gICAgaWYgKGV2cG1kID09IE5VTEwpCi0tICAgICAg ICAvKiB1c2UgU0hBMSBhcyBkZWZhdWx0ICovCi0rICAgIGlmIChldnBtZCA9PSBOVUxMKSB7Ci0r ICAgICAgICBpZiAocWJpdHMgPD0gMTYwKQotICAgICAgICAgZXZwbWQgPSBFVlBfc2hhMSgpOwot KyAgICAgICAgZWxzZSBpZiAocWJpdHMgPD0gMjI0KQotKyAgICAgICAgICAgIGV2cG1kID0gRVZQ X3NoYTIyNCgpOwotKyAgICAgICAgZWxzZQotKyAgICAgICAgICAgIGV2cG1kID0gRVZQX3NoYTI1 NigpOwotKyAgICB9Ci0gCi0gICAgIGlmIChiaXRzIDwgNTEyKQotICAgICAgICAgYml0cyA9IDUx MjsKLSAKLSAgICAgYml0cyA9IChiaXRzICsgNjMpIC8gNjQgKiA2NDsKLSAKLS0gICAgLyoKLS0g ICAgICogTkI6IHNlZWRfbGVuID09IDAgaXMgc3BlY2lhbCBjYXNlOiBjb3B5IGdlbmVyYXRlZCBz ZWVkIHRvIHNlZWRfaW4gaWYKLS0gICAgICogaXQgaXMgbm90IE5VTEwuCi0tICAgICAqLwotLSAg ICBpZiAoc2VlZF9sZW4gJiYgKHNlZWRfbGVuIDwgKHNpemVfdClxc2l6ZSkpCi0tICAgICAgICBz ZWVkX2luID0gTlVMTDsgICAgICAgICAvKiBzZWVkIGJ1ZmZlciB0b28gc21hbGwgLS0gaWdub3Jl ICovCi0tICAgIGlmIChzZWVkX2xlbiA+IChzaXplX3QpcXNpemUpCi0tICAgICAgICBzZWVkX2xl biA9IHFzaXplOyAgICAgICAvKiBBcHAuIDIuMiBvZiBGSVBTIFBVQiAxODYgYWxsb3dzIGxhcmdl cgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogU0VFRCwgYnV0IG91ciBpbnRl cm5hbCBidWZmZXJzIGFyZQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcmVz dHJpY3RlZCB0byAxNjAgYml0cyAqLwotLSAgICBpZiAoc2VlZF9pbiAhPSBOVUxMKQotLSAgICAg ICAgbWVtY3B5KHNlZWQsIHNlZWRfaW4sIHNlZWRfbGVuKTsKLS0KLS0gICAgaWYgKChtb250ID0g Qk5fTU9OVF9DVFhfbmV3KCkpID09IE5VTEwpCi0tICAgICAgICBnb3RvIGVycjsKLS0KLS0gICAg aWYgKChjdHggPSBCTl9DVFhfbmV3KCkpID09IE5VTEwpCi0tICAgICAgICBnb3RvIGVycjsKLS0K LS0gICAgQk5fQ1RYX3N0YXJ0KGN0eCk7Ci0tCi0gICAgIHIwID0gQk5fQ1RYX2dldChjdHgpOwot LSAgICBnID0gQk5fQ1RYX2dldChjdHgpOwotICAgICBXID0gQk5fQ1RYX2dldChjdHgpOwotLSAg ICBxID0gQk5fQ1RYX2dldChjdHgpOwotKyAgICAqcV9yZXQgPSBxID0gQk5fQ1RYX2dldChjdHgp OwotICAgICBYID0gQk5fQ1RYX2dldChjdHgpOwotICAgICBjID0gQk5fQ1RYX2dldChjdHgpOwot LSAgICBwID0gQk5fQ1RYX2dldChjdHgpOwotKyAgICAqcF9yZXQgPSBwID0gQk5fQ1RYX2dldChj dHgpOwotICAgICB0ZXN0ID0gQk5fQ1RYX2dldChjdHgpOwotIAotICAgICBpZiAodGVzdCA9PSBO VUxMKQotQEAgLTE5MSwxNSArMjY0LDIwIEBAIGludCBkc2FfYnVpbHRpbl9wYXJhbWdlbihEU0Eg KnJldCwgc2l6ZV8KLSAgICAgaWYgKCFCTl9sc2hpZnQodGVzdCwgQk5fdmFsdWVfb25lKCksIGJp dHMgLSAxKSkKLSAgICAgICAgIGdvdG8gZXJyOwotIAotKyAgICAvKiBzdGVwIDMgbiA9IFxsY2Vp bCBiaXRzIC8gcWJpdHMgXHJjZWlsIC0gMSAqLwotKyAgICBuID0gKGJpdHMgKyBxYml0cyAtIDEp IC8gcWJpdHMgLSAxOwotKyAgICAvKiBzdGVwIDQgYiA9IGJpdHMgLSAxIC0gbiAqIHFiaXRzICov Ci0rICAgIGIgPSBiaXRzIC0gMSAtIG4gKiBxYml0czsKLSsKLSAgICAgZm9yICg7OykgewotICAg ICAgICAgZm9yICg7OykgeyAgICAgICAgICAgICAgLyogZmluZCBxICovCi0gICAgICAgICAgICAg aW50IHNlZWRfaXNfcmFuZG9tOwotIAotLSAgICAgICAgICAgIC8qIHN0ZXAgMSAqLwotKyAgICAg ICAgICAgIC8qIHN0ZXAgNSBnZW5lcmF0ZSBzZWVkICovCi0gICAgICAgICAgICAgaWYgKCFCTl9H RU5DQl9jYWxsKGNiLCAwLCBtKyspKQotICAgICAgICAgICAgICAgICBnb3RvIGVycjsKLSAKLS0g ICAgICAgICAgICBpZiAoIXNlZWRfbGVuIHx8ICFzZWVkX2luKSB7Ci0rICAgICAgICAgICAgaWYg KCFzZWVkX2xlbikgewotICAgICAgICAgICAgICAgICBpZiAoUkFORF9ieXRlcyhzZWVkLCBxc2l6 ZSkgPD0gMCkKLSAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOwotICAgICAgICAgICAgICAg ICBzZWVkX2lzX3JhbmRvbSA9IDE7Ci1AQCAtMjA5LDI5ICsyODcsMTggQEAgaW50IGRzYV9idWls dGluX3BhcmFtZ2VuKERTQSAqcmV0LCBzaXplXwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICogYmUgYmFkICovCi0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIG1lbWNweShi dWYsIHNlZWQsIHFzaXplKTsKLS0gICAgICAgICAgICBtZW1jcHkoYnVmMiwgc2VlZCwgcXNpemUp OwotLSAgICAgICAgICAgIC8qIHByZWNvbXB1dGUgIlNFRUQgKyAxIiBmb3Igc3RlcCA3OiAqLwot LSAgICAgICAgICAgIGZvciAoaSA9IHFzaXplIC0gMTsgaSA+PSAwOyBpLS0pIHsKLS0gICAgICAg ICAgICAgICAgYnVmW2ldKys7Ci0tICAgICAgICAgICAgICAgIGlmIChidWZbaV0gIT0gMCkKLS0g ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgICAgIH0KLSAKLS0gICAgICAgICAg ICAvKiBzdGVwIDIgKi8KLSsgICAgICAgICAgICAvKiBzdGVwIDYgVSA9IGhhc2goc2VlZCkgKi8K LSAgICAgICAgICAgICBpZiAoIUVWUF9EaWdlc3Qoc2VlZCwgcXNpemUsIG1kLCBOVUxMLCBldnBt ZCwgTlVMTCkpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyOwotLSAgICAgICAgICAgIGlmICgh RVZQX0RpZ2VzdChidWYsIHFzaXplLCBidWYyLCBOVUxMLCBldnBtZCwgTlVMTCkpCi0tICAgICAg ICAgICAgICAgIGdvdG8gZXJyOwotLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBxc2l6ZTsg aSsrKQotLSAgICAgICAgICAgICAgICBtZFtpXSBePSBidWYyW2ldOwotIAotLSAgICAgICAgICAg IC8qIHN0ZXAgMyAqLwotKyAgICAgICAgICAgIC8qIHN0ZXAgNyBxID0gMl4ocWJpdHMtMSkgKyBV ICsgMSAtIChVIG1vZCAyKSAqLwotICAgICAgICAgICAgIG1kWzBdIHw9IDB4ODA7Ci0gICAgICAg ICAgICAgbWRbcXNpemUgLSAxXSB8PSAweDAxOwotICAgICAgICAgICAgIGlmICghQk5fYmluMmJu KG1kLCBxc2l6ZSwgcSkpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyOwotIAotLSAgICAgICAg ICAgIC8qIHN0ZXAgNCAqLwotKyAgICAgICAgICAgIC8qIHN0ZXAgOCB0ZXN0IGZvciBwcmltZSAo NjQgcm91bmQgb2YgUmFiaW4tTWlsbGVyKSAqLwotICAgICAgICAgICAgIHIgPSBCTl9pc19wcmlt ZV9mYXN0dGVzdF9leChxLCBEU1NfcHJpbWVfY2hlY2tzLCBjdHgsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlZWRfaXNfcmFuZG9tLCBjYik7Ci0gICAgICAgICAg ICAgaWYgKHIgPiAwKQotQEAgLTIzOSw4ICszMDYsNiBAQCBpbnQgZHNhX2J1aWx0aW5fcGFyYW1n ZW4oRFNBICpyZXQsIHNpemVfCi0gICAgICAgICAgICAgaWYgKHIgIT0gMCkKLSAgICAgICAgICAg ICAgICAgZ290byBlcnI7Ci0gCi0tICAgICAgICAgICAgLyogZG8gYSBjYWxsYmFjayBjYWxsICov Ci0tICAgICAgICAgICAgLyogc3RlcCA1ICovCi0gICAgICAgICB9Ci0gCi0gICAgICAgICBpZiAo IUJOX0dFTkNCX2NhbGwoY2IsIDIsIDApKQotQEAgLTI0OCwxOSArMzEzLDE2IEBAIGludCBkc2Ff YnVpbHRpbl9wYXJhbWdlbihEU0EgKnJldCwgc2l6ZV8KLSAgICAgICAgIGlmICghQk5fR0VOQ0Jf Y2FsbChjYiwgMywgMCkpCi0gICAgICAgICAgICAgZ290byBlcnI7Ci0gCi0tICAgICAgICAvKiBz dGVwIDYgKi8KLSsgICAgICAgIC8qIHN0ZXAgMTEgKi8KLSAgICAgICAgIGNvdW50ZXIgPSAwOwot LSAgICAgICAgLyogIm9mZnNldCA9IDIiICovCi0tCi0tICAgICAgICBuID0gKGJpdHMgLSAxKSAv IDE2MDsKLSsgICAgICAgIC8qICJvZmZzZXQgPSAxIiAqLwotIAotICAgICAgICAgZm9yICg7Oykg ewotICAgICAgICAgICAgIGlmICgoY291bnRlciAhPSAwKSAmJiAhQk5fR0VOQ0JfY2FsbChjYiwg MCwgY291bnRlcikpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyOwotIAotLSAgICAgICAgICAg IC8qIHN0ZXAgNyAqLwotKyAgICAgICAgICAgIC8qIHN0ZXAgMTEuMSwgMTEuMiBvYnRhaW4gVyAq LwotICAgICAgICAgICAgIEJOX3plcm8oVyk7Ci0tICAgICAgICAgICAgLyogbm93ICdidWYnIGNv bnRhaW5zICJTRUVEICsgb2Zmc2V0IC0gMSIgKi8KLSAgICAgICAgICAgICBmb3IgKGsgPSAwOyBr IDw9IG47IGsrKykgewotICAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICAgKiBv YnRhaW4gIlNFRUQgKyBvZmZzZXQgKyBrIiBieSBpbmNyZW1lbnRpbmc6Ci1AQCAtMjc0LDM2ICsz MzYsMzcgQEAgaW50IGRzYV9idWlsdGluX3BhcmFtZ2VuKERTQSAqcmV0LCBzaXplXwotICAgICAg ICAgICAgICAgICBpZiAoIUVWUF9EaWdlc3QoYnVmLCBxc2l6ZSwgbWQsIE5VTEwsIGV2cG1kLCBO VUxMKSkKLSAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOwotIAotLSAgICAgICAgICAgICAg ICAvKiBzdGVwIDggKi8KLSAgICAgICAgICAgICAgICAgaWYgKCFCTl9iaW4yYm4obWQsIHFzaXpl LCByMCkpCi0gICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsKLS0gICAgICAgICAgICAgICAg aWYgKCFCTl9sc2hpZnQocjAsIHIwLCAocXNpemUgPDwgMykgKiBrKSkKLSsgICAgICAgICAgICAg ICAgaWYgKGsgPT0gbikKLSsgICAgICAgICAgICAgICAgICAgIEJOX21hc2tfYml0cyhyMCwgYik7 Ci0rICAgICAgICAgICAgICAgIGlmICghQk5fbHNoaWZ0KHIwLCByMCwgcWJpdHMgKiBrKSkKLSAg ICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOwotICAgICAgICAgICAgICAgICBpZiAoIUJOX2Fk ZChXLCBXLCByMCkpCi0gICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsKLSAgICAgICAgICAg ICB9Ci0gCi0tICAgICAgICAgICAgLyogbW9yZSBvZiBzdGVwIDggKi8KLS0gICAgICAgICAgICBp ZiAoIUJOX21hc2tfYml0cyhXLCBiaXRzIC0gMSkpCi0tICAgICAgICAgICAgICAgIGdvdG8gZXJy OwotKyAgICAgICAgICAgIC8qIHN0ZXAgMTEuMyBYID0gVyArIDJeKEwtMSkgKi8KLSAgICAgICAg ICAgICBpZiAoIUJOX2NvcHkoWCwgVykpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyOwotICAg ICAgICAgICAgIGlmICghQk5fYWRkKFgsIFgsIHRlc3QpKQotICAgICAgICAgICAgICAgICBnb3Rv IGVycjsKLSAKLS0gICAgICAgICAgICAvKiBzdGVwIDkgKi8KLSsgICAgICAgICAgICAvKiBzdGVw IDExLjQgYyA9IFggbW9kIDIqcSAqLwotICAgICAgICAgICAgIGlmICghQk5fbHNoaWZ0MShyMCwg cSkpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyOwotICAgICAgICAgICAgIGlmICghQk5fbW9k KGMsIFgsIHIwLCBjdHgpKQotICAgICAgICAgICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgICAg ICAgICAvKiBzdGVwIDExLjUgcCA9IFggLSAoYyAtIDEpICovCi0gICAgICAgICAgICAgaWYgKCFC Tl9zdWIocjAsIGMsIEJOX3ZhbHVlX29uZSgpKSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnI7 Ci0gICAgICAgICAgICAgaWYgKCFCTl9zdWIocCwgWCwgcjApKQotICAgICAgICAgICAgICAgICBn b3RvIGVycjsKLSAKLS0gICAgICAgICAgICAvKiBzdGVwIDEwICovCi0rICAgICAgICAgICAgLyog c3RlcCAxMS42ICovCi0gICAgICAgICAgICAgaWYgKEJOX2NtcChwLCB0ZXN0KSA+PSAwKSB7Ci0t ICAgICAgICAgICAgICAgIC8qIHN0ZXAgMTEgKi8KLSsgICAgICAgICAgICAgICAgLyogc3RlcCAx MS43ICovCi0gICAgICAgICAgICAgICAgIHIgPSBCTl9pc19wcmltZV9mYXN0dGVzdF9leChwLCBE U1NfcHJpbWVfY2hlY2tzLCBjdHgsIDEsIGNiKTsKLSAgICAgICAgICAgICAgICAgaWYgKHIgPiAw KQotICAgICAgICAgICAgICAgICAgICAgZ290byBlbmQ7ICAgLyogZm91bmQgaXQgKi8KLUBAIC0z MTEsMTIgKzM3NCwxMiBAQCBpbnQgZHNhX2J1aWx0aW5fcGFyYW1nZW4oRFNBICpyZXQsIHNpemVf Ci0gICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsKLSAgICAgICAgICAgICB9Ci0gCi0tICAg ICAgICAgICAgLyogc3RlcCAxMyAqLwotKyAgICAgICAgICAgIC8qIHN0ZXAgMTEuOSAqLwotICAg ICAgICAgICAgIGNvdW50ZXIrKzsKLSAgICAgICAgICAgICAvKiAib2Zmc2V0ID0gb2Zmc2V0ICsg biArIDEiICovCi0gCi0tICAgICAgICAgICAgLyogc3RlcCAxNCAqLwotLSAgICAgICAgICAgIGlm IChjb3VudGVyID49IDQwOTYpCi0rICAgICAgICAgICAgLyogc3RlcCAxMiAqLwotKyAgICAgICAg ICAgIGlmIChjb3VudGVyID49IDQgKiBiaXRzKQotICAgICAgICAgICAgICAgICBicmVhazsKLSAg ICAgICAgIH0KLSAgICAgfQotQEAgLTMyNCw3ICszODcsMzMgQEAgaW50IGRzYV9idWlsdGluX3Bh cmFtZ2VuKERTQSAqcmV0LCBzaXplXwotICAgICBpZiAoIUJOX0dFTkNCX2NhbGwoY2IsIDIsIDEp KQotICAgICAgICAgZ290byBlcnI7Ci0gCi0tICAgIC8qIFdlIG5vdyBuZWVkIHRvIGdlbmVyYXRl IGcgKi8KLSsgICAgb2sgPSAxOwotKyBlcnI6Ci0rICAgIGlmIChvaykgewotKyAgICAgICAgaWYg KGNvdW50ZXJfcmV0ICE9IE5VTEwpCi0rICAgICAgICAgICAgKmNvdW50ZXJfcmV0ID0gY291bnRl cjsKLSsgICAgfQotKyAgICByZXR1cm4gb2s7Ci0rfQotKwotKyMgaWZuZGVmIE9QRU5TU0xfRklQ UwotK3N0YXRpYwotKyMgZW5kaWYKLStpbnQgRklQU19kc2FfZ2VuZXJhdGVfZyhCTl9DVFggKmN0 eCwgQklHTlVNICpwLCBCSUdOVU0gKnEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgQklHTlVN ICoqZ19yZXQsIHVuc2lnbmVkIGxvbmcgKmhfcmV0LCBCTl9HRU5DQiAqY2IpCi0rewotKyAgICBp bnQgb2sgPSAwOwotKyAgICBCSUdOVU0gKnIwLCAqdGVzdCwgKmcgPSBOVUxMOwotKyAgICBCTl9N T05UX0NUWCAqbW9udDsKLSsgICAgdW5zaWduZWQgaW50IGggPSAyOwotKwotKyAgICBpZiAoKG1v bnQgPSBCTl9NT05UX0NUWF9uZXcoKSkgPT0gTlVMTCkKLSsgICAgICAgIGdvdG8gZXJyOwotKwot KyAgICByMCA9IEJOX0NUWF9nZXQoY3R4KTsKLSsgICAgKmdfcmV0ID0gZyA9IEJOX0NUWF9nZXQo Y3R4KTsKLSsgICAgdGVzdCA9IEJOX0NUWF9nZXQoY3R4KTsKLSsKLSAgICAgLyogU2V0IHIwPShw LTEpL3EgKi8KLSAgICAgaWYgKCFCTl9zdWIodGVzdCwgcCwgQk5fdmFsdWVfb25lKCkpKQotICAg ICAgICAgZ290byBlcnI7Ci1AQCAtMzUzLDQ2ICs0NDIsMTQgQEAgaW50IGRzYV9idWlsdGluX3Bh cmFtZ2VuKERTQSAqcmV0LCBzaXplXwotICAgICBvayA9IDE7Ci0gIGVycjoKLSAgICAgaWYgKG9r KSB7Ci0tICAgICAgICBpZiAocmV0LT5wKQotLSAgICAgICAgICAgIEJOX2ZyZWUocmV0LT5wKTsK LS0gICAgICAgIGlmIChyZXQtPnEpCi0tICAgICAgICAgICAgQk5fZnJlZShyZXQtPnEpOwotLSAg ICAgICAgaWYgKHJldC0+ZykKLS0gICAgICAgICAgICBCTl9mcmVlKHJldC0+Zyk7Ci0tICAgICAg ICByZXQtPnAgPSBCTl9kdXAocCk7Ci0tICAgICAgICByZXQtPnEgPSBCTl9kdXAocSk7Ci0tICAg ICAgICByZXQtPmcgPSBCTl9kdXAoZyk7Ci0tICAgICAgICBpZiAocmV0LT5wID09IE5VTEwgfHwg cmV0LT5xID09IE5VTEwgfHwgcmV0LT5nID09IE5VTEwpIHsKLS0gICAgICAgICAgICBvayA9IDA7 Ci0tICAgICAgICAgICAgZ290byBlcnI7Ci0tICAgICAgICB9Ci0tICAgICAgICBpZiAoY291bnRl cl9yZXQgIT0gTlVMTCkKLS0gICAgICAgICAgICAqY291bnRlcl9yZXQgPSBjb3VudGVyOwotICAg ICAgICAgaWYgKGhfcmV0ICE9IE5VTEwpCi0gICAgICAgICAgICAgKmhfcmV0ID0gaDsKLS0gICAg ICAgIGlmIChzZWVkX291dCkKLS0gICAgICAgICAgICBtZW1jcHkoc2VlZF9vdXQsIHNlZWQsIHFz aXplKTsKLS0gICAgfQotLSAgICBpZiAoY3R4KSB7Ci0tICAgICAgICBCTl9DVFhfZW5kKGN0eCk7 Ci0tICAgICAgICBCTl9DVFhfZnJlZShjdHgpOwotICAgICB9Ci0gICAgIGlmIChtb250ICE9IE5V TEwpCi0gICAgICAgICBCTl9NT05UX0NUWF9mcmVlKG1vbnQpOwotICAgICByZXR1cm4gb2s7Ci0g fQotIAotLSMgaWZkZWYgT1BFTlNTTF9GSVBTCi0tIyAgdW5kZWYgZmlwc19kc2FfYnVpbHRpbl9w YXJhbWdlbjIKLS1leHRlcm4gaW50IGZpcHNfZHNhX2J1aWx0aW5fcGFyYW1nZW4yKERTQSAqcmV0 LCBzaXplX3QgTCwgc2l6ZV90IE4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBFVlBfTUQgKmV2cG1kLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2VlZF9pbiwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzZWVkX2xlbiwgaW50IGlkeCwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNlZWRfb3V0LAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpjb3VudGVyX3JldCwg dW5zaWduZWQgbG9uZyAqaF9yZXQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBCTl9HRU5DQiAqY2IpOwotLSMgZW5kaWYKLS0KLSAvKgotICAqIFRoaXMgaXMgYSBwYXJh bWV0ZXIgZ2VuZXJhdGlvbiBhbGdvcml0aG0gZm9yIHRoZSBEU0EyIGFsZ29yaXRobSBhcwotICAq IGRlc2NyaWJlZCBpbiBGSVBTIDE4Ni0zLgotQEAgLTQxOCwxNCArNDc1LDYgQEAgaW50IGRzYV9i dWlsdGluX3BhcmFtZ2VuMihEU0EgKnJldCwgc2l6ZQotICAgICBFVlBfTURfQ1RYIG1jdHg7Ci0g ICAgIHVuc2lnbmVkIGludCBoID0gMjsKLSAKLS0jIGlmZGVmIE9QRU5TU0xfRklQUwotLQotLSAg ICBpZiAoRklQU19tb2RlKCkpCi0tICAgICAgICByZXR1cm4gZmlwc19kc2FfYnVpbHRpbl9wYXJh bWdlbjIocmV0LCBMLCBOLCBldnBtZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWVkX2luLCBzZWVkX2xlbiwgaWR4LAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlZWRfb3V0LCBjb3VudGVyX3JldCwgaF9yZXQsIGNiKTsK LS0jIGVuZGlmCi0tCi0gICAgIEVWUF9NRF9DVFhfaW5pdCgmbWN0eCk7Ci0gCi0gICAgIGlmIChl dnBtZCA9PSBOVUxMKSB7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZHNhL2RzYS5o LmZpcHMgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2RzYS9kc2EuaAotLS0tIG9wZW5zc2wtMS4wLjJp L2NyeXB0by9kc2EvZHNhLmguZmlwcwkyMDE2LTA5LTIyIDEzOjM1OjU2Ljc4OTIxNTc0MiArMDIw MAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kc2EvZHNhLmgJMjAxNi0wOS0yMiAxMzozNTo1 Ny4wMTAyMjA4MzYgKzAyMDAKLUBAIC04OCw2ICs4OCw4IEBACi0gIyAgZGVmaW5lIE9QRU5TU0xf RFNBX01BWF9NT0RVTFVTX0JJVFMgICAxMDAwMAotICMgZW5kaWYKLSAKLSsjIGRlZmluZSBPUEVO U1NMX0RTQV9GSVBTX01JTl9NT0RVTFVTX0JJVFMgMTAyNAotKwotICMgZGVmaW5lIERTQV9GTEFH X0NBQ0hFX01PTlRfUCAgIDB4MDEKLSAvKgotICAqIG5ldyB3aXRoIDAuOS43aDsgdGhlIGJ1aWx0 LWluIERTQSBpbXBsZW1lbnRhdGlvbiBub3cgdXNlcyBjb25zdGFudCB0aW1lCi1AQCAtMjY1LDYg KzI2NywyMCBAQCBpbnQgRFNBX3ByaW50X2ZwKEZJTEUgKmJwLCBjb25zdCBEU0EgKngsCi0gREgg KkRTQV9kdXBfREgoY29uc3QgRFNBICpyKTsKLSAjIGVuZGlmCi0gCi0rIyBpZmRlZiBPUEVOU1NM X0ZJUFMKLStpbnQgRklQU19kc2FfYnVpbHRpbl9wYXJhbWdlbihEU0EgKnJldCwgc2l6ZV90IGJp dHMsIHNpemVfdCBxYml0cywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBF VlBfTUQgKmV2cG1kLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln bmVkIGNoYXIgKnNlZWRfaW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90 IHNlZWRfbGVuLCBpbnQgKmNvdW50ZXJfcmV0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgKmhfcmV0LCBCTl9HRU5DQiAqY2IpOwotK2ludCBGSVBTX2RzYV9n ZW5lcmF0ZV9wcShCTl9DVFggKmN0eCwgc2l6ZV90IGJpdHMsIHNpemVfdCBxYml0cywKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgRVZQX01EICpldnBtZCwgdW5zaWduZWQgY2hhciAq c2VlZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlZWRfbGVuLCBCSUdOVU0gKipw X3JldCwgQklHTlVNICoqcV9yZXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY291 bnRlcl9yZXQsIEJOX0dFTkNCICpjYik7Ci0raW50IEZJUFNfZHNhX2dlbmVyYXRlX2coQk5fQ1RY ICpjdHgsIEJJR05VTSAqcCwgQklHTlVNICpxLCBCSUdOVU0gKipnX3JldCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqaF9yZXQsIEJOX0dFTkNCICpjYik7Ci0r IyBlbmRpZgotKwotICMgZGVmaW5lIEVWUF9QS0VZX0NUWF9zZXRfZHNhX3BhcmFtZ2VuX2JpdHMo Y3R4LCBuYml0cykgXAotICAgICAgICAgRVZQX1BLRVlfQ1RYX2N0cmwoY3R4LCBFVlBfUEtFWV9E U0EsIEVWUF9QS0VZX09QX1BBUkFNR0VOLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBFVlBfUEtFWV9DVFJMX0RTQV9QQVJBTUdFTl9CSVRTLCBuYml0cywgTlVMTCkKLUBAIC0y ODcsMTEgKzMwMywxNCBAQCB2b2lkIEVSUl9sb2FkX0RTQV9zdHJpbmdzKHZvaWQpOwotICMgZGVm aW5lIERTQV9GX0RPX0RTQV9QUklOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDQK LSAjIGRlZmluZSBEU0FfRl9EU0FQQVJBTVNfUFJJTlQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMTAwCi0gIyBkZWZpbmUgRFNBX0ZfRFNBUEFSQU1TX1BSSU5UX0ZQICAgICAgICAgICAgICAg ICAgICAgICAgIDEwMQotLSMgZGVmaW5lIERTQV9GX0RTQV9CVUlMVElOX1BBUkFNR0VOMiAgICAg ICAgICAgICAgICAgICAgICAxMjYKLSsjIGRlZmluZSBEU0FfRl9EU0FfQlVJTFRJTl9LRVlHRU4g ICAgICAgICAgICAgICAgICAgICAgICAgMTI0Ci0rIyBkZWZpbmUgRFNBX0ZfRFNBX0JVSUxUSU5f UEFSQU1HRU4gICAgICAgICAgICAgICAgICAgICAgIDEyMwotKyMgZGVmaW5lIERTQV9GX0RTQV9C VUlMVElOX1BBUkFNR0VOMiAgICAgICAgICAgICAgICAgICAgICAyMjYKLSAjIGRlZmluZSBEU0Ff Rl9EU0FfRE9fU0lHTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEyCi0gIyBkZWZp bmUgRFNBX0ZfRFNBX0RPX1ZFUklGWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMwot LSMgZGVmaW5lIERTQV9GX0RTQV9HRU5FUkFURV9LRVkgICAgICAgICAgICAgICAgICAgICAgICAg ICAxMjQKLS0jIGRlZmluZSBEU0FfRl9EU0FfR0VORVJBVEVfUEFSQU1FVEVSU19FWCAgICAgICAg ICAgICAgICAgMTIzCi0rIyBkZWZpbmUgRFNBX0ZfRFNBX0dFTkVSQVRFX0tFWSAgICAgICAgICAg ICAgICAgICAgICAgICAgIDEyNgotKyMgZGVmaW5lIERTQV9GX0RTQV9HRU5FUkFURV9QQVJBTUVU RVJTX0VYICAgICAgICAgICAgICAgICAxMjcKLSsjIGRlZmluZSBEU0FfRl9EU0FfR0VORVJBVEVf UEFSQU1FVEVSUyAgIC8qIHVudXNlZCAqLyAgICAgMTI1Ci0gIyBkZWZpbmUgRFNBX0ZfRFNBX05F V19NRVRIT0QgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMwotICMgZGVmaW5lIERTQV9G X0RTQV9QQVJBTV9ERUNPREUgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTkKLSAjIGRlZmlu ZSBEU0FfRl9EU0FfUFJJTlRfRlAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA1Ci1A QCAtMzE3LDEyICszMzYsMTYgQEAgdm9pZCBFUlJfbG9hZF9EU0Ffc3RyaW5ncyh2b2lkKTsKLSAj IGRlZmluZSBEU0FfUl9EQVRBX1RPT19MQVJHRV9GT1JfS0VZX1NJWkUgICAgICAgICAgICAgICAg MTAwCi0gIyBkZWZpbmUgRFNBX1JfREVDT0RFX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDEwNAotICMgZGVmaW5lIERTQV9SX0lOVkFMSURfRElHRVNUX1RZUEUgICAgICAgICAg ICAgICAgICAgICAgICAxMDYKLS0jIGRlZmluZSBEU0FfUl9JTlZBTElEX1BBUkFNRVRFUlMgICAg ICAgICAgICAgICAgICAgICAgICAgMTEyCi0rIyBkZWZpbmUgRFNBX1JfSU5WQUxJRF9QQVJBTUVU RVJTICAgICAgICAgICAgICAgICAgICAgICAgIDIxMgotKyMgZGVmaW5lIERTQV9SX0tFWV9TSVpF X0lOVkFMSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTMKLSsjIGRlZmluZSBEU0FfUl9L RVlfU0laRV9UT09fU01BTEwgICAgICAgICAgICAgICAgICAgICAgICAgMTEwCi0gIyBkZWZpbmUg RFNBX1JfTUlTU0lOR19QQVJBTUVURVJTICAgICAgICAgICAgICAgICAgICAgICAgIDEwMQotICMg ZGVmaW5lIERTQV9SX01PRFVMVVNfVE9PX0xBUkdFICAgICAgICAgICAgICAgICAgICAgICAgICAx MDMKLS0jIGRlZmluZSBEU0FfUl9ORUVEX05FV19TRVRVUF9WQUxVRVMgICAgICAgICAgICAgICAg ICAgICAgMTEwCi0rIyBkZWZpbmUgRFNBX1JfTkVFRF9ORVdfU0VUVVBfVkFMVUVTICAgICAgICAg ICAgICAgICAgICAgIDExMgotICMgZGVmaW5lIERTQV9SX05PTl9GSVBTX0RTQV9NRVRIT0QgICAg ICAgICAgICAgICAgICAgICAgICAxMTEKLSsjIGRlZmluZSBEU0FfUl9OT05fRklQU19NRVRIT0Qg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExCi0gIyBkZWZpbmUgRFNBX1JfTk9fUEFSQU1F VEVSU19TRVQgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNwotKyMgZGVmaW5lIERTQV9SX09Q RVJBVElPTl9OT1RfQUxMT1dFRF9JTl9GSVBTX01PREUgLyogdW51c2VkICovIDExMgotICMgZGVm aW5lIERTQV9SX1BBUkFNRVRFUl9FTkNPRElOR19FUlJPUiAgICAgICAgICAgICAgICAgICAxMDUK LSAjIGRlZmluZSBEU0FfUl9RX05PVF9QUklNRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMTEzCi0gCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZHNhL2RzYV9rZXkuYy5m aXBzIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kc2EvZHNhX2tleS5jCi0tLS0gb3BlbnNzbC0xLjAu MmkvY3J5cHRvL2RzYS9kc2Ffa2V5LmMuZmlwcwkyMDE2LTA5LTIyIDEyOjIzOjA2LjAwMDAwMDAw MCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kc2EvZHNhX2tleS5jCTIwMTYtMDkt MjIgMTM6MzU6NTcuMDEwMjIwODM2ICswMjAwCi1AQCAtNjYsNiArNjYsMzQgQEAKLSAKLSAjIGlm ZGVmIE9QRU5TU0xfRklQUwotICMgIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyMgIGluY2x1 ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rCi0rc3RhdGljIGludCBmaXBzX2NoZWNrX2RzYShEU0EgKmRz YSkKLSt7Ci0rICAgIEVWUF9QS0VZICpwazsKLSsgICAgdW5zaWduZWQgY2hhciB0YnNbXSA9ICJE U0EgUGFpcndpc2UgQ2hlY2sgRGF0YSI7Ci0rICAgIGludCByZXQgPSAwOwotKwotKyAgICBpZiAo KHBrID0gRVZQX1BLRVlfbmV3KCkpID09IE5VTEwpCi0rICAgICAgICBnb3RvIGVycjsKLSsKLSsg ICAgRVZQX1BLRVlfc2V0MV9EU0EocGssIGRzYSk7Ci0rCi0rICAgIGlmIChmaXBzX3BrZXlfc2ln bmF0dXJlX3Rlc3QocGssIHRicywgLTEsIE5VTEwsIDAsIE5VTEwsIDAsIE5VTEwpKQotKyAgICAg ICAgcmV0ID0gMTsKLSsKLSsgZXJyOgotKyAgICBpZiAocmV0ID09IDApIHsKLSsgICAgICAgIEZJ UFNlcnIoRklQU19GX0ZJUFNfQ0hFQ0tfRFNBLCBGSVBTX1JfUEFJUldJU0VfVEVTVF9GQUlMRUQp OwotKyAgICAgICAgZmlwc19zZXRfc2VsZnRlc3RfZmFpbCgpOwotKyAgICB9Ci0rCi0rICAgIGlm IChwaykKLSsgICAgICAgIEVWUF9QS0VZX2ZyZWUocGspOwotKwotKyAgICByZXR1cm4gcmV0Owot K30KLSsKLSAjIGVuZGlmCi0gCi0gc3RhdGljIGludCBkc2FfYnVpbHRpbl9rZXlnZW4oRFNBICpk c2EpOwotQEAgLTgxLDEwICsxMDksNiBAQCBpbnQgRFNBX2dlbmVyYXRlX2tleShEU0EgKmRzYSkK LSAjIGVuZGlmCi0gICAgIGlmIChkc2EtPm1ldGgtPmRzYV9rZXlnZW4pCi0gICAgICAgICByZXR1 cm4gZHNhLT5tZXRoLT5kc2Ffa2V5Z2VuKGRzYSk7Ci0tIyBpZmRlZiBPUEVOU1NMX0ZJUFMKLS0g ICAgaWYgKEZJUFNfbW9kZSgpKQotLSAgICAgICAgcmV0dXJuIEZJUFNfZHNhX2dlbmVyYXRlX2tl eShkc2EpOwotLSMgZW5kaWYKLSAgICAgcmV0dXJuIGRzYV9idWlsdGluX2tleWdlbihkc2EpOwot IH0KLSAKLUBAIC05NCw2ICsxMTgsMTQgQEAgc3RhdGljIGludCBkc2FfYnVpbHRpbl9rZXlnZW4o RFNBICpkc2EpCi0gICAgIEJOX0NUWCAqY3R4ID0gTlVMTDsKLSAgICAgQklHTlVNICpwdWJfa2V5 ID0gTlVMTCwgKnByaXZfa2V5ID0gTlVMTDsKLSAKLSsjIGlmZGVmIE9QRU5TU0xfRklQUwotKyAg ICBpZiAoRklQU19tb2RlKCkgJiYgIShkc2EtPmZsYWdzICYgRFNBX0ZMQUdfTk9OX0ZJUFNfQUxM T1cpCi0rICAgICAgICAmJiAoQk5fbnVtX2JpdHMoZHNhLT5wKSA8IE9QRU5TU0xfRFNBX0ZJUFNf TUlOX01PRFVMVVNfQklUUykpIHsKLSsgICAgICAgIERTQWVycihEU0FfRl9EU0FfQlVJTFRJTl9L RVlHRU4sIERTQV9SX0tFWV9TSVpFX1RPT19TTUFMTCk7Ci0rICAgICAgICBnb3RvIGVycjsKLSsg ICAgfQotKyMgZW5kaWYKLSsKLSAgICAgaWYgKChjdHggPSBCTl9DVFhfbmV3KCkpID09IE5VTEwp Ci0gICAgICAgICBnb3RvIGVycjsKLSAKLUBAIC0xMzEsNiArMTYzLDEzIEBAIHN0YXRpYyBpbnQg ZHNhX2J1aWx0aW5fa2V5Z2VuKERTQSAqZHNhKQotIAotICAgICBkc2EtPnByaXZfa2V5ID0gcHJp dl9rZXk7Ci0gICAgIGRzYS0+cHViX2tleSA9IHB1Yl9rZXk7Ci0rIyBpZmRlZiBPUEVOU1NMX0ZJ UFMKLSsgICAgaWYgKEZJUFNfbW9kZSgpICYmICFmaXBzX2NoZWNrX2RzYShkc2EpKSB7Ci0rICAg ICAgICBkc2EtPnB1Yl9rZXkgPSBOVUxMOwotKyAgICAgICAgZHNhLT5wcml2X2tleSA9IE5VTEw7 Ci0rICAgICAgICBnb3RvIGVycjsKLSsgICAgfQotKyMgZW5kaWYKLSAgICAgb2sgPSAxOwotIAot ICBlcnI6Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZHNhL2RzYV9saWIuYy5maXBz IG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kc2EvZHNhX2xpYi5jCi0tLS0gb3BlbnNzbC0xLjAuMmkv Y3J5cHRvL2RzYS9kc2FfbGliLmMuZmlwcwkyMDE2LTA5LTIyIDEyOjIzOjA2LjAwMDAwMDAwMCAr MDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kc2EvZHNhX2xpYi5jCTIwMTYtMDktMjIg MTM6MzU6NTcuMDEwMjIwODM2ICswMjAwCi1AQCAtODYsMTQgKzg2LDcgQEAgdm9pZCBEU0Ffc2V0 X2RlZmF1bHRfbWV0aG9kKGNvbnN0IERTQV9NRQotIGNvbnN0IERTQV9NRVRIT0QgKkRTQV9nZXRf ZGVmYXVsdF9tZXRob2Qodm9pZCkKLSB7Ci0gICAgIGlmICghZGVmYXVsdF9EU0FfbWV0aG9kKSB7 Ci0tI2lmZGVmIE9QRU5TU0xfRklQUwotLSAgICAgICAgaWYgKEZJUFNfbW9kZSgpKQotLSAgICAg ICAgICAgIHJldHVybiBGSVBTX2RzYV9vcGVuc3NsKCk7Ci0tICAgICAgICBlbHNlCi0tICAgICAg ICAgICAgcmV0dXJuIERTQV9PcGVuU1NMKCk7Ci0tI2Vsc2UKLSAgICAgICAgIGRlZmF1bHRfRFNB X21ldGhvZCA9IERTQV9PcGVuU1NMKCk7Ci0tI2VuZGlmCi0gICAgIH0KLSAgICAgcmV0dXJuIGRl ZmF1bHRfRFNBX21ldGhvZDsKLSB9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZHNh L2RzYV9sb2NsLmguZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZHNhL2RzYV9sb2NsLmgKLS0t LSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZHNhL2RzYV9sb2NsLmguZmlwcwkyMDE2LTA5LTIyIDEz OjM1OjU2Ljc5MDIxNTc2NSArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kc2EvZHNh X2xvY2wuaAkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxMDIyMDgzNiArMDIwMAotQEAgLTU2LDcgKzU2 LDcgQEAKLSAKLSBpbnQgZHNhX2J1aWx0aW5fcGFyYW1nZW4oRFNBICpyZXQsIHNpemVfdCBiaXRz LCBzaXplX3QgcWJpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVWUF9NRCAq ZXZwbWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlZWRfaW4sCi0tICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVfdCBzZWVkX2xlbiwgdW5zaWduZWQgY2hhciAqc2VlZF9vdXQsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVfdCBzZWVkX2xlbiwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50ICpjb3VudGVyX3JldCwgdW5zaWduZWQgbG9uZyAqaF9yZXQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgIEJOX0dFTkNCICpjYik7Ci0gCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4y aS9jcnlwdG8vZHNhL2RzYV9vc3NsLmMuZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZHNhL2Rz YV9vc3NsLmMKLS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZHNhL2RzYV9vc3NsLmMuZmlwcwky MDE2LTA5LTIyIDEyOjIzOjA2LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2Ny eXB0by9kc2EvZHNhX29zc2wuYwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxMDIyMDgzNiArMDIwMAot QEAgLTY1LDYgKzY1LDkgQEAKLSAjaW5jbHVkZSA8b3BlbnNzbC9kc2EuaD4KLSAjaW5jbHVkZSA8 b3BlbnNzbC9yYW5kLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvYXNuMS5oPgotKyNpZmRlZiBPUEVO U1NMX0ZJUFMKLSsjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyNlbmRpZgotIAotIHN0YXRp YyBEU0FfU0lHICpkc2FfZG9fc2lnbihjb25zdCB1bnNpZ25lZCBjaGFyICpkZ3N0LCBpbnQgZGxl biwgRFNBICpkc2EpOwotIHN0YXRpYyBpbnQgZHNhX3NpZ25fc2V0dXAoRFNBICpkc2EsIEJOX0NU WCAqY3R4X2luLCBCSUdOVU0gKipraW52cCwKLUBAIC04Myw3ICs4Niw3IEBAIHN0YXRpYyBEU0Ff TUVUSE9EIG9wZW5zc2xfZHNhX21ldGggPSB7Ci0gICAgIE5VTEwsICAgICAgICAgICAgICAgICAg ICAgICAvKiBkc2FfYm5fbW9kX2V4cCwgKi8KLSAgICAgZHNhX2luaXQsCi0gICAgIGRzYV9maW5p c2gsCi0tICAgIDAsCi0rICAgIERTQV9GTEFHX0ZJUFNfTUVUSE9ELAotICAgICBOVUxMLAotICAg ICBOVUxMLAotICAgICBOVUxMCi1AQCAtMTQwLDYgKzE0MywxOSBAQCBzdGF0aWMgRFNBX1NJRyAq ZHNhX2RvX3NpZ24oY29uc3QgdW5zaWduCi0gICAgIERTQV9TSUcgKnJldCA9IE5VTEw7Ci0gICAg IGludCBub3JlZG8gPSAwOwotIAotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgaWYgKEZJUFNf c2VsZnRlc3RfZmFpbGVkKCkpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0RTQV9ET19TSUdO LCBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOwotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0r ICAgIH0KLSsKLSsgICAgaWYgKEZJUFNfbW9kZSgpICYmICEoZHNhLT5mbGFncyAmIERTQV9GTEFH X05PTl9GSVBTX0FMTE9XKQotKyAgICAgICAgJiYgKEJOX251bV9iaXRzKGRzYS0+cCkgPCBPUEVO U1NMX0RTQV9GSVBTX01JTl9NT0RVTFVTX0JJVFMpKSB7Ci0rICAgICAgICBEU0FlcnIoRFNBX0Zf RFNBX0RPX1NJR04sIERTQV9SX0tFWV9TSVpFX1RPT19TTUFMTCk7Ci0rICAgICAgICByZXR1cm4g TlVMTDsKLSsgICAgfQotKyNlbmRpZgotKwotICAgICBCTl9pbml0KCZtKTsKLSAgICAgQk5faW5p dCgmeHIpOwotIAotQEAgLTMzNSw2ICszNTEsMTggQEAgc3RhdGljIGludCBkc2FfZG9fdmVyaWZ5 KGNvbnN0IHVuc2lnbmVkCi0gICAgICAgICBEU0FlcnIoRFNBX0ZfRFNBX0RPX1ZFUklGWSwgRFNB X1JfQkFEX1FfVkFMVUUpOwotICAgICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci0rI2lmZGVmIE9Q RU5TU0xfRklQUwotKyAgICBpZiAoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkgewotKyAgICAgICAg RklQU2VycihGSVBTX0ZfRFNBX0RPX1ZFUklGWSwgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVE KTsKLSsgICAgICAgIHJldHVybiAtMTsKLSsgICAgfQotKwotKyAgICBpZiAoRklQU19tb2RlKCkg JiYgIShkc2EtPmZsYWdzICYgRFNBX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpCi0rICAgICAgICAmJiAo Qk5fbnVtX2JpdHMoZHNhLT5wKSA8IE9QRU5TU0xfRFNBX0ZJUFNfTUlOX01PRFVMVVNfQklUUykp IHsKLSsgICAgICAgIERTQWVycihEU0FfRl9EU0FfRE9fVkVSSUZZLCBEU0FfUl9LRVlfU0laRV9U T09fU01BTEwpOwotKyAgICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0rI2VuZGlmCi0gCi0gICAg IGlmIChCTl9udW1fYml0cyhkc2EtPnApID4gT1BFTlNTTF9EU0FfTUFYX01PRFVMVVNfQklUUykg ewotICAgICAgICAgRFNBZXJyKERTQV9GX0RTQV9ET19WRVJJRlksIERTQV9SX01PRFVMVVNfVE9P X0xBUkdFKTsKLUBAIC00MTUsNiArNDQzLDkgQEAgc3RhdGljIGludCBkc2FfZG9fdmVyaWZ5KGNv bnN0IHVuc2lnbmVkCi0gCi0gc3RhdGljIGludCBkc2FfaW5pdChEU0EgKmRzYSkKLSB7Ci0rI2lm ZGVmIE9QRU5TU0xfRklQUwotKyAgICBGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7Ci0rI2VuZGlmCi0g ICAgIGRzYS0+ZmxhZ3MgfD0gRFNBX0ZMQUdfQ0FDSEVfTU9OVF9QOwotICAgICByZXR1cm4gKDEp OwotIH0KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kc2EvZHNhX3BtZXRoLmMuZmlw cyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZHNhL2RzYV9wbWV0aC5jCi0tLS0gb3BlbnNzbC0xLjAu MmkvY3J5cHRvL2RzYS9kc2FfcG1ldGguYy5maXBzCTIwMTYtMDktMjIgMTI6MjM6MDYuMDAwMDAw MDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2RzYS9kc2FfcG1ldGguYwkyMDE2 LTA5LTIyIDEzOjM1OjU3LjAxMDIyMDgzNiArMDIwMAotQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0 aWMgaW50IHBrZXlfZHNhX3BhcmFtZ2VuKEVWUF9QS0VZX0NUCi0gICAgIGlmICghZHNhKQotICAg ICAgICAgcmV0dXJuIDA7Ci0gICAgIHJldCA9IGRzYV9idWlsdGluX3BhcmFtZ2VuKGRzYSwgZGN0 eC0+bmJpdHMsIGRjdHgtPnFiaXRzLCBkY3R4LT5wbWQsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5VTEwsIDAsIE5VTEwsIE5VTEwsIE5VTEwsIHBjYik7Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsIE5VTEwsIE5VTEwsIHBjYik7Ci0gICAgIGlmIChy ZXQpCi0gICAgICAgICBFVlBfUEtFWV9hc3NpZ25fRFNBKHBrZXksIGRzYSk7Ci0gICAgIGVsc2UK LWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kc2EvZHNhdGVzdC5jLmZpcHMgb3BlbnNz bC0xLjAuMmkvY3J5cHRvL2RzYS9kc2F0ZXN0LmMKLS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8v ZHNhL2RzYXRlc3QuYy5maXBzCTIwMTYtMDktMjIgMTI6MjM6MDYuMDAwMDAwMDAwICswMjAwCi0r Kysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2RzYS9kc2F0ZXN0LmMJMjAxNi0wOS0yMiAxMzozNTo1 Ny4wMTAyMjA4MzYgKzAyMDAKLUBAIC0xMDAsMzYgKzEwMCw0MSBAQCBzdGF0aWMgaW50IE1TX0NB TExCQUNLIGRzYV9jYihpbnQgcCwgaW50Ci0gICogUFVCIDE4NiBhbmQgYWxzbyBhcHBlYXIgaW4g QXBwZW5kaXggNSB0byBGSVBTIFBJQiAxODYtMQotICAqLwotIHN0YXRpYyB1bnNpZ25lZCBjaGFy IHNlZWRbMjBdID0gewotLSAgICAweGQ1LCAweDAxLCAweDRlLCAweDRiLCAweDYwLCAweGVmLCAw eDJiLCAweGE4LCAweGI2LCAweDIxLCAweDFiLCAweDQwLAotLSAgICAweDYyLCAweGJhLCAweDMy LCAweDI0LCAweGUwLCAweDQyLCAweDdkLCAweGQzLAotKyAgICAweDAyLCAweDQ3LCAweDExLCAw eDkyLCAweDExLCAweDg4LCAweEM4LCAweEZCLCAweEFGLCAweDQ4LCAweDRDLCAweDYyLAotKyAg ICAweERGLCAweEE1LCAweEJFLCAweEEwLCAweEE0LCAweDNDLCAweDU2LCAweEUzLAotIH07Ci0g Ci0gc3RhdGljIHVuc2lnbmVkIGNoYXIgb3V0X3BbXSA9IHsKLS0gICAgMHg4ZCwgMHhmMiwgMHhh NCwgMHg5NCwgMHg0OSwgMHgyMiwgMHg3NiwgMHhhYSwKLS0gICAgMHgzZCwgMHgyNSwgMHg3NSwg MHg5YiwgMHhiMCwgMHg2OCwgMHg2OSwgMHhjYiwKLS0gICAgMHhlYSwgMHhjMCwgMHhkOCwgMHgz YSwgMHhmYiwgMHg4ZCwgMHgwYywgMHhmNywKLS0gICAgMHhjYiwgMHhiOCwgMHgzMiwgMHg0Ziwg MHgwZCwgMHg3OCwgMHg4MiwgMHhlNSwKLS0gICAgMHhkMCwgMHg3NiwgMHgyZiwgMHhjNSwgMHhi NywgMHgyMSwgMHgwZSwgMHhhZiwKLS0gICAgMHhjMiwgMHhlOSwgMHhhZCwgMHhhYywgMHgzMiwg MHhhYiwgMHg3YSwgMHhhYywKLS0gICAgMHg0OSwgMHg2OSwgMHgzZCwgMHhmYiwgMHhmOCwgMHgz NywgMHgyNCwgMHhjMiwKLS0gICAgMHhlYywgMHgwNywgMHgzNiwgMHhlZSwgMHgzMSwgMHhjOCwg MHgwMiwgMHg5MSwKLSsgICAgMHhBQywgMHhDQiwgMHgxRSwgMHg2MywgMHg2MCwgMHg2OSwgMHgw QywgMHhGQiwgMHgwNiwgMHgxOSwgMHg2OCwgMHgzRSwKLSsgICAgMHhBNSwgMHgwMSwgMHg1QSwg MHhBMiwgMHgxNSwgMHg1QywgMHhFMiwgMHg5OSwgMHgyRCwgMHhENSwgMHgzMCwgMHg5OSwKLSsg ICAgMHg3RSwgMHg1RiwgMHg4RCwgMHhFMiwgMHhGNywgMHhDNiwgMHgyRSwgMHg4RCwgMHhBMywg MHg5RiwgMHg1OCwgMHhBRCwKLSsgICAgMHhENiwgMHhBOSwgMHg3RCwgMHgwRSwgMHgwRCwgMHg5 NSwgMHg1MywgMHhBNiwgMHg3MSwgMHgzQSwgMHhERSwgMHhBQiwKLSsgICAgMHhBQywgMHhFOSwg MHhGNCwgMHgzNiwgMHg1NSwgMHg5RSwgMHhCOSwgMHhENiwgMHg5MywgMHhCRiwgMHhGMywgMHgx OCwKLSsgICAgMHgxQywgMHgxNCwgMHg3QiwgMHhBNSwgMHg0MiwgMHgyRSwgMHhDRCwgMHgwMCwg MHhFQiwgMHgzNSwgMHgzQiwgMHgxQiwKLSsgICAgMHhBOCwgMHg1MSwgMHhCQiwgMHhFMSwgMHg1 OCwgMHg0MiwgMHg4NSwgMHg4NCwgMHgyMiwgMHhBNywgMHg5NywgMHg1RSwKLSsgICAgMHg5OSwg MHg2RiwgMHgzOCwgMHgyMCwgMHhCRCwgMHg5RCwgMHhCNiwgMHhEOSwgMHgzMywgMHgzNywgMHgy QSwgMHhGRCwKLSsgICAgMHhCQiwgMHhENCwgMHhCQywgMHgwQywgMHgyQSwgMHg2NywgMHhDQiwg MHg5RiwgMHhCQiwgMHhERiwgMHhGOSwgMHg5MywKLSsgICAgMHhBQSwgMHhENiwgMHhGMCwgMHhE NiwgMHg5NSwgMHgwQiwgMHg1RCwgMHg2NSwgMHgxNCwgMHhEMCwgMHgxOCwgMHg5RCwKLSsgICAg MHhDNiwgMHhBRiwgMHhGMCwgMHhDNiwgMHgzNywgMHg3QywgMHhGMywgMHg1RiwKLSB9OwotIAot IHN0YXRpYyB1bnNpZ25lZCBjaGFyIG91dF9xW10gPSB7Ci0tICAgIDB4YzcsIDB4NzMsIDB4MjEs IDB4OGMsIDB4NzMsIDB4N2UsIDB4YzgsIDB4ZWUsCi0tICAgIDB4OTksIDB4M2IsIDB4NGYsIDB4 MmQsIDB4ZWQsIDB4MzAsIDB4ZjQsIDB4OGUsCi0tICAgIDB4ZGEsIDB4Y2UsIDB4OTEsIDB4NWYs Ci0rICAgIDB4RTMsIDB4OEUsIDB4NUUsIDB4NkQsIDB4QkYsIDB4MkIsIDB4NzksIDB4RjgsIDB4 QzUsIDB4NEIsIDB4ODksIDB4OEIsCi0rICAgIDB4QkEsIDB4MkQsIDB4OTEsIDB4QzMsIDB4NkMs IDB4ODAsIDB4QUMsIDB4ODcsCi0gfTsKLSAKLSBzdGF0aWMgdW5zaWduZWQgY2hhciBvdXRfZ1td ID0gewotLSAgICAweDYyLCAweDZkLCAweDAyLCAweDc4LCAweDM5LCAweGVhLCAweDBhLCAweDEz LAotLSAgICAweDQxLCAweDMxLCAweDYzLCAweGE1LCAweDViLCAweDRjLCAweGI1LCAweDAwLAot LSAgICAweDI5LCAweDlkLCAweDU1LCAweDIyLCAweDk1LCAweDZjLCAweGVmLCAweGNiLAotLSAg ICAweDNiLCAweGZmLCAweDEwLCAweGYzLCAweDk5LCAweGNlLCAweDJjLCAweDJlLAotLSAgICAw eDcxLCAweGNiLCAweDlkLCAweGU1LCAweGZhLCAweDI0LCAweGJhLCAweGJmLAotLSAgICAweDU4 LCAweGU1LCAweGI3LCAweDk1LCAweDIxLCAweDkyLCAweDVjLCAweDljLAotLSAgICAweGM0LCAw eDJlLCAweDlmLCAweDZmLCAweDQ2LCAweDRiLCAweDA4LCAweDhjLAotLSAgICAweGM1LCAweDcy LCAweGFmLCAweDUzLCAweGU2LCAweGQ3LCAweDg4LCAweDAyLAotKyAgICAweDQyLCAweDRBLCAw eDA0LCAweDRFLCAweDc5LCAweEI0LCAweDk5LCAweDdGLCAweEZELCAweDU4LCAweDM2LCAweDJD LAotKyAgICAweDFCLCAweDVGLCAweDE4LCAweDdFLCAweDBELCAweENDLCAweEFCLCAweDgxLCAw eEM5LCAweDVELCAweDEwLCAweENFLAotKyAgICAweDRFLCAweDgwLCAweDdFLCAweDU4LCAweEI0 LCAweDM0LCAweDNGLCAweEE3LCAweDQ1LCAweEM3LCAweEFBLCAweDM2LAotKyAgICAweDI0LCAw eDQyLCAweEE5LCAweDNCLCAweEU4LCAweDBFLCAweDA0LCAweDAyLCAweDJELCAweEZCLCAweEE2 LCAweDEzLAotKyAgICAweEI5LCAweEI1LCAweDE1LCAweEE1LCAweDU2LCAweDA3LCAweDM1LCAw eEU0LCAweDAzLCAweEI2LCAweDc5LCAweDdDLAotKyAgICAweDYyLCAweERELCAweERGLCAweDNG LCAweDcxLCAweDNBLCAweDlELCAweDhCLCAweEM0LCAweEY2LCAweEU3LCAweDFELAotKyAgICAw eDUyLCAweEE4LCAweEE5LCAweDQzLCAweDFELCAweDMzLCAweDUxLCAweDg4LCAweDM5LCAweEJE LCAweDczLCAweEU5LAotKyAgICAweDVGLCAweEJFLCAweDgyLCAweDQ5LCAweDI3LCAweEU2LCAw eEI1LCAweDUzLCAweEMxLCAweDM4LCAweEFDLCAweDJGLAotKyAgICAweDZELCAweDk3LCAweDZD LCAweEVCLCAweDY3LCAweEMxLCAweDVGLCAweDY3LCAweEY4LCAweDM1LCAweDA1LCAweDVFLAot KyAgICAweEQ1LCAweDY4LCAweDgwLCAweEFBLCAweDk2LCAweENBLCAweDBCLCAweDhBLCAweEU2 LCAweEYxLCAweEIxLCAweDQxLAotKyAgICAweEM2LCAweDc1LCAweDk0LCAweDBBLCAweDBBLCAw eDJBLCAweEZBLCAweDI5LAotIH07Ci0gCi0gc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc3Ry MVtdID0gIjEyMzQ1Njc4OTAxMjM0NTY3ODkwIjsKLUBAIC0xNjIsNyArMTY3LDcgQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICJ0ZXN0 IGdlbmVyYXRpb24gb2YgRFNBIHBhcmFtZXRlcnNcbiIpOwotIAotICAgICBCTl9HRU5DQl9zZXQo JmNiLCBkc2FfY2IsIGJpb19lcnIpOwotLSAgICBpZiAoKChkc2EgPSBEU0FfbmV3KCkpID09IE5V TEwpIHx8ICFEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyc19leChkc2EsIDUxMiwKLSsgICAgaWYgKCgo ZHNhID0gRFNBX25ldygpKSA9PSBOVUxMKSB8fCAhRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXgo ZHNhLCAxMDI0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWVkLCAyMCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvdW50ZXIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZoLCAmY2IpKQotQEAgLTE3Niw4ICsxODEsOCBAQCBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCi0gICAgIEJJT19wcmludGYoYmlvX2VyciwgIlxuY291bnRlcj0lZCBo PSVsZFxuIiwgY291bnRlciwgaCk7Ci0gCi0gICAgIERTQV9wcmludChiaW9fZXJyLCBkc2EsIDAp OwotLSAgICBpZiAoY291bnRlciAhPSAxMDUpIHsKLS0gICAgICAgIEJJT19wcmludGYoYmlvX2Vy ciwgImNvdW50ZXIgc2hvdWxkIGJlIDEwNVxuIik7Ci0rICAgIGlmIChjb3VudGVyICE9IDIzOSkg ewotKyAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiY291bnRlciBzaG91bGQgYmUgMjM5XG4i KTsKLSAgICAgICAgIGdvdG8gZW5kOwotICAgICB9Ci0gICAgIGlmIChoICE9IDIpIHsKLWRpZmYg LXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9lbmdpbmUvZW5nX2FsbC5jLmZpcHMgb3BlbnNzbC0x LjAuMmkvY3J5cHRvL2VuZ2luZS9lbmdfYWxsLmMKLS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8v ZW5naW5lL2VuZ19hbGwuYy5maXBzCTIwMTYtMDktMjIgMTI6MjM6MDYuMDAwMDAwMDAwICswMjAw Ci0rKysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2VuZ2luZS9lbmdfYWxsLmMJMjAxNi0wOS0yMiAx MzozNTo1Ny4wMTEyMjA4NTkgKzAyMDAKLUBAIC01OSwxMSArNTksMjUgQEAKLSAKLSAjaW5jbHVk ZSAiY3J5cHRsaWIuaCIKLSAjaW5jbHVkZSAiZW5nX2ludC5oIgotKyNpZmRlZiBPUEVOU1NMX0ZJ UFMKLSsjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyNlbmRpZgotIAotIHZvaWQgRU5HSU5F X2xvYWRfYnVpbHRpbl9lbmdpbmVzKHZvaWQpCi0gewotICAgICAvKiBTb21lIEVOR0lORXMgbmVl ZCB0aGlzICovCi0gICAgIE9QRU5TU0xfY3B1aWRfc2V0dXAoKTsKLSsjaWZkZWYgT1BFTlNTTF9G SVBTCi0rICAgIE9QRU5TU0xfaW5pdF9saWJyYXJ5KCk7Ci0rICAgIGlmIChGSVBTX21vZGUoKSkg ewotKyAgICAgICAgLyogV2UgYWxsb3cgbG9hZGluZyBkeW5hbWljIGVuZ2luZSBhcyBhIHRoaXJk IHBhcnR5Ci0rICAgICAgICAgICBlbmdpbmUgbWlnaHQgYmUgRklQUyB2YWxpZGF0ZWQuCi0rICAg ICAgICAgICBVc2VyIGlzIGRpc2FsbG93ZWQgdG8gbG9hZCBub24tdmFsaWRhdGVkIGVuZ2luZXMK LSsgICAgICAgICAgIGJ5IHNlY3VyaXR5IHBvbGljeS4gKi8KLSsgICAgICAgIEVOR0lORV9sb2Fk X2R5bmFtaWMoKTsKLSsgICAgICAgIHJldHVybjsKLSsgICAgfQotKyNlbmRpZgotICNpZiAwCi0g ICAgIC8qCi0gICAgICAqIFRoZXJlJ3Mgbm8gbG9uZ2VyIGFueSBuZWVkIGZvciBhbiAib3BlbnNz bCIgRU5HSU5FIHVubGVzcywgb25lIGRheSwgaXQKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2Ny eXB0by9ldnAvY19hbGxjLmMuZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZwL2NfYWxsYy5j Ci0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2V2cC9jX2FsbGMuYy5maXBzCTIwMTYtMDktMjIg MTI6MjM6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2V2cC9j X2FsbGMuYwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxMTIyMDg1OSArMDIwMAotQEAgLTY1LDYgKzY1 LDEwIEBACi0gdm9pZCBPcGVuU1NMX2FkZF9hbGxfY2lwaGVycyh2b2lkKQotIHsKLSAKLSsjaWZk ZWYgT1BFTlNTTF9GSVBTCi0rICAgIE9QRU5TU0xfaW5pdF9saWJyYXJ5KCk7Ci0rICAgIGlmICgh RklQU19tb2RlKCkpIHsKLSsjZW5kaWYKLSAjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gICAgIEVW UF9hZGRfY2lwaGVyKEVWUF9kZXNfY2ZiKCkpOwotICAgICBFVlBfYWRkX2NpcGhlcihFVlBfZGVz X2NmYjEoKSk7Ci1AQCAtMjM4LDQgKzI0Miw2NCBAQCB2b2lkIE9wZW5TU0xfYWRkX2FsbF9jaXBo ZXJzKHZvaWQpCi0gICAgIEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2NhbWVsbGlhXzI1Nl9jYmMs ICJDQU1FTExJQTI1NiIpOwotICAgICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9jYW1lbGxpYV8y NTZfY2JjLCAiY2FtZWxsaWEyNTYiKTsKLSAjZW5kaWYKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0r ICAgIH0gZWxzZSB7Ci0rIyBpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSsgICAgICAgIEVWUF9hZGRf Y2lwaGVyKEVWUF9kZXNfZWRlX2NmYigpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9k ZXNfZWRlM19jZmIoKSk7Ci0rCi0rICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfZGVzX2VkZV9v ZmIoKSk7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfZGVzX2VkZTNfb2ZiKCkpOwotKwot KyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19lZGVfY2JjKCkpOwotKyAgICAgICAgRVZQ X2FkZF9jaXBoZXIoRVZQX2Rlc19lZGUzX2NiYygpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVy X2FsaWFzKFNOX2Rlc19lZGUzX2NiYywgIkRFUzMiKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVy X2FsaWFzKFNOX2Rlc19lZGUzX2NiYywgImRlczMiKTsKLSsKLSsgICAgICAgIEVWUF9hZGRfY2lw aGVyKEVWUF9kZXNfZWRlKCkpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19lZGUz KCkpOwotKyMgZW5kaWYKLSsKLSsjIGlmbmRlZiBPUEVOU1NMX05PX0FFUwotKyAgICAgICAgRVZQ X2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfZWNiKCkpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIo RVZQX2Flc18xMjhfY2JjKCkpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhf Y2ZiKCkpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfY2ZiMSgpKTsKLSsg ICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X2NmYjgoKSk7Ci0rICAgICAgICBFVlBf YWRkX2NpcGhlcihFVlBfYWVzXzEyOF9vZmIoKSk7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcihF VlBfYWVzXzEyOF9jdHIoKSk7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF9n Y20oKSk7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF94dHMoKSk7Ci0rICAg ICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF9jY20oKSk7Ci0rICAgICAgICBFVlBfYWRk X2NpcGhlcihFVlBfYWVzXzEyOF93cmFwKCkpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXJfYWxp YXMoU05fYWVzXzEyOF9jYmMsICJBRVMxMjgiKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyX2Fs aWFzKFNOX2Flc18xMjhfY2JjLCAiYWVzMTI4Iik7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcihF VlBfYWVzXzE5Ml9lY2IoKSk7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml9j YmMoKSk7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml9jZmIoKSk7Ci0rICAg ICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml9jZmIxKCkpOwotKyAgICAgICAgRVZQX2Fk ZF9jaXBoZXIoRVZQX2Flc18xOTJfY2ZiOCgpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVW UF9hZXNfMTkyX29mYigpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX2N0 cigpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX2djbSgpKTsKLSsgICAg ICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX2NjbSgpKTsKLSsgICAgICAgIEVWUF9hZGRf Y2lwaGVyKEVWUF9hZXNfMTkyX3dyYXAoKSk7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcl9hbGlh cyhTTl9hZXNfMTkyX2NiYywgIkFFUzE5MiIpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXJfYWxp YXMoU05fYWVzXzE5Ml9jYmMsICJhZXMxOTIiKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVW UF9hZXNfMjU2X2VjYigpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X2Ni YygpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X2NmYigpKTsKLSsgICAg ICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X2NmYjEoKSk7Ci0rICAgICAgICBFVlBfYWRk X2NpcGhlcihFVlBfYWVzXzI1Nl9jZmI4KCkpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQ X2Flc18yNTZfb2ZiKCkpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfY3Ry KCkpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfZ2NtKCkpOwotKyAgICAg ICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfeHRzKCkpOwotKyAgICAgICAgRVZQX2FkZF9j aXBoZXIoRVZQX2Flc18yNTZfY2NtKCkpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Fl c18yNTZfd3JhcCgpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18yNTZf Y2JjLCAiQUVTMjU2Iik7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9hZXNfMjU2 X2NiYywgImFlczI1NiIpOwotKyMgZW5kaWYKLSsgICAgfQotKyNlbmRpZgotIH0KLWRpZmYgLXVw IG9wZW5zc2wtMS4wLjJpL2NyeXB0by9ldnAvY19hbGxkLmMuZmlwcyBvcGVuc3NsLTEuMC4yaS9j cnlwdG8vZXZwL2NfYWxsZC5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2V2cC9jX2FsbGQu Yy5maXBzCTIwMTYtMDktMjIgMTI6MjM6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0x LjAuMmkvY3J5cHRvL2V2cC9jX2FsbGQuYwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxMTIyMDg1OSAr MDIwMAotQEAgLTY0LDUxICs2NCw4MSBAQAotIAotIHZvaWQgT3BlblNTTF9hZGRfYWxsX2RpZ2Vz dHModm9pZCkKLSB7Ci0rI2lmZGVmIE9QRU5TU0xfRklQUwotKyAgICBPUEVOU1NMX2luaXRfbGli cmFyeSgpOwotKyAgICBpZiAoIUZJUFNfbW9kZSgpKSB7Ci0rI2VuZGlmCi0gI2lmbmRlZiBPUEVO U1NMX05PX01ENAotLSAgICBFVlBfYWRkX2RpZ2VzdChFVlBfbWQ0KCkpOwotKyAgICAgICAgRVZQ X2FkZF9kaWdlc3QoRVZQX21kNCgpKTsKLSAjZW5kaWYKLSAjaWZuZGVmIE9QRU5TU0xfTk9fTUQ1 Ci0tICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9tZDUoKSk7Ci0tICAgIEVWUF9hZGRfZGlnZXN0X2Fs aWFzKFNOX21kNSwgInNzbDItbWQ1Iik7Ci0tICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX21k NSwgInNzbDMtbWQ1Iik7Ci0rICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfbWQ1KCkpOwotKyAg ICAgICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fbWQ1LCAic3NsMi1tZDUiKTsKLSsgICAgICAg IEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX21kNSwgInNzbDMtbWQ1Iik7Ci0gI2VuZGlmCi0gI2lm ICFkZWZpbmVkKE9QRU5TU0xfTk9fU0hBKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1NIQTApCi0t ICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGEoKSk7Ci0rICAgICAgICBFVlBfYWRkX2RpZ2VzdChF VlBfc2hhKCkpOwotICMgaWZuZGVmIE9QRU5TU0xfTk9fRFNBCi0tICAgIEVWUF9hZGRfZGlnZXN0 KEVWUF9kc3MoKSk7Ci0rICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfZHNzKCkpOwotICMgZW5k aWYKLSAjZW5kaWYKLSAjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19TSEEpICYmICFkZWZpbmVkKE9Q RU5TU0xfTk9fU0hBMSkKLS0gICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTEoKSk7Ci0tICAgIEVW UF9hZGRfZGlnZXN0X2FsaWFzKFNOX3NoYTEsICJzc2wzLXNoYTEiKTsKLS0gICAgRVZQX2FkZF9k aWdlc3RfYWxpYXMoU05fc2hhMVdpdGhSU0FFbmNyeXB0aW9uLCBTTl9zaGExV2l0aFJTQSk7Ci0r ICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhMSgpKTsKLSsgICAgICAgIEVWUF9hZGRfZGln ZXN0X2FsaWFzKFNOX3NoYTEsICJzc2wzLXNoYTEiKTsKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0 X2FsaWFzKFNOX3NoYTFXaXRoUlNBRW5jcnlwdGlvbiwgU05fc2hhMVdpdGhSU0EpOwotICMgaWZu ZGVmIE9QRU5TU0xfTk9fRFNBCi0tICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9kc3MxKCkpOwotLSAg ICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9kc2FXaXRoU0hBMSwgU05fZHNhV2l0aFNIQTFfMik7 Ci0tICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX2RzYVdpdGhTSEExLCAiRFNTMSIpOwotLSAg ICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9kc2FXaXRoU0hBMSwgImRzczEiKTsKLSsgICAgICAg IEVWUF9hZGRfZGlnZXN0KEVWUF9kc3MxKCkpOwotKyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxp YXMoU05fZHNhV2l0aFNIQTEsIFNOX2RzYVdpdGhTSEExXzIpOwotKyAgICAgICAgRVZQX2FkZF9k aWdlc3RfYWxpYXMoU05fZHNhV2l0aFNIQTEsICJEU1MxIik7Ci0rICAgICAgICBFVlBfYWRkX2Rp Z2VzdF9hbGlhcyhTTl9kc2FXaXRoU0hBMSwgImRzczEiKTsKLSAjIGVuZGlmCi0gIyBpZm5kZWYg T1BFTlNTTF9OT19FQ0RTQQotLSAgICBFVlBfYWRkX2RpZ2VzdChFVlBfZWNkc2EoKSk7Ci0rICAg ICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfZWNkc2EoKSk7Ci0gIyBlbmRpZgotICNlbmRpZgotICNp ZiAhZGVmaW5lZChPUEVOU1NMX05PX01EQzIpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fREVTKQot LSAgICBFVlBfYWRkX2RpZ2VzdChFVlBfbWRjMigpKTsKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0 KEVWUF9tZGMyKCkpOwotICNlbmRpZgotICNpZm5kZWYgT1BFTlNTTF9OT19SSVBFTUQKLS0gICAg RVZQX2FkZF9kaWdlc3QoRVZQX3JpcGVtZDE2MCgpKTsKLS0gICAgRVZQX2FkZF9kaWdlc3RfYWxp YXMoU05fcmlwZW1kMTYwLCAicmlwZW1kIik7Ci0tICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNO X3JpcGVtZDE2MCwgInJtZDE2MCIpOwotKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3JpcGVt ZDE2MCgpKTsKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX3JpcGVtZDE2MCwgInJp cGVtZCIpOwotKyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fcmlwZW1kMTYwLCAicm1k MTYwIik7Ci0gI2VuZGlmCi0gI2lmbmRlZiBPUEVOU1NMX05PX1NIQTI1NgotLSAgICBFVlBfYWRk X2RpZ2VzdChFVlBfc2hhMjI0KCkpOwotLSAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhMjU2KCkp OwotKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTIyNCgpKTsKLSsgICAgICAgIEVWUF9h ZGRfZGlnZXN0KEVWUF9zaGEyNTYoKSk7Ci0gI2VuZGlmCi0gI2lmbmRlZiBPUEVOU1NMX05PX1NI QTUxMgotLSAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhMzg0KCkpOwotLSAgICBFVlBfYWRkX2Rp Z2VzdChFVlBfc2hhNTEyKCkpOwotKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTM4NCgp KTsKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGE1MTIoKSk7Ci0gI2VuZGlmCi0gI2lm bmRlZiBPUEVOU1NMX05PX1dISVJMUE9PTAotLSAgICBFVlBfYWRkX2RpZ2VzdChFVlBfd2hpcmxw b29sKCkpOwotKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3doaXJscG9vbCgpKTsKLSsjZW5k aWYKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rICAgIH0gZWxzZSB7Ci0rIyBpZiAhZGVmaW5lZChP UEVOU1NMX05PX1NIQSkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19TSEExKQotKyAgICAgICAgRVZQ X2FkZF9kaWdlc3QoRVZQX3NoYTEoKSk7Ci0rICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhT Tl9zaGExLCAic3NsMy1zaGExIik7Ci0rICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9z aGExV2l0aFJTQUVuY3J5cHRpb24sIFNOX3NoYTFXaXRoUlNBKTsKLSsjICBpZm5kZWYgT1BFTlNT TF9OT19EU0EKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9kc3MxKCkpOwotKyAgICAgICAg RVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fZHNhV2l0aFNIQTEsIFNOX2RzYVdpdGhTSEExXzIpOwot KyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fZHNhV2l0aFNIQTEsICJEU1MxIik7Ci0r ICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9kc2FXaXRoU0hBMSwgImRzczEiKTsKLSsj ICBlbmRpZgotKyMgIGlmbmRlZiBPUEVOU1NMX05PX0VDRFNBCi0rICAgICAgICBFVlBfYWRkX2Rp Z2VzdChFVlBfZWNkc2EoKSk7Ci0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgT1BFTlNT TF9OT19TSEEyNTYKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGEyMjQoKSk7Ci0rICAg ICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhMjU2KCkpOwotKyMgZW5kaWYKLSsjIGlmbmRlZiBP UEVOU1NMX05PX1NIQTUxMgotKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTM4NCgpKTsK LSsgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGE1MTIoKSk7Ci0rIyBlbmRpZgotKyAgICB9 Ci0gI2VuZGlmCi0gfQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2V2cC9kaWdlc3Qu Yy5maXBzIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9ldnAvZGlnZXN0LmMKLS0tLSBvcGVuc3NsLTEu MC4yaS9jcnlwdG8vZXZwL2RpZ2VzdC5jLmZpcHMJMjAxNi0wOS0yMiAxMjoyMzowNi4wMDAwMDAw MDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZwL2RpZ2VzdC5jCTIwMTYtMDkt MjIgMTM6NDU6NDAuMDU0NjU4OTI5ICswMjAwCi1AQCAtMTQzLDE4ICsxNDMsNTUgQEAgaW50IEVW UF9EaWdlc3RJbml0KEVWUF9NRF9DVFggKmN0eCwgY29ucwotICAgICByZXR1cm4gRVZQX0RpZ2Vz dEluaXRfZXgoY3R4LCB0eXBlLCBOVUxMKTsKLSB9Ci0gCi0rI2lmZGVmIE9QRU5TU0xfRklQUwot KwotKy8qIFRoZSBwdXJwb3NlIG9mIHRoZXNlIGlzIHRvIHRyYXAgcHJvZ3JhbXMgdGhhdCBhdHRl bXB0IHRvIHVzZSBub24gRklQUwotKyAqIGFsZ29yaXRobXMgaW4gRklQUyBtb2RlIGFuZCBpZ25v cmUgdGhlIGVycm9ycy4KLSsgKi8KLSsKLStzdGF0aWMgaW50IGJhZF9pbml0KEVWUF9NRF9DVFgg KmN0eCkKLSt7Ci0rICAgIEZJUFNfRVJST1JfSUdOT1JFRCgiRGlnZXN0IGluaXQiKTsKLSsgICAg cmV0dXJuIDA7Ci0rfQotKwotK3N0YXRpYyBpbnQgYmFkX3VwZGF0ZShFVlBfTURfQ1RYICpjdHgs IGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBjb3VudCkKLSt7Ci0rICAgIEZJUFNfRVJST1JfSUdO T1JFRCgiRGlnZXN0IHVwZGF0ZSIpOwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGlu dCBiYWRfZmluYWwoRVZQX01EX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICptZCkKLSt7Ci0rICAg IEZJUFNfRVJST1JfSUdOT1JFRCgiRGlnZXN0IEZpbmFsIik7Ci0rICAgIHJldHVybiAwOwotK30K LSsKLStzdGF0aWMgY29uc3QgRVZQX01EIGJhZF9tZCA9IHsKLSsgICAgMCwKLSsgICAgMCwKLSsg ICAgMCwKLSsgICAgMCwKLSsgICAgYmFkX2luaXQsCi0rICAgIGJhZF91cGRhdGUsCi0rICAgIGJh ZF9maW5hbCwKLSsgICAgTlVMTCwKLSsgICAgTlVMTCwKLSsgICAgTlVMTCwKLSsgICAgMCwKLSsg ICAgezAsIDAsIDAsIDB9LAotK307Ci0rCi0rI2VuZGlmCi0rCi0gaW50IEVWUF9EaWdlc3RJbml0 X2V4KEVWUF9NRF9DVFggKmN0eCwgY29uc3QgRVZQX01EICp0eXBlLCBFTkdJTkUgKmltcGwpCi0g ewotICAgICBFVlBfTURfQ1RYX2NsZWFyX2ZsYWdzKGN0eCwgRVZQX01EX0NUWF9GTEFHX0NMRUFO RUQpOwotICNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0gICAgLyogSWYgRklQUyBtb2RlIHN3aXRjaCB0 byBhcHByb3ZlZCBpbXBsZW1lbnRhdGlvbiBpZiBwb3NzaWJsZSAqLwotLSAgICBpZiAoRklQU19t b2RlKCkpIHsKLS0gICAgICAgIGNvbnN0IEVWUF9NRCAqZmlwc21kOwotLSAgICAgICAgaWYgKHR5 cGUpIHsKLS0gICAgICAgICAgICBmaXBzbWQgPSBldnBfZ2V0X2ZpcHNfbWQodHlwZSk7Ci0tICAg ICAgICAgICAgaWYgKGZpcHNtZCkKLS0gICAgICAgICAgICAgICAgdHlwZSA9IGZpcHNtZDsKLS0g ICAgICAgIH0KLSsgICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsKLSsgICAgICAgIEZJ UFNlcnIoRklQU19GX0VWUF9ESUdFU1RJTklUX0VYLCBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlM RUQpOwotKyAgICAgICAgY3R4LT5kaWdlc3QgPSAmYmFkX21kOwotKyAgICAgICAgcmV0dXJuIDA7 Ci0gICAgIH0KLSAjZW5kaWYKLSAjaWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5FCi1AQCAtMjEyLDYg KzI0OSwxNiBAQCBpbnQgRVZQX0RpZ2VzdEluaXRfZXgoRVZQX01EX0NUWCAqY3R4LCBjCi0gICAg IH0KLSAjZW5kaWYKLSAgICAgaWYgKGN0eC0+ZGlnZXN0ICE9IHR5cGUpIHsKLSsjaWZkZWYgT1BF TlNTTF9GSVBTCi0rICAgICAgICBpZiAoRklQU19tb2RlKCkpIHsKLSsgICAgICAgICAgICBpZiAo ISh0eXBlLT5mbGFncyAmIEVWUF9NRF9GTEFHX0ZJUFMpCi0rICAgICAgICAgICAgICAgICYmICEo Y3R4LT5mbGFncyAmIEVWUF9NRF9DVFhfRkxBR19OT05fRklQU19BTExPVykpIHsKLSsgICAgICAg ICAgICAgICAgRVZQZXJyKEVWUF9GX0VWUF9ESUdFU1RJTklUX0VYLCBFVlBfUl9ESVNBQkxFRF9G T1JfRklQUyk7Ci0rICAgICAgICAgICAgICAgIGN0eC0+ZGlnZXN0ID0gJmJhZF9tZDsKLSsgICAg ICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotKyNlbmRp ZgotICAgICAgICAgaWYgKGN0eC0+ZGlnZXN0ICYmIGN0eC0+ZGlnZXN0LT5jdHhfc2l6ZSkgewot ICAgICAgICAgICAgIE9QRU5TU0xfZnJlZShjdHgtPm1kX2RhdGEpOwotICAgICAgICAgICAgIGN0 eC0+bWRfZGF0YSA9IE5VTEw7Ci1AQCAtMjM4LDIzICsyODUsMTMgQEAgaW50IEVWUF9EaWdlc3RJ bml0X2V4KEVWUF9NRF9DVFggKmN0eCwgYwotICAgICB9Ci0gICAgIGlmIChjdHgtPmZsYWdzICYg RVZQX01EX0NUWF9GTEFHX05PX0lOSVQpCi0gICAgICAgICByZXR1cm4gMTsKLS0jaWZkZWYgT1BF TlNTTF9GSVBTCi0tICAgIGlmIChGSVBTX21vZGUoKSkgewotLSAgICAgICAgaWYgKEZJUFNfZGln ZXN0aW5pdChjdHgsIHR5cGUpKQotLSAgICAgICAgICAgIHJldHVybiAxOwotLSAgICAgICAgT1BF TlNTTF9mcmVlKGN0eC0+bWRfZGF0YSk7Ci0tICAgICAgICBjdHgtPm1kX2RhdGEgPSBOVUxMOwot LSAgICAgICAgcmV0dXJuIDA7Ci0tICAgIH0KLS0jZW5kaWYKLSAgICAgcmV0dXJuIGN0eC0+ZGln ZXN0LT5pbml0KGN0eCk7Ci0gfQotIAotIGludCBFVlBfRGlnZXN0VXBkYXRlKEVWUF9NRF9DVFgg KmN0eCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGNvdW50KQotIHsKLSAjaWZkZWYgT1BFTlNT TF9GSVBTCi0tICAgIGlmIChGSVBTX21vZGUoKSkKLS0gICAgICAgIHJldHVybiBGSVBTX2RpZ2Vz dHVwZGF0ZShjdHgsIGRhdGEsIGNvdW50KTsKLSsgICAgRklQU19zZWxmdGVzdF9jaGVjaygpOwot ICNlbmRpZgotICAgICByZXR1cm4gY3R4LT51cGRhdGUoY3R4LCBkYXRhLCBjb3VudCk7Ci0gfQot QEAgLTI3MiwxMSArMzA5LDEwIEBAIGludCBFVlBfRGlnZXN0RmluYWwoRVZQX01EX0NUWCAqY3R4 LCB1bnMKLSBpbnQgRVZQX0RpZ2VzdEZpbmFsX2V4KEVWUF9NRF9DVFggKmN0eCwgdW5zaWduZWQg Y2hhciAqbWQsIHVuc2lnbmVkIGludCAqc2l6ZSkKLSB7Ci0gICAgIGludCByZXQ7Ci0rCi0gI2lm ZGVmIE9QRU5TU0xfRklQUwotLSAgICBpZiAoRklQU19tb2RlKCkpCi0tICAgICAgICByZXR1cm4g RklQU19kaWdlc3RmaW5hbChjdHgsIG1kLCBzaXplKTsKLSsgICAgRklQU19zZWxmdGVzdF9jaGVj aygpOwotICNlbmRpZgotLQotICAgICBPUEVOU1NMX2Fzc2VydChjdHgtPmRpZ2VzdC0+bWRfc2l6 ZSA8PSBFVlBfTUFYX01EX1NJWkUpOwotICAgICByZXQgPSBjdHgtPmRpZ2VzdC0+ZmluYWwoY3R4 LCBtZCk7Ci0gICAgIGlmIChzaXplICE9IE5VTEwpCi1AQCAtMzc1LDcgKzQxMSw2IEBAIHZvaWQg RVZQX01EX0NUWF9kZXN0cm95KEVWUF9NRF9DVFggKmN0eCkKLSAvKiBUaGlzIGNhbGwgZnJlZXMg cmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udGV4dCAqLwotIGludCBFVlBfTURfQ1RY X2NsZWFudXAoRVZQX01EX0NUWCAqY3R4KQotIHsKLS0jaWZuZGVmIE9QRU5TU0xfRklQUwotICAg ICAvKgotICAgICAgKiBEb24ndCBhc3N1bWUgY3R4LT5tZF9kYXRhIHdhcyBjbGVhbmVkIGluIEVW UF9EaWdlc3RfRmluYWwsIGJlY2F1c2UKLSAgICAgICogc29tZXRpbWVzIG9ubHkgY29waWVzIG9m IHRoZSBjb250ZXh0IGFyZSBldmVyIGZpbmFsaXNlZC4KLUBAIC0zODgsNyArNDIzLDYgQEAgaW50 IEVWUF9NRF9DVFhfY2xlYW51cChFVlBfTURfQ1RYICpjdHgpCi0gICAgICAgICBPUEVOU1NMX2Ns ZWFuc2UoY3R4LT5tZF9kYXRhLCBjdHgtPmRpZ2VzdC0+Y3R4X3NpemUpOwotICAgICAgICAgT1BF TlNTTF9mcmVlKGN0eC0+bWRfZGF0YSk7Ci0gICAgIH0KLS0jZW5kaWYKLSAgICAgaWYgKGN0eC0+ cGN0eCkKLSAgICAgICAgIEVWUF9QS0VZX0NUWF9mcmVlKGN0eC0+cGN0eCk7Ci0gI2lmbmRlZiBP UEVOU1NMX05PX0VOR0lORQotQEAgLTM5OSw5ICs0MzMsNiBAQCBpbnQgRVZQX01EX0NUWF9jbGVh bnVwKEVWUF9NRF9DVFggKmN0eCkKLSAgICAgICAgICAqLwotICAgICAgICAgRU5HSU5FX2Zpbmlz aChjdHgtPmVuZ2luZSk7Ci0gI2VuZGlmCi0tI2lmZGVmIE9QRU5TU0xfRklQUwotLSAgICBGSVBT X21kX2N0eF9jbGVhbnVwKGN0eCk7Ci0tI2VuZGlmCi0gICAgIG1lbXNldChjdHgsICdcMCcsIHNp emVvZiAqY3R4KTsKLSAKLSAgICAgcmV0dXJuIDE7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9j cnlwdG8vZXZwL2VfYWVzLmMuZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZwL2VfYWVzLmMK LS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZwL2VfYWVzLmMuZmlwcwkyMDE2LTA5LTIyIDEy OjIzOjA2LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9ldnAvZV9h ZXMuYwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxMTIyMDg1OSArMDIwMAotQEAgLTYwLDkgKzYwLDYg QEAKLSAjIGluY2x1ZGUgIm1vZGVzX2xjbC5oIgotICMgaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+ Ci0gCi0tIyB1bmRlZiBFVlBfQ0lQSF9GTEFHX0ZJUFMKLS0jIGRlZmluZSBFVlBfQ0lQSF9GTEFH X0ZJUFMgMAotLQotIHR5cGVkZWYgc3RydWN0IHsKLSAgICAgdW5pb24gewotICAgICAgICAgZG91 YmxlIGFsaWduOwotQEAgLTExNTksNiArMTE1NiwxMSBAQCBzdGF0aWMgaW50IGFlc19nY21fY3Ry bChFVlBfQ0lQSEVSX0NUWCAqCi0gICAgIGNhc2UgRVZQX0NUUkxfR0NNX1NFVF9JVkxFTjoKLSAg ICAgICAgIGlmIChhcmcgPD0gMCkKLSAgICAgICAgICAgICByZXR1cm4gMDsKLSsjIGlmZGVmIE9Q RU5TU0xfRklQUwotKyAgICAgICAgaWYgKEZJUFNfbW9kdWxlX21vZGUoKSAmJiAhKGMtPmZsYWdz ICYgRVZQX0NJUEhfRkxBR19OT05fRklQU19BTExPVykKLSsgICAgICAgICAgICAmJiBhcmcgPCAx MikKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsjIGVuZGlmCi0gICAgICAgICAvKiBBbGxvY2F0 ZSBtZW1vcnkgZm9yIElWIGlmIG5lZWRlZCAqLwotICAgICAgICAgaWYgKChhcmcgPiBFVlBfTUFY X0lWX0xFTkdUSCkgJiYgKGFyZyA+IGdjdHgtPml2bGVuKSkgewotICAgICAgICAgICAgIGlmIChn Y3R4LT5pdiAhPSBjLT5pdikKLUBAIC0xNzI3LDYgKzE3MjksMTQgQEAgc3RhdGljIGludCBhZXNf eHRzX2NpcGhlcihFVlBfQ0lQSEVSX0NUWAotICAgICAgICAgcmV0dXJuIDA7Ci0gICAgIGlmICgh b3V0IHx8ICFpbiB8fCBsZW4gPCBBRVNfQkxPQ0tfU0laRSkKLSAgICAgICAgIHJldHVybiAwOwot KyMgaWZkZWYgT1BFTlNTTF9GSVBTCi0rICAgIC8qIFJlcXVpcmVtZW50IG9mIFNQODAwLTM4RSAq LwotKyAgICBpZiAoRklQU19tb2R1bGVfbW9kZSgpICYmICEoY3R4LT5mbGFncyAmIEVWUF9DSVBI X0ZMQUdfTk9OX0ZJUFNfQUxMT1cpICYmCi0rICAgICAgICAobGVuID4gKDFVTCA8PCAyMCkgKiAx NikpIHsKLSsgICAgICAgIEVWUGVycihFVlBfRl9BRVNfWFRTX0NJUEhFUiwgRVZQX1JfVE9PX0xB UkdFKTsKLSsgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rIyBlbmRpZgotICAgICBpZiAoeGN0 eC0+c3RyZWFtKQotICAgICAgICAgKCp4Y3R4LT5zdHJlYW0pIChpbiwgb3V0LCBsZW4sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgIHhjdHgtPnh0cy5rZXkxLCB4Y3R4LT54dHMua2V5MiwgY3R4 LT5pdik7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZwL2VfZGVzMy5jLmZpcHMg b3BlbnNzbC0xLjAuMmkvY3J5cHRvL2V2cC9lX2RlczMuYwotLS0tIG9wZW5zc2wtMS4wLjJpL2Ny eXB0by9ldnAvZV9kZXMzLmMuZmlwcwkyMDE2LTA5LTIyIDEyOjIzOjA2LjAwMDAwMDAwMCArMDIw MAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9ldnAvZV9kZXMzLmMJMjAxNi0wOS0yMiAxMzoz NTo1Ny4wMTIyMjA4ODIgKzAyMDAKLUBAIC02NSwxMCArNjUsNiBAQAotICMgaW5jbHVkZSA8b3Bl bnNzbC9kZXMuaD4KLSAjIGluY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgotIAotLS8qIEJsb2NrIHVz ZSBvZiBpbXBsZW1lbnRhdGlvbnMgaW4gRklQUyBtb2RlICovCi0tIyB1bmRlZiBFVlBfQ0lQSF9G TEFHX0ZJUFMKLS0jIGRlZmluZSBFVlBfQ0lQSF9GTEFHX0ZJUFMgICAgICAwCi0tCi0gdHlwZWRl ZiBzdHJ1Y3QgewotICAgICB1bmlvbiB7Ci0gICAgICAgICBkb3VibGUgYWxpZ247Ci1kaWZmIC11 cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZwL2VfbnVsbC5jLmZpcHMgb3BlbnNzbC0xLjAuMmkv Y3J5cHRvL2V2cC9lX251bGwuYwotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9ldnAvZV9udWxs LmMuZmlwcwkyMDE2LTA5LTIyIDEyOjIzOjA2LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wt MS4wLjJpL2NyeXB0by9ldnAvZV9udWxsLmMJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMTIyMjA4ODIg KzAyMDAKLUBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyBpbnQgbnVsbF9jaXBoZXIoRVZQX0NJUEhF Ul9DVFggKmMKLSBzdGF0aWMgY29uc3QgRVZQX0NJUEhFUiBuX2NpcGhlciA9IHsKLSAgICAgTklE X3VuZGVmLAotICAgICAxLCAwLCAwLAotLSAgICAwLAotKyAgICBFVlBfQ0lQSF9GTEFHX0ZJUFMs Ci0gICAgIG51bGxfaW5pdF9rZXksCi0gICAgIG51bGxfY2lwaGVyLAotICAgICBOVUxMLAotZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2V2cC9ldnBfZW5jLmMuZmlwcyBvcGVuc3NsLTEu MC4yaS9jcnlwdG8vZXZwL2V2cF9lbmMuYwotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9ldnAv ZXZwX2VuYy5jLmZpcHMJMjAxNi0wOS0yMiAxMjoyMzowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBv cGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZwL2V2cF9lbmMuYwkyMDE2LTA5LTIyIDEzOjQ2OjEyLjk5 ODQxODIyMiArMDIwMAotQEAgLTY5LDE2ICs2OSw3MyBAQAotICNlbmRpZgotICNpbmNsdWRlICJl dnBfbG9jbC5oIgotIAotLSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0jIGRlZmluZSBNX2RvX2NpcGhl cihjdHgsIG91dCwgaW4sIGlubCkgRklQU19jaXBoZXIoY3R4LCBvdXQsIGluLCBpbmwpCi0tI2Vs c2UKLS0jIGRlZmluZSBNX2RvX2NpcGhlcihjdHgsIG91dCwgaW4sIGlubCkgY3R4LT5jaXBoZXIt PmRvX2NpcGhlcihjdHgsIG91dCwgaW4sIGlubCkKLS0jZW5kaWYKLSsjZGVmaW5lIE1fZG9fY2lw aGVyKGN0eCwgb3V0LCBpbiwgaW5sKSBjdHgtPmNpcGhlci0+ZG9fY2lwaGVyKGN0eCwgb3V0LCBp biwgaW5sKQotIAotIGNvbnN0IGNoYXIgRVZQX3ZlcnNpb25bXSA9ICJFVlAiIE9QRU5TU0xfVkVS U0lPTl9QVEVYVDsKLSAKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCi0rLyogVGhlIHB1cnBvc2Ug b2YgdGhlc2UgaXMgdG8gdHJhcCBwcm9ncmFtcyB0aGF0IGF0dGVtcHQgdG8gdXNlIG5vbiBGSVBT Ci0rICogYWxnb3JpdGhtcyBpbiBGSVBTIG1vZGUgYW5kIGlnbm9yZSB0aGUgZXJyb3JzLgotKyAq LwotKwotK3N0YXRpYyBpbnQgYmFkX2luaXQoRVZQX0NJUEhFUl9DVFggKmN0eCwgY29uc3QgdW5z aWduZWQgY2hhciAqa2V5LAotKyAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hh ciAqaXYsIGludCBlbmMpCi0rewotKyAgICBGSVBTX0VSUk9SX0lHTk9SRUQoIkNpcGhlciBpbml0 Iik7Ci0rICAgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50IGJhZF9kb19jaXBoZXIoRVZQ X0NJUEhFUl9DVFggKmN0eCwgdW5zaWduZWQgY2hhciAqb3V0LAotKyAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgaW50IGlubCkKLSt7Ci0r ICAgIEZJUFNfRVJST1JfSUdOT1JFRCgiQ2lwaGVyIHVwZGF0ZSIpOwotKyAgICByZXR1cm4gMDsK LSt9Ci0rCi0rLyogTkI6IG5vIGNsZWFudXAgYmVjYXVzZSBpdCBpcyBhbGxvd2VkIGFmdGVyIGZh aWxlZCBpbml0ICovCi0rCi0rc3RhdGljIGludCBiYWRfc2V0X2FzbjEoRVZQX0NJUEhFUl9DVFgg KmN0eCwgQVNOMV9UWVBFICp0eXApCi0rewotKyAgICBGSVBTX0VSUk9SX0lHTk9SRUQoIkNpcGhl ciBzZXRfYXNuMSIpOwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGludCBiYWRfZ2V0 X2FzbjEoRVZQX0NJUEhFUl9DVFggKmN0eCwgQVNOMV9UWVBFICp0eXApCi0rewotKyAgICBGSVBT X0VSUk9SX0lHTk9SRUQoIkNpcGhlciBnZXRfYXNuMSIpOwotKyAgICByZXR1cm4gMDsKLSt9Ci0r Ci0rc3RhdGljIGludCBiYWRfY3RybChFVlBfQ0lQSEVSX0NUWCAqY3R4LCBpbnQgdHlwZSwgaW50 IGFyZywgdm9pZCAqcHRyKQotK3sKLSsgICAgRklQU19FUlJPUl9JR05PUkVEKCJDaXBoZXIgY3Ry bCIpOwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IEVWUF9DSVBIRVIgYmFk X2NpcGhlciA9IHsKLSsgICAgMCwKLSsgICAgMCwKLSsgICAgMCwKLSsgICAgMCwKLSsgICAgMCwK LSsgICAgYmFkX2luaXQsCi0rICAgIGJhZF9kb19jaXBoZXIsCi0rICAgIE5VTEwsCi0rICAgIDAs Ci0rICAgIGJhZF9zZXRfYXNuMSwKLSsgICAgYmFkX2dldF9hc24xLAotKyAgICBiYWRfY3RybCwK LSsgICAgTlVMTAotK307Ci0rCi0rI2VuZGlmCi0rCi0gdm9pZCBFVlBfQ0lQSEVSX0NUWF9pbml0 KEVWUF9DSVBIRVJfQ1RYICpjdHgpCi0gewotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgRklQ U19zZWxmdGVzdF9jaGVjaygpOwotKyNlbmRpZgotICAgICBtZW1zZXQoY3R4LCAwLCBzaXplb2Yo RVZQX0NJUEhFUl9DVFgpKTsKLSAgICAgLyogY3R4LT5jaXBoZXI9TlVMTDsgKi8KLSB9Ci1AQCAt MTEwLDYgKzE2NywxMyBAQCBpbnQgRVZQX0NpcGhlckluaXRfZXgoRVZQX0NJUEhFUl9DVFggKmN0 Ci0gICAgICAgICAgICAgZW5jID0gMTsKLSAgICAgICAgIGN0eC0+ZW5jcnlwdCA9IGVuYzsKLSAg ICAgfQotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVk KCkpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0VWUF9DSVBIRVJJTklUX0VYLCBGSVBTX1Jf RklQU19TRUxGVEVTVF9GQUlMRUQpOwotKyAgICAgICAgY3R4LT5jaXBoZXIgPSAmYmFkX2NpcGhl cjsKLSsgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rI2VuZGlmCi0gI2lmbmRlZiBPUEVOU1NM X05PX0VOR0lORQotICAgICAvKgotICAgICAgKiBXaGV0aGVyIGl0J3MgbmljZSBvciBub3QsICJJ bml0cyIgY2FuIGJlIHVzZWQgb24gIkZpbmFsIidkIGNvbnRleHRzIHNvCi1AQCAtMTY4LDE2ICsy MzIsNiBAQCBpbnQgRVZQX0NpcGhlckluaXRfZXgoRVZQX0NJUEhFUl9DVFggKmN0Ci0gICAgICAg ICAgICAgY3R4LT5lbmdpbmUgPSBOVUxMOwotICNlbmRpZgotIAotLSNpZmRlZiBPUEVOU1NMX0ZJ UFMKLS0gICAgICAgIGlmIChGSVBTX21vZGUoKSkgewotLSAgICAgICAgICAgIGNvbnN0IEVWUF9D SVBIRVIgKmZjaXBoZXIgPSBOVUxMOwotLSAgICAgICAgICAgIGlmIChjaXBoZXIpCi0tICAgICAg ICAgICAgICAgIGZjaXBoZXIgPSBldnBfZ2V0X2ZpcHNfY2lwaGVyKGNpcGhlcik7Ci0tICAgICAg ICAgICAgaWYgKGZjaXBoZXIpCi0tICAgICAgICAgICAgICAgIGNpcGhlciA9IGZjaXBoZXI7Ci0t ICAgICAgICAgICAgcmV0dXJuIEZJUFNfY2lwaGVyaW5pdChjdHgsIGNpcGhlciwga2V5LCBpdiwg ZW5jKTsKLS0gICAgICAgIH0KLS0jZW5kaWYKLSAgICAgICAgIGN0eC0+Y2lwaGVyID0gY2lwaGVy OwotICAgICAgICAgaWYgKGN0eC0+Y2lwaGVyLT5jdHhfc2l6ZSkgewotICAgICAgICAgICAgIGN0 eC0+Y2lwaGVyX2RhdGEgPSBPUEVOU1NMX21hbGxvYyhjdHgtPmNpcGhlci0+Y3R4X3NpemUpOwot QEAgLTIwNCwxMCArMjU4LDYgQEAgaW50IEVWUF9DaXBoZXJJbml0X2V4KEVWUF9DSVBIRVJfQ1RY ICpjdAotICNpZm5kZWYgT1BFTlNTTF9OT19FTkdJTkUKLSAgc2tpcF90b19pbml0OgotICNlbmRp ZgotLSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0gICAgaWYgKEZJUFNfbW9kZSgpKQotLSAgICAgICAg cmV0dXJuIEZJUFNfY2lwaGVyaW5pdChjdHgsIGNpcGhlciwga2V5LCBpdiwgZW5jKTsKLS0jZW5k aWYKLSAgICAgLyogd2UgYXNzdW1lIGJsb2NrIHNpemUgaXMgYSBwb3dlciBvZiAyIGluICpjcnlw dFVwZGF0ZSAqLwotICAgICBPUEVOU1NMX2Fzc2VydChjdHgtPmNpcGhlci0+YmxvY2tfc2l6ZSA9 PSAxCi0gICAgICAgICAgICAgICAgICAgIHx8IGN0eC0+Y2lwaGVyLT5ibG9ja19zaXplID09IDgK LUBAIC0yNTMsNiArMzAzLDE5IEBAIGludCBFVlBfQ2lwaGVySW5pdF9leChFVlBfQ0lQSEVSX0NU WCAqY3QKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgfQotKyNpZmRlZiBP UEVOU1NMX0ZJUFMKLSsgICAgLyogQWZ0ZXIgJ2tleScgaXMgc2V0IG5vIGZ1cnRoZXIgcGFyYW1l dGVycyBjaGFuZ2VzIGFyZSBwZXJtaXNzaWJsZS4KLSsgICAgICogU28gb25seSBjaGVjayBmb3Ig bm9uIEZJUFMgZW5hYmxpbmcgYXQgdGhpcyBwb2ludC4KLSsgICAgICovCi0rICAgIGlmIChrZXkg JiYgRklQU19tb2RlKCkpIHsKLSsgICAgICAgIGlmICghKGN0eC0+Y2lwaGVyLT5mbGFncyAmIEVW UF9DSVBIX0ZMQUdfRklQUykKLSsgICAgICAgICAgICAmICEoY3R4LT5mbGFncyAmIEVWUF9DSVBI X0ZMQUdfTk9OX0ZJUFNfQUxMT1cpKSB7Ci0rICAgICAgICAgICAgRVZQZXJyKEVWUF9GX0VWUF9D SVBIRVJJTklUX0VYLCBFVlBfUl9ESVNBQkxFRF9GT1JfRklQUyk7Ci0rICAgICAgICAgICAgY3R4 LT5jaXBoZXIgPSAmYmFkX2NpcGhlcjsKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAg IH0KLSsgICAgfQotKyNlbmRpZgotIAotICAgICBpZiAoa2V5IHx8IChjdHgtPmNpcGhlci0+Zmxh Z3MgJiBFVlBfQ0lQSF9BTFdBWVNfQ0FMTF9JTklUKSkgewotICAgICAgICAgaWYgKCFjdHgtPmNp cGhlci0+aW5pdChjdHgsIGtleSwgaXYsIGVuYykpCi1AQCAtNTU0LDcgKzYxNyw2IEBAIHZvaWQg RVZQX0NJUEhFUl9DVFhfZnJlZShFVlBfQ0lQSEVSX0NUWAotIAotIGludCBFVlBfQ0lQSEVSX0NU WF9jbGVhbnVwKEVWUF9DSVBIRVJfQ1RYICpjKQotIHsKLS0jaWZuZGVmIE9QRU5TU0xfRklQUwot ICAgICBpZiAoYy0+Y2lwaGVyICE9IE5VTEwpIHsKLSAgICAgICAgIGlmIChjLT5jaXBoZXItPmNs ZWFudXAgJiYgIWMtPmNpcGhlci0+Y2xlYW51cChjKSkKLSAgICAgICAgICAgICByZXR1cm4gMDsK LUBAIC01NjQsNyArNjI2LDYgQEAgaW50IEVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoRVZQX0NJUEhF Ul9DVAotICAgICB9Ci0gICAgIGlmIChjLT5jaXBoZXJfZGF0YSkKLSAgICAgICAgIE9QRU5TU0xf ZnJlZShjLT5jaXBoZXJfZGF0YSk7Ci0tI2VuZGlmCi0gI2lmbmRlZiBPUEVOU1NMX05PX0VOR0lO RQotICAgICBpZiAoYy0+ZW5naW5lKQotICAgICAgICAgLyoKLUBAIC01NzMsOSArNjM0LDYgQEAg aW50IEVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoRVZQX0NJUEhFUl9DVAotICAgICAgICAgICovCi0g ICAgICAgICBFTkdJTkVfZmluaXNoKGMtPmVuZ2luZSk7Ci0gI2VuZGlmCi0tI2lmZGVmIE9QRU5T U0xfRklQUwotLSAgICBGSVBTX2NpcGhlcl9jdHhfY2xlYW51cChjKTsKLS0jZW5kaWYKLSAgICAg bWVtc2V0KGMsIDAsIHNpemVvZihFVlBfQ0lQSEVSX0NUWCkpOwotICAgICByZXR1cm4gMTsKLSB9 Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZwL2V2cC5oLmZpcHMgb3BlbnNzbC0x LjAuMmkvY3J5cHRvL2V2cC9ldnAuaAotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9ldnAvZXZw LmguZmlwcwkyMDE2LTA5LTIyIDEzOjM1OjU2LjkwMjIxODM0NiArMDIwMAotKysrIG9wZW5zc2wt MS4wLjJpL2NyeXB0by9ldnAvZXZwLmgJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMTIyMjA4ODIgKzAy MDAKLUBAIC0xMjIsNiArMTIyLDEwIEBACi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi0gCi0rIyBp ZmRlZiBPUEVOU1NMX0ZJUFMKLSsjICBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjIGVuZGlm Ci0rCi0gLyoKLSAgKiBUeXBlIG5lZWRzIHRvIGJlIGEgYml0IGZpZWxkIFN1Yi10eXBlIG5lZWRz IHRvIGJlIGZvciB2YXJpYXRpb25zIG9uIHRoZQotICAqIG1ldGhvZCwgYXMgaW4sIGNhbiBpdCBk byBhcmJpdHJhcnkgZW5jcnlwdGlvbi4uLi4KLUBAIC0yODUsMTEgKzI4OSw2IEBAIHN0cnVjdCBl bnZfbWRfY3R4X3N0IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqIGNsZWFuZWQgKi8KLSAjIGRlZmluZSBFVlBfTURfQ1RYX0ZMQUdfUkVVU0UgICAg ICAgICAgIDB4MDAwNC8qIERvbid0IGZyZWUgdXAgY3R4LT5tZF9kYXRhCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpbiBFVlBfTURfQ1RYX2NsZWFu dXAgKi8KLS0vKgotLSAqIEZJUFMgYW5kIHBhZCBvcHRpb25zIGFyZSBpZ25vcmVkIGluIDEuMC4w LCBkZWZpbml0aW9ucyBhcmUgaGVyZSBzbyB3ZQotLSAqIGRvbid0IGFjY2lkZW50YWxseSByZXVz ZSB0aGUgdmFsdWVzIGZvciBvdGhlciBwdXJwb3Nlcy4KLS0gKi8KLS0KLSAjIGRlZmluZSBFVlBf TURfQ1RYX0ZMQUdfTk9OX0ZJUFNfQUxMT1cgIDB4MDAwOC8qIEFsbG93IHVzZSBvZiBub24gRklQ UwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZGln ZXN0IGluIEZJUFMgbW9kZSAqLwotIAotQEAgLTMwMiw2ICszMDEsMTAgQEAgc3RydWN0IGVudl9t ZF9jdHhfc3QgewotICMgZGVmaW5lIEVWUF9NRF9DVFhfRkxBR19QQURfUEtDUzEgICAgICAgMHgw MC8qIFBLQ1MjMSB2MS41IG1vZGUgKi8KLSAjIGRlZmluZSBFVlBfTURfQ1RYX0ZMQUdfUEFEX1g5 MzEgICAgICAgIDB4MTAvKiBYOS4zMSBtb2RlICovCi0gIyBkZWZpbmUgRVZQX01EX0NUWF9GTEFH X1BBRF9QU1MgICAgICAgICAweDIwLyogUFNTIG1vZGUgKi8KLSsjIGRlZmluZSBNX0VWUF9NRF9D VFhfRkxBR19QU1NfU0FMVChjdHgpIFwKLSsgICAgICAgICAgICAgICAgKChjdHgtPmZsYWdzPj4x NikgJjB4RkZGRikgLyogc2VlZCBsZW5ndGggKi8KLSsjIGRlZmluZSBFVlBfTURfQ1RYX0ZMQUdf UFNTX01ETEVOICAgICAgIDB4RkZGRi8qIHNhbHQgbGVuIHNhbWUgYXMgZGlnZXN0ICovCi0rIyBk ZWZpbmUgRVZQX01EX0NUWF9GTEFHX1BTU19NUkVDICAgICAgICAweEZGRkUvKiBzYWx0IG1heCBv ciBhdXRvIHJlY292ZXJlZCAqLwotIAotICMgZGVmaW5lIEVWUF9NRF9DVFhfRkxBR19OT19JTklU ICAgICAgICAgMHgwMTAwLyogRG9uJ3QgaW5pdGlhbGl6ZSBtZF9kYXRhICovCi0gCi1AQCAtMzYz LDE1ICszNjYsMTUgQEAgc3RydWN0IGV2cF9jaXBoZXJfc3QgewotIC8qIGNpcGhlciBoYW5kbGVz IHJhbmRvbSBrZXkgZ2VuZXJhdGlvbiAqLwotICMgZGVmaW5lICAgICAgICAgRVZQX0NJUEhfUkFO RF9LRVkgICAgICAgICAgICAgICAweDIwMAotIC8qIGNpcGhlciBoYXMgaXRzIG93biBhZGRpdGlv bmFsIGNvcHlpbmcgbG9naWMgKi8KLS0jIGRlZmluZSAgICAgICAgIEVWUF9DSVBIX0NVU1RPTV9D T1BZICAgICAgICAgICAgMHg0MDAKLSsjIGRlZmluZSAgICAgICAgIEVWUF9DSVBIX0NVU1RPTV9D T1BZICAgICAgICAgICAgMHg0MDAwCi0gLyogQWxsb3cgdXNlIGRlZmF1bHQgQVNOMSBnZXQvc2V0 IGl2ICovCi0gIyBkZWZpbmUgICAgICAgICBFVlBfQ0lQSF9GTEFHX0RFRkFVTFRfQVNOMSAgICAg IDB4MTAwMAotIC8qIEJ1ZmZlciBsZW5ndGggaW4gYml0cyBub3QgYnl0ZXM6IENGQjEgbW9kZSBv bmx5ICovCi0gIyBkZWZpbmUgICAgICAgICBFVlBfQ0lQSF9GTEFHX0xFTkdUSF9CSVRTICAgICAg IDB4MjAwMAotIC8qIE5vdGUgaWYgc3VpdGFibGUgZm9yIHVzZSBpbiBGSVBTIG1vZGUgKi8KLS0j IGRlZmluZSAgICAgICAgIEVWUF9DSVBIX0ZMQUdfRklQUyAgICAgICAgICAgICAgMHg0MDAwCi0r IyBkZWZpbmUgICAgICAgICBFVlBfQ0lQSF9GTEFHX0ZJUFMgICAgICAgICAgICAgIDB4NDAwCi0g LyogQWxsb3cgbm9uIEZJUFMgY2lwaGVyIGluIEZJUFMgbW9kZSAqLwotLSMgZGVmaW5lICAgICAg ICAgRVZQX0NJUEhfRkxBR19OT05fRklQU19BTExPVyAgICAweDgwMDAKLSsjIGRlZmluZSAgICAg ICAgIEVWUF9DSVBIX0ZMQUdfTk9OX0ZJUFNfQUxMT1cgICAgMHg4MDAKLSAvKgotICAqIENpcGhl ciBoYW5kbGVzIGFueSBhbmQgYWxsIHBhZGRpbmcgbG9naWMgYXMgd2VsbCBhcyBmaW5hbGlzYXRp b24uCi0gICovCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZwL2V2cF9saWIuYy5m aXBzIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9ldnAvZXZwX2xpYi5jCi0tLS0gb3BlbnNzbC0xLjAu MmkvY3J5cHRvL2V2cC9ldnBfbGliLmMuZmlwcwkyMDE2LTA5LTIyIDEyOjIzOjA2LjAwMDAwMDAw MCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9ldnAvZXZwX2xpYi5jCTIwMTYtMDkt MjIgMTM6MzU6NTcuMDEyMjIwODgyICswMjAwCi1AQCAtNjAsMTAgKzYwLDYgQEAKLSAjaW5jbHVk ZSAiY3J5cHRsaWIuaCIKLSAjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KLSAjaW5jbHVkZSA8b3Bl bnNzbC9vYmplY3RzLmg+Ci0tI2lmZGVmIE9QRU5TU0xfRklQUwotLSMgaW5jbHVkZSA8b3BlbnNz bC9maXBzLmg+Ci0tIyBpbmNsdWRlICJldnBfbG9jbC5oIgotLSNlbmRpZgotIAotIGludCBFVlBf Q0lQSEVSX3BhcmFtX3RvX2FzbjEoRVZQX0NJUEhFUl9DVFggKmMsIEFTTjFfVFlQRSAqdHlwZSkK LSB7Ci1AQCAtMjI0LDYgKzIyMCw5IEBAIGludCBFVlBfQ0lQSEVSX0NUWF9ibG9ja19zaXplKGNv bnN0IEVWUF8KLSBpbnQgRVZQX0NpcGhlcihFVlBfQ0lQSEVSX0NUWCAqY3R4LCB1bnNpZ25lZCBj aGFyICpvdXQsCi0gICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2ln bmVkIGludCBpbmwpCi0gewotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgRklQU19zZWxmdGVz dF9jaGVjaygpOwotKyNlbmRpZgotICAgICByZXR1cm4gY3R4LT5jaXBoZXItPmRvX2NpcGhlcihj dHgsIG91dCwgaW4sIGlubCk7Ci0gfQotIAotQEAgLTIzNCwyMiArMjMzLDEyIEBAIGNvbnN0IEVW UF9DSVBIRVIgKkVWUF9DSVBIRVJfQ1RYX2NpcGhlcigKLSAKLSB1bnNpZ25lZCBsb25nIEVWUF9D SVBIRVJfZmxhZ3MoY29uc3QgRVZQX0NJUEhFUiAqY2lwaGVyKQotIHsKLS0jaWZkZWYgT1BFTlNT TF9GSVBTCi0tICAgIGNvbnN0IEVWUF9DSVBIRVIgKmZjaXBoZXI7Ci0tICAgIGZjaXBoZXIgPSBl dnBfZ2V0X2ZpcHNfY2lwaGVyKGNpcGhlcik7Ci0tICAgIGlmIChmY2lwaGVyICYmIGZjaXBoZXIt PmZsYWdzICYgRVZQX0NJUEhfRkxBR19GSVBTKQotLSAgICAgICAgcmV0dXJuIGNpcGhlci0+Zmxh Z3MgfCBFVlBfQ0lQSF9GTEFHX0ZJUFM7Ci0tI2VuZGlmCi0gICAgIHJldHVybiBjaXBoZXItPmZs YWdzOwotIH0KLSAKLSB1bnNpZ25lZCBsb25nIEVWUF9DSVBIRVJfQ1RYX2ZsYWdzKGNvbnN0IEVW UF9DSVBIRVJfQ1RYICpjdHgpCi0gewotLSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0gICAgcmV0dXJu IEVWUF9DSVBIRVJfZmxhZ3MoY3R4LT5jaXBoZXIpOwotLSNlbHNlCi0gICAgIHJldHVybiBjdHgt PmNpcGhlci0+ZmxhZ3M7Ci0tI2VuZGlmCi0gfQotIAotIHZvaWQgKkVWUF9DSVBIRVJfQ1RYX2dl dF9hcHBfZGF0YShjb25zdCBFVlBfQ0lQSEVSX0NUWCAqY3R4KQotQEAgLTMxNiw0MCArMzA1LDgg QEAgaW50IEVWUF9NRF9zaXplKGNvbnN0IEVWUF9NRCAqbWQpCi0gICAgIHJldHVybiBtZC0+bWRf c2l6ZTsKLSB9Ci0gCi0tI2lmZGVmIE9QRU5TU0xfRklQUwotLQotLWNvbnN0IEVWUF9NRCAqZXZw X2dldF9maXBzX21kKGNvbnN0IEVWUF9NRCAqbWQpCi0tewotLSAgICBpbnQgbmlkID0gRVZQX01E X3R5cGUobWQpOwotLSAgICBpZiAobmlkID09IE5JRF9kc2EpCi0tICAgICAgICByZXR1cm4gRklQ U19ldnBfZHNzMSgpOwotLSAgICBlbHNlIGlmIChuaWQgPT0gTklEX2RzYVdpdGhTSEEpCi0tICAg ICAgICByZXR1cm4gRklQU19ldnBfZHNzKCk7Ci0tICAgIGVsc2UgaWYgKG5pZCA9PSBOSURfZWNk c2Ffd2l0aF9TSEExKQotLSAgICAgICAgcmV0dXJuIEZJUFNfZXZwX2VjZHNhKCk7Ci0tICAgIGVs c2UKLS0gICAgICAgIHJldHVybiBGSVBTX2dldF9kaWdlc3RieW5pZChuaWQpOwotLX0KLS0KLS1j b25zdCBFVlBfQ0lQSEVSICpldnBfZ2V0X2ZpcHNfY2lwaGVyKGNvbnN0IEVWUF9DSVBIRVIgKmNp cGhlcikKLS17Ci0tICAgIGludCBuaWQgPSBjaXBoZXItPm5pZDsKLS0gICAgaWYgKG5pZCA9PSBO SURfdW5kZWYpCi0tICAgICAgICByZXR1cm4gRklQU19ldnBfZW5jX251bGwoKTsKLS0gICAgZWxz ZQotLSAgICAgICAgcmV0dXJuIEZJUFNfZ2V0X2NpcGhlcmJ5bmlkKG5pZCk7Ci0tfQotLQotLSNl bmRpZgotLQotIHVuc2lnbmVkIGxvbmcgRVZQX01EX2ZsYWdzKGNvbnN0IEVWUF9NRCAqbWQpCi0g ewotLSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0gICAgY29uc3QgRVZQX01EICpmbWQ7Ci0tICAgIGZt ZCA9IGV2cF9nZXRfZmlwc19tZChtZCk7Ci0tICAgIGlmIChmbWQgJiYgZm1kLT5mbGFncyAmIEVW UF9NRF9GTEFHX0ZJUFMpCi0tICAgICAgICByZXR1cm4gbWQtPmZsYWdzIHwgRVZQX01EX0ZMQUdf RklQUzsKLS0jZW5kaWYKLSAgICAgcmV0dXJuIG1kLT5mbGFnczsKLSB9Ci0gCi1kaWZmIC11cCBv cGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZwL2V2cF9sb2NsLmguZmlwcyBvcGVuc3NsLTEuMC4yaS9j cnlwdG8vZXZwL2V2cF9sb2NsLmgKLS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZwL2V2cF9s b2NsLmguZmlwcwkyMDE2LTA5LTIyIDEzOjM1OjU2Ljg5ODIxODI1NCArMDIwMAotKysrIG9wZW5z c2wtMS4wLjJpL2NyeXB0by9ldnAvZXZwX2xvY2wuaAkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxMzIy MDkwNSArMDIwMAotQEAgLTI1OCwxMCArMjU4LDggQEAgY29uc3QgRVZQX0NJUEhFUiAqRVZQXyMj Y25hbWUjI19lY2Iodm9pZAotICAgICAgICAgQkxPQ0tfQ0lQSEVSX2Z1bmNfY2ZiKGNpcGhlciMj XyMja2V5c2l6ZSxjcHJlZml4LGNiaXRzLGtzdHJ1Y3Qsa3NjaGVkKSBcCi0gICAgICAgICBCTE9D S19DSVBIRVJfZGVmX2NmYihjaXBoZXIjI18jI2tleXNpemUsa3N0cnVjdCwgXAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTklEXyMjY2lwaGVyIyNfIyNrZXlzaXplLCBrZXlzaXplLzgs IGl2X2xlbiwgY2JpdHMsIFwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGNpcGhl ciMjX2luaXRfa2V5LCBOVUxMLCBcCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBf Q0lQSEVSX3NldF9hc24xX2l2LCBcCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBf Q0lQSEVSX2dldF9hc24xX2l2LCBcCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM KQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX0NJUEhfRkxBR19ERUZBVUxUX0FT TjEsIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpcGhlciMjX2luaXRfa2V5LCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMKQotIAotIHN0cnVjdCBldnBfcGtleV9jdHhfc3QgewotICAg ICAvKiBNZXRob2QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb3BlcmF0aW9uICovCi1AQCAtMzU1LDEx ICszNTMsNiBAQCBjb25zdCBFVlBfQ0lQSEVSICpldnBfZ2V0X2ZpcHNfY2lwaGVyKGNvCi0gIyBk ZWZpbmUgTUQyX0luaXQgICAgICAgIHByaXZhdGVfTUQyX0luaXQKLSAjIGRlZmluZSBNREMyX0lu aXQgICAgICAgcHJpdmF0ZV9NREMyX0luaXQKLSAjIGRlZmluZSBTSEFfSW5pdCAgICAgICAgcHJp dmF0ZV9TSEFfSW5pdAotLSMgZGVmaW5lIFNIQTFfSW5pdCAgICAgICBwcml2YXRlX1NIQTFfSW5p dAotLSMgZGVmaW5lIFNIQTIyNF9Jbml0ICAgICBwcml2YXRlX1NIQTIyNF9Jbml0Ci0tIyBkZWZp bmUgU0hBMjU2X0luaXQgICAgIHByaXZhdGVfU0hBMjU2X0luaXQKLS0jIGRlZmluZSBTSEEzODRf SW5pdCAgICAgcHJpdmF0ZV9TSEEzODRfSW5pdAotLSMgZGVmaW5lIFNIQTUxMl9Jbml0ICAgICBw cml2YXRlX1NIQTUxMl9Jbml0Ci0gCi0gIyBkZWZpbmUgQkZfc2V0X2tleSAgICAgIHByaXZhdGVf QkZfc2V0X2tleQotICMgZGVmaW5lIENBU1Rfc2V0X2tleSAgICBwcml2YXRlX0NBU1Rfc2V0X2tl eQotQEAgLTM2Nyw3ICszNjAsNiBAQCBjb25zdCBFVlBfQ0lQSEVSICpldnBfZ2V0X2ZpcHNfY2lw aGVyKGNvCi0gIyBkZWZpbmUgU0VFRF9zZXRfa2V5ICAgIHByaXZhdGVfU0VFRF9zZXRfa2V5Ci0g IyBkZWZpbmUgUkMyX3NldF9rZXkgICAgIHByaXZhdGVfUkMyX3NldF9rZXkKLSAjIGRlZmluZSBS QzRfc2V0X2tleSAgICAgcHJpdmF0ZV9SQzRfc2V0X2tleQotLSMgZGVmaW5lIERFU19zZXRfa2V5 X3VuY2hlY2tlZCAgIHByaXZhdGVfREVTX3NldF9rZXlfdW5jaGVja2VkCi0gIyBkZWZpbmUgQ2Ft ZWxsaWFfc2V0X2tleSAgICAgICAgcHJpdmF0ZV9DYW1lbGxpYV9zZXRfa2V5Ci0gCi0gI2VuZGlm Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZwL21fZHNzLmMuZmlwcyBvcGVuc3Ns LTEuMC4yaS9jcnlwdG8vZXZwL21fZHNzLmMKLS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZw L21fZHNzLmMuZmlwcwkyMDE2LTA5LTIyIDEyOjIzOjA2LjAwMDAwMDAwMCArMDIwMAotKysrIG9w ZW5zc2wtMS4wLjJpL2NyeXB0by9ldnAvbV9kc3MuYwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxMzIy MDkwNSArMDIwMAotQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIGNvbnN0IEVWUF9NRCBkc2FfbWQg PSB7Ci0gICAgIE5JRF9kc2FXaXRoU0hBLAotICAgICBOSURfZHNhV2l0aFNIQSwKLSAgICAgU0hB X0RJR0VTVF9MRU5HVEgsCi0tICAgIEVWUF9NRF9GTEFHX1BLRVlfRElHRVNULAotKyAgICBFVlBf TURfRkxBR19QS0VZX0RJR0VTVCB8IEVWUF9NRF9GTEFHX0ZJUFMsCi0gICAgIGluaXQsCi0gICAg IHVwZGF0ZSwKLSAgICAgZmluYWwsCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZw L21fZHNzMS5jLmZpcHMgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2V2cC9tX2RzczEuYwotLS0tIG9w ZW5zc2wtMS4wLjJpL2NyeXB0by9ldnAvbV9kc3MxLmMuZmlwcwkyMDE2LTA5LTIyIDEyOjIzOjA2 LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9ldnAvbV9kc3MxLmMJ MjAxNi0wOS0yMiAxMzozNTo1Ny4wMTMyMjA5MDUgKzAyMDAKLUBAIC04Nyw3ICs4Nyw3IEBAIHN0 YXRpYyBjb25zdCBFVlBfTUQgZHNzMV9tZCA9IHsKLSAgICAgTklEX2RzYSwKLSAgICAgTklEX2Rz YVdpdGhTSEExLAotICAgICBTSEFfRElHRVNUX0xFTkdUSCwKLS0gICAgRVZQX01EX0ZMQUdfUEtF WV9ESUdFU1QsCi0rICAgIEVWUF9NRF9GTEFHX1BLRVlfRElHRVNUIHwgRVZQX01EX0ZMQUdfRklQ UywKLSAgICAgaW5pdCwKLSAgICAgdXBkYXRlLAotICAgICBmaW5hbCwKLWRpZmYgLXVwIG9wZW5z c2wtMS4wLjJpL2NyeXB0by9ldnAvbV9tZDIuYy5maXBzIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9l dnAvbV9tZDIuYwotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9ldnAvbV9tZDIuYy5maXBzCTIw MTYtMDktMjIgMTI6MjM6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvY3J5 cHRvL2V2cC9tX21kMi5jCTIwMTYtMDktMjIgMTM6MzU6NTcuMDEzMjIwOTA1ICswMjAwCi1AQCAt NjgsNiArNjgsNyBAQAotICMgaWZuZGVmIE9QRU5TU0xfTk9fUlNBCi0gIyAgaW5jbHVkZSA8b3Bl bnNzbC9yc2EuaD4KLSAjIGVuZGlmCi0rIyBpbmNsdWRlICJldnBfbG9jbC5oIgotIAotIHN0YXRp YyBpbnQgaW5pdChFVlBfTURfQ1RYICpjdHgpCi0gewotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkv Y3J5cHRvL2V2cC9tX3NoYTEuYy5maXBzIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9ldnAvbV9zaGEx LmMKLS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZwL21fc2hhMS5jLmZpcHMJMjAxNi0wOS0y MiAxMjoyMzowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZw L21fc2hhMS5jCTIwMTYtMDktMjIgMTM6MzU6NTcuMDEzMjIwOTA1ICswMjAwCi1AQCAtODcsNyAr ODcsOCBAQCBzdGF0aWMgY29uc3QgRVZQX01EIHNoYTFfbWQgPSB7Ci0gICAgIE5JRF9zaGExLAot ICAgICBOSURfc2hhMVdpdGhSU0FFbmNyeXB0aW9uLAotICAgICBTSEFfRElHRVNUX0xFTkdUSCwK LS0gICAgRVZQX01EX0ZMQUdfUEtFWV9NRVRIT0RfU0lHTkFUVVJFIHwgRVZQX01EX0ZMQUdfRElH QUxHSURfQUJTRU5ULAotKyAgICBFVlBfTURfRkxBR19QS0VZX01FVEhPRF9TSUdOQVRVUkUgfCBF VlBfTURfRkxBR19ESUdBTEdJRF9BQlNFTlQgfAotKyAgICAgICAgRVZQX01EX0ZMQUdfRklQUywK LSAgICAgaW5pdCwKLSAgICAgdXBkYXRlLAotICAgICBmaW5hbCwKLUBAIC0xMzQsNyArMTM1LDgg QEAgc3RhdGljIGNvbnN0IEVWUF9NRCBzaGEyMjRfbWQgPSB7Ci0gICAgIE5JRF9zaGEyMjQsCi0g ICAgIE5JRF9zaGEyMjRXaXRoUlNBRW5jcnlwdGlvbiwKLSAgICAgU0hBMjI0X0RJR0VTVF9MRU5H VEgsCi0tICAgIEVWUF9NRF9GTEFHX1BLRVlfTUVUSE9EX1NJR05BVFVSRSB8IEVWUF9NRF9GTEFH X0RJR0FMR0lEX0FCU0VOVCwKLSsgICAgRVZQX01EX0ZMQUdfUEtFWV9NRVRIT0RfU0lHTkFUVVJF IHwgRVZQX01EX0ZMQUdfRElHQUxHSURfQUJTRU5UIHwKLSsgICAgICAgIEVWUF9NRF9GTEFHX0ZJ UFMsCi0gICAgIGluaXQyMjQsCi0gICAgIHVwZGF0ZTI1NiwKLSAgICAgZmluYWwyNTYsCi1AQCAt MTU0LDcgKzE1Niw4IEBAIHN0YXRpYyBjb25zdCBFVlBfTUQgc2hhMjU2X21kID0gewotICAgICBO SURfc2hhMjU2LAotICAgICBOSURfc2hhMjU2V2l0aFJTQUVuY3J5cHRpb24sCi0gICAgIFNIQTI1 Nl9ESUdFU1RfTEVOR1RILAotLSAgICBFVlBfTURfRkxBR19QS0VZX01FVEhPRF9TSUdOQVRVUkUg fCBFVlBfTURfRkxBR19ESUdBTEdJRF9BQlNFTlQsCi0rICAgIEVWUF9NRF9GTEFHX1BLRVlfTUVU SE9EX1NJR05BVFVSRSB8IEVWUF9NRF9GTEFHX0RJR0FMR0lEX0FCU0VOVCB8Ci0rICAgICAgICBF VlBfTURfRkxBR19GSVBTLAotICAgICBpbml0MjU2LAotICAgICB1cGRhdGUyNTYsCi0gICAgIGZp bmFsMjU2LAotQEAgLTE5Nyw3ICsyMDAsOCBAQCBzdGF0aWMgY29uc3QgRVZQX01EIHNoYTM4NF9t ZCA9IHsKLSAgICAgTklEX3NoYTM4NCwKLSAgICAgTklEX3NoYTM4NFdpdGhSU0FFbmNyeXB0aW9u LAotICAgICBTSEEzODRfRElHRVNUX0xFTkdUSCwKLS0gICAgRVZQX01EX0ZMQUdfUEtFWV9NRVRI T0RfU0lHTkFUVVJFIHwgRVZQX01EX0ZMQUdfRElHQUxHSURfQUJTRU5ULAotKyAgICBFVlBfTURf RkxBR19QS0VZX01FVEhPRF9TSUdOQVRVUkUgfCBFVlBfTURfRkxBR19ESUdBTEdJRF9BQlNFTlQg fAotKyAgICAgICAgRVZQX01EX0ZMQUdfRklQUywKLSAgICAgaW5pdDM4NCwKLSAgICAgdXBkYXRl NTEyLAotICAgICBmaW5hbDUxMiwKLUBAIC0yMTcsNyArMjIxLDggQEAgc3RhdGljIGNvbnN0IEVW UF9NRCBzaGE1MTJfbWQgPSB7Ci0gICAgIE5JRF9zaGE1MTIsCi0gICAgIE5JRF9zaGE1MTJXaXRo UlNBRW5jcnlwdGlvbiwKLSAgICAgU0hBNTEyX0RJR0VTVF9MRU5HVEgsCi0tICAgIEVWUF9NRF9G TEFHX1BLRVlfTUVUSE9EX1NJR05BVFVSRSB8IEVWUF9NRF9GTEFHX0RJR0FMR0lEX0FCU0VOVCwK LSsgICAgRVZQX01EX0ZMQUdfUEtFWV9NRVRIT0RfU0lHTkFUVVJFIHwgRVZQX01EX0ZMQUdfRElH QUxHSURfQUJTRU5UIHwKLSsgICAgICAgIEVWUF9NRF9GTEFHX0ZJUFMsCi0gICAgIGluaXQ1MTIs Ci0gICAgIHVwZGF0ZTUxMiwKLSAgICAgZmluYWw1MTIsCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4y aS9jcnlwdG8vZXZwL3Bfc2lnbi5jLmZpcHMgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2V2cC9wX3Np Z24uYwotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9ldnAvcF9zaWduLmMuZmlwcwkyMDE2LTA5 LTIyIDEyOjIzOjA2LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9l dnAvcF9zaWduLmMJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMTMyMjA5MDUgKzAyMDAKLUBAIC02MSw2 ICs2MSw3IEBACi0gI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wv b2JqZWN0cy5oPgotICNpbmNsdWRlIDxvcGVuc3NsL3g1MDkuaD4KLSsjaW5jbHVkZSA8b3BlbnNz bC9yc2EuaD4KLSAKLSAjaWZkZWYgdW5kZWYKLSB2b2lkIEVWUF9TaWduSW5pdChFVlBfTURfQ1RY ICpjdHgsIEVWUF9NRCAqdHlwZSkKLUBAIC0xMDEsNiArMTAyLDIyIEBAIGludCBFVlBfU2lnbkZp bmFsKEVWUF9NRF9DVFggKmN0eCwgdW5zaWcKLSAgICAgICAgICAgICBnb3RvIGVycjsKLSAgICAg ICAgIGlmIChFVlBfUEtFWV9DVFhfc2V0X3NpZ25hdHVyZV9tZChwa2N0eCwgY3R4LT5kaWdlc3Qp IDw9IDApCi0gICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgICAgICBpZiAoY3R4LT5mbGFncyAm IEVWUF9NRF9DVFhfRkxBR19QQURfWDkzMSkKLSsgICAgICAgICAgICBpZiAoRVZQX1BLRVlfQ1RY X3NldF9yc2FfcGFkZGluZyhwa2N0eCwgUlNBX1g5MzFfUEFERElORykgPD0gMCkKLSsgICAgICAg ICAgICAgICAgZ290byBlcnI7Ci0rICAgICAgICBpZiAoY3R4LT5mbGFncyAmIEVWUF9NRF9DVFhf RkxBR19QQURfUFNTKSB7Ci0rICAgICAgICAgICAgaW50IHNhbHRsZW47Ci0rICAgICAgICAgICAg aWYgKEVWUF9QS0VZX0NUWF9zZXRfcnNhX3BhZGRpbmcocGtjdHgsIFJTQV9QS0NTMV9QU1NfUEFE RElORykgPD0KLSsgICAgICAgICAgICAgICAgMCkKLSsgICAgICAgICAgICAgICAgZ290byBlcnI7 Ci0rICAgICAgICAgICAgc2FsdGxlbiA9IE1fRVZQX01EX0NUWF9GTEFHX1BTU19TQUxUKGN0eCk7 Ci0rICAgICAgICAgICAgaWYgKHNhbHRsZW4gPT0gRVZQX01EX0NUWF9GTEFHX1BTU19NRExFTikK LSsgICAgICAgICAgICAgICAgc2FsdGxlbiA9IC0xOwotKyAgICAgICAgICAgIGVsc2UgaWYgKHNh bHRsZW4gPT0gRVZQX01EX0NUWF9GTEFHX1BTU19NUkVDKQotKyAgICAgICAgICAgICAgICBzYWx0 bGVuID0gLTI7Ci0rICAgICAgICAgICAgaWYgKEVWUF9QS0VZX0NUWF9zZXRfcnNhX3Bzc19zYWx0 bGVuKHBrY3R4LCBzYWx0bGVuKSA8PSAwKQotKyAgICAgICAgICAgICAgICBnb3RvIGVycjsKLSsg ICAgICAgIH0KLSAgICAgICAgIGlmIChFVlBfUEtFWV9zaWduKHBrY3R4LCBzaWdyZXQsICZzbHRt cCwgbSwgbV9sZW4pIDw9IDApCi0gICAgICAgICAgICAgZ290byBlcnI7Ci0gICAgICAgICAqc2ln bGVuID0gc2x0bXA7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZwL3BfdmVyaWZ5 LmMuZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZXZwL3BfdmVyaWZ5LmMKLS0tLSBvcGVuc3Ns LTEuMC4yaS9jcnlwdG8vZXZwL3BfdmVyaWZ5LmMuZmlwcwkyMDE2LTA5LTIyIDEyOjIzOjA2LjAw MDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9ldnAvcF92ZXJpZnkuYwky MDE2LTA5LTIyIDEzOjM1OjU3LjAxMzIyMDkwNSArMDIwMAotQEAgLTYxLDYgKzYxLDcgQEAKLSAj aW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9vYmplY3RzLmg+Ci0g I2luY2x1ZGUgPG9wZW5zc2wveDUwOS5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL3JzYS5oPgotIAot IGludCBFVlBfVmVyaWZ5RmluYWwoRVZQX01EX0NUWCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFy ICpzaWdidWYsCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2lnbGVuLCBFVlBf UEtFWSAqcGtleSkKLUBAIC04Nyw2ICs4OCwyMiBAQCBpbnQgRVZQX1ZlcmlmeUZpbmFsKEVWUF9N RF9DVFggKmN0eCwgY29uCi0gICAgICAgICAgICAgZ290byBlcnI7Ci0gICAgICAgICBpZiAoRVZQ X1BLRVlfQ1RYX3NldF9zaWduYXR1cmVfbWQocGtjdHgsIGN0eC0+ZGlnZXN0KSA8PSAwKQotICAg ICAgICAgICAgIGdvdG8gZXJyOwotKyAgICAgICAgaWYgKGN0eC0+ZmxhZ3MgJiBFVlBfTURfQ1RY X0ZMQUdfUEFEX1g5MzEpCi0rICAgICAgICAgICAgaWYgKEVWUF9QS0VZX0NUWF9zZXRfcnNhX3Bh ZGRpbmcocGtjdHgsIFJTQV9YOTMxX1BBRERJTkcpIDw9IDApCi0rICAgICAgICAgICAgICAgIGdv dG8gZXJyOwotKyAgICAgICAgaWYgKGN0eC0+ZmxhZ3MgJiBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BT UykgewotKyAgICAgICAgICAgIGludCBzYWx0bGVuOwotKyAgICAgICAgICAgIGlmIChFVlBfUEtF WV9DVFhfc2V0X3JzYV9wYWRkaW5nKHBrY3R4LCBSU0FfUEtDUzFfUFNTX1BBRERJTkcpIDw9Ci0r ICAgICAgICAgICAgICAgIDApCi0rICAgICAgICAgICAgICAgIGdvdG8gZXJyOwotKyAgICAgICAg ICAgIHNhbHRsZW4gPSBNX0VWUF9NRF9DVFhfRkxBR19QU1NfU0FMVChjdHgpOwotKyAgICAgICAg ICAgIGlmIChzYWx0bGVuID09IEVWUF9NRF9DVFhfRkxBR19QU1NfTURMRU4pCi0rICAgICAgICAg ICAgICAgIHNhbHRsZW4gPSAtMTsKLSsgICAgICAgICAgICBlbHNlIGlmIChzYWx0bGVuID09IEVW UF9NRF9DVFhfRkxBR19QU1NfTVJFQykKLSsgICAgICAgICAgICAgICAgc2FsdGxlbiA9IC0yOwot KyAgICAgICAgICAgIGlmIChFVlBfUEtFWV9DVFhfc2V0X3JzYV9wc3Nfc2FsdGxlbihwa2N0eCwg c2FsdGxlbikgPD0gMCkKLSsgICAgICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgICAgICB9Ci0g ICAgICAgICBpID0gRVZQX1BLRVlfdmVyaWZ5KHBrY3R4LCBzaWdidWYsIHNpZ2xlbiwgbSwgbV9s ZW4pOwotICBlcnI6Ci0gICAgICAgICBFVlBfUEtFWV9DVFhfZnJlZShwa2N0eCk7Ci1kaWZmIC11 cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX2Flc19zZWxmdGVzdC5jLmZpcHMgb3Bl bnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19hZXNfc2VsZnRlc3QuYwotLS0tIG9wZW5zc2wt MS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfYWVzX3NlbGZ0ZXN0LmMuZmlwcwkyMDE2LTA5LTIyIDEz OjM1OjU3LjAxMzIyMDkwNSArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2Zp cHNfYWVzX3NlbGZ0ZXN0LmMJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMTMyMjA5MDUgKzAyMDAKLUBA IC0wLDAgKzEsMzY1IEBACi0rLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMDMg VGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRp c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp dGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVkaXN0cmli dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsg KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIuIAotKyAqCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11 c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAgICB0 aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl Ci0rICogICAgZGlzdHJpYnV0aW9uLgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVy aWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29mdHdhcmUg bXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMg cHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVj dAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3Bl bnNzbC5vcmcvKSIKLSsgKgotKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQg Ik9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9yc2Ugb3Ig cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0rICog ICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVh c2UgY29udGFjdAotKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KLSsgKgotKyAqIDUu IFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJP cGVuU1NMIgotKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3 aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFBy b2plY3QuCi0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZl ciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICog ICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5T U0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDov L3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC WSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VEIE9S IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT SEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUwsIEVY RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5P VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT OwotKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV UFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ LCBXSEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBXQVkg T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICogT0Yg VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqCi0rICovCi0rCi0rI2luY2x1ZGUg PHN0cmluZy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpZmRlZiBPUEVOU1NMX0ZJ UFMKLSsjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyNlbmRpZgotKyNpbmNsdWRlIDxvcGVu c3NsL2V2cC5oPgotKwotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLStzdGF0aWMgY29uc3Qgc3RydWN0 IHsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hhciBrZXlbMTZdOwotKyAgICBjb25zdCB1bnNpZ25l ZCBjaGFyIHBsYWludGV4dFsxNl07Ci0rICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgY2lwaGVydGV4 dFsxNl07Ci0rfSB0ZXN0c1tdID0gewotKyAgICB7Ci0rICAgICAgICB7Ci0rICAgICAgICAweDAw LCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LCAweDA2LCAweDA3LAotKyAgICAgICAgICAg ICAgICAweDA4LCAweDA5LCAweDBBLCAweDBCLCAweDBDLCAweDBELCAweDBFLCAweDBGfSwgewot KyAgICAgICAgMHgwMCwgMHgxMSwgMHgyMiwgMHgzMywgMHg0NCwgMHg1NSwgMHg2NiwgMHg3NywK LSsgICAgICAgICAgICAgICAgMHg4OCwgMHg5OSwgMHhBQSwgMHhCQiwgMHhDQywgMHhERCwgMHhF RSwgMHhGRn0sIHsKLSsweDY5LCAweEM0LCAweEUwLCAweEQ4LCAweDZBLCAweDdCLCAweDA0LCAw eDMwLAotKyAgICAgICAgICAgICAgICAweEQ4LCAweENELCAweEI3LCAweDgwLCAweDcwLCAweEI0 LCAweEM1LCAweDVBfSx9LH07Ci0rCi0rc3RhdGljIGludCBjb3JydXB0X2FlczsKLSsKLSt2b2lk IEZJUFNfY29ycnVwdF9hZXMoKQotK3sKLSsgICAgY29ycnVwdF9hZXMgPSAxOwotK30KLSsKLStp bnQgRklQU19zZWxmdGVzdF9hZXMoKQotK3sKLSsgICAgaW50IG47Ci0rICAgIGludCByZXQgPSAw OwotKyAgICBFVlBfQ0lQSEVSX0NUWCBjdHg7Ci0rICAgIEVWUF9DSVBIRVJfQ1RYX2luaXQoJmN0 eCk7Ci0rCi0rICAgIGZvciAobiA9IDA7IG4gPCAxOyArK24pIHsKLSsgICAgICAgIHVuc2lnbmVk IGNoYXIga2V5WzE2XTsKLSsKLSsgICAgICAgIG1lbWNweShrZXksIHRlc3RzW25dLmtleSwgc2l6 ZW9mKGtleSkpOwotKyAgICAgICAgaWYgKGNvcnJ1cHRfYWVzKQotKyAgICAgICAgICAgIGtleVsw XSsrOwotKyAgICAgICAgaWYgKGZpcHNfY2lwaGVyX3Rlc3QoJmN0eCwgRVZQX2Flc18xMjhfZWNi KCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksIE5VTEwsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0ZXN0c1tuXS5wbGFpbnRleHQsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0ZXN0c1tuXS5jaXBoZXJ0ZXh0LCAxNikgPD0gMCkKLSsgICAgICAgICAg ICBnb3RvIGVycjsKLSsgICAgfQotKyAgICByZXQgPSAxOwotKyBlcnI6Ci0rICAgIEVWUF9DSVBI RVJfQ1RYX2NsZWFudXAoJmN0eCk7Ci0rICAgIGlmIChyZXQgPT0gMCkKLSsgICAgICAgIEZJUFNl cnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfQUVTLCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKLSsg ICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rLyogQUVTLUNDTSB0ZXN0IGRhdGEgZnJvbSBOSVNUIHB1 YmxpYyB0ZXN0IHZlY3RvcnMgKi8KLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBjY21f a2V5W10gPSB7Ci0rICAgIDB4Y2UsIDB4YjAsIDB4MDksIDB4YWUsIDB4YTQsIDB4NDUsIDB4NDQs IDB4NTEsIDB4ZmUsIDB4YWQsIDB4ZjAsIDB4ZTYsCi0rICAgIDB4YjMsIDB4NmYsIDB4NDUsIDB4 NTUsIDB4NWQsIDB4ZDAsIDB4NDcsIDB4MjMsIDB4YmEsIDB4YTQsIDB4NDgsIDB4ZTgKLSt9Owot KwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNjbV9ub25jZVtdID0gewotKyAgICAweDc2 LCAweDQwLCAweDQzLCAweGM0LCAweDk0LCAweDYwLCAweGI3Ci0rfTsKLSsKLStzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBjY21fYWRhdGFbXSA9IHsKLSsgICAgMHg2ZSwgMHg4MCwgMHhkZCwg MHg3ZiwgMHgxYiwgMHhhZCwgMHhmMywgMHhhMSwgMHhjOSwgMHhhYiwgMHgyNSwgMHhjNywKLSsg ICAgMHg1ZiwgMHgxMCwgMHhiZCwgMHhlNywgMHg4YywgMHgyMywgMHhmYSwgMHgwZSwgMHhiOCwg MHhmOSwgMHhhYSwgMHhhNSwKLSsgICAgMHgzYSwgMHhkZSwgMHhmYiwgMHhmNCwgMHhjYiwgMHhm NywgMHg4ZiwgMHhlNAotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgY2NtX3B0 W10gPSB7Ci0rICAgIDB4YzgsIDB4ZDIsIDB4NzUsIDB4ZjksIDB4MTksIDB4ZTEsIDB4N2QsIDB4 N2YsIDB4ZTYsIDB4OWMsIDB4MmEsIDB4MWYsCi0rICAgIDB4NTgsIDB4OTMsIDB4OWQsIDB4ZmUs IDB4NGQsIDB4NDAsIDB4MzcsIDB4OTEsIDB4YjUsIDB4ZGYsIDB4MTMsIDB4MTAKLSt9OwotKwot K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNjbV9jdFtdID0gewotKyAgICAweDhhLCAweDBm LCAweDNkLCAweDgyLCAweDI5LCAweGU0LCAweDhlLCAweDc0LCAweDg3LCAweGZkLCAweDk1LCAw eGEyLAotKyAgICAweDhhLCAweGQzLCAweDkyLCAweGM4LCAweDBiLCAweDM2LCAweDgxLCAweGQ0 LCAweGZiLCAweGM3LCAweGJiLCAweGZkCi0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBjY21fdGFnW10gPSB7Ci0rICAgIDB4MmQsIDB4ZDYsIDB4ZWYsIDB4MWMsIDB4NDUsIDB4 ZDQsIDB4Y2MsIDB4YjcsIDB4MjMsIDB4ZGMsIDB4MDcsIDB4NDQsCi0rICAgIDB4MTQsIDB4ZGIs IDB4NTAsIDB4NmQKLSt9OwotKwotK2ludCBGSVBTX3NlbGZ0ZXN0X2Flc19jY20odm9pZCkKLSt7 Ci0rICAgIGludCByZXQgPSAwOwotKyAgICB1bnNpZ25lZCBjaGFyIG91dFsxMjhdLCB0YWdbMTZd OwotKyAgICBFVlBfQ0lQSEVSX0NUWCBjdHg7Ci0rICAgIEVWUF9DSVBIRVJfQ1RYX2luaXQoJmN0 eCk7Ci0rICAgIG1lbXNldChvdXQsIDAsIHNpemVvZihvdXQpKTsKLSsgICAgaWYgKCFFVlBfQ2lw aGVySW5pdF9leCgmY3R4LCBFVlBfYWVzXzE5Ml9jY20oKSwgTlVMTCwgTlVMTCwgTlVMTCwgMSkp Ci0rICAgICAgICBnb3RvIGVycjsKLSsgICAgaWYgKCFFVlBfQ0lQSEVSX0NUWF9jdHJsKCZjdHgs IEVWUF9DVFJMX0NDTV9TRVRfSVZMRU4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aXplb2YoY2NtX25vbmNlKSwgTlVMTCkpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgaWYgKCFF VlBfQ0lQSEVSX0NUWF9jdHJsKCZjdHgsIEVWUF9DVFJMX0NDTV9TRVRfVEFHLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGNjbV90YWcpLCBOVUxMKSkKLSsgICAgICAgIGdv dG8gZXJyOwotKyAgICBpZiAoIUVWUF9DaXBoZXJJbml0X2V4KCZjdHgsIE5VTEwsIE5VTEwsIGNj bV9rZXksIGNjbV9ub25jZSwgMSkpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgaWYgKEVWUF9D aXBoZXIoJmN0eCwgTlVMTCwgTlVMTCwgc2l6ZW9mKGNjbV9wdCkpICE9IHNpemVvZihjY21fcHQp KQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmIChFVlBfQ2lwaGVyKCZjdHgsIE5VTEwsIGNj bV9hZGF0YSwgc2l6ZW9mKGNjbV9hZGF0YSkpIDwgMCkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAg ICBpZiAoRVZQX0NpcGhlcigmY3R4LCBvdXQsIGNjbV9wdCwgc2l6ZW9mKGNjbV9wdCkpICE9IHNp emVvZihjY21fY3QpKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIGlmICghRVZQX0NJUEhF Ul9DVFhfY3RybCgmY3R4LCBFVlBfQ1RSTF9DQ01fR0VUX1RBRywgMTYsIHRhZykpCi0rICAgICAg ICBnb3RvIGVycjsKLSsgICAgaWYgKG1lbWNtcCh0YWcsIGNjbV90YWcsIHNpemVvZihjY21fdGFn KSkKLSsgICAgICAgIHx8IG1lbWNtcChvdXQsIGNjbV9jdCwgc2l6ZW9mKGNjbV9jdCkpKQotKyAg ICAgICAgZ290byBlcnI7Ci0rCi0rICAgIG1lbXNldChvdXQsIDAsIHNpemVvZihvdXQpKTsKLSsK LSsgICAgaWYgKCFFVlBfQ2lwaGVySW5pdF9leCgmY3R4LCBFVlBfYWVzXzE5Ml9jY20oKSwgTlVM TCwgTlVMTCwgTlVMTCwgMCkpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgaWYgKCFFVlBfQ0lQ SEVSX0NUWF9jdHJsKCZjdHgsIEVWUF9DVFJMX0NDTV9TRVRfSVZMRU4sCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaXplb2YoY2NtX25vbmNlKSwgTlVMTCkpCi0rICAgICAgICBnb3Rv IGVycjsKLSsgICAgaWYgKCFFVlBfQ0lQSEVSX0NUWF9jdHJsKCZjdHgsIEVWUF9DVFJMX0NDTV9T RVRfVEFHLCAxNiwgdGFnKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBpZiAoIUVWUF9DaXBo ZXJJbml0X2V4KCZjdHgsIE5VTEwsIE5VTEwsIGNjbV9rZXksIGNjbV9ub25jZSwgMCkpCi0rICAg ICAgICBnb3RvIGVycjsKLSsgICAgaWYgKEVWUF9DaXBoZXIoJmN0eCwgTlVMTCwgTlVMTCwgc2l6 ZW9mKGNjbV9jdCkpICE9IHNpemVvZihjY21fY3QpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAg IGlmIChFVlBfQ2lwaGVyKCZjdHgsIE5VTEwsIGNjbV9hZGF0YSwgc2l6ZW9mKGNjbV9hZGF0YSkp IDwgMCkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBpZiAoRVZQX0NpcGhlcigmY3R4LCBvdXQs IGNjbV9jdCwgc2l6ZW9mKGNjbV9jdCkpICE9IHNpemVvZihjY21fcHQpKQotKyAgICAgICAgZ290 byBlcnI7Ci0rCi0rICAgIGlmIChtZW1jbXAob3V0LCBjY21fcHQsIHNpemVvZihjY21fcHQpKSkK LSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAgICByZXQgPSAxOwotKwotKyBlcnI6Ci0rICAgIEVW UF9DSVBIRVJfQ1RYX2NsZWFudXAoJmN0eCk7Ci0rCi0rICAgIGlmIChyZXQgPT0gMCkgewotKyAg ICAgICAgRklQU2VycihGSVBTX0ZfRklQU19TRUxGVEVTVF9BRVNfQ0NNLCBGSVBTX1JfU0VMRlRF U1RfRkFJTEVEKTsKLSsgICAgICAgIHJldHVybiAwOwotKyAgICB9IGVsc2UKLSsgICAgICAgIHJl dHVybiByZXQ7Ci0rCi0rfQotKwotKy8qIEFFUy1HQ00gdGVzdCBkYXRhIGZyb20gTklTVCBwdWJs aWMgdGVzdCB2ZWN0b3JzICovCi0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZ2NtX2tl eVtdID0gewotKyAgICAweGVlLCAweGJjLCAweDFmLCAweDU3LCAweDQ4LCAweDdmLCAweDUxLCAw eDkyLCAweDFjLCAweDA0LCAweDY1LCAweDY2LAotKyAgICAweDVmLCAweDhhLCAweGU2LCAweGQx LCAweDY1LCAweDhiLCAweGIyLCAweDZkLCAweGU2LCAweGY4LCAweGEwLCAweDY5LAotKyAgICAw eGEzLCAweDUyLCAweDAyLCAweDkzLCAweGE1LCAweDcyLCAweDA3LCAweDhmCi0rfTsKLSsKLStz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBnY21faXZbXSA9IHsKLSsgICAgMHg5OSwgMHhhYSwg MHgzZSwgMHg2OCwgMHhlZCwgMHg4MSwgMHg3MywgMHhhMCwgMHhlZSwgMHhkMCwgMHg2NiwgMHg4 NAotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZ2NtX3B0W10gPSB7Ci0rICAg IDB4ZjUsIDB4NmUsIDB4ODcsIDB4MDUsIDB4NWIsIDB4YzMsIDB4MmQsIDB4MGUsIDB4ZWIsIDB4 MzEsIDB4YjIsIDB4ZWEsCi0rICAgIDB4Y2MsIDB4MmIsIDB4ZjIsIDB4YTUKLSt9OwotKwotK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGdjbV9hYWRbXSA9IHsKLSsgICAgMHg0ZCwgMHgyMywg MHhjMywgMHhjZSwgMHhjMywgMHgzNCwgMHhiNCwgMHg5YiwgMHhkYiwgMHgzNywgMHgwYywgMHg0 MywKLSsgICAgMHg3ZiwgMHhlYywgMHg3OCwgMHhkZQotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgZ2NtX2N0W10gPSB7Ci0rICAgIDB4ZjcsIDB4MjYsIDB4NDQsIDB4MTMsIDB4 YTgsIDB4NGMsIDB4MGUsIDB4N2MsIDB4ZDUsIDB4MzYsIDB4ODYsIDB4N2UsCi0rICAgIDB4Yjks IDB4ZjIsIDB4MTcsIDB4MzYKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGdj bV90YWdbXSA9IHsKLSsgICAgMHg2NywgMHhiYSwgMHgwNSwgMHgxMCwgMHgyNiwgMHgyYSwgMHhl NCwgMHg4NywgMHhkNywgMHgzNywgMHhlZSwgMHg2MiwKLSsgICAgMHg5OCwgMHhmNywgMHg3ZSwg MHgwYwotK307Ci0rCi0raW50IEZJUFNfc2VsZnRlc3RfYWVzX2djbSh2b2lkKQotK3sKLSsgICAg aW50IHJldCA9IDA7Ci0rICAgIHVuc2lnbmVkIGNoYXIgb3V0WzEyOF0sIHRhZ1sxNl07Ci0rICAg IEVWUF9DSVBIRVJfQ1RYIGN0eDsKLSsgICAgRVZQX0NJUEhFUl9DVFhfaW5pdCgmY3R4KTsKLSsg ICAgbWVtc2V0KG91dCwgMCwgc2l6ZW9mKG91dCkpOwotKyAgICBtZW1zZXQodGFnLCAwLCBzaXpl b2YodGFnKSk7Ci0rICAgIGlmICghRVZQX0NpcGhlckluaXRfZXgoJmN0eCwgRVZQX2Flc18yNTZf Z2NtKCksIE5VTEwsIE5VTEwsIE5VTEwsIDEpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlm ICghRVZQX0NJUEhFUl9DVFhfY3RybCgmY3R4LCBFVlBfQ1RSTF9HQ01fU0VUX0lWTEVOLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGdjbV9pdiksIE5VTEwpKQotKyAgICAg ICAgZ290byBlcnI7Ci0rICAgIGlmICghRVZQX0NpcGhlckluaXRfZXgoJmN0eCwgTlVMTCwgTlVM TCwgZ2NtX2tleSwgZ2NtX2l2LCAxKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBpZiAoRVZQ X0NpcGhlcigmY3R4LCBOVUxMLCBnY21fYWFkLCBzaXplb2YoZ2NtX2FhZCkpIDwgMCkKLSsgICAg ICAgIGdvdG8gZXJyOwotKyAgICBpZiAoRVZQX0NpcGhlcigmY3R4LCBvdXQsIGdjbV9wdCwgc2l6 ZW9mKGdjbV9wdCkpICE9IHNpemVvZihnY21fY3QpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAg IGlmIChFVlBfQ2lwaGVyKCZjdHgsIE5VTEwsIE5VTEwsIDApIDwgMCkKLSsgICAgICAgIGdvdG8g ZXJyOwotKwotKyAgICBpZiAoIUVWUF9DSVBIRVJfQ1RYX2N0cmwoJmN0eCwgRVZQX0NUUkxfR0NN X0dFVF9UQUcsIDE2LCB0YWcpKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIGlmIChtZW1j bXAodGFnLCBnY21fdGFnLCAxNikgfHwgbWVtY21wKG91dCwgZ2NtX2N0LCAxNikpCi0rICAgICAg ICBnb3RvIGVycjsKLSsKLSsgICAgbWVtc2V0KG91dCwgMCwgc2l6ZW9mKG91dCkpOwotKwotKyAg ICBpZiAoIUVWUF9DaXBoZXJJbml0X2V4KCZjdHgsIEVWUF9hZXNfMjU2X2djbSgpLCBOVUxMLCBO VUxMLCBOVUxMLCAwKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBpZiAoIUVWUF9DSVBIRVJf Q1RYX2N0cmwoJmN0eCwgRVZQX0NUUkxfR0NNX1NFVF9JVkxFTiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpemVvZihnY21faXYpLCBOVUxMKSkKLSsgICAgICAgIGdvdG8gZXJyOwot KyAgICBpZiAoIUVWUF9DSVBIRVJfQ1RYX2N0cmwoJmN0eCwgRVZQX0NUUkxfR0NNX1NFVF9UQUcs IDE2LCB0YWcpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmICghRVZQX0NpcGhlckluaXRf ZXgoJmN0eCwgTlVMTCwgTlVMTCwgZ2NtX2tleSwgZ2NtX2l2LCAwKSkKLSsgICAgICAgIGdvdG8g ZXJyOwotKyAgICBpZiAoRVZQX0NpcGhlcigmY3R4LCBOVUxMLCBnY21fYWFkLCBzaXplb2YoZ2Nt X2FhZCkpIDwgMCkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBpZiAoRVZQX0NpcGhlcigmY3R4 LCBvdXQsIGdjbV9jdCwgc2l6ZW9mKGdjbV9jdCkpICE9IHNpemVvZihnY21fcHQpKQotKyAgICAg ICAgZ290byBlcnI7Ci0rICAgIGlmIChFVlBfQ2lwaGVyKCZjdHgsIE5VTEwsIE5VTEwsIDApIDwg MCkKLSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAgICBpZiAobWVtY21wKG91dCwgZ2NtX3B0LCAx NikpCi0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgcmV0ID0gMTsKLSsKLSsgZXJyOgotKyAg ICBFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwKCZjdHgpOwotKwotKyAgICBpZiAocmV0ID09IDApIHsK LSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfQUVTX0dDTSwgRklQU19SX1NF TEZURVNUX0ZBSUxFRCk7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfSBlbHNlCi0rICAgICAg ICByZXR1cm4gcmV0OwotKwotK30KLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBYVFNf MTI4X2tleVtdID0gewotKyAgICAweGExLCAweGI5LCAweDBjLCAweGJhLCAweDNmLCAweDA2LCAw eGFjLCAweDM1LCAweDNiLCAweDJjLCAweDM0LCAweDM4LAotKyAgICAweDc2LCAweDA4LCAweDE3 LCAweDYyLCAweDA5LCAweDA5LCAweDIzLCAweDAyLCAweDZlLCAweDkxLCAweDc3LCAweDE4LAot KyAgICAweDE1LCAweGYyLCAweDlkLCAweGFiLCAweDAxLCAweDkzLCAweDJmLCAweDJmCi0rfTsK LSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBYVFNfMTI4X2lbXSA9IHsKLSsgICAgMHg0 ZiwgMHhhZSwgMHhmNywgMHgxMSwgMHg3YywgMHhkYSwgMHg1OSwgMHhjNiwgMHg2ZSwgMHg0Yiwg MHg5MiwgMHgwMSwKLSsgICAgMHgzZSwgMHg3NiwgMHg4YSwgMHhkNQotK307Ci0rCi0rc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgWFRTXzEyOF9wdFtdID0gewotKyAgICAweGViLCAweGFiLCAw eGNlLCAweDk1LCAweGIxLCAweDRkLCAweDNjLCAweDhkLCAweDZmLCAweGIzLCAweDUwLCAweDM5 LAotKyAgICAweDA3LCAweDkwLCAweDMxLCAweDFjCi0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBYVFNfMTI4X2N0W10gPSB7Ci0rICAgIDB4NzcsIDB4OGEsIDB4ZTgsIDB4YjQs IDB4M2MsIDB4YjksIDB4OGQsIDB4NWEsIDB4ODIsIDB4NTAsIDB4ODEsIDB4ZDUsCi0rICAgIDB4 YmUsIDB4NDcsIDB4MWMsIDB4NjMKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IFhUU18yNTZfa2V5W10gPSB7Ci0rICAgIDB4MWUsIDB4YTYsIDB4NjEsIDB4YzUsIDB4OGQsIDB4 OTQsIDB4M2EsIDB4MGUsIDB4NDgsIDB4MDEsIDB4ZTQsIDB4MmYsCi0rICAgIDB4NGIsIDB4MDks IDB4NDcsIDB4MTQsIDB4OWUsIDB4N2YsIDB4OWYsIDB4OGUsIDB4M2UsIDB4NjgsIDB4ZDAsIDB4 YzcsCi0rICAgIDB4NTAsIDB4NTIsIDB4MTAsIDB4YmQsIDB4MzEsIDB4MWEsIDB4MGUsIDB4N2Ms IDB4ZDYsIDB4ZTEsIDB4M2YsIDB4ZmQsCi0rICAgIDB4ZjIsIDB4NDEsIDB4OGQsIDB4OGQsIDB4 MTksIDB4MTEsIDB4YzAsIDB4MDQsIDB4Y2QsIDB4YTUsIDB4OGQsIDB4YTMsCi0rICAgIDB4ZDYs IDB4MTksIDB4YjcsIDB4ZTIsIDB4YjksIDB4MTQsIDB4MWUsIDB4NTgsIDB4MzEsIDB4OGUsIDB4 ZWEsIDB4MzksCi0rICAgIDB4MmMsIDB4ZjQsIDB4MWIsIDB4MDgKLSt9OwotKwotK3N0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIFhUU18yNTZfaVtdID0gewotKyAgICAweGFkLCAweGY4LCAweGQ5 LCAweDI2LCAweDI3LCAweDQ2LCAweDRhLCAweGQyLCAweGYwLCAweDQyLCAweDhlLCAweDg0LAot KyAgICAweGE5LCAweGY4LCAweDc1LCAweDY0Ci0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBYVFNfMjU2X3B0W10gPSB7Ci0rICAgIDB4MmUsIDB4ZWQsIDB4ZWEsIDB4NTIsIDB4 Y2QsIDB4ODIsIDB4MTUsIDB4ZTEsIDB4YWMsIDB4YzYsIDB4NDcsIDB4ZTgsCi0rICAgIDB4MTAs IDB4YmIsIDB4YzMsIDB4NjQsIDB4MmUsIDB4ODcsIDB4MjgsIDB4N2YsIDB4OGQsIDB4MmUsIDB4 NTcsIDB4ZTMsCi0rICAgIDB4NmMsIDB4MGEsIDB4MjQsIDB4ZmIsIDB4YzEsIDB4MmEsIDB4MjAs IDB4MmUKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFhUU18yNTZfY3RbXSA9 IHsKLSsgICAgMHhjYiwgMHhhYSwgMHhkMCwgMHhlMiwgMHhmNiwgMHhjZSwgMHhhMywgMHhmNSwg MHgwYiwgMHgzNywgMHhmOSwgMHgzNCwKLSsgICAgMHhkNCwgMHg2YSwgMHg5YiwgMHgxMywgMHgw YiwgMHg5ZCwgMHg1NCwgMHhmMCwgMHg3ZSwgMHgzNCwgMHhmMywgMHg2YSwKLSsgICAgMHhmNywg MHg5MywgMHhlOCwgMHg2ZiwgMHg3MywgMHhjNiwgMHhkNywgMHhkYgotK307Ci0rCi0raW50IEZJ UFNfc2VsZnRlc3RfYWVzX3h0cygpCi0rewotKyAgICBpbnQgcmV0ID0gMTsKLSsgICAgRVZQX0NJ UEhFUl9DVFggY3R4OwotKyAgICBFVlBfQ0lQSEVSX0NUWF9pbml0KCZjdHgpOwotKwotKyAgICBp ZiAoZmlwc19jaXBoZXJfdGVzdCgmY3R4LCBFVlBfYWVzXzEyOF94dHMoKSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgWFRTXzEyOF9rZXksIFhUU18xMjhfaSwgWFRTXzEyOF9wdCwgWFRTXzEy OF9jdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFhUU18xMjhfcHQpKSA8PSAw KQotKyAgICAgICAgcmV0ID0gMDsKLSsKLSsgICAgaWYgKGZpcHNfY2lwaGVyX3Rlc3QoJmN0eCwg RVZQX2Flc18yNTZfeHRzKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgIFhUU18yNTZfa2V5 LCBYVFNfMjU2X2ksIFhUU18yNTZfcHQsIFhUU18yNTZfY3QsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVvZihYVFNfMjU2X3B0KSkgPD0gMCkKLSsgICAgICAgIHJldCA9IDA7Ci0rCi0r ICAgIEVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoJmN0eCk7Ci0rICAgIGlmIChyZXQgPT0gMCkKLSsg ICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfQUVTX1hUUywgRklQU19SX1NFTEZU RVNUX0ZBSUxFRCk7Ci0rICAgIHJldHVybiByZXQ7Ci0rfQotKwotKyNlbmRpZgotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwcy5jLmZpcHMgb3BlbnNzbC0xLjAuMmkvY3J5 cHRvL2ZpcHMvZmlwcy5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwcy5jLmZp cHMJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMTQyMjA5MjggKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4y aS9jcnlwdG8vZmlwcy9maXBzLmMJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMTQyMjA5MjggKzAyMDAK LUBAIC0wLDAgKzEsNDgzIEBACi0rLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIw MDMgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBS ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y IHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVkaXN0 cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK LSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIuIAotKyAqCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAg ICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg dGhlCi0rICogICAgZGlzdHJpYnV0aW9uLgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1h dGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29mdHdh cmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRo aXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJv amVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cu b3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBh bmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9yc2Ug b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0r ICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBw bGVhc2UgY29udGFjdAotKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KLSsgKgotKyAq IDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVk ICJPcGVuU1NMIgotKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1l cyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NM IFByb2plY3QuCi0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNv ZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0r ICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9w ZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0 cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF RCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VE IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI RQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO VCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBM SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUws IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAq IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ Q0VTOwotKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF UlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBX QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICog T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqCi0rICovCi0rCi0rI2RlZmlu ZSBfR05VX1NPVVJDRQotKwotKyNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KLSsjaW5jbHVkZSA8 b3BlbnNzbC9maXBzX3JhbmQuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KLSsjaW5jbHVk ZSA8b3BlbnNzbC9iaW8uaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9obWFjLmg+Ci0rI2luY2x1ZGUg PG9wZW5zc2wvcnNhLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxsaW1pdHMu aD4KLSsjaW5jbHVkZSA8ZGxmY24uaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8 c3RkbGliLmg+Ci0rI2luY2x1ZGUgImZpcHNfbG9jbC5oIgotKwotKyNpZmRlZiBPUEVOU1NMX0ZJ UFMKLSsKLSsjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKwotKyMgaWZuZGVmIFBBVEhfTUFY Ci0rIyAgZGVmaW5lIFBBVEhfTUFYIDEwMjQKLSsjIGVuZGlmCi0rCi0rc3RhdGljIGludCBmaXBz X3NlbGZ0ZXN0X2ZhaWwgPSAwOwotK3N0YXRpYyBpbnQgZmlwc19tb2RlID0gMDsKLStzdGF0aWMg aW50IGZpcHNfc3RhcnRlZCA9IDA7Ci0rCi0rc3RhdGljIGludCBmaXBzX2lzX293bmluZ190aHJl YWQodm9pZCk7Ci0rc3RhdGljIGludCBmaXBzX3NldF9vd25pbmdfdGhyZWFkKHZvaWQpOwotK3N0 YXRpYyBpbnQgZmlwc19jbGVhcl9vd25pbmdfdGhyZWFkKHZvaWQpOwotKwotKyMgZGVmaW5lIGZp cHNfd19sb2NrKCkgICBDUllQVE9fd19sb2NrKENSWVBUT19MT0NLX0ZJUFMpCi0rIyBkZWZpbmUg Zmlwc193X3VubG9jaygpIENSWVBUT193X3VubG9jayhDUllQVE9fTE9DS19GSVBTKQotKyMgZGVm aW5lIGZpcHNfcl9sb2NrKCkgICBDUllQVE9fcl9sb2NrKENSWVBUT19MT0NLX0ZJUFMpCi0rIyBk ZWZpbmUgZmlwc19yX3VubG9jaygpIENSWVBUT19yX3VubG9jayhDUllQVE9fTE9DS19GSVBTKQot KwotK3N0YXRpYyB2b2lkIGZpcHNfc2V0X21vZGUoaW50IG9ub2ZmKQotK3sKLSsgICAgaW50IG93 bmluZ190aHJlYWQgPSBmaXBzX2lzX293bmluZ190aHJlYWQoKTsKLSsKLSsgICAgaWYgKGZpcHNf c3RhcnRlZCkgewotKyAgICAgICAgaWYgKCFvd25pbmdfdGhyZWFkKQotKyAgICAgICAgICAgIGZp cHNfd19sb2NrKCk7Ci0rICAgICAgICBmaXBzX21vZGUgPSBvbm9mZjsKLSsgICAgICAgIGlmICgh b3duaW5nX3RocmVhZCkKLSsgICAgICAgICAgICBmaXBzX3dfdW5sb2NrKCk7Ci0rICAgIH0KLSt9 Ci0rCi0raW50IEZJUFNfbW9kdWxlX21vZGUodm9pZCkKLSt7Ci0rICAgIGludCByZXQgPSAwOwot KyAgICBpbnQgb3duaW5nX3RocmVhZCA9IGZpcHNfaXNfb3duaW5nX3RocmVhZCgpOwotKwotKyAg ICBpZiAoZmlwc19zdGFydGVkKSB7Ci0rICAgICAgICBpZiAoIW93bmluZ190aHJlYWQpCi0rICAg ICAgICAgICAgZmlwc19yX2xvY2soKTsKLSsgICAgICAgIHJldCA9IGZpcHNfbW9kZTsKLSsgICAg ICAgIGlmICghb3duaW5nX3RocmVhZCkKLSsgICAgICAgICAgICBmaXBzX3JfdW5sb2NrKCk7Ci0r ICAgIH0KLSsgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0raW50IEZJUFNfc2VsZnRlc3RfZmFpbGVk KHZvaWQpCi0rewotKyAgICBpbnQgcmV0ID0gMDsKLSsgICAgaWYgKGZpcHNfc3RhcnRlZCkgewot KyAgICAgICAgaW50IG93bmluZ190aHJlYWQgPSBmaXBzX2lzX293bmluZ190aHJlYWQoKTsKLSsK LSsgICAgICAgIGlmICghb3duaW5nX3RocmVhZCkKLSsgICAgICAgICAgICBmaXBzX3JfbG9jaygp OwotKyAgICAgICAgcmV0ID0gZmlwc19zZWxmdGVzdF9mYWlsOwotKyAgICAgICAgaWYgKCFvd25p bmdfdGhyZWFkKQotKyAgICAgICAgICAgIGZpcHNfcl91bmxvY2soKTsKLSsgICAgfQotKyAgICBy ZXR1cm4gcmV0OwotK30KLSsKLSsvKiBTZWxmdGVzdCBmYWlsdXJlIGZhdGFsIGV4aXQgcm91dGlu ZS4gVGhpcyB3aWxsIGJlIGNhbGxlZAotKyAqIGR1cmluZyAqYW55KiBjcnlwdG9ncmFwaGljIG9w ZXJhdGlvbi4gSXQgaGFzIHRoZSBtaW5pbXVtCi0rICogb3ZlcmhlYWQgcG9zc2libGUgdG8gYXZv aWQgdG9vIGJpZyBhIHBlcmZvcm1hbmNlIGhpdC4KLSsgKi8KLSsKLSt2b2lkIEZJUFNfc2VsZnRl c3RfY2hlY2sodm9pZCkKLSt7Ci0rICAgIGlmIChmaXBzX3NlbGZ0ZXN0X2ZhaWwpIHsKLSsgICAg ICAgIE9wZW5TU0xEaWUoX19GSUxFX18sIF9fTElORV9fLCAiRkFUQUwgRklQUyBTRUxGVEVTVCBG QUlMVVJFIik7Ci0rICAgIH0KLSt9Ci0rCi0rdm9pZCBmaXBzX3NldF9zZWxmdGVzdF9mYWlsKHZv aWQpCi0rewotKyAgICBmaXBzX3NlbGZ0ZXN0X2ZhaWwgPSAxOwotK30KLSsKLSsvKiB3ZSBpbXBs ZW1lbnQgd2hhdCBsaWJmaXBzY2hlY2sgZG9lcyBvdXJzZWx2ZXMgKi8KLSsKLStzdGF0aWMgaW50 Ci0rZ2V0X2xpYnJhcnlfcGF0aChjb25zdCBjaGFyICpsaWJuYW1lLCBjb25zdCBjaGFyICpzeW1i b2xuYW1lLCBjaGFyICpwYXRoLAotKyAgICAgICAgICAgICAgICAgc2l6ZV90IHBhdGhsZW4pCi0r ewotKyAgICBEbF9pbmZvIGluZm87Ci0rICAgIHZvaWQgKmRsLCAqc3ltOwotKyAgICBpbnQgcnYg PSAtMTsKLSsKLSsgICAgZGwgPSBkbG9wZW4obGlibmFtZSwgUlRMRF9MQVpZKTsKLSsgICAgaWYg KGRsID09IE5VTEwpIHsKLSsgICAgICAgIHJldHVybiAtMTsKLSsgICAgfQotKwotKyAgICBzeW0g PSBkbHN5bShkbCwgc3ltYm9sbmFtZSk7Ci0rCi0rICAgIGlmIChzeW0gIT0gTlVMTCAmJiBkbGFk ZHIoc3ltLCAmaW5mbykpIHsKLSsgICAgICAgIHN0cm5jcHkocGF0aCwgaW5mby5kbGlfZm5hbWUs IHBhdGhsZW4gLSAxKTsKLSsgICAgICAgIHBhdGhbcGF0aGxlbiAtIDFdID0gJ1wwJzsKLSsgICAg ICAgIHJ2ID0gMDsKLSsgICAgfQotKwotKyAgICBkbGNsb3NlKGRsKTsKLSsKLSsgICAgcmV0dXJu IHJ2OwotK30KLSsKLStzdGF0aWMgY29uc3QgY2hhciBjb252W10gPSAiMDEyMzQ1Njc4OWFiY2Rl ZiI7Ci0rCi0rc3RhdGljIGNoYXIgKmJpbjJoZXgodm9pZCAqYnVmLCBzaXplX3QgbGVuKQotK3sK LSsgICAgY2hhciAqaGV4LCAqcDsKLSsgICAgdW5zaWduZWQgY2hhciAqc3JjID0gYnVmOwotKwot KyAgICBoZXggPSBtYWxsb2MobGVuICogMiArIDEpOwotKyAgICBpZiAoaGV4ID09IE5VTEwpCi0r ICAgICAgICByZXR1cm4gTlVMTDsKLSsKLSsgICAgcCA9IGhleDsKLSsKLSsgICAgd2hpbGUgKGxl biA+IDApIHsKLSsgICAgICAgIHVuc2lnbmVkIGM7Ci0rCi0rICAgICAgICBjID0gKnNyYzsKLSsg ICAgICAgIHNyYysrOwotKwotKyAgICAgICAgKnAgPSBjb252W2MgPj4gNF07Ci0rICAgICAgICAr K3A7Ci0rICAgICAgICAqcCA9IGNvbnZbYyAmIDB4MGZdOwotKyAgICAgICAgKytwOwotKyAgICAg ICAgLS1sZW47Ci0rICAgIH0KLSsgICAgKnAgPSAnXDAnOwotKyAgICByZXR1cm4gaGV4OwotK30K LSsKLSsjIGRlZmluZSBITUFDX1BSRUZJWCAiLiIKLSsjIGRlZmluZSBITUFDX1NVRkZJWCAiLmht YWMiCi0rIyBkZWZpbmUgUkVBRF9CVUZGRVJfTEVOR1RIIDE2Mzg0Ci0rCi0rc3RhdGljIGNoYXIg Km1ha2VfaG1hY19wYXRoKGNvbnN0IGNoYXIgKm9yaWdwYXRoKQotK3sKLSsgICAgY2hhciAqcGF0 aCwgKnA7Ci0rICAgIGNvbnN0IGNoYXIgKmZuOwotKwotKyAgICBwYXRoID0KLSsgICAgICAgIG1h bGxvYyhzaXplb2YoSE1BQ19QUkVGSVgpICsgc2l6ZW9mKEhNQUNfU1VGRklYKSArIHN0cmxlbihv cmlncGF0aCkpOwotKyAgICBpZiAocGF0aCA9PSBOVUxMKSB7Ci0rICAgICAgICByZXR1cm4gTlVM TDsKLSsgICAgfQotKwotKyAgICBmbiA9IHN0cnJjaHIob3JpZ3BhdGgsICcvJyk7Ci0rICAgIGlm IChmbiA9PSBOVUxMKSB7Ci0rICAgICAgICBmbiA9IG9yaWdwYXRoOwotKyAgICB9IGVsc2Ugewot KyAgICAgICAgKytmbjsKLSsgICAgfQotKwotKyAgICBzdHJuY3B5KHBhdGgsIG9yaWdwYXRoLCBm biAtIG9yaWdwYXRoKTsKLSsgICAgcCA9IHBhdGggKyAoZm4gLSBvcmlncGF0aCk7Ci0rICAgIHAg PSBzdHBjcHkocCwgSE1BQ19QUkVGSVgpOwotKyAgICBwID0gc3RwY3B5KHAsIGZuKTsKLSsgICAg cCA9IHN0cGNweShwLCBITUFDX1NVRkZJWCk7Ci0rCi0rICAgIHJldHVybiBwYXRoOwotK30KLSsK LStzdGF0aWMgY29uc3QgY2hhciBobWFja2V5W10gPSAib3Jib0RlSklUSVRlanNpcnBBRE9OaXZp cnBVa3ZhclAiOwotKwotK3N0YXRpYyBpbnQgY29tcHV0ZV9maWxlX2htYWMoY29uc3QgY2hhciAq cGF0aCwgdm9pZCAqKmJ1Ziwgc2l6ZV90ICpobWFjbGVuKQotK3sKLSsgICAgRklMRSAqZiA9IE5V TEw7Ci0rICAgIGludCBydiA9IC0xOwotKyAgICB1bnNpZ25lZCBjaGFyIHJidWZbUkVBRF9CVUZG RVJfTEVOR1RIXTsKLSsgICAgc2l6ZV90IGxlbjsKLSsgICAgdW5zaWduZWQgaW50IGhsZW47Ci0r ICAgIEhNQUNfQ1RYIGM7Ci0rCi0rICAgIEhNQUNfQ1RYX2luaXQoJmMpOwotKwotKyAgICBmID0g Zm9wZW4ocGF0aCwgInIiKTsKLSsKLSsgICAgaWYgKGYgPT0gTlVMTCkgewotKyAgICAgICAgZ290 byBlbmQ7Ci0rICAgIH0KLSsKLSsgICAgSE1BQ19Jbml0KCZjLCBobWFja2V5LCBzaXplb2YoaG1h Y2tleSkgLSAxLCBFVlBfc2hhMjU2KCkpOwotKwotKyAgICB3aGlsZSAoKGxlbiA9IGZyZWFkKHJi dWYsIDEsIHNpemVvZihyYnVmKSwgZikpICE9IDApIHsKLSsgICAgICAgIEhNQUNfVXBkYXRlKCZj LCByYnVmLCBsZW4pOwotKyAgICB9Ci0rCi0rICAgIGxlbiA9IHNpemVvZihyYnVmKTsKLSsgICAg LyogcmV1c2UgcmJ1ZiBmb3IgaG1hYyAqLwotKyAgICBITUFDX0ZpbmFsKCZjLCByYnVmLCAmaGxl bik7Ci0rCi0rICAgICpidWYgPSBtYWxsb2MoaGxlbik7Ci0rICAgIGlmICgqYnVmID09IE5VTEwp IHsKLSsgICAgICAgIGdvdG8gZW5kOwotKyAgICB9Ci0rCi0rICAgICpobWFjbGVuID0gaGxlbjsK LSsKLSsgICAgbWVtY3B5KCpidWYsIHJidWYsIGhsZW4pOwotKwotKyAgICBydiA9IDA7Ci0rIGVu ZDoKLSsgICAgSE1BQ19DVFhfY2xlYW51cCgmYyk7Ci0rCi0rICAgIGlmIChmKQotKyAgICAgICAg ZmNsb3NlKGYpOwotKwotKyAgICByZXR1cm4gcnY7Ci0rfQotKwotK3N0YXRpYyBpbnQgRklQU0NI RUNLX3ZlcmlmeShjb25zdCBjaGFyICpsaWJuYW1lLCBjb25zdCBjaGFyICpzeW1ib2xuYW1lKQot K3sKLSsgICAgY2hhciBwYXRoW1BBVEhfTUFYICsgMV07Ci0rICAgIGludCBydjsKLSsgICAgRklM RSAqaGY7Ci0rICAgIGNoYXIgKmhtYWNwYXRoLCAqcDsKLSsgICAgY2hhciAqaG1hYyA9IE5VTEw7 Ci0rICAgIHNpemVfdCBuOwotKwotKyAgICBydiA9IGdldF9saWJyYXJ5X3BhdGgobGlibmFtZSwg c3ltYm9sbmFtZSwgcGF0aCwgc2l6ZW9mKHBhdGgpKTsKLSsKLSsgICAgaWYgKHJ2IDwgMCkKLSsg ICAgICAgIHJldHVybiAwOwotKwotKyAgICBobWFjcGF0aCA9IG1ha2VfaG1hY19wYXRoKHBhdGgp OwotKyAgICBpZiAoaG1hY3BhdGggPT0gTlVMTCkKLSsgICAgICAgIHJldHVybiAwOwotKwotKyAg ICBoZiA9IGZvcGVuKGhtYWNwYXRoLCAiciIpOwotKyAgICBpZiAoaGYgPT0gTlVMTCkgewotKyAg ICAgICAgZnJlZShobWFjcGF0aCk7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKyAg ICBpZiAoZ2V0bGluZSgmaG1hYywgJm4sIGhmKSA+IDApIHsKLSsgICAgICAgIHZvaWQgKmJ1ZjsK LSsgICAgICAgIHNpemVfdCBobWFjbGVuOwotKyAgICAgICAgY2hhciAqaGV4OwotKwotKyAgICAg ICAgaWYgKChwID0gc3RyY2hyKGhtYWMsICdcbicpKSAhPSBOVUxMKQotKyAgICAgICAgICAgICpw ID0gJ1wwJzsKLSsKLSsgICAgICAgIGlmIChjb21wdXRlX2ZpbGVfaG1hYyhwYXRoLCAmYnVmLCAm aG1hY2xlbikgPCAwKSB7Ci0rICAgICAgICAgICAgcnYgPSAtNDsKLSsgICAgICAgICAgICBnb3Rv IGVuZDsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGlmICgoaGV4ID0gYmluMmhleChidWYsIGht YWNsZW4pKSA9PSBOVUxMKSB7Ci0rICAgICAgICAgICAgZnJlZShidWYpOwotKyAgICAgICAgICAg IHJ2ID0gLTU7Ci0rICAgICAgICAgICAgZ290byBlbmQ7Ci0rICAgICAgICB9Ci0rCi0rICAgICAg ICBpZiAoc3RyY21wKGhleCwgaG1hYykgIT0gMCkgewotKyAgICAgICAgICAgIHJ2ID0gLTE7Ci0r ICAgICAgICB9Ci0rICAgICAgICBmcmVlKGJ1Zik7Ci0rICAgICAgICBmcmVlKGhleCk7Ci0rICAg IH0gZWxzZSB7Ci0rICAgICAgICBydiA9IC0xOwotKyAgICB9Ci0rCi0rIGVuZDoKLSsgICAgZnJl ZShobWFjKTsKLSsgICAgZnJlZShobWFjcGF0aCk7Ci0rICAgIGZjbG9zZShoZik7Ci0rCi0rICAg IGlmIChydiA8IDApCi0rICAgICAgICByZXR1cm4gMDsKLSsKLSsgICAgLyogY2hlY2sgc3VjY2Vz c2Z1bCAqLwotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0raW50IEZJUFNfbW9kdWxlX21vZGVfc2V0 KGludCBvbm9mZiwgY29uc3QgY2hhciAqYXV0aCkKLSt7Ci0rICAgIGludCByZXQgPSAwOwotKwot KyAgICBmaXBzX3dfbG9jaygpOwotKyAgICBmaXBzX3N0YXJ0ZWQgPSAxOwotKyAgICBmaXBzX3Nl dF9vd25pbmdfdGhyZWFkKCk7Ci0rCi0rICAgIGlmIChvbm9mZikgewotKwotKyAgICAgICAgZmlw c19zZWxmdGVzdF9mYWlsID0gMDsKLSsKLSsgICAgICAgIC8qIERvbid0IGdvIGludG8gRklQUyBt b2RlIHR3aWNlLCBqdXN0IHNvIHdlIGNhbiBkbyBhdXRvbWFnaWMKLSsgICAgICAgICAgIHNlZWRp bmcgKi8KLSsgICAgICAgIGlmIChGSVBTX21vZHVsZV9tb2RlKCkpIHsKLSsgICAgICAgICAgICBG SVBTZXJyKEZJUFNfRl9GSVBTX01PRFVMRV9NT0RFX1NFVCwKLSsgICAgICAgICAgICAgICAgICAg IEZJUFNfUl9GSVBTX01PREVfQUxSRUFEWV9TRVQpOwotKyAgICAgICAgICAgIGZpcHNfc2VsZnRl c3RfZmFpbCA9IDE7Ci0rICAgICAgICAgICAgcmV0ID0gMDsKLSsgICAgICAgICAgICBnb3RvIGVu ZDsKLSsgICAgICAgIH0KLSsjIGlmZGVmIE9QRU5TU0xfSUEzMl9TU0UyCi0rICAgICAgICB7Ci0r ICAgICAgICAgICAgZXh0ZXJuIHVuc2lnbmVkIGludCBPUEVOU1NMX2lhMzJjYXBfUFsyXTsKLSsg ICAgICAgICAgICBpZiAoKE9QRU5TU0xfaWEzMmNhcF9QWzBdICYgKDEgPDwgMjUgfCAxIDw8IDI2 KSkgIT0KLSsgICAgICAgICAgICAgICAgKDEgPDwgMjUgfCAxIDw8IDI2KSkgewotKyAgICAgICAg ICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX01PRFVMRV9NT0RFX1NFVCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICBGSVBTX1JfVU5TVVBQT1JURURfUExBVEZPUk0pOwotKyAgICAgICAgICAg ICAgICBmaXBzX3NlbGZ0ZXN0X2ZhaWwgPSAxOwotKyAgICAgICAgICAgICAgICByZXQgPSAwOwot KyAgICAgICAgICAgICAgICBnb3RvIGVuZDsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAg T1BFTlNTTF9pYTMyY2FwX1BbMF0gfD0gKDEgPDwgMjgpOyAvKiBzZXQgInNoYXJlZCBjYWNoZSIg ICAqLwotKyAgICAgICAgICAgIE9QRU5TU0xfaWEzMmNhcF9QWzFdICY9IH4oMSA8PCAoNjAgLSAz MikpOyAvKiBjbGVhciBBVlggICAgICAgICAgICAqLwotKyAgICAgICAgfQotKyMgZW5kaWYKLSsK LSsgICAgICAgIGlmICghRklQU0NIRUNLX3ZlcmlmeQotKyAgICAgICAgICAgICgibGliY3J5cHRv LnNvLiIgU0hMSUJfVkVSU0lPTl9OVU1CRVIsICJGSVBTX21vZGVfc2V0IikpIHsKLSsgICAgICAg ICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX01PRFVMRV9NT0RFX1NFVCwKLSsgICAgICAgICAgICAg ICAgICAgIEZJUFNfUl9GSU5HRVJQUklOVF9ET0VTX05PVF9NQVRDSCk7Ci0rICAgICAgICAgICAg Zmlwc19zZWxmdGVzdF9mYWlsID0gMTsKLSsgICAgICAgICAgICByZXQgPSAwOwotKyAgICAgICAg ICAgIGdvdG8gZW5kOwotKyAgICAgICAgfQotKwotKyAgICAgICAgaWYgKCFGSVBTQ0hFQ0tfdmVy aWZ5Ci0rICAgICAgICAgICAgKCJsaWJzc2wuc28uIiBTSExJQl9WRVJTSU9OX05VTUJFUiwgIlNT TF9DVFhfbmV3IikpIHsKLSsgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX01PRFVMRV9N T0RFX1NFVCwKLSsgICAgICAgICAgICAgICAgICAgIEZJUFNfUl9GSU5HRVJQUklOVF9ET0VTX05P VF9NQVRDSCk7Ci0rICAgICAgICAgICAgZmlwc19zZWxmdGVzdF9mYWlsID0gMTsKLSsgICAgICAg ICAgICByZXQgPSAwOwotKyAgICAgICAgICAgIGdvdG8gZW5kOwotKyAgICAgICAgfQotKwotKyAg ICAgICAgaWYgKEZJUFNfc2VsZnRlc3QoKSkKLSsgICAgICAgICAgICBmaXBzX3NldF9tb2RlKG9u b2ZmKTsKLSsgICAgICAgIGVsc2UgewotKyAgICAgICAgICAgIGZpcHNfc2VsZnRlc3RfZmFpbCA9 IDE7Ci0rICAgICAgICAgICAgcmV0ID0gMDsKLSsgICAgICAgICAgICBnb3RvIGVuZDsKLSsgICAg ICAgIH0KLSsgICAgICAgIHJldCA9IDE7Ci0rICAgICAgICBnb3RvIGVuZDsKLSsgICAgfQotKyAg ICBmaXBzX3NldF9tb2RlKDApOwotKyAgICBmaXBzX3NlbGZ0ZXN0X2ZhaWwgPSAwOwotKyAgICBy ZXQgPSAxOwotKyBlbmQ6Ci0rICAgIGZpcHNfY2xlYXJfb3duaW5nX3RocmVhZCgpOwotKyAgICBm aXBzX3dfdW5sb2NrKCk7Ci0rICAgIHJldHVybiByZXQ7Ci0rfQotKwotK3N0YXRpYyBDUllQVE9f VEhSRUFESUQgZmlwc190aHJlYWQ7Ci0rc3RhdGljIGludCBmaXBzX3RocmVhZF9zZXQgPSAwOwot KwotK3N0YXRpYyBpbnQgZmlwc19pc19vd25pbmdfdGhyZWFkKHZvaWQpCi0rewotKyAgICBpbnQg cmV0ID0gMDsKLSsKLSsgICAgaWYgKGZpcHNfc3RhcnRlZCkgewotKyAgICAgICAgQ1JZUFRPX3Jf bG9jayhDUllQVE9fTE9DS19GSVBTMik7Ci0rICAgICAgICBpZiAoZmlwc190aHJlYWRfc2V0KSB7 Ci0rICAgICAgICAgICAgQ1JZUFRPX1RIUkVBRElEIGN1cjsKLSsgICAgICAgICAgICBDUllQVE9f VEhSRUFESURfY3VycmVudCgmY3VyKTsKLSsgICAgICAgICAgICBpZiAoIUNSWVBUT19USFJFQURJ RF9jbXAoJmN1ciwgJmZpcHNfdGhyZWFkKSkKLSsgICAgICAgICAgICAgICAgcmV0ID0gMTsKLSsg ICAgICAgIH0KLSsgICAgICAgIENSWVBUT19yX3VubG9jayhDUllQVE9fTE9DS19GSVBTMik7Ci0r ICAgIH0KLSsgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0raW50IGZpcHNfc2V0X293bmluZ190aHJl YWQodm9pZCkKLSt7Ci0rICAgIGludCByZXQgPSAwOwotKwotKyAgICBpZiAoZmlwc19zdGFydGVk KSB7Ci0rICAgICAgICBDUllQVE9fd19sb2NrKENSWVBUT19MT0NLX0ZJUFMyKTsKLSsgICAgICAg IGlmICghZmlwc190aHJlYWRfc2V0KSB7Ci0rICAgICAgICAgICAgQ1JZUFRPX1RIUkVBRElEX2N1 cnJlbnQoJmZpcHNfdGhyZWFkKTsKLSsgICAgICAgICAgICByZXQgPSAxOwotKyAgICAgICAgICAg IGZpcHNfdGhyZWFkX3NldCA9IDE7Ci0rICAgICAgICB9Ci0rICAgICAgICBDUllQVE9fd191bmxv Y2soQ1JZUFRPX0xPQ0tfRklQUzIpOwotKyAgICB9Ci0rICAgIHJldHVybiByZXQ7Ci0rfQotKwot K2ludCBmaXBzX2NsZWFyX293bmluZ190aHJlYWQodm9pZCkKLSt7Ci0rICAgIGludCByZXQgPSAw OwotKwotKyAgICBpZiAoZmlwc19zdGFydGVkKSB7Ci0rICAgICAgICBDUllQVE9fd19sb2NrKENS WVBUT19MT0NLX0ZJUFMyKTsKLSsgICAgICAgIGlmIChmaXBzX3RocmVhZF9zZXQpIHsKLSsgICAg ICAgICAgICBDUllQVE9fVEhSRUFESUQgY3VyOwotKyAgICAgICAgICAgIENSWVBUT19USFJFQURJ RF9jdXJyZW50KCZjdXIpOwotKyAgICAgICAgICAgIGlmICghQ1JZUFRPX1RIUkVBRElEX2NtcCgm Y3VyLCAmZmlwc190aHJlYWQpKQotKyAgICAgICAgICAgICAgICBmaXBzX3RocmVhZF9zZXQgPSAw OwotKyAgICAgICAgfQotKyAgICAgICAgQ1JZUFRPX3dfdW5sb2NrKENSWVBUT19MT0NLX0ZJUFMy KTsKLSsgICAgfQotKyAgICByZXR1cm4gcmV0OwotK30KLSsKLSsjIGlmIDAKLSsvKiBUaGUgcHVy cG9zZSBvZiB0aGlzIGlzIHRvIGVuc3VyZSB0aGUgZXJyb3IgY29kZSBleGlzdHMgYW5kIHRoZSBm dW5jdGlvbgotKyAqIG5hbWUgaXMgdG8ga2VlcCB0aGUgZXJyb3IgY2hlY2tpbmcgc2NyaXB0IHF1 aWV0Ci0rICovCi0rdm9pZCBoYXNoX2ZpbmFsKHZvaWQpCi0rewotKyAgICBGSVBTZXJyKEZJUFNf Rl9IQVNIX0ZJTkFMLCBGSVBTX1JfTk9OX0ZJUFNfTUVUSE9EKTsKLSt9Ci0rIyBlbmRpZgotKwot KyNlbmRpZgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19jbWFjX3Nl bGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX2NtYWNfc2VsZnRl c3QuYwotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfY21hY19zZWxmdGVzdC5j LmZpcHMJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMTQyMjA5MjggKzAyMDAKLSsrKyBvcGVuc3NsLTEu MC4yaS9jcnlwdG8vZmlwcy9maXBzX2NtYWNfc2VsZnRlc3QuYwkyMDE2LTA5LTIyIDEzOjM1OjU3 LjAxNDIyMDkyOCArMDIwMAotQEAgLTAsMCArMSwxNTYgQEAKLSsvKiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAq IENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNl cnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0r ICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl IGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlv bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAq ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBB bGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRo aXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRn bWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBi eSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29s a2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJP cGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRv Ci0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv ZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0 dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICogICAgb3BlbnNzbC1jb3JlQG9wZW5z c2wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUg bWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBw ZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Np b24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBv ZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBh Y2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRl dmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3Bl blNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiBUSElTIFNP RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBB TlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO T1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xB SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMg Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U QUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO Q0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7 IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJ QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAq IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO IElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICoK LSsgKi8KLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+ Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2NtYWMuaD4K LSsjaW5jbHVkZSAiZmlwc19sb2NsLmgiCi0rCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotK3R5cGVk ZWYgc3RydWN0IHsKLSsgICAgaW50IG5pZDsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hhciBrZXlb RVZQX01BWF9LRVlfTEVOR1RIXTsKLSsgICAgc2l6ZV90IGtleXNpemU7Ci0rICAgIGNvbnN0IHVu c2lnbmVkIGNoYXIgbXNnWzY0XTsKLSsgICAgc2l6ZV90IG1zZ3NpemU7Ci0rICAgIGNvbnN0IHVu c2lnbmVkIGNoYXIgbWFjWzMyXTsKLSsgICAgc2l6ZV90IG1hY3NpemU7Ci0rfSBDTUFDX0tBVDsK LSsKLSsvKiBmcm9tIGh0dHA6Ly9jc3JjLm5pc3QuZ292L3B1YmxpY2F0aW9ucy9uaXN0cHVicy84 MDAtMzhCL1NQXzgwMC0zOEIucGRmICovCi0rc3RhdGljIGNvbnN0IENNQUNfS0FUIHZlY3Rvcltd ID0gewotKyAgICB7TklEX2Flc18xMjhfY2JjLCAgICAgICAgICAgLyogQ291bnQgPSAzMiBmcm9t IENNQUNHZW5BRVMxMjgudHh0ICovCi0rICAgICB7MHg3NywgMHhhNywgMHg3ZiwgMHhhZiwgMHgy OSwgMHgwYywgMHgxZiwgMHhhMywKLSsgICAgICAweDBjLCAweDY4LCAweDNkLCAweGYxLCAweDZi LCAweGE3LCAweGE3LCAweDdiLH0sIDEyOCwKLSsgICAgIHsweDAyLCAweDA2LCAweDgzLCAweGUx LCAweGYwLCAweDM5LCAweDJmLCAweDRjLAotKyAgICAgIDB4YWMsIDB4NTQsIDB4MzEsIDB4OGIs IDB4NjAsIDB4MjksIDB4MjUsIDB4OWUsCi0rICAgICAgMHg5YywgMHg1NSwgMHgzZCwgMHhiYywg MHg0YiwgMHg2YSwgMHhkOSwgMHg5OCwKLSsgICAgICAweGU2LCAweDRkLCAweDU4LCAweGU0LCAw eGU3LCAweGRjLCAweDJlLCAweDEzLH0sIDI1NiwKLSsgICAgIHsweGZiLCAweGZlLCAweGE0LCAw eDFiLH0sIDMyfSwKLSsgICAge05JRF9hZXNfMTkyX2NiYywgICAgICAgICAgIC8qIENvdW50ID0g MjMgZnJvbSBDTUFDR2VuQUVTMTkyLnR4dCAqLwotKyAgICAgezB4N2IsIDB4MzIsIDB4MzksIDB4 MTMsIDB4NjksIDB4YWEsIDB4NGMsIDB4YTksCi0rICAgICAgMHg3NSwgMHg1OCwgMHgwOSwgMHg1 YiwgMHhlMywgMHhjMywgMHhlYywgMHg4NiwKLSsgICAgICAweDJiLCAweGQwLCAweDU3LCAweGNl LCAweGYxLCAweGUzLCAweDJkLCAweDYyLH0sIDE5MiwKLSsgICAgIHsweDB9LCAwLAotKyAgICAg ezB4ZTQsIDB4ZDksIDB4MzQsIDB4MGIsIDB4MDMsIDB4ZTYsIDB4N2QsIDB4ZWYsCi0rICAgICAg MHhkNCwgMHg5NiwgMHg5YywgMHhjMSwgMHhlZCwgMHgzNywgMHgzNSwgMHhlNix9LCAxMjgsCi0r ICAgICB9LAotKyAgICB7TklEX2Flc18yNTZfY2JjLCAgICAgICAgICAgLyogQ291bnQgPSAzMyBm cm9tIENNQUNHZW5BRVMyNTYudHh0ICovCi0rICAgICB7MHgwYiwgMHgxMiwgMHgyYSwgMHhjOCwg MHhmMywgMHg0ZSwgMHhkMSwgMHhmZSwKLSsgICAgICAweDA4LCAweDJhLCAweDM2LCAweDI1LCAw eGQxLCAweDU3LCAweDU2LCAweDE0LAotKyAgICAgIDB4NTQsIDB4MTYsIDB4N2EsIDB4YzEsIDB4 NDUsIDB4YTEsIDB4MGIsIDB4YmYsCi0rICAgICAgMHg3NywgMHhjNiwgMHhhNywgMHgwNSwgMHg5 NiwgMHhkNSwgMHg3NCwgMHhmMSx9LCAyNTYsCi0rICAgICB7MHg0OSwgMHg4YiwgMHg1MywgMHhm ZCwgMHhlYywgMHg4NywgMHhlZCwgMHhjYiwKLSsgICAgICAweGYwLCAweDcwLCAweDk3LCAweGRj LCAweGNkLCAweGU5LCAweDNhLCAweDA4LAotKyAgICAgIDB4NGIsIDB4YWQsIDB4NzUsIDB4MDEs IDB4YTIsIDB4MjQsIDB4ZTMsIDB4ODgsCi0rICAgICAgMHhkZiwgMHgzNCwgMHg5YywgMHhlMSwg MHg4OSwgMHg1OSwgMHhmZSwgMHg4NCwKLSsgICAgICAweDg1LCAweGY4LCAweGFkLCAweDE1LCAw eDM3LCAweGYwLCAweGQ4LCAweDk2LAotKyAgICAgIDB4ZWEsIDB4NzMsIDB4YmUsIDB4ZGMsIDB4 NzIsIDB4MTQsIDB4NzEsIDB4M2YsfSwgMzg0LAotKyAgICAgezB4ZjYsIDB4MmMsIDB4NDYsIDB4 MzIsIDB4OWIsfSwgNDAsCi0rICAgICB9LAotKyAgICB7TklEX2Rlc19lZGUzX2NiYywgICAgICAg ICAgLyogQ291bnQgPSA0MSBmcm9tIENNQUNHZW5UREVTMy5yZXEgKi8KLSsgICAgIHsweDg5LCAw eGJjLCAweGQ5LCAweDUyLCAweGE4LCAweGM4LCAweGFiLCAweDM3LAotKyAgICAgIDB4MWEsIDB4 ZjQsIDB4OGEsIDB4YzcsIDB4ZDAsIDB4NzAsIDB4ODUsIDB4ZDUsCi0rICAgICAgMHhlZiwgMHhm NywgMHgwMiwgMHhlNiwgMHhkNiwgMHgyYywgMHhkYywgMHgyMyx9LCAxOTIsCi0rICAgICB7MHhm YSwgMHg2MiwgMHgwYywgMHgxYiwgMHhiZSwgMHg5NywgMHgzMSwgMHg5ZSwKLSsgICAgICAweDlh LCAweDBjLCAweGYwLCAweDQ5LCAweDIxLCAweDIxLCAweGY3LCAweGEyLAotKyAgICAgIDB4MGUs IDB4YjAsIDB4OGEsIDB4NmEsIDB4NzAsIDB4OWQsIDB4Y2IsIDB4ZDAsCi0rICAgICAgMHgwYSwg MHhhZiwgMHgzOCwgMHhlNCwgMHhmOSwgMHg5ZSwgMHg3NSwgMHg0ZSx9LCAyNTYsCi0rICAgICB7 MHg4ZiwgMHg0OSwgMHhhMSwgMHhiNywgMHhkNiwgMHhhYSwgMHgyMiwgMHg1OCx9LCA2NCwKLSsg ICAgIH0sCi0rfTsKLSsKLStpbnQgRklQU19zZWxmdGVzdF9jbWFjKCkKLSt7Ci0rICAgIHNpemVf dCBuLCBvdXRsZW47Ci0rICAgIHVuc2lnbmVkIGNoYXIgb3V0WzMyXTsKLSsgICAgY29uc3QgRVZQ X0NJUEhFUiAqY2lwaGVyOwotKyAgICBDTUFDX0NUWCAqY3R4ID0gQ01BQ19DVFhfbmV3KCk7Ci0r ICAgIGNvbnN0IENNQUNfS0FUICp0OwotKyAgICBpbnQgcnYgPSAxOwotKwotKyAgICBmb3IgKG4g PSAwLCB0ID0gdmVjdG9yOyBuIDwgc2l6ZW9mKHZlY3RvcikgLyBzaXplb2YodmVjdG9yWzBdKTsg bisrLCB0KyspIHsKLSsgICAgICAgIGNpcGhlciA9IEZJUFNfZ2V0X2NpcGhlcmJ5bmlkKHQtPm5p ZCk7Ci0rICAgICAgICBpZiAoIWNpcGhlcikgewotKyAgICAgICAgICAgIHJ2ID0gLTE7Ci0rICAg ICAgICAgICAgZ290byBlcnI7Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAoIUNNQUNfSW5pdChj dHgsIHQtPmtleSwgdC0+a2V5c2l6ZSAvIDgsIGNpcGhlciwgMCkpIHsKLSsgICAgICAgICAgICBy diA9IC0xOwotKyAgICAgICAgICAgIGdvdG8gZXJyOwotKyAgICAgICAgfQotKyAgICAgICAgaWYg KCFDTUFDX1VwZGF0ZShjdHgsIHQtPm1zZywgdC0+bXNnc2l6ZSAvIDgpKSB7Ci0rICAgICAgICAg ICAgcnYgPSAtMTsKLSsgICAgICAgICAgICBnb3RvIGVycjsKLSsgICAgICAgIH0KLSsKLSsgICAg ICAgIGlmICghQ01BQ19GaW5hbChjdHgsIG91dCwgJm91dGxlbikpIHsKLSsgICAgICAgICAgICBy diA9IC0xOwotKyAgICAgICAgICAgIGdvdG8gZXJyOwotKyAgICAgICAgfQotKyAgICAgICAgQ01B Q19DVFhfY2xlYW51cChjdHgpOwotKwotKyAgICAgICAgaWYgKG91dGxlbiA8IHQtPm1hY3NpemUg LyA4IHx8IG1lbWNtcChvdXQsIHQtPm1hYywgdC0+bWFjc2l6ZSAvIDgpKSB7Ci0rICAgICAgICAg ICAgcnYgPSAwOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rIGVycjoKLSsgICAgQ01BQ19DVFhf ZnJlZShjdHgpOwotKwotKyAgICBpZiAocnYgPT0gLTEpIHsKLSsgICAgICAgIHJ2ID0gMDsKLSsg ICAgfQotKyAgICBpZiAoIXJ2KQotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19TRUxGVEVT VF9DTUFDLCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKLSsKLSsgICAgcmV0dXJuIHJ2OwotK30K LSsjZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfZGVzX3Nl bGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX2Rlc19zZWxmdGVz dC5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19kZXNfc2VsZnRlc3QuYy5m aXBzCTIwMTYtMDktMjIgMTM6MzU6NTcuMDE0MjIwOTI4ICswMjAwCi0rKysgb3BlbnNzbC0xLjAu MmkvY3J5cHRvL2ZpcHMvZmlwc19kZXNfc2VsZnRlc3QuYwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAx NDIyMDkyOCArMDIwMAotQEAgLTAsMCArMSwxMzggQEAKLSsvKiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqIENv cHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZl ZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoK LSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi b3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg cHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwg YWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMK LSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVu dDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0 aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0 LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVu U1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0r ICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3 YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVu IHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wu b3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5 IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFy IGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24g b2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBh bnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tu b3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVs b3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNT TCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRX QVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkK LSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg TElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09O VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws Ci0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV RElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg R09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJ TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFS SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG IEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICoKLSsg Ki8KLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0r I2lmZGVmIE9QRU5TU0xfRklQUwotKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2VuZGlm Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvb3BlbnNzbGNv bmYuaD4KLSsKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCB7 Ci0rICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIga2V5WzE2XTsKLSsgICAgY29uc3QgdW5zaWduZWQg Y2hhciBwbGFpbnRleHRbOF07Ci0rICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgY2lwaGVydGV4dFs4 XTsKLSt9IHRlc3RzMltdID0gewotKyAgICB7Ci0rICAgICAgICB7Ci0rICAgICAgICAweDdjLCAw eDRmLCAweDZlLCAweGY3LCAweGEyLCAweDA0LCAweDE2LCAweGVjLAotKyAgICAgICAgICAgICAg ICAweDBiLCAweDZiLCAweDdjLCAweDllLCAweDVlLCAweDE5LCAweGE3LCAweGM0fSwgewotKyAg ICAgICAgMHgwNiwgMHhhNywgMHhkOCwgMHg3OSwgMHhhYSwgMHhjZSwgMHg2OSwgMHhlZn0sIHsK LSsgICAgICAgIDB4NGMsIDB4MTEsIDB4MTcsIDB4NTUsIDB4YmYsIDB4YzQsIDB4NGUsIDB4ZmR9 Ci0rICAgIH0sIHsKLSsgICAgICAgIHsKLSsgICAgICAgIDB4NWQsIDB4OWUsIDB4MDEsIDB4ZDMs IDB4MjUsIDB4YzcsIDB4M2UsIDB4MzQsCi0rICAgICAgICAgICAgICAgIDB4MDEsIDB4MTYsIDB4 N2MsIDB4ODUsIDB4MjMsIDB4ZGYsIDB4ZTAsIDB4Njh9LCB7Ci0rICAgICAgICAweDljLCAweDUw LCAweDA5LCAweDBmLCAweDVlLCAweDdkLCAweDY5LCAweDdlfSwgewotKyAgICAweGQyLCAweDBi LCAweDE4LCAweGRmLCAweGQ5LCAweDBkLCAweDllLCAweGZmfSx9Ci0rfTsKLSsKLStzdGF0aWMg Y29uc3Qgc3RydWN0IHsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hhciBrZXlbMjRdOwotKyAgICBj b25zdCB1bnNpZ25lZCBjaGFyIHBsYWludGV4dFs4XTsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hh ciBjaXBoZXJ0ZXh0WzhdOwotK30gdGVzdHMzW10gPSB7Ci0rICAgIHsKLSsgICAgICAgIHsKLSsg ICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0r ICAgICAgICAgICAgICAgIDB4RkUsIDB4REMsIDB4QkEsIDB4OTgsIDB4NzYsIDB4NTQsIDB4MzIs IDB4MTAsCi0rICAgICAgICAgICAgICAgIDB4MTIsIDB4MzQsIDB4NTYsIDB4NzgsIDB4OWEsIDB4 YmMsIDB4ZGUsIDB4ZjB9LCB7Ci0rICAgICAgICAweDhmLCAweDhmLCAweGJmLCAweDliLCAweDVk LCAweDQ4LCAweGI0LCAweDFjfSwgewotKyAgICAweDU5LCAweDhjLCAweGU1LCAweGQzLCAweDZj LCAweGEyLCAweGVhLCAweDFifSx9LCB7Ci0rICAgICAgICB7Ci0rICAgICAgICAweERDLCAweEJB LCAweDk4LCAweDc2LCAweDU0LCAweDMyLCAweDEwLCAweEZFLAotKyAgICAgICAgICAgICAgICAw eDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweEFCLCAweENELCAweEVGLAotKyAgICAgICAg ICAgICAgICAweEVELCAweDM5LCAweEQ5LCAweDUwLCAweEZBLCAweDc0LCAweEJDLCAweEM0fSwg ewotKyAgICAgICAgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhBQiwgMHhDRCwgMHhF Rn0sIHsKLSsweDExLCAweDI1LCAweGIwLCAweDM1LCAweGJlLCAweGEwLCAweDgyLCAweDg2fSx9 LH07Ci0rCi0rc3RhdGljIGludCBjb3JydXB0X2RlczsKLSsKLSt2b2lkIEZJUFNfY29ycnVwdF9k ZXMoKQotK3sKLSsgICAgY29ycnVwdF9kZXMgPSAxOwotK30KLSsKLStpbnQgRklQU19zZWxmdGVz dF9kZXMoKQotK3sKLSsgICAgaW50IG4sIHJldCA9IDA7Ci0rICAgIEVWUF9DSVBIRVJfQ1RYIGN0 eDsKLSsgICAgRVZQX0NJUEhFUl9DVFhfaW5pdCgmY3R4KTsKLSsgICAgLyogRW5jcnlwdC9kZWNy eXB0IHdpdGggMi1rZXkgM0RFUyBhbmQgY29tcGFyZSB0byBrbm93biBhbnN3ZXJzICovCi0rICAg IGZvciAobiA9IDA7IG4gPCAyOyArK24pIHsKLSsgICAgICAgIHVuc2lnbmVkIGNoYXIgcGxhaW50 ZXh0WzhdOwotKwotKyAgICAgICAgbWVtY3B5KHBsYWludGV4dCwgdGVzdHMyW25dLnBsYWludGV4 dCwgc2l6ZW9mKHBsYWludGV4dCkpOwotKyAgICAgICAgaWYgKGNvcnJ1cHRfZGVzKQotKyAgICAg ICAgICAgIHBsYWludGV4dFswXSsrOwotKyAgICAgICAgaWYgKCFmaXBzX2NpcGhlcl90ZXN0KCZj dHgsIEVWUF9kZXNfZWRlX2VjYigpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl c3RzMltuXS5rZXksIE5VTEwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW50 ZXh0LCB0ZXN0czJbbl0uY2lwaGVydGV4dCwgOCkpCi0rICAgICAgICAgICAgZ290byBlcnI7Ci0r ICAgIH0KLSsKLSsgICAgLyogRW5jcnlwdC9kZWNyeXB0IHdpdGggM0RFUyBhbmQgY29tcGFyZSB0 byBrbm93biBhbnN3ZXJzICovCi0rICAgIGZvciAobiA9IDA7IG4gPCAyOyArK24pIHsKLSsgICAg ICAgIGlmICghZmlwc19jaXBoZXJfdGVzdCgmY3R4LCBFVlBfZGVzX2VkZTNfZWNiKCksCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMzW25dLmtleSwgTlVMTCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0czNbbl0ucGxhaW50ZXh0LCB0ZXN0czNbbl0uY2lw aGVydGV4dCwgOCkpCi0rICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsgICAgcmV0ID0g MTsKLSsgZXJyOgotKyAgICBFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwKCZjdHgpOwotKyAgICBpZiAo cmV0ID09IDApCi0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX1NFTEZURVNUX0RFUywgRklQ U19SX1NFTEZURVNUX0ZBSUxFRCk7Ci0rCi0rICAgIHJldHVybiByZXQ7Ci0rfQotKyNlbmRpZgot ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2N0ci5jLmZpcHMg b3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2N0ci5jCi0tLS0gb3BlbnNzbC0x LjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2N0ci5jLmZpcHMJMjAxNi0wOS0yMiAxMzozNTo1 Ny4wMTQyMjA5MjggKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX2Ry YmdfY3RyLmMJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMTQyMjA5MjggKzAyMDAKLUBAIC0wLDAgKzEs NDE1IEBACi0rLyogZmlwcy9yYW5kL2ZpcHNfZHJiZ19jdHIuYyAqLwotKy8qIFdyaXR0ZW4gYnkg RHIgU3RlcGhlbiBOIEhlbnNvbiAoc3RldmVAb3BlbnNzbC5vcmcpIGZvciB0aGUgT3BlblNTTAot KyAqIHByb2plY3QuCi0rICovCi0rLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIw MTEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBS ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y IHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVkaXN0 cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK LSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIuIAotKyAqCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAg ICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg dGhlCi0rICogICAgZGlzdHJpYnV0aW9uLgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1h dGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29mdHdh cmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRo aXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJv amVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cu T3BlblNTTC5vcmcvKSIKLSsgKgotKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBh bmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9yc2Ug b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0r ICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBw bGVhc2UgY29udGFjdAotKyAqICAgIGxpY2Vuc2luZ0BPcGVuU1NMLm9yZy4KLSsgKgotKyAqIDUu IFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJP cGVuU1NMIgotKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3 aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFBy b2plY3QuCi0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZl ciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICog ICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5T U0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDov L3d3dy5PcGVuU1NMLm9yZy8pIgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC WSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VEIE9S IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT SEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUwsIEVY RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5P VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT OwotKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV UFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ LCBXSEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBXQVkg T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICogT0Yg VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICovCi0r Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8 b3BlbnNzbC9jcnlwdG8uaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2luY2x1ZGUg PG9wZW5zc2wvZmlwc19yYW5kLmg+Ci0rI2luY2x1ZGUgImZpcHNfcmFuZF9sY2wuaCIKLSsKLStz dGF0aWMgdm9pZCBpbmNfMTI4KERSQkdfQ1RSX0NUWCAqIGNjdHgpCi0rewotKyAgICBpbnQgaTsK LSsgICAgdW5zaWduZWQgY2hhciBjOwotKyAgICB1bnNpZ25lZCBjaGFyICpwID0gY2N0eC0+ViAr IDE1OwotKyAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgewotKyAgICAgICAgYyA9ICpwOwot KyAgICAgICAgYysrOwotKyAgICAgICAgKnAgPSBjOwotKyAgICAgICAgaWYgKGMpCi0rICAgICAg ICAgICAgcmV0dXJuOwotKyAgICAgICAgcC0tOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyB2b2lk IGN0cl9YT1IoRFJCR19DVFJfQ1RYICogY2N0eCwgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sCi0r ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5sZW4pCi0rewotKyAgICBzaXplX3QgaSwgbjsK LSsgICAgLyogQW55IHplcm8gcGFkZGluZyB3aWxsIGhhdmUgbm8gZWZmZWN0IG9uIHRoZSByZXN1 bHQgYXMgd2UKLSsgICAgICogYXJlIFhPUmluZy4gU28ganVzdCBwcm9jZXNzIGhvd2V2ZXIgbXVj aCBpbnB1dCB3ZSBoYXZlLgotKyAgICAgKi8KLSsKLSsgICAgaWYgKCFpbiB8fCAhaW5sZW4pCi0r ICAgICAgICByZXR1cm47Ci0rCi0rICAgIGlmIChpbmxlbiA8IGNjdHgtPmtleWxlbikKLSsgICAg ICAgIG4gPSBpbmxlbjsKLSsgICAgZWxzZQotKyAgICAgICAgbiA9IGNjdHgtPmtleWxlbjsKLSsK LSsgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKLSsgICAgICAgIGNjdHgtPktbaV0gXj0gaW5b aV07Ci0rICAgIGlmIChpbmxlbiA8PSBjY3R4LT5rZXlsZW4pCi0rICAgICAgICByZXR1cm47Ci0r Ci0rICAgIG4gPSBpbmxlbiAtIGNjdHgtPmtleWxlbjsKLSsgICAgLyogU2hvdWxkIG5ldmVyIGhh cHBlbiAqLwotKyAgICBpZiAobiA+IDE2KQotKyAgICAgICAgbiA9IDE2OwotKyAgICBmb3IgKGkg PSAwOyBpIDwgMTY7IGkrKykKLSsgICAgICAgIGNjdHgtPlZbaV0gXj0gaW5baSArIGNjdHgtPmtl eWxlbl07Ci0rfQotKwotKy8qIFByb2Nlc3MgYSBjb21wbGV0ZSBibG9jayB1c2luZyBCQ0MgYWxn b3JpdGhtIG9mIFNQUCA4MDAtOTAgMTAuNC4zICovCi0rCi0rc3RhdGljIHZvaWQgY3RyX0JDQ19i bG9jayhEUkJHX0NUUl9DVFggKiBjY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbikKLSt7Ci0rICAgIGludCBp OwotKyAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKLSsgICAgICAgIG91dFtpXSBePSBpbltp XTsKLSsgICAgQUVTX2VuY3J5cHQob3V0LCBvdXQsICZjY3R4LT5kZl9rcyk7Ci0rI2lmIDAKLSsg ICAgZnByaW50ZihzdGRlcnIsICJCQ0MgaW4rb3V0XG4iKTsKLSsgICAgQklPX2R1bXBfZnAoc3Rk ZXJyLCBpbiwgMTYpOwotKyAgICBCSU9fZHVtcF9mcChzdGRlcnIsIG91dCwgMTYpOwotKyNlbmRp ZgotK30KLSsKLSsvKiBIYW5kbGUgc2V2ZXJhbCBCQ0Mgb3BlcmF0aW9ucyBmb3IgYXMgbXVjaCBk YXRhIGFzIHdlIG5lZWQgZm9yIEsgYW5kIFggKi8KLStzdGF0aWMgdm9pZCBjdHJfQkNDX2Jsb2Nr cyhEUkJHX0NUUl9DVFggKiBjY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICppbikKLSt7Ci0rICAg IGN0cl9CQ0NfYmxvY2soY2N0eCwgY2N0eC0+S1gsIGluKTsKLSsgICAgY3RyX0JDQ19ibG9jayhj Y3R4LCBjY3R4LT5LWCArIDE2LCBpbik7Ci0rICAgIGlmIChjY3R4LT5rZXlsZW4gIT0gMTYpCi0r ICAgICAgICBjdHJfQkNDX2Jsb2NrKGNjdHgsIGNjdHgtPktYICsgMzIsIGluKTsKLSt9Ci0rCi0r LyogSW5pdGlhbGlzZSBCQ0MgYmxvY2tzOiB0aGVzZSBoYXZlIHRoZSB2YWx1ZSAwLDEsMiBpbiBs ZWZ0bW9zdCBwb3NpdGlvbnM6Ci0rICogc2VlIDEwLjQuMiBzdGFnZSA3LgotKyAqLwotK3N0YXRp YyB2b2lkIGN0cl9CQ0NfaW5pdChEUkJHX0NUUl9DVFggKiBjY3R4KQotK3sKLSsgICAgbWVtc2V0 KGNjdHgtPktYLCAwLCA0OCk7Ci0rICAgIG1lbXNldChjY3R4LT5ibHRtcCwgMCwgMTYpOwotKyAg ICBjdHJfQkNDX2Jsb2NrKGNjdHgsIGNjdHgtPktYLCBjY3R4LT5ibHRtcCk7Ci0rICAgIGNjdHgt PmJsdG1wWzNdID0gMTsKLSsgICAgY3RyX0JDQ19ibG9jayhjY3R4LCBjY3R4LT5LWCArIDE2LCBj Y3R4LT5ibHRtcCk7Ci0rICAgIGlmIChjY3R4LT5rZXlsZW4gIT0gMTYpIHsKLSsgICAgICAgIGNj dHgtPmJsdG1wWzNdID0gMjsKLSsgICAgICAgIGN0cl9CQ0NfYmxvY2soY2N0eCwgY2N0eC0+S1gg KyAzMiwgY2N0eC0+Ymx0bXApOwotKyAgICB9Ci0rfQotKwotKy8qIFByb2Nlc3Mgc2V2ZXJhbCBi bG9ja3MgaW50byBCQ0MgYWxnb3JpdGhtLCBzb21lIHBvc3NpYmx5IHBhcnRpYWwgKi8KLStzdGF0 aWMgdm9pZCBjdHJfQkNDX3VwZGF0ZShEUkJHX0NUUl9DVFggKiBjY3R4LAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBzaXplX3QgaW5sZW4pCi0r ewotKyAgICBpZiAoIWluIHx8ICFpbmxlbikKLSsgICAgICAgIHJldHVybjsKLSsgICAgLyogSWYg d2UgaGF2ZSBwYXJ0aWFsIGJsb2NrIGhhbmRsZSBpdCBmaXJzdCAqLwotKyAgICBpZiAoY2N0eC0+ Ymx0bXBfcG9zKSB7Ci0rICAgICAgICBzaXplX3QgbGVmdCA9IDE2IC0gY2N0eC0+Ymx0bXBfcG9z OwotKyAgICAgICAgLyogSWYgd2Ugbm93IGhhdmUgYSBjb21wbGV0ZSBibG9jayBwcm9jZXNzIGl0 ICovCi0rICAgICAgICBpZiAoaW5sZW4gPj0gbGVmdCkgewotKyAgICAgICAgICAgIG1lbWNweShj Y3R4LT5ibHRtcCArIGNjdHgtPmJsdG1wX3BvcywgaW4sIGxlZnQpOwotKyAgICAgICAgICAgIGN0 cl9CQ0NfYmxvY2tzKGNjdHgsIGNjdHgtPmJsdG1wKTsKLSsgICAgICAgICAgICBjY3R4LT5ibHRt cF9wb3MgPSAwOwotKyAgICAgICAgICAgIGlubGVuIC09IGxlZnQ7Ci0rICAgICAgICAgICAgaW4g Kz0gbGVmdDsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgICAvKiBQcm9jZXNzIHplcm8gb3IgbW9y ZSBjb21wbGV0ZSBibG9ja3MgKi8KLSsgICAgd2hpbGUgKGlubGVuID49IDE2KSB7Ci0rICAgICAg ICBjdHJfQkNDX2Jsb2NrcyhjY3R4LCBpbik7Ci0rICAgICAgICBpbiArPSAxNjsKLSsgICAgICAg IGlubGVuIC09IDE2OwotKyAgICB9Ci0rICAgIC8qIENvcHkgYW55IHJlbWFpbmluZyBwYXJ0aWFs IGJsb2NrIHRvIHRoZSB0ZW1wb3JhcnkgYnVmZmVyICovCi0rICAgIGlmIChpbmxlbiA+IDApIHsK LSsgICAgICAgIG1lbWNweShjY3R4LT5ibHRtcCArIGNjdHgtPmJsdG1wX3BvcywgaW4sIGlubGVu KTsKLSsgICAgICAgIGNjdHgtPmJsdG1wX3BvcyArPSBpbmxlbjsKLSsgICAgfQotK30KLSsKLStz dGF0aWMgdm9pZCBjdHJfQkNDX2ZpbmFsKERSQkdfQ1RSX0NUWCAqIGNjdHgpCi0rewotKyAgICBp ZiAoY2N0eC0+Ymx0bXBfcG9zKSB7Ci0rICAgICAgICBtZW1zZXQoY2N0eC0+Ymx0bXAgKyBjY3R4 LT5ibHRtcF9wb3MsIDAsIDE2IC0gY2N0eC0+Ymx0bXBfcG9zKTsKLSsgICAgICAgIGN0cl9CQ0Nf YmxvY2tzKGNjdHgsIGNjdHgtPmJsdG1wKTsKLSsgICAgfQotK30KLSsKLStzdGF0aWMgdm9pZCBj dHJfZGYoRFJCR19DVFJfQ1RYICogY2N0eCwKLSsgICAgICAgICAgICAgICAgICAgY29uc3QgdW5z aWduZWQgY2hhciAqaW4xLCBzaXplX3QgaW4xbGVuLAotKyAgICAgICAgICAgICAgICAgICBjb25z dCB1bnNpZ25lZCBjaGFyICppbjIsIHNpemVfdCBpbjJsZW4sCi0rICAgICAgICAgICAgICAgICAg IGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluMywgc2l6ZV90IGluM2xlbikKLSt7Ci0rICAgIHNpemVf dCBpbmxlbjsKLSsgICAgdW5zaWduZWQgY2hhciAqcCA9IGNjdHgtPmJsdG1wOwotKyAgICBzdGF0 aWMgdW5zaWduZWQgY2hhciBjODAgPSAweDgwOwotKwotKyAgICBjdHJfQkNDX2luaXQoY2N0eCk7 Ci0rICAgIGlmICghaW4xKQotKyAgICAgICAgaW4xbGVuID0gMDsKLSsgICAgaWYgKCFpbjIpCi0r ICAgICAgICBpbjJsZW4gPSAwOwotKyAgICBpZiAoIWluMykKLSsgICAgICAgIGluM2xlbiA9IDA7 Ci0rICAgIGlubGVuID0gaW4xbGVuICsgaW4ybGVuICsgaW4zbGVuOwotKyAgICAvKiBJbml0aWFs aXNlIEx8fE4gaW4gdGVtcG9yYXJ5IGJsb2NrICovCi0rICAgICpwKysgPSAoaW5sZW4gPj4gMjQp ICYgMHhmZjsKLSsgICAgKnArKyA9IChpbmxlbiA+PiAxNikgJiAweGZmOwotKyAgICAqcCsrID0g KGlubGVuID4+IDgpICYgMHhmZjsKLSsgICAgKnArKyA9IGlubGVuICYgMHhmZjsKLSsgICAgLyog TkIga2V5bGVuIGlzIGF0IG1vc3QgMzIgYnl0ZXMgKi8KLSsgICAgKnArKyA9IDA7Ci0rICAgICpw KysgPSAwOwotKyAgICAqcCsrID0gMDsKLSsgICAgKnAgPSAodW5zaWduZWQgY2hhcikoKGNjdHgt PmtleWxlbiArIDE2KSAmIDB4ZmYpOwotKyAgICBjY3R4LT5ibHRtcF9wb3MgPSA4OwotKyAgICBj dHJfQkNDX3VwZGF0ZShjY3R4LCBpbjEsIGluMWxlbik7Ci0rICAgIGN0cl9CQ0NfdXBkYXRlKGNj dHgsIGluMiwgaW4ybGVuKTsKLSsgICAgY3RyX0JDQ191cGRhdGUoY2N0eCwgaW4zLCBpbjNsZW4p OwotKyAgICBjdHJfQkNDX3VwZGF0ZShjY3R4LCAmYzgwLCAxKTsKLSsgICAgY3RyX0JDQ19maW5h bChjY3R4KTsKLSsgICAgLyogU2V0IHVwIGtleSBLICovCi0rICAgIEFFU19zZXRfZW5jcnlwdF9r ZXkoY2N0eC0+S1gsIGNjdHgtPmtleWxlbiAqIDgsICZjY3R4LT5kZl9reGtzKTsKLSsgICAgLyog WCBmb2xsb3dzIGtleSBLICovCi0rICAgIEFFU19lbmNyeXB0KGNjdHgtPktYICsgY2N0eC0+a2V5 bGVuLCBjY3R4LT5LWCwgJmNjdHgtPmRmX2t4a3MpOwotKyAgICBBRVNfZW5jcnlwdChjY3R4LT5L WCwgY2N0eC0+S1ggKyAxNiwgJmNjdHgtPmRmX2t4a3MpOwotKyAgICBpZiAoY2N0eC0+a2V5bGVu ICE9IDE2KQotKyAgICAgICAgQUVTX2VuY3J5cHQoY2N0eC0+S1ggKyAxNiwgY2N0eC0+S1ggKyAz MiwgJmNjdHgtPmRmX2t4a3MpOwotKyNpZiAwCi0rICAgIGZwcmludGYoc3RkZXJyLCAiT3V0cHV0 IG9mIGN0cl9kZjpcbiIpOwotKyAgICBCSU9fZHVtcF9mcChzdGRlcnIsIGNjdHgtPktYLCBjY3R4 LT5rZXlsZW4gKyAxNik7Ci0rI2VuZGlmCi0rfQotKwotKy8qIE5CIHRoZSBuby1kZiAgVXBkYXRl IGluIFNQODAwLTkwIHNwZWNpZmllcyBhIGNvbnN0YW50IGlucHV0IGxlbmd0aAotKyAqIG9mIHNl ZWRsZW4sIGhvd2V2ZXIgb3RoZXIgdXNlcyBvZiB0aGlzIGFsZ29yaXRobSBwYWQgdGhlIGlucHV0 IHdpdGgKLSsgKiB6ZXJvZXMgaWYgbmVjZXNzYXJ5IGFuZCBoYXZlIHVwIHRvIHR3byBwYXJhbWV0 ZXJzIFhPUmVkIHRvZ2V0aGVyLAotKyAqIGhhbmRsZSBib3RoIGNhc2VzIGluIHRoaXMgZnVuY3Rp b24gaW5zdGVhZC4KLSsgKi8KLSsKLStzdGF0aWMgdm9pZCBjdHJfVXBkYXRlKERSQkdfQ1RYICpk Y3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4xLCBz aXplX3QgaW4xbGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hh ciAqaW4yLCBzaXplX3QgaW4ybGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5z aWduZWQgY2hhciAqbm9uY2UsIHNpemVfdCBub25jZWxlbikKLSt7Ci0rICAgIERSQkdfQ1RSX0NU WCAqY2N0eCA9ICZkY3R4LT5kLmN0cjsKLSsgICAgLyoga3MgaXMgYWxyZWFkeSBzZXR1cCBmb3Ig Y29ycmVjdCBrZXkgKi8KLSsgICAgaW5jXzEyOChjY3R4KTsKLSsgICAgQUVTX2VuY3J5cHQoY2N0 eC0+ViwgY2N0eC0+SywgJmNjdHgtPmtzKTsKLSsgICAgLyogSWYga2V5bGVuIGxvbmdlciB0aGFu IDEyOCBiaXRzIG5lZWQgZXh0cmEgZW5jcnlwdCAqLwotKyAgICBpZiAoY2N0eC0+a2V5bGVuICE9 IDE2KSB7Ci0rICAgICAgICBpbmNfMTI4KGNjdHgpOwotKyAgICAgICAgQUVTX2VuY3J5cHQoY2N0 eC0+ViwgY2N0eC0+SyArIDE2LCAmY2N0eC0+a3MpOwotKyAgICB9Ci0rICAgIGluY18xMjgoY2N0 eCk7Ci0rICAgIEFFU19lbmNyeXB0KGNjdHgtPlYsIGNjdHgtPlYsICZjY3R4LT5rcyk7Ci0rICAg IC8qIElmIDE5MiBiaXQga2V5IHBhcnQgb2YgViBpcyBvbiBlbmQgb2YgSyAqLwotKyAgICBpZiAo Y2N0eC0+a2V5bGVuID09IDI0KSB7Ci0rICAgICAgICBtZW1jcHkoY2N0eC0+ViArIDgsIGNjdHgt PlYsIDgpOwotKyAgICAgICAgbWVtY3B5KGNjdHgtPlYsIGNjdHgtPksgKyAyNCwgOCk7Ci0rICAg IH0KLSsKLSsgICAgaWYgKGRjdHgtPnhmbGFncyAmIERSQkdfRkxBR19DVFJfVVNFX0RGKSB7Ci0r ICAgICAgICAvKiBJZiBubyBpbnB1dCByZXVzZSBleGlzdGluZyBkZXJpdmVkIHZhbHVlICovCi0r ICAgICAgICBpZiAoaW4xIHx8IG5vbmNlIHx8IGluMikKLSsgICAgICAgICAgICBjdHJfZGYoY2N0 eCwgaW4xLCBpbjFsZW4sIG5vbmNlLCBub25jZWxlbiwgaW4yLCBpbjJsZW4pOwotKyAgICAgICAg LyogSWYgdGhpcyBhIHJldXNlIGlucHV0IGluMWxlbiAhPSAwICovCi0rICAgICAgICBpZiAoaW4x bGVuKQotKyAgICAgICAgICAgIGN0cl9YT1IoY2N0eCwgY2N0eC0+S1gsIGRjdHgtPnNlZWRsZW4p OwotKyAgICB9IGVsc2UgewotKyAgICAgICAgY3RyX1hPUihjY3R4LCBpbjEsIGluMWxlbik7Ci0r ICAgICAgICBjdHJfWE9SKGNjdHgsIGluMiwgaW4ybGVuKTsKLSsgICAgfQotKwotKyAgICBBRVNf c2V0X2VuY3J5cHRfa2V5KGNjdHgtPkssIGRjdHgtPnN0cmVuZ3RoLCAmY2N0eC0+a3MpOwotKyNp ZiAwCi0rICAgIGZwcmludGYoc3RkZXJyLCAiSytWIGFmdGVyIHVwZGF0ZSBpczpcbiIpOwotKyAg ICBCSU9fZHVtcF9mcChzdGRlcnIsIGNjdHgtPkssIGNjdHgtPmtleWxlbik7Ci0rICAgIEJJT19k dW1wX2ZwKHN0ZGVyciwgY2N0eC0+ViwgMTYpOwotKyNlbmRpZgotK30KLSsKLStzdGF0aWMgaW50 IGRyYmdfY3RyX2luc3RhbnRpYXRlKERSQkdfQ1RYICpkY3R4LAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50LCBzaXplX3QgZW50bGVuLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqbm9u Y2UsIHNpemVfdCBub25jZWxlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHVuc2lnbmVkIGNoYXIgKnBlcnMsIHNpemVfdCBwZXJzbGVuKQotK3sKLSsgICAgRFJCR19D VFJfQ1RYICpjY3R4ID0gJmRjdHgtPmQuY3RyOwotKyAgICBtZW1zZXQoY2N0eC0+SywgMCwgc2l6 ZW9mKGNjdHgtPkspKTsKLSsgICAgbWVtc2V0KGNjdHgtPlYsIDAsIHNpemVvZihjY3R4LT5WKSk7 Ci0rICAgIEFFU19zZXRfZW5jcnlwdF9rZXkoY2N0eC0+SywgZGN0eC0+c3RyZW5ndGgsICZjY3R4 LT5rcyk7Ci0rICAgIGN0cl9VcGRhdGUoZGN0eCwgZW50LCBlbnRsZW4sIHBlcnMsIHBlcnNsZW4s IG5vbmNlLCBub25jZWxlbik7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLStzdGF0aWMgaW50IGRy YmdfY3RyX3Jlc2VlZChEUkJHX0NUWCAqZGN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCB1bnNpZ25lZCBjaGFyICplbnQsIHNpemVfdCBlbnRsZW4sCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbiwgc2l6ZV90IGFkaW5sZW4p Ci0rewotKyAgICBjdHJfVXBkYXRlKGRjdHgsIGVudCwgZW50bGVuLCBhZGluLCBhZGlubGVuLCBO VUxMLCAwKTsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBpbnQgZHJiZ19jdHJfZ2Vu ZXJhdGUoRFJCR19DVFggKmRjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGluLCBzaXplX3QgYWRpbmxlbikKLSt7Ci0rICAg IERSQkdfQ1RSX0NUWCAqY2N0eCA9ICZkY3R4LT5kLmN0cjsKLSsgICAgaWYgKGFkaW4gJiYgYWRp bmxlbikgewotKyAgICAgICAgY3RyX1VwZGF0ZShkY3R4LCBhZGluLCBhZGlubGVuLCBOVUxMLCAw LCBOVUxMLCAwKTsKLSsgICAgICAgIC8qIFRoaXMgbWVhbnMgd2UgcmV1c2UgZGVyaXZlZCB2YWx1 ZSAqLwotKyAgICAgICAgaWYgKGRjdHgtPnhmbGFncyAmIERSQkdfRkxBR19DVFJfVVNFX0RGKSB7 Ci0rICAgICAgICAgICAgYWRpbiA9IE5VTEw7Ci0rICAgICAgICAgICAgYWRpbmxlbiA9IDE7Ci0r ICAgICAgICB9Ci0rICAgIH0gZWxzZQotKyAgICAgICAgYWRpbmxlbiA9IDA7Ci0rCi0rICAgIGZv ciAoOzspIHsKLSsgICAgICAgIGluY18xMjgoY2N0eCk7Ci0rICAgICAgICBpZiAoIShkY3R4LT54 ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCkgJiYgIWRjdHgtPmxiX3ZhbGlkKSB7Ci0rICAgICAgICAg ICAgQUVTX2VuY3J5cHQoY2N0eC0+ViwgZGN0eC0+bGIsICZjY3R4LT5rcyk7Ci0rICAgICAgICAg ICAgZGN0eC0+bGJfdmFsaWQgPSAxOwotKyAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAg fQotKyAgICAgICAgaWYgKG91dGxlbiA8IDE2KSB7Ci0rICAgICAgICAgICAgLyogVXNlIEsgYXMg dGVtcCBzcGFjZSBhcyBpdCB3aWxsIGJlIHVwZGF0ZWQgKi8KLSsgICAgICAgICAgICBBRVNfZW5j cnlwdChjY3R4LT5WLCBjY3R4LT5LLCAmY2N0eC0+a3MpOwotKyAgICAgICAgICAgIGlmICghZmlw c19kcmJnX2Nwcm5nX3Rlc3QoZGN0eCwgY2N0eC0+SykpCi0rICAgICAgICAgICAgICAgIHJldHVy biAwOwotKyAgICAgICAgICAgIG1lbWNweShvdXQsIGNjdHgtPkssIG91dGxlbik7Ci0rICAgICAg ICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rICAgICAgICBBRVNfZW5jcnlwdChjY3R4LT5WLCBv dXQsICZjY3R4LT5rcyk7Ci0rICAgICAgICBpZiAoIWZpcHNfZHJiZ19jcHJuZ190ZXN0KGRjdHgs IG91dCkpCi0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICBvdXQgKz0gMTY7Ci0rICAg ICAgICBvdXRsZW4gLT0gMTY7Ci0rICAgICAgICBpZiAob3V0bGVuID09IDApCi0rICAgICAgICAg ICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICAgY3RyX1VwZGF0ZShkY3R4LCBhZGluLCBhZGlubGVu LCBOVUxMLCAwLCBOVUxMLCAwKTsKLSsKLSsgICAgcmV0dXJuIDE7Ci0rCi0rfQotKwotK3N0YXRp YyBpbnQgZHJiZ19jdHJfdW5pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0eCkKLSt7Ci0rICAgIG1l bXNldCgmZGN0eC0+ZC5jdHIsIDAsIHNpemVvZihEUkJHX0NUUl9DVFgpKTsKLSsgICAgcmV0dXJu IDE7Ci0rfQotKwotK2ludCBmaXBzX2RyYmdfY3RyX2luaXQoRFJCR19DVFggKmRjdHgpCi0rewot KyAgICBEUkJHX0NUUl9DVFggKmNjdHggPSAmZGN0eC0+ZC5jdHI7Ci0rCi0rICAgIHNpemVfdCBr ZXlsZW47Ci0rCi0rICAgIHN3aXRjaCAoZGN0eC0+dHlwZSkgewotKyAgICBjYXNlIE5JRF9hZXNf MTI4X2N0cjoKLSsgICAgICAgIGtleWxlbiA9IDE2OwotKyAgICAgICAgYnJlYWs7Ci0rCi0rICAg IGNhc2UgTklEX2Flc18xOTJfY3RyOgotKyAgICAgICAga2V5bGVuID0gMjQ7Ci0rICAgICAgICBi cmVhazsKLSsKLSsgICAgY2FzZSBOSURfYWVzXzI1Nl9jdHI6Ci0rICAgICAgICBrZXlsZW4gPSAz MjsKLSsgICAgICAgIGJyZWFrOwotKwotKyAgICBkZWZhdWx0OgotKyAgICAgICAgcmV0dXJuIC0y OwotKyAgICB9Ci0rCi0rICAgIGRjdHgtPmluc3RhbnRpYXRlID0gZHJiZ19jdHJfaW5zdGFudGlh dGU7Ci0rICAgIGRjdHgtPnJlc2VlZCA9IGRyYmdfY3RyX3Jlc2VlZDsKLSsgICAgZGN0eC0+Z2Vu ZXJhdGUgPSBkcmJnX2N0cl9nZW5lcmF0ZTsKLSsgICAgZGN0eC0+dW5pbnN0YW50aWF0ZSA9IGRy YmdfY3RyX3VuaW5zdGFudGlhdGU7Ci0rCi0rICAgIGNjdHgtPmtleWxlbiA9IGtleWxlbjsKLSsg ICAgZGN0eC0+c3RyZW5ndGggPSBrZXlsZW4gKiA4OwotKyAgICBkY3R4LT5ibG9ja2xlbmd0aCA9 IDE2OwotKyAgICBkY3R4LT5zZWVkbGVuID0ga2V5bGVuICsgMTY7Ci0rCi0rICAgIGlmIChkY3R4 LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfQ1RSX1VTRV9ERikgewotKyAgICAgICAgLyogZGYgaW5pdGlh bGlzYXRpb24gKi8KLSsgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGRmX2tleVszMl0gPSB7 Ci0rICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwg MHgwNywKLSsgICAgICAgICAgICAweDA4LCAweDA5LCAweDBhLCAweDBiLCAweDBjLCAweDBkLCAw eDBlLCAweDBmLAotKyAgICAgICAgICAgIDB4MTAsIDB4MTEsIDB4MTIsIDB4MTMsIDB4MTQsIDB4 MTUsIDB4MTYsIDB4MTcsCi0rICAgICAgICAgICAgMHgxOCwgMHgxOSwgMHgxYSwgMHgxYiwgMHgx YywgMHgxZCwgMHgxZSwgMHgxZgotKyAgICAgICAgfTsKLSsgICAgICAgIC8qIFNldCBrZXkgc2No ZWR1bGUgZm9yIGRmX2tleSAqLwotKyAgICAgICAgQUVTX3NldF9lbmNyeXB0X2tleShkZl9rZXks IGRjdHgtPnN0cmVuZ3RoLCAmY2N0eC0+ZGZfa3MpOwotKwotKyAgICAgICAgZGN0eC0+bWluX2Vu dHJvcHkgPSBjY3R4LT5rZXlsZW47Ci0rICAgICAgICBkY3R4LT5tYXhfZW50cm9weSA9IERSQkdf TUFYX0xFTkdUSDsKLSsgICAgICAgIGRjdHgtPm1pbl9ub25jZSA9IGRjdHgtPm1pbl9lbnRyb3B5 IC8gMjsKLSsgICAgICAgIGRjdHgtPm1heF9ub25jZSA9IERSQkdfTUFYX0xFTkdUSDsKLSsgICAg ICAgIGRjdHgtPm1heF9wZXJzID0gRFJCR19NQVhfTEVOR1RIOwotKyAgICAgICAgZGN0eC0+bWF4 X2FkaW4gPSBEUkJHX01BWF9MRU5HVEg7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBkY3R4LT5t aW5fZW50cm9weSA9IGRjdHgtPnNlZWRsZW47Ci0rICAgICAgICBkY3R4LT5tYXhfZW50cm9weSA9 IGRjdHgtPnNlZWRsZW47Ci0rICAgICAgICAvKiBOb25jZSBub3QgdXNlZCAqLwotKyAgICAgICAg ZGN0eC0+bWluX25vbmNlID0gMDsKLSsgICAgICAgIGRjdHgtPm1heF9ub25jZSA9IDA7Ci0rICAg ICAgICBkY3R4LT5tYXhfcGVycyA9IGRjdHgtPnNlZWRsZW47Ci0rICAgICAgICBkY3R4LT5tYXhf YWRpbiA9IGRjdHgtPnNlZWRsZW47Ci0rICAgIH0KLSsKLSsgICAgZGN0eC0+bWF4X3JlcXVlc3Qg PSAxIDw8IDE2OwotKyAgICBkY3R4LT5yZXNlZWRfaW50ZXJ2YWwgPSAxIDw8IDI0OwotKwotKyAg ICByZXR1cm4gMTsKLSt9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBz X2RyYmdfaGFzaC5jLmZpcHMgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2hh c2guYwotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19oYXNoLmMuZmlw cwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxNDIyMDkyOCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJp L2NyeXB0by9maXBzL2ZpcHNfZHJiZ19oYXNoLmMJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMTQyMjA5 MjggKzAyMDAKLUBAIC0wLDAgKzEsMzU4IEBACi0rLyogZmlwcy9yYW5kL2ZpcHNfZHJiZ19oYXNo LmMgKi8KLSsvKiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5zc2wu b3JnKSBmb3IgdGhlIE9wZW5TU0wKLSsgKiBwcm9qZWN0LgotKyAqLwotKy8qID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0rICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRz IHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1l dDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJp YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0 Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAq IDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ug b2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25v d2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxv cGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NM IFRvb2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFt ZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVz ZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo aXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9y IHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBsaWNlbnNpbmdAT3Bl blNTTC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2Fy ZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBh cHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlz c2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25z IG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAg IGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUg ZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBP cGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAqIFRISVMg U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5E IEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVND TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElU UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF TlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo SU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1Qg TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0r ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW RU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsg KiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotKyAqLwotKwotKyNkZWZpbmUgT1BFTlNTTF9GSVBTQVBJCi0rCi0rI2lu Y2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8b3BlbnNz bC9jcnlwdG8uaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2luY2x1ZGUgPG9wZW5z c2wvZmlwc19yYW5kLmg+Ci0rI2luY2x1ZGUgImZpcHNfcmFuZF9sY2wuaCIKLSsKLSsvKiBUaGlz IGlzIEhhc2hfZGYgZnJvbSBTUCA4MDAtOTAgMTAuNC4xICovCi0rCi0rc3RhdGljIGludCBoYXNo X2RmKERSQkdfQ1RYICpkY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsCi0rICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluMSwgc2l6ZV90IGluMWxlbiwKLSsgICAgICAgICAg ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4yLCBzaXplX3QgaW4ybGVuLAotKyAgICAg ICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbjMsIHNpemVfdCBpbjNsZW4sCi0r ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluNCwgc2l6ZV90IGluNGxl bikKLSt7Ci0rICAgIEVWUF9NRF9DVFggKm1jdHggPSAmZGN0eC0+ZC5oYXNoLm1jdHg7Ci0rICAg IHVuc2lnbmVkIGNoYXIgKnZ0bXAgPSBkY3R4LT5kLmhhc2gudnRtcDsKLSsgICAgdW5zaWduZWQg Y2hhciB0bXBbNl07Ci0rICAgIC8qIFN0YW5kYXJkIG9ubHkgZXZlciBuZWVkcyBzZWVkbGVuIGJ5 dGVzIHdoaWNoIGlzIGFsd2F5cyBsZXNzIHRoYW4KLSsgICAgICogbWF4aW11bSBwZXJtaXR0ZWQg c28gbm8gbmVlZCB0byBjaGVjayBsZW5ndGguCi0rICAgICAqLwotKyAgICBzaXplX3Qgb3V0bGVu ID0gZGN0eC0+c2VlZGxlbjsKLSsgICAgdG1wWzBdID0gMTsKLSsgICAgdG1wWzFdID0gKChvdXRs ZW4gKiA4KSA+PiAyNCkgJiAweGZmOwotKyAgICB0bXBbMl0gPSAoKG91dGxlbiAqIDgpID4+IDE2 KSAmIDB4ZmY7Ci0rICAgIHRtcFszXSA9ICgob3V0bGVuICogOCkgPj4gOCkgJiAweGZmOwotKyAg ICB0bXBbNF0gPSAob3V0bGVuICogOCkgJiAweGZmOwotKyAgICBpZiAoIWluMSkgewotKyAgICAg ICAgdG1wWzVdID0gKHVuc2lnbmVkIGNoYXIpaW4xbGVuOwotKyAgICAgICAgaW4xID0gdG1wICsg NTsKLSsgICAgICAgIGluMWxlbiA9IDE7Ci0rICAgIH0KLSsgICAgZm9yICg7OykgewotKyAgICAg ICAgaWYgKCFGSVBTX2RpZ2VzdGluaXQobWN0eCwgZGN0eC0+ZC5oYXNoLm1kKSkKLSsgICAgICAg ICAgICByZXR1cm4gMDsKLSsgICAgICAgIGlmICghRklQU19kaWdlc3R1cGRhdGUobWN0eCwgdG1w LCA1KSkKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgIGlmIChpbjEgJiYgIUZJUFNf ZGlnZXN0dXBkYXRlKG1jdHgsIGluMSwgaW4xbGVuKSkKLSsgICAgICAgICAgICByZXR1cm4gMDsK LSsgICAgICAgIGlmIChpbjIgJiYgIUZJUFNfZGlnZXN0dXBkYXRlKG1jdHgsIGluMiwgaW4ybGVu KSkKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgIGlmIChpbjMgJiYgIUZJUFNfZGln ZXN0dXBkYXRlKG1jdHgsIGluMywgaW4zbGVuKSkKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsg ICAgICAgIGlmIChpbjQgJiYgIUZJUFNfZGlnZXN0dXBkYXRlKG1jdHgsIGluNCwgaW40bGVuKSkK LSsgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgIGlmIChvdXRsZW4gPCBkY3R4LT5ibG9j a2xlbmd0aCkgewotKyAgICAgICAgICAgIGlmICghRklQU19kaWdlc3RmaW5hbChtY3R4LCB2dG1w LCBOVUxMKSkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgbWVtY3B5 KG91dCwgdnRtcCwgb3V0bGVuKTsKLSsgICAgICAgICAgICBPUEVOU1NMX2NsZWFuc2UodnRtcCwg ZGN0eC0+YmxvY2tsZW5ndGgpOwotKyAgICAgICAgICAgIHJldHVybiAxOwotKyAgICAgICAgfSBl bHNlIGlmICghRklQU19kaWdlc3RmaW5hbChtY3R4LCBvdXQsIE5VTEwpKQotKyAgICAgICAgICAg IHJldHVybiAwOwotKwotKyAgICAgICAgb3V0bGVuIC09IGRjdHgtPmJsb2NrbGVuZ3RoOwotKyAg ICAgICAgaWYgKG91dGxlbiA9PSAwKQotKyAgICAgICAgICAgIHJldHVybiAxOwotKyAgICAgICAg dG1wWzBdKys7Ci0rICAgICAgICBvdXQgKz0gZGN0eC0+YmxvY2tsZW5ndGg7Ci0rICAgIH0KLSt9 Ci0rCi0rLyogQWRkIGFuIHVuc2lnbmVkIGJ1ZmZlciB0byB0aGUgYnVmIHZhbHVlLCBzdG9yaW5n IHRoZSByZXN1bHQgaW4gYnVmLiBGb3IKLSsgKiB0aGlzIGFsZ29yaXRobSB0aGUgbGVuZ3RoIG9m IGlucHV0IG5ldmVyIGV4Y2VlZHMgdGhlIHNlZWQgbGVuZ3RoLgotKyAqLwotKwotK3N0YXRpYyB2 b2lkIGN0eF9hZGRfYnVmKERSQkdfQ1RYICpkY3R4LCB1bnNpZ25lZCBjaGFyICpidWYsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmxlbikKLSt7 Ci0rICAgIHNpemVfdCBpID0gaW5sZW47Ci0rICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnE7Ci0r ICAgIHVuc2lnbmVkIGNoYXIgYywgKnA7Ci0rICAgIHAgPSBidWYgKyBkY3R4LT5zZWVkbGVuOwot KyAgICBxID0gaW4gKyBpbmxlbjsKLSsKLSsgICAgT1BFTlNTTF9hc3NlcnQoaSA8PSBkY3R4LT5z ZWVkbGVuKTsKLSsKLSsgICAgLyogU3BlY2lhbCBjYXNlOiB6ZXJvIGxlbmd0aCwganVzdCBpbmNy ZW1lbnQgYnVmZmVyICovCi0rICAgIGlmIChpKQotKyAgICAgICAgYyA9IDA7Ci0rICAgIGVsc2UK LSsgICAgICAgIGMgPSAxOwotKwotKyAgICB3aGlsZSAoaSkgewotKyAgICAgICAgaW50IHI7Ci0r ICAgICAgICBwLS07Ci0rICAgICAgICBxLS07Ci0rICAgICAgICByID0gKnAgKyAqcSArIGM7Ci0r ICAgICAgICAvKiBDYXJyeSAqLwotKyAgICAgICAgaWYgKHIgPiAweGZmKQotKyAgICAgICAgICAg IGMgPSAxOwotKyAgICAgICAgZWxzZQotKyAgICAgICAgICAgIGMgPSAwOwotKyAgICAgICAgKnAg PSByICYgMHhmZjsKLSsgICAgICAgIGktLTsKLSsgICAgfQotKwotKyAgICBpID0gZGN0eC0+c2Vl ZGxlbiAtIGlubGVuOwotKwotKyAgICAvKiBJZiBub3QgYWRkaW5nIHdob2xlIGJ1ZmZlciBoYW5k bGUgZmluYWwgY2FycmllcyAqLwotKyAgICBpZiAoYyAmJiBpKSB7Ci0rICAgICAgICBkbyB7Ci0r ICAgICAgICAgICAgcC0tOwotKyAgICAgICAgICAgIGMgPSAqcDsKLSsgICAgICAgICAgICBjKys7 Ci0rICAgICAgICAgICAgKnAgPSBjOwotKyAgICAgICAgICAgIGlmIChjKQotKyAgICAgICAgICAg ICAgICByZXR1cm47Ci0rICAgICAgICB9IHdoaWxlIChpLS0pOwotKyAgICB9Ci0rfQotKwotKy8q IEZpbmFsaXNlIGFuZCBhZGQgaGFzaCB0byBWICovCi0rCi0rc3RhdGljIGludCBjdHhfYWRkX21k KERSQkdfQ1RYICpkY3R4KQotK3sKLSsgICAgaWYgKCFGSVBTX2RpZ2VzdGZpbmFsKCZkY3R4LT5k Lmhhc2gubWN0eCwgZGN0eC0+ZC5oYXNoLnZ0bXAsIE5VTEwpKQotKyAgICAgICAgcmV0dXJuIDA7 Ci0rICAgIGN0eF9hZGRfYnVmKGRjdHgsIGRjdHgtPmQuaGFzaC5WLCBkY3R4LT5kLmhhc2gudnRt cCwgZGN0eC0+YmxvY2tsZW5ndGgpOwotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0rc3RhdGljIGlu dCBoYXNoX2dlbihEUkJHX0NUWCAqZGN0eCwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb3V0 bGVuKQotK3sKLSsgICAgRFJCR19IQVNIX0NUWCAqaGN0eCA9ICZkY3R4LT5kLmhhc2g7Ci0rICAg IGlmIChvdXRsZW4gPT0gMCkKLSsgICAgICAgIHJldHVybiAxOwotKyAgICBtZW1jcHkoaGN0eC0+ dnRtcCwgaGN0eC0+ViwgZGN0eC0+c2VlZGxlbik7Ci0rICAgIGZvciAoOzspIHsKLSsgICAgICAg IEZJUFNfZGlnZXN0aW5pdCgmaGN0eC0+bWN0eCwgaGN0eC0+bWQpOwotKyAgICAgICAgRklQU19k aWdlc3R1cGRhdGUoJmhjdHgtPm1jdHgsIGhjdHgtPnZ0bXAsIGRjdHgtPnNlZWRsZW4pOwotKyAg ICAgICAgaWYgKCEoZGN0eC0+eGZsYWdzICYgRFJCR19GTEFHX1RFU1QpICYmICFkY3R4LT5sYl92 YWxpZCkgewotKyAgICAgICAgICAgIEZJUFNfZGlnZXN0ZmluYWwoJmhjdHgtPm1jdHgsIGRjdHgt PmxiLCBOVUxMKTsKLSsgICAgICAgICAgICBkY3R4LT5sYl92YWxpZCA9IDE7Ci0rICAgICAgICB9 IGVsc2UgaWYgKG91dGxlbiA8IGRjdHgtPmJsb2NrbGVuZ3RoKSB7Ci0rICAgICAgICAgICAgRklQ U19kaWdlc3RmaW5hbCgmaGN0eC0+bWN0eCwgaGN0eC0+dnRtcCwgTlVMTCk7Ci0rICAgICAgICAg ICAgaWYgKCFmaXBzX2RyYmdfY3BybmdfdGVzdChkY3R4LCBoY3R4LT52dG1wKSkKLSsgICAgICAg ICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgbWVtY3B5KG91dCwgaGN0eC0+dnRtcCwg b3V0bGVuKTsKLSsgICAgICAgICAgICByZXR1cm4gMTsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAg ICAgICAgICAgRklQU19kaWdlc3RmaW5hbCgmaGN0eC0+bWN0eCwgb3V0LCBOVUxMKTsKLSsgICAg ICAgICAgICBpZiAoIWZpcHNfZHJiZ19jcHJuZ190ZXN0KGRjdHgsIG91dCkpCi0rICAgICAgICAg ICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgIG91dGxlbiAtPSBkY3R4LT5ibG9ja2xlbmd0 aDsKLSsgICAgICAgICAgICBpZiAob3V0bGVuID09IDApCi0rICAgICAgICAgICAgICAgIHJldHVy biAxOwotKyAgICAgICAgICAgIG91dCArPSBkY3R4LT5ibG9ja2xlbmd0aDsKLSsgICAgICAgIH0K LSsgICAgICAgIGN0eF9hZGRfYnVmKGRjdHgsIGhjdHgtPnZ0bXAsIE5VTEwsIDApOwotKyAgICB9 Ci0rfQotKwotK3N0YXRpYyBpbnQgZHJiZ19oYXNoX2luc3RhbnRpYXRlKERSQkdfQ1RYICpkY3R4 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg KmVudCwgc2l6ZV90IGVudF9sZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgdW5zaWduZWQgY2hhciAqbm9uY2UsIHNpemVfdCBub25jZV9sZW4sCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcHN0ciwgc2l6ZV90 IHBzdHJfbGVuKQotK3sKLSsgICAgRFJCR19IQVNIX0NUWCAqaGN0eCA9ICZkY3R4LT5kLmhhc2g7 Ci0rICAgIGlmICghaGFzaF9kZihkY3R4LCBoY3R4LT5WLAotKyAgICAgICAgICAgICAgICAgZW50 LCBlbnRfbGVuLCBub25jZSwgbm9uY2VfbGVuLCBwc3RyLCBwc3RyX2xlbiwgTlVMTCwgMCkpCi0r ICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYgKCFoYXNoX2RmKGRjdHgsIGhjdHgtPkMsCi0rICAg ICAgICAgICAgICAgICBOVUxMLCAwLCBoY3R4LT5WLCBkY3R4LT5zZWVkbGVuLCBOVUxMLCAwLCBO VUxMLCAwKSkKLSsgICAgICAgIHJldHVybiAwOwotKwotKyNpZmRlZiBIQVNIX0RSQkdfVFJBQ0UK LSsgICAgZnByaW50ZihzdGRlcnIsICJWK0MgYWZ0ZXIgaW5zdGFudGlhdGU6XG4iKTsKLSsgICAg aGV4cHJpbnQoc3RkZXJyLCBoY3R4LT5WLCBkY3R4LT5zZWVkbGVuKTsKLSsgICAgaGV4cHJpbnQo c3RkZXJyLCBoY3R4LT5DLCBkY3R4LT5zZWVkbGVuKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIDE7 Ci0rfQotKwotK3N0YXRpYyBpbnQgZHJiZ19oYXNoX3Jlc2VlZChEUkJHX0NUWCAqZGN0eCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50LCBzaXpl X3QgZW50X2xlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQg Y2hhciAqYWRpbiwgc2l6ZV90IGFkaW5fbGVuKQotK3sKLSsgICAgRFJCR19IQVNIX0NUWCAqaGN0 eCA9ICZkY3R4LT5kLmhhc2g7Ci0rICAgIC8qIFYgYWJvdXQgdG8gYmUgdXBkYXRlZCBzbyB1c2Ug QyBhcyBvdXRwdXQgaW5zdGVhZCAqLwotKyAgICBpZiAoIWhhc2hfZGYoZGN0eCwgaGN0eC0+QywK LSsgICAgICAgICAgICAgICAgIE5VTEwsIDEsIGhjdHgtPlYsIGRjdHgtPnNlZWRsZW4sCi0rICAg ICAgICAgICAgICAgICBlbnQsIGVudF9sZW4sIGFkaW4sIGFkaW5fbGVuKSkKLSsgICAgICAgIHJl dHVybiAwOwotKyAgICBtZW1jcHkoaGN0eC0+ViwgaGN0eC0+QywgZGN0eC0+c2VlZGxlbik7Ci0r ICAgIGlmICghaGFzaF9kZihkY3R4LCBoY3R4LT5DLCBOVUxMLCAwLAotKyAgICAgICAgICAgICAg ICAgaGN0eC0+ViwgZGN0eC0+c2VlZGxlbiwgTlVMTCwgMCwgTlVMTCwgMCkpCi0rICAgICAgICBy ZXR1cm4gMDsKLSsjaWZkZWYgSEFTSF9EUkJHX1RSQUNFCi0rICAgIGZwcmludGYoc3RkZXJyLCAi VitDIGFmdGVyIHJlc2VlZDpcbiIpOwotKyAgICBoZXhwcmludChzdGRlcnIsIGhjdHgtPlYsIGRj dHgtPnNlZWRsZW4pOwotKyAgICBoZXhwcmludChzdGRlcnIsIGhjdHgtPkMsIGRjdHgtPnNlZWRs ZW4pOwotKyNlbmRpZgotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0rc3RhdGljIGludCBkcmJnX2hh c2hfZ2VuZXJhdGUoRFJCR19DVFggKmRjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb3V0bGVuLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4sIHNpemVfdCBhZGluX2xlbikK LSt7Ci0rICAgIERSQkdfSEFTSF9DVFggKmhjdHggPSAmZGN0eC0+ZC5oYXNoOwotKyAgICBFVlBf TURfQ1RYICptY3R4ID0gJmhjdHgtPm1jdHg7Ci0rICAgIHVuc2lnbmVkIGNoYXIgdG1wWzRdOwot KyAgICBpZiAoYWRpbiAmJiBhZGluX2xlbikgewotKyAgICAgICAgdG1wWzBdID0gMjsKLSsgICAg ICAgIGlmICghRklQU19kaWdlc3Rpbml0KG1jdHgsIGhjdHgtPm1kKSkKLSsgICAgICAgICAgICBy ZXR1cm4gMDsKLSsgICAgICAgIGlmICghRVZQX0RpZ2VzdFVwZGF0ZShtY3R4LCB0bXAsIDEpKQot KyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgaWYgKCFFVlBfRGlnZXN0VXBkYXRlKG1j dHgsIGhjdHgtPlYsIGRjdHgtPnNlZWRsZW4pKQotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAg ICAgICAgaWYgKCFFVlBfRGlnZXN0VXBkYXRlKG1jdHgsIGFkaW4sIGFkaW5fbGVuKSkKLSsgICAg ICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgIGlmICghY3R4X2FkZF9tZChkY3R4KSkKLSsgICAg ICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKyAgICBpZiAoIWhhc2hfZ2VuKGRjdHgsIG91dCwg b3V0bGVuKSkKLSsgICAgICAgIHJldHVybiAwOwotKwotKyAgICB0bXBbMF0gPSAzOwotKyAgICBp ZiAoIUZJUFNfZGlnZXN0aW5pdChtY3R4LCBoY3R4LT5tZCkpCi0rICAgICAgICByZXR1cm4gMDsK LSsgICAgaWYgKCFFVlBfRGlnZXN0VXBkYXRlKG1jdHgsIHRtcCwgMSkpCi0rICAgICAgICByZXR1 cm4gMDsKLSsgICAgaWYgKCFFVlBfRGlnZXN0VXBkYXRlKG1jdHgsIGhjdHgtPlYsIGRjdHgtPnNl ZWRsZW4pKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rCi0rICAgIGlmICghY3R4X2FkZF9tZChkY3R4 KSkKLSsgICAgICAgIHJldHVybiAwOwotKwotKyAgICBjdHhfYWRkX2J1ZihkY3R4LCBoY3R4LT5W LCBoY3R4LT5DLCBkY3R4LT5zZWVkbGVuKTsKLSsKLSsgICAgdG1wWzBdID0gKGRjdHgtPnJlc2Vl ZF9jb3VudGVyID4+IDI0KSAmIDB4ZmY7Ci0rICAgIHRtcFsxXSA9IChkY3R4LT5yZXNlZWRfY291 bnRlciA+PiAxNikgJiAweGZmOwotKyAgICB0bXBbMl0gPSAoZGN0eC0+cmVzZWVkX2NvdW50ZXIg Pj4gOCkgJiAweGZmOwotKyAgICB0bXBbM10gPSBkY3R4LT5yZXNlZWRfY291bnRlciAmIDB4ZmY7 Ci0rICAgIGN0eF9hZGRfYnVmKGRjdHgsIGhjdHgtPlYsIHRtcCwgNCk7Ci0rI2lmZGVmIEhBU0hf RFJCR19UUkFDRQotKyAgICBmcHJpbnRmKHN0ZGVyciwgIlYrQyBhZnRlciBnZW5lcmF0ZTpcbiIp OwotKyAgICBoZXhwcmludChzdGRlcnIsIGhjdHgtPlYsIGRjdHgtPnNlZWRsZW4pOwotKyAgICBo ZXhwcmludChzdGRlcnIsIGhjdHgtPkMsIGRjdHgtPnNlZWRsZW4pOwotKyNlbmRpZgotKyAgICBy ZXR1cm4gMTsKLSt9Ci0rCi0rc3RhdGljIGludCBkcmJnX2hhc2hfdW5pbnN0YW50aWF0ZShEUkJH X0NUWCAqZGN0eCkKLSt7Ci0rICAgIEVWUF9NRF9DVFhfY2xlYW51cCgmZGN0eC0+ZC5oYXNoLm1j dHgpOwotKyAgICBPUEVOU1NMX2NsZWFuc2UoJmRjdHgtPmQuaGFzaCwgc2l6ZW9mKERSQkdfSEFT SF9DVFgpKTsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK2ludCBmaXBzX2RyYmdfaGFzaF9pbml0 KERSQkdfQ1RYICpkY3R4KQotK3sKLSsgICAgY29uc3QgRVZQX01EICptZDsKLSsgICAgRFJCR19I QVNIX0NUWCAqaGN0eCA9ICZkY3R4LT5kLmhhc2g7Ci0rICAgIG1kID0gRklQU19nZXRfZGlnZXN0 YnluaWQoZGN0eC0+dHlwZSk7Ci0rICAgIGlmICghbWQpCi0rICAgICAgICByZXR1cm4gLTI7Ci0r ICAgIHN3aXRjaCAoZGN0eC0+dHlwZSkgewotKyAgICBjYXNlIE5JRF9zaGExOgotKyAgICAgICAg ZGN0eC0+c3RyZW5ndGggPSAxMjg7Ci0rICAgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBOSURf c2hhMjI0OgotKyAgICAgICAgZGN0eC0+c3RyZW5ndGggPSAxOTI7Ci0rICAgICAgICBicmVhazsK LSsKLSsgICAgZGVmYXVsdDoKLSsgICAgICAgIGRjdHgtPnN0cmVuZ3RoID0gMjU2OwotKyAgICAg ICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICAgZGN0eC0+aW5zdGFudGlhdGUgPSBkcmJnX2hhc2hf aW5zdGFudGlhdGU7Ci0rICAgIGRjdHgtPnJlc2VlZCA9IGRyYmdfaGFzaF9yZXNlZWQ7Ci0rICAg IGRjdHgtPmdlbmVyYXRlID0gZHJiZ19oYXNoX2dlbmVyYXRlOwotKyAgICBkY3R4LT51bmluc3Rh bnRpYXRlID0gZHJiZ19oYXNoX3VuaW5zdGFudGlhdGU7Ci0rCi0rICAgIGRjdHgtPmQuaGFzaC5t ZCA9IG1kOwotKyAgICBFVlBfTURfQ1RYX2luaXQoJmhjdHgtPm1jdHgpOwotKwotKyAgICAvKiBU aGVzZSBhcmUgdGFrZW4gZnJvbSBTUCA4MDAtOTAgMTAuMSB0YWJsZSAyICovCi0rCi0rICAgIGRj dHgtPmJsb2NrbGVuZ3RoID0gTV9FVlBfTURfc2l6ZShtZCk7Ci0rICAgIGlmIChkY3R4LT5ibG9j a2xlbmd0aCA+IDMyKQotKyAgICAgICAgZGN0eC0+c2VlZGxlbiA9IDExMTsKLSsgICAgZWxzZQot KyAgICAgICAgZGN0eC0+c2VlZGxlbiA9IDU1OwotKwotKyAgICBkY3R4LT5taW5fZW50cm9weSA9 IGRjdHgtPnN0cmVuZ3RoIC8gODsKLSsgICAgZGN0eC0+bWF4X2VudHJvcHkgPSBEUkJHX01BWF9M RU5HVEg7Ci0rCi0rICAgIGRjdHgtPm1pbl9ub25jZSA9IGRjdHgtPm1pbl9lbnRyb3B5IC8gMjsK LSsgICAgZGN0eC0+bWF4X25vbmNlID0gRFJCR19NQVhfTEVOR1RIOwotKwotKyAgICBkY3R4LT5t YXhfcGVycyA9IERSQkdfTUFYX0xFTkdUSDsKLSsgICAgZGN0eC0+bWF4X2FkaW4gPSBEUkJHX01B WF9MRU5HVEg7Ci0rCi0rICAgIGRjdHgtPm1heF9yZXF1ZXN0ID0gMSA8PCAxNjsKLSsgICAgZGN0 eC0+cmVzZWVkX2ludGVydmFsID0gMSA8PCAyNDsKLSsKLSsgICAgcmV0dXJuIDE7Ci0rfQotZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2htYWMuYy5maXBzIG9w ZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19obWFjLmMKLS0tLSBvcGVuc3NsLTEu MC4yaS9jcnlwdG8vZmlwcy9maXBzX2RyYmdfaG1hYy5jLmZpcHMJMjAxNi0wOS0yMiAxMzozNTo1 Ny4wMTUyMjA5NTEgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX2Ry YmdfaG1hYy5jCTIwMTYtMDktMjIgMTM6MzU6NTcuMDE1MjIwOTUxICswMjAwCi1AQCAtMCwwICsx LDI3MCBAQAotKy8qIGZpcHMvcmFuZC9maXBzX2RyYmdfaG1hYy5jICovCi0rLyogV3JpdHRlbiBi eSBEciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRoZSBPcGVuU1NM Ci0rICogcHJvamVjdC4KLSsgKi8KLSsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAoYykg MjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAq IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg b3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0 IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRp c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo dAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAq ICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0 aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcg bWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0 d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAi VGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQ cm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3 dy5PcGVuU1NMLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQi IGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3Jz ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQK LSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24s IHBsZWFzZSBjb250YWN0Ci0rICogICAgbGljZW5zaW5nQE9wZW5TU0wub3JnLgotKyAqCi0rICog NS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQg Ik9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVz IHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wg UHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29l dmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsg KiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3Bl blNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRw Oi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE IEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQg T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF Ci0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U IFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwg RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICog Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD RVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS UlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdB WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBP RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKi8K LSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRl IDxvcGVuc3NsL2NyeXB0by5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgotKyNpbmNsdWRl IDxvcGVuc3NsL2htYWMuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9hZXMuaD4KLSsjaW5jbHVkZSA8 b3BlbnNzbC9maXBzLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlwc19yYW5kLmg+Ci0rI2luY2x1 ZGUgImZpcHNfcmFuZF9sY2wuaCIKLSsKLStzdGF0aWMgaW50IGRyYmdfaG1hY191cGRhdGUoRFJC R19DVFggKmRjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIgKmluMSwgc2l6ZV90IGluMWxlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgdW5zaWduZWQgY2hhciAqaW4yLCBzaXplX3QgaW4ybGVuLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbjMsIHNpemVfdCBpbjNsZW4pCi0r ewotKyAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBjMCA9IDAsIGMxID0gMTsKLSsgICAgRFJCR19I TUFDX0NUWCAqaG1hYyA9ICZkY3R4LT5kLmhtYWM7Ci0rICAgIEhNQUNfQ1RYICpoY3R4ID0gJmht YWMtPmhjdHg7Ci0rCi0rICAgIGlmICghSE1BQ19Jbml0X2V4KGhjdHgsIGhtYWMtPkssIGRjdHgt PmJsb2NrbGVuZ3RoLCBobWFjLT5tZCwgTlVMTCkpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAg aWYgKCFITUFDX1VwZGF0ZShoY3R4LCBobWFjLT5WLCBkY3R4LT5ibG9ja2xlbmd0aCkpCi0rICAg ICAgICByZXR1cm4gMDsKLSsgICAgaWYgKCFITUFDX1VwZGF0ZShoY3R4LCAmYzAsIDEpKQotKyAg ICAgICAgcmV0dXJuIDA7Ci0rICAgIGlmIChpbjFsZW4gJiYgIUhNQUNfVXBkYXRlKGhjdHgsIGlu MSwgaW4xbGVuKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBpZiAoaW4ybGVuICYmICFITUFD X1VwZGF0ZShoY3R4LCBpbjIsIGluMmxlbikpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYg KGluM2xlbiAmJiAhSE1BQ19VcGRhdGUoaGN0eCwgaW4zLCBpbjNsZW4pKQotKyAgICAgICAgcmV0 dXJuIDA7Ci0rCi0rICAgIGlmICghSE1BQ19GaW5hbChoY3R4LCBobWFjLT5LLCBOVUxMKSkKLSsg ICAgICAgIHJldHVybiAwOwotKwotKyAgICBpZiAoIUhNQUNfSW5pdF9leChoY3R4LCBobWFjLT5L LCBkY3R4LT5ibG9ja2xlbmd0aCwgaG1hYy0+bWQsIE5VTEwpKQotKyAgICAgICAgcmV0dXJuIDA7 Ci0rICAgIGlmICghSE1BQ19VcGRhdGUoaGN0eCwgaG1hYy0+ViwgZGN0eC0+YmxvY2tsZW5ndGgp KQotKyAgICAgICAgcmV0dXJuIDA7Ci0rCi0rICAgIGlmICghSE1BQ19GaW5hbChoY3R4LCBobWFj LT5WLCBOVUxMKSkKLSsgICAgICAgIHJldHVybiAwOwotKwotKyAgICBpZiAoIWluMWxlbiAmJiAh aW4ybGVuICYmICFpbjNsZW4pCi0rICAgICAgICByZXR1cm4gMTsKLSsKLSsgICAgaWYgKCFITUFD X0luaXRfZXgoaGN0eCwgaG1hYy0+SywgZGN0eC0+YmxvY2tsZW5ndGgsIGhtYWMtPm1kLCBOVUxM KSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBpZiAoIUhNQUNfVXBkYXRlKGhjdHgsIGhtYWMt PlYsIGRjdHgtPmJsb2NrbGVuZ3RoKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBpZiAoIUhN QUNfVXBkYXRlKGhjdHgsICZjMSwgMSkpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYgKGlu MWxlbiAmJiAhSE1BQ19VcGRhdGUoaGN0eCwgaW4xLCBpbjFsZW4pKQotKyAgICAgICAgcmV0dXJu IDA7Ci0rICAgIGlmIChpbjJsZW4gJiYgIUhNQUNfVXBkYXRlKGhjdHgsIGluMiwgaW4ybGVuKSkK LSsgICAgICAgIHJldHVybiAwOwotKyAgICBpZiAoaW4zbGVuICYmICFITUFDX1VwZGF0ZShoY3R4 LCBpbjMsIGluM2xlbikpCi0rICAgICAgICByZXR1cm4gMDsKLSsKLSsgICAgaWYgKCFITUFDX0Zp bmFsKGhjdHgsIGhtYWMtPkssIE5VTEwpKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rCi0rICAgIGlm ICghSE1BQ19Jbml0X2V4KGhjdHgsIGhtYWMtPkssIGRjdHgtPmJsb2NrbGVuZ3RoLCBobWFjLT5t ZCwgTlVMTCkpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYgKCFITUFDX1VwZGF0ZShoY3R4 LCBobWFjLT5WLCBkY3R4LT5ibG9ja2xlbmd0aCkpCi0rICAgICAgICByZXR1cm4gMDsKLSsKLSsg ICAgaWYgKCFITUFDX0ZpbmFsKGhjdHgsIGhtYWMtPlYsIE5VTEwpKQotKyAgICAgICAgcmV0dXJu IDA7Ci0rCi0rICAgIHJldHVybiAxOwotKwotK30KLSsKLStzdGF0aWMgaW50IGRyYmdfaG1hY19p bnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICplbnQsIHNpemVfdCBlbnRfbGVuLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm5vbmNlLCBzaXpl X3Qgbm9uY2VfbGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVu c2lnbmVkIGNoYXIgKnBzdHIsIHNpemVfdCBwc3RyX2xlbikKLSt7Ci0rICAgIERSQkdfSE1BQ19D VFggKmhtYWMgPSAmZGN0eC0+ZC5obWFjOwotKyAgICBtZW1zZXQoaG1hYy0+SywgMCwgZGN0eC0+ YmxvY2tsZW5ndGgpOwotKyAgICBtZW1zZXQoaG1hYy0+ViwgMSwgZGN0eC0+YmxvY2tsZW5ndGgp OwotKyAgICBpZiAoIWRyYmdfaG1hY191cGRhdGUoZGN0eCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgIGVudCwgZW50X2xlbiwgbm9uY2UsIG5vbmNlX2xlbiwgcHN0ciwgcHN0cl9sZW4pKQot KyAgICAgICAgcmV0dXJuIDA7Ci0rCi0rI2lmZGVmIEhNQUNfRFJCR19UUkFDRQotKyAgICBmcHJp bnRmKHN0ZGVyciwgIksrViBhZnRlciBpbnN0YW50aWF0ZTpcbiIpOwotKyAgICBoZXhwcmludChz dGRlcnIsIGhtYWMtPkssIGhtYWMtPmJsb2NrbGVuZ3RoKTsKLSsgICAgaGV4cHJpbnQoc3RkZXJy LCBobWFjLT5WLCBobWFjLT5ibG9ja2xlbmd0aCk7Ci0rI2VuZGlmCi0rICAgIHJldHVybiAxOwot K30KLSsKLStzdGF0aWMgaW50IGRyYmdfaG1hY19yZXNlZWQoRFJCR19DVFggKmRjdHgsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVudCwgc2l6ZV90 IGVudF9sZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo YXIgKmFkaW4sIHNpemVfdCBhZGluX2xlbikKLSt7Ci0rICAgIGlmICghZHJiZ19obWFjX3VwZGF0 ZShkY3R4LCBlbnQsIGVudF9sZW4sIGFkaW4sIGFkaW5fbGVuLCBOVUxMLCAwKSkKLSsgICAgICAg IHJldHVybiAwOwotKwotKyNpZmRlZiBITUFDX0RSQkdfVFJBQ0UKLSsgICAgewotKyAgICAgICAg RFJCR19ITUFDX0NUWCAqaG1hYyA9ICZkY3R4LT5kLmhtYWM7Ci0rICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIksrViBhZnRlciByZXNlZWQ6XG4iKTsKLSsgICAgICAgIGhleHByaW50KHN0ZGVyciwg aG1hYy0+SywgaG1hYy0+YmxvY2tsZW5ndGgpOwotKyAgICAgICAgaGV4cHJpbnQoc3RkZXJyLCBo bWFjLT5WLCBobWFjLT5ibG9ja2xlbmd0aCk7Ci0rICAgIH0KLSsjZW5kaWYKLSsgICAgcmV0dXJu IDE7Ci0rfQotKwotK3N0YXRpYyBpbnQgZHJiZ19obWFjX2dlbmVyYXRlKERSQkdfQ1RYICpkY3R4 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6 ZV90IG91dGxlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25l ZCBjaGFyICphZGluLCBzaXplX3QgYWRpbl9sZW4pCi0rewotKyAgICBEUkJHX0hNQUNfQ1RYICpo bWFjID0gJmRjdHgtPmQuaG1hYzsKLSsgICAgSE1BQ19DVFggKmhjdHggPSAmaG1hYy0+aGN0eDsK LSsgICAgY29uc3QgdW5zaWduZWQgY2hhciAqVnRtcCA9IGhtYWMtPlY7Ci0rICAgIGlmIChhZGlu X2xlbiAmJiAhZHJiZ19obWFjX3VwZGF0ZShkY3R4LCBhZGluLCBhZGluX2xlbiwgTlVMTCwgMCwg TlVMTCwgMCkpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgZm9yICg7OykgewotKyAgICAgICAg aWYgKCFITUFDX0luaXRfZXgoaGN0eCwgaG1hYy0+SywgZGN0eC0+YmxvY2tsZW5ndGgsIGhtYWMt Pm1kLCBOVUxMKSkKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgIGlmICghSE1BQ19V cGRhdGUoaGN0eCwgVnRtcCwgZGN0eC0+YmxvY2tsZW5ndGgpKQotKyAgICAgICAgICAgIHJldHVy biAwOwotKyAgICAgICAgaWYgKCEoZGN0eC0+eGZsYWdzICYgRFJCR19GTEFHX1RFU1QpICYmICFk Y3R4LT5sYl92YWxpZCkgewotKyAgICAgICAgICAgIGlmICghSE1BQ19GaW5hbChoY3R4LCBkY3R4 LT5sYiwgTlVMTCkpCi0rICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgIGRj dHgtPmxiX3ZhbGlkID0gMTsKLSsgICAgICAgICAgICBWdG1wID0gZGN0eC0+bGI7Ci0rICAgICAg ICAgICAgY29udGludWU7Ci0rICAgICAgICB9IGVsc2UgaWYgKG91dGxlbiA+IGRjdHgtPmJsb2Nr bGVuZ3RoKSB7Ci0rICAgICAgICAgICAgaWYgKCFITUFDX0ZpbmFsKGhjdHgsIG91dCwgTlVMTCkp Ci0rICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgIGlmICghZmlwc19kcmJn X2Nwcm5nX3Rlc3QoZGN0eCwgb3V0KSkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAg ICAgICAgICAgVnRtcCA9IG91dDsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgaWYg KCFITUFDX0ZpbmFsKGhjdHgsIGhtYWMtPlYsIE5VTEwpKQotKyAgICAgICAgICAgICAgICByZXR1 cm4gMDsKLSsgICAgICAgICAgICBpZiAoIWZpcHNfZHJiZ19jcHJuZ190ZXN0KGRjdHgsIGhtYWMt PlYpKQotKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICBtZW1jcHkob3V0 LCBobWFjLT5WLCBvdXRsZW4pOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAg ICAgICAgb3V0ICs9IGRjdHgtPmJsb2NrbGVuZ3RoOwotKyAgICAgICAgb3V0bGVuIC09IGRjdHgt PmJsb2NrbGVuZ3RoOwotKyAgICB9Ci0rICAgIGlmICghZHJiZ19obWFjX3VwZGF0ZShkY3R4LCBh ZGluLCBhZGluX2xlbiwgTlVMTCwgMCwgTlVMTCwgMCkpCi0rICAgICAgICByZXR1cm4gMDsKLSsK LSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBpbnQgZHJiZ19obWFjX3VuaW5zdGFudGlh dGUoRFJCR19DVFggKmRjdHgpCi0rewotKyAgICBITUFDX0NUWF9jbGVhbnVwKCZkY3R4LT5kLmht YWMuaGN0eCk7Ci0rICAgIE9QRU5TU0xfY2xlYW5zZSgmZGN0eC0+ZC5obWFjLCBzaXplb2YoRFJC R19ITUFDX0NUWCkpOwotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0raW50IGZpcHNfZHJiZ19obWFj X2luaXQoRFJCR19DVFggKmRjdHgpCi0rewotKyAgICBjb25zdCBFVlBfTUQgKm1kID0gTlVMTDsK LSsgICAgRFJCR19ITUFDX0NUWCAqaGN0eCA9ICZkY3R4LT5kLmhtYWM7Ci0rICAgIGRjdHgtPnN0 cmVuZ3RoID0gMjU2OwotKyAgICBzd2l0Y2ggKGRjdHgtPnR5cGUpIHsKLSsgICAgY2FzZSBOSURf aG1hY1dpdGhTSEExOgotKyAgICAgICAgbWQgPSBFVlBfc2hhMSgpOwotKyAgICAgICAgZGN0eC0+ c3RyZW5ndGggPSAxMjg7Ci0rICAgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBOSURfaG1hY1dp dGhTSEEyMjQ6Ci0rICAgICAgICBtZCA9IEVWUF9zaGEyMjQoKTsKLSsgICAgICAgIGRjdHgtPnN0 cmVuZ3RoID0gMTkyOwotKyAgICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgTklEX2htYWNXaXRo U0hBMjU2OgotKyAgICAgICAgbWQgPSBFVlBfc2hhMjU2KCk7Ci0rICAgICAgICBicmVhazsKLSsK LSsgICAgY2FzZSBOSURfaG1hY1dpdGhTSEEzODQ6Ci0rICAgICAgICBtZCA9IEVWUF9zaGEzODQo KTsKLSsgICAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIE5JRF9obWFjV2l0aFNIQTUxMjoKLSsg ICAgICAgIG1kID0gRVZQX3NoYTUxMigpOwotKyAgICAgICAgYnJlYWs7Ci0rCi0rICAgIGRlZmF1 bHQ6Ci0rICAgICAgICBkY3R4LT5zdHJlbmd0aCA9IDA7Ci0rICAgICAgICByZXR1cm4gLTI7Ci0r ICAgIH0KLSsgICAgZGN0eC0+aW5zdGFudGlhdGUgPSBkcmJnX2htYWNfaW5zdGFudGlhdGU7Ci0r ICAgIGRjdHgtPnJlc2VlZCA9IGRyYmdfaG1hY19yZXNlZWQ7Ci0rICAgIGRjdHgtPmdlbmVyYXRl ID0gZHJiZ19obWFjX2dlbmVyYXRlOwotKyAgICBkY3R4LT51bmluc3RhbnRpYXRlID0gZHJiZ19o bWFjX3VuaW5zdGFudGlhdGU7Ci0rICAgIEhNQUNfQ1RYX2luaXQoJmhjdHgtPmhjdHgpOwotKyAg ICBoY3R4LT5tZCA9IG1kOwotKyAgICBkY3R4LT5ibG9ja2xlbmd0aCA9IE1fRVZQX01EX3NpemUo bWQpOwotKyAgICBkY3R4LT5zZWVkbGVuID0gTV9FVlBfTURfc2l6ZShtZCk7Ci0rCi0rICAgIGRj dHgtPm1pbl9lbnRyb3B5ID0gZGN0eC0+c3RyZW5ndGggLyA4OwotKyAgICBkY3R4LT5tYXhfZW50 cm9weSA9IERSQkdfTUFYX0xFTkdUSDsKLSsKLSsgICAgZGN0eC0+bWluX25vbmNlID0gZGN0eC0+ bWluX2VudHJvcHkgLyAyOwotKyAgICBkY3R4LT5tYXhfbm9uY2UgPSBEUkJHX01BWF9MRU5HVEg7 Ci0rCi0rICAgIGRjdHgtPm1heF9wZXJzID0gRFJCR19NQVhfTEVOR1RIOwotKyAgICBkY3R4LT5t YXhfYWRpbiA9IERSQkdfTUFYX0xFTkdUSDsKLSsKLSsgICAgZGN0eC0+bWF4X3JlcXVlc3QgPSAx IDw8IDE2OwotKyAgICBkY3R4LT5yZXNlZWRfaW50ZXJ2YWwgPSAxIDw8IDI0OwotKwotKyAgICBy ZXR1cm4gMTsKLSt9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX2Ry YmdfbGliLmMuZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX2RyYmdfbGliLmMK LS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX2RyYmdfbGliLmMuZmlwcwkyMDE2 LTA5LTIyIDEzOjM1OjU3LjAxNTIyMDk1MSArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0 by9maXBzL2ZpcHNfZHJiZ19saWIuYwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxNTIyMDk1MSArMDIw MAotQEAgLTAsMCArMSw1NTMgQEAKLSsvKiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24g KHN0ZXZlQG9wZW5zc2wub3JnKSBmb3IgdGhlIE9wZW5TU0wKLSsgKiBwcm9qZWN0LgotKyAqLwot Ky8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2pl Y3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVz ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZp Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp b25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlz IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgot KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg YWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24g YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1 dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBm ZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUg Zm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMg c29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNl IGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoK LSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3Qi IG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg ZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4g cGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAg ICBsaWNlbnNpbmdAT3BlblNTTC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZy b20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3Ig bWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVu Ci0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4g UmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZv bGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5j bHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBm b3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIK LSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVD VCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQ VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJP SkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ TkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VS RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwg REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIg Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD VCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP UiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT VUNIIERBTUFHRS4KLSsgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqLwotKwotKyNpbmNsdWRlIDxzdHJpbmcu aD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lcnIu aD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4KLSsjaW5jbHVkZSAiZmlwc19sb2Ns LmgiCi0rI2luY2x1ZGUgImZpcHNfcmFuZF9sY2wuaCIKLSsKLSsvKiBTdXBwb3J0IGZyYW1ld29y ayBmb3IgU1A4MDAtOTAgRFJCR3MgKi8KLSsKLStpbnQgRklQU19kcmJnX2luaXQoRFJCR19DVFgg KmRjdHgsIGludCB0eXBlLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCi0rewotKyAgICBpbnQgcnY7Ci0r ICAgIG1lbXNldChkY3R4LCAwLCBzaXplb2YoRFJCR19DVFgpKTsKLSsgICAgZGN0eC0+c3RhdHVz ID0gRFJCR19TVEFUVVNfVU5JTklUSUFMSVNFRDsKLSsgICAgZGN0eC0+eGZsYWdzID0gZmxhZ3M7 Ci0rICAgIGRjdHgtPnR5cGUgPSB0eXBlOwotKwotKyAgICBkY3R4LT5pZmxhZ3MgPSAwOwotKyAg ICBkY3R4LT5lbnRyb3B5X2Jsb2NrbGVuID0gMDsKLSsgICAgZGN0eC0+aGVhbHRoX2NoZWNrX2Nu dCA9IDA7Ci0rICAgIGRjdHgtPmhlYWx0aF9jaGVja19pbnRlcnZhbCA9IERSQkdfSEVBTFRIX0lO VEVSVkFMOwotKwotKyAgICBydiA9IGZpcHNfZHJiZ19oYXNoX2luaXQoZGN0eCk7Ci0rCi0rICAg IGlmIChydiA9PSAtMikKLSsgICAgICAgIHJ2ID0gZmlwc19kcmJnX2N0cl9pbml0KGRjdHgpOwot KyAgICBpZiAocnYgPT0gLTIpCi0rICAgICAgICBydiA9IGZpcHNfZHJiZ19obWFjX2luaXQoZGN0 eCk7Ci0rCi0rICAgIGlmIChydiA8PSAwKSB7Ci0rICAgICAgICBpZiAocnYgPT0gLTIpCi0rICAg ICAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0lOSVQsIEZJUFNfUl9VTlNVUFBPUlRF RF9EUkJHX1RZUEUpOwotKyAgICAgICAgZWxzZQotKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19G X0ZJUFNfRFJCR19JTklULCBGSVBTX1JfRVJST1JfSU5JVElBTElTSU5HX0RSQkcpOwotKyAgICB9 Ci0rCi0rICAgIC8qIElmIG5vdCBpbiB0ZXN0IG1vZGUgcnVuIHNlbGZ0ZXN0cyBvbiBEUkJHIG9m IHRoZSBzYW1lIHR5cGUgKi8KLSsKLSsgICAgaWYgKCEoZGN0eC0+eGZsYWdzICYgRFJCR19GTEFH X1RFU1QpKSB7Ci0rICAgICAgICBpZiAoIUZJUFNfZHJiZ19oZWFsdGhfY2hlY2soZGN0eCkpIHsK LSsgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfSU5JVCwgRklQU19SX1NFTEZU RVNUX0ZBSUxVUkUpOwotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgfQotKyAgICB9 Ci0rCi0rICAgIHJldHVybiBydjsKLSt9Ci0rCi0rRFJCR19DVFggKkZJUFNfZHJiZ19uZXcoaW50 IHR5cGUsIHVuc2lnbmVkIGludCBmbGFncykKLSt7Ci0rICAgIERSQkdfQ1RYICpkY3R4OwotKyAg ICBkY3R4ID0gT1BFTlNTTF9tYWxsb2Moc2l6ZW9mKERSQkdfQ1RYKSk7Ci0rICAgIGlmICghZGN0 eCkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX05FVywgRVJSX1JfTUFMTE9D X0ZBSUxVUkUpOwotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsgICAgaWYgKHR5 cGUgPT0gMCkgewotKyAgICAgICAgbWVtc2V0KGRjdHgsIDAsIHNpemVvZihEUkJHX0NUWCkpOwot KyAgICAgICAgZGN0eC0+dHlwZSA9IDA7Ci0rICAgICAgICBkY3R4LT5zdGF0dXMgPSBEUkJHX1NU QVRVU19VTklOSVRJQUxJU0VEOwotKyAgICAgICAgcmV0dXJuIGRjdHg7Ci0rICAgIH0KLSsKLSsg ICAgaWYgKEZJUFNfZHJiZ19pbml0KGRjdHgsIHR5cGUsIGZsYWdzKSA8PSAwKSB7Ci0rICAgICAg ICBPUEVOU1NMX2ZyZWUoZGN0eCk7Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwot KyAgICByZXR1cm4gZGN0eDsKLSt9Ci0rCi0rdm9pZCBGSVBTX2RyYmdfZnJlZShEUkJHX0NUWCAq ZGN0eCkKLSt7Ci0rICAgIGlmIChkY3R4LT51bmluc3RhbnRpYXRlKQotKyAgICAgICAgZGN0eC0+ dW5pbnN0YW50aWF0ZShkY3R4KTsKLSsgICAgLyogRG9uJ3QgZnJlZSB1cCBkZWZhdWx0IERSQkcg Ki8KLSsgICAgaWYgKGRjdHggPT0gRklQU19nZXRfZGVmYXVsdF9kcmJnKCkpIHsKLSsgICAgICAg IG1lbXNldChkY3R4LCAwLCBzaXplb2YoRFJCR19DVFgpKTsKLSsgICAgICAgIGRjdHgtPnR5cGUg PSAwOwotKyAgICAgICAgZGN0eC0+c3RhdHVzID0gRFJCR19TVEFUVVNfVU5JTklUSUFMSVNFRDsK LSsgICAgfSBlbHNlIHsKLSsgICAgICAgIE9QRU5TU0xfY2xlYW5zZSgmZGN0eC0+ZCwgc2l6ZW9m KGRjdHgtPmQpKTsKLSsgICAgICAgIE9QRU5TU0xfZnJlZShkY3R4KTsKLSsgICAgfQotK30KLSsK LStzdGF0aWMgc2l6ZV90IGZpcHNfZ2V0X2VudHJvcHkoRFJCR19DVFggKmRjdHgsIHVuc2lnbmVk IGNoYXIgKipwb3V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW50cm9w eSwgc2l6ZV90IG1pbl9sZW4sIHNpemVfdCBtYXhfbGVuKQotK3sKLSsgICAgdW5zaWduZWQgY2hh ciAqdG91dCwgKnA7Ci0rICAgIHNpemVfdCBibCA9IGRjdHgtPmVudHJvcHlfYmxvY2tsZW4sIHJ2 OwotKyAgICBpZiAoIWRjdHgtPmdldF9lbnRyb3B5KQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAg IGlmIChkY3R4LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCB8fCAhYmwpCi0rICAgICAgICByZXR1 cm4gZGN0eC0+Z2V0X2VudHJvcHkoZGN0eCwgcG91dCwgZW50cm9weSwgbWluX2xlbiwgbWF4X2xl bik7Ci0rICAgIHJ2ID0gZGN0eC0+Z2V0X2VudHJvcHkoZGN0eCwgJnRvdXQsIGVudHJvcHkgKyBi bCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5fbGVuICsgYmwsIG1heF9sZW4gKyBi bCk7Ci0rICAgIGlmICh0b3V0ID09IE5VTEwpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgKnBv dXQgPSB0b3V0ICsgYmw7Ci0rICAgIGlmIChydiA8IChtaW5fbGVuICsgYmwpIHx8IChydiAlIGJs KSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICAvKiBDb21wYXJlIGNvbnNlY3V0aXZlIGJsb2Nr cyBmb3IgY29udGludW91cyBQUk5HIHRlc3QgKi8KLSsgICAgZm9yIChwID0gdG91dDsgcCA8IHRv dXQgKyBydiAtIGJsOyBwICs9IGJsKSB7Ci0rICAgICAgICBpZiAoIW1lbWNtcChwLCBwICsgYmws IGJsKSkgewotKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfR0VUX0VOVFJPUFksIEZJ UFNfUl9FTlRST1BZX1NPVVJDRV9TVFVDSyk7Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAg ICAgICB9Ci0rICAgIH0KLSsgICAgcnYgLT0gYmw7Ci0rICAgIGlmIChydiA+IG1heF9sZW4pCi0r ICAgICAgICByZXR1cm4gbWF4X2xlbjsKLSsgICAgcmV0dXJuIHJ2OwotK30KLSsKLStzdGF0aWMg dm9pZCBmaXBzX2NsZWFudXBfZW50cm9weShEUkJHX0NUWCAqZGN0eCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvbGVuKQotK3sK LSsgICAgc2l6ZV90IGJsOwotKyAgICBpZiAoZGN0eC0+eGZsYWdzICYgRFJCR19GTEFHX1RFU1Qp Ci0rICAgICAgICBibCA9IDA7Ci0rICAgIGVsc2UKLSsgICAgICAgIGJsID0gZGN0eC0+ZW50cm9w eV9ibG9ja2xlbjsKLSsgICAgLyogQ2FsbCBjbGVhbnVwIHdpdGggb3JpZ2luYWwgYXJndW1lbnRz ICovCi0rICAgIGRjdHgtPmNsZWFudXBfZW50cm9weShkY3R4LCBvdXQgLSBibCwgb2xlbiArIGJs KTsKLSt9Ci0rCi0raW50IEZJUFNfZHJiZ19pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0eCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBlcnMsIHNpemVf dCBwZXJzbGVuKQotK3sKLSsgICAgc2l6ZV90IGVudGxlbiA9IDAsIG5vbmNlbGVuID0gMDsKLSsg ICAgdW5zaWduZWQgY2hhciAqbm9uY2UgPSBOVUxMLCAqZW50cm9weSA9IE5VTEw7Ci0rCi0rI2lm IDAKLSsgICAgLyogUHV0IGhlcmUgc28gZXJyb3Igc2NyaXB0IHBpY2tzIHRoZW0gdXAgKi8KLSsg ICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0lOU1RBTlRJQVRFLAotKyAgICAgICAgICAgIEZJ UFNfUl9QRVJTT05BTElTQVRJT05fU1RSSU5HX1RPT19MT05HKTsKLSsgICAgRklQU2VycihGSVBT X0ZfRklQU19EUkJHX0lOU1RBTlRJQVRFLCBGSVBTX1JfSU5fRVJST1JfU1RBVEUpOwotKyAgICBG SVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfSU5TVEFOVElBVEUsIEZJUFNfUl9BTFJFQURZX0lOU1RB TlRJQVRFRCk7Ci0rICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19JTlNUQU5USUFURSwgRklQ U19SX0VSUk9SX1JFVFJJRVZJTkdfRU5UUk9QWSk7Ci0rICAgIEZJUFNlcnIoRklQU19GX0ZJUFNf RFJCR19JTlNUQU5USUFURSwgRklQU19SX0VSUk9SX1JFVFJJRVZJTkdfTk9OQ0UpOwotKyAgICBG SVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfSU5TVEFOVElBVEUsIEZJUFNfUl9JTlNUQU5USUFURV9F UlJPUik7Ci0rICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19JTlNUQU5USUFURSwgRklQU19S X0RSQkdfTk9UX0lOSVRJQUxJU0VEKTsKLSsjZW5kaWYKLSsKLSsgICAgaW50IHIgPSAwOwotKwot KyAgICBpZiAocGVyc2xlbiA+IGRjdHgtPm1heF9wZXJzKSB7Ci0rICAgICAgICByID0gRklQU19S X1BFUlNPTkFMSVNBVElPTl9TVFJJTkdfVE9PX0xPTkc7Ci0rICAgICAgICBnb3RvIGVuZDsKLSsg ICAgfQotKwotKyAgICBpZiAoIWRjdHgtPmluc3RhbnRpYXRlKSB7Ci0rICAgICAgICByID0gRklQ U19SX0RSQkdfTk9UX0lOSVRJQUxJU0VEOwotKyAgICAgICAgZ290byBlbmQ7Ci0rICAgIH0KLSsK LSsgICAgaWYgKGRjdHgtPnN0YXR1cyAhPSBEUkJHX1NUQVRVU19VTklOSVRJQUxJU0VEKSB7Ci0r ICAgICAgICBpZiAoZGN0eC0+c3RhdHVzID09IERSQkdfU1RBVFVTX0VSUk9SKQotKyAgICAgICAg ICAgIHIgPSBGSVBTX1JfSU5fRVJST1JfU1RBVEU7Ci0rICAgICAgICBlbHNlCi0rICAgICAgICAg ICAgciA9IEZJUFNfUl9BTFJFQURZX0lOU1RBTlRJQVRFRDsKLSsgICAgICAgIGdvdG8gZW5kOwot KyAgICB9Ci0rCi0rICAgIGRjdHgtPnN0YXR1cyA9IERSQkdfU1RBVFVTX0VSUk9SOwotKwotKyAg ICBlbnRsZW4gPSBmaXBzX2dldF9lbnRyb3B5KGRjdHgsICZlbnRyb3B5LCBkY3R4LT5zdHJlbmd0 aCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkY3R4LT5taW5fZW50cm9weSwgZGN0 eC0+bWF4X2VudHJvcHkpOwotKwotKyAgICBpZiAoZW50bGVuIDwgZGN0eC0+bWluX2VudHJvcHkg fHwgZW50bGVuID4gZGN0eC0+bWF4X2VudHJvcHkpIHsKLSsgICAgICAgIHIgPSBGSVBTX1JfRVJS T1JfUkVUUklFVklOR19FTlRST1BZOwotKyAgICAgICAgZ290byBlbmQ7Ci0rICAgIH0KLSsKLSsg ICAgaWYgKGRjdHgtPm1heF9ub25jZSA+IDAgJiYgZGN0eC0+Z2V0X25vbmNlKSB7Ci0rICAgICAg ICBub25jZWxlbiA9IGRjdHgtPmdldF9ub25jZShkY3R4LCAmbm9uY2UsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkY3R4LT5zdHJlbmd0aCAvIDIsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkY3R4LT5taW5fbm9uY2UsIGRjdHgtPm1heF9ub25jZSk7 Ci0rCi0rICAgICAgICBpZiAobm9uY2VsZW4gPCBkY3R4LT5taW5fbm9uY2UgfHwgbm9uY2VsZW4g PiBkY3R4LT5tYXhfbm9uY2UpIHsKLSsgICAgICAgICAgICByID0gRklQU19SX0VSUk9SX1JFVFJJ RVZJTkdfTk9OQ0U7Ci0rICAgICAgICAgICAgZ290byBlbmQ7Ci0rICAgICAgICB9Ci0rCi0rICAg IH0KLSsKLSsgICAgaWYgKCFkY3R4LT5pbnN0YW50aWF0ZShkY3R4LAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVudHJvcHksIGVudGxlbiwgbm9uY2UsIG5vbmNlbGVuLCBwZXJzLCBwZXJz bGVuKSkgewotKyAgICAgICAgciA9IEZJUFNfUl9FUlJPUl9JTlNUQU5USUFUSU5HX0RSQkc7Ci0r ICAgICAgICBnb3RvIGVuZDsKLSsgICAgfQotKwotKyAgICBkY3R4LT5zdGF0dXMgPSBEUkJHX1NU QVRVU19SRUFEWTsKLSsgICAgaWYgKCEoZGN0eC0+aWZsYWdzICYgRFJCR19DVVNUT01fUkVTRUVE KSkKLSsgICAgICAgIGRjdHgtPnJlc2VlZF9jb3VudGVyID0gMTsKLSsKLSsgZW5kOgotKwotKyAg ICBpZiAoZW50cm9weSAmJiBkY3R4LT5jbGVhbnVwX2VudHJvcHkpCi0rICAgICAgICBmaXBzX2Ns ZWFudXBfZW50cm9weShkY3R4LCBlbnRyb3B5LCBlbnRsZW4pOwotKwotKyAgICBpZiAobm9uY2Ug JiYgZGN0eC0+Y2xlYW51cF9ub25jZSkKLSsgICAgICAgIGRjdHgtPmNsZWFudXBfbm9uY2UoZGN0 eCwgbm9uY2UsIG5vbmNlbGVuKTsKLSsKLSsgICAgaWYgKGRjdHgtPnN0YXR1cyA9PSBEUkJHX1NU QVRVU19SRUFEWSkKLSsgICAgICAgIHJldHVybiAxOwotKwotKyAgICBpZiAociAmJiAhKGRjdHgt PmlmbGFncyAmIERSQkdfRkxBR19OT0VSUikpCi0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBT X0RSQkdfSU5TVEFOVElBVEUsIHIpOwotKwotKyAgICByZXR1cm4gMDsKLSsKLSt9Ci0rCi0rc3Rh dGljIGludCBkcmJnX3Jlc2VlZChEUkJHX0NUWCAqZGN0eCwKLSsgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4sIHNpemVfdCBhZGlubGVuLCBpbnQgaGNoZWNr KQotK3sKLSsgICAgdW5zaWduZWQgY2hhciAqZW50cm9weSA9IE5VTEw7Ci0rICAgIHNpemVfdCBl bnRsZW4gPSAwOwotKyAgICBpbnQgciA9IDA7Ci0rCi0rI2lmIDAKLSsgICAgRklQU2VycihGSVBT X0ZfRFJCR19SRVNFRUQsIEZJUFNfUl9OT1RfSU5TVEFOVElBVEVEKTsKLSsgICAgRklQU2VycihG SVBTX0ZfRFJCR19SRVNFRUQsIEZJUFNfUl9BRERJVElPTkFMX0lOUFVUX1RPT19MT05HKTsKLSsj ZW5kaWYKLSsgICAgaWYgKGRjdHgtPnN0YXR1cyAhPSBEUkJHX1NUQVRVU19SRUFEWQotKyAgICAg ICAgJiYgZGN0eC0+c3RhdHVzICE9IERSQkdfU1RBVFVTX1JFU0VFRCkgewotKyAgICAgICAgaWYg KGRjdHgtPnN0YXR1cyA9PSBEUkJHX1NUQVRVU19FUlJPUikKLSsgICAgICAgICAgICByID0gRklQ U19SX0lOX0VSUk9SX1NUQVRFOwotKyAgICAgICAgZWxzZSBpZiAoZGN0eC0+c3RhdHVzID09IERS QkdfU1RBVFVTX1VOSU5JVElBTElTRUQpCi0rICAgICAgICAgICAgciA9IEZJUFNfUl9OT1RfSU5T VEFOVElBVEVEOwotKyAgICAgICAgZ290byBlbmQ7Ci0rICAgIH0KLSsKLSsgICAgaWYgKCFhZGlu KQotKyAgICAgICAgYWRpbmxlbiA9IDA7Ci0rICAgIGVsc2UgaWYgKGFkaW5sZW4gPiBkY3R4LT5t YXhfYWRpbikgewotKyAgICAgICAgciA9IEZJUFNfUl9BRERJVElPTkFMX0lOUFVUX1RPT19MT05H OwotKyAgICAgICAgZ290byBlbmQ7Ci0rICAgIH0KLSsKLSsgICAgZGN0eC0+c3RhdHVzID0gRFJC R19TVEFUVVNfRVJST1I7Ci0rICAgIC8qIFBlZm9ybSBoZWFsdGggY2hlY2sgb24gYWxsIHJlc2Vl ZCBvcGVyYXRpb25zIGlmIG5vdCBhIHByZWRpY3Rpb24KLSsgICAgICogcmVzaXN0YW5jZSByZXF1 ZXN0IGFuZCBub3QgaW4gdGVzdCBtb2RlLgotKyAgICAgKi8KLSsgICAgaWYgKGhjaGVjayAmJiAh KGRjdHgtPnhmbGFncyAmIERSQkdfRkxBR19URVNUKSkgewotKyAgICAgICAgaWYgKCFGSVBTX2Ry YmdfaGVhbHRoX2NoZWNrKGRjdHgpKSB7Ci0rICAgICAgICAgICAgciA9IEZJUFNfUl9TRUxGVEVT VF9GQUlMVVJFOwotKyAgICAgICAgICAgIGdvdG8gZW5kOwotKyAgICAgICAgfQotKyAgICB9Ci0r Ci0rICAgIGVudGxlbiA9IGZpcHNfZ2V0X2VudHJvcHkoZGN0eCwgJmVudHJvcHksIGRjdHgtPnN0 cmVuZ3RoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjdHgtPm1pbl9lbnRyb3B5 LCBkY3R4LT5tYXhfZW50cm9weSk7Ci0rCi0rICAgIGlmIChlbnRsZW4gPCBkY3R4LT5taW5fZW50 cm9weSB8fCBlbnRsZW4gPiBkY3R4LT5tYXhfZW50cm9weSkgewotKyAgICAgICAgciA9IEZJUFNf Ul9FUlJPUl9SRVRSSUVWSU5HX0VOVFJPUFk7Ci0rICAgICAgICBnb3RvIGVuZDsKLSsgICAgfQot KwotKyAgICBpZiAoIWRjdHgtPnJlc2VlZChkY3R4LCBlbnRyb3B5LCBlbnRsZW4sIGFkaW4sIGFk aW5sZW4pKQotKyAgICAgICAgZ290byBlbmQ7Ci0rCi0rICAgIGRjdHgtPnN0YXR1cyA9IERSQkdf U1RBVFVTX1JFQURZOwotKyAgICBpZiAoIShkY3R4LT5pZmxhZ3MgJiBEUkJHX0NVU1RPTV9SRVNF RUQpKQotKyAgICAgICAgZGN0eC0+cmVzZWVkX2NvdW50ZXIgPSAxOwotKyBlbmQ6Ci0rCi0rICAg IGlmIChlbnRyb3B5ICYmIGRjdHgtPmNsZWFudXBfZW50cm9weSkKLSsgICAgICAgIGZpcHNfY2xl YW51cF9lbnRyb3B5KGRjdHgsIGVudHJvcHksIGVudGxlbik7Ci0rCi0rICAgIGlmIChkY3R4LT5z dGF0dXMgPT0gRFJCR19TVEFUVVNfUkVBRFkpCi0rICAgICAgICByZXR1cm4gMTsKLSsKLSsgICAg aWYgKHIgJiYgIShkY3R4LT5pZmxhZ3MgJiBEUkJHX0ZMQUdfTk9FUlIpKQotKyAgICAgICAgRklQ U2VycihGSVBTX0ZfRFJCR19SRVNFRUQsIHIpOwotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0r aW50IEZJUFNfZHJiZ19yZXNlZWQoRFJCR19DVFggKmRjdHgsCi0rICAgICAgICAgICAgICAgICAg ICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbiwgc2l6ZV90IGFkaW5sZW4pCi0rewotKyAgICBy ZXR1cm4gZHJiZ19yZXNlZWQoZGN0eCwgYWRpbiwgYWRpbmxlbiwgMSk7Ci0rfQotKwotK3N0YXRp YyBpbnQgZmlwc19kcmJnX2NoZWNrKERSQkdfQ1RYICpkY3R4KQotK3sKLSsgICAgaWYgKGRjdHgt PnhmbGFncyAmIERSQkdfRkxBR19URVNUKQotKyAgICAgICAgcmV0dXJuIDE7Ci0rICAgIGRjdHgt PmhlYWx0aF9jaGVja19jbnQrKzsKLSsgICAgaWYgKGRjdHgtPmhlYWx0aF9jaGVja19jbnQgPj0g ZGN0eC0+aGVhbHRoX2NoZWNrX2ludGVydmFsKSB7Ci0rICAgICAgICBpZiAoIUZJUFNfZHJiZ19o ZWFsdGhfY2hlY2soZGN0eCkpIHsKLSsgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RS QkdfQ0hFQ0ssIEZJUFNfUl9TRUxGVEVTVF9GQUlMVVJFKTsKLSsgICAgICAgICAgICByZXR1cm4g MDsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0raW50IEZJUFNf ZHJiZ19nZW5lcmF0ZShEUkJHX0NUWCAqZGN0eCwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qg b3V0bGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHByZWRpY3Rpb25fcmVzaXN0YW5j ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4sIHNp emVfdCBhZGlubGVuKQotK3sKLSsgICAgaW50IHIgPSAwOwotKwotKyAgICBpZiAoRklQU19zZWxm dGVzdF9mYWlsZWQoKSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0dFTkVS QVRFLCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKLSsgICAgICAgIHJldHVybiAwOwotKyAgICB9 Ci0rCi0rICAgIGlmICghZmlwc19kcmJnX2NoZWNrKGRjdHgpKQotKyAgICAgICAgcmV0dXJuIDA7 Ci0rCi0rICAgIGlmIChkY3R4LT5zdGF0dXMgIT0gRFJCR19TVEFUVVNfUkVBRFkKLSsgICAgICAg ICYmIGRjdHgtPnN0YXR1cyAhPSBEUkJHX1NUQVRVU19SRVNFRUQpIHsKLSsgICAgICAgIGlmIChk Y3R4LT5zdGF0dXMgPT0gRFJCR19TVEFUVVNfRVJST1IpCi0rICAgICAgICAgICAgciA9IEZJUFNf Ul9JTl9FUlJPUl9TVEFURTsKLSsgICAgICAgIGVsc2UgaWYgKGRjdHgtPnN0YXR1cyA9PSBEUkJH X1NUQVRVU19VTklOSVRJQUxJU0VEKQotKyAgICAgICAgICAgIHIgPSBGSVBTX1JfTk9UX0lOU1RB TlRJQVRFRDsKLSsgICAgICAgIGdvdG8gZW5kOwotKyAgICB9Ci0rCi0rICAgIGlmIChvdXRsZW4g PiBkY3R4LT5tYXhfcmVxdWVzdCkgewotKyAgICAgICAgciA9IEZJUFNfUl9SRVFVRVNUX1RPT19M QVJHRV9GT1JfRFJCRzsKLSsgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rICAgIGlmIChh ZGlubGVuID4gZGN0eC0+bWF4X2FkaW4pIHsKLSsgICAgICAgIHIgPSBGSVBTX1JfQURESVRJT05B TF9JTlBVVF9UT09fTE9ORzsKLSsgICAgICAgIGdvdG8gZW5kOwotKyAgICB9Ci0rCi0rICAgIGlm IChkY3R4LT5pZmxhZ3MgJiBEUkJHX0NVU1RPTV9SRVNFRUQpCi0rICAgICAgICBkY3R4LT5nZW5l cmF0ZShkY3R4LCBOVUxMLCBvdXRsZW4sIE5VTEwsIDApOwotKyAgICBlbHNlIGlmIChkY3R4LT5y ZXNlZWRfY291bnRlciA+PSBkY3R4LT5yZXNlZWRfaW50ZXJ2YWwpCi0rICAgICAgICBkY3R4LT5z dGF0dXMgPSBEUkJHX1NUQVRVU19SRVNFRUQ7Ci0rCi0rICAgIGlmIChkY3R4LT5zdGF0dXMgPT0g RFJCR19TVEFUVVNfUkVTRUVEIHx8IHByZWRpY3Rpb25fcmVzaXN0YW5jZSkgewotKyAgICAgICAg LyogSWYgcHJlZGljdGlvbiByZXNpc3RhbmNlIHJlcXVlc3QgZG9uJ3QgZG8gaGVhbHRoIGNoZWNr ICovCi0rICAgICAgICBpbnQgaGNoZWNrID0gcHJlZGljdGlvbl9yZXNpc3RhbmNlID8gMCA6IDE7 Ci0rCi0rICAgICAgICBpZiAoIWRyYmdfcmVzZWVkKGRjdHgsIGFkaW4sIGFkaW5sZW4sIGhjaGVj aykpIHsKLSsgICAgICAgICAgICByID0gRklQU19SX1JFU0VFRF9FUlJPUjsKLSsgICAgICAgICAg ICBnb3RvIGVuZDsKLSsgICAgICAgIH0KLSsgICAgICAgIGFkaW4gPSBOVUxMOwotKyAgICAgICAg YWRpbmxlbiA9IDA7Ci0rICAgIH0KLSsKLSsgICAgaWYgKCFkY3R4LT5nZW5lcmF0ZShkY3R4LCBv dXQsIG91dGxlbiwgYWRpbiwgYWRpbmxlbikpIHsKLSsgICAgICAgIHIgPSBGSVBTX1JfR0VORVJB VEVfRVJST1I7Ci0rICAgICAgICBkY3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19FUlJPUjsKLSsg ICAgICAgIGdvdG8gZW5kOwotKyAgICB9Ci0rICAgIGlmICghKGRjdHgtPmlmbGFncyAmIERSQkdf Q1VTVE9NX1JFU0VFRCkpIHsKLSsgICAgICAgIGlmIChkY3R4LT5yZXNlZWRfY291bnRlciA+PSBk Y3R4LT5yZXNlZWRfaW50ZXJ2YWwpCi0rICAgICAgICAgICAgZGN0eC0+c3RhdHVzID0gRFJCR19T VEFUVVNfUkVTRUVEOwotKyAgICAgICAgZWxzZQotKyAgICAgICAgICAgIGRjdHgtPnJlc2VlZF9j b3VudGVyKys7Ci0rICAgIH0KLSsKLSsgZW5kOgotKyAgICBpZiAocikgewotKyAgICAgICAgaWYg KCEoZGN0eC0+aWZsYWdzICYgRFJCR19GTEFHX05PRVJSKSkKLSsgICAgICAgICAgICBGSVBTZXJy KEZJUFNfRl9GSVBTX0RSQkdfR0VORVJBVEUsIHIpOwotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAg IH0KLSsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK2ludCBGSVBTX2RyYmdfdW5pbnN0YW50aWF0 ZShEUkJHX0NUWCAqZGN0eCkKLSt7Ci0rICAgIGludCBydjsKLSsgICAgaWYgKCFkY3R4LT51bmlu c3RhbnRpYXRlKQotKyAgICAgICAgcnYgPSAxOwotKyAgICBlbHNlCi0rICAgICAgICBydiA9IGRj dHgtPnVuaW5zdGFudGlhdGUoZGN0eCk7Ci0rICAgIC8qIEFsdGhvdWdoIHdlJ2QgbGlrZSB0byBj bGVhbnNlIGhlcmUgd2UgY2FuJ3QgYmVjYXVzZSB3ZSBoYXZlIHRvCi0rICAgICAqIHRlc3QgdGhl IHVuaW5zdGFudGlhdGUgcmVhbGx5IHplcm9lcyB0aGUgZGF0YS4KLSsgICAgICovCi0rICAgIG1l bXNldCgmZGN0eC0+ZCwgMCwgc2l6ZW9mKGRjdHgtPmQpKTsKLSsgICAgZGN0eC0+c3RhdHVzID0g RFJCR19TVEFUVVNfVU5JTklUSUFMSVNFRDsKLSsgICAgLyogSWYgbWV0aG9kIGhhcyBwcm9ibGVt cyB1bmluc3RhbnRpYXRpbmcsIHJldHVybiBlcnJvciAqLwotKyAgICByZXR1cm4gcnY7Ci0rfQot KwotK2ludCBGSVBTX2RyYmdfc2V0X2NhbGxiYWNrcyhEUkJHX0NUWCAqZGN0eCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICgqZ2V0X2VudHJvcHkpIChEUkJHX0NUWCAqY3R4 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGNoYXIgKipwb3V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBlbnRyb3B5LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtaW5fbGVuLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtYXhfbGVuKSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmNsZWFudXBfZW50cm9weSkgKERSQkdf Q1RYICpjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2xlbiksCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpemVfdCBlbnRyb3B5X2Jsb2NrbGVuLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaXplX3QgKCpnZXRfbm9uY2UpIChEUkJHX0NUWCAqY3R4LAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoq cG91dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IGVudHJvcHksIHNpemVfdCBtaW5fbGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWF4X2xlbiksCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZvaWQgKCpjbGVhbnVwX25vbmNlKSAoRFJCR19DVFggKmN0eCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj aGFyICpvdXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZV90IG9sZW4pKQotK3sKLSsgICAgaWYgKGRjdHgtPnN0YXR1cyAhPSBEUkJHX1NU QVRVU19VTklOSVRJQUxJU0VEKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIGRjdHgtPmVudHJv cHlfYmxvY2tsZW4gPSBlbnRyb3B5X2Jsb2NrbGVuOwotKyAgICBkY3R4LT5nZXRfZW50cm9weSA9 IGdldF9lbnRyb3B5OwotKyAgICBkY3R4LT5jbGVhbnVwX2VudHJvcHkgPSBjbGVhbnVwX2VudHJv cHk7Ci0rICAgIGRjdHgtPmdldF9ub25jZSA9IGdldF9ub25jZTsKLSsgICAgZGN0eC0+Y2xlYW51 cF9ub25jZSA9IGNsZWFudXBfbm9uY2U7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLStpbnQgRklQ U19kcmJnX3NldF9yYW5kX2NhbGxiYWNrcyhEUkJHX0NUWCAqZGN0eCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplX3QgKCpnZXRfYWRpbikgKERSQkdfQ1RYICpjdHgsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBjaGFyICoqcG91dCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p ZCAoKmNsZWFudXBfYWRpbikgKERSQkdfQ1RYICpjdHgsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZV90IG9sZW4pLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKnJhbmRf c2VlZF9jYikgKERSQkdfQ1RYICpjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYnVmLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW0pLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKnJhbmRfYWRkX2NiKSAoRFJCR19DVFgg KmN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHZvaWQgKmJ1ZiwgaW50IG51bSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBlbnRyb3B5KSkKLSt7Ci0rICAgIGlm IChkY3R4LT5zdGF0dXMgIT0gRFJCR19TVEFUVVNfVU5JTklUSUFMSVNFRCkKLSsgICAgICAgIHJl dHVybiAwOwotKyAgICBkY3R4LT5nZXRfYWRpbiA9IGdldF9hZGluOwotKyAgICBkY3R4LT5jbGVh bnVwX2FkaW4gPSBjbGVhbnVwX2FkaW47Ci0rICAgIGRjdHgtPnJhbmRfc2VlZF9jYiA9IHJhbmRf c2VlZF9jYjsKLSsgICAgZGN0eC0+cmFuZF9hZGRfY2IgPSByYW5kX2FkZF9jYjsKLSsgICAgcmV0 dXJuIDE7Ci0rfQotKwotK3ZvaWQgKkZJUFNfZHJiZ19nZXRfYXBwX2RhdGEoRFJCR19DVFggKmRj dHgpCi0rewotKyAgICByZXR1cm4gZGN0eC0+YXBwX2RhdGE7Ci0rfQotKwotK3ZvaWQgRklQU19k cmJnX3NldF9hcHBfZGF0YShEUkJHX0NUWCAqZGN0eCwgdm9pZCAqYXBwX2RhdGEpCi0rewotKyAg ICBkY3R4LT5hcHBfZGF0YSA9IGFwcF9kYXRhOwotK30KLSsKLStzaXplX3QgRklQU19kcmJnX2dl dF9ibG9ja2xlbmd0aChEUkJHX0NUWCAqZGN0eCkKLSt7Ci0rICAgIHJldHVybiBkY3R4LT5ibG9j a2xlbmd0aDsKLSt9Ci0rCi0raW50IEZJUFNfZHJiZ19nZXRfc3RyZW5ndGgoRFJCR19DVFggKmRj dHgpCi0rewotKyAgICByZXR1cm4gZGN0eC0+c3RyZW5ndGg7Ci0rfQotKwotK3ZvaWQgRklQU19k cmJnX3NldF9jaGVja19pbnRlcnZhbChEUkJHX0NUWCAqZGN0eCwgaW50IGludGVydmFsKQotK3sK LSsgICAgZGN0eC0+aGVhbHRoX2NoZWNrX2ludGVydmFsID0gaW50ZXJ2YWw7Ci0rfQotKwotK3Zv aWQgRklQU19kcmJnX3NldF9yZXNlZWRfaW50ZXJ2YWwoRFJCR19DVFggKmRjdHgsIGludCBpbnRl cnZhbCkKLSt7Ci0rICAgIGRjdHgtPnJlc2VlZF9pbnRlcnZhbCA9IGludGVydmFsOwotK30KLSsK LStzdGF0aWMgaW50IGRyYmdfc3RpY2sgPSAwOwotKwotK3ZvaWQgRklQU19kcmJnX3N0aWNrKGlu dCBvbm9mZikKLSt7Ci0rICAgIGRyYmdfc3RpY2sgPSBvbm9mZjsKLSt9Ci0rCi0rLyogQ29udGlu dW91cyBEUkJHIHV0aWxpdHkgZnVuY3Rpb24gKi8KLStpbnQgZmlwc19kcmJnX2Nwcm5nX3Rlc3Qo RFJCR19DVFggKmRjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm91dCkKLSt7Ci0rICAgIC8qIE5v IENQUk5HIGluIHRlc3QgbW9kZSAqLwotKyAgICBpZiAoZGN0eC0+eGZsYWdzICYgRFJCR19GTEFH X1RFU1QpCi0rICAgICAgICByZXR1cm4gMTsKLSsgICAgLyogQ2hlY2sgYmxvY2sgaXMgdmFsaWQ6 IHNob3VsZCBuZXZlciBoYXBwZW4gKi8KLSsgICAgaWYgKGRjdHgtPmxiX3ZhbGlkID09IDApIHsK LSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19DUFJOR19URVNULCBGSVBTX1JfSU5U RVJOQUxfRVJST1IpOwotKyAgICAgICAgZmlwc19zZXRfc2VsZnRlc3RfZmFpbCgpOwotKyAgICAg ICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsgICAgaWYgKGRyYmdfc3RpY2spCi0rICAgICAgICBtZW1j cHkoZGN0eC0+bGIsIG91dCwgZGN0eC0+YmxvY2tsZW5ndGgpOwotKyAgICAvKiBDaGVjayBhZ2Fp bnN0IGxhc3QgYmxvY2s6IGZhaWwgaWYgbWF0Y2ggKi8KLSsgICAgaWYgKCFtZW1jbXAoZGN0eC0+ bGIsIG91dCwgZGN0eC0+YmxvY2tsZW5ndGgpKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9G SVBTX0RSQkdfQ1BSTkdfVEVTVCwgRklQU19SX0RSQkdfU1RVQ0spOwotKyAgICAgICAgZmlwc19z ZXRfc2VsZnRlc3RfZmFpbCgpOwotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsgICAgLyog U2F2ZSBsYXN0IGJsb2NrIGZvciBuZXh0IGNvbXBhcmlzb24gKi8KLSsgICAgbWVtY3B5KGRjdHgt PmxiLCBvdXQsIGRjdHgtPmJsb2NrbGVuZ3RoKTsKLSsgICAgcmV0dXJuIDE7Ci0rfQotZGlmZiAt dXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX3JhbmQuYy5maXBzIG9wZW5z c2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19yYW5kLmMKLS0tLSBvcGVuc3NsLTEuMC4y aS9jcnlwdG8vZmlwcy9maXBzX2RyYmdfcmFuZC5jLmZpcHMJMjAxNi0wOS0yMiAxMzozNTo1Ny4w MTUyMjA5NTEgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX2RyYmdf cmFuZC5jCTIwMTYtMDktMjIgMTM6MzU6NTcuMDE1MjIwOTUxICswMjAwCi1AQCAtMCwwICsxLDE2 NiBAQAotKy8qIGZpcHMvcmFuZC9maXBzX2RyYmdfcmFuZC5jICovCi0rLyogV3JpdHRlbiBieSBE ciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRoZSBPcGVuU1NMCi0r ICogcHJvamVjdC4KLSsgKi8KLSsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMjAx MSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJl ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig d2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3Ry aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAg IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0 aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0 ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2Fy ZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhp cyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9q ZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5P cGVuU1NMLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFu ZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBv ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsg KiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBs ZWFzZSBjb250YWN0Ci0rICogICAgbGljZW5zaW5nQE9wZW5TU0wub3JnLgotKyAqCi0rICogNS4g UHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9w ZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdp dGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJv amVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVy IG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAg ICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNT TCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8v d3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ IFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1Ig SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0r ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI QUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhF TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9U IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7 Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ VElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBU SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKi8KLSsK LSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Ci0rI2lu Y2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgotKyNpbmNs dWRlIDxvcGVuc3NsL2ZpcHNfcmFuZC5oPgotKyNpbmNsdWRlICJmaXBzX3JhbmRfbGNsLmgiCi0r Ci0rLyogTWFwcGluZyBvZiBTUDgwMC05MCBEUkJHcyB0byBPcGVuU1NMIFJBTkRfTUVUSE9EICov Ci0rCi0rLyogU2luY2Ugd2Ugb25seSBoYXZlIG9uZSBnbG9iYWwgUFJORyB1c2VkIGF0IGFueSB0 aW1lIGluIE9wZW5TU0wgdXNlIGEgZ2xvYmFsCi0rICogdmFyaWFibGUgdG8gc3RvcmUgY29udGV4 dC4KLSsgKi8KLSsKLStzdGF0aWMgRFJCR19DVFggb3NzbF9kY3R4OwotKwotK0RSQkdfQ1RYICpG SVBTX2dldF9kZWZhdWx0X2RyYmcodm9pZCkKLSt7Ci0rICAgIHJldHVybiAmb3NzbF9kY3R4Owot K30KLSsKLStzdGF0aWMgaW50IGZpcHNfZHJiZ19ieXRlcyh1bnNpZ25lZCBjaGFyICpvdXQsIGlu dCBjb3VudCkKLSt7Ci0rICAgIERSQkdfQ1RYICpkY3R4ID0gJm9zc2xfZGN0eDsKLSsgICAgaW50 IHJ2ID0gMDsKLSsgICAgdW5zaWduZWQgY2hhciAqYWRpbiA9IE5VTEw7Ci0rICAgIHNpemVfdCBh ZGlubGVuID0gMDsKLSsgICAgQ1JZUFRPX3dfbG9jayhDUllQVE9fTE9DS19SQU5EKTsKLSsgICAg ZG8gewotKyAgICAgICAgc2l6ZV90IHJjbnQ7Ci0rICAgICAgICBpZiAoY291bnQgPiAoaW50KWRj dHgtPm1heF9yZXF1ZXN0KQotKyAgICAgICAgICAgIHJjbnQgPSBkY3R4LT5tYXhfcmVxdWVzdDsK LSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgICByY250ID0gY291bnQ7Ci0rICAgICAgICBpZiAo ZGN0eC0+Z2V0X2FkaW4pIHsKLSsgICAgICAgICAgICBhZGlubGVuID0gZGN0eC0+Z2V0X2FkaW4o ZGN0eCwgJmFkaW4pOwotKyAgICAgICAgICAgIGlmIChhZGlubGVuICYmICFhZGluKSB7Ci0rICAg ICAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19CWVRFUywKLSsgICAgICAgICAg ICAgICAgICAgICAgICBGSVBTX1JfRVJST1JfUkVUUklFVklOR19BRERJVElPTkFMX0lOUFVUKTsK LSsgICAgICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQot KyAgICAgICAgcnYgPSBGSVBTX2RyYmdfZ2VuZXJhdGUoZGN0eCwgb3V0LCByY250LCAwLCBhZGlu LCBhZGlubGVuKTsKLSsgICAgICAgIGlmIChhZGluKSB7Ci0rICAgICAgICAgICAgaWYgKGRjdHgt PmNsZWFudXBfYWRpbikKLSsgICAgICAgICAgICAgICAgZGN0eC0+Y2xlYW51cF9hZGluKGRjdHgs IGFkaW4sIGFkaW5sZW4pOwotKyAgICAgICAgICAgIGFkaW4gPSBOVUxMOwotKyAgICAgICAgfQot KyAgICAgICAgaWYgKCFydikKLSsgICAgICAgICAgICBnb3RvIGVycjsKLSsgICAgICAgIG91dCAr PSByY250OwotKyAgICAgICAgY291bnQgLT0gcmNudDsKLSsgICAgfQotKyAgICB3aGlsZSAoY291 bnQpOwotKyAgICBydiA9IDE7Ci0rIGVycjoKLSsgICAgQ1JZUFRPX3dfdW5sb2NrKENSWVBUT19M T0NLX1JBTkQpOwotKyAgICByZXR1cm4gcnY7Ci0rfQotKwotK3N0YXRpYyBpbnQgZmlwc19kcmJn X3BzZXVkbyh1bnNpZ25lZCBjaGFyICpvdXQsIGludCBjb3VudCkKLSt7Ci0rICAgIGlmIChmaXBz X2RyYmdfYnl0ZXMob3V0LCBjb3VudCkgPD0gMCkKLSsgICAgICAgIHJldHVybiAtMTsKLSsgICAg cmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBpbnQgZmlwc19kcmJnX3N0YXR1cyh2b2lkKQotK3sK LSsgICAgRFJCR19DVFggKmRjdHggPSAmb3NzbF9kY3R4OwotKyAgICBpbnQgcnY7Ci0rICAgIENS WVBUT19yX2xvY2soQ1JZUFRPX0xPQ0tfUkFORCk7Ci0rICAgIHJ2ID0gZGN0eC0+c3RhdHVzID09 IERSQkdfU1RBVFVTX1JFQURZID8gMSA6IDA7Ci0rICAgIENSWVBUT19yX3VubG9jayhDUllQVE9f TE9DS19SQU5EKTsKLSsgICAgcmV0dXJuIHJ2OwotK30KLSsKLStzdGF0aWMgdm9pZCBmaXBzX2Ry YmdfY2xlYW51cCh2b2lkKQotK3sKLSsgICAgRFJCR19DVFggKmRjdHggPSAmb3NzbF9kY3R4Owot KyAgICBDUllQVE9fd19sb2NrKENSWVBUT19MT0NLX1JBTkQpOwotKyAgICBGSVBTX2RyYmdfdW5p bnN0YW50aWF0ZShkY3R4KTsKLSsgICAgQ1JZUFRPX3dfdW5sb2NrKENSWVBUT19MT0NLX1JBTkQp OwotK30KLSsKLStzdGF0aWMgaW50IGZpcHNfZHJiZ19zZWVkKGNvbnN0IHZvaWQgKnNlZWQsIGlu dCBzZWVkbGVuKQotK3sKLSsgICAgRFJCR19DVFggKmRjdHggPSAmb3NzbF9kY3R4OwotKyAgICBp ZiAoZGN0eC0+cmFuZF9zZWVkX2NiKQotKyAgICAgICAgcmV0dXJuIGRjdHgtPnJhbmRfc2VlZF9j YihkY3R4LCBzZWVkLCBzZWVkbGVuKTsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBp bnQgZmlwc19kcmJnX2FkZChjb25zdCB2b2lkICpzZWVkLCBpbnQgc2VlZGxlbiwgZG91YmxlIGFk ZF9lbnRyb3B5KQotK3sKLSsgICAgRFJCR19DVFggKmRjdHggPSAmb3NzbF9kY3R4OwotKyAgICBp ZiAoZGN0eC0+cmFuZF9hZGRfY2IpCi0rICAgICAgICByZXR1cm4gZGN0eC0+cmFuZF9hZGRfY2Io ZGN0eCwgc2VlZCwgc2VlZGxlbiwgYWRkX2VudHJvcHkpOwotKyAgICByZXR1cm4gMTsKLSt9Ci0r Ci0rc3RhdGljIGNvbnN0IFJBTkRfTUVUSE9EIHJhbmRfZHJiZ19tZXRoID0gewotKyAgICBmaXBz X2RyYmdfc2VlZCwKLSsgICAgZmlwc19kcmJnX2J5dGVzLAotKyAgICBmaXBzX2RyYmdfY2xlYW51 cCwKLSsgICAgZmlwc19kcmJnX2FkZCwKLSsgICAgZmlwc19kcmJnX3BzZXVkbywKLSsgICAgZmlw c19kcmJnX3N0YXR1cwotK307Ci0rCi0rY29uc3QgUkFORF9NRVRIT0QgKkZJUFNfZHJiZ19tZXRo b2Qodm9pZCkKLSt7Ci0rICAgIHJldHVybiAmcmFuZF9kcmJnX21ldGg7Ci0rfQotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX3NlbGZ0ZXN0LmMuZmlwcyBvcGVu c3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX2RyYmdfc2VsZnRlc3QuYwotLS0tIG9wZW5zc2wt MS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19zZWxmdGVzdC5jLmZpcHMJMjAxNi0wOS0yMiAx MzozNTo1Ny4wMTUyMjA5NTEgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9m aXBzX2RyYmdfc2VsZnRlc3QuYwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxNTIyMDk1MSArMDIwMAot QEAgLTAsMCArMSw4MjcgQEAKLSsvKiBmaXBzL3JhbmQvZmlwc19kcmJnX3NlbGZ0ZXN0LmMgKi8K LSsvKiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5zc2wub3JnKSBm b3IgdGhlIE9wZW5TU0wKLSsgKiBwcm9qZWN0LgotKyAqLwotKy8qID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICog Q29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2Vy dmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsg KgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg YWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICog ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs cyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFs bCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhp cwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdt ZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5 IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xr aXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9w ZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8K LSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29m dHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0 ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBsaWNlbnNpbmdAT3BlblNTTC5v cmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkg bm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIg aW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBv ZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFu eSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25v d2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxv cGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NM IFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdB UkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQot KyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM SU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05U UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK LSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE SU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH T09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig QlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklM SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJ U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg QURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotKyAqLwotKwotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8b3BlbnNz bC9jcnlwdG8uaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KLSsjaW5jbHVkZSA8b3BlbnNz bC9maXBzX3JhbmQuaD4KLSsjaW5jbHVkZSAiZmlwc19yYW5kX2xjbC5oIgotKyNpbmNsdWRlICJm aXBzX2xvY2wuaCIKLSsKLSsjaW5jbHVkZSAiZmlwc19kcmJnX3NlbGZ0ZXN0LmgiCi0rCi0rdHlw ZWRlZiBzdHJ1Y3QgewotKyAgICBpbnQgcG9zdDsKLSsgICAgaW50IG5pZDsKLSsgICAgdW5zaWdu ZWQgaW50IGZsYWdzOwotKwotKyAgICAvKiBLQVQgZGF0YSBmb3Igbm8gUFIgKi8KLSsgICAgY29u c3QgdW5zaWduZWQgY2hhciAqZW50OwotKyAgICBzaXplX3QgZW50bGVuOwotKyAgICBjb25zdCB1 bnNpZ25lZCBjaGFyICpub25jZTsKLSsgICAgc2l6ZV90IG5vbmNlbGVuOwotKyAgICBjb25zdCB1 bnNpZ25lZCBjaGFyICpwZXJzOwotKyAgICBzaXplX3QgcGVyc2xlbjsKLSsgICAgY29uc3QgdW5z aWduZWQgY2hhciAqYWRpbjsKLSsgICAgc2l6ZV90IGFkaW5sZW47Ci0rICAgIGNvbnN0IHVuc2ln bmVkIGNoYXIgKmVudHJlc2VlZDsKLSsgICAgc2l6ZV90IGVudHJlc2VlZGxlbjsKLSsgICAgY29u c3QgdW5zaWduZWQgY2hhciAqYWRpbnJlc2VlZDsKLSsgICAgc2l6ZV90IGFkaW5yZXNlZWRsZW47 Ci0rICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4yOwotKyAgICBzaXplX3QgYWRpbjJsZW47 Ci0rICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmthdDsKLSsgICAgc2l6ZV90IGthdGxlbjsKLSsg ICAgY29uc3QgdW5zaWduZWQgY2hhciAqa2F0MjsKLSsgICAgc2l6ZV90IGthdDJsZW47Ci0rCi0r ICAgIC8qIEtBVCBkYXRhIGZvciBQUiAqLwotKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICplbnRf cHI7Ci0rICAgIHNpemVfdCBlbnRsZW5fcHI7Ci0rICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm5v bmNlX3ByOwotKyAgICBzaXplX3Qgbm9uY2VsZW5fcHI7Ci0rICAgIGNvbnN0IHVuc2lnbmVkIGNo YXIgKnBlcnNfcHI7Ci0rICAgIHNpemVfdCBwZXJzbGVuX3ByOwotKyAgICBjb25zdCB1bnNpZ25l ZCBjaGFyICphZGluX3ByOwotKyAgICBzaXplX3QgYWRpbmxlbl9wcjsKLSsgICAgY29uc3QgdW5z aWduZWQgY2hhciAqZW50cHJfcHI7Ci0rICAgIHNpemVfdCBlbnRwcmxlbl9wcjsKLSsgICAgY29u c3QgdW5zaWduZWQgY2hhciAqYWRpbmdfcHI7Ci0rICAgIHNpemVfdCBhZGluZ2xlbl9wcjsKLSsg ICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50Z19wcjsKLSsgICAgc2l6ZV90IGVudGdsZW5fcHI7 Ci0rICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmthdF9wcjsKLSsgICAgc2l6ZV90IGthdGxlbl9w cjsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hhciAqa2F0Ml9wcjsKLSsgICAgc2l6ZV90IGthdDJs ZW5fcHI7Ci0rCi0rfSBEUkJHX1NFTEZURVNUX0RBVEE7Ci0rCi0rI2RlZmluZSBtYWtlX2RyYmdf dGVzdF9kYXRhKG5pZCwgZmxhZywgcHIsIHApIHtwLCBuaWQsIGZsYWcgfCBEUkJHX0ZMQUdfVEVT VCwgXAotKyAgICAgICAgcHIjI19lbnRyb3B5aW5wdXQsIHNpemVvZihwciMjX2VudHJvcHlpbnB1 dCksIFwKLSsgICAgICAgIHByIyNfbm9uY2UsIHNpemVvZihwciMjX25vbmNlKSwgXAotKyAgICAg ICAgcHIjI19wZXJzb25hbGl6YXRpb25zdHJpbmcsIHNpemVvZihwciMjX3BlcnNvbmFsaXphdGlv bnN0cmluZyksIFwKLSsgICAgICAgIHByIyNfYWRkaXRpb25hbGlucHV0LCBzaXplb2YocHIjI19h ZGRpdGlvbmFsaW5wdXQpLCBcCi0rICAgICAgICBwciMjX2VudHJvcHlpbnB1dHJlc2VlZCwgc2l6 ZW9mKHByIyNfZW50cm9weWlucHV0cmVzZWVkKSwgXAotKyAgICAgICAgcHIjI19hZGRpdGlvbmFs aW5wdXRyZXNlZWQsIHNpemVvZihwciMjX2FkZGl0aW9uYWxpbnB1dHJlc2VlZCksIFwKLSsgICAg ICAgIHByIyNfYWRkaXRpb25hbGlucHV0Miwgc2l6ZW9mKHByIyNfYWRkaXRpb25hbGlucHV0Miks IFwKLSsgICAgICAgIHByIyNfaW50X3JldHVybmVkYml0cywgc2l6ZW9mKHByIyNfaW50X3JldHVy bmVkYml0cyksIFwKLSsgICAgICAgIHByIyNfcmV0dXJuZWRiaXRzLCBzaXplb2YocHIjI19yZXR1 cm5lZGJpdHMpLCBcCi0rICAgICAgICBwciMjX3ByX2VudHJvcHlpbnB1dCwgc2l6ZW9mKHByIyNf cHJfZW50cm9weWlucHV0KSwgXAotKyAgICAgICAgcHIjI19wcl9ub25jZSwgc2l6ZW9mKHByIyNf cHJfbm9uY2UpLCBcCi0rICAgICAgICBwciMjX3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZywgc2l6 ZW9mKHByIyNfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nKSwgXAotKyAgICAgICAgcHIjI19wcl9h ZGRpdGlvbmFsaW5wdXQsIHNpemVvZihwciMjX3ByX2FkZGl0aW9uYWxpbnB1dCksIFwKLSsgICAg ICAgIHByIyNfcHJfZW50cm9weWlucHV0cHIsIHNpemVvZihwciMjX3ByX2VudHJvcHlpbnB1dHBy KSwgXAotKyAgICAgICAgcHIjI19wcl9hZGRpdGlvbmFsaW5wdXQyLCBzaXplb2YocHIjI19wcl9h ZGRpdGlvbmFsaW5wdXQyKSwgXAotKyAgICAgICAgcHIjI19wcl9lbnRyb3B5aW5wdXRwcjIsIHNp emVvZihwciMjX3ByX2VudHJvcHlpbnB1dHByMiksIFwKLSsgICAgICAgIHByIyNfcHJfaW50X3Jl dHVybmVkYml0cywgc2l6ZW9mKHByIyNfcHJfaW50X3JldHVybmVkYml0cyksIFwKLSsgICAgICAg IHByIyNfcHJfcmV0dXJuZWRiaXRzLCBzaXplb2YocHIjI19wcl9yZXR1cm5lZGJpdHMpLCBcCi0r ICAgICAgICB9Ci0rCi0rI2RlZmluZSBtYWtlX2RyYmdfdGVzdF9kYXRhX2RmKG5pZCwgcHIsIHAp IFwKLSsgICAgICAgIG1ha2VfZHJiZ190ZXN0X2RhdGEobmlkLCBEUkJHX0ZMQUdfQ1RSX1VTRV9E RiwgcHIsIHApCi0rCi0rI2RlZmluZSBtYWtlX2RyYmdfdGVzdF9kYXRhX2VjKGN1cnZlLCBtZCwg cHIsIHApIFwKLSsgICAgICAgIG1ha2VfZHJiZ190ZXN0X2RhdGEoKGN1cnZlIDw8IDE2KSB8IG1k ICwgMCwgcHIsIHApCi0rCi0rc3RhdGljIERSQkdfU0VMRlRFU1RfREFUQSBkcmJnX3Rlc3RbXSA9 IHsKLSsgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YV9kZihOSURfYWVzXzEyOF9jdHIsIGFlc18xMjhf dXNlX2RmLCAwKSwKLSsgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YV9kZihOSURfYWVzXzE5Ml9jdHIs IGFlc18xOTJfdXNlX2RmLCAwKSwKLSsgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YV9kZihOSURfYWVz XzI1Nl9jdHIsIGFlc18yNTZfdXNlX2RmLCAxKSwKLSsgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YShO SURfYWVzXzEyOF9jdHIsIDAsIGFlc18xMjhfbm9fZGYsIDApLAotKyAgICBtYWtlX2RyYmdfdGVz dF9kYXRhKE5JRF9hZXNfMTkyX2N0ciwgMCwgYWVzXzE5Ml9ub19kZiwgMCksCi0rICAgIG1ha2Vf ZHJiZ190ZXN0X2RhdGEoTklEX2Flc18yNTZfY3RyLCAwLCBhZXNfMjU2X25vX2RmLCAxKSwKLSsg ICAgbWFrZV9kcmJnX3Rlc3RfZGF0YShOSURfc2hhMSwgMCwgc2hhMSwgMCksCi0rICAgIG1ha2Vf ZHJiZ190ZXN0X2RhdGEoTklEX3NoYTIyNCwgMCwgc2hhMjI0LCAwKSwKLSsgICAgbWFrZV9kcmJn X3Rlc3RfZGF0YShOSURfc2hhMjU2LCAwLCBzaGEyNTYsIDEpLAotKyAgICBtYWtlX2RyYmdfdGVz dF9kYXRhKE5JRF9zaGEzODQsIDAsIHNoYTM4NCwgMCksCi0rICAgIG1ha2VfZHJiZ190ZXN0X2Rh dGEoTklEX3NoYTUxMiwgMCwgc2hhNTEyLCAwKSwKLSsgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YShO SURfaG1hY1dpdGhTSEExLCAwLCBobWFjX3NoYTEsIDApLAotKyAgICBtYWtlX2RyYmdfdGVzdF9k YXRhKE5JRF9obWFjV2l0aFNIQTIyNCwgMCwgaG1hY19zaGEyMjQsIDApLAotKyAgICBtYWtlX2Ry YmdfdGVzdF9kYXRhKE5JRF9obWFjV2l0aFNIQTI1NiwgMCwgaG1hY19zaGEyNTYsIDEpLAotKyAg ICBtYWtlX2RyYmdfdGVzdF9kYXRhKE5JRF9obWFjV2l0aFNIQTM4NCwgMCwgaG1hY19zaGEzODQs IDApLAotKyAgICBtYWtlX2RyYmdfdGVzdF9kYXRhKE5JRF9obWFjV2l0aFNIQTUxMiwgMCwgaG1h Y19zaGE1MTIsIDApLAotKyAgICB7MCwgMCwgMH0KLSt9OwotKwotK3R5cGVkZWYgc3RydWN0IHsK LSsgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50OwotKyAgICBzaXplX3QgZW50bGVuOwotKyAg ICBpbnQgZW50Y250OwotKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpub25jZTsKLSsgICAgc2l6 ZV90IG5vbmNlbGVuOwotKyAgICBpbnQgbm9uY2VjbnQ7Ci0rfSBURVNUX0VOVDsKLSsKLStzdGF0 aWMgc2l6ZV90IHRlc3RfZW50cm9weShEUkJHX0NUWCAqZGN0eCwgdW5zaWduZWQgY2hhciAqKnBv dXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVudHJvcHksIHNpemVfdCBtaW5f bGVuLCBzaXplX3QgbWF4X2xlbikKLSt7Ci0rICAgIFRFU1RfRU5UICp0ID0gRklQU19kcmJnX2dl dF9hcHBfZGF0YShkY3R4KTsKLSsgICAgKnBvdXQgPSAodW5zaWduZWQgY2hhciAqKXQtPmVudDsK LSsgICAgdC0+ZW50Y250Kys7Ci0rICAgIHJldHVybiB0LT5lbnRsZW47Ci0rfQotKwotK3N0YXRp YyBzaXplX3QgdGVzdF9ub25jZShEUkJHX0NUWCAqZGN0eCwgdW5zaWduZWQgY2hhciAqKnBvdXQs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlbnRyb3B5LCBzaXplX3QgbWluX2xlbiwg c2l6ZV90IG1heF9sZW4pCi0rewotKyAgICBURVNUX0VOVCAqdCA9IEZJUFNfZHJiZ19nZXRfYXBw X2RhdGEoZGN0eCk7Ci0rICAgICpwb3V0ID0gKHVuc2lnbmVkIGNoYXIgKil0LT5ub25jZTsKLSsg ICAgdC0+bm9uY2VjbnQrKzsKLSsgICAgcmV0dXJuIHQtPm5vbmNlbGVuOwotK30KLSsKLStzdGF0 aWMgaW50IGZpcHNfZHJiZ19zaW5nbGVfa2F0KERSQkdfQ1RYICpkY3R4LCBEUkJHX1NFTEZURVNU X0RBVEEgKiB0ZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBxdWljaykK LSt7Ci0rICAgIFRFU1RfRU5UIHQ7Ci0rICAgIGludCBydiA9IDA7Ci0rICAgIHNpemVfdCBhZGlu bGVuOwotKyAgICB1bnNpZ25lZCBjaGFyIHJhbmRvdXRbMTAyNF07Ci0rCi0rICAgIC8qIEluaXRp YWwgdGVzdCB3aXRob3V0IFBSICovCi0rCi0rICAgIC8qIEluc3RhbnRpYXRlIERSQkcgd2l0aCB0 ZXN0IGVudHJvcHksIG5vbmNlIGFuZCBwZXJzb25hbGlzYXRpb24KLSsgICAgICogc3RyaW5nLgot KyAgICAgKi8KLSsKLSsgICAgaWYgKCFGSVBTX2RyYmdfaW5pdChkY3R4LCB0ZC0+bmlkLCB0ZC0+ ZmxhZ3MpKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIGlmICghRklQU19kcmJnX3NldF9jYWxs YmFja3MoZGN0eCwgdGVzdF9lbnRyb3B5LCAwLCAwLCB0ZXN0X25vbmNlLCAwKSkKLSsgICAgICAg IHJldHVybiAwOwotKwotKyAgICBGSVBTX2RyYmdfc2V0X2FwcF9kYXRhKGRjdHgsICZ0KTsKLSsK LSsgICAgdC5lbnQgPSB0ZC0+ZW50OwotKyAgICB0LmVudGxlbiA9IHRkLT5lbnRsZW47Ci0rICAg IHQubm9uY2UgPSB0ZC0+bm9uY2U7Ci0rICAgIHQubm9uY2VsZW4gPSB0ZC0+bm9uY2VsZW47Ci0r ICAgIHQuZW50Y250ID0gMDsKLSsgICAgdC5ub25jZWNudCA9IDA7Ci0rCi0rICAgIGlmICghRklQ U19kcmJnX2luc3RhbnRpYXRlKGRjdHgsIHRkLT5wZXJzLCB0ZC0+cGVyc2xlbikpCi0rICAgICAg ICBnb3RvIGVycjsKLSsKLSsgICAgLyogTm90ZSBmb3IgQ1RSIHdpdGhvdXQgREYgc29tZSBhZGRp dGlvbmFsIGlucHV0IHZhbHVlcwotKyAgICAgKiBpZ25vcmUgYnl0ZXMgYWZ0ZXIgdGhlIGtleWxl bmd0aDogc28gcmVkdWNlIGFkaW5sZW4KLSsgICAgICogdG8gaGFsZiB0byBlbnN1cmUgaW52YWxp ZCBkYXRhIGlzIGZlZCBpbi4KLSsgICAgICovCi0rICAgIGlmICghZmlwc19wb3N0X2NvcnJ1cHQo RklQU19URVNUX0RSQkcsIGRjdHgtPnR5cGUsICZkY3R4LT5pZmxhZ3MpKQotKyAgICAgICAgYWRp bmxlbiA9IHRkLT5hZGlubGVuIC8gMjsKLSsgICAgZWxzZQotKyAgICAgICAgYWRpbmxlbiA9IHRk LT5hZGlubGVuOwotKwotKyAgICAvKiBHZW5lcmF0ZSB3aXRoIG5vIFBSIGFuZCB2ZXJpZnkgb3V0 cHV0IG1hdGNoZXMgZXhwZWN0ZWQgZGF0YSAqLwotKyAgICBpZiAoIUZJUFNfZHJiZ19nZW5lcmF0 ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0bGVuLCAwLCB0ZC0+YWRpbiwgYWRpbmxlbikpCi0rICAg ICAgICBnb3RvIGVycjsKLSsKLSsgICAgaWYgKG1lbWNtcChyYW5kb3V0LCB0ZC0+a2F0LCB0ZC0+ a2F0bGVuKSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX1NJTkdMRV9LQVQs IEZJUFNfUl9OT1BSX1RFU1QxX0ZBSUxVUkUpOwotKyAgICAgICAgZ290byBlcnIyOwotKyAgICB9 Ci0rICAgIC8qIElmIGFiYnJldmlhdGVkIFBPU1QgZW5kIG9mIHRlc3QgKi8KLSsgICAgaWYgKHF1 aWNrKSB7Ci0rICAgICAgICBydiA9IDE7Ci0rICAgICAgICBnb3RvIGVycjsKLSsgICAgfQotKyAg ICAvKiBSZXNlZWQgRFJCRyB3aXRoIHRlc3QgZW50cm9weSBhbmQgYWRkaXRpb25hbCBpbnB1dCAq LwotKyAgICB0LmVudCA9IHRkLT5lbnRyZXNlZWQ7Ci0rICAgIHQuZW50bGVuID0gdGQtPmVudHJl c2VlZGxlbjsKLSsKLSsgICAgaWYgKCFGSVBTX2RyYmdfcmVzZWVkKGRjdHgsIHRkLT5hZGlucmVz ZWVkLCB0ZC0+YWRpbnJlc2VlZGxlbikpCi0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgLyog R2VuZXJhdGUgd2l0aCBubyBQUiBhbmQgdmVyaWZ5IG91dHB1dCBtYXRjaGVzIGV4cGVjdGVkIGRh dGEgKi8KLSsgICAgaWYgKCFGSVBTX2RyYmdfZ2VuZXJhdGUoZGN0eCwgcmFuZG91dCwgdGQtPmth dDJsZW4sIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkLT5hZGluMiwgdGQtPmFk aW4ybGVuKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAgICBpZiAobWVtY21wKHJhbmRvdXQs IHRkLT5rYXQyLCB0ZC0+a2F0MmxlbikpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNf RFJCR19TSU5HTEVfS0FULCBGSVBTX1JfTk9QUl9URVNUMl9GQUlMVVJFKTsKLSsgICAgICAgIGdv dG8gZXJyMjsKLSsgICAgfQotKwotKyAgICBGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KTsK LSsKLSsgICAgLyogTm93IHRlc3Qgd2l0aCBQUiAqLwotKwotKyAgICAvKiBJbnN0YW50aWF0ZSBE UkJHIHdpdGggdGVzdCBlbnRyb3B5LCBub25jZSBhbmQgcGVyc29uYWxpc2F0aW9uCi0rICAgICAq IHN0cmluZy4KLSsgICAgICovCi0rICAgIGlmICghRklQU19kcmJnX2luaXQoZGN0eCwgdGQtPm5p ZCwgdGQtPmZsYWdzKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBpZiAoIUZJUFNfZHJiZ19z ZXRfY2FsbGJhY2tzKGRjdHgsIHRlc3RfZW50cm9weSwgMCwgMCwgdGVzdF9ub25jZSwgMCkpCi0r ICAgICAgICByZXR1cm4gMDsKLSsKLSsgICAgRklQU19kcmJnX3NldF9hcHBfZGF0YShkY3R4LCAm dCk7Ci0rCi0rICAgIHQuZW50ID0gdGQtPmVudF9wcjsKLSsgICAgdC5lbnRsZW4gPSB0ZC0+ZW50 bGVuX3ByOwotKyAgICB0Lm5vbmNlID0gdGQtPm5vbmNlX3ByOwotKyAgICB0Lm5vbmNlbGVuID0g dGQtPm5vbmNlbGVuX3ByOwotKyAgICB0LmVudGNudCA9IDA7Ci0rICAgIHQubm9uY2VjbnQgPSAw OwotKwotKyAgICBpZiAoIUZJUFNfZHJiZ19pbnN0YW50aWF0ZShkY3R4LCB0ZC0+cGVyc19wciwg dGQtPnBlcnNsZW5fcHIpKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIC8qIE5vdyBnZW5l cmF0ZSB3aXRoIFBSOiB3ZSBuZWVkIHRvIHN1cHBseSBlbnRyb3B5IGFzIHRoaXMgd2lsbAotKyAg ICAgKiBwZXJmb3JtIGEgcmVzZWVkIG9wZXJhdGlvbi4gQ2hlY2sgb3V0cHV0IG1hdGNoZXMgZXhw ZWN0ZWQgdmFsdWUuCi0rICAgICAqLwotKwotKyAgICB0LmVudCA9IHRkLT5lbnRwcl9wcjsKLSsg ICAgdC5lbnRsZW4gPSB0ZC0+ZW50cHJsZW5fcHI7Ci0rCi0rICAgIC8qIE5vdGUgZm9yIENUUiB3 aXRob3V0IERGIHNvbWUgYWRkaXRpb25hbCBpbnB1dCB2YWx1ZXMKLSsgICAgICogaWdub3JlIGJ5 dGVzIGFmdGVyIHRoZSBrZXlsZW5ndGg6IHNvIHJlZHVjZSBhZGlubGVuCi0rICAgICAqIHRvIGhh bGYgdG8gZW5zdXJlIGludmFsaWQgZGF0YSBpcyBmZWQgaW4uCi0rICAgICAqLwotKyAgICBpZiAo IWZpcHNfcG9zdF9jb3JydXB0KEZJUFNfVEVTVF9EUkJHLCBkY3R4LT50eXBlLCAmZGN0eC0+aWZs YWdzKSkKLSsgICAgICAgIGFkaW5sZW4gPSB0ZC0+YWRpbmxlbl9wciAvIDI7Ci0rICAgIGVsc2UK LSsgICAgICAgIGFkaW5sZW4gPSB0ZC0+YWRpbmxlbl9wcjsKLSsgICAgaWYgKCFGSVBTX2RyYmdf Z2VuZXJhdGUoZGN0eCwgcmFuZG91dCwgdGQtPmthdGxlbl9wciwgMSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGQtPmFkaW5fcHIsIGFkaW5sZW4pKQotKyAgICAgICAgZ290byBlcnI7 Ci0rCi0rICAgIGlmIChtZW1jbXAocmFuZG91dCwgdGQtPmthdF9wciwgdGQtPmthdGxlbl9wcikp IHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19TSU5HTEVfS0FULCBGSVBTX1Jf UFJfVEVTVDFfRkFJTFVSRSk7Ci0rICAgICAgICBnb3RvIGVycjI7Ci0rICAgIH0KLSsKLSsgICAg LyogTm93IGdlbmVyYXRlIGFnYWluIHdpdGggUFI6IHN1cHBseSBuZXcgZW50cm9weSBhZ2Fpbi4K LSsgICAgICogQ2hlY2sgb3V0cHV0IG1hdGNoZXMgZXhwZWN0ZWQgdmFsdWUuCi0rICAgICAqLwot KwotKyAgICB0LmVudCA9IHRkLT5lbnRnX3ByOwotKyAgICB0LmVudGxlbiA9IHRkLT5lbnRnbGVu X3ByOwotKwotKyAgICBpZiAoIUZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+ a2F0Mmxlbl9wciwgMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQtPmFkaW5nX3By LCB0ZC0+YWRpbmdsZW5fcHIpKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIGlmIChtZW1j bXAocmFuZG91dCwgdGQtPmthdDJfcHIsIHRkLT5rYXQybGVuX3ByKSkgewotKyAgICAgICAgRklQ U2VycihGSVBTX0ZfRklQU19EUkJHX1NJTkdMRV9LQVQsIEZJUFNfUl9QUl9URVNUMl9GQUlMVVJF KTsKLSsgICAgICAgIGdvdG8gZXJyMjsKLSsgICAgfQotKyAgICAvKiBBbGwgT0ssIHRlc3QgY29t cGxldGUgKi8KLSsgICAgcnYgPSAxOwotKwotKyBlcnI6Ci0rICAgIGlmIChydiA9PSAwKQotKyAg ICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX1NJTkdMRV9LQVQsIEZJUFNfUl9TRUxGVEVT VF9GQUlMRUQpOwotKyBlcnIyOgotKyAgICBGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KTsK LSsKLSsgICAgcmV0dXJuIHJ2OwotKwotK30KLSsKLSsvKiBJbml0aWFsaXNlIGEgRFJCRyBiYXNl ZCBvbiBzZWxmdGVzdCBkYXRhICovCi0rCi0rc3RhdGljIGludCBkb19kcmJnX2luaXQoRFJCR19D VFggKmRjdHgsIERSQkdfU0VMRlRFU1RfREFUQSAqIHRkLCBURVNUX0VOVCAqIHQpCi0rewotKwot KyAgICBpZiAoIUZJUFNfZHJiZ19pbml0KGRjdHgsIHRkLT5uaWQsIHRkLT5mbGFncykpCi0rICAg ICAgICByZXR1cm4gMDsKLSsKLSsgICAgaWYgKCFGSVBTX2RyYmdfc2V0X2NhbGxiYWNrcyhkY3R4 LCB0ZXN0X2VudHJvcHksIDAsIDAsIHRlc3Rfbm9uY2UsIDApKQotKyAgICAgICAgcmV0dXJuIDA7 Ci0rCi0rICAgIEZJUFNfZHJiZ19zZXRfYXBwX2RhdGEoZGN0eCwgdCk7Ci0rCi0rICAgIHQtPmVu dCA9IHRkLT5lbnQ7Ci0rICAgIHQtPmVudGxlbiA9IHRkLT5lbnRsZW47Ci0rICAgIHQtPm5vbmNl ID0gdGQtPm5vbmNlOwotKyAgICB0LT5ub25jZWxlbiA9IHRkLT5ub25jZWxlbjsKLSsgICAgdC0+ ZW50Y250ID0gMDsKLSsgICAgdC0+bm9uY2VjbnQgPSAwOwotKyAgICByZXR1cm4gMTsKLSt9Ci0r Ci0rLyogSW5pdGlhbGlzZSBhbmQgaW5zdGFudGlhdGUgRFJCRyBiYXNlZCBvbiBzZWxmdGVzdCBk YXRhICovCi0rc3RhdGljIGludCBkb19kcmJnX2luc3RhbnRpYXRlKERSQkdfQ1RYICpkY3R4LCBE UkJHX1NFTEZURVNUX0RBVEEgKiB0ZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VEVTVF9FTlQgKiB0KQotK3sKLSsgICAgaWYgKCFkb19kcmJnX2luaXQoZGN0eCwgdGQsIHQpKQot KyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIGlmICghRklQU19kcmJnX2luc3RhbnRpYXRlKGRjdHgs IHRkLT5wZXJzLCB0ZC0+cGVyc2xlbikpCi0rICAgICAgICByZXR1cm4gMDsKLSsKLSsgICAgcmV0 dXJuIDE7Ci0rfQotKwotKy8qIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgZXh0ZW5zaXZlIGVycm9y IGNoZWNraW5nIGFzIHJlcXVpcmVkIGJ5IFNQODAwLTkwLgotKyAqIEluZHVjZSBzZXZlcmFsIGZh aWx1cmUgbW9kZXMgYW5kIGNoZWNrIGFuIGVycm9yIGNvbmRpdGlvbiBpcyBzZXQuCi0rICogVGhp cyBmdW5jdGlvbiBhbG9uZyB3aXRoIGZpcHNfZHJiZ19zaW5nbGVfa2F0IHBlZm9ybXMgdGhlIGhl YWx0aCBjaGVja2luZwotKyAqIG9wZXJhdGlvbi4KLSsgKi8KLSsKLStzdGF0aWMgaW50IGZpcHNf ZHJiZ19lcnJvcl9jaGVjayhEUkJHX0NUWCAqZGN0eCwgRFJCR19TRUxGVEVTVF9EQVRBICogdGQp Ci0rewotKyAgICB1bnNpZ25lZCBjaGFyIHJhbmRvdXRbMTAyNF07Ci0rICAgIFRFU1RfRU5UIHQ7 Ci0rICAgIHNpemVfdCBpOwotKyAgICB1bnNpZ25lZCBpbnQgcmVzZWVkX2NvdW50ZXJfdG1wOwot KyAgICB1bnNpZ25lZCBjaGFyICpwID0gKHVuc2lnbmVkIGNoYXIgKilkY3R4OwotKwotKyAgICAv KiBJbml0aWFsaXNlIERSQkcgKi8KLSsKLSsgICAgaWYgKCFkb19kcmJnX2luaXQoZGN0eCwgdGQs ICZ0KSkKLSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAgICAvKiBEb24ndCByZXBvcnQgaW5kdWNl ZCBlcnJvcnMgKi8KLSsgICAgZGN0eC0+aWZsYWdzIHw9IERSQkdfRkxBR19OT0VSUjsKLSsKLSsg ICAgLyogUGVyc29uYWxpc2F0aW9uIHN0cmluZyB0ZXN0cyAqLwotKwotKyAgICAvKiBUZXN0IGRl dGVjdGlvbiBvZiB0b28gbGFyZ2UgcGVyc29ubGlzYXRpb24gc3RyaW5nICovCi0rCi0rICAgIGlm IChGSVBTX2RyYmdfaW5zdGFudGlhdGUoZGN0eCwgdGQtPnBlcnMsIGRjdHgtPm1heF9wZXJzICsg MSkgPiAwKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ss Ci0rICAgICAgICAgICAgICAgIEZJUFNfUl9QRVJTT05BTElTQVRJT05fRVJST1JfVU5ERVRFQ1RF RCk7Ci0rICAgICAgICBnb3RvIGVycjsKLSsgICAgfQotKwotKyAgICAvKiBFbnRyb3B5IHNvdXJj ZSB0ZXN0cyAqLwotKwotKyAgICAvKiBUZXN0IGVudHJvcHkgc291cmNlIGZhaWx1cmUgZGV0ZWNp b246IGkuZS4gcmV0dXJucyBubyBkYXRhICovCi0rCi0rICAgIHQuZW50bGVuID0gMDsKLSsKLSsg ICAgaWYgKEZJUFNfZHJiZ19pbnN0YW50aWF0ZShkY3R4LCB0ZC0+cGVycywgdGQtPnBlcnNsZW4p ID4gMCkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAot KyAgICAgICAgICAgICAgICBGSVBTX1JfRU5UUk9QWV9FUlJPUl9VTkRFVEVDVEVEKTsKLSsgICAg ICAgIGdvdG8gZXJyOwotKyAgICB9Ci0rCi0rICAgIC8qIFRyeSB0byBnZW5lcmF0ZSBvdXRwdXQg ZnJvbSB1bmluc3RhbnRpYXRlZCBEUkJHICovCi0rICAgIGlmIChGSVBTX2RyYmdfZ2VuZXJhdGUo ZGN0eCwgcmFuZG91dCwgdGQtPmthdGxlbiwgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICB0ZC0+YWRpbiwgdGQtPmFkaW5sZW4pKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBT X0RSQkdfRVJST1JfQ0hFQ0ssCi0rICAgICAgICAgICAgICAgIEZJUFNfUl9HRU5FUkFURV9FUlJP Ul9VTkRFVEVDVEVEKTsKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICB9Ci0rCi0rICAgIGRjdHgt PmlmbGFncyAmPSB+RFJCR19GTEFHX05PRVJSOwotKyAgICBpZiAoIUZJUFNfZHJiZ191bmluc3Rh bnRpYXRlKGRjdHgpKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1Jf Q0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VSUk9SKTsKLSsgICAgICAgIGdvdG8gZXJyOwot KyAgICB9Ci0rCi0rICAgIGlmICghZG9fZHJiZ19pbml0KGRjdHgsIHRkLCAmdCkpCi0rICAgICAg ICBnb3RvIGVycjsKLSsKLSsgICAgZGN0eC0+aWZsYWdzIHw9IERSQkdfRkxBR19OT0VSUjsKLSsK LSsgICAgLyogVGVzdCBpbnN1ZmZpY2llbnQgZW50cm9weSAqLwotKwotKyAgICB0LmVudGxlbiA9 IGRjdHgtPm1pbl9lbnRyb3B5IC0gMTsKLSsKLSsgICAgaWYgKEZJUFNfZHJiZ19pbnN0YW50aWF0 ZShkY3R4LCB0ZC0+cGVycywgdGQtPnBlcnNsZW4pID4gMCkgewotKyAgICAgICAgRklQU2VycihG SVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAotKyAgICAgICAgICAgICAgICBGSVBTX1JfRU5U Uk9QWV9FUlJPUl9VTkRFVEVDVEVEKTsKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICB9Ci0rCi0r ICAgIGRjdHgtPmlmbGFncyAmPSB+RFJCR19GTEFHX05PRVJSOwotKyAgICBpZiAoIUZJUFNfZHJi Z191bmluc3RhbnRpYXRlKGRjdHgpKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RS QkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VSUk9SKTsKLSsgICAgICAgIGdv dG8gZXJyOwotKyAgICB9Ci0rCi0rICAgIC8qIFRlc3QgdG9vIG11Y2ggZW50cm9weSAqLwotKwot KyAgICBpZiAoIWRvX2RyYmdfaW5pdChkY3R4LCB0ZCwgJnQpKQotKyAgICAgICAgZ290byBlcnI7 Ci0rCi0rICAgIGRjdHgtPmlmbGFncyB8PSBEUkJHX0ZMQUdfTk9FUlI7Ci0rCi0rICAgIHQuZW50 bGVuID0gZGN0eC0+bWF4X2VudHJvcHkgKyAxOwotKwotKyAgICBpZiAoRklQU19kcmJnX2luc3Rh bnRpYXRlKGRjdHgsIHRkLT5wZXJzLCB0ZC0+cGVyc2xlbikgPiAwKSB7Ci0rICAgICAgICBGSVBT ZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssCi0rICAgICAgICAgICAgICAgIEZJUFNf Ul9FTlRST1BZX0VSUk9SX1VOREVURUNURUQpOwotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIH0K LSsKLSsgICAgZGN0eC0+aWZsYWdzICY9IH5EUkJHX0ZMQUdfTk9FUlI7Ci0rICAgIGlmICghRklQ U19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCkpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJ UFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5TVEFOVElBVEVfRVJST1IpOwotKyAgICAg ICAgZ290byBlcnI7Ci0rICAgIH0KLSsKLSsgICAgLyogTm9uY2UgdGVzdHMgKi8KLSsKLSsgICAg LyogVGVzdCB0b28gc21hbGwgbm9uY2UgKi8KLSsKLSsgICAgaWYgKGRjdHgtPm1pbl9ub25jZSkg ewotKwotKyAgICAgICAgaWYgKCFkb19kcmJnX2luaXQoZGN0eCwgdGQsICZ0KSkKLSsgICAgICAg ICAgICBnb3RvIGVycjsKLSsKLSsgICAgICAgIGRjdHgtPmlmbGFncyB8PSBEUkJHX0ZMQUdfTk9F UlI7Ci0rCi0rICAgICAgICB0Lm5vbmNlbGVuID0gZGN0eC0+bWluX25vbmNlIC0gMTsKLSsKLSsg ICAgICAgIGlmIChGSVBTX2RyYmdfaW5zdGFudGlhdGUoZGN0eCwgdGQtPnBlcnMsIHRkLT5wZXJz bGVuKSA+IDApIHsKLSsgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1Jf Q0hFQ0ssCi0rICAgICAgICAgICAgICAgICAgICBGSVBTX1JfTk9OQ0VfRVJST1JfVU5ERVRFQ1RF RCk7Ci0rICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBkY3R4 LT5pZmxhZ3MgJj0gfkRSQkdfRkxBR19OT0VSUjsKLSsgICAgICAgIGlmICghRklQU19kcmJnX3Vu aW5zdGFudGlhdGUoZGN0eCkpIHsKLSsgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RS QkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VSUk9SKTsKLSsgICAgICAgICAg ICBnb3RvIGVycjsKLSsgICAgICAgIH0KLSsKLSsgICAgfQotKwotKyAgICAvKiBUZXN0IHRvbyBs YXJnZSBub25jZSAqLwotKwotKyAgICBpZiAoZGN0eC0+bWF4X25vbmNlKSB7Ci0rCi0rICAgICAg ICBpZiAoIWRvX2RyYmdfaW5pdChkY3R4LCB0ZCwgJnQpKQotKyAgICAgICAgICAgIGdvdG8gZXJy OwotKwotKyAgICAgICAgZGN0eC0+aWZsYWdzIHw9IERSQkdfRkxBR19OT0VSUjsKLSsKLSsgICAg ICAgIHQubm9uY2VsZW4gPSBkY3R4LT5tYXhfbm9uY2UgKyAxOwotKwotKyAgICAgICAgaWYgKEZJ UFNfZHJiZ19pbnN0YW50aWF0ZShkY3R4LCB0ZC0+cGVycywgdGQtPnBlcnNsZW4pID4gMCkgewot KyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywKLSsgICAg ICAgICAgICAgICAgICAgIEZJUFNfUl9OT05DRV9FUlJPUl9VTkRFVEVDVEVEKTsKLSsgICAgICAg ICAgICBnb3RvIGVycjsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGRjdHgtPmlmbGFncyAmPSB+ RFJCR19GTEFHX05PRVJSOwotKyAgICAgICAgaWYgKCFGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShk Y3R4KSkgewotKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVD SywgRklQU19SX1VOSU5TVEFOVElBVEVfRVJST1IpOwotKyAgICAgICAgICAgIGdvdG8gZXJyOwot KyAgICAgICAgfQotKwotKyAgICB9Ci0rCi0rICAgIC8qIEluc3RhbnRpYXRlIHdpdGggdmFsaWQg ZGF0YS4gKi8KLSsgICAgaWYgKCFkb19kcmJnX2luc3RhbnRpYXRlKGRjdHgsIHRkLCAmdCkpCi0r ICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgLyogQ2hlY2sgZ2VuZXJhdGlvbiBpcyBub3cgT0sg Ki8KLSsgICAgaWYgKCFGSVBTX2RyYmdfZ2VuZXJhdGUoZGN0eCwgcmFuZG91dCwgdGQtPmthdGxl biwgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQtPmFkaW4sIHRkLT5hZGlubGVu KSkKLSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAgICBkY3R4LT5pZmxhZ3MgfD0gRFJCR19GTEFH X05PRVJSOwotKwotKyAgICAvKiBSZXF1ZXN0IHRvbyBtdWNoIGRhdGEgZm9yIG9uZSByZXF1ZXN0 ICovCi0rICAgIGlmIChGSVBTX2RyYmdfZ2VuZXJhdGUoZGN0eCwgcmFuZG91dCwgZGN0eC0+bWF4 X3JlcXVlc3QgKyAxLCAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkLT5hZGluLCB0 ZC0+YWRpbmxlbikpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9D SEVDSywKLSsgICAgICAgICAgICAgICAgRklQU19SX1JFUVVFU1RfTEVOR1RIX0VSUk9SX1VOREVU RUNURUQpOwotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsKLSsgICAgLyogVHJ5IHRvbyBs YXJnZSBhZGRpdGlvbmFsIGlucHV0ICovCi0rICAgIGlmIChGSVBTX2RyYmdfZ2VuZXJhdGUoZGN0 eCwgcmFuZG91dCwgdGQtPmthdGxlbiwgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB0 ZC0+YWRpbiwgZGN0eC0+bWF4X2FkaW4gKyAxKSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0Zf RklQU19EUkJHX0VSUk9SX0NIRUNLLAotKyAgICAgICAgICAgICAgICBGSVBTX1JfQURESVRJT05B TF9JTlBVVF9FUlJPUl9VTkRFVEVDVEVEKTsKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICB9Ci0r Ci0rICAgIC8qIENoZWNrIHByZWRpY3Rpb24gcmVzaXN0YW5jZSByZXF1ZXN0IGZhaWxzIGlmIGVu dHJvcHkgc291cmNlCi0rICAgICAqIGZhaWx1cmUuCi0rICAgICAqLwotKwotKyAgICB0LmVudGxl biA9IDA7Ci0rCi0rICAgIGlmIChGSVBTX2RyYmdfZ2VuZXJhdGUoZGN0eCwgcmFuZG91dCwgdGQt PmthdGxlbiwgMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZC0+YWRpbiwgdGQtPmFk aW5sZW4pKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ss Ci0rICAgICAgICAgICAgICAgIEZJUFNfUl9FTlRST1BZX0VSUk9SX1VOREVURUNURUQpOwotKyAg ICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsKLSsgICAgZGN0eC0+aWZsYWdzICY9IH5EUkJHX0ZM QUdfTk9FUlI7Ci0rICAgIGlmICghRklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCkpIHsKLSsg ICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5T VEFOVElBVEVfRVJST1IpOwotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsKLSsgICAgLyog SW5zdGFudGlhdGUgYWdhaW4gd2l0aCB2YWxpZCBkYXRhICovCi0rCi0rICAgIGlmICghZG9fZHJi Z19pbnN0YW50aWF0ZShkY3R4LCB0ZCwgJnQpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIC8q IFRlc3QgcmVzZWVkIGNvdW50ZXIgd29ya3MgKi8KLSsgICAgLyogU2F2ZSBpbml0aWFsIHJlc2Vl ZCBjb3VudGVyICovCi0rICAgIHJlc2VlZF9jb3VudGVyX3RtcCA9IGRjdHgtPnJlc2VlZF9jb3Vu dGVyOwotKyAgICAvKiBTZXQgcmVzZWVkIGNvdW50ZXIgdG8gYmV5b25kIGludGVydmFsICovCi0r ICAgIGRjdHgtPnJlc2VlZF9jb3VudGVyID0gZGN0eC0+cmVzZWVkX2ludGVydmFsOwotKwotKyAg ICAvKiBHZW5lcmF0ZSBvdXRwdXQgYW5kIGNoZWNrIGVudHJvcHkgaGFzIGJlZW4gcmVxdWVzdGVk IGZvciByZXNlZWQgKi8KLSsgICAgdC5lbnRjbnQgPSAwOwotKyAgICBpZiAoIUZJUFNfZHJiZ19n ZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0bGVuLCAwLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0ZC0+YWRpbiwgdGQtPmFkaW5sZW4pKQotKyAgICAgICAgZ290byBlcnI7Ci0r ICAgIGlmICh0LmVudGNudCAhPSAxKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RS QkdfRVJST1JfQ0hFQ0ssCi0rICAgICAgICAgICAgICAgIEZJUFNfUl9FTlRST1BZX05PVF9SRVFV RVNURURfRk9SX1JFU0VFRCk7Ci0rICAgICAgICBnb3RvIGVycjsKLSsgICAgfQotKyAgICAvKiBD aGVjayByZXNlZWQgY291bnRlciBoYXMgYmVlbiByZXNldCAqLwotKyAgICBpZiAoZGN0eC0+cmVz ZWVkX2NvdW50ZXIgIT0gcmVzZWVkX2NvdW50ZXJfdG1wICsgMSkgewotKyAgICAgICAgRklQU2Vy cihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfUkVTRUVEX0NPVU5URVJfRVJS T1IpOwotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsKLSsgICAgZGN0eC0+aWZsYWdzICY9 IH5EUkJHX0ZMQUdfTk9FUlI7Ci0rICAgIGlmICghRklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0 eCkpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQ U19SX1VOSU5TVEFOVElBVEVfRVJST1IpOwotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsK LSsgICAgLyogQ2hlY2sgcHJlZGljdGlvbiByZXNpc3RhbmNlIHJlcXVlc3QgZmFpbHMgaWYgZW50 cm9weSBzb3VyY2UKLSsgICAgICogZmFpbHVyZS4KLSsgICAgICovCi0rCi0rICAgIHQuZW50bGVu ID0gMDsKLSsKLSsgICAgZGN0eC0+aWZsYWdzIHw9IERSQkdfRkxBR19OT0VSUjsKLSsgICAgaWYg KEZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0bGVuLCAxLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRkLT5hZGluLCB0ZC0+YWRpbmxlbikpIHsKLSsgICAgICAg IEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywKLSsgICAgICAgICAgICAgICAg RklQU19SX0VOVFJPUFlfRVJST1JfVU5ERVRFQ1RFRCk7Ci0rICAgICAgICBnb3RvIGVycjsKLSsg ICAgfQotKwotKyAgICBkY3R4LT5pZmxhZ3MgJj0gfkRSQkdfRkxBR19OT0VSUjsKLSsKLSsgICAg aWYgKCFGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KSkgewotKyAgICAgICAgRklQU2VycihG SVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfVU5JTlNUQU5USUFURV9FUlJPUik7 Ci0rICAgICAgICBnb3RvIGVycjsKLSsgICAgfQotKwotKyAgICBpZiAoIWRvX2RyYmdfaW5zdGFu dGlhdGUoZGN0eCwgdGQsICZ0KSkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICAvKiBUZXN0IHJl c2VlZCBjb3VudGVyIHdvcmtzICovCi0rICAgIC8qIFNhdmUgaW5pdGlhbCByZXNlZWQgY291bnRl ciAqLwotKyAgICByZXNlZWRfY291bnRlcl90bXAgPSBkY3R4LT5yZXNlZWRfY291bnRlcjsKLSsg ICAgLyogU2V0IHJlc2VlZCBjb3VudGVyIHRvIGJleW9uZCBpbnRlcnZhbCAqLwotKyAgICBkY3R4 LT5yZXNlZWRfY291bnRlciA9IGRjdHgtPnJlc2VlZF9pbnRlcnZhbDsKLSsKLSsgICAgLyogR2Vu ZXJhdGUgb3V0cHV0IGFuZCBjaGVjayBlbnRyb3B5IGhhcyBiZWVuIHJlcXVlc3RlZCBmb3IgcmVz ZWVkICovCi0rICAgIHQuZW50Y250ID0gMDsKLSsgICAgaWYgKCFGSVBTX2RyYmdfZ2VuZXJhdGUo ZGN0eCwgcmFuZG91dCwgdGQtPmthdGxlbiwgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGQtPmFkaW4sIHRkLT5hZGlubGVuKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBpZiAo dC5lbnRjbnQgIT0gMSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9S X0NIRUNLLAotKyAgICAgICAgICAgICAgICBGSVBTX1JfRU5UUk9QWV9OT1RfUkVRVUVTVEVEX0ZP Ul9SRVNFRUQpOwotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsgICAgLyogQ2hlY2sgcmVz ZWVkIGNvdW50ZXIgaGFzIGJlZW4gcmVzZXQgKi8KLSsgICAgaWYgKGRjdHgtPnJlc2VlZF9jb3Vu dGVyICE9IHJlc2VlZF9jb3VudGVyX3RtcCArIDEpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19G X0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1JFU0VFRF9DT1VOVEVSX0VSUk9SKTsKLSsg ICAgICAgIGdvdG8gZXJyOwotKyAgICB9Ci0rCi0rICAgIGRjdHgtPmlmbGFncyAmPSB+RFJCR19G TEFHX05PRVJSOwotKyAgICBpZiAoIUZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpKSB7Ci0r ICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9VTklO U1RBTlRJQVRFX0VSUk9SKTsKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICB9Ci0rCi0rICAgIC8q IEV4cGxpY2l0IHJlc2VlZCB0ZXN0cyAqLwotKwotKyAgICAvKiBUZXN0IGV4cGxpY2l0IHJlc2Vl ZCB3aXRoIHRvbyBsYXJnZSBhZGRpdGlvbmFsIGlucHV0ICovCi0rICAgIGlmICghZG9fZHJiZ19p bml0KGRjdHgsIHRkLCAmdCkpCi0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgZGN0eC0+aWZs YWdzIHw9IERSQkdfRkxBR19OT0VSUjsKLSsKLSsgICAgaWYgKEZJUFNfZHJiZ19yZXNlZWQoZGN0 eCwgdGQtPmFkaW4sIGRjdHgtPm1heF9hZGluICsgMSkgPiAwKSB7Ci0rICAgICAgICBGSVBTZXJy KEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssCi0rICAgICAgICAgICAgICAgIEZJUFNfUl9B RERJVElPTkFMX0lOUFVUX0VSUk9SX1VOREVURUNURUQpOwotKyAgICAgICAgZ290byBlcnI7Ci0r ICAgIH0KLSsKLSsgICAgLyogVGVzdCBleHBsaWNpdCByZXNlZWQgd2l0aCBlbnRyb3B5IHNvdXJj ZSBmYWlsdXJlICovCi0rCi0rICAgIHQuZW50bGVuID0gMDsKLSsKLSsgICAgaWYgKEZJUFNfZHJi Z19yZXNlZWQoZGN0eCwgdGQtPmFkaW4sIHRkLT5hZGlubGVuKSA+IDApIHsKLSsgICAgICAgIEZJ UFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywKLSsgICAgICAgICAgICAgICAgRklQ U19SX0VOVFJPUFlfRVJST1JfVU5ERVRFQ1RFRCk7Ci0rICAgICAgICBnb3RvIGVycjsKLSsgICAg fQotKwotKyAgICBpZiAoIUZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpKSB7Ci0rICAgICAg ICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJ QVRFX0VSUk9SKTsKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICB9Ci0rCi0rICAgIC8qIFRlc3Qg ZXhwbGljaXQgcmVzZWVkIHdpdGggdG9vIG11Y2ggZW50cm9weSAqLwotKwotKyAgICBpZiAoIWRv X2RyYmdfaW5pdChkY3R4LCB0ZCwgJnQpKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIGRj dHgtPmlmbGFncyB8PSBEUkJHX0ZMQUdfTk9FUlI7Ci0rCi0rICAgIHQuZW50bGVuID0gZGN0eC0+ bWF4X2VudHJvcHkgKyAxOwotKwotKyAgICBpZiAoRklQU19kcmJnX3Jlc2VlZChkY3R4LCB0ZC0+ YWRpbiwgdGQtPmFkaW5sZW4pID4gMCkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19E UkJHX0VSUk9SX0NIRUNLLAotKyAgICAgICAgICAgICAgICBGSVBTX1JfRU5UUk9QWV9FUlJPUl9V TkRFVEVDVEVEKTsKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICB9Ci0rCi0rICAgIGlmICghRklQ U19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCkpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJ UFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5TVEFOVElBVEVfRVJST1IpOwotKyAgICAg ICAgZ290byBlcnI7Ci0rICAgIH0KLSsKLSsgICAgLyogVGVzdCBleHBsaWNpdCByZXNlZWQgd2l0 aCB0b28gbGl0dGxlIGVudHJvcHkgKi8KLSsKLSsgICAgaWYgKCFkb19kcmJnX2luaXQoZGN0eCwg dGQsICZ0KSkKLSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAgICBkY3R4LT5pZmxhZ3MgfD0gRFJC R19GTEFHX05PRVJSOwotKwotKyAgICB0LmVudGxlbiA9IGRjdHgtPm1pbl9lbnRyb3B5IC0gMTsK LSsKLSsgICAgaWYgKEZJUFNfZHJiZ19yZXNlZWQoZGN0eCwgdGQtPmFkaW4sIHRkLT5hZGlubGVu KSA+IDApIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywK LSsgICAgICAgICAgICAgICAgRklQU19SX0VOVFJPUFlfRVJST1JfVU5ERVRFQ1RFRCk7Ci0rICAg ICAgICBnb3RvIGVycjsKLSsgICAgfQotKwotKyAgICBpZiAoIUZJUFNfZHJiZ191bmluc3RhbnRp YXRlKGRjdHgpKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hF Q0ssIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VSUk9SKTsKLSsgICAgICAgIGdvdG8gZXJyOwotKyAg ICB9Ci0rCi0rICAgIHAgPSAodW5zaWduZWQgY2hhciAqKSZkY3R4LT5kOwotKyAgICAvKiBTdGFu ZGFyZCBzYXlzIHdlIGhhdmUgdG8gY2hlY2sgdW5pbnN0YW50aWF0ZSByZWFsbHkgemVyb2VzCi0r ICAgICAqIHRoZSBkYXRhLi4uCi0rICAgICAqLwotKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9m KGRjdHgtPmQpOyBpKyspIHsKLSsgICAgICAgIGlmICgqcCAhPSAwKSB7Ci0rICAgICAgICAgICAg RklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAotKyAgICAgICAgICAgICAgICAg ICAgRklQU19SX1VOSU5TVEFOVElBVEVfWkVST0lTRV9FUlJPUik7Ci0rICAgICAgICAgICAgZ290 byBlcnI7Ci0rICAgICAgICB9Ci0rICAgICAgICBwKys7Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJu IDE7Ci0rCi0rIGVycjoKLSsgICAgLyogQSByZWFsIGVycm9yIGFzIG9wcG9zZWQgdG8gYW4gaW5k dWNlZCBvbmU6IHVuZGVybHlpbmcgZnVuY3Rpb24gd2lsbAotKyAgICAgKiBpbmRpY2F0ZSB0aGUg ZXJyb3IuCi0rICAgICAqLwotKyAgICBpZiAoIShkY3R4LT5pZmxhZ3MgJiBEUkJHX0ZMQUdfTk9F UlIpKQotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBT X1JfRlVOQ1RJT05fRVJST1IpOwotKyAgICBGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KTsK LSsgICAgcmV0dXJuIDA7Ci0rCi0rfQotKwotK2ludCBmaXBzX2RyYmdfa2F0KERSQkdfQ1RYICpk Y3R4LCBpbnQgbmlkLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCi0rewotKyAgICBEUkJHX1NFTEZURVNU X0RBVEEgKnRkOwotKyAgICBmbGFncyB8PSBEUkJHX0ZMQUdfVEVTVDsKLSsgICAgZm9yICh0ZCA9 IGRyYmdfdGVzdDsgdGQtPm5pZCAhPSAwOyB0ZCsrKSB7Ci0rICAgICAgICBpZiAodGQtPm5pZCA9 PSBuaWQgJiYgdGQtPmZsYWdzID09IGZsYWdzKSB7Ci0rICAgICAgICAgICAgaWYgKCFmaXBzX2Ry Ymdfc2luZ2xlX2thdChkY3R4LCB0ZCwgMCkpCi0rICAgICAgICAgICAgICAgIHJldHVybiAwOwot KyAgICAgICAgICAgIHJldHVybiBmaXBzX2RyYmdfZXJyb3JfY2hlY2soZGN0eCwgdGQpOwotKyAg ICAgICAgfQotKyAgICB9Ci0rICAgIHJldHVybiAwOwotK30KLSsKLStpbnQgRklQU19kcmJnX2hl YWx0aF9jaGVjayhEUkJHX0NUWCAqZGN0eCkKLSt7Ci0rICAgIGludCBydjsKLSsgICAgRFJCR19D VFggKnRjdHggPSBOVUxMOwotKyAgICB0Y3R4ID0gRklQU19kcmJnX25ldygwLCAwKTsKLSsgICAg Zmlwc19wb3N0X3N0YXJ0ZWQoRklQU19URVNUX0RSQkcsIGRjdHgtPnR5cGUsICZkY3R4LT54Zmxh Z3MpOwotKyAgICBpZiAoIXRjdHgpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgcnYgPSBmaXBz X2RyYmdfa2F0KHRjdHgsIGRjdHgtPnR5cGUsIGRjdHgtPnhmbGFncyk7Ci0rICAgIGlmICh0Y3R4 KQotKyAgICAgICAgRklQU19kcmJnX2ZyZWUodGN0eCk7Ci0rICAgIGlmIChydikKLSsgICAgICAg IGZpcHNfcG9zdF9zdWNjZXNzKEZJUFNfVEVTVF9EUkJHLCBkY3R4LT50eXBlLCAmZGN0eC0+eGZs YWdzKTsKLSsgICAgZWxzZQotKyAgICAgICAgZmlwc19wb3N0X2ZhaWxlZChGSVBTX1RFU1RfRFJC RywgZGN0eC0+dHlwZSwgJmRjdHgtPnhmbGFncyk7Ci0rICAgIGlmICghcnYpCi0rICAgICAgICBk Y3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19FUlJPUjsKLSsgICAgZWxzZQotKyAgICAgICAgZGN0 eC0+aGVhbHRoX2NoZWNrX2NudCA9IDA7Ci0rICAgIHJldHVybiBydjsKLSt9Ci0rCi0raW50IEZJ UFNfc2VsZnRlc3RfZHJiZyh2b2lkKQotK3sKLSsgICAgRFJCR19DVFggKmRjdHg7Ci0rICAgIERS QkdfU0VMRlRFU1RfREFUQSAqdGQ7Ci0rICAgIGludCBydiA9IDE7Ci0rICAgIGRjdHggPSBGSVBT X2RyYmdfbmV3KDAsIDApOwotKyAgICBpZiAoIWRjdHgpCi0rICAgICAgICByZXR1cm4gMDsKLSsg ICAgZm9yICh0ZCA9IGRyYmdfdGVzdDsgdGQtPm5pZCAhPSAwOyB0ZCsrKSB7Ci0rICAgICAgICBp ZiAodGQtPnBvc3QgIT0gMSkKLSsgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgIGlmICgh Zmlwc19wb3N0X3N0YXJ0ZWQoRklQU19URVNUX0RSQkcsIHRkLT5uaWQsICZ0ZC0+ZmxhZ3MpKQot KyAgICAgICAgICAgIHJldHVybiAxOwotKyAgICAgICAgaWYgKCFmaXBzX2RyYmdfc2luZ2xlX2th dChkY3R4LCB0ZCwgMSkpIHsKLSsgICAgICAgICAgICBmaXBzX3Bvc3RfZmFpbGVkKEZJUFNfVEVT VF9EUkJHLCB0ZC0+bmlkLCAmdGQtPmZsYWdzKTsKLSsgICAgICAgICAgICBydiA9IDA7Ci0rICAg ICAgICAgICAgY29udGludWU7Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAoIWZpcHNfcG9zdF9z dWNjZXNzKEZJUFNfVEVTVF9EUkJHLCB0ZC0+bmlkLCAmdGQtPmZsYWdzKSkKLSsgICAgICAgICAg ICByZXR1cm4gMDsKLSsgICAgfQotKyAgICBGSVBTX2RyYmdfZnJlZShkY3R4KTsKLSsgICAgcmV0 dXJuIHJ2OwotK30KLSsKLStpbnQgRklQU19zZWxmdGVzdF9kcmJnX2FsbCh2b2lkKQotK3sKLSsg ICAgRFJCR19DVFggKmRjdHg7Ci0rICAgIERSQkdfU0VMRlRFU1RfREFUQSAqdGQ7Ci0rICAgIGlu dCBydiA9IDE7Ci0rICAgIGRjdHggPSBGSVBTX2RyYmdfbmV3KDAsIDApOwotKyAgICBpZiAoIWRj dHgpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgZm9yICh0ZCA9IGRyYmdfdGVzdDsgdGQtPm5p ZCAhPSAwOyB0ZCsrKSB7Ci0rICAgICAgICBpZiAoIWZpcHNfcG9zdF9zdGFydGVkKEZJUFNfVEVT VF9EUkJHLCB0ZC0+bmlkLCAmdGQtPmZsYWdzKSkKLSsgICAgICAgICAgICByZXR1cm4gMTsKLSsg ICAgICAgIGlmICghZmlwc19kcmJnX3NpbmdsZV9rYXQoZGN0eCwgdGQsIDApKSB7Ci0rICAgICAg ICAgICAgZmlwc19wb3N0X2ZhaWxlZChGSVBTX1RFU1RfRFJCRywgdGQtPm5pZCwgJnRkLT5mbGFn cyk7Ci0rICAgICAgICAgICAgcnYgPSAwOwotKyAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAg ICAgfQotKyAgICAgICAgaWYgKCFmaXBzX2RyYmdfZXJyb3JfY2hlY2soZGN0eCwgdGQpKSB7Ci0r ICAgICAgICAgICAgZmlwc19wb3N0X2ZhaWxlZChGSVBTX1RFU1RfRFJCRywgdGQtPm5pZCwgJnRk LT5mbGFncyk7Ci0rICAgICAgICAgICAgcnYgPSAwOwotKyAgICAgICAgICAgIGNvbnRpbnVlOwot KyAgICAgICAgfQotKyAgICAgICAgaWYgKCFmaXBzX3Bvc3Rfc3VjY2VzcyhGSVBTX1RFU1RfRFJC RywgdGQtPm5pZCwgJnRkLT5mbGFncykpCi0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0K LSsgICAgRklQU19kcmJnX2ZyZWUoZGN0eCk7Ci0rICAgIHJldHVybiBydjsKLSt9Ci1kaWZmIC11 cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX2RyYmdfc2VsZnRlc3QuaC5maXBzIG9w ZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19zZWxmdGVzdC5oCi0tLS0gb3BlbnNz bC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX3NlbGZ0ZXN0LmguZmlwcwkyMDE2LTA5LTIy IDEzOjM1OjU3LjAxNjIyMDk3NCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBz L2ZpcHNfZHJiZ19zZWxmdGVzdC5oCTIwMTYtMDktMjIgMTM6MzU6NTcuMDE2MjIwOTc0ICswMjAw Ci1AQCAtMCwwICsxLDE3OTEgQEAKLSsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAoYykg MjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAq IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg b3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0 IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRp c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo dAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAq ICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0 aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcg bWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0 d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAi VGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQ cm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3 dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQi IGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3Jz ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQK LSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24s IHBsZWFzZSBjb250YWN0Ci0rICogICAgb3BlbnNzbC1jb3JlLm9yZy4KLSsgKgotKyAqIDUuIFBy b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVu U1NMIgotKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRo b3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2pl Y3QuCi0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBt dXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAg IlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wg UHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3 dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU SEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VEIE9SIElN UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKyAq IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM TCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUwsIEVYRU1Q TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5PVCBM SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ T04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX SEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICogT0YgVEhF IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqCi0rICovCi0rCi0rLyogU2VsZnRlc3Qg YW5kIGhlYWx0aCBjaGVjayBkYXRhIGZvciB0aGUgU1A4MDAtOTAgRFJCRyAqLwotKwotKyNkZWZp bmUgX19maXBzX2NvbnN0c2VnCi0rCi0rLyogQUVTLTEyOCB1c2UgZGYgUFIgICovCi0rX19maXBz X2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX3ByX2Vu dHJvcHlpbnB1dFtdID0gewotKyAgICAweDYxLCAweDUyLCAweDdjLCAweGUzLCAweDIzLCAweDdk LCAweDBhLCAweDA3LCAweDEwLCAweDBjLCAweDUwLCAweDMzLAotKyAgICAweGM4LCAweGRiLCAw eGZmLCAweDEyCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgYWVzXzEyOF91c2VfZGZfcHJfbm9uY2VbXSA9IHsKLSsgICAgMHg1MSwgMHgwZCwgMHg4 NSwgMHg3NywgMHhlZCwgMHgyMiwgMHg5NywgMHgyOAotK307Ci0rCi0rX19maXBzX2NvbnN0c2Vn Ci0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX3ByX3BlcnNv bmFsaXphdGlvbnN0cmluZ1tdID0gewotKyAgICAweDU5LCAweDlmLCAweGJiLCAweGNkLCAweGQ1 LCAweDI1LCAweDY5LCAweGI1LCAweGNiLCAweGI1LCAweDAzLCAweGZlLAotKyAgICAweGQ3LCAw eGQ3LCAweDAxLCAweDY3Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7 Ci0rICAgIDB4ZWYsIDB4ODgsIDB4NzYsIDB4MDEsIDB4YWYsIDB4M2MsIDB4ZmUsIDB4OGIsIDB4 YWYsIDB4MjYsIDB4MDYsIDB4OWUsCi0rICAgIDB4OWEsIDB4NDcsIDB4MDgsIDB4NzYKLSt9Owot KwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNf MTI4X3VzZV9kZl9wcl9lbnRyb3B5aW5wdXRwcltdID0gewotKyAgICAweGUyLCAweDc2LCAweGY5 LCAweGY2LCAweDNhLCAweGJhLCAweDEwLCAweDlmLCAweGJmLCAweDQ3LCAweDBlLCAweDUxLAot KyAgICAweDA5LCAweGZiLCAweGEzLCAweGI2Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsg ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcHJfaW50X3JldHVy bmVkYml0c1tdID0gewotKyAgICAweGQ0LCAweDk4LCAweDhhLCAweDQ2LCAweDgwLCAweDRjLCAw eGRiLCAweGEzLCAweDU5LCAweDAyLCAweDU3LCAweDUyLAotKyAgICAweDY2LCAweDFjLCAweGVh LCAweDViCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcHJfYWRkaXRpb25hbGlucHV0MltdID0gewotKyAgICAw eDg4LCAweDhjLCAweDkxLCAweGQ2LCAweGJlLCAweDU2LCAweDZlLCAweDA4LCAweDlhLCAweDYy LCAweDJiLCAweDExLAotKyAgICAweDNmLCAweDVlLCAweDMxLCAweDA2Ci0rfTsKLSsKLStfX2Zp cHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2Vf ZGZfcHJfZW50cm9weWlucHV0cHIyW10gPSB7Ci0rICAgIDB4YzAsIDB4NWMsIDB4NmIsIDB4OTgs IDB4MDEsIDB4MGQsIDB4NTgsIDB4MTgsIDB4NTEsIDB4MTgsIDB4OTYsIDB4YWUsCi0rICAgIDB4 YTcsIDB4ZTMsIDB4YTgsIDB4NjcKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKLSsg ICAgMHhjZiwgMHgwMSwgMHhhYywgMHgyMiwgMHgzMSwgMHgwNiwgMHg4ZSwgMHhmYywgMHhjZSwg MHg1NiwgMHhlYSwgMHgyNCwKLSsgICAgMHgwZiwgMHgzOCwgMHg0MywgMHhjNgotK307Ci0rCi0r LyogQUVTLTEyOCB1c2UgZGYgTm8gUFIgICovCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX2VudHJvcHlpbnB1dFtdID0gewotKyAgICAw eDFmLCAweDhlLCAweDM0LCAweDgyLCAweDBjLCAweGI3LCAweGJlLCAweGM1LCAweDAxLCAweDNl LCAweGQwLCAweGEzLAotKyAgICAweDlkLCAweDdkLCAweDFjLCAweDliCi0rfTsKLSsKLStfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfbm9u Y2VbXSA9IHsKLSsgICAgMHhkNSwgMHg0ZCwgMHhiZCwgMHg0YSwgMHg5MywgMHg3ZiwgMHhiOCwg MHg5NgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGFlc18xMjhfdXNlX2RmX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0gewotKyAgICAw eGFiLCAweGQ2LCAweDNmLCAweDA0LCAweGZlLCAweDI3LCAweDZiLCAweDJkLCAweGQ3LCAweGMz LCAweDFjLCAweGYzLAotKyAgICAweDM4LCAweDY2LCAweGJhLCAweDFiCi0rfTsKLSsKLStfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfYWRk aXRpb25hbGlucHV0W10gPSB7Ci0rICAgIDB4ZmUsIDB4ZjQsIDB4MDksIDB4YTgsIDB4YjcsIDB4 NzMsIDB4MjcsIDB4OWMsIDB4NWYsIDB4YTcsIDB4ZWEsIDB4NDYsCi0rICAgIDB4YjUsIDB4ZTIs IDB4YjIsIDB4NDEKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4NDIs IDB4ZTQsIDB4NGUsIDB4N2IsIDB4MjcsIDB4ZGQsIDB4Y2IsIDB4YmMsIDB4MGEsIDB4Y2YsIDB4 YTYsIDB4NjcsCi0rICAgIDB4ZTcsIDB4NTcsIDB4MTEsIDB4YjQKLSt9OwotKwotK19fZmlwc19j b25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9l bnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsKLSsgICAgMHgxNCwgMHgyNiwgMHg2OSwgMHhkOSwgMHhm MywgMHg2NSwgMHgwMywgMHhkNiwgMHg2YiwgMHhiOSwgMHg0NCwgMHgwYiwKLSsgICAgMHhjNywg MHhjNCwgMHg5ZSwgMHgzOQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX2FkZGl0aW9uYWxpbnB1dHJlc2VlZFtd ID0gewotKyAgICAweDU1LCAweDJlLCAweDYwLCAweDlhLCAweDA1LCAweDcyLCAweDhhLCAweGE4 LCAweGVmLCAweDIyLCAweDgxLCAweDVhLAotKyAgICAweGM4LCAweDkzLCAweGZhLCAweDg0Ci0r fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEy OF91c2VfZGZfYWRkaXRpb25hbGlucHV0MltdID0gewotKyAgICAweDNjLCAweDQwLCAweGM4LCAw eGM0LCAweDE2LCAweDBjLCAweDIxLCAweGE0LCAweDM3LCAweDJjLCAweDhmLCAweGE1LAotKyAg ICAweDA2LCAweDBjLCAweDE1LCAweDJjCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcmV0dXJuZWRiaXRzW10gPSB7Ci0r ICAgIDB4ZTEsIDB4M2UsIDB4OTksIDB4OTgsIDB4ODYsIDB4NjcsIDB4MGIsIDB4NjMsIDB4N2Is IDB4YmUsIDB4M2YsIDB4ODgsCi0rICAgIDB4NDYsIDB4ODEsIDB4YzcsIDB4MTkKLSt9OwotKwot Ky8qIEFFUy0xOTIgdXNlIGRmIFBSICAqLwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9wcl9lbnRyb3B5aW5wdXRbXSA9IHsKLSsgICAg MHgyYiwgMHg0ZSwgMHg4YiwgMHhlMSwgMHhmMSwgMHgzNCwgMHg4MCwgMHg1NiwgMHg4MSwgMHhm OSwgMHg3NCwgMHhlYywKLSsgICAgMHgxNywgMHg0NCwgMHgyYSwgMHhmMSwgMHgxNCwgMHhiMCwg MHhiZiwgMHg5NywgMHgzOSwgMHhiNywgMHgwNCwgMHg3ZAotK307Ci0rCi0rX19maXBzX2NvbnN0 c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX3ByX25vbmNlW10g PSB7Ci0rICAgIDB4ZDYsIDB4OWQsIDB4ZWIsIDB4MTQsIDB4NGUsIDB4NmMsIDB4MzAsIDB4MWUs IDB4MzksIDB4NTUsIDB4NzMsIDB4ZDAsCi0rICAgIDB4ZDEsIDB4ODAsIDB4NzgsIDB4ZmEKLSt9 OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBh ZXNfMTkyX3VzZV9kZl9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKLSsgICAgMHhmYywg MHg0MywgMHg0YSwgMHhmOCwgMHg5YSwgMHg1NSwgMHhiMywgMHg1MywgMHg4MywgMHhlMiwgMHgx OCwgMHgxNiwKLSsgICAgMHgwYywgMHhkYywgMHhjZCwgMHg1ZSwgMHg0ZiwgMHhhMCwgMHgwMywg MHgwMSwgMHgyYiwgMHg5ZiwgMHhlNCwgMHhkNSwKLSsgICAgMHg3ZCwgMHg0OSwgMHhmMCwgMHg0 MSwgMHg5ZSwgMHgzZCwgMHg5OSwgMHgwNAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAg IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX3ByX2FkZGl0aW9uYWxp bnB1dFtdID0gewotKyAgICAweDVlLCAweDlmLCAweDQ5LCAweDZmLCAweDIxLCAweDhiLCAweDFk LCAweDMyLCAweGQ1LCAweDg0LCAweDVjLCAweGFjLAotKyAgICAweGFmLCAweGRmLCAweGU0LCAw eDc5LCAweDllLCAweGFmLCAweGE5LCAweDgyLCAweGQwLCAweGY4LCAweDRmLCAweGNiLAotKyAg ICAweDY5LCAweDEwLCAweDBhLCAweDdlLCAweDgxLCAweDU3LCAweGI1LCAweDM2Ci0rfTsKLSsK LStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5 Ml91c2VfZGZfcHJfZW50cm9weWlucHV0cHJbXSA9IHsKLSsgICAgMHhkNCwgMHg4MSwgMHgwYywg MHhkNywgMHg2NiwgMHgzOSwgMHhlYywgMHg0MiwgMHg1MywgMHg4NywgMHg0MSwgMHhhNSwKLSsg ICAgMHgxZSwgMHg3ZCwgMHg4MCwgMHg5MSwgMHg4ZSwgMHhiYiwgMHhlZCwgMHhhYywgMHgxNCwg MHgwMiwgMHgxYSwgMHhkNQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX3ByX2ludF9yZXR1cm5lZGJpdHNbXSA9 IHsKLSsgICAgMHhkZiwgMHgxZCwgMHgzOSwgMHg0NSwgMHg3YywgMHg5YiwgMHhjNiwgMHgyYiwg MHg3ZCwgMHg4YywgMHg5MywgMHhlOSwKLSsgICAgMHgxOSwgMHgzMCwgMHg2YiwgMHg2NwotK307 Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFl c18xOTJfdXNlX2RmX3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKLSsgICAgMHgwMCwgMHg3MSwg MHgyNywgMHg0ZSwgMHhkMywgMHgxNCwgMHhmMSwgMHgyMCwgMHg3ZiwgMHg0YSwgMHg0MSwgMHgz MiwKLSsgICAgMHgyYSwgMHg5NywgMHgxMSwgMHg0MywgMHg4ZiwgMHg0YSwgMHgxNSwgMHg3Yiwg MHg5YiwgMHg1MSwgMHg3OSwgMHhkYSwKLSsgICAgMHg0OSwgMHgzZCwgMHhkZSwgMHhlOCwgMHhi YywgMHg5MywgMHg5MSwgMHg5OQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX3ByX2VudHJvcHlpbnB1dHByMltd ID0gewotKyAgICAweDkwLCAweGVlLCAweDc2LCAweGExLCAweDQ1LCAweDhkLCAweGI3LCAweDQw LCAweGIwLCAweDExLCAweGJmLCAweGQwLAotKyAgICAweDY1LCAweGQ3LCAweDNjLCAweDdjLCAw eDRmLCAweDIwLCAweDNmLCAweDRlLCAweDExLCAweDlkLCAweGIzLCAweDVlCi0rfTsKLSsKLStf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml91c2VfZGZf cHJfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4MjQsIDB4M2IsIDB4MjAsIDB4YTQsIDB4Mzcs IDB4NjYsIDB4YmEsIDB4NzIsIDB4MzksIDB4M2YsIDB4Y2YsIDB4M2MsCi0rICAgIDB4N2UsIDB4 MWEsIDB4MmIsIDB4ODMKLSt9OwotKwotKy8qIEFFUy0xOTIgdXNlIGRmIE5vIFBSICAqLwotK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9l bnRyb3B5aW5wdXRbXSA9IHsKLSsgICAgMHg4ZCwgMHg3NCwgMHhhNCwgMHg1MCwgMHgxYSwgMHgw MiwgMHg2OCwgMHgwYywgMHgyYSwgMHg2OSwgMHhjNCwgMHg4MiwKLSsgICAgMHgzYiwgMHhiYiwg MHhkYSwgMHgwZSwgMHg3ZiwgMHg3NywgMHhhMywgMHgxNywgMHg3OCwgMHg1NywgMHhiMiwgMHg3 YgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFl c18xOTJfdXNlX2RmX25vbmNlW10gPSB7Ci0rICAgIDB4NzUsIDB4ZDUsIDB4MWYsIDB4YWMsIDB4 YTQsIDB4OGQsIDB4NDIsIDB4NzgsIDB4ZDcsIDB4NjksIDB4ODYsIDB4OWQsCi0rICAgIDB4Nzcs IDB4ZDcsIDB4NDEsIDB4MGUKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9wZXJzb25hbGl6YXRpb25zdHJpbmdb XSA9IHsKLSsgICAgMHg0ZSwgMHgzMywgMHg0MSwgMHgzYywgMHg5YywgMHhjMiwgMHhkMiwgMHg1 MywgMHhhZiwgMHg5MCwgMHhlYSwgMHhjZiwKLSsgICAgMHgxOSwgMHg1MCwgMHgxZSwgMHhlNiwg MHg2ZiwgMHg2MywgMHhjOCwgMHgzMiwgMHgyMiwgMHhkYywgMHgwNywgMHg2NSwKLSsgICAgMHg5 YywgMHhkMywgMHhmOCwgMHgzMCwgMHg5ZSwgMHhlZCwgMHgzNSwgMHg3MAotK307Ci0rCi0rX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX2Fk ZGl0aW9uYWxpbnB1dFtdID0gewotKyAgICAweDVkLCAweDhiLCAweDhjLCAweGMxLCAweGRmLCAw eDBlLCAweDAyLCAweDc4LCAweGZiLCAweDE5LCAweGI4LCAweDY5LAotKyAgICAweDc4LCAweDRl LCAweDljLCAweDUyLCAweGJjLCAweGM3LCAweDIwLCAweGM5LCAweGU2LCAweDVlLCAweDc3LCAw eDIyLAotKyAgICAweDI4LCAweDNkLCAweDBjLCAweDllLCAweDY4LCAweGE4LCAweDQ1LCAweGQ3 Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVz XzE5Ml91c2VfZGZfaW50X3JldHVybmVkYml0c1tdID0gewotKyAgICAweGQ1LCAweGU3LCAweDA4 LCAweGM1LCAweDE5LCAweDk5LCAweGQ1LCAweDMxLCAweDAzLCAweDBhLCAweDc0LCAweGI2LAot KyAgICAweGI3LCAweGVkLCAweGU5LCAweGVhCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsg ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml91c2VfZGZfZW50cm9weWlucHV0 cmVzZWVkW10gPSB7Ci0rICAgIDB4OWMsIDB4MjYsIDB4ZGEsIDB4ZjEsIDB4YWMsIDB4ZDksIDB4 NWEsIDB4ZDYsIDB4YTgsIDB4NjUsIDB4ZjUsIDB4MDIsCi0rICAgIDB4OGYsIDB4ZGMsIDB4YTIs IDB4MDksIDB4NTQsIDB4YTYsIDB4ZTIsIDB4YTQsIDB4ZGUsIDB4MzIsIDB4ZTAsIDB4MDEKLSt9 OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBh ZXNfMTkyX3VzZV9kZl9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9IHsKLSsgICAgMHg5YiwgMHg5 MCwgMHhiMCwgMHgzYSwgMHgwZSwgMHgzYSwgMHg4MCwgMHgwNywgMHg0YSwgMHhmNCwgMHhkYSwg MHg3NiwKLSsgICAgMHgyOCwgMHgzMCwgMHgzYywgMHhlZSwgMHg1NCwgMHgxYiwgMHg5NCwgMHg1 OSwgMHg1MSwgMHg0MywgMHg1NiwgMHg3NywKLSsgICAgMHhhZiwgMHg4OCwgMHhkZCwgMHg2Mywg MHg4OSwgMHg0NywgMHgwNiwgMHg2NQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsK LSsgICAgMHgzYywgMHgxMSwgMHg2NCwgMHg3YSwgMHg5NiwgMHhmNSwgMHhkOCwgMHhiOCwgMHhh ZSwgMHhkNiwgMHg3MCwgMHg0ZSwKLSsgICAgMHgxNiwgMHg5NiwgMHhkZSwgMHhlOSwgMHg2Miwg MHhiYywgMHhlZSwgMHgyOCwgMHgyZiwgMHgyNiwgMHhhNiwgMHhmMCwKLSsgICAgMHg1NiwgMHhl ZiwgMHhhMywgMHhmMSwgMHg2YiwgMHhhMSwgMHhiMSwgMHg3NwotK307Ci0rCi0rX19maXBzX2Nv bnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX3JldHVybmVk Yml0c1tdID0gewotKyAgICAweDBiLCAweGUyLCAweDU2LCAweDAzLCAweDFlLCAweGRiLCAweDJj LCAweDZkLCAweDdmLCAweDFiLCAweDE1LCAweDU4LAotKyAgICAweDFhLCAweGY5LCAweDEzLCAw eDI4Ci0rfTsKLSsKLSsvKiBBRVMtMjU2IHVzZSBkZiBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfcHJfZW50cm9weWlucHV0 W10gPSB7Ci0rICAgIDB4NjEsIDB4NjgsIDB4ZmMsIDB4MWEsIDB4ZjAsIDB4YjUsIDB4OTUsIDB4 NmIsIDB4ODUsIDB4MDksIDB4OWIsIDB4NzQsCi0rICAgIDB4M2YsIDB4MTMsIDB4NzgsIDB4NDks IDB4M2IsIDB4ODUsIDB4ZWMsIDB4OTMsIDB4MTMsIDB4M2IsIDB4YTksIDB4NGYsCi0rICAgIDB4 OTYsIDB4YWIsIDB4MmMsIDB4ZTQsIDB4YzgsIDB4OGYsIDB4ZGQsIDB4NmEKLSt9OwotKwotK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9w cl9ub25jZVtdID0gewotKyAgICAweGFkLCAweGQyLCAweGJiLCAweGJhLCAweGI3LCAweDY1LCAw eDg5LCAweGMzLCAweDIxLCAweDZjLCAweDU1LCAweDMzLAotKyAgICAweDJiLCAweDM2LCAweGZm LCAweGE0Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7Ci0r ICAgIDB4NmUsIDB4Y2EsIDB4ZTcsIDB4MjAsIDB4NzIsIDB4ZDMsIDB4ODQsIDB4NWEsIDB4MzIs IDB4ZDMsIDB4NGIsIDB4MjQsCi0rICAgIDB4NzIsIDB4YzQsIDB4NjMsIDB4MmIsIDB4OWQsIDB4 MTIsIDB4MjQsIDB4MGMsIDB4MjMsIDB4MjYsIDB4OGUsIDB4ODMsCi0rICAgIDB4MTYsIDB4Mzcs IDB4MGIsIDB4ZDEsIDB4MDYsIDB4NGYsIDB4NjgsIDB4NmQKLSt9OwotKwotK19fZmlwc19jb25z dHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9wcl9h ZGRpdGlvbmFsaW5wdXRbXSA9IHsKLSsgICAgMHg3ZSwgMHgwOCwgMHg0YSwgMHhiYiwgMHhlMywg MHgyMSwgMHg3YywgMHhjOSwgMHgyMywgMHhkMiwgMHhmOCwgMHhiMCwKLSsgICAgMHg3MywgMHg5 OCwgMHhiYSwgMHg4NCwgMHg3NCwgMHgyMywgMHhhYiwgMHgwNiwgMHg4YSwgMHhlMiwgMHgyMiwg MHhkMywKLSsgICAgMHg3YiwgMHhjZSwgMHg5YiwgMHhkMiwgMHg0YSwgMHg3NiwgMHhiOCwgMHhk ZQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGFlc18yNTZfdXNlX2RmX3ByX2VudHJvcHlpbnB1dHByW10gPSB7Ci0rICAgIDB4MGIsIDB4 MjMsIDB4YWYsIDB4ZGYsIDB4ZjEsIDB4NjIsIDB4ZDcsIDB4ZDMsIDB4NDMsIDB4OTcsIDB4Zjgs IDB4NzcsCi0rICAgIDB4MDQsIDB4YTgsIDB4NDIsIDB4MjAsIDB4YmQsIDB4ZjYsIDB4MGYsIDB4 YzEsIDB4MTcsIDB4MmYsIDB4OWYsIDB4NTQsCi0rICAgIDB4YmIsIDB4NTYsIDB4MTcsIDB4ODYs IDB4NjgsIDB4MGUsIDB4YmEsIDB4YTkKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9wcl9pbnRfcmV0dXJuZWRi aXRzW10gPSB7Ci0rICAgIDB4MzEsIDB4OGUsIDB4YWQsIDB4YWYsIDB4NDAsIDB4ZWIsIDB4NmIs IDB4NzQsIDB4MzEsIDB4NDYsIDB4ODAsIDB4YzcsCi0rICAgIDB4MTcsIDB4YWIsIDB4M2MsIDB4 N2EKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBhZXNfMjU2X3VzZV9kZl9wcl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7Ci0rICAgIDB4OTQs IDB4NmIsIDB4YzksIDB4OWYsIDB4YWIsIDB4OGQsIDB4YzUsIDB4ZWMsIDB4NzEsIDB4ODgsIDB4 MWQsIDB4MDAsCi0rICAgIDB4OGMsIDB4ODksIDB4NjgsIDB4ZTQsIDB4YzgsIDB4MDcsIDB4Nzcs IDB4MzYsIDB4MTcsIDB4NmQsIDB4NzksIDB4NzgsCi0rICAgIDB4YzcsIDB4MDYsIDB4NGUsIDB4 OTksIDB4MDQsIDB4MjgsIDB4MjksIDB4YzMKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwotKyAg ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9wcl9lbnRyb3B5aW5w dXRwcjJbXSA9IHsKLSsgICAgMHhiZiwgMHg2YywgMHg1OSwgMHgyYSwgMHgwZCwgMHg0NCwgMHgw ZiwgMHhhZSwgMHg5YSwgMHg1ZSwgMHgwMywgMHg3MywKLSsgICAgMHhkOCwgMHhhNiwgMHhlMSwg MHhjZiwgMHgyNSwgMHg2MSwgMHgzOCwgMHgyNCwgMHg4NiwgMHg5ZSwgMHg1MywgMHhlOCwKLSsg ICAgMHhhNCwgMHhkZiwgMHg1NiwgMHhmNCwgMHgwNiwgMHgwNywgMHg5YywgMHgwZgotK307Ci0r Ci0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNl X2RmX3ByX3JldHVybmVkYml0c1tdID0gewotKyAgICAweDIyLCAweDRhLCAweGI0LCAweGI4LCAw eGI2LCAweGVlLCAweDdkLCAweGIxLCAweDllLCAweGM5LCAweGY5LCAweGEwLAotKyAgICAweGQ5 LCAweGUyLCAweDk3LCAweDAwCi0rfTsKLSsKLSsvKiBBRVMtMjU2IHVzZSBkZiBObyBQUiAgKi8K LStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91c2Vf ZGZfZW50cm9weWlucHV0W10gPSB7Ci0rICAgIDB4YTUsIDB4M2UsIDB4MzcsIDB4MTAsIDB4MTcs IDB4NDMsIDB4OTEsIDB4OTMsIDB4NTksIDB4MWUsIDB4NDcsIDB4NTAsCi0rICAgIDB4ODcsIDB4 YWEsIDB4ZGQsIDB4ZDUsIDB4YzEsIDB4YzMsIDB4ODYsIDB4Y2QsIDB4Y2EsIDB4MGQsIDB4ZGIs IDB4NjgsCi0rICAgIDB4ZTAsIDB4MDIsIDB4ZDgsIDB4MGYsIDB4ZGMsIDB4NDAsIDB4MWEsIDB4 NDcKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBh ZXNfMjU2X3VzZV9kZl9ub25jZVtdID0gewotKyAgICAweGE5LCAweDRkLCAweGE1LCAweDVhLCAw eGZkLCAweGM1LCAweDBjLCAweGU1LCAweDFjLCAweDlhLCAweDNiLCAweDhhLAotKyAgICAweDRj LCAweDQ0LCAweDg0LCAweDQwCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfcGVyc29uYWxpemF0aW9uc3RyaW5n W10gPSB7Ci0rICAgIDB4OGIsIDB4NTIsIDB4YTIsIDB4NGEsIDB4OTMsIDB4YzMsIDB4NGUsIDB4 YTcsIDB4MWUsIDB4MWMsIDB4YTcsIDB4MDUsCi0rICAgIDB4ZWIsIDB4ODIsIDB4OWIsIDB4YTYs IDB4NWQsIDB4ZTQsIDB4ZDQsIDB4ZTAsIDB4N2YsIDB4YTMsIDB4ZDgsIDB4NmIsCi0rICAgIDB4 MzcsIDB4ODQsIDB4NWYsIDB4ZjEsIDB4YzcsIDB4ZDUsIDB4ZjYsIDB4ZDIKLSt9OwotKwotK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9h ZGRpdGlvbmFsaW5wdXRbXSA9IHsKLSsgICAgMHgyMCwgMHhmNCwgMHgyMiwgMHhlZCwgMHhmOCwg MHg1YywgMHhhMSwgMHg2YSwgMHgwMSwgMHhjZiwgMHhiZSwgMHg1ZiwKLSsgICAgMHg4ZCwgMHg2 YywgMHg5NCwgMHg3ZiwgMHhhZSwgMHgxMiwgMHhhOCwgMHg1NywgMHhkYiwgMHgyYSwgMHhhOSwg MHhiZiwKLSsgICAgMHhjNywgMHhiMywgMHg2NSwgMHg4MSwgMHg4MCwgMHg4ZCwgMHgwZCwgMHg0 NgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFl c18yNTZfdXNlX2RmX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHg0ZSwgMHg0NCwgMHhm ZCwgMHhmMywgMHg5ZSwgMHgyOSwgMHhhMiwgMHhiOCwgMHgwZiwgMHg1ZCwgMHg2YywgMHhlMSwK LSsgICAgMHgyOCwgMHgwYywgMHgzYiwgMHhjMQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0r ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX2VudHJvcHlpbnB1 dHJlc2VlZFtdID0gewotKyAgICAweGRkLCAweDQwLCAweGU1LCAweDk4LCAweDdiLCAweDI3LCAw eDE2LCAweDczLCAweDE1LCAweDY4LCAweGQyLCAweDc2LAotKyAgICAweGJmLCAweDBjLCAweDY3 LCAweDE1LCAweDc1LCAweDc5LCAweDAzLCAweGQzLCAweGRlLCAweGRlLCAweDkxLCAweDQ2LAot KyAgICAweDQyLCAweGRkLCAweGQ0LCAweDY3LCAweGM4LCAweDc5LCAweGM4LCAweDFlCi0rfTsK LSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVz XzI1Nl91c2VfZGZfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPSB7Ci0rICAgIDB4N2YsIDB4ZDgs IDB4MWYsIDB4YmQsIDB4MmEsIDB4YjUsIDB4MWMsIDB4MTEsIDB4NWQsIDB4ODMsIDB4NGUsIDB4 OTksCi0rICAgIDB4ZjYsIDB4NWMsIDB4YTUsIDB4NDAsIDB4MjAsIDB4ZWQsIDB4MzgsIDB4OGUs IDB4ZDUsIDB4OWUsIDB4ZTAsIDB4NzUsCi0rICAgIDB4OTMsIDB4ZmUsIDB4MTIsIDB4NWUsIDB4 NWQsIDB4NzMsIDB4ZmIsIDB4NzUKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7Ci0r ICAgIDB4Y2QsIDB4MmMsIDB4ZmYsIDB4MTQsIDB4NjksIDB4M2UsIDB4NGMsIDB4OWUsIDB4ZmQs IDB4ZmUsIDB4MjYsIDB4MGQsCi0rICAgIDB4ZTksIDB4ODYsIDB4MDAsIDB4NDksIDB4MzAsIDB4 YmEsIDB4YjEsIDB4YzYsIDB4NTAsIDB4NTcsIDB4NzcsIDB4MmEsCi0rICAgIDB4NjIsIDB4Mzks IDB4MmMsIDB4M2IsIDB4NzQsIDB4ZWIsIDB4YzksIDB4MGQKLSt9OwotKwotK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9yZXR1cm5lZGJp dHNbXSA9IHsKLSsgICAgMHg0ZiwgMHg3OCwgMHhiZSwgMHhiOSwgMHg0ZCwgMHg5NywgMHg4Yywg MHhlOSwgMHhkMCwgMHg5NywgMHhmZSwgMHhhZCwKLSsgICAgMHhmYSwgMHhmZCwgMHgzNSwgMHg1 ZQotK307Ci0rCi0rLyogQUVTLTEyOCBubyBkZiBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19kZl9wcl9lbnRyb3B5aW5wdXRbXSA9 IHsKLSsgICAgMHg5YSwgMHgyNSwgMHg2NSwgMHgxMCwgMHg2NywgMHhkNSwgMHhiNiwgMHg2Yiwg MHg3MCwgMHhhMSwgMHhiMywgMHhhNCwKLSsgICAgMHg0MywgMHg5NSwgMHg4MCwgMHhjMCwgMHg4 NCwgMHgwYSwgMHg3OSwgMHhiMCwgMHg4OCwgMHg3NCwgMHhmMiwgMHhiZiwKLSsgICAgMHgzMSwg MHg2YywgMHgzMywgMHgzOCwgMHgwYiwgMHgwMCwgMHhiMiwgMHg1YQotK307Ci0rCi0rX19maXBz X2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfcHJfbm9u Y2VbXSA9IHsKLSsgICAgMHg3OCwgMHg0NywgMHg2YiwgMHhmNywgMHg5MCwgMHg4ZSwgMHg4Nywg MHhmMQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGFlc18xMjhfbm9fZGZfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7Ci0rICAg IDB4ZjcsIDB4MjIsIDB4MWQsIDB4M2EsIDB4YmUsIDB4MWQsIDB4Y2EsIDB4MzIsIDB4MWIsIDB4 YmQsIDB4ODcsIDB4MGMsCi0rICAgIDB4NTEsIDB4MjQsIDB4MTksIDB4ZWUsIDB4YTMsIDB4MjMs IDB4MDksIDB4NjMsIDB4MzMsIDB4M2QsIDB4YTgsIDB4MGMsCi0rICAgIDB4MWMsIDB4ZmEsIDB4 NDIsIDB4ODksIDB4Y2MsIDB4NmYsIDB4YTAsIDB4YTgKLSt9OwotKwotK19fZmlwc19jb25zdHNl ZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX3ByX2FkZGl0 aW9uYWxpbnB1dFtdID0gewotKyAgICAweGM5LCAweGUwLCAweDgwLCAweGJmLCAweDhjLCAweDQ1 LCAweDU4LCAweDM5LCAweGZmLCAweDAwLCAweGFiLCAweDAyLAotKyAgICAweDRjLCAweDNlLCAw eDNhLCAweDk1LCAweDliLCAweDgwLCAweGE4LCAweDIxLCAweDJhLCAweGVlLCAweGJhLCAweDcz LAotKyAgICAweGIxLCAweGQ5LCAweGNmLCAweDI4LCAweGY2LCAweDhmLCAweDliLCAweDEyCi0r fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEy OF9ub19kZl9wcl9lbnRyb3B5aW5wdXRwcltdID0gewotKyAgICAweDRjLCAweGE4LCAweGM1LCAw eGYwLCAweDU5LCAweDllLCAweGE2LCAweDhkLCAweDI2LCAweDUzLCAweGQ3LCAweDhhLAotKyAg ICAweGE5LCAweGQ4LCAweGY3LCAweGVkLCAweGIyLCAweGY5LCAweDEyLCAweDQyLCAweGUxLCAw eGU1LCAweGJkLCAweGU3LAotKyAgICAweGU3LCAweDFkLCAweDc0LCAweDk5LCAweDAwLCAweDlk LCAweDMxLCAweDNlCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19kZl9wcl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7Ci0r ICAgIDB4ZTIsIDB4YWMsIDB4MjAsIDB4ZjAsIDB4ODAsIDB4ZTcsIDB4YmMsIDB4N2UsIDB4OWMs IDB4N2IsIDB4NjUsIDB4NzEsCi0rICAgIDB4YWYsIDB4MTksIDB4MzIsIDB4MTYKLSt9OwotKwot K19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4 X25vX2RmX3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKLSsgICAgMHgzMiwgMHg3ZiwgMHgzOCwg MHg4YiwgMHg3MywgMHgwYSwgMHg3OCwgMHg4MywgMHhkYywgMHgzMCwgMHhiZSwgMHg5ZiwKLSsg ICAgMHgxMCwgMHgxZiwgMHhmNSwgMHgxZiwgMHhjYSwgMHgwMCwgMHhiNSwgMHgwZCwgMHhkNiwg MHg5ZCwgMHg2MCwgMHg4MywKLSsgICAgMHg1MSwgMHg1NCwgMHg3ZCwgMHgzOCwgMHgyMywgMHgz YSwgMHg1MiwgMHg1MAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfcHJfZW50cm9weWlucHV0cHIyW10gPSB7Ci0r ICAgIDB4MTgsIDB4NjEsIDB4NTMsIDB4NTYsIDB4ZWQsIDB4ZWQsIDB4ZDcsIDB4MjAsIDB4ZmIs IDB4NzEsIDB4MDQsIDB4N2EsCi0rICAgIDB4YjIsIDB4YWMsIDB4YzEsIDB4MjgsIDB4Y2QsIDB4 ZjIsIDB4YzIsIDB4ZmMsIDB4YWEsIDB4YjEsIDB4MDYsIDB4MDcsCi0rICAgIDB4ZTksIDB4NDYs IDB4OTUsIDB4MDIsIDB4NDgsIDB4MDEsIDB4NzgsIDB4ZjkKLSt9OwotKwotK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX3ByX3JldHVybmVk Yml0c1tdID0gewotKyAgICAweDI5LCAweGM4LCAweDFiLCAweDE1LCAweGIxLCAweGQxLCAweGMy LCAweGY2LCAweDcxLCAweDg2LCAweDY4LCAweDMzLAotKyAgICAweDU3LCAweDgyLCAweDMzLCAw eGFmCi0rfTsKLSsKLSsvKiBBRVMtMTI4IG5vIGRmIE5vIFBSICAqLwotK19fZmlwc19jb25zdHNl ZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX2VudHJvcHlpbnB1dFtd ID0gewotKyAgICAweGM5LCAweGM1LCAweDc5LCAweGJjLCAweGU4LCAweGM1LCAweDE5LCAweGQ4 LCAweGJjLCAweDY2LCAweDczLCAweDY3LAotKyAgICAweGY2LCAweGQzLCAweDcyLCAweGFhLCAw eGE2LCAweDE2LCAweGI4LCAweDUwLCAweGI3LCAweDQ3LCAweDNhLCAweDQyLAotKyAgICAweGFi LCAweGY0LCAweDE2LCAweGIyLCAweDk2LCAweGQyLCAweGI2LCAweDYwCi0rfTsKLSsKLStfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19kZl9ub25j ZVtdID0gewotKyAgICAweDVmLCAweGJmLCAweDk3LCAweDBjLCAweDRiLCAweGE0LCAweDg3LCAw eDEzCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgYWVzXzEyOF9ub19kZl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKLSsgICAgMHhj ZSwgMHhmYiwgMHg3YiwgMHgzZiwgMHhkNCwgMHg2YiwgMHgyOSwgMHgwZCwgMHg2OSwgMHgwNiwg MHhmZiwgMHhiYiwKLSsgICAgMHhmMiwgMHhlNSwgMHhjNiwgMHg2YywgMHgwYSwgMHgxMCwgMHhh MCwgMHhjZiwgMHgxYSwgMHg0OCwgMHhjNywgMHg4YiwKLSsgICAgMHgzYywgMHgxNiwgMHg4OCwg MHhlZCwgMHg1MCwgMHgxMywgMHg4MSwgMHhjZQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfYWRkaXRpb25hbGlucHV0W10g PSB7Ci0rICAgIDB4NGIsIDB4MjIsIDB4NDYsIDB4MTgsIDB4MDIsIDB4N2IsIDB4ZDIsIDB4MWIs IDB4MjIsIDB4NDIsIDB4N2MsIDB4MzcsCi0rICAgIDB4ZDksIDB4ZjYsIDB4ZTgsIDB4OWIsIDB4 MTIsIDB4MzAsIDB4NWYsIDB4ZTksIDB4OTAsIDB4ZTgsIDB4MDgsIDB4MjQsCi0rICAgIDB4NGYs IDB4MDYsIDB4NjYsIDB4ZGIsIDB4MTksIDB4MmIsIDB4MTMsIDB4OTUKLSt9OwotKwotK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX2ludF9y ZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHgyZSwgMHg5NiwgMHg3MCwgMHg2NCwgMHhmYSwgMHhk ZiwgMHhkZiwgMHg1NywgMHhiNSwgMHg4MiwgMHhlZSwgMHhkNiwKLSsgICAgMHhlZCwgMHgzZSwg MHg2NSwgMHhjMgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfZW50cm9weWlucHV0cmVzZWVkW10gPSB7Ci0rICAg IDB4MjYsIDB4YzAsIDB4NzIsIDB4MTYsIDB4M2EsIDB4NGIsIDB4YjcsIDB4OTksIDB4ZDQsIDB4 MDcsIDB4YWYsIDB4NjYsCi0rICAgIDB4NjIsIDB4MzYsIDB4OTYsIDB4YTQsIDB4NTEsIDB4MTcs IDB4ZmEsIDB4MDcsIDB4OGIsIDB4MTcsIDB4NWUsIDB4YTEsCi0rICAgIDB4MmYsIDB4M2MsIDB4 MTAsIDB4ZTcsIDB4OTAsIDB4ZDAsIDB4NDYsIDB4MDAKLSt9OwotKwotK19fZmlwc19jb25zdHNl ZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX2FkZGl0aW9u YWxpbnB1dHJlc2VlZFtdID0gewotKyAgICAweDgzLCAweDM5LCAweDM3LCAweDdiLCAweDAyLCAw eDA2LCAweGQyLCAweDEyLCAweDEzLCAweDhkLCAweDhiLCAweGYyLAotKyAgICAweGYwLCAweGY2 LCAweDI2LCAweGViLCAweGE0LCAweDIyLCAweDdiLCAweGMyLCAweGU3LCAweGJhLCAweDc5LCAw eGU0LAotKyAgICAweDNiLCAweDc3LCAweDVkLCAweDRkLCAweDQ3LCAweGIyLCAweDJkLCAweGI0 Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVz XzEyOF9ub19kZl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7Ci0rICAgIDB4MGIsIDB4YjksIDB4Njcs IDB4MzcsIDB4ZGIsIDB4ODMsIDB4ZGYsIDB4Y2EsIDB4ODEsIDB4OGIsIDB4ZjksIDB4M2YsCi0r ICAgIDB4ZjEsIDB4MTEsIDB4MWIsIDB4MmYsIDB4ZjAsIDB4NjEsIDB4YTYsIDB4ZGYsIDB4YmEs IDB4YTMsIDB4YjEsIDB4YWMsCi0rICAgIDB4ZDMsIDB4ZTYsIDB4MDksIDB4YjgsIDB4MmMsIDB4 NmEsIDB4NjcsIDB4ZDYKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBhZXNfMTI4X25vX2RmX3JldHVybmVkYml0c1tdID0gewotKyAgICAweDFlLCAw eGE3LCAweGE0LCAweGU0LCAweGUxLCAweGE2LCAweDdjLCAweDY5LCAweDlhLCAweDQ0LCAweDZj LCAweDM2LAotKyAgICAweDgxLCAweDM3LCAweDE5LCAweGQ0Ci0rfTsKLSsKLSsvKiBBRVMtMTky IG5vIGRmIFBSICAqLwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBhZXNfMTkyX25vX2RmX3ByX2VudHJvcHlpbnB1dFtdID0gewotKyAgICAweDlkLCAweDJjLCAw eGQyLCAweDU1LCAweDY2LCAweGVhLCAweGUwLCAweGJlLCAweDE4LCAweGI3LCAweDc2LCAweGU3 LAotKyAgICAweDczLCAweDM1LCAweGQ4LCAweDFmLCAweGFkLCAweDNhLCAweGUzLCAweDgxLCAw eDBlLCAweDkyLCAweGQwLCAweDYxLAotKyAgICAweGM5LCAweDEyLCAweDI2LCAweGY2LCAweDFj LCAweGRmLCAweGZlLCAweDQ3LCAweGFhLCAweGZlLCAweDdkLCAweDVhLAotKyAgICAweDE3LCAw eDFmLCAweDhkLCAweDlhCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9wcl9ub25jZVtdID0gewotKyAgICAweDQ0LCAweDgy LCAweGVkLCAweGU4LCAweDRjLCAweDI4LCAweDVhLCAweDE0LCAweGZmLCAweDg4LCAweDhkLCAw eDE5LAotKyAgICAweDYxLCAweDVjLCAweGVlLCAweDBmCi0rfTsKLSsKLStfX2ZpcHNfY29uc3Rz ZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9wcl9wZXJz b25hbGl6YXRpb25zdHJpbmdbXSA9IHsKLSsgICAgMHg0NywgMHhkNywgMHg5YiwgMHg5OSwgMHhh YSwgMHhjYiwgMHhlNywgMHhkMiwgMHg1NywgMHg2NiwgMHgyYywgMHhlMSwKLSsgICAgMHg3OCwg MHhkNiwgMHgyYywgMHhlYSwgMHhhMywgMHgyMywgMHg1ZiwgMHgyYSwgMHhjMSwgMHgzYSwgMHhm MCwgMHhhNCwKLSsgICAgMHgyMCwgMHgzYiwgMHhmYSwgMHgwNywgMHhkNSwgMHgwNSwgMHgwMiwg MHhlNCwgMHg1NywgMHgwMSwgMHhiNiwgMHgxMCwKLSsgICAgMHg1NywgMHgyZSwgMHhlNywgMHg1 NQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGFlc18xOTJfbm9fZGZfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7Ci0rICAgIDB4NGIsIDB4 NzQsIDB4MGIsIDB4NDAsIDB4Y2UsIDB4NmIsIDB4YzIsIDB4NmEsIDB4MjQsIDB4YjQsIDB4ZjMs IDB4YWQsCi0rICAgIDB4N2EsIDB4YTUsIDB4N2EsIDB4YTIsIDB4MTUsIDB4ZTIsIDB4YzgsIDB4 NjEsIDB4MTUsIDB4YzYsIDB4YjcsIDB4ODUsCi0rICAgIDB4NjksIDB4MTEsIDB4YWQsIDB4N2Is IDB4MTQsIDB4ZDIsIDB4ZjYsIDB4MTIsIDB4YTEsIDB4OTUsIDB4NWQsIDB4M2YsCi0rICAgIDB4 ZTIsIDB4ZDAsIDB4MGMsIDB4MmYKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX3ByX2VudHJvcHlpbnB1dHByW10gPSB7Ci0r ICAgIDB4MGMsIDB4OWMsIDB4YWQsIDB4MDUsIDB4ZWUsIDB4YWUsIDB4NDgsIDB4MjMsIDB4ODks IDB4NTksIDB4YTEsIDB4OTQsCi0rICAgIDB4ZDcsIDB4ZDgsIDB4NzUsIDB4ZDUsIDB4NTQsIDB4 OTMsIDB4YzcsIDB4NGEsIDB4ZDksIDB4MjYsIDB4ZGUsIDB4ZWIsCi0rICAgIDB4YmEsIDB4YjAs IDB4N2UsIDB4MzAsIDB4MWQsIDB4NWYsIDB4NjksIDB4NDAsIDB4OWMsIDB4M2IsIDB4MTcsIDB4 NTgsCi0rICAgIDB4MWQsIDB4MzAsIDB4YjMsIDB4NzgKLSt9OwotKwotK19fZmlwc19jb25zdHNl ZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX3ByX2ludF9y ZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHhmNywgMHg5MywgMHhiMCwgMHg2ZCwgMHg3NywgMHg4 MywgMHhkNSwgMHgzOCwgMHgwMSwgMHhlMSwgMHg1MiwgMHg0MCwKLSsgICAgMHg3ZSwgMHgzZSwg MHgwYywgMHgyNgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfcHJfYWRkaXRpb25hbGlucHV0MltdID0gewotKyAg ICAweGJjLCAweDRiLCAweDM3LCAweDQ0LCAweDFjLCAweGM1LCAweDQ1LCAweDVmLCAweDhmLCAw eDUxLCAweDYyLCAweDhhLAotKyAgICAweDg1LCAweDMwLCAweDFkLCAweDdjLCAweGU0LCAweGNm LCAweGY3LCAweDQ0LCAweGNlLCAweDMyLCAweDNlLCAweDU3LAotKyAgICAweDk1LCAweGE0LCAw eDJhLCAweGRmLCAweGZkLCAweDllLCAweDM4LCAweDQxLCAweGIzLCAweGY2LCAweGM1LCAweGVl LAotKyAgICAweDBjLCAweDRiLCAweGVlLCAweDZlCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcK LSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9wcl9lbnRyb3B5 aW5wdXRwcjJbXSA9IHsKLSsgICAgMHhlYywgMHhhZiwgMHhmNiwgMHg0ZiwgMHhiMSwgMHhhMCwg MHg1NCwgMHhiNSwgMHg1YiwgMHhlMywgMHg0NiwgMHhiMCwKLSsgICAgMHg3NiwgMHg1YSwgMHg3 YywgMHgzZiwgMHg3YiwgMHg5NCwgMHg2OSwgMHgyMSwgMHg1MSwgMHgwMiwgMHhlNSwgMHg5ZiwK LSsgICAgMHgwNCwgMHg1OSwgMHgwMiwgMHg5OCwgMHhjNiwgMHg0MywgMHgyYywgMHhjYywgMHgy NiwgMHg0YywgMHg4NywgMHg2YiwKLSsgICAgMHg4ZSwgMHgwYSwgMHg4MywgMHhkZgotK307Ci0r Ci0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9f ZGZfcHJfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4NzQsIDB4NDUsIDB4ZmIsIDB4NTMsIDB4 ODQsIDB4OTYsIDB4YmUsIDB4ZmYsIDB4MTUsIDB4Y2MsIDB4NDEsIDB4OTEsCi0rICAgIDB4Yjks IDB4YTEsIDB4MjEsIDB4NjgKLSt9OwotKwotKy8qIEFFUy0xOTIgbm8gZGYgTm8gUFIgICovCi0r X19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZf ZW50cm9weWlucHV0W10gPSB7Ci0rICAgIDB4M2MsIDB4N2QsIDB4YjUsIDB4ZTAsIDB4NTQsIDB4 ZDksIDB4NmUsIDB4OGMsIDB4YTksIDB4ODYsIDB4Y2UsIDB4NGUsCi0rICAgIDB4NmIsIDB4YWYs IDB4ZWIsIDB4MmYsIDB4ZTcsIDB4NzUsIDB4ZTAsIDB4OGIsIDB4YTQsIDB4M2IsIDB4MDcsIDB4 ZmUsCi0rICAgIDB4YmUsIDB4MzMsIDB4NzUsIDB4OTMsIDB4ODAsIDB4MjcsIDB4YjUsIDB4Mjks IDB4NDcsIDB4OGIsIDB4YzcsIDB4MjgsCi0rICAgIDB4OTQsIDB4YzMsIDB4NTksIDB4NjMKLSt9 OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTky X25vX2RmX25vbmNlW10gPSB7Ci0rICAgIDB4NDMsIDB4ZjEsIDB4N2QsIDB4YjgsIDB4YzMsIDB4 ZmUsIDB4ZDAsIDB4MjMsIDB4NmIsIDB4YjQsIDB4OTIsIDB4ZGIsCi0rICAgIDB4MjksIDB4ZmQs IDB4NDUsIDB4NzEKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0gewot KyAgICAweDlmLCAweDI0LCAweDI5LCAweDk5LCAweDllLCAweDAxLCAweGFiLCAweGU5LCAweDE5 LCAweGQ4LCAweDIzLCAweDA4LAotKyAgICAweGI3LCAweGQ2LCAweDdlLCAweDhjLCAweGMwLCAw eDllLCAweDdmLCAweDZlLCAweDViLCAweDMzLCAweDIwLCAweDk2LAotKyAgICAweDBiLCAweDIz LCAweDJjLCAweGE1LCAweDZhLCAweGY4LCAweDFiLCAweDA0LCAweDI2LCAweGRiLCAweDJlLCAw eDJiLAotKyAgICAweDNiLCAweDg4LCAweGNlLCAweDM1Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9hZGRpdGlvbmFsaW5w dXRbXSA9IHsKLSsgICAgMHg5NCwgMHhlOSwgMHg3YywgMHgzZCwgMHhhNywgMHhkYiwgMHg2MCwg MHg4MywgMHgxZiwgMHg5OCwgMHgzZiwgMHgwYiwKLSsgICAgMHg4OCwgMHg1OSwgMHg1NywgMHg1 MSwgMHg4OCwgMHg5ZiwgMHg3NiwgMHg0OSwgMHg5ZiwgMHhhNiwgMHhkYSwgMHg3MSwKLSsgICAg MHgxZCwgMHgwZCwgMHg0NywgMHgxNiwgMHg2MywgMHhjNSwgMHg2OCwgMHhlNCwgMHg1ZCwgMHgz OSwgMHg2OSwgMHhiMywKLSsgICAgMHgzZSwgMHhiZSwgMHhkNCwgMHg4ZQotK307Ci0rCi0rX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfaW50 X3JldHVybmVkYml0c1tdID0gewotKyAgICAweGY5LCAweGQ3LCAweGFkLCAweDY5LCAweGFiLCAw eDhmLCAweDIzLCAweDU2LCAweDcwLCAweDE3LCAweDRmLCAweDJhLAotKyAgICAweDQ1LCAweGU3 LCAweDRhLCAweGM1Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsKLSsg ICAgMHhhNiwgMHg3MSwgMHg2YSwgMHgzZCwgMHhiYSwgMHhkMSwgMHhlOCwgMHg2NiwgMHhhNiwg MHhlZiwgMHhiMiwgMHgwZSwKLSsgICAgMHhhOCwgMHg5YywgMHhhYSwgMHg0ZSwgMHhhZiwgMHgx NywgMHg4OSwgMHg1MCwgMHgwMCwgMHhkYSwgMHhhMSwgMHhiMSwKLSsgICAgMHgwYiwgMHhhNCwg MHhkOSwgMHgzNSwgMHg4OSwgMHhjOCwgMHhlNSwgMHhiMCwgMHhkOSwgMHhiNywgMHhjNCwgMHgz MywKLSsgICAgMHg5YiwgMHhjYiwgMHg3ZSwgMHg3NQotK307Ci0rCi0rX19maXBzX2NvbnN0c2Vn Ci0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfYWRkaXRpb25h bGlucHV0cmVzZWVkW10gPSB7Ci0rICAgIDB4MjcsIDB4MjEsIDB4ZmMsIDB4YzIsIDB4YmQsIDB4 ZjMsIDB4M2MsIDB4Y2UsIDB4YzMsIDB4Y2EsIDB4YzEsIDB4MDEsCi0rICAgIDB4ZTAsIDB4ZmYs IDB4OTMsIDB4MTIsIDB4N2QsIDB4NTQsIDB4NDIsIDB4ZTMsIDB4OWYsIDB4MDMsIDB4ZGYsIDB4 MjcsCi0rICAgIDB4MDQsIDB4MDcsIDB4M2MsIDB4NTMsIDB4N2YsIDB4YTgsIDB4NjYsIDB4Yzgs IDB4OTcsIDB4NGIsIDB4NjEsIDB4NDAsCi0rICAgIDB4NWQsIDB4N2EsIDB4MjUsIDB4NzkKLSt9 OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTky X25vX2RmX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKLSsgICAgMHgyZCwgMHg4ZSwgMHgxNiwgMHg1 ZCwgMHgwYiwgMHg5ZiwgMHhlYiwgMHhhYSwgMHhkNiwgMHhlYywgMHgyOCwgMHg3MSwKLSsgICAg MHg3YywgMHgwYiwgMHhjMSwgMHgxZCwgMHhkNCwgMHg0NCwgMHgxOSwgMHg0NywgMHhmZCwgMHgx ZCwgMHg3YywgMHhlNSwKLSsgICAgMHhmMywgMHgyNywgMHhlMSwgMHhiNiwgMHg3MiwgMHgwYSwg MHhlMCwgMHhlYywgMHgwZSwgMHhjZCwgMHhlZiwgMHgxYSwKLSsgICAgMHg5MSwgMHg2YSwgMHhl MywgMHg1ZgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGFlc18xOTJfbm9fZGZfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4ZTUsIDB4ZGEsIDB4 YjgsIDB4ZTAsIDB4NjMsIDB4NTksIDB4NWEsIDB4Y2MsIDB4M2QsIDB4ZGMsIDB4OWYsIDB4ZTgs Ci0rICAgIDB4NjYsIDB4NjcsIDB4MmMsIDB4OTIKLSt9OwotKwotKy8qIEFFUy0yNTYgbm8gZGYg UFIgICovCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18y NTZfbm9fZGZfcHJfZW50cm9weWlucHV0W10gPSB7Ci0rICAgIDB4MTUsIDB4YzcsIDB4NWQsIDB4 Y2IsIDB4NDEsIDB4NGIsIDB4MTYsIDB4MDEsIDB4M2EsIDB4ZDEsIDB4NDQsIDB4ZTgsCi0rICAg IDB4MjIsIDB4MzIsIDB4YzYsIDB4OWMsIDB4M2YsIDB4ZTcsIDB4NDMsIDB4ZjUsIDB4OWEsIDB4 ZDMsIDB4ZWEsIDB4ZjIsCi0rICAgIDB4ZDcsIDB4NGUsIDB4NmUsIDB4NmEsIDB4NTUsIDB4NzMs IDB4NDAsIDB4ZWYsIDB4ODksIDB4YWQsIDB4MGQsIDB4MDMsCi0rICAgIDB4OTYsIDB4N2UsIDB4 NzgsIDB4ODEsIDB4MmYsIDB4OTEsIDB4MWIsIDB4NDQsIDB4YjAsIDB4MDIsIDB4YmEsIDB4MWMK LSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNf MjU2X25vX2RmX3ByX25vbmNlW10gPSB7Ci0rICAgIDB4ZGMsIDB4ZTQsIDB4ZDQsIDB4MjcsIDB4 N2EsIDB4OTAsIDB4ZDcsIDB4OTksIDB4NDMsIDB4YTEsIDB4M2MsIDB4MzAsCi0rICAgIDB4Y2Ms IDB4NGIsIDB4ZWUsIDB4MmUKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2RmX3ByX3BlcnNvbmFsaXphdGlvbnN0cmlu Z1tdID0gewotKyAgICAweGUzLCAweGU2LCAweGI5LCAweDExLCAweGU0LCAweDdhLCAweGE0LCAw eDQwLCAweDZiLCAweGY4LCAweDczLCAweGY3LAotKyAgICAweDdlLCAweGVjLCAweGM3LCAweGI5 LCAweDk3LCAweGJmLCAweGY4LCAweDI1LCAweDdiLCAweGJlLCAweDExLCAweDliLAotKyAgICAw eDViLCAweDZhLCAweDBjLCAweDJlLCAweDJiLCAweDAxLCAweDUxLCAweGNkLCAweDQxLCAweDRi LCAweDZiLCAweGFjLAotKyAgICAweDMxLCAweGE4LCAweDBiLCAweGY3LCAweGU2LCAweDU5LCAw eDQyLCAweGI4LCAweDAzLCAweDBjLCAweGY4LCAweDA2Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3Rz ZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9wcl9hZGRp dGlvbmFsaW5wdXRbXSA9IHsKLSsgICAgMHg2YSwgMHg5ZiwgMHgwMCwgMHg5MSwgMHhhZSwgMHhm ZSwgMHhjZiwgMHg4NCwgMHg5OSwgMHhjZSwgMHhiMSwgMHg0MCwKLSsgICAgMHg2ZCwgMHg1ZCwg MHgzMywgMHgyOCwgMHg4NCwgMHhmNCwgMHg4YywgMHg2MywgMHg0YywgMHg3ZSwgMHhiZCwgMHgy YywKLSsgICAgMHg4MCwgMHg3NiwgMHhlZSwgMHg1YSwgMHhhYSwgMHgxNSwgMHgwNywgMHgzMSwg MHhkOCwgMHhiYiwgMHg4YywgMHg2OSwKLSsgICAgMHg5ZCwgMHg5ZCwgMHhiYywgMHg3ZSwgMHg0 OSwgMHhhZSwgMHhlYywgMHgzOSwgMHg2YiwgMHhkMSwgMHgxZiwgMHg3ZQotK307Ci0rCi0rX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9fZGZfcHJf ZW50cm9weWlucHV0cHJbXSA9IHsKLSsgICAgMHhmMywgMHhiOSwgMHg3NSwgMHg5YywgMHhiZCwg MHg4OCwgMHhlYSwgMHhhMiwgMHg1MCwgMHhhZCwgMHhkNiwgMHgxNiwKLSsgICAgMHgxYSwgMHgx MiwgMHgzYywgMHg4NiwgMHg2OCwgMHhhZiwgMHg2ZiwgMHhiZSwgMHgxOSwgMHhmMiwgMHhlZSwg MHhjYywKLSsgICAgMHhhNSwgMHg3MCwgMHg4NCwgMHg1MywgMHg1MCwgMHhjYiwgMHg5ZiwgMHgx NCwgMHhhOSwgMHhlNSwgMHhlZSwgMHhiOSwKLSsgICAgMHg0OCwgMHg0NSwgMHg0MCwgMHhlMiwg MHhjNywgMHhjOSwgMHg5YSwgMHg3NCwgMHhmZiwgMHg4YywgMHg5OSwgMHgxZgotK307Ci0rCi0r X19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZf bm9fZGZfcHJfaW50X3JldHVybmVkYml0c1tdID0gewotKyAgICAweDJlLCAweGYyLCAweDQ1LCAw eDRjLCAweDYyLCAweDJlLCAweDBhLCAweGI5LCAweDZiLCAweGEyLCAweGZkLCAweDU2LAotKyAg ICAweDc5LCAweDYwLCAweDkzLCAweGNmCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9wcl9hZGRpdGlvbmFsaW5w dXQyW10gPSB7Ci0rICAgIDB4YWYsIDB4NjksIDB4MjAsIDB4ZTksIDB4M2IsIDB4MzcsIDB4OWQs IDB4M2YsIDB4YjQsIDB4ODAsIDB4MDIsIDB4N2EsCi0rICAgIDB4MjUsIDB4N2QsIDB4YjgsIDB4 ZGUsIDB4NzEsIDB4YzUsIDB4MDYsIDB4MGMsIDB4YjQsIDB4ZTIsIDB4OGYsIDB4MzUsCi0rICAg IDB4ZDgsIDB4MTQsIDB4MGQsIDB4N2YsIDB4NzYsIDB4NjMsIDB4NGUsIDB4YjUsIDB4ZWUsIDB4 ZTksIDB4NmYsIDB4MzQsCi0rICAgIDB4YzcsIDB4NWYsIDB4NTYsIDB4MTQsIDB4NGEsIDB4ZTgs IDB4NzMsIDB4OTUsIDB4NWIsIDB4MWMsIDB4YjksIDB4Y2IKLSt9OwotKwotK19fZmlwc19jb25z dHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2RmX3ByX2Vu dHJvcHlpbnB1dHByMltdID0gewotKyAgICAweGU1LCAweGIwLCAweDJlLCAweDdlLCAweDUyLCAw eDMwLCAweGUzLCAweDYzLCAweDgyLCAweGI2LCAweDQ0LCAweGQzLAotKyAgICAweDI1LCAweDE5 LCAweDA1LCAweDI0LCAweDlhLCAweDlmLCAweDVmLCAweDI3LCAweDZhLCAweDI5LCAweGFiLCAw eGZhLAotKyAgICAweDA3LCAweGEyLCAweDQyLCAweDBmLCAweGM1LCAweGE4LCAweDk0LCAweDdj LCAweDE3LCAweDdiLCAweDg1LCAweDgzLAotKyAgICAweDBjLCAweDI1LCAweDBlLCAweDYzLCAw eDBiLCAweGU5LCAweDEyLCAweDYwLCAweGNkLCAweGVmLCAweDgwLCAweDBmCi0rfTsKLSsKLStf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9w cl9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHg1ZSwgMHhmMiwgMHgyNiwgMHhlZiwgMHg5Ziwg MHg1OCwgMHg1ZCwgMHhkNSwgMHg0YSwgMHgxMCwgMHhmZSwgMHhhNywKLSsgICAgMHgyZCwgMHg1 ZiwgMHg0YSwgMHg0NgotK307Ci0rCi0rLyogQUVTLTI1NiBubyBkZiBObyBQUiAgKi8KLStfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9lbnRy b3B5aW5wdXRbXSA9IHsKLSsgICAgMHhmYiwgMHhjZiwgMHgxYiwgMHg2MSwgMHgxNiwgMHg4OSwg MHg3OCwgMHgyMywgMHhmNSwgMHhkOCwgMHg5NiwgMHhlMywKLSsgICAgMHg0ZSwgMHg2NCwgMHgw YiwgMHgyOSwgMHg5YSwgMHgzZiwgMHhmOCwgMHhhNSwgMHhlZCwgMHhmMiwgMHhmZSwgMHhkYiwK LSsgICAgMHgxNiwgMHhjYSwgMHg3ZiwgMHgxMCwgMHhmYSwgMHg1ZSwgMHgxOCwgMHg3NiwgMHgy YywgMHg2MywgMHg1ZSwgMHg5NiwKLSsgICAgMHhjZiwgMHhiMywgMHhkNiwgMHhmYywgMHhhZiwg MHg5OSwgMHgzOSwgMHgyOCwgMHg5YywgMHg2MSwgMHhlOCwgMHhiMwotK307Ci0rCi0rX19maXBz X2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9fZGZfbm9uY2Vb XSA9IHsKLSsgICAgMHgxMiwgMHg5NiwgMHhmMCwgMHg1MiwgMHhmMywgMHg4ZCwgMHg4MSwgMHhj ZiwgMHhkZSwgMHg4NiwgMHhmMiwgMHg5OSwKLSsgICAgMHg0MywgMHg5NiwgMHhiOSwgMHhmMAot K307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGFlc18yNTZfbm9fZGZfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7Ci0rICAgIDB4NjMsIDB4 MGQsIDB4NzgsIDB4ZjUsIDB4OTAsIDB4OGUsIDB4MzIsIDB4NDcsIDB4YjAsIDB4NGQsIDB4Mzcs IDB4NjAsCi0rICAgIDB4MDksIDB4OTYsIDB4YmMsIDB4YmYsIDB4OTcsIDB4N2EsIDB4NjIsIDB4 MTQsIDB4NDUsIDB4YmQsIDB4OGQsIDB4Y2MsCi0rICAgIDB4NjksIDB4ZmIsIDB4MDMsIDB4ZTEs IDB4ODAsIDB4MWMsIDB4YzcsIDB4ZTIsIDB4MmEsIDB4ZjksIDB4MzcsIDB4M2YsCi0rICAgIDB4 NjYsIDB4NGQsIDB4NjIsIDB4ZDksIDB4MTAsIDB4ZTAsIDB4YWQsIDB4YzgsIDB4OWEsIDB4ZjAs IDB4YTgsIDB4NmQKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBhZXNfMjU2X25vX2RmX2FkZGl0aW9uYWxpbnB1dFtdID0gewotKyAgICAweDM2LCAw eGM2LCAweDEzLCAweDYwLCAweGJiLCAweDE0LCAweGFkLCAweDIyLCAweGIwLCAweDM4LCAweGFj LCAweGE2LAotKyAgICAweDE4LCAweDE2LCAweDkzLCAweDI1LCAweDg2LCAweGI3LCAweGRjLCAw eGRjLCAweDM2LCAweDk4LCAweDJiLCAweGY5LAotKyAgICAweDY4LCAweDMzLCAweGQzLCAweGM2 LCAweGZmLCAweGNlLCAweDhkLCAweDE1LCAweDU5LCAweDgyLCAweDc2LCAweGVkLAotKyAgICAw eDZmLCAweDhkLCAweDQ5LCAweDc0LCAweDJmLCAweGRhLCAweGRjLCAweDFmLCAweDE3LCAweGQw LCAweGRlLCAweDE3Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4MTYs IDB4MmYsIDB4OGUsIDB4M2YsIDB4MjEsIDB4N2EsIDB4MWMsIDB4MjAsIDB4NTYsIDB4ZDEsIDB4 OTIsIDB4ZjYsCi0rICAgIDB4ZDIsIDB4MjUsIDB4NzUsIDB4MGUKLSt9OwotKwotK19fZmlwc19j b25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2RmX2Vu dHJvcHlpbnB1dHJlc2VlZFtdID0gewotKyAgICAweDkxLCAweDc5LCAweDc2LCAweGVlLCAweGUw LCAweGNmLCAweDllLCAweGMyLCAweGQ1LCAweGQ0LCAweDIzLCAweDliLAotKyAgICAweDEyLCAw eDhjLCAweDdlLCAweDBhLCAweGI3LCAweGQyLCAweDhiLCAweGQ2LCAweDdjLCAweGEzLCAweGM2 LCAweGU1LAotKyAgICAweDBlLCAweGFhLCAweGM3LCAweDZiLCAweGFlLCAweDBkLCAweGZhLCAw eDUzLCAweDA2LCAweDc5LCAweGExLCAweGVkLAotKyAgICAweDRkLCAweDZhLCAweDBlLCAweGQ4 LCAweDlkLCAweGJlLCAweDFiLCAweDMxLCAweDkzLCAweDdiLCAweGVjLCAweGZiCi0rfTsKLSsK LStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1 Nl9ub19kZl9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9IHsKLSsgICAgMHhkMiwgMHg0NiwgMHg1 MCwgMHgyMiwgMHgxMCwgMHgxNCwgMHg2MywgMHhmNywgMHhlYSwgMHgwZiwgMHhiOSwgMHg3ZSwK LSsgICAgMHgwZCwgMHhlMSwgMHg5NCwgMHgwNywgMHhhZiwgMHgwOSwgMHg0NCwgMHgzMSwgMHhl YSwgMHg2NCwgMHhhNCwgMHgxOCwKLSsgICAgMHg1YiwgMHhmOSwgMHhkOCwgMHhjMiwgMHhmYSwg MHgwMywgMHg0NywgMHhjNSwgMHgzOSwgMHg0MywgMHhkNSwgMHgzYiwKLSsgICAgMHg2MiwgMHg4 NiwgMHg2NCwgMHhlYSwgMHgyYywgMHg3MywgMHg4YywgMHhhZSwgMHg5ZCwgMHg5OCwgMHg5OCwg MHgyOQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGFlc18yNTZfbm9fZGZfYWRkaXRpb25hbGlucHV0MltdID0gewotKyAgICAweDhjLCAweGFiLCAw eDE4LCAweGY4LCAweGMzLCAweGVjLCAweDE4LCAweDVjLCAweGIzLCAweDFlLCAweDlkLCAweGJl LAotKyAgICAweDNmLCAweDAzLCAweGI0LCAweDAwLCAweDk4LCAweDlkLCAweGFlLCAweGViLCAw eGY0LCAweDk0LCAweGY4LCAweDQyLAotKyAgICAweDhmLCAweGUzLCAweDM5LCAweDA3LCAweGUx LCAweGM5LCAweGFkLCAweDBiLCAweDFmLCAweGVkLCAweGMwLCAweGJhLAotKyAgICAweGY2LCAw eGQxLCAweGVjLCAweDI3LCAweDg2LCAweDdiLCAweGQ2LCAweDU1LCAweDliLCAweDYwLCAweGE1 LCAweGM2Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgYWVzXzI1Nl9ub19kZl9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHhlZiwgMHhkMiwgMHhk OCwgMHg1YywgMHhkYywgMHg2MiwgMHgyNSwgMHg5ZiwgMHhhYSwgMHgxZSwgMHgyYywgMHg2NywK LSsgICAgMHhmNiwgMHgwMiwgMHgzMiwgMHhlMgotK307Ci0rCi0rLyogU0hBLTEgUFIgICovCi0r X19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfcHJfZW50cm9w eWlucHV0W10gPSB7Ci0rICAgIDB4ZDIsIDB4MzYsIDB4YTUsIDB4MjcsIDB4MzEsIDB4NzMsIDB4 ZGQsIDB4MTEsIDB4NGYsIDB4OTMsIDB4YmQsIDB4ZTIsCi0rICAgIDB4MzEsIDB4YTUsIDB4OTEs IDB4MTMKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBzaGExX3ByX25vbmNlW10gPSB7Ci0rICAgIDB4YjUsIDB4YjMsIDB4NjAsIDB4ZWYsIDB4Zjcs IDB4NjMsIDB4MzEsIDB4ZjMKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBzaGExX3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0gewotKyAgICAw eGQ0LCAweGJiLCAweDAyLCAweDEwLCAweGIyLCAweDcxLCAweGRiLCAweDgxLCAweGQ2LCAweGYw LCAweDQyLCAweDYwLAotKyAgICAweGRhLCAweGVhLCAweDc3LCAweDUyCi0rfTsKLSsKLStfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9wcl9hZGRpdGlvbmFs aW5wdXRbXSA9IHsKLSsgICAgMHg0ZCwgMHhkMiwgMHg2YywgMHg4NywgMHhmYiwgMHgyYywgMHg0 ZiwgMHhhNiwgMHg4ZCwgMHgxNiwgMHg2MywgMHgyMiwKLSsgICAgMHg2YSwgMHg1MSwgMHhlMywg MHhmOAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IHNoYTFfcHJfZW50cm9weWlucHV0cHJbXSA9IHsKLSsgICAgMHhjOSwgMHg4MywgMHg5ZSwgMHgx NiwgMHhmNiwgMHgxYywgMHgwZiwgMHhiMiwgMHhlYywgMHg2MCwgMHgzMSwgMHhhOSwKLSsgICAg MHhjYiwgMHhhOSwgMHgzNiwgMHg3YQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfcHJfaW50X3JldHVybmVkYml0c1tdID0gewotKyAgICAw eGE4LCAweDEzLCAweDRmLCAweGY0LCAweDMxLCAweDAyLCAweDQ0LCAweGUzLCAweGQzLCAweDNk LCAweDYxLCAweDllLAotKyAgICAweGU1LCAweGM2LCAweDNlLCAweDg5LCAweGI1LCAweDliLCAw eDBmLCAweDM1Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgc2hhMV9wcl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7Ci0rICAgIDB4ZjksIDB4ZTgsIDB4 ZDIsIDB4NzIsIDB4MTMsIDB4MzQsIDB4OTUsIDB4NmYsIDB4MTUsIDB4NDksIDB4NDcsIDB4OTks Ci0rICAgIDB4MTYsIDB4MDMsIDB4MTksIDB4NDcKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX3ByX2VudHJvcHlpbnB1dHByMltdID0gewot KyAgICAweDRlLCAweDhjLCAweDQ5LCAweDliLCAweDRhLCAweDVjLCAweDliLCAweDljLCAweDNh LCAweGVlLCAweGZiLCAweGQyLAotKyAgICAweGFlLCAweGNkLCAweDhjLCAweGM0Ci0rfTsKLSsK LStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9wcl9yZXR1 cm5lZGJpdHNbXSA9IHsKLSsgICAgMHg1MCwgMHhiNCwgMHhiNCwgMHhjZCwgMHg2OCwgMHg1Nywg MHhmYywgMHgyZSwgMHhjMSwgMHg1MiwgMHhjYywgMHhmNiwKLSsgICAgMHg2OCwgMHhhNCwgMHg4 MSwgMHhlZCwgMHg3ZSwgMHhlNCwgMHgxZCwgMHg4NwotK307Ci0rCi0rLyogU0hBLTEgTm8gUFIg ICovCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfZW50 cm9weWlucHV0W10gPSB7Ci0rICAgIDB4YTksIDB4NDcsIDB4MWIsIDB4MjksIDB4MmQsIDB4MWMs IDB4MDUsIDB4ZGYsIDB4NzYsIDB4ZDAsIDB4NjIsIDB4ZjksCi0rICAgIDB4ZTIsIDB4N2YsIDB4 NGMsIDB4N2IKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBzaGExX25vbmNlW10gPSB7Ci0rICAgIDB4NTMsIDB4MjMsIDB4MjQsIDB4ZTMsIDB4ZWMs IDB4MGMsIDB4NTQsIDB4MTQKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBzaGExX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0gewotKyAgICAweDdh LCAweDg3LCAweGExLCAweGFjLCAweDFjLCAweGZkLCAweGFiLCAweGFlLCAweGY3LCAweGQ2LCAw eGZiLCAweDc2LAotKyAgICAweDI4LCAweGVjLCAweDZkLCAweGNhCi0rfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9hZGRpdGlvbmFsaW5wdXRb XSA9IHsKLSsgICAgMHhmYywgMHg5MiwgMHgzNSwgMHhkNiwgMHg3ZSwgMHhiNywgMHgyNCwgMHg2 NSwgMHhmZCwgMHgxMiwgMHgyNywgMHgzNSwKLSsgICAgMHhjMCwgMHg3MiwgMHhjYSwgMHgyOAot K307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFf aW50X3JldHVybmVkYml0c1tdID0gewotKyAgICAweDU3LCAweDg4LCAweDgyLCAweGU1LCAweDI1 LCAweGE1LCAweDJjLCAweDRhLCAweDA2LCAweDIwLCAweDZjLCAweDcyLAotKyAgICAweDU1LCAw eDYxLCAweGRkLCAweDkwLCAweDcxLCAweDlmLCAweDk1LCAweGVhCi0rfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9lbnRyb3B5aW5wdXRyZXNl ZWRbXSA9IHsKLSsgICAgMHg2OSwgMHhhNSwgMHg0MCwgMHg2MiwgMHg5OCwgMHg0NywgMHg1Niwg MHg3MywgMHg0YSwgMHg4ZiwgMHg2MCwgMHg5NiwKLSsgICAgMHhkNiwgMHg5OSwgMHgyNywgMHhl ZAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNo YTFfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPSB7Ci0rICAgIDB4ZTUsIDB4NDAsIDB4NGUsIDB4 YmQsIDB4NTAsIDB4MDAsIDB4ZjUsIDB4MTUsIDB4YTYsIDB4ZWUsIDB4NDUsIDB4ZGEsCi0rICAg IDB4ODQsIDB4M2QsIDB4ZDQsIDB4YzAKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBzaGExX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKLSsgICAgMHgx MSwgMHg1MSwgMHgxNCwgMHhmMCwgMHgwOSwgMHgxYiwgMHg0ZSwgMHg1NiwgMHgwZCwgMHhlOSwg MHhmNiwgMHgxZSwKLSsgICAgMHg1MiwgMHg2NSwgMHhjZCwgMHg5NgotK307Ci0rCi0rX19maXBz X2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfcmV0dXJuZWRiaXRzW10g PSB7Ci0rICAgIDB4YTEsIDB4OWMsIDB4OTQsIDB4NmUsIDB4MjksIDB4ZTEsIDB4MzMsIDB4MGQs IDB4MzIsIDB4ZDYsIDB4YWEsIDB4Y2UsCi0rICAgIDB4NzEsIDB4M2YsIDB4NTIsIDB4NzIsIDB4 OGIsIDB4NDIsIDB4YTgsIDB4ZDcKLSt9OwotKwotKy8qIFNIQS0yMjQgUFIgICovCi0rX19maXBz X2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9wcl9lbnRyb3B5aW5w dXRbXSA9IHsKLSsgICAgMHgxMiwgMHg2OSwgMHgzMiwgMHg0ZiwgMHg4MywgMHhhNiwgMHhmNSwg MHgxNCwgMHhlMywgMHg0OSwgMHgzZSwgMHg3NSwKLSsgICAgMHgzZSwgMHhkZSwgMHhhZCwgMHhh MSwgMHgyOSwgMHhjMywgMHhmMywgMHgxOSwgMHgyMCwgMHhiNSwgMHg0YywgMHhkOQotK307Ci0r Ci0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9wcl9u b25jZVtdID0gewotKyAgICAweDZhLCAweDc4LCAweGQwLCAweGViLCAweGJiLCAweDVhLCAweGYw LCAweGVlLCAweGU4LCAweGMzLCAweGJhLCAweDcxCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X3ByX3BlcnNvbmFsaXphdGlvbnN0cmlu Z1tdID0gewotKyAgICAweGQ1LCAweGI4LCAweGI2LCAweGJjLCAweGMxLCAweDViLCAweDYwLCAw eDMxLCAweDNjLCAweGY1LCAweGU1LCAweGMwLAotKyAgICAweDhlLCAweDUyLCAweDdhLCAweGJk LCAweGVhLCAweDQ3LCAweGE5LCAweDVmLCAweDhmLCAweGY5LCAweDhiLCAweGFlCi0rfTsKLSsK LStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X3ByX2Fk ZGl0aW9uYWxpbnB1dFtdID0gewotKyAgICAweDFmLCAweDU1LCAweGVjLCAweGFlLCAweDE2LCAw eDEyLCAweDg0LCAweGJhLCAweDg0LCAweDE2LCAweDE5LCAweDg4LAotKyAgICAweDhlLCAweGI4 LCAweDMzLCAweDI1LCAweDU0LCAweGZmLCAweGNhLCAweDc5LCAweGFmLCAweDA3LCAweDI1LCAw eDUwCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg c2hhMjI0X3ByX2VudHJvcHlpbnB1dHByW10gPSB7Ci0rICAgIDB4OTIsIDB4YTMsIDB4MzIsIDB4 YTgsIDB4OWEsIDB4MGEsIDB4NTgsIDB4N2MsIDB4MWQsIDB4NWEsIDB4N2UsIDB4ZTEsCi0rICAg IDB4YjIsIDB4NzMsIDB4YWIsIDB4MGUsIDB4MTYsIDB4NzksIDB4MjMsIDB4ZDMsIDB4MjksIDB4 ODksIDB4ODEsIDB4ZTEKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBzaGEyMjRfcHJfaW50X3JldHVybmVkYml0c1tdID0gewotKyAgICAweGYzLCAw eDM4LCAweDkxLCAweDQwLCAweDM3LCAweDdhLCAweDUxLCAweDcyLCAweDQyLCAweDc0LCAweDc4 LCAweDBhLAotKyAgICAweDY5LCAweGZkLCAweGE2LCAweDQ0LCAweDQzLCAweDQ1LCAweDZjLCAw eDBjLCAweDVhLCAweDE5LCAweGZmLCAweGYxLAotKyAgICAweDU0LCAweDYwLCAweGVlLCAweDZh Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hh MjI0X3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKLSsgICAgMHg3NSwgMHhmMywgMHgwNCwgMHgy NSwgMHhkZCwgMHgzNiwgMHhhOCwgMHgzNywgMHg0NiwgMHhhZSwgMHgwYywgMHg1MiwKLSsgICAg MHgwNSwgMHg3OSwgMHg0YywgMHgyNiwgMHhkYiwgMHhlOSwgMHg3MSwgMHgxNiwgMHg0YywgMHgw YSwgMHhmMiwgMHg2MAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIHNoYTIyNF9wcl9lbnRyb3B5aW5wdXRwcjJbXSA9IHsKLSsgICAgMHhlYSwgMHhj NSwgMHgwMywgMHgwYSwgMHg0ZiwgMHhiMCwgMHgzOCwgMHg4ZCwgMHgyMywgMHhkNCwgMHhjOCwg MHg3NywKLSsgICAgMHhlMiwgMHg2ZCwgMHg5YywgMHgwYiwgMHg0NCwgMHhmNywgMHgyZCwgMHg1 YiwgMHhiZiwgMHg1ZCwgMHgyYSwgMHgxMQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAg MHg2MCwgMHg1MCwgMHgyYiwgMHhlNywgMHg4NiwgMHhkOCwgMHgyNiwgMHg3MywgMHhlMywgMHgx ZCwgMHg5NSwgMHgyMCwKLSsgICAgMHhiMywgMHgyYywgMHgzMiwgMHgxYywgMHhmNSwgMHhjZSwg MHg1NywgMHhhNiwgMHg2NywgMHgyYiwgMHhkYywgMHg0ZSwKLSsgICAgMHhkZCwgMHgxMSwgMHg0 YywgMHhjNAotK307Ci0rCi0rLyogU0hBLTIyNCBObyBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X2VudHJvcHlpbnB1dFtdID0gewotKyAg ICAweGIyLCAweDFjLCAweDc3LCAweDRkLCAweGY2LCAweGQzLCAweGI2LCAweDQwLCAweGI3LCAw eDMwLCAweDNlLCAweDI5LAotKyAgICAweGIwLCAweDg1LCAweDFjLCAweGJlLCAweDRhLCAweGVh LCAweDZiLCAweDVhLCAweGI1LCAweDhhLCAweDk3LCAweGViCi0rfTsKLSsKLStfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X25vbmNlW10gPSB7Ci0rICAg IDB4NDIsIDB4MDIsIDB4MGEsIDB4MWMsIDB4OTgsIDB4OWEsIDB4NzcsIDB4OWUsIDB4OWYsIDB4 ODAsIDB4YmEsIDB4ZTAKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBzaGEyMjRfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7Ci0rICAgIDB4OTgs IDB4YjgsIDB4MDQsIDB4NDEsIDB4ZmMsIDB4YzEsIDB4NWQsIDB4YzUsIDB4ZTksIDB4YjksIDB4 MDgsIDB4ZGEsCi0rICAgIDB4ZjksIDB4ZmEsIDB4MGQsIDB4OTAsIDB4Y2UsIDB4ZGYsIDB4MWQs IDB4MTAsIDB4YTksIDB4OGQsIDB4NTAsIDB4MGMKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyMjRfYWRkaXRpb25hbGlucHV0W10gPSB7Ci0r ICAgIDB4OWEsIDB4OGQsIDB4MzksIDB4NDksIDB4NDIsIDB4ZDUsIDB4MGIsIDB4YWUsIDB4ZTEs IDB4YWYsIDB4YjcsIDB4MDAsCi0rICAgIDB4MDIsIDB4ZmEsIDB4OTYsIDB4YjEsIDB4YTUsIDB4 MWQsIDB4MmQsIDB4MjUsIDB4NzgsIDB4ZWUsIDB4ODMsIDB4M2YKLSt9OwotKwotK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyMjRfaW50X3JldHVybmVkYml0 c1tdID0gewotKyAgICAweGU0LCAweGY1LCAweDUzLCAweDc5LCAweDVhLCAweDk3LCAweDU4LCAw eDA2LCAweDA4LCAweGJhLCAweDdiLCAweGZhLAotKyAgICAweGYwLCAweDgzLCAweDA1LCAweDhj LCAweDIyLCAweGMwLCAweGM5LCAweGRiLCAweDE1LCAweGU3LCAweGRlLCAweDIwLAotKyAgICAw eDU1LCAweDIyLCAweDlhLCAweGFkCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X2VudHJvcHlpbnB1dHJlc2VlZFtdID0gewotKyAgICAw eDY3LCAweDA5LCAweDQ4LCAweGFhLCAweDA3LCAweDE2LCAweDk5LCAweDg5LCAweDdmLCAweDZk LCAweGEwLCAweGU1LAotKyAgICAweDhmLCAweGRmLCAweGJjLCAweGRiLCAweGZlLCAweGU1LCAw eDZjLCAweDdhLCAweDk1LCAweDRhLCAweDY2LCAweDE3Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X2FkZGl0aW9uYWxpbnB1dHJlc2Vl ZFtdID0gewotKyAgICAweDBmLCAweDRiLCAweDFjLCAweDZmLCAweGI3LCAweGUzLCAweDQ3LCAw eGU1LCAweDVkLCAweDdkLCAweDM4LCAweGQ2LAotKyAgICAweDI4LCAweDliLCAweGViLCAweDU1 LCAweDYzLCAweDA5LCAweDNlLCAweDdjLCAweDU2LCAweGVhLCAweGY4LCAweDE5Ci0rfTsKLSsK LStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X2FkZGl0 aW9uYWxpbnB1dDJbXSA9IHsKLSsgICAgMHgyZCwgMHgyNiwgMHg3YywgMHgzNywgMHhlNCwgMHg3 YSwgMHgyOCwgMHg1ZSwgMHg1YSwgMHgzYywgMHhhZiwgMHgzZCwKLSsgICAgMHg1YSwgMHg4ZSwg MHg1NSwgMHhhMiwgMHgxYSwgMHg2ZSwgMHhjMCwgMHhlNSwgMHhmNiwgMHgyMSwgMHhkMywgMHhm NgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNo YTIyNF9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHg0ZCwgMHg4MywgMHgzNSwgMHhkZiwgMHg2 NywgMHhhOSwgMHhmYywgMHgxNywgMHhkYSwgMHg3MCwgMHhjYywgMHg4YiwKLSsgICAgMHg3Ziwg MHg3NywgMHhhZSwgMHhhMiwgMHg1ZiwgMHhiOSwgMHg3ZSwgMHg3NCwgMHg0YywgMHgyNiwgMHhj MSwgMHg3YSwKLSsgICAgMHgzYiwgMHhhNywgMHg1YywgMHg5MwotK307Ci0rCi0rLyogU0hBLTI1 NiBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hh MjU2X3ByX2VudHJvcHlpbnB1dFtdID0gewotKyAgICAweGNlLCAweDQ5LCAweDAwLCAweDdhLCAw eDU2LCAweGUzLCAweDY3LCAweDhmLCAweGUxLCAweGI2LCAweGE3LCAweGQ0LAotKyAgICAweDRm LCAweDA4LCAweDdhLCAweDFiLCAweDAxLCAweGY0LCAweGZhLCAweDZiLCAweGVmLCAweGI3LCAw eGU1LCAweGViLAotKyAgICAweDA3LCAweDNkLCAweDExLCAweDBkLCAweGM4LCAweGVhLCAweDJi LCAweGZlCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgc2hhMjU2X3ByX25vbmNlW10gPSB7Ci0rICAgIDB4NzMsIDB4NDEsIDB4YzgsIDB4OTIsIDB4 OTQsIDB4ZTIsIDB4YzUsIDB4NWYsIDB4OTMsIDB4ZmQsIDB4MzksIDB4NWQsCi0rICAgIDB4MmIs IDB4OTEsIDB4NGQsIDB4MzgKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBzaGEyNTZfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7Ci0rICAg IDB4NTAsIDB4NmQsIDB4MDEsIDB4MDEsIDB4MDcsIDB4NWEsIDB4ODAsIDB4MzUsIDB4N2EsIDB4 NTYsIDB4MWEsIDB4NTYsCi0rICAgIDB4MmYsIDB4OWEsIDB4MGIsIDB4MzUsIDB4YjIsIDB4YjEs IDB4YzksIDB4ZTUsIDB4Y2EsIDB4NjksIDB4NjEsIDB4NDgsCi0rICAgIDB4ZmYsIDB4ZmIsIDB4 MGYsIDB4ZDksIDB4NGIsIDB4NzksIDB4MWQsIDB4YmEKLSt9OwotKwotK19fZmlwc19jb25zdHNl ZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfcHJfYWRkaXRpb25hbGlucHV0W10g PSB7Ci0rICAgIDB4MjAsIDB4YjgsIDB4ZGYsIDB4NDQsIDB4NzcsIDB4NWEsIDB4YjgsIDB4ZDMs IDB4YmYsIDB4ZjYsIDB4Y2YsIDB4YWMsCi0rICAgIDB4NWUsIDB4YTYsIDB4OTYsIDB4NjIsIDB4 NzMsIDB4NDQsIDB4NDAsIDB4NGEsIDB4MzAsIDB4ZmIsIDB4MzgsIDB4YTUsCi0rICAgIDB4N2Is IDB4MGQsIDB4ZTQsIDB4MGQsIDB4YzYsIDB4ZTQsIDB4OWEsIDB4MWYKLSt9OwotKwotK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfcHJfZW50cm9weWlu cHV0cHJbXSA9IHsKLSsgICAgMHgwNCwgMHhjNCwgMHg2NSwgMHhmNCwgMHhkMywgMHhiZiwgMHg4 MywgMHg0YiwgMHhhYiwgMHhjOCwgMHg0MSwgMHhhOCwKLSsgICAgMHhjMiwgMHhlMCwgMHg0NCwg MHg2MywgMHg3NywgMHg0YywgMHg2ZiwgMHg2YywgMHg0OSwgMHg0NiwgMHhmZiwgMHg5NCwKLSsg ICAgMHgxNywgMHhlYSwgMHhlNiwgMHgxYSwgMHg5ZCwgMHg1ZSwgMHg2NiwgMHg3OAotK307Ci0r Ci0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9wcl9p bnRfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4MDcsIDB4NGQsIDB4YWMsIDB4OWIsIDB4ODYs IDB4Y2EsIDB4NGEsIDB4YWEsIDB4NmUsIDB4N2EsIDB4MDMsIDB4YTIsCi0rICAgIDB4NWQsIDB4 MTAsIDB4ZWEsIDB4MGIsIDB4ZjksIDB4ODMsIDB4Y2MsIDB4ZDEsIDB4ZmMsIDB4ZTIsIDB4MDcs IDB4YzcsCi0rICAgIDB4MDYsIDB4MzQsIDB4NjAsIDB4NmYsIDB4ODMsIDB4OTQsIDB4OTksIDB4 NzYKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBz aGEyNTZfcHJfYWRkaXRpb25hbGlucHV0MltdID0gewotKyAgICAweDg5LCAweDRlLCAweDQ1LCAw eDhjLCAweDExLCAweGY5LCAweGJjLCAweDViLCAweGFjLCAweDc0LCAweDhiLCAweDRiLAotKyAg ICAweDVmLCAweGY3LCAweDE5LCAweGYzLCAweGY1LCAweDI0LCAweDU0LCAweDE0LCAweGQxLCAw eDE1LCAweGIxLCAweDQzLAotKyAgICAweDEyLCAweGE0LCAweDVmLCAweGQ0LCAweGVjLCAweGZj LCAweGNkLCAweDA5Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgc2hhMjU2X3ByX2VudHJvcHlpbnB1dHByMltdID0gewotKyAgICAweDBlLCAweGVi LCAweDFmLCAweGQ3LCAweGZjLCAweGQxLCAweDlkLCAweGQ0LCAweDA1LCAweDM2LCAweDhiLCAw eGIyLAotKyAgICAweGZiLCAweGU0LCAweGY0LCAweDUxLCAweDBjLCAweDg3LCAweDliLCAweDAy LCAweDQ0LCAweGQ1LCAweDkyLCAweDRkLAotKyAgICAweDQ0LCAweGZlLCAweDFhLCAweDAzLCAw eDQzLCAweDU2LCAweGJkLCAweDg2Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X3ByX3JldHVybmVkYml0c1tdID0gewotKyAgICAweDAy LCAweGFhLCAweGI2LCAweDFkLCAweDdlLCAweDJhLCAweDQwLCAweDAzLCAweDY5LCAweDJkLCAw eDQ5LCAweGEzLAotKyAgICAweDQxLCAweGU3LCAweDQ0LCAweDBiLCAweGFmLCAweDdiLCAweDg1 LCAweGU0LCAweDVmLCAweDUzLCAweDNiLCAweDY0LAotKyAgICAweGJjLCAweDg5LCAweGM4LCAw eDgyLCAweGQ0LCAweDc4LCAweDM3LCAweGEyCi0rfTsKLSsKLSsvKiBTSEEtMjU2IE5vIFBSICAq LwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfZW50 cm9weWlucHV0W10gPSB7Ci0rICAgIDB4NWIsIDB4MWIsIDB4ZWMsIDB4NGQsIDB4YTksIDB4Mzgs IDB4NzQsIDB4NWEsIDB4MzQsIDB4MGIsIDB4N2IsIDB4YzUsCi0rICAgIDB4ZTUsIDB4ZDcsIDB4 NjYsIDB4N2MsIDB4YmMsIDB4ODIsIDB4YjksIDB4MGUsIDB4MmQsIDB4MWYsIDB4OTIsIDB4ZDcs Ci0rICAgIDB4YzEsIDB4YmMsIDB4NjcsIDB4NjksIDB4ZWMsIDB4NmIsIDB4MDMsIDB4M2MKLSt9 OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZf bm9uY2VbXSA9IHsKLSsgICAgMHhhNCwgMHgwYywgMHhkOCwgMHg5YywgMHg2MSwgMHhkOCwgMHhj MywgMHg1NCwgMHhmZSwgMHg1MywgMHhjOSwgMHhlNSwKLSsgICAgMHg1ZCwgMHg2ZiwgMHg2ZCwg MHgzNQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IHNoYTI1Nl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKLSsgICAgMHgyMiwgMHg1ZSwgMHg2 MiwgMHg5MywgMHg0MiwgMHg4MywgMHg3OCwgMHgyNCwgMHhkOCwgMHg0MCwgMHg4YywgMHhkZSwK LSsgICAgMHg2ZiwgMHhmOSwgMHhhNCwgMHg3YSwgMHhjNSwgMHhhNywgMHgzYiwgMHg4OCwgMHhh MywgMHhlZSwgMHg0MiwgMHgyMCwKLSsgICAgMHhmZCwgMHg2MSwgMHg1NiwgMHhjNiwgMHg0Yywg MHgxMywgMHg0MSwgMHg5YwotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIHNoYTI1Nl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKLSsgICAgMHhiZiwgMHg3 NCwgMHg1YiwgMHhmNiwgMHhjNSwgMHg2NCwgMHg1ZSwgMHg5OSwgMHgzNCwgMHg4ZiwgMHhiYywg MHhhNCwKLSsgICAgMHhlMiwgMHhiZCwgMHhkOCwgMHg4NSwgMHgyNiwgMHgzNywgMHhlYSwgMHhi YSwgMHg0ZiwgMHhmMiwgMHg5YSwgMHg5YSwKLSsgICAgMHg2NiwgMHhmYywgMHhkZiwgMHg2Mywg MHgyNiwgMHgyNiwgMHgxOSwgMHg4NwotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4 YjMsIDB4YzYsIDB4MDcsIDB4MDcsIDB4ZDYsIDB4NzUsIDB4ZjYsIDB4MmIsIDB4ZDYsIDB4MjEs IDB4OTYsIDB4ZjEsCi0rICAgIDB4YWUsIDB4ZGIsIDB4MmIsIDB4YWMsIDB4MjUsIDB4MmEsIDB4 YWUsIDB4YWUsIDB4NDEsIDB4NzIsIDB4MDMsIDB4NWUsCi0rICAgIDB4YmYsIDB4ZDMsIDB4NjQs IDB4YmMsIDB4NTksIDB4ZjksIDB4YzAsIDB4NzYKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfZW50cm9weWlucHV0cmVzZWVkW10gPSB7 Ci0rICAgIDB4YmYsIDB4MjAsIDB4MzMsIDB4NTYsIDB4MjksIDB4YTgsIDB4MzcsIDB4MDQsIDB4 MWYsIDB4NzgsIDB4MzQsIDB4M2QsCi0rICAgIDB4ODEsIDB4MmEsIDB4YzksIDB4ODYsIDB4YzYs IDB4N2EsIDB4MmYsIDB4ODgsIDB4NWUsIDB4ZDUsIDB4YmUsIDB4MzQsCi0rICAgIDB4NDYsIDB4 MjAsIDB4YTQsIDB4MzUsIDB4ZWIsIDB4YzcsIDB4ZTIsIDB4OWQKLSt9OwotKwotK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfYWRkaXRpb25hbGlucHV0 cmVzZWVkW10gPSB7Ci0rICAgIDB4OWIsIDB4YWUsIDB4MmQsIDB4MmQsIDB4NjEsIDB4YTQsIDB4 ODksIDB4ZWIsIDB4NDMsIDB4NDYsIDB4YTcsIDB4ZGEsCi0rICAgIDB4ZWYsIDB4NDAsIDB4Y2Es IDB4NGEsIDB4OTksIDB4MTEsIDB4NDEsIDB4ZGMsIDB4NWMsIDB4OTQsIDB4ZTksIDB4YWMsCi0r ICAgIDB4ZDQsIDB4ZDAsIDB4ZTYsIDB4YmQsIDB4ZmIsIDB4MDMsIDB4OWMsIDB4YTgKLSt9Owot KwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfYWRk aXRpb25hbGlucHV0MltdID0gewotKyAgICAweDIzLCAweGFhLCAweDBjLCAweGJkLCAweDI4LCAw eDMzLCAweGUyLCAweDUxLCAweGZjLCAweDcxLCAweGQyLCAweDE1LAotKyAgICAweDFmLCAweDc2 LCAweGZkLCAweDBkLCAweGUwLCAweGI3LCAweGI1LCAweDg0LCAweDc1LCAweDViLCAweGJlLCAw eGYzLAotKyAgICAweDVjLCAweGNhLCAweGM1LCAweDMwLCAweGYyLCAweDc1LCAweDFmLCAweGRh Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hh MjU2X3JldHVybmVkYml0c1tdID0gewotKyAgICAweDkwLCAweDNjLCAweGMxLCAweDEwLCAweDhj LCAweDEyLCAweDAxLCAweGM2LCAweGE2LCAweDNhLCAweDBmLCAweDRkLAotKyAgICAweGI2LCAw eDNhLCAweDRmLCAweDQxLCAweDljLCAweDYxLCAweDc1LCAweDg0LCAweGU5LCAweDc0LCAweDc1 LCAweGZkLAotKyAgICAweGZlLCAweGYyLCAweDFmLCAweDQzLCAweGQ4LCAweDVlLCAweDI0LCAw eGEzCi0rfTsKLSsKLSsvKiBTSEEtMzg0IFBSICAqLwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcHJfZW50cm9weWlucHV0W10gPSB7Ci0rICAgIDB4 NzEsIDB4OWQsIDB4YjIsIDB4NWEsIDB4NzEsIDB4NmQsIDB4MDQsIDB4ZTksIDB4MWUsIDB4Yzcs IDB4OTIsIDB4MjQsCi0rICAgIDB4NmUsIDB4MTIsIDB4MzMsIDB4YTksIDB4NTIsIDB4NjQsIDB4 MzEsIDB4ZWYsIDB4NzEsIDB4ZWIsIDB4MjIsIDB4NTUsCi0rICAgIDB4MjgsIDB4OTcsIDB4MDYs IDB4NmEsIDB4YzAsIDB4MGMsIDB4YTAsIDB4N2UKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcHJfbm9uY2VbXSA9IHsKLSsgICAgMHhm NSwgMHgwZCwgMHhmYSwgMHhiMCwgMHhlYywgMHg2YSwgMHg3YywgMHhkNiwgMHhiZCwgMHg5Yiwg MHgwNSwgMHhmZCwKLSsgICAgMHgzOCwgMHgzZSwgMHgyZSwgMHg1NgotK307Ci0rCi0rX19maXBz X2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9wcl9wZXJzb25hbGl6 YXRpb25zdHJpbmdbXSA9IHsKLSsgICAgMHg3NCwgMHhhYywgMHg3ZSwgMHg2ZCwgMHhiMSwgMHhh NCwgMHhlNywgMHgyMSwgMHhkMSwgMHgxZSwgMHg2ZSwgMHg5NiwKLSsgICAgMHg2ZCwgMHg0ZCwg MHg1MywgMHg0NiwgMHg4MiwgMHg5NiwgMHg2ZSwgMHhjZiwgMHhhYSwgMHg4MSwgMHg4ZCwgMHg3 ZCwKLSsgICAgMHg5ZSwgMHhlMSwgMHgwZiwgMHgxNSwgMHhlYSwgMHg0MSwgMHhiZiwgMHhlMwot K307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4 NF9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKLSsgICAgMHhkYSwgMHg5NSwgMHhkNCwgMHhkMCwg MHhiOCwgMHgxMSwgMHhkMywgMHg0OSwgMHgyNywgMHg1ZCwgMHhhOSwgMHgzOSwKLSsgICAgMHg2 OCwgMHhmMywgMHhhOCwgMHhlOSwgMHg1ZCwgMHgxOSwgMHg4YSwgMHgyYiwgMHg2NiwgMHhlOCwg MHg2OSwgMHgwNiwKLSsgICAgMHg3YywgMHg5ZSwgMHgwMywgMHhhMSwgMHg4YiwgMHgyNiwgMHgy ZCwgMHg2ZQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIHNoYTM4NF9wcl9lbnRyb3B5aW5wdXRwcltdID0gewotKyAgICAweDQ5LCAweGRmLCAweDQ0 LCAweDAwLCAweGU0LCAweDFjLCAweDc1LCAweDBiLCAweDI2LCAweDVhLCAweDU5LCAweDY0LAot KyAgICAweDFmLCAweDRlLCAweGIxLCAweGIyLCAweDEzLCAweGYxLCAweDIyLCAweDRlLCAweGI0 LCAweDZkLCAweDlhLCAweGNjLAotKyAgICAweGEwLCAweDQ4LCAweGU2LCAweGNmLCAweDFkLCAw eGQxLCAweDkyLCAweDBkCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgc2hhMzg0X3ByX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHhjOCwg MHg1MiwgMHhhZSwgMHhiZiwgMHgwNCwgMHgzYywgMHgyNywgMHhiNywgMHg3OCwgMHgxOCwgMHhh YSwgMHg4ZiwKLSsgICAgMHhmZiwgMHhjZiwgMHhhNCwgMHhmMSwgMHhjYywgMHhlNywgMHg2OCwg MHhmYSwgMHgyMiwgMHhhMiwgMHgxMywgMHg0NSwKLSsgICAgMHhlOCwgMHhkZCwgMHg4NywgMHhl NiwgMHhmMiwgMHg2ZSwgMHhkZCwgMHhjNywgMHg1MiwgMHg5MCwgMHg5ZiwgMHg3YiwKLSsgICAg MHhmYSwgMHg2MSwgMHgyZCwgMHg5ZCwgMHg5ZSwgMHhjZiwgMHg5OCwgMHhhYywgMHg1MiwgMHg0 MCwgMHhjZSwgMHhhZgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIHNoYTM4NF9wcl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7Ci0rICAgIDB4NjEsIDB4 N2MsIDB4MDMsIDB4OWEsIDB4M2UsIDB4NTAsIDB4NTcsIDB4NjAsIDB4YzUsIDB4ODMsIDB4Yzks IDB4YjIsCi0rICAgIDB4ZDEsIDB4ODcsIDB4ODUsIDB4NjYsIDB4OTIsIDB4NWQsIDB4ODQsIDB4 MGUsIDB4NTMsIDB4ZmIsIDB4NzAsIDB4MDMsCi0rICAgIDB4NzIsIDB4ZmQsIDB4YmEsIDB4YWUs IDB4OWMsIDB4OGYsIDB4ZjgsIDB4MTgKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcHJfZW50cm9weWlucHV0cHIyW10gPSB7Ci0rICAg IDB4ZjgsIDB4ZWIsIDB4ODksIDB4YjEsIDB4OGQsIDB4NzgsIDB4YmUsIDB4MjEsIDB4ZTAsIDB4 YmIsIDB4OWQsIDB4YjcsCi0rICAgIDB4OTUsIDB4MGUsIDB4ZDksIDB4NDYsIDB4MGMsIDB4OGMs IDB4ZTIsIDB4NjMsIDB4YjcsIDB4OWQsIDB4NjcsIDB4OTAsCi0rICAgIDB4YmQsIDB4YzcsIDB4 MGIsIDB4YTUsIDB4Y2UsIDB4YjIsIDB4NjUsIDB4ODEKLSt9OwotKwotK19fZmlwc19jb25zdHNl ZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcHJfcmV0dXJuZWRiaXRzW10gPSB7 Ci0rICAgIDB4ZTYsIDB4OWYsIDB4ZmUsIDB4NjgsIDB4ZDYsIDB4YjUsIDB4NzksIDB4ZjEsIDB4 MDYsIDB4NWYsIDB4YTMsIDB4YmIsCi0rICAgIDB4MjMsIDB4ODUsIDB4ZDgsIDB4ZjAsIDB4Mjks IDB4NWEsIDB4NjgsIDB4OWUsIDB4ZjUsIDB4ZjQsIDB4YTYsIDB4MTIsCi0rICAgIDB4ZTAsIDB4 OWEsIDB4ZTIsIDB4YWMsIDB4MDAsIDB4MWQsIDB4OTgsIDB4MjYsIDB4ZmMsIDB4NTMsIDB4OTUs IDB4NTMsCi0rICAgIDB4ZTQsIDB4M2UsIDB4MTcsIDB4ZDUsIDB4MDgsIDB4MGIsIDB4NzAsIDB4 M2QsIDB4NjcsIDB4OTksIDB4YWMsIDB4NjYKLSt9OwotKwotKy8qIFNIQS0zODQgTm8gUFIgICov Ci0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9lbnRy b3B5aW5wdXRbXSA9IHsKLSsgICAgMHgwNywgMHgxNSwgMHgyNywgMHgyYSwgMHhhZiwgMHg3NCwg MHgyNCwgMHgzNywgMHhiYywgMHhkNSwgMHgxNCwgMHg2OSwKLSsgICAgMHhjZSwgMHgxMSwgMHhm ZiwgMHhhMiwgMHg2YiwgMHhiOCwgMHgwNSwgMHg2NywgMHgzNCwgMHhmOCwgMHhiZCwgMHg2ZCwK LSsgICAgMHg2YSwgMHhjYywgMHhjZCwgMHg2MCwgMHhhMywgMHg2OCwgMHhjYSwgMHhmNAotK307 Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9u b25jZVtdID0gewotKyAgICAweDcwLCAweDE3LCAweGMyLCAweDViLCAweDVkLCAweDIyLCAweDBi LCAweDA2LCAweDE1LCAweDU0LCAweDc4LCAweDc3LAotKyAgICAweDQ0LCAweGFmLCAweDJmLCAw eDA5Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg c2hhMzg0X3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0gewotKyAgICAweDg5LCAweDM5LCAweDI4 LCAweGIwLCAweDYwLCAweGViLCAweDNkLCAweGRjLCAweDU1LCAweDc1LCAweDg2LCAweGViLAot KyAgICAweGFlLCAweGEyLCAweDhmLCAweGJjLCAweDFiLCAweDc1LCAweGQ0LCAweGUxLCAweDBm LCAweGFhLCAweDM4LCAweGNhLAotKyAgICAweDYyLCAweDhiLCAweGNiLCAweDJjLCAweDI2LCAw eGY2LCAweGJjLCAweGIxCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgc2hhMzg0X2FkZGl0aW9uYWxpbnB1dFtdID0gewotKyAgICAweDMwLCAweDJi LCAweDQyLCAweDM1LCAweGVmLCAweGRhLCAweDQwLCAweDU1LCAweDI4LCAweGM2LCAweDk1LCAw eGZiLAotKyAgICAweDU0LCAweDAxLCAweDYyLCAweGQ3LCAweDg3LCAweDE0LCAweDQ4LCAweDZk LCAweDkwLCAweDRjLCAweGE5LCAweDAyLAotKyAgICAweDU0LCAweDQwLCAweDIyLCAweGM4LCAw eDY2LCAweGE1LCAweDQ4LCAweDQ4Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHg4 MiwgMHhjNCwgMHhhMSwgMHg5YywgMHgyMSwgMHhkMiwgMHhlNywgMHhhNSwgMHhhNiwgMHhmNiwg MHg1ZiwgMHgwNCwKLSsgICAgMHg1YywgMHhjNywgMHgzMSwgMHg5ZCwgMHg4ZCwgMHg1OSwgMHg3 NCwgMHg1MCwgMHgxOSwgMHg4OSwgMHgyZiwgMHg2MywKLSsgICAgMHhkNSwgMHhiNywgMHg3ZSwg MHhlYiwgMHgxNSwgMHhlMywgMHg3MCwgMHg4MywgMHhhMSwgMHgyNCwgMHg1OSwgMHhmYSwKLSsg ICAgMHgyYywgMHg1NiwgMHhmNiwgMHg4OCwgMHgzYSwgMHg5MiwgMHg5MywgMHhhMSwgMHhmYiwg MHg3OSwgMHhjMSwgMHg3YQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIHNoYTM4NF9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsKLSsgICAgMHgzOSwg MHhhNiwgMHhlOCwgMHg1YywgMHg4MiwgMHgxNywgMHg3MSwgMHgyNiwgMHg1NywgMHg0ZiwgMHg5 ZiwgMHhjMiwKLSsgICAgMHg1NSwgMHhmZiwgMHg1YywgMHg5YiwgMHg1MywgMHgxYSwgMHhkMSwg MHg1ZiwgMHhiYywgMHg2MiwgMHhlNCwgMHgyNywKLSsgICAgMHgyZCwgMHgzMiwgMHhmMCwgMHhl NCwgMHg1MiwgMHg4YywgMHhjNSwgMHgwYwotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9IHsK LSsgICAgMHg4ZCwgMHhjYiwgMHg4ZCwgMHhjZSwgMHgwOCwgMHhlYSwgMHg4MCwgMHhlOCwgMHg5 YiwgMHg2MSwgMHhhOCwgMHgwZiwKLSsgICAgMHhhZiwgMHg0OSwgMHgyMCwgMHg5ZSwgMHg3NCwg MHhjYiwgMHg1NywgMHg4MCwgMHg0MiwgMHhiMCwgMHg4NCwgMHg1ZSwKLSsgICAgMHgzMCwgMHgy YSwgMHg2NywgMHgwOCwgMHhmNCwgMHhlMywgMHg0MCwgMHgyMgotK307Ci0rCi0rX19maXBzX2Nv bnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9hZGRpdGlvbmFsaW5wdXQy W10gPSB7Ci0rICAgIDB4N2MsIDB4OGYsIDB4YzIsIDB4YWUsIDB4MjIsIDB4NGEsIDB4ZDYsIDB4 ZjYsIDB4MDUsIDB4YTQsIDB4N2EsIDB4ZWEsCi0rICAgIDB4YmIsIDB4MjUsIDB4ZDAsIDB4Yjcs IDB4NWEsIDB4ZDYsIDB4Y2YsIDB4OWQsIDB4ZjMsIDB4NmMsIDB4ZTIsIDB4YjIsCi0rICAgIDB4 NGUsIDB4YjQsIDB4YmQsIDB4ZjQsIDB4ZTUsIDB4NDAsIDB4ODAsIDB4OTQKLSt9OwotKwotK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcmV0dXJuZWRi aXRzW10gPSB7Ci0rICAgIDB4OWUsIDB4N2UsIDB4ZmIsIDB4NTksIDB4YmIsIDB4YWEsIDB4M2Ms IDB4ZjcsIDB4ZTEsIDB4ZjgsIDB4NzYsIDB4ZGQsCi0rICAgIDB4NjMsIDB4NWYsIDB4YWYsIDB4 MjMsIDB4ZDYsIDB4NjQsIDB4NjEsIDB4YzAsIDB4OWEsIDB4MDksIDB4NDcsIDB4YzksCi0rICAg IDB4MzMsIDB4ZGYsIDB4NmQsIDB4NTUsIDB4OTEsIDB4MzQsIDB4NzksIDB4NzAsIDB4YzQsIDB4 OTksIDB4NmUsIDB4NTQsCi0rICAgIDB4MDksIDB4NjQsIDB4MjEsIDB4MWEsIDB4YmQsIDB4MWUs IDB4ODAsIDB4NDAsIDB4MzQsIDB4YWQsIDB4ZmEsIDB4ZDcKLSt9OwotKwotKy8qIFNIQS01MTIg UFIgICovCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTUx Ml9wcl9lbnRyb3B5aW5wdXRbXSA9IHsKLSsgICAgMHgxMywgMHhmNywgMHg2MSwgMHg3NSwgMHg2 NSwgMHgyOCwgMHhhMiwgMHg1OSwgMHgxMywgMHg1YSwgMHg0YSwgMHg0ZiwKLSsgICAgMHg1Niwg MHg2MCwgMHg4YywgMHg1MywgMHg3ZCwgMHhiMCwgMHhiZCwgMHgwNiwgMHg0ZiwgMHhlZCwgMHhj YywgMHhkMiwKLSsgICAgMHhhMiwgMHhiNSwgMHhmZCwgMHg1YiwgMHgzYSwgMHhhYiwgMHhlYywg MHgyOAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IHNoYTUxMl9wcl9ub25jZVtdID0gewotKyAgICAweGJlLCAweGEzLCAweDkxLCAweDkzLCAweDFk LCAweGMzLCAweDMxLCAweDNhLCAweDIzLCAweDMzLCAweDUwLCAweDY3LAotKyAgICAweDg4LCAw eGM3LCAweGEyLCAweGM0Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgc2hhNTEyX3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0gewotKyAgICAw eDFmLCAweDU5LCAweDRkLCAweDdiLCAweGU2LCAweDQ2LCAweDkxLCAweDQ4LCAweGMxLCAweDI1 LCAweGZhLCAweGZmLAotKyAgICAweDg5LCAweDEyLCAweDc3LCAweDM1LCAweGRmLCAweDNlLCAw eGY0LCAweDgwLCAweDVmLCAweGQ5LCAweGIwLCAweDA3LAotKyAgICAweDIyLCAweDQxLCAweGRk LCAweDQ4LCAweDc4LCAweDZiLCAweDc3LCAweDJiCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX3ByX2FkZGl0aW9uYWxpbnB1dFtdID0g ewotKyAgICAweDMwLCAweGZmLCAweDYzLCAweDZmLCAweGFjLCAweGQ5LCAweDg0LCAweDM5LCAw eDZmLCAweGU0LCAweDk5LCAweGNlLAotKyAgICAweDkxLCAweDdkLCAweDdlLCAweGM4LCAweDU4 LCAweGYyLCAweDEyLCAweGMzLCAweGI2LCAweGFkLCAweGRhLCAweDIyLAotKyAgICAweDA0LCAw eGEwLCAweGQyLCAweDIxLCAweGZlLCAweGYyLCAweDk1LCAweDFkCi0rfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX3ByX2VudHJvcHlpbnB1 dHByW10gPSB7Ci0rICAgIDB4NjQsIDB4NTQsIDB4MTMsIDB4ZWMsIDB4NGYsIDB4NzcsIDB4ZGEs IDB4YjIsIDB4OTIsIDB4MmUsIDB4NTIsIDB4ODAsCi0rICAgIDB4MTEsIDB4MTAsIDB4YzIsIDB4 ZjgsIDB4ZTYsIDB4YTcsIDB4Y2QsIDB4NGIsIDB4ZmMsIDB4MzIsIDB4MmUsIDB4OWUsCi0rICAg IDB4ZWIsIDB4YmIsIDB4YjEsIDB4YmYsIDB4MTUsIDB4NWMsIDB4NzMsIDB4MDgKLSt9OwotKwot K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJfcHJfaW50 X3JldHVybmVkYml0c1tdID0gewotKyAgICAweGVmLCAweDFlLCAweGRjLCAweDBhLCAweGE0LCAw eDM2LCAweDkxLCAweDljLCAweDNkLCAweDI3LCAweDk3LCAweDUwLAotKyAgICAweDhkLCAweDM2 LCAweDI5LCAweDhkLCAweGNlLCAweDZhLCAweDBjLCAweGY3LCAweDIxLCAweGMwLCAweDkxLCAw eGFlLAotKyAgICAweDBjLCAweDk2LCAweDcyLCAweGJkLCAweDUyLCAweDgxLCAweDU4LCAweGZj LCAweDZkLCAweGU1LCAweGY3LCAweGE1LAotKyAgICAweGZkLCAweDVkLCAweGE3LCAweDU4LCAw eDY4LCAweGM4LCAweDk5LCAweDU4LCAweDhlLCAweGM4LCAweGNlLCAweDk1LAotKyAgICAweDAx LCAweDdkLCAweGZmLCAweGE0LCAweGM4LCAweGY3LCAweDYzLCAweGZlLCAweDVmLCAweDY5LCAw eDgzLCAweDUzLAotKyAgICAweGUyLCAweGM2LCAweDhiLCAweGMzCi0rfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX3ByX2FkZGl0aW9uYWxp bnB1dDJbXSA9IHsKLSsgICAgMHhlNiwgMHg5YiwgMHhjNCwgMHg4OCwgMHgzNCwgMHhjYSwgMHhl YSwgMHgyOSwgMHgyZiwgMHg5OCwgMHgwNSwgMHhhNCwKLSsgICAgMHhkMywgMHhjMCwgMHg3Yiwg MHgxMSwgMHhlOCwgMHhiYiwgMHg3NSwgMHhmMiwgMHhiZCwgMHgyOSwgMHhiNywgMHg0MCwKLSsg ICAgMHgyNSwgMHg3ZiwgMHhjMSwgMHhiNywgMHhiMSwgMHhmMSwgMHgyNSwgMHg2MQotK307Ci0r Ci0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9wcl9l bnRyb3B5aW5wdXRwcjJbXSA9IHsKLSsgICAgMHgyMywgMHg2ZCwgMHhmZiwgMHhkZSwgMHhmYiwg MHhkMSwgMHhiYSwgMHgzMywgMHgxOCwgMHhlNiwgMHhiZSwgMHhiNSwKLSsgICAgMHg0OCwgMHg3 NywgMHg2ZCwgMHg3ZiwgMHhhNywgMHhlMSwgMHg0ZCwgMHg0OCwgMHgxZSwgMHgzYywgMHhhNywg MHgzNCwKLSsgICAgMHgxYSwgMHhjOCwgMHg2MCwgMHhkYiwgMHg4ZiwgMHg5OSwgMHgxNSwgMHg5 OQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNo YTUxMl9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHg3MCwgMHgyNywgMHgzMSwgMHhkYiwg MHg5MiwgMHg3MCwgMHgyMSwgMHhmZSwgMHgxNiwgMHhiNiwgMHhjOCwgMHg1MSwKLSsgICAgMHgz NCwgMHg4NywgMHg2NSwgMHhkMCwgMHg0ZSwgMHhmZCwgMHhmZSwgMHg2OCwgMHhlYywgMHhhYywg MHhkYywgMHg5MywKLSsgICAgMHg0MSwgMHgzOCwgMHg5MiwgMHg5MCwgMHhiNCwgMHg5NCwgMHhm OSwgMHgwZCwgMHhhNCwgMHhmNywgMHg0ZSwgMHg4MCwKLSsgICAgMHg5MiwgMHg2NywgMHg0OCwg MHg0MCwgMHhhNywgMHgwOCwgMHhjNywgMHhiYywgMHg2NiwgMHgwMCwgMHhmZCwgMHhmNywKLSsg ICAgMHg0YywgMHg4YiwgMHgxNywgMHg2ZSwgMHhkMSwgMHg4ZiwgMHg5YiwgMHhmMywgMHg2Ziwg MHhmNiwgMHgzNCwgMHhkZCwKLSsgICAgMHg2NywgMHhmNywgMHg2OCwgMHhkZAotK307Ci0rCi0r LyogU0hBLTUxMiBObyBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgc2hhNTEyX2VudHJvcHlpbnB1dFtdID0gewotKyAgICAweGI2LCAweDBiLCAweGI3 LCAweGJjLCAweDg0LCAweDU2LCAweGY2LCAweDEyLCAweGFmLCAweDQ1LCAweDY3LCAweDE3LAot KyAgICAweDdjLCAweGQxLCAweGIyLCAweDc4LCAweDJiLCAweGEwLCAweGYyLCAweGJlLCAweGI2 LCAweDZkLCAweDhiLCAweDU2LAotKyAgICAweGM2LCAweGJjLCAweDRkLCAweGUxLCAweGY3LCAw eGJlLCAweGNlLCAweGJkCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgc2hhNTEyX25vbmNlW10gPSB7Ci0rICAgIDB4OWQsIDB4ZWQsIDB4YzAsIDB4 ZTUsIDB4NWEsIDB4OTgsIDB4NmEsIDB4Y2IsIDB4NTEsIDB4N2QsIDB4NzYsIDB4MzEsCi0rICAg IDB4NWEsIDB4NjQsIDB4ZjAsIDB4ZjcKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7Ci0r ICAgIDB4YzIsIDB4NmQsIDB4YTMsIDB4YzMsIDB4MDYsIDB4NzQsIDB4ZTUsIDB4MDEsIDB4NWMs IDB4MTAsIDB4MTcsIDB4YzcsCi0rICAgIDB4YWYsIDB4ODMsIDB4OWQsIDB4NTksIDB4OGQsIDB4 MmQsIDB4MjksIDB4MzgsIDB4YzUsIDB4NTksIDB4NzAsIDB4OGIsCi0rICAgIDB4NDYsIDB4NDgs IDB4MmQsIDB4Y2YsIDB4MzYsIDB4N2QsIDB4NTksIDB4YzAKLSt9OwotKwotK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJfYWRkaXRpb25hbGlucHV0W10g PSB7Ci0rICAgIDB4ZWMsIDB4OGMsIDB4ZDQsIDB4ZjcsIDB4NjEsIDB4NmUsIDB4MGQsIDB4OTUs IDB4NzksIDB4YjcsIDB4MjgsIDB4YWQsCi0rICAgIDB4NWYsIDB4NjksIDB4NzQsIDB4NWYsIDB4 MmQsIDB4MzYsIDB4MDYsIDB4OGEsIDB4NmIsIDB4YWMsIDB4NTQsIDB4OTcsCi0rICAgIDB4YzQs IDB4YTEsIDB4MTIsIDB4ODUsIDB4MGEsIDB4ZGYsIDB4NGIsIDB4MzQKLSt9OwotKwotK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJfaW50X3JldHVybmVk Yml0c1tdID0gewotKyAgICAweDg0LCAweDJmLCAweDFmLCAweDY4LCAweDZhLCAweGEzLCAweGFk LCAweDFlLCAweGZiLCAweGY0LCAweDE1LCAweGJkLAotKyAgICAweGRlLCAweDM4LCAweGQ0LCAw eDMwLCAweDgwLCAweDUxLCAweGU5LCAweGQzLCAweGM3LCAweDIwLCAweDg4LCAweGU5LAotKyAg ICAweGY1LCAweGNjLCAweGRmLCAweDU3LCAweDVjLCAweDQ3LCAweDJmLCAweDU3LCAweDNjLCAw eDVmLCAweDEzLCAweDU2LAotKyAgICAweGNjLCAweGM1LCAweDRmLCAweDg0LCAweGY4LCAweDEw LCAweDQxLCAweGQ1LCAweDdlLCAweDU4LCAweDZlLCAweDE5LAotKyAgICAweDE5LCAweDllLCAw eGFmLCAweGMyLCAweDIyLCAweDU4LCAweDQxLCAweDUwLCAweDc5LCAweGMyLCAweGQ4LCAweDA0 LAotKyAgICAweDI4LCAweGQ0LCAweDM5LCAweDlhCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX2VudHJvcHlpbnB1dHJlc2VlZFtdID0g ewotKyAgICAweGZhLCAweDdmLCAweDQ2LCAweDUxLCAweDgzLCAweDYyLCAweDk4LCAweDE2LCAw eDlhLCAweDE5LCAweGEyLCAweDQ5LAotKyAgICAweGE5LCAweGU2LCAweDRhLCAweGQ4LCAweDg1 LCAweGU3LCAweGQ0LCAweDNiLCAweDJjLCAweDgyLCAweGM1LCAweDgyLAotKyAgICAweGJmLCAw eDExLCAweGY5LCAweDllLCAweGJjLCAweGQwLCAweDAxLCAweGVlCi0rfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX2FkZGl0aW9uYWxpbnB1 dHJlc2VlZFtdID0gewotKyAgICAweGI5LCAweDEyLCAweGUwLCAweDRmLCAweGY3LCAweGE3LCAw eGM0LCAweGQ4LCAweGQwLCAweDhlLCAweDk5LCAweDI5LAotKyAgICAweDdjLCAweDlhLCAweGU5 LCAweGNmLCAweGM0LCAweDZjLCAweGY4LCAweGMzLCAweGE3LCAweDQxLCAweDgzLCAweGQ2LAot KyAgICAweDJlLCAweGZhLCAweGI4LCAweDVlLCAweDhlLCAweDZiLCAweDc4LCAweDIwCi0rfTsK LSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX2Fk ZGl0aW9uYWxpbnB1dDJbXSA9IHsKLSsgICAgMHhkNywgMHgwNywgMHg1MiwgMHhiOSwgMHg4Mywg MHgyYywgMHgwMywgMHg3MSwgMHhlZSwgMHhjOSwgMHhjMCwgMHg4NSwKLSsgICAgMHhlMSwgMHg1 NywgMHhiMiwgMHhjZCwgMHgzYSwgMHhmMCwgMHhjOSwgMHgzNCwgMHgyNCwgMHg0MSwgMHgxYywg MHg0MiwKLSsgICAgMHg5OSwgMHhiMiwgMHg4NCwgMHhlOSwgMHgxNywgMHhkMiwgMHg3NiwgMHg5 MgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNo YTUxMl9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHgzNiwgMHgxNywgMHg1ZCwgMHg5OCwgMHgy YiwgMHg2NSwgMHgyNSwgMHg4ZSwgMHhjOCwgMHgyOSwgMHhkZiwgMHgyNywKLSsgICAgMHgwNSwg MHgzNiwgMHgyNiwgMHgxMiwgMHg4YSwgMHg2OCwgMHg3NCwgMHgyNywgMHgzNywgMHhkNCwgMHg3 ZiwgMHgzMiwKLSsgICAgMHhiMSwgMHgxMiwgMHhkNiwgMHg4NSwgMHg4MywgMHhlYiwgMHgyZSwg MHhhMCwgMHhlZCwgMHg0YiwgMHhiNSwgMHg3YiwKLSsgICAgMHg2ZiwgMHgzOSwgMHgzYywgMHg3 MSwgMHg3NywgMHgwMiwgMHgxMiwgMHhjYywgMHgyYywgMHgzYSwgMHg4ZSwgMHg2MywKLSsgICAg MHhkZiwgMHg0YSwgMHhiZCwgMHg2ZiwgMHg2ZSwgMHgyZSwgMHhlZCwgMHgwYSwgMHg4NSwgMHhh NSwgMHgyZiwgMHhhMiwKLSsgICAgMHg2OCwgMHhkZSwgMHg0MiwgMHhiNQotK307Ci0rCi0rLyog SE1BQyBTSEEtMSBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgaG1hY19zaGExX3ByX2VudHJvcHlpbnB1dFtdID0gewotKyAgICAweDI2LCAweDVmLCAw eDM2LCAweDE0LCAweGZmLCAweDNkLCAweDgzLCAweGZhLCAweDczLCAweDVlLCAweDc1LCAweGRj LAotKyAgICAweDJjLCAweDE4LCAweDE3LCAweDFiCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX3ByX25vbmNlW10gPSB7Ci0rICAg IDB4YzgsIDB4ZTMsIDB4NTcsIDB4YTUsIDB4N2IsIDB4NzQsIDB4ODYsIDB4NmUKLSt9OwotKwot K19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3No YTFfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7Ci0rICAgIDB4NmUsIDB4ZGIsIDB4MGQs IDB4ZmUsIDB4N2QsIDB4YWMsIDB4NzksIDB4ZDAsIDB4YTUsIDB4M2EsIDB4NDgsIDB4ODUsCi0r ICAgIDB4ODAsIDB4ZTIsIDB4N2YsIDB4MmEKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7 Ci0rICAgIDB4MzEsIDB4Y2QsIDB4NWUsIDB4NDMsIDB4ZGMsIDB4ZmIsIDB4N2EsIDB4NzksIDB4 Y2EsIDB4ODgsIDB4ZGUsIDB4MWYsCi0rICAgIDB4ZDcsIDB4YmIsIDB4NDIsIDB4MDkKLSt9Owot KwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFf cHJfZW50cm9weWlucHV0cHJbXSA9IHsKLSsgICAgMHg3YywgMHgyMywgMHg5NSwgMHgzOCwgMHgw MCwgMHg5NSwgMHhjMSwgMHg3OCwgMHgxZiwgMHg4ZiwgMHhkNywgMHg2MywKLSsgICAgMHgyMywg MHg4NywgMHgyYSwgMHhlZAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9wcl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4 YmIsIDB4MzQsIDB4ZTcsIDB4OTMsIDB4YTMsIDB4MDIsIDB4MmMsIDB4NGEsIDB4ZDAsIDB4ODks IDB4ZGEsIDB4N2YsCi0rICAgIDB4ZWQsIDB4ZjQsIDB4NGMsIDB4ZGUsIDB4MTcsIDB4ZWMsIDB4 ZTUsIDB4NmMKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBobWFjX3NoYTFfcHJfYWRkaXRpb25hbGlucHV0MltdID0gewotKyAgICAweDQ5LCAweGJj LCAweDJkLCAweDJjLCAweGI3LCAweDMyLCAweGNiLCAweDIwLCAweGRmLCAweGY1LCAweDc3LCAw eDU4LAotKyAgICAweGEwLCAweDRiLCAweDkzLCAweDZlCi0rfTsKLSsKLStfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX3ByX2VudHJvcHlpbnB1dHBy MltdID0gewotKyAgICAweDNjLCAweGFhLCAweGIwLCAweDIxLCAweDQyLCAweGIwLCAweGRkLCAw eDM0LCAweGYwLCAweDE2LCAweDdmLCAweDBjLAotKyAgICAweDBmLCAweGZmLCAweDJlLCAweGFm Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1h Y19zaGExX3ByX3JldHVybmVkYml0c1tdID0gewotKyAgICAweDhlLCAweGNiLCAweGEzLCAweDY0 LCAweGIyLCAweGI4LCAweDMzLCAweDZjLCAweDY0LCAweDNiLCAweDc4LCAweDE2LAotKyAgICAw eDk5LCAweDM1LCAweGM4LCAweDMwLCAweGNiLCAweDNlLCAweGEwLCAweGQ4Ci0rfTsKLSsKLSsv KiBITUFDIFNIQS0xIE5vIFBSICAqLwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBobWFjX3NoYTFfZW50cm9weWlucHV0W10gPSB7Ci0rICAgIDB4MzIsIDB4OWEs IDB4MmEsIDB4ODcsIDB4N2IsIDB4ODksIDB4N2MsIDB4ZjYsIDB4Y2IsIDB4OTUsIDB4ZDUsIDB4 NDAsCi0rICAgIDB4MTcsIDB4ZmUsIDB4NDcsIDB4NzAKLSt9OwotKwotK19fZmlwc19jb25zdHNl ZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfbm9uY2VbXSA9IHsKLSsgICAg MHgxNiwgMHhkOCwgMHhlMCwgMHhjNywgMHg1MiwgMHhjZiwgMHg0YSwgMHgyNQotK307Ci0rCi0r X19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9wZXJz b25hbGl6YXRpb25zdHJpbmdbXSA9IHsKLSsgICAgMHgzNSwgMHgzNSwgMHhhOSwgMHhhNSwgMHg0 MCwgMHhiZSwgMHg5YiwgMHhkMSwgMHg1NiwgMHhkZCwgMHg0NCwgMHgwMCwKLSsgICAgMHg3Miwg MHhmNywgMHhkMywgMHg1ZQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKLSsgICAgMHgxYiwg MHgyYywgMHg4NCwgMHgyZCwgMHg0YSwgMHg4OSwgMHg4ZiwgMHg2OSwgMHgxOSwgMHhmMSwgMHhm MywgMHhkYiwKLSsgICAgMHhiYiwgMHhlMywgMHhhYSwgMHhlYQotK307Ci0rCi0rX19maXBzX2Nv bnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9pbnRfcmV0dXJuZWRi aXRzW10gPSB7Ci0rICAgIDB4Y2YsIDB4ZmEsIDB4N2QsIDB4NzIsIDB4MGYsIDB4ZTYsIDB4Yzcs IDB4OTYsIDB4YTAsIDB4NjksIDB4MzEsIDB4MTEsCi0rICAgIDB4OWIsIDB4MGIsIDB4MWEsIDB4 MjAsIDB4MWYsIDB4M2YsIDB4YWEsIDB4ZDEKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfZW50cm9weWlucHV0cmVzZWVkW10gPSB7 Ci0rICAgIDB4OTAsIDB4NzUsIDB4MTUsIDB4MDQsIDB4OTUsIDB4ZjEsIDB4YmEsIDB4ODEsIDB4 MGMsIDB4MzcsIDB4OTQsIDB4NmYsCi0rICAgIDB4ODYsIDB4NTIsIDB4NmQsIDB4OWMKLSt9Owot KwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFf YWRkaXRpb25hbGlucHV0cmVzZWVkW10gPSB7Ci0rICAgIDB4NWIsIDB4NDAsIDB4YmEsIDB4NWYs IDB4MTcsIDB4NzAsIDB4ZjAsIDB4NGIsIDB4ZGYsIDB4YzksIDB4OTcsIDB4OTIsCi0rICAgIDB4 NzksIDB4YzUsIDB4ODIsIDB4MjgKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfYWRkaXRpb25hbGlucHV0MltdID0gewotKyAgICAw eDk3LCAweGM4LCAweDgwLCAweDkwLCAweGIzLCAweGFhLCAweDZlLCAweDYwLCAweGVhLCAweDgz LCAweDdhLCAweGUzLAotKyAgICAweDhhLCAweGNhLCAweGE0LCAweDdmCi0rfTsKLSsKLStfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX3JldHVybmVk Yml0c1tdID0gewotKyAgICAweDkwLCAweGJkLCAweDA1LCAweDU2LCAweDZkLCAweGI1LCAweDIy LCAweGQ1LCAweGI5LCAweDVhLCAweDI5LCAweDJkLAotKyAgICAweGU5LCAweDBiLCAweGUxLCAw eGFjLCAweGRlLCAweDI3LCAweDBiLCAweGIwCi0rfTsKLSsKLSsvKiBITUFDIFNIQS0yMjQgUFIg ICovCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hh MjI0X3ByX2VudHJvcHlpbnB1dFtdID0gewotKyAgICAweDE3LCAweDMyLCAweDJiLCAweDJlLCAw eDZmLCAweDFiLCAweDljLCAweDZkLCAweDMxLCAweGUwLCAweDM0LCAweDA3LAotKyAgICAweGNm LCAweGVkLCAweGY2LCAweGI2LCAweDVhLCAweDc2LCAweDRjLCAweGJjLCAweDYyLCAweDg1LCAw eDAxLCAweDkwCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgaG1hY19zaGEyMjRfcHJfbm9uY2VbXSA9IHsKLSsgICAgMHgzOCwgMHhiZiwgMHg1Ziwg MHgyMCwgMHhiMywgMHg2OCwgMHgyZiwgMHg0MywgMHg2MSwgMHgwNSwgMHg4ZiwgMHgyMwotK307 Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGht YWNfc2hhMjI0X3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0gewotKyAgICAweGMwLCAweGM5 LCAweDQ1LCAweGFjLCAweDhkLCAweDI3LCAweDc3LCAweDA4LCAweDBiLCAweDE3LCAweDZkLCAw eGVkLAotKyAgICAweGMxLCAweDdkLCAweGQ1LCAweDA3LCAweDlkLCAweDZlLCAweGY4LCAweDIz LCAweDJhLCAweDIyLCAweDEzLCAweGJkCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7 Ci0rICAgIDB4YTQsIDB4M2MsIDB4ZTcsIDB4M2IsIDB4ZWEsIDB4MTksIDB4NDUsIDB4MzIsIDB4 YzIsIDB4ODMsIDB4NmQsIDB4MjEsCi0rICAgIDB4OGEsIDB4YzAsIDB4ZWUsIDB4NjcsIDB4NDUs IDB4ZGUsIDB4MTMsIDB4N2QsIDB4OWQsIDB4NjEsIDB4MDAsIDB4M2IKLSt9OwotKwotK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9wcl9lbnRy b3B5aW5wdXRwcltdID0gewotKyAgICAweDE1LCAweDA1LCAweDc0LCAweDRhLCAweDdmLCAweDhk LCAweDVjLCAweDYwLCAweDE2LCAweGU1LCAweDdiLCAweGFkLAotKyAgICAweGY1LCAweDQxLCAw eDhmLCAweDU1LCAweDYwLCAweGM0LCAweDA5LCAweGVlLCAweDFlLCAweDExLCAweDgxLCAweGFi Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1h Y19zaGEyMjRfcHJfaW50X3JldHVybmVkYml0c1tdID0gewotKyAgICAweDZmLCAweGY1LCAweDlh LCAweGUyLCAweDU0LCAweDUzLCAweDMwLCAweDNkLCAweDVhLCAweDI3LCAweDI5LCAweDM4LAot KyAgICAweDI3LCAweGYyLCAweDBkLCAweDA1LCAweGU5LCAweDI2LCAweGNiLCAweDE2LCAweGMz LCAweDUxLCAweDVmLCAweDEzLAotKyAgICAweDQxLCAweGZlLCAweDk5LCAweGYyCi0rfTsKLSsK LStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRf cHJfYWRkaXRpb25hbGlucHV0MltdID0gewotKyAgICAweDczLCAweDgxLCAweDg4LCAweDg0LCAw eDhmLCAweGVkLCAweDZmLCAweDEwLCAweDlmLCAweDkzLCAweGJmLCAweDE3LAotKyAgICAweDM1 LCAweDdjLCAweGVmLCAweGQ1LCAweDhkLCAweDI2LCAweGE2LCAweDdhLCAweGU4LCAweDA5LCAw eDM2LCAweDRmCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgaG1hY19zaGEyMjRfcHJfZW50cm9weWlucHV0cHIyW10gPSB7Ci0rICAgIDB4ZTYsIDB4 Y2YsIDB4Y2YsIDB4N2UsIDB4MTIsIDB4ZTUsIDB4NDMsIDB4ZDIsIDB4MzgsIDB4ZDgsIDB4MjQs IDB4NmYsCi0rICAgIDB4NWEsIDB4MzcsIDB4NjgsIDB4YmYsIDB4NGYsIDB4YTAsIDB4ZmYsIDB4 ZDUsIDB4NjEsIDB4OGEsIDB4OTMsIDB4ZTAKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9wcl9yZXR1cm5lZGJpdHNbXSA9IHsK LSsgICAgMHhhZiwgMHhmOSwgMHhkOCwgMHgxOSwgMHg5MSwgMHgzMCwgMHg4MiwgMHg2ZiwgMHhh OSwgMHgxZSwgMHg5ZCwgMHhkNywKLSsgICAgMHhmMywgMHg1MCwgMHhlMCwgMHhjNywgMHhkNSwg MHg2NCwgMHg5NiwgMHg3ZCwgMHg0YywgMHg0ZCwgMHg3OCwgMHgwMywKLSsgICAgMHg2ZCwgMHhk OCwgMHg5ZSwgMHg3MgotK307Ci0rCi0rLyogSE1BQyBTSEEtMjI0IE5vIFBSICAqLwotK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9lbnRyb3B5 aW5wdXRbXSA9IHsKLSsgICAgMHgxMSwgMHg4MiwgMHhmZCwgMHhkOSwgMHg0MiwgMHhmNCwgMHhm YSwgMHhjOCwgMHhmMiwgMHg0MSwgMHhlNiwgMHg1NCwKLSsgICAgMHgwMSwgMHhhZSwgMHgyMiwg MHg2ZSwgMHhjNiwgMHhhZiwgMHhhZiwgMHhkMCwgMHhhNiwgMHhiMiwgMHhlMiwgMHg2ZAotK307 Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hh MjI0X25vbmNlW10gPSB7Ci0rICAgIDB4YTksIDB4NDgsIDB4ZDcsIDB4OTIsIDB4MzksIDB4N2Us IDB4MmEsIDB4ZGMsIDB4MzAsIDB4MWYsIDB4MGUsIDB4MmIKLSt9OwotKwotK19fZmlwc19jb25z dHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9wZXJzb25h bGl6YXRpb25zdHJpbmdbXSA9IHsKLSsgICAgMHgxMSwgMHhkNSwgMHhmNCwgMHhiZCwgMHg2Nywg MHg4YywgMHgzMSwgMHhjZiwgMHhhMywgMHgzZiwgMHgxZSwgMHg2YiwKLSsgICAgMHhhOCwgMHgw NywgMHgwMiwgMHgwYiwgMHhjOCwgMHgyZSwgMHg2YywgMHg2NCwgMHg0MSwgMHg1YiwgMHhjOCwg MHgzNwotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGhtYWNfc2hhMjI0X2FkZGl0aW9uYWxpbnB1dFtdID0gewotKyAgICAweDY4LCAweDE4LCAweGMy LCAweDA2LCAweGViLCAweDNlLCAweDA0LCAweDk1LCAweDQ0LCAweDVlLCAweGZiLCAweGU2LAot KyAgICAweDQxLCAweGMxLCAweDVjLCAweGNjLCAweDQwLCAweDJmLCAweGI3LCAweGQyLCAweDBm LCAweGYzLCAweDZiLCAweGU3Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfaW50X3JldHVybmVkYml0c1tdID0gewotKyAgICAw eDdmLCAweDQ1LCAweGM3LCAweDVkLCAweDMyLCAweGU2LCAweDE3LCAweDYwLCAweGJhLCAweGRj LCAweGI4LCAweDQyLAotKyAgICAweDFiLCAweDljLCAweGYxLCAweGZhLCAweDNiLCAweDRkLCAw eDI5LCAweDU0LCAweGM2LCAweDkwLCAweGZmLCAweDVjLAotKyAgICAweGNkLCAweGQ2LCAweGE5 LCAweGNjCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgaG1hY19zaGEyMjRfZW50cm9weWlucHV0cmVzZWVkW10gPSB7Ci0rICAgIDB4YzQsIDB4OGUs IDB4MzcsIDB4OTUsIDB4NjksIDB4NTMsIDB4MjgsIDB4ZDcsIDB4MzcsIDB4YmIsIDB4NzAsIDB4 OTUsCi0rICAgIDB4MWMsIDB4MDcsIDB4MWQsIDB4ZDksIDB4YjcsIDB4ZTYsIDB4MWIsIDB4YmIs IDB4ZmUsIDB4NDEsIDB4ZWIsIDB4YzkKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9hZGRpdGlvbmFsaW5wdXRyZXNl ZWRbXSA9IHsKLSsgICAgMHg1MywgMHgxNywgMHhhMSwgMHg2YSwgMHhmYSwgMHg3NywgMHg0Nywg MHhiMCwgMHg5NSwgMHg1NiwgMHg5YSwgMHgyMCwKLSsgICAgMHg1NywgMHhkZSwgMHg1YywgMHg4 OSwgMHg5ZiwgMHg3ZiwgMHhlMiwgMHhkZSwgMHgxNywgMHgzYSwgMHg1MCwgMHgyMwotK307Ci0r Ci0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjI0 X2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKLSsgICAgMHgzYSwgMHgzMiwgMHhmOSwgMHg4NSwgMHgw YywgMHhjMSwgMHhlZCwgMHg3NiwgMHgyZCwgMHhkZiwgMHg0MCwgMHhjMywKLSsgICAgMHgwNiwg MHgyMiwgMHg2NiwgMHhkNCwgMHg5YSwgMHg5YSwgMHhmZiwgMHg1YSwgMHg3ZSwgMHg3YSwgMHhm MywgMHg5NgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGhtYWNfc2hhMjI0X3JldHVybmVkYml0c1tdID0gewotKyAgICAweDQzLCAweGI0LCAweDU3 LCAweDVjLCAweDM4LCAweDI1LCAweDlkLCAweGFlLCAweGVjLCAweDk2LCAweGQxLCAweDg1LAot KyAgICAweDNhLCAweDg0LCAweDhkLCAweGZlLCAweDY4LCAweGQ1LCAweDBlLCAweDVjLCAweDhm LCAweDY1LCAweGE1LCAweDRlLAotKyAgICAweDQ1LCAweDg0LCAweGE4LCAweDk0Ci0rfTsKLSsK LSsvKiBITUFDIFNIQS0yNTYgUFIgICovCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X3ByX2VudHJvcHlpbnB1dFtdID0gewotKyAgICAweDRk LCAweGIwLCAweDQzLCAweGQ4LCAweDM0LCAweDRiLCAweDEwLCAweDcwLCAweGIxLCAweDhiLCAw eGVkLCAweGVhLAotKyAgICAweDA3LCAweDkyLCAweDlmLCAweDZjLCAweDc5LCAweDMxLCAweGFm LCAweDgxLCAweDI5LCAweGViLCAweDZlLCAweGNhLAotKyAgICAweDMyLCAweDQ4LCAweDI4LCAw eGU3LCAweDAyLCAweDVkLCAweGE2LCAweGE2Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfcHJfbm9uY2VbXSA9IHsKLSsgICAg MHgzYSwgMHhhZSwgMHgxNSwgMHhhOSwgMHg5OSwgMHhkYywgMHhlNCwgMHg2NywgMHgzNCwgMHgz YiwgMHg3MCwgMHgxNSwKLSsgICAgMHhhYSwgMHhkMywgMHgzMCwgMHg5YQotK307Ci0rCi0rX19m aXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2 X3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0gewotKyAgICAweDEzLCAweDFkLCAweDI0LCAw eDA0LCAweGIwLCAweDE4LCAweDgxLCAweDE1LCAweDIxLCAweDUxLCAweDJhLCAweDI0LAotKyAg ICAweDUyLCAweDYxLCAweGJlLCAweDY0LCAweDgyLCAweDZiLCAweDU1LCAweDJmLCAweGUyLCAw eGYxLCAweDQwLCAweDdkLAotKyAgICAweDcxLCAweGQ4LCAweDAxLCAweDg2LCAweDE1LCAweGI3 LCAweDhiLCAweGI1Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgaG1hY19zaGEyNTZfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7Ci0rICAgIDB4OGYs IDB4YTYsIDB4NTQsIDB4NWYsIDB4YjEsIDB4ZDAsIDB4ZDgsIDB4YzMsIDB4ZTcsIDB4MGMsIDB4 MTUsIDB4YTksCi0rICAgIDB4MjMsIDB4NmUsIDB4ZmUsIDB4ZmIsIDB4OTMsIDB4ZjcsIDB4M2Es IDB4YmQsIDB4NTksIDB4MDEsIDB4ZmEsIDB4MTgsCi0rICAgIDB4OGUsIDB4ZTksIDB4MWEsIDB4 YTksIDB4NzgsIDB4ZmMsIDB4NzksIDB4MGIKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1Nl9wcl9lbnRyb3B5aW5wdXRwcltdID0g ewotKyAgICAweGNmLCAweDI0LCAweGI5LCAweGViLCAweGIzLCAweGQ0LCAweGNkLCAweDE3LCAw eDM3LCAweDM4LCAweDc1LCAweDc5LAotKyAgICAweDE1LCAweGNiLCAweDJkLCAweDc1LCAweDUx LCAweGYxLCAweGNjLCAweGFhLCAweDMyLCAweGE0LCAweGE3LCAweDM2LAotKyAgICAweDdjLCAw eDVjLCAweGU0LCAweDQ3LCAweGYxLCAweDNlLCAweDFkLCAweGU1Ci0rfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfcHJfaW50X3Jl dHVybmVkYml0c1tdID0gewotKyAgICAweDUyLCAweDQyLCAweGZhLCAweGViLCAweDg1LCAweGUw LCAweDMwLCAweDIyLCAweDc5LCAweDAwLCAweDE2LCAweGIyLAotKyAgICAweDg4LCAweDJmLCAw eDE0LCAweDZhLCAweGI3LCAweGZjLCAweGI3LCAweDUzLCAweGRjLCAweDRhLCAweDEyLCAweGVm LAotKyAgICAweDU0LCAweGQ2LCAweDMzLCAweGU5LCAweDIwLCAweGQ2LCAweGZkLCAweDU2Ci0r fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19z aGEyNTZfcHJfYWRkaXRpb25hbGlucHV0MltdID0gewotKyAgICAweGY0LCAweGY2LCAweDQ5LCAw eGExLCAweDJkLCAweDY0LCAweDJiLCAweDMwLCAweDU4LCAweGY4LCAweGJkLCAweGI4LAotKyAg ICAweDc1LCAweGViLCAweGJiLCAweDVlLCAweDFjLCAweDliLCAweDgxLCAweDZhLCAweGRhLCAw eDE0LCAweDg2LCAweDZlLAotKyAgICAweGQwLCAweGRhLCAweDE4LCAweGI3LCAweDg4LCAweGZi LCAweDU5LCAweGYzCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgaG1hY19zaGEyNTZfcHJfZW50cm9weWlucHV0cHIyW10gPSB7Ci0rICAgIDB4MjEs IDB4Y2QsIDB4NmUsIDB4NDYsIDB4YWQsIDB4OTksIDB4MDcsIDB4MTcsIDB4YjQsIDB4M2QsIDB4 NzYsIDB4MGEsCi0rICAgIDB4ZmYsIDB4NWIsIDB4NTIsIDB4NTAsIDB4NzgsIDB4ZGYsIDB4MWYs IDB4MjQsIDB4MDYsIDB4MGQsIDB4M2YsIDB4NzQsCi0rICAgIDB4YTksIDB4YzksIDB4MzcsIDB4 Y2YsIDB4ZDgsIDB4MjYsIDB4MjUsIDB4OTEKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1Nl9wcl9yZXR1cm5lZGJpdHNbXSA9IHsK LSsgICAgMHhhNywgMHhhZiwgMHgyZiwgMHgyOSwgMHhlMCwgMHgzYSwgMHg3MiwgMHg5NSwgMHg5 NiwgMHgxYywgMHhhOSwgMHhmMCwKLSsgICAgMHg0YSwgMHgxNywgMHg0ZCwgMHg2NiwgMHgwNiwg MHgxMCwgMHhiZiwgMHgzOSwgMHg4OSwgMHg4OCwgMHhiOCwgMHg5MSwKLSsgICAgMHgzNywgMHgx OCwgMHg5OSwgMHhjZiwgMHg4YywgMHg1MywgMHgzYiwgMHg3ZQotK307Ci0rCi0rLyogSE1BQyBT SEEtMjU2IE5vIFBSICAqLwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBobWFjX3NoYTI1Nl9lbnRyb3B5aW5wdXRbXSA9IHsKLSsgICAgMHg5NiwgMHhiNywgMHg1 MywgMHgyMiwgMHgxZSwgMHg1MiwgMHgyYSwgMHg5NiwgMHhiMSwgMHgxNSwgMHgzYywgMHgzNSwK LSsgICAgMHg1YSwgMHg4YiwgMHhkMywgMHg0YSwgMHhhNiwgMHg2YywgMHg4MywgMHgwYSwgMHg3 ZCwgMHhhMywgMHgyMywgMHgzZCwKLSsgICAgMHg0MywgMHhhMSwgMHgwNywgMHgyYywgMHgyZCwg MHhlMywgMHg4MSwgMHhjYwotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X25vbmNlW10gPSB7Ci0rICAgIDB4ZjEsIDB4YWMsIDB4 OTcsIDB4Y2IsIDB4NWUsIDB4MDYsIDB4NDgsIDB4ZDIsIDB4OTQsIDB4YmUsIDB4MTUsIDB4MmUs Ci0rICAgIDB4YzcsIDB4ZmMsIDB4YzIsIDB4MDEKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwot KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1Nl9wZXJzb25hbGl6YXRp b25zdHJpbmdbXSA9IHsKLSsgICAgMHg5OCwgMHhjNSwgMHgxZSwgMHgzNSwgMHg1ZSwgMHg4OSwg MHgwZCwgMHhjZSwgMHg2NCwgMHg2ZCwgMHgxOCwgMHhhNywKLSsgICAgMHg1YSwgMHhjNiwgMHhm MywgMHhlNywgMHhkNiwgMHg5ZSwgMHhjMCwgMHhlYSwgMHhiNywgMHgzYSwgMHg4ZCwgMHg2NSwK LSsgICAgMHhiOCwgMHhlYiwgMHgxMCwgMHhkNywgMHg1NywgMHgxOCwgMHhhMCwgMHgzMgotK307 Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hh MjU2X2FkZGl0aW9uYWxpbnB1dFtdID0gewotKyAgICAweDFiLCAweDEwLCAweGFmLCAweGFjLCAw eGQwLCAweDY1LCAweDk1LCAweGFkLCAweDA0LCAweGFkLCAweDAzLCAweDFjLAotKyAgICAweGUw LCAweDQwLCAweGQ2LCAweDNlLCAweDFjLCAweDQ2LCAweDUzLCAweDM5LCAweDdjLCAweGUyLCAw eGJjLCAweGRhLAotKyAgICAweDhjLCAweGEyLCAweDMzLCAweGE3LCAweDlhLCAweDI2LCAweGQz LCAweDI3Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgaG1hY19zaGEyNTZfaW50X3JldHVybmVkYml0c1tdID0gewotKyAgICAweGJhLCAweDYxLCAw eDBlLCAweDU1LCAweGZlLCAweDExLCAweDhhLCAweDllLCAweDBmLCAweDgwLCAweGRmLCAweDFk LAotKyAgICAweDAzLCAweDBhLCAweGZlLCAweDE1LCAweDk0LCAweDI4LCAweDRiLCAweGJhLCAw eGY0LCAweDlmLCAweDUxLCAweDI1LAotKyAgICAweDg4LCAweGU1LCAweDRlLCAweGZiLCAweGFm LCAweGNlLCAweDY5LCAweDkwCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfZW50cm9weWlucHV0cmVzZWVkW10gPSB7Ci0rICAg IDB4NjIsIDB4N2YsIDB4MWUsIDB4NmIsIDB4ZTgsIDB4OGUsIDB4ZTEsIDB4MzUsIDB4N2QsIDB4 OWIsIDB4NGYsIDB4YzcsCi0rICAgIDB4ZWMsIDB4YzgsIDB4YWMsIDB4ZWYsIDB4NmIsIDB4MTMs IDB4OWUsIDB4MDUsIDB4NTYsIDB4YzEsIDB4MDgsIDB4ZjksCi0rICAgIDB4MmYsIDB4MGYsIDB4 MjcsIDB4OWMsIDB4ZDQsIDB4MTUsIDB4ZWQsIDB4MmQKLSt9OwotKwotK19fZmlwc19jb25zdHNl ZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1Nl9hZGRpdGlvbmFs aW5wdXRyZXNlZWRbXSA9IHsKLSsgICAgMHhjNywgMHg3NiwgMHg2ZSwgMHhhOSwgMHhkMiwgMHhi MiwgMHg3NiwgMHg0MCwgMHg4MiwgMHgyNSwgMHgyYywgMHhiMywKLSsgICAgMHg2ZiwgMHhhYywg MHhlOSwgMHg3NCwgMHhlZiwgMHg4ZiwgMHgzYywgMHg4ZSwgMHhjZCwgMHhmMSwgMHhiZiwgMHhi MywKLSsgICAgMHg0OSwgMHg3NywgMHgzNCwgMHg4OCwgMHg1MiwgMHgzNiwgMHhlNiwgMHgyZQot K307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNf c2hhMjU2X2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKLSsgICAgMHg4ZCwgMHhiOCwgMHgwYywgMHhk MSwgMHhiZiwgMHg3MCwgMHhmNiwgMHgxOSwgMHhjMywgMHg0MSwgMHg4MCwgMHg5ZiwKLSsgICAg MHhlMSwgMHhhNSwgMHhhNCwgMHgxZiwgMHgyYywgMHgyNiwgMHhiMSwgMHhlNSwgMHhkOCwgMHhl YiwgMHhiZSwgMHhmOCwKLSsgICAgMHhkZiwgMHg4OCwgMHg2YSwgMHg4OSwgMHhkNiwgMHgwNSwg MHhkOCwgMHg5ZAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGhtYWNfc2hhMjU2X3JldHVybmVkYml0c1tdID0gewotKyAgICAweDQzLCAweDEyLCAw eDJhLCAweDJjLCAweDQwLCAweDUzLCAweDJlLCAweDdjLCAweDY2LCAweDM0LCAweGFjLCAweGMz LAotKyAgICAweDQzLCAweGUzLCAweGUwLCAweDZhLCAweGZjLCAweGZhLCAweGVhLCAweDg3LCAw eDIxLCAweDFmLCAweGUyLCAweDI2LAotKyAgICAweGM0LCAweGY5LCAweDA5LCAweDlhLCAweDBk LCAweDZlLCAweDdmLCAweGUwCi0rfTsKLSsKLSsvKiBITUFDIFNIQS0zODQgUFIgICovCi0rX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X3ByX2Vu dHJvcHlpbnB1dFtdID0gewotKyAgICAweDY5LCAweDgxLCAweDk4LCAweDg4LCAweDQ0LCAweGY1 LCAweGQ2LCAweDJlLCAweDAwLCAweDA4LCAweDNiLCAweGM1LAotKyAgICAweGZiLCAweGQ3LCAw eDhlLCAweDZmLCAweDIzLCAweGY4LCAweDZkLCAweDA5LCAweGQ2LCAweDg1LCAweDQ5LCAweGQx LAotKyAgICAweGY4LCAweDZkLCAweGE0LCAweDU4LCAweDU0LCAweGZkLCAweDg4LCAweGE5Ci0r fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19z aGEzODRfcHJfbm9uY2VbXSA9IHsKLSsgICAgMHg2ZSwgMHgzOCwgMHg4MSwgMHhjYSwgMHhiNywg MHhlOCwgMHg2ZSwgMHg2NiwgMHg0OSwgMHg4YSwgMHhiMiwgMHg1OSwKLSsgICAgMHhlZSwgMHgx NiwgMHhjOSwgMHhkZQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0g ewotKyAgICAweGZlLCAweDRjLCAweGQ5LCAweGY0LCAweDc4LCAweDNiLCAweDA4LCAweDQxLCAw eDhkLCAweDhmLCAweDU1LCAweGM0LAotKyAgICAweDQzLCAweDU2LCAweGI2LCAweDEyLCAweDM2 LCAweDZiLCAweDMwLCAweGI3LCAweDVlLCAweGUxLCAweGI5LCAweDQ3LAotKyAgICAweDA0LCAw eGIxLCAweDRlLCAweGE5LCAweDAwLCAweGExLCAweDUyLCAweGExCi0rfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfcHJfYWRkaXRp b25hbGlucHV0W10gPSB7Ci0rICAgIDB4ODksIDB4ZTksIDB4Y2MsIDB4OGYsIDB4MjcsIDB4M2Ms IDB4MjYsIDB4ZDEsIDB4OTUsIDB4YzgsIDB4N2QsIDB4MGYsCi0rICAgIDB4NWIsIDB4MWEsIDB4 ZjAsIDB4NzgsIDB4MzksIDB4NTYsIDB4NmYsIDB4YTQsIDB4MjMsIDB4ZTcsIDB4ZDEsIDB4ZGEs Ci0rICAgIDB4N2MsIDB4NjYsIDB4MzMsIDB4YTAsIDB4OTAsIDB4YzksIDB4OTIsIDB4ODgKLSt9 OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3No YTM4NF9wcl9lbnRyb3B5aW5wdXRwcltdID0gewotKyAgICAweGJlLCAweDNkLCAweDdjLCAweDBk LCAweGNhLCAweGRhLCAweDdjLCAweDQ5LCAweGI4LCAweDEyLCAweDM2LCAweGMwLAotKyAgICAw eGRiLCAweGFkLCAweDM1LCAweGE4LCAweGM3LCAweDBiLCAweDJhLCAweDJjLCAweDY5LCAweDZk LCAweDI1LCAweDU2LAotKyAgICAweDYzLCAweDgyLCAweDExLCAweDNlLCAweGE3LCAweDMzLCAw eDcwLCAweDcyCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgaG1hY19zaGEzODRfcHJfaW50X3JldHVybmVkYml0c1tdID0gewotKyAgICAweDgyLCAw eDNkLCAweGU2LCAweDU0LCAweDgwLCAweDQyLCAweGY4LCAweGJhLCAweDkwLCAweDRmLCAweDA2 LCAweGE2LAotKyAgICAweGQyLCAweDdmLCAweGJmLCAweDc5LCAweDdjLCAweDEyLCAweDdkLCAw eGE2LCAweGEyLCAweDY2LCAweGU4LCAweGE2LAotKyAgICAweGMwLCAweGQ2LCAweDRhLCAweDU1 LCAweGJmLCAweGQ4LCAweDBhLCAweGM1LCAweGY4LCAweDAzLCAweDg4LCAweGRkLAotKyAgICAw eDhlLCAweDg3LCAweGQxLCAweDVhLCAweDQ4LCAweDI2LCAweDcyLCAweDJhLCAweDhlLCAweGNm LCAweGVlLCAweGJhCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgaG1hY19zaGEzODRfcHJfYWRkaXRpb25hbGlucHV0MltdID0gewotKyAgICAweDhm LCAweGZmLCAweGQ5LCAweDg0LCAweGJiLCAweDg1LCAweDNhLCAweDY2LCAweGExLCAweDIxLCAw eGNlLCAweGIyLAotKyAgICAweDNhLCAweDNhLCAweDE3LCAweDIyLCAweDE5LCAweGFlLCAweGM3 LCAweGI2LCAweDYzLCAweDgxLCAweGQ1LCAweGZmLAotKyAgICAweDBkLCAweGM4LCAweGUxLCAw eGFmLCAweDU3LCAweGQyLCAweGNiLCAweDYwCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfcHJfZW50cm9weWlucHV0cHIyW10g PSB7Ci0rICAgIDB4ZDcsIDB4ZmIsIDB4YzksIDB4ZTgsIDB4ZTIsIDB4ZjIsIDB4YWEsIDB4NGMs IDB4YjgsIDB4NTEsIDB4MmYsIDB4ZTEsCi0rICAgIDB4MjIsIDB4YmEsIDB4ZjMsIDB4ZGEsIDB4 MGEsIDB4MTksIDB4NzYsIDB4NzEsIDB4NTcsIDB4YjIsIDB4MWQsIDB4OTQsCi0rICAgIDB4MDks IDB4NjksIDB4NmMsIDB4ZDMsIDB4OTcsIDB4NTEsIDB4ODEsIDB4ODcKLSt9OwotKwotK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9wcl9yZXR1 cm5lZGJpdHNbXSA9IHsKLSsgICAgMHhlNiwgMHgxOSwgMHgyOCwgMHhhOCwgMHgyMSwgMHhjZSwg MHg1ZSwgMHhkYiwgMHgyNCwgMHg3OSwgMHg4YywgMHg3NiwKLSsgICAgMHg1ZCwgMHg3MywgMHhi MiwgMHhkZiwgMHhhYywgMHhlZiwgMHg4NSwgMHhhNywgMHgzYiwgMHgxOSwgMHgwOSwgMHg4YiwK LSsgICAgMHg3ZiwgMHg5OCwgMHgyOCwgMHhhOSwgMHg5MywgMHhkOCwgMHg3YSwgMHhhZCwgMHg1 NSwgMHg4YiwgMHgyNCwgMHg5ZCwKLSsgICAgMHhlNiwgMHg5OCwgMHhmZSwgMHg0NywgMHhkNSwg MHg0OCwgMHhjMSwgMHgyMywgMHhkOCwgMHgxZCwgMHg2MiwgMHg3NQotK307Ci0rCi0rLyogSE1B QyBTSEEtMzg0IE5vIFBSICAqLwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBobWFjX3NoYTM4NF9lbnRyb3B5aW5wdXRbXSA9IHsKLSsgICAgMHhjMywgMHg1Niwg MHgyYiwgMHgxZCwgMHhjMiwgMHhiYiwgMHhhOCwgMHhmMCwgMHhhZSwgMHgxYiwgMHgwZCwgMHhk MywKLSsgICAgMHg1YSwgMHg2YywgMHhkYSwgMHg1NywgMHg4ZSwgMHhhNSwgMHg4YSwgMHgwZCwg MHg2YywgMHg0YiwgMHgxOCwgMHhiMSwKLSsgICAgMHgwNCwgMHgzZSwgMHhiNCwgMHg5OSwgMHgz NSwgMHhjNCwgMHhjMCwgMHg1ZgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X25vbmNlW10gPSB7Ci0rICAgIDB4YzUsIDB4NDks IDB4MWUsIDB4NjYsIDB4MjcsIDB4OTIsIDB4YmUsIDB4ZWMsIDB4YjUsIDB4MWUsIDB4NGIsIDB4 YjEsCi0rICAgIDB4MzgsIDB4ZTMsIDB4ZWIsIDB4NjIKLSt9OwotKwotK19fZmlwc19jb25zdHNl ZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9wZXJzb25hbGl6 YXRpb25zdHJpbmdbXSA9IHsKLSsgICAgMHhiZSwgMHhlNywgMHg2YiwgMHg1NywgMHhkZSwgMHg4 OCwgMHgxMSwgMHg5NiwgMHg5YiwgMHg2ZSwgMHhlYSwgMHhlNSwKLSsgICAgMHg2MywgMHg4Mywg MHg0YywgMHhiNiwgMHg4ZCwgMHg2NiwgMHhhYSwgMHgxZiwgMHg4YiwgMHg1NCwgMHhlNywgMHg2 MiwKLSsgICAgMHg2ZCwgMHg1YSwgMHhmYywgMHhiZiwgMHg5NywgMHhiYSwgMHhjZCwgMHg3Nwot K307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNf c2hhMzg0X2FkZGl0aW9uYWxpbnB1dFtdID0gewotKyAgICAweGU1LCAweDI4LCAweDVmLCAweDQz LCAweGY1LCAweDgzLCAweDZlLCAweDBhLCAweDgzLCAweDVjLCAweGUzLCAweDgxLAotKyAgICAw eDAzLCAweGYyLCAweGY4LCAweDc4LCAweDAwLCAweDdjLCAweDk1LCAweDg3LCAweDE2LCAweGQ2 LCAweDZjLCAweDU4LAotKyAgICAweDMzLCAweDZjLCAweDUzLCAweDM1LCAweDBkLCAweDY2LCAw eGUzLCAweGNlCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgaG1hY19zaGEzODRfaW50X3JldHVybmVkYml0c1tdID0gewotKyAgICAweGUyLCAweDFm LCAweGYzLCAweGRhLCAweDBkLCAweDE5LCAweDk5LCAweDg3LCAweGM0LCAweDkwLCAweGEyLCAw eDMxLAotKyAgICAweGNhLCAweDJhLCAweDg5LCAweDU4LCAweDQzLCAweDQ0LCAweGI4LCAweGRl LCAweGNmLCAweGE0LCAweGJlLCAweDNiLAotKyAgICAweDUzLCAweDI2LCAweDIyLCAweDMxLCAw eDc2LCAweDQxLCAweDIyLCAweGI1LCAweGE4LCAweDcwLCAweDJmLCAweDRiLAotKyAgICAweDY0 LCAweDk1LCAweDRkLCAweDQ4LCAweDk2LCAweDM1LCAweGU2LCAweGJkLCAweDNjLCAweDM0LCAw eGRiLCAweDFiCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgaG1hY19zaGEzODRfZW50cm9weWlucHV0cmVzZWVkW10gPSB7Ci0rICAgIDB4NzcsIDB4 NjEsIDB4YmEsIDB4YmMsIDB4ZjIsIDB4YzEsIDB4ZjMsIDB4NGIsIDB4ODYsIDB4NjUsIDB4ZmQs IDB4NDgsCi0rICAgIDB4MGUsIDB4M2MsIDB4MDIsIDB4NWUsIDB4YTIsIDB4N2EsIDB4NmIsIDB4 N2MsIDB4ZWQsIDB4MjEsIDB4NWUsIDB4ZjksCi0rICAgIDB4Y2QsIDB4Y2QsIDB4NzcsIDB4MDcs IDB4MmIsIDB4YmUsIDB4YzUsIDB4NWMKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9hZGRpdGlvbmFsaW5wdXRyZXNl ZWRbXSA9IHsKLSsgICAgMHgxOCwgMHgyNCwgMHg1ZiwgMHhjNiwgMHg4NCwgMHhkMSwgMHg2Nywg MHhjMywgMHg5YSwgMHgxMSwgMHhhNSwgMHg4YywKLSsgICAgMHgwNywgMHgzOSwgMHgyMSwgMHg4 MywgMHg0ZCwgMHgwNCwgMHhjNCwgMHg2YSwgMHgyOCwgMHgxOSwgMHhjZiwgMHg5MiwKLSsgICAg MHgyMSwgMHhkOSwgMHg5ZSwgMHg0MSwgMHg3MiwgMHg2YywgMHg5ZSwgMHg2MwotK307Ci0rCi0r X19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X2Fk ZGl0aW9uYWxpbnB1dDJbXSA9IHsKLSsgICAgMHg5NiwgMHg2NywgMHg0MSwgMHgyOCwgMHg5Yiwg MHhiNywgMHg5MiwgMHg4ZCwgMHg2NCwgMHgzYiwgMHhlNCwgMHhjZiwKLSsgICAgMHg3ZSwgMHhh YSwgMHgxZSwgMHhiMSwgMHg0YiwgMHgxZCwgMHgwOSwgMHg1NiwgMHg2NywgMHg5YywgMHhjNiwg MHg2ZCwKLSsgICAgMHgzYiwgMHhlOCwgMHg5MSwgMHg5ZCwgMHhlMSwgMHg4YSwgMHhiNywgMHgz MgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGht YWNfc2hhMzg0X3JldHVybmVkYml0c1tdID0gewotKyAgICAweGUzLCAweDU5LCAweDYxLCAweDM4 LCAweDkyLCAweGVjLCAweGUyLCAweDNjLCAweGZmLCAweGI3LCAweGRiLCAweDE5LAotKyAgICAw eDBmLCAweDViLCAweDkzLCAweDY4LCAweDBkLCAweGE0LCAweDk0LCAweDQwLCAweDcyLCAweDBi LCAweGUwLCAweGVkLAotKyAgICAweDRkLCAweGNkLCAweDY4LCAweGEwLCAweDFlLCAweGZlLCAw eDY3LCAweGIyLCAweGZhLCAweDIxLCAweDU2LCAweDc0LAotKyAgICAweGE0LCAweGFkLCAweGNm LCAweGI3LCAweDYwLCAweDY2LCAweDJlLCAweDQwLCAweGRlLCAweDgyLCAweGNhLCAweGZiCi0r fTsKLSsKLSsvKiBITUFDIFNIQS01MTIgUFIgICovCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX3ByX2VudHJvcHlpbnB1dFtdID0gewotKyAg ICAweGFhLCAweDllLCAweDQ1LCAweDY3LCAweDBlLCAweDAwLCAweDJhLCAweDY3LCAweDk4LCAw eGQ2LCAweGRhLCAweDBiLAotKyAgICAweDBmLCAweDE3LCAweDdlLCAweGFjLCAweGZkLCAweDI3 LCAweGM0LCAweGNhLCAweDg0LCAweGRmLCAweGRlLCAweGJhLAotKyAgICAweDg1LCAweGQ5LCAw eGJlLCAweDhmLCAweGYzLCAweGZmLCAweDkxLCAweDRkCi0rfTsKLSsKLStfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfcHJfbm9uY2VbXSA9IHsK LSsgICAgMHg4YywgMHg0OSwgMHgyZiwgMHg1OCwgMHgxZSwgMHg3YSwgMHhkYSwgMHg0YiwgMHg3 ZSwgMHg4YSwgMHgzMCwgMHg3YiwKLSsgICAgMHg4NiwgMHhlYSwgMHhhZiwgMHhhMgotK307Ci0r Ci0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNf c2hhNTEyX3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0gewotKyAgICAweDcxLCAweGUxLCAw eGJiLCAweGFkLCAweGE3LCAweDRiLCAweDJlLCAweDMxLCAweDNiLCAweDBiLCAweGVjLCAweDI0 LAotKyAgICAweDk5LCAweDM4LCAweGJjLCAweGFhLCAweDA1LCAweDRjLCAweDQ2LCAweDQ0LCAw eGZhLCAweGFkLCAweDhlLCAweDAyLAotKyAgICAweGMxLCAweDdlLCAweGFkLCAweGVjLCAweDU0 LCAweGE2LCAweGQwLCAweGFkCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7Ci0rICAg IDB4M2QsIDB4NmUsIDB4YTYsIDB4YTgsIDB4MjksIDB4MmEsIDB4YjIsIDB4ZjUsIDB4OTgsIDB4 NDIsIDB4ZTQsIDB4OTIsCi0rICAgIDB4NzgsIDB4MjIsIDB4NjcsIDB4ZmQsIDB4MWIsIDB4MTUs IDB4MWUsIDB4MjksIDB4YWEsIDB4NzEsIDB4M2MsIDB4M2MsCi0rICAgIDB4ZTcsIDB4MDUsIDB4 MjAsIDB4YTksIDB4MjksIDB4YzYsIDB4NzUsIDB4NzEKLSt9OwotKwotK19fZmlwc19jb25zdHNl ZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9wcl9lbnRyb3B5aW5wdXRw cltdID0gewotKyAgICAweGFiLCAweGI5LCAweDE2LCAweGQ4LCAweDU1LCAweDM1LCAweDU0LCAw eGI3LCAweDk3LCAweDNmLCAweDk0LCAweGJjLAotKyAgICAweDJmLCAweDdjLCAweDcwLCAweGM3 LCAweGQwLCAweGVkLCAweGI3LCAweDRiLCAweGY3LCAweGY2LCAweDZjLCAweDAzLAotKyAgICAw eDBjLCAweGIwLCAweDAzLCAweGQ4LCAweGJiLCAweDcxLCAweGQ5LCAweDEwCi0rfTsKLSsKLStf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfcHJf aW50X3JldHVybmVkYml0c1tdID0gewotKyAgICAweDhlLCAweGQzLCAweGZkLCAweDUyLCAweDll LCAweDgzLCAweDA4LCAweDQ5LCAweDE4LCAweDZlLCAweDIzLCAweDU2LAotKyAgICAweDVjLCAw eDQ1LCAweDkzLCAweDM0LCAweDA1LCAweGUyLCAweDk4LCAweDhmLCAweDBjLCAweGQ0LCAweDMy LCAweDBjLAotKyAgICAweGZkLCAweGRhLCAweDVmLCAweDkyLCAweDNhLCAweDhjLCAweDgxLCAw eGJkLCAweGY2LCAweDZjLCAweDU1LCAweGZkLAotKyAgICAweGI4LCAweDIwLCAweGNlLCAweDhk LCAweDk3LCAweDI3LCAweGU4LCAweGU4LCAweGUwLCAweGIzLCAweDg1LCAweDUwLAotKyAgICAw eGEyLCAweGMyLCAweGIyLCAweDk1LCAweDFkLCAweDQ4LCAweGQzLCAweDdiLCAweDRiLCAweDc4 LCAweDEzLCAweDM1LAotKyAgICAweDA1LCAweDE3LCAweGJlLCAweDBkCi0rfTsKLSsKLStfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfcHJfYWRk aXRpb25hbGlucHV0MltdID0gewotKyAgICAweGMzLCAweGZjLCAweDk1LCAweGFhLCAweDY5LCAw eDA2LCAweGFlLCAweDU5LCAweDQxLCAweGNlLCAweDI2LCAweDA4LAotKyAgICAweDI5LCAweDZk LCAweDQ1LCAweGRhLCAweGU4LCAweGIzLCAweDZjLCAweDk1LCAweDYwLCAweDBmLCAweDcwLCAw eDJjLAotKyAgICAweDEwLCAweGJhLCAweDM4LCAweDhjLCAweGNmLCAweDI5LCAweDk5LCAweGFh Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1h Y19zaGE1MTJfcHJfZW50cm9weWlucHV0cHIyW10gPSB7Ci0rICAgIDB4M2IsIDB4OWEsIDB4MjUs IDB4Y2UsIDB4ZDcsIDB4ZjksIDB4NWMsIDB4ZDEsIDB4M2EsIDB4M2UsIDB4YWEsIDB4NzEsCi0r ICAgIDB4MTQsIDB4M2UsIDB4MTksIDB4ZTgsIDB4Y2UsIDB4ZTYsIDB4ZmUsIDB4NTEsIDB4ODQs IDB4ZTksIDB4MWIsIDB4ZmUsCi0rICAgIDB4M2YsIDB4YTcsIDB4ZjIsIDB4ZmQsIDB4NzYsIDB4 NWYsIDB4NmEsIDB4ZTcKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBobWFjX3NoYTUxMl9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHhiNywg MHg4MiwgMHhhOSwgMHg1NywgMHg4MSwgMHg2NywgMHg1MywgMHhiNSwgMHhhMSwgMHhlOSwgMHgz ZCwgMHgzNSwKLSsgICAgMHhmOSwgMHhlNCwgMHg5NywgMHhiZSwgMHhhNiwgMHhjYSwgMHhmMSwg MHgwMSwgMHgxMywgMHgwOSwgMHhlNywgMHgyMSwKLSsgICAgMHhjMCwgMHhlZCwgMHg5MywgMHg1 ZCwgMHg0YiwgMHhmNCwgMHhlYiwgMHg4ZCwgMHg1MywgMHgyNSwgMHg4YSwgMHhjNCwKLSsgICAg MHhiMSwgMHg2ZiwgMHg2ZSwgMHgzNywgMHhjZCwgMHgyZSwgMHhhYywgMHgzOSwgMHhiMiwgMHhi NiwgMHg5OSwgMHhhMywKLSsgICAgMHg4MiwgMHgwMCwgMHhiMCwgMHgyMSwgMHhmMCwgMHhjNywg MHgyZiwgMHg0YywgMHg3MywgMHg5MiwgMHhmZCwgMHgwMCwKLSsgICAgMHhiNiwgMHhhZiwgMHhi YywgMHhkMwotK307Ci0rCi0rLyogSE1BQyBTSEEtNTEyIE5vIFBSICAqLwotK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9lbnRyb3B5aW5wdXRb XSA9IHsKLSsgICAgMHg2ZSwgMHg4NSwgMHhlNiwgMHgyNSwgMHg5NiwgMHgyOSwgMHhhNywgMHg1 MiwgMHg1YiwgMHg2MCwgMHhiYSwgMHhhYSwKLSsgICAgMHhkZSwgMHhkYiwgMHgzNiwgMHgwYSwg MHg1MSwgMHg5YSwgMHgxNSwgMHhhZSwgMHg2ZSwgMHgxOCwgMHhkMywgMHhmZSwKLSsgICAgMHgz OSwgMHhiOSwgMHg0YSwgMHg5NiwgMHhmOCwgMHg3NywgMHhjYiwgMHg5NQotK307Ci0rCi0rX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX25vbmNl W10gPSB7Ci0rICAgIDB4ZTAsIDB4YTYsIDB4NWQsIDB4MDgsIDB4YzMsIDB4N2MsIDB4YWUsIDB4 MjUsIDB4MmUsIDB4ODAsIDB4ZDEsIDB4M2UsCi0rICAgIDB4ZDksIDB4YWYsIDB4NDMsIDB4M2MK LSt9OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBobWFjX3NoYTUxMl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKLSsgICAgMHg1MywgMHg5 OSwgMHg1MiwgMHg1ZiwgMHgxMSwgMHhhOSwgMHg2NCwgMHg2NiwgMHgyMCwgMHg1ZSwgMHgxYiwg MHg1ZiwKLSsgICAgMHg0MiwgMHhiMywgMHhmNCwgMHhkYSwgMHhlZCwgMHhiYiwgMHg2MywgMHhj MSwgMHgyMywgMHhhZiwgMHhkMCwgMHgwMSwKLSsgICAgMHg5MCwgMHgzYiwgMHhkMCwgMHg3OCwg MHhlNCwgMHgwYiwgMHhhNywgMHgyMAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX2FkZGl0aW9uYWxpbnB1dFtdID0gewotKyAg ICAweDg1LCAweDkwLCAweDgwLCAweGQzLCAweDk4LCAweGYxLCAweDUzLCAweDZkLCAweDY4LCAw eDE1LCAweDhmLCAweGU1LAotKyAgICAweDYwLCAweDNmLCAweDE3LCAweDI5LCAweDU1LCAweDhk LCAweDMzLCAweGIxLCAweDQ1LCAweDY0LCAweDY0LCAweDhkLAotKyAgICAweDUwLCAweDIxLCAw eDg5LCAweGFlLCAweGY2LCAweGZkLCAweDMyLCAweDczCi0rfTsKLSsKLStfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfaW50X3JldHVybmVkYml0 c1tdID0gewotKyAgICAweDI4LCAweDU2LCAweDMwLCAweDZmLCAweGY0LCAweGExLCAweDQ4LCAw eGUwLCAweGM5LCAweGY1LCAweDc1LCAweDkwLAotKyAgICAweGNjLCAweGZiLCAweGRmLCAweGRm LCAweDcxLCAweDNkLCAweDBhLCAweDlhLCAweDAzLCAweDY1LCAweDNiLCAweDE4LAotKyAgICAw eDYxLCAweGUzLCAweGQxLCAweGRhLCAweGNjLCAweDRhLCAweGZlLCAweDU1LCAweDM4LCAweGY4 LCAweDIxLCAweDZiLAotKyAgICAweGZhLCAweDE4LCAweDAxLCAweDQyLCAweDM5LCAweDJmLCAw eDk5LCAweDUzLCAweDM4LCAweDE1LCAweDgyLCAweDM0LAotKyAgICAweGM1LCAweDkzLCAweDky LCAweGJjLCAweDRkLCAweDc1LCAweDFhLCAweDVmLCAweDIxLCAweDI3LCAweGNjLCAweGExLAot KyAgICAweGIxLCAweDU3LCAweDY5LCAweGU4Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfZW50cm9weWlucHV0cmVzZWVkW10g PSB7Ci0rICAgIDB4OGMsIDB4NTIsIDB4N2UsIDB4NzcsIDB4NzIsIDB4M2YsIDB4YTMsIDB4MDQs IDB4OTcsIDB4MTAsIDB4OWIsIDB4NDEsCi0rICAgIDB4YmQsIDB4ZTgsIDB4ZmYsIDB4ODksIDB4 ZWQsIDB4ODAsIDB4ZTMsIDB4YmQsIDB4YWEsIDB4MTIsIDB4MmQsIDB4Y2EsCi0rICAgIDB4NzUs IDB4ODIsIDB4MzYsIDB4NzcsIDB4ODgsIDB4Y2QsIDB4YTYsIDB4NzMKLSt9OwotKwotK19fZmlw c19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9h ZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9IHsKLSsgICAgMHg3ZSwgMHgzMiwgMHhlMywgMHg2OSwg MHg2OSwgMHgwNywgMHgzNCwgMHhhMiwgMHgxNiwgMHhhMiwgMHg1ZCwgMHgxYSwKLSsgICAgMHgx MCwgMHg5MSwgMHhkMywgMHhlMiwgMHgyMSwgMHhhMiwgMHhhMywgMHhkZCwgMHhjZCwgMHgwYywg MHgwOSwgMHg4NiwKLSsgICAgMHgxMSwgMHhlMSwgMHg1MCwgMHhmZiwgMHg1YywgMHhiNywgMHhl YiwgMHg1YwotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGhtYWNfc2hhNTEyX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKLSsgICAgMHg3ZiwgMHg3OCwg MHg2NiwgMHhkOCwgMHhmYiwgMHg2NywgMHhjZiwgMHg4ZCwgMHg4YywgMHgwOCwgMHgzMCwgMHhh NSwKLSsgICAgMHhmOCwgMHg3ZCwgMHhjZiwgMHg0NCwgMHg1OSwgMHhjZSwgMHhmOCwgMHhkZiwg MHg1OCwgMHhkMywgMHg2MCwgMHhjYiwKLSsgICAgMHhhOCwgMHg2MCwgMHhiOSwgMHgwNywgMHhj NCwgMHhiMSwgMHg5NSwgMHg0OAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX3JldHVybmVkYml0c1tdID0gewotKyAgICAweGRm LCAweGE3LCAweDM2LCAweGQ0LCAweGRjLCAweDVkLCAweDRkLCAweDMxLCAweGFkLCAweDY5LCAw eDQ2LCAweDlmLAotKyAgICAweGYxLCAweDdjLCAweGQ3LCAweDNiLCAweDRmLCAweDU1LCAweGYy LCAweGQ3LCAweGI5LCAweDlkLCAweGFkLCAweDdhLAotKyAgICAweDc5LCAweDA4LCAweDU5LCAw eGE1LCAweGRjLCAweDc0LCAweGY1LCAweDliLCAweDczLCAweGQyLCAweDEzLCAweDI1LAotKyAg ICAweDBiLCAweDgxLCAweDA4LCAweDA4LCAweDI1LCAweGZiLCAweDM5LCAweGYyLCAweGYwLCAw eGEzLCAweGE0LCAweDhkLAotKyAgICAweGVmLCAweDA1LCAweDllLCAweGI4LCAweGM3LCAweDUy LCAweGU0LCAweDBlLCAweDQyLCAweGFhLCAweDdjLCAweDc5LAotKyAgICAweGMyLCAweGQ2LCAw eGZkLCAweGE1Ci0rfTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNf ZHNhX3NlbGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX2RzYV9z ZWxmdGVzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19kc2Ffc2VsZnRl c3QuYy5maXBzCTIwMTYtMDktMjIgMTM6MzU6NTcuMDE2MjIwOTc0ICswMjAwCi0rKysgb3BlbnNz bC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19kc2Ffc2VsZnRlc3QuYwkyMDE2LTA5LTIyIDEzOjM1 OjU3LjAxNjIyMDk3NCArMDIwMAotQEAgLTAsMCArMSwxOTIgQEAKLSsvKiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot KyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6 Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g dGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1 dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAz LiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9m IHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3ds ZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3Bl ZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBU b29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVz ICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2Vk IHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz IHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3 cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICogICAgb3BlbnNzbC1jb3JlQG9w ZW5zc2wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdh cmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIg YXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1p c3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9u cyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAg ICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJl IGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUg T3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiBUSElT IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFO RCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV VCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElT Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJ VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE RU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg KElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04g QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNU IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF VkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0r ICoKLSsgKi8KLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvY3J5 cHRvLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZHNhLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlw cy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5o PgotKyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+Ci0rI2luY2x1ZGUgImZpcHNfbG9jbC5oIgotKwot KyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBkc2Ff dGVzdF8yMDQ4X3BbXSA9IHsKLSsgICAgMHhhOCwgMHg1MywgMHg3OCwgMHhkOCwgMHhmZCwgMHgz ZiwgMHg4ZCwgMHg3MiwgMHhlYywgMHg3NCwgMHgxOCwgMHgwOCwKLSsgICAgMHgwZCwgMHhhMiwg MHgxMywgMHgxNywgMHhlNCwgMHgzZSwgMHhjNCwgMHhiNiwgMHgyYiwgMHhhOCwgMHhjOCwgMHg2 MiwKLSsgICAgMHgzYiwgMHg3ZSwgMHg0ZCwgMHgwNCwgMHg0NCwgMHgxZCwgMHhkMSwgMHhhMCwg MHg2NSwgMHg4NiwgMHg2MiwgMHg1OSwKLSsgICAgMHg2NCwgMHg5MywgMHhjYSwgMHg4ZSwgMHg5 ZSwgMHg4ZiwgMHhiYiwgMHg3ZSwgMHgzNCwgMHhhYSwgMHhkZCwgMHhiNiwKLSsgICAgMHgyZSwg MHg1ZCwgMHg2NywgMHhiNiwgMHhkMCwgMHg5YSwgMHg2ZSwgMHg2MSwgMHhiNywgMHg2OSwgMHhl NywgMHhjMywKLSsgICAgMHg1MiwgMHhhYSwgMHgyYiwgMHgxMCwgMHhlMiwgMHgwYywgMHhhMCwg MHg2MywgMHg2OSwgMHg2MywgMHhiNSwgMHg1MiwKLSsgICAgMHgzZSwgMHg4NiwgMHg0NywgMHgw ZCwgMHhlYywgMHhiYiwgMHhlZCwgMHhhMCwgMHgyNywgMHhlNywgMHg5NywgMHhlNywKLSsgICAg MHhiNiwgMHg3NiwgMHgzNSwgMHhkNCwgMHhkNCwgMHg5YywgMHgzMCwgMHg3MCwgMHgwZSwgMHg3 NCwgMHhhZiwgMHg4YSwKLSsgICAgMHgwZiwgMHhmMSwgMHg1NiwgMHhhOCwgMHgwMSwgMHhhZiwg MHg1NywgMHhhMiwgMHg2ZSwgMHg3MCwgMHg3OCwgMHhmMSwKLSsgICAgMHhkOCwgMHgyZiwgMHg3 NCwgMHg5MCwgMHg4ZSwgMHhjYiwgMHg2ZCwgMHgwNywgMHhlNywgMHgwYiwgMHgzNSwgMHgwMywK LSsgICAgMHhlZSwgMHhkOSwgMHg0ZiwgMHhhMywgMHgyYywgMHhmMSwgMHg3YSwgMHg3ZiwgMHhj MywgMHhkNiwgMHhjZiwgMHg0MCwKLSsgICAgMHhkYywgMHg3YiwgMHgwMCwgMHg4MywgMHgwZSwg MHg2YSwgMHgyNSwgMHg2NiwgMHhkYywgMHgwNywgMHgzZSwgMHgzNCwKLSsgICAgMHgzMywgMHgx MiwgMHg1MSwgMHg3YywgMHg2YSwgMHhhNSwgMHgxNSwgMHgyYiwgMHg0YiwgMHhmZSwgMHhjZCwg MHgyZSwKLSsgICAgMHg1NSwgMHgxZiwgMHhlZSwgMHgzNCwgMHg2MywgMHgxOCwgMHhhMSwgMHg1 MywgMHg0MiwgMHgzYywgMHg5OSwgMHg2YiwKLSsgICAgMHgwZCwgMHg1ZCwgMHhjYiwgMHg5MSwg MHgwMiwgMHhhZSwgMHhkZCwgMHgzOCwgMHg3OSwgMHg4NiwgMHgxNiwgMHhmMSwKLSsgICAgMHhm MSwgMHhlMCwgMHhkNiwgMHhjNCwgMHgwMywgMHg1MiwgMHg1YiwgMHgxZiwgMHg5YiwgMHgzZCwg MHg0ZCwgMHhjNywKLSsgICAgMHg2NiwgMHhkZSwgMHgyZCwgMHhmYywgMHg0YSwgMHg1NiwgMHhk NywgMHhiOCwgMHhiYSwgMHg1OSwgMHg2MywgMHhkNiwKLSsgICAgMHgwZiwgMHgzZSwgMHgxNiwg MHgzMSwgMHg4OCwgMHg3MCwgMHhhZCwgMHg0MywgMHg2OSwgMHg1MiwgMHhlNSwgMHg1NywKLSsg ICAgMHg2NSwgMHgzNywgMHg0ZSwgMHhhYiwgMHg4NSwgMHhlOCwgMHhlYywgMHgxNywgMHhkNiwg MHhiOSwgMHhhNCwgMHg1NCwKLSsgICAgMHg3YiwgMHg5YiwgMHg1ZiwgMHgyNywgMHg1MiwgMHhm MywgMHgxMCwgMHg1YiwgMHhlOCwgMHgwOSwgMHhiMiwgMHgzYSwKLSsgICAgMHgyYywgMHg4ZCwg MHg3NCwgMHg2OSwgMHhkYiwgMHgwMiwgMHhlMiwgMHg0ZCwgMHg1OSwgMHgyMywgMHg5NCwgMHhh NywKLSsgICAgMHhkYiwgMHhhMCwgMHg2OSwgMHhlOQotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgZHNhX3Rlc3RfMjA0OF9xW10gPSB7Ci0rICAgIDB4ZDIsIDB4NzcsIDB4MDQs IDB4NGUsIDB4NTAsIDB4ZjUsIDB4YTQsIDB4ZTMsIDB4ZjUsIDB4MTAsIDB4YTUsIDB4MGEsCi0r ICAgIDB4MGIsIDB4ODQsIDB4ZmQsIDB4ZmYsIDB4YmMsIDB4YTAsIDB4NDcsIDB4ZWQsIDB4Mjcs IDB4NjAsIDB4MjAsIDB4NTYsCi0rICAgIDB4NzQsIDB4NDEsIDB4YTAsIDB4YTUKLSt9OwotKwot K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRzYV90ZXN0XzIwNDhfZ1tdID0gewotKyAgICAw eDEzLCAweGQ3LCAweDU0LCAweGUyLCAweDFmLCAweGQyLCAweDQxLCAweDY1LCAweDVkLCAweGE4 LCAweDkxLCAweGM1LAotKyAgICAweDIyLCAweGE2LCAweDVhLCAweDcyLCAweGE4LCAweDliLCAw eGRjLCAweDY0LCAweGVjLCAweDliLCAweDU0LCAweGE4LAotKyAgICAweDIxLCAweGVkLCAweDRh LCAweDg5LCAweDhiLCAweDQ5LCAweDBlLCAweDBjLCAweDRmLCAweGNiLCAweDcyLCAweDE5LAot KyAgICAweDJhLCAweDRhLCAweDIwLCAweGY1LCAweDQxLCAweGYzLCAweGYyLCAweDkyLCAweDUz LCAweDk5LCAweGYwLCAweGJhLAotKyAgICAweGVjLCAweGY5LCAweDI5LCAweGFhLCAweGZiLCAw eGY3LCAweDlkLCAweGZlLCAweDQzLCAweDMyLCAweDM5LCAweDNiLAotKyAgICAweDMyLCAweGNk LCAweDJlLCAweDJmLCAweGNmLCAweDI3LCAweDJmLCAweDMyLCAweGE2LCAweDI3LCAweDQzLCAw eDRhLAotKyAgICAweDBkLCAweGYyLCAweDQyLCAweGI3LCAweDViLCAweDQxLCAweDRkLCAweGYz LCAweDcyLCAweDEyLCAweDFlLCAweDUzLAotKyAgICAweGE1LCAweDUzLCAweGYyLCAweDIyLCAw eGY4LCAweDM2LCAweGIwLCAweDAwLCAweGYwLCAweDE2LCAweDQ4LCAweDViLAotKyAgICAweDZi LCAweGQwLCAweDg5LCAweDg0LCAweDUxLCAweDgwLCAweDFkLCAweGNkLCAweDhkLCAweGU2LCAw eDRjLCAweGQ1LAotKyAgICAweDM2LCAweDU2LCAweDk2LCAweGZmLCAweGM1LCAweDMyLCAweGQ1 LCAweDI4LCAweGM1LCAweDA2LCAweDYyLCAweDBhLAotKyAgICAweDk0LCAweDJhLCAweDAzLCAw eDA1LCAweDA0LCAweDZkLCAweDhmLCAweDE4LCAweDc2LCAweDM0LCAweDFmLCAweDFlLAotKyAg ICAweDU3LCAweDBiLCAweGMzLCAweDk3LCAweDRiLCAweGE2LCAweGI5LCAweGE0LCAweDM4LCAw eGU5LCAweDcwLCAweDIzLAotKyAgICAweDAyLCAweGEyLCAweGU2LCAweGU2LCAweDdiLCAweGZk LCAweDA2LCAweGQzLCAweDJiLCAweGM2LCAweDc5LCAweDk2LAotKyAgICAweDIyLCAweDcxLCAw eGQ3LCAweGI0LCAweDBjLCAweGQ3LCAweDJmLCAweDM4LCAweDZlLCAweDY0LCAweGUwLCAweGQ3 LAotKyAgICAweGVmLCAweDg2LCAweGNhLCAweDhjLCAweGE1LCAweGQxLCAweDQyLCAweDI4LCAw eGRjLCAweDJhLCAweDRmLCAweDE2LAotKyAgICAweGUzLCAweDE4LCAweDk4LCAweDg2LCAweGI1 LCAweDk5LCAweDA2LCAweDc0LCAweGY0LCAweDIwLCAweDBmLCAweDNhLAotKyAgICAweDRjLCAw eGY2LCAweDVhLCAweDNmLCAweDBkLCAweGRiLCAweGExLCAweGZhLCAweDY3LCAweDJkLCAweGZm LCAweDJmLAotKyAgICAweDVlLCAweDE0LCAweDNkLCAweDEwLCAweGU0LCAweGU5LCAweDdhLCAw eGU4LCAweDRmLCAweDZkLCAweGEwLCAweDk1LAotKyAgICAweDM1LCAweGQ1LCAweGI5LCAweGRm LCAweDI1LCAweDkxLCAweDgxLCAweGE3LCAweDliLCAweDYzLCAweGIwLCAweDY5LAotKyAgICAw eGU5LCAweDQ5LCAweDk3LCAweDJiLCAweDAyLCAweGJhLCAweDM2LCAweGIzLCAweDU4LCAweDZh LCAweGFiLCAweDdlLAotKyAgICAweDQ1LCAweGYzLCAweDIyLCAweGY4LCAweDJlLCAweDRlLCAw eDg1LCAweGNhLCAweDNhLCAweGI4LCAweDU1LCAweDkxLAotKyAgICAweGIzLCAweGMyLCAweGE5 LCAweDY2Ci0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBkc2FfdGVzdF8yMDQ4 X3B1Yl9rZXlbXSA9IHsKLSsgICAgMHgyNCwgMHg1MiwgMHhmMywgMHhjYywgMHhiZSwgMHg5ZSwg MHhkNSwgMHhjYSwgMHg3ZCwgMHhjNywgMHg0YywgMHg2MCwKLSsgICAgMHgyYiwgMHg5OSwgMHgy MiwgMHg2ZSwgMHg4ZiwgMHgyZiwgMHhhYiwgMHgzOCwgMHhlNywgMHhkNywgMHhkZCwgMHhmYiwK LSsgICAgMHg3NSwgMHg1MywgMHg5YiwgMHgxNywgMHgxNSwgMHg1ZSwgMHg5ZiwgMHhjZiwgMHhk MSwgMHhhYiwgMHhhNSwgMHg2NCwKLSsgICAgMHhlYiwgMHg4NSwgMHgzNSwgMHhkOCwgMHgxMiwg MHhjOSwgMHhjMiwgMHhkYywgMHhmOSwgMHg3MiwgMHg4NCwgMHg0NCwKLSsgICAgMHgxYiwgMHhj NCwgMHg4MiwgMHgyNCwgMHgzNiwgMHgyNCwgMHhjNywgMHhmNCwgMHg1NywgMHg1OCwgMHgwYywg MHgxYywKLSsgICAgMHgzOCwgMHhhNSwgMHg3YywgMHg0NiwgMHhjNCwgMHg1NywgMHgzOSwgMHgy NCwgMHg3MCwgMHhlZCwgMHhiNSwgMHgyYywKLSsgICAgMHhiNSwgMHhhNiwgMHhlMCwgMHgzZiwg MHhlNiwgMHgyOCwgMHg3YiwgMHhiNiwgMHhmNCwgMHg5YSwgMHg0MiwgMHhhMiwKLSsgICAgMHgw NiwgMHg1YSwgMHgwNSwgMHg0ZiwgMHgwMywgMHgwOCwgMHgzOSwgMHhkZiwgMHgxZiwgMHhkMywg MHgxNCwgMHg5YywKLSsgICAgMHg0YywgMHhhMCwgMHg1MywgMHgxZCwgMHhkOCwgMHhjYSwgMHg4 YSwgMHhhYSwgMHg5YywgMHhjNywgMHgzMywgMHg3MSwKLSsgICAgMHg5MywgMHgzOCwgMHg3Mywg MHg0OCwgMHgzMywgMHg2MSwgMHgxOCwgMHgyMiwgMHg0NSwgMHg0NSwgMHhlOCwgMHg4YywKLSsg ICAgMHg4MCwgMHhmZiwgMHhkOCwgMHg3NiwgMHg1ZCwgMHg3NCwgMHgzNiwgMHgwMywgMHgzMywg MHhjYywgMHhhYiwgMHg5OSwKLSsgICAgMHg3MiwgMHg3NywgMHg5YiwgMHg2NSwgMHgyNSwgMHhh NiwgMHg1YiwgMHhkZCwgMHgwZCwgMHgxMCwgMHhjNiwgMHg3NSwKLSsgICAgMHhjMSwgMHgwOSwg MHhiYiwgMHhkMywgMHhlNSwgMHhiZSwgMHg0ZCwgMHg3MiwgMHhlZiwgMHg2ZSwgMHhiYSwgMHg2 ZSwKLSsgICAgMHg0MywgMHg4ZCwgMHg1MiwgMHgyNiwgMHgyMywgMHg3ZCwgMHhiOCwgMHg4OCwg MHgzNywgMHg5YywgMHg1ZiwgMHhjYywKLSsgICAgMHg0NywgMHhhMywgMHg4NCwgMHg3ZiwgMHhm NiwgMHgzNywgMHgxMSwgMHhiYSwgMHhlZCwgMHg2ZCwgMHgwMywgMHhhZiwKLSsgICAgMHhlOCwg MHgxZSwgMHg2OSwgMHg0YSwgMHg0MSwgMHgzYiwgMHg2OCwgMHgwYiwgMHhkMywgMHg4YSwgMHhi NCwgMHg5MCwKLSsgICAgMHgzZiwgMHg4MywgMHg3MCwgMHhhNywgMHgwNywgMHhlZiwgMHg1NSwg MHgxZCwgMHg0OSwgMHg0MSwgMHgwMiwgMHg2ZCwKLSsgICAgMHg5NSwgMHg3OSwgMHhkNiwgMHg5 MSwgMHhkZSwgMHg4ZSwgMHhkYSwgMHhhMSwgMHg2MSwgMHgwNSwgMHhlYiwgMHg5ZCwKLSsgICAg MHhiYSwgMHgzYywgMHgyZiwgMHg0YywgMHgxYiwgMHhlYywgMHg1MCwgMHg4MiwgMHg3NSwgMHhh YSwgMHgwMiwgMHgwNywKLSsgICAgMHhlMiwgMHg1MSwgMHhiNSwgMHhlYywgMHhjYiwgMHgyOCwg MHg2YSwgMHg0YiwgMHgwMSwgMHhkNCwgMHg0OSwgMHhkMywKLSsgICAgMHgwYSwgMHhjYiwgMHg2 NywgMHgzNywgMHgxNywgMHhhMCwgMHhkMiwgMHhmYiwgMHgzYiwgMHg1MCwgMHhjOCwgMHg5MywK LSsgICAgMHhmNywgMHhkYSwgMHhiMSwgMHg0ZgotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgZHNhX3Rlc3RfMjA0OF9wcml2X2tleVtdID0gewotKyAgICAweDBjLCAweDRiLCAw eDMwLCAweDg5LCAweGQxLCAweGI4LCAweDYyLCAweGNiLCAweDNjLCAweDQzLCAweDY0LCAweDkx LAotKyAgICAweGYwLCAweDkxLCAweDU0LCAweDcwLCAweGM1LCAweDI3LCAweDk2LCAweGUzLCAw eGFjLCAweGJlLCAweGU4LCAweDAwLAotKyAgICAweGVjLCAweDU1LCAweGY2LCAweGNjCi0rfTsK LSsKLStzdGF0aWMgaW50IGNvcnJ1cHRfZHNhOwotKwotK3ZvaWQgRklQU19jb3JydXB0X2RzYSgp Ci0rewotKyAgICBjb3JydXB0X2RzYSA9IDE7Ci0rfQotKwotK2ludCBGSVBTX3NlbGZ0ZXN0X2Rz YSgpCi0rewotKyAgICBEU0EgKmRzYSA9IE5VTEw7Ci0rICAgIEVWUF9QS0VZICpwayA9IE5VTEw7 Ci0rICAgIGludCByZXQgPSAwOwotKwotKyAgICBkc2EgPSBEU0FfbmV3KCk7Ci0rCi0rICAgIGlm IChkc2EgPT0gTlVMTCkKLSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAgICBmaXBzX2xvYWRfa2V5 X2NvbXBvbmVudChkc2EsIHAsIGRzYV90ZXN0XzIwNDgpOwotKyAgICBmaXBzX2xvYWRfa2V5X2Nv bXBvbmVudChkc2EsIHEsIGRzYV90ZXN0XzIwNDgpOwotKyAgICBmaXBzX2xvYWRfa2V5X2NvbXBv bmVudChkc2EsIGcsIGRzYV90ZXN0XzIwNDgpOwotKyAgICBmaXBzX2xvYWRfa2V5X2NvbXBvbmVu dChkc2EsIHB1Yl9rZXksIGRzYV90ZXN0XzIwNDgpOwotKyAgICBmaXBzX2xvYWRfa2V5X2NvbXBv bmVudChkc2EsIHByaXZfa2V5LCBkc2FfdGVzdF8yMDQ4KTsKLSsKLSsgICAgaWYgKGNvcnJ1cHRf ZHNhKQotKyAgICAgICAgQk5fc2V0X2JpdChkc2EtPnB1Yl9rZXksIDIwNDcpOwotKwotKyAgICBp ZiAoKHBrID0gRVZQX1BLRVlfbmV3KCkpID09IE5VTEwpCi0rICAgICAgICBnb3RvIGVycjsKLSsK LSsgICAgRVZQX1BLRVlfYXNzaWduX0RTQShwaywgZHNhKTsKLSsKLSsgICAgaWYgKCFmaXBzX3Br ZXlfc2lnbmF0dXJlX3Rlc3QocGssIE5VTEwsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5VTEwsIDAsIEVWUF9zaGEyNTYoKSwgMCwgIkRTQSBTSEEyNTYiKSkKLSsgICAg ICAgIGdvdG8gZXJyOwotKyAgICByZXQgPSAxOwotKwotKyBlcnI6Ci0rICAgIGlmIChwaykKLSsg ICAgICAgIEVWUF9QS0VZX2ZyZWUocGspOwotKyAgICBlbHNlIGlmIChkc2EpCi0rICAgICAgICBE U0FfZnJlZShkc2EpOwotKyAgICByZXR1cm4gcmV0OwotK30KLSsjZW5kaWYKLWRpZmYgLXVwIG9w ZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfZW5jLmMuZmlwcyBvcGVuc3NsLTEuMC4yaS9j cnlwdG8vZmlwcy9maXBzX2VuYy5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlw c19lbmMuYy5maXBzCTIwMTYtMDktMjIgMTM6MzU6NTcuMDE3MjIwOTk3ICswMjAwCi0rKysgb3Bl bnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19lbmMuYwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAx NzIyMDk5NyArMDIwMAotQEAgLTAsMCArMSwxODkgQEAKLSsvKiBmaXBlL2V2cC9maXBzX2VuYy5j ICovCi0rLyogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTggRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29m dC5jb20pCi0rICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFRoaXMgcGFja2FnZSBp cyBhbiBTU0wgaW1wbGVtZW50YXRpb24gd3JpdHRlbgotKyAqIGJ5IEVyaWMgWW91bmcgKGVheUBj cnlwdHNvZnQuY29tKS4KLSsgKiBUaGUgaW1wbGVtZW50YXRpb24gd2FzIHdyaXR0ZW4gc28gYXMg dG8gY29uZm9ybSB3aXRoIE5ldHNjYXBlcyBTU0wuCi0rICogCi0rICogVGhpcyBsaWJyYXJ5IGlz IGZyZWUgZm9yIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsIHVzZSBhcyBsb25nIGFzCi0r ICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBhaGVhcmVkIHRvLiAgVGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zCi0rICogYXBwbHkgdG8gYWxsIGNvZGUgZm91bmQgaW4gdGhpcyBkaXN0cmli dXRpb24sIGJlIGl0IHRoZSBSQzQsIFJTQSwKLSsgKiBsaGFzaCwgREVTLCBldGMuLCBjb2RlOyBu b3QganVzdCB0aGUgU1NMIGNvZGUuICBUaGUgU1NMIGRvY3VtZW50YXRpb24KLSsgKiBpbmNsdWRl ZCB3aXRoIHRoaXMgZGlzdHJpYnV0aW9uIGlzIGNvdmVyZWQgYnkgdGhlIHNhbWUgY29weXJpZ2h0 IHRlcm1zCi0rICogZXhjZXB0IHRoYXQgdGhlIGhvbGRlciBpcyBUaW0gSHVkc29uICh0amhAY3J5 cHRzb2Z0LmNvbSkuCi0rICogCi0rICogQ29weXJpZ2h0IHJlbWFpbnMgRXJpYyBZb3VuZydzLCBh bmQgYXMgc3VjaCBhbnkgQ29weXJpZ2h0IG5vdGljZXMgaW4KLSsgKiB0aGUgY29kZSBhcmUgbm90 IHRvIGJlIHJlbW92ZWQuCi0rICogSWYgdGhpcyBwYWNrYWdlIGlzIHVzZWQgaW4gYSBwcm9kdWN0 LCBFcmljIFlvdW5nIHNob3VsZCBiZSBnaXZlbiBhdHRyaWJ1dGlvbgotKyAqIGFzIHRoZSBhdXRo b3Igb2YgdGhlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5IHVzZWQuCi0rICogVGhpcyBjYW4gYmUgaW4g dGhlIGZvcm0gb2YgYSB0ZXh0dWFsIG1lc3NhZ2UgYXQgcHJvZ3JhbSBzdGFydHVwIG9yCi0rICog aW4gZG9jdW1lbnRhdGlvbiAob25saW5lIG9yIHRleHR1YWwpIHByb3ZpZGVkIHdpdGggdGhlIHBh Y2thZ2UuCi0rICogCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0 dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoK LSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGNv cHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lci4KLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK LSsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0 aCB0aGUgZGlzdHJpYnV0aW9uLgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVu dGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQotKyAqICAgIG11c3QgZGlz cGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0 IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieQotKyAqICAgICBFcmlj IFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkiCi0rICogICAgVGhlIHdvcmQgJ2NyeXB0b2dyYXBo aWMnIGNhbiBiZSBsZWZ0IG91dCBpZiB0aGUgcm91aW5lcyBmcm9tIHRoZSBsaWJyYXJ5Ci0rICog ICAgYmVpbmcgdXNlZCBhcmUgbm90IGNyeXB0b2dyYXBoaWMgcmVsYXRlZCA6LSkuCi0rICogNC4g SWYgeW91IGluY2x1ZGUgYW55IFdpbmRvd3Mgc3BlY2lmaWMgY29kZSAob3IgYSBkZXJpdmF0aXZl IHRoZXJlb2YpIGZyb20gCi0rICogICAgdGhlIGFwcHMgZGlyZWN0b3J5IChhcHBsaWNhdGlvbiBj b2RlKSB5b3UgbXVzdCBpbmNsdWRlIGFuIGFja25vd2xlZGdlbWVudDoKLSsgKiAgICAiVGhpcyBw cm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIHdyaXR0ZW4gYnkgVGltIEh1ZHNvbiAodGpoQGNyeXB0 c29mdC5jb20pIgotKyAqIAotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRVJJQyBZ T1VORyBgYEFTIElTJycgQU5ECi0rICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UKLSsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1Ig Q09OVFJJQlVUT1JTIEJFIExJQUJMRQotKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0rICogREFNQUdF UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV VEUgR09PRFMKLSsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7 IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotKyAqIExJ QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT SU5HIElOIEFOWSBXQVkKLSsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0rICogU1VDSCBEQU1BR0UuCi0rICog Ci0rICogVGhlIGxpY2VuY2UgYW5kIGRpc3RyaWJ1dGlvbiB0ZXJtcyBmb3IgYW55IHB1YmxpY2Fs bHkgYXZhaWxhYmxlIHZlcnNpb24gb3IKLSsgKiBkZXJpdmF0aXZlIG9mIHRoaXMgY29kZSBjYW5u b3QgYmUgY2hhbmdlZC4gIGkuZS4gdGhpcyBjb2RlIGNhbm5vdCBzaW1wbHkgYmUKLSsgKiBjb3Bp ZWQgYW5kIHB1dCB1bmRlciBhbm90aGVyIGRpc3RyaWJ1dGlvbiBsaWNlbmNlCi0rICogW2luY2x1 ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNlbmNlLl0KLSsgKi8KLSsKLSsjaW5jbHVkZSA8c3RkaW8u aD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rI2lu Y2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKwotK2Nv bnN0IEVWUF9DSVBIRVIgKkZJUFNfZ2V0X2NpcGhlcmJ5bmlkKGludCBuaWQpCi0rewotKyAgICBz d2l0Y2ggKG5pZCkgewotKyAgICBjYXNlIE5JRF9hZXNfMTI4X2NiYzoKLSsgICAgICAgIHJldHVy biBFVlBfYWVzXzEyOF9jYmMoKTsKLSsKLSsgICAgY2FzZSBOSURfYWVzXzEyOF9jY206Ci0rICAg ICAgICByZXR1cm4gRVZQX2Flc18xMjhfY2NtKCk7Ci0rCi0rICAgIGNhc2UgTklEX2Flc18xMjhf Y2ZiMToKLSsgICAgICAgIHJldHVybiBFVlBfYWVzXzEyOF9jZmIxKCk7Ci0rCi0rICAgIGNhc2Ug TklEX2Flc18xMjhfY2ZiMTI4OgotKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTI4X2NmYjEyOCgp OwotKwotKyAgICBjYXNlIE5JRF9hZXNfMTI4X2NmYjg6Ci0rICAgICAgICByZXR1cm4gRVZQX2Fl c18xMjhfY2ZiOCgpOwotKwotKyAgICBjYXNlIE5JRF9hZXNfMTI4X2N0cjoKLSsgICAgICAgIHJl dHVybiBFVlBfYWVzXzEyOF9jdHIoKTsKLSsKLSsgICAgY2FzZSBOSURfYWVzXzEyOF9lY2I6Ci0r ICAgICAgICByZXR1cm4gRVZQX2Flc18xMjhfZWNiKCk7Ci0rCi0rICAgIGNhc2UgTklEX2Flc18x MjhfZ2NtOgotKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTI4X2djbSgpOwotKwotKyAgICBjYXNl IE5JRF9hZXNfMTI4X29mYjEyODoKLSsgICAgICAgIHJldHVybiBFVlBfYWVzXzEyOF9vZmIoKTsK LSsKLSsgICAgY2FzZSBOSURfYWVzXzEyOF94dHM6Ci0rICAgICAgICByZXR1cm4gRVZQX2Flc18x MjhfeHRzKCk7Ci0rCi0rICAgIGNhc2UgTklEX2Flc18xOTJfY2JjOgotKyAgICAgICAgcmV0dXJu IEVWUF9hZXNfMTkyX2NiYygpOwotKwotKyAgICBjYXNlIE5JRF9hZXNfMTkyX2NjbToKLSsgICAg ICAgIHJldHVybiBFVlBfYWVzXzE5Ml9jY20oKTsKLSsKLSsgICAgY2FzZSBOSURfYWVzXzE5Ml9j ZmIxOgotKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTkyX2NmYjEoKTsKLSsKLSsgICAgY2FzZSBO SURfYWVzXzE5Ml9jZmIxMjg6Ci0rICAgICAgICByZXR1cm4gRVZQX2Flc18xOTJfY2ZiMTI4KCk7 Ci0rCi0rICAgIGNhc2UgTklEX2Flc18xOTJfY2ZiODoKLSsgICAgICAgIHJldHVybiBFVlBfYWVz XzE5Ml9jZmI4KCk7Ci0rCi0rICAgIGNhc2UgTklEX2Flc18xOTJfY3RyOgotKyAgICAgICAgcmV0 dXJuIEVWUF9hZXNfMTkyX2N0cigpOwotKwotKyAgICBjYXNlIE5JRF9hZXNfMTkyX2VjYjoKLSsg ICAgICAgIHJldHVybiBFVlBfYWVzXzE5Ml9lY2IoKTsKLSsKLSsgICAgY2FzZSBOSURfYWVzXzE5 Ml9nY206Ci0rICAgICAgICByZXR1cm4gRVZQX2Flc18xOTJfZ2NtKCk7Ci0rCi0rICAgIGNhc2Ug TklEX2Flc18xOTJfb2ZiMTI4OgotKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTkyX29mYigpOwot KwotKyAgICBjYXNlIE5JRF9hZXNfMjU2X2NiYzoKLSsgICAgICAgIHJldHVybiBFVlBfYWVzXzI1 Nl9jYmMoKTsKLSsKLSsgICAgY2FzZSBOSURfYWVzXzI1Nl9jY206Ci0rICAgICAgICByZXR1cm4g RVZQX2Flc18yNTZfY2NtKCk7Ci0rCi0rICAgIGNhc2UgTklEX2Flc18yNTZfY2ZiMToKLSsgICAg ICAgIHJldHVybiBFVlBfYWVzXzI1Nl9jZmIxKCk7Ci0rCi0rICAgIGNhc2UgTklEX2Flc18yNTZf Y2ZiMTI4OgotKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMjU2X2NmYjEyOCgpOwotKwotKyAgICBj YXNlIE5JRF9hZXNfMjU2X2NmYjg6Ci0rICAgICAgICByZXR1cm4gRVZQX2Flc18yNTZfY2ZiOCgp OwotKwotKyAgICBjYXNlIE5JRF9hZXNfMjU2X2N0cjoKLSsgICAgICAgIHJldHVybiBFVlBfYWVz XzI1Nl9jdHIoKTsKLSsKLSsgICAgY2FzZSBOSURfYWVzXzI1Nl9lY2I6Ci0rICAgICAgICByZXR1 cm4gRVZQX2Flc18yNTZfZWNiKCk7Ci0rCi0rICAgIGNhc2UgTklEX2Flc18yNTZfZ2NtOgotKyAg ICAgICAgcmV0dXJuIEVWUF9hZXNfMjU2X2djbSgpOwotKwotKyAgICBjYXNlIE5JRF9hZXNfMjU2 X29mYjEyODoKLSsgICAgICAgIHJldHVybiBFVlBfYWVzXzI1Nl9vZmIoKTsKLSsKLSsgICAgY2Fz ZSBOSURfYWVzXzI1Nl94dHM6Ci0rICAgICAgICByZXR1cm4gRVZQX2Flc18yNTZfeHRzKCk7Ci0r Ci0rICAgIGNhc2UgTklEX2Rlc19lZGVfZWNiOgotKyAgICAgICAgcmV0dXJuIEVWUF9kZXNfZWRl KCk7Ci0rCi0rICAgIGNhc2UgTklEX2Rlc19lZGUzX2VjYjoKLSsgICAgICAgIHJldHVybiBFVlBf ZGVzX2VkZTMoKTsKLSsKLSsgICAgY2FzZSBOSURfZGVzX2VkZTNfY2JjOgotKyAgICAgICAgcmV0 dXJuIEVWUF9kZXNfZWRlM19jYmMoKTsKLSsKLSsgICAgY2FzZSBOSURfZGVzX2VkZTNfY2ZiMToK LSsgICAgICAgIHJldHVybiBFVlBfZGVzX2VkZTNfY2ZiMSgpOwotKwotKyAgICBjYXNlIE5JRF9k ZXNfZWRlM19jZmI2NDoKLSsgICAgICAgIHJldHVybiBFVlBfZGVzX2VkZTNfY2ZiNjQoKTsKLSsK LSsgICAgY2FzZSBOSURfZGVzX2VkZTNfY2ZiODoKLSsgICAgICAgIHJldHVybiBFVlBfZGVzX2Vk ZTNfY2ZiOCgpOwotKwotKyAgICBjYXNlIE5JRF9kZXNfZWRlM19vZmI2NDoKLSsgICAgICAgIHJl dHVybiBFVlBfZGVzX2VkZTNfb2ZiKCk7Ci0rCi0rICAgIGNhc2UgTklEX2Rlc19lZGVfY2JjOgot KyAgICAgICAgcmV0dXJuIEVWUF9kZXNfZWRlX2NiYygpOwotKwotKyAgICBjYXNlIE5JRF9kZXNf ZWRlX2NmYjY0OgotKyAgICAgICAgcmV0dXJuIEVWUF9kZXNfZWRlX2NmYjY0KCk7Ci0rCi0rICAg IGNhc2UgTklEX2Rlc19lZGVfb2ZiNjQ6Ci0rICAgICAgICByZXR1cm4gRVZQX2Rlc19lZGVfb2Zi KCk7Ci0rCi0rICAgIGRlZmF1bHQ6Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsKLSsgICAgfQot K30KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHMuaC5maXBzIG9wZW5z c2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHMuaAotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9m aXBzL2ZpcHMuaC5maXBzCTIwMTYtMDktMjIgMTM6MzU6NTcuMDE3MjIwOTk3ICswMjAwCi0rKysg b3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwcy5oCTIwMTYtMDktMjIgMTM6MzU6NTcuMDE3 MjIwOTk3ICswMjAwCi1AQCAtMCwwICsxLDI3OCBAQAotKy8qID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29w eXJpZ2h0IChjKSAyMDAzIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVk LgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgot KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv dmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw cm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBh ZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwot KyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50 OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRo ZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQu IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5T U0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsg KiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdh cmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4g cGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5v cmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkg bm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIg aW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBv ZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFu eSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25v d2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxv cGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NM IFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdB UkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQot KyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM SU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05U UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK LSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE SU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH T09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig QlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklM SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJ U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg QURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKgotKyAq LwotKwotKyNpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2xjb25mLmg+Ci0rI2luY2x1ZGUgPG9wZW5z c2wvY3J5cHRvLmg+Ci0rI2luY2x1ZGUgPHN0ZGFyZy5oPgotKwotKyNpZm5kZWYgT1BFTlNTTF9G SVBTCi0rIyBlcnJvciBGSVBTIGlzIGRpc2FibGVkLgotKyNlbmRpZgotKwotKyNpZmRlZiBPUEVO U1NMX0ZJUFMKLSsKLSsjIGlmZGVmICBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyMgZW5k aWYKLSsKLSsgICAgc3RydWN0IGRzYV9zdDsKLSsgICAgc3RydWN0IHJzYV9zdDsKLSsgICAgc3Ry dWN0IGV2cF9wa2V5X3N0OwotKyAgICBzdHJ1Y3QgZW52X21kX3N0OwotKyAgICBzdHJ1Y3QgZW52 X21kX2N0eF9zdDsKLSsgICAgc3RydWN0IGV2cF9jaXBoZXJfc3Q7Ci0rICAgIHN0cnVjdCBldnBf Y2lwaGVyX2N0eF9zdDsKLSsgICAgc3RydWN0IGRoX21ldGhvZDsKLSsgICAgc3RydWN0IENNQUNf Q1RYX3N0OwotKyAgICBzdHJ1Y3QgaG1hY19jdHhfc3Q7Ci0rCi0rICAgIGludCBGSVBTX21vZHVs ZV9tb2RlX3NldChpbnQgb25vZmYsIGNvbnN0IGNoYXIgKmF1dGgpOwotKyAgICBpbnQgRklQU19t b2R1bGVfbW9kZSh2b2lkKTsKLSsgICAgY29uc3Qgdm9pZCAqRklQU19yYW5kX2NoZWNrKHZvaWQp OwotKyAgICBpbnQgRklQU19zZWxmdGVzdCh2b2lkKTsKLSsgICAgaW50IEZJUFNfc2VsZnRlc3Rf ZmFpbGVkKHZvaWQpOwotKyAgICB2b2lkIEZJUFNfY29ycnVwdF9zaGExKHZvaWQpOwotKyAgICBp bnQgRklQU19zZWxmdGVzdF9zaGExKHZvaWQpOwotKyAgICBpbnQgRklQU19zZWxmdGVzdF9zaGEy KHZvaWQpOwotKyAgICB2b2lkIEZJUFNfY29ycnVwdF9hZXModm9pZCk7Ci0rICAgIGludCBGSVBT X3NlbGZ0ZXN0X2Flc19jY20odm9pZCk7Ci0rICAgIGludCBGSVBTX3NlbGZ0ZXN0X2Flc19nY20o dm9pZCk7Ci0rICAgIGludCBGSVBTX3NlbGZ0ZXN0X2Flc194dHModm9pZCk7Ci0rICAgIGludCBG SVBTX3NlbGZ0ZXN0X2Flcyh2b2lkKTsKLSsgICAgdm9pZCBGSVBTX2NvcnJ1cHRfZGVzKHZvaWQp OwotKyAgICBpbnQgRklQU19zZWxmdGVzdF9kZXModm9pZCk7Ci0rICAgIHZvaWQgRklQU19jb3Jy dXB0X3JzYSh2b2lkKTsKLSsgICAgdm9pZCBGSVBTX2NvcnJ1cHRfcnNhX2tleWdlbih2b2lkKTsK LSsgICAgaW50IEZJUFNfc2VsZnRlc3RfcnNhKHZvaWQpOwotKyAgICB2b2lkIEZJUFNfY29ycnVw dF9kc2Eodm9pZCk7Ci0rICAgIHZvaWQgRklQU19jb3JydXB0X2RzYV9rZXlnZW4odm9pZCk7Ci0r ICAgIGludCBGSVBTX3NlbGZ0ZXN0X2RzYSh2b2lkKTsKLSsgICAgdm9pZCBGSVBTX2NvcnJ1cHRf cm5nKHZvaWQpOwotKyAgICB2b2lkIEZJUFNfcm5nX3N0aWNrKHZvaWQpOwotKyAgICB2b2lkIEZJ UFNfeDkzMV9zdGljayhpbnQgb25vZmYpOwotKyAgICB2b2lkIEZJUFNfZHJiZ19zdGljayhpbnQg b25vZmYpOwotKyAgICBpbnQgRklQU19zZWxmdGVzdF9ybmcodm9pZCk7Ci0rICAgIGludCBGSVBT X3NlbGZ0ZXN0X3g5MzEodm9pZCk7Ci0rICAgIGludCBGSVBTX3NlbGZ0ZXN0X2htYWModm9pZCk7 Ci0rICAgIGludCBGSVBTX3NlbGZ0ZXN0X2RyYmcodm9pZCk7Ci0rICAgIGludCBGSVBTX3NlbGZ0 ZXN0X2RyYmdfYWxsKHZvaWQpOwotKyAgICBpbnQgRklQU19zZWxmdGVzdF9jbWFjKHZvaWQpOwot KwotKyAgICB2b2lkIEZJUFNfZ2V0X3RpbWV2ZWModW5zaWduZWQgY2hhciAqYnVmLCB1bnNpZ25l ZCBsb25nICpwY3RyKTsKLSsKLSsjIGRlZmluZSBGSVBTX0VSUk9SX0lHTk9SRUQoYWxnKSBPcGVu U1NMRGllKF9fRklMRV9fLCBfX0xJTkVfXywgXAotKyAgICAgICAgICAgICAgICBhbGcgIiBwcmV2 aW91cyBGSVBTIGZvcmJpZGRlbiBhbGdvcml0aG0gZXJyb3IgaWdub3JlZCIpOwotKwotKyAgICBp bnQgZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHN0cnVjdCBldnBfcGtleV9zdCAqcGtleSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICp0YnMs IGludCB0YnNsZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5z aWduZWQgY2hhciAqa2F0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBrYXRsZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IGVudl9tZF9zdCAqZGlnZXN0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBtZF9mbGFncywgY29uc3QgY2hhciAqZmFpbF9zdHIpOwotKwotKyAg ICBpbnQgZmlwc19jaXBoZXJfdGVzdChzdHJ1Y3QgZXZwX2NpcGhlcl9jdHhfc3QgKmN0eCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGV2cF9jaXBoZXJfc3QgKmNpcGhl ciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqa2V5LAot KyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppdiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcGxhaW50ZXh0LAotKyAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjaXBoZXJ0ZXh0LCBp bnQgbGVuKTsKLSsKLSsgICAgdm9pZCBmaXBzX3NldF9zZWxmdGVzdF9mYWlsKHZvaWQpOwotKwot KyAgICBjb25zdCBzdHJ1Y3QgZW52X21kX3N0ICpGSVBTX2dldF9kaWdlc3RieW5pZChpbnQgbmlk KTsKLSsKLSsgICAgY29uc3Qgc3RydWN0IGV2cF9jaXBoZXJfc3QgKkZJUFNfZ2V0X2NpcGhlcmJ5 bmlkKGludCBuaWQpOwotKwotKy8qIEJFR0lOIEVSUk9SIENPREVTICovCi0rLyogVGhlIGZvbGxv d2luZyBsaW5lcyBhcmUgYXV0byBnZW5lcmF0ZWQgYnkgdGhlIHNjcmlwdCBta2Vyci5wbC4gQW55 IGNoYW5nZXMKLSsgKiBtYWRlIGFmdGVyIHRoaXMgcG9pbnQgbWF5IGJlIG92ZXJ3cml0dGVuIHdo ZW4gdGhlIHNjcmlwdCBpcyBuZXh0IHJ1bi4KLSsgKi8KLSsgICAgdm9pZCBFUlJfbG9hZF9GSVBT X3N0cmluZ3Modm9pZCk7Ci0rCi0rLyogRXJyb3IgY29kZXMgZm9yIHRoZSBGSVBTIGZ1bmN0aW9u cy4gKi8KLSsKLSsvKiBGdW5jdGlvbiBjb2Rlcy4gKi8KLSsjIGRlZmluZSBGSVBTX0ZfREhfQlVJ TFRJTl9HRU5QQVJBTVMgICAgICAgICAgICAgICAgICAgICAgMTAwCi0rIyBkZWZpbmUgRklQU19G X0RIX0lOSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0OAotKyMgZGVmaW5l IEZJUFNfRl9EUkJHX1JFU0VFRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjIKLSsj IGRlZmluZSBGSVBTX0ZfRFNBX0JVSUxUSU5fUEFSQU1HRU4gICAgICAgICAgICAgICAgICAgICAg MTAxCi0rIyBkZWZpbmUgRklQU19GX0RTQV9CVUlMVElOX1BBUkFNR0VOMiAgICAgICAgICAgICAg ICAgICAgIDEwNwotKyMgZGVmaW5lIEZJUFNfRl9EU0FfRE9fU0lHTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAxMDIKLSsjIGRlZmluZSBGSVBTX0ZfRFNBX0RPX1ZFUklGWSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMTAzCi0rIyBkZWZpbmUgRklQU19GX0VDREhfQ09NUFVURV9L RVkgICAgICAgICAgICAgICAgICAgICAgICAgIDE2MwotKyMgZGVmaW5lIEZJUFNfRl9FQ0RTQV9E T19TSUdOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjQKLSsjIGRlZmluZSBGSVBTX0Zf RUNEU0FfRE9fVkVSSUZZICAgICAgICAgICAgICAgICAgICAgICAgICAgMTY1Ci0rIyBkZWZpbmUg RklQU19GX0VDX0tFWV9HRU5FUkFURV9LRVkgICAgICAgICAgICAgICAgICAgICAgIDE2NgotKyMg ZGVmaW5lIEZJUFNfRl9FVlBfQ0lQSEVSSU5JVF9FWCAgICAgICAgICAgICAgICAgICAgICAgICAx MjQKLSsjIGRlZmluZSBGSVBTX0ZfRVZQX0RJR0VTVElOSVRfRVggICAgICAgICAgICAgICAgICAg ICAgICAgMTI1Ci0rIyBkZWZpbmUgRklQU19GX0ZJUFNfQ0hFQ0tfRFNBICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDEwNAotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0NIRUNLX0RTQV9QUk5HICAg ICAgICAgICAgICAgICAgICAgICAxNTEKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19DSEVDS19FQyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQyCi0rIyBkZWZpbmUgRklQU19GX0ZJUFNfQ0hF Q0tfRUNfUFJORyAgICAgICAgICAgICAgICAgICAgICAgIDE1MgotKyMgZGVmaW5lIEZJUFNfRl9G SVBTX0NIRUNLX0lOQ09SRV9GSU5HRVJQUklOVCAgICAgICAgICAgICAxMDUKLSsjIGRlZmluZSBG SVBTX0ZfRklQU19DSEVDS19SU0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA2Ci0rIyBk ZWZpbmUgRklQU19GX0ZJUFNfQ0hFQ0tfUlNBX1BSTkcgICAgICAgICAgICAgICAgICAgICAgIDE1 MAotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0NJUEhFUiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAxNjAKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19DSVBIRVJJTklUICAgICAgICAgICAgICAg ICAgICAgICAgICAgMTQzCi0rIyBkZWZpbmUgRklQU19GX0ZJUFNfQ0lQSEVSX0NUWF9DVFJMICAg ICAgICAgICAgICAgICAgICAgIDE2MQotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0RJR0VTVEZJTkFM ICAgICAgICAgICAgICAgICAgICAgICAgICAxNTgKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19ESUdF U1RJTklUICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI4Ci0rIyBkZWZpbmUgRklQU19GX0ZJ UFNfRElHRVNUVVBEQVRFICAgICAgICAgICAgICAgICAgICAgICAgIDE1OQotKyMgZGVmaW5lIEZJ UFNfRl9GSVBTX0RSQkdfQllURVMgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzEKLSsjIGRl ZmluZSBGSVBTX0ZfRklQU19EUkJHX0NIRUNLICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ2 Ci0rIyBkZWZpbmUgRklQU19GX0ZJUFNfRFJCR19DUFJOR19URVNUICAgICAgICAgICAgICAgICAg ICAgIDEzMgotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0sgICAgICAgICAg ICAgICAgICAgICAxMzYKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19EUkJHX0dFTkVSQVRFICAgICAg ICAgICAgICAgICAgICAgICAgMTM0Ci0rIyBkZWZpbmUgRklQU19GX0ZJUFNfRFJCR19JTklUICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDEzNQotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0RSQkdf SU5TVEFOVElBVEUgICAgICAgICAgICAgICAgICAgICAxMzgKLSsjIGRlZmluZSBGSVBTX0ZfRklQ U19EUkJHX05FVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM5Ci0rIyBkZWZpbmUgRklQ U19GX0ZJUFNfRFJCR19SRVNFRUQgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MAotKyMgZGVm aW5lIEZJUFNfRl9GSVBTX0RSQkdfU0lOR0xFX0tBVCAgICAgICAgICAgICAgICAgICAgICAxNDEK LSsjIGRlZmluZSBGSVBTX0ZfRklQU19EU0FfQ0hFQ0sgICAgICAgICAgIC8qIHVudXNlZCAqLyAg ICAgMTA3Ci0rIyBkZWZpbmUgRklQU19GX0ZJUFNfRFNBX1NJR05fRElHRVNUICAgICAgICAgICAg ICAgICAgICAgIDE1NAotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0RTQV9WRVJJRllfRElHRVNUICAg ICAgICAgICAgICAgICAgICAxNTUKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19HRVRfRU5UUk9QWSAg ICAgICAgICAgICAgICAgICAgICAgICAgMTQ3Ci0rIyBkZWZpbmUgRklQU19GX0ZJUFNfTU9ERV9T RVQgICAgICAgICAgICAvKiB1bnVzZWQgKi8gICAgIDEwOAotKyMgZGVmaW5lIEZJUFNfRl9GSVBT X01PRFVMRV9NT0RFX1NFVCAgICAgICAgICAgICAgICAgICAgICAxMDgKLSsjIGRlZmluZSBGSVBT X0ZfRklQU19QS0VZX1NJR05BVFVSRV9URVNUICAgICAgICAgICAgICAgICAgMTA5Ci0rIyBkZWZp bmUgRklQU19GX0ZJUFNfUkFORF9BREQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNwot KyMgZGVmaW5lIEZJUFNfRl9GSVBTX1JBTkRfQllURVMgICAgICAgICAgICAgICAgICAgICAgICAg ICAxMjIKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19SQU5EX1BTRVVET19CWVRFUyAgICAgICAgICAg ICAgICAgICAgMTY3Ci0rIyBkZWZpbmUgRklQU19GX0ZJUFNfUkFORF9TRUVEICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDE2OAotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1JBTkRfU0VUX01FVEhP RCAgICAgICAgICAgICAgICAgICAgICAxMjYKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19SQU5EX1NU QVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgMTI3Ci0rIyBkZWZpbmUgRklQU19GX0ZJUFNf UlNBX1NJR05fRElHRVNUICAgICAgICAgICAgICAgICAgICAgIDE1NgotKyMgZGVmaW5lIEZJUFNf Rl9GSVBTX1JTQV9WRVJJRllfRElHRVNUICAgICAgICAgICAgICAgICAgICAxNTcKLSsjIGRlZmlu ZSBGSVBTX0ZfRklQU19TRUxGVEVTVF9BRVMgICAgICAgICAgICAgICAgICAgICAgICAgMTEwCi0r IyBkZWZpbmUgRklQU19GX0ZJUFNfU0VMRlRFU1RfQUVTX0NDTSAgICAgICAgICAgICAgICAgICAg IDE0NQotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1NFTEZURVNUX0FFU19HQ00gICAgICAgICAgICAg ICAgICAgICAxMjkKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19TRUxGVEVTVF9BRVNfWFRTICAgICAg ICAgICAgICAgICAgICAgMTQ0Ci0rIyBkZWZpbmUgRklQU19GX0ZJUFNfU0VMRlRFU1RfQ01BQyAg ICAgICAgICAgICAgICAgICAgICAgIDEzMAotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1NFTEZURVNU X0RFUyAgICAgICAgICAgICAgICAgICAgICAgICAxMTEKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19T RUxGVEVTVF9EU0EgICAgICAgICAgICAgICAgICAgICAgICAgMTEyCi0rIyBkZWZpbmUgRklQU19G X0ZJUFNfU0VMRlRFU1RfRUNEU0EgICAgICAgICAgICAgICAgICAgICAgIDEzMwotKyMgZGVmaW5l IEZJUFNfRl9GSVBTX1NFTEZURVNUX0hNQUMgICAgICAgICAgICAgICAgICAgICAgICAxMTMKLSsj IGRlZmluZSBGSVBTX0ZfRklQU19TRUxGVEVTVF9STkcgICAgICAgIC8qIHVudXNlZCAqLyAgICAg MTE0Ci0rIyBkZWZpbmUgRklQU19GX0ZJUFNfU0VMRlRFU1RfU0hBMSAgICAgICAgICAgICAgICAg ICAgICAgIDExNQotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1NFTEZURVNUX1g5MzEgICAgICAgICAg ICAgICAgICAgICAgICAxMTQKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19TRVRfUFJOR19LRVkgICAg ICAgICAgICAgICAgICAgICAgICAgMTUzCi0rIyBkZWZpbmUgRklQU19GX0hBU0hfRklOQUwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMwotKyMgZGVmaW5lIEZJUFNfRl9SU0FfQlVJ TFRJTl9LRVlHRU4gICAgICAgICAgICAgICAgICAgICAgICAxMTYKLSsjIGRlZmluZSBGSVBTX0Zf UlNBX0VBWV9JTklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ5Ci0rIyBkZWZpbmUg RklQU19GX1JTQV9FQVlfUFJJVkFURV9ERUNSWVBUICAgICAgICAgICAgICAgICAgIDExNwotKyMg ZGVmaW5lIEZJUFNfRl9SU0FfRUFZX1BSSVZBVEVfRU5DUllQVCAgICAgICAgICAgICAgICAgICAx MTgKLSsjIGRlZmluZSBGSVBTX0ZfUlNBX0VBWV9QVUJMSUNfREVDUllQVCAgICAgICAgICAgICAg ICAgICAgMTE5Ci0rIyBkZWZpbmUgRklQU19GX1JTQV9FQVlfUFVCTElDX0VOQ1JZUFQgICAgICAg ICAgICAgICAgICAgIDEyMAotKyMgZGVmaW5lIEZJUFNfRl9SU0FfWDkzMV9HRU5FUkFURV9LRVlf RVggICAgICAgICAgICAgICAgICAxMjEKLSsjIGRlZmluZSBGSVBTX0ZfU1NMRUFZX1JBTkRfQllU RVMgICAgICAgIC8qIHVudXNlZCAqLyAgICAgMTIyCi0rCi0rLyogUmVhc29uIGNvZGVzLiAqLwot KyMgZGVmaW5lIEZJUFNfUl9BRERJVElPTkFMX0lOUFVUX0VSUk9SX1VOREVURUNURUQgICAgICAg ICAxNTAKLSsjIGRlZmluZSBGSVBTX1JfQURESVRJT05BTF9JTlBVVF9UT09fTE9ORyAgICAgICAg ICAgICAgICAgMTI1Ci0rIyBkZWZpbmUgRklQU19SX0FMUkVBRFlfSU5TVEFOVElBVEVEICAgICAg ICAgICAgICAgICAgICAgIDEzNAotKyMgZGVmaW5lIEZJUFNfUl9BVVRIRU5USUNBVElPTl9GQUlM VVJFICAgICAgICAgICAgICAgICAgICAxNTEKLSsjIGRlZmluZSBGSVBTX1JfQ0FOTk9UX1JFQURf RVhFICAgICAgICAgIC8qIHVudXNlZCAqLyAgICAgMTAzCi0rIyBkZWZpbmUgRklQU19SX0NBTk5P VF9SRUFEX0VYRV9ESUdFU1QgICAvKiB1bnVzZWQgKi8gICAgIDEwNAotKyMgZGVmaW5lIEZJUFNf Ul9DT05UUkFESUNUSU5HX0VWSURFTkNFICAgICAgICAgICAgICAgICAgICAxMTQKLSsjIGRlZmlu ZSBGSVBTX1JfRFJCR19OT1RfSU5JVElBTElTRUQgICAgICAgICAgICAgICAgICAgICAgMTUyCi0r IyBkZWZpbmUgRklQU19SX0RSQkdfU1RVQ0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDEwMwotKyMgZGVmaW5lIEZJUFNfUl9FTlRST1BZX0VSUk9SX1VOREVURUNURUQgICAgICAgICAg ICAgICAgICAxMDQKLSsjIGRlZmluZSBGSVBTX1JfRU5UUk9QWV9OT1RfUkVRVUVTVEVEX0ZPUl9S RVNFRUQgICAgICAgICAgMTA1Ci0rIyBkZWZpbmUgRklQU19SX0VOVFJPUFlfU09VUkNFX1NUVUNL ICAgICAgICAgICAgICAgICAgICAgIDE0MgotKyMgZGVmaW5lIEZJUFNfUl9FUlJPUl9JTklUSUFM SVNJTkdfRFJCRyAgICAgICAgICAgICAgICAgICAxMTUKLSsjIGRlZmluZSBGSVBTX1JfRVJST1Jf SU5TVEFOVElBVElOR19EUkJHICAgICAgICAgICAgICAgICAgMTI3Ci0rIyBkZWZpbmUgRklQU19S X0VSUk9SX1JFVFJJRVZJTkdfQURESVRJT05BTF9JTlBVVCAgICAgICAgIDEyNAotKyMgZGVmaW5l IEZJUFNfUl9FUlJPUl9SRVRSSUVWSU5HX0VOVFJPUFkgICAgICAgICAgICAgICAgICAxMjIKLSsj IGRlZmluZSBGSVBTX1JfRVJST1JfUkVUUklFVklOR19OT05DRSAgICAgICAgICAgICAgICAgICAg MTQwCi0rIyBkZWZpbmUgRklQU19SX0VYRV9ESUdFU1RfRE9FU19OT1RfTUFUQ0ggICAvKiB1bnVz ZWQgKi8gIDEwNQotKyMgZGVmaW5lIEZJUFNfUl9GSU5HRVJQUklOVF9ET0VTX05PVF9NQVRDSCAg ICAgICAgICAgICAgICAxMTAKLSsjIGRlZmluZSBGSVBTX1JfRklOR0VSUFJJTlRfRE9FU19OT1Rf TUFUQ0hfTk9OUElDX1JFTE9DQVRFRCAxMTEKLSsjIGRlZmluZSBGSVBTX1JfRklOR0VSUFJJTlRf RE9FU19OT1RfTUFUQ0hfU0VHTUVOVF9BTElBU0lORyAxMTIKLSsjIGRlZmluZSBGSVBTX1JfRklQ U19NT0RFX0FMUkVBRFlfU0VUICAgICAgICAgICAgICAgICAgICAgMTAyCi0rIyBkZWZpbmUgRklQ U19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEICAgICAgICAgICAgICAgICAgICAgIDEwNgotKyMgZGVm aW5lIEZJUFNfUl9GVU5DVElPTl9FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTYK LSsjIGRlZmluZSBGSVBTX1JfR0VORVJBVEVfRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMTM3Ci0rIyBkZWZpbmUgRklQU19SX0dFTkVSQVRFX0VSUk9SX1VOREVURUNURUQgICAgICAg ICAgICAgICAgIDExOAotKyMgZGVmaW5lIEZJUFNfUl9JTlNUQU5USUFURV9FUlJPUiAgICAgICAg ICAgICAgICAgICAgICAgICAxMTkKLSsjIGRlZmluZSBGSVBTX1JfSU5TVUZGSUNJRU5UX1NFQ1VS SVRZX1NUUkVOR1RIICAgICAgICAgICAgMTIwCi0rIyBkZWZpbmUgRklQU19SX0lOVEVSTkFMX0VS Uk9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMQotKyMgZGVmaW5lIEZJUFNfUl9JTlZB TElEX0tFWV9MRU5HVEggICAgICAgICAgICAgICAgICAgICAgICAxMDkKLSsjIGRlZmluZSBGSVBT X1JfSU5WQUxJRF9QQVJBTUVURVJTICAgICAgICAgICAgICAgICAgICAgICAgMTQ0Ci0rIyBkZWZp bmUgRklQU19SX0lOX0VSUk9SX1NUQVRFICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMwot KyMgZGVmaW5lIEZJUFNfUl9LRVlfVE9PX1NIT1JUICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAxMDgKLSsjIGRlZmluZSBGSVBTX1JfTk9OQ0VfRVJST1JfVU5ERVRFQ1RFRCAgICAgICAgICAg ICAgICAgICAgMTQ5Ci0rIyBkZWZpbmUgRklQU19SX05PTl9GSVBTX01FVEhPRCAgICAgICAgICAg ICAgICAgICAgICAgICAgIDEwMAotKyMgZGVmaW5lIEZJUFNfUl9OT1BSX1RFU1QxX0ZBSUxVUkUg ICAgICAgICAgICAgICAgICAgICAgICAxNDUKLSsjIGRlZmluZSBGSVBTX1JfTk9QUl9URVNUMl9G QUlMVVJFICAgICAgICAgICAgICAgICAgICAgICAgMTQ2Ci0rIyBkZWZpbmUgRklQU19SX05PVF9J TlNUQU5USUFURUQgICAgICAgICAgICAgICAgICAgICAgICAgIDEyNgotKyMgZGVmaW5lIEZJUFNf Ul9QQUlSV0lTRV9URVNUX0ZBSUxFRCAgICAgICAgICAgICAgICAgICAgICAxMDcKLSsjIGRlZmlu ZSBGSVBTX1JfUEVSU09OQUxJU0FUSU9OX0VSUk9SX1VOREVURUNURUQgICAgICAgICAgMTI4Ci0r IyBkZWZpbmUgRklQU19SX1BFUlNPTkFMSVNBVElPTl9TVFJJTkdfVE9PX0xPTkcgICAgICAgICAg IDEyOQotKyMgZGVmaW5lIEZJUFNfUl9QUk5HX1NUUkVOR1RIX1RPT19MT1cgICAgICAgICAgICAg ICAgICAgICAxNDMKLSsjIGRlZmluZSBGSVBTX1JfUFJfVEVTVDFfRkFJTFVSRSAgICAgICAgICAg ICAgICAgICAgICAgICAgMTQ3Ci0rIyBkZWZpbmUgRklQU19SX1BSX1RFU1QyX0ZBSUxVUkUgICAg ICAgICAgICAgICAgICAgICAgICAgIDE0OAotKyMgZGVmaW5lIEZJUFNfUl9SRVFVRVNUX0xFTkdU SF9FUlJPUl9VTkRFVEVDVEVEICAgICAgICAgICAxMzAKLSsjIGRlZmluZSBGSVBTX1JfUkVRVUVT VF9UT09fTEFSR0VfRk9SX0RSQkcgICAgICAgICAgICAgICAgMTMxCi0rIyBkZWZpbmUgRklQU19S X1JFU0VFRF9DT1VOVEVSX0VSUk9SICAgICAgICAgICAgICAgICAgICAgIDEzMgotKyMgZGVmaW5l IEZJUFNfUl9SRVNFRURfRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzMKLSsj IGRlZmluZSBGSVBTX1JfUlNBX0RFQ1JZUFRfRVJST1IgICAgICAgIC8qIHVudXNlZCAqLyAgICAg MTE1Ci0rIyBkZWZpbmUgRklQU19SX1JTQV9FTkNSWVBUX0VSUk9SICAgICAgICAvKiB1bnVzZWQg Ki8gICAgIDExNgotKyMgZGVmaW5lIEZJUFNfUl9TRUxGVEVTVF9GQUlMRUQgICAgICAgICAgICAg ICAgICAgICAgICAgICAxMDEKLSsjIGRlZmluZSBGSVBTX1JfU0VMRlRFU1RfRkFJTFVSRSAgICAg ICAgICAgICAgICAgICAgICAgICAgMTM1Ci0rIyBkZWZpbmUgRklQU19SX1NUUkVOR1RIX0VSUk9S X1VOREVURUNURUQgICAgICAgICAgICAgICAgIDEzNgotKyMgZGVmaW5lIEZJUFNfUl9URVNUX0ZB SUxVUkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTcKLSsjIGRlZmluZSBGSVBTX1Jf VU5JTlNUQU5USUFURV9FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgMTQxCi0rIyBkZWZpbmUg RklQU19SX1VOSU5TVEFOVElBVEVfWkVST0lTRV9FUlJPUiAgICAgICAgICAgICAgIDEzOAotKyMg ZGVmaW5lIEZJUFNfUl9VTlNVUFBPUlRFRF9EUkJHX1RZUEUgICAgICAgICAgICAgICAgICAgICAx MzkKLSsjIGRlZmluZSBGSVBTX1JfVU5TVVBQT1JURURfUExBVEZPUk0gICAgICAgICAgICAgICAg ICAgICAgMTEzCi0rCi0rIyBpZmRlZiAgX19jcGx1c3BsdXMKLSt9Ci0rIyBlbmRpZgotKyNlbmRp ZgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19obWFjX3NlbGZ0ZXN0 LmMuZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX2htYWNfc2VsZnRlc3QuYwot LS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfaG1hY19zZWxmdGVzdC5jLmZpcHMJ MjAxNi0wOS0yMiAxMzozNTo1Ny4wMTcyMjA5OTcgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9j cnlwdG8vZmlwcy9maXBzX2htYWNfc2VsZnRlc3QuYwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxNzIy MDk5NyArMDIwMAotQEAgLTAsMCArMSwxMzQgQEAKLSsvKiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqIENvcHly aWdodCAoYykgMjAwNSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K LSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y bXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92 aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsg KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl IGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5v dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l ciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv dmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2 ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsg KiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoK LSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUg T3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAo aHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NM IFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICog ICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJl IHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBl cm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3Jn LgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5v dCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGlu IHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2Yg dGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkg Zm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3ds ZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3Bl ZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBU b29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJF IElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsg KiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN SVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJ QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0r ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO RywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P RFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV U0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElU WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJ TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE VklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICoKLSsgKi8K LSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2lm ZGVmIE9QRU5TU0xfRklQUwotKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2VuZGlmCi0r I2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgotKwotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSt0eXBl ZGVmIHN0cnVjdCB7Ci0rICAgIGNvbnN0IEVWUF9NRCAqKCphbGcpICh2b2lkKTsKLSsgICAgY29u c3QgY2hhciAqa2V5LCAqaXY7Ci0rICAgIHVuc2lnbmVkIGNoYXIga2F2YWxbRVZQX01BWF9NRF9T SVpFXTsKLSt9IEhNQUNfS0FUOwotKwotK3N0YXRpYyBjb25zdCBITUFDX0tBVCB2ZWN0b3JbXSA9 IHsKLSsgICAge0VWUF9zaGExLAotKyAgICAgLyogZnJvbSBodHRwOi8vY3NyYy5uaXN0Lmdvdi9w dWJsaWNhdGlvbnMvZmlwcy9maXBzMTk4L2ZpcHMtMTk4YS5wZGYgKi8KLSsgICAgICIwMTIzNDU2 Nzg5Ojs8PT4/QEFCQyIsCi0rICAgICAiU2FtcGxlICMyIiwKLSsgICAgIHsweDA5LCAweDIyLCAw eGQzLCAweDQwLCAweDVmLCAweGFhLCAweDNkLCAweDE5LAotKyAgICAgIDB4NGYsIDB4ODIsIDB4 YTQsIDB4NTgsIDB4MzAsIDB4NzMsIDB4N2QsIDB4NWMsCi0rICAgICAgMHhjNiwgMHhjNywgMHg1 ZCwgMHgyNH0KLSsgICAgIH0sCi0rICAgIHtFVlBfc2hhMjI0LAotKyAgICAgLyoganVzdCBrZWVw IGV4dGVuZGluZyB0aGUgYWJvdmUuLi4gKi8KLSsgICAgICIwMTIzNDU2Nzg5Ojs8PT4/QEFCQyIs Ci0rICAgICAiU2FtcGxlICMyIiwKLSsgICAgIHsweGRkLCAweGVmLCAweDBhLCAweDQwLCAweGNi LCAweDdkLCAweDUwLCAweGZiLAotKyAgICAgIDB4NmUsIDB4ZTYsIDB4Y2UsIDB4YTEsIDB4MjAs IDB4YmEsIDB4MjYsIDB4YWEsCi0rICAgICAgMHgwOCwgMHhmMywgMHgwNywgMHg3NSwgMHg4Nywg MHhiOCwgMHhhZCwgMHgxYiwKLSsgICAgICAweDhjLCAweDhkLCAweDEyLCAweGM3fQotKyAgICAg fSwKLSsgICAge0VWUF9zaGEyNTYsCi0rICAgICAiMDEyMzQ1Njc4OTo7PD0+P0BBQkMiLAotKyAg ICAgIlNhbXBsZSAjMiIsCi0rICAgICB7MHhiOCwgMHhmMiwgMHgwZCwgMHhiNSwgMHg0MSwgMHhl YSwgMHg0MywgMHgwOSwKLSsgICAgICAweGNhLCAweDRlLCAweGE5LCAweDM4LCAweDBjLCAweGQw LCAweGU4LCAweDM0LAotKyAgICAgIDB4ZjcsIDB4MWYsIDB4YmUsIDB4OTEsIDB4NzQsIDB4YTIs IDB4NjEsIDB4MzgsCi0rICAgICAgMHgwZCwgMHhjMSwgMHg3ZSwgMHhhZSwgMHg2YSwgMHgzNCwg MHg1MSwgMHhkOX0KLSsgICAgIH0sCi0rICAgIHtFVlBfc2hhMzg0LAotKyAgICAgIjAxMjM0NTY3 ODk6Ozw9Pj9AQUJDIiwKLSsgICAgICJTYW1wbGUgIzIiLAotKyAgICAgezB4MDgsIDB4YmMsIDB4 YjAsIDB4ZGEsIDB4NDksIDB4MWUsIDB4ODcsIDB4YWQsCi0rICAgICAgMHg5YSwgMHgxZCwgMHg2 YSwgMHhjZSwgMHgyMywgMHhjNSwgMHgwYiwgMHhmNiwKLSsgICAgICAweGI3LCAweDE4LCAweDA2 LCAweGE1LCAweDc3LCAweGNkLCAweDQ5LCAweDA0LAotKyAgICAgIDB4ODksIDB4ZjEsIDB4ZTYs IDB4MjMsIDB4NDQsIDB4NTEsIDB4NTEsIDB4OWYsCi0rICAgICAgMHg4NSwgMHg1NiwgMHg4MCwg MHg3OSwgMHgwYywgMHhiZCwgMHg0ZCwgMHg1MCwKLSsgICAgICAweGE0LCAweDVmLCAweDI5LCAw eGUzLCAweDkzLCAweGYwLCAweGU4LCAweDdmfQotKyAgICAgfSwKLSsgICAge0VWUF9zaGE1MTIs Ci0rICAgICAiMDEyMzQ1Njc4OTo7PD0+P0BBQkMiLAotKyAgICAgIlNhbXBsZSAjMiIsCi0rICAg ICB7MHg4MCwgMHg5ZCwgMHg0NCwgMHgwNSwgMHg3YywgMHg1YiwgMHg5NSwgMHg0MSwKLSsgICAg ICAweDA1LCAweGJkLCAweDA0LCAweDEzLCAweDE2LCAweGRiLCAweDBmLCAweGFjLAotKyAgICAg IDB4NDQsIDB4ZDUsIDB4YTQsIDB4ZDUsIDB4ZDAsIDB4ODksIDB4MmIsIDB4ZDAsCi0rICAgICAg MHg0ZSwgMHg4NiwgMHg2NCwgMHgxMiwgMHhjMCwgMHg5MCwgMHg3NywgMHg2OCwKLSsgICAgICAw eGYxLCAweDg3LCAweGI3LCAweDdjLCAweDRmLCAweGFlLCAweDJjLCAweDJmLAotKyAgICAgIDB4 MjEsIDB4YTUsIDB4YjUsIDB4NjUsIDB4OWEsIDB4NGYsIDB4NGIsIDB4YTcsCi0rICAgICAgMHg0 NywgMHgwMiwgMHhhMywgMHhkZSwgMHg5YiwgMHg1MSwgMHhmMSwgMHg0NSwKLSsgICAgICAweGJk LCAweDRmLCAweDI1LCAweDI3LCAweDQyLCAweDk4LCAweDk5LCAweDA1fQotKyAgICAgfSwKLSt9 OwotKwotK2ludCBGSVBTX3NlbGZ0ZXN0X2htYWMoKQotK3sKLSsgICAgaW50IG47Ci0rICAgIHVu c2lnbmVkIGludCBvdXRsZW47Ci0rICAgIHVuc2lnbmVkIGNoYXIgb3V0W0VWUF9NQVhfTURfU0la RV07Ci0rICAgIGNvbnN0IEVWUF9NRCAqbWQ7Ci0rICAgIGNvbnN0IEhNQUNfS0FUICp0OwotKwot KyAgICBmb3IgKG4gPSAwLCB0ID0gdmVjdG9yOyBuIDwgc2l6ZW9mKHZlY3RvcikgLyBzaXplb2Yo dmVjdG9yWzBdKTsgbisrLCB0KyspIHsKLSsgICAgICAgIG1kID0gKCp0LT5hbGcpICgpOwotKyAg ICAgICAgSE1BQyhtZCwgdC0+a2V5LCBzdHJsZW4odC0+a2V5KSwKLSsgICAgICAgICAgICAgKGNv bnN0IHVuc2lnbmVkIGNoYXIgKil0LT5pdiwgc3RybGVuKHQtPml2KSwgb3V0LCAmb3V0bGVuKTsK LSsKLSsgICAgICAgIGlmIChtZW1jbXAob3V0LCB0LT5rYXZhbCwgb3V0bGVuKSkgewotKyAgICAg ICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfSE1BQywgRklQU19SX1NFTEZURVNU X0ZBSUxFRCk7Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsg ICAgcmV0dXJuIDE7Ci0rfQotKyNlbmRpZgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRv L2ZpcHMvZmlwc19sb2NsLmguZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX2xv Y2wuaAotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfbG9jbC5oLmZpcHMJMjAx Ni0wOS0yMiAxMzozNTo1Ny4wMTcyMjA5OTcgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlw dG8vZmlwcy9maXBzX2xvY2wuaAkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxNzIyMDk5NyArMDIwMAot QEAgLTAsMCArMSw3MSBAQAotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDEx IFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVk aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3 aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl IGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJp YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0r ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAg dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo ZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRl cmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJl IG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlz IHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2pl Y3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9w ZW5zc2wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5k ICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9y IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAq ICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxl YXNlIGNvbnRhY3QKLSsgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCi0rICoKLSsgKiA1 LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAi T3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMg d2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQ cm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2 ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAq ICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVu U1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6 Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg QlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBP UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK LSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg U0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElB QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBF WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBO T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF UzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS VVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZ IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9G IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKgotKyAqLwotKwotKyNpZmRlZiBP UEVOU1NMX0ZJUFMKLSsKLSsjIGlmZGVmICBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyMg ZW5kaWYKLSsKLSsjIGRlZmluZSBGSVBTX01BWF9DSVBIRVJfVEVTVF9TSVpFICAgICAgIDMyCi0r IyBkZWZpbmUgZmlwc19sb2FkX2tleV9jb21wb25lbnQoa2V5LCBjb21wLCBwcmUpIFwKLSsgICAg ICAgIGtleS0+Y29tcCA9IEJOX2JpbjJibihwcmUjI18jI2NvbXAsIHNpemVvZihwcmUjI18jI2Nv bXApLCBrZXktPmNvbXApOyBcCi0rICAgICAgICBpZiAoIWtleS0+Y29tcCkgXAotKyAgICAgICAg ICAgICAgICBnb3RvIGVycgotKwotKyMgZGVmaW5lIGZpcHNfcG9zdF9zdGFydGVkKGlkLCBzdWJp ZCwgZXgpIDEKLSsjIGRlZmluZSBmaXBzX3Bvc3Rfc3VjY2VzcyhpZCwgc3ViaWQsIGV4KSAxCi0r IyBkZWZpbmUgZmlwc19wb3N0X2ZhaWxlZChpZCwgc3ViaWQsIGV4KSAxCi0rIyBkZWZpbmUgZmlw c19wb3N0X2NvcnJ1cHQoaWQsIHN1YmlkLCBleCkgMQotKyMgZGVmaW5lIGZpcHNfcG9zdF9zdGF0 dXMoKSAxCi0rCi0rIyBpZmRlZiAgX19jcGx1c3BsdXMKLSt9Ci0rIyBlbmRpZgotKyNlbmRpZgot ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19tZC5jLmZpcHMgb3BlbnNz bC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19tZC5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRv L2ZpcHMvZmlwc19tZC5jLmZpcHMJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMTcyMjA5OTcgKzAyMDAK LSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX21kLmMJMjAxNi0wOS0yMiAxMzoz NTo1Ny4wMTcyMjA5OTcgKzAyMDAKLUBAIC0wLDAgKzEsMTQ0IEBACi0rLyogZmlwcy9ldnAvZmlw c19tZC5jICovCi0rLyogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTggRXJpYyBZb3VuZyAoZWF5QGNy eXB0c29mdC5jb20pCi0rICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFRoaXMgcGFj a2FnZSBpcyBhbiBTU0wgaW1wbGVtZW50YXRpb24gd3JpdHRlbgotKyAqIGJ5IEVyaWMgWW91bmcg KGVheUBjcnlwdHNvZnQuY29tKS4KLSsgKiBUaGUgaW1wbGVtZW50YXRpb24gd2FzIHdyaXR0ZW4g c28gYXMgdG8gY29uZm9ybSB3aXRoIE5ldHNjYXBlcyBTU0wuCi0rICogCi0rICogVGhpcyBsaWJy YXJ5IGlzIGZyZWUgZm9yIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsIHVzZSBhcyBsb25n IGFzCi0rICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBhaGVhcmVkIHRvLiAgVGhlIGZv bGxvd2luZyBjb25kaXRpb25zCi0rICogYXBwbHkgdG8gYWxsIGNvZGUgZm91bmQgaW4gdGhpcyBk aXN0cmlidXRpb24sIGJlIGl0IHRoZSBSQzQsIFJTQSwKLSsgKiBsaGFzaCwgREVTLCBldGMuLCBj b2RlOyBub3QganVzdCB0aGUgU1NMIGNvZGUuICBUaGUgU1NMIGRvY3VtZW50YXRpb24KLSsgKiBp bmNsdWRlZCB3aXRoIHRoaXMgZGlzdHJpYnV0aW9uIGlzIGNvdmVyZWQgYnkgdGhlIHNhbWUgY29w eXJpZ2h0IHRlcm1zCi0rICogZXhjZXB0IHRoYXQgdGhlIGhvbGRlciBpcyBUaW0gSHVkc29uICh0 amhAY3J5cHRzb2Z0LmNvbSkuCi0rICogCi0rICogQ29weXJpZ2h0IHJlbWFpbnMgRXJpYyBZb3Vu ZydzLCBhbmQgYXMgc3VjaCBhbnkgQ29weXJpZ2h0IG5vdGljZXMgaW4KLSsgKiB0aGUgY29kZSBh cmUgbm90IHRvIGJlIHJlbW92ZWQuCi0rICogSWYgdGhpcyBwYWNrYWdlIGlzIHVzZWQgaW4gYSBw cm9kdWN0LCBFcmljIFlvdW5nIHNob3VsZCBiZSBnaXZlbiBhdHRyaWJ1dGlvbgotKyAqIGFzIHRo ZSBhdXRob3Igb2YgdGhlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5IHVzZWQuCi0rICogVGhpcyBjYW4g YmUgaW4gdGhlIGZvcm0gb2YgYSB0ZXh0dWFsIG1lc3NhZ2UgYXQgcHJvZ3JhbSBzdGFydHVwIG9y Ci0rICogaW4gZG9jdW1lbnRhdGlvbiAob25saW5lIG9yIHRleHR1YWwpIHByb3ZpZGVkIHdpdGgg dGhlIHBhY2thZ2UuCi0rICogCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUg cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJl IG1ldDoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g dGhlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp biB0aGUKLSsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlh bHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQotKyAqICAgIG11 c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKLSsgKiAgICAiVGhpcyBw cm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieQotKyAqICAg ICBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkiCi0rICogICAgVGhlIHdvcmQgJ2NyeXB0 b2dyYXBoaWMnIGNhbiBiZSBsZWZ0IG91dCBpZiB0aGUgcm91aW5lcyBmcm9tIHRoZSBsaWJyYXJ5 Ci0rICogICAgYmVpbmcgdXNlZCBhcmUgbm90IGNyeXB0b2dyYXBoaWMgcmVsYXRlZCA6LSkuCi0r ICogNC4gSWYgeW91IGluY2x1ZGUgYW55IFdpbmRvd3Mgc3BlY2lmaWMgY29kZSAob3IgYSBkZXJp dmF0aXZlIHRoZXJlb2YpIGZyb20gCi0rICogICAgdGhlIGFwcHMgZGlyZWN0b3J5IChhcHBsaWNh dGlvbiBjb2RlKSB5b3UgbXVzdCBpbmNsdWRlIGFuIGFja25vd2xlZGdlbWVudDoKLSsgKiAgICAi VGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIHdyaXR0ZW4gYnkgVGltIEh1ZHNvbiAodGpo QGNyeXB0c29mdC5jb20pIgotKyAqIAotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg RVJJQyBZT1VORyBgYEFTIElTJycgQU5ECi0rICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UKLSsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRI T1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0rICog REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV QlNUSVRVVEUgR09PRFMKLSsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQg T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAot KyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF KSBBUklTSU5HIElOIEFOWSBXQVkKLSsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0rICogU1VDSCBEQU1BR0Uu Ci0rICogCi0rICogVGhlIGxpY2VuY2UgYW5kIGRpc3RyaWJ1dGlvbiB0ZXJtcyBmb3IgYW55IHB1 YmxpY2FsbHkgYXZhaWxhYmxlIHZlcnNpb24gb3IKLSsgKiBkZXJpdmF0aXZlIG9mIHRoaXMgY29k ZSBjYW5ub3QgYmUgY2hhbmdlZC4gIGkuZS4gdGhpcyBjb2RlIGNhbm5vdCBzaW1wbHkgYmUKLSsg KiBjb3BpZWQgYW5kIHB1dCB1bmRlciBhbm90aGVyIGRpc3RyaWJ1dGlvbiBsaWNlbmNlCi0rICog W2luY2x1ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNlbmNlLl0KLSsgKi8KLSsvKiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwg cmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBh cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICog YXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0 IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJl ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w eXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90 aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsg KgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBv ciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5n IGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUg ZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBP cGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiA0LiBU aGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90 IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv bi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBvcGVuc3Ns LWNvcmVAb3BlbnNzbC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhp cyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJP cGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICog ICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0 cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2lu ZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMg c29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNl IGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgot KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFT IElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NF IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBP UgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD VCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg REFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwg T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VE IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsg KiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF UldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G VFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB TUFHRS4KLSsgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotKyAqCi0rICogVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNy eXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieSBFcmljIFlvdW5nCi0rICogKGVheUBjcnlw dHNvZnQuY29tKS4gIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5IFRp bQotKyAqIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pLgotKyAqCi0rICovCi0rCi0rLyogTWlu aW1hbCBzdGFuZGFsb25lIEZJUFMgdmVyc2lvbnMgb2YgRGlnZXN0IG9wZXJhdGlvbnMgKi8KLSsK LSsjZGVmaW5lIE9QRU5TU0xfRklQU0FQSQotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNs dWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9vYmplY3RzLmg+Ci0rI2luY2x1ZGUg PG9wZW5zc2wvZXZwLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2luY2x1ZGUgPG9w ZW5zc2wvZmlwcy5oPgotKwotK2NvbnN0IEVWUF9NRCAqRklQU19nZXRfZGlnZXN0YnluaWQoaW50 IG5pZCkKLSt7Ci0rICAgIHN3aXRjaCAobmlkKSB7Ci0rICAgIGNhc2UgTklEX3NoYTE6Ci0rICAg ICAgICByZXR1cm4gRVZQX3NoYTEoKTsKLSsKLSsgICAgY2FzZSBOSURfc2hhMjI0OgotKyAgICAg ICAgcmV0dXJuIEVWUF9zaGEyMjQoKTsKLSsKLSsgICAgY2FzZSBOSURfc2hhMjU2OgotKyAgICAg ICAgcmV0dXJuIEVWUF9zaGEyNTYoKTsKLSsKLSsgICAgY2FzZSBOSURfc2hhMzg0OgotKyAgICAg ICAgcmV0dXJuIEVWUF9zaGEzODQoKTsKLSsKLSsgICAgY2FzZSBOSURfc2hhNTEyOgotKyAgICAg ICAgcmV0dXJuIEVWUF9zaGE1MTIoKTsKLSsKLSsgICAgZGVmYXVsdDoKLSsgICAgICAgIHJldHVy biBOVUxMOwotKyAgICB9Ci0rfQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMv Zmlwc19wb3N0LmMuZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX3Bvc3QuYwot LS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfcG9zdC5jLmZpcHMJMjAxNi0wOS0y MiAxMzozNTo1Ny4wMTcyMjA5OTcgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlw cy9maXBzX3Bvc3QuYwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxNzIyMDk5NyArMDIwMAotQEAgLTAs MCArMSwyMDEgQEAKLSsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUg T3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJp YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91 dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs b3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlv bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBk b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsg KiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxz IG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0 IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9k dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0r ICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3Ns Lm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3Bl blNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9t b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBw cmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBj b250YWN0Ci0rICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgotKyAqCi0rICogNS4gUHJv ZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5T U0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhv dXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVj dC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11 c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAi VGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQ cm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3 Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI RSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1Q TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICog SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM IFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBM QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJ TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0r ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP TikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUg UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICoKLSsgKi8KLSsKLSsjZGVmaW5lIE9QRU5T U0xfRklQU0FQSQotKwotKyNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgotKyNpbmNsdWRlIDxv cGVuc3NsL3JhbmQuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4KLSsjaW5jbHVk ZSA8b3BlbnNzbC9lcnIuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9iaW8uaD4KLSsjaW5jbHVkZSA8 b3BlbnNzbC9obWFjLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+Ci0rI2luY2x1ZGUgPG9w ZW5zc2wvZHNhLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4K LSsKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCi0rLyogUG93ZXIgb24gc2VsZiB0ZXN0IChQT1NU KSBzdXBwb3J0IGZ1bmN0aW9ucyAqLwotKwotKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0r IyBpbmNsdWRlICJmaXBzX2xvY2wuaCIKLSsKLSsvKiBSdW4gYWxsIHNlbGZ0ZXN0cyAqLwotK2lu dCBGSVBTX3NlbGZ0ZXN0KHZvaWQpCi0rewotKyAgICBpbnQgcnYgPSAxOwotKyAgICBpZiAoIUZJ UFNfc2VsZnRlc3RfZHJiZygpKQotKyAgICAgICAgcnYgPSAwOwotKyAgICBpZiAoIUZJUFNfc2Vs ZnRlc3RfeDkzMSgpKQotKyAgICAgICAgcnYgPSAwOwotKyAgICBpZiAoIUZJUFNfc2VsZnRlc3Rf c2hhMSgpKQotKyAgICAgICAgcnYgPSAwOwotKyAgICBpZiAoIUZJUFNfc2VsZnRlc3Rfc2hhMigp KQotKyAgICAgICAgcnYgPSAwOwotKyAgICBpZiAoIUZJUFNfc2VsZnRlc3RfaG1hYygpKQotKyAg ICAgICAgcnYgPSAwOwotKyAgICBpZiAoIUZJUFNfc2VsZnRlc3RfY21hYygpKQotKyAgICAgICAg cnYgPSAwOwotKyAgICBpZiAoIUZJUFNfc2VsZnRlc3RfYWVzKCkpCi0rICAgICAgICBydiA9IDA7 Ci0rICAgIGlmICghRklQU19zZWxmdGVzdF9hZXNfY2NtKCkpCi0rICAgICAgICBydiA9IDA7Ci0r ICAgIGlmICghRklQU19zZWxmdGVzdF9hZXNfZ2NtKCkpCi0rICAgICAgICBydiA9IDA7Ci0rICAg IGlmICghRklQU19zZWxmdGVzdF9hZXNfeHRzKCkpCi0rICAgICAgICBydiA9IDA7Ci0rICAgIGlm ICghRklQU19zZWxmdGVzdF9kZXMoKSkKLSsgICAgICAgIHJ2ID0gMDsKLSsgICAgaWYgKCFGSVBT X3NlbGZ0ZXN0X3JzYSgpKQotKyAgICAgICAgcnYgPSAwOwotKyAgICBpZiAoIUZJUFNfc2VsZnRl c3RfZHNhKCkpCi0rICAgICAgICBydiA9IDA7Ci0rICAgIHJldHVybiBydjsKLSt9Ci0rCi0rLyog R2VuZXJhbGl6ZWQgcHVibGljIGtleSB0ZXN0IHJvdXRpbmUuIFNpZ25zIGFuZCB2ZXJpZmllcyB0 aGUgZGF0YQotKyAqIHN1cHBsaWVkIGluIHRicyB1c2luZyBtZXNhZ2UgZGlnZXN0IG1kIGFuZCBz ZXR0aW5nIG9wdGlvbiBkaWdlc3QKLSsgKiBmbGFncyBtZF9mbGFncy4gSWYgdGhlICdrYXQnIHBh cmFtZXRlciBpcyBub3QgTlVMTCBpdCB3aWxsCi0rICogYWRkaXRpb25hbGx5IGNoZWNrIHRoZSBz aWduYXR1cmUgbWF0Y2hlcyBpdDogYSBrbm93biBhbnN3ZXIgdGVzdAotKyAqIFRoZSBzdHJpbmcg ImZhaWxfc3RyIiBpcyB1c2VkIGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3NlcyBpbiBjYXNlCi0r ICogb2YgZmFpbHVyZS4gSWYgInBrZXkiIGlzIE5VTEwganVzdCBwZXJmb3JtIGEgbWVzc2FnZSBk aWdlc3QgY2hlY2suCi0rICovCi0rCi0raW50IGZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChFVlBf UEtFWSAqcGtleSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIgKnRicywgaW50IHRic2xlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHVuc2lnbmVkIGNoYXIgKmthdCwgdW5zaWduZWQgaW50IGthdGxlbiwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IEVWUF9NRCAqZGlnZXN0LCB1bnNpZ25lZCBpbnQgbWRf ZmxhZ3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmYWlsX3N0 cikKLSt7Ci0rICAgIGludCByZXQgPSAwOwotKyAgICB1bnNpZ25lZCBjaGFyIHNpZ3RtcFsyNTZd LCAqc2lnID0gc2lndG1wOwotKyAgICB1bnNpZ25lZCBpbnQgc2lnbGVuOwotKyAgICBFVlBfTURf Q1RYIG1jdHg7Ci0rICAgIEVWUF9NRF9DVFhfaW5pdCgmbWN0eCk7Ci0rCi0rICAgIGlmIChkaWdl c3QgPT0gTlVMTCkKLSsgICAgICAgIGRpZ2VzdCA9IEVWUF9zaGEyNTYoKTsKLSsKLSsgICAgaWYg KChwa2V5LT50eXBlID09IEVWUF9QS0VZX1JTQSkKLSsgICAgICAgICYmIChSU0Ffc2l6ZShwa2V5 LT5wa2V5LnJzYSkgPiBzaXplb2Yoc2lndG1wKSkpIHsKLSsgICAgICAgIHNpZyA9IE9QRU5TU0xf bWFsbG9jKFJTQV9zaXplKHBrZXktPnBrZXkucnNhKSk7Ci0rICAgICAgICBpZiAoIXNpZykgewot KyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfUEtFWV9TSUdOQVRVUkVfVEVTVCwgRVJS X1JfTUFMTE9DX0ZBSUxVUkUpOwotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgfQot KyAgICB9Ci0rCi0rICAgIGlmICh0YnNsZW4gPT0gLTEpCi0rICAgICAgICB0YnNsZW4gPSBzdHJs ZW4oKGNoYXIgKil0YnMpOwotKwotKyAgICBpZiAobWRfZmxhZ3MpCi0rICAgICAgICBFVlBfTURf Q1RYX3NldF9mbGFncygmbWN0eCwgbWRfZmxhZ3MpOwotKwotKyAgICBpZiAoIUVWUF9TaWduSW5p dF9leCgmbWN0eCwgZGlnZXN0LCBOVUxMKSkKLSsgICAgICAgIGdvdG8gZXJyb3I7Ci0rICAgIGlm ICghRVZQX1NpZ25VcGRhdGUoJm1jdHgsIHRicywgdGJzbGVuKSkKLSsgICAgICAgIGdvdG8gZXJy b3I7Ci0rICAgIGlmICghRVZQX1NpZ25GaW5hbCgmbWN0eCwgc2lnLCAmc2lnbGVuLCBwa2V5KSkK LSsgICAgICAgIGdvdG8gZXJyb3I7Ci0rCi0rICAgIGlmIChrYXQgJiYgKChzaWdsZW4gIT0ga2F0 bGVuKSB8fCBtZW1jbXAoa2F0LCBzaWcsIGthdGxlbikpKQotKyAgICAgICAgZ290byBlcnJvcjsK LSsKLSsgICAgaWYgKCFFVlBfVmVyaWZ5SW5pdF9leCgmbWN0eCwgZGlnZXN0LCBOVUxMKSkKLSsg ICAgICAgIGdvdG8gZXJyb3I7Ci0rICAgIGlmICghRVZQX1ZlcmlmeVVwZGF0ZSgmbWN0eCwgdGJz LCB0YnNsZW4pKQotKyAgICAgICAgZ290byBlcnJvcjsKLSsgICAgcmV0ID0gRVZQX1ZlcmlmeUZp bmFsKCZtY3R4LCBzaWcsIHNpZ2xlbiwgcGtleSk7Ci0rCi0rIGVycm9yOgotKyAgICBpZiAoc2ln ICE9IHNpZ3RtcCkKLSsgICAgICAgIE9QRU5TU0xfZnJlZShzaWcpOwotKyAgICBFVlBfTURfQ1RY X2NsZWFudXAoJm1jdHgpOwotKyAgICBpZiAocmV0ICE9IDEpIHsKLSsgICAgICAgIEZJUFNlcnIo RklQU19GX0ZJUFNfUEtFWV9TSUdOQVRVUkVfVEVTVCwgRklQU19SX1RFU1RfRkFJTFVSRSk7Ci0r ICAgICAgICBpZiAoZmFpbF9zdHIpCi0rICAgICAgICAgICAgRVJSX2FkZF9lcnJvcl9kYXRhKDIs ICJUeXBlPSIsIGZhaWxfc3RyKTsKLSsgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rICAgIHJl dHVybiAxOwotK30KLSsKLSsvKiBHZW5lcmFsaXplZCBzeW1tZXRyaWMgY2lwaGVyIHRlc3Qgcm91 dGluZS4gRW5jcnlwdCBkYXRhLCB2ZXJpZnkgcmVzdWx0Ci0rICogYWdhaW5zdCBrbm93biBhbnN3 ZXIsIGRlY3J5cHQgYW5kIGNvbXBhcmUgd2l0aCBvcmlnaW5hbCBwbGFpbnRleHQuCi0rICovCi0r Ci0raW50IGZpcHNfY2lwaGVyX3Rlc3QoRVZQX0NJUEhFUl9DVFggKmN0eCwgY29uc3QgRVZQX0NJ UEhFUiAqY2lwaGVyLAotKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg KmtleSwKLSsgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppdiwKLSsg ICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwbGFpbnRleHQsCi0rICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY2lwaGVydGV4dCwgaW50IGxl bikKLSt7Ci0rICAgIHVuc2lnbmVkIGNoYXIgcGx0bXBbRklQU19NQVhfQ0lQSEVSX1RFU1RfU0la RV07Ci0rICAgIHVuc2lnbmVkIGNoYXIgY2l0bXBbRklQU19NQVhfQ0lQSEVSX1RFU1RfU0laRV07 Ci0rCi0rICAgIE9QRU5TU0xfYXNzZXJ0KGxlbiA8PSBGSVBTX01BWF9DSVBIRVJfVEVTVF9TSVpF KTsKLSsgICAgbWVtc2V0KHBsdG1wLCAwLCBGSVBTX01BWF9DSVBIRVJfVEVTVF9TSVpFKTsKLSsg ICAgbWVtc2V0KGNpdG1wLCAwLCBGSVBTX01BWF9DSVBIRVJfVEVTVF9TSVpFKTsKLSsKLSsgICAg aWYgKEVWUF9DaXBoZXJJbml0X2V4KGN0eCwgY2lwaGVyLCBOVUxMLCBrZXksIGl2LCAxKSA8PSAw KQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIGlmIChFVlBfQ2lwaGVyKGN0eCwgY2l0bXAsIHBs YWludGV4dCwgbGVuKSA8PSAwKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIGlmIChtZW1jbXAo Y2l0bXAsIGNpcGhlcnRleHQsIGxlbikpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYgKEVW UF9DaXBoZXJJbml0X2V4KGN0eCwgY2lwaGVyLCBOVUxMLCBrZXksIGl2LCAwKSA8PSAwKQotKyAg ICAgICAgcmV0dXJuIDA7Ci0rICAgIGlmIChFVlBfQ2lwaGVyKGN0eCwgcGx0bXAsIGNpdG1wLCBs ZW4pIDw9IDApCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYgKG1lbWNtcChwbHRtcCwgcGxh aW50ZXh0LCBsZW4pKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIHJldHVybiAxOwotK30KLSsj ZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfcmFuZC5jLmZp cHMgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19yYW5kLmMKLS0tLSBvcGVuc3NsLTEu MC4yaS9jcnlwdG8vZmlwcy9maXBzX3JhbmQuYy5maXBzCTIwMTYtMDktMjIgMTM6MzU6NTcuMDE4 MjIxMDIwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19yYW5kLmMJ MjAxNi0wOS0yMiAxMzozNTo1Ny4wMTgyMjEwMjAgKzAyMDAKLUBAIC0wLDAgKzEsNDI4IEBACi0r LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMDcgVGhlIE9wZW5TU0wgUHJvamVj dC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmlj YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotKyAqCi0r ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh Ym92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBh bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0rICogICAgZGlzdHJpYnV0 aW9uLgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZl YXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBm b2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBz b2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2Ug aW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgot KyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIg bXVzdCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk ZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0rICogICAgcHJpb3Igd3JpdHRlbiBw ZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAotKyAqICAg IG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KLSsgKgotKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQg ZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgotKyAqICAgIG5v ciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0 ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCi0rICoKLSsgKiA2 LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUg Zm9sbG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBp bmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAg IGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8p IgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9K RUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElF UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKyAqIElNUExJRUQgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKyAq IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQ Uk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs IElORElSRUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9D VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotKyAqIExPU1MgT0YgVVNF LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0rICogSE9XRVZF UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS QUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF IE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICogT0YgVEhFIFBPU1NJQklMSVRZIE9G IFNVQ0ggREFNQUdFLgotKyAqCi0rICovCi0rCi0rLyoKLSsgKiBUaGlzIGlzIGEgRklQUyBhcHBy b3ZlZCBBRVMgUFJORyBiYXNlZCBvbiBBTlNJIFg5LjMxIEEuMi40LgotKyAqLwotKyNpbmNsdWRl IDxvcGVuc3NsL2NyeXB0by5oPgotKyNpbmNsdWRlICJlX29zLmgiCi0rCi0rLyogSWYgd2UgZG9u J3QgZGVmaW5lIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQsIHN0cnVjdCB0aW1ldmFsIHdvbid0Ci0r ICAgYmUgZGVmaW5lZCBhbmQgZ2V0dGltZW9mZGF5KCkgd29uJ3QgYmUgZGVjbGFyZWQgd2l0aCBz dHJpY3QgY29tcGlsZXJzCi0rICAgbGlrZSBERUMgQyBpbiBBTlNJIEMgbW9kZS4gICovCi0rI2lm bmRlZiBfWE9QRU5fU09VUkNFX0VYVEVOREVECi0rIyBkZWZpbmUgX1hPUEVOX1NPVVJDRV9FWFRF TkRFRCAxCi0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgotKyNpbmNsdWRl IDxvcGVuc3NsL2Flcy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRlIDxv cGVuc3NsL2ZpcHNfcmFuZC5oPgotKyNpZiAhKGRlZmluZWQoT1BFTlNTTF9TWVNfV0lOMzIpIHx8 IGRlZmluZWQoT1BFTlNTTF9TWVNfVlhXT1JLUykpCi0rIyBpbmNsdWRlIDxzeXMvdGltZS5oPgot KyNlbmRpZgotKyNpZiBkZWZpbmVkKE9QRU5TU0xfU1lTX1ZYV09SS1MpCi0rIyBpbmNsdWRlIDx0 aW1lLmg+Ci0rI2VuZGlmCi0rI2luY2x1ZGUgPGFzc2VydC5oPgotKyNpZm5kZWYgT1BFTlNTTF9T WVNfV0lOMzIKLSsjIGlmZGVmIE9QRU5TU0xfVU5JU1RECi0rIyAgaW5jbHVkZSBPUEVOU1NMX1VO SVNURAotKyMgZWxzZQotKyMgIGluY2x1ZGUgPHVuaXN0ZC5oPgotKyMgZW5kaWYKLSsjZW5kaWYK LSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyNpbmNs dWRlICJmaXBzX2xvY2wuaCIKLSsKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCi0rdm9pZCAqT1BF TlNTTF9zdGRlcnIodm9pZCk7Ci0rCi0rIyBkZWZpbmUgQUVTX0JMT0NLX0xFTkdUSCAgICAgICAg MTYKLSsKLSsvKiBBRVMgRklQUyBQUk5HIGltcGxlbWVudGF0aW9uICovCi0rCi0rdHlwZWRlZiBz dHJ1Y3QgewotKyAgICBpbnQgc2VlZGVkOwotKyAgICBpbnQga2V5ZWQ7Ci0rICAgIGludCB0ZXN0 X21vZGU7Ci0rICAgIGludCBzZWNvbmQ7Ci0rICAgIGludCBlcnJvcjsKLSsgICAgdW5zaWduZWQg bG9uZyBjb3VudGVyOwotKyAgICBBRVNfS0VZIGtzOwotKyAgICBpbnQgdnBvczsKLSsgICAgLyog VGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIGtleSBpZiBpdCBlcXVhbHMgc2VlZCBsZW5ndGggKi8KLSsg ICAgdW5zaWduZWQgY2hhciB0bXBfa2V5W0FFU19CTE9DS19MRU5HVEhdOwotKyAgICB1bnNpZ25l ZCBjaGFyIFZbQUVTX0JMT0NLX0xFTkdUSF07Ci0rICAgIHVuc2lnbmVkIGNoYXIgRFRbQUVTX0JM T0NLX0xFTkdUSF07Ci0rICAgIHVuc2lnbmVkIGNoYXIgbGFzdFtBRVNfQkxPQ0tfTEVOR1RIXTsK LSt9IEZJUFNfUFJOR19DVFg7Ci0rCi0rc3RhdGljIEZJUFNfUFJOR19DVFggc2N0eDsKLSsKLStz dGF0aWMgaW50IGZpcHNfcHJuZ19mYWlsID0gMDsKLSsKLSt2b2lkIEZJUFNfeDkzMV9zdGljayhp bnQgb25vZmYpCi0rewotKyAgICBmaXBzX3BybmdfZmFpbCA9IG9ub2ZmOwotK30KLSsKLSt2b2lk IEZJUFNfcm5nX3N0aWNrKHZvaWQpCi0rewotKyAgICBGSVBTX3g5MzFfc3RpY2soMSk7Ci0rfQot KwotK3N0YXRpYyB2b2lkIGZpcHNfcmFuZF9wcm5nX3Jlc2V0KEZJUFNfUFJOR19DVFggKiBjdHgp Ci0rewotKyAgICBjdHgtPnNlZWRlZCA9IDA7Ci0rICAgIGN0eC0+a2V5ZWQgPSAwOwotKyAgICBj dHgtPnRlc3RfbW9kZSA9IDA7Ci0rICAgIGN0eC0+Y291bnRlciA9IDA7Ci0rICAgIGN0eC0+c2Vj b25kID0gMDsKLSsgICAgY3R4LT5lcnJvciA9IDA7Ci0rICAgIGN0eC0+dnBvcyA9IDA7Ci0rICAg IE9QRU5TU0xfY2xlYW5zZShjdHgtPlYsIEFFU19CTE9DS19MRU5HVEgpOwotKyAgICBPUEVOU1NM X2NsZWFuc2UoJmN0eC0+a3MsIHNpemVvZihBRVNfS0VZKSk7Ci0rfQotKwotK3N0YXRpYyBpbnQg Zmlwc19zZXRfcHJuZ19rZXkoRklQU19QUk5HX0NUWCAqIGN0eCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwgdW5zaWduZWQgaW50IGtleWxl bikKLSt7Ci0rICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7Ci0rICAgICAgICBGSVBT ZXJyKEZJUFNfRl9GSVBTX1NFVF9QUk5HX0tFWSwgRklQU19SX1NFTEZURVNUX0ZBSUxFRCk7Ci0r ICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKyAgICBpZiAoa2V5bGVuICE9IDE2ICYmIGtleWxl biAhPSAyNCAmJiBrZXlsZW4gIT0gMzIpIHsKLSsgICAgICAgIC8qIGVycm9yOiBpbnZhbGlkIGtl eSBzaXplICovCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKyAgICBBRVNfc2V0X2VuY3J5 cHRfa2V5KGtleSwga2V5bGVuIDw8IDMsICZjdHgtPmtzKTsKLSsgICAgaWYgKGtleWxlbiA9PSAx NikgewotKyAgICAgICAgbWVtY3B5KGN0eC0+dG1wX2tleSwga2V5LCAxNik7Ci0rICAgICAgICBj dHgtPmtleWVkID0gMjsKLSsgICAgfSBlbHNlCi0rICAgICAgICBjdHgtPmtleWVkID0gMTsKLSsg ICAgY3R4LT5zZWVkZWQgPSAwOwotKyAgICBjdHgtPnNlY29uZCA9IDA7Ci0rICAgIHJldHVybiAx OwotK30KLSsKLStzdGF0aWMgaW50IGZpcHNfc2V0X3Bybmdfc2VlZChGSVBTX1BSTkdfQ1RYICog Y3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg KnNlZWQsIHVuc2lnbmVkIGludCBzZWVkbGVuKQotK3sKLSsgICAgdW5zaWduZWQgaW50IGk7Ci0r ICAgIGlmICghY3R4LT5rZXllZCkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICAvKiBJbiB0ZXN0 IG1vZGUgc2VlZCBpcyBqdXN0IHN1cHBsaWVkIGRhdGEgKi8KLSsgICAgaWYgKGN0eC0+dGVzdF9t b2RlKSB7Ci0rICAgICAgICBpZiAoc2VlZGxlbiAhPSBBRVNfQkxPQ0tfTEVOR1RIKQotKyAgICAg ICAgICAgIHJldHVybiAwOwotKyAgICAgICAgbWVtY3B5KGN0eC0+Viwgc2VlZCwgQUVTX0JMT0NL X0xFTkdUSCk7Ci0rICAgICAgICBjdHgtPnNlZWRlZCA9IDE7Ci0rICAgICAgICByZXR1cm4gMTsK LSsgICAgfQotKyAgICAvKiBPdXRzaWRlIHRlc3QgbW9kZSBYT1Igc3VwcGxpZWQgZGF0YSB3aXRo IGV4aXN0aW5nIHNlZWQgKi8KLSsgICAgZm9yIChpID0gMDsgaSA8IHNlZWRsZW47IGkrKykgewot KyAgICAgICAgY3R4LT5WW2N0eC0+dnBvcysrXSBePSBzZWVkW2ldOwotKyAgICAgICAgaWYgKGN0 eC0+dnBvcyA9PSBBRVNfQkxPQ0tfTEVOR1RIKSB7Ci0rICAgICAgICAgICAgY3R4LT52cG9zID0g MDsKLSsgICAgICAgICAgICAvKiBTcGVjaWFsIGNhc2UgaWYgZmlyc3Qgc2VlZCBhbmQga2V5IGxl bmd0aCBlcXVhbHMKLSsgICAgICAgICAgICAgKiBibG9jayBzaXplIGNoZWNrIGtleSBhbmQgc2Vl ZCBkbyBub3QgbWF0Y2guCi0rICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgaWYgKGN0eC0+ a2V5ZWQgPT0gMikgewotKyAgICAgICAgICAgICAgICBpZiAoIW1lbWNtcChjdHgtPnRtcF9rZXks IGN0eC0+ViwgMTYpKSB7Ci0rICAgICAgICAgICAgICAgICAgICBSQU5EZXJyKFJBTkRfRl9GSVBT X1NFVF9QUk5HX1NFRUQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJBTkRfUl9QUk5H X1NFRURfTVVTVF9OT1RfTUFUQ0hfS0VZKTsKLSsgICAgICAgICAgICAgICAgICAgIHJldHVybiAw OwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIE9QRU5TU0xfY2xlYW5zZShj dHgtPnRtcF9rZXksIDE2KTsKLSsgICAgICAgICAgICAgICAgY3R4LT5rZXllZCA9IDE7Ci0rICAg ICAgICAgICAgfQotKyAgICAgICAgICAgIGN0eC0+c2VlZGVkID0gMTsKLSsgICAgICAgIH0KLSsg ICAgfQotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0rc3RhdGljIGludCBmaXBzX3NldF90ZXN0X21v ZGUoRklQU19QUk5HX0NUWCAqIGN0eCkKLSt7Ci0rICAgIGlmIChjdHgtPmtleWVkKSB7Ci0rICAg ICAgICBSQU5EZXJyKFJBTkRfRl9GSVBTX1NFVF9URVNUX01PREUsIFJBTkRfUl9QUk5HX0tFWUVE KTsKLSsgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rICAgIGN0eC0+dGVzdF9tb2RlID0gMTsK LSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK2ludCBGSVBTX3g5MzFfdGVzdF9tb2RlKHZvaWQpCi0r ewotKyAgICByZXR1cm4gZmlwc19zZXRfdGVzdF9tb2RlKCZzY3R4KTsKLSt9Ci0rCi0raW50IEZJ UFNfcmFuZF90ZXN0X21vZGUodm9pZCkKLSt7Ci0rICAgIHJldHVybiBmaXBzX3NldF90ZXN0X21v ZGUoJnNjdHgpOwotK30KLSsKLStpbnQgRklQU194OTMxX3NldF9kdCh1bnNpZ25lZCBjaGFyICpk dCkKLSt7Ci0rICAgIGlmICghc2N0eC50ZXN0X21vZGUpIHsKLSsgICAgICAgIFJBTkRlcnIoUkFO RF9GX0ZJUFNfWDkzMV9TRVRfRFQsIFJBTkRfUl9OT1RfSU5fVEVTVF9NT0RFKTsKLSsgICAgICAg IHJldHVybiAwOwotKyAgICB9Ci0rICAgIG1lbWNweShzY3R4LkRULCBkdCwgQUVTX0JMT0NLX0xF TkdUSCk7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLStpbnQgRklQU19yYW5kX3NldF9kdCh1bnNp Z25lZCBjaGFyICpkdCkKLSt7Ci0rICAgIGlmICghc2N0eC50ZXN0X21vZGUpIHsKLSsgICAgICAg IFJBTkRlcnIoUkFORF9GX0ZJUFNfUkFORF9TRVRfRFQsIFJBTkRfUl9OT1RfSU5fVEVTVF9NT0RF KTsKLSsgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rICAgIG1lbWNweShzY3R4LkRULCBkdCwg QUVTX0JMT0NLX0xFTkdUSCk7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLSt2b2lkIEZJUFNfZ2V0 X3RpbWV2ZWModW5zaWduZWQgY2hhciAqYnVmLCB1bnNpZ25lZCBsb25nICpwY3RyKQotK3sKLSsj IGlmZGVmIE9QRU5TU0xfU1lTX1dJTjMyCi0rICAgIEZJTEVUSU1FIGZ0OwotKyMgZWxpZiBkZWZp bmVkKE9QRU5TU0xfU1lTX1ZYV09SS1MpCi0rICAgIHN0cnVjdCB0aW1lc3BlYyB0czsKLSsjIGVs c2UKLSsgICAgc3RydWN0IHRpbWV2YWwgdHY7Ci0rIyBlbmRpZgotKwotKyMgaWZuZGVmIEdFVFBJ RF9JU19NRUFOSU5HTEVTUwotKyAgICB1bnNpZ25lZCBsb25nIHBpZDsKLSsjIGVuZGlmCi0rCi0r IyBpZmRlZiBPUEVOU1NMX1NZU19XSU4zMgotKyAgICBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgm ZnQpOwotKyAgICBidWZbMF0gPSAodW5zaWduZWQgY2hhcikoZnQuZHdIaWdoRGF0ZVRpbWUgJiAw eGZmKTsKLSsgICAgYnVmWzFdID0gKHVuc2lnbmVkIGNoYXIpKChmdC5kd0hpZ2hEYXRlVGltZSA+ PiA4KSAmIDB4ZmYpOwotKyAgICBidWZbMl0gPSAodW5zaWduZWQgY2hhcikoKGZ0LmR3SGlnaERh dGVUaW1lID4+IDE2KSAmIDB4ZmYpOwotKyAgICBidWZbM10gPSAodW5zaWduZWQgY2hhcikoKGZ0 LmR3SGlnaERhdGVUaW1lID4+IDI0KSAmIDB4ZmYpOwotKyAgICBidWZbNF0gPSAodW5zaWduZWQg Y2hhcikoZnQuZHdMb3dEYXRlVGltZSAmIDB4ZmYpOwotKyAgICBidWZbNV0gPSAodW5zaWduZWQg Y2hhcikoKGZ0LmR3TG93RGF0ZVRpbWUgPj4gOCkgJiAweGZmKTsKLSsgICAgYnVmWzZdID0gKHVu c2lnbmVkIGNoYXIpKChmdC5kd0xvd0RhdGVUaW1lID4+IDE2KSAmIDB4ZmYpOwotKyAgICBidWZb N10gPSAodW5zaWduZWQgY2hhcikoKGZ0LmR3TG93RGF0ZVRpbWUgPj4gMjQpICYgMHhmZik7Ci0r IyBlbGlmIGRlZmluZWQoT1BFTlNTTF9TWVNfVlhXT1JLUykKLSsgICAgY2xvY2tfZ2V0dGltZShD TE9DS19SRUFMVElNRSwgJnRzKTsKLSsgICAgYnVmWzBdID0gKHVuc2lnbmVkIGNoYXIpKHRzLnR2 X3NlYyAmIDB4ZmYpOwotKyAgICBidWZbMV0gPSAodW5zaWduZWQgY2hhcikoKHRzLnR2X3NlYyA+ PiA4KSAmIDB4ZmYpOwotKyAgICBidWZbMl0gPSAodW5zaWduZWQgY2hhcikoKHRzLnR2X3NlYyA+ PiAxNikgJiAweGZmKTsKLSsgICAgYnVmWzNdID0gKHVuc2lnbmVkIGNoYXIpKCh0cy50dl9zZWMg Pj4gMjQpICYgMHhmZik7Ci0rICAgIGJ1Zls0XSA9ICh1bnNpZ25lZCBjaGFyKSh0cy50dl9uc2Vj ICYgMHhmZik7Ci0rICAgIGJ1Zls1XSA9ICh1bnNpZ25lZCBjaGFyKSgodHMudHZfbnNlYyA+PiA4 KSAmIDB4ZmYpOwotKyAgICBidWZbNl0gPSAodW5zaWduZWQgY2hhcikoKHRzLnR2X25zZWMgPj4g MTYpICYgMHhmZik7Ci0rICAgIGJ1Zls3XSA9ICh1bnNpZ25lZCBjaGFyKSgodHMudHZfbnNlYyA+ PiAyNCkgJiAweGZmKTsKLSsjIGVsc2UKLSsgICAgZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7Ci0r ICAgIGJ1ZlswXSA9ICh1bnNpZ25lZCBjaGFyKSh0di50dl9zZWMgJiAweGZmKTsKLSsgICAgYnVm WzFdID0gKHVuc2lnbmVkIGNoYXIpKCh0di50dl9zZWMgPj4gOCkgJiAweGZmKTsKLSsgICAgYnVm WzJdID0gKHVuc2lnbmVkIGNoYXIpKCh0di50dl9zZWMgPj4gMTYpICYgMHhmZik7Ci0rICAgIGJ1 ZlszXSA9ICh1bnNpZ25lZCBjaGFyKSgodHYudHZfc2VjID4+IDI0KSAmIDB4ZmYpOwotKyAgICBi dWZbNF0gPSAodW5zaWduZWQgY2hhcikodHYudHZfdXNlYyAmIDB4ZmYpOwotKyAgICBidWZbNV0g PSAodW5zaWduZWQgY2hhcikoKHR2LnR2X3VzZWMgPj4gOCkgJiAweGZmKTsKLSsgICAgYnVmWzZd ID0gKHVuc2lnbmVkIGNoYXIpKCh0di50dl91c2VjID4+IDE2KSAmIDB4ZmYpOwotKyAgICBidWZb N10gPSAodW5zaWduZWQgY2hhcikoKHR2LnR2X3VzZWMgPj4gMjQpICYgMHhmZik7Ci0rIyBlbmRp ZgotKyAgICBidWZbOF0gPSAodW5zaWduZWQgY2hhcikoKnBjdHIgJiAweGZmKTsKLSsgICAgYnVm WzldID0gKHVuc2lnbmVkIGNoYXIpKCgqcGN0ciA+PiA4KSAmIDB4ZmYpOwotKyAgICBidWZbMTBd ID0gKHVuc2lnbmVkIGNoYXIpKCgqcGN0ciA+PiAxNikgJiAweGZmKTsKLSsgICAgYnVmWzExXSA9 ICh1bnNpZ25lZCBjaGFyKSgoKnBjdHIgPj4gMjQpICYgMHhmZik7Ci0rCi0rICAgICgqcGN0cikr KzsKLSsKLSsjIGlmbmRlZiBHRVRQSURfSVNfTUVBTklOR0xFU1MKLSsgICAgcGlkID0gKHVuc2ln bmVkIGxvbmcpZ2V0cGlkKCk7Ci0rICAgIGJ1ZlsxMl0gPSAodW5zaWduZWQgY2hhcikocGlkICYg MHhmZik7Ci0rICAgIGJ1ZlsxM10gPSAodW5zaWduZWQgY2hhcikoKHBpZCA+PiA4KSAmIDB4ZmYp OwotKyAgICBidWZbMTRdID0gKHVuc2lnbmVkIGNoYXIpKChwaWQgPj4gMTYpICYgMHhmZik7Ci0r ICAgIGJ1ZlsxNV0gPSAodW5zaWduZWQgY2hhcikoKHBpZCA+PiAyNCkgJiAweGZmKTsKLSsjIGVu ZGlmCi0rfQotKwotK3N0YXRpYyBpbnQgZmlwc19yYW5kKEZJUFNfUFJOR19DVFggKiBjdHgsCi0r ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LCB1bnNpZ25lZCBpbnQgb3V0 bGVuKQotK3sKLSsgICAgdW5zaWduZWQgY2hhciBSW0FFU19CTE9DS19MRU5HVEhdLCBJW0FFU19C TE9DS19MRU5HVEhdOwotKyAgICB1bnNpZ25lZCBjaGFyIHRtcFtBRVNfQkxPQ0tfTEVOR1RIXTsK LSsgICAgaW50IGk7Ci0rICAgIGlmIChjdHgtPmVycm9yKSB7Ci0rICAgICAgICBSQU5EZXJyKFJB TkRfRl9GSVBTX1JBTkQsIFJBTkRfUl9QUk5HX0VSUk9SKTsKLSsgICAgICAgIHJldHVybiAwOwot KyAgICB9Ci0rICAgIGlmICghY3R4LT5rZXllZCkgewotKyAgICAgICAgUkFORGVycihSQU5EX0Zf RklQU19SQU5ELCBSQU5EX1JfTk9fS0VZX1NFVCk7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAg fQotKyAgICBpZiAoIWN0eC0+c2VlZGVkKSB7Ci0rICAgICAgICBSQU5EZXJyKFJBTkRfRl9GSVBT X1JBTkQsIFJBTkRfUl9QUk5HX05PVF9TRUVERUQpOwotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAg IH0KLSsgICAgZm9yICg7OykgewotKyAgICAgICAgaWYgKCFjdHgtPnRlc3RfbW9kZSkKLSsgICAg ICAgICAgICBGSVBTX2dldF90aW1ldmVjKGN0eC0+RFQsICZjdHgtPmNvdW50ZXIpOwotKyAgICAg ICAgQUVTX2VuY3J5cHQoY3R4LT5EVCwgSSwgJmN0eC0+a3MpOwotKyAgICAgICAgZm9yIChpID0g MDsgaSA8IEFFU19CTE9DS19MRU5HVEg7IGkrKykKLSsgICAgICAgICAgICB0bXBbaV0gPSBJW2ld IF4gY3R4LT5WW2ldOwotKyAgICAgICAgQUVTX2VuY3J5cHQodG1wLCBSLCAmY3R4LT5rcyk7Ci0r ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgQUVTX0JMT0NLX0xFTkdUSDsgaSsrKQotKyAgICAgICAg ICAgIHRtcFtpXSA9IFJbaV0gXiBJW2ldOwotKyAgICAgICAgQUVTX2VuY3J5cHQodG1wLCBjdHgt PlYsICZjdHgtPmtzKTsKLSsgICAgICAgIC8qIENvbnRpbnVvdXMgUFJORyB0ZXN0ICovCi0rICAg ICAgICBpZiAoY3R4LT5zZWNvbmQpIHsKLSsgICAgICAgICAgICBpZiAoZmlwc19wcm5nX2ZhaWwp Ci0rICAgICAgICAgICAgICAgIG1lbWNweShjdHgtPmxhc3QsIFIsIEFFU19CTE9DS19MRU5HVEgp OwotKyAgICAgICAgICAgIGlmICghbWVtY21wKFIsIGN0eC0+bGFzdCwgQUVTX0JMT0NLX0xFTkdU SCkpIHsKLSsgICAgICAgICAgICAgICAgUkFORGVycihSQU5EX0ZfRklQU19SQU5ELCBSQU5EX1Jf UFJOR19TVFVDSyk7Ci0rICAgICAgICAgICAgICAgIGN0eC0+ZXJyb3IgPSAxOwotKyAgICAgICAg ICAgICAgICBmaXBzX3NldF9zZWxmdGVzdF9mYWlsKCk7Ci0rICAgICAgICAgICAgICAgIHJldHVy biAwOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgICAgIG1lbWNweShjdHgtPmxh c3QsIFIsIEFFU19CTE9DS19MRU5HVEgpOwotKyAgICAgICAgaWYgKCFjdHgtPnNlY29uZCkgewot KyAgICAgICAgICAgIGN0eC0+c2Vjb25kID0gMTsKLSsgICAgICAgICAgICBpZiAoIWN0eC0+dGVz dF9tb2RlKQotKyAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgIH0KLSsKLSsgICAg ICAgIGlmIChvdXRsZW4gPD0gQUVTX0JMT0NLX0xFTkdUSCkgewotKyAgICAgICAgICAgIG1lbWNw eShvdXQsIFIsIG91dGxlbik7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rCi0r ICAgICAgICBtZW1jcHkob3V0LCBSLCBBRVNfQkxPQ0tfTEVOR1RIKTsKLSsgICAgICAgIG91dCAr PSBBRVNfQkxPQ0tfTEVOR1RIOwotKyAgICAgICAgb3V0bGVuIC09IEFFU19CTE9DS19MRU5HVEg7 Ci0rICAgIH0KLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK2ludCBGSVBTX3g5MzFfc2V0X2tleShj b25zdCB1bnNpZ25lZCBjaGFyICprZXksIGludCBrZXlsZW4pCi0rewotKyAgICBpbnQgcmV0Owot KyAgICBDUllQVE9fd19sb2NrKENSWVBUT19MT0NLX1JBTkQpOwotKyAgICByZXQgPSBmaXBzX3Nl dF9wcm5nX2tleSgmc2N0eCwga2V5LCBrZXlsZW4pOwotKyAgICBDUllQVE9fd191bmxvY2soQ1JZ UFRPX0xPQ0tfUkFORCk7Ci0rICAgIHJldHVybiByZXQ7Ci0rfQotKwotK2ludCBGSVBTX3JhbmRf c2V0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICprZXksIEZJUFNfUkFORF9TSVpFX1Qga2V5bGVu KQotK3sKLSsgICAgcmV0dXJuIEZJUFNfeDkzMV9zZXRfa2V5KGtleSwga2V5bGVuKTsKLSt9Ci0r Ci0raW50IEZJUFNfeDkzMV9zZWVkKGNvbnN0IHZvaWQgKnNlZWQsIGludCBzZWVkbGVuKQotK3sK LSsgICAgaW50IHJldDsKLSsgICAgQ1JZUFRPX3dfbG9jayhDUllQVE9fTE9DS19SQU5EKTsKLSsg ICAgcmV0ID0gZmlwc19zZXRfcHJuZ19zZWVkKCZzY3R4LCBzZWVkLCBzZWVkbGVuKTsKLSsgICAg Q1JZUFRPX3dfdW5sb2NrKENSWVBUT19MT0NLX1JBTkQpOwotKyAgICByZXR1cm4gcmV0OwotK30K LSsKLStpbnQgRklQU194OTMxX2J5dGVzKHVuc2lnbmVkIGNoYXIgKm91dCwgaW50IGNvdW50KQot K3sKLSsgICAgaW50IHJldDsKLSsgICAgQ1JZUFRPX3dfbG9jayhDUllQVE9fTE9DS19SQU5EKTsK LSsgICAgcmV0ID0gZmlwc19yYW5kKCZzY3R4LCBvdXQsIGNvdW50KTsKLSsgICAgQ1JZUFRPX3df dW5sb2NrKENSWVBUT19MT0NLX1JBTkQpOwotKyAgICByZXR1cm4gcmV0OwotK30KLSsKLStpbnQg RklQU194OTMxX3N0YXR1cyh2b2lkKQotK3sKLSsgICAgaW50IHJldDsKLSsgICAgQ1JZUFRPX3Jf bG9jayhDUllQVE9fTE9DS19SQU5EKTsKLSsgICAgcmV0ID0gc2N0eC5zZWVkZWQ7Ci0rICAgIENS WVBUT19yX3VubG9jayhDUllQVE9fTE9DS19SQU5EKTsKLSsgICAgcmV0dXJuIHJldDsKLSt9Ci0r Ci0rdm9pZCBGSVBTX3g5MzFfcmVzZXQodm9pZCkKLSt7Ci0rICAgIENSWVBUT193X2xvY2soQ1JZ UFRPX0xPQ0tfUkFORCk7Ci0rICAgIGZpcHNfcmFuZF9wcm5nX3Jlc2V0KCZzY3R4KTsKLSsgICAg Q1JZUFRPX3dfdW5sb2NrKENSWVBUT19MT0NLX1JBTkQpOwotK30KLSsKLStzdGF0aWMgaW50IGZp cHNfZG9fcmFuZF9zZWVkKGNvbnN0IHZvaWQgKnNlZWQsIGludCBzZWVkbGVuKQotK3sKLSsgICAg RklQU194OTMxX3NlZWQoc2VlZCwgc2VlZGxlbik7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLStz dGF0aWMgaW50IGZpcHNfZG9fcmFuZF9hZGQoY29uc3Qgdm9pZCAqc2VlZCwgaW50IHNlZWRsZW4s IGRvdWJsZSBhZGRfZW50cm9weSkKLSt7Ci0rICAgIEZJUFNfeDkzMV9zZWVkKHNlZWQsIHNlZWRs ZW4pOwotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IFJBTkRfTUVUSE9EIHJh bmRfeDkzMV9tZXRoID0gewotKyAgICBmaXBzX2RvX3JhbmRfc2VlZCwKLSsgICAgRklQU194OTMx X2J5dGVzLAotKyAgICBGSVBTX3g5MzFfcmVzZXQsCi0rICAgIGZpcHNfZG9fcmFuZF9hZGQsCi0r ICAgIEZJUFNfeDkzMV9ieXRlcywKLSsgICAgRklQU194OTMxX3N0YXR1cwotK307Ci0rCi0rY29u c3QgUkFORF9NRVRIT0QgKkZJUFNfeDkzMV9tZXRob2Qodm9pZCkKLSt7Ci0rICAgIHJldHVybiAm cmFuZF94OTMxX21ldGg7Ci0rfQotKwotKyNlbmRpZgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkv Y3J5cHRvL2ZpcHMvZmlwc19yYW5kLmguZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9m aXBzX3JhbmQuaAotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfcmFuZC5oLmZp cHMJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMTgyMjEwMjAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4y aS9jcnlwdG8vZmlwcy9maXBzX3JhbmQuaAkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxODIyMTAyMCAr MDIwMAotQEAgLTAsMCArMSwxNjMgQEAKLSsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAo YykgMjAwMyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgot KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp dGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0 aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBS ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly aWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5 IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwg dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgot KyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg d2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNp bmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBz b2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAg ICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNT TCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDov L3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xr aXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5k b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv dXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Np b24sIHBsZWFzZSBjb250YWN0Ci0rICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgotKyAq Ci0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBj YWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWly IG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9w ZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3 aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVu dDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0 aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0 IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBS T1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBS RVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU TywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P IEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JT IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BF Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU Ci0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig U0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT IElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1Ig VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4g QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQK LSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICoKLSsgKi8KLSsKLSsj aWZuZGVmIEhFQURFUl9GSVBTX1JBTkRfSAotKyMgZGVmaW5lIEhFQURFUl9GSVBTX1JBTkRfSAot KwotKyMgaW5jbHVkZSA8b3BlbnNzbC9hZXMuaD4KLSsjIGluY2x1ZGUgPG9wZW5zc2wvZXZwLmg+ Ci0rIyBpbmNsdWRlIDxvcGVuc3NsL2htYWMuaD4KLSsjIGluY2x1ZGUgPG9wZW5zc2wvcmFuZC5o PgotKwotKyMgaWZkZWYgT1BFTlNTTF9GSVBTCi0rCi0rIyAgaWZkZWYgIF9fY3BsdXNwbHVzCi0r ZXh0ZXJuICJDIiB7Ci0rIyAgZW5kaWYKLSsKLSsgICAgaW50IEZJUFNfeDkzMV9zZXRfa2V5KGNv bnN0IHVuc2lnbmVkIGNoYXIgKmtleSwgaW50IGtleWxlbik7Ci0rICAgIGludCBGSVBTX3g5MzFf c2VlZChjb25zdCB2b2lkICpidWYsIGludCBudW0pOwotKyAgICBpbnQgRklQU194OTMxX2J5dGVz KHVuc2lnbmVkIGNoYXIgKm91dCwgaW50IG91dGxlbik7Ci0rCi0rICAgIGludCBGSVBTX3g5MzFf dGVzdF9tb2RlKHZvaWQpOwotKyAgICB2b2lkIEZJUFNfeDkzMV9yZXNldCh2b2lkKTsKLSsgICAg aW50IEZJUFNfeDkzMV9zZXRfZHQodW5zaWduZWQgY2hhciAqZHQpOwotKwotKyAgICBpbnQgRklQ U194OTMxX3N0YXR1cyh2b2lkKTsKLSsKLSsgICAgY29uc3QgUkFORF9NRVRIT0QgKkZJUFNfeDkz MV9tZXRob2Qodm9pZCk7Ci0rCi0rICAgIHR5cGVkZWYgc3RydWN0IGRyYmdfY3R4X3N0IERSQkdf Q1RYOwotKy8qIERSQkcgZXh0ZXJuYWwgZmxhZ3MgKi8KLSsvKiBGbGFnIGZvciBDVFIgbW9kZSBv bmx5OiB1c2UgZGVyaXZhdGlvbiBmdW5jdGlvbiBjdHJfZGYgKi8KLSsjICBkZWZpbmUgRFJCR19G TEFHX0NUUl9VU0VfREYgICAgICAgICAgICAweDEKLSsvKiBQUk5HIGlzIGluIHRlc3Qgc3RhdGUg Ki8KLSsjICBkZWZpbmUgRFJCR19GTEFHX1RFU1QgICAgICAgICAgICAgICAgICAweDIKLSsKLSsg ICAgRFJCR19DVFggKkZJUFNfZHJiZ19uZXcoaW50IHR5cGUsIHVuc2lnbmVkIGludCBmbGFncyk7 Ci0rICAgIGludCBGSVBTX2RyYmdfaW5pdChEUkJHX0NUWCAqZGN0eCwgaW50IHR5cGUsIHVuc2ln bmVkIGludCBmbGFncyk7Ci0rICAgIGludCBGSVBTX2RyYmdfaW5zdGFudGlhdGUoRFJCR19DVFgg KmRjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hh ciAqcGVycywgc2l6ZV90IHBlcnNsZW4pOwotKyAgICBpbnQgRklQU19kcmJnX3Jlc2VlZChEUkJH X0NUWCAqZGN0eCwgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZV90IGFkaW5sZW4pOwotKyAgICBpbnQgRklQU19kcmJnX2dlbmVyYXRlKERS QkdfQ1RYICpkY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4sCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IHByZWRpY3Rpb25fcmVzaXN0YW5jZSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGluLCBzaXplX3QgYWRp bmxlbik7Ci0rCi0rICAgIGludCBGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0 eCk7Ci0rICAgIHZvaWQgRklQU19kcmJnX2ZyZWUoRFJCR19DVFggKmRjdHgpOwotKwotKyAgICBp bnQgRklQU19kcmJnX3NldF9jYWxsYmFja3MoRFJCR19DVFggKmRjdHgsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplX3QgKCpnZXRfZW50cm9weSkgKERSQkdfQ1RYICpjdHgs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGNoYXIgKipwb3V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW50cm9weSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1pbl9sZW4sCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf dCBtYXhfbGVuKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpjbGVh bnVwX2VudHJvcHkpIChEUkJHX0NUWCAqY3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl X3Qgb2xlbiksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZW50cm9w eV9ibG9ja2xlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAoKmdl dF9ub25jZSkgKERSQkdfQ1RYICpjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqcG91dCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlbnRyb3B5LAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZV90IG1pbl9sZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaXplX3QgbWF4X2xlbiksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2b2lkICgqY2xlYW51cF9ub25jZSkgKERSQkdfQ1RYICpjdHgsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg Km91dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZV90IG9sZW4pKTsKLSsKLSsgICAgaW50IEZJUFNfZHJiZ19zZXRfcmFuZF9jYWxs YmFja3MoRFJCR19DVFggKmRjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVfdCAoKmdldF9hZGluKSAoRFJCR19DVFggKmN0eCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Kipwb3V0KSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmNs ZWFudXBfYWRpbikgKERSQkdfQ1RYICpjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXQsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aXplX3Qgb2xlbiksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAo KnJhbmRfc2VlZF9jYikgKERSQkdfQ1RYICpjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJ1ZiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IG51bSksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKnJhbmRf YWRkX2NiKSAoRFJCR19DVFggKmN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpidWYsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk b3VibGUgZW50cm9weSkpOwotKwotKyAgICB2b2lkICpGSVBTX2RyYmdfZ2V0X2FwcF9kYXRhKERS QkdfQ1RYICpjdHgpOwotKyAgICB2b2lkIEZJUFNfZHJiZ19zZXRfYXBwX2RhdGEoRFJCR19DVFgg KmN0eCwgdm9pZCAqYXBwX2RhdGEpOwotKyAgICBzaXplX3QgRklQU19kcmJnX2dldF9ibG9ja2xl bmd0aChEUkJHX0NUWCAqZGN0eCk7Ci0rICAgIGludCBGSVBTX2RyYmdfZ2V0X3N0cmVuZ3RoKERS QkdfQ1RYICpkY3R4KTsKLSsgICAgdm9pZCBGSVBTX2RyYmdfc2V0X2NoZWNrX2ludGVydmFsKERS QkdfQ1RYICpkY3R4LCBpbnQgaW50ZXJ2YWwpOwotKyAgICB2b2lkIEZJUFNfZHJiZ19zZXRfcmVz ZWVkX2ludGVydmFsKERSQkdfQ1RYICpkY3R4LCBpbnQgaW50ZXJ2YWwpOwotKwotKyAgICBpbnQg RklQU19kcmJnX2hlYWx0aF9jaGVjayhEUkJHX0NUWCAqZGN0eCk7Ci0rCi0rICAgIERSQkdfQ1RY ICpGSVBTX2dldF9kZWZhdWx0X2RyYmcodm9pZCk7Ci0rICAgIGNvbnN0IFJBTkRfTUVUSE9EICpG SVBTX2RyYmdfbWV0aG9kKHZvaWQpOwotKwotKyAgICBpbnQgRklQU19yYW5kX3NldF9tZXRob2Qo Y29uc3QgUkFORF9NRVRIT0QgKm1ldGgpOwotKyAgICBjb25zdCBSQU5EX01FVEhPRCAqRklQU19y YW5kX2dldF9tZXRob2Qodm9pZCk7Ci0rCi0rICAgIHZvaWQgRklQU19yYW5kX3NldF9iaXRzKGlu dCBuYml0cyk7Ci0rCi0rICAgIGludCBGSVBTX3JhbmRfc3RyZW5ndGgodm9pZCk7Ci0rCi0rLyog MS4wLjAgY29tcGF0IGZ1bmN0aW9ucyAqLwotKyAgICBpbnQgRklQU19yYW5kX3NldF9rZXkoY29u c3QgdW5zaWduZWQgY2hhciAqa2V5LCBGSVBTX1JBTkRfU0laRV9UIGtleWxlbik7Ci0rICAgIGlu dCBGSVBTX3JhbmRfc2VlZChjb25zdCB2b2lkICpidWYsIEZJUFNfUkFORF9TSVpFX1QgbnVtKTsK LSsgICAgaW50IEZJUFNfcmFuZF9ieXRlcyh1bnNpZ25lZCBjaGFyICpvdXQsIEZJUFNfUkFORF9T SVpFX1Qgb3V0bGVuKTsKLSsgICAgaW50IEZJUFNfcmFuZF90ZXN0X21vZGUodm9pZCk7Ci0rICAg IHZvaWQgRklQU19yYW5kX3Jlc2V0KHZvaWQpOwotKyAgICBpbnQgRklQU19yYW5kX3NldF9kdCh1 bnNpZ25lZCBjaGFyICpkdCk7Ci0rICAgIGludCBGSVBTX3JhbmRfc3RhdHVzKHZvaWQpOwotKyAg ICBjb25zdCBSQU5EX01FVEhPRCAqRklQU19yYW5kX21ldGhvZCh2b2lkKTsKLSsKLSsjICBpZmRl ZiAgX19jcGx1c3BsdXMKLSt9Ci0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rI2VuZGlmCi1kaWZmIC11 cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX3JhbmRfbGNsLmguZmlwcyBvcGVuc3Ns LTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX3JhbmRfbGNsLmgKLS0tLSBvcGVuc3NsLTEuMC4yaS9j cnlwdG8vZmlwcy9maXBzX3JhbmRfbGNsLmguZmlwcwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxODIy MTAyMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfcmFuZF9sY2wu aAkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxODIyMTAyMCArMDIwMAotQEAgLTAsMCArMSwyMTMgQEAK LSsvKiBmaXBzL3JhbmQvZmlwc19yYW5kX2xjbC5oICovCi0rLyogV3JpdHRlbiBieSBEciBTdGVw aGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRoZSBPcGVuU1NMCi0rICogcHJv amVjdC4KLSsgKi8KLSsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUg T3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJp YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91 dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs b3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlv bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBk b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsg KiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxz IG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0 IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9k dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0r ICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5PcGVuU1NM Lm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3Bl blNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9t b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBw cmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBj b250YWN0Ci0rICogICAgbGljZW5zaW5nQE9wZW5TU0wub3JnLgotKyAqCi0rICogNS4gUHJvZHVj dHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wi Ci0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQg cHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4K LSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3Qg cmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhp cyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9q ZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lk9w ZW5TU0wub3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBP cGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElF RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1Q TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI RSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZ LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlU RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICog TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikK LSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9T U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKi8KLSsKLSt0eXBl ZGVmIHN0cnVjdCBkcmJnX2hhc2hfY3R4X3N0IERSQkdfSEFTSF9DVFg7Ci0rdHlwZWRlZiBzdHJ1 Y3QgZHJiZ19obWFjX2N0eF9zdCBEUkJHX0hNQUNfQ1RYOwotK3R5cGVkZWYgc3RydWN0IGRyYmdf Y3RyX2N0eF9zdCBEUkJHX0NUUl9DVFg7Ci0rCi0rLyogODg4IGJpdHMgZnJvbSAxMC4xIHRhYmxl IDIgKi8KLSsjZGVmaW5lIEhBU0hfUFJOR19NQVhfU0VFRExFTiAgIDExMQotKwotK3N0cnVjdCBk cmJnX2hhc2hfY3R4X3N0IHsKLSsgICAgY29uc3QgRVZQX01EICptZDsKLSsgICAgRVZQX01EX0NU WCBtY3R4OwotKyAgICB1bnNpZ25lZCBjaGFyIFZbSEFTSF9QUk5HX01BWF9TRUVETEVOXTsKLSsg ICAgdW5zaWduZWQgY2hhciBDW0hBU0hfUFJOR19NQVhfU0VFRExFTl07Ci0rICAgIC8qIFRlbXBv cmFyeSB2YWx1ZSBzdG9yYWdlOiBzaG91bGQgYWx3YXlzIGV4Y2VlZCBtYXggZGlnZXN0IGxlbmd0 aCAqLwotKyAgICB1bnNpZ25lZCBjaGFyIHZ0bXBbSEFTSF9QUk5HX01BWF9TRUVETEVOXTsKLSt9 OwotKwotK3N0cnVjdCBkcmJnX2htYWNfY3R4X3N0IHsKLSsgICAgY29uc3QgRVZQX01EICptZDsK LSsgICAgSE1BQ19DVFggaGN0eDsKLSsgICAgdW5zaWduZWQgY2hhciBLW0VWUF9NQVhfTURfU0la RV07Ci0rICAgIHVuc2lnbmVkIGNoYXIgVltFVlBfTUFYX01EX1NJWkVdOwotK307Ci0rCi0rc3Ry dWN0IGRyYmdfY3RyX2N0eF9zdCB7Ci0rICAgIEFFU19LRVkga3M7Ci0rICAgIHNpemVfdCBrZXls ZW47Ci0rICAgIHVuc2lnbmVkIGNoYXIgS1szMl07Ci0rICAgIHVuc2lnbmVkIGNoYXIgVlsxNl07 Ci0rICAgIC8qIFRlbXAgdmFyaWFibGVzIHVzZWQgYnkgZGVyaXZhdGlvbiBmdW5jdGlvbiAqLwot KyAgICBBRVNfS0VZIGRmX2tzOwotKyAgICBBRVNfS0VZIGRmX2t4a3M7Ci0rICAgIC8qIFRlbXBv cmFyeSBibG9jayBzdG9yYWdlIHVzZWQgYnkgY3RyX2RmICovCi0rICAgIHVuc2lnbmVkIGNoYXIg Ymx0bXBbMTZdOwotKyAgICBzaXplX3QgYmx0bXBfcG9zOwotKyAgICB1bnNpZ25lZCBjaGFyIEtY WzQ4XTsKLSt9OwotKwotKy8qIERSQkcgaW50ZXJuYWwgZmxhZ3MgKi8KLSsKLSsvKiBGdW5jdGlv bnMgc2hvdWxkbid0IGNhbGwgZXJyIGxpYnJhcnkgKi8KLSsjZGVmaW5lIERSQkdfRkxBR19OT0VS UiAgICAgICAgICAgICAgICAgMHgxCi0rLyogQ3VzdG9tIHJlc2VlZCBjaGVja2luZyAqLwotKyNk ZWZpbmUgRFJCR19DVVNUT01fUkVTRUVEICAgICAgICAgICAgICAweDIKLSsKLSsvKiBEUkJHIHN0 YXR1cyB2YWx1ZXMgKi8KLSsvKiBub3QgaW5pdGlhbGlzZWQgKi8KLSsjZGVmaW5lIERSQkdfU1RB VFVTX1VOSU5JVElBTElTRUQgICAgICAgMAotKy8qIG9rIGFuZCByZWFkeSB0byBnZW5lcmF0ZSBy YW5kb20gYml0cyAqLwotKyNkZWZpbmUgRFJCR19TVEFUVVNfUkVBRFkgICAgICAgICAgICAgICAx Ci0rLyogcmVzZWVkIHJlcXVpcmVkICovCi0rI2RlZmluZSBEUkJHX1NUQVRVU19SRVNFRUQgICAg ICAgICAgICAgIDIKLSsvKiBmYXRhbCBlcnJvciBjb25kaXRpb24gKi8KLSsjZGVmaW5lIERSQkdf U1RBVFVTX0VSUk9SICAgICAgICAgICAgICAgMwotKwotKy8qIEEgZGVmYXVsdCBtYXhpbXVtIGxl bmd0aDogbGFyZ2VyIHRoYW4gYW55IHJlYXNvbmFibGUgdmFsdWUgdXNlZCBpbiBwcmF0aWNlICov Ci0rCi0rI2RlZmluZSBEUkJHX01BWF9MRU5HVEggICAgICAgICAgICAgICAgIDB4N2ZmZmZmZjAK LSsvKiBNYXhpbXVtIERSQkcgYmxvY2sgbGVuZ3RoOiBhbGwgbWQgc2l6ZXMgYXJlIGJpZ2dlciB0 aGFuIGNpcGhlciBibG9ja3Mgc2l6ZXMKLSsgKiBzbyB1c2UgbWF4IGRpZ2VzdCBsZW5ndGguCi0r ICovCi0rI2RlZmluZSBEUkJHX01BWF9CTE9DSyAgICAgICAgICAgICAgICAgIEVWUF9NQVhfTURf U0laRQotKwotKyNkZWZpbmUgRFJCR19IRUFMVEhfSU5URVJWQUwgICAgICAgICAgICAoMSA8PCAy NCkKLSsKLSsvKiBEUkJHIGNvbnRleHQgc3RydWN0dXJlICovCi0rCi0rc3RydWN0IGRyYmdfY3R4 X3N0IHsKLSsgICAgLyogRmlyc3QgdHlwZXMgY29tbW9uIHRvIGFsbCBpbXBsZW1lbnRhdGlvbnMg Ki8KLSsgICAgLyogRFJCRyB0eXBlOiBhIE5JRCBmb3IgdGhlIHVuZGVybHlpbmcgYWxnb3JpdGht ICovCi0rICAgIGludCB0eXBlOwotKyAgICAvKiBWYXJpb3VzIGV4dGVybmFsIGZsYWdzICovCi0r ICAgIHVuc2lnbmVkIGludCB4ZmxhZ3M7Ci0rICAgIC8qIFZhcmlvdXMgaW50ZXJuYWwgdXNlIG9u bHkgZmxhZ3MgKi8KLSsgICAgdW5zaWduZWQgaW50IGlmbGFnczsKLSsgICAgLyogVXNlZCBmb3Ig cGVyaW9kaWMgaGVhbHRoIGNoZWNrcyAqLwotKyAgICBpbnQgaGVhbHRoX2NoZWNrX2NudCwgaGVh bHRoX2NoZWNrX2ludGVydmFsOwotKwotKyAgICAvKiBUaGUgZm9sbG93aW5nIHBhcmFtZXRlcnMg YXJlIHNldHVwIGJ5IG1lY2hhbmlzbSBkcmJnX2luaXQoKSBjYWxsICovCi0rICAgIGludCBzdHJl bmd0aDsKLSsgICAgc2l6ZV90IGJsb2NrbGVuZ3RoOwotKyAgICBzaXplX3QgbWF4X3JlcXVlc3Q7 Ci0rCi0rICAgIHNpemVfdCBtaW5fZW50cm9weSwgbWF4X2VudHJvcHk7Ci0rICAgIHNpemVfdCBt aW5fbm9uY2UsIG1heF9ub25jZTsKLSsgICAgc2l6ZV90IG1heF9wZXJzLCBtYXhfYWRpbjsKLSsg ICAgdW5zaWduZWQgaW50IHJlc2VlZF9jb3VudGVyOwotKyAgICB1bnNpZ25lZCBpbnQgcmVzZWVk X2ludGVydmFsOwotKyAgICBzaXplX3Qgc2VlZGxlbjsKLSsgICAgaW50IHN0YXR1czsKLSsgICAg LyogQXBwbGljYXRpb24gZGF0YTogdHlwaWNhbGx5IHVzZWQgYnkgdGVzdCBnZXRfZW50cm9weSAq LwotKyAgICB2b2lkICphcHBfZGF0YTsKLSsgICAgLyogSW1wbGVtZW50YXRpb24gc3BlY2lmaWMg c3RydWN0dXJlcyAqLwotKyAgICB1bmlvbiB7Ci0rICAgICAgICBEUkJHX0hBU0hfQ1RYIGhhc2g7 Ci0rICAgICAgICBEUkJHX0hNQUNfQ1RYIGhtYWM7Ci0rICAgICAgICBEUkJHX0NUUl9DVFggY3Ry OwotKyAgICB9IGQ7Ci0rICAgIC8qIEluaXRpYWxpYXNlIFBSTkcgYW5kIHNldHVwIGNhbGxiYWNr cyBiZWxvdyAqLwotKyAgICBpbnQgKCppbml0KSAoRFJCR19DVFggKmN0eCwgaW50IG5pZCwgaW50 IHNlY3VyaXR5LCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwotKyAgICAvKiBJbnRhbnRpYXRlIFBSTkcg Ki8KLSsgICAgaW50ICgqaW5zdGFudGlhdGUpIChEUkJHX0NUWCAqY3R4LAotKyAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVudCwgc2l6ZV90IGVudGxlbiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpub25jZSwgc2l6ZV90 IG5vbmNlbGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg KnBlcnMsIHNpemVfdCBwZXJzbGVuKTsKLSsgICAgLyogcmVzZWVkICovCi0rICAgIGludCAoKnJl c2VlZCkgKERSQkdfQ1RYICpjdHgsCi0rICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIgKmVudCwgc2l6ZV90IGVudGxlbiwKLSsgICAgICAgICAgICAgICAgICAgY29uc3QgdW5z aWduZWQgY2hhciAqYWRpbiwgc2l6ZV90IGFkaW5sZW4pOwotKyAgICAvKiBnZW5lcmF0IG91dHB1 dCAqLwotKyAgICBpbnQgKCpnZW5lcmF0ZSkgKERSQkdfQ1RYICpjdHgsCi0rICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb3V0bGVuLAotKyAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4sIHNpemVfdCBhZGlubGVuKTsKLSsg ICAgLyogdW5pbnN0YW50aWF0ZSAqLwotKyAgICBpbnQgKCp1bmluc3RhbnRpYXRlKSAoRFJCR19D VFggKmN0eCk7Ci0rCi0rICAgIC8qIEVudHJvcHkgc291cmNlIGJsb2NrIGxlbmd0aCAqLwotKyAg ICBzaXplX3QgZW50cm9weV9ibG9ja2xlbjsKLSsKLSsgICAgLyogZW50cm9weSBnYXRoZXJpbmcg ZnVuY3Rpb24gKi8KLSsgICAgc2l6ZV90ICgqZ2V0X2VudHJvcHkpIChEUkJHX0NUWCAqY3R4LCB1 bnNpZ25lZCBjaGFyICoqcG91dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW50 cm9weSwgc2l6ZV90IG1pbl9sZW4sIHNpemVfdCBtYXhfbGVuKTsKLSsgICAgLyogSW5kaWNhdGVz IHdlIGhhdmUgZmluaXNoZWQgd2l0aCBlbnRyb3B5IGJ1ZmZlciAqLwotKyAgICB2b2lkICgqY2xl YW51cF9lbnRyb3B5KSAoRFJCR19DVFggKmN0eCwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qg b2xlbik7Ci0rCi0rICAgIC8qIG5vbmNlIGdhdGhlcmluZyBmdW5jdGlvbiAqLwotKyAgICBzaXpl X3QgKCpnZXRfbm9uY2UpIChEUkJHX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICoqcG91dCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVudHJvcHksIHNpemVfdCBtaW5fbGVuLCBzaXpl X3QgbWF4X2xlbik7Ci0rICAgIC8qIEluZGljYXRlcyB3ZSBoYXZlIGZpbmlzaGVkIHdpdGggbm9u Y2UgYnVmZmVyICovCi0rICAgIHZvaWQgKCpjbGVhbnVwX25vbmNlKSAoRFJCR19DVFggKmN0eCwg dW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb2xlbik7Ci0rCi0rICAgIC8qIENvbnRpbnVvdXMg cmFuZG9tIG51bWJlciB0ZXN0IHRlbXBvcmFyeSBhcmVhICovCi0rICAgIC8qIExhc3QgYmxvY2sg Ki8KLSsgICAgdW5zaWduZWQgY2hhciBsYltFVlBfTUFYX01EX1NJWkVdOwotKyAgICAvKiBzZXQg aWYgbGIgaXMgdmFsaWQgKi8KLSsgICAgaW50IGxiX3ZhbGlkOwotKwotKyAgICAvKiBDYWxsYmFj a3MgdXNlZCB3aGVuIGNhbGxlZCB0aHJvdWdoIFJBTkQgaW50ZXJmYWNlICovCi0rICAgIC8qIEdl dCBhbnkgYWRkaXRpb25hbCBpbnB1dCBmb3IgZ2VuZXJhdGUgKi8KLSsgICAgc2l6ZV90ICgqZ2V0 X2FkaW4pIChEUkJHX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICoqcG91dCk7Ci0rICAgIHZvaWQg KCpjbGVhbnVwX2FkaW4pIChEUkJHX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVf dCBvbGVuKTsKLSsgICAgLyogQ2FsbGJhY2sgZm9yIFJBTkRfc2VlZCgpLCBSQU5EX2FkZCgpICov Ci0rICAgIGludCAoKnJhbmRfc2VlZF9jYikgKERSQkdfQ1RYICpjdHgsIGNvbnN0IHZvaWQgKmJ1 ZiwgaW50IG51bSk7Ci0rICAgIGludCAoKnJhbmRfYWRkX2NiKSAoRFJCR19DVFggKmN0eCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpidWYsIGludCBudW0sIGRvdWJsZSBl bnRyb3B5KTsKLSt9OwotKwotK2ludCBmaXBzX2RyYmdfY3RyX2luaXQoRFJCR19DVFggKmRjdHgp OwotK2ludCBmaXBzX2RyYmdfaGFzaF9pbml0KERSQkdfQ1RYICpkY3R4KTsKLStpbnQgZmlwc19k cmJnX2htYWNfaW5pdChEUkJHX0NUWCAqZGN0eCk7Ci0raW50IGZpcHNfZHJiZ19rYXQoRFJCR19D VFggKmRjdHgsIGludCBuaWQsIHVuc2lnbmVkIGludCBmbGFncyk7Ci0raW50IGZpcHNfZHJiZ19j cHJuZ190ZXN0KERSQkdfQ1RYICpkY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICpvdXQpOwotKwot K2NvbnN0IHN0cnVjdCBlbnZfbWRfc3QgKkZJUFNfZ2V0X2RpZ2VzdGJ5bmlkKGludCBuaWQpOwot KwotK2NvbnN0IHN0cnVjdCBldnBfY2lwaGVyX3N0ICpGSVBTX2dldF9jaXBoZXJieW5pZChpbnQg bmlkKTsKLSsKLSsjZGVmaW5lIEZJUFNfZGlnZXN0aW5pdCBFVlBfRGlnZXN0SW5pdAotKyNkZWZp bmUgRklQU19kaWdlc3R1cGRhdGUgRVZQX0RpZ2VzdFVwZGF0ZQotKyNkZWZpbmUgRklQU19kaWdl c3RmaW5hbCBFVlBfRGlnZXN0RmluYWwKLSsjZGVmaW5lIE1fRVZQX01EX3NpemUgRVZQX01EX3Np emUKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfcmFuZF9saWIuYy5m aXBzIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfcmFuZF9saWIuYwotLS0tIG9wZW5z c2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfcmFuZF9saWIuYy5maXBzCTIwMTYtMDktMjIgMTM6 MzU6NTcuMDE4MjIxMDIwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlw c19yYW5kX2xpYi5jCTIwMTYtMDktMjIgMTM6MzU6NTcuMDE4MjIxMDIwICswMjAwCi1AQCAtMCww ICsxLDE4MSBAQAotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBP cGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmli dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0 Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv d2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9u cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRv Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAq ICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMg bWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3Qg ZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1 Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsg KiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wu b3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVu U1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21v dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHBy aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNv bnRhY3QKLSsgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCi0rICoKLSsgKiA1LiBQcm9k dWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNT TCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91 dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0 LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVz dCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJU aGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFBy b2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cu b3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF IE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBM SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJ TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg VEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExB UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElN SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsg KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O KQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF VEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQ T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKgotKyAqLwotKwotKyNpbmNsdWRlIDxvcGVu c3NsL2NyeXB0by5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KLSsjaW5jbHVkZSA8b3Bl bnNzbC9lcnIuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2luY2x1ZGUgPG9wZW5z c2wvZmlwc19yYW5kLmg+Ci0rI2luY2x1ZGUgImVfb3MuaCIKLSsKLSsvKiBGSVBTIEFQSSBmb3Ig UFJORyB1c2UuIFNpbWlsYXIgdG8gUkFORCBmdW5jdGlvbmFsaXR5IGJ1dCB3aXRob3V0Ci0rICog RU5HSU5FIGFuZCBhZGRpdGlvbmFsIGNoZWNraW5nIGZvciBub24tRklQUyByYW5kIG1ldGhvZHMu Ci0rICovCi0rCi0rc3RhdGljIGNvbnN0IFJBTkRfTUVUSE9EICpmaXBzX3JhbmRfbWV0aCA9IE5V TEw7Ci0rc3RhdGljIGludCBmaXBzX2FwcHJvdmVkX3JhbmRfbWV0aCA9IDA7Ci0rc3RhdGljIGlu dCBmaXBzX3JhbmRfYml0cyA9IDA7Ci0rCi0rLyogQWxsb3dzIGFwcGxpY2F0aW9uIHRvIG92ZXJy aWRlIG51bWJlciBvZiBiaXRzIGFuZCB1c2VzIG5vbi1GSVBTIG1ldGhvZHMgKi8KLSt2b2lkIEZJ UFNfcmFuZF9zZXRfYml0cyhpbnQgbmJpdHMpCi0rewotKyAgICBmaXBzX3JhbmRfYml0cyA9IG5i aXRzOwotK30KLSsKLStpbnQgRklQU19yYW5kX3NldF9tZXRob2QoY29uc3QgUkFORF9NRVRIT0Qg Km1ldGgpCi0rewotKyAgICBpZiAoIWZpcHNfcmFuZF9iaXRzKSB7Ci0rICAgICAgICBpZiAobWV0 aCA9PSBGSVBTX2RyYmdfbWV0aG9kKCkpCi0rICAgICAgICAgICAgZmlwc19hcHByb3ZlZF9yYW5k X21ldGggPSAxOwotKyAgICAgICAgZWxzZSBpZiAobWV0aCA9PSBGSVBTX3g5MzFfbWV0aG9kKCkp Ci0rICAgICAgICAgICAgZmlwc19hcHByb3ZlZF9yYW5kX21ldGggPSAyOwotKyAgICAgICAgZWxz ZSB7Ci0rICAgICAgICAgICAgZmlwc19hcHByb3ZlZF9yYW5kX21ldGggPSAwOwotKyAgICAgICAg ICAgIGlmIChGSVBTX21vZHVsZV9tb2RlKCkpIHsKLSsgICAgICAgICAgICAgICAgRklQU2VycihG SVBTX0ZfRklQU19SQU5EX1NFVF9NRVRIT0QsIEZJUFNfUl9OT05fRklQU19NRVRIT0QpOwotKyAg ICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAg IH0KLSsgICAgZmlwc19yYW5kX21ldGggPSBtZXRoOwotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0r Y29uc3QgUkFORF9NRVRIT0QgKkZJUFNfcmFuZF9nZXRfbWV0aG9kKHZvaWQpCi0rewotKyAgICBy ZXR1cm4gZmlwc19yYW5kX21ldGg7Ci0rfQotKwotK2NvbnN0IFJBTkRfTUVUSE9EICpGSVBTX3Jh bmRfbWV0aG9kKHZvaWQpCi0rewotKyAgICByZXR1cm4gRklQU19yYW5kX2dldF9tZXRob2QoKTsK LSt9Ci0rCi0rdm9pZCBGSVBTX3JhbmRfcmVzZXQodm9pZCkKLSt7Ci0rICAgIGlmIChmaXBzX3Jh bmRfbWV0aCAmJiBmaXBzX3JhbmRfbWV0aC0+Y2xlYW51cCkKLSsgICAgICAgIGZpcHNfcmFuZF9t ZXRoLT5jbGVhbnVwKCk7Ci0rfQotKwotK2ludCBGSVBTX3JhbmRfc2VlZChjb25zdCB2b2lkICpi dWYsIEZJUFNfUkFORF9TSVpFX1QgbnVtKQotK3sKLSsgICAgaWYgKCFmaXBzX2FwcHJvdmVkX3Jh bmRfbWV0aCAmJiBGSVBTX21vZHVsZV9tb2RlKCkpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19G X0ZJUFNfUkFORF9TRUVELCBGSVBTX1JfTk9OX0ZJUFNfTUVUSE9EKTsKLSsgICAgICAgIHJldHVy biAwOwotKyAgICB9Ci0rICAgIGlmIChmaXBzX3JhbmRfbWV0aCAmJiBmaXBzX3JhbmRfbWV0aC0+ c2VlZCkKLSsgICAgICAgIGZpcHNfcmFuZF9tZXRoLT5zZWVkKGJ1ZiwgbnVtKTsKLSsgICAgcmV0 dXJuIDE7Ci0rfQotKwotK3ZvaWQgRklQU19yYW5kX2FkZChjb25zdCB2b2lkICpidWYsIGludCBu dW0sIGRvdWJsZSBlbnRyb3B5KQotK3sKLSsgICAgaWYgKCFmaXBzX2FwcHJvdmVkX3JhbmRfbWV0 aCAmJiBGSVBTX21vZHVsZV9tb2RlKCkpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNf UkFORF9BREQsIEZJUFNfUl9OT05fRklQU19NRVRIT0QpOwotKyAgICAgICAgcmV0dXJuOwotKyAg ICB9Ci0rICAgIGlmIChmaXBzX3JhbmRfbWV0aCAmJiBmaXBzX3JhbmRfbWV0aC0+YWRkKQotKyAg ICAgICAgZmlwc19yYW5kX21ldGgtPmFkZChidWYsIG51bSwgZW50cm9weSk7Ci0rfQotKwotK2lu dCBGSVBTX3JhbmRfYnl0ZXModW5zaWduZWQgY2hhciAqYnVmLCBGSVBTX1JBTkRfU0laRV9UIG51 bSkKLSt7Ci0rICAgIGlmICghZmlwc19hcHByb3ZlZF9yYW5kX21ldGggJiYgRklQU19tb2R1bGVf bW9kZSgpKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX1JBTkRfQllURVMsIEZJUFNf Ul9OT05fRklQU19NRVRIT0QpOwotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsgICAgaWYg KGZpcHNfcmFuZF9tZXRoICYmIGZpcHNfcmFuZF9tZXRoLT5ieXRlcykKLSsgICAgICAgIHJldHVy biBmaXBzX3JhbmRfbWV0aC0+Ynl0ZXMoYnVmLCBudW0pOwotKyAgICByZXR1cm4gMDsKLSt9Ci0r Ci0raW50IEZJUFNfcmFuZF9wc2V1ZG9fYnl0ZXModW5zaWduZWQgY2hhciAqYnVmLCBpbnQgbnVt KQotK3sKLSsgICAgaWYgKCFmaXBzX2FwcHJvdmVkX3JhbmRfbWV0aCAmJiBGSVBTX21vZHVsZV9t b2RlKCkpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfUkFORF9QU0VVRE9fQllURVMs IEZJUFNfUl9OT05fRklQU19NRVRIT0QpOwotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsg ICAgaWYgKGZpcHNfcmFuZF9tZXRoICYmIGZpcHNfcmFuZF9tZXRoLT5wc2V1ZG9yYW5kKQotKyAg ICAgICAgcmV0dXJuIGZpcHNfcmFuZF9tZXRoLT5wc2V1ZG9yYW5kKGJ1ZiwgbnVtKTsKLSsgICAg cmV0dXJuIC0xOwotK30KLSsKLStpbnQgRklQU19yYW5kX3N0YXR1cyh2b2lkKQotK3sKLSsgICAg aWYgKCFmaXBzX2FwcHJvdmVkX3JhbmRfbWV0aCAmJiBGSVBTX21vZHVsZV9tb2RlKCkpIHsKLSsg ICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfUkFORF9TVEFUVVMsIEZJUFNfUl9OT05fRklQU19N RVRIT0QpOwotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsgICAgaWYgKGZpcHNfcmFuZF9t ZXRoICYmIGZpcHNfcmFuZF9tZXRoLT5zdGF0dXMpCi0rICAgICAgICByZXR1cm4gZmlwc19yYW5k X21ldGgtPnN0YXR1cygpOwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogUmV0dXJuIGluc3Rh bnRpYXRlZCBzdHJlbmd0aCBvZiBQUk5HLiBGb3IgRFJCRyB0aGlzIGlzIGFuIGludGVybmFsCi0r ICogcGFyYW1ldGVyLiBGb3IgWDkuMzEgUFJORyBpdCBpcyA4MCBiaXRzIChmcm9tIFNQODAwLTEz MSkuIEFueSBvdGhlcgotKyAqIHR5cGUgb2YgUFJORyBpcyBub3QgYXBwcm92ZWQgYW5kIHJldHVy bnMgMCBpbiBGSVBTIG1vZGUgYW5kIG1heGltdW0KLSsgKiAyNTYgb3V0c2lkZSBGSVBTIG1vZGUu Ci0rICovCi0rCi0raW50IEZJUFNfcmFuZF9zdHJlbmd0aCh2b2lkKQotK3sKLSsgICAgaWYgKGZp cHNfcmFuZF9iaXRzKQotKyAgICAgICAgcmV0dXJuIGZpcHNfcmFuZF9iaXRzOwotKyAgICBpZiAo Zmlwc19hcHByb3ZlZF9yYW5kX21ldGggPT0gMSkKLSsgICAgICAgIHJldHVybiBGSVBTX2RyYmdf Z2V0X3N0cmVuZ3RoKEZJUFNfZ2V0X2RlZmF1bHRfZHJiZygpKTsKLSsgICAgZWxzZSBpZiAoZmlw c19hcHByb3ZlZF9yYW5kX21ldGggPT0gMikKLSsgICAgICAgIHJldHVybiA4MDsKLSsgICAgZWxz ZSBpZiAoZmlwc19hcHByb3ZlZF9yYW5kX21ldGggPT0gMCkgewotKyAgICAgICAgaWYgKEZJUFNf bW9kdWxlX21vZGUoKSkKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgIGVsc2UKLSsg ICAgICAgICAgICByZXR1cm4gMjU2OwotKyAgICB9Ci0rICAgIHJldHVybiAwOwotK30KLWRpZmYg LXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfcmFuZF9zZWxmdGVzdC5jLmZpcHMg b3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19yYW5kX3NlbGZ0ZXN0LmMKLS0tLSBvcGVu c3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX3JhbmRfc2VsZnRlc3QuYy5maXBzCTIwMTYtMDkt MjIgMTM6MzU6NTcuMDE4MjIxMDIwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2Zp cHMvZmlwc19yYW5kX3NlbGZ0ZXN0LmMJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMTgyMjEwMjAgKzAy MDAKLUBAIC0wLDAgKzEsMTc2IEBACi0rLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMp IDIwMDMgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsg KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo IG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVk aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln aHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIuIAotKyAqCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsg KiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp dGggdGhlCi0rICogICAgZGlzdHJpYnV0aW9uLgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5n IG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29m dHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAg IlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wg UHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93 d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0 IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9y c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0 Ci0rICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9u LCBwbGVhc2UgY29udGFjdAotKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KLSsgKgot KyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2Fs bGVkICJPcGVuU1NMIgotKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBu YW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVu U1NMIFByb2plY3QuCi0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hh dHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6 Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhl IE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAo aHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W SURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVT U0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s IFRIRQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF VkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBC RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJ QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAot KyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF UlZJQ0VTOwotKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ TlRFUlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFO WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0r ICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqCi0rICovCi0rCi0rI2lu Y2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRlIDxv cGVuc3NsL2ZpcHMuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+Ci0rI2luY2x1ZGUgPG9w ZW5zc2wvZmlwc19yYW5kLmg+Ci0rI2luY2x1ZGUgImZpcHNfbG9jbC5oIgotKwotKyNpZmRlZiBP UEVOU1NMX0ZJUFMKLSsKLSt0eXBlZGVmIHN0cnVjdCB7Ci0rICAgIHVuc2lnbmVkIGNoYXIgRFRb MTZdOwotKyAgICB1bnNpZ25lZCBjaGFyIFZbMTZdOwotKyAgICB1bnNpZ25lZCBjaGFyIFJbMTZd OwotK30gQUVTX1BSTkdfVFY7Ci0rCi0rLyogVGhlIGZvbGxvd2luZyB0ZXN0IHZlY3RvcnMgYXJl IHRha2VuIGRpcmVjdGx5IGZyb20gdGhlIFJHTlZTIHNwZWMgKi8KLSsKLStzdGF0aWMgdW5zaWdu ZWQgY2hhciBhZXNfMTI4X2tleVsxNl0gPQotKyAgICB7IDB4ZjMsIDB4YjEsIDB4NjYsIDB4NmQs IDB4MTMsIDB4NjAsIDB4NzIsIDB4NDIsCi0rICAgIDB4ZWQsIDB4MDYsIDB4MWMsIDB4YWIsIDB4 YjgsIDB4ZDQsIDB4NjIsIDB4MDIKLSt9OwotKwotK3N0YXRpYyBBRVNfUFJOR19UViBhZXNfMTI4 X3R2ID0gewotKyAgICAvKiBEVCAqLwotKyAgICB7MHhlNiwgMHhiMywgMHhiZSwgMHg3OCwgMHgy YSwgMHgyMywgMHhmYSwgMHg2MiwKLSsgICAgIDB4ZDcsIDB4MWQsIDB4NGEsIDB4ZmIsIDB4YjAs IDB4ZTksIDB4MjIsIDB4Zjl9LAotKyAgICAvKiBWICovCi0rICAgIHsweDgwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotKyAgICAgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMH0sCi0rICAgIC8qIFIgKi8KLSsgICAgezB4NTks IDB4NTMsIDB4MWUsIDB4ZDEsIDB4M2IsIDB4YjAsIDB4YzAsIDB4NTUsCi0rICAgICAweDg0LCAw eDc5LCAweDY2LCAweDg1LCAweGMxLCAweDJmLCAweDc2LCAweDQxfQotK307Ci0rCi0rc3RhdGlj IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9rZXlbMjRdID0KLSsgICAgeyAweDE1LCAweGQ4LCAweDc4 LCAweDBkLCAweDYyLCAweGQzLCAweDI1LCAweDZlLAotKyAgICAweDQ0LCAweDY0LCAweDEwLCAw eDEzLCAweDYwLCAweDJiLCAweGE5LCAweGJjLAotKyAgICAweDRhLCAweGZiLCAweGNhLCAweGVi LCAweDRjLCAweDhiLCAweDk5LCAweDNiCi0rfTsKLSsKLStzdGF0aWMgQUVTX1BSTkdfVFYgYWVz XzE5Ml90diA9IHsKLSsgICAgLyogRFQgKi8KLSsgICAgezB4M2YsIDB4ZDgsIDB4ZmYsIDB4ZTgs IDB4ODAsIDB4NjksIDB4OGIsIDB4YzEsCi0rICAgICAweGJmLCAweDk5LCAweDdkLCAweGE0LCAw eDI0LCAweDc4LCAweGYzLCAweDRifSwKLSsgICAgLyogViAqLwotKyAgICB7MHg4MCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLSsgICAgIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDB9LAotKyAgICAvKiBSICovCi0rICAgIHsw eDE3LCAweDA3LCAweGQ1LCAweDI4LCAweDE5LCAweDc5LCAweDFlLCAweGVmLAotKyAgICAgMHhh NSwgMHgwYywgMHhiZiwgMHgyNSwgMHhlNSwgMHg1NiwgMHhiNCwgMHg5M30KLSt9OwotKwotK3N0 YXRpYyB1bnNpZ25lZCBjaGFyIGFlc18yNTZfa2V5WzMyXSA9Ci0rICAgIHsgMHg2ZCwgMHgxNCwg MHgwNiwgMHg2YywgMHhiNiwgMHhkOCwgMHgyMSwgMHgyZCwKLSsgICAgMHg4MiwgMHg4ZCwgMHhm YSwgMHhmMiwgMHg3YSwgMHgwMywgMHhiNywgMHg5ZiwKLSsgICAgMHgwYywgMHhjNywgMHgzZSwg MHhjZCwgMHg3NiwgMHhlYiwgMHhlZSwgMHhiNSwKLSsgICAgMHgyMSwgMHgwNSwgMHg4YywgMHg0 ZiwgMHgzMSwgMHg3YSwgMHg4MCwgMHhiYgotK307Ci0rCi0rc3RhdGljIEFFU19QUk5HX1RWIGFl c18yNTZfdHYgPSB7Ci0rICAgIC8qIERUICovCi0rICAgIHsweGRhLCAweDNhLCAweDQxLCAweGVj LCAweDFkLCAweGEzLCAweGIwLCAweGQ1LAotKyAgICAgMHhmMiwgMHhhOSwgMHg0ZSwgMHgzNCwg MHg3NCwgMHg4ZSwgMHg5ZSwgMHg4OH0sCi0rICAgIC8qIFYgKi8KLSsgICAgezB4ODAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0rICAgICAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwfSwKLSsgICAgLyogUiAqLwotKyAgICB7 MHgzNSwgMHhjNywgMHhlZiwgMHhhNywgMHg3OCwgMHg0ZCwgMHgyOSwgMHhiYywKLSsgICAgIDB4 ODIsIDB4NzksIDB4OTksIDB4ZmIsIDB4ZDAsIDB4YjMsIDB4M2IsIDB4NzJ9Ci0rfTsKLSsKLSt2 b2lkIEZJUFNfY29ycnVwdF9ybmcoKQotK3sKLSsgICAgYWVzXzE5Ml90di5WWzBdKys7Ci0rfQot KwotKyMgZGVmaW5lIGZpcHNfeDkzMV90ZXN0KGtleSwgdHYpIFwKLSsgICAgICAgIGRvX3g5MzFf dGVzdChrZXksIHNpemVvZiBrZXksICZ0dikKLSsKLStzdGF0aWMgaW50IGRvX3g5MzFfdGVzdCh1 bnNpZ25lZCBjaGFyICprZXksIGludCBrZXlsZW4sIEFFU19QUk5HX1RWICogdHYpCi0rewotKyAg ICB1bnNpZ25lZCBjaGFyIFJbMTZdLCBWWzE2XTsKLSsgICAgaW50IHJ2ID0gMTsKLSsgICAgbWVt Y3B5KFYsIHR2LT5WLCBzaXplb2YoVikpOwotKyAgICBpZiAoIUZJUFNfeDkzMV9zZXRfa2V5KGtl eSwga2V5bGVuKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBpZiAoIWZpcHNfcG9zdF9zdGFy dGVkKEZJUFNfVEVTVF9YOTMxLCBrZXlsZW4sIE5VTEwpKQotKyAgICAgICAgcmV0dXJuIDE7Ci0r ICAgIGlmICghZmlwc19wb3N0X2NvcnJ1cHQoRklQU19URVNUX1g5MzEsIGtleWxlbiwgTlVMTCkp Ci0rICAgICAgICBWWzBdKys7Ci0rICAgIEZJUFNfeDkzMV9zZWVkKFYsIDE2KTsKLSsgICAgRklQ U194OTMxX3NldF9kdCh0di0+RFQpOwotKyAgICBGSVBTX3g5MzFfYnl0ZXMoUiwgMTYpOwotKyAg ICBpZiAobWVtY21wKFIsIHR2LT5SLCAxNikpIHsKLSsgICAgICAgIGZpcHNfcG9zdF9mYWlsZWQo RklQU19URVNUX1g5MzEsIGtleWxlbiwgTlVMTCk7Ci0rICAgICAgICBydiA9IDA7Ci0rICAgIH0g ZWxzZSBpZiAoIWZpcHNfcG9zdF9zdWNjZXNzKEZJUFNfVEVTVF9YOTMxLCBrZXlsZW4sIE5VTEwp KQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIHJldHVybiBydjsKLSt9Ci0rCi0raW50IEZJUFNf c2VsZnRlc3RfeDkzMSgpCi0rewotKyAgICBpbnQgcnYgPSAxOwotKyAgICBGSVBTX3g5MzFfcmVz ZXQoKTsKLSsgICAgaWYgKCFGSVBTX3g5MzFfdGVzdF9tb2RlKCkpIHsKLSsgICAgICAgIEZJUFNl cnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfWDkzMSwgRklQU19SX1NFTEZURVNUX0ZBSUxFRCk7Ci0r ICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKyAgICBpZiAoIWZpcHNfeDkzMV90ZXN0KGFlc18x Mjhfa2V5LCBhZXNfMTI4X3R2KSkKLSsgICAgICAgIHJ2ID0gMDsKLSsgICAgaWYgKCFmaXBzX3g5 MzFfdGVzdChhZXNfMTkyX2tleSwgYWVzXzE5Ml90dikpCi0rICAgICAgICBydiA9IDA7Ci0rICAg IGlmICghZmlwc194OTMxX3Rlc3QoYWVzXzI1Nl9rZXksIGFlc18yNTZfdHYpKQotKyAgICAgICAg cnYgPSAwOwotKyAgICBGSVBTX3g5MzFfcmVzZXQoKTsKLSsgICAgaWYgKCFydikKLSsgICAgICAg IEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfWDkzMSwgRklQU19SX1NFTEZURVNUX0ZBSUxF RCk7Ci0rICAgIHJldHVybiBydjsKLSt9Ci0rCi0raW50IEZJUFNfc2VsZnRlc3Rfcm5nKHZvaWQp Ci0rewotKyAgICByZXR1cm4gRklQU19zZWxmdGVzdF94OTMxKCk7Ci0rfQotKwotKyNlbmRpZgot ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19yYW5kdGVzdC5jLmZpcHMg b3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19yYW5kdGVzdC5jCi0tLS0gb3BlbnNzbC0x LjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19yYW5kdGVzdC5jLmZpcHMJMjAxNi0wOS0yMiAxMzozNTo1 Ny4wMTgyMjEwMjAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX3Jh bmR0ZXN0LmMJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMTgyMjEwMjAgKzAyMDAKLUBAIC0wLDAgKzEs MjQ3IEBACi0rLyogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTggRXJpYyBZb3VuZyAoZWF5QGNyeXB0 c29mdC5jb20pCi0rICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFRoaXMgcGFja2Fn ZSBpcyBhbiBTU0wgaW1wbGVtZW50YXRpb24gd3JpdHRlbgotKyAqIGJ5IEVyaWMgWW91bmcgKGVh eUBjcnlwdHNvZnQuY29tKS4KLSsgKiBUaGUgaW1wbGVtZW50YXRpb24gd2FzIHdyaXR0ZW4gc28g YXMgdG8gY29uZm9ybSB3aXRoIE5ldHNjYXBlcyBTU0wuCi0rICogCi0rICogVGhpcyBsaWJyYXJ5 IGlzIGZyZWUgZm9yIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsIHVzZSBhcyBsb25nIGFz Ci0rICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBhaGVhcmVkIHRvLiAgVGhlIGZvbGxv d2luZyBjb25kaXRpb25zCi0rICogYXBwbHkgdG8gYWxsIGNvZGUgZm91bmQgaW4gdGhpcyBkaXN0 cmlidXRpb24sIGJlIGl0IHRoZSBSQzQsIFJTQSwKLSsgKiBsaGFzaCwgREVTLCBldGMuLCBjb2Rl OyBub3QganVzdCB0aGUgU1NMIGNvZGUuICBUaGUgU1NMIGRvY3VtZW50YXRpb24KLSsgKiBpbmNs dWRlZCB3aXRoIHRoaXMgZGlzdHJpYnV0aW9uIGlzIGNvdmVyZWQgYnkgdGhlIHNhbWUgY29weXJp Z2h0IHRlcm1zCi0rICogZXhjZXB0IHRoYXQgdGhlIGhvbGRlciBpcyBUaW0gSHVkc29uICh0amhA Y3J5cHRzb2Z0LmNvbSkuCi0rICogCi0rICogQ29weXJpZ2h0IHJlbWFpbnMgRXJpYyBZb3VuZydz LCBhbmQgYXMgc3VjaCBhbnkgQ29weXJpZ2h0IG5vdGljZXMgaW4KLSsgKiB0aGUgY29kZSBhcmUg bm90IHRvIGJlIHJlbW92ZWQuCi0rICogSWYgdGhpcyBwYWNrYWdlIGlzIHVzZWQgaW4gYSBwcm9k dWN0LCBFcmljIFlvdW5nIHNob3VsZCBiZSBnaXZlbiBhdHRyaWJ1dGlvbgotKyAqIGFzIHRoZSBh dXRob3Igb2YgdGhlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5IHVzZWQuCi0rICogVGhpcyBjYW4gYmUg aW4gdGhlIGZvcm0gb2YgYSB0ZXh0dWFsIG1lc3NhZ2UgYXQgcHJvZ3JhbSBzdGFydHVwIG9yCi0r ICogaW4gZG9jdW1lbnRhdGlvbiAob25saW5lIG9yIHRleHR1YWwpIHByb3ZpZGVkIHdpdGggdGhl IHBhY2thZ2UuCi0rICogCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1l dDoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl IGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5 IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwg dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0 aGUKLSsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMg bWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQotKyAqICAgIG11c3Qg ZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKLSsgKiAgICAiVGhpcyBwcm9k dWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieQotKyAqICAgICBF cmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkiCi0rICogICAgVGhlIHdvcmQgJ2NyeXB0b2dy YXBoaWMnIGNhbiBiZSBsZWZ0IG91dCBpZiB0aGUgcm91aW5lcyBmcm9tIHRoZSBsaWJyYXJ5Ci0r ICogICAgYmVpbmcgdXNlZCBhcmUgbm90IGNyeXB0b2dyYXBoaWMgcmVsYXRlZCA6LSkuCi0rICog NC4gSWYgeW91IGluY2x1ZGUgYW55IFdpbmRvd3Mgc3BlY2lmaWMgY29kZSAob3IgYSBkZXJpdmF0 aXZlIHRoZXJlb2YpIGZyb20gCi0rICogICAgdGhlIGFwcHMgZGlyZWN0b3J5IChhcHBsaWNhdGlv biBjb2RlKSB5b3UgbXVzdCBpbmNsdWRlIGFuIGFja25vd2xlZGdlbWVudDoKLSsgKiAgICAiVGhp cyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIHdyaXR0ZW4gYnkgVGltIEh1ZHNvbiAodGpoQGNy eXB0c29mdC5jb20pIgotKyAqIAotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRVJJ QyBZT1VORyBgYEFTIElTJycgQU5ECi0rICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UKLSsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1Ig T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0rICogREFN QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU SVRVVEUgR09PRFMKLSsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04g QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotKyAq IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB UklTSU5HIElOIEFOWSBXQVkKLSsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0rICogU1VDSCBEQU1BR0UuCi0r ICogCi0rICogVGhlIGxpY2VuY2UgYW5kIGRpc3RyaWJ1dGlvbiB0ZXJtcyBmb3IgYW55IHB1Ymxp Y2FsbHkgYXZhaWxhYmxlIHZlcnNpb24gb3IKLSsgKiBkZXJpdmF0aXZlIG9mIHRoaXMgY29kZSBj YW5ub3QgYmUgY2hhbmdlZC4gIGkuZS4gdGhpcyBjb2RlIGNhbm5vdCBzaW1wbHkgYmUKLSsgKiBj b3BpZWQgYW5kIHB1dCB1bmRlciBhbm90aGVyIGRpc3RyaWJ1dGlvbiBsaWNlbmNlCi0rICogW2lu Y2x1ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNlbmNlLl0KLSsgKi8KLSsvKiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot KyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6 Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g dGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1 dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAz LiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9m IHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3ds ZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3Bl ZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBU b29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVz ICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2Vk IHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz IHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3 cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICogICAgb3BlbnNzbC1jb3JlQG9w ZW5zc2wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdh cmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIg YXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1p c3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9u cyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAg ICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJl IGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUg T3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiBUSElT IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFO RCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV VCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElT Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJ VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE RU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg KElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04g QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNU IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF VkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0r ICoKLSsgKi8KLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0r I2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxjdHlwZS5oPgotKyNpbmNsdWRlIDxvcGVu c3NsL3JhbmQuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4KLSsjaW5jbHVkZSA8 b3BlbnNzbC9lcnIuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgotKwotKyNpbmNsdWRlICJl X29zLmgiCi0rCi0rI2lmbmRlZiBPUEVOU1NMX0ZJUFMKLStpbnQgbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQotK3sKLSsgICAgcHJpbnRmKCJObyBGSVBTIFJBTkQgc3VwcG9ydFxuIik7Ci0r ICAgIHJldHVybiAoMCk7Ci0rfQotKwotKyNlbHNlCi0rCi0rIyBpbmNsdWRlICJmaXBzX3V0bC5o IgotKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rCi0rdHlwZWRlZiBzdHJ1Y3QgewotKyAg ICB1bnNpZ25lZCBjaGFyIERUWzE2XTsKLSsgICAgdW5zaWduZWQgY2hhciBWWzE2XTsKLSsgICAg dW5zaWduZWQgY2hhciBSWzE2XTsKLSt9IEFFU19QUk5HX01DVDsKLSsKLStzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBhZXNfMTI4X21jdF9rZXlbMTZdID0KLSsgICAgeyAweDlmLCAweDViLCAw eDUxLCAweDIwLCAweDBiLCAweGYzLCAweDM0LCAweGI1LAotKyAgICAweGQ4LCAweDJiLCAweGU4 LCAweGMzLCAweDcyLCAweDU1LCAweGM4LCAweDQ4Ci0rfTsKLSsKLStzdGF0aWMgY29uc3QgQUVT X1BSTkdfTUNUIGFlc18xMjhfbWN0X3R2ID0gewotKyAgICAvKiBEVCAqLwotKyAgICB7MHg2Mywg MHg3NiwgMHhiYiwgMHhlNSwgMHgyOSwgMHgwMiwgMHhiYSwgMHgzYiwKLSsgICAgIDB4NjcsIDB4 YzksIDB4MjUsIDB4ZmEsIDB4NzAsIDB4MWYsIDB4MTEsIDB4YWN9LAotKyAgICAvKiBWICovCi0r ICAgIHsweDU3LCAweDJjLCAweDhlLCAweDc2LCAweDg3LCAweDI2LCAweDQ3LCAweDk3LAotKyAg ICAgMHg3ZSwgMHg3NCwgMHhmYiwgMHhkZCwgMHhjNCwgMHg5NSwgMHgwMSwgMHhkMX0sCi0rICAg IC8qIFIgKi8KLSsgICAgezB4NDgsIDB4ZTksIDB4YmQsIDB4MGQsIDB4MDYsIDB4ZWUsIDB4MTgs IDB4ZmIsCi0rICAgICAweGU0LCAweDU3LCAweDkwLCAweGQ1LCAweGMzLCAweGZjLCAweDliLCAw eDczfQotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9tY3Rfa2V5 WzI0XSA9Ci0rICAgIHsgMHhiNywgMHg2YywgMHgzNCwgMHhkMSwgMHgwOSwgMHg2NywgMHhhYiwg MHg3MywKLSsgICAgMHg0ZCwgMHg1YSwgMHhkNSwgMHgzNCwgMHg5OCwgMHgxNiwgMHgwYiwgMHg5 MSwKLSsgICAgMHhiYywgMHgzNSwgMHg1MSwgMHgxNiwgMHg2YiwgMHhhZSwgMHg5MywgMHg4YQot K307Ci0rCi0rc3RhdGljIGNvbnN0IEFFU19QUk5HX01DVCBhZXNfMTkyX21jdF90diA9IHsKLSsg ICAgLyogRFQgKi8KLSsgICAgezB4ODQsIDB4Y2UsIDB4MjIsIDB4N2QsIDB4OTEsIDB4NWEsIDB4 YTMsIDB4YzksCi0rICAgICAweDg0LCAweDNjLCAweDBhLCAweGIzLCAweGE5LCAweDYzLCAweDE1 LCAweDUyfSwKLSsgICAgLyogViAqLwotKyAgICB7MHhiNiwgMHhhZiwgMHhlNiwgMHg4ZiwgMHg5 OSwgMHg5ZSwgMHg5MCwgMHg2NCwKLSsgICAgIDB4ZGQsIDB4YzcsIDB4N2EsIDB4YzEsIDB4YmIs IDB4OTAsIDB4M2EsIDB4NmR9LAotKyAgICAvKiBSICovCi0rICAgIHsweGZjLCAweDg1LCAweDYw LCAweDlhLCAweDI5LCAweDZmLCAweGVmLCAweDIxLAotKyAgICAgMHhkZCwgMHg4NiwgMHgyMCwg MHgzMiwgMHg4YSwgMHgyOSwgMHg2ZiwgMHg0N30KLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGFlc18yNTZfbWN0X2tleVszMl0gPQotKyAgICB7IDB4OWIsIDB4MDUsIDB4Yzgs IDB4NjgsIDB4ZmYsIDB4NDcsIDB4ZjgsIDB4M2EsCi0rICAgIDB4YTYsIDB4M2EsIDB4YTgsIDB4 Y2IsIDB4NGUsIDB4NzEsIDB4YjIsIDB4ZTAsCi0rICAgIDB4YjgsIDB4N2UsIDB4ZjEsIDB4Mzcs IDB4YjYsIDB4YjQsIDB4ZjYsIDB4NmQsCi0rICAgIDB4ODYsIDB4MzIsIDB4ZmMsIDB4MWYsIDB4 NWUsIDB4MWQsIDB4MWUsIDB4NTAKLSt9OwotKwotK3N0YXRpYyBjb25zdCBBRVNfUFJOR19NQ1Qg YWVzXzI1Nl9tY3RfdHYgPSB7Ci0rICAgIC8qIERUICovCi0rICAgIHsweDMxLCAweDZlLCAweDM1 LCAweDlhLCAweGIxLCAweDQ0LCAweGYwLCAweGVlLAotKyAgICAgMHg2MiwgMHg2ZCwgMHgwNCwg MHg0NiwgMHhlMCwgMHhhMywgMHg5MiwgMHg0Y30sCi0rICAgIC8qIFYgKi8KLSsgICAgezB4NGYs IDB4Y2QsIDB4YzEsIDB4ODcsIDB4ODIsIDB4MWYsIDB4NGQsIDB4YTEsCi0rICAgICAweDNlLCAw eDBlLCAweDU2LCAweDQ0LCAweDU5LCAweGU4LCAweDgzLCAweGNhfSwKLSsgICAgLyogUiAqLwot KyAgICB7MHhjOCwgMHg4NywgMHhjMiwgMHg2MSwgMHg1YiwgMHhkMCwgMHhiOSwgMHhlMSwKLSsg ICAgIDB4ZTcsIDB4ZjMsIDB4OGIsIDB4ZDcsIDB4NWIsIDB4ZDUsIDB4ZjEsIDB4OGR9Ci0rfTsK LSsKLStzdGF0aWMgdm9pZCBkdW1wKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmIsIGludCBuKQotK3sK LSsgICAgd2hpbGUgKG4tLSA+IDApIHsKLSsgICAgICAgIHByaW50ZigiICUwMngiLCAqYisrKTsK LSsgICAgfQotK30KLSsKLStzdGF0aWMgdm9pZCBjb21wYXJlKGNvbnN0IHVuc2lnbmVkIGNoYXIg KnJlc3VsdCwKLSsgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmV4cGVj dGVkLCBpbnQgbikKLSt7Ci0rICAgIGludCBpOwotKwotKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsg KytpKQotKyAgICAgICAgaWYgKHJlc3VsdFtpXSAhPSBleHBlY3RlZFtpXSkgewotKyAgICAgICAg ICAgIHB1dHMoIlJhbmRvbSB0ZXN0IGZhaWxlZCwgZ290OiIpOwotKyAgICAgICAgICAgIGR1bXAo cmVzdWx0LCBuKTsKLSsgICAgICAgICAgICBwdXRzKCJcbiAgICAgICAgICAgICAgIGV4cGVjdGVk OiIpOwotKyAgICAgICAgICAgIGR1bXAoZXhwZWN0ZWQsIG4pOwotKyAgICAgICAgICAgIHB1dGNo YXIoJ1xuJyk7Ci0rICAgICAgICAgICAgRVhJVCgxKTsKLSsgICAgICAgIH0KLSt9Ci0rCi0rc3Rh dGljIHZvaWQgcnVuX3Rlc3QoY29uc3QgdW5zaWduZWQgY2hhciAqa2V5LCBpbnQga2V5bGVuLAot KyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFFU19QUk5HX01DVCAqIHR2KQotK3sKLSsgICAg dW5zaWduZWQgY2hhciBidWZbMTZdLCBkdFsxNl07Ci0rICAgIGludCBpLCBqOwotKyAgICBGSVBT X3g5MzFfcmVzZXQoKTsKLSsgICAgRklQU194OTMxX3Rlc3RfbW9kZSgpOwotKyAgICBGSVBTX3g5 MzFfc2V0X2tleShrZXksIGtleWxlbik7Ci0rICAgIEZJUFNfeDkzMV9zZWVkKHR2LT5WLCAxNik7 Ci0rICAgIG1lbWNweShkdCwgdHYtPkRULCAxNik7Ci0rICAgIGZvciAoaSA9IDA7IGkgPCAxMDAw MDsgaSsrKSB7Ci0rICAgICAgICBGSVBTX3g5MzFfc2V0X2R0KGR0KTsKLSsgICAgICAgIEZJUFNf eDkzMV9ieXRlcyhidWYsIDE2KTsKLSsgICAgICAgIC8qIEluY3JlbWVudCBEVCAqLwotKyAgICAg ICAgZm9yIChqID0gMTU7IGogPj0gMDsgai0tKSB7Ci0rICAgICAgICAgICAgZHRbal0rKzsKLSsg ICAgICAgICAgICBpZiAoZHRbal0pCi0rICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAg fQotKyAgICB9Ci0rCi0rICAgIGNvbXBhcmUoYnVmLCB0di0+UiwgMTYpOwotK30KLSsKLStpbnQg bWFpbigpCi0rewotKyAgICBydW5fdGVzdChhZXNfMTI4X21jdF9rZXksIDE2LCAmYWVzXzEyOF9t Y3RfdHYpOwotKyAgICBwcmludGYoIkZJUFMgUFJORyB0ZXN0IDEgZG9uZVxuIik7Ci0rICAgIHJ1 bl90ZXN0KGFlc18xOTJfbWN0X2tleSwgMjQsICZhZXNfMTkyX21jdF90dik7Ci0rICAgIHByaW50 ZigiRklQUyBQUk5HIHRlc3QgMiBkb25lXG4iKTsKLSsgICAgcnVuX3Rlc3QoYWVzXzI1Nl9tY3Rf a2V5LCAzMiwgJmFlc18yNTZfbWN0X3R2KTsKLSsgICAgcHJpbnRmKCJGSVBTIFBSTkcgdGVzdCAz IGRvbmVcbiIpOwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rI2VuZGlmCi1kaWZmIC11cCBvcGVu c3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX3JzYV9zZWxmdGVzdC5jLmZpcHMgb3BlbnNzbC0x LjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19yc2Ffc2VsZnRlc3QuYwotLS0tIG9wZW5zc2wtMS4wLjJp L2NyeXB0by9maXBzL2ZpcHNfcnNhX3NlbGZ0ZXN0LmMuZmlwcwkyMDE2LTA5LTIyIDEzOjM1OjU3 LjAxOTIyMTA0MyArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfcnNh X3NlbGZ0ZXN0LmMJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMTkyMjEwNDMgKzAyMDAKLUBAIC0wLDAg KzEsNDQ0IEBACi0rLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNyBU aGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlz dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0 aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm b2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1 dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAq ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRo ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK LSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJp YWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBt dXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBw cm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0 Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVu c3NsLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAi T3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBw cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAg ICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFz ZSBjb250YWN0Ci0rICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgotKyAqCi0rICogNS4g UHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9w ZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdp dGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJv amVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVy IG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAg ICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNT TCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8v d3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ IFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1Ig SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0r ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI QUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhF TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9U IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7 Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ VElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBU SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICoKLSsgKi8KLSsKLSsjaW5jbHVkZSA8 c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2lmZGVmIE9QRU5TU0xfRklQ UwotKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2VuZGlmCi0rI2luY2x1ZGUgPG9wZW5z c2wvcnNhLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wv Ym4uaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3NsY29uZi5oPgotKwotKyNpZmRlZiBPUEVO U1NMX0ZJUFMKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBuW10gPQotKyAgICAiXHgw MFx4QkJceEY4XHgyRlx4MDlceDA2XHg4Mlx4Q0VceDlDXHgyM1x4MzhceEFDXHgyQlx4OURceEE4 XHg3MSIKLSsgICAgIlx4RjdceDM2XHg4RFx4MDdceEVFXHhENFx4MTBceDQzXHhBNFx4NDBceEQ2 XHhCNlx4RjBceDc0XHg1NFx4RjUiCi0rICAgICJceDFGXHhCOFx4REZceEJBXHhBRlx4MDNceDVD XHgwMlx4QUJceDYxXHhFQVx4NDhceENFXHhFQlx4NkZceENEIgotKyAgICAiXHg0OFx4NzZceEVE XHg1Mlx4MERceDYwXHhFMVx4RUNceDQ2XHgxOVx4NzFceDlEXHg4QVx4NUJceDhCXHg4MCIKLSsg ICAgIlx4N0ZceEFGXHhCOFx4RTBceEEzXHhERlx4QzdceDM3XHg3Mlx4M0VceEU2XHhCNFx4Qjdc eEQ5XHgzQVx4MjUiCi0rICAgICJceDg0XHhFRVx4NkFceDY0XHg5RFx4MDZceDA5XHg1M1x4NzRc eDg4XHgzNFx4QjJceDQ1XHg0NVx4OThceDM5IgotKyAgICAiXHg0RVx4RTBceEFBXHhCMVx4MkRc eDdCXHg2MVx4QTVceDFGXHg1Mlx4N0FceDlBXHg0MVx4RjZceEMxXHg2OCIKLSsgICAgIlx4N0Zc eEUyXHg1M1x4NzJceDk4XHhDQVx4MkFceDhGXHg1OVx4NDZceEY4XHhFNVx4RkRceDA5XHgxRFx4 QkQiICJceENCIjsKLSsKLStzdGF0aWMgaW50IGNvcnJ1cHRfcnNhOwotKwotK3N0YXRpYyBpbnQg c2V0cnNha2V5KFJTQSAqa2V5KQotK3sKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg ZVtdID0gIlx4MTEiOwotKwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBkW10gPQot KyAgICAgICAgIlx4MDBceEE1XHhEQVx4RkNceDUzXHg0MVx4RkFceEYyXHg4OVx4QzRceEI5XHg4 OFx4REJceDMwXHhDMVx4Q0QiCi0rICAgICAgICAiXHhGOFx4M0ZceDMxXHgyNVx4MUVceDA2XHg2 OFx4QjRceDI3XHg4NFx4ODFceDM4XHgwMVx4NTdceDk2XHg0MSIKLSsgICAgICAgICJceEIyXHg5 NFx4MTBceEIzXHhDN1x4OTlceDhEXHg2Qlx4QzRceDY1XHg3NFx4NUVceDVDXHgzOVx4MjZceDY5 IgotKyAgICAgICAgIlx4RDZceDg3XHgwRFx4QTJceEMwXHg4Mlx4QTlceDM5XHhFM1x4N0ZceERD XHhCOFx4MkVceEM5XHgzRVx4REEiCi0rICAgICAgICAiXHhDOVx4N0ZceEYzXHhBRFx4NTlceDUw XHhBQ1x4Q0ZceEJDXHgxMVx4MUNceDc2XHhGMVx4QTlceDUyXHg5NCIKLSsgICAgICAgICJceDQ0 XHhFNVx4NkFceEFGXHg2OFx4QzVceDZDXHgwOVx4MkNceEQzXHg4RFx4QzNceEJFXHhGNVx4RDJc eDBBIgotKyAgICAgICAgIlx4OTNceDk5XHgyNlx4RURceDRGXHg3NFx4QTFceDNFXHhERFx4RkJc eEUxXHhBMVx4Q0VceENDXHg0OFx4OTQiCi0rICAgICAgICAiXHhBRlx4OTRceDI4XHhDMlx4Qjdc eEI4XHg4OFx4M0ZceEU0XHg0Nlx4M0FceDRCXHhDOFx4NUJceDFDXHhCMyIKLSsgICAgICAgICJc eEMxIjsKLSsKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcFtdID0KLSsgICAgICAg ICJceDAwXHhFRVx4Q0ZceEFFXHg4MVx4QjFceEI5XHhCM1x4QzlceDA4XHg4MVx4MEJceDEwXHhB MVx4QjVceDYwIgotKyAgICAgICAgIlx4MDFceDk5XHhFQlx4OUZceDQ0XHhBRVx4RjRceEZEXHhB NFx4OTNceEI4XHgxQVx4OUVceDNEXHg4NFx4RjYiCi0rICAgICAgICAiXHgzMlx4MTJceDRFXHhG MFx4MjNceDZFXHg1RFx4MUVceDNCXHg3RVx4MjhceEZBXHhFN1x4QUFceDA0XHgwQSIKLSsgICAg ICAgICJceDJEXHg1Qlx4MjVceDIxXHg3Nlx4NDVceDlEXHgxRlx4MzlceDc1XHg0MVx4QkFceDJB XHg1OFx4RkJceDY1IgotKyAgICAgICAgIlx4OTkiOwotKwotKyAgICBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBxW10gPQotKyAgICAgICAgIlx4MDBceEM5XHg3Rlx4QjFceEYwXHgyN1x4RjRc eDUzXHhGNlx4MzRceDEyXHgzM1x4RUFceEFBXHhEMVx4RDkiCi0rICAgICAgICAiXHgzNVx4M0Zc eDZDXHg0Mlx4RDBceDg4XHg2Nlx4QjFceEQwXHg1QVx4MEZceDIwXHgzNVx4MDJceDhCXHg5RCIK LSsgICAgICAgICJceDg2XHg5OFx4NDBceEI0XHgxNlx4NjZceEI0XHgyRVx4OTJceEVBXHgwRFx4 QTNceEI0XHgzMlx4MDRceEI1IgotKyAgICAgICAgIlx4Q0ZceENFXHgzM1x4NTJceDUyXHg0RFx4 MDRceDE2XHhBNVx4QTRceDQxXHhFN1x4MDBceEFGXHg0Nlx4MTUiCi0rICAgICAgICAiXHgwMyI7 Ci0rCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRtcDFbXSA9Ci0rICAgICAgICAi XHg1NFx4NDlceDRDXHhBNlx4M0VceEJBXHgwM1x4MzdceEU0XHhFMlx4NDBceDIzXHhGQ1x4RDZc eDlBXHg1QSIKLSsgICAgICAgICJceEVCXHgwN1x4RERceERDXHgwMVx4ODNceEE0XHhEMFx4QUNc eDlCXHg1NFx4QjBceDUxXHhGMlx4QjFceDNFIgotKyAgICAgICAgIlx4RDlceDQ5XHgwOVx4NzVc eEVBXHhCN1x4NzRceDE0XHhGRlx4NTlceEMxXHhGN1x4NjlceDJFXHg5QVx4MkUiCi0rICAgICAg ICAiXHgyMFx4MkJceDM4XHhGQ1x4OTFceDBBXHg0N1x4NDFceDc0XHhBRFx4QzlceDNDXHgxRlx4 NjdceEM5XHg4MSI7Ci0rCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRtcTFbXSA9 Ci0rICAgICAgICAiXHg0N1x4MUVceDAyXHg5MFx4RkZceDBBXHhGMFx4NzVceDAzXHg1MVx4Qjdc eEY4XHg3OFx4ODZceDRDXHhBOSIKLSsgICAgICAgICJceDYxXHhBRFx4QkRceDNBXHg4QVx4N0Vc eDk5XHgxQ1x4NUNceDA1XHg1Nlx4QTlceDRDXHgzMVx4NDZceEE3IgotKyAgICAgICAgIlx4Rjlc eDgwXHgzRlx4OEZceDZGXHg4QVx4RTNceDQyXHhFOVx4MzFceEZEXHg4QVx4RTRceDdBXHgyMlx4 MEQiCi0rICAgICAgICAiXHgxQlx4OTlceEE0XHg5NVx4ODRceDk4XHgwN1x4RkVceDM5XHhGOVx4 MjRceDVBXHg5OFx4MzZceERBXHgzRCI7Ci0rCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGlxbXBbXSA9Ci0rICAgICAgICAiXHgwMFx4QjBceDZDXHg0Rlx4REFceEJCXHg2M1x4MDFc eDE5XHg4RFx4MjZceDVCXHhEQlx4QUVceDk0XHgyMyIKLSsgICAgICAgICJceEIzXHg4MFx4RjJc eDcxXHhGN1x4MzRceDUzXHg4OFx4NTBceDkzXHgwN1x4N0ZceENEXHgzOVx4RTJceDExIgotKyAg ICAgICAgIlx4OUZceEM5XHg4Nlx4MzJceDE1XHg0Rlx4NThceDgzXHhCMVx4NjdceEE5XHg2N1x4 QkZceDQwXHgyQlx4NEUiCi0rICAgICAgICAiXHg5RVx4MkVceDBGXHg5Nlx4NTZceEU2XHg5OFx4 RUFceDM2XHg2Nlx4RURceEZCXHgyNVx4NzlceDgwXHgzOSIKLSsgICAgICAgICJceEY3IjsKLSsK LSsgICAga2V5LT5uID0gQk5fYmluMmJuKG4sIHNpemVvZihuKSAtIDEsIGtleS0+bik7Ci0rICAg IGlmIChjb3JydXB0X3JzYSkKLSsgICAgICAgIEJOX3NldF9iaXQoa2V5LT5uLCAxMDI0KTsKLSsg ICAga2V5LT5lID0gQk5fYmluMmJuKGUsIHNpemVvZihlKSAtIDEsIGtleS0+ZSk7Ci0rICAgIGtl eS0+ZCA9IEJOX2JpbjJibihkLCBzaXplb2YoZCkgLSAxLCBrZXktPmQpOwotKyAgICBrZXktPnAg PSBCTl9iaW4yYm4ocCwgc2l6ZW9mKHApIC0gMSwga2V5LT5wKTsKLSsgICAga2V5LT5xID0gQk5f YmluMmJuKHEsIHNpemVvZihxKSAtIDEsIGtleS0+cSk7Ci0rICAgIGtleS0+ZG1wMSA9IEJOX2Jp bjJibihkbXAxLCBzaXplb2YoZG1wMSkgLSAxLCBrZXktPmRtcDEpOwotKyAgICBrZXktPmRtcTEg PSBCTl9iaW4yYm4oZG1xMSwgc2l6ZW9mKGRtcTEpIC0gMSwga2V5LT5kbXExKTsKLSsgICAga2V5 LT5pcW1wID0gQk5fYmluMmJuKGlxbXAsIHNpemVvZihpcW1wKSAtIDEsIGtleS0+aXFtcCk7Ci0r ICAgIHJldHVybiAxOwotK30KLSsKLSt2b2lkIEZJUFNfY29ycnVwdF9yc2EoKQotK3sKLSsgICAg Y29ycnVwdF9yc2EgPSAxOwotK30KLSsKLSsvKiBLbm93biBBbnN3ZXIgVGVzdCAoS0FUKSBkYXRh IGZvciB0aGUgYWJvdmUgUlNBIHByaXZhdGUga2V5IHNpZ25pbmcKLSsgKiBrYXRfdGJzLgotKyAq LwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF90YnNbXSA9Ci0rICAgICJPcGVu U1NMIEZJUFMgMTQwLTIgUHVibGljIEtleSBSU0EgS0FUIjsKLSsKLStzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBrYXRfUlNBX1BTU19TSEExW10gPSB7Ci0rICAgIDB4MkQsIDB4QUYsIDB4NkUs IDB4QzIsIDB4OTgsIDB4RkIsIDB4OEEsIDB4QTEsIDB4QjksIDB4NDYsIDB4REEsIDB4MEYsCi0r ICAgIDB4MDEsIDB4MUUsIDB4MzcsIDB4OTMsIDB4QzIsIDB4NTUsIDB4MjcsIDB4RTQsIDB4MUQs IDB4RDIsIDB4OTAsIDB4QkIsCi0rICAgIDB4RjQsIDB4QkYsIDB4NEEsIDB4NzQsIDB4MzksIDB4 NTEsIDB4QkIsIDB4RTgsIDB4MEMsIDB4QjcsIDB4RjgsIDB4RDMsCi0rICAgIDB4RDEsIDB4REYs IDB4RTcsIDB4QkUsIDB4ODAsIDB4MDUsIDB4QzMsIDB4QjUsIDB4QzcsIDB4ODMsIDB4RDUsIDB4 NEMsCi0rICAgIDB4N0YsIDB4NDksIDB4RkIsIDB4M0YsIDB4MjksIDB4OUIsIDB4RTEsIDB4MTIs IDB4NTEsIDB4NjAsIDB4RDAsIDB4QTcsCi0rICAgIDB4MEQsIDB4QTksIDB4MjgsIDB4NTYsIDB4 NzMsIDB4RDksIDB4MDcsIDB4RTMsIDB4NUUsIDB4M0YsIDB4OUIsIDB4RjUsCi0rICAgIDB4QjYs IDB4RjMsIDB4RjIsIDB4NUUsIDB4NzQsIDB4QzksIDB4ODMsIDB4ODEsIDB4NDcsIDB4RjAsIDB4 QzUsIDB4NDUsCi0rICAgIDB4MEEsIDB4RTksIDB4OEUsIDB4MzgsIDB4RDcsIDB4MTgsIDB4QzYs IDB4MkEsIDB4MEYsIDB4RjgsIDB4QjcsIDB4MzEsCi0rICAgIDB4RDYsIDB4NTUsIDB4RTQsIDB4 NjYsIDB4NzgsIDB4ODEsIDB4RDQsIDB4RTYsIDB4REIsIDB4OUYsIDB4QkEsIDB4RTgsCi0rICAg IDB4MjMsIDB4QjUsIDB4N0YsIDB4REMsIDB4MDgsIDB4RUEsIDB4RDUsIDB4MjYsIDB4MUUsIDB4 MjAsIDB4MjUsIDB4ODQsCi0rICAgIDB4MjYsIDB4QzYsIDB4NzksIDB4QzksIDB4OUIsIDB4M0Qs IDB4N0UsIDB4QTkKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0Ff UFNTX1NIQTIyNFtdID0gewotKyAgICAweDM5LCAweDRBLCAweDZBLCAweDIwLCAweEJDLCAweEU5 LCAweDMzLCAweEVELCAweEVGLCAweEM1LCAweDU4LCAweEE3LAotKyAgICAweEZFLCAweDgxLCAw eEM0LCAweDM2LCAweDUwLCAweDlBLCAweDJDLCAweDgyLCAweDk4LCAweDA4LCAweDk1LCAweEZB LAotKyAgICAweEIxLCAweDlFLCAweEQyLCAweDU1LCAweDYxLCAweDg3LCAweDIxLCAweDU5LCAw eDg3LCAweDdCLCAweDFGLCAweDU3LAotKyAgICAweDMwLCAweDlELCAweDBELCAweDRBLCAweDA2 LCAweEVCLCAweDUyLCAweDM3LCAweDU1LCAweDU0LCAweDFDLCAweDg5LAotKyAgICAweDgzLCAw eDc1LCAweDU5LCAweDY1LCAweDY0LCAweDkwLCAweDJFLCAweDE2LCAweENDLCAweDg2LCAweDA1 LCAweEVFLAotKyAgICAweEIxLCAweEU2LCAweDdCLCAweEJBLCAweDE2LCAweDc1LCAweDBELCAw eDBDLCAweDY0LCAweDBCLCAweEFCLCAweDIyLAotKyAgICAweDE1LCAweDc4LCAweDZCLCAweDZG LCAweEE0LCAweEZCLCAweDc3LCAweDQwLCAweDY0LCAweDYyLCAweEQxLCAweEI1LAotKyAgICAw eDM3LCAweDFFLCAweEUwLCAweDNELCAweEE4LCAweEY5LCAweEQyLCAweEJELCAweEFBLCAweDM4 LCAweDI0LCAweDQ5LAotKyAgICAweDU4LCAweEQyLCAweDc0LCAweDg1LCAweEY0LCAweEI1LCAw eDkzLCAweDhFLCAweEY1LCAweDAzLCAweEVBLCAweDJELAotKyAgICAweEM4LCAweDUyLCAweEZB LCAweENGLCAweDdFLCAweDM1LCAweEIwLCAweDZBLCAweEFGLCAweDk1LCAweEMwLCAweDAwLAot KyAgICAweDU0LCAweDc2LCAweDNELCAweDBDLCAweDlDLCAweEIyLCAweEVFLCAweEMwCi0rfTsK LSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1BTU19TSEEyNTZbXSA9IHsK LSsgICAgMHg2RCwgMHgzRCwgMHhCRSwgMHg4RiwgMHg2MCwgMHg2RCwgMHgyNSwgMHgxNCwgMHhG MCwgMHgzMSwgMHhFMywgMHg4OSwKLSsgICAgMHgwMCwgMHg5NywgMHhGQSwgMHg5OSwgMHg3MSwg MHgyOCwgMHhFNSwgMHgxMCwgMHgyNSwgMHg5QSwgMHhGMywgMHg4RiwKLSsgICAgMHg3QiwgMHhD NSwgMHhBOCwgMHg0QSwgMHg3NCwgMHg1MSwgMHgzNiwgMHhFMiwgMHg4RCwgMHg3RCwgMHg3Mywg MHgyOCwKLSsgICAgMHhDMSwgMHg3NywgMHhDNiwgMHgyNywgMHg5NywgMHgwMCwgMHg4QiwgMHgw MCwgMHhBMywgMHg5NiwgMHg3MywgMHg0RSwKLSsgICAgMHg3RCwgMHgyRSwgMHgyQywgMHgzNCwg MHg2OCwgMHg4QywgMHg4RSwgMHhERiwgMHg5RCwgMHg0OSwgMHg0NywgMHgwNSwKLSsgICAgMHhB QiwgMHhGNSwgMHgwMSwgMHhENiwgMHg4MSwgMHg0NywgMHg3MCwgMHhGNSwgMHgxRCwgMHg2RCwg MHgyNiwgMHhCQSwKLSsgICAgMHgyRiwgMHg3QSwgMHg1NCwgMHg1MywgMHg0RSwgMHhFRCwgMHg3 MSwgMHhEOSwgMHg1QSwgMHhGMywgMHhEQSwgMHhCNiwKLSsgICAgMHgwQiwgMHg0NywgMHgzNCwg MHhBRiwgMHg5MCwgMHhEQywgMHhDOCwgMHhEOSwgMHg2RiwgMHg1NiwgMHhDRCwgMHg5RiwKLSsg ICAgMHgyMSwgMHhCNywgMHg3RSwgMHhBRCwgMHg3QywgMHgyRiwgMHg3NSwgMHg1MCwgMHg0Nywg MHgxMiwgMHhFNCwgMHg2RCwKLSsgICAgMHg1RiwgMHhCNywgMHgwMSwgMHhERiwgMHhDMywgMHgx MSwgMHg2QywgMHhBOSwgMHg5RSwgMHg0OSwgMHhCOSwgMHhGNiwKLSsgICAgMHg3MiwgMHhGNCwg MHhGNiwgMHhFRiwgMHg4OCwgMHgxRSwgMHgyRCwgMHgxQwotK307Ci0rCi0rc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9QU1NfU0hBMzg0W10gPSB7Ci0rICAgIDB4NDAsIDB4RkIs IDB4QTEsIDB4MjEsIDB4RjQsIDB4QjIsIDB4NDAsIDB4OUEsIDB4QjQsIDB4MzEsIDB4QTgsIDB4 RjIsCi0rICAgIDB4RUMsIDB4MUMsIDB4QzQsIDB4QzgsIDB4N0MsIDB4MjIsIDB4NjUsIDB4OUMs IDB4NTcsIDB4NDUsIDB4Q0QsIDB4NUUsCi0rICAgIDB4ODYsIDB4MDAsIDB4RjcsIDB4MjUsIDB4 NzgsIDB4REUsIDB4REMsIDB4N0EsIDB4NzEsIDB4NDQsIDB4OUEsIDB4Q0QsCi0rICAgIDB4QUEs IDB4MjUsIDB4RjQsIDB4QjIsIDB4RkMsIDB4RjAsIDB4NzUsIDB4RDksIDB4MkYsIDB4NzgsIDB4 MjMsIDB4N0YsCi0rICAgIDB4NkYsIDB4MDIsIDB4RUYsIDB4QzEsIDB4QUYsIDB4QTYsIDB4Mjgs IDB4MTYsIDB4MzEsIDB4REMsIDB4NDIsIDB4NkMsCi0rICAgIDB4QjIsIDB4NDQsIDB4RTUsIDB4 NEQsIDB4NjYsIDB4QTIsIDB4RTYsIDB4NzEsIDB4RjMsIDB4QUMsIDB4NEYsIDB4RkIsCi0rICAg IDB4OTEsIDB4Q0EsIDB4RjUsIDB4NzAsIDB4RUYsIDB4NkIsIDB4OUQsIDB4QTQsIDB4RUYsIDB4 RDksIDB4M0QsIDB4MkYsCi0rICAgIDB4M0EsIDB4QkUsIDB4ODksIDB4MzgsIDB4NTksIDB4MDEs IDB4QkEsIDB4REEsIDB4MzIsIDB4QUQsIDB4NDIsIDB4ODksCi0rICAgIDB4OTgsIDB4OEIsIDB4 MzksIDB4NDQsIDB4RjAsIDB4RkMsIDB4MzgsIDB4QUMsIDB4ODcsIDB4MUYsIDB4Q0EsIDB4NkYs Ci0rICAgIDB4NDgsIDB4RjYsIDB4QUUsIDB4RDcsIDB4NDUsIDB4RUUsIDB4QUUsIDB4ODgsIDB4 MEUsIDB4NjAsIDB4RjQsIDB4NTUsCi0rICAgIDB4NDgsIDB4NDQsIDB4RUUsIDB4MUYsIDB4OTAs IDB4MTgsIDB4NEIsIDB4RjEKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGth dF9SU0FfUFNTX1NIQTUxMltdID0gewotKyAgICAweDA3LCAweDFFLCAweEQ4LCAweEQ1LCAweDA1 LCAweEU4LCAweEU2LCAweEU2LCAweDU3LCAweEFFLCAweDYzLCAweDhDLAotKyAgICAweEM2LCAw eDgzLCAweEI3LCAweEEwLCAweDU5LCAweEJCLCAweEYyLCAweEM2LCAweDhGLCAweDEyLCAweDUz LCAweDlBLAotKyAgICAweDlCLCAweDU0LCAweDlFLCAweEIzLCAweEMxLCAweDFELCAweDIzLCAw eDRELCAweDUxLCAweEVELCAweDlFLCAweERELAotKyAgICAweDRCLCAweEYzLCAweDQ2LCAweDlC LCAweDZCLCAweEY2LCAweDdDLCAweDI0LCAweDYwLCAweDc5LCAweDIzLCAweDM5LAotKyAgICAw eDAxLCAweDFDLCAweDUxLCAweENCLCAweEQ4LCAweEU5LCAweDlBLCAweDAxLCAweDY3LCAweDVG LCAweEZFLCAweEQ3LAotKyAgICAweDdDLCAweEUzLCAweDdGLCAweEVELCAweERCLCAweDg3LCAw eEJCLCAweEYwLCAweDNELCAweDc4LCAweDU1LCAweDYxLAotKyAgICAweDU3LCAweEUzLCAweDBG LCAweEUzLCAweEQyLCAweDlELCAweDBDLCAweDJBLCAweDIwLCAweEIwLCAweDg1LCAweDEzLAot KyAgICAweEM1LCAweDQ3LCAweDM0LCAweDBELCAweDMyLCAweDE1LCAweEM4LCAweEFFLCAweDlB LCAweDZBLCAweDM5LCAweDYzLAotKyAgICAweDJELCAweDYwLCAweEY1LCAweDRDLCAweERGLCAw eDhBLCAweDQ4LCAweDRCLCAweEJGLCAweEY0LCAweEE4LCAweEZFLAotKyAgICAweDc2LCAweEYy LCAweDMyLCAweDFCLCAweDlDLCAweDdDLCAweENBLCAweEZFLCAweDdGLCAweDgwLCAweEMyLCAw eDg4LAotKyAgICAweDVDLCAweDk3LCAweDcwLCAweEI0LCAweDI2LCAweEM5LCAweDE0LCAweDhC Ci0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1NIQTFbXSA9IHsK LSsgICAgMHg3MSwgMHhFRSwgMHgxQSwgMHhDMCwgMHhGRSwgMHgwMSwgMHg5MywgMHg1NCwgMHg3 OSwgMHg1QywgMHhGMiwgMHg0QywKLSsgICAgMHg0QSwgMHhGRCwgMHgxQSwgMHgwNSwgMHg4Riwg MHg2NCwgMHhCMSwgMHg2RCwgMHg2MSwgMHgzMywgMHg4RCwgMHg5QiwKLSsgICAgMHhFNywgMHhG RCwgMHg2MCwgMHhBMywgMHg4MywgMHhCNSwgMHhBMywgMHg1MSwgMHg1NSwgMHg3NywgMHg5MCwg MHhDRiwKLSsgICAgMHhEQywgMHgyMiwgMHgzNywgMHg4RSwgMHhEMCwgMHhFMSwgMHhBRSwgMHgw OSwgMHhFMywgMHgzRCwgMHgxRSwgMHhGOCwKLSsgICAgMHg4MCwgMHhEMSwgMHg4QiwgMHhDMiwg MHhFQywgMHgwQSwgMHhENywgMHg2QiwgMHg4OCwgMHg4QiwgMHg4QiwgMHhBMSwKLSsgICAgMHgy MCwgMHgyMiwgMHhCRSwgMHg1OSwgMHg1QiwgMHhFMCwgMHgyMywgMHgyNCwgMHhBMSwgMHg0OSwg MHgzMCwgMHhCQSwKLSsgICAgMHhBOSwgMHg5RSwgMHhFOCwgMHhCMSwgMHg4QSwgMHg2MiwgMHgx NiwgMHhCRiwgMHg0RSwgMHhDQSwgMHgyRSwgMHg0RSwKLSsgICAgMHhCQywgMHgyOSwgMHhBOCwg MHg2NywgMHgxMywgMHhCNywgMHg5RiwgMHgxRCwgMHgwNCwgMHg0NCwgMHhFNSwgMHg1RiwKLSsg ICAgMHgzNSwgMHgwNywgMHgxMSwgMHhCQywgMHhFRCwgMHgxOSwgMHgzNywgMHgyMSwgMHhDRiwg MHgyMywgMHg0OCwgMHgxRiwKLSsgICAgMHg3MiwgMHgwNSwgMHhERSwgMHhFNiwgMHhFOCwgMHg3 RiwgMHgzMywgMHg4QSwgMHg3NiwgMHg0QiwgMHgyRiwgMHg5NSwKLSsgICAgMHhERiwgMHhGMSwg MHg1RiwgMHg4NCwgMHg4MCwgMHhEOSwgMHg0NiwgMHhCNAotK307Ci0rCi0rc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9TSEEyMjRbXSA9IHsKLSsgICAgMHg2MiwgMHhBQSwgMHg3 OSwgMHhBOSwgMHgxOCwgMHgwRSwgMHg1RiwgMHg4QywgMHhCQiwgMHhCNywgMHgxNSwgMHhGOSwK LSsgICAgMHgyNSwgMHhCQiwgMHhGQSwgMHhENCwgMHgzQSwgMHgzNCwgMHhFRCwgMHg5RSwgMHhB MCwgMHhBOSwgMHgxOCwgMHg4RCwKLSsgICAgMHg1QiwgMHg1NSwgMHg5QSwgMHg3RSwgMHgxRSwg MHgwOCwgMHgwOCwgMHg2MCwgMHhDNSwgMHgxQSwgMHhDNSwgMHg4OSwKLSsgICAgMHgwOCwgMHhF MiwgMHgxQiwgMHhCRCwgMHg2MiwgMHg1MCwgMHgxNywgMHg3NiwgMHgzMCwgMHgyQywgMHg5RSwg MHhDRCwKLSsgICAgMHhBNCwgMHgwMiwgMHhBRCwgMHhCMSwgMHg2RCwgMHg0NCwgMHg2RCwgMHhE NSwgMHhDNiwgMHg0NSwgMHg0MSwgMHhFNSwKLSsgICAgMHhFRSwgMHgxRiwgMHg4RCwgMHg3RSwg MHgwOCwgMHgxNiwgMHhBNiwgMHhFMSwgMHg1RSwgMHgwQiwgMHhBOSwgMHhDQywKLSsgICAgMHhE QiwgMHg1OSwgMHg1NSwgMHg4NywgMHgwOSwgMHgyNSwgMHg3MCwgMHg4NiwgMHg4NCwgMHgwMiwg MHhDNiwgMHgzQiwKLSsgICAgMHgwQiwgMHg0NCwgMHg0QywgMHg0NiwgMHg5NSwgMHhGNCwgMHhG OCwgMHg1QSwgMHg5MSwgMHgyOCwgMHgzRSwgMHhCMiwKLSsgICAgMHg1OCwgMHgyRSwgMHgwNiwg MHg0NSwgMHg0OSwgMHhFMCwgMHg5MiwgMHhFMiwgMHhDMCwgMHg2NiwgMHhFNiwgMHgzNSwKLSsg ICAgMHhEOSwgMHg3OSwgMHg3RiwgMHgxNywgMHg1RSwgMHgwMiwgMHg3MywgMHgwNCwgMHg3Nywg MHg4MiwgMHhFNiwgMHhEQywKLSsgICAgMHg0MCwgMHgyMSwgMHg4OSwgMHg4QiwgMHgzNywgMHgz RSwgMHgxRSwgMHg4RAotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JT QV9TSEEyNTZbXSA9IHsKLSsgICAgMHgwRCwgMHg1NSwgMHhFMiwgMHhBQSwgMHg4MSwgMHhEQiwg MHg4RSwgMHg4MiwgMHgwNSwgMHgxNywgMHhBNSwgMHgyMywKLSsgICAgMHhFNywgMHgzQiwgMHgx RCwgMHhBRiwgMHhGQiwgMHg4QywgMHhEMCwgMHg4MSwgMHgyMCwgMHg3QiwgMHhBQSwgMHgyMywK LSsgICAgMHg5MiwgMHg4NywgMHg4QywgMHhEMSwgMHg1MywgMHg4NSwgMHgxNiwgMHhEQywgMHhC RSwgMHhBRCwgMHg2RiwgMHgzNSwKLSsgICAgMHg5OCwgMHgyRCwgMHg2OSwgMHg4NCwgMHhCRiwg MHhEOSwgMHg4QSwgMHgwMSwgMHgxNywgMHg1OCwgMHhCMiwgMHg2RSwKLSsgICAgMHgyQywgMHg0 NCwgMHg5QiwgMHg5MCwgMHhGMSwgMHhGQiwgMHg1MSwgMHhFOCwgMHg2QSwgMHg5MCwgMHgyRCwg MHgxOCwKLSsgICAgMHgwRSwgMHhDMCwgMHg5MCwgMHgxMCwgMHgyNCwgMHhBOSwgMHgxRCwgMHhC MywgMHg1OCwgMHg3QSwgMHg5MSwgMHgzMCwKLSsgICAgMHhCRSwgMHgyMiwgMHhDNywgMHhEMywg MHhFQywgMHhDMywgMHgwOSwgMHg1RCwgMHhCRiwgMHhFMiwgMHg4MCwgMHgzQSwKLSsgICAgMHg3 QywgMHg4NSwgMHhCNCwgMHhCQywgMHhEMSwgMHhFOSwgMHhGMCwgMHg1QywgMHhERSwgMHg4MSwg MHhBNiwgMHgzOCwKLSsgICAgMHhCOCwgMHg0MiwgMHhCQiwgMHg4NiwgMHhDNSwgMHg5RCwgMHhD RSwgMHg3QywgMHgyQywgMHhFRSwgMHhEMSwgMHhEQSwKLSsgICAgMHgyNywgMHg0OCwgMHgyQiwg MHhGNSwgMHhBQiwgMHhCOSwgMHhGNywgMHg4MCwgMHhEMSwgMHg5MCwgMHgyNywgMHg5MCwKLSsg ICAgMHhCRCwgMHg0NCwgMHg5NywgMHg2MCwgMHhDRCwgMHg1NywgMHhDMCwgMHg3QQotK307Ci0r Ci0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9TSEEzODRbXSA9IHsKLSsgICAg MHgxRCwgMHhFMywgMHg2QSwgMHhERCwgMHgyNywgMHg0QywgMHhDMCwgMHhBNSwgMHgyNywgMHhF RiwgMHhFNiwgMHgxRiwKLSsgICAgMHhEMiwgMHg5MSwgMHg2OCwgMHg1OSwgMHgwNCwgMHhBRSwg MHhCRCwgMHg5OSwgMHg2MywgMHg1NiwgMHg0NywgMHhDNywKLSsgICAgMHg2RiwgMHgyMiwgMHgx NiwgMHg0OCwgMHhEMCwgMHhGOSwgMHgxOCwgMHhBOSwgMHhDQSwgMHhGQSwgMHg1RCwgMHg1QywK LSsgICAgMHhBNywgMHg2NSwgMHg1MiwgMHg4QSwgMHhDOCwgMHg0NCwgMHg3RSwgMHg4NiwgMHg1 RCwgMHhBOSwgMHhBNiwgMHg1NSwKLSsgICAgMHg2NSwgMHgzRSwgMHhEOSwgMHgyRCwgMHgwMiwg MHgzOCwgMHhBOCwgMHg3OSwgMHgyOCwgMHg3RiwgMHhCNiwgMHhDRiwKLSsgICAgMHg4MiwgMHhE RCwgMHg3RSwgMHg1NSwgMHhFMSwgMHhCMSwgMHhCQywgMHhFMiwgMHgxOSwgMHgyQiwgMHgzMCwg MHhDMiwKLSsgICAgMHgxQiwgMHgyQiwgMHhCMCwgMHg4MiwgMHg0NiwgMHhBQywgMHg0QiwgMHhE MSwgMHhFMiwgMHg3RCwgMHhFQiwgMHg4QywKLSsgICAgMHhGRiwgMHg5NSwgMHhFOSwgMHg2QSwg MHgxQywgMHgzRCwgMHg0RCwgMHhCRiwgMHg4RiwgMHg4QiwgMHg5QywgMHhDRCwKLSsgICAgMHhF QSwgMHg4NSwgMHhFRSwgMHgwMCwgMHhEQywgMHgxQywgMHhBNywgMHhFQiwgMHhEMCwgMHg4Riwg MHg5OSwgMHhGMSwKLSsgICAgMHgxNiwgMHgyOCwgMHgyNCwgMHg2NCwgMHgwNCwgMHgzOSwgMHgy RCwgMHg1OCwgMHgxRSwgMHgzNywgMHhEQywgMHgwNCwKLSsgICAgMHhCRCwgMHgzMSwgMHhBMiwg MHgyRiwgMHhCMywgMHgzNSwgMHg1NiwgMHhCRgotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIga2F0X1JTQV9TSEE1MTJbXSA9IHsKLSsgICAgMHg2OSwgMHg1MiwgMHgxQiwgMHg1 MSwgMHg1RSwgMHgwNiwgMHhDQSwgMHg5QiwgMHgxNiwgMHg1MSwgMHg1RCwgMHhDRiwKLSsgICAg MHg0OSwgMHgyNSwgMHg0QSwgMHhBMSwgMHg2QSwgMHg3NywgMHg0QywgMHgzNiwgMHg0MCwgMHhG OCwgMHhCMiwgMHg5QSwKLSsgICAgMHgxNSwgMHhFQSwgMHg1QywgMHhFNSwgMHhFNiwgMHg4Miwg MHhFMCwgMHg4NiwgMHg4MiwgMHg2QiwgMHgzMiwgMHhGMSwKLSsgICAgMHgwNCwgMHhDMSwgMHg1 QSwgMHgxQSwgMHhFRCwgMHgxRSwgMHg5QSwgMHhCNiwgMHg0QywgMHg1NCwgMHg5RiwgMHhEOCwK LSsgICAgMHg4RCwgMHhDQywgMHhBQywgMHg4QSwgMHhCQiwgMHg5QywgMHg4MiwgMHgzRiwgMHhB NiwgMHg1MywgMHg2MiwgMHhCNSwKLSsgICAgMHg4MCwgMHhFMiwgMHhCQywgMHhERCwgMHg2Nywg MHgyQiwgMHhEOSwgMHgzRiwgMHhFNCwgMHg3NSwgMHg5MiwgMHg2QiwKLSsgICAgMHhBRiwgMHg2 MiwgMHg3QywgMHg1MiwgMHhGMCwgMHhFRSwgMHgzMywgMHhERiwgMHgxQiwgMHgxRCwgMHg0Nywg MHhFNiwKLSsgICAgMHg1OSwgMHg1NiwgMHhBNSwgMHhCOSwgMHg1QywgMHhFNiwgMHg3NywgMHg3 OCwgMHgxNiwgMHg2MywgMHg4NCwgMHgwNSwKLSsgICAgMHg2RiwgMHgwRSwgMHgyQiwgMHgzMSwg MHg5RCwgMHhGNywgMHg3RiwgMHhCMiwgMHg2NCwgMHg3MSwgMHhFMCwgMHgyRCwKLSsgICAgMHgz RSwgMHg2MiwgMHhDRSwgMHhCNSwgMHgzRiwgMHg4OCwgMHhERiwgMHgyRCwgMHhBQiwgMHg5OCwg MHg2NSwgMHg5MSwKLSsgICAgMHhERiwgMHg3MCwgMHgxNCwgMHhBNSwgMHgzRiwgMHgzNiwgMHhB QiwgMHg4NAotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9YOTMx X1NIQTFbXSA9IHsKLSsgICAgMHg4NiwgMHhCNCwgMHgxOCwgMHhCQSwgMHhEMSwgMHg4MCwgMHhC NiwgMHg3QywgMHg0MiwgMHg0NSwgMHg0RCwgMHhERiwKLSsgICAgMHhFOSwgMHgyRCwgMHhFMSwg MHg4MywgMHg1RiwgMHhCNSwgMHgyRiwgMHhDOSwgMHhDRCwgMHhDNCwgMHhCMiwgMHg3NSwKLSsg ICAgMHg4MCwgMHhBNCwgMHhGMSwgMHg0QSwgMHhFNywgMHg4MywgMHgxMiwgMHgxRSwgMHgxRSwg MHgxNCwgMHhCOCwgMHhBQywKLSsgICAgMHgzNSwgMHhFMiwgMHhBQSwgMHgwQiwgMHg1QywgMHhG OCwgMHgzOCwgMHg0RCwgMHgwNCwgMHhFRSwgMHhBOSwgMHg5NywKLSsgICAgMHg3MCwgMHhGQiwg MHg1RSwgMHhFNywgMHhCNywgMHhFMywgMHg2MiwgMHgyMywgMHg0QiwgMHgzOCwgMHhCRSwgMHhE NiwKLSsgICAgMHg1MywgMHgxNSwgMHhGNywgMHhERiwgMHg4NywgMHhCNCwgMHgwRSwgMHhDQywg MHhCMSwgMHgxQSwgMHgxMSwgMHgxOSwKLSsgICAgMHhFRSwgMHg1MSwgMHhDQywgMHg5MiwgMHhE RCwgMHhCQywgMHg2MywgMHgyOSwgMHg2MywgMHgwQywgMHg1OSwgMHhENywKLSsgICAgMHg2Riwg MHg0QywgMHgzQywgMHgzNywgMHg1QiwgMHgzNywgMHgwMywgMHg2MSwgMHg3RCwgMHgyNCwgMHgx QywgMHg5OSwKLSsgICAgMHg0OCwgMHhBRiwgMHg4MiwgMHhGRSwgMHgzMiwgMHg0MSwgMHg5Qiwg MHhCMiwgMHhEQiwgMHhFQSwgMHhFRCwgMHg3NiwKLSsgICAgMHg4RSwgMHg2RSwgMHhDQSwgMHg3 RSwgMHg0RSwgMHgxNCwgMHhCQSwgMHgzMCwgMHg4NCwgMHgxQywgMHhCMywgMHg2NywKLSsgICAg MHhBMywgMHgyOSwgMHg4MCwgMHg3MCwgMHg1NCwgMHg2OCwgMHg3RCwgMHg0OQotK307Ci0rCi0r c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9YOTMxX1NIQTI1NltdID0gewotKyAg ICAweDdFLCAweEEyLCAweDc3LCAweEZFLCAweEI4LCAweDU0LCAweDhBLCAweEM3LCAweDdGLCAw eDY0LCAweDU0LCAweDg5LAotKyAgICAweEU1LCAweDUyLCAweDE1LCAweDhFLCAweDUyLCAweDk2 LCAweDRFLCAweEE2LCAweDU4LCAweDkyLCAweDFDLCAweERELAotKyAgICAweEVBLCAweEEyLCAw eDJELCAweDVDLCAweEQxLCAweDYyLCAweDAwLCAweDQ5LCAweDA1LCAweDk1LCAweDczLCAweENG LAotKyAgICAweDE2LCAweDc2LCAweDY4LCAweEY2LCAweEM2LCAweDVFLCAweDgwLCAweEI4LCAw eEI4LCAweDdCLCAweEM4LCAweDlCLAotKyAgICAweEM2LCAweDUzLCAweDg4LCAweDI2LCAweDIw LCAweDg4LCAweDczLCAweEI2LCAweDEzLCAweEI4LCAweEYwLCAweDRCLAotKyAgICAweDAwLCAw eDg1LCAweEYzLCAweERELCAweDA3LCAweDUwLCAweEVCLCAweDIwLCAweEM0LCAweDM4LCAweDBF LCAweDk4LAotKyAgICAweEFELCAweDRFLCAweDQ5LCAweDJDLCAweEQ3LCAweDY1LCAweEE1LCAw eDE5LCAweDBFLCAweDU5LCAweDAxLCAweEVDLAotKyAgICAweDdFLCAweDc1LCAweDg5LCAweDY5 LCAweDJFLCAweDYzLCAweDc2LCAweDg1LCAweDQ2LCAweDhELCAweEEwLCAweDhDLAotKyAgICAw eDMzLCAweDFELCAweDgyLCAweDhDLCAweDAzLCAweEVBLCAweDY5LCAweDg4LCAweDM1LCAweEEx LCAweDQyLCAweEJELAotKyAgICAweDIxLCAweEVELCAweDhELCAweEJDLCAweEJDLCAweERCLCAw eDMwLCAweEZGLCAweDg2LCAweEYwLCAweDVCLCAweERDLAotKyAgICAweEUzLCAweEUyLCAweEU4 LCAweDBBLCAweDBBLCAweDI5LCAweDk0LCAweDgwCi0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBrYXRfUlNBX1g5MzFfU0hBMzg0W10gPSB7Ci0rICAgIDB4NUMsIDB4N0QsIDB4 OTYsIDB4MzUsIDB4RUMsIDB4N0UsIDB4MTEsIDB4MzgsIDB4QkIsIDB4N0IsIDB4RUMsIDB4N0Is Ci0rICAgIDB4RjIsIDB4ODIsIDB4OEUsIDB4OTksIDB4QkQsIDB4RUYsIDB4RDgsIDB4QUUsIDB4 RDcsIDB4MzksIDB4MzcsIDB4Q0IsCi0rICAgIDB4RTYsIDB4NEYsIDB4NUUsIDB4MEEsIDB4MTMs IDB4RTQsIDB4MkUsIDB4NDAsIDB4QjksIDB4QkUsIDB4MkUsIDB4RTMsCi0rICAgIDB4RUYsIDB4 NzgsIDB4ODMsIDB4MTgsIDB4NDQsIDB4MzUsIDB4OUMsIDB4OEUsIDB4RDcsIDB4NEEsIDB4NjMs IDB4RjYsCi0rICAgIDB4NTcsIDB4QzIsIDB4QjAsIDB4MDgsIDB4NTEsIDB4NzMsIDB4Q0YsIDB4 Q0EsIDB4OTksIDB4NjYsIDB4RUUsIDB4MzEsCi0rICAgIDB4RDgsIDB4NjksIDB4RTksIDB4QUIs IDB4MTMsIDB4MjcsIDB4N0IsIDB4NDEsIDB4MUUsIDB4NkQsIDB4OEQsIDB4RjEsCi0rICAgIDB4 M0UsIDB4OUMsIDB4MzUsIDB4OTUsIDB4NTgsIDB4REQsIDB4MkIsIDB4RDUsIDB4QTAsIDB4NjAs IDB4NDEsIDB4NzksCi0rICAgIDB4MjQsIDB4MjIsIDB4RTQsIDB4QjcsIDB4QkYsIDB4NDcsIDB4 NTMsIDB4RjYsIDB4MzQsIDB4RDUsIDB4N0MsIDB4RkYsCi0rICAgIDB4MEUsIDB4MDksIDB4RUUs IDB4MkUsIDB4RTIsIDB4MzcsIDB4QjksIDB4REUsIDB4QzUsIDB4MTIsIDB4NDQsIDB4MzUsCi0r ICAgIDB4RUYsIDB4MDEsIDB4RTYsIDB4NUUsIDB4MzksIDB4MzEsIDB4MkQsIDB4NzEsIDB4QTUs IDB4REMsIDB4QzYsIDB4NkQsCi0rICAgIDB4RTIsIDB4Q0QsIDB4ODUsIDB4REIsIDB4NzMsIDB4 ODIsIDB4NjUsIDB4MjgKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF9S U0FfWDkzMV9TSEE1MTJbXSA9IHsKLSsgICAgMHhBNiwgMHg2NSwgMHhBMiwgMHg3NywgMHg0Riwg MHhCMywgMHg4NiwgMHhDQiwgMHg2NCwgMHgzQSwgMHhDMSwgMHg2MywKLSsgICAgMHhGQywgMHhB MSwgMHhBQSwgMHhDQiwgMHg5QiwgMHg3OSwgMHhERCwgMHg0QiwgMHhFMSwgMHhEOSwgMHhEQSwg MHhBQywKLSsgICAgMHhFNywgMHg0NywgMHgwOSwgMHhCMiwgMHgxMSwgMHg0QiwgMHg4QSwgMHhB QSwgMHgwNSwgMHg5RSwgMHg3NywgMHhENywKLSsgICAgMHgzQSwgMHhCRCwgMHg1RSwgMHg1Mywg MHgwOSwgMHg0QSwgMHhFNiwgMHgwRiwgMHg1RSwgMHhGOSwgMHgxNCwgMHgyOCwKLSsgICAgMHhB MCwgMHg5OSwgMHg3NCwgMHg2NCwgMHg3MCwgMHg0RSwgMHhGMiwgMHhFMywgMHhGQSwgMHhDNywg MHhGOCwgMHhDNSwKLSsgICAgMHg2RSwgMHgyQiwgMHg3OSwgMHg5NiwgMHgwRCwgMHgwQywgMHhD OCwgMHgxMCwgMHgzNCwgMHg1MywgMHhEMiwgMHhBRiwKLSsgICAgMHgxNywgMHgwRSwgMHhFMCwg MHhCRiwgMHg3OSwgMHhGNiwgMHgwNCwgMHg3MiwgMHgxMCwgMHhFMCwgMHhGNiwgMHhEMCwKLSsg ICAgMHhDRSwgMHg4QSwgMHg2RiwgMHhBMSwgMHg5NSwgMHg4OSwgMHhCRiwgMHg1OCwgMHg4Riwg MHg0NiwgMHg1RiwgMHgwOSwKLSsgICAgMHg5RiwgMHgwOSwgMHhDQSwgMHg4NCwgMHgxNSwgMHg4 NSwgMHhFMCwgMHhFRCwgMHgwNCwgMHgyRCwgMHhGQiwgMHg3QywKLSsgICAgMHgzNiwgMHgzNSwg MHgyMSwgMHgzMSwgMHhDMywgMHhGRCwgMHg5MiwgMHg0MiwgMHgxMSwgMHgzMCwgMHg3MSwgMHgx QiwKLSsgICAgMHg2MCwgMHg4MywgMHgxOCwgMHg4OCwgMHhBMywgMHhGNSwgMHg1OSwgMHhDMwot K307Ci0rCi0raW50IEZJUFNfc2VsZnRlc3RfcnNhKCkKLSt7Ci0rICAgIGludCByZXQgPSAwOwot KyAgICBSU0EgKmtleTsKLSsgICAgRVZQX1BLRVkgKnBrID0gTlVMTDsKLSsKLSsgICAgaWYgKChr ZXkgPSBSU0FfbmV3KCkpID09IE5VTEwpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgc2V0cnNh a2V5KGtleSk7Ci0rICAgIGlmICgocGsgPSBFVlBfUEtFWV9uZXcoKSkgPT0gTlVMTCkKLSsgICAg ICAgIGdvdG8gZXJyOwotKwotKyAgICBFVlBfUEtFWV9hc3NpZ25fUlNBKHBrLCBrZXkpOwotKwot KyAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGth dF90YnMpIC0gMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0X1JTQV9T SEExLCBzaXplb2Yoa2F0X1JTQV9TSEExKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRVZQX3NoYTEoKSwgRVZQX01EX0NUWF9GTEFHX1BBRF9QS0NTMSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIlJTQSBTSEExIFBLQ1MjMSIpKQotKyAgICAgICAgZ290 byBlcnI7Ci0rICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBz aXplb2Yoa2F0X3RicykgLSAxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr YXRfUlNBX1NIQTIyNCwgc2l6ZW9mKGthdF9SU0FfU0hBMjI0KSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRVZQX3NoYTIyNCgpLCBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BLQ1Mx LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUlNBIFNIQTIyNCBQS0NTIzEi KSkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVz dChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAga2F0X1JTQV9TSEEyNTYsIHNpemVvZihrYXRfUlNBX1NIQTI1NiksCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9zaGEyNTYoKSwgRVZQX01EX0NU WF9GTEFHX1BBRF9QS0NTMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJT QSBTSEEyNTYgUEtDUyMxIikpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgaWYgKCFmaXBzX3Br ZXlfc2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMsIHNpemVvZihrYXRfdGJzKSAtIDEsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthdF9SU0FfU0hBMzg0LCBzaXplb2Yoa2F0 X1JTQV9TSEEzODQpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBfc2hh Mzg0KCksIEVWUF9NRF9DVFhfRkxBR19QQURfUEtDUzEsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJSU0EgU0hBMzg0IFBLQ1MjMSIpKQotKyAgICAgICAgZ290byBlcnI7Ci0r ICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0 X3RicykgLSAxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYXRfUlNBX1NI QTUxMiwgc2l6ZW9mKGthdF9SU0FfU0hBNTEyKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRVZQX3NoYTUxMigpLCBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BLQ1MxLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUlNBIFNIQTUxMiBQS0NTIzEiKSkKLSsgICAg ICAgIGdvdG8gZXJyOwotKwotKyAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywg a2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAga2F0X1JTQV9QU1NfU0hBMSwgc2l6ZW9mKGthdF9SU0FfUFNTX1NIQTEpLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBfc2hhMSgpLCBFVlBfTURfQ1RYX0ZM QUdfUEFEX1BTUywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJTQSBTSEEx IFBTUyIpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVy ZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBrYXRfUlNBX1BTU19TSEEyMjQsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVvZihrYXRfUlNBX1BTU19TSEEyMjQpLCBFVlBfc2hhMjI0 KCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9NRF9DVFhfRkxBR19Q QURfUFNTLCAiUlNBIFNIQTIyNCBQU1MiKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBpZiAo IWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0g MSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0X1JTQV9QU1NfU0hBMjU2 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoa2F0X1JTQV9QU1Nf U0hBMjU2KSwgRVZQX3NoYTI1NigpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BTUywgIlJTQSBTSEEyNTYgUFNTIikpCi0rICAgICAgICBn b3RvIGVycjsKLSsgICAgaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMs IHNpemVvZihrYXRfdGJzKSAtIDEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGthdF9SU0FfUFNTX1NIQTM4NCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2l6ZW9mKGthdF9SU0FfUFNTX1NIQTM4NCksIEVWUF9zaGEzODQoKSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRVZQX01EX0NUWF9GTEFHX1BBRF9QU1MsICJSU0EgU0hBMzg0 IFBTUyIpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVy ZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBrYXRfUlNBX1BTU19TSEE1MTIsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVvZihrYXRfUlNBX1BTU19TSEE1MTIpLCBFVlBfc2hhNTEy KCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9NRF9DVFhfRkxBR19Q QURfUFNTLCAiUlNBIFNIQTUxMiBQU1MiKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAgICBp ZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMp IC0gMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0X1JTQV9YOTMxX1NI QTEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrYXRfUlNBX1g5 MzFfU0hBMSksIEVWUF9zaGExKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEVWUF9NRF9DVFhfRkxBR19QQURfWDkzMSwgIlJTQSBTSEExIFg5MzEiKSkKLSsgICAgICAgIGdv dG8gZXJyOwotKyAgICAvKiBOQjogU0hBMjI0IG5vdCBzdXBwb3J0ZWQgaW4gWDkuMzEgKi8KLSsg ICAgaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMsIHNpemVvZihrYXRf dGJzKSAtIDEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthdF9SU0FfWDkz MV9TSEEyNTYsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrYXRf UlNBX1g5MzFfU0hBMjU2KSwgRVZQX3NoYTI1NigpLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFVlBfTURfQ1RYX0ZMQUdfUEFEX1g5MzEsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJSU0EgU0hBMjU2IFg5MzEiKSkKLSsgICAgICAgIGdvdG8gZXJyOwot KyAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGth dF90YnMpIC0gMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0X1JTQV9Y OTMxX1NIQTM4NCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGth dF9SU0FfWDkzMV9TSEEzODQpLCBFVlBfc2hhMzg0KCksCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVWUF9NRF9DVFhfRkxBR19QQURfWDkzMSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIlJTQSBTSEEzODQgWDkzMSIpKQotKyAgICAgICAgZ290byBlcnI7 Ci0rICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yo a2F0X3RicykgLSAxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYXRfUlNB X1g5MzFfU0hBNTEyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yo a2F0X1JTQV9YOTMxX1NIQTUxMiksIEVWUF9zaGE1MTIoKSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRVZQX01EX0NUWF9GTEFHX1BBRF9YOTMxLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiUlNBIFNIQTUxMiBYOTMxIikpCi0rICAgICAgICBnb3RvIGVy cjsKLSsKLSsgICAgcmV0ID0gMTsKLSsKLSsgZXJyOgotKyAgICBpZiAocGspCi0rICAgICAgICBF VlBfUEtFWV9mcmVlKHBrKTsKLSsgICAgZWxzZSBpZiAoa2V5KQotKyAgICAgICAgUlNBX2ZyZWUo a2V5KTsKLSsgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rI2VuZGlmICAgICAgICAgICAgICAgICAg ICAgICAgICAvKiBkZWYgT1BFTlNTTF9GSVBTICovCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9j cnlwdG8vZmlwcy9maXBzX3JzYV94OTMxZy5jLmZpcHMgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2Zp cHMvZmlwc19yc2FfeDkzMWcuYwotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNf cnNhX3g5MzFnLmMuZmlwcwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxOTIyMTA0MyArMDIwMAotKysr IG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfcnNhX3g5MzFnLmMJMjAxNi0wOS0yMiAx MzozNTo1Ny4wMTkyMjEwNDMgKzAyMDAKLUBAIC0wLDAgKzEsMjczIEBACi0rLyogY3J5cHRvL3Jz YS9yc2FfZ2VuLmMgKi8KLSsvKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OCBFcmljIFlvdW5nIChl YXlAY3J5cHRzb2Z0LmNvbSkKLSsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogVGhp cyBwYWNrYWdlIGlzIGFuIFNTTCBpbXBsZW1lbnRhdGlvbiB3cml0dGVuCi0rICogYnkgRXJpYyBZ b3VuZyAoZWF5QGNyeXB0c29mdC5jb20pLgotKyAqIFRoZSBpbXBsZW1lbnRhdGlvbiB3YXMgd3Jp dHRlbiBzbyBhcyB0byBjb25mb3JtIHdpdGggTmV0c2NhcGVzIFNTTC4KLSsgKiAKLSsgKiBUaGlz IGxpYnJhcnkgaXMgZnJlZSBmb3IgY29tbWVyY2lhbCBhbmQgbm9uLWNvbW1lcmNpYWwgdXNlIGFz IGxvbmcgYXMKLSsgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIGFoZWFyZWQgdG8uICBU aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcHBseSB0byBhbGwgY29kZSBmb3VuZCBpbiB0 aGlzIGRpc3RyaWJ1dGlvbiwgYmUgaXQgdGhlIFJDNCwgUlNBLAotKyAqIGxoYXNoLCBERVMsIGV0 Yy4sIGNvZGU7IG5vdCBqdXN0IHRoZSBTU0wgY29kZS4gIFRoZSBTU0wgZG9jdW1lbnRhdGlvbgot KyAqIGluY2x1ZGVkIHdpdGggdGhpcyBkaXN0cmlidXRpb24gaXMgY292ZXJlZCBieSB0aGUgc2Ft ZSBjb3B5cmlnaHQgdGVybXMKLSsgKiBleGNlcHQgdGhhdCB0aGUgaG9sZGVyIGlzIFRpbSBIdWRz b24gKHRqaEBjcnlwdHNvZnQuY29tKS4KLSsgKiAKLSsgKiBDb3B5cmlnaHQgcmVtYWlucyBFcmlj IFlvdW5nJ3MsIGFuZCBhcyBzdWNoIGFueSBDb3B5cmlnaHQgbm90aWNlcyBpbgotKyAqIHRoZSBj b2RlIGFyZSBub3QgdG8gYmUgcmVtb3ZlZC4KLSsgKiBJZiB0aGlzIHBhY2thZ2UgaXMgdXNlZCBp biBhIHByb2R1Y3QsIEVyaWMgWW91bmcgc2hvdWxkIGJlIGdpdmVuIGF0dHJpYnV0aW9uCi0rICog YXMgdGhlIGF1dGhvciBvZiB0aGUgcGFydHMgb2YgdGhlIGxpYnJhcnkgdXNlZC4KLSsgKiBUaGlz IGNhbiBiZSBpbiB0aGUgZm9ybSBvZiBhIHRleHR1YWwgbWVzc2FnZSBhdCBwcm9ncmFtIHN0YXJ0 dXAgb3IKLSsgKiBpbiBkb2N1bWVudGF0aW9uIChvbmxpbmUgb3IgdGV4dHVhbCkgcHJvdmlkZWQg d2l0aCB0aGUgcGFja2FnZS4KLSsgKiAKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24s IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsg KiBhcmUgbWV0OgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl dGFpbiB0aGUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyIGluIHRoZQotKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1h dGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0rICog ICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgotKyAqICAgICJU aGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRvZ3JhcGhpYyBzb2Z0d2FyZSB3cml0dGVuIGJ5Ci0r ICogICAgIEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKSIKLSsgKiAgICBUaGUgd29yZCAn Y3J5cHRvZ3JhcGhpYycgY2FuIGJlIGxlZnQgb3V0IGlmIHRoZSByb3VpbmVzIGZyb20gdGhlIGxp YnJhcnkKLSsgKiAgICBiZWluZyB1c2VkIGFyZSBub3QgY3J5cHRvZ3JhcGhpYyByZWxhdGVkIDot KS4KLSsgKiA0LiBJZiB5b3UgaW5jbHVkZSBhbnkgV2luZG93cyBzcGVjaWZpYyBjb2RlIChvciBh IGRlcml2YXRpdmUgdGhlcmVvZikgZnJvbSAKLSsgKiAgICB0aGUgYXBwcyBkaXJlY3RvcnkgKGFw cGxpY2F0aW9uIGNvZGUpIHlvdSBtdXN0IGluY2x1ZGUgYW4gYWNrbm93bGVkZ2VtZW50OgotKyAq ICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgd3JpdHRlbiBieSBUaW0gSHVkc29u ICh0amhAY3J5cHRzb2Z0LmNvbSkiCi0rICogCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF RCBCWSBFUklDIFlPVU5HIGBgQVMgSVMnJyBBTkQKLSsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBM SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRQotKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF IEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0rICogRk9SIEFOWSBESVJFQ1QsIElO RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK LSsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg T0YgU1VCU1RJVFVURSBHT09EUwotKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VE IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS SUNUCi0rICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSsgKiBTVUNIIERB TUFHRS4KLSsgKiAKLSsgKiBUaGUgbGljZW5jZSBhbmQgZGlzdHJpYnV0aW9uIHRlcm1zIGZvciBh bnkgcHVibGljYWxseSBhdmFpbGFibGUgdmVyc2lvbiBvcgotKyAqIGRlcml2YXRpdmUgb2YgdGhp cyBjb2RlIGNhbm5vdCBiZSBjaGFuZ2VkLiAgaS5lLiB0aGlzIGNvZGUgY2Fubm90IHNpbXBseSBi ZQotKyAqIGNvcGllZCBhbmQgcHV0IHVuZGVyIGFub3RoZXIgZGlzdHJpYnV0aW9uIGxpY2VuY2UK LSsgKiBbaW5jbHVkaW5nIHRoZSBHTlUgUHVibGljIExpY2VuY2UuXQotKyAqLwotKwotKyNpbmNs dWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8dGltZS5oPgot KyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+Ci0rI2lu Y2x1ZGUgPG9wZW5zc2wvcnNhLmg+Ci0rI2lmZGVmIE9QRU5TU0xfRklQUwotKyMgaW5jbHVkZSA8 b3BlbnNzbC9maXBzLmg+Ci0rCi0rZXh0ZXJuIGludCBmaXBzX2NoZWNrX3JzYShSU0EgKnJzYSk7 Ci0rI2VuZGlmCi0rCi0rLyogWDkuMzEgUlNBIGtleSBkZXJpdmF0aW9uIGFuZCBnZW5lcmF0aW9u ICovCi0rCi0raW50IFJTQV9YOTMxX2Rlcml2ZV9leChSU0EgKnJzYSwgQklHTlVNICpwMSwgQklH TlVNICpwMiwgQklHTlVNICpxMSwKLSsgICAgICAgICAgICAgICAgICAgICAgIEJJR05VTSAqcTIs IGNvbnN0IEJJR05VTSAqWHAxLCBjb25zdCBCSUdOVU0gKlhwMiwKLSsgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IEJJR05VTSAqWHAsIGNvbnN0IEJJR05VTSAqWHExLCBjb25zdCBCSUdOVU0g KlhxMiwKLSsgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJJR05VTSAqWHEsIGNvbnN0IEJJ R05VTSAqZSwgQk5fR0VOQ0IgKmNiKQotK3sKLSsgICAgQklHTlVNICpyMCA9IE5VTEwsICpyMSA9 IE5VTEwsICpyMiA9IE5VTEwsICpyMyA9IE5VTEw7Ci0rICAgIEJOX0NUWCAqY3R4ID0gTlVMTCwg KmN0eDIgPSBOVUxMOwotKwotKyAgICBpZiAoIXJzYSkKLSsgICAgICAgIGdvdG8gZXJyOwotKwot KyAgICBjdHggPSBCTl9DVFhfbmV3KCk7Ci0rICAgIGlmICghY3R4KQotKyAgICAgICAgZ290byBl cnI7Ci0rICAgIEJOX0NUWF9zdGFydChjdHgpOwotKwotKyAgICByMCA9IEJOX0NUWF9nZXQoY3R4 KTsKLSsgICAgcjEgPSBCTl9DVFhfZ2V0KGN0eCk7Ci0rICAgIHIyID0gQk5fQ1RYX2dldChjdHgp OwotKyAgICByMyA9IEJOX0NUWF9nZXQoY3R4KTsKLSsKLSsgICAgaWYgKHIzID09IE5VTEwpCi0r ICAgICAgICBnb3RvIGVycjsKLSsgICAgaWYgKCFyc2EtPmUpIHsKLSsgICAgICAgIHJzYS0+ZSA9 IEJOX2R1cChlKTsKLSsgICAgICAgIGlmICghcnNhLT5lKQotKyAgICAgICAgICAgIGdvdG8gZXJy OwotKyAgICB9IGVsc2UKLSsgICAgICAgIGUgPSByc2EtPmU7Ci0rCi0rICAgIC8qIElmIG5vdCBh bGwgcGFyYW1ldGVycyBwcmVzZW50IG9ubHkgY2FsY3VsYXRlIHdoYXQgd2UgY2FuLgotKyAgICAg KiBUaGlzIGFsbG93cyB0ZXN0IHByb2dyYW1zIHRvIG91dHB1dCBzZWxlY3RpdmUgcGFyYW1ldGVy cy4KLSsgICAgICovCi0rCi0rICAgIGlmIChYcCAmJiAhcnNhLT5wKSB7Ci0rICAgICAgICByc2Et PnAgPSBCTl9uZXcoKTsKLSsgICAgICAgIGlmICghcnNhLT5wKQotKyAgICAgICAgICAgIGdvdG8g ZXJyOwotKwotKyAgICAgICAgaWYgKCFCTl9YOTMxX2Rlcml2ZV9wcmltZV9leChyc2EtPnAsIHAx LCBwMiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWHAsIFhwMSwgWHAy LCBlLCBjdHgsIGNiKSkKLSsgICAgICAgICAgICBnb3RvIGVycjsKLSsgICAgfQotKwotKyAgICBp ZiAoWHEgJiYgIXJzYS0+cSkgewotKyAgICAgICAgcnNhLT5xID0gQk5fbmV3KCk7Ci0rICAgICAg ICBpZiAoIXJzYS0+cSkKLSsgICAgICAgICAgICBnb3RvIGVycjsKLSsgICAgICAgIGlmICghQk5f WDkzMV9kZXJpdmVfcHJpbWVfZXgocnNhLT5xLCBxMSwgcTIsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFhxLCBYcTEsIFhxMiwgZSwgY3R4LCBjYikpCi0rICAgICAgICAg ICAgZ290byBlcnI7Ci0rICAgIH0KLSsKLSsgICAgaWYgKCFyc2EtPnAgfHwgIXJzYS0+cSkgewot KyAgICAgICAgQk5fQ1RYX2VuZChjdHgpOwotKyAgICAgICAgQk5fQ1RYX2ZyZWUoY3R4KTsKLSsg ICAgICAgIHJldHVybiAyOwotKyAgICB9Ci0rCi0rICAgIC8qIFNpbmNlIGJvdGggcHJpbWVzIGFy ZSBzZXQgd2UgY2FuIG5vdyBjYWxjdWxhdGUgYWxsIHJlbWFpbmluZyAKLSsgICAgICogY29tcG9u ZW50cy4KLSsgICAgICovCi0rCi0rICAgIC8qIGNhbGN1bGF0ZSBuICovCi0rICAgIHJzYS0+biA9 IEJOX25ldygpOwotKyAgICBpZiAocnNhLT5uID09IE5VTEwpCi0rICAgICAgICBnb3RvIGVycjsK LSsgICAgaWYgKCFCTl9tdWwocnNhLT5uLCByc2EtPnAsIHJzYS0+cSwgY3R4KSkKLSsgICAgICAg IGdvdG8gZXJyOwotKwotKyAgICAvKiBjYWxjdWxhdGUgZCAqLwotKyAgICBpZiAoIUJOX3N1Yihy MSwgcnNhLT5wLCBCTl92YWx1ZV9vbmUoKSkpCi0rICAgICAgICBnb3RvIGVycjsgICAgICAgICAg ICAgICAvKiBwLTEgKi8KLSsgICAgaWYgKCFCTl9zdWIocjIsIHJzYS0+cSwgQk5fdmFsdWVfb25l KCkpKQotKyAgICAgICAgZ290byBlcnI7ICAgICAgICAgICAgICAgLyogcS0xICovCi0rICAgIGlm ICghQk5fbXVsKHIwLCByMSwgcjIsIGN0eCkpCi0rICAgICAgICBnb3RvIGVycjsgICAgICAgICAg ICAgICAvKiAocC0xKShxLTEpICovCi0rCi0rICAgIGlmICghQk5fZ2NkKHIzLCByMSwgcjIsIGN0 eCkpCi0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgaWYgKCFCTl9kaXYocjAsIE5VTEwsIHIw LCByMywgY3R4KSkKLSsgICAgICAgIGdvdG8gZXJyOyAgICAgICAgICAgICAgIC8qIExDTSgocC0x KShxLTEpKSAqLwotKwotKyAgICBjdHgyID0gQk5fQ1RYX25ldygpOwotKyAgICBpZiAoIWN0eDIp Ci0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgcnNhLT5kID0gQk5fbW9kX2ludmVyc2UoTlVM TCwgcnNhLT5lLCByMCwgY3R4Mik7IC8qIGQgKi8KLSsgICAgaWYgKHJzYS0+ZCA9PSBOVUxMKQot KyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIC8qIGNhbGN1bGF0ZSBkIG1vZCAocC0xKSAqLwot KyAgICByc2EtPmRtcDEgPSBCTl9uZXcoKTsKLSsgICAgaWYgKHJzYS0+ZG1wMSA9PSBOVUxMKQot KyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmICghQk5fbW9kKHJzYS0+ZG1wMSwgcnNhLT5kLCBy MSwgY3R4KSkKLSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAgICAvKiBjYWxjdWxhdGUgZCBtb2Qg KHEtMSkgKi8KLSsgICAgcnNhLT5kbXExID0gQk5fbmV3KCk7Ci0rICAgIGlmIChyc2EtPmRtcTEg PT0gTlVMTCkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBpZiAoIUJOX21vZChyc2EtPmRtcTEs IHJzYS0+ZCwgcjIsIGN0eCkpCi0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgLyogY2FsY3Vs YXRlIGludmVyc2Ugb2YgcSBtb2QgcCAqLwotKyAgICByc2EtPmlxbXAgPSBCTl9tb2RfaW52ZXJz ZShOVUxMLCByc2EtPnEsIHJzYS0+cCwgY3R4Mik7Ci0rCi0rIGVycjoKLSsgICAgaWYgKGN0eCkg ewotKyAgICAgICAgQk5fQ1RYX2VuZChjdHgpOwotKyAgICAgICAgQk5fQ1RYX2ZyZWUoY3R4KTsK LSsgICAgfQotKyAgICBpZiAoY3R4MikKLSsgICAgICAgIEJOX0NUWF9mcmVlKGN0eDIpOwotKyAg ICAvKiBJZiB0aGlzIGlzIHNldCBhbGwgY2FsbHMgc3VjY2Vzc2Z1bCAqLwotKyAgICBpZiAocnNh ICYmIHJzYS0+aXFtcCAhPSBOVUxMKQotKyAgICAgICAgcmV0dXJuIDE7Ci0rCi0rICAgIHJldHVy biAwOwotKwotK30KLSsKLStpbnQgUlNBX1g5MzFfZ2VuZXJhdGVfa2V5X2V4KFJTQSAqcnNhLCBp bnQgYml0cywgY29uc3QgQklHTlVNICplLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Qk5fR0VOQ0IgKmNiKQotK3sKLSsgICAgaW50IG9rID0gMDsKLSsgICAgQklHTlVNICpYcCA9IE5V TEwsICpYcSA9IE5VTEw7Ci0rICAgIEJOX0NUWCAqY3R4ID0gTlVMTDsKLSsKLSsjaWZkZWYgT1BF TlNTTF9GSVBTCi0rICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKHJzYS0+ZmxhZ3MgJiBSU0FfRkxB R19OT05fRklQU19BTExPVykgJiYKLSsgICAgICAgIChiaXRzIDwgT1BFTlNTTF9SU0FfRklQU19N SU5fTU9EVUxVU19CSVRTKSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX1g5MzFfR0VO RVJBVEVfS0VZX0VYLCBGSVBTX1JfS0VZX1RPT19TSE9SVCk7Ci0rICAgICAgICByZXR1cm4gMDsK LSsgICAgfQotKwotKyAgICBpZiAoYml0cyAmIDB4ZmYpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQ U19GX1JTQV9YOTMxX0dFTkVSQVRFX0tFWV9FWCwgRklQU19SX0lOVkFMSURfS0VZX0xFTkdUSCk7 Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKyAgICBpZiAoRklQU19zZWxmdGVzdF9m YWlsZWQoKSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX1g5MzFfR0VORVJBVEVfS0VZ X0VYLCBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOwotKyAgICAgICAgcmV0dXJuIDA7Ci0r ICAgIH0KLSsjZW5kaWYKLSsKLSsgICAgY3R4ID0gQk5fQ1RYX25ldygpOwotKyAgICBpZiAoIWN0 eCkKLSsgICAgICAgIGdvdG8gZXJyb3I7Ci0rCi0rICAgIEJOX0NUWF9zdGFydChjdHgpOwotKyAg ICBYcCA9IEJOX0NUWF9nZXQoY3R4KTsKLSsgICAgWHEgPSBCTl9DVFhfZ2V0KGN0eCk7Ci0rICAg IGlmICghQk5fWDkzMV9nZW5lcmF0ZV9YcHEoWHAsIFhxLCBiaXRzLCBjdHgpKQotKyAgICAgICAg Z290byBlcnJvcjsKLSsKLSsgICAgcnNhLT5wID0gQk5fbmV3KCk7Ci0rICAgIHJzYS0+cSA9IEJO X25ldygpOwotKyAgICBpZiAoIXJzYS0+cCB8fCAhcnNhLT5xKQotKyAgICAgICAgZ290byBlcnJv cjsKLSsKLSsgICAgLyogR2VuZXJhdGUgdHdvIHByaW1lcyBmcm9tIFhwLCBYcSAqLwotKwotKyAg ICBpZiAoIUJOX1g5MzFfZ2VuZXJhdGVfcHJpbWVfZXgocnNhLT5wLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMLCBYcCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUsIGN0eCwg Y2IpKQotKyAgICAgICAgZ290byBlcnJvcjsKLSsKLSsgICAgaWYgKCFCTl9YOTMxX2dlbmVyYXRl X3ByaW1lX2V4KHJzYS0+cSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgWHEsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlLCBjdHgsIGNiKSkKLSsgICAgICAgIGdvdG8gZXJy b3I7Ci0rCi0rICAgIC8qIFNpbmNlIHJzYS0+cCBhbmQgcnNhLT5xIGFyZSB2YWxpZCB0aGlzIGNh bGwgd2lsbCBqdXN0IGRlcml2ZQotKyAgICAgKiByZW1haW5pbmcgUlNBIGNvbXBvbmVudHMuCi0r ICAgICAqLwotKwotKyAgICBpZiAoIVJTQV9YOTMxX2Rlcml2ZV9leChyc2EsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEwsIGUsIGNiKSkKLSsgICAgICAgIGdvdG8gZXJyb3I7Ci0rCi0r I2lmZGVmIE9QRU5TU0xfRklQUwotKyAgICBpZiAoIWZpcHNfY2hlY2tfcnNhKHJzYSkpCi0rICAg ICAgICBnb3RvIGVycm9yOwotKyNlbmRpZgotKwotKyAgICBvayA9IDE7Ci0rCi0rIGVycm9yOgot KyAgICBpZiAoY3R4KSB7Ci0rICAgICAgICBCTl9DVFhfZW5kKGN0eCk7Ci0rICAgICAgICBCTl9D VFhfZnJlZShjdHgpOwotKyAgICB9Ci0rCi0rICAgIGlmIChvaykKLSsgICAgICAgIHJldHVybiAx OwotKwotKyAgICByZXR1cm4gMDsKLSsKLSt9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlw dG8vZmlwcy9maXBzX3NoYV9zZWxmdGVzdC5jLmZpcHMgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2Zp cHMvZmlwc19zaGFfc2VsZnRlc3QuYwotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2Zp cHNfc2hhX3NlbGZ0ZXN0LmMuZmlwcwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAxOTIyMTA0MyArMDIw MAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfc2hhX3NlbGZ0ZXN0LmMJMjAx Ni0wOS0yMiAxMzozNTo1Ny4wMTkyMjEwNDMgKzAyMDAKLUBAIC0wLDAgKzEsMTQ1IEBACi0rLyog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMDMgVGhlIE9wZW5TU0wgUHJvamVjdC4g IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRp b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK LSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotKyAqCi0rICog Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92 ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0rICogICAgZGlzdHJpYnV0aW9u LgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1 cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xs b3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0 d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4g dGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAq IDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVz dCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp dmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0rICogICAgcHJpb3Igd3JpdHRlbiBwZXJt aXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAotKyAqICAgIG9w ZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KLSsgKgotKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJv bSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgotKyAqICAgIG5vciBt YXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4K LSsgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCi0rICoKLSsgKiA2LiBS ZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9s bG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNs dWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZv ciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgot KyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNU IGBgQVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywg SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKyAqIElNUExJRUQgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKyAqIFBV UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9K RUNUIE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO RElSRUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotKyAqIExPU1MgT0YgVVNFLCBE QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0rICogSE9XRVZFUiBD QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU LAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S IE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV Q0ggREFNQUdFLgotKyAqCi0rICovCi0rCi0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRl IDxvcGVuc3NsL2Vyci5oPgotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsjIGluY2x1ZGUgPG9wZW5z c2wvZmlwcy5oPgotKyNlbmRpZgotKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgotKyNpbmNsdWRl IDxvcGVuc3NsL3NoYS5oPgotKwotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLStzdGF0aWMgY29uc3Qg Y2hhciB0ZXN0W11bNjBdID0gewotKyAgICAiIiwKLSsgICAgImFiYyIsCi0rICAgICJhYmNkYmNk ZWNkZWZkZWZnZWZnaGZnaGlnaGlqaGlqa2lqa2xqa2xta2xtbmxtbm9tbm9wbm9wcSIKLSt9Owot KwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHJldFtdW1NIQV9ESUdFU1RfTEVOR1RIXSA9 IHsKLSsgICAgezB4ZGEsIDB4MzksIDB4YTMsIDB4ZWUsIDB4NWUsIDB4NmIsIDB4NGIsIDB4MGQs IDB4MzIsIDB4NTUsCi0rICAgICAweGJmLCAweGVmLCAweDk1LCAweDYwLCAweDE4LCAweDkwLCAw eGFmLCAweGQ4LCAweDA3LCAweDA5fSwKLSsgICAgezB4YTksIDB4OTksIDB4M2UsIDB4MzYsIDB4 NDcsIDB4MDYsIDB4ODEsIDB4NmEsIDB4YmEsIDB4M2UsCi0rICAgICAweDI1LCAweDcxLCAweDc4 LCAweDUwLCAweGMyLCAweDZjLCAweDljLCAweGQwLCAweGQ4LCAweDlkfSwKLSsgICAgezB4ODQs IDB4OTgsIDB4M2UsIDB4NDQsIDB4MWMsIDB4M2IsIDB4ZDIsIDB4NmUsIDB4YmEsIDB4YWUsCi0r ICAgICAweDRhLCAweGExLCAweGY5LCAweDUxLCAweDI5LCAweGU1LCAweGU1LCAweDQ2LCAweDcw LCAweGYxfSwKLSt9OwotKwotK3N0YXRpYyBpbnQgY29ycnVwdF9zaGE7Ci0rCi0rdm9pZCBGSVBT X2NvcnJ1cHRfc2hhMSgpCi0rewotKyAgICBjb3JydXB0X3NoYSA9IDE7Ci0rfQotKwotK2ludCBG SVBTX3NlbGZ0ZXN0X3NoYTEoKQotK3sKLSsgICAgaW50IG47Ci0rCi0rICAgIGZvciAobiA9IDA7 IG4gPCBzaXplb2YodGVzdCkgLyBzaXplb2YodGVzdFswXSk7ICsrbikgewotKyAgICAgICAgdW5z aWduZWQgY2hhciBtZFtTSEFfRElHRVNUX0xFTkdUSF07Ci0rCi0rICAgICAgICBFVlBfRGlnZXN0 KHRlc3Rbbl0sIHN0cmxlbih0ZXN0W25dKSArIGNvcnJ1cHRfc2hhLCBtZCwgTlVMTCwKLSsgICAg ICAgICAgICAgICAgICAgRVZQX3NoYTEoKSwgTlVMTCk7Ci0rICAgICAgICBpZiAobWVtY21wKG1k LCByZXRbbl0sIHNpemVvZiBtZCkpIHsKLSsgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBT X1NFTEZURVNUX1NIQTEsIEZJUFNfUl9TRUxGVEVTVF9GQUlMRUQpOwotKyAgICAgICAgICAgIHJl dHVybiAwOwotKyAgICAgICAgfQotKyAgICB9Ci0rICAgIHJldHVybiAxOwotK30KLSsKLStzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBtc2dfc2hhMjU2W10gPQotKyAgICB7IDB4ZmEsIDB4NDgs IDB4NTksIDB4MmEsIDB4ZTEsIDB4YWUsIDB4MWYsIDB4MzAsCi0rICAgIDB4ZmMKLSt9OwotKwot K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRpZ19zaGEyNTZbXSA9Ci0rICAgIHsgMHhmNywg MHgyNiwgMHhkOCwgMHg5OCwgMHg0NywgMHg5MSwgMHg2OCwgMHg1YiwKLSsgICAgMHg5ZSwgMHgz OSwgMHhiMiwgMHg1OCwgMHhiYiwgMHg3NSwgMHhiZiwgMHgwMSwKLSsgICAgMHgxNywgMHgwYywg MHg4NCwgMHgwMCwgMHgwMSwgMHg3YSwgMHg5NCwgMHg4MywKLSsgICAgMHhmMywgMHgwYiwgMHgx NSwgMHg4NCwgMHg0YiwgMHg2OSwgMHg4OCwgMHg4YQotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgbXNnX3NoYTUxMltdID0KLSsgICAgeyAweDM3LCAweGQxLCAweDM1LCAweDlk LCAweDE4LCAweDQxLCAweGU5LCAweGI3LAotKyAgICAweDZkLCAweDlhLCAweDEzLCAweGRhLCAw eDVmLCAweGYzLCAweGJkCi0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBkaWdf c2hhNTEyW10gPQotKyAgICB7IDB4MTEsIDB4MTMsIDB4YzQsIDB4MTksIDB4ZWQsIDB4MmIsIDB4 MWQsIDB4MTYsCi0rICAgIDB4MTEsIDB4ZWIsIDB4OWIsIDB4YmUsIDB4ZjAsIDB4N2YsIDB4Y2Ys IDB4NDQsCi0rICAgIDB4OGIsIDB4ZDcsIDB4NTcsIDB4YmQsIDB4OGQsIDB4YTksIDB4MjUsIDB4 YjAsCi0rICAgIDB4NDcsIDB4MjUsIDB4ZDYsIDB4NmMsIDB4OWEsIDB4NTQsIDB4N2YsIDB4OGYs Ci0rICAgIDB4MGIsIDB4NTMsIDB4MWEsIDB4MTAsIDB4NjgsIDB4MzIsIDB4MDMsIDB4MzgsCi0r ICAgIDB4ODIsIDB4YzQsIDB4ODcsIDB4YzQsIDB4ZWEsIDB4MGUsIDB4ZDEsIDB4MDQsCi0rICAg IDB4YTksIDB4OTgsIDB4YzEsIDB4MDUsIDB4YTMsIDB4ZjMsIDB4ZjgsIDB4YjEsCi0rICAgIDB4 YWYsIDB4YmMsIDB4ZDksIDB4NzgsIDB4N2UsIDB4ZWUsIDB4M2QsIDB4NDMKLSt9OwotKwotK2lu dCBGSVBTX3NlbGZ0ZXN0X3NoYTIodm9pZCkKLSt7Ci0rICAgIHVuc2lnbmVkIGNoYXIgbWRbU0hB NTEyX0RJR0VTVF9MRU5HVEhdOwotKwotKyAgICBFVlBfRGlnZXN0KG1zZ19zaGEyNTYsIHNpemVv Zihtc2dfc2hhMjU2KSwgbWQsIE5VTEwsIEVWUF9zaGEyNTYoKSwgTlVMTCk7Ci0rICAgIGlmICht ZW1jbXAoZGlnX3NoYTI1NiwgbWQsIHNpemVvZihkaWdfc2hhMjU2KSkpIHsKLSsgICAgICAgIEZJ UFNlcnIoRklQU19GX0ZJUFNfTU9ERV9TRVQsIEZJUFNfUl9TRUxGVEVTVF9GQUlMRUQpOwotKyAg ICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsKLSsgICAgRVZQX0RpZ2VzdChtc2dfc2hhNTEyLCBz aXplb2YobXNnX3NoYTUxMiksIG1kLCBOVUxMLCBFVlBfc2hhNTEyKCksIE5VTEwpOwotKyAgICBp ZiAobWVtY21wKGRpZ19zaGE1MTIsIG1kLCBzaXplb2YoZGlnX3NoYTUxMikpKSB7Ci0rICAgICAg ICBGSVBTZXJyKEZJUFNfRl9GSVBTX01PREVfU0VULCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsK LSsgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rICAgIHJldHVybiAxOwotK30KLSsKLSsj ZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfc3RhbmRhbG9u ZV9obWFjLmMuZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX3N0YW5kYWxvbmVf aG1hYy5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19zdGFuZGFsb25lX2ht YWMuYy5maXBzCTIwMTYtMDktMjIgMTM6MzU6NTcuMDE5MjIxMDQzICswMjAwCi0rKysgb3BlbnNz bC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc19zdGFuZGFsb25lX2htYWMuYwkyMDE2LTA5LTIyIDEz OjM1OjU3LjAxOTIyMTA0MyArMDIwMAotQEAgLTAsMCArMSwyNjggQEAKLSsvKiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotKyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0 cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBt ZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3Ry aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo dAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsg KiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNl IG9mIHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tu b3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVs b3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNT TCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5h bWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1 c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0 aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZv ciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICogICAgb3BlbnNzbC1jb3Jl QG9wZW5zc2wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29m dHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNT TCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBl cm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0 aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsg KiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3 YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0 aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiBU SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycn IEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUg RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsg KiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO Q0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH RVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQg T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RS SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF KQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF LCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu Ci0rICoKLSsgKi8KLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+ Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2xjb25mLmg+ Ci0rI2luY2x1ZGUgPG9wZW5zc2wvc2hhLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgot KwotKyNpZm5kZWYgRklQU0NBTklTVEVSX08KLStpbnQgRklQU19zZWxmdGVzdF9mYWlsZWQoKQot K3sKLSsgICAgcmV0dXJuIDA7Ci0rfQotKwotK3ZvaWQgRklQU19zZWxmdGVzdF9jaGVjaygpCi0r ewotK30KLSsjZW5kaWYKLSsKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0raW50IGJuX211bF9tb250 X2ZwdTY0KEJOX1VMT05HICpycCwgY29uc3QgQk5fVUxPTkcgKmFwLCBjb25zdCBCTl9VTE9ORyAq YnAsCi0rICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJOX1VMT05HICpucCwgY29uc3QgQk5f VUxPTkcgKm4wLCBpbnQgbnVtKQotK3sKLSsgICAgcmV0dXJuIDA7Ci0rfTsKLSsKLStpbnQgYm5f bXVsX21vbnRfaW50KEJOX1VMT05HICpycCwgY29uc3QgQk5fVUxPTkcgKmFwLCBjb25zdCBCTl9V TE9ORyAqYnAsCi0rICAgICAgICAgICAgICAgICAgICBjb25zdCBCTl9VTE9ORyAqbnAsIGNvbnN0 IEJOX1VMT05HICpuMCwgaW50IG51bSkKLSt7Ci0rICAgIHJldHVybiAwOwotK307Ci0rCi0rIyBp ZiAgICAgZGVmaW5lZChfX2kzODYpICAgfHwgZGVmaW5lZChfX2kzODZfXykgICB8fCBkZWZpbmVk KF9NX0lYODYpIHx8IFwKLSsgICAgICAgIGRlZmluZWQoX19JTlRFTF9fKSB8fCBcCi0rICAgICAg ICBkZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IFwKLSsgICAgICAg IGRlZmluZWQoX01fQU1ENjQpIHx8IGRlZmluZWQoX01fWDY0KQotKwotK3Vuc2lnbmVkIGludCBP UEVOU1NMX2lhMzJjYXBfUFs0XTsKLSt1bnNpZ25lZCBsb25nICpPUEVOU1NMX2lhMzJjYXBfbG9j KHZvaWQpCi0rewotKyAgICBpZiAoc2l6ZW9mKGxvbmcpID09IDQpCi0rICAgICAgICAvKgotKyAg ICAgICAgICogSWYgMzItYml0IGFwcGxpY2F0aW9uIHB1bGxzIGFkZHJlc3Mgb2YgT1BFTlNTTF9p YTMyY2FwX1BbMF0KLSsgICAgICAgICAqIGNsZWFyIHNlY29uZCBlbGVtZW50IHRvIG1haW50YWlu IHRoZSBpbGx1c2lvbiB0aGF0IHZlY3RvcgotKyAgICAgICAgICogaXMgMzItYml0LgotKyAgICAg ICAgICovCi0rICAgICAgICBPUEVOU1NMX2lhMzJjYXBfUFsxXSA9IDA7Ci0rCi0rICAgIE9QRU5T U0xfaWEzMmNhcF9QWzJdID0gMDsKLSsKLSsgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nICopT1BF TlNTTF9pYTMyY2FwX1A7Ci0rfQotKwotKyMgIGlmIGRlZmluZWQoT1BFTlNTTF9DUFVJRF9PQkop ICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fQVNNKSAmJiAhZGVmaW5lZChJMzg2X09OTFkpCi0rIyAg IGRlZmluZSBPUEVOU1NMX0NQVUlEX1NFVFVQCi0rIyAgIGlmIGRlZmluZWQoX1dJTjMyKQotK3R5 cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBJQTMyQ0FQOwotKyMgICBlbHNlCi0rdHlwZWRlZiB1bnNp Z25lZCBsb25nIGxvbmcgSUEzMkNBUDsKLSsjICAgZW5kaWYKLSt2b2lkIE9QRU5TU0xfY3B1aWRf c2V0dXAodm9pZCkKLSt7Ci0rICAgIHN0YXRpYyBpbnQgdHJpZ2dlciA9IDA7Ci0rICAgIElBMzJD QVAgT1BFTlNTTF9pYTMyX2NwdWlkKHVuc2lnbmVkIGludCAqKTsKLSsgICAgSUEzMkNBUCB2ZWM7 Ci0rICAgIGNoYXIgKmVudjsKLSsKLSsgICAgaWYgKHRyaWdnZXIpCi0rICAgICAgICByZXR1cm47 Ci0rCi0rICAgIHRyaWdnZXIgPSAxOwotKyAgICBpZiAoKGVudiA9IGdldGVudigiT1BFTlNTTF9p YTMyY2FwIikpKSB7Ci0rICAgICAgICBpbnQgb2ZmID0gKGVudlswXSA9PSAnficpID8gMSA6IDA7 Ci0rIyAgIGlmIGRlZmluZWQoX1dJTjMyKQotKyAgICAgICAgaWYgKCFzc2NhbmYoZW52ICsgb2Zm LCAiJUk2NGkiLCAmdmVjKSkKLSsgICAgICAgICAgICB2ZWMgPSBzdHJ0b3VsKGVudiArIG9mZiwg TlVMTCwgMCk7Ci0rIyAgIGVsc2UKLSsgICAgICAgIGlmICghc3NjYW5mKGVudiArIG9mZiwgIiVs bGkiLCAobG9uZyBsb25nICopJnZlYykpCi0rICAgICAgICAgICAgdmVjID0gc3RydG91bChlbnYg KyBvZmYsIE5VTEwsIDApOwotKyMgICBlbmRpZgotKyAgICAgICAgaWYgKG9mZikKLSsgICAgICAg ICAgICB2ZWMgPSBPUEVOU1NMX2lhMzJfY3B1aWQoT1BFTlNTTF9pYTMyY2FwX1ApICYgfnZlYzsK LSsgICAgICAgIGVsc2UgaWYgKGVudlswXSA9PSAnOicpCi0rICAgICAgICAgICAgdmVjID0gT1BF TlNTTF9pYTMyX2NwdWlkKE9QRU5TU0xfaWEzMmNhcF9QKTsKLSsKLSsgICAgICAgIE9QRU5TU0xf aWEzMmNhcF9QWzJdID0gMDsKLSsgICAgICAgIGlmICgoZW52ID0gc3RyY2hyKGVudiwgJzonKSkp IHsKLSsgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVjeDsKLSsgICAgICAgICAgICBlbnYrKzsK LSsgICAgICAgICAgICBvZmYgPSAoZW52WzBdID09ICd+JykgPyAxIDogMDsKLSsgICAgICAgICAg ICB2ZWN4ID0gc3RydG91bChlbnYgKyBvZmYsIE5VTEwsIDApOwotKyAgICAgICAgICAgIGlmIChv ZmYpCi0rICAgICAgICAgICAgICAgIE9QRU5TU0xfaWEzMmNhcF9QWzJdICY9IH52ZWN4OwotKyAg ICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgT1BFTlNTTF9pYTMyY2FwX1BbMl0gPSB2 ZWN4OwotKyAgICAgICAgfQotKyAgICB9IGVsc2UKLSsgICAgICAgIHZlYyA9IE9QRU5TU0xfaWEz Ml9jcHVpZChPUEVOU1NMX2lhMzJjYXBfUCk7Ci0rCi0rICAgIC8qCi0rICAgICAqIHwoMTw8MTAp IHNldHMgYSByZXNlcnZlZCBiaXQgdG8gc2lnbmFsIHRoYXQgdmFyaWFibGUKLSsgICAgICogd2Fz IGluaXRpYWxpemVkIGFscmVhZHkuLi4gVGhpcyBpcyB0byBhdm9pZCBpbnRlcmZlcmVuY2UKLSsg ICAgICogd2l0aCBjcHVpZCBzbmlwcGV0cyBpbiBFTEYgLmluaXQgc2VnbWVudC4KLSsgICAgICov Ci0rICAgIE9QRU5TU0xfaWEzMmNhcF9QWzBdID0gKHVuc2lnbmVkIGludCl2ZWMgfCAoMSA8PCAx MCk7Ci0rICAgIE9QRU5TU0xfaWEzMmNhcF9QWzFdID0gKHVuc2lnbmVkIGludCkodmVjID4+IDMy KTsKLSt9Ci0rIyAgZWxzZQotK3Vuc2lnbmVkIGludCBPUEVOU1NMX2lhMzJjYXBfUFs0XTsKLSsj ICBlbmRpZgotKwotKyMgZWxzZQotK3Vuc2lnbmVkIGxvbmcgKk9QRU5TU0xfaWEzMmNhcF9sb2Mo dm9pZCkKLSt7Ci0rICAgIHJldHVybiBOVUxMOwotK30KLSsjIGVuZGlmCi0raW50IE9QRU5TU0xf Tk9OUElDX3JlbG9jYXRlZCA9IDA7Ci0rIyBpZiAhZGVmaW5lZChPUEVOU1NMX0NQVUlEX1NFVFVQ KSAmJiAhZGVmaW5lZChPUEVOU1NMX0NQVUlEX09CSikKLSt2b2lkIE9QRU5TU0xfY3B1aWRfc2V0 dXAodm9pZCkKLSt7Ci0rfQotKyMgZW5kaWYKLSsKLStzdGF0aWMgdm9pZCBobWFjX2luaXQoU0hB MjU2X0NUWCAqbWRfY3R4LCBTSEEyNTZfQ1RYICpvX2N0eCwgY29uc3QgY2hhciAqa2V5KQotK3sK LSsgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihrZXkpOwotKyAgICBpbnQgaTsKLSsgICAgdW5zaWdu ZWQgY2hhciBrZXltZFtITUFDX01BWF9NRF9DQkxPQ0tdOwotKyAgICB1bnNpZ25lZCBjaGFyIHBh ZFtITUFDX01BWF9NRF9DQkxPQ0tdOwotKwotKyAgICBpZiAobGVuID4gU0hBX0NCTE9DSykgewot KyAgICAgICAgU0hBMjU2X0luaXQobWRfY3R4KTsKLSsgICAgICAgIFNIQTI1Nl9VcGRhdGUobWRf Y3R4LCBrZXksIGxlbik7Ci0rICAgICAgICBTSEEyNTZfRmluYWwoa2V5bWQsIG1kX2N0eCk7Ci0r ICAgICAgICBsZW4gPSBTSEEyNTZfRElHRVNUX0xFTkdUSDsKLSsgICAgfSBlbHNlCi0rICAgICAg ICBtZW1jcHkoa2V5bWQsIGtleSwgbGVuKTsKLSsgICAgbWVtc2V0KCZrZXltZFtsZW5dLCAnXDAn LCBITUFDX01BWF9NRF9DQkxPQ0sgLSBsZW4pOwotKwotKyAgICBmb3IgKGkgPSAwOyBpIDwgSE1B Q19NQVhfTURfQ0JMT0NLOyBpKyspCi0rICAgICAgICBwYWRbaV0gPSAweDM2IF4ga2V5bWRbaV07 Ci0rICAgIFNIQTI1Nl9Jbml0KG1kX2N0eCk7Ci0rICAgIFNIQTI1Nl9VcGRhdGUobWRfY3R4LCBw YWQsIFNIQTI1Nl9DQkxPQ0spOwotKwotKyAgICBmb3IgKGkgPSAwOyBpIDwgSE1BQ19NQVhfTURf Q0JMT0NLOyBpKyspCi0rICAgICAgICBwYWRbaV0gPSAweDVjIF4ga2V5bWRbaV07Ci0rICAgIFNI QTI1Nl9Jbml0KG9fY3R4KTsKLSsgICAgU0hBMjU2X1VwZGF0ZShvX2N0eCwgcGFkLCBTSEEyNTZf Q0JMT0NLKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgaG1hY19maW5hbCh1bnNpZ25lZCBjaGFyICpt ZCwgU0hBMjU2X0NUWCAqbWRfY3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgU0hBMjU2X0NU WCAqb19jdHgpCi0rewotKyAgICB1bnNpZ25lZCBjaGFyIGJ1ZltTSEEyNTZfRElHRVNUX0xFTkdU SF07Ci0rCi0rICAgIFNIQTI1Nl9GaW5hbChidWYsIG1kX2N0eCk7Ci0rICAgIFNIQTI1Nl9VcGRh dGUob19jdHgsIGJ1Ziwgc2l6ZW9mIGJ1Zik7Ci0rICAgIFNIQTI1Nl9GaW5hbChtZCwgb19jdHgp OwotK30KLSsKLSsjZW5kaWYKLSsKLStpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0r ewotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgc3RhdGljIGNoYXIga2V5W10gPSAib3Jib0Rl SklUSVRlanNpcnBBRE9OaXZpcnBVa3ZhclAiOwotKyAgICBpbnQgbiwgYmluYXJ5ID0gMDsKLSsK LSsgICAgaWYgKGFyZ2MgPCAyKSB7Ci0rICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIFs8Zmls ZT5dK1xuIiwgYXJndlswXSk7Ci0rICAgICAgICBleGl0KDEpOwotKyAgICB9Ci0rCi0rICAgIG4g PSAxOwotKyAgICBpZiAoIXN0cmNtcChhcmd2W25dLCAiLWJpbmFyeSIpKSB7Ci0rICAgICAgICBu Kys7Ci0rICAgICAgICBiaW5hcnkgPSAxOyAgICAgICAgICAgICAvKiBlbWl0IGJpbmFyeSBmaW5n ZXJwcmludC4uLiAqLwotKyAgICB9Ci0rCi0rICAgIGZvciAoOyBuIDwgYXJnYzsgKytuKSB7Ci0r ICAgICAgICBGSUxFICpmID0gZm9wZW4oYXJndltuXSwgInJiIik7Ci0rICAgICAgICBTSEEyNTZf Q1RYIG1kX2N0eCwgb19jdHg7Ci0rICAgICAgICB1bnNpZ25lZCBjaGFyIG1kW1NIQTI1Nl9ESUdF U1RfTEVOR1RIXTsKLSsgICAgICAgIGludCBpOwotKwotKyAgICAgICAgaWYgKCFmKSB7Ci0rICAg ICAgICAgICAgcGVycm9yKGFyZ3Zbbl0pOwotKyAgICAgICAgICAgIGV4aXQoMik7Ci0rICAgICAg ICB9Ci0rCi0rICAgICAgICBobWFjX2luaXQoJm1kX2N0eCwgJm9fY3R4LCBrZXkpOwotKyAgICAg ICAgZm9yICg7OykgewotKyAgICAgICAgICAgIGNoYXIgYnVmWzEwMjRdOwotKyAgICAgICAgICAg IHNpemVfdCBsID0gZnJlYWQoYnVmLCAxLCBzaXplb2YgYnVmLCBmKTsKLSsKLSsgICAgICAgICAg ICBpZiAobCA9PSAwKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChmZXJyb3IoZikpIHsKLSsgICAg ICAgICAgICAgICAgICAgIHBlcnJvcihhcmd2W25dKTsKLSsgICAgICAgICAgICAgICAgICAgIGV4 aXQoMyk7Ci0rICAgICAgICAgICAgICAgIH0gZWxzZQotKyAgICAgICAgICAgICAgICAgICAgYnJl YWs7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIFNIQTI1Nl9VcGRhdGUoJm1kX2N0eCwg YnVmLCBsKTsKLSsgICAgICAgIH0KLSsgICAgICAgIGhtYWNfZmluYWwobWQsICZtZF9jdHgsICZv X2N0eCk7Ci0rCi0rICAgICAgICBpZiAoYmluYXJ5KSB7Ci0rICAgICAgICAgICAgZndyaXRlKG1k LCBTSEEyNTZfRElHRVNUX0xFTkdUSCwgMSwgc3Rkb3V0KTsKLSsgICAgICAgICAgICBicmVhazsg ICAgICAgICAgICAgIC8qIC4uLiBmb3Igc2luZ2xlKCEpIGZpbGUgKi8KLSsgICAgICAgIH0KLSsK LSsvKiAgICAgIHByaW50ZigiSE1BQy1TSEExKCVzKT0gIixhcmd2W25dKTsgKi8KLSsgICAgICAg IGZvciAoaSA9IDA7IGkgPCBTSEEyNTZfRElHRVNUX0xFTkdUSDsgKytpKQotKyAgICAgICAgICAg IHByaW50ZigiJTAyeCIsIG1kW2ldKTsKLSsgICAgICAgIHByaW50ZigiXG4iKTsKLSsgICAgfQot KyNlbmRpZgotKyAgICByZXR1cm4gMDsKLSt9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlw dG8vZmlwcy9maXBzX3Rlc3Rfc3VpdGUuYy5maXBzIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBz L2ZpcHNfdGVzdF9zdWl0ZS5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlwc190 ZXN0X3N1aXRlLmMuZmlwcwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAyMDIyMTA2NiArMDIwMAotKysr IG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfdGVzdF9zdWl0ZS5jCTIwMTYtMDktMjIg MTM6MzU6NTcuMDE5MjIxMDQzICswMjAwCi1AQCAtMCwwICsxLDYzOSBAQAotKy8qID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDAzIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmln aHRzIHJlc2VydmVkLgotKyAqCi0rICoKLSsgKiBUaGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQgYXMg YSB0ZXN0IGRyaXZlciBmb3IgdGhlIEZJUFMtMTQwIHRlc3RpbmcKLSsgKiBsYWIgcGVyZm9ybWlu ZyBGSVBTLTE0MCB2YWxpZGF0aW9uLiAgSXQgZGVtb25zdHJhdGVzIHRoZSB1c2Ugb2YgdGhlCi0r ICogT3BlblNTTCBsaWJyYXJ5IGl0byBwZXJmb3JtIGEgdmFyaWV0eSBvZiBjb21tb24gY3J5cHRv Z3JhcGhpYwotKyAqIGZ1bmN0aW9ucy4gIEEgcG93ZXItdXAgc2VsZiB0ZXN0IGlzIGRlbW9uc3Ry YXRlZCBieSBkZWxpYmVyYXRlbHkKLSsgKiBwb2ludGluZyB0byBhbiBpbnZhbGlkIGV4ZWN1dGFi bGUgaGFzaAotKyAqCi0rICogQ29udHJpYnV0ZWQgYnkgU3RldmUgTWFycXVlc3MuCi0rICoKLSsg Ki8KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rI2luY2x1ZGUg PGN0eXBlLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsj aW5jbHVkZSA8b3BlbnNzbC9hZXMuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9kZXMuaD4KLSsjaW5j bHVkZSA8b3BlbnNzbC9yc2EuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9kc2EuaD4KLSsjaW5jbHVk ZSA8b3BlbnNzbC9kaC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2htYWMuaD4KLSsjaW5jbHVkZSA8 b3BlbnNzbC9lcnIuaD4KLSsKLSsjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgotKyNpbmNsdWRlIDxv cGVuc3NsL3JhbmQuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9zaGEuaD4KLSsKLSsjaWZuZGVmIE9Q RU5TU0xfRklQUwotK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0rewotKyAgICBw cmludGYoIk5vIEZJUFMgc3VwcG9ydFxuIik7Ci0rICAgIHJldHVybiAoMCk7Ci0rfQotKyNlbHNl Ci0rCi0rIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjIGluY2x1ZGUgImZpcHNfdXRsLmgi Ci0rCi0rLyogQUVTOiBlbmNyeXB0IGFuZCBkZWNyeXB0IGtub3duIHBsYWludGV4dCwgdmVyaWZ5 IHJlc3VsdCBtYXRjaGVzIG9yaWdpbmFsIHBsYWludGV4dAotKyovCi0rc3RhdGljIGludCBGSVBT X2Flc190ZXN0KHZvaWQpCi0rewotKyAgICBpbnQgcmV0ID0gMDsKLSsgICAgdW5zaWduZWQgY2hh ciBwbHRtcFsxNl07Ci0rICAgIHVuc2lnbmVkIGNoYXIgY2l0bXBbMTZdOwotKyAgICB1bnNpZ25l ZCBjaGFyIGtleVsxNl0gPQotKyAgICAgICAgeyAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAx MCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiB9OwotKyAgICB1bnNpZ25lZCBjaGFyIHBsYWludGV4 dFsxNl0gPSAiZXRhb25yaXNoZGxjdSI7Ci0rICAgIEVWUF9DSVBIRVJfQ1RYIGN0eDsKLSsgICAg RVZQX0NJUEhFUl9DVFhfaW5pdCgmY3R4KTsKLSsgICAgaWYgKEVWUF9DaXBoZXJJbml0X2V4KCZj dHgsIEVWUF9hZXNfMTI4X2VjYigpLCBOVUxMLCBrZXksIE5VTEwsIDEpIDw9IDApCi0rICAgICAg ICBnb3RvIGVycjsKLSsgICAgRVZQX0NpcGhlcigmY3R4LCBjaXRtcCwgcGxhaW50ZXh0LCAxNik7 Ci0rICAgIGlmIChFVlBfQ2lwaGVySW5pdF9leCgmY3R4LCBFVlBfYWVzXzEyOF9lY2IoKSwgTlVM TCwga2V5LCBOVUxMLCAwKSA8PSAwKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIEVWUF9DaXBo ZXIoJmN0eCwgcGx0bXAsIGNpdG1wLCAxNik7Ci0rICAgIGlmIChtZW1jbXAocGx0bXAsIHBsYWlu dGV4dCwgMTYpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIHJldCA9IDE7Ci0rIGVycjoKLSsg ICAgRVZQX0NJUEhFUl9DVFhfY2xlYW51cCgmY3R4KTsKLSsgICAgcmV0dXJuIHJldDsKLSt9Ci0r Ci0rc3RhdGljIGludCBGSVBTX2RlczNfdGVzdCh2b2lkKQotK3sKLSsgICAgaW50IHJldCA9IDA7 Ci0rICAgIHVuc2lnbmVkIGNoYXIgcGx0bXBbOF07Ci0rICAgIHVuc2lnbmVkIGNoYXIgY2l0bXBb OF07Ci0rICAgIHVuc2lnbmVkIGNoYXIga2V5W10gPQotKyAgICAgICAgeyAxLCAyLCAzLCA0LCA1 LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LAotKyAgICAg ICAgMTksIDIwLCAyMSwgMjIsIDIzLCAyNAotKyAgICB9OwotKyAgICB1bnNpZ25lZCBjaGFyIHBs YWludGV4dFtdID0geyAnZScsICd0JywgJ2EnLCAnbycsICduJywgJ3InLCAnaScsICdzJyB9Owot KyAgICBFVlBfQ0lQSEVSX0NUWCBjdHg7Ci0rICAgIEVWUF9DSVBIRVJfQ1RYX2luaXQoJmN0eCk7 Ci0rICAgIGlmIChFVlBfQ2lwaGVySW5pdF9leCgmY3R4LCBFVlBfZGVzX2VkZTNfZWNiKCksIE5V TEwsIGtleSwgTlVMTCwgMSkgPD0gMCkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBFVlBfQ2lw aGVyKCZjdHgsIGNpdG1wLCBwbGFpbnRleHQsIDgpOwotKyAgICBpZiAoRVZQX0NpcGhlckluaXRf ZXgoJmN0eCwgRVZQX2Rlc19lZGUzX2VjYigpLCBOVUxMLCBrZXksIE5VTEwsIDApIDw9IDApCi0r ICAgICAgICBnb3RvIGVycjsKLSsgICAgRVZQX0NpcGhlcigmY3R4LCBwbHRtcCwgY2l0bXAsIDgp OwotKyAgICBpZiAobWVtY21wKHBsdG1wLCBwbGFpbnRleHQsIDgpKQotKyAgICAgICAgZ290byBl cnI7Ci0rICAgIHJldCA9IDE7Ci0rIGVycjoKLSsgICAgRVZQX0NJUEhFUl9DVFhfY2xlYW51cCgm Y3R4KTsKLSsgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rLyoKLSsgKiBEU0E6IGdlbmVyYXRlIGtl eXMgYW5kIHNpZ24sIHZlcmlmeSBpbnB1dCBwbGFpbnRleHQuCi0rICovCi0rc3RhdGljIGludCBG SVBTX2RzYV90ZXN0KGludCBiYWQpCi0rewotKyAgICBEU0EgKmRzYSA9IE5VTEw7Ci0rICAgIEVW UF9QS0VZIHBrOwotKyAgICB1bnNpZ25lZCBjaGFyIGRnc3RbXSA9ICJldGFvbnJpc2hkbGMiOwot KyAgICB1bnNpZ25lZCBjaGFyIGJ1Zls2MF07Ci0rICAgIHVuc2lnbmVkIGludCBzbGVuOwotKyAg ICBpbnQgciA9IDA7Ci0rICAgIEVWUF9NRF9DVFggbWN0eDsKLSsKLSsgICAgRVJSX2NsZWFyX2Vy cm9yKCk7Ci0rICAgIEVWUF9NRF9DVFhfaW5pdCgmbWN0eCk7Ci0rICAgIGRzYSA9IERTQV9uZXco KTsKLSsgICAgaWYgKCFkc2EpCi0rICAgICAgICBnb3RvIGVuZDsKLSsgICAgaWYgKCFEU0FfZ2Vu ZXJhdGVfcGFyYW1ldGVyc19leChkc2EsIDEwMjQsIE5VTEwsIDAsIE5VTEwsIE5VTEwsIE5VTEwp KQotKyAgICAgICAgZ290byBlbmQ7Ci0rICAgIGlmICghRFNBX2dlbmVyYXRlX2tleShkc2EpKQot KyAgICAgICAgZ290byBlbmQ7Ci0rICAgIGlmIChiYWQpCi0rICAgICAgICBCTl9hZGRfd29yZChk c2EtPnB1Yl9rZXksIDEpOwotKwotKyAgICBway50eXBlID0gRVZQX1BLRVlfRFNBOwotKyAgICBw ay5wa2V5LmRzYSA9IGRzYTsKLSsKLSsgICAgaWYgKCFFVlBfU2lnbkluaXRfZXgoJm1jdHgsIEVW UF9kc3MxKCksIE5VTEwpKQotKyAgICAgICAgZ290byBlbmQ7Ci0rICAgIGlmICghRVZQX1NpZ25V cGRhdGUoJm1jdHgsIGRnc3QsIHNpemVvZihkZ3N0KSAtIDEpKQotKyAgICAgICAgZ290byBlbmQ7 Ci0rICAgIGlmICghRVZQX1NpZ25GaW5hbCgmbWN0eCwgYnVmLCAmc2xlbiwgJnBrKSkKLSsgICAg ICAgIGdvdG8gZW5kOwotKwotKyAgICBpZiAoIUVWUF9WZXJpZnlJbml0X2V4KCZtY3R4LCBFVlBf ZHNzMSgpLCBOVUxMKSkKLSsgICAgICAgIGdvdG8gZW5kOwotKyAgICBpZiAoIUVWUF9WZXJpZnlV cGRhdGUoJm1jdHgsIGRnc3QsIHNpemVvZihkZ3N0KSAtIDEpKQotKyAgICAgICAgZ290byBlbmQ7 Ci0rICAgIHIgPSBFVlBfVmVyaWZ5RmluYWwoJm1jdHgsIGJ1Ziwgc2xlbiwgJnBrKTsKLSsgZW5k OgotKyAgICBFVlBfTURfQ1RYX2NsZWFudXAoJm1jdHgpOwotKyAgICBpZiAoZHNhKQotKyAgICAg ICAgRFNBX2ZyZWUoZHNhKTsKLSsgICAgaWYgKHIgIT0gMSkKLSsgICAgICAgIHJldHVybiAwOwot KyAgICByZXR1cm4gMTsKLSt9Ci0rCi0rLyoKLSsgKiBSU0E6IGdlbmVyYXRlIGtleXMgYW5kIHNp Z24sIHZlcmlmeSBpbnB1dCBwbGFpbnRleHQuCi0rICovCi0rc3RhdGljIGludCBGSVBTX3JzYV90 ZXN0KGludCBiYWQpCi0rewotKyAgICBSU0EgKmtleTsKLSsgICAgdW5zaWduZWQgY2hhciBpbnB1 dF9wdGV4dFtdID0gImV0YW9ucmlzaGRsYyI7Ci0rICAgIHVuc2lnbmVkIGNoYXIgYnVmWzI1Nl07 Ci0rICAgIHVuc2lnbmVkIGludCBzbGVuOwotKyAgICBCSUdOVU0gKmJuOwotKyAgICBFVlBfTURf Q1RYIG1jdHg7Ci0rICAgIEVWUF9QS0VZIHBrOwotKyAgICBpbnQgciA9IDA7Ci0rCi0rICAgIEVS Ul9jbGVhcl9lcnJvcigpOwotKyAgICBFVlBfTURfQ1RYX2luaXQoJm1jdHgpOwotKyAgICBrZXkg PSBSU0FfbmV3KCk7Ci0rICAgIGJuID0gQk5fbmV3KCk7Ci0rICAgIGlmICgha2V5IHx8ICFibikK LSsgICAgICAgIHJldHVybiAwOwotKyAgICBCTl9zZXRfd29yZChibiwgNjU1MzcpOwotKyAgICBp ZiAoIVJTQV9nZW5lcmF0ZV9rZXlfZXgoa2V5LCAxMDI0LCBibiwgTlVMTCkpCi0rICAgICAgICBy ZXR1cm4gMDsKLSsgICAgQk5fZnJlZShibik7Ci0rICAgIGlmIChiYWQpCi0rICAgICAgICBCTl9h ZGRfd29yZChrZXktPm4sIDEpOwotKwotKyAgICBway50eXBlID0gRVZQX1BLRVlfUlNBOwotKyAg ICBway5wa2V5LnJzYSA9IGtleTsKLSsKLSsgICAgaWYgKCFFVlBfU2lnbkluaXRfZXgoJm1jdHgs IEVWUF9zaGExKCksIE5VTEwpKQotKyAgICAgICAgZ290byBlbmQ7Ci0rICAgIGlmICghRVZQX1Np Z25VcGRhdGUoJm1jdHgsIGlucHV0X3B0ZXh0LCBzaXplb2YoaW5wdXRfcHRleHQpIC0gMSkpCi0r ICAgICAgICBnb3RvIGVuZDsKLSsgICAgaWYgKCFFVlBfU2lnbkZpbmFsKCZtY3R4LCBidWYsICZz bGVuLCAmcGspKQotKyAgICAgICAgZ290byBlbmQ7Ci0rCi0rICAgIGlmICghRVZQX1ZlcmlmeUlu aXRfZXgoJm1jdHgsIEVWUF9zaGExKCksIE5VTEwpKQotKyAgICAgICAgZ290byBlbmQ7Ci0rICAg IGlmICghRVZQX1ZlcmlmeVVwZGF0ZSgmbWN0eCwgaW5wdXRfcHRleHQsIHNpemVvZihpbnB1dF9w dGV4dCkgLSAxKSkKLSsgICAgICAgIGdvdG8gZW5kOwotKyAgICByID0gRVZQX1ZlcmlmeUZpbmFs KCZtY3R4LCBidWYsIHNsZW4sICZwayk7Ci0rIGVuZDoKLSsgICAgRVZQX01EX0NUWF9jbGVhbnVw KCZtY3R4KTsKLSsgICAgaWYgKGtleSkKLSsgICAgICAgIFJTQV9mcmVlKGtleSk7Ci0rICAgIGlm IChyICE9IDEpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotKy8q IFNIQTE6IGdlbmVyYXRlIGhhc2ggb2Yga25vd24gZGlnZXN0IHZhbHVlIGFuZCBjb21wYXJlIHRv IGtub3duCi0rICAgcHJlY29tcHV0ZWQgY29ycmVjdCBoYXNoCi0rKi8KLStzdGF0aWMgaW50IEZJ UFNfc2hhMV90ZXN0KCkKLSt7Ci0rICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQV9ESUdFU1Rf TEVOR1RIXSA9Ci0rICAgICAgICB7IDB4MTEsIDB4ZjEsIDB4OWEsIDB4M2EsIDB4ZWMsIDB4MWEs IDB4MWUsIDB4OGUsIDB4NjUsIDB4ZDQsIDB4OWEsCi0rMHgzOCwgMHgwYywgMHg4YiwgMHgxZSwg MHgyYywgMHhlOCwgMHhiMywgMHhjNSwgMHgxOCB9OwotKyAgICB1bnNpZ25lZCBjaGFyIHN0cltd ID0gImV0YW9ucmlzaGQiOwotKwotKyAgICB1bnNpZ25lZCBjaGFyIG1kW1NIQV9ESUdFU1RfTEVO R1RIXTsKLSsKLSsgICAgRVJSX2NsZWFyX2Vycm9yKCk7Ci0rICAgIGlmICghRVZQX0RpZ2VzdChz dHIsIHNpemVvZihzdHIpIC0gMSwgbWQsIE5VTEwsIEVWUF9zaGExKCksIE5VTEwpKQotKyAgICAg ICAgcmV0dXJuIDA7Ci0rICAgIGlmIChtZW1jbXAobWQsIGRpZ2VzdCwgc2l6ZW9mKG1kKSkpCi0r ICAgICAgICByZXR1cm4gMDsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotKy8qIFNIQTI1NjogZ2Vu ZXJhdGUgaGFzaCBvZiBrbm93biBkaWdlc3QgdmFsdWUgYW5kIGNvbXBhcmUgdG8ga25vd24KLSsg ICBwcmVjb21wdXRlZCBjb3JyZWN0IGhhc2gKLSsqLwotK3N0YXRpYyBpbnQgRklQU19zaGEyNTZf dGVzdCgpCi0rewotKyAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEEyNTZfRElHRVNUX0xFTkdU SF0gPQotKyAgICAgICAgeyAweGY1LCAweDUzLCAweGNkLCAweGI4LCAweGNmLCAweDEsIDB4ZWUs IDB4MTcsIDB4OWIsIDB4OTMsIDB4YzksCi0rMHg2OCwgMHhjMCwgMHhlYSwgMHg0MCwgMHg5MSwK LSsgICAgICAgIDB4NiwgMHhlYywgMHg4ZSwgMHgxMSwgMHg5NiwgMHhjOCwgMHg1ZCwgMHgxYywg MHhhZiwgMHg2NCwgMHgyMiwgMHhlNiwKLSsgICAgICAgICAgICAweDUwLCAweDRmLCAweDQ3LCAw eDU3Ci0rICAgIH07Ci0rICAgIHVuc2lnbmVkIGNoYXIgc3RyW10gPSAiZXRhb25yaXNoZCI7Ci0r Ci0rICAgIHVuc2lnbmVkIGNoYXIgbWRbU0hBMjU2X0RJR0VTVF9MRU5HVEhdOwotKwotKyAgICBF UlJfY2xlYXJfZXJyb3IoKTsKLSsgICAgaWYgKCFFVlBfRGlnZXN0KHN0ciwgc2l6ZW9mKHN0cikg LSAxLCBtZCwgTlVMTCwgRVZQX3NoYTI1NigpLCBOVUxMKSkKLSsgICAgICAgIHJldHVybiAwOwot KyAgICBpZiAobWVtY21wKG1kLCBkaWdlc3QsIHNpemVvZihtZCkpKQotKyAgICAgICAgcmV0dXJu IDA7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLSsvKiBTSEE1MTI6IGdlbmVyYXRlIGhhc2ggb2Yg a25vd24gZGlnZXN0IHZhbHVlIGFuZCBjb21wYXJlIHRvIGtub3duCi0rICAgcHJlY29tcHV0ZWQg Y29ycmVjdCBoYXNoCi0rKi8KLStzdGF0aWMgaW50IEZJUFNfc2hhNTEyX3Rlc3QoKQotK3sKLSsg ICAgdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBNTEyX0RJR0VTVF9MRU5HVEhdID0KLSsgICAgICAg IHsgMHg5OSwgMHhjOSwgMHhlOSwgMHg1YiwgMHg4OCwgMHhkNCwgMHg3OCwgMHg4OCwgMHhkZiwg MHg4OCwgMHg1ZiwKLSsweDk0LCAweDcxLCAweDY0LCAweDI4LCAweGNhLAotKyAgICAgICAgMHgx NiwgMHgxZiwgMHgzZCwgMHhmNCwgMHgxZiwgMHhmMywgMHgwZiwgMHhjNSwgMHgwMywgMHg5OSwg MHhiMiwKLSsgICAgICAgICAgICAweGQwLCAweGU3LCAweDBiLCAweDk0LCAweDRhLAotKyAgICAg ICAgMHg0NSwgMHhkMiwgMHg2YywgMHg0ZiwgMHgyMCwgMHgwNiwgMHhlZiwgMHg3MSwgMHhhOSwg MHgyNSwgMHg3ZiwKLSsgICAgICAgICAgICAweDI0LCAweGIxLCAweGQ5LCAweDQwLCAweDIyLAot KyAgICAgICAgMHg0OSwgMHg1NCwgMHgxMCwgMHhjMiwgMHgyMiwgMHg5ZCwgMHgyNywgMHhmZSwg MHhiZCwgMHhkNiwgMHhkNiwKLSsgICAgICAgICAgICAweGViLCAweDJkLCAweDQyLCAweDFkLCAw eGEzCi0rICAgIH07Ci0rICAgIHVuc2lnbmVkIGNoYXIgc3RyW10gPSAiZXRhb25yaXNoZCI7Ci0r Ci0rICAgIHVuc2lnbmVkIGNoYXIgbWRbU0hBNTEyX0RJR0VTVF9MRU5HVEhdOwotKwotKyAgICBF UlJfY2xlYXJfZXJyb3IoKTsKLSsgICAgaWYgKCFFVlBfRGlnZXN0KHN0ciwgc2l6ZW9mKHN0cikg LSAxLCBtZCwgTlVMTCwgRVZQX3NoYTUxMigpLCBOVUxMKSkKLSsgICAgICAgIHJldHVybiAwOwot KyAgICBpZiAobWVtY21wKG1kLCBkaWdlc3QsIHNpemVvZihtZCkpKQotKyAgICAgICAgcmV0dXJu IDA7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLSsvKiBITUFDLVNIQTE6IGdlbmVyYXRlIGhhc2gg b2Yga25vd24gZGlnZXN0IHZhbHVlIGFuZCBjb21wYXJlIHRvIGtub3duCi0rICAgcHJlY29tcHV0 ZWQgY29ycmVjdCBoYXNoCi0rKi8KLStzdGF0aWMgaW50IEZJUFNfaG1hY19zaGExX3Rlc3QoKQot K3sKLSsgICAgdW5zaWduZWQgY2hhciBrZXlbXSA9ICJldGFvbnJpc2hkIjsKLSsgICAgdW5zaWdu ZWQgY2hhciBpdltdID0gIlNhbXBsZSB0ZXh0IjsKLSsgICAgdW5zaWduZWQgY2hhciBrYXZhbFtF VlBfTUFYX01EX1NJWkVdID0KLSsgICAgICAgIHsgMHg3MywgMHhmNywgMHhhMCwgMHg0OCwgMHhm OCwgMHg5NCwgMHhlZCwgMHhkZCwgMHgwYSwgMHhlYSwgMHhlYSwKLSsweDU2LCAweDFiLCAweDYx LCAweDJlLCAweDcwLAotKyAgICAgICAgMHhiMiwgMHhmYiwgMHhlYywgMHhjNgotKyAgICB9Owot KwotKyAgICB1bnNpZ25lZCBjaGFyIG91dFtFVlBfTUFYX01EX1NJWkVdOwotKyAgICB1bnNpZ25l ZCBpbnQgb3V0bGVuOwotKwotKyAgICBFUlJfY2xlYXJfZXJyb3IoKTsKLSsgICAgaWYgKCFITUFD Ci0rICAgICAgICAoRVZQX3NoYTEoKSwga2V5LCBzaXplb2Yoa2V5KSAtIDEsIGl2LCBzaXplb2Yo aXYpIC0gMSwgb3V0LCAmb3V0bGVuKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBpZiAobWVt Y21wKG91dCwga2F2YWwsIG91dGxlbikpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgcmV0dXJu IDE7Ci0rfQotKwotKy8qIEhNQUMtU0hBMjI0OiBnZW5lcmF0ZSBoYXNoIG9mIGtub3duIGRpZ2Vz dCB2YWx1ZSBhbmQgY29tcGFyZSB0byBrbm93bgotKyAgIHByZWNvbXB1dGVkIGNvcnJlY3QgaGFz aAotKyovCi0rc3RhdGljIGludCBGSVBTX2htYWNfc2hhMjI0X3Rlc3QoKQotK3sKLSsgICAgdW5z aWduZWQgY2hhciBrZXlbXSA9ICJldGFvbnJpc2hkIjsKLSsgICAgdW5zaWduZWQgY2hhciBpdltd ID0gIlNhbXBsZSB0ZXh0IjsKLSsgICAgdW5zaWduZWQgY2hhciBrYXZhbFtFVlBfTUFYX01EX1NJ WkVdID0KLSsgICAgICAgIHsgMHg3NSwgMHg1OCwgMHhkNSwgMHhiZCwgMHg1NSwgMHg2ZCwgMHg4 NywgMHgwZiwgMHg3NSwgMHhmZiwgMHhiZSwKLSsweDFjLCAweGIyLCAweGYwLCAweDIwLCAweDM1 LAotKyAgICAgICAgMHhlNSwgMHg2MiwgMHg0OSwgMHhiNiwgMHg5NCwgMHhiOSwgMHhmYywgMHg2 NSwgMHgzNCwgMHgzMywgMHgzYSwgMHgxOQotKyAgICB9OwotKwotKyAgICB1bnNpZ25lZCBjaGFy IG91dFtFVlBfTUFYX01EX1NJWkVdOwotKyAgICB1bnNpZ25lZCBpbnQgb3V0bGVuOwotKwotKyAg ICBFUlJfY2xlYXJfZXJyb3IoKTsKLSsgICAgaWYgKCFITUFDCi0rICAgICAgICAoRVZQX3NoYTIy NCgpLCBrZXksIHNpemVvZihrZXkpIC0gMSwgaXYsIHNpemVvZihpdikgLSAxLCBvdXQsCi0rICAg ICAgICAgJm91dGxlbikpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYgKG1lbWNtcChvdXQs IGthdmFsLCBvdXRsZW4pKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIHJldHVybiAxOwotK30K LSsKLSsvKiBITUFDLVNIQTI1NjogZ2VuZXJhdGUgaGFzaCBvZiBrbm93biBkaWdlc3QgdmFsdWUg YW5kIGNvbXBhcmUgdG8ga25vd24KLSsgICBwcmVjb21wdXRlZCBjb3JyZWN0IGhhc2gKLSsqLwot K3N0YXRpYyBpbnQgRklQU19obWFjX3NoYTI1Nl90ZXN0KCkKLSt7Ci0rICAgIHVuc2lnbmVkIGNo YXIga2V5W10gPSAiZXRhb25yaXNoZCI7Ci0rICAgIHVuc2lnbmVkIGNoYXIgaXZbXSA9ICJTYW1w bGUgdGV4dCI7Ci0rICAgIHVuc2lnbmVkIGNoYXIga2F2YWxbRVZQX01BWF9NRF9TSVpFXSA9Ci0r ICAgICAgICB7IDB4ZTksIDB4MTcsIDB4YzEsIDB4N2IsIDB4NGMsIDB4NmIsIDB4NzcsIDB4ZGEs IDB4ZDIsIDB4MzAsIDB4MzYsCi0rMHgwMiwgMHhmNSwgMHg3MiwgMHgzMywgMHg4NywKLSsgICAg ICAgIDB4OWYsIDB4YzYsIDB4NmUsIDB4N2IsIDB4N2UsIDB4YTgsIDB4ZWEsIDB4YWEsIDB4OWYs IDB4YmEsIDB4ZWUsCi0rICAgICAgICAgICAgMHg1MSwgMHhmZiwgMHhkYSwgMHgyNCwgMHhmNAot KyAgICB9OwotKwotKyAgICB1bnNpZ25lZCBjaGFyIG91dFtFVlBfTUFYX01EX1NJWkVdOwotKyAg ICB1bnNpZ25lZCBpbnQgb3V0bGVuOwotKwotKyAgICBFUlJfY2xlYXJfZXJyb3IoKTsKLSsgICAg aWYgKCFITUFDCi0rICAgICAgICAoRVZQX3NoYTI1NigpLCBrZXksIHNpemVvZihrZXkpIC0gMSwg aXYsIHNpemVvZihpdikgLSAxLCBvdXQsCi0rICAgICAgICAgJm91dGxlbikpCi0rICAgICAgICBy ZXR1cm4gMDsKLSsgICAgaWYgKG1lbWNtcChvdXQsIGthdmFsLCBvdXRsZW4pKQotKyAgICAgICAg cmV0dXJuIDA7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLSsvKiBITUFDLVNIQTM4NDogZ2VuZXJh dGUgaGFzaCBvZiBrbm93biBkaWdlc3QgdmFsdWUgYW5kIGNvbXBhcmUgdG8ga25vd24KLSsgICBw cmVjb21wdXRlZCBjb3JyZWN0IGhhc2gKLSsqLwotK3N0YXRpYyBpbnQgRklQU19obWFjX3NoYTM4 NF90ZXN0KCkKLSt7Ci0rICAgIHVuc2lnbmVkIGNoYXIga2V5W10gPSAiZXRhb25yaXNoZCI7Ci0r ICAgIHVuc2lnbmVkIGNoYXIgaXZbXSA9ICJTYW1wbGUgdGV4dCI7Ci0rICAgIHVuc2lnbmVkIGNo YXIga2F2YWxbRVZQX01BWF9NRF9TSVpFXSA9Ci0rICAgICAgICB7IDB4YjIsIDB4OWQsIDB4NDAs IDB4NTgsIDB4MzIsIDB4YzQsIDB4ZTMsIDB4MzEsIDB4YjYsIDB4NjMsIDB4MDgsCi0rMHgyNiwg MHg5OSwgMHhlZiwgMHgzYiwgMHgxMCwKLSsgICAgICAgIDB4ZTIsIDB4ZGYsIDB4ZjgsIDB4ZmYs IDB4YzYsIDB4ZTEsIDB4MDMsIDB4MjksIDB4ODEsIDB4MmEsIDB4MWIsCi0rICAgICAgICAgICAg MHhhYywgMHhiMCwgMHgwNywgMHgzOSwgMHgwOCwKLSsgICAgICAgIDB4ZjMsIDB4OTEsIDB4MzUs IDB4MTEsIDB4NzYsIDB4ZDYsIDB4NGMsIDB4MjAsIDB4ZmIsIDB4NGQsIDB4YzMsCi0rICAgICAg ICAgICAgMHhmMywgMHhiOCwgMHg5YiwgMHg4OCwgMHgxYwotKyAgICB9OwotKwotKyAgICB1bnNp Z25lZCBjaGFyIG91dFtFVlBfTUFYX01EX1NJWkVdOwotKyAgICB1bnNpZ25lZCBpbnQgb3V0bGVu OwotKwotKyAgICBFUlJfY2xlYXJfZXJyb3IoKTsKLSsgICAgaWYgKCFITUFDCi0rICAgICAgICAo RVZQX3NoYTM4NCgpLCBrZXksIHNpemVvZihrZXkpIC0gMSwgaXYsIHNpemVvZihpdikgLSAxLCBv dXQsCi0rICAgICAgICAgJm91dGxlbikpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYgKG1l bWNtcChvdXQsIGthdmFsLCBvdXRsZW4pKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIHJldHVy biAxOwotK30KLSsKLSsvKiBITUFDLVNIQTUxMjogZ2VuZXJhdGUgaGFzaCBvZiBrbm93biBkaWdl c3QgdmFsdWUgYW5kIGNvbXBhcmUgdG8ga25vd24KLSsgICBwcmVjb21wdXRlZCBjb3JyZWN0IGhh c2gKLSsqLwotK3N0YXRpYyBpbnQgRklQU19obWFjX3NoYTUxMl90ZXN0KCkKLSt7Ci0rICAgIHVu c2lnbmVkIGNoYXIga2V5W10gPSAiZXRhb25yaXNoZCI7Ci0rICAgIHVuc2lnbmVkIGNoYXIgaXZb XSA9ICJTYW1wbGUgdGV4dCI7Ci0rICAgIHVuc2lnbmVkIGNoYXIga2F2YWxbRVZQX01BWF9NRF9T SVpFXSA9Ci0rICAgICAgICB7IDB4Y2QsIDB4M2UsIDB4YjksIDB4NTEsIDB4YjgsIDB4YmMsIDB4 N2YsIDB4OWEsIDB4MjMsIDB4YWYsIDB4ZjMsCi0rMHg3NywgMHg1OSwgMHg4NSwgMHhhOSwgMHhl NiwKLSsgICAgICAgIDB4ZjcsIDB4ZDEsIDB4NTEsIDB4OTYsIDB4MTcsIDB4ZTAsIDB4OTIsIDB4 ZDgsIDB4YTYsIDB4M2IsIDB4YzEsCi0rICAgICAgICAgICAgMHhhZCwgMHg3ZSwgMHgyNCwgMHhj YSwgMHhiMSwKLSsgICAgICAgIDB4ZDcsIDB4NzksIDB4MGEsIDB4YTUsIDB4ZWEsIDB4MmMsIDB4 MDIsIDB4NTgsIDB4MGIsIDB4YTYsIDB4NTIsCi0rICAgICAgICAgICAgMHg2YiwgMHg2MSwgMHg3 ZiwgMHhlYiwgMHg5YywKLSsgICAgICAgIDB4NDcsIDB4ODYsIDB4NWQsIDB4NzQsIDB4MmIsIDB4 ODgsIDB4ZGYsIDB4ZWUsIDB4NDYsIDB4NjksIDB4OTYsCi0rICAgICAgICAgICAgMHgzZCwgMHhh NiwgMHhkOSwgMHgyYSwgMHg1MwotKyAgICB9OwotKwotKyAgICB1bnNpZ25lZCBjaGFyIG91dFtF VlBfTUFYX01EX1NJWkVdOwotKyAgICB1bnNpZ25lZCBpbnQgb3V0bGVuOwotKwotKyAgICBFUlJf Y2xlYXJfZXJyb3IoKTsKLSsgICAgaWYgKCFITUFDCi0rICAgICAgICAoRVZQX3NoYTUxMigpLCBr ZXksIHNpemVvZihrZXkpIC0gMSwgaXYsIHNpemVvZihpdikgLSAxLCBvdXQsCi0rICAgICAgICAg Jm91dGxlbikpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYgKG1lbWNtcChvdXQsIGthdmFs LCBvdXRsZW4pKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLSsv KiBESDogZ2VuZXJhdGUgc2hhcmVkIHBhcmFtZXRlcnMKLSsqLwotK3N0YXRpYyBpbnQgZGhfdGVz dCgpCi0rewotKyAgICBESCAqZGg7Ci0rICAgIEVSUl9jbGVhcl9lcnJvcigpOwotKyAgICBkaCA9 IEZJUFNfZGhfbmV3KCk7Ci0rICAgIGlmICghZGgpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAg aWYgKCFESF9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4KGRoLCAxMDI0LCAyLCBOVUxMKSkKLSsgICAg ICAgIHJldHVybiAwOwotKyAgICBGSVBTX2RoX2ZyZWUoZGgpOwotKyAgICByZXR1cm4gMTsKLSt9 Ci0rCi0rLyogWmVyb2l6ZQotKyovCi0rc3RhdGljIGludCBaZXJvaXplKCkKLSt7Ci0rICAgIFJT QSAqa2V5OwotKyAgICBCSUdOVU0gKmJuOwotKyAgICB1bnNpZ25lZCBjaGFyIHVzZXJrZXlbMTZd ID0KLSsgICAgICAgIHsgMHg0OCwgMHg1MCwgMHhmMCwgMHhhMywgMHgzYSwgMHhlZCwgMHhkMywg MHhhZiwgMHg2ZSwgMHg0NywgMHg3ZiwKLSsweDgzLCAweDAyLCAweGIxLCAweDA5LCAweDY4IH07 Ci0rICAgIGludCBpLCBuOwotKwotKyAgICBrZXkgPSBGSVBTX3JzYV9uZXcoKTsKLSsgICAgYm4g PSBCTl9uZXcoKTsKLSsgICAgaWYgKCFrZXkgfHwgIWJuKQotKyAgICAgICAgcmV0dXJuIDA7Ci0r ICAgIEJOX3NldF93b3JkKGJuLCA2NTUzNyk7Ci0rICAgIGlmICghUlNBX2dlbmVyYXRlX2tleV9l eChrZXksIDEwMjQsIGJuLCBOVUxMKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBCTl9mcmVl KGJuKTsKLSsKLSsgICAgbiA9IEJOX251bV9ieXRlcyhrZXktPmQpOwotKyAgICBwcmludGYoIiBH ZW5lcmF0ZWQgJWQgYnl0ZSBSU0EgcHJpdmF0ZSBrZXlcbiIsIG4pOwotKyAgICBwcmludGYoIlx0 Qk4ga2V5IGJlZm9yZSBvdmVyd3JpdGluZzpcbiIpOwotKyAgICBkb19ibl9wcmludChzdGRvdXQs IGtleS0+ZCk7Ci0rICAgIEJOX3JhbmQoa2V5LT5kLCBuICogOCwgLTEsIDApOwotKyAgICBwcmlu dGYoIlx0Qk4ga2V5IGFmdGVyIG92ZXJ3cml0aW5nOlxuIik7Ci0rICAgIGRvX2JuX3ByaW50KHN0 ZG91dCwga2V5LT5kKTsKLSsKLSsgICAgcHJpbnRmKCJcdGNoYXIgYnVmZmVyIGtleSBiZWZvcmUg b3ZlcndyaXRpbmc6IFxuXHRcdCIpOwotKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHVzZXJr ZXkpOyBpKyspCi0rICAgICAgICBwcmludGYoIiUwMngiLCB1c2Vya2V5W2ldKTsKLSsgICAgcHJp bnRmKCJcbiIpOwotKyAgICBSQU5EX2J5dGVzKHVzZXJrZXksIHNpemVvZiB1c2Vya2V5KTsKLSsg ICAgcHJpbnRmKCJcdGNoYXIgYnVmZmVyIGtleSBhZnRlciBvdmVyd3JpdGluZzogXG5cdFx0Iik7 Ci0rICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YodXNlcmtleSk7IGkrKykKLSsgICAgICAgIHBy aW50ZigiJTAyeCIsIHVzZXJrZXlbaV0pOwotKyAgICBwcmludGYoIlxuIik7Ci0rCi0rICAgIHJl dHVybiAxOwotK30KLSsKLStzdGF0aWMgaW50IEVycm9yOwotK2NvbnN0IGNoYXIgKkZhaWwoY29u c3QgY2hhciAqbXNnKQotK3sKLSsgICAgZG9fcHJpbnRfZXJyb3JzKCk7Ci0rICAgIEVycm9yKys7 Ci0rICAgIHJldHVybiBtc2c7Ci0rfQotKwotK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKLSt7Ci0rCi0rICAgIGludCBkb19jb3JydXB0X3JzYV9rZXlnZW4gPSAwLCBkb19jb3JydXB0 X2RzYV9rZXlnZW4gPSAwOwotKyAgICBpbnQgYmFkX3JzYSA9IDAsIGJhZF9kc2EgPSAwOwotKyAg ICBpbnQgZG9fcm5nX3N0aWNrID0gMDsKLSsgICAgaW50IG5vX2V4aXQgPSAwOwotKwotKyAgICBw cmludGYoIlx0RklQUy1tb2RlIHRlc3QgYXBwbGljYXRpb25cblxuIik7Ci0rCi0rICAgIC8qIExv YWQgZW50cm9weSBmcm9tIGV4dGVybmFsIGZpbGUsIGlmIGFueSAqLwotKyAgICBSQU5EX2xvYWRf ZmlsZSgiLnJuZCIsIDEwMjQpOwotKwotKyAgICBpZiAoYXJndlsxXSkgewotKyAgICAgICAgLyog Q29ycnVwdGVkIEtBVCB0ZXN0cyAqLwotKyAgICAgICAgaWYgKCFzdHJjbXAoYXJndlsxXSwgImFl cyIpKSB7Ci0rICAgICAgICAgICAgRklQU19jb3JydXB0X2FlcygpOwotKyAgICAgICAgICAgIHBy aW50ZigiQUVTIGVuY3J5cHRpb24vZGVjcnlwdGlvbiB3aXRoIGNvcnJ1cHRlZCBLQVQuLi5cbiIp OwotKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJkZXMiKSkgewotKyAgICAg ICAgICAgIEZJUFNfY29ycnVwdF9kZXMoKTsKLSsgICAgICAgICAgICBwcmludGYoIkRFUzMtRUNC IGVuY3J5cHRpb24vZGVjcnlwdGlvbiB3aXRoIGNvcnJ1cHRlZCBLQVQuLi5cbiIpOwotKyAgICAg ICAgfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJkc2EiKSkgewotKyAgICAgICAgICAgIEZJ UFNfY29ycnVwdF9kc2EoKTsKLSsgICAgICAgICAgICBwcmludGYKLSsgICAgICAgICAgICAgICAg KCJEU0Ega2V5IGdlbmVyYXRpb24gYW5kIHNpZ25hdHVyZSB2YWxpZGF0aW9uIHdpdGggY29ycnVw dGVkIEtBVC4uLlxuIik7Ci0rICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYXJndlsxXSwgInJz YSIpKSB7Ci0rICAgICAgICAgICAgRklQU19jb3JydXB0X3JzYSgpOwotKyAgICAgICAgICAgIHBy aW50ZgotKyAgICAgICAgICAgICAgICAoIlJTQSBrZXkgZ2VuZXJhdGlvbiBhbmQgc2lnbmF0dXJl IHZhbGlkYXRpb24gd2l0aCBjb3JydXB0ZWQgS0FULi4uXG4iKTsKLSsgICAgICAgIH0gZWxzZSBp ZiAoIXN0cmNtcChhcmd2WzFdLCAicnNha2V5IikpIHsKLSsgICAgICAgICAgICBwcmludGYKLSsg ICAgICAgICAgICAgICAgKCJSU0Ega2V5IGdlbmVyYXRpb24gYW5kIHNpZ25hdHVyZSB2YWxpZGF0 aW9uIHdpdGggY29ycnVwdGVkIGtleS4uLlxuIik7Ci0rICAgICAgICAgICAgYmFkX3JzYSA9IDE7 Ci0rICAgICAgICAgICAgbm9fZXhpdCA9IDE7Ci0rICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAo YXJndlsxXSwgInJzYWtleWdlbiIpKSB7Ci0rICAgICAgICAgICAgZG9fY29ycnVwdF9yc2Ffa2V5 Z2VuID0gMTsKLSsgICAgICAgICAgICBub19leGl0ID0gMTsKLSsgICAgICAgICAgICBwcmludGYK LSsgICAgICAgICAgICAgICAgKCJSU0Ega2V5IGdlbmVyYXRpb24gYW5kIHNpZ25hdHVyZSB2YWxp ZGF0aW9uIHdpdGggY29ycnVwdGVkIGtleWdlbi4uLlxuIik7Ci0rICAgICAgICB9IGVsc2UgaWYg KCFzdHJjbXAoYXJndlsxXSwgImRzYWtleSIpKSB7Ci0rICAgICAgICAgICAgcHJpbnRmCi0rICAg ICAgICAgICAgICAgICgiRFNBIGtleSBnZW5lcmF0aW9uIGFuZCBzaWduYXR1cmUgdmFsaWRhdGlv biB3aXRoIGNvcnJ1cHRlZCBrZXkuLi5cbiIpOwotKyAgICAgICAgICAgIGJhZF9kc2EgPSAxOwot KyAgICAgICAgICAgIG5vX2V4aXQgPSAxOwotKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFy Z3ZbMV0sICJkc2FrZXlnZW4iKSkgewotKyAgICAgICAgICAgIGRvX2NvcnJ1cHRfZHNhX2tleWdl biA9IDE7Ci0rICAgICAgICAgICAgbm9fZXhpdCA9IDE7Ci0rICAgICAgICAgICAgcHJpbnRmCi0r ICAgICAgICAgICAgICAgICgiRFNBIGtleSBnZW5lcmF0aW9uIGFuZCBzaWduYXR1cmUgdmFsaWRh dGlvbiB3aXRoIGNvcnJ1cHRlZCBrZXlnZW4uLi5cbiIpOwotKyAgICAgICAgfSBlbHNlIGlmICgh c3RyY21wKGFyZ3ZbMV0sICJzaGExIikpIHsKLSsgICAgICAgICAgICBGSVBTX2NvcnJ1cHRfc2hh MSgpOwotKyAgICAgICAgICAgIHByaW50ZigiU0hBLTEgaGFzaCB3aXRoIGNvcnJ1cHRlZCBLQVQu Li5cbiIpOwotKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJybmciKSkgewot KyAgICAgICAgICAgIEZJUFNfY29ycnVwdF9ybmcoKTsKLSsgICAgICAgIH0gZWxzZSBpZiAoIXN0 cmNtcChhcmd2WzFdLCAicm5nc3RpY2siKSkgewotKyAgICAgICAgICAgIGRvX3JuZ19zdGljayA9 IDE7Ci0rICAgICAgICAgICAgbm9fZXhpdCA9IDE7Ci0rICAgICAgICAgICAgcHJpbnRmKCJSTkcg dGVzdCB3aXRoIHN0dWNrIGNvbnRpbnVvdXMgdGVzdC4uLlxuIik7Ci0rICAgICAgICB9IGVsc2Ug ewotKyAgICAgICAgICAgIHByaW50ZigiQmFkIGFyZ3VtZW50IFwiJXNcIlxuIiwgYXJndlsxXSk7 Ci0rICAgICAgICAgICAgZXhpdCgxKTsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmICghbm9fZXhp dCkgewotKyAgICAgICAgICAgIGlmICghRklQU19tb2RlX3NldCgxKSkgewotKyAgICAgICAgICAg ICAgICBkb19wcmludF9lcnJvcnMoKTsKLSsgICAgICAgICAgICAgICAgcHJpbnRmKCJQb3dlci11 cCBzZWxmIHRlc3QgZmFpbGVkXG4iKTsKLSsgICAgICAgICAgICAgICAgZXhpdCgxKTsKLSsgICAg ICAgICAgICB9Ci0rICAgICAgICAgICAgcHJpbnRmKCJQb3dlci11cCBzZWxmIHRlc3Qgc3VjY2Vz c2Z1bFxuIik7Ci0rICAgICAgICAgICAgZXhpdCgwKTsKLSsgICAgICAgIH0KLSsgICAgfQotKwot KyAgICAvKiBOb24tQXBwcm92ZWQgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb24KLSsgICAgICovCi0r ICAgIHByaW50ZigiMS4gTm9uLUFwcHJvdmVkIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9uIHRlc3Qu Li5cbiIpOwotKyAgICBwcmludGYoIlx0YS4gSW5jbHVkZWQgYWxnb3JpdGhtIChELUgpLi4uIik7 Ci0rICAgIHByaW50ZihkaF90ZXN0KCk/ICJzdWNjZXNzZnVsXG4iIDogRmFpbCgiRkFJTEVEIVxu IikpOwotKwotKyAgICAvKiBQb3dlci11cCBzZWxmIHRlc3QKLSsgICAgICovCi0rICAgIEVSUl9j bGVhcl9lcnJvcigpOwotKyAgICBwcmludGYoIjIuIEF1dG9tYXRpYyBwb3dlci11cCBzZWxmIHRl c3QuLi4iKTsKLSsgICAgaWYgKCFGSVBTX21vZGVfc2V0KDEpKSB7Ci0rICAgICAgICBkb19wcmlu dF9lcnJvcnMoKTsKLSsgICAgICAgIHByaW50ZihGYWlsKCJGQUlMRUQhXG4iKSk7Ci0rICAgICAg ICBleGl0KDEpOwotKyAgICB9Ci0rICAgIHByaW50Zigic3VjY2Vzc2Z1bFxuIik7Ci0rICAgIGlm IChkb19jb3JydXB0X2RzYV9rZXlnZW4pCi0rICAgICAgICBGSVBTX2NvcnJ1cHRfZHNhX2tleWdl bigpOwotKyAgICBpZiAoZG9fY29ycnVwdF9yc2Ffa2V5Z2VuKQotKyAgICAgICAgRklQU19jb3Jy dXB0X3JzYV9rZXlnZW4oKTsKLSsgICAgaWYgKGRvX3JuZ19zdGljaykKLSsgICAgICAgIEZJUFNf cm5nX3N0aWNrKCk7Ci0rCi0rICAgIC8qIEFFUyBlbmNyeXB0aW9uL2RlY3J5cHRpb24KLSsgICAg ICovCi0rICAgIHByaW50ZigiMy4gQUVTIGVuY3J5cHRpb24vZGVjcnlwdGlvbi4uLiIpOwotKyAg ICBwcmludGYoRklQU19hZXNfdGVzdCgpPyAic3VjY2Vzc2Z1bFxuIiA6IEZhaWwoIkZBSUxFRCFc biIpKTsKLSsKLSsgICAgLyogUlNBIGtleSBnZW5lcmF0aW9uIGFuZCBlbmNyeXB0aW9uL2RlY3J5 cHRpb24KLSsgICAgICovCi0rICAgIHByaW50ZigiNC4gUlNBIGtleSBnZW5lcmF0aW9uIGFuZCBl bmNyeXB0aW9uL2RlY3J5cHRpb24uLi4iKTsKLSsgICAgcHJpbnRmKEZJUFNfcnNhX3Rlc3QoYmFk X3JzYSkgPyAic3VjY2Vzc2Z1bFxuIiA6IEZhaWwoIkZBSUxFRCFcbiIpKTsKLSsKLSsgICAgLyog REVTLUNCQyBlbmNyeXB0aW9uL2RlY3J5cHRpb24KLSsgICAgICovCi0rICAgIHByaW50ZigiNS4g REVTLUVDQiBlbmNyeXB0aW9uL2RlY3J5cHRpb24uLi4iKTsKLSsgICAgcHJpbnRmKEZJUFNfZGVz M190ZXN0KCk/ICJzdWNjZXNzZnVsXG4iIDogRmFpbCgiRkFJTEVEIVxuIikpOwotKwotKyAgICAv KiBEU0Ega2V5IGdlbmVyYXRpb24gYW5kIHNpZ25hdHVyZSB2YWxpZGF0aW9uCi0rICAgICAqLwot KyAgICBwcmludGYoIjYuIERTQSBrZXkgZ2VuZXJhdGlvbiBhbmQgc2lnbmF0dXJlIHZhbGlkYXRp b24uLi4iKTsKLSsgICAgcHJpbnRmKEZJUFNfZHNhX3Rlc3QoYmFkX2RzYSkgPyAic3VjY2Vzc2Z1 bFxuIiA6IEZhaWwoIkZBSUxFRCFcbiIpKTsKLSsKLSsgICAgLyogU0hBLTEgaGFzaAotKyAgICAg Ki8KLSsgICAgcHJpbnRmKCI3YS4gU0hBLTEgaGFzaC4uLiIpOwotKyAgICBwcmludGYoRklQU19z aGExX3Rlc3QoKT8gInN1Y2Nlc3NmdWxcbiIgOiBGYWlsKCJGQUlMRUQhXG4iKSk7Ci0rCi0rICAg IC8qIFNIQS0yNTYgaGFzaAotKyAgICAgKi8KLSsgICAgcHJpbnRmKCI3Yi4gU0hBLTI1NiBoYXNo Li4uIik7Ci0rICAgIHByaW50ZihGSVBTX3NoYTI1Nl90ZXN0KCk/ICJzdWNjZXNzZnVsXG4iIDog RmFpbCgiRkFJTEVEIVxuIikpOwotKwotKyAgICAvKiBTSEEtNTEyIGhhc2gKLSsgICAgICovCi0r ICAgIHByaW50ZigiN2MuIFNIQS01MTIgaGFzaC4uLiIpOwotKyAgICBwcmludGYoRklQU19zaGE1 MTJfdGVzdCgpPyAic3VjY2Vzc2Z1bFxuIiA6IEZhaWwoIkZBSUxFRCFcbiIpKTsKLSsKLSsgICAg LyogSE1BQy1TSEEtMSBoYXNoCi0rICAgICAqLwotKyAgICBwcmludGYoIjdkLiBITUFDLVNIQS0x IGhhc2guLi4iKTsKLSsgICAgcHJpbnRmKEZJUFNfaG1hY19zaGExX3Rlc3QoKT8gInN1Y2Nlc3Nm dWxcbiIgOiBGYWlsKCJGQUlMRUQhXG4iKSk7Ci0rCi0rICAgIC8qIEhNQUMtU0hBLTIyNCBoYXNo Ci0rICAgICAqLwotKyAgICBwcmludGYoIjdlLiBITUFDLVNIQS0yMjQgaGFzaC4uLiIpOwotKyAg ICBwcmludGYoRklQU19obWFjX3NoYTIyNF90ZXN0KCk/ICJzdWNjZXNzZnVsXG4iIDogRmFpbCgi RkFJTEVEIVxuIikpOwotKwotKyAgICAvKiBITUFDLVNIQS0yNTYgaGFzaAotKyAgICAgKi8KLSsg ICAgcHJpbnRmKCI3Zi4gSE1BQy1TSEEtMjU2IGhhc2guLi4iKTsKLSsgICAgcHJpbnRmKEZJUFNf aG1hY19zaGEyNTZfdGVzdCgpPyAic3VjY2Vzc2Z1bFxuIiA6IEZhaWwoIkZBSUxFRCFcbiIpKTsK LSsKLSsgICAgLyogSE1BQy1TSEEtMzg0IGhhc2gKLSsgICAgICovCi0rICAgIHByaW50ZigiN2cu IEhNQUMtU0hBLTM4NCBoYXNoLi4uIik7Ci0rICAgIHByaW50ZihGSVBTX2htYWNfc2hhMzg0X3Rl c3QoKT8gInN1Y2Nlc3NmdWxcbiIgOiBGYWlsKCJGQUlMRUQhXG4iKSk7Ci0rCi0rICAgIC8qIEhN QUMtU0hBLTUxMiBoYXNoCi0rICAgICAqLwotKyAgICBwcmludGYoIjdoLiBITUFDLVNIQS01MTIg aGFzaC4uLiIpOwotKyAgICBwcmludGYoRklQU19obWFjX3NoYTUxMl90ZXN0KCk/ICJzdWNjZXNz ZnVsXG4iIDogRmFpbCgiRkFJTEVEIVxuIikpOwotKwotKyAgICAvKiBOb24tQXBwcm92ZWQgY3J5 cHRvZ3JhcGhpYyBvcGVyYXRpb24KLSsgICAgICovCi0rICAgIHByaW50ZigiOC4gTm9uLUFwcHJv dmVkIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9uIHRlc3QuLi5cbiIpOwotKyAgICBwcmludGYoIlx0 YS4gSW5jbHVkZWQgYWxnb3JpdGhtIChELUgpLi4uIik7Ci0rICAgIHByaW50ZihkaF90ZXN0KCk/ ICJzdWNjZXNzZnVsIGFzIGV4cGVjdGVkXG4iCi0rICAgICAgICAgICA6IEZhaWwoImZhaWxlZCBJ TkNPUlJFQ1RMWSFcbiIpKTsKLSsKLSsgICAgLyogWmVyb2l6YXRpb24KLSsgICAgICovCi0rICAg IHByaW50ZigiOS4gWmVyby1pemF0aW9uLi4uXG4iKTsKLSsgICAgcHJpbnRmKFplcm9pemUoKT8g Ilx0c3VjY2Vzc2Z1bCBhcyBleHBlY3RlZFxuIgotKyAgICAgICAgICAgOiBGYWlsKCJcdGZhaWxl ZCBJTkNPUlJFQ1RMWSFcbiIpKTsKLSsKLSsgICAgcHJpbnRmKCJcbkFsbCB0ZXN0cyBjb21wbGV0 ZWQgd2l0aCAlZCBlcnJvcnNcbiIsIEVycm9yKTsKLSsgICAgcmV0dXJuIEVycm9yID8gMSA6IDA7 Ci0rfQotKwotKyNlbmRpZgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvTWFr ZWZpbGUuZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9NYWtlZmlsZQotLS0tIG9wZW5z c2wtMS4wLjJpL2NyeXB0by9maXBzL01ha2VmaWxlLmZpcHMJMjAxNi0wOS0yMiAxMzozNTo1Ny4w MjAyMjEwNjYgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9NYWtlZmlsZQky MDE2LTA5LTIyIDEzOjM1OjU3LjAyMDIyMTA2NiArMDIwMAotQEAgLTAsMCArMSwzNDEgQEAKLSsj Ci0rIyBPcGVuU1NML2NyeXB0by9maXBzL01ha2VmaWxlCi0rIwotKwotK0RJUj0JZmlwcwotK1RP UD0JLi4vLi4KLStDQz0JY2MKLStJTkNMVURFUz0KLStDRkxBRz0tZwotK01BS0VGSUxFPQlNYWtl ZmlsZQotK0FSPQkJYXIgcgotKwotK0NGTEFHUz0gJChJTkNMVURFUykgJChDRkxBRykKLSsKLStH RU5FUkFMPU1ha2VmaWxlCi0rVEVTVD1maXBzX3Rlc3Rfc3VpdGUuYyBmaXBzX3JhbmR0ZXN0LmMK LStBUFBTPQotKwotK1BST0dSQU09IGZpcHNfc3RhbmRhbG9uZV9obWFjCi0rRVhFPSAkKFBST0dS QU0pJChFWEVfRVhUKQotKwotK0xJQj0kKFRPUCkvbGliY3J5cHRvLmEKLStMSUJTUkM9Zmlwc19h ZXNfc2VsZnRlc3QuYyBmaXBzX2Rlc19zZWxmdGVzdC5jIGZpcHNfaG1hY19zZWxmdGVzdC5jIGZp cHNfcmFuZF9zZWxmdGVzdC5jIFwKLSsgICAgZmlwc19yc2Ffc2VsZnRlc3QuYyBmaXBzX3NoYV9z ZWxmdGVzdC5jIGZpcHMuYyBmaXBzX2RzYV9zZWxmdGVzdC5jICBmaXBzX3JhbmQuYyBcCi0rICAg IGZpcHNfcnNhX3g5MzFnLmMgZmlwc19wb3N0LmMgZmlwc19kcmJnX2N0ci5jIGZpcHNfZHJiZ19o YXNoLmMgZmlwc19kcmJnX2htYWMuYyBcCi0rICAgIGZpcHNfZHJiZ19saWIuYyBmaXBzX2RyYmdf cmFuZC5jIGZpcHNfZHJiZ19zZWxmdGVzdC5jIGZpcHNfcmFuZF9saWIuYyBcCi0rICAgIGZpcHNf Y21hY19zZWxmdGVzdC5jIGZpcHNfZW5jLmMgZmlwc19tZC5jCi0rCi0rTElCT0JKPWZpcHNfYWVz X3NlbGZ0ZXN0Lm8gZmlwc19kZXNfc2VsZnRlc3QubyBmaXBzX2htYWNfc2VsZnRlc3QubyBmaXBz X3JhbmRfc2VsZnRlc3QubyBcCi0rICAgIGZpcHNfcnNhX3NlbGZ0ZXN0Lm8gZmlwc19zaGFfc2Vs ZnRlc3QubyBmaXBzLm8gZmlwc19kc2Ffc2VsZnRlc3QubyAgZmlwc19yYW5kLm8gXAotKyAgICBm aXBzX3JzYV94OTMxZy5vIGZpcHNfcG9zdC5vIGZpcHNfZHJiZ19jdHIubyBmaXBzX2RyYmdfaGFz aC5vIGZpcHNfZHJiZ19obWFjLm8gXAotKyAgICBmaXBzX2RyYmdfbGliLm8gZmlwc19kcmJnX3Jh bmQubyBmaXBzX2RyYmdfc2VsZnRlc3QubyBmaXBzX3JhbmRfbGliLm8gXAotKyAgICBmaXBzX2Nt YWNfc2VsZnRlc3QubyBmaXBzX2VuYy5vIGZpcHNfbWQubwotKwotK0xJQkNSWVBUTz0tTC4uIC1s Y3J5cHRvCi0rCi0rU1JDPSAkKExJQlNSQykgZmlwc19zdGFuZGFsb25lX2htYWMuYwotKwotK0VY SEVBREVSPSBmaXBzLmggZmlwc19yYW5kLmgKLStIRUFERVI9CSQoRVhIRUFERVIpCi0rCi0rQUxM PSAgICAkKEdFTkVSQUwpICQoU1JDKSAkKEhFQURFUikKLSsKLSt0b3A6Ci0rCShjZCAuLi8uLjsg JChNQUtFKSBESVJTPWNyeXB0byBTRElSUz0kKERJUikgc3ViX2FsbCkKLSsKLSthbGw6CWxpYiBl eGUKLSsKLStsaWI6CSQoTElCT0JKKQotKwkkKEFSKSAkKExJQikgJChMSUJPQkopCi0rCSQoUkFO TElCKSAkKExJQikgfHwgZWNobyBOZXZlciBtaW5kLgotKwlAdG91Y2ggbGliCi0rCi0rZXhlOgkk KEVYRSkKLSsKLStmaWxlczoKLSsJJChQRVJMKSAkKFRPUCkvdXRpbC9maWxlcy5wbCBNYWtlZmls ZSA+PiAkKFRPUCkvTUlORk8KLSsKLStsaW5rczoKLSsJQCQoUEVSTCkgJChUT1ApL3V0aWwvbWts aW5rLnBsIC4uLy4uL2luY2x1ZGUvb3BlbnNzbCAkKEVYSEVBREVSKQotKwlAJChQRVJMKSAkKFRP UCkvdXRpbC9ta2xpbmsucGwgLi4vLi4vdGVzdCAkKFRFU1QpCi0rCUAkKFBFUkwpICQoVE9QKS91 dGlsL21rbGluay5wbCAuLi8uLi9hcHBzICQoQVBQUykKLSsKLStpbnN0YWxsOgotKwlAWyAtbiAi JChJTlNUQUxMVE9QKSIgXSAjIHNob3VsZCBiZSBzZXQgYnkgdG9wIE1ha2VmaWxlLi4uCi0rCUBo ZWFkZXJsaXN0PSIkKEVYSEVBREVSKSI7IGZvciBpIGluICQkaGVhZGVybGlzdCA7IFwKLSsJZG8g IFwKLSsJKGNwICQkaSAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvaW5jbHVkZS9vcGVu c3NsLyQkaTsgXAotKwljaG1vZCA2NDQgJChJTlNUQUxMX1BSRUZJWCkkKElOU1RBTExUT1ApL2lu Y2x1ZGUvb3BlbnNzbC8kJGkgKTsgXAotKwlkb25lOwotKwotK3RhZ3M6Ci0rCWN0YWdzICQoU1JD KQotKwotK3Rlc3RzOgotKwotK2xpbnQ6Ci0rCWxpbnQgLURMSU5UICQoSU5DTFVERVMpICQoU1JD KT5mbHVmZgotKwotK2RlcGVuZDoKLSsJQFsgLW4gIiQoTUFLRURFUEVORCkiIF0gIyBzaG91bGQg YmUgc2V0IGJ5IHVwcGVyIE1ha2VmaWxlLi4uCi0rCSQoTUFLRURFUEVORCkgLS0gJChDRkxBRykg JChJTkNMVURFUykgJChERVBGTEFHKSAtLSAkKFBST0dTKSAkKExJQlNSQykKLSsKLStkY2xlYW46 Ci0rCSQoUEVSTCkgLXBlICdpZiAoL14jIERPIE5PVCBERUxFVEUgVEhJUyBMSU5FLykge3ByaW50 OyBleGl0KDApO30nICQoTUFLRUZJTEUpID5NYWtlZmlsZS5uZXcKLSsJbXYgLWYgTWFrZWZpbGUu bmV3ICQoTUFLRUZJTEUpCi0rCi0rY2xlYW46Ci0rCXJtIC1mICoubyAqLm9iaiBsaWIgdGFncyBj b3JlIC5wdXJlIC5uZnMqICoub2xkICouYmFrIGZsdWZmCi0rCi0rJChFWEUpOiAkKFBST0dSQU0p Lm8KLSsJRklQU19TSEFfQVNNPSIiOyBmb3IgaSBpbiAkKFNIQTFfQVNNX09CSikgc2hhMjU2Lm87 IGRvIEZJUFNfU0hBX0FTTT0iJCRGSVBTX1NIQV9BU00gLi4vc2hhLyQkaSIgOyBkb25lOyBcCi0r CWZvciBpIGluICQoQ1BVSURfT0JKKTsgZG8gRklQU19TSEFfQVNNPSIkJEZJUFNfU0hBX0FTTSAu Li8kJGkiIDsgZG9uZTsgXAotKwkkKENDKSAtbyAkQCAkKENGTEFHUykgJChQUk9HUkFNKS5vICQk RklQU19TSEFfQVNNCi0rCi0rIyBETyBOT1QgREVMRVRFIFRISVMgTElORSAtLSBtYWtlIGRlcGVu ZCBkZXBlbmRzIG9uIGl0LgotKwotK2ZpcHMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Flcy5o IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmgKLStmaXBzLm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9iaW8uaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKLStmaXBzLm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lcnIuaAotK2Zp cHMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9m aXBzLmgKLStmaXBzLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzX3JhbmQuaCAuLi8uLi9p bmNsdWRlL29wZW5zc2wvaG1hYy5oCi0rZmlwcy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhh c2guaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqX21hYy5oCi0rZmlwcy5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvb2JqZWN0cy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5o Ci0rZmlwcy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaCAuLi8uLi9pbmNsdWRl L29wZW5zc2wvb3NzbF90eXAuaAotK2ZpcHMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3JhbmQu aCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcnNhLmgKLStmaXBzLm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9zYWZlc3RhY2suaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAotK2ZpcHMubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwcy5jIGZpcHNfbG9jbC5oCi0rZmlw c19hZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNs dWRlL29wZW5zc2wvYmlvLmgKLStmaXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvY3J5cHRvLmgKLStmaXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmgKLStmaXBzX2Flc19zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Zp cHMuaAotK2ZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5o Ci0rZmlwc19hZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29ial9tYWMuaAot K2ZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKLStm aXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAot K2ZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCi0r Zmlwc19hZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmgKLStm aXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKLStm aXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAotK2ZpcHNf YWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfYWVz X3NlbGZ0ZXN0LmMKLStmaXBzX2Rlc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv YXNuMS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAotK2ZpcHNfZGVzX3NlbGZ0ZXN0Lm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAotK2ZpcHNfZGVzX3NlbGZ0ZXN0Lm86IC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lcnIuaAot K2ZpcHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaCAuLi8uLi9p bmNsdWRlL29wZW5zc2wvZmlwcy5oCi0rZmlwc19kZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2xoYXNoLmgKLStmaXBzX2Rlc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvb2JqX21hYy5oCi0rZmlwc19kZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL29iamVjdHMuaAotK2ZpcHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9vcGVuc3NsY29uZi5oCi0rZmlwc19kZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL29wZW5zc2x2LmgKLStmaXBzX2Rlc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvb3NzbF90eXAuaAotK2ZpcHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9zYWZlc3RhY2suaAotK2ZpcHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9zdGFjay5oCi0rZmlwc19kZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5 bWhhY2tzLmggZmlwc19kZXNfc2VsZnRlc3QuYwotK2ZpcHNfZHJiZ19jdHIubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2Flcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmgKLStmaXBzX2Ry YmdfY3RyLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaCAuLi8uLi9pbmNsdWRlL29wZW5z c2wvY3J5cHRvLmgKLStmaXBzX2RyYmdfY3RyLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29z Mi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaAotK2ZpcHNfZHJiZ19jdHIubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL2ZpcHMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwc19yYW5kLmgK LStmaXBzX2RyYmdfY3RyLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9obWFjLmggLi4vLi4vaW5j bHVkZS9vcGVuc3NsL29ial9tYWMuaAotK2ZpcHNfZHJiZ19jdHIubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL29iamVjdHMuaAotK2ZpcHNfZHJiZ19jdHIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L29wZW5zc2xjb25mLmgKLStmaXBzX2RyYmdfY3RyLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9v cGVuc3Nsdi5oCi0rZmlwc19kcmJnX2N0ci5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90 eXAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcmFuZC5oCi0rZmlwc19kcmJnX2N0ci5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKLStmaXBzX2RyYmdfY3RyLm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9zdGFjay5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oCi0r Zmlwc19kcmJnX2N0ci5vOiBmaXBzX2RyYmdfY3RyLmMgZmlwc19yYW5kX2xjbC5oCi0rZmlwc19k cmJnX2hhc2gubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Flcy5oIC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9hc24xLmgKLStmaXBzX2RyYmdfaGFzaC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlv LmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCi0rZmlwc19kcmJnX2hhc2gubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oCi0r Zmlwc19kcmJnX2hhc2gubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaAotK2ZpcHNfZHJi Z19oYXNoLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzX3JhbmQuaAotK2ZpcHNfZHJiZ19o YXNoLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9obWFjLmggLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L29ial9tYWMuaAotK2ZpcHNfZHJiZ19oYXNoLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpl Y3RzLmgKLStmaXBzX2RyYmdfaGFzaC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNv bmYuaAotK2ZpcHNfZHJiZ19oYXNoLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5o Ci0rZmlwc19kcmJnX2hhc2gubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmggLi4v Li4vaW5jbHVkZS9vcGVuc3NsL3JhbmQuaAotK2ZpcHNfZHJiZ19oYXNoLm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAotK2ZpcHNfZHJiZ19oYXNoLm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9zdGFjay5oCi0rZmlwc19kcmJnX2hhc2gubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L3N5bWhhY2tzLmggZmlwc19kcmJnX2hhc2guYwotK2ZpcHNfZHJiZ19oYXNoLm86IGZpcHNfcmFu ZF9sY2wuaAotK2ZpcHNfZHJiZ19obWFjLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hZXMuaCAu Li8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oCi0rZmlwc19kcmJnX2htYWMubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2Jpby5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAotK2ZpcHNf ZHJiZ19obWFjLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9ldnAuaAotK2ZpcHNfZHJiZ19obWFjLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9m aXBzLmgKLStmaXBzX2RyYmdfaG1hYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwc19yYW5k LmgKLStmaXBzX2RyYmdfaG1hYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvaG1hYy5oIC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKLStmaXBzX2RyYmdfaG1hYy5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvb2JqZWN0cy5oCi0rZmlwc19kcmJnX2htYWMubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL29wZW5zc2xjb25mLmgKLStmaXBzX2RyYmdfaG1hYy5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvb3BlbnNzbHYuaAotK2ZpcHNfZHJiZ19obWFjLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9vc3NsX3R5cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9yYW5kLmgKLStmaXBzX2RyYmdfaG1h Yy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKLStmaXBzX2RyYmdfaG1hYy5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAotK2ZpcHNfZHJiZ19obWFjLm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfZHJiZ19obWFjLmMKLStmaXBzX2RyYmdf aG1hYy5vOiBmaXBzX3JhbmRfbGNsLmgKLStmaXBzX2RyYmdfbGliLm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9hZXMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oCi0rZmlwc19kcmJnX2xp Yi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Ny eXB0by5oCi0rZmlwc19kcmJnX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZV9vczIuaCAu Li8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmgKLStmaXBzX2RyYmdfbGliLm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9ldnAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oCi0rZmlwc19kcmJn X2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwc19yYW5kLmggLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2htYWMuaAotK2ZpcHNfZHJiZ19saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2xo YXNoLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29ial9tYWMuaAotK2ZpcHNfZHJiZ19saWIubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAotK2ZpcHNfZHJiZ19saWIubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKLStmaXBzX2RyYmdfbGliLm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCi0rZmlwc19kcmJnX2xpYi5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvb3NzbF90eXAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcmFuZC5oCi0rZmlwc19k cmJnX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKLStmaXBzX2RyYmdf bGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oIC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9zeW1oYWNrcy5oCi0rZmlwc19kcmJnX2xpYi5vOiBmaXBzX2RyYmdfbGliLmMgZmlwc19sb2Ns LmggZmlwc19yYW5kX2xjbC5oCi0rZmlwc19kcmJnX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL2Flcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmgKLStmaXBzX2RyYmdfcmFuZC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0 by5oCi0rZmlwc19kcmJnX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4v Li4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oCi0rZmlwc19kcmJnX3JhbmQubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2V2cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmgKLStmaXBzX2RyYmdf cmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwc19yYW5kLmgKLStmaXBzX2RyYmdfcmFu ZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvaG1hYy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9s aGFzaC5oCi0rZmlwc19kcmJnX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29ial9tYWMu aAotK2ZpcHNfZHJiZ19yYW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKLStm aXBzX2RyYmdfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAotK2Zp cHNfZHJiZ19yYW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCi0rZmlwc19k cmJnX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmggLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL3JhbmQuaAotK2ZpcHNfZHJiZ19yYW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9zYWZlc3RhY2suaAotK2ZpcHNfZHJiZ19yYW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9z dGFjay5oCi0rZmlwc19kcmJnX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tz LmggZmlwc19kcmJnX3JhbmQuYwotK2ZpcHNfZHJiZ19yYW5kLm86IGZpcHNfcmFuZF9sY2wuaAot K2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYWVzLmggLi4vLi4v aW5jbHVkZS9vcGVuc3NsL2FzbjEuaAotK2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvYmlvLmgKLStmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2NyeXB0by5oCi0rZmlwc19kcmJnX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9lX29zMi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lcnIuaAotK2ZpcHNfZHJiZ19zZWxm dGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmggLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2ZpcHMuaAotK2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlw c19yYW5kLmgKLStmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ht YWMuaAotK2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2gu aAotK2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqX21hYy5o Ci0rZmlwc19kcmJnX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgK LStmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25m LmgKLStmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2 LmgKLStmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlw LmgKLStmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3JhbmQuaAot K2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgK LStmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKLStm aXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlw c19kcmJnX3NlbGZ0ZXN0LmMKLStmaXBzX2RyYmdfc2VsZnRlc3QubzogZmlwc19kcmJnX3NlbGZ0 ZXN0LmggZmlwc19sb2NsLmggZmlwc19yYW5kX2xjbC5oCi0rZmlwc19kc2Ffc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgK LStmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYm4uaCAuLi8uLi9p bmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKLStmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvZHNhLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmgKLStmaXBzX2Rz YV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmggLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2V2cC5oCi0rZmlwc19kc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2ZpcHMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAotK2ZpcHNfZHNhX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKLStmaXBzX2RzYV9zZWxmdGVzdC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCi0rZmlwc19kc2Ffc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKLStmaXBzX2RzYV9zZWxmdGVzdC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAotK2ZpcHNfZHNhX3NlbGZ0ZXN0Lm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oCi0rZmlwc19kc2Ffc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCi0rZmlwc19kc2Ffc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKLStmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX2RzYV9zZWxmdGVzdC5jCi0rZmlwc19k c2Ffc2VsZnRlc3QubzogZmlwc19sb2NsLmgKLStmaXBzX2htYWNfc2VsZnRlc3QubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgKLStmaXBz X2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCi0rZmlwc19o bWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9lcnIuaAotK2ZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvZXZwLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaAotK2ZpcHNfaG1hY19zZWxm dGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvaG1hYy5oCi0rZmlwc19obWFjX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCi0rZmlwc19obWFjX3NlbGZ0ZXN0Lm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKLStmaXBzX2htYWNfc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAotK2ZpcHNfaG1hY19zZWxmdGVzdC5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAotK2ZpcHNfaG1hY19zZWxmdGVzdC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAotK2ZpcHNfaG1hY19zZWxmdGVzdC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaAotK2ZpcHNfaG1hY19zZWxmdGVzdC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKLStmaXBzX2htYWNfc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKLStmaXBzX2htYWNfc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19obWFjX3NlbGZ0ZXN0LmMKLStm aXBzX3Bvc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Flcy5oIC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9hc24xLmgKLStmaXBzX3Bvc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oIC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAotK2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvZHNhLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmgKLStmaXBzX3Bvc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAu aAotK2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oIC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9maXBzX3JhbmQuaAotK2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvaG1hYy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCi0rZmlwc19wb3N0Lm86IC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVj dHMuaAotK2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAot K2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaCAuLi8uLi9pbmNs dWRlL29wZW5zc2wvb3NzbF90eXAuaAotK2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvcmFuZC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9yc2EuaAotK2ZpcHNfcG9zdC5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNr LmgKLStmaXBzX3Bvc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19s b2NsLmggZmlwc19wb3N0LmMKLStmaXBzX3JhbmQubzogLi4vLi4vZV9vcy5oIC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9hZXMuaAotK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNu MS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAotK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvY3J5cHRvLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmgKLStmaXBz X3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oIC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9ldnAuaAotK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oIC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9maXBzX3JhbmQuaAotK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvaG1hYy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCi0rZmlwc19yYW5k Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmggLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L29iamVjdHMuaAotK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNv bmYuaAotK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaCAuLi8u Li9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaAotK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvcmFuZC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAotK2ZpcHNf cmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaCAuLi8uLi9pbmNsdWRlL29wZW5z c2wvc3ltaGFja3MuaAotK2ZpcHNfcmFuZC5vOiBmaXBzX2xvY2wuaCBmaXBzX3JhbmQuYwotK2Zp cHNfcmFuZF9saWIubzogLi4vLi4vZV9vcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hZXMuaAot K2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNs dWRlL29wZW5zc2wvYmlvLmgKLStmaXBzX3JhbmRfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9jcnlwdG8uaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZV9vczIuaAotK2ZpcHNfcmFuZF9saWIu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAu aAotK2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaCAuLi8uLi9p bmNsdWRlL29wZW5zc2wvZmlwc19yYW5kLmgKLStmaXBzX3JhbmRfbGliLm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9obWFjLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2xoYXNoLmgKLStmaXBzX3Jh bmRfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKLStmaXBzX3JhbmRfbGli Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKLStmaXBzX3JhbmRfbGliLm86IC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCi0rZmlwc19yYW5kX2xpYi5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAotK2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL29zc2xfdHlwLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3JhbmQuaAotK2Zp cHNfcmFuZF9saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCi0rZmlwc19y YW5kX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaCAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvc3ltaGFja3MuaAotK2ZpcHNfcmFuZF9saWIubzogZmlwc19yYW5kX2xpYi5jCi0rZmlw c19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hZXMuaCAuLi8uLi9pbmNs dWRlL29wZW5zc2wvYXNuMS5oCi0rZmlwc19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9iaW8uaAotK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvY3J5cHRvLmgKLStmaXBzX3JhbmRfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oCi0rZmlwc19yYW5kX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlw cy5oCi0rZmlwc19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzX3Jh bmQuaAotK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvaG1hYy5o Ci0rZmlwc19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCi0r Zmlwc19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKLStm aXBzX3JhbmRfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAotK2Zp cHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAot K2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAot K2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaAot K2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcmFuZC5oCi0rZmlw c19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAotK2Zp cHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAotK2ZpcHNf cmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX2xv Y2wuaAotK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiBmaXBzX3JhbmRfc2VsZnRlc3QuYwotK2ZpcHNf cnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmggLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2Jpby5oCi0rZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL2JuLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCi0rZmlwc19yc2Ffc2VsZnRl c3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2Vyci5oCi0rZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5o IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmgKLStmaXBzX3JzYV9zZWxmdGVzdC5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAotK2ZpcHNfcnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKLStmaXBzX3JzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvb2JqZWN0cy5oCi0rZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKLStmaXBzX3JzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvb3BlbnNzbHYuaAotK2ZpcHNfcnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9vc3NsX3R5cC5oCi0rZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL3JzYS5oCi0rZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL3NhZmVzdGFjay5oCi0rZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL3N0YWNrLmgKLStmaXBzX3JzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv c3ltaGFja3MuaCBmaXBzX3JzYV9zZWxmdGVzdC5jCi0rZmlwc19yc2FfeDkzMWcubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgKLStmaXBz X3JzYV94OTMxZy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYm4uaCAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvY3J5cHRvLmgKLStmaXBzX3JzYV94OTMxZy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv ZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmgKLStmaXBzX3JzYV94OTMxZy5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5o Ci0rZmlwc19yc2FfeDkzMWcubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgK LStmaXBzX3JzYV94OTMxZy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAotK2Zp cHNfcnNhX3g5MzFnLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oIC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9yc2EuaAotK2ZpcHNfcnNhX3g5MzFnLm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9zYWZlc3RhY2suaAotK2ZpcHNfcnNhX3g5MzFnLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9zdGFjay5oCi0rZmlwc19yc2FfeDkzMWcubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhh Y2tzLmggZmlwc19yc2FfeDkzMWcuYwotK2ZpcHNfc2hhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9hc24xLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oCi0rZmlwc19zaGFf c2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCi0rZmlwc19zaGFfc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVu c3NsL2Vyci5oCi0rZmlwc19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2 cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmgKLStmaXBzX3NoYV9zZWxmdGVzdC5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAotK2ZpcHNfc2hhX3NlbGZ0ZXN0Lm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKLStmaXBzX3NoYV9zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCi0rZmlwc19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKLStmaXBzX3NoYV9zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAotK2ZpcHNfc2hhX3NlbGZ0ZXN0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oCi0rZmlwc19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCi0rZmlwc19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL3NoYS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oCi0rZmlwc19z aGFfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19zaGFf c2VsZnRlc3QuYwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2htYWMvaG1hYy5jLmZp cHMgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2htYWMvaG1hYy5jCi0tLS0gb3BlbnNzbC0xLjAuMmkv Y3J5cHRvL2htYWMvaG1hYy5jLmZpcHMJMjAxNi0wOS0yMiAxMjoyMzowNi4wMDAwMDAwMDAgKzAy MDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vaG1hYy9obWFjLmMJMjAxNi0wOS0yMiAxMzoz NTo1Ny4wMjAyMjEwNjYgKzAyMDAKLUBAIC04OSwxMiArODksNiBAQCBpbnQgSE1BQ19Jbml0X2V4 KEhNQUNfQ1RYICpjdHgsIGNvbnN0IHZvCi0gICAgICAgICAgICAgRVZQZXJyKEVWUF9GX0hNQUNf SU5JVF9FWCwgRVZQX1JfRElTQUJMRURfRk9SX0ZJUFMpOwotICAgICAgICAgICAgIHJldHVybiAw OwotICAgICAgICAgfQotLSAgICAgICAgLyoKLS0gICAgICAgICAqIE90aGVyIGFsZ29yaXRobSBi bG9ja2luZyB3aWxsIGJlIGRvbmUgaW4gRklQU19jbWFjX2luaXQsIHZpYQotLSAgICAgICAgICog RklQU19obWFjX2luaXRfZXgoKS4KLS0gICAgICAgICAqLwotLSAgICAgICAgaWYgKCFpbXBsICYm ICFjdHgtPmlfY3R4LmVuZ2luZSkKLS0gICAgICAgICAgICByZXR1cm4gRklQU19obWFjX2luaXRf ZXgoY3R4LCBrZXksIGxlbiwgbWQsIE5VTEwpOwotICAgICB9Ci0gI2VuZGlmCi0gICAgIC8qIElm IHdlIGFyZSBjaGFuZ2luZyBNRCB0aGVuIHdlIG11c3QgaGF2ZSBhIGtleSAqLwotQEAgLTExMSw2 ICsxMDUsMTMgQEAgaW50IEhNQUNfSW5pdF9leChITUFDX0NUWCAqY3R4LCBjb25zdCB2bwotICAg ICB9Ci0gCi0gICAgIGlmIChrZXkgIT0gTlVMTCkgewotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsg ICAgICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKG1kLT5mbGFncyAmIEVWUF9NRF9GTEFHX0ZJUFMp Ci0rICAgICAgICAgICAgJiYgKCEoY3R4LT5tZF9jdHguZmxhZ3MgJiBFVlBfTURfQ1RYX0ZMQUdf Tk9OX0ZJUFNfQUxMT1cpCi0rICAgICAgICAgICAgICAgIHx8ICEoY3R4LT5pX2N0eC5mbGFncyAm IEVWUF9NRF9DVFhfRkxBR19OT05fRklQU19BTExPVykKLSsgICAgICAgICAgICAgICAgfHwgIShj dHgtPm9fY3R4LmZsYWdzICYgRVZQX01EX0NUWF9GTEFHX05PTl9GSVBTX0FMTE9XKSkpCi0rICAg ICAgICAgICAgZ290byBlcnI7Ci0rI2VuZGlmCi0gICAgICAgICByZXNldCA9IDE7Ci0gICAgICAg ICBqID0gRVZQX01EX2Jsb2NrX3NpemUobWQpOwotICAgICAgICAgT1BFTlNTTF9hc3NlcnQoaiA8 PSAoaW50KXNpemVvZihjdHgtPmtleSkpOwotQEAgLTE2NCwxMCArMTY1LDYgQEAgaW50IEhNQUNf SW5pdChITUFDX0NUWCAqY3R4LCBjb25zdCB2b2lkCi0gCi0gaW50IEhNQUNfVXBkYXRlKEhNQUNf Q1RYICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHNpemVfdCBsZW4pCi0gewotLSNp ZmRlZiBPUEVOU1NMX0ZJUFMKLS0gICAgaWYgKEZJUFNfbW9kZSgpICYmICFjdHgtPmlfY3R4LmVu Z2luZSkKLS0gICAgICAgIHJldHVybiBGSVBTX2htYWNfdXBkYXRlKGN0eCwgZGF0YSwgbGVuKTsK LS0jZW5kaWYKLSAgICAgaWYgKCFjdHgtPm1kKQotICAgICAgICAgcmV0dXJuIDA7Ci0gCi1AQCAt MTc4LDEwICsxNzUsNiBAQCBpbnQgSE1BQ19GaW5hbChITUFDX0NUWCAqY3R4LCB1bnNpZ25lZCBj Ci0gewotICAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICAgdW5zaWduZWQgY2hhciBidWZbRVZQX01B WF9NRF9TSVpFXTsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgIGlmIChGSVBTX21vZGUoKSAm JiAhY3R4LT5pX2N0eC5lbmdpbmUpCi0tICAgICAgICByZXR1cm4gRklQU19obWFjX2ZpbmFsKGN0 eCwgbWQsIGxlbik7Ci0tI2VuZGlmCi0gCi0gICAgIGlmICghY3R4LT5tZCkKLSAgICAgICAgIGdv dG8gZXJyOwotQEAgLTIyNSwxMiArMjE4LDYgQEAgaW50IEhNQUNfQ1RYX2NvcHkoSE1BQ19DVFgg KmRjdHgsIEhNQUNfQwotIAotIHZvaWQgSE1BQ19DVFhfY2xlYW51cChITUFDX0NUWCAqY3R4KQot IHsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgIGlmIChGSVBTX21vZGUoKSAmJiAhY3R4LT5p X2N0eC5lbmdpbmUpIHsKLS0gICAgICAgIEZJUFNfaG1hY19jdHhfY2xlYW51cChjdHgpOwotLSAg ICAgICAgcmV0dXJuOwotLSAgICB9Ci0tI2VuZGlmCi0gICAgIEVWUF9NRF9DVFhfY2xlYW51cCgm Y3R4LT5pX2N0eCk7Ci0gICAgIEVWUF9NRF9DVFhfY2xlYW51cCgmY3R4LT5vX2N0eCk7Ci0gICAg IEVWUF9NRF9DVFhfY2xlYW51cCgmY3R4LT5tZF9jdHgpOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAu MmkvY3J5cHRvL21kYzIvbWRjMmRnc3QuYy5maXBzIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9tZGMy L21kYzJkZ3N0LmMKLS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vbWRjMi9tZGMyZGdzdC5jLmZp cHMJMjAxNi0wOS0yMiAxMjoyMzowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4y aS9jcnlwdG8vbWRjMi9tZGMyZGdzdC5jCTIwMTYtMDktMjIgMTM6MzU6NTcuMDIwMjIxMDY2ICsw MjAwCi1AQCAtNzYsNyArNzYsNyBAQAotICAgICAgICAgICAgICAgICAgICAgICAgICooKGMpKysp PSh1bnNpZ25lZCBjaGFyKSgoKGwpPj4yNEwpJjB4ZmYpKQotIAotIHN0YXRpYyB2b2lkIG1kYzJf Ym9keShNREMyX0NUWCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBsZW4pOwot LWZpcHNfbWRfaW5pdChNREMyKQotK25vbmZpcHNfbWRfaW5pdChNREMyKQotIHsKLSAgICAgYy0+ bnVtID0gMDsKLSAgICAgYy0+cGFkX3R5cGUgPSAxOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkv Y3J5cHRvL21kMi9tZDJfZGdzdC5jLmZpcHMgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL21kMi9tZDJf ZGdzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL21kMi9tZDJfZGdzdC5jLmZpcHMJMjAx Ni0wOS0yMiAxMjoyMzowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlw dG8vbWQyL21kMl9kZ3N0LmMJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMjAyMjEwNjYgKzAyMDAKLUBA IC02Miw2ICs2MiwxMSBAQAotICNpbmNsdWRlIDxvcGVuc3NsL21kMi5oPgotICNpbmNsdWRlIDxv cGVuc3NsL29wZW5zc2x2Lmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Ci0rI2lmZGVm IE9QRU5TU0xfRklQUwotKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2VuZGlmCi0rCi0r I2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0gCi0gY29uc3QgY2hhciBNRDJfdmVyc2lvbltdID0g Ik1EMiIgT1BFTlNTTF9WRVJTSU9OX1BURVhUOwotIAotQEAgLTExOSw3ICsxMjQsNyBAQCBjb25z dCBjaGFyICpNRDJfb3B0aW9ucyh2b2lkKQotICAgICAgICAgcmV0dXJuICgibWQyKGludCkiKTsK LSB9Ci0gCi0tZmlwc19tZF9pbml0KE1EMikKLStub25maXBzX21kX2luaXQoTUQyKQotIHsKLSAg ICAgYy0+bnVtID0gMDsKLSAgICAgbWVtc2V0KGMtPnN0YXRlLCAwLCBzaXplb2YgYy0+c3RhdGUp OwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL21kNC9tZDRfZGdzdC5jLmZpcHMgb3Bl bnNzbC0xLjAuMmkvY3J5cHRvL21kNC9tZDRfZGdzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5 cHRvL21kNC9tZDRfZGdzdC5jLmZpcHMJMjAxNi0wOS0yMiAxMjoyMzowNi4wMDAwMDAwMDAgKzAy MDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vbWQ0L21kNF9kZ3N0LmMJMjAxNi0wOS0yMiAx MzozNTo1Ny4wMjAyMjEwNjYgKzAyMDAKLUBAIC03Miw3ICs3Miw3IEBAIGNvbnN0IGNoYXIgTUQ0 X3ZlcnNpb25bXSA9ICJNRDQiIE9QRU5TU0wKLSAjZGVmaW5lIElOSVRfREFUQV9DICh1bnNpZ25l ZCBsb25nKTB4OThiYWRjZmVMCi0gI2RlZmluZSBJTklUX0RBVEFfRCAodW5zaWduZWQgbG9uZykw eDEwMzI1NDc2TAotIAotLWZpcHNfbWRfaW5pdChNRDQpCi0rbm9uZmlwc19tZF9pbml0KE1ENCkK LSB7Ci0gICAgIG1lbXNldChjLCAwLCBzaXplb2YoKmMpKTsKLSAgICAgYy0+QSA9IElOSVRfREFU QV9BOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL21kNS9tZDVfZGdzdC5jLmZpcHMg b3BlbnNzbC0xLjAuMmkvY3J5cHRvL21kNS9tZDVfZGdzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMmkv Y3J5cHRvL21kNS9tZDVfZGdzdC5jLmZpcHMJMjAxNi0wOS0yMiAxMjoyMzowNi4wMDAwMDAwMDAg KzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vbWQ1L21kNV9kZ3N0LmMJMjAxNi0wOS0y MiAxMzozNTo1Ny4wMjAyMjEwNjYgKzAyMDAKLUBAIC03Miw3ICs3Miw3IEBAIGNvbnN0IGNoYXIg TUQ1X3ZlcnNpb25bXSA9ICJNRDUiIE9QRU5TU0wKLSAjZGVmaW5lIElOSVRfREFUQV9DICh1bnNp Z25lZCBsb25nKTB4OThiYWRjZmVMCi0gI2RlZmluZSBJTklUX0RBVEFfRCAodW5zaWduZWQgbG9u ZykweDEwMzI1NDc2TAotIAotLWZpcHNfbWRfaW5pdChNRDUpCi0rbm9uZmlwc19tZF9pbml0KE1E NSkKLSB7Ci0gICAgIG1lbXNldChjLCAwLCBzaXplb2YoKmMpKTsKLSAgICAgYy0+QSA9IElOSVRf REFUQV9BOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL29fZmlwcy5jLmZpcHMgb3Bl bnNzbC0xLjAuMmkvY3J5cHRvL29fZmlwcy5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL29f Zmlwcy5jLmZpcHMJMjAxNi0wOS0yMiAxMjoyMzowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVu c3NsLTEuMC4yaS9jcnlwdG8vb19maXBzLmMJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMjAyMjEwNjYg KzAyMDAKLUBAIC04MCw2ICs4MCw4IEBAIGludCBGSVBTX21vZGVfc2V0KGludCByKQotICMgaWZu ZGVmIEZJUFNfQVVUSF9VU0VSX1BBU1MKLSAjICBkZWZpbmUgRklQU19BVVRIX1VTRVJfUEFTUyAg ICAgIkRlZmF1bHQgRklQUyBDcnlwdG8gVXNlciBQYXNzd29yZCIKLSAjIGVuZGlmCi0rICAgIGlm IChyICYmIEZJUFNfbW9kdWxlX21vZGUoKSkgLyogY2FuIGJlIGltcGxpY2l0bHkgaW5pdGlhbGl6 ZWQgYnkgT1BFTlNTTF9pbml0KCkgKi8KLSsgICAgICAgIHJldHVybiAxOwotICAgICBpZiAoIUZJ UFNfbW9kdWxlX21vZGVfc2V0KHIsIEZJUFNfQVVUSF9VU0VSX1BBU1MpKQotICAgICAgICAgcmV0 dXJuIDA7Ci0gICAgIGlmIChyKQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL29faW5p dC5jLmZpcHMgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL29faW5pdC5jCi0tLS0gb3BlbnNzbC0xLjAu MmkvY3J5cHRvL29faW5pdC5jLmZpcHMJMjAxNi0wOS0yMiAxMjoyMzowNi4wMDAwMDAwMDAgKzAy MDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vb19pbml0LmMJMjAxNi0wOS0yMiAxMzozODox OS4xNTA0OTY5MDYgKzAyMDAKLUBAIC01Niw4ICs1NiwzNyBAQAotICNpbmNsdWRlIDxlX29zLmg+ Ci0gI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0gI2lmZGVmIE9QRU5TU0xfRklQUwotKyMgaW5j bHVkZSA8c3lzL3R5cGVzLmg+Ci0rIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgotKyMgaW5jbHVkZSA8 ZmNudGwuaD4KLSsjIGluY2x1ZGUgPHVuaXN0ZC5oPgotKyMgaW5jbHVkZSA8ZXJybm8uaD4KLSsj IGluY2x1ZGUgPHN0ZGxpYi5oPgotICMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0gIyBpbmNs dWRlIDxvcGVuc3NsL3JhbmQuaD4KLSsKLSsjIGRlZmluZSBGSVBTX01PREVfU1dJVENIX0ZJTEUg Ii9wcm9jL3N5cy9jcnlwdG8vZmlwc19lbmFibGVkIgotKwotK3N0YXRpYyB2b2lkIGluaXRfZmlw c19tb2RlKHZvaWQpCi0rewotKyAgICBjaGFyIGJ1ZlsyXSA9ICIwIjsKLSsgICAgaW50IGZkOwot KwotKyAgICBpZiAoZ2V0ZW52KCJPUEVOU1NMX0ZPUkNFX0ZJUFNfTU9ERSIpICE9IE5VTEwpIHsK LSsgICAgICAgIGJ1ZlswXSA9ICcxJzsKLSsgICAgfSBlbHNlIGlmICgoZmQgPSBvcGVuKEZJUFNf TU9ERV9TV0lUQ0hfRklMRSwgT19SRE9OTFkpKSA+PSAwKSB7Ci0rICAgICAgICB3aGlsZSAocmVh ZChmZCwgYnVmLCBzaXplb2YoYnVmKSkgPCAwICYmIGVycm5vID09IEVJTlRSKSA7Ci0rICAgICAg ICBjbG9zZShmZCk7Ci0rICAgIH0KLSsgICAgLyogRmFpbHVyZSByZWFkaW5nIHRoZSBmaXBzIG1v ZGUgc3dpdGNoIGZpbGUgbWVhbnMganVzdCBub3QKLSsgICAgICogc3dpdGNoaW5nIGludG8gRklQ UyBtb2RlLiBXZSB3b3VsZCBicmVhayB0b28gbWFueSB0aGluZ3MKLSsgICAgICogb3RoZXJ3aXNl Li4KLSsgICAgICovCi0rCi0rICAgIGlmIChidWZbMF0gPT0gJzEnKSB7Ci0rICAgICAgICBGSVBT X21vZGVfc2V0KDEpOwotKyAgICB9Ci0rfQotICNlbmRpZgotIAotIC8qCi1AQCAtNjUsMjIgKzk0 LDI2IEBACi0gICogc2V0cyBGSVBTIGNhbGxiYWNrcwotICAqLwotIAotLXZvaWQgT1BFTlNTTF9p bml0KHZvaWQpCi0rdm9pZCBPUEVOU1NMX2luaXRfbGlicmFyeSh2b2lkKQotIHsKLSAgICAgc3Rh dGljIGludCBkb25lID0gMDsKLSAgICAgaWYgKGRvbmUpCi0gICAgICAgICByZXR1cm47Ci0gICAg IGRvbmUgPSAxOwotICNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0gICAgRklQU19zZXRfbG9ja2luZ19j YWxsYmFja3MoQ1JZUFRPX2xvY2ssIENSWVBUT19hZGRfbG9jayk7Ci0tIyBpZm5kZWYgT1BFTlNT TF9OT19ERVBSRUNBVEVECi0tICAgIEZJUFNfY3J5cHRvX3NldF9pZF9jYWxsYmFjayhDUllQVE9f dGhyZWFkX2lkKTsKLS0jIGVuZGlmCi0tICAgIEZJUFNfc2V0X2Vycm9yX2NhbGxiYWNrcyhFUlJf cHV0X2Vycm9yLCBFUlJfYWRkX2Vycm9yX3ZkYXRhKTsKLS0gICAgRklQU19zZXRfbWFsbG9jX2Nh bGxiYWNrcyhDUllQVE9fbWFsbG9jLCBDUllQVE9fZnJlZSk7Ci0gICAgIFJBTkRfaW5pdF9maXBz KCk7Ci0rICAgIGluaXRfZmlwc19tb2RlKCk7Ci0rICAgIGlmICghRklQU19tb2RlKCkpIHsKLSsg ICAgICAgIC8qIENsZWFuIHVwIHByZW1hdHVyZWx5IHNldCBkZWZhdWx0IHJhbmQgbWV0aG9kICov Ci0rICAgICAgICBSQU5EX3NldF9yYW5kX21ldGhvZChOVUxMKTsKLSsgICAgfQotICNlbmRpZgot ICNpZiAwCi0gICAgIGZwcmludGYoc3RkZXJyLCAiQ2FsbGVkIE9QRU5TU0xfaW5pdFxuIik7Ci0g I2VuZGlmCi0gfQotKwotK3ZvaWQgT1BFTlNTTF9pbml0KHZvaWQpCi0rewotKyAgICBPUEVOU1NM X2luaXRfbGlicmFyeSgpOwotK30KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9vcGVu c3NsY29uZi5oLmluLmZpcHMgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL29wZW5zc2xjb25mLmguaW4K LS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vb3BlbnNzbGNvbmYuaC5pbi5maXBzCTIwMTYtMDkt MjIgMTI6MjM6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL29w ZW5zc2xjb25mLmguaW4JMjAxNi0wOS0yMiAxMzozNTo1Ny4wMjEyMjEwODkgKzAyMDAKLUBAIC0x LDUgKzEsMjAgQEAKLSAvKiBjcnlwdG8vb3BlbnNzbGNvbmYuaC5pbiAqLwotIAotKyNpZmRlZiBP UEVOU1NMX0RPSU5HX01BS0VERVBFTkQKLSsKLSsvKiBJbmNsdWRlIGFueSBzeW1ib2xzIGhlcmUg dGhhdCBoYXZlIHRvIGJlIGV4cGxpY2l0bHkgc2V0IHRvIGVuYWJsZSBhIGZlYXR1cmUKLSsgKiB0 aGF0IHNob3VsZCBiZSB2aXNpYmxlIHRvIG1ha2VkZXBlbmQuCi0rICoKLSsgKiBbT3VyICJtYWtl IGRlcGVuZCIgZG9lc24ndCBhY3R1YWxseSBsb29rIGF0IHRoaXMsIHdlIHVzZSBhY3R1YWwgYnVp bGQgc2V0dGluZ3MKLSsgKiBpbnN0ZWFkOyB3ZSB3YW50IHRvIG1ha2UgaXQgZWFzeSB0byByZW1v dmUgc3ViZGlyZWN0b3JpZXMgd2l0aCBkaXNhYmxlZCBhbGdvcml0aG1zLl0KLSsgKi8KLSsKLSsj aWZuZGVmIE9QRU5TU0xfRklQUwotKyNkZWZpbmUgT1BFTlNTTF9GSVBTCi0rI2VuZGlmCi0rCi0r I2VuZGlmCi0rCi0gLyogR2VuZXJhdGUgODAzODYgY29kZT8gKi8KLSAjdW5kZWYgSTM4Nl9PTkxZ Ci0gCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcmFuZC9tZF9yYW5kLmMuZmlwcyBv cGVuc3NsLTEuMC4yaS9jcnlwdG8vcmFuZC9tZF9yYW5kLmMKLS0tLSBvcGVuc3NsLTEuMC4yaS9j cnlwdG8vcmFuZC9tZF9yYW5kLmMuZmlwcwkyMDE2LTA5LTIyIDEyOjIzOjA2LjAwMDAwMDAwMCAr MDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9yYW5kL21kX3JhbmQuYwkyMDE2LTA5LTIy IDEzOjM1OjU3LjAyMTIyMTA4OSArMDIwMAotQEAgLTM5MSw3ICszOTEsMTAgQEAgaW50IHNzbGVh eV9yYW5kX2J5dGVzKHVuc2lnbmVkIGNoYXIgKmJ1ZgotICAgICBDUllQVE9fd191bmxvY2soQ1JZ UFRPX0xPQ0tfUkFORDIpOwotICAgICBjcnlwdG9fbG9ja19yYW5kID0gMTsKLSAKLS0gICAgaWYg KCFpbml0aWFsaXplZCkgewotKyAgICAvKiBhbHdheXMgcG9sbCBmb3IgZXh0ZXJuYWwgZW50cm9w eSBpbiBGSVBTIG1vZGUsIGRyYmcgcHJvdmlkZXMgdGhlIAotKyAgICAgKiBleHBhbnNpb24KLSsg ICAgICovCi0rICAgIGlmICghaW5pdGlhbGl6ZWQgfHwgRklQU19tb2R1bGVfbW9kZSgpKSB7Ci0g ICAgICAgICBSQU5EX3BvbGwoKTsKLSAgICAgICAgIGluaXRpYWxpemVkID0gMTsKLSAgICAgfQot ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL3JhbmQvcmFuZC5oLmZpcHMgb3BlbnNzbC0x LjAuMmkvY3J5cHRvL3JhbmQvcmFuZC5oCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL3JhbmQv cmFuZC5oLmZpcHMJMjAxNi0wOS0yMiAxMzozNTo1Ni43NzcyMTU0NjUgKzAyMDAKLSsrKyBvcGVu c3NsLTEuMC4yaS9jcnlwdG8vcmFuZC9yYW5kLmgJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMjEyMjEw ODkgKzAyMDAKLUBAIC0xMzMsMTYgKzEzMywzNCBAQCB2b2lkIEVSUl9sb2FkX1JBTkRfc3RyaW5n cyh2b2lkKTsKLSAvKiBFcnJvciBjb2RlcyBmb3IgdGhlIFJBTkQgZnVuY3Rpb25zLiAqLwotIAot IC8qIEZ1bmN0aW9uIGNvZGVzLiAqLwotKyMgZGVmaW5lIFJBTkRfRl9FTkdfUkFORF9HRVRfUkFO RF9NRVRIT0QgICAgICAgICAgICAgICAgICAxMDgKLSsjIGRlZmluZSBSQU5EX0ZfRklQU19SQU5E ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAzCi0rIyBkZWZpbmUgUkFORF9GX0ZJ UFNfUkFORF9CWVRFUyAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMgotKyMgZGVmaW5lIFJB TkRfRl9GSVBTX1JBTkRfU0VUX0RUICAgICAgICAgICAgICAgICAgICAgICAgICAxMDYKLSsjIGRl ZmluZSBSQU5EX0ZfRklQU19YOTMxX1NFVF9EVCAgICAgICAgICAgICAgICAgICAgICAgICAgMTA2 Ci0rIyBkZWZpbmUgUkFORF9GX0ZJUFNfU0VUX0RUICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDEwNAotKyMgZGVmaW5lIFJBTkRfRl9GSVBTX1NFVF9QUk5HX1NFRUQgICAgICAgICAgICAg ICAgICAgICAgICAxMDcKLSsjIGRlZmluZSBSQU5EX0ZfRklQU19TRVRfVEVTVF9NT0RFICAgICAg ICAgICAgICAgICAgICAgICAgMTA1Ci0gIyBkZWZpbmUgUkFORF9GX1JBTkRfR0VUX1JBTkRfTUVU SE9EICAgICAgICAgICAgICAgICAgICAgIDEwMQotLSMgZGVmaW5lIFJBTkRfRl9SQU5EX0lOSVRf RklQUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDIKLSsjIGRlZmluZSBSQU5EX0ZfUkFO RF9JTklUX0ZJUFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA5Ci0gIyBkZWZpbmUgUkFO RF9GX1NTTEVBWV9SQU5EX0JZVEVTICAgICAgICAgICAgICAgICAgICAgICAgIDEwMAotIAotIC8q IFJlYXNvbiBjb2Rlcy4gKi8KLS0jIGRlZmluZSBSQU5EX1JfRFVBTF9FQ19EUkJHX0RJU0FCTEVE ICAgICAgICAgICAgICAgICAgICAgMTA0Ci0tIyBkZWZpbmUgUkFORF9SX0VSUk9SX0lOSVRJQUxJ U0lOR19EUkJHICAgICAgICAgICAgICAgICAgIDEwMgotLSMgZGVmaW5lIFJBTkRfUl9FUlJPUl9J TlNUQU5USUFUSU5HX0RSQkcgICAgICAgICAgICAgICAgICAxMDMKLS0jIGRlZmluZSBSQU5EX1Jf Tk9fRklQU19SQU5ET01fTUVUSE9EX1NFVCAgICAgICAgICAgICAgICAgMTAxCi0rIyBkZWZpbmUg UkFORF9SX0RVQUxfRUNfRFJCR19ESVNBQkxFRCAgICAgICAgICAgICAgICAgICAgIDExNAotKyMg ZGVmaW5lIFJBTkRfUl9FUlJPUl9JTklUSUFMSVNJTkdfRFJCRyAgICAgICAgICAgICAgICAgICAx MTIKLSsjIGRlZmluZSBSQU5EX1JfRVJST1JfSU5TVEFOVElBVElOR19EUkJHICAgICAgICAgICAg ICAgICAgMTEzCi0rIyBkZWZpbmUgUkFORF9SX05PTl9GSVBTX01FVEhPRCAgICAgICAgICAgICAg ICAgICAgICAgICAgIDEwNQotKyMgZGVmaW5lIFJBTkRfUl9OT1RfSU5fVEVTVF9NT0RFICAgICAg ICAgICAgICAgICAgICAgICAgICAxMDYKLSsjIGRlZmluZSBSQU5EX1JfTk9fRklQU19SQU5ET01f TUVUSE9EX1NFVCAgICAgICAgICAgICAgICAgMTExCi0rIyBkZWZpbmUgUkFORF9SX05PX0tFWV9T RVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNwotKyMgZGVmaW5lIFJBTkRfUl9Q Uk5HX0FTS0lOR19GT1JfVE9PX01VQ0ggICAgICAgICAgICAgICAgICAxMDEKLSsjIGRlZmluZSBS QU5EX1JfUFJOR19FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA4Ci0rIyBk ZWZpbmUgUkFORF9SX1BSTkdfS0VZRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEw OQotKyMgZGVmaW5lIFJBTkRfUl9QUk5HX05PVF9SRUtFWUVEICAgICAgICAgICAgICAgICAgICAg ICAgICAxMDIKLSsjIGRlZmluZSBSQU5EX1JfUFJOR19OT1RfUkVTRUVERUQgICAgICAgICAgICAg ICAgICAgICAgICAgMTAzCi0gIyBkZWZpbmUgUkFORF9SX1BSTkdfTk9UX1NFRURFRCAgICAgICAg ICAgICAgICAgICAgICAgICAgIDEwMAotKyMgZGVmaW5lIFJBTkRfUl9QUk5HX1NFRURfTVVTVF9O T1RfTUFUQ0hfS0VZICAgICAgICAgICAgICAxMTAKLSsjIGRlZmluZSBSQU5EX1JfUFJOR19TVFVD SyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA0Ci0gCi0gI2lmZGVmICBfX2NwbHVz cGx1cwotIH0KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9yaXBlbWQvcm1kX2Rnc3Qu Yy5maXBzIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9yaXBlbWQvcm1kX2Rnc3QuYwotLS0tIG9wZW5z c2wtMS4wLjJpL2NyeXB0by9yaXBlbWQvcm1kX2Rnc3QuYy5maXBzCTIwMTYtMDktMjIgMTI6MjM6 MDYuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL3JpcGVtZC9ybWRf ZGdzdC5jCTIwMTYtMDktMjIgMTM6MzU6NTcuMDIxMjIxMDg5ICswMjAwCi1AQCAtNzAsNyArNzAs NyBAQCB2b2lkIHJpcGVtZDE2MF9ibG9ja194ODYoUklQRU1EMTYwX0NUWCAqCi0gdm9pZCByaXBl bWQxNjBfYmxvY2soUklQRU1EMTYwX0NUWCAqYywgdW5zaWduZWQgbG9uZyAqcCwgc2l6ZV90IG51 bSk7Ci0gI2VuZGlmCi0gCi0tZmlwc19tZF9pbml0KFJJUEVNRDE2MCkKLStub25maXBzX21kX2lu aXQoUklQRU1EMTYwKQotIHsKLSAgICAgbWVtc2V0KGMsIDAsIHNpemVvZigqYykpOwotICAgICBj LT5BID0gUklQRU1EMTYwX0E7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcnNhL3Jz YV9jcnB0LmMuZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcnNhL3JzYV9jcnB0LmMKLS0tLSBv cGVuc3NsLTEuMC4yaS9jcnlwdG8vcnNhL3JzYV9jcnB0LmMuZmlwcwkyMDE2LTA5LTIyIDEyOjIz OjA2LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9yc2EvcnNhX2Ny cHQuYwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAyMTIyMTA4OSArMDIwMAotQEAgLTg5LDkgKzg5LDkg QEAgaW50IFJTQV9wcml2YXRlX2VuY3J5cHQoaW50IGZsZW4sIGNvbnN0Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqdG8sIFJTQSAqcnNhLCBpbnQgcGFkZGluZykKLSB7 Ci0gI2lmZGVmIE9QRU5TU0xfRklQUwotLSAgICBpZiAoRklQU19tb2RlKCkgJiYgIShyc2EtPm1l dGgtPmZsYWdzICYgUlNBX0ZMQUdfRklQU19NRVRIT0QpCi0tICAgICAgICAmJiAhKHJzYS0+Zmxh Z3MgJiBSU0FfRkxBR19OT05fRklQU19BTExPVykpIHsKLS0gICAgICAgIFJTQWVycihSU0FfRl9S U0FfUFJJVkFURV9FTkNSWVBULCBSU0FfUl9OT05fRklQU19SU0FfTUVUSE9EKTsKLSsgICAgaWYg KEZJUFNfbW9kZSgpICYmICEocnNhLT5mbGFncyAmIFJTQV9GTEFHX05PTl9GSVBTX0FMTE9XKSkg ewotKyAgICAgICAgUlNBZXJyKFJTQV9GX1JTQV9QUklWQVRFX0VOQ1JZUFQsCi0rICAgICAgICAg ICAgICAgUlNBX1JfT1BFUkFUSU9OX05PVF9BTExPV0VEX0lOX0ZJUFNfTU9ERSk7Ci0gICAgICAg ICByZXR1cm4gLTE7Ci0gICAgIH0KLSAjZW5kaWYKLUBAIC0xMTUsOSArMTE1LDkgQEAgaW50IFJT QV9wdWJsaWNfZGVjcnlwdChpbnQgZmxlbiwgY29uc3QgdQotICAgICAgICAgICAgICAgICAgICAg ICAgUlNBICpyc2EsIGludCBwYWRkaW5nKQotIHsKLSAjaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAg IGlmIChGSVBTX21vZGUoKSAmJiAhKHJzYS0+bWV0aC0+ZmxhZ3MgJiBSU0FfRkxBR19GSVBTX01F VEhPRCkKLS0gICAgICAgICYmICEocnNhLT5mbGFncyAmIFJTQV9GTEFHX05PTl9GSVBTX0FMTE9X KSkgewotLSAgICAgICAgUlNBZXJyKFJTQV9GX1JTQV9QVUJMSUNfREVDUllQVCwgUlNBX1JfTk9O X0ZJUFNfUlNBX01FVEhPRCk7Ci0rICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKHJzYS0+ZmxhZ3Mg JiBSU0FfRkxBR19OT05fRklQU19BTExPVykpIHsKLSsgICAgICAgIFJTQWVycihSU0FfRl9SU0Ff UFVCTElDX0RFQ1JZUFQsCi0rICAgICAgICAgICAgICAgUlNBX1JfT1BFUkFUSU9OX05PVF9BTExP V0VEX0lOX0ZJUFNfTU9ERSk7Ci0gICAgICAgICByZXR1cm4gLTE7Ci0gICAgIH0KLSAjZW5kaWYK LWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9yc2EvcnNhX2VheS5jLmZpcHMgb3BlbnNz bC0xLjAuMmkvY3J5cHRvL3JzYS9yc2FfZWF5LmMKLS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8v cnNhL3JzYV9lYXkuYy5maXBzCTIwMTYtMDktMjIgMTI6MjM6MDYuMDAwMDAwMDAwICswMjAwCi0r Kysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL3JzYS9yc2FfZWF5LmMJMjAxNi0wOS0yMiAxMzozNTo1 Ny4wMjIyMjExMTIgKzAyMDAKLUBAIC0xMTQsNiArMTE0LDEwIEBACi0gI2luY2x1ZGUgPG9wZW5z c2wvYm4uaD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9y YW5kLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2lmZGVmIE9QRU5TU0xfRklQUwot KyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2VuZGlmCi0gCi0gI2lmbmRlZiBSU0FfTlVM TAotIAotQEAgLTE0MCw3ICsxNDQsNyBAQCBzdGF0aWMgUlNBX01FVEhPRCByc2FfcGtjczFfZWF5 X21ldGggPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpZiBlID09IDMg Ki8KLSAgICAgUlNBX2VheV9pbml0LAotICAgICBSU0FfZWF5X2ZpbmlzaCwKLS0gICAgMCwgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIGZsYWdzICovCi0rICAgIFJTQV9GTEFHX0ZJUFNfTUVU SE9ELCAgICAgICAvKiBmbGFncyAqLwotICAgICBOVUxMLAotICAgICAwLCAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogcnNhX3NpZ24gKi8KLSAgICAgMCwgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIHJzYV92ZXJpZnkgKi8KLUBAIC0xNjAsNiArMTY0LDIyIEBAIHN0YXRpYyBpbnQgUlNB X2VheV9wdWJsaWNfZW5jcnlwdChpbnQgZmwKLSAgICAgdW5zaWduZWQgY2hhciAqYnVmID0gTlVM TDsKLSAgICAgQk5fQ1RYICpjdHggPSBOVUxMOwotIAotKyMgaWZkZWYgT1BFTlNTTF9GSVBTCi0r ICAgIGlmIChGSVBTX21vZGUoKSkgewotKyAgICAgICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVk KCkpIHsKLSsgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9SU0FfRUFZX1BVQkxJQ19FTkNSWVBU LAotKyAgICAgICAgICAgICAgICAgICAgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEKTsKLSsg ICAgICAgICAgICBnb3RvIGVycjsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGlmICghKHJzYS0+ ZmxhZ3MgJiBSU0FfRkxBR19OT05fRklQU19BTExPVykKLSsgICAgICAgICAgICAmJiAoQk5fbnVt X2JpdHMocnNhLT5uKSA8IE9QRU5TU0xfUlNBX0ZJUFNfTUlOX01PRFVMVVNfQklUUykpIHsKLSsg ICAgICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX0VBWV9QVUJMSUNfRU5DUllQVCwgUlNBX1JfS0VZ X1NJWkVfVE9PX1NNQUxMKTsKLSsgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICB9Ci0r ICAgIH0KLSsjIGVuZGlmCi0rCi0gICAgIGlmIChCTl9udW1fYml0cyhyc2EtPm4pID4gT1BFTlNT TF9SU0FfTUFYX01PRFVMVVNfQklUUykgewotICAgICAgICAgUlNBZXJyKFJTQV9GX1JTQV9FQVlf UFVCTElDX0VOQ1JZUFQsIFJTQV9SX01PRFVMVVNfVE9PX0xBUkdFKTsKLSAgICAgICAgIHJldHVy biAtMTsKLUBAIC0zNjEsNiArMzgxLDIyIEBAIHN0YXRpYyBpbnQgUlNBX2VheV9wcml2YXRlX2Vu Y3J5cHQoaW50IGYKLSAgICAgQklHTlVNICp1bmJsaW5kID0gTlVMTDsKLSAgICAgQk5fQkxJTkRJ TkcgKmJsaW5kaW5nID0gTlVMTDsKLSAKLSsjIGlmZGVmIE9QRU5TU0xfRklQUwotKyAgICBpZiAo RklQU19tb2RlKCkpIHsKLSsgICAgICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7Ci0r ICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX0VBWV9QUklWQVRFX0VOQ1JZUFQsCi0rICAg ICAgICAgICAgICAgICAgICBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOwotKyAgICAgICAg ICAgIHJldHVybiAtMTsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGlmICghKHJzYS0+ZmxhZ3Mg JiBSU0FfRkxBR19OT05fRklQU19BTExPVykKLSsgICAgICAgICAgICAmJiAoQk5fbnVtX2JpdHMo cnNhLT5uKSA8IE9QRU5TU0xfUlNBX0ZJUFNfTUlOX01PRFVMVVNfQklUUykpIHsKLSsgICAgICAg ICAgICBSU0FlcnIoUlNBX0ZfUlNBX0VBWV9QUklWQVRFX0VOQ1JZUFQsIFJTQV9SX0tFWV9TSVpF X1RPT19TTUFMTCk7Ci0rICAgICAgICAgICAgcmV0dXJuIC0xOwotKyAgICAgICAgfQotKyAgICB9 Ci0rIyBlbmRpZgotKwotICAgICBpZiAoKGN0eCA9IEJOX0NUWF9uZXcoKSkgPT0gTlVMTCkKLSAg ICAgICAgIGdvdG8gZXJyOwotICAgICBCTl9DVFhfc3RhcnQoY3R4KTsKLUBAIC00OTcsNiArNTMz LDIyIEBAIHN0YXRpYyBpbnQgUlNBX2VheV9wcml2YXRlX2RlY3J5cHQoaW50IGYKLSAgICAgQklH TlVNICp1bmJsaW5kID0gTlVMTDsKLSAgICAgQk5fQkxJTkRJTkcgKmJsaW5kaW5nID0gTlVMTDsK LSAKLSsjIGlmZGVmIE9QRU5TU0xfRklQUwotKyAgICBpZiAoRklQU19tb2RlKCkpIHsKLSsgICAg ICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7Ci0rICAgICAgICAgICAgRklQU2VycihG SVBTX0ZfUlNBX0VBWV9QUklWQVRFX0RFQ1JZUFQsCi0rICAgICAgICAgICAgICAgICAgICBGSVBT X1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOwotKyAgICAgICAgICAgIHJldHVybiAtMTsKLSsgICAg ICAgIH0KLSsKLSsgICAgICAgIGlmICghKHJzYS0+ZmxhZ3MgJiBSU0FfRkxBR19OT05fRklQU19B TExPVykKLSsgICAgICAgICAgICAmJiAoQk5fbnVtX2JpdHMocnNhLT5uKSA8IE9QRU5TU0xfUlNB X0ZJUFNfTUlOX01PRFVMVVNfQklUUykpIHsKLSsgICAgICAgICAgICBSU0FlcnIoUlNBX0ZfUlNB X0VBWV9QUklWQVRFX0RFQ1JZUFQsIFJTQV9SX0tFWV9TSVpFX1RPT19TTUFMTCk7Ci0rICAgICAg ICAgICAgcmV0dXJuIC0xOwotKyAgICAgICAgfQotKyAgICB9Ci0rIyBlbmRpZgotKwotICAgICBp ZiAoKGN0eCA9IEJOX0NUWF9uZXcoKSkgPT0gTlVMTCkKLSAgICAgICAgIGdvdG8gZXJyOwotICAg ICBCTl9DVFhfc3RhcnQoY3R4KTsKLUBAIC02MjMsNiArNjc1LDIyIEBAIHN0YXRpYyBpbnQgUlNB X2VheV9wdWJsaWNfZGVjcnlwdChpbnQgZmwKLSAgICAgdW5zaWduZWQgY2hhciAqYnVmID0gTlVM TDsKLSAgICAgQk5fQ1RYICpjdHggPSBOVUxMOwotIAotKyMgaWZkZWYgT1BFTlNTTF9GSVBTCi0r ICAgIGlmIChGSVBTX21vZGUoKSkgewotKyAgICAgICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVk KCkpIHsKLSsgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9SU0FfRUFZX1BVQkxJQ19ERUNSWVBU LAotKyAgICAgICAgICAgICAgICAgICAgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEKTsKLSsg ICAgICAgICAgICBnb3RvIGVycjsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGlmICghKHJzYS0+ ZmxhZ3MgJiBSU0FfRkxBR19OT05fRklQU19BTExPVykKLSsgICAgICAgICAgICAmJiAoQk5fbnVt X2JpdHMocnNhLT5uKSA8IE9QRU5TU0xfUlNBX0ZJUFNfTUlOX01PRFVMVVNfQklUUykpIHsKLSsg ICAgICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX0VBWV9QVUJMSUNfREVDUllQVCwgUlNBX1JfS0VZ X1NJWkVfVE9PX1NNQUxMKTsKLSsgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICB9Ci0r ICAgIH0KLSsjIGVuZGlmCi0rCi0gICAgIGlmIChCTl9udW1fYml0cyhyc2EtPm4pID4gT1BFTlNT TF9SU0FfTUFYX01PRFVMVVNfQklUUykgewotICAgICAgICAgUlNBZXJyKFJTQV9GX1JTQV9FQVlf UFVCTElDX0RFQ1JZUFQsIFJTQV9SX01PRFVMVVNfVE9PX0xBUkdFKTsKLSAgICAgICAgIHJldHVy biAtMTsKLUBAIC04ODYsNiArOTU0LDkgQEAgc3RhdGljIGludCBSU0FfZWF5X21vZF9leHAoQklH TlVNICpyMCwgYwotIAotIHN0YXRpYyBpbnQgUlNBX2VheV9pbml0KFJTQSAqcnNhKQotIHsKLSsj IGlmZGVmIE9QRU5TU0xfRklQUwotKyAgICBGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7Ci0rIyBlbmRp ZgotICAgICByc2EtPmZsYWdzIHw9IFJTQV9GTEFHX0NBQ0hFX1BVQkxJQyB8IFJTQV9GTEFHX0NB Q0hFX1BSSVZBVEU7Ci0gICAgIHJldHVybiAoMSk7Ci0gfQotZGlmZiAtdXAgb3BlbnNzbC0xLjAu MmkvY3J5cHRvL3JzYS9yc2FfZXJyLmMuZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcnNhL3Jz YV9lcnIuYwotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9yc2EvcnNhX2Vyci5jLmZpcHMJMjAx Ni0wOS0yMiAxMjoyMzowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlw dG8vcnNhL3JzYV9lcnIuYwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAyMjIyMTExMiArMDIwMAotQEAg LTEzNiw2ICsxMzYsOCBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIFJTQV9zdHJfZnVuY3RzW10K LSAgICAge0VSUl9GVU5DKFJTQV9GX1JTQV9QVUJMSUNfRU5DUllQVCksICJSU0FfcHVibGljX2Vu Y3J5cHQifSwKLSAgICAge0VSUl9GVU5DKFJTQV9GX1JTQV9QVUJfREVDT0RFKSwgIlJTQV9QVUJf REVDT0RFIn0sCi0gICAgIHtFUlJfRlVOQyhSU0FfRl9SU0FfU0VUVVBfQkxJTkRJTkcpLCAiUlNB X3NldHVwX2JsaW5kaW5nIn0sCi0rICAgIHtFUlJfRlVOQyhSU0FfRl9SU0FfU0VUX0RFRkFVTFRf TUVUSE9EKSwgIlJTQV9zZXRfZGVmYXVsdF9tZXRob2QifSwKLSsgICAge0VSUl9GVU5DKFJTQV9G X1JTQV9TRVRfTUVUSE9EKSwgIlJTQV9zZXRfbWV0aG9kIn0sCi0gICAgIHtFUlJfRlVOQyhSU0Ff Rl9SU0FfU0lHTiksICJSU0Ffc2lnbiJ9LAotICAgICB7RVJSX0ZVTkMoUlNBX0ZfUlNBX1NJR05f QVNOMV9PQ1RFVF9TVFJJTkcpLAotICAgICAgIlJTQV9zaWduX0FTTjFfT0NURVRfU1RSSU5HIn0s Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcnNhL3JzYV9nZW4uYy5maXBzIG9wZW5z c2wtMS4wLjJpL2NyeXB0by9yc2EvcnNhX2dlbi5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRv L3JzYS9yc2FfZ2VuLmMuZmlwcwkyMDE2LTA5LTIyIDEyOjIzOjA2LjAwMDAwMDAwMCArMDIwMAot KysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9yc2EvcnNhX2dlbi5jCTIwMTYtMDktMjIgMTM6MzU6 NTcuMDIyMjIxMTEyICswMjAwCi1AQCAtNjksOCArNjksODAgQEAKLSAjaW5jbHVkZSA8b3BlbnNz bC9yc2EuaD4KLSAjaWZkZWYgT1BFTlNTTF9GSVBTCi0gIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMu aD4KLS1leHRlcm4gaW50IEZJUFNfcnNhX3g5MzFfZ2VuZXJhdGVfa2V5X2V4KFJTQSAqcnNhLCBp bnQgYml0cywgQklHTlVNICplLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQk5fR0VOQ0IgKmNiKTsKLSsjIGluY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rIyBpbmNs dWRlIDxvcGVuc3NsL2V2cC5oPgotKwotK3N0YXRpYyBpbnQgZmlwc19yc2FfcGFpcndpc2VfZmFp bCA9IDA7Ci0rCi0rdm9pZCBGSVBTX2NvcnJ1cHRfcnNhX2tleWdlbih2b2lkKQotK3sKLSsgICAg Zmlwc19yc2FfcGFpcndpc2VfZmFpbCA9IDE7Ci0rfQotKwotK2ludCBmaXBzX2NoZWNrX3JzYShS U0EgKnJzYSkKLSt7Ci0rICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgdGJzW10gPSAiUlNBIFBhaXJ3 aXNlIENoZWNrIERhdGEiOwotKyAgICB1bnNpZ25lZCBjaGFyICpjdGJ1ZiA9IE5VTEwsICpwdGJ1 ZiA9IE5VTEw7Ci0rICAgIGludCBsZW4sIHJldCA9IDA7Ci0rICAgIEVWUF9QS0VZICpwazsKLSsK LSsgICAgaWYgKChwayA9IEVWUF9QS0VZX25ldygpKSA9PSBOVUxMKQotKyAgICAgICAgZ290byBl cnI7Ci0rCi0rICAgIEVWUF9QS0VZX3NldDFfUlNBKHBrLCByc2EpOwotKwotKyAgICAvKiBQZXJm b3JtIHBhaXJ3aXNlIGNvbnNpc3RlbmN5IHNpZ25hdHVyZSB0ZXN0ICovCi0rICAgIGlmICghZmlw c19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCB0YnMsIC0xLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBOVUxMLCAwLCBFVlBfc2hhMSgpLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BLQ1MxLCBOVUxMKQotKyAgICAgICAg fHwgIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywgdGJzLCAtMSwgTlVMTCwgMCwgRVZQX3No YTEoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX01EX0NUWF9G TEFHX1BBRF9YOTMxLCBOVUxMKQotKyAgICAgICAgfHwgIWZpcHNfcGtleV9zaWduYXR1cmVfdGVz dChwaywgdGJzLCAtMSwgTlVMTCwgMCwgRVZQX3NoYTEoKSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRVZQX01EX0NUWF9GTEFHX1BBRF9QU1MsIE5VTEwpKQotKyAgICAg ICAgZ290byBlcnI7Ci0rICAgIC8qIE5vdyBwZXJmb3JtIHBhaXJ3aXNlIGNvbnNpc3RlbmN5IGVu Y3J5cHQvZGVjcnlwdCB0ZXN0ICovCi0rICAgIGN0YnVmID0gT1BFTlNTTF9tYWxsb2MoUlNBX3Np emUocnNhKSk7Ci0rICAgIGlmICghY3RidWYpCi0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAg bGVuID0KLSsgICAgICAgIFJTQV9wdWJsaWNfZW5jcnlwdChzaXplb2YodGJzKSAtIDEsIHRicywg Y3RidWYsIHJzYSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBSU0FfUEtDUzFfUEFERElO Ryk7Ci0rICAgIGlmIChsZW4gPD0gMCkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICAvKiBDaGVj ayBjaXBoZXJ0ZXh0IGRvZXNuJ3QgbWF0Y2ggcGxhaW50ZXh0ICovCi0rICAgIGlmICgobGVuID09 IChzaXplb2YodGJzKSAtIDEpKSAmJiAhbWVtY21wKHRicywgY3RidWYsIGxlbikpCi0rICAgICAg ICBnb3RvIGVycjsKLSsgICAgcHRidWYgPSBPUEVOU1NMX21hbGxvYyhSU0Ffc2l6ZShyc2EpKTsK LSsKLSsgICAgaWYgKCFwdGJ1ZikKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBsZW4gPSBSU0Ff cHJpdmF0ZV9kZWNyeXB0KGxlbiwgY3RidWYsIHB0YnVmLCByc2EsIFJTQV9QS0NTMV9QQURESU5H KTsKLSsgICAgaWYgKGxlbiAhPSAoc2l6ZW9mKHRicykgLSAxKSkKLSsgICAgICAgIGdvdG8gZXJy OwotKyAgICBpZiAobWVtY21wKHB0YnVmLCB0YnMsIGxlbikpCi0rICAgICAgICBnb3RvIGVycjsK LSsKLSsgICAgcmV0ID0gMTsKLSsKLSsgICAgaWYgKCFwdGJ1ZikKLSsgICAgICAgIGdvdG8gZXJy OwotKwotKyBlcnI6Ci0rICAgIGlmIChyZXQgPT0gMCkgewotKyAgICAgICAgZmlwc19zZXRfc2Vs ZnRlc3RfZmFpbCgpOwotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19DSEVDS19SU0EsIEZJ UFNfUl9QQUlSV0lTRV9URVNUX0ZBSUxFRCk7Ci0rICAgIH0KLSsKLSsgICAgaWYgKGN0YnVmKQot KyAgICAgICAgT1BFTlNTTF9mcmVlKGN0YnVmKTsKLSsgICAgaWYgKHB0YnVmKQotKyAgICAgICAg T1BFTlNTTF9mcmVlKHB0YnVmKTsKLSsgICAgaWYgKHBrKQotKyAgICAgICAgRVZQX1BLRVlfZnJl ZShwayk7Ci0rCi0rICAgIHJldHVybiByZXQ7Ci0rfQotICNlbmRpZgotIAotIHN0YXRpYyBpbnQg cnNhX2J1aWx0aW5fa2V5Z2VuKFJTQSAqcnNhLCBpbnQgYml0cywgQklHTlVNICplX3ZhbHVlLAot QEAgLTg2LDcgKzE1OCw3IEBAIHN0YXRpYyBpbnQgcnNhX2J1aWx0aW5fa2V5Z2VuKFJTQSAqcnNh LAotIGludCBSU0FfZ2VuZXJhdGVfa2V5X2V4KFJTQSAqcnNhLCBpbnQgYml0cywgQklHTlVNICpl X3ZhbHVlLCBCTl9HRU5DQiAqY2IpCi0gewotICNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0gICAgaWYg KEZJUFNfbW9kZSgpICYmICEocnNhLT5tZXRoLT5mbGFncyAmIFJTQV9GTEFHX0ZJUFNfTUVUSE9E KQotKyAgICBpZiAoRklQU19tb2R1bGVfbW9kZSgpICYmICEocnNhLT5tZXRoLT5mbGFncyAmIFJT QV9GTEFHX0ZJUFNfTUVUSE9EKQotICAgICAgICAgJiYgIShyc2EtPmZsYWdzICYgUlNBX0ZMQUdf Tk9OX0ZJUFNfQUxMT1cpKSB7Ci0gICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX0dFTkVSQVRFX0tF WV9FWCwgUlNBX1JfTk9OX0ZJUFNfUlNBX01FVEhPRCk7Ci0gICAgICAgICByZXR1cm4gMDsKLUBA IC05NCwxMCArMTY2LDYgQEAgaW50IFJTQV9nZW5lcmF0ZV9rZXlfZXgoUlNBICpyc2EsIGludCBi aQotICNlbmRpZgotICAgICBpZiAocnNhLT5tZXRoLT5yc2Ffa2V5Z2VuKQotICAgICAgICAgcmV0 dXJuIHJzYS0+bWV0aC0+cnNhX2tleWdlbihyc2EsIGJpdHMsIGVfdmFsdWUsIGNiKTsKLS0jaWZk ZWYgT1BFTlNTTF9GSVBTCi0tICAgIGlmIChGSVBTX21vZGUoKSkKLS0gICAgICAgIHJldHVybiBG SVBTX3JzYV94OTMxX2dlbmVyYXRlX2tleV9leChyc2EsIGJpdHMsIGVfdmFsdWUsIGNiKTsKLS0j ZW5kaWYKLSAgICAgcmV0dXJuIHJzYV9idWlsdGluX2tleWdlbihyc2EsIGJpdHMsIGVfdmFsdWUs IGNiKTsKLSB9Ci0gCi1AQCAtMTEwLDYgKzE3OCwyMCBAQCBzdGF0aWMgaW50IHJzYV9idWlsdGlu X2tleWdlbihSU0EgKnJzYSwKLSAgICAgaW50IGJpdHNwLCBiaXRzcSwgb2sgPSAtMSwgbiA9IDA7 Ci0gICAgIEJOX0NUWCAqY3R4ID0gTlVMTDsKLSAKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rICAg IGlmIChGSVBTX21vZHVsZV9tb2RlKCkpIHsKLSsgICAgICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2Zh aWxlZCgpKSB7Ci0rICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX0JVSUxUSU5fS0VZR0VO LCBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOwotKyAgICAgICAgICAgIHJldHVybiAwOwot KyAgICAgICAgfQotKwotKyAgICAgICAgaWYgKGJpdHMgPCBPUEVOU1NMX1JTQV9GSVBTX01JTl9N T0RVTFVTX0JJVFMpIHsKLSsgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9SU0FfQlVJTFRJTl9L RVlHRU4sIEZJUFNfUl9LRVlfVE9PX1NIT1JUKTsKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsg ICAgICAgIH0KLSsgICAgfQotKyNlbmRpZgotKwotICAgICBjdHggPSBCTl9DVFhfbmV3KCk7Ci0g ICAgIGlmIChjdHggPT0gTlVMTCkKLSAgICAgICAgIGdvdG8gZXJyOwotQEAgLTIzNSw2ICszMTcs MTYgQEAgc3RhdGljIGludCByc2FfYnVpbHRpbl9rZXlnZW4oUlNBICpyc2EsCi0gICAgIGlmICgh Qk5fbW9kX2ludmVyc2UocnNhLT5pcW1wLCByc2EtPnEsIHAsIGN0eCkpCi0gICAgICAgICBnb3Rv IGVycjsKLSAKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rICAgIGlmIChGSVBTX21vZHVsZV9tb2Rl KCkpIHsKLSsgICAgICAgIGlmIChmaXBzX3JzYV9wYWlyd2lzZV9mYWlsKQotKyAgICAgICAgICAg IEJOX2FkZF93b3JkKHJzYS0+biwgMSk7Ci0rCi0rICAgICAgICBpZiAoIWZpcHNfY2hlY2tfcnNh KHJzYSkpCi0rICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsjZW5kaWYKLSsKLSAgICAg b2sgPSAxOwotICBlcnI6Ci0gICAgIGlmIChvayA9PSAtMSkgewotZGlmZiAtdXAgb3BlbnNzbC0x LjAuMmkvY3J5cHRvL3JzYS9yc2EuaC5maXBzIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9yc2EvcnNh LmgKLS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcnNhL3JzYS5oLmZpcHMJMjAxNi0wOS0yMiAx MzozNTo1Ni45MDYyMTg0MzkgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcnNhL3Jz YS5oCTIwMTYtMDktMjIgMTM6MzU6NTcuMDIyMjIxMTEyICswMjAwCi1AQCAtMTY4LDYgKzE2OCw4 IEBAIHN0cnVjdCByc2Ffc3QgewotICMgIGRlZmluZSBPUEVOU1NMX1JTQV9NQVhfTU9EVUxVU19C SVRTICAgMTYzODQKLSAjIGVuZGlmCi0gCi0rIyBkZWZpbmUgT1BFTlNTTF9SU0FfRklQU19NSU5f TU9EVUxVU19CSVRTIDEwMjQKLSsKLSAjIGlmbmRlZiBPUEVOU1NMX1JTQV9TTUFMTF9NT0RVTFVT X0JJVFMKLSAjICBkZWZpbmUgT1BFTlNTTF9SU0FfU01BTExfTU9EVUxVU19CSVRTIDMwNzIKLSAj IGVuZGlmCi1AQCAtMzI5LDYgKzMzMSwxMyBAQCBSU0EgKlJTQV9nZW5lcmF0ZV9rZXkoaW50IGJp dHMsIHVuc2lnbmVkCi0gCi0gLyogTmV3IHZlcnNpb24gKi8KLSBpbnQgUlNBX2dlbmVyYXRlX2tl eV9leChSU0EgKnJzYSwgaW50IGJpdHMsIEJJR05VTSAqZSwgQk5fR0VOQ0IgKmNiKTsKLStpbnQg UlNBX1g5MzFfZGVyaXZlX2V4KFJTQSAqcnNhLCBCSUdOVU0gKnAxLCBCSUdOVU0gKnAyLCBCSUdO VU0gKnExLAotKyAgICAgICAgICAgICAgICAgICAgICAgQklHTlVNICpxMiwgY29uc3QgQklHTlVN ICpYcDEsIGNvbnN0IEJJR05VTSAqWHAyLAotKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg QklHTlVNICpYcCwgY29uc3QgQklHTlVNICpYcTEsCi0rICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBCSUdOVU0gKlhxMiwgY29uc3QgQklHTlVNICpYcSwKLSsgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IEJJR05VTSAqZSwgQk5fR0VOQ0IgKmNiKTsKLStpbnQgUlNBX1g5MzFfZ2VuZXJh dGVfa2V5X2V4KFJTQSAqcnNhLCBpbnQgYml0cywgY29uc3QgQklHTlVNICplLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQk5fR0VOQ0IgKmNiKTsKLSAKLSBpbnQgUlNBX2NoZWNrX2tl eShjb25zdCBSU0EgKik7Ci0gICAgICAgICAvKiBuZXh0IDQgcmV0dXJuIC0xIG9uIGVycm9yICov Ci1AQCAtNTM4LDcgKzU0Nyw3IEBAIHZvaWQgRVJSX2xvYWRfUlNBX3N0cmluZ3Modm9pZCk7Ci0g IyBkZWZpbmUgUlNBX0ZfUlNBX0FMR09SX1RPX01EICAgICAgICAgICAgICAgICAgICAgICAgICAg IDE1NwotICMgZGVmaW5lIFJTQV9GX1JTQV9CVUlMVElOX0tFWUdFTiAgICAgICAgICAgICAgICAg ICAgICAgICAxMjkKLSAjIGRlZmluZSBSU0FfRl9SU0FfQ0hFQ0tfS0VZICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMTIzCi0tIyBkZWZpbmUgUlNBX0ZfUlNBX0NNU19ERUNSWVBUICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDE1OAotKyMgZGVmaW5lIFJTQV9GX1JTQV9DTVNfREVDUllQ VCAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTgKLSAjIGRlZmluZSBSU0FfRl9SU0FfRUFZ X1BSSVZBVEVfREVDUllQVCAgICAgICAgICAgICAgICAgICAgMTAxCi0gIyBkZWZpbmUgUlNBX0Zf UlNBX0VBWV9QUklWQVRFX0VOQ1JZUFQgICAgICAgICAgICAgICAgICAgIDEwMgotICMgZGVmaW5l IFJTQV9GX1JTQV9FQVlfUFVCTElDX0RFQ1JZUFQgICAgICAgICAgICAgICAgICAgICAxMDMKLUBA IC01NTksNyArNTY4LDcgQEAgdm9pZCBFUlJfbG9hZF9SU0Ffc3RyaW5ncyh2b2lkKTsKLSAjIGRl ZmluZSBSU0FfRl9SU0FfUEFERElOR19BRERfUEtDUzFfT0FFUCAgICAgICAgICAgICAgICAgMTIx Ci0gIyBkZWZpbmUgUlNBX0ZfUlNBX1BBRERJTkdfQUREX1BLQ1MxX09BRVBfTUdGMSAgICAgICAg ICAgIDE2MAotICMgZGVmaW5lIFJTQV9GX1JTQV9QQURESU5HX0FERF9QS0NTMV9QU1MgICAgICAg ICAgICAgICAgICAxMjUKLS0jIGRlZmluZSBSU0FfRl9SU0FfUEFERElOR19BRERfUEtDUzFfUFNT X01HRjEgICAgICAgICAgICAgMTQ4Ci0rIyBkZWZpbmUgUlNBX0ZfUlNBX1BBRERJTkdfQUREX1BL Q1MxX1BTU19NR0YxICAgICAgICAgICAgIDE1OAotICMgZGVmaW5lIFJTQV9GX1JTQV9QQURESU5H X0FERF9QS0NTMV9UWVBFXzEgICAgICAgICAgICAgICAxMDgKLSAjIGRlZmluZSBSU0FfRl9SU0Ff UEFERElOR19BRERfUEtDUzFfVFlQRV8yICAgICAgICAgICAgICAgMTA5Ci0gIyBkZWZpbmUgUlNB X0ZfUlNBX1BBRERJTkdfQUREX1NTTFYyMyAgICAgICAgICAgICAgICAgICAgIDExMAotQEAgLTU3 MywyMSArNTgyLDIzIEBAIHZvaWQgRVJSX2xvYWRfUlNBX3N0cmluZ3Modm9pZCk7Ci0gIyBkZWZp bmUgUlNBX0ZfUlNBX1BBRERJTkdfQ0hFQ0tfWDkzMSAgICAgICAgICAgICAgICAgICAgIDEyOAot ICMgZGVmaW5lIFJTQV9GX1JTQV9QUklOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAxMTUKLSAjIGRlZmluZSBSU0FfRl9SU0FfUFJJTlRfRlAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMTE2Ci0tIyBkZWZpbmUgUlNBX0ZfUlNBX1BSSVZBVEVfREVDUllQVCAgICAgICAg ICAgICAgICAgICAgICAgIDE1MAotLSMgZGVmaW5lIFJTQV9GX1JTQV9QUklWQVRFX0VOQ1JZUFQg ICAgICAgICAgICAgICAgICAgICAgICAxNTEKLSsjIGRlZmluZSBSU0FfRl9SU0FfUFJJVkFURV9E RUNSWVBUICAgICAgICAgICAgICAgICAgICAgICAgMTU3Ci0rIyBkZWZpbmUgUlNBX0ZfUlNBX1BS SVZBVEVfRU5DUllQVCAgICAgICAgICAgICAgICAgICAgICAgIDE0OAotICMgZGVmaW5lIFJTQV9G X1JTQV9QUklWX0RFQ09ERSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzcKLSAjIGRlZmlu ZSBSU0FfRl9SU0FfUFJJVl9FTkNPREUgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM4Ci0g IyBkZWZpbmUgUlNBX0ZfUlNBX1BTU19UT19DVFggICAgICAgICAgICAgICAgICAgICAgICAgICAg IDE2MgotLSMgZGVmaW5lIFJTQV9GX1JTQV9QVUJMSUNfREVDUllQVCAgICAgICAgICAgICAgICAg ICAgICAgICAxNTIKLSsjIGRlZmluZSBSU0FfRl9SU0FfUFVCTElDX0RFQ1JZUFQgICAgICAgICAg ICAgICAgICAgICAgICAgMTQ5Ci0gIyBkZWZpbmUgUlNBX0ZfUlNBX1BVQkxJQ19FTkNSWVBUICAg ICAgICAgICAgICAgICAgICAgICAgIDE1MwotICMgZGVmaW5lIFJTQV9GX1JTQV9QVUJfREVDT0RF ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzkKLSAjIGRlZmluZSBSU0FfRl9SU0FfU0VU VVBfQkxJTkRJTkcgICAgICAgICAgICAgICAgICAgICAgICAgMTM2Ci0rIyBkZWZpbmUgUlNBX0Zf UlNBX1NFVF9ERUZBVUxUX01FVEhPRCAgICAgICAgICAgICAgICAgICAgIDE1MAotKyMgZGVmaW5l IFJTQV9GX1JTQV9TRVRfTUVUSE9EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTEKLSAj IGRlZmluZSBSU0FfRl9SU0FfU0lHTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MTE3Ci0gIyBkZWZpbmUgUlNBX0ZfUlNBX1NJR05fQVNOMV9PQ1RFVF9TVFJJTkcgICAgICAgICAg ICAgICAgIDExOAotICMgZGVmaW5lIFJTQV9GX1JTQV9WRVJJRlkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAxMTkKLSAjIGRlZmluZSBSU0FfRl9SU0FfVkVSSUZZX0FTTjFfT0NURVRf U1RSSU5HICAgICAgICAgICAgICAgMTIwCi0gIyBkZWZpbmUgUlNBX0ZfUlNBX1ZFUklGWV9QS0NT MV9QU1MgICAgICAgICAgICAgICAgICAgICAgIDEyNgotLSMgZGVmaW5lIFJTQV9GX1JTQV9WRVJJ RllfUEtDUzFfUFNTX01HRjEgICAgICAgICAgICAgICAgICAxNDkKLSsjIGRlZmluZSBSU0FfRl9S U0FfVkVSSUZZX1BLQ1MxX1BTU19NR0YxICAgICAgICAgICAgICAgICAgMTUyCi0gCi0gLyogUmVh c29uIGNvZGVzLiAqLwotICMgZGVmaW5lIFJTQV9SX0FMR09SSVRITV9NSVNNQVRDSCAgICAgICAg ICAgICAgICAgICAgICAgICAxMDAKLUBAIC02MjAsMjEgKzYzMSwyMiBAQCB2b2lkIEVSUl9sb2Fk X1JTQV9zdHJpbmdzKHZvaWQpOwotICMgZGVmaW5lIFJTQV9SX0lOVkFMSURfT0FFUF9QQVJBTUVU RVJTICAgICAgICAgICAgICAgICAgICAxNjIKLSAjIGRlZmluZSBSU0FfUl9JTlZBTElEX1BBRERJ TkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM4Ci0gIyBkZWZpbmUgUlNBX1JfSU5WQUxJ RF9QQURESU5HX01PREUgICAgICAgICAgICAgICAgICAgICAgIDE0MQotLSMgZGVmaW5lIFJTQV9S X0lOVkFMSURfUFNTX1BBUkFNRVRFUlMgICAgICAgICAgICAgICAgICAgICAxNDkKLSsjIGRlZmlu ZSBSU0FfUl9JTlZBTElEX1BTU19QQVJBTUVURVJTICAgICAgICAgICAgICAgICAgICAgMTU3Ci0g IyBkZWZpbmUgUlNBX1JfSU5WQUxJRF9QU1NfU0FMVExFTiAgICAgICAgICAgICAgICAgICAgICAg IDE0NgotLSMgZGVmaW5lIFJTQV9SX0lOVkFMSURfU0FMVF9MRU5HVEggICAgICAgICAgICAgICAg ICAgICAgICAxNTAKLSsjIGRlZmluZSBSU0FfUl9JTlZBTElEX1NBTFRfTEVOR1RIICAgICAgICAg ICAgICAgICAgICAgICAgMTU4Ci0gIyBkZWZpbmUgUlNBX1JfSU5WQUxJRF9UUkFJTEVSICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDEzOQotICMgZGVmaW5lIFJTQV9SX0lOVkFMSURfWDkzMV9E SUdFU1QgICAgICAgICAgICAgICAgICAgICAgICAxNDIKLSAjIGRlZmluZSBSU0FfUl9JUU1QX05P VF9JTlZFUlNFX09GX1EgICAgICAgICAgICAgICAgICAgICAgMTI2Ci0gIyBkZWZpbmUgUlNBX1Jf S0VZX1NJWkVfVE9PX1NNQUxMICAgICAgICAgICAgICAgICAgICAgICAgIDEyMAotICMgZGVmaW5l IFJTQV9SX0xBU1RfT0NURVRfSU5WQUxJRCAgICAgICAgICAgICAgICAgICAgICAgICAxMzQKLSAj IGRlZmluZSBSU0FfUl9NT0RVTFVTX1RPT19MQVJHRSAgICAgICAgICAgICAgICAgICAgICAgICAg MTA1Ci0tIyBkZWZpbmUgUlNBX1JfTk9OX0ZJUFNfUlNBX01FVEhPRCAgICAgICAgICAgICAgICAg ICAgICAgIDE1NwotKyMgZGVmaW5lIFJTQV9SX05PTl9GSVBTX1JTQV9NRVRIT0QgICAgICAgICAg ICAgICAgICAgICAgICAxNDkKLSsjIGRlZmluZSBSU0FfUl9OT05fRklQU19NRVRIT0QgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMTQ5Ci0gIyBkZWZpbmUgUlNBX1JfTk9fUFVCTElDX0VYUE9O RU5UICAgICAgICAgICAgICAgICAgICAgICAgIDE0MAotICMgZGVmaW5lIFJTQV9SX05VTExfQkVG T1JFX0JMT0NLX01JU1NJTkcgICAgICAgICAgICAgICAgICAxMTMKLSAjIGRlZmluZSBSU0FfUl9O X0RPRVNfTk9UX0VRVUFMX1BfUSAgICAgICAgICAgICAgICAgICAgICAgMTI3Ci0gIyBkZWZpbmUg UlNBX1JfT0FFUF9ERUNPRElOR19FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgIDEyMQotLSMg ZGVmaW5lIFJTQV9SX09QRVJBVElPTl9OT1RfQUxMT1dFRF9JTl9GSVBTX01PREUgICAgICAgICAx NTgKLSsjIGRlZmluZSBSU0FfUl9PUEVSQVRJT05fTk9UX0FMTE9XRURfSU5fRklQU19NT0RFICAg ICAgICAgMTUwCi0gIyBkZWZpbmUgUlNBX1JfT1BFUkFUSU9OX05PVF9TVVBQT1JURURfRk9SX1RI SVNfS0VZVFlQRSAgIDE0OAotICMgZGVmaW5lIFJTQV9SX1BBRERJTkdfQ0hFQ0tfRkFJTEVEICAg ICAgICAgICAgICAgICAgICAgICAxMTQKLSAjIGRlZmluZSBSU0FfUl9QS0NTX0RFQ09ESU5HX0VS Uk9SICAgICAgICAgICAgICAgICAgICAgICAgMTU5Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9j cnlwdG8vcnNhL3JzYV9saWIuYy5maXBzIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9yc2EvcnNhX2xp Yi5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL3JzYS9yc2FfbGliLmMuZmlwcwkyMDE2LTA5 LTIyIDEyOjIzOjA2LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9y c2EvcnNhX2xpYi5jCTIwMTYtMDktMjIgMTM6MzU6NTcuMDIyMjIxMTEyICswMjAwCi1AQCAtODQs MjMgKzg0LDIyIEBAIFJTQSAqUlNBX25ldyh2b2lkKQotIAotIHZvaWQgUlNBX3NldF9kZWZhdWx0 X21ldGhvZChjb25zdCBSU0FfTUVUSE9EICptZXRoKQotIHsKLSsjaWZkZWYgT1BFTlNTTF9GSVBT Ci0rICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKG1ldGgtPmZsYWdzICYgUlNBX0ZMQUdfRklQU19N RVRIT0QpKSB7Ci0rICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX1NFVF9ERUZBVUxUX01FVEhPRCwg UlNBX1JfTk9OX0ZJUFNfTUVUSE9EKTsKLSsgICAgICAgIHJldHVybjsKLSsgICAgfQotKyNlbmRp ZgotICAgICBkZWZhdWx0X1JTQV9tZXRoID0gbWV0aDsKLSB9Ci0gCi0gY29uc3QgUlNBX01FVEhP RCAqUlNBX2dldF9kZWZhdWx0X21ldGhvZCh2b2lkKQotIHsKLSAgICAgaWYgKGRlZmF1bHRfUlNB X21ldGggPT0gTlVMTCkgewotLSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0gICAgICAgIGlmIChGSVBT X21vZGUoKSkKLS0gICAgICAgICAgICByZXR1cm4gRklQU19yc2FfcGtjczFfc3NsZWF5KCk7Ci0t ICAgICAgICBlbHNlCi0tICAgICAgICAgICAgcmV0dXJuIFJTQV9QS0NTMV9TU0xlYXkoKTsKLS0j ZWxzZQotLSMgaWZkZWYgUlNBX05VTEwKLSsjaWZkZWYgUlNBX05VTEwKLSAgICAgICAgIGRlZmF1 bHRfUlNBX21ldGggPSBSU0FfbnVsbF9tZXRob2QoKTsKLS0jIGVsc2UKLSsjZWxzZQotICAgICAg ICAgZGVmYXVsdF9SU0FfbWV0aCA9IFJTQV9QS0NTMV9TU0xlYXkoKTsKLS0jIGVuZGlmCi0gI2Vu ZGlmCi0gICAgIH0KLSAKLUBAIC0xMTksNiArMTE4LDEyIEBAIGludCBSU0Ffc2V0X21ldGhvZChS U0EgKnJzYSwgY29uc3QgUlNBX00KLSAgICAgICogdG8gZGVhbCB3aXRoIHdoaWNoIEVOR0lORSBp dCBjb21lcyBmcm9tLgotICAgICAgKi8KLSAgICAgY29uc3QgUlNBX01FVEhPRCAqbXRtcDsKLSsj aWZkZWYgT1BFTlNTTF9GSVBTCi0rICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKG1ldGgtPmZsYWdz ICYgUlNBX0ZMQUdfRklQU19NRVRIT0QpKSB7Ci0rICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX1NF VF9NRVRIT0QsIFJTQV9SX05PTl9GSVBTX01FVEhPRCk7Ci0rICAgICAgICByZXR1cm4gMDsKLSsg ICAgfQotKyNlbmRpZgotICAgICBtdG1wID0gcnNhLT5tZXRoOwotICAgICBpZiAobXRtcC0+Zmlu aXNoKQotICAgICAgICAgbXRtcC0+ZmluaXNoKHJzYSk7Ci1AQCAtMTY2LDYgKzE3MSwxNyBAQCBS U0EgKlJTQV9uZXdfbWV0aG9kKEVOR0lORSAqZW5naW5lKQotICAgICAgICAgfQotICAgICB9Ci0g I2VuZGlmCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKyAgICBpZiAoRklQU19tb2RlKCkgJiYgIShy ZXQtPm1ldGgtPmZsYWdzICYgUlNBX0ZMQUdfRklQU19NRVRIT0QpKSB7Ci0rICAgICAgICBSU0Fl cnIoUlNBX0ZfUlNBX05FV19NRVRIT0QsIFJTQV9SX05PTl9GSVBTX01FVEhPRCk7Ci0rIyBpZm5k ZWYgT1BFTlNTTF9OT19FTkdJTkUKLSsgICAgICAgIGlmIChyZXQtPmVuZ2luZSkKLSsgICAgICAg ICAgICBFTkdJTkVfZmluaXNoKHJldC0+ZW5naW5lKTsKLSsjIGVuZGlmCi0rICAgICAgICBPUEVO U1NMX2ZyZWUocmV0KTsKLSsgICAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rI2VuZGlmCi0g Ci0gICAgIHJldC0+cGFkID0gMDsKLSAgICAgcmV0LT52ZXJzaW9uID0gMDsKLUBAIC0xODQsNyAr MjAwLDcgQEAgUlNBICpSU0FfbmV3X21ldGhvZChFTkdJTkUgKmVuZ2luZSkKLSAgICAgcmV0LT5i bGluZGluZyA9IE5VTEw7Ci0gICAgIHJldC0+bXRfYmxpbmRpbmcgPSBOVUxMOwotICAgICByZXQt PmJpZ251bV9kYXRhID0gTlVMTDsKLS0gICAgcmV0LT5mbGFncyA9IHJldC0+bWV0aC0+ZmxhZ3Mg JiB+UlNBX0ZMQUdfTk9OX0ZJUFNfQUxMT1c7Ci0rICAgIHJldC0+ZmxhZ3MgPSByZXQtPm1ldGgt PmZsYWdzOwotICAgICBpZiAoIUNSWVBUT19uZXdfZXhfZGF0YShDUllQVE9fRVhfSU5ERVhfUlNB LCByZXQsICZyZXQtPmV4X2RhdGEpKSB7Ci0gI2lmbmRlZiBPUEVOU1NMX05PX0VOR0lORQotICAg ICAgICAgaWYgKHJldC0+ZW5naW5lKQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL3Jz YS9yc2FfcG1ldGguYy5maXBzIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9yc2EvcnNhX3BtZXRoLmMK LS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcnNhL3JzYV9wbWV0aC5jLmZpcHMJMjAxNi0wOS0y MiAxMjoyMzowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcnNh L3JzYV9wbWV0aC5jCTIwMTYtMDktMjIgMTM6MzU6NTcuMDIyMjIxMTEyICswMjAwCi1AQCAtMjI4 LDIwICsyMjgsNiBAQCBzdGF0aWMgaW50IHBrZXlfcnNhX3NpZ24oRVZQX1BLRVlfQ1RYICpjCi0g ICAgICAgICAgICAgUlNBZXJyKFJTQV9GX1BLRVlfUlNBX1NJR04sIFJTQV9SX0lOVkFMSURfRElH RVNUX0xFTkdUSCk7Ci0gICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgfQotLSNpZmRl ZiBPUEVOU1NMX0ZJUFMKLS0gICAgICAgIGlmIChyZXQgPiAwKSB7Ci0tICAgICAgICAgICAgdW5z aWduZWQgaW50IHNsZW47Ci0tICAgICAgICAgICAgcmV0ID0gRklQU19yc2Ffc2lnbl9kaWdlc3Qo cnNhLCB0YnMsIHRic2xlbiwgcmN0eC0+bWQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmN0eC0+cGFkX21vZGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmN0eC0+c2FsdGxlbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByY3R4LT5tZ2YxbWQsIHNpZywgJnNsZW4pOwotLSAgICAgICAgICAgIGlmIChy ZXQgPiAwKQotLSAgICAgICAgICAgICAgICAqc2lnbGVuID0gc2xlbjsKLS0gICAgICAgICAgICBl bHNlCi0tICAgICAgICAgICAgICAgICpzaWdsZW4gPSAwOwotLSAgICAgICAgICAgIHJldHVybiBy ZXQ7Ci0tICAgICAgICB9Ci0tI2VuZGlmCi0gCi0gICAgICAgICBpZiAoRVZQX01EX3R5cGUocmN0 eC0+bWQpID09IE5JRF9tZGMyKSB7Ci0gICAgICAgICAgICAgdW5zaWduZWQgaW50IHNsdG1wOwot QEAgLTM1OSwxNyArMzQ1LDYgQEAgc3RhdGljIGludCBwa2V5X3JzYV92ZXJpZnkoRVZQX1BLRVlf Q1RYCi0gICAgIH0KLSAjZW5kaWYKLSAgICAgaWYgKHJjdHgtPm1kKSB7Ci0tI2lmZGVmIE9QRU5T U0xfRklQUwotLSAgICAgICAgaWYgKHJ2ID4gMCkgewotLSAgICAgICAgICAgIHJldHVybiBGSVBT X3JzYV92ZXJpZnlfZGlnZXN0KHJzYSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0YnMsIHRic2xlbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByY3R4LT5tZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByY3R4LT5wYWRfbW9kZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByY3R4LT5zYWx0bGVuLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJjdHgtPm1nZjFtZCwgc2lnLCBzaWdsZW4pOwotLQotLSAgICAgICAgfQot LSNlbmRpZgotICAgICAgICAgaWYgKHJjdHgtPnBhZF9tb2RlID09IFJTQV9QS0NTMV9QQURESU5H KQotICAgICAgICAgICAgIHJldHVybiBSU0FfdmVyaWZ5KEVWUF9NRF90eXBlKHJjdHgtPm1kKSwg dGJzLCB0YnNsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnLCBzaWdsZW4s IHJzYSk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcnNhL3JzYV9zaWduLmMuZmlw cyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcnNhL3JzYV9zaWduLmMKLS0tLSBvcGVuc3NsLTEuMC4y aS9jcnlwdG8vcnNhL3JzYV9zaWduLmMuZmlwcwkyMDE2LTA5LTIyIDEyOjIzOjA2LjAwMDAwMDAw MCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9yc2EvcnNhX3NpZ24uYwkyMDE2LTA5 LTIyIDEzOjM1OjU3LjAyMzIyMTEzNSArMDIwMAotQEAgLTEzMiw3ICsxMzIsMTAgQEAgaW50IFJT QV9zaWduKGludCB0eXBlLCBjb25zdCB1bnNpZ25lZCBjaAotICAgICAgICAgaTJkX1g1MDlfU0lH KCZzaWcsICZwKTsKLSAgICAgICAgIHMgPSB0bXBzOwotICAgICB9Ci0tICAgIGkgPSBSU0FfcHJp dmF0ZV9lbmNyeXB0KGksIHMsIHNpZ3JldCwgcnNhLCBSU0FfUEtDUzFfUEFERElORyk7Ci0rICAg IC8qIE5COiBjYWxsIHVuZGVybHlpbmcgbWV0aG9kIGRpcmVjdGx5IHRvIGF2b2lkIEZJUFMgYmxv Y2tpbmcgKi8KLSsgICAgaSA9IHJzYS0+bWV0aC0+cnNhX3ByaXZfZW5jID8gcnNhLT5tZXRoLT5y c2FfcHJpdl9lbmMoaSwgcywgc2lncmV0LCByc2EsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJTQV9QS0NTMV9QQURESU5HKSA6Ci0r ICAgICAgICAwOwotICAgICBpZiAoaSA8PSAwKQotICAgICAgICAgcmV0ID0gMDsKLSAgICAgZWxz ZQotQEAgLTE4OCw4ICsxOTEsMTAgQEAgaW50IGludF9yc2FfdmVyaWZ5KGludCBkdHlwZSwgY29u c3QgdW5zaQotICAgICB9Ci0gCi0gICAgIGlmICgoZHR5cGUgPT0gTklEX21kNV9zaGExKSAmJiBy bSkgewotLSAgICAgICAgaSA9IFJTQV9wdWJsaWNfZGVjcnlwdCgoaW50KXNpZ2xlbiwKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnYnVmLCBybSwgcnNhLCBSU0FfUEtDUzFfUEFE RElORyk7Ci0rICAgICAgICBpID0gcnNhLT5tZXRoLT5yc2FfcHViX2RlYyA/IHJzYS0+bWV0aC0+ cnNhX3B1Yl9kZWMoKGludClzaWdsZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnYnVmLCBybSwgcnNhLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJTQV9Q S0NTMV9QQURESU5HKQotKyAgICAgICAgICAgIDogMDsKLSAgICAgICAgIGlmIChpIDw9IDApCi0g ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAqcHJtX2xlbiA9IGk7Ci1AQCAtMjA1LDcg KzIxMCwxMSBAQCBpbnQgaW50X3JzYV92ZXJpZnkoaW50IGR0eXBlLCBjb25zdCB1bnNpCi0gICAg ICAgICBSU0FlcnIoUlNBX0ZfSU5UX1JTQV9WRVJJRlksIFJTQV9SX0lOVkFMSURfTUVTU0FHRV9M RU5HVEgpOwotICAgICAgICAgZ290byBlcnI7Ci0gICAgIH0KLS0gICAgaSA9IFJTQV9wdWJsaWNf ZGVjcnlwdCgoaW50KXNpZ2xlbiwgc2lnYnVmLCBzLCByc2EsIFJTQV9QS0NTMV9QQURESU5HKTsK LSsgICAgLyogTkI6IGNhbGwgdW5kZXJseWluZyBtZXRob2QgZGlyZWN0bHkgdG8gYXZvaWQgRklQ UyBibG9ja2luZyAqLwotKyAgICBpID0gcnNhLT5tZXRoLT5yc2FfcHViX2RlYyA/IHJzYS0+bWV0 aC0+cnNhX3B1Yl9kZWMoKGludClzaWdsZW4sIHNpZ2J1ZiwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIHJzYSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJTQV9QS0NTMV9Q QURESU5HKSA6Ci0rICAgICAgICAwOwotIAotICAgICBpZiAoaSA8PSAwKQotICAgICAgICAgZ290 byBlcnI7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vc2hhL3NoYS5oLmZpcHMgb3Bl bnNzbC0xLjAuMmkvY3J5cHRvL3NoYS9zaGEuaAotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9z aGEvc2hhLmguZmlwcwkyMDE2LTA5LTIyIDEzOjM1OjU2LjY5OTIxMzY2NyArMDIwMAotKysrIG9w ZW5zc2wtMS4wLjJpL2NyeXB0by9zaGEvc2hhLmgJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMjMyMjEx MzUgKzAyMDAKLUBAIC0xMDUsOSArMTA1LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgU0hBc3RhdGVfc3Qg ewotIH0gU0hBX0NUWDsKLSAKLSAjIGlmbmRlZiBPUEVOU1NMX05PX1NIQTAKLS0jICBpZmRlZiBP UEVOU1NMX0ZJUFMKLS1pbnQgcHJpdmF0ZV9TSEFfSW5pdChTSEFfQ1RYICpjKTsKLS0jICBlbmRp ZgotIGludCBTSEFfSW5pdChTSEFfQ1RYICpjKTsKLSBpbnQgU0hBX1VwZGF0ZShTSEFfQ1RYICpj LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsKLSBpbnQgU0hBX0ZpbmFsKHVuc2lnbmVk IGNoYXIgKm1kLCBTSEFfQ1RYICpjKTsKLUBAIC0xMTUsOSArMTEyLDYgQEAgdW5zaWduZWQgY2hh ciAqU0hBKGNvbnN0IHVuc2lnbmVkIGNoYXIgKgotIHZvaWQgU0hBX1RyYW5zZm9ybShTSEFfQ1RY ICpjLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhKTsKLSAjIGVuZGlmCi0gIyBpZm5kZWYgT1BF TlNTTF9OT19TSEExCi0tIyAgaWZkZWYgT1BFTlNTTF9GSVBTCi0taW50IHByaXZhdGVfU0hBMV9J bml0KFNIQV9DVFggKmMpOwotLSMgIGVuZGlmCi0gaW50IFNIQTFfSW5pdChTSEFfQ1RYICpjKTsK LSBpbnQgU0hBMV9VcGRhdGUoU0hBX0NUWCAqYywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxl bik7Ci0gaW50IFNIQTFfRmluYWwodW5zaWduZWQgY2hhciAqbWQsIFNIQV9DVFggKmMpOwotQEAg LTEzOSwxMCArMTMzLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgU0hBMjU2c3RhdGVfc3QgewotIH0gU0hB MjU2X0NUWDsKLSAKLSAjIGlmbmRlZiBPUEVOU1NMX05PX1NIQTI1NgotLSMgIGlmZGVmIE9QRU5T U0xfRklQUwotLWludCBwcml2YXRlX1NIQTIyNF9Jbml0KFNIQTI1Nl9DVFggKmMpOwotLWludCBw cml2YXRlX1NIQTI1Nl9Jbml0KFNIQTI1Nl9DVFggKmMpOwotLSMgIGVuZGlmCi0gaW50IFNIQTIy NF9Jbml0KFNIQTI1Nl9DVFggKmMpOwotIGludCBTSEEyMjRfVXBkYXRlKFNIQTI1Nl9DVFggKmMs IGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pOwotIGludCBTSEEyMjRfRmluYWwodW5zaWdu ZWQgY2hhciAqbWQsIFNIQTI1Nl9DVFggKmMpOwotQEAgLTE5MiwxMCArMTgyLDYgQEAgdHlwZWRl ZiBzdHJ1Y3QgU0hBNTEyc3RhdGVfc3QgewotICMgZW5kaWYKLSAKLSAjIGlmbmRlZiBPUEVOU1NM X05PX1NIQTUxMgotLSMgIGlmZGVmIE9QRU5TU0xfRklQUwotLWludCBwcml2YXRlX1NIQTM4NF9J bml0KFNIQTUxMl9DVFggKmMpOwotLWludCBwcml2YXRlX1NIQTUxMl9Jbml0KFNIQTUxMl9DVFgg KmMpOwotLSMgIGVuZGlmCi0gaW50IFNIQTM4NF9Jbml0KFNIQTUxMl9DVFggKmMpOwotIGludCBT SEEzODRfVXBkYXRlKFNIQTUxMl9DVFggKmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4p OwotIGludCBTSEEzODRfRmluYWwodW5zaWduZWQgY2hhciAqbWQsIFNIQTUxMl9DVFggKmMpOwot ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL3NoYS9zaGFfbG9jbC5oLmZpcHMgb3BlbnNz bC0xLjAuMmkvY3J5cHRvL3NoYS9zaGFfbG9jbC5oCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRv L3NoYS9zaGFfbG9jbC5oLmZpcHMJMjAxNi0wOS0yMiAxMzozNTo1Ni43MDIyMTM3MzcgKzAyMDAK LSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vc2hhL3NoYV9sb2NsLmgJMjAxNi0wOS0yMiAxMzoz NTo1Ny4wMjMyMjExMzUgKzAyMDAKLUBAIC0xMjMsMTEgKzEyMywxNCBAQCB2b2lkIHNoYTFfYmxv Y2tfZGF0YV9vcmRlcihTSEFfQ1RYICpjLCBjCi0gI2RlZmluZSBJTklUX0RBVEFfaDQgMHhjM2Qy ZTFmMFVMCi0gCi0gI2lmZGVmIFNIQV8wCi0tZmlwc19tZF9pbml0KFNIQSkKLStub25maXBzX21k X2luaXQoU0hBKQotICNlbHNlCi0gZmlwc19tZF9pbml0X2N0eChTSEExLCBTSEEpCi0gI2VuZGlm Ci0gewotKyNpZiBkZWZpbmVkKFNIQV8xKSAmJiBkZWZpbmVkKE9QRU5TU0xfRklQUykKLSsgICAg RklQU19zZWxmdGVzdF9jaGVjaygpOwotKyNlbmRpZgotICAgICBtZW1zZXQoYywgMCwgc2l6ZW9m KCpjKSk7Ci0gICAgIGMtPmgwID0gSU5JVF9EQVRBX2gwOwotICAgICBjLT5oMSA9IElOSVRfREFU QV9oMTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9zaGEvc2hhMjU2LmMuZmlwcyBv cGVuc3NsLTEuMC4yaS9jcnlwdG8vc2hhL3NoYTI1Ni5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5 cHRvL3NoYS9zaGEyNTYuYy5maXBzCTIwMTYtMDktMjIgMTI6MjM6MDYuMDAwMDAwMDAwICswMjAw Ci0rKysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL3NoYS9zaGEyNTYuYwkyMDE2LTA5LTIyIDEzOjM1 OjU3LjAyMzIyMTEzNSArMDIwMAotQEAgLTEyLDEyICsxMiwxOSBAQAotIAotICMgaW5jbHVkZSA8 b3BlbnNzbC9jcnlwdG8uaD4KLSAjIGluY2x1ZGUgPG9wZW5zc2wvc2hhLmg+Ci0rIyBpZmRlZiBP UEVOU1NMX0ZJUFMKLSsjICBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjIGVuZGlmCi0rCi0g IyBpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2x2Lmg+Ci0gCi0gY29uc3QgY2hhciBTSEEyNTZfdmVy c2lvbltdID0gIlNIQS0yNTYiIE9QRU5TU0xfVkVSU0lPTl9QVEVYVDsKLSAKLSBmaXBzX21kX2lu aXRfY3R4KFNIQTIyNCwgU0hBMjU2KQotIHsKLSsjIGlmZGVmIE9QRU5TU0xfRklQUwotKyAgICBG SVBTX3NlbGZ0ZXN0X2NoZWNrKCk7Ci0rIyBlbmRpZgotICAgICBtZW1zZXQoYywgMCwgc2l6ZW9m KCpjKSk7Ci0gICAgIGMtPmhbMF0gPSAweGMxMDU5ZWQ4VUw7Ci0gICAgIGMtPmhbMV0gPSAweDM2 N2NkNTA3VUw7Ci1AQCAtMzMsNiArNDAsOSBAQCBmaXBzX21kX2luaXRfY3R4KFNIQTIyNCwgU0hB MjU2KQotIAotIGZpcHNfbWRfaW5pdChTSEEyNTYpCi0gewotKyMgaWZkZWYgT1BFTlNTTF9GSVBT Ci0rICAgIEZJUFNfc2VsZnRlc3RfY2hlY2soKTsKLSsjIGVuZGlmCi0gICAgIG1lbXNldChjLCAw LCBzaXplb2YoKmMpKTsKLSAgICAgYy0+aFswXSA9IDB4NmEwOWU2NjdVTDsKLSAgICAgYy0+aFsx XSA9IDB4YmI2N2FlODVVTDsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9zaGEvc2hh NTEyLmMuZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vc2hhL3NoYTUxMi5jCi0tLS0gb3BlbnNz bC0xLjAuMmkvY3J5cHRvL3NoYS9zaGE1MTIuYy5maXBzCTIwMTYtMDktMjIgMTI6MjM6MDYuMDAw MDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL3NoYS9zaGE1MTIuYwkyMDE2 LTA5LTIyIDEzOjM1OjU3LjAyMzIyMTEzNSArMDIwMAotQEAgLTUsNiArNSwxMCBAQAotICAqID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0gICovCi0gI2luY2x1ZGUgPG9wZW5zc2wvb3BlbnNzbGNvbmYuaD4KLSsjaWZk ZWYgT1BFTlNTTF9GSVBTCi0rIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjZW5kaWYKLSsK LSAjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19TSEEpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0hB NTEyKQotIC8qLQotICAqIElNUExFTUVOVEFUSU9OIE5PVEVTLgotQEAgLTYyLDYgKzY2LDkgQEAg Y29uc3QgY2hhciBTSEE1MTJfdmVyc2lvbltdID0gIlNIQS01MTIiCi0gCi0gZmlwc19tZF9pbml0 X2N0eChTSEEzODQsIFNIQTUxMikKLSB7Ci0rIyBpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgRklQ U19zZWxmdGVzdF9jaGVjaygpOwotKyMgZW5kaWYKLSAgICAgYy0+aFswXSA9IFU2NCgweGNiYmI5 ZDVkYzEwNTllZDgpOwotICAgICBjLT5oWzFdID0gVTY0KDB4NjI5YTI5MmEzNjdjZDUwNyk7Ci0g ICAgIGMtPmhbMl0gPSBVNjQoMHg5MTU5MDE1YTMwNzBkZDE3KTsKLUBAIC04MCw2ICs4Nyw5IEBA IGZpcHNfbWRfaW5pdF9jdHgoU0hBMzg0LCBTSEE1MTIpCi0gCi0gZmlwc19tZF9pbml0KFNIQTUx MikKLSB7Ci0rIyBpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgRklQU19zZWxmdGVzdF9jaGVjaygp OwotKyMgZW5kaWYKLSAgICAgYy0+aFswXSA9IFU2NCgweDZhMDllNjY3ZjNiY2M5MDgpOwotICAg ICBjLT5oWzFdID0gVTY0KDB4YmI2N2FlODU4NGNhYTczYik7Ci0gICAgIGMtPmhbMl0gPSBVNjQo MHgzYzZlZjM3MmZlOTRmODJiKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by93aHJs cG9vbC93cF9kZ3N0LmMuZmlwcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vd2hybHBvb2wvd3BfZGdz dC5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL3docmxwb29sL3dwX2Rnc3QuYy5maXBzCTIw MTYtMDktMjIgMTI6MjM6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvY3J5 cHRvL3docmxwb29sL3dwX2Rnc3QuYwkyMDE2LTA5LTIyIDEzOjM1OjU3LjAyMzIyMTEzNSArMDIw MAotQEAgLTU2LDcgKzU2LDcgQEAKLSAjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KLSAjaW5j bHVkZSA8c3RyaW5nLmg+Ci0gCi0tZmlwc19tZF9pbml0KFdISVJMUE9PTCkKLStub25maXBzX21k X2luaXQoV0hJUkxQT09MKQotIHsKLSAgICAgbWVtc2V0KGMsIDAsIHNpemVvZigqYykpOwotICAg ICByZXR1cm4gKDEpOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvTWFrZWZpbGUub3JnLmZpcHMg b3BlbnNzbC0xLjAuMmkvTWFrZWZpbGUub3JnCi0tLS0gb3BlbnNzbC0xLjAuMmkvTWFrZWZpbGUu b3JnLmZpcHMJMjAxNi0wOS0yMiAxMzozNTo1Ni45OTYyMjA1MTMgKzAyMDAKLSsrKyBvcGVuc3Ns LTEuMC4yaS9NYWtlZmlsZS5vcmcJMjAxNi0wOS0yMiAxMzozNTo1Ny4wMjMyMjExMzUgKzAyMDAK LUBAIC0xMzgsNiArMTM4LDkgQEAgRklQU0NBTkxJQj0KLSAKLSBCQVNFQUREUj0KLSAKLSsjIE5v bi1lbXB0eSBpZiBGSVBTIGVuYWJsZWQKLStGSVBTPQotKwotIERJUlM9ICAgY3J5cHRvIHNzbCBl bmdpbmVzIGFwcHMgdGVzdCB0b29scwotIEVOR0RJUlM9IGNjZ29zdAotIFNITElCRElSUz0gY3J5 cHRvIHNzbAotQEAgLTE1MCw3ICsxNTMsNyBAQCBTRElSUz0gIFwKLSAJYm4gZWMgcnNhIGRzYSBl Y2RzYSBkaCBlY2RoIGRzbyBlbmdpbmUgXAotIAlidWZmZXIgYmlvIHN0YWNrIGxoYXNoIHJhbmQg ZXJyIFwKLSAJZXZwIGFzbjEgcGVtIHg1MDkgeDUwOXYzIGNvbmYgdHh0X2RiIHBrY3M3IHBrY3Mx MiBjb21wIG9jc3AgdWkga3JiNSBcCi0tCWNtcyBwcXVldWUgdHMganBha2Ugc3JwIHN0b3JlIGNt YWMKLSsJY21zIHBxdWV1ZSB0cyBqcGFrZSBzcnAgc3RvcmUgY21hYyBmaXBzCi0gIyBrZWVwIGlu IG1pbmQgdGhhdCB0aGUgYWJvdmUgbGlzdCBpcyBhZGp1c3RlZCBieSAuL0NvbmZpZ3VyZQotICMg YWNjb3JkaW5nIHRvIG5vLXh4eCBhcmd1bWVudHMuLi4KLSAKLUBAIC0yNDEsNiArMjQ0LDcgQEAg QlVJTERFTlY9CUxDX0FMTD1DIFBMQVRGT1JNPSckKFBMQVRGT1JNKQotIAkJRklQU0xJQkRJUj0n JHtGSVBTTElCRElSfScJCQlcCi0gCQlGSVBTRElSPScke0ZJUFNESVJ9JwkJCQlcCi0gCQlGSVBT Q0FOTElCPSIkJHtGSVBTQ0FOTElCOi0kKEZJUFNDQU5MSUIpfSIJXAotKwkJRklQUz0iJCR7RklQ UzotJChGSVBTKX0iCVwKLSAJCVRISVM9JCR7VEhJUzotJEB9IE1BS0VGSUxFPU1ha2VmaWxlIE1B S0VPVkVSUklERVM9Ci0gIyBNQUtFT1ZFUlJJREVTPSBlZmZlY3RpdmVseSAiZXF1YWxpemVzIiBH TlUtaXNoIGFuZCBTeXNWLWlzaCBtYWtlIGZsYXZvcnMsCi0gIyB3aGljaCBpbiB0dXJuIGVsaW1p bmF0ZXMgYW1iaWd1aXRpZXMgaW4gdmFyaWFibGUgdHJlYXRtZW50IHdpdGggLWUuCi1kaWZmIC11 cCBvcGVuc3NsLTEuMC4yaS9zc2wvc3NsX2FsZ3MuYy5maXBzIG9wZW5zc2wtMS4wLjJpL3NzbC9z c2xfYWxncy5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvc3NsL3NzbF9hbGdzLmMuZmlwcwkyMDE2LTA5 LTIyIDEyOjIzOjA2LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL3NzbC9zc2xf YWxncy5jCTIwMTYtMDktMjIgMTM6MzU6NTcuMDI0MjIxMTU4ICswMjAwCi1AQCAtNjQsNiArNjQs MTEgQEAKLSBpbnQgU1NMX2xpYnJhcnlfaW5pdCh2b2lkKQotIHsKLSAKLSsjaWZkZWYgT1BFTlNT TF9GSVBTCi0rICAgIE9QRU5TU0xfaW5pdF9saWJyYXJ5KCk7Ci0rICAgIGlmICghRklQU19tb2Rl KCkpIHsKLSsjZW5kaWYKLSsKLSAjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gICAgIEVWUF9hZGRf Y2lwaGVyKEVWUF9kZXNfY2JjKCkpOwotICAgICBFVlBfYWRkX2NpcGhlcihFVlBfZGVzX2VkZTNf Y2JjKCkpOwotQEAgLTE0Miw2ICsxNDcsNDggQEAgaW50IFNTTF9saWJyYXJ5X2luaXQodm9pZCkK LSAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYSgpKTsKLSAgICAgRVZQX2FkZF9kaWdlc3QoRVZQ X2RzcygpKTsKLSAjZW5kaWYKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rICAgIH0gZWxzZSB7Ci0r IyBpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9kZXNf ZWRlM19jYmMoKSk7Ci0rIyBlbmRpZgotKyMgaWZuZGVmIE9QRU5TU0xfTk9fQUVTCi0rICAgICAg ICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF9jYmMoKSk7Ci0rICAgICAgICBFVlBfYWRkX2Np cGhlcihFVlBfYWVzXzE5Ml9jYmMoKSk7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVz XzI1Nl9jYmMoKSk7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF9nY20oKSk7 Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9nY20oKSk7Ci0rIyBlbmRpZgot KyMgaWZuZGVmIE9QRU5TU0xfTk9fTUQ1Ci0rICAgICAgICAvKiBuZWVkZWQgZXZlbiBpbiB0aGUg RklQUyBtb2RlIGZvciBUTFMgTUFDICovCi0rICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfbWQ1 KCkpOwotKyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fbWQ1LCAic3NsMi1tZDUiKTsK LSsgICAgICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX21kNSwgInNzbDMtbWQ1Iik7Ci0rIyBl bmRpZgotKyMgaWZuZGVmIE9QRU5TU0xfTk9fU0hBCi0rICAgICAgICBFVlBfYWRkX2RpZ2VzdChF VlBfc2hhMSgpKTsgLyogUlNBIHdpdGggc2hhMSAqLwotKyAgICAgICAgRVZQX2FkZF9kaWdlc3Rf YWxpYXMoU05fc2hhMSwgInNzbDMtc2hhMSIpOwotKyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxp YXMoU05fc2hhMVdpdGhSU0FFbmNyeXB0aW9uLCBTTl9zaGExV2l0aFJTQSk7Ci0rIyBlbmRpZgot KyMgaWZuZGVmIE9QRU5TU0xfTk9fU0hBMjU2Ci0rICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBf c2hhMjI0KCkpOwotKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTI1NigpKTsKLSsjIGVu ZGlmCi0rIyBpZm5kZWYgT1BFTlNTTF9OT19TSEE1MTIKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0 KEVWUF9zaGEzODQoKSk7Ci0rICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhNTEyKCkpOwot KyMgZW5kaWYKLSsjIGlmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0hBKSAmJiAhZGVmaW5lZChPUEVO U1NMX05PX0RTQSkKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9kc3MxKCkpOyAvKiBEU0Eg d2l0aCBzaGExICovCi0rICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9kc2FXaXRoU0hB MSwgU05fZHNhV2l0aFNIQTFfMik7Ci0rICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9k c2FXaXRoU0hBMSwgIkRTUzEiKTsKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX2Rz YVdpdGhTSEExLCAiZHNzMSIpOwotKyMgZW5kaWYKLSsjIGlmbmRlZiBPUEVOU1NMX05PX0VDRFNB Ci0rICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfZWNkc2EoKSk7Ci0rIyBlbmRpZgotKyAgICB9 Ci0rI2VuZGlmCi0gI2lmbmRlZiBPUEVOU1NMX05PX0NPTVAKLSAgICAgLyoKLSAgICAgICogVGhp cyB3aWxsIGluaXRpYWxpc2UgdGhlIGJ1aWx0LWluIGNvbXByZXNzaW9uIGFsZ29yaXRobXMuIFRo ZSB2YWx1ZQoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJpLW5ldy1maXBzLXJlcXMucGF0Y2gg Yi9vcGVuc3NsLTEuMC4yaS1uZXctZmlwcy1yZXFzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBlNWQxZTgwLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjJpLW5ldy1maXBz LXJlcXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzY1ICswLDAgQEAKLWRpZmYgLXVwIG9w ZW5zc2wtMS4wLjJpL2NyeXB0by9ibi9ibl9yYW5kLmMuZmlwcy1yZXFzIG9wZW5zc2wtMS4wLjJp L2NyeXB0by9ibi9ibl9yYW5kLmMKLS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vYm4vYm5fcmFu ZC5jLmZpcHMtcmVxcwkyMDE2LTA5LTIyIDEzOjU0OjI2LjUzMzg0ODQ0OSArMDIwMAotKysrIG9w ZW5zc2wtMS4wLjJpL2NyeXB0by9ibi9ibl9yYW5kLmMJMjAxNi0wOS0yMiAxMzo1Njo1Mi4xNjky MzMwNjAgKzAyMDAKLUBAIC0xNDEsOCArMTQxLDExIEBAIHN0YXRpYyBpbnQgYm5yYW5kKGludCBw c2V1ZG9yYW5kLCBCSUdOVU0KLSAgICAgfQotIAotICAgICAvKiBtYWtlIGEgcmFuZG9tIG51bWJl ciBhbmQgc2V0IHRoZSB0b3AgYW5kIGJvdHRvbSBiaXRzICovCi0tICAgIHRpbWUoJnRpbSk7Ci0t ICAgIFJBTkRfYWRkKCZ0aW0sIHNpemVvZih0aW0pLCAwLjApOwotKyAgICBpZiAoIUZJUFNfbW9k ZSgpKSB7ICAgICAgICAgCi0rICAgICAgICAvKiBpbiBGSVBTIG1vZGUgdGhlIFJORyBpcyBhbHdh eXMgcHJvcGVybHkgc2VlZGVkIG9yIHRoZSBtb2R1bGUgZmFpbHMgKi8KLSsgICAgICAgIHRpbWUo JnRpbSk7Ci0rICAgICAgICBSQU5EX2FkZCgmdGltLCBzaXplb2YodGltKSwgMC4wKTsKLSsgICAg fQotIAotICAgICAvKiBXZSBpZ25vcmUgdGhlIHZhbHVlIG9mIHBzZXVkb3JhbmQgYW5kIGFsd2F5 cyBjYWxsIFJBTkRfYnl0ZXMgKi8KLSAgICAgaWYgKFJBTkRfYnl0ZXMoYnVmLCBieXRlcykgPD0g MCkKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kaC9kaF9nZW4uYy5maXBzLXJlcXMg b3BlbnNzbC0xLjAuMmkvY3J5cHRvL2RoL2RoX2dlbi5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5 cHRvL2RoL2RoX2dlbi5jLmZpcHMtcmVxcwkyMDE2LTA5LTIyIDEzOjU0OjI2LjQ4OTg0NzQyNiAr MDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kaC9kaF9nZW4uYwkyMDE2LTA5LTIyIDEz OjU0OjI2LjUzMzg0ODQ0OSArMDIwMAotQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgaW50IGRo X2J1aWx0aW5fZ2VucGFyYW1zKERIICpyZXQsCi0gICAgICAgICByZXR1cm4gMDsKLSAgICAgfQot IAotLSAgICBpZiAoRklQU19tb2RlKCkgJiYgKHByaW1lX2xlbiA8IE9QRU5TU0xfREhfRklQU19N SU5fTU9EVUxVU19CSVRTKSkgewotKyAgICBpZiAoRklQU19tb2RlKCkgJiYgKHByaW1lX2xlbiA8 IE9QRU5TU0xfREhfRklQU19NSU5fTU9EVUxVU19CSVRTX0dFTikpIHsKLSAgICAgICAgIERIZXJy KERIX0ZfREhfQlVJTFRJTl9HRU5QQVJBTVMsIERIX1JfS0VZX1NJWkVfVE9PX1NNQUxMKTsKLSAg ICAgICAgIGdvdG8gZXJyOwotICAgICB9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8v ZGgvZGguaC5maXBzLXJlcXMgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2RoL2RoLmgKLS0tLSBvcGVu c3NsLTEuMC4yaS9jcnlwdG8vZGgvZGguaC5maXBzLXJlcXMJMjAxNi0wOS0yMiAxMzo1NDoyNi40 ODk4NDc0MjYgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZGgvZGguaAkyMDE2LTA5 LTIyIDEzOjU0OjI2LjUzNDg0ODQ3MiArMDIwMAotQEAgLTc4LDYgKzc4LDcgQEAKLSAjIGVuZGlm Ci0gCi0gIyBkZWZpbmUgT1BFTlNTTF9ESF9GSVBTX01JTl9NT0RVTFVTX0JJVFMgMTAyNAotKyMg ZGVmaW5lIE9QRU5TU0xfREhfRklQU19NSU5fTU9EVUxVU19CSVRTX0dFTiAyMDQ4Ci0gCi0gIyBk ZWZpbmUgREhfRkxBR19DQUNIRV9NT05UX1AgICAgIDB4MDEKLSAKLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjJpL2NyeXB0by9kc2EvZHNhX2dlbi5jLmZpcHMtcmVxcyBvcGVuc3NsLTEuMC4yaS9jcnlw dG8vZHNhL2RzYV9nZW4uYwotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kc2EvZHNhX2dlbi5j LmZpcHMtcmVxcwkyMDE2LTA5LTIyIDEzOjU0OjI2LjQ5MDg0NzQ1MCArMDIwMAotKysrIG9wZW5z c2wtMS4wLjJpL2NyeXB0by9kc2EvZHNhX2dlbi5jCTIwMTYtMDktMjIgMTM6NTQ6MjYuNTM0ODQ4 NDcyICswMjAwCi1AQCAtMTU3LDkgKzE1NywxMSBAQCBpbnQgZHNhX2J1aWx0aW5fcGFyYW1nZW4o RFNBICpyZXQsIHNpemVfCi0gICAgIH0KLSAKLSAgICAgaWYgKEZJUFNfbW9kdWxlX21vZGUoKSAm JgotLSAgICAgICAgKGJpdHMgIT0gMTAyNCB8fCBxYml0cyAhPSAxNjApICYmCi0tICAgICAgICAo Yml0cyAhPSAyMDQ4IHx8IHFiaXRzICE9IDIyNCkgJiYKLS0gICAgICAgIChiaXRzICE9IDIwNDgg fHwgcWJpdHMgIT0gMjU2KSAmJiAoYml0cyAhPSAzMDcyIHx8IHFiaXRzICE9IDI1NikpIHsKLSsg ICAgICAgIChnZXRlbnYoIk9QRU5TU0xfRU5GT1JDRV9NT0RVTFVTX0JJVFMiKSB8fCBiaXRzICE9 IDEwMjQKLSsgICAgICAgICB8fCBxYml0cyAhPSAxNjApICYmIChiaXRzICE9IDIwNDggfHwgcWJp dHMgIT0gMjI0KSAmJiAoYml0cyAhPSAyMDQ4Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHFiaXRzICE9Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDI1NikKLSsgICAgICAgICYmIChiaXRzICE9IDMwNzIgfHwgcWJpdHMgIT0gMjU2KSkgewotICAg ICAgICAgRFNBZXJyKERTQV9GX0RTQV9CVUlMVElOX1BBUkFNR0VOLCBEU0FfUl9LRVlfU0laRV9J TlZBTElEKTsKLSAgICAgICAgIGdvdG8gZXJyOwotICAgICB9Ci1kaWZmIC11cCBvcGVuc3NsLTEu MC4yaS9jcnlwdG8vZHNhL2RzYS5oLmZpcHMtcmVxcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZHNh L2RzYS5oCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2RzYS9kc2EuaC5maXBzLXJlcXMJMjAx Ni0wOS0yMiAxMzo1NDoyNi40OTA4NDc0NTAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlw dG8vZHNhL2RzYS5oCTIwMTYtMDktMjIgMTM6NTQ6MjYuNTM0ODQ4NDcyICswMjAwCi1AQCAtODks NiArODksNyBAQAotICMgZW5kaWYKLSAKLSAjIGRlZmluZSBPUEVOU1NMX0RTQV9GSVBTX01JTl9N T0RVTFVTX0JJVFMgMTAyNAotKyMgZGVmaW5lIE9QRU5TU0xfRFNBX0ZJUFNfTUlOX01PRFVMVVNf QklUU19HRU4gKGdldGVudigiT1BFTlNTTF9FTkZPUkNFX01PRFVMVVNfQklUUyIpPzIwNDg6MTAy NCkKLSAKLSAjIGRlZmluZSBEU0FfRkxBR19DQUNIRV9NT05UX1AgICAweDAxCi0gLyoKLUBAIC0y NTEsOSArMjUyLDkgQEAgaW50IERTQXBhcmFtc19wcmludF9mcChGSUxFICpmcCwgY29uc3QgRAot IGludCBEU0FfcHJpbnRfZnAoRklMRSAqYnAsIGNvbnN0IERTQSAqeCwgaW50IG9mZik7Ci0gIyBl bmRpZgotIAotLSMgZGVmaW5lIERTU19wcmltZV9jaGVja3MgNTAKLSsjIGRlZmluZSBEU1NfcHJp bWVfY2hlY2tzIDY0Ci0gLyoKLS0gKiBQcmltYWxpdHkgdGVzdCBhY2NvcmRpbmcgdG8gRklQUyBQ VUIgMTg2Wy0xXSwgQXBwZW5kaXggMi4xOiA1MCByb3VuZHMgb2YKLSsgKiBQcmltYWxpdHkgdGVz dCBhY2NvcmRpbmcgdG8gRklQUyBQVUIgMTg2LTQsIEFwcGVuZGl4IDIuMTogNjQgcm91bmRzIG9m Ci0gICogUmFiaW4tTWlsbGVyCi0gICovCi0gIyBkZWZpbmUgRFNBX2lzX3ByaW1lKG4sIGNhbGxi YWNrLCBjYl9hcmcpIFwKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kc2EvZHNhX2tl eS5jLmZpcHMtcmVxcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZHNhL2RzYV9rZXkuYwotLS0tIG9w ZW5zc2wtMS4wLjJpL2NyeXB0by9kc2EvZHNhX2tleS5jLmZpcHMtcmVxcwkyMDE2LTA5LTIyIDEz OjU0OjI2LjUzMjg0ODQyNiArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9kc2EvZHNh X2tleS5jCTIwMTYtMDktMjIgMTM6NTQ6MjYuNTM0ODQ4NDcyICswMjAwCi1AQCAtMTI1LDcgKzEy NSw3IEBAIHN0YXRpYyBpbnQgZHNhX2J1aWx0aW5fa2V5Z2VuKERTQSAqZHNhKQotIAotICMgaWZk ZWYgT1BFTlNTTF9GSVBTCi0gICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKGRzYS0+ZmxhZ3MgJiBE U0FfRkxBR19OT05fRklQU19BTExPVykKLS0gICAgICAgICYmIChCTl9udW1fYml0cyhkc2EtPnAp IDwgT1BFTlNTTF9EU0FfRklQU19NSU5fTU9EVUxVU19CSVRTKSkgewotKyAgICAgICAgJiYgKEJO X251bV9iaXRzKGRzYS0+cCkgPCBPUEVOU1NMX0RTQV9GSVBTX01JTl9NT0RVTFVTX0JJVFNfR0VO KSkgewotICAgICAgICAgRFNBZXJyKERTQV9GX0RTQV9CVUlMVElOX0tFWUdFTiwgRFNBX1JfS0VZ X1NJWkVfVE9PX1NNQUxMKTsKLSAgICAgICAgIGdvdG8gZXJyOwotICAgICB9Ci1kaWZmIC11cCBv cGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzLmMuZmlwcy1yZXFzIG9wZW5zc2wtMS4wLjJp L2NyeXB0by9maXBzL2ZpcHMuYwotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHMu Yy5maXBzLXJlcXMJMjAxNi0wOS0yMiAxMzo1NDoyNi41MzI4NDg0MjYgKzAyMDAKLSsrKyBvcGVu c3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzLmMJMjAxNi0wOS0yMiAxMzo1NDoyNi41MzQ4NDg0 NzIgKzAyMDAKLUBAIC00MjQsMjYgKzQyNCwyNCBAQCBpbnQgRklQU19tb2R1bGVfbW9kZV9zZXQo aW50IG9ub2ZmLCBjb25zCi0gICAgICAgICAgICAgICAgIHJldCA9IDA7Ci0gICAgICAgICAgICAg ICAgIGdvdG8gZW5kOwotICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBPUEVOU1NMX2lhMzJj YXBfUFswXSB8PSAoMSA8PCAyOCk7IC8qIHNldCAic2hhcmVkIGNhY2hlIiAgICovCi0tICAgICAg ICAgICAgT1BFTlNTTF9pYTMyY2FwX1BbMV0gJj0gfigxIDw8ICg2MCAtIDMyKSk7IC8qIGNsZWFy IEFWWCAgICAgICAgICAgICovCi0gICAgICAgICB9Ci0gIyBlbmRpZgotIAotLSAgICAgICAgaWYg KCF2ZXJpZnlfY2hlY2tzdW1zKCkpIHsKLS0gICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBT X01PRFVMRV9NT0RFX1NFVCwKLS0gICAgICAgICAgICAgICAgICAgIEZJUFNfUl9GSU5HRVJQUklO VF9ET0VTX05PVF9NQVRDSCk7Ci0rICAgICAgICBpZiAoIUZJUFNfc2VsZnRlc3QoKSkgewotICAg ICAgICAgICAgIGZpcHNfc2VsZnRlc3RfZmFpbCA9IDE7Ci0gICAgICAgICAgICAgcmV0ID0gMDsK LSAgICAgICAgICAgICBnb3RvIGVuZDsKLSAgICAgICAgIH0KLSAKLS0gICAgICAgIGlmIChGSVBT X3NlbGZ0ZXN0KCkpCi0tICAgICAgICAgICAgZmlwc19zZXRfbW9kZShvbm9mZik7Ci0tICAgICAg ICBlbHNlIHsKLSsgICAgICAgIGlmICghdmVyaWZ5X2NoZWNrc3VtcygpKSB7Ci0rICAgICAgICAg ICAgRklQU2VycihGSVBTX0ZfRklQU19NT0RVTEVfTU9ERV9TRVQsCi0rICAgICAgICAgICAgICAg ICAgICBGSVBTX1JfRklOR0VSUFJJTlRfRE9FU19OT1RfTUFUQ0gpOwotICAgICAgICAgICAgIGZp cHNfc2VsZnRlc3RfZmFpbCA9IDE7Ci0gICAgICAgICAgICAgcmV0ID0gMDsKLSAgICAgICAgICAg ICBnb3RvIGVuZDsKLSAgICAgICAgIH0KLSsKLSsgICAgICAgIGZpcHNfc2V0X21vZGUob25vZmYp OwotICAgICAgICAgcmV0ID0gMTsKLSAgICAgICAgIGdvdG8gZW5kOwotICAgICB9Ci1kaWZmIC11 cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX2RoX3NlbGZ0ZXN0LmMuZmlwcy1yZXFz IG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfZGhfc2VsZnRlc3QuYwotLS0tIG9wZW5z c2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfZGhfc2VsZnRlc3QuYy5maXBzLXJlcXMJMjAxNi0w OS0yMiAxMzo1NDoyNi41MzU4NDg0OTUgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8v Zmlwcy9maXBzX2RoX3NlbGZ0ZXN0LmMJMjAxNi0wOS0yMiAxMzo1NDoyNi41MzU4NDg0OTUgKzAy MDAKLUBAIC0wLDAgKzEsMTYyIEBACi0rLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMp IDIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICogQ29w eXJpZ2h0IChjKSAyMDEzIFJlZCBIYXQsIEluYy4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFu ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1v ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291 cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwg dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0r ICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug dGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0 aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0 cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25p bmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkg dGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1 ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9y IHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgot KyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9q ZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1 Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0 dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0r ICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVy aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICog ICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Ig d3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgot KyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWlu IHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9k dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0r ICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wu b3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NM IFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJS QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS Ci0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVu U1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8s IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBP RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBI T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g Q09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ R0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJ VFkgT0YgU1VDSCBEQU1BR0UuCi0rICoKLSsgKi8KLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0r I2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZGguaD4KLSsj aW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2lu Y2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvYm4uaD4KLSsjaW5jbHVk ZSAiZmlwc19sb2NsLmgiCi0rCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwotK3N0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGRoX3Rlc3RfMjA0OF9wW10gPSB7Ci0rICAgIDB4QUUsIDB4RUMsIDB4 RUUsIDB4MjIsIDB4RkEsIDB4M0EsIDB4QTUsIDB4MjIsIDB4QzAsIDB4REUsIDB4MEYsIDB4MDks Ci0rICAgIDB4N0UsIDB4MTcsIDB4QzAsIDB4MDUsIDB4RjksIDB4RjEsIDB4RTcsIDB4QzYsIDB4 ODcsIDB4MTQsIDB4NkQsIDB4MTEsCi0rICAgIDB4RTcsIDB4QUUsIDB4RUQsIDB4MkYsIDB4NzIs IDB4NTksIDB4QzUsIDB4QTksIDB4OUIsIDB4QjgsIDB4MDIsIDB4QTUsCi0rICAgIDB4RjMsIDB4 NjksIDB4NzAsIDB4RDYsIDB4REQsIDB4OTAsIDB4RjksIDB4MTksIDB4NzksIDB4QkUsIDB4NjAs IDB4OEYsCi0rICAgIDB4MjUsIDB4OTIsIDB4MzAsIDB4MUMsIDB4NTEsIDB4NTEsIDB4MzgsIDB4 MjYsIDB4ODIsIDB4MjUsIDB4RTYsIDB4RkMsCi0rICAgIDB4RUQsIDB4NjUsIDB4OTYsIDB4OEYs IDB4NTcsIDB4RTUsIDB4NTMsIDB4OEIsIDB4MzgsIDB4NjMsIDB4QzcsIDB4Q0UsCi0rICAgIDB4 QkMsIDB4MUIsIDB4NEQsIDB4MTgsIDB4MkEsIDB4NUIsIDB4MDQsIDB4M0YsIDB4NkEsIDB4M0Ms IDB4OTQsIDB4MzksCi0rICAgIDB4QUUsIDB4MzYsIDB4RDYsIDB4NUUsIDB4MEYsIDB4QTIsIDB4 Q0MsIDB4RDAsIDB4RDQsIDB4RDUsIDB4QzYsIDB4MUUsCi0rICAgIDB4RjYsIDB4QTAsIDB4RjUs IDB4ODksIDB4NEUsIDB4QjQsIDB4MEIsIDB4QTQsIDB4QjMsIDB4MkIsIDB4M0QsIDB4RTIsCi0r ICAgIDB4NEUsIDB4RTEsIDB4NDksIDB4MjUsIDB4OTksIDB4NUYsIDB4MzIsIDB4MTYsIDB4MzMs IDB4MzIsIDB4MUIsIDB4N0EsCi0rICAgIDB4QTUsIDB4NUMsIDB4NkIsIDB4MzQsIDB4MEQsIDB4 MzksIDB4OTksIDB4REMsIDB4RjAsIDB4NzYsIDB4RTUsIDB4NUEsCi0rICAgIDB4RDQsIDB4NzEs IDB4MDAsIDB4RUQsIDB4NUEsIDB4NzMsIDB4RkIsIDB4QzgsIDB4MDEsIDB4QUQsIDB4OTksIDB4 Q0YsCi0rICAgIDB4OTksIDB4NTIsIDB4N0MsIDB4OUMsIDB4NjQsIDB4QzYsIDB4NzYsIDB4NDAs IDB4NTcsIDB4QUYsIDB4NTksIDB4RDcsCi0rICAgIDB4MzgsIDB4MEIsIDB4NDAsIDB4REUsIDB4 MzMsIDB4MEQsIDB4QjgsIDB4NzYsIDB4RUMsIDB4QTksIDB4RDgsIDB4NzMsCi0rICAgIDB4Rjgs IDB4RUYsIDB4MjYsIDB4NjYsIDB4MDYsIDB4MjcsIDB4REQsIDB4N0MsIDB4QTQsIDB4MTAsIDB4 OUMsIDB4QTYsCi0rICAgIDB4QUEsIDB4RjksIDB4NTMsIDB4NjIsIDB4NzMsIDB4MUQsIDB4QkEs IDB4MUMsIDB4RjEsIDB4NjcsIDB4RjQsIDB4MzUsCi0rICAgIDB4RUQsIDB4NkYsIDB4MzcsIDB4 OTIsIDB4RTgsIDB4NEYsIDB4NkMsIDB4QkEsIDB4NTIsIDB4NkUsIDB4QTEsIDB4RUQsCi0rICAg IDB4REEsIDB4OUYsIDB4ODUsIDB4MTEsIDB4ODIsIDB4NTIsIDB4NjIsIDB4MDgsIDB4NDQsIDB4 RjEsIDB4MzAsIDB4MDMsCi0rICAgIDB4QzMsIDB4MzgsIDB4MkMsIDB4NzksIDB4QkQsIDB4RDQs IDB4NDMsIDB4NDUsIDB4RUUsIDB4OEUsIDB4NTAsIDB4RkMsCi0rICAgIDB4MjksIDB4NDYsIDB4 OUEsIDB4RkUsIDB4NTQsIDB4MUEsIDB4MTksIDB4OEYsIDB4NEIsIDB4ODQsIDB4MDgsIDB4REUs Ci0rICAgIDB4MjAsIDB4NjIsIDB4NzMsIDB4Q0MsIDB4REQsIDB4N0UsIDB4RjAsIDB4RUYsIDB4 QTIsIDB4RkQsIDB4ODYsIDB4NTgsCi0rICAgIDB4NEIsIDB4RDgsIDB4MzcsIDB4RUIKLSt9Owot KwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRoX3Rlc3RfMjA0OF9nW10gPSB7Ci0rICAg IDB4MDIKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRoX3Rlc3RfMjA0OF9w dWJfa2V5W10gPSB7Ci0rICAgIDB4QTAsIDB4MzksIDB4MTEsIDB4NzcsIDB4OUEsIDB4QzEsIDB4 MzAsIDB4MUYsIDB4QkUsIDB4NDgsIDB4QTcsIDB4QUEsCi0rICAgIDB4QTAsIDB4ODQsIDB4NTQs IDB4NjQsIDB4QUQsIDB4MUIsIDB4NzAsIDB4RkEsIDB4MTMsIDB4NTUsIDB4NjMsIDB4RDIsCi0r ICAgIDB4MUYsIDB4NjIsIDB4MzIsIDB4OTMsIDB4OEUsIDB4QzksIDB4M0UsIDB4MDksIDB4QTcs IDB4NjQsIDB4RTQsIDB4MTIsCi0rICAgIDB4NkUsIDB4MUIsIDB4RjIsIDB4OTIsIDB4M0IsIDB4 QjksIDB4Q0IsIDB4NTYsIDB4RUEsIDB4MDcsIDB4ODgsIDB4QjUsCi0rICAgIDB4QTYsIDB4QkMs IDB4MTYsIDB4MUYsIDB4MjcsIDB4RkUsIDB4RDgsIDB4QUEsIDB4NDAsIDB4QjIsIDB4QjAsIDB4 MkQsCi0rICAgIDB4MzcsIDB4NzYsIDB4QTYsIDB4QTQsIDB4ODIsIDB4MkMsIDB4MEUsIDB4MjIs IDB4NjQsIDB4OUQsIDB4Q0IsIDB4RDEsCi0rICAgIDB4MDAsIDB4QjcsIDB4ODksIDB4MTQsIDB4 NzIsIDB4NEUsIDB4QkUsIDB4NDgsIDB4NDEsIDB4RjgsIDB4QjIsIDB4NTEsCi0rICAgIDB4MTEs IDB4MDksIDB4NEIsIDB4MjIsIDB4MDEsIDB4MjMsIDB4MzksIDB4OTYsIDB4RTAsIDB4MTUsIDB4 RDcsIDB4OUYsCi0rICAgIDB4NjAsIDB4RDEsIDB4QjcsIDB4QUUsIDB4RkUsIDB4NUYsIDB4REIs IDB4RTcsIDB4MDMsIDB4MTcsIDB4OTcsIDB4QTYsCi0rICAgIDB4MTYsIDB4NzQsIDB4QkQsIDB4 NTMsIDB4ODEsIDB4MTksIDB4QzUsIDB4NDcsIDB4NUUsIDB4Q0UsIDB4OEQsIDB4RUQsCi0rICAg IDB4NDUsIDB4NUQsIDB4M0MsIDB4MDAsIDB4QTAsIDB4MEEsIDB4NjgsIDB4NkEsIDB4RTAsIDB4 OEUsIDB4MDYsIDB4NDYsCi0rICAgIDB4NkYsIDB4RDcsIDB4RjksIDB4REYsIDB4MzEsIDB4N0Us IDB4NzcsIDB4NDQsIDB4MEQsIDB4OTgsIDB4RTAsIDB4Q0EsCi0rICAgIDB4OTgsIDB4MDksIDB4 NTIsIDB4MDQsIDB4OTAsIDB4RUEsIDB4NkQsIDB4RjQsIDB4MzAsIDB4NjksIDB4OEYsIDB4QjEs Ci0rICAgIDB4OUIsIDB4QzEsIDB4NDMsIDB4REIsIDB4RDUsIDB4OEQsIDB4QzgsIDB4OEUsIDB4 QjYsIDB4MEIsIDB4MDUsIDB4QkUsCi0rICAgIDB4MEUsIDB4QzUsIDB4OTksIDB4QzgsIDB4NkUs IDB4NEUsIDB4RjMsIDB4Q0IsIDB4QzMsIDB4NUUsIDB4OUIsIDB4NTMsCi0rICAgIDB4RjcsIDB4 MDYsIDB4MUMsIDB4NEYsIDB4QzcsIDB4QjgsIDB4NkUsIDB4MzAsIDB4MTgsIDB4Q0EsIDB4OUIs IDB4QjksCi0rICAgIDB4QkMsIDB4NUYsIDB4MTcsIDB4NzIsIDB4MjksIDB4NUEsIDB4RTUsIDB4 RDksIDB4OTYsIDB4QjcsIDB4MEIsIDB4RjMsCi0rICAgIDB4MkQsIDB4OEMsIDB4RjEsIDB4RTEs IDB4MEUsIDB4MEQsIDB4NzQsIDB4RDUsIDB4OUQsIDB4RjAsIDB4MDYsIDB4QTksCi0rICAgIDB4 QjQsIDB4OTUsIDB4NjMsIDB4NzYsIDB4NDYsIDB4NTUsIDB4NDgsIDB4ODIsIDB4MzksIDB4OTAs IDB4RUYsIDB4NTYsCi0rICAgIDB4NzUsIDB4MzQsIDB4QjgsIDB4MzQsIDB4QzMsIDB4MTgsIDB4 NkUsIDB4MUUsIDB4QUQsIDB4RTMsIDB4NDgsIDB4N0UsCi0rICAgIDB4OTMsIDB4MkMsIDB4MjMs IDB4RTcsIDB4RjgsIDB4OTAsIDB4NzMsIDB4QjEsIDB4NzcsIDB4ODAsIDB4NjcsIDB4QTksCi0r ICAgIDB4MzYsIDB4OUUsIDB4REEsIDB4RDIKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGRoX3Rlc3RfMjA0OF9wcml2X2tleVtdID0gewotKyAgICAweDBDLCAweDRCLCAweDMw LCAweDg5LCAweEQxLCAweEI4LCAweDYyLCAweENCLCAweDNDLCAweDQzLCAweDY0LCAweDkxLAot KyAgICAweEYwLCAweDkxLCAweDU0LCAweDcwLCAweEM1LCAweDI3LCAweDk2LCAweEUzLCAweEFD LCAweEJFLCAweEU4LCAweDAwLAotKyAgICAweEVDLCAweDU1LCAweEY2LCAweENDCi0rfTsKLSsK LStpbnQgRklQU19zZWxmdGVzdF9kaCgpCi0rewotKyAgICBESCAqZGggPSBOVUxMOwotKyAgICBp bnQgcmV0ID0gMDsKLSsgICAgdm9pZCAqcHViX2tleSA9IE5VTEw7Ci0rICAgIGludCBsZW47Ci0r Ci0rICAgIGRoID0gREhfbmV3KCk7Ci0rCi0rICAgIGlmIChkaCA9PSBOVUxMKQotKyAgICAgICAg Z290byBlcnI7Ci0rCi0rICAgIGZpcHNfbG9hZF9rZXlfY29tcG9uZW50KGRoLCBwLCBkaF90ZXN0 XzIwNDgpOwotKyAgICBmaXBzX2xvYWRfa2V5X2NvbXBvbmVudChkaCwgZywgZGhfdGVzdF8yMDQ4 KTsKLSsgICAgLyogbm90ZSB0aGF0IHRoZSBwcml2YXRlIGtleSBpcyBtdWNoIHNob3J0ZXIgdGhh biBub3JtYWxseSB1c2VkCi0rICAgICAqIGJ1dCBzdGlsbCBnICoqIHByaXZfa2V5ID4gcAotKyAg ICAgKi8KLSsgICAgZmlwc19sb2FkX2tleV9jb21wb25lbnQoZGgsIHByaXZfa2V5LCBkaF90ZXN0 XzIwNDgpOwotKwotKyAgICBpZiAoREhfZ2VuZXJhdGVfa2V5KGRoKSA8PSAwKQotKyAgICAgICAg Z290byBlcnI7Ci0rCi0rICAgIGxlbiA9IEJOX251bV9ieXRlcyhkaC0+cHViX2tleSk7Ci0rICAg IGlmICgocHViX2tleSA9IE9QRU5TU0xfbWFsbG9jKGxlbikpID09IE5VTEwpCi0rICAgICAgICBn b3RvIGVycjsKLSsgICAgQk5fYm4yYmluKGRoLT5wdWJfa2V5LCBwdWJfa2V5KTsKLSsKLSsgICAg aWYgKGxlbiAhPSBzaXplb2YoZGhfdGVzdF8yMDQ4X3B1Yl9rZXkpIHx8Ci0rICAgICAgICBtZW1j bXAocHViX2tleSwgZGhfdGVzdF8yMDQ4X3B1Yl9rZXksIGxlbikgIT0gMCkKLSsgICAgICAgIGdv dG8gZXJyOwotKwotKyAgICByZXQgPSAxOwotKwotKyBlcnI6Ci0rICAgIGlmIChkaCkKLSsgICAg ICAgIERIX2ZyZWUoZGgpOwotKwotKyAgICBPUEVOU1NMX2ZyZWUocHViX2tleSk7Ci0rICAgIHJl dHVybiByZXQ7Ci0rfQotKyNlbmRpZgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2Zp cHMvZmlwcy5oLmZpcHMtcmVxcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzLmgKLS0t LSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzLmguZmlwcy1yZXFzCTIwMTYtMDktMjIg MTM6NTQ6MjYuNTI3ODQ4MzA5ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMv Zmlwcy5oCTIwMTYtMDktMjIgMTM6NTQ6MjYuNTM1ODQ4NDk1ICswMjAwCi1AQCAtOTYsNiArOTYs NyBAQCBleHRlcm4gIkMiIHsKLSAgICAgaW50IEZJUFNfc2VsZnRlc3RfZHNhKHZvaWQpOwotICAg ICBpbnQgRklQU19zZWxmdGVzdF9lY2RzYSh2b2lkKTsKLSAgICAgaW50IEZJUFNfc2VsZnRlc3Rf ZWNkaCh2b2lkKTsKLSsgICAgaW50IEZJUFNfc2VsZnRlc3RfZGgodm9pZCk7Ci0gICAgIHZvaWQg RklQU19jb3JydXB0X3JuZyh2b2lkKTsKLSAgICAgdm9pZCBGSVBTX3JuZ19zdGljayh2b2lkKTsK LSAgICAgdm9pZCBGSVBTX3g5MzFfc3RpY2soaW50IG9ub2ZmKTsKLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfcG9zdC5jLmZpcHMtcmVxcyBvcGVuc3NsLTEuMC4yaS9j cnlwdG8vZmlwcy9maXBzX3Bvc3QuYwotLS0tIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2Zp cHNfcG9zdC5jLmZpcHMtcmVxcwkyMDE2LTA5LTIyIDEzOjU0OjI2LjUyNDg0ODI0MCArMDIwMAot KysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL2ZpcHNfcG9zdC5jCTIwMTYtMDktMjIgMTM6 NTQ6MjYuNTM1ODQ4NDk1ICswMjAwCi1AQCAtOTksNiArOTksOCBAQCBpbnQgRklQU19zZWxmdGVz dCh2b2lkKQotICAgICAgICAgcnYgPSAwOwotICAgICBpZiAoIUZJUFNfc2VsZnRlc3RfZHNhKCkp Ci0gICAgICAgICBydiA9IDA7Ci0rICAgIGlmICghRklQU19zZWxmdGVzdF9kaCgpKQotKyAgICAg ICAgcnYgPSAwOwotICAgICBpZiAoIUZJUFNfc2VsZnRlc3RfZWNkaCgpKQotICAgICAgICAgcnYg PSAwOwotICAgICByZXR1cm4gcnY7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlw cy9maXBzX3JzYV9zZWxmdGVzdC5jLmZpcHMtcmVxcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlw cy9maXBzX3JzYV9zZWxmdGVzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvZmlw c19yc2Ffc2VsZnRlc3QuYy5maXBzLXJlcXMJMjAxNi0wOS0yMiAxMzo1NDoyNi40OTk4NDc2NTkg KzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZmlwcy9maXBzX3JzYV9zZWxmdGVzdC5j CTIwMTYtMDktMjIgMTM6NTQ6MjYuNTM3ODQ4NTQyICswMjAwCi1AQCAtNjAsNjggKzYwLDEwNyBA QAotICNpZmRlZiBPUEVOU1NMX0ZJUFMKLSAKLSBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBu W10gPQotLSAgICAiXHgwMFx4QkJceEY4XHgyRlx4MDlceDA2XHg4Mlx4Q0VceDlDXHgyM1x4Mzhc eEFDXHgyQlx4OURceEE4XHg3MSIKLS0gICAgIlx4RjdceDM2XHg4RFx4MDdceEVFXHhENFx4MTBc eDQzXHhBNFx4NDBceEQ2XHhCNlx4RjBceDc0XHg1NFx4RjUiCi0tICAgICJceDFGXHhCOFx4REZc eEJBXHhBRlx4MDNceDVDXHgwMlx4QUJceDYxXHhFQVx4NDhceENFXHhFQlx4NkZceENEIgotLSAg ICAiXHg0OFx4NzZceEVEXHg1Mlx4MERceDYwXHhFMVx4RUNceDQ2XHgxOVx4NzFceDlEXHg4QVx4 NUJceDhCXHg4MCIKLS0gICAgIlx4N0ZceEFGXHhCOFx4RTBceEEzXHhERlx4QzdceDM3XHg3Mlx4 M0VceEU2XHhCNFx4QjdceEQ5XHgzQVx4MjUiCi0tICAgICJceDg0XHhFRVx4NkFceDY0XHg5RFx4 MDZceDA5XHg1M1x4NzRceDg4XHgzNFx4QjJceDQ1XHg0NVx4OThceDM5IgotLSAgICAiXHg0RVx4 RTBceEFBXHhCMVx4MkRceDdCXHg2MVx4QTVceDFGXHg1Mlx4N0FceDlBXHg0MVx4RjZceEMxXHg2 OCIKLS0gICAgIlx4N0ZceEUyXHg1M1x4NzJceDk4XHhDQVx4MkFceDhGXHg1OVx4NDZceEY4XHhF NVx4RkRceDA5XHgxRFx4QkQiICJceENCIjsKLSsgICAgIlx4MDBceGM5XHhkNVx4NmRceDlkXHg5 MFx4ZGJceDQzXHhkNlx4MDJceGVkXHg5Nlx4ODhceDEzXHg4YSIKLSsgICAgIlx4YjJceGJmXHg2 ZVx4YTFceDA2XHgxMFx4YjJceDc4XHgzN1x4YTdceDE0XHhhOFx4ZmZceGRkXHgwMCIKLSsgICAg Ilx4ZGRceGI0XHg5M1x4YTBceDQ1XHhjY1x4OTZceDkwXHhlZFx4YWRceGE5XHhkZFx4YzRceGQ2 XHhjYSIKLSsgICAgIlx4MGNceGYwXHhlZFx4NGZceDcyXHg1ZVx4MjFceDQ5XHg5YVx4MThceDEy XHgxNVx4OGZceDkwXHg1YSIKLSsgICAgIlx4ZGJceGI2XHgzM1x4OTlceGEzXHhlNlx4YjRceGYw XHhjNFx4OTdceDIxXHgyNlx4YmJceGUzXHhiYSIKLSsgICAgIlx4ZjJceGZmXHhhMFx4NzJceGRh XHg4OVx4NjNceDhlXHg4Ylx4M2VceDA4XHg5ZFx4OTJceDJhXHhiZSIKLSsgICAgIlx4MTZceGUx XHg0M1x4MTVceGZjXHg1N1x4YzdceDFmXHgwOVx4MTFceDY3XHgxY1x4YTlceDk2XHhkMSIKLSsg ICAgIlx4OGJceDNlXHg4MFx4OTNceGMxXHg1OVx4ZDBceDZkXHgzOVx4ZjJceGFjXHg5NVx4Y2Nc eDEwXHg3NSIKLSsgICAgIlx4ZTlceDMxXHgyNFx4ZDFceDQzXHhhZlx4NjhceDUyXHg0Ylx4ZTdc eDE2XHhkN1x4NDlceDY1XHg2ZiIKLSsgICAgIlx4MjZceGMwXHg4Nlx4YWRceGMwXHgwN1x4MGFc eGMxXHhlMVx4MmZceDg3XHg4NVx4ODZceDNiXHhkYyIKLSsgICAgIlx4NWFceDk5XHhiZVx4ZTlc eGY5XHhiOVx4ZTlceDgyXHgyN1x4NTFceDA0XHgxNVx4YWJceDA2XHgwZSIKLSsgICAgIlx4NzZc eDVhXHgyOFx4OGRceDkyXHhiZFx4YzVceGI1XHg3Ylx4YThceGRmXHg0ZVx4NDdceGEyXHhjMSIK LSsgICAgIlx4ZTdceDUyXHhiZlx4NDdceGY3XHg2Mlx4ZTBceDNhXHg2Zlx4NGRceDZhXHg0ZFx4 NGVceGQ0XHhiOSIKLSsgICAgIlx4NTlceDY5XHhmYVx4YjJceDE0XHhjMVx4ZWVceGU2XHgyZlx4 OTVceGNkXHg5NFx4NzJceGFlXHhlNCIKLSsgICAgIlx4ZGJceDE4XHg5YVx4YzRceGNkXHg3MFx4 YmRceGVlXHgzMVx4MTZceGI3XHg0OVx4NjVceGFjXHg0MCIKLSsgICAgIlx4MTlceDBlXHhiNVx4 NmRceDgzXHhmMVx4MzZceGJiXHgwOFx4MmZceDJlXHg0ZVx4OTJceDYyXHhhNCIKLSsgICAgIlx4 ZmZceDUwXHhkYlx4MjBceDQ1XHhhMlx4ZWJceDE2XHg3YVx4ZjJceGQ1XHgyOFx4YzFceGZkXHg0 ZSIgIlx4MDNceDcxIjsKLSAKLSBzdGF0aWMgaW50IGNvcnJ1cHRfcnNhOwotIAotIHN0YXRpYyBp bnQgc2V0cnNha2V5KFJTQSAqa2V5KQotIHsKLS0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgZVtdID0gIlx4MTEiOwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBlW10gPSAi XHgwMVx4MDBceDAxIjsKLSAKLSAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZFtdID0K LS0gICAgICAgICJceDAwXHhBNVx4REFceEZDXHg1M1x4NDFceEZBXHhGMlx4ODlceEM0XHhCOVx4 ODhceERCXHgzMFx4QzFceENEIgotLSAgICAgICAgIlx4RjhceDNGXHgzMVx4MjVceDFFXHgwNlx4 NjhceEI0XHgyN1x4ODRceDgxXHgzOFx4MDFceDU3XHg5Nlx4NDEiCi0tICAgICAgICAiXHhCMlx4 OTRceDEwXHhCM1x4QzdceDk5XHg4RFx4NkJceEM0XHg2NVx4NzRceDVFXHg1Q1x4MzlceDI2XHg2 OSIKLS0gICAgICAgICJceEQ2XHg4N1x4MERceEEyXHhDMFx4ODJceEE5XHgzOVx4RTNceDdGXHhE Q1x4QjhceDJFXHhDOVx4M0VceERBIgotLSAgICAgICAgIlx4QzlceDdGXHhGM1x4QURceDU5XHg1 MFx4QUNceENGXHhCQ1x4MTFceDFDXHg3Nlx4RjFceEE5XHg1Mlx4OTQiCi0tICAgICAgICAiXHg0 NFx4RTVceDZBXHhBRlx4NjhceEM1XHg2Q1x4MDlceDJDXHhEM1x4OERceEMzXHhCRVx4RjVceEQy XHgwQSIKLS0gICAgICAgICJceDkzXHg5OVx4MjZceEVEXHg0Rlx4NzRceEExXHgzRVx4RERceEZC XHhFMVx4QTFceENFXHhDQ1x4NDhceDk0IgotLSAgICAgICAgIlx4QUZceDk0XHgyOFx4QzJceEI3 XHhCOFx4ODhceDNGXHhFNFx4NDZceDNBXHg0Qlx4QzhceDVCXHgxQ1x4QjMiCi0tICAgICAgICAi XHhDMSI7Ci0rICAgICAgICAiXHgzNlx4MjdceDNkXHhiMVx4ZjlceDFiXHhkYlx4YTdceGEwXHg0 MVx4N2ZceDEyXHgyM1x4YWNceDIzIgotKyAgICAgICAgIlx4MjlceDk5XHhkNVx4M2FceDdiXHg2 MFx4NjdceDQxXHgwN1x4NjNceDUzXHhiNFx4ZDJceGU3XHg1OCIKLSsgICAgICAgICJceDk1XHgw YVx4YzdceDA1XHhmM1x4NGVceGIyXHhiNFx4MTJceGQ0XHg3MFx4ZGNceDRmXHg4NVx4MDYiCi0r ICAgICAgICAiXHhkM1x4ZGRceGQ4XHg2M1x4MjdceDNlXHg2N1x4MzFceDIxXHgyNFx4MzlceDA0 XHhiY1x4MDZceGE0IgotKyAgICAgICAgIlx4Y2NceGNlXHgyYlx4N2FceGZlXHg3Ylx4YWRceGRl XHgxMVx4NmVceGEzXHhhNVx4ZTZceDA0XHg1MyIKLSsgICAgICAgICJceDBlXHhhM1x4NGVceDJk XHhiNFx4OGZceDMxXHhiZlx4Y2FceDc1XHgyNVx4NTJceDAyXHg4NVx4ZGUiCi0rICAgICAgICAi XHgzZFx4YjJceDcyXHg0M1x4YjJceDg5XHg4YVx4OWFceDM0XHg0MVx4MjZceDNmXHg5YVx4Njdc eGJlIgotKyAgICAgICAgIlx4YTRceDk2XHg3Ylx4MGVceDc1XHhiYVx4YTZceDkzXHhkNVx4Yjhc eGQ4XHhiOFx4NTdceGYyXHg0YiIKLSsgICAgICAgICJceDBmXHgxNFx4ODFceGQxXHg1N1x4NGVc eGY2XHg0NVx4NGNceGE2XHgzYlx4ZDBceDcwXHhjYVx4ZDMiCi0rICAgICAgICAiXHg5ZFx4NTVc eGRlXHgyMlx4MDVceGU3XHg4ZVx4MjhceDRkXHhlZVx4MTFceGNmXHhiNlx4NjdceDc2IgotKyAg ICAgICAgIlx4MDlceGQzXHhlM1x4M2NceDEzXHhmOVx4OTlceDM0XHgxMFx4N2JceGVjXHg4MVx4 MzhceGYwXHhiNiIKLSsgICAgICAgICJceDM0XHg5Y1x4OWJceDUwXHg2Zlx4MGJceDkxXHg4MVx4 NGRceDg5XHg5NFx4MDRceDdiXHhmMFx4M2MiCi0rICAgICAgICAiXHhmNFx4YjFceGIyXHgwMFx4 NDhceDhkXHg1YVx4OGZceDg4XHg5ZVx4YzVceGFiXHgzYVx4OWVceDQ0IgotKyAgICAgICAgIlx4 M2ZceDU0XHhlN1x4ZDlceDZlXHg0N1x4YWFceGExXHhiZFx4NDBceDQ2XHgzMVx4ZjlceGYwXHgz NCIKLSsgICAgICAgICJceGI2XHgwNFx4ZTFceDJiXHg1Ylx4NzNceDg2XHhkZFx4M2FceDkyXHgx Ylx4NzFceGM3XHgzZlx4MzIiCi0rICAgICAgICAiXHhlNVx4YzNceGMyXHhhYlx4YTFceDdlXHhi Zlx4YTRceDUyXHhhMFx4YjBceDY4XHg5MFx4ZDFceDIwIgotKyAgICAgICAgIlx4MTJceDc5XHhl OVx4ZDdceGM5XHg0MFx4YmFceGYyXHgxOVx4YzdceGE1XHgwMFx4OTJceDg2XHgwZCIgIlx4MDEi OwotIAotICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwW10gPQotLSAgICAgICAgIlx4 MDBceEVFXHhDRlx4QUVceDgxXHhCMVx4QjlceEIzXHhDOVx4MDhceDgxXHgwQlx4MTBceEExXHhC NVx4NjAiCi0tICAgICAgICAiXHgwMVx4OTlceEVCXHg5Rlx4NDRceEFFXHhGNFx4RkRceEE0XHg5 M1x4QjhceDFBXHg5RVx4M0RceDg0XHhGNiIKLS0gICAgICAgICJceDMyXHgxMlx4NEVceEYwXHgy M1x4NkVceDVEXHgxRVx4M0JceDdFXHgyOFx4RkFceEU3XHhBQVx4MDRceDBBIgotLSAgICAgICAg Ilx4MkRceDVCXHgyNVx4MjFceDc2XHg0NVx4OURceDFGXHgzOVx4NzVceDQxXHhCQVx4MkFceDU4 XHhGQlx4NjUiCi0tICAgICAgICAiXHg5OSI7Ci0rICAgICAgICAiXHgwMFx4ZmNceDVjXHg2ZVx4 MTZceGNlXHgxZlx4MDNceDdiXHhjZFx4ZjdceGIzXHg3Mlx4YjJceDhmIgotKyAgICAgICAgIlx4 MTZceDcyXHhiOFx4NTZceGFlXHhmN1x4Y2RceDY3XHhkOFx4NGVceDdkXHgwN1x4YWZceGQ1XHg0 MyIKLSsgICAgICAgICJceDI2XHhjM1x4MzVceGJlXHg0M1x4OGZceDRlXHgyZlx4MWNceDQzXHg0 ZVx4NmJceGQyXHhiMlx4ZWMiCi0rICAgICAgICAiXHg1Mlx4NmRceDk3XHg1Mlx4MmJceGNjXHg1 Y1x4M2FceDZiXHhmNFx4MTRceGM2XHg3NFx4ZGFceDY2IgotKyAgICAgICAgIlx4MzhceDFjXHg3 YVx4M2ZceDg0XHgyZlx4ZTNceGY5XHg1YVx4YjhceDY1XHg2OVx4NDZceDA2XHhhMyIKLSsgICAg ICAgICJceDM3XHg3OVx4YjJceGExXHg1Ylx4NThceGVkXHg1ZVx4YTdceDVmXHg4Y1x4NjVceDY2 XHhiYlx4ZDEiCi0rICAgICAgICAiXHgyNFx4MzZceGU2XHgzN1x4YTdceDNkXHg0OVx4NzdceDhh XHg4Y1x4MzRceGQ4XHg2OVx4MjlceGYzIgotKyAgICAgICAgIlx4NGRceDU4XHgyMlx4YjBceDUx XHgyNFx4YjZceDQwXHhhOFx4ODZceDU5XHgwYVx4YjdceGJhXHg1YyIKLSsgICAgICAgICJceDk3 XHhkYVx4NTdceGU4XHgzNlx4ZGFceDdhXHg5Y1x4YWQiOwotIAotICAgICBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBxW10gPQotLSAgICAgICAgIlx4MDBceEM5XHg3Rlx4QjFceEYwXHgyN1x4 RjRceDUzXHhGNlx4MzRceDEyXHgzM1x4RUFceEFBXHhEMVx4RDkiCi0tICAgICAgICAiXHgzNVx4 M0ZceDZDXHg0Mlx4RDBceDg4XHg2Nlx4QjFceEQwXHg1QVx4MEZceDIwXHgzNVx4MDJceDhCXHg5 RCIKLS0gICAgICAgICJceDg2XHg5OFx4NDBceEI0XHgxNlx4NjZceEI0XHgyRVx4OTJceEVBXHgw RFx4QTNceEI0XHgzMlx4MDRceEI1IgotLSAgICAgICAgIlx4Q0ZceENFXHgzM1x4NTJceDUyXHg0 RFx4MDRceDE2XHhBNVx4QTRceDQxXHhFN1x4MDBceEFGXHg0Nlx4MTUiCi0tICAgICAgICAiXHgw MyI7Ci0rICAgICAgICAiXHgwMFx4Y2NceGJlXHg3Ylx4MDlceDY5XHgwNlx4ZWVceDQ1XHhiZlx4 ODhceDQ3XHgzOFx4YThceGY4IgotKyAgICAgICAgIlx4MTdceGU1XHhiNlx4YmFceDY3XHg1NVx4 ZTNceGU4XHgwNVx4OGJceGI4XHhlMlx4NTNceGQ2XHg4ZSIKLSsgICAgICAgICJceGVmXHgyY1x4 ZTdceDRmXHg0YVx4ZjdceDRlXHgyNlx4OGRceDg1XHgwYlx4M2ZceGVjXHhjM1x4MWMiCi0rICAg ICAgICAiXHhkNFx4ZWJceGVjXHg2YVx4YzhceDcyXHgyYVx4MjVceDdkXHhmZFx4YTZceDc3XHg5 Nlx4ZjBceDFlIgotKyAgICAgICAgIlx4Y2RceDI4XHg1N1x4ZjhceDM3XHgzMFx4NzVceDZiXHhi ZFx4ZDRceDdiXHgwY1x4ODdceGM1XHg2YyIKLSsgICAgICAgICJceDg3XHg0MFx4YTVceGJiXHgy N1x4MmNceDc4XHhjOVx4NzRceDVhXHg1NFx4NWJceDBiXHgzMFx4NmYiCi0rICAgICAgICAiXHg0 NFx4NGFceGZhXHg3MVx4ZTRceDIxXHg2MVx4NjZceGY5XHhlZVx4NjVceGRlXHg3Y1x4MDRceGQ3 IgotKyAgICAgICAgIlx4ZmRceGE5XHgxNVx4NWJceDdmXHhlMlx4N2FceGJhXHg2OVx4ODZceDcy XHhhNlx4MDZceDhkXHg5YiIKLSsgICAgICAgICJceDkwXHg1NVx4NjBceDllXHg0Y1x4NWRceGE5 XHhiNlx4NTUiOwotIAotICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBkbXAxW10gPQot LSAgICAgICAgIlx4NTRceDQ5XHg0Q1x4QTZceDNFXHhCQVx4MDNceDM3XHhFNFx4RTJceDQwXHgy M1x4RkNceEQ2XHg5QVx4NUEiCi0tICAgICAgICAiXHhFQlx4MDdceEREXHhEQ1x4MDFceDgzXHhB NFx4RDBceEFDXHg5Qlx4NTRceEIwXHg1MVx4RjJceEIxXHgzRSIKLS0gICAgICAgICJceEQ5XHg0 OVx4MDlceDc1XHhFQVx4QjdceDc0XHgxNFx4RkZceDU5XHhDMVx4RjdceDY5XHgyRVx4OUFceDJF IgotLSAgICAgICAgIlx4MjBceDJCXHgzOFx4RkNceDkxXHgwQVx4NDdceDQxXHg3NFx4QURceEM5 XHgzQ1x4MUZceDY3XHhDOVx4ODEiOwotKyAgICAgICAgIlx4N2FceGQ2XHgxMlx4ZDBceDBlXHhl Y1x4OTFceGE5XHg4NVx4OGJceGY4XHg1MFx4ZjBceDExXHgyZSIKLSsgICAgICAgICJceDAwXHgx MVx4MzJceDQwXHg2MFx4NjZceDFmXHgxMVx4ZWVceGMyXHg3NVx4MjdceDY1XHg0Ylx4MTYiCi0r ICAgICAgICAiXHg2N1x4MTZceDk1XHhkMlx4MTRceGMzXHgxZFx4YjNceDQ4XHgxZlx4YjdceGU0 XHgwYlx4MmJceDc0IgotKyAgICAgICAgIlx4YzNceGRiXHg1MFx4MjdceGY5XHg4NVx4M2FceGZh XHhhOVx4MDhceDIzXHhjMVx4NjVceDNkXHgzNCIKLSsgICAgICAgICJceDNhXHhjOFx4NTZceDdh XHg2NVx4NDVceDM2XHg2ZVx4YWVceDJhXHhjZVx4OWZceDQzXHg0M1x4ZDciCi0rICAgICAgICAi XHgxMFx4ZTlceDllXHgxOFx4ZjRceGE0XHgzNVx4ZGFceDhhXHg2Ylx4YjBceDNmXHhkZFx4NTNc eGUzIgotKyAgICAgICAgIlx4YThceGM1XHg0ZVx4NzlceDlkXHgxZlx4NTFceDhjXHhhMlx4Y2Fc eDY2XHgzY1x4NmFceDJhXHhmZiIKLSsgICAgICAgICJceDhlXHhkMlx4ZjNceGI3XHhjYlx4ODJc eGRhXHhkZVx4MmNceGU2XHhkMlx4OGNceGIzXHhhZFx4YjYiCi0rICAgICAgICAiXHg0Y1x4OTVc eDU1XHg3Nlx4YmRceGM5XHhjOFx4ZDEiOwotIAotICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBkbXExW10gPQotLSAgICAgICAgIlx4NDdceDFFXHgwMlx4OTBceEZGXHgwQVx4RjBceDc1 XHgwM1x4NTFceEI3XHhGOFx4NzhceDg2XHg0Q1x4QTkiCi0tICAgICAgICAiXHg2MVx4QURceEJE XHgzQVx4OEFceDdFXHg5OVx4MUNceDVDXHgwNVx4NTZceEE5XHg0Q1x4MzFceDQ2XHhBNyIKLS0g ICAgICAgICJceEY5XHg4MFx4M0ZceDhGXHg2Rlx4OEFceEUzXHg0Mlx4RTlceDMxXHhGRFx4OEFc eEU0XHg3QVx4MjJceDBEIgotLSAgICAgICAgIlx4MUJceDk5XHhBNFx4OTVceDg0XHg5OFx4MDdc eEZFXHgzOVx4RjlceDI0XHg1QVx4OThceDM2XHhEQVx4M0QiOwotKyAgICAgICAgIlx4MDBceDgz XHgyM1x4MWRceGJiXHgxMVx4NDJceDE3XHgyYlx4MjVceDVhXHgyY1x4MDNceGU2XHg3NSIKLSsg ICAgICAgICJceGMxXHgxOFx4YThceGM5XHgwYlx4OTZceGJmXHhiYVx4YzRceDkyXHg5MVx4ODBc eGE1XHgyMlx4MmYiCi0rICAgICAgICAiXHhiYVx4OTFceDkwXHgzNlx4MDFceDU2XHgxNVx4MDBc eDJjXHg3NFx4YTJceDk3XHhmN1x4MTVceGExIgotKyAgICAgICAgIlx4NDlceGRmXHgzMlx4MzVc eGQyXHhkZFx4MGNceDkxXHhhNlx4ZjhceGU3XHhiZVx4ODFceDM2XHg5YiIKLSsgICAgICAgICJc eDAzXHhkY1x4NmJceDNiXHhkOFx4NWRceDc5XHg1N1x4ZTBceGU2XHg0Zlx4NDlceGRmXHg0Y1x4 NWMiCi0rICAgICAgICAiXHgwZVx4ZTVceDIxXHg0MVx4OTVceGZkXHhhZFx4ZmZceDlhXHgzZVx4 YTBceGY5XHgwZlx4NTlceDllIgotKyAgICAgICAgIlx4NmFceGE3XHg3Ylx4NzFceGE3XHgyNFx4 OWFceDM2XHg1Mlx4YWVceDk3XHgyMFx4YzFceDVlXHg3OCIKLSsgICAgICAgICJceGQ5XHg0N1x4 OGJceDFlXHg2N1x4ZjJceGFmXHg5OFx4ZTZceDJkXHhlZlx4MTBceGQ3XHhmMVx4YWIiCi0rICAg ICAgICAiXHg0OVx4ZWVceGU1XHg0Ylx4N2VceGFlXHgxZlx4MWRceDYxIjsKLSAKLSAgICAgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaXFtcFtdID0KLS0gICAgICAgICJceDAwXHhCMFx4NkNc eDRGXHhEQVx4QkJceDYzXHgwMVx4MTlceDhEXHgyNlx4NUJceERCXHhBRVx4OTRceDIzIgotLSAg ICAgICAgIlx4QjNceDgwXHhGMlx4NzFceEY3XHgzNFx4NTNceDg4XHg1MFx4OTNceDA3XHg3Rlx4 Q0RceDM5XHhFMlx4MTEiCi0tICAgICAgICAiXHg5Rlx4QzlceDg2XHgzMlx4MTVceDRGXHg1OFx4 ODNceEIxXHg2N1x4QTlceDY3XHhCRlx4NDBceDJCXHg0RSIKLS0gICAgICAgICJceDlFXHgyRVx4 MEZceDk2XHg1Nlx4RTZceDk4XHhFQVx4MzZceDY2XHhFRFx4RkJceDI1XHg3OVx4ODBceDM5Igot LSAgICAgICAgIlx4RjciOwotKyAgICAgICAgIlx4MjNceDk2XHhjMVx4OTFceDE3XHg1ZVx4MGFc eDgzXHhkMlx4ZGNceDdiXHg2OVx4YjJceDU5XHgxZCIKLSsgICAgICAgICJceDMzXHg1OFx4NTJc eDNmXHgxOFx4YzdceDA5XHg1MFx4MWNceGI5XHhhMVx4YmJceDRjXHhhMlx4MzgiCi0rICAgICAg ICAiXHg0MFx4NGNceDlhXHg4ZVx4ZmVceDljXHg5MFx4OTJceGQwXHg3MVx4OWZceDg5XHg5OVx4 NTBceDkxIgotKyAgICAgICAgIlx4MWZceDM0XHg4Ylx4NzRceDUzXHgxMVx4MTFceDRhXHg3MFx4 ZTJceGY3XHgzMFx4ZDhceDhjXHg4MCIKLSsgICAgICAgICJceGUxXHhjY1x4OWZceGYxXHg2M1x4 MTdceDFhXHg3ZFx4NjdceDI5XHg0Y1x4Y2JceDRlXHg3NFx4N2IiCi0rICAgICAgICAiXHhlMFx4 M2VceDllXHgyZlx4ZjRceDY3XHg4Zlx4ZWNceGI5XHg1Y1x4MDBceDFlXHg3ZVx4YTJceDdiIgot KyAgICAgICAgIlx4OTJceGM5XHg2Zlx4NGNceGU0XHgwZVx4ZjlceDQ4XHg2M1x4Y2RceDUwXHgy Mlx4NWRceGJmXHhiNiIKLSsgICAgICAgICJceDlkXHgwMVx4MzNceDZhXHhmNFx4NTBceGJlXHg4 Nlx4OThceDRmXHhjYVx4M2ZceDNhXHhmYVx4Y2YiCi0rICAgICAgICAiXHgwN1x4NDBceGM0XHhh YVx4YWRceGFlXHhiZVx4YmYiOwotIAotICAgICBrZXktPm4gPSBCTl9iaW4yYm4obiwgc2l6ZW9m KG4pIC0gMSwga2V5LT5uKTsKLSAgICAgaWYgKGNvcnJ1cHRfcnNhKQotLSAgICAgICAgQk5fc2V0 X2JpdChrZXktPm4sIDEwMjQpOwotKyAgICAgICAgQk5fc2V0X2JpdChrZXktPm4sIDIwNDgpOwot ICAgICBrZXktPmUgPSBCTl9iaW4yYm4oZSwgc2l6ZW9mKGUpIC0gMSwga2V5LT5lKTsKLSAgICAg a2V5LT5kID0gQk5fYmluMmJuKGQsIHNpemVvZihkKSAtIDEsIGtleS0+ZCk7Ci0gICAgIGtleS0+ cCA9IEJOX2JpbjJibihwLCBzaXplb2YocCkgLSAxLCBrZXktPnApOwotQEAgLTE0NSwyMDAgKzE4 NCwyOTIgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X3Ric1tdID0KLSAgICAgIk9w ZW5TU0wgRklQUyAxNDAtMiBQdWJsaWMgS2V5IFJTQSBLQVQiOwotIAotIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGthdF9SU0FfUFNTX1NIQTFbXSA9IHsKLS0gICAgMHgyRCwgMHhBRiwgMHg2 RSwgMHhDMiwgMHg5OCwgMHhGQiwgMHg4QSwgMHhBMSwgMHhCOSwgMHg0NiwgMHhEQSwgMHgwRiwK LS0gICAgMHgwMSwgMHgxRSwgMHgzNywgMHg5MywgMHhDMiwgMHg1NSwgMHgyNywgMHhFNCwgMHgx RCwgMHhEMiwgMHg5MCwgMHhCQiwKLS0gICAgMHhGNCwgMHhCRiwgMHg0QSwgMHg3NCwgMHgzOSwg MHg1MSwgMHhCQiwgMHhFOCwgMHgwQywgMHhCNywgMHhGOCwgMHhEMywKLS0gICAgMHhEMSwgMHhE RiwgMHhFNywgMHhCRSwgMHg4MCwgMHgwNSwgMHhDMywgMHhCNSwgMHhDNywgMHg4MywgMHhENSwg MHg0QywKLS0gICAgMHg3RiwgMHg0OSwgMHhGQiwgMHgzRiwgMHgyOSwgMHg5QiwgMHhFMSwgMHgx MiwgMHg1MSwgMHg2MCwgMHhEMCwgMHhBNywKLS0gICAgMHgwRCwgMHhBOSwgMHgyOCwgMHg1Niwg MHg3MywgMHhEOSwgMHgwNywgMHhFMywgMHg1RSwgMHgzRiwgMHg5QiwgMHhGNSwKLS0gICAgMHhC NiwgMHhGMywgMHhGMiwgMHg1RSwgMHg3NCwgMHhDOSwgMHg4MywgMHg4MSwgMHg0NywgMHhGMCwg MHhDNSwgMHg0NSwKLS0gICAgMHgwQSwgMHhFOSwgMHg4RSwgMHgzOCwgMHhENywgMHgxOCwgMHhD NiwgMHgyQSwgMHgwRiwgMHhGOCwgMHhCNywgMHgzMSwKLS0gICAgMHhENiwgMHg1NSwgMHhFNCwg MHg2NiwgMHg3OCwgMHg4MSwgMHhENCwgMHhFNiwgMHhEQiwgMHg5RiwgMHhCQSwgMHhFOCwKLS0g ICAgMHgyMywgMHhCNSwgMHg3RiwgMHhEQywgMHgwOCwgMHhFQSwgMHhENSwgMHgyNiwgMHgxRSwg MHgyMCwgMHgyNSwgMHg4NCwKLS0gICAgMHgyNiwgMHhDNiwgMHg3OSwgMHhDOSwgMHg5QiwgMHgz RCwgMHg3RSwgMHhBOQotKyAgICAweEMyLCAweDgwLCAweDgyLCAweDU2LCAweEQ4LCAweEE3LCAw eEIyLCAweDlDLCAweEY1LCAweEQ2LCAweDNDLCAweEUzLAotKyAgICAweEJGLCAweEU5LCAweDNB LCAweDUzLCAweDQwLCAweEFFLCAweEYyLCAweEE5LCAweDZBLCAweDM5LCAweDQ5LCAweDVCLAot KyAgICAweDA1LCAweDdGLCAweDY3LCAweDM4LCAweDJFLCAweDFELCAweEUxLCAweDkzLCAweDIy LCAweDY1LCAweDc5LCAweDg0LAotKyAgICAweDY4LCAweEZBLCAweEQ4LCAweEFGLCAweEExLCAw eDk4LCAweDYxLCAweDZGLCAweDQ0LCAweDI3LCAweEE2LCAweDhCLAotKyAgICAweENGLCAweDBF LCAweDEzLCAweEE5LCAweENFLCAweEQ3LCAweDZDLCAweEQyLCAweDM4LCAweEI1LCAweDE2LCAw eEI5LAotKyAgICAweDY2LCAweDk0LCAweDQ4LCAweERFLCAweDlFLCAweDE5LCAweDNELCAweDZG LCAweEIzLCAweEExLCAweDlBLCAweDE5LAotKyAgICAweERGLCAweEZCLCAweEFCLCAweEE1LCAw eDlGLCAweDM4LCAweERBLCAweEM5LCAweDIxLCAweDhGLCAweENFLCAweDk4LAotKyAgICAweDAx LCAweDNBLCAweEM4LCAweEUwLCAweERGLCAweERBLCAweEZDLCAweEYwLCAweEE2LCAweDg2LCAw eDI5LCAweEI1LAotKyAgICAweDdGLCAweDYxLCAweEZCLCAweEJBLCAweEM1LCAweDQ5LCAweEIy LCAweDdDLCAweDZBLCAweDI2LCAweDgyLCAweEM0LAotKyAgICAweDhGLCAweEFBLCAweDVCLCAw eDEwLCAweEQ1LCAweEVFLCAweEEwLCAweDU1LCAweDQyLCAweEVGLCAweDMyLCAweDVBLAotKyAg ICAweDNGLCAweDU1LCAweEIzLCAweDJDLCAweDIyLCAweEU5LCAweDY1LCAweERBLCAweDhELCAw eDBBLCAweEI5LCAweDcwLAotKyAgICAweDQzLCAweENDLCAweDNGLCAweDY0LCAweDlDLCAweEI1 LCAweDY1LCAweDQ5LCAweEJELCAweDdGLCAweDM1LCAweEMxLAotKyAgICAweDIwLCAweDg1LCAw eDI0LCAweEZFLCAweEFBLCAweDZCLCAweDM3LCAweDA0LCAweEExLCAweDBFLCAweDlELCAweDVD LAotKyAgICAweEJBLCAweDdGLCAweDE0LCAweDY5LCAweEM1LCAweDkzLCAweEIyLCAweDMzLCAw eEMyLCAweEMwLCAweEM3LCAweERGLAotKyAgICAweDdFLCAweDlFLCAweEE0LCAweEIwLCAweEEw LCAweDY0LCAweEQyLCAweEFDLCAweEZDLCAweEZELCAweEZELCAweDk5LAotKyAgICAweDhGLCAw eDZBLCAweDQwLCAweDI2LCAweEMxLCAweDJFLCAweDRFLCAweDhCLCAweDMzLCAweEJFLCAweEYx LCAweDQ1LAotKyAgICAweDU5LCAweDhGLCAweDMzLCAweDQwLCAweDFELCAweDJBLCAweEQyLCAw eEY3LCAweDUwLCAweDgzLCAweDg5LCAweENGLAotKyAgICAweDk0LCAweEM2LCAweEY4LCAweDM2 LCAweEYwLCAweDg0LCAweDBCLCAweDg1LCAweEE1LCAweDAyLCAweEE5LCAweDBGLAotKyAgICAw eDQxLCAweDdBLCAweDc3LCAweEEzLCAweDJGLCAweDQ3LCAweDFFLCAweDFELCAweEVDLCAweEU2 LCAweEQzLCAweDAxLAotKyAgICAweDFFLCAweDZGLCAweDdBLCAweDk2LCAweDUwLCAweDM3LCAw eDM3LCAweDRCLCAweDI3LCAweDUyLCAweDBCLCAweERDLAotKyAgICAweERCLCAweEM3LCAweEE5 LCAweDMxLCAweEIyLCAweDQwLCAweEVFLCAweDYwLCAweDQxLCAweDI2LCAweDZBLCAweDA1LAot KyAgICAweENFLCAweDA4LCAweDFELCAweDg5Ci0gfTsKLSAKLSBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBrYXRfUlNBX1BTU19TSEEyMjRbXSA9IHsKLS0gICAgMHgzOSwgMHg0QSwgMHg2QSwg MHgyMCwgMHhCQywgMHhFOSwgMHgzMywgMHhFRCwgMHhFRiwgMHhDNSwgMHg1OCwgMHhBNywKLS0g ICAgMHhGRSwgMHg4MSwgMHhDNCwgMHgzNiwgMHg1MCwgMHg5QSwgMHgyQywgMHg4MiwgMHg5OCwg MHgwOCwgMHg5NSwgMHhGQSwKLS0gICAgMHhCMSwgMHg5RSwgMHhEMiwgMHg1NSwgMHg2MSwgMHg4 NywgMHgyMSwgMHg1OSwgMHg4NywgMHg3QiwgMHgxRiwgMHg1NywKLS0gICAgMHgzMCwgMHg5RCwg MHgwRCwgMHg0QSwgMHgwNiwgMHhFQiwgMHg1MiwgMHgzNywgMHg1NSwgMHg1NCwgMHgxQywgMHg4 OSwKLS0gICAgMHg4MywgMHg3NSwgMHg1OSwgMHg2NSwgMHg2NCwgMHg5MCwgMHgyRSwgMHgxNiwg MHhDQywgMHg4NiwgMHgwNSwgMHhFRSwKLS0gICAgMHhCMSwgMHhFNiwgMHg3QiwgMHhCQSwgMHgx NiwgMHg3NSwgMHgwRCwgMHgwQywgMHg2NCwgMHgwQiwgMHhBQiwgMHgyMiwKLS0gICAgMHgxNSwg MHg3OCwgMHg2QiwgMHg2RiwgMHhBNCwgMHhGQiwgMHg3NywgMHg0MCwgMHg2NCwgMHg2MiwgMHhE MSwgMHhCNSwKLS0gICAgMHgzNywgMHgxRSwgMHhFMCwgMHgzRCwgMHhBOCwgMHhGOSwgMHhEMiwg MHhCRCwgMHhBQSwgMHgzOCwgMHgyNCwgMHg0OSwKLS0gICAgMHg1OCwgMHhEMiwgMHg3NCwgMHg4 NSwgMHhGNCwgMHhCNSwgMHg5MywgMHg4RSwgMHhGNSwgMHgwMywgMHhFQSwgMHgyRCwKLS0gICAg MHhDOCwgMHg1MiwgMHhGQSwgMHhDRiwgMHg3RSwgMHgzNSwgMHhCMCwgMHg2QSwgMHhBRiwgMHg5 NSwgMHhDMCwgMHgwMCwKLS0gICAgMHg1NCwgMHg3NiwgMHgzRCwgMHgwQywgMHg5QywgMHhCMiwg MHhFRSwgMHhDMAotKyAgICAweEI0LCAweDAxLCAweDkzLCAweDE2LCAweDA1LCAweEY2LCAweEVC LCAweEUyLCAweEE0LCAweEVCLCAweDQ4LCAweEFBLAotKyAgICAweDAwLCAweEY0LCAweEExLCAw eDk5LCAweDBBLCAweEI0LCAweEI2LCAweDYzLCAweEU5LCAweDY4LCAweENBLCAweEIzLAotKyAg ICAweDEzLCAweEQ3LCAweDY2LCAweDZBLCAweENELCAweENCLCAweDMzLCAweDlGLCAweEU1LCAw eDg0LCAweEUyLCAweEMzLAotKyAgICAweDBCLCAweDUzLCAweEU1LCAweDhCLCAweDk2LCAweDRC LCAweERCLCAweDJELCAweDgwLCAweEE0LCAweDFELCAweEUzLAotKyAgICAweDgxLCAweERDLCAw eDUyLCAweDk5LCAweEJBLCAweDlCLCAweDZBLCAweDlELCAweDQ4LCAweDFGLCAweDczLCAweEY3 LAotKyAgICAweEFDLCAweDA5LCAweDEzLCAweEExLCAweDE2LCAweDJDLCAweDYwLCAweEZCLCAw eEJDLCAweDI1LCAweEY3LCAweDUzLAotKyAgICAweEQxLCAweDA0LCAweDVBLCAweDNGLCAweDk1 LCAweDA5LCAweDVFLCAweEU1LCAweEEyLCAweDdELCAweEZDLCAweDJBLAotKyAgICAweDUxLCAw eDFELCAweDIxLCAweENFLCAweDJCLCAweDRFLCAweDFCLCAweEI4LCAweENCLCAweERELCAweDI0 LCAweEVFLAotKyAgICAweDk5LCAweDFELCAweDM3LCAweERDLCAweEVELCAweDVGLCAweDJGLCAw eDQ4LCAweDVFLCAweDMzLCAweDk0LCAweDA2LAotKyAgICAweDE5LCAweENELCAweDVBLCAweDI2 LCAweDg1LCAweDc3LCAweDlELCAweEFGLCAweDg2LCAweDk3LCAweEM5LCAweDA4LAotKyAgICAw eEQ1LCAweDgxLCAweDBFLCAweEI4LCAweDlGLCAweEI2LCAweEFGLCAweDIwLCAweDcyLCAweERD LCAweDEzLCAweDRELAotKyAgICAweDdBLCAweEU0LCAweDVDLCAweDgxLCAweERFLCAweEMwLCAw eDNELCAweDE5LCAweDlDLCAweDMzLCAweDExLCAweDA3LAotKyAgICAweEQ1LCAweEE5LCAweDUx LCAweDY3LCAweENELCAweEZELCAweDM3LCAweDYxLCAweDE0LCAweDlGLCAweEU3LCAweDcwLAot KyAgICAweDE4LCAweDMyLCAweEMzLCAweDM0LCAweDU0LCAweDBELCAweDRGLCAweEI0LCAweEFF LCAweDlGLCAweEVDLCAweDY0LAotKyAgICAweEQ4LCAweEIyLCAweDE2LCAweEE0LCAweEIyLCAw eDk5LCAweDkyLCAweENCLCAweDdGLCAweDFGLCAweDA2LCAweDE3LAotKyAgICAweDVGLCAweEEx LCAweDA3LCAweDY4LCAweEFFLCAweEE3LCAweDJELCAweDAzLCAweDkxLCAweDJBLCAweDlELCAw eDY5LAotKyAgICAweEMyLCAweDlELCAweDkwLCAweEY3LCAweEY5LCAweDY2LCAweDVELCAweDEz LCAweEI3LCAweDdGLCAweEQzLCAweDk3LAotKyAgICAweDQ1LCAweDk3LCAweDQzLCAweEQ4LCAw eENFLCAweDNDLCAweEYyLCAweDk4LCAweDk4LCAweERELCAweEUyLCAweDJELAotKyAgICAweENG LCAweEExLCAweEM0LCAweDI1LCAweDQ2LCAweDJFLCAweEQyLCAweEU1LCAweDVGLCAweEM2LCAw eDAxLCAweEM1LAotKyAgICAweDRGLCAweDQyLCAweDJCLCAweERFLCAweDBGLCAweEVBLCAweDRB LCAweDRGLCAweEMzLCAweDVCLCAweERGLCAweDlCLAotKyAgICAweDVELCAweDMwLCAweDE4LCAw eDkzLCAweEQwLCAweERFLCAweEM1LCAweDA5LCAweEFBLCAweDU3LCAweDU3LCAweEJELAotKyAg ICAweDJELCAweDg0LCAweDAzLCAweEI3Ci0gfTsKLSAKLSBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBrYXRfUlNBX1BTU19TSEEyNTZbXSA9IHsKLS0gICAgMHg2RCwgMHgzRCwgMHhCRSwgMHg4 RiwgMHg2MCwgMHg2RCwgMHgyNSwgMHgxNCwgMHhGMCwgMHgzMSwgMHhFMywgMHg4OSwKLS0gICAg MHgwMCwgMHg5NywgMHhGQSwgMHg5OSwgMHg3MSwgMHgyOCwgMHhFNSwgMHgxMCwgMHgyNSwgMHg5 QSwgMHhGMywgMHg4RiwKLS0gICAgMHg3QiwgMHhDNSwgMHhBOCwgMHg0QSwgMHg3NCwgMHg1MSwg MHgzNiwgMHhFMiwgMHg4RCwgMHg3RCwgMHg3MywgMHgyOCwKLS0gICAgMHhDMSwgMHg3NywgMHhD NiwgMHgyNywgMHg5NywgMHgwMCwgMHg4QiwgMHgwMCwgMHhBMywgMHg5NiwgMHg3MywgMHg0RSwK LS0gICAgMHg3RCwgMHgyRSwgMHgyQywgMHgzNCwgMHg2OCwgMHg4QywgMHg4RSwgMHhERiwgMHg5 RCwgMHg0OSwgMHg0NywgMHgwNSwKLS0gICAgMHhBQiwgMHhGNSwgMHgwMSwgMHhENiwgMHg4MSwg MHg0NywgMHg3MCwgMHhGNSwgMHgxRCwgMHg2RCwgMHgyNiwgMHhCQSwKLS0gICAgMHgyRiwgMHg3 QSwgMHg1NCwgMHg1MywgMHg0RSwgMHhFRCwgMHg3MSwgMHhEOSwgMHg1QSwgMHhGMywgMHhEQSwg MHhCNiwKLS0gICAgMHgwQiwgMHg0NywgMHgzNCwgMHhBRiwgMHg5MCwgMHhEQywgMHhDOCwgMHhE OSwgMHg2RiwgMHg1NiwgMHhDRCwgMHg5RiwKLS0gICAgMHgyMSwgMHhCNywgMHg3RSwgMHhBRCwg MHg3QywgMHgyRiwgMHg3NSwgMHg1MCwgMHg0NywgMHgxMiwgMHhFNCwgMHg2RCwKLS0gICAgMHg1 RiwgMHhCNywgMHgwMSwgMHhERiwgMHhDMywgMHgxMSwgMHg2QywgMHhBOSwgMHg5RSwgMHg0OSwg MHhCOSwgMHhGNiwKLS0gICAgMHg3MiwgMHhGNCwgMHhGNiwgMHhFRiwgMHg4OCwgMHgxRSwgMHgy RCwgMHgxQwotKyAgICAweDM4LCAweERBLCAweDk5LCAweDUxLCAweDI2LCAweDM4LCAweEM2LCAw eDdGLCAweEM0LCAweDgxLCAweDU3LCAweDE5LAotKyAgICAweDM1LCAweEM2LCAweEY2LCAweDFF LCAweDkwLCAweDQ3LCAweDIwLCAweDU1LCAweDQ3LCAweDU2LCAweDI2LCAweEU5LAotKyAgICAw eEYyLCAweEE4LCAweDM5LCAweDZDLCAweEQ1LCAweENELCAweENCLCAweDU1LCAweEZDLCAweDBD LCAweEM1LCAweENCLAotKyAgICAweEY3LCAweDQwLCAweDE3LCAweDNCLCAweENGLCAweEU0LCAw eDA1LCAweDAzLCAweDNCLCAweEEwLCAweEIyLCAweEM5LAotKyAgICAweDBELCAweDVFLCAweDQ4 LCAweDNBLCAweEU5LCAweEFELCAweDI4LCAweDcxLCAweDdELCAweDhGLCAweDg5LCAweDE2LAot KyAgICAweDU5LCAweDkzLCAweDM1LCAweERDLCAweDRELCAweDdCLCAweERGLCAweDg0LCAweEU0 LCAweDY4LCAweEFBLCAweDMzLAotKyAgICAweEFBLCAweERDLCAweDY2LCAweDUwLCAweEM4LCAw eEE5LCAweDMyLCAweDEyLCAweERDLCAweEM2LCAweDkwLCAweDQ5LAotKyAgICAweDBCLCAweDc1 LCAweEZGLCAweDlCLCAweDk1LCAweDAwLCAweDlBLCAweDkwLCAweEUwLCAweEQ0LCAweDBFLCAw eDY3LAotKyAgICAweEFCLCAweDNDLCAweDQ3LCAweDM2LCAweEM1LCAweDJFLCAweDFDLCAweDQ2 LCAweEYwLCAweDJELCAweEQzLCAweDhCLAotKyAgICAweDQyLCAweDA4LCAweERFLCAweDBELCAw eEI2LCAweDJDLCAweDg2LCAweEIwLCAweDM1LCAweDcxLCAweDE4LCAweDZCLAotKyAgICAweDg5 LCAweDY3LCAweEMwLCAweDA1LCAweEFELCAweEY0LCAweDFELCAweDYyLCAweDRFLCAweDc1LCAw eEVDLCAweEQ2LAotKyAgICAweEMyLCAweERCLCAweDA3LCAweEIwLCAweEI2LCAweDhELCAweDE1 LCAweEFELCAweENELCAweEJGLCAweEY1LCAweDYwLAotKyAgICAweDc2LCAweEFFLCAweDQ4LCAw eEI4LCAweDc3LCAweDdGLCAweEM1LCAweDAxLCAweEQ5LCAweDI5LCAweEJCLCAweEQ2LAotKyAg ICAweDE3LCAweEEyLCAweDIwLCAweDVBLCAweEMwLCAweDRBLCAweDNCLCAweDM0LCAweEM4LCAw eEI5LCAweDM5LCAweENGLAotKyAgICAweDA2LCAweDg5LCAweDk1LCAweDZGLCAweEM3LCAweENB LCAweEM0LCAweEU0LCAweDQzLCAweERGLCAweDVBLCAweDIzLAotKyAgICAweEUyLCAweDg5LCAw eEEzLCAweDM4LCAweDc4LCAweDMxLCAweDM4LCAweEM2LCAweEE0LCAweDZGLCAweDVGLCAweDcz LAotKyAgICAweDVBLCAweEU1LCAweDlFLCAweDA5LCAweEU3LCAweDZGLCAweEQ0LCAweEY4LCAw eDNFLCAweEI3LCAweEIwLCAweDU2LAotKyAgICAweDlBLCAweEYzLCAweDY1LCAweEYwLCAweEMy LCAweEE2LCAweDhBLCAweDA4LCAweEJBLCAweDQ0LCAweEFDLCAweDk3LAotKyAgICAweERFLCAw eEI0LCAweDE2LCAweDgzLCAweERGLCAweEUzLCAweEVFLCAweDcxLCAweEZBLCAweEY5LCAweDUx LCAweDUwLAotKyAgICAweDE0LCAweERDLCAweEZELCAweDZBLCAweDgyLCAweDIwLCAweDY4LCAw eDY0LCAweDdELCAweDRFLCAweDgyLCAweDY4LAotKyAgICAweEQ3LCAweDQ1LCAweEZBLCAweDZB LCAweEU0LCAweEU1LCAweDI5LCAweDNBLCAweDcwLCAweEZCLCAweEU0LCAweDYyLAotKyAgICAw eDJCLCAweDMxLCAweEI5LCAweDdECi0gfTsKLSAKLSBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBrYXRfUlNBX1BTU19TSEEzODRbXSA9IHsKLS0gICAgMHg0MCwgMHhGQiwgMHhBMSwgMHgyMSwg MHhGNCwgMHhCMiwgMHg0MCwgMHg5QSwgMHhCNCwgMHgzMSwgMHhBOCwgMHhGMiwKLS0gICAgMHhF QywgMHgxQywgMHhDNCwgMHhDOCwgMHg3QywgMHgyMiwgMHg2NSwgMHg5QywgMHg1NywgMHg0NSwg MHhDRCwgMHg1RSwKLS0gICAgMHg4NiwgMHgwMCwgMHhGNywgMHgyNSwgMHg3OCwgMHhERSwgMHhE QywgMHg3QSwgMHg3MSwgMHg0NCwgMHg5QSwgMHhDRCwKLS0gICAgMHhBQSwgMHgyNSwgMHhGNCwg MHhCMiwgMHhGQywgMHhGMCwgMHg3NSwgMHhEOSwgMHgyRiwgMHg3OCwgMHgyMywgMHg3RiwKLS0g ICAgMHg2RiwgMHgwMiwgMHhFRiwgMHhDMSwgMHhBRiwgMHhBNiwgMHgyOCwgMHgxNiwgMHgzMSwg MHhEQywgMHg0MiwgMHg2QywKLS0gICAgMHhCMiwgMHg0NCwgMHhFNSwgMHg0RCwgMHg2NiwgMHhB MiwgMHhFNiwgMHg3MSwgMHhGMywgMHhBQywgMHg0RiwgMHhGQiwKLS0gICAgMHg5MSwgMHhDQSwg MHhGNSwgMHg3MCwgMHhFRiwgMHg2QiwgMHg5RCwgMHhBNCwgMHhFRiwgMHhEOSwgMHgzRCwgMHgy RiwKLS0gICAgMHgzQSwgMHhCRSwgMHg4OSwgMHgzOCwgMHg1OSwgMHgwMSwgMHhCQSwgMHhEQSwg MHgzMiwgMHhBRCwgMHg0MiwgMHg4OSwKLS0gICAgMHg5OCwgMHg4QiwgMHgzOSwgMHg0NCwgMHhG MCwgMHhGQywgMHgzOCwgMHhBQywgMHg4NywgMHgxRiwgMHhDQSwgMHg2RiwKLS0gICAgMHg0OCwg MHhGNiwgMHhBRSwgMHhENywgMHg0NSwgMHhFRSwgMHhBRSwgMHg4OCwgMHgwRSwgMHg2MCwgMHhG NCwgMHg1NSwKLS0gICAgMHg0OCwgMHg0NCwgMHhFRSwgMHgxRiwgMHg5MCwgMHgxOCwgMHg0Qiwg MHhGMQotKyAgICAweDk5LCAweDAyLCAweEM5LCAweDFFLCAweDMxLCAweDgyLCAweEI0LCAweEU2 LCAweDFCLCAweDMyLCAweENFLCAweDVELAotKyAgICAweDQxLCAweDFELCAweDAwLCAweDJGLCAw eDA0LCAweDhCLCAweEJELCAweDM3LCAweDc5LCAweENGLCAweDc3LCAweDAzLAotKyAgICAweDA1 LCAweDZBLCAweDIxLCAweEM3LCAweDhELCAweDI0LCAweDYwLCAweDQ5LCAweDM5LCAweDU4LCAw eEM1LCAweDI3LAotKyAgICAweDhGLCAweEM1LCAweDk3LCAweDRBLCAweEIyLCAweEUxLCAweEQ0 LCAweDM2LCAweDU3LCAweEJELCAweDQzLCAweENDLAotKyAgICAweDdCLCAweENFLCAweEYyLCAw eEE1LCAweDMwLCAweEY4LCAweDcyLCAweDE0LCAweEJCLCAweEQwLCAweDlGLCAweEMxLAotKyAg ICAweDQ5LCAweEM4LCAweDFDLCAweEFGLCAweENELCAweDk1LCAweDc4LCAweDcyLCAweDI1LCAw eEY5LCAweDQ1LCAweEM2LAotKyAgICAweDVCLCAweDYyLCAweDVFLCAweDAxLCAweEQ3LCAweDQw LCAweDVFLCAweEM4LCAweENBLCAweDBBLCAweEYzLCAweEJBLAotKyAgICAweDA4LCAweDA3LCAw eDg4LCAweENBLCAweDQ5LCAweDM2LCAweDg0LCAweDdELCAweEY2LCAweEZDLCAweDVBLCAweERC LAotKyAgICAweEZDLCAweDUwLCAweEQzLCAweEVCLCAweDNELCAweDgzLCAweEIwLCAweEY1LCAw eDk0LCAweDVFLCAweDg4LCAweEMzLAotKyAgICAweDgyLCAweENELCAweDUzLCAweDQwLCAweDk2 LCAweDE4LCAweDZCLCAweDRBLCAweDZDLCAweDlDLCAweEZFLCAweEU1LAotKyAgICAweDNCLCAw eDc1LCAweEY5LCAweEVCLCAweEE1LCAweDc3LCAweDExLCAweEVGLCAweDg4LCAweDFDLCAweDI1 LCAweDcwLAotKyAgICAweDdELCAweDg4LCAweDVELCAweEMzLCAweENBLCAweEUxLCAweDQ5LCAw eDE0LCAweDkwLCAweEFELCAweEYyLCAweDVFLAotKyAgICAweDQ5LCAweEQ3LCAweDk5LCAweEE1 LCAweDdCLCAweDc3LCAweDNCLCAweDhFLCAweEI4LCAweERCLCAweEYxLCAweDRDLAotKyAgICAw eEQ2LCAweDlBLCAweERDLCAweEU1LCAweDdBLCAweDFDLCAweEUxLCAweENFLCAweDlELCAweEYx LCAweEYzLCAweEEwLAotKyAgICAweDBBLCAweDM1LCAweDUyLCAweDlELCAweEI5LCAweDQ2LCAw eDk0LCAweDgyLCAweDBGLCAweEY3LCAweEIyLCAweDYyLAotKyAgICAweDUxLCAweDcwLCAweDc1 LCAweEQyLCAweDM3LCAweDk2LCAweDY3LCAweDJGLCAweEQwLCAweDIyLCAweEQ4LCAweDA3LAot KyAgICAweDhELCAweDY5LCAweDlFLCAweDZELCAweDBCLCAweDQwLCAweDRGLCAweDcwLCAweEVD LCAweDBCLCAweENBLCAweDg4LAotKyAgICAweDgwLCAweDhELCAweDlBLCAweEY0LCAweEY5LCAw eDE4LCAweDUwLCAweDI3LCAweDA4LCAweEZBLCAweENDLCAweEM3LAotKyAgICAweDNGLCAweEU0 LCAweDg0LCAweDgzLCAweEExLCAweEI2LCAweDFELCAweDIzLCAweDM0LCAweEZFLCAweDQ4LCAw eEU1LAotKyAgICAweEUzLCAweEFFLCAweDRELCAweDk4LCAweEJDLCAweEE2LCAweDhBLCAweDlG LCAweEZELCAweDRELCAweERCLCAweDlELAotKyAgICAweEY3LCAweEVCLCAweDRFLCAweEI2LCAw eDZGLCAweDI1LCAweEVBLCAweDdBLCAweEU5LCAweDg1LCAweEIyLCAweEVGLAotKyAgICAweDkw LCAweEQyLCAweEE2LCAweDJCCi0gfTsKLSAKLSBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBr YXRfUlNBX1BTU19TSEE1MTJbXSA9IHsKLS0gICAgMHgwNywgMHgxRSwgMHhEOCwgMHhENSwgMHgw NSwgMHhFOCwgMHhFNiwgMHhFNiwgMHg1NywgMHhBRSwgMHg2MywgMHg4QywKLS0gICAgMHhDNiwg MHg4MywgMHhCNywgMHhBMCwgMHg1OSwgMHhCQiwgMHhGMiwgMHhDNiwgMHg4RiwgMHgxMiwgMHg1 MywgMHg5QSwKLS0gICAgMHg5QiwgMHg1NCwgMHg5RSwgMHhCMywgMHhDMSwgMHgxRCwgMHgyMywg MHg0RCwgMHg1MSwgMHhFRCwgMHg5RSwgMHhERCwKLS0gICAgMHg0QiwgMHhGMywgMHg0NiwgMHg5 QiwgMHg2QiwgMHhGNiwgMHg3QywgMHgyNCwgMHg2MCwgMHg3OSwgMHgyMywgMHgzOSwKLS0gICAg MHgwMSwgMHgxQywgMHg1MSwgMHhDQiwgMHhEOCwgMHhFOSwgMHg5QSwgMHgwMSwgMHg2NywgMHg1 RiwgMHhGRSwgMHhENywKLS0gICAgMHg3QywgMHhFMywgMHg3RiwgMHhFRCwgMHhEQiwgMHg4Nywg MHhCQiwgMHhGMCwgMHgzRCwgMHg3OCwgMHg1NSwgMHg2MSwKLS0gICAgMHg1NywgMHhFMywgMHgw RiwgMHhFMywgMHhEMiwgMHg5RCwgMHgwQywgMHgyQSwgMHgyMCwgMHhCMCwgMHg4NSwgMHgxMywK LS0gICAgMHhDNSwgMHg0NywgMHgzNCwgMHgwRCwgMHgzMiwgMHgxNSwgMHhDOCwgMHhBRSwgMHg5 QSwgMHg2QSwgMHgzOSwgMHg2MywKLS0gICAgMHgyRCwgMHg2MCwgMHhGNSwgMHg0QywgMHhERiwg MHg4QSwgMHg0OCwgMHg0QiwgMHhCRiwgMHhGNCwgMHhBOCwgMHhGRSwKLS0gICAgMHg3NiwgMHhG MiwgMHgzMiwgMHgxQiwgMHg5QywgMHg3QywgMHhDQSwgMHhGRSwgMHg3RiwgMHg4MCwgMHhDMiwg MHg4OCwKLS0gICAgMHg1QywgMHg5NywgMHg3MCwgMHhCNCwgMHgyNiwgMHhDOSwgMHgxNCwgMHg4 QgotKyAgICAweDNGLCAweDgzLCAweDQzLCAweDc4LCAweDI1LCAweEJFLCAweDgxLCAweEIyLCAw eDZFLCAweDc4LCAweDExLCAweDMyLAotKyAgICAweEQwLCAweDg4LCAweDA1LCAweDUzLCAweDk1 LCAweEVELCAweDgxLCAweDEyLCAweENFLCAweDUwLCAweEQ5LCAweDA2LAotKyAgICAweDQyLCAw eDg5LCAweEEwLCAweDU1LCAweDdBLCAweDA1LCAweDEzLCAweDk0LCAweDM1LCAweDlCLCAweENB LCAweDVELAotKyAgICAweENCLCAweEIyLCAweDMyLCAweEUxLCAweDA0LCAweDk5LCAweEVDLCAw eEU3LCAweEE2LCAweDY5LCAweDRELCAweDJCLAotKyAgICAweEMxLCAweDU3LCAweDEzLCAweDQ4 LCAweDBELCAweDZCLCAweDRELCAweDgzLCAweDI4LCAweDA2LCAweDc5LCAweDlELAotKyAgICAw eEI0LCAweDcwLCAweENFLCAweEMwLCAweEZDLCAweDNCLCAweDY5LCAweEIzLCAweDkxLCAweDU0 LCAweEE5LCAweDQ0LAotKyAgICAweDJFLCAweERBLCAweDRBLCAweEM1LCAweEMyLCAweDk5LCAw eEYwLCAweERFLCAweENBLCAweDc3LCAweDk5LCAweDZCLAotKyAgICAweDBDLCAweDc5LCAweEU1 LCAweDI5LCAweDc0LCAweDgzLCAweDY5LCAweEVBLCAweEI4LCAweDcyLCAweDMwLCAweDNELAot KyAgICAweDdBLCAweDMwLCAweEUxLCAweDAzLCAweDdCLCAweDA5LCAweEU2LCAweDExLCAweEMw LCAweERDLCAweEZGLCAweEZELAotKyAgICAweEJELCAweEVDLCAweDlDLCAweENDLCAweDQ2LCAw eDdCLCAweDRDLCAweDRDLCAweDU5LCAweEJFLCAweDgyLCAweDdDLAotKyAgICAweEY1LCAweDYw LCAweDVBLCAweEMzLCAweEU4LCAweEE4LCAweDhBLCAweDM4LCAweDlFLCAweDAxLCAweDU3LCAw eEYxLAotKyAgICAweDc5LCAweDNBLCAweDdDLCAweEEzLCAweDlGLCAweDEyLCAweDFBLCAweDRG LCAweDJFLCAweEEyLCAweEU1LCAweDBBLAotKyAgICAweEFCLCAweEMwLCAweEY0LCAweEE1LCAw eEUzLCAweDVGLCAweDg5LCAweDFDLCAweDhGLCAweEE0LCAweDVFLCAweENFLAotKyAgICAweDBE LCAweDkxLCAweDA1LCAweDFCLCAweDE3LCAweDYyLCAweDQ4LCAweEZFLCAweEE1LCAweDRDLCAw eEVGLCAweDJELAotKyAgICAweDI4LCAweEYxLCAweDVFLCAweEU2LCAweEQxLCAweDMwLCAweDg5 LCAweDBBLCAweEFELCAweDE4LCAweEFGLCAweDZGLAotKyAgICAweDA0LCAweDA5LCAweDM2LCAw eDlBLCAweEZGLCAweENBLCAweEExLCAweEE3LCAweDA1LCAweDdGLCAweEQ0LCAweEJGLAotKyAg ICAweDNBLCAweEI1LCAweDQyLCAweDZELCAweEU5LCAweDA3LCAweDI5LCAweDY1LCAweDhCLCAw eEFELCAweDRELCAweDBGLAotKyAgICAweDIyLCAweEUxLCAweDU5LCAweDQzLCAweDY4LCAweDg3 LCAweEE4LCAweDhCLCAweEJDLCAweDY5LCAweEExLCAweDk0LAotKyAgICAweDIyLCAweDNFLCAw eDhBLCAweDQ5LCAweEU4LCAweEEzLCAweDZGLCAweEMyLCAweDkzLCAweDU4LCAweEU3LCAweEFF LAotKyAgICAweEM5LCAweDFGLCAweENGLCAweDYxLCAweDkzLCAweEZDLCAweEMxLCAweEY2LCAw eEYzLCAweDI3LCAweDdGLCAweDBBLAotKyAgICAweDkwLCAweEUwLCAweDY1LCAweDMyLCAweDU3 LCAweDQ3LCAweEUyLCAweEVELCAweDA4LCAweDU5LCAweEE2LCAweEYwLAotKyAgICAweDE3LCAw eDJDLCAweDEzLCAweEUwCi0gfTsKLSAKLSBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRf UlNBX1NIQTFbXSA9IHsKLS0gICAgMHg3MSwgMHhFRSwgMHgxQSwgMHhDMCwgMHhGRSwgMHgwMSwg MHg5MywgMHg1NCwgMHg3OSwgMHg1QywgMHhGMiwgMHg0QywKLS0gICAgMHg0QSwgMHhGRCwgMHgx QSwgMHgwNSwgMHg4RiwgMHg2NCwgMHhCMSwgMHg2RCwgMHg2MSwgMHgzMywgMHg4RCwgMHg5QiwK LS0gICAgMHhFNywgMHhGRCwgMHg2MCwgMHhBMywgMHg4MywgMHhCNSwgMHhBMywgMHg1MSwgMHg1 NSwgMHg3NywgMHg5MCwgMHhDRiwKLS0gICAgMHhEQywgMHgyMiwgMHgzNywgMHg4RSwgMHhEMCwg MHhFMSwgMHhBRSwgMHgwOSwgMHhFMywgMHgzRCwgMHgxRSwgMHhGOCwKLS0gICAgMHg4MCwgMHhE MSwgMHg4QiwgMHhDMiwgMHhFQywgMHgwQSwgMHhENywgMHg2QiwgMHg4OCwgMHg4QiwgMHg4Qiwg MHhBMSwKLS0gICAgMHgyMCwgMHgyMiwgMHhCRSwgMHg1OSwgMHg1QiwgMHhFMCwgMHgyMywgMHgy NCwgMHhBMSwgMHg0OSwgMHgzMCwgMHhCQSwKLS0gICAgMHhBOSwgMHg5RSwgMHhFOCwgMHhCMSwg MHg4QSwgMHg2MiwgMHgxNiwgMHhCRiwgMHg0RSwgMHhDQSwgMHgyRSwgMHg0RSwKLS0gICAgMHhC QywgMHgyOSwgMHhBOCwgMHg2NywgMHgxMywgMHhCNywgMHg5RiwgMHgxRCwgMHgwNCwgMHg0NCwg MHhFNSwgMHg1RiwKLS0gICAgMHgzNSwgMHgwNywgMHgxMSwgMHhCQywgMHhFRCwgMHgxOSwgMHgz NywgMHgyMSwgMHhDRiwgMHgyMywgMHg0OCwgMHgxRiwKLS0gICAgMHg3MiwgMHgwNSwgMHhERSwg MHhFNiwgMHhFOCwgMHg3RiwgMHgzMywgMHg4QSwgMHg3NiwgMHg0QiwgMHgyRiwgMHg5NSwKLS0g ICAgMHhERiwgMHhGMSwgMHg1RiwgMHg4NCwgMHg4MCwgMHhEOSwgMHg0NiwgMHhCNAotKyAgICAw eDNCLCAweDYwLCAweDRCLCAweEZDLCAweDU0LCAweDI4LCAweDIzLCAweEU2LCAweDJGLCAweDA1 LCAweDA0LCAweEJBLAotKyAgICAweDlELCAweEU0LCAweDNDLCAweEI4LCAweDVCLCAweDYwLCAw eDVDLCAweENELCAweDlELCAweEVBLCAweEMzLCAweDRDLAotKyAgICAweEMyLCAweDMzLCAweEU2 LCAweEM2LCAweDIxLCAweDQ4LCAweDc2LCAweEVDLCAweEIyLCAweEY1LCAweDExLCAweERFLAot KyAgICAweDQ0LCAweEI0LCAweEFGLCAweDE2LCAweDExLCAweEMzLCAweDE4LCAweDE2LCAweEIz LCAweDY5LCAweEJCLCAweDk0LAotKyAgICAweEVELCAweEU4LCAweEIzLCAweDlFLCAweEIxLCAw eDQzLCAweDhFLCAweENFLCAweEI0LCAweDM0LCAweDlCLCAweDA4LAotKyAgICAweDIyLCAweEFG LCAweDMxLCAweDczLCAweEI1LCAweEZBLCAweDExLCAweDdFLCAweDhGLCAweDEzLCAweDUyLCAw eEVDLAotKyAgICAweEM5LCAweDAzLCAweEVFLCAweDBELCAweDJCLCAweDkxLCAweDMyLCAweEYy LCAweDhFLCAweERGLCAweDAyLCAweEUwLAotKyAgICAweDBBLCAweDQ3LCAweEQyLCAweDBBLCAw eDUxLCAweDAwLCAweDFBLCAweDMwLCAweDZGLCAweDBDLCAweEIzLCAweDU0LAotKyAgICAweDY0 LCAweDIwLCAweDkwLCAweDBDLCAweDAxLCAweEJFLCAweEMwLCAweDQyLCAweDhDLCAweDVELCAw eDE4LCAweDZGLAotKyAgICAweDMyLCAweDc1LCAweDQ1LCAweDdCLCAweDFDLCAweDA0LCAweEEy LCAweDlGLCAweDg0LCAweEQ3LCAweEY1LCAweDNBLAotKyAgICAweDk1LCAweEQ0LCAweEU4LCAw eDhELCAweEVDLCAweDk5LCAweEVGLCAweDE4LCAweDVFLCAweDY0LCAweEQzLCAweEFGLAotKyAg ICAweEY4LCAweEQ0LCAweEZGLCAweDNDLCAweDg3LCAweEEwLCAweDNGLCAweEM3LCAweDIyLCAw eDA1LCAweEZELCAweEZELAotKyAgICAweDI5LCAweDhBLCAweDI4LCAweERBLCAweEE5LCAweDhB LCAweDhCLCAweDIzLCAweDYyLCAweDlELCAweDQyLCAweEI4LAotKyAgICAweDRBLCAweDc2LCAw eDBELCAweDlGLCAweDlBLCAweEUwLCAweEU2LCAweERELCAweEFELCAweDVFLCAweDVGLCAweEQ1 LAotKyAgICAweDMyLCAweEU5LCAweDRCLCAweDk3LCAweDdELCAweDYyLCAweDBBLCAweEIzLCAw eEJFLCAweEYyLCAweDhDLCAweDFGLAotKyAgICAweDJCLCAweDIyLCAweDA2LCAweDE1LCAweDMz LCAweDcxLCAweEVELCAweDlCLCAweEEwLCAweDgyLCAweENFLCAweEJGLAotKyAgICAweDNCLCAw eDA4LCAweDVGLCAweEE3LCAweDIwLCAweDk0LCAweDA5LCAweEVCLCAweDgyLCAweEE1LCAweDQx LCAweDYwLAotKyAgICAweEYxLCAweDA4LCAweEVCLCAweDhELCAweENDLCAweDhELCAweEM5LCAw eDUyLCAweDBBLCAweEFGLCAweEY0LCAweEY5LAotKyAgICAweDlGLCAweDgyLCAweEQ4LCAweDBC LCAweDc1LCAweDVFLCAweEU0LCAweEFGLCAweDY1LCAweDk2LCAweEFGLCAweEZDLAotKyAgICAw eDMzLCAweEJGLCAweDlGLCAweDNFLCAweEE0LCAweDdCLCAweDg2LCAweEM3LCAweEY3LCAweDQ3 LCAweEFCLCAweDM3LAotKyAgICAweDA1LCAweEQ2LCAweDBELCAweDMxLCAweDcyLCAweDhDLCAw eDgwLCAweDFFLCAweEE5LCAweDU0LCAweEZDLCAweERGLAotKyAgICAweDI3LCAweDkwLCAweEUy LCAweDAxCi0gfTsKLSAKLSBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1NIQTIy NFtdID0gewotLSAgICAweDYyLCAweEFBLCAweDc5LCAweEE5LCAweDE4LCAweDBFLCAweDVGLCAw eDhDLCAweEJCLCAweEI3LCAweDE1LCAweEY5LAotLSAgICAweDI1LCAweEJCLCAweEZBLCAweEQ0 LCAweDNBLCAweDM0LCAweEVELCAweDlFLCAweEEwLCAweEE5LCAweDE4LCAweDhELAotLSAgICAw eDVCLCAweDU1LCAweDlBLCAweDdFLCAweDFFLCAweDA4LCAweDA4LCAweDYwLCAweEM1LCAweDFB LCAweEM1LCAweDg5LAotLSAgICAweDA4LCAweEUyLCAweDFCLCAweEJELCAweDYyLCAweDUwLCAw eDE3LCAweDc2LCAweDMwLCAweDJDLCAweDlFLCAweENELAotLSAgICAweEE0LCAweDAyLCAweEFE LCAweEIxLCAweDZELCAweDQ0LCAweDZELCAweEQ1LCAweEM2LCAweDQ1LCAweDQxLCAweEU1LAot LSAgICAweEVFLCAweDFGLCAweDhELCAweDdFLCAweDA4LCAweDE2LCAweEE2LCAweEUxLCAweDVF LCAweDBCLCAweEE5LCAweENDLAotLSAgICAweERCLCAweDU5LCAweDU1LCAweDg3LCAweDA5LCAw eDI1LCAweDcwLCAweDg2LCAweDg0LCAweDAyLCAweEM2LCAweDNCLAotLSAgICAweDBCLCAweDQ0 LCAweDRDLCAweDQ2LCAweDk1LCAweEY0LCAweEY4LCAweDVBLCAweDkxLCAweDI4LCAweDNFLCAw eEIyLAotLSAgICAweDU4LCAweDJFLCAweDA2LCAweDQ1LCAweDQ5LCAweEUwLCAweDkyLCAweEUy LCAweEMwLCAweDY2LCAweEU2LCAweDM1LAotLSAgICAweEQ5LCAweDc5LCAweDdGLCAweDE3LCAw eDVFLCAweDAyLCAweDczLCAweDA0LCAweDc3LCAweDgyLCAweEU2LCAweERDLAotLSAgICAweDQw LCAweDIxLCAweDg5LCAweDhCLCAweDM3LCAweDNFLCAweDFFLCAweDhECi0rICAgIDB4QTIsIDB4 RDgsIDB4NDIsIDB4NTMsIDB4REQsIDB4QkYsIDB4MUYsIDB4NkIsIDB4MDcsIDB4RTAsIDB4NjAs IDB4ODYsCi0rICAgIDB4NUEsIDB4NjAsIDB4MDYsIDB4OEYsIDB4NDQsIDB4RDksIDB4QjAsIDB4 NEEsIDB4QUEsIDB4OTAsIDB4NzEsIDB4QjgsCi0rICAgIDB4QjIsIDB4QkMsIDB4MzAsIDB4NDEs IDB4NTAsIDB4QkIsIDB4RkQsIDB4NDYsIDB4OTgsIDB4NEQsIDB4QzAsIDB4ODksCi0rICAgIDB4 NTcsIDB4ODUsIDB4OEEsIDB4OTcsIDB4NDksIDB4MjUsIDB4QTgsIDB4MEMsIDB4NjksIDB4NzAs IDB4MTksIDB4MzksCi0rICAgIDB4NjYsIDB4MjQsIDB4QjQsIDB4NjksIDB4NDcsIDB4RDIsIDB4 N0MsIDB4REUsIDB4MkQsIDB4MzcsIDB4NTksIDB4QjMsCi0rICAgIDB4RTMsIDB4QzcsIDB4NkIs IDB4REQsIDB4QkUsIDB4RTEsIDB4RTYsIDB4MjgsIDB4OUEsIDB4OEQsIDB4NDIsIDB4M0UsCi0r ICAgIDB4MjgsIDB4MDEsIDB4RDcsIDB4MDMsIDB4QzksIDB4NzMsIDB4QzMsIDB4NkIsIDB4MDMs IDB4RUMsIDB4MUUsIDB4RjgsCi0rICAgIDB4NTMsIDB4OEIsIDB4NTIsIDB4NDIsIDB4ODksIDB4 NTUsIDB4QjcsIDB4ODcsIDB4QTksIDB4OTQsIDB4QzIsIDB4QjQsCi0rICAgIDB4NEIsIDB4NzYs IDB4RjUsIDB4NjEsIDB4NDcsIDB4RTEsIDB4NDQsIDB4N0IsIDB4RUMsIDB4QjQsIDB4MjUsIDB4 NjYsCi0rICAgIDB4QzAsIDB4RkYsIDB4RUIsIDB4ODYsIDB4MjQsIDB4QUEsIDB4QTgsIDB4NzIs IDB4QzcsIDB4RkIsIDB4RkIsIDB4RjYsCi0rICAgIDB4ODQsIDB4QTcsIDB4NUIsIDB4RDQsIDB4 ODcsIDB4RTUsIDB4ODQsIDB4NTYsIDB4MUUsIDB4NEMsIDB4RTUsIDB4QkMsCi0rICAgIDB4ODcs IDB4OTQsIDB4QUMsIDB4OUMsIDB4MUIsIDB4M0QsIDB4RjcsIDB4RDQsIDB4MzYsIDB4ODUsIDB4 OUYsIDB4QzksCi0rICAgIDB4RjYsIDB4NDMsIDB4M0YsIDB4QjYsIDB4MjUsIDB4MzMsIDB4NDgs IDB4MEYsIDB4RTUsIDB4N0MsIDB4Q0QsIDB4NTMsCi0rICAgIDB4NDgsIDB4RUIsIDB4MDIsIDB4 MTEsIDB4QjksIDB4OUUsIDB4QzMsIDB4QjQsIDB4RTEsIDB4NTQsIDB4RDYsIDB4QUEsCi0rICAg IDB4MUEsIDB4OUUsIDB4MTAsIDB4RTEsIDB4MjcsIDB4MjUsIDB4RjIsIDB4RTEsIDB4QUIsIDB4 QUIsIDB4NkMsIDB4NDUsCi0rICAgIDB4NjEsIDB4RDUsIDB4QTMsIDB4NkMsIDB4QjYsIDB4MzMs IDB4NTIsIDB4QUUsIDB4M0QsIDB4RkQsIDB4MjIsIDB4RkMsCi0rICAgIDB4M0EsIDB4QUIsIDB4 NjMsIDB4OTQsIDB4QjUsIDB4M0EsIDB4NjksIDB4MTEsIDB4QUMsIDB4OTksIDB4NEYsIDB4MzMs Ci0rICAgIDB4NjcsIDB4MEEsIDB4MUEsIDB4NzAsIDB4MUUsIDB4QjksIDB4RTIsIDB4MjYsIDB4 MjcsIDB4NjgsIDB4RUEsIDB4RjUsCi0rICAgIDB4OTcsIDB4NTUsIDB4QUMsIDB4ODMsIDB4NkEs IDB4NDAsIDB4M0IsIDB4NTYsIDB4QUUsIDB4MTMsIDB4ODgsIDB4RTgsCi0rICAgIDB4OTgsIDB4 NzIsIDB4NTIsIDB4OTEsIDB4N0YsIDB4NzgsIDB4MEEsIDB4MTgsIDB4RDQsIDB4NDQsIDB4Nzgs IDB4ODMsCi0rICAgIDB4MEQsIDB4NDQsIDB4NzcsIDB4QTYsIDB4RjMsIDB4MDQsIDB4RjEsIDB4 OEMsIDB4QkMsIDB4MkYsIDB4RjksIDB4NUIsCi0rICAgIDB4REIsIDB4NzAsIDB4MDAsIDB4RjYK LSB9OwotIAotIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfU0hBMjU2W10gPSB7 Ci0tICAgIDB4MEQsIDB4NTUsIDB4RTIsIDB4QUEsIDB4ODEsIDB4REIsIDB4OEUsIDB4ODIsIDB4 MDUsIDB4MTcsIDB4QTUsIDB4MjMsCi0tICAgIDB4RTcsIDB4M0IsIDB4MUQsIDB4QUYsIDB4RkIs IDB4OEMsIDB4RDAsIDB4ODEsIDB4MjAsIDB4N0IsIDB4QUEsIDB4MjMsCi0tICAgIDB4OTIsIDB4 ODcsIDB4OEMsIDB4RDEsIDB4NTMsIDB4ODUsIDB4MTYsIDB4REMsIDB4QkUsIDB4QUQsIDB4NkYs IDB4MzUsCi0tICAgIDB4OTgsIDB4MkQsIDB4NjksIDB4ODQsIDB4QkYsIDB4RDksIDB4OEEsIDB4 MDEsIDB4MTcsIDB4NTgsIDB4QjIsIDB4NkUsCi0tICAgIDB4MkMsIDB4NDQsIDB4OUIsIDB4OTAs IDB4RjEsIDB4RkIsIDB4NTEsIDB4RTgsIDB4NkEsIDB4OTAsIDB4MkQsIDB4MTgsCi0tICAgIDB4 MEUsIDB4QzAsIDB4OTAsIDB4MTAsIDB4MjQsIDB4QTksIDB4MUQsIDB4QjMsIDB4NTgsIDB4N0Es IDB4OTEsIDB4MzAsCi0tICAgIDB4QkUsIDB4MjIsIDB4QzcsIDB4RDMsIDB4RUMsIDB4QzMsIDB4 MDksIDB4NUQsIDB4QkYsIDB4RTIsIDB4ODAsIDB4M0EsCi0tICAgIDB4N0MsIDB4ODUsIDB4QjQs IDB4QkMsIDB4RDEsIDB4RTksIDB4RjAsIDB4NUMsIDB4REUsIDB4ODEsIDB4QTYsIDB4MzgsCi0t ICAgIDB4QjgsIDB4NDIsIDB4QkIsIDB4ODYsIDB4QzUsIDB4OUQsIDB4Q0UsIDB4N0MsIDB4MkMs IDB4RUUsIDB4RDEsIDB4REEsCi0tICAgIDB4MjcsIDB4NDgsIDB4MkIsIDB4RjUsIDB4QUIsIDB4 QjksIDB4RjcsIDB4ODAsIDB4RDEsIDB4OTAsIDB4MjcsIDB4OTAsCi0tICAgIDB4QkQsIDB4NDQs IDB4OTcsIDB4NjAsIDB4Q0QsIDB4NTcsIDB4QzAsIDB4N0EKLSsgICAgMHhDMiwgMHhCMSwgMHg5 NywgMHgwMCwgMHg5QSwgMHhFNSwgMHg4MCwgMHg2QSwgMHhFMiwgMHg1MSwgMHg2OCwgMHhCOSwK LSsgICAgMHg3QSwgMHgwQywgMHhGMiwgMHhCNCwgMHg3NywgMHhFRCwgMHgxNSwgMHgwQywgMHg0 RSwgMHhFMSwgMHhEQywgMHhGRiwKLSsgICAgMHg4RSwgMHhCQywgMHhERSwgMHhDNywgMHg5QSwg MHg5NiwgMHhGMSwgMHg0NywgMHg0NSwgMHgyNCwgMHg5RCwgMHg2RiwKLSsgICAgMHhBNiwgMHhG MywgMHgxRCwgMHgwRCwgMHgzNSwgMHg0QywgMHgxQSwgMHhGMywgMHg1OCwgMHgyQywgMHg2Qywg MHgwNiwKLSsgICAgMHhENiwgMHgyMiwgMHgzNywgMHg3NywgMHg4QywgMHgzMywgMHhFNSwgMHgw NywgMHg1MywgMHg5MywgMHgyOCwgMHhDRiwKLSsgICAgMHg2NywgMHhGQSwgMHhDNCwgMHgxRiwg MHgxQiwgMHgyNCwgMHhEQiwgMHg0QywgMHhDNSwgMHgyQSwgMHg1MSwgMHhBMiwKLSsgICAgMHg2 MCwgMHgxNSwgMHg4QywgMHg1NCwgMHhCNCwgMHgzMCwgMHhFMiwgMHgyNCwgMHg0NywgMHg4Niwg MHhGMiwgMHhGOCwKLSsgICAgMHg2QywgMHhENiwgMHgxMiwgMHg1OSwgMHgyQywgMHg3NCwgMHg5 QSwgMHgzNywgMHhGMywgMHhDNCwgMHhBMiwgMHhENSwKLSsgICAgMHg0RSwgMHgxRiwgMHg3Nywg MHhGMCwgMHgyNywgMHhDRSwgMHg3NywgMHhGOCwgMHg0QSwgMHg3OSwgMHgwMywgMHhCRSwKLSsg ICAgMHhDOCwgMHgwNiwgMHgyRCwgMHhBNywgMHhBNiwgMHg0NiwgMHhGNSwgMHg1NSwgMHg3OSwg MHhENywgMHg1QywgMHhDNiwKLSsgICAgMHg1QiwgMHhCMSwgMHgwMCwgMHg0RSwgMHg3QywgMHhE OSwgMHgxMSwgMHg4NSwgMHhFMCwgMHhCMSwgMHg0RCwgMHgyRCwKLSsgICAgMHgxMywgMHhENywg MHhBQywgMHhFQSwgMHg2NCwgMHhEMSwgMHhBQywgMHg4RiwgMHg4RCwgMHg4RiwgMHhFQSwgMHg0 MiwKLSsgICAgMHg3RiwgMHhGOSwgMHhCNywgMHg3RCwgMHgyQywgMHg2OCwgMHg0OSwgMHgwNywg MHg3QSwgMHg3NCwgMHhFRiwgMHhCNCwKLSsgICAgMHhDOSwgMHg5NywgMHgxNiwgMHg1QywgMHg2 QywgMHg2RSwgMHg1QywgMHgwOSwgMHgyRSwgMHg4RSwgMHgxMywgMHgyRSwKLSsgICAgMHgxQSwg MHg4RCwgMHhBNiwgMHgwQywgMHg2RSwgMHgwQywgMHgxQywgMHgwRiwgMHhDQywgMHhCMiwgMHg3 OCwgMHg4QSwKLSsgICAgMHgwNywgMHhGQywgMHg1QywgMHhDMiwgMHhGNSwgMHg2NSwgMHhFQywg MHhBQiwgMHg4QiwgMHgzQywgMHhDQSwgMHg5MSwKLSsgICAgMHg2RiwgMHg4NCwgMHg3QywgMHgy MSwgMHgwRSwgMHhCOCwgMHhEQSwgMHg3QiwgMHg2QywgMHhGNywgMHhERiwgMHhBQiwKLSsgICAg MHg3RSwgMHgxNSwgMHhGRCwgMHg4NSwgMHgwQiwgMHgzMywgMHg5QiwgMHg2QSwgMHgzQSwgMHhD MywgMHhFRiwgMHg2NSwKLSsgICAgMHgwNCwgMHg2RSwgMHhCMiwgMHhBQywgMHg5OCwgMHhGRCwg MHhFQiwgMHgwMiwgMHhGNSwgMHhDMCwgMHgwQiwgMHg1RSwKLSsgICAgMHhDQiwgMHhENCwgMHg4 MywgMHg4MiwgMHgxOCwgMHgxQiwgMHhEQSwgMHhCNCwgMHhDRCwgMHhFOCwgMHg3MSwgMHg2QiwK LSsgICAgMHgxRCwgMHhCNSwgMHg0RiwgMHhFOSwgMHhENiwgMHg0MywgMHhBMCwgMHgwQSwgMHgx NCwgMHhBMCwgMHhFNywgMHg1RCwKLSsgICAgMHg0NywgMHg5RCwgMHgxOCwgMHhENwotIH07Ci0g Ci0gc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9TSEEzODRbXSA9IHsKLS0gICAg MHgxRCwgMHhFMywgMHg2QSwgMHhERCwgMHgyNywgMHg0QywgMHhDMCwgMHhBNSwgMHgyNywgMHhF RiwgMHhFNiwgMHgxRiwKLS0gICAgMHhEMiwgMHg5MSwgMHg2OCwgMHg1OSwgMHgwNCwgMHhBRSwg MHhCRCwgMHg5OSwgMHg2MywgMHg1NiwgMHg0NywgMHhDNywKLS0gICAgMHg2RiwgMHgyMiwgMHgx NiwgMHg0OCwgMHhEMCwgMHhGOSwgMHgxOCwgMHhBOSwgMHhDQSwgMHhGQSwgMHg1RCwgMHg1QywK LS0gICAgMHhBNywgMHg2NSwgMHg1MiwgMHg4QSwgMHhDOCwgMHg0NCwgMHg3RSwgMHg4NiwgMHg1 RCwgMHhBOSwgMHhBNiwgMHg1NSwKLS0gICAgMHg2NSwgMHgzRSwgMHhEOSwgMHgyRCwgMHgwMiwg MHgzOCwgMHhBOCwgMHg3OSwgMHgyOCwgMHg3RiwgMHhCNiwgMHhDRiwKLS0gICAgMHg4MiwgMHhE RCwgMHg3RSwgMHg1NSwgMHhFMSwgMHhCMSwgMHhCQywgMHhFMiwgMHgxOSwgMHgyQiwgMHgzMCwg MHhDMiwKLS0gICAgMHgxQiwgMHgyQiwgMHhCMCwgMHg4MiwgMHg0NiwgMHhBQywgMHg0QiwgMHhE MSwgMHhFMiwgMHg3RCwgMHhFQiwgMHg4QywKLS0gICAgMHhGRiwgMHg5NSwgMHhFOSwgMHg2QSwg MHgxQywgMHgzRCwgMHg0RCwgMHhCRiwgMHg4RiwgMHg4QiwgMHg5QywgMHhDRCwKLS0gICAgMHhF QSwgMHg4NSwgMHhFRSwgMHgwMCwgMHhEQywgMHgxQywgMHhBNywgMHhFQiwgMHhEMCwgMHg4Riwg MHg5OSwgMHhGMSwKLS0gICAgMHgxNiwgMHgyOCwgMHgyNCwgMHg2NCwgMHgwNCwgMHgzOSwgMHgy RCwgMHg1OCwgMHgxRSwgMHgzNywgMHhEQywgMHgwNCwKLS0gICAgMHhCRCwgMHgzMSwgMHhBMiwg MHgyRiwgMHhCMywgMHgzNSwgMHg1NiwgMHhCRgotKyAgICAweDExLCAweDVFLCAweDYzLCAweEZF LCAweDQ3LCAweEFBLCAweDZBLCAweDg0LCAweEVCLCAweDQ0LCAweDlBLCAweDAwLAotKyAgICAw eDk2LCAweDRBLCAweEVELCAweEQyLCAweEE3LCAweDY3LCAweDNBLCAweDY0LCAweDgyLCAweDMw LCAweDYxLCAweDJELAotKyAgICAweEUzLCAweEY1LCAweDQ5LCAweDY4LCAweDVFLCAweDYwLCAw eEQyLCAweDRELCAweEVGLCAweEYyLCAweEE0LCAweEIyLAotKyAgICAweDlBLCAweDgxLCAweDFE LCAweDQxLCAweEE1LCAweDczLCAweDU5LCAweEVCLCAweEJCLCAweEM0LCAweDlFLCAweDJCLAot KyAgICAweEVCLCAweEMzLCAweERFLCAweDNBLCAweEVBLCAweEY1LCAweEFELCAweERBLCAweDg3 LCAweDA4LCAweDY4LCAweENGLAotKyAgICAweDEyLCAweDlCLCAweEMxLCAweEU0LCAweEE3LCAw eDcxLCAweEY4LCAweEJELCAweDZCLCAweDZGLCAweDUwLCAweEYxLAotKyAgICAweEQxLCAweEZG LCAweENFLCAweDZDLCAweEQ5LCAweEJFLCAweERBLCAweDc2LCAweEYzLCAweEVCLCAweEFCLCAw eDlDLAotKyAgICAweDQxLCAweDZFLCAweDRGLCAweDM1LCAweDdBLCAweDYxLCAweDI3LCAweEJD LCAweDAzLCAweDNFLCAweEFFLCAweDNFLAotKyAgICAweDFCLCAweERELCAweEFDLCAweEQ5LCAw eDFBLCAweEZGLCAweEQzLCAweEY1LCAweDY2LCAweDQzLCAweDA3LCAweDc2LAotKyAgICAweDhB LCAweDY5LCAweDJELCAweDE0LCAweEIxLCAweEJFLCAweDU1LCAweDQ5LCAweDkwLCAweDg5LCAw eDRCLCAweEM0LAotKyAgICAweDExLCAweDY3LCAweEQ1LCAweDlELCAweEIwLCAweEIyLCAweEVF LCAweDhELCAweDBBLCAweDQ3LCAweDRBLCAweEQ5LAotKyAgICAweDBFLCAweEQxLCAweDI0LCAw eEYwLCAweDMwLCAweDJCLCAweEYyLCAweDc5LCAweDQ3LCAweERCLCAweDcwLCAweEI0LAotKyAg ICAweDQ2LCAweEYyLCAweEY4LCAweEI3LCAweEI0LCAweEY2LCAweDM0LCAweDc5LCAweEE4LCAw eDJELCAweDNELCAweDU2LAotKyAgICAweEQ1LCAweDlBLCAweDYwLCAweDdBLCAweDA0LCAweEM3 LCAweDY2LCAweDFELCAweENELCAweDNDLCAweEQ1LCAweDM5LAotKyAgICAweDM3LCAweDEyLCAw eDUxLCAweDVFLCAweDlGLCAweEY4LCAweDFBLCAweEFGLCAweDEzLCAweEMxLCAweDEzLCAweDAw LAotKyAgICAweDM1LCAweEQ1LCAweDhELCAweDE3LCAweEUzLCAweDAyLCAweDI4LCAweEQ5LCAw eEVDLCAweERFLCAweEQxLCAweDJGLAotKyAgICAweDkzLCAweDQ5LCAweDAzLCAweDExLCAweDNF LCAweDU2LCAweDlELCAweEMyLCAweDMxLCAweEY4LCAweEFGLCAweDJELAotKyAgICAweEQ5LCAw eDk5LCAweEI3LCAweDhBLCAweEFDLCAweDVBLCAweDg2LCAweDIwLCAweDNBLCAweDgzLCAweDI5 LCAweDI2LAotKyAgICAweDlELCAweDAzLCAweDUyLCAweDJCLCAweDM0LCAweDU2LCAweDQwLCAw eDE2LCAweDUzLCAweDUwLCAweDgyLCAweEM5LAotKyAgICAweEM3LCAweEQ1LCAweDUxLCAweDRD LCAweEVELCAweEIzLCAweEUyLCAweEUxLCAweENGLCAweEE4LCAweENFLCAweEJELAotKyAgICAw eEIxLCAweDQ4LCAweEE2LCAweDhBLCAweDc5LCAweDE3LCAweDU1LCAweDExLCAweEVGLCAweEU4 LCAweDE0LCAweEY0LAotKyAgICAweDdFLCAweDM3LCAweDFELCAweDk2Ci0gfTsKLSAKLSBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1NIQTUxMltdID0gewotLSAgICAweDY5LCAw eDUyLCAweDFCLCAweDUxLCAweDVFLCAweDA2LCAweENBLCAweDlCLCAweDE2LCAweDUxLCAweDVE LCAweENGLAotLSAgICAweDQ5LCAweDI1LCAweDRBLCAweEExLCAweDZBLCAweDc3LCAweDRDLCAw eDM2LCAweDQwLCAweEY4LCAweEIyLCAweDlBLAotLSAgICAweDE1LCAweEVBLCAweDVDLCAweEU1 LCAweEU2LCAweDgyLCAweEUwLCAweDg2LCAweDgyLCAweDZCLCAweDMyLCAweEYxLAotLSAgICAw eDA0LCAweEMxLCAweDVBLCAweDFBLCAweEVELCAweDFFLCAweDlBLCAweEI2LCAweDRDLCAweDU0 LCAweDlGLCAweEQ4LAotLSAgICAweDhELCAweENDLCAweEFDLCAweDhBLCAweEJCLCAweDlDLCAw eDgyLCAweDNGLCAweEE2LCAweDUzLCAweDYyLCAweEI1LAotLSAgICAweDgwLCAweEUyLCAweEJD LCAweERELCAweDY3LCAweDJCLCAweEQ5LCAweDNGLCAweEU0LCAweDc1LCAweDkyLCAweDZCLAot LSAgICAweEFGLCAweDYyLCAweDdDLCAweDUyLCAweEYwLCAweEVFLCAweDMzLCAweERGLCAweDFC LCAweDFELCAweDQ3LCAweEU2LAotLSAgICAweDU5LCAweDU2LCAweEE1LCAweEI5LCAweDVDLCAw eEU2LCAweDc3LCAweDc4LCAweDE2LCAweDYzLCAweDg0LCAweDA1LAotLSAgICAweDZGLCAweDBF LCAweDJCLCAweDMxLCAweDlELCAweEY3LCAweDdGLCAweEIyLCAweDY0LCAweDcxLCAweEUwLCAw eDJELAotLSAgICAweDNFLCAweDYyLCAweENFLCAweEI1LCAweDNGLCAweDg4LCAweERGLCAweDJE LCAweEFCLCAweDk4LCAweDY1LCAweDkxLAotLSAgICAweERGLCAweDcwLCAweDE0LCAweEE1LCAw eDNGLCAweDM2LCAweEFCLCAweDg0Ci0rICAgIDB4MzUsIDB4NkQsIDB4RjEsIDB4OUUsIDB4Q0Ys IDB4QjEsIDB4RjYsIDB4MEMsIDB4MDQsIDB4MjEsIDB4MTcsIDB4QjMsCi0rICAgIDB4QzQsIDB4 OUQsIDB4RkUsIDB4NjIsIDB4MUMsIDB4MUEsIDB4NDUsIDB4MDAsIDB4MkUsIDB4NkIsIDB4QjYs IDB4OUYsCi0rICAgIDB4NUMsIDB4QjEsIDB4Q0IsIDB4Q0YsIDB4RjksIDB4NjcsIDB4RUEsIDB4 NjIsIDB4OEEsIDB4RUIsIDB4NzcsIDB4MDIsCi0rICAgIDB4NDIsIDB4MzAsIDB4ODgsIDB4QjEs IDB4NDgsIDB4REYsIDB4MTIsIDB4NjAsIDB4NkUsIDB4OTIsIDB4QkIsIDB4NEIsCi0rICAgIDB4 MDksIDB4NjgsIDB4RDEsIDB4NzAsIDB4MkIsIDB4NTksIDB4RUUsIDB4NTcsIDB4OTYsIDB4Rjks IDB4RUEsIDB4QTMsCi0rICAgIDB4NEMsIDB4RTksIDB4QzksIDB4QkQsIDB4MjUsIDB4MzQsIDB4 NjYsIDB4MTUsIDB4NkMsIDB4QzksIDB4ODEsIDB4RDEsCi0rICAgIDB4NDgsIDB4MEYsIDB4MzMs IDB4NUYsIDB4MDUsIDB4NEYsIDB4QzIsIDB4QzQsIDB4REQsIDB4MDksIDB4NTQsIDB4NzksCi0r ICAgIDB4QTEsIDB4NTcsIDB4MDcsIDB4NzAsIDB4QTAsIDB4MzMsIDB4MDIsIDB4NEQsIDB4NUQs IDB4RTksIDB4MjQsIDB4RDEsCi0rICAgIDB4RUYsIDB4RjAsIDB4NjEsIDB4RDAsIDB4MUQsIDB4 NDEsIDB4RTIsIDB4OUIsIDB4MkIsIDB4N0MsIDB4RDAsIDB4NEUsCi0rICAgIDB4NTUsIDB4RDks IDB4NkQsIDB4QTEsIDB4MTYsIDB4OUYsIDB4REEsIDB4QzMsIDB4M0IsIDB4RjEsIDB4NzQsIDB4 RDEsCi0rICAgIDB4OTksIDB4RjEsIDB4NjMsIDB4NTcsIDB4QUQsIDB4QzcsIDB4NTUsIDB4RjQs IDB4OTcsIDB4NDMsIDB4MUMsIDB4RUQsCi0rICAgIDB4MUIsIDB4N0EsIDB4MzIsIDB4Q0IsIDB4 MjQsIDB4QTYsIDB4M0QsIDB4OTMsIDB4MzcsIDB4OTAsIDB4NzQsIDB4RUUsCi0rICAgIDB4RDIs IDB4OEQsIDB4NEIsIDB4QkMsIDB4NzIsIDB4REEsIDB4MjUsIDB4MkIsIDB4NjQsIDB4RTksIDB4 Q0EsIDB4NjksCi0rICAgIDB4MzYsIDB4QjYsIDB4RUMsIDB4NkUsIDB4OEYsIDB4MzMsIDB4MEUs IDB4NzQsIDB4NDAsIDB4NDgsIDB4NTEsIDB4RTIsCi0rICAgIDB4NTQsIDB4NkYsIDB4QUYsIDB4 NkUsIDB4MzYsIDB4NTQsIDB4M0EsIDB4RUMsIDB4NzgsIDB4MzcsIDB4RTYsIDB4MUYsCi0rICAg IDB4NzYsIDB4QTUsIDB4NEQsIDB4QTYsIDB4RDksIDB4QjMsIDB4NkIsIDB4MTcsIDB4NkQsIDB4 NjEsIDB4RkMsIDB4QTMsCi0rICAgIDB4ODUsIDB4NEEsIDB4Q0MsIDB4REEsIDB4NTIsIDB4QUMs IDB4NUIsIDB4REEsIDB4NTEsIDB4RTUsIDB4N0YsIDB4NUIsCi0rICAgIDB4NTIsIDB4OEIsIDB4 NzQsIDB4NzUsIDB4OTksIDB4NUMsIDB4MDEsIDB4RkQsIDB4MjUsIDB4M0UsIDB4Q0QsIDB4ODYs Ci0rICAgIDB4NkYsIDB4N0EsIDB4QzAsIDB4RDgsIDB4MTcsIDB4NkYsIDB4RDEsIDB4RDIsIDB4 NkIsIDB4QUIsIDB4MTQsIDB4MUYsCi0rICAgIDB4M0IsIDB4QjgsIDB4MTUsIDB4MDUsIDB4ODYs IDB4NDAsIDB4MzYsIDB4Q0YsIDB4REEsIDB4NTksIDB4MkIsIDB4OUEsCi0rICAgIDB4RTksIDB4 MUUsIDB4NkUsIDB4RDMsIDB4NkIsIDB4QTEsIDB4MTksIDB4QzUsIDB4RTYsIDB4M0YsIDB4RTks IDB4MkUsCi0rICAgIDB4NDMsIDB4QTgsIDB4MzQsIDB4MEEKLSB9OwotIAotLXN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfWDkzMV9TSEExW10gPSB7Ci0tICAgIDB4ODYsIDB4QjQs IDB4MTgsIDB4QkEsIDB4RDEsIDB4ODAsIDB4QjYsIDB4N0MsIDB4NDIsIDB4NDUsIDB4NEQsIDB4 REYsCi0tICAgIDB4RTksIDB4MkQsIDB4RTEsIDB4ODMsIDB4NUYsIDB4QjUsIDB4MkYsIDB4Qzks IDB4Q0QsIDB4QzQsIDB4QjIsIDB4NzUsCi0tICAgIDB4ODAsIDB4QTQsIDB4RjEsIDB4NEEsIDB4 RTcsIDB4ODMsIDB4MTIsIDB4MUUsIDB4MUUsIDB4MTQsIDB4QjgsIDB4QUMsCi0tICAgIDB4MzUs IDB4RTIsIDB4QUEsIDB4MEIsIDB4NUMsIDB4RjgsIDB4MzgsIDB4NEQsIDB4MDQsIDB4RUUsIDB4 QTksIDB4OTcsCi0tICAgIDB4NzAsIDB4RkIsIDB4NUUsIDB4RTcsIDB4QjcsIDB4RTMsIDB4NjIs IDB4MjMsIDB4NEIsIDB4MzgsIDB4QkUsIDB4RDYsCi0tICAgIDB4NTMsIDB4MTUsIDB4RjcsIDB4 REYsIDB4ODcsIDB4QjQsIDB4MEUsIDB4Q0MsIDB4QjEsIDB4MUEsIDB4MTEsIDB4MTksCi0tICAg IDB4RUUsIDB4NTEsIDB4Q0MsIDB4OTIsIDB4REQsIDB4QkMsIDB4NjMsIDB4MjksIDB4NjMsIDB4 MEMsIDB4NTksIDB4RDcsCi0tICAgIDB4NkYsIDB4NEMsIDB4M0MsIDB4MzcsIDB4NUIsIDB4Mzcs IDB4MDMsIDB4NjEsIDB4N0QsIDB4MjQsIDB4MUMsIDB4OTksCi0tICAgIDB4NDgsIDB4QUYsIDB4 ODIsIDB4RkUsIDB4MzIsIDB4NDEsIDB4OUIsIDB4QjIsIDB4REIsIDB4RUEsIDB4RUQsIDB4NzYs Ci0tICAgIDB4OEUsIDB4NkUsIDB4Q0EsIDB4N0UsIDB4NEUsIDB4MTQsIDB4QkEsIDB4MzAsIDB4 ODQsIDB4MUMsIDB4QjMsIDB4NjcsCi0tICAgIDB4QTMsIDB4MjksIDB4ODAsIDB4NzAsIDB4NTQs IDB4NjgsIDB4N0QsIDB4NDkKLS19OwotK3N0YXRpYyBpbnQgZmlwc19yc2FfZW5jcnlwdF90ZXN0 KFJTQSAqcnNhLCBjb25zdCB1bnNpZ25lZCBjaGFyICpwbGFpbnRleHQsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IHB0bGVuKQotK3sKLSsgICAgdW5zaWduZWQgY2hhciAq Y3RidWYgPSBOVUxMLCAqcHRidWYgPSBOVUxMOwotKyAgICBpbnQgcmV0ID0gMDsKLSsgICAgaW50 IGxlbjsKLSAKLS1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1g5MzFfU0hBMjU2 W10gPSB7Ci0tICAgIDB4N0UsIDB4QTIsIDB4NzcsIDB4RkUsIDB4QjgsIDB4NTQsIDB4OEEsIDB4 QzcsIDB4N0YsIDB4NjQsIDB4NTQsIDB4ODksCi0tICAgIDB4RTUsIDB4NTIsIDB4MTUsIDB4OEUs IDB4NTIsIDB4OTYsIDB4NEUsIDB4QTYsIDB4NTgsIDB4OTIsIDB4MUMsIDB4REQsCi0tICAgIDB4 RUEsIDB4QTIsIDB4MkQsIDB4NUMsIDB4RDEsIDB4NjIsIDB4MDAsIDB4NDksIDB4MDUsIDB4OTUs IDB4NzMsIDB4Q0YsCi0tICAgIDB4MTYsIDB4NzYsIDB4NjgsIDB4RjYsIDB4QzYsIDB4NUUsIDB4 ODAsIDB4QjgsIDB4QjgsIDB4N0IsIDB4QzgsIDB4OUIsCi0tICAgIDB4QzYsIDB4NTMsIDB4ODgs IDB4MjYsIDB4MjAsIDB4ODgsIDB4NzMsIDB4QjYsIDB4MTMsIDB4QjgsIDB4RjAsIDB4NEIsCi0t ICAgIDB4MDAsIDB4ODUsIDB4RjMsIDB4REQsIDB4MDcsIDB4NTAsIDB4RUIsIDB4MjAsIDB4QzQs IDB4MzgsIDB4MEUsIDB4OTgsCi0tICAgIDB4QUQsIDB4NEUsIDB4NDksIDB4MkMsIDB4RDcsIDB4 NjUsIDB4QTUsIDB4MTksIDB4MEUsIDB4NTksIDB4MDEsIDB4RUMsCi0tICAgIDB4N0UsIDB4NzUs IDB4ODksIDB4NjksIDB4MkUsIDB4NjMsIDB4NzYsIDB4ODUsIDB4NDYsIDB4OEQsIDB4QTAsIDB4 OEMsCi0tICAgIDB4MzMsIDB4MUQsIDB4ODIsIDB4OEMsIDB4MDMsIDB4RUEsIDB4NjksIDB4ODgs IDB4MzUsIDB4QTEsIDB4NDIsIDB4QkQsCi0tICAgIDB4MjEsIDB4RUQsIDB4OEQsIDB4QkMsIDB4 QkMsIDB4REIsIDB4MzAsIDB4RkYsIDB4ODYsIDB4RjAsIDB4NUIsIDB4REMsCi0tICAgIDB4RTMs IDB4RTIsIDB4RTgsIDB4MEEsIDB4MEEsIDB4MjksIDB4OTQsIDB4ODAKLS19OwotKyAgICBjdGJ1 ZiA9IE9QRU5TU0xfbWFsbG9jKFJTQV9zaXplKHJzYSkpOwotKyAgICBpZiAoIWN0YnVmKQotKyAg ICAgICAgZ290byBlcnI7Ci0gCi0tc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9Y OTMxX1NIQTM4NFtdID0gewotLSAgICAweDVDLCAweDdELCAweDk2LCAweDM1LCAweEVDLCAweDdF LCAweDExLCAweDM4LCAweEJCLCAweDdCLCAweEVDLCAweDdCLAotLSAgICAweEYyLCAweDgyLCAw eDhFLCAweDk5LCAweEJELCAweEVGLCAweEQ4LCAweEFFLCAweEQ3LCAweDM5LCAweDM3LCAweENC LAotLSAgICAweEU2LCAweDRGLCAweDVFLCAweDBBLCAweDEzLCAweEU0LCAweDJFLCAweDQwLCAw eEI5LCAweEJFLCAweDJFLCAweEUzLAotLSAgICAweEVGLCAweDc4LCAweDgzLCAweDE4LCAweDQ0 LCAweDM1LCAweDlDLCAweDhFLCAweEQ3LCAweDRBLCAweDYzLCAweEY2LAotLSAgICAweDU3LCAw eEMyLCAweEIwLCAweDA4LCAweDUxLCAweDczLCAweENGLCAweENBLCAweDk5LCAweDY2LCAweEVF LCAweDMxLAotLSAgICAweEQ4LCAweDY5LCAweEU5LCAweEFCLCAweDEzLCAweDI3LCAweDdCLCAw eDQxLCAweDFFLCAweDZELCAweDhELCAweEYxLAotLSAgICAweDNFLCAweDlDLCAweDM1LCAweDk1 LCAweDU4LCAweERELCAweDJCLCAweEQ1LCAweEEwLCAweDYwLCAweDQxLCAweDc5LAotLSAgICAw eDI0LCAweDIyLCAweEU0LCAweEI3LCAweEJGLCAweDQ3LCAweDUzLCAweEY2LCAweDM0LCAweEQ1 LCAweDdDLCAweEZGLAotLSAgICAweDBFLCAweDA5LCAweEVFLCAweDJFLCAweEUyLCAweDM3LCAw eEI5LCAweERFLCAweEM1LCAweDEyLCAweDQ0LCAweDM1LAotLSAgICAweEVGLCAweDAxLCAweEU2 LCAweDVFLCAweDM5LCAweDMxLCAweDJELCAweDcxLCAweEE1LCAweERDLCAweEM2LCAweDZELAot LSAgICAweEUyLCAweENELCAweDg1LCAweERCLCAweDczLCAweDgyLCAweDY1LCAweDI4Ci0tfTsK LSsgICAgbGVuID0gUlNBX3B1YmxpY19lbmNyeXB0KHB0bGVuLCBwbGFpbnRleHQsIGN0YnVmLCBy c2EsIFJTQV9QS0NTMV9QQURESU5HKTsKLSsgICAgaWYgKGxlbiA8PSAwKQotKyAgICAgICAgZ290 byBlcnI7Ci0rICAgIC8qIENoZWNrIGNpcGhlcnRleHQgZG9lc24ndCBtYXRjaCBwbGFpbnRleHQg Ki8KLSsgICAgaWYgKGxlbiA+PSBwdGxlbiAmJiAhbWVtY21wKHBsYWludGV4dCwgY3RidWYsIHB0 bGVuKSkKLSsgICAgICAgIGdvdG8gZXJyOwotIAotLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGthdF9SU0FfWDkzMV9TSEE1MTJbXSA9IHsKLS0gICAgMHhBNiwgMHg2NSwgMHhBMiwgMHg3Nywg MHg0RiwgMHhCMywgMHg4NiwgMHhDQiwgMHg2NCwgMHgzQSwgMHhDMSwgMHg2MywKLS0gICAgMHhG QywgMHhBMSwgMHhBQSwgMHhDQiwgMHg5QiwgMHg3OSwgMHhERCwgMHg0QiwgMHhFMSwgMHhEOSwg MHhEQSwgMHhBQywKLS0gICAgMHhFNywgMHg0NywgMHgwOSwgMHhCMiwgMHgxMSwgMHg0QiwgMHg4 QSwgMHhBQSwgMHgwNSwgMHg5RSwgMHg3NywgMHhENywKLS0gICAgMHgzQSwgMHhCRCwgMHg1RSwg MHg1MywgMHgwOSwgMHg0QSwgMHhFNiwgMHgwRiwgMHg1RSwgMHhGOSwgMHgxNCwgMHgyOCwKLS0g ICAgMHhBMCwgMHg5OSwgMHg3NCwgMHg2NCwgMHg3MCwgMHg0RSwgMHhGMiwgMHhFMywgMHhGQSwg MHhDNywgMHhGOCwgMHhDNSwKLS0gICAgMHg2RSwgMHgyQiwgMHg3OSwgMHg5NiwgMHgwRCwgMHgw QywgMHhDOCwgMHgxMCwgMHgzNCwgMHg1MywgMHhEMiwgMHhBRiwKLS0gICAgMHgxNywgMHgwRSwg MHhFMCwgMHhCRiwgMHg3OSwgMHhGNiwgMHgwNCwgMHg3MiwgMHgxMCwgMHhFMCwgMHhGNiwgMHhE MCwKLS0gICAgMHhDRSwgMHg4QSwgMHg2RiwgMHhBMSwgMHg5NSwgMHg4OSwgMHhCRiwgMHg1OCwg MHg4RiwgMHg0NiwgMHg1RiwgMHgwOSwKLS0gICAgMHg5RiwgMHgwOSwgMHhDQSwgMHg4NCwgMHgx NSwgMHg4NSwgMHhFMCwgMHhFRCwgMHgwNCwgMHgyRCwgMHhGQiwgMHg3QywKLS0gICAgMHgzNiwg MHgzNSwgMHgyMSwgMHgzMSwgMHhDMywgMHhGRCwgMHg5MiwgMHg0MiwgMHgxMSwgMHgzMCwgMHg3 MSwgMHgxQiwKLS0gICAgMHg2MCwgMHg4MywgMHgxOCwgMHg4OCwgMHhBMywgMHhGNSwgMHg1OSwg MHhDMwotLX07Ci0rICAgIHB0YnVmID0gT1BFTlNTTF9tYWxsb2MoUlNBX3NpemUocnNhKSk7Ci0r ICAgIGlmICghcHRidWYpCi0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgbGVuID0gUlNBX3By aXZhdGVfZGVjcnlwdChsZW4sIGN0YnVmLCBwdGJ1ZiwgcnNhLCBSU0FfUEtDUzFfUEFERElORyk7 Ci0rICAgIGlmIChsZW4gIT0gcHRsZW4pCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgaWYgKG1l bWNtcChwdGJ1ZiwgcGxhaW50ZXh0LCBsZW4pKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAg IHJldCA9IDE7Ci0rCi0rIGVycjoKLSsgICAgaWYgKGN0YnVmKQotKyAgICAgICAgT1BFTlNTTF9m cmVlKGN0YnVmKTsKLSsgICAgaWYgKHB0YnVmKQotKyAgICAgICAgT1BFTlNTTF9mcmVlKHB0YnVm KTsKLSsgICAgcmV0dXJuIHJldDsKLSt9Ci0gCi0gaW50IEZJUFNfc2VsZnRlc3RfcnNhKCkKLSB7 Ci1AQCAtMzUyLDcgKzQ4Myw3IEBAIGludCBGSVBTX3NlbGZ0ZXN0X3JzYSgpCi0gICAgIGlmICgo cGsgPSBFVlBfUEtFWV9uZXcoKSkgPT0gTlVMTCkKLSAgICAgICAgIGdvdG8gZXJyOwotIAotLSAg ICBFVlBfUEtFWV9hc3NpZ25fUlNBKHBrLCBrZXkpOwotKyAgICBFVlBfUEtFWV9zZXQxX1JTQShw aywga2V5KTsKLSAKLSAgICAgaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIGthdF90 YnMsIHNpemVvZihrYXRfdGJzKSAtIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGthdF9SU0FfU0hBMSwgc2l6ZW9mKGthdF9SU0FfU0hBMSksCi1AQCAtNDA2LDI5ICs1Mzcs NyBAQCBpbnQgRklQU19zZWxmdGVzdF9yc2EoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BTUywgIlJTQSBTSEE1MTIgUFNTIikpCi0gICAg ICAgICBnb3RvIGVycjsKLSAKLS0gICAgaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGss IGthdF90YnMsIHNpemVvZihrYXRfdGJzKSAtIDEsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGthdF9SU0FfWDkzMV9TSEExLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaXplb2Yoa2F0X1JTQV9YOTMxX1NIQTEpLCBFVlBfc2hhMSgpLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBfTURfQ1RYX0ZMQUdfUEFEX1g5MzEsICJSU0Eg U0hBMSBYOTMxIikpCi0tICAgICAgICBnb3RvIGVycjsKLS0gICAgLyogTkI6IFNIQTIyNCBub3Qg c3VwcG9ydGVkIGluIFg5LjMxICovCi0tICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0 KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBrYXRfUlNBX1g5MzFfU0hBMjU2LAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplb2Yoa2F0X1JTQV9YOTMxX1NIQTI1NiksIEVWUF9zaGEyNTYoKSwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX01EX0NUWF9GTEFHX1BBRF9Y OTMxLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUlNBIFNIQTI1NiBYOTMx IikpCi0tICAgICAgICBnb3RvIGVycjsKLS0gICAgaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rl c3QocGssIGthdF90YnMsIHNpemVvZihrYXRfdGJzKSAtIDEsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGthdF9SU0FfWDkzMV9TSEEzODQsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVvZihrYXRfUlNBX1g5MzFfU0hBMzg0KSwgRVZQX3NoYTM4NCgp LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBfTURfQ1RYX0ZMQUdfUEFE X1g5MzEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSU0EgU0hBMzg0IFg5 MzEiKSkKLS0gICAgICAgIGdvdG8gZXJyOwotLSAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVf dGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAga2F0X1JTQV9YOTMxX1NIQTUxMiwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mKGthdF9SU0FfWDkzMV9TSEE1MTIpLCBFVlBfc2hhNTEy KCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9NRF9DVFhfRkxBR19Q QURfWDkzMSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJTQSBTSEE1MTIg WDkzMSIpKQotKyAgICBpZiAoIWZpcHNfcnNhX2VuY3J5cHRfdGVzdChrZXksIGthdF90YnMsIHNp emVvZihrYXRfdGJzKSAtIDEpKQotICAgICAgICAgZ290byBlcnI7Ci0gCi0gICAgIHJldCA9IDE7 Ci1AQCAtNDM2LDcgKzU0NSw3IEBAIGludCBGSVBTX3NlbGZ0ZXN0X3JzYSgpCi0gIGVycjoKLSAg ICAgaWYgKHBrKQotICAgICAgICAgRVZQX1BLRVlfZnJlZShwayk7Ci0tICAgIGVsc2UgaWYgKGtl eSkKLSsgICAgaWYgKGtleSkKLSAgICAgICAgIFJTQV9mcmVlKGtleSk7Ci0gICAgIHJldHVybiBy ZXQ7Ci0gfQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvTWFrZWZpbGUuZmlw cy1yZXFzIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9maXBzL01ha2VmaWxlCi0tLS0gb3BlbnNzbC0x LjAuMmkvY3J5cHRvL2ZpcHMvTWFrZWZpbGUuZmlwcy1yZXFzCTIwMTYtMDktMjIgMTM6NTQ6MjYu NTI0ODQ4MjQwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2ZpcHMvTWFrZWZpbGUJ MjAxNi0wOS0yMiAxMzo1NDoyNi41Mzc4NDg1NDIgKzAyMDAKLUBAIC0yNCwxMyArMjQsMTUgQEAg TElCU1JDPWZpcHNfYWVzX3NlbGZ0ZXN0LmMgZmlwc19kZXNfc2VsZgotICAgICBmaXBzX3JzYV9z ZWxmdGVzdC5jIGZpcHNfc2hhX3NlbGZ0ZXN0LmMgZmlwcy5jIGZpcHNfZHNhX3NlbGZ0ZXN0LmMg IGZpcHNfcmFuZC5jIFwKLSAgICAgZmlwc19yc2FfeDkzMWcuYyBmaXBzX3Bvc3QuYyBmaXBzX2Ry YmdfY3RyLmMgZmlwc19kcmJnX2hhc2guYyBmaXBzX2RyYmdfaG1hYy5jIFwKLSAgICAgZmlwc19k cmJnX2xpYi5jIGZpcHNfZHJiZ19yYW5kLmMgZmlwc19kcmJnX3NlbGZ0ZXN0LmMgZmlwc19yYW5k X2xpYi5jIFwKLS0gICAgZmlwc19jbWFjX3NlbGZ0ZXN0LmMgZmlwc19lY2RoX3NlbGZ0ZXN0LmMg Zmlwc19lY2RzYV9zZWxmdGVzdC5jIGZpcHNfZW5jLmMgZmlwc19tZC5jCi0rICAgIGZpcHNfY21h Y19zZWxmdGVzdC5jIGZpcHNfZWNkaF9zZWxmdGVzdC5jIGZpcHNfZWNkc2Ffc2VsZnRlc3QuYyBm aXBzX2VuYy5jIGZpcHNfbWQuYyBcCi0rICAgIGZpcHNfZGhfc2VsZnRlc3QuYwotIAotIExJQk9C Sj1maXBzX2Flc19zZWxmdGVzdC5vIGZpcHNfZGVzX3NlbGZ0ZXN0Lm8gZmlwc19obWFjX3NlbGZ0 ZXN0Lm8gZmlwc19yYW5kX3NlbGZ0ZXN0Lm8gXAotICAgICBmaXBzX3JzYV9zZWxmdGVzdC5vIGZp cHNfc2hhX3NlbGZ0ZXN0Lm8gZmlwcy5vIGZpcHNfZHNhX3NlbGZ0ZXN0Lm8gIGZpcHNfcmFuZC5v IFwKLSAgICAgZmlwc19yc2FfeDkzMWcubyBmaXBzX3Bvc3QubyBmaXBzX2RyYmdfY3RyLm8gZmlw c19kcmJnX2hhc2gubyBmaXBzX2RyYmdfaG1hYy5vIFwKLSAgICAgZmlwc19kcmJnX2xpYi5vIGZp cHNfZHJiZ19yYW5kLm8gZmlwc19kcmJnX3NlbGZ0ZXN0Lm8gZmlwc19yYW5kX2xpYi5vIFwKLS0g ICAgZmlwc19jbWFjX3NlbGZ0ZXN0Lm8gZmlwc19lY2RoX3NlbGZ0ZXN0Lm8gZmlwc19lY2RzYV9z ZWxmdGVzdC5vIGZpcHNfZW5jLm8gZmlwc19tZC5vCi0rICAgIGZpcHNfY21hY19zZWxmdGVzdC5v IGZpcHNfZWNkaF9zZWxmdGVzdC5vIGZpcHNfZWNkc2Ffc2VsZnRlc3QubyBmaXBzX2VuYy5vIGZp cHNfbWQubyBcCi0rICAgIGZpcHNfZGhfc2VsZnRlc3QubwotIAotIExJQkNSWVBUTz0tTC4uIC1s Y3J5cHRvCi0gCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcmFuZC9yYW5kX2xjbC5o LmZpcHMtcmVxcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcmFuZC9yYW5kX2xjbC5oCi0tLS0gb3Bl bnNzbC0xLjAuMmkvY3J5cHRvL3JhbmQvcmFuZF9sY2wuaC5maXBzLXJlcXMJMjAxNi0wOS0yMiAx Mzo1NDoyNi4yNjE4NDIxMjcgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcmFuZC9y YW5kX2xjbC5oCTIwMTYtMDktMjIgMTM6NTQ6MjYuNTM3ODQ4NTQyICswMjAwCi1AQCAtMTEyLDcg KzExMiw3IEBACi0gI2lmbmRlZiBIRUFERVJfUkFORF9MQ0xfSAotICMgZGVmaW5lIEhFQURFUl9S QU5EX0xDTF9ICi0gCi0tIyBkZWZpbmUgRU5UUk9QWV9ORUVERUQgMzIgICAgICAvKiByZXF1aXJl IDI1NiBiaXRzID0gMzIgYnl0ZXMgb2YgcmFuZG9tbmVzcyAqLwotKyMgZGVmaW5lIEVOVFJPUFlf TkVFREVEIDQ4ICAgICAgLyogcmVxdWlyZSAzODQgYml0cyA9IDQ4IGJ5dGVzIG9mIHJhbmRvbW5l c3MgKi8KLSAKLSAjIGlmICFkZWZpbmVkKFVTRV9NRDVfUkFORCkgJiYgIWRlZmluZWQoVVNFX1NI QTFfUkFORCkgJiYgIWRlZmluZWQoVVNFX01EQzJfUkFORCkgJiYgIWRlZmluZWQoVVNFX01EMl9S QU5EKQotICMgIGlmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0hBKSAmJiAhZGVmaW5lZChPUEVOU1NM X05PX1NIQTEpCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcmFuZC9yYW5kX2xpYi5j LmZpcHMtcmVxcyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcmFuZC9yYW5kX2xpYi5jCi0tLS0gb3Bl bnNzbC0xLjAuMmkvY3J5cHRvL3JhbmQvcmFuZF9saWIuYy5maXBzLXJlcXMJMjAxNi0wOS0yMiAx MjoyMzowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcmFuZC9y YW5kX2xpYi5jCTIwMTYtMDktMjIgMTM6NTQ6MjYuNTM3ODQ4NTQyICswMjAwCi1AQCAtMjM2LDEy ICsyMzYsMjIgQEAgc3RhdGljIGludCBkcmJnX3JhbmRfYWRkKERSQkdfQ1RYICpjdHgsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBlbnRyb3B5KQotIHsKLSAgICAgUkFORF9TU0xl YXkoKS0+YWRkKGluLCBpbmxlbiwgZW50cm9weSk7Ci0rICAgIGlmIChGSVBTX3JhbmRfc3RhdHVz KCkpIHsKLSsgICAgICAgIENSWVBUT193X2xvY2soQ1JZUFRPX0xPQ0tfUkFORCk7Ci0rICAgICAg ICBGSVBTX2RyYmdfcmVzZWVkKGN0eCwgTlVMTCwgMCk7Ci0rICAgICAgICBDUllQVE9fd191bmxv Y2soQ1JZUFRPX0xPQ0tfUkFORCk7Ci0rICAgIH0KLSAgICAgcmV0dXJuIDE7Ci0gfQotIAotIHN0 YXRpYyBpbnQgZHJiZ19yYW5kX3NlZWQoRFJCR19DVFggKmN0eCwgY29uc3Qgdm9pZCAqaW4sIGlu dCBpbmxlbikKLSB7Ci0gICAgIFJBTkRfU1NMZWF5KCktPnNlZWQoaW4sIGlubGVuKTsKLSsgICAg aWYgKEZJUFNfcmFuZF9zdGF0dXMoKSkgewotKyAgICAgICAgQ1JZUFRPX3dfbG9jayhDUllQVE9f TE9DS19SQU5EKTsKLSsgICAgICAgIEZJUFNfZHJiZ19yZXNlZWQoY3R4LCBOVUxMLCAwKTsKLSsg ICAgICAgIENSWVBUT193X3VubG9jayhDUllQVE9fTE9DS19SQU5EKTsKLSsgICAgfQotICAgICBy ZXR1cm4gMTsKLSB9Ci0gCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcnNhL3JzYV9n ZW4uYy5maXBzLXJlcXMgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL3JzYS9yc2FfZ2VuLmMKLS0tLSBv cGVuc3NsLTEuMC4yaS9jcnlwdG8vcnNhL3JzYV9nZW4uYy5maXBzLXJlcXMJMjAxNi0wOS0yMiAx Mzo1NDoyNi41MDI4NDc3MjggKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcnNhL3Jz YV9nZW4uYwkyMDE2LTA5LTIyIDEzOjU0OjI2LjUzODg0ODU2NSArMDIwMAotQEAgLTEsNSArMSw2 IEBACi0gLyogY3J5cHRvL3JzYS9yc2FfZ2VuLmMgKi8KLSAvKiBDb3B5cmlnaHQgKEMpIDE5OTUt MTk5OCBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkKLSsgKiBDb3B5cmlnaHQgKEMpIDIw MTMgUmVkIEhhdCwgSW5jLgotICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gICoKLSAgKiBUaGlz IHBhY2thZ2UgaXMgYW4gU1NMIGltcGxlbWVudGF0aW9uIHdyaXR0ZW4KLUBAIC0xNjksNiArMTcw LDI1OSBAQCBpbnQgUlNBX2dlbmVyYXRlX2tleV9leChSU0EgKnJzYSwgaW50IGJpCi0gICAgIHJl dHVybiByc2FfYnVpbHRpbl9rZXlnZW4ocnNhLCBiaXRzLCBlX3ZhbHVlLCBjYik7Ci0gfQotIAot KyNpZmRlZiBPUEVOU1NMX0ZJUFMKLStzdGF0aWMgaW50IEZJUFNfcnNhX2J1aWx0aW5fa2V5Z2Vu KFJTQSAqcnNhLCBpbnQgYml0cywgQklHTlVNICplX3ZhbHVlLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQk5fR0VOQ0IgKmNiKQotK3sKLSsgICAgQklHTlVNICpyMCA9IE5V TEwsICpyMSA9IE5VTEwsICpyMiA9IE5VTEwsICpyMyA9IE5VTEwsICp0bXA7Ci0rICAgIEJJR05V TSBsb2NhbF9yMCwgbG9jYWxfZCwgbG9jYWxfcDsKLSsgICAgQklHTlVNICpwcjAsICpkLCAqcDsK LSsgICAgQk5fQ1RYICpjdHggPSBOVUxMOwotKyAgICBpbnQgb2sgPSAtMTsKLSsgICAgaW50IGk7 Ci0rICAgIGludCBuID0gMDsKLSsgICAgaW50IHRlc3QgPSAwOwotKyAgICBpbnQgcGJpdHMgPSBi aXRzIC8gMjsKLSsKLSsgICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsKLSsgICAgICAg IEZJUFNlcnIoRklQU19GX1JTQV9CVUlMVElOX0tFWUdFTiwgRklQU19SX0ZJUFNfU0VMRlRFU1Rf RkFJTEVEKTsKLSsgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rICAgIGlmICgocGJpdHMg JiAweEZGKQotKyAgICAgICAgfHwgKGdldGVudigiT1BFTlNTTF9FTkZPUkNFX01PRFVMVVNfQklU UyIpICYmIGJpdHMgIT0gMjA0OAotKyAgICAgICAgICAgICYmIGJpdHMgIT0gMzA3MikpIHsKLSsg ICAgICAgIEZJUFNlcnIoRklQU19GX1JTQV9CVUlMVElOX0tFWUdFTiwgRklQU19SX0lOVkFMSURf S0VZX0xFTkdUSCk7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKyAgICBjdHggPSBC Tl9DVFhfbmV3KCk7Ci0rICAgIGlmIChjdHggPT0gTlVMTCkKLSsgICAgICAgIGdvdG8gZXJyOwot KyAgICBCTl9DVFhfc3RhcnQoY3R4KTsKLSsgICAgcjAgPSBCTl9DVFhfZ2V0KGN0eCk7Ci0rICAg IHIxID0gQk5fQ1RYX2dldChjdHgpOwotKyAgICByMiA9IEJOX0NUWF9nZXQoY3R4KTsKLSsgICAg cjMgPSBCTl9DVFhfZ2V0KGN0eCk7Ci0rCi0rICAgIGlmIChyMyA9PSBOVUxMKQotKyAgICAgICAg Z290byBlcnI7Ci0rCi0rICAgIC8qIFdlIG5lZWQgdGhlIFJTQSBjb21wb25lbnRzIG5vbi1OVUxM ICovCi0rICAgIGlmICghcnNhLT5uICYmICgocnNhLT5uID0gQk5fbmV3KCkpID09IE5VTEwpKQot KyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmICghcnNhLT5kICYmICgocnNhLT5kID0gQk5fbmV3 KCkpID09IE5VTEwpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmICghcnNhLT5lICYmICgo cnNhLT5lID0gQk5fbmV3KCkpID09IE5VTEwpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlm ICghcnNhLT5wICYmICgocnNhLT5wID0gQk5fbmV3KCkpID09IE5VTEwpKQotKyAgICAgICAgZ290 byBlcnI7Ci0rICAgIGlmICghcnNhLT5xICYmICgocnNhLT5xID0gQk5fbmV3KCkpID09IE5VTEwp KQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmICghcnNhLT5kbXAxICYmICgocnNhLT5kbXAx ID0gQk5fbmV3KCkpID09IE5VTEwpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmICghcnNh LT5kbXExICYmICgocnNhLT5kbXExID0gQk5fbmV3KCkpID09IE5VTEwpKQotKyAgICAgICAgZ290 byBlcnI7Ci0rICAgIGlmICghcnNhLT5pcW1wICYmICgocnNhLT5pcW1wID0gQk5fbmV3KCkpID09 IE5VTEwpKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIGlmICghQk5fc2V0X3dvcmQocjAs IFJTQV9GNCkpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgaWYgKEJOX2NtcChlX3ZhbHVlLCBy MCkgPCAwIHx8IEJOX251bV9iaXRzKGVfdmFsdWUpID4gMjU2KSB7Ci0rICAgICAgICBvayA9IDA7 ICAgICAgICAgICAgICAgICAvKiB3ZSBzZXQgb3VyIG93biBlcnIgKi8KLSsgICAgICAgIFJTQWVy cihSU0FfRl9SU0FfQlVJTFRJTl9LRVlHRU4sIFJTQV9SX0JBRF9FX1ZBTFVFKTsKLSsgICAgICAg IGdvdG8gZXJyOwotKyAgICB9Ci0rCi0rICAgIC8qIHByZXBhcmUgYXBwcm94aW1hdGUgbWluaW11 bSBwIGFuZCBxICovCi0rICAgIGlmICghQk5fc2V0X3dvcmQocjAsIDB4QjUwNEYzMzQpKQotKyAg ICAgICAgZ290byBlcnI7Ci0rICAgIGlmICghQk5fbHNoaWZ0KHIwLCByMCwgcGJpdHMgLSAzMikp Ci0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgLyogcHJlcGFyZSBtaW5pbXVtIHAgYW5kIHEg ZGlmZmVyZW5jZSAqLwotKyAgICBpZiAoIUJOX29uZShyMykpCi0rICAgICAgICBnb3RvIGVycjsK LSsgICAgaWYgKCFCTl9sc2hpZnQocjMsIHIzLCBwYml0cyAtIDEwMCkpCi0rICAgICAgICBnb3Rv IGVycjsKLSsKLSsgICAgQk5fY29weShyc2EtPmUsIGVfdmFsdWUpOwotKwotKyAgICBpZiAoIUJO X2lzX3plcm8ocnNhLT5wKSAmJiAhQk5faXNfemVybyhyc2EtPnEpKQotKyAgICAgICAgdGVzdCA9 IDE7Ci0rCi0rIHJldHJ5OgotKyAgICAvKiBnZW5lcmF0ZSBwIGFuZCBxICovCi0rICAgIGZvciAo aSA9IDA7IGkgPCA1ICogcGJpdHM7IGkrKykgewotKyBwbG9vcDoKLSsgICAgICAgIGlmICghdGVz dCkKLSsgICAgICAgICAgICBpZiAoIUJOX3JhbmQocnNhLT5wLCBwYml0cywgMCwgMSkpCi0rICAg ICAgICAgICAgICAgIGdvdG8gZXJyOwotKyAgICAgICAgaWYgKEJOX2NtcChyc2EtPnAsIHIwKSA8 IDApIHsKLSsgICAgICAgICAgICBpZiAodGVzdCkKLSsgICAgICAgICAgICAgICAgZ290byBlcnI7 Ci0rICAgICAgICAgICAgZ290byBwbG9vcDsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGlmICgh Qk5fc3ViKHIyLCByc2EtPnAsIEJOX3ZhbHVlX29uZSgpKSkKLSsgICAgICAgICAgICBnb3RvIGVy cjsKLSsgICAgICAgIGlmICghQk5fZ2NkKHIxLCByMiwgcnNhLT5lLCBjdHgpKQotKyAgICAgICAg ICAgIGdvdG8gZXJyOwotKyAgICAgICAgaWYgKEJOX2lzX29uZShyMSkpIHsKLSsgICAgICAgICAg ICBpbnQgcjsKLSsgICAgICAgICAgICByID0gQk5faXNfcHJpbWVfZmFzdHRlc3RfZXgocnNhLT5w LCBwYml0cyA+IDEwMjQgPyA0IDogNSwgY3R4LCAwLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjYik7Ci0rICAgICAgICAgICAgaWYgKHIgPT0gLTEgfHwgKHRlc3Qg JiYgciA8PSAwKSkKLSsgICAgICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgICAgICAgICAgaWYg KHIgPiAwKQotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIH0KLSsKLSsgICAgICAg IGlmICghQk5fR0VOQ0JfY2FsbChjYiwgMiwgbisrKSkKLSsgICAgICAgICAgICBnb3RvIGVycjsK LSsgICAgfQotKwotKyAgICBpZiAoIUJOX0dFTkNCX2NhbGwoY2IsIDMsIDApKQotKyAgICAgICAg Z290byBlcnI7Ci0rCi0rICAgIGlmIChpID49IDUgKiBwYml0cykKLSsgICAgICAgIC8qIHByaW1l IG5vdCBmb3VuZCAqLwotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIGZvciAoaSA9IDA7IGkg PCA1ICogcGJpdHM7IGkrKykgewotKyBxbG9vcDoKLSsgICAgICAgIGlmICghdGVzdCkKLSsgICAg ICAgICAgICBpZiAoIUJOX3JhbmQocnNhLT5xLCBwYml0cywgMCwgMSkpCi0rICAgICAgICAgICAg ICAgIGdvdG8gZXJyOwotKyAgICAgICAgaWYgKEJOX2NtcChyc2EtPnEsIHIwKSA8IDApIHsKLSsg ICAgICAgICAgICBpZiAodGVzdCkKLSsgICAgICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgICAg ICAgICAgZ290byBxbG9vcDsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmICghQk5fc3ViKHIyLCBy c2EtPnEsIHJzYS0+cCkpCi0rICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgICAgICBpZiAoQk5f dWNtcChyMiwgcjMpIDw9IDApIHsKLSsgICAgICAgICAgICBpZiAodGVzdCkKLSsgICAgICAgICAg ICAgICAgZ290byBlcnI7Ci0rICAgICAgICAgICAgZ290byBxbG9vcDsKLSsgICAgICAgIH0KLSsK LSsgICAgICAgIGlmICghQk5fc3ViKHIyLCByc2EtPnEsIEJOX3ZhbHVlX29uZSgpKSkKLSsgICAg ICAgICAgICBnb3RvIGVycjsKLSsgICAgICAgIGlmICghQk5fZ2NkKHIxLCByMiwgcnNhLT5lLCBj dHgpKQotKyAgICAgICAgICAgIGdvdG8gZXJyOwotKyAgICAgICAgaWYgKEJOX2lzX29uZShyMSkp IHsKLSsgICAgICAgICAgICBpbnQgcjsKLSsgICAgICAgICAgICByID0gQk5faXNfcHJpbWVfZmFz dHRlc3RfZXgocnNhLT5xLCBwYml0cyA+IDEwMjQgPyA0IDogNSwgY3R4LCAwLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYik7Ci0rICAgICAgICAgICAgaWYgKHIg PT0gLTEgfHwgKHRlc3QgJiYgciA8PSAwKSkKLSsgICAgICAgICAgICAgICAgZ290byBlcnI7Ci0r ICAgICAgICAgICAgaWYgKHIgPiAwKQotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAg IH0KLSsKLSsgICAgICAgIGlmICghQk5fR0VOQ0JfY2FsbChjYiwgMiwgbisrKSkKLSsgICAgICAg ICAgICBnb3RvIGVycjsKLSsgICAgfQotKwotKyAgICBpZiAoIUJOX0dFTkNCX2NhbGwoY2IsIDMs IDEpKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIGlmIChpID49IDUgKiBwYml0cykKLSsg ICAgICAgIC8qIHByaW1lIG5vdCBmb3VuZCAqLwotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAg IGlmICh0ZXN0KSB7Ci0rICAgICAgICAvKiBkbyBub3QgdHJ5IHRvIGNhbGN1bGF0ZSB0aGUgcmVt YWluaW5nIGtleSB2YWx1ZXMgKi8KLSsgICAgICAgIEJOX2NsZWFyKHJzYS0+bik7Ci0rICAgICAg ICBvayA9IDE7Ci0rICAgICAgICBnb3RvIGVycjsKLSsgICAgfQotKwotKyAgICBpZiAoQk5fY21w KHJzYS0+cCwgcnNhLT5xKSA8IDApIHsKLSsgICAgICAgIHRtcCA9IHJzYS0+cDsKLSsgICAgICAg IHJzYS0+cCA9IHJzYS0+cTsKLSsgICAgICAgIHJzYS0+cSA9IHRtcDsKLSsgICAgfQotKwotKyAg ICAvKiBjYWxjdWxhdGUgbiAqLwotKyAgICBpZiAoIUJOX211bChyc2EtPm4sIHJzYS0+cCwgcnNh LT5xLCBjdHgpKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIC8qIGNhbGN1bGF0ZSBkICov Ci0rICAgIGlmICghQk5fc3ViKHIxLCByc2EtPnAsIEJOX3ZhbHVlX29uZSgpKSkKLSsgICAgICAg IGdvdG8gZXJyOyAgICAgICAgICAgICAgIC8qIHAtMSAqLwotKyAgICBpZiAoIUJOX3N1YihyMiwg cnNhLT5xLCBCTl92YWx1ZV9vbmUoKSkpCi0rICAgICAgICBnb3RvIGVycjsgICAgICAgICAgICAg ICAvKiBxLTEgKi8KLSsKLSsgICAgaWYgKCFCTl9nY2QocjAsIHIxLCByMiwgY3R4KSkKLSsgICAg ICAgIGdvdG8gZXJyOwotKyAgICBpZiAoIShyc2EtPmZsYWdzICYgUlNBX0ZMQUdfTk9fQ09OU1RU SU1FKSkgewotKyAgICAgICAgcHIwID0gJmxvY2FsX3IwOwotKyAgICAgICAgQk5fd2l0aF9mbGFn cyhwcjAsIHIwLCBCTl9GTEdfQ09OU1RUSU1FKTsKLSsgICAgfSBlbHNlCi0rICAgICAgICBwcjAg PSByMDsKLSsgICAgaWYgKCFCTl9kaXYocjAsIE5VTEwsIHIxLCBwcjAsIGN0eCkpCi0rICAgICAg ICBnb3RvIGVycjsKLSsgICAgaWYgKCFCTl9tdWwocjAsIHIwLCByMiwgY3R4KSkKLSsgICAgICAg IGdvdG8gZXJyOyAgICAgICAgICAgICAgIC8qIGxjbShwLTEsIHEtMSkgKi8KLSsKLSsgICAgaWYg KCEocnNhLT5mbGFncyAmIFJTQV9GTEFHX05PX0NPTlNUVElNRSkpIHsKLSsgICAgICAgIHByMCA9 ICZsb2NhbF9yMDsKLSsgICAgICAgIEJOX3dpdGhfZmxhZ3MocHIwLCByMCwgQk5fRkxHX0NPTlNU VElNRSk7Ci0rICAgIH0gZWxzZQotKyAgICAgICAgcHIwID0gcjA7Ci0rICAgIGlmICghQk5fbW9k X2ludmVyc2UocnNhLT5kLCByc2EtPmUsIHByMCwgY3R4KSkKLSsgICAgICAgIGdvdG8gZXJyOyAg ICAgICAgICAgICAgIC8qIGQgKi8KLSsKLSsgICAgaWYgKEJOX251bV9iaXRzKHJzYS0+ZCkgPCBw Yml0cykKLSsgICAgICAgIGdvdG8gcmV0cnk7ICAgICAgICAgICAgIC8qIGQgaXMgdG9vIHNtYWxs ICovCi0rCi0rICAgIC8qIHNldCB1cCBkIGZvciBjb3JyZWN0IEJOX0ZMR19DT05TVFRJTUUgZmxh ZyAqLwotKyAgICBpZiAoIShyc2EtPmZsYWdzICYgUlNBX0ZMQUdfTk9fQ09OU1RUSU1FKSkgewot KyAgICAgICAgZCA9ICZsb2NhbF9kOwotKyAgICAgICAgQk5fd2l0aF9mbGFncyhkLCByc2EtPmQs IEJOX0ZMR19DT05TVFRJTUUpOwotKyAgICB9IGVsc2UKLSsgICAgICAgIGQgPSByc2EtPmQ7Ci0r Ci0rICAgIC8qIGNhbGN1bGF0ZSBkIG1vZCAocC0xKSAqLwotKyAgICBpZiAoIUJOX21vZChyc2Et PmRtcDEsIGQsIHIxLCBjdHgpKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIC8qIGNhbGN1 bGF0ZSBkIG1vZCAocS0xKSAqLwotKyAgICBpZiAoIUJOX21vZChyc2EtPmRtcTEsIGQsIHIyLCBj dHgpKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIC8qIGNhbGN1bGF0ZSBpbnZlcnNlIG9m IHEgbW9kIHAgKi8KLSsgICAgaWYgKCEocnNhLT5mbGFncyAmIFJTQV9GTEFHX05PX0NPTlNUVElN RSkpIHsKLSsgICAgICAgIHAgPSAmbG9jYWxfcDsKLSsgICAgICAgIEJOX3dpdGhfZmxhZ3MocCwg cnNhLT5wLCBCTl9GTEdfQ09OU1RUSU1FKTsKLSsgICAgfSBlbHNlCi0rICAgICAgICBwID0gcnNh LT5wOwotKyAgICBpZiAoIUJOX21vZF9pbnZlcnNlKHJzYS0+aXFtcCwgcnNhLT5xLCBwLCBjdHgp KQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIGlmIChmaXBzX3JzYV9wYWlyd2lzZV9mYWls KQotKyAgICAgICAgQk5fYWRkX3dvcmQocnNhLT5uLCAxKTsKLSsKLSsgICAgaWYgKCFmaXBzX2No ZWNrX3JzYShyc2EpKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIG9rID0gMTsKLSsgZXJy OgotKyAgICBpZiAob2sgPT0gLTEpIHsKLSsgICAgICAgIFJTQWVycihSU0FfRl9SU0FfQlVJTFRJ Tl9LRVlHRU4sIEVSUl9MSUJfQk4pOwotKyAgICAgICAgb2sgPSAwOwotKyAgICB9Ci0rICAgIGlm IChjdHggIT0gTlVMTCkgewotKyAgICAgICAgQk5fQ1RYX2VuZChjdHgpOwotKyAgICAgICAgQk5f Q1RYX2ZyZWUoY3R4KTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gb2s7Ci0rfQotKyNlbmRpZgot KwotIHN0YXRpYyBpbnQgcnNhX2J1aWx0aW5fa2V5Z2VuKFJTQSAqcnNhLCBpbnQgYml0cywgQklH TlVNICplX3ZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJOX0dFTkNCICpj YikKLSB7Ci1AQCAtMTgwLDE1ICs0MzQsMTEgQEAgc3RhdGljIGludCByc2FfYnVpbHRpbl9rZXln ZW4oUlNBICpyc2EsCi0gCi0gI2lmZGVmIE9QRU5TU0xfRklQUwotICAgICBpZiAoRklQU19tb2R1 bGVfbW9kZSgpKSB7Ci0tICAgICAgICBpZiAoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkgewotLSAg ICAgICAgICAgIEZJUFNlcnIoRklQU19GX1JTQV9CVUlMVElOX0tFWUdFTiwgRklQU19SX0ZJUFNf U0VMRlRFU1RfRkFJTEVEKTsKLS0gICAgICAgICAgICByZXR1cm4gMDsKLS0gICAgICAgIH0KLS0K LSAgICAgICAgIGlmIChiaXRzIDwgT1BFTlNTTF9SU0FfRklQU19NSU5fTU9EVUxVU19CSVRTKSB7 Ci0gICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX0JVSUxUSU5fS0VZR0VOLCBGSVBTX1Jf S0VZX1RPT19TSE9SVCk7Ci0gICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICB9Ci0rICAg ICAgICByZXR1cm4gRklQU19yc2FfYnVpbHRpbl9rZXlnZW4ocnNhLCBiaXRzLCBlX3ZhbHVlLCBj Yik7Ci0gICAgIH0KLSAjZW5kaWYKLSAKLUBAIC0zMTcsMTYgKzU2Nyw2IEBAIHN0YXRpYyBpbnQg cnNhX2J1aWx0aW5fa2V5Z2VuKFJTQSAqcnNhLAotICAgICBpZiAoIUJOX21vZF9pbnZlcnNlKHJz YS0+aXFtcCwgcnNhLT5xLCBwLCBjdHgpKQotICAgICAgICAgZ290byBlcnI7Ci0gCi0tI2lmZGVm IE9QRU5TU0xfRklQUwotLSAgICBpZiAoRklQU19tb2R1bGVfbW9kZSgpKSB7Ci0tICAgICAgICBp ZiAoZmlwc19yc2FfcGFpcndpc2VfZmFpbCkKLS0gICAgICAgICAgICBCTl9hZGRfd29yZChyc2Et Pm4sIDEpOwotLQotLSAgICAgICAgaWYgKCFmaXBzX2NoZWNrX3JzYShyc2EpKQotLSAgICAgICAg ICAgIGdvdG8gZXJyOwotLSAgICB9Ci0tI2VuZGlmCi0tCi0gICAgIG9rID0gMTsKLSAgZXJyOgot ICAgICBpZiAob2sgPT0gLTEpIHsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL3NzbC90MV9lbmMu Yy5maXBzLXJlcXMgb3BlbnNzbC0xLjAuMmkvc3NsL3QxX2VuYy5jCi0tLS0gb3BlbnNzbC0xLjAu Mmkvc3NsL3QxX2VuYy5jLmZpcHMtcmVxcwkyMDE2LTA5LTIyIDEyOjIzOjA2LjAwMDAwMDAwMCAr MDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL3NzbC90MV9lbmMuYwkyMDE2LTA5LTIyIDEzOjU0OjI2 LjUzODg0ODU2NSArMDIwMAotQEAgLTI5Miw2ICsyOTIsMjMgQEAgc3RhdGljIGludCB0bHMxX1BS Rihsb25nIGRpZ2VzdF9tYXNrLAotICAgICByZXR1cm4gcmV0OwotIH0KLSAKLStpbnQgcHJpdmF0 ZV90bHMxX1BSRihsb25nIGRpZ2VzdF9tYXNrLAotKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHZvaWQgKnNlZWQxLCBpbnQgc2VlZDFfbGVuLAotKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHZvaWQgKnNlZWQyLCBpbnQgc2VlZDJfbGVuLAotKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHZvaWQgKnNlZWQzLCBpbnQgc2VlZDNfbGVuLAotKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHZvaWQgKnNlZWQ0LCBpbnQgc2VlZDRfbGVuLAotKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHZvaWQgKnNlZWQ1LCBpbnQgc2VlZDVfbGVuLAotKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHVuc2lnbmVkIGNoYXIgKnNlYywgaW50IHNsZW4sCi0rICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgY2hhciAqb3V0MSwgdW5zaWduZWQgY2hhciAqb3V0MiwgaW50IG9sZW4pCi0rewotKyAg ICByZXR1cm4gdGxzMV9QUkYoZGlnZXN0X21hc2ssCi0rICAgICAgICAgICAgICAgICAgICBzZWVk MSwgc2VlZDFfbGVuLAotKyAgICAgICAgICAgICAgICAgICAgc2VlZDIsIHNlZWQyX2xlbiwKLSsg ICAgICAgICAgICAgICAgICAgIHNlZWQzLCBzZWVkM19sZW4sCi0rICAgICAgICAgICAgICAgICAg ICBzZWVkNCwgc2VlZDRfbGVuLAotKyAgICAgICAgICAgICAgICAgICAgc2VlZDUsIHNlZWQ1X2xl biwgc2VjLCBzbGVuLCBvdXQxLCBvdXQyLCBvbGVuKTsKLSt9Ci0rCi0gc3RhdGljIGludCB0bHMx X2dlbmVyYXRlX2tleV9ibG9jayhTU0wgKnMsIHVuc2lnbmVkIGNoYXIgKmttLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqdG1wLCBpbnQgbnVtKQot IHsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4yaS1zZWN1cmUtZ2V0ZW52LnBhdGNoIGIvb3Bl bnNzbC0xLjAuMmktc2VjdXJlLWdldGVudi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggZGE4NzI4ZS4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4yaS1zZWN1cmUtZ2V0ZW52 LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQxICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjJpL2NyeXB0by9jb25mL2NvbmZfYXBpLmMuc2VjdXJlLWdldGVudiBvcGVuc3NsLTEuMC4y aS9jcnlwdG8vY29uZi9jb25mX2FwaS5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2NvbmYv Y29uZl9hcGkuYy5zZWN1cmUtZ2V0ZW52CTIwMTYtMDktMjIgMTI6MjM6MDYuMDAwMDAwMDAwICsw MjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2NvbmYvY29uZl9hcGkuYwkyMDE2LTA5LTIy IDEzOjUxOjI5Ljg0Nzc0MjIwOSArMDIwMAotQEAgLTYzLDYgKzYzLDggQEAKLSAjIGRlZmluZSBO REVCVUcKLSAjZW5kaWYKLSAKLSsvKiBmb3Igc2VjdXJlX2dldGVudiAqLwotKyNkZWZpbmUgX0dO VV9TT1VSQ0UKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNp bmNsdWRlIDxzdHJpbmcuaD4KLUBAIC0xNDEsNyArMTQzLDcgQEAgY2hhciAqX0NPTkZfZ2V0X3N0 cmluZyhjb25zdCBDT05GICpjb25mLAotICAgICAgICAgICAgIGlmICh2ICE9IE5VTEwpCi0gICAg ICAgICAgICAgICAgIHJldHVybiAodi0+dmFsdWUpOwotICAgICAgICAgICAgIGlmIChzdHJjbXAo c2VjdGlvbiwgIkVOViIpID09IDApIHsKLS0gICAgICAgICAgICAgICAgcCA9IGdldGVudihuYW1l KTsKLSsgICAgICAgICAgICAgICAgcCA9IHNlY3VyZV9nZXRlbnYobmFtZSk7Ci0gICAgICAgICAg ICAgICAgIGlmIChwICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHApOwot ICAgICAgICAgICAgIH0KLUBAIC0xNTQsNyArMTU2LDcgQEAgY2hhciAqX0NPTkZfZ2V0X3N0cmlu Zyhjb25zdCBDT05GICpjb25mLAotICAgICAgICAgZWxzZQotICAgICAgICAgICAgIHJldHVybiAo TlVMTCk7Ci0gICAgIH0gZWxzZQotLSAgICAgICAgcmV0dXJuIChnZXRlbnYobmFtZSkpOwotKyAg ICAgICAgcmV0dXJuIChzZWN1cmVfZ2V0ZW52KG5hbWUpKTsKLSB9Ci0gCi0gI2lmIDAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvKiBUaGVyZSdzIG5vIHdheSB0byBwcm92aWRlIGVycm9yIGNo ZWNraW5nCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vY29uZi9jb25mX21vZC5jLnNl Y3VyZS1nZXRlbnYgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2NvbmYvY29uZl9tb2QuYwotLS0tIG9w ZW5zc2wtMS4wLjJpL2NyeXB0by9jb25mL2NvbmZfbW9kLmMuc2VjdXJlLWdldGVudgkyMDE2LTA5 LTIyIDEyOjIzOjA2LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9j b25mL2NvbmZfbW9kLmMJMjAxNi0wOS0yMiAxMzo1MToyOS44NDc3NDIyMDkgKzAyMDAKLUBAIC01 Nyw2ICs1Nyw4IEBACi0gICoKLSAgKi8KLSAKLSsvKiBmb3Igc2VjdXJlX2dldGVudiAqLwotKyNk ZWZpbmUgX0dOVV9TT1VSQ0UKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8Y3R5cGUu aD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KLUBAIC01MzAsNyArNTMyLDcgQEAgY2hh ciAqQ09ORl9nZXQxX2RlZmF1bHRfY29uZmlnX2ZpbGUodm9pZAotICAgICBjaGFyICpmaWxlOwot ICAgICBpbnQgbGVuOwotIAotLSAgICBmaWxlID0gZ2V0ZW52KCJPUEVOU1NMX0NPTkYiKTsKLSsg ICAgZmlsZSA9IHNlY3VyZV9nZXRlbnYoIk9QRU5TU0xfQ09ORiIpOwotICAgICBpZiAoZmlsZSkK LSAgICAgICAgIHJldHVybiBCVUZfc3RyZHVwKGZpbGUpOwotIAotZGlmZiAtdXAgb3BlbnNzbC0x LjAuMmkvY3J5cHRvL2VuZ2luZS9lbmdfbGlzdC5jLnNlY3VyZS1nZXRlbnYgb3BlbnNzbC0xLjAu MmkvY3J5cHRvL2VuZ2luZS9lbmdfbGlzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMmkvY3J5cHRvL2Vu Z2luZS9lbmdfbGlzdC5jLnNlY3VyZS1nZXRlbnYJMjAxNi0wOS0yMiAxMjoyMzowNi4wMDAwMDAw MDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vZW5naW5lL2VuZ19saXN0LmMJMjAx Ni0wOS0yMiAxMzo1MToyOS44NDc3NDIyMDkgKzAyMDAKLUBAIC02Miw2ICs2Miw4IEBACi0gICog U1VOIE1JQ1JPU1lTVEVNUywgSU5DLiwgYW5kIGNvbnRyaWJ1dGVkIHRvIHRoZSBPcGVuU1NMIHBy b2plY3QuCi0gICovCi0gCi0rLyogZm9yIHNlY3VyZV9nZXRlbnYgKi8KLSsjZGVmaW5lIF9HTlVf U09VUkNFCi0gI2luY2x1ZGUgImVuZ19pbnQuaCIKLSAKLSAvKgotQEAgLTM2OSwxMCArMzcxLDEw IEBAIEVOR0lORSAqRU5HSU5FX2J5X2lkKGNvbnN0IGNoYXIgKmlkKQotICAgICAgKi8KLSAgICAg aWYgKHN0cmNtcChpZCwgImR5bmFtaWMiKSkgewotICMgaWZkZWYgT1BFTlNTTF9TWVNfVk1TCi0t ICAgICAgICBpZiAoKGxvYWRfZGlyID0gZ2V0ZW52KCJPUEVOU1NMX0VOR0lORVMiKSkgPT0gMCkK LSsgICAgICAgIGlmIChPUEVOU1NMX2lzc2V0dWdpZCgpIHx8IChsb2FkX2RpciA9IGdldGVudigi T1BFTlNTTF9FTkdJTkVTIikpID09IDApCi0gICAgICAgICAgICAgbG9hZF9kaXIgPSAiU1NMUk9P VDpbRU5HSU5FU10iOwotICMgZWxzZQotLSAgICAgICAgaWYgKChsb2FkX2RpciA9IGdldGVudigi T1BFTlNTTF9FTkdJTkVTIikpID09IDApCi0rICAgICAgICBpZiAoKGxvYWRfZGlyID0gc2VjdXJl X2dldGVudigiT1BFTlNTTF9FTkdJTkVTIikpID09IDApCi0gICAgICAgICAgICAgbG9hZF9kaXIg PSBFTkdJTkVTRElSOwotICMgZW5kaWYKLSAgICAgICAgIGl0ZXJhdG9yID0gRU5HSU5FX2J5X2lk KCJkeW5hbWljIik7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vbWQ1L21kNV9kZ3N0 LmMuc2VjdXJlLWdldGVudiBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vbWQ1L21kNV9kZ3N0LmMKLS0t LSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vbWQ1L21kNV9kZ3N0LmMuc2VjdXJlLWdldGVudgkyMDE2 LTA5LTIyIDEzOjUxOjI5Ljg0MDc0MjA0NyArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0 by9tZDUvbWQ1X2Rnc3QuYwkyMDE2LTA5LTIyIDEzOjUxOjI5Ljg0Nzc0MjIwOSArMDIwMAotQEAg LTU2LDYgKzU2LDggQEAKLSAgKiBbaW5jbHVkaW5nIHRoZSBHTlUgUHVibGljIExpY2VuY2UuXQot ICAqLwotIAotKy8qIGZvciBzZWN1cmVfZ2V0ZW52ICovCi0rI2RlZmluZSBfR05VX1NPVVJDRQot ICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlICJtZDVfbG9jbC5oIgotICNpbmNsdWRlIDxv cGVuc3NsL29wZW5zc2x2Lmg+Ci1AQCAtNzUsNyArNzcsOCBAQCBjb25zdCBjaGFyIE1ENV92ZXJz aW9uW10gPSAiTUQ1IiBPUEVOU1NMCi0gaW50IE1ENV9Jbml0KE1ENV9DVFggKmMpCi0gI2lmZGVm IE9QRU5TU0xfRklQUwotIHsKLS0gICAgaWYgKEZJUFNfbW9kZSgpICYmIGdldGVudigiT1BFTlNT TF9GSVBTX05PTl9BUFBST1ZFRF9NRDVfQUxMT1ciKSA9PSBOVUxMKQotKyAgICBpZiAoRklQU19t b2RlKCkKLSsgICAgICAgICYmIHNlY3VyZV9nZXRlbnYoIk9QRU5TU0xfRklQU19OT05fQVBQUk9W RURfTUQ1X0FMTE9XIikgPT0gTlVMTCkKLSAgICAgICAgIE9wZW5TU0xEaWUoX19GSUxFX18sIF9f TElORV9fLCAiRGlnZXN0IE1ENSBmb3JiaWRkZW4gaW4gRklQUyBtb2RlISIpOwotICAgICByZXR1 cm4gcHJpdmF0ZV9NRDVfSW5pdChjKTsKLSB9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlw dG8vb19pbml0LmMuc2VjdXJlLWdldGVudiBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vb19pbml0LmMK LS0tLSBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vb19pbml0LmMuc2VjdXJlLWdldGVudgkyMDE2LTA5 LTIyIDEzOjUxOjI5LjgzMDc0MTgxNCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9v X2luaXQuYwkyMDE2LTA5LTIyIDEzOjUxOjMwLjA0Njc0NjgzNCArMDIwMAotQEAgLTUzLDYgKzUz LDggQEAKLSAgKgotICAqLwotIAotKy8qIGZvciBzZWN1cmVfZ2V0ZW52ICovCi0rI2RlZmluZSBf R05VX1NPVVJDRQotICNpbmNsdWRlIDxlX29zLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+ Ci0gI2lmZGVmIE9QRU5TU0xfRklQUwotQEAgLTcyLDcgKzc0LDcgQEAgc3RhdGljIHZvaWQgaW5p dF9maXBzX21vZGUodm9pZCkKLSAgICAgY2hhciBidWZbMl0gPSAiMCI7Ci0gICAgIGludCBmZDsK LSAKLS0gICAgaWYgKGdldGVudigiT1BFTlNTTF9GT1JDRV9GSVBTX01PREUiKSAhPSBOVUxMKSB7 Ci0rICAgIGlmIChzZWN1cmVfZ2V0ZW52KCJPUEVOU1NMX0ZPUkNFX0ZJUFNfTU9ERSIpICE9IE5V TEwpIHsKLSAgICAgICAgIGJ1ZlswXSA9ICcxJzsKLSAgICAgfSBlbHNlIGlmICgoZmQgPSBvcGVu KEZJUFNfTU9ERV9TV0lUQ0hfRklMRSwgT19SRE9OTFkpKSA+PSAwKSB7Ci0gICAgICAgICB3aGls ZSAocmVhZChmZCwgYnVmLCBzaXplb2YoYnVmKSkgPCAwICYmIGVycm5vID09IEVJTlRSKSA7Ci1k aWZmIC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8vcmFuZC9yYW5kZmlsZS5jLnNlY3VyZS1nZXRl bnYgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL3JhbmQvcmFuZGZpbGUuYwotLS0tIG9wZW5zc2wtMS4w LjJpL2NyeXB0by9yYW5kL3JhbmRmaWxlLmMuc2VjdXJlLWdldGVudgkyMDE2LTA5LTIyIDEyOjIz OjA2LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by9yYW5kL3JhbmRm aWxlLmMJMjAxNi0wOS0yMiAxMzo1MzoxNy4yMjIyMzc2MjYgKzAyMDAKLUBAIC01NSw2ICs1NSw4 IEBACi0gICogY29waWVkIGFuZCBwdXQgdW5kZXIgYW5vdGhlciBkaXN0cmlidXRpb24gbGljZW5j ZQotICAqIFtpbmNsdWRpbmcgdGhlIEdOVSBQdWJsaWMgTGljZW5jZS5dCi0gICovCi0rLyogZm9y IHNlY3VyZV9nZXRlbnYgKi8KLSsjZGVmaW5lIF9HTlVfU09VUkNFCi0gCi0gI2luY2x1ZGUgPGVy cm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1AQCAtMzI3LDE0ICszMjksMTIgQEAgY29uc3Qg Y2hhciAqUkFORF9maWxlX25hbWUoY2hhciAqYnVmLCBzaQotICAgICBzdHJ1Y3Qgc3RhdCBzYjsK LSAjZW5kaWYKLSAKLS0gICAgaWYgKE9QRU5TU0xfaXNzZXR1Z2lkKCkgPT0gMCkKLS0gICAgICAg IHMgPSBnZXRlbnYoIlJBTkRGSUxFIik7Ci0rICAgIHMgPSBzZWN1cmVfZ2V0ZW52KCJSQU5ERklM RSIpOwotICAgICBpZiAocyAhPSBOVUxMICYmICpzICYmIHN0cmxlbihzKSArIDEgPCBzaXplKSB7 Ci0gICAgICAgICBpZiAoQlVGX3N0cmxjcHkoYnVmLCBzLCBzaXplKSA+PSBzaXplKQotICAgICAg ICAgICAgIHJldHVybiBOVUxMOwotICAgICB9IGVsc2UgewotLSAgICAgICAgaWYgKE9QRU5TU0xf aXNzZXR1Z2lkKCkgPT0gMCkKLS0gICAgICAgICAgICBzID0gZ2V0ZW52KCJIT01FIik7Ci0rICAg ICAgICBzID0gc2VjdXJlX2dldGVudigiSE9NRSIpOwotICNpZmRlZiBERUZBVUxUX0hPTUUKLSAg ICAgICAgIGlmIChzID09IE5VTEwpIHsKLSAgICAgICAgICAgICBzID0gREVGQVVMVF9IT01FOwot ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL3g1MDkvYnlfZGlyLmMuc2VjdXJlLWdldGVu diBvcGVuc3NsLTEuMC4yaS9jcnlwdG8veDUwOS9ieV9kaXIuYwotLS0tIG9wZW5zc2wtMS4wLjJp L2NyeXB0by94NTA5L2J5X2Rpci5jLnNlY3VyZS1nZXRlbnYJMjAxNi0wOS0yMiAxMjoyMzowNi4w MDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9jcnlwdG8veDUwOS9ieV9kaXIuYwky MDE2LTA5LTIyIDEzOjUxOjMwLjA0Nzc0Njg1OCArMDIwMAotQEAgLTU2LDYgKzU2LDggQEAKLSAg KiBbaW5jbHVkaW5nIHRoZSBHTlUgUHVibGljIExpY2VuY2UuXQotICAqLwotIAotKy8qIGZvciBz ZWN1cmVfZ2V0ZW52ICovCi0rI2RlZmluZSBfR05VX1NPVVJDRQotICNpbmNsdWRlIDxzdGRpby5o PgotICNpbmNsdWRlIDx0aW1lLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci1AQCAtMTI4LDcgKzEz MCw3IEBAIHN0YXRpYyBpbnQgZGlyX2N0cmwoWDUwOV9MT09LVVAgKmN0eCwgaW4KLSAgICAgc3dp dGNoIChjbWQpIHsKLSAgICAgY2FzZSBYNTA5X0xfQUREX0RJUjoKLSAgICAgICAgIGlmIChhcmds ID09IFg1MDlfRklMRVRZUEVfREVGQVVMVCkgewotLSAgICAgICAgICAgIGRpciA9IChjaGFyICop Z2V0ZW52KFg1MDlfZ2V0X2RlZmF1bHRfY2VydF9kaXJfZW52KCkpOwotKyAgICAgICAgICAgIGRp ciA9IChjaGFyICopc2VjdXJlX2dldGVudihYNTA5X2dldF9kZWZhdWx0X2NlcnRfZGlyX2Vudigp KTsKLSAgICAgICAgICAgICBpZiAoZGlyKQotICAgICAgICAgICAgICAgICByZXQgPSBhZGRfY2Vy dF9kaXIobGQsIGRpciwgWDUwOV9GSUxFVFlQRV9QRU0pOwotICAgICAgICAgICAgIGVsc2UKLWRp ZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2NyeXB0by94NTA5L2J5X2ZpbGUuYy5zZWN1cmUtZ2V0ZW52 IG9wZW5zc2wtMS4wLjJpL2NyeXB0by94NTA5L2J5X2ZpbGUuYwotLS0tIG9wZW5zc2wtMS4wLjJp L2NyeXB0by94NTA5L2J5X2ZpbGUuYy5zZWN1cmUtZ2V0ZW52CTIwMTYtMDktMjIgMTM6NTE6Mjku ODEyNzQxMzk2ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvY3J5cHRvL3g1MDkvYnlfZmlsZS5j CTIwMTYtMDktMjIgMTM6NTE6MzAuMDQ3NzQ2ODU4ICswMjAwCi1AQCAtNTYsNiArNTYsOCBAQAot ICAqIFtpbmNsdWRpbmcgdGhlIEdOVSBQdWJsaWMgTGljZW5jZS5dCi0gICovCi0gCi0rLyogZm9y IHNlY3VyZV9nZXRlbnYgKi8KLSsjZGVmaW5lIF9HTlVfU09VUkNFCi0gI2luY2x1ZGUgPHN0ZGlv Lmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLUBAIC05Nyw3ICs5 OSw3IEBAIHN0YXRpYyBpbnQgYnlfZmlsZV9jdHJsKFg1MDlfTE9PS1VQICpjdHgKLSAgICAgc3dp dGNoIChjbWQpIHsKLSAgICAgY2FzZSBYNTA5X0xfRklMRV9MT0FEOgotICAgICAgICAgaWYgKGFy Z2wgPT0gWDUwOV9GSUxFVFlQRV9ERUZBVUxUKSB7Ci0tICAgICAgICAgICAgZmlsZSA9IChjaGFy ICopZ2V0ZW52KFg1MDlfZ2V0X2RlZmF1bHRfY2VydF9maWxlX2VudigpKTsKLSsgICAgICAgICAg ICBmaWxlID0gKGNoYXIgKilzZWN1cmVfZ2V0ZW52KFg1MDlfZ2V0X2RlZmF1bHRfY2VydF9maWxl X2VudigpKTsKLSAgICAgICAgICAgICBpZiAoZmlsZSkKLSAgICAgICAgICAgICAgICAgb2sgPSAo WDUwOV9sb2FkX2NlcnRfY3JsX2ZpbGUoY3R4LCBmaWxlLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBYNTA5X0ZJTEVUWVBFX1BFTSkgIT0gMCk7Ci1kaWZm IC11cCBvcGVuc3NsLTEuMC4yaS9jcnlwdG8veDUwOS94NTA5X3ZmeS5jLnNlY3VyZS1nZXRlbnYg b3BlbnNzbC0xLjAuMmkvY3J5cHRvL3g1MDkveDUwOV92ZnkuYwotLS0tIG9wZW5zc2wtMS4wLjJp L2NyeXB0by94NTA5L3g1MDlfdmZ5LmMuc2VjdXJlLWdldGVudgkyMDE2LTA5LTIyIDEyOjIzOjA2 LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2NyeXB0by94NTA5L3g1MDlfdmZ5 LmMJMjAxNi0wOS0yMiAxMzo1MTozMC4wNDg3NDY4ODEgKzAyMDAKLUBAIC01Niw2ICs1Niw4IEBA Ci0gICogW2luY2x1ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNlbmNlLl0KLSAgKi8KLSAKLSsvKiBm b3Igc2VjdXJlX2dldGVudiAqLwotKyNkZWZpbmUgX0dOVV9TT1VSQ0UKLSAjaW5jbHVkZSA8c3Rk aW8uaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotQEAgLTYyMCw3 ICs2MjIsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2NoYWluX2V4dGVuc2lvbnMoWDUwOV9TCi0gICAg ICAgICAgKiBBIGhhY2sgdG8ga2VlcCBwZW9wbGUgd2hvIGRvbid0IHdhbnQgdG8gbW9kaWZ5IHRo ZWlyIHNvZnR3YXJlCi0gICAgICAgICAgKiBoYXBweQotICAgICAgICAgICovCi0tICAgICAgICBp ZiAoZ2V0ZW52KCJPUEVOU1NMX0FMTE9XX1BST1hZX0NFUlRTIikpCi0rICAgICAgICBpZiAoc2Vj dXJlX2dldGVudigiT1BFTlNTTF9BTExPV19QUk9YWV9DRVJUUyIpKQotICAgICAgICAgICAgIGFs bG93X3Byb3h5X2NlcnRzID0gMTsKLSAgICAgICAgIHB1cnBvc2UgPSBjdHgtPnBhcmFtLT5wdXJw b3NlOwotICAgICB9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9lbmdpbmVzL2NjZ29zdC9nb3N0 X2N0bC5jLnNlY3VyZS1nZXRlbnYgb3BlbnNzbC0xLjAuMmkvZW5naW5lcy9jY2dvc3QvZ29zdF9j dGwuYwotLS0tIG9wZW5zc2wtMS4wLjJpL2VuZ2luZXMvY2Nnb3N0L2dvc3RfY3RsLmMuc2VjdXJl LWdldGVudgkyMDE2LTA5LTIyIDEyOjIzOjA2LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wt MS4wLjJpL2VuZ2luZXMvY2Nnb3N0L2dvc3RfY3RsLmMJMjAxNi0wOS0yMiAxMzo1MTozMC4wNDg3 NDY4ODEgKzAyMDAKLUBAIC02LDYgKzYsOCBAQAotICAqICAgICAgICBJbXBsZW1lbnRhdGlvbiBv ZiBjb250cm9sIGNvbW1hbmRzIGZvciBHT1NUIGVuZ2luZSAgICAgICAgICAqCi0gICogICAgICAg ICAgICBPcGVuU1NMIDAuOS45IGxpYnJhcmllcyByZXF1aXJlZCAgICAgICAgICAgICAgICAgICAg ICAgICoKLSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KLSsvKiBmb3Igc2VjdXJlX2dldGVudiAqLwotKyNkZWZp bmUgX0dOVV9TT1VSQ0UKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5o PgotICNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgotQEAgLTY0LDcgKzY2LDcgQEAgY29uc3Qg Y2hhciAqZ2V0X2dvc3RfZW5naW5lX3BhcmFtKGludCBwYQotICAgICBpZiAoZ29zdF9wYXJhbXNb cGFyYW1dICE9IE5VTEwpIHsKLSAgICAgICAgIHJldHVybiBnb3N0X3BhcmFtc1twYXJhbV07Ci0g ICAgIH0KLS0gICAgdG1wID0gZ2V0ZW52KGdvc3RfZW52bmFtZXNbcGFyYW1dKTsKLSsgICAgdG1w ID0gc2VjdXJlX2dldGVudihnb3N0X2Vudm5hbWVzW3BhcmFtXSk7Ci0gICAgIGlmICh0bXApIHsK LSAgICAgICAgIGlmIChnb3N0X3BhcmFtc1twYXJhbV0pCi0gICAgICAgICAgICAgT1BFTlNTTF9m cmVlKGdvc3RfcGFyYW1zW3BhcmFtXSk7Ci1AQCAtNzksNyArODEsNyBAQCBpbnQgZ29zdF9zZXRf ZGVmYXVsdF9wYXJhbShpbnQgcGFyYW0sIGNvCi0gICAgIGNvbnN0IGNoYXIgKnRtcDsKLSAgICAg aWYgKHBhcmFtIDwgMCB8fCBwYXJhbSA+IEdPU1RfUEFSQU1fTUFYKQotICAgICAgICAgcmV0dXJu IDA7Ci0tICAgIHRtcCA9IGdldGVudihnb3N0X2Vudm5hbWVzW3BhcmFtXSk7Ci0rICAgIHRtcCA9 IHNlY3VyZV9nZXRlbnYoZ29zdF9lbnZuYW1lc1twYXJhbV0pOwotICAgICAvKgotICAgICAgKiBp ZiB0aGVyZSBpcyB2YWx1ZSBpbiB0aGUgZW52aXJvbm1lbnQsIHVzZSBpdCwgZWxzZSAtcGFzc2Vk IHN0cmluZyAqCi0gICAgICAqLwoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJpLXRydXN0ZWQt Zmlyc3QtZG9jLnBhdGNoIGIvb3BlbnNzbC0xLjAuMmktdHJ1c3RlZC1maXJzdC1kb2MucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyZWEwMWUuLjAwMDAwMDAKLS0tIGEvb3Bl bnNzbC0xLjAuMmktdHJ1c3RlZC1maXJzdC1kb2MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwy ODYgKzAsMCBAQAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvYXBwcy9jbXMuYy50cnVzdGVkLWZp cnN0IG9wZW5zc2wtMS4wLjJpL2FwcHMvY21zLmMKLS0tLSBvcGVuc3NsLTEuMC4yaS9hcHBzL2Nt cy5jLnRydXN0ZWQtZmlyc3QJMjAxNi0wOS0yMiAxMjoyMzowNi4wMDAwMDAwMDAgKzAyMDAKLSsr KyBvcGVuc3NsLTEuMC4yaS9hcHBzL2Ntcy5jCTIwMTYtMDktMjIgMTQ6MDE6MjcuNDM2NjMwMzU5 ICswMjAwCi1AQCAtNjQ2LDYgKzY0Niw4IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJn dikKLSAgICAgICAgICAgICAgICAgICAgIi1DQXBhdGggZGlyICAgIHRydXN0ZWQgY2VydGlmaWNh dGVzIGRpcmVjdG9yeVxuIik7Ci0gICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICItQ0FmaWxl IGZpbGUgICB0cnVzdGVkIGNlcnRpZmljYXRlcyBmaWxlXG4iKTsKLSAgICAgICAgIEJJT19wcmlu dGYoYmlvX2VyciwKLSsgICAgICAgICAgICAgICAgICAgIi10cnVzdGVkX2ZpcnN0IHVzZSB0cnVz dGVkIGNlcnRpZmljYXRlcyBmaXJzdCB3aGVuIGJ1aWxkaW5nIHRoZSB0cnVzdCBjaGFpblxuIik7 Ci0rICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0gICAgICAgICAgICAgICAgICAgICItbm9f YWx0X2NoYWlucyBvbmx5IGV2ZXIgdXNlIHRoZSBmaXJzdCBjZXJ0aWZpY2F0ZSBjaGFpbiBmb3Vu ZFxuIik7Ci0gICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0gICAgICAgICAgICAgICAgICAg ICItY3JsX2NoZWNrICAgICBjaGVjayByZXZvY2F0aW9uIHN0YXR1cyBvZiBzaWduZXIncyBjZXJ0 aWZpY2F0ZSB1c2luZyBDUkxzXG4iKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2FwcHMvb2Nz cC5jLnRydXN0ZWQtZmlyc3Qgb3BlbnNzbC0xLjAuMmkvYXBwcy9vY3NwLmMKLS0tLSBvcGVuc3Ns LTEuMC4yaS9hcHBzL29jc3AuYy50cnVzdGVkLWZpcnN0CTIwMTYtMDktMjIgMTI6MjM6MDYuMDAw MDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvYXBwcy9vY3NwLmMJMjAxNi0wOS0yMiAx NDowMToyNy40MzY2MzAzNTkgKzAyMDAKLUBAIC01MzcsNiArNTM3LDggQEAgaW50IE1BSU4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLAotICAgICAg ICAgICAgICAgICAgICAiLUNBZmlsZSBmaWxlICAgICAgICAgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMg ZmlsZVxuIik7Ci0gICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0rICAgICAgICAgICAgICAg ICAgICItdHJ1c3RlZF9maXJzdCAgICAgICB1c2UgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgZmlyc3Qg d2hlbiBidWlsZGluZyB0aGUgdHJ1c3QgY2hhaW5cbiIpOwotKyAgICAgICAgQklPX3ByaW50Zihi aW9fZXJyLAotICAgICAgICAgICAgICAgICAgICAiLW5vX2FsdF9jaGFpbnMgICAgICAgb25seSBl dmVyIHVzZSB0aGUgZmlyc3QgY2VydGlmaWNhdGUgY2hhaW4gZm91bmRcbiIpOwotICAgICAgICAg QklPX3ByaW50ZihiaW9fZXJyLAotICAgICAgICAgICAgICAgICAgICAiLVZBZmlsZSBmaWxlICAg ICAgICAgdmFsaWRhdG9yIGNlcnRpZmljYXRlcyBmaWxlXG4iKTsKLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjJpL2FwcHMvc19jbGllbnQuYy50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjJpL2FwcHMv c19jbGllbnQuYwotLS0tIG9wZW5zc2wtMS4wLjJpL2FwcHMvc19jbGllbnQuYy50cnVzdGVkLWZp cnN0CTIwMTYtMDktMjIgMTQ6MDE6MjcuNDAyNjI5NTY5ICswMjAwCi0rKysgb3BlbnNzbC0xLjAu MmkvYXBwcy9zX2NsaWVudC5jCTIwMTYtMDktMjIgMTQ6MDE6MjcuNDM2NjMwMzU5ICswMjAwCi1A QCAtMzMwLDYgKzMzMCw4IEBAIHN0YXRpYyB2b2lkIHNjX3VzYWdlKHZvaWQpCi0gICAgIEJJT19w cmludGYoYmlvX2VyciwgIiAtQ0FwYXRoIGFyZyAgIC0gUEVNIGZvcm1hdCBkaXJlY3Rvcnkgb2Yg Q0Enc1xuIik7Ci0gICAgIEJJT19wcmludGYoYmlvX2VyciwgIiAtQ0FmaWxlIGFyZyAgIC0gUEVN IGZvcm1hdCBmaWxlIG9mIENBJ3NcbiIpOwotICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0rICAg ICAgICAgICAgICAgIiAtdHJ1c3RlZF9maXJzdCAtIFVzZSB0cnVzdGVkIENBJ3MgZmlyc3Qgd2hl biBidWlsZGluZyB0aGUgdHJ1c3QgY2hhaW5cbiIpOwotKyAgICBCSU9fcHJpbnRmKGJpb19lcnIs Ci0gICAgICAgICAgICAgICAgIiAtbm9fYWx0X2NoYWlucyAtIG9ubHkgZXZlciB1c2UgdGhlIGZp cnN0IGNlcnRpZmljYXRlIGNoYWluIGZvdW5kXG4iKTsKLSAgICAgQklPX3ByaW50ZihiaW9fZXJy LAotICAgICAgICAgICAgICAgICIgLXJlY29ubmVjdCAgICAtIERyb3AgYW5kIHJlLW1ha2UgdGhl IGNvbm5lY3Rpb24gd2l0aCB0aGUgc2FtZSBTZXNzaW9uLUlEXG4iKTsKLWRpZmYgLXVwIG9wZW5z c2wtMS4wLjJpL2FwcHMvc21pbWUuYy50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjJpL2FwcHMv c21pbWUuYwotLS0tIG9wZW5zc2wtMS4wLjJpL2FwcHMvc21pbWUuYy50cnVzdGVkLWZpcnN0CTIw MTYtMDktMjIgMTI6MjM6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvYXBw cy9zbWltZS5jCTIwMTYtMDktMjIgMTQ6MDE6MjcuNDM2NjMwMzU5ICswMjAwCi1AQCAtNDQyLDYg KzQ0Miw4IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgICAgICAg ICAgICAgIi1DQXBhdGggZGlyICAgIHRydXN0ZWQgY2VydGlmaWNhdGVzIGRpcmVjdG9yeVxuIik7 Ci0gICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICItQ0FmaWxlIGZpbGUgICB0cnVzdGVkIGNl cnRpZmljYXRlcyBmaWxlXG4iKTsKLSAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwKLSsgICAg ICAgICAgICAgICAgICAgIi10cnVzdGVkX2ZpcnN0IHVzZSB0cnVzdGVkIGNlcnRpZmljYXRlcyBm aXJzdCB3aGVuIGJ1aWxkaW5nIHRoZSB0cnVzdCBjaGFpblxuIik7Ci0rICAgICAgICBCSU9fcHJp bnRmKGJpb19lcnIsCi0gICAgICAgICAgICAgICAgICAgICItbm9fYWx0X2NoYWlucyBvbmx5IGV2 ZXIgdXNlIHRoZSBmaXJzdCBjZXJ0aWZpY2F0ZSBjaGFpbiBmb3VuZFxuIik7Ci0gICAgICAgICBC SU9fcHJpbnRmKGJpb19lcnIsCi0gICAgICAgICAgICAgICAgICAgICItY3JsX2NoZWNrICAgICBj aGVjayByZXZvY2F0aW9uIHN0YXR1cyBvZiBzaWduZXIncyBjZXJ0aWZpY2F0ZSB1c2luZyBDUkxz XG4iKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2FwcHMvc19zZXJ2ZXIuYy50cnVzdGVkLWZp cnN0IG9wZW5zc2wtMS4wLjJpL2FwcHMvc19zZXJ2ZXIuYwotLS0tIG9wZW5zc2wtMS4wLjJpL2Fw cHMvc19zZXJ2ZXIuYy50cnVzdGVkLWZpcnN0CTIwMTYtMDktMjIgMTQ6MDE6MjcuMzc0NjI4OTE4 ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvYXBwcy9zX3NlcnZlci5jCTIwMTYtMDktMjIgMTQ6 MDE6MjcuNDM3NjMwMzgyICswMjAwCi1AQCAtNTcxLDYgKzU3MSw4IEBAIHN0YXRpYyB2b2lkIHN2 X3VzYWdlKHZvaWQpCi0gICAgIEJJT19wcmludGYoYmlvX2VyciwgIiAtQ0FwYXRoIGFyZyAgIC0g UEVNIGZvcm1hdCBkaXJlY3Rvcnkgb2YgQ0Enc1xuIik7Ci0gICAgIEJJT19wcmludGYoYmlvX2Vy ciwgIiAtQ0FmaWxlIGFyZyAgIC0gUEVNIGZvcm1hdCBmaWxlIG9mIENBJ3NcbiIpOwotICAgICBC SU9fcHJpbnRmKGJpb19lcnIsCi0rICAgICAgICAgICAgICAgIiAtdHJ1c3RlZF9maXJzdCAtIFVz ZSB0cnVzdGVkIENBJ3MgZmlyc3Qgd2hlbiBidWlsZGluZyB0aGUgdHJ1c3QgY2hhaW5cbiIpOwot KyAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0gICAgICAgICAgICAgICAgIiAtbm9fYWx0X2NoYWlu cyAtIG9ubHkgZXZlciB1c2UgdGhlIGZpcnN0IGNlcnRpZmljYXRlIGNoYWluIGZvdW5kXG4iKTsK LSAgICAgQklPX3ByaW50ZihiaW9fZXJyLAotICAgICAgICAgICAgICAgICIgLW5vY2VydCAgICAg ICAtIERvbid0IHVzZSBhbnkgY2VydGlmaWNhdGVzIChBbm9uLURIKVxuIik7Ci1kaWZmIC11cCBv cGVuc3NsLTEuMC4yaS9hcHBzL3NfdGltZS5jLnRydXN0ZWQtZmlyc3Qgb3BlbnNzbC0xLjAuMmkv YXBwcy9zX3RpbWUuYwotLS0tIG9wZW5zc2wtMS4wLjJpL2FwcHMvc190aW1lLmMudHJ1c3RlZC1m aXJzdAkyMDE2LTA5LTIyIDE0OjAxOjI3LjM2ODYyODc3OSArMDIwMAotKysrIG9wZW5zc2wtMS4w LjJpL2FwcHMvc190aW1lLmMJMjAxNi0wOS0yMiAxNDowMToyNy40Mzc2MzAzODIgKzAyMDAKLUBA IC0xODIsNiArMTgyLDcgQEAgc3RhdGljIHZvaWQgc190aW1lX3VzYWdlKHZvaWQpCi0gICAgICAg ICAgICAgICAgIGZpbGUgaWYgbm90IHNwZWNpZmllZCBieSB0aGlzIG9wdGlvblxuXAotIC1DQXBh dGggYXJnICAgLSBQRU0gZm9ybWF0IGRpcmVjdG9yeSBvZiBDQSdzXG5cCi0gLUNBZmlsZSBhcmcg ICAtIFBFTSBmb3JtYXQgZmlsZSBvZiBDQSdzXG5cCi0rLXRydXN0ZWRfZmlyc3QgLSBVc2UgdHJ1 c3RlZCBDQSdzIGZpcnN0IHdoZW4gYnVpbGRpbmcgdGhlIHRydXN0IGNoYWluXG5cCi0gLWNpcGhl ciAgICAgICAtIHByZWZlcnJlZCBjaXBoZXIgdG8gdXNlLCBwbGF5IHdpdGggJ29wZW5zc2wgY2lw aGVycydcblxuIjsKLSAKLSAgICAgcHJpbnRmKCJ1c2FnZTogc190aW1lIDxhcmdzPlxuXG4iKTsK LWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2FwcHMvdHMuYy50cnVzdGVkLWZpcnN0IG9wZW5zc2wt MS4wLjJpL2FwcHMvdHMuYwotLS0tIG9wZW5zc2wtMS4wLjJpL2FwcHMvdHMuYy50cnVzdGVkLWZp cnN0CTIwMTYtMDktMjIgMTQ6MDE6MjcuNDAwNjI5NTIyICswMjAwCi0rKysgb3BlbnNzbC0xLjAu MmkvYXBwcy90cy5jCTIwMTYtMDktMjIgMTQ6MDE6MjcuNDM3NjMwMzgyICswMjAwCi1AQCAtMzUy LDcgKzM1Miw3IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgICAg ICAgICAidHMgLXZlcmlmeSBbLWRhdGEgZmlsZV90b19oYXNoXSBbLWRpZ2VzdCBkaWdlc3RfYnl0 ZXNdICIKLSAgICAgICAgICAgICAgICAiWy1xdWVyeWZpbGUgcmVxdWVzdC50c3FdICIKLSAgICAg ICAgICAgICAgICAiLWluIHJlc3BvbnNlLnRzciBbLXRva2VuX2luXSAiCi0tICAgICAgICAgICAg ICAgIi1DQXBhdGggY2FfcGF0aCAtQ0FmaWxlIGNhX2ZpbGUucGVtICIKLSsgICAgICAgICAgICAg ICAiLUNBcGF0aCBjYV9wYXRoIC1DQWZpbGUgY2FfZmlsZS5wZW0gLXRydXN0ZWRfZmlyc3QiCi0g ICAgICAgICAgICAgICAgIi11bnRydXN0ZWQgY2VydF9maWxlLnBlbVxuIik7Ci0gIGNsZWFudXA6 Ci0gICAgIC8qIENsZWFuIHVwLiAqLwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmkvYXBwcy92ZXJp ZnkuYy50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjJpL2FwcHMvdmVyaWZ5LmMKLS0tLSBvcGVu c3NsLTEuMC4yaS9hcHBzL3ZlcmlmeS5jLnRydXN0ZWQtZmlyc3QJMjAxNi0wOS0yMiAxNDowMToy Ny40Mzg2MzA0MDUgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yaS9hcHBzL3ZlcmlmeS5jCTIwMTYt MDktMjIgMTQ6MDI6MzcuOTUxMjY5MTQwICswMjAwCi1AQCAtMjMxLDcgKzIzMSw3IEBAIGludCBN QUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgdXNhZ2U6Ci0gICAgIGlmIChyZXQgPT0gMSkg ewotICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLAotLSAgICAgICAgICAgICAgICAgICAidXNh Z2U6IHZlcmlmeSBbLXZlcmJvc2VdIFstQ0FwYXRoIHBhdGhdIFstQ0FmaWxlIGZpbGVdIFstcHVy cG9zZSBwdXJwb3NlXSBbLWNybF9jaGVja10iKTsKLSsgICAgICAgICAgICAgICAgICAgInVzYWdl OiB2ZXJpZnkgWy12ZXJib3NlXSBbLUNBcGF0aCBwYXRoXSBbLUNBZmlsZSBmaWxlXSBbLXRydXN0 ZWRfZmlyc3RdIFstcHVycG9zZSBwdXJwb3NlXSBbLWNybF9jaGVja10iKTsKLSAgICAgICAgIEJJ T19wcmludGYoYmlvX2VyciwgIiBbLW5vX2FsdF9jaGFpbnNdIFstYXR0aW1lIHRpbWVzdGFtcF0i KTsKLSAjaWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5FCi0gICAgICAgICBCSU9fcHJpbnRmKGJpb19l cnIsICIgWy1lbmdpbmUgZV0iKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2RvYy9hcHBzL2Nt cy5wb2QudHJ1c3RlZC1maXJzdCBvcGVuc3NsLTEuMC4yaS9kb2MvYXBwcy9jbXMucG9kCi0tLS0g b3BlbnNzbC0xLjAuMmkvZG9jL2FwcHMvY21zLnBvZC50cnVzdGVkLWZpcnN0CTIwMTYtMDktMjIg MTI6MjM6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvZG9jL2FwcHMvY21z LnBvZAkyMDE2LTA5LTIyIDE0OjAxOjI3LjQzODYzMDQwNSArMDIwMAotQEAgLTM1LDYgKzM1LDcg QEAgQjxvcGVuc3NsPiBCPGNtcz4KLSBbQjwtcHJpbnQ+XQotIFtCPC1DQWZpbGUgZmlsZT5dCi0g W0I8LUNBcGF0aCBkaXI+XQotK1tCPC10cnVzdGVkX2ZpcnN0Pl0KLSBbQjwtbm9fYWx0X2NoYWlu cz5dCi0gW0I8LW1kIGRpZ2VzdD5dCi0gW0I8LVtjaXBoZXJdPl0KLUBAIC0yNDgsNiArMjQ5LDEy IEBAIEI8LXZlcmlmeT4uIFRoaXMgZGlyZWN0b3J5IG11c3QgYmUgYSBzdGEKLSBpcyBhIGhhc2gg b2YgZWFjaCBzdWJqZWN0IG5hbWUgKHVzaW5nIEI8eDUwOSAtaGFzaD4pIHNob3VsZCBiZSBsaW5r ZWQKLSB0byBlYWNoIGNlcnRpZmljYXRlLgotIAotKz1pdGVtIEI8LXRydXN0ZWRfZmlyc3Q+Ci0r Ci0rVXNlIGNlcnRpZmljYXRlcyBpbiBDQSBmaWxlIG9yIENBIGRpcmVjdG9yeSBiZWZvcmUgdW50 cnVzdGVkIGNlcnRpZmljYXRlcwotK2Zyb20gdGhlIG1lc3NhZ2Ugd2hlbiBidWlsZGluZyB0aGUg dHJ1c3QgY2hhaW4gdG8gdmVyaWZ5IGNlcnRpZmljYXRlcy4KLStUaGlzIGlzIG1haW5seSB1c2Vm dWwgaW4gZW52aXJvbm1lbnRzIHdpdGggQnJpZGdlIENBIG9yIENyb3NzLUNlcnRpZmllZCBDQXMu Ci0rCi0gPWl0ZW0gQjwtbWQgZGlnZXN0PgotIAotIGRpZ2VzdCBhbGdvcml0aG0gdG8gdXNlIHdo ZW4gc2lnbmluZyBvciByZXNpZ25pbmcuIElmIG5vdCBwcmVzZW50IHRoZW4gdGhlCi1kaWZmIC11 cCBvcGVuc3NsLTEuMC4yaS9kb2MvYXBwcy9vY3NwLnBvZC50cnVzdGVkLWZpcnN0IG9wZW5zc2wt MS4wLjJpL2RvYy9hcHBzL29jc3AucG9kCi0tLS0gb3BlbnNzbC0xLjAuMmkvZG9jL2FwcHMvb2Nz cC5wb2QudHJ1c3RlZC1maXJzdAkyMDE2LTA5LTIyIDE0OjAxOjI3LjQwMTYyOTU0NSArMDIwMAot KysrIG9wZW5zc2wtMS4wLjJpL2RvYy9hcHBzL29jc3AucG9kCTIwMTYtMDktMjIgMTQ6MDE6Mjcu NDM4NjMwNDA1ICswMjAwCi1AQCAtMjksNiArMjksNyBAQCBCPG9wZW5zc2w+IEI8b2NzcD4KLSBb QjwtcGF0aD5dCi0gW0I8LUNBcGF0aCBkaXI+XQotIFtCPC1DQWZpbGUgZmlsZT5dCi0rW0I8LXRy dXN0ZWRfZmlyc3Q+XQotIFtCPC1ub19hbHRfY2hhaW5zPl0KLSBbQjwtVkFmaWxlIGZpbGU+XQot IFtCPC12YWxpZGl0eV9wZXJpb2Qgbj5dCi1AQCAtMTQ0LDYgKzE0NSwxMyBAQCBjb25uZWN0aW9u IHRpbWVvdXQgdG8gdGhlIE9DU1AgcmVzcG9uZGVyCi0gZmlsZSBvciBwYXRobmFtZSBjb250YWlu aW5nIHRydXN0ZWQgQ0EgY2VydGlmaWNhdGVzLiBUaGVzZSBhcmUgdXNlZCB0byB2ZXJpZnkKLSB0 aGUgc2lnbmF0dXJlIG9uIHRoZSBPQ1NQIHJlc3BvbnNlLgotIAotKz1pdGVtIEI8LXRydXN0ZWRf Zmlyc3Q+Ci0rCi0rVXNlIGNlcnRpZmljYXRlcyBpbiBDQSBmaWxlIG9yIENBIGRpcmVjdG9yeSBv dmVyIGNlcnRpZmljYXRlcyBwcm92aWRlZAotK2luIHRoZSByZXNwb25zZSBvciByZXNpZGluZyBp biBvdGhlciBjZXJ0aWZpY2F0ZXMgZmlsZSB3aGVuIGJ1aWxkaW5nIHRoZSB0cnVzdAotK2NoYWlu IHRvIHZlcmlmeSByZXNwb25kZXIgY2VydGlmaWNhdGUuCi0rVGhpcyBpcyBtYWlubHkgdXNlZnVs IGluIGVudmlyb25tZW50cyB3aXRoIEJyaWRnZSBDQSBvciBDcm9zcy1DZXJ0aWZpZWQgQ0FzLgot KwotID1pdGVtIEI8LW5vX2FsdF9jaGFpbnM+Ci0gCi0gU2VlIEw8Qjx2ZXJpZnk+fHZlcmlmeSgx KT4gbWFudWFsIHBhZ2UgZm9yIGRldGFpbHMuCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9kb2Mv YXBwcy9zX2NsaWVudC5wb2QudHJ1c3RlZC1maXJzdCBvcGVuc3NsLTEuMC4yaS9kb2MvYXBwcy9z X2NsaWVudC5wb2QKLS0tLSBvcGVuc3NsLTEuMC4yaS9kb2MvYXBwcy9zX2NsaWVudC5wb2QudHJ1 c3RlZC1maXJzdAkyMDE2LTA5LTIyIDE0OjAxOjI3LjQxMjYyOTgwMSArMDIwMAotKysrIG9wZW5z c2wtMS4wLjJpL2RvYy9hcHBzL3NfY2xpZW50LnBvZAkyMDE2LTA5LTIyIDE0OjAxOjI3LjQzODYz MDQwNSArMDIwMAotQEAgLTE5LDYgKzE5LDcgQEAgQjxvcGVuc3NsPiBCPHNfY2xpZW50PgotIFtC PC1wYXNzIGFyZz5dCi0gW0I8LUNBcGF0aCBkaXJlY3Rvcnk+XQotIFtCPC1DQWZpbGUgZmlsZW5h bWU+XQotK1tCPC10cnVzdGVkX2ZpcnN0Pl0KLSBbQjwtbm9fYWx0X2NoYWlucz5dCi0gW0I8LXJl Y29ubmVjdD5dCi0gW0I8LXBhdXNlPl0KLUBAIC0xMjUsNyArMTI2LDcgQEAgYWxzbyB1c2VkIHdo ZW4gYnVpbGRpbmcgdGhlIGNsaWVudCBjZXJ0aQotIEEgZmlsZSBjb250YWluaW5nIHRydXN0ZWQg Y2VydGlmaWNhdGVzIHRvIHVzZSBkdXJpbmcgc2VydmVyIGF1dGhlbnRpY2F0aW9uCi0gYW5kIHRv IHVzZSB3aGVuIGF0dGVtcHRpbmcgdG8gYnVpbGQgdGhlIGNsaWVudCBjZXJ0aWZpY2F0ZSBjaGFp bi4KLSAKLS09aXRlbSBCPC1wdXJwb3NlLCAtaWdub3JlX2NyaXRpY2FsLCAtaXNzdWVyX2NoZWNr cywgLWNybF9jaGVjaywgLWNybF9jaGVja19hbGwsIC1wb2xpY3lfY2hlY2ssIC1leHRlbmRlZF9j cmwsIC14NTA5X3N0cmljdCwgLXBvbGljeSAtY2hlY2tfc3Nfc2lnIC1ub19hbHRfY2hhaW5zPgot Kz1pdGVtIEI8LXB1cnBvc2UsIC1pZ25vcmVfY3JpdGljYWwsIC1pc3N1ZXJfY2hlY2tzLCAtY3Js X2NoZWNrLCAtY3JsX2NoZWNrX2FsbCwgLXBvbGljeV9jaGVjaywgLWV4dGVuZGVkX2NybCwgLXg1 MDlfc3RyaWN0LCAtcG9saWN5IC1jaGVja19zc19zaWcsIC10cnVzdGVkX2ZpcnN0IC1ub19hbHRf Y2hhaW5zPgotIAotIFNldCB2YXJpb3VzIGNlcnRpZmljYXRlIGNoYWluIHZhbGlhZGl0aW9uIG9w dGlvbi4gU2VlIHRoZQotIEw8Qjx2ZXJpZnk+fHZlcmlmeSgxKT4gbWFudWFsIHBhZ2UgZm9yIGRl dGFpbHMuCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9kb2MvYXBwcy9zbWltZS5wb2QudHJ1c3Rl ZC1maXJzdCBvcGVuc3NsLTEuMC4yaS9kb2MvYXBwcy9zbWltZS5wb2QKLS0tLSBvcGVuc3NsLTEu MC4yaS9kb2MvYXBwcy9zbWltZS5wb2QudHJ1c3RlZC1maXJzdAkyMDE2LTA5LTIyIDEyOjIzOjA2 LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJpL2RvYy9hcHBzL3NtaW1lLnBvZAky MDE2LTA5LTIyIDE0OjAxOjI3LjQzODYzMDQwNSArMDIwMAotQEAgLTE1LDYgKzE1LDkgQEAgQjxv cGVuc3NsPiBCPHNtaW1lPgotIFtCPC1wazdvdXQ+XQotIFtCPC1bY2lwaGVyXT5dCi0gW0I8LWlu IGZpbGU+XQotK1tCPC1DQWZpbGUgZmlsZT5dCi0rW0I8LUNBcGF0aCBkaXI+XQotK1tCPC10cnVz dGVkX2ZpcnN0Pl0KLSBbQjwtbm9fYWx0X2NoYWlucz5dCi0gW0I8LWNlcnRmaWxlIGZpbGU+XQot IFtCPC1zaWduZXIgZmlsZT5dCi1AQCAtMTUwLDYgKzE1MywxMiBAQCBCPC12ZXJpZnk+LiBUaGlz IGRpcmVjdG9yeSBtdXN0IGJlIGEgc3RhCi0gaXMgYSBoYXNoIG9mIGVhY2ggc3ViamVjdCBuYW1l ICh1c2luZyBCPHg1MDkgLWhhc2g+KSBzaG91bGQgYmUgbGlua2VkCi0gdG8gZWFjaCBjZXJ0aWZp Y2F0ZS4KLSAKLSs9aXRlbSBCPC10cnVzdGVkX2ZpcnN0PgotKwotK1VzZSBjZXJ0aWZpY2F0ZXMg aW4gQ0EgZmlsZSBvciBDQSBkaXJlY3Rvcnkgb3ZlciBjZXJ0aWZpY2F0ZXMgcHJvdmlkZWQKLStp biB0aGUgbWVzc2FnZSB3aGVuIGJ1aWxkaW5nIHRoZSB0cnVzdCBjaGFpbiB0byB2ZXJpZnkgYSBj ZXJ0aWZpY2F0ZS4KLStUaGlzIGlzIG1haW5seSB1c2VmdWwgaW4gZW52aXJvbm1lbnRzIHdpdGgg QnJpZGdlIENBIG9yIENyb3NzLUNlcnRpZmllZCBDQXMuCi0rCi0gPWl0ZW0gQjwtbWQgZGlnZXN0 PgotIAotIGRpZ2VzdCBhbGdvcml0aG0gdG8gdXNlIHdoZW4gc2lnbmluZyBvciByZXNpZ25pbmcu IElmIG5vdCBwcmVzZW50IHRoZW4gdGhlCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yaS9kb2MvYXBw cy9zX3NlcnZlci5wb2QudHJ1c3RlZC1maXJzdCBvcGVuc3NsLTEuMC4yaS9kb2MvYXBwcy9zX3Nl cnZlci5wb2QKLS0tLSBvcGVuc3NsLTEuMC4yaS9kb2MvYXBwcy9zX3NlcnZlci5wb2QudHJ1c3Rl ZC1maXJzdAkyMDE2LTA5LTIyIDE0OjAxOjI3LjQxMjYyOTgwMSArMDIwMAotKysrIG9wZW5zc2wt MS4wLjJpL2RvYy9hcHBzL3Nfc2VydmVyLnBvZAkyMDE2LTA5LTIyIDE0OjAxOjI3LjQzODYzMDQw NSArMDIwMAotQEAgLTMzLDYgKzMzLDcgQEAgQjxvcGVuc3NsPiBCPHNfc2VydmVyPgotIFtCPC1z dGF0ZT5dCi0gW0I8LUNBcGF0aCBkaXJlY3Rvcnk+XQotIFtCPC1DQWZpbGUgZmlsZW5hbWU+XQot K1tCPC10cnVzdGVkX2ZpcnN0Pl0KLSBbQjwtbm9fYWx0X2NoYWlucz5dCi0gW0I8LW5vY2VydD5d Ci0gW0I8LWNpcGhlciBjaXBoZXJsaXN0Pl0KLUBAIC0xNzgsNiArMTc5LDEyIEBAIGFuZCB0byB1 c2Ugd2hlbiBhdHRlbXB0aW5nIHRvIGJ1aWxkIHRoZQotIGlzIGFsc28gdXNlZCBpbiB0aGUgbGlz dCBvZiBhY2NlcHRhYmxlIGNsaWVudCBDQXMgcGFzc2VkIHRvIHRoZSBjbGllbnQgd2hlbgotIGEg Y2VydGlmaWNhdGUgaXMgcmVxdWVzdGVkLgotIAotKz1pdGVtIEI8LXRydXN0ZWRfZmlyc3Q+Ci0r Ci0rVXNlIGNlcnRpZmljYXRlcyBpbiBDQSBmaWxlIG9yIENBIGRpcmVjdG9yeSBiZWZvcmUgb3Ro ZXIgY2VydGlmaWNhdGVzIAotK3doZW4gYnVpbGRpbmcgdGhlIHRydXN0IGNoYWluIHRvIHZlcmlm eSBjbGllbnQgY2VydGlmaWNhdGVzLgotK1RoaXMgaXMgbWFpbmx5IHVzZWZ1bCBpbiBlbnZpcm9u bWVudHMgd2l0aCBCcmlkZ2UgQ0Egb3IgQ3Jvc3MtQ2VydGlmaWVkIENBcy4KLSsKLSA9aXRlbSBC PC1ub19hbHRfY2hhaW5zPgotIAotIFNlZSB0aGUgTDxCPHZlcmlmeT58dmVyaWZ5KDEpPiBtYW51 YWwgcGFnZSBmb3IgZGV0YWlscy4KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2RvYy9hcHBzL3Nf dGltZS5wb2QudHJ1c3RlZC1maXJzdCBvcGVuc3NsLTEuMC4yaS9kb2MvYXBwcy9zX3RpbWUucG9k Ci0tLS0gb3BlbnNzbC0xLjAuMmkvZG9jL2FwcHMvc190aW1lLnBvZC50cnVzdGVkLWZpcnN0CTIw MTYtMDktMjIgMTI6MjM6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmkvZG9j L2FwcHMvc190aW1lLnBvZAkyMDE2LTA5LTIyIDE0OjAxOjI3LjQzOTYzMDQyOSArMDIwMAotQEAg LTE0LDYgKzE0LDcgQEAgQjxvcGVuc3NsPiBCPHNfdGltZT4KLSBbQjwta2V5IGZpbGVuYW1lPl0K LSBbQjwtQ0FwYXRoIGRpcmVjdG9yeT5dCi0gW0I8LUNBZmlsZSBmaWxlbmFtZT5dCi0rW0I8LXRy dXN0ZWRfZmlyc3Q+XQotIFtCPC1yZXVzZT5dCi0gW0I8LW5ldz5dCi0gW0I8LXZlcmlmeSBkZXB0 aD5dCi1AQCAtNzYsNiArNzcsMTIgQEAgYWxzbyB1c2VkIHdoZW4gYnVpbGRpbmcgdGhlIGNsaWVu dCBjZXJ0aQotIEEgZmlsZSBjb250YWluaW5nIHRydXN0ZWQgY2VydGlmaWNhdGVzIHRvIHVzZSBk dXJpbmcgc2VydmVyIGF1dGhlbnRpY2F0aW9uCi0gYW5kIHRvIHVzZSB3aGVuIGF0dGVtcHRpbmcg dG8gYnVpbGQgdGhlIGNsaWVudCBjZXJ0aWZpY2F0ZSBjaGFpbi4KLSAKLSs9aXRlbSBCPC10cnVz dGVkX2ZpcnN0PgotKwotK1VzZSBjZXJ0aWZpY2F0ZXMgaW4gQ0EgZmlsZSBvciBDQSBkaXJlY3Rv cnkgb3ZlciB0aGUgY2VydGlmaWNhdGVzIHByb3ZpZGVkCi0rYnkgdGhlIHNlcnZlciB3aGVuIGJ1 aWxkaW5nIHRoZSB0cnVzdCBjaGFpbiB0byB2ZXJpZnkgc2VydmVyIGNlcnRpZmljYXRlLgotK1Ro aXMgaXMgbWFpbmx5IHVzZWZ1bCBpbiBlbnZpcm9ubWVudHMgd2l0aCBCcmlkZ2UgQ0Egb3IgQ3Jv c3MtQ2VydGlmaWVkIENBcy4KLSsKLSA9aXRlbSBCPC1uZXc+Ci0gCi0gcGVyZm9ybXMgdGhlIHRp bWluZyB0ZXN0IHVzaW5nIGEgbmV3IHNlc3Npb24gSUQgZm9yIGVhY2ggY29ubmVjdGlvbi4KLWRp ZmYgLXVwIG9wZW5zc2wtMS4wLjJpL2RvYy9hcHBzL3RzLnBvZC50cnVzdGVkLWZpcnN0IG9wZW5z c2wtMS4wLjJpL2RvYy9hcHBzL3RzLnBvZAotLS0tIG9wZW5zc2wtMS4wLjJpL2RvYy9hcHBzL3Rz LnBvZC50cnVzdGVkLWZpcnN0CTIwMTYtMDktMjIgMTI6MjM6MDYuMDAwMDAwMDAwICswMjAwCi0r Kysgb3BlbnNzbC0xLjAuMmkvZG9jL2FwcHMvdHMucG9kCTIwMTYtMDktMjIgMTQ6MDE6MjcuNDM5 NjMwNDI5ICswMjAwCi1AQCAtNDYsNiArNDYsNyBAQCBCPC12ZXJpZnk+Ci0gW0I8LXRva2VuX2lu Pl0KLSBbQjwtQ0FwYXRoPiB0cnVzdGVkX2NlcnRfcGF0aF0KLSBbQjwtQ0FmaWxlPiB0cnVzdGVk X2NlcnRzLnBlbV0KLStbQjwtdHJ1c3RlZF9maXJzdD5dCi0gW0I8LXVudHJ1c3RlZD4gY2VydF9m aWxlLnBlbV0KLSAKLSA9aGVhZDEgREVTQ1JJUFRJT04KLUBAIC0zMjQsNiArMzI1LDEyIEBAIEw8 dmVyaWZ5KDEpfHZlcmlmeSgxKT4gZm9yIGFkZGl0aW9uYWwgZGUKLSBvciBCPC1DQXBhdGg+IG11 c3QgYmUgc3BlY2lmaWVkLgotIChPcHRpb25hbCkKLSAKLSs9aXRlbSBCPC10cnVzdGVkX2ZpcnN0 PgotKwotK1VzZSBjZXJ0aWZpY2F0ZXMgaW4gQ0EgZmlsZSBvciBDQSBkaXJlY3RvcnkgYmVmb3Jl IG90aGVyIGNlcnRpZmljYXRlcwotK3doZW4gYnVpbGRpbmcgdGhlIHRydXN0IGNoYWluIHRvIHZl cmlmeSBjZXJ0aWZpY2F0ZXMuCi0rVGhpcyBpcyBtYWlubHkgdXNlZnVsIGluIGVudmlyb25tZW50 cyB3aXRoIEJyaWRnZSBDQSBvciBDcm9zcy1DZXJ0aWZpZWQgQ0FzLgotKwotID1pdGVtIEI8LXVu dHJ1c3RlZD4gY2VydF9maWxlLnBlbQotIAotIFNldCBvZiBhZGRpdGlvbmFsIHVudHJ1c3RlZCBj ZXJ0aWZpY2F0ZXMgaW4gUEVNIGZvcm1hdCB3aGljaCBtYXkgYmUKLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjJpL2RvYy9hcHBzL3ZlcmlmeS5wb2QudHJ1c3RlZC1maXJzdCBvcGVuc3NsLTEuMC4yaS9k b2MvYXBwcy92ZXJpZnkucG9kCi0tLS0gb3BlbnNzbC0xLjAuMmkvZG9jL2FwcHMvdmVyaWZ5LnBv ZC50cnVzdGVkLWZpcnN0CTIwMTYtMDktMjIgMTI6MjM6MDYuMDAwMDAwMDAwICswMjAwCi0rKysg b3BlbnNzbC0xLjAuMmkvZG9jL2FwcHMvdmVyaWZ5LnBvZAkyMDE2LTA5LTIyIDE0OjAxOjI3LjQz OTYzMDQyOSArMDIwMAotQEAgLTksNiArOSw3IEBAIHZlcmlmeSAtIFV0aWxpdHkgdG8gdmVyaWZ5 IGNlcnRpZmljYXRlcy4KLSBCPG9wZW5zc2w+IEI8dmVyaWZ5PgotIFtCPC1DQXBhdGggZGlyZWN0 b3J5Pl0KLSBbQjwtQ0FmaWxlIGZpbGU+XQotK1tCPC10cnVzdGVkX2ZpcnN0Pl0KLSBbQjwtcHVy cG9zZSBwdXJwb3NlPl0KLSBbQjwtcG9saWN5IGFyZz5dCi0gW0I8LWlnbm9yZV9jcml0aWNhbD5d Ci1AQCAtODYsNiArODcsMTIgQEAgSWYgYSB2YWxpZCBDUkwgY2Fubm90IGJlIGZvdW5kIGFuIGVy cm9yCi0gQSBmaWxlIG9mIHVudHJ1c3RlZCBjZXJ0aWZpY2F0ZXMuIFRoZSBmaWxlIHNob3VsZCBj b250YWluIG11bHRpcGxlIGNlcnRpZmljYXRlcwotIGluIFBFTSBmb3JtYXQgY29uY2F0ZW5hdGVk IHRvZ2V0aGVyLgotIAotKz1pdGVtIEI8LXRydXN0ZWRfZmlyc3Q+Ci0rCi0rVXNlIGNlcnRpZmlj YXRlcyBpbiBDQSBmaWxlIG9yIENBIGRpcmVjdG9yeSBiZWZvcmUgdGhlIGNlcnRpZmljYXRlcyBp biB0aGUgdW50cnVzdGVkCi0rZmlsZSB3aGVuIGJ1aWxkaW5nIHRoZSB0cnVzdCBjaGFpbiB0byB2 ZXJpZnkgY2VydGlmaWNhdGVzLgotK1RoaXMgaXMgbWFpbmx5IHVzZWZ1bCBpbiBlbnZpcm9ubWVu dHMgd2l0aCBCcmlkZ2UgQ0Egb3IgQ3Jvc3MtQ2VydGlmaWVkIENBcy4KLSsKLSA9aXRlbSBCPC1w dXJwb3NlIHB1cnBvc2U+Ci0gCi0gVGhlIGludGVuZGVkIHVzZSBmb3IgdGhlIGNlcnRpZmljYXRl LiBJZiB0aGlzIG9wdGlvbiBpcyBub3Qgc3BlY2lmaWVkLAoKZGlmZiAtLWdpdCBhL29wZW5zc2wt MS4xLjAtYWxnby1kb2MucGF0Y2ggYi9vcGVuc3NsLTEuMS4wLWFsZ28tZG9jLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmOWE5NTEKLS0tIC9kZXYvbnVsbAorKysg Yi9vcGVuc3NsLTEuMS4wLWFsZ28tZG9jLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK2RpZmYgLXVw IG9wZW5zc2wtMS4xLjAtcHJlNS9kb2MvY3J5cHRvL0VWUF9EaWdlc3RJbml0LnBvZC5hbGdvLWRv YyBvcGVuc3NsLTEuMS4wLXByZTUvZG9jL2NyeXB0by9FVlBfRGlnZXN0SW5pdC5wb2QKKy0tLSBv cGVuc3NsLTEuMS4wLXByZTUvZG9jL2NyeXB0by9FVlBfRGlnZXN0SW5pdC5wb2QuYWxnby1kb2MJ MjAxNi0wNy0xOCAxNTo0NzozOC41NTYxNTc4NzMgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wLXBy ZTUvZG9jL2NyeXB0by9FVlBfRGlnZXN0SW5pdC5wb2QJMjAxNi0wNy0xOCAxNTo0OTo1Ni45MzUz MTI4MjMgKzAyMDAKK0BAIC0xNjEsNyArMTYxLDcgQEAgY29ycmVzcG9uZGluZyBPQkpFQ1QgSURF TlRJRklFUiBvciBOSURfdQorIEVWUF9NRF9zaXplKCksIEVWUF9NRF9ibG9ja19zaXplKCksIEVW UF9NRF9DVFhfc2l6ZSgpIGFuZAorIEVWUF9NRF9DVFhfYmxvY2tfc2l6ZSgpIHJldHVybiB0aGUg ZGlnZXN0IG9yIGJsb2NrIHNpemUgaW4gYnl0ZXMuCisgCistRVZQX21kX251bGwoKSwgRVZQX21k MigpLCBFVlBfbWQ1KCksIEVWUF9zaGExKCksCisrRVZQX21kX251bGwoKSwgRVZQX21kMigpLCBF VlBfbWQ1KCksIEVWUF9zaGExKCksIEVWUF9zaGEyMjQoKSwgRVZQX3NoYTI1NigpLCBFVlBfc2hh Mzg0KCksIEVWUF9zaGE1MTIoKSwKKyBFVlBfbWRjMigpLCBFVlBfcmlwZW1kMTYwKCksIEVWUF9i bGFrZTJiXzUxMigpLCBhbmQgRVZQX2JsYWtlMnNfMjU2KCkgcmV0dXJuCisgcG9pbnRlcnMgdG8g dGhlIGNvcnJlc3BvbmRpbmcgRVZQX01EIHN0cnVjdHVyZXMuCisgCitkaWZmIC11cCBvcGVuc3Ns LTEuMS4wLXByZTUvZG9jL2NyeXB0by9FVlBfRW5jcnlwdEluaXQucG9kLmFsZ28tZG9jIG9wZW5z c2wtMS4xLjAtcHJlNS9kb2MvY3J5cHRvL0VWUF9FbmNyeXB0SW5pdC5wb2QKKy0tLSBvcGVuc3Ns LTEuMS4wLXByZTUvZG9jL2NyeXB0by9FVlBfRW5jcnlwdEluaXQucG9kLmFsZ28tZG9jCTIwMTYt MDQtMTkgMTY6NTc6NTUuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC1wcmU1L2Rv Yy9jcnlwdG8vRVZQX0VuY3J5cHRJbml0LnBvZAkyMDE2LTA3LTE4IDE1OjQ3OjM4LjU3MDE1ODE5 MiArMDIwMAorQEAgLTEwNyw2ICsxMDcsMzIgQEAgRVZQX2Flc18xMjhfY2NtLCBFVlBfYWVzXzE5 Ml9jY20sIEVWUF9hZQorICBpbnQgRVZQX0NJUEhFUl9wYXJhbV90b19hc24xKEVWUF9DSVBIRVJf Q1RYICpjLCBBU04xX1RZUEUgKnR5cGUpOworICBpbnQgRVZQX0NJUEhFUl9hc24xX3RvX3BhcmFt KEVWUF9DSVBIRVJfQ1RYICpjLCBBU04xX1RZUEUgKnR5cGUpOworIAorKyBjb25zdCBFVlBfQ0lQ SEVSICpFVlBfZGVzX2VkZTModm9pZCk7CisrIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9kZXNfZWRl M19lY2Iodm9pZCk7CisrIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9kZXNfZWRlM19jZmI2NCh2b2lk KTsKKysgY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Rlc19lZGUzX2NmYjEodm9pZCk7CisrIGNvbnN0 IEVWUF9DSVBIRVIgKkVWUF9kZXNfZWRlM19jZmI4KHZvaWQpOworKyBjb25zdCBFVlBfQ0lQSEVS ICpFVlBfZGVzX2VkZTNfb2ZiKHZvaWQpOworKyBjb25zdCBFVlBfQ0lQSEVSICpFVlBfZGVzX2Vk ZTNfY2JjKHZvaWQpOworKyBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzEyOF9lY2Iodm9pZCk7 CisrIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMTI4X2NiYyh2b2lkKTsKKysgY29uc3QgRVZQ X0NJUEhFUiAqRVZQX2Flc18xMjhfY2ZiMSh2b2lkKTsKKysgY29uc3QgRVZQX0NJUEhFUiAqRVZQ X2Flc18xMjhfY2ZiOCh2b2lkKTsKKysgY29uc3QgRVZQX0NJUEhFUiAqRVZQX2Flc18xMjhfY2Zi MTI4KHZvaWQpOworKyBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzEyOF9vZmIodm9pZCk7Cisr IGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMTkyX2VjYih2b2lkKTsKKysgY29uc3QgRVZQX0NJ UEhFUiAqRVZQX2Flc18xOTJfY2JjKHZvaWQpOworKyBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVz XzE5Ml9jZmIxKHZvaWQpOworKyBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzE5Ml9jZmI4KHZv aWQpOworKyBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzE5Ml9jZmIxMjgodm9pZCk7CisrIGNv bnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMTkyX29mYih2b2lkKTsKKysgY29uc3QgRVZQX0NJUEhF UiAqRVZQX2Flc18yNTZfZWNiKHZvaWQpOworKyBjb25zdCBFVlBfQ0lQSEVSICpFVlBfYWVzXzI1 Nl9jYmModm9pZCk7CisrIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMjU2X2NmYjEodm9pZCk7 CisrIGNvbnN0IEVWUF9DSVBIRVIgKkVWUF9hZXNfMjU2X2NmYjgodm9pZCk7CisrIGNvbnN0IEVW UF9DSVBIRVIgKkVWUF9hZXNfMjU2X2NmYjEyOCh2b2lkKTsKKysgY29uc3QgRVZQX0NJUEhFUiAq RVZQX2Flc18yNTZfb2ZiKHZvaWQpOworKworID1oZWFkMSBERVNDUklQVElPTgorIAorIFRoZSBF VlAgY2lwaGVyIHJvdXRpbmVzIGFyZSBhIGhpZ2ggbGV2ZWwgaW50ZXJmYWNlIHRvIGNlcnRhaW4K CmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMS4wLWFwcHMtZGdzdC5wYXRjaCBiL29wZW5zc2wtMS4x LjAtYXBwcy1kZ3N0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFm MTA2ODQKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEuMS4wLWFwcHMtZGdzdC5wYXRjaApA QCAtMCwwICsxLDEyIEBACitkaWZmIC11cCBvcGVuc3NsLTEuMS4wLXByZTUvYXBwcy9jYS5jLmRn c3Qgb3BlbnNzbC0xLjEuMC1wcmU1L2FwcHMvY2EuYworLS0tIG9wZW5zc2wtMS4xLjAtcHJlNS9h cHBzL2NhLmMuZGdzdAkyMDE2LTA0LTE5IDE2OjU3OjUyLjAwMDAwMDAwMCArMDIwMAorKysrIG9w ZW5zc2wtMS4xLjAtcHJlNS9hcHBzL2NhLmMJMjAxNi0wNy0xOCAxNTo1ODoxOC41MTY3NDI2ODIg KzAyMDAKK0BAIC0yMTYsNyArMjE2LDcgQEAgT1BUSU9OUyBjYV9vcHRpb25zW10gPSB7CisgICAg IHsiZW5kZGF0ZSIsIE9QVF9FTkREQVRFLCAncycsCisgICAgICAiWVlNTURESEhNTVNTWiBjZXJ0 IG5vdEFmdGVyIChvdmVycmlkZXMgLWRheXMpIn0sCisgICAgIHsiZGF5cyIsIE9QVF9EQVlTLCAn cCcsICJOdW1iZXIgb2YgZGF5cyB0byBjZXJ0aWZ5IHRoZSBjZXJ0IGZvciJ9LAorLSAgICB7Im1k IiwgT1BUX01ELCAncycsICJtZCB0byB1c2U7IG9uZSBvZiBtZDIsIG1kNSwgc2hhIG9yIHNoYTEi fSwKKysgICAgeyJtZCIsIE9QVF9NRCwgJ3MnLCAibWQgdG8gdXNlOyBzZWUgb3BlbnNzbCBkZ3N0 IC1oIGZvciBsaXN0In0sCisgICAgIHsicG9saWN5IiwgT1BUX1BPTElDWSwgJ3MnLCAiVGhlIENB ICdwb2xpY3knIHRvIHN1cHBvcnQifSwKKyAgICAgeyJrZXlmaWxlIiwgT1BUX0tFWUZJTEUsICdz JywgIlByaXZhdGUga2V5In0sCisgICAgIHsia2V5Zm9ybSIsIE9QVF9LRVlGT1JNLCAnZicsICJQ cml2YXRlIGtleSBmaWxlIGZvcm1hdCAoUEVNIG9yIEVOR0lORSkifSwKCmRpZmYgLS1naXQgYS9v cGVuc3NsLTEuMS4wLWJ1aWxkLnBhdGNoIGIvb3BlbnNzbC0xLjEuMC1idWlsZC5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzFiNWU3Ci0tLSAvZGV2L251bGwKKysr IGIvb3BlbnNzbC0xLjEuMC1idWlsZC5wYXRjaApAQCAtMCwwICsxLDExOSBAQAorZGlmZiAtdXAg b3BlbnNzbC0xLjEuMGIvQ29uZmlndXJhdGlvbnMvdW5peC1NYWtlZmlsZS50bXBsLmJ1aWxkIG9w ZW5zc2wtMS4xLjBiL0NvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbAorLS0tIG9wZW5z c2wtMS4xLjBiL0NvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbC5idWlsZAkyMDE2LTA5 LTI2IDExOjQ2OjA0LjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjBiL0NvbmZpZ3Vy YXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbAkyMDE2LTA5LTI2IDE1OjE2OjI2LjkzNTY2MDE0NyAr MDIwMAorQEAgLTY0MCw3ICs2NDAsNyBAQCBpbnN0YWxsX21hbl9kb2NzOgorIAlAXAorIAlPVVRT VUZGSVg9Jy4kJHtTRUN9JChNQU5TVUZGSVgpJzsgXAorIAlPVVRUT1A9IiQoREVTVERJUikkKE1B TkRJUikiOyBcCistCUdFTkVSQVRFPSdwb2QybWFuIC0tbmFtZT0kJE5BTUUgLS1zZWN0aW9uPSQk U0VDIC0tY2VudGVyPU9wZW5TU0wgLS1yZWxlYXNlPSQoVkVSU0lPTiknOyBcCisrCUdFTkVSQVRF PSdUWj1VVEMgcG9kMm1hbiAtLW5hbWU9JCROQU1FIC0tc2VjdGlvbj0kJFNFQyAtLWNlbnRlcj1P cGVuU1NMIC0tcmVsZWFzZT0kKFZFUlNJT04pJzsgXAorIAkkKFBST0NFU1NfUE9EUykKKyAKKyB1 bmluc3RhbGxfbWFuX2RvY3M6CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wYi9Db25maWd1cmF0aW9u cy8xMC1tYWluLmNvbmYuYnVpbGQgb3BlbnNzbC0xLjEuMGIvQ29uZmlndXJhdGlvbnMvMTAtbWFp bi5jb25mCistLS0gb3BlbnNzbC0xLjEuMGIvQ29uZmlndXJhdGlvbnMvMTAtbWFpbi5jb25mLmJ1 aWxkCTIwMTYtMDktMjYgMTE6NDY6MDQuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEu MGIvQ29uZmlndXJhdGlvbnMvMTAtbWFpbi5jb25mCTIwMTYtMDktMjYgMTU6MTY6MjYuOTM1NjYw MTQ3ICswMjAwCitAQCAtNjU1LDYgKzY1NSw3IEBAIHN1YiB2bXNfaW5mbyB7CisgICAgICAgICBj ZmxhZ3MgICAgICAgICAgID0+IGFkZCgiLW02NCAtRExfRU5ESUFOIiksCisgICAgICAgICBwZXJs YXNtX3NjaGVtZSAgID0+ICJsaW51eDY0bGUiLAorICAgICAgICAgc2hhcmVkX2xkZmxhZyAgICA9 PiAiLW02NCIsCisrICAgICAgICBtdWx0aWxpYiAgICAgICAgID0+ICI2NCIsCisgICAgIH0sCisg CisgICAgICJsaW51eC1hcm12NCIgPT4geworZGlmZiAtdXAgb3BlbnNzbC0xLjEuMGIvY3J5cHRv L2VjL2VjX2xpYi5jLmJ1aWxkIG9wZW5zc2wtMS4xLjBiL2NyeXB0by9lYy9lY19saWIuYworLS0t IG9wZW5zc2wtMS4xLjBiL2NyeXB0by9lYy9lY19saWIuYy5idWlsZAkyMDE2LTA5LTI2IDE1OjE2 OjI2LjkzNjY2MDE3MSArMDIwMAorKysrIG9wZW5zc2wtMS4xLjBiL2NyeXB0by9lYy9lY19saWIu YwkyMDE2LTA5LTI2IDE1OjE4OjM4LjM1MTc0MjE5NSArMDIwMAorQEAgLTc0LDkgKzc0LDYgQEAg dm9pZCBFQ19wcmVfY29tcF9mcmVlKEVDX0dST1VQICpncm91cCkKKyAgICAgICAgIGJyZWFrOwor ICNlbmRpZgorICNpZm5kZWYgT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4CistICAgIGNh c2UgUENUX25pc3RwMjI0OgorLSAgICAgICAgRUNfbmlzdHAyMjRfcHJlX2NvbXBfZnJlZShncm91 cC0+cHJlX2NvbXAubmlzdHAyMjQpOworLSAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUENUX25p c3RwMjU2OgorICAgICAgICAgRUNfbmlzdHAyNTZfcHJlX2NvbXBfZnJlZShncm91cC0+cHJlX2Nv bXAubmlzdHAyNTYpOworICAgICAgICAgYnJlYWs7CitAQCAtMTUyLDkgKzE0OSw2IEBAIGludCBF Q19HUk9VUF9jb3B5KEVDX0dST1VQICpkZXN0LCBjb25zdAorICAgICAgICAgYnJlYWs7CisgI2Vu ZGlmCisgI2lmbmRlZiBPUEVOU1NMX05PX0VDX05JU1RQXzY0X0dDQ18xMjgKKy0gICAgY2FzZSBQ Q1RfbmlzdHAyMjQ6CistICAgICAgICBkZXN0LT5wcmVfY29tcC5uaXN0cDIyNCA9IEVDX25pc3Rw MjI0X3ByZV9jb21wX2R1cChzcmMtPnByZV9jb21wLm5pc3RwMjI0KTsKKy0gICAgICAgIGJyZWFr OworICAgICBjYXNlIFBDVF9uaXN0cDI1NjoKKyAgICAgICAgIGRlc3QtPnByZV9jb21wLm5pc3Rw MjU2ID0gRUNfbmlzdHAyNTZfcHJlX2NvbXBfZHVwKHNyYy0+cHJlX2NvbXAubmlzdHAyNTYpOwor ICAgICAgICAgYnJlYWs7CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wYi90ZXN0L2VjZGh0ZXN0X2Nh dnMuaC5idWlsZCBvcGVuc3NsLTEuMS4wYi90ZXN0L2VjZGh0ZXN0X2NhdnMuaAorLS0tIG9wZW5z c2wtMS4xLjBiL3Rlc3QvZWNkaHRlc3RfY2F2cy5oLmJ1aWxkCTIwMTYtMDktMjYgMTU6MTY6MjYu OTE4NjU5NzQ5ICswMjAwCisrKysgb3BlbnNzbC0xLjEuMGIvdGVzdC9lY2RodGVzdF9jYXZzLmgJ MjAxNi0wOS0yNiAxNToxNjoyNi45MzY2NjAxNzEgKzAyMDAKK0BAIC0yOSw2ICsyOSw3IEBAIHR5 cGVkZWYgc3RydWN0IHsKKyAKKyBzdGF0aWMgY29uc3QgZWNkaF9jYXZzX2thdF90IGVjZGhfY2F2 c19rYXRzW10gPSB7CisgICAgIC8qIGN1cnZlcyBvdmVyIHByaW1lIGZpZWxkcyBnbyBoZXJlICov CisrI2lmIDAKKyAgICAgeyBOSURfWDlfNjJfcHJpbWUxOTJ2MSwKKyAgICAgIjQyZWE2ZGQ5OTY5 ZGQyYTYxZmVhMWFhYzdmOGU5OGVkY2M4OTZjNmU1NTg1N2NjMCIsCisgICAgICJkZmJlNWQ3YzYx ZmFjODhiMTE4MTFiZGUzMjhlOGEwZDEyYmYwMWE5ZDIwNGI1MjMiLAorQEAgLTM3OSw2ICszODAs NyBAQCBzdGF0aWMgY29uc3QgZWNkaF9jYXZzX2thdF90IGVjZGhfY2F2c19rCisgICAgICJhNmIy OTYzMmRiOTRkYTIxMjVkYzFjZjgwZTAzNzAyNjg3YjJhY2MxMTIyMDIyZmEyMTc0NzY1YSIsCisg ICAgICI2MTcyM2VkZDczZTEwZGFlZDczNzc1Mjc4ZjE5NThiYTU2ZjFmYzlkMDg1ZWJjMmI2NGM4 NGZlNSIsCisgICAgICI3MTk1NGUyMjYxZTg1MTBiZTFhMDYwNzMzNjcxZDJlOWQwYTJkMDEyZWI0 ZTA5NTU2ZDY5N2QyYSIgfSwKKysjZW5kaWYKKyAgICAgeyBOSURfWDlfNjJfcHJpbWUyNTZ2MSwK KyAgICAgIjcwMGM0OGY3N2Y1NjU4NGM1Y2M2MzJjYTY1NjQwZGI5MWI2YmFjY2UzYTRkZjZiNDJj ZTdjYzgzODgzM2QyODciLAorICAgICAiZGI3MWU1MDllM2ZkOWIwNjBkZGIyMGJhNWM1MWRjYzU5 NDhkNDZmYmY2NDBkZmUwNDQxNzgyY2FiODVmYTRhYyIsCitkaWZmIC11cCBvcGVuc3NsLTEuMS4w Yi90ZXN0L2VjZGh0ZXN0LmMuYnVpbGQgb3BlbnNzbC0xLjEuMGIvdGVzdC9lY2RodGVzdC5jCist LS0gb3BlbnNzbC0xLjEuMGIvdGVzdC9lY2RodGVzdC5jLmJ1aWxkCTIwMTYtMDktMjYgMTE6NDY6 MDguMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMGIvdGVzdC9lY2RodGVzdC5jCTIw MTYtMDktMjYgMTU6MTY6MjYuOTM2NjYwMTcxICswMjAwCitAQCAtMjUyLDYgKzI1Miw3IEBAIHR5 cGVkZWYgc3RydWN0IHsKKyAKKyBzdGF0aWMgY29uc3QgZWNkaF9rYXRfdCBlY2RoX2thdHNbXSA9 IHsKKyAgICAgLyogS2V5cyBhbmQgc2hhcmVkIHNlY3JldHMgZnJvbSBSRkMgNTExNCAqLworKyNp ZiAwCisgICAgIHsgTklEX1g5XzYyX3ByaW1lMTkydjEsCisgICAgICIzMjNGQTMxNjlEOEU5QzY1 OTNGNTk0NzZCQzE0MjAwMEFCNUJFMEUyNDlDNDM0MjYiLAorICAgICAiNjMxRjk1QkI0QTY3NjMy QzlDNDc2RUVFOUFCNjk1QUIyNDBBMDQ5OTMwN0ZDRjYyIiwKK0BAIC0yNjAsNiArMjYxLDcgQEAg c3RhdGljIGNvbnN0IGVjZGhfa2F0X3QgZWNkaF9rYXRzW10gPSB7CisgICAgICJCNTU4RUI2QzI4 OERBNzA3QkJCNEY4RkJBRTJBQjlFOUNCNjJFM0JDNUM3NTczRTIyRTI2RDM3RiIsCisgICAgICJB QzNCMUFERDNEOTc3MEU2RjZBNzA4RUU5RjNCOEUwQUIzQjQ4MEU5RjI3Rjg1Qzg4QjVFNkQxOCIs CisgICAgICI1MjI3MkY1MEY0NkY0RURDOTE1MTU2OTA5MkY0NkRGMkQ5NkVDQzNCNkRDMTcxNEE0 RUE5NDlGQSIgfSwKKysjZW5kaWYKKyAgICAgeyBOSURfWDlfNjJfcHJpbWUyNTZ2MSwKKyAgICAg IjgxNDI2NDE0NUYyRjU2RjJFOTZBOEUzMzdBMTI4NDk5M0ZBRjQzMkE1QUJDRTU5RTg2N0I3Mjkx RDUwN0EzQUYiLAorICAgICAiMkNFMTc4OEVDMTk3RTA5NkRCOTVBMjAwQ0MwQUIyNkExOUNFNkJD Q0FENTYyQjhFRUUxQjU5Mzc2MUNGN0Y0MSIsCitAQCAtMzAzLDYgKzMwNSw3IEBAIHN0YXRpYyBj b25zdCBlY2RoX2thdF90IGVjZGhfa2F0c1tdID0geworICAgICAiMDExNDRDN0Q3OUFFNjk1NkJD OEVEQjhFN0M3ODdDNDUyMUNCMDg2RkE2NDQwN0Y5Nzg5NEU1RTZCMkQ3OUIwNCIKKyAgICAgIkQx NDI3RTczQ0E0QkFBMjQwQTM0Nzg2ODU5ODEwQzA2QjNDNzE1QTNBOENDMzE1MUYyQkVFNDE3OTk2 RDE5RjMiCisgICAgICJEREVBIiB9LAorKyNpZiAwCisgICAgIC8qIEtleXMgYW5kIHNoYXJlZCBz ZWNyZXRzIGZyb20gUkZDIDcwMjcgKi8KKyAgICAgeyBOSURfYnJhaW5wb29sUDI1NnIxLAorICAg ICAiODFEQjFFRTEwMDE1MEZGMkVBMzM4RDcwODI3MUJFMzgzMDBDQjU0MjQxRDc5OTUwRjc3QjA2 MzAzOTgwNEYxRCIsCitAQCAtMzIyLDYgKzMyNSw3IEBAIHN0YXRpYyBjb25zdCBlY2RoX2thdF90 IGVjZGhfa2F0c1tdID0geworICAgICAiQUJCQzE5OTYzREFCOEUyRjFFQkEwMEJGRkIyOUU0RDcy RDEzRjIyMjQ1NjJGNDA1Q0I4MDUwMzY2NkIyNTQyOSIsCisgICAgICJBNzkyNzA5ODY1NUYxRjk5 NzZGQTUwQTlENTY2ODY1REM1MzAzMzE4NDYzODFDODcyNTZCQUYzMjI2MjQ0Qjc2IgorICAgICAi RDM2NDAzQzAyNEQ3QkJGMEFBMDgwM0VBRkY0MDVEM0QyNEYxMUE5QjVDMEJFRjY3OUZFMTQ1NEIy MUM0Q0QxRiIgfQorKyNlbmRpZgorIH07CisgCisgLyogR2l2ZW4gcHJpdmF0ZSB2YWx1ZSBhbmQg TklELCBjcmVhdGUgRUNfS0VZIHN0cnVjdHVyZSAqLworZGlmZiAtdXAgb3BlbnNzbC0xLjEuMGIv dGVzdC9lY2RzYXRlc3QuYy5idWlsZCBvcGVuc3NsLTEuMS4wYi90ZXN0L2VjZHNhdGVzdC5jCist LS0gb3BlbnNzbC0xLjEuMGIvdGVzdC9lY2RzYXRlc3QuYy5idWlsZAkyMDE2LTA5LTI2IDExOjQ2 OjA4LjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjBiL3Rlc3QvZWNkc2F0ZXN0LmMJ MjAxNi0wOS0yNiAxNToxNjoyNi45MzY2NjAxNzEgKzAyMDAKK0BAIC0yMTYsNiArMjE2LDcgQEAg aW50IHg5XzYyX3Rlc3RzKEJJTyAqb3V0KQorICAgICBpZiAoIWNoYW5nZV9yYW5kKCkpCisgICAg ICAgICBnb3RvIHg5NjJfZXJyOworIAorKyNpZiAwCisgICAgIGlmICgheDlfNjJfdGVzdF9pbnRl cm5hbChvdXQsIE5JRF9YOV82Ml9wcmltZTE5MnYxLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIjMzNDI0MDM1MzY0MDU5ODE3MjkzOTM0ODgzMzQ2OTQ2MDA0MTU1OTY4ODE4MjY4Njkz NTE2Nzc2MTMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjU3MzU4MjIzMjg4ODgx NTUyNTQ2ODM4OTQ5OTc4OTc1NzE5NTE1Njg1NTM2NDI4OTIwMjk5ODIzNDIiKSkKK0BAIC0yMjYs NiArMjI3LDcgQEAgaW50IHg5XzYyX3Rlc3RzKEJJTyAqb3V0KQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIjMyMzgxMzU1MzIwOTc5NzM1NzcwODA3ODc3NjgzMTI1MDUwNTkzMTg5MTA1 MTc1NTAwNzg0Mjc4MTkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNzg1MDUxNzk0 NDg3ODMiKSkKKyAgICAgICAgIGdvdG8geDk2Ml9lcnI7CisrI2VuZGlmCisgIyBpZm5kZWYgT1BF TlNTTF9OT19FQzJNCisgICAgIGlmICgheDlfNjJfdGVzdF9pbnRlcm5hbChvdXQsIE5JRF9YOV82 Ml9jMnRuYjE5MXYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjg3MTk0MzgzMTY0 ODcxNTQzMzU1NzIyMjg0OTI2OTA0NDE5OTk3MjM3NTkxNTM1MDY2NTI4MDQ4IiwKCmRpZmYgLS1n aXQgYS9vcGVuc3NsLTEuMS4wLWNhLWRpci5wYXRjaCBiL29wZW5zc2wtMS4xLjAtY2EtZGlyLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyMTU1OWQKLS0tIC9kZXYv bnVsbAorKysgYi9vcGVuc3NsLTEuMS4wLWNhLWRpci5wYXRjaApAQCAtMCwwICsxLDI0IEBACitk aWZmIC11cCBvcGVuc3NsLTEuMS4wLXByZTUvYXBwcy9DQS5wbC5pbi5jYS1kaXIgb3BlbnNzbC0x LjEuMC1wcmU1L2FwcHMvQ0EucGwuaW4KKy0tLSBvcGVuc3NsLTEuMS4wLXByZTUvYXBwcy9DQS5w bC5pbi5jYS1kaXIJMjAxNi0wNy0xOCAxNToxOTo0MC4xMTgxMTA0MDUgKzAyMDAKKysrKyBvcGVu c3NsLTEuMS4wLXByZTUvYXBwcy9DQS5wbC5pbgkyMDE2LTA3LTE4IDE1OjIxOjA2LjUzMTA2MTMz NyArMDIwMAorQEAgLTI2LDcgKzI2LDcgQEAgbXkgJFg1MDkgPSAiJG9wZW5zc2wgeDUwOSI7Cisg bXkgJFBLQ1MxMiA9ICIkb3BlbnNzbCBwa2NzMTIiOworIAorICMgZGVmYXVsdCBvcGVuc3NsLmNu ZiBmaWxlIGhhcyBzZXR1cCBhcyBwZXIgdGhlIGZvbGxvd2luZworLW15ICRDQVRPUCA9ICIuL2Rl bW9DQSI7CisrbXkgJENBVE9QID0gIi9ldGMvcGtpL0NBIjsKKyBteSAkQ0FLRVkgPSAiY2FrZXku cGVtIjsKKyBteSAkQ0FSRVEgPSAiY2FyZXEucGVtIjsKKyBteSAkQ0FDRVJUID0gImNhY2VydC5w ZW0iOworZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC1wcmU1L2FwcHMvb3BlbnNzbC5jbmYuY2EtZGly IG9wZW5zc2wtMS4xLjAtcHJlNS9hcHBzL29wZW5zc2wuY25mCistLS0gb3BlbnNzbC0xLjEuMC1w cmU1L2FwcHMvb3BlbnNzbC5jbmYuY2EtZGlyCTIwMTYtMDctMTggMTU6MTk6NDAuMTE0MTEwMzE1 ICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC1wcmU1L2FwcHMvb3BlbnNzbC5jbmYJMjAxNi0wNy0x OCAxNToxOTo0OC40OTIyOTk0NjcgKzAyMDAKK0BAIC0zOSw3ICszOSw3IEBAIGRlZmF1bHRfY2EJ PSBDQV9kZWZhdWx0CQkjIFRoZSBkZWZhdWx0IGMKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIFsgQ0FfZGVmYXVs dCBdCisgCistZGlyCQk9IC4vZGVtb0NBCQkjIFdoZXJlIGV2ZXJ5dGhpbmcgaXMga2VwdAorK2Rp cgkJPSAvZXRjL3BraS9DQQkJIyBXaGVyZSBldmVyeXRoaW5nIGlzIGtlcHQKKyBjZXJ0cwkJPSAk ZGlyL2NlcnRzCQkjIFdoZXJlIHRoZSBpc3N1ZWQgY2VydHMgYXJlIGtlcHQKKyBjcmxfZGlyCQk9 ICRkaXIvY3JsCQkjIFdoZXJlIHRoZSBpc3N1ZWQgY3JsIGFyZSBrZXB0CisgZGF0YWJhc2UJPSAk ZGlyL2luZGV4LnR4dAkjIGRhdGFiYXNlIGluZGV4IGZpbGUuCgpkaWZmIC0tZ2l0IGEvb3BlbnNz bC0xLjEuMC1jYy1yZXFzLnBhdGNoIGIvb3BlbnNzbC0xLjEuMC1jYy1yZXFzLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNWMwMjEKLS0tIC9kZXYvbnVsbAorKysg Yi9vcGVuc3NsLTEuMS4wLWNjLXJlcXMucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorZGlmZiAtdXAg b3BlbnNzbC0xLjEuMC1wcmU1L2NyeXB0by9yc2EvcnNhX2dlbi5jLmNjLXJlcXMgb3BlbnNzbC0x LjEuMC1wcmU1L2NyeXB0by9yc2EvcnNhX2dlbi5jCistLS0gb3BlbnNzbC0xLjEuMC1wcmU1L2Ny eXB0by9yc2EvcnNhX2dlbi5jLmNjLXJlcXMJMjAxNi0wNC0xOSAxNjo1Nzo1NC4wMDAwMDAwMDAg KzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wLXByZTUvY3J5cHRvL3JzYS9yc2FfZ2VuLmMJMjAxNi0w Ny0yMCAxNzowMTo0OS45Mjk2OTU1NDIgKzAyMDAKK0BAIC0xMjMsNiArMTIzLDEyIEBAIHN0YXRp YyBpbnQgcnNhX2J1aWx0aW5fa2V5Z2VuKFJTQSAqcnNhLAorICAgICBpZiAoIXJzYS0+aXFtcCAm JiAoKHJzYS0+aXFtcCA9IEJOX3NlY3VyZV9uZXcoKSkgPT0gTlVMTCkpCisgICAgICAgICBnb3Rv IGVycjsKKyAKKysgICAgLyogcHJlcGFyZSBtaW5pbXVtIHAgYW5kIHEgZGlmZmVyZW5jZSAqLwor KyAgICBpZiAoIUJOX29uZShyMykpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKGJpdHNw ID4gMTAwICYmICFCTl9sc2hpZnQocjMsIHIzLCBiaXRzcCAtIDEwMCkpCisrICAgICAgICBnb3Rv IGVycjsKKysKKyAgICAgQk5fY29weShyc2EtPmUsIGVfdmFsdWUpOworIAorICAgICAvKiBnZW5l cmF0ZSBwIGFuZCBxICovCitAQCAtMTUwLDcgKzE1Niw5IEBAIHN0YXRpYyBpbnQgcnNhX2J1aWx0 aW5fa2V5Z2VuKFJTQSAqcnNhLAorICAgICAgICAgZG8geworICAgICAgICAgICAgIGlmICghQk5f Z2VuZXJhdGVfcHJpbWVfZXgocnNhLT5xLCBiaXRzcSwgMCwgTlVMTCwgTlVMTCwgY2IpKQorICAg ICAgICAgICAgICAgICBnb3RvIGVycjsKKy0gICAgICAgIH0gd2hpbGUgKChCTl9jbXAocnNhLT5w LCByc2EtPnEpID09IDApICYmICgrK2RlZ2VuZXJhdGUgPCAzKSk7CisrICAgICAgICAgICAgaWYg KCFCTl9zdWIocjIsIHJzYS0+cSwgcnNhLT5wKSkKKysgICAgICAgICAgICAgICAgZ290byBlcnI7 CisrICAgICAgICB9IHdoaWxlICgoQk5fdWNtcChyMiwgcjMpIDw9IDApICYmICgrK2RlZ2VuZXJh dGUgPCAzKSk7CisgICAgICAgICBpZiAoZGVnZW5lcmF0ZSA9PSAzKSB7CisgICAgICAgICAgICAg b2sgPSAwOyAgICAgICAgICAgICAvKiB3ZSBzZXQgb3VyIG93biBlcnIgKi8KKyAgICAgICAgICAg ICBSU0FlcnIoUlNBX0ZfUlNBX0JVSUxUSU5fS0VZR0VOLCBSU0FfUl9LRVlfU0laRV9UT09fU01B TEwpOwoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4xLjAtY2hpbC1maXhlcy5wYXRjaCBiL29wZW5z c2wtMS4xLjAtY2hpbC1maXhlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4zNjNkMDVmCi0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjEuMC1jaGlsLWZpeGVz LnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjAtcHJlNi9lbmdp bmVzL2VfY2hpbC5jLmNoaWwgb3BlbnNzbC0xLjEuMC1wcmU2L2VuZ2luZXMvZV9jaGlsLmMKKy0t LSBvcGVuc3NsLTEuMS4wLXByZTYvZW5naW5lcy9lX2NoaWwuYy5jaGlsCTIwMTYtMDgtMDQgMTY6 MDA6NDcuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC1wcmU2L2VuZ2luZXMvZV9j aGlsLmMJMjAxNi0wOC0wNSAxNjo1MDoxMy44NjA1ODg3NzUgKzAyMDAKK0BAIC0xMTk1LDYgKzEx OTUsMTEgQEAgc3RhdGljIGludCBod2NyaGtfaW5zZXJ0X2NhcmQoY29uc3QgY2hhcgorICAgICBV SSAqdWk7CisgICAgIHZvaWQgKmNhbGxiYWNrX2RhdGEgPSBOVUxMOworICAgICBVSV9NRVRIT0Qg KnVpX21ldGhvZCA9IE5VTEw7CisrICAgIC8qIERlc3BpdGUgd2hhdCB0aGUgZG9jdW1lbnRhdGlv biBzYXlzIHByb21wdF9pbmZvIGNhbiBiZQorKyAgICAgKiBhbiBlbXB0eSBzdHJpbmcuCisrICAg ICAqLworKyAgICBpZiAocHJvbXB0X2luZm8gJiYgISpwcm9tcHRfaW5mbykKKysgICAgICAgIHBy b21wdF9pbmZvID0gTlVMTDsKKyAKKyAgICAgaWYgKGNhY3R4KSB7CisgICAgICAgICBpZiAoY2Fj dHgtPnVpX21ldGhvZCkKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMS4wLWRlZmF1bHRzLnBhdGNo IGIvb3BlbnNzbC0xLjEuMC1kZWZhdWx0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4yYTg4Y2VmCi0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjEuMC1kZWZh dWx0cy5wYXRjaApAQCAtMCwwICsxLDUxIEBACitkaWZmIC11cCBvcGVuc3NsLTEuMS4wLXByZTUv YXBwcy9vcGVuc3NsLmNuZi5kZWZhdWx0cyBvcGVuc3NsLTEuMS4wLXByZTUvYXBwcy9vcGVuc3Ns LmNuZgorLS0tIG9wZW5zc2wtMS4xLjAtcHJlNS9hcHBzL29wZW5zc2wuY25mLmRlZmF1bHRzCTIw MTYtMDQtMTkgMTY6NTc6NTIuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC1wcmU1 L2FwcHMvb3BlbnNzbC5jbmYJMjAxNi0wNy0xOCAxNDoyMjowOC4yNTI2OTEwMTcgKzAyMDAKK0BA IC03Miw3ICs3Miw3IEBAIGNlcnRfb3B0IAk9IGNhX2RlZmF1bHQJCSMgQ2VydGlmaWNhdGUgZmkK KyAKKyBkZWZhdWx0X2RheXMJPSAzNjUJCQkjIGhvdyBsb25nIHRvIGNlcnRpZnkgZm9yCisgZGVm YXVsdF9jcmxfZGF5cz0gMzAJCQkjIGhvdyBsb25nIGJlZm9yZSBuZXh0IENSTAorLWRlZmF1bHRf bWQJPSBkZWZhdWx0CQkjIHVzZSBwdWJsaWMga2V5IGRlZmF1bHQgTUQKKytkZWZhdWx0X21kCT0g c2hhMjU2CQkjIHVzZSBTSEEtMjU2IGJ5IGRlZmF1bHQKKyBwcmVzZXJ2ZQk9IG5vCQkJIyBrZWVw IHBhc3NlZCBETiBvcmRlcmluZworIAorICMgQSBmZXcgZGlmZmVyZW5jZSB3YXkgb2Ygc3BlY2lm eWluZyBob3cgc2ltaWxhciB0aGUgcmVxdWVzdCBzaG91bGQgbG9vaworQEAgLTEwNCw2ICsxMDQs NyBAQCBlbWFpbEFkZHJlc3MJCT0gb3B0aW9uYWwKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIFsgcmVxIF0KKyBk ZWZhdWx0X2JpdHMJCT0gMjA0OAorK2RlZmF1bHRfbWQJCT0gc2hhMjU2CisgZGVmYXVsdF9rZXlm aWxlIAk9IHByaXZrZXkucGVtCisgZGlzdGluZ3Vpc2hlZF9uYW1lCT0gcmVxX2Rpc3Rpbmd1aXNo ZWRfbmFtZQorIGF0dHJpYnV0ZXMJCT0gcmVxX2F0dHJpYnV0ZXMKK0BAIC0xMjYsMTcgKzEyNywx OCBAQCBzdHJpbmdfbWFzayA9IHV0Zjhvbmx5CisgCisgWyByZXFfZGlzdGluZ3Vpc2hlZF9uYW1l IF0KKyBjb3VudHJ5TmFtZQkJCT0gQ291bnRyeSBOYW1lICgyIGxldHRlciBjb2RlKQorLWNvdW50 cnlOYW1lX2RlZmF1bHQJCT0gQVUKKytjb3VudHJ5TmFtZV9kZWZhdWx0CQk9IFhYCisgY291bnRy eU5hbWVfbWluCQkJPSAyCisgY291bnRyeU5hbWVfbWF4CQkJPSAyCisgCisgc3RhdGVPclByb3Zp bmNlTmFtZQkJPSBTdGF0ZSBvciBQcm92aW5jZSBOYW1lIChmdWxsIG5hbWUpCistc3RhdGVPclBy b3ZpbmNlTmFtZV9kZWZhdWx0CT0gU29tZS1TdGF0ZQorKyNzdGF0ZU9yUHJvdmluY2VOYW1lX2Rl ZmF1bHQJPSBEZWZhdWx0IFByb3ZpbmNlCisgCisgbG9jYWxpdHlOYW1lCQkJPSBMb2NhbGl0eSBO YW1lIChlZywgY2l0eSkKKytsb2NhbGl0eU5hbWVfZGVmYXVsdAkJPSBEZWZhdWx0IENpdHkKKyAK KyAwLm9yZ2FuaXphdGlvbk5hbWUJCT0gT3JnYW5pemF0aW9uIE5hbWUgKGVnLCBjb21wYW55KQor LTAub3JnYW5pemF0aW9uTmFtZV9kZWZhdWx0CT0gSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkCisr MC5vcmdhbml6YXRpb25OYW1lX2RlZmF1bHQJPSBEZWZhdWx0IENvbXBhbnkgTHRkCisgCisgIyB3 ZSBjYW4gZG8gdGhpcyBidXQgaXQgaXMgbm90IG5lZWRlZCBub3JtYWxseSA6LSkKKyAjMS5vcmdh bml6YXRpb25OYW1lCQk9IFNlY29uZCBPcmdhbml6YXRpb24gTmFtZSAoZWcsIGNvbXBhbnkpCitA QCAtMTQ1LDcgKzE0Nyw3IEBAIGxvY2FsaXR5TmFtZQkJCT0gTG9jYWxpdHkgTmFtZSAoZWcsIGNp dHkKKyBvcmdhbml6YXRpb25hbFVuaXROYW1lCQk9IE9yZ2FuaXphdGlvbmFsIFVuaXQgTmFtZSAo ZWcsIHNlY3Rpb24pCisgI29yZ2FuaXphdGlvbmFsVW5pdE5hbWVfZGVmYXVsdAk9CisgCistY29t bW9uTmFtZQkJCT0gQ29tbW9uIE5hbWUgKGUuZy4gc2VydmVyIEZRRE4gb3IgWU9VUiBuYW1lKQor K2NvbW1vbk5hbWUJCQk9IENvbW1vbiBOYW1lIChlZywgeW91ciBuYW1lIG9yIHlvdXIgc2VydmVy XCdzIGhvc3RuYW1lKQorIGNvbW1vbk5hbWVfbWF4CQkJPSA2NAorIAorIGVtYWlsQWRkcmVzcwkJ CT0gRW1haWwgQWRkcmVzcwoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4xLjAtZGlzYWJsZS1zc2wz LnBhdGNoIGIvb3BlbnNzbC0xLjEuMC1kaXNhYmxlLXNzbDMucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMTU3ZjY3OAotLS0gL2Rldi9udWxsCisrKyBiL29wZW5zc2wt MS4xLjAtZGlzYWJsZS1zc2wzLnBhdGNoCkBAIC0wLDAgKzEsNTkgQEAKK2RpZmYgLXVwIG9wZW5z c2wtMS4xLjAvc3NsL3NzbF9saWIuYy5kaXNhYmxlLXNzbDMgb3BlbnNzbC0xLjEuMC9zc2wvc3Ns X2xpYi5jCistLS0gb3BlbnNzbC0xLjEuMC9zc2wvc3NsX2xpYi5jLmRpc2FibGUtc3NsMwkyMDE2 LTA4LTI1IDE3OjI5OjIyLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAvc3NsL3Nz bF9saWIuYwkyMDE2LTA5LTA4IDExOjA4OjA1LjI1MjA4MjI2MyArMDIwMAorQEAgLTI0NzAsNiAr MjQ3MCwxMyBAQCBTU0xfQ1RYICpTU0xfQ1RYX25ldyhjb25zdCBTU0xfTUVUSE9EICptCisgICAg ICAqIG9yIGJ5IHVzaW5nIHRoZSBTU0xfQ09ORiBsaWJyYXJ5LgorICAgICAgKi8KKyAgICAgcmV0 LT5vcHRpb25zIHw9IFNTTF9PUF9OT19DT01QUkVTU0lPTjsKKysgICAgLyoKKysgICAgICogRGlz YWJsZSBTU0x2MyBieSBkZWZhdWx0LiAgQXBwbGljYXRpb25zIGNhbgorKyAgICAgKiByZS1lbmFi bGUgaXQgYnkgY29uZmlndXJpbmcKKysgICAgICogU1NMX0NUWF9jbGVhcl9vcHRpb25zKGN0eCwg U1NMX09QX05PX1NTTHYzKTsKKysgICAgICogb3IgYnkgdXNpbmcgdGhlIFNTTF9DT05GIGxpYnJh cnkuCisrICAgICAqLworKyAgICByZXQtPm9wdGlvbnMgfD0gU1NMX09QX05PX1NTTHYzOworIAor ICAgICByZXQtPnRsc2V4dF9zdGF0dXNfdHlwZSA9IC0xOworIAorZGlmZiAtdXAgb3BlbnNzbC0x LjEuMC90ZXN0L3NzbF90ZXN0LmMuZGlzYWJsZS1zc2wzIG9wZW5zc2wtMS4xLjAvdGVzdC9zc2xf dGVzdC5jCistLS0gb3BlbnNzbC0xLjEuMC90ZXN0L3NzbF90ZXN0LmMuZGlzYWJsZS1zc2wzCTIw MTYtMDktMDggMTE6MDg6MDUuMjUyMDgyMjYzICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC90ZXN0 L3NzbF90ZXN0LmMJMjAxNi0wOS0wOCAxMToxMTo0NC44MDIwMDU4ODYgKzAyMDAKK0BAIC0yNTgs NiArMjU4LDcgQEAgc3RhdGljIGludCBleGVjdXRlX3Rlc3QoU1NMX1RFU1RfRklYVFVSRQorICAg ICAgICAgICAgIFNTTF9URVNUX1NFUlZFUk5BTUVfQ0JfTk9ORSkgeworICAgICAgICAgICAgIHNl cnZlcjJfY3R4ID0gU1NMX0NUWF9uZXcoVExTX3NlcnZlcl9tZXRob2QoKSk7CisgICAgICAgICAg ICAgVEVTVF9jaGVjayhzZXJ2ZXIyX2N0eCAhPSBOVUxMKTsKKysgICAgICAgICAgICBTU0xfQ1RY X2NsZWFyX29wdGlvbnMoc2VydmVyMl9jdHgsIFNTTF9PUF9OT19TU0x2Myk7CisgICAgICAgICB9 CisgICAgICAgICBjbGllbnRfY3R4ID0gU1NMX0NUWF9uZXcoVExTX2NsaWVudF9tZXRob2QoKSk7 CisgCitAQCAtMjY2LDExICsyNjcsMTUgQEAgc3RhdGljIGludCBleGVjdXRlX3Rlc3QoU1NMX1RF U1RfRklYVFVSRQorICAgICAgICAgICAgIHJlc3VtZV9jbGllbnRfY3R4ID0gU1NMX0NUWF9uZXco VExTX2NsaWVudF9tZXRob2QoKSk7CisgICAgICAgICAgICAgVEVTVF9jaGVjayhyZXN1bWVfc2Vy dmVyX2N0eCAhPSBOVUxMKTsKKyAgICAgICAgICAgICBURVNUX2NoZWNrKHJlc3VtZV9jbGllbnRf Y3R4ICE9IE5VTEwpOworKyAgICAgICAgICAgIFNTTF9DVFhfY2xlYXJfb3B0aW9ucyhyZXN1bWVf c2VydmVyX2N0eCwgU1NMX09QX05PX1NTTHYzKTsKKysgICAgICAgICAgICBTU0xfQ1RYX2NsZWFy X29wdGlvbnMocmVzdW1lX2NsaWVudF9jdHgsIFNTTF9PUF9OT19TU0x2Myk7CisgICAgICAgICB9 CisgICAgIH0KKyAKKyAgICAgVEVTVF9jaGVjayhzZXJ2ZXJfY3R4ICE9IE5VTEwpOworICAgICBU RVNUX2NoZWNrKGNsaWVudF9jdHggIT0gTlVMTCk7CisrICAgIFNTTF9DVFhfY2xlYXJfb3B0aW9u cyhzZXJ2ZXJfY3R4LCBTU0xfT1BfTk9fU1NMdjMpOworKyAgICBTU0xfQ1RYX2NsZWFyX29wdGlv bnMoY2xpZW50X2N0eCwgU1NMX09QX05PX1NTTHYzKTsKKyAKKyAgICAgVEVTVF9jaGVjayhDT05G X21vZHVsZXNfbG9hZChjb25mLCBmaXh0dXJlLnRlc3RfYXBwLCAwKSA+IDApOworIAorZGlmZiAt dXAgb3BlbnNzbC0xLjEuMC90ZXN0L3NzbHRlc3Rfb2xkLmMuZGlzYWJsZS1zc2wzIG9wZW5zc2wt MS4xLjAvdGVzdC9zc2x0ZXN0X29sZC5jCistLS0gb3BlbnNzbC0xLjEuMC90ZXN0L3NzbHRlc3Rf b2xkLmMuZGlzYWJsZS1zc2wzCTIwMTYtMDgtMjUgMTc6Mjk6MjMuMDAwMDAwMDAwICswMjAwCisr Kysgb3BlbnNzbC0xLjEuMC90ZXN0L3NzbHRlc3Rfb2xkLmMJMjAxNi0wOS0wOCAxMTowODowNS4y NTMwODIyODYgKzAyMDAKK0BAIC0xNDU2LDYgKzE0NTYsMTEgQEAgaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKKyAgICAgICAgIEVSUl9wcmludF9lcnJvcnMoYmlvX2Vycik7CisgICAg ICAgICBnb3RvIGVuZDsKKyAgICAgfQorKworKyAgICBTU0xfQ1RYX2NsZWFyX29wdGlvbnMoY19j dHgsIFNTTF9PUF9OT19TU0x2Myk7CisrICAgIFNTTF9DVFhfY2xlYXJfb3B0aW9ucyhzX2N0eCwg U1NMX09QX05PX1NTTHYzKTsKKysgICAgU1NMX0NUWF9jbGVhcl9vcHRpb25zKHNfY3R4MiwgU1NM X09QX05PX1NTTHYzKTsKKysKKyAgICAgLyoKKyAgICAgICogU2luY2Ugd2Ugd2lsbCB1c2UgbG93 IHNlY3VyaXR5IGNpcGhlcnN1aXRlcyBhbmQga2V5cyBmb3IgdGVzdGluZyBzZXQKKyAgICAgICog c2VjdXJpdHkgbGV2ZWwgdG8gemVybyBieSBkZWZhdWx0LiBUZXN0cyBjYW4gb3ZlcnJpZGUgdGhp cyBieSBhZGRpbmcKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMS4wLWVjLWN1cnZlcy5wYXRjaCBi L29wZW5zc2wtMS4xLjAtZWMtY3VydmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmM1MDU4YjMKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEuMS4wLWVjLWN1 cnZlcy5wYXRjaApAQCAtMCwwICsxLDEwMSBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC9hcHBz L3NwZWVkLmMuY3VydmVzIG9wZW5zc2wtMS4xLjAvYXBwcy9zcGVlZC5jCistLS0gb3BlbnNzbC0x LjEuMC9hcHBzL3NwZWVkLmMuY3VydmVzCTIwMTYtMDktMDggMTE6MDM6MTUuNTUwNTg1NDIyICsw MjAwCisrKysgb3BlbnNzbC0xLjEuMC9hcHBzL3NwZWVkLmMJMjAxNi0wOS0wOCAxMTowNToxNy4y ODczMTU0ODggKzAyMDAKK0BAIC01MzYsNDIgKzUzNiwxNiBAQCBzdGF0aWMgT1BUX1BBSVIgcnNh X2Nob2ljZXNbXSA9IHsKKyAjZGVmaW5lIFJfRUNfWDI1NTE5ICAxNgorICNpZm5kZWYgT1BFTlNT TF9OT19FQworIHN0YXRpYyBPUFRfUEFJUiBlY2RzYV9jaG9pY2VzW10gPSB7CistICAgIHsiZWNk c2FwMTYwIiwgUl9FQ19QMTYwfSwKKy0gICAgeyJlY2RzYXAxOTIiLCBSX0VDX1AxOTJ9LAorLSAg ICB7ImVjZHNhcDIyNCIsIFJfRUNfUDIyNH0sCisgICAgIHsiZWNkc2FwMjU2IiwgUl9FQ19QMjU2 fSwKKyAgICAgeyJlY2RzYXAzODQiLCBSX0VDX1AzODR9LAorICAgICB7ImVjZHNhcDUyMSIsIFJf RUNfUDUyMX0sCistICAgIHsiZWNkc2FrMTYzIiwgUl9FQ19LMTYzfSwKKy0gICAgeyJlY2RzYWsy MzMiLCBSX0VDX0syMzN9LAorLSAgICB7ImVjZHNhazI4MyIsIFJfRUNfSzI4M30sCistICAgIHsi ZWNkc2FrNDA5IiwgUl9FQ19LNDA5fSwKKy0gICAgeyJlY2RzYWs1NzEiLCBSX0VDX0s1NzF9LAor LSAgICB7ImVjZHNhYjE2MyIsIFJfRUNfQjE2M30sCistICAgIHsiZWNkc2FiMjMzIiwgUl9FQ19C MjMzfSwKKy0gICAgeyJlY2RzYWIyODMiLCBSX0VDX0IyODN9LAorLSAgICB7ImVjZHNhYjQwOSIs IFJfRUNfQjQwOX0sCistICAgIHsiZWNkc2FiNTcxIiwgUl9FQ19CNTcxfSwKKyAgICAge05VTEx9 CisgfTsKKyAKKyBzdGF0aWMgT1BUX1BBSVIgZWNkaF9jaG9pY2VzW10gPSB7CistICAgIHsiZWNk aHAxNjAiLCBSX0VDX1AxNjB9LAorLSAgICB7ImVjZGhwMTkyIiwgUl9FQ19QMTkyfSwKKy0gICAg eyJlY2RocDIyNCIsIFJfRUNfUDIyNH0sCisgICAgIHsiZWNkaHAyNTYiLCBSX0VDX1AyNTZ9LAor ICAgICB7ImVjZGhwMzg0IiwgUl9FQ19QMzg0fSwKKyAgICAgeyJlY2RocDUyMSIsIFJfRUNfUDUy MX0sCistICAgIHsiZWNkaGsxNjMiLCBSX0VDX0sxNjN9LAorLSAgICB7ImVjZGhrMjMzIiwgUl9F Q19LMjMzfSwKKy0gICAgeyJlY2RoazI4MyIsIFJfRUNfSzI4M30sCistICAgIHsiZWNkaGs0MDki LCBSX0VDX0s0MDl9LAorLSAgICB7ImVjZGhrNTcxIiwgUl9FQ19LNTcxfSwKKy0gICAgeyJlY2Ro YjE2MyIsIFJfRUNfQjE2M30sCistICAgIHsiZWNkaGIyMzMiLCBSX0VDX0IyMzN9LAorLSAgICB7 ImVjZGhiMjgzIiwgUl9FQ19CMjgzfSwKKy0gICAgeyJlY2RoYjQwOSIsIFJfRUNfQjQwOX0sCist ICAgIHsiZWNkaGI1NzEiLCBSX0VDX0I1NzF9LAorICAgICB7ImVjZGh4MjU1MTkiLCBSX0VDX1gy NTUxOX0sCisgICAgIHtOVUxMfQorIH07CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2luY2x1ZGUv b3BlbnNzbC9lYy5oLmN1cnZlcyBvcGVuc3NsLTEuMS4wL2luY2x1ZGUvb3BlbnNzbC9lYy5oCist LS0gb3BlbnNzbC0xLjEuMC9pbmNsdWRlL29wZW5zc2wvZWMuaC5jdXJ2ZXMJMjAxNi0wOC0yNSAx NzoyOToyMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wL2luY2x1ZGUvb3BlbnNz bC9lYy5oCTIwMTYtMDktMDggMTE6MDM6MTUuNTUwNTg1NDIyICswMjAwCitAQCAtODAsMTEgKzgw LDYgQEAgY29uc3QgRUNfTUVUSE9EICpFQ19HRnBfbW9udF9tZXRob2Qodm9pZAorIGNvbnN0IEVD X01FVEhPRCAqRUNfR0ZwX25pc3RfbWV0aG9kKHZvaWQpOworIAorICMgaWZuZGVmIE9QRU5TU0xf Tk9fRUNfTklTVFBfNjRfR0NDXzEyOAorLS8qKiBSZXR1cm5zIDY0LWJpdCBvcHRpbWl6ZWQgbWV0 aG9kcyBmb3IgbmlzdHAyMjQKKy0gKiAgXHJldHVybiAgRUNfTUVUSE9EIG9iamVjdAorLSAqLwor LWNvbnN0IEVDX01FVEhPRCAqRUNfR0ZwX25pc3RwMjI0X21ldGhvZCh2b2lkKTsKKy0KKyAvKiog UmV0dXJucyA2NC1iaXQgb3B0aW1pemVkIG1ldGhvZHMgZm9yIG5pc3RwMjU2CisgICogIFxyZXR1 cm4gIEVDX01FVEhPRCBvYmplY3QKKyAgKi8KK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjAvc3NsL3Qx X2xpYi5jLmN1cnZlcyBvcGVuc3NsLTEuMS4wL3NzbC90MV9saWIuYworLS0tIG9wZW5zc2wtMS4x LjAvc3NsL3QxX2xpYi5jLmN1cnZlcwkyMDE2LTA5LTA4IDExOjAzOjE1LjU1MTU4NTQ0NSArMDIw MAorKysrIG9wZW5zc2wtMS4xLjAvc3NsL3QxX2xpYi5jCTIwMTYtMDktMDggMTE6MDY6NTguMDcy NTc1Njk3ICswMjAwCitAQCAtMTc3LDM2ICsxNzcsMTIgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgZWNjdXJ2ZXNfYWxsWworICAgICAwLCAyMywgICAgICAgICAgICAgICAgICAgICAgLyog c2VjcDI1NnIxICgyMykgKi8KKyAgICAgMCwgMjUsICAgICAgICAgICAgICAgICAgICAgIC8qIHNl Y3A1MjFyMSAoMjUpICovCisgICAgIDAsIDI0LCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNw Mzg0cjEgKDI0KSAqLworLSAgICAwLCAyNiwgICAgICAgICAgICAgICAgICAgICAgLyogYnJhaW5w b29sUDI1NnIxICgyNikgKi8KKy0gICAgMCwgMjcsICAgICAgICAgICAgICAgICAgICAgIC8qIGJy YWlucG9vbFAzODRyMSAoMjcpICovCistICAgIDAsIDI4LCAgICAgICAgICAgICAgICAgICAgICAv KiBicmFpbnBvb2w1MTJyMSAoMjgpICovCisgCisgICAgIC8qCisgICAgICAqIFJlbWFpbmluZyBj dXJ2ZXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBidXQgc3RpbGwgcGVybWl0dGVkIGlmIHNldAorICAg ICAgKiB2aWEgYW4gZXhwbGljaXQgY2FsbGJhY2sgb3IgcGFyYW1ldGVycy4KKyAgICAgICovCisg ICAgIDAsIDIyLCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwMjU2azEgKDIyKSAqLworLSAg ICAwLCAxNCwgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDU3MXIxICgxNCkgKi8KKy0gICAg MCwgMTMsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3Q1NzFrMSAoMTMpICovCistICAgIDAs IDExLCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWN0NDA5azEgKDExKSAqLworLSAgICAwLCAx MiwgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDQwOXIxICgxMikgKi8KKy0gICAgMCwgOSwg ICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3QyODNrMSAoOSkgKi8KKy0gICAgMCwgMTAsICAg ICAgICAgICAgICAgICAgICAgIC8qIHNlY3QyODNyMSAoMTApICovCistICAgIDAsIDIwLCAgICAg ICAgICAgICAgICAgICAgICAvKiBzZWNwMjI0azEgKDIwKSAqLworLSAgICAwLCAyMSwgICAgICAg ICAgICAgICAgICAgICAgLyogc2VjcDIyNHIxICgyMSkgKi8KKy0gICAgMCwgMTgsICAgICAgICAg ICAgICAgICAgICAgIC8qIHNlY3AxOTJrMSAoMTgpICovCistICAgIDAsIDE5LCAgICAgICAgICAg ICAgICAgICAgICAvKiBzZWNwMTkycjEgKDE5KSAqLworLSAgICAwLCAxNSwgICAgICAgICAgICAg ICAgICAgICAgLyogc2VjcDE2MGsxICgxNSkgKi8KKy0gICAgMCwgMTYsICAgICAgICAgICAgICAg ICAgICAgIC8qIHNlY3AxNjByMSAoMTYpICovCistICAgIDAsIDE3LCAgICAgICAgICAgICAgICAg ICAgICAvKiBzZWNwMTYwcjIgKDE3KSAqLworLSAgICAwLCA4LCAgICAgICAgICAgICAgICAgICAg ICAgLyogc2VjdDIzOWsxICg4KSAqLworLSAgICAwLCA2LCAgICAgICAgICAgICAgICAgICAgICAg Lyogc2VjdDIzM2sxICg2KSAqLworLSAgICAwLCA3LCAgICAgICAgICAgICAgICAgICAgICAgLyog c2VjdDIzM3IxICg3KSAqLworLSAgICAwLCA0LCAgICAgICAgICAgICAgICAgICAgICAgLyogc2Vj dDE5M3IxICg0KSAqLworLSAgICAwLCA1LCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDE5 M3IyICg1KSAqLworLSAgICAwLCAxLCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDE2M2sx ICgxKSAqLworLSAgICAwLCAyLCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDE2M3IxICgy KSAqLworLSAgICAwLCAzLCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDE2M3IyICgzKSAq LworIH07CisgCisgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc3VpdGViX2N1cnZlc1tdID0g ewoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4xLjAtZmlwcy5wYXRjaCBiL29wZW5zc2wtMS4xLjAt Zmlwcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTVlZjg3Ci0t LSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjEuMC1maXBzLnBhdGNoCkBAIC0wLDAgKzEsMTIw ODcgQEAKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjAvYXBwcy9zcGVlZC5jLmZpcHMgb3BlbnNzbC0x LjEuMC9hcHBzL3NwZWVkLmMKKy0tLSBvcGVuc3NsLTEuMS4wL2FwcHMvc3BlZWQuYy5maXBzCTIw MTYtMDktMDggMTE6Mzc6MzguNzI4NDU5NzgzICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC9hcHBz L3NwZWVkLmMJMjAxNi0wOS0wOCAxMTozNzozOC43MzM0NTk4OTUgKzAyMDAKK0BAIC0xNDQzLDcg KzE0NDMsOSBAQCBpbnQgc3BlZWRfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAg ICB9CisgIyBlbmRpZgorICAgICAgICAgaWYgKHN0cmNtcCgqYXJndiwgInJzYSIpID09IDApIHsK Ky0gICAgICAgICAgICByc2FfZG9pdFtSX1JTQV81MTJdID0gcnNhX2RvaXRbUl9SU0FfMTAyNF0g PQorKyAgICAgICAgICAgIGlmICghRklQU19tb2RlKCkpCisrICAgICAgICAgICAgICAgIHJzYV9k b2l0W1JfUlNBXzUxMl0gPSAxOworKyAgICAgICAgICAgIHJzYV9kb2l0W1JfUlNBXzEwMjRdID0K KyAgICAgICAgICAgICAgICAgcnNhX2RvaXRbUl9SU0FfMjA0OF0gPSByc2FfZG9pdFtSX1JTQV8z MDcyXSA9CisgICAgICAgICAgICAgICAgIHJzYV9kb2l0W1JfUlNBXzQwOTZdID0gcnNhX2RvaXRb Ul9SU0FfNzY4MF0gPQorICAgICAgICAgICAgICAgICByc2FfZG9pdFtSX1JTQV8xNTM2MF0gPSAx OworQEAgLTE0NTYsNyArMTQ1OCw5IEBAIGludCBzcGVlZF9tYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKKyAjZW5kaWYKKyAjaWZuZGVmIE9QRU5TU0xfTk9fRFNBCisgICAgICAgICBpZiAoc3Ry Y21wKCphcmd2LCAiZHNhIikgPT0gMCkgeworLSAgICAgICAgICAgIGRzYV9kb2l0W1JfRFNBXzUx Ml0gPSBkc2FfZG9pdFtSX0RTQV8xMDI0XSA9CisrICAgICAgICAgICAgaWYgKCFGSVBTX21vZGUo KSkKKysgICAgICAgICAgICAgICAgZHNhX2RvaXRbUl9EU0FfNTEyXSA9IDE7CisrICAgICAgICAg ICAgZHNhX2RvaXRbUl9EU0FfMTAyNF0gPQorICAgICAgICAgICAgICAgICBkc2FfZG9pdFtSX0RT QV8yMDQ4XSA9IDE7CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9CitAQCAtMTU0 NSwxNSArMTU0OSwyMSBAQCBpbnQgc3BlZWRfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisg ICAgIC8qIE5vIHBhcmFtZXRlcnM7IHR1cm4gb24gZXZlcnl0aGluZy4gKi8KKyAgICAgaWYgKChh cmdjID09IDApICYmICFkb2l0W0RfRVZQXSkgeworICAgICAgICAgZm9yIChpID0gMDsgaSA8IEFM R09SX05VTTsgaSsrKQorLSAgICAgICAgICAgIGlmIChpICE9IERfRVZQKQorKyAgICAgICAgICAg IGlmIChpICE9IERfRVZQICYmCisrICAgICAgICAgICAgICAgICghRklQU19tb2RlKCkgfHwgKGkg IT0gRF9XSElSTFBPT0wgJiYKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAh PSBEX01EMiAmJiBpICE9IERfTUQ0ICYmCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGkgIT0gRF9NRDUgJiYgaSAhPSBEX01EQzIgJiYKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaSAhPSBEX1JNRDE2MCkpKQorICAgICAgICAgICAgICAgICBkb2l0W2ldID0g MTsKKyAjaWZuZGVmIE9QRU5TU0xfTk9fUlNBCisgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUlNB X05VTTsgaSsrKQorLSAgICAgICAgICAgIHJzYV9kb2l0W2ldID0gMTsKKysgICAgICAgICAgICBp ZiAoIUZJUFNfbW9kZSgpIHx8IGkgIT0gUl9SU0FfNTEyKQorKyAgICAgICAgICAgICAgICByc2Ff ZG9pdFtpXSA9IDE7CisgI2VuZGlmCisgI2lmbmRlZiBPUEVOU1NMX05PX0RTQQorICAgICAgICAg Zm9yIChpID0gMDsgaSA8IERTQV9OVU07IGkrKykKKy0gICAgICAgICAgICBkc2FfZG9pdFtpXSA9 IDE7CisrICAgICAgICAgICAgaWYgKCFGSVBTX21vZGUoKSB8fCBpICE9IFJfRFNBXzUxMikKKysg ICAgICAgICAgICAgICAgZHNhX2RvaXRbaV0gPSAxOworICNlbmRpZgorICNpZm5kZWYgT1BFTlNT TF9OT19FQworICAgICAgICAgZm9yIChpID0gMDsgaSA8IEVDX05VTTsgaSsrKQorQEAgLTE2MDIs MzAgKzE2MTIsNDYgQEAgaW50IHNwZWVkX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAg ICBBRVNfc2V0X2VuY3J5cHRfa2V5KGtleTI0LCAxOTIsICZhZXNfa3MyKTsKKyAgICAgQUVTX3Nl dF9lbmNyeXB0X2tleShrZXkzMiwgMjU2LCAmYWVzX2tzMyk7CisgI2lmbmRlZiBPUEVOU1NMX05P X0NBTUVMTElBCistICAgIENhbWVsbGlhX3NldF9rZXkoa2V5MTYsIDEyOCwgJmNhbWVsbGlhX2tz MSk7CistICAgIENhbWVsbGlhX3NldF9rZXkoY2tleTI0LCAxOTIsICZjYW1lbGxpYV9rczIpOwor LSAgICBDYW1lbGxpYV9zZXRfa2V5KGNrZXkzMiwgMjU2LCAmY2FtZWxsaWFfa3MzKTsKKysgICAg aWYgKGRvaXRbRF9DQkNfMTI4X0NNTF0gfHwgZG9pdFtEX0NCQ18xOTJfQ01MXSB8fCBkb2l0W0Rf Q0JDXzI1Nl9DTUxdKSB7CisrICAgICAgICBDYW1lbGxpYV9zZXRfa2V5KGtleTE2LCAxMjgsICZj YW1lbGxpYV9rczEpOworKyAgICAgICAgQ2FtZWxsaWFfc2V0X2tleShja2V5MjQsIDE5MiwgJmNh bWVsbGlhX2tzMik7CisrICAgICAgICBDYW1lbGxpYV9zZXRfa2V5KGNrZXkzMiwgMjU2LCAmY2Ft ZWxsaWFfa3MzKTsKKysgICAgfQorICNlbmRpZgorICNpZm5kZWYgT1BFTlNTTF9OT19JREVBCist ICAgIElERUFfc2V0X2VuY3J5cHRfa2V5KGtleTE2LCAmaWRlYV9rcyk7CisrICAgIGlmIChkb2l0 W0RfQ0JDX0lERUFdKSB7CisrICAgICAgICBJREVBX3NldF9lbmNyeXB0X2tleShrZXkxNiwgJmlk ZWFfa3MpOworKyAgICB9CisgI2VuZGlmCisgI2lmbmRlZiBPUEVOU1NMX05PX1NFRUQKKy0gICAg U0VFRF9zZXRfa2V5KGtleTE2LCAmc2VlZF9rcyk7CisrICAgIGlmIChkb2l0W0RfQ0JDX1NFRURd KSB7CisrICAgICAgICBTRUVEX3NldF9rZXkoa2V5MTYsICZzZWVkX2tzKTsKKysgICAgfQorICNl bmRpZgorICNpZm5kZWYgT1BFTlNTTF9OT19SQzQKKy0gICAgUkM0X3NldF9rZXkoJnJjNF9rcywg MTYsIGtleTE2KTsKKysgICBpZiAoZG9pdFtEX1JDNF0pIHsKKysgICAgICAgIFJDNF9zZXRfa2V5 KCZyYzRfa3MsIDE2LCBrZXkxNik7CisrICAgIH0KKyAjZW5kaWYKKyAjaWZuZGVmIE9QRU5TU0xf Tk9fUkMyCistICAgIFJDMl9zZXRfa2V5KCZyYzJfa3MsIDE2LCBrZXkxNiwgMTI4KTsKKysgICAg aWYgKGRvaXRbRF9DQkNfUkMyXSkgeworKyAgICAgICAgUkMyX3NldF9rZXkoJnJjMl9rcywgMTYs IGtleTE2LCAxMjgpOworKyAgICB9CisgI2VuZGlmCisgI2lmbmRlZiBPUEVOU1NMX05PX1JDNQor LSAgICBSQzVfMzJfc2V0X2tleSgmcmM1X2tzLCAxNiwga2V5MTYsIDEyKTsKKysgICAgaWYgKGRv aXRbRF9DQkNfUkM1XSkgeworKyAgICAgICAgUkM1XzMyX3NldF9rZXkoJnJjNV9rcywgMTYsIGtl eTE2LCAxMik7CisrICAgIH0KKyAjZW5kaWYKKyAjaWZuZGVmIE9QRU5TU0xfTk9fQkYKKy0gICAg QkZfc2V0X2tleSgmYmZfa3MsIDE2LCBrZXkxNik7CisrICAgIGlmIChkb2l0W0RfQ0JDX0JGXSkg eworKyAgICAgICAgQkZfc2V0X2tleSgmYmZfa3MsIDE2LCBrZXkxNik7CisrICAgIH0KKyAjZW5k aWYKKyAjaWZuZGVmIE9QRU5TU0xfTk9fQ0FTVAorLSAgICBDQVNUX3NldF9rZXkoJmNhc3Rfa3Ms IDE2LCBrZXkxNik7CisrICAgIGlmIChkb2l0W0RfQ0JDX0NBU1RdKSB7CisrICAgICAgICBDQVNU X3NldF9rZXkoJmNhc3Rfa3MsIDE2LCBrZXkxNik7CisrICAgIH0KKyAjZW5kaWYKKyAjaWZuZGVm IFNJR0FMUk0KKyAjIGlmbmRlZiBPUEVOU1NMX05PX0RFUworQEAgLTE4ODYsNiArMTkxMiw3IEBA IGludCBzcGVlZF9tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAKKyAgICAgICAgIGZvciAo aSA9IDA7IGkgPCBsb29wYXJnc19sZW47IGkrKykgeworICAgICAgICAgICAgIGxvb3BhcmdzW2ld LmhjdHggPSBITUFDX0NUWF9uZXcoKTsKKysgICAgICAgICAgICBITUFDX0NUWF9zZXRfZmxhZ3Mo bG9vcGFyZ3NbaV0uaGN0eCwgRVZQX01EX0NUWF9GTEFHX05PTl9GSVBTX0FMTE9XKTsKKyAgICAg ICAgICAgICBpZiAobG9vcGFyZ3NbaV0uaGN0eCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAg IEJJT19wcmludGYoYmlvX2VyciwgIkhNQUMgbWFsbG9jIGZhaWx1cmUsIGV4aXRpbmcuLi4iKTsK KyAgICAgICAgICAgICAgICAgZXhpdCgxKTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjAvQ29uZmln dXJlLmZpcHMgb3BlbnNzbC0xLjEuMC9Db25maWd1cmUKKy0tLSBvcGVuc3NsLTEuMS4wL0NvbmZp Z3VyZS5maXBzCTIwMTYtMDgtMjUgMTc6Mjk6MTkuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNz bC0xLjEuMC9Db25maWd1cmUJMjAxNi0wOS0wOCAxMTozNzozOC43MzQ0NTk5MTcgKzAyMDAKK0BA IC0yNTIsNyArMjUyLDcgQEAgJGNvbmZpZ3tzZGlyc30gPSBbCisgICAgICJtZDIiLCAibWQ0Iiwg Im1kNSIsICJzaGEiLCAibWRjMiIsICJobWFjIiwgInJpcGVtZCIsICJ3aHJscG9vbCIsICJwb2x5 MTMwNSIsICJibGFrZTIiLAorICAgICAiZGVzIiwgImFlcyIsICJyYzIiLCAicmM0IiwgInJjNSIs ICJpZGVhIiwgImJmIiwgImNhc3QiLCAiY2FtZWxsaWEiLCAic2VlZCIsICJjaGFjaGEiLCAibW9k ZXMiLAorICAgICAiYm4iLCAiZWMiLCAicnNhIiwgImRzYSIsICJkaCIsICJkc28iLCAiZW5naW5l IiwKKy0gICAgImJ1ZmZlciIsICJiaW8iLCAic3RhY2siLCAibGhhc2giLCAicmFuZCIsICJlcnIi LAorKyAgICAiYnVmZmVyIiwgImJpbyIsICJzdGFjayIsICJsaGFzaCIsICJyYW5kIiwgImVyciIs ICJmaXBzIiwKKyAgICAgImV2cCIsICJhc24xIiwgInBlbSIsICJ4NTA5IiwgIng1MDl2MyIsICJj b25mIiwgInR4dF9kYiIsICJwa2NzNyIsICJwa2NzMTIiLCAiY29tcCIsICJvY3NwIiwgInVpIiwK KyAgICAgImNtcyIsICJ0cyIsICJzcnAiLCAiY21hYyIsICJjdCIsICJhc3luYyIsICJrZGYiCisg ICAgIF07CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9ibi9ibl9yYW5kLmMuZmlwcyBv cGVuc3NsLTEuMS4wL2NyeXB0by9ibi9ibl9yYW5kLmMKKy0tLSBvcGVuc3NsLTEuMS4wL2NyeXB0 by9ibi9ibl9yYW5kLmMuZmlwcwkyMDE2LTA4LTI1IDE3OjI5OjIwLjAwMDAwMDAwMCArMDIwMAor KysrIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2JuL2JuX3JhbmQuYwkyMDE2LTA5LTA4IDExOjM3OjM4 LjczNDQ1OTkxNyArMDIwMAorQEAgLTQwLDkgKzQwLDExIEBAIHN0YXRpYyBpbnQgYm5yYW5kKGlu dCBwc2V1ZG9yYW5kLCBCSUdOVU0KKyAgICAgICAgIGdvdG8gZXJyOworICAgICB9CisgCistICAg IC8qIG1ha2UgYSByYW5kb20gbnVtYmVyIGFuZCBzZXQgdGhlIHRvcCBhbmQgYm90dG9tIGJpdHMg Ki8KKy0gICAgdGltZSgmdGltKTsKKy0gICAgUkFORF9hZGQoJnRpbSwgc2l6ZW9mKHRpbSksIDAu MCk7CisrICAgIGlmICghRklQU19tb2RlKCkpIHsgICAgICAgICAvKiBpbiBGSVBTIG1vZGUgdGhl IFJORyBpcyBhbHdheXMgcHJvcGVybHkgc2VlZGVkIG9yIHRoZSBtb2R1bGUgZmFpbHMgKi8KKysg ICAgICAgIC8qIG1ha2UgYSByYW5kb20gbnVtYmVyIGFuZCBzZXQgdGhlIHRvcCBhbmQgYm90dG9t IGJpdHMgKi8KKysgICAgICAgIHRpbWUoJnRpbSk7CisrICAgICAgICBSQU5EX2FkZCgmdGltLCBz aXplb2YodGltKSwgMC4wKTsKKysgICAgfQorIAorICAgICBpZiAoUkFORF9ieXRlcyhidWYsIGJ5 dGVzKSA8PSAwKQorICAgICAgICAgZ290byBlcnI7CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2Ny eXB0by9kaC9kaF9lcnIuYy5maXBzIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2RoL2RoX2Vyci5jCist LS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vZGgvZGhfZXJyLmMuZmlwcwkyMDE2LTA4LTI1IDE3OjI5 OjIwLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2RoL2RoX2Vyci5j CTIwMTYtMDktMDggMTE6Mzc6MzguNzM0NDU5OTE3ICswMjAwCitAQCAtMjUsNiArMjUsOSBAQCBz dGF0aWMgRVJSX1NUUklOR19EQVRBIERIX3N0cl9mdW5jdHNbXSA9CisgICAgIHtFUlJfRlVOQyhE SF9GX0RIX0NNU19ERUNSWVBUKSwgImRoX2Ntc19kZWNyeXB0In0sCisgICAgIHtFUlJfRlVOQyhE SF9GX0RIX0NNU19TRVRfUEVFUktFWSksICJkaF9jbXNfc2V0X3BlZXJrZXkifSwKKyAgICAge0VS Ul9GVU5DKERIX0ZfREhfQ01TX1NFVF9TSEFSRURfSU5GTyksICJkaF9jbXNfc2V0X3NoYXJlZF9p bmZvIn0sCisrICAgIHtFUlJfRlVOQyhESF9GX0RIX0NPTVBVVEVfS0VZKSwgIkRIX2NvbXB1dGVf a2V5In0sCisrICAgIHtFUlJfRlVOQyhESF9GX0RIX0dFTkVSQVRFX0tFWSksICJESF9nZW5lcmF0 ZV9rZXkifSwKKysgICAge0VSUl9GVU5DKERIX0ZfREhfR0VORVJBVEVfUEFSQU1FVEVSU19FWCks ICJESF9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4In0sCisgICAgIHtFUlJfRlVOQyhESF9GX0RIX01F VEhfRFVQKSwgIkRIX21ldGhfZHVwIn0sCisgICAgIHtFUlJfRlVOQyhESF9GX0RIX01FVEhfTkVX KSwgIkRIX21ldGhfbmV3In0sCisgICAgIHtFUlJfRlVOQyhESF9GX0RIX01FVEhfU0VUMV9OQU1F KSwgIkRIX21ldGhfc2V0MV9uYW1lIn0sCitAQCAtNDksOSArNTIsMTEgQEAgc3RhdGljIEVSUl9T VFJJTkdfREFUQSBESF9zdHJfcmVhc29uc1tdCisgICAgIHtFUlJfUkVBU09OKERIX1JfSU5WQUxJ RF9QVUJLRVkpLCAiaW52YWxpZCBwdWJsaWMga2V5In0sCisgICAgIHtFUlJfUkVBU09OKERIX1Jf S0RGX1BBUkFNRVRFUl9FUlJPUiksICJrZGYgcGFyYW1ldGVyIGVycm9yIn0sCisgICAgIHtFUlJf UkVBU09OKERIX1JfS0VZU19OT1RfU0VUKSwgImtleXMgbm90IHNldCJ9LAorKyAgICB7RVJSX1JF QVNPTihESF9SX0tFWV9TSVpFX1RPT19TTUFMTCksICJrZXkgc2l6ZSB0b28gc21hbGwifSwKKyAg ICAge0VSUl9SRUFTT04oREhfUl9NT0RVTFVTX1RPT19MQVJHRSksICJtb2R1bHVzIHRvbyBsYXJn ZSJ9LAorICAgICB7RVJSX1JFQVNPTihESF9SX05PX1BBUkFNRVRFUlNfU0VUKSwgIm5vIHBhcmFt ZXRlcnMgc2V0In0sCisgICAgIHtFUlJfUkVBU09OKERIX1JfTk9fUFJJVkFURV9WQUxVRSksICJu byBwcml2YXRlIHZhbHVlIn0sCisrICAgIHtFUlJfUkVBU09OKERIX1JfTk9OX0ZJUFNfTUVUSE9E KSwgIm5vbiBGSVBTIG1ldGhvZCJ9LAorICAgICB7RVJSX1JFQVNPTihESF9SX1BBUkFNRVRFUl9F TkNPRElOR19FUlJPUiksICJwYXJhbWV0ZXIgZW5jb2RpbmcgZXJyb3IifSwKKyAgICAge0VSUl9S RUFTT04oREhfUl9QRUVSX0tFWV9FUlJPUiksICJwZWVyIGtleSBlcnJvciJ9LAorICAgICB7RVJS X1JFQVNPTihESF9SX1NIQVJFRF9JTkZPX0VSUk9SKSwgInNoYXJlZCBpbmZvIGVycm9yIn0sCitk aWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9kaC9kaF9nZW4uYy5maXBzIG9wZW5zc2wtMS4x LjAvY3J5cHRvL2RoL2RoX2dlbi5jCistLS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vZGgvZGhfZ2Vu LmMuZmlwcwkyMDE2LTA4LTI1IDE3OjI5OjIwLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wt MS4xLjAvY3J5cHRvL2RoL2RoX2dlbi5jCTIwMTYtMDktMDggMTE6Mzc6MzguNzM0NDU5OTE3ICsw MjAwCitAQCAtMTYsNiArMTYsOSBAQAorICNpbmNsdWRlICJpbnRlcm5hbC9jcnlwdGxpYi5oIgor ICNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+CisgI2luY2x1ZGUgImRoX2xvY2wuaCIKKysjaWZkZWYg T1BFTlNTTF9GSVBTCisrIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysjZW5kaWYKKyAKKyBz dGF0aWMgaW50IGRoX2J1aWx0aW5fZ2VucGFyYW1zKERIICpyZXQsIGludCBwcmltZV9sZW4sIGlu dCBnZW5lcmF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCTl9HRU5DQiAq Y2IpOworQEAgLTIzLDYgKzI2LDEzIEBAIHN0YXRpYyBpbnQgZGhfYnVpbHRpbl9nZW5wYXJhbXMo REggKnJldCwKKyBpbnQgREhfZ2VuZXJhdGVfcGFyYW1ldGVyc19leChESCAqcmV0LCBpbnQgcHJp bWVfbGVuLCBpbnQgZ2VuZXJhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJO X0dFTkNCICpjYikKKyB7CisrI2lmZGVmIE9QRU5TU0xfRklQUworKyAgICBpZiAoRklQU19tb2Rl KCkgJiYgIShyZXQtPm1ldGgtPmZsYWdzICYgREhfRkxBR19GSVBTX01FVEhPRCkKKysgICAgICAg ICYmICEocmV0LT5mbGFncyAmIERIX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpKSB7CisrICAgICAgICBE SGVycihESF9GX0RIX0dFTkVSQVRFX1BBUkFNRVRFUlNfRVgsIERIX1JfTk9OX0ZJUFNfTUVUSE9E KTsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrI2VuZGlmCisgICAgIGlmIChyZXQtPm1l dGgtPmdlbmVyYXRlX3BhcmFtcykKKyAgICAgICAgIHJldHVybiByZXQtPm1ldGgtPmdlbmVyYXRl X3BhcmFtcyhyZXQsIHByaW1lX2xlbiwgZ2VuZXJhdG9yLCBjYik7CisgICAgIHJldHVybiBkaF9i dWlsdGluX2dlbnBhcmFtcyhyZXQsIHByaW1lX2xlbiwgZ2VuZXJhdG9yLCBjYik7CitAQCAtNjIs NiArNzIsMTggQEAgc3RhdGljIGludCBkaF9idWlsdGluX2dlbnBhcmFtcyhESCAqcmV0LAorICAg ICBpbnQgZywgb2sgPSAtMTsKKyAgICAgQk5fQ1RYICpjdHggPSBOVUxMOworIAorKyNpZmRlZiBP UEVOU1NMX0ZJUFMKKysgICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsKKysgICAgICAg IEZJUFNlcnIoRklQU19GX0RIX0JVSUxUSU5fR0VOUEFSQU1TLCBGSVBTX1JfRklQU19TRUxGVEVT VF9GQUlMRUQpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKysgICAgaWYgKEZJUFNf bW9kZSgpICYmIChwcmltZV9sZW4gPCBPUEVOU1NMX0RIX0ZJUFNfTUlOX01PRFVMVVNfQklUU19H RU4pKSB7CisrICAgICAgICBESGVycihESF9GX0RIX0JVSUxUSU5fR0VOUEFSQU1TLCBESF9SX0tF WV9TSVpFX1RPT19TTUFMTCk7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKyNlbmRpZgor KworICAgICBjdHggPSBCTl9DVFhfbmV3KCk7CisgICAgIGlmIChjdHggPT0gTlVMTCkKKyAgICAg ICAgIGdvdG8gZXJyOworZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZGgvZGhfa2V5LmMu ZmlwcyBvcGVuc3NsLTEuMS4wL2NyeXB0by9kaC9kaF9rZXkuYworLS0tIG9wZW5zc2wtMS4xLjAv Y3J5cHRvL2RoL2RoX2tleS5jLmZpcHMJMjAxNi0wOC0yNSAxNzoyOToyMC4wMDAwMDAwMDAgKzAy MDAKKysrKyBvcGVuc3NsLTEuMS4wL2NyeXB0by9kaC9kaF9rZXkuYwkyMDE2LTA5LTA4IDExOjM3 OjM4LjczNDQ1OTkxNyArMDIwMAorQEAgLTExLDYgKzExLDkgQEAKKyAjaW5jbHVkZSAiaW50ZXJu YWwvY3J5cHRsaWIuaCIKKyAjaW5jbHVkZSAiZGhfbG9jbC5oIgorICNpbmNsdWRlICJpbnRlcm5h bC9ibl9pbnQuaCIKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrIyBpbmNsdWRlIDxvcGVuc3NsL2Zp cHMuaD4KKysjZW5kaWYKKyAKKyBzdGF0aWMgaW50IGdlbmVyYXRlX2tleShESCAqZGgpOworIHN0 YXRpYyBpbnQgY29tcHV0ZV9rZXkodW5zaWduZWQgY2hhciAqa2V5LCBjb25zdCBCSUdOVU0gKnB1 Yl9rZXksIERIICpkaCk7CitAQCAtMjIsMTggKzI1LDMyIEBAIHN0YXRpYyBpbnQgZGhfZmluaXNo KERIICpkaCk7CisgCisgaW50IERIX2dlbmVyYXRlX2tleShESCAqZGgpCisgeworKyNpZmRlZiBP UEVOU1NMX0ZJUFMKKysgICAgaWYgKEZJUFNfbW9kZSgpICYmICEoZGgtPm1ldGgtPmZsYWdzICYg REhfRkxBR19GSVBTX01FVEhPRCkKKysgICAgICAgICYmICEoZGgtPmZsYWdzICYgREhfRkxBR19O T05fRklQU19BTExPVykpIHsKKysgICAgICAgIERIZXJyKERIX0ZfREhfR0VORVJBVEVfS0VZLCBE SF9SX05PTl9GSVBTX01FVEhPRCk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyNlbmRp ZgorICAgICByZXR1cm4gZGgtPm1ldGgtPmdlbmVyYXRlX2tleShkaCk7CisgfQorIAorIGludCBE SF9jb21wdXRlX2tleSh1bnNpZ25lZCBjaGFyICprZXksIGNvbnN0IEJJR05VTSAqcHViX2tleSwg REggKmRoKQorIHsKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBTX21vZGUoKSAm JiAhKGRoLT5tZXRoLT5mbGFncyAmIERIX0ZMQUdfRklQU19NRVRIT0QpCisrICAgICAgICAmJiAh KGRoLT5mbGFncyAmIERIX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpKSB7CisrICAgICAgICBESGVycihE SF9GX0RIX0NPTVBVVEVfS0VZLCBESF9SX05PTl9GSVBTX01FVEhPRCk7CisrICAgICAgICByZXR1 cm4gMDsKKysgICAgfQorKyNlbmRpZgorICAgICByZXR1cm4gZGgtPm1ldGgtPmNvbXB1dGVfa2V5 KGtleSwgcHViX2tleSwgZGgpOworIH0KKyAKKyBpbnQgREhfY29tcHV0ZV9rZXlfcGFkZGVkKHVu c2lnbmVkIGNoYXIgKmtleSwgY29uc3QgQklHTlVNICpwdWJfa2V5LCBESCAqZGgpCisgeworICAg ICBpbnQgcnYsIHBhZDsKKy0gICAgcnYgPSBkaC0+bWV0aC0+Y29tcHV0ZV9rZXkoa2V5LCBwdWJf a2V5LCBkaCk7CisrICAgIHJ2ID0gREhfY29tcHV0ZV9rZXkoa2V5LCBwdWJfa2V5LCBkaCk7Cisg ICAgIGlmIChydiA8PSAwKQorICAgICAgICAgcmV0dXJuIHJ2OworICAgICBwYWQgPSBCTl9udW1f Ynl0ZXMoZGgtPnApIC0gcnY7CitAQCAtNzAsNiArODcsMTQgQEAgc3RhdGljIGludCBnZW5lcmF0 ZV9rZXkoREggKmRoKQorICAgICBCTl9NT05UX0NUWCAqbW9udCA9IE5VTEw7CisgICAgIEJJR05V TSAqcHViX2tleSA9IE5VTEwsICpwcml2X2tleSA9IE5VTEw7CisgCisrI2lmZGVmIE9QRU5TU0xf RklQUworKyAgICBpZiAoRklQU19tb2RlKCkKKysgICAgICAgICYmIChCTl9udW1fYml0cyhkaC0+ cCkgPCBPUEVOU1NMX0RIX0ZJUFNfTUlOX01PRFVMVVNfQklUUykpIHsKKysgICAgICAgIERIZXJy KERIX0ZfR0VORVJBVEVfS0VZLCBESF9SX0tFWV9TSVpFX1RPT19TTUFMTCk7CisrICAgICAgICBy ZXR1cm4gMDsKKysgICAgfQorKyNlbmRpZgorKworICAgICBjdHggPSBCTl9DVFhfbmV3KCk7Cisg ICAgIGlmIChjdHggPT0gTlVMTCkKKyAgICAgICAgIGdvdG8gZXJyOworQEAgLTE1Myw2ICsxNzgs MTMgQEAgc3RhdGljIGludCBjb21wdXRlX2tleSh1bnNpZ25lZCBjaGFyICprZQorICAgICAgICAg REhlcnIoREhfRl9DT01QVVRFX0tFWSwgREhfUl9NT0RVTFVTX1RPT19MQVJHRSk7CisgICAgICAg ICBnb3RvIGVycjsKKyAgICAgfQorKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgaWYgKEZJUFNf bW9kZSgpCisrICAgICAgICAmJiAoQk5fbnVtX2JpdHMoZGgtPnApIDwgT1BFTlNTTF9ESF9GSVBT X01JTl9NT0RVTFVTX0JJVFMpKSB7CisrICAgICAgICBESGVycihESF9GX0NPTVBVVEVfS0VZLCBE SF9SX0tFWV9TSVpFX1RPT19TTUFMTCk7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKyNl bmRpZgorIAorICAgICBjdHggPSBCTl9DVFhfbmV3KCk7CisgICAgIGlmIChjdHggPT0gTlVMTCkK K0BAIC0yMDIsNiArMjM0LDkgQEAgc3RhdGljIGludCBkaF9ibl9tb2RfZXhwKGNvbnN0IERIICpk aCwgQgorIAorIHN0YXRpYyBpbnQgZGhfaW5pdChESCAqZGgpCisgeworKyNpZmRlZiBPUEVOU1NM X0ZJUFMKKysgICAgRklQU19zZWxmdGVzdF9jaGVjaygpOworKyNlbmRpZgorICAgICBkaC0+Zmxh Z3MgfD0gREhfRkxBR19DQUNIRV9NT05UX1A7CisgICAgIHJldHVybiAoMSk7CisgfQorZGlmZiAt dXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZHNhL2RzYV9lcnIuYy5maXBzIG9wZW5zc2wtMS4xLjAv Y3J5cHRvL2RzYS9kc2FfZXJyLmMKKy0tLSBvcGVuc3NsLTEuMS4wL2NyeXB0by9kc2EvZHNhX2Vy ci5jLmZpcHMJMjAxNi0wOC0yNSAxNzoyOToyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3Ns LTEuMS4wL2NyeXB0by9kc2EvZHNhX2Vyci5jCTIwMTYtMDktMDggMTE6Mzc6MzguNzM0NDU5OTE3 ICswMjAwCitAQCAtMjEsMTAgKzIxLDEzIEBACisgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBEU0Ff c3RyX2Z1bmN0c1tdID0geworICAgICB7RVJSX0ZVTkMoRFNBX0ZfRFNBUEFSQU1TX1BSSU5UKSwg IkRTQXBhcmFtc19wcmludCJ9LAorICAgICB7RVJSX0ZVTkMoRFNBX0ZfRFNBUEFSQU1TX1BSSU5U X0ZQKSwgIkRTQXBhcmFtc19wcmludF9mcCJ9LAorLSAgICB7RVJSX0ZVTkMoRFNBX0ZfRFNBX0JV SUxUSU5fUEFSQU1HRU4pLCAiRFNBX0JVSUxUSU5fUEFSQU1HRU4ifSwKKysgICAge0VSUl9GVU5D KERTQV9GX0RTQV9CVUlMVElOX0tFWUdFTiksICJkc2FfYnVpbHRpbl9rZXlnZW4ifSwKKysgICAg e0VSUl9GVU5DKERTQV9GX0RTQV9CVUlMVElOX1BBUkFNR0VOKSwgImRzYV9idWlsdGluX3BhcmFt Z2VuIn0sCisgICAgIHtFUlJfRlVOQyhEU0FfRl9EU0FfQlVJTFRJTl9QQVJBTUdFTjIpLCAiZHNh X2J1aWx0aW5fcGFyYW1nZW4yIn0sCisgICAgIHtFUlJfRlVOQyhEU0FfRl9EU0FfRE9fU0lHTiks ICJEU0FfZG9fc2lnbiJ9LAorICAgICB7RVJSX0ZVTkMoRFNBX0ZfRFNBX0RPX1ZFUklGWSksICJE U0FfZG9fdmVyaWZ5In0sCisrICAgIHtFUlJfRlVOQyhEU0FfRl9EU0FfR0VORVJBVEVfS0VZKSwg IkRTQV9nZW5lcmF0ZV9rZXkifSwKKysgICAge0VSUl9GVU5DKERTQV9GX0RTQV9HRU5FUkFURV9Q QVJBTUVURVJTX0VYKSwgIkRTQV9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4In0sCisgICAgIHtFUlJf RlVOQyhEU0FfRl9EU0FfTUVUSF9EVVApLCAiRFNBX21ldGhfZHVwIn0sCisgICAgIHtFUlJfRlVO QyhEU0FfRl9EU0FfTUVUSF9ORVcpLCAiRFNBX21ldGhfbmV3In0sCisgICAgIHtFUlJfRlVOQyhE U0FfRl9EU0FfTUVUSF9TRVQxX05BTUUpLCAiRFNBX21ldGhfc2V0MV9uYW1lIn0sCitAQCAtNTEs OSArNTQsMTIgQEAgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBEU0Ffc3RyX3JlYXNvbnNbXQorICAg ICB7RVJSX1JFQVNPTihEU0FfUl9ERUNPREVfRVJST1IpLCAiZGVjb2RlIGVycm9yIn0sCisgICAg IHtFUlJfUkVBU09OKERTQV9SX0lOVkFMSURfRElHRVNUX1RZUEUpLCAiaW52YWxpZCBkaWdlc3Qg dHlwZSJ9LAorICAgICB7RVJSX1JFQVNPTihEU0FfUl9JTlZBTElEX1BBUkFNRVRFUlMpLCAiaW52 YWxpZCBwYXJhbWV0ZXJzIn0sCisrICAgIHtFUlJfUkVBU09OKERTQV9SX0tFWV9TSVpFX0lOVkFM SUQpLCAia2V5IHNpemUgaW52YWxpZCJ9LAorKyAgICB7RVJSX1JFQVNPTihEU0FfUl9LRVlfU0la RV9UT09fU01BTEwpLCAia2V5IHNpemUgdG9vIHNtYWxsIn0sCisgICAgIHtFUlJfUkVBU09OKERT QV9SX01JU1NJTkdfUEFSQU1FVEVSUyksICJtaXNzaW5nIHBhcmFtZXRlcnMifSwKKyAgICAge0VS Ul9SRUFTT04oRFNBX1JfTU9EVUxVU19UT09fTEFSR0UpLCAibW9kdWx1cyB0b28gbGFyZ2UifSwK KyAgICAge0VSUl9SRUFTT04oRFNBX1JfTk9fUEFSQU1FVEVSU19TRVQpLCAibm8gcGFyYW1ldGVy cyBzZXQifSwKKysgICAge0VSUl9SRUFTT04oRFNBX1JfTk9OX0ZJUFNfRFNBX01FVEhPRCksICJu b24gRklQUyBEU0EgbWV0aG9kIn0sCisgICAgIHtFUlJfUkVBU09OKERTQV9SX1BBUkFNRVRFUl9F TkNPRElOR19FUlJPUiksICJwYXJhbWV0ZXIgZW5jb2RpbmcgZXJyb3IifSwKKyAgICAge0VSUl9S RUFTT04oRFNBX1JfUV9OT1RfUFJJTUUpLCAicSBub3QgcHJpbWUifSwKKyAgICAgezAsIE5VTEx9 CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9kc2EvZHNhX2dlbi5jLmZpcHMgb3BlbnNz bC0xLjEuMC9jcnlwdG8vZHNhL2RzYV9nZW4uYworLS0tIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2Rz YS9kc2FfZ2VuLmMuZmlwcwkyMDE2LTA4LTI1IDE3OjI5OjIwLjAwMDAwMDAwMCArMDIwMAorKysr IG9wZW5zc2wtMS4xLjAvY3J5cHRvL2RzYS9kc2FfZ2VuLmMJMjAxNi0wOS0wOCAxMTozNzozOC43 MzQ0NTk5MTcgKzAyMDAKK0BAIC0yMiwxMiArMjIsMjIgQEAKKyAjaW5jbHVkZSA8b3BlbnNzbC9y YW5kLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvc2hhLmg+CisgI2luY2x1ZGUgImRzYV9sb2NsLmgi CisrI2lmZGVmIE9QRU5TU0xfRklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2Vu ZGlmCisgCisgaW50IERTQV9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4KERTQSAqcmV0LCBpbnQgYml0 cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAq c2VlZF9pbiwgaW50IHNlZWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgKmNvdW50ZXJfcmV0LCB1bnNpZ25lZCBsb25nICpoX3JldCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQk5fR0VOQ0IgKmNiKQorIHsKKysjIGlmZGVmIE9QRU5TU0xfRklQUwor KyAgICBpZiAoRklQU19tb2RlKCkgJiYgIShyZXQtPm1ldGgtPmZsYWdzICYgRFNBX0ZMQUdfRklQ U19NRVRIT0QpCisrICAgICAgICAmJiAhKHJldC0+ZmxhZ3MgJiBEU0FfRkxBR19OT05fRklQU19B TExPVykpIHsKKysgICAgICAgIERTQWVycihEU0FfRl9EU0FfR0VORVJBVEVfUEFSQU1FVEVSU19F WCwgRFNBX1JfTk9OX0ZJUFNfRFNBX01FVEhPRCk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAg fQorKyMgZW5kaWYKKyAgICAgaWYgKHJldC0+bWV0aC0+ZHNhX3BhcmFtZ2VuKQorICAgICAgICAg cmV0dXJuIHJldC0+bWV0aC0+ZHNhX3BhcmFtZ2VuKHJldCwgYml0cywgc2VlZF9pbiwgc2VlZF9s ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9yZXQs IGhfcmV0LCBjYik7CitAQCAtMzUsMTEgKzQ1LDMwIEBAIGludCBEU0FfZ2VuZXJhdGVfcGFyYW1l dGVyc19leChEU0EgKnJldCwKKyAgICAgICAgIGNvbnN0IEVWUF9NRCAqZXZwbWQgPSBiaXRzID49 IDIwNDggPyBFVlBfc2hhMjU2KCkgOiBFVlBfc2hhMSgpOworICAgICAgICAgc2l6ZV90IHFiaXRz ID0gRVZQX01EX3NpemUoZXZwbWQpICogODsKKyAKKysjIGlmZGVmIE9QRU5TU0xfRklQUworKyAg ICAgICAgcmV0dXJuIGRzYV9idWlsdGluX3BhcmFtZ2VuMihyZXQsIGJpdHMsIHFiaXRzLCBldnBt ZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZWRfaW4sIHNlZWRfbGVuLCAtMSwgTlVM TCwgY291bnRlcl9yZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBoX3JldCwgY2IpOwor KyMgZWxzZQorICAgICAgICAgcmV0dXJuIGRzYV9idWlsdGluX3BhcmFtZ2VuKHJldCwgYml0cywg cWJpdHMsIGV2cG1kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZWRf aW4sIHNlZWRfbGVuLCBOVUxMLCBjb3VudGVyX3JldCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBoX3JldCwgY2IpOworKyMgZW5kaWYKKyAgICAgfQorIH0KKysjIGlmZGVm IE9QRU5TU0xfRklQUworK2ludCBGSVBTX2RzYV9idWlsdGluX3BhcmFtZ2VuKERTQSAqcmV0LCBz aXplX3QgYml0cywgc2l6ZV90IHFiaXRzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IEVWUF9NRCAqZXZwbWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgdW5zaWduZWQgY2hhciAqc2VlZF9pbiwgc2l6ZV90IHNlZWRfbGVuLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCAqY291bnRlcl9yZXQsIHVuc2lnbmVkIGxvbmcgKmhfcmV0 LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJOX0dFTkNCICpjYikKKyt7CisrICAg IHJldHVybiBkc2FfYnVpbHRpbl9wYXJhbWdlbjIocmV0LCBiaXRzLCBxYml0cywKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBldnBtZCwgc2VlZF9pbiwgc2VlZF9sZW4sCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIE5VTEwsIGNvdW50ZXJfcmV0LCBoX3Jl dCwgY2IpOworK30KKysjIGVuZGlmCisrCisgCisgaW50IGRzYV9idWlsdGluX3BhcmFtZ2VuKERT QSAqcmV0LCBzaXplX3QgYml0cywgc2l6ZV90IHFiaXRzLAorICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBFVlBfTUQgKmV2cG1kLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzZWVkX2luLAor QEAgLTMxNSw2ICszNDQsMjAgQEAgaW50IGRzYV9idWlsdGluX3BhcmFtZ2VuMihEU0EgKnJldCwg c2l6ZQorICAgICBpZiAobWN0eCA9PSBOVUxMKQorICAgICAgICAgZ290byBlcnI7CisgCisrIyBp ZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsKKysg ICAgICAgIEZJUFNlcnIoRklQU19GX0RTQV9CVUlMVElOX1BBUkFNR0VOMiwgRklQU19SX0ZJUFNf U0VMRlRFU1RfRkFJTEVEKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIGlm IChGSVBTX21vZGUoKSAmJiAoTCAhPSAxMDI0IHx8IE4gIT0gMTYwKSAmJgorKyAgICAgICAgKEwg IT0gMjA0OCB8fCBOICE9IDIyNCkgJiYgKEwgIT0gMjA0OCB8fCBOICE9IDI1NikgJiYKKysgICAg ICAgIChMICE9IDMwNzIgfHwgTiAhPSAyNTYpKSB7CisrICAgICAgICBEU0FlcnIoRFNBX0ZfRFNB X0JVSUxUSU5fUEFSQU1HRU4yLCBEU0FfUl9LRVlfU0laRV9JTlZBTElEKTsKKysgICAgICAgIGdv dG8gZXJyOworKyAgICB9CisrIyBlbmRpZgorKworICAgICBpZiAoZXZwbWQgPT0gTlVMTCkgewor ICAgICAgICAgaWYgKE4gPT0gMTYwKQorICAgICAgICAgICAgIGV2cG1kID0gRVZQX3NoYTEoKTsK K2RpZmYgLXVwIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2RzYS9kc2Ffa2V5LmMuZmlwcyBvcGVuc3Ns LTEuMS4wL2NyeXB0by9kc2EvZHNhX2tleS5jCistLS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vZHNh L2RzYV9rZXkuYy5maXBzCTIwMTYtMDgtMjUgMTc6Mjk6MjAuMDAwMDAwMDAwICswMjAwCisrKysg b3BlbnNzbC0xLjEuMC9jcnlwdG8vZHNhL2RzYV9rZXkuYwkyMDE2LTA5LTA4IDExOjM3OjM4Ljcz NTQ1OTk0MCArMDIwMAorQEAgLTEzLDEwICsxMyw0OSBAQAorICNpbmNsdWRlIDxvcGVuc3NsL2Ju Lmg+CisgI2luY2x1ZGUgImRzYV9sb2NsLmgiCisgCisrI2lmZGVmIE9QRU5TU0xfRklQUworKyMg aW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrIyBpbmNsdWRlICJpbnRlcm5hbC9maXBzX2ludC5o IgorKworK3N0YXRpYyBpbnQgZmlwc19jaGVja19kc2EoRFNBICpkc2EpCisreworKyAgICBFVlBf UEtFWSAqcGs7CisrICAgIHVuc2lnbmVkIGNoYXIgdGJzW10gPSAiRFNBIFBhaXJ3aXNlIENoZWNr IERhdGEiOworKyAgICBpbnQgcmV0ID0gMDsKKysKKysgICAgaWYgKChwayA9IEVWUF9QS0VZX25l dygpKSA9PSBOVUxMKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIEVWUF9QS0VZX3NldDFf RFNBKHBrLCBkc2EpOworKworKyAgICBpZiAoZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCB0 YnMsIC0xLCBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMKSkKKysgICAgICAgIHJldCA9IDE7CisrCisr IGVycjoKKysgICAgaWYgKHJldCA9PSAwKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBT X0NIRUNLX0RTQSwgRklQU19SX1BBSVJXSVNFX1RFU1RfRkFJTEVEKTsKKysgICAgICAgIGZpcHNf c2V0X3NlbGZ0ZXN0X2ZhaWwoKTsKKysgICAgfQorKworKyAgICBpZiAocGspCisrICAgICAgICBF VlBfUEtFWV9mcmVlKHBrKTsKKysKKysgICAgcmV0dXJuIHJldDsKKyt9CisrCisrI2VuZGlmCisr Cisgc3RhdGljIGludCBkc2FfYnVpbHRpbl9rZXlnZW4oRFNBICpkc2EpOworIAorIGludCBEU0Ff Z2VuZXJhdGVfa2V5KERTQSAqZHNhKQorIHsKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlm IChGSVBTX21vZGUoKSAmJiAhKGRzYS0+bWV0aC0+ZmxhZ3MgJiBEU0FfRkxBR19GSVBTX01FVEhP RCkKKysgICAgICAgICYmICEoZHNhLT5mbGFncyAmIERTQV9GTEFHX05PTl9GSVBTX0FMTE9XKSkg eworKyAgICAgICAgRFNBZXJyKERTQV9GX0RTQV9HRU5FUkFURV9LRVksIERTQV9SX05PTl9GSVBT X0RTQV9NRVRIT0QpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysjZW5kaWYKKyAgICAg aWYgKGRzYS0+bWV0aC0+ZHNhX2tleWdlbikKKyAgICAgICAgIHJldHVybiBkc2EtPm1ldGgtPmRz YV9rZXlnZW4oZHNhKTsKKyAgICAgcmV0dXJuIGRzYV9idWlsdGluX2tleWdlbihkc2EpOworQEAg LTI4LDYgKzY3LDE0IEBAIHN0YXRpYyBpbnQgZHNhX2J1aWx0aW5fa2V5Z2VuKERTQSAqZHNhKQor ICAgICBCTl9DVFggKmN0eCA9IE5VTEw7CisgICAgIEJJR05VTSAqcHViX2tleSA9IE5VTEwsICpw cml2X2tleSA9IE5VTEw7CisgCisrI2lmZGVmIE9QRU5TU0xfRklQUworKyAgICBpZiAoRklQU19t b2RlKCkgJiYgIShkc2EtPmZsYWdzICYgRFNBX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpCisrICAgICAg ICAmJiAoQk5fbnVtX2JpdHMoZHNhLT5wKSA8IE9QRU5TU0xfRFNBX0ZJUFNfTUlOX01PRFVMVVNf QklUU19HRU4pKSB7CisrICAgICAgICBEU0FlcnIoRFNBX0ZfRFNBX0JVSUxUSU5fS0VZR0VOLCBE U0FfUl9LRVlfU0laRV9UT09fU01BTEwpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysj ZW5kaWYKKysKKyAgICAgaWYgKChjdHggPSBCTl9DVFhfbmV3KCkpID09IE5VTEwpCisgICAgICAg ICBnb3RvIGVycjsKKyAKK0BAIC02NSw2ICsxMTIsMTMgQEAgc3RhdGljIGludCBkc2FfYnVpbHRp bl9rZXlnZW4oRFNBICpkc2EpCisgCisgICAgIGRzYS0+cHJpdl9rZXkgPSBwcml2X2tleTsKKyAg ICAgZHNhLT5wdWJfa2V5ID0gcHViX2tleTsKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlm IChGSVBTX21vZGUoKSAmJiAhZmlwc19jaGVja19kc2EoZHNhKSkgeworKyAgICAgICAgZHNhLT5w dWJfa2V5ID0gTlVMTDsKKysgICAgICAgIGRzYS0+cHJpdl9rZXkgPSBOVUxMOworKyAgICAgICAg Z290byBlcnI7CisrICAgIH0KKysjZW5kaWYKKyAgICAgb2sgPSAxOworIAorICBlcnI6CitkaWZm IC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9kc2EvZHNhX29zc2wuYy5maXBzIG9wZW5zc2wtMS4x LjAvY3J5cHRvL2RzYS9kc2Ffb3NzbC5jCistLS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vZHNhL2Rz YV9vc3NsLmMuZmlwcwkyMDE2LTA4LTI1IDE3OjI5OjIwLjAwMDAwMDAwMCArMDIwMAorKysrIG9w ZW5zc2wtMS4xLjAvY3J5cHRvL2RzYS9kc2Ffb3NzbC5jCTIwMTYtMDktMDggMTE6Mzc6MzguNzM1 NDU5OTQwICswMjAwCitAQCAtMTUsNiArMTUsOSBAQAorICNpbmNsdWRlIDxvcGVuc3NsL3NoYS5o PgorICNpbmNsdWRlICJkc2FfbG9jbC5oIgorICNpbmNsdWRlIDxvcGVuc3NsL2FzbjEuaD4KKysj aWZkZWYgT1BFTlNTTF9GSVBTCisrIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysjZW5kaWYK KyAKKyBzdGF0aWMgRFNBX1NJRyAqZHNhX2RvX3NpZ24oY29uc3QgdW5zaWduZWQgY2hhciAqZGdz dCwgaW50IGRsZW4sIERTQSAqZHNhKTsKKyBzdGF0aWMgaW50IGRzYV9zaWduX3NldHVwX25vX2Rp Z2VzdChEU0EgKmRzYSwgQk5fQ1RYICpjdHhfaW4sIEJJR05VTSAqKmtpbnZwLAorQEAgLTU2LDYg KzU5LDE5IEBAIHN0YXRpYyBEU0FfU0lHICpkc2FfZG9fc2lnbihjb25zdCB1bnNpZ24KKyAgICAg RFNBX1NJRyAqcmV0ID0gTlVMTDsKKyAgICAgaW50IHJ2ID0gMDsKKyAKKysjaWZkZWYgT1BFTlNT TF9GSVBTCisrICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7CisrICAgICAgICBGSVBT ZXJyKEZJUFNfRl9EU0FfRE9fU0lHTiwgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEKTsKKysg ICAgICAgIHJldHVybiBOVUxMOworKyAgICB9CisrCisrICAgIGlmIChGSVBTX21vZGUoKSAmJiAh KGRzYS0+ZmxhZ3MgJiBEU0FfRkxBR19OT05fRklQU19BTExPVykKKysgICAgICAgICYmIChCTl9u dW1fYml0cyhkc2EtPnApIDwgT1BFTlNTTF9EU0FfRklQU19NSU5fTU9EVUxVU19CSVRTKSkgewor KyAgICAgICAgRFNBZXJyKERTQV9GX0RTQV9ET19TSUdOLCBEU0FfUl9LRVlfU0laRV9UT09fU01B TEwpOworKyAgICAgICAgcmV0dXJuIE5VTEw7CisrICAgIH0KKysjZW5kaWYKKysKKyAgICAgbSA9 IEJOX25ldygpOworICAgICB4ciA9IEJOX25ldygpOworICAgICBpZiAobSA9PSBOVUxMIHx8IHhy ID09IE5VTEwpCitAQCAtMjM5LDYgKzI1NSwxOCBAQCBzdGF0aWMgaW50IGRzYV9kb192ZXJpZnko Y29uc3QgdW5zaWduZWQKKyAgICAgICAgIERTQWVycihEU0FfRl9EU0FfRE9fVkVSSUZZLCBEU0Ff Ul9CQURfUV9WQUxVRSk7CisgICAgICAgICByZXR1cm4gLTE7CisgICAgIH0KKysjaWZkZWYgT1BF TlNTTF9GSVBTCisrICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7CisrICAgICAgICBG SVBTZXJyKEZJUFNfRl9EU0FfRE9fVkVSSUZZLCBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQp OworKyAgICAgICAgcmV0dXJuIC0xOworKyAgICB9CisrCisrICAgIGlmIChGSVBTX21vZGUoKSAm JiAhKGRzYS0+ZmxhZ3MgJiBEU0FfRkxBR19OT05fRklQU19BTExPVykKKysgICAgICAgICYmIChC Tl9udW1fYml0cyhkc2EtPnApIDwgT1BFTlNTTF9EU0FfRklQU19NSU5fTU9EVUxVU19CSVRTKSkg eworKyAgICAgICAgRFNBZXJyKERTQV9GX0RTQV9ET19WRVJJRlksIERTQV9SX0tFWV9TSVpFX1RP T19TTUFMTCk7CisrICAgICAgICByZXR1cm4gLTE7CisrICAgIH0KKysjZW5kaWYKKyAKKyAgICAg aWYgKEJOX251bV9iaXRzKGRzYS0+cCkgPiBPUEVOU1NMX0RTQV9NQVhfTU9EVUxVU19CSVRTKSB7 CisgICAgICAgICBEU0FlcnIoRFNBX0ZfRFNBX0RPX1ZFUklGWSwgRFNBX1JfTU9EVUxVU19UT09f TEFSR0UpOworQEAgLTMyNyw2ICszNTUsOSBAQCBzdGF0aWMgaW50IGRzYV9kb192ZXJpZnkoY29u c3QgdW5zaWduZWQKKyAKKyBzdGF0aWMgaW50IGRzYV9pbml0KERTQSAqZHNhKQorIHsKKysjaWZk ZWYgT1BFTlNTTF9GSVBTCisrICAgIEZJUFNfc2VsZnRlc3RfY2hlY2soKTsKKysjZW5kaWYKKyAg ICAgZHNhLT5mbGFncyB8PSBEU0FfRkxBR19DQUNIRV9NT05UX1A7CisgICAgIHJldHVybiAoMSk7 CisgfQorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZHNhL2RzYV9wbWV0aC5jLmZpcHMg b3BlbnNzbC0xLjEuMC9jcnlwdG8vZHNhL2RzYV9wbWV0aC5jCistLS0gb3BlbnNzbC0xLjEuMC9j cnlwdG8vZHNhL2RzYV9wbWV0aC5jLmZpcHMJMjAxNi0wOC0yNSAxNzoyOToyMC4wMDAwMDAwMDAg KzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wL2NyeXB0by9kc2EvZHNhX3BtZXRoLmMJMjAxNi0wOS0w OCAxMTozNzozOC43MzU0NTk5NDAgKzAyMDAKK0BAIC0yMTIsOCArMjEyLDggQEAgc3RhdGljIGlu dCBwa2V5X2RzYV9wYXJhbWdlbihFVlBfUEtFWV9DVAorICAgICAgICAgQk5fR0VOQ0JfZnJlZShw Y2IpOworICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKy0gICAgcmV0ID0gZHNhX2J1aWx0aW5f cGFyYW1nZW4oZHNhLCBkY3R4LT5uYml0cywgZGN0eC0+cWJpdHMsIGRjdHgtPnBtZCwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgTlVMTCwgTlVMTCwgTlVMTCwgcGNi KTsKKysgICAgcmV0ID0gZHNhX2J1aWx0aW5fcGFyYW1nZW4yKGRzYSwgZGN0eC0+bmJpdHMsIGRj dHgtPnFiaXRzLCBkY3R4LT5wbWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V TEwsIDAsIC0xLCBOVUxMLCBOVUxMLCBOVUxMLCBwY2IpOworICAgICBCTl9HRU5DQl9mcmVlKHBj Yik7CisgICAgIGlmIChyZXQpCisgICAgICAgICBFVlBfUEtFWV9hc3NpZ25fRFNBKHBrZXksIGRz YSk7CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9lYy9lY2RoX29zc2wuYy5maXBzIG9w ZW5zc2wtMS4xLjAvY3J5cHRvL2VjL2VjZGhfb3NzbC5jCistLS0gb3BlbnNzbC0xLjEuMC9jcnlw dG8vZWMvZWNkaF9vc3NsLmMuZmlwcwkyMDE2LTA4LTI1IDE3OjI5OjIwLjAwMDAwMDAwMCArMDIw MAorKysrIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2VjL2VjZGhfb3NzbC5jCTIwMTYtMDktMDggMTE6 Mzc6MzguNzM1NDU5OTQwICswMjAwCitAQCAtMzMsOSArMzMsMjAgQEAKKyAjaW5jbHVkZSA8b3Bl bnNzbC9lYy5oPgorICNpbmNsdWRlICJlY19sY2wuaCIKKyAKKysjaWZkZWYgT1BFTlNTTF9GSVBT CisrIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysjZW5kaWYKKysKKyBpbnQgb3NzbF9lY2Ro X2NvbXB1dGVfa2V5KHVuc2lnbmVkIGNoYXIgKipwc2VjLCBzaXplX3QgKnBzZWNsZW4sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFQ19QT0lOVCAqcHViX2tleSwgY29uc3QgRUNf S0VZICplY2RoKQorIHsKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBTX3NlbGZ0 ZXN0X2ZhaWxlZCgpKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9FQ0RIX0NPTVBVVEVfS0VZ LCBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOworKyAgICAgICAgcmV0dXJuIC0xOworKyAg ICB9CisrI2VuZGlmCisrCisgICAgIGlmIChlY2RoLT5ncm91cC0+bWV0aC0+ZWNkaF9jb21wdXRl X2tleSA9PSBOVUxMKSB7CisgICAgICAgICBFQ2VycihFQ19GX09TU0xfRUNESF9DT01QVVRFX0tF WSwgRUNfUl9DVVJWRV9ET0VTX05PVF9TVVBQT1JUX0VDREgpOworICAgICAgICAgcmV0dXJuIDA7 CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9lYy9lY2RzYV9vc3NsLmMuZmlwcyBvcGVu c3NsLTEuMS4wL2NyeXB0by9lYy9lY2RzYV9vc3NsLmMKKy0tLSBvcGVuc3NsLTEuMS4wL2NyeXB0 by9lYy9lY2RzYV9vc3NsLmMuZmlwcwkyMDE2LTA4LTI1IDE3OjI5OjIwLjAwMDAwMDAwMCArMDIw MAorKysrIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2VjL2VjZHNhX29zc2wuYwkyMDE2LTA5LTA4IDEx OjM3OjM4LjczNTQ1OTk0MCArMDIwMAorQEAgLTE1LDYgKzE1LDEwIEBACisgI2luY2x1ZGUgPG9w ZW5zc2wvZWMuaD4KKyAjaW5jbHVkZSAiZWNfbGNsLmgiCisgCisrI2lmZGVmIE9QRU5TU0xfRklQ UworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2VuZGlmCisrCisgaW50IG9zc2xfZWNk c2Ffc2lnbihpbnQgdHlwZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGdzdCwgaW50IGRsZW4sCisg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzaWcsIHVuc2lnbmVkIGludCAqc2ln bGVuLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgQklHTlVNICpraW52LCBjb25zdCBCSUdO VU0gKnIsIEVDX0tFWSAqZWNrZXkpCitAQCAtMjAzLDYgKzIwNywxMyBAQCBFQ0RTQV9TSUcgKm9z c2xfZWNkc2Ffc2lnbl9zaWcoY29uc3QgdW5zCisgICAgIEVDRFNBX1NJRyAqcmV0OworICAgICBj b25zdCBCSUdOVU0gKnByaXZfa2V5OworIAorKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgaWYg KEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX09TU0xf RUNEU0FfU0lHTl9TSUcsIEZJUFNfUl9GSVBTX1NFTEZURVNUX0ZBSUxFRCk7CisrICAgICAgICBy ZXR1cm4gTlVMTDsKKysgICAgfQorKyNlbmRpZgorKworICAgICBncm91cCA9IEVDX0tFWV9nZXQw X2dyb3VwKGVja2V5KTsKKyAgICAgcHJpdl9rZXkgPSBFQ19LRVlfZ2V0MF9wcml2YXRlX2tleShl Y2tleSk7CisgCitAQCAtMzUyLDYgKzM2MywxMyBAQCBpbnQgb3NzbF9lY2RzYV92ZXJpZnlfc2ln KGNvbnN0IHVuc2lnbmVkCisgICAgIGNvbnN0IEVDX0dST1VQICpncm91cDsKKyAgICAgY29uc3Qg RUNfUE9JTlQgKnB1Yl9rZXk7CisgCisrI2lmZGVmIE9QRU5TU0xfRklQUworKyAgICBpZiAoRklQ U19zZWxmdGVzdF9mYWlsZWQoKSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfT1NTTF9FQ0RT QV9WRVJJRllfU0lHLCBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOworKyAgICAgICAgcmV0 dXJuIE5VTEw7CisrICAgIH0KKysjZW5kaWYKKysKKyAgICAgLyogY2hlY2sgaW5wdXQgdmFsdWVz ICovCisgICAgIGlmIChlY2tleSA9PSBOVUxMIHx8IChncm91cCA9IEVDX0tFWV9nZXQwX2dyb3Vw KGVja2V5KSkgPT0gTlVMTCB8fAorICAgICAgICAgKHB1Yl9rZXkgPSBFQ19LRVlfZ2V0MF9wdWJs aWNfa2V5KGVja2V5KSkgPT0gTlVMTCB8fCBzaWcgPT0gTlVMTCkgeworZGlmZiAtdXAgb3BlbnNz bC0xLjEuMC9jcnlwdG8vZWMvZWNfa2V5LmMuZmlwcyBvcGVuc3NsLTEuMS4wL2NyeXB0by9lYy9l Y19rZXkuYworLS0tIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2VjL2VjX2tleS5jLmZpcHMJMjAxNi0w OC0yNSAxNzoyOToyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wL2NyeXB0by9l Yy9lY19rZXkuYwkyMDE2LTA5LTA4IDExOjM3OjM4LjczNTQ1OTk0MCArMDIwMAorQEAgLTE3Nywx NCArMTc3LDYxIEBAIGludCBFQ19LRVlfdXBfcmVmKEVDX0tFWSAqcikKKyAgICAgcmV0dXJuICgo aSA+IDEpID8gMSA6IDApOworIH0KKyAKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrCisrIyBpbmNs dWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysjIGluY2x1ZGUgImludGVybmFsL2ZpcHNfaW50LmgiCisr Cisrc3RhdGljIGludCBmaXBzX2NoZWNrX2VjKEVDX0tFWSAqa2V5KQorK3sKKysgICAgRVZQX1BL RVkgKnBrOworKyAgICB1bnNpZ25lZCBjaGFyIHRic1tdID0gIkVDRFNBIFBhaXJ3aXNlIENoZWNr IERhdGEiOworKyAgICBpbnQgcmV0ID0gMDsKKysKKysgICAgaWYgKCFFQ19LRVlfY2FuX3NpZ24o a2V5KSkgLyogbm8gdGVzdCBmb3Igbm9uLXNpZ25pbmcga2V5cyAqLworKyAgICAgICAgcmV0dXJu IDE7CisrCisrICAgIGlmICgocGsgPSBFVlBfUEtFWV9uZXcoKSkgPT0gTlVMTCkKKysgICAgICAg IGdvdG8gZXJyOworKworKyAgICBFVlBfUEtFWV9zZXQxX0VDX0tFWShwaywga2V5KTsKKysKKysg ICAgaWYgKGZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywgdGJzLCAtMSwgTlVMTCwgMCwgTlVM TCwgMCwgTlVMTCkpCisrICAgICAgICByZXQgPSAxOworKworKyBlcnI6CisrICAgIGlmIChyZXQg PT0gMCkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19DSEVDS19FQywgRklQU19SX1BB SVJXSVNFX1RFU1RfRkFJTEVEKTsKKysgICAgICAgIGZpcHNfc2V0X3NlbGZ0ZXN0X2ZhaWwoKTsK KysgICAgfQorKyAgICBpZiAocGspCisrICAgICAgICBFVlBfUEtFWV9mcmVlKHBrKTsKKysgICAg cmV0dXJuIHJldDsKKyt9CisrCisrI2VuZGlmCisrCisgaW50IEVDX0tFWV9nZW5lcmF0ZV9rZXko RUNfS0VZICplY2tleSkKKyB7CisrI2lmZGVmIE9QRU5TU0xfRklQUworKyAgICBpZiAoRklQU19z ZWxmdGVzdF9mYWlsZWQoKSkgeworKyAgICAgICAgRklQU2VycihFQ19GX0VDX0tFWV9HRU5FUkFU RV9LRVksIEZJUFNfUl9GSVBTX1NFTEZURVNUX0ZBSUxFRCk7CisrICAgICAgICByZXR1cm4gMDsK KysgICAgfQorKyNlbmRpZgorICAgICBpZiAoZWNrZXkgPT0gTlVMTCB8fCBlY2tleS0+Z3JvdXAg PT0gTlVMTCkgeworICAgICAgICAgRUNlcnIoRUNfRl9FQ19LRVlfR0VORVJBVEVfS0VZLCBFUlJf Ul9QQVNTRURfTlVMTF9QQVJBTUVURVIpOworICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKy0g ICAgaWYgKGVja2V5LT5tZXRoLT5rZXlnZW4gIT0gTlVMTCkKKy0gICAgICAgIHJldHVybiBlY2tl eS0+bWV0aC0+a2V5Z2VuKGVja2V5KTsKKysgICAgaWYgKGVja2V5LT5tZXRoLT5rZXlnZW4gIT0g TlVMTCkgeworKyAgICAgICAgaW50IHJ2ID0gZWNrZXktPm1ldGgtPmtleWdlbihlY2tleSk7Cisr I2lmZGVmIE9QRU5TU0xfRklQUworKyAgICAgICAgaWYgKHJ2ID4gMCAmJiBGSVBTX21vZGUoKSkg eworKyAgICAgICAgICAgIHJ2ID0gZmlwc19jaGVja19lYyhlY2tleSk7CisrICAgICAgICB9Cisr I2VuZGlmCisrICAgICAgICByZXR1cm4gcnY7CisrICAgIH0KKyAgICAgRUNlcnIoRUNfRl9FQ19L RVlfR0VORVJBVEVfS0VZLCBFQ19SX09QRVJBVElPTl9OT1RfU1VQUE9SVEVEKTsKKyAgICAgcmV0 dXJuIDA7CisgfQorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZWMvZWNwX3NtcGwuYy5m aXBzIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2VjL2VjcF9zbXBsLmMKKy0tLSBvcGVuc3NsLTEuMS4w L2NyeXB0by9lYy9lY3Bfc21wbC5jLmZpcHMJMjAxNi0wOC0yNSAxNzoyOToyMC4wMDAwMDAwMDAg KzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wL2NyeXB0by9lYy9lY3Bfc21wbC5jCTIwMTYtMDktMDgg MTE6Mzc6MzguNzM1NDU5OTQwICswMjAwCitAQCAtMTQ0LDYgKzE0NCwxMSBAQCBpbnQgZWNfR0Zw X3NpbXBsZV9ncm91cF9zZXRfY3VydmUoRUNfR1JPCisgICAgICAgICByZXR1cm4gMDsKKyAgICAg fQorIAorKyAgICBpZiAoQk5fbnVtX2JpdHMocCkgPCAyNTYpIHsKKysgICAgICAgIEVDZXJyKEVD X0ZfRUNfR0ZQX1NJTVBMRV9HUk9VUF9TRVRfQ1VSVkUsIEVDX1JfVU5TVVBQT1JURURfRklFTEQp OworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKyAgICAgaWYgKGN0eCA9PSBOVUxMKSB7 CisgICAgICAgICBjdHggPSBuZXdfY3R4ID0gQk5fQ1RYX25ldygpOworICAgICAgICAgaWYgKGN0 eCA9PSBOVUxMKQorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZXJyL2Vycl9hbGwuYy5m aXBzIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2Vyci9lcnJfYWxsLmMKKy0tLSBvcGVuc3NsLTEuMS4w L2NyeXB0by9lcnIvZXJyX2FsbC5jLmZpcHMJMjAxNi0wOC0yNSAxNzoyOToyMC4wMDAwMDAwMDAg KzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wL2NyeXB0by9lcnIvZXJyX2FsbC5jCTIwMTYtMDktMDgg MTE6Mzc6MzguNzM2NDU5OTYyICswMjAwCitAQCAtNDMsOSArNDMsNiBAQAorIGludCBlcnJfbG9h ZF9jcnlwdG9fc3RyaW5nc19pbnQodm9pZCkKKyB7CisgICAgIGlmICgKKy0jaWZkZWYgT1BFTlNT TF9GSVBTCistICAgICAgICBGSVBTX3NldF9lcnJvcl9jYWxsYmFja3MoRVJSX3B1dF9lcnJvciwg RVJSX2FkZF9lcnJvcl92ZGF0YSkgPT0gMCB8fAorLSNlbmRpZgorICNpZm5kZWYgT1BFTlNTTF9O T19FUlIKKyAgICAgICAgIEVSUl9sb2FkX0VSUl9zdHJpbmdzKCkgPT0gMCB8fCAgICAvKiBpbmNs dWRlIGVycm9yIHN0cmluZ3MgZm9yIFNZU2VyciAqLworICAgICAgICAgRVJSX2xvYWRfQk5fc3Ry aW5ncygpID09IDAgfHwKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2V2cC9jX2FsbGMu Yy5maXBzIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2V2cC9jX2FsbGMuYworLS0tIG9wZW5zc2wtMS4x LjAvY3J5cHRvL2V2cC9jX2FsbGMuYy5maXBzCTIwMTYtMDgtMjUgMTc6Mjk6MjAuMDAwMDAwMDAw ICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZXZwL2NfYWxsYy5jCTIwMTYtMDktMDgg MTE6Mzc6MzguNzM2NDU5OTYyICswMjAwCitAQCAtMTcsNiArMTcsOSBAQAorIHZvaWQgb3BlbnNz bF9hZGRfYWxsX2NpcGhlcnNfaW50KHZvaWQpCisgeworIAorKyNpZmRlZiBPUEVOU1NMX0ZJUFMK KysgICAgaWYgKCFGSVBTX21vZGUoKSkgeworKyNlbmRpZgorICNpZm5kZWYgT1BFTlNTTF9OT19E RVMKKyAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19jZmIoKSk7CisgICAgIEVWUF9hZGRfY2lw aGVyKEVWUF9kZXNfY2ZiMSgpKTsKK0BAIC0yMTcsNCArMjIwLDcwIEBAIHZvaWQgb3BlbnNzbF9h ZGRfYWxsX2NpcGhlcnNfaW50KHZvaWQpCisgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9jaGFjaGEy MF9wb2x5MTMwNSgpKTsKKyAjIGVuZGlmCisgI2VuZGlmCisrI2lmZGVmIE9QRU5TU0xfRklQUwor KyAgICB9IGVsc2UgeworKyMgaWZuZGVmIE9QRU5TU0xfTk9fREVTCisrICAgICAgICBFVlBfYWRk X2NpcGhlcihFVlBfZGVzX2VkZTNfY2ZiKCkpOworKworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIo RVZQX2Rlc19lZGUzX29mYigpKTsKKysKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9kZXNf ZWRlM19jYmMoKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9kZXNfZWRlM19j YmMsICJERVMzIik7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9kZXNfZWRlM19j YmMsICJkZXMzIik7CisrCisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfZGVzX2VkZTMoKSk7 CisrICAgICAgICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9kZXNfZWRlM19lY2IsICJERVMtRURF My1FQ0IiKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Rlc19lZGUzX2VjYiwg ImRlcy1lZGUzLWVjYiIpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19lZGUzX3dy YXAoKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9pZF9zbWltZV9hbGdfQ01T M0RFU3dyYXAsICJkZXMzLXdyYXAiKTsKKysjIGVuZGlmCisrCisrIyBpZm5kZWYgT1BFTlNTTF9O T19BRVMKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X2VjYigpKTsKKysgICAg ICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X2NiYygpKTsKKysgICAgICAgIEVWUF9hZGRf Y2lwaGVyKEVWUF9hZXNfMTI4X2NmYigpKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9h ZXNfMTI4X2NmYjEoKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF9jZmI4 KCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfb2ZiKCkpOworKyAgICAg ICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfY3RyKCkpOworKyAgICAgICAgRVZQX2FkZF9j aXBoZXIoRVZQX2Flc18xMjhfZ2NtKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Fl c18xMjhfeHRzKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfY2NtKCkp OworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfd3JhcCgpKTsKKysgICAgICAg IEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2lkX2FlczEyOF93cmFwLCAiYWVzMTI4LXdyYXAiKTsK KysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X3dyYXBfcGFkKCkpOworKyAgICAg ICAgRVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fYWVzXzEyOF9jYmMsICJBRVMxMjgiKTsKKysgICAg ICAgIEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18xMjhfY2JjLCAiYWVzMTI4Iik7CisrICAg ICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml9lY2IoKSk7CisrICAgICAgICBFVlBfYWRk X2NpcGhlcihFVlBfYWVzXzE5Ml9jYmMoKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBf YWVzXzE5Ml9jZmIoKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml9jZmIx KCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfY2ZiOCgpKTsKKysgICAg ICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX29mYigpKTsKKysgICAgICAgIEVWUF9hZGRf Y2lwaGVyKEVWUF9hZXNfMTkyX2N0cigpKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9h ZXNfMTkyX2djbSgpKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX2NjbSgp KTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX3dyYXAoKSk7CisrICAgICAg ICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9pZF9hZXMxOTJfd3JhcCwgImFlczE5Mi13cmFwIik7 CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml93cmFwX3BhZCgpKTsKKysgICAg ICAgIEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18xOTJfY2JjLCAiQUVTMTkyIik7CisrICAg ICAgICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9hZXNfMTkyX2NiYywgImFlczE5MiIpOworKyAg ICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfZWNiKCkpOworKyAgICAgICAgRVZQX2Fk ZF9jaXBoZXIoRVZQX2Flc18yNTZfY2JjKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQ X2Flc18yNTZfY2ZiKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfY2Zi MSgpKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X2NmYjgoKSk7CisrICAg ICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9vZmIoKSk7CisrICAgICAgICBFVlBfYWRk X2NpcGhlcihFVlBfYWVzXzI1Nl9jdHIoKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBf YWVzXzI1Nl9nY20oKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl94dHMo KSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9jY20oKSk7CisrICAgICAg ICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl93cmFwKCkpOworKyAgICAgICAgRVZQX2FkZF9j aXBoZXJfYWxpYXMoU05faWRfYWVzMjU2X3dyYXAsICJhZXMyNTYtd3JhcCIpOworKyAgICAgICAg RVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfd3JhcF9wYWQoKSk7CisrICAgICAgICBFVlBfYWRk X2NpcGhlcl9hbGlhcyhTTl9hZXNfMjU2X2NiYywgIkFFUzI1NiIpOworKyAgICAgICAgRVZQX2Fk ZF9jaXBoZXJfYWxpYXMoU05fYWVzXzI1Nl9jYmMsICJhZXMyNTYiKTsKKysjIGVuZGlmCisrICAg IH0KKysjZW5kaWYKKyB9CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9ldnAvY19hbGxk LmMuZmlwcyBvcGVuc3NsLTEuMS4wL2NyeXB0by9ldnAvY19hbGxkLmMKKy0tLSBvcGVuc3NsLTEu MS4wL2NyeXB0by9ldnAvY19hbGxkLmMuZmlwcwkyMDE2LTA4LTI1IDE3OjI5OjIwLjAwMDAwMDAw MCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2V2cC9jX2FsbGQuYwkyMDE2LTA5LTA4 IDExOjM3OjM4LjczNjQ1OTk2MiArMDIwMAorQEAgLTE2LDYgKzE2LDkgQEAKKyAKKyB2b2lkIG9w ZW5zc2xfYWRkX2FsbF9kaWdlc3RzX2ludCh2b2lkKQorIHsKKysjaWZkZWYgT1BFTlNTTF9GSVBT CisrICAgIGlmICghRklQU19tb2RlKCkpIHsKKysjZW5kaWYKKyAjaWZuZGVmIE9QRU5TU0xfTk9f TUQ0CisgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9tZDQoKSk7CisgI2VuZGlmCitAQCAtNDYsNCAr NDksMTUgQEAgdm9pZCBvcGVuc3NsX2FkZF9hbGxfZGlnZXN0c19pbnQodm9pZCkKKyAgICAgRVZQ X2FkZF9kaWdlc3QoRVZQX2JsYWtlMmI1MTIoKSk7CisgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9i bGFrZTJzMjU2KCkpOworICNlbmRpZgorKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgfSBlbHNl IHsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGExKCkpOworKyAgICAgICAgRVZQX2Fk ZF9kaWdlc3RfYWxpYXMoU05fc2hhMSwgInNzbDMtc2hhMSIpOworKyAgICAgICAgRVZQX2FkZF9k aWdlc3RfYWxpYXMoU05fc2hhMVdpdGhSU0FFbmNyeXB0aW9uLCBTTl9zaGExV2l0aFJTQSk7Cisr ICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhMjI0KCkpOworKyAgICAgICAgRVZQX2FkZF9k aWdlc3QoRVZQX3NoYTI1NigpKTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGEzODQo KSk7CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhNTEyKCkpOworKyAgICB9CisrI2Vu ZGlmCisgfQorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZXZwL2RpZ2VzdC5jLmZpcHMg b3BlbnNzbC0xLjEuMC9jcnlwdG8vZXZwL2RpZ2VzdC5jCistLS0gb3BlbnNzbC0xLjEuMC9jcnlw dG8vZXZwL2RpZ2VzdC5jLmZpcHMJMjAxNi0wOC0yNSAxNzoyOToyMC4wMDAwMDAwMDAgKzAyMDAK KysrKyBvcGVuc3NsLTEuMS4wL2NyeXB0by9ldnAvZGlnZXN0LmMJMjAxNi0wOS0wOCAxMTozNzoz OC43MzY0NTk5NjIgKzAyMDAKK0BAIC0xNCw2ICsxNCw5IEBACisgI2luY2x1ZGUgPG9wZW5zc2wv ZW5naW5lLmg+CisgI2luY2x1ZGUgImludGVybmFsL2V2cF9pbnQuaCIKKyAjaW5jbHVkZSAiZXZw X2xvY2wuaCIKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMu aD4KKysjZW5kaWYKKyAKKyAvKiBUaGlzIGNhbGwgZnJlZXMgcmVzb3VyY2VzIGFzc29jaWF0ZWQg d2l0aCB0aGUgY29udGV4dCAqLworIGludCBFVlBfTURfQ1RYX3Jlc2V0KEVWUF9NRF9DVFggKmN0 eCkKK0BAIC02MSw2ICs2NCwxMiBAQCBpbnQgRVZQX0RpZ2VzdEluaXQoRVZQX01EX0NUWCAqY3R4 LCBjb25zCisgaW50IEVWUF9EaWdlc3RJbml0X2V4KEVWUF9NRF9DVFggKmN0eCwgY29uc3QgRVZQ X01EICp0eXBlLCBFTkdJTkUgKmltcGwpCisgeworICAgICBFVlBfTURfQ1RYX2NsZWFyX2ZsYWdz KGN0eCwgRVZQX01EX0NUWF9GTEFHX0NMRUFORUQpOworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysg ICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19G X0VWUF9ESUdFU1RJTklUX0VYLCBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOworKyAgICAg ICAgcmV0dXJuIDA7CisrICAgIH0KKysjZW5kaWYKKyAjaWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5F CisgICAgIC8qCisgICAgICAqIFdoZXRoZXIgaXQncyBuaWNlIG9yIG5vdCwgIkluaXRzIiBjYW4g YmUgdXNlZCBvbiAiRmluYWwiJ2QgY29udGV4dHMgc28KK0BAIC0xMTQsNiArMTIzLDE1IEBAIGlu dCBFVlBfRGlnZXN0SW5pdF9leChFVlBfTURfQ1RYICpjdHgsIGMKKyAgICAgfQorICNlbmRpZgor ICAgICBpZiAoY3R4LT5kaWdlc3QgIT0gdHlwZSkgeworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysg ICAgICAgIGlmIChGSVBTX21vZGUoKSkgeworKyAgICAgICAgICAgIGlmICghKHR5cGUtPmZsYWdz ICYgRVZQX01EX0ZMQUdfRklQUykKKysgICAgICAgICAgICAgICAgJiYgIShjdHgtPmZsYWdzICYg RVZQX01EX0NUWF9GTEFHX05PTl9GSVBTX0FMTE9XKSkgeworKyAgICAgICAgICAgICAgICBFVlBl cnIoRVZQX0ZfRVZQX0RJR0VTVElOSVRfRVgsIEVWUF9SX0RJU0FCTEVEX0ZPUl9GSVBTKTsKKysg ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyNl bmRpZgorICAgICAgICAgaWYgKGN0eC0+ZGlnZXN0ICYmIGN0eC0+ZGlnZXN0LT5jdHhfc2l6ZSkg eworICAgICAgICAgICAgIE9QRU5TU0xfY2xlYXJfZnJlZShjdHgtPm1kX2RhdGEsIGN0eC0+ZGln ZXN0LT5jdHhfc2l6ZSk7CisgICAgICAgICAgICAgY3R4LT5tZF9kYXRhID0gTlVMTDsKK0BAIC0x NDUsNiArMTYzLDkgQEAgaW50IEVWUF9EaWdlc3RJbml0X2V4KEVWUF9NRF9DVFggKmN0eCwgYwor IAorIGludCBFVlBfRGlnZXN0VXBkYXRlKEVWUF9NRF9DVFggKmN0eCwgY29uc3Qgdm9pZCAqZGF0 YSwgc2l6ZV90IGNvdW50KQorIHsKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIEZJUFNfc2Vs ZnRlc3RfY2hlY2soKTsKKysjZW5kaWYKKyAgICAgcmV0dXJuIGN0eC0+dXBkYXRlKGN0eCwgZGF0 YSwgY291bnQpOworIH0KKyAKK0BAIC0xNjIsNiArMTgzLDkgQEAgaW50IEVWUF9EaWdlc3RGaW5h bF9leChFVlBfTURfQ1RYICpjdHgsCisgeworICAgICBpbnQgcmV0OworIAorKyNpZmRlZiBPUEVO U1NMX0ZJUFMKKysgICAgRklQU19zZWxmdGVzdF9jaGVjaygpOworKyNlbmRpZgorICAgICBPUEVO U1NMX2Fzc2VydChjdHgtPmRpZ2VzdC0+bWRfc2l6ZSA8PSBFVlBfTUFYX01EX1NJWkUpOworICAg ICByZXQgPSBjdHgtPmRpZ2VzdC0+ZmluYWwoY3R4LCBtZCk7CisgICAgIGlmIChzaXplICE9IE5V TEwpCitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9ldnAvZV9hZXMuYy5maXBzIG9wZW5z c2wtMS4xLjAvY3J5cHRvL2V2cC9lX2Flcy5jCistLS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vZXZw L2VfYWVzLmMuZmlwcwkyMDE2LTA4LTI1IDE3OjI5OjIwLjAwMDAwMDAwMCArMDIwMAorKysrIG9w ZW5zc2wtMS4xLjAvY3J5cHRvL2V2cC9lX2Flcy5jCTIwMTYtMDktMDggMTE6Mzc6MzguNzM2NDU5 OTYyICswMjAwCitAQCAtMTYsNiArMTYsNyBAQAorICNpbmNsdWRlIDxvcGVuc3NsL2Flcy5oPgor ICNpbmNsdWRlICJpbnRlcm5hbC9ldnBfaW50LmgiCisgI2luY2x1ZGUgIm1vZGVzX2xjbC5oIgor KyNpbmNsdWRlICJldnBfbG9jbC5oIgorICNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKyAKKyB0 eXBlZGVmIHN0cnVjdCB7CitAQCAtMTI2MCw5ICsxMjYxLDkgQEAgc3RhdGljIGludCBhZXNfY3Ry X2NpcGhlcihFVlBfQ0lQSEVSX0NUWAorICAgICByZXR1cm4gMTsKKyB9CisgCistQkxPQ0tfQ0lQ SEVSX2dlbmVyaWNfcGFjayhOSURfYWVzLCAxMjgsIDApCistICAgIEJMT0NLX0NJUEhFUl9nZW5l cmljX3BhY2soTklEX2FlcywgMTkyLCAwKQorLSAgICBCTE9DS19DSVBIRVJfZ2VuZXJpY19wYWNr KE5JRF9hZXMsIDI1NiwgMCkKKytCTE9DS19DSVBIRVJfZ2VuZXJpY19wYWNrKE5JRF9hZXMsIDEy OCwgRVZQX0NJUEhfRkxBR19GSVBTKQorKyAgICBCTE9DS19DSVBIRVJfZ2VuZXJpY19wYWNrKE5J RF9hZXMsIDE5MiwgRVZQX0NJUEhfRkxBR19GSVBTKQorKyAgICBCTE9DS19DSVBIRVJfZ2VuZXJp Y19wYWNrKE5JRF9hZXMsIDI1NiwgRVZQX0NJUEhfRkxBR19GSVBTKQorIAorIHN0YXRpYyBpbnQg YWVzX2djbV9jbGVhbnVwKEVWUF9DSVBIRVJfQ1RYICpjKQorIHsKK0BAIC0xMzA2LDYgKzEzMDcs MTEgQEAgc3RhdGljIGludCBhZXNfZ2NtX2N0cmwoRVZQX0NJUEhFUl9DVFggKgorICAgICBjYXNl IEVWUF9DVFJMX0FFQURfU0VUX0lWTEVOOgorICAgICAgICAgaWYgKGFyZyA8PSAwKQorICAgICAg ICAgICAgIHJldHVybiAwOworKyMgaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgICAgICBpZiAoRklQ U19tb2RlKCkgJiYgIShjLT5mbGFncyAmIEVWUF9DSVBIX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpCisr ICAgICAgICAgICAgJiYgYXJnIDwgMTIpCisrICAgICAgICAgICAgcmV0dXJuIDA7CisrIyBlbmRp ZgorICAgICAgICAgLyogQWxsb2NhdGUgbWVtb3J5IGZvciBJViBpZiBuZWVkZWQgKi8KKyAgICAg ICAgIGlmICgoYXJnID4gRVZQX01BWF9JVl9MRU5HVEgpICYmIChhcmcgPiBnY3R4LT5pdmxlbikp IHsKKyAgICAgICAgICAgICBpZiAoZ2N0eC0+aXYgIT0gRVZQX0NJUEhFUl9DVFhfaXZfbm9jb25z dChjKSkKK0BAIC0xNzYxLDExICsxNzY3LDE0IEBAIHN0YXRpYyBpbnQgYWVzX2djbV9jaXBoZXIo RVZQX0NJUEhFUl9DVFgKKyAgICAgICAgICAgICAgICAgfCBFVlBfQ0lQSF9DVVNUT01fQ09QWSkK KyAKKyBCTE9DS19DSVBIRVJfY3VzdG9tKE5JRF9hZXMsIDEyOCwgMSwgMTIsIGdjbSwgR0NNLAor LSAgICAgICAgICAgICAgICAgICAgRVZQX0NJUEhfRkxBR19BRUFEX0NJUEhFUiB8IENVU1RPTV9G TEFHUykKKysgICAgICAgICAgICAgICAgICAgIEVWUF9DSVBIX0ZMQUdfRklQUyB8IEVWUF9DSVBI X0ZMQUdfQUVBRF9DSVBIRVIgfAorKyAgICAgICAgICAgICAgICAgICAgQ1VTVE9NX0ZMQUdTKQor ICAgICBCTE9DS19DSVBIRVJfY3VzdG9tKE5JRF9hZXMsIDE5MiwgMSwgMTIsIGdjbSwgR0NNLAor LSAgICAgICAgICAgICAgICAgICAgRVZQX0NJUEhfRkxBR19BRUFEX0NJUEhFUiB8IENVU1RPTV9G TEFHUykKKysgICAgICAgICAgICAgICAgICAgIEVWUF9DSVBIX0ZMQUdfRklQUyB8IEVWUF9DSVBI X0ZMQUdfQUVBRF9DSVBIRVIgfAorKyAgICAgICAgICAgICAgICAgICAgQ1VTVE9NX0ZMQUdTKQor ICAgICBCTE9DS19DSVBIRVJfY3VzdG9tKE5JRF9hZXMsIDI1NiwgMSwgMTIsIGdjbSwgR0NNLAor LSAgICAgICAgICAgICAgICAgICAgRVZQX0NJUEhfRkxBR19BRUFEX0NJUEhFUiB8IENVU1RPTV9G TEFHUykKKysgICAgICAgICAgICAgICAgICAgIEVWUF9DSVBIX0ZMQUdfRklQUyB8IEVWUF9DSVBI X0ZMQUdfQUVBRF9DSVBIRVIgfAorKyAgICAgICAgICAgICAgICAgICAgQ1VTVE9NX0ZMQUdTKQor IAorIHN0YXRpYyBpbnQgYWVzX3h0c19jdHJsKEVWUF9DSVBIRVJfQ1RYICpjLCBpbnQgdHlwZSwg aW50IGFyZywgdm9pZCAqcHRyKQorIHsKK0BAIC0xOTAwLDYgKzE5MDksMTQgQEAgc3RhdGljIGlu dCBhZXNfeHRzX2NpcGhlcihFVlBfQ0lQSEVSX0NUWAorICAgICAgICAgcmV0dXJuIDA7CisgICAg IGlmICghb3V0IHx8ICFpbiB8fCBsZW4gPCBBRVNfQkxPQ0tfU0laRSkKKyAgICAgICAgIHJldHVy biAwOworKyMgaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIC8qIFJlcXVpcmVtZW50IG9mIFNQODAw LTM4RSAqLworKyAgICBpZiAoRklQU19tb2RlKCkgJiYgIShjdHgtPmZsYWdzICYgRVZQX0NJUEhf RkxBR19OT05fRklQU19BTExPVykgJiYKKysgICAgICAgIChsZW4gPiAoMVVMIDw8IDIwKSAqIDE2 KSkgeworKyAgICAgICAgRVZQZXJyKEVWUF9GX0FFU19YVFNfQ0lQSEVSLCBFVlBfUl9UT09fTEFS R0UpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysjIGVuZGlmCisgICAgIGlmICh4Y3R4 LT5zdHJlYW0pCisgICAgICAgICAoKnhjdHgtPnN0cmVhbSkgKGluLCBvdXQsIGxlbiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgeGN0eC0+eHRzLmtleTEsIHhjdHgtPnh0cy5rZXkyLAorQEAg LTE5MTcsOCArMTkzNCwxMCBAQCBzdGF0aWMgaW50IGFlc194dHNfY2lwaGVyKEVWUF9DSVBIRVJf Q1RYCisgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRVZQX0NJUEhfQUxXQVlTX0NBTExfSU5J VCB8IEVWUF9DSVBIX0NUUkxfSU5JVCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRVZQ X0NJUEhfQ1VTVE9NX0NPUFkpCisgCistQkxPQ0tfQ0lQSEVSX2N1c3RvbShOSURfYWVzLCAxMjgs IDEsIDE2LCB4dHMsIFhUUywgWFRTX0ZMQUdTKQorLSAgICBCTE9DS19DSVBIRVJfY3VzdG9tKE5J RF9hZXMsIDI1NiwgMSwgMTYsIHh0cywgWFRTLCBYVFNfRkxBR1MpCisrQkxPQ0tfQ0lQSEVSX2N1 c3RvbShOSURfYWVzLCAxMjgsIDEsIDE2LCB4dHMsIFhUUywKKysgICAgICAgICAgICAgICAgICAg IEVWUF9DSVBIX0ZMQUdfRklQUyB8IFhUU19GTEFHUykKKysgICAgQkxPQ0tfQ0lQSEVSX2N1c3Rv bShOSURfYWVzLCAyNTYsIDEsIDE2LCB4dHMsIFhUUywKKysgICAgICAgICAgICAgICAgICAgIEVW UF9DSVBIX0ZMQUdfRklQUyB8IFhUU19GTEFHUykKKyAKKyBzdGF0aWMgaW50IGFlc19jY21fY3Ry bChFVlBfQ0lQSEVSX0NUWCAqYywgaW50IHR5cGUsIGludCBhcmcsIHZvaWQgKnB0cikKKyB7CitA QCAtMjE3NiwxMSArMjE5NSwxMSBAQCBzdGF0aWMgaW50IGFlc19jY21fY2lwaGVyKEVWUF9DSVBI RVJfQ1RYCisgI2RlZmluZSBhZXNfY2NtX2NsZWFudXAgTlVMTAorIAorIEJMT0NLX0NJUEhFUl9j dXN0b20oTklEX2FlcywgMTI4LCAxLCAxMiwgY2NtLCBDQ00sCistICAgICAgICAgICAgICAgICAg ICBFVlBfQ0lQSF9GTEFHX0FFQURfQ0lQSEVSIHwgQ1VTVE9NX0ZMQUdTKQorKyAgICAgICAgICAg ICAgICAgICAgRVZQX0NJUEhfRkxBR19GSVBTIHwgRVZQX0NJUEhfRkxBR19BRUFEX0NJUEhFUiB8 IENVU1RPTV9GTEFHUykKKyAgICAgQkxPQ0tfQ0lQSEVSX2N1c3RvbShOSURfYWVzLCAxOTIsIDEs IDEyLCBjY20sIENDTSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBFVlBfQ0lQSF9GTEFHX0FF QURfQ0lQSEVSIHwgQ1VTVE9NX0ZMQUdTKQorKyAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9D SVBIX0ZMQUdfRklQUyB8IEVWUF9DSVBIX0ZMQUdfQUVBRF9DSVBIRVIgfCBDVVNUT01fRkxBR1Mp CisgICAgIEJMT0NLX0NJUEhFUl9jdXN0b20oTklEX2FlcywgMjU2LCAxLCAxMiwgY2NtLCBDQ00s CistICAgICAgICAgICAgICAgICAgICAgICAgRVZQX0NJUEhfRkxBR19BRUFEX0NJUEhFUiB8IENV U1RPTV9GTEFHUykKKysgICAgICAgICAgICAgICAgICAgICAgICBFVlBfQ0lQSF9GTEFHX0ZJUFMg fCBFVlBfQ0lQSF9GTEFHX0FFQURfQ0lQSEVSIHwgQ1VTVE9NX0ZMQUdTKQorIAorIHR5cGVkZWYg c3RydWN0IHsKKyAgICAgdW5pb24geworQEAgLTIyNjksNyArMjI4OCw3IEBAIHN0YXRpYyBpbnQg YWVzX3dyYXBfY2lwaGVyKEVWUF9DSVBIRVJfQ1QKKyAgICAgcmV0dXJuIHJ2ID8gKGludClydiA6 IC0xOworIH0KKyAKKy0jZGVmaW5lIFdSQVBfRkxBR1MgICAgICAoRVZQX0NJUEhfV1JBUF9NT0RF IFwKKysjZGVmaW5lIFdSQVBfRkxBR1MgICAgICAoRVZQX0NJUEhfV1JBUF9NT0RFIHwgRVZQX0NJ UEhfRkxBR19GSVBTIFwKKyAgICAgICAgICAgICAgICAgfCBFVlBfQ0lQSF9DVVNUT01fSVYgfCBF VlBfQ0lQSF9GTEFHX0NVU1RPTV9DSVBIRVIgXAorICAgICAgICAgICAgICAgICB8IEVWUF9DSVBI X0FMV0FZU19DQUxMX0lOSVQgfCBFVlBfQ0lQSF9GTEFHX0RFRkFVTFRfQVNOMSkKKyAKK2RpZmYg LXVwIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2V2cC9lX2RlczMuYy5maXBzIG9wZW5zc2wtMS4xLjAv Y3J5cHRvL2V2cC9lX2RlczMuYworLS0tIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2V2cC9lX2RlczMu Yy5maXBzCTIwMTYtMDgtMjUgMTc6Mjk6MjAuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0x LjEuMC9jcnlwdG8vZXZwL2VfZGVzMy5jCTIwMTYtMDktMDggMTE6Mzc6MzguNzM2NDU5OTYyICsw MjAwCitAQCAtMjEwLDE2ICsyMTAsMTkgQEAgQkxPQ0tfQ0lQSEVSX2RlZnMoZGVzX2VkZSwgREVT X0VERV9LRVksCisgIyBkZWZpbmUgZGVzX2VkZTNfY2JjX2NpcGhlciBkZXNfZWRlX2NiY19jaXBo ZXIKKyAjIGRlZmluZSBkZXNfZWRlM19lY2JfY2lwaGVyIGRlc19lZGVfZWNiX2NpcGhlcgorICAg ICBCTE9DS19DSVBIRVJfZGVmcyhkZXNfZWRlMywgREVTX0VERV9LRVksIE5JRF9kZXNfZWRlMywg OCwgMjQsIDgsIDY0LAorLSAgICAgICAgICAgICAgICAgIEVWUF9DSVBIX1JBTkRfS0VZIHwgRVZQ X0NJUEhfRkxBR19ERUZBVUxUX0FTTjEsCistICAgICAgICAgICAgICAgICAgZGVzX2VkZTNfaW5p dF9rZXksIE5VTEwsIE5VTEwsIE5VTEwsIGRlczNfY3RybCkKKysgICAgICAgICAgICAgICAgICBF VlBfQ0lQSF9SQU5EX0tFWSB8IEVWUF9DSVBIX0ZMQUdfRklQUyB8CisrICAgICAgICAgICAgICAg ICAgRVZQX0NJUEhfRkxBR19ERUZBVUxUX0FTTjEsIGRlc19lZGUzX2luaXRfa2V5LCBOVUxMLCBO VUxMLCBOVUxMLAorKyAgICAgICAgICAgICAgICAgIGRlczNfY3RybCkKKyAKKyAgICAgQkxPQ0tf Q0lQSEVSX2RlZl9jZmIoZGVzX2VkZTMsIERFU19FREVfS0VZLCBOSURfZGVzX2VkZTMsIDI0LCA4 LCAxLAorLSAgICAgICAgICAgICAgICAgICAgIEVWUF9DSVBIX1JBTkRfS0VZIHwgRVZQX0NJUEhf RkxBR19ERUZBVUxUX0FTTjEsCistICAgICAgICAgICAgICAgICAgICAgZGVzX2VkZTNfaW5pdF9r ZXksIE5VTEwsIE5VTEwsIE5VTEwsIGRlczNfY3RybCkKKysgICAgICAgICAgICAgICAgICAgICBF VlBfQ0lQSF9SQU5EX0tFWSB8IEVWUF9DSVBIX0ZMQUdfRklQUyB8CisrICAgICAgICAgICAgICAg ICAgICAgRVZQX0NJUEhfRkxBR19ERUZBVUxUX0FTTjEsIGRlc19lZGUzX2luaXRfa2V5LCBOVUxM LCBOVUxMLAorKyAgICAgICAgICAgICAgICAgICAgIE5VTEwsIGRlczNfY3RybCkKKyAKKyAgICAg QkxPQ0tfQ0lQSEVSX2RlZl9jZmIoZGVzX2VkZTMsIERFU19FREVfS0VZLCBOSURfZGVzX2VkZTMs IDI0LCA4LCA4LAorLSAgICAgICAgICAgICAgICAgICAgIEVWUF9DSVBIX1JBTkRfS0VZIHwgRVZQ X0NJUEhfRkxBR19ERUZBVUxUX0FTTjEsCistICAgICAgICAgICAgICAgICAgICAgZGVzX2VkZTNf aW5pdF9rZXksIE5VTEwsIE5VTEwsIE5VTEwsIGRlczNfY3RybCkKKysgICAgICAgICAgICAgICAg ICAgICBFVlBfQ0lQSF9SQU5EX0tFWSB8IEVWUF9DSVBIX0ZMQUdfRklQUyB8CisrICAgICAgICAg ICAgICAgICAgICAgRVZQX0NJUEhfRkxBR19ERUZBVUxUX0FTTjEsIGRlc19lZGUzX2luaXRfa2V5 LCBOVUxMLCBOVUxMLAorKyAgICAgICAgICAgICAgICAgICAgIE5VTEwsIGRlczNfY3RybCkKKyAK KyBzdGF0aWMgaW50IGRlc19lZGVfaW5pdF9rZXkoRVZQX0NJUEhFUl9DVFggKmN0eCwgY29uc3Qg dW5zaWduZWQgY2hhciAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1 bnNpZ25lZCBjaGFyICppdiwgaW50IGVuYykKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjAvY3J5cHRv L2V2cC9lX251bGwuYy5maXBzIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2V2cC9lX251bGwuYworLS0t IG9wZW5zc2wtMS4xLjAvY3J5cHRvL2V2cC9lX251bGwuYy5maXBzCTIwMTYtMDgtMjUgMTc6Mjk6 MjAuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZXZwL2VfbnVsbC5j CTIwMTYtMDktMDggMTE6Mzc6MzguNzM3NDU5OTg1ICswMjAwCitAQCAtMTksNyArMTksOCBAQCBz dGF0aWMgaW50IG51bGxfY2lwaGVyKEVWUF9DSVBIRVJfQ1RYICpjCisgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGlubCk7Cisgc3RhdGljIGNv bnN0IEVWUF9DSVBIRVIgbl9jaXBoZXIgPSB7CisgICAgIE5JRF91bmRlZiwKKy0gICAgMSwgMCwg MCwgMCwKKysgICAgMSwgMCwgMCwKKysgICAgRVZQX0NJUEhfRkxBR19GSVBTLAorICAgICBudWxs X2luaXRfa2V5LAorICAgICBudWxsX2NpcGhlciwKKyAgICAgTlVMTCwKK2RpZmYgLXVwIG9wZW5z c2wtMS4xLjAvY3J5cHRvL2V2cC9ldnBfZW5jLmMuZmlwcyBvcGVuc3NsLTEuMS4wL2NyeXB0by9l dnAvZXZwX2VuYy5jCistLS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vZXZwL2V2cF9lbmMuYy5maXBz CTIwMTYtMDgtMjUgMTc6Mjk6MjAuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC9j cnlwdG8vZXZwL2V2cF9lbmMuYwkyMDE2LTA5LTIxIDEzOjE5OjA5LjI4NDE2OTk5NyArMDIwMAor QEAgLTE2LDEwICsxNiwxOSBAQAorICNpbmNsdWRlIDxvcGVuc3NsL2VuZ2luZS5oPgorICNpbmNs dWRlICJpbnRlcm5hbC9ldnBfaW50LmgiCisgI2luY2x1ZGUgImV2cF9sb2NsLmgiCisrI2lmZGVm IE9QRU5TU0xfRklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2VuZGlmCisgCisg aW50IEVWUF9DSVBIRVJfQ1RYX3Jlc2V0KEVWUF9DSVBIRVJfQ1RYICpjKQorIHsKKy0gICAgaWYg KGMgPT0gTlVMTCkKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBTX3NlbGZ0ZXN0 X2ZhaWxlZCgpKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9FVlBfQ0lQSEVSX0NUWF9SRVNF VCwgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEKTsKKysgICAgICAgIHJldHVybiAwOworKyAg ICB9CisrI2VuZGlmCisrICAgaWYgKGMgPT0gTlVMTCkKKyAgICAgICAgIHJldHVybiAxOworICAg ICBpZiAoYy0+Y2lwaGVyICE9IE5VTEwpIHsKKyAgICAgICAgIGlmIChjLT5jaXBoZXItPmNsZWFu dXAgJiYgIWMtPmNpcGhlci0+Y2xlYW51cChjKSkKK0BAIC0zOCw2ICs0NywxMiBAQCBpbnQgRVZQ X0NJUEhFUl9DVFhfcmVzZXQoRVZQX0NJUEhFUl9DVFgKKyAKKyBFVlBfQ0lQSEVSX0NUWCAqRVZQ X0NJUEhFUl9DVFhfbmV3KHZvaWQpCisgeworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgaWYg KEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0VWUF9D SVBIRVJfQ1RYX05FVywgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEKTsKKysgICAgICAgIHJl dHVybiBOVUxMOworKyAgICB9CisrI2VuZGlmCisgICAgIHJldHVybiBPUEVOU1NMX3phbGxvYyhz aXplb2YoRVZQX0NJUEhFUl9DVFgpKTsKKyB9CisgCitAQCAtNjUsNiArODAsMTIgQEAgaW50IEVW UF9DaXBoZXJJbml0X2V4KEVWUF9DSVBIRVJfQ1RYICpjdAorICAgICAgICAgICAgIGVuYyA9IDE7 CisgICAgICAgICBjdHgtPmVuY3J5cHQgPSBlbmM7CisgICAgIH0KKysjaWZkZWYgT1BFTlNTTF9G SVBTCisrICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7CisrICAgICAgICBGSVBTZXJy KEZJUFNfRl9FVlBfQ0lQSEVSSU5JVF9FWCwgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEKTsK KysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrI2VuZGlmCisgI2lmbmRlZiBPUEVOU1NMX05P X0VOR0lORQorICAgICAvKgorICAgICAgKiBXaGV0aGVyIGl0J3MgbmljZSBvciBub3QsICJJbml0 cyIgY2FuIGJlIHVzZWQgb24gIkZpbmFsIidkIGNvbnRleHRzIHNvCitAQCAtMTMzLDcgKzE1NCw3 IEBAIGludCBFVlBfQ2lwaGVySW5pdF9leChFVlBfQ0lQSEVSX0NUWCAqY3QKKyAgICAgICAgIH0K KyAgICAgICAgIGN0eC0+a2V5X2xlbiA9IGNpcGhlci0+a2V5X2xlbjsKKyAgICAgICAgIC8qIFBy ZXNlcnZlIHdyYXAgZW5hYmxlIGZsYWcsIHplcm8gZXZlcnl0aGluZyBlbHNlICovCistICAgICAg ICBjdHgtPmZsYWdzICY9IEVWUF9DSVBIRVJfQ1RYX0ZMQUdfV1JBUF9BTExPVzsKKysgICAgICAg IGN0eC0+ZmxhZ3MgJj0gRVZQX0NJUEhFUl9DVFhfRkxBR19XUkFQX0FMTE9XIHwgRVZQX0NJUEhf RkxBR19OT05fRklQU19BTExPVzsKKyAgICAgICAgIGlmIChjdHgtPmNpcGhlci0+ZmxhZ3MgJiBF VlBfQ0lQSF9DVFJMX0lOSVQpIHsKKyAgICAgICAgICAgICBpZiAoIUVWUF9DSVBIRVJfQ1RYX2N0 cmwoY3R4LCBFVlBfQ1RSTF9JTklULCAwLCBOVUxMKSkgeworICAgICAgICAgICAgICAgICBFVlBl cnIoRVZQX0ZfRVZQX0NJUEhFUklOSVRfRVgsIEVWUF9SX0lOSVRJQUxJWkFUSU9OX0VSUk9SKTsK K0BAIC0xOTEsNiArMjEyLDE4IEBAIGludCBFVlBfQ2lwaGVySW5pdF9leChFVlBfQ0lQSEVSX0NU WCAqY3QKKyAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgIH0KKyAgICAgfQorKyNpZmRl ZiBPUEVOU1NMX0ZJUFMKKysgICAgLyogQWZ0ZXIgJ2tleScgaXMgc2V0IG5vIGZ1cnRoZXIgcGFy YW1ldGVycyBjaGFuZ2VzIGFyZSBwZXJtaXNzaWJsZS4KKysgICAgICogU28gb25seSBjaGVjayBm b3Igbm9uIEZJUFMgZW5hYmxpbmcgYXQgdGhpcyBwb2ludC4KKysgICAgICovCisrICAgIGlmIChr ZXkgJiYgRklQU19tb2RlKCkpIHsKKysgICAgICAgIGlmICghKGN0eC0+Y2lwaGVyLT5mbGFncyAm IEVWUF9DSVBIX0ZMQUdfRklQUykKKysgICAgICAgICAgICAmICEoY3R4LT5mbGFncyAmIEVWUF9D SVBIX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpKSB7CisrICAgICAgICAgICAgRVZQZXJyKEVWUF9GX0VW UF9DSVBIRVJJTklUX0VYLCBFVlBfUl9ESVNBQkxFRF9GT1JfRklQUyk7CisrICAgICAgICAgICAg cmV0dXJuIDA7CisrICAgICAgICB9CisrICAgIH0KKysjZW5kaWYKKyAKKyAgICAgaWYgKGtleSB8 fCAoY3R4LT5jaXBoZXItPmZsYWdzICYgRVZQX0NJUEhfQUxXQVlTX0NBTExfSU5JVCkpIHsKKyAg ICAgICAgIGlmICghY3R4LT5jaXBoZXItPmluaXQoY3R4LCBrZXksIGl2LCBlbmMpKQorZGlmZiAt dXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZXZwL2V2cF9lcnIuYy5maXBzIG9wZW5zc2wtMS4xLjAv Y3J5cHRvL2V2cC9ldnBfZXJyLmMKKy0tLSBvcGVuc3NsLTEuMS4wL2NyeXB0by9ldnAvZXZwX2Vy ci5jLmZpcHMJMjAxNi0wOC0yNSAxNzoyOToyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3Ns LTEuMS4wL2NyeXB0by9ldnAvZXZwX2Vyci5jCTIwMTYtMDktMDggMTE6Mzc6MzguNzM3NDU5OTg1 ICswMjAwCitAQCAtMjIsNiArMjIsNyBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIEVWUF9zdHJf ZnVuY3RzW10KKyAgICAge0VSUl9GVU5DKEVWUF9GX0FFU05JX0lOSVRfS0VZKSwgImFlc25pX2lu aXRfa2V5In0sCisgICAgIHtFUlJfRlVOQyhFVlBfRl9BRVNfSU5JVF9LRVkpLCAiYWVzX2luaXRf a2V5In0sCisgICAgIHtFUlJfRlVOQyhFVlBfRl9BRVNfVDRfSU5JVF9LRVkpLCAiYWVzX3Q0X2lu aXRfa2V5In0sCisrICAgIHtFUlJfRlVOQyhFVlBfRl9BRVNfWFRTX0NJUEhFUiksICJhZXNfeHRz X2NpcGhlciJ9LAorICAgICB7RVJSX0ZVTkMoRVZQX0ZfQUxHX01PRFVMRV9JTklUKSwgImFsZ19t b2R1bGVfaW5pdCJ9LAorICAgICB7RVJSX0ZVTkMoRVZQX0ZfQ0FNRUxMSUFfSU5JVF9LRVkpLCAi Y2FtZWxsaWFfaW5pdF9rZXkifSwKKyAgICAge0VSUl9GVU5DKEVWUF9GX0NIQUNIQTIwX1BPTFkx MzA1X0NUUkwpLCAiY2hhY2hhMjBfcG9seTEzMDVfY3RybCJ9LAorQEAgLTEwNiw2ICsxMDcsNyBA QCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIEVWUF9zdHJfcmVhc29uc1tdCisgICAgIHtFUlJfUkVB U09OKEVWUF9SX0RFQ09ERV9FUlJPUiksICJkZWNvZGUgZXJyb3IifSwKKyAgICAge0VSUl9SRUFT T04oRVZQX1JfRElGRkVSRU5UX0tFWV9UWVBFUyksICJkaWZmZXJlbnQga2V5IHR5cGVzIn0sCisg ICAgIHtFUlJfUkVBU09OKEVWUF9SX0RJRkZFUkVOVF9QQVJBTUVURVJTKSwgImRpZmZlcmVudCBw YXJhbWV0ZXJzIn0sCisrICAgIHtFUlJfUkVBU09OKEVWUF9SX0RJU0FCTEVEX0ZPUl9GSVBTKSwg ImRpc2FibGVkIGZvciBGSVBTIn0sCisgICAgIHtFUlJfUkVBU09OKEVWUF9SX0VSUk9SX0xPQURJ TkdfU0VDVElPTiksICJlcnJvciBsb2FkaW5nIHNlY3Rpb24ifSwKKyAgICAge0VSUl9SRUFTT04o RVZQX1JfRVJST1JfU0VUVElOR19GSVBTX01PREUpLCAiZXJyb3Igc2V0dGluZyBmaXBzIG1vZGUi fSwKKyAgICAge0VSUl9SRUFTT04oRVZQX1JfRVhQRUNUSU5HX0FOX0hNQUNfS0VZKSwgImV4cGVj dGluZyBhbiBobWFjIGtleSJ9LAorQEAgLTEzOSw2ICsxNDEsNyBAQCBzdGF0aWMgRVJSX1NUUklO R19EQVRBIEVWUF9zdHJfcmVhc29uc1tdCisgICAgIHtFUlJfUkVBU09OKEVWUF9SX1BSSVZBVEVf S0VZX0RFQ09ERV9FUlJPUiksICJwcml2YXRlIGtleSBkZWNvZGUgZXJyb3IifSwKKyAgICAge0VS Ul9SRUFTT04oRVZQX1JfUFJJVkFURV9LRVlfRU5DT0RFX0VSUk9SKSwgInByaXZhdGUga2V5IGVu Y29kZSBlcnJvciJ9LAorICAgICB7RVJSX1JFQVNPTihFVlBfUl9QVUJMSUNfS0VZX05PVF9SU0Ep LCAicHVibGljIGtleSBub3QgcnNhIn0sCisrICAgIHtFUlJfUkVBU09OKEVWUF9SX1RPT19MQVJH RSksICJ0b28gbGFyZ2UifSwKKyAgICAge0VSUl9SRUFTT04oRVZQX1JfVU5LTk9XTl9DSVBIRVIp LCAidW5rbm93biBjaXBoZXIifSwKKyAgICAge0VSUl9SRUFTT04oRVZQX1JfVU5LTk9XTl9ESUdF U1QpLCAidW5rbm93biBkaWdlc3QifSwKKyAgICAge0VSUl9SRUFTT04oRVZQX1JfVU5LTk9XTl9P UFRJT04pLCAidW5rbm93biBvcHRpb24ifSwKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjAvY3J5cHRv L2V2cC9ldnBfbGliLmMuZmlwcyBvcGVuc3NsLTEuMS4wL2NyeXB0by9ldnAvZXZwX2xpYi5jCist LS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vZXZwL2V2cF9saWIuYy5maXBzCTIwMTYtMDgtMjUgMTc6 Mjk6MjAuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZXZwL2V2cF9s aWIuYwkyMDE2LTA5LTA4IDExOjM3OjM4LjczNzQ1OTk4NSArMDIwMAorQEAgLTE4MCw2ICsxODAs OSBAQCBpbnQgRVZQX0NJUEhFUl9pbXBsX2N0eF9zaXplKGNvbnN0IEVWUF9DCisgaW50IEVWUF9D aXBoZXIoRVZQX0NJUEhFUl9DVFggKmN0eCwgdW5zaWduZWQgY2hhciAqb3V0LAorICAgICAgICAg ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBpbnQgaW5sKQorIHsKKysj aWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIEZJUFNfc2VsZnRlc3RfY2hlY2soKTsKKysjZW5kaWYK KyAgICAgcmV0dXJuIGN0eC0+Y2lwaGVyLT5kb19jaXBoZXIoY3R4LCBvdXQsIGluLCBpbmwpOwor IH0KKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2V2cC9tX3NoYTEuYy5maXBzIG9w ZW5zc2wtMS4xLjAvY3J5cHRvL2V2cC9tX3NoYTEuYworLS0tIG9wZW5zc2wtMS4xLjAvY3J5cHRv L2V2cC9tX3NoYTEuYy5maXBzCTIwMTYtMDgtMjUgMTc6Mjk6MjAuMDAwMDAwMDAwICswMjAwCisr Kysgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZXZwL21fc2hhMS5jCTIwMTYtMDktMDggMTE6Mzc6Mzgu NzM3NDU5OTg1ICswMjAwCitAQCAtODksNyArODksNyBAQCBzdGF0aWMgY29uc3QgRVZQX01EIHNo YTFfbWQgPSB7CisgICAgIE5JRF9zaGExLAorICAgICBOSURfc2hhMVdpdGhSU0FFbmNyeXB0aW9u LAorICAgICBTSEFfRElHRVNUX0xFTkdUSCwKKy0gICAgRVZQX01EX0ZMQUdfRElHQUxHSURfQUJT RU5ULAorKyAgICBFVlBfTURfRkxBR19ESUdBTEdJRF9BQlNFTlQgfCBFVlBfTURfRkxBR19GSVBT LAorICAgICBpbml0LAorICAgICB1cGRhdGUsCisgICAgIGZpbmFsLAorQEAgLTEzNCw3ICsxMzQs NyBAQCBzdGF0aWMgY29uc3QgRVZQX01EIHNoYTIyNF9tZCA9IHsKKyAgICAgTklEX3NoYTIyNCwK KyAgICAgTklEX3NoYTIyNFdpdGhSU0FFbmNyeXB0aW9uLAorICAgICBTSEEyMjRfRElHRVNUX0xF TkdUSCwKKy0gICAgRVZQX01EX0ZMQUdfRElHQUxHSURfQUJTRU5ULAorKyAgICBFVlBfTURfRkxB R19ESUdBTEdJRF9BQlNFTlQgfCBFVlBfTURfRkxBR19GSVBTLAorICAgICBpbml0MjI0LAorICAg ICB1cGRhdGUyNTYsCisgICAgIGZpbmFsMjU2LAorQEAgLTE1Myw3ICsxNTMsNyBAQCBzdGF0aWMg Y29uc3QgRVZQX01EIHNoYTI1Nl9tZCA9IHsKKyAgICAgTklEX3NoYTI1NiwKKyAgICAgTklEX3No YTI1NldpdGhSU0FFbmNyeXB0aW9uLAorICAgICBTSEEyNTZfRElHRVNUX0xFTkdUSCwKKy0gICAg RVZQX01EX0ZMQUdfRElHQUxHSURfQUJTRU5ULAorKyAgICBFVlBfTURfRkxBR19ESUdBTEdJRF9B QlNFTlQgfCBFVlBfTURfRkxBR19GSVBTLAorICAgICBpbml0MjU2LAorICAgICB1cGRhdGUyNTYs CisgICAgIGZpbmFsMjU2LAorQEAgLTE5Myw3ICsxOTMsNyBAQCBzdGF0aWMgY29uc3QgRVZQX01E IHNoYTM4NF9tZCA9IHsKKyAgICAgTklEX3NoYTM4NCwKKyAgICAgTklEX3NoYTM4NFdpdGhSU0FF bmNyeXB0aW9uLAorICAgICBTSEEzODRfRElHRVNUX0xFTkdUSCwKKy0gICAgRVZQX01EX0ZMQUdf RElHQUxHSURfQUJTRU5ULAorKyAgICBFVlBfTURfRkxBR19ESUdBTEdJRF9BQlNFTlQgfCBFVlBf TURfRkxBR19GSVBTLAorICAgICBpbml0Mzg0LAorICAgICB1cGRhdGU1MTIsCisgICAgIGZpbmFs NTEyLAorQEAgLTIxMiw3ICsyMTIsNyBAQCBzdGF0aWMgY29uc3QgRVZQX01EIHNoYTUxMl9tZCA9 IHsKKyAgICAgTklEX3NoYTUxMiwKKyAgICAgTklEX3NoYTUxMldpdGhSU0FFbmNyeXB0aW9uLAor ICAgICBTSEE1MTJfRElHRVNUX0xFTkdUSCwKKy0gICAgRVZQX01EX0ZMQUdfRElHQUxHSURfQUJT RU5ULAorKyAgICBFVlBfTURfRkxBR19ESUdBTEdJRF9BQlNFTlQgfCBFVlBfTURfRkxBR19GSVBT LAorICAgICBpbml0NTEyLAorICAgICB1cGRhdGU1MTIsCisgICAgIGZpbmFsNTEyLAorZGlmZiAt dXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9idWlsZC5pbmZvLmZpcHMgb3BlbnNzbC0xLjEu MC9jcnlwdG8vZmlwcy9idWlsZC5pbmZvCistLS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9i dWlsZC5pbmZvLmZpcHMJMjAxNi0wOS0wOCAxMTozNzozOC43Mzc0NTk5ODUgKzAyMDAKKysrKyBv cGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2J1aWxkLmluZm8JMjAxNi0wOS0wOCAxNToyNzoxOS4w MjEwODkxMDggKzAyMDAKK0BAIC0wLDAgKzEsMTUgQEAKKytMSUJTPS4uLy4uL2xpYmNyeXB0bwor K1NPVVJDRVsuLi8uLi9saWJjcnlwdG9dPVwKKysgICAgICAgIGZpcHNfYWVzX3NlbGZ0ZXN0LmMg Zmlwc19kZXNfc2VsZnRlc3QuYyBmaXBzX2htYWNfc2VsZnRlc3QuYyBcCisrICAgICAgICBmaXBz X3JzYV9zZWxmdGVzdC5jIGZpcHNfc2hhX3NlbGZ0ZXN0LmMgZmlwcy5jIGZpcHNfZHNhX3NlbGZ0 ZXN0LmMgXAorKyAgICAgICAgZmlwc19wb3N0LmMgZmlwc19kcmJnX2N0ci5jIGZpcHNfZHJiZ19o YXNoLmMgZmlwc19kcmJnX2htYWMuYyBcCisrICAgICAgICBmaXBzX2RyYmdfbGliLmMgZmlwc19k cmJnX3JhbmQuYyBmaXBzX2RyYmdfc2VsZnRlc3QuYyBmaXBzX3JhbmRfbGliLmMgXAorKyAgICAg ICAgZmlwc19jbWFjX3NlbGZ0ZXN0LmMgZmlwc19lY2RoX3NlbGZ0ZXN0LmMgZmlwc19lY2RzYV9z ZWxmdGVzdC5jIFwKKysgICAgICAgIGZpcHNfZW5jLmMgZmlwc19tZC5jIGZpcHNfZGhfc2VsZnRl c3QuYyBmaXBzX2Vycy5jCisrCisrUFJPR1JBTVNfTk9fSU5TVD1cCisrICAgICAgICAgIGZpcHNf c3RhbmRhbG9uZV9obWFjCisrCisrU09VUkNFW2ZpcHNfc3RhbmRhbG9uZV9obWFjXT1maXBzX3N0 YW5kYWxvbmVfaG1hYy5jCisrSU5DTFVERVtmaXBzX3N0YW5kYWxvbmVfaG1hY109Li4vLi4vaW5j bHVkZQorK0RFUEVORFtmaXBzX3N0YW5kYWxvbmVfaG1hY109Li4vLi4vbGliY3J5cHRvCitkaWZm IC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfYWVzX3NlbGZ0ZXN0LmMuZmlwcyBv cGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfYWVzX3NlbGZ0ZXN0LmMKKy0tLSBvcGVuc3Ns LTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfYWVzX3NlbGZ0ZXN0LmMuZmlwcwkyMDE2LTA5LTA4IDEx OjM3OjM4LjczODQ2MDAwNyArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlw c19hZXNfc2VsZnRlc3QuYwkyMDE2LTA5LTA4IDExOjM3OjM4LjczODQ2MDAwNyArMDIwMAorQEAg LTAsMCArMSwzNzIgQEAKKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAwMyBU aGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlz dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0 aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm b2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1 dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAq ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRo ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK KysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJp YWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBt dXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBw cm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0 CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVu c3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAi T3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBw cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAg ICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFz ZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgorKyAqCisrICogNS4g UHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9w ZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdp dGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJv amVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVy IG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAg ICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNT TCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8v d3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ IFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1Ig SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisr ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI QUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhF TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9U IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7 CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ VElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBU SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysgKi8KKysKKysjaW5jbHVkZSA8 c3RyaW5nLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrI2lmZGVmIE9QRU5TU0xfRklQ UworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrIyBpbmNsdWRlICJpbnRlcm5hbC9maXBz X2ludC5oIgorKyNlbmRpZgorKworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKytzdGF0aWMgY29uc3Qg c3RydWN0IHsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciBrZXlbMTZdOworKyAgICBjb25zdCB1 bnNpZ25lZCBjaGFyIHBsYWludGV4dFsxNl07CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgY2lw aGVydGV4dFsxNl07CisrfSB0ZXN0c1tdID0geworKyAgICB7CisrICAgICAgICB7CisrICAgICAg ICAweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LCAweDA2LCAweDA3LAorKyAgICAg ICAgICAgICAgICAweDA4LCAweDA5LCAweDBBLCAweDBCLCAweDBDLCAweDBELCAweDBFLCAweDBG fSwgeworKyAgICAgICAgMHgwMCwgMHgxMSwgMHgyMiwgMHgzMywgMHg0NCwgMHg1NSwgMHg2Niwg MHg3NywKKysgICAgICAgICAgICAgICAgMHg4OCwgMHg5OSwgMHhBQSwgMHhCQiwgMHhDQywgMHhE RCwgMHhFRSwgMHhGRn0sIHsKKysweDY5LCAweEM0LCAweEUwLCAweEQ4LCAweDZBLCAweDdCLCAw eDA0LCAweDMwLAorKyAgICAgICAgICAgICAgICAweEQ4LCAweENELCAweEI3LCAweDgwLCAweDcw LCAweEI0LCAweEM1LCAweDVBfSx9LH07CisrCisraW50IEZJUFNfc2VsZnRlc3RfYWVzKCkKKyt7 CisrICAgIGludCBuOworKyAgICBpbnQgcmV0ID0gMDsKKysgICAgRVZQX0NJUEhFUl9DVFggKmN0 eDsKKysKKysgICAgY3R4ID0gRVZQX0NJUEhFUl9DVFhfbmV3KCk7CisrICAgIGlmIChjdHggPT0g TlVMTCkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBmb3IgKG4gPSAwOyBuIDwgMTsgKytu KSB7CisrICAgICAgICB1bnNpZ25lZCBjaGFyIGtleVsxNl07CisrCisrICAgICAgICBtZW1jcHko a2V5LCB0ZXN0c1tuXS5rZXksIHNpemVvZihrZXkpKTsKKysgICAgICAgIGlmIChmaXBzX2NpcGhl cl90ZXN0KGN0eCwgRVZQX2Flc18xMjhfZWNiKCksCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBrZXksIE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c1tuXS5w bGFpbnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c1tuXS5jaXBoZXJ0 ZXh0LCAxNikgPD0gMCkKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKyAgICByZXQg PSAxOworKyBlcnI6CisrICAgIEVWUF9DSVBIRVJfQ1RYX2ZyZWUoY3R4KTsKKysgICAgaWYgKHJl dCA9PSAwKQorKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19TRUxGVEVTVF9BRVMsIEZJUFNf Ul9TRUxGVEVTVF9GQUlMRUQpOworKyAgICByZXR1cm4gcmV0OworK30KKysKKysvKiBBRVMtQ0NN IHRlc3QgZGF0YSBmcm9tIE5JU1QgcHVibGljIHRlc3QgdmVjdG9ycyAqLworKworK3N0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGNjbV9rZXlbXSA9IHsKKysgICAgMHhjZSwgMHhiMCwgMHgwOSwg MHhhZSwgMHhhNCwgMHg0NSwgMHg0NCwgMHg1MSwgMHhmZSwgMHhhZCwgMHhmMCwgMHhlNiwKKysg ICAgMHhiMywgMHg2ZiwgMHg0NSwgMHg1NSwgMHg1ZCwgMHhkMCwgMHg0NywgMHgyMywgMHhiYSwg MHhhNCwgMHg0OCwgMHhlOAorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgY2Nt X25vbmNlW10gPSB7CisrICAgIDB4NzYsIDB4NDAsIDB4NDMsIDB4YzQsIDB4OTQsIDB4NjAsIDB4 YjcKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNjbV9hZGF0YVtdID0gewor KyAgICAweDZlLCAweDgwLCAweGRkLCAweDdmLCAweDFiLCAweGFkLCAweGYzLCAweGExLCAweGM5 LCAweGFiLCAweDI1LCAweGM3LAorKyAgICAweDVmLCAweDEwLCAweGJkLCAweGU3LCAweDhjLCAw eDIzLCAweGZhLCAweDBlLCAweGI4LCAweGY5LCAweGFhLCAweGE1LAorKyAgICAweDNhLCAweGRl LCAweGZiLCAweGY0LCAweGNiLCAweGY3LCAweDhmLCAweGU0CisrfTsKKysKKytzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBjY21fcHRbXSA9IHsKKysgICAgMHhjOCwgMHhkMiwgMHg3NSwgMHhm OSwgMHgxOSwgMHhlMSwgMHg3ZCwgMHg3ZiwgMHhlNiwgMHg5YywgMHgyYSwgMHgxZiwKKysgICAg MHg1OCwgMHg5MywgMHg5ZCwgMHhmZSwgMHg0ZCwgMHg0MCwgMHgzNywgMHg5MSwgMHhiNSwgMHhk ZiwgMHgxMywgMHgxMAorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgY2NtX2N0 W10gPSB7CisrICAgIDB4OGEsIDB4MGYsIDB4M2QsIDB4ODIsIDB4MjksIDB4ZTQsIDB4OGUsIDB4 NzQsIDB4ODcsIDB4ZmQsIDB4OTUsIDB4YTIsCisrICAgIDB4OGEsIDB4ZDMsIDB4OTIsIDB4Yzgs IDB4MGIsIDB4MzYsIDB4ODEsIDB4ZDQsIDB4ZmIsIDB4YzcsIDB4YmIsIDB4ZmQKKyt9OworKwor K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNjbV90YWdbXSA9IHsKKysgICAgMHgyZCwgMHhk NiwgMHhlZiwgMHgxYywgMHg0NSwgMHhkNCwgMHhjYywgMHhiNywgMHgyMywgMHhkYywgMHgwNywg MHg0NCwKKysgICAgMHgxNCwgMHhkYiwgMHg1MCwgMHg2ZAorK307CisrCisraW50IEZJUFNfc2Vs ZnRlc3RfYWVzX2NjbSh2b2lkKQorK3sKKysgICAgaW50IHJldCA9IDA7CisrICAgIHVuc2lnbmVk IGNoYXIgb3V0WzEyOF0sIHRhZ1sxNl07CisrICAgIEVWUF9DSVBIRVJfQ1RYICpjdHg7CisrCisr ICAgIGN0eCA9IEVWUF9DSVBIRVJfQ1RYX25ldygpOworKyAgICBpZiAoY3R4ID09IE5VTEwpCisr ICAgICAgICBnb3RvIGVycjsKKysKKysgICAgbWVtc2V0KG91dCwgMCwgc2l6ZW9mKG91dCkpOwor KyAgICBpZiAoIUVWUF9DaXBoZXJJbml0X2V4KGN0eCwgRVZQX2Flc18xOTJfY2NtKCksIE5VTEws IE5VTEwsIE5VTEwsIDEpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICghRVZQX0NJUEhF Ul9DVFhfY3RybChjdHgsIEVWUF9DVFJMX0NDTV9TRVRfSVZMRU4sCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplb2YoY2NtX25vbmNlKSwgTlVMTCkpCisrICAgICAgICBnb3RvIGVy cjsKKysgICAgaWYgKCFFVlBfQ0lQSEVSX0NUWF9jdHJsKGN0eCwgRVZQX0NUUkxfQ0NNX1NFVF9U QUcsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoY2NtX3RhZyksIE5VTEwp KQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICghRVZQX0NpcGhlckluaXRfZXgoY3R4LCBO VUxMLCBOVUxMLCBjY21fa2V5LCBjY21fbm9uY2UsIDEpKQorKyAgICAgICAgZ290byBlcnI7Cisr ICAgIGlmIChFVlBfQ2lwaGVyKGN0eCwgTlVMTCwgTlVMTCwgc2l6ZW9mKGNjbV9wdCkpICE9IHNp emVvZihjY21fcHQpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmIChFVlBfQ2lwaGVyKGN0 eCwgTlVMTCwgY2NtX2FkYXRhLCBzaXplb2YoY2NtX2FkYXRhKSkgPCAwKQorKyAgICAgICAgZ290 byBlcnI7CisrICAgIGlmIChFVlBfQ2lwaGVyKGN0eCwgb3V0LCBjY21fcHQsIHNpemVvZihjY21f cHQpKSAhPSBzaXplb2YoY2NtX2N0KSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBpZiAo IUVWUF9DSVBIRVJfQ1RYX2N0cmwoY3R4LCBFVlBfQ1RSTF9DQ01fR0VUX1RBRywgMTYsIHRhZykp CisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKG1lbWNtcCh0YWcsIGNjbV90YWcsIHNpemVv ZihjY21fdGFnKSkKKysgICAgICAgIHx8IG1lbWNtcChvdXQsIGNjbV9jdCwgc2l6ZW9mKGNjbV9j dCkpKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIG1lbXNldChvdXQsIDAsIHNpemVvZihv dXQpKTsKKysKKysgICAgaWYgKCFFVlBfQ2lwaGVySW5pdF9leChjdHgsIEVWUF9hZXNfMTkyX2Nj bSgpLCBOVUxMLCBOVUxMLCBOVUxMLCAwKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAo IUVWUF9DSVBIRVJfQ1RYX2N0cmwoY3R4LCBFVlBfQ1RSTF9DQ01fU0VUX0lWTEVOLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGNjbV9ub25jZSksIE5VTEwpKQorKyAgICAg ICAgZ290byBlcnI7CisrICAgIGlmICghRVZQX0NJUEhFUl9DVFhfY3RybChjdHgsIEVWUF9DVFJM X0NDTV9TRVRfVEFHLCAxNiwgdGFnKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoIUVW UF9DaXBoZXJJbml0X2V4KGN0eCwgTlVMTCwgTlVMTCwgY2NtX2tleSwgY2NtX25vbmNlLCAwKSkK KysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoRVZQX0NpcGhlcihjdHgsIE5VTEwsIE5VTEws IHNpemVvZihjY21fY3QpKSAhPSBzaXplb2YoY2NtX2N0KSkKKysgICAgICAgIGdvdG8gZXJyOwor KyAgICBpZiAoRVZQX0NpcGhlcihjdHgsIE5VTEwsIGNjbV9hZGF0YSwgc2l6ZW9mKGNjbV9hZGF0 YSkpIDwgMCkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoRVZQX0NpcGhlcihjdHgsIG91 dCwgY2NtX2N0LCBzaXplb2YoY2NtX2N0KSkgIT0gc2l6ZW9mKGNjbV9wdCkpCisrICAgICAgICBn b3RvIGVycjsKKysKKysgICAgaWYgKG1lbWNtcChvdXQsIGNjbV9wdCwgc2l6ZW9mKGNjbV9wdCkp KQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIHJldCA9IDE7CisrCisrIGVycjoKKysgICAg RVZQX0NJUEhFUl9DVFhfZnJlZShjdHgpOworKworKyAgICBpZiAocmV0ID09IDApIHsKKysgICAg ICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfQUVTX0NDTSwgRklQU19SX1NFTEZURVNU X0ZBSUxFRCk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfSBlbHNlCisrICAgICAgICByZXR1 cm4gcmV0OworKworK30KKysKKysvKiBBRVMtR0NNIHRlc3QgZGF0YSBmcm9tIE5JU1QgcHVibGlj IHRlc3QgdmVjdG9ycyAqLworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGdjbV9rZXlb XSA9IHsKKysgICAgMHhlZSwgMHhiYywgMHgxZiwgMHg1NywgMHg0OCwgMHg3ZiwgMHg1MSwgMHg5 MiwgMHgxYywgMHgwNCwgMHg2NSwgMHg2NiwKKysgICAgMHg1ZiwgMHg4YSwgMHhlNiwgMHhkMSwg MHg2NSwgMHg4YiwgMHhiMiwgMHg2ZCwgMHhlNiwgMHhmOCwgMHhhMCwgMHg2OSwKKysgICAgMHhh MywgMHg1MiwgMHgwMiwgMHg5MywgMHhhNSwgMHg3MiwgMHgwNywgMHg4ZgorK307CisrCisrc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZ2NtX2l2W10gPSB7CisrICAgIDB4OTksIDB4YWEsIDB4 M2UsIDB4NjgsIDB4ZWQsIDB4ODEsIDB4NzMsIDB4YTAsIDB4ZWUsIDB4ZDAsIDB4NjYsIDB4ODQK Kyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGdjbV9wdFtdID0geworKyAgICAw eGY1LCAweDZlLCAweDg3LCAweDA1LCAweDViLCAweGMzLCAweDJkLCAweDBlLCAweGViLCAweDMx LCAweGIyLCAweGVhLAorKyAgICAweGNjLCAweDJiLCAweGYyLCAweGE1CisrfTsKKysKKytzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBnY21fYWFkW10gPSB7CisrICAgIDB4NGQsIDB4MjMsIDB4 YzMsIDB4Y2UsIDB4YzMsIDB4MzQsIDB4YjQsIDB4OWIsIDB4ZGIsIDB4MzcsIDB4MGMsIDB4NDMs CisrICAgIDB4N2YsIDB4ZWMsIDB4NzgsIDB4ZGUKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGdjbV9jdFtdID0geworKyAgICAweGY3LCAweDI2LCAweDQ0LCAweDEzLCAweGE4 LCAweDRjLCAweDBlLCAweDdjLCAweGQ1LCAweDM2LCAweDg2LCAweDdlLAorKyAgICAweGI5LCAw eGYyLCAweDE3LCAweDM2CisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBnY21f dGFnW10gPSB7CisrICAgIDB4NjcsIDB4YmEsIDB4MDUsIDB4MTAsIDB4MjYsIDB4MmEsIDB4ZTQs IDB4ODcsIDB4ZDcsIDB4MzcsIDB4ZWUsIDB4NjIsCisrICAgIDB4OTgsIDB4ZjcsIDB4N2UsIDB4 MGMKKyt9OworKworK2ludCBGSVBTX3NlbGZ0ZXN0X2Flc19nY20odm9pZCkKKyt7CisrICAgIGlu dCByZXQgPSAwOworKyAgICB1bnNpZ25lZCBjaGFyIG91dFsxMjhdLCB0YWdbMTZdOworKyAgICBF VlBfQ0lQSEVSX0NUWCAqY3R4OworKworKyAgICBjdHggPSBFVlBfQ0lQSEVSX0NUWF9uZXcoKTsK KysgICAgaWYgKGN0eCA9PSBOVUxMKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIG1lbXNl dChvdXQsIDAsIHNpemVvZihvdXQpKTsKKysgICAgbWVtc2V0KHRhZywgMCwgc2l6ZW9mKHRhZykp OworKyAgICBpZiAoIUVWUF9DaXBoZXJJbml0X2V4KGN0eCwgRVZQX2Flc18yNTZfZ2NtKCksIE5V TEwsIE5VTEwsIE5VTEwsIDEpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICghRVZQX0NJ UEhFUl9DVFhfY3RybChjdHgsIEVWUF9DVFJMX0dDTV9TRVRfSVZMRU4sCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaXplb2YoZ2NtX2l2KSwgTlVMTCkpCisrICAgICAgICBnb3RvIGVy cjsKKysgICAgaWYgKCFFVlBfQ2lwaGVySW5pdF9leChjdHgsIE5VTEwsIE5VTEwsIGdjbV9rZXks IGdjbV9pdiwgMSkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKEVWUF9DaXBoZXIoY3R4 LCBOVUxMLCBnY21fYWFkLCBzaXplb2YoZ2NtX2FhZCkpIDwgMCkKKysgICAgICAgIGdvdG8gZXJy OworKyAgICBpZiAoRVZQX0NpcGhlcihjdHgsIG91dCwgZ2NtX3B0LCBzaXplb2YoZ2NtX3B0KSkg IT0gc2l6ZW9mKGdjbV9jdCkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKEVWUF9DaXBo ZXIoY3R4LCBOVUxMLCBOVUxMLCAwKSA8IDApCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAg aWYgKCFFVlBfQ0lQSEVSX0NUWF9jdHJsKGN0eCwgRVZQX0NUUkxfR0NNX0dFVF9UQUcsIDE2LCB0 YWcpKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIGlmIChtZW1jbXAodGFnLCBnY21fdGFn LCAxNikgfHwgbWVtY21wKG91dCwgZ2NtX2N0LCAxNikpCisrICAgICAgICBnb3RvIGVycjsKKysK KysgICAgbWVtc2V0KG91dCwgMCwgc2l6ZW9mKG91dCkpOworKworKyAgICBpZiAoIUVWUF9DaXBo ZXJJbml0X2V4KGN0eCwgRVZQX2Flc18yNTZfZ2NtKCksIE5VTEwsIE5VTEwsIE5VTEwsIDApKQor KyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICghRVZQX0NJUEhFUl9DVFhfY3RybChjdHgsIEVW UF9DVFJMX0dDTV9TRVRfSVZMRU4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl b2YoZ2NtX2l2KSwgTlVMTCkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFFVlBfQ0lQ SEVSX0NUWF9jdHJsKGN0eCwgRVZQX0NUUkxfR0NNX1NFVF9UQUcsIDE2LCB0YWcpKQorKyAgICAg ICAgZ290byBlcnI7CisrICAgIGlmICghRVZQX0NpcGhlckluaXRfZXgoY3R4LCBOVUxMLCBOVUxM LCBnY21fa2V5LCBnY21faXYsIDApKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmIChFVlBf Q2lwaGVyKGN0eCwgTlVMTCwgZ2NtX2FhZCwgc2l6ZW9mKGdjbV9hYWQpKSA8IDApCisrICAgICAg ICBnb3RvIGVycjsKKysgICAgaWYgKEVWUF9DaXBoZXIoY3R4LCBvdXQsIGdjbV9jdCwgc2l6ZW9m KGdjbV9jdCkpICE9IHNpemVvZihnY21fcHQpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlm IChFVlBfQ2lwaGVyKGN0eCwgTlVMTCwgTlVMTCwgMCkgPCAwKQorKyAgICAgICAgZ290byBlcnI7 CisrCisrICAgIGlmIChtZW1jbXAob3V0LCBnY21fcHQsIDE2KSkKKysgICAgICAgIGdvdG8gZXJy OworKworKyAgICByZXQgPSAxOworKworKyBlcnI6CisrICAgIEVWUF9DSVBIRVJfQ1RYX2ZyZWUo Y3R4KTsKKysKKysgICAgaWYgKHJldCA9PSAwKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9G SVBTX1NFTEZURVNUX0FFU19HQ00sIEZJUFNfUl9TRUxGVEVTVF9GQUlMRUQpOworKyAgICAgICAg cmV0dXJuIDA7CisrICAgIH0gZWxzZQorKyAgICAgICAgcmV0dXJuIHJldDsKKysKKyt9CisrCisr c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgWFRTXzEyOF9rZXlbXSA9IHsKKysgICAgMHhhMSwg MHhiOSwgMHgwYywgMHhiYSwgMHgzZiwgMHgwNiwgMHhhYywgMHgzNSwgMHgzYiwgMHgyYywgMHgz NCwgMHgzOCwKKysgICAgMHg3NiwgMHgwOCwgMHgxNywgMHg2MiwgMHgwOSwgMHgwOSwgMHgyMywg MHgwMiwgMHg2ZSwgMHg5MSwgMHg3NywgMHgxOCwKKysgICAgMHgxNSwgMHhmMiwgMHg5ZCwgMHhh YiwgMHgwMSwgMHg5MywgMHgyZiwgMHgyZgorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgWFRTXzEyOF9pW10gPSB7CisrICAgIDB4NGYsIDB4YWUsIDB4ZjcsIDB4MTEsIDB4N2Ms IDB4ZGEsIDB4NTksIDB4YzYsIDB4NmUsIDB4NGIsIDB4OTIsIDB4MDEsCisrICAgIDB4M2UsIDB4 NzYsIDB4OGEsIDB4ZDUKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFhUU18x MjhfcHRbXSA9IHsKKysgICAgMHhlYiwgMHhhYiwgMHhjZSwgMHg5NSwgMHhiMSwgMHg0ZCwgMHgz YywgMHg4ZCwgMHg2ZiwgMHhiMywgMHg1MCwgMHgzOSwKKysgICAgMHgwNywgMHg5MCwgMHgzMSwg MHgxYworK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgWFRTXzEyOF9jdFtdID0g eworKyAgICAweDc3LCAweDhhLCAweGU4LCAweGI0LCAweDNjLCAweGI5LCAweDhkLCAweDVhLCAw eDgyLCAweDUwLCAweDgxLCAweGQ1LAorKyAgICAweGJlLCAweDQ3LCAweDFjLCAweDYzCisrfTsK KysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBYVFNfMjU2X2tleVtdID0geworKyAgICAw eDFlLCAweGE2LCAweDYxLCAweGM1LCAweDhkLCAweDk0LCAweDNhLCAweDBlLCAweDQ4LCAweDAx LCAweGU0LCAweDJmLAorKyAgICAweDRiLCAweDA5LCAweDQ3LCAweDE0LCAweDllLCAweDdmLCAw eDlmLCAweDhlLCAweDNlLCAweDY4LCAweGQwLCAweGM3LAorKyAgICAweDUwLCAweDUyLCAweDEw LCAweGJkLCAweDMxLCAweDFhLCAweDBlLCAweDdjLCAweGQ2LCAweGUxLCAweDNmLCAweGZkLAor KyAgICAweGYyLCAweDQxLCAweDhkLCAweDhkLCAweDE5LCAweDExLCAweGMwLCAweDA0LCAweGNk LCAweGE1LCAweDhkLCAweGEzLAorKyAgICAweGQ2LCAweDE5LCAweGI3LCAweGUyLCAweGI5LCAw eDE0LCAweDFlLCAweDU4LCAweDMxLCAweDhlLCAweGVhLCAweDM5LAorKyAgICAweDJjLCAweGY0 LCAweDFiLCAweDA4CisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBYVFNfMjU2 X2lbXSA9IHsKKysgICAgMHhhZCwgMHhmOCwgMHhkOSwgMHgyNiwgMHgyNywgMHg0NiwgMHg0YSwg MHhkMiwgMHhmMCwgMHg0MiwgMHg4ZSwgMHg4NCwKKysgICAgMHhhOSwgMHhmOCwgMHg3NSwgMHg2 NAorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgWFRTXzI1Nl9wdFtdID0gewor KyAgICAweDJlLCAweGVkLCAweGVhLCAweDUyLCAweGNkLCAweDgyLCAweDE1LCAweGUxLCAweGFj LCAweGM2LCAweDQ3LCAweGU4LAorKyAgICAweDEwLCAweGJiLCAweGMzLCAweDY0LCAweDJlLCAw eDg3LCAweDI4LCAweDdmLCAweDhkLCAweDJlLCAweDU3LCAweGUzLAorKyAgICAweDZjLCAweDBh LCAweDI0LCAweGZiLCAweGMxLCAweDJhLCAweDIwLCAweDJlCisrfTsKKysKKytzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBYVFNfMjU2X2N0W10gPSB7CisrICAgIDB4Y2IsIDB4YWEsIDB4ZDAs IDB4ZTIsIDB4ZjYsIDB4Y2UsIDB4YTMsIDB4ZjUsIDB4MGIsIDB4MzcsIDB4ZjksIDB4MzQsCisr ICAgIDB4ZDQsIDB4NmEsIDB4OWIsIDB4MTMsIDB4MGIsIDB4OWQsIDB4NTQsIDB4ZjAsIDB4N2Us IDB4MzQsIDB4ZjMsIDB4NmEsCisrICAgIDB4ZjcsIDB4OTMsIDB4ZTgsIDB4NmYsIDB4NzMsIDB4 YzYsIDB4ZDcsIDB4ZGIKKyt9OworKworK2ludCBGSVBTX3NlbGZ0ZXN0X2Flc194dHMoKQorK3sK KysgICAgaW50IHJldCA9IDE7CisrICAgIEVWUF9DSVBIRVJfQ1RYICpjdHg7CisrCisrICAgIGN0 eCA9IEVWUF9DSVBIRVJfQ1RYX25ldygpOworKyAgICBpZiAoY3R4ID09IE5VTEwpCisrICAgICAg ICBnb3RvIGVycjsKKysKKysgICAgaWYgKGZpcHNfY2lwaGVyX3Rlc3QoY3R4LCBFVlBfYWVzXzEy OF94dHMoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgWFRTXzEyOF9rZXksIFhUU18xMjhf aSwgWFRTXzEyOF9wdCwgWFRTXzEyOF9jdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZW9mKFhUU18xMjhfcHQpKSA8PSAwKQorKyAgICAgICAgcmV0ID0gMDsKKysKKysgICAgaWYgKGZp cHNfY2lwaGVyX3Rlc3QoY3R4LCBFVlBfYWVzXzI1Nl94dHMoKSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgWFRTXzI1Nl9rZXksIFhUU18yNTZfaSwgWFRTXzI1Nl9wdCwgWFRTXzI1Nl9jdCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFhUU18yNTZfcHQpKSA8PSAwKQorKyAg ICAgICAgcmV0ID0gMDsKKysKKysgICAgRVZQX0NJUEhFUl9DVFhfZnJlZShjdHgpOworKworKyBl cnI6CisrICAgIGlmIChyZXQgPT0gMCkKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VM RlRFU1RfQUVTX1hUUywgRklQU19SX1NFTEZURVNUX0ZBSUxFRCk7CisrICAgIHJldHVybiByZXQ7 CisrfQorKworKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9maXBz LmMuZmlwcyBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHMuYworLS0tIG9wZW5zc2wtMS4x LjAvY3J5cHRvL2ZpcHMvZmlwcy5jLmZpcHMJMjAxNi0wOS0wOCAxMTozNzozOC43Mzg0NjAwMDcg KzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHMuYwkyMDE2LTA5LTA4IDEx OjM3OjM4LjczODQ2MDAwNyArMDIwMAorQEAgLTAsMCArMSw1MjYgQEAKKysvKiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorKyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0 cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBt ZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3Ry aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo dAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysg KiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNl IG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tu b3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVs b3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNT TCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5h bWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1 c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0 aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZv ciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3Jl QG9wZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29m dHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNT TCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBl cm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0 aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysg KiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3 YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0 aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBU SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycn IEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUg RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysg KiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO Q0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH RVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQg T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RS SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF KQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF LCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu CisrICoKKysgKi8KKysKKysjZGVmaW5lIF9HTlVfU09VUkNFCisrCisrI2luY2x1ZGUgPG9wZW5z c2wvcmFuZC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHNfcmFuZC5oPgorKyNpbmNsdWRlIDxv cGVuc3NsL2Vyci5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2Jpby5oPgorKyNpbmNsdWRlIDxvcGVu c3NsL2htYWMuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KKysjaW5jbHVkZSA8c3RyaW5n Lmg+CisrI2luY2x1ZGUgPGxpbWl0cy5oPgorKyNpbmNsdWRlIDxkbGZjbi5oPgorKyNpbmNsdWRl IDxzdGRpby5oPgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8dW5pc3RkLmg+Cisr I2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgImZpcHNfbG9jbC5oIgorKworKyNpZmRlZiBP UEVOU1NMX0ZJUFMKKysKKysjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorKyMgaW5jbHVkZSAi aW50ZXJuYWwvdGhyZWFkX29uY2UuaCIKKysKKysjIGlmbmRlZiBQQVRIX01BWAorKyMgIGRlZmlu ZSBQQVRIX01BWCAxMDI0CisrIyBlbmRpZgorKworK3N0YXRpYyBpbnQgZmlwc19zZWxmdGVzdF9m YWlsID0gMDsKKytzdGF0aWMgaW50IGZpcHNfbW9kZSA9IDA7Cisrc3RhdGljIGludCBmaXBzX3N0 YXJ0ZWQgPSAwOworKworK3N0YXRpYyBpbnQgZmlwc19pc19vd25pbmdfdGhyZWFkKHZvaWQpOwor K3N0YXRpYyBpbnQgZmlwc19zZXRfb3duaW5nX3RocmVhZCh2b2lkKTsKKytzdGF0aWMgaW50IGZp cHNfY2xlYXJfb3duaW5nX3RocmVhZCh2b2lkKTsKKysKKytzdGF0aWMgQ1JZUFRPX1JXTE9DSyAq Zmlwc19sb2NrID0gTlVMTDsKKytzdGF0aWMgQ1JZUFRPX1JXTE9DSyAqZmlwc19vd25pbmdfbG9j ayA9IE5VTEw7Cisrc3RhdGljIENSWVBUT19PTkNFIGZpcHNfbG9ja19pbml0ID0gQ1JZUFRPX09O Q0VfU1RBVElDX0lOSVQ7CisrCisrREVGSU5FX1JVTl9PTkNFX1NUQVRJQyhkb19maXBzX2xvY2tf aW5pdCkKKyt7CisrICAgIGZpcHNfbG9jayA9IENSWVBUT19USFJFQURfbG9ja19uZXcoKTsKKysg ICAgZmlwc19vd25pbmdfbG9jayA9IENSWVBUT19USFJFQURfbG9ja19uZXcoKTsKKysgICAgcmV0 dXJuIGZpcHNfbG9jayAhPSBOVUxMICYmIGZpcHNfb3duaW5nX2xvY2sgIT0gTlVMTDsKKyt9Cisr CisrIyBkZWZpbmUgZmlwc193X2xvY2soKSAgIENSWVBUT19USFJFQURfd3JpdGVfbG9jayhmaXBz X2xvY2spCisrIyBkZWZpbmUgZmlwc193X3VubG9jaygpIENSWVBUT19USFJFQURfdW5sb2NrKGZp cHNfbG9jaykKKysjIGRlZmluZSBmaXBzX3JfbG9jaygpICAgQ1JZUFRPX1RIUkVBRF9yZWFkX2xv Y2soZmlwc19sb2NrKQorKyMgZGVmaW5lIGZpcHNfcl91bmxvY2soKSBDUllQVE9fVEhSRUFEX3Vu bG9jayhmaXBzX2xvY2spCisrCisrc3RhdGljIHZvaWQgZmlwc19zZXRfbW9kZShpbnQgb25vZmYp CisreworKyAgICBpbnQgb3duaW5nX3RocmVhZCA9IGZpcHNfaXNfb3duaW5nX3RocmVhZCgpOwor KworKyAgICBpZiAoZmlwc19zdGFydGVkKSB7CisrICAgICAgICBpZiAoIW93bmluZ190aHJlYWQp CisrICAgICAgICAgICAgZmlwc193X2xvY2soKTsKKysgICAgICAgIGZpcHNfbW9kZSA9IG9ub2Zm OworKyAgICAgICAgaWYgKCFvd25pbmdfdGhyZWFkKQorKyAgICAgICAgICAgIGZpcHNfd191bmxv Y2soKTsKKysgICAgfQorK30KKysKKytpbnQgRklQU19tb2R1bGVfbW9kZSh2b2lkKQorK3sKKysg ICAgaW50IHJldCA9IDA7CisrICAgIGludCBvd25pbmdfdGhyZWFkID0gZmlwc19pc19vd25pbmdf dGhyZWFkKCk7CisrCisrICAgIGlmIChmaXBzX3N0YXJ0ZWQpIHsKKysgICAgICAgIGlmICghb3du aW5nX3RocmVhZCkKKysgICAgICAgICAgICBmaXBzX3JfbG9jaygpOworKyAgICAgICAgcmV0ID0g Zmlwc19tb2RlOworKyAgICAgICAgaWYgKCFvd25pbmdfdGhyZWFkKQorKyAgICAgICAgICAgIGZp cHNfcl91bmxvY2soKTsKKysgICAgfQorKyAgICByZXR1cm4gcmV0OworK30KKysKKysvKiBqdXN0 IGEgY29tcGF0IHN5bWJvbCAtIHJldHVybiBOVUxMICovCisraW50IEZJUFNfc2VsZnRlc3RfZmFp bGVkKHZvaWQpCisreworKyAgICBpbnQgcmV0ID0gMDsKKysgICAgaWYgKGZpcHNfc3RhcnRlZCkg eworKyAgICAgICAgaW50IG93bmluZ190aHJlYWQgPSBmaXBzX2lzX293bmluZ190aHJlYWQoKTsK KysKKysgICAgICAgIGlmICghb3duaW5nX3RocmVhZCkKKysgICAgICAgICAgICBmaXBzX3JfbG9j aygpOworKyAgICAgICAgcmV0ID0gZmlwc19zZWxmdGVzdF9mYWlsOworKyAgICAgICAgaWYgKCFv d25pbmdfdGhyZWFkKQorKyAgICAgICAgICAgIGZpcHNfcl91bmxvY2soKTsKKysgICAgfQorKyAg ICByZXR1cm4gcmV0OworK30KKysKKysvKiBTZWxmdGVzdCBmYWlsdXJlIGZhdGFsIGV4aXQgcm91 dGluZS4gVGhpcyB3aWxsIGJlIGNhbGxlZAorKyAqIGR1cmluZyAqYW55KiBjcnlwdG9ncmFwaGlj IG9wZXJhdGlvbi4gSXQgaGFzIHRoZSBtaW5pbXVtCisrICogb3ZlcmhlYWQgcG9zc2libGUgdG8g YXZvaWQgdG9vIGJpZyBhIHBlcmZvcm1hbmNlIGhpdC4KKysgKi8KKysKKyt2b2lkIEZJUFNfc2Vs ZnRlc3RfY2hlY2sodm9pZCkKKyt7CisrICAgIGlmIChmaXBzX3NlbGZ0ZXN0X2ZhaWwpIHsKKysg ICAgICAgIE9wZW5TU0xEaWUoX19GSUxFX18sIF9fTElORV9fLCAiRkFUQUwgRklQUyBTRUxGVEVT VCBGQUlMVVJFIik7CisrICAgIH0KKyt9CisrCisrdm9pZCBmaXBzX3NldF9zZWxmdGVzdF9mYWls KHZvaWQpCisreworKyAgICBmaXBzX3NlbGZ0ZXN0X2ZhaWwgPSAxOworK30KKysKKysvKiB3ZSBp bXBsZW1lbnQgd2hhdCBsaWJmaXBzY2hlY2sgZG9lcyBvdXJzZWx2ZXMgKi8KKysKKytzdGF0aWMg aW50CisrZ2V0X2xpYnJhcnlfcGF0aChjb25zdCBjaGFyICpsaWJuYW1lLCBjb25zdCBjaGFyICpz eW1ib2xuYW1lLCBjaGFyICpwYXRoLAorKyAgICAgICAgICAgICAgICAgc2l6ZV90IHBhdGhsZW4p CisreworKyAgICBEbF9pbmZvIGluZm87CisrICAgIHZvaWQgKmRsLCAqc3ltOworKyAgICBpbnQg cnYgPSAtMTsKKysKKysgICAgZGwgPSBkbG9wZW4obGlibmFtZSwgUlRMRF9MQVpZKTsKKysgICAg aWYgKGRsID09IE5VTEwpIHsKKysgICAgICAgIHJldHVybiAtMTsKKysgICAgfQorKworKyAgICBz eW0gPSBkbHN5bShkbCwgc3ltYm9sbmFtZSk7CisrCisrICAgIGlmIChzeW0gIT0gTlVMTCAmJiBk bGFkZHIoc3ltLCAmaW5mbykpIHsKKysgICAgICAgIHN0cm5jcHkocGF0aCwgaW5mby5kbGlfZm5h bWUsIHBhdGhsZW4gLSAxKTsKKysgICAgICAgIHBhdGhbcGF0aGxlbiAtIDFdID0gJ1wwJzsKKysg ICAgICAgIHJ2ID0gMDsKKysgICAgfQorKworKyAgICBkbGNsb3NlKGRsKTsKKysKKysgICAgcmV0 dXJuIHJ2OworK30KKysKKytzdGF0aWMgY29uc3QgY2hhciBjb252W10gPSAiMDEyMzQ1Njc4OWFi Y2RlZiI7CisrCisrc3RhdGljIGNoYXIgKmJpbjJoZXgodm9pZCAqYnVmLCBzaXplX3QgbGVuKQor K3sKKysgICAgY2hhciAqaGV4LCAqcDsKKysgICAgdW5zaWduZWQgY2hhciAqc3JjID0gYnVmOwor KworKyAgICBoZXggPSBtYWxsb2MobGVuICogMiArIDEpOworKyAgICBpZiAoaGV4ID09IE5VTEwp CisrICAgICAgICByZXR1cm4gTlVMTDsKKysKKysgICAgcCA9IGhleDsKKysKKysgICAgd2hpbGUg KGxlbiA+IDApIHsKKysgICAgICAgIHVuc2lnbmVkIGM7CisrCisrICAgICAgICBjID0gKnNyYzsK KysgICAgICAgIHNyYysrOworKworKyAgICAgICAgKnAgPSBjb252W2MgPj4gNF07CisrICAgICAg ICArK3A7CisrICAgICAgICAqcCA9IGNvbnZbYyAmIDB4MGZdOworKyAgICAgICAgKytwOworKyAg ICAgICAgLS1sZW47CisrICAgIH0KKysgICAgKnAgPSAnXDAnOworKyAgICByZXR1cm4gaGV4Owor K30KKysKKysjIGRlZmluZSBITUFDX1BSRUZJWCAiLiIKKysjIGlmbmRlZiBITUFDX1NVRkZJWAor KyMgIGRlZmluZSBITUFDX1NVRkZJWCAiLmhtYWMiCisrIyBlbmRpZgorKyMgZGVmaW5lIFJFQURf QlVGRkVSX0xFTkdUSCAxNjM4NAorKworK3N0YXRpYyBjaGFyICptYWtlX2htYWNfcGF0aChjb25z dCBjaGFyICpvcmlncGF0aCkKKyt7CisrICAgIGNoYXIgKnBhdGgsICpwOworKyAgICBjb25zdCBj aGFyICpmbjsKKysKKysgICAgcGF0aCA9CisrICAgICAgICBtYWxsb2Moc2l6ZW9mKEhNQUNfUFJF RklYKSArIHNpemVvZihITUFDX1NVRkZJWCkgKyBzdHJsZW4ob3JpZ3BhdGgpKTsKKysgICAgaWYg KHBhdGggPT0gTlVMTCkgeworKyAgICAgICAgcmV0dXJuIE5VTEw7CisrICAgIH0KKysKKysgICAg Zm4gPSBzdHJyY2hyKG9yaWdwYXRoLCAnLycpOworKyAgICBpZiAoZm4gPT0gTlVMTCkgeworKyAg ICAgICAgZm4gPSBvcmlncGF0aDsKKysgICAgfSBlbHNlIHsKKysgICAgICAgICsrZm47CisrICAg IH0KKysKKysgICAgc3RybmNweShwYXRoLCBvcmlncGF0aCwgZm4gLSBvcmlncGF0aCk7CisrICAg IHAgPSBwYXRoICsgKGZuIC0gb3JpZ3BhdGgpOworKyAgICBwID0gc3RwY3B5KHAsIEhNQUNfUFJF RklYKTsKKysgICAgcCA9IHN0cGNweShwLCBmbik7CisrICAgIHAgPSBzdHBjcHkocCwgSE1BQ19T VUZGSVgpOworKworKyAgICByZXR1cm4gcGF0aDsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIg aG1hY2tleVtdID0gIm9yYm9EZUpJVElUZWpzaXJwQURPTml2aXJwVWt2YXJQIjsKKysKKytzdGF0 aWMgaW50IGNvbXB1dGVfZmlsZV9obWFjKGNvbnN0IGNoYXIgKnBhdGgsIHZvaWQgKipidWYsIHNp emVfdCAqaG1hY2xlbikKKyt7CisrICAgIEZJTEUgKmYgPSBOVUxMOworKyAgICBpbnQgcnYgPSAt MTsKKysgICAgdW5zaWduZWQgY2hhciByYnVmW1JFQURfQlVGRkVSX0xFTkdUSF07CisrICAgIHNp emVfdCBsZW47CisrICAgIHVuc2lnbmVkIGludCBobGVuOworKyAgICBITUFDX0NUWCAqYzsKKysK KysgICAgYyA9IEhNQUNfQ1RYX25ldygpOworKyAgICBpZiAoYyA9PSBOVUxMKQorKyAgICAgICAg cmV0dXJuIHJ2OworKworKyAgICBmID0gZm9wZW4ocGF0aCwgInIiKTsKKysKKysgICAgaWYgKGYg PT0gTlVMTCkgeworKyAgICAgICAgZ290byBlbmQ7CisrICAgIH0KKysKKysgICAgaWYgKEhNQUNf SW5pdF9leChjLCBobWFja2V5LCBzaXplb2YoaG1hY2tleSkgLSAxLCBFVlBfc2hhMjU2KCksIE5V TEwpIDw9IDApIHsKKysgICAgICAgIGdvdG8gZW5kOworKyAgICB9CisrCisrICAgIHdoaWxlICgo bGVuID0gZnJlYWQocmJ1ZiwgMSwgc2l6ZW9mKHJidWYpLCBmKSkgIT0gMCkgeworKyAgICAgICAg aWYgKEhNQUNfVXBkYXRlKGMsIHJidWYsIGxlbikgPD0gMCkgeworKyAgICAgICAgICAgIGdvdG8g ZW5kOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIGxlbiA9IHNpemVvZihyYnVmKTsKKysg ICAgLyogcmV1c2UgcmJ1ZiBmb3IgaG1hYyAqLworKyAgICBpZiAoSE1BQ19GaW5hbChjLCByYnVm LCAmaGxlbikgPD0gMCkgeworKyAgICAgICAgZ290byBlbmQ7CisrICAgIH0KKysKKysgICAgKmJ1 ZiA9IG1hbGxvYyhobGVuKTsKKysgICAgaWYgKCpidWYgPT0gTlVMTCkgeworKyAgICAgICAgZ290 byBlbmQ7CisrICAgIH0KKysKKysgICAgKmhtYWNsZW4gPSBobGVuOworKworKyAgICBtZW1jcHko KmJ1ZiwgcmJ1ZiwgaGxlbik7CisrCisrICAgIHJ2ID0gMDsKKysgZW5kOgorKyAgICBITUFDX0NU WF9mcmVlKGMpOworKworKyAgICBpZiAoZikKKysgICAgICAgIGZjbG9zZShmKTsKKysKKysgICAg cmV0dXJuIHJ2OworK30KKysKKytzdGF0aWMgaW50IEZJUFNDSEVDS192ZXJpZnkoY29uc3QgY2hh ciAqcGF0aCkKKyt7CisrICAgIGludCBydiA9IDA7CisrICAgIEZJTEUgKmhmOworKyAgICBjaGFy ICpobWFjcGF0aCwgKnA7CisrICAgIGNoYXIgKmhtYWMgPSBOVUxMOworKyAgICBzaXplX3QgbjsK KysKKysgICAgaG1hY3BhdGggPSBtYWtlX2htYWNfcGF0aChwYXRoKTsKKysgICAgaWYgKGhtYWNw YXRoID09IE5VTEwpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgaGYgPSBmb3BlbihobWFj cGF0aCwgInIiKTsKKysgICAgaWYgKGhmID09IE5VTEwpIHsKKysgICAgICAgIGZyZWUoaG1hY3Bh dGgpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKysgICAgaWYgKGdldGxpbmUoJmht YWMsICZuLCBoZikgPiAwKSB7CisrICAgICAgICB2b2lkICpidWY7CisrICAgICAgICBzaXplX3Qg aG1hY2xlbjsKKysgICAgICAgIGNoYXIgKmhleDsKKysKKysgICAgICAgIGlmICgocCA9IHN0cmNo cihobWFjLCAnXG4nKSkgIT0gTlVMTCkKKysgICAgICAgICAgICAqcCA9ICdcMCc7CisrCisrICAg ICAgICBpZiAoY29tcHV0ZV9maWxlX2htYWMocGF0aCwgJmJ1ZiwgJmhtYWNsZW4pIDwgMCkgewor KyAgICAgICAgICAgIHJ2ID0gLTQ7CisrICAgICAgICAgICAgZ290byBlbmQ7CisrICAgICAgICB9 CisrCisrICAgICAgICBpZiAoKGhleCA9IGJpbjJoZXgoYnVmLCBobWFjbGVuKSkgPT0gTlVMTCkg eworKyAgICAgICAgICAgIGZyZWUoYnVmKTsKKysgICAgICAgICAgICBydiA9IC01OworKyAgICAg ICAgICAgIGdvdG8gZW5kOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKHN0cmNtcChoZXgs IGhtYWMpICE9IDApIHsKKysgICAgICAgICAgICBydiA9IC0xOworKyAgICAgICAgfQorKyAgICAg ICAgZnJlZShidWYpOworKyAgICAgICAgZnJlZShoZXgpOworKyAgICB9IGVsc2UgeworKyAgICAg ICAgcnYgPSAtMTsKKysgICAgfQorKworKyBlbmQ6CisrICAgIGZyZWUoaG1hYyk7CisrICAgIGZy ZWUoaG1hY3BhdGgpOworKyAgICBmY2xvc2UoaGYpOworKworKyAgICBpZiAocnYgPCAwKQorKyAg ICAgICAgcmV0dXJuIDA7CisrCisrICAgIC8qIGNoZWNrIHN1Y2Nlc3NmdWwgKi8KKysgICAgcmV0 dXJuIDE7CisrfQorKworK3N0YXRpYyBpbnQgdmVyaWZ5X2NoZWNrc3Vtcyh2b2lkKQorK3sKKysg ICAgaW50IHJ2OworKyAgICBjaGFyIHBhdGhbUEFUSF9NQVggKyAxXTsKKysgICAgY2hhciAqcDsK KysKKysgICAgLyogd2UgbmVlZCB0byBhdm9pZCBkbG9wZW5pbmcgbGlic3NsLCBhc3N1bWUgYm90 aCBsaWJjcnlwdG8gYW5kIGxpYnNzbAorKyAgICAgICBhcmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5 ICovCisrCisrICAgIHJ2ID0gZ2V0X2xpYnJhcnlfcGF0aCgibGliY3J5cHRvLnNvLiIgU0hMSUJf VkVSU0lPTl9OVU1CRVIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAiRklQU19tb2RlX3Nl dCIsIHBhdGgsIHNpemVvZihwYXRoKSk7CisrICAgIGlmIChydiA8IDApCisrICAgICAgICByZXR1 cm4gMDsKKysKKysgICAgcnYgPSBGSVBTQ0hFQ0tfdmVyaWZ5KHBhdGgpOworKyAgICBpZiAoIXJ2 KQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrICAgIC8qIHJlcGxhY2UgbGliY3J5cHRvIHdpdGgg bGlic3NsICovCisrICAgIHdoaWxlICgocCA9IHN0cnN0cihwYXRoLCAibGliY3J5cHRvLnNvIikp ICE9IE5VTEwpIHsKKysgICAgICAgIHAgPSBzdHBjcHkocCwgImxpYnNzbCIpOworKyAgICAgICAg bWVtbW92ZShwLCBwICsgMywgc3RybGVuKHAgKyAyKSk7CisrICAgIH0KKysKKysgICAgcnYgPSBG SVBTQ0hFQ0tfdmVyaWZ5KHBhdGgpOworKyAgICBpZiAoIXJ2KQorKyAgICAgICAgcmV0dXJuIDA7 CisrICAgIHJldHVybiAxOworK30KKysKKysjIGlmbmRlZiBGSVBTX01PRFVMRV9QQVRICisrIyAg ZGVmaW5lIEZJUFNfTU9EVUxFX1BBVEggIi9ldGMvc3lzdGVtLWZpcHMiCisrIyBlbmRpZgorKwor K2ludCBGSVBTX21vZHVsZV9pbnN0YWxsZWQodm9pZCkKKyt7CisrICAgIGludCBydjsKKysgICAg cnYgPSBhY2Nlc3MoRklQU19NT0RVTEVfUEFUSCwgRl9PSyk7CisrICAgIGlmIChydiA8IDAgJiYg ZXJybm8gIT0gRU5PRU5UKQorKyAgICAgICAgcnYgPSAwOworKworKyAgICAvKiBJbnN0YWxsZWQg PT0gdHJ1ZSAqLworKyAgICByZXR1cm4gIXJ2OworK30KKysKKytpbnQgRklQU19tb2R1bGVfbW9k ZV9zZXQoaW50IG9ub2ZmKQorK3sKKysgICAgaW50IHJldCA9IDA7CisrCisrICAgIGlmICghUlVO X09OQ0UoJmZpcHNfbG9ja19pbml0LCBkb19maXBzX2xvY2tfaW5pdCkpCisrICAgICAgICByZXR1 cm4gTlVMTDsKKysKKysgICAgZmlwc193X2xvY2soKTsKKysgICAgZmlwc19zdGFydGVkID0gMTsK KysgICAgZmlwc19zZXRfb3duaW5nX3RocmVhZCgpOworKworKyAgICBpZiAob25vZmYpIHsKKysK KysgICAgICAgIGZpcHNfc2VsZnRlc3RfZmFpbCA9IDA7CisrCisrICAgICAgICAvKiBEb24ndCBn byBpbnRvIEZJUFMgbW9kZSB0d2ljZSwganVzdCBzbyB3ZSBjYW4gZG8gYXV0b21hZ2ljCisrICAg ICAgICAgICBzZWVkaW5nICovCisrICAgICAgICBpZiAoRklQU19tb2R1bGVfbW9kZSgpKSB7Cisr ICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19NT0RVTEVfTU9ERV9TRVQsCisrICAgICAg ICAgICAgICAgICAgICBGSVBTX1JfRklQU19NT0RFX0FMUkVBRFlfU0VUKTsKKysgICAgICAgICAg ICBmaXBzX3NlbGZ0ZXN0X2ZhaWwgPSAxOworKyAgICAgICAgICAgIHJldCA9IDA7CisrICAgICAg ICAgICAgZ290byBlbmQ7CisrICAgICAgICB9CisrIyBpZmRlZiBPUEVOU1NMX0lBMzJfU1NFMgor KyAgICAgICAgeworKyAgICAgICAgICAgIGV4dGVybiB1bnNpZ25lZCBpbnQgT1BFTlNTTF9pYTMy Y2FwX1BbMl07CisrICAgICAgICAgICAgaWYgKChPUEVOU1NMX2lhMzJjYXBfUFswXSAmICgxIDw8 IDI1IHwgMSA8PCAyNikpICE9CisrICAgICAgICAgICAgICAgICgxIDw8IDI1IHwgMSA8PCAyNikp IHsKKysgICAgICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19NT0RVTEVfTU9ERV9TRVQs CisrICAgICAgICAgICAgICAgICAgICAgICAgRklQU19SX1VOU1VQUE9SVEVEX1BMQVRGT1JNKTsK KysgICAgICAgICAgICAgICAgZmlwc19zZWxmdGVzdF9mYWlsID0gMTsKKysgICAgICAgICAgICAg ICAgcmV0ID0gMDsKKysgICAgICAgICAgICAgICAgZ290byBlbmQ7CisrICAgICAgICAgICAgfQor KyAgICAgICAgfQorKyMgZW5kaWYKKysKKysgICAgICAgIGlmICghRklQU19zZWxmdGVzdCgpKSB7 CisrICAgICAgICAgICAgZmlwc19zZWxmdGVzdF9mYWlsID0gMTsKKysgICAgICAgICAgICByZXQg PSAwOworKyAgICAgICAgICAgIGdvdG8gZW5kOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYg KCF2ZXJpZnlfY2hlY2tzdW1zKCkpIHsKKysgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBT X01PRFVMRV9NT0RFX1NFVCwKKysgICAgICAgICAgICAgICAgICAgIEZJUFNfUl9GSU5HRVJQUklO VF9ET0VTX05PVF9NQVRDSCk7CisrICAgICAgICAgICAgZmlwc19zZWxmdGVzdF9mYWlsID0gMTsK KysgICAgICAgICAgICByZXQgPSAwOworKyAgICAgICAgICAgIGdvdG8gZW5kOworKyAgICAgICAg fQorKworKyAgICAgICAgZmlwc19zZXRfbW9kZShvbm9mZik7CisrICAgICAgICByZXQgPSAxOwor KyAgICAgICAgZ290byBlbmQ7CisrICAgIH0KKysgICAgZmlwc19zZXRfbW9kZSgwKTsKKysgICAg Zmlwc19zZWxmdGVzdF9mYWlsID0gMDsKKysgICAgcmV0ID0gMTsKKysgZW5kOgorKyAgICBmaXBz X2NsZWFyX293bmluZ190aHJlYWQoKTsKKysgICAgZmlwc193X3VubG9jaygpOworKyAgICByZXR1 cm4gcmV0OworK30KKysKKytzdGF0aWMgQ1JZUFRPX1RIUkVBRF9JRCBmaXBzX3RocmVhZGlkOwor K3N0YXRpYyBpbnQgZmlwc190aHJlYWRfc2V0ID0gMDsKKysKKytzdGF0aWMgaW50IGZpcHNfaXNf b3duaW5nX3RocmVhZCh2b2lkKQorK3sKKysgICAgaW50IHJldCA9IDA7CisrCisrICAgIGlmIChm aXBzX3N0YXJ0ZWQpIHsKKysgICAgICAgIENSWVBUT19USFJFQURfcmVhZF9sb2NrKGZpcHNfb3du aW5nX2xvY2spOworKyAgICAgICAgaWYgKGZpcHNfdGhyZWFkX3NldCkgeworKyAgICAgICAgICAg IENSWVBUT19USFJFQURfSUQgY3VyID0gQ1JZUFRPX1RIUkVBRF9nZXRfY3VycmVudF9pZCgpOwor KyAgICAgICAgICAgIGlmIChDUllQVE9fVEhSRUFEX2NvbXBhcmVfaWQoZmlwc190aHJlYWRpZCwg Y3VyKSkKKysgICAgICAgICAgICAgICAgcmV0ID0gMTsKKysgICAgICAgIH0KKysgICAgICAgIENS WVBUT19USFJFQURfdW5sb2NrKGZpcHNfb3duaW5nX2xvY2spOworKyAgICB9CisrICAgIHJldHVy biByZXQ7CisrfQorKworK2ludCBmaXBzX3NldF9vd25pbmdfdGhyZWFkKHZvaWQpCisreworKyAg ICBpbnQgcmV0ID0gMDsKKysKKysgICAgaWYgKGZpcHNfc3RhcnRlZCkgeworKyAgICAgICAgQ1JZ UFRPX1RIUkVBRF93cml0ZV9sb2NrKGZpcHNfb3duaW5nX2xvY2spOworKyAgICAgICAgaWYgKCFm aXBzX3RocmVhZF9zZXQpIHsKKysgICAgICAgICAgICBmaXBzX3RocmVhZGlkID0gQ1JZUFRPX1RI UkVBRF9nZXRfY3VycmVudF9pZCgpOworKyAgICAgICAgICAgIHJldCA9IDE7CisrICAgICAgICAg ICAgZmlwc190aHJlYWRfc2V0ID0gMTsKKysgICAgICAgIH0KKysgICAgICAgIENSWVBUT19USFJF QURfdW5sb2NrKGZpcHNfb3duaW5nX2xvY2spOworKyAgICB9CisrICAgIHJldHVybiByZXQ7Cisr fQorKworK2ludCBmaXBzX2NsZWFyX293bmluZ190aHJlYWQodm9pZCkKKyt7CisrICAgIGludCBy ZXQgPSAwOworKworKyAgICBpZiAoZmlwc19zdGFydGVkKSB7CisrICAgICAgICBDUllQVE9fVEhS RUFEX3dyaXRlX2xvY2soZmlwc19vd25pbmdfbG9jayk7CisrICAgICAgICBpZiAoZmlwc190aHJl YWRfc2V0KSB7CisrICAgICAgICAgICAgQ1JZUFRPX1RIUkVBRF9JRCBjdXIgPSBDUllQVE9fVEhS RUFEX2dldF9jdXJyZW50X2lkKCk7CisrICAgICAgICAgICAgaWYgKENSWVBUT19USFJFQURfY29t cGFyZV9pZChmaXBzX3RocmVhZGlkLCBjdXIpKQorKyAgICAgICAgICAgICAgICBmaXBzX3RocmVh ZF9zZXQgPSAwOworKyAgICAgICAgfQorKyAgICAgICAgQ1JZUFRPX1RIUkVBRF91bmxvY2soZmlw c19vd25pbmdfbG9jayk7CisrICAgIH0KKysgICAgcmV0dXJuIHJldDsKKyt9CisrCisrI2VuZGlm CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfY21hY19zZWxmdGVzdC5j LmZpcHMgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9maXBzX2NtYWNfc2VsZnRlc3QuYworLS0t IG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19jbWFjX3NlbGZ0ZXN0LmMuZmlwcwkyMDE2 LTA5LTA4IDExOjM3OjM4LjczODQ2MDAwNyArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAvY3J5cHRv L2ZpcHMvZmlwc19jbWFjX3NlbGZ0ZXN0LmMJMjAxNi0wOS0wOCAxMTozNzozOC43Mzg0NjAwMDcg KzAyMDAKK0BAIC0wLDAgKzEsMTU2IEBACisrLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmlnaHQg KGMpIDIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoK KysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3 aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0OgorKyAqCisrICogMS4g UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5 cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nIGRpc2NsYWltZXIuIAorKyAqCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4K KysgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk IHdpdGggdGhlCisrICogICAgZGlzdHJpYnV0aW9uLgorKyAqCisrICogMy4gQWxsIGFkdmVydGlz aW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisrICogICAg c29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisrICog ICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5T U0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6 Ly93d3cub3BlbnNzbC5vcmcvKSIKKysgKgorKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29s a2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAgIGVu ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo b3V0CisrICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNz aW9uLCBwbGVhc2UgY29udGFjdAorKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KKysg KgorKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUg Y2FsbGVkICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVp ciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBP cGVuU1NMIFByb2plY3QuCisrICoKKysgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0g d2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisrICogICAgYWNrbm93bGVkZ21l bnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkg dGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtp dCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisrICogRVhQ UkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg VE8sIFRIRQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO TyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisrICogSVRTIENPTlRSSUJVVE9S UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKyAqIFNQ RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV VAorKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S IFNFUlZJQ0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT UyBJTlRFUlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9S IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElO IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE CisrICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqCisrICovCisrCisr I2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorKyNpbmNsdWRl IDxvcGVuc3NsL2ZpcHMuaD4KKysjaW5jbHVkZSAiaW50ZXJuYWwvZmlwc19pbnQuaCIKKysjaW5j bHVkZSA8b3BlbnNzbC9jbWFjLmg+CisrI2luY2x1ZGUgImZpcHNfbG9jbC5oIgorKworKyNpZmRl ZiBPUEVOU1NMX0ZJUFMKKyt0eXBlZGVmIHN0cnVjdCB7CisrICAgIGludCBuaWQ7CisrICAgIGNv bnN0IHVuc2lnbmVkIGNoYXIga2V5W0VWUF9NQVhfS0VZX0xFTkdUSF07CisrICAgIHNpemVfdCBr ZXlzaXplOworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIG1zZ1s2NF07CisrICAgIHNpemVfdCBt c2dzaXplOworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIG1hY1szMl07CisrICAgIHNpemVfdCBt YWNzaXplOworK30gQ01BQ19LQVQ7CisrCisrLyogZnJvbSBodHRwOi8vY3NyYy5uaXN0Lmdvdi9w dWJsaWNhdGlvbnMvbmlzdHB1YnMvODAwLTM4Qi9TUF84MDAtMzhCLnBkZiAqLworK3N0YXRpYyBj b25zdCBDTUFDX0tBVCB2ZWN0b3JbXSA9IHsKKysgICAge05JRF9hZXNfMTI4X2NiYywgICAgICAg ICAgIC8qIENvdW50ID0gMzIgZnJvbSBDTUFDR2VuQUVTMTI4LnR4dCAqLworKyAgICAgezB4Nzcs IDB4YTcsIDB4N2YsIDB4YWYsIDB4MjksIDB4MGMsIDB4MWYsIDB4YTMsCisrICAgICAgMHgwYywg MHg2OCwgMHgzZCwgMHhmMSwgMHg2YiwgMHhhNywgMHhhNywgMHg3Yix9LCAxMjgsCisrICAgICB7 MHgwMiwgMHgwNiwgMHg4MywgMHhlMSwgMHhmMCwgMHgzOSwgMHgyZiwgMHg0YywKKysgICAgICAw eGFjLCAweDU0LCAweDMxLCAweDhiLCAweDYwLCAweDI5LCAweDI1LCAweDllLAorKyAgICAgIDB4 OWMsIDB4NTUsIDB4M2QsIDB4YmMsIDB4NGIsIDB4NmEsIDB4ZDksIDB4OTgsCisrICAgICAgMHhl NiwgMHg0ZCwgMHg1OCwgMHhlNCwgMHhlNywgMHhkYywgMHgyZSwgMHgxMyx9LCAyNTYsCisrICAg ICB7MHhmYiwgMHhmZSwgMHhhNCwgMHgxYix9LCAzMn0sCisrICAgIHtOSURfYWVzXzE5Ml9jYmMs ICAgICAgICAgICAvKiBDb3VudCA9IDIzIGZyb20gQ01BQ0dlbkFFUzE5Mi50eHQgKi8KKysgICAg IHsweDdiLCAweDMyLCAweDM5LCAweDEzLCAweDY5LCAweGFhLCAweDRjLCAweGE5LAorKyAgICAg IDB4NzUsIDB4NTgsIDB4MDksIDB4NWIsIDB4ZTMsIDB4YzMsIDB4ZWMsIDB4ODYsCisrICAgICAg MHgyYiwgMHhkMCwgMHg1NywgMHhjZSwgMHhmMSwgMHhlMywgMHgyZCwgMHg2Mix9LCAxOTIsCisr ICAgICB7MHgwfSwgMCwKKysgICAgIHsweGU0LCAweGQ5LCAweDM0LCAweDBiLCAweDAzLCAweGU2 LCAweDdkLCAweGVmLAorKyAgICAgIDB4ZDQsIDB4OTYsIDB4OWMsIDB4YzEsIDB4ZWQsIDB4Mzcs IDB4MzUsIDB4ZTYsfSwgMTI4LAorKyAgICAgfSwKKysgICAge05JRF9hZXNfMjU2X2NiYywgICAg ICAgICAgIC8qIENvdW50ID0gMzMgZnJvbSBDTUFDR2VuQUVTMjU2LnR4dCAqLworKyAgICAgezB4 MGIsIDB4MTIsIDB4MmEsIDB4YzgsIDB4ZjMsIDB4NGUsIDB4ZDEsIDB4ZmUsCisrICAgICAgMHgw OCwgMHgyYSwgMHgzNiwgMHgyNSwgMHhkMSwgMHg1NywgMHg1NiwgMHgxNCwKKysgICAgICAweDU0 LCAweDE2LCAweDdhLCAweGMxLCAweDQ1LCAweGExLCAweDBiLCAweGJmLAorKyAgICAgIDB4Nzcs IDB4YzYsIDB4YTcsIDB4MDUsIDB4OTYsIDB4ZDUsIDB4NzQsIDB4ZjEsfSwgMjU2LAorKyAgICAg ezB4NDksIDB4OGIsIDB4NTMsIDB4ZmQsIDB4ZWMsIDB4ODcsIDB4ZWQsIDB4Y2IsCisrICAgICAg MHhmMCwgMHg3MCwgMHg5NywgMHhkYywgMHhjZCwgMHhlOSwgMHgzYSwgMHgwOCwKKysgICAgICAw eDRiLCAweGFkLCAweDc1LCAweDAxLCAweGEyLCAweDI0LCAweGUzLCAweDg4LAorKyAgICAgIDB4 ZGYsIDB4MzQsIDB4OWMsIDB4ZTEsIDB4ODksIDB4NTksIDB4ZmUsIDB4ODQsCisrICAgICAgMHg4 NSwgMHhmOCwgMHhhZCwgMHgxNSwgMHgzNywgMHhmMCwgMHhkOCwgMHg5NiwKKysgICAgICAweGVh LCAweDczLCAweGJlLCAweGRjLCAweDcyLCAweDE0LCAweDcxLCAweDNmLH0sIDM4NCwKKysgICAg IHsweGY2LCAweDJjLCAweDQ2LCAweDMyLCAweDliLH0sIDQwLAorKyAgICAgfSwKKysgICAge05J RF9kZXNfZWRlM19jYmMsICAgICAgICAgIC8qIENvdW50ID0gNDEgZnJvbSBDTUFDR2VuVERFUzMu cmVxICovCisrICAgICB7MHg4OSwgMHhiYywgMHhkOSwgMHg1MiwgMHhhOCwgMHhjOCwgMHhhYiwg MHgzNywKKysgICAgICAweDFhLCAweGY0LCAweDhhLCAweGM3LCAweGQwLCAweDcwLCAweDg1LCAw eGQ1LAorKyAgICAgIDB4ZWYsIDB4ZjcsIDB4MDIsIDB4ZTYsIDB4ZDYsIDB4MmMsIDB4ZGMsIDB4 MjMsfSwgMTkyLAorKyAgICAgezB4ZmEsIDB4NjIsIDB4MGMsIDB4MWIsIDB4YmUsIDB4OTcsIDB4 MzEsIDB4OWUsCisrICAgICAgMHg5YSwgMHgwYywgMHhmMCwgMHg0OSwgMHgyMSwgMHgyMSwgMHhm NywgMHhhMiwKKysgICAgICAweDBlLCAweGIwLCAweDhhLCAweDZhLCAweDcwLCAweDlkLCAweGNi LCAweGQwLAorKyAgICAgIDB4MGEsIDB4YWYsIDB4MzgsIDB4ZTQsIDB4ZjksIDB4OWUsIDB4NzUs IDB4NGUsfSwgMjU2LAorKyAgICAgezB4OGYsIDB4NDksIDB4YTEsIDB4YjcsIDB4ZDYsIDB4YWEs IDB4MjIsIDB4NTgsfSwgNjQsCisrICAgICB9LAorK307CisrCisraW50IEZJUFNfc2VsZnRlc3Rf Y21hYygpCisreworKyAgICBzaXplX3Qgbiwgb3V0bGVuOworKyAgICB1bnNpZ25lZCBjaGFyIG91 dFszMl07CisrICAgIGNvbnN0IEVWUF9DSVBIRVIgKmNpcGhlcjsKKysgICAgQ01BQ19DVFggKmN0 eCA9IENNQUNfQ1RYX25ldygpOworKyAgICBjb25zdCBDTUFDX0tBVCAqdDsKKysgICAgaW50IHJ2 ID0gMTsKKysKKysgICAgZm9yIChuID0gMCwgdCA9IHZlY3RvcjsgbiA8IHNpemVvZih2ZWN0b3Ip IC8gc2l6ZW9mKHZlY3RvclswXSk7IG4rKywgdCsrKSB7CisrICAgICAgICBjaXBoZXIgPSBGSVBT X2dldF9jaXBoZXJieW5pZCh0LT5uaWQpOworKyAgICAgICAgaWYgKCFjaXBoZXIpIHsKKysgICAg ICAgICAgICBydiA9IC0xOworKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKyAg ICAgICAgaWYgKCFDTUFDX0luaXQoY3R4LCB0LT5rZXksIHQtPmtleXNpemUgLyA4LCBjaXBoZXIs IDApKSB7CisrICAgICAgICAgICAgcnYgPSAtMTsKKysgICAgICAgICAgICBnb3RvIGVycjsKKysg ICAgICAgIH0KKysgICAgICAgIGlmICghQ01BQ19VcGRhdGUoY3R4LCB0LT5tc2csIHQtPm1zZ3Np emUgLyA4KSkgeworKyAgICAgICAgICAgIHJ2ID0gLTE7CisrICAgICAgICAgICAgZ290byBlcnI7 CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAoIUNNQUNfRmluYWwoY3R4LCBvdXQsICZvdXRs ZW4pKSB7CisrICAgICAgICAgICAgcnYgPSAtMTsKKysgICAgICAgICAgICBnb3RvIGVycjsKKysg ICAgICAgIH0KKysKKysgICAgICAgIGlmIChvdXRsZW4gPCB0LT5tYWNzaXplIC8gOCB8fCBtZW1j bXAob3V0LCB0LT5tYWMsIHQtPm1hY3NpemUgLyA4KSkgeworKyAgICAgICAgICAgIHJ2ID0gMDsK KysgICAgICAgIH0KKysgICAgfQorKworKyBlcnI6CisrICAgIENNQUNfQ1RYX2ZyZWUoY3R4KTsK KysKKysgICAgaWYgKHJ2ID09IC0xKSB7CisrICAgICAgICBydiA9IDA7CisrICAgIH0KKysgICAg aWYgKCFydikKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfQ01BQywgRklQ U19SX1NFTEZURVNUX0ZBSUxFRCk7CisrCisrICAgIHJldHVybiBydjsKKyt9CisrI2VuZGlmCitk aWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfZGVzX3NlbGZ0ZXN0LmMuZmlw cyBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfZGVzX3NlbGZ0ZXN0LmMKKy0tLSBvcGVu c3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfZGVzX3NlbGZ0ZXN0LmMuZmlwcwkyMDE2LTA5LTA4 IDExOjM3OjM4LjczODQ2MDAwNyArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMv Zmlwc19kZXNfc2VsZnRlc3QuYwkyMDE2LTA5LTA4IDExOjM3OjM4LjczODQ2MDAwNyArMDIwMAor QEAgLTAsMCArMSwxMzMgQEAKKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAw MyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJl ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig d2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3Ry aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAg IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0 aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0 ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2Fy ZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhp cyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9q ZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5v cGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFu ZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBv ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysg KiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBs ZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgorKyAqCisrICog NS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQg Ik9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVz IHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wg UHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29l dmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysg KiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3Bl blNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRw Oi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE IEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQg T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF CisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U IFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwg RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICog Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD RVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS UlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdB WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBP RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysgKi8KKysKKysjaW5jbHVk ZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrI2lmZGVmIE9QRU5TU0xf RklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrIyBpbmNsdWRlICJpbnRlcm5hbC9m aXBzX2ludC5oIgorKyNlbmRpZgorKyNpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2xjb25mLmg+Cisr CisrI2lmZGVmIE9QRU5TU0xfRklQUworKworK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeworKyAgICBj b25zdCB1bnNpZ25lZCBjaGFyIGtleVsxNl07CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgcGxh aW50ZXh0WzhdOworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGNpcGhlcnRleHRbOF07CisrfSB0 ZXN0czJbXSA9IHsKKysgICAgeworKyAgICAgICAgeworKyAgICAgICAgMHg3YywgMHg0ZiwgMHg2 ZSwgMHhmNywgMHhhMiwgMHgwNCwgMHgxNiwgMHhlYywKKysgICAgICAgICAgICAgICAgMHgwYiwg MHg2YiwgMHg3YywgMHg5ZSwgMHg1ZSwgMHgxOSwgMHhhNywgMHhjNH0sIHsKKysgICAgICAgIDB4 MDYsIDB4YTcsIDB4ZDgsIDB4NzksIDB4YWEsIDB4Y2UsIDB4NjksIDB4ZWZ9LCB7CisrICAgICAg ICAweDRjLCAweDExLCAweDE3LCAweDU1LCAweGJmLCAweGM0LCAweDRlLCAweGZkfQorKyAgICB9 LCB7CisrICAgICAgICB7CisrICAgICAgICAweDVkLCAweDllLCAweDAxLCAweGQzLCAweDI1LCAw eGM3LCAweDNlLCAweDM0LAorKyAgICAgICAgICAgICAgICAweDAxLCAweDE2LCAweDdjLCAweDg1 LCAweDIzLCAweGRmLCAweGUwLCAweDY4fSwgeworKyAgICAgICAgMHg5YywgMHg1MCwgMHgwOSwg MHgwZiwgMHg1ZSwgMHg3ZCwgMHg2OSwgMHg3ZX0sIHsKKysgICAgMHhkMiwgMHgwYiwgMHgxOCwg MHhkZiwgMHhkOSwgMHgwZCwgMHg5ZSwgMHhmZn0sfQorK307CisrCisrc3RhdGljIGNvbnN0IHN0 cnVjdCB7CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIga2V5WzI0XTsKKysgICAgY29uc3QgdW5z aWduZWQgY2hhciBwbGFpbnRleHRbOF07CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgY2lwaGVy dGV4dFs4XTsKKyt9IHRlc3RzM1tdID0geworKyAgICB7CisrICAgICAgICB7CisrICAgICAgICAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorKyAgICAgICAg ICAgICAgICAweEZFLCAweERDLCAweEJBLCAweDk4LCAweDc2LCAweDU0LCAweDMyLCAweDEwLAor KyAgICAgICAgICAgICAgICAweDEyLCAweDM0LCAweDU2LCAweDc4LCAweDlhLCAweGJjLCAweGRl LCAweGYwfSwgeworKyAgICAgICAgMHg4ZiwgMHg4ZiwgMHhiZiwgMHg5YiwgMHg1ZCwgMHg0OCwg MHhiNCwgMHgxY30sIHsKKysgICAgMHg1OSwgMHg4YywgMHhlNSwgMHhkMywgMHg2YywgMHhhMiwg MHhlYSwgMHgxYn0sfSwgeworKyAgICAgICAgeworKyAgICAgICAgMHhEQywgMHhCQSwgMHg5OCwg MHg3NiwgMHg1NCwgMHgzMiwgMHgxMCwgMHhGRSwKKysgICAgICAgICAgICAgICAgMHgwMSwgMHgy MywgMHg0NSwgMHg2NywgMHg4OSwgMHhBQiwgMHhDRCwgMHhFRiwKKysgICAgICAgICAgICAgICAg MHhFRCwgMHgzOSwgMHhEOSwgMHg1MCwgMHhGQSwgMHg3NCwgMHhCQywgMHhDNH0sIHsKKysgICAg ICAgIDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4QUIsIDB4Q0QsIDB4RUZ9LCB7Cisr MHgxMSwgMHgyNSwgMHhiMCwgMHgzNSwgMHhiZSwgMHhhMCwgMHg4MiwgMHg4Nn0sfSx9OworKwor K2ludCBGSVBTX3NlbGZ0ZXN0X2RlcygpCisreworKyAgICBpbnQgbiwgcmV0ID0gMDsKKysgICAg RVZQX0NJUEhFUl9DVFggKmN0eDsKKysKKysgICAgY3R4ID0gRVZQX0NJUEhFUl9DVFhfbmV3KCk7 CisrICAgIGlmIChjdHggPT0gTlVMTCkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICAvKiBF bmNyeXB0L2RlY3J5cHQgd2l0aCAyLWtleSAzREVTIGFuZCBjb21wYXJlIHRvIGtub3duIGFuc3dl cnMgKi8KKysgICAgZm9yIChuID0gMDsgbiA8IDI7ICsrbikgeworKyAgICAgICAgdW5zaWduZWQg Y2hhciBwbGFpbnRleHRbOF07CisrCisrICAgICAgICBtZW1jcHkocGxhaW50ZXh0LCB0ZXN0czJb bl0ucGxhaW50ZXh0LCBzaXplb2YocGxhaW50ZXh0KSk7CisrICAgICAgICBpZiAoIWZpcHNfY2lw aGVyX3Rlc3QoY3R4LCBFVlBfZGVzX2VkZV9lY2IoKSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0ZXN0czJbbl0ua2V5LCBOVUxMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBsYWludGV4dCwgdGVzdHMyW25dLmNpcGhlcnRleHQsIDgpKQorKyAgICAgICAgICAgIGdv dG8gZXJyOworKyAgICB9CisrCisrICAgIC8qIEVuY3J5cHQvZGVjcnlwdCB3aXRoIDNERVMgYW5k IGNvbXBhcmUgdG8ga25vd24gYW5zd2VycyAqLworKyAgICBmb3IgKG4gPSAwOyBuIDwgMjsgKytu KSB7CisrICAgICAgICBpZiAoIWZpcHNfY2lwaGVyX3Rlc3QoY3R4LCBFVlBfZGVzX2VkZTNfZWNi KCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMzW25dLmtleSwgTlVMTCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0czNbbl0ucGxhaW50ZXh0LCB0ZXN0 czNbbl0uY2lwaGVydGV4dCwgOCkpCisrICAgICAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysg ICAgcmV0ID0gMTsKKysgZXJyOgorKyAgICBFVlBfQ0lQSEVSX0NUWF9mcmVlKGN0eCk7CisrICAg IGlmIChyZXQgPT0gMCkKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfREVT LCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKKysKKysgICAgcmV0dXJuIHJldDsKKyt9CisrI2Vu ZGlmCitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfZGhfc2VsZnRlc3Qu Yy5maXBzIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19kaF9zZWxmdGVzdC5jCistLS0g b3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9maXBzX2RoX3NlbGZ0ZXN0LmMuZmlwcwkyMDE2LTA5 LTA4IDExOjM3OjM4LjczODQ2MDAwNyArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2Zp cHMvZmlwc19kaF9zZWxmdGVzdC5jCTIwMTYtMDktMDggMTE6Mzc6MzguNzM4NDYwMDA3ICswMjAw CitAQCAtMCwwICsxLDE4MCBAQAorKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrICogQ29weXJpZ2h0IChjKSAy MDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqIENvcHly aWdodCAoYykgMjAxMyBSZWQgSGF0LCBJbmMuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2Rp ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnMKKysgKiBhcmUgbWV0OgorKyAqCisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorKyAq CisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo ZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKysgKiAgICB0aGUgZG9jdW1lbnRhdGlv biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisrICogICAgZGlzdHJp YnV0aW9uLgorKyAqCisrICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5n IGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisrICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRo ZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRl cyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1 c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKysg KgorKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVj dCIgbXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0 cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisrICogICAgcHJpb3Igd3JpdHRl biBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAorKyAq ICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KKysgKgorKyAqIDUuIFByb2R1Y3RzIGRlcml2 ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgorKyAqICAg IG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdy aXR0ZW4KKysgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCisrICoKKysg KiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0 aGUgZm9sbG93aW5nCisrICogICAgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVj dCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAq ICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9y Zy8pIgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQ Uk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisrICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFO VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKyAqIElNUExJRUQgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNT TCBQUk9KRUNUIE9SCisrICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorKyAqIE5PVCBMSU1JVEVEIFRPLCBQ Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworKyAqIExPU1MgT0Yg VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisrICogSE9X RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP TlRSQUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF TkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisrICogT0YgVEhFIFBPU1NJQklMSVRZ IE9GIFNVQ0ggREFNQUdFLgorKyAqCisrICovCisrCisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNp bmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2RoLmg+CisrI2lu Y2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorKyNpbmNs dWRlIDxvcGVuc3NsL2V2cC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+CisrI2luY2x1ZGUg ImZpcHNfbG9jbC5oIgorKworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysKKytzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBkaF90ZXN0XzIwNDhfcFtdID0geworKyAgICAweEFFLCAweEVDLCAweEVF LCAweDIyLCAweEZBLCAweDNBLCAweEE1LCAweDIyLCAweEMwLCAweERFLCAweDBGLCAweDA5LAor KyAgICAweDdFLCAweDE3LCAweEMwLCAweDA1LCAweEY5LCAweEYxLCAweEU3LCAweEM2LCAweDg3 LCAweDE0LCAweDZELCAweDExLAorKyAgICAweEU3LCAweEFFLCAweEVELCAweDJGLCAweDcyLCAw eDU5LCAweEM1LCAweEE5LCAweDlCLCAweEI4LCAweDAyLCAweEE1LAorKyAgICAweEYzLCAweDY5 LCAweDcwLCAweEQ2LCAweERELCAweDkwLCAweEY5LCAweDE5LCAweDc5LCAweEJFLCAweDYwLCAw eDhGLAorKyAgICAweDI1LCAweDkyLCAweDMwLCAweDFDLCAweDUxLCAweDUxLCAweDM4LCAweDI2 LCAweDgyLCAweDI1LCAweEU2LCAweEZDLAorKyAgICAweEVELCAweDY1LCAweDk2LCAweDhGLCAw eDU3LCAweEU1LCAweDUzLCAweDhCLCAweDM4LCAweDYzLCAweEM3LCAweENFLAorKyAgICAweEJD LCAweDFCLCAweDRELCAweDE4LCAweDJBLCAweDVCLCAweDA0LCAweDNGLCAweDZBLCAweDNDLCAw eDk0LCAweDM5LAorKyAgICAweEFFLCAweDM2LCAweEQ2LCAweDVFLCAweDBGLCAweEEyLCAweEND LCAweEQwLCAweEQ0LCAweEQ1LCAweEM2LCAweDFFLAorKyAgICAweEY2LCAweEEwLCAweEY1LCAw eDg5LCAweDRFLCAweEI0LCAweDBCLCAweEE0LCAweEIzLCAweDJCLCAweDNELCAweEUyLAorKyAg ICAweDRFLCAweEUxLCAweDQ5LCAweDI1LCAweDk5LCAweDVGLCAweDMyLCAweDE2LCAweDMzLCAw eDMyLCAweDFCLCAweDdBLAorKyAgICAweEE1LCAweDVDLCAweDZCLCAweDM0LCAweDBELCAweDM5 LCAweDk5LCAweERDLCAweEYwLCAweDc2LCAweEU1LCAweDVBLAorKyAgICAweEQ0LCAweDcxLCAw eDAwLCAweEVELCAweDVBLCAweDczLCAweEZCLCAweEM4LCAweDAxLCAweEFELCAweDk5LCAweENG LAorKyAgICAweDk5LCAweDUyLCAweDdDLCAweDlDLCAweDY0LCAweEM2LCAweDc2LCAweDQwLCAw eDU3LCAweEFGLCAweDU5LCAweEQ3LAorKyAgICAweDM4LCAweDBCLCAweDQwLCAweERFLCAweDMz LCAweDBELCAweEI4LCAweDc2LCAweEVDLCAweEE5LCAweEQ4LCAweDczLAorKyAgICAweEY4LCAw eEVGLCAweDI2LCAweDY2LCAweDA2LCAweDI3LCAweERELCAweDdDLCAweEE0LCAweDEwLCAweDlD LCAweEE2LAorKyAgICAweEFBLCAweEY5LCAweDUzLCAweDYyLCAweDczLCAweDFELCAweEJBLCAw eDFDLCAweEYxLCAweDY3LCAweEY0LCAweDM1LAorKyAgICAweEVELCAweDZGLCAweDM3LCAweDky LCAweEU4LCAweDRGLCAweDZDLCAweEJBLCAweDUyLCAweDZFLCAweEExLCAweEVELAorKyAgICAw eERBLCAweDlGLCAweDg1LCAweDExLCAweDgyLCAweDUyLCAweDYyLCAweDA4LCAweDQ0LCAweEYx LCAweDMwLCAweDAzLAorKyAgICAweEMzLCAweDM4LCAweDJDLCAweDc5LCAweEJELCAweEQ0LCAw eDQzLCAweDQ1LCAweEVFLCAweDhFLCAweDUwLCAweEZDLAorKyAgICAweDI5LCAweDQ2LCAweDlB LCAweEZFLCAweDU0LCAweDFBLCAweDE5LCAweDhGLCAweDRCLCAweDg0LCAweDA4LCAweERFLAor KyAgICAweDIwLCAweDYyLCAweDczLCAweENDLCAweERELCAweDdFLCAweEYwLCAweEVGLCAweEEy LCAweEZELCAweDg2LCAweDU4LAorKyAgICAweDRCLCAweEQ4LCAweDM3LCAweEVCCisrfTsKKysK KytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBkaF90ZXN0XzIwNDhfZ1tdID0geworKyAgICAw eDAyCisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBkaF90ZXN0XzIwNDhfcHVi X2tleVtdID0geworKyAgICAweEEwLCAweDM5LCAweDExLCAweDc3LCAweDlBLCAweEMxLCAweDMw LCAweDFGLCAweEJFLCAweDQ4LCAweEE3LCAweEFBLAorKyAgICAweEEwLCAweDg0LCAweDU0LCAw eDY0LCAweEFELCAweDFCLCAweDcwLCAweEZBLCAweDEzLCAweDU1LCAweDYzLCAweEQyLAorKyAg ICAweDFGLCAweDYyLCAweDMyLCAweDkzLCAweDhFLCAweEM5LCAweDNFLCAweDA5LCAweEE3LCAw eDY0LCAweEU0LCAweDEyLAorKyAgICAweDZFLCAweDFCLCAweEYyLCAweDkyLCAweDNCLCAweEI5 LCAweENCLCAweDU2LCAweEVBLCAweDA3LCAweDg4LCAweEI1LAorKyAgICAweEE2LCAweEJDLCAw eDE2LCAweDFGLCAweDI3LCAweEZFLCAweEQ4LCAweEFBLCAweDQwLCAweEIyLCAweEIwLCAweDJE LAorKyAgICAweDM3LCAweDc2LCAweEE2LCAweEE0LCAweDgyLCAweDJDLCAweDBFLCAweDIyLCAw eDY0LCAweDlELCAweENCLCAweEQxLAorKyAgICAweDAwLCAweEI3LCAweDg5LCAweDE0LCAweDcy LCAweDRFLCAweEJFLCAweDQ4LCAweDQxLCAweEY4LCAweEIyLCAweDUxLAorKyAgICAweDExLCAw eDA5LCAweDRCLCAweDIyLCAweDAxLCAweDIzLCAweDM5LCAweDk2LCAweEUwLCAweDE1LCAweEQ3 LCAweDlGLAorKyAgICAweDYwLCAweEQxLCAweEI3LCAweEFFLCAweEZFLCAweDVGLCAweERCLCAw eEU3LCAweDAzLCAweDE3LCAweDk3LCAweEE2LAorKyAgICAweDE2LCAweDc0LCAweEJELCAweDUz LCAweDgxLCAweDE5LCAweEM1LCAweDQ3LCAweDVFLCAweENFLCAweDhELCAweEVELAorKyAgICAw eDQ1LCAweDVELCAweDNDLCAweDAwLCAweEEwLCAweDBBLCAweDY4LCAweDZBLCAweEUwLCAweDhF LCAweDA2LCAweDQ2LAorKyAgICAweDZGLCAweEQ3LCAweEY5LCAweERGLCAweDMxLCAweDdFLCAw eDc3LCAweDQ0LCAweDBELCAweDk4LCAweEUwLCAweENBLAorKyAgICAweDk4LCAweDA5LCAweDUy LCAweDA0LCAweDkwLCAweEVBLCAweDZELCAweEY0LCAweDMwLCAweDY5LCAweDhGLCAweEIxLAor KyAgICAweDlCLCAweEMxLCAweDQzLCAweERCLCAweEQ1LCAweDhELCAweEM4LCAweDhFLCAweEI2 LCAweDBCLCAweDA1LCAweEJFLAorKyAgICAweDBFLCAweEM1LCAweDk5LCAweEM4LCAweDZFLCAw eDRFLCAweEYzLCAweENCLCAweEMzLCAweDVFLCAweDlCLCAweDUzLAorKyAgICAweEY3LCAweDA2 LCAweDFDLCAweDRGLCAweEM3LCAweEI4LCAweDZFLCAweDMwLCAweDE4LCAweENBLCAweDlCLCAw eEI5LAorKyAgICAweEJDLCAweDVGLCAweDE3LCAweDcyLCAweDI5LCAweDVBLCAweEU1LCAweEQ5 LCAweDk2LCAweEI3LCAweDBCLCAweEYzLAorKyAgICAweDJELCAweDhDLCAweEYxLCAweEUxLCAw eDBFLCAweDBELCAweDc0LCAweEQ1LCAweDlELCAweEYwLCAweDA2LCAweEE5LAorKyAgICAweEI0 LCAweDk1LCAweDYzLCAweDc2LCAweDQ2LCAweDU1LCAweDQ4LCAweDgyLCAweDM5LCAweDkwLCAw eEVGLCAweDU2LAorKyAgICAweDc1LCAweDM0LCAweEI4LCAweDM0LCAweEMzLCAweDE4LCAweDZF LCAweDFFLCAweEFELCAweEUzLCAweDQ4LCAweDdFLAorKyAgICAweDkzLCAweDJDLCAweDIzLCAw eEU3LCAweEY4LCAweDkwLCAweDczLCAweEIxLCAweDc3LCAweDgwLCAweDY3LCAweEE5LAorKyAg ICAweDM2LCAweDlFLCAweERBLCAweEQyCisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBkaF90ZXN0XzIwNDhfcHJpdl9rZXlbXSA9IHsKKysgICAgMHgwQywgMHg0QiwgMHgzMCwg MHg4OSwgMHhEMSwgMHhCOCwgMHg2MiwgMHhDQiwgMHgzQywgMHg0MywgMHg2NCwgMHg5MSwKKysg ICAgMHhGMCwgMHg5MSwgMHg1NCwgMHg3MCwgMHhDNSwgMHgyNywgMHg5NiwgMHhFMywgMHhBQywg MHhCRSwgMHhFOCwgMHgwMCwKKysgICAgMHhFQywgMHg1NSwgMHhGNiwgMHhDQworK307CisrCisr aW50IEZJUFNfc2VsZnRlc3RfZGgoKQorK3sKKysgICAgREggKmRoID0gTlVMTDsKKysgICAgaW50 IHJldCA9IDA7CisrICAgIHZvaWQgKnB1Yl9rZXlfYmluID0gTlVMTDsKKysgICAgaW50IGxlbjsK KysgICAgQklHTlVNICpwID0gTlVMTCwgKmcgPSBOVUxMLCAqcHJpdl9rZXkgPSBOVUxMLCAqdG1w X3B1Yl9rZXkgPSBOVUxMOworKyAgICBjb25zdCBCSUdOVU0gKnB1Yl9rZXk7CisrCisrICAgIGZp cHNfbG9hZF9rZXlfY29tcG9uZW50KHAsIGRoX3Rlc3RfMjA0OCk7CisrICAgIGZpcHNfbG9hZF9r ZXlfY29tcG9uZW50KGcsIGRoX3Rlc3RfMjA0OCk7CisrICAgIC8qIG5vdGUgdGhhdCB0aGUgcHJp dmF0ZSBrZXkgaXMgbXVjaCBzaG9ydGVyIHRoYW4gbm9ybWFsbHkgdXNlZAorKyAgICAgKiBidXQg c3RpbGwgZyAqKiBwcml2X2tleSA+IHAKKysgICAgICovCisrICAgIGZpcHNfbG9hZF9rZXlfY29t cG9uZW50KHByaXZfa2V5LCBkaF90ZXN0XzIwNDgpOworKyAgICBpZiAoKHRtcF9wdWJfa2V5ID0g Qk5fbmV3KCkpID09IE5VTEwpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgZGggPSBESF9u ZXcoKTsKKysKKysgICAgaWYgKGRoID09IE5VTEwpCisrICAgICAgICBnb3RvIGVycjsKKysKKysg ICAgREhfc2V0MF9wcWcoZGgsIHAsIE5VTEwsIGcpOworKyAgICBESF9zZXQwX2tleShkaCwgdG1w X3B1Yl9rZXksIHByaXZfa2V5KTsKKysKKysgICAgaWYgKERIX2dlbmVyYXRlX2tleShkaCkgPD0g MCkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBESF9nZXQwX2tleShkaCwgJnB1Yl9rZXks IE5VTEwpOworKworKyAgICBpZiAocHViX2tleSA9PSBOVUxMKQorKyAgICAgICAgZ290byBlcnI7 CisrCisrICAgIGxlbiA9IEJOX251bV9ieXRlcyhwdWJfa2V5KTsKKysgICAgaWYgKChwdWJfa2V5 X2JpbiA9IE9QRU5TU0xfbWFsbG9jKGxlbikpID09IE5VTEwpCisrICAgICAgICBnb3RvIGVycjsK KysgICAgQk5fYm4yYmluKHB1Yl9rZXksIHB1Yl9rZXlfYmluKTsKKysKKysgICAgaWYgKGxlbiAh PSBzaXplb2YoZGhfdGVzdF8yMDQ4X3B1Yl9rZXkpIHx8CisrICAgICAgICBtZW1jbXAocHViX2tl eV9iaW4sIGRoX3Rlc3RfMjA0OF9wdWJfa2V5LCBsZW4pICE9IDApCisrICAgICAgICBnb3RvIGVy cjsKKysKKysgICAgcmV0ID0gMTsKKysKKysgZXJyOgorKyAgICBpZiAoZGgpCisrICAgICAgICBE SF9mcmVlKGRoKTsKKysgICAgZWxzZSB7CisrICAgICAgICBCTl9mcmVlKHApOworKyAgICAgICAg Qk5fZnJlZShnKTsKKysgICAgICAgIEJOX2ZyZWUocHJpdl9rZXkpOworKyAgICAgICAgQk5fZnJl ZSh0bXBfcHViX2tleSk7CisrICAgIH0KKysKKysgICAgT1BFTlNTTF9mcmVlKHB1Yl9rZXlfYmlu KTsKKysgICAgcmV0dXJuIHJldDsKKyt9CisrI2VuZGlmCitkaWZmIC11cCBvcGVuc3NsLTEuMS4w L2NyeXB0by9maXBzL2ZpcHNfZHJiZ19jdHIuYy5maXBzIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2Zp cHMvZmlwc19kcmJnX2N0ci5jCistLS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9maXBzX2Ry YmdfY3RyLmMuZmlwcwkyMDE2LTA5LTA4IDExOjM3OjM4LjczODQ2MDAwNyArMDIwMAorKysrIG9w ZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2N0ci5jCTIwMTYtMDktMDggMTE6Mzc6 MzguNzM4NDYwMDA3ICswMjAwCitAQCAtMCwwICsxLDQxNSBAQAorKy8qIGZpcHMvcmFuZC9maXBz X2RyYmdfY3RyLmMgKi8KKysvKiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZl QG9wZW5zc2wub3JnKSBmb3IgdGhlIE9wZW5TU0wKKysgKiBwcm9qZWN0LgorKyAqLworKy8qID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisrICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBB bGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9u LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisr ICogYXJlIG1ldDoKKysgKgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKysgKgorKyAqIDIu IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg Y29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisrICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29y IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4K KysgKgorKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJl cyBvciB1c2Ugb2YgdGhpcworKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93 aW5nIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdh cmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRo ZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiA0 LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qg bm90IGJlIHVzZWQgdG8KKysgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl ZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlz c2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKKysgKiAgICBsaWNl bnNpbmdAT3BlblNTTC5vcmcuCisrICoKKysgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhp cyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKKysgKiAgICBub3IgbWF5ICJP cGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisrICog ICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgorKyAqCisrICogNi4gUmVkaXN0 cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2lu ZworKyAqICAgIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMg c29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNl IGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKKysgKgor KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFT IElTJycgQU5EIEFOWQorKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NF IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBP UgorKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD VCwgSU5DSURFTlRBTCwKKysgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg REFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKysgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKysgKiBMT1NTIE9GIFVTRSwgREFUQSwg T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VE IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKysg KiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF UldJU0UpCisrICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G VFdBUkUsIEVWRU4gSUYgQURWSVNFRAorKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB TUFHRS4KKysgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorKyAqLworKworKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysj aW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+CisrI2luY2x1 ZGUgPG9wZW5zc2wvZmlwcy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHNfcmFuZC5oPgorKyNp bmNsdWRlICJmaXBzX3JhbmRfbGNsLmgiCisrCisrc3RhdGljIHZvaWQgaW5jXzEyOChEUkJHX0NU Ul9DVFggKiBjY3R4KQorK3sKKysgICAgaW50IGk7CisrICAgIHVuc2lnbmVkIGNoYXIgYzsKKysg ICAgdW5zaWduZWQgY2hhciAqcCA9IGNjdHgtPlYgKyAxNTsKKysgICAgZm9yIChpID0gMDsgaSA8 IDE2OyBpKyspIHsKKysgICAgICAgIGMgPSAqcDsKKysgICAgICAgIGMrKzsKKysgICAgICAgICpw ID0gYzsKKysgICAgICAgIGlmIChjKQorKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIHAt LTsKKysgICAgfQorK30KKysKKytzdGF0aWMgdm9pZCBjdHJfWE9SKERSQkdfQ1RSX0NUWCAqIGNj dHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLAorKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90 IGlubGVuKQorK3sKKysgICAgc2l6ZV90IGksIG47CisrICAgIC8qIEFueSB6ZXJvIHBhZGRpbmcg d2lsbCBoYXZlIG5vIGVmZmVjdCBvbiB0aGUgcmVzdWx0IGFzIHdlCisrICAgICAqIGFyZSBYT1Jp bmcuIFNvIGp1c3QgcHJvY2VzcyBob3dldmVyIG11Y2ggaW5wdXQgd2UgaGF2ZS4KKysgICAgICov CisrCisrICAgIGlmICghaW4gfHwgIWlubGVuKQorKyAgICAgICAgcmV0dXJuOworKworKyAgICBp ZiAoaW5sZW4gPCBjY3R4LT5rZXlsZW4pCisrICAgICAgICBuID0gaW5sZW47CisrICAgIGVsc2UK KysgICAgICAgIG4gPSBjY3R4LT5rZXlsZW47CisrCisrICAgIGZvciAoaSA9IDA7IGkgPCBuOyBp KyspCisrICAgICAgICBjY3R4LT5LW2ldIF49IGluW2ldOworKyAgICBpZiAoaW5sZW4gPD0gY2N0 eC0+a2V5bGVuKQorKyAgICAgICAgcmV0dXJuOworKworKyAgICBuID0gaW5sZW4gLSBjY3R4LT5r ZXlsZW47CisrICAgIC8qIFNob3VsZCBuZXZlciBoYXBwZW4gKi8KKysgICAgaWYgKG4gPiAxNikK KysgICAgICAgIG4gPSAxNjsKKysgICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCisrICAgICAg ICBjY3R4LT5WW2ldIF49IGluW2kgKyBjY3R4LT5rZXlsZW5dOworK30KKysKKysvKiBQcm9jZXNz IGEgY29tcGxldGUgYmxvY2sgdXNpbmcgQkNDIGFsZ29yaXRobSBvZiBTUFAgODAwLTkwIDEwLjQu MyAqLworKworK3N0YXRpYyB2b2lkIGN0cl9CQ0NfYmxvY2soRFJCR19DVFJfQ1RYICogY2N0eCwg dW5zaWduZWQgY2hhciAqb3V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5z aWduZWQgY2hhciAqaW4pCisreworKyAgICBpbnQgaTsKKysgICAgZm9yIChpID0gMDsgaSA8IDE2 OyBpKyspCisrICAgICAgICBvdXRbaV0gXj0gaW5baV07CisrICAgIEFFU19lbmNyeXB0KG91dCwg b3V0LCAmY2N0eC0+ZGZfa3MpOworKyNpZiAwCisrICAgIGZwcmludGYoc3RkZXJyLCAiQkNDIGlu K291dFxuIik7CisrICAgIEJJT19kdW1wX2ZwKHN0ZGVyciwgaW4sIDE2KTsKKysgICAgQklPX2R1 bXBfZnAoc3RkZXJyLCBvdXQsIDE2KTsKKysjZW5kaWYKKyt9CisrCisrLyogSGFuZGxlIHNldmVy YWwgQkNDIG9wZXJhdGlvbnMgZm9yIGFzIG11Y2ggZGF0YSBhcyB3ZSBuZWVkIGZvciBLIGFuZCBY ICovCisrc3RhdGljIHZvaWQgY3RyX0JDQ19ibG9ja3MoRFJCR19DVFJfQ1RYICogY2N0eCwgY29u c3QgdW5zaWduZWQgY2hhciAqaW4pCisreworKyAgICBjdHJfQkNDX2Jsb2NrKGNjdHgsIGNjdHgt PktYLCBpbik7CisrICAgIGN0cl9CQ0NfYmxvY2soY2N0eCwgY2N0eC0+S1ggKyAxNiwgaW4pOwor KyAgICBpZiAoY2N0eC0+a2V5bGVuICE9IDE2KQorKyAgICAgICAgY3RyX0JDQ19ibG9jayhjY3R4 LCBjY3R4LT5LWCArIDMyLCBpbik7CisrfQorKworKy8qIEluaXRpYWxpc2UgQkNDIGJsb2Nrczog dGhlc2UgaGF2ZSB0aGUgdmFsdWUgMCwxLDIgaW4gbGVmdG1vc3QgcG9zaXRpb25zOgorKyAqIHNl ZSAxMC40LjIgc3RhZ2UgNy4KKysgKi8KKytzdGF0aWMgdm9pZCBjdHJfQkNDX2luaXQoRFJCR19D VFJfQ1RYICogY2N0eCkKKyt7CisrICAgIG1lbXNldChjY3R4LT5LWCwgMCwgNDgpOworKyAgICBt ZW1zZXQoY2N0eC0+Ymx0bXAsIDAsIDE2KTsKKysgICAgY3RyX0JDQ19ibG9jayhjY3R4LCBjY3R4 LT5LWCwgY2N0eC0+Ymx0bXApOworKyAgICBjY3R4LT5ibHRtcFszXSA9IDE7CisrICAgIGN0cl9C Q0NfYmxvY2soY2N0eCwgY2N0eC0+S1ggKyAxNiwgY2N0eC0+Ymx0bXApOworKyAgICBpZiAoY2N0 eC0+a2V5bGVuICE9IDE2KSB7CisrICAgICAgICBjY3R4LT5ibHRtcFszXSA9IDI7CisrICAgICAg ICBjdHJfQkNDX2Jsb2NrKGNjdHgsIGNjdHgtPktYICsgMzIsIGNjdHgtPmJsdG1wKTsKKysgICAg fQorK30KKysKKysvKiBQcm9jZXNzIHNldmVyYWwgYmxvY2tzIGludG8gQkNDIGFsZ29yaXRobSwg c29tZSBwb3NzaWJseSBwYXJ0aWFsICovCisrc3RhdGljIHZvaWQgY3RyX0JDQ191cGRhdGUoRFJC R19DVFJfQ1RYICogY2N0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNp Z25lZCBjaGFyICppbiwgc2l6ZV90IGlubGVuKQorK3sKKysgICAgaWYgKCFpbiB8fCAhaW5sZW4p CisrICAgICAgICByZXR1cm47CisrICAgIC8qIElmIHdlIGhhdmUgcGFydGlhbCBibG9jayBoYW5k bGUgaXQgZmlyc3QgKi8KKysgICAgaWYgKGNjdHgtPmJsdG1wX3BvcykgeworKyAgICAgICAgc2l6 ZV90IGxlZnQgPSAxNiAtIGNjdHgtPmJsdG1wX3BvczsKKysgICAgICAgIC8qIElmIHdlIG5vdyBo YXZlIGEgY29tcGxldGUgYmxvY2sgcHJvY2VzcyBpdCAqLworKyAgICAgICAgaWYgKGlubGVuID49 IGxlZnQpIHsKKysgICAgICAgICAgICBtZW1jcHkoY2N0eC0+Ymx0bXAgKyBjY3R4LT5ibHRtcF9w b3MsIGluLCBsZWZ0KTsKKysgICAgICAgICAgICBjdHJfQkNDX2Jsb2NrcyhjY3R4LCBjY3R4LT5i bHRtcCk7CisrICAgICAgICAgICAgY2N0eC0+Ymx0bXBfcG9zID0gMDsKKysgICAgICAgICAgICBp bmxlbiAtPSBsZWZ0OworKyAgICAgICAgICAgIGluICs9IGxlZnQ7CisrICAgICAgICB9CisrICAg IH0KKysgICAgLyogUHJvY2VzcyB6ZXJvIG9yIG1vcmUgY29tcGxldGUgYmxvY2tzICovCisrICAg IHdoaWxlIChpbmxlbiA+PSAxNikgeworKyAgICAgICAgY3RyX0JDQ19ibG9ja3MoY2N0eCwgaW4p OworKyAgICAgICAgaW4gKz0gMTY7CisrICAgICAgICBpbmxlbiAtPSAxNjsKKysgICAgfQorKyAg ICAvKiBDb3B5IGFueSByZW1haW5pbmcgcGFydGlhbCBibG9jayB0byB0aGUgdGVtcG9yYXJ5IGJ1 ZmZlciAqLworKyAgICBpZiAoaW5sZW4gPiAwKSB7CisrICAgICAgICBtZW1jcHkoY2N0eC0+Ymx0 bXAgKyBjY3R4LT5ibHRtcF9wb3MsIGluLCBpbmxlbik7CisrICAgICAgICBjY3R4LT5ibHRtcF9w b3MgKz0gaW5sZW47CisrICAgIH0KKyt9CisrCisrc3RhdGljIHZvaWQgY3RyX0JDQ19maW5hbChE UkJHX0NUUl9DVFggKiBjY3R4KQorK3sKKysgICAgaWYgKGNjdHgtPmJsdG1wX3BvcykgeworKyAg ICAgICAgbWVtc2V0KGNjdHgtPmJsdG1wICsgY2N0eC0+Ymx0bXBfcG9zLCAwLCAxNiAtIGNjdHgt PmJsdG1wX3Bvcyk7CisrICAgICAgICBjdHJfQkNDX2Jsb2NrcyhjY3R4LCBjY3R4LT5ibHRtcCk7 CisrICAgIH0KKyt9CisrCisrc3RhdGljIHZvaWQgY3RyX2RmKERSQkdfQ1RSX0NUWCAqIGNjdHgs CisrICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluMSwgc2l6ZV90IGlu MWxlbiwKKysgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4yLCBzaXpl X3QgaW4ybGVuLAorKyAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbjMs IHNpemVfdCBpbjNsZW4pCisreworKyAgICBzaXplX3QgaW5sZW47CisrICAgIHVuc2lnbmVkIGNo YXIgKnAgPSBjY3R4LT5ibHRtcDsKKysgICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgYzgwID0gMHg4 MDsKKysKKysgICAgY3RyX0JDQ19pbml0KGNjdHgpOworKyAgICBpZiAoIWluMSkKKysgICAgICAg IGluMWxlbiA9IDA7CisrICAgIGlmICghaW4yKQorKyAgICAgICAgaW4ybGVuID0gMDsKKysgICAg aWYgKCFpbjMpCisrICAgICAgICBpbjNsZW4gPSAwOworKyAgICBpbmxlbiA9IGluMWxlbiArIGlu MmxlbiArIGluM2xlbjsKKysgICAgLyogSW5pdGlhbGlzZSBMfHxOIGluIHRlbXBvcmFyeSBibG9j ayAqLworKyAgICAqcCsrID0gKGlubGVuID4+IDI0KSAmIDB4ZmY7CisrICAgICpwKysgPSAoaW5s ZW4gPj4gMTYpICYgMHhmZjsKKysgICAgKnArKyA9IChpbmxlbiA+PiA4KSAmIDB4ZmY7CisrICAg ICpwKysgPSBpbmxlbiAmIDB4ZmY7CisrICAgIC8qIE5CIGtleWxlbiBpcyBhdCBtb3N0IDMyIGJ5 dGVzICovCisrICAgICpwKysgPSAwOworKyAgICAqcCsrID0gMDsKKysgICAgKnArKyA9IDA7Cisr ICAgICpwID0gKHVuc2lnbmVkIGNoYXIpKChjY3R4LT5rZXlsZW4gKyAxNikgJiAweGZmKTsKKysg ICAgY2N0eC0+Ymx0bXBfcG9zID0gODsKKysgICAgY3RyX0JDQ191cGRhdGUoY2N0eCwgaW4xLCBp bjFsZW4pOworKyAgICBjdHJfQkNDX3VwZGF0ZShjY3R4LCBpbjIsIGluMmxlbik7CisrICAgIGN0 cl9CQ0NfdXBkYXRlKGNjdHgsIGluMywgaW4zbGVuKTsKKysgICAgY3RyX0JDQ191cGRhdGUoY2N0 eCwgJmM4MCwgMSk7CisrICAgIGN0cl9CQ0NfZmluYWwoY2N0eCk7CisrICAgIC8qIFNldCB1cCBr ZXkgSyAqLworKyAgICBBRVNfc2V0X2VuY3J5cHRfa2V5KGNjdHgtPktYLCBjY3R4LT5rZXlsZW4g KiA4LCAmY2N0eC0+ZGZfa3hrcyk7CisrICAgIC8qIFggZm9sbG93cyBrZXkgSyAqLworKyAgICBB RVNfZW5jcnlwdChjY3R4LT5LWCArIGNjdHgtPmtleWxlbiwgY2N0eC0+S1gsICZjY3R4LT5kZl9r eGtzKTsKKysgICAgQUVTX2VuY3J5cHQoY2N0eC0+S1gsIGNjdHgtPktYICsgMTYsICZjY3R4LT5k Zl9reGtzKTsKKysgICAgaWYgKGNjdHgtPmtleWxlbiAhPSAxNikKKysgICAgICAgIEFFU19lbmNy eXB0KGNjdHgtPktYICsgMTYsIGNjdHgtPktYICsgMzIsICZjY3R4LT5kZl9reGtzKTsKKysjaWYg MAorKyAgICBmcHJpbnRmKHN0ZGVyciwgIk91dHB1dCBvZiBjdHJfZGY6XG4iKTsKKysgICAgQklP X2R1bXBfZnAoc3RkZXJyLCBjY3R4LT5LWCwgY2N0eC0+a2V5bGVuICsgMTYpOworKyNlbmRpZgor K30KKysKKysvKiBOQiB0aGUgbm8tZGYgIFVwZGF0ZSBpbiBTUDgwMC05MCBzcGVjaWZpZXMgYSBj b25zdGFudCBpbnB1dCBsZW5ndGgKKysgKiBvZiBzZWVkbGVuLCBob3dldmVyIG90aGVyIHVzZXMg b2YgdGhpcyBhbGdvcml0aG0gcGFkIHRoZSBpbnB1dCB3aXRoCisrICogemVyb2VzIGlmIG5lY2Vz c2FyeSBhbmQgaGF2ZSB1cCB0byB0d28gcGFyYW1ldGVycyBYT1JlZCB0b2dldGhlciwKKysgKiBo YW5kbGUgYm90aCBjYXNlcyBpbiB0aGlzIGZ1bmN0aW9uIGluc3RlYWQuCisrICovCisrCisrc3Rh dGljIHZvaWQgY3RyX1VwZGF0ZShEUkJHX0NUWCAqZGN0eCwKKysgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluMSwgc2l6ZV90IGluMWxlbiwKKysgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluMiwgc2l6ZV90IGluMmxlbiwKKysg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm5vbmNlLCBzaXplX3Qg bm9uY2VsZW4pCisreworKyAgICBEUkJHX0NUUl9DVFggKmNjdHggPSAmZGN0eC0+ZC5jdHI7Cisr ICAgIC8qIGtzIGlzIGFscmVhZHkgc2V0dXAgZm9yIGNvcnJlY3Qga2V5ICovCisrICAgIGluY18x MjgoY2N0eCk7CisrICAgIEFFU19lbmNyeXB0KGNjdHgtPlYsIGNjdHgtPkssICZjY3R4LT5rcyk7 CisrICAgIC8qIElmIGtleWxlbiBsb25nZXIgdGhhbiAxMjggYml0cyBuZWVkIGV4dHJhIGVuY3J5 cHQgKi8KKysgICAgaWYgKGNjdHgtPmtleWxlbiAhPSAxNikgeworKyAgICAgICAgaW5jXzEyOChj Y3R4KTsKKysgICAgICAgIEFFU19lbmNyeXB0KGNjdHgtPlYsIGNjdHgtPksgKyAxNiwgJmNjdHgt PmtzKTsKKysgICAgfQorKyAgICBpbmNfMTI4KGNjdHgpOworKyAgICBBRVNfZW5jcnlwdChjY3R4 LT5WLCBjY3R4LT5WLCAmY2N0eC0+a3MpOworKyAgICAvKiBJZiAxOTIgYml0IGtleSBwYXJ0IG9m IFYgaXMgb24gZW5kIG9mIEsgKi8KKysgICAgaWYgKGNjdHgtPmtleWxlbiA9PSAyNCkgeworKyAg ICAgICAgbWVtY3B5KGNjdHgtPlYgKyA4LCBjY3R4LT5WLCA4KTsKKysgICAgICAgIG1lbWNweShj Y3R4LT5WLCBjY3R4LT5LICsgMjQsIDgpOworKyAgICB9CisrCisrICAgIGlmIChkY3R4LT54Zmxh Z3MgJiBEUkJHX0ZMQUdfQ1RSX1VTRV9ERikgeworKyAgICAgICAgLyogSWYgbm8gaW5wdXQgcmV1 c2UgZXhpc3RpbmcgZGVyaXZlZCB2YWx1ZSAqLworKyAgICAgICAgaWYgKGluMSB8fCBub25jZSB8 fCBpbjIpCisrICAgICAgICAgICAgY3RyX2RmKGNjdHgsIGluMSwgaW4xbGVuLCBub25jZSwgbm9u Y2VsZW4sIGluMiwgaW4ybGVuKTsKKysgICAgICAgIC8qIElmIHRoaXMgYSByZXVzZSBpbnB1dCBp bjFsZW4gIT0gMCAqLworKyAgICAgICAgaWYgKGluMWxlbikKKysgICAgICAgICAgICBjdHJfWE9S KGNjdHgsIGNjdHgtPktYLCBkY3R4LT5zZWVkbGVuKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAg IGN0cl9YT1IoY2N0eCwgaW4xLCBpbjFsZW4pOworKyAgICAgICAgY3RyX1hPUihjY3R4LCBpbjIs IGluMmxlbik7CisrICAgIH0KKysKKysgICAgQUVTX3NldF9lbmNyeXB0X2tleShjY3R4LT5LLCBk Y3R4LT5zdHJlbmd0aCwgJmNjdHgtPmtzKTsKKysjaWYgMAorKyAgICBmcHJpbnRmKHN0ZGVyciwg IksrViBhZnRlciB1cGRhdGUgaXM6XG4iKTsKKysgICAgQklPX2R1bXBfZnAoc3RkZXJyLCBjY3R4 LT5LLCBjY3R4LT5rZXlsZW4pOworKyAgICBCSU9fZHVtcF9mcChzdGRlcnIsIGNjdHgtPlYsIDE2 KTsKKysjZW5kaWYKKyt9CisrCisrc3RhdGljIGludCBkcmJnX2N0cl9pbnN0YW50aWF0ZShEUkJH X0NUWCAqZGN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln bmVkIGNoYXIgKmVudCwgc2l6ZV90IGVudGxlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm5vbmNlLCBzaXplX3Qgbm9uY2VsZW4sCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwZXJzLCBz aXplX3QgcGVyc2xlbikKKyt7CisrICAgIERSQkdfQ1RSX0NUWCAqY2N0eCA9ICZkY3R4LT5kLmN0 cjsKKysgICAgbWVtc2V0KGNjdHgtPkssIDAsIHNpemVvZihjY3R4LT5LKSk7CisrICAgIG1lbXNl dChjY3R4LT5WLCAwLCBzaXplb2YoY2N0eC0+VikpOworKyAgICBBRVNfc2V0X2VuY3J5cHRfa2V5 KGNjdHgtPkssIGRjdHgtPnN0cmVuZ3RoLCAmY2N0eC0+a3MpOworKyAgICBjdHJfVXBkYXRlKGRj dHgsIGVudCwgZW50bGVuLCBwZXJzLCBwZXJzbGVuLCBub25jZSwgbm9uY2VsZW4pOworKyAgICBy ZXR1cm4gMTsKKyt9CisrCisrc3RhdGljIGludCBkcmJnX2N0cl9yZXNlZWQoRFJCR19DVFggKmRj dHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50 LCBzaXplX3QgZW50bGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln bmVkIGNoYXIgKmFkaW4sIHNpemVfdCBhZGlubGVuKQorK3sKKysgICAgY3RyX1VwZGF0ZShkY3R4 LCBlbnQsIGVudGxlbiwgYWRpbiwgYWRpbmxlbiwgTlVMTCwgMCk7CisrICAgIHJldHVybiAxOwor K30KKysKKytzdGF0aWMgaW50IGRyYmdfY3RyX2dlbmVyYXRlKERSQkdfQ1RYICpkY3R4LAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb3V0 bGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAq YWRpbiwgc2l6ZV90IGFkaW5sZW4pCisreworKyAgICBEUkJHX0NUUl9DVFggKmNjdHggPSAmZGN0 eC0+ZC5jdHI7CisrICAgIGlmIChhZGluICYmIGFkaW5sZW4pIHsKKysgICAgICAgIGN0cl9VcGRh dGUoZGN0eCwgYWRpbiwgYWRpbmxlbiwgTlVMTCwgMCwgTlVMTCwgMCk7CisrICAgICAgICAvKiBU aGlzIG1lYW5zIHdlIHJldXNlIGRlcml2ZWQgdmFsdWUgKi8KKysgICAgICAgIGlmIChkY3R4LT54 ZmxhZ3MgJiBEUkJHX0ZMQUdfQ1RSX1VTRV9ERikgeworKyAgICAgICAgICAgIGFkaW4gPSBOVUxM OworKyAgICAgICAgICAgIGFkaW5sZW4gPSAxOworKyAgICAgICAgfQorKyAgICB9IGVsc2UKKysg ICAgICAgIGFkaW5sZW4gPSAwOworKworKyAgICBmb3IgKDs7KSB7CisrICAgICAgICBpbmNfMTI4 KGNjdHgpOworKyAgICAgICAgaWYgKCEoZGN0eC0+eGZsYWdzICYgRFJCR19GTEFHX1RFU1QpICYm ICFkY3R4LT5sYl92YWxpZCkgeworKyAgICAgICAgICAgIEFFU19lbmNyeXB0KGNjdHgtPlYsIGRj dHgtPmxiLCAmY2N0eC0+a3MpOworKyAgICAgICAgICAgIGRjdHgtPmxiX3ZhbGlkID0gMTsKKysg ICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChvdXRsZW4gPCAx NikgeworKyAgICAgICAgICAgIC8qIFVzZSBLIGFzIHRlbXAgc3BhY2UgYXMgaXQgd2lsbCBiZSB1 cGRhdGVkICovCisrICAgICAgICAgICAgQUVTX2VuY3J5cHQoY2N0eC0+ViwgY2N0eC0+SywgJmNj dHgtPmtzKTsKKysgICAgICAgICAgICBpZiAoIWZpcHNfZHJiZ19jcHJuZ190ZXN0KGRjdHgsIGNj dHgtPkspKQorKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgICAgICBtZW1jcHko b3V0LCBjY3R4LT5LLCBvdXRsZW4pOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQor KyAgICAgICAgQUVTX2VuY3J5cHQoY2N0eC0+Viwgb3V0LCAmY2N0eC0+a3MpOworKyAgICAgICAg aWYgKCFmaXBzX2RyYmdfY3BybmdfdGVzdChkY3R4LCBvdXQpKQorKyAgICAgICAgICAgIHJldHVy biAwOworKyAgICAgICAgb3V0ICs9IDE2OworKyAgICAgICAgb3V0bGVuIC09IDE2OworKyAgICAg ICAgaWYgKG91dGxlbiA9PSAwKQorKyAgICAgICAgICAgIGJyZWFrOworKyAgICB9CisrCisrICAg IGN0cl9VcGRhdGUoZGN0eCwgYWRpbiwgYWRpbmxlbiwgTlVMTCwgMCwgTlVMTCwgMCk7CisrCisr ICAgIHJldHVybiAxOworKworK30KKysKKytzdGF0aWMgaW50IGRyYmdfY3RyX3VuaW5zdGFudGlh dGUoRFJCR19DVFggKmRjdHgpCisreworKyAgICBtZW1zZXQoJmRjdHgtPmQuY3RyLCAwLCBzaXpl b2YoRFJCR19DVFJfQ1RYKSk7CisrICAgIHJldHVybiAxOworK30KKysKKytpbnQgZmlwc19kcmJn X2N0cl9pbml0KERSQkdfQ1RYICpkY3R4KQorK3sKKysgICAgRFJCR19DVFJfQ1RYICpjY3R4ID0g JmRjdHgtPmQuY3RyOworKworKyAgICBzaXplX3Qga2V5bGVuOworKworKyAgICBzd2l0Y2ggKGRj dHgtPnR5cGUpIHsKKysgICAgY2FzZSBOSURfYWVzXzEyOF9jdHI6CisrICAgICAgICBrZXlsZW4g PSAxNjsKKysgICAgICAgIGJyZWFrOworKworKyAgICBjYXNlIE5JRF9hZXNfMTkyX2N0cjoKKysg ICAgICAgIGtleWxlbiA9IDI0OworKyAgICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgTklEX2Fl c18yNTZfY3RyOgorKyAgICAgICAga2V5bGVuID0gMzI7CisrICAgICAgICBicmVhazsKKysKKysg ICAgZGVmYXVsdDoKKysgICAgICAgIHJldHVybiAtMjsKKysgICAgfQorKworKyAgICBkY3R4LT5p bnN0YW50aWF0ZSA9IGRyYmdfY3RyX2luc3RhbnRpYXRlOworKyAgICBkY3R4LT5yZXNlZWQgPSBk cmJnX2N0cl9yZXNlZWQ7CisrICAgIGRjdHgtPmdlbmVyYXRlID0gZHJiZ19jdHJfZ2VuZXJhdGU7 CisrICAgIGRjdHgtPnVuaW5zdGFudGlhdGUgPSBkcmJnX2N0cl91bmluc3RhbnRpYXRlOworKwor KyAgICBjY3R4LT5rZXlsZW4gPSBrZXlsZW47CisrICAgIGRjdHgtPnN0cmVuZ3RoID0ga2V5bGVu ICogODsKKysgICAgZGN0eC0+YmxvY2tsZW5ndGggPSAxNjsKKysgICAgZGN0eC0+c2VlZGxlbiA9 IGtleWxlbiArIDE2OworKworKyAgICBpZiAoZGN0eC0+eGZsYWdzICYgRFJCR19GTEFHX0NUUl9V U0VfREYpIHsKKysgICAgICAgIC8qIGRmIGluaXRpYWxpc2F0aW9uICovCisrICAgICAgICBzdGF0 aWMgdW5zaWduZWQgY2hhciBkZl9rZXlbMzJdID0geworKyAgICAgICAgICAgIDB4MDAsIDB4MDEs IDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsCisrICAgICAgICAgICAgMHgwOCwg MHgwOSwgMHgwYSwgMHgwYiwgMHgwYywgMHgwZCwgMHgwZSwgMHgwZiwKKysgICAgICAgICAgICAw eDEwLCAweDExLCAweDEyLCAweDEzLCAweDE0LCAweDE1LCAweDE2LCAweDE3LAorKyAgICAgICAg ICAgIDB4MTgsIDB4MTksIDB4MWEsIDB4MWIsIDB4MWMsIDB4MWQsIDB4MWUsIDB4MWYKKysgICAg ICAgIH07CisrICAgICAgICAvKiBTZXQga2V5IHNjaGVkdWxlIGZvciBkZl9rZXkgKi8KKysgICAg ICAgIEFFU19zZXRfZW5jcnlwdF9rZXkoZGZfa2V5LCBkY3R4LT5zdHJlbmd0aCwgJmNjdHgtPmRm X2tzKTsKKysKKysgICAgICAgIGRjdHgtPm1pbl9lbnRyb3B5ID0gY2N0eC0+a2V5bGVuOworKyAg ICAgICAgZGN0eC0+bWF4X2VudHJvcHkgPSBEUkJHX01BWF9MRU5HVEg7CisrICAgICAgICBkY3R4 LT5taW5fbm9uY2UgPSBkY3R4LT5taW5fZW50cm9weSAvIDI7CisrICAgICAgICBkY3R4LT5tYXhf bm9uY2UgPSBEUkJHX01BWF9MRU5HVEg7CisrICAgICAgICBkY3R4LT5tYXhfcGVycyA9IERSQkdf TUFYX0xFTkdUSDsKKysgICAgICAgIGRjdHgtPm1heF9hZGluID0gRFJCR19NQVhfTEVOR1RIOwor KyAgICB9IGVsc2UgeworKyAgICAgICAgZGN0eC0+bWluX2VudHJvcHkgPSBkY3R4LT5zZWVkbGVu OworKyAgICAgICAgZGN0eC0+bWF4X2VudHJvcHkgPSBkY3R4LT5zZWVkbGVuOworKyAgICAgICAg LyogTm9uY2Ugbm90IHVzZWQgKi8KKysgICAgICAgIGRjdHgtPm1pbl9ub25jZSA9IDA7CisrICAg ICAgICBkY3R4LT5tYXhfbm9uY2UgPSAwOworKyAgICAgICAgZGN0eC0+bWF4X3BlcnMgPSBkY3R4 LT5zZWVkbGVuOworKyAgICAgICAgZGN0eC0+bWF4X2FkaW4gPSBkY3R4LT5zZWVkbGVuOworKyAg ICB9CisrCisrICAgIGRjdHgtPm1heF9yZXF1ZXN0ID0gMSA8PCAxNjsKKysgICAgZGN0eC0+cmVz ZWVkX2ludGVydmFsID0gMSA8PCAyNDsKKysKKysgICAgcmV0dXJuIDE7CisrfQorZGlmZiAtdXAg b3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9maXBzX2RyYmdfaGFzaC5jLmZpcHMgb3BlbnNzbC0x LjEuMC9jcnlwdG8vZmlwcy9maXBzX2RyYmdfaGFzaC5jCistLS0gb3BlbnNzbC0xLjEuMC9jcnlw dG8vZmlwcy9maXBzX2RyYmdfaGFzaC5jLmZpcHMJMjAxNi0wOS0wOCAxMTozNzozOC43Mzk0NjAw MjkgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19oYXNoLmMJ MjAxNi0wOS0wOCAxMTozNzozOC43Mzk0NjAwMjkgKzAyMDAKK0BAIC0wLDAgKzEsMzYxIEBACisr LyogZmlwcy9yYW5kL2ZpcHNfZHJiZ19oYXNoLmMgKi8KKysvKiBXcml0dGVuIGJ5IERyIFN0ZXBo ZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5zc2wub3JnKSBmb3IgdGhlIE9wZW5TU0wKKysgKiBwcm9q ZWN0LgorKyAqLworKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBP cGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICogUmVkaXN0cmli dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0 CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv d2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKgorKyAqIDEuIFJlZGlzdHJpYnV0aW9u cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyLiAKKysgKgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisrICogICAgdGhlIGRv Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKyAq ICAgIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMg bWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcworKyAqICAgIHNvZnR3YXJlIG11c3Qg ZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1 Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysg KiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wu b3JnLykiCisrICoKKysgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVu U1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKysgKiAgICBlbmRvcnNlIG9yIHByb21v dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorKyAqICAgIHBy aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNv bnRhY3QKKysgKiAgICBsaWNlbnNpbmdAT3BlblNTTC5vcmcuCisrICoKKysgKiA1LiBQcm9kdWN0 cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIK KysgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBw cmlvciB3cml0dGVuCisrICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0Lgor KyAqCisrICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCBy ZXRhaW4gdGhlIGZvbGxvd2luZworKyAqICAgIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlz IHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2pl Y3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3Bl blNTTC5vcmcvKSIKKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9w ZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQorKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVE IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJTVBM SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF IE9wZW5TU0wgUFJPSkVDVCBPUgorKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysgKiBTUEVDSUFMLCBFWEVNUExBUlks IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKysgKiBOT1QgTElNSVRF RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKysgKiBM T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQor KyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF UiBJTiBDT05UUkFDVCwKKysgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorKyAqIE9GIFRIRSBQT1NT SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqLworKworKyNkZWZp bmUgT1BFTlNTTF9GSVBTQVBJCisrCisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxz dHJpbmcuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KKysjaW5jbHVkZSA8b3BlbnNz bC9maXBzLmg+CisrI2luY2x1ZGUgImludGVybmFsL2ZpcHNfaW50LmgiCisrI2luY2x1ZGUgPG9w ZW5zc2wvZmlwc19yYW5kLmg+CisrI2luY2x1ZGUgImZpcHNfcmFuZF9sY2wuaCIKKysKKysvKiBU aGlzIGlzIEhhc2hfZGYgZnJvbSBTUCA4MDAtOTAgMTAuNC4xICovCisrCisrc3RhdGljIGludCBo YXNoX2RmKERSQkdfQ1RYICpkY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsCisrICAgICAgICAgICAg ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluMSwgc2l6ZV90IGluMWxlbiwKKysgICAgICAg ICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4yLCBzaXplX3QgaW4ybGVuLAorKyAg ICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbjMsIHNpemVfdCBpbjNsZW4s CisrICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluNCwgc2l6ZV90IGlu NGxlbikKKyt7CisrICAgIEVWUF9NRF9DVFggKm1jdHggPSBkY3R4LT5kLmhhc2gubWN0eDsKKysg ICAgdW5zaWduZWQgY2hhciAqdnRtcCA9IGRjdHgtPmQuaGFzaC52dG1wOworKyAgICB1bnNpZ25l ZCBjaGFyIHRtcFs2XTsKKysgICAgLyogU3RhbmRhcmQgb25seSBldmVyIG5lZWRzIHNlZWRsZW4g Ynl0ZXMgd2hpY2ggaXMgYWx3YXlzIGxlc3MgdGhhbgorKyAgICAgKiBtYXhpbXVtIHBlcm1pdHRl ZCBzbyBubyBuZWVkIHRvIGNoZWNrIGxlbmd0aC4KKysgICAgICovCisrICAgIHNpemVfdCBvdXRs ZW4gPSBkY3R4LT5zZWVkbGVuOworKyAgICB0bXBbMF0gPSAxOworKyAgICB0bXBbMV0gPSAoKG91 dGxlbiAqIDgpID4+IDI0KSAmIDB4ZmY7CisrICAgIHRtcFsyXSA9ICgob3V0bGVuICogOCkgPj4g MTYpICYgMHhmZjsKKysgICAgdG1wWzNdID0gKChvdXRsZW4gKiA4KSA+PiA4KSAmIDB4ZmY7Cisr ICAgIHRtcFs0XSA9IChvdXRsZW4gKiA4KSAmIDB4ZmY7CisrICAgIGlmICghaW4xKSB7CisrICAg ICAgICB0bXBbNV0gPSAodW5zaWduZWQgY2hhcilpbjFsZW47CisrICAgICAgICBpbjEgPSB0bXAg KyA1OworKyAgICAgICAgaW4xbGVuID0gMTsKKysgICAgfQorKyAgICBmb3IgKDs7KSB7CisrICAg ICAgICBpZiAoIUZJUFNfZGlnZXN0aW5pdChtY3R4LCBkY3R4LT5kLmhhc2gubWQpKQorKyAgICAg ICAgICAgIHJldHVybiAwOworKyAgICAgICAgaWYgKCFGSVBTX2RpZ2VzdHVwZGF0ZShtY3R4LCB0 bXAsIDUpKQorKyAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgaWYgKGluMSAmJiAhRklQ U19kaWdlc3R1cGRhdGUobWN0eCwgaW4xLCBpbjFsZW4pKQorKyAgICAgICAgICAgIHJldHVybiAw OworKyAgICAgICAgaWYgKGluMiAmJiAhRklQU19kaWdlc3R1cGRhdGUobWN0eCwgaW4yLCBpbjJs ZW4pKQorKyAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgaWYgKGluMyAmJiAhRklQU19k aWdlc3R1cGRhdGUobWN0eCwgaW4zLCBpbjNsZW4pKQorKyAgICAgICAgICAgIHJldHVybiAwOwor KyAgICAgICAgaWYgKGluNCAmJiAhRklQU19kaWdlc3R1cGRhdGUobWN0eCwgaW40LCBpbjRsZW4p KQorKyAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgaWYgKG91dGxlbiA8IGRjdHgtPmJs b2NrbGVuZ3RoKSB7CisrICAgICAgICAgICAgaWYgKCFGSVBTX2RpZ2VzdGZpbmFsKG1jdHgsIHZ0 bXAsIE5VTEwpKQorKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgICAgICBtZW1j cHkob3V0LCB2dG1wLCBvdXRsZW4pOworKyAgICAgICAgICAgIE9QRU5TU0xfY2xlYW5zZSh2dG1w LCBkY3R4LT5ibG9ja2xlbmd0aCk7CisrICAgICAgICAgICAgcmV0dXJuIDE7CisrICAgICAgICB9 IGVsc2UgaWYgKCFGSVBTX2RpZ2VzdGZpbmFsKG1jdHgsIG91dCwgTlVMTCkpCisrICAgICAgICAg ICAgcmV0dXJuIDA7CisrCisrICAgICAgICBvdXRsZW4gLT0gZGN0eC0+YmxvY2tsZW5ndGg7Cisr ICAgICAgICBpZiAob3V0bGVuID09IDApCisrICAgICAgICAgICAgcmV0dXJuIDE7CisrICAgICAg ICB0bXBbMF0rKzsKKysgICAgICAgIG91dCArPSBkY3R4LT5ibG9ja2xlbmd0aDsKKysgICAgfQor K30KKysKKysvKiBBZGQgYW4gdW5zaWduZWQgYnVmZmVyIHRvIHRoZSBidWYgdmFsdWUsIHN0b3Jp bmcgdGhlIHJlc3VsdCBpbiBidWYuIEZvcgorKyAqIHRoaXMgYWxnb3JpdGhtIHRoZSBsZW5ndGgg b2YgaW5wdXQgbmV2ZXIgZXhjZWVkcyB0aGUgc2VlZCBsZW5ndGguCisrICovCisrCisrc3RhdGlj IHZvaWQgY3R4X2FkZF9idWYoRFJCR19DVFggKmRjdHgsIHVuc2lnbmVkIGNoYXIgKmJ1ZiwKKysg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGlubGVuKQor K3sKKysgICAgc2l6ZV90IGkgPSBpbmxlbjsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcTsK KysgICAgdW5zaWduZWQgY2hhciBjLCAqcDsKKysgICAgcCA9IGJ1ZiArIGRjdHgtPnNlZWRsZW47 CisrICAgIHEgPSBpbiArIGlubGVuOworKworKyAgICBPUEVOU1NMX2Fzc2VydChpIDw9IGRjdHgt PnNlZWRsZW4pOworKworKyAgICAvKiBTcGVjaWFsIGNhc2U6IHplcm8gbGVuZ3RoLCBqdXN0IGlu Y3JlbWVudCBidWZmZXIgKi8KKysgICAgaWYgKGkpCisrICAgICAgICBjID0gMDsKKysgICAgZWxz ZQorKyAgICAgICAgYyA9IDE7CisrCisrICAgIHdoaWxlIChpKSB7CisrICAgICAgICBpbnQgcjsK KysgICAgICAgIHAtLTsKKysgICAgICAgIHEtLTsKKysgICAgICAgIHIgPSAqcCArICpxICsgYzsK KysgICAgICAgIC8qIENhcnJ5ICovCisrICAgICAgICBpZiAociA+IDB4ZmYpCisrICAgICAgICAg ICAgYyA9IDE7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgYyA9IDA7CisrICAgICAgICAq cCA9IHIgJiAweGZmOworKyAgICAgICAgaS0tOworKyAgICB9CisrCisrICAgIGkgPSBkY3R4LT5z ZWVkbGVuIC0gaW5sZW47CisrCisrICAgIC8qIElmIG5vdCBhZGRpbmcgd2hvbGUgYnVmZmVyIGhh bmRsZSBmaW5hbCBjYXJyaWVzICovCisrICAgIGlmIChjICYmIGkpIHsKKysgICAgICAgIGRvIHsK KysgICAgICAgICAgICBwLS07CisrICAgICAgICAgICAgYyA9ICpwOworKyAgICAgICAgICAgIGMr KzsKKysgICAgICAgICAgICAqcCA9IGM7CisrICAgICAgICAgICAgaWYgKGMpCisrICAgICAgICAg ICAgICAgIHJldHVybjsKKysgICAgICAgIH0gd2hpbGUgKGktLSk7CisrICAgIH0KKyt9CisrCisr LyogRmluYWxpc2UgYW5kIGFkZCBoYXNoIHRvIFYgKi8KKysKKytzdGF0aWMgaW50IGN0eF9hZGRf bWQoRFJCR19DVFggKmRjdHgpCisreworKyAgICBpZiAoIUZJUFNfZGlnZXN0ZmluYWwoZGN0eC0+ ZC5oYXNoLm1jdHgsIGRjdHgtPmQuaGFzaC52dG1wLCBOVUxMKSkKKysgICAgICAgIHJldHVybiAw OworKyAgICBjdHhfYWRkX2J1ZihkY3R4LCBkY3R4LT5kLmhhc2guViwgZGN0eC0+ZC5oYXNoLnZ0 bXAsIGRjdHgtPmJsb2NrbGVuZ3RoKTsKKysgICAgcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyBp bnQgaGFzaF9nZW4oRFJCR19DVFggKmRjdHgsIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91 dGxlbikKKyt7CisrICAgIERSQkdfSEFTSF9DVFggKmhjdHggPSAmZGN0eC0+ZC5oYXNoOworKyAg ICBpZiAob3V0bGVuID09IDApCisrICAgICAgICByZXR1cm4gMTsKKysgICAgbWVtY3B5KGhjdHgt PnZ0bXAsIGhjdHgtPlYsIGRjdHgtPnNlZWRsZW4pOworKyAgICBmb3IgKDs7KSB7CisrICAgICAg ICBGSVBTX2RpZ2VzdGluaXQoaGN0eC0+bWN0eCwgaGN0eC0+bWQpOworKyAgICAgICAgRklQU19k aWdlc3R1cGRhdGUoaGN0eC0+bWN0eCwgaGN0eC0+dnRtcCwgZGN0eC0+c2VlZGxlbik7CisrICAg ICAgICBpZiAoIShkY3R4LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCkgJiYgIWRjdHgtPmxiX3Zh bGlkKSB7CisrICAgICAgICAgICAgRklQU19kaWdlc3RmaW5hbChoY3R4LT5tY3R4LCBkY3R4LT5s YiwgTlVMTCk7CisrICAgICAgICAgICAgZGN0eC0+bGJfdmFsaWQgPSAxOworKyAgICAgICAgfSBl bHNlIGlmIChvdXRsZW4gPCBkY3R4LT5ibG9ja2xlbmd0aCkgeworKyAgICAgICAgICAgIEZJUFNf ZGlnZXN0ZmluYWwoaGN0eC0+bWN0eCwgaGN0eC0+dnRtcCwgTlVMTCk7CisrICAgICAgICAgICAg aWYgKCFmaXBzX2RyYmdfY3BybmdfdGVzdChkY3R4LCBoY3R4LT52dG1wKSkKKysgICAgICAgICAg ICAgICAgcmV0dXJuIDA7CisrICAgICAgICAgICAgbWVtY3B5KG91dCwgaGN0eC0+dnRtcCwgb3V0 bGVuKTsKKysgICAgICAgICAgICByZXR1cm4gMTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAg ICAgICAgRklQU19kaWdlc3RmaW5hbChoY3R4LT5tY3R4LCBvdXQsIE5VTEwpOworKyAgICAgICAg ICAgIGlmICghZmlwc19kcmJnX2Nwcm5nX3Rlc3QoZGN0eCwgb3V0KSkKKysgICAgICAgICAgICAg ICAgcmV0dXJuIDA7CisrICAgICAgICAgICAgb3V0bGVuIC09IGRjdHgtPmJsb2NrbGVuZ3RoOwor KyAgICAgICAgICAgIGlmIChvdXRsZW4gPT0gMCkKKysgICAgICAgICAgICAgICAgcmV0dXJuIDE7 CisrICAgICAgICAgICAgb3V0ICs9IGRjdHgtPmJsb2NrbGVuZ3RoOworKyAgICAgICAgfQorKyAg ICAgICAgY3R4X2FkZF9idWYoZGN0eCwgaGN0eC0+dnRtcCwgTlVMTCwgMCk7CisrICAgIH0KKyt9 CisrCisrc3RhdGljIGludCBkcmJnX2hhc2hfaW5zdGFudGlhdGUoRFJCR19DVFggKmRjdHgsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50 LCBzaXplX3QgZW50X2xlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB1bnNpZ25lZCBjaGFyICpub25jZSwgc2l6ZV90IG5vbmNlX2xlbiwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwc3RyLCBzaXplX3QgcHN0 cl9sZW4pCisreworKyAgICBEUkJHX0hBU0hfQ1RYICpoY3R4ID0gJmRjdHgtPmQuaGFzaDsKKysg ICAgaWYgKCFoYXNoX2RmKGRjdHgsIGhjdHgtPlYsCisrICAgICAgICAgICAgICAgICBlbnQsIGVu dF9sZW4sIG5vbmNlLCBub25jZV9sZW4sIHBzdHIsIHBzdHJfbGVuLCBOVUxMLCAwKSkKKysgICAg ICAgIHJldHVybiAwOworKyAgICBpZiAoIWhhc2hfZGYoZGN0eCwgaGN0eC0+QywKKysgICAgICAg ICAgICAgICAgIE5VTEwsIDAsIGhjdHgtPlYsIGRjdHgtPnNlZWRsZW4sIE5VTEwsIDAsIE5VTEws IDApKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrI2lmZGVmIEhBU0hfRFJCR19UUkFDRQorKyAg ICBmcHJpbnRmKHN0ZGVyciwgIlYrQyBhZnRlciBpbnN0YW50aWF0ZTpcbiIpOworKyAgICBoZXhw cmludChzdGRlcnIsIGhjdHgtPlYsIGRjdHgtPnNlZWRsZW4pOworKyAgICBoZXhwcmludChzdGRl cnIsIGhjdHgtPkMsIGRjdHgtPnNlZWRsZW4pOworKyNlbmRpZgorKyAgICByZXR1cm4gMTsKKyt9 CisrCisrc3RhdGljIGludCBkcmJnX2hhc2hfcmVzZWVkKERSQkdfQ1RYICpkY3R4LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICplbnQsIHNpemVfdCBl bnRfbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFy ICphZGluLCBzaXplX3QgYWRpbl9sZW4pCisreworKyAgICBEUkJHX0hBU0hfQ1RYICpoY3R4ID0g JmRjdHgtPmQuaGFzaDsKKysgICAgLyogViBhYm91dCB0byBiZSB1cGRhdGVkIHNvIHVzZSBDIGFz IG91dHB1dCBpbnN0ZWFkICovCisrICAgIGlmICghaGFzaF9kZihkY3R4LCBoY3R4LT5DLAorKyAg ICAgICAgICAgICAgICAgTlVMTCwgMSwgaGN0eC0+ViwgZGN0eC0+c2VlZGxlbiwKKysgICAgICAg ICAgICAgICAgIGVudCwgZW50X2xlbiwgYWRpbiwgYWRpbl9sZW4pKQorKyAgICAgICAgcmV0dXJu IDA7CisrICAgIG1lbWNweShoY3R4LT5WLCBoY3R4LT5DLCBkY3R4LT5zZWVkbGVuKTsKKysgICAg aWYgKCFoYXNoX2RmKGRjdHgsIGhjdHgtPkMsIE5VTEwsIDAsCisrICAgICAgICAgICAgICAgICBo Y3R4LT5WLCBkY3R4LT5zZWVkbGVuLCBOVUxMLCAwLCBOVUxMLCAwKSkKKysgICAgICAgIHJldHVy biAwOworKyNpZmRlZiBIQVNIX0RSQkdfVFJBQ0UKKysgICAgZnByaW50ZihzdGRlcnIsICJWK0Mg YWZ0ZXIgcmVzZWVkOlxuIik7CisrICAgIGhleHByaW50KHN0ZGVyciwgaGN0eC0+ViwgZGN0eC0+ c2VlZGxlbik7CisrICAgIGhleHByaW50KHN0ZGVyciwgaGN0eC0+QywgZGN0eC0+c2VlZGxlbik7 CisrI2VuZGlmCisrICAgIHJldHVybiAxOworK30KKysKKytzdGF0aWMgaW50IGRyYmdfaGFzaF9n ZW5lcmF0ZShEUkJHX0NUWCAqZGN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4sCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbiwgc2l6ZV90IGFkaW5fbGVuKQorK3sK KysgICAgRFJCR19IQVNIX0NUWCAqaGN0eCA9ICZkY3R4LT5kLmhhc2g7CisrICAgIEVWUF9NRF9D VFggKm1jdHggPSBoY3R4LT5tY3R4OworKyAgICB1bnNpZ25lZCBjaGFyIHRtcFs0XTsKKysgICAg aWYgKGFkaW4gJiYgYWRpbl9sZW4pIHsKKysgICAgICAgIHRtcFswXSA9IDI7CisrICAgICAgICBp ZiAoIUZJUFNfZGlnZXN0aW5pdChtY3R4LCBoY3R4LT5tZCkpCisrICAgICAgICAgICAgcmV0dXJu IDA7CisrICAgICAgICBpZiAoIUVWUF9EaWdlc3RVcGRhdGUobWN0eCwgdG1wLCAxKSkKKysgICAg ICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIGlmICghRVZQX0RpZ2VzdFVwZGF0ZShtY3R4LCBo Y3R4LT5WLCBkY3R4LT5zZWVkbGVuKSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAg IGlmICghRVZQX0RpZ2VzdFVwZGF0ZShtY3R4LCBhZGluLCBhZGluX2xlbikpCisrICAgICAgICAg ICAgcmV0dXJuIDA7CisrICAgICAgICBpZiAoIWN0eF9hZGRfbWQoZGN0eCkpCisrICAgICAgICAg ICAgcmV0dXJuIDA7CisrICAgIH0KKysgICAgaWYgKCFoYXNoX2dlbihkY3R4LCBvdXQsIG91dGxl bikpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgdG1wWzBdID0gMzsKKysgICAgaWYgKCFG SVBTX2RpZ2VzdGluaXQobWN0eCwgaGN0eC0+bWQpKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAg IGlmICghRVZQX0RpZ2VzdFVwZGF0ZShtY3R4LCB0bXAsIDEpKQorKyAgICAgICAgcmV0dXJuIDA7 CisrICAgIGlmICghRVZQX0RpZ2VzdFVwZGF0ZShtY3R4LCBoY3R4LT5WLCBkY3R4LT5zZWVkbGVu KSkKKysgICAgICAgIHJldHVybiAwOworKworKyAgICBpZiAoIWN0eF9hZGRfbWQoZGN0eCkpCisr ICAgICAgICByZXR1cm4gMDsKKysKKysgICAgY3R4X2FkZF9idWYoZGN0eCwgaGN0eC0+ViwgaGN0 eC0+QywgZGN0eC0+c2VlZGxlbik7CisrCisrICAgIHRtcFswXSA9IChkY3R4LT5yZXNlZWRfY291 bnRlciA+PiAyNCkgJiAweGZmOworKyAgICB0bXBbMV0gPSAoZGN0eC0+cmVzZWVkX2NvdW50ZXIg Pj4gMTYpICYgMHhmZjsKKysgICAgdG1wWzJdID0gKGRjdHgtPnJlc2VlZF9jb3VudGVyID4+IDgp ICYgMHhmZjsKKysgICAgdG1wWzNdID0gZGN0eC0+cmVzZWVkX2NvdW50ZXIgJiAweGZmOworKyAg ICBjdHhfYWRkX2J1ZihkY3R4LCBoY3R4LT5WLCB0bXAsIDQpOworKyNpZmRlZiBIQVNIX0RSQkdf VFJBQ0UKKysgICAgZnByaW50ZihzdGRlcnIsICJWK0MgYWZ0ZXIgZ2VuZXJhdGU6XG4iKTsKKysg ICAgaGV4cHJpbnQoc3RkZXJyLCBoY3R4LT5WLCBkY3R4LT5zZWVkbGVuKTsKKysgICAgaGV4cHJp bnQoc3RkZXJyLCBoY3R4LT5DLCBkY3R4LT5zZWVkbGVuKTsKKysjZW5kaWYKKysgICAgcmV0dXJu IDE7CisrfQorKworK3N0YXRpYyBpbnQgZHJiZ19oYXNoX3VuaW5zdGFudGlhdGUoRFJCR19DVFgg KmRjdHgpCisreworKyAgICBFVlBfTURfQ1RYX2ZyZWUoZGN0eC0+ZC5oYXNoLm1jdHgpOworKyAg ICBPUEVOU1NMX2NsZWFuc2UoJmRjdHgtPmQuaGFzaCwgc2l6ZW9mKERSQkdfSEFTSF9DVFgpKTsK KysgICAgcmV0dXJuIDE7CisrfQorKworK2ludCBmaXBzX2RyYmdfaGFzaF9pbml0KERSQkdfQ1RY ICpkY3R4KQorK3sKKysgICAgY29uc3QgRVZQX01EICptZDsKKysgICAgRFJCR19IQVNIX0NUWCAq aGN0eCA9ICZkY3R4LT5kLmhhc2g7CisrICAgIG1kID0gRklQU19nZXRfZGlnZXN0YnluaWQoZGN0 eC0+dHlwZSk7CisrICAgIGlmICghbWQpCisrICAgICAgICByZXR1cm4gLTI7CisrICAgIHN3aXRj aCAoZGN0eC0+dHlwZSkgeworKyAgICBjYXNlIE5JRF9zaGExOgorKyAgICAgICAgZGN0eC0+c3Ry ZW5ndGggPSAxMjg7CisrICAgICAgICBicmVhazsKKysKKysgICAgY2FzZSBOSURfc2hhMjI0Ogor KyAgICAgICAgZGN0eC0+c3RyZW5ndGggPSAxOTI7CisrICAgICAgICBicmVhazsKKysKKysgICAg ZGVmYXVsdDoKKysgICAgICAgIGRjdHgtPnN0cmVuZ3RoID0gMjU2OworKyAgICAgICAgYnJlYWs7 CisrICAgIH0KKysKKysgICAgZGN0eC0+aW5zdGFudGlhdGUgPSBkcmJnX2hhc2hfaW5zdGFudGlh dGU7CisrICAgIGRjdHgtPnJlc2VlZCA9IGRyYmdfaGFzaF9yZXNlZWQ7CisrICAgIGRjdHgtPmdl bmVyYXRlID0gZHJiZ19oYXNoX2dlbmVyYXRlOworKyAgICBkY3R4LT51bmluc3RhbnRpYXRlID0g ZHJiZ19oYXNoX3VuaW5zdGFudGlhdGU7CisrCisrICAgIGRjdHgtPmQuaGFzaC5tZCA9IG1kOwor KyAgICBoY3R4LT5tY3R4ID0gRVZQX01EX0NUWF9uZXcoKTsKKysgICAgaWYgKGhjdHgtPm1jdHgg PT0gTlVMTCkKKysgICAgICAgIHJldHVybiAtMTsKKysKKysgICAgLyogVGhlc2UgYXJlIHRha2Vu IGZyb20gU1AgODAwLTkwIDEwLjEgdGFibGUgMiAqLworKworKyAgICBkY3R4LT5ibG9ja2xlbmd0 aCA9IEVWUF9NRF9zaXplKG1kKTsKKysgICAgaWYgKGRjdHgtPmJsb2NrbGVuZ3RoID4gMzIpCisr ICAgICAgICBkY3R4LT5zZWVkbGVuID0gMTExOworKyAgICBlbHNlCisrICAgICAgICBkY3R4LT5z ZWVkbGVuID0gNTU7CisrCisrICAgIGRjdHgtPm1pbl9lbnRyb3B5ID0gZGN0eC0+c3RyZW5ndGgg LyA4OworKyAgICBkY3R4LT5tYXhfZW50cm9weSA9IERSQkdfTUFYX0xFTkdUSDsKKysKKysgICAg ZGN0eC0+bWluX25vbmNlID0gZGN0eC0+bWluX2VudHJvcHkgLyAyOworKyAgICBkY3R4LT5tYXhf bm9uY2UgPSBEUkJHX01BWF9MRU5HVEg7CisrCisrICAgIGRjdHgtPm1heF9wZXJzID0gRFJCR19N QVhfTEVOR1RIOworKyAgICBkY3R4LT5tYXhfYWRpbiA9IERSQkdfTUFYX0xFTkdUSDsKKysKKysg ICAgZGN0eC0+bWF4X3JlcXVlc3QgPSAxIDw8IDE2OworKyAgICBkY3R4LT5yZXNlZWRfaW50ZXJ2 YWwgPSAxIDw8IDI0OworKworKyAgICByZXR1cm4gMTsKKyt9CitkaWZmIC11cCBvcGVuc3NsLTEu MS4wL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19obWFjLmMuZmlwcyBvcGVuc3NsLTEuMS4wL2NyeXB0 by9maXBzL2ZpcHNfZHJiZ19obWFjLmMKKy0tLSBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2Zp cHNfZHJiZ19obWFjLmMuZmlwcwkyMDE2LTA5LTA4IDExOjM3OjM4LjczOTQ2MDAyOSArMDIwMAor KysrIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2htYWMuYwkyMDE2LTA5LTA4 IDExOjM3OjM4LjczOTQ2MDAyOSArMDIwMAorQEAgLTAsMCArMSwyNzIgQEAKKysvKiBmaXBzL3Jh bmQvZmlwc19kcmJnX2htYWMuYyAqLworKy8qIFdyaXR0ZW4gYnkgRHIgU3RlcGhlbiBOIEhlbnNv biAoc3RldmVAb3BlbnNzbC5vcmcpIGZvciB0aGUgT3BlblNTTAorKyAqIHByb2plY3QuCisrICov CisrLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIE9wZW5TU0wgUHJv amVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2Rp ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnMKKysgKiBhcmUgbWV0OgorKyAqCisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorKyAq CisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo ZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKysgKiAgICB0aGUgZG9jdW1lbnRhdGlv biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisrICogICAgZGlzdHJp YnV0aW9uLgorKyAqCisrICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5n IGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisrICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRo ZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRl cyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1 c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKKysg KgorKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVj dCIgbXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0 cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisrICogICAgcHJpb3Igd3JpdHRl biBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAorKyAq ICAgIGxpY2Vuc2luZ0BPcGVuU1NMLm9yZy4KKysgKgorKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQg ZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgorKyAqICAgIG5v ciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0 ZW4KKysgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCisrICoKKysgKiA2 LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUg Zm9sbG93aW5nCisrICogICAgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBp bmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAg IGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8p IgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9K RUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisrICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElF UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKyAqIElNUExJRUQgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAq IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQ Uk9KRUNUIE9SCisrICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs IElORElSRUNULCBJTkNJREVOVEFMLAorKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9D VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworKyAqIExPU1MgT0YgVVNF LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisrICogSE9XRVZF UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS QUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF IE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisrICogT0YgVEhFIFBPU1NJQklMSVRZIE9G IFNVQ0ggREFNQUdFLgorKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrICovCisrCisrI2luY2x1ZGUgPHN0ZGxp Yi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4K KysjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9obWFjLmg+Cisr I2luY2x1ZGUgPG9wZW5zc2wvYWVzLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorKyNp bmNsdWRlIDxvcGVuc3NsL2ZpcHNfcmFuZC5oPgorKyNpbmNsdWRlICJmaXBzX3JhbmRfbGNsLmgi CisrCisrc3RhdGljIGludCBkcmJnX2htYWNfdXBkYXRlKERSQkdfQ1RYICpkY3R4LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbjEsIHNpemVfdCBp bjFsZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg KmluMiwgc2l6ZV90IGluMmxlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dW5zaWduZWQgY2hhciAqaW4zLCBzaXplX3QgaW4zbGVuKQorK3sKKysgICAgc3RhdGljIHVuc2ln bmVkIGNoYXIgYzAgPSAwLCBjMSA9IDE7CisrICAgIERSQkdfSE1BQ19DVFggKmhtYWMgPSAmZGN0 eC0+ZC5obWFjOworKyAgICBITUFDX0NUWCAqaGN0eCA9IGhtYWMtPmhjdHg7CisrCisrICAgIGlm ICghSE1BQ19Jbml0X2V4KGhjdHgsIGhtYWMtPkssIGRjdHgtPmJsb2NrbGVuZ3RoLCBobWFjLT5t ZCwgTlVMTCkpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKCFITUFDX1VwZGF0ZShoY3R4 LCBobWFjLT5WLCBkY3R4LT5ibG9ja2xlbmd0aCkpCisrICAgICAgICByZXR1cm4gMDsKKysgICAg aWYgKCFITUFDX1VwZGF0ZShoY3R4LCAmYzAsIDEpKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAg IGlmIChpbjFsZW4gJiYgIUhNQUNfVXBkYXRlKGhjdHgsIGluMSwgaW4xbGVuKSkKKysgICAgICAg IHJldHVybiAwOworKyAgICBpZiAoaW4ybGVuICYmICFITUFDX1VwZGF0ZShoY3R4LCBpbjIsIGlu MmxlbikpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKGluM2xlbiAmJiAhSE1BQ19VcGRh dGUoaGN0eCwgaW4zLCBpbjNsZW4pKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrICAgIGlmICgh SE1BQ19GaW5hbChoY3R4LCBobWFjLT5LLCBOVUxMKSkKKysgICAgICAgIHJldHVybiAwOworKwor KyAgICBpZiAoIUhNQUNfSW5pdF9leChoY3R4LCBobWFjLT5LLCBkY3R4LT5ibG9ja2xlbmd0aCwg aG1hYy0+bWQsIE5VTEwpKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGlmICghSE1BQ19VcGRh dGUoaGN0eCwgaG1hYy0+ViwgZGN0eC0+YmxvY2tsZW5ndGgpKQorKyAgICAgICAgcmV0dXJuIDA7 CisrCisrICAgIGlmICghSE1BQ19GaW5hbChoY3R4LCBobWFjLT5WLCBOVUxMKSkKKysgICAgICAg IHJldHVybiAwOworKworKyAgICBpZiAoIWluMWxlbiAmJiAhaW4ybGVuICYmICFpbjNsZW4pCisr ICAgICAgICByZXR1cm4gMTsKKysKKysgICAgaWYgKCFITUFDX0luaXRfZXgoaGN0eCwgaG1hYy0+ SywgZGN0eC0+YmxvY2tsZW5ndGgsIGhtYWMtPm1kLCBOVUxMKSkKKysgICAgICAgIHJldHVybiAw OworKyAgICBpZiAoIUhNQUNfVXBkYXRlKGhjdHgsIGhtYWMtPlYsIGRjdHgtPmJsb2NrbGVuZ3Ro KSkKKysgICAgICAgIHJldHVybiAwOworKyAgICBpZiAoIUhNQUNfVXBkYXRlKGhjdHgsICZjMSwg MSkpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKGluMWxlbiAmJiAhSE1BQ19VcGRhdGUo aGN0eCwgaW4xLCBpbjFsZW4pKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGlmIChpbjJsZW4g JiYgIUhNQUNfVXBkYXRlKGhjdHgsIGluMiwgaW4ybGVuKSkKKysgICAgICAgIHJldHVybiAwOwor KyAgICBpZiAoaW4zbGVuICYmICFITUFDX1VwZGF0ZShoY3R4LCBpbjMsIGluM2xlbikpCisrICAg ICAgICByZXR1cm4gMDsKKysKKysgICAgaWYgKCFITUFDX0ZpbmFsKGhjdHgsIGhtYWMtPkssIE5V TEwpKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrICAgIGlmICghSE1BQ19Jbml0X2V4KGhjdHgs IGhtYWMtPkssIGRjdHgtPmJsb2NrbGVuZ3RoLCBobWFjLT5tZCwgTlVMTCkpCisrICAgICAgICBy ZXR1cm4gMDsKKysgICAgaWYgKCFITUFDX1VwZGF0ZShoY3R4LCBobWFjLT5WLCBkY3R4LT5ibG9j a2xlbmd0aCkpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgaWYgKCFITUFDX0ZpbmFsKGhj dHgsIGhtYWMtPlYsIE5VTEwpKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrICAgIHJldHVybiAx OworKworK30KKysKKytzdGF0aWMgaW50IGRyYmdfaG1hY19pbnN0YW50aWF0ZShEUkJHX0NUWCAq ZGN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBj aGFyICplbnQsIHNpemVfdCBlbnRfbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm5vbmNlLCBzaXplX3Qgbm9uY2VfbGVuLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBzdHIsIHNp emVfdCBwc3RyX2xlbikKKyt7CisrICAgIERSQkdfSE1BQ19DVFggKmhtYWMgPSAmZGN0eC0+ZC5o bWFjOworKyAgICBtZW1zZXQoaG1hYy0+SywgMCwgZGN0eC0+YmxvY2tsZW5ndGgpOworKyAgICBt ZW1zZXQoaG1hYy0+ViwgMSwgZGN0eC0+YmxvY2tsZW5ndGgpOworKyAgICBpZiAoIWRyYmdfaG1h Y191cGRhdGUoZGN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGVudCwgZW50X2xlbiwg bm9uY2UsIG5vbmNlX2xlbiwgcHN0ciwgcHN0cl9sZW4pKQorKyAgICAgICAgcmV0dXJuIDA7Cisr CisrI2lmZGVmIEhNQUNfRFJCR19UUkFDRQorKyAgICBmcHJpbnRmKHN0ZGVyciwgIksrViBhZnRl ciBpbnN0YW50aWF0ZTpcbiIpOworKyAgICBoZXhwcmludChzdGRlcnIsIGhtYWMtPkssIGhtYWMt PmJsb2NrbGVuZ3RoKTsKKysgICAgaGV4cHJpbnQoc3RkZXJyLCBobWFjLT5WLCBobWFjLT5ibG9j a2xlbmd0aCk7CisrI2VuZGlmCisrICAgIHJldHVybiAxOworK30KKysKKytzdGF0aWMgaW50IGRy YmdfaG1hY19yZXNlZWQoRFJCR19DVFggKmRjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVudCwgc2l6ZV90IGVudF9sZW4sCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4sIHNpemVfdCBhZGlu X2xlbikKKyt7CisrICAgIGlmICghZHJiZ19obWFjX3VwZGF0ZShkY3R4LCBlbnQsIGVudF9sZW4s IGFkaW4sIGFkaW5fbGVuLCBOVUxMLCAwKSkKKysgICAgICAgIHJldHVybiAwOworKworKyNpZmRl ZiBITUFDX0RSQkdfVFJBQ0UKKysgICAgeworKyAgICAgICAgRFJCR19ITUFDX0NUWCAqaG1hYyA9 ICZkY3R4LT5kLmhtYWM7CisrICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIksrViBhZnRlciByZXNl ZWQ6XG4iKTsKKysgICAgICAgIGhleHByaW50KHN0ZGVyciwgaG1hYy0+SywgaG1hYy0+YmxvY2ts ZW5ndGgpOworKyAgICAgICAgaGV4cHJpbnQoc3RkZXJyLCBobWFjLT5WLCBobWFjLT5ibG9ja2xl bmd0aCk7CisrICAgIH0KKysjZW5kaWYKKysgICAgcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyBp bnQgZHJiZ19obWFjX2dlbmVyYXRlKERSQkdfQ1RYICpkY3R4LAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGluLCBzaXplX3Qg YWRpbl9sZW4pCisreworKyAgICBEUkJHX0hNQUNfQ1RYICpobWFjID0gJmRjdHgtPmQuaG1hYzsK KysgICAgSE1BQ19DVFggKmhjdHggPSBobWFjLT5oY3R4OworKyAgICBjb25zdCB1bnNpZ25lZCBj aGFyICpWdG1wID0gaG1hYy0+VjsKKysgICAgaWYgKGFkaW5fbGVuICYmICFkcmJnX2htYWNfdXBk YXRlKGRjdHgsIGFkaW4sIGFkaW5fbGVuLCBOVUxMLCAwLCBOVUxMLCAwKSkKKysgICAgICAgIHJl dHVybiAwOworKyAgICBmb3IgKDs7KSB7CisrICAgICAgICBpZiAoIUhNQUNfSW5pdF9leChoY3R4 LCBobWFjLT5LLCBkY3R4LT5ibG9ja2xlbmd0aCwgaG1hYy0+bWQsIE5VTEwpKQorKyAgICAgICAg ICAgIHJldHVybiAwOworKyAgICAgICAgaWYgKCFITUFDX1VwZGF0ZShoY3R4LCBWdG1wLCBkY3R4 LT5ibG9ja2xlbmd0aCkpCisrICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICBpZiAoIShk Y3R4LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCkgJiYgIWRjdHgtPmxiX3ZhbGlkKSB7CisrICAg ICAgICAgICAgaWYgKCFITUFDX0ZpbmFsKGhjdHgsIGRjdHgtPmxiLCBOVUxMKSkKKysgICAgICAg ICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICAgICAgZGN0eC0+bGJfdmFsaWQgPSAxOworKyAg ICAgICAgICAgIFZ0bXAgPSBkY3R4LT5sYjsKKysgICAgICAgICAgICBjb250aW51ZTsKKysgICAg ICAgIH0gZWxzZSBpZiAob3V0bGVuID4gZGN0eC0+YmxvY2tsZW5ndGgpIHsKKysgICAgICAgICAg ICBpZiAoIUhNQUNfRmluYWwoaGN0eCwgb3V0LCBOVUxMKSkKKysgICAgICAgICAgICAgICAgcmV0 dXJuIDA7CisrICAgICAgICAgICAgaWYgKCFmaXBzX2RyYmdfY3BybmdfdGVzdChkY3R4LCBvdXQp KQorKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgICAgICBWdG1wID0gb3V0Owor KyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBpZiAoIUhNQUNfRmluYWwoaGN0eCwgaG1h Yy0+ViwgTlVMTCkpCisrICAgICAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgICAgIGlm ICghZmlwc19kcmJnX2Nwcm5nX3Rlc3QoZGN0eCwgaG1hYy0+VikpCisrICAgICAgICAgICAgICAg IHJldHVybiAwOworKyAgICAgICAgICAgIG1lbWNweShvdXQsIGhtYWMtPlYsIG91dGxlbik7Cisr ICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisrICAgICAgICBvdXQgKz0gZGN0eC0+Ymxv Y2tsZW5ndGg7CisrICAgICAgICBvdXRsZW4gLT0gZGN0eC0+YmxvY2tsZW5ndGg7CisrICAgIH0K KysgICAgaWYgKCFkcmJnX2htYWNfdXBkYXRlKGRjdHgsIGFkaW4sIGFkaW5fbGVuLCBOVUxMLCAw LCBOVUxMLCAwKSkKKysgICAgICAgIHJldHVybiAwOworKworKyAgICByZXR1cm4gMTsKKyt9Cisr Cisrc3RhdGljIGludCBkcmJnX2htYWNfdW5pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0eCkKKyt7 CisrICAgIEhNQUNfQ1RYX2ZyZWUoZGN0eC0+ZC5obWFjLmhjdHgpOworKyAgICBPUEVOU1NMX2Ns ZWFuc2UoJmRjdHgtPmQuaG1hYywgc2l6ZW9mKERSQkdfSE1BQ19DVFgpKTsKKysgICAgcmV0dXJu IDE7CisrfQorKworK2ludCBmaXBzX2RyYmdfaG1hY19pbml0KERSQkdfQ1RYICpkY3R4KQorK3sK KysgICAgY29uc3QgRVZQX01EICptZCA9IE5VTEw7CisrICAgIERSQkdfSE1BQ19DVFggKmhjdHgg PSAmZGN0eC0+ZC5obWFjOworKyAgICBkY3R4LT5zdHJlbmd0aCA9IDI1NjsKKysgICAgc3dpdGNo IChkY3R4LT50eXBlKSB7CisrICAgIGNhc2UgTklEX2htYWNXaXRoU0hBMToKKysgICAgICAgIG1k ID0gRVZQX3NoYTEoKTsKKysgICAgICAgIGRjdHgtPnN0cmVuZ3RoID0gMTI4OworKyAgICAgICAg YnJlYWs7CisrCisrICAgIGNhc2UgTklEX2htYWNXaXRoU0hBMjI0OgorKyAgICAgICAgbWQgPSBF VlBfc2hhMjI0KCk7CisrICAgICAgICBkY3R4LT5zdHJlbmd0aCA9IDE5MjsKKysgICAgICAgIGJy ZWFrOworKworKyAgICBjYXNlIE5JRF9obWFjV2l0aFNIQTI1NjoKKysgICAgICAgIG1kID0gRVZQ X3NoYTI1NigpOworKyAgICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgTklEX2htYWNXaXRoU0hB Mzg0OgorKyAgICAgICAgbWQgPSBFVlBfc2hhMzg0KCk7CisrICAgICAgICBicmVhazsKKysKKysg ICAgY2FzZSBOSURfaG1hY1dpdGhTSEE1MTI6CisrICAgICAgICBtZCA9IEVWUF9zaGE1MTIoKTsK KysgICAgICAgIGJyZWFrOworKworKyAgICBkZWZhdWx0OgorKyAgICAgICAgZGN0eC0+c3RyZW5n dGggPSAwOworKyAgICAgICAgcmV0dXJuIC0yOworKyAgICB9CisrICAgIGRjdHgtPmluc3RhbnRp YXRlID0gZHJiZ19obWFjX2luc3RhbnRpYXRlOworKyAgICBkY3R4LT5yZXNlZWQgPSBkcmJnX2ht YWNfcmVzZWVkOworKyAgICBkY3R4LT5nZW5lcmF0ZSA9IGRyYmdfaG1hY19nZW5lcmF0ZTsKKysg ICAgZGN0eC0+dW5pbnN0YW50aWF0ZSA9IGRyYmdfaG1hY191bmluc3RhbnRpYXRlOworKyAgICBo Y3R4LT5oY3R4ID0gSE1BQ19DVFhfbmV3KCk7CisrICAgIGlmIChoY3R4LT5oY3R4ID09IE5VTEwp CisrICAgICAgICByZXR1cm4gLTE7CisrICAgIGhjdHgtPm1kID0gbWQ7CisrICAgIGRjdHgtPmJs b2NrbGVuZ3RoID0gTV9FVlBfTURfc2l6ZShtZCk7CisrICAgIGRjdHgtPnNlZWRsZW4gPSBNX0VW UF9NRF9zaXplKG1kKTsKKysKKysgICAgZGN0eC0+bWluX2VudHJvcHkgPSBkY3R4LT5zdHJlbmd0 aCAvIDg7CisrICAgIGRjdHgtPm1heF9lbnRyb3B5ID0gRFJCR19NQVhfTEVOR1RIOworKworKyAg ICBkY3R4LT5taW5fbm9uY2UgPSBkY3R4LT5taW5fZW50cm9weSAvIDI7CisrICAgIGRjdHgtPm1h eF9ub25jZSA9IERSQkdfTUFYX0xFTkdUSDsKKysKKysgICAgZGN0eC0+bWF4X3BlcnMgPSBEUkJH X01BWF9MRU5HVEg7CisrICAgIGRjdHgtPm1heF9hZGluID0gRFJCR19NQVhfTEVOR1RIOworKwor KyAgICBkY3R4LT5tYXhfcmVxdWVzdCA9IDEgPDwgMTY7CisrICAgIGRjdHgtPnJlc2VlZF9pbnRl cnZhbCA9IDEgPDwgMjQ7CisrCisrICAgIHJldHVybiAxOworK30KK2RpZmYgLXVwIG9wZW5zc2wt MS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2xpYi5jLmZpcHMgb3BlbnNzbC0xLjEuMC9jcnlw dG8vZmlwcy9maXBzX2RyYmdfbGliLmMKKy0tLSBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2Zp cHNfZHJiZ19saWIuYy5maXBzCTIwMTYtMDktMDggMTE6Mzc6MzguNzM5NDYwMDI5ICswMjAwCisr Kysgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9maXBzX2RyYmdfbGliLmMJMjAxNi0wOS0wOCAx MTozNzozOC43Mzk0NjAwMjkgKzAyMDAKK0BAIC0wLDAgKzEsNTU1IEBACisrLyogV3JpdHRlbiBi eSBEciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRoZSBPcGVuU1NM CisrICogcHJvamVjdC4KKysgKi8KKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykg MjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAq IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg b3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0 IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRp c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo dAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAq ICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0 aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcg bWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0 d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAi VGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQ cm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3 dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQi IGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3Jz ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQK KysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24s IHBsZWFzZSBjb250YWN0CisrICogICAgbGljZW5zaW5nQE9wZW5TU0wub3JnLgorKyAqCisrICog NS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQg Ik9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVz IHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wg UHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29l dmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysg KiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3Bl blNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRw Oi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE IEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQg T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF CisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U IFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwg RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICog Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD RVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS UlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdB WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBP RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKi8K KysKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Cisr I2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorKyNp bmNsdWRlICJpbnRlcm5hbC9maXBzX2ludC5oIgorKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHNfcmFu ZC5oPgorKyNpbmNsdWRlICJmaXBzX2xvY2wuaCIKKysjaW5jbHVkZSAiZmlwc19yYW5kX2xjbC5o IgorKworKy8qIFN1cHBvcnQgZnJhbWV3b3JrIGZvciBTUDgwMC05MCBEUkJHcyAqLworKworK2lu dCBGSVBTX2RyYmdfaW5pdChEUkJHX0NUWCAqZGN0eCwgaW50IHR5cGUsIHVuc2lnbmVkIGludCBm bGFncykKKyt7CisrICAgIGludCBydjsKKysgICAgbWVtc2V0KGRjdHgsIDAsIHNpemVvZihEUkJH X0NUWCkpOworKyAgICBkY3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19VTklOSVRJQUxJU0VEOwor KyAgICBkY3R4LT54ZmxhZ3MgPSBmbGFnczsKKysgICAgZGN0eC0+dHlwZSA9IHR5cGU7CisrCisr ICAgIGRjdHgtPmlmbGFncyA9IDA7CisrICAgIGRjdHgtPmVudHJvcHlfYmxvY2tsZW4gPSAwOwor KyAgICBkY3R4LT5oZWFsdGhfY2hlY2tfY250ID0gMDsKKysgICAgZGN0eC0+aGVhbHRoX2NoZWNr X2ludGVydmFsID0gRFJCR19IRUFMVEhfSU5URVJWQUw7CisrCisrICAgIHJ2ID0gZmlwc19kcmJn X2hhc2hfaW5pdChkY3R4KTsKKysKKysgICAgaWYgKHJ2ID09IC0yKQorKyAgICAgICAgcnYgPSBm aXBzX2RyYmdfY3RyX2luaXQoZGN0eCk7CisrICAgIGlmIChydiA9PSAtMikKKysgICAgICAgIHJ2 ID0gZmlwc19kcmJnX2htYWNfaW5pdChkY3R4KTsKKysKKysgICAgaWYgKHJ2IDw9IDApIHsKKysg ICAgICAgIGlmIChydiA9PSAtMikKKysgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RS QkdfSU5JVCwgRklQU19SX1VOU1VQUE9SVEVEX0RSQkdfVFlQRSk7CisrICAgICAgICBlbHNlCisr ICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0lOSVQsIEZJUFNfUl9FUlJPUl9J TklUSUFMSVNJTkdfRFJCRyk7CisrICAgIH0KKysKKysgICAgLyogSWYgbm90IGluIHRlc3QgbW9k ZSBydW4gc2VsZnRlc3RzIG9uIERSQkcgb2YgdGhlIHNhbWUgdHlwZSAqLworKworKyAgICBpZiAo IShkY3R4LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCkpIHsKKysgICAgICAgIGlmICghRklQU19k cmJnX2hlYWx0aF9jaGVjayhkY3R4KSkgeworKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJ UFNfRFJCR19JTklULCBGSVBTX1JfU0VMRlRFU1RfRkFJTFVSRSk7CisrICAgICAgICAgICAgcmV0 dXJuIDA7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgcmV0dXJuIHJ2OworK30KKysKKytE UkJHX0NUWCAqRklQU19kcmJnX25ldyhpbnQgdHlwZSwgdW5zaWduZWQgaW50IGZsYWdzKQorK3sK KysgICAgRFJCR19DVFggKmRjdHg7CisrICAgIGRjdHggPSBPUEVOU1NMX21hbGxvYyhzaXplb2Yo RFJCR19DVFgpKTsKKysgICAgaWYgKCFkY3R4KSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9G SVBTX0RSQkdfTkVXLCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CisrICAgICAgICByZXR1cm4gTlVM TDsKKysgICAgfQorKworKyAgICBpZiAodHlwZSA9PSAwKSB7CisrICAgICAgICBtZW1zZXQoZGN0 eCwgMCwgc2l6ZW9mKERSQkdfQ1RYKSk7CisrICAgICAgICBkY3R4LT50eXBlID0gMDsKKysgICAg ICAgIGRjdHgtPnN0YXR1cyA9IERSQkdfU1RBVFVTX1VOSU5JVElBTElTRUQ7CisrICAgICAgICBy ZXR1cm4gZGN0eDsKKysgICAgfQorKworKyAgICBpZiAoRklQU19kcmJnX2luaXQoZGN0eCwgdHlw ZSwgZmxhZ3MpIDw9IDApIHsKKysgICAgICAgIE9QRU5TU0xfZnJlZShkY3R4KTsKKysgICAgICAg IHJldHVybiBOVUxMOworKyAgICB9CisrCisrICAgIHJldHVybiBkY3R4OworK30KKysKKyt2b2lk IEZJUFNfZHJiZ19mcmVlKERSQkdfQ1RYICpkY3R4KQorK3sKKysgICAgaWYgKGRjdHgtPnVuaW5z dGFudGlhdGUpCisrICAgICAgICBkY3R4LT51bmluc3RhbnRpYXRlKGRjdHgpOworKyAgICAvKiBE b24ndCBmcmVlIHVwIGRlZmF1bHQgRFJCRyAqLworKyAgICBpZiAoZGN0eCA9PSBGSVBTX2dldF9k ZWZhdWx0X2RyYmcoKSkgeworKyAgICAgICAgbWVtc2V0KGRjdHgsIDAsIHNpemVvZihEUkJHX0NU WCkpOworKyAgICAgICAgZGN0eC0+dHlwZSA9IDA7CisrICAgICAgICBkY3R4LT5zdGF0dXMgPSBE UkJHX1NUQVRVU19VTklOSVRJQUxJU0VEOworKyAgICB9IGVsc2UgeworKyAgICAgICAgT1BFTlNT TF9jbGVhbnNlKCZkY3R4LT5kLCBzaXplb2YoZGN0eC0+ZCkpOworKyAgICAgICAgT1BFTlNTTF9m cmVlKGRjdHgpOworKyAgICB9CisrfQorKworK3N0YXRpYyBzaXplX3QgZmlwc19nZXRfZW50cm9w eShEUkJHX0NUWCAqZGN0eCwgdW5zaWduZWQgY2hhciAqKnBvdXQsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBlbnRyb3B5LCBzaXplX3QgbWluX2xlbiwgc2l6ZV90IG1heF9s ZW4pCisreworKyAgICB1bnNpZ25lZCBjaGFyICp0b3V0LCAqcDsKKysgICAgc2l6ZV90IGJsID0g ZGN0eC0+ZW50cm9weV9ibG9ja2xlbiwgcnY7CisrICAgIGlmICghZGN0eC0+Z2V0X2VudHJvcHkp CisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKGRjdHgtPnhmbGFncyAmIERSQkdfRkxBR19U RVNUIHx8ICFibCkKKysgICAgICAgIHJldHVybiBkY3R4LT5nZXRfZW50cm9weShkY3R4LCBwb3V0 LCBlbnRyb3B5LCBtaW5fbGVuLCBtYXhfbGVuKTsKKysgICAgcnYgPSBkY3R4LT5nZXRfZW50cm9w eShkY3R4LCAmdG91dCwgZW50cm9weSArIGJsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg IG1pbl9sZW4gKyBibCwgbWF4X2xlbiArIGJsKTsKKysgICAgaWYgKHRvdXQgPT0gTlVMTCkKKysg ICAgICAgIHJldHVybiAwOworKyAgICAqcG91dCA9IHRvdXQgKyBibDsKKysgICAgaWYgKHJ2IDwg KG1pbl9sZW4gKyBibCkgfHwgKHJ2ICUgYmwpKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIC8q IENvbXBhcmUgY29uc2VjdXRpdmUgYmxvY2tzIGZvciBjb250aW51b3VzIFBSTkcgdGVzdCAqLwor KyAgICBmb3IgKHAgPSB0b3V0OyBwIDwgdG91dCArIHJ2IC0gYmw7IHAgKz0gYmwpIHsKKysgICAg ICAgIGlmICghbWVtY21wKHAsIHAgKyBibCwgYmwpKSB7CisrICAgICAgICAgICAgRklQU2VycihG SVBTX0ZfRklQU19HRVRfRU5UUk9QWSwgRklQU19SX0VOVFJPUFlfU09VUkNFX1NUVUNLKTsKKysg ICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIH0KKysgICAgfQorKyAgICBydiAtPSBibDsK KysgICAgaWYgKHJ2ID4gbWF4X2xlbikKKysgICAgICAgIHJldHVybiBtYXhfbGVuOworKyAgICBy ZXR1cm4gcnY7CisrfQorKworK3N0YXRpYyB2b2lkIGZpcHNfY2xlYW51cF9lbnRyb3B5KERSQkdf Q1RYICpkY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo YXIgKm91dCwgc2l6ZV90IG9sZW4pCisreworKyAgICBzaXplX3QgYmw7CisrICAgIGlmIChkY3R4 LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCkKKysgICAgICAgIGJsID0gMDsKKysgICAgZWxzZQor KyAgICAgICAgYmwgPSBkY3R4LT5lbnRyb3B5X2Jsb2NrbGVuOworKyAgICAvKiBDYWxsIGNsZWFu dXAgd2l0aCBvcmlnaW5hbCBhcmd1bWVudHMgKi8KKysgICAgZGN0eC0+Y2xlYW51cF9lbnRyb3B5 KGRjdHgsIG91dCAtIGJsLCBvbGVuICsgYmwpOworK30KKysKKytpbnQgRklQU19kcmJnX2luc3Rh bnRpYXRlKERSQkdfQ1RYICpkY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dW5zaWduZWQgY2hhciAqcGVycywgc2l6ZV90IHBlcnNsZW4pCisreworKyAgICBzaXplX3QgZW50 bGVuID0gMCwgbm9uY2VsZW4gPSAwOworKyAgICB1bnNpZ25lZCBjaGFyICpub25jZSA9IE5VTEws ICplbnRyb3B5ID0gTlVMTDsKKysKKysjaWYgMAorKyAgICAvKiBQdXQgaGVyZSBzbyBlcnJvciBz Y3JpcHQgcGlja3MgdGhlbSB1cCAqLworKyAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfSU5T VEFOVElBVEUsCisrICAgICAgICAgICAgRklQU19SX1BFUlNPTkFMSVNBVElPTl9TVFJJTkdfVE9P X0xPTkcpOworKyAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfSU5TVEFOVElBVEUsIEZJUFNf Ul9JTl9FUlJPUl9TVEFURSk7CisrICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19JTlNUQU5U SUFURSwgRklQU19SX0FMUkVBRFlfSU5TVEFOVElBVEVEKTsKKysgICAgRklQU2VycihGSVBTX0Zf RklQU19EUkJHX0lOU1RBTlRJQVRFLCBGSVBTX1JfRVJST1JfUkVUUklFVklOR19FTlRST1BZKTsK KysgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0lOU1RBTlRJQVRFLCBGSVBTX1JfRVJST1Jf UkVUUklFVklOR19OT05DRSk7CisrICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19JTlNUQU5U SUFURSwgRklQU19SX0lOU1RBTlRJQVRFX0VSUk9SKTsKKysgICAgRklQU2VycihGSVBTX0ZfRklQ U19EUkJHX0lOU1RBTlRJQVRFLCBGSVBTX1JfRFJCR19OT1RfSU5JVElBTElTRUQpOworKyNlbmRp ZgorKworKyAgICBpbnQgciA9IDA7CisrCisrICAgIGlmIChwZXJzbGVuID4gZGN0eC0+bWF4X3Bl cnMpIHsKKysgICAgICAgIHIgPSBGSVBTX1JfUEVSU09OQUxJU0FUSU9OX1NUUklOR19UT09fTE9O RzsKKysgICAgICAgIGdvdG8gZW5kOworKyAgICB9CisrCisrICAgIGlmICghZGN0eC0+aW5zdGFu dGlhdGUpIHsKKysgICAgICAgIHIgPSBGSVBTX1JfRFJCR19OT1RfSU5JVElBTElTRUQ7CisrICAg ICAgICBnb3RvIGVuZDsKKysgICAgfQorKworKyAgICBpZiAoZGN0eC0+c3RhdHVzICE9IERSQkdf U1RBVFVTX1VOSU5JVElBTElTRUQpIHsKKysgICAgICAgIGlmIChkY3R4LT5zdGF0dXMgPT0gRFJC R19TVEFUVVNfRVJST1IpCisrICAgICAgICAgICAgciA9IEZJUFNfUl9JTl9FUlJPUl9TVEFURTsK KysgICAgICAgIGVsc2UKKysgICAgICAgICAgICByID0gRklQU19SX0FMUkVBRFlfSU5TVEFOVElB VEVEOworKyAgICAgICAgZ290byBlbmQ7CisrICAgIH0KKysKKysgICAgZGN0eC0+c3RhdHVzID0g RFJCR19TVEFUVVNfRVJST1I7CisrCisrICAgIGVudGxlbiA9IGZpcHNfZ2V0X2VudHJvcHkoZGN0 eCwgJmVudHJvcHksIGRjdHgtPnN0cmVuZ3RoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRjdHgtPm1pbl9lbnRyb3B5LCBkY3R4LT5tYXhfZW50cm9weSk7CisrCisrICAgIGlmIChl bnRsZW4gPCBkY3R4LT5taW5fZW50cm9weSB8fCBlbnRsZW4gPiBkY3R4LT5tYXhfZW50cm9weSkg eworKyAgICAgICAgciA9IEZJUFNfUl9FUlJPUl9SRVRSSUVWSU5HX0VOVFJPUFk7CisrICAgICAg ICBnb3RvIGVuZDsKKysgICAgfQorKworKyAgICBpZiAoZGN0eC0+bWF4X25vbmNlID4gMCAmJiBk Y3R4LT5nZXRfbm9uY2UpIHsKKysgICAgICAgIG5vbmNlbGVuID0gZGN0eC0+Z2V0X25vbmNlKGRj dHgsICZub25jZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjdHgtPnN0 cmVuZ3RoIC8gMiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjdHgtPm1p bl9ub25jZSwgZGN0eC0+bWF4X25vbmNlKTsKKysKKysgICAgICAgIGlmIChub25jZWxlbiA8IGRj dHgtPm1pbl9ub25jZSB8fCBub25jZWxlbiA+IGRjdHgtPm1heF9ub25jZSkgeworKyAgICAgICAg ICAgIHIgPSBGSVBTX1JfRVJST1JfUkVUUklFVklOR19OT05DRTsKKysgICAgICAgICAgICBnb3Rv IGVuZDsKKysgICAgICAgIH0KKysKKysgICAgfQorKworKyAgICBpZiAoIWRjdHgtPmluc3RhbnRp YXRlKGRjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cm9weSwgZW50bGVuLCBu b25jZSwgbm9uY2VsZW4sIHBlcnMsIHBlcnNsZW4pKSB7CisrICAgICAgICByID0gRklQU19SX0VS Uk9SX0lOU1RBTlRJQVRJTkdfRFJCRzsKKysgICAgICAgIGdvdG8gZW5kOworKyAgICB9CisrCisr ICAgIGRjdHgtPnN0YXR1cyA9IERSQkdfU1RBVFVTX1JFQURZOworKyAgICBpZiAoIShkY3R4LT5p ZmxhZ3MgJiBEUkJHX0NVU1RPTV9SRVNFRUQpKQorKyAgICAgICAgZGN0eC0+cmVzZWVkX2NvdW50 ZXIgPSAxOworKworKyBlbmQ6CisrCisrICAgIGlmIChlbnRyb3B5ICYmIGRjdHgtPmNsZWFudXBf ZW50cm9weSkKKysgICAgICAgIGZpcHNfY2xlYW51cF9lbnRyb3B5KGRjdHgsIGVudHJvcHksIGVu dGxlbik7CisrCisrICAgIGlmIChub25jZSAmJiBkY3R4LT5jbGVhbnVwX25vbmNlKQorKyAgICAg ICAgZGN0eC0+Y2xlYW51cF9ub25jZShkY3R4LCBub25jZSwgbm9uY2VsZW4pOworKworKyAgICBp ZiAoZGN0eC0+c3RhdHVzID09IERSQkdfU1RBVFVTX1JFQURZKQorKyAgICAgICAgcmV0dXJuIDE7 CisrCisrICAgIGlmIChyICYmICEoZGN0eC0+aWZsYWdzICYgRFJCR19GTEFHX05PRVJSKSkKKysg ICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19JTlNUQU5USUFURSwgcik7CisrCisrICAg IHJldHVybiAwOworKworK30KKysKKytzdGF0aWMgaW50IGRyYmdfcmVzZWVkKERSQkdfQ1RYICpk Y3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbiwg c2l6ZV90IGFkaW5sZW4sIGludCBoY2hlY2spCisreworKyAgICB1bnNpZ25lZCBjaGFyICplbnRy b3B5ID0gTlVMTDsKKysgICAgc2l6ZV90IGVudGxlbiA9IDA7CisrICAgIGludCByID0gMDsKKysK KysjaWYgMAorKyAgICBGSVBTZXJyKEZJUFNfRl9EUkJHX1JFU0VFRCwgRklQU19SX05PVF9JTlNU QU5USUFURUQpOworKyAgICBGSVBTZXJyKEZJUFNfRl9EUkJHX1JFU0VFRCwgRklQU19SX0FERElU SU9OQUxfSU5QVVRfVE9PX0xPTkcpOworKyNlbmRpZgorKyAgICBpZiAoZGN0eC0+c3RhdHVzICE9 IERSQkdfU1RBVFVTX1JFQURZCisrICAgICAgICAmJiBkY3R4LT5zdGF0dXMgIT0gRFJCR19TVEFU VVNfUkVTRUVEKSB7CisrICAgICAgICBpZiAoZGN0eC0+c3RhdHVzID09IERSQkdfU1RBVFVTX0VS Uk9SKQorKyAgICAgICAgICAgIHIgPSBGSVBTX1JfSU5fRVJST1JfU1RBVEU7CisrICAgICAgICBl bHNlIGlmIChkY3R4LT5zdGF0dXMgPT0gRFJCR19TVEFUVVNfVU5JTklUSUFMSVNFRCkKKysgICAg ICAgICAgICByID0gRklQU19SX05PVF9JTlNUQU5USUFURUQ7CisrICAgICAgICBnb3RvIGVuZDsK KysgICAgfQorKworKyAgICBpZiAoIWFkaW4pCisrICAgICAgICBhZGlubGVuID0gMDsKKysgICAg ZWxzZSBpZiAoYWRpbmxlbiA+IGRjdHgtPm1heF9hZGluKSB7CisrICAgICAgICByID0gRklQU19S X0FERElUSU9OQUxfSU5QVVRfVE9PX0xPTkc7CisrICAgICAgICBnb3RvIGVuZDsKKysgICAgfQor KworKyAgICBkY3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19FUlJPUjsKKysgICAgLyogUGVmb3Jt IGhlYWx0aCBjaGVjayBvbiBhbGwgcmVzZWVkIG9wZXJhdGlvbnMgaWYgbm90IGEgcHJlZGljdGlv bgorKyAgICAgKiByZXNpc3RhbmNlIHJlcXVlc3QgYW5kIG5vdCBpbiB0ZXN0IG1vZGUuCisrICAg ICAqLworKyAgICBpZiAoaGNoZWNrICYmICEoZGN0eC0+eGZsYWdzICYgRFJCR19GTEFHX1RFU1Qp KSB7CisrICAgICAgICBpZiAoIUZJUFNfZHJiZ19oZWFsdGhfY2hlY2soZGN0eCkpIHsKKysgICAg ICAgICAgICByID0gRklQU19SX1NFTEZURVNUX0ZBSUxVUkU7CisrICAgICAgICAgICAgZ290byBl bmQ7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgZW50bGVuID0gZmlwc19nZXRfZW50cm9w eShkY3R4LCAmZW50cm9weSwgZGN0eC0+c3RyZW5ndGgsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGN0eC0+bWluX2VudHJvcHksIGRjdHgtPm1heF9lbnRyb3B5KTsKKysKKysgICAg aWYgKGVudGxlbiA8IGRjdHgtPm1pbl9lbnRyb3B5IHx8IGVudGxlbiA+IGRjdHgtPm1heF9lbnRy b3B5KSB7CisrICAgICAgICByID0gRklQU19SX0VSUk9SX1JFVFJJRVZJTkdfRU5UUk9QWTsKKysg ICAgICAgIGdvdG8gZW5kOworKyAgICB9CisrCisrICAgIGlmICghZGN0eC0+cmVzZWVkKGRjdHgs IGVudHJvcHksIGVudGxlbiwgYWRpbiwgYWRpbmxlbikpCisrICAgICAgICBnb3RvIGVuZDsKKysK KysgICAgZGN0eC0+c3RhdHVzID0gRFJCR19TVEFUVVNfUkVBRFk7CisrICAgIGlmICghKGRjdHgt PmlmbGFncyAmIERSQkdfQ1VTVE9NX1JFU0VFRCkpCisrICAgICAgICBkY3R4LT5yZXNlZWRfY291 bnRlciA9IDE7CisrIGVuZDoKKysKKysgICAgaWYgKGVudHJvcHkgJiYgZGN0eC0+Y2xlYW51cF9l bnRyb3B5KQorKyAgICAgICAgZmlwc19jbGVhbnVwX2VudHJvcHkoZGN0eCwgZW50cm9weSwgZW50 bGVuKTsKKysKKysgICAgaWYgKGRjdHgtPnN0YXR1cyA9PSBEUkJHX1NUQVRVU19SRUFEWSkKKysg ICAgICAgIHJldHVybiAxOworKworKyAgICBpZiAociAmJiAhKGRjdHgtPmlmbGFncyAmIERSQkdf RkxBR19OT0VSUikpCisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9EUkJHX1JFU0VFRCwgcik7Cisr CisrICAgIHJldHVybiAwOworK30KKysKKytpbnQgRklQU19kcmJnX3Jlc2VlZChEUkJHX0NUWCAq ZGN0eCwKKysgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGluLCBz aXplX3QgYWRpbmxlbikKKyt7CisrICAgIHJldHVybiBkcmJnX3Jlc2VlZChkY3R4LCBhZGluLCBh ZGlubGVuLCAxKTsKKyt9CisrCisrc3RhdGljIGludCBmaXBzX2RyYmdfY2hlY2soRFJCR19DVFgg KmRjdHgpCisreworKyAgICBpZiAoZGN0eC0+eGZsYWdzICYgRFJCR19GTEFHX1RFU1QpCisrICAg ICAgICByZXR1cm4gMTsKKysgICAgZGN0eC0+aGVhbHRoX2NoZWNrX2NudCsrOworKyAgICBpZiAo ZGN0eC0+aGVhbHRoX2NoZWNrX2NudCA+PSBkY3R4LT5oZWFsdGhfY2hlY2tfaW50ZXJ2YWwpIHsK KysgICAgICAgIGlmICghRklQU19kcmJnX2hlYWx0aF9jaGVjayhkY3R4KSkgeworKyAgICAgICAg ICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19DSEVDSywgRklQU19SX1NFTEZURVNUX0ZBSUxV UkUpOworKyAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgfQorKyAgICB9CisrICAgIHJl dHVybiAxOworK30KKysKKytpbnQgRklQU19kcmJnX2dlbmVyYXRlKERSQkdfQ1RYICpkY3R4LCB1 bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4sCisrICAgICAgICAgICAgICAgICAgICAg ICBpbnQgcHJlZGljdGlvbl9yZXNpc3RhbmNlLAorKyAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgdW5zaWduZWQgY2hhciAqYWRpbiwgc2l6ZV90IGFkaW5sZW4pCisreworKyAgICBpbnQgciA9 IDA7CisrCisrICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7CisrICAgICAgICBGSVBT ZXJyKEZJUFNfRl9GSVBTX0RSQkdfR0VORVJBVEUsIEZJUFNfUl9TRUxGVEVTVF9GQUlMRUQpOwor KyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKysgICAgaWYgKCFmaXBzX2RyYmdfY2hlY2so ZGN0eCkpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgaWYgKGRjdHgtPnN0YXR1cyAhPSBE UkJHX1NUQVRVU19SRUFEWQorKyAgICAgICAgJiYgZGN0eC0+c3RhdHVzICE9IERSQkdfU1RBVFVT X1JFU0VFRCkgeworKyAgICAgICAgaWYgKGRjdHgtPnN0YXR1cyA9PSBEUkJHX1NUQVRVU19FUlJP UikKKysgICAgICAgICAgICByID0gRklQU19SX0lOX0VSUk9SX1NUQVRFOworKyAgICAgICAgZWxz ZSBpZiAoZGN0eC0+c3RhdHVzID09IERSQkdfU1RBVFVTX1VOSU5JVElBTElTRUQpCisrICAgICAg ICAgICAgciA9IEZJUFNfUl9OT1RfSU5TVEFOVElBVEVEOworKyAgICAgICAgZ290byBlbmQ7Cisr ICAgIH0KKysKKysgICAgaWYgKG91dGxlbiA+IGRjdHgtPm1heF9yZXF1ZXN0KSB7CisrICAgICAg ICByID0gRklQU19SX1JFUVVFU1RfVE9PX0xBUkdFX0ZPUl9EUkJHOworKyAgICAgICAgcmV0dXJu IDA7CisrICAgIH0KKysKKysgICAgaWYgKGFkaW5sZW4gPiBkY3R4LT5tYXhfYWRpbikgeworKyAg ICAgICAgciA9IEZJUFNfUl9BRERJVElPTkFMX0lOUFVUX1RPT19MT05HOworKyAgICAgICAgZ290 byBlbmQ7CisrICAgIH0KKysKKysgICAgaWYgKGRjdHgtPmlmbGFncyAmIERSQkdfQ1VTVE9NX1JF U0VFRCkKKysgICAgICAgIGRjdHgtPmdlbmVyYXRlKGRjdHgsIE5VTEwsIG91dGxlbiwgTlVMTCwg MCk7CisrICAgIGVsc2UgaWYgKGRjdHgtPnJlc2VlZF9jb3VudGVyID49IGRjdHgtPnJlc2VlZF9p bnRlcnZhbCkKKysgICAgICAgIGRjdHgtPnN0YXR1cyA9IERSQkdfU1RBVFVTX1JFU0VFRDsKKysK KysgICAgaWYgKGRjdHgtPnN0YXR1cyA9PSBEUkJHX1NUQVRVU19SRVNFRUQgfHwgcHJlZGljdGlv bl9yZXNpc3RhbmNlKSB7CisrICAgICAgICAvKiBJZiBwcmVkaWN0aW9uIHJlc2lzdGFuY2UgcmVx dWVzdCBkb24ndCBkbyBoZWFsdGggY2hlY2sgKi8KKysgICAgICAgIGludCBoY2hlY2sgPSBwcmVk aWN0aW9uX3Jlc2lzdGFuY2UgPyAwIDogMTsKKysKKysgICAgICAgIGlmICghZHJiZ19yZXNlZWQo ZGN0eCwgYWRpbiwgYWRpbmxlbiwgaGNoZWNrKSkgeworKyAgICAgICAgICAgIHIgPSBGSVBTX1Jf UkVTRUVEX0VSUk9SOworKyAgICAgICAgICAgIGdvdG8gZW5kOworKyAgICAgICAgfQorKyAgICAg ICAgYWRpbiA9IE5VTEw7CisrICAgICAgICBhZGlubGVuID0gMDsKKysgICAgfQorKworKyAgICBp ZiAoIWRjdHgtPmdlbmVyYXRlKGRjdHgsIG91dCwgb3V0bGVuLCBhZGluLCBhZGlubGVuKSkgewor KyAgICAgICAgciA9IEZJUFNfUl9HRU5FUkFURV9FUlJPUjsKKysgICAgICAgIGRjdHgtPnN0YXR1 cyA9IERSQkdfU1RBVFVTX0VSUk9SOworKyAgICAgICAgZ290byBlbmQ7CisrICAgIH0KKysgICAg aWYgKCEoZGN0eC0+aWZsYWdzICYgRFJCR19DVVNUT01fUkVTRUVEKSkgeworKyAgICAgICAgaWYg KGRjdHgtPnJlc2VlZF9jb3VudGVyID49IGRjdHgtPnJlc2VlZF9pbnRlcnZhbCkKKysgICAgICAg ICAgICBkY3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19SRVNFRUQ7CisrICAgICAgICBlbHNlCisr ICAgICAgICAgICAgZGN0eC0+cmVzZWVkX2NvdW50ZXIrKzsKKysgICAgfQorKworKyBlbmQ6Cisr ICAgIGlmIChyKSB7CisrICAgICAgICBpZiAoIShkY3R4LT5pZmxhZ3MgJiBEUkJHX0ZMQUdfTk9F UlIpKQorKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19HRU5FUkFURSwgcik7 CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAgICByZXR1cm4gMTsKKyt9CisrCisr aW50IEZJUFNfZHJiZ191bmluc3RhbnRpYXRlKERSQkdfQ1RYICpkY3R4KQorK3sKKysgICAgaW50 IHJ2OworKyAgICBpZiAoIWRjdHgtPnVuaW5zdGFudGlhdGUpCisrICAgICAgICBydiA9IDE7Cisr ICAgIGVsc2UKKysgICAgICAgIHJ2ID0gZGN0eC0+dW5pbnN0YW50aWF0ZShkY3R4KTsKKysgICAg LyogQWx0aG91Z2ggd2UnZCBsaWtlIHRvIGNsZWFuc2UgaGVyZSB3ZSBjYW4ndCBiZWNhdXNlIHdl IGhhdmUgdG8KKysgICAgICogdGVzdCB0aGUgdW5pbnN0YW50aWF0ZSByZWFsbHkgemVyb2VzIHRo ZSBkYXRhLgorKyAgICAgKi8KKysgICAgbWVtc2V0KCZkY3R4LT5kLCAwLCBzaXplb2YoZGN0eC0+ ZCkpOworKyAgICBkY3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19VTklOSVRJQUxJU0VEOworKyAg ICAvKiBJZiBtZXRob2QgaGFzIHByb2JsZW1zIHVuaW5zdGFudGlhdGluZywgcmV0dXJuIGVycm9y ICovCisrICAgIHJldHVybiBydjsKKyt9CisrCisraW50IEZJUFNfZHJiZ19zZXRfY2FsbGJhY2tz KERSQkdfQ1RYICpkY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKCpn ZXRfZW50cm9weSkgKERSQkdfQ1RYICpjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKnBvdXQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVudHJvcHksCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90 IG1pbl9sZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZV90IG1heF9sZW4pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk ICgqY2xlYW51cF9lbnRyb3B5KSAoRFJCR19DVFggKmN0eCwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf dCBvbGVuKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGVudHJvcHlfYmxv Y2tsZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAoKmdldF9ub25jZSkg KERSQkdfQ1RYICpjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKipwb3V0LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW50cm9weSwgc2l6ZV90IG1pbl9sZW4sCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBt YXhfbGVuKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmNsZWFudXBfbm9u Y2UpIChEUkJHX0NUWCAqY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dCwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2xlbikpCisreworKyAgICBp ZiAoZGN0eC0+c3RhdHVzICE9IERSQkdfU1RBVFVTX1VOSU5JVElBTElTRUQpCisrICAgICAgICBy ZXR1cm4gMDsKKysgICAgZGN0eC0+ZW50cm9weV9ibG9ja2xlbiA9IGVudHJvcHlfYmxvY2tsZW47 CisrICAgIGRjdHgtPmdldF9lbnRyb3B5ID0gZ2V0X2VudHJvcHk7CisrICAgIGRjdHgtPmNsZWFu dXBfZW50cm9weSA9IGNsZWFudXBfZW50cm9weTsKKysgICAgZGN0eC0+Z2V0X25vbmNlID0gZ2V0 X25vbmNlOworKyAgICBkY3R4LT5jbGVhbnVwX25vbmNlID0gY2xlYW51cF9ub25jZTsKKysgICAg cmV0dXJuIDE7CisrfQorKworK2ludCBGSVBTX2RyYmdfc2V0X3JhbmRfY2FsbGJhY2tzKERSQkdf Q1RYICpkY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAoKmdl dF9hZGluKSAoRFJCR19DVFggKmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKipwb3V0KSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqY2xlYW51cF9hZGluKSAoRFJCR19DVFggKmN0 eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgY2hhciAqb3V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2xlbiksCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50ICgqcmFuZF9zZWVkX2NiKSAoRFJCR19DVFggKmN0eCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2 b2lkICpidWYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IG51bSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 ICgqcmFuZF9hZGRfY2IpIChEUkJHX0NUWCAqY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYnVmLCBpbnQgbnVtLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91 YmxlIGVudHJvcHkpKQorK3sKKysgICAgaWYgKGRjdHgtPnN0YXR1cyAhPSBEUkJHX1NUQVRVU19V TklOSVRJQUxJU0VEKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGRjdHgtPmdldF9hZGluID0g Z2V0X2FkaW47CisrICAgIGRjdHgtPmNsZWFudXBfYWRpbiA9IGNsZWFudXBfYWRpbjsKKysgICAg ZGN0eC0+cmFuZF9zZWVkX2NiID0gcmFuZF9zZWVkX2NiOworKyAgICBkY3R4LT5yYW5kX2FkZF9j YiA9IHJhbmRfYWRkX2NiOworKyAgICByZXR1cm4gMTsKKyt9CisrCisrdm9pZCAqRklQU19kcmJn X2dldF9hcHBfZGF0YShEUkJHX0NUWCAqZGN0eCkKKyt7CisrICAgIHJldHVybiBkY3R4LT5hcHBf ZGF0YTsKKyt9CisrCisrdm9pZCBGSVBTX2RyYmdfc2V0X2FwcF9kYXRhKERSQkdfQ1RYICpkY3R4 LCB2b2lkICphcHBfZGF0YSkKKyt7CisrICAgIGRjdHgtPmFwcF9kYXRhID0gYXBwX2RhdGE7Cisr fQorKworK3NpemVfdCBGSVBTX2RyYmdfZ2V0X2Jsb2NrbGVuZ3RoKERSQkdfQ1RYICpkY3R4KQor K3sKKysgICAgcmV0dXJuIGRjdHgtPmJsb2NrbGVuZ3RoOworK30KKysKKytpbnQgRklQU19kcmJn X2dldF9zdHJlbmd0aChEUkJHX0NUWCAqZGN0eCkKKyt7CisrICAgIHJldHVybiBkY3R4LT5zdHJl bmd0aDsKKyt9CisrCisrdm9pZCBGSVBTX2RyYmdfc2V0X2NoZWNrX2ludGVydmFsKERSQkdfQ1RY ICpkY3R4LCBpbnQgaW50ZXJ2YWwpCisreworKyAgICBkY3R4LT5oZWFsdGhfY2hlY2tfaW50ZXJ2 YWwgPSBpbnRlcnZhbDsKKyt9CisrCisrdm9pZCBGSVBTX2RyYmdfc2V0X3Jlc2VlZF9pbnRlcnZh bChEUkJHX0NUWCAqZGN0eCwgaW50IGludGVydmFsKQorK3sKKysgICAgZGN0eC0+cmVzZWVkX2lu dGVydmFsID0gaW50ZXJ2YWw7CisrfQorKworK3N0YXRpYyBpbnQgZHJiZ19zdGljayA9IDA7Cisr Cisrdm9pZCBGSVBTX2RyYmdfc3RpY2soaW50IG9ub2ZmKQorK3sKKysgICAgZHJiZ19zdGljayA9 IG9ub2ZmOworK30KKysKKysvKiBDb250aW51b3VzIERSQkcgdXRpbGl0eSBmdW5jdGlvbiAqLwor K2ludCBmaXBzX2RyYmdfY3BybmdfdGVzdChEUkJHX0NUWCAqZGN0eCwgY29uc3QgdW5zaWduZWQg Y2hhciAqb3V0KQorK3sKKysgICAgLyogTm8gQ1BSTkcgaW4gdGVzdCBtb2RlICovCisrICAgIGlm IChkY3R4LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCkKKysgICAgICAgIHJldHVybiAxOworKyAg ICAvKiBDaGVjayBibG9jayBpcyB2YWxpZDogc2hvdWxkIG5ldmVyIGhhcHBlbiAqLworKyAgICBp ZiAoZGN0eC0+bGJfdmFsaWQgPT0gMCkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19E UkJHX0NQUk5HX1RFU1QsIEZJUFNfUl9JTlRFUk5BTF9FUlJPUik7CisrICAgICAgICBmaXBzX3Nl dF9zZWxmdGVzdF9mYWlsKCk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyAgICBpZiAo ZHJiZ19zdGljaykKKysgICAgICAgIG1lbWNweShkY3R4LT5sYiwgb3V0LCBkY3R4LT5ibG9ja2xl bmd0aCk7CisrICAgIC8qIENoZWNrIGFnYWluc3QgbGFzdCBibG9jazogZmFpbCBpZiBtYXRjaCAq LworKyAgICBpZiAoIW1lbWNtcChkY3R4LT5sYiwgb3V0LCBkY3R4LT5ibG9ja2xlbmd0aCkpIHsK KysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19DUFJOR19URVNULCBGSVBTX1JfRFJC R19TVFVDSyk7CisrICAgICAgICBmaXBzX3NldF9zZWxmdGVzdF9mYWlsKCk7CisrICAgICAgICBy ZXR1cm4gMDsKKysgICAgfQorKyAgICAvKiBTYXZlIGxhc3QgYmxvY2sgZm9yIG5leHQgY29tcGFy aXNvbiAqLworKyAgICBtZW1jcHkoZGN0eC0+bGIsIG91dCwgZGN0eC0+YmxvY2tsZW5ndGgpOwor KyAgICByZXR1cm4gMTsKKyt9CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2Zp cHNfZHJiZ19yYW5kLmMuZmlwcyBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19y YW5kLmMKKy0tLSBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19yYW5kLmMuZmlw cwkyMDE2LTA5LTA4IDExOjM3OjM4LjczOTQ2MDAyOSArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAv Y3J5cHRvL2ZpcHMvZmlwc19kcmJnX3JhbmQuYwkyMDE2LTA5LTA4IDExOjM3OjM4LjczOTQ2MDAy OSArMDIwMAorQEAgLTAsMCArMSwxODMgQEAKKysvKiBmaXBzL3JhbmQvZmlwc19kcmJnX3JhbmQu YyAqLworKy8qIFdyaXR0ZW4gYnkgRHIgU3RlcGhlbiBOIEhlbnNvbiAoc3RldmVAb3BlbnNzbC5v cmcpIGZvciB0aGUgT3BlblNTTAorKyAqIHByb2plY3QuCisrICovCisrLyogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KysgKiBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMg cmVzZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0 OgorKyAqCisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu IHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorKyAqCisrICogMi4gUmVkaXN0cmli dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK KysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIgaW4KKysgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0 ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisrICogICAgZGlzdHJpYnV0aW9uLgorKyAqCisrICog My4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBv ZiB0aGlzCisrICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93 bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9w ZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wg VG9vbGtpdC4gKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKKysgKgorKyAqIDQuIFRoZSBuYW1l cyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNl ZCB0bworKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhp cyBzb2Z0d2FyZSB3aXRob3V0CisrICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Ig d3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAorKyAqICAgIGxpY2Vuc2luZ0BPcGVu U1NMLm9yZy4KKysgKgorKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJl IG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFw cGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAgICBwZXJtaXNz aW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCisrICoKKysgKiA2LiBSZWRpc3RyaWJ1dGlvbnMg b2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisrICogICAg YWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBk ZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9w ZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICogVEhJUyBT T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQg QU5ZCisrICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg Tk9UIExJTUlURUQgVE8sIFRIRQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NM QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisrICogSVRT IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO VEFMLAorKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ TkNMVURJTkcsIEJVVAorKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAqIFNUUklDVCBM SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysg KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF TiBJRiBBRFZJU0VECisrICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAq ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CisrICovCisrCisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxv cGVuc3NsL2NyeXB0by5oPgorKyNpbmNsdWRlICJpbnRlcm5hbC90aHJlYWRfb25jZS5oIgorKyNp bmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKysjaW5j bHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwc19yYW5kLmg+Cisr I2luY2x1ZGUgImZpcHNfcmFuZF9sY2wuaCIKKysKKysvKiBNYXBwaW5nIG9mIFNQODAwLTkwIERS QkdzIHRvIE9wZW5TU0wgUkFORF9NRVRIT0QgKi8KKysKKysvKiBTaW5jZSB3ZSBvbmx5IGhhdmUg b25lIGdsb2JhbCBQUk5HIHVzZWQgYXQgYW55IHRpbWUgaW4gT3BlblNTTCB1c2UgYSBnbG9iYWwK KysgKiB2YXJpYWJsZSB0byBzdG9yZSBjb250ZXh0LgorKyAqLworKworK3N0YXRpYyBEUkJHX0NU WCBvc3NsX2RjdHg7CisrCisrc3RhdGljIENSWVBUT19SV0xPQ0sgKmZpcHNfcmFuZF9sb2NrID0g TlVMTDsKKytzdGF0aWMgQ1JZUFRPX09OQ0UgZmlwc19yYW5kX2xvY2tfaW5pdCA9IENSWVBUT19P TkNFX1NUQVRJQ19JTklUOworKworK0RFRklORV9SVU5fT05DRV9TVEFUSUMoZG9fZmlwc19yYW5k X2xvY2tfaW5pdCkKKyt7CisrICAgIGZpcHNfcmFuZF9sb2NrID0gQ1JZUFRPX1RIUkVBRF9sb2Nr X25ldygpOworKyAgICByZXR1cm4gZmlwc19yYW5kX2xvY2sgIT0gTlVMTDsKKyt9CisrCisrRFJC R19DVFggKkZJUFNfZ2V0X2RlZmF1bHRfZHJiZyh2b2lkKQorK3sKKysgICAgaWYgKCFSVU5fT05D RSgmZmlwc19yYW5kX2xvY2tfaW5pdCwgZG9fZmlwc19yYW5kX2xvY2tfaW5pdCkpCisrICAgICAg ICByZXR1cm4gTlVMTDsKKysgICAgcmV0dXJuICZvc3NsX2RjdHg7CisrfQorKworK3N0YXRpYyBp bnQgZmlwc19kcmJnX2J5dGVzKHVuc2lnbmVkIGNoYXIgKm91dCwgaW50IGNvdW50KQorK3sKKysg ICAgRFJCR19DVFggKmRjdHggPSAmb3NzbF9kY3R4OworKyAgICBpbnQgcnYgPSAwOworKyAgICB1 bnNpZ25lZCBjaGFyICphZGluID0gTlVMTDsKKysgICAgc2l6ZV90IGFkaW5sZW4gPSAwOworKyAg ICBDUllQVE9fVEhSRUFEX3dyaXRlX2xvY2soZmlwc19yYW5kX2xvY2spOworKyAgICBkbyB7Cisr ICAgICAgICBzaXplX3QgcmNudDsKKysgICAgICAgIGlmIChjb3VudCA+IChpbnQpZGN0eC0+bWF4 X3JlcXVlc3QpCisrICAgICAgICAgICAgcmNudCA9IGRjdHgtPm1heF9yZXF1ZXN0OworKyAgICAg ICAgZWxzZQorKyAgICAgICAgICAgIHJjbnQgPSBjb3VudDsKKysgICAgICAgIGlmIChkY3R4LT5n ZXRfYWRpbikgeworKyAgICAgICAgICAgIGFkaW5sZW4gPSBkY3R4LT5nZXRfYWRpbihkY3R4LCAm YWRpbik7CisrICAgICAgICAgICAgaWYgKGFkaW5sZW4gJiYgIWFkaW4pIHsKKysgICAgICAgICAg ICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0JZVEVTLAorKyAgICAgICAgICAgICAgICAg ICAgICAgIEZJUFNfUl9FUlJPUl9SRVRSSUVWSU5HX0FERElUSU9OQUxfSU5QVVQpOworKyAgICAg ICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAg ICBydiA9IEZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCBvdXQsIHJjbnQsIDAsIGFkaW4sIGFkaW5s ZW4pOworKyAgICAgICAgaWYgKGFkaW4pIHsKKysgICAgICAgICAgICBpZiAoZGN0eC0+Y2xlYW51 cF9hZGluKQorKyAgICAgICAgICAgICAgICBkY3R4LT5jbGVhbnVwX2FkaW4oZGN0eCwgYWRpbiwg YWRpbmxlbik7CisrICAgICAgICAgICAgYWRpbiA9IE5VTEw7CisrICAgICAgICB9CisrICAgICAg ICBpZiAoIXJ2KQorKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgb3V0ICs9IHJjbnQ7 CisrICAgICAgICBjb3VudCAtPSByY250OworKyAgICB9CisrICAgIHdoaWxlIChjb3VudCk7Cisr ICAgIHJ2ID0gMTsKKysgZXJyOgorKyAgICBDUllQVE9fVEhSRUFEX3VubG9jayhmaXBzX3JhbmRf bG9jayk7CisrICAgIHJldHVybiBydjsKKyt9CisrCisrc3RhdGljIGludCBmaXBzX2RyYmdfcHNl dWRvKHVuc2lnbmVkIGNoYXIgKm91dCwgaW50IGNvdW50KQorK3sKKysgICAgaWYgKGZpcHNfZHJi Z19ieXRlcyhvdXQsIGNvdW50KSA8PSAwKQorKyAgICAgICAgcmV0dXJuIC0xOworKyAgICByZXR1 cm4gMTsKKyt9CisrCisrc3RhdGljIGludCBmaXBzX2RyYmdfc3RhdHVzKHZvaWQpCisreworKyAg ICBEUkJHX0NUWCAqZGN0eCA9ICZvc3NsX2RjdHg7CisrICAgIGludCBydjsKKysgICAgQ1JZUFRP X1RIUkVBRF9yZWFkX2xvY2soZmlwc19yYW5kX2xvY2spOworKyAgICBydiA9IGRjdHgtPnN0YXR1 cyA9PSBEUkJHX1NUQVRVU19SRUFEWSA/IDEgOiAwOworKyAgICBDUllQVE9fVEhSRUFEX3VubG9j ayhmaXBzX3JhbmRfbG9jayk7CisrICAgIHJldHVybiBydjsKKyt9CisrCisrc3RhdGljIHZvaWQg Zmlwc19kcmJnX2NsZWFudXAodm9pZCkKKyt7CisrICAgIERSQkdfQ1RYICpkY3R4ID0gJm9zc2xf ZGN0eDsKKysgICAgQ1JZUFRPX1RIUkVBRF93cml0ZV9sb2NrKGZpcHNfcmFuZF9sb2NrKTsKKysg ICAgRklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCk7CisrICAgIENSWVBUT19USFJFQURfdW5s b2NrKGZpcHNfcmFuZF9sb2NrKTsKKyt9CisrCisrc3RhdGljIGludCBmaXBzX2RyYmdfc2VlZChj b25zdCB2b2lkICpzZWVkLCBpbnQgc2VlZGxlbikKKyt7CisrICAgIERSQkdfQ1RYICpkY3R4ID0g Jm9zc2xfZGN0eDsKKysgICAgQ1JZUFRPX1RIUkVBRF93cml0ZV9sb2NrKGZpcHNfcmFuZF9sb2Nr KTsKKysgICAgaWYgKGRjdHgtPnJhbmRfc2VlZF9jYikKKysgICAgICAgIHJldHVybiBkY3R4LT5y YW5kX3NlZWRfY2IoZGN0eCwgc2VlZCwgc2VlZGxlbik7CisrICAgIENSWVBUT19USFJFQURfdW5s b2NrKGZpcHNfcmFuZF9sb2NrKTsKKysgICAgcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyBpbnQg Zmlwc19kcmJnX2FkZChjb25zdCB2b2lkICpzZWVkLCBpbnQgc2VlZGxlbiwgZG91YmxlIGFkZF9l bnRyb3B5KQorK3sKKysgICAgRFJCR19DVFggKmRjdHggPSAmb3NzbF9kY3R4OworKyAgICBDUllQ VE9fVEhSRUFEX3dyaXRlX2xvY2soZmlwc19yYW5kX2xvY2spOworKyAgICBpZiAoZGN0eC0+cmFu ZF9hZGRfY2IpCisrICAgICAgICByZXR1cm4gZGN0eC0+cmFuZF9hZGRfY2IoZGN0eCwgc2VlZCwg c2VlZGxlbiwgYWRkX2VudHJvcHkpOworKyAgICBDUllQVE9fVEhSRUFEX3VubG9jayhmaXBzX3Jh bmRfbG9jayk7CisrICAgIHJldHVybiAxOworK30KKysKKytzdGF0aWMgY29uc3QgUkFORF9NRVRI T0QgcmFuZF9kcmJnX21ldGggPSB7CisrICAgIGZpcHNfZHJiZ19zZWVkLAorKyAgICBmaXBzX2Ry YmdfYnl0ZXMsCisrICAgIGZpcHNfZHJiZ19jbGVhbnVwLAorKyAgICBmaXBzX2RyYmdfYWRkLAor KyAgICBmaXBzX2RyYmdfcHNldWRvLAorKyAgICBmaXBzX2RyYmdfc3RhdHVzCisrfTsKKysKKytj b25zdCBSQU5EX01FVEhPRCAqRklQU19kcmJnX21ldGhvZCh2b2lkKQorK3sKKysgICAgcmV0dXJu ICZyYW5kX2RyYmdfbWV0aDsKKyt9CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBz L2ZpcHNfZHJiZ19zZWxmdGVzdC5jLmZpcHMgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9maXBz X2RyYmdfc2VsZnRlc3QuYworLS0tIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19kcmJn X3NlbGZ0ZXN0LmMuZmlwcwkyMDE2LTA5LTA4IDExOjM3OjM4Ljc0MDQ2MDA1MiArMDIwMAorKysr IG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX3NlbGZ0ZXN0LmMJMjAxNi0wOS0w OCAxMTozNzozOC43NDA0NjAwNTIgKzAyMDAKK0BAIC0wLDAgKzEsODI4IEBACisrLyogZmlwcy9y YW5kL2ZpcHNfZHJiZ19zZWxmdGVzdC5jICovCisrLyogV3JpdHRlbiBieSBEciBTdGVwaGVuIE4g SGVuc29uIChzdGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRoZSBPcGVuU1NMCisrICogcHJvamVjdC4K KysgKi8KKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNT TCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9u IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAq IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4g CisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1 Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVu dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBk aXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRp b25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3Bs YXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGlu Y2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAg Zm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8p IgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQ cm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHBy b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3 cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0 CisrICogICAgbGljZW5zaW5nQE9wZW5TU0wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVy aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICog ICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Ig d3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgor KyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWlu IHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9k dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Cisr ICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5TU0wu b3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NM IFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJS QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS CisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVu U1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8s IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBP RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBI T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g Q09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ R0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJ VFkgT0YgU1VDSCBEQU1BR0UuCisrICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKi8KKysKKysjaW5jbHVkZSA8 c3RyaW5nLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+CisrI2luY2x1ZGUgPG9wZW5z c2wvZXJyLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorKyNpbmNsdWRlIDxvcGVuc3Ns L2ZpcHNfcmFuZC5oPgorKyNpbmNsdWRlICJmaXBzX3JhbmRfbGNsLmgiCisrI2luY2x1ZGUgImZp cHNfbG9jbC5oIgorKworKyNpbmNsdWRlICJmaXBzX2RyYmdfc2VsZnRlc3QuaCIKKysKKyt0eXBl ZGVmIHN0cnVjdCB7CisrICAgIGludCBwb3N0OworKyAgICBpbnQgbmlkOworKyAgICB1bnNpZ25l ZCBpbnQgZmxhZ3M7CisrCisrICAgIC8qIEtBVCBkYXRhIGZvciBubyBQUiAqLworKyAgICBjb25z dCB1bnNpZ25lZCBjaGFyICplbnQ7CisrICAgIHNpemVfdCBlbnRsZW47CisrICAgIGNvbnN0IHVu c2lnbmVkIGNoYXIgKm5vbmNlOworKyAgICBzaXplX3Qgbm9uY2VsZW47CisrICAgIGNvbnN0IHVu c2lnbmVkIGNoYXIgKnBlcnM7CisrICAgIHNpemVfdCBwZXJzbGVuOworKyAgICBjb25zdCB1bnNp Z25lZCBjaGFyICphZGluOworKyAgICBzaXplX3QgYWRpbmxlbjsKKysgICAgY29uc3QgdW5zaWdu ZWQgY2hhciAqZW50cmVzZWVkOworKyAgICBzaXplX3QgZW50cmVzZWVkbGVuOworKyAgICBjb25z dCB1bnNpZ25lZCBjaGFyICphZGlucmVzZWVkOworKyAgICBzaXplX3QgYWRpbnJlc2VlZGxlbjsK KysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbjI7CisrICAgIHNpemVfdCBhZGluMmxlbjsK KysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqa2F0OworKyAgICBzaXplX3Qga2F0bGVuOworKyAg ICBjb25zdCB1bnNpZ25lZCBjaGFyICprYXQyOworKyAgICBzaXplX3Qga2F0MmxlbjsKKysKKysg ICAgLyogS0FUIGRhdGEgZm9yIFBSICovCisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVudF9w cjsKKysgICAgc2l6ZV90IGVudGxlbl9wcjsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqbm9u Y2VfcHI7CisrICAgIHNpemVfdCBub25jZWxlbl9wcjsKKysgICAgY29uc3QgdW5zaWduZWQgY2hh ciAqcGVyc19wcjsKKysgICAgc2l6ZV90IHBlcnNsZW5fcHI7CisrICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIgKmFkaW5fcHI7CisrICAgIHNpemVfdCBhZGlubGVuX3ByOworKyAgICBjb25zdCB1bnNp Z25lZCBjaGFyICplbnRwcl9wcjsKKysgICAgc2l6ZV90IGVudHBybGVuX3ByOworKyAgICBjb25z dCB1bnNpZ25lZCBjaGFyICphZGluZ19wcjsKKysgICAgc2l6ZV90IGFkaW5nbGVuX3ByOworKyAg ICBjb25zdCB1bnNpZ25lZCBjaGFyICplbnRnX3ByOworKyAgICBzaXplX3QgZW50Z2xlbl9wcjsK KysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqa2F0X3ByOworKyAgICBzaXplX3Qga2F0bGVuX3By OworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICprYXQyX3ByOworKyAgICBzaXplX3Qga2F0Mmxl bl9wcjsKKysKKyt9IERSQkdfU0VMRlRFU1RfREFUQTsKKysKKysjZGVmaW5lIG1ha2VfZHJiZ190 ZXN0X2RhdGEobmlkLCBmbGFnLCBwciwgcCkge3AsIG5pZCwgZmxhZyB8IERSQkdfRkxBR19URVNU LCBcCisrICAgICAgICBwciMjX2VudHJvcHlpbnB1dCwgc2l6ZW9mKHByIyNfZW50cm9weWlucHV0 KSwgXAorKyAgICAgICAgcHIjI19ub25jZSwgc2l6ZW9mKHByIyNfbm9uY2UpLCBcCisrICAgICAg ICBwciMjX3BlcnNvbmFsaXphdGlvbnN0cmluZywgc2l6ZW9mKHByIyNfcGVyc29uYWxpemF0aW9u c3RyaW5nKSwgXAorKyAgICAgICAgcHIjI19hZGRpdGlvbmFsaW5wdXQsIHNpemVvZihwciMjX2Fk ZGl0aW9uYWxpbnB1dCksIFwKKysgICAgICAgIHByIyNfZW50cm9weWlucHV0cmVzZWVkLCBzaXpl b2YocHIjI19lbnRyb3B5aW5wdXRyZXNlZWQpLCBcCisrICAgICAgICBwciMjX2FkZGl0aW9uYWxp bnB1dHJlc2VlZCwgc2l6ZW9mKHByIyNfYWRkaXRpb25hbGlucHV0cmVzZWVkKSwgXAorKyAgICAg ICAgcHIjI19hZGRpdGlvbmFsaW5wdXQyLCBzaXplb2YocHIjI19hZGRpdGlvbmFsaW5wdXQyKSwg XAorKyAgICAgICAgcHIjI19pbnRfcmV0dXJuZWRiaXRzLCBzaXplb2YocHIjI19pbnRfcmV0dXJu ZWRiaXRzKSwgXAorKyAgICAgICAgcHIjI19yZXR1cm5lZGJpdHMsIHNpemVvZihwciMjX3JldHVy bmVkYml0cyksIFwKKysgICAgICAgIHByIyNfcHJfZW50cm9weWlucHV0LCBzaXplb2YocHIjI19w cl9lbnRyb3B5aW5wdXQpLCBcCisrICAgICAgICBwciMjX3ByX25vbmNlLCBzaXplb2YocHIjI19w cl9ub25jZSksIFwKKysgICAgICAgIHByIyNfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nLCBzaXpl b2YocHIjI19wcl9wZXJzb25hbGl6YXRpb25zdHJpbmcpLCBcCisrICAgICAgICBwciMjX3ByX2Fk ZGl0aW9uYWxpbnB1dCwgc2l6ZW9mKHByIyNfcHJfYWRkaXRpb25hbGlucHV0KSwgXAorKyAgICAg ICAgcHIjI19wcl9lbnRyb3B5aW5wdXRwciwgc2l6ZW9mKHByIyNfcHJfZW50cm9weWlucHV0cHIp LCBcCisrICAgICAgICBwciMjX3ByX2FkZGl0aW9uYWxpbnB1dDIsIHNpemVvZihwciMjX3ByX2Fk ZGl0aW9uYWxpbnB1dDIpLCBcCisrICAgICAgICBwciMjX3ByX2VudHJvcHlpbnB1dHByMiwgc2l6 ZW9mKHByIyNfcHJfZW50cm9weWlucHV0cHIyKSwgXAorKyAgICAgICAgcHIjI19wcl9pbnRfcmV0 dXJuZWRiaXRzLCBzaXplb2YocHIjI19wcl9pbnRfcmV0dXJuZWRiaXRzKSwgXAorKyAgICAgICAg cHIjI19wcl9yZXR1cm5lZGJpdHMsIHNpemVvZihwciMjX3ByX3JldHVybmVkYml0cyksIFwKKysg ICAgICAgIH0KKysKKysjZGVmaW5lIG1ha2VfZHJiZ190ZXN0X2RhdGFfZGYobmlkLCBwciwgcCkg XAorKyAgICAgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YShuaWQsIERSQkdfRkxBR19DVFJfVVNFX0RG LCBwciwgcCkKKysKKysjZGVmaW5lIG1ha2VfZHJiZ190ZXN0X2RhdGFfZWMoY3VydmUsIG1kLCBw ciwgcCkgXAorKyAgICAgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YSgoY3VydmUgPDwgMTYpIHwgbWQg LCAwLCBwciwgcCkKKysKKytzdGF0aWMgRFJCR19TRUxGVEVTVF9EQVRBIGRyYmdfdGVzdFtdID0g eworKyAgICBtYWtlX2RyYmdfdGVzdF9kYXRhX2RmKE5JRF9hZXNfMTI4X2N0ciwgYWVzXzEyOF91 c2VfZGYsIDApLAorKyAgICBtYWtlX2RyYmdfdGVzdF9kYXRhX2RmKE5JRF9hZXNfMTkyX2N0ciwg YWVzXzE5Ml91c2VfZGYsIDApLAorKyAgICBtYWtlX2RyYmdfdGVzdF9kYXRhX2RmKE5JRF9hZXNf MjU2X2N0ciwgYWVzXzI1Nl91c2VfZGYsIDEpLAorKyAgICBtYWtlX2RyYmdfdGVzdF9kYXRhKE5J RF9hZXNfMTI4X2N0ciwgMCwgYWVzXzEyOF9ub19kZiwgMCksCisrICAgIG1ha2VfZHJiZ190ZXN0 X2RhdGEoTklEX2Flc18xOTJfY3RyLCAwLCBhZXNfMTkyX25vX2RmLCAwKSwKKysgICAgbWFrZV9k cmJnX3Rlc3RfZGF0YShOSURfYWVzXzI1Nl9jdHIsIDAsIGFlc18yNTZfbm9fZGYsIDEpLAorKyAg ICBtYWtlX2RyYmdfdGVzdF9kYXRhKE5JRF9zaGExLCAwLCBzaGExLCAwKSwKKysgICAgbWFrZV9k cmJnX3Rlc3RfZGF0YShOSURfc2hhMjI0LCAwLCBzaGEyMjQsIDApLAorKyAgICBtYWtlX2RyYmdf dGVzdF9kYXRhKE5JRF9zaGEyNTYsIDAsIHNoYTI1NiwgMSksCisrICAgIG1ha2VfZHJiZ190ZXN0 X2RhdGEoTklEX3NoYTM4NCwgMCwgc2hhMzg0LCAwKSwKKysgICAgbWFrZV9kcmJnX3Rlc3RfZGF0 YShOSURfc2hhNTEyLCAwLCBzaGE1MTIsIDApLAorKyAgICBtYWtlX2RyYmdfdGVzdF9kYXRhKE5J RF9obWFjV2l0aFNIQTEsIDAsIGhtYWNfc2hhMSwgMCksCisrICAgIG1ha2VfZHJiZ190ZXN0X2Rh dGEoTklEX2htYWNXaXRoU0hBMjI0LCAwLCBobWFjX3NoYTIyNCwgMCksCisrICAgIG1ha2VfZHJi Z190ZXN0X2RhdGEoTklEX2htYWNXaXRoU0hBMjU2LCAwLCBobWFjX3NoYTI1NiwgMSksCisrICAg IG1ha2VfZHJiZ190ZXN0X2RhdGEoTklEX2htYWNXaXRoU0hBMzg0LCAwLCBobWFjX3NoYTM4NCwg MCksCisrICAgIG1ha2VfZHJiZ190ZXN0X2RhdGEoTklEX2htYWNXaXRoU0hBNTEyLCAwLCBobWFj X3NoYTUxMiwgMCksCisrICAgIHswLCAwLCAwfQorK307CisrCisrdHlwZWRlZiBzdHJ1Y3Qgewor KyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICplbnQ7CisrICAgIHNpemVfdCBlbnRsZW47CisrICAg IGludCBlbnRjbnQ7CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm5vbmNlOworKyAgICBzaXpl X3Qgbm9uY2VsZW47CisrICAgIGludCBub25jZWNudDsKKyt9IFRFU1RfRU5UOworKworK3N0YXRp YyBzaXplX3QgdGVzdF9lbnRyb3B5KERSQkdfQ1RYICpkY3R4LCB1bnNpZ25lZCBjaGFyICoqcG91 dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW50cm9weSwgc2l6ZV90IG1pbl9s ZW4sIHNpemVfdCBtYXhfbGVuKQorK3sKKysgICAgVEVTVF9FTlQgKnQgPSBGSVBTX2RyYmdfZ2V0 X2FwcF9kYXRhKGRjdHgpOworKyAgICAqcG91dCA9ICh1bnNpZ25lZCBjaGFyICopdC0+ZW50Owor KyAgICB0LT5lbnRjbnQrKzsKKysgICAgcmV0dXJuIHQtPmVudGxlbjsKKyt9CisrCisrc3RhdGlj IHNpemVfdCB0ZXN0X25vbmNlKERSQkdfQ1RYICpkY3R4LCB1bnNpZ25lZCBjaGFyICoqcG91dCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVudHJvcHksIHNpemVfdCBtaW5fbGVuLCBz aXplX3QgbWF4X2xlbikKKyt7CisrICAgIFRFU1RfRU5UICp0ID0gRklQU19kcmJnX2dldF9hcHBf ZGF0YShkY3R4KTsKKysgICAgKnBvdXQgPSAodW5zaWduZWQgY2hhciAqKXQtPm5vbmNlOworKyAg ICB0LT5ub25jZWNudCsrOworKyAgICByZXR1cm4gdC0+bm9uY2VsZW47CisrfQorKworK3N0YXRp YyBpbnQgZmlwc19kcmJnX3NpbmdsZV9rYXQoRFJCR19DVFggKmRjdHgsIERSQkdfU0VMRlRFU1Rf REFUQSAqIHRkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHF1aWNrKQor K3sKKysgICAgVEVTVF9FTlQgdDsKKysgICAgaW50IHJ2ID0gMDsKKysgICAgc2l6ZV90IGFkaW5s ZW47CisrICAgIHVuc2lnbmVkIGNoYXIgcmFuZG91dFsxMDI0XTsKKysKKysgICAgLyogSW5pdGlh bCB0ZXN0IHdpdGhvdXQgUFIgKi8KKysKKysgICAgLyogSW5zdGFudGlhdGUgRFJCRyB3aXRoIHRl c3QgZW50cm9weSwgbm9uY2UgYW5kIHBlcnNvbmFsaXNhdGlvbgorKyAgICAgKiBzdHJpbmcuCisr ICAgICAqLworKworKyAgICBpZiAoIUZJUFNfZHJiZ19pbml0KGRjdHgsIHRkLT5uaWQsIHRkLT5m bGFncykpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKCFGSVBTX2RyYmdfc2V0X2NhbGxi YWNrcyhkY3R4LCB0ZXN0X2VudHJvcHksIDAsIDAsIHRlc3Rfbm9uY2UsIDApKQorKyAgICAgICAg cmV0dXJuIDA7CisrCisrICAgIEZJUFNfZHJiZ19zZXRfYXBwX2RhdGEoZGN0eCwgJnQpOworKwor KyAgICB0LmVudCA9IHRkLT5lbnQ7CisrICAgIHQuZW50bGVuID0gdGQtPmVudGxlbjsKKysgICAg dC5ub25jZSA9IHRkLT5ub25jZTsKKysgICAgdC5ub25jZWxlbiA9IHRkLT5ub25jZWxlbjsKKysg ICAgdC5lbnRjbnQgPSAwOworKyAgICB0Lm5vbmNlY250ID0gMDsKKysKKysgICAgaWYgKCFGSVBT X2RyYmdfaW5zdGFudGlhdGUoZGN0eCwgdGQtPnBlcnMsIHRkLT5wZXJzbGVuKSkKKysgICAgICAg IGdvdG8gZXJyOworKworKyAgICAvKiBOb3RlIGZvciBDVFIgd2l0aG91dCBERiBzb21lIGFkZGl0 aW9uYWwgaW5wdXQgdmFsdWVzCisrICAgICAqIGlnbm9yZSBieXRlcyBhZnRlciB0aGUga2V5bGVu Z3RoOiBzbyByZWR1Y2UgYWRpbmxlbgorKyAgICAgKiB0byBoYWxmIHRvIGVuc3VyZSBpbnZhbGlk IGRhdGEgaXMgZmVkIGluLgorKyAgICAgKi8KKysgICAgaWYgKCFmaXBzX3Bvc3RfY29ycnVwdChG SVBTX1RFU1RfRFJCRywgZGN0eC0+dHlwZSwgJmRjdHgtPmlmbGFncykpCisrICAgICAgICBhZGlu bGVuID0gdGQtPmFkaW5sZW4gLyAyOworKyAgICBlbHNlCisrICAgICAgICBhZGlubGVuID0gdGQt PmFkaW5sZW47CisrCisrICAgIC8qIEdlbmVyYXRlIHdpdGggbm8gUFIgYW5kIHZlcmlmeSBvdXRw dXQgbWF0Y2hlcyBleHBlY3RlZCBkYXRhICovCisrICAgIGlmICghRklQU19kcmJnX2dlbmVyYXRl KGRjdHgsIHJhbmRvdXQsIHRkLT5rYXRsZW4sIDAsIHRkLT5hZGluLCBhZGlubGVuKSkKKysgICAg ICAgIGdvdG8gZXJyOworKworKyAgICBpZiAobWVtY21wKHJhbmRvdXQsIHRkLT5rYXQsIHRkLT5r YXRsZW4pKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfU0lOR0xFX0tBVCwg RklQU19SX05PUFJfVEVTVDFfRkFJTFVSRSk7CisrICAgICAgICBnb3RvIGVycjI7CisrICAgIH0K KysgICAgLyogSWYgYWJicmV2aWF0ZWQgUE9TVCBlbmQgb2YgdGVzdCAqLworKyAgICBpZiAocXVp Y2spIHsKKysgICAgICAgIHJ2ID0gMTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrICAg IC8qIFJlc2VlZCBEUkJHIHdpdGggdGVzdCBlbnRyb3B5IGFuZCBhZGRpdGlvbmFsIGlucHV0ICov CisrICAgIHQuZW50ID0gdGQtPmVudHJlc2VlZDsKKysgICAgdC5lbnRsZW4gPSB0ZC0+ZW50cmVz ZWVkbGVuOworKworKyAgICBpZiAoIUZJUFNfZHJiZ19yZXNlZWQoZGN0eCwgdGQtPmFkaW5yZXNl ZWQsIHRkLT5hZGlucmVzZWVkbGVuKSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICAvKiBH ZW5lcmF0ZSB3aXRoIG5vIFBSIGFuZCB2ZXJpZnkgb3V0cHV0IG1hdGNoZXMgZXhwZWN0ZWQgZGF0 YSAqLworKyAgICBpZiAoIUZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0 MmxlbiwgMCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQtPmFkaW4yLCB0ZC0+YWRp bjJsZW4pKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIGlmIChtZW1jbXAocmFuZG91dCwg dGQtPmthdDIsIHRkLT5rYXQybGVuKSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19E UkJHX1NJTkdMRV9LQVQsIEZJUFNfUl9OT1BSX1RFU1QyX0ZBSUxVUkUpOworKyAgICAgICAgZ290 byBlcnIyOworKyAgICB9CisrCisrICAgIEZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpOwor KworKyAgICAvKiBOb3cgdGVzdCB3aXRoIFBSICovCisrCisrICAgIC8qIEluc3RhbnRpYXRlIERS Qkcgd2l0aCB0ZXN0IGVudHJvcHksIG5vbmNlIGFuZCBwZXJzb25hbGlzYXRpb24KKysgICAgICog c3RyaW5nLgorKyAgICAgKi8KKysgICAgaWYgKCFGSVBTX2RyYmdfaW5pdChkY3R4LCB0ZC0+bmlk LCB0ZC0+ZmxhZ3MpKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGlmICghRklQU19kcmJnX3Nl dF9jYWxsYmFja3MoZGN0eCwgdGVzdF9lbnRyb3B5LCAwLCAwLCB0ZXN0X25vbmNlLCAwKSkKKysg ICAgICAgIHJldHVybiAwOworKworKyAgICBGSVBTX2RyYmdfc2V0X2FwcF9kYXRhKGRjdHgsICZ0 KTsKKysKKysgICAgdC5lbnQgPSB0ZC0+ZW50X3ByOworKyAgICB0LmVudGxlbiA9IHRkLT5lbnRs ZW5fcHI7CisrICAgIHQubm9uY2UgPSB0ZC0+bm9uY2VfcHI7CisrICAgIHQubm9uY2VsZW4gPSB0 ZC0+bm9uY2VsZW5fcHI7CisrICAgIHQuZW50Y250ID0gMDsKKysgICAgdC5ub25jZWNudCA9IDA7 CisrCisrICAgIGlmICghRklQU19kcmJnX2luc3RhbnRpYXRlKGRjdHgsIHRkLT5wZXJzX3ByLCB0 ZC0+cGVyc2xlbl9wcikpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgLyogTm93IGdlbmVy YXRlIHdpdGggUFI6IHdlIG5lZWQgdG8gc3VwcGx5IGVudHJvcHkgYXMgdGhpcyB3aWxsCisrICAg ICAqIHBlcmZvcm0gYSByZXNlZWQgb3BlcmF0aW9uLiBDaGVjayBvdXRwdXQgbWF0Y2hlcyBleHBl Y3RlZCB2YWx1ZS4KKysgICAgICovCisrCisrICAgIHQuZW50ID0gdGQtPmVudHByX3ByOworKyAg ICB0LmVudGxlbiA9IHRkLT5lbnRwcmxlbl9wcjsKKysKKysgICAgLyogTm90ZSBmb3IgQ1RSIHdp dGhvdXQgREYgc29tZSBhZGRpdGlvbmFsIGlucHV0IHZhbHVlcworKyAgICAgKiBpZ25vcmUgYnl0 ZXMgYWZ0ZXIgdGhlIGtleWxlbmd0aDogc28gcmVkdWNlIGFkaW5sZW4KKysgICAgICogdG8gaGFs ZiB0byBlbnN1cmUgaW52YWxpZCBkYXRhIGlzIGZlZCBpbi4KKysgICAgICovCisrICAgIGlmICgh Zmlwc19wb3N0X2NvcnJ1cHQoRklQU19URVNUX0RSQkcsIGRjdHgtPnR5cGUsICZkY3R4LT5pZmxh Z3MpKQorKyAgICAgICAgYWRpbmxlbiA9IHRkLT5hZGlubGVuX3ByIC8gMjsKKysgICAgZWxzZQor KyAgICAgICAgYWRpbmxlbiA9IHRkLT5hZGlubGVuX3ByOworKyAgICBpZiAoIUZJUFNfZHJiZ19n ZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0bGVuX3ByLCAxLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0ZC0+YWRpbl9wciwgYWRpbmxlbikpCisrICAgICAgICBnb3RvIGVycjsK KysKKysgICAgaWYgKG1lbWNtcChyYW5kb3V0LCB0ZC0+a2F0X3ByLCB0ZC0+a2F0bGVuX3ByKSkg eworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX1NJTkdMRV9LQVQsIEZJUFNfUl9Q Ul9URVNUMV9GQUlMVVJFKTsKKysgICAgICAgIGdvdG8gZXJyMjsKKysgICAgfQorKworKyAgICAv KiBOb3cgZ2VuZXJhdGUgYWdhaW4gd2l0aCBQUjogc3VwcGx5IG5ldyBlbnRyb3B5IGFnYWluLgor KyAgICAgKiBDaGVjayBvdXRwdXQgbWF0Y2hlcyBleHBlY3RlZCB2YWx1ZS4KKysgICAgICovCisr CisrICAgIHQuZW50ID0gdGQtPmVudGdfcHI7CisrICAgIHQuZW50bGVuID0gdGQtPmVudGdsZW5f cHI7CisrCisrICAgIGlmICghRklQU19kcmJnX2dlbmVyYXRlKGRjdHgsIHJhbmRvdXQsIHRkLT5r YXQybGVuX3ByLCAxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZC0+YWRpbmdfcHIs IHRkLT5hZGluZ2xlbl9wcikpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgaWYgKG1lbWNt cChyYW5kb3V0LCB0ZC0+a2F0Ml9wciwgdGQtPmthdDJsZW5fcHIpKSB7CisrICAgICAgICBGSVBT ZXJyKEZJUFNfRl9GSVBTX0RSQkdfU0lOR0xFX0tBVCwgRklQU19SX1BSX1RFU1QyX0ZBSUxVUkUp OworKyAgICAgICAgZ290byBlcnIyOworKyAgICB9CisrICAgIC8qIEFsbCBPSywgdGVzdCBjb21w bGV0ZSAqLworKyAgICBydiA9IDE7CisrCisrIGVycjoKKysgICAgaWYgKHJ2ID09IDApCisrICAg ICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfU0lOR0xFX0tBVCwgRklQU19SX1NFTEZURVNU X0ZBSUxFRCk7CisrIGVycjI6CisrICAgIEZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpOwor KworKyAgICByZXR1cm4gcnY7CisrCisrfQorKworKy8qIEluaXRpYWxpc2UgYSBEUkJHIGJhc2Vk IG9uIHNlbGZ0ZXN0IGRhdGEgKi8KKysKKytzdGF0aWMgaW50IGRvX2RyYmdfaW5pdChEUkJHX0NU WCAqZGN0eCwgRFJCR19TRUxGVEVTVF9EQVRBICogdGQsIFRFU1RfRU5UICogdCkKKyt7CisrCisr ICAgIGlmICghRklQU19kcmJnX2luaXQoZGN0eCwgdGQtPm5pZCwgdGQtPmZsYWdzKSkKKysgICAg ICAgIHJldHVybiAwOworKworKyAgICBpZiAoIUZJUFNfZHJiZ19zZXRfY2FsbGJhY2tzKGRjdHgs IHRlc3RfZW50cm9weSwgMCwgMCwgdGVzdF9ub25jZSwgMCkpCisrICAgICAgICByZXR1cm4gMDsK KysKKysgICAgRklQU19kcmJnX3NldF9hcHBfZGF0YShkY3R4LCB0KTsKKysKKysgICAgdC0+ZW50 ID0gdGQtPmVudDsKKysgICAgdC0+ZW50bGVuID0gdGQtPmVudGxlbjsKKysgICAgdC0+bm9uY2Ug PSB0ZC0+bm9uY2U7CisrICAgIHQtPm5vbmNlbGVuID0gdGQtPm5vbmNlbGVuOworKyAgICB0LT5l bnRjbnQgPSAwOworKyAgICB0LT5ub25jZWNudCA9IDA7CisrICAgIHJldHVybiAxOworK30KKysK KysvKiBJbml0aWFsaXNlIGFuZCBpbnN0YW50aWF0ZSBEUkJHIGJhc2VkIG9uIHNlbGZ0ZXN0IGRh dGEgKi8KKytzdGF0aWMgaW50IGRvX2RyYmdfaW5zdGFudGlhdGUoRFJCR19DVFggKmRjdHgsIERS QkdfU0VMRlRFU1RfREFUQSAqIHRkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU RVNUX0VOVCAqIHQpCisreworKyAgICBpZiAoIWRvX2RyYmdfaW5pdChkY3R4LCB0ZCwgdCkpCisr ICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKCFGSVBTX2RyYmdfaW5zdGFudGlhdGUoZGN0eCwg dGQtPnBlcnMsIHRkLT5wZXJzbGVuKSkKKysgICAgICAgIHJldHVybiAwOworKworKyAgICByZXR1 cm4gMTsKKyt9CisrCisrLyogVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBleHRlbnNpdmUgZXJyb3Ig Y2hlY2tpbmcgYXMgcmVxdWlyZWQgYnkgU1A4MDAtOTAuCisrICogSW5kdWNlIHNldmVyYWwgZmFp bHVyZSBtb2RlcyBhbmQgY2hlY2sgYW4gZXJyb3IgY29uZGl0aW9uIGlzIHNldC4KKysgKiBUaGlz IGZ1bmN0aW9uIGFsb25nIHdpdGggZmlwc19kcmJnX3NpbmdsZV9rYXQgcGVmb3JtcyB0aGUgaGVh bHRoIGNoZWNraW5nCisrICogb3BlcmF0aW9uLgorKyAqLworKworK3N0YXRpYyBpbnQgZmlwc19k cmJnX2Vycm9yX2NoZWNrKERSQkdfQ1RYICpkY3R4LCBEUkJHX1NFTEZURVNUX0RBVEEgKiB0ZCkK Kyt7CisrICAgIHVuc2lnbmVkIGNoYXIgcmFuZG91dFsxMDI0XTsKKysgICAgVEVTVF9FTlQgdDsK KysgICAgc2l6ZV90IGk7CisrICAgIHVuc2lnbmVkIGludCByZXNlZWRfY291bnRlcl90bXA7Cisr ICAgIHVuc2lnbmVkIGNoYXIgKnAgPSAodW5zaWduZWQgY2hhciAqKWRjdHg7CisrCisrICAgIC8q IEluaXRpYWxpc2UgRFJCRyAqLworKworKyAgICBpZiAoIWRvX2RyYmdfaW5pdChkY3R4LCB0ZCwg JnQpKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIC8qIERvbid0IHJlcG9ydCBpbmR1Y2Vk IGVycm9ycyAqLworKyAgICBkY3R4LT5pZmxhZ3MgfD0gRFJCR19GTEFHX05PRVJSOworKworKyAg ICAvKiBQZXJzb25hbGlzYXRpb24gc3RyaW5nIHRlc3RzICovCisrCisrICAgIC8qIFRlc3QgZGV0 ZWN0aW9uIG9mIHRvbyBsYXJnZSBwZXJzb25saXNhdGlvbiBzdHJpbmcgKi8KKysKKysgICAgaWYg KEZJUFNfZHJiZ19pbnN0YW50aWF0ZShkY3R4LCB0ZC0+cGVycywgZGN0eC0+bWF4X3BlcnMgKyAx KSA+IDApIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywK KysgICAgICAgICAgICAgICAgRklQU19SX1BFUlNPTkFMSVNBVElPTl9FUlJPUl9VTkRFVEVDVEVE KTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIC8qIEVudHJvcHkgc291cmNl IHRlc3RzICovCisrCisrICAgIC8qIFRlc3QgZW50cm9weSBzb3VyY2UgZmFpbHVyZSBkZXRlY2lv bjogaS5lLiByZXR1cm5zIG5vIGRhdGEgKi8KKysKKysgICAgdC5lbnRsZW4gPSAwOworKworKyAg ICBpZiAoRklQU19kcmJnX2luc3RhbnRpYXRlKGRjdHgsIHRkLT5wZXJzLCB0ZC0+cGVyc2xlbikg PiAwKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssCisr ICAgICAgICAgICAgICAgIEZJUFNfUl9FTlRST1BZX0VSUk9SX1VOREVURUNURUQpOworKyAgICAg ICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgLyogVHJ5IHRvIGdlbmVyYXRlIG91dHB1dCBm cm9tIHVuaW5zdGFudGlhdGVkIERSQkcgKi8KKysgICAgaWYgKEZJUFNfZHJiZ19nZW5lcmF0ZShk Y3R4LCByYW5kb3V0LCB0ZC0+a2F0bGVuLCAwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHRkLT5hZGluLCB0ZC0+YWRpbmxlbikpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNf RFJCR19FUlJPUl9DSEVDSywKKysgICAgICAgICAgICAgICAgRklQU19SX0dFTkVSQVRFX0VSUk9S X1VOREVURUNURUQpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgZGN0eC0+ aWZsYWdzICY9IH5EUkJHX0ZMQUdfTk9FUlI7CisrICAgIGlmICghRklQU19kcmJnX3VuaW5zdGFu dGlhdGUoZGN0eCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9D SEVDSywgRklQU19SX1VOSU5TVEFOVElBVEVfRVJST1IpOworKyAgICAgICAgZ290byBlcnI7Cisr ICAgIH0KKysKKysgICAgaWYgKCFkb19kcmJnX2luaXQoZGN0eCwgdGQsICZ0KSkKKysgICAgICAg IGdvdG8gZXJyOworKworKyAgICBkY3R4LT5pZmxhZ3MgfD0gRFJCR19GTEFHX05PRVJSOworKwor KyAgICAvKiBUZXN0IGluc3VmZmljaWVudCBlbnRyb3B5ICovCisrCisrICAgIHQuZW50bGVuID0g ZGN0eC0+bWluX2VudHJvcHkgLSAxOworKworKyAgICBpZiAoRklQU19kcmJnX2luc3RhbnRpYXRl KGRjdHgsIHRkLT5wZXJzLCB0ZC0+cGVyc2xlbikgPiAwKSB7CisrICAgICAgICBGSVBTZXJyKEZJ UFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssCisrICAgICAgICAgICAgICAgIEZJUFNfUl9FTlRS T1BZX0VSUk9SX1VOREVURUNURUQpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysg ICAgZGN0eC0+aWZsYWdzICY9IH5EUkJHX0ZMQUdfTk9FUlI7CisrICAgIGlmICghRklQU19kcmJn X3VuaW5zdGFudGlhdGUoZGN0eCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJC R19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5TVEFOVElBVEVfRVJST1IpOworKyAgICAgICAgZ290 byBlcnI7CisrICAgIH0KKysKKysgICAgLyogVGVzdCB0b28gbXVjaCBlbnRyb3B5ICovCisrCisr ICAgIGlmICghZG9fZHJiZ19pbml0KGRjdHgsIHRkLCAmdCkpCisrICAgICAgICBnb3RvIGVycjsK KysKKysgICAgZGN0eC0+aWZsYWdzIHw9IERSQkdfRkxBR19OT0VSUjsKKysKKysgICAgdC5lbnRs ZW4gPSBkY3R4LT5tYXhfZW50cm9weSArIDE7CisrCisrICAgIGlmIChGSVBTX2RyYmdfaW5zdGFu dGlhdGUoZGN0eCwgdGQtPnBlcnMsIHRkLT5wZXJzbGVuKSA+IDApIHsKKysgICAgICAgIEZJUFNl cnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywKKysgICAgICAgICAgICAgICAgRklQU19S X0VOVFJPUFlfRVJST1JfVU5ERVRFQ1RFRCk7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQor KworKyAgICBkY3R4LT5pZmxhZ3MgJj0gfkRSQkdfRkxBR19OT0VSUjsKKysgICAgaWYgKCFGSVBT X2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQ U19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfVU5JTlNUQU5USUFURV9FUlJPUik7CisrICAgICAg ICBnb3RvIGVycjsKKysgICAgfQorKworKyAgICAvKiBOb25jZSB0ZXN0cyAqLworKworKyAgICAv KiBUZXN0IHRvbyBzbWFsbCBub25jZSAqLworKworKyAgICBpZiAoZGN0eC0+bWluX25vbmNlKSB7 CisrCisrICAgICAgICBpZiAoIWRvX2RyYmdfaW5pdChkY3R4LCB0ZCwgJnQpKQorKyAgICAgICAg ICAgIGdvdG8gZXJyOworKworKyAgICAgICAgZGN0eC0+aWZsYWdzIHw9IERSQkdfRkxBR19OT0VS UjsKKysKKysgICAgICAgIHQubm9uY2VsZW4gPSBkY3R4LT5taW5fbm9uY2UgLSAxOworKworKyAg ICAgICAgaWYgKEZJUFNfZHJiZ19pbnN0YW50aWF0ZShkY3R4LCB0ZC0+cGVycywgdGQtPnBlcnNs ZW4pID4gMCkgeworKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9D SEVDSywKKysgICAgICAgICAgICAgICAgICAgIEZJUFNfUl9OT05DRV9FUlJPUl9VTkRFVEVDVEVE KTsKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIH0KKysKKysgICAgICAgIGRjdHgt PmlmbGFncyAmPSB+RFJCR19GTEFHX05PRVJSOworKyAgICAgICAgaWYgKCFGSVBTX2RyYmdfdW5p bnN0YW50aWF0ZShkY3R4KSkgeworKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJC R19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5TVEFOVElBVEVfRVJST1IpOworKyAgICAgICAgICAg IGdvdG8gZXJyOworKyAgICAgICAgfQorKworKyAgICB9CisrCisrICAgIC8qIFRlc3QgdG9vIGxh cmdlIG5vbmNlICovCisrCisrICAgIGlmIChkY3R4LT5tYXhfbm9uY2UpIHsKKysKKysgICAgICAg IGlmICghZG9fZHJiZ19pbml0KGRjdHgsIHRkLCAmdCkpCisrICAgICAgICAgICAgZ290byBlcnI7 CisrCisrICAgICAgICBkY3R4LT5pZmxhZ3MgfD0gRFJCR19GTEFHX05PRVJSOworKworKyAgICAg ICAgdC5ub25jZWxlbiA9IGRjdHgtPm1heF9ub25jZSArIDE7CisrCisrICAgICAgICBpZiAoRklQ U19kcmJnX2luc3RhbnRpYXRlKGRjdHgsIHRkLT5wZXJzLCB0ZC0+cGVyc2xlbikgPiAwKSB7Cisr ICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAorKyAgICAg ICAgICAgICAgICAgICAgRklQU19SX05PTkNFX0VSUk9SX1VOREVURUNURUQpOworKyAgICAgICAg ICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKworKyAgICAgICAgZGN0eC0+aWZsYWdzICY9IH5E UkJHX0ZMQUdfTk9FUlI7CisrICAgICAgICBpZiAoIUZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRj dHgpKSB7CisrICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNL LCBGSVBTX1JfVU5JTlNUQU5USUFURV9FUlJPUik7CisrICAgICAgICAgICAgZ290byBlcnI7Cisr ICAgICAgICB9CisrCisrICAgIH0KKysKKysgICAgLyogSW5zdGFudGlhdGUgd2l0aCB2YWxpZCBk YXRhLiAqLworKyAgICBpZiAoIWRvX2RyYmdfaW5zdGFudGlhdGUoZGN0eCwgdGQsICZ0KSkKKysg ICAgICAgIGdvdG8gZXJyOworKworKyAgICAvKiBDaGVjayBnZW5lcmF0aW9uIGlzIG5vdyBPSyAq LworKyAgICBpZiAoIUZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0bGVu LCAwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZC0+YWRpbiwgdGQtPmFkaW5sZW4p KQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIGRjdHgtPmlmbGFncyB8PSBEUkJHX0ZMQUdf Tk9FUlI7CisrCisrICAgIC8qIFJlcXVlc3QgdG9vIG11Y2ggZGF0YSBmb3Igb25lIHJlcXVlc3Qg Ki8KKysgICAgaWYgKEZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCBkY3R4LT5tYXhf cmVxdWVzdCArIDEsIDAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQtPmFkaW4sIHRk LT5hZGlubGVuKSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NI RUNLLAorKyAgICAgICAgICAgICAgICBGSVBTX1JfUkVRVUVTVF9MRU5HVEhfRVJST1JfVU5ERVRF Q1RFRCk7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKworKyAgICAvKiBUcnkgdG9vIGxh cmdlIGFkZGl0aW9uYWwgaW5wdXQgKi8KKysgICAgaWYgKEZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4 LCByYW5kb3V0LCB0ZC0+a2F0bGVuLCAwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRk LT5hZGluLCBkY3R4LT5tYXhfYWRpbiArIDEpKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9G SVBTX0RSQkdfRVJST1JfQ0hFQ0ssCisrICAgICAgICAgICAgICAgIEZJUFNfUl9BRERJVElPTkFM X0lOUFVUX0VSUk9SX1VOREVURUNURUQpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysK KysgICAgLyogQ2hlY2sgcHJlZGljdGlvbiByZXNpc3RhbmNlIHJlcXVlc3QgZmFpbHMgaWYgZW50 cm9weSBzb3VyY2UKKysgICAgICogZmFpbHVyZS4KKysgICAgICovCisrCisrICAgIHQuZW50bGVu ID0gMDsKKysKKysgICAgaWYgKEZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+ a2F0bGVuLCAxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkLT5hZGluLCB0ZC0+YWRp bmxlbikpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywK KysgICAgICAgICAgICAgICAgRklQU19SX0VOVFJPUFlfRVJST1JfVU5ERVRFQ1RFRCk7CisrICAg ICAgICBnb3RvIGVycjsKKysgICAgfQorKworKyAgICBkY3R4LT5pZmxhZ3MgJj0gfkRSQkdfRkxB R19OT0VSUjsKKysgICAgaWYgKCFGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KSkgeworKyAg ICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfVU5JTlNU QU5USUFURV9FUlJPUik7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKworKyAgICAvKiBJ bnN0YW50aWF0ZSBhZ2FpbiB3aXRoIHZhbGlkIGRhdGEgKi8KKysKKysgICAgaWYgKCFkb19kcmJn X2luc3RhbnRpYXRlKGRjdHgsIHRkLCAmdCkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgLyog VGVzdCByZXNlZWQgY291bnRlciB3b3JrcyAqLworKyAgICAvKiBTYXZlIGluaXRpYWwgcmVzZWVk IGNvdW50ZXIgKi8KKysgICAgcmVzZWVkX2NvdW50ZXJfdG1wID0gZGN0eC0+cmVzZWVkX2NvdW50 ZXI7CisrICAgIC8qIFNldCByZXNlZWQgY291bnRlciB0byBiZXlvbmQgaW50ZXJ2YWwgKi8KKysg ICAgZGN0eC0+cmVzZWVkX2NvdW50ZXIgPSBkY3R4LT5yZXNlZWRfaW50ZXJ2YWw7CisrCisrICAg IC8qIEdlbmVyYXRlIG91dHB1dCBhbmQgY2hlY2sgZW50cm9weSBoYXMgYmVlbiByZXF1ZXN0ZWQg Zm9yIHJlc2VlZCAqLworKyAgICB0LmVudGNudCA9IDA7CisrICAgIGlmICghRklQU19kcmJnX2dl bmVyYXRlKGRjdHgsIHJhbmRvdXQsIHRkLT5rYXRsZW4sIDAsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRkLT5hZGluLCB0ZC0+YWRpbmxlbikpCisrICAgICAgICBnb3RvIGVycjsKKysg ICAgaWYgKHQuZW50Y250ICE9IDEpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJC R19FUlJPUl9DSEVDSywKKysgICAgICAgICAgICAgICAgRklQU19SX0VOVFJPUFlfTk9UX1JFUVVF U1RFRF9GT1JfUkVTRUVEKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrICAgIC8qIENo ZWNrIHJlc2VlZCBjb3VudGVyIGhhcyBiZWVuIHJlc2V0ICovCisrICAgIGlmIChkY3R4LT5yZXNl ZWRfY291bnRlciAhPSByZXNlZWRfY291bnRlcl90bXAgKyAxKSB7CisrICAgICAgICBGSVBTZXJy KEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9SRVNFRURfQ09VTlRFUl9FUlJP Uik7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKworKyAgICBkY3R4LT5pZmxhZ3MgJj0g fkRSQkdfRkxBR19OT0VSUjsKKysgICAgaWYgKCFGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4 KSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBT X1JfVU5JTlNUQU5USUFURV9FUlJPUik7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKwor KyAgICAvKiBDaGVjayBwcmVkaWN0aW9uIHJlc2lzdGFuY2UgcmVxdWVzdCBmYWlscyBpZiBlbnRy b3B5IHNvdXJjZQorKyAgICAgKiBmYWlsdXJlLgorKyAgICAgKi8KKysKKysgICAgdC5lbnRsZW4g PSAwOworKworKyAgICBkY3R4LT5pZmxhZ3MgfD0gRFJCR19GTEFHX05PRVJSOworKyAgICBpZiAo RklQU19kcmJnX2dlbmVyYXRlKGRjdHgsIHJhbmRvdXQsIHRkLT5rYXRsZW4sIDEsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGQtPmFkaW4sIHRkLT5hZGlubGVuKSkgeworKyAgICAgICAg RklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAorKyAgICAgICAgICAgICAgICBG SVBTX1JfRU5UUk9QWV9FUlJPUl9VTkRFVEVDVEVEKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAg ICB9CisrCisrICAgIGRjdHgtPmlmbGFncyAmPSB+RFJCR19GTEFHX05PRVJSOworKworKyAgICBp ZiAoIUZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpKSB7CisrICAgICAgICBGSVBTZXJyKEZJ UFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VSUk9SKTsK KysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIGlmICghZG9fZHJiZ19pbnN0YW50 aWF0ZShkY3R4LCB0ZCwgJnQpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIC8qIFRlc3QgcmVz ZWVkIGNvdW50ZXIgd29ya3MgKi8KKysgICAgLyogU2F2ZSBpbml0aWFsIHJlc2VlZCBjb3VudGVy ICovCisrICAgIHJlc2VlZF9jb3VudGVyX3RtcCA9IGRjdHgtPnJlc2VlZF9jb3VudGVyOworKyAg ICAvKiBTZXQgcmVzZWVkIGNvdW50ZXIgdG8gYmV5b25kIGludGVydmFsICovCisrICAgIGRjdHgt PnJlc2VlZF9jb3VudGVyID0gZGN0eC0+cmVzZWVkX2ludGVydmFsOworKworKyAgICAvKiBHZW5l cmF0ZSBvdXRwdXQgYW5kIGNoZWNrIGVudHJvcHkgaGFzIGJlZW4gcmVxdWVzdGVkIGZvciByZXNl ZWQgKi8KKysgICAgdC5lbnRjbnQgPSAwOworKyAgICBpZiAoIUZJUFNfZHJiZ19nZW5lcmF0ZShk Y3R4LCByYW5kb3V0LCB0ZC0+a2F0bGVuLCAwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0ZC0+YWRpbiwgdGQtPmFkaW5sZW4pKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICh0 LmVudGNudCAhPSAxKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1Jf Q0hFQ0ssCisrICAgICAgICAgICAgICAgIEZJUFNfUl9FTlRST1BZX05PVF9SRVFVRVNURURfRk9S X1JFU0VFRCk7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKyAgICAvKiBDaGVjayByZXNl ZWQgY291bnRlciBoYXMgYmVlbiByZXNldCAqLworKyAgICBpZiAoZGN0eC0+cmVzZWVkX2NvdW50 ZXIgIT0gcmVzZWVkX2NvdW50ZXJfdG1wICsgMSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0Zf RklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfUkVTRUVEX0NPVU5URVJfRVJST1IpOworKyAg ICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgZGN0eC0+aWZsYWdzICY9IH5EUkJHX0ZM QUdfTk9FUlI7CisrICAgIGlmICghRklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCkpIHsKKysg ICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5T VEFOVElBVEVfRVJST1IpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgLyog RXhwbGljaXQgcmVzZWVkIHRlc3RzICovCisrCisrICAgIC8qIFRlc3QgZXhwbGljaXQgcmVzZWVk IHdpdGggdG9vIGxhcmdlIGFkZGl0aW9uYWwgaW5wdXQgKi8KKysgICAgaWYgKCFkb19kcmJnX2lu aXQoZGN0eCwgdGQsICZ0KSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBkY3R4LT5pZmxh Z3MgfD0gRFJCR19GTEFHX05PRVJSOworKworKyAgICBpZiAoRklQU19kcmJnX3Jlc2VlZChkY3R4 LCB0ZC0+YWRpbiwgZGN0eC0+bWF4X2FkaW4gKyAxKSA+IDApIHsKKysgICAgICAgIEZJUFNlcnIo RklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywKKysgICAgICAgICAgICAgICAgRklQU19SX0FE RElUSU9OQUxfSU5QVVRfRVJST1JfVU5ERVRFQ1RFRCk7CisrICAgICAgICBnb3RvIGVycjsKKysg ICAgfQorKworKyAgICAvKiBUZXN0IGV4cGxpY2l0IHJlc2VlZCB3aXRoIGVudHJvcHkgc291cmNl IGZhaWx1cmUgKi8KKysKKysgICAgdC5lbnRsZW4gPSAwOworKworKyAgICBpZiAoRklQU19kcmJn X3Jlc2VlZChkY3R4LCB0ZC0+YWRpbiwgdGQtPmFkaW5sZW4pID4gMCkgeworKyAgICAgICAgRklQ U2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAorKyAgICAgICAgICAgICAgICBGSVBT X1JfRU5UUk9QWV9FUlJPUl9VTkRFVEVDVEVEKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9 CisrCisrICAgIGlmICghRklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCkpIHsKKysgICAgICAg IEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5TVEFOVElB VEVfRVJST1IpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgLyogVGVzdCBl eHBsaWNpdCByZXNlZWQgd2l0aCB0b28gbXVjaCBlbnRyb3B5ICovCisrCisrICAgIGlmICghZG9f ZHJiZ19pbml0KGRjdHgsIHRkLCAmdCkpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgZGN0 eC0+aWZsYWdzIHw9IERSQkdfRkxBR19OT0VSUjsKKysKKysgICAgdC5lbnRsZW4gPSBkY3R4LT5t YXhfZW50cm9weSArIDE7CisrCisrICAgIGlmIChGSVBTX2RyYmdfcmVzZWVkKGRjdHgsIHRkLT5h ZGluLCB0ZC0+YWRpbmxlbikgPiAwKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RS QkdfRVJST1JfQ0hFQ0ssCisrICAgICAgICAgICAgICAgIEZJUFNfUl9FTlRST1BZX0VSUk9SX1VO REVURUNURUQpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgaWYgKCFGSVBT X2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQ U19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfVU5JTlNUQU5USUFURV9FUlJPUik7CisrICAgICAg ICBnb3RvIGVycjsKKysgICAgfQorKworKyAgICAvKiBUZXN0IGV4cGxpY2l0IHJlc2VlZCB3aXRo IHRvbyBsaXR0bGUgZW50cm9weSAqLworKworKyAgICBpZiAoIWRvX2RyYmdfaW5pdChkY3R4LCB0 ZCwgJnQpKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIGRjdHgtPmlmbGFncyB8PSBEUkJH X0ZMQUdfTk9FUlI7CisrCisrICAgIHQuZW50bGVuID0gZGN0eC0+bWluX2VudHJvcHkgLSAxOwor KworKyAgICBpZiAoRklQU19kcmJnX3Jlc2VlZChkY3R4LCB0ZC0+YWRpbiwgdGQtPmFkaW5sZW4p ID4gMCkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAor KyAgICAgICAgICAgICAgICBGSVBTX1JfRU5UUk9QWV9FUlJPUl9VTkRFVEVDVEVEKTsKKysgICAg ICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIGlmICghRklQU19kcmJnX3VuaW5zdGFudGlh dGUoZGN0eCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVD SywgRklQU19SX1VOSU5TVEFOVElBVEVfRVJST1IpOworKyAgICAgICAgZ290byBlcnI7CisrICAg IH0KKysKKysgICAgcCA9ICh1bnNpZ25lZCBjaGFyICopJmRjdHgtPmQ7CisrICAgIC8qIFN0YW5k YXJkIHNheXMgd2UgaGF2ZSB0byBjaGVjayB1bmluc3RhbnRpYXRlIHJlYWxseSB6ZXJvZXMKKysg ICAgICogdGhlIGRhdGEuLi4KKysgICAgICovCisrICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2Yo ZGN0eC0+ZCk7IGkrKykgeworKyAgICAgICAgaWYgKCpwICE9IDApIHsKKysgICAgICAgICAgICBG SVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssCisrICAgICAgICAgICAgICAgICAg ICBGSVBTX1JfVU5JTlNUQU5USUFURV9aRVJPSVNFX0VSUk9SKTsKKysgICAgICAgICAgICBnb3Rv IGVycjsKKysgICAgICAgIH0KKysgICAgICAgIHArKzsKKysgICAgfQorKworKyAgICByZXR1cm4g MTsKKysKKysgZXJyOgorKyAgICAvKiBBIHJlYWwgZXJyb3IgYXMgb3Bwb3NlZCB0byBhbiBpbmR1 Y2VkIG9uZTogdW5kZXJseWluZyBmdW5jdGlvbiB3aWxsCisrICAgICAqIGluZGljYXRlIHRoZSBl cnJvci4KKysgICAgICovCisrICAgIGlmICghKGRjdHgtPmlmbGFncyAmIERSQkdfRkxBR19OT0VS UikpCisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNf Ul9GVU5DVElPTl9FUlJPUik7CisrICAgIEZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpOwor KyAgICByZXR1cm4gMDsKKysKKyt9CisrCisraW50IGZpcHNfZHJiZ19rYXQoRFJCR19DVFggKmRj dHgsIGludCBuaWQsIHVuc2lnbmVkIGludCBmbGFncykKKyt7CisrICAgIERSQkdfU0VMRlRFU1Rf REFUQSAqdGQ7CisrICAgIGZsYWdzIHw9IERSQkdfRkxBR19URVNUOworKyAgICBmb3IgKHRkID0g ZHJiZ190ZXN0OyB0ZC0+bmlkICE9IDA7IHRkKyspIHsKKysgICAgICAgIGlmICh0ZC0+bmlkID09 IG5pZCAmJiB0ZC0+ZmxhZ3MgPT0gZmxhZ3MpIHsKKysgICAgICAgICAgICBpZiAoIWZpcHNfZHJi Z19zaW5nbGVfa2F0KGRjdHgsIHRkLCAwKSkKKysgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cisr ICAgICAgICAgICAgcmV0dXJuIGZpcHNfZHJiZ19lcnJvcl9jaGVjayhkY3R4LCB0ZCk7CisrICAg ICAgICB9CisrICAgIH0KKysgICAgcmV0dXJuIDA7CisrfQorKworK2ludCBGSVBTX2RyYmdfaGVh bHRoX2NoZWNrKERSQkdfQ1RYICpkY3R4KQorK3sKKysgICAgaW50IHJ2OworKyAgICBEUkJHX0NU WCAqdGN0eCA9IE5VTEw7CisrICAgIHRjdHggPSBGSVBTX2RyYmdfbmV3KDAsIDApOworKyAgICBm aXBzX3Bvc3Rfc3RhcnRlZChGSVBTX1RFU1RfRFJCRywgZGN0eC0+dHlwZSwgJmRjdHgtPnhmbGFn cyk7CisrICAgIGlmICghdGN0eCkKKysgICAgICAgIHJldHVybiAwOworKyAgICBydiA9IGZpcHNf ZHJiZ19rYXQodGN0eCwgZGN0eC0+dHlwZSwgZGN0eC0+eGZsYWdzKTsKKysgICAgaWYgKHRjdHgp CisrICAgICAgICBGSVBTX2RyYmdfZnJlZSh0Y3R4KTsKKysgICAgaWYgKHJ2KQorKyAgICAgICAg Zmlwc19wb3N0X3N1Y2Nlc3MoRklQU19URVNUX0RSQkcsIGRjdHgtPnR5cGUsICZkY3R4LT54Zmxh Z3MpOworKyAgICBlbHNlCisrICAgICAgICBmaXBzX3Bvc3RfZmFpbGVkKEZJUFNfVEVTVF9EUkJH LCBkY3R4LT50eXBlLCAmZGN0eC0+eGZsYWdzKTsKKysgICAgaWYgKCFydikKKysgICAgICAgIGRj dHgtPnN0YXR1cyA9IERSQkdfU1RBVFVTX0VSUk9SOworKyAgICBlbHNlCisrICAgICAgICBkY3R4 LT5oZWFsdGhfY2hlY2tfY250ID0gMDsKKysgICAgcmV0dXJuIHJ2OworK30KKysKKytpbnQgRklQ U19zZWxmdGVzdF9kcmJnKHZvaWQpCisreworKyAgICBEUkJHX0NUWCAqZGN0eDsKKysgICAgRFJC R19TRUxGVEVTVF9EQVRBICp0ZDsKKysgICAgaW50IHJ2ID0gMTsKKysgICAgZGN0eCA9IEZJUFNf ZHJiZ19uZXcoMCwgMCk7CisrICAgIGlmICghZGN0eCkKKysgICAgICAgIHJldHVybiAwOworKyAg ICBmb3IgKHRkID0gZHJiZ190ZXN0OyB0ZC0+bmlkICE9IDA7IHRkKyspIHsKKysgICAgICAgIGlm ICh0ZC0+cG9zdCAhPSAxKQorKyAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgaWYgKCFm aXBzX3Bvc3Rfc3RhcnRlZChGSVBTX1RFU1RfRFJCRywgdGQtPm5pZCwgJnRkLT5mbGFncykpCisr ICAgICAgICAgICAgcmV0dXJuIDE7CisrICAgICAgICBpZiAoIWZpcHNfZHJiZ19zaW5nbGVfa2F0 KGRjdHgsIHRkLCAxKSkgeworKyAgICAgICAgICAgIGZpcHNfcG9zdF9mYWlsZWQoRklQU19URVNU X0RSQkcsIHRkLT5uaWQsICZ0ZC0+ZmxhZ3MpOworKyAgICAgICAgICAgIHJ2ID0gMDsKKysgICAg ICAgICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKysgICAgICAgIGlmICghZmlwc19wb3N0X3N1 Y2Nlc3MoRklQU19URVNUX0RSQkcsIHRkLT5uaWQsICZ0ZC0+ZmxhZ3MpKQorKyAgICAgICAgICAg IHJldHVybiAwOworKyAgICB9CisrICAgIEZJUFNfZHJiZ19mcmVlKGRjdHgpOworKyAgICByZXR1 cm4gcnY7CisrfQorKworK2ludCBGSVBTX3NlbGZ0ZXN0X2RyYmdfYWxsKHZvaWQpCisreworKyAg ICBEUkJHX0NUWCAqZGN0eDsKKysgICAgRFJCR19TRUxGVEVTVF9EQVRBICp0ZDsKKysgICAgaW50 IHJ2ID0gMTsKKysgICAgZGN0eCA9IEZJUFNfZHJiZ19uZXcoMCwgMCk7CisrICAgIGlmICghZGN0 eCkKKysgICAgICAgIHJldHVybiAwOworKyAgICBmb3IgKHRkID0gZHJiZ190ZXN0OyB0ZC0+bmlk ICE9IDA7IHRkKyspIHsKKysgICAgICAgIGlmICghZmlwc19wb3N0X3N0YXJ0ZWQoRklQU19URVNU X0RSQkcsIHRkLT5uaWQsICZ0ZC0+ZmxhZ3MpKQorKyAgICAgICAgICAgIHJldHVybiAxOworKyAg ICAgICAgaWYgKCFmaXBzX2RyYmdfc2luZ2xlX2thdChkY3R4LCB0ZCwgMCkpIHsKKysgICAgICAg ICAgICBmaXBzX3Bvc3RfZmFpbGVkKEZJUFNfVEVTVF9EUkJHLCB0ZC0+bmlkLCAmdGQtPmZsYWdz KTsKKysgICAgICAgICAgICBydiA9IDA7CisrICAgICAgICAgICAgY29udGludWU7CisrICAgICAg ICB9CisrICAgICAgICBpZiAoIWZpcHNfZHJiZ19lcnJvcl9jaGVjayhkY3R4LCB0ZCkpIHsKKysg ICAgICAgICAgICBmaXBzX3Bvc3RfZmFpbGVkKEZJUFNfVEVTVF9EUkJHLCB0ZC0+bmlkLCAmdGQt PmZsYWdzKTsKKysgICAgICAgICAgICBydiA9IDA7CisrICAgICAgICAgICAgY29udGludWU7Cisr ICAgICAgICB9CisrICAgICAgICBpZiAoIWZpcHNfcG9zdF9zdWNjZXNzKEZJUFNfVEVTVF9EUkJH LCB0ZC0+bmlkLCAmdGQtPmZsYWdzKSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgfQor KyAgICBGSVBTX2RyYmdfZnJlZShkY3R4KTsKKysgICAgcmV0dXJuIHJ2OworK30KK2RpZmYgLXVw IG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX3NlbGZ0ZXN0LmguZmlwcyBvcGVu c3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19zZWxmdGVzdC5oCistLS0gb3BlbnNzbC0x LjEuMC9jcnlwdG8vZmlwcy9maXBzX2RyYmdfc2VsZnRlc3QuaC5maXBzCTIwMTYtMDktMDggMTE6 Mzc6MzguNzQwNDYwMDUyICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9maXBz X2RyYmdfc2VsZnRlc3QuaAkyMDE2LTA5LTA4IDExOjM3OjM4Ljc0MDQ2MDA1MiArMDIwMAorQEAg LTAsMCArMSwxNzkxIEBACisrLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmlnaHQgKGMpIDIwMTEg VGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBSZWRp c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp dGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0OgorKyAqCisrICogMS4gUmVkaXN0cmli dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysg KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIuIAorKyAqCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11 c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKysgKiAgICB0 aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl CisrICogICAgZGlzdHJpYnV0aW9uLgorKyAqCisrICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVy aWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisrICogICAgc29mdHdhcmUg bXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMg cHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVj dAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3Bl bnNzbC5vcmcvKSIKKysgKgorKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQg Ik9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAgIGVuZG9yc2Ugb3Ig cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisrICog ICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVh c2UgY29udGFjdAorKyAqICAgIG9wZW5zc2wtY29yZS5vcmcuCisrICoKKysgKiA1LiBQcm9kdWN0 cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIK KysgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBw cmlvciB3cml0dGVuCisrICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0Lgor KyAqCisrICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCBy ZXRhaW4gdGhlIGZvbGxvd2luZworKyAqICAgIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlz IHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2pl Y3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3Bl bnNzbC5vcmcvKSIKKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9w ZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQorKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVE IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJTVBM SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF IE9wZW5TU0wgUFJPSkVDVCBPUgorKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysgKiBTUEVDSUFMLCBFWEVNUExBUlks IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKysgKiBOT1QgTElNSVRF RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKysgKiBM T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQor KyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF UiBJTiBDT05UUkFDVCwKKysgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorKyAqIE9GIFRIRSBQT1NT SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKgorKyAqLworKworKy8qIFNlbGZ0ZXN0IGFuZCBo ZWFsdGggY2hlY2sgZGF0YSBmb3IgdGhlIFNQODAwLTkwIERSQkcgKi8KKysKKysjZGVmaW5lIF9f Zmlwc19jb25zdHNlZworKworKy8qIEFFUy0xMjggdXNlIGRmIFBSICAqLworK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9wcl9lbnRyb3B5 aW5wdXRbXSA9IHsKKysgICAgMHg2MSwgMHg1MiwgMHg3YywgMHhlMywgMHgyMywgMHg3ZCwgMHgw YSwgMHgwNywgMHgxMCwgMHgwYywgMHg1MCwgMHgzMywKKysgICAgMHhjOCwgMHhkYiwgMHhmZiwg MHgxMgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGFlc18xMjhfdXNlX2RmX3ByX25vbmNlW10gPSB7CisrICAgIDB4NTEsIDB4MGQsIDB4ODUsIDB4 NzcsIDB4ZWQsIDB4MjIsIDB4OTcsIDB4MjgKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAg ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9wcl9wZXJzb25hbGl6 YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHg1OSwgMHg5ZiwgMHhiYiwgMHhjZCwgMHhkNSwgMHgy NSwgMHg2OSwgMHhiNSwgMHhjYiwgMHhiNSwgMHgwMywgMHhmZSwKKysgICAgMHhkNywgMHhkNywg MHgwMSwgMHg2NworK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX3ByX2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAg ICAweGVmLCAweDg4LCAweDc2LCAweDAxLCAweGFmLCAweDNjLCAweGZlLCAweDhiLCAweGFmLCAw eDI2LCAweDA2LCAweDllLAorKyAgICAweDlhLCAweDQ3LCAweDA4LCAweDc2CisrfTsKKysKKytf X2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91 c2VfZGZfcHJfZW50cm9weWlucHV0cHJbXSA9IHsKKysgICAgMHhlMiwgMHg3NiwgMHhmOSwgMHhm NiwgMHgzYSwgMHhiYSwgMHgxMCwgMHg5ZiwgMHhiZiwgMHg0NywgMHgwZSwgMHg1MSwKKysgICAg MHgwOSwgMHhmYiwgMHhhMywgMHhiNgorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX3ByX2ludF9yZXR1cm5lZGJp dHNbXSA9IHsKKysgICAgMHhkNCwgMHg5OCwgMHg4YSwgMHg0NiwgMHg4MCwgMHg0YywgMHhkYiwg MHhhMywgMHg1OSwgMHgwMiwgMHg1NywgMHg1MiwKKysgICAgMHg2NiwgMHgxYywgMHhlYSwgMHg1 YgorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGFlc18xMjhfdXNlX2RmX3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHg4OCwg MHg4YywgMHg5MSwgMHhkNiwgMHhiZSwgMHg1NiwgMHg2ZSwgMHgwOCwgMHg5YSwgMHg2MiwgMHgy YiwgMHgxMSwKKysgICAgMHgzZiwgMHg1ZSwgMHgzMSwgMHgwNgorK307CisrCisrX19maXBzX2Nv bnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX3By X2VudHJvcHlpbnB1dHByMltdID0geworKyAgICAweGMwLCAweDVjLCAweDZiLCAweDk4LCAweDAx LCAweDBkLCAweDU4LCAweDE4LCAweDUxLCAweDE4LCAweDk2LCAweGFlLAorKyAgICAweGE3LCAw eGUzLCAweGE4LCAweDY3CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcHJfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4 Y2YsIDB4MDEsIDB4YWMsIDB4MjIsIDB4MzEsIDB4MDYsIDB4OGUsIDB4ZmMsIDB4Y2UsIDB4NTYs IDB4ZWEsIDB4MjQsCisrICAgIDB4MGYsIDB4MzgsIDB4NDMsIDB4YzYKKyt9OworKworKy8qIEFF Uy0xMjggdXNlIGRmIE5vIFBSICAqLworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHgxZiwg MHg4ZSwgMHgzNCwgMHg4MiwgMHgwYywgMHhiNywgMHhiZSwgMHhjNSwgMHgwMSwgMHgzZSwgMHhk MCwgMHhhMywKKysgICAgMHg5ZCwgMHg3ZCwgMHgxYywgMHg5YgorK307CisrCisrX19maXBzX2Nv bnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX25vbmNlW10g PSB7CisrICAgIDB4ZDUsIDB4NGQsIDB4YmQsIDB4NGEsIDB4OTMsIDB4N2YsIDB4YjgsIDB4OTYK Kyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBhZXNfMTI4X3VzZV9kZl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHhhYiwg MHhkNiwgMHgzZiwgMHgwNCwgMHhmZSwgMHgyNywgMHg2YiwgMHgyZCwgMHhkNywgMHhjMywgMHgx YywgMHhmMywKKysgICAgMHgzOCwgMHg2NiwgMHhiYSwgMHgxYgorK307CisrCisrX19maXBzX2Nv bnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX2FkZGl0aW9u YWxpbnB1dFtdID0geworKyAgICAweGZlLCAweGY0LCAweDA5LCAweGE4LCAweGI3LCAweDczLCAw eDI3LCAweDljLCAweDVmLCAweGE3LCAweGVhLCAweDQ2LAorKyAgICAweGI1LCAweGUyLCAweGIy LCAweDQxCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgYWVzXzEyOF91c2VfZGZfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweDQyLCAweGU0 LCAweDRlLCAweDdiLCAweDI3LCAweGRkLCAweGNiLCAweGJjLCAweDBhLCAweGNmLCAweGE2LCAw eDY3LAorKyAgICAweGU3LCAweDU3LCAweDExLCAweGI0CisrfTsKKysKKytfX2ZpcHNfY29uc3Rz ZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfZW50cm9w eWlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4MTQsIDB4MjYsIDB4NjksIDB4ZDksIDB4ZjMsIDB4 NjUsIDB4MDMsIDB4ZDYsIDB4NmIsIDB4YjksIDB4NDQsIDB4MGIsCisrICAgIDB4YzcsIDB4YzQs IDB4OWUsIDB4MzkKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9IHsK KysgICAgMHg1NSwgMHgyZSwgMHg2MCwgMHg5YSwgMHgwNSwgMHg3MiwgMHg4YSwgMHhhOCwgMHhl ZiwgMHgyMiwgMHg4MSwgMHg1YSwKKysgICAgMHhjOCwgMHg5MywgMHhmYSwgMHg4NAorK307Cisr CisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNl X2RmX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHgzYywgMHg0MCwgMHhjOCwgMHhjNCwg MHgxNiwgMHgwYywgMHgyMSwgMHhhNCwgMHgzNywgMHgyYywgMHg4ZiwgMHhhNSwKKysgICAgMHgw NiwgMHgwYywgMHgxNSwgMHgyYworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX3JldHVybmVkYml0c1tdID0geworKyAgICAw eGUxLCAweDNlLCAweDk5LCAweDk4LCAweDg2LCAweDY3LCAweDBiLCAweDYzLCAweDdiLCAweGJl LCAweDNmLCAweDg4LAorKyAgICAweDQ2LCAweDgxLCAweGM3LCAweDE5CisrfTsKKysKKysvKiBB RVMtMTkyIHVzZSBkZiBQUiAgKi8KKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgYWVzXzE5Ml91c2VfZGZfcHJfZW50cm9weWlucHV0W10gPSB7CisrICAgIDB4MmIs IDB4NGUsIDB4OGIsIDB4ZTEsIDB4ZjEsIDB4MzQsIDB4ODAsIDB4NTYsIDB4ODEsIDB4ZjksIDB4 NzQsIDB4ZWMsCisrICAgIDB4MTcsIDB4NDQsIDB4MmEsIDB4ZjEsIDB4MTQsIDB4YjAsIDB4YmYs IDB4OTcsIDB4MzksIDB4YjcsIDB4MDQsIDB4N2QKKyt9OworKworK19fZmlwc19jb25zdHNlZyBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9wcl9ub25jZVtdID0gewor KyAgICAweGQ2LCAweDlkLCAweGViLCAweDE0LCAweDRlLCAweDZjLCAweDMwLCAweDFlLCAweDM5 LCAweDU1LCAweDczLCAweGQwLAorKyAgICAweGQxLCAweDgwLCAweDc4LCAweGZhCisrfTsKKysK KytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5 Ml91c2VfZGZfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7CisrICAgIDB4ZmMsIDB4NDMs IDB4NGEsIDB4ZjgsIDB4OWEsIDB4NTUsIDB4YjMsIDB4NTMsIDB4ODMsIDB4ZTIsIDB4MTgsIDB4 MTYsCisrICAgIDB4MGMsIDB4ZGMsIDB4Y2QsIDB4NWUsIDB4NGYsIDB4YTAsIDB4MDMsIDB4MDEs IDB4MmIsIDB4OWYsIDB4ZTQsIDB4ZDUsCisrICAgIDB4N2QsIDB4NDksIDB4ZjAsIDB4NDEsIDB4 OWUsIDB4M2QsIDB4OTksIDB4MDQKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9wcl9hZGRpdGlvbmFsaW5wdXRb XSA9IHsKKysgICAgMHg1ZSwgMHg5ZiwgMHg0OSwgMHg2ZiwgMHgyMSwgMHg4YiwgMHgxZCwgMHgz MiwgMHhkNSwgMHg4NCwgMHg1YywgMHhhYywKKysgICAgMHhhZiwgMHhkZiwgMHhlNCwgMHg3OSwg MHg5ZSwgMHhhZiwgMHhhOSwgMHg4MiwgMHhkMCwgMHhmOCwgMHg0ZiwgMHhjYiwKKysgICAgMHg2 OSwgMHgxMCwgMHgwYSwgMHg3ZSwgMHg4MSwgMHg1NywgMHhiNSwgMHgzNgorK307CisrCisrX19m aXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNl X2RmX3ByX2VudHJvcHlpbnB1dHByW10gPSB7CisrICAgIDB4ZDQsIDB4ODEsIDB4MGMsIDB4ZDcs IDB4NjYsIDB4MzksIDB4ZWMsIDB4NDIsIDB4NTMsIDB4ODcsIDB4NDEsIDB4YTUsCisrICAgIDB4 MWUsIDB4N2QsIDB4ODAsIDB4OTEsIDB4OGUsIDB4YmIsIDB4ZWQsIDB4YWMsIDB4MTQsIDB4MDIs IDB4MWEsIDB4ZDUKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9wcl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7Cisr ICAgIDB4ZGYsIDB4MWQsIDB4MzksIDB4NDUsIDB4N2MsIDB4OWIsIDB4YzYsIDB4MmIsIDB4N2Qs IDB4OGMsIDB4OTMsIDB4ZTksCisrICAgIDB4MTksIDB4MzAsIDB4NmIsIDB4NjcKKyt9OworKwor K19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTky X3VzZV9kZl9wcl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7CisrICAgIDB4MDAsIDB4NzEsIDB4Mjcs IDB4NGUsIDB4ZDMsIDB4MTQsIDB4ZjEsIDB4MjAsIDB4N2YsIDB4NGEsIDB4NDEsIDB4MzIsCisr ICAgIDB4MmEsIDB4OTcsIDB4MTEsIDB4NDMsIDB4OGYsIDB4NGEsIDB4MTUsIDB4N2IsIDB4OWIs IDB4NTEsIDB4NzksIDB4ZGEsCisrICAgIDB4NDksIDB4M2QsIDB4ZGUsIDB4ZTgsIDB4YmMsIDB4 OTMsIDB4OTEsIDB4OTkKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9wcl9lbnRyb3B5aW5wdXRwcjJbXSA9IHsK KysgICAgMHg5MCwgMHhlZSwgMHg3NiwgMHhhMSwgMHg0NSwgMHg4ZCwgMHhiNywgMHg0MCwgMHhi MCwgMHgxMSwgMHhiZiwgMHhkMCwKKysgICAgMHg2NSwgMHhkNywgMHgzYywgMHg3YywgMHg0Ziwg MHgyMCwgMHgzZiwgMHg0ZSwgMHgxMSwgMHg5ZCwgMHhiMywgMHg1ZQorK307CisrCisrX19maXBz X2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX3ByX3Jl dHVybmVkYml0c1tdID0geworKyAgICAweDI0LCAweDNiLCAweDIwLCAweGE0LCAweDM3LCAweDY2 LCAweGJhLCAweDcyLCAweDM5LCAweDNmLCAweGNmLCAweDNjLAorKyAgICAweDdlLCAweDFhLCAw eDJiLCAweDgzCisrfTsKKysKKysvKiBBRVMtMTkyIHVzZSBkZiBObyBQUiAgKi8KKytfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml91c2VfZGZfZW50cm9w eWlucHV0W10gPSB7CisrICAgIDB4OGQsIDB4NzQsIDB4YTQsIDB4NTAsIDB4MWEsIDB4MDIsIDB4 NjgsIDB4MGMsIDB4MmEsIDB4NjksIDB4YzQsIDB4ODIsCisrICAgIDB4M2IsIDB4YmIsIDB4ZGEs IDB4MGUsIDB4N2YsIDB4NzcsIDB4YTMsIDB4MTcsIDB4NzgsIDB4NTcsIDB4YjIsIDB4N2IKKyt9 OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTky X3VzZV9kZl9ub25jZVtdID0geworKyAgICAweDc1LCAweGQ1LCAweDFmLCAweGFjLCAweGE0LCAw eDhkLCAweDQyLCAweDc4LCAweGQ3LCAweDY5LCAweDg2LCAweDlkLAorKyAgICAweDc3LCAweGQ3 LCAweDQxLCAweDBlCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml91c2VfZGZfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7 CisrICAgIDB4NGUsIDB4MzMsIDB4NDEsIDB4M2MsIDB4OWMsIDB4YzIsIDB4ZDIsIDB4NTMsIDB4 YWYsIDB4OTAsIDB4ZWEsIDB4Y2YsCisrICAgIDB4MTksIDB4NTAsIDB4MWUsIDB4ZTYsIDB4NmYs IDB4NjMsIDB4YzgsIDB4MzIsIDB4MjIsIDB4ZGMsIDB4MDcsIDB4NjUsCisrICAgIDB4OWMsIDB4 ZDMsIDB4ZjgsIDB4MzAsIDB4OWUsIDB4ZWQsIDB4MzUsIDB4NzAKKyt9OworKworK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9hZGRpdGlv bmFsaW5wdXRbXSA9IHsKKysgICAgMHg1ZCwgMHg4YiwgMHg4YywgMHhjMSwgMHhkZiwgMHgwZSwg MHgwMiwgMHg3OCwgMHhmYiwgMHgxOSwgMHhiOCwgMHg2OSwKKysgICAgMHg3OCwgMHg0ZSwgMHg5 YywgMHg1MiwgMHhiYywgMHhjNywgMHgyMCwgMHhjOSwgMHhlNiwgMHg1ZSwgMHg3NywgMHgyMiwK KysgICAgMHgyOCwgMHgzZCwgMHgwYywgMHg5ZSwgMHg2OCwgMHhhOCwgMHg0NSwgMHhkNworK307 CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJf dXNlX2RmX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhkNSwgMHhlNywgMHgwOCwgMHhj NSwgMHgxOSwgMHg5OSwgMHhkNSwgMHgzMSwgMHgwMywgMHgwYSwgMHg3NCwgMHhiNiwKKysgICAg MHhiNywgMHhlZCwgMHhlOSwgMHhlYQorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX2VudHJvcHlpbnB1dHJlc2Vl ZFtdID0geworKyAgICAweDljLCAweDI2LCAweGRhLCAweGYxLCAweGFjLCAweGQ5LCAweDVhLCAw eGQ2LCAweGE4LCAweDY1LCAweGY1LCAweDAyLAorKyAgICAweDhmLCAweGRjLCAweGEyLCAweDA5 LCAweDU0LCAweGE2LCAweGUyLCAweGE0LCAweGRlLCAweDMyLCAweGUwLCAweDAxCisrfTsKKysK KytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5 Ml91c2VfZGZfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4OWIsIDB4OTAsIDB4 YjAsIDB4M2EsIDB4MGUsIDB4M2EsIDB4ODAsIDB4MDcsIDB4NGEsIDB4ZjQsIDB4ZGEsIDB4NzYs CisrICAgIDB4MjgsIDB4MzAsIDB4M2MsIDB4ZWUsIDB4NTQsIDB4MWIsIDB4OTQsIDB4NTksIDB4 NTEsIDB4NDMsIDB4NTYsIDB4NzcsCisrICAgIDB4YWYsIDB4ODgsIDB4ZGQsIDB4NjMsIDB4ODks IDB4NDcsIDB4MDYsIDB4NjUKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7CisrICAg IDB4M2MsIDB4MTEsIDB4NjQsIDB4N2EsIDB4OTYsIDB4ZjUsIDB4ZDgsIDB4YjgsIDB4YWUsIDB4 ZDYsIDB4NzAsIDB4NGUsCisrICAgIDB4MTYsIDB4OTYsIDB4ZGUsIDB4ZTksIDB4NjIsIDB4YmMs IDB4ZWUsIDB4MjgsIDB4MmYsIDB4MjYsIDB4YTYsIDB4ZjAsCisrICAgIDB4NTYsIDB4ZWYsIDB4 YTMsIDB4ZjEsIDB4NmIsIDB4YTEsIDB4YjEsIDB4NzcKKyt9OworKworK19fZmlwc19jb25zdHNl ZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9yZXR1cm5lZGJpdHNb XSA9IHsKKysgICAgMHgwYiwgMHhlMiwgMHg1NiwgMHgwMywgMHgxZSwgMHhkYiwgMHgyYywgMHg2 ZCwgMHg3ZiwgMHgxYiwgMHgxNSwgMHg1OCwKKysgICAgMHgxYSwgMHhmOSwgMHgxMywgMHgyOAor K307CisrCisrLyogQUVTLTI1NiB1c2UgZGYgUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX3ByX2VudHJvcHlpbnB1dFtdID0g eworKyAgICAweDYxLCAweDY4LCAweGZjLCAweDFhLCAweGYwLCAweGI1LCAweDk1LCAweDZiLCAw eDg1LCAweDA5LCAweDliLCAweDc0LAorKyAgICAweDNmLCAweDEzLCAweDc4LCAweDQ5LCAweDNi LCAweDg1LCAweGVjLCAweDkzLCAweDEzLCAweDNiLCAweGE5LCAweDRmLAorKyAgICAweDk2LCAw eGFiLCAweDJjLCAweGU0LCAweGM4LCAweDhmLCAweGRkLCAweDZhCisrfTsKKysKKytfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfcHJfbm9u Y2VbXSA9IHsKKysgICAgMHhhZCwgMHhkMiwgMHhiYiwgMHhiYSwgMHhiNywgMHg2NSwgMHg4OSwg MHhjMywgMHgyMSwgMHg2YywgMHg1NSwgMHgzMywKKysgICAgMHgyYiwgMHgzNiwgMHhmZiwgMHhh NAorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGFlc18yNTZfdXNlX2RmX3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAw eDZlLCAweGNhLCAweGU3LCAweDIwLCAweDcyLCAweGQzLCAweDg0LCAweDVhLCAweDMyLCAweGQz LCAweDRiLCAweDI0LAorKyAgICAweDcyLCAweGM0LCAweDYzLCAweDJiLCAweDlkLCAweDEyLCAw eDI0LCAweDBjLCAweDIzLCAweDI2LCAweDhlLCAweDgzLAorKyAgICAweDE2LCAweDM3LCAweDBi LCAweGQxLCAweDA2LCAweDRmLCAweDY4LCAweDZkCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcK KysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfcHJfYWRkaXRp b25hbGlucHV0W10gPSB7CisrICAgIDB4N2UsIDB4MDgsIDB4NGEsIDB4YmIsIDB4ZTMsIDB4MjEs IDB4N2MsIDB4YzksIDB4MjMsIDB4ZDIsIDB4ZjgsIDB4YjAsCisrICAgIDB4NzMsIDB4OTgsIDB4 YmEsIDB4ODQsIDB4NzQsIDB4MjMsIDB4YWIsIDB4MDYsIDB4OGEsIDB4ZTIsIDB4MjIsIDB4ZDMs CisrICAgIDB4N2IsIDB4Y2UsIDB4OWIsIDB4ZDIsIDB4NGEsIDB4NzYsIDB4YjgsIDB4ZGUKKyt9 OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBh ZXNfMjU2X3VzZV9kZl9wcl9lbnRyb3B5aW5wdXRwcltdID0geworKyAgICAweDBiLCAweDIzLCAw eGFmLCAweGRmLCAweGYxLCAweDYyLCAweGQ3LCAweGQzLCAweDQzLCAweDk3LCAweGY4LCAweDc3 LAorKyAgICAweDA0LCAweGE4LCAweDQyLCAweDIwLCAweGJkLCAweGY2LCAweDBmLCAweGMxLCAw eDE3LCAweDJmLCAweDlmLCAweDU0LAorKyAgICAweGJiLCAweDU2LCAweDE3LCAweDg2LCAweDY4 LCAweDBlLCAweGJhLCAweGE5CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfcHJfaW50X3JldHVybmVkYml0c1td ID0geworKyAgICAweDMxLCAweDhlLCAweGFkLCAweGFmLCAweDQwLCAweGViLCAweDZiLCAweDc0 LCAweDMxLCAweDQ2LCAweDgwLCAweGM3LAorKyAgICAweDE3LCAweGFiLCAweDNjLCAweDdhCisr fTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg YWVzXzI1Nl91c2VfZGZfcHJfYWRkaXRpb25hbGlucHV0MltdID0geworKyAgICAweDk0LCAweDZi LCAweGM5LCAweDlmLCAweGFiLCAweDhkLCAweGM1LCAweGVjLCAweDcxLCAweDg4LCAweDFkLCAw eDAwLAorKyAgICAweDhjLCAweDg5LCAweDY4LCAweGU0LCAweGM4LCAweDA3LCAweDc3LCAweDM2 LCAweDE3LCAweDZkLCAweDc5LCAweDc4LAorKyAgICAweGM3LCAweDA2LCAweDRlLCAweDk5LCAw eDA0LCAweDI4LCAweDI5LCAweGMzCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfcHJfZW50cm9weWlucHV0cHIy W10gPSB7CisrICAgIDB4YmYsIDB4NmMsIDB4NTksIDB4MmEsIDB4MGQsIDB4NDQsIDB4MGYsIDB4 YWUsIDB4OWEsIDB4NWUsIDB4MDMsIDB4NzMsCisrICAgIDB4ZDgsIDB4YTYsIDB4ZTEsIDB4Y2Ys IDB4MjUsIDB4NjEsIDB4MzgsIDB4MjQsIDB4ODYsIDB4OWUsIDB4NTMsIDB4ZTgsCisrICAgIDB4 YTQsIDB4ZGYsIDB4NTYsIDB4ZjQsIDB4MDYsIDB4MDcsIDB4OWMsIDB4MGYKKyt9OworKworK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9w cl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHgyMiwgMHg0YSwgMHhiNCwgMHhiOCwgMHhiNiwg MHhlZSwgMHg3ZCwgMHhiMSwgMHg5ZSwgMHhjOSwgMHhmOSwgMHhhMCwKKysgICAgMHhkOSwgMHhl MiwgMHg5NywgMHgwMAorK307CisrCisrLyogQUVTLTI1NiB1c2UgZGYgTm8gUFIgICovCisrX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX2Vu dHJvcHlpbnB1dFtdID0geworKyAgICAweGE1LCAweDNlLCAweDM3LCAweDEwLCAweDE3LCAweDQz LCAweDkxLCAweDkzLCAweDU5LCAweDFlLCAweDQ3LCAweDUwLAorKyAgICAweDg3LCAweGFhLCAw eGRkLCAweGQ1LCAweGMxLCAweGMzLCAweDg2LCAweGNkLCAweGNhLCAweDBkLCAweGRiLCAweDY4 LAorKyAgICAweGUwLCAweDAyLCAweGQ4LCAweDBmLCAweGRjLCAweDQwLCAweDFhLCAweDQ3Cisr fTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1 Nl91c2VfZGZfbm9uY2VbXSA9IHsKKysgICAgMHhhOSwgMHg0ZCwgMHhhNSwgMHg1YSwgMHhmZCwg MHhjNSwgMHgwYywgMHhlNSwgMHgxYywgMHg5YSwgMHgzYiwgMHg4YSwKKysgICAgMHg0YywgMHg0 NCwgMHg4NCwgMHg0MAorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0g eworKyAgICAweDhiLCAweDUyLCAweGEyLCAweDRhLCAweDkzLCAweGMzLCAweDRlLCAweGE3LCAw eDFlLCAweDFjLCAweGE3LCAweDA1LAorKyAgICAweGViLCAweDgyLCAweDliLCAweGE2LCAweDVk LCAweGU0LCAweGQ0LCAweGUwLCAweDdmLCAweGEzLCAweGQ4LCAweDZiLAorKyAgICAweDM3LCAw eDg0LCAweDVmLCAweGYxLCAweGM3LCAweGQ1LCAweGY2LCAweGQyCisrfTsKKysKKytfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfYWRkaXRp b25hbGlucHV0W10gPSB7CisrICAgIDB4MjAsIDB4ZjQsIDB4MjIsIDB4ZWQsIDB4ZjgsIDB4NWMs IDB4YTEsIDB4NmEsIDB4MDEsIDB4Y2YsIDB4YmUsIDB4NWYsCisrICAgIDB4OGQsIDB4NmMsIDB4 OTQsIDB4N2YsIDB4YWUsIDB4MTIsIDB4YTgsIDB4NTcsIDB4ZGIsIDB4MmEsIDB4YTksIDB4YmYs CisrICAgIDB4YzcsIDB4YjMsIDB4NjUsIDB4ODEsIDB4ODAsIDB4OGQsIDB4MGQsIDB4NDYKKyt9 OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2 X3VzZV9kZl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4NGUsIDB4NDQsIDB4ZmQsIDB4 ZjMsIDB4OWUsIDB4MjksIDB4YTIsIDB4YjgsIDB4MGYsIDB4NWQsIDB4NmMsIDB4ZTEsCisrICAg IDB4MjgsIDB4MGMsIDB4M2IsIDB4YzEKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9lbnRyb3B5aW5wdXRyZXNl ZWRbXSA9IHsKKysgICAgMHhkZCwgMHg0MCwgMHhlNSwgMHg5OCwgMHg3YiwgMHgyNywgMHgxNiwg MHg3MywgMHgxNSwgMHg2OCwgMHhkMiwgMHg3NiwKKysgICAgMHhiZiwgMHgwYywgMHg2NywgMHgx NSwgMHg3NSwgMHg3OSwgMHgwMywgMHhkMywgMHhkZSwgMHhkZSwgMHg5MSwgMHg0NiwKKysgICAg MHg0MiwgMHhkZCwgMHhkNCwgMHg2NywgMHhjOCwgMHg3OSwgMHhjOCwgMHgxZQorK307CisrCisr X19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZf dXNlX2RmX2FkZGl0aW9uYWxpbnB1dHJlc2VlZFtdID0geworKyAgICAweDdmLCAweGQ4LCAweDFm LCAweGJkLCAweDJhLCAweGI1LCAweDFjLCAweDExLCAweDVkLCAweDgzLCAweDRlLCAweDk5LAor KyAgICAweGY2LCAweDVjLCAweGE1LCAweDQwLCAweDIwLCAweGVkLCAweDM4LCAweDhlLCAweGQ1 LCAweDllLCAweGUwLCAweDc1LAorKyAgICAweDkzLCAweGZlLCAweDEyLCAweDVlLCAweDVkLCAw eDczLCAweGZiLCAweDc1CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfYWRkaXRpb25hbGlucHV0MltdID0geworKyAgICAw eGNkLCAweDJjLCAweGZmLCAweDE0LCAweDY5LCAweDNlLCAweDRjLCAweDllLCAweGZkLCAweGZl LCAweDI2LCAweDBkLAorKyAgICAweGU5LCAweDg2LCAweDAwLCAweDQ5LCAweDMwLCAweGJhLCAw eGIxLCAweGM2LCAweDUwLCAweDU3LCAweDc3LCAweDJhLAorKyAgICAweDYyLCAweDM5LCAweDJj LCAweDNiLCAweDc0LCAweGViLCAweGM5LCAweDBkCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfcmV0dXJuZWRiaXRzW10g PSB7CisrICAgIDB4NGYsIDB4NzgsIDB4YmUsIDB4YjksIDB4NGQsIDB4OTcsIDB4OGMsIDB4ZTks IDB4ZDAsIDB4OTcsIDB4ZmUsIDB4YWQsCisrICAgIDB4ZmEsIDB4ZmQsIDB4MzUsIDB4NWUKKyt9 OworKworKy8qIEFFUy0xMjggbm8gZGYgUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfcHJfZW50cm9weWlucHV0W10gPSB7Cisr ICAgIDB4OWEsIDB4MjUsIDB4NjUsIDB4MTAsIDB4NjcsIDB4ZDUsIDB4YjYsIDB4NmIsIDB4NzAs IDB4YTEsIDB4YjMsIDB4YTQsCisrICAgIDB4NDMsIDB4OTUsIDB4ODAsIDB4YzAsIDB4ODQsIDB4 MGEsIDB4NzksIDB4YjAsIDB4ODgsIDB4NzQsIDB4ZjIsIDB4YmYsCisrICAgIDB4MzEsIDB4NmMs IDB4MzMsIDB4MzgsIDB4MGIsIDB4MDAsIDB4YjIsIDB4NWEKKyt9OworKworK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX3ByX25vbmNlW10g PSB7CisrICAgIDB4NzgsIDB4NDcsIDB4NmIsIDB4ZjcsIDB4OTAsIDB4OGUsIDB4ODcsIDB4ZjEK Kyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBhZXNfMTI4X25vX2RmX3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAweGY3 LCAweDIyLCAweDFkLCAweDNhLCAweGJlLCAweDFkLCAweGNhLCAweDMyLCAweDFiLCAweGJkLCAw eDg3LCAweDBjLAorKyAgICAweDUxLCAweDI0LCAweDE5LCAweGVlLCAweGEzLCAweDIzLCAweDA5 LCAweDYzLCAweDMzLCAweDNkLCAweGE4LCAweDBjLAorKyAgICAweDFjLCAweGZhLCAweDQyLCAw eDg5LCAweGNjLCAweDZmLCAweGEwLCAweGE4CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysg ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19kZl9wcl9hZGRpdGlvbmFs aW5wdXRbXSA9IHsKKysgICAgMHhjOSwgMHhlMCwgMHg4MCwgMHhiZiwgMHg4YywgMHg0NSwgMHg1 OCwgMHgzOSwgMHhmZiwgMHgwMCwgMHhhYiwgMHgwMiwKKysgICAgMHg0YywgMHgzZSwgMHgzYSwg MHg5NSwgMHg5YiwgMHg4MCwgMHhhOCwgMHgyMSwgMHgyYSwgMHhlZSwgMHhiYSwgMHg3MywKKysg ICAgMHhiMSwgMHhkOSwgMHhjZiwgMHgyOCwgMHhmNiwgMHg4ZiwgMHg5YiwgMHgxMgorK307Cisr CisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9f ZGZfcHJfZW50cm9weWlucHV0cHJbXSA9IHsKKysgICAgMHg0YywgMHhhOCwgMHhjNSwgMHhmMCwg MHg1OSwgMHg5ZSwgMHhhNiwgMHg4ZCwgMHgyNiwgMHg1MywgMHhkNywgMHg4YSwKKysgICAgMHhh OSwgMHhkOCwgMHhmNywgMHhlZCwgMHhiMiwgMHhmOSwgMHgxMiwgMHg0MiwgMHhlMSwgMHhlNSwg MHhiZCwgMHhlNywKKysgICAgMHhlNywgMHgxZCwgMHg3NCwgMHg5OSwgMHgwMCwgMHg5ZCwgMHgz MSwgMHgzZQorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGFlc18xMjhfbm9fZGZfcHJfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAw eGUyLCAweGFjLCAweDIwLCAweGYwLCAweDgwLCAweGU3LCAweGJjLCAweDdlLCAweDljLCAweDdi LCAweDY1LCAweDcxLAorKyAgICAweGFmLCAweDE5LCAweDMyLCAweDE2CisrfTsKKysKKytfX2Zp cHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19k Zl9wcl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7CisrICAgIDB4MzIsIDB4N2YsIDB4MzgsIDB4OGIs IDB4NzMsIDB4MGEsIDB4NzgsIDB4ODMsIDB4ZGMsIDB4MzAsIDB4YmUsIDB4OWYsCisrICAgIDB4 MTAsIDB4MWYsIDB4ZjUsIDB4MWYsIDB4Y2EsIDB4MDAsIDB4YjUsIDB4MGQsIDB4ZDYsIDB4OWQs IDB4NjAsIDB4ODMsCisrICAgIDB4NTEsIDB4NTQsIDB4N2QsIDB4MzgsIDB4MjMsIDB4M2EsIDB4 NTIsIDB4NTAKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBhZXNfMTI4X25vX2RmX3ByX2VudHJvcHlpbnB1dHByMltdID0geworKyAgICAw eDE4LCAweDYxLCAweDUzLCAweDU2LCAweGVkLCAweGVkLCAweGQ3LCAweDIwLCAweGZiLCAweDcx LCAweDA0LCAweDdhLAorKyAgICAweGIyLCAweGFjLCAweGMxLCAweDI4LCAweGNkLCAweGYyLCAw eGMyLCAweGZjLCAweGFhLCAweGIxLCAweDA2LCAweDA3LAorKyAgICAweGU5LCAweDQ2LCAweDk1 LCAweDAyLCAweDQ4LCAweDAxLCAweDc4LCAweGY5CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19kZl9wcl9yZXR1cm5lZGJpdHNb XSA9IHsKKysgICAgMHgyOSwgMHhjOCwgMHgxYiwgMHgxNSwgMHhiMSwgMHhkMSwgMHhjMiwgMHhm NiwgMHg3MSwgMHg4NiwgMHg2OCwgMHgzMywKKysgICAgMHg1NywgMHg4MiwgMHgzMywgMHhhZgor K307CisrCisrLyogQUVTLTEyOCBubyBkZiBObyBQUiAgKi8KKytfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19kZl9lbnRyb3B5aW5wdXRbXSA9IHsK KysgICAgMHhjOSwgMHhjNSwgMHg3OSwgMHhiYywgMHhlOCwgMHhjNSwgMHgxOSwgMHhkOCwgMHhi YywgMHg2NiwgMHg3MywgMHg2NywKKysgICAgMHhmNiwgMHhkMywgMHg3MiwgMHhhYSwgMHhhNiwg MHgxNiwgMHhiOCwgMHg1MCwgMHhiNywgMHg0NywgMHgzYSwgMHg0MiwKKysgICAgMHhhYiwgMHhm NCwgMHgxNiwgMHhiMiwgMHg5NiwgMHhkMiwgMHhiNiwgMHg2MAorK307CisrCisrX19maXBzX2Nv bnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfbm9uY2VbXSA9 IHsKKysgICAgMHg1ZiwgMHhiZiwgMHg5NywgMHgwYywgMHg0YiwgMHhhNCwgMHg4NywgMHgxMwor K307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGFlc18xMjhfbm9fZGZfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7CisrICAgIDB4Y2UsIDB4 ZmIsIDB4N2IsIDB4M2YsIDB4ZDQsIDB4NmIsIDB4MjksIDB4MGQsIDB4NjksIDB4MDYsIDB4ZmYs IDB4YmIsCisrICAgIDB4ZjIsIDB4ZTUsIDB4YzYsIDB4NmMsIDB4MGEsIDB4MTAsIDB4YTAsIDB4 Y2YsIDB4MWEsIDB4NDgsIDB4YzcsIDB4OGIsCisrICAgIDB4M2MsIDB4MTYsIDB4ODgsIDB4ZWQs IDB4NTAsIDB4MTMsIDB4ODEsIDB4Y2UKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX2FkZGl0aW9uYWxpbnB1dFtdID0gewor KyAgICAweDRiLCAweDIyLCAweDQ2LCAweDE4LCAweDAyLCAweDdiLCAweGQyLCAweDFiLCAweDIy LCAweDQyLCAweDdjLCAweDM3LAorKyAgICAweGQ5LCAweGY2LCAweGU4LCAweDliLCAweDEyLCAw eDMwLCAweDVmLCAweGU5LCAweDkwLCAweGU4LCAweDA4LCAweDI0LAorKyAgICAweDRmLCAweDA2 LCAweDY2LCAweGRiLCAweDE5LCAweDJiLCAweDEzLCAweDk1CisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19kZl9pbnRfcmV0dXJu ZWRiaXRzW10gPSB7CisrICAgIDB4MmUsIDB4OTYsIDB4NzAsIDB4NjQsIDB4ZmEsIDB4ZGYsIDB4 ZGYsIDB4NTcsIDB4YjUsIDB4ODIsIDB4ZWUsIDB4ZDYsCisrICAgIDB4ZWQsIDB4M2UsIDB4NjUs IDB4YzIKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBhZXNfMTI4X25vX2RmX2VudHJvcHlpbnB1dHJlc2VlZFtdID0geworKyAgICAweDI2 LCAweGMwLCAweDcyLCAweDE2LCAweDNhLCAweDRiLCAweGI3LCAweDk5LCAweGQ0LCAweDA3LCAw eGFmLCAweDY2LAorKyAgICAweDYyLCAweDM2LCAweDk2LCAweGE0LCAweDUxLCAweDE3LCAweGZh LCAweDA3LCAweDhiLCAweDE3LCAweDVlLCAweGExLAorKyAgICAweDJmLCAweDNjLCAweDEwLCAw eGU3LCAweDkwLCAweGQwLCAweDQ2LCAweDAwCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysg ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19kZl9hZGRpdGlvbmFsaW5w dXRyZXNlZWRbXSA9IHsKKysgICAgMHg4MywgMHgzOSwgMHgzNywgMHg3YiwgMHgwMiwgMHgwNiwg MHhkMiwgMHgxMiwgMHgxMywgMHg4ZCwgMHg4YiwgMHhmMiwKKysgICAgMHhmMCwgMHhmNiwgMHgy NiwgMHhlYiwgMHhhNCwgMHgyMiwgMHg3YiwgMHhjMiwgMHhlNywgMHhiYSwgMHg3OSwgMHhlNCwK KysgICAgMHgzYiwgMHg3NywgMHg1ZCwgMHg0ZCwgMHg0NywgMHhiMiwgMHgyZCwgMHhiNAorK307 CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhf bm9fZGZfYWRkaXRpb25hbGlucHV0MltdID0geworKyAgICAweDBiLCAweGI5LCAweDY3LCAweDM3 LCAweGRiLCAweDgzLCAweGRmLCAweGNhLCAweDgxLCAweDhiLCAweGY5LCAweDNmLAorKyAgICAw eGYxLCAweDExLCAweDFiLCAweDJmLCAweGYwLCAweDYxLCAweGE2LCAweGRmLCAweGJhLCAweGEz LCAweGIxLCAweGFjLAorKyAgICAweGQzLCAweGU2LCAweDA5LCAweGI4LCAweDJjLCAweDZhLCAw eDY3LCAweGQ2CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgYWVzXzEyOF9ub19kZl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHgxZSwgMHhhNywg MHhhNCwgMHhlNCwgMHhlMSwgMHhhNiwgMHg3YywgMHg2OSwgMHg5YSwgMHg0NCwgMHg2YywgMHgz NiwKKysgICAgMHg4MSwgMHgzNywgMHgxOSwgMHhkNAorK307CisrCisrLyogQUVTLTE5MiBubyBk ZiBQUiAgKi8KKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVz XzE5Ml9ub19kZl9wcl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHg5ZCwgMHgyYywgMHhkMiwg MHg1NSwgMHg2NiwgMHhlYSwgMHhlMCwgMHhiZSwgMHgxOCwgMHhiNywgMHg3NiwgMHhlNywKKysg ICAgMHg3MywgMHgzNSwgMHhkOCwgMHgxZiwgMHhhZCwgMHgzYSwgMHhlMywgMHg4MSwgMHgwZSwg MHg5MiwgMHhkMCwgMHg2MSwKKysgICAgMHhjOSwgMHgxMiwgMHgyNiwgMHhmNiwgMHgxYywgMHhk ZiwgMHhmZSwgMHg0NywgMHhhYSwgMHhmZSwgMHg3ZCwgMHg1YSwKKysgICAgMHgxNywgMHgxZiwg MHg4ZCwgMHg5YQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGFlc18xOTJfbm9fZGZfcHJfbm9uY2VbXSA9IHsKKysgICAgMHg0NCwgMHg4MiwgMHhl ZCwgMHhlOCwgMHg0YywgMHgyOCwgMHg1YSwgMHgxNCwgMHhmZiwgMHg4OCwgMHg4ZCwgMHgxOSwK KysgICAgMHg2MSwgMHg1YywgMHhlZSwgMHgwZgorK307CisrCisrX19maXBzX2NvbnN0c2VnCisr ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfcHJfcGVyc29uYWxp emF0aW9uc3RyaW5nW10gPSB7CisrICAgIDB4NDcsIDB4ZDcsIDB4OWIsIDB4OTksIDB4YWEsIDB4 Y2IsIDB4ZTcsIDB4ZDIsIDB4NTcsIDB4NjYsIDB4MmMsIDB4ZTEsCisrICAgIDB4NzgsIDB4ZDYs IDB4MmMsIDB4ZWEsIDB4YTMsIDB4MjMsIDB4NWYsIDB4MmEsIDB4YzEsIDB4M2EsIDB4ZjAsIDB4 YTQsCisrICAgIDB4MjAsIDB4M2IsIDB4ZmEsIDB4MDcsIDB4ZDUsIDB4MDUsIDB4MDIsIDB4ZTQs IDB4NTcsIDB4MDEsIDB4YjYsIDB4MTAsCisrICAgIDB4NTcsIDB4MmUsIDB4ZTcsIDB4NTUKKyt9 OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBh ZXNfMTkyX25vX2RmX3ByX2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAweDRiLCAweDc0LCAw eDBiLCAweDQwLCAweGNlLCAweDZiLCAweGMyLCAweDZhLCAweDI0LCAweGI0LCAweGYzLCAweGFk LAorKyAgICAweDdhLCAweGE1LCAweDdhLCAweGEyLCAweDE1LCAweGUyLCAweGM4LCAweDYxLCAw eDE1LCAweGM2LCAweGI3LCAweDg1LAorKyAgICAweDY5LCAweDExLCAweGFkLCAweDdiLCAweDE0 LCAweGQyLCAweGY2LCAweDEyLCAweGExLCAweDk1LCAweDVkLCAweDNmLAorKyAgICAweGUyLCAw eGQwLCAweDBjLCAweDJmCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9wcl9lbnRyb3B5aW5wdXRwcltdID0geworKyAgICAw eDBjLCAweDljLCAweGFkLCAweDA1LCAweGVlLCAweGFlLCAweDQ4LCAweDIzLCAweDg5LCAweDU5 LCAweGExLCAweDk0LAorKyAgICAweGQ3LCAweGQ4LCAweDc1LCAweGQ1LCAweDU0LCAweDkzLCAw eGM3LCAweDRhLCAweGQ5LCAweDI2LCAweGRlLCAweGViLAorKyAgICAweGJhLCAweGIwLCAweDdl LCAweDMwLCAweDFkLCAweDVmLCAweDY5LCAweDQwLCAweDljLCAweDNiLCAweDE3LCAweDU4LAor KyAgICAweDFkLCAweDMwLCAweGIzLCAweDc4CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysg ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9wcl9pbnRfcmV0dXJu ZWRiaXRzW10gPSB7CisrICAgIDB4ZjcsIDB4OTMsIDB4YjAsIDB4NmQsIDB4NzcsIDB4ODMsIDB4 ZDUsIDB4MzgsIDB4MDEsIDB4ZTEsIDB4NTIsIDB4NDAsCisrICAgIDB4N2UsIDB4M2UsIDB4MGMs IDB4MjYKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBhZXNfMTkyX25vX2RmX3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHhi YywgMHg0YiwgMHgzNywgMHg0NCwgMHgxYywgMHhjNSwgMHg0NSwgMHg1ZiwgMHg4ZiwgMHg1MSwg MHg2MiwgMHg4YSwKKysgICAgMHg4NSwgMHgzMCwgMHgxZCwgMHg3YywgMHhlNCwgMHhjZiwgMHhm NywgMHg0NCwgMHhjZSwgMHgzMiwgMHgzZSwgMHg1NywKKysgICAgMHg5NSwgMHhhNCwgMHgyYSwg MHhkZiwgMHhmZCwgMHg5ZSwgMHgzOCwgMHg0MSwgMHhiMywgMHhmNiwgMHhjNSwgMHhlZSwKKysg ICAgMHgwYywgMHg0YiwgMHhlZSwgMHg2ZQorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAg IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfcHJfZW50cm9weWlucHV0 cHIyW10gPSB7CisrICAgIDB4ZWMsIDB4YWYsIDB4ZjYsIDB4NGYsIDB4YjEsIDB4YTAsIDB4NTQs IDB4YjUsIDB4NWIsIDB4ZTMsIDB4NDYsIDB4YjAsCisrICAgIDB4NzYsIDB4NWEsIDB4N2MsIDB4 M2YsIDB4N2IsIDB4OTQsIDB4NjksIDB4MjEsIDB4NTEsIDB4MDIsIDB4ZTUsIDB4OWYsCisrICAg IDB4MDQsIDB4NTksIDB4MDIsIDB4OTgsIDB4YzYsIDB4NDMsIDB4MmMsIDB4Y2MsIDB4MjYsIDB4 NGMsIDB4ODcsIDB4NmIsCisrICAgIDB4OGUsIDB4MGEsIDB4ODMsIDB4ZGYKKyt9OworKworK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX3By X3JldHVybmVkYml0c1tdID0geworKyAgICAweDc0LCAweDQ1LCAweGZiLCAweDUzLCAweDg0LCAw eDk2LCAweGJlLCAweGZmLCAweDE1LCAweGNjLCAweDQxLCAweDkxLAorKyAgICAweGI5LCAweGEx LCAweDIxLCAweDY4CisrfTsKKysKKysvKiBBRVMtMTkyIG5vIGRmIE5vIFBSICAqLworK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX2VudHJv cHlpbnB1dFtdID0geworKyAgICAweDNjLCAweDdkLCAweGI1LCAweGUwLCAweDU0LCAweGQ5LCAw eDZlLCAweDhjLCAweGE5LCAweDg2LCAweGNlLCAweDRlLAorKyAgICAweDZiLCAweGFmLCAweGVi LCAweDJmLCAweGU3LCAweDc1LCAweGUwLCAweDhiLCAweGE0LCAweDNiLCAweDA3LCAweGZlLAor KyAgICAweGJlLCAweDMzLCAweDc1LCAweDkzLCAweDgwLCAweDI3LCAweGI1LCAweDI5LCAweDQ3 LCAweDhiLCAweGM3LCAweDI4LAorKyAgICAweDk0LCAweGMzLCAweDU5LCAweDYzCisrfTsKKysK KytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19k Zl9ub25jZVtdID0geworKyAgICAweDQzLCAweGYxLCAweDdkLCAweGI4LCAweGMzLCAweGZlLCAw eGQwLCAweDIzLCAweDZiLCAweGI0LCAweDkyLCAweGRiLAorKyAgICAweDI5LCAweGZkLCAweDQ1 LCAweDcxCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAg MHg5ZiwgMHgyNCwgMHgyOSwgMHg5OSwgMHg5ZSwgMHgwMSwgMHhhYiwgMHhlOSwgMHgxOSwgMHhk OCwgMHgyMywgMHgwOCwKKysgICAgMHhiNywgMHhkNiwgMHg3ZSwgMHg4YywgMHhjMCwgMHg5ZSwg MHg3ZiwgMHg2ZSwgMHg1YiwgMHgzMywgMHgyMCwgMHg5NiwKKysgICAgMHgwYiwgMHgyMywgMHgy YywgMHhhNSwgMHg2YSwgMHhmOCwgMHgxYiwgMHgwNCwgMHgyNiwgMHhkYiwgMHgyZSwgMHgyYiwK KysgICAgMHgzYiwgMHg4OCwgMHhjZSwgMHgzNQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfYWRkaXRpb25hbGlucHV0W10g PSB7CisrICAgIDB4OTQsIDB4ZTksIDB4N2MsIDB4M2QsIDB4YTcsIDB4ZGIsIDB4NjAsIDB4ODMs IDB4MWYsIDB4OTgsIDB4M2YsIDB4MGIsCisrICAgIDB4ODgsIDB4NTksIDB4NTcsIDB4NTEsIDB4 ODgsIDB4OWYsIDB4NzYsIDB4NDksIDB4OWYsIDB4YTYsIDB4ZGEsIDB4NzEsCisrICAgIDB4MWQs IDB4MGQsIDB4NDcsIDB4MTYsIDB4NjMsIDB4YzUsIDB4NjgsIDB4ZTQsIDB4NWQsIDB4MzksIDB4 NjksIDB4YjMsCisrICAgIDB4M2UsIDB4YmUsIDB4ZDQsIDB4OGUKKyt9OworKworK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX2ludF9yZXR1 cm5lZGJpdHNbXSA9IHsKKysgICAgMHhmOSwgMHhkNywgMHhhZCwgMHg2OSwgMHhhYiwgMHg4Ziwg MHgyMywgMHg1NiwgMHg3MCwgMHgxNywgMHg0ZiwgMHgyYSwKKysgICAgMHg0NSwgMHhlNywgMHg0 YSwgMHhjNQorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGFlc18xOTJfbm9fZGZfZW50cm9weWlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4 YTYsIDB4NzEsIDB4NmEsIDB4M2QsIDB4YmEsIDB4ZDEsIDB4ZTgsIDB4NjYsIDB4YTYsIDB4ZWYs IDB4YjIsIDB4MGUsCisrICAgIDB4YTgsIDB4OWMsIDB4YWEsIDB4NGUsIDB4YWYsIDB4MTcsIDB4 ODksIDB4NTAsIDB4MDAsIDB4ZGEsIDB4YTEsIDB4YjEsCisrICAgIDB4MGIsIDB4YTQsIDB4ZDks IDB4MzUsIDB4ODksIDB4YzgsIDB4ZTUsIDB4YjAsIDB4ZDksIDB4YjcsIDB4YzQsIDB4MzMsCisr ICAgIDB4OWIsIDB4Y2IsIDB4N2UsIDB4NzUKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAg ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX2FkZGl0aW9uYWxpbnB1 dHJlc2VlZFtdID0geworKyAgICAweDI3LCAweDIxLCAweGZjLCAweGMyLCAweGJkLCAweGYzLCAw eDNjLCAweGNlLCAweGMzLCAweGNhLCAweGMxLCAweDAxLAorKyAgICAweGUwLCAweGZmLCAweDkz LCAweDEyLCAweDdkLCAweDU0LCAweDQyLCAweGUzLCAweDlmLCAweDAzLCAweGRmLCAweDI3LAor KyAgICAweDA0LCAweDA3LCAweDNjLCAweDUzLCAweDdmLCAweGE4LCAweDY2LCAweGM4LCAweDk3 LCAweDRiLCAweDYxLCAweDQwLAorKyAgICAweDVkLCAweDdhLCAweDI1LCAweDc5CisrfTsKKysK KytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19k Zl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7CisrICAgIDB4MmQsIDB4OGUsIDB4MTYsIDB4NWQsIDB4 MGIsIDB4OWYsIDB4ZWIsIDB4YWEsIDB4ZDYsIDB4ZWMsIDB4MjgsIDB4NzEsCisrICAgIDB4N2Ms IDB4MGIsIDB4YzEsIDB4MWQsIDB4ZDQsIDB4NDQsIDB4MTksIDB4NDcsIDB4ZmQsIDB4MWQsIDB4 N2MsIDB4ZTUsCisrICAgIDB4ZjMsIDB4MjcsIDB4ZTEsIDB4YjYsIDB4NzIsIDB4MGEsIDB4ZTAs IDB4ZWMsIDB4MGUsIDB4Y2QsIDB4ZWYsIDB4MWEsCisrICAgIDB4OTEsIDB4NmEsIDB4ZTMsIDB4 NWYKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBh ZXNfMTkyX25vX2RmX3JldHVybmVkYml0c1tdID0geworKyAgICAweGU1LCAweGRhLCAweGI4LCAw eGUwLCAweDYzLCAweDU5LCAweDVhLCAweGNjLCAweDNkLCAweGRjLCAweDlmLCAweGU4LAorKyAg ICAweDY2LCAweDY3LCAweDJjLCAweDkyCisrfTsKKysKKysvKiBBRVMtMjU2IG5vIGRmIFBSICAq LworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25v X2RmX3ByX2VudHJvcHlpbnB1dFtdID0geworKyAgICAweDE1LCAweGM3LCAweDVkLCAweGNiLCAw eDQxLCAweDRiLCAweDE2LCAweDAxLCAweDNhLCAweGQxLCAweDQ0LCAweGU4LAorKyAgICAweDIy LCAweDMyLCAweGM2LCAweDljLCAweDNmLCAweGU3LCAweDQzLCAweGY1LCAweDlhLCAweGQzLCAw eGVhLCAweGYyLAorKyAgICAweGQ3LCAweDRlLCAweDZlLCAweDZhLCAweDU1LCAweDczLCAweDQw LCAweGVmLCAweDg5LCAweGFkLCAweDBkLCAweDAzLAorKyAgICAweDk2LCAweDdlLCAweDc4LCAw eDgxLCAweDJmLCAweDkxLCAweDFiLCAweDQ0LCAweGIwLCAweDAyLCAweGJhLCAweDFjCisrfTsK KysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9u b19kZl9wcl9ub25jZVtdID0geworKyAgICAweGRjLCAweGU0LCAweGQ0LCAweDI3LCAweDdhLCAw eDkwLCAweGQ3LCAweDk5LCAweDQzLCAweGExLCAweDNjLCAweDMwLAorKyAgICAweGNjLCAweDRi LCAweGVlLCAweDJlCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9 IHsKKysgICAgMHhlMywgMHhlNiwgMHhiOSwgMHgxMSwgMHhlNCwgMHg3YSwgMHhhNCwgMHg0MCwg MHg2YiwgMHhmOCwgMHg3MywgMHhmNywKKysgICAgMHg3ZSwgMHhlYywgMHhjNywgMHhiOSwgMHg5 NywgMHhiZiwgMHhmOCwgMHgyNSwgMHg3YiwgMHhiZSwgMHgxMSwgMHg5YiwKKysgICAgMHg1Yiwg MHg2YSwgMHgwYywgMHgyZSwgMHgyYiwgMHgwMSwgMHg1MSwgMHhjZCwgMHg0MSwgMHg0YiwgMHg2 YiwgMHhhYywKKysgICAgMHgzMSwgMHhhOCwgMHgwYiwgMHhmNywgMHhlNiwgMHg1OSwgMHg0Miwg MHhiOCwgMHgwMywgMHgwYywgMHhmOCwgMHgwNgorK307CisrCisrX19maXBzX2NvbnN0c2VnCisr ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9fZGZfcHJfYWRkaXRpb25h bGlucHV0W10gPSB7CisrICAgIDB4NmEsIDB4OWYsIDB4MDAsIDB4OTEsIDB4YWUsIDB4ZmUsIDB4 Y2YsIDB4ODQsIDB4OTksIDB4Y2UsIDB4YjEsIDB4NDAsCisrICAgIDB4NmQsIDB4NWQsIDB4MzMs IDB4MjgsIDB4ODQsIDB4ZjQsIDB4OGMsIDB4NjMsIDB4NGMsIDB4N2UsIDB4YmQsIDB4MmMsCisr ICAgIDB4ODAsIDB4NzYsIDB4ZWUsIDB4NWEsIDB4YWEsIDB4MTUsIDB4MDcsIDB4MzEsIDB4ZDgs IDB4YmIsIDB4OGMsIDB4NjksCisrICAgIDB4OWQsIDB4OWQsIDB4YmMsIDB4N2UsIDB4NDksIDB4 YWUsIDB4ZWMsIDB4MzksIDB4NmIsIDB4ZDEsIDB4MWYsIDB4N2UKKyt9OworKworK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2RmX3ByX2VudHJv cHlpbnB1dHByW10gPSB7CisrICAgIDB4ZjMsIDB4YjksIDB4NzUsIDB4OWMsIDB4YmQsIDB4ODgs IDB4ZWEsIDB4YTIsIDB4NTAsIDB4YWQsIDB4ZDYsIDB4MTYsCisrICAgIDB4MWEsIDB4MTIsIDB4 M2MsIDB4ODYsIDB4NjgsIDB4YWYsIDB4NmYsIDB4YmUsIDB4MTksIDB4ZjIsIDB4ZWUsIDB4Y2Ms CisrICAgIDB4YTUsIDB4NzAsIDB4ODQsIDB4NTMsIDB4NTAsIDB4Y2IsIDB4OWYsIDB4MTQsIDB4 YTksIDB4ZTUsIDB4ZWUsIDB4YjksCisrICAgIDB4NDgsIDB4NDUsIDB4NDAsIDB4ZTIsIDB4Yzcs IDB4YzksIDB4OWEsIDB4NzQsIDB4ZmYsIDB4OGMsIDB4OTksIDB4MWYKKyt9OworKworK19fZmlw c19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2Rm X3ByX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHgyZSwgMHhmMiwgMHg0NSwgMHg0Yywg MHg2MiwgMHgyZSwgMHgwYSwgMHhiOSwgMHg2YiwgMHhhMiwgMHhmZCwgMHg1NiwKKysgICAgMHg3 OSwgMHg2MCwgMHg5MywgMHhjZgorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9fZGZfcHJfYWRkaXRpb25hbGlucHV0Mltd ID0geworKyAgICAweGFmLCAweDY5LCAweDIwLCAweGU5LCAweDNiLCAweDM3LCAweDlkLCAweDNm LCAweGI0LCAweDgwLCAweDAyLCAweDdhLAorKyAgICAweDI1LCAweDdkLCAweGI4LCAweGRlLCAw eDcxLCAweGM1LCAweDA2LCAweDBjLCAweGI0LCAweGUyLCAweDhmLCAweDM1LAorKyAgICAweGQ4 LCAweDE0LCAweDBkLCAweDdmLCAweDc2LCAweDYzLCAweDRlLCAweGI1LCAweGVlLCAweGU5LCAw eDZmLCAweDM0LAorKyAgICAweGM3LCAweDVmLCAweDU2LCAweDE0LCAweDRhLCAweGU4LCAweDcz LCAweDk1LCAweDViLCAweDFjLCAweGI5LCAweGNiCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcK KysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9wcl9lbnRyb3B5 aW5wdXRwcjJbXSA9IHsKKysgICAgMHhlNSwgMHhiMCwgMHgyZSwgMHg3ZSwgMHg1MiwgMHgzMCwg MHhlMywgMHg2MywgMHg4MiwgMHhiNiwgMHg0NCwgMHhkMywKKysgICAgMHgyNSwgMHgxOSwgMHgw NSwgMHgyNCwgMHg5YSwgMHg5ZiwgMHg1ZiwgMHgyNywgMHg2YSwgMHgyOSwgMHhhYiwgMHhmYSwK KysgICAgMHgwNywgMHhhMiwgMHg0MiwgMHgwZiwgMHhjNSwgMHhhOCwgMHg5NCwgMHg3YywgMHgx NywgMHg3YiwgMHg4NSwgMHg4MywKKysgICAgMHgwYywgMHgyNSwgMHgwZSwgMHg2MywgMHgwYiwg MHhlOSwgMHgxMiwgMHg2MCwgMHhjZCwgMHhlZiwgMHg4MCwgMHgwZgorK307CisrCisrX19maXBz X2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9fZGZfcHJfcmV0 dXJuZWRiaXRzW10gPSB7CisrICAgIDB4NWUsIDB4ZjIsIDB4MjYsIDB4ZWYsIDB4OWYsIDB4NTgs IDB4NWQsIDB4ZDUsIDB4NGEsIDB4MTAsIDB4ZmUsIDB4YTcsCisrICAgIDB4MmQsIDB4NWYsIDB4 NGEsIDB4NDYKKyt9OworKworKy8qIEFFUy0yNTYgbm8gZGYgTm8gUFIgICovCisrX19maXBzX2Nv bnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9fZGZfZW50cm9weWlu cHV0W10gPSB7CisrICAgIDB4ZmIsIDB4Y2YsIDB4MWIsIDB4NjEsIDB4MTYsIDB4ODksIDB4Nzgs IDB4MjMsIDB4ZjUsIDB4ZDgsIDB4OTYsIDB4ZTMsCisrICAgIDB4NGUsIDB4NjQsIDB4MGIsIDB4 MjksIDB4OWEsIDB4M2YsIDB4ZjgsIDB4YTUsIDB4ZWQsIDB4ZjIsIDB4ZmUsIDB4ZGIsCisrICAg IDB4MTYsIDB4Y2EsIDB4N2YsIDB4MTAsIDB4ZmEsIDB4NWUsIDB4MTgsIDB4NzYsIDB4MmMsIDB4 NjMsIDB4NWUsIDB4OTYsCisrICAgIDB4Y2YsIDB4YjMsIDB4ZDYsIDB4ZmMsIDB4YWYsIDB4OTks IDB4MzksIDB4MjgsIDB4OWMsIDB4NjEsIDB4ZTgsIDB4YjMKKyt9OworKworK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2RmX25vbmNlW10gPSB7 CisrICAgIDB4MTIsIDB4OTYsIDB4ZjAsIDB4NTIsIDB4ZjMsIDB4OGQsIDB4ODEsIDB4Y2YsIDB4 ZGUsIDB4ODYsIDB4ZjIsIDB4OTksCisrICAgIDB4NDMsIDB4OTYsIDB4YjksIDB4ZjAKKyt9Owor KworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNf MjU2X25vX2RmX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAweDYzLCAweDBkLCAw eDc4LCAweGY1LCAweDkwLCAweDhlLCAweDMyLCAweDQ3LCAweGIwLCAweDRkLCAweDM3LCAweDYw LAorKyAgICAweDA5LCAweDk2LCAweGJjLCAweGJmLCAweDk3LCAweDdhLCAweDYyLCAweDE0LCAw eDQ1LCAweGJkLCAweDhkLCAweGNjLAorKyAgICAweDY5LCAweGZiLCAweDAzLCAweGUxLCAweDgw LCAweDFjLCAweGM3LCAweGUyLCAweDJhLCAweGY5LCAweDM3LCAweDNmLAorKyAgICAweDY2LCAw eDRkLCAweDYyLCAweGQ5LCAweDEwLCAweGUwLCAweGFkLCAweGM4LCAweDlhLCAweGYwLCAweGE4 LCAweDZkCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgYWVzXzI1Nl9ub19kZl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHgzNiwgMHhjNiwg MHgxMywgMHg2MCwgMHhiYiwgMHgxNCwgMHhhZCwgMHgyMiwgMHhiMCwgMHgzOCwgMHhhYywgMHhh NiwKKysgICAgMHgxOCwgMHgxNiwgMHg5MywgMHgyNSwgMHg4NiwgMHhiNywgMHhkYywgMHhkYywg MHgzNiwgMHg5OCwgMHgyYiwgMHhmOSwKKysgICAgMHg2OCwgMHgzMywgMHhkMywgMHhjNiwgMHhm ZiwgMHhjZSwgMHg4ZCwgMHgxNSwgMHg1OSwgMHg4MiwgMHg3NiwgMHhlZCwKKysgICAgMHg2Ziwg MHg4ZCwgMHg0OSwgMHg3NCwgMHgyZiwgMHhkYSwgMHhkYywgMHgxZiwgMHgxNywgMHhkMCwgMHhk ZSwgMHgxNworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGFlc18yNTZfbm9fZGZfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweDE2LCAweDJm LCAweDhlLCAweDNmLCAweDIxLCAweDdhLCAweDFjLCAweDIwLCAweDU2LCAweGQxLCAweDkyLCAw eGY2LAorKyAgICAweGQyLCAweDI1LCAweDc1LCAweDBlCisrfTsKKysKKytfX2ZpcHNfY29uc3Rz ZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9lbnRyb3B5 aW5wdXRyZXNlZWRbXSA9IHsKKysgICAgMHg5MSwgMHg3OSwgMHg3NiwgMHhlZSwgMHhlMCwgMHhj ZiwgMHg5ZSwgMHhjMiwgMHhkNSwgMHhkNCwgMHgyMywgMHg5YiwKKysgICAgMHgxMiwgMHg4Yywg MHg3ZSwgMHgwYSwgMHhiNywgMHhkMiwgMHg4YiwgMHhkNiwgMHg3YywgMHhhMywgMHhjNiwgMHhl NSwKKysgICAgMHgwZSwgMHhhYSwgMHhjNywgMHg2YiwgMHhhZSwgMHgwZCwgMHhmYSwgMHg1Mywg MHgwNiwgMHg3OSwgMHhhMSwgMHhlZCwKKysgICAgMHg0ZCwgMHg2YSwgMHgwZSwgMHhkOCwgMHg5 ZCwgMHhiZSwgMHgxYiwgMHgzMSwgMHg5MywgMHg3YiwgMHhlYywgMHhmYgorK307CisrCisrX19m aXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9f ZGZfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4ZDIsIDB4NDYsIDB4NTAsIDB4 MjIsIDB4MTAsIDB4MTQsIDB4NjMsIDB4ZjcsIDB4ZWEsIDB4MGYsIDB4YjksIDB4N2UsCisrICAg IDB4MGQsIDB4ZTEsIDB4OTQsIDB4MDcsIDB4YWYsIDB4MDksIDB4NDQsIDB4MzEsIDB4ZWEsIDB4 NjQsIDB4YTQsIDB4MTgsCisrICAgIDB4NWIsIDB4ZjksIDB4ZDgsIDB4YzIsIDB4ZmEsIDB4MDMs IDB4NDcsIDB4YzUsIDB4MzksIDB4NDMsIDB4ZDUsIDB4M2IsCisrICAgIDB4NjIsIDB4ODYsIDB4 NjQsIDB4ZWEsIDB4MmMsIDB4NzMsIDB4OGMsIDB4YWUsIDB4OWQsIDB4OTgsIDB4OTgsIDB4MjkK Kyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNf MjU2X25vX2RmX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHg4YywgMHhhYiwgMHgxOCwg MHhmOCwgMHhjMywgMHhlYywgMHgxOCwgMHg1YywgMHhiMywgMHgxZSwgMHg5ZCwgMHhiZSwKKysg ICAgMHgzZiwgMHgwMywgMHhiNCwgMHgwMCwgMHg5OCwgMHg5ZCwgMHhhZSwgMHhlYiwgMHhmNCwg MHg5NCwgMHhmOCwgMHg0MiwKKysgICAgMHg4ZiwgMHhlMywgMHgzOSwgMHgwNywgMHhlMSwgMHhj OSwgMHhhZCwgMHgwYiwgMHgxZiwgMHhlZCwgMHhjMCwgMHhiYSwKKysgICAgMHhmNiwgMHhkMSwg MHhlYywgMHgyNywgMHg4NiwgMHg3YiwgMHhkNiwgMHg1NSwgMHg5YiwgMHg2MCwgMHhhNSwgMHhj NgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFl c18yNTZfbm9fZGZfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4ZWYsIDB4ZDIsIDB4ZDgsIDB4 NWMsIDB4ZGMsIDB4NjIsIDB4MjUsIDB4OWYsIDB4YWEsIDB4MWUsIDB4MmMsIDB4NjcsCisrICAg IDB4ZjYsIDB4MDIsIDB4MzIsIDB4ZTIKKyt9OworKworKy8qIFNIQS0xIFBSICAqLworK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX3ByX2VudHJvcHlpbnB1 dFtdID0geworKyAgICAweGQyLCAweDM2LCAweGE1LCAweDI3LCAweDMxLCAweDczLCAweGRkLCAw eDExLCAweDRmLCAweDkzLCAweGJkLCAweGUyLAorKyAgICAweDMxLCAweGE1LCAweDkxLCAweDEz CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hh MV9wcl9ub25jZVtdID0geworKyAgICAweGI1LCAweGIzLCAweDYwLCAweGVmLCAweGY3LCAweDYz LCAweDMxLCAweGYzCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgc2hhMV9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHhkNCwg MHhiYiwgMHgwMiwgMHgxMCwgMHhiMiwgMHg3MSwgMHhkYiwgMHg4MSwgMHhkNiwgMHhmMCwgMHg0 MiwgMHg2MCwKKysgICAgMHhkYSwgMHhlYSwgMHg3NywgMHg1MgorK307CisrCisrX19maXBzX2Nv bnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfcHJfYWRkaXRpb25hbGlucHV0 W10gPSB7CisrICAgIDB4NGQsIDB4ZDIsIDB4NmMsIDB4ODcsIDB4ZmIsIDB4MmMsIDB4NGYsIDB4 YTYsIDB4OGQsIDB4MTYsIDB4NjMsIDB4MjIsCisrICAgIDB4NmEsIDB4NTEsIDB4ZTMsIDB4ZjgK Kyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEx X3ByX2VudHJvcHlpbnB1dHByW10gPSB7CisrICAgIDB4YzksIDB4ODMsIDB4OWUsIDB4MTYsIDB4 ZjYsIDB4MWMsIDB4MGYsIDB4YjIsIDB4ZWMsIDB4NjAsIDB4MzEsIDB4YTksCisrICAgIDB4Y2Is IDB4YTksIDB4MzYsIDB4N2EKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBzaGExX3ByX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhhOCwg MHgxMywgMHg0ZiwgMHhmNCwgMHgzMSwgMHgwMiwgMHg0NCwgMHhlMywgMHhkMywgMHgzZCwgMHg2 MSwgMHg5ZSwKKysgICAgMHhlNSwgMHhjNiwgMHgzZSwgMHg4OSwgMHhiNSwgMHg5YiwgMHgwZiwg MHgzNQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IHNoYTFfcHJfYWRkaXRpb25hbGlucHV0MltdID0geworKyAgICAweGY5LCAweGU4LCAweGQyLCAw eDcyLCAweDEzLCAweDM0LCAweDk1LCAweDZmLCAweDE1LCAweDQ5LCAweDQ3LCAweDk5LAorKyAg ICAweDE2LCAweDAzLCAweDE5LCAweDQ3CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9wcl9lbnRyb3B5aW5wdXRwcjJbXSA9IHsKKysgICAg MHg0ZSwgMHg4YywgMHg0OSwgMHg5YiwgMHg0YSwgMHg1YywgMHg5YiwgMHg5YywgMHgzYSwgMHhl ZSwgMHhmYiwgMHhkMiwKKysgICAgMHhhZSwgMHhjZCwgMHg4YywgMHhjNAorK307CisrCisrX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfcHJfcmV0dXJuZWRi aXRzW10gPSB7CisrICAgIDB4NTAsIDB4YjQsIDB4YjQsIDB4Y2QsIDB4NjgsIDB4NTcsIDB4ZmMs IDB4MmUsIDB4YzEsIDB4NTIsIDB4Y2MsIDB4ZjYsCisrICAgIDB4NjgsIDB4YTQsIDB4ODEsIDB4 ZWQsIDB4N2UsIDB4ZTQsIDB4MWQsIDB4ODcKKyt9OworKworKy8qIFNIQS0xIE5vIFBSICAqLwor K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX2VudHJvcHlp bnB1dFtdID0geworKyAgICAweGE5LCAweDQ3LCAweDFiLCAweDI5LCAweDJkLCAweDFjLCAweDA1 LCAweGRmLCAweDc2LCAweGQwLCAweDYyLCAweGY5LAorKyAgICAweGUyLCAweDdmLCAweDRjLCAw eDdiCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg c2hhMV9ub25jZVtdID0geworKyAgICAweDUzLCAweDIzLCAweDI0LCAweGUzLCAweGVjLCAweDBj LCAweDU0LCAweDE0CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgc2hhMV9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHg3YSwgMHg4 NywgMHhhMSwgMHhhYywgMHgxYywgMHhmZCwgMHhhYiwgMHhhZSwgMHhmNywgMHhkNiwgMHhmYiwg MHg3NiwKKysgICAgMHgyOCwgMHhlYywgMHg2ZCwgMHhjYQorK307CisrCisrX19maXBzX2NvbnN0 c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfYWRkaXRpb25hbGlucHV0W10gPSB7 CisrICAgIDB4ZmMsIDB4OTIsIDB4MzUsIDB4ZDYsIDB4N2UsIDB4YjcsIDB4MjQsIDB4NjUsIDB4 ZmQsIDB4MTIsIDB4MjcsIDB4MzUsCisrICAgIDB4YzAsIDB4NzIsIDB4Y2EsIDB4MjgKKyt9Owor KworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX2ludF9y ZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg1NywgMHg4OCwgMHg4MiwgMHhlNSwgMHgyNSwgMHhh NSwgMHgyYywgMHg0YSwgMHgwNiwgMHgyMCwgMHg2YywgMHg3MiwKKysgICAgMHg1NSwgMHg2MSwg MHhkZCwgMHg5MCwgMHg3MSwgMHg5ZiwgMHg5NSwgMHhlYQorK307CisrCisrX19maXBzX2NvbnN0 c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfZW50cm9weWlucHV0cmVzZWVkW10g PSB7CisrICAgIDB4NjksIDB4YTUsIDB4NDAsIDB4NjIsIDB4OTgsIDB4NDcsIDB4NTYsIDB4NzMs IDB4NGEsIDB4OGYsIDB4NjAsIDB4OTYsCisrICAgIDB4ZDYsIDB4OTksIDB4MjcsIDB4ZWQKKyt9 OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX2Fk ZGl0aW9uYWxpbnB1dHJlc2VlZFtdID0geworKyAgICAweGU1LCAweDQwLCAweDRlLCAweGJkLCAw eDUwLCAweDAwLCAweGY1LCAweDE1LCAweGE2LCAweGVlLCAweDQ1LCAweGRhLAorKyAgICAweDg0 LCAweDNkLCAweGQ0LCAweGMwCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgc2hhMV9hZGRpdGlvbmFsaW5wdXQyW10gPSB7CisrICAgIDB4MTEsIDB4 NTEsIDB4MTQsIDB4ZjAsIDB4MDksIDB4MWIsIDB4NGUsIDB4NTYsIDB4MGQsIDB4ZTksIDB4ZjYs IDB4MWUsCisrICAgIDB4NTIsIDB4NjUsIDB4Y2QsIDB4OTYKKyt9OworKworK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX3JldHVybmVkYml0c1tdID0gewor KyAgICAweGExLCAweDljLCAweDk0LCAweDZlLCAweDI5LCAweGUxLCAweDMzLCAweDBkLCAweDMy LCAweGQ2LCAweGFhLCAweGNlLAorKyAgICAweDcxLCAweDNmLCAweDUyLCAweDcyLCAweDhiLCAw eDQyLCAweGE4LCAweGQ3CisrfTsKKysKKysvKiBTSEEtMjI0IFBSICAqLworK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyMjRfcHJfZW50cm9weWlucHV0W10g PSB7CisrICAgIDB4MTIsIDB4NjksIDB4MzIsIDB4NGYsIDB4ODMsIDB4YTYsIDB4ZjUsIDB4MTQs IDB4ZTMsIDB4NDksIDB4M2UsIDB4NzUsCisrICAgIDB4M2UsIDB4ZGUsIDB4YWQsIDB4YTEsIDB4 MjksIDB4YzMsIDB4ZjMsIDB4MTksIDB4MjAsIDB4YjUsIDB4NGMsIDB4ZDkKKyt9OworKworK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyMjRfcHJfbm9uY2Vb XSA9IHsKKysgICAgMHg2YSwgMHg3OCwgMHhkMCwgMHhlYiwgMHhiYiwgMHg1YSwgMHhmMCwgMHhl ZSwgMHhlOCwgMHhjMywgMHhiYSwgMHg3MQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9 IHsKKysgICAgMHhkNSwgMHhiOCwgMHhiNiwgMHhiYywgMHhjMSwgMHg1YiwgMHg2MCwgMHgzMSwg MHgzYywgMHhmNSwgMHhlNSwgMHhjMCwKKysgICAgMHg4ZSwgMHg1MiwgMHg3YSwgMHhiZCwgMHhl YSwgMHg0NywgMHhhOSwgMHg1ZiwgMHg4ZiwgMHhmOSwgMHg4YiwgMHhhZQorK307CisrCisrX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9wcl9hZGRpdGlv bmFsaW5wdXRbXSA9IHsKKysgICAgMHgxZiwgMHg1NSwgMHhlYywgMHhhZSwgMHgxNiwgMHgxMiwg MHg4NCwgMHhiYSwgMHg4NCwgMHgxNiwgMHgxOSwgMHg4OCwKKysgICAgMHg4ZSwgMHhiOCwgMHgz MywgMHgyNSwgMHg1NCwgMHhmZiwgMHhjYSwgMHg3OSwgMHhhZiwgMHgwNywgMHgyNSwgMHg1MAor K307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIy NF9wcl9lbnRyb3B5aW5wdXRwcltdID0geworKyAgICAweDkyLCAweGEzLCAweDMyLCAweGE4LCAw eDlhLCAweDBhLCAweDU4LCAweDdjLCAweDFkLCAweDVhLCAweDdlLCAweGUxLAorKyAgICAweGIy LCAweDczLCAweGFiLCAweDBlLCAweDE2LCAweDc5LCAweDIzLCAweGQzLCAweDI5LCAweDg5LCAw eDgxLCAweGUxCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgc2hhMjI0X3ByX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhmMywgMHgzOCwg MHg5MSwgMHg0MCwgMHgzNywgMHg3YSwgMHg1MSwgMHg3MiwgMHg0MiwgMHg3NCwgMHg3OCwgMHgw YSwKKysgICAgMHg2OSwgMHhmZCwgMHhhNiwgMHg0NCwgMHg0MywgMHg0NSwgMHg2YywgMHgwYywg MHg1YSwgMHgxOSwgMHhmZiwgMHhmMSwKKysgICAgMHg1NCwgMHg2MCwgMHhlZSwgMHg2YQorK307 CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9w cl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7CisrICAgIDB4NzUsIDB4ZjMsIDB4MDQsIDB4MjUsIDB4 ZGQsIDB4MzYsIDB4YTgsIDB4MzcsIDB4NDYsIDB4YWUsIDB4MGMsIDB4NTIsCisrICAgIDB4MDUs IDB4NzksIDB4NGMsIDB4MjYsIDB4ZGIsIDB4ZTksIDB4NzEsIDB4MTYsIDB4NGMsIDB4MGEsIDB4 ZjIsIDB4NjAKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBzaGEyMjRfcHJfZW50cm9weWlucHV0cHIyW10gPSB7CisrICAgIDB4ZWEsIDB4YzUsIDB4 MDMsIDB4MGEsIDB4NGYsIDB4YjAsIDB4MzgsIDB4OGQsIDB4MjMsIDB4ZDQsIDB4YzgsIDB4Nzcs CisrICAgIDB4ZTIsIDB4NmQsIDB4OWMsIDB4MGIsIDB4NDQsIDB4ZjcsIDB4MmQsIDB4NWIsIDB4 YmYsIDB4NWQsIDB4MmEsIDB4MTEKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBzaGEyMjRfcHJfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4NjAs IDB4NTAsIDB4MmIsIDB4ZTcsIDB4ODYsIDB4ZDgsIDB4MjYsIDB4NzMsIDB4ZTMsIDB4MWQsIDB4 OTUsIDB4MjAsCisrICAgIDB4YjMsIDB4MmMsIDB4MzIsIDB4MWMsIDB4ZjUsIDB4Y2UsIDB4NTcs IDB4YTYsIDB4NjcsIDB4MmIsIDB4ZGMsIDB4NGUsCisrICAgIDB4ZGQsIDB4MTEsIDB4NGMsIDB4 YzQKKyt9OworKworKy8qIFNIQS0yMjQgTm8gUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHhi MiwgMHgxYywgMHg3NywgMHg0ZCwgMHhmNiwgMHhkMywgMHhiNiwgMHg0MCwgMHhiNywgMHgzMCwg MHgzZSwgMHgyOSwKKysgICAgMHhiMCwgMHg4NSwgMHgxYywgMHhiZSwgMHg0YSwgMHhlYSwgMHg2 YiwgMHg1YSwgMHhiNSwgMHg4YSwgMHg5NywgMHhlYgorK307CisrCisrX19maXBzX2NvbnN0c2Vn IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9ub25jZVtdID0geworKyAgICAweDQy LCAweDAyLCAweDBhLCAweDFjLCAweDk4LCAweDlhLCAweDc3LCAweDllLCAweDlmLCAweDgwLCAw eGJhLCAweGUwCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgc2hhMjI0X3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAweDk4LCAweGI4 LCAweDA0LCAweDQxLCAweGZjLCAweGMxLCAweDVkLCAweGM1LCAweGU5LCAweGI5LCAweDA4LCAw eGRhLAorKyAgICAweGY5LCAweGZhLCAweDBkLCAweDkwLCAweGNlLCAweGRmLCAweDFkLCAweDEw LCAweGE5LCAweDhkLCAweDUwLCAweDBjCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAw eDlhLCAweDhkLCAweDM5LCAweDQ5LCAweDQyLCAweGQ1LCAweDBiLCAweGFlLCAweGUxLCAweGFm LCAweGI3LCAweDAwLAorKyAgICAweDAyLCAweGZhLCAweDk2LCAweGIxLCAweGE1LCAweDFkLCAw eDJkLCAweDI1LCAweDc4LCAweGVlLCAweDgzLCAweDNmCisrfTsKKysKKytfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X2ludF9yZXR1cm5lZGJpdHNbXSA9 IHsKKysgICAgMHhlNCwgMHhmNSwgMHg1MywgMHg3OSwgMHg1YSwgMHg5NywgMHg1OCwgMHgwNiwg MHgwOCwgMHhiYSwgMHg3YiwgMHhmYSwKKysgICAgMHhmMCwgMHg4MywgMHgwNSwgMHg4YywgMHgy MiwgMHhjMCwgMHhjOSwgMHhkYiwgMHgxNSwgMHhlNywgMHhkZSwgMHgyMCwKKysgICAgMHg1NSwg MHgyMiwgMHg5YSwgMHhhZAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIHNoYTIyNF9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsKKysgICAgMHg2Nywg MHgwOSwgMHg0OCwgMHhhYSwgMHgwNywgMHgxNiwgMHg5OSwgMHg4OSwgMHg3ZiwgMHg2ZCwgMHhh MCwgMHhlNSwKKysgICAgMHg4ZiwgMHhkZiwgMHhiYywgMHhkYiwgMHhmZSwgMHhlNSwgMHg2Yywg MHg3YSwgMHg5NSwgMHg0YSwgMHg2NiwgMHgxNworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9 IHsKKysgICAgMHgwZiwgMHg0YiwgMHgxYywgMHg2ZiwgMHhiNywgMHhlMywgMHg0NywgMHhlNSwg MHg1ZCwgMHg3ZCwgMHgzOCwgMHhkNiwKKysgICAgMHgyOCwgMHg5YiwgMHhlYiwgMHg1NSwgMHg2 MywgMHgwOSwgMHgzZSwgMHg3YywgMHg1NiwgMHhlYSwgMHhmOCwgMHgxOQorK307CisrCisrX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9hZGRpdGlvbmFs aW5wdXQyW10gPSB7CisrICAgIDB4MmQsIDB4MjYsIDB4N2MsIDB4MzcsIDB4ZTQsIDB4N2EsIDB4 MjgsIDB4NWUsIDB4NWEsIDB4M2MsIDB4YWYsIDB4M2QsCisrICAgIDB4NWEsIDB4OGUsIDB4NTUs IDB4YTIsIDB4MWEsIDB4NmUsIDB4YzAsIDB4ZTUsIDB4ZjYsIDB4MjEsIDB4ZDMsIDB4ZjYKKyt9 OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyMjRf cmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4NGQsIDB4ODMsIDB4MzUsIDB4ZGYsIDB4NjcsIDB4 YTksIDB4ZmMsIDB4MTcsIDB4ZGEsIDB4NzAsIDB4Y2MsIDB4OGIsCisrICAgIDB4N2YsIDB4Nzcs IDB4YWUsIDB4YTIsIDB4NWYsIDB4YjksIDB4N2UsIDB4NzQsIDB4NGMsIDB4MjYsIDB4YzEsIDB4 N2EsCisrICAgIDB4M2IsIDB4YTcsIDB4NWMsIDB4OTMKKyt9OworKworKy8qIFNIQS0yNTYgUFIg ICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9w cl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHhjZSwgMHg0OSwgMHgwMCwgMHg3YSwgMHg1Niwg MHhlMywgMHg2NywgMHg4ZiwgMHhlMSwgMHhiNiwgMHhhNywgMHhkNCwKKysgICAgMHg0ZiwgMHgw OCwgMHg3YSwgMHgxYiwgMHgwMSwgMHhmNCwgMHhmYSwgMHg2YiwgMHhlZiwgMHhiNywgMHhlNSwg MHhlYiwKKysgICAgMHgwNywgMHgzZCwgMHgxMSwgMHgwZCwgMHhjOCwgMHhlYSwgMHgyYiwgMHhm ZQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNo YTI1Nl9wcl9ub25jZVtdID0geworKyAgICAweDczLCAweDQxLCAweGM4LCAweDkyLCAweDk0LCAw eGUyLCAweGM1LCAweDVmLCAweDkzLCAweGZkLCAweDM5LCAweDVkLAorKyAgICAweDJiLCAweDkx LCAweDRkLCAweDM4CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgc2hhMjU2X3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAweDUw LCAweDZkLCAweDAxLCAweDAxLCAweDA3LCAweDVhLCAweDgwLCAweDM1LCAweDdhLCAweDU2LCAw eDFhLCAweDU2LAorKyAgICAweDJmLCAweDlhLCAweDBiLCAweDM1LCAweGIyLCAweGIxLCAweGM5 LCAweGU1LCAweGNhLCAweDY5LCAweDYxLCAweDQ4LAorKyAgICAweGZmLCAweGZiLCAweDBmLCAw eGQ5LCAweDRiLCAweDc5LCAweDFkLCAweGJhCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X3ByX2FkZGl0aW9uYWxpbnB1dFtdID0gewor KyAgICAweDIwLCAweGI4LCAweGRmLCAweDQ0LCAweDc3LCAweDVhLCAweGI4LCAweGQzLCAweGJm LCAweGY2LCAweGNmLCAweGFjLAorKyAgICAweDVlLCAweGE2LCAweDk2LCAweDYyLCAweDczLCAw eDQ0LCAweDQwLCAweDRhLCAweDMwLCAweGZiLCAweDM4LCAweGE1LAorKyAgICAweDdiLCAweDBk LCAweGU0LCAweDBkLCAweGM2LCAweGU0LCAweDlhLCAweDFmCisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X3ByX2VudHJvcHlpbnB1dHBy W10gPSB7CisrICAgIDB4MDQsIDB4YzQsIDB4NjUsIDB4ZjQsIDB4ZDMsIDB4YmYsIDB4ODMsIDB4 NGIsIDB4YWIsIDB4YzgsIDB4NDEsIDB4YTgsCisrICAgIDB4YzIsIDB4ZTAsIDB4NDQsIDB4NjMs IDB4NzcsIDB4NGMsIDB4NmYsIDB4NmMsIDB4NDksIDB4NDYsIDB4ZmYsIDB4OTQsCisrICAgIDB4 MTcsIDB4ZWEsIDB4ZTYsIDB4MWEsIDB4OWQsIDB4NWUsIDB4NjYsIDB4NzgKKyt9OworKworK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfcHJfaW50X3Jl dHVybmVkYml0c1tdID0geworKyAgICAweDA3LCAweDRkLCAweGFjLCAweDliLCAweDg2LCAweGNh LCAweDRhLCAweGFhLCAweDZlLCAweDdhLCAweDAzLCAweGEyLAorKyAgICAweDVkLCAweDEwLCAw eGVhLCAweDBiLCAweGY5LCAweDgzLCAweGNjLCAweGQxLCAweGZjLCAweGUyLCAweDA3LCAweGM3 LAorKyAgICAweDA2LCAweDM0LCAweDYwLCAweDZmLCAweDgzLCAweDk0LCAweDk5LCAweDc2Cisr fTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2 X3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHg4OSwgMHg0ZSwgMHg0NSwgMHg4Yywg MHgxMSwgMHhmOSwgMHhiYywgMHg1YiwgMHhhYywgMHg3NCwgMHg4YiwgMHg0YiwKKysgICAgMHg1 ZiwgMHhmNywgMHgxOSwgMHhmMywgMHhmNSwgMHgyNCwgMHg1NCwgMHgxNCwgMHhkMSwgMHgxNSwg MHhiMSwgMHg0MywKKysgICAgMHgxMiwgMHhhNCwgMHg1ZiwgMHhkNCwgMHhlYywgMHhmYywgMHhj ZCwgMHgwOQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIHNoYTI1Nl9wcl9lbnRyb3B5aW5wdXRwcjJbXSA9IHsKKysgICAgMHgwZSwgMHhlYiwgMHgx ZiwgMHhkNywgMHhmYywgMHhkMSwgMHg5ZCwgMHhkNCwgMHgwNSwgMHgzNiwgMHg4YiwgMHhiMiwK KysgICAgMHhmYiwgMHhlNCwgMHhmNCwgMHg1MSwgMHgwYywgMHg4NywgMHg5YiwgMHgwMiwgMHg0 NCwgMHhkNSwgMHg5MiwgMHg0ZCwKKysgICAgMHg0NCwgMHhmZSwgMHgxYSwgMHgwMywgMHg0Mywg MHg1NiwgMHhiZCwgMHg4NgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIHNoYTI1Nl9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHgwMiwgMHhh YSwgMHhiNiwgMHgxZCwgMHg3ZSwgMHgyYSwgMHg0MCwgMHgwMywgMHg2OSwgMHgyZCwgMHg0OSwg MHhhMywKKysgICAgMHg0MSwgMHhlNywgMHg0NCwgMHgwYiwgMHhhZiwgMHg3YiwgMHg4NSwgMHhl NCwgMHg1ZiwgMHg1MywgMHgzYiwgMHg2NCwKKysgICAgMHhiYywgMHg4OSwgMHhjOCwgMHg4Miwg MHhkNCwgMHg3OCwgMHgzNywgMHhhMgorK307CisrCisrLyogU0hBLTI1NiBObyBQUiAgKi8KKytf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X2VudHJvcHlp bnB1dFtdID0geworKyAgICAweDViLCAweDFiLCAweGVjLCAweDRkLCAweGE5LCAweDM4LCAweDc0 LCAweDVhLCAweDM0LCAweDBiLCAweDdiLCAweGM1LAorKyAgICAweGU1LCAweGQ3LCAweDY2LCAw eDdjLCAweGJjLCAweDgyLCAweGI5LCAweDBlLCAweDJkLCAweDFmLCAweDkyLCAweGQ3LAorKyAg ICAweGMxLCAweGJjLCAweDY3LCAweDY5LCAweGVjLCAweDZiLCAweDAzLCAweDNjCisrfTsKKysK KytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X25vbmNl W10gPSB7CisrICAgIDB4YTQsIDB4MGMsIDB4ZDgsIDB4OWMsIDB4NjEsIDB4ZDgsIDB4YzMsIDB4 NTQsIDB4ZmUsIDB4NTMsIDB4YzksIDB4ZTUsCisrICAgIDB4NWQsIDB4NmYsIDB4NmQsIDB4MzUK Kyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEy NTZfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7CisrICAgIDB4MjIsIDB4NWUsIDB4NjIsIDB4 OTMsIDB4NDIsIDB4ODMsIDB4NzgsIDB4MjQsIDB4ZDgsIDB4NDAsIDB4OGMsIDB4ZGUsCisrICAg IDB4NmYsIDB4ZjksIDB4YTQsIDB4N2EsIDB4YzUsIDB4YTcsIDB4M2IsIDB4ODgsIDB4YTMsIDB4 ZWUsIDB4NDIsIDB4MjAsCisrICAgIDB4ZmQsIDB4NjEsIDB4NTYsIDB4YzYsIDB4NGMsIDB4MTMs IDB4NDEsIDB4OWMKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBzaGEyNTZfYWRkaXRpb25hbGlucHV0W10gPSB7CisrICAgIDB4YmYsIDB4NzQsIDB4 NWIsIDB4ZjYsIDB4YzUsIDB4NjQsIDB4NWUsIDB4OTksIDB4MzQsIDB4OGYsIDB4YmMsIDB4YTQs CisrICAgIDB4ZTIsIDB4YmQsIDB4ZDgsIDB4ODUsIDB4MjYsIDB4MzcsIDB4ZWEsIDB4YmEsIDB4 NGYsIDB4ZjIsIDB4OWEsIDB4OWEsCisrICAgIDB4NjYsIDB4ZmMsIDB4ZGYsIDB4NjMsIDB4MjYs IDB4MjYsIDB4MTksIDB4ODcKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBzaGEyNTZfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweGIzLCAw eGM2LCAweDA3LCAweDA3LCAweGQ2LCAweDc1LCAweGY2LCAweDJiLCAweGQ2LCAweDIxLCAweDk2 LCAweGYxLAorKyAgICAweGFlLCAweGRiLCAweDJiLCAweGFjLCAweDI1LCAweDJhLCAweGFlLCAw eGFlLCAweDQxLCAweDcyLCAweDAzLCAweDVlLAorKyAgICAweGJmLCAweGQzLCAweDY0LCAweGJj LCAweDU5LCAweGY5LCAweGMwLCAweDc2CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X2VudHJvcHlpbnB1dHJlc2VlZFtdID0geworKyAg ICAweGJmLCAweDIwLCAweDMzLCAweDU2LCAweDI5LCAweGE4LCAweDM3LCAweDA0LCAweDFmLCAw eDc4LCAweDM0LCAweDNkLAorKyAgICAweDgxLCAweDJhLCAweGM5LCAweDg2LCAweGM2LCAweDdh LCAweDJmLCAweDg4LCAweDVlLCAweGQ1LCAweGJlLCAweDM0LAorKyAgICAweDQ2LCAweDIwLCAw eGE0LCAweDM1LCAweGViLCAweGM3LCAweGUyLCAweDlkCisrfTsKKysKKytfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X2FkZGl0aW9uYWxpbnB1dHJlc2Vl ZFtdID0geworKyAgICAweDliLCAweGFlLCAweDJkLCAweDJkLCAweDYxLCAweGE0LCAweDg5LCAw eGViLCAweDQzLCAweDQ2LCAweGE3LCAweGRhLAorKyAgICAweGVmLCAweDQwLCAweGNhLCAweDRh LCAweDk5LCAweDExLCAweDQxLCAweGRjLCAweDVjLCAweDk0LCAweGU5LCAweGFjLAorKyAgICAw eGQ0LCAweGQwLCAweGU2LCAweGJkLCAweGZiLCAweDAzLCAweDljLCAweGE4CisrfTsKKysKKytf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X2FkZGl0aW9u YWxpbnB1dDJbXSA9IHsKKysgICAgMHgyMywgMHhhYSwgMHgwYywgMHhiZCwgMHgyOCwgMHgzMywg MHhlMiwgMHg1MSwgMHhmYywgMHg3MSwgMHhkMiwgMHgxNSwKKysgICAgMHgxZiwgMHg3NiwgMHhm ZCwgMHgwZCwgMHhlMCwgMHhiNywgMHhiNSwgMHg4NCwgMHg3NSwgMHg1YiwgMHhiZSwgMHhmMywK KysgICAgMHg1YywgMHhjYSwgMHhjNSwgMHgzMCwgMHhmMiwgMHg3NSwgMHgxZiwgMHhkYQorK307 CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9y ZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg5MCwgMHgzYywgMHhjMSwgMHgxMCwgMHg4YywgMHgx MiwgMHgwMSwgMHhjNiwgMHhhNiwgMHgzYSwgMHgwZiwgMHg0ZCwKKysgICAgMHhiNiwgMHgzYSwg MHg0ZiwgMHg0MSwgMHg5YywgMHg2MSwgMHg3NSwgMHg4NCwgMHhlOSwgMHg3NCwgMHg3NSwgMHhm ZCwKKysgICAgMHhmZSwgMHhmMiwgMHgxZiwgMHg0MywgMHhkOCwgMHg1ZSwgMHgyNCwgMHhhMwor K307CisrCisrLyogU0hBLTM4NCBQUiAgKi8KKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgc2hhMzg0X3ByX2VudHJvcHlpbnB1dFtdID0geworKyAgICAweDcxLCAw eDlkLCAweGIyLCAweDVhLCAweDcxLCAweDZkLCAweDA0LCAweGU5LCAweDFlLCAweGM3LCAweDky LCAweDI0LAorKyAgICAweDZlLCAweDEyLCAweDMzLCAweGE5LCAweDUyLCAweDY0LCAweDMxLCAw eGVmLCAweDcxLCAweGViLCAweDIyLCAweDU1LAorKyAgICAweDI4LCAweDk3LCAweDA2LCAweDZh LCAweGMwLCAweDBjLCAweGEwLCAweDdlCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X3ByX25vbmNlW10gPSB7CisrICAgIDB4ZjUsIDB4 MGQsIDB4ZmEsIDB4YjAsIDB4ZWMsIDB4NmEsIDB4N2MsIDB4ZDYsIDB4YmQsIDB4OWIsIDB4MDUs IDB4ZmQsCisrICAgIDB4MzgsIDB4M2UsIDB4MmUsIDB4NTYKKyt9OworKworK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcHJfcGVyc29uYWxpemF0aW9u c3RyaW5nW10gPSB7CisrICAgIDB4NzQsIDB4YWMsIDB4N2UsIDB4NmQsIDB4YjEsIDB4YTQsIDB4 ZTcsIDB4MjEsIDB4ZDEsIDB4MWUsIDB4NmUsIDB4OTYsCisrICAgIDB4NmQsIDB4NGQsIDB4NTMs IDB4NDYsIDB4ODIsIDB4OTYsIDB4NmUsIDB4Y2YsIDB4YWEsIDB4ODEsIDB4OGQsIDB4N2QsCisr ICAgIDB4OWUsIDB4ZTEsIDB4MGYsIDB4MTUsIDB4ZWEsIDB4NDEsIDB4YmYsIDB4ZTMKKyt9Owor KworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcHJf YWRkaXRpb25hbGlucHV0W10gPSB7CisrICAgIDB4ZGEsIDB4OTUsIDB4ZDQsIDB4ZDAsIDB4Yjgs IDB4MTEsIDB4ZDMsIDB4NDksIDB4MjcsIDB4NWQsIDB4YTksIDB4MzksCisrICAgIDB4NjgsIDB4 ZjMsIDB4YTgsIDB4ZTksIDB4NWQsIDB4MTksIDB4OGEsIDB4MmIsIDB4NjYsIDB4ZTgsIDB4Njks IDB4MDYsCisrICAgIDB4N2MsIDB4OWUsIDB4MDMsIDB4YTEsIDB4OGIsIDB4MjYsIDB4MmQsIDB4 NmUKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBz aGEzODRfcHJfZW50cm9weWlucHV0cHJbXSA9IHsKKysgICAgMHg0OSwgMHhkZiwgMHg0NCwgMHgw MCwgMHhlNCwgMHgxYywgMHg3NSwgMHgwYiwgMHgyNiwgMHg1YSwgMHg1OSwgMHg2NCwKKysgICAg MHgxZiwgMHg0ZSwgMHhiMSwgMHhiMiwgMHgxMywgMHhmMSwgMHgyMiwgMHg0ZSwgMHhiNCwgMHg2 ZCwgMHg5YSwgMHhjYywKKysgICAgMHhhMCwgMHg0OCwgMHhlNiwgMHhjZiwgMHgxZCwgMHhkMSwg MHg5MiwgMHgwZAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIHNoYTM4NF9wcl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4YzgsIDB4NTIs IDB4YWUsIDB4YmYsIDB4MDQsIDB4M2MsIDB4MjcsIDB4YjcsIDB4NzgsIDB4MTgsIDB4YWEsIDB4 OGYsCisrICAgIDB4ZmYsIDB4Y2YsIDB4YTQsIDB4ZjEsIDB4Y2MsIDB4ZTcsIDB4NjgsIDB4ZmEs IDB4MjIsIDB4YTIsIDB4MTMsIDB4NDUsCisrICAgIDB4ZTgsIDB4ZGQsIDB4ODcsIDB4ZTYsIDB4 ZjIsIDB4NmUsIDB4ZGQsIDB4YzcsIDB4NTIsIDB4OTAsIDB4OWYsIDB4N2IsCisrICAgIDB4ZmEs IDB4NjEsIDB4MmQsIDB4OWQsIDB4OWUsIDB4Y2YsIDB4OTgsIDB4YWMsIDB4NTIsIDB4NDAsIDB4 Y2UsIDB4YWYKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBzaGEzODRfcHJfYWRkaXRpb25hbGlucHV0MltdID0geworKyAgICAweDYxLCAweDdjLCAw eDAzLCAweDlhLCAweDNlLCAweDUwLCAweDU3LCAweDYwLCAweGM1LCAweDgzLCAweGM5LCAweGIy LAorKyAgICAweGQxLCAweDg3LCAweDg1LCAweDY2LCAweDkyLCAweDVkLCAweDg0LCAweDBlLCAw eDUzLCAweGZiLCAweDcwLCAweDAzLAorKyAgICAweDcyLCAweGZkLCAweGJhLCAweGFlLCAweDlj LCAweDhmLCAweGY4LCAweDE4CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgc2hhMzg0X3ByX2VudHJvcHlpbnB1dHByMltdID0geworKyAgICAweGY4 LCAweGViLCAweDg5LCAweGIxLCAweDhkLCAweDc4LCAweGJlLCAweDIxLCAweGUwLCAweGJiLCAw eDlkLCAweGI3LAorKyAgICAweDk1LCAweDBlLCAweGQ5LCAweDQ2LCAweDBjLCAweDhjLCAweGUy LCAweDYzLCAweGI3LCAweDlkLCAweDY3LCAweDkwLAorKyAgICAweGJkLCAweGM3LCAweDBiLCAw eGE1LCAweGNlLCAweGIyLCAweDY1LCAweDgxCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X3ByX3JldHVybmVkYml0c1tdID0geworKyAg ICAweGU2LCAweDlmLCAweGZlLCAweDY4LCAweGQ2LCAweGI1LCAweDc5LCAweGYxLCAweDA2LCAw eDVmLCAweGEzLCAweGJiLAorKyAgICAweDIzLCAweDg1LCAweGQ4LCAweGYwLCAweDI5LCAweDVh LCAweDY4LCAweDllLCAweGY1LCAweGY0LCAweGE2LCAweDEyLAorKyAgICAweGUwLCAweDlhLCAw eGUyLCAweGFjLCAweDAwLCAweDFkLCAweDk4LCAweDI2LCAweGZjLCAweDUzLCAweDk1LCAweDUz LAorKyAgICAweGU0LCAweDNlLCAweDE3LCAweGQ1LCAweDA4LCAweDBiLCAweDcwLCAweDNkLCAw eDY3LCAweDk5LCAweGFjLCAweDY2CisrfTsKKysKKysvKiBTSEEtMzg0IE5vIFBSICAqLworK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfZW50cm9weWlu cHV0W10gPSB7CisrICAgIDB4MDcsIDB4MTUsIDB4MjcsIDB4MmEsIDB4YWYsIDB4NzQsIDB4MjQs IDB4MzcsIDB4YmMsIDB4ZDUsIDB4MTQsIDB4NjksCisrICAgIDB4Y2UsIDB4MTEsIDB4ZmYsIDB4 YTIsIDB4NmIsIDB4YjgsIDB4MDUsIDB4NjcsIDB4MzQsIDB4ZjgsIDB4YmQsIDB4NmQsCisrICAg IDB4NmEsIDB4Y2MsIDB4Y2QsIDB4NjAsIDB4YTMsIDB4NjgsIDB4Y2EsIDB4ZjQKKyt9OworKwor K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfbm9uY2Vb XSA9IHsKKysgICAgMHg3MCwgMHgxNywgMHhjMiwgMHg1YiwgMHg1ZCwgMHgyMiwgMHgwYiwgMHgw NiwgMHgxNSwgMHg1NCwgMHg3OCwgMHg3NywKKysgICAgMHg0NCwgMHhhZiwgMHgyZiwgMHgwOQor K307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4 NF9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHg4OSwgMHgzOSwgMHgyOCwgMHhi MCwgMHg2MCwgMHhlYiwgMHgzZCwgMHhkYywgMHg1NSwgMHg3NSwgMHg4NiwgMHhlYiwKKysgICAg MHhhZSwgMHhhMiwgMHg4ZiwgMHhiYywgMHgxYiwgMHg3NSwgMHhkNCwgMHhlMSwgMHgwZiwgMHhh YSwgMHgzOCwgMHhjYSwKKysgICAgMHg2MiwgMHg4YiwgMHhjYiwgMHgyYywgMHgyNiwgMHhmNiwg MHhiYywgMHhiMQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIHNoYTM4NF9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHgzMCwgMHgyYiwgMHg0 MiwgMHgzNSwgMHhlZiwgMHhkYSwgMHg0MCwgMHg1NSwgMHgyOCwgMHhjNiwgMHg5NSwgMHhmYiwK KysgICAgMHg1NCwgMHgwMSwgMHg2MiwgMHhkNywgMHg4NywgMHgxNCwgMHg0OCwgMHg2ZCwgMHg5 MCwgMHg0YywgMHhhOSwgMHgwMiwKKysgICAgMHg1NCwgMHg0MCwgMHgyMiwgMHhjOCwgMHg2Niwg MHhhNSwgMHg0OCwgMHg0OAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIHNoYTM4NF9pbnRfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4ODIsIDB4 YzQsIDB4YTEsIDB4OWMsIDB4MjEsIDB4ZDIsIDB4ZTcsIDB4YTUsIDB4YTYsIDB4ZjYsIDB4NWYs IDB4MDQsCisrICAgIDB4NWMsIDB4YzcsIDB4MzEsIDB4OWQsIDB4OGQsIDB4NTksIDB4NzQsIDB4 NTAsIDB4MTksIDB4ODksIDB4MmYsIDB4NjMsCisrICAgIDB4ZDUsIDB4YjcsIDB4N2UsIDB4ZWIs IDB4MTUsIDB4ZTMsIDB4NzAsIDB4ODMsIDB4YTEsIDB4MjQsIDB4NTksIDB4ZmEsCisrICAgIDB4 MmMsIDB4NTYsIDB4ZjYsIDB4ODgsIDB4M2EsIDB4OTIsIDB4OTMsIDB4YTEsIDB4ZmIsIDB4Nzks IDB4YzEsIDB4N2EKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBzaGEzODRfZW50cm9weWlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4MzksIDB4YTYs IDB4ZTgsIDB4NWMsIDB4ODIsIDB4MTcsIDB4NzEsIDB4MjYsIDB4NTcsIDB4NGYsIDB4OWYsIDB4 YzIsCisrICAgIDB4NTUsIDB4ZmYsIDB4NWMsIDB4OWIsIDB4NTMsIDB4MWEsIDB4ZDEsIDB4NWYs IDB4YmMsIDB4NjIsIDB4ZTQsIDB4MjcsCisrICAgIDB4MmQsIDB4MzIsIDB4ZjAsIDB4ZTQsIDB4 NTIsIDB4OGMsIDB4YzUsIDB4MGMKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBzaGEzODRfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPSB7CisrICAg IDB4OGQsIDB4Y2IsIDB4OGQsIDB4Y2UsIDB4MDgsIDB4ZWEsIDB4ODAsIDB4ZTgsIDB4OWIsIDB4 NjEsIDB4YTgsIDB4MGYsCisrICAgIDB4YWYsIDB4NDksIDB4MjAsIDB4OWUsIDB4NzQsIDB4Y2Is IDB4NTcsIDB4ODAsIDB4NDIsIDB4YjAsIDB4ODQsIDB4NWUsCisrICAgIDB4MzAsIDB4MmEsIDB4 NjcsIDB4MDgsIDB4ZjQsIDB4ZTMsIDB4NDAsIDB4MjIKKyt9OworKworK19fZmlwc19jb25zdHNl ZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfYWRkaXRpb25hbGlucHV0MltdID0g eworKyAgICAweDdjLCAweDhmLCAweGMyLCAweGFlLCAweDIyLCAweDRhLCAweGQ2LCAweGY2LCAw eDA1LCAweGE0LCAweDdhLCAweGVhLAorKyAgICAweGJiLCAweDI1LCAweGQwLCAweGI3LCAweDVh LCAweGQ2LCAweGNmLCAweDlkLCAweGYzLCAweDZjLCAweGUyLCAweGIyLAorKyAgICAweDRlLCAw eGI0LCAweGJkLCAweGY0LCAweGU1LCAweDQwLCAweDgwLCAweDk0CisrfTsKKysKKytfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X3JldHVybmVkYml0c1td ID0geworKyAgICAweDllLCAweDdlLCAweGZiLCAweDU5LCAweGJiLCAweGFhLCAweDNjLCAweGY3 LCAweGUxLCAweGY4LCAweDc2LCAweGRkLAorKyAgICAweDYzLCAweDVmLCAweGFmLCAweDIzLCAw eGQ2LCAweDY0LCAweDYxLCAweGMwLCAweDlhLCAweDA5LCAweDQ3LCAweGM5LAorKyAgICAweDMz LCAweGRmLCAweDZkLCAweDU1LCAweDkxLCAweDM0LCAweDc5LCAweDcwLCAweGM0LCAweDk5LCAw eDZlLCAweDU0LAorKyAgICAweDA5LCAweDY0LCAweDIxLCAweDFhLCAweGJkLCAweDFlLCAweDgw LCAweDQwLCAweDM0LCAweGFkLCAweGZhLCAweGQ3CisrfTsKKysKKysvKiBTSEEtNTEyIFBSICAq LworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJfcHJf ZW50cm9weWlucHV0W10gPSB7CisrICAgIDB4MTMsIDB4ZjcsIDB4NjEsIDB4NzUsIDB4NjUsIDB4 MjgsIDB4YTIsIDB4NTksIDB4MTMsIDB4NWEsIDB4NGEsIDB4NGYsCisrICAgIDB4NTYsIDB4NjAs IDB4OGMsIDB4NTMsIDB4N2QsIDB4YjAsIDB4YmQsIDB4MDYsIDB4NGYsIDB4ZWQsIDB4Y2MsIDB4 ZDIsCisrICAgIDB4YTIsIDB4YjUsIDB4ZmQsIDB4NWIsIDB4M2EsIDB4YWIsIDB4ZWMsIDB4MjgK Kyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1 MTJfcHJfbm9uY2VbXSA9IHsKKysgICAgMHhiZSwgMHhhMywgMHg5MSwgMHg5MywgMHgxZCwgMHhj MywgMHgzMSwgMHgzYSwgMHgyMywgMHgzMywgMHg1MCwgMHg2NywKKysgICAgMHg4OCwgMHhjNywg MHhhMiwgMHhjNAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIHNoYTUxMl9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHgxZiwg MHg1OSwgMHg0ZCwgMHg3YiwgMHhlNiwgMHg0NiwgMHg5MSwgMHg0OCwgMHhjMSwgMHgyNSwgMHhm YSwgMHhmZiwKKysgICAgMHg4OSwgMHgxMiwgMHg3NywgMHgzNSwgMHhkZiwgMHgzZSwgMHhmNCwg MHg4MCwgMHg1ZiwgMHhkOSwgMHhiMCwgMHgwNywKKysgICAgMHgyMiwgMHg0MSwgMHhkZCwgMHg0 OCwgMHg3OCwgMHg2YiwgMHg3NywgMHgyYgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysg ICAgMHgzMCwgMHhmZiwgMHg2MywgMHg2ZiwgMHhhYywgMHhkOSwgMHg4NCwgMHgzOSwgMHg2Ziwg MHhlNCwgMHg5OSwgMHhjZSwKKysgICAgMHg5MSwgMHg3ZCwgMHg3ZSwgMHhjOCwgMHg1OCwgMHhm MiwgMHgxMiwgMHhjMywgMHhiNiwgMHhhZCwgMHhkYSwgMHgyMiwKKysgICAgMHgwNCwgMHhhMCwg MHhkMiwgMHgyMSwgMHhmZSwgMHhmMiwgMHg5NSwgMHgxZAorK307CisrCisrX19maXBzX2NvbnN0 c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9wcl9lbnRyb3B5aW5wdXRwcltd ID0geworKyAgICAweDY0LCAweDU0LCAweDEzLCAweGVjLCAweDRmLCAweDc3LCAweGRhLCAweGIy LCAweDkyLCAweDJlLCAweDUyLCAweDgwLAorKyAgICAweDExLCAweDEwLCAweGMyLCAweGY4LCAw eGU2LCAweGE3LCAweGNkLCAweDRiLCAweGZjLCAweDMyLCAweDJlLCAweDllLAorKyAgICAweGVi LCAweGJiLCAweGIxLCAweGJmLCAweDE1LCAweDVjLCAweDczLCAweDA4CisrfTsKKysKKytfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX3ByX2ludF9yZXR1 cm5lZGJpdHNbXSA9IHsKKysgICAgMHhlZiwgMHgxZSwgMHhkYywgMHgwYSwgMHhhNCwgMHgzNiwg MHg5MSwgMHg5YywgMHgzZCwgMHgyNywgMHg5NywgMHg1MCwKKysgICAgMHg4ZCwgMHgzNiwgMHgy OSwgMHg4ZCwgMHhjZSwgMHg2YSwgMHgwYywgMHhmNywgMHgyMSwgMHhjMCwgMHg5MSwgMHhhZSwK KysgICAgMHgwYywgMHg5NiwgMHg3MiwgMHhiZCwgMHg1MiwgMHg4MSwgMHg1OCwgMHhmYywgMHg2 ZCwgMHhlNSwgMHhmNywgMHhhNSwKKysgICAgMHhmZCwgMHg1ZCwgMHhhNywgMHg1OCwgMHg2OCwg MHhjOCwgMHg5OSwgMHg1OCwgMHg4ZSwgMHhjOCwgMHhjZSwgMHg5NSwKKysgICAgMHgwMSwgMHg3 ZCwgMHhmZiwgMHhhNCwgMHhjOCwgMHhmNywgMHg2MywgMHhmZSwgMHg1ZiwgMHg2OSwgMHg4Mywg MHg1MywKKysgICAgMHhlMiwgMHhjNiwgMHg4YiwgMHhjMworK307CisrCisrX19maXBzX2NvbnN0 c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9wcl9hZGRpdGlvbmFsaW5wdXQy W10gPSB7CisrICAgIDB4ZTYsIDB4OWIsIDB4YzQsIDB4ODgsIDB4MzQsIDB4Y2EsIDB4ZWEsIDB4 MjksIDB4MmYsIDB4OTgsIDB4MDUsIDB4YTQsCisrICAgIDB4ZDMsIDB4YzAsIDB4N2IsIDB4MTEs IDB4ZTgsIDB4YmIsIDB4NzUsIDB4ZjIsIDB4YmQsIDB4MjksIDB4YjcsIDB4NDAsCisrICAgIDB4 MjUsIDB4N2YsIDB4YzEsIDB4YjcsIDB4YjEsIDB4ZjEsIDB4MjUsIDB4NjEKKyt9OworKworK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJfcHJfZW50cm9w eWlucHV0cHIyW10gPSB7CisrICAgIDB4MjMsIDB4NmQsIDB4ZmYsIDB4ZGUsIDB4ZmIsIDB4ZDEs IDB4YmEsIDB4MzMsIDB4MTgsIDB4ZTYsIDB4YmUsIDB4YjUsCisrICAgIDB4NDgsIDB4NzcsIDB4 NmQsIDB4N2YsIDB4YTcsIDB4ZTEsIDB4NGQsIDB4NDgsIDB4MWUsIDB4M2MsIDB4YTcsIDB4MzQs CisrICAgIDB4MWEsIDB4YzgsIDB4NjAsIDB4ZGIsIDB4OGYsIDB4OTksIDB4MTUsIDB4OTkKKyt9 OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJf cHJfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4NzAsIDB4MjcsIDB4MzEsIDB4ZGIsIDB4OTIs IDB4NzAsIDB4MjEsIDB4ZmUsIDB4MTYsIDB4YjYsIDB4YzgsIDB4NTEsCisrICAgIDB4MzQsIDB4 ODcsIDB4NjUsIDB4ZDAsIDB4NGUsIDB4ZmQsIDB4ZmUsIDB4NjgsIDB4ZWMsIDB4YWMsIDB4ZGMs IDB4OTMsCisrICAgIDB4NDEsIDB4MzgsIDB4OTIsIDB4OTAsIDB4YjQsIDB4OTQsIDB4ZjksIDB4 MGQsIDB4YTQsIDB4ZjcsIDB4NGUsIDB4ODAsCisrICAgIDB4OTIsIDB4NjcsIDB4NDgsIDB4NDAs IDB4YTcsIDB4MDgsIDB4YzcsIDB4YmMsIDB4NjYsIDB4MDAsIDB4ZmQsIDB4ZjcsCisrICAgIDB4 NGMsIDB4OGIsIDB4MTcsIDB4NmUsIDB4ZDEsIDB4OGYsIDB4OWIsIDB4ZjMsIDB4NmYsIDB4ZjYs IDB4MzQsIDB4ZGQsCisrICAgIDB4NjcsIDB4ZjcsIDB4NjgsIDB4ZGQKKyt9OworKworKy8qIFNI QS01MTIgTm8gUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIHNoYTUxMl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHhiNiwgMHgwYiwgMHhiNywgMHhi YywgMHg4NCwgMHg1NiwgMHhmNiwgMHgxMiwgMHhhZiwgMHg0NSwgMHg2NywgMHgxNywKKysgICAg MHg3YywgMHhkMSwgMHhiMiwgMHg3OCwgMHgyYiwgMHhhMCwgMHhmMiwgMHhiZSwgMHhiNiwgMHg2 ZCwgMHg4YiwgMHg1NiwKKysgICAgMHhjNiwgMHhiYywgMHg0ZCwgMHhlMSwgMHhmNywgMHhiZSwg MHhjZSwgMHhiZAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIHNoYTUxMl9ub25jZVtdID0geworKyAgICAweDlkLCAweGVkLCAweGMwLCAweGU1LCAw eDVhLCAweDk4LCAweDZhLCAweGNiLCAweDUxLCAweDdkLCAweDc2LCAweDMxLAorKyAgICAweDVh LCAweDY0LCAweGYwLCAweGY3CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgc2hhNTEyX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAw eGMyLCAweDZkLCAweGEzLCAweGMzLCAweDA2LCAweDc0LCAweGU1LCAweDAxLCAweDVjLCAweDEw LCAweDE3LCAweGM3LAorKyAgICAweGFmLCAweDgzLCAweDlkLCAweDU5LCAweDhkLCAweDJkLCAw eDI5LCAweDM4LCAweGM1LCAweDU5LCAweDcwLCAweDhiLAorKyAgICAweDQ2LCAweDQ4LCAweDJk LCAweGNmLCAweDM2LCAweDdkLCAweDU5LCAweGMwCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX2FkZGl0aW9uYWxpbnB1dFtdID0gewor KyAgICAweGVjLCAweDhjLCAweGQ0LCAweGY3LCAweDYxLCAweDZlLCAweDBkLCAweDk1LCAweDc5 LCAweGI3LCAweDI4LCAweGFkLAorKyAgICAweDVmLCAweDY5LCAweDc0LCAweDVmLCAweDJkLCAw eDM2LCAweDA2LCAweDhhLCAweDZiLCAweGFjLCAweDU0LCAweDk3LAorKyAgICAweGM0LCAweGEx LCAweDEyLCAweDg1LCAweDBhLCAweGRmLCAweDRiLCAweDM0CisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX2ludF9yZXR1cm5lZGJpdHNb XSA9IHsKKysgICAgMHg4NCwgMHgyZiwgMHgxZiwgMHg2OCwgMHg2YSwgMHhhMywgMHhhZCwgMHgx ZSwgMHhmYiwgMHhmNCwgMHgxNSwgMHhiZCwKKysgICAgMHhkZSwgMHgzOCwgMHhkNCwgMHgzMCwg MHg4MCwgMHg1MSwgMHhlOSwgMHhkMywgMHhjNywgMHgyMCwgMHg4OCwgMHhlOSwKKysgICAgMHhm NSwgMHhjYywgMHhkZiwgMHg1NywgMHg1YywgMHg0NywgMHgyZiwgMHg1NywgMHgzYywgMHg1Ziwg MHgxMywgMHg1NiwKKysgICAgMHhjYywgMHhjNSwgMHg0ZiwgMHg4NCwgMHhmOCwgMHgxMCwgMHg0 MSwgMHhkNSwgMHg3ZSwgMHg1OCwgMHg2ZSwgMHgxOSwKKysgICAgMHgxOSwgMHg5ZSwgMHhhZiwg MHhjMiwgMHgyMiwgMHg1OCwgMHg0MSwgMHg1MCwgMHg3OSwgMHhjMiwgMHhkOCwgMHgwNCwKKysg ICAgMHgyOCwgMHhkNCwgMHgzOSwgMHg5YQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsKKysg ICAgMHhmYSwgMHg3ZiwgMHg0NiwgMHg1MSwgMHg4MywgMHg2MiwgMHg5OCwgMHgxNiwgMHg5YSwg MHgxOSwgMHhhMiwgMHg0OSwKKysgICAgMHhhOSwgMHhlNiwgMHg0YSwgMHhkOCwgMHg4NSwgMHhl NywgMHhkNCwgMHgzYiwgMHgyYywgMHg4MiwgMHhjNSwgMHg4MiwKKysgICAgMHhiZiwgMHgxMSwg MHhmOSwgMHg5ZSwgMHhiYywgMHhkMCwgMHgwMSwgMHhlZQorK307CisrCisrX19maXBzX2NvbnN0 c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9hZGRpdGlvbmFsaW5wdXRyZXNl ZWRbXSA9IHsKKysgICAgMHhiOSwgMHgxMiwgMHhlMCwgMHg0ZiwgMHhmNywgMHhhNywgMHhjNCwg MHhkOCwgMHhkMCwgMHg4ZSwgMHg5OSwgMHgyOSwKKysgICAgMHg3YywgMHg5YSwgMHhlOSwgMHhj ZiwgMHhjNCwgMHg2YywgMHhmOCwgMHhjMywgMHhhNywgMHg0MSwgMHg4MywgMHhkNiwKKysgICAg MHgyZSwgMHhmYSwgMHhiOCwgMHg1ZSwgMHg4ZSwgMHg2YiwgMHg3OCwgMHgyMAorK307CisrCisr X19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9hZGRpdGlv bmFsaW5wdXQyW10gPSB7CisrICAgIDB4ZDcsIDB4MDcsIDB4NTIsIDB4YjksIDB4ODMsIDB4MmMs IDB4MDMsIDB4NzEsIDB4ZWUsIDB4YzksIDB4YzAsIDB4ODUsCisrICAgIDB4ZTEsIDB4NTcsIDB4 YjIsIDB4Y2QsIDB4M2EsIDB4ZjAsIDB4YzksIDB4MzQsIDB4MjQsIDB4NDEsIDB4MWMsIDB4NDIs CisrICAgIDB4OTksIDB4YjIsIDB4ODQsIDB4ZTksIDB4MTcsIDB4ZDIsIDB4NzYsIDB4OTIKKyt9 OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJf cmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4MzYsIDB4MTcsIDB4NWQsIDB4OTgsIDB4MmIsIDB4 NjUsIDB4MjUsIDB4OGUsIDB4YzgsIDB4MjksIDB4ZGYsIDB4MjcsCisrICAgIDB4MDUsIDB4MzYs IDB4MjYsIDB4MTIsIDB4OGEsIDB4NjgsIDB4NzQsIDB4MjcsIDB4MzcsIDB4ZDQsIDB4N2YsIDB4 MzIsCisrICAgIDB4YjEsIDB4MTIsIDB4ZDYsIDB4ODUsIDB4ODMsIDB4ZWIsIDB4MmUsIDB4YTAs IDB4ZWQsIDB4NGIsIDB4YjUsIDB4N2IsCisrICAgIDB4NmYsIDB4MzksIDB4M2MsIDB4NzEsIDB4 NzcsIDB4MDIsIDB4MTIsIDB4Y2MsIDB4MmMsIDB4M2EsIDB4OGUsIDB4NjMsCisrICAgIDB4ZGYs IDB4NGEsIDB4YmQsIDB4NmYsIDB4NmUsIDB4MmUsIDB4ZWQsIDB4MGEsIDB4ODUsIDB4YTUsIDB4 MmYsIDB4YTIsCisrICAgIDB4NjgsIDB4ZGUsIDB4NDIsIDB4YjUKKyt9OworKworKy8qIEhNQUMg U0hBLTEgUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGhtYWNfc2hhMV9wcl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHgyNiwgMHg1ZiwgMHgzNiwg MHgxNCwgMHhmZiwgMHgzZCwgMHg4MywgMHhmYSwgMHg3MywgMHg1ZSwgMHg3NSwgMHhkYywKKysg ICAgMHgyYywgMHgxOCwgMHgxNywgMHgxYgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9wcl9ub25jZVtdID0geworKyAgICAweGM4 LCAweGUzLCAweDU3LCAweGE1LCAweDdiLCAweDc0LCAweDg2LCAweDZlCisrfTsKKysKKytfX2Zp cHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX3By X3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAweDZlLCAweGRiLCAweDBkLCAweGZl LCAweDdkLCAweGFjLCAweDc5LCAweGQwLCAweGE1LCAweDNhLCAweDQ4LCAweDg1LAorKyAgICAw eDgwLCAweGUyLCAweDdmLCAweDJhCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX3ByX2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAg ICAweDMxLCAweGNkLCAweDVlLCAweDQzLCAweGRjLCAweGZiLCAweDdhLCAweDc5LCAweGNhLCAw eDg4LCAweGRlLCAweDFmLAorKyAgICAweGQ3LCAweGJiLCAweDQyLCAweDA5CisrfTsKKysKKytf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX3ByX2Vu dHJvcHlpbnB1dHByW10gPSB7CisrICAgIDB4N2MsIDB4MjMsIDB4OTUsIDB4MzgsIDB4MDAsIDB4 OTUsIDB4YzEsIDB4NzgsIDB4MWYsIDB4OGYsIDB4ZDcsIDB4NjMsCisrICAgIDB4MjMsIDB4ODcs IDB4MmEsIDB4ZWQKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBobWFjX3NoYTFfcHJfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweGJiLCAw eDM0LCAweGU3LCAweDkzLCAweGEzLCAweDAyLCAweDJjLCAweDRhLCAweGQwLCAweDg5LCAweGRh LCAweDdmLAorKyAgICAweGVkLCAweGY0LCAweDRjLCAweGRlLCAweDE3LCAweGVjLCAweGU1LCAw eDZjCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg aG1hY19zaGExX3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHg0OSwgMHhiYywgMHgy ZCwgMHgyYywgMHhiNywgMHgzMiwgMHhjYiwgMHgyMCwgMHhkZiwgMHhmNSwgMHg3NywgMHg1OCwK KysgICAgMHhhMCwgMHg0YiwgMHg5MywgMHg2ZQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9wcl9lbnRyb3B5aW5wdXRwcjJbXSA9 IHsKKysgICAgMHgzYywgMHhhYSwgMHhiMCwgMHgyMSwgMHg0MiwgMHhiMCwgMHhkZCwgMHgzNCwg MHhmMCwgMHgxNiwgMHg3ZiwgMHgwYywKKysgICAgMHgwZiwgMHhmZiwgMHgyZSwgMHhhZgorK307 CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hh MV9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg4ZSwgMHhjYiwgMHhhMywgMHg2NCwgMHhi MiwgMHhiOCwgMHgzMywgMHg2YywgMHg2NCwgMHgzYiwgMHg3OCwgMHgxNiwKKysgICAgMHg5OSwg MHgzNSwgMHhjOCwgMHgzMCwgMHhjYiwgMHgzZSwgMHhhMCwgMHhkOAorK307CisrCisrLyogSE1B QyBTSEEtMSBObyBQUiAgKi8KKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgaG1hY19zaGExX2VudHJvcHlpbnB1dFtdID0geworKyAgICAweDMyLCAweDlhLCAweDJh LCAweDg3LCAweDdiLCAweDg5LCAweDdjLCAweGY2LCAweGNiLCAweDk1LCAweGQ1LCAweDQwLAor KyAgICAweDE3LCAweGZlLCAweDQ3LCAweDcwCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX25vbmNlW10gPSB7CisrICAgIDB4MTYs IDB4ZDgsIDB4ZTAsIDB4YzcsIDB4NTIsIDB4Y2YsIDB4NGEsIDB4MjUKKyt9OworKworK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfcGVyc29uYWxp emF0aW9uc3RyaW5nW10gPSB7CisrICAgIDB4MzUsIDB4MzUsIDB4YTksIDB4YTUsIDB4NDAsIDB4 YmUsIDB4OWIsIDB4ZDEsIDB4NTYsIDB4ZGQsIDB4NDQsIDB4MDAsCisrICAgIDB4NzIsIDB4Zjcs IDB4ZDMsIDB4NWUKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBobWFjX3NoYTFfYWRkaXRpb25hbGlucHV0W10gPSB7CisrICAgIDB4MWIsIDB4MmMs IDB4ODQsIDB4MmQsIDB4NGEsIDB4ODksIDB4OGYsIDB4NjksIDB4MTksIDB4ZjEsIDB4ZjMsIDB4 ZGIsCisrICAgIDB4YmIsIDB4ZTMsIDB4YWEsIDB4ZWEKKyt9OworKworK19fZmlwc19jb25zdHNl ZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfaW50X3JldHVybmVkYml0c1td ID0geworKyAgICAweGNmLCAweGZhLCAweDdkLCAweDcyLCAweDBmLCAweGU2LCAweGM3LCAweDk2 LCAweGEwLCAweDY5LCAweDMxLCAweDExLAorKyAgICAweDliLCAweDBiLCAweDFhLCAweDIwLCAw eDFmLCAweDNmLCAweGFhLCAweGQxCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX2VudHJvcHlpbnB1dHJlc2VlZFtdID0geworKyAg ICAweDkwLCAweDc1LCAweDE1LCAweDA0LCAweDk1LCAweGYxLCAweGJhLCAweDgxLCAweDBjLCAw eDM3LCAweDk0LCAweDZmLAorKyAgICAweDg2LCAweDUyLCAweDZkLCAweDljCisrfTsKKysKKytf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX2FkZGl0 aW9uYWxpbnB1dHJlc2VlZFtdID0geworKyAgICAweDViLCAweDQwLCAweGJhLCAweDVmLCAweDE3 LCAweDcwLCAweGYwLCAweDRiLCAweGRmLCAweGM5LCAweDk3LCAweDkyLAorKyAgICAweDc5LCAw eGM1LCAweDgyLCAweDI4CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgaG1hY19zaGExX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHg5Nywg MHhjOCwgMHg4MCwgMHg5MCwgMHhiMywgMHhhYSwgMHg2ZSwgMHg2MCwgMHhlYSwgMHg4MywgMHg3 YSwgMHhlMywKKysgICAgMHg4YSwgMHhjYSwgMHhhNCwgMHg3ZgorK307CisrCisrX19maXBzX2Nv bnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9yZXR1cm5lZGJpdHNb XSA9IHsKKysgICAgMHg5MCwgMHhiZCwgMHgwNSwgMHg1NiwgMHg2ZCwgMHhiNSwgMHgyMiwgMHhk NSwgMHhiOSwgMHg1YSwgMHgyOSwgMHgyZCwKKysgICAgMHhlOSwgMHgwYiwgMHhlMSwgMHhhYywg MHhkZSwgMHgyNywgMHgwYiwgMHhiMAorK307CisrCisrLyogSE1BQyBTSEEtMjI0IFBSICAqLwor K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9w cl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHgxNywgMHgzMiwgMHgyYiwgMHgyZSwgMHg2Ziwg MHgxYiwgMHg5YywgMHg2ZCwgMHgzMSwgMHhlMCwgMHgzNCwgMHgwNywKKysgICAgMHhjZiwgMHhl ZCwgMHhmNiwgMHhiNiwgMHg1YSwgMHg3NiwgMHg0YywgMHhiYywgMHg2MiwgMHg4NSwgMHgwMSwg MHg5MAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGhtYWNfc2hhMjI0X3ByX25vbmNlW10gPSB7CisrICAgIDB4MzgsIDB4YmYsIDB4NWYsIDB4MjAs IDB4YjMsIDB4NjgsIDB4MmYsIDB4NDMsIDB4NjEsIDB4MDUsIDB4OGYsIDB4MjMKKyt9OworKwor K19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3No YTIyNF9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHhjMCwgMHhjOSwgMHg0 NSwgMHhhYywgMHg4ZCwgMHgyNywgMHg3NywgMHgwOCwgMHgwYiwgMHgxNywgMHg2ZCwgMHhlZCwK KysgICAgMHhjMSwgMHg3ZCwgMHhkNSwgMHgwNywgMHg5ZCwgMHg2ZSwgMHhmOCwgMHgyMywgMHgy YSwgMHgyMiwgMHgxMywgMHhiZAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjI0X3ByX2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAg ICAweGE0LCAweDNjLCAweGU3LCAweDNiLCAweGVhLCAweDE5LCAweDQ1LCAweDMyLCAweGMyLCAw eDgzLCAweDZkLCAweDIxLAorKyAgICAweDhhLCAweGMwLCAweGVlLCAweDY3LCAweDQ1LCAweGRl LCAweDEzLCAweDdkLCAweDlkLCAweDYxLCAweDAwLCAweDNiCisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfcHJfZW50cm9weWlu cHV0cHJbXSA9IHsKKysgICAgMHgxNSwgMHgwNSwgMHg3NCwgMHg0YSwgMHg3ZiwgMHg4ZCwgMHg1 YywgMHg2MCwgMHgxNiwgMHhlNSwgMHg3YiwgMHhhZCwKKysgICAgMHhmNSwgMHg0MSwgMHg4Ziwg MHg1NSwgMHg2MCwgMHhjNCwgMHgwOSwgMHhlZSwgMHgxZSwgMHgxMSwgMHg4MSwgMHhhYgorK307 CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hh MjI0X3ByX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg2ZiwgMHhmNSwgMHg5YSwgMHhl MiwgMHg1NCwgMHg1MywgMHgzMCwgMHgzZCwgMHg1YSwgMHgyNywgMHgyOSwgMHgzOCwKKysgICAg MHgyNywgMHhmMiwgMHgwZCwgMHgwNSwgMHhlOSwgMHgyNiwgMHhjYiwgMHgxNiwgMHhjMywgMHg1 MSwgMHg1ZiwgMHgxMywKKysgICAgMHg0MSwgMHhmZSwgMHg5OSwgMHhmMgorK307CisrCisrX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjI0X3ByX2Fk ZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHg3MywgMHg4MSwgMHg4OCwgMHg4NCwgMHg4Ziwg MHhlZCwgMHg2ZiwgMHgxMCwgMHg5ZiwgMHg5MywgMHhiZiwgMHgxNywKKysgICAgMHgzNSwgMHg3 YywgMHhlZiwgMHhkNSwgMHg4ZCwgMHgyNiwgMHhhNiwgMHg3YSwgMHhlOCwgMHgwOSwgMHgzNiwg MHg0ZgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGhtYWNfc2hhMjI0X3ByX2VudHJvcHlpbnB1dHByMltdID0geworKyAgICAweGU2LCAweGNmLCAw eGNmLCAweDdlLCAweDEyLCAweGU1LCAweDQzLCAweGQyLCAweDM4LCAweGQ4LCAweDI0LCAweDZm LAorKyAgICAweDVhLCAweDM3LCAweDY4LCAweGJmLCAweDRmLCAweGEwLCAweGZmLCAweGQ1LCAw eDYxLCAweDhhLCAweDkzLCAweGUwCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfcHJfcmV0dXJuZWRiaXRzW10gPSB7CisrICAg IDB4YWYsIDB4ZjksIDB4ZDgsIDB4MTksIDB4OTEsIDB4MzAsIDB4ODIsIDB4NmYsIDB4YTksIDB4 MWUsIDB4OWQsIDB4ZDcsCisrICAgIDB4ZjMsIDB4NTAsIDB4ZTAsIDB4YzcsIDB4ZDUsIDB4NjQs IDB4OTYsIDB4N2QsIDB4NGMsIDB4NGQsIDB4NzgsIDB4MDMsCisrICAgIDB4NmQsIDB4ZDgsIDB4 OWUsIDB4NzIKKyt9OworKworKy8qIEhNQUMgU0hBLTIyNCBObyBQUiAgKi8KKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfZW50cm9weWlucHV0 W10gPSB7CisrICAgIDB4MTEsIDB4ODIsIDB4ZmQsIDB4ZDksIDB4NDIsIDB4ZjQsIDB4ZmEsIDB4 YzgsIDB4ZjIsIDB4NDEsIDB4ZTYsIDB4NTQsCisrICAgIDB4MDEsIDB4YWUsIDB4MjIsIDB4NmUs IDB4YzYsIDB4YWYsIDB4YWYsIDB4ZDAsIDB4YTYsIDB4YjIsIDB4ZTIsIDB4NmQKKyt9OworKwor K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9u b25jZVtdID0geworKyAgICAweGE5LCAweDQ4LCAweGQ3LCAweDkyLCAweDM5LCAweDdlLCAweDJh LCAweGRjLCAweDMwLCAweDFmLCAweDBlLCAweDJiCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcK KysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfcGVyc29uYWxpemF0 aW9uc3RyaW5nW10gPSB7CisrICAgIDB4MTEsIDB4ZDUsIDB4ZjQsIDB4YmQsIDB4NjcsIDB4OGMs IDB4MzEsIDB4Y2YsIDB4YTMsIDB4M2YsIDB4MWUsIDB4NmIsCisrICAgIDB4YTgsIDB4MDcsIDB4 MDIsIDB4MGIsIDB4YzgsIDB4MmUsIDB4NmMsIDB4NjQsIDB4NDEsIDB4NWIsIDB4YzgsIDB4MzcK Kyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFj X3NoYTIyNF9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHg2OCwgMHgxOCwgMHhjMiwgMHgw NiwgMHhlYiwgMHgzZSwgMHgwNCwgMHg5NSwgMHg0NCwgMHg1ZSwgMHhmYiwgMHhlNiwKKysgICAg MHg0MSwgMHhjMSwgMHg1YywgMHhjYywgMHg0MCwgMHgyZiwgMHhiNywgMHhkMiwgMHgwZiwgMHhm MywgMHg2YiwgMHhlNworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGhtYWNfc2hhMjI0X2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg3Ziwg MHg0NSwgMHhjNywgMHg1ZCwgMHgzMiwgMHhlNiwgMHgxNywgMHg2MCwgMHhiYSwgMHhkYywgMHhi OCwgMHg0MiwKKysgICAgMHgxYiwgMHg5YywgMHhmMSwgMHhmYSwgMHgzYiwgMHg0ZCwgMHgyOSwg MHg1NCwgMHhjNiwgMHg5MCwgMHhmZiwgMHg1YywKKysgICAgMHhjZCwgMHhkNiwgMHhhOSwgMHhj YworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGht YWNfc2hhMjI0X2VudHJvcHlpbnB1dHJlc2VlZFtdID0geworKyAgICAweGM0LCAweDhlLCAweDM3 LCAweDk1LCAweDY5LCAweDUzLCAweDI4LCAweGQ3LCAweDM3LCAweGJiLCAweDcwLCAweDk1LAor KyAgICAweDFjLCAweDA3LCAweDFkLCAweGQ5LCAweGI3LCAweGU2LCAweDFiLCAweGJiLCAweGZl LCAweDQxLCAweGViLCAweGM5CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfYWRkaXRpb25hbGlucHV0cmVzZWVkW10g PSB7CisrICAgIDB4NTMsIDB4MTcsIDB4YTEsIDB4NmEsIDB4ZmEsIDB4NzcsIDB4NDcsIDB4YjAs IDB4OTUsIDB4NTYsIDB4OWEsIDB4MjAsCisrICAgIDB4NTcsIDB4ZGUsIDB4NWMsIDB4ODksIDB4 OWYsIDB4N2YsIDB4ZTIsIDB4ZGUsIDB4MTcsIDB4M2EsIDB4NTAsIDB4MjMKKyt9OworKworK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9hZGRp dGlvbmFsaW5wdXQyW10gPSB7CisrICAgIDB4M2EsIDB4MzIsIDB4ZjksIDB4ODUsIDB4MGMsIDB4 YzEsIDB4ZWQsIDB4NzYsIDB4MmQsIDB4ZGYsIDB4NDAsIDB4YzMsCisrICAgIDB4MDYsIDB4MjIs IDB4NjYsIDB4ZDQsIDB4OWEsIDB4OWEsIDB4ZmYsIDB4NWEsIDB4N2UsIDB4N2EsIDB4ZjMsIDB4 OTYKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBo bWFjX3NoYTIyNF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg0MywgMHhiNCwgMHg1NywgMHg1 YywgMHgzOCwgMHgyNSwgMHg5ZCwgMHhhZSwgMHhlYywgMHg5NiwgMHhkMSwgMHg4NSwKKysgICAg MHgzYSwgMHg4NCwgMHg4ZCwgMHhmZSwgMHg2OCwgMHhkNSwgMHgwZSwgMHg1YywgMHg4ZiwgMHg2 NSwgMHhhNSwgMHg0ZSwKKysgICAgMHg0NSwgMHg4NCwgMHhhOCwgMHg5NAorK307CisrCisrLyog SE1BQyBTSEEtMjU2IFBSICAqLworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBobWFjX3NoYTI1Nl9wcl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHg0ZCwgMHhi MCwgMHg0MywgMHhkOCwgMHgzNCwgMHg0YiwgMHgxMCwgMHg3MCwgMHhiMSwgMHg4YiwgMHhlZCwg MHhlYSwKKysgICAgMHgwNywgMHg5MiwgMHg5ZiwgMHg2YywgMHg3OSwgMHgzMSwgMHhhZiwgMHg4 MSwgMHgyOSwgMHhlYiwgMHg2ZSwgMHhjYSwKKysgICAgMHgzMiwgMHg0OCwgMHgyOCwgMHhlNywg MHgwMiwgMHg1ZCwgMHhhNiwgMHhhNgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X3ByX25vbmNlW10gPSB7CisrICAgIDB4M2Es IDB4YWUsIDB4MTUsIDB4YTksIDB4OTksIDB4ZGMsIDB4ZTQsIDB4NjcsIDB4MzQsIDB4M2IsIDB4 NzAsIDB4MTUsCisrICAgIDB4YWEsIDB4ZDMsIDB4MzAsIDB4OWEKKyt9OworKworK19fZmlwc19j b25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1Nl9wcl9w ZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHgxMywgMHgxZCwgMHgyNCwgMHgwNCwg MHhiMCwgMHgxOCwgMHg4MSwgMHgxNSwgMHgyMSwgMHg1MSwgMHgyYSwgMHgyNCwKKysgICAgMHg1 MiwgMHg2MSwgMHhiZSwgMHg2NCwgMHg4MiwgMHg2YiwgMHg1NSwgMHgyZiwgMHhlMiwgMHhmMSwg MHg0MCwgMHg3ZCwKKysgICAgMHg3MSwgMHhkOCwgMHgwMSwgMHg4NiwgMHgxNSwgMHhiNywgMHg4 YiwgMHhiNQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGhtYWNfc2hhMjU2X3ByX2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAweDhmLCAweGE2 LCAweDU0LCAweDVmLCAweGIxLCAweGQwLCAweGQ4LCAweGMzLCAweGU3LCAweDBjLCAweDE1LCAw eGE5LAorKyAgICAweDIzLCAweDZlLCAweGZlLCAweGZiLCAweDkzLCAweGY3LCAweDNhLCAweGJk LCAweDU5LCAweDAxLCAweGZhLCAweDE4LAorKyAgICAweDhlLCAweGU5LCAweDFhLCAweGE5LCAw eDc4LCAweGZjLCAweDc5LCAweDBiCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfcHJfZW50cm9weWlucHV0cHJbXSA9IHsKKysg ICAgMHhjZiwgMHgyNCwgMHhiOSwgMHhlYiwgMHhiMywgMHhkNCwgMHhjZCwgMHgxNywgMHgzNywg MHgzOCwgMHg3NSwgMHg3OSwKKysgICAgMHgxNSwgMHhjYiwgMHgyZCwgMHg3NSwgMHg1MSwgMHhm MSwgMHhjYywgMHhhYSwgMHgzMiwgMHhhNCwgMHhhNywgMHgzNiwKKysgICAgMHg3YywgMHg1Yywg MHhlNCwgMHg0NywgMHhmMSwgMHgzZSwgMHgxZCwgMHhlNQorK307CisrCisrX19maXBzX2NvbnN0 c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X3ByX2ludF9yZXR1cm5l ZGJpdHNbXSA9IHsKKysgICAgMHg1MiwgMHg0MiwgMHhmYSwgMHhlYiwgMHg4NSwgMHhlMCwgMHgz MCwgMHgyMiwgMHg3OSwgMHgwMCwgMHgxNiwgMHhiMiwKKysgICAgMHg4OCwgMHgyZiwgMHgxNCwg MHg2YSwgMHhiNywgMHhmYywgMHhiNywgMHg1MywgMHhkYywgMHg0YSwgMHgxMiwgMHhlZiwKKysg ICAgMHg1NCwgMHhkNiwgMHgzMywgMHhlOSwgMHgyMCwgMHhkNiwgMHhmZCwgMHg1NgorK307Cisr CisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2 X3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHhmNCwgMHhmNiwgMHg0OSwgMHhhMSwg MHgyZCwgMHg2NCwgMHgyYiwgMHgzMCwgMHg1OCwgMHhmOCwgMHhiZCwgMHhiOCwKKysgICAgMHg3 NSwgMHhlYiwgMHhiYiwgMHg1ZSwgMHgxYywgMHg5YiwgMHg4MSwgMHg2YSwgMHhkYSwgMHgxNCwg MHg4NiwgMHg2ZSwKKysgICAgMHhkMCwgMHhkYSwgMHgxOCwgMHhiNywgMHg4OCwgMHhmYiwgMHg1 OSwgMHhmMworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGhtYWNfc2hhMjU2X3ByX2VudHJvcHlpbnB1dHByMltdID0geworKyAgICAweDIxLCAweGNk LCAweDZlLCAweDQ2LCAweGFkLCAweDk5LCAweDA3LCAweDE3LCAweGI0LCAweDNkLCAweDc2LCAw eDBhLAorKyAgICAweGZmLCAweDViLCAweDUyLCAweDUwLCAweDc4LCAweGRmLCAweDFmLCAweDI0 LCAweDA2LCAweDBkLCAweDNmLCAweDc0LAorKyAgICAweGE5LCAweGM5LCAweDM3LCAweGNmLCAw eGQ4LCAweDI2LCAweDI1LCAweDkxCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfcHJfcmV0dXJuZWRiaXRzW10gPSB7CisrICAg IDB4YTcsIDB4YWYsIDB4MmYsIDB4MjksIDB4ZTAsIDB4M2EsIDB4NzIsIDB4OTUsIDB4OTYsIDB4 MWMsIDB4YTksIDB4ZjAsCisrICAgIDB4NGEsIDB4MTcsIDB4NGQsIDB4NjYsIDB4MDYsIDB4MTAs IDB4YmYsIDB4MzksIDB4ODksIDB4ODgsIDB4YjgsIDB4OTEsCisrICAgIDB4MzcsIDB4MTgsIDB4 OTksIDB4Y2YsIDB4OGMsIDB4NTMsIDB4M2IsIDB4N2UKKyt9OworKworKy8qIEhNQUMgU0hBLTI1 NiBObyBQUiAgKi8KKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg aG1hY19zaGEyNTZfZW50cm9weWlucHV0W10gPSB7CisrICAgIDB4OTYsIDB4YjcsIDB4NTMsIDB4 MjIsIDB4MWUsIDB4NTIsIDB4MmEsIDB4OTYsIDB4YjEsIDB4MTUsIDB4M2MsIDB4MzUsCisrICAg IDB4NWEsIDB4OGIsIDB4ZDMsIDB4NGEsIDB4YTYsIDB4NmMsIDB4ODMsIDB4MGEsIDB4N2QsIDB4 YTMsIDB4MjMsIDB4M2QsCisrICAgIDB4NDMsIDB4YTEsIDB4MDcsIDB4MmMsIDB4MmQsIDB4ZTMs IDB4ODEsIDB4Y2MKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBobWFjX3NoYTI1Nl9ub25jZVtdID0geworKyAgICAweGYxLCAweGFjLCAweDk3LCAw eGNiLCAweDVlLCAweDA2LCAweDQ4LCAweGQyLCAweDk0LCAweGJlLCAweDE1LCAweDJlLAorKyAg ICAweGM3LCAweGZjLCAweGMyLCAweDAxCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfcGVyc29uYWxpemF0aW9uc3Ry aW5nW10gPSB7CisrICAgIDB4OTgsIDB4YzUsIDB4MWUsIDB4MzUsIDB4NWUsIDB4ODksIDB4MGQs IDB4Y2UsIDB4NjQsIDB4NmQsIDB4MTgsIDB4YTcsCisrICAgIDB4NWEsIDB4YzYsIDB4ZjMsIDB4 ZTcsIDB4ZDYsIDB4OWUsIDB4YzAsIDB4ZWEsIDB4YjcsIDB4M2EsIDB4OGQsIDB4NjUsCisrICAg IDB4YjgsIDB4ZWIsIDB4MTAsIDB4ZDcsIDB4NTcsIDB4MTgsIDB4YTAsIDB4MzIKKyt9OworKwor K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1Nl9h ZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHgxYiwgMHgxMCwgMHhhZiwgMHhhYywgMHhkMCwg MHg2NSwgMHg5NSwgMHhhZCwgMHgwNCwgMHhhZCwgMHgwMywgMHgxYywKKysgICAgMHhlMCwgMHg0 MCwgMHhkNiwgMHgzZSwgMHgxYywgMHg0NiwgMHg1MywgMHgzOSwgMHg3YywgMHhlMiwgMHhiYywg MHhkYSwKKysgICAgMHg4YywgMHhhMiwgMHgzMywgMHhhNywgMHg5YSwgMHgyNiwgMHhkMywgMHgy NworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGht YWNfc2hhMjU2X2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhiYSwgMHg2MSwgMHgwZSwg MHg1NSwgMHhmZSwgMHgxMSwgMHg4YSwgMHg5ZSwgMHgwZiwgMHg4MCwgMHhkZiwgMHgxZCwKKysg ICAgMHgwMywgMHgwYSwgMHhmZSwgMHgxNSwgMHg5NCwgMHgyOCwgMHg0YiwgMHhiYSwgMHhmNCwg MHg5ZiwgMHg1MSwgMHgyNSwKKysgICAgMHg4OCwgMHhlNSwgMHg0ZSwgMHhmYiwgMHhhZiwgMHhj ZSwgMHg2OSwgMHg5MAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGhtYWNfc2hhMjU2X2VudHJvcHlpbnB1dHJlc2VlZFtdID0geworKyAgICAweDYy LCAweDdmLCAweDFlLCAweDZiLCAweGU4LCAweDhlLCAweGUxLCAweDM1LCAweDdkLCAweDliLCAw eDRmLCAweGM3LAorKyAgICAweGVjLCAweGM4LCAweGFjLCAweGVmLCAweDZiLCAweDEzLCAweDll LCAweDA1LCAweDU2LCAweGMxLCAweDA4LCAweGY5LAorKyAgICAweDJmLCAweDBmLCAweDI3LCAw eDljLCAweGQ0LCAweDE1LCAweGVkLCAweDJkCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysg ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfYWRkaXRpb25hbGlucHV0 cmVzZWVkW10gPSB7CisrICAgIDB4YzcsIDB4NzYsIDB4NmUsIDB4YTksIDB4ZDIsIDB4YjIsIDB4 NzYsIDB4NDAsIDB4ODIsIDB4MjUsIDB4MmMsIDB4YjMsCisrICAgIDB4NmYsIDB4YWMsIDB4ZTks IDB4NzQsIDB4ZWYsIDB4OGYsIDB4M2MsIDB4OGUsIDB4Y2QsIDB4ZjEsIDB4YmYsIDB4YjMsCisr ICAgIDB4NDksIDB4NzcsIDB4MzQsIDB4ODgsIDB4NTIsIDB4MzYsIDB4ZTYsIDB4MmUKKyt9Owor KworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1 Nl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7CisrICAgIDB4OGQsIDB4YjgsIDB4MGMsIDB4ZDEsIDB4 YmYsIDB4NzAsIDB4ZjYsIDB4MTksIDB4YzMsIDB4NDEsIDB4ODAsIDB4OWYsCisrICAgIDB4ZTEs IDB4YTUsIDB4YTQsIDB4MWYsIDB4MmMsIDB4MjYsIDB4YjEsIDB4ZTUsIDB4ZDgsIDB4ZWIsIDB4 YmUsIDB4ZjgsCisrICAgIDB4ZGYsIDB4ODgsIDB4NmEsIDB4ODksIDB4ZDYsIDB4MDUsIDB4ZDgs IDB4OWQKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBobWFjX3NoYTI1Nl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg0MywgMHgxMiwgMHgyYSwg MHgyYywgMHg0MCwgMHg1MywgMHgyZSwgMHg3YywgMHg2NiwgMHgzNCwgMHhhYywgMHhjMywKKysg ICAgMHg0MywgMHhlMywgMHhlMCwgMHg2YSwgMHhmYywgMHhmYSwgMHhlYSwgMHg4NywgMHgyMSwg MHgxZiwgMHhlMiwgMHgyNiwKKysgICAgMHhjNCwgMHhmOSwgMHgwOSwgMHg5YSwgMHgwZCwgMHg2 ZSwgMHg3ZiwgMHhlMAorK307CisrCisrLyogSE1BQyBTSEEtMzg0IFBSICAqLworK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9wcl9lbnRyb3B5 aW5wdXRbXSA9IHsKKysgICAgMHg2OSwgMHg4MSwgMHg5OCwgMHg4OCwgMHg0NCwgMHhmNSwgMHhk NiwgMHgyZSwgMHgwMCwgMHgwOCwgMHgzYiwgMHhjNSwKKysgICAgMHhmYiwgMHhkNywgMHg4ZSwg MHg2ZiwgMHgyMywgMHhmOCwgMHg2ZCwgMHgwOSwgMHhkNiwgMHg4NSwgMHg0OSwgMHhkMSwKKysg ICAgMHhmOCwgMHg2ZCwgMHhhNCwgMHg1OCwgMHg1NCwgMHhmZCwgMHg4OCwgMHhhOQorK307Cisr CisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0 X3ByX25vbmNlW10gPSB7CisrICAgIDB4NmUsIDB4MzgsIDB4ODEsIDB4Y2EsIDB4YjcsIDB4ZTgs IDB4NmUsIDB4NjYsIDB4NDksIDB4OGEsIDB4YjIsIDB4NTksCisrICAgIDB4ZWUsIDB4MTYsIDB4 YzksIDB4ZGUKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBobWFjX3NoYTM4NF9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysg ICAgMHhmZSwgMHg0YywgMHhkOSwgMHhmNCwgMHg3OCwgMHgzYiwgMHgwOCwgMHg0MSwgMHg4ZCwg MHg4ZiwgMHg1NSwgMHhjNCwKKysgICAgMHg0MywgMHg1NiwgMHhiNiwgMHgxMiwgMHgzNiwgMHg2 YiwgMHgzMCwgMHhiNywgMHg1ZSwgMHhlMSwgMHhiOSwgMHg0NywKKysgICAgMHgwNCwgMHhiMSwg MHg0ZSwgMHhhOSwgMHgwMCwgMHhhMSwgMHg1MiwgMHhhMQorK307CisrCisrX19maXBzX2NvbnN0 c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X3ByX2FkZGl0aW9uYWxp bnB1dFtdID0geworKyAgICAweDg5LCAweGU5LCAweGNjLCAweDhmLCAweDI3LCAweDNjLCAweDI2 LCAweGQxLCAweDk1LCAweGM4LCAweDdkLCAweDBmLAorKyAgICAweDViLCAweDFhLCAweGYwLCAw eDc4LCAweDM5LCAweDU2LCAweDZmLCAweGE0LCAweDIzLCAweGU3LCAweGQxLCAweGRhLAorKyAg ICAweDdjLCAweDY2LCAweDMzLCAweGEwLCAweDkwLCAweGM5LCAweDkyLCAweDg4CisrfTsKKysK KytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRf cHJfZW50cm9weWlucHV0cHJbXSA9IHsKKysgICAgMHhiZSwgMHgzZCwgMHg3YywgMHgwZCwgMHhj YSwgMHhkYSwgMHg3YywgMHg0OSwgMHhiOCwgMHgxMiwgMHgzNiwgMHhjMCwKKysgICAgMHhkYiwg MHhhZCwgMHgzNSwgMHhhOCwgMHhjNywgMHgwYiwgMHgyYSwgMHgyYywgMHg2OSwgMHg2ZCwgMHgy NSwgMHg1NiwKKysgICAgMHg2MywgMHg4MiwgMHgxMSwgMHgzZSwgMHhhNywgMHgzMywgMHg3MCwg MHg3MgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGhtYWNfc2hhMzg0X3ByX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg4MiwgMHgzZCwg MHhlNiwgMHg1NCwgMHg4MCwgMHg0MiwgMHhmOCwgMHhiYSwgMHg5MCwgMHg0ZiwgMHgwNiwgMHhh NiwKKysgICAgMHhkMiwgMHg3ZiwgMHhiZiwgMHg3OSwgMHg3YywgMHgxMiwgMHg3ZCwgMHhhNiwg MHhhMiwgMHg2NiwgMHhlOCwgMHhhNiwKKysgICAgMHhjMCwgMHhkNiwgMHg0YSwgMHg1NSwgMHhi ZiwgMHhkOCwgMHgwYSwgMHhjNSwgMHhmOCwgMHgwMywgMHg4OCwgMHhkZCwKKysgICAgMHg4ZSwg MHg4NywgMHhkMSwgMHg1YSwgMHg0OCwgMHgyNiwgMHg3MiwgMHgyYSwgMHg4ZSwgMHhjZiwgMHhl ZSwgMHhiYQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGhtYWNfc2hhMzg0X3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHg4ZiwgMHhm ZiwgMHhkOSwgMHg4NCwgMHhiYiwgMHg4NSwgMHgzYSwgMHg2NiwgMHhhMSwgMHgyMSwgMHhjZSwg MHhiMiwKKysgICAgMHgzYSwgMHgzYSwgMHgxNywgMHgyMiwgMHgxOSwgMHhhZSwgMHhjNywgMHhi NiwgMHg2MywgMHg4MSwgMHhkNSwgMHhmZiwKKysgICAgMHgwZCwgMHhjOCwgMHhlMSwgMHhhZiwg MHg1NywgMHhkMiwgMHhjYiwgMHg2MAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X3ByX2VudHJvcHlpbnB1dHByMltdID0gewor KyAgICAweGQ3LCAweGZiLCAweGM5LCAweGU4LCAweGUyLCAweGYyLCAweGFhLCAweDRjLCAweGI4 LCAweDUxLCAweDJmLCAweGUxLAorKyAgICAweDIyLCAweGJhLCAweGYzLCAweGRhLCAweDBhLCAw eDE5LCAweDc2LCAweDcxLCAweDU3LCAweGIyLCAweDFkLCAweDk0LAorKyAgICAweDA5LCAweDY5 LCAweDZjLCAweGQzLCAweDk3LCAweDUxLCAweDgxLCAweDg3CisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfcHJfcmV0dXJuZWRi aXRzW10gPSB7CisrICAgIDB4ZTYsIDB4MTksIDB4MjgsIDB4YTgsIDB4MjEsIDB4Y2UsIDB4NWUs IDB4ZGIsIDB4MjQsIDB4NzksIDB4OGMsIDB4NzYsCisrICAgIDB4NWQsIDB4NzMsIDB4YjIsIDB4 ZGYsIDB4YWMsIDB4ZWYsIDB4ODUsIDB4YTcsIDB4M2IsIDB4MTksIDB4MDksIDB4OGIsCisrICAg IDB4N2YsIDB4OTgsIDB4MjgsIDB4YTksIDB4OTMsIDB4ZDgsIDB4N2EsIDB4YWQsIDB4NTUsIDB4 OGIsIDB4MjQsIDB4OWQsCisrICAgIDB4ZTYsIDB4OTgsIDB4ZmUsIDB4NDcsIDB4ZDUsIDB4NDgs IDB4YzEsIDB4MjMsIDB4ZDgsIDB4MWQsIDB4NjIsIDB4NzUKKyt9OworKworKy8qIEhNQUMgU0hB LTM4NCBObyBQUiAgKi8KKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgaG1hY19zaGEzODRfZW50cm9weWlucHV0W10gPSB7CisrICAgIDB4YzMsIDB4NTYsIDB4MmIs IDB4MWQsIDB4YzIsIDB4YmIsIDB4YTgsIDB4ZjAsIDB4YWUsIDB4MWIsIDB4MGQsIDB4ZDMsCisr ICAgIDB4NWEsIDB4NmMsIDB4ZGEsIDB4NTcsIDB4OGUsIDB4YTUsIDB4OGEsIDB4MGQsIDB4NmMs IDB4NGIsIDB4MTgsIDB4YjEsCisrICAgIDB4MDQsIDB4M2UsIDB4YjQsIDB4OTksIDB4MzUsIDB4 YzQsIDB4YzAsIDB4NWYKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBobWFjX3NoYTM4NF9ub25jZVtdID0geworKyAgICAweGM1LCAweDQ5LCAweDFl LCAweDY2LCAweDI3LCAweDkyLCAweGJlLCAweGVjLCAweGI1LCAweDFlLCAweDRiLCAweGIxLAor KyAgICAweDM4LCAweGUzLCAweGViLCAweDYyCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysg ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfcGVyc29uYWxpemF0aW9u c3RyaW5nW10gPSB7CisrICAgIDB4YmUsIDB4ZTcsIDB4NmIsIDB4NTcsIDB4ZGUsIDB4ODgsIDB4 MTEsIDB4OTYsIDB4OWIsIDB4NmUsIDB4ZWEsIDB4ZTUsCisrICAgIDB4NjMsIDB4ODMsIDB4NGMs IDB4YjYsIDB4OGQsIDB4NjYsIDB4YWEsIDB4MWYsIDB4OGIsIDB4NTQsIDB4ZTcsIDB4NjIsCisr ICAgIDB4NmQsIDB4NWEsIDB4ZmMsIDB4YmYsIDB4OTcsIDB4YmEsIDB4Y2QsIDB4NzcKKyt9Owor KworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4 NF9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHhlNSwgMHgyOCwgMHg1ZiwgMHg0MywgMHhm NSwgMHg4MywgMHg2ZSwgMHgwYSwgMHg4MywgMHg1YywgMHhlMywgMHg4MSwKKysgICAgMHgwMywg MHhmMiwgMHhmOCwgMHg3OCwgMHgwMCwgMHg3YywgMHg5NSwgMHg4NywgMHgxNiwgMHhkNiwgMHg2 YywgMHg1OCwKKysgICAgMHgzMywgMHg2YywgMHg1MywgMHgzNSwgMHgwZCwgMHg2NiwgMHhlMywg MHhjZQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGhtYWNfc2hhMzg0X2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhlMiwgMHgxZiwgMHhm MywgMHhkYSwgMHgwZCwgMHgxOSwgMHg5OSwgMHg4NywgMHhjNCwgMHg5MCwgMHhhMiwgMHgzMSwK KysgICAgMHhjYSwgMHgyYSwgMHg4OSwgMHg1OCwgMHg0MywgMHg0NCwgMHhiOCwgMHhkZSwgMHhj ZiwgMHhhNCwgMHhiZSwgMHgzYiwKKysgICAgMHg1MywgMHgyNiwgMHgyMiwgMHgzMSwgMHg3Niwg MHg0MSwgMHgyMiwgMHhiNSwgMHhhOCwgMHg3MCwgMHgyZiwgMHg0YiwKKysgICAgMHg2NCwgMHg5 NSwgMHg0ZCwgMHg0OCwgMHg5NiwgMHgzNSwgMHhlNiwgMHhiZCwgMHgzYywgMHgzNCwgMHhkYiwg MHgxYgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGhtYWNfc2hhMzg0X2VudHJvcHlpbnB1dHJlc2VlZFtdID0geworKyAgICAweDc3LCAweDYxLCAw eGJhLCAweGJjLCAweGYyLCAweGMxLCAweGYzLCAweDRiLCAweDg2LCAweDY1LCAweGZkLCAweDQ4 LAorKyAgICAweDBlLCAweDNjLCAweDAyLCAweDVlLCAweGEyLCAweDdhLCAweDZiLCAweDdjLCAw eGVkLCAweDIxLCAweDVlLCAweGY5LAorKyAgICAweGNkLCAweGNkLCAweDc3LCAweDA3LCAweDJi LCAweGJlLCAweGM1LCAweDVjCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfYWRkaXRpb25hbGlucHV0cmVzZWVkW10g PSB7CisrICAgIDB4MTgsIDB4MjQsIDB4NWYsIDB4YzYsIDB4ODQsIDB4ZDEsIDB4NjcsIDB4YzMs IDB4OWEsIDB4MTEsIDB4YTUsIDB4OGMsCisrICAgIDB4MDcsIDB4MzksIDB4MjEsIDB4ODMsIDB4 NGQsIDB4MDQsIDB4YzQsIDB4NmEsIDB4MjgsIDB4MTksIDB4Y2YsIDB4OTIsCisrICAgIDB4MjEs IDB4ZDksIDB4OWUsIDB4NDEsIDB4NzIsIDB4NmMsIDB4OWUsIDB4NjMKKyt9OworKworK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9hZGRpdGlv bmFsaW5wdXQyW10gPSB7CisrICAgIDB4OTYsIDB4NjcsIDB4NDEsIDB4MjgsIDB4OWIsIDB4Yjcs IDB4OTIsIDB4OGQsIDB4NjQsIDB4M2IsIDB4ZTQsIDB4Y2YsCisrICAgIDB4N2UsIDB4YWEsIDB4 MWUsIDB4YjEsIDB4NGIsIDB4MWQsIDB4MDksIDB4NTYsIDB4NjcsIDB4OWMsIDB4YzYsIDB4NmQs CisrICAgIDB4M2IsIDB4ZTgsIDB4OTEsIDB4OWQsIDB4ZTEsIDB4OGEsIDB4YjcsIDB4MzIKKyt9 OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3No YTM4NF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhlMywgMHg1OSwgMHg2MSwgMHgzOCwgMHg5 MiwgMHhlYywgMHhlMiwgMHgzYywgMHhmZiwgMHhiNywgMHhkYiwgMHgxOSwKKysgICAgMHgwZiwg MHg1YiwgMHg5MywgMHg2OCwgMHgwZCwgMHhhNCwgMHg5NCwgMHg0MCwgMHg3MiwgMHgwYiwgMHhl MCwgMHhlZCwKKysgICAgMHg0ZCwgMHhjZCwgMHg2OCwgMHhhMCwgMHgxZSwgMHhmZSwgMHg2Nywg MHhiMiwgMHhmYSwgMHgyMSwgMHg1NiwgMHg3NCwKKysgICAgMHhhNCwgMHhhZCwgMHhjZiwgMHhi NywgMHg2MCwgMHg2NiwgMHgyZSwgMHg0MCwgMHhkZSwgMHg4MiwgMHhjYSwgMHhmYgorK307Cisr CisrLyogSE1BQyBTSEEtNTEyIFBSICAqLworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9wcl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHhh YSwgMHg5ZSwgMHg0NSwgMHg2NywgMHgwZSwgMHgwMCwgMHgyYSwgMHg2NywgMHg5OCwgMHhkNiwg MHhkYSwgMHgwYiwKKysgICAgMHgwZiwgMHgxNywgMHg3ZSwgMHhhYywgMHhmZCwgMHgyNywgMHhj NCwgMHhjYSwgMHg4NCwgMHhkZiwgMHhkZSwgMHhiYSwKKysgICAgMHg4NSwgMHhkOSwgMHhiZSwg MHg4ZiwgMHhmMywgMHhmZiwgMHg5MSwgMHg0ZAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX3ByX25vbmNlW10gPSB7CisrICAg IDB4OGMsIDB4NDksIDB4MmYsIDB4NTgsIDB4MWUsIDB4N2EsIDB4ZGEsIDB4NGIsIDB4N2UsIDB4 OGEsIDB4MzAsIDB4N2IsCisrICAgIDB4ODYsIDB4ZWEsIDB4YWYsIDB4YTIKKyt9OworKworK19f Zmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTUx Ml9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHg3MSwgMHhlMSwgMHhiYiwg MHhhZCwgMHhhNywgMHg0YiwgMHgyZSwgMHgzMSwgMHgzYiwgMHgwYiwgMHhlYywgMHgyNCwKKysg ICAgMHg5OSwgMHgzOCwgMHhiYywgMHhhYSwgMHgwNSwgMHg0YywgMHg0NiwgMHg0NCwgMHhmYSwg MHhhZCwgMHg4ZSwgMHgwMiwKKysgICAgMHhjMSwgMHg3ZSwgMHhhZCwgMHhlYywgMHg1NCwgMHhh NiwgMHhkMCwgMHhhZAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGhtYWNfc2hhNTEyX3ByX2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAweDNk LCAweDZlLCAweGE2LCAweGE4LCAweDI5LCAweDJhLCAweGIyLCAweGY1LCAweDk4LCAweDQyLCAw eGU0LCAweDkyLAorKyAgICAweDc4LCAweDIyLCAweDY3LCAweGZkLCAweDFiLCAweDE1LCAweDFl LCAweDI5LCAweGFhLCAweDcxLCAweDNjLCAweDNjLAorKyAgICAweGU3LCAweDA1LCAweDIwLCAw eGE5LCAweDI5LCAweGM2LCAweDc1LCAweDcxCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfcHJfZW50cm9weWlucHV0cHJbXSA9 IHsKKysgICAgMHhhYiwgMHhiOSwgMHgxNiwgMHhkOCwgMHg1NSwgMHgzNSwgMHg1NCwgMHhiNywg MHg5NywgMHgzZiwgMHg5NCwgMHhiYywKKysgICAgMHgyZiwgMHg3YywgMHg3MCwgMHhjNywgMHhk MCwgMHhlZCwgMHhiNywgMHg0YiwgMHhmNywgMHhmNiwgMHg2YywgMHgwMywKKysgICAgMHgwYywg MHhiMCwgMHgwMywgMHhkOCwgMHhiYiwgMHg3MSwgMHhkOSwgMHgxMAorK307CisrCisrX19maXBz X2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX3ByX2ludF9y ZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg4ZSwgMHhkMywgMHhmZCwgMHg1MiwgMHg5ZSwgMHg4 MywgMHgwOCwgMHg0OSwgMHgxOCwgMHg2ZSwgMHgyMywgMHg1NiwKKysgICAgMHg1YywgMHg0NSwg MHg5MywgMHgzNCwgMHgwNSwgMHhlMiwgMHg5OCwgMHg4ZiwgMHgwYywgMHhkNCwgMHgzMiwgMHgw YywKKysgICAgMHhmZCwgMHhkYSwgMHg1ZiwgMHg5MiwgMHgzYSwgMHg4YywgMHg4MSwgMHhiZCwg MHhmNiwgMHg2YywgMHg1NSwgMHhmZCwKKysgICAgMHhiOCwgMHgyMCwgMHhjZSwgMHg4ZCwgMHg5 NywgMHgyNywgMHhlOCwgMHhlOCwgMHhlMCwgMHhiMywgMHg4NSwgMHg1MCwKKysgICAgMHhhMiwg MHhjMiwgMHhiMiwgMHg5NSwgMHgxZCwgMHg0OCwgMHhkMywgMHg3YiwgMHg0YiwgMHg3OCwgMHgx MywgMHgzNSwKKysgICAgMHgwNSwgMHgxNywgMHhiZSwgMHgwZAorK307CisrCisrX19maXBzX2Nv bnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX3ByX2FkZGl0aW9u YWxpbnB1dDJbXSA9IHsKKysgICAgMHhjMywgMHhmYywgMHg5NSwgMHhhYSwgMHg2OSwgMHgwNiwg MHhhZSwgMHg1OSwgMHg0MSwgMHhjZSwgMHgyNiwgMHgwOCwKKysgICAgMHgyOSwgMHg2ZCwgMHg0 NSwgMHhkYSwgMHhlOCwgMHhiMywgMHg2YywgMHg5NSwgMHg2MCwgMHgwZiwgMHg3MCwgMHgyYywK KysgICAgMHgxMCwgMHhiYSwgMHgzOCwgMHg4YywgMHhjZiwgMHgyOSwgMHg5OSwgMHhhYQorK307 CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hh NTEyX3ByX2VudHJvcHlpbnB1dHByMltdID0geworKyAgICAweDNiLCAweDlhLCAweDI1LCAweGNl LCAweGQ3LCAweGY5LCAweDVjLCAweGQxLCAweDNhLCAweDNlLCAweGFhLCAweDcxLAorKyAgICAw eDE0LCAweDNlLCAweDE5LCAweGU4LCAweGNlLCAweGU2LCAweGZlLCAweDUxLCAweDg0LCAweGU5 LCAweDFiLCAweGZlLAorKyAgICAweDNmLCAweGE3LCAweGYyLCAweGZkLCAweDc2LCAweDVmLCAw eDZhLCAweGU3CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgaG1hY19zaGE1MTJfcHJfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4YjcsIDB4ODIs IDB4YTksIDB4NTcsIDB4ODEsIDB4NjcsIDB4NTMsIDB4YjUsIDB4YTEsIDB4ZTksIDB4M2QsIDB4 MzUsCisrICAgIDB4ZjksIDB4ZTQsIDB4OTcsIDB4YmUsIDB4YTYsIDB4Y2EsIDB4ZjEsIDB4MDEs IDB4MTMsIDB4MDksIDB4ZTcsIDB4MjEsCisrICAgIDB4YzAsIDB4ZWQsIDB4OTMsIDB4NWQsIDB4 NGIsIDB4ZjQsIDB4ZWIsIDB4OGQsIDB4NTMsIDB4MjUsIDB4OGEsIDB4YzQsCisrICAgIDB4YjEs IDB4NmYsIDB4NmUsIDB4MzcsIDB4Y2QsIDB4MmUsIDB4YWMsIDB4MzksIDB4YjIsIDB4YjYsIDB4 OTksIDB4YTMsCisrICAgIDB4ODIsIDB4MDAsIDB4YjAsIDB4MjEsIDB4ZjAsIDB4YzcsIDB4MmYs IDB4NGMsIDB4NzMsIDB4OTIsIDB4ZmQsIDB4MDAsCisrICAgIDB4YjYsIDB4YWYsIDB4YmMsIDB4 ZDMKKyt9OworKworKy8qIEhNQUMgU0hBLTUxMiBObyBQUiAgKi8KKytfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfZW50cm9weWlucHV0W10gPSB7 CisrICAgIDB4NmUsIDB4ODUsIDB4ZTYsIDB4MjUsIDB4OTYsIDB4MjksIDB4YTcsIDB4NTIsIDB4 NWIsIDB4NjAsIDB4YmEsIDB4YWEsCisrICAgIDB4ZGUsIDB4ZGIsIDB4MzYsIDB4MGEsIDB4NTEs IDB4OWEsIDB4MTUsIDB4YWUsIDB4NmUsIDB4MTgsIDB4ZDMsIDB4ZmUsCisrICAgIDB4MzksIDB4 YjksIDB4NGEsIDB4OTYsIDB4ZjgsIDB4NzcsIDB4Y2IsIDB4OTUKKyt9OworKworK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9ub25jZVtdID0g eworKyAgICAweGUwLCAweGE2LCAweDVkLCAweDA4LCAweGMzLCAweDdjLCAweGFlLCAweDI1LCAw eDJlLCAweDgwLCAweGQxLCAweDNlLAorKyAgICAweGQ5LCAweGFmLCAweDQzLCAweDNjCisrfTsK KysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1h Y19zaGE1MTJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7CisrICAgIDB4NTMsIDB4OTksIDB4 NTIsIDB4NWYsIDB4MTEsIDB4YTksIDB4NjQsIDB4NjYsIDB4MjAsIDB4NWUsIDB4MWIsIDB4NWYs CisrICAgIDB4NDIsIDB4YjMsIDB4ZjQsIDB4ZGEsIDB4ZWQsIDB4YmIsIDB4NjMsIDB4YzEsIDB4 MjMsIDB4YWYsIDB4ZDAsIDB4MDEsCisrICAgIDB4OTAsIDB4M2IsIDB4ZDAsIDB4NzgsIDB4ZTQs IDB4MGIsIDB4YTcsIDB4MjAKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHg4 NSwgMHg5MCwgMHg4MCwgMHhkMywgMHg5OCwgMHhmMSwgMHg1MywgMHg2ZCwgMHg2OCwgMHgxNSwg MHg4ZiwgMHhlNSwKKysgICAgMHg2MCwgMHgzZiwgMHgxNywgMHgyOSwgMHg1NSwgMHg4ZCwgMHgz MywgMHhiMSwgMHg0NSwgMHg2NCwgMHg2NCwgMHg4ZCwKKysgICAgMHg1MCwgMHgyMSwgMHg4OSwg MHhhZSwgMHhmNiwgMHhmZCwgMHgzMiwgMHg3MworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX2ludF9yZXR1cm5lZGJpdHNbXSA9 IHsKKysgICAgMHgyOCwgMHg1NiwgMHgzMCwgMHg2ZiwgMHhmNCwgMHhhMSwgMHg0OCwgMHhlMCwg MHhjOSwgMHhmNSwgMHg3NSwgMHg5MCwKKysgICAgMHhjYywgMHhmYiwgMHhkZiwgMHhkZiwgMHg3 MSwgMHgzZCwgMHgwYSwgMHg5YSwgMHgwMywgMHg2NSwgMHgzYiwgMHgxOCwKKysgICAgMHg2MSwg MHhlMywgMHhkMSwgMHhkYSwgMHhjYywgMHg0YSwgMHhmZSwgMHg1NSwgMHgzOCwgMHhmOCwgMHgy MSwgMHg2YiwKKysgICAgMHhmYSwgMHgxOCwgMHgwMSwgMHg0MiwgMHgzOSwgMHgyZiwgMHg5OSwg MHg1MywgMHgzOCwgMHgxNSwgMHg4MiwgMHgzNCwKKysgICAgMHhjNSwgMHg5MywgMHg5MiwgMHhi YywgMHg0ZCwgMHg3NSwgMHgxYSwgMHg1ZiwgMHgyMSwgMHgyNywgMHhjYywgMHhhMSwKKysgICAg MHhiMSwgMHg1NywgMHg2OSwgMHhlOAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX2VudHJvcHlpbnB1dHJlc2VlZFtdID0gewor KyAgICAweDhjLCAweDUyLCAweDdlLCAweDc3LCAweDcyLCAweDNmLCAweGEzLCAweDA0LCAweDk3 LCAweDEwLCAweDliLCAweDQxLAorKyAgICAweGJkLCAweGU4LCAweGZmLCAweDg5LCAweGVkLCAw eDgwLCAweGUzLCAweGJkLCAweGFhLCAweDEyLCAweDJkLCAweGNhLAorKyAgICAweDc1LCAweDgy LCAweDM2LCAweDc3LCAweDg4LCAweGNkLCAweGE2LCAweDczCisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfYWRkaXRp b25hbGlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4N2UsIDB4MzIsIDB4ZTMsIDB4NjksIDB4Njks IDB4MDcsIDB4MzQsIDB4YTIsIDB4MTYsIDB4YTIsIDB4NWQsIDB4MWEsCisrICAgIDB4MTAsIDB4 OTEsIDB4ZDMsIDB4ZTIsIDB4MjEsIDB4YTIsIDB4YTMsIDB4ZGQsIDB4Y2QsIDB4MGMsIDB4MDks IDB4ODYsCisrICAgIDB4MTEsIDB4ZTEsIDB4NTAsIDB4ZmYsIDB4NWMsIDB4YjcsIDB4ZWIsIDB4 NWMKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBo bWFjX3NoYTUxMl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7CisrICAgIDB4N2YsIDB4NzgsIDB4NjYs IDB4ZDgsIDB4ZmIsIDB4NjcsIDB4Y2YsIDB4OGQsIDB4OGMsIDB4MDgsIDB4MzAsIDB4YTUsCisr ICAgIDB4ZjgsIDB4N2QsIDB4Y2YsIDB4NDQsIDB4NTksIDB4Y2UsIDB4ZjgsIDB4ZGYsIDB4NTgs IDB4ZDMsIDB4NjAsIDB4Y2IsCisrICAgIDB4YTgsIDB4NjAsIDB4YjksIDB4MDcsIDB4YzQsIDB4 YjEsIDB4OTUsIDB4NDgKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBobWFjX3NoYTUxMl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhkZiwgMHhh NywgMHgzNiwgMHhkNCwgMHhkYywgMHg1ZCwgMHg0ZCwgMHgzMSwgMHhhZCwgMHg2OSwgMHg0Niwg MHg5ZiwKKysgICAgMHhmMSwgMHg3YywgMHhkNywgMHgzYiwgMHg0ZiwgMHg1NSwgMHhmMiwgMHhk NywgMHhiOSwgMHg5ZCwgMHhhZCwgMHg3YSwKKysgICAgMHg3OSwgMHgwOCwgMHg1OSwgMHhhNSwg MHhkYywgMHg3NCwgMHhmNSwgMHg5YiwgMHg3MywgMHhkMiwgMHgxMywgMHgyNSwKKysgICAgMHgw YiwgMHg4MSwgMHgwOCwgMHgwOCwgMHgyNSwgMHhmYiwgMHgzOSwgMHhmMiwgMHhmMCwgMHhhMywg MHhhNCwgMHg4ZCwKKysgICAgMHhlZiwgMHgwNSwgMHg5ZSwgMHhiOCwgMHhjNywgMHg1MiwgMHhl NCwgMHgwZSwgMHg0MiwgMHhhYSwgMHg3YywgMHg3OSwKKysgICAgMHhjMiwgMHhkNiwgMHhmZCwg MHhhNQorK307CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfZHNhX3Nl bGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfZHNhX3NlbGZ0ZXN0 LmMKKy0tLSBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfZHNhX3NlbGZ0ZXN0LmMuZmlw cwkyMDE2LTA5LTA4IDExOjM3OjM4Ljc0MTQ2MDA3NCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAv Y3J5cHRvL2ZpcHMvZmlwc19kc2Ffc2VsZnRlc3QuYwkyMDE2LTA5LTA4IDExOjM3OjM4Ljc0MTQ2 MDA3NCArMDIwMAorQEAgLTAsMCArMSwxOTUgQEAKKysvKiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHly aWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K KysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y bXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92 aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysg KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl IGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5v dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l ciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv dmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2 ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysg KiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoK KysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUg T3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAo aHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NM IFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICog ICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJl IHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBl cm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3Jn LgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5v dCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGlu IHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2Yg dGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkg Zm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3ds ZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3Bl ZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBU b29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJF IElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysg KiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN SVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJ QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisr ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO RywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P RFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV U0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElU WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJ TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE VklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysgKi8K KysKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Cisr I2luY2x1ZGUgPG9wZW5zc2wvZHNhLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorKyNp bmNsdWRlICJpbnRlcm5hbC9maXBzX2ludC5oIgorKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgor KyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+CisrI2lu Y2x1ZGUgImZpcHNfbG9jbC5oIgorKworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysKKytzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBkc2FfdGVzdF8yMDQ4X3BbXSA9IHsKKysgICAgMHhhOCwgMHg1 MywgMHg3OCwgMHhkOCwgMHhmZCwgMHgzZiwgMHg4ZCwgMHg3MiwgMHhlYywgMHg3NCwgMHgxOCwg MHgwOCwKKysgICAgMHgwZCwgMHhhMiwgMHgxMywgMHgxNywgMHhlNCwgMHgzZSwgMHhjNCwgMHhi NiwgMHgyYiwgMHhhOCwgMHhjOCwgMHg2MiwKKysgICAgMHgzYiwgMHg3ZSwgMHg0ZCwgMHgwNCwg MHg0NCwgMHgxZCwgMHhkMSwgMHhhMCwgMHg2NSwgMHg4NiwgMHg2MiwgMHg1OSwKKysgICAgMHg2 NCwgMHg5MywgMHhjYSwgMHg4ZSwgMHg5ZSwgMHg4ZiwgMHhiYiwgMHg3ZSwgMHgzNCwgMHhhYSwg MHhkZCwgMHhiNiwKKysgICAgMHgyZSwgMHg1ZCwgMHg2NywgMHhiNiwgMHhkMCwgMHg5YSwgMHg2 ZSwgMHg2MSwgMHhiNywgMHg2OSwgMHhlNywgMHhjMywKKysgICAgMHg1MiwgMHhhYSwgMHgyYiwg MHgxMCwgMHhlMiwgMHgwYywgMHhhMCwgMHg2MywgMHg2OSwgMHg2MywgMHhiNSwgMHg1MiwKKysg ICAgMHgzZSwgMHg4NiwgMHg0NywgMHgwZCwgMHhlYywgMHhiYiwgMHhlZCwgMHhhMCwgMHgyNywg MHhlNywgMHg5NywgMHhlNywKKysgICAgMHhiNiwgMHg3NiwgMHgzNSwgMHhkNCwgMHhkNCwgMHg5 YywgMHgzMCwgMHg3MCwgMHgwZSwgMHg3NCwgMHhhZiwgMHg4YSwKKysgICAgMHgwZiwgMHhmMSwg MHg1NiwgMHhhOCwgMHgwMSwgMHhhZiwgMHg1NywgMHhhMiwgMHg2ZSwgMHg3MCwgMHg3OCwgMHhm MSwKKysgICAgMHhkOCwgMHgyZiwgMHg3NCwgMHg5MCwgMHg4ZSwgMHhjYiwgMHg2ZCwgMHgwNywg MHhlNywgMHgwYiwgMHgzNSwgMHgwMywKKysgICAgMHhlZSwgMHhkOSwgMHg0ZiwgMHhhMywgMHgy YywgMHhmMSwgMHg3YSwgMHg3ZiwgMHhjMywgMHhkNiwgMHhjZiwgMHg0MCwKKysgICAgMHhkYywg MHg3YiwgMHgwMCwgMHg4MywgMHgwZSwgMHg2YSwgMHgyNSwgMHg2NiwgMHhkYywgMHgwNywgMHgz ZSwgMHgzNCwKKysgICAgMHgzMywgMHgxMiwgMHg1MSwgMHg3YywgMHg2YSwgMHhhNSwgMHgxNSwg MHgyYiwgMHg0YiwgMHhmZSwgMHhjZCwgMHgyZSwKKysgICAgMHg1NSwgMHgxZiwgMHhlZSwgMHgz NCwgMHg2MywgMHgxOCwgMHhhMSwgMHg1MywgMHg0MiwgMHgzYywgMHg5OSwgMHg2YiwKKysgICAg MHgwZCwgMHg1ZCwgMHhjYiwgMHg5MSwgMHgwMiwgMHhhZSwgMHhkZCwgMHgzOCwgMHg3OSwgMHg4 NiwgMHgxNiwgMHhmMSwKKysgICAgMHhmMSwgMHhlMCwgMHhkNiwgMHhjNCwgMHgwMywgMHg1Miwg MHg1YiwgMHgxZiwgMHg5YiwgMHgzZCwgMHg0ZCwgMHhjNywKKysgICAgMHg2NiwgMHhkZSwgMHgy ZCwgMHhmYywgMHg0YSwgMHg1NiwgMHhkNywgMHhiOCwgMHhiYSwgMHg1OSwgMHg2MywgMHhkNiwK KysgICAgMHgwZiwgMHgzZSwgMHgxNiwgMHgzMSwgMHg4OCwgMHg3MCwgMHhhZCwgMHg0MywgMHg2 OSwgMHg1MiwgMHhlNSwgMHg1NywKKysgICAgMHg2NSwgMHgzNywgMHg0ZSwgMHhhYiwgMHg4NSwg MHhlOCwgMHhlYywgMHgxNywgMHhkNiwgMHhiOSwgMHhhNCwgMHg1NCwKKysgICAgMHg3YiwgMHg5 YiwgMHg1ZiwgMHgyNywgMHg1MiwgMHhmMywgMHgxMCwgMHg1YiwgMHhlOCwgMHgwOSwgMHhiMiwg MHgzYSwKKysgICAgMHgyYywgMHg4ZCwgMHg3NCwgMHg2OSwgMHhkYiwgMHgwMiwgMHhlMiwgMHg0 ZCwgMHg1OSwgMHgyMywgMHg5NCwgMHhhNywKKysgICAgMHhkYiwgMHhhMCwgMHg2OSwgMHhlOQor K307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZHNhX3Rlc3RfMjA0OF9xW10gPSB7 CisrICAgIDB4ZDIsIDB4NzcsIDB4MDQsIDB4NGUsIDB4NTAsIDB4ZjUsIDB4YTQsIDB4ZTMsIDB4 ZjUsIDB4MTAsIDB4YTUsIDB4MGEsCisrICAgIDB4MGIsIDB4ODQsIDB4ZmQsIDB4ZmYsIDB4YmMs IDB4YTAsIDB4NDcsIDB4ZWQsIDB4MjcsIDB4NjAsIDB4MjAsIDB4NTYsCisrICAgIDB4NzQsIDB4 NDEsIDB4YTAsIDB4YTUKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRzYV90 ZXN0XzIwNDhfZ1tdID0geworKyAgICAweDEzLCAweGQ3LCAweDU0LCAweGUyLCAweDFmLCAweGQy LCAweDQxLCAweDY1LCAweDVkLCAweGE4LCAweDkxLCAweGM1LAorKyAgICAweDIyLCAweGE2LCAw eDVhLCAweDcyLCAweGE4LCAweDliLCAweGRjLCAweDY0LCAweGVjLCAweDliLCAweDU0LCAweGE4 LAorKyAgICAweDIxLCAweGVkLCAweDRhLCAweDg5LCAweDhiLCAweDQ5LCAweDBlLCAweDBjLCAw eDRmLCAweGNiLCAweDcyLCAweDE5LAorKyAgICAweDJhLCAweDRhLCAweDIwLCAweGY1LCAweDQx LCAweGYzLCAweGYyLCAweDkyLCAweDUzLCAweDk5LCAweGYwLCAweGJhLAorKyAgICAweGVjLCAw eGY5LCAweDI5LCAweGFhLCAweGZiLCAweGY3LCAweDlkLCAweGZlLCAweDQzLCAweDMyLCAweDM5 LCAweDNiLAorKyAgICAweDMyLCAweGNkLCAweDJlLCAweDJmLCAweGNmLCAweDI3LCAweDJmLCAw eDMyLCAweGE2LCAweDI3LCAweDQzLCAweDRhLAorKyAgICAweDBkLCAweGYyLCAweDQyLCAweGI3 LCAweDViLCAweDQxLCAweDRkLCAweGYzLCAweDcyLCAweDEyLCAweDFlLCAweDUzLAorKyAgICAw eGE1LCAweDUzLCAweGYyLCAweDIyLCAweGY4LCAweDM2LCAweGIwLCAweDAwLCAweGYwLCAweDE2 LCAweDQ4LCAweDViLAorKyAgICAweDZiLCAweGQwLCAweDg5LCAweDg0LCAweDUxLCAweDgwLCAw eDFkLCAweGNkLCAweDhkLCAweGU2LCAweDRjLCAweGQ1LAorKyAgICAweDM2LCAweDU2LCAweDk2 LCAweGZmLCAweGM1LCAweDMyLCAweGQ1LCAweDI4LCAweGM1LCAweDA2LCAweDYyLCAweDBhLAor KyAgICAweDk0LCAweDJhLCAweDAzLCAweDA1LCAweDA0LCAweDZkLCAweDhmLCAweDE4LCAweDc2 LCAweDM0LCAweDFmLCAweDFlLAorKyAgICAweDU3LCAweDBiLCAweGMzLCAweDk3LCAweDRiLCAw eGE2LCAweGI5LCAweGE0LCAweDM4LCAweGU5LCAweDcwLCAweDIzLAorKyAgICAweDAyLCAweGEy LCAweGU2LCAweGU2LCAweDdiLCAweGZkLCAweDA2LCAweGQzLCAweDJiLCAweGM2LCAweDc5LCAw eDk2LAorKyAgICAweDIyLCAweDcxLCAweGQ3LCAweGI0LCAweDBjLCAweGQ3LCAweDJmLCAweDM4 LCAweDZlLCAweDY0LCAweGUwLCAweGQ3LAorKyAgICAweGVmLCAweDg2LCAweGNhLCAweDhjLCAw eGE1LCAweGQxLCAweDQyLCAweDI4LCAweGRjLCAweDJhLCAweDRmLCAweDE2LAorKyAgICAweGUz LCAweDE4LCAweDk4LCAweDg2LCAweGI1LCAweDk5LCAweDA2LCAweDc0LCAweGY0LCAweDIwLCAw eDBmLCAweDNhLAorKyAgICAweDRjLCAweGY2LCAweDVhLCAweDNmLCAweDBkLCAweGRiLCAweGEx LCAweGZhLCAweDY3LCAweDJkLCAweGZmLCAweDJmLAorKyAgICAweDVlLCAweDE0LCAweDNkLCAw eDEwLCAweGU0LCAweGU5LCAweDdhLCAweGU4LCAweDRmLCAweDZkLCAweGEwLCAweDk1LAorKyAg ICAweDM1LCAweGQ1LCAweGI5LCAweGRmLCAweDI1LCAweDkxLCAweDgxLCAweGE3LCAweDliLCAw eDYzLCAweGIwLCAweDY5LAorKyAgICAweGU5LCAweDQ5LCAweDk3LCAweDJiLCAweDAyLCAweGJh LCAweDM2LCAweGIzLCAweDU4LCAweDZhLCAweGFiLCAweDdlLAorKyAgICAweDQ1LCAweGYzLCAw eDIyLCAweGY4LCAweDJlLCAweDRlLCAweDg1LCAweGNhLCAweDNhLCAweGI4LCAweDU1LCAweDkx LAorKyAgICAweGIzLCAweGMyLCAweGE5LCAweDY2CisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBkc2FfdGVzdF8yMDQ4X3B1Yl9rZXlbXSA9IHsKKysgICAgMHgyNCwgMHg1Miwg MHhmMywgMHhjYywgMHhiZSwgMHg5ZSwgMHhkNSwgMHhjYSwgMHg3ZCwgMHhjNywgMHg0YywgMHg2 MCwKKysgICAgMHgyYiwgMHg5OSwgMHgyMiwgMHg2ZSwgMHg4ZiwgMHgyZiwgMHhhYiwgMHgzOCwg MHhlNywgMHhkNywgMHhkZCwgMHhmYiwKKysgICAgMHg3NSwgMHg1MywgMHg5YiwgMHgxNywgMHgx NSwgMHg1ZSwgMHg5ZiwgMHhjZiwgMHhkMSwgMHhhYiwgMHhhNSwgMHg2NCwKKysgICAgMHhlYiwg MHg4NSwgMHgzNSwgMHhkOCwgMHgxMiwgMHhjOSwgMHhjMiwgMHhkYywgMHhmOSwgMHg3MiwgMHg4 NCwgMHg0NCwKKysgICAgMHgxYiwgMHhjNCwgMHg4MiwgMHgyNCwgMHgzNiwgMHgyNCwgMHhjNywg MHhmNCwgMHg1NywgMHg1OCwgMHgwYywgMHgxYywKKysgICAgMHgzOCwgMHhhNSwgMHg3YywgMHg0 NiwgMHhjNCwgMHg1NywgMHgzOSwgMHgyNCwgMHg3MCwgMHhlZCwgMHhiNSwgMHgyYywKKysgICAg MHhiNSwgMHhhNiwgMHhlMCwgMHgzZiwgMHhlNiwgMHgyOCwgMHg3YiwgMHhiNiwgMHhmNCwgMHg5 YSwgMHg0MiwgMHhhMiwKKysgICAgMHgwNiwgMHg1YSwgMHgwNSwgMHg0ZiwgMHgwMywgMHgwOCwg MHgzOSwgMHhkZiwgMHgxZiwgMHhkMywgMHgxNCwgMHg5YywKKysgICAgMHg0YywgMHhhMCwgMHg1 MywgMHgxZCwgMHhkOCwgMHhjYSwgMHg4YSwgMHhhYSwgMHg5YywgMHhjNywgMHgzMywgMHg3MSwK KysgICAgMHg5MywgMHgzOCwgMHg3MywgMHg0OCwgMHgzMywgMHg2MSwgMHgxOCwgMHgyMiwgMHg0 NSwgMHg0NSwgMHhlOCwgMHg4YywKKysgICAgMHg4MCwgMHhmZiwgMHhkOCwgMHg3NiwgMHg1ZCwg MHg3NCwgMHgzNiwgMHgwMywgMHgzMywgMHhjYywgMHhhYiwgMHg5OSwKKysgICAgMHg3MiwgMHg3 NywgMHg5YiwgMHg2NSwgMHgyNSwgMHhhNiwgMHg1YiwgMHhkZCwgMHgwZCwgMHgxMCwgMHhjNiwg MHg3NSwKKysgICAgMHhjMSwgMHgwOSwgMHhiYiwgMHhkMywgMHhlNSwgMHhiZSwgMHg0ZCwgMHg3 MiwgMHhlZiwgMHg2ZSwgMHhiYSwgMHg2ZSwKKysgICAgMHg0MywgMHg4ZCwgMHg1MiwgMHgyNiwg MHgyMywgMHg3ZCwgMHhiOCwgMHg4OCwgMHgzNywgMHg5YywgMHg1ZiwgMHhjYywKKysgICAgMHg0 NywgMHhhMywgMHg4NCwgMHg3ZiwgMHhmNiwgMHgzNywgMHgxMSwgMHhiYSwgMHhlZCwgMHg2ZCwg MHgwMywgMHhhZiwKKysgICAgMHhlOCwgMHgxZSwgMHg2OSwgMHg0YSwgMHg0MSwgMHgzYiwgMHg2 OCwgMHgwYiwgMHhkMywgMHg4YSwgMHhiNCwgMHg5MCwKKysgICAgMHgzZiwgMHg4MywgMHg3MCwg MHhhNywgMHgwNywgMHhlZiwgMHg1NSwgMHgxZCwgMHg0OSwgMHg0MSwgMHgwMiwgMHg2ZCwKKysg ICAgMHg5NSwgMHg3OSwgMHhkNiwgMHg5MSwgMHhkZSwgMHg4ZSwgMHhkYSwgMHhhMSwgMHg2MSwg MHgwNSwgMHhlYiwgMHg5ZCwKKysgICAgMHhiYSwgMHgzYywgMHgyZiwgMHg0YywgMHgxYiwgMHhl YywgMHg1MCwgMHg4MiwgMHg3NSwgMHhhYSwgMHgwMiwgMHgwNywKKysgICAgMHhlMiwgMHg1MSwg MHhiNSwgMHhlYywgMHhjYiwgMHgyOCwgMHg2YSwgMHg0YiwgMHgwMSwgMHhkNCwgMHg0OSwgMHhk MywKKysgICAgMHgwYSwgMHhjYiwgMHg2NywgMHgzNywgMHgxNywgMHhhMCwgMHhkMiwgMHhmYiwg MHgzYiwgMHg1MCwgMHhjOCwgMHg5MywKKysgICAgMHhmNywgMHhkYSwgMHhiMSwgMHg0ZgorK307 CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZHNhX3Rlc3RfMjA0OF9wcml2X2tleVtd ID0geworKyAgICAweDBjLCAweDRiLCAweDMwLCAweDg5LCAweGQxLCAweGI4LCAweDYyLCAweGNi LCAweDNjLCAweDQzLCAweDY0LCAweDkxLAorKyAgICAweGYwLCAweDkxLCAweDU0LCAweDcwLCAw eGM1LCAweDI3LCAweDk2LCAweGUzLCAweGFjLCAweGJlLCAweGU4LCAweDAwLAorKyAgICAweGVj LCAweDU1LCAweGY2LCAweGNjCisrfTsKKysKKytpbnQgRklQU19zZWxmdGVzdF9kc2EoKQorK3sK KysgICAgRFNBICpkc2EgPSBOVUxMOworKyAgICBFVlBfUEtFWSAqcGsgPSBOVUxMOworKyAgICBp bnQgcmV0ID0gLTE7CisrICAgIEJJR05VTSAqcCA9IE5VTEwsICpxID0gTlVMTCwgKmcgPSBOVUxM LCAqcHViX2tleSA9IE5VTEwsICpwcml2X2tleSA9IE5VTEw7CisrCisrICAgIGZpcHNfbG9hZF9r ZXlfY29tcG9uZW50KHAsIGRzYV90ZXN0XzIwNDgpOworKyAgICBmaXBzX2xvYWRfa2V5X2NvbXBv bmVudChxLCBkc2FfdGVzdF8yMDQ4KTsKKysgICAgZmlwc19sb2FkX2tleV9jb21wb25lbnQoZywg ZHNhX3Rlc3RfMjA0OCk7CisrICAgIGZpcHNfbG9hZF9rZXlfY29tcG9uZW50KHB1Yl9rZXksIGRz YV90ZXN0XzIwNDgpOworKyAgICBmaXBzX2xvYWRfa2V5X2NvbXBvbmVudChwcml2X2tleSwgZHNh X3Rlc3RfMjA0OCk7CisrCisrICAgIGRzYSA9IERTQV9uZXcoKTsKKysKKysgICAgaWYgKGRzYSA9 PSBOVUxMKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIERTQV9zZXQwX3BxZyhkc2EsIHAs IHEsIGcpOworKworKyAgICBEU0Ffc2V0MF9rZXkoZHNhLCBwdWJfa2V5LCBwcml2X2tleSk7Cisr CisrICAgIGlmICgocGsgPSBFVlBfUEtFWV9uZXcoKSkgPT0gTlVMTCkKKysgICAgICAgIGdvdG8g ZXJyOworKworKyAgICBFVlBfUEtFWV9hc3NpZ25fRFNBKHBrLCBkc2EpOworKworKyAgICBpZiAo IWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywgTlVMTCwgMCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgRVZQX3NoYTI1NigpLCAwLCAiRFNBIFNIQTI1NiIp KQorKyAgICAgICAgZ290byBlcnI7CisrICAgIHJldCA9IDE7CisrCisrIGVycjoKKysgICAgaWYg KHBrKQorKyAgICAgICAgRVZQX1BLRVlfZnJlZShwayk7CisrICAgIGVsc2UgaWYgKGRzYSkKKysg ICAgICAgIERTQV9mcmVlKGRzYSk7CisrICAgIGVsc2UgeworKyAgICAgICAgQk5fZnJlZShwKTsK KysgICAgICAgIEJOX2ZyZWUocSk7CisrICAgICAgICBCTl9mcmVlKGcpOworKyAgICAgICAgQk5f ZnJlZShwdWJfa2V5KTsKKysgICAgICAgIEJOX2ZyZWUocHJpdl9rZXkpOworKyAgICB9CisrICAg IHJldHVybiByZXQ7CisrfQorKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8v Zmlwcy9maXBzX2VjZGhfc2VsZnRlc3QuYy5maXBzIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMv Zmlwc19lY2RoX3NlbGZ0ZXN0LmMKKy0tLSBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNf ZWNkaF9zZWxmdGVzdC5jLmZpcHMJMjAxNi0wOS0wOCAxMTozNzozOC43NDE0NjAwNzQgKzAyMDAK KysrKyBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfZWNkaF9zZWxmdGVzdC5jCTIwMTYt MDktMDggMTE6Mzc6MzguNzQxNDYwMDc0ICswMjAwCitAQCAtMCwwICsxLDI0MiBAQAorKy8qIGZp cHMvZWNkaC9maXBzX2VjZGhfc2VsZnRlc3QuYyAqLworKy8qIFdyaXR0ZW4gYnkgRHIgU3RlcGhl biBOIEhlbnNvbiAoc3RldmVAb3BlbnNzbC5vcmcpIGZvciB0aGUgT3BlblNTTAorKyAqIHByb2pl Y3QgMjAxMS4KKysgKi8KKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAxMSBU aGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlz dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0 aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm b2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1 dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAq ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRo ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK KysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJp YWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBt dXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBw cm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0 CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5PcGVu U1NMLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAi T3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBw cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAg ICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFz ZSBjb250YWN0CisrICogICAgbGljZW5zaW5nQE9wZW5TU0wub3JnLgorKyAqCisrICogNS4gUHJv ZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5T U0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhv dXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVj dC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11 c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAi VGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQ cm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3 Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI RSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1Q TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICog SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM IFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBM QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJ TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisr ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP TikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUg UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKgorKyAqLwor KworKyNkZWZpbmUgT1BFTlNTTF9GSVBTQVBJCisrCisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNp bmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2VjLmg+CisrI2lu Y2x1ZGUgPG9wZW5zc2wvZWNkaC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysjaW5j bHVkZSA8b3BlbnNzbC9lcnIuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKysjaW5jbHVk ZSA8b3BlbnNzbC9ibi5oPgorKworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysKKysjIGluY2x1ZGUg ImZpcHNfbG9jbC5oIgorKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHAyNTZfcWNhdnN4 W10gPSB7CisrICAgIDB4NTIsIDB4YzYsIDB4YTUsIDB4NzUsIDB4ZjMsIDB4MDQsIDB4OTgsIDB4 YjMsIDB4MjksIDB4NjYsIDB4MGMsIDB4NjIsCisrICAgIDB4MTgsIDB4NjAsIDB4NTUsIDB4NDEs IDB4NTksIDB4ZDQsIDB4NjAsIDB4ODUsIDB4OTksIDB4YzEsIDB4NTEsIDB4MTMsCisrICAgIDB4 NmYsIDB4OTcsIDB4ODUsIDB4OTMsIDB4MzMsIDB4MzQsIDB4MDcsIDB4NTAKKyt9OworKworK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHAyNTZfcWNhdnN5W10gPSB7CisrICAgIDB4NmYsIDB4 NjksIDB4MjQsIDB4ZWIsIDB4ZTksIDB4M2IsIDB4YTcsIDB4Y2MsIDB4NDcsIDB4MTcsIDB4YWEs IDB4M2YsCisrICAgIDB4NzAsIDB4ZmMsIDB4MTAsIDB4NzMsIDB4MGEsIDB4Y2QsIDB4MjEsIDB4 ZWUsIDB4MjksIDB4MTksIDB4MWYsIDB4YWYsCisrICAgIDB4YjQsIDB4MWMsIDB4MWUsIDB4YzIs IDB4OGUsIDB4OTcsIDB4ODEsIDB4NmUKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIHAyNTZfcWl1dHhbXSA9IHsKKysgICAgMHg3MSwgMHg0NiwgMHg4OCwgMHgwOCwgMHg5Miwg MHgyMSwgMHgxYiwgMHgxMCwgMHgyMSwgMHg3NCwgMHhmZiwgMHgwYywKKysgICAgMHg5NCwgMHhk ZSwgMHgzNCwgMHg3YywgMHg4NiwgMHg3NCwgMHhiZSwgMHg2NywgMHg0MSwgMHg2OCwgMHhkNCwg MHhjMSwKKysgICAgMHhlNSwgMHg3NSwgMHg2MywgMHg5YywgMHhhNywgMHg0NiwgMHg5MywgMHg2 ZgorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcDI1Nl9xaXV0eVtdID0gewor KyAgICAweDMzLCAweDQwLCAweGE5LCAweDZhLCAweGY1LCAweDIwLCAweGI1LCAweDllLCAweGZj LCAweDYwLCAweDFhLCAweGFlLAorKyAgICAweDNkLCAweGY4LCAweDIxLCAweGQyLCAweGE3LCAw eGNhLCAweDUyLCAweDM0LCAweGI5LCAweDVmLCAweDI3LCAweDc1LAorKyAgICAweDZjLCAweDgx LCAweGJlLCAweDMyLCAweDRkLCAweGJhLCAweGJiLCAweGY4CisrfTsKKysKKytzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBwMjU2X3FpdXRkW10gPSB7CisrICAgIDB4MWEsIDB4NDgsIDB4NTUs IDB4NmIsIDB4MTEsIDB4YmUsIDB4OTIsIDB4ZDQsIDB4MWMsIDB4ZDcsIDB4NDUsIDB4YzMsCisr ICAgIDB4ODIsIDB4ODEsIDB4NTEsIDB4ZjEsIDB4MjMsIDB4NDAsIDB4YjcsIDB4ODMsIDB4ZmQs IDB4MDEsIDB4NmQsIDB4YmMsCisrICAgIDB4YTEsIDB4NjYsIDB4YWYsIDB4MGEsIDB4MDMsIDB4 MjMsIDB4Y2QsIDB4YzgKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHAyNTZf eml1dFtdID0geworKyAgICAweDc3LCAweDJhLCAweDFlLCAweDM3LCAweGVlLCAweGU2LCAweDUx LCAweDAyLCAweDcxLCAweDQwLCAweGY4LCAweDZhLAorKyAgICAweDM2LCAweGY4LCAweDY1LCAw eDYxLCAweDJiLCAweDE4LCAweDcxLCAweDgyLCAweDIzLCAweGU2LCAweGYyLCAweDc3LAorKyAg ICAweGNlLCAweGVjLCAweGI4LCAweDQ5LCAweGM3LCAweGJmLCAweDM2LCAweDRmCisrfTsKKysK Kyt0eXBlZGVmIHN0cnVjdCB7CisrICAgIGludCBjdXJ2ZTsKKysgICAgY29uc3QgdW5zaWduZWQg Y2hhciAqeDE7CisrICAgIHNpemVfdCB4MWxlbjsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAq eTE7CisrICAgIHNpemVfdCB5MWxlbjsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZDE7Cisr ICAgIHNpemVfdCBkMWxlbjsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqeDI7CisrICAgIHNp emVfdCB4MmxlbjsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqeTI7CisrICAgIHNpemVfdCB5 MmxlbjsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqejsKKysgICAgc2l6ZV90IHpsZW47Cisr fSBFQ0RIX1NFTEZURVNUX0RBVEE7CisrCisrIyBkZWZpbmUgbWFrZV9lY2RoX3Rlc3QobmlkLCBw cikgeyBuaWQsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByIyNfcWl1dHgs IHNpemVvZihwciMjX3FpdXR4KSwgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cHIjI19xaXV0eSwgc2l6ZW9mKHByIyNfcWl1dHkpLCBcCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwciMjX3FpdXRkLCBzaXplb2YocHIjI19xaXV0ZCksIFwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHByIyNfcWNhdnN4LCBzaXplb2YocHIjI19xY2F2c3gpLCBc CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwciMjX3FjYXZzeSwgc2l6ZW9mKHBy IyNfcWNhdnN5KSwgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHIjI196aXV0 LCBzaXplb2YocHIjI196aXV0KSB9CisrCisrc3RhdGljIEVDREhfU0VMRlRFU1RfREFUQSB0ZXN0 X2VjZGhfZGF0YVtdID0geworKyAgICBtYWtlX2VjZGhfdGVzdChOSURfWDlfNjJfcHJpbWUyNTZ2 MSwgcDI1NiksCisrfTsKKysKKytpbnQgRklQU19zZWxmdGVzdF9lY2RoKHZvaWQpCisreworKyAg ICBFQ19LRVkgKmVjMSA9IE5VTEwsICplYzIgPSBOVUxMOworKyAgICBjb25zdCBFQ19QT0lOVCAq ZWNwID0gTlVMTDsKKysgICAgQklHTlVNICp4ID0gTlVMTCwgKnkgPSBOVUxMLCAqZCA9IE5VTEw7 CisrICAgIHVuc2lnbmVkIGNoYXIgKnp0bXAgPSBOVUxMOworKyAgICBpbnQgcnYgPSAxOworKyAg ICBzaXplX3QgaTsKKysKKysgICAgZm9yIChpID0gMDsgaSA8IHNpemVvZih0ZXN0X2VjZGhfZGF0 YSkgLyBzaXplb2YoRUNESF9TRUxGVEVTVF9EQVRBKTsgaSsrKSB7CisrICAgICAgICBFQ0RIX1NF TEZURVNUX0RBVEEgKmVjZCA9IHRlc3RfZWNkaF9kYXRhICsgaTsKKysgICAgICAgIGlmICghZmlw c19wb3N0X3N0YXJ0ZWQoRklQU19URVNUX0VDREgsIGVjZC0+Y3VydmUsIDApKQorKyAgICAgICAg ICAgIGNvbnRpbnVlOworKyAgICAgICAgenRtcCA9IE9QRU5TU0xfbWFsbG9jKGVjZC0+emxlbik7 CisrCisrICAgICAgICB4ID0gQk5fYmluMmJuKGVjZC0+eDEsIGVjZC0+eDFsZW4sIHgpOworKyAg ICAgICAgeSA9IEJOX2JpbjJibihlY2QtPnkxLCBlY2QtPnkxbGVuLCB5KTsKKysgICAgICAgIGQg PSBCTl9iaW4yYm4oZWNkLT5kMSwgZWNkLT5kMWxlbiwgZCk7CisrCisrICAgICAgICBpZiAoIXgg fHwgIXkgfHwgIWQgfHwgIXp0bXApIHsKKysgICAgICAgICAgICBydiA9IC0xOworKyAgICAgICAg ICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKworKyAgICAgICAgZWMxID0gRUNfS0VZX25ld19i eV9jdXJ2ZV9uYW1lKGVjZC0+Y3VydmUpOworKyAgICAgICAgaWYgKCFlYzEpIHsKKysgICAgICAg ICAgICBydiA9IC0xOworKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKyAgICAg ICAgRUNfS0VZX3NldF9mbGFncyhlYzEsIEVDX0ZMQUdfQ09GQUNUT1JfRUNESCk7CisrCisrICAg ICAgICBpZiAoIUVDX0tFWV9zZXRfcHVibGljX2tleV9hZmZpbmVfY29vcmRpbmF0ZXMoZWMxLCB4 LCB5KSkgeworKyAgICAgICAgICAgIHJ2ID0gLTE7CisrICAgICAgICAgICAgZ290byBlcnI7Cisr ICAgICAgICB9CisrCisrICAgICAgICBpZiAoIUVDX0tFWV9zZXRfcHJpdmF0ZV9rZXkoZWMxLCBk KSkgeworKyAgICAgICAgICAgIHJ2ID0gLTE7CisrICAgICAgICAgICAgZ290byBlcnI7CisrICAg ICAgICB9CisrCisrICAgICAgICB4ID0gQk5fYmluMmJuKGVjZC0+eDIsIGVjZC0+eDJsZW4sIHgp OworKyAgICAgICAgeSA9IEJOX2JpbjJibihlY2QtPnkyLCBlY2QtPnkybGVuLCB5KTsKKysKKysg ICAgICAgIGlmICgheCB8fCAheSkgeworKyAgICAgICAgICAgIHJ2ID0gLTE7CisrICAgICAgICAg ICAgZ290byBlcnI7CisrICAgICAgICB9CisrCisrICAgICAgICBlYzIgPSBFQ19LRVlfbmV3X2J5 X2N1cnZlX25hbWUoZWNkLT5jdXJ2ZSk7CisrICAgICAgICBpZiAoIWVjMikgeworKyAgICAgICAg ICAgIHJ2ID0gLTE7CisrICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICB9CisrICAgICAg ICBFQ19LRVlfc2V0X2ZsYWdzKGVjMSwgRUNfRkxBR19DT0ZBQ1RPUl9FQ0RIKTsKKysKKysgICAg ICAgIGlmICghRUNfS0VZX3NldF9wdWJsaWNfa2V5X2FmZmluZV9jb29yZGluYXRlcyhlYzIsIHgs IHkpKSB7CisrICAgICAgICAgICAgcnYgPSAtMTsKKysgICAgICAgICAgICBnb3RvIGVycjsKKysg ICAgICAgIH0KKysKKysgICAgICAgIGVjcCA9IEVDX0tFWV9nZXQwX3B1YmxpY19rZXkoZWMyKTsK KysgICAgICAgIGlmICghZWNwKSB7CisrICAgICAgICAgICAgcnYgPSAtMTsKKysgICAgICAgICAg ICBnb3RvIGVycjsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmICghRUNESF9jb21wdXRlX2tl eSh6dG1wLCBlY2QtPnpsZW4sIGVjcCwgZWMxLCAwKSkgeworKyAgICAgICAgICAgIHJ2ID0gLTE7 CisrICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAoIWZp cHNfcG9zdF9jb3JydXB0KEZJUFNfVEVTVF9FQ0RILCBlY2QtPmN1cnZlLCBOVUxMKSkKKysgICAg ICAgICAgICB6dG1wWzBdIF49IDB4MTsKKysKKysgICAgICAgIGlmIChtZW1jbXAoenRtcCwgZWNk LT56LCBlY2QtPnpsZW4pKSB7CisrICAgICAgICAgICAgZmlwc19wb3N0X2ZhaWxlZChGSVBTX1RF U1RfRUNESCwgZWNkLT5jdXJ2ZSwgMCk7CisrICAgICAgICAgICAgcnYgPSAwOworKyAgICAgICAg fSBlbHNlIGlmICghZmlwc19wb3N0X3N1Y2Nlc3MoRklQU19URVNUX0VDREgsIGVjZC0+Y3VydmUs IDApKQorKyAgICAgICAgICAgIGdvdG8gZXJyOworKworKyAgICAgICAgRUNfS0VZX2ZyZWUoZWMx KTsKKysgICAgICAgIGVjMSA9IE5VTEw7CisrICAgICAgICBFQ19LRVlfZnJlZShlYzIpOworKyAg ICAgICAgZWMyID0gTlVMTDsKKysgICAgICAgIE9QRU5TU0xfZnJlZSh6dG1wKTsKKysgICAgICAg IHp0bXAgPSBOVUxMOworKyAgICB9CisrCisrIGVycjoKKysKKysgICAgaWYgKHgpCisrICAgICAg ICBCTl9jbGVhcl9mcmVlKHgpOworKyAgICBpZiAoeSkKKysgICAgICAgIEJOX2NsZWFyX2ZyZWUo eSk7CisrICAgIGlmIChkKQorKyAgICAgICAgQk5fY2xlYXJfZnJlZShkKTsKKysgICAgaWYgKGVj MSkKKysgICAgICAgIEVDX0tFWV9mcmVlKGVjMSk7CisrICAgIGlmIChlYzIpCisrICAgICAgICBF Q19LRVlfZnJlZShlYzIpOworKyAgICBpZiAoenRtcCkKKysgICAgICAgIE9QRU5TU0xfZnJlZSh6 dG1wKTsKKysKKysgICAgcmV0dXJuIHJ2OworKworK30KKysKKysjZW5kaWYKK2RpZmYgLXVwIG9w ZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19lY2RzYV9zZWxmdGVzdC5jLmZpcHMgb3BlbnNz bC0xLjEuMC9jcnlwdG8vZmlwcy9maXBzX2VjZHNhX3NlbGZ0ZXN0LmMKKy0tLSBvcGVuc3NsLTEu MS4wL2NyeXB0by9maXBzL2ZpcHNfZWNkc2Ffc2VsZnRlc3QuYy5maXBzCTIwMTYtMDktMDggMTE6 Mzc6MzguNzQxNDYwMDc0ICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9maXBz X2VjZHNhX3NlbGZ0ZXN0LmMJMjAxNi0wOS0wOCAxMTozNzozOC43NDE0NjAwNzQgKzAyMDAKK0BA IC0wLDAgKzEsMTY2IEBACisrLyogZmlwcy9lY2RzYS9maXBzX2VjZHNhX3NlbGZ0ZXN0LmMgKi8K KysvKiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5zc2wub3JnKSBm b3IgdGhlIE9wZW5TU0wKKysgKiBwcm9qZWN0IDIwMTEuCisrICovCisrLyogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KysgKiBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMg cmVzZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0 OgorKyAqCisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu IHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorKyAqCisrICogMi4gUmVkaXN0cmli dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK KysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIgaW4KKysgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0 ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisrICogICAgZGlzdHJpYnV0aW9uLgorKyAqCisrICog My4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBv ZiB0aGlzCisrICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93 bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9w ZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wg VG9vbGtpdC4gKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKKysgKgorKyAqIDQuIFRoZSBuYW1l cyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNl ZCB0bworKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhp cyBzb2Z0d2FyZSB3aXRob3V0CisrICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Ig d3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAorKyAqICAgIGxpY2Vuc2luZ0BPcGVu U1NMLm9yZy4KKysgKgorKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJl IG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFw cGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAgICBwZXJtaXNz aW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCisrICoKKysgKiA2LiBSZWRpc3RyaWJ1dGlvbnMg b2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisrICogICAg YWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBk ZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9w ZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICogVEhJUyBT T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQg QU5ZCisrICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg Tk9UIExJTUlURUQgVE8sIFRIRQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NM QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisrICogSVRT IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO VEFMLAorKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ TkNMVURJTkcsIEJVVAorKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAqIFNUUklDVCBM SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysg KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF TiBJRiBBRFZJU0VECisrICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAq ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CisrICoKKysgKi8KKysKKysjZGVmaW5lIE9QRU5TU0xfRklQU0FQSQorKwor KyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KKysjaW5j bHVkZSA8b3BlbnNzbC9lYy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2VjZHNhLmg+CisrI2luY2x1 ZGUgPG9wZW5zc2wvZmlwcy5oPgorKyNpbmNsdWRlICJpbnRlcm5hbC9maXBzX2ludC5oIgorKyNp bmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorKyNpbmNs dWRlIDxvcGVuc3NsL2JuLmg+CisrCisrI2lmZGVmIE9QRU5TU0xfRklQUworKworK3N0YXRpYyBj b25zdCBjaGFyIFBfMjU2X25hbWVbXSA9ICJFQ0RTQSBQLTI1NiI7CisrCisrc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgUF8yNTZfZFtdID0geworKyAgICAweDUxLCAweGJkLCAweDA2LCAweGEx LCAweDFjLCAweGRhLCAweGUyLCAweDEyLCAweDk5LCAweGM5LCAweDUyLCAweDNmLAorKyAgICAw eGVhLCAweGE0LCAweGQyLCAweGQxLCAweGY0LCAweDdmLCAweGQ0LCAweDNlLCAweGJkLCAweGY4 LCAweGZjLCAweDg3LAorKyAgICAweGRjLCAweDgyLCAweDUzLCAweDIxLCAweGVlLCAweGEwLCAw eGRjLCAweDY0CisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBQXzI1Nl9xeFtd ID0geworKyAgICAweDIzLCAweDg5LCAweGUwLCAweGY0LCAweDY5LCAweGUwLCAweDQ5LCAweGU1 LCAweGM3LCAweGU1LCAweDQwLCAweDZlLAorKyAgICAweDhmLCAweDI1LCAweGRkLCAweGFkLCAw eDExLCAweDE2LCAweDE0LCAweDliLCAweGFiLCAweDQ0LCAweDA2LCAweDMxLAorKyAgICAweGJm LCAweDVlLCAweGE2LCAweDQ0LCAweGFjLCAweDg2LCAweDAwLCAweDA3CisrfTsKKysKKytzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBQXzI1Nl9xeVtdID0geworKyAgICAweGIzLCAweDA1LCAw eDBkLCAweGQwLCAweGRjLCAweGY3LCAweDQwLCAweGU2LCAweGY5LCAweGQ4LCAweDZkLCAweDdi LAorKyAgICAweDYzLCAweGNhLCAweDk3LCAweGU2LCAweDEyLCAweGY5LCAweGQ0LCAweDE4LCAw eDU5LCAweGJlLCAweGIyLCAweDVlLAorKyAgICAweDRhLCAweDZhLCAweDc3LCAweDIzLCAweGY0 LCAweDExLCAweDlkLCAweGViCisrfTsKKysKKyt0eXBlZGVmIHN0cnVjdCB7CisrICAgIGludCBj dXJ2ZTsKKysgICAgY29uc3QgY2hhciAqbmFtZTsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAq eDsKKysgICAgc2l6ZV90IHhsZW47CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnk7CisrICAg IHNpemVfdCB5bGVuOworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkOworKyAgICBzaXplX3Qg ZGxlbjsKKyt9IEVDX1NFTEZURVNUX0RBVEE7CisrCisrIyBkZWZpbmUgbWFrZV9lY2RzYV90ZXN0 KG5pZCwgcHIpIHsgbmlkLCBwciMjX25hbWUsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHByIyNfcXgsIHNpemVvZihwciMjX3F4KSwgXAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHIjI19xeSwgc2l6ZW9mKHByIyNfcXkpLCBcCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwciMjX2QsIHNpemVvZihwciMjX2QpfQorKworK3N0YXRpYyBFQ19T RUxGVEVTVF9EQVRBIHRlc3RfZWNfZGF0YVtdID0geworKyAgICBtYWtlX2VjZHNhX3Rlc3QoTklE X1g5XzYyX3ByaW1lMjU2djEsIFBfMjU2KSwKKyt9OworKworK2ludCBGSVBTX3NlbGZ0ZXN0X2Vj ZHNhKCkKKyt7CisrICAgIEVDX0tFWSAqZWMgPSBOVUxMOworKyAgICBCSUdOVU0gKnggPSBOVUxM LCAqeSA9IE5VTEwsICpkID0gTlVMTDsKKysgICAgRVZQX1BLRVkgKnBrID0gTlVMTDsKKysgICAg aW50IHJ2ID0gMDsKKysgICAgc2l6ZV90IGk7CisrCisrICAgIGZvciAoaSA9IDA7IGkgPCBzaXpl b2YodGVzdF9lY19kYXRhKSAvIHNpemVvZihFQ19TRUxGVEVTVF9EQVRBKTsgaSsrKSB7CisrICAg ICAgICBFQ19TRUxGVEVTVF9EQVRBICplY2QgPSB0ZXN0X2VjX2RhdGEgKyBpOworKworKyAgICAg ICAgeCA9IEJOX2JpbjJibihlY2QtPngsIGVjZC0+eGxlbiwgeCk7CisrICAgICAgICB5ID0gQk5f YmluMmJuKGVjZC0+eSwgZWNkLT55bGVuLCB5KTsKKysgICAgICAgIGQgPSBCTl9iaW4yYm4oZWNk LT5kLCBlY2QtPmRsZW4sIGQpOworKworKyAgICAgICAgaWYgKCF4IHx8ICF5IHx8ICFkKQorKyAg ICAgICAgICAgIGdvdG8gZXJyOworKworKyAgICAgICAgZWMgPSBFQ19LRVlfbmV3X2J5X2N1cnZl X25hbWUoZWNkLT5jdXJ2ZSk7CisrICAgICAgICBpZiAoIWVjKQorKyAgICAgICAgICAgIGdvdG8g ZXJyOworKworKyAgICAgICAgaWYgKCFFQ19LRVlfc2V0X3B1YmxpY19rZXlfYWZmaW5lX2Nvb3Jk aW5hdGVzKGVjLCB4LCB5KSkKKysgICAgICAgICAgICBnb3RvIGVycjsKKysKKysgICAgICAgIGlm ICghRUNfS0VZX3NldF9wcml2YXRlX2tleShlYywgZCkpCisrICAgICAgICAgICAgZ290byBlcnI7 CisrCisrICAgICAgICBpZiAoKHBrID0gRVZQX1BLRVlfbmV3KCkpID09IE5VTEwpCisrICAgICAg ICAgICAgZ290byBlcnI7CisrCisrICAgICAgICBFVlBfUEtFWV9hc3NpZ25fRUNfS0VZKHBrLCBl Yyk7CisrCisrICAgICAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywgTlVMTCwg MCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsIEVWUF9z aGEyNTYoKSwgMCwgZWNkLT5uYW1lKSkKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgfQor KworKyAgICBydiA9IDE7CisrCisrIGVycjoKKysKKysgICAgaWYgKHgpCisrICAgICAgICBCTl9j bGVhcl9mcmVlKHgpOworKyAgICBpZiAoeSkKKysgICAgICAgIEJOX2NsZWFyX2ZyZWUoeSk7Cisr ICAgIGlmIChkKQorKyAgICAgICAgQk5fY2xlYXJfZnJlZShkKTsKKysgICAgaWYgKHBrKQorKyAg ICAgICAgRVZQX1BLRVlfZnJlZShwayk7CisrICAgIGVsc2UgaWYgKGVjKQorKyAgICAgICAgRUNf S0VZX2ZyZWUoZWMpOworKworKyAgICByZXR1cm4gcnY7CisrCisrfQorKworKyNlbmRpZgorZGlm ZiAtdXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9maXBzX2VuYy5jLmZpcHMgb3BlbnNzbC0x LjEuMC9jcnlwdG8vZmlwcy9maXBzX2VuYy5jCistLS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlw cy9maXBzX2VuYy5jLmZpcHMJMjAxNi0wOS0wOCAxMTozNzozOC43NDE0NjAwNzQgKzAyMDAKKysr KyBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfZW5jLmMJMjAxNi0wOS0wOCAxMTozNzoz OC43NDE0NjAwNzQgKzAyMDAKK0BAIC0wLDAgKzEsMTg5IEBACisrLyogZmlwZS9ldnAvZmlwc19l bmMuYyAqLworKy8qIENvcHlyaWdodCAoQykgMTk5NS0xOTk4IEVyaWMgWW91bmcgKGVheUBjcnlw dHNvZnQuY29tKQorKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBUaGlzIHBhY2th Z2UgaXMgYW4gU1NMIGltcGxlbWVudGF0aW9uIHdyaXR0ZW4KKysgKiBieSBFcmljIFlvdW5nIChl YXlAY3J5cHRzb2Z0LmNvbSkuCisrICogVGhlIGltcGxlbWVudGF0aW9uIHdhcyB3cml0dGVuIHNv IGFzIHRvIGNvbmZvcm0gd2l0aCBOZXRzY2FwZXMgU1NMLgorKyAqIAorKyAqIFRoaXMgbGlicmFy eSBpcyBmcmVlIGZvciBjb21tZXJjaWFsIGFuZCBub24tY29tbWVyY2lhbCB1c2UgYXMgbG9uZyBh cworKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgYWhlYXJlZCB0by4gIFRoZSBmb2xs b3dpbmcgY29uZGl0aW9ucworKyAqIGFwcGx5IHRvIGFsbCBjb2RlIGZvdW5kIGluIHRoaXMgZGlz dHJpYnV0aW9uLCBiZSBpdCB0aGUgUkM0LCBSU0EsCisrICogbGhhc2gsIERFUywgZXRjLiwgY29k ZTsgbm90IGp1c3QgdGhlIFNTTCBjb2RlLiAgVGhlIFNTTCBkb2N1bWVudGF0aW9uCisrICogaW5j bHVkZWQgd2l0aCB0aGlzIGRpc3RyaWJ1dGlvbiBpcyBjb3ZlcmVkIGJ5IHRoZSBzYW1lIGNvcHly aWdodCB0ZXJtcworKyAqIGV4Y2VwdCB0aGF0IHRoZSBob2xkZXIgaXMgVGltIEh1ZHNvbiAodGpo QGNyeXB0c29mdC5jb20pLgorKyAqIAorKyAqIENvcHlyaWdodCByZW1haW5zIEVyaWMgWW91bmcn cywgYW5kIGFzIHN1Y2ggYW55IENvcHlyaWdodCBub3RpY2VzIGluCisrICogdGhlIGNvZGUgYXJl IG5vdCB0byBiZSByZW1vdmVkLgorKyAqIElmIHRoaXMgcGFja2FnZSBpcyB1c2VkIGluIGEgcHJv ZHVjdCwgRXJpYyBZb3VuZyBzaG91bGQgYmUgZ2l2ZW4gYXR0cmlidXRpb24KKysgKiBhcyB0aGUg YXV0aG9yIG9mIHRoZSBwYXJ0cyBvZiB0aGUgbGlicmFyeSB1c2VkLgorKyAqIFRoaXMgY2FuIGJl IGluIHRoZSBmb3JtIG9mIGEgdGV4dHVhbCBtZXNzYWdlIGF0IHByb2dyYW0gc3RhcnR1cCBvcgor KyAqIGluIGRvY3VtZW50YXRpb24gKG9ubGluZSBvciB0ZXh0dWFsKSBwcm92aWRlZCB3aXRoIHRo ZSBwYWNrYWdlLgorKyAqIAorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBt ZXQ6CisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g dGhlCisrICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxz IG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKKysgKiAgICBtdXN0 IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6CisrICogICAgIlRoaXMgcHJv ZHVjdCBpbmNsdWRlcyBjcnlwdG9ncmFwaGljIHNvZnR3YXJlIHdyaXR0ZW4gYnkKKysgKiAgICAg RXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pIgorKyAqICAgIFRoZSB3b3JkICdjcnlwdG9n cmFwaGljJyBjYW4gYmUgbGVmdCBvdXQgaWYgdGhlIHJvdWluZXMgZnJvbSB0aGUgbGlicmFyeQor KyAqICAgIGJlaW5nIHVzZWQgYXJlIG5vdCBjcnlwdG9ncmFwaGljIHJlbGF0ZWQgOi0pLgorKyAq IDQuIElmIHlvdSBpbmNsdWRlIGFueSBXaW5kb3dzIHNwZWNpZmljIGNvZGUgKG9yIGEgZGVyaXZh dGl2ZSB0aGVyZW9mKSBmcm9tIAorKyAqICAgIHRoZSBhcHBzIGRpcmVjdG9yeSAoYXBwbGljYXRp b24gY29kZSkgeW91IG11c3QgaW5jbHVkZSBhbiBhY2tub3dsZWRnZW1lbnQ6CisrICogICAgIlRo aXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5IFRpbSBIdWRzb24gKHRqaEBj cnlwdHNvZnQuY29tKSIKKysgKiAKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEVS SUMgWU9VTkcgYGBBUyBJUycnIEFORAorKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKyAqIElNUExJRUQgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFCisrICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9S IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKysgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorKyAqIERB TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT VElUVVRFIEdPT0RTCisrICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5EIE9O IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKysg KiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg QVJJU0lORyBJTiBBTlkgV0FZCisrICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorKyAqIFNVQ0ggREFNQUdFLgor KyAqIAorKyAqIFRoZSBsaWNlbmNlIGFuZCBkaXN0cmlidXRpb24gdGVybXMgZm9yIGFueSBwdWJs aWNhbGx5IGF2YWlsYWJsZSB2ZXJzaW9uIG9yCisrICogZGVyaXZhdGl2ZSBvZiB0aGlzIGNvZGUg Y2Fubm90IGJlIGNoYW5nZWQuICBpLmUuIHRoaXMgY29kZSBjYW5ub3Qgc2ltcGx5IGJlCisrICog Y29waWVkIGFuZCBwdXQgdW5kZXIgYW5vdGhlciBkaXN0cmlidXRpb24gbGljZW5jZQorKyAqIFtp bmNsdWRpbmcgdGhlIEdOVSBQdWJsaWMgTGljZW5jZS5dCisrICovCisrCisrI2luY2x1ZGUgPHN0 ZGlvLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgor KyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysK Kytjb25zdCBFVlBfQ0lQSEVSICpGSVBTX2dldF9jaXBoZXJieW5pZChpbnQgbmlkKQorK3sKKysg ICAgc3dpdGNoIChuaWQpIHsKKysgICAgY2FzZSBOSURfYWVzXzEyOF9jYmM6CisrICAgICAgICBy ZXR1cm4gRVZQX2Flc18xMjhfY2JjKCk7CisrCisrICAgIGNhc2UgTklEX2Flc18xMjhfY2NtOgor KyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTI4X2NjbSgpOworKworKyAgICBjYXNlIE5JRF9hZXNf MTI4X2NmYjE6CisrICAgICAgICByZXR1cm4gRVZQX2Flc18xMjhfY2ZiMSgpOworKworKyAgICBj YXNlIE5JRF9hZXNfMTI4X2NmYjEyODoKKysgICAgICAgIHJldHVybiBFVlBfYWVzXzEyOF9jZmIx MjgoKTsKKysKKysgICAgY2FzZSBOSURfYWVzXzEyOF9jZmI4OgorKyAgICAgICAgcmV0dXJuIEVW UF9hZXNfMTI4X2NmYjgoKTsKKysKKysgICAgY2FzZSBOSURfYWVzXzEyOF9jdHI6CisrICAgICAg ICByZXR1cm4gRVZQX2Flc18xMjhfY3RyKCk7CisrCisrICAgIGNhc2UgTklEX2Flc18xMjhfZWNi OgorKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTI4X2VjYigpOworKworKyAgICBjYXNlIE5JRF9h ZXNfMTI4X2djbToKKysgICAgICAgIHJldHVybiBFVlBfYWVzXzEyOF9nY20oKTsKKysKKysgICAg Y2FzZSBOSURfYWVzXzEyOF9vZmIxMjg6CisrICAgICAgICByZXR1cm4gRVZQX2Flc18xMjhfb2Zi KCk7CisrCisrICAgIGNhc2UgTklEX2Flc18xMjhfeHRzOgorKyAgICAgICAgcmV0dXJuIEVWUF9h ZXNfMTI4X3h0cygpOworKworKyAgICBjYXNlIE5JRF9hZXNfMTkyX2NiYzoKKysgICAgICAgIHJl dHVybiBFVlBfYWVzXzE5Ml9jYmMoKTsKKysKKysgICAgY2FzZSBOSURfYWVzXzE5Ml9jY206Cisr ICAgICAgICByZXR1cm4gRVZQX2Flc18xOTJfY2NtKCk7CisrCisrICAgIGNhc2UgTklEX2Flc18x OTJfY2ZiMToKKysgICAgICAgIHJldHVybiBFVlBfYWVzXzE5Ml9jZmIxKCk7CisrCisrICAgIGNh c2UgTklEX2Flc18xOTJfY2ZiMTI4OgorKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTkyX2NmYjEy OCgpOworKworKyAgICBjYXNlIE5JRF9hZXNfMTkyX2NmYjg6CisrICAgICAgICByZXR1cm4gRVZQ X2Flc18xOTJfY2ZiOCgpOworKworKyAgICBjYXNlIE5JRF9hZXNfMTkyX2N0cjoKKysgICAgICAg IHJldHVybiBFVlBfYWVzXzE5Ml9jdHIoKTsKKysKKysgICAgY2FzZSBOSURfYWVzXzE5Ml9lY2I6 CisrICAgICAgICByZXR1cm4gRVZQX2Flc18xOTJfZWNiKCk7CisrCisrICAgIGNhc2UgTklEX2Fl c18xOTJfZ2NtOgorKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTkyX2djbSgpOworKworKyAgICBj YXNlIE5JRF9hZXNfMTkyX29mYjEyODoKKysgICAgICAgIHJldHVybiBFVlBfYWVzXzE5Ml9vZmIo KTsKKysKKysgICAgY2FzZSBOSURfYWVzXzI1Nl9jYmM6CisrICAgICAgICByZXR1cm4gRVZQX2Fl c18yNTZfY2JjKCk7CisrCisrICAgIGNhc2UgTklEX2Flc18yNTZfY2NtOgorKyAgICAgICAgcmV0 dXJuIEVWUF9hZXNfMjU2X2NjbSgpOworKworKyAgICBjYXNlIE5JRF9hZXNfMjU2X2NmYjE6Cisr ICAgICAgICByZXR1cm4gRVZQX2Flc18yNTZfY2ZiMSgpOworKworKyAgICBjYXNlIE5JRF9hZXNf MjU2X2NmYjEyODoKKysgICAgICAgIHJldHVybiBFVlBfYWVzXzI1Nl9jZmIxMjgoKTsKKysKKysg ICAgY2FzZSBOSURfYWVzXzI1Nl9jZmI4OgorKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMjU2X2Nm YjgoKTsKKysKKysgICAgY2FzZSBOSURfYWVzXzI1Nl9jdHI6CisrICAgICAgICByZXR1cm4gRVZQ X2Flc18yNTZfY3RyKCk7CisrCisrICAgIGNhc2UgTklEX2Flc18yNTZfZWNiOgorKyAgICAgICAg cmV0dXJuIEVWUF9hZXNfMjU2X2VjYigpOworKworKyAgICBjYXNlIE5JRF9hZXNfMjU2X2djbToK KysgICAgICAgIHJldHVybiBFVlBfYWVzXzI1Nl9nY20oKTsKKysKKysgICAgY2FzZSBOSURfYWVz XzI1Nl9vZmIxMjg6CisrICAgICAgICByZXR1cm4gRVZQX2Flc18yNTZfb2ZiKCk7CisrCisrICAg IGNhc2UgTklEX2Flc18yNTZfeHRzOgorKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMjU2X3h0cygp OworKworKyAgICBjYXNlIE5JRF9kZXNfZWRlX2VjYjoKKysgICAgICAgIHJldHVybiBFVlBfZGVz X2VkZSgpOworKworKyAgICBjYXNlIE5JRF9kZXNfZWRlM19lY2I6CisrICAgICAgICByZXR1cm4g RVZQX2Rlc19lZGUzKCk7CisrCisrICAgIGNhc2UgTklEX2Rlc19lZGUzX2NiYzoKKysgICAgICAg IHJldHVybiBFVlBfZGVzX2VkZTNfY2JjKCk7CisrCisrICAgIGNhc2UgTklEX2Rlc19lZGUzX2Nm YjE6CisrICAgICAgICByZXR1cm4gRVZQX2Rlc19lZGUzX2NmYjEoKTsKKysKKysgICAgY2FzZSBO SURfZGVzX2VkZTNfY2ZiNjQ6CisrICAgICAgICByZXR1cm4gRVZQX2Rlc19lZGUzX2NmYjY0KCk7 CisrCisrICAgIGNhc2UgTklEX2Rlc19lZGUzX2NmYjg6CisrICAgICAgICByZXR1cm4gRVZQX2Rl c19lZGUzX2NmYjgoKTsKKysKKysgICAgY2FzZSBOSURfZGVzX2VkZTNfb2ZiNjQ6CisrICAgICAg ICByZXR1cm4gRVZQX2Rlc19lZGUzX29mYigpOworKworKyAgICBjYXNlIE5JRF9kZXNfZWRlX2Ni YzoKKysgICAgICAgIHJldHVybiBFVlBfZGVzX2VkZV9jYmMoKTsKKysKKysgICAgY2FzZSBOSURf ZGVzX2VkZV9jZmI2NDoKKysgICAgICAgIHJldHVybiBFVlBfZGVzX2VkZV9jZmI2NCgpOworKwor KyAgICBjYXNlIE5JRF9kZXNfZWRlX29mYjY0OgorKyAgICAgICAgcmV0dXJuIEVWUF9kZXNfZWRl X29mYigpOworKworKyAgICBkZWZhdWx0OgorKyAgICAgICAgcmV0dXJuIE5VTEw7CisrCisrICAg IH0KKyt9CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfZXJyLmguZmlw cyBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfZXJyLmgKKy0tLSBvcGVuc3NsLTEuMS4w L2NyeXB0by9maXBzL2ZpcHNfZXJyLmguZmlwcwkyMDE2LTA5LTA4IDExOjM3OjM4Ljc0MTQ2MDA3 NCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19lcnIuaAkyMDE2LTA5 LTA4IDExOjM3OjM4Ljc0MTQ2MDA3NCArMDIwMAorQEAgLTAsMCArMSwxOTYgQEAKKysvKiBjcnlw dG8vZmlwc19lcnIuaCAqLworKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrICogQ29weXJpZ2h0IChjKSAxOTk5 LTIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysg KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo IG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0OgorKyAqCisrICogMS4gUmVk aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln aHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIuCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAq ICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0 aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcg bWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0 d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAi VGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQ cm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3 dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQi IGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3Jz ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQK KysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24s IHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3JlQE9wZW5TU0wub3JnLgorKyAqCisr ICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxs ZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5h bWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5T U0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0 c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoK KysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUg T3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0ICho dHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ REVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNT RUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg VEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW RU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJF IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lB TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisr ICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS VklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO VEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5Z IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysg KiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysg KgorKyAqIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBjcnlwdG9ncmFwaGljIHNvZnR3YXJlIHdyaXR0 ZW4gYnkgRXJpYyBZb3VuZworKyAqIChlYXlAY3J5cHRzb2Z0LmNvbSkuICBUaGlzIHByb2R1Y3Qg aW5jbHVkZXMgc29mdHdhcmUgd3JpdHRlbiBieSBUaW0KKysgKiBIdWRzb24gKHRqaEBjcnlwdHNv ZnQuY29tKS4KKysgKgorKyAqLworKworKy8qCisrICogTk9URTogdGhpcyBmaWxlIHdhcyBhdXRv IGdlbmVyYXRlZCBieSB0aGUgbWtlcnIucGwgc2NyaXB0OiBhbnkgY2hhbmdlcworKyAqIG1hZGUg dG8gaXQgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aGVuIHRoZSBzY3JpcHQgbmV4dCB1cGRhdGVzIHRo aXMgZmlsZSwKKysgKiBvbmx5IHJlYXNvbiBzdHJpbmdzIHdpbGwgYmUgcHJlc2VydmVkLgorKyAq LworKworKyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorKyNp bmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysKKysvKiBCRUdJTiBFUlJPUiBDT0RFUyAqLworKyNp Zm5kZWYgT1BFTlNTTF9OT19FUlIKKysKKysjIGRlZmluZSBFUlJfRlVOQyhmdW5jKSBFUlJfUEFD SyhFUlJfTElCX0ZJUFMsZnVuYywwKQorKyMgZGVmaW5lIEVSUl9SRUFTT04ocmVhc29uKSBFUlJf UEFDSyhFUlJfTElCX0ZJUFMsMCxyZWFzb24pCisrCisrc3RhdGljIEVSUl9TVFJJTkdfREFUQSBG SVBTX3N0cl9mdW5jdHNbXSA9IHsKKysgICAge0VSUl9GVU5DKEZJUFNfRl9ESF9CVUlMVElOX0dF TlBBUkFNUyksICJkaF9idWlsdGluX2dlbnBhcmFtcyJ9LAorKyAgICB7RVJSX0ZVTkMoRklQU19G X0RSQkdfUkVTRUVEKSwgImRyYmdfcmVzZWVkIn0sCisrICAgIHtFUlJfRlVOQyhGSVBTX0ZfRFNB X0JVSUxUSU5fUEFSQU1HRU4yKSwgImRzYV9idWlsdGluX3BhcmFtZ2VuMiJ9LAorKyAgICB7RVJS X0ZVTkMoRklQU19GX0RTQV9ET19TSUdOKSwgIkRTQV9kb19zaWduIn0sCisrICAgIHtFUlJfRlVO QyhGSVBTX0ZfRFNBX0RPX1ZFUklGWSksICJEU0FfZG9fdmVyaWZ5In0sCisrICAgIHtFUlJfRlVO QyhGSVBTX0ZfRUNESF9DT01QVVRFX0tFWSksICJFQ0RIX2NvbXB1dGVfa2V5In0sCisrICAgIHtF UlJfRlVOQyhGSVBTX0ZfRVZQX0NJUEhFUl9DVFhfTkVXKSwgIkVWUF9DSVBIRVJfQ1RYX25ldyJ9 LAorKyAgICB7RVJSX0ZVTkMoRklQU19GX0VWUF9DSVBIRVJfQ1RYX1JFU0VUKSwgIkVWUF9DSVBI RVJfQ1RYX3Jlc2V0In0sCisrICAgIHtFUlJfRlVOQyhGSVBTX0ZfRklQU19DSEVDS19EU0EpLCAi Zmlwc19jaGVja19kc2EifSwKKysgICAge0VSUl9GVU5DKEZJUFNfRl9GSVBTX0NIRUNLX0VDKSwg ImZpcHNfY2hlY2tfZWMifSwKKysgICAge0VSUl9GVU5DKEZJUFNfRl9GSVBTX0NIRUNLX1JTQSks ICJmaXBzX2NoZWNrX3JzYSJ9LAorKyAgICB7RVJSX0ZVTkMoRklQU19GX0ZJUFNfRFJCR19CWVRF UyksICJmaXBzX2RyYmdfYnl0ZXMifSwKKysgICAge0VSUl9GVU5DKEZJUFNfRl9GSVBTX0RSQkdf Q0hFQ0spLCAiZmlwc19kcmJnX2NoZWNrIn0sCisrICAgIHtFUlJfRlVOQyhGSVBTX0ZfRklQU19E UkJHX0NQUk5HX1RFU1QpLCAiZmlwc19kcmJnX2Nwcm5nX3Rlc3QifSwKKysgICAge0VSUl9GVU5D KEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0spLCAiZmlwc19kcmJnX2Vycm9yX2NoZWNrIn0s CisrICAgIHtFUlJfRlVOQyhGSVBTX0ZfRklQU19EUkJHX0dFTkVSQVRFKSwgIkZJUFNfZHJiZ19n ZW5lcmF0ZSJ9LAorKyAgICB7RVJSX0ZVTkMoRklQU19GX0ZJUFNfRFJCR19JTklUKSwgIkZJUFNf ZHJiZ19pbml0In0sCisrICAgIHtFUlJfRlVOQyhGSVBTX0ZfRklQU19EUkJHX0lOU1RBTlRJQVRF KSwgIkZJUFNfZHJiZ19pbnN0YW50aWF0ZSJ9LAorKyAgICB7RVJSX0ZVTkMoRklQU19GX0ZJUFNf RFJCR19ORVcpLCAiRklQU19kcmJnX25ldyJ9LAorKyAgICB7RVJSX0ZVTkMoRklQU19GX0ZJUFNf RFJCR19SRVNFRUQpLCAiRklQU19kcmJnX3Jlc2VlZCJ9LAorKyAgICB7RVJSX0ZVTkMoRklQU19G X0ZJUFNfRFJCR19TSU5HTEVfS0FUKSwgIkZJUFNfRFJCR19TSU5HTEVfS0FUIn0sCisrICAgIHtF UlJfRlVOQyhGSVBTX0ZfRklQU19HRVRfRU5UUk9QWSksICJmaXBzX2dldF9lbnRyb3B5In0sCisr ICAgIHtFUlJfRlVOQyhGSVBTX0ZfRklQU19NT0RVTEVfTU9ERV9TRVQpLCAiRklQU19tb2R1bGVf bW9kZV9zZXQifSwKKysgICAge0VSUl9GVU5DKEZJUFNfRl9GSVBTX1BLRVlfU0lHTkFUVVJFX1RF U1QpLCAiZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0In0sCisrICAgIHtFUlJfRlVOQyhGSVBTX0Zf RklQU19SQU5EX0JZVEVTKSwgIkZJUFNfcmFuZF9ieXRlcyJ9LAorKyAgICB7RVJSX0ZVTkMoRklQ U19GX0ZJUFNfUkFORF9TRUVEKSwgIkZJUFNfcmFuZF9zZWVkIn0sCisrICAgIHtFUlJfRlVOQyhG SVBTX0ZfRklQU19SQU5EX1NFVF9NRVRIT0QpLCAiRklQU19yYW5kX3NldF9tZXRob2QifSwKKysg ICAge0VSUl9GVU5DKEZJUFNfRl9GSVBTX1JBTkRfU1RBVFVTKSwgIkZJUFNfcmFuZF9zdGF0dXMi fSwKKysgICAge0VSUl9GVU5DKEZJUFNfRl9GSVBTX1JTQV9CVUlMVElOX0tFWUdFTiksICJmaXBz X3JzYV9idWlsdGluX2tleWdlbiJ9LAorKyAgICB7RVJSX0ZVTkMoRklQU19GX0ZJUFNfU0VMRlRF U1RfQUVTKSwgIkZJUFNfc2VsZnRlc3RfYWVzIn0sCisrICAgIHtFUlJfRlVOQyhGSVBTX0ZfRklQ U19TRUxGVEVTVF9BRVNfQ0NNKSwgIkZJUFNfc2VsZnRlc3RfYWVzX2NjbSJ9LAorKyAgICB7RVJS X0ZVTkMoRklQU19GX0ZJUFNfU0VMRlRFU1RfQUVTX0dDTSksICJGSVBTX3NlbGZ0ZXN0X2Flc19n Y20ifSwKKysgICAge0VSUl9GVU5DKEZJUFNfRl9GSVBTX1NFTEZURVNUX0FFU19YVFMpLCAiRklQ U19zZWxmdGVzdF9hZXNfeHRzIn0sCisrICAgIHtFUlJfRlVOQyhGSVBTX0ZfRklQU19TRUxGVEVT VF9DTUFDKSwgIkZJUFNfc2VsZnRlc3RfY21hYyJ9LAorKyAgICB7RVJSX0ZVTkMoRklQU19GX0ZJ UFNfU0VMRlRFU1RfREVTKSwgIkZJUFNfc2VsZnRlc3RfZGVzIn0sCisrICAgIHtFUlJfRlVOQyhG SVBTX0ZfRklQU19TRUxGVEVTVF9EU0EpLCAiRklQU19zZWxmdGVzdF9kc2EifSwKKysgICAge0VS Ul9GVU5DKEZJUFNfRl9GSVBTX1NFTEZURVNUX0VDRFNBKSwgIkZJUFNfc2VsZnRlc3RfZWNkc2Ei fSwKKysgICAge0VSUl9GVU5DKEZJUFNfRl9GSVBTX1NFTEZURVNUX0hNQUMpLCAiRklQU19zZWxm dGVzdF9obWFjIn0sCisrICAgIHtFUlJfRlVOQyhGSVBTX0ZfRklQU19TRUxGVEVTVF9TSEExKSwg IkZJUFNfc2VsZnRlc3Rfc2hhMSJ9LAorKyAgICB7RVJSX0ZVTkMoRklQU19GX0ZJUFNfU0VMRlRF U1RfU0hBMiksICJGSVBTX3NlbGZ0ZXN0X3NoYTIifSwKKysgICAge0VSUl9GVU5DKEZJUFNfRl9P U1NMX0VDRFNBX1NJR05fU0lHKSwgIm9zc2xfZWNkc2Ffc2lnbl9zaWcifSwKKysgICAge0VSUl9G VU5DKEZJUFNfRl9PU1NMX0VDRFNBX1ZFUklGWV9TSUcpLCAib3NzbF9lY2RzYV92ZXJpZnlfc2ln In0sCisrICAgIHtFUlJfRlVOQyhGSVBTX0ZfUlNBX0JVSUxUSU5fS0VZR0VOKSwgInJzYV9idWls dGluX2tleWdlbiJ9LAorKyAgICB7RVJSX0ZVTkMoRklQU19GX1JTQV9PU1NMX0lOSVQpLCAicnNh X29zc2xfaW5pdCJ9LAorKyAgICB7RVJSX0ZVTkMoRklQU19GX1JTQV9PU1NMX1BSSVZBVEVfREVD UllQVCksICJyc2Ffb3NzbF9wcml2YXRlX2RlY3J5cHQifSwKKysgICAge0VSUl9GVU5DKEZJUFNf Rl9SU0FfT1NTTF9QUklWQVRFX0VOQ1JZUFQpLCAicnNhX29zc2xfcHJpdmF0ZV9lbmNyeXB0In0s CisrICAgIHtFUlJfRlVOQyhGSVBTX0ZfUlNBX09TU0xfUFVCTElDX0RFQ1JZUFQpLCAicnNhX29z c2xfcHVibGljX2RlY3J5cHQifSwKKysgICAge0VSUl9GVU5DKEZJUFNfRl9SU0FfT1NTTF9QVUJM SUNfRU5DUllQVCksICJyc2Ffb3NzbF9wdWJsaWNfZW5jcnlwdCJ9LAorKyAgICB7MCwgTlVMTH0K Kyt9OworKworK3N0YXRpYyBFUlJfU1RSSU5HX0RBVEEgRklQU19zdHJfcmVhc29uc1tdID0gewor KyAgICB7RVJSX1JFQVNPTihGSVBTX1JfQURESVRJT05BTF9JTlBVVF9FUlJPUl9VTkRFVEVDVEVE KSwKKysgICAgICJhZGRpdGlvbmFsIGlucHV0IGVycm9yIHVuZGV0ZWN0ZWQifSwKKysgICAge0VS Ul9SRUFTT04oRklQU19SX0FERElUSU9OQUxfSU5QVVRfVE9PX0xPTkcpLAorKyAgICAgImFkZGl0 aW9uYWwgaW5wdXQgdG9vIGxvbmcifSwKKysgICAge0VSUl9SRUFTT04oRklQU19SX0FMUkVBRFlf SU5TVEFOVElBVEVEKSwgImFscmVhZHkgaW5zdGFudGlhdGVkIn0sCisrICAgIHtFUlJfUkVBU09O KEZJUFNfUl9EUkJHX05PVF9JTklUSUFMSVNFRCksICJkcmJnIG5vdCBpbml0aWFsaXNlZCJ9LAor KyAgICB7RVJSX1JFQVNPTihGSVBTX1JfRFJCR19TVFVDSyksICJkcmJnIHN0dWNrIn0sCisrICAg IHtFUlJfUkVBU09OKEZJUFNfUl9FTlRST1BZX0VSUk9SX1VOREVURUNURUQpLCAiZW50cm9weSBl cnJvciB1bmRldGVjdGVkIn0sCisrICAgIHtFUlJfUkVBU09OKEZJUFNfUl9FTlRST1BZX05PVF9S RVFVRVNURURfRk9SX1JFU0VFRCksCisrICAgICAiZW50cm9weSBub3QgcmVxdWVzdGVkIGZvciBy ZXNlZWQifSwKKysgICAge0VSUl9SRUFTT04oRklQU19SX0VOVFJPUFlfU09VUkNFX1NUVUNLKSwg ImVudHJvcHkgc291cmNlIHN0dWNrIn0sCisrICAgIHtFUlJfUkVBU09OKEZJUFNfUl9FUlJPUl9J TklUSUFMSVNJTkdfRFJCRyksICJlcnJvciBpbml0aWFsaXNpbmcgZHJiZyJ9LAorKyAgICB7RVJS X1JFQVNPTihGSVBTX1JfRVJST1JfSU5TVEFOVElBVElOR19EUkJHKSwgImVycm9yIGluc3RhbnRp YXRpbmcgZHJiZyJ9LAorKyAgICB7RVJSX1JFQVNPTihGSVBTX1JfRVJST1JfUkVUUklFVklOR19B RERJVElPTkFMX0lOUFVUKSwKKysgICAgICJlcnJvciByZXRyaWV2aW5nIGFkZGl0aW9uYWwgaW5w dXQifSwKKysgICAge0VSUl9SRUFTT04oRklQU19SX0VSUk9SX1JFVFJJRVZJTkdfRU5UUk9QWSks ICJlcnJvciByZXRyaWV2aW5nIGVudHJvcHkifSwKKysgICAge0VSUl9SRUFTT04oRklQU19SX0VS Uk9SX1JFVFJJRVZJTkdfTk9OQ0UpLCAiZXJyb3IgcmV0cmlldmluZyBub25jZSJ9LAorKyAgICB7 RVJSX1JFQVNPTihGSVBTX1JfRklOR0VSUFJJTlRfRE9FU19OT1RfTUFUQ0gpLAorKyAgICAgImZp bmdlcnByaW50IGRvZXMgbm90IG1hdGNoIn0sCisrICAgIHtFUlJfUkVBU09OKEZJUFNfUl9GSVBT X01PREVfQUxSRUFEWV9TRVQpLCAiZmlwcyBtb2RlIGFscmVhZHkgc2V0In0sCisrICAgIHtFUlJf UkVBU09OKEZJUFNfUl9GSVBTX1NFTEZURVNUX0ZBSUxFRCksICJmaXBzIHNlbGZ0ZXN0IGZhaWxl ZCJ9LAorKyAgICB7RVJSX1JFQVNPTihGSVBTX1JfRlVOQ1RJT05fRVJST1IpLCAiZnVuY3Rpb24g ZXJyb3IifSwKKysgICAge0VSUl9SRUFTT04oRklQU19SX0dFTkVSQVRFX0VSUk9SKSwgImdlbmVy YXRlIGVycm9yIn0sCisrICAgIHtFUlJfUkVBU09OKEZJUFNfUl9HRU5FUkFURV9FUlJPUl9VTkRF VEVDVEVEKSwKKysgICAgICJnZW5lcmF0ZSBlcnJvciB1bmRldGVjdGVkIn0sCisrICAgIHtFUlJf UkVBU09OKEZJUFNfUl9JTlNUQU5USUFURV9FUlJPUiksICJpbnN0YW50aWF0ZSBlcnJvciJ9LAor KyAgICB7RVJSX1JFQVNPTihGSVBTX1JfSU5URVJOQUxfRVJST1IpLCAiaW50ZXJuYWwgZXJyb3Ii fSwKKysgICAge0VSUl9SRUFTT04oRklQU19SX0lOVkFMSURfS0VZX0xFTkdUSCksICJpbnZhbGlk IGtleSBsZW5ndGgifSwKKysgICAge0VSUl9SRUFTT04oRklQU19SX0lOX0VSUk9SX1NUQVRFKSwg ImluIGVycm9yIHN0YXRlIn0sCisrICAgIHtFUlJfUkVBU09OKEZJUFNfUl9LRVlfVE9PX1NIT1JU KSwgImtleSB0b28gc2hvcnQifSwKKysgICAge0VSUl9SRUFTT04oRklQU19SX05PTkNFX0VSUk9S X1VOREVURUNURUQpLCAibm9uY2UgZXJyb3IgdW5kZXRlY3RlZCJ9LAorKyAgICB7RVJSX1JFQVNP TihGSVBTX1JfTk9OX0ZJUFNfTUVUSE9EKSwgIm5vbiBmaXBzIG1ldGhvZCJ9LAorKyAgICB7RVJS X1JFQVNPTihGSVBTX1JfTk9QUl9URVNUMV9GQUlMVVJFKSwgIm5vcHIgdGVzdDEgZmFpbHVyZSJ9 LAorKyAgICB7RVJSX1JFQVNPTihGSVBTX1JfTk9QUl9URVNUMl9GQUlMVVJFKSwgIm5vcHIgdGVz dDIgZmFpbHVyZSJ9LAorKyAgICB7RVJSX1JFQVNPTihGSVBTX1JfTk9UX0lOU1RBTlRJQVRFRCks ICJub3QgaW5zdGFudGlhdGVkIn0sCisrICAgIHtFUlJfUkVBU09OKEZJUFNfUl9QQUlSV0lTRV9U RVNUX0ZBSUxFRCksICJwYWlyd2lzZSB0ZXN0IGZhaWxlZCJ9LAorKyAgICB7RVJSX1JFQVNPTihG SVBTX1JfUEVSU09OQUxJU0FUSU9OX0VSUk9SX1VOREVURUNURUQpLAorKyAgICAgInBlcnNvbmFs aXNhdGlvbiBlcnJvciB1bmRldGVjdGVkIn0sCisrICAgIHtFUlJfUkVBU09OKEZJUFNfUl9QRVJT T05BTElTQVRJT05fU1RSSU5HX1RPT19MT05HKSwKKysgICAgICJwZXJzb25hbGlzYXRpb24gc3Ry aW5nIHRvbyBsb25nIn0sCisrICAgIHtFUlJfUkVBU09OKEZJUFNfUl9QUl9URVNUMV9GQUlMVVJF KSwgInByIHRlc3QxIGZhaWx1cmUifSwKKysgICAge0VSUl9SRUFTT04oRklQU19SX1BSX1RFU1Qy X0ZBSUxVUkUpLCAicHIgdGVzdDIgZmFpbHVyZSJ9LAorKyAgICB7RVJSX1JFQVNPTihGSVBTX1Jf UkVRVUVTVF9MRU5HVEhfRVJST1JfVU5ERVRFQ1RFRCksCisrICAgICAicmVxdWVzdCBsZW5ndGgg ZXJyb3IgdW5kZXRlY3RlZCJ9LAorKyAgICB7RVJSX1JFQVNPTihGSVBTX1JfUkVRVUVTVF9UT09f TEFSR0VfRk9SX0RSQkcpLAorKyAgICAgInJlcXVlc3QgdG9vIGxhcmdlIGZvciBkcmJnIn0sCisr ICAgIHtFUlJfUkVBU09OKEZJUFNfUl9SRVNFRURfQ09VTlRFUl9FUlJPUiksICJyZXNlZWQgY291 bnRlciBlcnJvciJ9LAorKyAgICB7RVJSX1JFQVNPTihGSVBTX1JfUkVTRUVEX0VSUk9SKSwgInJl c2VlZCBlcnJvciJ9LAorKyAgICB7RVJSX1JFQVNPTihGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKSwg InNlbGZ0ZXN0IGZhaWxlZCJ9LAorKyAgICB7RVJSX1JFQVNPTihGSVBTX1JfU0VMRlRFU1RfRkFJ TFVSRSksICJzZWxmdGVzdCBmYWlsdXJlIn0sCisrICAgIHtFUlJfUkVBU09OKEZJUFNfUl9URVNU X0ZBSUxVUkUpLCAidGVzdCBmYWlsdXJlIn0sCisrICAgIHtFUlJfUkVBU09OKEZJUFNfUl9VTklO U1RBTlRJQVRFX0VSUk9SKSwgInVuaW5zdGFudGlhdGUgZXJyb3IifSwKKysgICAge0VSUl9SRUFT T04oRklQU19SX1VOSU5TVEFOVElBVEVfWkVST0lTRV9FUlJPUiksCisrICAgICAidW5pbnN0YW50 aWF0ZSB6ZXJvaXNlIGVycm9yIn0sCisrICAgIHtFUlJfUkVBU09OKEZJUFNfUl9VTlNVUFBPUlRF RF9EUkJHX1RZUEUpLCAidW5zdXBwb3J0ZWQgZHJiZyB0eXBlIn0sCisrICAgIHtFUlJfUkVBU09O KEZJUFNfUl9VTlNVUFBPUlRFRF9QTEFURk9STSksICJ1bnN1cHBvcnRlZCBwbGF0Zm9ybSJ9LAor KyAgICB7MCwgTlVMTH0KKyt9OworKworKyNlbmRpZgorKworK2ludCBFUlJfbG9hZF9GSVBTX3N0 cmluZ3Modm9pZCkKKyt7CisrI2lmbmRlZiBPUEVOU1NMX05PX0VSUgorKworKyAgICBpZiAoRVJS X2Z1bmNfZXJyb3Jfc3RyaW5nKEZJUFNfc3RyX2Z1bmN0c1swXS5lcnJvcikgPT0gTlVMTCkgewor KyAgICAgICAgRVJSX2xvYWRfc3RyaW5ncygwLCBGSVBTX3N0cl9mdW5jdHMpOworKyAgICAgICAg RVJSX2xvYWRfc3RyaW5ncygwLCBGSVBTX3N0cl9yZWFzb25zKTsKKysgICAgfQorKyNlbmRpZgor KyAgICByZXR1cm4gMTsKKyt9CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2Zp cHNfZXJzLmMuZmlwcyBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfZXJzLmMKKy0tLSBv cGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfZXJzLmMuZmlwcwkyMDE2LTA5LTA4IDExOjM3 OjM4Ljc0MTQ2MDA3NCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19l cnMuYwkyMDE2LTA5LTA4IDExOjM3OjM4Ljc0MTQ2MDA3NCArMDIwMAorQEAgLTAsMCArMSw3IEBA CisrI2luY2x1ZGUgPG9wZW5zc2wvb3BlbnNzbGNvbmYuaD4KKysKKysjaWZkZWYgT1BFTlNTTF9G SVBTCisrIyBpbmNsdWRlICJmaXBzX2Vyci5oIgorKyNlbHNlCisrc3RhdGljIHZvaWQgKmR1bW15 ID0gJmR1bW15OworKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9m aXBzX2htYWNfc2VsZnRlc3QuYy5maXBzIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19o bWFjX3NlbGZ0ZXN0LmMKKy0tLSBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfaG1hY19z ZWxmdGVzdC5jLmZpcHMJMjAxNi0wOS0wOCAxMTozNzozOC43NDE0NjAwNzQgKzAyMDAKKysrKyBv cGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfaG1hY19zZWxmdGVzdC5jCTIwMTYtMDktMDgg MTE6Mzc6MzguNzQxNDYwMDc0ICswMjAwCitAQCAtMCwwICsxLDEzNCBAQAorKy8qID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CisrICogQ29weXJpZ2h0IChjKSAyMDA1IFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmln aHRzIHJlc2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUg cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJl IG1ldDoKKysgKgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKysgKgorKyAqIDIuIFJlZGlz dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp Z2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv d2luZyBkaXNjbGFpbWVyIGluCisrICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4KKysgKgor KyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1 c2Ugb2YgdGhpcworKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFj a25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2 ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVu U1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiA0LiBUaGUg bmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJl IHVzZWQgdG8KKysgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t IHRoaXMgc29mdHdhcmUgd2l0aG91dAorKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4g Rm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKKysgKiAgICBvcGVuc3NsLWNv cmVAb3BlbnNzbC5vcmcuCisrICoKKysgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBz b2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKKysgKiAgICBub3IgbWF5ICJPcGVu U1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisrICogICAg cGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgorKyAqCisrICogNi4gUmVkaXN0cmli dXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwor KyAqICAgIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29m dHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGlu IHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKysgKgorKyAq IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElT JycgQU5EIEFOWQorKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFS RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgor KyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg SU5DSURFTlRBTCwKKysgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN QUdFUyAoSU5DTFVESU5HLCBCVVQKKysgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VEIEFO RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKysgKiBT VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ U0UpCisrICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB UkUsIEVWRU4gSUYgQURWSVNFRAorKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH RS4KKysgKgorKyAqLworKworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8b3BlbnNz bC9lcnIuaD4KKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMu aD4KKysjZW5kaWYKKysjaW5jbHVkZSA8b3BlbnNzbC9obWFjLmg+CisrCisrI2lmZGVmIE9QRU5T U0xfRklQUworK3R5cGVkZWYgc3RydWN0IHsKKysgICAgY29uc3QgRVZQX01EICooKmFsZykgKHZv aWQpOworKyAgICBjb25zdCBjaGFyICprZXksICppdjsKKysgICAgdW5zaWduZWQgY2hhciBrYXZh bFtFVlBfTUFYX01EX1NJWkVdOworK30gSE1BQ19LQVQ7CisrCisrc3RhdGljIGNvbnN0IEhNQUNf S0FUIHZlY3RvcltdID0geworKyAgICB7RVZQX3NoYTEsCisrICAgICAvKiBmcm9tIGh0dHA6Ly9j c3JjLm5pc3QuZ292L3B1YmxpY2F0aW9ucy9maXBzL2ZpcHMxOTgvZmlwcy0xOThhLnBkZiAqLwor KyAgICAgIjAxMjM0NTY3ODk6Ozw9Pj9AQUJDIiwKKysgICAgICJTYW1wbGUgIzIiLAorKyAgICAg ezB4MDksIDB4MjIsIDB4ZDMsIDB4NDAsIDB4NWYsIDB4YWEsIDB4M2QsIDB4MTksCisrICAgICAg MHg0ZiwgMHg4MiwgMHhhNCwgMHg1OCwgMHgzMCwgMHg3MywgMHg3ZCwgMHg1YywKKysgICAgICAw eGM2LCAweGM3LCAweDVkLCAweDI0fQorKyAgICAgfSwKKysgICAge0VWUF9zaGEyMjQsCisrICAg ICAvKiBqdXN0IGtlZXAgZXh0ZW5kaW5nIHRoZSBhYm92ZS4uLiAqLworKyAgICAgIjAxMjM0NTY3 ODk6Ozw9Pj9AQUJDIiwKKysgICAgICJTYW1wbGUgIzIiLAorKyAgICAgezB4ZGQsIDB4ZWYsIDB4 MGEsIDB4NDAsIDB4Y2IsIDB4N2QsIDB4NTAsIDB4ZmIsCisrICAgICAgMHg2ZSwgMHhlNiwgMHhj ZSwgMHhhMSwgMHgyMCwgMHhiYSwgMHgyNiwgMHhhYSwKKysgICAgICAweDA4LCAweGYzLCAweDA3 LCAweDc1LCAweDg3LCAweGI4LCAweGFkLCAweDFiLAorKyAgICAgIDB4OGMsIDB4OGQsIDB4MTIs IDB4Yzd9CisrICAgICB9LAorKyAgICB7RVZQX3NoYTI1NiwKKysgICAgICIwMTIzNDU2Nzg5Ojs8 PT4/QEFCQyIsCisrICAgICAiU2FtcGxlICMyIiwKKysgICAgIHsweGI4LCAweGYyLCAweDBkLCAw eGI1LCAweDQxLCAweGVhLCAweDQzLCAweDA5LAorKyAgICAgIDB4Y2EsIDB4NGUsIDB4YTksIDB4 MzgsIDB4MGMsIDB4ZDAsIDB4ZTgsIDB4MzQsCisrICAgICAgMHhmNywgMHgxZiwgMHhiZSwgMHg5 MSwgMHg3NCwgMHhhMiwgMHg2MSwgMHgzOCwKKysgICAgICAweDBkLCAweGMxLCAweDdlLCAweGFl LCAweDZhLCAweDM0LCAweDUxLCAweGQ5fQorKyAgICAgfSwKKysgICAge0VWUF9zaGEzODQsCisr ICAgICAiMDEyMzQ1Njc4OTo7PD0+P0BBQkMiLAorKyAgICAgIlNhbXBsZSAjMiIsCisrICAgICB7 MHgwOCwgMHhiYywgMHhiMCwgMHhkYSwgMHg0OSwgMHgxZSwgMHg4NywgMHhhZCwKKysgICAgICAw eDlhLCAweDFkLCAweDZhLCAweGNlLCAweDIzLCAweGM1LCAweDBiLCAweGY2LAorKyAgICAgIDB4 YjcsIDB4MTgsIDB4MDYsIDB4YTUsIDB4NzcsIDB4Y2QsIDB4NDksIDB4MDQsCisrICAgICAgMHg4 OSwgMHhmMSwgMHhlNiwgMHgyMywgMHg0NCwgMHg1MSwgMHg1MSwgMHg5ZiwKKysgICAgICAweDg1 LCAweDU2LCAweDgwLCAweDc5LCAweDBjLCAweGJkLCAweDRkLCAweDUwLAorKyAgICAgIDB4YTQs IDB4NWYsIDB4MjksIDB4ZTMsIDB4OTMsIDB4ZjAsIDB4ZTgsIDB4N2Z9CisrICAgICB9LAorKyAg ICB7RVZQX3NoYTUxMiwKKysgICAgICIwMTIzNDU2Nzg5Ojs8PT4/QEFCQyIsCisrICAgICAiU2Ft cGxlICMyIiwKKysgICAgIHsweDgwLCAweDlkLCAweDQ0LCAweDA1LCAweDdjLCAweDViLCAweDk1 LCAweDQxLAorKyAgICAgIDB4MDUsIDB4YmQsIDB4MDQsIDB4MTMsIDB4MTYsIDB4ZGIsIDB4MGYs IDB4YWMsCisrICAgICAgMHg0NCwgMHhkNSwgMHhhNCwgMHhkNSwgMHhkMCwgMHg4OSwgMHgyYiwg MHhkMCwKKysgICAgICAweDRlLCAweDg2LCAweDY0LCAweDEyLCAweGMwLCAweDkwLCAweDc3LCAw eDY4LAorKyAgICAgIDB4ZjEsIDB4ODcsIDB4YjcsIDB4N2MsIDB4NGYsIDB4YWUsIDB4MmMsIDB4 MmYsCisrICAgICAgMHgyMSwgMHhhNSwgMHhiNSwgMHg2NSwgMHg5YSwgMHg0ZiwgMHg0YiwgMHhh NywKKysgICAgICAweDQ3LCAweDAyLCAweGEzLCAweGRlLCAweDliLCAweDUxLCAweGYxLCAweDQ1 LAorKyAgICAgIDB4YmQsIDB4NGYsIDB4MjUsIDB4MjcsIDB4NDIsIDB4OTgsIDB4OTksIDB4MDV9 CisrICAgICB9LAorK307CisrCisraW50IEZJUFNfc2VsZnRlc3RfaG1hYygpCisreworKyAgICBp bnQgbjsKKysgICAgdW5zaWduZWQgaW50IG91dGxlbjsKKysgICAgdW5zaWduZWQgY2hhciBvdXRb RVZQX01BWF9NRF9TSVpFXTsKKysgICAgY29uc3QgRVZQX01EICptZDsKKysgICAgY29uc3QgSE1B Q19LQVQgKnQ7CisrCisrICAgIGZvciAobiA9IDAsIHQgPSB2ZWN0b3I7IG4gPCBzaXplb2YodmVj dG9yKSAvIHNpemVvZih2ZWN0b3JbMF0pOyBuKyssIHQrKykgeworKyAgICAgICAgbWQgPSAoKnQt PmFsZykgKCk7CisrICAgICAgICBITUFDKG1kLCB0LT5rZXksIHN0cmxlbih0LT5rZXkpLAorKyAg ICAgICAgICAgICAoY29uc3QgdW5zaWduZWQgY2hhciAqKXQtPml2LCBzdHJsZW4odC0+aXYpLCBv dXQsICZvdXRsZW4pOworKworKyAgICAgICAgaWYgKG1lbWNtcChvdXQsIHQtPmthdmFsLCBvdXRs ZW4pKSB7CisrICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19TRUxGVEVTVF9ITUFDLCBG SVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAg IH0KKysgICAgfQorKyAgICByZXR1cm4gMTsKKyt9CisrI2VuZGlmCitkaWZmIC11cCBvcGVuc3Ns LTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfbG9jbC5oLmZpcHMgb3BlbnNzbC0xLjEuMC9jcnlwdG8v Zmlwcy9maXBzX2xvY2wuaAorLS0tIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19sb2Ns LmguZmlwcwkyMDE2LTA5LTA4IDExOjM3OjM4Ljc0MjQ2MDA5NiArMDIwMAorKysrIG9wZW5zc2wt MS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19sb2NsLmgJMjAxNi0wOS0wOCAxMTozNzozOC43NDI0NjAw OTYgKzAyMDAKK0BAIC0wLDAgKzEsNzEgQEAKKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdo dCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysg KgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs IHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAx LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv cHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp bgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk ZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0 aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAg ICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysg KiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3Bl blNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0 cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRv b2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAg ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdp dGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1p c3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgor KyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBi ZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRo ZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhl IE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9y bSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRn bWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBi eSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29s a2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElT IFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBF WFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF RCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO IE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVU T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICog U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg QlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg T1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO RVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwg T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcg SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT RUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysgKi8KKysK KysjaWZkZWYgT1BFTlNTTF9GSVBTCisrCisrIyBpZmRlZiAgX19jcGx1c3BsdXMKKytleHRlcm4g IkMiIHsKKysjIGVuZGlmCisrCisrIyBkZWZpbmUgRklQU19NQVhfQ0lQSEVSX1RFU1RfU0laRSAg ICAgICAzMgorKyMgZGVmaW5lIGZpcHNfbG9hZF9rZXlfY29tcG9uZW50KGNvbXAsIHByZSkgXAor KyAgICAgICAgY29tcCA9IEJOX2JpbjJibihwcmUjI18jI2NvbXAsIHNpemVvZihwcmUjI18jI2Nv bXApLCBOVUxMKTsgXAorKyAgICAgICAgaWYgKCFjb21wKSBcCisrICAgICAgICAgICAgICAgIGdv dG8gZXJyCisrCisrIyBkZWZpbmUgZmlwc19wb3N0X3N0YXJ0ZWQoaWQsIHN1YmlkLCBleCkgMQor KyMgZGVmaW5lIGZpcHNfcG9zdF9zdWNjZXNzKGlkLCBzdWJpZCwgZXgpIDEKKysjIGRlZmluZSBm aXBzX3Bvc3RfZmFpbGVkKGlkLCBzdWJpZCwgZXgpIDEKKysjIGRlZmluZSBmaXBzX3Bvc3RfY29y cnVwdChpZCwgc3ViaWQsIGV4KSAxCisrIyBkZWZpbmUgZmlwc19wb3N0X3N0YXR1cygpIDEKKysK KysjIGlmZGVmICBfX2NwbHVzcGx1cworK30KKysjIGVuZGlmCisrI2VuZGlmCitkaWZmIC11cCBv cGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfbWQuYy5maXBzIG9wZW5zc2wtMS4xLjAvY3J5 cHRvL2ZpcHMvZmlwc19tZC5jCistLS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9maXBzX21k LmMuZmlwcwkyMDE2LTA5LTA4IDExOjM3OjM4Ljc0MjQ2MDA5NiArMDIwMAorKysrIG9wZW5zc2wt MS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19tZC5jCTIwMTYtMDktMDggMTE6Mzc6MzguNzQyNDYwMDk2 ICswMjAwCitAQCAtMCwwICsxLDE0NCBAQAorKy8qIGZpcHMvZXZwL2ZpcHNfbWQuYyAqLworKy8q IENvcHlyaWdodCAoQykgMTk5NS0xOTk4IEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKQor KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBUaGlzIHBhY2thZ2UgaXMgYW4gU1NM IGltcGxlbWVudGF0aW9uIHdyaXR0ZW4KKysgKiBieSBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0 LmNvbSkuCisrICogVGhlIGltcGxlbWVudGF0aW9uIHdhcyB3cml0dGVuIHNvIGFzIHRvIGNvbmZv cm0gd2l0aCBOZXRzY2FwZXMgU1NMLgorKyAqIAorKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIGZv ciBjb21tZXJjaWFsIGFuZCBub24tY29tbWVyY2lhbCB1c2UgYXMgbG9uZyBhcworKyAqIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgYWhlYXJlZCB0by4gIFRoZSBmb2xsb3dpbmcgY29uZGl0 aW9ucworKyAqIGFwcGx5IHRvIGFsbCBjb2RlIGZvdW5kIGluIHRoaXMgZGlzdHJpYnV0aW9uLCBi ZSBpdCB0aGUgUkM0LCBSU0EsCisrICogbGhhc2gsIERFUywgZXRjLiwgY29kZTsgbm90IGp1c3Qg dGhlIFNTTCBjb2RlLiAgVGhlIFNTTCBkb2N1bWVudGF0aW9uCisrICogaW5jbHVkZWQgd2l0aCB0 aGlzIGRpc3RyaWJ1dGlvbiBpcyBjb3ZlcmVkIGJ5IHRoZSBzYW1lIGNvcHlyaWdodCB0ZXJtcwor KyAqIGV4Y2VwdCB0aGF0IHRoZSBob2xkZXIgaXMgVGltIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5j b20pLgorKyAqIAorKyAqIENvcHlyaWdodCByZW1haW5zIEVyaWMgWW91bmcncywgYW5kIGFzIHN1 Y2ggYW55IENvcHlyaWdodCBub3RpY2VzIGluCisrICogdGhlIGNvZGUgYXJlIG5vdCB0byBiZSBy ZW1vdmVkLgorKyAqIElmIHRoaXMgcGFja2FnZSBpcyB1c2VkIGluIGEgcHJvZHVjdCwgRXJpYyBZ b3VuZyBzaG91bGQgYmUgZ2l2ZW4gYXR0cmlidXRpb24KKysgKiBhcyB0aGUgYXV0aG9yIG9mIHRo ZSBwYXJ0cyBvZiB0aGUgbGlicmFyeSB1c2VkLgorKyAqIFRoaXMgY2FuIGJlIGluIHRoZSBmb3Jt IG9mIGEgdGV4dHVhbCBtZXNzYWdlIGF0IHByb2dyYW0gc3RhcnR1cCBvcgorKyAqIGluIGRvY3Vt ZW50YXRpb24gKG9ubGluZSBvciB0ZXh0dWFsKSBwcm92aWRlZCB3aXRoIHRoZSBwYWNrYWdlLgor KyAqIAorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y bXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92 aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICogMS4g UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBjb3B5cmlnaHQK KysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIuCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisrICogICAg ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp c3RyaWJ1dGlvbi4KKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcg ZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKKysgKiAgICBtdXN0IGRpc3BsYXkgdGhl IGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRl cyBjcnlwdG9ncmFwaGljIHNvZnR3YXJlIHdyaXR0ZW4gYnkKKysgKiAgICAgRXJpYyBZb3VuZyAo ZWF5QGNyeXB0c29mdC5jb20pIgorKyAqICAgIFRoZSB3b3JkICdjcnlwdG9ncmFwaGljJyBjYW4g YmUgbGVmdCBvdXQgaWYgdGhlIHJvdWluZXMgZnJvbSB0aGUgbGlicmFyeQorKyAqICAgIGJlaW5n IHVzZWQgYXJlIG5vdCBjcnlwdG9ncmFwaGljIHJlbGF0ZWQgOi0pLgorKyAqIDQuIElmIHlvdSBp bmNsdWRlIGFueSBXaW5kb3dzIHNwZWNpZmljIGNvZGUgKG9yIGEgZGVyaXZhdGl2ZSB0aGVyZW9m KSBmcm9tIAorKyAqICAgIHRoZSBhcHBzIGRpcmVjdG9yeSAoYXBwbGljYXRpb24gY29kZSkgeW91 IG11c3QgaW5jbHVkZSBhbiBhY2tub3dsZWRnZW1lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBp bmNsdWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5IFRpbSBIdWRzb24gKHRqaEBjcnlwdHNvZnQuY29t KSIKKysgKiAKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEVSSUMgWU9VTkcgYGBB UyBJUycnIEFORAorKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisrICog QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJV VE9SUyBCRSBMSUFCTEUKKysgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorKyAqIERBTUFHRVMgKElOQ0xV RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT CisrICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ TkVTUyBJTlRFUlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKysgKiBMSUFCSUxJVFks IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB TlkgV0FZCisrICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorKyAqIFNVQ0ggREFNQUdFLgorKyAqIAorKyAqIFRo ZSBsaWNlbmNlIGFuZCBkaXN0cmlidXRpb24gdGVybXMgZm9yIGFueSBwdWJsaWNhbGx5IGF2YWls YWJsZSB2ZXJzaW9uIG9yCisrICogZGVyaXZhdGl2ZSBvZiB0aGlzIGNvZGUgY2Fubm90IGJlIGNo YW5nZWQuICBpLmUuIHRoaXMgY29kZSBjYW5ub3Qgc2ltcGx5IGJlCisrICogY29waWVkIGFuZCBw dXQgdW5kZXIgYW5vdGhlciBkaXN0cmlidXRpb24gbGljZW5jZQorKyAqIFtpbmNsdWRpbmcgdGhl IEdOVSBQdWJsaWMgTGljZW5jZS5dCisrICovCisrLyogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmln aHQgKGMpIDE5OTgtMjAwMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZl ZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoK KysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi b3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg cHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwg YWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMK KysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVu dDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0 aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0 LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVu U1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisr ICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3 YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVu IHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wu b3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5 IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFy IGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24g b2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBh bnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tu b3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVs b3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNT TCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRX QVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkK KysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg TElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09O VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws CisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV RElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg R09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJ TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFS SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG IEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKysgKgorKyAqIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBjcnlwdG9ncmFwaGljIHNv ZnR3YXJlIHdyaXR0ZW4gYnkgRXJpYyBZb3VuZworKyAqIChlYXlAY3J5cHRzb2Z0LmNvbSkuICBU aGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgd3JpdHRlbiBieSBUaW0KKysgKiBIdWRzb24g KHRqaEBjcnlwdHNvZnQuY29tKS4KKysgKgorKyAqLworKworKy8qIE1pbmltYWwgc3RhbmRhbG9u ZSBGSVBTIHZlcnNpb25zIG9mIERpZ2VzdCBvcGVyYXRpb25zICovCisrCisrI2RlZmluZSBPUEVO U1NMX0ZJUFNBUEkKKysKKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+ CisrI2luY2x1ZGUgPG9wZW5zc2wvb2JqZWN0cy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5o PgorKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4K KysKKytjb25zdCBFVlBfTUQgKkZJUFNfZ2V0X2RpZ2VzdGJ5bmlkKGludCBuaWQpCisreworKyAg ICBzd2l0Y2ggKG5pZCkgeworKyAgICBjYXNlIE5JRF9zaGExOgorKyAgICAgICAgcmV0dXJuIEVW UF9zaGExKCk7CisrCisrICAgIGNhc2UgTklEX3NoYTIyNDoKKysgICAgICAgIHJldHVybiBFVlBf c2hhMjI0KCk7CisrCisrICAgIGNhc2UgTklEX3NoYTI1NjoKKysgICAgICAgIHJldHVybiBFVlBf c2hhMjU2KCk7CisrCisrICAgIGNhc2UgTklEX3NoYTM4NDoKKysgICAgICAgIHJldHVybiBFVlBf c2hhMzg0KCk7CisrCisrICAgIGNhc2UgTklEX3NoYTUxMjoKKysgICAgICAgIHJldHVybiBFVlBf c2hhNTEyKCk7CisrCisrICAgIGRlZmF1bHQ6CisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAg fQorK30KK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19wb3N0LmMuZmlw cyBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfcG9zdC5jCistLS0gb3BlbnNzbC0xLjEu MC9jcnlwdG8vZmlwcy9maXBzX3Bvc3QuYy5maXBzCTIwMTYtMDktMDggMTE6Mzc6MzguNzQyNDYw MDk2ICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9maXBzX3Bvc3QuYwkyMDE2 LTA5LTA4IDExOjM3OjM4Ljc0MjQ2MDA5NiArMDIwMAorQEAgLTAsMCArMSwyMjIgQEAKKysvKiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAg QWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlv biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor KyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAy LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl IGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24u CisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVy ZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxv d2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3 YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0 aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICog NC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0 IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2 ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1p c3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3Bl bnNzbC1jb3JlQG9wZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9t IHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1h eSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgor KyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJl ZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xs b3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1 ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9y IHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisr ICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1Qg YGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVS UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pF Q1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E SVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVN RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERB VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENB VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs CisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig T1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD SCBEQU1BR0UuCisrICoKKysgKi8KKysKKysjZGVmaW5lIE9QRU5TU0xfRklQU0FQSQorKworKyNp bmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKysj aW5jbHVkZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4K KysjaW5jbHVkZSA8b3BlbnNzbC9iaW8uaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9obWFjLmg+Cisr I2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZHNhLmg+CisrI2lu Y2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxs aW1pdHMuaD4KKysKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrCisrLyogUG93ZXIgb24gc2VsZiB0 ZXN0IChQT1NUKSBzdXBwb3J0IGZ1bmN0aW9ucyAqLworKworKyMgaW5jbHVkZSA8b3BlbnNzbC9m aXBzLmg+CisrIyBpbmNsdWRlICJpbnRlcm5hbC9maXBzX2ludC5oIgorKyMgaW5jbHVkZSAiZmlw c19sb2NsLmgiCisrCisrLyogUnVuIGFsbCBzZWxmdGVzdHMgKi8KKytpbnQgRklQU19zZWxmdGVz dCh2b2lkKQorK3sKKysgICAgaW50IHJ2ID0gMTsKKysgICAgaWYgKCFGSVBTX3NlbGZ0ZXN0X2Ry YmcoKSkKKysgICAgICAgIHJ2ID0gMDsKKysgICAgaWYgKCFGSVBTX3NlbGZ0ZXN0X3NoYTEoKSkK KysgICAgICAgIHJ2ID0gMDsKKysgICAgaWYgKCFGSVBTX3NlbGZ0ZXN0X3NoYTIoKSkKKysgICAg ICAgIHJ2ID0gMDsKKysgICAgaWYgKCFGSVBTX3NlbGZ0ZXN0X2htYWMoKSkKKysgICAgICAgIHJ2 ID0gMDsKKysgICAgaWYgKCFGSVBTX3NlbGZ0ZXN0X2NtYWMoKSkKKysgICAgICAgIHJ2ID0gMDsK KysgICAgaWYgKCFGSVBTX3NlbGZ0ZXN0X2FlcygpKQorKyAgICAgICAgcnYgPSAwOworKyAgICBp ZiAoIUZJUFNfc2VsZnRlc3RfYWVzX2NjbSgpKQorKyAgICAgICAgcnYgPSAwOworKyAgICBpZiAo IUZJUFNfc2VsZnRlc3RfYWVzX2djbSgpKQorKyAgICAgICAgcnYgPSAwOworKyAgICBpZiAoIUZJ UFNfc2VsZnRlc3RfYWVzX3h0cygpKQorKyAgICAgICAgcnYgPSAwOworKyAgICBpZiAoIUZJUFNf c2VsZnRlc3RfZGVzKCkpCisrICAgICAgICBydiA9IDA7CisrICAgIGlmICghRklQU19zZWxmdGVz dF9yc2EoKSkKKysgICAgICAgIHJ2ID0gMDsKKysgICAgaWYgKCFGSVBTX3NlbGZ0ZXN0X2VjZHNh KCkpCisrICAgICAgICBydiA9IDA7CisrICAgIGlmICghRklQU19zZWxmdGVzdF9kc2EoKSkKKysg ICAgICAgIHJ2ID0gMDsKKysgICAgaWYgKCFGSVBTX3NlbGZ0ZXN0X2RoKCkpCisrICAgICAgICBy diA9IDA7CisrICAgIGlmICghRklQU19zZWxmdGVzdF9lY2RoKCkpCisrICAgICAgICBydiA9IDA7 CisrICAgIHJldHVybiBydjsKKyt9CisrCisrLyogR2VuZXJhbGl6ZWQgcHVibGljIGtleSB0ZXN0 IHJvdXRpbmUuIFNpZ25zIGFuZCB2ZXJpZmllcyB0aGUgZGF0YQorKyAqIHN1cHBsaWVkIGluIHRi cyB1c2luZyBtZXNhZ2UgZGlnZXN0IG1kIGFuZCBzZXR0aW5nIG9wdGlvbiBkaWdlc3QKKysgKiBm bGFncyBtZF9mbGFncy4gSWYgdGhlICdrYXQnIHBhcmFtZXRlciBpcyBub3QgTlVMTCBpdCB3aWxs CisrICogYWRkaXRpb25hbGx5IGNoZWNrIHRoZSBzaWduYXR1cmUgbWF0Y2hlcyBpdDogYSBrbm93 biBhbnN3ZXIgdGVzdAorKyAqIFRoZSBzdHJpbmcgImZhaWxfc3RyIiBpcyB1c2VkIGZvciBpZGVu dGlmaWNhdGlvbiBwdXJwb3NlcyBpbiBjYXNlCisrICogb2YgZmFpbHVyZS4gSWYgInBrZXkiIGlz IE5VTEwganVzdCBwZXJmb3JtIGEgbWVzc2FnZSBkaWdlc3QgY2hlY2suCisrICovCisrCisraW50 IGZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChFVlBfUEtFWSAqcGtleSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRicywgaW50IHRic2xlbiwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmthdCwgdW5z aWduZWQgaW50IGthdGxlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVW UF9NRCAqZGlnZXN0LCB1bnNpZ25lZCBpbnQgZmxhZ3MsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpmYWlsX3N0cikKKyt7CisrICAgIGludCByZXQgPSAwOworKyAg ICB1bnNpZ25lZCBjaGFyIHNpZ3RtcFsyNTZdLCAqc2lnID0gc2lndG1wOworKyAgICBzaXplX3Qg c2lnbGVuID0gc2l6ZW9mKHNpZ3RtcCk7CisrICAgIEVWUF9NRF9DVFggKm1jdHg7CisrICAgIEVW UF9QS0VZX0NUWCAqcGN0eDsKKysKKysgICAgaWYgKGRpZ2VzdCA9PSBOVUxMKQorKyAgICAgICAg ZGlnZXN0ID0gRVZQX3NoYTI1NigpOworKworKyAgICBtY3R4ID0gRVZQX01EX0NUWF9uZXcoKTsK KysKKysgICAgaWYgKChFVlBfUEtFWV9pZChwa2V5KSA9PSBFVlBfUEtFWV9SU0EpCisrICAgICAg ICAmJiAoUlNBX3NpemUoRVZQX1BLRVlfZ2V0MF9SU0EocGtleSkpID4gc2l6ZW9mKHNpZ3RtcCkp KSB7CisrICAgICAgICBzaWcgPSBPUEVOU1NMX21hbGxvYyhSU0Ffc2l6ZShFVlBfUEtFWV9nZXQw X1JTQShwa2V5KSkpOworKyAgICAgICAgc2lnbGVuID0gUlNBX3NpemUoRVZQX1BLRVlfZ2V0MF9S U0EocGtleSkpOworKyAgICB9CisrICAgIGlmICghc2lnIHx8ICEgbWN0eCkgeworKyAgICAgICAg RVZQX01EX0NUWF9mcmVlKG1jdHgpOworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19QS0VZ X1NJR05BVFVSRV9URVNULCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CisrICAgICAgICByZXR1cm4g MDsKKysgICAgfQorKworKyAgICBpZiAodGJzbGVuID09IC0xKQorKyAgICAgICAgdGJzbGVuID0g c3RybGVuKChjaGFyICopdGJzKTsKKysKKysgICAgaWYgKEVWUF9EaWdlc3RTaWduSW5pdChtY3R4 LCAmcGN0eCwgZGlnZXN0LCBOVUxMLCBwa2V5KSA8PSAwKQorKyAgICAgICAgZ290byBlcnJvcjsK KysKKysgICAgaWYgKGZsYWdzID09IEVWUF9NRF9DVFhfRkxBR19QQURfUFNTKSB7CisrICAgICAg ICBFVlBfUEtFWV9DVFhfc2V0X3JzYV9wYWRkaW5nKHBjdHgsIFJTQV9QS0NTMV9QU1NfUEFERElO Ryk7CisrICAgICAgICBFVlBfUEtFWV9DVFhfc2V0X3JzYV9wc3Nfc2FsdGxlbihwY3R4LCAwKTsK KysgICAgfQorKworKyAgICBpZiAoRVZQX0RpZ2VzdFNpZ25VcGRhdGUobWN0eCwgdGJzLCB0YnNs ZW4pIDw9IDApCisrICAgICAgICBnb3RvIGVycm9yOworKworKyAgICBpZiAoRVZQX0RpZ2VzdFNp Z25GaW5hbChtY3R4LCBzaWcsICZzaWdsZW4pIDw9IDApCisrICAgICAgICBnb3RvIGVycm9yOwor KworKyAgICBpZiAoa2F0ICYmICgoc2lnbGVuICE9IGthdGxlbikgfHwgbWVtY21wKGthdCwgc2ln LCBrYXRsZW4pKSkKKysgICAgICAgIGdvdG8gZXJyb3I7CisrCisrICAgIGlmIChFVlBfRGlnZXN0 VmVyaWZ5SW5pdChtY3R4LCAmcGN0eCwgZGlnZXN0LCBOVUxMLCBwa2V5KSA8PSAwKQorKyAgICAg ICAgZ290byBlcnJvcjsKKysKKysgICAgaWYgKGZsYWdzID09IEVWUF9NRF9DVFhfRkxBR19QQURf UFNTKSB7CisrICAgICAgICBFVlBfUEtFWV9DVFhfc2V0X3JzYV9wYWRkaW5nKHBjdHgsIFJTQV9Q S0NTMV9QU1NfUEFERElORyk7CisrICAgICAgICBFVlBfUEtFWV9DVFhfc2V0X3JzYV9wc3Nfc2Fs dGxlbihwY3R4LCAwKTsKKysgICAgfQorKworKyAgICBpZiAoRVZQX0RpZ2VzdFZlcmlmeVVwZGF0 ZShtY3R4LCB0YnMsIHRic2xlbikgPD0gMCkKKysgICAgICAgIGdvdG8gZXJyb3I7CisrCisrICAg IHJldCA9IEVWUF9EaWdlc3RWZXJpZnlGaW5hbChtY3R4LCBzaWcsIHNpZ2xlbik7CisrCisrIGVy cm9yOgorKyAgICBpZiAoc2lnICE9IHNpZ3RtcCkKKysgICAgICAgIE9QRU5TU0xfZnJlZShzaWcp OworKyAgICBFVlBfTURfQ1RYX2ZyZWUobWN0eCk7CisrICAgIGlmIChyZXQgPD0gMCkgeworKyAg ICAgICAgRklQU2VycihGSVBTX0ZfRklQU19QS0VZX1NJR05BVFVSRV9URVNULCBGSVBTX1JfVEVT VF9GQUlMVVJFKTsKKysgICAgICAgIGlmIChmYWlsX3N0cikKKysgICAgICAgICAgICBFUlJfYWRk X2Vycm9yX2RhdGEoMiwgIlR5cGU9IiwgZmFpbF9zdHIpOworKyAgICAgICAgcmV0dXJuIDA7Cisr ICAgIH0KKysgICAgcmV0dXJuIDE7CisrfQorKworKy8qIEdlbmVyYWxpemVkIHN5bW1ldHJpYyBj aXBoZXIgdGVzdCByb3V0aW5lLiBFbmNyeXB0IGRhdGEsIHZlcmlmeSByZXN1bHQKKysgKiBhZ2Fp bnN0IGtub3duIGFuc3dlciwgZGVjcnlwdCBhbmQgY29tcGFyZSB3aXRoIG9yaWdpbmFsIHBsYWlu dGV4dC4KKysgKi8KKysKKytpbnQgZmlwc19jaXBoZXJfdGVzdChFVlBfQ0lQSEVSX0NUWCAqY3R4 LCBjb25zdCBFVlBfQ0lQSEVSICpjaXBoZXIsCisrICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dW5zaWduZWQgY2hhciAqa2V5LAorKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIgKml2LAorKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBs YWludGV4dCwKKysgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjaXBo ZXJ0ZXh0LCBpbnQgbGVuKQorK3sKKysgICAgdW5zaWduZWQgY2hhciBwbHRtcFtGSVBTX01BWF9D SVBIRVJfVEVTVF9TSVpFXTsKKysgICAgdW5zaWduZWQgY2hhciBjaXRtcFtGSVBTX01BWF9DSVBI RVJfVEVTVF9TSVpFXTsKKysKKysgICAgT1BFTlNTTF9hc3NlcnQobGVuIDw9IEZJUFNfTUFYX0NJ UEhFUl9URVNUX1NJWkUpOworKyAgICBtZW1zZXQocGx0bXAsIDAsIEZJUFNfTUFYX0NJUEhFUl9U RVNUX1NJWkUpOworKyAgICBtZW1zZXQoY2l0bXAsIDAsIEZJUFNfTUFYX0NJUEhFUl9URVNUX1NJ WkUpOworKworKyAgICBpZiAoRVZQX0NpcGhlckluaXRfZXgoY3R4LCBjaXBoZXIsIE5VTEwsIGtl eSwgaXYsIDEpIDw9IDApCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKEVWUF9DaXBoZXIo Y3R4LCBjaXRtcCwgcGxhaW50ZXh0LCBsZW4pIDw9IDApCisrICAgICAgICByZXR1cm4gMDsKKysg ICAgaWYgKG1lbWNtcChjaXRtcCwgY2lwaGVydGV4dCwgbGVuKSkKKysgICAgICAgIHJldHVybiAw OworKyAgICBpZiAoRVZQX0NpcGhlckluaXRfZXgoY3R4LCBjaXBoZXIsIE5VTEwsIGtleSwgaXYs IDApIDw9IDApCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKEVWUF9DaXBoZXIoY3R4LCBw bHRtcCwgY2l0bXAsIGxlbikgPD0gMCkKKysgICAgICAgIHJldHVybiAwOworKyAgICBpZiAobWVt Y21wKHBsdG1wLCBwbGFpbnRleHQsIGxlbikpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgcmV0 dXJuIDE7CisrfQorKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9m aXBzX3JhbmRfbGNsLmguZmlwcyBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNfcmFuZF9s Y2wuaAorLS0tIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19yYW5kX2xjbC5oLmZpcHMJ MjAxNi0wOS0wOCAxMTozNzozOC43NDI0NjAwOTYgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wL2Ny eXB0by9maXBzL2ZpcHNfcmFuZF9sY2wuaAkyMDE2LTA5LTA4IDExOjM3OjM4Ljc0MjQ2MDA5NiAr MDIwMAorQEAgLTAsMCArMSwyMDkgQEAKKysvKiBmaXBzL3JhbmQvZmlwc19yYW5kX2xjbC5oICov CisrLyogV3JpdHRlbiBieSBEciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9yZykg Zm9yIHRoZSBPcGVuU1NMCisrICogcHJvamVjdC4KKysgKi8KKysvKiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAq IENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNl cnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6Cisr ICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl IGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlv bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAq ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh bHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBB bGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRo aXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRn bWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBi eSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29s a2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJP cGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRv CisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv ZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0 dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgbGljZW5zaW5nQE9wZW5TU0wu b3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5 IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFy IGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24g b2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBh bnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tu b3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVs b3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNT TCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRX QVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkK KysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg TElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09O VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws CisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV RElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg R09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJ TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFS SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG IEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKysgKi8KKysKKyt0eXBlZGVmIHN0cnVjdCBkcmJnX2hhc2hfY3R4X3N0IERSQkdf SEFTSF9DVFg7CisrdHlwZWRlZiBzdHJ1Y3QgZHJiZ19obWFjX2N0eF9zdCBEUkJHX0hNQUNfQ1RY OworK3R5cGVkZWYgc3RydWN0IGRyYmdfY3RyX2N0eF9zdCBEUkJHX0NUUl9DVFg7CisrCisrLyog ODg4IGJpdHMgZnJvbSAxMC4xIHRhYmxlIDIgKi8KKysjZGVmaW5lIEhBU0hfUFJOR19NQVhfU0VF RExFTiAgIDExMQorKworK3N0cnVjdCBkcmJnX2hhc2hfY3R4X3N0IHsKKysgICAgY29uc3QgRVZQ X01EICptZDsKKysgICAgRVZQX01EX0NUWCAqbWN0eDsKKysgICAgdW5zaWduZWQgY2hhciBWW0hB U0hfUFJOR19NQVhfU0VFRExFTl07CisrICAgIHVuc2lnbmVkIGNoYXIgQ1tIQVNIX1BSTkdfTUFY X1NFRURMRU5dOworKyAgICAvKiBUZW1wb3JhcnkgdmFsdWUgc3RvcmFnZTogc2hvdWxkIGFsd2F5 cyBleGNlZWQgbWF4IGRpZ2VzdCBsZW5ndGggKi8KKysgICAgdW5zaWduZWQgY2hhciB2dG1wW0hB U0hfUFJOR19NQVhfU0VFRExFTl07CisrfTsKKysKKytzdHJ1Y3QgZHJiZ19obWFjX2N0eF9zdCB7 CisrICAgIGNvbnN0IEVWUF9NRCAqbWQ7CisrICAgIEhNQUNfQ1RYICpoY3R4OworKyAgICB1bnNp Z25lZCBjaGFyIEtbRVZQX01BWF9NRF9TSVpFXTsKKysgICAgdW5zaWduZWQgY2hhciBWW0VWUF9N QVhfTURfU0laRV07CisrfTsKKysKKytzdHJ1Y3QgZHJiZ19jdHJfY3R4X3N0IHsKKysgICAgQUVT X0tFWSBrczsKKysgICAgc2l6ZV90IGtleWxlbjsKKysgICAgdW5zaWduZWQgY2hhciBLWzMyXTsK KysgICAgdW5zaWduZWQgY2hhciBWWzE2XTsKKysgICAgLyogVGVtcCB2YXJpYWJsZXMgdXNlZCBi eSBkZXJpdmF0aW9uIGZ1bmN0aW9uICovCisrICAgIEFFU19LRVkgZGZfa3M7CisrICAgIEFFU19L RVkgZGZfa3hrczsKKysgICAgLyogVGVtcG9yYXJ5IGJsb2NrIHN0b3JhZ2UgdXNlZCBieSBjdHJf ZGYgKi8KKysgICAgdW5zaWduZWQgY2hhciBibHRtcFsxNl07CisrICAgIHNpemVfdCBibHRtcF9w b3M7CisrICAgIHVuc2lnbmVkIGNoYXIgS1hbNDhdOworK307CisrCisrLyogRFJCRyBpbnRlcm5h bCBmbGFncyAqLworKworKy8qIEZ1bmN0aW9ucyBzaG91bGRuJ3QgY2FsbCBlcnIgbGlicmFyeSAq LworKyNkZWZpbmUgRFJCR19GTEFHX05PRVJSICAgICAgICAgICAgICAgICAweDEKKysvKiBDdXN0 b20gcmVzZWVkIGNoZWNraW5nICovCisrI2RlZmluZSBEUkJHX0NVU1RPTV9SRVNFRUQgICAgICAg ICAgICAgIDB4MgorKworKy8qIERSQkcgc3RhdHVzIHZhbHVlcyAqLworKy8qIG5vdCBpbml0aWFs aXNlZCAqLworKyNkZWZpbmUgRFJCR19TVEFUVVNfVU5JTklUSUFMSVNFRCAgICAgICAwCisrLyog b2sgYW5kIHJlYWR5IHRvIGdlbmVyYXRlIHJhbmRvbSBiaXRzICovCisrI2RlZmluZSBEUkJHX1NU QVRVU19SRUFEWSAgICAgICAgICAgICAgIDEKKysvKiByZXNlZWQgcmVxdWlyZWQgKi8KKysjZGVm aW5lIERSQkdfU1RBVFVTX1JFU0VFRCAgICAgICAgICAgICAgMgorKy8qIGZhdGFsIGVycm9yIGNv bmRpdGlvbiAqLworKyNkZWZpbmUgRFJCR19TVEFUVVNfRVJST1IgICAgICAgICAgICAgICAzCisr CisrLyogQSBkZWZhdWx0IG1heGltdW0gbGVuZ3RoOiBsYXJnZXIgdGhhbiBhbnkgcmVhc29uYWJs ZSB2YWx1ZSB1c2VkIGluIHByYXRpY2UgKi8KKysKKysjZGVmaW5lIERSQkdfTUFYX0xFTkdUSCAg ICAgICAgICAgICAgICAgMHg3ZmZmZmZmMAorKy8qIE1heGltdW0gRFJCRyBibG9jayBsZW5ndGg6 IGFsbCBtZCBzaXplcyBhcmUgYmlnZ2VyIHRoYW4gY2lwaGVyIGJsb2NrcyBzaXplcworKyAqIHNv IHVzZSBtYXggZGlnZXN0IGxlbmd0aC4KKysgKi8KKysjZGVmaW5lIERSQkdfTUFYX0JMT0NLICAg ICAgICAgICAgICAgICAgRVZQX01BWF9NRF9TSVpFCisrCisrI2RlZmluZSBEUkJHX0hFQUxUSF9J TlRFUlZBTCAgICAgICAgICAgICgxIDw8IDI0KQorKworKy8qIERSQkcgY29udGV4dCBzdHJ1Y3R1 cmUgKi8KKysKKytzdHJ1Y3QgZHJiZ19jdHhfc3QgeworKyAgICAvKiBGaXJzdCB0eXBlcyBjb21t b24gdG8gYWxsIGltcGxlbWVudGF0aW9ucyAqLworKyAgICAvKiBEUkJHIHR5cGU6IGEgTklEIGZv ciB0aGUgdW5kZXJseWluZyBhbGdvcml0aG0gKi8KKysgICAgaW50IHR5cGU7CisrICAgIC8qIFZh cmlvdXMgZXh0ZXJuYWwgZmxhZ3MgKi8KKysgICAgdW5zaWduZWQgaW50IHhmbGFnczsKKysgICAg LyogVmFyaW91cyBpbnRlcm5hbCB1c2Ugb25seSBmbGFncyAqLworKyAgICB1bnNpZ25lZCBpbnQg aWZsYWdzOworKyAgICAvKiBVc2VkIGZvciBwZXJpb2RpYyBoZWFsdGggY2hlY2tzICovCisrICAg IGludCBoZWFsdGhfY2hlY2tfY250LCBoZWFsdGhfY2hlY2tfaW50ZXJ2YWw7CisrCisrICAgIC8q IFRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgc2V0dXAgYnkgbWVjaGFuaXNtIGRyYmdfaW5p dCgpIGNhbGwgKi8KKysgICAgaW50IHN0cmVuZ3RoOworKyAgICBzaXplX3QgYmxvY2tsZW5ndGg7 CisrICAgIHNpemVfdCBtYXhfcmVxdWVzdDsKKysKKysgICAgc2l6ZV90IG1pbl9lbnRyb3B5LCBt YXhfZW50cm9weTsKKysgICAgc2l6ZV90IG1pbl9ub25jZSwgbWF4X25vbmNlOworKyAgICBzaXpl X3QgbWF4X3BlcnMsIG1heF9hZGluOworKyAgICB1bnNpZ25lZCBpbnQgcmVzZWVkX2NvdW50ZXI7 CisrICAgIHVuc2lnbmVkIGludCByZXNlZWRfaW50ZXJ2YWw7CisrICAgIHNpemVfdCBzZWVkbGVu OworKyAgICBpbnQgc3RhdHVzOworKyAgICAvKiBBcHBsaWNhdGlvbiBkYXRhOiB0eXBpY2FsbHkg dXNlZCBieSB0ZXN0IGdldF9lbnRyb3B5ICovCisrICAgIHZvaWQgKmFwcF9kYXRhOworKyAgICAv KiBJbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBzdHJ1Y3R1cmVzICovCisrICAgIHVuaW9uIHsKKysg ICAgICAgIERSQkdfSEFTSF9DVFggaGFzaDsKKysgICAgICAgIERSQkdfSE1BQ19DVFggaG1hYzsK KysgICAgICAgIERSQkdfQ1RSX0NUWCBjdHI7CisrICAgIH0gZDsKKysgICAgLyogSW5pdGlhbGlh c2UgUFJORyBhbmQgc2V0dXAgY2FsbGJhY2tzIGJlbG93ICovCisrICAgIGludCAoKmluaXQpIChE UkJHX0NUWCAqY3R4LCBpbnQgbmlkLCBpbnQgc2VjdXJpdHksIHVuc2lnbmVkIGludCBmbGFncyk7 CisrICAgIC8qIEludGFudGlhdGUgUFJORyAqLworKyAgICBpbnQgKCppbnN0YW50aWF0ZSkgKERS QkdfQ1RYICpjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hh ciAqZW50LCBzaXplX3QgZW50bGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVu c2lnbmVkIGNoYXIgKm5vbmNlLCBzaXplX3Qgbm9uY2VsZW4sCisrICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcGVycywgc2l6ZV90IHBlcnNsZW4pOworKyAgICAv KiByZXNlZWQgKi8KKysgICAgaW50ICgqcmVzZWVkKSAoRFJCR19DVFggKmN0eCwKKysgICAgICAg ICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50LCBzaXplX3QgZW50bGVuLAorKyAg ICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGluLCBzaXplX3QgYWRpbmxl bik7CisrICAgIC8qIGdlbmVyYXQgb3V0cHV0ICovCisrICAgIGludCAoKmdlbmVyYXRlKSAoRFJC R19DVFggKmN0eCwKKysgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXQsIHNp emVfdCBvdXRsZW4sCisrICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAq YWRpbiwgc2l6ZV90IGFkaW5sZW4pOworKyAgICAvKiB1bmluc3RhbnRpYXRlICovCisrICAgIGlu dCAoKnVuaW5zdGFudGlhdGUpIChEUkJHX0NUWCAqY3R4KTsKKysKKysgICAgLyogRW50cm9weSBz b3VyY2UgYmxvY2sgbGVuZ3RoICovCisrICAgIHNpemVfdCBlbnRyb3B5X2Jsb2NrbGVuOworKwor KyAgICAvKiBlbnRyb3B5IGdhdGhlcmluZyBmdW5jdGlvbiAqLworKyAgICBzaXplX3QgKCpnZXRf ZW50cm9weSkgKERSQkdfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKipwb3V0LAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBlbnRyb3B5LCBzaXplX3QgbWluX2xlbiwgc2l6ZV90IG1h eF9sZW4pOworKyAgICAvKiBJbmRpY2F0ZXMgd2UgaGF2ZSBmaW5pc2hlZCB3aXRoIGVudHJvcHkg YnVmZmVyICovCisrICAgIHZvaWQgKCpjbGVhbnVwX2VudHJvcHkpIChEUkJHX0NUWCAqY3R4LCB1 bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvbGVuKTsKKysKKysgICAgLyogbm9uY2UgZ2F0aGVy aW5nIGZ1bmN0aW9uICovCisrICAgIHNpemVfdCAoKmdldF9ub25jZSkgKERSQkdfQ1RYICpjdHgs IHVuc2lnbmVkIGNoYXIgKipwb3V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW50 cm9weSwgc2l6ZV90IG1pbl9sZW4sIHNpemVfdCBtYXhfbGVuKTsKKysgICAgLyogSW5kaWNhdGVz IHdlIGhhdmUgZmluaXNoZWQgd2l0aCBub25jZSBidWZmZXIgKi8KKysgICAgdm9pZCAoKmNsZWFu dXBfbm9uY2UpIChEUkJHX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvbGVu KTsKKysKKysgICAgLyogQ29udGludW91cyByYW5kb20gbnVtYmVyIHRlc3QgdGVtcG9yYXJ5IGFy ZWEgKi8KKysgICAgLyogTGFzdCBibG9jayAqLworKyAgICB1bnNpZ25lZCBjaGFyIGxiW0VWUF9N QVhfTURfU0laRV07CisrICAgIC8qIHNldCBpZiBsYiBpcyB2YWxpZCAqLworKyAgICBpbnQgbGJf dmFsaWQ7CisrCisrICAgIC8qIENhbGxiYWNrcyB1c2VkIHdoZW4gY2FsbGVkIHRocm91Z2ggUkFO RCBpbnRlcmZhY2UgKi8KKysgICAgLyogR2V0IGFueSBhZGRpdGlvbmFsIGlucHV0IGZvciBnZW5l cmF0ZSAqLworKyAgICBzaXplX3QgKCpnZXRfYWRpbikgKERSQkdfQ1RYICpjdHgsIHVuc2lnbmVk IGNoYXIgKipwb3V0KTsKKysgICAgdm9pZCAoKmNsZWFudXBfYWRpbikgKERSQkdfQ1RYICpjdHgs IHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG9sZW4pOworKyAgICAvKiBDYWxsYmFjayBmb3Ig UkFORF9zZWVkKCksIFJBTkRfYWRkKCkgKi8KKysgICAgaW50ICgqcmFuZF9zZWVkX2NiKSAoRFJC R19DVFggKmN0eCwgY29uc3Qgdm9pZCAqYnVmLCBpbnQgbnVtKTsKKysgICAgaW50ICgqcmFuZF9h ZGRfY2IpIChEUkJHX0NUWCAqY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv aWQgKmJ1ZiwgaW50IG51bSwgZG91YmxlIGVudHJvcHkpOworK307CisrCisraW50IGZpcHNfZHJi Z19jdHJfaW5pdChEUkJHX0NUWCAqZGN0eCk7CisraW50IGZpcHNfZHJiZ19oYXNoX2luaXQoRFJC R19DVFggKmRjdHgpOworK2ludCBmaXBzX2RyYmdfaG1hY19pbml0KERSQkdfQ1RYICpkY3R4KTsK KytpbnQgZmlwc19kcmJnX2thdChEUkJHX0NUWCAqZGN0eCwgaW50IG5pZCwgdW5zaWduZWQgaW50 IGZsYWdzKTsKKytpbnQgZmlwc19kcmJnX2Nwcm5nX3Rlc3QoRFJCR19DVFggKmRjdHgsIGNvbnN0 IHVuc2lnbmVkIGNoYXIgKm91dCk7CisrCisrI2RlZmluZSBGSVBTX2RpZ2VzdGluaXQgRVZQX0Rp Z2VzdEluaXQKKysjZGVmaW5lIEZJUFNfZGlnZXN0dXBkYXRlIEVWUF9EaWdlc3RVcGRhdGUKKysj ZGVmaW5lIEZJUFNfZGlnZXN0ZmluYWwgRVZQX0RpZ2VzdEZpbmFsCisrI2RlZmluZSBNX0VWUF9N RF9zaXplIEVWUF9NRF9zaXplCitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2Zp cHNfcmFuZF9saWIuYy5maXBzIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19yYW5kX2xp Yi5jCistLS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9maXBzX3JhbmRfbGliLmMuZmlwcwky MDE2LTA5LTA4IDExOjM3OjM4Ljc0MjQ2MDA5NiArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAvY3J5 cHRvL2ZpcHMvZmlwc19yYW5kX2xpYi5jCTIwMTYtMDktMDggMTE6Mzc6MzguNzQyNDYwMDk2ICsw MjAwCitAQCAtMCwwICsxLDIzNCBAQAorKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrICogQ29weXJpZ2h0IChj KSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisr ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0 aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKgorKyAqIDEuIFJl ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp Z2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv d2luZyBkaXNjbGFpbWVyLiAKKysgKgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisr ICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3 aXRoIHRoZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIDMuIEFsbCBhZHZlcnRpc2lu ZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcworKyAqICAgIHNv ZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgorKyAqICAg ICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NM IFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8v d3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtp dCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKysgKiAgICBlbmRv cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91 dAorKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lv biwgcGxlYXNlIGNvbnRhY3QKKysgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCisrICoK KysgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNh bGxlZCAiT3BlblNTTCIKKysgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIg bmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisrICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3Bl blNTTCBQcm9qZWN0LgorKyAqCisrICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdo YXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworKyAqICAgIGFja25vd2xlZGdtZW50 OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRo ZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQg KGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP VklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQorKyAqIEVYUFJF U1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP LCBUSEUKKysgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g RVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgorKyAqIElUUyBDT05UUklCVVRPUlMg QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysgKiBTUEVD SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQK KysgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT RVJWSUNFUzsKKysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg SU5URVJSVVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKysgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBU T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBB TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAor KyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKgorKyAqLworKworKy8q IElmIHdlIGRvbid0IGRlZmluZSBfWE9QRU5fU09VUkNFX0VYVEVOREVELCBzdHJ1Y3QgdGltZXZh bCB3b24ndAorKyAgIGJlIGRlZmluZWQgYW5kIGdldHRpbWVvZmRheSgpIHdvbid0IGJlIGRlY2xh cmVkIHdpdGggc3RyaWN0IGNvbXBpbGVycworKyAgIGxpa2UgREVDIEMgaW4gQU5TSSBDIG1vZGUu ICAqLworKyNpZm5kZWYgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAorKyMgZGVmaW5lIF9YT1BFTl9T T1VSQ0VfRVhURU5ERUQgMQorKyNlbmRpZgorKworKyNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5o PgorKyNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4K KysjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2luY2x1ZGUgImludGVybmFsL2ZpcHNfaW50 LmgiCisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwc19yYW5kLmg+CisrI2luY2x1ZGUgImVfb3MuaCIK KysKKysjaWYgIShkZWZpbmVkKE9QRU5TU0xfU1lTX1dJTjMyKSB8fCBkZWZpbmVkKE9QRU5TU0xf U1lTX1ZYV09SS1MpKQorKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKysjZW5kaWYKKysjaWYgZGVm aW5lZChPUEVOU1NMX1NZU19WWFdPUktTKQorKyMgaW5jbHVkZSA8dGltZS5oPgorKyNlbmRpZgor KyNpZm5kZWYgT1BFTlNTTF9TWVNfV0lOMzIKKysjIGlmZGVmIE9QRU5TU0xfVU5JU1RECisrIyAg aW5jbHVkZSBPUEVOU1NMX1VOSVNURAorKyMgZWxzZQorKyMgIGluY2x1ZGUgPHVuaXN0ZC5oPgor KyMgZW5kaWYKKysjZW5kaWYKKysKKysvKiBGSVBTIEFQSSBmb3IgUFJORyB1c2UuIFNpbWlsYXIg dG8gUkFORCBmdW5jdGlvbmFsaXR5IGJ1dCB3aXRob3V0CisrICogRU5HSU5FIGFuZCBhZGRpdGlv bmFsIGNoZWNraW5nIGZvciBub24tRklQUyByYW5kIG1ldGhvZHMuCisrICovCisrCisrc3RhdGlj IGNvbnN0IFJBTkRfTUVUSE9EICpmaXBzX3JhbmRfbWV0aCA9IE5VTEw7Cisrc3RhdGljIGludCBm aXBzX2FwcHJvdmVkX3JhbmRfbWV0aCA9IDA7Cisrc3RhdGljIGludCBmaXBzX3JhbmRfYml0cyA9 IDA7CisrCisrLyogQWxsb3dzIGFwcGxpY2F0aW9uIHRvIG92ZXJyaWRlIG51bWJlciBvZiBiaXRz IGFuZCB1c2VzIG5vbi1GSVBTIG1ldGhvZHMgKi8KKyt2b2lkIEZJUFNfcmFuZF9zZXRfYml0cyhp bnQgbmJpdHMpCisreworKyAgICBmaXBzX3JhbmRfYml0cyA9IG5iaXRzOworK30KKysKKytpbnQg RklQU19yYW5kX3NldF9tZXRob2QoY29uc3QgUkFORF9NRVRIT0QgKm1ldGgpCisreworKyAgICBp ZiAoIWZpcHNfcmFuZF9iaXRzKSB7CisrICAgICAgICBpZiAobWV0aCA9PSBGSVBTX2RyYmdfbWV0 aG9kKCkpCisrICAgICAgICAgICAgZmlwc19hcHByb3ZlZF9yYW5kX21ldGggPSAxOworKyAgICAg ICAgZWxzZSB7CisrICAgICAgICAgICAgZmlwc19hcHByb3ZlZF9yYW5kX21ldGggPSAwOworKyAg ICAgICAgICAgIGlmIChGSVBTX21vZHVsZV9tb2RlKCkpIHsKKysgICAgICAgICAgICAgICAgRklQ U2VycihGSVBTX0ZfRklQU19SQU5EX1NFVF9NRVRIT0QsIEZJUFNfUl9OT05fRklQU19NRVRIT0Qp OworKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgICAgICB9CisrICAgICAgICB9 CisrICAgIH0KKysgICAgZmlwc19yYW5kX21ldGggPSBtZXRoOworKyAgICByZXR1cm4gMTsKKyt9 CisrCisrY29uc3QgUkFORF9NRVRIT0QgKkZJUFNfcmFuZF9nZXRfbWV0aG9kKHZvaWQpCisrewor KyAgICByZXR1cm4gZmlwc19yYW5kX21ldGg7CisrfQorKworK3ZvaWQgRklQU19yYW5kX3Jlc2V0 KHZvaWQpCisreworKyAgICBpZiAoZmlwc19yYW5kX21ldGggJiYgZmlwc19yYW5kX21ldGgtPmNs ZWFudXApCisrICAgICAgICBmaXBzX3JhbmRfbWV0aC0+Y2xlYW51cCgpOworK30KKysKKytpbnQg RklQU19yYW5kX3NlZWQoY29uc3Qgdm9pZCAqYnVmLCBpbnQgbnVtKQorK3sKKysgICAgaWYgKCFm aXBzX2FwcHJvdmVkX3JhbmRfbWV0aCAmJiBGSVBTX21vZHVsZV9tb2RlKCkpIHsKKysgICAgICAg IEZJUFNlcnIoRklQU19GX0ZJUFNfUkFORF9TRUVELCBGSVBTX1JfTk9OX0ZJUFNfTUVUSE9EKTsK KysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrICAgIGlmIChmaXBzX3JhbmRfbWV0aCAmJiBm aXBzX3JhbmRfbWV0aC0+c2VlZCkKKysgICAgICAgIGZpcHNfcmFuZF9tZXRoLT5zZWVkKGJ1Ziwg bnVtKTsKKysgICAgcmV0dXJuIDE7CisrfQorKworK2ludCBGSVBTX3JhbmRfYnl0ZXModW5zaWdu ZWQgY2hhciAqYnVmLCBpbnQgbnVtKQorK3sKKysgICAgaWYgKCFmaXBzX2FwcHJvdmVkX3JhbmRf bWV0aCAmJiBGSVBTX21vZHVsZV9tb2RlKCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJ UFNfUkFORF9CWVRFUywgRklQU19SX05PTl9GSVBTX01FVEhPRCk7CisrICAgICAgICByZXR1cm4g MDsKKysgICAgfQorKyAgICBpZiAoZmlwc19yYW5kX21ldGggJiYgZmlwc19yYW5kX21ldGgtPmJ5 dGVzKQorKyAgICAgICAgcmV0dXJuIGZpcHNfcmFuZF9tZXRoLT5ieXRlcyhidWYsIG51bSk7Cisr ICAgIHJldHVybiAwOworK30KKysKKytpbnQgRklQU19yYW5kX3N0YXR1cyh2b2lkKQorK3sKKysg ICAgaWYgKCFmaXBzX2FwcHJvdmVkX3JhbmRfbWV0aCAmJiBGSVBTX21vZHVsZV9tb2RlKCkpIHsK KysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfUkFORF9TVEFUVVMsIEZJUFNfUl9OT05fRklQ U19NRVRIT0QpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgICAgaWYgKGZpcHNfcmFu ZF9tZXRoICYmIGZpcHNfcmFuZF9tZXRoLT5zdGF0dXMpCisrICAgICAgICByZXR1cm4gZmlwc19y YW5kX21ldGgtPnN0YXR1cygpOworKyAgICByZXR1cm4gMDsKKyt9CisrCisrLyogUmV0dXJuIGlu c3RhbnRpYXRlZCBzdHJlbmd0aCBvZiBQUk5HLiBGb3IgRFJCRyB0aGlzIGlzIGFuIGludGVybmFs CisrICogcGFyYW1ldGVyLiBBbnkgb3RoZXIgdHlwZSBvZiBQUk5HIGlzIG5vdCBhcHByb3ZlZCBh bmQgcmV0dXJucyAwIGluCisrICogRklQUyBtb2RlIGFuZCBtYXhpbXVtIDI1NiBvdXRzaWRlIEZJ UFMgbW9kZS4KKysgKi8KKysKKytpbnQgRklQU19yYW5kX3N0cmVuZ3RoKHZvaWQpCisreworKyAg ICBpZiAoZmlwc19yYW5kX2JpdHMpCisrICAgICAgICByZXR1cm4gZmlwc19yYW5kX2JpdHM7Cisr ICAgIGlmIChmaXBzX2FwcHJvdmVkX3JhbmRfbWV0aCA9PSAxKQorKyAgICAgICAgcmV0dXJuIEZJ UFNfZHJiZ19nZXRfc3RyZW5ndGgoRklQU19nZXRfZGVmYXVsdF9kcmJnKCkpOworKyAgICBlbHNl IGlmIChmaXBzX2FwcHJvdmVkX3JhbmRfbWV0aCA9PSAwKSB7CisrICAgICAgICBpZiAoRklQU19t b2R1bGVfbW9kZSgpKQorKyAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgZWxzZQorKyAg ICAgICAgICAgIHJldHVybiAyNTY7CisrICAgIH0KKysgICAgcmV0dXJuIDA7CisrfQorKworK3Zv aWQgRklQU19nZXRfdGltZXZlYyh1bnNpZ25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGxvbmcgKnBj dHIpCisreworKyMgaWZkZWYgT1BFTlNTTF9TWVNfV0lOMzIKKysgICAgRklMRVRJTUUgZnQ7Cisr IyBlbGlmIGRlZmluZWQoT1BFTlNTTF9TWVNfVlhXT1JLUykKKysgICAgc3RydWN0IHRpbWVzcGVj IHRzOworKyMgZWxzZQorKyAgICBzdHJ1Y3QgdGltZXZhbCB0djsKKysjIGVuZGlmCisrCisrIyBp Zm5kZWYgR0VUUElEX0lTX01FQU5JTkdMRVNTCisrICAgIHVuc2lnbmVkIGxvbmcgcGlkOworKyMg ZW5kaWYKKysKKysjIGlmZGVmIE9QRU5TU0xfU1lTX1dJTjMyCisrICAgIEdldFN5c3RlbVRpbWVB c0ZpbGVUaW1lKCZmdCk7CisrICAgIGJ1ZlswXSA9ICh1bnNpZ25lZCBjaGFyKShmdC5kd0hpZ2hE YXRlVGltZSAmIDB4ZmYpOworKyAgICBidWZbMV0gPSAodW5zaWduZWQgY2hhcikoKGZ0LmR3SGln aERhdGVUaW1lID4+IDgpICYgMHhmZik7CisrICAgIGJ1ZlsyXSA9ICh1bnNpZ25lZCBjaGFyKSgo ZnQuZHdIaWdoRGF0ZVRpbWUgPj4gMTYpICYgMHhmZik7CisrICAgIGJ1ZlszXSA9ICh1bnNpZ25l ZCBjaGFyKSgoZnQuZHdIaWdoRGF0ZVRpbWUgPj4gMjQpICYgMHhmZik7CisrICAgIGJ1Zls0XSA9 ICh1bnNpZ25lZCBjaGFyKShmdC5kd0xvd0RhdGVUaW1lICYgMHhmZik7CisrICAgIGJ1Zls1XSA9 ICh1bnNpZ25lZCBjaGFyKSgoZnQuZHdMb3dEYXRlVGltZSA+PiA4KSAmIDB4ZmYpOworKyAgICBi dWZbNl0gPSAodW5zaWduZWQgY2hhcikoKGZ0LmR3TG93RGF0ZVRpbWUgPj4gMTYpICYgMHhmZik7 CisrICAgIGJ1Zls3XSA9ICh1bnNpZ25lZCBjaGFyKSgoZnQuZHdMb3dEYXRlVGltZSA+PiAyNCkg JiAweGZmKTsKKysjIGVsaWYgZGVmaW5lZChPUEVOU1NMX1NZU19WWFdPUktTKQorKyAgICBjbG9j a19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmdHMpOworKyAgICBidWZbMF0gPSAodW5zaWduZWQg Y2hhcikodHMudHZfc2VjICYgMHhmZik7CisrICAgIGJ1ZlsxXSA9ICh1bnNpZ25lZCBjaGFyKSgo dHMudHZfc2VjID4+IDgpICYgMHhmZik7CisrICAgIGJ1ZlsyXSA9ICh1bnNpZ25lZCBjaGFyKSgo dHMudHZfc2VjID4+IDE2KSAmIDB4ZmYpOworKyAgICBidWZbM10gPSAodW5zaWduZWQgY2hhciko KHRzLnR2X3NlYyA+PiAyNCkgJiAweGZmKTsKKysgICAgYnVmWzRdID0gKHVuc2lnbmVkIGNoYXIp KHRzLnR2X25zZWMgJiAweGZmKTsKKysgICAgYnVmWzVdID0gKHVuc2lnbmVkIGNoYXIpKCh0cy50 dl9uc2VjID4+IDgpICYgMHhmZik7CisrICAgIGJ1Zls2XSA9ICh1bnNpZ25lZCBjaGFyKSgodHMu dHZfbnNlYyA+PiAxNikgJiAweGZmKTsKKysgICAgYnVmWzddID0gKHVuc2lnbmVkIGNoYXIpKCh0 cy50dl9uc2VjID4+IDI0KSAmIDB4ZmYpOworKyMgZWxzZQorKyAgICBnZXR0aW1lb2ZkYXkoJnR2 LCBOVUxMKTsKKysgICAgYnVmWzBdID0gKHVuc2lnbmVkIGNoYXIpKHR2LnR2X3NlYyAmIDB4ZmYp OworKyAgICBidWZbMV0gPSAodW5zaWduZWQgY2hhcikoKHR2LnR2X3NlYyA+PiA4KSAmIDB4ZmYp OworKyAgICBidWZbMl0gPSAodW5zaWduZWQgY2hhcikoKHR2LnR2X3NlYyA+PiAxNikgJiAweGZm KTsKKysgICAgYnVmWzNdID0gKHVuc2lnbmVkIGNoYXIpKCh0di50dl9zZWMgPj4gMjQpICYgMHhm Zik7CisrICAgIGJ1Zls0XSA9ICh1bnNpZ25lZCBjaGFyKSh0di50dl91c2VjICYgMHhmZik7Cisr ICAgIGJ1Zls1XSA9ICh1bnNpZ25lZCBjaGFyKSgodHYudHZfdXNlYyA+PiA4KSAmIDB4ZmYpOwor KyAgICBidWZbNl0gPSAodW5zaWduZWQgY2hhcikoKHR2LnR2X3VzZWMgPj4gMTYpICYgMHhmZik7 CisrICAgIGJ1Zls3XSA9ICh1bnNpZ25lZCBjaGFyKSgodHYudHZfdXNlYyA+PiAyNCkgJiAweGZm KTsKKysjIGVuZGlmCisrICAgIGJ1Zls4XSA9ICh1bnNpZ25lZCBjaGFyKSgqcGN0ciAmIDB4ZmYp OworKyAgICBidWZbOV0gPSAodW5zaWduZWQgY2hhcikoKCpwY3RyID4+IDgpICYgMHhmZik7Cisr ICAgIGJ1ZlsxMF0gPSAodW5zaWduZWQgY2hhcikoKCpwY3RyID4+IDE2KSAmIDB4ZmYpOworKyAg ICBidWZbMTFdID0gKHVuc2lnbmVkIGNoYXIpKCgqcGN0ciA+PiAyNCkgJiAweGZmKTsKKysKKysg ICAgKCpwY3RyKSsrOworKworKyMgaWZuZGVmIEdFVFBJRF9JU19NRUFOSU5HTEVTUworKyAgICBw aWQgPSAodW5zaWduZWQgbG9uZylnZXRwaWQoKTsKKysgICAgYnVmWzEyXSA9ICh1bnNpZ25lZCBj aGFyKShwaWQgJiAweGZmKTsKKysgICAgYnVmWzEzXSA9ICh1bnNpZ25lZCBjaGFyKSgocGlkID4+ IDgpICYgMHhmZik7CisrICAgIGJ1ZlsxNF0gPSAodW5zaWduZWQgY2hhcikoKHBpZCA+PiAxNikg JiAweGZmKTsKKysgICAgYnVmWzE1XSA9ICh1bnNpZ25lZCBjaGFyKSgocGlkID4+IDI0KSAmIDB4 ZmYpOworKyMgZW5kaWYKKyt9CisrCitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBz L2ZpcHNfcmFuZHRlc3QuYy5maXBzIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19yYW5k dGVzdC5jCistLS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9maXBzX3JhbmR0ZXN0LmMuZmlw cwkyMDE2LTA5LTA4IDExOjM3OjM4Ljc0MjQ2MDA5NiArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAv Y3J5cHRvL2ZpcHMvZmlwc19yYW5kdGVzdC5jCTIwMTYtMDktMDggMTE6Mzc6MzguNzQyNDYwMDk2 ICswMjAwCitAQCAtMCwwICsxLDI0NyBAQAorKy8qIENvcHlyaWdodCAoQykgMTk5NS0xOTk4IEVy aWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKQorKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisr ICoKKysgKiBUaGlzIHBhY2thZ2UgaXMgYW4gU1NMIGltcGxlbWVudGF0aW9uIHdyaXR0ZW4KKysg KiBieSBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkuCisrICogVGhlIGltcGxlbWVudGF0 aW9uIHdhcyB3cml0dGVuIHNvIGFzIHRvIGNvbmZvcm0gd2l0aCBOZXRzY2FwZXMgU1NMLgorKyAq IAorKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIGZvciBjb21tZXJjaWFsIGFuZCBub24tY29tbWVy Y2lhbCB1c2UgYXMgbG9uZyBhcworKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgYWhl YXJlZCB0by4gIFRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFwcGx5IHRvIGFsbCBjb2Rl IGZvdW5kIGluIHRoaXMgZGlzdHJpYnV0aW9uLCBiZSBpdCB0aGUgUkM0LCBSU0EsCisrICogbGhh c2gsIERFUywgZXRjLiwgY29kZTsgbm90IGp1c3QgdGhlIFNTTCBjb2RlLiAgVGhlIFNTTCBkb2N1 bWVudGF0aW9uCisrICogaW5jbHVkZWQgd2l0aCB0aGlzIGRpc3RyaWJ1dGlvbiBpcyBjb3ZlcmVk IGJ5IHRoZSBzYW1lIGNvcHlyaWdodCB0ZXJtcworKyAqIGV4Y2VwdCB0aGF0IHRoZSBob2xkZXIg aXMgVGltIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pLgorKyAqIAorKyAqIENvcHlyaWdodCBy ZW1haW5zIEVyaWMgWW91bmcncywgYW5kIGFzIHN1Y2ggYW55IENvcHlyaWdodCBub3RpY2VzIGlu CisrICogdGhlIGNvZGUgYXJlIG5vdCB0byBiZSByZW1vdmVkLgorKyAqIElmIHRoaXMgcGFja2Fn ZSBpcyB1c2VkIGluIGEgcHJvZHVjdCwgRXJpYyBZb3VuZyBzaG91bGQgYmUgZ2l2ZW4gYXR0cmli dXRpb24KKysgKiBhcyB0aGUgYXV0aG9yIG9mIHRoZSBwYXJ0cyBvZiB0aGUgbGlicmFyeSB1c2Vk LgorKyAqIFRoaXMgY2FuIGJlIGluIHRoZSBmb3JtIG9mIGEgdGV4dHVhbCBtZXNzYWdlIGF0IHBy b2dyYW0gc3RhcnR1cCBvcgorKyAqIGluIGRvY3VtZW50YXRpb24gKG9ubGluZSBvciB0ZXh0dWFs KSBwcm92aWRlZCB3aXRoIHRoZSBwYWNrYWdlLgorKyAqIAorKyAqIFJlZGlzdHJpYnV0aW9uIGFu ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1v ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj b2RlIG11c3QgcmV0YWluIHRoZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisrICogMi4gUmVkaXN0 cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln aHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIgaW4gdGhlCisrICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKysgKiAzLiBBbGwgYWR2 ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29m dHdhcmUKKysgKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6 CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBjcnlwdG9ncmFwaGljIHNvZnR3YXJlIHdy aXR0ZW4gYnkKKysgKiAgICAgRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pIgorKyAqICAg IFRoZSB3b3JkICdjcnlwdG9ncmFwaGljJyBjYW4gYmUgbGVmdCBvdXQgaWYgdGhlIHJvdWluZXMg ZnJvbSB0aGUgbGlicmFyeQorKyAqICAgIGJlaW5nIHVzZWQgYXJlIG5vdCBjcnlwdG9ncmFwaGlj IHJlbGF0ZWQgOi0pLgorKyAqIDQuIElmIHlvdSBpbmNsdWRlIGFueSBXaW5kb3dzIHNwZWNpZmlj IGNvZGUgKG9yIGEgZGVyaXZhdGl2ZSB0aGVyZW9mKSBmcm9tIAorKyAqICAgIHRoZSBhcHBzIGRp cmVjdG9yeSAoYXBwbGljYXRpb24gY29kZSkgeW91IG11c3QgaW5jbHVkZSBhbiBhY2tub3dsZWRn ZW1lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5 IFRpbSBIdWRzb24gKHRqaEBjcnlwdHNvZnQuY29tKSIKKysgKiAKKysgKiBUSElTIFNPRlRXQVJF IElTIFBST1ZJREVEIEJZIEVSSUMgWU9VTkcgYGBBUyBJUycnIEFORAorKyAqIEFOWSBFWFBSRVNT IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI RQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisrICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO VCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKysgKiBGT1IgQU5Z IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O U0VRVUVOVElBTAorKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisrICogT1IgU0VSVklDRVM7IExPU1MgT0Yg VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisrICogSE9X RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP TlRSQUNULCBTVFJJQ1QKKysgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisrICogT1VUIE9GIFRIRSBVU0Ug T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgor KyAqIFNVQ0ggREFNQUdFLgorKyAqIAorKyAqIFRoZSBsaWNlbmNlIGFuZCBkaXN0cmlidXRpb24g dGVybXMgZm9yIGFueSBwdWJsaWNhbGx5IGF2YWlsYWJsZSB2ZXJzaW9uIG9yCisrICogZGVyaXZh dGl2ZSBvZiB0aGlzIGNvZGUgY2Fubm90IGJlIGNoYW5nZWQuICBpLmUuIHRoaXMgY29kZSBjYW5u b3Qgc2ltcGx5IGJlCisrICogY29waWVkIGFuZCBwdXQgdW5kZXIgYW5vdGhlciBkaXN0cmlidXRp b24gbGljZW5jZQorKyAqIFtpbmNsdWRpbmcgdGhlIEdOVSBQdWJsaWMgTGljZW5jZS5dCisrICov CisrLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmlnaHQgKGMpIDIwMDMgVGhlIE9wZW5TU0wgUHJv amVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2Rp ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnMKKysgKiBhcmUgbWV0OgorKyAqCisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorKyAq CisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo ZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKysgKiAgICB0aGUgZG9jdW1lbnRhdGlv biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisrICogICAgZGlzdHJp YnV0aW9uLgorKyAqCisrICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5n IGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisrICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRo ZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRl cyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1 c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKysg KgorKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVj dCIgbXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0 cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisrICogICAgcHJpb3Igd3JpdHRl biBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAorKyAq ICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KKysgKgorKyAqIDUuIFByb2R1Y3RzIGRlcml2 ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgorKyAqICAg IG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdy aXR0ZW4KKysgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCisrICoKKysg KiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0 aGUgZm9sbG93aW5nCisrICogICAgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVj dCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAq ICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9y Zy8pIgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQ Uk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisrICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFO VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKyAqIElNUExJRUQgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNT TCBQUk9KRUNUIE9SCisrICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorKyAqIE5PVCBMSU1JVEVEIFRPLCBQ Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworKyAqIExPU1MgT0Yg VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisrICogSE9X RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP TlRSQUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF TkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisrICogT0YgVEhFIFBPU1NJQklMSVRZ IE9GIFNVQ0ggREFNQUdFLgorKyAqCisrICovCisrCisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2lu Y2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8Y3R5cGUu aD4KKysjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwc19y YW5kLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvYm4u aD4KKysKKysjaW5jbHVkZSAiZV9vcy5oIgorKworKyNpZm5kZWYgT1BFTlNTTF9GSVBTCisraW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyt7CisrICAgIHByaW50ZigiTm8gRklQUyBS QU5EIHN1cHBvcnRcbiIpOworKyAgICByZXR1cm4gKDApOworK30KKysKKysjZWxzZQorKworKyMg aW5jbHVkZSAiZmlwc191dGwuaCIKKysjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorKworK3R5 cGVkZWYgc3RydWN0IHsKKysgICAgdW5zaWduZWQgY2hhciBEVFsxNl07CisrICAgIHVuc2lnbmVk IGNoYXIgVlsxNl07CisrICAgIHVuc2lnbmVkIGNoYXIgUlsxNl07CisrfSBBRVNfUFJOR19NQ1Q7 CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9tY3Rfa2V5WzE2XSA9Cisr ICAgIHsgMHg5ZiwgMHg1YiwgMHg1MSwgMHgyMCwgMHgwYiwgMHhmMywgMHgzNCwgMHhiNSwKKysg ICAgMHhkOCwgMHgyYiwgMHhlOCwgMHhjMywgMHg3MiwgMHg1NSwgMHhjOCwgMHg0OAorK307Cisr Cisrc3RhdGljIGNvbnN0IEFFU19QUk5HX01DVCBhZXNfMTI4X21jdF90diA9IHsKKysgICAgLyog RFQgKi8KKysgICAgezB4NjMsIDB4NzYsIDB4YmIsIDB4ZTUsIDB4MjksIDB4MDIsIDB4YmEsIDB4 M2IsCisrICAgICAweDY3LCAweGM5LCAweDI1LCAweGZhLCAweDcwLCAweDFmLCAweDExLCAweGFj fSwKKysgICAgLyogViAqLworKyAgICB7MHg1NywgMHgyYywgMHg4ZSwgMHg3NiwgMHg4NywgMHgy NiwgMHg0NywgMHg5NywKKysgICAgIDB4N2UsIDB4NzQsIDB4ZmIsIDB4ZGQsIDB4YzQsIDB4OTUs IDB4MDEsIDB4ZDF9LAorKyAgICAvKiBSICovCisrICAgIHsweDQ4LCAweGU5LCAweGJkLCAweDBk LCAweDA2LCAweGVlLCAweDE4LCAweGZiLAorKyAgICAgMHhlNCwgMHg1NywgMHg5MCwgMHhkNSwg MHhjMywgMHhmYywgMHg5YiwgMHg3M30KKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGFlc18xOTJfbWN0X2tleVsyNF0gPQorKyAgICB7IDB4YjcsIDB4NmMsIDB4MzQsIDB4ZDEs IDB4MDksIDB4NjcsIDB4YWIsIDB4NzMsCisrICAgIDB4NGQsIDB4NWEsIDB4ZDUsIDB4MzQsIDB4 OTgsIDB4MTYsIDB4MGIsIDB4OTEsCisrICAgIDB4YmMsIDB4MzUsIDB4NTEsIDB4MTYsIDB4NmIs IDB4YWUsIDB4OTMsIDB4OGEKKyt9OworKworK3N0YXRpYyBjb25zdCBBRVNfUFJOR19NQ1QgYWVz XzE5Ml9tY3RfdHYgPSB7CisrICAgIC8qIERUICovCisrICAgIHsweDg0LCAweGNlLCAweDIyLCAw eDdkLCAweDkxLCAweDVhLCAweGEzLCAweGM5LAorKyAgICAgMHg4NCwgMHgzYywgMHgwYSwgMHhi MywgMHhhOSwgMHg2MywgMHgxNSwgMHg1Mn0sCisrICAgIC8qIFYgKi8KKysgICAgezB4YjYsIDB4 YWYsIDB4ZTYsIDB4OGYsIDB4OTksIDB4OWUsIDB4OTAsIDB4NjQsCisrICAgICAweGRkLCAweGM3 LCAweDdhLCAweGMxLCAweGJiLCAweDkwLCAweDNhLCAweDZkfSwKKysgICAgLyogUiAqLworKyAg ICB7MHhmYywgMHg4NSwgMHg2MCwgMHg5YSwgMHgyOSwgMHg2ZiwgMHhlZiwgMHgyMSwKKysgICAg IDB4ZGQsIDB4ODYsIDB4MjAsIDB4MzIsIDB4OGEsIDB4MjksIDB4NmYsIDB4NDd9CisrfTsKKysK KytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X21jdF9rZXlbMzJdID0KKysgICAg eyAweDliLCAweDA1LCAweGM4LCAweDY4LCAweGZmLCAweDQ3LCAweGY4LCAweDNhLAorKyAgICAw eGE2LCAweDNhLCAweGE4LCAweGNiLCAweDRlLCAweDcxLCAweGIyLCAweGUwLAorKyAgICAweGI4 LCAweDdlLCAweGYxLCAweDM3LCAweGI2LCAweGI0LCAweGY2LCAweDZkLAorKyAgICAweDg2LCAw eDMyLCAweGZjLCAweDFmLCAweDVlLCAweDFkLCAweDFlLCAweDUwCisrfTsKKysKKytzdGF0aWMg Y29uc3QgQUVTX1BSTkdfTUNUIGFlc18yNTZfbWN0X3R2ID0geworKyAgICAvKiBEVCAqLworKyAg ICB7MHgzMSwgMHg2ZSwgMHgzNSwgMHg5YSwgMHhiMSwgMHg0NCwgMHhmMCwgMHhlZSwKKysgICAg IDB4NjIsIDB4NmQsIDB4MDQsIDB4NDYsIDB4ZTAsIDB4YTMsIDB4OTIsIDB4NGN9LAorKyAgICAv KiBWICovCisrICAgIHsweDRmLCAweGNkLCAweGMxLCAweDg3LCAweDgyLCAweDFmLCAweDRkLCAw eGExLAorKyAgICAgMHgzZSwgMHgwZSwgMHg1NiwgMHg0NCwgMHg1OSwgMHhlOCwgMHg4MywgMHhj YX0sCisrICAgIC8qIFIgKi8KKysgICAgezB4YzgsIDB4ODcsIDB4YzIsIDB4NjEsIDB4NWIsIDB4 ZDAsIDB4YjksIDB4ZTEsCisrICAgICAweGU3LCAweGYzLCAweDhiLCAweGQ3LCAweDViLCAweGQ1 LCAweGYxLCAweDhkfQorK307CisrCisrc3RhdGljIHZvaWQgZHVtcChjb25zdCB1bnNpZ25lZCBj aGFyICpiLCBpbnQgbikKKyt7CisrICAgIHdoaWxlIChuLS0gPiAwKSB7CisrICAgICAgICBwcmlu dGYoIiAlMDJ4IiwgKmIrKyk7CisrICAgIH0KKyt9CisrCisrc3RhdGljIHZvaWQgY29tcGFyZShj b25zdCB1bnNpZ25lZCBjaGFyICpyZXN1bHQsCisrICAgICAgICAgICAgICAgICAgICBjb25zdCB1 bnNpZ25lZCBjaGFyICpleHBlY3RlZCwgaW50IG4pCisreworKyAgICBpbnQgaTsKKysKKysgICAg Zm9yIChpID0gMDsgaSA8IG47ICsraSkKKysgICAgICAgIGlmIChyZXN1bHRbaV0gIT0gZXhwZWN0 ZWRbaV0pIHsKKysgICAgICAgICAgICBwdXRzKCJSYW5kb20gdGVzdCBmYWlsZWQsIGdvdDoiKTsK KysgICAgICAgICAgICBkdW1wKHJlc3VsdCwgbik7CisrICAgICAgICAgICAgcHV0cygiXG4gICAg ICAgICAgICAgICBleHBlY3RlZDoiKTsKKysgICAgICAgICAgICBkdW1wKGV4cGVjdGVkLCBuKTsK KysgICAgICAgICAgICBwdXRjaGFyKCdcbicpOworKyAgICAgICAgICAgIEVYSVQoMSk7CisrICAg ICAgICB9CisrfQorKworK3N0YXRpYyB2b2lkIHJ1bl90ZXN0KGNvbnN0IHVuc2lnbmVkIGNoYXIg KmtleSwgaW50IGtleWxlbiwKKysgICAgICAgICAgICAgICAgICAgICBjb25zdCBBRVNfUFJOR19N Q1QgKiB0dikKKyt7CisrICAgIHVuc2lnbmVkIGNoYXIgYnVmWzE2XSwgZHRbMTZdOworKyAgICBp bnQgaSwgajsKKysgICAgRklQU194OTMxX3Jlc2V0KCk7CisrICAgIEZJUFNfeDkzMV90ZXN0X21v ZGUoKTsKKysgICAgRklQU194OTMxX3NldF9rZXkoa2V5LCBrZXlsZW4pOworKyAgICBGSVBTX3g5 MzFfc2VlZCh0di0+ViwgMTYpOworKyAgICBtZW1jcHkoZHQsIHR2LT5EVCwgMTYpOworKyAgICBm b3IgKGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworKyAgICAgICAgRklQU194OTMxX3NldF9kdChk dCk7CisrICAgICAgICBGSVBTX3g5MzFfYnl0ZXMoYnVmLCAxNik7CisrICAgICAgICAvKiBJbmNy ZW1lbnQgRFQgKi8KKysgICAgICAgIGZvciAoaiA9IDE1OyBqID49IDA7IGotLSkgeworKyAgICAg ICAgICAgIGR0W2pdKys7CisrICAgICAgICAgICAgaWYgKGR0W2pdKQorKyAgICAgICAgICAgICAg ICBicmVhazsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBjb21wYXJlKGJ1ZiwgdHYtPlIs IDE2KTsKKyt9CisrCisraW50IG1haW4oKQorK3sKKysgICAgcnVuX3Rlc3QoYWVzXzEyOF9tY3Rf a2V5LCAxNiwgJmFlc18xMjhfbWN0X3R2KTsKKysgICAgcHJpbnRmKCJGSVBTIFBSTkcgdGVzdCAx IGRvbmVcbiIpOworKyAgICBydW5fdGVzdChhZXNfMTkyX21jdF9rZXksIDI0LCAmYWVzXzE5Ml9t Y3RfdHYpOworKyAgICBwcmludGYoIkZJUFMgUFJORyB0ZXN0IDIgZG9uZVxuIik7CisrICAgIHJ1 bl90ZXN0KGFlc18yNTZfbWN0X2tleSwgMzIsICZhZXNfMjU2X21jdF90dik7CisrICAgIHByaW50 ZigiRklQUyBQUk5HIHRlc3QgMyBkb25lXG4iKTsKKysgICAgcmV0dXJuIDA7CisrfQorKworKyNl bmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9maXBzX3JzYV9zZWxmdGVz dC5jLmZpcHMgb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9maXBzX3JzYV9zZWxmdGVzdC5jCist LS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vZmlwcy9maXBzX3JzYV9zZWxmdGVzdC5jLmZpcHMJMjAx Ni0wOS0wOCAxMTozNzozOC43NDM0NjAxMTkgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wL2NyeXB0 by9maXBzL2ZpcHNfcnNhX3NlbGZ0ZXN0LmMJMjAxNi0wOS0wOCAxMTozNzozOC43NDM0NjAxMTkg KzAyMDAKK0BAIC0wLDAgKzEsNTc4IEBACisrLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmlnaHQg KGMpIDIwMDMtMjAwNyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K KysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y bXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92 aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysg KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl IGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5v dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l ciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv dmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2 ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysg KiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoK KysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUg T3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAo aHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NM IFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICog ICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJl IHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBl cm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3Jn LgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5v dCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGlu IHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2Yg dGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkg Zm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3ds ZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3Bl ZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBU b29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJF IElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysg KiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN SVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJ QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisr ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO RywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P RFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV U0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElU WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJ TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE VklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysgKi8K KysKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrI2lm ZGVmIE9QRU5TU0xfRklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrIyBpbmNsdWRl ICJpbnRlcm5hbC9maXBzX2ludC5oIgorKyNlbmRpZgorKyNpbmNsdWRlIDxvcGVuc3NsL3JzYS5o PgorKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+Cisr I2luY2x1ZGUgPG9wZW5zc2wvb3BlbnNzbGNvbmYuaD4KKysjaW5jbHVkZSAiZmlwc19sb2NsLmgi CisrCisrI2lmZGVmIE9QRU5TU0xfRklQUworKworK3N0YXRpYyBpbnQgc2V0cnNha2V5KFJTQSAq a2V5KQorK3sKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2V5ZGF0YV9uW10gPSB7 CisrICAgICAgICAweDAwLCAweGM5LCAweGQ1LCAweDZkLCAweDlkLCAweDkwLCAweGRiLCAweDQz LCAweGQ2LCAweDAyLCAweGVkLCAweDk2LCAweDg4LCAweDEzLCAweDhhLAorKyAgICAgICAgMHhi MiwgMHhiZiwgMHg2ZSwgMHhhMSwgMHgwNiwgMHgxMCwgMHhiMiwgMHg3OCwgMHgzNywgMHhhNywg MHgxNCwgMHhhOCwgMHhmZiwgMHhkZCwgMHgwMCwKKysgICAgICAgIDB4ZGQsIDB4YjQsIDB4OTMs IDB4YTAsIDB4NDUsIDB4Y2MsIDB4OTYsIDB4OTAsIDB4ZWQsIDB4YWQsIDB4YTksIDB4ZGQsIDB4 YzQsIDB4ZDYsIDB4Y2EsCisrICAgICAgICAweDBjLCAweGYwLCAweGVkLCAweDRmLCAweDcyLCAw eDVlLCAweDIxLCAweDQ5LCAweDlhLCAweDE4LCAweDEyLCAweDE1LCAweDhmLCAweDkwLCAweDVh LAorKyAgICAgICAgMHhkYiwgMHhiNiwgMHgzMywgMHg5OSwgMHhhMywgMHhlNiwgMHhiNCwgMHhm MCwgMHhjNCwgMHg5NywgMHgyMSwgMHgyNiwgMHhiYiwgMHhlMywgMHhiYSwKKysgICAgICAgIDB4 ZjIsIDB4ZmYsIDB4YTAsIDB4NzIsIDB4ZGEsIDB4ODksIDB4NjMsIDB4OGUsIDB4OGIsIDB4M2Us IDB4MDgsIDB4OWQsIDB4OTIsIDB4MmEsIDB4YmUsCisrICAgICAgICAweDE2LCAweGUxLCAweDQz LCAweDE1LCAweGZjLCAweDU3LCAweGM3LCAweDFmLCAweDA5LCAweDExLCAweDY3LCAweDFjLCAw eGE5LCAweDk2LCAweGQxLAorKyAgICAgICAgMHg4YiwgMHgzZSwgMHg4MCwgMHg5MywgMHhjMSwg MHg1OSwgMHhkMCwgMHg2ZCwgMHgzOSwgMHhmMiwgMHhhYywgMHg5NSwgMHhjYywgMHgxMCwgMHg3 NSwKKysgICAgICAgIDB4ZTksIDB4MzEsIDB4MjQsIDB4ZDEsIDB4NDMsIDB4YWYsIDB4NjgsIDB4 NTIsIDB4NGIsIDB4ZTcsIDB4MTYsIDB4ZDcsIDB4NDksIDB4NjUsIDB4NmYsCisrICAgICAgICAw eDI2LCAweGMwLCAweDg2LCAweGFkLCAweGMwLCAweDA3LCAweDBhLCAweGMxLCAweGUxLCAweDJm LCAweDg3LCAweDg1LCAweDg2LCAweDNiLCAweGRjLAorKyAgICAgICAgMHg1YSwgMHg5OSwgMHhi ZSwgMHhlOSwgMHhmOSwgMHhiOSwgMHhlOSwgMHg4MiwgMHgyNywgMHg1MSwgMHgwNCwgMHgxNSwg MHhhYiwgMHgwNiwgMHgwZSwKKysgICAgICAgIDB4NzYsIDB4NWEsIDB4MjgsIDB4OGQsIDB4OTIs IDB4YmQsIDB4YzUsIDB4YjUsIDB4N2IsIDB4YTgsIDB4ZGYsIDB4NGUsIDB4NDcsIDB4YTIsIDB4 YzEsCisrICAgICAgICAweGU3LCAweDUyLCAweGJmLCAweDQ3LCAweGY3LCAweDYyLCAweGUwLCAw eDNhLCAweDZmLCAweDRkLCAweDZhLCAweDRkLCAweDRlLCAweGQ0LCAweGI5LAorKyAgICAgICAg MHg1OSwgMHg2OSwgMHhmYSwgMHhiMiwgMHgxNCwgMHhjMSwgMHhlZSwgMHhlNiwgMHgyZiwgMHg5 NSwgMHhjZCwgMHg5NCwgMHg3MiwgMHhhZSwgMHhlNCwKKysgICAgICAgIDB4ZGIsIDB4MTgsIDB4 OWEsIDB4YzQsIDB4Y2QsIDB4NzAsIDB4YmQsIDB4ZWUsIDB4MzEsIDB4MTYsIDB4YjcsIDB4NDks IDB4NjUsIDB4YWMsIDB4NDAsCisrICAgICAgICAweDE5LCAweDBlLCAweGI1LCAweDZkLCAweDgz LCAweGYxLCAweDM2LCAweGJiLCAweDA4LCAweDJmLCAweDJlLCAweDRlLCAweDkyLCAweDYyLCAw eGE0LAorKyAgICAgICAgMHhmZiwgMHg1MCwgMHhkYiwgMHgyMCwgMHg0NSwgMHhhMiwgMHhlYiwg MHgxNiwgMHg3YSwgMHhmMiwgMHhkNSwgMHgyOCwgMHhjMSwgMHhmZCwgMHg0ZSwKKysgICAgICAg IDB4MDMsIDB4NzEKKysgICAgfTsKKysKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg a2V5ZGF0YV9lW10gPSB7IDB4MDEsIDB4MDAsIDB4MDEgfTsKKysKKysgICAgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIga2V5ZGF0YV9kW10gPSB7CisrICAgICAgICAweDM2LCAweDI3LCAweDNk LCAweGIxLCAweGY5LCAweDFiLCAweGRiLCAweGE3LCAweGEwLCAweDQxLCAweDdmLCAweDEyLCAw eDIzLCAweGFjLCAweDIzLAorKyAgICAgICAgMHgyOSwgMHg5OSwgMHhkNSwgMHgzYSwgMHg3Yiwg MHg2MCwgMHg2NywgMHg0MSwgMHgwNywgMHg2MywgMHg1MywgMHhiNCwgMHhkMiwgMHhlNywgMHg1 OCwKKysgICAgICAgIDB4OTUsIDB4MGEsIDB4YzcsIDB4MDUsIDB4ZjMsIDB4NGUsIDB4YjIsIDB4 YjQsIDB4MTIsIDB4ZDQsIDB4NzAsIDB4ZGMsIDB4NGYsIDB4ODUsIDB4MDYsCisrICAgICAgICAw eGQzLCAweGRkLCAweGQ4LCAweDYzLCAweDI3LCAweDNlLCAweDY3LCAweDMxLCAweDIxLCAweDI0 LCAweDM5LCAweDA0LCAweGJjLCAweDA2LCAweGE0LAorKyAgICAgICAgMHhjYywgMHhjZSwgMHgy YiwgMHg3YSwgMHhmZSwgMHg3YiwgMHhhZCwgMHhkZSwgMHgxMSwgMHg2ZSwgMHhhMywgMHhhNSwg MHhlNiwgMHgwNCwgMHg1MywKKysgICAgICAgIDB4MGUsIDB4YTMsIDB4NGUsIDB4MmQsIDB4YjQs IDB4OGYsIDB4MzEsIDB4YmYsIDB4Y2EsIDB4NzUsIDB4MjUsIDB4NTIsIDB4MDIsIDB4ODUsIDB4 ZGUsCisrICAgICAgICAweDNkLCAweGIyLCAweDcyLCAweDQzLCAweGIyLCAweDg5LCAweDhhLCAw eDlhLCAweDM0LCAweDQxLCAweDI2LCAweDNmLCAweDlhLCAweDY3LCAweGJlLAorKyAgICAgICAg MHhhNCwgMHg5NiwgMHg3YiwgMHgwZSwgMHg3NSwgMHhiYSwgMHhhNiwgMHg5MywgMHhkNSwgMHhi OCwgMHhkOCwgMHhiOCwgMHg1NywgMHhmMiwgMHg0YiwKKysgICAgICAgIDB4MGYsIDB4MTQsIDB4 ODEsIDB4ZDEsIDB4NTcsIDB4NGUsIDB4ZjYsIDB4NDUsIDB4NGMsIDB4YTYsIDB4M2IsIDB4ZDAs IDB4NzAsIDB4Y2EsIDB4ZDMsCisrICAgICAgICAweDlkLCAweDU1LCAweGRlLCAweDIyLCAweDA1 LCAweGU3LCAweDhlLCAweDI4LCAweDRkLCAweGVlLCAweDExLCAweGNmLCAweGI2LCAweDY3LCAw eDc2LAorKyAgICAgICAgMHgwOSwgMHhkMywgMHhlMywgMHgzYywgMHgxMywgMHhmOSwgMHg5OSwg MHgzNCwgMHgxMCwgMHg3YiwgMHhlYywgMHg4MSwgMHgzOCwgMHhmMCwgMHhiNiwKKysgICAgICAg IDB4MzQsIDB4OWMsIDB4OWIsIDB4NTAsIDB4NmYsIDB4MGIsIDB4OTEsIDB4ODEsIDB4NGQsIDB4 ODksIDB4OTQsIDB4MDQsIDB4N2IsIDB4ZjAsIDB4M2MsCisrICAgICAgICAweGY0LCAweGIxLCAw eGIyLCAweDAwLCAweDQ4LCAweDhkLCAweDVhLCAweDhmLCAweDg4LCAweDllLCAweGM1LCAweGFi LCAweDNhLCAweDllLCAweDQ0LAorKyAgICAgICAgMHgzZiwgMHg1NCwgMHhlNywgMHhkOSwgMHg2 ZSwgMHg0NywgMHhhYSwgMHhhMSwgMHhiZCwgMHg0MCwgMHg0NiwgMHgzMSwgMHhmOSwgMHhmMCwg MHgzNCwKKysgICAgICAgIDB4YjYsIDB4MDQsIDB4ZTEsIDB4MmIsIDB4NWIsIDB4NzMsIDB4ODYs IDB4ZGQsIDB4M2EsIDB4OTIsIDB4MWIsIDB4NzEsIDB4YzcsIDB4M2YsIDB4MzIsCisrICAgICAg ICAweGU1LCAweGMzLCAweGMyLCAweGFiLCAweGExLCAweDdlLCAweGJmLCAweGE0LCAweDUyLCAw eGEwLCAweGIwLCAweDY4LCAweDkwLCAweGQxLCAweDIwLAorKyAgICAgICAgMHgxMiwgMHg3OSwg MHhlOSwgMHhkNywgMHhjOSwgMHg0MCwgMHhiYSwgMHhmMiwgMHgxOSwgMHhjNywgMHhhNSwgMHgw MCwgMHg5MiwgMHg4NiwgMHgwZCwKKysgICAgICAgIDB4MDEKKysgICAgfTsKKysKKysgICAgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2V5ZGF0YV9wW10gPSB7CisrICAgICAgICAweDAwLCAw eGZjLCAweDVjLCAweDZlLCAweDE2LCAweGNlLCAweDFmLCAweDAzLCAweDdiLCAweGNkLCAweGY3 LCAweGIzLCAweDcyLCAweGIyLCAweDhmLAorKyAgICAgICAgMHgxNiwgMHg3MiwgMHhiOCwgMHg1 NiwgMHhhZSwgMHhmNywgMHhjZCwgMHg2NywgMHhkOCwgMHg0ZSwgMHg3ZCwgMHgwNywgMHhhZiwg MHhkNSwgMHg0MywKKysgICAgICAgIDB4MjYsIDB4YzMsIDB4MzUsIDB4YmUsIDB4NDMsIDB4OGYs IDB4NGUsIDB4MmYsIDB4MWMsIDB4NDMsIDB4NGUsIDB4NmIsIDB4ZDIsIDB4YjIsIDB4ZWMsCisr ICAgICAgICAweDUyLCAweDZkLCAweDk3LCAweDUyLCAweDJiLCAweGNjLCAweDVjLCAweDNhLCAw eDZiLCAweGY0LCAweDE0LCAweGM2LCAweDc0LCAweGRhLCAweDY2LAorKyAgICAgICAgMHgzOCwg MHgxYywgMHg3YSwgMHgzZiwgMHg4NCwgMHgyZiwgMHhlMywgMHhmOSwgMHg1YSwgMHhiOCwgMHg2 NSwgMHg2OSwgMHg0NiwgMHgwNiwgMHhhMywKKysgICAgICAgIDB4MzcsIDB4NzksIDB4YjIsIDB4 YTEsIDB4NWIsIDB4NTgsIDB4ZWQsIDB4NWUsIDB4YTcsIDB4NWYsIDB4OGMsIDB4NjUsIDB4NjYs IDB4YmIsIDB4ZDEsCisrICAgICAgICAweDI0LCAweDM2LCAweGU2LCAweDM3LCAweGE3LCAweDNk LCAweDQ5LCAweDc3LCAweDhhLCAweDhjLCAweDM0LCAweGQ4LCAweDY5LCAweDI5LCAweGYzLAor KyAgICAgICAgMHg0ZCwgMHg1OCwgMHgyMiwgMHhiMCwgMHg1MSwgMHgyNCwgMHhiNiwgMHg0MCwg MHhhOCwgMHg4NiwgMHg1OSwgMHgwYSwgMHhiNywgMHhiYSwgMHg1YywKKysgICAgICAgIDB4OTcs IDB4ZGEsIDB4NTcsIDB4ZTgsIDB4MzYsIDB4ZGEsIDB4N2EsIDB4OWMsIDB4YWQKKysgICAgfTsK KysKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2V5ZGF0YV9xW10gPSB7CisrICAg ICAgICAweDAwLCAweGNjLCAweGJlLCAweDdiLCAweDA5LCAweDY5LCAweDA2LCAweGVlLCAweDQ1 LCAweGJmLCAweDg4LCAweDQ3LCAweDM4LCAweGE4LCAweGY4LAorKyAgICAgICAgMHgxNywgMHhl NSwgMHhiNiwgMHhiYSwgMHg2NywgMHg1NSwgMHhlMywgMHhlOCwgMHgwNSwgMHg4YiwgMHhiOCwg MHhlMiwgMHg1MywgMHhkNiwgMHg4ZSwKKysgICAgICAgIDB4ZWYsIDB4MmMsIDB4ZTcsIDB4NGYs IDB4NGEsIDB4ZjcsIDB4NGUsIDB4MjYsIDB4OGQsIDB4ODUsIDB4MGIsIDB4M2YsIDB4ZWMsIDB4 YzMsIDB4MWMsCisrICAgICAgICAweGQ0LCAweGViLCAweGVjLCAweDZhLCAweGM4LCAweDcyLCAw eDJhLCAweDI1LCAweDdkLCAweGZkLCAweGE2LCAweDc3LCAweDk2LCAweGYwLCAweDFlLAorKyAg ICAgICAgMHhjZCwgMHgyOCwgMHg1NywgMHhmOCwgMHgzNywgMHgzMCwgMHg3NSwgMHg2YiwgMHhi ZCwgMHhkNCwgMHg3YiwgMHgwYywgMHg4NywgMHhjNSwgMHg2YywKKysgICAgICAgIDB4ODcsIDB4 NDAsIDB4YTUsIDB4YmIsIDB4MjcsIDB4MmMsIDB4NzgsIDB4YzksIDB4NzQsIDB4NWEsIDB4NTQs IDB4NWIsIDB4MGIsIDB4MzAsIDB4NmYsCisrICAgICAgICAweDQ0LCAweDRhLCAweGZhLCAweDcx LCAweGU0LCAweDIxLCAweDYxLCAweDY2LCAweGY5LCAweGVlLCAweDY1LCAweGRlLCAweDdjLCAw eDA0LCAweGQ3LAorKyAgICAgICAgMHhmZCwgMHhhOSwgMHgxNSwgMHg1YiwgMHg3ZiwgMHhlMiwg MHg3YSwgMHhiYSwgMHg2OSwgMHg4NiwgMHg3MiwgMHhhNiwgMHgwNiwgMHg4ZCwgMHg5YiwKKysg ICAgICAgIDB4OTAsIDB4NTUsIDB4NjAsIDB4OWUsIDB4NGMsIDB4NWQsIDB4YTksIDB4YjYsIDB4 NTUKKysgICAgfTsKKysKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2V5ZGF0YV9k bXAxW10gPSB7CisrICAgICAgICAweDdhLCAweGQ2LCAweDEyLCAweGQwLCAweDBlLCAweGVjLCAw eDkxLCAweGE5LCAweDg1LCAweDhiLCAweGY4LCAweDUwLCAweGYwLCAweDExLCAweDJlLAorKyAg ICAgICAgMHgwMCwgMHgxMSwgMHgzMiwgMHg0MCwgMHg2MCwgMHg2NiwgMHgxZiwgMHgxMSwgMHhl ZSwgMHhjMiwgMHg3NSwgMHgyNywgMHg2NSwgMHg0YiwgMHgxNiwKKysgICAgICAgIDB4NjcsIDB4 MTYsIDB4OTUsIDB4ZDIsIDB4MTQsIDB4YzMsIDB4MWQsIDB4YjMsIDB4NDgsIDB4MWYsIDB4Yjcs IDB4ZTQsIDB4MGIsIDB4MmIsIDB4NzQsCisrICAgICAgICAweGMzLCAweGRiLCAweDUwLCAweDI3 LCAweGY5LCAweDg1LCAweDNhLCAweGZhLCAweGE5LCAweDA4LCAweDIzLCAweGMxLCAweDY1LCAw eDNkLCAweDM0LAorKyAgICAgICAgMHgzYSwgMHhjOCwgMHg1NiwgMHg3YSwgMHg2NSwgMHg0NSwg MHgzNiwgMHg2ZSwgMHhhZSwgMHgyYSwgMHhjZSwgMHg5ZiwgMHg0MywgMHg0MywgMHhkNywKKysg ICAgICAgIDB4MTAsIDB4ZTksIDB4OWUsIDB4MTgsIDB4ZjQsIDB4YTQsIDB4MzUsIDB4ZGEsIDB4 OGEsIDB4NmIsIDB4YjAsIDB4M2YsIDB4ZGQsIDB4NTMsIDB4ZTMsCisrICAgICAgICAweGE4LCAw eGM1LCAweDRlLCAweDc5LCAweDlkLCAweDFmLCAweDUxLCAweDhjLCAweGEyLCAweGNhLCAweDY2 LCAweDNjLCAweDZhLCAweDJhLCAweGZmLAorKyAgICAgICAgMHg4ZSwgMHhkMiwgMHhmMywgMHhi NywgMHhjYiwgMHg4MiwgMHhkYSwgMHhkZSwgMHgyYywgMHhlNiwgMHhkMiwgMHg4YywgMHhiMywg MHhhZCwgMHhiNiwKKysgICAgICAgIDB4NGMsIDB4OTUsIDB4NTUsIDB4NzYsIDB4YmQsIDB4Yzks IDB4YzgsIDB4ZDEKKysgICAgfTsKKysKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg a2V5ZGF0YV9kbXExW10gPSB7CisrICAgICAgICAweDAwLCAweDgzLCAweDIzLCAweDFkLCAweGJi LCAweDExLCAweDQyLCAweDE3LCAweDJiLCAweDI1LCAweDVhLCAweDJjLCAweDAzLCAweGU2LCAw eDc1LAorKyAgICAgICAgMHhjMSwgMHgxOCwgMHhhOCwgMHhjOSwgMHgwYiwgMHg5NiwgMHhiZiwg MHhiYSwgMHhjNCwgMHg5MiwgMHg5MSwgMHg4MCwgMHhhNSwgMHgyMiwgMHgyZiwKKysgICAgICAg IDB4YmEsIDB4OTEsIDB4OTAsIDB4MzYsIDB4MDEsIDB4NTYsIDB4MTUsIDB4MDAsIDB4MmMsIDB4 NzQsIDB4YTIsIDB4OTcsIDB4ZjcsIDB4MTUsIDB4YTEsCisrICAgICAgICAweDQ5LCAweGRmLCAw eDMyLCAweDM1LCAweGQyLCAweGRkLCAweDBjLCAweDkxLCAweGE2LCAweGY4LCAweGU3LCAweGJl LCAweDgxLCAweDM2LCAweDliLAorKyAgICAgICAgMHgwMywgMHhkYywgMHg2YiwgMHgzYiwgMHhk OCwgMHg1ZCwgMHg3OSwgMHg1NywgMHhlMCwgMHhlNiwgMHg0ZiwgMHg0OSwgMHhkZiwgMHg0Yywg MHg1YywKKysgICAgICAgIDB4MGUsIDB4ZTUsIDB4MjEsIDB4NDEsIDB4OTUsIDB4ZmQsIDB4YWQs IDB4ZmYsIDB4OWEsIDB4M2UsIDB4YTAsIDB4ZjksIDB4MGYsIDB4NTksIDB4OWUsCisrICAgICAg ICAweDZhLCAweGE3LCAweDdiLCAweDcxLCAweGE3LCAweDI0LCAweDlhLCAweDM2LCAweDUyLCAw eGFlLCAweDk3LCAweDIwLCAweGMxLCAweDVlLCAweDc4LAorKyAgICAgICAgMHhkOSwgMHg0Nywg MHg4YiwgMHgxZSwgMHg2NywgMHhmMiwgMHhhZiwgMHg5OCwgMHhlNiwgMHgyZCwgMHhlZiwgMHgx MCwgMHhkNywgMHhmMSwgMHhhYiwKKysgICAgICAgIDB4NDksIDB4ZWUsIDB4ZTUsIDB4NGIsIDB4 N2UsIDB4YWUsIDB4MWYsIDB4MWQsIDB4NjEKKysgICAgfTsKKysKKysgICAgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIga2V5ZGF0YV9pcW1wW10gPSB7CisrICAgICAgICAweDIzLCAweDk2LCAw eGMxLCAweDkxLCAweDE3LCAweDVlLCAweDBhLCAweDgzLCAweGQyLCAweGRjLCAweDdiLCAweDY5 LCAweGIyLCAweDU5LCAweDFkLAorKyAgICAgICAgMHgzMywgMHg1OCwgMHg1MiwgMHgzZiwgMHgx OCwgMHhjNywgMHgwOSwgMHg1MCwgMHgxYywgMHhiOSwgMHhhMSwgMHhiYiwgMHg0YywgMHhhMiwg MHgzOCwKKysgICAgICAgIDB4NDAsIDB4NGMsIDB4OWEsIDB4OGUsIDB4ZmUsIDB4OWMsIDB4OTAs IDB4OTIsIDB4ZDAsIDB4NzEsIDB4OWYsIDB4ODksIDB4OTksIDB4NTAsIDB4OTEsCisrICAgICAg ICAweDFmLCAweDM0LCAweDhiLCAweDc0LCAweDUzLCAweDExLCAweDExLCAweDRhLCAweDcwLCAw eGUyLCAweGY3LCAweDMwLCAweGQ4LCAweDhjLCAweDgwLAorKyAgICAgICAgMHhlMSwgMHhjYywg MHg5ZiwgMHhmMSwgMHg2MywgMHgxNywgMHgxYSwgMHg3ZCwgMHg2NywgMHgyOSwgMHg0YywgMHhj YiwgMHg0ZSwgMHg3NCwgMHg3YiwKKysgICAgICAgIDB4ZTAsIDB4M2UsIDB4OWUsIDB4MmYsIDB4 ZjQsIDB4NjcsIDB4OGYsIDB4ZWMsIDB4YjksIDB4NWMsIDB4MDAsIDB4MWUsIDB4N2UsIDB4YTIs IDB4N2IsCisrICAgICAgICAweDkyLCAweGM5LCAweDZmLCAweDRjLCAweGU0LCAweDBlLCAweGY5 LCAweDQ4LCAweDYzLCAweGNkLCAweDUwLCAweDIyLCAweDVkLCAweGJmLCAweGI2LAorKyAgICAg ICAgMHg5ZCwgMHgwMSwgMHgzMywgMHg2YSwgMHhmNCwgMHg1MCwgMHhiZSwgMHg4NiwgMHg5OCwg MHg0ZiwgMHhjYSwgMHgzZiwgMHgzYSwgMHhmYSwgMHhjZiwKKysgICAgICAgIDB4MDcsIDB4NDAs IDB4YzQsIDB4YWEsIDB4YWQsIDB4YWUsIDB4YmUsIDB4YmYKKysgICAgfTsKKysKKysgICAgaW50 IHJ2ID0gMDsKKysgICAgQklHTlVNICpuID0gTlVMTCwgKmUgPSBOVUxMLCAqZCA9IE5VTEwsICpw ID0gTlVMTCwgKnEgPSBOVUxMLCAqZG1wMSA9IE5VTEwsICpkbXExID0gTlVMTCwgKmlxbXAgPSBO VUxMOworKworKyAgICBmaXBzX2xvYWRfa2V5X2NvbXBvbmVudChuLCBrZXlkYXRhKTsKKysgICAg Zmlwc19sb2FkX2tleV9jb21wb25lbnQoZSwga2V5ZGF0YSk7CisrICAgIGZpcHNfbG9hZF9rZXlf Y29tcG9uZW50KGQsIGtleWRhdGEpOworKyAgICBmaXBzX2xvYWRfa2V5X2NvbXBvbmVudChwLCBr ZXlkYXRhKTsKKysgICAgZmlwc19sb2FkX2tleV9jb21wb25lbnQocSwga2V5ZGF0YSk7CisrICAg IGZpcHNfbG9hZF9rZXlfY29tcG9uZW50KGRtcDEsIGtleWRhdGEpOworKyAgICBmaXBzX2xvYWRf a2V5X2NvbXBvbmVudChkbXExLCBrZXlkYXRhKTsKKysgICAgZmlwc19sb2FkX2tleV9jb21wb25l bnQoaXFtcCwga2V5ZGF0YSk7CisrCisrICAgIFJTQV9zZXQwX2tleShrZXksIG4sIGUsIGQpOwor KyAgICBSU0Ffc2V0MF9mYWN0b3JzKGtleSwgcCwgcSk7CisrICAgIFJTQV9zZXQwX2NydF9wYXJh bXMoa2V5LCBkbXAxLCBkbXExLCBpcW1wKTsKKysKKysgICAgcnYgPSAxOworK2VycjoKKysgICAg aWYgKCFydikgeworKyAgICAgICAgQk5fZnJlZShuKTsKKysgICAgICAgIEJOX2ZyZWUoZSk7Cisr ICAgICAgICBCTl9mcmVlKGQpOworKyAgICAgICAgQk5fZnJlZShwKTsKKysgICAgICAgIEJOX2Zy ZWUocSk7CisrICAgICAgICBCTl9mcmVlKGRtcDEpOworKyAgICAgICAgQk5fZnJlZShkbXExKTsK KysgICAgICAgIEJOX2ZyZWUoaXFtcCk7CisrICAgIH0KKysgICAgcmV0dXJuIHJ2OworK30KKysK KysvKiBLbm93biBBbnN3ZXIgVGVzdCAoS0FUKSBkYXRhIGZvciB0aGUgYWJvdmUgUlNBIHByaXZh dGUga2V5IHNpZ25pbmcKKysgKiBrYXRfdGJzLgorKyAqLworKworK3N0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGthdF90YnNbXSA9CisrICAgICJPcGVuU1NMIEZJUFMgMTQwLTIgUHVibGljIEtl eSBSU0EgS0FUIjsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1BTU19T SEExW10gPSB7CisrICAgIDB4QzIsIDB4ODAsIDB4ODIsIDB4NTYsIDB4RDgsIDB4QTcsIDB4QjIs IDB4OUMsIDB4RjUsIDB4RDYsIDB4M0MsIDB4RTMsCisrICAgIDB4QkYsIDB4RTksIDB4M0EsIDB4 NTMsIDB4NDAsIDB4QUUsIDB4RjIsIDB4QTksIDB4NkEsIDB4MzksIDB4NDksIDB4NUIsCisrICAg IDB4MDUsIDB4N0YsIDB4NjcsIDB4MzgsIDB4MkUsIDB4MUQsIDB4RTEsIDB4OTMsIDB4MjIsIDB4 NjUsIDB4NzksIDB4ODQsCisrICAgIDB4NjgsIDB4RkEsIDB4RDgsIDB4QUYsIDB4QTEsIDB4OTgs IDB4NjEsIDB4NkYsIDB4NDQsIDB4MjcsIDB4QTYsIDB4OEIsCisrICAgIDB4Q0YsIDB4MEUsIDB4 MTMsIDB4QTksIDB4Q0UsIDB4RDcsIDB4NkMsIDB4RDIsIDB4MzgsIDB4QjUsIDB4MTYsIDB4Qjks CisrICAgIDB4NjYsIDB4OTQsIDB4NDgsIDB4REUsIDB4OUUsIDB4MTksIDB4M0QsIDB4NkYsIDB4 QjMsIDB4QTEsIDB4OUEsIDB4MTksCisrICAgIDB4REYsIDB4RkIsIDB4QUIsIDB4QTUsIDB4OUYs IDB4MzgsIDB4REEsIDB4QzksIDB4MjEsIDB4OEYsIDB4Q0UsIDB4OTgsCisrICAgIDB4MDEsIDB4 M0EsIDB4QzgsIDB4RTAsIDB4REYsIDB4REEsIDB4RkMsIDB4RjAsIDB4QTYsIDB4ODYsIDB4Mjks IDB4QjUsCisrICAgIDB4N0YsIDB4NjEsIDB4RkIsIDB4QkEsIDB4QzUsIDB4NDksIDB4QjIsIDB4 N0MsIDB4NkEsIDB4MjYsIDB4ODIsIDB4QzQsCisrICAgIDB4OEYsIDB4QUEsIDB4NUIsIDB4MTAs IDB4RDUsIDB4RUUsIDB4QTAsIDB4NTUsIDB4NDIsIDB4RUYsIDB4MzIsIDB4NUEsCisrICAgIDB4 M0YsIDB4NTUsIDB4QjMsIDB4MkMsIDB4MjIsIDB4RTksIDB4NjUsIDB4REEsIDB4OEQsIDB4MEEs IDB4QjksIDB4NzAsCisrICAgIDB4NDMsIDB4Q0MsIDB4M0YsIDB4NjQsIDB4OUMsIDB4QjUsIDB4 NjUsIDB4NDksIDB4QkQsIDB4N0YsIDB4MzUsIDB4QzEsCisrICAgIDB4MjAsIDB4ODUsIDB4MjQs IDB4RkUsIDB4QUEsIDB4NkIsIDB4MzcsIDB4MDQsIDB4QTEsIDB4MEUsIDB4OUQsIDB4NUMsCisr ICAgIDB4QkEsIDB4N0YsIDB4MTQsIDB4NjksIDB4QzUsIDB4OTMsIDB4QjIsIDB4MzMsIDB4QzIs IDB4QzAsIDB4QzcsIDB4REYsCisrICAgIDB4N0UsIDB4OUUsIDB4QTQsIDB4QjAsIDB4QTAsIDB4 NjQsIDB4RDIsIDB4QUMsIDB4RkMsIDB4RkQsIDB4RkQsIDB4OTksCisrICAgIDB4OEYsIDB4NkEs IDB4NDAsIDB4MjYsIDB4QzEsIDB4MkUsIDB4NEUsIDB4OEIsIDB4MzMsIDB4QkUsIDB4RjEsIDB4 NDUsCisrICAgIDB4NTksIDB4OEYsIDB4MzMsIDB4NDAsIDB4MUQsIDB4MkEsIDB4RDIsIDB4Rjcs IDB4NTAsIDB4ODMsIDB4ODksIDB4Q0YsCisrICAgIDB4OTQsIDB4QzYsIDB4RjgsIDB4MzYsIDB4 RjAsIDB4ODQsIDB4MEIsIDB4ODUsIDB4QTUsIDB4MDIsIDB4QTksIDB4MEYsCisrICAgIDB4NDEs IDB4N0EsIDB4NzcsIDB4QTMsIDB4MkYsIDB4NDcsIDB4MUUsIDB4MUQsIDB4RUMsIDB4RTYsIDB4 RDMsIDB4MDEsCisrICAgIDB4MUUsIDB4NkYsIDB4N0EsIDB4OTYsIDB4NTAsIDB4MzcsIDB4Mzcs IDB4NEIsIDB4MjcsIDB4NTIsIDB4MEIsIDB4REMsCisrICAgIDB4REIsIDB4QzcsIDB4QTksIDB4 MzEsIDB4QjIsIDB4NDAsIDB4RUUsIDB4NjAsIDB4NDEsIDB4MjYsIDB4NkEsIDB4MDUsCisrICAg IDB4Q0UsIDB4MDgsIDB4MUQsIDB4ODkKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGthdF9SU0FfUFNTX1NIQTIyNFtdID0geworKyAgICAweEI0LCAweDAxLCAweDkzLCAweDE2 LCAweDA1LCAweEY2LCAweEVCLCAweEUyLCAweEE0LCAweEVCLCAweDQ4LCAweEFBLAorKyAgICAw eDAwLCAweEY0LCAweEExLCAweDk5LCAweDBBLCAweEI0LCAweEI2LCAweDYzLCAweEU5LCAweDY4 LCAweENBLCAweEIzLAorKyAgICAweDEzLCAweEQ3LCAweDY2LCAweDZBLCAweENELCAweENCLCAw eDMzLCAweDlGLCAweEU1LCAweDg0LCAweEUyLCAweEMzLAorKyAgICAweDBCLCAweDUzLCAweEU1 LCAweDhCLCAweDk2LCAweDRCLCAweERCLCAweDJELCAweDgwLCAweEE0LCAweDFELCAweEUzLAor KyAgICAweDgxLCAweERDLCAweDUyLCAweDk5LCAweEJBLCAweDlCLCAweDZBLCAweDlELCAweDQ4 LCAweDFGLCAweDczLCAweEY3LAorKyAgICAweEFDLCAweDA5LCAweDEzLCAweEExLCAweDE2LCAw eDJDLCAweDYwLCAweEZCLCAweEJDLCAweDI1LCAweEY3LCAweDUzLAorKyAgICAweEQxLCAweDA0 LCAweDVBLCAweDNGLCAweDk1LCAweDA5LCAweDVFLCAweEU1LCAweEEyLCAweDdELCAweEZDLCAw eDJBLAorKyAgICAweDUxLCAweDFELCAweDIxLCAweENFLCAweDJCLCAweDRFLCAweDFCLCAweEI4 LCAweENCLCAweERELCAweDI0LCAweEVFLAorKyAgICAweDk5LCAweDFELCAweDM3LCAweERDLCAw eEVELCAweDVGLCAweDJGLCAweDQ4LCAweDVFLCAweDMzLCAweDk0LCAweDA2LAorKyAgICAweDE5 LCAweENELCAweDVBLCAweDI2LCAweDg1LCAweDc3LCAweDlELCAweEFGLCAweDg2LCAweDk3LCAw eEM5LCAweDA4LAorKyAgICAweEQ1LCAweDgxLCAweDBFLCAweEI4LCAweDlGLCAweEI2LCAweEFG LCAweDIwLCAweDcyLCAweERDLCAweDEzLCAweDRELAorKyAgICAweDdBLCAweEU0LCAweDVDLCAw eDgxLCAweERFLCAweEMwLCAweDNELCAweDE5LCAweDlDLCAweDMzLCAweDExLCAweDA3LAorKyAg ICAweEQ1LCAweEE5LCAweDUxLCAweDY3LCAweENELCAweEZELCAweDM3LCAweDYxLCAweDE0LCAw eDlGLCAweEU3LCAweDcwLAorKyAgICAweDE4LCAweDMyLCAweEMzLCAweDM0LCAweDU0LCAweDBE LCAweDRGLCAweEI0LCAweEFFLCAweDlGLCAweEVDLCAweDY0LAorKyAgICAweEQ4LCAweEIyLCAw eDE2LCAweEE0LCAweEIyLCAweDk5LCAweDkyLCAweENCLCAweDdGLCAweDFGLCAweDA2LCAweDE3 LAorKyAgICAweDVGLCAweEExLCAweDA3LCAweDY4LCAweEFFLCAweEE3LCAweDJELCAweDAzLCAw eDkxLCAweDJBLCAweDlELCAweDY5LAorKyAgICAweEMyLCAweDlELCAweDkwLCAweEY3LCAweEY5 LCAweDY2LCAweDVELCAweDEzLCAweEI3LCAweDdGLCAweEQzLCAweDk3LAorKyAgICAweDQ1LCAw eDk3LCAweDQzLCAweEQ4LCAweENFLCAweDNDLCAweEYyLCAweDk4LCAweDk4LCAweERELCAweEUy LCAweDJELAorKyAgICAweENGLCAweEExLCAweEM0LCAweDI1LCAweDQ2LCAweDJFLCAweEQyLCAw eEU1LCAweDVGLCAweEM2LCAweDAxLCAweEM1LAorKyAgICAweDRGLCAweDQyLCAweDJCLCAweERF LCAweDBGLCAweEVBLCAweDRBLCAweDRGLCAweEMzLCAweDVCLCAweERGLCAweDlCLAorKyAgICAw eDVELCAweDMwLCAweDE4LCAweDkzLCAweEQwLCAweERFLCAweEM1LCAweDA5LCAweEFBLCAweDU3 LCAweDU3LCAweEJELAorKyAgICAweDJELCAweDg0LCAweDAzLCAweEI3CisrfTsKKysKKytzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1BTU19TSEEyNTZbXSA9IHsKKysgICAgMHgz OCwgMHhEQSwgMHg5OSwgMHg1MSwgMHgyNiwgMHgzOCwgMHhDNiwgMHg3RiwgMHhDNCwgMHg4MSwg MHg1NywgMHgxOSwKKysgICAgMHgzNSwgMHhDNiwgMHhGNiwgMHgxRSwgMHg5MCwgMHg0NywgMHgy MCwgMHg1NSwgMHg0NywgMHg1NiwgMHgyNiwgMHhFOSwKKysgICAgMHhGMiwgMHhBOCwgMHgzOSwg MHg2QywgMHhENSwgMHhDRCwgMHhDQiwgMHg1NSwgMHhGQywgMHgwQywgMHhDNSwgMHhDQiwKKysg ICAgMHhGNywgMHg0MCwgMHgxNywgMHgzQiwgMHhDRiwgMHhFNCwgMHgwNSwgMHgwMywgMHgzQiwg MHhBMCwgMHhCMiwgMHhDOSwKKysgICAgMHgwRCwgMHg1RSwgMHg0OCwgMHgzQSwgMHhFOSwgMHhB RCwgMHgyOCwgMHg3MSwgMHg3RCwgMHg4RiwgMHg4OSwgMHgxNiwKKysgICAgMHg1OSwgMHg5Mywg MHgzNSwgMHhEQywgMHg0RCwgMHg3QiwgMHhERiwgMHg4NCwgMHhFNCwgMHg2OCwgMHhBQSwgMHgz MywKKysgICAgMHhBQSwgMHhEQywgMHg2NiwgMHg1MCwgMHhDOCwgMHhBOSwgMHgzMiwgMHgxMiwg MHhEQywgMHhDNiwgMHg5MCwgMHg0OSwKKysgICAgMHgwQiwgMHg3NSwgMHhGRiwgMHg5QiwgMHg5 NSwgMHgwMCwgMHg5QSwgMHg5MCwgMHhFMCwgMHhENCwgMHgwRSwgMHg2NywKKysgICAgMHhBQiwg MHgzQywgMHg0NywgMHgzNiwgMHhDNSwgMHgyRSwgMHgxQywgMHg0NiwgMHhGMCwgMHgyRCwgMHhE MywgMHg4QiwKKysgICAgMHg0MiwgMHgwOCwgMHhERSwgMHgwRCwgMHhCNiwgMHgyQywgMHg4Niwg MHhCMCwgMHgzNSwgMHg3MSwgMHgxOCwgMHg2QiwKKysgICAgMHg4OSwgMHg2NywgMHhDMCwgMHgw NSwgMHhBRCwgMHhGNCwgMHgxRCwgMHg2MiwgMHg0RSwgMHg3NSwgMHhFQywgMHhENiwKKysgICAg MHhDMiwgMHhEQiwgMHgwNywgMHhCMCwgMHhCNiwgMHg4RCwgMHgxNSwgMHhBRCwgMHhDRCwgMHhC RiwgMHhGNSwgMHg2MCwKKysgICAgMHg3NiwgMHhBRSwgMHg0OCwgMHhCOCwgMHg3NywgMHg3Riwg MHhDNSwgMHgwMSwgMHhEOSwgMHgyOSwgMHhCQiwgMHhENiwKKysgICAgMHgxNywgMHhBMiwgMHgy MCwgMHg1QSwgMHhDMCwgMHg0QSwgMHgzQiwgMHgzNCwgMHhDOCwgMHhCOSwgMHgzOSwgMHhDRiwK KysgICAgMHgwNiwgMHg4OSwgMHg5NSwgMHg2RiwgMHhDNywgMHhDQSwgMHhDNCwgMHhFNCwgMHg0 MywgMHhERiwgMHg1QSwgMHgyMywKKysgICAgMHhFMiwgMHg4OSwgMHhBMywgMHgzOCwgMHg3OCwg MHgzMSwgMHgzOCwgMHhDNiwgMHhBNCwgMHg2RiwgMHg1RiwgMHg3MywKKysgICAgMHg1QSwgMHhF NSwgMHg5RSwgMHgwOSwgMHhFNywgMHg2RiwgMHhENCwgMHhGOCwgMHgzRSwgMHhCNywgMHhCMCwg MHg1NiwKKysgICAgMHg5QSwgMHhGMywgMHg2NSwgMHhGMCwgMHhDMiwgMHhBNiwgMHg4QSwgMHgw OCwgMHhCQSwgMHg0NCwgMHhBQywgMHg5NywKKysgICAgMHhERSwgMHhCNCwgMHgxNiwgMHg4Mywg MHhERiwgMHhFMywgMHhFRSwgMHg3MSwgMHhGQSwgMHhGOSwgMHg1MSwgMHg1MCwKKysgICAgMHgx NCwgMHhEQywgMHhGRCwgMHg2QSwgMHg4MiwgMHgyMCwgMHg2OCwgMHg2NCwgMHg3RCwgMHg0RSwg MHg4MiwgMHg2OCwKKysgICAgMHhENywgMHg0NSwgMHhGQSwgMHg2QSwgMHhFNCwgMHhFNSwgMHgy OSwgMHgzQSwgMHg3MCwgMHhGQiwgMHhFNCwgMHg2MiwKKysgICAgMHgyQiwgMHgzMSwgMHhCOSwg MHg3RAorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9QU1NfU0hB Mzg0W10gPSB7CisrICAgIDB4OTksIDB4MDIsIDB4QzksIDB4MUUsIDB4MzEsIDB4ODIsIDB4QjQs IDB4RTYsIDB4MUIsIDB4MzIsIDB4Q0UsIDB4NUQsCisrICAgIDB4NDEsIDB4MUQsIDB4MDAsIDB4 MkYsIDB4MDQsIDB4OEIsIDB4QkQsIDB4MzcsIDB4NzksIDB4Q0YsIDB4NzcsIDB4MDMsCisrICAg IDB4MDUsIDB4NkEsIDB4MjEsIDB4QzcsIDB4OEQsIDB4MjQsIDB4NjAsIDB4NDksIDB4MzksIDB4 NTgsIDB4QzUsIDB4MjcsCisrICAgIDB4OEYsIDB4QzUsIDB4OTcsIDB4NEEsIDB4QjIsIDB4RTEs IDB4RDQsIDB4MzYsIDB4NTcsIDB4QkQsIDB4NDMsIDB4Q0MsCisrICAgIDB4N0IsIDB4Q0UsIDB4 RjIsIDB4QTUsIDB4MzAsIDB4RjgsIDB4NzIsIDB4MTQsIDB4QkIsIDB4RDAsIDB4OUYsIDB4QzEs CisrICAgIDB4NDksIDB4QzgsIDB4MUMsIDB4QUYsIDB4Q0QsIDB4OTUsIDB4NzgsIDB4NzIsIDB4 MjUsIDB4RjksIDB4NDUsIDB4QzYsCisrICAgIDB4NUIsIDB4NjIsIDB4NUUsIDB4MDEsIDB4RDcs IDB4NDAsIDB4NUUsIDB4QzgsIDB4Q0EsIDB4MEEsIDB4RjMsIDB4QkEsCisrICAgIDB4MDgsIDB4 MDcsIDB4ODgsIDB4Q0EsIDB4NDksIDB4MzYsIDB4ODQsIDB4N0QsIDB4RjYsIDB4RkMsIDB4NUEs IDB4REIsCisrICAgIDB4RkMsIDB4NTAsIDB4RDMsIDB4RUIsIDB4M0QsIDB4ODMsIDB4QjAsIDB4 RjUsIDB4OTQsIDB4NUUsIDB4ODgsIDB4QzMsCisrICAgIDB4ODIsIDB4Q0QsIDB4NTMsIDB4NDAs IDB4OTYsIDB4MTgsIDB4NkIsIDB4NEEsIDB4NkMsIDB4OUMsIDB4RkUsIDB4RTUsCisrICAgIDB4 M0IsIDB4NzUsIDB4RjksIDB4RUIsIDB4QTUsIDB4NzcsIDB4MTEsIDB4RUYsIDB4ODgsIDB4MUMs IDB4MjUsIDB4NzAsCisrICAgIDB4N0QsIDB4ODgsIDB4NUQsIDB4QzMsIDB4Q0EsIDB4RTEsIDB4 NDksIDB4MTQsIDB4OTAsIDB4QUQsIDB4RjIsIDB4NUUsCisrICAgIDB4NDksIDB4RDcsIDB4OTks IDB4QTUsIDB4N0IsIDB4NzcsIDB4M0IsIDB4OEUsIDB4QjgsIDB4REIsIDB4RjEsIDB4NEMsCisr ICAgIDB4RDYsIDB4OUEsIDB4REMsIDB4RTUsIDB4N0EsIDB4MUMsIDB4RTEsIDB4Q0UsIDB4OUQs IDB4RjEsIDB4RjMsIDB4QTAsCisrICAgIDB4MEEsIDB4MzUsIDB4NTIsIDB4OUQsIDB4QjksIDB4 NDYsIDB4OTQsIDB4ODIsIDB4MEYsIDB4RjcsIDB4QjIsIDB4NjIsCisrICAgIDB4NTEsIDB4NzAs IDB4NzUsIDB4RDIsIDB4MzcsIDB4OTYsIDB4NjcsIDB4MkYsIDB4RDAsIDB4MjIsIDB4RDgsIDB4 MDcsCisrICAgIDB4OEQsIDB4NjksIDB4OUUsIDB4NkQsIDB4MEIsIDB4NDAsIDB4NEYsIDB4NzAs IDB4RUMsIDB4MEIsIDB4Q0EsIDB4ODgsCisrICAgIDB4ODAsIDB4OEQsIDB4OUEsIDB4RjQsIDB4 RjksIDB4MTgsIDB4NTAsIDB4MjcsIDB4MDgsIDB4RkEsIDB4Q0MsIDB4QzcsCisrICAgIDB4M0Ys IDB4RTQsIDB4ODQsIDB4ODMsIDB4QTEsIDB4QjYsIDB4MUQsIDB4MjMsIDB4MzQsIDB4RkUsIDB4 NDgsIDB4RTUsCisrICAgIDB4RTMsIDB4QUUsIDB4NEQsIDB4OTgsIDB4QkMsIDB4QTYsIDB4OEEs IDB4OUYsIDB4RkQsIDB4NEQsIDB4REIsIDB4OUQsCisrICAgIDB4RjcsIDB4RUIsIDB4NEUsIDB4 QjYsIDB4NkYsIDB4MjUsIDB4RUEsIDB4N0EsIDB4RTksIDB4ODUsIDB4QjIsIDB4RUYsCisrICAg IDB4OTAsIDB4RDIsIDB4QTYsIDB4MkIKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGthdF9SU0FfUFNTX1NIQTUxMltdID0geworKyAgICAweDNGLCAweDgzLCAweDQzLCAweDc4 LCAweDI1LCAweEJFLCAweDgxLCAweEIyLCAweDZFLCAweDc4LCAweDExLCAweDMyLAorKyAgICAw eEQwLCAweDg4LCAweDA1LCAweDUzLCAweDk1LCAweEVELCAweDgxLCAweDEyLCAweENFLCAweDUw LCAweEQ5LCAweDA2LAorKyAgICAweDQyLCAweDg5LCAweEEwLCAweDU1LCAweDdBLCAweDA1LCAw eDEzLCAweDk0LCAweDM1LCAweDlCLCAweENBLCAweDVELAorKyAgICAweENCLCAweEIyLCAweDMy LCAweEUxLCAweDA0LCAweDk5LCAweEVDLCAweEU3LCAweEE2LCAweDY5LCAweDRELCAweDJCLAor KyAgICAweEMxLCAweDU3LCAweDEzLCAweDQ4LCAweDBELCAweDZCLCAweDRELCAweDgzLCAweDI4 LCAweDA2LCAweDc5LCAweDlELAorKyAgICAweEI0LCAweDcwLCAweENFLCAweEMwLCAweEZDLCAw eDNCLCAweDY5LCAweEIzLCAweDkxLCAweDU0LCAweEE5LCAweDQ0LAorKyAgICAweDJFLCAweERB LCAweDRBLCAweEM1LCAweEMyLCAweDk5LCAweEYwLCAweERFLCAweENBLCAweDc3LCAweDk5LCAw eDZCLAorKyAgICAweDBDLCAweDc5LCAweEU1LCAweDI5LCAweDc0LCAweDgzLCAweDY5LCAweEVB LCAweEI4LCAweDcyLCAweDMwLCAweDNELAorKyAgICAweDdBLCAweDMwLCAweEUxLCAweDAzLCAw eDdCLCAweDA5LCAweEU2LCAweDExLCAweEMwLCAweERDLCAweEZGLCAweEZELAorKyAgICAweEJE LCAweEVDLCAweDlDLCAweENDLCAweDQ2LCAweDdCLCAweDRDLCAweDRDLCAweDU5LCAweEJFLCAw eDgyLCAweDdDLAorKyAgICAweEY1LCAweDYwLCAweDVBLCAweEMzLCAweEU4LCAweEE4LCAweDhB LCAweDM4LCAweDlFLCAweDAxLCAweDU3LCAweEYxLAorKyAgICAweDc5LCAweDNBLCAweDdDLCAw eEEzLCAweDlGLCAweDEyLCAweDFBLCAweDRGLCAweDJFLCAweEEyLCAweEU1LCAweDBBLAorKyAg ICAweEFCLCAweEMwLCAweEY0LCAweEE1LCAweEUzLCAweDVGLCAweDg5LCAweDFDLCAweDhGLCAw eEE0LCAweDVFLCAweENFLAorKyAgICAweDBELCAweDkxLCAweDA1LCAweDFCLCAweDE3LCAweDYy LCAweDQ4LCAweEZFLCAweEE1LCAweDRDLCAweEVGLCAweDJELAorKyAgICAweDI4LCAweEYxLCAw eDVFLCAweEU2LCAweEQxLCAweDMwLCAweDg5LCAweDBBLCAweEFELCAweDE4LCAweEFGLCAweDZG LAorKyAgICAweDA0LCAweDA5LCAweDM2LCAweDlBLCAweEZGLCAweENBLCAweEExLCAweEE3LCAw eDA1LCAweDdGLCAweEQ0LCAweEJGLAorKyAgICAweDNBLCAweEI1LCAweDQyLCAweDZELCAweEU5 LCAweDA3LCAweDI5LCAweDY1LCAweDhCLCAweEFELCAweDRELCAweDBGLAorKyAgICAweDIyLCAw eEUxLCAweDU5LCAweDQzLCAweDY4LCAweDg3LCAweEE4LCAweDhCLCAweEJDLCAweDY5LCAweEEx LCAweDk0LAorKyAgICAweDIyLCAweDNFLCAweDhBLCAweDQ5LCAweEU4LCAweEEzLCAweDZGLCAw eEMyLCAweDkzLCAweDU4LCAweEU3LCAweEFFLAorKyAgICAweEM5LCAweDFGLCAweENGLCAweDYx LCAweDkzLCAweEZDLCAweEMxLCAweEY2LCAweEYzLCAweDI3LCAweDdGLCAweDBBLAorKyAgICAw eDkwLCAweEUwLCAweDY1LCAweDMyLCAweDU3LCAweDQ3LCAweEUyLCAweEVELCAweDA4LCAweDU5 LCAweEE2LCAweEYwLAorKyAgICAweDE3LCAweDJDLCAweDEzLCAweEUwCisrfTsKKysKKytzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1NIQTFbXSA9IHsKKysgICAgMHgzQiwgMHg2 MCwgMHg0QiwgMHhGQywgMHg1NCwgMHgyOCwgMHgyMywgMHhFNiwgMHgyRiwgMHgwNSwgMHgwNCwg MHhCQSwKKysgICAgMHg5RCwgMHhFNCwgMHgzQywgMHhCOCwgMHg1QiwgMHg2MCwgMHg1QywgMHhD RCwgMHg5RCwgMHhFQSwgMHhDMywgMHg0QywKKysgICAgMHhDMiwgMHgzMywgMHhFNiwgMHhDNiwg MHgyMSwgMHg0OCwgMHg3NiwgMHhFQywgMHhCMiwgMHhGNSwgMHgxMSwgMHhERSwKKysgICAgMHg0 NCwgMHhCNCwgMHhBRiwgMHgxNiwgMHgxMSwgMHhDMywgMHgxOCwgMHgxNiwgMHhCMywgMHg2OSwg MHhCQiwgMHg5NCwKKysgICAgMHhFRCwgMHhFOCwgMHhCMywgMHg5RSwgMHhCMSwgMHg0MywgMHg4 RSwgMHhDRSwgMHhCNCwgMHgzNCwgMHg5QiwgMHgwOCwKKysgICAgMHgyMiwgMHhBRiwgMHgzMSwg MHg3MywgMHhCNSwgMHhGQSwgMHgxMSwgMHg3RSwgMHg4RiwgMHgxMywgMHg1MiwgMHhFQywKKysg ICAgMHhDOSwgMHgwMywgMHhFRSwgMHgwRCwgMHgyQiwgMHg5MSwgMHgzMiwgMHhGMiwgMHg4RSwg MHhERiwgMHgwMiwgMHhFMCwKKysgICAgMHgwQSwgMHg0NywgMHhEMiwgMHgwQSwgMHg1MSwgMHgw MCwgMHgxQSwgMHgzMCwgMHg2RiwgMHgwQywgMHhCMywgMHg1NCwKKysgICAgMHg2NCwgMHgyMCwg MHg5MCwgMHgwQywgMHgwMSwgMHhCRSwgMHhDMCwgMHg0MiwgMHg4QywgMHg1RCwgMHgxOCwgMHg2 RiwKKysgICAgMHgzMiwgMHg3NSwgMHg0NSwgMHg3QiwgMHgxQywgMHgwNCwgMHhBMiwgMHg5Riwg MHg4NCwgMHhENywgMHhGNSwgMHgzQSwKKysgICAgMHg5NSwgMHhENCwgMHhFOCwgMHg4RCwgMHhF QywgMHg5OSwgMHhFRiwgMHgxOCwgMHg1RSwgMHg2NCwgMHhEMywgMHhBRiwKKysgICAgMHhGOCwg MHhENCwgMHhGRiwgMHgzQywgMHg4NywgMHhBMCwgMHgzRiwgMHhDNywgMHgyMiwgMHgwNSwgMHhG RCwgMHhGRCwKKysgICAgMHgyOSwgMHg4QSwgMHgyOCwgMHhEQSwgMHhBOSwgMHg4QSwgMHg4Qiwg MHgyMywgMHg2MiwgMHg5RCwgMHg0MiwgMHhCOCwKKysgICAgMHg0QSwgMHg3NiwgMHgwRCwgMHg5 RiwgMHg5QSwgMHhFMCwgMHhFNiwgMHhERCwgMHhBRCwgMHg1RSwgMHg1RiwgMHhENSwKKysgICAg MHgzMiwgMHhFOSwgMHg0QiwgMHg5NywgMHg3RCwgMHg2MiwgMHgwQSwgMHhCMywgMHhCRSwgMHhG MiwgMHg4QywgMHgxRiwKKysgICAgMHgyQiwgMHgyMiwgMHgwNiwgMHgxNSwgMHgzMywgMHg3MSwg MHhFRCwgMHg5QiwgMHhBMCwgMHg4MiwgMHhDRSwgMHhCRiwKKysgICAgMHgzQiwgMHgwOCwgMHg1 RiwgMHhBNywgMHgyMCwgMHg5NCwgMHgwOSwgMHhFQiwgMHg4MiwgMHhBNSwgMHg0MSwgMHg2MCwK KysgICAgMHhGMSwgMHgwOCwgMHhFQiwgMHg4RCwgMHhDQywgMHg4RCwgMHhDOSwgMHg1MiwgMHgw QSwgMHhBRiwgMHhGNCwgMHhGOSwKKysgICAgMHg5RiwgMHg4MiwgMHhEOCwgMHgwQiwgMHg3NSwg MHg1RSwgMHhFNCwgMHhBRiwgMHg2NSwgMHg5NiwgMHhBRiwgMHhGQywKKysgICAgMHgzMywgMHhC RiwgMHg5RiwgMHgzRSwgMHhBNCwgMHg3QiwgMHg4NiwgMHhDNywgMHhGNywgMHg0NywgMHhBQiwg MHgzNywKKysgICAgMHgwNSwgMHhENiwgMHgwRCwgMHgzMSwgMHg3MiwgMHg4QywgMHg4MCwgMHgx RSwgMHhBOSwgMHg1NCwgMHhGQywgMHhERiwKKysgICAgMHgyNywgMHg5MCwgMHhFMiwgMHgwMQor K307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9TSEEyMjRbXSA9IHsK KysgICAgMHhBMiwgMHhEOCwgMHg0MiwgMHg1MywgMHhERCwgMHhCRiwgMHgxRiwgMHg2QiwgMHgw NywgMHhFMCwgMHg2MCwgMHg4NiwKKysgICAgMHg1QSwgMHg2MCwgMHgwNiwgMHg4RiwgMHg0NCwg MHhEOSwgMHhCMCwgMHg0QSwgMHhBQSwgMHg5MCwgMHg3MSwgMHhCOCwKKysgICAgMHhCMiwgMHhC QywgMHgzMCwgMHg0MSwgMHg1MCwgMHhCQiwgMHhGRCwgMHg0NiwgMHg5OCwgMHg0RCwgMHhDMCwg MHg4OSwKKysgICAgMHg1NywgMHg4NSwgMHg4QSwgMHg5NywgMHg0OSwgMHgyNSwgMHhBOCwgMHgw QywgMHg2OSwgMHg3MCwgMHgxOSwgMHgzOSwKKysgICAgMHg2NiwgMHgyNCwgMHhCNCwgMHg2OSwg MHg0NywgMHhEMiwgMHg3QywgMHhERSwgMHgyRCwgMHgzNywgMHg1OSwgMHhCMywKKysgICAgMHhF MywgMHhDNywgMHg2QiwgMHhERCwgMHhCRSwgMHhFMSwgMHhFNiwgMHgyOCwgMHg5QSwgMHg4RCwg MHg0MiwgMHgzRSwKKysgICAgMHgyOCwgMHgwMSwgMHhENywgMHgwMywgMHhDOSwgMHg3MywgMHhD MywgMHg2QiwgMHgwMywgMHhFQywgMHgxRSwgMHhGOCwKKysgICAgMHg1MywgMHg4QiwgMHg1Miwg MHg0MiwgMHg4OSwgMHg1NSwgMHhCNywgMHg4NywgMHhBOSwgMHg5NCwgMHhDMiwgMHhCNCwKKysg ICAgMHg0QiwgMHg3NiwgMHhGNSwgMHg2MSwgMHg0NywgMHhFMSwgMHg0NCwgMHg3QiwgMHhFQywg MHhCNCwgMHgyNSwgMHg2NiwKKysgICAgMHhDMCwgMHhGRiwgMHhFQiwgMHg4NiwgMHgyNCwgMHhB QSwgMHhBOCwgMHg3MiwgMHhDNywgMHhGQiwgMHhGQiwgMHhGNiwKKysgICAgMHg4NCwgMHhBNywg MHg1QiwgMHhENCwgMHg4NywgMHhFNSwgMHg4NCwgMHg1NiwgMHgxRSwgMHg0QywgMHhFNSwgMHhC QywKKysgICAgMHg4NywgMHg5NCwgMHhBQywgMHg5QywgMHgxQiwgMHgzRCwgMHhGNywgMHhENCwg MHgzNiwgMHg4NSwgMHg5RiwgMHhDOSwKKysgICAgMHhGNiwgMHg0MywgMHgzRiwgMHhCNiwgMHgy NSwgMHgzMywgMHg0OCwgMHgwRiwgMHhFNSwgMHg3QywgMHhDRCwgMHg1MywKKysgICAgMHg0OCwg MHhFQiwgMHgwMiwgMHgxMSwgMHhCOSwgMHg5RSwgMHhDMywgMHhCNCwgMHhFMSwgMHg1NCwgMHhE NiwgMHhBQSwKKysgICAgMHgxQSwgMHg5RSwgMHgxMCwgMHhFMSwgMHgyNywgMHgyNSwgMHhGMiwg MHhFMSwgMHhBQiwgMHhBQiwgMHg2QywgMHg0NSwKKysgICAgMHg2MSwgMHhENSwgMHhBMywgMHg2 QywgMHhCNiwgMHgzMywgMHg1MiwgMHhBRSwgMHgzRCwgMHhGRCwgMHgyMiwgMHhGQywKKysgICAg MHgzQSwgMHhBQiwgMHg2MywgMHg5NCwgMHhCNSwgMHgzQSwgMHg2OSwgMHgxMSwgMHhBQywgMHg5 OSwgMHg0RiwgMHgzMywKKysgICAgMHg2NywgMHgwQSwgMHgxQSwgMHg3MCwgMHgxRSwgMHhCOSwg MHhFMiwgMHgyNiwgMHgyNywgMHg2OCwgMHhFQSwgMHhGNSwKKysgICAgMHg5NywgMHg1NSwgMHhB QywgMHg4MywgMHg2QSwgMHg0MCwgMHgzQiwgMHg1NiwgMHhBRSwgMHgxMywgMHg4OCwgMHhFOCwK KysgICAgMHg5OCwgMHg3MiwgMHg1MiwgMHg5MSwgMHg3RiwgMHg3OCwgMHgwQSwgMHgxOCwgMHhE NCwgMHg0NCwgMHg3OCwgMHg4MywKKysgICAgMHgwRCwgMHg0NCwgMHg3NywgMHhBNiwgMHhGMywg MHgwNCwgMHhGMSwgMHg4QywgMHhCQywgMHgyRiwgMHhGOSwgMHg1QiwKKysgICAgMHhEQiwgMHg3 MCwgMHgwMCwgMHhGNgorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JT QV9TSEEyNTZbXSA9IHsKKysgICAgMHhDMiwgMHhCMSwgMHg5NywgMHgwMCwgMHg5QSwgMHhFNSwg MHg4MCwgMHg2QSwgMHhFMiwgMHg1MSwgMHg2OCwgMHhCOSwKKysgICAgMHg3QSwgMHgwQywgMHhG MiwgMHhCNCwgMHg3NywgMHhFRCwgMHgxNSwgMHgwQywgMHg0RSwgMHhFMSwgMHhEQywgMHhGRiwK KysgICAgMHg4RSwgMHhCQywgMHhERSwgMHhDNywgMHg5QSwgMHg5NiwgMHhGMSwgMHg0NywgMHg0 NSwgMHgyNCwgMHg5RCwgMHg2RiwKKysgICAgMHhBNiwgMHhGMywgMHgxRCwgMHgwRCwgMHgzNSwg MHg0QywgMHgxQSwgMHhGMywgMHg1OCwgMHgyQywgMHg2QywgMHgwNiwKKysgICAgMHhENiwgMHgy MiwgMHgzNywgMHg3NywgMHg4QywgMHgzMywgMHhFNSwgMHgwNywgMHg1MywgMHg5MywgMHgyOCwg MHhDRiwKKysgICAgMHg2NywgMHhGQSwgMHhDNCwgMHgxRiwgMHgxQiwgMHgyNCwgMHhEQiwgMHg0 QywgMHhDNSwgMHgyQSwgMHg1MSwgMHhBMiwKKysgICAgMHg2MCwgMHgxNSwgMHg4QywgMHg1NCwg MHhCNCwgMHgzMCwgMHhFMiwgMHgyNCwgMHg0NywgMHg4NiwgMHhGMiwgMHhGOCwKKysgICAgMHg2 QywgMHhENiwgMHgxMiwgMHg1OSwgMHgyQywgMHg3NCwgMHg5QSwgMHgzNywgMHhGMywgMHhDNCwg MHhBMiwgMHhENSwKKysgICAgMHg0RSwgMHgxRiwgMHg3NywgMHhGMCwgMHgyNywgMHhDRSwgMHg3 NywgMHhGOCwgMHg0QSwgMHg3OSwgMHgwMywgMHhCRSwKKysgICAgMHhDOCwgMHgwNiwgMHgyRCwg MHhBNywgMHhBNiwgMHg0NiwgMHhGNSwgMHg1NSwgMHg3OSwgMHhENywgMHg1QywgMHhDNiwKKysg ICAgMHg1QiwgMHhCMSwgMHgwMCwgMHg0RSwgMHg3QywgMHhEOSwgMHgxMSwgMHg4NSwgMHhFMCwg MHhCMSwgMHg0RCwgMHgyRCwKKysgICAgMHgxMywgMHhENywgMHhBQywgMHhFQSwgMHg2NCwgMHhE MSwgMHhBQywgMHg4RiwgMHg4RCwgMHg4RiwgMHhFQSwgMHg0MiwKKysgICAgMHg3RiwgMHhGOSwg MHhCNywgMHg3RCwgMHgyQywgMHg2OCwgMHg0OSwgMHgwNywgMHg3QSwgMHg3NCwgMHhFRiwgMHhC NCwKKysgICAgMHhDOSwgMHg5NywgMHgxNiwgMHg1QywgMHg2QywgMHg2RSwgMHg1QywgMHgwOSwg MHgyRSwgMHg4RSwgMHgxMywgMHgyRSwKKysgICAgMHgxQSwgMHg4RCwgMHhBNiwgMHgwQywgMHg2 RSwgMHgwQywgMHgxQywgMHgwRiwgMHhDQywgMHhCMiwgMHg3OCwgMHg4QSwKKysgICAgMHgwNywg MHhGQywgMHg1QywgMHhDMiwgMHhGNSwgMHg2NSwgMHhFQywgMHhBQiwgMHg4QiwgMHgzQywgMHhD QSwgMHg5MSwKKysgICAgMHg2RiwgMHg4NCwgMHg3QywgMHgyMSwgMHgwRSwgMHhCOCwgMHhEQSwg MHg3QiwgMHg2QywgMHhGNywgMHhERiwgMHhBQiwKKysgICAgMHg3RSwgMHgxNSwgMHhGRCwgMHg4 NSwgMHgwQiwgMHgzMywgMHg5QiwgMHg2QSwgMHgzQSwgMHhDMywgMHhFRiwgMHg2NSwKKysgICAg MHgwNCwgMHg2RSwgMHhCMiwgMHhBQywgMHg5OCwgMHhGRCwgMHhFQiwgMHgwMiwgMHhGNSwgMHhD MCwgMHgwQiwgMHg1RSwKKysgICAgMHhDQiwgMHhENCwgMHg4MywgMHg4MiwgMHgxOCwgMHgxQiwg MHhEQSwgMHhCNCwgMHhDRCwgMHhFOCwgMHg3MSwgMHg2QiwKKysgICAgMHgxRCwgMHhCNSwgMHg0 RiwgMHhFOSwgMHhENiwgMHg0MywgMHhBMCwgMHgwQSwgMHgxNCwgMHhBMCwgMHhFNywgMHg1RCwK KysgICAgMHg0NywgMHg5RCwgMHgxOCwgMHhENworK307CisrCisrc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIga2F0X1JTQV9TSEEzODRbXSA9IHsKKysgICAgMHgxMSwgMHg1RSwgMHg2MywgMHhG RSwgMHg0NywgMHhBQSwgMHg2QSwgMHg4NCwgMHhFQiwgMHg0NCwgMHg5QSwgMHgwMCwKKysgICAg MHg5NiwgMHg0QSwgMHhFRCwgMHhEMiwgMHhBNywgMHg2NywgMHgzQSwgMHg2NCwgMHg4MiwgMHgz MCwgMHg2MSwgMHgyRCwKKysgICAgMHhFMywgMHhGNSwgMHg0OSwgMHg2OCwgMHg1RSwgMHg2MCwg MHhEMiwgMHg0RCwgMHhFRiwgMHhGMiwgMHhBNCwgMHhCMiwKKysgICAgMHg5QSwgMHg4MSwgMHgx RCwgMHg0MSwgMHhBNSwgMHg3MywgMHg1OSwgMHhFQiwgMHhCQiwgMHhDNCwgMHg5RSwgMHgyQiwK KysgICAgMHhFQiwgMHhDMywgMHhERSwgMHgzQSwgMHhFQSwgMHhGNSwgMHhBRCwgMHhEQSwgMHg4 NywgMHgwOCwgMHg2OCwgMHhDRiwKKysgICAgMHgxMiwgMHg5QiwgMHhDMSwgMHhFNCwgMHhBNywg MHg3MSwgMHhGOCwgMHhCRCwgMHg2QiwgMHg2RiwgMHg1MCwgMHhGMSwKKysgICAgMHhEMSwgMHhG RiwgMHhDRSwgMHg2QywgMHhEOSwgMHhCRSwgMHhEQSwgMHg3NiwgMHhGMywgMHhFQiwgMHhBQiwg MHg5QywKKysgICAgMHg0MSwgMHg2RSwgMHg0RiwgMHgzNSwgMHg3QSwgMHg2MSwgMHgyNywgMHhC QywgMHgwMywgMHgzRSwgMHhBRSwgMHgzRSwKKysgICAgMHgxQiwgMHhERCwgMHhBQywgMHhEOSwg MHgxQSwgMHhGRiwgMHhEMywgMHhGNSwgMHg2NiwgMHg0MywgMHgwNywgMHg3NiwKKysgICAgMHg4 QSwgMHg2OSwgMHgyRCwgMHgxNCwgMHhCMSwgMHhCRSwgMHg1NSwgMHg0OSwgMHg5MCwgMHg4OSwg MHg0QiwgMHhDNCwKKysgICAgMHgxMSwgMHg2NywgMHhENSwgMHg5RCwgMHhCMCwgMHhCMiwgMHhF RSwgMHg4RCwgMHgwQSwgMHg0NywgMHg0QSwgMHhEOSwKKysgICAgMHgwRSwgMHhEMSwgMHgyNCwg MHhGMCwgMHgzMCwgMHgyQiwgMHhGMiwgMHg3OSwgMHg0NywgMHhEQiwgMHg3MCwgMHhCNCwKKysg ICAgMHg0NiwgMHhGMiwgMHhGOCwgMHhCNywgMHhCNCwgMHhGNiwgMHgzNCwgMHg3OSwgMHhBOCwg MHgyRCwgMHgzRCwgMHg1NiwKKysgICAgMHhENSwgMHg5QSwgMHg2MCwgMHg3QSwgMHgwNCwgMHhD NywgMHg2NiwgMHgxRCwgMHhDRCwgMHgzQywgMHhENSwgMHgzOSwKKysgICAgMHgzNywgMHgxMiwg MHg1MSwgMHg1RSwgMHg5RiwgMHhGOCwgMHgxQSwgMHhBRiwgMHgxMywgMHhDMSwgMHgxMywgMHgw MCwKKysgICAgMHgzNSwgMHhENSwgMHg4RCwgMHgxNywgMHhFMywgMHgwMiwgMHgyOCwgMHhEOSwg MHhFQywgMHhERSwgMHhEMSwgMHgyRiwKKysgICAgMHg5MywgMHg0OSwgMHgwMywgMHgxMSwgMHgz RSwgMHg1NiwgMHg5RCwgMHhDMiwgMHgzMSwgMHhGOCwgMHhBRiwgMHgyRCwKKysgICAgMHhEOSwg MHg5OSwgMHhCNywgMHg4QSwgMHhBQywgMHg1QSwgMHg4NiwgMHgyMCwgMHgzQSwgMHg4MywgMHgy OSwgMHgyNiwKKysgICAgMHg5RCwgMHgwMywgMHg1MiwgMHgyQiwgMHgzNCwgMHg1NiwgMHg0MCwg MHgxNiwgMHg1MywgMHg1MCwgMHg4MiwgMHhDOSwKKysgICAgMHhDNywgMHhENSwgMHg1MSwgMHg0 QywgMHhFRCwgMHhCMywgMHhFMiwgMHhFMSwgMHhDRiwgMHhBOCwgMHhDRSwgMHhCRCwKKysgICAg MHhCMSwgMHg0OCwgMHhBNiwgMHg4QSwgMHg3OSwgMHgxNywgMHg1NSwgMHgxMSwgMHhFRiwgMHhF OCwgMHgxNCwgMHhGNCwKKysgICAgMHg3RSwgMHgzNywgMHgxRCwgMHg5NgorK307CisrCisrc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9TSEE1MTJbXSA9IHsKKysgICAgMHgzNSwg MHg2RCwgMHhGMSwgMHg5RSwgMHhDRiwgMHhCMSwgMHhGNiwgMHgwQywgMHgwNCwgMHgyMSwgMHgx NywgMHhCMywKKysgICAgMHhDNCwgMHg5RCwgMHhGRSwgMHg2MiwgMHgxQywgMHgxQSwgMHg0NSwg MHgwMCwgMHgyRSwgMHg2QiwgMHhCNiwgMHg5RiwKKysgICAgMHg1QywgMHhCMSwgMHhDQiwgMHhD RiwgMHhGOSwgMHg2NywgMHhFQSwgMHg2MiwgMHg4QSwgMHhFQiwgMHg3NywgMHgwMiwKKysgICAg MHg0MiwgMHgzMCwgMHg4OCwgMHhCMSwgMHg0OCwgMHhERiwgMHgxMiwgMHg2MCwgMHg2RSwgMHg5 MiwgMHhCQiwgMHg0QiwKKysgICAgMHgwOSwgMHg2OCwgMHhEMSwgMHg3MCwgMHgyQiwgMHg1OSwg MHhFRSwgMHg1NywgMHg5NiwgMHhGOSwgMHhFQSwgMHhBMywKKysgICAgMHg0QywgMHhFOSwgMHhD OSwgMHhCRCwgMHgyNSwgMHgzNCwgMHg2NiwgMHgxNSwgMHg2QywgMHhDOSwgMHg4MSwgMHhEMSwK KysgICAgMHg0OCwgMHgwRiwgMHgzMywgMHg1RiwgMHgwNSwgMHg0RiwgMHhDMiwgMHhDNCwgMHhE RCwgMHgwOSwgMHg1NCwgMHg3OSwKKysgICAgMHhBMSwgMHg1NywgMHgwNywgMHg3MCwgMHhBMCwg MHgzMywgMHgwMiwgMHg0RCwgMHg1RCwgMHhFOSwgMHgyNCwgMHhEMSwKKysgICAgMHhFRiwgMHhG MCwgMHg2MSwgMHhEMCwgMHgxRCwgMHg0MSwgMHhFMiwgMHg5QiwgMHgyQiwgMHg3QywgMHhEMCwg MHg0RSwKKysgICAgMHg1NSwgMHhEOSwgMHg2RCwgMHhBMSwgMHgxNiwgMHg5RiwgMHhEQSwgMHhD MywgMHgzQiwgMHhGMSwgMHg3NCwgMHhEMSwKKysgICAgMHg5OSwgMHhGMSwgMHg2MywgMHg1Nywg MHhBRCwgMHhDNywgMHg1NSwgMHhGNCwgMHg5NywgMHg0MywgMHgxQywgMHhFRCwKKysgICAgMHgx QiwgMHg3QSwgMHgzMiwgMHhDQiwgMHgyNCwgMHhBNiwgMHgzRCwgMHg5MywgMHgzNywgMHg5MCwg MHg3NCwgMHhFRSwKKysgICAgMHhEMiwgMHg4RCwgMHg0QiwgMHhCQywgMHg3MiwgMHhEQSwgMHgy NSwgMHgyQiwgMHg2NCwgMHhFOSwgMHhDQSwgMHg2OSwKKysgICAgMHgzNiwgMHhCNiwgMHhFQywg MHg2RSwgMHg4RiwgMHgzMywgMHgwRSwgMHg3NCwgMHg0MCwgMHg0OCwgMHg1MSwgMHhFMiwKKysg ICAgMHg1NCwgMHg2RiwgMHhBRiwgMHg2RSwgMHgzNiwgMHg1NCwgMHgzQSwgMHhFQywgMHg3OCwg MHgzNywgMHhFNiwgMHgxRiwKKysgICAgMHg3NiwgMHhBNSwgMHg0RCwgMHhBNiwgMHhEOSwgMHhC MywgMHg2QiwgMHgxNywgMHg2RCwgMHg2MSwgMHhGQywgMHhBMywKKysgICAgMHg4NSwgMHg0QSwg MHhDQywgMHhEQSwgMHg1MiwgMHhBQywgMHg1QiwgMHhEQSwgMHg1MSwgMHhFNSwgMHg3RiwgMHg1 QiwKKysgICAgMHg1MiwgMHg4QiwgMHg3NCwgMHg3NSwgMHg5OSwgMHg1QywgMHgwMSwgMHhGRCwg MHgyNSwgMHgzRSwgMHhDRCwgMHg4NiwKKysgICAgMHg2RiwgMHg3QSwgMHhDMCwgMHhEOCwgMHgx NywgMHg2RiwgMHhEMSwgMHhEMiwgMHg2QiwgMHhBQiwgMHgxNCwgMHgxRiwKKysgICAgMHgzQiwg MHhCOCwgMHgxNSwgMHgwNSwgMHg4NiwgMHg0MCwgMHgzNiwgMHhDRiwgMHhEQSwgMHg1OSwgMHgy QiwgMHg5QSwKKysgICAgMHhFOSwgMHgxRSwgMHg2RSwgMHhEMywgMHg2QiwgMHhBMSwgMHgxOSwg MHhDNSwgMHhFNiwgMHgzRiwgMHhFOSwgMHgyRSwKKysgICAgMHg0MywgMHhBOCwgMHgzNCwgMHgw QQorK307CisrCisrc3RhdGljIGludCBmaXBzX3JzYV9lbmNyeXB0X3Rlc3QoUlNBICpyc2EsIGNv bnN0IHVuc2lnbmVkIGNoYXIgKnBsYWludGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgcHRsZW4pCisreworKyAgICB1bnNpZ25lZCBjaGFyICpjdGJ1ZiA9IE5VTEws ICpwdGJ1ZiA9IE5VTEw7CisrICAgIGludCByZXQgPSAwOworKyAgICBpbnQgbGVuOworKworKyAg ICBjdGJ1ZiA9IE9QRU5TU0xfbWFsbG9jKFJTQV9zaXplKHJzYSkpOworKyAgICBpZiAoIWN0YnVm KQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIGxlbiA9IFJTQV9wdWJsaWNfZW5jcnlwdChw dGxlbiwgcGxhaW50ZXh0LCBjdGJ1ZiwgcnNhLCBSU0FfUEtDUzFfUEFERElORyk7CisrICAgIGlm IChsZW4gPD0gMCkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICAvKiBDaGVjayBjaXBoZXJ0ZXh0 IGRvZXNuJ3QgbWF0Y2ggcGxhaW50ZXh0ICovCisrICAgIGlmIChsZW4gPj0gcHRsZW4gJiYgIW1l bWNtcChwbGFpbnRleHQsIGN0YnVmLCBwdGxlbikpCisrICAgICAgICBnb3RvIGVycjsKKysKKysg ICAgcHRidWYgPSBPUEVOU1NMX21hbGxvYyhSU0Ffc2l6ZShyc2EpKTsKKysgICAgaWYgKCFwdGJ1 ZikKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBsZW4gPSBSU0FfcHJpdmF0ZV9kZWNyeXB0 KGxlbiwgY3RidWYsIHB0YnVmLCByc2EsIFJTQV9QS0NTMV9QQURESU5HKTsKKysgICAgaWYgKGxl biAhPSBwdGxlbikKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAobWVtY21wKHB0YnVmLCBw bGFpbnRleHQsIGxlbikpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgcmV0ID0gMTsKKysK KysgZXJyOgorKyAgICBpZiAoY3RidWYpCisrICAgICAgICBPUEVOU1NMX2ZyZWUoY3RidWYpOwor KyAgICBpZiAocHRidWYpCisrICAgICAgICBPUEVOU1NMX2ZyZWUocHRidWYpOworKyAgICByZXR1 cm4gcmV0OworK30KKysKKytpbnQgRklQU19zZWxmdGVzdF9yc2EoKQorK3sKKysgICAgaW50IHJl dCA9IDA7CisrICAgIFJTQSAqa2V5OworKyAgICBFVlBfUEtFWSAqcGsgPSBOVUxMOworKworKyAg ICBpZiAoKGtleSA9IFJTQV9uZXcoKSkgPT0gTlVMTCkKKysgICAgICAgIGdvdG8gZXJyOworKwor KyAgICBpZiAoIXNldHJzYWtleShrZXkpKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIGlm ICgocGsgPSBFVlBfUEtFWV9uZXcoKSkgPT0gTlVMTCkKKysgICAgICAgIGdvdG8gZXJyOworKwor KyAgICBFVlBfUEtFWV9zZXQxX1JTQShwaywga2V5KTsKKysKKysgICAgaWYgKCFmaXBzX3BrZXlf c2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMsIHNpemVvZihrYXRfdGJzKSAtIDEsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthdF9SU0FfU0hBMSwgc2l6ZW9mKGthdF9SU0Ff U0hBMSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9zaGExKCksIEVW UF9NRF9DVFhfRkxBR19QQURfUEtDUzEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJSU0EgU0hBMSBQS0NTIzEiKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoIWZp cHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0X1JTQV9TSEEyMjQsIHNpemVv ZihrYXRfUlNBX1NIQTIyNCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVW UF9zaGEyMjQoKSwgRVZQX01EX0NUWF9GTEFHX1BBRF9QS0NTMSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIlJTQSBTSEEyMjQgUEtDUyMxIikpCisrICAgICAgICBnb3RvIGVy cjsKKysgICAgaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMsIHNpemVv ZihrYXRfdGJzKSAtIDEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthdF9S U0FfU0hBMjU2LCBzaXplb2Yoa2F0X1JTQV9TSEEyNTYpLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFVlBfc2hhMjU2KCksIEVWUF9NRF9DVFhfRkxBR19QQURfUEtDUzEsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSU0EgU0hBMjU2IFBLQ1MjMSIpKQor KyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBr LCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBrYXRfUlNBX1NIQTM4NCwgc2l6ZW9mKGthdF9SU0FfU0hBMzg0KSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX3NoYTM4NCgpLCBFVlBfTURfQ1RYX0ZM QUdfUEFEX1BLQ1MxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUlNBIFNI QTM4NCBQS0NTIzEiKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoIWZpcHNfcGtleV9z aWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0X1JTQV9TSEE1MTIsIHNpemVvZihrYXRfUlNB X1NIQTUxMiksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9zaGE1MTIo KSwgRVZQX01EX0NUWF9GTEFHX1BBRF9QS0NTMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIlJTQSBTSEE1MTIgUEtDUyMxIikpCisrICAgICAgICBnb3RvIGVycjsKKysKKysg ICAgaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMsIHNpemVvZihrYXRf dGJzKSAtIDEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthdF9SU0FfUFNT X1NIQTEsIHNpemVvZihrYXRfUlNBX1BTU19TSEExKSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRVZQX3NoYTEoKSwgRVZQX01EX0NUWF9GTEFHX1BBRF9QU1MsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSU0EgU0hBMSBQU1MiKSkKKysgICAgICAgIGdv dG8gZXJyOworKyAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywg c2l6ZW9mKGthdF90YnMpIC0gMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg a2F0X1JTQV9QU1NfU0hBMjI0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aXplb2Yoa2F0X1JTQV9QU1NfU0hBMjI0KSwgRVZQX3NoYTIyNCgpLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BTUywgIlJTQSBTSEEyMjQg UFNTIikpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJl X3Rlc3QocGssIGthdF90YnMsIHNpemVvZihrYXRfdGJzKSAtIDEsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGthdF9SU0FfUFNTX1NIQTI1NiwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mKGthdF9SU0FfUFNTX1NIQTI1NiksIEVWUF9zaGEyNTYo KSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX01EX0NUWF9GTEFHX1BB RF9QU1MsICJSU0EgU0hBMjU2IFBTUyIpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICgh Zmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAx LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYXRfUlNBX1BTU19TSEEzODQs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrYXRfUlNBX1BTU19T SEEzODQpLCBFVlBfc2hhMzg0KCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEVWUF9NRF9DVFhfRkxBR19QQURfUFNTLCAiUlNBIFNIQTM4NCBQU1MiKSkKKysgICAgICAgIGdv dG8gZXJyOworKyAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywg c2l6ZW9mKGthdF90YnMpIC0gMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg a2F0X1JTQV9QU1NfU0hBNTEyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aXplb2Yoa2F0X1JTQV9QU1NfU0hBNTEyKSwgRVZQX3NoYTUxMigpLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BTUywgIlJTQSBTSEE1MTIg UFNTIikpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgaWYgKCFmaXBzX3JzYV9lbmNyeXB0 X3Rlc3Qoa2V5LCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxKSkKKysgICAgICAgIGdvdG8g ZXJyOworKworKyAgICByZXQgPSAxOworKworKyBlcnI6CisrICAgIGlmIChwaykKKysgICAgICAg IEVWUF9QS0VZX2ZyZWUocGspOworKyAgICBpZiAoa2V5KQorKyAgICAgICAgUlNBX2ZyZWUoa2V5 KTsKKysgICAgcmV0dXJuIHJldDsKKyt9CisrCisrI2VuZGlmICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiBkZWYgT1BFTlNTTF9GSVBTICovCitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0 by9maXBzL2ZpcHNfc2hhX3NlbGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBz L2ZpcHNfc2hhX3NlbGZ0ZXN0LmMKKy0tLSBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNf c2hhX3NlbGZ0ZXN0LmMuZmlwcwkyMDE2LTA5LTA4IDExOjM3OjM4Ljc0MzQ2MDExOSArMDIwMAor KysrIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19zaGFfc2VsZnRlc3QuYwkyMDE2LTA5 LTA4IDExOjM3OjM4Ljc0MzQ2MDExOSArMDIwMAorQEAgLTAsMCArMSwxMzggQEAKKysvKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxs IHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291 cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwg YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAq IGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBS ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv cHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisr ICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMg b3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2lu ZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJl IGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUg T3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4g VGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5v dCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Np b24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNz bC1jb3JlQG9wZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo aXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAi T3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAq ICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlz dHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dp bmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVz IHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVz ZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoK KysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBB UyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9T RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1Qg T1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF Q1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM IERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEs IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNF RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisr ICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI RVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP RlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE QU1BR0UuCisrICoKKysgKi8KKysKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPG9w ZW5zc2wvZXJyLmg+CisrI2lmZGVmIE9QRU5TU0xfRklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9m aXBzLmg+CisrI2VuZGlmCisrI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisrI2luY2x1ZGUgPG9w ZW5zc2wvc2hhLmg+CisrCisrI2lmZGVmIE9QRU5TU0xfRklQUworK3N0YXRpYyBjb25zdCBjaGFy IHRlc3RbXVs2MF0gPSB7CisrICAgICIiLAorKyAgICAiYWJjIiwKKysgICAgImFiY2RiY2RlY2Rl ZmRlZmdlZmdoZmdoaWdoaWpoaWpraWprbGprbG1rbG1ubG1ub21ub3Bub3BxIgorK307CisrCisr c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcmV0W11bU0hBX0RJR0VTVF9MRU5HVEhdID0gewor KyAgICB7MHhkYSwgMHgzOSwgMHhhMywgMHhlZSwgMHg1ZSwgMHg2YiwgMHg0YiwgMHgwZCwgMHgz MiwgMHg1NSwKKysgICAgIDB4YmYsIDB4ZWYsIDB4OTUsIDB4NjAsIDB4MTgsIDB4OTAsIDB4YWYs IDB4ZDgsIDB4MDcsIDB4MDl9LAorKyAgICB7MHhhOSwgMHg5OSwgMHgzZSwgMHgzNiwgMHg0Nywg MHgwNiwgMHg4MSwgMHg2YSwgMHhiYSwgMHgzZSwKKysgICAgIDB4MjUsIDB4NzEsIDB4NzgsIDB4 NTAsIDB4YzIsIDB4NmMsIDB4OWMsIDB4ZDAsIDB4ZDgsIDB4OWR9LAorKyAgICB7MHg4NCwgMHg5 OCwgMHgzZSwgMHg0NCwgMHgxYywgMHgzYiwgMHhkMiwgMHg2ZSwgMHhiYSwgMHhhZSwKKysgICAg IDB4NGEsIDB4YTEsIDB4ZjksIDB4NTEsIDB4MjksIDB4ZTUsIDB4ZTUsIDB4NDYsIDB4NzAsIDB4 ZjF9LAorK307CisrCisraW50IEZJUFNfc2VsZnRlc3Rfc2hhMSgpCisreworKyAgICBpbnQgbjsK KysKKysgICAgZm9yIChuID0gMDsgbiA8IHNpemVvZih0ZXN0KSAvIHNpemVvZih0ZXN0WzBdKTsg KytuKSB7CisrICAgICAgICB1bnNpZ25lZCBjaGFyIG1kW1NIQV9ESUdFU1RfTEVOR1RIXTsKKysK KysgICAgICAgIEVWUF9EaWdlc3QodGVzdFtuXSwgc3RybGVuKHRlc3Rbbl0pLCBtZCwgTlVMTCwK KysgICAgICAgICAgICAgICAgICAgRVZQX3NoYTEoKSwgTlVMTCk7CisrICAgICAgICBpZiAobWVt Y21wKG1kLCByZXRbbl0sIHNpemVvZiBtZCkpIHsKKysgICAgICAgICAgICBGSVBTZXJyKEZJUFNf Rl9GSVBTX1NFTEZURVNUX1NIQTEsIEZJUFNfUl9TRUxGVEVTVF9GQUlMRUQpOworKyAgICAgICAg ICAgIHJldHVybiAwOworKyAgICAgICAgfQorKyAgICB9CisrICAgIHJldHVybiAxOworK30KKysK KytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBtc2dfc2hhMjU2W10gPQorKyAgICB7IDB4ZmEs IDB4NDgsIDB4NTksIDB4MmEsIDB4ZTEsIDB4YWUsIDB4MWYsIDB4MzAsCisrICAgIDB4ZmMKKyt9 OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRpZ19zaGEyNTZbXSA9CisrICAgIHsg MHhmNywgMHgyNiwgMHhkOCwgMHg5OCwgMHg0NywgMHg5MSwgMHg2OCwgMHg1YiwKKysgICAgMHg5 ZSwgMHgzOSwgMHhiMiwgMHg1OCwgMHhiYiwgMHg3NSwgMHhiZiwgMHgwMSwKKysgICAgMHgxNywg MHgwYywgMHg4NCwgMHgwMCwgMHgwMSwgMHg3YSwgMHg5NCwgMHg4MywKKysgICAgMHhmMywgMHgw YiwgMHgxNSwgMHg4NCwgMHg0YiwgMHg2OSwgMHg4OCwgMHg4YQorK307CisrCisrc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgbXNnX3NoYTUxMltdID0KKysgICAgeyAweDM3LCAweGQxLCAweDM1 LCAweDlkLCAweDE4LCAweDQxLCAweGU5LCAweGI3LAorKyAgICAweDZkLCAweDlhLCAweDEzLCAw eGRhLCAweDVmLCAweGYzLCAweGJkCisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBkaWdfc2hhNTEyW10gPQorKyAgICB7IDB4MTEsIDB4MTMsIDB4YzQsIDB4MTksIDB4ZWQsIDB4 MmIsIDB4MWQsIDB4MTYsCisrICAgIDB4MTEsIDB4ZWIsIDB4OWIsIDB4YmUsIDB4ZjAsIDB4N2Ys IDB4Y2YsIDB4NDQsCisrICAgIDB4OGIsIDB4ZDcsIDB4NTcsIDB4YmQsIDB4OGQsIDB4YTksIDB4 MjUsIDB4YjAsCisrICAgIDB4NDcsIDB4MjUsIDB4ZDYsIDB4NmMsIDB4OWEsIDB4NTQsIDB4N2Ys IDB4OGYsCisrICAgIDB4MGIsIDB4NTMsIDB4MWEsIDB4MTAsIDB4NjgsIDB4MzIsIDB4MDMsIDB4 MzgsCisrICAgIDB4ODIsIDB4YzQsIDB4ODcsIDB4YzQsIDB4ZWEsIDB4MGUsIDB4ZDEsIDB4MDQs CisrICAgIDB4YTksIDB4OTgsIDB4YzEsIDB4MDUsIDB4YTMsIDB4ZjMsIDB4ZjgsIDB4YjEsCisr ICAgIDB4YWYsIDB4YmMsIDB4ZDksIDB4NzgsIDB4N2UsIDB4ZWUsIDB4M2QsIDB4NDMKKyt9Owor KworK2ludCBGSVBTX3NlbGZ0ZXN0X3NoYTIodm9pZCkKKyt7CisrICAgIHVuc2lnbmVkIGNoYXIg bWRbU0hBNTEyX0RJR0VTVF9MRU5HVEhdOworKworKyAgICBFVlBfRGlnZXN0KG1zZ19zaGEyNTYs IHNpemVvZihtc2dfc2hhMjU2KSwgbWQsIE5VTEwsIEVWUF9zaGEyNTYoKSwgTlVMTCk7CisrICAg IGlmIChtZW1jbXAoZGlnX3NoYTI1NiwgbWQsIHNpemVvZihkaWdfc2hhMjU2KSkpIHsKKysgICAg ICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfU0hBMiwgRklQU19SX1NFTEZURVNUX0ZB SUxFRCk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAgICBFVlBfRGlnZXN0KG1z Z19zaGE1MTIsIHNpemVvZihtc2dfc2hhNTEyKSwgbWQsIE5VTEwsIEVWUF9zaGE1MTIoKSwgTlVM TCk7CisrICAgIGlmIChtZW1jbXAoZGlnX3NoYTUxMiwgbWQsIHNpemVvZihkaWdfc2hhNTEyKSkp IHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfU0hBMiwgRklQU19SX1NF TEZURVNUX0ZBSUxFRCk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAgICByZXR1 cm4gMTsKKyt9CisrCisrI2VuZGlmCitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBz L2ZpcHNfc3RhbmRhbG9uZV9obWFjLmMuZmlwcyBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2Zp cHNfc3RhbmRhbG9uZV9obWFjLmMKKy0tLSBvcGVuc3NsLTEuMS4wL2NyeXB0by9maXBzL2ZpcHNf c3RhbmRhbG9uZV9obWFjLmMuZmlwcwkyMDE2LTA5LTA4IDExOjM3OjM4Ljc0MzQ2MDExOSArMDIw MAorKysrIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2ZpcHMvZmlwc19zdGFuZGFsb25lX2htYWMuYwky MDE2LTA5LTA4IDE1OjU1OjMwLjg0Nzg1NzM1NCArMDIwMAorQEAgLTAsMCArMSwxMjcgQEAKKysv KiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNTTCBQcm9qZWN0 LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNh dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u cworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysg KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi b3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFu ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRp b24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVh dHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZv bGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNv ZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBp biB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisr ICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBt dXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl cml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBl cm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAg b3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBm cm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9y IG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRl bgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYu IFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBm b2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGlu Y2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAg Zm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLyki CisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pF Q1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVT LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICog UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBS T0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NV UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0Us IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVS IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB Q1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug T1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg U1VDSCBEQU1BR0UuCisrICoKKysgKi8KKysKKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVk ZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL29w ZW5zc2xjb25mLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgorKyNpbmNsdWRlIDxvcGVu c3NsL3NoYS5oPgorKworK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyt7CisrI2lm ZGVmIE9QRU5TU0xfRklQUworKyAgICBzdGF0aWMgY2hhciBrZXlbXSA9ICJvcmJvRGVKSVRJVGVq c2lycEFET05pdmlycFVrdmFyUCI7CisrICAgIGludCBuLCBiaW5hcnkgPSAwOworKworKyAgICBp ZiAoYXJnYyA8IDIpIHsKKysgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgWzxmaWxlPl0rXG4i LCBhcmd2WzBdKTsKKysgICAgICAgIGV4aXQoMSk7CisrICAgIH0KKysKKysgICAgbiA9IDE7Cisr ICAgIGlmICghc3RyY21wKGFyZ3Zbbl0sICItYmluYXJ5IikpIHsKKysgICAgICAgIG4rKzsKKysg ICAgICAgIGJpbmFyeSA9IDE7ICAgICAgICAgICAgIC8qIGVtaXQgYmluYXJ5IGZpbmdlcnByaW50 Li4uICovCisrICAgIH0KKysKKysgICAgZm9yICg7IG4gPCBhcmdjOyArK24pIHsKKysgICAgICAg IEZJTEUgKmYgPSBmb3Blbihhcmd2W25dLCAicmIiKTsKKysgICAgICAgIEhNQUNfQ1RYICpobWFj X2N0eDsKKysgICAgICAgIHVuc2lnbmVkIGNoYXIgbWFjW0VWUF9NQVhfTURfU0laRV07CisrICAg ICAgICB1bnNpZ25lZCBpbnQgbGVuOworKyAgICAgICAgdW5zaWduZWQgaW50IGk7CisrCisrICAg ICAgICBpZiAoIWYpIHsKKysgICAgICAgICAgICBwZXJyb3IoYXJndltuXSk7CisrICAgICAgICAg ICAgZXhpdCgyKTsKKysgICAgICAgIH0KKysgICAgICAgIGhtYWNfY3R4ID0gSE1BQ19DVFhfbmV3 KCk7CisrICAgICAgICBpZiAoIWhtYWNfY3R4KQorKyAgICAgICAgICAgIGV4aXQoMyk7CisrCisr ICAgICAgICBpZiAoSE1BQ19Jbml0X2V4KGhtYWNfY3R4LCBrZXksIHN0cmxlbihrZXkpLCBFVlBf c2hhMjU2KCksIE5VTEwpIDw9IDApIHsKKysgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkhN QUMgU0hBMjU2IGluaXRpYWxpemF0aW9uIGZhaWxlZC5cbiIpOworKyAgICAgICAgICAgIGV4aXQo NCk7CisrICAgICAgICB9CisrCisrICAgICAgICBmb3IgKDs7KSB7CisrICAgICAgICAgICAgY2hh ciBidWZbMTAyNF07CisrICAgICAgICAgICAgc2l6ZV90IGwgPSBmcmVhZChidWYsIDEsIHNpemVv ZiBidWYsIGYpOworKworKyAgICAgICAgICAgIGlmIChsID09IDApIHsKKysgICAgICAgICAgICAg ICAgaWYgKGZlcnJvcihmKSkgeworKyAgICAgICAgICAgICAgICAgICAgcGVycm9yKGFyZ3Zbbl0p OworKyAgICAgICAgICAgICAgICAgICAgZXhpdCgzKTsKKysgICAgICAgICAgICAgICAgfSBlbHNl CisrICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICAg ICAgaWYgKEhNQUNfVXBkYXRlKGhtYWNfY3R4LCBidWYsIGwpIDw9IDApIHsKKysgICAgICAgICAg ICAgICAgZnByaW50ZihzdGRlcnIsICJITUFDX1VwZGF0ZSgpIGZhaWxlZC5cbiIpOworKyAgICAg ICAgICAgICAgICBleGl0KDQpOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgICAg IGlmIChITUFDX0ZpbmFsKGhtYWNfY3R4LCBtYWMsICZsZW4pIDw9IDApIHsKKysgICAgICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgIkhNQUNfRmluYWwoKSBmYWlsZWQuXG4iKTsKKysgICAgICAgICAg ICBleGl0KDQpOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKGJpbmFyeSkgeworKyAgICAg ICAgICAgIGZ3cml0ZShtYWMsIGxlbiwgMSwgc3Rkb3V0KTsKKysgICAgICAgICAgICBicmVhazsg ICAgICAgICAgICAgIC8qIC4uLiBmb3Igc2luZ2xlKCEpIGZpbGUgKi8KKysgICAgICAgIH0KKysK KysvKiAgICAgIHByaW50ZigiSE1BQy1TSEExKCVzKT0gIixhcmd2W25dKTsgKi8KKysgICAgICAg IGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkKKysgICAgICAgICAgICBwcmludGYoIiUwMngiLCBt YWNbaV0pOworKyAgICAgICAgcHJpbnRmKCJcbiIpOworKyAgICB9CisrI2VuZGlmCisrICAgIHJl dHVybiAwOworK30KK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjAvY3J5cHRvL2htYWMvaG1hYy5jLmZp cHMgb3BlbnNzbC0xLjEuMC9jcnlwdG8vaG1hYy9obWFjLmMKKy0tLSBvcGVuc3NsLTEuMS4wL2Ny eXB0by9obWFjL2htYWMuYy5maXBzCTIwMTYtMDgtMjUgMTc6Mjk6MjAuMDAwMDAwMDAwICswMjAw CisrKysgb3BlbnNzbC0xLjEuMC9jcnlwdG8vaG1hYy9obWFjLmMJMjAxNi0wOS0wOCAxMTozNzoz OC43NDM0NjAxMTkgKzAyMDAKK0BAIC0zNSw2ICszNSwxMyBAQCBpbnQgSE1BQ19Jbml0X2V4KEhN QUNfQ1RYICpjdHgsIGNvbnN0IHZvCisgICAgIH0KKyAKKyAgICAgaWYgKGtleSAhPSBOVUxMKSB7 CisrI2lmZGVmIE9QRU5TU0xfRklQUworKyAgICAgICAgaWYgKEZJUFNfbW9kZSgpICYmICEoRVZQ X01EX2ZsYWdzKG1kKSAmIEVWUF9NRF9GTEFHX0ZJUFMpCisrICAgICAgICAgICAgJiYgKCFFVlBf TURfQ1RYX3Rlc3RfZmxhZ3MoY3R4LT5tZF9jdHgsIEVWUF9NRF9DVFhfRkxBR19OT05fRklQU19B TExPVykKKysgICAgICAgICAgICAgICAgfHwgIUVWUF9NRF9DVFhfdGVzdF9mbGFncyhjdHgtPmlf Y3R4LCBFVlBfTURfQ1RYX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpCisrICAgICAgICAgICAgICAgIHx8 ICFFVlBfTURfQ1RYX3Rlc3RfZmxhZ3MoY3R4LT5vX2N0eCwgRVZQX01EX0NUWF9GTEFHX05PTl9G SVBTX0FMTE9XKSkpCisrICAgICAgICAgICAgZ290byBlcnI7CisrI2VuZGlmCisgICAgICAgICBy ZXNldCA9IDE7CisgICAgICAgICBqID0gRVZQX01EX2Jsb2NrX3NpemUobWQpOworICAgICAgICAg T1BFTlNTTF9hc3NlcnQoaiA8PSAoaW50KXNpemVvZihjdHgtPmtleSkpOworZGlmZiAtdXAgb3Bl bnNzbC0xLjEuMC9jcnlwdG8vaW5jbHVkZS9pbnRlcm5hbC9maXBzX2ludC5oLmZpcHMgb3BlbnNz bC0xLjEuMC9jcnlwdG8vaW5jbHVkZS9pbnRlcm5hbC9maXBzX2ludC5oCistLS0gb3BlbnNzbC0x LjEuMC9jcnlwdG8vaW5jbHVkZS9pbnRlcm5hbC9maXBzX2ludC5oLmZpcHMJMjAxNi0wOS0wOCAx MTozNzozOC43NDM0NjAxMTkgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wL2NyeXB0by9pbmNsdWRl L2ludGVybmFsL2ZpcHNfaW50LmgJMjAxNi0wOS0wOCAxMTozNzozOC43NDM0NjAxMTkgKzAyMDAK K0BAIC0wLDAgKzEsMTAxIEBACisrLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmlnaHQgKGMpIDIw MDMgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBS ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y IHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0OgorKyAqCisrICogMS4gUmVkaXN0 cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK KysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIuIAorKyAqCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKysgKiAg ICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg dGhlCisrICogICAgZGlzdHJpYnV0aW9uLgorKyAqCisrICogMy4gQWxsIGFkdmVydGlzaW5nIG1h dGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisrICogICAgc29mdHdh cmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRo aXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJv amVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cu b3BlbnNzbC5vcmcvKSIKKysgKgorKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBh bmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAgIGVuZG9yc2Ug b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Cisr ICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBw bGVhc2UgY29udGFjdAorKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KKysgKgorKyAq IDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVk ICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1l cyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NM IFByb2plY3QuCisrICoKKysgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNv ZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisrICogICAgYWNrbm93bGVkZ21lbnQ6Cisr ICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9w ZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0 cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF RCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisrICogRVhQUkVTU0VE IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI RQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO VCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisrICogSVRTIENPTlRSSUJVVE9SUyBCRSBM SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKyAqIFNQRUNJQUws IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorKyAq IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ Q0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF UlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFOWSBX QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisrICog T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqCisrICovCisrCisrI2luY2x1 ZGUgPG9wZW5zc2wvb3BlbnNzbGNvbmYuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKysK KysjaWZuZGVmIE9QRU5TU0xfRklQUworKyMgZXJyb3IgRklQUyBpcyBkaXNhYmxlZC4KKysjZW5k aWYKKysKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrCisraW50IEZJUFNfbW9kdWxlX21vZGVfc2V0 KGludCBvbm9mZik7CisraW50IEZJUFNfbW9kdWxlX21vZGUodm9pZCk7CisraW50IEZJUFNfbW9k dWxlX2luc3RhbGxlZCh2b2lkKTsKKytpbnQgRklQU19zZWxmdGVzdF9zaGExKHZvaWQpOworK2lu dCBGSVBTX3NlbGZ0ZXN0X3NoYTIodm9pZCk7CisraW50IEZJUFNfc2VsZnRlc3RfYWVzX2NjbSh2 b2lkKTsKKytpbnQgRklQU19zZWxmdGVzdF9hZXNfZ2NtKHZvaWQpOworK2ludCBGSVBTX3NlbGZ0 ZXN0X2Flc194dHModm9pZCk7CisraW50IEZJUFNfc2VsZnRlc3RfYWVzKHZvaWQpOworK2ludCBG SVBTX3NlbGZ0ZXN0X2Rlcyh2b2lkKTsKKytpbnQgRklQU19zZWxmdGVzdF9yc2Eodm9pZCk7Cisr aW50IEZJUFNfc2VsZnRlc3RfZHNhKHZvaWQpOworK2ludCBGSVBTX3NlbGZ0ZXN0X2VjZHNhKHZv aWQpOworK2ludCBGSVBTX3NlbGZ0ZXN0X2VjZGgodm9pZCk7CisraW50IEZJUFNfc2VsZnRlc3Rf ZGgodm9pZCk7Cisrdm9pZCBGSVBTX2RyYmdfc3RpY2soaW50IG9ub2ZmKTsKKytpbnQgRklQU19z ZWxmdGVzdF9obWFjKHZvaWQpOworK2ludCBGSVBTX3NlbGZ0ZXN0X2RyYmcodm9pZCk7CisraW50 IEZJUFNfc2VsZnRlc3RfY21hYyh2b2lkKTsKKysKKytpbnQgZmlwc19wa2V5X3NpZ25hdHVyZV90 ZXN0KEVWUF9QS0VZICpwa2V5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHVuc2lnbmVkIGNoYXIgKnRicywgaW50IHRic2xlbiwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICprYXQsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGthdGxlbiwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBFVlBfTUQgKmRpZ2VzdCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWRfZmxhZ3MsIGNvbnN0IGNoYXIgKmZhaWxf c3RyKTsKKysKKytpbnQgZmlwc19jaXBoZXJfdGVzdChFVlBfQ0lQSEVSX0NUWCAqY3R4LAorKyAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFVlBfQ0lQSEVSICpjaXBoZXIsCisrICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaXYsCisrICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBsYWludGV4dCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY2lwaGVydGV4dCwgaW50IGxlbik7Cisr Cisrdm9pZCBmaXBzX3NldF9zZWxmdGVzdF9mYWlsKHZvaWQpOworKworK2NvbnN0IEVWUF9NRCAq RklQU19nZXRfZGlnZXN0YnluaWQoaW50IG5pZCk7CisrCisrY29uc3QgRVZQX0NJUEhFUiAqRklQ U19nZXRfY2lwaGVyYnluaWQoaW50IG5pZCk7CisrCisrdm9pZCBGSVBTX2dldF90aW1ldmVjKHVu c2lnbmVkIGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyAqcGN0cik7CisrCisrI2VuZGlmCitkaWZm IC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9vX2ZpcHMuYy5maXBzIG9wZW5zc2wtMS4xLjAvY3J5 cHRvL29fZmlwcy5jCistLS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vb19maXBzLmMuZmlwcwkyMDE2 LTA4LTI1IDE3OjI5OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAvY3J5cHRv L29fZmlwcy5jCTIwMTYtMDktMDggMTE6Mzc6MzguNzQzNDYwMTE5ICswMjAwCitAQCAtOSw3ICs5 LDEwIEBACisgCisgI2luY2x1ZGUgImludGVybmFsL2NyeXB0bGliLmgiCisgI2lmZGVmIE9QRU5T U0xfRklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+CisgIyBpbmNsdWRlIDxvcGVuc3Ns L2ZpcHMuaD4KKysjIGluY2x1ZGUgPG9wZW5zc2wvZmlwc19yYW5kLmg+CisrIyBpbmNsdWRlICJp bnRlcm5hbC9maXBzX2ludC5oIgorICNlbmRpZgorIAorIGludCBGSVBTX21vZGUodm9pZCkKK0BA IC0yNCw3ICsyNywxNSBAQCBpbnQgRklQU19tb2RlKHZvaWQpCisgaW50IEZJUFNfbW9kZV9zZXQo aW50IHIpCisgeworICNpZmRlZiBPUEVOU1NMX0ZJUFMKKy0gICAgcmV0dXJuIEZJUFNfbW9kdWxl X21vZGVfc2V0KHIpOworKyAgICBpZiAociAmJiBGSVBTX21vZHVsZV9tb2RlKCkpIC8qIGNhbiBi ZSBpbXBsaWNpdGx5IGluaXRpYWxpemVkIGJ5IE9QRU5TU0xfaW5pdCgpICovCisrICAgICAgICBy ZXR1cm4gMTsKKysgICAgaWYgKCFGSVBTX21vZHVsZV9tb2RlX3NldChyKSkKKysgICAgICAgIHJl dHVybiAwOworKyAgICBpZiAocikKKysgICAgICAgIFJBTkRfc2V0X3JhbmRfbWV0aG9kKEZJUFNf cmFuZF9nZXRfbWV0aG9kKCkpOworKyAgICBlbHNlCisrICAgICAgICBSQU5EX3NldF9yYW5kX21l dGhvZChOVUxMKTsKKysgICAgcmV0dXJuIDE7CisgI2Vsc2UKKyAgICAgaWYgKHIgPT0gMCkKKyAg ICAgICAgIHJldHVybiAxOworZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vb19pbml0LmMu ZmlwcyBvcGVuc3NsLTEuMS4wL2NyeXB0by9vX2luaXQuYworLS0tIG9wZW5zc2wtMS4xLjAvY3J5 cHRvL29faW5pdC5jLmZpcHMJMjAxNi0wOC0yNSAxNzoyOToyMS4wMDAwMDAwMDAgKzAyMDAKKysr KyBvcGVuc3NsLTEuMS4wL2NyeXB0by9vX2luaXQuYwkyMDE2LTA5LTA4IDExOjM3OjM4Ljc0NDQ2 MDE0MSArMDIwMAorQEAgLTcsMTEgKzcsNTAgQEAKKyAgKiBodHRwczovL3d3dy5vcGVuc3NsLm9y Zy9zb3VyY2UvbGljZW5zZS5odG1sCisgICovCisgCisrLyogZm9yIHNlY3VyZV9nZXRlbnYgKi8K KysjZGVmaW5lIF9HTlVfU09VUkNFCisgI2luY2x1ZGUgPGVfb3MuaD4KKyAjaW5jbHVkZSA8b3Bl bnNzbC9lcnIuaD4KKyAjaWZkZWYgT1BFTlNTTF9GSVBTCistIyBpbmNsdWRlIDxvcGVuc3NsL2Zp cHMuaD4KKysjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgorKyMgaW5jbHVkZSA8c3lzL3N0YXQuaD4K KysjIGluY2x1ZGUgPGZjbnRsLmg+CisrIyBpbmNsdWRlIDx1bmlzdGQuaD4KKysjIGluY2x1ZGUg PGVycm5vLmg+CisrIyBpbmNsdWRlIDxzdGRsaWIuaD4KKyAjIGluY2x1ZGUgPG9wZW5zc2wvcmFu ZC5oPgorKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrIyBpbmNsdWRlICJpbnRlcm5hbC9m aXBzX2ludC5oIgorKworKyMgZGVmaW5lIEZJUFNfTU9ERV9TV0lUQ0hfRklMRSAiL3Byb2Mvc3lz L2NyeXB0by9maXBzX2VuYWJsZWQiCisrCisrc3RhdGljIHZvaWQgaW5pdF9maXBzX21vZGUodm9p ZCkKKyt7CisrICAgIGNoYXIgYnVmWzJdID0gIjAiOworKyAgICBpbnQgZmQ7CisrCisrICAgIC8q IEVuc3VyZSB0aGUgc2VsZnRlc3RzIGFsd2F5cyBydW4gKi8KKysgICAgRklQU19tb2RlX3NldCgx KTsKKysKKysgICAgaWYgKHNlY3VyZV9nZXRlbnYoIk9QRU5TU0xfRk9SQ0VfRklQU19NT0RFIikg IT0gTlVMTCkgeworKyAgICAgICAgYnVmWzBdID0gJzEnOworKyAgICB9IGVsc2UgaWYgKChmZCA9 IG9wZW4oRklQU19NT0RFX1NXSVRDSF9GSUxFLCBPX1JET05MWSkpID49IDApIHsKKysgICAgICAg IHdoaWxlIChyZWFkKGZkLCBidWYsIHNpemVvZihidWYpKSA8IDAgJiYgZXJybm8gPT0gRUlOVFIp IDsKKysgICAgICAgIGNsb3NlKGZkKTsKKysgICAgfQorKyAgICAvKiBGYWlsdXJlIHJlYWRpbmcg dGhlIGZpcHMgbW9kZSBzd2l0Y2ggZmlsZSBtZWFucyBqdXN0IG5vdAorKyAgICAgKiBzd2l0Y2hp bmcgaW50byBGSVBTIG1vZGUuIFdlIHdvdWxkIGJyZWFrIHRvbyBtYW55IHRoaW5ncworKyAgICAg KiBvdGhlcndpc2UuLgorKyAgICAgKi8KKysKKysgICAgaWYgKGJ1ZlswXSAhPSAnMScpIHsKKysg ICAgICAgIC8qIGRyb3AgZG93biB0byBub24tRklQUyBtb2RlIGlmIGl0IGlzIG5vdCByZXF1ZXN0 ZWQgKi8KKysgICAgICAgIEZJUFNfbW9kZV9zZXQoMCk7CisrICAgIH0gZWxzZSB7CisrICAgICAg ICAvKiBhYm9ydCBpZiBzZWxmdGVzdCBmYWlsZWQgKi8KKysgICAgICAgIEZJUFNfc2VsZnRlc3Rf Y2hlY2soKTsKKysgICAgfQorK30KKyAjZW5kaWYKKyAKKyAvKgorQEAgLTE5LDE2ICs1OCwyOSBA QAorICAqIHNldHMgRklQUyBjYWxsYmFja3MKKyAgKi8KKyAKKy12b2lkIE9QRU5TU0xfaW5pdCh2 b2lkKQorK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKGNvbnN0cnVjdG9yKSkgT1BFTlNTTF9pbml0X2xp YnJhcnkodm9pZCkKKyB7CisgICAgIHN0YXRpYyBpbnQgZG9uZSA9IDA7CisgICAgIGlmIChkb25l KQorICAgICAgICAgcmV0dXJuOworICAgICBkb25lID0gMTsKKyAjaWZkZWYgT1BFTlNTTF9GSVBT CistICAgIEZJUFNfc2V0X2xvY2tpbmdfY2FsbGJhY2tzKENSWVBUT19sb2NrLCBDUllQVE9fYWRk X2xvY2spOworLSAgICBGSVBTX3NldF9lcnJvcl9jYWxsYmFja3MoRVJSX3B1dF9lcnJvciwgRVJS X2FkZF9lcnJvcl92ZGF0YSk7CistICAgIEZJUFNfc2V0X21hbGxvY19jYWxsYmFja3MoQ1JZUFRP X21hbGxvYywgQ1JZUFRPX2ZyZWUpOworKyAgICBpZiAoIUZJUFNfbW9kdWxlX2luc3RhbGxlZCgp KSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKyAgICAgUkFORF9pbml0X2ZpcHMoKTsKKysg ICAgaW5pdF9maXBzX21vZGUoKTsKKysgICAgaWYgKCFGSVBTX21vZGUoKSkgeworKyAgICAgICAg LyogQ2xlYW4gdXAgcHJlbWF0dXJlbHkgc2V0IGRlZmF1bHQgcmFuZCBtZXRob2QgKi8KKysgICAg ICAgIFJBTkRfc2V0X3JhbmRfbWV0aG9kKE5VTEwpOworKyAgICB9CisrI2VuZGlmCisrI2lmIDAK KysgICAgZnByaW50ZihzdGRlcnIsICJDYWxsZWQgT1BFTlNTTF9pbml0XG4iKTsKKyAjZW5kaWYK KyB9CisrCisrdm9pZCBPUEVOU1NMX2luaXQodm9pZCkKKyt7CisrICAgIE9QRU5TU0xfaW5pdF9s aWJyYXJ5KCk7CisrfQorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vcmFuZC9tZF9yYW5k LmMuZmlwcyBvcGVuc3NsLTEuMS4wL2NyeXB0by9yYW5kL21kX3JhbmQuYworLS0tIG9wZW5zc2wt MS4xLjAvY3J5cHRvL3JhbmQvbWRfcmFuZC5jLmZpcHMJMjAxNi0wOC0yNSAxNzoyOToyMS4wMDAw MDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wL2NyeXB0by9yYW5kL21kX3JhbmQuYwkyMDE2 LTA5LTA4IDExOjM3OjM4Ljc0NDQ2MDE0MSArMDIwMAorQEAgLTM1OSw3ICszNTksNyBAQCBzdGF0 aWMgaW50IHJhbmRfYnl0ZXModW5zaWduZWQgY2hhciAqYnVmCisgICAgIENSWVBUT19USFJFQURf dW5sb2NrKHJhbmRfdG1wX2xvY2spOworICAgICBjcnlwdG9fbG9ja19yYW5kID0gMTsKKyAKKy0g ICAgaWYgKCFpbml0aWFsaXplZCkgeworKyAgICBpZiAoIWluaXRpYWxpemVkIHx8IEZJUFNfbW9k ZSgpKSB7CisgICAgICAgICBSQU5EX3BvbGwoKTsKKyAgICAgICAgIGluaXRpYWxpemVkID0gMTsK KyAgICAgfQorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vcmFuZC9yYW5kX2Vyci5jLmZp cHMgb3BlbnNzbC0xLjEuMC9jcnlwdG8vcmFuZC9yYW5kX2Vyci5jCistLS0gb3BlbnNzbC0xLjEu MC9jcnlwdG8vcmFuZC9yYW5kX2Vyci5jLmZpcHMJMjAxNi0wOC0yNSAxNzoyOToyMS4wMDAwMDAw MDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wL2NyeXB0by9yYW5kL3JhbmRfZXJyLmMJMjAxNi0w OS0wOCAxMTozNzozOC43NDQ0NjAxNDEgKzAyMDAKK0BAIC0yMCwxMCArMjAsMTMgQEAKKyAKKyBz dGF0aWMgRVJSX1NUUklOR19EQVRBIFJBTkRfc3RyX2Z1bmN0c1tdID0geworICAgICB7RVJSX0ZV TkMoUkFORF9GX1JBTkRfQllURVMpLCAiUkFORF9ieXRlcyJ9LAorKyAgICB7RVJSX0ZVTkMoUkFO RF9GX1JBTkRfSU5JVF9GSVBTKSwgIlJBTkRfaW5pdF9maXBzIn0sCisgICAgIHswLCBOVUxMfQor IH07CisgCisgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBSQU5EX3N0cl9yZWFzb25zW10gPSB7Cisr ICAgIHtFUlJfUkVBU09OKFJBTkRfUl9FUlJPUl9JTklUSUFMSVNJTkdfRFJCRyksICJlcnJvciBp bml0aWFsaXNpbmcgRFJCRyJ9LAorKyAgICB7RVJSX1JFQVNPTihSQU5EX1JfRVJST1JfSU5TVEFO VElBVElOR19EUkJHKSwgImVycm9yIGluc3RhbnRpYXRpbmcgRFJCRyJ9LAorICAgICB7RVJSX1JF QVNPTihSQU5EX1JfUFJOR19OT1RfU0VFREVEKSwgIlBSTkcgbm90IHNlZWRlZCJ9LAorICAgICB7 MCwgTlVMTH0KKyB9OworZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vcmFuZC9yYW5kX2xj bC5oLmZpcHMgb3BlbnNzbC0xLjEuMC9jcnlwdG8vcmFuZC9yYW5kX2xjbC5oCistLS0gb3BlbnNz bC0xLjEuMC9jcnlwdG8vcmFuZC9yYW5kX2xjbC5oLmZpcHMJMjAxNi0wOS0wOCAxMTozNzozOC42 MDA0NTY5MjAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wL2NyeXB0by9yYW5kL3JhbmRfbGNsLmgJ MjAxNi0wOS0wOCAxMTozNzozOC43NDQ0NjAxNDEgKzAyMDAKK0BAIC0xMCw3ICsxMCw3IEBACisg I2lmbmRlZiBIRUFERVJfUkFORF9MQ0xfSAorICMgZGVmaW5lIEhFQURFUl9SQU5EX0xDTF9ICisg CistIyBkZWZpbmUgRU5UUk9QWV9ORUVERUQgMzIgICAgICAvKiByZXF1aXJlIDI1NiBiaXRzID0g MzIgYnl0ZXMgb2YgcmFuZG9tbmVzcyAqLworKyMgZGVmaW5lIEVOVFJPUFlfTkVFREVEIDQ4ICAg ICAgLyogcmVxdWlyZSAzODQgYml0cyA9IDQ4IGJ5dGVzIG9mIHJhbmRvbW5lc3MgKi8KKyAKKyAj IGlmICFkZWZpbmVkKFVTRV9NRDVfUkFORCkgJiYgIWRlZmluZWQoVVNFX1NIQTFfUkFORCkgJiYg IWRlZmluZWQoVVNFX01EQzJfUkFORCkgJiYgIWRlZmluZWQoVVNFX01EMl9SQU5EKQorICMgIGRl ZmluZSBVU0VfU0hBMV9SQU5ECitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9yYW5kL3Jh bmRfbGliLmMuZmlwcyBvcGVuc3NsLTEuMS4wL2NyeXB0by9yYW5kL3JhbmRfbGliLmMKKy0tLSBv cGVuc3NsLTEuMS4wL2NyeXB0by9yYW5kL3JhbmRfbGliLmMuZmlwcwkyMDE2LTA4LTI1IDE3OjI5 OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAvY3J5cHRvL3JhbmQvcmFuZF9s aWIuYwkyMDE2LTA5LTA4IDExOjM3OjM4Ljc0NDQ2MDE0MSArMDIwMAorQEAgLTE4LDYgKzE4LDgg QEAKKyAjaWZkZWYgT1BFTlNTTF9GSVBTCisgIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKyAj IGluY2x1ZGUgPG9wZW5zc2wvZmlwc19yYW5kLmg+CisrIyBpbmNsdWRlICJyYW5kX2xjbC5oIgor KyMgaW5jbHVkZSAiaW50ZXJuYWwvZmlwc19pbnQuaCIKKyAjZW5kaWYKKyAKKyAjaWZuZGVmIE9Q RU5TU0xfTk9fRU5HSU5FCitAQCAtMTI0LDMgKzEyNiwxMjcgQEAgaW50IFJBTkRfc3RhdHVzKHZv aWQpCisgICAgICAgICByZXR1cm4gbWV0aC0+c3RhdHVzKCk7CisgICAgIHJldHVybiAwOworIH0K KysKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrCisrLyoKKysgKiBGSVBTIERSQkcgaW5pdGlhbGlz YXRpb24gY29kZS4gVGhpcyBzZXRzIHVwIHRoZSBEUkJHIGZvciB1c2UgYnkgdGhlIHJlc3QKKysg KiBvZiBPcGVuU1NMLgorKyAqLworKworKy8qCisrICogRW50cm9weSBnYXRoZXJlcjogdXNlIHN0 YW5kYXJkIE9wZW5TU0wgUFJORyB0byBzZWVkICh0aGlzIHdpbGwgZ2F0aGVyCisrICogZW50cm9w eSBpbnRlcm5hbGx5IHRocm91Z2ggUkFORF9wb2xsKCkuCisrICovCisrCisrc3RhdGljIHNpemVf dCBkcmJnX2dldF9lbnRyb3B5KERSQkdfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKipwb3V0LAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW50cm9weSwgc2l6ZV90IG1pbl9s ZW4sIHNpemVfdCBtYXhfbGVuKQorK3sKKysgICAgLyogUm91bmQgdXAgcmVxdWVzdCB0byBtdWx0 aXBsZSBvZiBibG9jayBzaXplICovCisrICAgIG1pbl9sZW4gPSAoKG1pbl9sZW4gKyAxOSkgLyAy MCkgKiAyMDsKKysgICAgKnBvdXQgPSBPUEVOU1NMX21hbGxvYyhtaW5fbGVuKTsKKysgICAgaWYg KCEqcG91dCkKKysgICAgICAgIHJldHVybiAwOworKyAgICBpZiAoUkFORF9PcGVuU1NMKCktPmJ5 dGVzKCpwb3V0LCBtaW5fbGVuKSA8PSAwKSB7CisrICAgICAgICBPUEVOU1NMX2ZyZWUoKnBvdXQp OworKyAgICAgICAgKnBvdXQgPSBOVUxMOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysg ICAgcmV0dXJuIG1pbl9sZW47CisrfQorKworK3N0YXRpYyB2b2lkIGRyYmdfZnJlZV9lbnRyb3B5 KERSQkdfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG9sZW4pCisreworKyAg ICBpZiAob3V0KSB7CisrICAgICAgICBPUEVOU1NMX2NsZWFuc2Uob3V0LCBvbGVuKTsKKysgICAg ICAgIE9QRU5TU0xfZnJlZShvdXQpOworKyAgICB9CisrfQorKworKy8qCisrICogU2V0ICJhZGRp dGlvbmFsIGlucHV0IiB3aGVuIGdlbmVyYXRpbmcgcmFuZG9tIGRhdGEuIFRoaXMgdXNlcyB0aGUg Y3VycmVudAorKyAqIFBJRCwgYSB0aW1lIHZhbHVlIGFuZCBhIGNvdW50ZXIuCisrICovCisrCisr c3RhdGljIHNpemVfdCBkcmJnX2dldF9hZGluKERSQkdfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIg Kipwb3V0KQorK3sKKysgICAgLyogVXNlIG9mIHN0YXRpYyB2YXJpYWJsZXMgaXMgT0sgYXMgdGhp cyBoYXBwZW5zIHVuZGVyIGEgbG9jayAqLworKyAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBidWZb MTZdOworKyAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBjb3VudGVyOworKyAgICBGSVBTX2dldF90 aW1ldmVjKGJ1ZiwgJmNvdW50ZXIpOworKyAgICAqcG91dCA9IGJ1ZjsKKysgICAgcmV0dXJuIHNp emVvZihidWYpOworK30KKysKKysvKgorKyAqIFJBTkRfYWRkKCkgYW5kIFJBTkRfc2VlZCgpIHBh c3MgdGhyb3VnaCB0byBPcGVuU1NMIFBSTkcgc28gaXQgaXMKKysgKiBjb3JyZWN0bHkgc2VlZGVk IGJ5IFJBTkRfcG9sbCgpLgorKyAqLworKworK3N0YXRpYyBpbnQgZHJiZ19yYW5kX2FkZChEUkJH X0NUWCAqY3R4LCBjb25zdCB2b2lkICppbiwgaW50IGlubGVuLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICBkb3VibGUgZW50cm9weSkKKyt7CisrICAgIFJBTkRfT3BlblNTTCgpLT5hZGQoaW4s IGlubGVuLCBlbnRyb3B5KTsKKysgICAgaWYgKEZJUFNfcmFuZF9zdGF0dXMoKSkgeworKyAgICAg ICAgRklQU19kcmJnX3Jlc2VlZChjdHgsIE5VTEwsIDApOworKyAgICB9CisrICAgIHJldHVybiAx OworK30KKysKKytzdGF0aWMgaW50IGRyYmdfcmFuZF9zZWVkKERSQkdfQ1RYICpjdHgsIGNvbnN0 IHZvaWQgKmluLCBpbnQgaW5sZW4pCisreworKyAgICBSQU5EX09wZW5TU0woKS0+c2VlZChpbiwg aW5sZW4pOworKyAgICBpZiAoRklQU19yYW5kX3N0YXR1cygpKSB7CisrICAgICAgICBGSVBTX2Ry YmdfcmVzZWVkKGN0eCwgTlVMTCwgMCk7CisrICAgIH0KKysgICAgcmV0dXJuIDE7CisrfQorKwor KyMgaWZuZGVmIE9QRU5TU0xfRFJCR19ERUZBVUxUX1RZUEUKKysjICBkZWZpbmUgT1BFTlNTTF9E UkJHX0RFRkFVTFRfVFlQRSAgICAgICBOSURfYWVzXzI1Nl9jdHIKKysjIGVuZGlmCisrIyBpZm5k ZWYgT1BFTlNTTF9EUkJHX0RFRkFVTFRfRkxBR1MKKysjICBkZWZpbmUgT1BFTlNTTF9EUkJHX0RF RkFVTFRfRkxBR1MgICAgICBEUkJHX0ZMQUdfQ1RSX1VTRV9ERgorKyMgZW5kaWYKKysKKytzdGF0 aWMgaW50IGZpcHNfZHJiZ190eXBlID0gT1BFTlNTTF9EUkJHX0RFRkFVTFRfVFlQRTsKKytzdGF0 aWMgaW50IGZpcHNfZHJiZ19mbGFncyA9IE9QRU5TU0xfRFJCR19ERUZBVUxUX0ZMQUdTOworKwor K3ZvaWQgUkFORF9zZXRfZmlwc19kcmJnX3R5cGUoaW50IHR5cGUsIGludCBmbGFncykKKyt7Cisr ICAgIGZpcHNfZHJiZ190eXBlID0gdHlwZTsKKysgICAgZmlwc19kcmJnX2ZsYWdzID0gZmxhZ3M7 CisrfQorKworK2ludCBSQU5EX2luaXRfZmlwcyh2b2lkKQorK3sKKysgICAgRFJCR19DVFggKmRj dHg7CisrICAgIHNpemVfdCBwbGVuOworKyAgICB1bnNpZ25lZCBjaGFyIHBlcnNbMzJdLCAqcDsK KysKKysgICAgZGN0eCA9IEZJUFNfZ2V0X2RlZmF1bHRfZHJiZygpOworKyAgICBpZiAoZGN0eCA9 PSBOVUxMIHx8CisrICAgICAgICBGSVBTX2RyYmdfaW5pdChkY3R4LCBmaXBzX2RyYmdfdHlwZSwg Zmlwc19kcmJnX2ZsYWdzKSA8PSAwKSB7CisrICAgICAgICBSQU5EZXJyKFJBTkRfRl9SQU5EX0lO SVRfRklQUywgUkFORF9SX0VSUk9SX0lOSVRJQUxJU0lOR19EUkJHKTsKKysgICAgICAgIHJldHVy biAwOworKyAgICB9CisrCisrICAgIEZJUFNfZHJiZ19zZXRfY2FsbGJhY2tzKGRjdHgsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRyYmdfZ2V0X2VudHJvcHksIGRyYmdfZnJlZV9lbnRy b3B5LCAyMCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJiZ19nZXRfZW50cm9weSwg ZHJiZ19mcmVlX2VudHJvcHkpOworKyAgICBGSVBTX2RyYmdfc2V0X3JhbmRfY2FsbGJhY2tzKGRj dHgsIGRyYmdfZ2V0X2FkaW4sIDAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZHJiZ19yYW5kX3NlZWQsIGRyYmdfcmFuZF9hZGQpOworKyAgICAvKiBQZXJzb25hbGlzYXRpb24g c3RyaW5nOiBhIHN0cmluZyBmb2xsb3dlZCBieSBkYXRlIHRpbWUgdmVjdG9yICovCisrICAgIHN0 cmNweSgoY2hhciAqKXBlcnMsICJPcGVuU1NMIERSQkcyLjAiKTsKKysgICAgcGxlbiA9IGRyYmdf Z2V0X2FkaW4oZGN0eCwgJnApOworKyAgICBtZW1jcHkocGVycyArIDE2LCBwLCBwbGVuKTsKKysK KysgICAgaWYgKEZJUFNfZHJiZ19pbnN0YW50aWF0ZShkY3R4LCBwZXJzLCBzaXplb2YocGVycykp IDw9IDApIHsKKysgICAgICAgIFJBTkRlcnIoUkFORF9GX1JBTkRfSU5JVF9GSVBTLCBSQU5EX1Jf RVJST1JfSU5TVEFOVElBVElOR19EUkJHKTsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9Cisr ICAgIEZJUFNfcmFuZF9zZXRfbWV0aG9kKEZJUFNfZHJiZ19tZXRob2QoKSk7CisrICAgIHJldHVy biAxOworK30KKysKKysjZW5kaWYKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjAvY3J5cHRvL3JzYS9y c2FfY3JwdC5jLmZpcHMgb3BlbnNzbC0xLjEuMC9jcnlwdG8vcnNhL3JzYV9jcnB0LmMKKy0tLSBv cGVuc3NsLTEuMS4wL2NyeXB0by9yc2EvcnNhX2NycHQuYy5maXBzCTIwMTYtMDgtMjUgMTc6Mjk6 MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC9jcnlwdG8vcnNhL3JzYV9jcnB0 LmMJMjAxNi0wOS0wOCAxMTozNzozOC43NDQ0NjAxNDEgKzAyMDAKK0BAIC0yOCwyNCArMjgsNTIg QEAgaW50IFJTQV9zaXplKGNvbnN0IFJTQSAqcikKKyBpbnQgUlNBX3B1YmxpY19lbmNyeXB0KGlu dCBmbGVuLCBjb25zdCB1bnNpZ25lZCBjaGFyICpmcm9tLCB1bnNpZ25lZCBjaGFyICp0bywKKyAg ICAgICAgICAgICAgICAgICAgICAgIFJTQSAqcnNhLCBpbnQgcGFkZGluZykKKyB7CisrI2lmZGVm IE9QRU5TU0xfRklQUworKyAgICBpZiAoRklQU19tb2RlKCkgJiYgIShyc2EtPm1ldGgtPmZsYWdz ICYgUlNBX0ZMQUdfRklQU19NRVRIT0QpCisrICAgICAgICAmJiAhKHJzYS0+ZmxhZ3MgJiBSU0Ff RkxBR19OT05fRklQU19BTExPVykpIHsKKysgICAgICAgIFJTQWVycihSU0FfRl9SU0FfUFVCTElD X0VOQ1JZUFQsIFJTQV9SX05PTl9GSVBTX1JTQV9NRVRIT0QpOworKyAgICAgICAgcmV0dXJuIC0x OworKyAgICB9CisrI2VuZGlmCisgICAgIHJldHVybiAocnNhLT5tZXRoLT5yc2FfcHViX2VuYyhm bGVuLCBmcm9tLCB0bywgcnNhLCBwYWRkaW5nKSk7CisgfQorIAorIGludCBSU0FfcHJpdmF0ZV9l bmNyeXB0KGludCBmbGVuLCBjb25zdCB1bnNpZ25lZCBjaGFyICpmcm9tLAorICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnRvLCBSU0EgKnJzYSwgaW50IHBhZGRpbmcpCisg eworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgaWYgKEZJUFNfbW9kZSgpICYmICEocnNhLT5m bGFncyAmIFJTQV9GTEFHX05PTl9GSVBTX0FMTE9XKSkgeworKyAgICAgICAgUlNBZXJyKFJTQV9G X1JTQV9QUklWQVRFX0VOQ1JZUFQsCisrICAgICAgICAgICAgICAgUlNBX1JfT1BFUkFUSU9OX05P VF9BTExPV0VEX0lOX0ZJUFNfTU9ERSk7CisrICAgICAgICByZXR1cm4gLTE7CisrICAgIH0KKysj ZW5kaWYKKyAgICAgcmV0dXJuIChyc2EtPm1ldGgtPnJzYV9wcml2X2VuYyhmbGVuLCBmcm9tLCB0 bywgcnNhLCBwYWRkaW5nKSk7CisgfQorIAorIGludCBSU0FfcHJpdmF0ZV9kZWNyeXB0KGludCBm bGVuLCBjb25zdCB1bnNpZ25lZCBjaGFyICpmcm9tLAorICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGNoYXIgKnRvLCBSU0EgKnJzYSwgaW50IHBhZGRpbmcpCisgeworKyNpZmRlZiBP UEVOU1NMX0ZJUFMKKysgICAgaWYgKEZJUFNfbW9kZSgpICYmICEocnNhLT5tZXRoLT5mbGFncyAm IFJTQV9GTEFHX0ZJUFNfTUVUSE9EKQorKyAgICAgICAgJiYgIShyc2EtPmZsYWdzICYgUlNBX0ZM QUdfTk9OX0ZJUFNfQUxMT1cpKSB7CisrICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX1BSSVZBVEVf REVDUllQVCwgUlNBX1JfTk9OX0ZJUFNfUlNBX01FVEhPRCk7CisrICAgICAgICByZXR1cm4gLTE7 CisrICAgIH0KKysjZW5kaWYKKyAgICAgcmV0dXJuIChyc2EtPm1ldGgtPnJzYV9wcml2X2RlYyhm bGVuLCBmcm9tLCB0bywgcnNhLCBwYWRkaW5nKSk7CisgfQorIAorIGludCBSU0FfcHVibGljX2Rl Y3J5cHQoaW50IGZsZW4sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmZyb20sIHVuc2lnbmVkIGNoYXIg KnRvLAorICAgICAgICAgICAgICAgICAgICAgICAgUlNBICpyc2EsIGludCBwYWRkaW5nKQorIHsK KysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKHJzYS0+Zmxh Z3MgJiBSU0FfRkxBR19OT05fRklQU19BTExPVykpIHsKKysgICAgICAgIFJTQWVycihSU0FfRl9S U0FfUFVCTElDX0RFQ1JZUFQsCisrICAgICAgICAgICAgICAgUlNBX1JfT1BFUkFUSU9OX05PVF9B TExPV0VEX0lOX0ZJUFNfTU9ERSk7CisrICAgICAgICByZXR1cm4gLTE7CisrICAgIH0KKysjZW5k aWYKKyAgICAgcmV0dXJuIChyc2EtPm1ldGgtPnJzYV9wdWJfZGVjKGZsZW4sIGZyb20sIHRvLCBy c2EsIHBhZGRpbmcpKTsKKyB9CisgCitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9yc2Ev cnNhX2Vyci5jLmZpcHMgb3BlbnNzbC0xLjEuMC9jcnlwdG8vcnNhL3JzYV9lcnIuYworLS0tIG9w ZW5zc2wtMS4xLjAvY3J5cHRvL3JzYS9yc2FfZXJyLmMuZmlwcwkyMDE2LTA4LTI1IDE3OjI5OjIx LjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAvY3J5cHRvL3JzYS9yc2FfZXJyLmMJ MjAxNi0wOS0wOCAxMTozNzozOC43NDQ0NjAxNDEgKzAyMDAKK0BAIC0yMCw2ICsyMCw3IEBACisg Cisgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBSU0Ffc3RyX2Z1bmN0c1tdID0geworICAgICB7RVJS X0ZVTkMoUlNBX0ZfQ0hFQ0tfUEFERElOR19NRCksICJjaGVja19wYWRkaW5nX21kIn0sCisrICAg IHtFUlJfRlVOQyhSU0FfRl9GSVBTX1JTQV9CVUlMVElOX0tFWUdFTiksICJmaXBzX3JzYV9idWls dGluX2tleWdlbiJ9LAorICAgICB7RVJSX0ZVTkMoUlNBX0ZfSU5UX1JTQV9WRVJJRlkpLCAiaW50 X3JzYV92ZXJpZnkifSwKKyAgICAge0VSUl9GVU5DKFJTQV9GX09MRF9SU0FfUFJJVl9ERUNPREUp LCAib2xkX3JzYV9wcml2X2RlY29kZSJ9LAorICAgICB7RVJSX0ZVTkMoUlNBX0ZfUEtFWV9SU0Ff Q1RSTCksICJwa2V5X3JzYV9jdHJsIn0sCitAQCAtMzEsNiArMzIsNyBAQCBzdGF0aWMgRVJSX1NU UklOR19EQVRBIFJTQV9zdHJfZnVuY3RzW10KKyAgICAge0VSUl9GVU5DKFJTQV9GX1JTQV9DSEVD S19LRVkpLCAiUlNBX2NoZWNrX2tleSJ9LAorICAgICB7RVJSX0ZVTkMoUlNBX0ZfUlNBX0NIRUNL X0tFWV9FWCksICJSU0FfY2hlY2tfa2V5X2V4In0sCisgICAgIHtFUlJfRlVOQyhSU0FfRl9SU0Ff Q01TX0RFQ1JZUFQpLCAicnNhX2Ntc19kZWNyeXB0In0sCisrICAgIHtFUlJfRlVOQyhSU0FfRl9S U0FfR0VORVJBVEVfS0VZX0VYKSwgIlJTQV9nZW5lcmF0ZV9rZXlfZXgifSwKKyAgICAge0VSUl9G VU5DKFJTQV9GX1JTQV9JVEVNX1ZFUklGWSksICJyc2FfaXRlbV92ZXJpZnkifSwKKyAgICAge0VS Ul9GVU5DKFJTQV9GX1JTQV9NRVRIX0RVUCksICJSU0FfbWV0aF9kdXAifSwKKyAgICAge0VSUl9G VU5DKFJTQV9GX1JTQV9NRVRIX05FVyksICJSU0FfbWV0aF9uZXcifSwKK0BAIC03NCw4ICs3Niwx NCBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIFJTQV9zdHJfZnVuY3RzW10KKyAgICAge0VSUl9G VU5DKFJTQV9GX1JTQV9QUklOVCksICJSU0FfcHJpbnQifSwKKyAgICAge0VSUl9GVU5DKFJTQV9G X1JTQV9QUklOVF9GUCksICJSU0FfcHJpbnRfZnAifSwKKyAgICAge0VSUl9GVU5DKFJTQV9GX1JT QV9QUklWX0VOQ09ERSksICJyc2FfcHJpdl9lbmNvZGUifSwKKysgICAge0VSUl9GVU5DKFJTQV9G X1JTQV9QUklWQVRFX0RFQ1JZUFQpLCAiUlNBX3ByaXZhdGVfZGVjcnlwdCJ9LAorKyAgICB7RVJS X0ZVTkMoUlNBX0ZfUlNBX1BSSVZBVEVfRU5DUllQVCksICJSU0FfcHJpdmF0ZV9lbmNyeXB0In0s CisgICAgIHtFUlJfRlVOQyhSU0FfRl9SU0FfUFNTX1RPX0NUWCksICJyc2FfcHNzX3RvX2N0eCJ9 LAorICAgICB7RVJSX0ZVTkMoUlNBX0ZfUlNBX1BVQl9ERUNPREUpLCAicnNhX3B1Yl9kZWNvZGUi fSwKKysgICAge0VSUl9GVU5DKFJTQV9GX1JTQV9QVUJMSUNfREVDUllQVCksICJSU0FfcHVibGlj X2RlY3J5cHQifSwKKysgICAge0VSUl9GVU5DKFJTQV9GX1JTQV9QVUJMSUNfRU5DUllQVCksICJS U0FfcHVibGljX2VuY3J5cHQifSwKKysgICAge0VSUl9GVU5DKFJTQV9GX1JTQV9TRVRfTUVUSE9E KSwgIlJTQV9zZXRfbWV0aG9kIn0sCisrICAgIHtFUlJfRlVOQyhSU0FfRl9SU0FfU0VUX0RFRkFV TFRfTUVUSE9EKSwgIlJTQV9zZXRfZGVmYXVsdF9tZXRob2QifSwKKyAgICAge0VSUl9GVU5DKFJT QV9GX1JTQV9TRVRVUF9CTElORElORyksICJSU0Ffc2V0dXBfYmxpbmRpbmcifSwKKyAgICAge0VS Ul9GVU5DKFJTQV9GX1JTQV9TSUdOKSwgIlJTQV9zaWduIn0sCisgICAgIHtFUlJfRlVOQyhSU0Ff Rl9SU0FfU0lHTl9BU04xX09DVEVUX1NUUklORyksCitAQCAtMTMzLDEwICsxNDEsMTMgQEAgc3Rh dGljIEVSUl9TVFJJTkdfREFUQSBSU0Ffc3RyX3JlYXNvbnNbXQorICAgICB7RVJSX1JFQVNPTihS U0FfUl9MQVNUX09DVEVUX0lOVkFMSUQpLCAibGFzdCBvY3RldCBpbnZhbGlkIn0sCisgICAgIHtF UlJfUkVBU09OKFJTQV9SX01PRFVMVVNfVE9PX0xBUkdFKSwgIm1vZHVsdXMgdG9vIGxhcmdlIn0s CisgICAgIHtFUlJfUkVBU09OKFJTQV9SX05PX1BVQkxJQ19FWFBPTkVOVCksICJubyBwdWJsaWMg ZXhwb25lbnQifSwKKysgICAge0VSUl9SRUFTT04oUlNBX1JfTk9OX0ZJUFNfUlNBX01FVEhPRCks ICJub24gRklQUyByc2EgbWV0aG9kIn0sCisgICAgIHtFUlJfUkVBU09OKFJTQV9SX05VTExfQkVG T1JFX0JMT0NLX01JU1NJTkcpLAorICAgICAgIm51bGwgYmVmb3JlIGJsb2NrIG1pc3NpbmcifSwK KyAgICAge0VSUl9SRUFTT04oUlNBX1JfTl9ET0VTX05PVF9FUVVBTF9QX1EpLCAibiBkb2VzIG5v dCBlcXVhbCBwIHEifSwKKyAgICAge0VSUl9SRUFTT04oUlNBX1JfT0FFUF9ERUNPRElOR19FUlJP UiksICJvYWVwIGRlY29kaW5nIGVycm9yIn0sCisrICAgIHtFUlJfUkVBU09OKFJTQV9SX09QRVJB VElPTl9OT1RfQUxMT1dFRF9JTl9GSVBTX01PREUpLAorKyAgICAgIm9wZXJhdGlvbiBub3QgYWxs b3dlZCBpbiBGSVBTIG1vZGUifSwKKyAgICAge0VSUl9SRUFTT04oUlNBX1JfT1BFUkFUSU9OX05P VF9TVVBQT1JURURfRk9SX1RISVNfS0VZVFlQRSksCisgICAgICAib3BlcmF0aW9uIG5vdCBzdXBw b3J0ZWQgZm9yIHRoaXMga2V5dHlwZSJ9LAorICAgICB7RVJSX1JFQVNPTihSU0FfUl9QQURESU5H X0NIRUNLX0ZBSUxFRCksICJwYWRkaW5nIGNoZWNrIGZhaWxlZCJ9LAorZGlmZiAtdXAgb3BlbnNz bC0xLjEuMC9jcnlwdG8vcnNhL3JzYV9nZW4uYy5maXBzIG9wZW5zc2wtMS4xLjAvY3J5cHRvL3Jz YS9yc2FfZ2VuLmMKKy0tLSBvcGVuc3NsLTEuMS4wL2NyeXB0by9yc2EvcnNhX2dlbi5jLmZpcHMJ MjAxNi0wOS0wOCAxMTozNzozOC43MzA0NTk4MjggKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wL2Ny eXB0by9yc2EvcnNhX2dlbi5jCTIwMTYtMDktMDggMTE6Mzc6MzguNzQ1NDYwMTY0ICswMjAwCitA QCAtMTgsNiArMTgsNzUgQEAKKyAjaW5jbHVkZSAiaW50ZXJuYWwvY3J5cHRsaWIuaCIKKyAjaW5j bHVkZSA8b3BlbnNzbC9ibi5oPgorICNpbmNsdWRlICJyc2FfbG9jbC5oIgorKyNpZmRlZiBPUEVO U1NMX0ZJUFMKKysjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorKyMgaW5jbHVkZSAiaW50ZXJu YWwvZmlwc19pbnQuaCIKKysKKytpbnQgZmlwc19jaGVja19yc2EoUlNBICpyc2EpCisreworKyAg ICBjb25zdCB1bnNpZ25lZCBjaGFyIHRic1tdID0gIlJTQSBQYWlyd2lzZSBDaGVjayBEYXRhIjsK KysgICAgdW5zaWduZWQgY2hhciAqY3RidWYgPSBOVUxMLCAqcHRidWYgPSBOVUxMOworKyAgICBp bnQgbGVuLCByZXQgPSAwOworKyAgICBFVlBfUEtFWSAqcGs7CisrCisrICAgIGlmICgocGsgPSBF VlBfUEtFWV9uZXcoKSkgPT0gTlVMTCkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBFVlBf UEtFWV9zZXQxX1JTQShwaywgcnNhKTsKKysKKysgICAgLyogUGVyZm9ybSBwYWlyd2lzZSBjb25z aXN0ZW5jeSBzaWduYXR1cmUgdGVzdCAqLworKyAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVf dGVzdChwaywgdGJzLCAtMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM TCwgMCwgRVZQX3NoYTEoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQ X01EX0NUWF9GTEFHX1BBRF9QS0NTMSwgTlVMTCkKKysgICAgICAgIHx8ICFmaXBzX3BrZXlfc2ln bmF0dXJlX3Rlc3QocGssIHRicywgLTEsIE5VTEwsIDAsIEVWUF9zaGExKCksCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9NRF9DVFhfRkxBR19QQURfWDkzMSwgTlVM TCkKKysgICAgICAgIHx8ICFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIHRicywgLTEsIE5V TEwsIDAsIEVWUF9zaGExKCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEVWUF9NRF9DVFhfRkxBR19QQURfUFNTLCBOVUxMKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAg ICAvKiBOb3cgcGVyZm9ybSBwYWlyd2lzZSBjb25zaXN0ZW5jeSBlbmNyeXB0L2RlY3J5cHQgdGVz dCAqLworKyAgICBjdGJ1ZiA9IE9QRU5TU0xfbWFsbG9jKFJTQV9zaXplKHJzYSkpOworKyAgICBp ZiAoIWN0YnVmKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIGxlbiA9CisrICAgICAgICBS U0FfcHVibGljX2VuY3J5cHQoc2l6ZW9mKHRicykgLSAxLCB0YnMsIGN0YnVmLCByc2EsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgUlNBX1BLQ1MxX1BBRERJTkcpOworKyAgICBpZiAobGVu IDw9IDApCisrICAgICAgICBnb3RvIGVycjsKKysgICAgLyogQ2hlY2sgY2lwaGVydGV4dCBkb2Vz bid0IG1hdGNoIHBsYWludGV4dCAqLworKyAgICBpZiAoKGxlbiA9PSAoc2l6ZW9mKHRicykgLSAx KSkgJiYgIW1lbWNtcCh0YnMsIGN0YnVmLCBsZW4pKQorKyAgICAgICAgZ290byBlcnI7CisrICAg IHB0YnVmID0gT1BFTlNTTF9tYWxsb2MoUlNBX3NpemUocnNhKSk7CisrCisrICAgIGlmICghcHRi dWYpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgbGVuID0gUlNBX3ByaXZhdGVfZGVjcnlwdChs ZW4sIGN0YnVmLCBwdGJ1ZiwgcnNhLCBSU0FfUEtDUzFfUEFERElORyk7CisrICAgIGlmIChsZW4g IT0gKHNpemVvZih0YnMpIC0gMSkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKG1lbWNt cChwdGJ1ZiwgdGJzLCBsZW4pKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIHJldCA9IDE7 CisrCisrICAgIGlmICghcHRidWYpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgZXJyOgorKyAg ICBpZiAocmV0ID09IDApIHsKKysgICAgICAgIGZpcHNfc2V0X3NlbGZ0ZXN0X2ZhaWwoKTsKKysg ICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfQ0hFQ0tfUlNBLCBGSVBTX1JfUEFJUldJU0VfVEVT VF9GQUlMRUQpOworKyAgICB9CisrCisrICAgIGlmIChjdGJ1ZikKKysgICAgICAgIE9QRU5TU0xf ZnJlZShjdGJ1Zik7CisrICAgIGlmIChwdGJ1ZikKKysgICAgICAgIE9QRU5TU0xfZnJlZShwdGJ1 Zik7CisrICAgIGlmIChwaykKKysgICAgICAgIEVWUF9QS0VZX2ZyZWUocGspOworKworKyAgICBy ZXR1cm4gcmV0OworK30KKysjZW5kaWYKKyAKKyBzdGF0aWMgaW50IHJzYV9idWlsdGluX2tleWdl bihSU0EgKnJzYSwgaW50IGJpdHMsIEJJR05VTSAqZV92YWx1ZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBCTl9HRU5DQiAqY2IpOworQEAgLTMxLDExICsxMDAsMjg0IEBAIHN0YXRp YyBpbnQgcnNhX2J1aWx0aW5fa2V5Z2VuKFJTQSAqcnNhLAorICAqLworIGludCBSU0FfZ2VuZXJh dGVfa2V5X2V4KFJTQSAqcnNhLCBpbnQgYml0cywgQklHTlVNICplX3ZhbHVlLCBCTl9HRU5DQiAq Y2IpCisgeworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgaWYgKEZJUFNfbW9kZSgpICYmICEo cnNhLT5tZXRoLT5mbGFncyAmIFJTQV9GTEFHX0ZJUFNfTUVUSE9EKQorKyAgICAgICAgJiYgIShy c2EtPmZsYWdzICYgUlNBX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpKSB7CisrICAgICAgICBSU0FlcnIo UlNBX0ZfUlNBX0dFTkVSQVRFX0tFWV9FWCwgUlNBX1JfTk9OX0ZJUFNfUlNBX01FVEhPRCk7Cisr ICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyNlbmRpZgorICAgICBpZiAocnNhLT5tZXRoLT5y c2Ffa2V5Z2VuKQorICAgICAgICAgcmV0dXJuIHJzYS0+bWV0aC0+cnNhX2tleWdlbihyc2EsIGJp dHMsIGVfdmFsdWUsIGNiKTsKKyAgICAgcmV0dXJuIHJzYV9idWlsdGluX2tleWdlbihyc2EsIGJp dHMsIGVfdmFsdWUsIGNiKTsKKyB9CisgCisrI2lmZGVmIE9QRU5TU0xfRklQUworK3N0YXRpYyBp bnQgZmlwc19yc2FfYnVpbHRpbl9rZXlnZW4oUlNBICpyc2EsIGludCBiaXRzLCBCSUdOVU0gKmVf dmFsdWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCTl9HRU5DQiAqY2Ip CisreworKyAgICBCSUdOVU0gKnIwID0gTlVMTCwgKnIxID0gTlVMTCwgKnIyID0gTlVMTCwgKnIz ID0gTlVMTCwgKnRtcDsKKysgICAgQk5fQ1RYICpjdHggPSBOVUxMOworKyAgICBpbnQgb2sgPSAt MTsKKysgICAgaW50IGk7CisrICAgIGludCBuID0gMDsKKysgICAgaW50IHRlc3QgPSAwOworKyAg ICBpbnQgcGJpdHMgPSBiaXRzIC8gMjsKKysKKysgICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVk KCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfUlNBX0JVSUxUSU5fS0VZR0VOLCBG SVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0K KysKKysgICAgaWYgKChwYml0cyAmIDB4RkYpCisrICAgICAgICB8fCAoZ2V0ZW52KCJPUEVOU1NM X0VORk9SQ0VfTU9EVUxVU19CSVRTIikgJiYgYml0cyA8IDIwNDgpKSB7CisrICAgICAgICBGSVBT ZXJyKEZJUFNfRl9GSVBTX1JTQV9CVUlMVElOX0tFWUdFTiwgRklQU19SX0lOVkFMSURfS0VZX0xF TkdUSCk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAgICBjdHggPSBCTl9DVFhf bmV3KCk7CisrICAgIGlmIChjdHggPT0gTlVMTCkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBC Tl9DVFhfc3RhcnQoY3R4KTsKKysgICAgcjAgPSBCTl9DVFhfZ2V0KGN0eCk7CisrICAgIHIxID0g Qk5fQ1RYX2dldChjdHgpOworKyAgICByMiA9IEJOX0NUWF9nZXQoY3R4KTsKKysgICAgcjMgPSBC Tl9DVFhfZ2V0KGN0eCk7CisrCisrICAgIGlmIChyMyA9PSBOVUxMKQorKyAgICAgICAgZ290byBl cnI7CisrCisrICAgIC8qIFdlIG5lZWQgdGhlIFJTQSBjb21wb25lbnRzIG5vbi1OVUxMICovCisr ICAgIGlmICghcnNhLT5uICYmICgocnNhLT5uID0gQk5fbmV3KCkpID09IE5VTEwpKQorKyAgICAg ICAgZ290byBlcnI7CisrICAgIGlmICghcnNhLT5kICYmICgocnNhLT5kID0gQk5fc2VjdXJlX25l dygpKSA9PSBOVUxMKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoIXJzYS0+ZSAmJiAo KHJzYS0+ZSA9IEJOX25ldygpKSA9PSBOVUxMKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBp ZiAoIXJzYS0+cCAmJiAoKHJzYS0+cCA9IEJOX3NlY3VyZV9uZXcoKSkgPT0gTlVMTCkpCisrICAg ICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFyc2EtPnEgJiYgKChyc2EtPnEgPSBCTl9zZWN1cmVf bmV3KCkpID09IE5VTEwpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICghcnNhLT5kbXAx ICYmICgocnNhLT5kbXAxID0gQk5fc2VjdXJlX25ldygpKSA9PSBOVUxMKSkKKysgICAgICAgIGdv dG8gZXJyOworKyAgICBpZiAoIXJzYS0+ZG1xMSAmJiAoKHJzYS0+ZG1xMSA9IEJOX3NlY3VyZV9u ZXcoKSkgPT0gTlVMTCkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFyc2EtPmlxbXAg JiYgKChyc2EtPmlxbXAgPSBCTl9zZWN1cmVfbmV3KCkpID09IE5VTEwpKQorKyAgICAgICAgZ290 byBlcnI7CisrCisrICAgIGlmICghQk5fc2V0X3dvcmQocjAsIFJTQV9GNCkpCisrICAgICAgICBn b3RvIGVycjsKKysgICAgaWYgKEJOX2NtcChlX3ZhbHVlLCByMCkgPCAwIHx8IEJOX251bV9iaXRz KGVfdmFsdWUpID4gMjU2KSB7CisrICAgICAgICBvayA9IDA7ICAgICAgICAgICAgICAgICAvKiB3 ZSBzZXQgb3VyIG93biBlcnIgKi8KKysgICAgICAgIFJTQWVycihSU0FfRl9GSVBTX1JTQV9CVUlM VElOX0tFWUdFTiwgUlNBX1JfQkFEX0VfVkFMVUUpOworKyAgICAgICAgZ290byBlcnI7CisrICAg IH0KKysKKysgICAgLyogcHJlcGFyZSBhcHByb3hpbWF0ZSBtaW5pbXVtIHAgYW5kIHEgKi8KKysg ICAgaWYgKCFCTl9zZXRfd29yZChyMCwgMHhCNTA0RjMzNCkpCisrICAgICAgICBnb3RvIGVycjsK KysgICAgaWYgKCFCTl9sc2hpZnQocjAsIHIwLCBwYml0cyAtIDMyKSkKKysgICAgICAgIGdvdG8g ZXJyOworKworKyAgICAvKiBwcmVwYXJlIG1pbmltdW0gcCBhbmQgcSBkaWZmZXJlbmNlICovCisr ICAgIGlmICghQk5fb25lKHIzKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoIUJOX2xz aGlmdChyMywgcjMsIHBiaXRzIC0gMTAwKSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBC Tl9jb3B5KHJzYS0+ZSwgZV92YWx1ZSk7CisrCisrICAgIGlmICghQk5faXNfemVybyhyc2EtPnAp ICYmICFCTl9pc196ZXJvKHJzYS0+cSkpCisrICAgICAgICB0ZXN0ID0gMTsKKysKKysgcmV0cnk6 CisrICAgIC8qIGdlbmVyYXRlIHAgYW5kIHEgKi8KKysgICAgZm9yIChpID0gMDsgaSA8IDUgKiBw Yml0czsgaSsrKSB7CisrIHBsb29wOgorKyAgICAgICAgaWYgKCF0ZXN0KQorKyAgICAgICAgICAg IGlmICghQk5fcmFuZChyc2EtPnAsIHBiaXRzLCAwLCAxKSkKKysgICAgICAgICAgICAgICAgZ290 byBlcnI7CisrICAgICAgICBpZiAoQk5fY21wKHJzYS0+cCwgcjApIDwgMCkgeworKyAgICAgICAg ICAgIGlmICh0ZXN0KQorKyAgICAgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgICAgICBn b3RvIHBsb29wOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKCFCTl9zdWIocjIsIHJzYS0+ cCwgQk5fdmFsdWVfb25lKCkpKQorKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgaWYg KCFCTl9nY2QocjEsIHIyLCByc2EtPmUsIGN0eCkpCisrICAgICAgICAgICAgZ290byBlcnI7Cisr ICAgICAgICBpZiAoQk5faXNfb25lKHIxKSkgeworKyAgICAgICAgICAgIGludCByOworKyAgICAg ICAgICAgIHIgPSBCTl9pc19wcmltZV9mYXN0dGVzdF9leChyc2EtPnAsIHBiaXRzID4gMTAyNCA/ IDQgOiA1LCBjdHgsIDAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNiKTsKKysgICAgICAgICAgICBpZiAociA9PSAtMSB8fCAodGVzdCAmJiByIDw9IDApKQorKyAg ICAgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgICAgICBpZiAociA+IDApCisrICAgICAg ICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKCFCTl9HRU5DQl9j YWxsKGNiLCAyLCBuKyspKQorKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAg IGlmICghQk5fR0VOQ0JfY2FsbChjYiwgMywgMCkpCisrICAgICAgICBnb3RvIGVycjsKKysKKysg ICAgaWYgKGkgPj0gNSAqIHBiaXRzKQorKyAgICAgICAgLyogcHJpbWUgbm90IGZvdW5kICovCisr ICAgICAgICBnb3RvIGVycjsKKysKKysgICAgZm9yIChpID0gMDsgaSA8IDUgKiBwYml0czsgaSsr KSB7CisrIHFsb29wOgorKyAgICAgICAgaWYgKCF0ZXN0KQorKyAgICAgICAgICAgIGlmICghQk5f cmFuZChyc2EtPnEsIHBiaXRzLCAwLCAxKSkKKysgICAgICAgICAgICAgICAgZ290byBlcnI7Cisr ICAgICAgICBpZiAoQk5fY21wKHJzYS0+cSwgcjApIDwgMCkgeworKyAgICAgICAgICAgIGlmICh0 ZXN0KQorKyAgICAgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgICAgICBnb3RvIHFsb29w OworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFCTl9zdWIocjIsIHJzYS0+cSwgcnNhLT5wKSkK KysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIGlmIChCTl91Y21wKHIyLCByMykgPD0g MCkgeworKyAgICAgICAgICAgIGlmICh0ZXN0KQorKyAgICAgICAgICAgICAgICBnb3RvIGVycjsK KysgICAgICAgICAgICBnb3RvIHFsb29wOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKCFC Tl9zdWIocjIsIHJzYS0+cSwgQk5fdmFsdWVfb25lKCkpKQorKyAgICAgICAgICAgIGdvdG8gZXJy OworKyAgICAgICAgaWYgKCFCTl9nY2QocjEsIHIyLCByc2EtPmUsIGN0eCkpCisrICAgICAgICAg ICAgZ290byBlcnI7CisrICAgICAgICBpZiAoQk5faXNfb25lKHIxKSkgeworKyAgICAgICAgICAg IGludCByOworKyAgICAgICAgICAgIHIgPSBCTl9pc19wcmltZV9mYXN0dGVzdF9leChyc2EtPnEs IHBiaXRzID4gMTAyNCA/IDQgOiA1LCBjdHgsIDAsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNiKTsKKysgICAgICAgICAgICBpZiAociA9PSAtMSB8fCAodGVzdCAm JiByIDw9IDApKQorKyAgICAgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgICAgICBpZiAo ciA+IDApCisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKworKyAgICAgICAg aWYgKCFCTl9HRU5DQl9jYWxsKGNiLCAyLCBuKyspKQorKyAgICAgICAgICAgIGdvdG8gZXJyOwor KyAgICB9CisrCisrICAgIGlmICghQk5fR0VOQ0JfY2FsbChjYiwgMywgMSkpCisrICAgICAgICBn b3RvIGVycjsKKysKKysgICAgaWYgKGkgPj0gNSAqIHBiaXRzKQorKyAgICAgICAgLyogcHJpbWUg bm90IGZvdW5kICovCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgaWYgKHRlc3QpIHsKKysg ICAgICAgIC8qIGRvIG5vdCB0cnkgdG8gY2FsY3VsYXRlIHRoZSByZW1haW5pbmcga2V5IHZhbHVl cyAqLworKyAgICAgICAgQk5fY2xlYXIocnNhLT5uKTsKKysgICAgICAgIG9rID0gMTsKKysgICAg ICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIGlmIChCTl9jbXAocnNhLT5wLCByc2EtPnEp IDwgMCkgeworKyAgICAgICAgdG1wID0gcnNhLT5wOworKyAgICAgICAgcnNhLT5wID0gcnNhLT5x OworKyAgICAgICAgcnNhLT5xID0gdG1wOworKyAgICB9CisrCisrICAgIC8qIGNhbGN1bGF0ZSBu ICovCisrICAgIGlmICghQk5fbXVsKHJzYS0+biwgcnNhLT5wLCByc2EtPnEsIGN0eCkpCisrICAg ICAgICBnb3RvIGVycjsKKysKKysgICAgLyogY2FsY3VsYXRlIGQgKi8KKysgICAgaWYgKCFCTl9z dWIocjEsIHJzYS0+cCwgQk5fdmFsdWVfb25lKCkpKQorKyAgICAgICAgZ290byBlcnI7ICAgICAg ICAgICAgICAgLyogcC0xICovCisrICAgIGlmICghQk5fc3ViKHIyLCByc2EtPnEsIEJOX3ZhbHVl X29uZSgpKSkKKysgICAgICAgIGdvdG8gZXJyOyAgICAgICAgICAgICAgIC8qIHEtMSAqLworKwor KyAgICBpZiAoIUJOX2djZChyMCwgcjEsIHIyLCBjdHgpKQorKyAgICAgICAgZ290byBlcnI7Cisr CisrICAgIHsKKysgICAgICAgIEJJR05VTSAqcHIwID0gQk5fbmV3KCk7CisrCisrICAgICAgICBp ZiAocHIwID09IE5VTEwpCisrICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICBCTl93aXRo X2ZsYWdzKHByMCwgcjAsIEJOX0ZMR19DT05TVFRJTUUpOworKworKyAgICAgICAgaWYgKCFCTl9k aXYocHIwLCBOVUxMLCByMSwgcHIwLCBjdHgpKSB7CisrICAgICAgICAgICAgQk5fZnJlZShwcjAp OworKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKCFC Tl9tdWwocHIwLCBwcjAsIHIyLCBjdHgpKSB7IC8qIGxjbShwLTEsIHEtMSkgKi8KKysgICAgICAg ICAgICBCTl9mcmVlKHByMCk7CisrICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICB9Cisr CisrICAgICAgICBpZiAoIUJOX21vZF9pbnZlcnNlKHJzYS0+ZCwgcnNhLT5lLCBwcjAsIGN0eCkp IHsgLyogZCAqLworKyAgICAgICAgICAgIEJOX2ZyZWUocHIwKTsKKysgICAgICAgICAgICBnb3Rv IGVycjsKKysgICAgICAgIH0KKysKKysgICAgICAgIC8qIFdlIE1VU1QgZnJlZSBwcjAgYmVmb3Jl IGFueSBmdXJ0aGVyIHVzZSBvZiByMCAqLworKyAgICAgICAgQk5fZnJlZShwcjApOworKyAgICB9 CisrCisrICAgIGlmIChCTl9udW1fYml0cyhyc2EtPmQpIDwgcGJpdHMpCisrICAgICAgICBnb3Rv IHJldHJ5OyAgICAgICAgICAgICAvKiBkIGlzIHRvbyBzbWFsbCAqLworKworKyAgICB7CisrICAg ICAgICBCSUdOVU0gKmQgPSBCTl9uZXcoKTsKKysKKysgICAgICAgIGlmIChkID09IE5VTEwpCisr ICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICBCTl93aXRoX2ZsYWdzKGQsIHJzYS0+ZCwg Qk5fRkxHX0NPTlNUVElNRSk7CisrCisrICAgICAgICBpZiAoLyogY2FsY3VsYXRlIGQgbW9kIChw LTEpICovCisrICAgICAgICAgICAgIUJOX21vZChyc2EtPmRtcDEsIGQsIHIxLCBjdHgpCisrICAg ICAgICAgICAgLyogY2FsY3VsYXRlIGQgbW9kIChxLTEpICovCisrICAgICAgICAgICAgfHwgIUJO X21vZChyc2EtPmRtcTEsIGQsIHIyLCBjdHgpKSB7CisrICAgICAgICAgICAgQk5fZnJlZShkKTsK KysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIH0KKysgICAgICAgIC8qIFdlIE1VU1Qg ZnJlZSBkIGJlZm9yZSBhbnkgZnVydGhlciB1c2Ugb2YgcnNhLT5kICovCisrICAgICAgICBCTl9m cmVlKGQpOworKyAgICB9CisrCisrICAgIHsKKysgICAgICAgIEJJR05VTSAqcCA9IEJOX25ldygp OworKworKyAgICAgICAgaWYgKHAgPT0gTlVMTCkKKysgICAgICAgICAgICBnb3RvIGVycjsKKysg ICAgICAgIEJOX3dpdGhfZmxhZ3MocCwgcnNhLT5wLCBCTl9GTEdfQ09OU1RUSU1FKTsKKysKKysg ICAgICAgIC8qIGNhbGN1bGF0ZSBpbnZlcnNlIG9mIHEgbW9kIHAgKi8KKysgICAgICAgIGlmICgh Qk5fbW9kX2ludmVyc2UocnNhLT5pcW1wLCByc2EtPnEsIHAsIGN0eCkpIHsKKysgICAgICAgICAg ICBCTl9mcmVlKHApOworKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKyAgICAg ICAgLyogV2UgTVVTVCBmcmVlIHAgYmVmb3JlIGFueSBmdXJ0aGVyIHVzZSBvZiByc2EtPnAgKi8K KysgICAgICAgIEJOX2ZyZWUocCk7CisrICAgIH0KKysKKysgICAgaWYgKCFmaXBzX2NoZWNrX3Jz YShyc2EpKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIG9rID0gMTsKKysgZXJyOgorKyAg ICBpZiAob2sgPT0gLTEpIHsKKysgICAgICAgIFJTQWVycihSU0FfRl9GSVBTX1JTQV9CVUlMVElO X0tFWUdFTiwgRVJSX0xJQl9CTik7CisrICAgICAgICBvayA9IDA7CisrICAgIH0KKysgICAgaWYg KGN0eCAhPSBOVUxMKSB7CisrICAgICAgICBCTl9DVFhfZW5kKGN0eCk7CisrICAgICAgICBCTl9D VFhfZnJlZShjdHgpOworKyAgICB9CisrCisrICAgIHJldHVybiBvazsKKyt9CisrI2VuZGlmCisr Cisgc3RhdGljIGludCByc2FfYnVpbHRpbl9rZXlnZW4oUlNBICpyc2EsIGludCBiaXRzLCBCSUdO VU0gKmVfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQk5fR0VOQ0IgKmNi KQorIHsKK0BAIC00Myw2ICszODUsMTYgQEAgc3RhdGljIGludCByc2FfYnVpbHRpbl9rZXlnZW4o UlNBICpyc2EsCisgICAgIGludCBiaXRzcCwgYml0c3EsIG9rID0gLTEsIG4gPSAwOworICAgICBC Tl9DVFggKmN0eCA9IE5VTEw7CisgCisrI2lmZGVmIE9QRU5TU0xfRklQUworKyAgICBpZiAoRklQ U19tb2RlKCkpIHsKKysgICAgICAgIGlmIChiaXRzIDwgT1BFTlNTTF9SU0FfRklQU19NSU5fTU9E VUxVU19CSVRTKSB7CisrICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX0JVSUxUSU5fS0VZ R0VOLCBGSVBTX1JfS0VZX1RPT19TSE9SVCk7CisrICAgICAgICAgICAgcmV0dXJuIDA7CisrICAg ICAgICB9CisrICAgICAgICByZXR1cm4gZmlwc19yc2FfYnVpbHRpbl9rZXlnZW4ocnNhLCBiaXRz LCBlX3ZhbHVlLCBjYik7CisrICAgIH0KKysjZW5kaWYKKysKKyAgICAgY3R4ID0gQk5fQ1RYX25l dygpOworICAgICBpZiAoY3R4ID09IE5VTEwpCisgICAgICAgICBnb3RvIGVycjsKK2RpZmYgLXVw IG9wZW5zc2wtMS4xLjAvY3J5cHRvL3JzYS9yc2FfbGliLmMuZmlwcyBvcGVuc3NsLTEuMS4wL2Ny eXB0by9yc2EvcnNhX2xpYi5jCistLS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vcnNhL3JzYV9saWIu Yy5maXBzCTIwMTYtMDgtMjUgMTc6Mjk6MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0x LjEuMC9jcnlwdG8vcnNhL3JzYV9saWIuYwkyMDE2LTA5LTA4IDExOjM3OjM4Ljc0NTQ2MDE2NCAr MDIwMAorQEAgLTI2LDYgKzI2LDEyIEBAIFJTQSAqUlNBX25ldyh2b2lkKQorIAorIHZvaWQgUlNB X3NldF9kZWZhdWx0X21ldGhvZChjb25zdCBSU0FfTUVUSE9EICptZXRoKQorIHsKKysjaWZkZWYg T1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKG1ldGgtPmZsYWdzICYgUlNB X0ZMQUdfRklQU19NRVRIT0QpKSB7CisrICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX1NFVF9ERUZB VUxUX01FVEhPRCwgUlNBX1JfTk9OX0ZJUFNfUlNBX01FVEhPRCk7CisrICAgICAgICByZXR1cm47 CisrICAgIH0KKysjZW5kaWYKKyAgICAgZGVmYXVsdF9SU0FfbWV0aCA9IG1ldGg7CisgfQorIAor QEAgLTU0LDYgKzYwLDEyIEBAIGludCBSU0Ffc2V0X21ldGhvZChSU0EgKnJzYSwgY29uc3QgUlNB X00KKyAgICAgICogdG8gZGVhbCB3aXRoIHdoaWNoIEVOR0lORSBpdCBjb21lcyBmcm9tLgorICAg ICAgKi8KKyAgICAgY29uc3QgUlNBX01FVEhPRCAqbXRtcDsKKysjaWZkZWYgT1BFTlNTTF9GSVBT CisrICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKG1ldGgtPmZsYWdzICYgUlNBX0ZMQUdfRklQU19N RVRIT0QpKSB7CisrICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX1NFVF9NRVRIT0QsIFJTQV9SX05P Tl9GSVBTX1JTQV9NRVRIT0QpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysjZW5kaWYK KyAgICAgbXRtcCA9IHJzYS0+bWV0aDsKKyAgICAgaWYgKG10bXAtPmZpbmlzaCkKKyAgICAgICAg IG10bXAtPmZpbmlzaChyc2EpOworQEAgLTg2LDcgKzk4LDYgQEAgUlNBICpSU0FfbmV3X21ldGhv ZChFTkdJTkUgKmVuZ2luZSkKKyAKKyAgICAgcmV0LT5tZXRoID0gUlNBX2dldF9kZWZhdWx0X21l dGhvZCgpOworICNpZm5kZWYgT1BFTlNTTF9OT19FTkdJTkUKKy0gICAgcmV0LT5mbGFncyA9IHJl dC0+bWV0aC0+ZmxhZ3MgJiB+UlNBX0ZMQUdfTk9OX0ZJUFNfQUxMT1c7CisgICAgIGlmIChlbmdp bmUpIHsKKyAgICAgICAgIGlmICghRU5HSU5FX2luaXQoZW5naW5lKSkgeworICAgICAgICAgICAg IFJTQWVycihSU0FfRl9SU0FfTkVXX01FVEhPRCwgRVJSX1JfRU5HSU5FX0xJQik7CitAQCAtMTAz LDggKzExNCwxOSBAQCBSU0EgKlJTQV9uZXdfbWV0aG9kKEVOR0lORSAqZW5naW5lKQorICAgICAg ICAgfQorICAgICB9CisgI2VuZGlmCisrI2lmZGVmIE9QRU5TU0xfRklQUworKyAgICBpZiAoRklQ U19tb2RlKCkgJiYgIShyZXQtPm1ldGgtPmZsYWdzICYgUlNBX0ZMQUdfRklQU19NRVRIT0QpKSB7 CisrICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX05FV19NRVRIT0QsIFJTQV9SX05PTl9GSVBTX1JT QV9NRVRIT0QpOworKyMgaWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5FCisrICAgICAgICBpZiAocmV0 LT5lbmdpbmUpCisrICAgICAgICAgICAgRU5HSU5FX2ZpbmlzaChyZXQtPmVuZ2luZSk7CisrIyBl bmRpZgorKyAgICAgICAgT1BFTlNTTF9mcmVlKHJldCk7CisrICAgICAgICByZXR1cm4gTlVMTDsK KysgICAgfQorKyNlbmRpZgorIAorLSAgICByZXQtPmZsYWdzID0gcmV0LT5tZXRoLT5mbGFncyAm IH5SU0FfRkxBR19OT05fRklQU19BTExPVzsKKysgICAgcmV0LT5mbGFncyA9IHJldC0+bWV0aC0+ ZmxhZ3M7CisgICAgIGlmICghQ1JZUFRPX25ld19leF9kYXRhKENSWVBUT19FWF9JTkRFWF9SU0Es IHJldCwgJnJldC0+ZXhfZGF0YSkpIHsKKyAgICAgICAgIGdvdG8gZXJyOworICAgICB9CitkaWZm IC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9yc2EvcnNhX29zc2wuYy5maXBzIG9wZW5zc2wtMS4x LjAvY3J5cHRvL3JzYS9yc2Ffb3NzbC5jCistLS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vcnNhL3Jz YV9vc3NsLmMuZmlwcwkyMDE2LTA4LTI1IDE3OjI5OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIG9w ZW5zc2wtMS4xLjAvY3J5cHRvL3JzYS9yc2Ffb3NzbC5jCTIwMTYtMDktMDggMTE6Mzc6MzguNzQ1 NDYwMTY0ICswMjAwCitAQCAtMTEsNiArMTEsMTAgQEAKKyAjaW5jbHVkZSAiaW50ZXJuYWwvYm5f aW50LmgiCisgI2luY2x1ZGUgInJzYV9sb2NsLmgiCisgCisrI2lmZGVmIE9QRU5TU0xfRklQUwor KyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2VuZGlmCisrCisgI2lmbmRlZiBSU0FfTlVM TAorIAorIHN0YXRpYyBpbnQgcnNhX29zc2xfcHVibGljX2VuY3J5cHQoaW50IGZsZW4sIGNvbnN0 IHVuc2lnbmVkIGNoYXIgKmZyb20sCitAQCAtNTYsNiArNjAsMjIgQEAgc3RhdGljIGludCByc2Ff b3NzbF9wdWJsaWNfZW5jcnlwdChpbnQgZgorICAgICB1bnNpZ25lZCBjaGFyICpidWYgPSBOVUxM OworICAgICBCTl9DVFggKmN0eCA9IE5VTEw7CisgCisrIyBpZmRlZiBPUEVOU1NMX0ZJUFMKKysg ICAgaWYgKEZJUFNfbW9kZSgpKSB7CisrICAgICAgICBpZiAoRklQU19zZWxmdGVzdF9mYWlsZWQo KSkgeworKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX1JTQV9PU1NMX1BVQkxJQ19FTkNSWVBU LAorKyAgICAgICAgICAgICAgICAgICAgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEKTsKKysg ICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmICghKHJzYS0+ ZmxhZ3MgJiBSU0FfRkxBR19OT05fRklQU19BTExPVykKKysgICAgICAgICAgICAmJiAoQk5fbnVt X2JpdHMocnNhLT5uKSA8IE9QRU5TU0xfUlNBX0ZJUFNfTUlOX01PRFVMVVNfQklUUykpIHsKKysg ICAgICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX09TU0xfUFVCTElDX0VOQ1JZUFQsIFJTQV9SX0tF WV9TSVpFX1RPT19TTUFMTCk7CisrICAgICAgICAgICAgcmV0dXJuIC0xOworKyAgICAgICAgfQor KyAgICB9CisrIyBlbmRpZgorKworICAgICBpZiAoQk5fbnVtX2JpdHMocnNhLT5uKSA+IE9QRU5T U0xfUlNBX01BWF9NT0RVTFVTX0JJVFMpIHsKKyAgICAgICAgIFJTQWVycihSU0FfRl9SU0FfT1NT TF9QVUJMSUNfRU5DUllQVCwgUlNBX1JfTU9EVUxVU19UT09fTEFSR0UpOworICAgICAgICAgcmV0 dXJuIC0xOworQEAgLTIzNSw2ICsyNTUsMjIgQEAgc3RhdGljIGludCByc2Ffb3NzbF9wcml2YXRl X2VuY3J5cHQoaW50CisgICAgIEJJR05VTSAqdW5ibGluZCA9IE5VTEw7CisgICAgIEJOX0JMSU5E SU5HICpibGluZGluZyA9IE5VTEw7CisgCisrIyBpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgaWYg KEZJUFNfbW9kZSgpKSB7CisrICAgICAgICBpZiAoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkgewor KyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX1JTQV9PU1NMX1BSSVZBVEVfRU5DUllQVCwKKysg ICAgICAgICAgICAgICAgICAgIEZJUFNfUl9GSVBTX1NFTEZURVNUX0ZBSUxFRCk7CisrICAgICAg ICAgICAgcmV0dXJuIC0xOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKCEocnNhLT5mbGFn cyAmIFJTQV9GTEFHX05PTl9GSVBTX0FMTE9XKQorKyAgICAgICAgICAgICYmIChCTl9udW1fYml0 cyhyc2EtPm4pIDwgT1BFTlNTTF9SU0FfRklQU19NSU5fTU9EVUxVU19CSVRTKSkgeworKyAgICAg ICAgICAgIFJTQWVycihSU0FfRl9SU0FfT1NTTF9QUklWQVRFX0VOQ1JZUFQsIFJTQV9SX0tFWV9T SVpFX1RPT19TTUFMTCk7CisrICAgICAgICAgICAgcmV0dXJuIC0xOworKyAgICAgICAgfQorKyAg ICB9CisrIyBlbmRpZgorKworICAgICBpZiAoKGN0eCA9IEJOX0NUWF9uZXcoKSkgPT0gTlVMTCkK KyAgICAgICAgIGdvdG8gZXJyOworICAgICBCTl9DVFhfc3RhcnQoY3R4KTsKK0BAIC0zNzAsNiAr NDA2LDIyIEBAIHN0YXRpYyBpbnQgcnNhX29zc2xfcHJpdmF0ZV9kZWNyeXB0KGludAorICAgICBC SUdOVU0gKnVuYmxpbmQgPSBOVUxMOworICAgICBCTl9CTElORElORyAqYmxpbmRpbmcgPSBOVUxM OworIAorKyMgaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBTX21vZGUoKSkgeworKyAg ICAgICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsKKysgICAgICAgICAgICBGSVBTZXJy KEZJUFNfRl9SU0FfT1NTTF9QUklWQVRFX0RFQ1JZUFQsCisrICAgICAgICAgICAgICAgICAgICBG SVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOworKyAgICAgICAgICAgIHJldHVybiAtMTsKKysg ICAgICAgIH0KKysKKysgICAgICAgIGlmICghKHJzYS0+ZmxhZ3MgJiBSU0FfRkxBR19OT05fRklQ U19BTExPVykKKysgICAgICAgICAgICAmJiAoQk5fbnVtX2JpdHMocnNhLT5uKSA8IE9QRU5TU0xf UlNBX0ZJUFNfTUlOX01PRFVMVVNfQklUUykpIHsKKysgICAgICAgICAgICBSU0FlcnIoUlNBX0Zf UlNBX09TU0xfUFJJVkFURV9ERUNSWVBULCBSU0FfUl9LRVlfU0laRV9UT09fU01BTEwpOworKyAg ICAgICAgICAgIHJldHVybiAtMTsKKysgICAgICAgIH0KKysgICAgfQorKyMgZW5kaWYKKysKKyAg ICAgaWYgKChjdHggPSBCTl9DVFhfbmV3KCkpID09IE5VTEwpCisgICAgICAgICBnb3RvIGVycjsK KyAgICAgQk5fQ1RYX3N0YXJ0KGN0eCk7CitAQCAtNDk0LDYgKzU0NiwyMiBAQCBzdGF0aWMgaW50 IHJzYV9vc3NsX3B1YmxpY19kZWNyeXB0KGludCBmCisgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZiA9 IE5VTEw7CisgICAgIEJOX0NUWCAqY3R4ID0gTlVMTDsKKyAKKysjIGlmZGVmIE9QRU5TU0xfRklQ UworKyAgICBpZiAoRklQU19tb2RlKCkpIHsKKysgICAgICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2Zh aWxlZCgpKSB7CisrICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX09TU0xfUFVCTElDX0RF Q1JZUFQsCisrICAgICAgICAgICAgICAgICAgICBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQp OworKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKCEo cnNhLT5mbGFncyAmIFJTQV9GTEFHX05PTl9GSVBTX0FMTE9XKQorKyAgICAgICAgICAgICYmIChC Tl9udW1fYml0cyhyc2EtPm4pIDwgT1BFTlNTTF9SU0FfRklQU19NSU5fTU9EVUxVU19CSVRTKSkg eworKyAgICAgICAgICAgIFJTQWVycihSU0FfRl9SU0FfT1NTTF9QVUJMSUNfREVDUllQVCwgUlNB X1JfS0VZX1NJWkVfVE9PX1NNQUxMKTsKKysgICAgICAgICAgICByZXR1cm4gLTE7CisrICAgICAg ICB9CisrICAgIH0KKysjIGVuZGlmCisrCisgICAgIGlmIChCTl9udW1fYml0cyhyc2EtPm4pID4g T1BFTlNTTF9SU0FfTUFYX01PRFVMVVNfQklUUykgeworICAgICAgICAgUlNBZXJyKFJTQV9GX1JT QV9PU1NMX1BVQkxJQ19ERUNSWVBULCBSU0FfUl9NT0RVTFVTX1RPT19MQVJHRSk7CisgICAgICAg ICByZXR1cm4gLTE7CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2NyeXB0by9yc2EvcnNhX3NpZ24u Yy5maXBzIG9wZW5zc2wtMS4xLjAvY3J5cHRvL3JzYS9yc2Ffc2lnbi5jCistLS0gb3BlbnNzbC0x LjEuMC9jcnlwdG8vcnNhL3JzYV9zaWduLmMuZmlwcwkyMDE2LTA4LTI1IDE3OjI5OjIxLjAwMDAw MDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAvY3J5cHRvL3JzYS9yc2Ffc2lnbi5jCTIwMTYt MDktMDggMTE6Mzc6MzguNzQ1NDYwMTY0ICswMjAwCitAQCAtMjksNiArMjksMTMgQEAgaW50IFJT QV9zaWduKGludCB0eXBlLCBjb25zdCB1bnNpZ25lZCBjaAorICAgICBjb25zdCB1bnNpZ25lZCBj aGFyICpzID0gTlVMTDsKKyAgICAgWDUwOV9BTEdPUiBhbGdvcjsKKyAgICAgQVNOMV9PQ1RFVF9T VFJJTkcgZGlnZXN0OworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgaWYgKEZJUFNfbW9kZSgp ICYmICEocnNhLT5tZXRoLT5mbGFncyAmIFJTQV9GTEFHX0ZJUFNfTUVUSE9EKQorKyAgICAgICAg JiYgIShyc2EtPmZsYWdzICYgUlNBX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpKSB7CisrICAgICAgICBS U0FlcnIoUlNBX0ZfUlNBX1NJR04sIFJTQV9SX05PTl9GSVBTX1JTQV9NRVRIT0QpOworKyAgICAg ICAgcmV0dXJuIDA7CisrICAgIH0KKysjZW5kaWYKKyAgICAgaWYgKHJzYS0+bWV0aC0+cnNhX3Np Z24pIHsKKyAgICAgICAgIHJldHVybiByc2EtPm1ldGgtPnJzYV9zaWduKHR5cGUsIG0sIG1fbGVu LCBzaWdyZXQsIHNpZ2xlbiwgcnNhKTsKKyAgICAgfQorQEAgLTc3LDcgKzg0LDEwIEBAIGludCBS U0Ffc2lnbihpbnQgdHlwZSwgY29uc3QgdW5zaWduZWQgY2gKKyAgICAgICAgIGkyZF9YNTA5X1NJ Rygmc2lnLCAmcCk7CisgICAgICAgICBzID0gdG1wczsKKyAgICAgfQorLSAgICBpID0gUlNBX3By aXZhdGVfZW5jcnlwdChpLCBzLCBzaWdyZXQsIHJzYSwgUlNBX1BLQ1MxX1BBRERJTkcpOworKyAg ICAvKiBOQjogY2FsbCB1bmRlcmx5aW5nIG1ldGhvZCBkaXJlY3RseSB0byBhdm9pZCBGSVBTIGJs b2NraW5nICovCisrICAgIGkgPSByc2EtPm1ldGgtPnJzYV9wcml2X2VuYyA/IHJzYS0+bWV0aC0+ cnNhX3ByaXZfZW5jKGksIHMsIHNpZ3JldCwgcnNhLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSU0FfUEtDUzFfUEFERElORykgOgor KyAgICAgICAgMDsKKyAgICAgaWYgKGkgPD0gMCkKKyAgICAgICAgIHJldCA9IDA7CisgICAgIGVs c2UKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjAvY3J5cHRvL3NoYS9zaGFfbG9jbC5oLmZpcHMgb3Bl bnNzbC0xLjEuMC9jcnlwdG8vc2hhL3NoYV9sb2NsLmgKKy0tLSBvcGVuc3NsLTEuMS4wL2NyeXB0 by9zaGEvc2hhX2xvY2wuaC5maXBzCTIwMTYtMDktMDggMTE6Mzc6MzguNTQwNDU1NTc4ICswMjAw CisrKysgb3BlbnNzbC0xLjEuMC9jcnlwdG8vc2hhL3NoYV9sb2NsLmgJMjAxNi0wOS0wOCAxMToz NzozOC43NDU0NjAxNjQgKzAyMDAKK0BAIC01Miw2ICs1Miw5IEBAIHZvaWQgc2hhMV9ibG9ja19k YXRhX29yZGVyKFNIQV9DVFggKmMsIGMKKyAKKyBpbnQgSEFTSF9JTklUKFNIQV9DVFggKmMpCisg eworKyNpZiBkZWZpbmVkKE9QRU5TU0xfRklQUykKKysgICAgRklQU19zZWxmdGVzdF9jaGVjaygp OworKyNlbmRpZgorICAgICBtZW1zZXQoYywgMCwgc2l6ZW9mKCpjKSk7CisgICAgIGMtPmgwID0g SU5JVF9EQVRBX2gwOworICAgICBjLT5oMSA9IElOSVRfREFUQV9oMTsKK2RpZmYgLXVwIG9wZW5z c2wtMS4xLjAvY3J5cHRvL3NoYS9zaGEyNTYuYy5maXBzIG9wZW5zc2wtMS4xLjAvY3J5cHRvL3No YS9zaGEyNTYuYworLS0tIG9wZW5zc2wtMS4xLjAvY3J5cHRvL3NoYS9zaGEyNTYuYy5maXBzCTIw MTYtMDgtMjUgMTc6Mjk6MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC9jcnlw dG8vc2hhL3NoYTI1Ni5jCTIwMTYtMDktMDggMTE6Mzc6MzguNzQ1NDYwMTY0ICswMjAwCitAQCAt MTgsNiArMTgsOSBAQAorIAorIGludCBTSEEyMjRfSW5pdChTSEEyNTZfQ1RYICpjKQorIHsKKysj IGlmZGVmIE9QRU5TU0xfRklQUworKyAgICBGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7CisrIyBlbmRp ZgorICAgICBtZW1zZXQoYywgMCwgc2l6ZW9mKCpjKSk7CisgICAgIGMtPmhbMF0gPSAweGMxMDU5 ZWQ4VUw7CisgICAgIGMtPmhbMV0gPSAweDM2N2NkNTA3VUw7CitAQCAtMzMsNiArMzYsOSBAQCBp bnQgU0hBMjI0X0luaXQoU0hBMjU2X0NUWCAqYykKKyAKKyBpbnQgU0hBMjU2X0luaXQoU0hBMjU2 X0NUWCAqYykKKyB7CisrIyBpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgRklQU19zZWxmdGVzdF9j aGVjaygpOworKyMgZW5kaWYKKyAgICAgbWVtc2V0KGMsIDAsIHNpemVvZigqYykpOworICAgICBj LT5oWzBdID0gMHg2YTA5ZTY2N1VMOworICAgICBjLT5oWzFdID0gMHhiYjY3YWU4NVVMOworZGlm ZiAtdXAgb3BlbnNzbC0xLjEuMC9jcnlwdG8vc2hhL3NoYTUxMi5jLmZpcHMgb3BlbnNzbC0xLjEu MC9jcnlwdG8vc2hhL3NoYTUxMi5jCistLS0gb3BlbnNzbC0xLjEuMC9jcnlwdG8vc2hhL3NoYTUx Mi5jLmZpcHMJMjAxNi0wOC0yNSAxNzoyOToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3Ns LTEuMS4wL2NyeXB0by9zaGEvc2hhNTEyLmMJMjAxNi0wOS0wOCAxMTozNzozOC43NDU0NjAxNjQg KzAyMDAKK0BAIC02Miw2ICs2Miw5IEBACisgCisgaW50IFNIQTM4NF9Jbml0KFNIQTUxMl9DVFgg KmMpCisgeworKyMgaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIEZJUFNfc2VsZnRlc3RfY2hlY2so KTsKKysjIGVuZGlmCisgICAgIGMtPmhbMF0gPSBVNjQoMHhjYmJiOWQ1ZGMxMDU5ZWQ4KTsKKyAg ICAgYy0+aFsxXSA9IFU2NCgweDYyOWEyOTJhMzY3Y2Q1MDcpOworICAgICBjLT5oWzJdID0gVTY0 KDB4OTE1OTAxNWEzMDcwZGQxNyk7CitAQCAtODAsNiArODMsOSBAQCBpbnQgU0hBMzg0X0luaXQo U0hBNTEyX0NUWCAqYykKKyAKKyBpbnQgU0hBNTEyX0luaXQoU0hBNTEyX0NUWCAqYykKKyB7Cisr IyBpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgRklQU19zZWxmdGVzdF9jaGVjaygpOworKyMgZW5k aWYKKyAgICAgYy0+aFswXSA9IFU2NCgweDZhMDllNjY3ZjNiY2M5MDgpOworICAgICBjLT5oWzFd ID0gVTY0KDB4YmI2N2FlODU4NGNhYTczYik7CisgICAgIGMtPmhbMl0gPSBVNjQoMHgzYzZlZjM3 MmZlOTRmODJiKTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjAvaW5jbHVkZS9vcGVuc3NsL2NyeXB0 by5oLmZpcHMgb3BlbnNzbC0xLjEuMC9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKKy0tLSBvcGVu c3NsLTEuMS4wL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaC5maXBzCTIwMTYtMDgtMjUgMTc6Mjk6 MjIuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC9pbmNsdWRlL29wZW5zc2wvY3J5 cHRvLmgJMjAxNi0wOS0wOCAxMTozNzozOC43NDY0NjAxODYgKzAyMDAKK0BAIC0zMzIsNiArMzMy LDExIEBAIGludCBPUEVOU1NMX2lzc2VydmljZSh2b2lkKTsKKyBpbnQgRklQU19tb2RlKHZvaWQp OworIGludCBGSVBTX21vZGVfc2V0KGludCByKTsKKyAKKysjIGlmZGVmIE9QRU5TU0xfRklQUwor Ky8qIGRpZSBpZiBGSVBTIHNlbGZ0ZXN0IGZhaWxlZCAqLworK3ZvaWQgRklQU19zZWxmdGVzdF9j aGVjayh2b2lkKTsKKysjIGVuZGlmCisrCisgdm9pZCBPUEVOU1NMX2luaXQodm9pZCk7CisgCisg c3RydWN0IHRtICpPUEVOU1NMX2dtdGltZShjb25zdCB0aW1lX3QgKnRpbWVyLCBzdHJ1Y3QgdG0g KnJlc3VsdCk7CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2luY2x1ZGUvb3BlbnNzbC9kaC5oLmZp cHMgb3BlbnNzbC0xLjEuMC9pbmNsdWRlL29wZW5zc2wvZGguaAorLS0tIG9wZW5zc2wtMS4xLjAv aW5jbHVkZS9vcGVuc3NsL2RoLmguZmlwcwkyMDE2LTA4LTI1IDE3OjI5OjIyLjAwMDAwMDAwMCAr MDIwMAorKysrIG9wZW5zc2wtMS4xLjAvaW5jbHVkZS9vcGVuc3NsL2RoLmgJMjAxNi0wOS0wOCAx MTozNzozOC43NDY0NjAxODYgKzAyMDAKK0BAIC0zMCw2ICszMCw3IEBAIGV4dGVybiAiQyIgewor ICMgZW5kaWYKKyAKKyAjIGRlZmluZSBPUEVOU1NMX0RIX0ZJUFNfTUlOX01PRFVMVVNfQklUUyAx MDI0CisrIyBkZWZpbmUgT1BFTlNTTF9ESF9GSVBTX01JTl9NT0RVTFVTX0JJVFNfR0VOIDIwNDgK KyAKKyAjIGRlZmluZSBESF9GTEFHX0NBQ0hFX01PTlRfUCAgICAgMHgwMQorIAorQEAgLTMwNyw2 ICszMDgsOSBAQCBpbnQgRVJSX2xvYWRfREhfc3RyaW5ncyh2b2lkKTsKKyAjIGRlZmluZSBESF9G X0RIX0NNU19ERUNSWVBUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE0CisgIyBkZWZp bmUgREhfRl9ESF9DTVNfU0VUX1BFRVJLRVkgICAgICAgICAgICAgICAgICAgICAgICAgIDExNQor ICMgZGVmaW5lIERIX0ZfREhfQ01TX1NFVF9TSEFSRURfSU5GTyAgICAgICAgICAgICAgICAgICAg ICAxMTYKKysjIGRlZmluZSBESF9GX0RIX0NPTVBVVEVfS0VZICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMjAzCisrIyBkZWZpbmUgREhfRl9ESF9HRU5FUkFURV9LRVkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDIwMgorKyMgZGVmaW5lIERIX0ZfREhfR0VORVJBVEVfUEFSQU1FVEVS U19FWCAgICAgICAgICAgICAgICAgICAyMDEKKyAjIGRlZmluZSBESF9GX0RIX01FVEhfRFVQICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE3CisgIyBkZWZpbmUgREhfRl9ESF9NRVRI X05FVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExOAorICMgZGVmaW5lIERIX0Zf REhfTUVUSF9TRVQxX05BTUUgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTkKK0BAIC0zMjgs MTAgKzMzMiwxMiBAQCBpbnQgRVJSX2xvYWRfREhfc3RyaW5ncyh2b2lkKTsKKyAjIGRlZmluZSBE SF9SX0RFQ09ERV9FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA0CisgIyBk ZWZpbmUgREhfUl9JTlZBTElEX1BVQktFWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEw MgorICMgZGVmaW5lIERIX1JfS0RGX1BBUkFNRVRFUl9FUlJPUiAgICAgICAgICAgICAgICAgICAg ICAgICAxMTIKKysjIGRlZmluZSBESF9SX0tFWV9TSVpFX1RPT19TTUFMTCAgICAgICAgICAgICAg ICAgICAgICAgICAgMjAxCisgIyBkZWZpbmUgREhfUl9LRVlTX05PVF9TRVQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDEwOAorICMgZGVmaW5lIERIX1JfTU9EVUxVU19UT09fTEFSR0Ug ICAgICAgICAgICAgICAgICAgICAgICAgICAxMDMKKyAjIGRlZmluZSBESF9SX05PX1BBUkFNRVRF UlNfU0VUICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA3CisgIyBkZWZpbmUgREhfUl9OT19Q UklWQVRFX1ZBTFVFICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMAorKyMgZGVmaW5lIERI X1JfTk9OX0ZJUFNfTUVUSE9EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDIKKyAjIGRl ZmluZSBESF9SX1BBUkFNRVRFUl9FTkNPRElOR19FUlJPUiAgICAgICAgICAgICAgICAgICAgMTA1 CisgIyBkZWZpbmUgREhfUl9QRUVSX0tFWV9FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDExMQorICMgZGVmaW5lIERIX1JfU0hBUkVEX0lORk9fRVJST1IgICAgICAgICAgICAgICAg ICAgICAgICAgICAxMTMKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjAvaW5jbHVkZS9vcGVuc3NsL2Rz YS5oLmZpcHMgb3BlbnNzbC0xLjEuMC9pbmNsdWRlL29wZW5zc2wvZHNhLmgKKy0tLSBvcGVuc3Ns LTEuMS4wL2luY2x1ZGUvb3BlbnNzbC9kc2EuaC5maXBzCTIwMTYtMDgtMjUgMTc6Mjk6MjIuMDAw MDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC9pbmNsdWRlL29wZW5zc2wvZHNhLmgJMjAx Ni0wOS0wOCAxMTozNzozOC43NDY0NjAxODYgKzAyMDAKK0BAIC0zNiw2ICszNiw3IEBAIGV4dGVy biAiQyIgeworICMgZW5kaWYKKyAKKyAjIGRlZmluZSBPUEVOU1NMX0RTQV9GSVBTX01JTl9NT0RV TFVTX0JJVFMgMTAyNAorKyMgZGVmaW5lIE9QRU5TU0xfRFNBX0ZJUFNfTUlOX01PRFVMVVNfQklU U19HRU4gMjA0OAorIAorICMgZGVmaW5lIERTQV9GTEFHX0NBQ0hFX01PTlRfUCAgIDB4MDEKKyAj IGlmIE9QRU5TU0xfQVBJX0NPTVBBVCA8IDB4MTAxMDAwMDBMCitAQCAtMTQ2LDkgKzE0Nyw5IEBA IGludCBEU0FwYXJhbXNfcHJpbnRfZnAoRklMRSAqZnAsIGNvbnN0IEQKKyBpbnQgRFNBX3ByaW50 X2ZwKEZJTEUgKmJwLCBjb25zdCBEU0EgKngsIGludCBvZmYpOworICMgZW5kaWYKKyAKKy0jIGRl ZmluZSBEU1NfcHJpbWVfY2hlY2tzIDUwCisrIyBkZWZpbmUgRFNTX3ByaW1lX2NoZWNrcyA2NAor IC8qCistICogUHJpbWFsaXR5IHRlc3QgYWNjb3JkaW5nIHRvIEZJUFMgUFVCIDE4NlstMV0sIEFw cGVuZGl4IDIuMTogNTAgcm91bmRzIG9mCisrICogUHJpbWFsaXR5IHRlc3QgYWNjb3JkaW5nIHRv IEZJUFMgUFVCIDE4Ni00LCBBcHBlbmRpeCAyLjE6IDY0IHJvdW5kcyBvZgorICAqIFJhYmluLU1p bGxlcgorICAqLworICMgZGVmaW5lIERTQV9pc19wcmltZShuLCBjYWxsYmFjaywgY2JfYXJnKSBc CitAQCAtMTYyLDYgKzE2MywxNCBAQCBpbnQgRFNBX3ByaW50X2ZwKEZJTEUgKmJwLCBjb25zdCBE U0EgKngsCisgREggKkRTQV9kdXBfREgoY29uc3QgRFNBICpyKTsKKyAjIGVuZGlmCisgCisrIyBp ZmRlZiBPUEVOU1NMX0ZJUFMKKytpbnQgRklQU19kc2FfYnVpbHRpbl9wYXJhbWdlbihEU0EgKnJl dCwgc2l6ZV90IGJpdHMsIHNpemVfdCBxYml0cywKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBFVlBfTUQgKmV2cG1kLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlZWRfaW4sCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZV90IHNlZWRfbGVuLCBpbnQgKmNvdW50ZXJfcmV0LAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmhfcmV0LCBCTl9HRU5DQiAqY2IpOworKyMg ZW5kaWYKKysKKyAjIGRlZmluZSBFVlBfUEtFWV9DVFhfc2V0X2RzYV9wYXJhbWdlbl9iaXRzKGN0 eCwgbmJpdHMpIFwKKyAgICAgICAgIEVWUF9QS0VZX0NUWF9jdHJsKGN0eCwgRVZQX1BLRVlfRFNB LCBFVlBfUEtFWV9PUF9QQVJBTUdFTiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRVZQX1BLRVlfQ1RSTF9EU0FfUEFSQU1HRU5fQklUUywgbmJpdHMsIE5VTEwpCitAQCAtMjQx LDggKzI1MCwxMSBAQCBpbnQgRVJSX2xvYWRfRFNBX3N0cmluZ3Modm9pZCk7CisgLyogRnVuY3Rp b24gY29kZXMuICovCisgIyBkZWZpbmUgRFNBX0ZfRFNBUEFSQU1TX1BSSU5UICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDEwMAorICMgZGVmaW5lIERTQV9GX0RTQVBBUkFNU19QUklOVF9GUCAg ICAgICAgICAgICAgICAgICAgICAgICAxMDEKKysjIGRlZmluZSBEU0FfRl9EU0FfQlVJTFRJTl9L RVlHRU4gICAgICAgICAgICAgICAgICAgICAgICAgMjAyCisgIyBkZWZpbmUgRFNBX0ZfRFNBX0JV SUxUSU5fUEFSQU1HRU4gICAgICAgICAgICAgICAgICAgICAgIDEyNQorICMgZGVmaW5lIERTQV9G X0RTQV9CVUlMVElOX1BBUkFNR0VOMiAgICAgICAgICAgICAgICAgICAgICAxMjYKKysjIGRlZmlu ZSBEU0FfRl9EU0FfR0VORVJBVEVfS0VZICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxCisr IyBkZWZpbmUgRFNBX0ZfRFNBX0dFTkVSQVRFX1BBUkFNRVRFUlNfRVggICAgICAgICAgICAgICAg IDIwMAorICMgZGVmaW5lIERTQV9GX0RTQV9ET19TSUdOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAxMTIKKyAjIGRlZmluZSBEU0FfRl9EU0FfRE9fVkVSSUZZICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMTEzCisgIyBkZWZpbmUgRFNBX0ZfRFNBX01FVEhfRFVQICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDEyNworQEAgLTI2OSw5ICsyODEsMTIgQEAgaW50IEVSUl9s b2FkX0RTQV9zdHJpbmdzKHZvaWQpOworICMgZGVmaW5lIERTQV9SX0RFQ09ERV9FUlJPUiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAxMDQKKyAjIGRlZmluZSBEU0FfUl9JTlZBTElEX0RJ R0VTVF9UWVBFICAgICAgICAgICAgICAgICAgICAgICAgMTA2CisgIyBkZWZpbmUgRFNBX1JfSU5W QUxJRF9QQVJBTUVURVJTICAgICAgICAgICAgICAgICAgICAgICAgIDExMgorKyMgZGVmaW5lIERT QV9SX0tFWV9TSVpFX0lOVkFMSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDEKKysjIGRl ZmluZSBEU0FfUl9LRVlfU0laRV9UT09fU01BTEwgICAgICAgICAgICAgICAgICAgICAgICAgMjAy CisgIyBkZWZpbmUgRFNBX1JfTUlTU0lOR19QQVJBTUVURVJTICAgICAgICAgICAgICAgICAgICAg ICAgIDEwMQorICMgZGVmaW5lIERTQV9SX01PRFVMVVNfVE9PX0xBUkdFICAgICAgICAgICAgICAg ICAgICAgICAgICAxMDMKKyAjIGRlZmluZSBEU0FfUl9OT19QQVJBTUVURVJTX1NFVCAgICAgICAg ICAgICAgICAgICAgICAgICAgMTA3CisrIyBkZWZpbmUgRFNBX1JfTk9OX0ZJUFNfRFNBX01FVEhP RCAgICAgICAgICAgICAgICAgICAgICAgIDIwMAorICMgZGVmaW5lIERTQV9SX1BBUkFNRVRFUl9F TkNPRElOR19FUlJPUiAgICAgICAgICAgICAgICAgICAxMDUKKyAjIGRlZmluZSBEU0FfUl9RX05P VF9QUklNRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEzCisgCitkaWZmIC11cCBv cGVuc3NsLTEuMS4wL2luY2x1ZGUvb3BlbnNzbC9ldnAuaC5maXBzIG9wZW5zc2wtMS4xLjAvaW5j bHVkZS9vcGVuc3NsL2V2cC5oCistLS0gb3BlbnNzbC0xLjEuMC9pbmNsdWRlL29wZW5zc2wvZXZw LmguZmlwcwkyMDE2LTA4LTI1IDE3OjI5OjIyLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wt MS4xLjAvaW5jbHVkZS9vcGVuc3NsL2V2cC5oCTIwMTYtMDktMDggMTE6Mzc6MzguNzQ2NDYwMTg2 ICswMjAwCitAQCAtMTQ1Niw2ICsxNDU2LDcgQEAgaW50IEVSUl9sb2FkX0VWUF9zdHJpbmdzKHZv aWQpOworICMgZGVmaW5lIEVWUF9GX0FFU05JX0lOSVRfS0VZICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAxNjUKKyAjIGRlZmluZSBFVlBfRl9BRVNfSU5JVF9LRVkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMTMzCisgIyBkZWZpbmUgRVZQX0ZfQUVTX1Q0X0lOSVRfS0VZICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDE3OAorKyMgZGVmaW5lIEVWUF9GX0FFU19YVFNfQ0lQSEVS ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDAKKyAjIGRlZmluZSBFVlBfRl9BTEdfTU9E VUxFX0lOSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTc3CisgIyBkZWZpbmUgRVZQX0Zf Q0FNRUxMSUFfSU5JVF9LRVkgICAgICAgICAgICAgICAgICAgICAgICAgIDE1OQorICMgZGVmaW5l IEVWUF9GX0NIQUNIQTIwX1BPTFkxMzA1X0NUUkwgICAgICAgICAgICAgICAgICAgICAxODIKK0BA IC0xNTMxLDYgKzE1MzIsNyBAQCBpbnQgRVJSX2xvYWRfRVZQX3N0cmluZ3Modm9pZCk7CisgIyBk ZWZpbmUgRVZQX1JfQ1RSTF9PUEVSQVRJT05fTk9UX0lNUExFTUVOVEVEICAgICAgICAgICAgIDEz MworICMgZGVmaW5lIEVWUF9SX0RBVEFfTk9UX01VTFRJUExFX09GX0JMT0NLX0xFTkdUSCAgICAg ICAgICAxMzgKKyAjIGRlZmluZSBFVlBfUl9ERUNPREVfRVJST1IgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMTE0CisrIyBkZWZpbmUgRVZQX1JfRElTQUJMRURfRk9SX0ZJUFMgICAgICAg ICAgICAgICAgICAgICAgICAgIDIwMAorICMgZGVmaW5lIEVWUF9SX0RJRkZFUkVOVF9LRVlfVFlQ RVMgICAgICAgICAgICAgICAgICAgICAgICAxMDEKKyAjIGRlZmluZSBFVlBfUl9ESUZGRVJFTlRf UEFSQU1FVEVSUyAgICAgICAgICAgICAgICAgICAgICAgMTUzCisgIyBkZWZpbmUgRVZQX1JfRVJS T1JfTE9BRElOR19TRUNUSU9OICAgICAgICAgICAgICAgICAgICAgIDE2NQorQEAgLTE1NjQsNiAr MTU2Niw3IEBAIGludCBFUlJfbG9hZF9FVlBfc3RyaW5ncyh2b2lkKTsKKyAjIGRlZmluZSBFVlBf Ul9QUklWQVRFX0tFWV9ERUNPREVfRVJST1IgICAgICAgICAgICAgICAgICAgMTQ1CisgIyBkZWZp bmUgRVZQX1JfUFJJVkFURV9LRVlfRU5DT0RFX0VSUk9SICAgICAgICAgICAgICAgICAgIDE0Ngor ICMgZGVmaW5lIEVWUF9SX1BVQkxJQ19LRVlfTk9UX1JTQSAgICAgICAgICAgICAgICAgICAgICAg ICAxMDYKKysjIGRlZmluZSBFVlBfUl9UT09fTEFSR0UgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMjAxCisgIyBkZWZpbmUgRVZQX1JfVU5LTk9XTl9DSVBIRVIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDE2MAorICMgZGVmaW5lIEVWUF9SX1VOS05PV05fRElHRVNUICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAxNjEKKyAjIGRlZmluZSBFVlBfUl9VTktOT1dOX09QVElP TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTY5CitkaWZmIC11cCBvcGVuc3NsLTEuMS4w L2luY2x1ZGUvb3BlbnNzbC9maXBzLmguZmlwcyBvcGVuc3NsLTEuMS4wL2luY2x1ZGUvb3BlbnNz bC9maXBzLmgKKy0tLSBvcGVuc3NsLTEuMS4wL2luY2x1ZGUvb3BlbnNzbC9maXBzLmguZmlwcwky MDE2LTA5LTA4IDExOjM3OjM4Ljc0NjQ2MDE4NiArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAvaW5j bHVkZS9vcGVuc3NsL2ZpcHMuaAkyMDE2LTA5LTA4IDExOjM3OjM4Ljc0NjQ2MDE4NiArMDIwMAor QEAgLTAsMCArMSwxNzYgQEAKKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAw MyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJl ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig d2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3Ry aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAg IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0 aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0 ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2Fy ZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhp cyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9q ZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5v cGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFu ZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBv ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysg KiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBs ZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgorKyAqCisrICog NS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQg Ik9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVz IHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wg UHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29l dmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysg KiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3Bl blNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRw Oi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE IEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQg T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF CisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U IFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwg RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICog Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD RVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS UlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdB WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBP RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysgKi8KKysKKysjaW5jbHVk ZSA8b3BlbnNzbC9vcGVuc3NsY29uZi5oPgorKworKyNpZm5kZWYgT1BFTlNTTF9GSVBTCisrIyBl cnJvciBGSVBTIGlzIGRpc2FibGVkLgorKyNlbmRpZgorKworKyNpZmRlZiBPUEVOU1NMX0ZJUFMK KysKKysjIGlmZGVmICBfX2NwbHVzcGx1cworK2V4dGVybiAiQyIgeworKyMgZW5kaWYKKysKKysg ICAgaW50IEZJUFNfc2VsZnRlc3Qodm9pZCk7CisrICAgIGludCBGSVBTX3NlbGZ0ZXN0X2ZhaWxl ZCh2b2lkKTsKKysgICAgaW50IEZJUFNfc2VsZnRlc3RfZHJiZ19hbGwodm9pZCk7CisrCisrLyog QkVHSU4gRVJST1IgQ09ERVMgKi8KKysvKiBUaGUgZm9sbG93aW5nIGxpbmVzIGFyZSBhdXRvIGdl bmVyYXRlZCBieSB0aGUgc2NyaXB0IG1rZXJyLnBsLiBBbnkgY2hhbmdlcworKyAqIG1hZGUgYWZ0 ZXIgdGhpcyBwb2ludCBtYXkgYmUgb3ZlcndyaXR0ZW4gd2hlbiB0aGUgc2NyaXB0IGlzIG5leHQg cnVuLgorKyAqLworKyAgICBpbnQgRVJSX2xvYWRfRklQU19zdHJpbmdzKHZvaWQpOworKworKy8q IEVycm9yIGNvZGVzIGZvciB0aGUgRklQUyBmdW5jdGlvbnMuICovCisrCisrLyogRnVuY3Rpb24g Y29kZXMuICovCisrIyBkZWZpbmUgRklQU19GX0RIX0JVSUxUSU5fR0VOUEFSQU1TICAgICAgICAg ICAgICAgICAgICAgIDEwMAorKyMgZGVmaW5lIEZJUFNfRl9EUkJHX1JFU0VFRCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAxMjEKKysjIGRlZmluZSBGSVBTX0ZfRFNBX0JVSUxUSU5fUEFS QU1HRU4yICAgICAgICAgICAgICAgICAgICAgMTA3CisrIyBkZWZpbmUgRklQU19GX0RTQV9ET19T SUdOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMgorKyMgZGVmaW5lIEZJUFNfRl9E U0FfRE9fVkVSSUZZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDMKKysjIGRlZmluZSBG SVBTX0ZfRVZQX0NJUEhFUl9DVFhfTkVXICAgICAgICAgICAgICAgICAgICAgICAgMTM3CisrIyBk ZWZpbmUgRklQU19GX0VWUF9DSVBIRVJfQ1RYX1JFU0VUICAgICAgICAgICAgICAgICAgICAgIDEy MgorKyMgZGVmaW5lIEZJUFNfRl9FQ0RIX0NPTVBVVEVfS0VZICAgICAgICAgICAgICAgICAgICAg ICAgICAxMjMKKysjIGRlZmluZSBGSVBTX0ZfRVZQX0NJUEhFUklOSVRfRVggICAgICAgICAgICAg ICAgICAgICAgICAgMTI0CisrIyBkZWZpbmUgRklQU19GX0VWUF9ESUdFU1RJTklUX0VYICAgICAg ICAgICAgICAgICAgICAgICAgIDEyNQorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0NIRUNLX0RTQSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAxMDQKKysjIGRlZmluZSBGSVBTX0ZfRklQU19DSEVD S19FQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQyCisrIyBkZWZpbmUgRklQU19GX0ZJ UFNfQ0hFQ0tfUlNBICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNgorKyMgZGVmaW5lIEZJ UFNfRl9GSVBTX0RSQkdfQllURVMgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzEKKysjIGRl ZmluZSBGSVBTX0ZfRklQU19EUkJHX0NIRUNLICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ2 CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfRFJCR19DUFJOR19URVNUICAgICAgICAgICAgICAgICAg ICAgIDEzMgorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0sgICAgICAgICAg ICAgICAgICAgICAxMzYKKysjIGRlZmluZSBGSVBTX0ZfRklQU19EUkJHX0dFTkVSQVRFICAgICAg ICAgICAgICAgICAgICAgICAgMTM0CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfRFJCR19JTklUICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDEzNQorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0RSQkdf SU5TVEFOVElBVEUgICAgICAgICAgICAgICAgICAgICAxMzgKKysjIGRlZmluZSBGSVBTX0ZfRklQ U19EUkJHX05FVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM5CisrIyBkZWZpbmUgRklQ U19GX0ZJUFNfRFJCR19SRVNFRUQgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MAorKyMgZGVm aW5lIEZJUFNfRl9GSVBTX0RSQkdfU0lOR0xFX0tBVCAgICAgICAgICAgICAgICAgICAgICAxNDEK KysjIGRlZmluZSBGSVBTX0ZfRklQU19HRVRfRU5UUk9QWSAgICAgICAgICAgICAgICAgICAgICAg ICAgMTQ3CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfTU9EVUxFX01PREVfU0VUICAgICAgICAgICAg ICAgICAgICAgIDEwOAorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1BLRVlfU0lHTkFUVVJFX1RFU1Qg ICAgICAgICAgICAgICAgICAxMDkKKysjIGRlZmluZSBGSVBTX0ZfRklQU19SQU5EX0JZVEVTICAg ICAgICAgICAgICAgICAgICAgICAgICAgMTE0CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfUkFORF9T RUVEICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyOAorKyMgZGVmaW5lIEZJUFNfRl9GSVBT X1JBTkRfU0VUX01FVEhPRCAgICAgICAgICAgICAgICAgICAgICAxMjYKKysjIGRlZmluZSBGSVBT X0ZfRklQU19SQU5EX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgMTI3CisrIyBkZWZp bmUgRklQU19GX0ZJUFNfUlNBX0JVSUxUSU5fS0VZR0VOICAgICAgICAgICAgICAgICAgIDEwMQor KyMgZGVmaW5lIEZJUFNfRl9GSVBTX1NFTEZURVNUX0FFUyAgICAgICAgICAgICAgICAgICAgICAg ICAxMTAKKysjIGRlZmluZSBGSVBTX0ZfRklQU19TRUxGVEVTVF9BRVNfQ0NNICAgICAgICAgICAg ICAgICAgICAgMTQ1CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfU0VMRlRFU1RfQUVTX0dDTSAgICAg ICAgICAgICAgICAgICAgIDEyOQorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1NFTEZURVNUX0FFU19Y VFMgICAgICAgICAgICAgICAgICAgICAxNDQKKysjIGRlZmluZSBGSVBTX0ZfRklQU19TRUxGVEVT VF9DTUFDICAgICAgICAgICAgICAgICAgICAgICAgMTMwCisrIyBkZWZpbmUgRklQU19GX0ZJUFNf U0VMRlRFU1RfREVTICAgICAgICAgICAgICAgICAgICAgICAgIDExMQorKyMgZGVmaW5lIEZJUFNf Rl9GSVBTX1NFTEZURVNUX0RTQSAgICAgICAgICAgICAgICAgICAgICAgICAxMTIKKysjIGRlZmlu ZSBGSVBTX0ZfRklQU19TRUxGVEVTVF9FQ0RTQSAgICAgICAgICAgICAgICAgICAgICAgMTMzCisr IyBkZWZpbmUgRklQU19GX0ZJUFNfU0VMRlRFU1RfSE1BQyAgICAgICAgICAgICAgICAgICAgICAg IDExMworKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1NFTEZURVNUX1NIQTEgICAgICAgICAgICAgICAg ICAgICAgICAxMTUKKysjIGRlZmluZSBGSVBTX0ZfRklQU19TRUxGVEVTVF9TSEEyICAgICAgICAg ICAgICAgICAgICAgICAgMTA1CisrIyBkZWZpbmUgRklQU19GX09TU0xfRUNEU0FfU0lHTl9TSUcg ICAgICAgICAgICAgICAgICAgICAgIDE0MworKyMgZGVmaW5lIEZJUFNfRl9PU1NMX0VDRFNBX1ZF UklGWV9TSUcgICAgICAgICAgICAgICAgICAgICAxNDgKKysjIGRlZmluZSBGSVBTX0ZfUlNBX0JV SUxUSU5fS0VZR0VOICAgICAgICAgICAgICAgICAgICAgICAgMTE2CisrIyBkZWZpbmUgRklQU19G X1JTQV9PU1NMX0lOSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0OQorKyMgZGVmaW5l IEZJUFNfRl9SU0FfT1NTTF9QUklWQVRFX0RFQ1JZUFQgICAgICAgICAgICAgICAgICAxMTcKKysj IGRlZmluZSBGSVBTX0ZfUlNBX09TU0xfUFJJVkFURV9FTkNSWVBUICAgICAgICAgICAgICAgICAg MTE4CisrIyBkZWZpbmUgRklQU19GX1JTQV9PU1NMX1BVQkxJQ19ERUNSWVBUICAgICAgICAgICAg ICAgICAgIDExOQorKyMgZGVmaW5lIEZJUFNfRl9SU0FfT1NTTF9QVUJMSUNfRU5DUllQVCAgICAg ICAgICAgICAgICAgICAxMjAKKysKKysvKiBSZWFzb24gY29kZXMuICovCisrIyBkZWZpbmUgRklQ U19SX0FERElUSU9OQUxfSU5QVVRfRVJST1JfVU5ERVRFQ1RFRCAgICAgICAgIDE1MAorKyMgZGVm aW5lIEZJUFNfUl9BRERJVElPTkFMX0lOUFVUX1RPT19MT05HICAgICAgICAgICAgICAgICAxMjUK KysjIGRlZmluZSBGSVBTX1JfQUxSRUFEWV9JTlNUQU5USUFURUQgICAgICAgICAgICAgICAgICAg ICAgMTM0CisrIyBkZWZpbmUgRklQU19SX0RSQkdfTk9UX0lOSVRJQUxJU0VEICAgICAgICAgICAg ICAgICAgICAgIDE1MgorKyMgZGVmaW5lIEZJUFNfUl9EUkJHX1NUVUNLICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAxMDMKKysjIGRlZmluZSBGSVBTX1JfRU5UUk9QWV9FUlJPUl9VTkRF VEVDVEVEICAgICAgICAgICAgICAgICAgMTA0CisrIyBkZWZpbmUgRklQU19SX0VOVFJPUFlfTk9U X1JFUVVFU1RFRF9GT1JfUkVTRUVEICAgICAgICAgIDEwNQorKyMgZGVmaW5lIEZJUFNfUl9FTlRS T1BZX1NPVVJDRV9TVFVDSyAgICAgICAgICAgICAgICAgICAgICAxNDIKKysjIGRlZmluZSBGSVBT X1JfRVJST1JfSU5JVElBTElTSU5HX0RSQkcgICAgICAgICAgICAgICAgICAgMTE1CisrIyBkZWZp bmUgRklQU19SX0VSUk9SX0lOU1RBTlRJQVRJTkdfRFJCRyAgICAgICAgICAgICAgICAgIDEyNwor KyMgZGVmaW5lIEZJUFNfUl9FUlJPUl9SRVRSSUVWSU5HX0FERElUSU9OQUxfSU5QVVQgICAgICAg ICAxMjQKKysjIGRlZmluZSBGSVBTX1JfRVJST1JfUkVUUklFVklOR19FTlRST1BZICAgICAgICAg ICAgICAgICAgMTIyCisrIyBkZWZpbmUgRklQU19SX0VSUk9SX1JFVFJJRVZJTkdfTk9OQ0UgICAg ICAgICAgICAgICAgICAgIDE0MAorKyMgZGVmaW5lIEZJUFNfUl9GSU5HRVJQUklOVF9ET0VTX05P VF9NQVRDSCAgICAgICAgICAgICAgICAxMTAKKysjIGRlZmluZSBGSVBTX1JfRklQU19NT0RFX0FM UkVBRFlfU0VUICAgICAgICAgICAgICAgICAgICAgMTAyCisrIyBkZWZpbmUgRklQU19SX0ZJUFNf U0VMRlRFU1RfRkFJTEVEICAgICAgICAgICAgICAgICAgICAgIDEwNgorKyMgZGVmaW5lIEZJUFNf Ul9GVU5DVElPTl9FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTYKKysjIGRlZmlu ZSBGSVBTX1JfR0VORVJBVEVfRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM3Cisr IyBkZWZpbmUgRklQU19SX0dFTkVSQVRFX0VSUk9SX1VOREVURUNURUQgICAgICAgICAgICAgICAg IDExOAorKyMgZGVmaW5lIEZJUFNfUl9JTlNUQU5USUFURV9FUlJPUiAgICAgICAgICAgICAgICAg ICAgICAgICAxMTkKKysjIGRlZmluZSBGSVBTX1JfSU5URVJOQUxfRVJST1IgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMTIxCisrIyBkZWZpbmUgRklQU19SX0lOVkFMSURfS0VZX0xFTkdUSCAg ICAgICAgICAgICAgICAgICAgICAgIDEwOQorKyMgZGVmaW5lIEZJUFNfUl9JTl9FUlJPUl9TVEFU RSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjMKKysjIGRlZmluZSBGSVBTX1JfS0VZX1RP T19TSE9SVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA4CisrIyBkZWZpbmUgRklQU19S X05PTkNFX0VSUk9SX1VOREVURUNURUQgICAgICAgICAgICAgICAgICAgIDE0OQorKyMgZGVmaW5l IEZJUFNfUl9OT05fRklQU19NRVRIT0QgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAKKysj IGRlZmluZSBGSVBTX1JfTk9QUl9URVNUMV9GQUlMVVJFICAgICAgICAgICAgICAgICAgICAgICAg MTQ1CisrIyBkZWZpbmUgRklQU19SX05PUFJfVEVTVDJfRkFJTFVSRSAgICAgICAgICAgICAgICAg ICAgICAgIDE0NgorKyMgZGVmaW5lIEZJUFNfUl9OT1RfSU5TVEFOVElBVEVEICAgICAgICAgICAg ICAgICAgICAgICAgICAxMjYKKysjIGRlZmluZSBGSVBTX1JfUEFJUldJU0VfVEVTVF9GQUlMRUQg ICAgICAgICAgICAgICAgICAgICAgMTA3CisrIyBkZWZpbmUgRklQU19SX1BFUlNPTkFMSVNBVElP Tl9FUlJPUl9VTkRFVEVDVEVEICAgICAgICAgIDEyOAorKyMgZGVmaW5lIEZJUFNfUl9QRVJTT05B TElTQVRJT05fU1RSSU5HX1RPT19MT05HICAgICAgICAgICAxMjkKKysjIGRlZmluZSBGSVBTX1Jf UFJfVEVTVDFfRkFJTFVSRSAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ3CisrIyBkZWZpbmUg RklQU19SX1BSX1RFU1QyX0ZBSUxVUkUgICAgICAgICAgICAgICAgICAgICAgICAgIDE0OAorKyMg ZGVmaW5lIEZJUFNfUl9SRVFVRVNUX0xFTkdUSF9FUlJPUl9VTkRFVEVDVEVEICAgICAgICAgICAx MzAKKysjIGRlZmluZSBGSVBTX1JfUkVRVUVTVF9UT09fTEFSR0VfRk9SX0RSQkcgICAgICAgICAg ICAgICAgMTMxCisrIyBkZWZpbmUgRklQU19SX1JFU0VFRF9DT1VOVEVSX0VSUk9SICAgICAgICAg ICAgICAgICAgICAgIDEzMgorKyMgZGVmaW5lIEZJUFNfUl9SRVNFRURfRVJST1IgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAxMzMKKysjIGRlZmluZSBGSVBTX1JfU0VMRlRFU1RfRkFJTEVE ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAxCisrIyBkZWZpbmUgRklQU19SX1NFTEZURVNU X0ZBSUxVUkUgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNQorKyMgZGVmaW5lIEZJUFNfUl9U RVNUX0ZBSUxVUkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTcKKysjIGRlZmluZSBG SVBTX1JfVU5JTlNUQU5USUFURV9FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgMTQxCisrIyBk ZWZpbmUgRklQU19SX1VOSU5TVEFOVElBVEVfWkVST0lTRV9FUlJPUiAgICAgICAgICAgICAgIDEz OAorKyMgZGVmaW5lIEZJUFNfUl9VTlNVUFBPUlRFRF9EUkJHX1RZUEUgICAgICAgICAgICAgICAg ICAgICAxMzkKKysjIGRlZmluZSBGSVBTX1JfVU5TVVBQT1JURURfUExBVEZPUk0gICAgICAgICAg ICAgICAgICAgICAgMTEzCisrCisrIyBpZmRlZiAgX19jcGx1c3BsdXMKKyt9CisrIyBlbmRpZgor KyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC9pbmNsdWRlL29wZW5zc2wvZmlwc19yYW5k LmguZmlwcyBvcGVuc3NsLTEuMS4wL2luY2x1ZGUvb3BlbnNzbC9maXBzX3JhbmQuaAorLS0tIG9w ZW5zc2wtMS4xLjAvaW5jbHVkZS9vcGVuc3NsL2ZpcHNfcmFuZC5oLmZpcHMJMjAxNi0wOS0wOCAx MTozNzozOC43NDY0NjAxODYgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wL2luY2x1ZGUvb3BlbnNz bC9maXBzX3JhbmQuaAkyMDE2LTA5LTA4IDExOjM3OjM4Ljc0NjQ2MDE4NiArMDIwMAorQEAgLTAs MCArMSwxNDUgQEAKKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUg T3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJp YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91 dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs b3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlv bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBk b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysg KiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxz IG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0 IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9k dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Cisr ICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3Ns Lm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3Bl blNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9t b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBw cmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBj b250YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJv ZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5T U0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhv dXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVj dC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11 c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAi VGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQ cm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3 Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI RSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1Q TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICog SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM IFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBM QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJ TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisr ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP TikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUg UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysgKi8KKysKKysjaWZuZGVmIEhFQURF Ul9GSVBTX1JBTkRfSAorKyMgZGVmaW5lIEhFQURFUl9GSVBTX1JBTkRfSAorKworKyMgaW5jbHVk ZSA8b3BlbnNzbC9hZXMuaD4KKysjIGluY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisrIyBpbmNsdWRl IDxvcGVuc3NsL2htYWMuaD4KKysjIGluY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgorKworKyMgaWZk ZWYgT1BFTlNTTF9GSVBTCisrCisrIyAgaWZkZWYgIF9fY3BsdXNwbHVzCisrZXh0ZXJuICJDIiB7 CisrIyAgZW5kaWYKKysgICAgdHlwZWRlZiBzdHJ1Y3QgZHJiZ19jdHhfc3QgRFJCR19DVFg7Cisr LyogRFJCRyBleHRlcm5hbCBmbGFncyAqLworKy8qIEZsYWcgZm9yIENUUiBtb2RlIG9ubHk6IHVz ZSBkZXJpdmF0aW9uIGZ1bmN0aW9uIGN0cl9kZiAqLworKyMgIGRlZmluZSBEUkJHX0ZMQUdfQ1RS X1VTRV9ERiAgICAgICAgICAgIDB4MQorKy8qIFBSTkcgaXMgaW4gdGVzdCBzdGF0ZSAqLworKyMg IGRlZmluZSBEUkJHX0ZMQUdfVEVTVCAgICAgICAgICAgICAgICAgIDB4MgorKworKyAgICBEUkJH X0NUWCAqRklQU19kcmJnX25ldyhpbnQgdHlwZSwgdW5zaWduZWQgaW50IGZsYWdzKTsKKysgICAg aW50IEZJUFNfZHJiZ19pbml0KERSQkdfQ1RYICpkY3R4LCBpbnQgdHlwZSwgdW5zaWduZWQgaW50 IGZsYWdzKTsKKysgICAgaW50IEZJUFNfZHJiZ19pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0eCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwZXJz LCBzaXplX3QgcGVyc2xlbik7CisrICAgIGludCBGSVBTX2RyYmdfcmVzZWVkKERSQkdfQ1RYICpk Y3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICphZGluLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplX3QgYWRpbmxlbik7CisrICAgIGludCBGSVBTX2RyYmdfZ2VuZXJhdGUoRFJCR19DVFgg KmRjdHgsIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbiwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgcHJlZGljdGlvbl9yZXNpc3RhbmNlLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4sIHNpemVfdCBhZGlubGVuKTsK KysKKysgICAgaW50IEZJUFNfZHJiZ191bmluc3RhbnRpYXRlKERSQkdfQ1RYICpkY3R4KTsKKysg ICAgdm9pZCBGSVBTX2RyYmdfZnJlZShEUkJHX0NUWCAqZGN0eCk7CisrCisrICAgIGludCBGSVBT X2RyYmdfc2V0X2NhbGxiYWNrcyhEUkJHX0NUWCAqZGN0eCwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpemVfdCAoKmdldF9lbnRyb3B5KSAoRFJCR19DVFggKmN0eCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgY2hhciAqKnBvdXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBlbnRyb3B5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWluX2xlbiwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1heF9s ZW4pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmNsZWFudXBfZW50 cm9weSkgKERSQkdfQ1RYICpjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvbGVu KSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBlbnRyb3B5X2Jsb2Nr bGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICgqZ2V0X25vbmNl KSAoRFJCR19DVFggKmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKipwb3V0LAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVudHJvcHksCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWlu X2xlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVfdCBtYXhfbGVuKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv aWQgKCpjbGVhbnVwX25vbmNlKSAoRFJCR19DVFggKmN0eCwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aXplX3Qgb2xlbikpOworKworKyAgICBpbnQgRklQU19kcmJnX3NldF9yYW5kX2NhbGxiYWNrcyhE UkJHX0NUWCAqZGN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZV90ICgqZ2V0X2FkaW4pIChEUkJHX0NUWCAqY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKnBvdXQp LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqY2xlYW51cF9h ZGluKSAoRFJCR19DVFggKmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBv bGVuKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqcmFuZF9z ZWVkX2NiKSAoRFJCR19DVFggKmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYnVmLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtKSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqcmFuZF9hZGRfY2Ip IChEUkJHX0NUWCAqY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJ1ZiwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBl bnRyb3B5KSk7CisrCisrICAgIHZvaWQgKkZJUFNfZHJiZ19nZXRfYXBwX2RhdGEoRFJCR19DVFgg KmN0eCk7CisrICAgIHZvaWQgRklQU19kcmJnX3NldF9hcHBfZGF0YShEUkJHX0NUWCAqY3R4LCB2 b2lkICphcHBfZGF0YSk7CisrICAgIHNpemVfdCBGSVBTX2RyYmdfZ2V0X2Jsb2NrbGVuZ3RoKERS QkdfQ1RYICpkY3R4KTsKKysgICAgaW50IEZJUFNfZHJiZ19nZXRfc3RyZW5ndGgoRFJCR19DVFgg KmRjdHgpOworKyAgICB2b2lkIEZJUFNfZHJiZ19zZXRfY2hlY2tfaW50ZXJ2YWwoRFJCR19DVFgg KmRjdHgsIGludCBpbnRlcnZhbCk7CisrICAgIHZvaWQgRklQU19kcmJnX3NldF9yZXNlZWRfaW50 ZXJ2YWwoRFJCR19DVFggKmRjdHgsIGludCBpbnRlcnZhbCk7CisrCisrICAgIGludCBGSVBTX2Ry YmdfaGVhbHRoX2NoZWNrKERSQkdfQ1RYICpkY3R4KTsKKysKKysgICAgRFJCR19DVFggKkZJUFNf Z2V0X2RlZmF1bHRfZHJiZyh2b2lkKTsKKysgICAgY29uc3QgUkFORF9NRVRIT0QgKkZJUFNfZHJi Z19tZXRob2Qodm9pZCk7CisrCisrICAgIGludCBGSVBTX3JhbmRfc2V0X21ldGhvZChjb25zdCBS QU5EX01FVEhPRCAqbWV0aCk7CisrICAgIGNvbnN0IFJBTkRfTUVUSE9EICpGSVBTX3JhbmRfZ2V0 X21ldGhvZCh2b2lkKTsKKysKKysgICAgdm9pZCBGSVBTX3JhbmRfc2V0X2JpdHMoaW50IG5iaXRz KTsKKysKKysgICAgaW50IEZJUFNfcmFuZF9zdHJlbmd0aCh2b2lkKTsKKysKKysvKiAxLjAuMCBj b21wYXQgZnVuY3Rpb25zICovCisrICAgIGludCBGSVBTX3JhbmRfc2VlZChjb25zdCB2b2lkICpi dWYsIGludCBudW0pOworKyAgICBpbnQgRklQU19yYW5kX2J5dGVzKHVuc2lnbmVkIGNoYXIgKm91 dCwgaW50IG91dGxlbik7CisrICAgIHZvaWQgRklQU19yYW5kX3Jlc2V0KHZvaWQpOworKyAgICBp bnQgRklQU19yYW5kX3N0YXR1cyh2b2lkKTsKKysjICBpZmRlZiAgX19jcGx1c3BsdXMKKyt9Cisr IyAgZW5kaWYKKysjIGVuZGlmCisrI2VuZGlmCitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL2luY2x1 ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oLmluLmZpcHMgb3BlbnNzbC0xLjEuMC9pbmNsdWRlL29w ZW5zc2wvb3BlbnNzbGNvbmYuaC5pbgorLS0tIG9wZW5zc2wtMS4xLjAvaW5jbHVkZS9vcGVuc3Ns L29wZW5zc2xjb25mLmguaW4uZmlwcwkyMDE2LTA4LTI1IDE3OjI5OjIyLjAwMDAwMDAwMCArMDIw MAorKysrIG9wZW5zc2wtMS4xLjAvaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmguaW4JMjAx Ni0wOS0wOCAxMTozNzozOC43NDc0NjAyMDkgKzAyMDAKK0BAIC0xMzYsNiArMTM2LDExIEBAIGV4 dGVybiAiQyIgeworIAorICNkZWZpbmUgUkM0X0lOVCB7LSAkY29uZmlne3JjNF9pbnR9IC19Cisg CisrLyogQWx3YXlzIGJ1aWxkIEZJUFMgbW9kdWxlICovCisrI2lmbmRlZiBPUEVOU1NMX0ZJUFMK KysjIGRlZmluZSBPUEVOU1NMX0ZJUFMKKysjZW5kaWYKKysKKyAjaWZkZWYgIF9fY3BsdXNwbHVz CisgfQorICNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC9pbmNsdWRlL29wZW5zc2wvcmFu ZC5oLmZpcHMgb3BlbnNzbC0xLjEuMC9pbmNsdWRlL29wZW5zc2wvcmFuZC5oCistLS0gb3BlbnNz bC0xLjEuMC9pbmNsdWRlL29wZW5zc2wvcmFuZC5oLmZpcHMJMjAxNi0wOC0yNSAxNzoyOToyMi4w MDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wL2luY2x1ZGUvb3BlbnNzbC9yYW5kLmgJ MjAxNi0wOS0wOCAxMTozNzozOC43NDc0NjAyMDkgKzAyMDAKK0BAIC02Nyw2ICs2NywxMSBAQCBE RVBSRUNBVEVESU5fMV8xXzAodm9pZCBSQU5EX3NjcmVlbih2b2lkCisgREVQUkVDQVRFRElOXzFf MV8wKGludCBSQU5EX2V2ZW50KFVJTlQsIFdQQVJBTSwgTFBBUkFNKSkKKyAjZW5kaWYKKyAKKysj IGlmZGVmIE9QRU5TU0xfRklQUworK3ZvaWQgUkFORF9zZXRfZmlwc19kcmJnX3R5cGUoaW50IHR5 cGUsIGludCBmbGFncyk7CisraW50IFJBTkRfaW5pdF9maXBzKHZvaWQpOworKyMgZW5kaWYKKysK KyAvKiBCRUdJTiBFUlJPUiBDT0RFUyAqLworIC8qCisgICogVGhlIGZvbGxvd2luZyBsaW5lcyBh cmUgYXV0byBnZW5lcmF0ZWQgYnkgdGhlIHNjcmlwdCBta2Vyci5wbC4gQW55IGNoYW5nZXMKK0BA IC03OSw4ICs4NCwxMSBAQCBpbnQgRVJSX2xvYWRfUkFORF9zdHJpbmdzKHZvaWQpOworIAorIC8q IEZ1bmN0aW9uIGNvZGVzLiAqLworICMgZGVmaW5lIFJBTkRfRl9SQU5EX0JZVEVTICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAxMDAKKysjIGRlZmluZSBSQU5EX0ZfUkFORF9JTklUX0ZJ UFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwCisgCisgLyogUmVhc29uIGNvZGVzLiAq LworKyMgZGVmaW5lIFJBTkRfUl9FUlJPUl9JTklUSUFMSVNJTkdfRFJCRyAgICAgICAgICAgICAg ICAgICAyMDAKKysjIGRlZmluZSBSQU5EX1JfRVJST1JfSU5TVEFOVElBVElOR19EUkJHICAgICAg ICAgICAgICAgICAgMjAxCisgIyBkZWZpbmUgUkFORF9SX1BSTkdfTk9UX1NFRURFRCAgICAgICAg ICAgICAgICAgICAgICAgICAgIDEwMAorIAorICMgaWZkZWYgIF9fY3BsdXNwbHVzCitkaWZmIC11 cCBvcGVuc3NsLTEuMS4wL2luY2x1ZGUvb3BlbnNzbC9yc2EuaC5maXBzIG9wZW5zc2wtMS4xLjAv aW5jbHVkZS9vcGVuc3NsL3JzYS5oCistLS0gb3BlbnNzbC0xLjEuMC9pbmNsdWRlL29wZW5zc2wv cnNhLmguZmlwcwkyMDE2LTA4LTI1IDE3OjI5OjIyLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5z c2wtMS4xLjAvaW5jbHVkZS9vcGVuc3NsL3JzYS5oCTIwMTYtMDktMDggMTE6Mzc6MzguNzQ3NDYw MjA5ICswMjAwCitAQCAtNDYyLDYgKzQ2Miw3IEBAIGludCBFUlJfbG9hZF9SU0Ffc3RyaW5ncyh2 b2lkKTsKKyAKKyAvKiBGdW5jdGlvbiBjb2Rlcy4gKi8KKyAjIGRlZmluZSBSU0FfRl9DSEVDS19Q QURESU5HX01EICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQwCisrIyBkZWZpbmUgUlNBX0Zf RklQU19SU0FfQlVJTFRJTl9LRVlHRU4gICAgICAgICAgICAgICAgICAgIDIwNgorICMgZGVmaW5l IFJTQV9GX0lOVF9SU0FfVkVSSUZZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDUKKyAj IGRlZmluZSBSU0FfRl9PTERfUlNBX1BSSVZfREVDT0RFICAgICAgICAgICAgICAgICAgICAgICAg MTQ3CisgIyBkZWZpbmUgUlNBX0ZfUEtFWV9SU0FfQ1RSTCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDE0MworQEAgLTQ3Myw2ICs0NzQsNyBAQCBpbnQgRVJSX2xvYWRfUlNBX3N0cmluZ3Mo dm9pZCk7CisgIyBkZWZpbmUgUlNBX0ZfUlNBX0NIRUNLX0tFWSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDEyMworICMgZGVmaW5lIFJTQV9GX1JTQV9DSEVDS19LRVlfRVggICAgICAgICAg ICAgICAgICAgICAgICAgICAxNjAKKyAjIGRlZmluZSBSU0FfRl9SU0FfQ01TX0RFQ1JZUFQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMTU5CisrIyBkZWZpbmUgUlNBX0ZfUlNBX0dFTkVSQVRF X0tFWV9FWCAgICAgICAgICAgICAgICAgICAgICAgIDIwNAorICMgZGVmaW5lIFJTQV9GX1JTQV9J VEVNX1ZFUklGWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDgKKyAjIGRlZmluZSBSU0Ff Rl9SU0FfTUVUSF9EVVAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYxCisgIyBkZWZp bmUgUlNBX0ZfUlNBX01FVEhfTkVXICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2Mgor QEAgLTUwNyw5ICs1MDksMTUgQEAgaW50IEVSUl9sb2FkX1JTQV9zdHJpbmdzKHZvaWQpOworICMg ZGVmaW5lIFJTQV9GX1JTQV9QUklOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx MTUKKyAjIGRlZmluZSBSU0FfRl9SU0FfUFJJTlRfRlAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMTE2CisgIyBkZWZpbmUgUlNBX0ZfUlNBX1BSSVZfRU5DT0RFICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDEzOAorKyMgZGVmaW5lIFJTQV9GX1JTQV9QUklWQVRFX0RFQ1JZUFQgICAg ICAgICAgICAgICAgICAgICAgICAyMDAKKysjIGRlZmluZSBSU0FfRl9SU0FfUFJJVkFURV9FTkNS WVBUICAgICAgICAgICAgICAgICAgICAgICAgMjAxCisgIyBkZWZpbmUgUlNBX0ZfUlNBX1BTU19U T19DVFggICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1NQorICMgZGVmaW5lIFJTQV9GX1JT QV9QVUJfREVDT0RFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzkKKysjIGRlZmluZSBS U0FfRl9SU0FfUFVCTElDX0RFQ1JZUFQgICAgICAgICAgICAgICAgICAgICAgICAgMjAyCisrIyBk ZWZpbmUgUlNBX0ZfUlNBX1BVQkxJQ19FTkNSWVBUICAgICAgICAgICAgICAgICAgICAgICAgIDIw MworICMgZGVmaW5lIFJTQV9GX1JTQV9TRVRVUF9CTElORElORyAgICAgICAgICAgICAgICAgICAg ICAgICAxMzYKKysjIGRlZmluZSBSU0FfRl9SU0FfU0VUX0RFRkFVTFRfTUVUSE9EICAgICAgICAg ICAgICAgICAgICAgMjA1CisrIyBkZWZpbmUgUlNBX0ZfUlNBX1NFVF9NRVRIT0QgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDIwNAorICMgZGVmaW5lIFJTQV9GX1JTQV9TSUdOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAxMTcKKyAjIGRlZmluZSBSU0FfRl9SU0FfU0lHTl9B U04xX09DVEVUX1NUUklORyAgICAgICAgICAgICAgICAgMTE4CisgIyBkZWZpbmUgUlNBX0ZfUlNB X1ZFUklGWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExOQorQEAgLTU1Niw5ICs1 NjQsMTEgQEAgaW50IEVSUl9sb2FkX1JTQV9zdHJpbmdzKHZvaWQpOworICMgZGVmaW5lIFJTQV9S X0xBU1RfT0NURVRfSU5WQUxJRCAgICAgICAgICAgICAgICAgICAgICAgICAxMzQKKyAjIGRlZmlu ZSBSU0FfUl9NT0RVTFVTX1RPT19MQVJHRSAgICAgICAgICAgICAgICAgICAgICAgICAgMTA1Cisg IyBkZWZpbmUgUlNBX1JfTk9fUFVCTElDX0VYUE9ORU5UICAgICAgICAgICAgICAgICAgICAgICAg IDE0MAorKyMgZGVmaW5lIFJTQV9SX05PTl9GSVBTX1JTQV9NRVRIT0QgICAgICAgICAgICAgICAg ICAgICAgICAyMDAKKyAjIGRlZmluZSBSU0FfUl9OVUxMX0JFRk9SRV9CTE9DS19NSVNTSU5HICAg ICAgICAgICAgICAgICAgMTEzCisgIyBkZWZpbmUgUlNBX1JfTl9ET0VTX05PVF9FUVVBTF9QX1Eg ICAgICAgICAgICAgICAgICAgICAgIDEyNworICMgZGVmaW5lIFJTQV9SX09BRVBfREVDT0RJTkdf RVJST1IgICAgICAgICAgICAgICAgICAgICAgICAxMjEKKysjIGRlZmluZSBSU0FfUl9PUEVSQVRJ T05fTk9UX0FMTE9XRURfSU5fRklQU19NT0RFICAgICAgICAgMjAxCisgIyBkZWZpbmUgUlNBX1Jf T1BFUkFUSU9OX05PVF9TVVBQT1JURURfRk9SX1RISVNfS0VZVFlQRSAgIDE0OAorICMgZGVmaW5l IFJTQV9SX1BBRERJTkdfQ0hFQ0tfRkFJTEVEICAgICAgICAgICAgICAgICAgICAgICAxMTQKKyAj IGRlZmluZSBSU0FfUl9QS0NTX0RFQ09ESU5HX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAg MTU5CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wL3NzbC9zc2xfaW5pdC5jLmZpcHMgb3BlbnNzbC0x LjEuMC9zc2wvc3NsX2luaXQuYworLS0tIG9wZW5zc2wtMS4xLjAvc3NsL3NzbF9pbml0LmMuZmlw cwkyMDE2LTA4LTI1IDE3OjI5OjIyLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAv c3NsL3NzbF9pbml0LmMJMjAxNi0wOS0wOCAxNTo1Njo0Mi4zMDk0NTY2NTcgKzAyMDAKK0BAIC0y OCw2ICsyOCwxMCBAQCBERUZJTkVfUlVOX09OQ0VfU1RBVElDKG9zc2xfaW5pdF9zc2xfYmFzCisg ICAgIGZwcmludGYoc3RkZXJyLCAiT1BFTlNTTF9JTklUOiBvc3NsX2luaXRfc3NsX2Jhc2U6ICIK KyAgICAgICAgICAgICAiQWRkaW5nIFNTTCBjaXBoZXJzIGFuZCBkaWdlc3RzXG4iKTsKKyAjZW5k aWYKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmICghRklQU19tb2RlKCkpIHsKKysjZW5k aWYKKysKKyAjaWZuZGVmIE9QRU5TU0xfTk9fREVTCisgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9k ZXNfY2JjKCkpOworICAgICBFVlBfYWRkX2NpcGhlcihFVlBfZGVzX2VkZTNfY2JjKCkpOworQEAg LTg0LDYgKzg4LDMxIEBAIERFRklORV9SVU5fT05DRV9TVEFUSUMob3NzbF9pbml0X3NzbF9iYXMK KyAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTI1NigpKTsKKyAgICAgRVZQX2FkZF9kaWdlc3Qo RVZQX3NoYTM4NCgpKTsKKyAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTUxMigpKTsKKysjaWZk ZWYgT1BFTlNTTF9GSVBTCisrICAgIH0gZWxzZSB7CisrIyBpZm5kZWYgT1BFTlNTTF9OT19ERVMK KysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9kZXNfZWRlM19jYmMoKSk7CisrIyBlbmRpZgor KyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfY2JjKCkpOworKyAgICAgICAgRVZQ X2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfY2JjKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIo RVZQX2Flc18yNTZfY2JjKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhf Z2NtKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfZ2NtKCkpOworKyAg ICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfY2NtKCkpOworKyAgICAgICAgRVZQX2Fk ZF9jaXBoZXIoRVZQX2Flc18yNTZfY2NtKCkpOworKyMgaWZuZGVmIE9QRU5TU0xfTk9fTUQ1Cisr ICAgICAgICAvKiBuZWVkZWQgZXZlbiBpbiB0aGUgRklQUyBtb2RlIGZvciBUTFMtMS4wICovCisr ICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfbWQ1X3NoYTEoKSk7CisrIyBlbmRpZgorKyAgICAg ICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTEoKSk7IC8qIFJTQSB3aXRoIHNoYTEgKi8KKysgICAg ICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX3NoYTEsICJzc2wzLXNoYTEiKTsKKysgICAgICAg IEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX3NoYTFXaXRoUlNBRW5jcnlwdGlvbiwgU05fc2hhMVdp dGhSU0EpOworKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTIyNCgpKTsKKysgICAgICAg IEVWUF9hZGRfZGlnZXN0KEVWUF9zaGEyNTYoKSk7CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdChF VlBfc2hhMzg0KCkpOworKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTUxMigpKTsKKysg ICAgfQorKyNlbmRpZgorICNpZm5kZWYgT1BFTlNTTF9OT19DT01QCisgIyBpZmRlZiBPUEVOU1NM X0lOSVRfREVCVUcKKyAgICAgZnByaW50ZihzdGRlcnIsICJPUEVOU1NMX0lOSVQ6IG9zc2xfaW5p dF9zc2xfYmFzZTogIgorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC90ZXN0L2RzYXRlc3QuYy5maXBz IG9wZW5zc2wtMS4xLjAvdGVzdC9kc2F0ZXN0LmMKKy0tLSBvcGVuc3NsLTEuMS4wL3Rlc3QvZHNh dGVzdC5jLmZpcHMJMjAxNi0wOC0yNSAxNzoyOToyMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVu c3NsLTEuMS4wL3Rlc3QvZHNhdGVzdC5jCTIwMTYtMDktMDggMTE6Mzc6MzguNzQ3NDYwMjA5ICsw MjAwCitAQCAtMzIsNDEgKzMyLDQyIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p CisgCisgc3RhdGljIGludCBkc2FfY2IoaW50IHAsIGludCBuLCBCTl9HRU5DQiAqYXJnKTsKKyAK Ky0vKgorLSAqIHNlZWQsIG91dF9wLCBvdXRfcSwgb3V0X2cgYXJlIHRha2VuIGZyb20gdGhlIHVw ZGF0ZWQgQXBwZW5kaXggNSB0byBGSVBTCistICogUFVCIDE4NiBhbmQgYWxzbyBhcHBlYXIgaW4g QXBwZW5kaXggNSB0byBGSVBTIFBJQiAxODYtMQorLSAqLworIHN0YXRpYyB1bnNpZ25lZCBjaGFy IHNlZWRbMjBdID0geworLSAgICAweGQ1LCAweDAxLCAweDRlLCAweDRiLCAweDYwLCAweGVmLCAw eDJiLCAweGE4LCAweGI2LCAweDIxLCAweDFiLCAweDQwLAorLSAgICAweDYyLCAweGJhLCAweDMy LCAweDI0LCAweGUwLCAweDQyLCAweDdkLCAweGQzLAorKyAgICAweDAyLCAweDQ3LCAweDExLCAw eDkyLCAweDExLCAweDg4LCAweEM4LCAweEZCLCAweEFGLCAweDQ4LCAweDRDLCAweDYyLAorKyAg ICAweERGLCAweEE1LCAweEJFLCAweEEwLCAweEE0LCAweDNDLCAweDU2LCAweEUzLAorIH07Cisg Cisgc3RhdGljIHVuc2lnbmVkIGNoYXIgb3V0X3BbXSA9IHsKKy0gICAgMHg4ZCwgMHhmMiwgMHhh NCwgMHg5NCwgMHg0OSwgMHgyMiwgMHg3NiwgMHhhYSwKKy0gICAgMHgzZCwgMHgyNSwgMHg3NSwg MHg5YiwgMHhiMCwgMHg2OCwgMHg2OSwgMHhjYiwKKy0gICAgMHhlYSwgMHhjMCwgMHhkOCwgMHgz YSwgMHhmYiwgMHg4ZCwgMHgwYywgMHhmNywKKy0gICAgMHhjYiwgMHhiOCwgMHgzMiwgMHg0Ziwg MHgwZCwgMHg3OCwgMHg4MiwgMHhlNSwKKy0gICAgMHhkMCwgMHg3NiwgMHgyZiwgMHhjNSwgMHhi NywgMHgyMSwgMHgwZSwgMHhhZiwKKy0gICAgMHhjMiwgMHhlOSwgMHhhZCwgMHhhYywgMHgzMiwg MHhhYiwgMHg3YSwgMHhhYywKKy0gICAgMHg0OSwgMHg2OSwgMHgzZCwgMHhmYiwgMHhmOCwgMHgz NywgMHgyNCwgMHhjMiwKKy0gICAgMHhlYywgMHgwNywgMHgzNiwgMHhlZSwgMHgzMSwgMHhjOCwg MHgwMiwgMHg5MSwKKysgICAgMHhBQywgMHhDQiwgMHgxRSwgMHg2MywgMHg2MCwgMHg2OSwgMHgw QywgMHhGQiwgMHgwNiwgMHgxOSwgMHg2OCwgMHgzRSwKKysgICAgMHhBNSwgMHgwMSwgMHg1QSwg MHhBMiwgMHgxNSwgMHg1QywgMHhFMiwgMHg5OSwgMHgyRCwgMHhENSwgMHgzMCwgMHg5OSwKKysg ICAgMHg3RSwgMHg1RiwgMHg4RCwgMHhFMiwgMHhGNywgMHhDNiwgMHgyRSwgMHg4RCwgMHhBMywg MHg5RiwgMHg1OCwgMHhBRCwKKysgICAgMHhENiwgMHhBOSwgMHg3RCwgMHgwRSwgMHgwRCwgMHg5 NSwgMHg1MywgMHhBNiwgMHg3MSwgMHgzQSwgMHhERSwgMHhBQiwKKysgICAgMHhBQywgMHhFOSwg MHhGNCwgMHgzNiwgMHg1NSwgMHg5RSwgMHhCOSwgMHhENiwgMHg5MywgMHhCRiwgMHhGMywgMHgx OCwKKysgICAgMHgxQywgMHgxNCwgMHg3QiwgMHhBNSwgMHg0MiwgMHgyRSwgMHhDRCwgMHgwMCwg MHhFQiwgMHgzNSwgMHgzQiwgMHgxQiwKKysgICAgMHhBOCwgMHg1MSwgMHhCQiwgMHhFMSwgMHg1 OCwgMHg0MiwgMHg4NSwgMHg4NCwgMHgyMiwgMHhBNywgMHg5NywgMHg1RSwKKysgICAgMHg5OSwg MHg2RiwgMHgzOCwgMHgyMCwgMHhCRCwgMHg5RCwgMHhCNiwgMHhEOSwgMHgzMywgMHgzNywgMHgy QSwgMHhGRCwKKysgICAgMHhCQiwgMHhENCwgMHhCQywgMHgwQywgMHgyQSwgMHg2NywgMHhDQiwg MHg5RiwgMHhCQiwgMHhERiwgMHhGOSwgMHg5MywKKysgICAgMHhBQSwgMHhENiwgMHhGMCwgMHhE NiwgMHg5NSwgMHgwQiwgMHg1RCwgMHg2NSwgMHgxNCwgMHhEMCwgMHgxOCwgMHg5RCwKKysgICAg MHhDNiwgMHhBRiwgMHhGMCwgMHhDNiwgMHgzNywgMHg3QywgMHhGMywgMHg1RiwKKyB9OworIAor IHN0YXRpYyB1bnNpZ25lZCBjaGFyIG91dF9xW10gPSB7CistICAgIDB4YzcsIDB4NzMsIDB4MjEs IDB4OGMsIDB4NzMsIDB4N2UsIDB4YzgsIDB4ZWUsCistICAgIDB4OTksIDB4M2IsIDB4NGYsIDB4 MmQsIDB4ZWQsIDB4MzAsIDB4ZjQsIDB4OGUsCistICAgIDB4ZGEsIDB4Y2UsIDB4OTEsIDB4NWYs CisrICAgIDB4RTMsIDB4OEUsIDB4NUUsIDB4NkQsIDB4QkYsIDB4MkIsIDB4NzksIDB4RjgsIDB4 QzUsIDB4NEIsIDB4ODksIDB4OEIsCisrICAgIDB4QkEsIDB4MkQsIDB4OTEsIDB4QzMsIDB4NkMs IDB4ODAsIDB4QUMsIDB4ODcsCisgfTsKKyAKKyBzdGF0aWMgdW5zaWduZWQgY2hhciBvdXRfZ1td ID0geworLSAgICAweDYyLCAweDZkLCAweDAyLCAweDc4LCAweDM5LCAweGVhLCAweDBhLCAweDEz LAorLSAgICAweDQxLCAweDMxLCAweDYzLCAweGE1LCAweDViLCAweDRjLCAweGI1LCAweDAwLAor LSAgICAweDI5LCAweDlkLCAweDU1LCAweDIyLCAweDk1LCAweDZjLCAweGVmLCAweGNiLAorLSAg ICAweDNiLCAweGZmLCAweDEwLCAweGYzLCAweDk5LCAweGNlLCAweDJjLCAweDJlLAorLSAgICAw eDcxLCAweGNiLCAweDlkLCAweGU1LCAweGZhLCAweDI0LCAweGJhLCAweGJmLAorLSAgICAweDU4 LCAweGU1LCAweGI3LCAweDk1LCAweDIxLCAweDkyLCAweDVjLCAweDljLAorLSAgICAweGM0LCAw eDJlLCAweDlmLCAweDZmLCAweDQ2LCAweDRiLCAweDA4LCAweDhjLAorLSAgICAweGM1LCAweDcy LCAweGFmLCAweDUzLCAweGU2LCAweGQ3LCAweDg4LCAweDAyLAorKyAgICAweDQyLCAweDRBLCAw eDA0LCAweDRFLCAweDc5LCAweEI0LCAweDk5LCAweDdGLCAweEZELCAweDU4LCAweDM2LCAweDJD LAorKyAgICAweDFCLCAweDVGLCAweDE4LCAweDdFLCAweDBELCAweENDLCAweEFCLCAweDgxLCAw eEM5LCAweDVELCAweDEwLCAweENFLAorKyAgICAweDRFLCAweDgwLCAweDdFLCAweDU4LCAweEI0 LCAweDM0LCAweDNGLCAweEE3LCAweDQ1LCAweEM3LCAweEFBLCAweDM2LAorKyAgICAweDI0LCAw eDQyLCAweEE5LCAweDNCLCAweEU4LCAweDBFLCAweDA0LCAweDAyLCAweDJELCAweEZCLCAweEE2 LCAweDEzLAorKyAgICAweEI5LCAweEI1LCAweDE1LCAweEE1LCAweDU2LCAweDA3LCAweDM1LCAw eEU0LCAweDAzLCAweEI2LCAweDc5LCAweDdDLAorKyAgICAweDYyLCAweERELCAweERGLCAweDNG LCAweDcxLCAweDNBLCAweDlELCAweDhCLCAweEM0LCAweEY2LCAweEU3LCAweDFELAorKyAgICAw eDUyLCAweEE4LCAweEE5LCAweDQzLCAweDFELCAweDMzLCAweDUxLCAweDg4LCAweDM5LCAweEJE LCAweDczLCAweEU5LAorKyAgICAweDVGLCAweEJFLCAweDgyLCAweDQ5LCAweDI3LCAweEU2LCAw eEI1LCAweDUzLCAweEMxLCAweDM4LCAweEFDLCAweDJGLAorKyAgICAweDZELCAweDk3LCAweDZD LCAweEVCLCAweDY3LCAweEMxLCAweDVGLCAweDY3LCAweEY4LCAweDM1LCAweDA1LCAweDVFLAor KyAgICAweEQ1LCAweDY4LCAweDgwLCAweEFBLCAweDk2LCAweENBLCAweDBCLCAweDhBLCAweEU2 LCAweEYxLCAweEIxLCAweDQxLAorKyAgICAweEM2LCAweDc1LCAweDk0LCAweDBBLCAweDBBLCAw eDJBLCAweEZBLCAweDI5LAorIH07CisgCisgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc3Ry MVtdID0gIjEyMzQ1Njc4OTAxMjM0NTY3ODkwIjsKK0BAIC0xMDIsNyArMTAzLDcgQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgICAgZ290byBlbmQ7CisgCisgICAgIEJO X0dFTkNCX3NldChjYiwgZHNhX2NiLCBiaW9fZXJyKTsKKy0gICAgaWYgKCgoZHNhID0gRFNBX25l dygpKSA9PSBOVUxMKSB8fCAhRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXgoZHNhLCA1MTIsCisr ICAgIGlmICgoKGRzYSA9IERTQV9uZXcoKSkgPT0gTlVMTCkgfHwgIURTQV9nZW5lcmF0ZV9wYXJh bWV0ZXJzX2V4KGRzYSwgMTAyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlZCwgMjAsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZj b3VudGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmaCwgY2IpKQorQEAgLTExNiw4ICsxMTcsOCBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgIEJJT19wcmludGYoYmlvX2VyciwgIlxuY291 bnRlcj0lZCBoPSVsZFxuIiwgY291bnRlciwgaCk7CisgCisgICAgIERTQV9wcmludChiaW9fZXJy LCBkc2EsIDApOworLSAgICBpZiAoY291bnRlciAhPSAxMDUpIHsKKy0gICAgICAgIEJJT19wcmlu dGYoYmlvX2VyciwgImNvdW50ZXIgc2hvdWxkIGJlIDEwNVxuIik7CisrICAgIGlmIChjb3VudGVy ICE9IDIzOSkgeworKyAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiY291bnRlciBzaG91bGQg YmUgMjM5XG4iKTsKKyAgICAgICAgIGdvdG8gZW5kOworICAgICB9CisgICAgIGlmIChoICE9IDIp IHsKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjAvdXRpbC9ta2RlZi5wbC5maXBzIG9wZW5zc2wtMS4x LjAvdXRpbC9ta2RlZi5wbAorLS0tIG9wZW5zc2wtMS4xLjAvdXRpbC9ta2RlZi5wbC5maXBzCTIw MTYtMDgtMjUgMTc6Mjk6MjMuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC91dGls L21rZGVmLnBsCTIwMTYtMDktMDggMTE6Mzc6MzguNzQ4NDYwMjMxICswMjAwCitAQCAtMzA3LDYg KzMwNyw4IEBAICRjcnlwdG8uPSIgaW5jbHVkZS9vcGVuc3NsL21vZGVzLmgiOworICRjcnlwdG8u PSIgaW5jbHVkZS9vcGVuc3NsL2FzeW5jLmgiOworICRjcnlwdG8uPSIgaW5jbHVkZS9vcGVuc3Ns L2N0LmgiOworICRjcnlwdG8uPSIgaW5jbHVkZS9vcGVuc3NsL2tkZi5oIjsKKyskY3J5cHRvLj0i IGluY2x1ZGUvb3BlbnNzbC9maXBzLmgiOworKyRjcnlwdG8uPSIgaW5jbHVkZS9vcGVuc3NsL2Zp cHNfcmFuZC5oIjsKKyAKKyBteSAkc3ltaGFja3M9ImluY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5o IjsKKyAKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMS4wLWlzc3Vlci1oYXNoLnBhdGNoIGIvb3Bl bnNzbC0xLjEuMC1pc3N1ZXItaGFzaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4xYjgyNGUwCi0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjEuMC1pc3N1ZXIt aGFzaC5wYXRjaApAQCAtMCwwICsxLDExIEBACitkaWZmIC11cCBvcGVuc3NsLTEuMS4wLXByZTUv Y3J5cHRvL3g1MDkveDUwOV9jbXAuYy5pc3N1ZXItaGFzaCBvcGVuc3NsLTEuMS4wLXByZTUvY3J5 cHRvL3g1MDkveDUwOV9jbXAuYworLS0tIG9wZW5zc2wtMS4xLjAtcHJlNS9jcnlwdG8veDUwOS94 NTA5X2NtcC5jLmlzc3Vlci1oYXNoCTIwMTYtMDctMTggMTU6MTY6MzIuNzg4ODgxMTAwICswMjAw CisrKysgb3BlbnNzbC0xLjEuMC1wcmU1L2NyeXB0by94NTA5L3g1MDlfY21wLmMJMjAxNi0wNy0x OCAxNToxNzoxNi42NzE4NzE4NDAgKzAyMDAKK0BAIC04Nyw2ICs4Nyw3IEBAIHVuc2lnbmVkIGxv bmcgWDUwOV9pc3N1ZXJfYW5kX3NlcmlhbF9oYXMKKyAKKyAgICAgaWYgKGN0eCA9PSBOVUxMKQor ICAgICAgICAgZ290byBlcnI7CisrICAgIEVWUF9NRF9DVFhfc2V0X2ZsYWdzKGN0eCwgRVZQX01E X0NUWF9GTEFHX05PTl9GSVBTX0FMTE9XKTsKKyAgICAgZiA9IFg1MDlfTkFNRV9vbmVsaW5lKGEt PmNlcnRfaW5mby5pc3N1ZXIsIE5VTEwsIDApOworICAgICBpZiAoIUVWUF9EaWdlc3RJbml0X2V4 KGN0eCwgRVZQX21kNSgpLCBOVUxMKSkKKyAgICAgICAgIGdvdG8gZXJyOwoKZGlmZiAtLWdpdCBh L29wZW5zc2wtMS4xLjAtbWFuZml4LnBhdGNoIGIvb3BlbnNzbC0xLjEuMC1tYW5maXgucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ3ZDU3YQotLS0gL2Rldi9udWxs CisrKyBiL29wZW5zc2wtMS4xLjAtbWFuZml4LnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK2RpZmYg LXVwIG9wZW5zc2wtMS4xLjAtcHJlNS9kb2MvYXBwcy9lYy5wb2QubWFuZml4IG9wZW5zc2wtMS4x LjAtcHJlNS9kb2MvYXBwcy9lYy5wb2QKKy0tLSBvcGVuc3NsLTEuMS4wLXByZTUvZG9jL2FwcHMv ZWMucG9kLm1hbmZpeAkyMDE2LTA0LTE5IDE2OjU3OjU1LjAwMDAwMDAwMCArMDIwMAorKysrIG9w ZW5zc2wtMS4xLjAtcHJlNS9kb2MvYXBwcy9lYy5wb2QJMjAxNi0wNy0yMCAxNToxMzowNy44NzQ2 Nzg0NjcgKzAyMDAKK0BAIC0xMDAsMTAgKzEwMCw2IEBAIHByaW50cyBvdXQgdGhlIHB1YmxpYywg cHJpdmF0ZSBrZXkgY29tcG8KKyAKKyB0aGlzIG9wdGlvbiBwcmV2ZW50cyBvdXRwdXQgb2YgdGhl IGVuY29kZWQgdmVyc2lvbiBvZiB0aGUga2V5LgorIAorLT1pdGVtIEI8LW1vZHVsdXM+CistCist dGhpcyBvcHRpb24gcHJpbnRzIG91dCB0aGUgdmFsdWUgb2YgdGhlIHB1YmxpYyBrZXkgY29tcG9u ZW50IG9mIHRoZSBrZXkuCistCisgPWl0ZW0gQjwtcHViaW4+CisgCisgYnkgZGVmYXVsdCBhIHBy aXZhdGUga2V5IGlzIHJlYWQgZnJvbSB0aGUgaW5wdXQgZmlsZTogd2l0aCB0aGlzIG9wdGlvbiBh CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wLXByZTUvZG9jL2FwcHMvb3BlbnNzbC5wb2QubWFuZml4 IG9wZW5zc2wtMS4xLjAtcHJlNS9kb2MvYXBwcy9vcGVuc3NsLnBvZAorLS0tIG9wZW5zc2wtMS4x LjAtcHJlNS9kb2MvYXBwcy9vcGVuc3NsLnBvZC5tYW5maXgJMjAxNi0wNC0xOSAxNjo1Nzo1NS4w MDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wLXByZTUvZG9jL2FwcHMvb3BlbnNzbC5w b2QJMjAxNi0wNy0yMCAxNToxNDo1Ny41OTYxNjMwNDYgKzAyMDAKK0BAIC0xNjMsNyArMTYzLDcg QEAgQ3JlYXRlIG9yIGV4YW1pbmUgYSBuZXRzY2FwZSBjZXJ0aWZpY2F0ZQorIAorIE9ubGluZSBD ZXJ0aWZpY2F0ZSBTdGF0dXMgUHJvdG9jb2wgdXRpbGl0eS4KKyAKKy09aXRlbSBMPEI8cGFzc3dk PnxwYXNzd2QoMSk+CisrPWl0ZW0gTDxCPHBhc3N3ZD58c3NscGFzc3dkKDEpPgorIAorIEdlbmVy YXRpb24gb2YgaGFzaGVkIHBhc3N3b3Jkcy4KKyAKK0BAIC0xODcsNyArMTg3LDcgQEAgUHVibGlj IGtleSBhbGdvcml0aG0gcGFyYW1ldGVyIG1hbmFnZW1lbgorIAorIFB1YmxpYyBrZXkgYWxnb3Jp dGhtIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9uIHV0aWxpdHkuCisgCistPWl0ZW0gTDxCPHJhbmQ+ fHJhbmQoMSk+CisrPWl0ZW0gTDxCPHJhbmQ+fHNzbHJhbmQoMSk+CisgCisgR2VuZXJhdGUgcHNl dWRvLXJhbmRvbSBieXRlcy4KKyAKK0BAIC00MDEsOSArNDAxLDkgQEAgTDxjcmwoMSk+LCBMPGNy bDJwa2NzNygxKT4sIEw8ZGdzdCgxKT4sCisgTDxkaHBhcmFtKDEpPiwgTDxkc2EoMSk+LCBMPGRz YXBhcmFtKDEpPiwKKyBMPGVuYygxKT4sIEw8ZW5naW5lKDEpPiwgTDxnZW5kc2EoMSk+LCBMPGdl bnBrZXkoMSk+LAorIEw8Z2VucnNhKDEpPiwgTDxuc2VxKDEpPiwgTDxvcGVuc3NsKDEpPiwKKy1M PHBhc3N3ZCgxKT4sCisrTDxzc2xwYXNzd2QoMSk+LAorIEw8cGtjczEyKDEpPiwgTDxwa2NzNygx KT4sIEw8cGtjczgoMSk+LAorLUw8cmFuZCgxKT4sIEw8cmVxKDEpPiwgTDxyc2EoMSk+LAorK0w8 c3NscmFuZCgxKT4sIEw8cmVxKDEpPiwgTDxyc2EoMSk+LAorIEw8cnNhdXRsKDEpPiwgTDxzX2Ns aWVudCgxKT4sCisgTDxzX3NlcnZlcigxKT4sIEw8c190aW1lKDEpPiwKKyBMPHNtaW1lKDEpPiwg TDxzcGthYygxKT4sCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjEuMC1uby1odG1sLnBhdGNoIGIv b3BlbnNzbC0xLjEuMC1uby1odG1sLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmY2YTk0MWUKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEuMS4wLW5vLWh0bWwu cGF0Y2gKQEAgLTAsMCArMSwxMiBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC1wcmU1L0NvbmZp Z3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbC5ub2h0bWwgb3BlbnNzbC0xLjEuMC1wcmU1L0Nv bmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbAorLS0tIG9wZW5zc2wtMS4xLjAtcHJlNS9D b25maWd1cmF0aW9ucy91bml4LU1ha2VmaWxlLnRtcGwubm8taHRtbAkyMDE2LTA0LTE5IDE2OjU3 OjUyLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAtcHJlNS9Db25maWd1cmF0aW9u cy91bml4LU1ha2VmaWxlLnRtcGwJMjAxNi0wNy0xOCAxMzo1ODo1NS4wNjAxMDYyNDMgKzAyMDAK K0BAIC0yODgsNyArMjg4LDcgQEAgaW5zdGFsbF9zdzogYWxsIGluc3RhbGxfZGV2IGluc3RhbGxf ZW5naQorIAorIHVuaW5zdGFsbF9zdzogdW5pbnN0YWxsX3J1bnRpbWUgdW5pbnN0YWxsX2VuZ2lu ZXMgdW5pbnN0YWxsX2RldgorIAorLWluc3RhbGxfZG9jczogaW5zdGFsbF9tYW5fZG9jcyBpbnN0 YWxsX2h0bWxfZG9jcworK2luc3RhbGxfZG9jczogaW5zdGFsbF9tYW5fZG9jcworIAorIHVuaW5z dGFsbF9kb2NzOiB1bmluc3RhbGxfbWFuX2RvY3MgdW5pbnN0YWxsX2h0bWxfZG9jcworIAkkKFJN KSAtciAtdiAkKERFU1RESVIpJChET0NESVIpCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjEuMC1u by1tZDUtdmVyaWZ5LnBhdGNoIGIvb3BlbnNzbC0xLjEuMC1uby1tZDUtdmVyaWZ5LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0OTA3MjkKLS0tIC9kZXYvbnVsbAor KysgYi9vcGVuc3NsLTEuMS4wLW5vLW1kNS12ZXJpZnkucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAor ZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC1wcmU2L2NyeXB0by9hc24xL2FfdmVyaWZ5LmMubm8tbWQ1 LXZlcmlmeSBvcGVuc3NsLTEuMS4wLXByZTYvY3J5cHRvL2FzbjEvYV92ZXJpZnkuYworLS0tIG9w ZW5zc2wtMS4xLjAtcHJlNi9jcnlwdG8vYXNuMS9hX3ZlcmlmeS5jLm5vLW1kNS12ZXJpZnkJMjAx Ni0wOC0wNCAxNjowMDo0NS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wLXByZTYv Y3J5cHRvL2FzbjEvYV92ZXJpZnkuYwkyMDE2LTA4LTA4IDE2OjAxOjM4LjM4MjQyNDkyMiArMDIw MAorQEAgLTcsNiArNyw5IEBACisgICogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xp Y2Vuc2UuaHRtbAorICAqLworIAorKy8qIGZvciBzZWN1cmVfZ2V0ZW52ICovCisrI2RlZmluZSBf R05VX1NPVVJDRQorKworICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDx0aW1lLmg+Cisg CitAQCAtMTI5LDYgKzEzMiwxMSBAQCBpbnQgQVNOMV9pdGVtX3ZlcmlmeShjb25zdCBBU04xX0lU RU0gKml0CisgICAgICAgICBpZiAocmV0ICE9IDIpCisgICAgICAgICAgICAgZ290byBlcnI7Cisg ICAgICAgICByZXQgPSAtMTsKKysgICAgfSBlbHNlIGlmIChtZG5pZCA9PSBOSURfbWQ1CisrICAg ICAgICAgICAgICAgJiYgc2VjdXJlX2dldGVudigiT1BFTlNTTF9FTkFCTEVfTUQ1X1ZFUklGWSIp ID09IE5VTEwpIHsKKysgICAgICAgIEFTTjFlcnIoQVNOMV9GX0FTTjFfSVRFTV9WRVJJRlksCisr ICAgICAgICAgICAgICAgIEFTTjFfUl9VTktOT1dOX01FU1NBR0VfRElHRVNUX0FMR09SSVRITSk7 CisrICAgICAgICBnb3RvIGVycjsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIGNvbnN0IEVWUF9N RCAqdHlwZTsKKyAgICAgICAgIHR5cGUgPSBFVlBfZ2V0X2RpZ2VzdGJ5bmlkKG1kbmlkKTsKCmRp ZmYgLS1naXQgYS9vcGVuc3NsLTEuMS4wLW5vLXJwYXRoLnBhdGNoIGIvb3BlbnNzbC0xLjEuMC1u by1ycGF0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmIwZTg1 Ci0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjEuMC1uby1ycGF0aC5wYXRjaApAQCAtMCww ICsxLDEyIEBACitkaWZmIC11cCBvcGVuc3NsLTEuMS4wLXByZTUvTWFrZWZpbGUuc2hhcmVkLm5v LXJwYXRoIG9wZW5zc2wtMS4xLjAtcHJlNS9NYWtlZmlsZS5zaGFyZWQKKy0tLSBvcGVuc3NsLTEu MS4wLXByZTUvTWFrZWZpbGUuc2hhcmVkLm5vLXJwYXRoCTIwMTYtMDctMTggMTQ6NDE6NTMuMDgx MDAyMDAyICswMjAwCisrKysgb3BlbnNzbC0xLjEuMC1wcmU1L01ha2VmaWxlLnNoYXJlZAkyMDE2 LTA3LTE4IDE0OjQzOjA4Ljc5MDQ2NzU4NCArMDIwMAorQEAgLTE3NSw3ICsxNzUsNyBAQCBET19H TlVfU089XAorIAlBTExTWU1TRkxBR1M9Jy1XbCwtLXdob2xlLWFyY2hpdmUnOyBcCisgCU5PQUxM U1lNU0ZMQUdTPSctV2wsLS1uby13aG9sZS1hcmNoaXZlJzsgXAorIAkkKERPX0dOVV9TT19DT01N T04pCistRE9fR05VX0FQUD1MREZMQUdTPSIkKENGTEFHUykgJChMREZMQUdTKSAtV2wsLXJwYXRo LCQoTElCUlBBVEgpIgorK0RPX0dOVV9BUFA9TERGTEFHUz0iJChDRkxBR1MpICQoTERGTEFHUyki CisgCisgI1RoaXMgaXMgcmF0aGVyIHNwZWNpYWwuICBJdCdzIGEgc3BlY2lhbCB0YXJnZXQgd2l0 aCB3aGljaCBvbmUgY2FuIGxpbmsKKyAjYXBwbGljYXRpb25zIHdpdGhvdXQgYm90aGVyaW5nIHdp dGggYW55IGZlYXR1cmVzIHRoYXQgaGF2ZSBhbnl0aGluZyB0bwoKZGlmZiAtLWdpdCBhL29wZW5z c2wtMS4xLjAtc2VjdXJlLWdldGVudi5wYXRjaCBiL29wZW5zc2wtMS4xLjAtc2VjdXJlLWdldGVu di5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjczNDk5Ci0tLSAv ZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjEuMC1zZWN1cmUtZ2V0ZW52LnBhdGNoCkBAIC0wLDAg KzEsMTM5IEBACitkaWZmIC11cCBvcGVuc3NsLTEuMS4wYi9jcnlwdG8vY29uZi9jb25mX2FwaS5j LnNlY3VyZS1nZXRlbnYgb3BlbnNzbC0xLjEuMGIvY3J5cHRvL2NvbmYvY29uZl9hcGkuYworLS0t IG9wZW5zc2wtMS4xLjBiL2NyeXB0by9jb25mL2NvbmZfYXBpLmMuc2VjdXJlLWdldGVudgkyMDE2 LTA5LTI2IDExOjQ2OjA1LjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjBiL2NyeXB0 by9jb25mL2NvbmZfYXBpLmMJMjAxNi0wOS0yNiAxNToxOToxOS40MjA3MDU1MDEgKzAyMDAKK0BA IC05LDYgKzksOCBAQAorIAorIC8qIFBhcnQgb2YgdGhlIGNvZGUgaW4gaGVyZSB3YXMgb3JpZ2lu YWxseSBpbiBjb25mLmMsIHdoaWNoIGlzIG5vdyByZW1vdmVkICovCisgCisrLyogZm9yIHNlY3Vy ZV9nZXRlbnYgKi8KKysjZGVmaW5lIF9HTlVfU09VUkNFCisgI2luY2x1ZGUgPHN0ZGxpYi5oPgor ICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8b3BlbnNzbC9jb25mLmg+CitAQCAtODIs NyArODQsNyBAQCBjaGFyICpfQ09ORl9nZXRfc3RyaW5nKGNvbnN0IENPTkYgKmNvbmYsCisgICAg ICAgICAgICAgaWYgKHYgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgcmV0dXJuICh2LT52YWx1 ZSk7CisgICAgICAgICAgICAgaWYgKHN0cmNtcChzZWN0aW9uLCAiRU5WIikgPT0gMCkgeworLSAg ICAgICAgICAgICAgICBwID0gZ2V0ZW52KG5hbWUpOworKyAgICAgICAgICAgICAgICBwID0gc2Vj dXJlX2dldGVudihuYW1lKTsKKyAgICAgICAgICAgICAgICAgaWYgKHAgIT0gTlVMTCkKKyAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAocCk7CisgICAgICAgICAgICAgfQorQEAgLTk1LDcgKzk3 LDcgQEAgY2hhciAqX0NPTkZfZ2V0X3N0cmluZyhjb25zdCBDT05GICpjb25mLAorICAgICAgICAg ZWxzZQorICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7CisgICAgIH0gZWxzZQorLSAgICAgICAg cmV0dXJuIChnZXRlbnYobmFtZSkpOworKyAgICAgICAgcmV0dXJuIChzZWN1cmVfZ2V0ZW52KG5h bWUpKTsKKyB9CisgCisgc3RhdGljIHVuc2lnbmVkIGxvbmcgY29uZl92YWx1ZV9oYXNoKGNvbnN0 IENPTkZfVkFMVUUgKnYpCitkaWZmIC11cCBvcGVuc3NsLTEuMS4wYi9jcnlwdG8vY29uZi9jb25m X21vZC5jLnNlY3VyZS1nZXRlbnYgb3BlbnNzbC0xLjEuMGIvY3J5cHRvL2NvbmYvY29uZl9tb2Qu YworLS0tIG9wZW5zc2wtMS4xLjBiL2NyeXB0by9jb25mL2NvbmZfbW9kLmMuc2VjdXJlLWdldGVu dgkyMDE2LTA5LTI2IDExOjQ2OjA1LjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjBi L2NyeXB0by9jb25mL2NvbmZfbW9kLmMJMjAxNi0wOS0yNiAxNToxOToxOS40MjE3MDU1MjQgKzAy MDAKK0BAIC03LDYgKzcsOCBAQAorICAqIGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9s aWNlbnNlLmh0bWwKKyAgKi8KKyAKKysvKiBmb3Igc2VjdXJlX2dldGVudiAqLworKyNkZWZpbmUg X0dOVV9TT1VSQ0UKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAj aW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KK0BAIC00NzgsNyArNDgwLDcgQEAgY2hhciAqQ09O Rl9nZXQxX2RlZmF1bHRfY29uZmlnX2ZpbGUodm9pZAorICAgICBjaGFyICpmaWxlOworICAgICBp bnQgbGVuOworIAorLSAgICBmaWxlID0gZ2V0ZW52KCJPUEVOU1NMX0NPTkYiKTsKKysgICAgZmls ZSA9IHNlY3VyZV9nZXRlbnYoIk9QRU5TU0xfQ09ORiIpOworICAgICBpZiAoZmlsZSkKKyAgICAg ICAgIHJldHVybiBPUEVOU1NMX3N0cmR1cChmaWxlKTsKKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4x LjBiL2NyeXB0by9lbmdpbmUvZW5nX2xpc3QuYy5zZWN1cmUtZ2V0ZW52IG9wZW5zc2wtMS4xLjBi L2NyeXB0by9lbmdpbmUvZW5nX2xpc3QuYworLS0tIG9wZW5zc2wtMS4xLjBiL2NyeXB0by9lbmdp bmUvZW5nX2xpc3QuYy5zZWN1cmUtZ2V0ZW52CTIwMTYtMDktMjYgMTE6NDY6MDUuMDAwMDAwMDAw ICswMjAwCisrKysgb3BlbnNzbC0xLjEuMGIvY3J5cHRvL2VuZ2luZS9lbmdfbGlzdC5jCTIwMTYt MDktMjYgMTU6MTk6MTkuNDIxNzA1NTI0ICswMjAwCitAQCAtMTMsNiArMTMsOCBAQAorICAqIFNV TiBNSUNST1NZU1RFTVMsIElOQy4sIGFuZCBjb250cmlidXRlZCB0byB0aGUgT3BlblNTTCBwcm9q ZWN0LgorICAqLworIAorKy8qIGZvciBzZWN1cmVfZ2V0ZW52ICovCisrI2RlZmluZSBfR05VX1NP VVJDRQorICNpbmNsdWRlICJlbmdfaW50LmgiCisgCisgLyoKK0BAIC0zMjIsNyArMzI0LDcgQEAg RU5HSU5FICpFTkdJTkVfYnlfaWQoY29uc3QgY2hhciAqaWQpCisgICAgICAqIFByZXZlbnQgaW5m aW5pdGUgcmVjdXJzaW9uIGlmIHdlJ3JlIGxvb2tpbmcgZm9yIHRoZSBkeW5hbWljIGVuZ2luZS4K KyAgICAgICovCisgICAgIGlmIChzdHJjbXAoaWQsICJkeW5hbWljIikpIHsKKy0gICAgICAgIGlm ICgobG9hZF9kaXIgPSBnZXRlbnYoIk9QRU5TU0xfRU5HSU5FUyIpKSA9PSAwKQorKyAgICAgICAg aWYgKChsb2FkX2RpciA9IHNlY3VyZV9nZXRlbnYoIk9QRU5TU0xfRU5HSU5FUyIpKSA9PSAwKQor ICAgICAgICAgICAgIGxvYWRfZGlyID0gRU5HSU5FU0RJUjsKKyAgICAgICAgIGl0ZXJhdG9yID0g RU5HSU5FX2J5X2lkKCJkeW5hbWljIik7CisgICAgICAgICBpZiAoIWl0ZXJhdG9yIHx8ICFFTkdJ TkVfY3RybF9jbWRfc3RyaW5nKGl0ZXJhdG9yLCAiSUQiLCBpZCwgMCkgfHwKK2RpZmYgLXVwIG9w ZW5zc2wtMS4xLjBiL2NyeXB0by9yYW5kL3JhbmRmaWxlLmMuc2VjdXJlLWdldGVudiBvcGVuc3Ns LTEuMS4wYi9jcnlwdG8vcmFuZC9yYW5kZmlsZS5jCistLS0gb3BlbnNzbC0xLjEuMGIvY3J5cHRv L3JhbmQvcmFuZGZpbGUuYy5zZWN1cmUtZ2V0ZW52CTIwMTYtMDktMjYgMTE6NDY6MDUuMDAwMDAw MDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMGIvY3J5cHRvL3JhbmQvcmFuZGZpbGUuYwkyMDE2 LTA5LTI2IDE1OjIyOjE3LjQyNzg4MjUxOCArMDIwMAorQEAgLTcsNiArNyw4IEBACisgICogaHR0 cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAqLworIAorKy8qIGZv ciBzZWN1cmVfZ2V0ZW52ICovCisrI2RlZmluZSBfR05VX1NPVVJDRQorICNpbmNsdWRlICJpbnRl cm5hbC9jcnlwdGxpYi5oIgorIAorICNpbmNsdWRlIDxlcnJuby5oPgorQEAgLTMxOSwxMCArMzIx LDEwIEBAIGNvbnN0IGNoYXIgKlJBTkRfZmlsZV9uYW1lKGNoYXIgKmJ1Ziwgc2kKKyAgICAgaWYg KE9QRU5TU0xfaXNzZXR1Z2lkKCkgIT0gMCkgeworICAgICAgICAgdXNlX3JhbmRmaWxlID0gMDsK KyAgICAgfSBlbHNlIHsKKy0gICAgICAgIHMgPSBnZXRlbnYoIlJBTkRGSUxFIik7CisrICAgICAg ICBzID0gc2VjdXJlX2dldGVudigiUkFOREZJTEUiKTsKKyAgICAgICAgIGlmIChzID09IE5VTEwg fHwgKnMgPT0gJ1wwJykgeworICAgICAgICAgICAgIHVzZV9yYW5kZmlsZSA9IDA7CistICAgICAg ICAgICAgcyA9IGdldGVudigiSE9NRSIpOworKyAgICAgICAgICAgIHMgPSBzZWN1cmVfZ2V0ZW52 KCJIT01FIik7CisgICAgICAgICB9CisgICAgIH0KKyAjZW5kaWYKK2RpZmYgLXVwIG9wZW5zc2wt MS4xLjBiL2NyeXB0by94NTA5L2J5X2Rpci5jLnNlY3VyZS1nZXRlbnYgb3BlbnNzbC0xLjEuMGIv Y3J5cHRvL3g1MDkvYnlfZGlyLmMKKy0tLSBvcGVuc3NsLTEuMS4wYi9jcnlwdG8veDUwOS9ieV9k aXIuYy5zZWN1cmUtZ2V0ZW52CTIwMTYtMDktMjYgMTE6NDY6MDYuMDAwMDAwMDAwICswMjAwCisr Kysgb3BlbnNzbC0xLjEuMGIvY3J5cHRvL3g1MDkvYnlfZGlyLmMJMjAxNi0wOS0yNiAxNToxOTox OS40MjE3MDU1MjQgKzAyMDAKK0BAIC03LDYgKzcsOCBAQAorICAqIGh0dHBzOi8vd3d3Lm9wZW5z c2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgKi8KKyAKKysvKiBmb3Igc2VjdXJlX2dldGVu diAqLworKyNkZWZpbmUgX0dOVV9TT1VSQ0UKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVk ZSA8dGltZS5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorQEAgLTgwLDcgKzgyLDcgQEAgc3RhdGlj IGludCBkaXJfY3RybChYNTA5X0xPT0tVUCAqY3R4LCBpbgorICAgICBzd2l0Y2ggKGNtZCkgewor ICAgICBjYXNlIFg1MDlfTF9BRERfRElSOgorICAgICAgICAgaWYgKGFyZ2wgPT0gWDUwOV9GSUxF VFlQRV9ERUZBVUxUKSB7CistICAgICAgICAgICAgZGlyID0gKGNoYXIgKilnZXRlbnYoWDUwOV9n ZXRfZGVmYXVsdF9jZXJ0X2Rpcl9lbnYoKSk7CisrICAgICAgICAgICAgZGlyID0gKGNoYXIgKilz ZWN1cmVfZ2V0ZW52KFg1MDlfZ2V0X2RlZmF1bHRfY2VydF9kaXJfZW52KCkpOworICAgICAgICAg ICAgIGlmIChkaXIpCisgICAgICAgICAgICAgICAgIHJldCA9IGFkZF9jZXJ0X2RpcihsZCwgZGly LCBYNTA5X0ZJTEVUWVBFX1BFTSk7CisgICAgICAgICAgICAgZWxzZQorZGlmZiAtdXAgb3BlbnNz bC0xLjEuMGIvY3J5cHRvL3g1MDkvYnlfZmlsZS5jLnNlY3VyZS1nZXRlbnYgb3BlbnNzbC0xLjEu MGIvY3J5cHRvL3g1MDkvYnlfZmlsZS5jCistLS0gb3BlbnNzbC0xLjEuMGIvY3J5cHRvL3g1MDkv YnlfZmlsZS5jLnNlY3VyZS1nZXRlbnYJMjAxNi0wOS0yNiAxMTo0NjowNi4wMDAwMDAwMDAgKzAy MDAKKysrKyBvcGVuc3NsLTEuMS4wYi9jcnlwdG8veDUwOS9ieV9maWxlLmMJMjAxNi0wOS0yNiAx NToxOToxOS40MjE3MDU1MjQgKzAyMDAKK0BAIC03LDYgKzcsOCBAQAorICAqIGh0dHBzOi8vd3d3 Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgKi8KKyAKKysvKiBmb3Igc2VjdXJl X2dldGVudiAqLworKyNkZWZpbmUgX0dOVV9TT1VSQ0UKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAj aW5jbHVkZSA8dGltZS5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorQEAgLTQ3LDcgKzQ5LDcgQEAg c3RhdGljIGludCBieV9maWxlX2N0cmwoWDUwOV9MT09LVVAgKmN0eAorICAgICBzd2l0Y2ggKGNt ZCkgeworICAgICBjYXNlIFg1MDlfTF9GSUxFX0xPQUQ6CisgICAgICAgICBpZiAoYXJnbCA9PSBY NTA5X0ZJTEVUWVBFX0RFRkFVTFQpIHsKKy0gICAgICAgICAgICBmaWxlID0gKGNoYXIgKilnZXRl bnYoWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2ZpbGVfZW52KCkpOworKyAgICAgICAgICAgIGZpbGUg PSAoY2hhciAqKXNlY3VyZV9nZXRlbnYoWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2ZpbGVfZW52KCkp OworICAgICAgICAgICAgIGlmIChmaWxlKQorICAgICAgICAgICAgICAgICBvayA9IChYNTA5X2xv YWRfY2VydF9jcmxfZmlsZShjdHgsIGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFg1MDlfRklMRVRZUEVfUEVNKSAhPSAwKTsKCmRpZmYgLS1naXQg YS9vcGVuc3NsLTEuMS4wLXN0YXJ0dGxzLXhtcHAucGF0Y2ggYi9vcGVuc3NsLTEuMS4wLXN0YXJ0 dGxzLXhtcHAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgzNDFi YQotLS0gL2Rldi9udWxsCisrKyBiL29wZW5zc2wtMS4xLjAtc3RhcnR0bHMteG1wcC5wYXRjaApA QCAtMCwwICsxLDI0IEBACitkaWZmIC11cCBvcGVuc3NsLTEuMS4wLXByZTUvYXBwcy9zX2NsaWVu dC5jLnhtcHAgb3BlbnNzbC0xLjEuMC1wcmU1L2FwcHMvc19jbGllbnQuYworLS0tIG9wZW5zc2wt MS4xLjAtcHJlNS9hcHBzL3NfY2xpZW50LmMueG1wcAkyMDE2LTA3LTIwIDE0OjUzOjM5LjAwODIz MzI4MSArMDIwMAorKysrIG9wZW5zc2wtMS4xLjAtcHJlNS9hcHBzL3NfY2xpZW50LmMJMjAxNi0w Ny0yMCAxNDo1NjoyNC40NTI5NjI4OTAgKzAyMDAKK0BAIC0xMzQsNiArMTM0LDggQEAKKyAgKiBP VEhFUldJU0UuCisgICovCisgCisrLyogZm9yIHN0cmNhc2VzdHIgKi8KKysjZGVmaW5lIF9HTlVf U09VUkNFCisgI2luY2x1ZGUgPGN0eXBlLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1 ZGUgPHN0ZGxpYi5oPgorQEAgLTIwMjMsOSArMjAyNSw5IEBAIGludCBzX2NsaWVudF9tYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgICAgICAgICAgICAgICAgIHhtcHBob3N0ID8g eG1wcGhvc3QgOiBob3N0KTsKKyAgICAgICAgICAgICBzZWVuID0gQklPX3JlYWQoc2JpbywgbWJ1 ZiwgQlVGU0laWik7CisgICAgICAgICAgICAgbWJ1ZltzZWVuXSA9IDA7CistICAgICAgICAgICAg d2hpbGUgKCFzdHJzdHIKKysgICAgICAgICAgICB3aGlsZSAoIXN0cmNhc2VzdHIKKyAgICAgICAg ICAgICAgICAgICAgKG1idWYsICI8c3RhcnR0bHMgeG1sbnM9J3VybjppZXRmOnBhcmFtczp4bWw6 bnM6eG1wcC10bHMnIikKKy0gICAgICAgICAgICAgICAgICAgJiYgIXN0cnN0cihtYnVmLAorKyAg ICAgICAgICAgICAgICAgICAmJiAhc3RyY2FzZXN0cihtYnVmLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICI8c3RhcnR0bHMgeG1sbnM9XCJ1cm46aWV0ZjpwYXJhbXM6eG1sOm5zOnht cHAtdGxzXCIiKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHNlZW4gPSBCSU9f cmVhZChzYmlvLCBtYnVmLCBCVUZTSVpaKTsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMS4wLXN5 c3RlbS1jaXBoZXJsaXN0LnBhdGNoIGIvb3BlbnNzbC0xLjEuMC1zeXN0ZW0tY2lwaGVybGlzdC5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTlmZDM3Ci0tLSAvZGV2 L251bGwKKysrIGIvb3BlbnNzbC0xLjEuMC1zeXN0ZW0tY2lwaGVybGlzdC5wYXRjaApAQCAtMCww ICsxLDI5OCBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMGIvQ29uZmlndXJhdGlvbnMvdW5peC1N YWtlZmlsZS50bXBsLnN5c3RlbS1jaXBoZXJsaXN0IG9wZW5zc2wtMS4xLjBiL0NvbmZpZ3VyYXRp b25zL3VuaXgtTWFrZWZpbGUudG1wbAorLS0tIG9wZW5zc2wtMS4xLjBiL0NvbmZpZ3VyYXRpb25z L3VuaXgtTWFrZWZpbGUudG1wbC5zeXN0ZW0tY2lwaGVybGlzdAkyMDE2LTA5LTI2IDE1OjU3OjM0 LjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjBiL0NvbmZpZ3VyYXRpb25zL3VuaXgt TWFrZWZpbGUudG1wbAkyMDE2LTA5LTI2IDE2OjQxOjE3Ljc5NjE0ODc2NCArMDIwMAorQEAgLTE1 Nyw2ICsxNTcsMTAgQEAgTUFORElSPSQoSU5TVEFMTFRPUCkvc2hhcmUvbWFuCisgRE9DRElSPSQo SU5TVEFMTFRPUCkvc2hhcmUvZG9jLyQoQkFTRU5BTUUpCisgSFRNTERJUj0kKERPQ0RJUikvaHRt bAorIAorK3stIG91dHB1dF9vZmYoKSBpZiAkY29uZmlne3N5c3RlbV9jaXBoZXJzX2ZpbGV9IGVx ICIiOyAiIiAtfQorK1NZU1RFTV9DSVBIRVJTX0ZJTEVfREVGSU5FPS1EU1lTVEVNX0NJUEhFUlNf RklMRT0iXCJ7LSAkY29uZmlne3N5c3RlbV9jaXBoZXJzX2ZpbGV9IC19XCIiCisrey0gb3V0cHV0 X29uKCkgaWYgJGNvbmZpZ3tzeXN0ZW1fY2lwaGVyc19maWxlfSBlcSAiIjsgIiIgLX0KKysKKyAj IE1BTlNVRkZJWCBpcyBmb3IgdGhlIGJlbmVmaXQgb2YgYW55b25lIHdobyBtYXkgd2FudCB0byBo YXZlIGEgc3VmZml4CisgIyBhcHBlbmRlZCBhZnRlciB0aGUgbWFucGFnZSBmaWxlIHNlY3Rpb24g bnVtYmVyLiAgInNzbCIgaXMgcG9wdWxhciwKKyAjIHJlc3VsdGluZyBpbiBmaWxlcyBzdWNoIGFz IGNvbmZpZy41c3NsIHJhdGhlciB0aGFuIGNvbmZpZy41LgorQEAgLTE2Nyw3ICsxNzEsNyBAQCBI VE1MU1VGRklYPWh0bWwKKyAKKyBDUk9TU19DT01QSUxFPSB7LSAkY29uZmlne2Nyb3NzX2NvbXBp bGVfcHJlZml4fSAtfQorIENDPSAkKENST1NTX0NPTVBJTEUpey0gJHRhcmdldHtjY30gLX0KKy1D RkxBR1M9ey0gb3VyICRjZmxhZ3MyID0gam9pbigiICIsKG1hcCB7ICItRCIuJF99IEB7JHRhcmdl dHtkZWZpbmVzfX0sIEB7JGNvbmZpZ3tkZWZpbmVzfX0pLCItRE9QRU5TU0xESVI9XCJcXFwiXCQo T1BFTlNTTERJUilcXFwiXCIiLCItREVOR0lORVNESVI9XCJcXFwiXCQoRU5HSU5FU0RJUilcXFwi XCIiKSAtfSB7LSAkdGFyZ2V0e2NmbGFnc30gLX0gey0gJGNvbmZpZ3tjZmxhZ3N9IC19CisrQ0ZM QUdTPXstIG91ciAkY2ZsYWdzMiA9IGpvaW4oIiAiLChtYXAgeyAiLUQiLiRffSBAeyR0YXJnZXR7 ZGVmaW5lc319LCBAeyRjb25maWd7ZGVmaW5lc319KSwiXCQoU1lTVEVNX0NJUEhFUlNfRklMRV9E RUZJTkUpIiwiLURPUEVOU1NMRElSPVwiXFxcIlwkKE9QRU5TU0xESVIpXFxcIlwiIiwiLURFTkdJ TkVTRElSPVwiXFxcIlwkKEVOR0lORVNESVIpXFxcIlwiIikgLX0gey0gJHRhcmdldHtjZmxhZ3N9 IC19IHstICRjb25maWd7Y2ZsYWdzfSAtfQorIENGTEFHU19RPXstICRjZmxhZ3MyID1+IHN8KFtc XCJdKXxcXCQxfGc7ICRjZmxhZ3MyIC19IHstICRjb25maWd7Y2ZsYWdzfSAtfQorIExERkxBR1M9 IHstICR0YXJnZXR7bGZsYWdzfSAtfQorIFBMSUJfTERGTEFHUz0gey0gJHRhcmdldHtwbGliX2xm bGFnc30gLX0KK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjBiL0NvbmZpZ3VyZS5zeXN0ZW0tY2lwaGVy bGlzdCBvcGVuc3NsLTEuMS4wYi9Db25maWd1cmUKKy0tLSBvcGVuc3NsLTEuMS4wYi9Db25maWd1 cmUuc3lzdGVtLWNpcGhlcmxpc3QJMjAxNi0wOS0yNiAxNTo1NzozNC4wMDAwMDAwMDAgKzAyMDAK KysrKyBvcGVuc3NsLTEuMS4wYi9Db25maWd1cmUJMjAxNi0wOS0yNiAxNjo0MTo0NS4wMDI3ODc3 NTMgKzAyMDAKK0BAIC0xOCw3ICsxOCw3IEBAIHVzZSBpZiAkXk8gbmUgIlZNUyIsICdGaWxlOjpH bG9iJyA9PiBxdy8KKyAKKyAjIHNlZSBJTlNUQUxMIGZvciBpbnN0cnVjdGlvbnMuCisgCistbXkg JHVzYWdlPSJVc2FnZTogQ29uZmlndXJlIFtuby08Y2lwaGVyPiAuLi5dIFtlbmFibGUtPGNpcGhl cj4gLi4uXSBbLUR4eHhdIFstbHh4eF0gWy1MeHh4XSBbLWZ4eHhdIFstS3h4eF0gW25vLWh3LXh4 eHxuby1od10gW1tuby1ddGhyZWFkc10gW1tuby1dc2hhcmVkXSBbW25vLV16bGlifHpsaWItZHlu YW1pY10gW25vLWFzbV0gW25vLWRzb10gW25vLWVnZF0gW3NjdHBdIFszODZdIFstLXByZWZpeD1E SVJdIFstLW9wZW5zc2xkaXI9T1BFTlNTTERJUl0gWy0td2l0aC14eHhbPXZ2dl1dIFstLWNvbmZp Zz1GSUxFXSBvcy9jb21waWxlcls6ZmxhZ3NdXG4iOworK215ICR1c2FnZT0iVXNhZ2U6IENvbmZp Z3VyZSBbbm8tPGNpcGhlcj4gLi4uXSBbZW5hYmxlLTxjaXBoZXI+IC4uLl0gWy1EeHh4XSBbLWx4 eHhdIFstTHh4eF0gWy1meHh4XSBbLUt4eHhdIFtuby1ody14eHh8bm8taHddIFtbbm8tXXRocmVh ZHNdIFtbbm8tXXNoYXJlZF0gW1tuby1demxpYnx6bGliLWR5bmFtaWNdIFtuby1hc21dIFtuby1k c29dIFtuby1lZ2RdIFtzY3RwXSBbMzg2XSBbLS1wcmVmaXg9RElSXSBbLS1vcGVuc3NsZGlyPU9Q RU5TU0xESVJdIFstLXN5c3RlbS1jaXBoZXJzLWZpbGU9U1lTVEVNQ0lQSEVSRklMRV0gWy0td2l0 aC14eHhbPXZ2dl1dIFstLWNvbmZpZz1GSUxFXSBvcy9jb21waWxlcls6ZmxhZ3NdXG4iOworIAor ICMgT3B0aW9uczoKKyAjCitAQCAtMzUsNiArMzUsOSBAQCBteSAkdXNhZ2U9IlVzYWdlOiBDb25m aWd1cmUgW25vLTxjaXBoZXI+CisgIyAgICAgICAgICAgICAgIFRoaXMgYmVjb21lcyB0aGUgdmFs dWUgb2YgT1BFTlNTTERJUiBpbiBNYWtlZmlsZSBhbmQgaW4gQy4KKyAjICAgICAgICAgICAgICAg KERlZmF1bHQ6IFBSRUZJWC9zc2wpCisgIworKyMgLS1zeXN0ZW0tY2lwaGVycy1maWxlICBBIGZp bGUgdG8gcmVhZCBjaXBoZXIgc3RyaW5nIGZyb20gd2hlbiB0aGUgUFJPRklMRT1TWVNURU0KKysj CQljaXBoZXIgaXMgc3BlY2lmaWVkIChkZWZhdWx0KS4KKysjCisgIyAtLWNyb3NzLWNvbXBpbGUt cHJlZml4IEFkZCBzcGVjaWZpZWQgcHJlZml4IHRvIGJpbnV0aWxzIGNvbXBvbmVudHMuCisgIwor ICMgLS1hcGkgICAgICAgICBPbmUgb2YgMC45LjgsIDEuMC4wIG9yIDEuMS4wLiAgRG8gbm90IGNv bXBpbGUgc3VwcG9ydCBmb3IKK0BAIC0yOTIsNiArMjk1LDcgQEAgJGNvbmZpZ3tvcGVuc3NsZGly fT0iIjsKKyAkY29uZmlne3Byb2Nlc3Nvcn09IiI7CisgJGNvbmZpZ3tsaWJkaXJ9PSIiOworICRj b25maWd7Y3Jvc3NfY29tcGlsZV9wcmVmaXh9PSIiOworKyRjb25maWd7c3lzdGVtX2NpcGhlcnNf ZmlsZX09IiI7CisgJGNvbmZpZ3tmaXBzbGliZGlyfT0iL3Vzci9sb2NhbC9zc2wvZmlwcy0yLjAv bGliLyI7CisgbXkgJG5vZmlwc2NhbmlzdGVyY2hlY2s9MDsKKyAkY29uZmlne2Jhc2VhZGRyfT0i MHhGQjAwMDAwIjsKK0BAIC03MTYsNiArNzIwLDEwIEBAIGZvcmVhY2ggKEBhcmd2Y29weSkKKyAJ CQl7CisgCQkJJGNvbmZpZ3tiYXNlYWRkcn09IiQxIjsKKyAJCQl9CisrCQllbHNpZiAoL14tLXN5 c3RlbS1jaXBoZXJzLWZpbGU9KC4qKSQvKQorKwkJCXsKKysJCQkkY29uZmlne3N5c3RlbV9jaXBo ZXJzX2ZpbGV9PSQxOworKwkJCX0KKyAJCWVsc2lmICgvXi0tY3Jvc3MtY29tcGlsZS1wcmVmaXg9 KC4qKSQvKQorIAkJCXsKKyAJCQkkY29uZmlne2Nyb3NzX2NvbXBpbGVfcHJlZml4fT0kMTsKK0BA IC04NDEsNiArODQ5LDggQEAgaWYgKCR0YXJnZXQgPX4gbS9eQ3lnV2luMzIoLS4qKSQvKSB7Cisg ICAgICR0YXJnZXQgPSAiQ3lnd2luIi4kMTsKKyB9CisgCisrY2hvcCAkY29uZmlne3N5c3RlbV9j aXBoZXJzX2ZpbGV9IGlmICRjb25maWd7c3lzdGVtX2NpcGhlcnNfZmlsZX0gPX4gL1wvJC87Cisr CisgZm9yZWFjaCAoc29ydCAoa2V5cyAlZGlzYWJsZWQpKQorIAl7CisgCSRjb25maWd7b3B0aW9u c30gLj0gIiBuby0kXyI7CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wYi9pbmNsdWRlL29wZW5zc2wv c3NsLmguc3lzdGVtLWNpcGhlcmxpc3Qgb3BlbnNzbC0xLjEuMGIvaW5jbHVkZS9vcGVuc3NsL3Nz bC5oCistLS0gb3BlbnNzbC0xLjEuMGIvaW5jbHVkZS9vcGVuc3NsL3NzbC5oLnN5c3RlbS1jaXBo ZXJsaXN0CTIwMTYtMDktMjYgMTE6NDY6MDcuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0x LjEuMGIvaW5jbHVkZS9vcGVuc3NsL3NzbC5oCTIwMTYtMDktMjYgMTY6NTg6MDMuNzUyNzYwMDcw ICswMjAwCitAQCAtMjAxLDYgKzIwMSwxMSBAQCBleHRlcm4gIkMiIHsKKyAgKiB0aHJvd2luZyBv dXQgYW5vbnltb3VzIGFuZCB1bmVuY3J5cHRlZCBjaXBoZXJzdWl0ZXMhIChUaGUgbGF0dGVyIGFy ZSBub3QKKyAgKiBhY3R1YWxseSBlbmFibGVkIGJ5IEFMTCwgYnV0ICJBTEw6UlNBIiB3b3VsZCBl bmFibGUgc29tZSBvZiB0aGVtLikKKyAgKi8KKysjIGlmZGVmIFNZU1RFTV9DSVBIRVJTX0ZJTEUK KysjICBkZWZpbmUgU1NMX1NZU1RFTV9ERUZBVUxUX0NJUEhFUl9MSVNUICJQUk9GSUxFPVNZU1RF TSIKKysjIGVsc2UKKysjICBkZWZpbmUgU1NMX1NZU1RFTV9ERUZBVUxUX0NJUEhFUl9MSVNUIFNT TF9ERUZBVUxUX0NJUEhFUl9MSVNUCisrIyBlbmRpZgorIAorIC8qIFVzZWQgaW4gU1NMX3NldF9z aHV0ZG93bigpL1NTTF9nZXRfc2h1dGRvd24oKTsgKi8KKyAjIGRlZmluZSBTU0xfU0VOVF9TSFVU RE9XTiAgICAgICAxCitkaWZmIC11cCBvcGVuc3NsLTEuMS4wYi9zc2wvc3NsX2NpcGguYy5zeXN0 ZW0tY2lwaGVybGlzdCBvcGVuc3NsLTEuMS4wYi9zc2wvc3NsX2NpcGguYworLS0tIG9wZW5zc2wt MS4xLjBiL3NzbC9zc2xfY2lwaC5jLnN5c3RlbS1jaXBoZXJsaXN0CTIwMTYtMDktMjYgMTE6NDY6 MDcuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMGIvc3NsL3NzbF9jaXBoLmMJMjAx Ni0wOS0yNiAxNjo1MTozMy4wNTY1OTE2ODkgKzAyMDAKK0BAIC0xMjg5LDYgKzEyODksNTAgQEAg c3RhdGljIGludCBjaGVja19zdWl0ZWJfY2lwaGVyX2xpc3QoY29ucworIH0KKyAjZW5kaWYKKyAK KysjaWZkZWYgU1lTVEVNX0NJUEhFUlNfRklMRQorK3N0YXRpYyBjaGFyICpsb2FkX3N5c3RlbV9z dHIoY29uc3QgY2hhciAqc3VmZml4KQorK3sKKysgICAgRklMRSAqZnA7CisrICAgIGNoYXIgYnVm WzEwMjRdOworKyAgICBjaGFyICpuZXdfcnVsZXM7CisrICAgIHVuc2lnbmVkIGxlbiwgc2xlbjsK KysKKysgICAgZnAgPSBmb3BlbihTWVNURU1fQ0lQSEVSU19GSUxFLCAiciIpOworKyAgICBpZiAo ZnAgPT0gTlVMTCB8fCBmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmcCkgPT0gTlVMTCkgeworKyAg ICAgICAgLyogY2Fubm90IG9wZW4gb3IgZmlsZSBpcyBlbXB0eSAqLworKyAgICAgICAgc25wcmlu dGYoYnVmLCBzaXplb2YoYnVmKSwgIiVzIiwgU1NMX0RFRkFVTFRfQ0lQSEVSX0xJU1QpOworKyAg ICB9CisrCisrICAgIGlmIChmcCkKKysgICAgICAgIGZjbG9zZShmcCk7CisrCisrICAgIHNsZW4g PSBzdHJsZW4oc3VmZml4KTsKKysgICAgbGVuID0gc3RybGVuKGJ1Zik7CisrCisrICAgIGlmIChi dWZbbGVuIC0gMV0gPT0gJ1xuJykgeworKyAgICAgICAgbGVuLS07CisrICAgICAgICBidWZbbGVu XSA9IDA7CisrICAgIH0KKysgICAgaWYgKGJ1ZltsZW4gLSAxXSA9PSAnXHInKSB7CisrICAgICAg ICBsZW4tLTsKKysgICAgICAgIGJ1ZltsZW5dID0gMDsKKysgICAgfQorKworKyAgICBuZXdfcnVs ZXMgPSBPUEVOU1NMX21hbGxvYyhsZW4gKyBzbGVuICsgMSk7CisrICAgIGlmIChuZXdfcnVsZXMg PT0gMCkKKysgICAgICAgIHJldHVybiBOVUxMOworKworKyAgICBtZW1jcHkobmV3X3J1bGVzLCBi dWYsIGxlbik7CisrICAgIGlmIChzbGVuID4gMCkgeworKyAgICAgICAgbWVtY3B5KCZuZXdfcnVs ZXNbbGVuXSwgc3VmZml4LCBzbGVuKTsKKysgICAgICAgIGxlbiArPSBzbGVuOworKyAgICB9Cisr ICAgIG5ld19ydWxlc1tsZW5dID0gMDsKKysKKysgICAgcmV0dXJuIG5ld19ydWxlczsKKyt9Cisr I2VuZGlmCisrCisgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKnNzbF9jcmVhdGVfY2lwaGVyX2xpc3Qo Y29uc3QgU1NMX01FVEhPRCAqc3NsX21ldGhvZCwgU1RBQ0tfT0YoU1NMX0NJUEhFUikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmNpcGhlcl9saXN0LCBT VEFDS19PRihTU0xfQ0lQSEVSKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICoqY2lwaGVyX2xpc3RfYnlfaWQsCitAQCAtMTI5NiwxOSArMTM0MCwyOSBAQCBT VEFDS19PRihTU0xfQ0lQSEVSKSAqc3NsX2NyZWF0ZV9jaXBoZXJfCisgeworICAgICBpbnQgb2ss IG51bV9vZl9jaXBoZXJzLCBudW1fb2ZfYWxpYXNfbWF4LCBudW1fb2ZfZ3JvdXBfYWxpYXNlczsK KyAgICAgdWludDMyX3QgZGlzYWJsZWRfbWtleSwgZGlzYWJsZWRfYXV0aCwgZGlzYWJsZWRfZW5j LCBkaXNhYmxlZF9tYWM7CistICAgIFNUQUNLX09GKFNTTF9DSVBIRVIpICpjaXBoZXJzdGFjaywg KnRtcF9jaXBoZXJfbGlzdDsKKysgICAgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKmNpcGhlcnN0YWNr ID0gTlVMTCwgKnRtcF9jaXBoZXJfbGlzdDsKKyAgICAgY29uc3QgY2hhciAqcnVsZV9wOworICAg ICBDSVBIRVJfT1JERVIgKmNvX2xpc3QgPSBOVUxMLCAqaGVhZCA9IE5VTEwsICp0YWlsID0gTlVM TCwgKmN1cnI7CisgICAgIGNvbnN0IFNTTF9DSVBIRVIgKipjYV9saXN0ID0gTlVMTDsKKysjaWZk ZWYgU1lTVEVNX0NJUEhFUlNfRklMRQorKyAgICBjaGFyICpuZXdfcnVsZXMgPSBOVUxMOworKwor KyAgICBpZiAocnVsZV9zdHIgIT0gTlVMTCAmJiBzdHJuY21wKHJ1bGVfc3RyLCAiUFJPRklMRT1T WVNURU0iLCAxNCkgPT0gMCkgeworKyAgICAgICAgY2hhciAqcCA9IHJ1bGVfc3RyICsgMTQ7Cisr ICAgIAorKyAgICAgICAgbmV3X3J1bGVzID0gbG9hZF9zeXN0ZW1fc3RyKHApOworKyAgICAgICAg cnVsZV9zdHIgPSBuZXdfcnVsZXM7CisrICAgIH0KKysjZW5kaWYKKyAKKyAgICAgLyoKKyAgICAg ICogUmV0dXJuIHdpdGggZXJyb3IgaWYgbm90aGluZyB0byBkby4KKyAgICAgICovCisgICAgIGlm IChydWxlX3N0ciA9PSBOVUxMIHx8IGNpcGhlcl9saXN0ID09IE5VTEwgfHwgY2lwaGVyX2xpc3Rf YnlfaWQgPT0gTlVMTCkKKy0gICAgICAgIHJldHVybiBOVUxMOworKyAgICAgICAgZ290byBlbmQ7 CisgI2lmbmRlZiBPUEVOU1NMX05PX0VDCisgICAgIGlmICghY2hlY2tfc3VpdGViX2NpcGhlcl9s aXN0KHNzbF9tZXRob2QsIGMsICZydWxlX3N0cikpCistICAgICAgICByZXR1cm4gTlVMTDsKKysg ICAgICAgIGdvdG8gZW5kOworICNlbmRpZgorIAorICAgICAvKgorQEAgLTEzMzEsNyArMTM4NSw3 IEBAIFNUQUNLX09GKFNTTF9DSVBIRVIpICpzc2xfY3JlYXRlX2NpcGhlcl8KKyAgICAgY29fbGlz dCA9IE9QRU5TU0xfbWFsbG9jKHNpemVvZigqY29fbGlzdCkgKiBudW1fb2ZfY2lwaGVycyk7Cisg ICAgIGlmIChjb19saXN0ID09IE5VTEwpIHsKKyAgICAgICAgIFNTTGVycihTU0xfRl9TU0xfQ1JF QVRFX0NJUEhFUl9MSVNULCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CistICAgICAgICByZXR1cm4g KE5VTEwpOyAgICAgICAgICAvKiBGYWlsdXJlICovCisrICAgICAgICBnb3RvIGVuZDsKKyAgICAg fQorIAorICAgICBzc2xfY2lwaGVyX2NvbGxlY3RfY2lwaGVycyhzc2xfbWV0aG9kLCBudW1fb2Zf Y2lwaGVycywKK0BAIC0xNDAxLDggKzE0NTUsNyBAQCBTVEFDS19PRihTU0xfQ0lQSEVSKSAqc3Ns X2NyZWF0ZV9jaXBoZXJfCisgICAgICAqIGluIGZvcmNlIHdpdGhpbiBlYWNoIGNsYXNzCisgICAg ICAqLworICAgICBpZiAoIXNzbF9jaXBoZXJfc3RyZW5ndGhfc29ydCgmaGVhZCwgJnRhaWwpKSB7 CistICAgICAgICBPUEVOU1NMX2ZyZWUoY29fbGlzdCk7CistICAgICAgICByZXR1cm4gTlVMTDsK KysgICAgICAgIGdvdG8gZW5kOworICAgICB9CisgCisgICAgIC8qCitAQCAtMTQ0Nyw5ICsxNTAw LDggQEAgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKnNzbF9jcmVhdGVfY2lwaGVyXworICAgICBudW1f b2ZfYWxpYXNfbWF4ID0gbnVtX29mX2NpcGhlcnMgKyBudW1fb2ZfZ3JvdXBfYWxpYXNlcyArIDE7 CisgICAgIGNhX2xpc3QgPSBPUEVOU1NMX21hbGxvYyhzaXplb2YoKmNhX2xpc3QpICogbnVtX29m X2FsaWFzX21heCk7CisgICAgIGlmIChjYV9saXN0ID09IE5VTEwpIHsKKy0gICAgICAgIE9QRU5T U0xfZnJlZShjb19saXN0KTsKKyAgICAgICAgIFNTTGVycihTU0xfRl9TU0xfQ1JFQVRFX0NJUEhF Ul9MSVNULCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CistICAgICAgICByZXR1cm4gKE5VTEwpOyAg ICAgICAgICAvKiBGYWlsdXJlICovCisrICAgICAgICBnb3RvIGVuZDsKKyAgICAgfQorICAgICBz c2xfY2lwaGVyX2NvbGxlY3RfYWxpYXNlcyhjYV9saXN0LCBudW1fb2ZfZ3JvdXBfYWxpYXNlcywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRfbWtleSwgZGlzYWJsZWRf YXV0aCwgZGlzYWJsZWRfZW5jLAorQEAgLTE0NzUsOCArMTUyNyw3IEBAIFNUQUNLX09GKFNTTF9D SVBIRVIpICpzc2xfY3JlYXRlX2NpcGhlcl8KKyAgICAgT1BFTlNTTF9mcmVlKGNhX2xpc3QpOyAg ICAgIC8qIE5vdCBuZWVkZWQgYW55bW9yZSAqLworIAorICAgICBpZiAoIW9rKSB7ICAgICAgICAg ICAgICAgICAgLyogUnVsZSBwcm9jZXNzaW5nIGZhaWx1cmUgKi8KKy0gICAgICAgIE9QRU5TU0xf ZnJlZShjb19saXN0KTsKKy0gICAgICAgIHJldHVybiAoTlVMTCk7CisrICAgICAgICBnb3RvIGVu ZDsKKyAgICAgfQorIAorICAgICAvKgorQEAgLTE0ODQsOCArMTUzNSw3IEBAIFNUQUNLX09GKFNT TF9DSVBIRVIpICpzc2xfY3JlYXRlX2NpcGhlcl8KKyAgICAgICogaWYgd2UgY2Fubm90IGdldCBv bmUuCisgICAgICAqLworICAgICBpZiAoKGNpcGhlcnN0YWNrID0gc2tfU1NMX0NJUEhFUl9uZXdf bnVsbCgpKSA9PSBOVUxMKSB7CistICAgICAgICBPUEVOU1NMX2ZyZWUoY29fbGlzdCk7CistICAg ICAgICByZXR1cm4gKE5VTEwpOworKyAgICAgICAgZ290byBlbmQ7CisgICAgIH0KKyAKKyAgICAg LyoKK0BAIC0xNDk2LDIxICsxNTQ2LDIxIEBAIFNUQUNLX09GKFNTTF9DSVBIRVIpICpzc2xfY3Jl YXRlX2NpcGhlcl8KKyAgICAgICAgIGlmIChjdXJyLT5hY3RpdmUKKyAgICAgICAgICAgICAmJiAo IUZJUFNfbW9kZSgpIHx8IGN1cnItPmNpcGhlci0+YWxnb19zdHJlbmd0aCAmIFNTTF9GSVBTKSkg eworICAgICAgICAgICAgIGlmICghc2tfU1NMX0NJUEhFUl9wdXNoKGNpcGhlcnN0YWNrLCBjdXJy LT5jaXBoZXIpKSB7CistICAgICAgICAgICAgICAgIE9QRU5TU0xfZnJlZShjb19saXN0KTsKKyAg ICAgICAgICAgICAgICAgc2tfU1NMX0NJUEhFUl9mcmVlKGNpcGhlcnN0YWNrKTsKKy0gICAgICAg ICAgICAgICAgcmV0dXJuIE5VTEw7CisrICAgICAgICAgICAgICAgIGNpcGhlcnN0YWNrID0gTlVM TDsKKysgICAgICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgICAgICAgfQorICNpZmRlZiBD SVBIRVJfREVCVUcKKyAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIjwlcz5cbiIsIGN1cnIt PmNpcGhlci0+bmFtZSk7CisgI2VuZGlmCisgICAgICAgICB9CisgICAgIH0KKy0gICAgT1BFTlNT TF9mcmVlKGNvX2xpc3QpOyAgICAgIC8qIE5vdCBuZWVkZWQgYW55IGxvbmdlciAqLworIAorICAg ICB0bXBfY2lwaGVyX2xpc3QgPSBza19TU0xfQ0lQSEVSX2R1cChjaXBoZXJzdGFjayk7CisgICAg IGlmICh0bXBfY2lwaGVyX2xpc3QgPT0gTlVMTCkgeworICAgICAgICAgc2tfU1NMX0NJUEhFUl9m cmVlKGNpcGhlcnN0YWNrKTsKKy0gICAgICAgIHJldHVybiBOVUxMOworKyAgICAgICAgY2lwaGVy c3RhY2sgPSBOVUxMOworKyAgICAgICAgZ290byBlbmQ7CisgICAgIH0KKyAgICAgc2tfU1NMX0NJ UEhFUl9mcmVlKCpjaXBoZXJfbGlzdCk7CisgICAgICpjaXBoZXJfbGlzdCA9IGNpcGhlcnN0YWNr OworQEAgLTE1MjAsNiArMTU3MCwxMiBAQCBTVEFDS19PRihTU0xfQ0lQSEVSKSAqc3NsX2NyZWF0 ZV9jaXBoZXJfCisgICAgICh2b2lkKXNrX1NTTF9DSVBIRVJfc2V0X2NtcF9mdW5jKCpjaXBoZXJf bGlzdF9ieV9pZCwgc3NsX2NpcGhlcl9wdHJfaWRfY21wKTsKKyAKKyAgICAgc2tfU1NMX0NJUEhF Ul9zb3J0KCpjaXBoZXJfbGlzdF9ieV9pZCk7CisrCisrIGVuZDoKKysgICAgT1BFTlNTTF9mcmVl KGNvX2xpc3QpOworKyNpZmRlZiBTWVNURU1fQ0lQSEVSU19GSUxFCisrICAgIE9QRU5TU0xfZnJl ZShuZXdfcnVsZXMpOworKyNlbmRpZgorICAgICByZXR1cm4gKGNpcGhlcnN0YWNrKTsKKyB9Cisg CitkaWZmIC11cCBvcGVuc3NsLTEuMS4wYi9zc2wvc3NsX2xpYi5jLnN5c3RlbS1jaXBoZXJsaXN0 IG9wZW5zc2wtMS4xLjBiL3NzbC9zc2xfbGliLmMKKy0tLSBvcGVuc3NsLTEuMS4wYi9zc2wvc3Ns X2xpYi5jLnN5c3RlbS1jaXBoZXJsaXN0CTIwMTYtMDktMjYgMTU6NTc6MzQuMDAwMDAwMDAwICsw MjAwCisrKysgb3BlbnNzbC0xLjEuMGIvc3NsL3NzbF9saWIuYwkyMDE2LTA5LTI2IDE2OjU1OjIz LjY2ODAwMzM5NiArMDIwMAorQEAgLTUwOSw3ICs1MDksNyBAQCBpbnQgU1NMX0NUWF9zZXRfc3Ns X3ZlcnNpb24oU1NMX0NUWCAqY3R4CisgCisgICAgIHNrID0gc3NsX2NyZWF0ZV9jaXBoZXJfbGlz dChjdHgtPm1ldGhvZCwgJihjdHgtPmNpcGhlcl9saXN0KSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICYoY3R4LT5jaXBoZXJfbGlzdF9ieV9pZCksCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTU0xfREVGQVVMVF9DSVBIRVJfTElTVCwgY3R4LT5jZXJ0KTsKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTTF9TWVNURU1fREVGQVVMVF9DSVBIRVJf TElTVCwgY3R4LT5jZXJ0KTsKKyAgICAgaWYgKChzayA9PSBOVUxMKSB8fCAoc2tfU1NMX0NJUEhF Ul9udW0oc2spIDw9IDApKSB7CisgICAgICAgICBTU0xlcnIoU1NMX0ZfU1NMX0NUWF9TRVRfU1NM X1ZFUlNJT04sIFNTTF9SX1NTTF9MSUJSQVJZX0hBU19OT19DSVBIRVJTKTsKKyAgICAgICAgIHJl dHVybiAoMCk7CitAQCAtMjM5NSw3ICsyMzk1LDcgQEAgU1NMX0NUWCAqU1NMX0NUWF9uZXcoY29u c3QgU1NMX01FVEhPRCAqbQorICNlbmRpZgorICAgICBpZiAoIXNzbF9jcmVhdGVfY2lwaGVyX2xp c3QocmV0LT5tZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmV0LT5j aXBoZXJfbGlzdCwgJnJldC0+Y2lwaGVyX2xpc3RfYnlfaWQsCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTU0xfREVGQVVMVF9DSVBIRVJfTElTVCwgcmV0LT5jZXJ0KQorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX1NZU1RFTV9ERUZBVUxUX0NJUEhFUl9MSVNU LCByZXQtPmNlcnQpCisgICAgICAgICB8fCBza19TU0xfQ0lQSEVSX251bShyZXQtPmNpcGhlcl9s aXN0KSA8PSAwKSB7CisgICAgICAgICBTU0xlcnIoU1NMX0ZfU1NMX0NUWF9ORVcsIFNTTF9SX0xJ QlJBUllfSEFTX05PX0NJUEhFUlMpOworICAgICAgICAgZ290byBlcnIyOworZGlmZiAtdXAgb3Bl bnNzbC0xLjEuMGIvdGVzdC9jaXBoZXJsaXN0X3Rlc3QuYy5zeXN0ZW0tY2lwaGVybGlzdCBvcGVu c3NsLTEuMS4wYi90ZXN0L2NpcGhlcmxpc3RfdGVzdC5jCistLS0gb3BlbnNzbC0xLjEuMGIvdGVz dC9jaXBoZXJsaXN0X3Rlc3QuYy5zeXN0ZW0tY2lwaGVybGlzdAkyMDE2LTA5LTI2IDExOjQ2OjA4 LjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjBiL3Rlc3QvY2lwaGVybGlzdF90ZXN0 LmMJMjAxNi0wOS0yNiAxNzoxODoyOS4zODA1MTM4NTMgKzAyMDAKK0BAIC0xOTAsNyArMTkwLDkg QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIHsKKyAgICAgaW50IHJlc3VsdCA9 IDA7CisgCisrI2lmbmRlZiBTWVNURU1fQ0lQSEVSU19GSUxFCisgICAgIEFERF9URVNUKHRlc3Rf ZGVmYXVsdF9jaXBoZXJsaXN0X2ltcGxpY2l0KTsKKysjZW5kaWYKKyAgICAgQUREX1RFU1QodGVz dF9kZWZhdWx0X2NpcGhlcmxpc3RfZXhwbGljaXQpOworIAorICAgICByZXN1bHQgPSBydW5fdGVz dHMoYXJndlswXSk7CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjEuMC12ZXJzaW9uLWFkZC1lbmdp bmVzLnBhdGNoIGIvb3BlbnNzbC0xLjEuMC12ZXJzaW9uLWFkZC1lbmdpbmVzLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwODhmMTQKLS0tIC9kZXYvbnVsbAorKysg Yi9vcGVuc3NsLTEuMS4wLXZlcnNpb24tYWRkLWVuZ2luZXMucGF0Y2gKQEAgLTAsMCArMSwzOCBA QAorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMC1wcmU1L2FwcHMvdmVyc2lvbi5jLnZlcnNpb24tYWRk LWVuZ2luZXMgb3BlbnNzbC0xLjEuMC1wcmU1L2FwcHMvdmVyc2lvbi5jCistLS0gb3BlbnNzbC0x LjEuMC1wcmU1L2FwcHMvdmVyc2lvbi5jLnZlcnNpb24tYWRkLWVuZ2luZXMJMjAxNi0wNy0xOCAx NToyNTo1Mi42OTQ1MzE0MDkgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4wLXByZTUvYXBwcy92ZXJz aW9uLmMJMjAxNi0wNy0xOCAxNTozMjo1My45NDMwNjIxODEgKzAyMDAKK0BAIC0xNTMsNyArMTUz LDcgQEAgaW50IHZlcnNpb25fbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgeworICAgICBp bnQgcmV0ID0gMSwgZGlydHkgPSAwOworICAgICBpbnQgY2ZsYWdzID0gMCwgdmVyc2lvbiA9IDAs IGRhdGUgPSAwLCBvcHRpb25zID0gMCwgcGxhdGZvcm0gPSAwLCBkaXIgPSAwOworLSAgICBpbnQg ZW5nZGlyID0gMDsKKysgICAgaW50IGVuZ2RpciA9IDAsIGVuZ2luZXMgPSAwOworICAgICBjaGFy ICpwcm9nOworICAgICBPUFRJT05fQ0hPSUNFIG87CisgCitAQCAtMTkwLDcgKzE5MCw3IEBAIGlu dCB2ZXJzaW9uX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgICAgICAgIGRpcnR5 ID0gdmVyc2lvbiA9IDE7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBjYXNlIE9QVF9B OgorLSAgICAgICAgICAgIGNmbGFncyA9IHZlcnNpb24gPSBkYXRlID0gcGxhdGZvcm0gPSBkaXIg PSBlbmdkaXIgPSAxOworKyAgICAgICAgICAgIGNmbGFncyA9IHZlcnNpb24gPSBkYXRlID0gcGxh dGZvcm0gPSBkaXIgPSBlbmdkaXIgPSBlbmdpbmVzID0gMTsKKyAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgIH0KKyAgICAgfQorQEAgLTIzNSw2ICsyMzUsMTYgQEAgaW50IHZlcnNpb25fbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgICBwcmludGYoIiVzXG4iLCBPcGVuU1NM X3ZlcnNpb24oT1BFTlNTTF9ESVIpKTsKKyAgICAgaWYgKGVuZ2RpcikKKyAgICAgICAgIHByaW50 ZigiJXNcbiIsIE9wZW5TU0xfdmVyc2lvbihPUEVOU1NMX0VOR0lORVNfRElSKSk7CisrICAgIGlm IChlbmdpbmVzKSB7CisrICAgICAgICBFTkdJTkUgKmU7CisrICAgICAgICBwcmludGYoImVuZ2lu ZXM6ICAiKTsKKysgICAgICAgIGUgPSBFTkdJTkVfZ2V0X2ZpcnN0KCk7CisrICAgICAgICB3aGls ZSAoZSkgeworKyAgICAgICAgICAgIHByaW50ZigiJXMgIiwgRU5HSU5FX2dldF9pZChlKSk7Cisr ICAgICAgICAgICAgZSA9IEVOR0lORV9nZXRfbmV4dChlKTsKKysgICAgICAgIH0KKysgICAgICAg IHByaW50ZigiXG4iKTsKKysgICAgfQorICAgICByZXQgPSAwOworICBlbmQ6CisgICAgIHJldHVy biAocmV0KTsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLXRocmVhZC10ZXN0LmMgYi9vcGVuc3NsLXRo cmVhZC10ZXN0LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiOTAyODUuLjAwMDAw MDAKLS0tIGEvb3BlbnNzbC10aHJlYWQtdGVzdC5jCisrKyAvZGV2L251bGwKQEAgLTEsNDAwICsw LDAgQEAKLS8qIFRlc3QgcHJvZ3JhbSB0byB2ZXJpZnkgdGhhdCBSU0Egc2lnbmluZyBpcyB0aHJl YWQtc2FmZSBpbiBPcGVuU1NMLiAqLwotCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jaW5jbHVkZSA8 ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1 ZGUgPHB0aHJlYWQuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgot I2luY2x1ZGUgPHVuaXN0ZC5oPgotCi0jaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KLSNpbmNs dWRlIDxvcGVuc3NsL2Vyci5oPgotI2luY2x1ZGUgPG9wZW5zc2wvb2JqZWN0cy5oPgotI2luY2x1 ZGUgPG9wZW5zc2wvcmFuZC5oPgotI2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+Ci0jaW5jbHVkZSA8 b3BlbnNzbC9tZDUuaD4KLSNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPgotCi0vKiBKdXN0IGFzc3Vt ZSB3ZSB3YW50IHRvIGRvIGVuZ2luZSBzdHVmZiBpZiB3ZSdyZSB1c2luZyAwLjkuNmIgb3IKLSAq IGhpZ2hlci4gVGhpcyBhc3N1bXB0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIHZlcnNpb25zIGJ1bmRs ZWQgd2l0aCBSSEwuICovCi0jaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiAgPj0gMHgwMDkwNjAy ZkwKLSNpbmNsdWRlIDxvcGVuc3NsL2VuZ2luZS5oPgotI2RlZmluZSBVU0VfRU5HSU5FCi0jZW5k aWYKLQotI2RlZmluZSBNQVhfVEhSRUFEX0NPVU5UCTEwMDAwCi0jZGVmaW5lIElURVJBVElPTl9D T1VOVAkJMTAKLSNkZWZpbmUgTUFJTl9DT1VOVAkJMTAwCi0KLS8qIE9wZW5TU0wgcmVxdWlyZXMg dXMgdG8gcHJvdmlkZSB0aHJlYWQgSUQgYW5kIGxvY2tpbmcgcHJpbWl0aXZlcy4gKi8KLXB0aHJl YWRfbXV0ZXhfdCAqbXV0ZXhfbG9ja3MgPSBOVUxMOwotc3RhdGljIHVuc2lnbmVkIGxvbmcKLXRo cmVhZF9pZF9jYih2b2lkKQotewotCXJldHVybiAodW5zaWduZWQgbG9uZykgcHRocmVhZF9zZWxm KCk7Ci19Ci1zdGF0aWMgdm9pZAotbG9ja19jYihpbnQgbW9kZSwgaW50IG4sIGNvbnN0IGNoYXIg KmZpbGUsIGludCBsaW5lKQotewotCWlmIChtb2RlICYgQ1JZUFRPX0xPQ0spIHsKLQkJcHRocmVh ZF9tdXRleF9sb2NrKCZtdXRleF9sb2Nrc1tuXSk7Ci0JfSBlbHNlIHsKLQkJcHRocmVhZF9tdXRl eF91bmxvY2soJm11dGV4X2xvY2tzW25dKTsKLQl9Ci19Ci0KLXN0cnVjdCB0aHJlYWRfYXJncyB7 Ci0JUlNBICpyc2E7Ci0JaW50IGRpZ2VzdF90eXBlOwotCXVuc2lnbmVkIGNoYXIgKmRpZ2VzdDsK LQl1bnNpZ25lZCBpbnQgZGlnZXN0X2xlbjsKLQl1bnNpZ25lZCBjaGFyICpzaWduYXR1cmU7Ci0J dW5zaWduZWQgaW50IHNpZ25hdHVyZV9sZW47Ci0JcHRocmVhZF90IG1haW5fdGhyZWFkOwotfTsK LQotc3RhdGljIGludCBwcmludCA9IDA7Ci0KLXB0aHJlYWRfbXV0ZXhfdCBzaWduX2xvY2sgPSBQ VEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOwotc3RhdGljIGludCBsb2NrZWRfc2lnbiA9IDA7Ci1z dGF0aWMgdm9pZCBTSUdOX0xPQ0soKSB7aWYgKGxvY2tlZF9zaWduKSBwdGhyZWFkX211dGV4X2xv Y2soJnNpZ25fbG9jayk7fQotc3RhdGljIHZvaWQgU0lHTl9VTkxPQ0soKSB7aWYgKGxvY2tlZF9z aWduKSBwdGhyZWFkX211dGV4X3VubG9jaygmc2lnbl9sb2NrKTt9Ci0KLXB0aHJlYWRfbXV0ZXhf dCB2ZXJpZnlfbG9jayA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7Ci1zdGF0aWMgaW50IGxv Y2tlZF92ZXJpZnkgPSAwOwotc3RhdGljIHZvaWQgVkVSSUZZX0xPQ0soKSB7aWYgKGxvY2tlZF92 ZXJpZnkpIHB0aHJlYWRfbXV0ZXhfbG9jaygmdmVyaWZ5X2xvY2spO30KLXN0YXRpYyB2b2lkIFZF UklGWV9VTkxPQ0soKSB7aWYgKGxvY2tlZF92ZXJpZnkpIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZ2 ZXJpZnlfbG9jayk7fQotCi1wdGhyZWFkX211dGV4X3QgZmFpbHVyZV9jb3VudF9sb2NrID0gUFRI UkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKLWxvbmcgZmFpbHVyZV9jb3VudCA9IDA7Ci1zdGF0aWMg dm9pZAotZmFpbHVyZSgpCi17Ci0JcHRocmVhZF9tdXRleF9sb2NrKCZmYWlsdXJlX2NvdW50X2xv Y2spOwotCWZhaWx1cmVfY291bnQrKzsKLQlwdGhyZWFkX211dGV4X3VubG9jaygmZmFpbHVyZV9j b3VudF9sb2NrKTsKLX0KLQotc3RhdGljIHZvaWQgKgotdGhyZWFkX21haW4odm9pZCAqYXJncCkK LXsKLQlzdHJ1Y3QgdGhyZWFkX2FyZ3MgKmFyZ3MgPSBhcmdwOwotCXVuc2lnbmVkIGNoYXIgKnNp Z25hdHVyZTsKLQl1bnNpZ25lZCBpbnQgc2lnbmF0dXJlX2xlbiwgc2lnbmF0dXJlX2FsbG9jX2xl bjsKLQlpbnQgcmV0LCBpOwotCi0Jc2lnbmF0dXJlX2FsbG9jX2xlbiA9IGFyZ3MtPnNpZ25hdHVy ZV9sZW47Ci0JaWYgKFJTQV9zaXplKGFyZ3MtPnJzYSkgPiBzaWduYXR1cmVfYWxsb2NfbGVuKSB7 Ci0JCXNpZ25hdHVyZV9hbGxvY19sZW4gPSBSU0Ffc2l6ZShhcmdzLT5yc2EpOwotCX0KLQlzaWdu YXR1cmUgPSBtYWxsb2Moc2lnbmF0dXJlX2FsbG9jX2xlbik7Ci0JaWYgKHNpZ25hdHVyZSA9PSBO VUxMKSB7Ci0JCWZwcmludGYoc3RkZXJyLCAiU2tpcHBpbmcgY2hlY2tzIGluIHRocmVhZCAlbHUg LS0gJXMuXG4iLAotCQkJKHVuc2lnbmVkIGxvbmcpIHB0aHJlYWRfc2VsZigpLCBzdHJlcnJvcihl cnJubykpOwotCQlwdGhyZWFkX2V4aXQoMCk7Ci0JCXJldHVybiBOVUxMOwotCX0KLQlmb3IgKGkg PSAwOyBpIDwgSVRFUkFUSU9OX0NPVU5UOyBpKyspIHsKLQkJc2lnbmF0dXJlX2xlbiA9IHNpZ25h dHVyZV9hbGxvY19sZW47Ci0JCVNJR05fTE9DSygpOwotCQlyZXQgPSBSU0FfY2hlY2tfa2V5KGFy Z3MtPnJzYSk7Ci0JCUVSUl9wcmludF9lcnJvcnNfZnAoc3Rkb3V0KTsKLQkJaWYgKHJldCAhPSAx KSB7Ci0JCQlmYWlsdXJlKCk7Ci0JCQlicmVhazsKLQkJfQotCQlyZXQgPSBSU0Ffc2lnbihhcmdz LT5kaWdlc3RfdHlwZSwKLQkJCSAgICAgICBhcmdzLT5kaWdlc3QsCi0JCQkgICAgICAgYXJncy0+ ZGlnZXN0X2xlbiwKLQkJCSAgICAgICBzaWduYXR1cmUsICZzaWduYXR1cmVfbGVuLAotCQkJICAg ICAgIGFyZ3MtPnJzYSk7Ci0JCVNJR05fVU5MT0NLKCk7Ci0JCUVSUl9wcmludF9lcnJvcnNfZnAo c3Rkb3V0KTsKLQkJaWYgKHJldCAhPSAxKSB7Ci0JCQlmYWlsdXJlKCk7Ci0JCQlicmVhazsKLQkJ fQotCi0JCVZFUklGWV9MT0NLKCk7Ci0JCXJldCA9IFJTQV92ZXJpZnkoYXJncy0+ZGlnZXN0X3R5 cGUsCi0JCQkgICAgICAgICBhcmdzLT5kaWdlc3QsCi0JCQkgICAgICAgICBhcmdzLT5kaWdlc3Rf bGVuLAotCQkJICAgICAgICAgc2lnbmF0dXJlLCBzaWduYXR1cmVfbGVuLAotCQkJICAgICAgICAg YXJncy0+cnNhKTsKLQkJVkVSSUZZX1VOTE9DSygpOwotCQlpZiAocmV0ICE9IDEpIHsKLQkJCWZw cmludGYoc3RkZXJyLAotCQkJCSJTaWduYXR1cmUgZnJvbSB0aHJlYWQgJWx1KCVkKSBmYWlscyAi Ci0JCQkJInZlcmlmaWNhdGlvbiAocGFzc2VkIGluIHRocmVhZCAjJWx1KSFcbiIsCi0JCQkJKGxv bmcpIHB0aHJlYWRfc2VsZigpLCBpLAotCQkJCShsb25nKSBhcmdzLT5tYWluX3RocmVhZCk7Ci0J CQlFUlJfcHJpbnRfZXJyb3JzX2ZwKHN0ZG91dCk7Ci0JCQlmYWlsdXJlKCk7Ci0JCQljb250aW51 ZTsKLQkJfQotCQlpZiAocHJpbnQpIHsKLQkJCWZwcmludGYoc3RkZXJyLCAiPiVkXG4iLCBpKTsK LQkJfQotCX0KLQlmcmVlKHNpZ25hdHVyZSk7Ci0KLQlwdGhyZWFkX2V4aXQoMCk7Ci0KLQlyZXR1 cm4gTlVMTDsKLX0KLQotdW5zaWduZWQgY2hhciAqCi14bWVtZHVwKHVuc2lnbmVkIGNoYXIgKnMs IHNpemVfdCBsZW4pCi17Ci0JdW5zaWduZWQgY2hhciAqcjsKLQlyID0gbWFsbG9jKGxlbik7Ci0J aWYgKHIgPT0gTlVMTCkgewotCQlmcHJpbnRmKHN0ZGVyciwgIk91dCBvZiBtZW1vcnkuXG4iKTsK LQkJRVJSX3ByaW50X2Vycm9yc19mcChzdGRvdXQpOwotCQlhc3NlcnQociAhPSBOVUxMKTsKLQl9 Ci0JbWVtY3B5KHIsIHMsIGxlbik7Ci0JcmV0dXJuIHI7Ci19Ci0KLWludAotbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCi17Ci0JUlNBICpyc2E7Ci0JTUQ1X0NUWCBtZDU7Ci0JaW50IGZkLCBp OwotCXB0aHJlYWRfdCB0aHJlYWRzW01BWF9USFJFQURfQ09VTlRdOwotCWludCB0aHJlYWRfY291 bnQgPSAxMDAwOwotCXVuc2lnbmVkIGNoYXIgKm1lc3NhZ2UsICpkaWdlc3Q7Ci0JdW5zaWduZWQg aW50IG1lc3NhZ2VfbGVuLCBkaWdlc3RfbGVuOwotCXVuc2lnbmVkIGNoYXIgKmNvcnJlY3Rfc2ln bmF0dXJlOwotCXVuc2lnbmVkIGludCBjb3JyZWN0X3NpZ2xlbiwgcmV0OwotCXN0cnVjdCB0aHJl YWRfYXJncyBtYXN0ZXJfYXJncywgKmFyZ3M7Ci0JaW50IHN5bmMgPSAwLCBzZWVkID0gMDsKLQlp bnQgYWdhaW4gPSAxOwotI2lmZGVmIFVTRV9FTkdJTkUKLQljaGFyICplbmdpbmUgPSBOVUxMOwot CUVOR0lORSAqZSA9IE5VTEw7Ci0jZW5kaWYKLQotCXB0aHJlYWRfbXV0ZXhfaW5pdCgmZmFpbHVy ZV9jb3VudF9sb2NrLCBOVUxMKTsKLQotCWZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspIHsKLQkJ aWYgKHN0cmNtcChhcmd2W2ldLCAiLS1zZWVkIikgPT0gMCkgewotCQkJcHJpbnRmKCJTZWVkaW5n IFBSTkcuXG4iKTsKLQkJCXNlZWQrKzsKLQkJfSBlbHNlCi0JCWlmIChzdHJjbXAoYXJndltpXSwg Ii0tc3luYyIpID09IDApIHsKLQkJCXByaW50ZigiUnVubmluZyBzeW5jaHJvbml6ZWQuXG4iKTsK LQkJCXN5bmMrKzsKLQkJfSBlbHNlCi0JCWlmICgoc3RyY21wKGFyZ3ZbaV0sICItLXRocmVhZHMi KSA9PSAwKSAmJiAoaSA8IGFyZ2MgLSAxKSkgewotCQkJaSsrOwotCQkJdGhyZWFkX2NvdW50ID0g YXRvbChhcmd2W2ldKTsKLQkJCWlmICh0aHJlYWRfY291bnQgPiBNQVhfVEhSRUFEX0NPVU5UKSB7 Ci0JCQkJdGhyZWFkX2NvdW50ID0gTUFYX1RIUkVBRF9DT1VOVDsKLQkJCX0KLQkJCXByaW50Zigi U3RhcnRpbmcgJWQgdGhyZWFkcy5cbiIsIHRocmVhZF9jb3VudCk7Ci0JCQlzeW5jKys7Ci0JCX0g ZWxzZQotCQlpZiAoc3RyY21wKGFyZ3ZbaV0sICItLXNpZ24iKSA9PSAwKSB7Ci0JCQlwcmludGYo IkxvY2tpbmcgc2lnbmluZy5cbiIpOwotCQkJbG9ja2VkX3NpZ24rKzsKLQkJfSBlbHNlCi0JCWlm IChzdHJjbXAoYXJndltpXSwgIi0tdmVyaWZ5IikgPT0gMCkgewotCQkJcHJpbnRmKCJMb2NraW5n IHZlcmlmaWVzLlxuIik7Ci0JCQlsb2NrZWRfdmVyaWZ5Kys7Ci0JCX0gZWxzZQotCQlpZiAoc3Ry Y21wKGFyZ3ZbaV0sICItLXByaW50IikgPT0gMCkgewotCQkJcHJpbnRmKCJUcmFjaW5nLlxuIik7 Ci0JCQlwcmludCsrOwotI2lmZGVmIFVTRV9FTkdJTkUKLQkJfSBlbHNlCi0JCWlmICgoc3RyY21w KGFyZ3ZbaV0sICItLWVuZ2luZSIpID09IDApICYmIChpIDwgYXJnYyAtIDEpKSB7Ci0JCQlwcmlu dGYoIlVzaW5nIGVuZ2luZSBcIiVzXCIuXG4iLCBhcmd2W2kgKyAxXSk7Ci0JCQllbmdpbmUgPSBh cmd2W2kgKyAxXTsKLQkJCWkrKzsKLSNlbmRpZgotCQl9IGVsc2UgewotCQkJcHJpbnRmKCJCYWQg YXJndW1lbnQ6ICVzXG4iLCBhcmd2W2ldKTsKLQkJCXJldHVybiAxOwotCQl9Ci0JfQotCi0JLyog R2V0IHNvbWUgcmFuZG9tIGRhdGEgdG8gc2lnbi4gKi8KLQlmZCA9IG9wZW4oIi9kZXYvdXJhbmRv bSIsIE9fUkRPTkxZKTsKLQlpZiAoZmQgPT0gLTEpIHsKLQkJZnByaW50ZihzdGRlcnIsICJFcnJv ciBvcGVuaW5nIC9kZXYvdXJhbmRvbTogJXNcbiIsCi0JCQlzdHJlcnJvcihlcnJubykpOwotCX0K LQotCWlmIChwcmludCkgewotCQlmcHJpbnRmKHN0ZGVyciwgIlJlYWRpbmcgcmFuZG9tIGRhdGEu XG4iKTsKLQl9Ci0JbWVzc2FnZSA9IG1hbGxvYyhtZXNzYWdlX2xlbiA9IDkzNzEpOwotCXJlYWQo ZmQsIG1lc3NhZ2UsIG1lc3NhZ2VfbGVuKTsKLQljbG9zZShmZCk7Ci0KLQkvKiBJbml0aWFsaXpl IHRoZSBTU0wgbGlicmFyeSBhbmQgc2V0IHVwIHRocmVhZC1zYWZlIGxvY2tpbmcuICovCi0JRVJS X2xvYWRfY3J5cHRvX3N0cmluZ3MoKTsKLQlTU0xfbGlicmFyeV9pbml0KCk7Ci0JbXV0ZXhfbG9j a3MgPSBtYWxsb2Moc2l6ZW9mKHB0aHJlYWRfbXV0ZXhfdCkgKiBDUllQVE9fbnVtX2xvY2tzKCkp OwotCWZvciAoaSA9IDA7IGkgPCBDUllQVE9fbnVtX2xvY2tzKCk7IGkrKykgewotCQlwdGhyZWFk X211dGV4X2luaXQoJm11dGV4X2xvY2tzW2ldLCBOVUxMKTsKLQl9Ci0JQ1JZUFRPX3NldF9pZF9j YWxsYmFjayh0aHJlYWRfaWRfY2IpOwotCUNSWVBUT19zZXRfbG9ja2luZ19jYWxsYmFjayhsb2Nr X2NiKTsKLQlFUlJfcHJpbnRfZXJyb3JzX2ZwKHN0ZG91dCk7Ci0KLQkvKiBTZWVkIHRoZSBQUk5H IGlmIHdlIHdlcmUgYXNrZWQgdG8gZG8gc28uICovCi0JaWYgKHNlZWQpIHsKLQkJaWYgKHByaW50 KSB7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgIlNlZWRpbmcgUFJORy5cbiIpOwotCQl9Ci0JCVJBTkRf YWRkKG1lc3NhZ2UsIG1lc3NhZ2VfbGVuLCBtZXNzYWdlX2xlbik7Ci0JCUVSUl9wcmludF9lcnJv cnNfZnAoc3Rkb3V0KTsKLQl9Ci0KLQkvKiBUdXJuIG9uIGEgaGFyZHdhcmUgY3J5cHRvIGRldmlj ZSBpZiBhc2tlZCB0byBkbyBzby4gKi8KLSNpZmRlZiBVU0VfRU5HSU5FCi0JaWYgKGVuZ2luZSkg ewotI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgID49IDB4MDA5MDcwMGZMCi0JCUVOR0lORV9s b2FkX2J1aWx0aW5fZW5naW5lcygpOwotI2VuZGlmCi0JCWlmIChwcmludCkgewotCQkJZnByaW50 ZihzdGRlcnIsICJJbml0aWFsaXppbmcgXCIlc1wiIGVuZ2luZS5cbiIsCi0JCQkJZW5naW5lKTsK LQkJfQotCQllID0gRU5HSU5FX2J5X2lkKGVuZ2luZSk7Ci0JCUVSUl9wcmludF9lcnJvcnNfZnAo c3Rkb3V0KTsKLQkJaWYgKGUpIHsKLQkJCWkgPSBFTkdJTkVfaW5pdChlKTsKLQkJCUVSUl9wcmlu dF9lcnJvcnNfZnAoc3Rkb3V0KTsKLQkJCWkgPSBFTkdJTkVfc2V0X2RlZmF1bHRfUlNBKGUpOwot CQkJRVJSX3ByaW50X2Vycm9yc19mcChzdGRvdXQpOwotCQl9Ci0JfQotI2VuZGlmCi0KLQkvKiBD b21wdXRlIHRoZSBkaWdlc3QgZm9yIHRoZSBzaWduYXR1cmUuICovCi0JaWYgKHByaW50KSB7Ci0J CWZwcmludGYoc3RkZXJyLCAiQ29tcHV0aW5nIGRpZ2VzdC5cbiIpOwotCX0KLQlkaWdlc3QgPSBt YWxsb2MoZGlnZXN0X2xlbiA9IE1ENV9ESUdFU1RfTEVOR1RIKTsKLQlNRDVfSW5pdCgmbWQ1KTsK LQlNRDVfVXBkYXRlKCZtZDUsIG1lc3NhZ2UsIG1lc3NhZ2VfbGVuKTsKLQlNRDVfRmluYWwoZGln ZXN0LCAmbWQ1KTsKLQotCS8qIEdlbmVyYXRlIGEgc2lnbmluZyBrZXkuICovCi0JaWYgKHByaW50 KSB7Ci0JCWZwcmludGYoc3RkZXJyLCAiR2VuZXJhdGluZyBrZXkuXG4iKTsKLQl9Ci0JcnNhID0g UlNBX2dlbmVyYXRlX2tleSg0MDk2LCAzLCBOVUxMLCBOVUxMKTsKLQlFUlJfcHJpbnRfZXJyb3Jz X2ZwKHN0ZG91dCk7Ci0JaWYgKHJzYSA9PSBOVUxMKSB7Ci0JCV9leGl0KDEpOwotCX0KLQotCS8q IFNpZ24gdGhlIGRhdGEuICovCi0JY29ycmVjdF9zaWdsZW4gPSBSU0Ffc2l6ZShyc2EpOwotCWNv cnJlY3Rfc2lnbmF0dXJlID0gbWFsbG9jKGNvcnJlY3Rfc2lnbGVuKTsKLQlmb3IgKGkgPSAwOyBp IDwgTUFJTl9DT1VOVDsgaSsrKSB7Ci0JCWlmIChwcmludCkgewotCQkJZnByaW50ZihzdGRlcnIs ICJTaWduaW5nIGRhdGEgKCVkKS5cbiIsIGkpOwotCQl9Ci0JCXJldCA9IFJTQV9jaGVja19rZXko cnNhKTsKLQkJRVJSX3ByaW50X2Vycm9yc19mcChzdGRvdXQpOwotCQlpZiAocmV0ICE9IDEpIHsK LQkJCWZhaWx1cmUoKTsKLQkJfQotCQljb3JyZWN0X3NpZ2xlbiA9IFJTQV9zaXplKHJzYSk7Ci0J CXJldCA9IFJTQV9zaWduKE5JRF9tZDUsIGRpZ2VzdCwgZGlnZXN0X2xlbiwKLQkJCSAgICAgICBj b3JyZWN0X3NpZ25hdHVyZSwgJmNvcnJlY3Rfc2lnbGVuLAotCQkJICAgICAgIHJzYSk7Ci0JCUVS Ul9wcmludF9lcnJvcnNfZnAoc3Rkb3V0KTsKLQkJaWYgKHJldCAhPSAxKSB7Ci0JCQlfZXhpdCgy KTsKLQkJfQotCQlpZiAocHJpbnQpIHsKLQkJCWZwcmludGYoc3RkZXJyLCAiVmVyaWZ5aW5nIGRh dGEgKCVkKS5cbiIsIGkpOwotCQl9Ci0JCXJldCA9IFJTQV92ZXJpZnkoTklEX21kNSwgZGlnZXN0 LCBkaWdlc3RfbGVuLAotCQkJICAgICAgICAgY29ycmVjdF9zaWduYXR1cmUsIGNvcnJlY3Rfc2ln bGVuLAotCQkJICAgICAgICAgcnNhKTsKLQkJaWYgKHJldCAhPSAxKSB7Ci0JCQlfZXhpdCgyKTsK LQkJfQotCX0KLQotCS8qIENvbGxlY3QgdXAgdGhlIGluZm9yYW10aW9uIHdoaWNoIG90aGVyIHRo cmVhZHMgd2lsbCBuZWVkIGZvcgotCSAqIGNvbXBhcmluZyB0aGVpciBzaWduYXR1cmUgcmVzdWx0 cyB3aXRoIG91cnMuICovCi0JbWFzdGVyX2FyZ3MucnNhID0gcnNhOwotCW1hc3Rlcl9hcmdzLmRp Z2VzdF90eXBlID0gTklEX21kNTsKLQltYXN0ZXJfYXJncy5kaWdlc3QgPSBkaWdlc3Q7Ci0JbWFz dGVyX2FyZ3MuZGlnZXN0X2xlbiA9IGRpZ2VzdF9sZW47Ci0JbWFzdGVyX2FyZ3Muc2lnbmF0dXJl ID0gY29ycmVjdF9zaWduYXR1cmU7Ci0JbWFzdGVyX2FyZ3Muc2lnbmF0dXJlX2xlbiA9IGNvcnJl Y3Rfc2lnbGVuOwotCW1hc3Rlcl9hcmdzLm1haW5fdGhyZWFkID0gcHRocmVhZF9zZWxmKCk7Ci0J Ci0JZnByaW50ZihzdGRvdXQsICJQZXJmb3JtaW5nICVkIHNpZ25hdHVyZXMgaW4gZWFjaCBvZiAl ZCB0aHJlYWRzICIKLQkJIiglZCwgJWQpLlxuIiwgSVRFUkFUSU9OX0NPVU5ULCB0aHJlYWRfY291 bnQsCi0JCWRpZ2VzdF9sZW4sIGNvcnJlY3Rfc2lnbGVuKTsKLQlmZmx1c2goTlVMTCk7Ci0KLQkv KiBTdGFydCB1cCBhbGwgb2YgdGhlIHRocmVhZHMuICovCi0JZm9yIChpID0gMDsgaSA8IHRocmVh ZF9jb3VudDsgaSsrKSB7Ci0JCWFyZ3MgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCB0aHJlYWRfYXJn cykpOwotCQlhcmdzLT5yc2EgPSBSU0FQcml2YXRlS2V5X2R1cChtYXN0ZXJfYXJncy5yc2EpOwot CQlhcmdzLT5kaWdlc3RfdHlwZSA9IG1hc3Rlcl9hcmdzLmRpZ2VzdF90eXBlOwotCQlhcmdzLT5k aWdlc3RfbGVuID0gbWFzdGVyX2FyZ3MuZGlnZXN0X2xlbjsKLQkJYXJncy0+ZGlnZXN0ID0geG1l bWR1cChtYXN0ZXJfYXJncy5kaWdlc3QsIGFyZ3MtPmRpZ2VzdF9sZW4pOwotCQlhcmdzLT5zaWdu YXR1cmVfbGVuID0gbWFzdGVyX2FyZ3Muc2lnbmF0dXJlX2xlbjsKLQkJYXJncy0+c2lnbmF0dXJl ID0geG1lbWR1cChtYXN0ZXJfYXJncy5zaWduYXR1cmUsCi0JCQkJCSAgYXJncy0+c2lnbmF0dXJl X2xlbik7Ci0JCWFyZ3MtPm1haW5fdGhyZWFkID0gcHRocmVhZF9zZWxmKCk7Ci0JCXJldCA9IHB0 aHJlYWRfY3JlYXRlKCZ0aHJlYWRzW2ldLCBOVUxMLCB0aHJlYWRfbWFpbiwgYXJncyk7Ci0JCXdo aWxlICgocmV0ICE9IDApICYmIChlcnJubyA9PSBFQUdBSU4pKSB7Ci0JCQlyZXQgPSBwdGhyZWFk X2NyZWF0ZSgmdGhyZWFkc1tpXSwgTlVMTCwKLQkJCQkJICAgICB0aHJlYWRfbWFpbiwgJmFyZ3Mp OwotCQkJZnByaW50ZihzdGRlcnIsICJUaHJlYWQgbGltaXQgaGl0IGF0ICVkLlxuIiwgaSk7Ci0J CX0KLQkJaWYgKHJldCAhPSAwKSB7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgIlVuYWJsZSB0byBjcmVh dGUgdGhyZWFkICVkOiAlcy5cbiIsCi0JCQkJaSwgc3RyZXJyb3IoZXJybm8pKTsKLQkJCXRocmVh ZHNbaV0gPSAtMTsKLQkJfSBlbHNlIHsKLQkJCWlmIChzeW5jKSB7Ci0JCQkJcmV0ID0gcHRocmVh ZF9qb2luKHRocmVhZHNbaV0sIE5VTEwpOwotCQkJCWFzc2VydChyZXQgPT0gMCk7Ci0JCQl9Ci0J CQlpZiAocHJpbnQpIHsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgIiVkXG4iLCBpKTsKLQkJCX0KLQkJ fQotCX0KLQotCS8qIFdhaXQgZm9yIGFsbCB0aHJlYWRzIHRvIGNvbXBsZXRlLiAgU28gbG9uZyBh cyB3ZSBjYW4gZmluZCBhbgotCSAqIHVuam9pbmVkIHRocmVhZCwga2VlcCBqb2luaW5nIHRocmVh ZHMuICovCi0JZG8gewotCQlhZ2FpbiA9IDA7Ci0JCWZvciAoaSA9IDA7IGkgPCB0aHJlYWRfY291 bnQ7IGkrKykgewotCQkJLyogSWYgd2UgaGF2ZSBhbiB1bnRlcm1pbmF0ZWQgdGhyZWFkLCBqb2lu IGl0LiAqLwotCQkJaWYgKHRocmVhZHNbaV0gIT0gLTEpIHsKLQkJCQlhZ2FpbiA9IDE7Ci0JCQkJ aWYgKHByaW50KSB7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCAiSm9pbmluZyB0aHJlYWQgJWQuXG4i LAotCQkJCQkJaSk7Ci0JCQkJfQotCQkJCXB0aHJlYWRfam9pbih0aHJlYWRzW2ldLCBOVUxMKTsK LQkJCQl0aHJlYWRzW2ldID0gLTE7Ci0JCQkJYnJlYWs7Ci0JCQl9Ci0JCX0KLQl9IHdoaWxlIChh Z2FpbiA9PSAxKTsKLQotCWZwcmludGYoc3RkZXJyLCAiJWxkIGZhaWx1cmVzXG4iLCBmYWlsdXJl X2NvdW50KTsKLQotCXJldHVybiAoZmFpbHVyZV9jb3VudCAhPSAwKTsKLX0KCmRpZmYgLS1naXQg YS9vcGVuc3NsLnNwZWMgYi9vcGVuc3NsLnNwZWMKaW5kZXggY2FlMDJlMC4uZDkyOTY1ZiAxMDA2 NDQKLS0tIGEvb3BlbnNzbC5zcGVjCisrKyBiL29wZW5zc2wuc3BlYwpAQCAtOSwxMCArOSw5IEBA CiAjIDAuOS44ZyBzb3ZlcnNpb24gPSA3CiAjIDAuOS44amsgKyBFQVAtRkFTVCBzb3ZlcnNpb24g PSA4CiAjIDEuMC4wIHNvdmVyc2lvbiA9IDEwCi0lZGVmaW5lIHNvdmVyc2lvbiAxMAotCi0jIE51 bWJlciBvZiB0aHJlYWRzIHRvIHNwYXduIHdoZW4gdGVzdGluZyBzb21lIHRocmVhZGluZyBmaXhl cy4KLSVkZWZpbmUgdGhyZWFkX3Rlc3RfdGhyZWFkcyAlez90aHJlYWRzOiV7dGhyZWFkc319JXsh P3RocmVhZHM6MX0KKyMgMS4xLjAgc292ZXJzaW9uID0gMS4xIChzYW1lIGFzIHVwc3RyZWFtIGFs dGhvdWdoIHByZXNlbmNlIG9mIHNvbWUgc3ltYm9scworIyAgICAgICAgICAgICAgICAgICAgICAg IGRlcGVuZHMgb24gYnVpbGQgY29uZmlndXJhdGlvbiBvcHRpb25zKQorJWRlZmluZSBzb3ZlcnNp b24gMS4xCiAKICMgQXJjaGVzIG9uIHdoaWNoIHdlIG5lZWQgdG8gcHJldmVudCBhcmNoIGNvbmZs aWN0cyBvbiBvcGVuc3NsY29uZi5oLCBtdXN0CiAjIGFsc28gYmUgaGFuZGxlZCBpbiBvcGVuc3Ns Y29uZi1uZXcuaC4KQEAgLTIyLDggKzIxLDggQEAKIAogU3VtbWFyeTogVXRpbGl0aWVzIGZyb20g dGhlIGdlbmVyYWwgcHVycG9zZSBjcnlwdG9ncmFwaHkgbGlicmFyeSB3aXRoIFRMUyBpbXBsZW1l bnRhdGlvbgogTmFtZTogb3BlbnNzbAotVmVyc2lvbjogMS4wLjJqCi1SZWxlYXNlOiAyJXs/ZGlz dH0KK1ZlcnNpb246IDEuMS4wYgorUmVsZWFzZTogMSV7P2Rpc3R9CiBFcG9jaDogMQogIyBXZSBo YXZlIHRvIHJlbW92ZSBjZXJ0YWluIHBhdGVudGVkIGFsZ29yaXRobXMgZnJvbSB0aGUgb3BlbnNz bCBzb3VyY2UKICMgdGFyYmFsbCB3aXRoIHRoZSBob2JibGUtb3BlbnNzbCBzY3JpcHQgd2hpY2gg aXMgaW5jbHVkZWQgYmVsb3cuCkBAIC0zMyw2OSArMzIsNDMgQEAgU291cmNlMTogaG9iYmxlLW9w ZW5zc2wKIFNvdXJjZTI6IE1ha2VmaWxlLmNlcnRpZmljYXRlCiBTb3VyY2U2OiBtYWtlLWR1bW15 LWNlcnQKIFNvdXJjZTc6IHJlbmV3LWR1bW15LWNlcnQKLVNvdXJjZTg6IG9wZW5zc2wtdGhyZWFk LXRlc3QuYwogU291cmNlOTogb3BlbnNzbGNvbmYtbmV3LmgKIFNvdXJjZTEwOiBvcGVuc3NsY29u Zi1uZXctd2FybmluZy5oCiBTb3VyY2UxMTogUkVBRE1FLkZJUFMKIFNvdXJjZTEyOiBlY19jdXJ2 ZS5jCiBTb3VyY2UxMzogZWN0ZXN0LmMKICMgQnVpbGQgY2hhbmdlcwotUGF0Y2gxOiBvcGVuc3Ns LTEuMC4yZS1ycG1idWlsZC5wYXRjaAotUGF0Y2gyOiBvcGVuc3NsLTEuMC4yYS1kZWZhdWx0cy5w YXRjaAotUGF0Y2g0OiBvcGVuc3NsLTEuMC4yaS1lbmdpbmVzZGlyLnBhdGNoCi1QYXRjaDU6IG9w ZW5zc2wtMS4wLjJhLW5vLXJwYXRoLnBhdGNoCi1QYXRjaDY6IG9wZW5zc2wtMS4wLjJhLXRlc3Qt dXNlLWxvY2FsaG9zdC5wYXRjaAotUGF0Y2g3OiBvcGVuc3NsLTEuMC4wLXRpbWV6b25lLnBhdGNo Ci1QYXRjaDg6IG9wZW5zc2wtMS4wLjFjLXBlcmxmaW5kLnBhdGNoCi1QYXRjaDk6IG9wZW5zc2wt MS4wLjFjLWFsaWFzaW5nLnBhdGNoCitQYXRjaDE6IG9wZW5zc2wtMS4xLjAtYnVpbGQucGF0Y2gK K1BhdGNoMjogb3BlbnNzbC0xLjEuMC1kZWZhdWx0cy5wYXRjaAorUGF0Y2gzOiBvcGVuc3NsLTEu MS4wLW5vLWh0bWwucGF0Y2gKK1BhdGNoNTogb3BlbnNzbC0xLjEuMC1uby1ycGF0aC5wYXRjaAog IyBCdWcgZml4ZXMKLVBhdGNoMjM6IG9wZW5zc2wtMS4wLjJjLWRlZmF1bHQtcGF0aHMucGF0Y2gK LVBhdGNoMjQ6IG9wZW5zc2wtMS4wLjJhLWlzc3Vlci1oYXNoLnBhdGNoCitQYXRjaDIxOiBvcGVu c3NsLTEuMS4wLWlzc3Vlci1oYXNoLnBhdGNoCitQYXRjaDIyOiBvcGVuc3NsLTEuMS4wLWFsZ28t ZG9jLnBhdGNoCitQYXRjaDIzOiBvcGVuc3NsLTEuMS4wLW1hbmZpeC5wYXRjaAogIyBGdW5jdGlv bmFsaXR5IGNoYW5nZXMKLVBhdGNoMzM6IG9wZW5zc2wtMS4wLjAtYmV0YTQtY2EtZGlyLnBhdGNo Ci1QYXRjaDM0OiBvcGVuc3NsLTEuMC4yYS14NTA5LnBhdGNoCi1QYXRjaDM1OiBvcGVuc3NsLTEu MC4yYS12ZXJzaW9uLWFkZC1lbmdpbmVzLnBhdGNoCi1QYXRjaDM5OiBvcGVuc3NsLTEuMC4yYS1p cHY2LWFwcHMucGF0Y2gKLVBhdGNoNDA6IG9wZW5zc2wtMS4wLjJpLWZpcHMucGF0Y2gKLVBhdGNo NDU6IG9wZW5zc2wtMS4wLjJhLWVudi16bGliLnBhdGNoCi1QYXRjaDQ3OiBvcGVuc3NsLTEuMC4y YS1yZWFkbWUtd2FybmluZy5wYXRjaAotUGF0Y2g0OTogb3BlbnNzbC0xLjAuMWktYWxnby1kb2Mu cGF0Y2gKLVBhdGNoNTA6IG9wZW5zc2wtMS4wLjJhLWR0bHMxLWFiaS5wYXRjaAotUGF0Y2g1MTog b3BlbnNzbC0xLjAuMmEtdmVyc2lvbi5wYXRjaAotUGF0Y2g1Njogb3BlbnNzbC0xLjAuMmEtcnNh LXg5MzEucGF0Y2gKLVBhdGNoNTg6IG9wZW5zc2wtMS4wLjJhLWZpcHMtbWQ1LWFsbG93LnBhdGNo Ci1QYXRjaDYwOiBvcGVuc3NsLTEuMC4yYS1hcHBzLWRnc3QucGF0Y2gKLVBhdGNoNjM6IG9wZW5z c2wtMS4wLjJhLXhtcHAtc3RhcnR0bHMucGF0Y2gKLVBhdGNoNjU6IG9wZW5zc2wtMS4wLjJpLWNo aWwtZml4ZXMucGF0Y2gKLVBhdGNoNjY6IG9wZW5zc2wtMS4wLjJoLXBrZ2NvbmZpZy5wYXRjaAot UGF0Y2g2ODogb3BlbnNzbC0xLjAuMmktc2VjdXJlLWdldGVudi5wYXRjaAotUGF0Y2g3MDogb3Bl bnNzbC0xLjAuMmEtZmlwcy1lYy5wYXRjaAotUGF0Y2g3MTogb3BlbnNzbC0xLjAuMmctbWFuZml4 LnBhdGNoCi1QYXRjaDcyOiBvcGVuc3NsLTEuMC4yYS1maXBzLWN0b3IucGF0Y2gKLVBhdGNoNzM6 IG9wZW5zc2wtMS4wLjJjLWVjYy1zdWl0ZWIucGF0Y2gKLVBhdGNoNzQ6IG9wZW5zc2wtMS4wLjJh LW5vLW1kNS12ZXJpZnkucGF0Y2gKLVBhdGNoNzU6IG9wZW5zc2wtMS4wLjJhLWNvbXBhdC1zeW1i b2xzLnBhdGNoCi1QYXRjaDc2OiBvcGVuc3NsLTEuMC4yaS1uZXctZmlwcy1yZXFzLnBhdGNoCi1Q YXRjaDc4OiBvcGVuc3NsLTEuMC4yYS1jYy1yZXFzLnBhdGNoCi1QYXRjaDkwOiBvcGVuc3NsLTEu MC4yaS1lbmMtZmFpbC5wYXRjaAotUGF0Y2g5Mjogb3BlbnNzbC0xLjAuMmEtc3lzdGVtLWNpcGhl cmxpc3QucGF0Y2gKLVBhdGNoOTM6IG9wZW5zc2wtMS4wLjJnLWRpc2FibGUtc3NsdjJ2My5wYXRj aAotUGF0Y2g5NDogb3BlbnNzbC0xLjAuMmQtc2VjcDI1NmsxLnBhdGNoCi1QYXRjaDk1OiBvcGVu c3NsLTEuMC4yZS1yZW1vdmUtbmlzdHAyMjQucGF0Y2gKLVBhdGNoOTY6IG9wZW5zc2wtMS4wLjJl LXNwZWVkLWRvYy5wYXRjaAorUGF0Y2gzMTogb3BlbnNzbC0xLjEuMC1jYS1kaXIucGF0Y2gKK1Bh dGNoMzI6IG9wZW5zc2wtMS4xLjAtdmVyc2lvbi1hZGQtZW5naW5lcy5wYXRjaAorUGF0Y2gzMzog b3BlbnNzbC0xLjEuMC1hcHBzLWRnc3QucGF0Y2gKK1BhdGNoMzQ6IG9wZW5zc2wtMS4xLjAtc3Rh cnR0bHMteG1wcC5wYXRjaAorUGF0Y2gzNTogb3BlbnNzbC0xLjEuMC1jaGlsLWZpeGVzLnBhdGNo CitQYXRjaDM2OiBvcGVuc3NsLTEuMS4wLXNlY3VyZS1nZXRlbnYucGF0Y2gKK1BhdGNoMzc6IG9w ZW5zc2wtMS4xLjAtZWMtY3VydmVzLnBhdGNoCitQYXRjaDM4OiBvcGVuc3NsLTEuMS4wLW5vLW1k NS12ZXJpZnkucGF0Y2gKK1BhdGNoMzk6IG9wZW5zc2wtMS4xLjAtY2MtcmVxcy5wYXRjaAorUGF0 Y2g0MDogb3BlbnNzbC0xLjEuMC1kaXNhYmxlLXNzbDMucGF0Y2gKK1BhdGNoNDE6IG9wZW5zc2wt MS4xLjAtc3lzdGVtLWNpcGhlcmxpc3QucGF0Y2gKK1BhdGNoNDI6IG9wZW5zc2wtMS4xLjAtZmlw cy5wYXRjaAogIyBCYWNrcG9ydGVkIGZpeGVzIGluY2x1ZGluZyBzZWN1cml0eSBmaXhlcwotUGF0 Y2g4MDogb3BlbnNzbC0xLjAuMmUtd3JhcC1wYWQucGF0Y2gKLVBhdGNoODE6IG9wZW5zc2wtMS4w LjJhLXBhZGxvY2s2NC5wYXRjaAotUGF0Y2g4Mjogb3BlbnNzbC0xLjAuMmktdHJ1c3RlZC1maXJz dC1kb2MucGF0Y2gKIAogTGljZW5zZTogT3BlblNTTAogR3JvdXA6IFN5c3RlbSBFbnZpcm9ubWVu dC9MaWJyYXJpZXMKIFVSTDogaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8KLUJ1aWxkUm9vdDogJXtf dG1wcGF0aH0vJXtuYW1lfS0le3ZlcnNpb259LXJvb3QKLUJ1aWxkUmVxdWlyZXM6IGNvcmV1dGls cywga3JiNS1kZXZlbCwgcGVybCwgcGVybC1nZW5lcmF0b3JzLCBzZWQsIHpsaWItZGV2ZWwsIC91 c3IvYmluL2NtcAorQnVpbGRSZXF1aXJlczogY29yZXV0aWxzLCBrcmI1LWRldmVsLCBwZXJsLCBz ZWQsIHpsaWItZGV2ZWwsIC91c3IvYmluL2NtcAogQnVpbGRSZXF1aXJlczogbGtzY3RwLXRvb2xz LWRldmVsCiBCdWlsZFJlcXVpcmVzOiAvdXNyL2Jpbi9yZW5hbWUKIEJ1aWxkUmVxdWlyZXM6IC91 c3IvYmluL3BvZDJtYW4KK0J1aWxkUmVxdWlyZXM6IHBlcmwoVGVzdDo6SGFybmVzcyksIHBlcmwo VGVzdDo6TW9yZSksIHBlcmwoTWF0aDo6QmlnSW50KQogUmVxdWlyZXM6IGNvcmV1dGlscywgbWFr ZQogUmVxdWlyZXM6ICV7bmFtZX0tbGlicyV7P19pc2F9ID0gJXtlcG9jaH06JXt2ZXJzaW9ufS0l e3JlbGVhc2V9CiAKQEAgLTE2MSw2NCArMTM0LDMwIEBAIGZyb20gb3RoZXIgZm9ybWF0cyB0byB0 aGUgZm9ybWF0cyB1c2VkIGJ5IHRoZSBPcGVuU1NMIHRvb2xraXQuCiAjIFRoZSB0YXJiYWxsIGhh cyBhbHJlYWR5IHRoZSBzb3VyY2VzIHJlbW92ZWQuCiAle1NPVVJDRTF9ID4gL2Rldi9udWxsCiAK LWNwICV7U09VUkNFMTJ9ICV7U09VUkNFMTN9IGNyeXB0by9lYy8KK2NwICV7U09VUkNFMTJ9IGNy eXB0by9lYy8KK2NwICV7U09VUkNFMTN9IHRlc3QvCiAKLSVwYXRjaDEgLXAxIC1iIC5ycG1idWls ZAorJXBhdGNoMSAtcDEgLWIgLmJ1aWxkICAgJXs/X3Jhd2J1aWxkfQogJXBhdGNoMiAtcDEgLWIg LmRlZmF1bHRzCi0lcGF0Y2g0IC1wMSAtYiAuZW5naW5lc2RpciAlez9fcmF3YnVpbGR9CislcGF0 Y2gzIC1wMSAtYiAubm8taHRtbCAgJXs/X3Jhd2J1aWxkfQogJXBhdGNoNSAtcDEgLWIgLm5vLXJw YXRoCi0lcGF0Y2g2IC1wMSAtYiAudXNlLWxvY2FsaG9zdAotJXBhdGNoNyAtcDEgLWIgLnRpbWV6 b25lCi0lcGF0Y2g4IC1wMSAtYiAucGVybGZpbmQgJXs/X3Jhd2J1aWxkfQotJXBhdGNoOSAtcDEg LWIgLmFsaWFzaW5nCi0KLSVwYXRjaDIzIC1wMSAtYiAuZGVmYXVsdC1wYXRocwotJXBhdGNoMjQg LXAxIC1iIC5pc3N1ZXItaGFzaAotCi0lcGF0Y2gzMyAtcDEgLWIgLmNhLWRpcgotJXBhdGNoMzQg LXAxIC1iIC54NTA5Ci0lcGF0Y2gzNSAtcDEgLWIgLnZlcnNpb24tYWRkLWVuZ2luZXMKLSVwYXRj aDM5IC1wMSAtYiAuaXB2Ni1hcHBzCi0lcGF0Y2g0MCAtcDEgLWIgLmZpcHMKLSVwYXRjaDQ1IC1w MSAtYiAuZW52LXpsaWIKLSVwYXRjaDQ3IC1wMSAtYiAud2FybmluZwotJXBhdGNoNDkgLXAxIC1i IC5hbGdvLWRvYwotJXBhdGNoNTAgLXAxIC1iIC5kdGxzMS1hYmkKLSVwYXRjaDUxIC1wMSAtYiAu dmVyc2lvbgotJXBhdGNoNTYgLXAxIC1iIC54OTMxCi0lcGF0Y2g1OCAtcDEgLWIgLm1kNS1hbGxv dwotJXBhdGNoNjAgLXAxIC1iIC5kZ3N0Ci0lcGF0Y2g2MyAtcDEgLWIgLnN0YXJ0dGxzCi0lcGF0 Y2g2NSAtcDEgLWIgLmNoaWwKLSVwYXRjaDY2IC1wMSAtYiAucGtnY29uZmlnCi0lcGF0Y2g2OCAt cDEgLWIgLnNlY3VyZS1nZXRlbnYKLSVwYXRjaDcwIC1wMSAtYiAuZmlwcy1lYwotJXBhdGNoNzEg LXAxIC1iIC5tYW5maXgKLSVwYXRjaDcyIC1wMSAtYiAuZmlwcy1jdG9yCi0lcGF0Y2g3MyAtcDEg LWIgLnN1aXRlYgotJXBhdGNoNzQgLXAxIC1iIC5uby1tZDUtdmVyaWZ5Ci0lcGF0Y2g3NSAtcDEg LWIgLmNvbXBhdAotJXBhdGNoNzYgLXAxIC1iIC5maXBzLXJlcXMKLSVwYXRjaDc4IC1wMSAtYiAu Y2MtcmVxcwotJXBhdGNoOTAgLXAxIC1iIC5lbmMtZmFpbAotJXBhdGNoOTIgLXAxIC1iIC5zeXN0 ZW0KLSVwYXRjaDkzIC1wMSAtYiAudjJ2MwotJXBhdGNoOTQgLXAxIC1iIC5zZWNwMjU2azEKLSVw YXRjaDk1IC1wMSAtYiAubmlzdHAyMjQKLSVwYXRjaDk2IC1wMSAtYiAuc3BlZWQtZG9jCi0KLSVw YXRjaDgwIC1wMSAtYiAud3JhcAotJXBhdGNoODEgLXAxIC1iIC5wYWRsb2NrNjQKLSVwYXRjaDgy IC1wMSAtYiAudHJ1c3RlZC1maXJzdAotCi1zZWQgLWkgJ3MvU0hMSUJfVkVSU0lPTl9OVU1CRVIg IjEuMC4wIi9TSExJQl9WRVJTSU9OX05VTUJFUiAiJXt2ZXJzaW9ufSIvJyBjcnlwdG8vb3BlbnNz bHYuaAotCi0jIE1vZGlmeSB0aGUgdmFyaW91cyBwZXJsIHNjcmlwdHMgdG8gcmVmZXJlbmNlIHBl cmwgaW4gdGhlIHJpZ2h0IGxvY2F0aW9uLgotcGVybCB1dGlsL3BlcmxwYXRoLnBsIGBkaXJuYW1l ICV7X19wZXJsfWAKLQotIyBHZW5lcmF0ZSBhIHRhYmxlIHdpdGggdGhlIGNvbXBpbGUgc2V0dGlu Z3MgZm9yIG15IHBlcnVzYWwuCi10b3VjaCBNYWtlZmlsZQotbWFrZSBUQUJMRSBQRVJMPSV7X19w ZXJsfQorCislcGF0Y2gyMSAtcDEgLWIgLmlzc3Vlci1oYXNoCislcGF0Y2gyMiAtcDEgLWIgLmFs Z28tZG9jCislcGF0Y2gyMyAtcDEgLWIgLm1hbmZpeAorCislcGF0Y2gzMSAtcDEgLWIgLmNhLWRp cgorJXBhdGNoMzIgLXAxIC1iIC52ZXJzaW9uLWFkZC1lbmdpbmVzCislcGF0Y2gzMyAtcDEgLWIg LmRnc3QKKyVwYXRjaDM0IC1wMSAtYiAueG1wcAorJXBhdGNoMzUgLXAxIC1iIC5jaGlsCislcGF0 Y2gzNiAtcDEgLWIgLnNlY3VyZS1nZXRlbnYKKyVwYXRjaDM3IC1wMSAtYiAuY3VydmVzCislcGF0 Y2gzOCAtcDEgLWIgLm5vLW1kNS12ZXJpZnkKKyVwYXRjaDM5IC1wMSAtYiAuY2MtcmVxcworJXBh dGNoNDAgLXAxIC1iIC5kaXNhYmxlLXNzbDMKKyVwYXRjaDQxIC1wMSAtYiAuc3lzdGVtLWNpcGhl cmxpc3QKKyVwYXRjaDQyIC1wMSAtYiAuZmlwcwogCiAlYnVpbGQKICMgRmlndXJlIG91dCB3aGlj aCBmbGFncyB3ZSB3YW50IHRvIHVzZS4KQEAgLTI4MCw2ICsyMTksMTIgQEAgc3NsZmxhZ3M9ZW5h YmxlLWVjX25pc3RwXzY0X2djY18xMjgKIHNzbGFyY2g9bGludXgtZ2VuZXJpYzY0CiAlZW5kaWYK IAorIyBBZGQgLVdhLC0tbm9leGVjc3RhY2sgaGVyZSBzbyB0aGF0IGxpYmNyeXB0bydzIGFzc2Vt YmxlciBtb2R1bGVzIHdpbGwgYmUKKyMgbWFya2VkIGFzIG5vdCByZXF1aXJpbmcgYW4gZXhlY3V0 YWJsZSBzdGFjay4KKyMgQWxzbyBhZGQgLURQVVJJRlkgdG8gbWFrZSB1c2luZyB2YWxncmluZCB3 aXRoIG9wZW5zc2wgZWFzaWVyIGFzIHdlIGRvIG5vdAorIyB3YW50IHRvIGRlcGVuZCBvbiB0aGUg dW5pbml0aWFsaXplZCBtZW1vcnkgYXMgYSBzb3VyY2Ugb2YgZW50cm9weSBhbnl3YXkuCitSUE1f T1BUX0ZMQUdTPSIkUlBNX09QVF9GTEFHUyAtV2EsLS1ub2V4ZWNzdGFjayAtRFBVUklGWSIKKwog IyBpYTY0LCB4ODZfNjQsIHBwYyBhcmUgT0sgYnkgZGVmYXVsdAogIyBDb25maWd1cmUgdGhlIGJ1 aWxkIHRyZWUuICBPdmVycmlkZSBPcGVuU1NMIGRlZmF1bHRzIHdpdGgga25vd24tZ29vZCBkZWZh dWx0cwogIyB1c2FibGUgb24gYWxsIHBsYXRmb3Jtcy4gIFRoZSBDb25maWd1cmUgc2NyaXB0IGFs cmVhZHkga25vd3MgdG8gdXNlIC1mUElDIGFuZApAQCAtMjg3LDIyICsyMzIsMTQgQEAgc3NsYXJj aD1saW51eC1nZW5lcmljNjQKIC4vQ29uZmlndXJlIFwKIAktLXByZWZpeD0le19wcmVmaXh9IC0t b3BlbnNzbGRpcj0le19zeXNjb25mZGlyfS9wa2kvdGxzICR7c3NsZmxhZ3N9IFwKIAktLXN5c3Rl bS1jaXBoZXJzLWZpbGU9JXtfc3lzY29uZmRpcn0vY3J5cHRvLXBvbGljaWVzL2JhY2stZW5kcy9v cGVuc3NsLmNvbmZpZyBcCi0JemxpYiBzY3RwIGVuYWJsZS1jYW1lbGxpYSBlbmFibGUtc2VlZCBl bmFibGUtdGxzZXh0IGVuYWJsZS1yZmMzNzc5IFwKLQllbmFibGUtY21zIGVuYWJsZS1tZDIgZW5h YmxlLXJjNSBcCisJemxpYiBlbmFibGUtY2FtZWxsaWEgZW5hYmxlLXNlZWQgZW5hYmxlLXJmYzM3 NzkgZW5hYmxlLXNjdHAgXAorCWVuYWJsZS1jbXMgZW5hYmxlLW1kMiBlbmFibGUtcmM1IGVuYWJs ZS1zc2wzIGVuYWJsZS1zc2wzLW1ldGhvZCBcCiAJbm8tbWRjMiBuby1lYzJtIG5vLWdvc3Qgbm8t c3JwIFwKLQktLXdpdGgta3JiNS1mbGF2b3I9TUlUIC0tZW5naW5lc2Rpcj0le19saWJkaXJ9L29w ZW5zc2wvZW5naW5lcyBcCi0JLS13aXRoLWtyYjUtZGlyPS91c3Igc2hhcmVkICAke3NzbGFyY2h9 ICV7PyFub2ZpcHM6Zmlwc30KKwlzaGFyZWQgICR7c3NsYXJjaH0gJFJQTV9PUFRfRkxBR1MKIAot IyBBZGQgLVdhLC0tbm9leGVjc3RhY2sgaGVyZSBzbyB0aGF0IGxpYmNyeXB0bydzIGFzc2VtYmxl ciBtb2R1bGVzIHdpbGwgYmUKLSMgbWFya2VkIGFzIG5vdCByZXF1aXJpbmcgYW4gZXhlY3V0YWJs ZSBzdGFjay4KLSMgQWxzbyBhZGQgLURQVVJJRlkgdG8gbWFrZSB1c2luZyB2YWxncmluZCB3aXRo IG9wZW5zc2wgZWFzaWVyIGFzIHdlIGRvIG5vdAotIyB3YW50IHRvIGRlcGVuZCBvbiB0aGUgdW5p bml0aWFsaXplZCBtZW1vcnkgYXMgYSBzb3VyY2Ugb2YgZW50cm9weSBhbnl3YXkuCi1SUE1fT1BU X0ZMQUdTPSIkUlBNX09QVF9GTEFHUyAtV2EsLS1ub2V4ZWNzdGFjayAtRFBVUklGWSIKLW1ha2Ug ZGVwZW5kCi1tYWtlIGFsbAordXRpbC9ta2RlZi5wbCBjcnlwdG8gdXBkYXRlCiAKLSMgR2VuZXJh dGUgaGFzaGVzIGZvciB0aGUgaW5jbHVkZWQgY2VydHMuCi1tYWtlIHJlaGFzaAorbWFrZSBhbGwK IAogIyBPdmVyd3JpdGUgRklQUyBSRUFETUUKIGNwIC1mICV7U09VUkNFMTF9IC4KQEAgLTMxNSwy NCArMjUyLDE0IEBAIGRvbmUKICVjaGVjawogIyBWZXJpZnkgdGhhdCB3aGF0IHdhcyBjb21waWxl ZCBhY3R1YWxseSB3b3Jrcy4KIAotIyBXZSBtdXN0IHJldmVydCBwYXRjaDMzIGJlZm9yZSB0ZXN0 cyBvdGhlcndpc2UgdGhleSB3aWxsIGZhaWwKLXBhdGNoIC1wMSAtUiA8ICV7UEFUQ0gzM30KKyMg V2UgbXVzdCByZXZlcnQgcGF0Y2gzMSBiZWZvcmUgdGVzdHMgb3RoZXJ3aXNlIHRoZXkgd2lsbCBm YWlsCitwYXRjaCAtcDEgLVIgPCAle1BBVENIMzF9CiAKIExEX0xJQlJBUllfUEFUSD1gcHdkYCR7 TERfTElCUkFSWV9QQVRIOis6JHtMRF9MSUJSQVJZX1BBVEh9fQogZXhwb3J0IExEX0xJQlJBUllf UEFUSAogT1BFTlNTTF9FTkFCTEVfTUQ1X1ZFUklGWT0KIGV4cG9ydCBPUEVOU1NMX0VOQUJMRV9N RDVfVkVSSUZZCi1tYWtlIC1DIHRlc3QgYXBwcyB0ZXN0cwotJXtfX2NjfSAtbyBvcGVuc3NsLXRo cmVhZC10ZXN0IFwKLQlga3JiNS1jb25maWcgLS1jZmxhZ3NgIFwKLQktSS4vaW5jbHVkZSBcCi0J JFJQTV9PUFRfRkxBR1MgXAotCSV7U09VUkNFOH0gXAotCS1MLiBcCi0JLWxzc2wgLWxjcnlwdG8g XAotCWBrcmI1LWNvbmZpZyAtLWxpYnNgIFwKLQktbHB0aHJlYWQgLWx6IC1sZGwKLS4vb3BlbnNz bC10aHJlYWQtdGVzdCAtLXRocmVhZHMgJXt0aHJlYWRfdGVzdF90aHJlYWRzfQorbWFrZSB0ZXN0 CiAKICMgQWRkIGdlbmVyYXRpb24gb2YgSE1BQyBjaGVja3N1bSBvZiB0aGUgZmluYWwgc3RyaXBw ZWQgbGlicmFyeQogJWRlZmluZSBfX3NwZWNfaW5zdGFsbF9wb3N0IFwKQEAgLTM1MSwxMyArMjc4 LDggQEAgbWFrZSAtQyB0ZXN0IGFwcHMgdGVzdHMKIFsgIiRSUE1fQlVJTERfUk9PVCIgIT0gIi8i IF0gJiYgcm0gLXJmICRSUE1fQlVJTERfUk9PVAogIyBJbnN0YWxsIE9wZW5TU0wuCiBpbnN0YWxs IC1kICRSUE1fQlVJTERfUk9PVHsle19iaW5kaXJ9LCV7X2luY2x1ZGVkaXJ9LCV7X2xpYmRpcn0s JXtfbWFuZGlyfSwle19saWJkaXJ9L29wZW5zc2x9Ci1tYWtlIElOU1RBTExfUFJFRklYPSRSUE1f QlVJTERfUk9PVCBpbnN0YWxsCi1tYWtlIElOU1RBTExfUFJFRklYPSRSUE1fQlVJTERfUk9PVCBp bnN0YWxsX2RvY3MKLW12ICRSUE1fQlVJTERfUk9PVCV7X2xpYmRpcn0vZW5naW5lcyAkUlBNX0JV SUxEX1JPT1Qle19saWJkaXJ9L29wZW5zc2wKLW12ICRSUE1fQlVJTERfUk9PVCV7X3N5c2NvbmZk aXJ9L3BraS90bHMvbWFuLyogJFJQTV9CVUlMRF9ST09UJXtfbWFuZGlyfS8KLXJtZGlyICRSUE1f QlVJTERfUk9PVCV7X3N5c2NvbmZkaXJ9L3BraS90bHMvbWFuCittYWtlIERFU1RESVI9JFJQTV9C VUlMRF9ST09UIGluc3RhbGwKIHJlbmFtZSBzby4le3NvdmVyc2lvbn0gc28uJXt2ZXJzaW9ufSAk UlBNX0JVSUxEX1JPT1Qle19saWJkaXJ9Lyouc28uJXtzb3ZlcnNpb259Ci1ta2RpciAkUlBNX0JV SUxEX1JPT1QvJXtfbGlifQogZm9yIGxpYiBpbiAkUlBNX0JVSUxEX1JPT1Qle19saWJkaXJ9Lyou c28uJXt2ZXJzaW9ufSA7IGRvCiAJY2htb2QgNzU1ICR7bGlifQogCWxuIC1zIC1mIGBiYXNlbmFt ZSAke2xpYn1gICRSUE1fQlVJTERfUk9PVCV7X2xpYmRpcn0vYGJhc2VuYW1lICR7bGlifSAuJXt2 ZXJzaW9ufWAKQEAgLTM2OCw4ICsyOTAsMTIgQEAgZG9uZQogIyBmb3IgZ2VuZXJhdGluZyB0aGVt IG9uIHRoZSBmbHkuCiBta2RpciAtcCAkUlBNX0JVSUxEX1JPT1Qle19zeXNjb25mZGlyfS9wa2kv dGxzL2NlcnRzCiBpbnN0YWxsIC1tNjQ0ICV7U09VUkNFMn0gJFJQTV9CVUlMRF9ST09UJXtfc3lz Y29uZmRpcn0vcGtpL3Rscy9jZXJ0cy9NYWtlZmlsZQotaW5zdGFsbCAtbTc1NSAle1NPVVJDRTZ9 ICRSUE1fQlVJTERfUk9PVCV7X3N5c2NvbmZkaXJ9L3BraS90bHMvY2VydHMvbWFrZS1kdW1teS1j ZXJ0Ci1pbnN0YWxsIC1tNzU1ICV7U09VUkNFN30gJFJQTV9CVUlMRF9ST09UJXtfc3lzY29uZmRp cn0vcGtpL3Rscy9jZXJ0cy9yZW5ldy1kdW1teS1jZXJ0CitpbnN0YWxsIC1tNzU1ICV7U09VUkNF Nn0gJFJQTV9CVUlMRF9ST09UJXtfYmluZGlyfS9tYWtlLWR1bW15LWNlcnQKK2luc3RhbGwgLW03 NTUgJXtTT1VSQ0U3fSAkUlBNX0JVSUxEX1JPT1Qle19iaW5kaXJ9L3JlbmV3LWR1bW15LWNlcnQK KworIyBNb3ZlIHJ1bmFibGUgcGVybCBzY3JpcHRzIHRvIGJpbmRpcgorbXYgJFJQTV9CVUlMRF9S T09UJXtfc3lzY29uZmRpcn0vcGtpL3Rscy9taXNjLyoucGwgJFJQTV9CVUlMRF9ST09UJXtfYmlu ZGlyfQorbXYgJFJQTV9CVUlMRF9ST09UJXtfc3lzY29uZmRpcn0vcGtpL3Rscy9taXNjL3RzZ2V0 ICRSUE1fQlVJTERfUk9PVCV7X2JpbmRpcn0KIAogIyBNYWtlIHN1cmUgd2UgYWN0dWFsbHkgaW5j bHVkZSB0aGUgaGVhZGVycyB3ZSBidWlsdCBhZ2FpbnN0LgogZm9yIGhlYWRlciBpbiAkUlBNX0JV SUxEX1JPT1Qle19pbmNsdWRlZGlyfS9vcGVuc3NsLyogOyBkbwpAQCAtMzk1LDExICszMjEsNiBA QCBmb3IgY29uZmxpY3QgaW4gcGFzc3dkIHJhbmQgOyBkbwogZG9uZQogcG9wZAogCi0jIFBpY2sg YSBDQSBzY3JpcHQuCi1wdXNoZCAgJFJQTV9CVUlMRF9ST09UJXtfc3lzY29uZmRpcn0vcGtpL3Rs cy9taXNjCi1tdiBDQS5zaCBDQQotcG9wZAotCiBta2RpciAtbTc1NSAkUlBNX0JVSUxEX1JPT1Ql e19zeXNjb25mZGlyfS9wa2kvQ0EKIG1rZGlyIC1tNzAwICRSUE1fQlVJTERfUk9PVCV7X3N5c2Nv bmZkaXJ9L3BraS9DQS9wcml2YXRlCiBta2RpciAtbTc1NSAkUlBNX0JVSUxEX1JPT1Qle19zeXNj b25mZGlyfS9wa2kvQ0EvY2VydHMKQEAgLTQxMCw2ICszMzEsOCBAQCBta2RpciAtbTc1NSAkUlBN X0JVSUxEX1JPT1Qle19zeXNjb25mZGlyfS9wa2kvQ0EvbmV3Y2VydHMKICMgbXVsaXRsaWIgY29u ZmxpY3RzIGFuZCB1bm5lY2Vzc2FyeSByZW5hbWVzIG9uIHVwZ3JhZGUKIHRvdWNoIC1yICV7U09V UkNFMn0gJFJQTV9CVUlMRF9ST09UJXtfc3lzY29uZmRpcn0vcGtpL3Rscy9vcGVuc3NsLmNuZgog CitybSAtZiAkUlBNX0JVSUxEX1JPT1Qle19zeXNjb25mZGlyfS9wa2kvdGxzL29wZW5zc2wuY25m LmRpc3QKKwogIyBEZXRlcm1pbmUgd2hpY2ggYXJjaCBvcGVuc3NsY29uZi5oIGlzIGdvaW5nIHRv IHRyeSB0byAjaW5jbHVkZS4KIGJhc2VhcmNoPSV7X2FyY2h9CiAlaWZhcmNoICV7aXg4Nn0KQEAg LTQzMyw0MCArMzU2LDI4IEBAIGNhdCAkUlBNX0JVSUxEX1JPT1QvJXtfcHJlZml4fS9pbmNsdWRl L29wZW5zc2wvb3BlbnNzbGNvbmYuaCA+PiBcCiBpbnN0YWxsIC1tNjQ0ICV7U09VUkNFOX0gXAog CSRSUE1fQlVJTERfUk9PVC8le19wcmVmaXh9L2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5o CiAlZW5kaWYKLQotIyBSZW1vdmUgdW51c2VkIGZpbGVzIGZyb20gdXBzdHJlYW0gZmlwcyBzdXBw b3J0Ci1ybSAtcmYgJFJQTV9CVUlMRF9ST09ULyV7X2JpbmRpcn0vb3BlbnNzbF9maXBzX2Zpbmdl cnByaW50Ci1ybSAtcmYgJFJQTV9CVUlMRF9ST09ULyV7X2xpYmRpcn0vZmlwc19wcmVtYWluLioK LXJtIC1yZiAkUlBNX0JVSUxEX1JPT1QvJXtfbGliZGlyfS9maXBzY2FuaXN0ZXIuKgorTERfTElC UkFSWV9QQVRIPWBwd2RgJHtMRF9MSUJSQVJZX1BBVEg6Kzoke0xEX0xJQlJBUllfUEFUSH19Citl eHBvcnQgTERfTElCUkFSWV9QQVRICiAKICVjbGVhbgogWyAiJFJQTV9CVUlMRF9ST09UIiAhPSAi LyIgXSAmJiBybSAtcmYgJFJQTV9CVUlMRF9ST09UCiAKICVmaWxlcwotJWRlZmF0dHIoLSxyb290 LHJvb3QpCiAleyE/X2xpY2Vuc2VkaXI6JWdsb2JhbCBsaWNlbnNlICUlZG9jfQogJWxpY2Vuc2Ug TElDRU5TRQogJWRvYyBGQVEgTkVXUyBSRUFETUUgUkVBRE1FLkZJUFMKLSV7X3N5c2NvbmZkaXJ9 L3BraS90bHMvY2VydHMvbWFrZS1kdW1teS1jZXJ0Ci0le19zeXNjb25mZGlyfS9wa2kvdGxzL2Nl cnRzL3JlbmV3LWR1bW15LWNlcnQKKyV7X2JpbmRpcn0vbWFrZS1kdW1teS1jZXJ0Cisle19iaW5k aXJ9L3JlbmV3LWR1bW15LWNlcnQKICV7X3N5c2NvbmZkaXJ9L3BraS90bHMvY2VydHMvTWFrZWZp bGUKLSV7X3N5c2NvbmZkaXJ9L3BraS90bHMvbWlzYy9DQQotJWRpciAle19zeXNjb25mZGlyfS9w a2kvQ0EKLSVkaXIgJXtfc3lzY29uZmRpcn0vcGtpL0NBL3ByaXZhdGUKLSVkaXIgJXtfc3lzY29u ZmRpcn0vcGtpL0NBL2NlcnRzCi0lZGlyICV7X3N5c2NvbmZkaXJ9L3BraS9DQS9jcmwKLSVkaXIg JXtfc3lzY29uZmRpcn0vcGtpL0NBL25ld2NlcnRzCi0le19zeXNjb25mZGlyfS9wa2kvdGxzL21p c2MvY18qCi0lYXR0cigwNzU1LHJvb3Qscm9vdCkgJXtfYmluZGlyfS9vcGVuc3NsCi0lYXR0cigw NjQ0LHJvb3Qscm9vdCkgJXtfbWFuZGlyfS9tYW4xKi8qCisle19iaW5kaXJ9L29wZW5zc2wKKyV7 X21hbmRpcn0vbWFuMSovKgorJXtfbWFuZGlyfS9tYW41Ki8qCisle19tYW5kaXJ9L21hbjcqLyoK ICVleGNsdWRlICV7X21hbmRpcn0vbWFuMSovKi5wbCoKICVleGNsdWRlICV7X21hbmRpcn0vbWFu MSovY19yZWhhc2gqCiAlZXhjbHVkZSAle19tYW5kaXJ9L21hbjEqL3RzZ2V0KgotJWF0dHIoMDY0 NCxyb290LHJvb3QpICV7X21hbmRpcn0vbWFuNSovKgotJWF0dHIoMDY0NCxyb290LHJvb3QpICV7 X21hbmRpcn0vbWFuNyovKgogCiAlZmlsZXMgbGlicwotJWRlZmF0dHIoLSxyb290LHJvb3QpCiAl eyE/X2xpY2Vuc2VkaXI6JWdsb2JhbCBsaWNlbnNlICUlZG9jfQogJWxpY2Vuc2UgTElDRU5TRQog JWRpciAle19zeXNjb25mZGlyfS9wa2kvdGxzCkBAIC00ODAsMzQgKzM5MSwzOSBAQCBybSAtcmYg JFJQTV9CVUlMRF9ST09ULyV7X2xpYmRpcn0vZmlwc2NhbmlzdGVyLioKICVhdHRyKDA3NTUscm9v dCxyb290KSAle19saWJkaXJ9L2xpYnNzbC5zby4le3NvdmVyc2lvbn0KICVhdHRyKDA2NDQscm9v dCxyb290KSAle19saWJkaXJ9Ly5saWJjcnlwdG8uc28uKi5obWFjCiAlYXR0cigwNjQ0LHJvb3Qs cm9vdCkgJXtfbGliZGlyfS8ubGlic3NsLnNvLiouaG1hYwotJWF0dHIoMDc1NSxyb290LHJvb3Qp ICV7X2xpYmRpcn0vb3BlbnNzbAorJWF0dHIoMDc1NSxyb290LHJvb3QpICV7X2xpYmRpcn0vZW5n aW5lcy0le3NvdmVyc2lvbn0KIAogJWZpbGVzIGRldmVsCi0lZGVmYXR0cigtLHJvb3Qscm9vdCkK LSVkb2MgZG9jL2MtaW5kZW50YXRpb24uZWwgZG9jL29wZW5zc2wudHh0IENIQU5HRVMKKyVkb2Mg Q0hBTkdFUyBkb2MvZGlyLWxvY2Fscy5leGFtcGxlLmVsIGRvYy9vcGVuc3NsLWMtaW5kZW50LmVs CiAle19wcmVmaXh9L2luY2x1ZGUvb3BlbnNzbAotJWF0dHIoMDc1NSxyb290LHJvb3QpICV7X2xp YmRpcn0vKi5zbwotJWF0dHIoMDY0NCxyb290LHJvb3QpICV7X21hbmRpcn0vbWFuMyovKgotJWF0 dHIoMDY0NCxyb290LHJvb3QpICV7X2xpYmRpcn0vcGtnY29uZmlnLyoucGMKKyV7X2xpYmRpcn0v Ki5zbworJXtfbWFuZGlyfS9tYW4zKi8qCisle19saWJkaXJ9L3BrZ2NvbmZpZy8qLnBjCiAKICVm aWxlcyBzdGF0aWMKLSVkZWZhdHRyKC0scm9vdCxyb290KQotJWF0dHIoMDY0NCxyb290LHJvb3Qp ICV7X2xpYmRpcn0vKi5hCisle19saWJkaXJ9LyouYQogCiAlZmlsZXMgcGVybAotJWRlZmF0dHIo LSxyb290LHJvb3QpCi0lYXR0cigwNzU1LHJvb3Qscm9vdCkgJXtfYmluZGlyfS9jX3JlaGFzaAot JWF0dHIoMDY0NCxyb290LHJvb3QpICV7X21hbmRpcn0vbWFuMSovKi5wbCoKLSVhdHRyKDA2NDQs cm9vdCxyb290KSAle19tYW5kaXJ9L21hbjEqL2NfcmVoYXNoKgotJWF0dHIoMDY0NCxyb290LHJv b3QpICV7X21hbmRpcn0vbWFuMSovdHNnZXQqCi0le19zeXNjb25mZGlyfS9wa2kvdGxzL21pc2Mv Ki5wbAotJXtfc3lzY29uZmRpcn0vcGtpL3Rscy9taXNjL3RzZ2V0Cisle19iaW5kaXJ9L2NfcmVo YXNoCisle19iaW5kaXJ9LyoucGwKKyV7X2JpbmRpcn0vdHNnZXQKKyV7X21hbmRpcn0vbWFuMSov Ki5wbCoKKyV7X21hbmRpcn0vbWFuMSovY19yZWhhc2gqCisle19tYW5kaXJ9L21hbjEqL3RzZ2V0 KgorJWRpciAle19zeXNjb25mZGlyfS9wa2kvQ0EKKyVkaXIgJXtfc3lzY29uZmRpcn0vcGtpL0NB L3ByaXZhdGUKKyVkaXIgJXtfc3lzY29uZmRpcn0vcGtpL0NBL2NlcnRzCislZGlyICV7X3N5c2Nv bmZkaXJ9L3BraS9DQS9jcmwKKyVkaXIgJXtfc3lzY29uZmRpcn0vcGtpL0NBL25ld2NlcnRzCiAK ICVwb3N0IGxpYnMgLXAgL3NiaW4vbGRjb25maWcKIAogJXBvc3R1biBsaWJzIC1wIC9zYmluL2xk Y29uZmlnCiAKICVjaGFuZ2Vsb2cKKyogVHVlIE9jdCAxMSAyMDE2IFRvbcOhxaEgTXLDoXogPHRt cmF6QHJlZGhhdC5jb20+IDEuMS4wYi0xCistIHVwZGF0ZSB0byB1cHN0cmVhbSB2ZXJzaW9uIDEu MS4wYgorCiAqIEZyaSBPY3QgMDcgMjAxNiBSaWNoYXJkIFcuTS4gSm9uZXMgPHJqb25lc0ByZWRo YXQuY29tPiAtIDE6MS4wLjJqLTIKIC0gQWRkIGZsYWdzIGZvciByaXNjdjY0LgogCgpkaWZmIC0t Z2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggMjc1YzQ1OS4uOWVhNzZiYiAxMDA2NDQKLS0t IGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xICsxIEBACi0wODhlODkzYTM5MGUyNTNhODg5 N2MzY2IxYjQ4OGE4MyAgb3BlbnNzbC0xLjAuMmotaG9iYmxlZC50YXIueHoKK2VjNGVhYzRkODZl NWY5YjVkZDcyM2JjMDcwMmY3OTU0ICBvcGVuc3NsLTEuMS4wYi1ob2JibGVkLnRhci54ego=