From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3197 invoked by alias); 14 Nov 2001 18:56: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 3149 invoked by uid 71); 14 Nov 2001 18:56:00 -0000 Resent-Date: 14 Nov 2001 18:56:00 -0000 Resent-Message-ID: <20011114185600.3147.qmail@sourceware.cygnus.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, dscott@beatnik.com Received:(qmail 29624 invoked by uid 61); 14 Nov 2001 18:46:25 -0000 Message-Id:<20011114184624.29623.qmail@sourceware.cygnus.com> Date: Fri, 02 Nov 2001 14:46:00 -0000 From: dscott@beatnik.com Reply-To: dscott@beatnik.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version:gnatsweb-2.9.2 (1.1.1.1.2.21) Subject: c/4877: gcc 3.0.2 reports ICE during optimized compile X-SW-Source: 2001-11/txt/msg00074.txt.bz2 List-Id: >Number: 4877 >Category: c >Synopsis: gcc 3.0.2 reports ICE during optimized compile >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Wed Nov 14 10:56:00 PST 2001 >Closed-Date: >Last-Modified: >Originator: Douglas Scott >Release: 3.0.2 >Organization: >Environment: System: Linux leenucks.beatnik.com 2.2.14-5.0 #1 Tue Mar 7 21:07:39 EST 2000 i686 unknown >Description: gcc fails with ICE during optimized compile of a portion of an MPEG decoder source: /usr/local/bin/gcc -O2 -c bug.cpp bug.cpp: In function `void fftx32(mpa_f32*, mpa_f32*, mpa_f32*)': bug.cpp:592: Internal compiler error in extract_bit_field, at expmed.c:1104 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. This same code compiled without error under egcs-2.91.66. >How-To-Repeat: Compile this file -c -O2. >Fix: Compile without optimization. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="bug.cpp" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bug.cpp" ZXh0ZXJuICJDIiB7CnR5cGVkZWYgY2hhciBtcGFfczg7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBt cGFfdTg7CnR5cGVkZWYgc2hvcnQgbXBhX3MxNjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBtcGFf dTE2Owp0eXBlZGVmIGludCBtcGFfczMyOwp0eXBlZGVmIHVuc2lnbmVkIGludCBtcGFfdTMyOwp0 eXBlZGVmIGZsb2F0IG1wYV9mMzI7CnR5cGVkZWYgZG91YmxlIG1wYV9kNjQ7CgoKdHlwZWRlZiBp bnQgbXBhX2ludDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgbXBhX3VpbnQ7Cgp0eXBlZGVmIHVuc2ln bmVkIGxvbmcgbXBhX2FkZHI7CnR5cGVkZWYgc3RydWN0IHsKCiAgbXBhX2ludCBpZDsKICBtcGFf aW50IGxheWVyOwogIG1wYV9pbnQgbW9kZTsKICBtcGFfaW50IGhlYWRlcl9vZmZzZXQ7CiAgbXBh X2ludCBmcmFtZWxlbjsKICBtcGFfaW50IGJpdF9yYXRlOwogIG1wYV91aW50IHNhbXBsaW5nX3Jh dGU7CiAgbXBhX2ludCBuY2hhbm5lbHM7CiAgbXBhX2ludCBuc2FtcGxlczsKICBtcGFfaW50IG5l Z19vZmZzZXQ7Cgp9IE1QQV9GUkFNRV9JTkZPOwp0eXBlZGVmIGVudW0gewogIE1QQV9TVUNDRVNT ID0gMCwKICBNUEFfRkFJTFVSRSA9IC0xCn0gbXBhX3N0YXR1czsKCnR5cGVkZWYgZW51bSB7CiAg TVBBX0ZBTFNFID0gMCwKICBNUEFfVFJVRSA9IDEKfSBtcGFfYm9vbGVhbjsKCnR5cGVkZWYgZW51 bSB7CiAgTVBBX0xBWUVSMSA9IDMsCiAgTVBBX0xBWUVSMiA9IDIsCiAgTVBBX0xBWUVSMyA9IDEK fSBtcGFfbGF5ZXI7Cgp0eXBlZGVmIGVudW0gewogIE1QQV9TVEVSRU8gPSAwLAogIE1QQV9KT0lO VF9TVEVSRU8gPSAxLAogIE1QQV9EVUFMX0NIQU5ORUwgPSAyLAogIE1QQV9TSU5HTEVfQ0hBTk5F TCA9IDMKfSBtcGFfbW9kZTsKCnR5cGVkZWYgZW51bSB7CgogIE1QQV9OT1JNQUxfU1RFUkVPID0g MCwKICBNUEFfSU5URU5TSVRZX09OTFkgPSAxLAogIE1QQV9NU19PTkxZID0gMiwKICBNUEFfSU5U RU5TSVRZX01TID0gMywKCiAgTVBBX0pTX0JPVU5ENCA9IDAsCiAgTVBBX0pTX0JPVU5EOCA9IDEs CiAgTVBBX0pTX0JPVU5EMTIgPSAyLAogIE1QQV9KU19CT1VORDE2ID0gMwp9IG1wYV9tb2RlX2V4 dDsKCgp0eXBlZGVmIGVudW0gewogIE1QQV9FTVBIX05PTkUgPSAwLAogIE1QQV9FTVBIXzUwXzE1 ID0gMSwKICBNUEFfRU1QSF9KXzE3ID0gMwp9IG1wYV9lbXBoYXNpczsKCnR5cGVkZWYgZW51bSB7 CiAgTVBBX1BBRF9BVVRPID0gLTEsCiAgTVBBX1BBRF9OTyA9IDAsCiAgTVBBX1BBRF9ZRVMgPSAx Cn0gbXBhX3BhZGRpbmc7CgoKdHlwZWRlZiBzdHJ1Y3QgdGFnX21wYV9wYXJhbXMgewogIG1wYV9s YXllciBsYXllcjsKICBtcGFfYm9vbGVhbiBjcmNfb247CiAgbXBhX3VpbnQgc2FtcGxpbmdfZnJl cTsKICBtcGFfdWludCBiaXRfcmF0ZTsKICBtcGFfbW9kZSBzdGVyZW9fbW9kZTsKICBtcGFfbW9k ZV9leHQgbW9kZV9leHRlbnNpb247CiAgbXBhX2VtcGhhc2lzIGVtcGhhc2lzOwogIG1wYV9ib29s ZWFuIHBzeV9tb2RlbDE7CiAgbXBhX2ludCBuc2FtcGxlczsKfSBtcGFfcGFyYW1zOwoKdHlwZWRl ZiBzdHJ1Y3QgdGFnX21wYV9mcmFtZV9wYXJhbXMgewogIG1wYV9zMTYgKnNhbXBsZXNbMl07CiAg bXBhX3VpbnQgYml0X3JhdGU7CiAgbXBhX3BhZGRpbmcgcGFkZGluZzsKfSBtcGFfZnJhbWVfcGFy YW1zOwoKbXBhX2ludCBtcGFfaW5pdCh2b2lkICoqZGVjb2Rlcik7Cgp2b2lkIG1wYV9mcmVlKHZv aWQgKmRlY29kZXIpOwoKdm9pZCBtcGFfcmVzZXQodm9pZCAqZGVjb2Rlcik7CgptcGFfaW50IG1w YV9nZXRfbmV4dF9mcmFtZV9pbmZvKE1QQV9GUkFNRV9JTkZPICpmcmFtZV9pbmZvLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1wYV91OCAqYml0c3RyLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1wYV9pbnQgYml0c3RyX2xlbik7CgptcGFfaW50IG1wYV9nZXRfY3Vy cl9mcmFtZV9pbmZvKE1QQV9GUkFNRV9JTkZPICpmcmFtZV9pbmZvLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZvaWQgKmRlY29kZXIpOwoKdm9pZCBtcGFfc2V0X2NyYyh2b2lkICpk ZWNvZGVyLAogICAgICAgICAgICAgICAgICAgIG1wYV9pbnQgZmxhZyk7CgptcGFfaW50IG1wYV9z ZXRfcXVhbGl0eSh2b2lkICpkZWNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICBtcGFfaW50 IHF1YWxpdHkpOwoKbXBhX2ludCBtcGFfZGVjb2RlX2ZyYW1lKG1wYV9mMzIgb3V0WzJdWzExNTJd LAogICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGVjb2RlciwKICAgICAgICAgICAgICAg ICAgICAgICAgIG1wYV91OCAqYml0c3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgbXBhX2lu dCBic19sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBtcGFfaW50IG5lZ19vZmZzZXQpOwoK bXBhX2ludCBtcGFfZGVjb2RlX2xhc3RfZnJhbWUobXBhX2YzMiBvdXRbMl1bMTE1Ml0sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRlY29kZXIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1wYV91OCAqYml0c3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtcGFfaW50IGJzX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBhX2ludCBu ZWdfb2Zmc2V0KTsKCm1wYV9pbnQgbXBhX2NvbnZlcnQodm9pZCAqb3V0WzJdLAogICAgICAgICAg ICAgICAgICAgIG1wYV9mMzIgaW5bMl1bMTE1Ml0sCiAgICAgICAgICAgICAgICAgICAgaW50IG51 bSwKICAgICAgICAgICAgICAgICAgICBtcGFfaW50IHR5cGUpOwptcGFfc3RhdHVzIG1wYV9lbmNv ZGVfaW5pdCh2b2lkICoqcF9lbmNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBtcGFf cGFyYW1zICpwYXJhbXMpOwoKdm9pZCBtcGFfZW5jb2RlX2ZyZWUodm9pZCAqcF9lbmNvZGVyKTsK Cm1wYV9zMzIgbXBhX2VuY29kZV9mcmFtZShtcGFfdTggKmJ1ZmZlciwKICAgICAgICAgICAgICAg ICAgICAgICAgIHZvaWQgKmVuY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBtcGFfZnJh bWVfcGFyYW1zICpwYXJhbXMpOwoKbXBhX3MzMiBtcGFfZW5jb2RlX2ZsdXNoKG1wYV91OCAqYnVm ZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZW5jb2Rlcik7CgpjaGFyICptcGFf dmVyc2lvbigpOwoKCn0KZXh0ZXJuICJDIiB7Cgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgYWxfdHlw ZTsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHNmX3R5cGU7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBt cGFfdTMyIHdvcmQ7CiAgICBtcGFfaW50IGJpdHM7CgoKCiAgICBtcGFfdTggKm5leHQ7CgogICAg bXBhX3U4ICpzdGFydDsKICAgIG1wYV91OCAqZW5kOwp9IElOX1NUUkVBTTsKCgp0eXBlZGVmIHN0 cnVjdCB7CiAgICBjb25zdCBtcGFfdTggc2JsaW1pdDsKICAgIGNvbnN0IG1wYV91OCBzdW1uYmFs OwogICAgY29uc3QgbXBhX3U4IG5iYWxbMzJdOwogICAgY29uc3QgbXBhX3U4ICpiYWxfcG9zWzMy XTsKICAgIGNvbnN0IG1wYV9zOCAqYmFsX2luZGV4WzMyXTsKfSBCQUxUQUI7Cgp0eXBlZGVmIHN0 cnVjdCB7CgogICAgbXBhX2ludCBpZDsKICAgIG1wYV9pbnQgbGF5ZXI7CiAgICBtcGFfaW50IHBy b3RlY3Rpb25fYml0OwogICAgbXBhX2ludCBiaXRyYXRlX2luZGV4OwogICAgbXBhX2ludCBzYW1w bGluZ19mcmVxdWVuY3k7CiAgICBtcGFfaW50IHBhZGRpbmdfYml0OwogICAgbXBhX2ludCBwcml2 YXRlX2JpdDsKICAgIG1wYV9pbnQgbW9kZTsKICAgIG1wYV9pbnQgbW9kZV9leHRlbnNpb247CiAg ICBtcGFfaW50IGNvcHlyaWdodDsKICAgIG1wYV9pbnQgb3JpZ2luYWxfaG9tZTsKICAgIG1wYV9p bnQgZW1waGFzaXM7CgoKICAgIG1wYV9pbnQgaGVhZGVyX29mZnNldDsKICAgIG1wYV9pbnQgYml0 c19pbl9mcmFtZTsKICAgIG1wYV9pbnQgYml0X3JhdGU7CiAgICBtcGFfdWludCBzYW1wbGluZ19y YXRlOwogICAgbXBhX2ludCBuY2hhbm5lbHM7CiAgICBtcGFfaW50IG5zYW1wbGVzOwogICAgbXBh X2ludCBuZWdfb2Zmc2V0OwoKCgogICAgbXBhX3VpbnQgY3JjX2NoZWNrOwogICAgbXBhX2ludCBu ZXh0X21haW5fZGF0YV9iZWdpbjsKICAgIG1wYV9pbnQgaGVhZGVyX2JpdGxlbmd0aDsKICAgIG1w YV91aW50IGhlYWRlcl9jcmM7CiAgICBtcGFfaW50IGFuY2lsbGFyeV9sZW5ndGg7Cgp9IE1QQV9I RUFERVI7CnR5cGVkZWYgc3RydWN0IHsKICAgIG1wYV9mMzIgbGluZVsyXVsyXVsxNyoxNl07CiAg ICBtcGFfdWludCBtb2RlWzJdOwp9IE1QQV9ERUxBWV9MSU5FOwoKdHlwZWRlZiBzdHJ1Y3Qgewog ICAgTVBBX0hFQURFUiBoZWFkZXI7CiAgICBNUEFfREVMQVlfTElORSBkZWxheV9saW5lOwogICAg bXBhX2YzMiBzeW50aF92YXIgWzJdWzMyKjE4XTsKICAgIG1wYV91OCBic3RvcmUgWzIwMTZdOwog ICAgbXBhX3U4IGRlZ3JfdGFiIFsxMDI0KjRdOwogICAgbXBhX2ludCBuc3RvcmU7CiAgICBtcGFf aW50IHF1YWxpdHk7CiAgICBtcGFfaW50IG5vX2NyYzsKICAgIG1wYV9pbnQgbm90X3VzZWQ7CiAg ICBtcGFfaW50IGxhc3RfZnJhbWVfZmxhZzsKfSBNUEFfSU5TVEFOQ0U7Cgp0eXBlZGVmIHN0cnVj dAp7CiAgSU5fU1RSRUFNICogaW47CiAgbXBhX2YzMiAoKiBvdXQpWzExNTJdOwogIE1QQV9IRUFE RVIgKiBoZWFkZXI7CiAgTVBBX0RFTEFZX0xJTkUgKiBkZWxheV9saW5lOwogIG1wYV9mMzIgKCog c3luX2xvY192YXIyKVsgMzIqMTggXTsKICBtcGFfdTggKiBic3RvcmU7CiAgbXBhX2YzMiAoKiBn cmFudWxlX2J1ZmZlcilbNTc2KjJdOwogIG1wYV9mMzIgKCogZmJ1ZmZlcilbMTJdWzJdWzMyXTsK ICBhbF90eXBlICgqIGFsbG9jYXRpb24pWzJdWzMyXTsKICBzZl90eXBlICgqIHNjYWxlZmFjdG9y KVsyXVszMl07CiAgbXBhX2ludCBmcmVlX2ZsYWc7CiAgbXBhX2ludCBsMXBhcnQ7CiAgbXBhX2lu dCBub19jcmM7CgoKCiAgbXBhX2ludCBuc3RvcmU7CiAgbXBhX2ludCBzYmxpbWl0OwogIGNvbnN0 IEJBTFRBQiAqIGFsbG9jOwogIG1wYV91OCAqIGRlZ3JfdGFiWzRdOwp9IEFVRElPREFUQTsKCgoK CgptcGFfaW50IG1wYV9nZXRfaGVhZGVyKCBNUEFfSEVBREVSICpoZWFkZXIsCiAgICAgICAgICAg ICAgICAgICAgICAgIG1wYV91OCAqYml0c3RyLCBtcGFfaW50IGJpdHN0cl9sZW4pOwoKCm1wYV9p bnQgbXBhX2RlY29kZV9sMSggQVVESU9EQVRBICphdSApOwptcGFfaW50IG1wYV9kZWNvZGVfbDIo IEFVRElPREFUQSAqYXUgKTsKbXBhX2ludCBtcGFfZGVjb2RlX2wzKCBBVURJT0RBVEEgKmF1ICwg bXBhX2ludCBuZWdfb2Zmc2V0LCBtcGFfaW50IHN5bmMpOwoKCnZvaWQgbXBhX291dF9zYW1wbGVz XzEyKCBBVURJT0RBVEEgKiBhdSwgbXBhX2ludCBsYXllcik7Cm1wYV9pbnQgbXBhX3BvbHlfa2Vy bjMyKCBtcGFfZjMyICpvdXRwdXQsIG1wYV9pbnQgY2hhbiwgTVBBX0RFTEFZX0xJTkUgKmRlbGF5 X2xpbmUgKTsKbXBhX2ludCBtcGFfcG9seV9rZXJuMTYoIG1wYV9mMzIgKm91dHB1dCwgbXBhX2lu dCBjaGFuLCBNUEFfREVMQVlfTElORSAqZGVsYXlfbGluZSApOwptcGFfaW50IG1wYV9wb2x5X2tl cm44ICggbXBhX2YzMiAqb3V0cHV0LCBtcGFfaW50IGNoYW4sIE1QQV9ERUxBWV9MSU5FICpkZWxh eV9saW5lICk7Cm1wYV9pbnQgbXBhX2h5YnJpZF9zeW50aGVzaXMoCiAgICAgICBBVURJT0RBVEEg KmF1LAogICAgICAgbXBhX2YzMiAqZGF0YV9pbiwgbXBhX2YzMiAqZGF0YV9vdXQsCiAgICAgICBt cGFfaW50IHR5cGUsIG1wYV9pbnQgcG9zaXRpb24sIG1wYV9pbnQgY2hhbiApOwoKCnZvaWQgbXBh X2luaXRfZGVncm91cF90YWJsZSggbXBhX3U4ICp0YWJsZSwgbXBhX2ludCBzdGVwcyApOwoKCm1w YV91aW50IG1wYV9jYWxjX2NyYyggSU5fU1RSRUFNICogZGluLCBtcGFfdWludCBjcmNfcmVnLCBt cGFfaW50IGJpdF9udW0pOwptcGFfdWludCBtcGFfYWRkX2NyYyggbXBhX3VpbnQgd29yZCwgbXBh X3VpbnQgY3JjX3JlZywgbXBhX2ludCBiaXRfbnVtKTsKbXBhX2ludCBtcGFfY2FsY19hbmRfY2hl Y2tfY3JjX2wxICggQVVESU9EQVRBICogYXUsIG1wYV9pbnQgbmJpdHMpOwptcGFfaW50IG1wYV9j YWxjX2FuZF9jaGVja19jcmNfbDIgKCBJTl9TVFJFQU0qIGR1cF9pbiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEFVRElPREFUQSAqIGF1LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbXBhX2ludCBuYml0cyk7Cm1wYV9pbnQgbXBhX2NhbGNfYW5kX2No ZWNrX2NyY19sMyggQVVESU9EQVRBICogYXUsIG1wYV9pbnQgc2lfbGVuZ3RoKTsKCnZvaWQgbXBh X2NvcHlfYnl0ZXMobXBhX3U4ICpkc3QsIGNvbnN0IG1wYV91OCAqc3JjLCBtcGFfczMyIG4pOwp2 b2lkIG1wYV9jcHlfZnZlYyAoIG1wYV9mMzIgKnNyYywgbXBhX2YzMiAqZHN0LCBtcGFfaW50IGNu dCApOwp2b2lkIG1wYV9zZXRfdmVjICggdm9pZCAqZHN0LCBtcGFfczMyIHZhbCwgbXBhX2ludCBj bnQsIG1wYV9pbnQgc2l6ZSApOwptcGFfZjMyIG1wYV9zcXJzdW1fdmVjKCBtcGFfZjMyICpzcmMs IG1wYV9pbnQgc2l6ZSApOwoKCnZvaWQgbXBhX2JpdHNfaW5pdCAoSU5fU1RSRUFNICogaW4sIG1w YV91OCogYml0c3RyLCBtcGFfaW50IGJpdHN0cl9sZW4pOwptcGFfdTMyIG1wYV9nZXRfYml0cyAo SU5fU1RSRUFNICogaW4sIG1wYV9pbnQgTik7CnZvaWQgbXBhX2p1bXBfYnVmIChJTl9TVFJFQU0g KiBpbiwgbXBhX3MzMiBiaXRfb2ZmKTsKCgoKCgoKdm9pZCBtcGFfZHVwX2luX3N0cmVhbShJTl9T VFJFQU0gKiBkc3QsIElOX1NUUkVBTSAqIHNyYyk7Cm1wYV9zMzIgbXBhX2dldF8xYml0Mm1zYiAo SU5fU1RSRUFNICogZGluKTsKbXBhX3MzMiBtcGFfZ2V0XzE2Yml0Mm1zYihJTl9TVFJFQU0gKiBk aW4pOwp9CmV4dGVybiAiQyIgewoKCnN0cnVjdCBTSV9MM19DSEdSCnsKICAgICAgbXBhX3UxNiBw YXJ0Ml8zX2xlbmd0aDsKICAgICAgbXBhX3UxNiBiaWdfdmFsdWVzOwogICAgICBtcGFfdTE2IGds b2JhbF9nYWluOwogICAgICBtcGFfdTE2IHNjYWxlZmFjX2NvbXByZXNzOwogICAgICBtcGFfdTE2 IHdpbmRvd19zd2l0Y2hpbmdfZmxhZzsKICAgICAgbXBhX3UxNiBibG9ja190eXBlOwogICAgICBt cGFfdTE2IG1peGVkX2Jsb2NrX2ZsYWc7CiAgICAgIG1wYV91MTYgdGFibGVfc2VsZWN0WzNdOwog ICAgICBtcGFfdTE2IHN1YmJsb2NrX2dhaW5bM107CiAgICAgIG1wYV91MTYgcmVnaW9uMF9jb3Vu dDsKICAgICAgbXBhX3UxNiByZWdpb24xX2NvdW50OwogICAgICBtcGFfdTE2IHByZWZsYWc7CiAg ICAgIG1wYV91MTYgc2NhbGVmYWNfc2NhbGU7CiAgICAgIG1wYV91MTYgY291bnQxdGFibGVfc2Vs ZWN0OwoKICAgICAgbXBhX3UxNiBibG9ja19tb2RlOwogICAgICBtcGFfdTE2IHJlZ2lvbl9wYWly c1szXTsKICAgICAgbXBhX3UxNiBjb3VudDFfdmFsdWVzOwoKICAgICAgY29uc3QgbXBhX3U4KiBi YW5kX3dpZHRoX3B0cjsKICAgICAgbXBhX3MxNiBub19vZl9iYW5kczsKICAgICAgbXBhX3MxNiBu b19vZl9zaG9ydF90cmk7CiAgICAgIG1wYV9zMTYgc2xlbls0XTsKICAgICAgbXBhX3MxNiBucl9v Zl9zZmJbNF07CiAgICAgIG1wYV9zMTYgaW50ZW5zaXR5X3NjYWxlOwp9OwoKc3RydWN0IFNJX0wz X0NIIHsKICAgIG1wYV91MTYgc2Nmc2lbNF07CiAgICBzdHJ1Y3QgU0lfTDNfQ0hHUiBnclsyXTsK fTsKCnR5cGVkZWYgc3RydWN0IHsKICBtcGFfdTE2IG1haW5fZGF0YV9iZWdpbjsKICBtcGFfdTE2 IHByaXZhdGVfYml0czsKICBzdHJ1Y3QgU0lfTDNfQ0ggY2hbMl07Cn0gU0lfTDM7CgoKCgp0eXBl ZGVmIHN0cnVjdHsKICAgIGNvbnN0IG1wYV91OCBub19vZl9zY2ZfYmFuZHM7CiAgICBjb25zdCBt cGFfdTggbm9fb2Zfc2hvcnRfdHJpOwogICAgY29uc3QgbXBhX3U4IHdpZHRoWzMqMTIgKzNdOwp9 IFNDRl9CQU5EX0lORk87CgoKCnZvaWQgbXBhX3JlYWRfc2ZfYXJyYXkoCiAgSU5fU1RSRUFNKiBp biwKICBzZl90eXBlICpkZXN0LAogIG1wYV9pbnQgYml0cywKICBtcGFfaW50IHNpemUpCjsKCnZv aWQgbXBhX3ByZXBhcmVfZ3JjaF9zaSggQVVESU9EQVRBICphdSwgc3RydWN0IFNJX0wzX0NIR1Ig KiBzaSApOwoKbXBhX2ludCBtcGFfZGVjb2RlX3NjYWxlZmFjcygKICBzdHJ1Y3QgU0lfTDNfQ0hH UiAqc2ksCiAgc3RydWN0IFNJX0wzX0NIICpzaV9jaCwKICBJTl9TVFJFQU0gKmluLAogIHNmX3R5 cGUgKnNjYWxlZmFjcywKICBtcGFfaW50IGdyKQo7CgptcGFfaW50IG1wYV9kZWNvZGVfbXBlZzJf c2NhbGVmYWNzKAogIEFVRElPREFUQSAqYXUsCiAgc3RydWN0IFNJX0wzX0NIR1IgKnNpLAogIHNm X3R5cGUgKnNjYWxlZmFjcywKICBtcGFfaW50IGNoKQo7Cgp2b2lkIG1wYV9yZXNjYWxpbmcoCiAg c3RydWN0IFNJX0wzX0NIR1IgKnNpLAogIHNmX3R5cGUgKnNjYWxlZmFjcywKICBtcGFfZjMyICpz cGVjX2J1ZikKOwoKdm9pZCBtcGFfcmVzb3J0aW5nKAogIGNvbnN0IG1wYV91OCAqd2lkdGgsCiAg bXBhX2ludCBub19vZl9zaG9ydF90cmksCiAgbXBhX2ludCBub19vZl9iYW5kcywKICBtcGFfZjMy ICpzcGVjX2J1ZiApCjsKCnZvaWQgbXBhX2RlY29kZV9pbnRlbnNpdHlfbW9kZXMoCiAgQVVESU9E QVRBICphdSwKICBzdHJ1Y3QgU0lfTDNfQ0hHUiAqc2ksCiAgbXBhX2YzMiAqbGVmdCwKICBtcGFf ZjMyICpyaWdodCwKICBzZl90eXBlICpzY2FsZWZhY3MpCjsKCnZvaWQgbXBhX3NldF9pbGxfcG9z KHN0cnVjdCBTSV9MM19DSEdSICpzaV9wdHIsIHNmX3R5cGUgKnNjYWxlZmFjcyk7CgptcGFfaW50 IG1wYV9zY2FuX2lzX2JhbmRzKAogIG1wYV9mMzIgKip2YWx1ZXMsCiAgbXBhX2ludCBub19vZl9i YW5kcywKICBtcGFfaW50IG5vX29mX2Jsb2NrcywKICBjb25zdCBtcGFfdTggKip3X2FycmF5LAog IHNmX3R5cGUgKipzY2ZfcHRyLAogIG1wYV9pbnQgZm91bmQpCjsKCnZvaWQgbXBhX2RlY29kZV9t cyggbXBhX2YzMiAqYnVmX20sIG1wYV9mMzIgKmJ1Zl9zLCBtcGFfaW50IG5vKTsKCnZvaWQgbXBh X2RlY29kZV9pbnRlbnNpdHkoCiAgbXBhX2YzMiAqYnVmX2wsCiAgbXBhX2YzMiAqYnVmX3IsCiAg bXBhX2ludCBmYWN0b3Jfbm8sCiAgbXBhX2ludCBubywKICBtcGFfaW50IG1wZWdfaWQsCiAgbXBh X2ludCBpMCkKOwoKdm9pZCBtcGFfc2NhbGVfbDMoCiAgbXBhX2YzMiAqc3BlY19idWYsCiAgbXBh X3MxNiAqZ2Fpbl90YWIsCiAgY29uc3QgbXBhX3U4ICp3aWR0aF90YWIsCiAgbXBhX2ludCBubykK OwoKdm9pZCBtcGFfY2FsY19zdWJyZWdpb25zKCBzdHJ1Y3QgU0lfTDNfQ0hHUiAqc2kgKTsKCgoK bXBhX2ludCBtcGFfZGVjb2RlX2h1ZmZtYW4oCiAgc3RydWN0IFNJX0wzX0NIR1IgKnNpLAogIEFV RElPREFUQSAqYXUsCiAgbXBhX2YzMiAqc3BlY19idWYsCiAgbXBhX3MzMiBwYXJ0Ml9sZW5ndGgp CjsKCgoKCn0KZXh0ZXJuICJDIiB7CgoKCmV4dGVybiBjb25zdCBtcGFfczE2IG1wYV90X2JpdHJh dGVzWzJdWzRdWzE2XTsKZXh0ZXJuIGNvbnN0IG1wYV91MTYgbXBhX3Rfc2FtcF9mcmVxWzJdWzRd OwpleHRlcm4gY29uc3QgbXBhX3UxNiBtcGFfdF9tYXhfZnJlZV9iaXRzWzRdOwpleHRlcm4gY29u c3QgbXBhX3U4IG1wYV90X2JpdHNfcGVyX3Nsb3RfbTFbNF07CmV4dGVybiBjb25zdCBtcGFfdTE2 IG1wYV90X3NhbXBsZXNfcGVyX2ZyYW1lWzJdWzRdOwpleHRlcm4gY29uc3QgbXBhX3UxNiBtcGFf dF9hbGxvY19sMVsxNl07CmV4dGVybiBjb25zdCBtcGFfZjMyIG1wYV90X2ZhbGxvY1sxNV07CmV4 dGVybiBjb25zdCBtcGFfZjMyIG1wYV90X2RlcWFudF9tdWxbMTVdOwpleHRlcm4gY29uc3QgbXBh X2YzMiBtcGFfdF9tdWx0aXBsZVs2NF07CmV4dGVybiBjb25zdCBtcGFfZjMyIG1wYV90X3JfbXVs dGlwbGVbNjRdOwpleHRlcm4gY29uc3QgQkFMVEFCIG1wYV90X2JhbFs1XTsKZXh0ZXJuIGNvbnN0 IG1wYV9mMzIgbXBhX3RfY1sxN107CmV4dGVybiBjb25zdCBtcGFfZjMyIG1wYV90X2RbMTddOwpl eHRlcm4gY29uc3QgbXBhX3UxNiBtcGFfdF9hbGxvY1sxN107CmV4dGVybiBjb25zdCBtcGFfZjMy IG1wYV90X2ZpbnZfYWxsb2NbMTddOwpleHRlcm4gY29uc3QgU0NGX0JBTkRfSU5GTyBtcGFfdF9z Y2ZfYmFuZF9pbmZvWzJdWzRdWzNdOwpleHRlcm4gY29uc3QgbXBhX3U4IG1wYV90X21wZWcyX25v X3NmYmFuZHNbNl1bM11bNF07CmV4dGVybiBjb25zdCBtcGFfZjMyIG1wYV90X2ludGVuc2l0eV9m YWN0b3JzWzddOwpleHRlcm4gY29uc3QgbXBhX2YzMiBtcGFfdF9tcGVnMl9pc19mYWNzWzJdWzE2 XTsKZXh0ZXJuIGNvbnN0IG1wYV9mMzIgbXBhX3RfcG93XzBfMjVbXTsKZXh0ZXJuIGNvbnN0IHVu aW9uIG1wYV91cHcge21wYV9mMzIgZlsyNTYrOF07IG1wYV9kNjQgZFsxMjgrNF07fSBtcGFfdF9w b2x5c3luX3dpbmRvdzsKZXh0ZXJuIGNvbnN0IHVuaW9uIG1wYV91c3Qge21wYV9mMzIgZlszMl07 IG1wYV9kNjQgZFsxNl07fSBtcGFfdF9zZWN0YWI7CmV4dGVybiBjb25zdCB1bmlvbiBtcGFfdXM3 MiB7bXBhX2YzMiBmWzE4XTsgbXBhX2Q2NCBkWzldO30gbXBhX3Rfc2VjNzJ3aW5sOwpleHRlcm4g Y29uc3QgdW5pb24gbXBhX3VzMzYge21wYV9mMzIgZlsxMF07IG1wYV9kNjQgZFs1XTt9IG1wYV90 X3NlYzM2OwpleHRlcm4gY29uc3QgdW5pb24gbXBhX3VjMTgge21wYV9mMzIgZlsgOF07IG1wYV9k NjQgZFs0XTt9IG1wYV90X2NvczE4OwpleHRlcm4gY29uc3QgdW5pb24gbXBhX3VzMjQge21wYV9m MzIgZlsgNl07IG1wYV9kNjQgZFszXTt9IG1wYV90X3NlYzI0d2luczsKZXh0ZXJuIGNvbnN0IHVu aW9uIG1wYV91czEyIHttcGFfZjMyIGZbIDRdOyBtcGFfZDY0IGRbMl07fSBtcGFfdF9zZWMxMjsK ZXh0ZXJuIGNvbnN0IHVuaW9uIG1wYV91YzYge21wYV9mMzIgZlsgMl07IG1wYV9kNjQgZDsgfSBt cGFfdF9jb3M2OwpleHRlcm4gY29uc3QgdW5pb24gbXBhX3VzcXMge21wYV9mMzIgZlsgNF07IG1w YV9kNjQgZFsyXTt9IG1wYV90X3dpbnNxczsKZXh0ZXJuIGNvbnN0IHVuaW9uIG1wYV91bHFsIHtt cGFfZjMyIGZbMTBdOyBtcGFfZDY0IGRbNV07fSBtcGFfdF93aW5scWw7CmV4dGVybiBjb25zdCB1 bmlvbiBtcGFfdXNxbCB7bXBhX2YzMiBmWzEyXTsgbXBhX2Q2NCBkWzZdO30gbXBhX3Rfd2luc3Fs OwoKZXh0ZXJuIGNvbnN0IG1wYV9mMzIgbXBhX3RfY19zaWduYWwgWyA4IF07CmV4dGVybiBjb25z dCBtcGFfZjMyIG1wYV90X2NfYWxpYXMgWyA4IF07CgpleHRlcm4gY29uc3QgbXBhX2YzMiBtcGFf dF9wb3c0XzNbODIwOF07CmV4dGVybiBjb25zdCBtcGFfZjMyIG1wYV90X2Z2YWwxWzJdOwpleHRl cm4gY29uc3QgbXBhX2YzMiBtcGFfdF9mdmFsWzMyXTsKCgp9CnN0YXRpYyB2b2lkIG1kY3RfYWxp YXNfcmVkdWN0aW9uKCBtcGFfZjMyKiBzcmMgKTsKc3RhdGljIHZvaWQgbWRjdF9zeW50aGVzaXMo IG1wYV9mMzIgKmlucHV0LCBtcGFfZjMyICpvdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtcGFfZjMyICpwcmV2LCBtcGFfaW50IGJsb2NrX3R5cGUsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtcGFfaW50IHBvc2l0aW9uLCBtcGFfaW50IG1kY3RuciApOwoKc3RhdGljIHZv aWQgaW1kY3QgKG1wYV9mMzIgKm91dCwgbXBhX2YzMiAqaW4sIG1wYV9mMzIgKnBydiwgbXBhX2lu dCB0eXBlKTsKc3RhdGljIHZvaWQgZmRjdDE4KG1wYV9mMzIgKm91dCwgbXBhX2YzMiAqaW4pOwpz dGF0aWMgdm9pZCBmZGN0NiAobXBhX2YzMiAqb3V0LCBtcGFfZjMyICppbik7CgpzdGF0aWMgdm9p ZCBwb2x5X3N5bnRoZXNpczMyKCBBVURJT0RBVEEgKiBhdSwgbXBhX2YzMiAqaW5wdXQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1wYV9mMzIgKm91dHB1dCwgbXBhX2ludCBjaGFuICk7 CgoKCnN0YXRpYyB2b2lkIGZmdHgzMihtcGFfZjMyICpvdXQxLCBtcGFfZjMyICpvdXQyLCBtcGFf ZjMyICppbikKewpyZWdpc3RlciBtcGFfZjMyIHIwLHIxLHIyLHIzLHI0LHI1LHI2LHI3LHI4LHI5 LHJhLHJiLHJjLHJkLHJlLHJmOwptcGFfZDY0ICp0bXAgPSAobXBhX2Q2NCopaW47Cgp7IG1wYV9k NjQgeDEseDIsY2Y7IHgxID0gKihtcGFfZDY0KikoaW4pOyB4MiA9ICoobXBhX2Q2NCopKGluKzMw KTsgY2YgPSAqKG1wYV9kNjQqKShtcGFfdF9zZWN0YWIuZisxNiApOyByMCA9ICgobXBhX2YzMiop JngxKVswXSArICgobXBhX2YzMiopJngyKVsxXTsgcjEgPSAoKG1wYV9mMzIqKSZ4MSlbMV0gKyAo KG1wYV9mMzIqKSZ4MilbMF07ICgobXBhX2YzMiopJngyKVswXSAtPSAoKG1wYV9mMzIqKSZ4MSlb MV07ICgobXBhX2YzMiopJngyKVsxXSAtPSAoKG1wYV9mMzIqKSZ4MSlbMF07ICgobXBhX2YzMiop JngyKVswXSAqPSAoKG1wYV9mMzIqKSZjZilbMV07ICgobXBhX2YzMiopJngyKVsxXSAqPSAoKG1w YV9mMzIqKSZjZilbMF07ICh0bXArMClbMF0gPSB4MjsgfQp7IG1wYV9kNjQgeDEseDIsY2Y7IHgx ID0gKihtcGFfZDY0KikoaW4rMTQpOyB4MiA9ICoobXBhX2Q2NCopKGluKzE2KTsgY2YgPSAqKG1w YV9kNjQqKShtcGFfdF9zZWN0YWIuZiszMCApOyByZSA9ICgobXBhX2YzMiopJngxKVswXSArICgo bXBhX2YzMiopJngyKVsxXTsgcmYgPSAoKG1wYV9mMzIqKSZ4MSlbMV0gKyAoKG1wYV9mMzIqKSZ4 MilbMF07ICgobXBhX2YzMiopJngyKVswXSAtPSAoKG1wYV9mMzIqKSZ4MSlbMV07ICgobXBhX2Yz MiopJngyKVsxXSAtPSAoKG1wYV9mMzIqKSZ4MSlbMF07ICgobXBhX2YzMiopJngyKVswXSAqPSAo KG1wYV9mMzIqKSZjZilbMV07ICgobXBhX2YzMiopJngyKVsxXSAqPSAoKG1wYV9mMzIqKSZjZilb MF07ICh0bXArNylbMF0gPSB4MjsgfQp7IG1wYV9kNjQgY2Y7IG1wYV9mMzIgdDAsdDE7IGNmID0g KihtcGFfZDY0KikobXBhX3Rfc2VjdGFiLmYrOCApOyB0MCA9IHIwIC0gcmY7IHQxID0gcjEgLSBy ZTsgcjAgKz0gcmY7IHJmID0gdDAgKiAoKG1wYV9mMzIqKSZjZilbMF07IHIxICs9IHJlOyByZSA9 IHQxICogKChtcGFfZjMyKikmY2YpWzFdOyB9CnsgbXBhX2Q2NCB4MSx4MixjZjsgeDEgPSAqKG1w YV9kNjQqKShpbis2KTsgeDIgPSAqKG1wYV9kNjQqKShpbisyNCk7IGNmID0gKihtcGFfZDY0Kiko bXBhX3Rfc2VjdGFiLmYrMjIgKTsgcjYgPSAoKG1wYV9mMzIqKSZ4MSlbMF0gKyAoKG1wYV9mMzIq KSZ4MilbMV07IHI3ID0gKChtcGFfZjMyKikmeDEpWzFdICsgKChtcGFfZjMyKikmeDIpWzBdOyAo KG1wYV9mMzIqKSZ4MilbMF0gLT0gKChtcGFfZjMyKikmeDEpWzFdOyAoKG1wYV9mMzIqKSZ4Milb MV0gLT0gKChtcGFfZjMyKikmeDEpWzBdOyAoKG1wYV9mMzIqKSZ4MilbMF0gKj0gKChtcGFfZjMy KikmY2YpWzFdOyAoKG1wYV9mMzIqKSZ4MilbMV0gKj0gKChtcGFfZjMyKikmY2YpWzBdOyAodG1w KzMpWzBdID0geDI7IH0KeyBtcGFfZDY0IHgxLHgyLGNmOyB4MSA9ICoobXBhX2Q2NCopKGluKzgp OyB4MiA9ICoobXBhX2Q2NCopKGluKzIyKTsgY2YgPSAqKG1wYV9kNjQqKShtcGFfdF9zZWN0YWIu ZisyNCApOyByOCA9ICgobXBhX2YzMiopJngxKVswXSArICgobXBhX2YzMiopJngyKVsxXTsgcjkg PSAoKG1wYV9mMzIqKSZ4MSlbMV0gKyAoKG1wYV9mMzIqKSZ4MilbMF07ICgobXBhX2YzMiopJngy KVswXSAtPSAoKG1wYV9mMzIqKSZ4MSlbMV07ICgobXBhX2YzMiopJngyKVsxXSAtPSAoKG1wYV9m MzIqKSZ4MSlbMF07ICgobXBhX2YzMiopJngyKVswXSAqPSAoKG1wYV9mMzIqKSZjZilbMV07ICgo bXBhX2YzMiopJngyKVsxXSAqPSAoKG1wYV9mMzIqKSZjZilbMF07ICh0bXArNClbMF0gPSB4Mjsg fQp7IG1wYV9kNjQgY2Y7IG1wYV9mMzIgdDAsdDE7IGNmID0gKihtcGFfZDY0KikobXBhX3Rfc2Vj dGFiLmYrMTQgKTsgdDAgPSByNiAtIHI5OyB0MSA9IHI3IC0gcjg7IHI2ICs9IHI5OyByOSA9IHQw ICogKChtcGFfZjMyKikmY2YpWzBdOyByNyArPSByODsgcjggPSB0MSAqICgobXBhX2YzMiopJmNm KVsxXTsgfQp7IG1wYV9kNjQgY2Y7IG1wYV9mMzIgdDAsdDE7IGNmID0gKihtcGFfZDY0KikobXBh X3Rfc2VjdGFiLmYrNCApOyB0MCA9IHIwIC0gcjc7IHQxID0gcjEgLSByNjsgcjAgKz0gcjc7IHI3 ID0gdDAgKiAoKG1wYV9mMzIqKSZjZilbMF07IHIxICs9IHI2OyByNiA9IHQxICogKChtcGFfZjMy KikmY2YpWzFdOyB9CnsgbXBhX2Q2NCB4MSx4MixjZjsgeDEgPSAqKG1wYV9kNjQqKShpbisyKTsg eDIgPSAqKG1wYV9kNjQqKShpbisyOCk7IGNmID0gKihtcGFfZDY0KikobXBhX3Rfc2VjdGFiLmYr MTggKTsgcjIgPSAoKG1wYV9mMzIqKSZ4MSlbMF0gKyAoKG1wYV9mMzIqKSZ4MilbMV07IHIzID0g KChtcGFfZjMyKikmeDEpWzFdICsgKChtcGFfZjMyKikmeDIpWzBdOyAoKG1wYV9mMzIqKSZ4Milb MF0gLT0gKChtcGFfZjMyKikmeDEpWzFdOyAoKG1wYV9mMzIqKSZ4MilbMV0gLT0gKChtcGFfZjMy KikmeDEpWzBdOyAoKG1wYV9mMzIqKSZ4MilbMF0gKj0gKChtcGFfZjMyKikmY2YpWzFdOyAoKG1w YV9mMzIqKSZ4MilbMV0gKj0gKChtcGFfZjMyKikmY2YpWzBdOyAodG1wKzEpWzBdID0geDI7IH0K eyBtcGFfZDY0IHgxLHgyLGNmOyB4MSA9ICoobXBhX2Q2NCopKGluKzEyKTsgeDIgPSAqKG1wYV9k NjQqKShpbisxOCk7IGNmID0gKihtcGFfZDY0KikobXBhX3Rfc2VjdGFiLmYrMjggKTsgcmMgPSAo KG1wYV9mMzIqKSZ4MSlbMF0gKyAoKG1wYV9mMzIqKSZ4MilbMV07IHJkID0gKChtcGFfZjMyKikm eDEpWzFdICsgKChtcGFfZjMyKikmeDIpWzBdOyAoKG1wYV9mMzIqKSZ4MilbMF0gLT0gKChtcGFf ZjMyKikmeDEpWzFdOyAoKG1wYV9mMzIqKSZ4MilbMV0gLT0gKChtcGFfZjMyKikmeDEpWzBdOyAo KG1wYV9mMzIqKSZ4MilbMF0gKj0gKChtcGFfZjMyKikmY2YpWzFdOyAoKG1wYV9mMzIqKSZ4Milb MV0gKj0gKChtcGFfZjMyKikmY2YpWzBdOyAodG1wKzYpWzBdID0geDI7IH0KeyBtcGFfZDY0IGNm OyBtcGFfZjMyIHQwLHQxOyBjZiA9ICoobXBhX2Q2NCopKG1wYV90X3NlY3RhYi5mKzEwICk7IHQw ID0gcjIgLSByZDsgdDEgPSByMyAtIHJjOyByMiArPSByZDsgcmQgPSB0MCAqICgobXBhX2YzMiop JmNmKVswXTsgcjMgKz0gcmM7IHJjID0gdDEgKiAoKG1wYV9mMzIqKSZjZilbMV07IH0KeyBtcGFf ZDY0IHgxLHgyLGNmOyB4MSA9ICoobXBhX2Q2NCopKGluKzQpOyB4MiA9ICoobXBhX2Q2NCopKGlu KzI2KTsgY2YgPSAqKG1wYV9kNjQqKShtcGFfdF9zZWN0YWIuZisyMCApOyByNCA9ICgobXBhX2Yz MiopJngxKVswXSArICgobXBhX2YzMiopJngyKVsxXTsgcjUgPSAoKG1wYV9mMzIqKSZ4MSlbMV0g KyAoKG1wYV9mMzIqKSZ4MilbMF07ICgobXBhX2YzMiopJngyKVswXSAtPSAoKG1wYV9mMzIqKSZ4 MSlbMV07ICgobXBhX2YzMiopJngyKVsxXSAtPSAoKG1wYV9mMzIqKSZ4MSlbMF07ICgobXBhX2Yz MiopJngyKVswXSAqPSAoKG1wYV9mMzIqKSZjZilbMV07ICgobXBhX2YzMiopJngyKVsxXSAqPSAo KG1wYV9mMzIqKSZjZilbMF07ICh0bXArMilbMF0gPSB4MjsgfQp7IG1wYV9kNjQgeDEseDIsY2Y7 IHgxID0gKihtcGFfZDY0KikoaW4rMTApOyB4MiA9ICoobXBhX2Q2NCopKGluKzIwKTsgY2YgPSAq KG1wYV9kNjQqKShtcGFfdF9zZWN0YWIuZisyNiApOyByYSA9ICgobXBhX2YzMiopJngxKVswXSAr ICgobXBhX2YzMiopJngyKVsxXTsgcmIgPSAoKG1wYV9mMzIqKSZ4MSlbMV0gKyAoKG1wYV9mMzIq KSZ4MilbMF07ICgobXBhX2YzMiopJngyKVswXSAtPSAoKG1wYV9mMzIqKSZ4MSlbMV07ICgobXBh X2YzMiopJngyKVsxXSAtPSAoKG1wYV9mMzIqKSZ4MSlbMF07ICgobXBhX2YzMiopJngyKVswXSAq PSAoKG1wYV9mMzIqKSZjZilbMV07ICgobXBhX2YzMiopJngyKVsxXSAqPSAoKG1wYV9mMzIqKSZj ZilbMF07ICh0bXArNSlbMF0gPSB4MjsgfQp7IG1wYV9kNjQgY2Y7IG1wYV9mMzIgdDAsdDE7IGNm ID0gKihtcGFfZDY0KikobXBhX3Rfc2VjdGFiLmYrMTIgKTsgdDAgPSByNCAtIHJiOyB0MSA9IHI1 IC0gcmE7IHI0ICs9IHJiOyByYiA9IHQwICogKChtcGFfZjMyKikmY2YpWzBdOyByNSArPSByYTsg cmEgPSB0MSAqICgobXBhX2YzMiopJmNmKVsxXTsgfQp7IG1wYV9kNjQgY2Y7IG1wYV9mMzIgdDAs dDE7IGNmID0gKihtcGFfZDY0KikobXBhX3Rfc2VjdGFiLmYrNiApOyB0MCA9IHIyIC0gcjU7IHQx ID0gcjMgLSByNDsgcjIgKz0gcjU7IHI1ID0gdDAgKiAoKG1wYV9mMzIqKSZjZilbMF07IHIzICs9 IHI0OyByNCA9IHQxICogKChtcGFfZjMyKikmY2YpWzFdOyB9CgoKeyBtcGFfZDY0IGNmOyBtcGFf ZjMyIHQwLHQxOyBjZiA9ICoobXBhX2Q2NCopKG1wYV90X3NlY3RhYi5mKzIgKTsgdDAgPSByMCAt IHIzOyB0MSA9IHIxIC0gcjI7IHIwICs9IHIzOyByMyA9IHQwICogKChtcGFfZjMyKikmY2YpWzBd OyByMSArPSByMjsgcjIgPSB0MSAqICgobXBhX2YzMiopJmNmKVsxXTsgfQp7IG1wYV9mMzIgdDAs dDE7IHQwID0gcjAgLSByMTsgdDEgPSByMyAtIHIyOyByMCArPSByMTsgcjEgPSB0MCAqIG1wYV90 X3NlY3RhYi5mWyAxXTsgcjIgKz0gcjM7IHIzID0gdDEgKiBtcGFfdF9zZWN0YWIuZlsgMV07IHIy ICs9IHIzOyB9CiAgb3V0MVsxNiogMF0gPSByMTsKICBvdXQxWzE2KjE2XSA9IHIwOwogIG91dDFb MTYqIDhdID0gcjI7CiAgb3V0MlsxNiogMF0gPSByMTsKICBvdXQyWzE2KiA4XSA9IHIzOwp7IG1w YV9kNjQgY2Y7IG1wYV9mMzIgdDAsdDE7IGNmID0gKihtcGFfZDY0KikobXBhX3Rfc2VjdGFiLmYr MiApOyB0MCA9IHI3IC0gcjQ7IHQxID0gcjYgLSByNTsgcjQgKz0gcjc7IHI3ID0gdDAgKiAoKG1w YV9mMzIqKSZjZilbMF07IHI1ICs9IHI2OyByNiA9IHQxICogKChtcGFfZjMyKikmY2YpWzFdOyB9 CnsgbXBhX2YzMiB0MCx0MTsgdDAgPSByNCAtIHI1OyB0MSA9IHI3IC0gcjY7IHI0ICs9IHI1OyBy NSA9IHQwICogbXBhX3Rfc2VjdGFiLmZbIDFdOyByNiArPSByNzsgcjcgPSB0MSAqIG1wYV90X3Nl Y3RhYi5mWyAxXTsgcjYgKz0gcjc7IHI0ICs9IHI2OyByNiArPSByNTsgcjUgKz0gcjc7IH0KICBv dXQxWzE2KiA0XSA9IHI2OwogIG91dDFbMTYqMTJdID0gcjQ7CiAgb3V0MlsxNiogNF0gPSByNTsK ICBvdXQyWzE2KjEyXSA9IHI3OwoKeyBtcGFfZDY0IGNmOyBtcGFfZjMyIHQwLHQxOyBjZiA9ICoo bXBhX2Q2NCopKG1wYV90X3NlY3RhYi5mKzQgKTsgdDAgPSByZiAtIHI4OyB0MSA9IHJlIC0gcjk7 IHI4ICs9IHJmOyByZiA9IHQwICogKChtcGFfZjMyKikmY2YpWzBdOyByOSArPSByZTsgcmUgPSB0 MSAqICgobXBhX2YzMiopJmNmKVsxXTsgfQp7IG1wYV9kNjQgY2Y7IG1wYV9mMzIgdDAsdDE7IGNm ID0gKihtcGFfZDY0KikobXBhX3Rfc2VjdGFiLmYrNiApOyB0MCA9IHJkIC0gcmE7IHQxID0gcmMg LSByYjsgcmEgKz0gcmQ7IHJkID0gdDAgKiAoKG1wYV9mMzIqKSZjZilbMF07IHJiICs9IHJjOyBy YyA9IHQxICogKChtcGFfZjMyKikmY2YpWzFdOyB9CnsgbXBhX2Q2NCBjZjsgbXBhX2YzMiB0MCx0 MTsgY2YgPSAqKG1wYV9kNjQqKShtcGFfdF9zZWN0YWIuZisyICk7IHQwID0gcjggLSByYjsgdDEg PSByOSAtIHJhOyByOCArPSByYjsgcmIgPSB0MCAqICgobXBhX2YzMiopJmNmKVswXTsgcjkgKz0g cmE7IHJhID0gdDEgKiAoKG1wYV9mMzIqKSZjZilbMV07IH0KeyBtcGFfZjMyIHQwLHQxOyB0MCA9 IHI4IC0gcjk7IHQxID0gcmIgLSByYTsgcjggKz0gcjk7IHI5ID0gdDAgKiBtcGFfdF9zZWN0YWIu ZlsgMV07IHJhICs9IHJiOyByYiA9IHQxICogbXBhX3Rfc2VjdGFiLmZbIDFdOyByYSArPSByYjsg fQoKeyBtcGFfZDY0IGNmOyBtcGFfZjMyIHQwLHQxOyBjZiA9ICoobXBhX2Q2NCopKG1wYV90X3Nl Y3RhYi5mKzIgKTsgdDAgPSByZiAtIHJjOyB0MSA9IHJlIC0gcmQ7IHJjICs9IHJmOyByZiA9IHQw ICogKChtcGFfZjMyKikmY2YpWzBdOyByZCArPSByZTsgcmUgPSB0MSAqICgobXBhX2YzMiopJmNm KVsxXTsgfQp7IG1wYV9mMzIgdDAsdDE7IHQwID0gcmMgLSByZDsgdDEgPSByZiAtIHJlOyByYyAr PSByZDsgcmQgPSB0MCAqIG1wYV90X3NlY3RhYi5mWyAxXTsgcmUgKz0gcmY7IHJmID0gdDEgKiBt cGFfdF9zZWN0YWIuZlsgMV07IHJlICs9IHJmOyByYyArPSByZTsgcmUgKz0gcmQ7IHJkICs9IHJm OyB9CiAgb3V0MVsxNiogMl0gPSByZSArIHI5OwogIG91dDFbMTYqIDZdID0gcmEgKyByZTsKICBv dXQxWzE2KjEwXSA9IHJjICsgcmE7CiAgb3V0MVsxNioxNF0gPSByOCArIHJjOwogIG91dDJbMTYq IDJdID0gcjkgKyByZDsKICBvdXQyWzE2KiA2XSA9IHJkICsgcmI7CiAgb3V0MlsxNioxMF0gPSBy YiArIHJmOwogIG91dDJbMTYqMTRdID0gcmY7Cgp7IG1wYV9kNjQgeDEseDIsY2Y7IHgxID0gKiht cGFfZDY0KikodG1wKzcpOyB4MiA9ICoobXBhX2Q2NCopKHRtcCswKTsgY2YgPSAqKG1wYV9kNjQq KShtcGFfdF9zZWN0YWIuZis4ICk7IHIwID0gKChtcGFfZjMyKikmeDEpWzBdICsgKChtcGFfZjMy KikmeDIpWzFdOyByMSA9ICgobXBhX2YzMiopJngxKVsxXSArICgobXBhX2YzMiopJngyKVswXTsg cmUgPSAoKG1wYV9mMzIqKSZ4MilbMF0gLSAoKG1wYV9mMzIqKSZ4MSlbMV07IHJmID0gKChtcGFf ZjMyKikmeDIpWzFdIC0gKChtcGFfZjMyKikmeDEpWzBdOyByZSAqPSAoKG1wYV9mMzIqKSZjZilb MV07IHJmICo9ICgobXBhX2YzMiopJmNmKVswXTsgfQp7IG1wYV9kNjQgeDEseDIsY2Y7IHgxID0g KihtcGFfZDY0KikodG1wKzQpOyB4MiA9ICoobXBhX2Q2NCopKHRtcCszKTsgY2YgPSAqKG1wYV9k NjQqKShtcGFfdF9zZWN0YWIuZisxNCApOyByNiA9ICgobXBhX2YzMiopJngxKVswXSArICgobXBh X2YzMiopJngyKVsxXTsgcjcgPSAoKG1wYV9mMzIqKSZ4MSlbMV0gKyAoKG1wYV9mMzIqKSZ4Milb MF07IHI4ID0gKChtcGFfZjMyKikmeDIpWzBdIC0gKChtcGFfZjMyKikmeDEpWzFdOyByOSA9ICgo bXBhX2YzMiopJngyKVsxXSAtICgobXBhX2YzMiopJngxKVswXTsgcjggKj0gKChtcGFfZjMyKikm Y2YpWzFdOyByOSAqPSAoKG1wYV9mMzIqKSZjZilbMF07IH0KeyBtcGFfZDY0IGNmOyBtcGFfZjMy IHQwLHQxOyBjZiA9ICoobXBhX2Q2NCopKG1wYV90X3NlY3RhYi5mKzQgKTsgdDAgPSByMCAtIHI3 OyB0MSA9IHIxIC0gcjY7IHIwICs9IHI3OyByNyA9IHQwICogKChtcGFfZjMyKikmY2YpWzBdOyBy MSArPSByNjsgcjYgPSB0MSAqICgobXBhX2YzMiopJmNmKVsxXTsgfQoKeyBtcGFfZDY0IHgxLHgy LGNmOyB4MSA9ICoobXBhX2Q2NCopKHRtcCs2KTsgeDIgPSAqKG1wYV9kNjQqKSh0bXArMSk7IGNm ID0gKihtcGFfZDY0KikobXBhX3Rfc2VjdGFiLmYrMTAgKTsgcjIgPSAoKG1wYV9mMzIqKSZ4MSlb MF0gKyAoKG1wYV9mMzIqKSZ4MilbMV07IHIzID0gKChtcGFfZjMyKikmeDEpWzFdICsgKChtcGFf ZjMyKikmeDIpWzBdOyByYyA9ICgobXBhX2YzMiopJngyKVswXSAtICgobXBhX2YzMiopJngxKVsx XTsgcmQgPSAoKG1wYV9mMzIqKSZ4MilbMV0gLSAoKG1wYV9mMzIqKSZ4MSlbMF07IHJjICo9ICgo bXBhX2YzMiopJmNmKVsxXTsgcmQgKj0gKChtcGFfZjMyKikmY2YpWzBdOyB9CnsgbXBhX2Q2NCB4 MSx4MixjZjsgeDEgPSAqKG1wYV9kNjQqKSh0bXArNSk7IHgyID0gKihtcGFfZDY0KikodG1wKzIp OyBjZiA9ICoobXBhX2Q2NCopKG1wYV90X3NlY3RhYi5mKzEyICk7IHI0ID0gKChtcGFfZjMyKikm eDEpWzBdICsgKChtcGFfZjMyKikmeDIpWzFdOyByNSA9ICgobXBhX2YzMiopJngxKVsxXSArICgo bXBhX2YzMiopJngyKVswXTsgcmEgPSAoKG1wYV9mMzIqKSZ4MilbMF0gLSAoKG1wYV9mMzIqKSZ4 MSlbMV07IHJiID0gKChtcGFfZjMyKikmeDIpWzFdIC0gKChtcGFfZjMyKikmeDEpWzBdOyByYSAq PSAoKG1wYV9mMzIqKSZjZilbMV07IHJiICo9ICgobXBhX2YzMiopJmNmKVswXTsgfQp7IG1wYV9k NjQgY2Y7IG1wYV9mMzIgdDAsdDE7IGNmID0gKihtcGFfZDY0KikobXBhX3Rfc2VjdGFiLmYrNiAp OyB0MCA9IHIyIC0gcjU7IHQxID0gcjMgLSByNDsgcjIgKz0gcjU7IHI1ID0gdDAgKiAoKG1wYV9m MzIqKSZjZilbMF07IHIzICs9IHI0OyByNCA9IHQxICogKChtcGFfZjMyKikmY2YpWzFdOyB9Cgp7 IG1wYV9kNjQgY2Y7IG1wYV9mMzIgdDAsdDE7IGNmID0gKihtcGFfZDY0KikobXBhX3Rfc2VjdGFi LmYrMiApOyB0MCA9IHIwIC0gcjM7IHQxID0gcjEgLSByMjsgcjAgKz0gcjM7IHIzID0gdDAgKiAo KG1wYV9mMzIqKSZjZilbMF07IHIxICs9IHIyOyByMiA9IHQxICogKChtcGFfZjMyKikmY2YpWzFd OyB9CnsgbXBhX2YzMiB0MCx0MTsgdDAgPSByMCAtIHIxOyB0MSA9IHIzIC0gcjI7IHIwICs9IHIx OyByMSA9IHQwICogbXBhX3Rfc2VjdGFiLmZbIDFdOyByMiArPSByMzsgcjMgPSB0MSAqIG1wYV90 X3NlY3RhYi5mWyAxXTsgcjIgKz0gcjM7IH0KeyBtcGFfZDY0IGNmOyBtcGFfZjMyIHQwLHQxOyBj ZiA9ICoobXBhX2Q2NCopKG1wYV90X3NlY3RhYi5mKzIgKTsgdDAgPSByNyAtIHI0OyB0MSA9IHI2 IC0gcjU7IHI0ICs9IHI3OyByNyA9IHQwICogKChtcGFfZjMyKikmY2YpWzBdOyByNSArPSByNjsg cjYgPSB0MSAqICgobXBhX2YzMiopJmNmKVsxXTsgfQp7IG1wYV9mMzIgdDAsdDE7IHQwID0gcjQg LSByNTsgdDEgPSByNyAtIHI2OyByNCArPSByNTsgcjUgPSB0MCAqIG1wYV90X3NlY3RhYi5mWyAx XTsgcjYgKz0gcjc7IHI3ID0gdDEgKiBtcGFfdF9zZWN0YWIuZlsgMV07IHI2ICs9IHI3OyByNCAr PSByNjsgcjYgKz0gcjU7IHI1ICs9IHI3OyB9Cgp7IG1wYV9kNjQgY2Y7IG1wYV9mMzIgdDAsdDE7 IGNmID0gKihtcGFfZDY0KikobXBhX3Rfc2VjdGFiLmYrNCApOyB0MCA9IHJmIC0gcjg7IHQxID0g cmUgLSByOTsgcjggKz0gcmY7IHJmID0gdDAgKiAoKG1wYV9mMzIqKSZjZilbMF07IHI5ICs9IHJl OyByZSA9IHQxICogKChtcGFfZjMyKikmY2YpWzFdOyB9CnsgbXBhX2Q2NCBjZjsgbXBhX2YzMiB0 MCx0MTsgY2YgPSAqKG1wYV9kNjQqKShtcGFfdF9zZWN0YWIuZis2ICk7IHQwID0gcmQgLSByYTsg dDEgPSByYyAtIHJiOyByYSArPSByZDsgcmQgPSB0MCAqICgobXBhX2YzMiopJmNmKVswXTsgcmIg Kz0gcmM7IHJjID0gdDEgKiAoKG1wYV9mMzIqKSZjZilbMV07IH0KeyBtcGFfZDY0IGNmOyBtcGFf ZjMyIHQwLHQxOyBjZiA9ICoobXBhX2Q2NCopKG1wYV90X3NlY3RhYi5mKzIgKTsgdDAgPSByOCAt IHJiOyB0MSA9IHI5IC0gcmE7IHI4ICs9IHJiOyByYiA9IHQwICogKChtcGFfZjMyKikmY2YpWzBd OyByOSArPSByYTsgcmEgPSB0MSAqICgobXBhX2YzMiopJmNmKVsxXTsgfQp7IG1wYV9mMzIgdDAs dDE7IHQwID0gcjggLSByOTsgdDEgPSByYiAtIHJhOyByOCArPSByOTsgcjkgPSB0MCAqIG1wYV90 X3NlY3RhYi5mWyAxXTsgcmEgKz0gcmI7IHJiID0gdDEgKiBtcGFfdF9zZWN0YWIuZlsgMV07IHJh ICs9IHJiOyB9CnsgbXBhX2Q2NCBjZjsgbXBhX2YzMiB0MCx0MTsgY2YgPSAqKG1wYV9kNjQqKSht cGFfdF9zZWN0YWIuZisyICk7IHQwID0gcmYgLSByYzsgdDEgPSByZSAtIHJkOyByYyArPSByZjsg cmYgPSB0MCAqICgobXBhX2YzMiopJmNmKVswXTsgcmQgKz0gcmU7IHJlID0gdDEgKiAoKG1wYV9m MzIqKSZjZilbMV07IH0KeyBtcGFfZjMyIHQwLHQxOyB0MCA9IHJjIC0gcmQ7IHQxID0gcmYgLSBy ZTsgcmMgKz0gcmQ7IHJkID0gdDAgKiBtcGFfdF9zZWN0YWIuZlsgMV07IHJlICs9IHJmOyByZiA9 IHQxICogbXBhX3Rfc2VjdGFiLmZbIDFdOyByZSArPSByZjsgcmMgKz0gcmU7IHJlICs9IHJkOyBy ZCArPSByZjsgfQoKICBvdXQxWzE2KiAxXSA9IHIxICsgcmUgKyByOTsKICBvdXQxWzE2KiAzXSA9 IHI2ICsgcmUgKyByOTsKICBvdXQxWzE2KiA1XSA9IHI2ICsgcmEgKyByZTsKICBvdXQxWzE2KiA3 XSA9IHIyICsgcmEgKyByZTsKICBvdXQxWzE2KiA5XSA9IHIyICsgcmMgKyByYTsKICBvdXQxWzE2 KjExXSA9IHI0ICsgcmMgKyByYTsKICBvdXQxWzE2KjEzXSA9IHI0ICsgcjggKyByYzsKICBvdXQx WzE2KjE1XSA9IHIwICsgcjggKyByYzsKICBvdXQyWzE2KiAxXSA9IHIxICsgcjkgKyByZDsKICBv dXQyWzE2KiAzXSA9IHI1ICsgcjkgKyByZDsKICBvdXQyWzE2KiA1XSA9IHI1ICsgcmQgKyByYjsK ICBvdXQyWzE2KiA3XSA9IHIzICsgcmQgKyByYjsKICBvdXQyWzE2KiA5XSA9IHIzICsgcmIgKyBy ZjsKICBvdXQyWzE2KjExXSA9IHI3ICsgcmIgKyByZjsKICBvdXQyWzE2KjEzXSA9IHI3ICsgcmY7 CiAgb3V0MlsxNioxNV0gPSByZjsKfQoKc3RhdGljIHZvaWQgaW1kY3QobXBhX2YzMiAqZm91dCwg bXBhX2YzMiAqaW4sIG1wYV9mMzIgKmZwcnYsIG1wYV9pbnQgdHlwZSkKewogIGlmICh0eXBlIT0y KSB7CiAgICB1bmlvbiBmZCB7bXBhX2Q2NCBkOyBtcGFfZjMyIGZbMl07fSB0bXBbOV0sICpvdXQs ICpwcnYsIHAscDEscDIsIHQxLHQyLCB3OwogICAgb3V0ID0gKHVuaW9uIGZkKikgZm91dDsKICAg IHBydiA9ICh1bmlvbiBmZCopIGZwcnY7CgogICAgZmRjdDE4KHRtcFswXS5mLCBpbik7CgogICAg aWYgKHR5cGUhPTMpIHsKICAgICAgdDEuZCA9IHRtcFs0XS5kOwogICAgICB0Mi5kID0gdG1wWzVd LmQ7CiAgICAgIHcuZCA9IG1wYV90X3dpbmxxbC5kWzBdOyBwMS5kID0gcHJ2WzBdLmQ7IHAyLmQg PSBwcnZbOC0wXS5kOyBwMS5mWzBdIC09IHQxLmZbMV07IHAxLmZbMV0gLT0gdDIuZlswXTsgcDIu ZlswXSArPSB0Mi5mWzBdICogdy5mWzFdOyBwMi5mWzFdICs9IHQxLmZbMV0gKiB3LmZbMF07IG91 dFswXS5kID0gcDEuZDsgb3V0WzgtMF0uZCA9IHAyLmQ7CiAgICAgIHQxLmQgPSB0bXBbNl0uZDsK ICAgICAgdy5kID0gbXBhX3Rfd2lubHFsLmRbMV07IHAxLmQgPSBwcnZbMV0uZDsgcDIuZCA9IHBy dls4LTFdLmQ7IHAxLmZbMF0gLT0gdDIuZlsxXTsgcDEuZlsxXSAtPSB0MS5mWzBdOyBwMi5mWzBd ICs9IHQxLmZbMF0gKiB3LmZbMV07IHAyLmZbMV0gKz0gdDIuZlsxXSAqIHcuZlswXTsgb3V0WzFd LmQgPSBwMS5kOyBvdXRbOC0xXS5kID0gcDIuZDsKICAgICAgdDIuZCA9IHRtcFs3XS5kOwogICAg ICB3LmQgPSBtcGFfdF93aW5scWwuZFsyXTsgcDEuZCA9IHBydlsyXS5kOyBwMi5kID0gcHJ2Wzgt Ml0uZDsgcDEuZlswXSAtPSB0MS5mWzFdOyBwMS5mWzFdIC09IHQyLmZbMF07IHAyLmZbMF0gKz0g dDIuZlswXSAqIHcuZlsxXTsgcDIuZlsxXSArPSB0MS5mWzFdICogdy5mWzBdOyBvdXRbMl0uZCA9 IHAxLmQ7IG91dFs4LTJdLmQgPSBwMi5kOwogICAgICB0MS5kID0gdG1wWzhdLmQ7CiAgICAgIHcu ZCA9IG1wYV90X3dpbmxxbC5kWzNdOyBwMS5kID0gcHJ2WzNdLmQ7IHAyLmQgPSBwcnZbOC0zXS5k OyBwMS5mWzBdIC09IHQyLmZbMV07IHAxLmZbMV0gLT0gdDEuZlswXTsgcDIuZlswXSArPSB0MS5m WzBdICogdy5mWzFdOyBwMi5mWzFdICs9IHQyLmZbMV0gKiB3LmZbMF07IG91dFszXS5kID0gcDEu ZDsgb3V0WzgtM10uZCA9IHAyLmQ7CiAgICAgIHAxLmQgPSBwcnZbNF0uZDsgcDEuZlswXSAtPSB0 MS5mWzFdOyBwMS5mWzFdICs9IHQxLmZbMV0gKiBtcGFfdF93aW5scWwuZls0KjJdOyBvdXRbNF0u ZCA9IHAxLmQ7CiAgICB9CiAgICBlbHNlIHsKICAgICAgb3V0WzBdLmQgPSBwcnZbMF0uZDsKICAg ICAgb3V0WzFdLmQgPSBwcnZbMV0uZDsKICAgICAgb3V0WzJdLmQgPSBwcnZbMl0uZDsKICAgICAg dDEuZCA9IHRtcFs3XS5kOwogICAgICB0Mi5kID0gdG1wWzhdLmQ7CiAgICAgIHcuZCA9IG1wYV90 X3dpbnNxbC5kWzgtM107IHAxLmQgPSBwcnZbM10uZDsgcDEuZlswXSAtPSB0MS5mWzFdICogdy5m WzFdOyBwMS5mWzFdIC09IHQyLmZbMF0gKiB3LmZbMF07IG91dFszXS5kID0gcDEuZDsKICAgICAg dy5kID0gbXBhX3Rfd2luc3FsLmRbOC00XTsgcDEuZCA9IHBydls0XS5kOyBwMS5mWzBdIC09IHQy LmZbMV0gKiB3LmZbMV07IHAxLmZbMV0gKz0gdDIuZlsxXSAqIHcuZlswXTsgb3V0WzRdLmQgPSBw MS5kOwogICAgICB3LmQgPSBtcGFfdF93aW5zcWwuZFs4LTVdOyBwMS5kID0gcHJ2WzVdLmQ7IHAx LmZbMF0gKz0gdDIuZlswXSAqIHcuZlsxXTsgcDEuZlsxXSArPSB0MS5mWzFdICogdy5mWzBdOyBv dXRbNV0uZCA9IHAxLmQ7CiAgICAgIHQyLmQgPSB0bXBbNl0uZDsKICAgICAgdy5kID0gbXBhX3Rf d2luc3FsLmRbOC02XTsgcDEuZCA9IHBydls2XS5kOyBwMS5mWzBdICs9IHQxLmZbMF0gKiB3LmZb MV07IHAxLmZbMV0gKz0gdDIuZlsxXSAqIHcuZlswXTsgb3V0WzZdLmQgPSBwMS5kOwogICAgICB0 MS5kID0gdG1wWzVdLmQ7CiAgICAgIHcuZCA9IG1wYV90X3dpbnNxbC5kWzgtN107IHAxLmQgPSBw cnZbN10uZDsgcDEuZlswXSArPSB0Mi5mWzBdICogdy5mWzFdOyBwMS5mWzFdICs9IHQxLmZbMV0g KiB3LmZbMF07IG91dFs3XS5kID0gcDEuZDsKICAgICAgdDIuZCA9IHRtcFs0XS5kOwogICAgICB3 LmQgPSBtcGFfdF93aW5zcWwuZFs4LThdOyBwMS5kID0gcHJ2WzhdLmQ7IHAxLmZbMF0gKz0gdDEu ZlswXSAqIHcuZlsxXTsgcDEuZlsxXSArPSB0Mi5mWzFdICogdy5mWzBdOyBvdXRbOF0uZCA9IHAx LmQ7CgogICAgfQogICAgaWYgKHR5cGUhPTEpIHsKICAgICAgdDEuZlswXSA9IHRtcFs0XS5mWzBd OwogICAgICB0Mi5kID0gdG1wWzNdLmQ7CiAgICAgIHcuZCA9IG1wYV90X3dpbmxxbC5kWzBdOyB3 LmZbMF0gKj0gdDEuZlswXTsgdy5mWzFdICo9IHQyLmZbMV07IHQxLmZbMV0gPSB0MS5mWzBdOyB0 MS5mWzBdID0gdDIuZlsxXTsgcHJ2WzBdLmQgPSB3LmQ7IHBydls4LTBdLmQgPSB0MS5kOwogICAg ICB0MS5kID0gdG1wWzJdLmQ7CiAgICAgIHcuZCA9IG1wYV90X3dpbmxxbC5kWzFdOyB3LmZbMF0g Kj0gdDIuZlswXTsgdy5mWzFdICo9IHQxLmZbMV07IHQyLmZbMV0gPSB0Mi5mWzBdOyB0Mi5mWzBd ID0gdDEuZlsxXTsgcHJ2WzFdLmQgPSB3LmQ7IHBydls4LTFdLmQgPSB0Mi5kOwogICAgICB0Mi5k ID0gdG1wWzFdLmQ7CiAgICAgIHcuZCA9IG1wYV90X3dpbmxxbC5kWzJdOyB3LmZbMF0gKj0gdDEu ZlswXTsgdy5mWzFdICo9IHQyLmZbMV07IHQxLmZbMV0gPSB0MS5mWzBdOyB0MS5mWzBdID0gdDIu ZlsxXTsgcHJ2WzJdLmQgPSB3LmQ7IHBydls4LTJdLmQgPSB0MS5kOwogICAgICB0MS5kID0gdG1w WzBdLmQ7CiAgICAgIHcuZCA9IG1wYV90X3dpbmxxbC5kWzNdOyB3LmZbMF0gKj0gdDIuZlswXTsg dy5mWzFdICo9IHQxLmZbMV07IHQyLmZbMV0gPSB0Mi5mWzBdOyB0Mi5mWzBdID0gdDEuZlsxXTsg cHJ2WzNdLmQgPSB3LmQ7IHBydls4LTNdLmQgPSB0Mi5kOwoKICAgICAgdy5mWzBdID0gbXBhX3Rf d2lubHFsLmZbOF07CiAgICAgIHcuZlswXSAqPSB0MS5mWzBdOwogICAgICB3LmZbMV0gPSB0MS5m WzBdOwogICAgICBwcnZbNF0uZCA9IHcuZDsKCiAgICB9CiAgICBlbHNlIHsKCiAgICAgIHQxLmQg PSB0bXBbNF0uZDsKICAgICAgdDIuZCA9IHRtcFszXS5kOwogICAgICB3LmQgPSBtcGFfdF93aW5z cWwuZFswXTsgdy5mWzBdICo9IHQxLmZbMF07IHcuZlsxXSAqPSB0Mi5mWzFdOyBwcnZbMF0uZCA9 IHcuZDsKICAgICAgdDEuZCA9IHRtcFsyXS5kOwogICAgICB3LmQgPSBtcGFfdF93aW5zcWwuZFsx XTsgdy5mWzBdICo9IHQyLmZbMF07IHcuZlsxXSAqPSB0MS5mWzFdOyBwcnZbMV0uZCA9IHcuZDsK ICAgICAgdDIuZCA9IHRtcFsxXS5kOwogICAgICB3LmQgPSBtcGFfdF93aW5zcWwuZFsyXTsgdy5m WzBdICo9IHQxLmZbMF07IHcuZlsxXSAqPSB0Mi5mWzFdOyBwcnZbMl0uZCA9IHcuZDsKICAgICAg dDEuZCA9IHRtcFswXS5kOwogICAgICB3LmQgPSBtcGFfdF93aW5zcWwuZFszXTsgdy5mWzBdICo9 IHQyLmZbMF07IHcuZlsxXSAqPSB0MS5mWzFdOyBwcnZbM10uZCA9IHcuZDsKCiAgICAgIHcuZCA9 IG1wYV90X3dpbnNxbC5kWzRdOyB3LmZbMF0gKj0gdDEuZlswXTsgdy5mWzFdICo9IHQxLmZbMF07 IHBydls0XS5kID0gdy5kOwogICAgICB3LmQgPSBtcGFfdF93aW5zcWwuZFs1XTsgdy5mWzBdICo9 IHQxLmZbMV07IHcuZlsxXSAqPSB0Mi5mWzBdOyBwcnZbNV0uZCA9IHcuZDsKCiAgICAgIHBydls2 XS5kID0gcHJ2WzddLmQgPSBwcnZbOF0uZCA9IDAuMDsKICAgIH0KICB9CiAgZWxzZSB7CiAgICB1 bmlvbiB7bXBhX2Q2NCBkWzNdOyBtcGFfZjMyIGZbNl07fSB0bXBbM107CiAgICB1bmlvbiBmZCB7 bXBhX2Q2NCBkOyBtcGFfZjMyIGZbMl07fSAqb3V0LCAqcHJ2LCB3czsKICAgIHVuaW9uIGZkIHQw MCx0MDEsdDAyLCB0MTAsdDExLHQxMiwgdDIwLHQyMSx0MjI7CiAgICB1bmlvbiBmZCBwMyxwNCxw NSxwNixwNyxwODsKICAgIG1wYV9mMzIgd3MyOwoKICAgIG91dCA9ICh1bmlvbiBmZCopIGZvdXQ7 CiAgICBwcnYgPSAodW5pb24gZmQqKSBmcHJ2OwoKICAgIGZkY3Q2KHRtcFswXS5mLCBpbiswKTsK ICAgIGZkY3Q2KHRtcFsxXS5mLCBpbisxKTsKICAgIGZkY3Q2KHRtcFsyXS5mLCBpbisyKTsKCiAg ICB3cy5kID0gbXBhX3Rfd2luc3FzLmRbMF07CiAgICB3czIgPSBtcGFfdF93aW5zcXMuZlsyXTsK CiAgICB0MDAuZCA9IHRtcFswXS5kWzBdOyB0MDEuZCA9IHRtcFswXS5kWzFdOyB0MDIuZCA9IHRt cFswXS5kWzJdOwogICAgdDEwLmQgPSB0bXBbMV0uZFswXTsgdDExLmQgPSB0bXBbMV0uZFsxXTsg dDEyLmQgPSB0bXBbMV0uZFsyXTsKICAgIHQyMC5kID0gdG1wWzJdLmRbMF07IHQyMS5kID0gdG1w WzJdLmRbMV07IHQyMi5kID0gdG1wWzJdLmRbMl07CgogICAgcDMuZCA9IHBydlszXS5kOyBwNC5k ID0gcHJ2WzRdLmQ7IHA1LmQgPSBwcnZbNV0uZDsKICAgIHA2LmQgPSBwcnZbNl0uZDsgcDcuZCA9 IHBydls3XS5kOyBwOC5kID0gcHJ2WzhdLmQ7CgogICAgb3V0WzBdLmQgPSBwcnZbMF0uZDsKICAg IG91dFsxXS5kID0gcHJ2WzFdLmQ7CiAgICBvdXRbMl0uZCA9IHBydlsyXS5kOwoKICAgIHAzLmZb MF0gLT0gdDAxLmZbMV07CiAgICBwMy5mWzFdIC09IHQwMi5mWzBdOwogICAgb3V0WzNdLmQgPSBw My5kOwogICAgcDQuZlswXSAtPSB0MDIuZlsxXTsKICAgIHA0LmZbMV0gKz0gdDAyLmZbMV0gKiB3 czI7CiAgICBvdXRbNF0uZCA9IHA0LmQ7CiAgICBwNS5mWzBdICs9IHQwMi5mWzBdICogd3MuZlsx XTsKICAgIHA1LmZbMV0gKz0gdDAxLmZbMV0gKiB3cy5mWzBdOwogICAgb3V0WzVdLmQgPSBwNS5k OwogICAgcDYuZlswXSArPSB0MDEuZlswXSAqIHdzLmZbMF0gLSB0MTEuZlsxXTsKICAgIHA2LmZb MV0gKz0gdDAwLmZbMV0gKiB3cy5mWzFdIC0gdDEyLmZbMF07CiAgICBvdXRbNl0uZCA9IHA2LmQ7 CiAgICBwNy5mWzBdICs9IHQwMC5mWzBdICogd3MyIC0gdDEyLmZbMV07CiAgICBwNy5mWzFdICs9 IHQwMC5mWzBdICsgdDEyLmZbMV0gKiB3czI7CiAgICBvdXRbN10uZCA9IHA3LmQ7CiAgICBwOC5m WzBdICs9IHQwMC5mWzFdICsgdDEyLmZbMF0gKiB3cy5mWzFdOwogICAgcDguZlsxXSArPSB0MDEu ZlswXSArIHQxMS5mWzFdICogd3MuZlswXTsKICAgIG91dFs4XS5kID0gcDguZDsKCiAgICBwMy5m WzBdID0gdDExLmZbMF0gKiB3cy5mWzBdIC0gdDIxLmZbMV07CiAgICBwMy5mWzFdID0gdDEwLmZb MV0gKiB3cy5mWzFdIC0gdDIyLmZbMF07CiAgICBwcnZbMF0uZCA9IHAzLmQ7CiAgICBwNC5mWzBd ID0gdDEwLmZbMF0gKiB3czIgLSB0MjIuZlsxXTsKICAgIHA0LmZbMV0gPSB0MTAuZlswXSArIHQy Mi5mWzFdICogd3MyOwogICAgcHJ2WzFdLmQgPSBwNC5kOwogICAgcDUuZlswXSA9IHQxMC5mWzFd ICsgdDIyLmZbMF0gKiB3cy5mWzFdOwogICAgcDUuZlsxXSA9IHQxMS5mWzBdICsgdDIxLmZbMV0g KiB3cy5mWzBdOwogICAgcHJ2WzJdLmQgPSBwNS5kOwogICAgcDYuZlswXSA9IHQyMS5mWzBdICog d3MuZlswXTsKICAgIHA2LmZbMV0gPSB0MjAuZlsxXSAqIHdzLmZbMV07CiAgICBwcnZbM10uZCA9 IHA2LmQ7CiAgICBwNy5mWzBdID0gdDIwLmZbMF0gKiB3czI7CiAgICBwNy5mWzFdID0gdDIwLmZb MF07CiAgICBwcnZbNF0uZCA9IHA3LmQ7CiAgICBwOC5mWzBdID0gdDIwLmZbMV07CiAgICBwOC5m WzFdID0gdDIxLmZbMF07CiAgICBwcnZbNV0uZCA9IHA4LmQ7CgogICAgcHJ2WzZdLmQgPSBwcnZb N10uZCA9IHBydls4XS5kID0gMC4wOwogIH0KfQo=