From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24444 invoked by alias); 14 Jun 2002 23:06:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 24422 invoked by uid 71); 14 Jun 2002 23:06:01 -0000 Resent-Date: 14 Jun 2002 23:06:01 -0000 Resent-Message-ID: <20020614230601.24421.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, perrin@MSLI.com Received: (qmail 22113 invoked by uid 61); 14 Jun 2002 22:59:17 -0000 Message-Id: <20020614225917.22112.qmail@sources.redhat.com> Date: Fri, 14 Jun 2002 16:20:00 -0000 From: perrin@MSLI.com Reply-To: perrin@MSLI.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: optimization/7034: ICE on -march=athlon for CLAPACK code X-SW-Source: 2002-06/txt/msg00337.txt.bz2 List-Id: >Number: 7034 >Category: optimization >Synopsis: ICE on -march=athlon for CLAPACK code >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Fri Jun 14 16:06:00 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Perrin Meyer >Release: gcc 3.1 >Organization: >Environment: Athlon / Linux >Description: ICE one some files when compiling http://www.netlib.org/clapack with -O2 -march=athlon [perrin@wave GCC31_BUG]$ /home/perrin/gcc-3.1_INSTALL/bin/gcc -c -O2 -march=athlon clacrt.c clacrt.c: In function `clacrt_': clacrt.c:136: Internal compiler error in ix86_secondary_memory_needed, at config/i386/i386.c:12251 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. >How-To-Repeat: gcc -c -O2 -march=athlon clacrt.c >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-tar; name="athlonbug.tar" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="athlonbug.tar" Ymxhc3dyYXAuaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMDc2 NAAwMDAwNzY0ADAwMDAwMDA3MjQ2ADA3NTAyNDQ0NTc0ADAxMjQ1NwAgMAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHBlcnJpbgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAcGVycmluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv KiBDTEFQQUNLIDMuMCBCTEFTIHdyYXBwZXIgbWFjcm9zCiAqIEZlYiA1LCAyMDAwCiAqLwoKI2lm bmRlZiBfX0JMQVNXUkFQX0gKI2RlZmluZSBfX0JMQVNXUkFQX0gKCiNpZm5kZWYgTk9fQkxBU19X UkFQCiAKLyogQkxBUzEgcm91dGluZXMgKi8KI2RlZmluZSBzcm90Z18gZjJjX3Nyb3RnCiNkZWZp bmUgZHJvdGdfIGYyY19kcm90ZwojZGVmaW5lIHNyb3RtZ18gZjJjX3Nyb3RtZwojZGVmaW5lIGRy b3RtZ18gZjJjX2Ryb3RtZwojZGVmaW5lIHNyb3RfIGYyY19zcm90CiNkZWZpbmUgZHJvdF8gZjJj X2Ryb3QKI2RlZmluZSBzcm90bV8gZjJjX3Nyb3RtCiNkZWZpbmUgZHJvdG1fIGYyY19kcm90bQoj ZGVmaW5lIHNzd2FwXyBmMmNfc3N3YXAKI2RlZmluZSBkc3dhcF8gZjJjX2Rzd2FwCiNkZWZpbmUg Y3N3YXBfIGYyY19jc3dhcAojZGVmaW5lIHpzd2FwXyBmMmNfenN3YXAKI2RlZmluZSBzc2NhbF8g ZjJjX3NzY2FsCiNkZWZpbmUgZHNjYWxfIGYyY19kc2NhbAojZGVmaW5lIGNzY2FsXyBmMmNfY3Nj YWwKI2RlZmluZSB6c2NhbF8gZjJjX3pzY2FsCiNkZWZpbmUgY3NzY2FsXyBmMmNfY3NzY2FsCiNk ZWZpbmUgemRzY2FsXyBmMmNfemRzY2FsCiNkZWZpbmUgc2NvcHlfIGYyY19zY29weQojZGVmaW5l IGRjb3B5XyBmMmNfZGNvcHkKI2RlZmluZSBjY29weV8gZjJjX2Njb3B5CiNkZWZpbmUgemNvcHlf IGYyY196Y29weQojZGVmaW5lIHNheHB5XyBmMmNfc2F4cHkKI2RlZmluZSBkYXhweV8gZjJjX2Rh eHB5CiNkZWZpbmUgY2F4cHlfIGYyY19jYXhweQojZGVmaW5lIHpheHB5XyBmMmNfemF4cHkKI2Rl ZmluZSBzZG90XyBmMmNfc2RvdAojZGVmaW5lIGRkb3RfIGYyY19kZG90CiNkZWZpbmUgY2RvdHVf IGYyY19jZG90dQojZGVmaW5lIHpkb3R1XyBmMmNfemRvdHUKI2RlZmluZSBjZG90Y18gZjJjX2Nk b3RjCiNkZWZpbmUgemRvdGNfIGYyY196ZG90YwojZGVmaW5lIHNucm0yXyBmMmNfc25ybTIKI2Rl ZmluZSBkbnJtMl8gZjJjX2Rucm0yCiNkZWZpbmUgc2Nucm0yXyBmMmNfc2Nucm0yCiNkZWZpbmUg ZHpucm0yXyBmMmNfZHpucm0yCiNkZWZpbmUgc2FzdW1fIGYyY19zYXN1bQojZGVmaW5lIGRhc3Vt XyBmMmNfZGFzdW0KI2RlZmluZSBzY2FzdW1fIGYyY19zY2FzdW0KI2RlZmluZSBkemFzdW1fIGYy Y19kemFzdW0KI2RlZmluZSBpc2FtYXhfIGYyY19pc2FtYXgKI2RlZmluZSBpZGFtYXhfIGYyY19p ZGFtYXgKI2RlZmluZSBpY2FtYXhfIGYyY19pY2FtYXgKI2RlZmluZSBpemFtYXhfIGYyY19pemFt YXgKIAovKiBCTEFTMiByb3V0aW5lcyAqLwojZGVmaW5lIHNnZW12XyBmMmNfc2dlbXYKI2RlZmlu ZSBkZ2Vtdl8gZjJjX2RnZW12CiNkZWZpbmUgY2dlbXZfIGYyY19jZ2VtdgojZGVmaW5lIHpnZW12 XyBmMmNfemdlbXYKI2RlZmluZSBzZ2Jtdl8gZjJjX3NnYm12CiNkZWZpbmUgZGdibXZfIGYyY19k Z2JtdgojZGVmaW5lIGNnYm12XyBmMmNfY2dibXYKI2RlZmluZSB6Z2Jtdl8gZjJjX3pnYm12CiNk ZWZpbmUgY2hlbXZfIGYyY19jaGVtdgojZGVmaW5lIHpoZW12XyBmMmNfemhlbXYKI2RlZmluZSBj aGJtdl8gZjJjX2NoYm12CiNkZWZpbmUgemhibXZfIGYyY196aGJtdgojZGVmaW5lIGNocG12XyBm MmNfY2hwbXYKI2RlZmluZSB6aHBtdl8gZjJjX3pocG12CiNkZWZpbmUgc3N5bXZfIGYyY19zc3lt dgojZGVmaW5lIGRzeW12XyBmMmNfZHN5bXYKI2RlZmluZSBzc2Jtdl8gZjJjX3NzYm12CiNkZWZp bmUgZHNibXZfIGYyY19kc2JtdgojZGVmaW5lIHNzcG12XyBmMmNfc3NwbXYKI2RlZmluZSBkc3Bt dl8gZjJjX2RzcG12CiNkZWZpbmUgc3RybXZfIGYyY19zdHJtdgojZGVmaW5lIGR0cm12XyBmMmNf ZHRybXYKI2RlZmluZSBjdHJtdl8gZjJjX2N0cm12CiNkZWZpbmUgenRybXZfIGYyY196dHJtdgoj ZGVmaW5lIHN0Ym12XyBmMmNfc3RibXYKI2RlZmluZSBkdGJtdl8gZjJjX2R0Ym12CiNkZWZpbmUg Y3RibXZfIGYyY19jdGJtdgojZGVmaW5lIHp0Ym12XyBmMmNfenRibXYKI2RlZmluZSBzdHBtdl8g ZjJjX3N0cG12CiNkZWZpbmUgZHRwbXZfIGYyY19kdHBtdgojZGVmaW5lIGN0cG12XyBmMmNfY3Rw bXYKI2RlZmluZSB6dHBtdl8gZjJjX3p0cG12CiNkZWZpbmUgc3Ryc3ZfIGYyY19zdHJzdgojZGVm aW5lIGR0cnN2XyBmMmNfZHRyc3YKI2RlZmluZSBjdHJzdl8gZjJjX2N0cnN2CiNkZWZpbmUgenRy c3ZfIGYyY196dHJzdgojZGVmaW5lIHN0YnN2XyBmMmNfc3Ric3YKI2RlZmluZSBkdGJzdl8gZjJj X2R0YnN2CiNkZWZpbmUgY3Ric3ZfIGYyY19jdGJzdgojZGVmaW5lIHp0YnN2XyBmMmNfenRic3YK I2RlZmluZSBzdHBzdl8gZjJjX3N0cHN2CiNkZWZpbmUgZHRwc3ZfIGYyY19kdHBzdgojZGVmaW5l IGN0cHN2XyBmMmNfY3Rwc3YKI2RlZmluZSB6dHBzdl8gZjJjX3p0cHN2CiNkZWZpbmUgc2dlcl8g ZjJjX3NnZXIKI2RlZmluZSBkZ2VyXyBmMmNfZGdlcgojZGVmaW5lIGNnZXJ1XyBmMmNfY2dlcnUK I2RlZmluZSB6Z2VydV8gZjJjX3pnZXJ1CiNkZWZpbmUgY2dlcmNfIGYyY19jZ2VyYwojZGVmaW5l IHpnZXJjXyBmMmNfemdlcmMKI2RlZmluZSBjaGVyXyBmMmNfY2hlcgojZGVmaW5lIHpoZXJfIGYy Y196aGVyCiNkZWZpbmUgY2hwcl8gZjJjX2NocHIKI2RlZmluZSB6aHByXyBmMmNfemhwcgojZGVm aW5lIGNoZXIyXyBmMmNfY2hlcjIKI2RlZmluZSB6aGVyMl8gZjJjX3poZXIyCiNkZWZpbmUgY2hw cjJfIGYyY19jaHByMgojZGVmaW5lIHpocHIyXyBmMmNfemhwcjIKI2RlZmluZSBzc3lyXyBmMmNf c3N5cgojZGVmaW5lIGRzeXJfIGYyY19kc3lyCiNkZWZpbmUgc3Nwcl8gZjJjX3NzcHIKI2RlZmlu ZSBkc3ByXyBmMmNfZHNwcgojZGVmaW5lIHNzeXIyXyBmMmNfc3N5cjIKI2RlZmluZSBkc3lyMl8g ZjJjX2RzeXIyCiNkZWZpbmUgc3NwcjJfIGYyY19zc3ByMgojZGVmaW5lIGRzcHIyXyBmMmNfZHNw cjIKIAovKiBCTEFTMyByb3V0aW5lcyAqLwojZGVmaW5lIHNnZW1tXyBmMmNfc2dlbW0KI2RlZmlu ZSBkZ2VtbV8gZjJjX2RnZW1tCiNkZWZpbmUgY2dlbW1fIGYyY19jZ2VtbQojZGVmaW5lIHpnZW1t XyBmMmNfemdlbW0KI2RlZmluZSBzc3ltbV8gZjJjX3NzeW1tCiNkZWZpbmUgZHN5bW1fIGYyY19k c3ltbQojZGVmaW5lIGNzeW1tXyBmMmNfY3N5bW0KI2RlZmluZSB6c3ltbV8gZjJjX3pzeW1tCiNk ZWZpbmUgY2hlbW1fIGYyY19jaGVtbQojZGVmaW5lIHpoZW1tXyBmMmNfemhlbW0KI2RlZmluZSBz c3lya18gZjJjX3NzeXJrCiNkZWZpbmUgZHN5cmtfIGYyY19kc3lyawojZGVmaW5lIGNzeXJrXyBm MmNfY3N5cmsKI2RlZmluZSB6c3lya18gZjJjX3pzeXJrCiNkZWZpbmUgY2hlcmtfIGYyY19jaGVy awojZGVmaW5lIHpoZXJrXyBmMmNfemhlcmsKI2RlZmluZSBzc3lyMmtfIGYyY19zc3lyMmsKI2Rl ZmluZSBkc3lyMmtfIGYyY19kc3lyMmsKI2RlZmluZSBjc3lyMmtfIGYyY19jc3lyMmsKI2RlZmlu ZSB6c3lyMmtfIGYyY196c3lyMmsKI2RlZmluZSBjaGVyMmtfIGYyY19jaGVyMmsKI2RlZmluZSB6 aGVyMmtfIGYyY196aGVyMmsKI2RlZmluZSBzdHJtbV8gZjJjX3N0cm1tCiNkZWZpbmUgZHRybW1f IGYyY19kdHJtbQojZGVmaW5lIGN0cm1tXyBmMmNfY3RybW0KI2RlZmluZSB6dHJtbV8gZjJjX3p0 cm1tCiNkZWZpbmUgc3Ryc21fIGYyY19zdHJzbQojZGVmaW5lIGR0cnNtXyBmMmNfZHRyc20KI2Rl ZmluZSBjdHJzbV8gZjJjX2N0cnNtCiNkZWZpbmUgenRyc21fIGYyY196dHJzbQoKI2VuZGlmIC8q IE5PX0JMQVNfV1JBUCAqLwoKI2VuZGlmIC8qIF9fQkxBU1dSQVBfSCAqLwoAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY2xhY3J0LmMA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMDc2NAAwMDAwNzY0 ADAwMDAwMDA3MzM2ADA3NTAyNDQ0NDc1ADAxMjEwNwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHBlcnJpbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAcGVycmluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjaW5jbHVkZSAi Ymxhc3dyYXAuaCIKI2luY2x1ZGUgImYyYy5oIgoKLyogU3Vicm91dGluZSAqLyBpbnQgY2xhY3J0 XyhpbnRlZ2VyICpuLCBjb21wbGV4ICpjeCwgaW50ZWdlciAqaW5jeCwgY29tcGxleCAqCgljeSwg aW50ZWdlciAqaW5jeSwgY29tcGxleCAqY19fLCBjb21wbGV4ICpzKQp7Ci8qICAtLSBMQVBBQ0sg YXV4aWxpYXJ5IHJvdXRpbmUgKHZlcnNpb24gMy4wKSAtLSAgIAogICAgICAgVW5pdi4gb2YgVGVu bmVzc2VlLCBVbml2LiBvZiBDYWxpZm9ybmlhIEJlcmtlbGV5LCBOQUcgTHRkLiwgICAKICAgICAg IENvdXJhbnQgSW5zdGl0dXRlLCBBcmdvbm5lIE5hdGlvbmFsIExhYiwgYW5kIFJpY2UgVW5pdmVy c2l0eSAgIAogICAgICAgT2N0b2JlciAzMSwgMTk5MiAgIAoKCiAgICBQdXJwb3NlICAgCiAgICA9 PT09PT09ICAgCgogICAgQ0xBQ1JUIHBlcmZvcm1zIHRoZSBvcGVyYXRpb24gICAKCiAgICAgICAo ICBjICBzICkoIHggKSAgPT0+ICggeCApICAgCiAgICAgICAoIC1zICBjICkoIHkgKSAgICAgICgg eSApICAgCgogICAgd2hlcmUgYyBhbmQgcyBhcmUgY29tcGxleCBhbmQgdGhlIHZlY3RvcnMgeCBh bmQgeSBhcmUgY29tcGxleC4gICAKCiAgICBBcmd1bWVudHMgICAKICAgID09PT09PT09PSAgIAoK ICAgIE4gICAgICAgKGlucHV0KSBJTlRFR0VSICAgCiAgICAgICAgICAgIFRoZSBudW1iZXIgb2Yg ZWxlbWVudHMgaW4gdGhlIHZlY3RvcnMgQ1ggYW5kIENZLiAgIAoKICAgIENYICAgICAgKGlucHV0 L291dHB1dCkgQ09NUExFWCBhcnJheSwgZGltZW5zaW9uIChOKSAgIAogICAgICAgICAgICBPbiBp bnB1dCwgdGhlIHZlY3RvciB4LiAgIAogICAgICAgICAgICBPbiBvdXRwdXQsIENYIGlzIG92ZXJ3 cml0dGVuIHdpdGggYyp4ICsgcyp5LiAgIAoKICAgIElOQ1ggICAgKGlucHV0KSBJTlRFR0VSICAg CiAgICAgICAgICAgIFRoZSBpbmNyZW1lbnQgYmV0d2VlbiBzdWNjZXNzaXZlIHZhbHVlcyBvZiBD WC4gIElOQ1ggPD4gMC4gICAKCiAgICBDWSAgICAgIChpbnB1dC9vdXRwdXQpIENPTVBMRVggYXJy YXksIGRpbWVuc2lvbiAoTikgICAKICAgICAgICAgICAgT24gaW5wdXQsIHRoZSB2ZWN0b3IgeS4g ICAKICAgICAgICAgICAgT24gb3V0cHV0LCBDWSBpcyBvdmVyd3JpdHRlbiB3aXRoIC1zKnggKyBj KnkuICAgCgogICAgSU5DWSAgICAoaW5wdXQpIElOVEVHRVIgICAKICAgICAgICAgICAgVGhlIGlu Y3JlbWVudCBiZXR3ZWVuIHN1Y2Nlc3NpdmUgdmFsdWVzIG9mIENZLiAgSU5DWSA8PiAwLiAgIAoK ICAgIEMgICAgICAgKGlucHV0KSBDT01QTEVYICAgCiAgICBTICAgICAgIChpbnB1dCkgQ09NUExF WCAgIAogICAgICAgICAgICBDIGFuZCBTIGRlZmluZSB0aGUgbWF0cml4ICAgCiAgICAgICAgICAg ICAgIFsgIEMgICBTICBdLiAgIAogICAgICAgICAgICAgICBbIC1TICAgQyAgXSAgIAoKICAgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ICAgCgoKICAgICAgIFBhcmFtZXRlciBhZGp1c3RtZW50cyAqLwogICAgLyogU3lz dGVtIGdlbmVyYXRlZCBsb2NhbHMgKi8KICAgIGludGVnZXIgaV9fMSwgaV9fMiwgaV9fMywgaV9f NDsKICAgIGNvbXBsZXggcV9fMSwgcV9fMiwgcV9fMzsKICAgIC8qIExvY2FsIHZhcmlhYmxlcyAq LwogICAgc3RhdGljIGludGVnZXIgaV9fOwogICAgc3RhdGljIGNvbXBsZXggY3RlbXA7CiAgICBz dGF0aWMgaW50ZWdlciBpeCwgaXk7CgogICAgLS1jeTsKICAgIC0tY3g7CgogICAgLyogRnVuY3Rp b24gQm9keSAqLwogICAgaWYgKCpuIDw9IDApIHsKCXJldHVybiAwOwogICAgfQogICAgaWYgKCpp bmN4ID09IDEgJiYgKmluY3kgPT0gMSkgewoJZ290byBMMjA7CiAgICB9CgovKiAgICAgQ29kZSBm b3IgdW5lcXVhbCBpbmNyZW1lbnRzIG9yIGVxdWFsIGluY3JlbWVudHMgbm90IGVxdWFsIHRvIDEg Ki8KCiAgICBpeCA9IDE7CiAgICBpeSA9IDE7CiAgICBpZiAoKmluY3ggPCAwKSB7CglpeCA9ICgt KCpuKSArIDEpICogKmluY3ggKyAxOwogICAgfQogICAgaWYgKCppbmN5IDwgMCkgewoJaXkgPSAo LSgqbikgKyAxKSAqICppbmN5ICsgMTsKICAgIH0KICAgIGlfXzEgPSAqbjsKICAgIGZvciAoaV9f ID0gMTsgaV9fIDw9IGlfXzE7ICsraV9fKSB7CglpX18yID0gaXg7CglxX18yLnIgPSBjX18tPnIg KiBjeFtpX18yXS5yIC0gY19fLT5pICogY3hbaV9fMl0uaSwgcV9fMi5pID0gY19fLT5yICogCgkJ Y3hbaV9fMl0uaSArIGNfXy0+aSAqIGN4W2lfXzJdLnI7CglpX18zID0gaXk7CglxX18zLnIgPSBz LT5yICogY3lbaV9fM10uciAtIHMtPmkgKiBjeVtpX18zXS5pLCBxX18zLmkgPSBzLT5yICogY3lb CgkJaV9fM10uaSArIHMtPmkgKiBjeVtpX18zXS5yOwoJcV9fMS5yID0gcV9fMi5yICsgcV9fMy5y LCBxX18xLmkgPSBxX18yLmkgKyBxX18zLmk7CgljdGVtcC5yID0gcV9fMS5yLCBjdGVtcC5pID0g cV9fMS5pOwoJaV9fMiA9IGl5OwoJaV9fMyA9IGl5OwoJcV9fMi5yID0gY19fLT5yICogY3lbaV9f M10uciAtIGNfXy0+aSAqIGN5W2lfXzNdLmksIHFfXzIuaSA9IGNfXy0+ciAqIAoJCWN5W2lfXzNd LmkgKyBjX18tPmkgKiBjeVtpX18zXS5yOwoJaV9fNCA9IGl4OwoJcV9fMy5yID0gcy0+ciAqIGN4 W2lfXzRdLnIgLSBzLT5pICogY3hbaV9fNF0uaSwgcV9fMy5pID0gcy0+ciAqIGN4WwoJCWlfXzRd LmkgKyBzLT5pICogY3hbaV9fNF0ucjsKCXFfXzEuciA9IHFfXzIuciAtIHFfXzMuciwgcV9fMS5p ID0gcV9fMi5pIC0gcV9fMy5pOwoJY3lbaV9fMl0uciA9IHFfXzEuciwgY3lbaV9fMl0uaSA9IHFf XzEuaTsKCWlfXzIgPSBpeDsKCWN4W2lfXzJdLnIgPSBjdGVtcC5yLCBjeFtpX18yXS5pID0gY3Rl bXAuaTsKCWl4ICs9ICppbmN4OwoJaXkgKz0gKmluY3k7Ci8qIEwxMDogKi8KICAgIH0KICAgIHJl dHVybiAwOwoKLyogICAgIENvZGUgZm9yIGJvdGggaW5jcmVtZW50cyBlcXVhbCB0byAxICovCgpM MjA6CiAgICBpX18xID0gKm47CiAgICBmb3IgKGlfXyA9IDE7IGlfXyA8PSBpX18xOyArK2lfXykg ewoJaV9fMiA9IGlfXzsKCXFfXzIuciA9IGNfXy0+ciAqIGN4W2lfXzJdLnIgLSBjX18tPmkgKiBj eFtpX18yXS5pLCBxX18yLmkgPSBjX18tPnIgKiAKCQljeFtpX18yXS5pICsgY19fLT5pICogY3hb aV9fMl0ucjsKCWlfXzMgPSBpX187CglxX18zLnIgPSBzLT5yICogY3lbaV9fM10uciAtIHMtPmkg KiBjeVtpX18zXS5pLCBxX18zLmkgPSBzLT5yICogY3lbCgkJaV9fM10uaSArIHMtPmkgKiBjeVtp X18zXS5yOwoJcV9fMS5yID0gcV9fMi5yICsgcV9fMy5yLCBxX18xLmkgPSBxX18yLmkgKyBxX18z Lmk7CgljdGVtcC5yID0gcV9fMS5yLCBjdGVtcC5pID0gcV9fMS5pOwoJaV9fMiA9IGlfXzsKCWlf XzMgPSBpX187CglxX18yLnIgPSBjX18tPnIgKiBjeVtpX18zXS5yIC0gY19fLT5pICogY3lbaV9f M10uaSwgcV9fMi5pID0gY19fLT5yICogCgkJY3lbaV9fM10uaSArIGNfXy0+aSAqIGN5W2lfXzNd LnI7CglpX180ID0gaV9fOwoJcV9fMy5yID0gcy0+ciAqIGN4W2lfXzRdLnIgLSBzLT5pICogY3hb aV9fNF0uaSwgcV9fMy5pID0gcy0+ciAqIGN4WwoJCWlfXzRdLmkgKyBzLT5pICogY3hbaV9fNF0u cjsKCXFfXzEuciA9IHFfXzIuciAtIHFfXzMuciwgcV9fMS5pID0gcV9fMi5pIC0gcV9fMy5pOwoJ Y3lbaV9fMl0uciA9IHFfXzEuciwgY3lbaV9fMl0uaSA9IHFfXzEuaTsKCWlfXzIgPSBpX187Cglj eFtpX18yXS5yID0gY3RlbXAuciwgY3hbaV9fMl0uaSA9IGN0ZW1wLmk7Ci8qIEwzMDogKi8KICAg IH0KICAgIHJldHVybiAwOwp9IC8qIGNsYWNydF8gKi8KCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZjJjLmgAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDAAMDAwMDc2NAAwMDAwNzY0ADAwMDAwMDEx MDc0ADA3NTAyNDQ0NTY2ADAxMTMwNQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAB1c3RhciAgAHBlcnJpbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcGVycmlu AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvKiBmMmMuaCAgLS0gIFN0YW5k YXJkIEZvcnRyYW4gdG8gQyBoZWFkZXIgZmlsZSAqLwoKLyoqICBiYXJmICBbYmE6cmZdICAyLiAg IkhlIHN1Z2dlc3RlZCB1c2luZyBGT1JUUkFOLCBhbmQgZXZlcnlib2R5IGJhcmZlZC4iCgoJLSBG cm9tIFRoZSBTaG9nYWt1a2FuIERJQ1RJT05BUlkgT0YgTkVXIEVOR0xJU0ggKFNlY29uZCBlZGl0 aW9uKSAqLwoKI2lmbmRlZiBGMkNfSU5DTFVERQojZGVmaW5lIEYyQ19JTkNMVURFCgp0eXBlZGVm IGxvbmcgaW50IGludGVnZXI7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50ZWdlcjsKdHlwZWRl ZiBjaGFyICphZGRyZXNzOwp0eXBlZGVmIHNob3J0IGludCBzaG9ydGludDsKdHlwZWRlZiBmbG9h dCByZWFsOwp0eXBlZGVmIGRvdWJsZSBkb3VibGVyZWFsOwp0eXBlZGVmIHN0cnVjdCB7IHJlYWwg ciwgaTsgfSBjb21wbGV4Owp0eXBlZGVmIHN0cnVjdCB7IGRvdWJsZXJlYWwgciwgaTsgfSBkb3Vi bGVjb21wbGV4Owp0eXBlZGVmIGxvbmcgaW50IGxvZ2ljYWw7CnR5cGVkZWYgc2hvcnQgaW50IHNo b3J0bG9naWNhbDsKdHlwZWRlZiBjaGFyIGxvZ2ljYWwxOwp0eXBlZGVmIGNoYXIgaW50ZWdlcjE7 CiNpZiAwCS8qIEFkanVzdCBmb3IgaW50ZWdlcio4LiAqLwp0eXBlZGVmIGxvbmcgbG9uZyBsb25n aW50OwkJLyogc3lzdGVtLWRlcGVuZGVudCAqLwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1 bG9uZ2ludDsJLyogc3lzdGVtLWRlcGVuZGVudCAqLwojZGVmaW5lIHFiaXRfY2xlYXIoYSxiKQko KGEpICYgfigodWxvbmdpbnQpMSA8PCAoYikpKQojZGVmaW5lIHFiaXRfc2V0KGEsYikJKChhKSB8 ICAoKHVsb25naW50KTEgPDwgKGIpKSkKI2VuZGlmCgojZGVmaW5lIFRSVUVfICgxKQojZGVmaW5l IEZBTFNFXyAoMCkKCi8qIEV4dGVybiBpcyBmb3IgdXNlIHdpdGggLUUgKi8KI2lmbmRlZiBFeHRl cm4KI2RlZmluZSBFeHRlcm4gZXh0ZXJuCiNlbmRpZgoKLyogSS9PIHN0dWZmICovCgojaWZkZWYg ZjJjX2kyCi8qIGZvciAtaTIgKi8KdHlwZWRlZiBzaG9ydCBmbGFnOwp0eXBlZGVmIHNob3J0IGZ0 bmxlbjsKdHlwZWRlZiBzaG9ydCBmdG5pbnQ7CiNlbHNlCnR5cGVkZWYgbG9uZyBpbnQgZmxhZzsK dHlwZWRlZiBsb25nIGludCBmdG5sZW47CnR5cGVkZWYgbG9uZyBpbnQgZnRuaW50OwojZW5kaWYK Ci8qZXh0ZXJuYWwgcmVhZCwgd3JpdGUqLwp0eXBlZGVmIHN0cnVjdAp7CWZsYWcgY2llcnI7Cglm dG5pbnQgY2l1bml0OwoJZmxhZyBjaWVuZDsKCWNoYXIgKmNpZm10OwoJZnRuaW50IGNpcmVjOwp9 IGNpbGlzdDsKCi8qaW50ZXJuYWwgcmVhZCwgd3JpdGUqLwp0eXBlZGVmIHN0cnVjdAp7CWZsYWcg aWNpZXJyOwoJY2hhciAqaWNpdW5pdDsKCWZsYWcgaWNpZW5kOwoJY2hhciAqaWNpZm10OwoJZnRu aW50IGljaXJsZW47CglmdG5pbnQgaWNpcm51bTsKfSBpY2lsaXN0OwoKLypvcGVuKi8KdHlwZWRl ZiBzdHJ1Y3QKewlmbGFnIG9lcnI7CglmdG5pbnQgb3VuaXQ7CgljaGFyICpvZm5tOwoJZnRubGVu IG9mbm1sZW47CgljaGFyICpvc3RhOwoJY2hhciAqb2FjYzsKCWNoYXIgKm9mbTsKCWZ0bmludCBv cmw7CgljaGFyICpvYmxuazsKfSBvbGlzdDsKCi8qY2xvc2UqLwp0eXBlZGVmIHN0cnVjdAp7CWZs YWcgY2VycjsKCWZ0bmludCBjdW5pdDsKCWNoYXIgKmNzdGE7Cn0gY2xsaXN0OwoKLypyZXdpbmQs IGJhY2tzcGFjZSwgZW5kZmlsZSovCnR5cGVkZWYgc3RydWN0CnsJZmxhZyBhZXJyOwoJZnRuaW50 IGF1bml0Owp9IGFsaXN0OwoKLyogaW5xdWlyZSAqLwp0eXBlZGVmIHN0cnVjdAp7CWZsYWcgaW5l cnI7CglmdG5pbnQgaW51bml0OwoJY2hhciAqaW5maWxlOwoJZnRubGVuIGluZmlsZW47CglmdG5p bnQJKmluZXg7CS8qcGFyYW1ldGVycyBpbiBzdGFuZGFyZCdzIG9yZGVyKi8KCWZ0bmludAkqaW5v cGVuOwoJZnRuaW50CSppbm51bTsKCWZ0bmludAkqaW5uYW1lZDsKCWNoYXIJKmlubmFtZTsKCWZ0 bmxlbglpbm5hbWxlbjsKCWNoYXIJKmluYWNjOwoJZnRubGVuCWluYWNjbGVuOwoJY2hhcgkqaW5z ZXE7CglmdG5sZW4JaW5zZXFsZW47CgljaGFyIAkqaW5kaXI7CglmdG5sZW4JaW5kaXJsZW47Cglj aGFyCSppbmZtdDsKCWZ0bmxlbglpbmZtdGxlbjsKCWNoYXIJKmluZm9ybTsKCWZ0bmludAlpbmZv cm1sZW47CgljaGFyCSppbnVuZjsKCWZ0bmxlbglpbnVuZmxlbjsKCWZ0bmludAkqaW5yZWNsOwoJ ZnRuaW50CSppbm5yZWM7CgljaGFyCSppbmJsYW5rOwoJZnRubGVuCWluYmxhbmtsZW47Cn0gaW5s aXN0OwoKI2RlZmluZSBWT0lEIHZvaWQKCnVuaW9uIE11bHRpdHlwZSB7CS8qIGZvciBtdWx0aXBs ZSBlbnRyeSBwb2ludHMgKi8KCWludGVnZXIxIGc7CglzaG9ydGludCBoOwoJaW50ZWdlciBpOwoJ LyogbG9uZ2ludCBqOyAqLwoJcmVhbCByOwoJZG91YmxlcmVhbCBkOwoJY29tcGxleCBjOwoJZG91 YmxlY29tcGxleCB6OwoJfTsKCnR5cGVkZWYgdW5pb24gTXVsdGl0eXBlIE11bHRpdHlwZTsKCi8q dHlwZWRlZiBsb25nIGludCBMb25nOyovCS8qIE5vIGxvbmdlciB1c2VkOyBmb3JtZXJseSBpbiBO YW1lbGlzdCAqLwoKc3RydWN0IFZhcmRlc2MgewkvKiBmb3IgTmFtZWxpc3QgKi8KCWNoYXIgKm5h bWU7CgljaGFyICphZGRyOwoJZnRubGVuICpkaW1zOwoJaW50ICB0eXBlOwoJfTsKdHlwZWRlZiBz dHJ1Y3QgVmFyZGVzYyBWYXJkZXNjOwoKc3RydWN0IE5hbWVsaXN0IHsKCWNoYXIgKm5hbWU7CglW YXJkZXNjICoqdmFyczsKCWludCBudmFyczsKCX07CnR5cGVkZWYgc3RydWN0IE5hbWVsaXN0IE5h bWVsaXN0OwoKI2RlZmluZSBhYnMoeCkgKCh4KSA+PSAwID8gKHgpIDogLSh4KSkKI2RlZmluZSBk YWJzKHgpIChkb3VibGVyZWFsKWFicyh4KQojZGVmaW5lIG1pbihhLGIpICgoYSkgPD0gKGIpID8g KGEpIDogKGIpKQojZGVmaW5lIG1heChhLGIpICgoYSkgPj0gKGIpID8gKGEpIDogKGIpKQojZGVm aW5lIGRtaW4oYSxiKSAoZG91YmxlcmVhbCltaW4oYSxiKQojZGVmaW5lIGRtYXgoYSxiKSAoZG91 YmxlcmVhbCltYXgoYSxiKQojZGVmaW5lIGJpdF90ZXN0KGEsYikJKChhKSA+PiAoYikgJiAxKQoj ZGVmaW5lIGJpdF9jbGVhcihhLGIpCSgoYSkgJiB+KCh1aW50ZWdlcikxIDw8IChiKSkpCiNkZWZp bmUgYml0X3NldChhLGIpCSgoYSkgfCAgKCh1aW50ZWdlcikxIDw8IChiKSkpCgovKiBwcm9jZWR1 cmUgcGFyYW1ldGVyIHR5cGVzIGZvciAtQSBhbmQgLUMrKyAqLwoKI2RlZmluZSBGMkNfcHJvY19w YXJfdHlwZXMgMQojaWZkZWYgX19jcGx1c3BsdXMKdHlwZWRlZiBpbnQgLyogVW5rbm93biBwcm9j ZWR1cmUgdHlwZSAqLyAoKlVfZnApKC4uLik7CnR5cGVkZWYgc2hvcnRpbnQgKCpKX2ZwKSguLi4p Owp0eXBlZGVmIGludGVnZXIgKCpJX2ZwKSguLi4pOwp0eXBlZGVmIHJlYWwgKCpSX2ZwKSguLi4p Owp0eXBlZGVmIGRvdWJsZXJlYWwgKCpEX2ZwKSguLi4pLCAoKkVfZnApKC4uLik7CnR5cGVkZWYg LyogQ29tcGxleCAqLyBWT0lEICgqQ19mcCkoLi4uKTsKdHlwZWRlZiAvKiBEb3VibGUgQ29tcGxl eCAqLyBWT0lEICgqWl9mcCkoLi4uKTsKdHlwZWRlZiBsb2dpY2FsICgqTF9mcCkoLi4uKTsKdHlw ZWRlZiBzaG9ydGxvZ2ljYWwgKCpLX2ZwKSguLi4pOwp0eXBlZGVmIC8qIENoYXJhY3RlciAqLyBW T0lEICgqSF9mcCkoLi4uKTsKdHlwZWRlZiAvKiBTdWJyb3V0aW5lICovIGludCAoKlNfZnApKC4u Lik7CiNlbHNlCnR5cGVkZWYgaW50IC8qIFVua25vd24gcHJvY2VkdXJlIHR5cGUgKi8gKCpVX2Zw KSgpOwp0eXBlZGVmIHNob3J0aW50ICgqSl9mcCkoKTsKdHlwZWRlZiBpbnRlZ2VyICgqSV9mcCko KTsKdHlwZWRlZiByZWFsICgqUl9mcCkoKTsKdHlwZWRlZiBkb3VibGVyZWFsICgqRF9mcCkoKSwg KCpFX2ZwKSgpOwp0eXBlZGVmIC8qIENvbXBsZXggKi8gVk9JRCAoKkNfZnApKCk7CnR5cGVkZWYg LyogRG91YmxlIENvbXBsZXggKi8gVk9JRCAoKlpfZnApKCk7CnR5cGVkZWYgbG9naWNhbCAoKkxf ZnApKCk7CnR5cGVkZWYgc2hvcnRsb2dpY2FsICgqS19mcCkoKTsKdHlwZWRlZiAvKiBDaGFyYWN0 ZXIgKi8gVk9JRCAoKkhfZnApKCk7CnR5cGVkZWYgLyogU3Vicm91dGluZSAqLyBpbnQgKCpTX2Zw KSgpOwojZW5kaWYKLyogRV9mcCBpcyBmb3IgcmVhbCBmdW5jdGlvbnMgd2hlbiAtUiBpcyBub3Qg c3BlY2lmaWVkICovCnR5cGVkZWYgVk9JRCBDX2Y7CS8qIGNvbXBsZXggZnVuY3Rpb24gKi8KdHlw ZWRlZiBWT0lEIEhfZjsJLyogY2hhcmFjdGVyIGZ1bmN0aW9uICovCnR5cGVkZWYgVk9JRCBaX2Y7 CS8qIGRvdWJsZSBjb21wbGV4IGZ1bmN0aW9uICovCnR5cGVkZWYgZG91YmxlcmVhbCBFX2Y7CS8q IHJlYWwgZnVuY3Rpb24gd2l0aCAtUiBub3Qgc3BlY2lmaWVkICovCgovKiB1bmRlZiBhbnkgbG93 ZXItY2FzZSBzeW1ib2xzIHRoYXQgeW91ciBDIGNvbXBpbGVyIHByZWRlZmluZXMsIGUuZy46ICov CgojaWZuZGVmIFNraXBfZjJjX1VuZGVmcwojdW5kZWYgY3JheQojdW5kZWYgZ2NvcwojdW5kZWYg bWM2ODAxMAojdW5kZWYgbWM2ODAyMAojdW5kZWYgbWlwcwojdW5kZWYgcGRwMTEKI3VuZGVmIHNn aQojdW5kZWYgc3BhcmMKI3VuZGVmIHN1bgojdW5kZWYgc3VuMgojdW5kZWYgc3VuMwojdW5kZWYg c3VuNAojdW5kZWYgdTM3MAojdW5kZWYgdTNiCiN1bmRlZiB1M2IyCiN1bmRlZiB1M2I1CiN1bmRl ZiB1bml4CiN1bmRlZiB2YXgKI2VuZGlmCiNlbmRpZgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAA=