From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25878 invoked by alias); 22 Dec 2002 08:16:03 -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 25853 invoked by uid 71); 22 Dec 2002 08:16:02 -0000 Resent-Date: 22 Dec 2002 08:16:02 -0000 Resent-Message-ID: <20021222081602.25852.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, drepper@redhat.com Received: (qmail 25611 invoked by uid 61); 22 Dec 2002 08:14:16 -0000 Message-Id: <20021222081416.25610.qmail@sources.redhat.com> Date: Sun, 22 Dec 2002 00:16:00 -0000 From: drepper@redhat.com Reply-To: drepper@redhat.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: bootstrap/9036: 2002-12-21 trunk version fails to bootstrap for Pentium4 X-SW-Source: 2002-12/txt/msg01218.txt.bz2 List-Id: >Number: 9036 >Category: bootstrap >Synopsis: 2002-12-21 trunk version fails to bootstrap for Pentium4 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sun Dec 22 00:16:01 PST 2002 >Closed-Date: >Last-Modified: >Originator: Ulrich Drepper >Release: 3.4 20021221 >Organization: >Environment: Linux/x86 >Description: During bootstrap with CFLAGS="-O2 -g -march=pentium4" compilation fails for libf2c. See the enclosed preprocessed sources. Compile with .../xgcc -B/work/gcc-build/20021221/gcc/ -O2 cabs.i -c -fPIC to see /home/drepper/gnu/gcc/libf2c/libF77/cabs.c: In function `f__cabs': /home/drepper/gnu/gcc/libf2c/libF77/cabs.c:24: error: unrecognizable insn: (insn:HI 18 94 19 1 0x400edc8c (set (reg:V2DF 63) (mem/u/f:V2DF (symbol_ref/u:SI ("*.LC1")) [2 S16 A128])) -1 (nil) (expr_list:REG_EQUAL (const_vector:V2DF [ (const_double:DF 0 [0x0] -0.0 [-0x0.0p+0]) (const_double:DF 0 [0x0] 0.0 [0x0.0p+0]) ]) (nil))) >How-To-Repeat: .../configure make CFLAGS="-O2 -g -march=pentium4" bootstrap >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="cabs.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="cabs.i" ZXh0ZXJuIGRvdWJsZSBhY29zIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19hY29zIChk b3VibGUgX194KSA7CmV4dGVybiBkb3VibGUgYXNpbiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91 YmxlIF9fYXNpbiAoZG91YmxlIF9feCkgOwpleHRlcm4gZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gp IDsgZXh0ZXJuIGRvdWJsZSBfX2F0YW4gKGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGRvdWJsZSBhdGFu MiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYXRhbjIgKGRvdWJs ZSBfX3ksIGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGRvdWJsZSBjb3MgKGRvdWJsZSBfX3gpIDsgZXh0 ZXJuIGRvdWJsZSBfX2NvcyAoZG91YmxlIF9feCkgOwpleHRlcm4gZG91YmxlIHNpbiAoZG91Ymxl IF9feCkgOyBleHRlcm4gZG91YmxlIF9fc2luIChkb3VibGUgX194KSA7CmV4dGVybiBkb3VibGUg dGFuIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX190YW4gKGRvdWJsZSBfX3gpIDsKZXh0 ZXJuIGRvdWJsZSBjb3NoIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19jb3NoIChkb3Vi bGUgX194KSA7CmV4dGVybiBkb3VibGUgc2luaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91Ymxl IF9fc2luaCAoZG91YmxlIF9feCkgOwpleHRlcm4gZG91YmxlIHRhbmggKGRvdWJsZSBfX3gpIDsg ZXh0ZXJuIGRvdWJsZSBfX3RhbmggKGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGRvdWJsZSBhY29zaCAo ZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYWNvc2ggKGRvdWJsZSBfX3gpIDsKZXh0ZXJu IGRvdWJsZSBhc2luaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYXNpbmggKGRvdWJs ZSBfX3gpIDsKZXh0ZXJuIGRvdWJsZSBhdGFuaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91Ymxl IF9fYXRhbmggKGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGRvdWJsZSBleHAgKGRvdWJsZSBfX3gpIDsg ZXh0ZXJuIGRvdWJsZSBfX2V4cCAoZG91YmxlIF9feCkgOwpleHRlcm4gZG91YmxlIGZyZXhwIChk b3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpIDsgZXh0ZXJuIGRvdWJsZSBfX2ZyZXhwIChkb3Vi bGUgX194LCBpbnQgKl9fZXhwb25lbnQpIDsKZXh0ZXJuIGRvdWJsZSBsZGV4cCAoZG91YmxlIF9f eCwgaW50IF9fZXhwb25lbnQpIDsgZXh0ZXJuIGRvdWJsZSBfX2xkZXhwIChkb3VibGUgX194LCBp bnQgX19leHBvbmVudCkgOwpleHRlcm4gZG91YmxlIGxvZyAoZG91YmxlIF9feCkgOyBleHRlcm4g ZG91YmxlIF9fbG9nIChkb3VibGUgX194KSA7CmV4dGVybiBkb3VibGUgbG9nMTAgKGRvdWJsZSBf X3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2xvZzEwIChkb3VibGUgX194KSA7CmV4dGVybiBkb3VibGUg bW9kZiAoZG91YmxlIF9feCwgZG91YmxlICpfX2lwdHIpIDsgZXh0ZXJuIGRvdWJsZSBfX21vZGYg KGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRyKSA7CmV4dGVybiBkb3VibGUgZXhwbTEgKGRvdWJs ZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2V4cG0xIChkb3VibGUgX194KSA7CmV4dGVybiBkb3Vi bGUgbG9nMXAgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2xvZzFwIChkb3VibGUgX194 KSA7CmV4dGVybiBkb3VibGUgbG9nYiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fbG9n YiAoZG91YmxlIF9feCkgOwpleHRlcm4gZG91YmxlIHBvdyAoZG91YmxlIF9feCwgZG91YmxlIF9f eSkgOyBleHRlcm4gZG91YmxlIF9fcG93IChkb3VibGUgX194LCBkb3VibGUgX195KSA7CmV4dGVy biBkb3VibGUgc3FydCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fc3FydCAoZG91Ymxl IF9feCkgOwpleHRlcm4gZG91YmxlIGh5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4 dGVybiBkb3VibGUgX19oeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwpleHRlcm4gZG91 YmxlIGNicnQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2NicnQgKGRvdWJsZSBfX3gp IDsKZXh0ZXJuIGRvdWJsZSBjZWlsIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25z dF9fKSk7IGV4dGVybiBkb3VibGUgX19jZWlsIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgo X19jb25zdF9fKSk7CmV4dGVybiBkb3VibGUgZmFicyAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVf XyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fZmFicyAoZG91YmxlIF9feCkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gZG91YmxlIGZsb29yIChkb3VibGUgX194KSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19mbG9vciAoZG91Ymxl IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gZG91YmxlIGZtb2QgKGRv dWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBfX2Ztb2QgKGRvdWJsZSBfX3gs IGRvdWJsZSBfX3kpIDsKZXh0ZXJuIGludCBfX2lzaW5mIChkb3VibGUgX192YWx1ZSkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gaW50IF9fZmluaXRlIChkb3VibGUgX192YWx1 ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gaW50IGlzaW5mIChkb3VibGUg X192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gaW50IGZpbml0ZSAo ZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGRvdWJs ZSBkcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3VibGUgX19kcmVtIChk b3VibGUgX194LCBkb3VibGUgX195KSA7CmV4dGVybiBkb3VibGUgc2lnbmlmaWNhbmQgKGRvdWJs ZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3NpZ25pZmljYW5kIChkb3VibGUgX194KSA7CmV4dGVy biBkb3VibGUgY29weXNpZ24gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18g KChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2NvcHlzaWduIChkb3VibGUgX194LCBkb3Vi bGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBpbnQgX19pc25hbiAo ZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGludCBp c25hbiAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJu IGRvdWJsZSBqMCAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19qMCAoZG91YmxlKSA7CmV4dGVy biBkb3VibGUgajEgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fajEgKGRvdWJsZSkgOwpleHRl cm4gZG91YmxlIGpuIChpbnQsIGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fam4gKGludCwgZG91 YmxlKSA7CmV4dGVybiBkb3VibGUgeTAgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9feTAgKGRv dWJsZSkgOwpleHRlcm4gZG91YmxlIHkxIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX3kxIChk b3VibGUpIDsKZXh0ZXJuIGRvdWJsZSB5biAoaW50LCBkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBf X3luIChpbnQsIGRvdWJsZSkgOwpleHRlcm4gZG91YmxlIGVyZiAoZG91YmxlKSA7IGV4dGVybiBk b3VibGUgX19lcmYgKGRvdWJsZSkgOwpleHRlcm4gZG91YmxlIGVyZmMgKGRvdWJsZSkgOyBleHRl cm4gZG91YmxlIF9fZXJmYyAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUgbGdhbW1hIChkb3VibGUp IDsgZXh0ZXJuIGRvdWJsZSBfX2xnYW1tYSAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUgZ2FtbWEg KGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fZ2FtbWEgKGRvdWJsZSkgOwpleHRlcm4gZG91Ymxl IGxnYW1tYV9yIChkb3VibGUsIGludCAqX19zaWduZ2FtcCkgOyBleHRlcm4gZG91YmxlIF9fbGdh bW1hX3IgKGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSA7CmV4dGVybiBkb3VibGUgcmludCAoZG91 YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fcmludCAoZG91YmxlIF9feCkgOwpleHRlcm4gZG91 YmxlIG5leHRhZnRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9f Y29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fbmV4dGFmdGVyIChkb3VibGUgX194LCBkb3VibGUg X195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBkb3VibGUgcmVtYWluZGVy IChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3VibGUgX19yZW1haW5kZXIgKGRv dWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsKZXh0ZXJuIGRvdWJsZSBzY2FsYm4gKGRvdWJsZSBfX3gs IGludCBfX24pIDsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxibiAoZG91YmxlIF9feCwgaW50IF9fbikg OwpleHRlcm4gaW50IGlsb2diIChkb3VibGUgX194KSA7IGV4dGVybiBpbnQgX19pbG9nYiAoZG91 YmxlIF9feCkgOwpleHRlcm4gZmxvYXQgYWNvc2YgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQg X19hY29zZiAoZmxvYXQgX194KSA7CmV4dGVybiBmbG9hdCBhc2luZiAoZmxvYXQgX194KSA7IGV4 dGVybiBmbG9hdCBfX2FzaW5mIChmbG9hdCBfX3gpIDsKZXh0ZXJuIGZsb2F0IGF0YW5mIChmbG9h dCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXRhbmYgKGZsb2F0IF9feCkgOwpleHRlcm4gZmxvYXQg YXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19hdGFuMmYgKGZs b2F0IF9feSwgZmxvYXQgX194KSA7CmV4dGVybiBmbG9hdCBjb3NmIChmbG9hdCBfX3gpIDsgZXh0 ZXJuIGZsb2F0IF9fY29zZiAoZmxvYXQgX194KSA7CmV4dGVybiBmbG9hdCBzaW5mIChmbG9hdCBf X3gpIDsgZXh0ZXJuIGZsb2F0IF9fc2luZiAoZmxvYXQgX194KSA7CmV4dGVybiBmbG9hdCB0YW5m IChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fdGFuZiAoZmxvYXQgX194KSA7CmV4dGVybiBm bG9hdCBjb3NoZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2Nvc2hmIChmbG9hdCBfX3gp IDsKZXh0ZXJuIGZsb2F0IHNpbmhmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fc2luaGYg KGZsb2F0IF9feCkgOwpleHRlcm4gZmxvYXQgdGFuaGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxv YXQgX190YW5oZiAoZmxvYXQgX194KSA7CmV4dGVybiBmbG9hdCBhY29zaGYgKGZsb2F0IF9feCkg OyBleHRlcm4gZmxvYXQgX19hY29zaGYgKGZsb2F0IF9feCkgOwpleHRlcm4gZmxvYXQgYXNpbmhm IChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXNpbmhmIChmbG9hdCBfX3gpIDsKZXh0ZXJu IGZsb2F0IGF0YW5oZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2F0YW5oZiAoZmxvYXQg X194KSA7CmV4dGVybiBmbG9hdCBleHBmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fZXhw ZiAoZmxvYXQgX194KSA7CmV4dGVybiBmbG9hdCBmcmV4cGYgKGZsb2F0IF9feCwgaW50ICpfX2V4 cG9uZW50KSA7IGV4dGVybiBmbG9hdCBfX2ZyZXhwZiAoZmxvYXQgX194LCBpbnQgKl9fZXhwb25l bnQpIDsKZXh0ZXJuIGZsb2F0IGxkZXhwZiAoZmxvYXQgX194LCBpbnQgX19leHBvbmVudCkgOyBl eHRlcm4gZmxvYXQgX19sZGV4cGYgKGZsb2F0IF9feCwgaW50IF9fZXhwb25lbnQpIDsKZXh0ZXJu IGZsb2F0IGxvZ2YgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19sb2dmIChmbG9hdCBfX3gp IDsKZXh0ZXJuIGZsb2F0IGxvZzEwZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2xvZzEw ZiAoZmxvYXQgX194KSA7CmV4dGVybiBmbG9hdCBtb2RmZiAoZmxvYXQgX194LCBmbG9hdCAqX19p cHRyKSA7IGV4dGVybiBmbG9hdCBfX21vZGZmIChmbG9hdCBfX3gsIGZsb2F0ICpfX2lwdHIpIDsK ZXh0ZXJuIGZsb2F0IGV4cG0xZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2V4cG0xZiAo ZmxvYXQgX194KSA7CmV4dGVybiBmbG9hdCBsb2cxcGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxv YXQgX19sb2cxcGYgKGZsb2F0IF9feCkgOwpleHRlcm4gZmxvYXQgbG9nYmYgKGZsb2F0IF9feCkg OyBleHRlcm4gZmxvYXQgX19sb2diZiAoZmxvYXQgX194KSA7CmV4dGVybiBmbG9hdCBwb3dmIChm bG9hdCBfX3gsIGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19wb3dmIChmbG9hdCBfX3gsIGZs b2F0IF9feSkgOwpleHRlcm4gZmxvYXQgc3FydGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQg X19zcXJ0ZiAoZmxvYXQgX194KSA7CmV4dGVybiBmbG9hdCBoeXBvdGYgKGZsb2F0IF9feCwgZmxv YXQgX195KSA7IGV4dGVybiBmbG9hdCBfX2h5cG90ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsK ZXh0ZXJuIGZsb2F0IGNicnRmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fY2JydGYgKGZs b2F0IF9feCkgOwpleHRlcm4gZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19jZWlsZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0 ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBmbG9hdCBmYWJzZiAoZmxvYXQgX194KSBfX2F0dHJp YnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2ZhYnNmIChmbG9hdCBfX3gpIF9f YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGZsb2F0IGZsb29yZiAoZmxvYXQgX194 KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2Zsb29yZiAoZmxv YXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBmbG9hdCBmbW9kZiAo ZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9fZm1vZGYgKGZsb2F0IF9feCwg ZmxvYXQgX195KSA7CmV4dGVybiBpbnQgX19pc2luZmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmli dXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGludCBfX2Zpbml0ZWYgKGZsb2F0IF9fdmFsdWUp IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGludCBpc2luZmYgKGZsb2F0IF9f dmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGludCBmaW5pdGVmIChm bG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBmbG9hdCBk cmVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9fZHJlbWYgKGZsb2F0 IF9feCwgZmxvYXQgX195KSA7CmV4dGVybiBmbG9hdCBzaWduaWZpY2FuZGYgKGZsb2F0IF9feCkg OyBleHRlcm4gZmxvYXQgX19zaWduaWZpY2FuZGYgKGZsb2F0IF9feCkgOwpleHRlcm4gZmxvYXQg Y29weXNpZ25mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf XykpOyBleHRlcm4gZmxvYXQgX19jb3B5c2lnbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0 dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBpbnQgX19pc25hbmYgKGZsb2F0IF9fdmFs dWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGludCBpc25hbmYgKGZsb2F0 IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGZsb2F0IGowZiAo ZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fajBmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgajFmIChm bG9hdCkgOyBleHRlcm4gZmxvYXQgX19qMWYgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCBqbmYgKGlu dCwgZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fam5mIChpbnQsIGZsb2F0KSA7CmV4dGVybiBmbG9h dCB5MGYgKGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX3kwZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0 IHkxZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9feTFmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQg eW5mIChpbnQsIGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX3luZiAoaW50LCBmbG9hdCkgOwpleHRl cm4gZmxvYXQgZXJmZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fZXJmZiAoZmxvYXQpIDsKZXh0 ZXJuIGZsb2F0IGVyZmNmIChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19lcmZjZiAoZmxvYXQpIDsK ZXh0ZXJuIGZsb2F0IGxnYW1tYWYgKGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX2xnYW1tYWYgKGZs b2F0KSA7CmV4dGVybiBmbG9hdCBnYW1tYWYgKGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX2dhbW1h ZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IGxnYW1tYWZfciAoZmxvYXQsIGludCAqX19zaWduZ2Ft cCkgOyBleHRlcm4gZmxvYXQgX19sZ2FtbWFmX3IgKGZsb2F0LCBpbnQgKl9fc2lnbmdhbXApIDsK ZXh0ZXJuIGZsb2F0IHJpbnRmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fcmludGYgKGZs b2F0IF9feCkgOwpleHRlcm4gZmxvYXQgbmV4dGFmdGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kp IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fbmV4dGFmdGVyZiAo ZmxvYXQgX194LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJu IGZsb2F0IHJlbWFpbmRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7IGV4dGVybiBmbG9hdCBf X3JlbWFpbmRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7CmV4dGVybiBmbG9hdCBzY2FsYm5m IChmbG9hdCBfX3gsIGludCBfX24pIDsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJuZiAoZmxvYXQgX194 LCBpbnQgX19uKSA7CmV4dGVybiBpbnQgaWxvZ2JmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGludCBf X2lsb2diZiAoZmxvYXQgX194KSA7CmV4dGVybiBsb25nIGRvdWJsZSBhY29zbCAobG9uZyBkb3Vi bGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NsIChsb25nIGRvdWJsZSBfX3gpIDsK ZXh0ZXJuIGxvbmcgZG91YmxlIGFzaW5sIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcg ZG91YmxlIF9fYXNpbmwgKGxvbmcgZG91YmxlIF9feCkgOwpleHRlcm4gbG9uZyBkb3VibGUgYXRh bmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFubCAobG9uZyBk b3VibGUgX194KSA7CmV4dGVybiBsb25nIGRvdWJsZSBhdGFuMmwgKGxvbmcgZG91YmxlIF9feSwg bG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW4ybCAobG9uZyBkb3Vi bGUgX195LCBsb25nIGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIGNvc2wgKGxvbmcg ZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3NsIChsb25nIGRvdWJsZSBfX3gp IDsKZXh0ZXJuIGxvbmcgZG91YmxlIHNpbmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9u ZyBkb3VibGUgX19zaW5sIChsb25nIGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIHRh bmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX190YW5sIChsb25nIGRv dWJsZSBfX3gpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIGNvc2hsIChsb25nIGRvdWJsZSBfX3gpIDsg ZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29zaGwgKGxvbmcgZG91YmxlIF9feCkgOwpleHRlcm4gbG9u ZyBkb3VibGUgc2luaGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19z aW5obCAobG9uZyBkb3VibGUgX194KSA7CmV4dGVybiBsb25nIGRvdWJsZSB0YW5obCAobG9uZyBk b3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RhbmhsIChsb25nIGRvdWJsZSBfX3gp IDsKZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NobCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBs b25nIGRvdWJsZSBfX2Fjb3NobCAobG9uZyBkb3VibGUgX194KSA7CmV4dGVybiBsb25nIGRvdWJs ZSBhc2luaGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19hc2luaGwg KGxvbmcgZG91YmxlIF9feCkgOwpleHRlcm4gbG9uZyBkb3VibGUgYXRhbmhsIChsb25nIGRvdWJs ZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXRhbmhsIChsb25nIGRvdWJsZSBfX3gpIDsK ZXh0ZXJuIGxvbmcgZG91YmxlIGV4cGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBk b3VibGUgX19leHBsIChsb25nIGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIGZyZXhw bCAobG9uZyBkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpIDsgZXh0ZXJuIGxvbmcgZG91Ymxl IF9fZnJleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOwpleHRlcm4gbG9u ZyBkb3VibGUgbGRleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSA7IGV4dGVy biBsb25nIGRvdWJsZSBfX2xkZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkg OwpleHRlcm4gbG9uZyBkb3VibGUgbG9nbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25n IGRvdWJsZSBfX2xvZ2wgKGxvbmcgZG91YmxlIF9feCkgOwpleHRlcm4gbG9uZyBkb3VibGUgbG9n MTBsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nMTBsIChsb25n IGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIG1vZGZsIChsb25nIGRvdWJsZSBfX3gs IGxvbmcgZG91YmxlICpfX2lwdHIpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbW9kZmwgKGxvbmcg ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9faXB0cikgOwpleHRlcm4gbG9uZyBkb3VibGUgZXhw bTFsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwbTFsIChsb25n IGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzFwbCAobG9uZyBkb3VibGUgX194 KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzFwbCAobG9uZyBkb3VibGUgX194KSA7CmV4dGVy biBsb25nIGRvdWJsZSBsb2dibCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJs ZSBfX2xvZ2JsIChsb25nIGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIHBvd2wgKGxv bmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Bv d2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CmV4dGVybiBsb25nIGRvdWJs ZSBzcXJ0bCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NxcnRsIChs b25nIGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIGh5cG90bCAobG9uZyBkb3VibGUg X194LCBsb25nIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9faHlwb3RsIChsb25n IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOwpleHRlcm4gbG9uZyBkb3VibGUgY2JydGwg KGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19jYnJ0bCAobG9uZyBkb3Vi bGUgX194KSA7CmV4dGVybiBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194KSBfX2F0 dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NlaWxsIChsb25n IGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcgZG91 YmxlIGZhYnNsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsg ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVf XyAoKF9fY29uc3RfXykpOwpleHRlcm4gbG9uZyBkb3VibGUgZmxvb3JsIChsb25nIGRvdWJsZSBf X3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmxv b3JsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJu IGxvbmcgZG91YmxlIGZtb2RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOyBl eHRlcm4gbG9uZyBkb3VibGUgX19mbW9kbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBf X3kpIDsKZXh0ZXJuIGludCBfX2lzaW5mbCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1 dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gaW50IF9fZmluaXRlbCAobG9uZyBkb3VibGUgX192 YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gaW50IGlzaW5mbCAobG9u ZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gaW50 IGZpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p KTsKZXh0ZXJuIGxvbmcgZG91YmxlIGRyZW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91Ymxl IF9feSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19kcmVtbCAobG9uZyBkb3VibGUgX194LCBsb25n IGRvdWJsZSBfX3kpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIHNpZ25pZmljYW5kbCAobG9uZyBkb3Vi bGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NpZ25pZmljYW5kbCAobG9uZyBkb3VibGUg X194KSA7CmV4dGVybiBsb25nIGRvdWJsZSBjb3B5c2lnbmwgKGxvbmcgZG91YmxlIF9feCwgbG9u ZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRv dWJsZSBfX2NvcHlzaWdubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0 cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGludCBfX2lzbmFubCAobG9uZyBkb3VibGUg X192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gaW50IGlzbmFubCAo bG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4g bG9uZyBkb3VibGUgajBsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19qMGwg KGxvbmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSBqMWwgKGxvbmcgZG91YmxlKSA7IGV4 dGVybiBsb25nIGRvdWJsZSBfX2oxbCAobG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91Ymxl IGpubCAoaW50LCBsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19qbmwgKGludCwg bG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIHkwbCAobG9uZyBkb3VibGUpIDsgZXh0 ZXJuIGxvbmcgZG91YmxlIF9feTBsIChsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUg eTFsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX195MWwgKGxvbmcgZG91Ymxl KSA7CmV4dGVybiBsb25nIGRvdWJsZSB5bmwgKGludCwgbG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxv bmcgZG91YmxlIF9feW5sIChpbnQsIGxvbmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSBl cmZsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19lcmZsIChsb25nIGRvdWJs ZSkgOwpleHRlcm4gbG9uZyBkb3VibGUgZXJmY2wgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25n IGRvdWJsZSBfX2VyZmNsIChsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUgbGdhbW1h bCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGdhbW1hbCAobG9uZyBkb3Vi bGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIGdhbW1hbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxv bmcgZG91YmxlIF9fZ2FtbWFsIChsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUgbGdh bW1hbF9yIChsb25nIGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSA7IGV4dGVybiBsb25nIGRvdWJs ZSBfX2xnYW1tYWxfciAobG9uZyBkb3VibGUsIGludCAqX19zaWduZ2FtcCkgOwpleHRlcm4gbG9u ZyBkb3VibGUgcmludGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19y aW50bCAobG9uZyBkb3VibGUgX194KSA7CmV4dGVybiBsb25nIGRvdWJsZSBuZXh0YWZ0ZXJsIChs b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf XykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19uZXh0YWZ0ZXJsIChsb25nIGRvdWJsZSBfX3gsIGxv bmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbG9uZyBk b3VibGUgcmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsgZXh0 ZXJuIGxvbmcgZG91YmxlIF9fcmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs ZSBfX3kpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxibmwgKGxvbmcgZG91YmxlIF9feCwgaW50 IF9fbikgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYm5sIChsb25nIGRvdWJsZSBfX3gsIGlu dCBfX24pIDsKZXh0ZXJuIGludCBpbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gaW50 IF9faWxvZ2JsIChsb25nIGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGludCBzaWduZ2FtOwp0eXBlZGVm IGVudW0KewogIF9JRUVFXyA9IC0xLAogIF9TVklEXywKICBfWE9QRU5fLAogIF9QT1NJWF8sCiAg X0lTT0NfCn0gX0xJQl9WRVJTSU9OX1RZUEU7CmV4dGVybiBfTElCX1ZFUlNJT05fVFlQRSBfTElC X1ZFUlNJT047CnN0cnVjdCBleGNlcHRpb24KICB7CiAgICBpbnQgdHlwZTsKICAgIGNoYXIgKm5h bWU7CiAgICBkb3VibGUgYXJnMTsKICAgIGRvdWJsZSBhcmcyOwogICAgZG91YmxlIHJldHZhbDsK ICB9OwpleHRlcm4gaW50IG1hdGhlcnIgKHN0cnVjdCBleGNlcHRpb24gKl9fZXhjKTsKZXh0ZXJu IF9faW5saW5lIGRvdWJsZSBfX3NnbiAoZG91YmxlKSA7IGV4dGVybiBfX2lubGluZSBkb3VibGUg X19zZ24gKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9feCA9PSAwLjAgPyAwLjAgOiAoX194ID4gMC4w ID8gMS4wIDogLTEuMCk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IF9fc2duZiAoZmxvYXQpIDsg ZXh0ZXJuIF9faW5saW5lIGZsb2F0IF9fc2duZiAoZmxvYXQgX194KSB7IHJldHVybiBfX3ggPT0g MC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjApOyB9IGV4dGVybiBfX2lubGluZSBs b25nIGRvdWJsZSBfX3NnbmwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBfX2lubGluZSBsb25nIGRv dWJsZSBfX3NnbmwgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX194ID09IDAuMCA/IDAuMCA6 IChfX3ggPiAwLjAgPyAxLjAgOiAtMS4wKTsgfQpleHRlcm4gX19pbmxpbmUgZG91YmxlIGF0YW4y IChkb3VibGUgX195LCBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7 IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194 KSwgInUiIChfX3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGlu ZSBmbG9hdCBhdGFuMmYgKGZsb2F0IF9feSwgZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91 YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVl KSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4 dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhdGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBk b3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRp bGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDog InN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBf X2F0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9u ZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnBhdGFuIiA6ICI9dCIgKF9f dmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7 IH0KZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBmbW9kIChkb3VibGUgX194LCBkb3VibGUgX195KSB7 IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZw cmVtXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192 YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1 ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZm1vZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB7 IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZw cmVtXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192 YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1 ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwg bG9uZyBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9f dm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAi anAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJj YyIpOyByZXR1cm4gX192YWx1ZTsgfQpleHRlcm4gX19pbmxpbmUgZG91YmxlIHNxcnQgKGRvdWJs ZSBfX3gpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJm c3FydCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0g ZXh0ZXJuIF9faW5saW5lIGZsb2F0IHNxcnRmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQg X19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6 ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3Vi bGUgc3FydGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3Vs dDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChf X3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBfX3Nx cnRsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1bHQ7IF9f YXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7 IHJldHVybiBfX3Jlc3VsdDsgfQpleHRlcm4gX19pbmxpbmUgZG91YmxlIGZhYnMgKGRvdWJsZSBf X3gpIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzIChfX3gpOyB9CmV4dGVybiBfX2lubGluZSBmbG9h dCBmYWJzZiAoZmxvYXQgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFic2YgKF9feCk7IH0KZXh0 ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGZhYnNsIChsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJu IF9fYnVpbHRpbl9mYWJzbCAoX194KTsgfQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19m YWJzbCAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFic2wgKF9feCk7IH0K ZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGRvdWJs ZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkMTsgZnBhdGFuIiA6ICI9dCIgKF9f cmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0ZXJu IF9faW5saW5lIGZsb2F0IGF0YW5mIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1 bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7IGZwYXRhbiIgOiAiPXQiIChfX3Jlc3VsdCkg OiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lubGlu ZSBsb25nIGRvdWJsZSBhdGFubCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91 YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10IiAo X19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfQpleHRl cm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ24xbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIF9f aW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxvbmcgZG91YmxlIF9feCkgeyBfX2V4dGVuc2lv bl9fIHVuaW9uIHsgbG9uZyBkb3VibGUgX194bGQ7IHVuc2lnbmVkIGludCBfX3hpWzNdOyB9IF9f biA9IHsgX194bGQ6IF9feCB9OyBfX24uX194aVsyXSA9IChfX24uX194aVsyXSAmIDB4ODAwMCkg fCAweDNmZmY7IF9fbi5fX3hpWzFdID0gMHg4MDAwMDAwMDsgX19uLl9feGlbMF0gPSAwOyByZXR1 cm4gX19uLl9feGxkOyB9CmV4dGVybiBfX2lubGluZSBkb3VibGUgZmxvb3IgKGRvdWJsZSBfX3gp IHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9y dCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20g X192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAm IDB4ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAo X19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6 ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykp OyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZmxvb3JmIChmbG9hdCBf X3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBz aG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19h c20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19j dyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJt IiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVl KSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19j dykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgZmxvb3Js IChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xh dGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBp bnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7 IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJm bGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIg OiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAl MCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfQpleHRlcm4gX19pbmxpbmUgZG91 YmxlIGNlaWwgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192 b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9y dCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3 KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4MDA7IF9fYXNtIF9fdm9sYXRpbGUg KCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGlu dCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRj dyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUg ZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBf X3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNo b3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9f Y3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19hc20gX192b2xhdGls ZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5k aW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZs ZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGlu ZSBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91 YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRp bGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cg JTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwODAwOyBf X2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192 b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBf X3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0K ZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpsZGV4cCAoZG91YmxlIF9feCwgaW50IF9feSkKewogIHJl Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIg OiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiICgobG9uZyBkb3VibGUpIF9feSkpOyBy ZXR1cm4gX192YWx1ZTsKfQpleHRlcm4gX19pbmxpbmUgZG91YmxlIGxvZzFwIChkb3VibGUgX194 KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IGlmIChfX2ZhYnNsIChfX3gpID49IDEu MCAtIDAuNSAqIDEuNDE0MjEzNTYyMzczMDk1MDQ4ODBMKSBfX3ZhbHVlID0gbG9nbCAoMS4wICsg X194KTsgZWxzZSBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsbjJcblx0IiAiZnhjaFxuXHQiICJm eWwyeHAxIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBf X3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBsb2cxcGYgKGZsb2F0IF9feCkgeyByZWdp c3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194KSA+PSAxLjAgLSAwLjUg KiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wgKDEuMCArIF9feCk7IGVs c2UgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAiZnlsMnhwMSIg OiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsg fSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgbG9nMXBsIChsb25nIGRvdWJsZSBfX3gpIHsg cmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0g MC41ICogMS40MTQyMTM1NjIzNzMwOTUwNDg4MEwpIF9fdmFsdWUgPSBsb2dsICgxLjAgKyBfX3gp OyBlbHNlIF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGxuMlxuXHQiICJmeGNoXG5cdCIgImZ5bDJ4 cDEiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFs dWU7IH0KZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhc2luaCAoZG91YmxlIF9feCkgeyByZWdpc3Rl ciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gKGxvZzFwbCAoX195ICog X195IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkgKyAxLjApICsgX195KSAqIF9fc2duMWwg KF9feCkpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBhc2luaGYgKGZsb2F0IF9feCkgeyByZWdp c3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gKGxvZzFwbCAoX195 ICogX195IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkgKyAxLjApICsgX195KSAqIF9fc2du MWwgKF9feCkpOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhc2luaGwgKGxvbmcgZG91 YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1 cm4gKGxvZzFwbCAoX195ICogX195IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkgKyAxLjAp ICsgX195KSAqIF9fc2duMWwgKF9feCkpOyB9CmV4dGVybiBfX2lubGluZSBkb3VibGUgYWNvc2gg KGRvdWJsZSBfX3gpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEuMCkgKiBf X3NxcnRsIChfX3ggKyAxLjApKTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgYWNvc2hmIChmbG9h dCBfX3gpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEuMCkgKiBfX3NxcnRs IChfX3ggKyAxLjApKTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgYWNvc2hsIChsb25n IGRvdWJsZSBfX3gpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEuMCkgKiBf X3NxcnRsIChfX3ggKyAxLjApKTsgfQpleHRlcm4gX19pbmxpbmUgZG91YmxlIGF0YW5oIChkb3Vi bGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVy biAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195KSkgKiBfX3NnbjFsIChf X3gpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBhdGFuaGYgKGZsb2F0IF9feCkgeyByZWdpc3Rl ciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gLTAuNSAqIGxvZzFwbCAo LShfX3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194KTsgfSBleHRlcm4gX19p bmxpbmUgbG9uZyBkb3VibGUgYXRhbmhsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9u ZyBkb3VibGUgX195ID0gX19mYWJzbCAoX194KTsgcmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195 ICsgX195KSAvICgxLjAgKyBfX3kpKSAqIF9fc2duMWwgKF9feCk7IH0KZXh0ZXJuIF9faW5saW5l IGRvdWJsZSBoeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgeyByZXR1cm4gX19zcXJ0bCAo X194ICogX194ICsgX195ICogX195KTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgaHlwb3RmIChm bG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4gX19zcXJ0bCAoX194ICogX194ICsgX195ICog X195KTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgaHlwb3RsIChsb25nIGRvdWJsZSBf X3gsIGxvbmcgZG91YmxlIF9feSkgeyByZXR1cm4gX19zcXJ0bCAoX194ICogX194ICsgX195ICog X195KTsgfQpleHRlcm4gX19pbmxpbmUgZG91YmxlIGxvZ2IgKGRvdWJsZSBfX3gpIHsgcmVnaXN0 ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOyBfX2Fz bSBfX3ZvbGF0aWxlX18gKCJmeHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAiPXUiIChfX3Zh bHVlKSA6ICIwIiAoX194KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9h dCBsb2diZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lz dGVyIGxvbmcgZG91YmxlIF9fanVuazsgX19hc20gX192b2xhdGlsZV9fICgiZnh0cmFjdFxuXHQi IDogIj10IiAoX19qdW5rKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192 YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9f eCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBf X2p1bms7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayks ICI9dSIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0KZXh0ZXJuIF9f aW5saW5lIGRvdWJsZSBkcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGRv dWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVf XyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDog Ij10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195 KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZHJlbWYg KGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3Rl ciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJm c3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEi IChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192 YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgZHJlbWwgKGxvbmcgZG91YmxlIF9f eCwgbG9uZyBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBp bnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3Rz dwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChf X2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1 ZTsgfQpleHRlcm4gX19pbmxpbmUgaW50Cl9fZmluaXRlIChkb3VibGUgX194KQp7CiAgcmV0dXJu IChfX2V4dGVuc2lvbl9fCiAgICAgICAgICAoKCgoKHVuaW9uIHsgZG91YmxlIF9fZDsgaW50IF9f aVsyXTsgfSkge19fZDogX194fSkuX19pWzFdCiAgICAgICAgICAgICB8IDB4ODAwZmZmZmZ1KSAr IDEpID4+IDMxKSk7Cn0KZG91YmxlCmZfX2NhYnMgKGRvdWJsZSByZWFsLCBkb3VibGUgaW1hZykK ewogIGRvdWJsZSB0ZW1wOwogIGlmIChyZWFsIDwgMCkKICAgIHJlYWwgPSAtcmVhbDsKICBpZiAo aW1hZyA8IDApCiAgICBpbWFnID0gLWltYWc7CiAgaWYgKGltYWcgPiByZWFsKQogICAgewogICAg ICB0ZW1wID0gcmVhbDsKICAgICAgcmVhbCA9IGltYWc7CiAgICAgIGltYWcgPSB0ZW1wOwogICAg fQogIGlmICgocmVhbCArIGltYWcpID09IHJlYWwpCiAgICByZXR1cm4gKHJlYWwpOwogIHRlbXAg PSBpbWFnIC8gcmVhbDsKICB0ZW1wID0gcmVhbCAqIHNxcnQgKDEuMCArIHRlbXAgKiB0ZW1wKTsK ICByZXR1cm4gKHRlbXApOwp9Cg==