From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x62e.google.com (mail-pl1-x62e.google.com [IPv6:2607:f8b0:4864:20::62e]) by sourceware.org (Postfix) with ESMTPS id D49713858D28 for ; Sun, 9 Jun 2024 14:29:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D49713858D28 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D49713858D28 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::62e ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1717943382; cv=none; b=ipokgvieFuhbRjUMZiN4LDv9RmJrvZrtnuY/12jijjIs7u+tnOrdUqEqvW0ZXhRO+fnrJzTq3WWXQVrt/Z7pIeSQ6xuQNblYE4TudMzZD1Y8Bs1Sk824GfkH0TY4AW3InS61e8blrv+yX4zWWuS/agds1VRbiMWiNViWjq1/0B8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1717943382; c=relaxed/simple; bh=/L4Ki9jhqUSyzcNoTbnmwdoT4RD+YT5kbjZ7CH+LEzg=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:From:To; b=tSirDRKjMZ16Q7bUTOScD12M8sU4bfrrsHVH7jLFH6d0FV8IpOKSZOGtNTAwH6Q9vlJNuk4GrMS5kDkXEhu5R9Va3USOesSY0kGbDure71rDB1ndTOnDAQQ6exvyX3kgpIvvj+3lY6wKq3TVOBFNzSzeIFCzj2c0LVckUn9jkfA= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-1f658800344so28675785ad.0 for ; Sun, 09 Jun 2024 07:29:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717943377; x=1718548177; darn=gcc.gnu.org; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=Mk6fYeiM5KZ5jLllEV6QT6kZMzxMbxTqI/I7q72AwE0=; b=SqeEWrnDs/kGa4y1ebIpw5IGbIABDq2mpbuztIQo1lPYNLi2MlgPMN8uA6d8yWeGZo wBumJFGUYPsDgpISs6O6KqwRNS3LHqxyXolLQWOi90e3pXaOKnEpC088xccL3He18bPN M79RmoNeNd2JvSQMkoT7jQSH6oUJpRokpQf6Vf20LFZkGKupVfb3NQC2ggPsN+bJxQAh nryLChxy6tehz+dVPL7qTwIXCi5PBp+irTUZHEBtO+mPe8IcTJD8YVS0Uui7o62315pU Rl56CH7oIWKt9+X+oAjhNy+F3PXdyvjhUhwDY4LQkECPWgmDIO8o8gwhRRP9ufYdjY2w go3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717943377; x=1718548177; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Mk6fYeiM5KZ5jLllEV6QT6kZMzxMbxTqI/I7q72AwE0=; b=LKl6dGuLNLRmngMAfKrv0wKSdDuslGQ0JX0OGzC1FN0ieSj8OAazs5tuuUiaa8jjfA qFE92Z0zV5dJE4WBze1POFAYMVJcIjPdJt7TLtsB2m29znD/KLF6pHELRPEfxUCBRVDf NQdwUnFEup/Fw7GpSbWRsC6tHj6SYudtZDgG8O71zArMqxkcCtr2aA1vEHm4q+Za6E2Z XhZL8MBaUo0yvQn1kS9hRkeGqBVtWd8x2X+uoie7UaS1zv1BGhm6NiYxsH9KNE7KAOtw I72wH18CzzxyjwVdkE+ruhiZEGlUGMKrFioMcl0UJAYqyIGktvWUr4xyzKIoUngMwEsg qkCA== X-Forwarded-Encrypted: i=1; AJvYcCV9IvgpSDKRTtmIJB//lfDN/UKPS3wsKr/oEEsV3s5W9ZT1ETmaNNn9hZhxqjqDvihe3ZHHxt0Zcjs13OQOVEjn4xJEvctbpg== X-Gm-Message-State: AOJu0YyPvpq2mE2cakB68zEh2+D4euTzbhBsuENuFqWX/bAH0rAuIUV/ 2rA9+VVD92nTWwT593NLMfe6XCBneckvST6TYr8kkRroHd3LidUW X-Google-Smtp-Source: AGHT+IECLbVcGd8OAD+nKPe4srwMyoFHFDX/HdT7L0IgtB7yXHe/whaAvO/dy+2jHPtErtkvORKYeQ== X-Received: by 2002:a17:902:bb84:b0:1f7:165f:3ecc with SMTP id d9443c01a7336-1f7165f439emr2571105ad.47.1717943376552; Sun, 09 Jun 2024 07:29:36 -0700 (PDT) Received: from [172.31.0.109] ([136.36.72.243]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1f6bd76da28sm65901865ad.90.2024.06.09.07.29.35 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 09 Jun 2024 07:29:36 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------aNZ4lSwm3OQpcl5Zh3mvhlTI" Message-ID: <829fcc36-f1b2-474b-a297-3a516741ece3@gmail.com> Date: Sun, 9 Jun 2024 08:29:31 -0600 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Beta Subject: Re: [PATCH v2] Target-independent store forwarding avoidance. Content-Language: en-US From: Jeff Law To: Manolis Tsamis , gcc-patches@gcc.gnu.org Cc: Richard Biener , Philipp Tomsich , =?UTF-8?Q?Christoph_M=C3=BCllner?= , Jiangning Liu , Jakub Jelinek , Andrew Pinski References: <20240606101043.3682477-1-manolis.tsamis@vrull.eu> In-Reply-To: X-Spam-Status: No, score=-2.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,WEIRD_PORT autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------aNZ4lSwm3OQpcl5Zh3mvhlTI Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 6/7/24 4:31 PM, Jeff Law wrote: > > I've actually added it to my tester just to see if there's any fallout. > It'll take a week to churn through the long running targets that > bootstrap in QEMU, but the crosses should have data Monday. The first round naturally didn't trigger anything because the option is off by default. So I twiddled it to be on at -O1 and above. epiphany-elf ICEs in gen_rtx_SUBREG with the attached .i file compiled with -O2: > root@577c7458c93a://home/jlaw/jenkins/workspace/epiphany-elf/epiphany-elf-obj/newlib/epiphany-elf/newlib/libm/complex# epiphany-elf-gcc -O2 libm_a-cacos.i > during RTL pass: avoid_store_forwarding > ../../../..//newlib-cygwin/newlib/libm/complex/cacos.c: In function 'cacos': > ../../../..//newlib-cygwin/newlib/libm/complex/cacos.c:99:1: internal compiler error: in gen_rtx_SUBREG, at emit-rtl.cc:1032 > 0x614538 gen_rtx_SUBREG(machine_mode, rtx_def*, poly_int<1u, unsigned long>) > ../../..//gcc/gcc/emit-rtl.cc:1032 > 0x614538 gen_rtx_SUBREG(machine_mode, rtx_def*, poly_int<1u, unsigned long>) > ../../..//gcc/gcc/emit-rtl.cc:1030 > 0xe82216 process_forwardings > ../../..//gcc/gcc/avoid-store-forwarding.cc:273 > 0xe82216 avoid_store_forwarding > ../../..//gcc/gcc/avoid-store-forwarding.cc:489 > 0xe82667 execute > ../../..//gcc/gcc/avoid-store-forwarding.cc:558 ft32-elf ICE'd in bitmap_check_index at various optimization levels: > FAIL: execute/pr108498-2.c -O1 (internal compiler error: in bitmap_check_index, at sbitmap.h:104) > FAIL: execute/pr108498-2.c -O1 (test for excess errors) > FAIL: execute/pr108498-2.c -O2 (internal compiler error: in bitmap_check_index, at sbitmap.h:104) > FAIL: execute/pr108498-2.c -O2 (test for excess errors) > FAIL: execute/pr108498-2.c -O3 -g (internal compiler error: in bitmap_check_index, at sbitmap.h:104) > FAIL: execute/pr108498-2.c -O3 -g (test for excess errors) avr, c6x, lm32-elf failed to build libgcc with an ICE in leaf_function_p, I haven't isolated that yet. There were other failures as well. But you've got a few to start with and we can retest pretty easily as the patch evolves. jeff --------------aNZ4lSwm3OQpcl5Zh3mvhlTI Content-Type: text/plain; charset=UTF-8; name="libm_a-cacos.i" Content-Disposition: attachment; filename="libm_a-cacos.i" Content-Transfer-Encoding: base64 IyAwICIuLi8uLi8uLi8uLi8vbmV3bGliLWN5Z3dpbi9uZXdsaWIvbGlibS9jb21wbGV4L2Nh Y29zLmMiCiMgMSAiLy9ob21lL2psYXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxm L2VwaXBoYW55LWVsZi1vYmovbmV3bGliL2VwaXBoYW55LWVsZi9uZXdsaWIvLyIKIyAwICI8 YnVpbHQtaW4+IgojIDAgIjxjb21tYW5kLWxpbmU+IgojIDEgIi4uLy4uLy4uLy4uLy9uZXds aWItY3lnd2luL25ld2xpYi9saWJtL2NvbXBsZXgvY2Fjb3MuYyIKIyA3NyAiLi4vLi4vLi4v Li4vL25ld2xpYi1jeWd3aW4vbmV3bGliL2xpYm0vY29tcGxleC9jYWNvcy5jIgojIDEgIi9o b21lL2psYXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4v bmV3bGliL2xpYmMvaW5jbHVkZS9jb21wbGV4LmgiIDEgMyA0CiMgMTUgIi9ob21lL2psYXcv amVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4vbmV3bGliL2xp YmMvaW5jbHVkZS9jb21wbGV4LmgiIDMgNAojIDEgIi9ob21lL2psYXcvamVua2lucy93b3Jr c3BhY2UvZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4vbmV3bGliL2xpYmMvaW5jbHVkZS9z eXMvY2RlZnMuaCIgMSAzIDQKIyA0NSAiL2hvbWUvamxhdy9qZW5raW5zL3dvcmtzcGFjZS9l cGlwaGFueS1lbGYvbmV3bGliLWN5Z3dpbi9uZXdsaWIvbGliYy9pbmNsdWRlL3N5cy9jZGVm cy5oIiAzIDQKIyAxICIvaG9tZS9qbGF3L2plbmtpbnMvd29ya3NwYWNlL2VwaXBoYW55LWVs Zi9uZXdsaWItY3lnd2luL25ld2xpYi9saWJjL2luY2x1ZGUvbWFjaGluZS9fZGVmYXVsdF90 eXBlcy5oIiAxIDMgNAoKCgoKCgoKIyAxICIvaG9tZS9qbGF3L2plbmtpbnMvd29ya3NwYWNl L2VwaXBoYW55LWVsZi9uZXdsaWItY3lnd2luL25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL2Zl YXR1cmVzLmgiIDEgMyA0CiMgMjggIi9ob21lL2psYXcvamVua2lucy93b3Jrc3BhY2UvZXBp cGhhbnktZWxmL25ld2xpYi1jeWd3aW4vbmV3bGliL2xpYmMvaW5jbHVkZS9zeXMvZmVhdHVy ZXMuaCIgMyA0CiMgMSAiLi9fbmV3bGliX3ZlcnNpb24uaCIgMSAzIDQKIyAyOSAiL2hvbWUv amxhdy9qZW5raW5zL3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dpbi9uZXds aWIvbGliYy9pbmNsdWRlL3N5cy9mZWF0dXJlcy5oIiAyIDMgNAojIDkgIi9ob21lL2psYXcv amVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4vbmV3bGliL2xp YmMvaW5jbHVkZS9tYWNoaW5lL19kZWZhdWx0X3R5cGVzLmgiIDIgMyA0CiMgNDEgIi9ob21l L2psYXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4vbmV3 bGliL2xpYmMvaW5jbHVkZS9tYWNoaW5lL19kZWZhdWx0X3R5cGVzLmgiIDMgNAoKIyA0MSAi L2hvbWUvamxhdy9qZW5raW5zL3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dp bi9uZXdsaWIvbGliYy9pbmNsdWRlL21hY2hpbmUvX2RlZmF1bHRfdHlwZXMuaCIgMyA0CnR5 cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191 aW50OF90OwojIDU1ICIvaG9tZS9qbGF3L2plbmtpbnMvd29ya3NwYWNlL2VwaXBoYW55LWVs Zi9uZXdsaWItY3lnd2luL25ld2xpYi9saWJjL2luY2x1ZGUvbWFjaGluZS9fZGVmYXVsdF90 eXBlcy5oIiAzIDQKdHlwZWRlZiBzaG9ydCBpbnQgX19pbnQxNl90OwoKdHlwZWRlZiBzaG9y dCB1bnNpZ25lZCBpbnQgX191aW50MTZfdDsKIyA3NyAiL2hvbWUvamxhdy9qZW5raW5zL3dv cmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dpbi9uZXdsaWIvbGliYy9pbmNsdWRl L21hY2hpbmUvX2RlZmF1bHRfdHlwZXMuaCIgMyA0CnR5cGVkZWYgbG9uZyBpbnQgX19pbnQz Ml90OwoKdHlwZWRlZiBsb25nIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwojIDEwMyAiL2hv bWUvamxhdy9qZW5raW5zL3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dpbi9u ZXdsaWIvbGliYy9pbmNsdWRlL21hY2hpbmUvX2RlZmF1bHRfdHlwZXMuaCIgMyA0CnR5cGVk ZWYgbG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cgp0eXBlZGVmIGxvbmcgbG9uZyB1bnNpZ25l ZCBpbnQgX191aW50NjRfdDsKIyAxMzQgIi9ob21lL2psYXcvamVua2lucy93b3Jrc3BhY2Uv ZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4vbmV3bGliL2xpYmMvaW5jbHVkZS9tYWNoaW5l L19kZWZhdWx0X3R5cGVzLmgiIDMgNAp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50X2xlYXN0 OF90OwoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdWludF9sZWFzdDhfdDsKIyAxNjAgIi9o b21lL2psYXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4v bmV3bGliL2xpYmMvaW5jbHVkZS9tYWNoaW5lL19kZWZhdWx0X3R5cGVzLmgiIDMgNAp0eXBl ZGVmIHNob3J0IGludCBfX2ludF9sZWFzdDE2X3Q7Cgp0eXBlZGVmIHNob3J0IHVuc2lnbmVk IGludCBfX3VpbnRfbGVhc3QxNl90OwojIDE4MiAiL2hvbWUvamxhdy9qZW5raW5zL3dvcmtz cGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dpbi9uZXdsaWIvbGliYy9pbmNsdWRlL21h Y2hpbmUvX2RlZmF1bHRfdHlwZXMuaCIgMyA0CnR5cGVkZWYgbG9uZyBpbnQgX19pbnRfbGVh c3QzMl90OwoKdHlwZWRlZiBsb25nIHVuc2lnbmVkIGludCBfX3VpbnRfbGVhc3QzMl90Owoj IDIwMCAiL2hvbWUvamxhdy9qZW5raW5zL3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3bGli LWN5Z3dpbi9uZXdsaWIvbGliYy9pbmNsdWRlL21hY2hpbmUvX2RlZmF1bHRfdHlwZXMuaCIg MyA0CnR5cGVkZWYgbG9uZyBsb25nIGludCBfX2ludF9sZWFzdDY0X3Q7Cgp0eXBlZGVmIGxv bmcgbG9uZyB1bnNpZ25lZCBpbnQgX191aW50X2xlYXN0NjRfdDsKIyAyMTQgIi9ob21lL2ps YXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4vbmV3bGli L2xpYmMvaW5jbHVkZS9tYWNoaW5lL19kZWZhdWx0X3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxv bmcgbG9uZyBpbnQgX19pbnRtYXhfdDsKCgoKCgoKCnR5cGVkZWYgbG9uZyBsb25nIHVuc2ln bmVkIGludCBfX3VpbnRtYXhfdDsKCgoKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19pbnRwdHJf dDsKCnR5cGVkZWYgbG9uZyB1bnNpZ25lZCBpbnQgX191aW50cHRyX3Q7CiMgNDYgIi9ob21l L2psYXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4vbmV3 bGliL2xpYmMvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMiAzIDQKCiMgMSAiL2hvbWUvamxhdy9q ZW5raW5zL3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvZXBpcGhhbnktZWxmLWluc3RhbGxlZC9s aWIvZ2NjL2VwaXBoYW55LWVsZi8xNS4wLjAvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAx NDUgIi9ob21lL2psYXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL2VwaXBoYW55 LWVsZi1pbnN0YWxsZWQvbGliL2djYy9lcGlwaGFueS1lbGYvMTUuMC4wL2luY2x1ZGUvc3Rk ZGVmLmgiIDMgNAp0eXBlZGVmIGxvbmcgaW50IHB0cmRpZmZfdDsKIyAyMTQgIi9ob21lL2ps YXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL2VwaXBoYW55LWVsZi1pbnN0YWxs ZWQvbGliL2djYy9lcGlwaGFueS1lbGYvMTUuMC4wL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0 eXBlZGVmIGxvbmcgdW5zaWduZWQgaW50IHNpemVfdDsKIyAzMjkgIi9ob21lL2psYXcvamVu a2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL2VwaXBoYW55LWVsZi1pbnN0YWxsZWQvbGli L2djYy9lcGlwaGFueS1lbGYvMTUuMC4wL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVm IHVuc2lnbmVkIGludCB3Y2hhcl90OwojIDQyNSAiL2hvbWUvamxhdy9qZW5raW5zL3dvcmtz cGFjZS9lcGlwaGFueS1lbGYvZXBpcGhhbnktZWxmLWluc3RhbGxlZC9saWIvZ2NjL2VwaXBo YW55LWVsZi8xNS4wLjAvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CnR5cGVkZWYgc3RydWN0IHsK ICBsb25nIGxvbmcgX19tYXhfYWxpZ25fbGwgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18o X19hbGlnbm9mX18obG9uZyBsb25nKSkpKTsKICBsb25nIGRvdWJsZSBfX21heF9hbGlnbl9s ZCBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyhfX2FsaWdub2ZfXyhsb25nIGRvdWJsZSkp KSk7CiMgNDM2ICIvaG9tZS9qbGF3L2plbmtpbnMvd29ya3NwYWNlL2VwaXBoYW55LWVsZi9l cGlwaGFueS1lbGYtaW5zdGFsbGVkL2xpYi9nY2MvZXBpcGhhbnktZWxmLzE1LjAuMC9pbmNs dWRlL3N0ZGRlZi5oIiAzIDQKfSBtYXhfYWxpZ25fdDsKIyA0OCAiL2hvbWUvamxhdy9qZW5r aW5zL3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dpbi9uZXdsaWIvbGliYy9p bmNsdWRlL3N5cy9jZGVmcy5oIiAyIDMgNAojIDE2ICIvaG9tZS9qbGF3L2plbmtpbnMvd29y a3NwYWNlL2VwaXBoYW55LWVsZi9uZXdsaWItY3lnd2luL25ld2xpYi9saWJjL2luY2x1ZGUv Y29tcGxleC5oIiAyIDMgNAoKCgoKCmRvdWJsZSBfQ29tcGxleCBjYWNvcyhkb3VibGUgX0Nv bXBsZXgpOwpmbG9hdCBfQ29tcGxleCBjYWNvc2YoZmxvYXQgX0NvbXBsZXgpOwpsb25nIGRv dWJsZSBfQ29tcGxleCBjYWNvc2wobG9uZyBkb3VibGUgX0NvbXBsZXgpOwoKCmRvdWJsZSBf Q29tcGxleCBjYXNpbihkb3VibGUgX0NvbXBsZXgpOwpmbG9hdCBfQ29tcGxleCBjYXNpbmYo ZmxvYXQgX0NvbXBsZXgpOwpsb25nIGRvdWJsZSBfQ29tcGxleCBjYXNpbmwobG9uZyBkb3Vi bGUgX0NvbXBsZXgpOwoKCmRvdWJsZSBfQ29tcGxleCBjYXRhbihkb3VibGUgX0NvbXBsZXgp OwpmbG9hdCBfQ29tcGxleCBjYXRhbmYoZmxvYXQgX0NvbXBsZXgpOwpsb25nIGRvdWJsZSBf Q29tcGxleCBjYXRhbmwobG9uZyBkb3VibGUgX0NvbXBsZXgpOwoKCmRvdWJsZSBfQ29tcGxl eCBjY29zKGRvdWJsZSBfQ29tcGxleCk7CmZsb2F0IF9Db21wbGV4IGNjb3NmKGZsb2F0IF9D b21wbGV4KTsKbG9uZyBkb3VibGUgX0NvbXBsZXggY2Nvc2wobG9uZyBkb3VibGUgX0NvbXBs ZXgpOwoKCmRvdWJsZSBfQ29tcGxleCBjc2luKGRvdWJsZSBfQ29tcGxleCk7CmZsb2F0IF9D b21wbGV4IGNzaW5mKGZsb2F0IF9Db21wbGV4KTsKbG9uZyBkb3VibGUgX0NvbXBsZXggY3Np bmwobG9uZyBkb3VibGUgX0NvbXBsZXgpOwoKCmRvdWJsZSBfQ29tcGxleCBjdGFuKGRvdWJs ZSBfQ29tcGxleCk7CmZsb2F0IF9Db21wbGV4IGN0YW5mKGZsb2F0IF9Db21wbGV4KTsKbG9u ZyBkb3VibGUgX0NvbXBsZXggY3RhbmwobG9uZyBkb3VibGUgX0NvbXBsZXgpOwoKCgpkb3Vi bGUgX0NvbXBsZXggY2Fjb3NoKGRvdWJsZSBfQ29tcGxleCk7CmZsb2F0IF9Db21wbGV4IGNh Y29zaGYoZmxvYXQgX0NvbXBsZXgpOwpsb25nIGRvdWJsZSBfQ29tcGxleCBjYWNvc2hsKGxv bmcgZG91YmxlIF9Db21wbGV4KTsKCgpkb3VibGUgX0NvbXBsZXggY2FzaW5oKGRvdWJsZSBf Q29tcGxleCk7CmZsb2F0IF9Db21wbGV4IGNhc2luaGYoZmxvYXQgX0NvbXBsZXgpOwpsb25n IGRvdWJsZSBfQ29tcGxleCBjYXNpbmhsKGxvbmcgZG91YmxlIF9Db21wbGV4KTsKCgpkb3Vi bGUgX0NvbXBsZXggY2F0YW5oKGRvdWJsZSBfQ29tcGxleCk7CmZsb2F0IF9Db21wbGV4IGNh dGFuaGYoZmxvYXQgX0NvbXBsZXgpOwpsb25nIGRvdWJsZSBfQ29tcGxleCBjYXRhbmhsKGxv bmcgZG91YmxlIF9Db21wbGV4KTsKCgpkb3VibGUgX0NvbXBsZXggY2Nvc2goZG91YmxlIF9D b21wbGV4KTsKZmxvYXQgX0NvbXBsZXggY2Nvc2hmKGZsb2F0IF9Db21wbGV4KTsKbG9uZyBk b3VibGUgX0NvbXBsZXggY2Nvc2hsKGxvbmcgZG91YmxlIF9Db21wbGV4KTsKCgpkb3VibGUg X0NvbXBsZXggY3NpbmgoZG91YmxlIF9Db21wbGV4KTsKZmxvYXQgX0NvbXBsZXggY3Npbmhm KGZsb2F0IF9Db21wbGV4KTsKbG9uZyBkb3VibGUgX0NvbXBsZXggY3NpbmhsKGxvbmcgZG91 YmxlIF9Db21wbGV4KTsKCgpkb3VibGUgX0NvbXBsZXggY3RhbmgoZG91YmxlIF9Db21wbGV4 KTsKZmxvYXQgX0NvbXBsZXggY3RhbmhmKGZsb2F0IF9Db21wbGV4KTsKbG9uZyBkb3VibGUg X0NvbXBsZXggY3RhbmhsKGxvbmcgZG91YmxlIF9Db21wbGV4KTsKCgoKZG91YmxlIF9Db21w bGV4IGNleHAoZG91YmxlIF9Db21wbGV4KTsKZmxvYXQgX0NvbXBsZXggY2V4cGYoZmxvYXQg X0NvbXBsZXgpOwpsb25nIGRvdWJsZSBfQ29tcGxleCBjZXhwbChsb25nIGRvdWJsZSBfQ29t cGxleCk7CgoKZG91YmxlIF9Db21wbGV4IGNsb2coZG91YmxlIF9Db21wbGV4KTsKZmxvYXQg X0NvbXBsZXggY2xvZ2YoZmxvYXQgX0NvbXBsZXgpOwpsb25nIGRvdWJsZSBfQ29tcGxleCBj bG9nbChsb25nIGRvdWJsZSBfQ29tcGxleCk7CiMgMTAwICIvaG9tZS9qbGF3L2plbmtpbnMv d29ya3NwYWNlL2VwaXBoYW55LWVsZi9uZXdsaWItY3lnd2luL25ld2xpYi9saWJjL2luY2x1 ZGUvY29tcGxleC5oIiAzIDQKbG9uZyBkb3VibGUgY2Fic2wobG9uZyBkb3VibGUgX0NvbXBs ZXgpIDsKZG91YmxlIGNhYnMoZG91YmxlIF9Db21wbGV4KSA7CmZsb2F0IGNhYnNmKGZsb2F0 IF9Db21wbGV4KSA7CgoKZG91YmxlIF9Db21wbGV4IGNwb3coZG91YmxlIF9Db21wbGV4LCBk b3VibGUgX0NvbXBsZXgpOwpmbG9hdCBfQ29tcGxleCBjcG93ZihmbG9hdCBfQ29tcGxleCwg ZmxvYXQgX0NvbXBsZXgpOwpsb25nIGRvdWJsZSBfQ29tcGxleCBjcG93bChsb25nIGRvdWJs ZSBfQ29tcGxleCwgbG9uZyBkb3VibGUgX0NvbXBsZXgpOwoKCmRvdWJsZSBfQ29tcGxleCBj c3FydChkb3VibGUgX0NvbXBsZXgpOwpmbG9hdCBfQ29tcGxleCBjc3FydGYoZmxvYXQgX0Nv bXBsZXgpOwpsb25nIGRvdWJsZSBfQ29tcGxleCBjc3FydGwobG9uZyBkb3VibGUgX0NvbXBs ZXgpOwoKCgpkb3VibGUgY2FyZyhkb3VibGUgX0NvbXBsZXgpOwpmbG9hdCBjYXJnZihmbG9h dCBfQ29tcGxleCk7CmxvbmcgZG91YmxlIGNhcmdsKGxvbmcgZG91YmxlIF9Db21wbGV4KTsK Cgpkb3VibGUgY2ltYWcoZG91YmxlIF9Db21wbGV4KTsKZmxvYXQgY2ltYWdmKGZsb2F0IF9D b21wbGV4KTsKbG9uZyBkb3VibGUgY2ltYWdsKGxvbmcgZG91YmxlIF9Db21wbGV4KTsKCgpk b3VibGUgX0NvbXBsZXggY29uaihkb3VibGUgX0NvbXBsZXgpOwpmbG9hdCBfQ29tcGxleCBj b25qZihmbG9hdCBfQ29tcGxleCk7CmxvbmcgZG91YmxlIF9Db21wbGV4IGNvbmpsKGxvbmcg ZG91YmxlIF9Db21wbGV4KTsKCgpkb3VibGUgX0NvbXBsZXggY3Byb2ooZG91YmxlIF9Db21w bGV4KTsKZmxvYXQgX0NvbXBsZXggY3Byb2pmKGZsb2F0IF9Db21wbGV4KTsKbG9uZyBkb3Vi bGUgX0NvbXBsZXggY3Byb2psKGxvbmcgZG91YmxlIF9Db21wbGV4KTsKCgpkb3VibGUgY3Jl YWwoZG91YmxlIF9Db21wbGV4KTsKZmxvYXQgY3JlYWxmKGZsb2F0IF9Db21wbGV4KTsKbG9u ZyBkb3VibGUgY3JlYWxsKGxvbmcgZG91YmxlIF9Db21wbGV4KTsKIyAxNDggIi9ob21lL2ps YXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4vbmV3bGli L2xpYmMvaW5jbHVkZS9jb21wbGV4LmgiIDMgNAoKIyA3OCAiLi4vLi4vLi4vLi4vL25ld2xp Yi1jeWd3aW4vbmV3bGliL2xpYm0vY29tcGxleC9jYWNvcy5jIiAyCiMgMSAiL2hvbWUvamxh dy9qZW5raW5zL3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dpbi9uZXdsaWIv bGliYy9pbmNsdWRlL21hdGguaCIgMSAzIDQKCgoKCiMgMSAiL2hvbWUvamxhdy9qZW5raW5z L3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dpbi9uZXdsaWIvbGliYy9pbmNs dWRlL3N5cy9yZWVudC5oIiAxIDMgNAojIDEzICIvaG9tZS9qbGF3L2plbmtpbnMvd29ya3Nw YWNlL2VwaXBoYW55LWVsZi9uZXdsaWItY3lnd2luL25ld2xpYi9saWJjL2luY2x1ZGUvc3lz L3JlZW50LmgiIDMgNAojIDEgIi9ob21lL2psYXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhh bnktZWxmL25ld2xpYi1jeWd3aW4vbmV3bGliL2xpYmMvaW5jbHVkZS9fYW5zaS5oIiAxIDMg NAojIDEwICIvaG9tZS9qbGF3L2plbmtpbnMvd29ya3NwYWNlL2VwaXBoYW55LWVsZi9uZXds aWItY3lnd2luL25ld2xpYi9saWJjL2luY2x1ZGUvX2Fuc2kuaCIgMyA0CiMgMSAiLi9uZXds aWIuaCIgMSAzIDQKIyAxMSAiL2hvbWUvamxhdy9qZW5raW5zL3dvcmtzcGFjZS9lcGlwaGFu eS1lbGYvbmV3bGliLWN5Z3dpbi9uZXdsaWIvbGliYy9pbmNsdWRlL19hbnNpLmgiIDIgMyA0 CiMgMSAiL2hvbWUvamxhdy9qZW5raW5zL3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3bGli LWN5Z3dpbi9uZXdsaWIvbGliYy9pbmNsdWRlL3N5cy9jb25maWcuaCIgMSAzIDQKCgoKIyAx ICIvaG9tZS9qbGF3L2plbmtpbnMvd29ya3NwYWNlL2VwaXBoYW55LWVsZi9uZXdsaWItY3ln d2luL25ld2xpYi9saWJjL2luY2x1ZGUvbWFjaGluZS9pZWVlZnAuaCIgMSAzIDQKIyA1ICIv aG9tZS9qbGF3L2plbmtpbnMvd29ya3NwYWNlL2VwaXBoYW55LWVsZi9uZXdsaWItY3lnd2lu L25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL2NvbmZpZy5oIiAyIDMgNAojIDEyICIvaG9tZS9q bGF3L2plbmtpbnMvd29ya3NwYWNlL2VwaXBoYW55LWVsZi9uZXdsaWItY3lnd2luL25ld2xp Yi9saWJjL2luY2x1ZGUvX2Fuc2kuaCIgMiAzIDQKIyAxNCAiL2hvbWUvamxhdy9qZW5raW5z L3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dpbi9uZXdsaWIvbGliYy9pbmNs dWRlL3N5cy9yZWVudC5oIiAyIDMgNAojIDEgIi9ob21lL2psYXcvamVua2lucy93b3Jrc3Bh Y2UvZXBpcGhhbnktZWxmL2VwaXBoYW55LWVsZi1pbnN0YWxsZWQvbGliL2djYy9lcGlwaGFu eS1lbGYvMTUuMC4wL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMTUgIi9ob21lL2psYXcv amVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4vbmV3bGliL2xp YmMvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMiAzIDQKCiMgMSAiL2hvbWUvamxhdy9qZW5raW5z L3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dpbi9uZXdsaWIvbGliYy9pbmNs dWRlL3N5cy9fdHlwZXMuaCIgMSAzIDQKIyAyNCAiL2hvbWUvamxhdy9qZW5raW5zL3dvcmtz cGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dpbi9uZXdsaWIvbGliYy9pbmNsdWRlL3N5 cy9fdHlwZXMuaCIgMyA0CiMgMSAiL2hvbWUvamxhdy9qZW5raW5zL3dvcmtzcGFjZS9lcGlw aGFueS1lbGYvZXBpcGhhbnktZWxmLWluc3RhbGxlZC9saWIvZ2NjL2VwaXBoYW55LWVsZi8x NS4wLjAvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzNTkgIi9ob21lL2psYXcvamVua2lu cy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL2VwaXBoYW55LWVsZi1pbnN0YWxsZWQvbGliL2dj Yy9lcGlwaGFueS1lbGYvMTUuMC4wL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVmIHVu c2lnbmVkIGludCB3aW50X3Q7CiMgMjUgIi9ob21lL2psYXcvamVua2lucy93b3Jrc3BhY2Uv ZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4vbmV3bGliL2xpYmMvaW5jbHVkZS9zeXMvX3R5 cGVzLmgiIDIgMyA0CgoKIyAxICIvaG9tZS9qbGF3L2plbmtpbnMvd29ya3NwYWNlL2VwaXBo YW55LWVsZi9uZXdsaWItY3lnd2luL25ld2xpYi9saWJjL2luY2x1ZGUvbWFjaGluZS9fdHlw ZXMuaCIgMSAzIDQKIyAyOCAiL2hvbWUvamxhdy9qZW5raW5zL3dvcmtzcGFjZS9lcGlwaGFu eS1lbGYvbmV3bGliLWN5Z3dpbi9uZXdsaWIvbGliYy9pbmNsdWRlL3N5cy9fdHlwZXMuaCIg MiAzIDQKCgp0eXBlZGVmIGxvbmcgX19ibGtjbnRfdDsKCgoKdHlwZWRlZiBsb25nIF9fYmxr c2l6ZV90OwoKCgp0eXBlZGVmIF9fdWludDY0X3QgX19mc2Jsa2NudF90OwoKCgp0eXBlZGVm IF9fdWludDMyX3QgX19mc2ZpbGNudF90OwoKCgp0eXBlZGVmIGxvbmcgX29mZl90OwoKCgoK CnR5cGVkZWYgaW50IF9fcGlkX3Q7CgoKCnR5cGVkZWYgc2hvcnQgX19kZXZfdDsKCgoKdHlw ZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3VpZF90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQg X19naWRfdDsKCgoKdHlwZWRlZiBfX3VpbnQzMl90IF9faWRfdDsKCgoKCgoKCnR5cGVkZWYg dW5zaWduZWQgc2hvcnQgX19pbm9fdDsKIyA5MCAiL2hvbWUvamxhdy9qZW5raW5zL3dvcmtz cGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dpbi9uZXdsaWIvbGliYy9pbmNsdWRlL3N5 cy9fdHlwZXMuaCIgMyA0CnR5cGVkZWYgX191aW50MzJfdCBfX21vZGVfdDsKCgoKCgpfX2V4 dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIF9vZmY2NF90OwoKCgoKCnR5cGVkZWYgX29m Zl90IF9fb2ZmX3Q7CgoKdHlwZWRlZiBfb2ZmNjRfdCBfX2xvZmZfdDsKCgp0eXBlZGVmIGxv bmcgX19rZXlfdDsKCgoKCgoKCnR5cGVkZWYgbG9uZyBfZnBvc190OwojIDEzMSAiL2hvbWUv amxhdy9qZW5raW5zL3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dpbi9uZXds aWIvbGliYy9pbmNsdWRlL3N5cy9fdHlwZXMuaCIgMyA0CnR5cGVkZWYgbG9uZyB1bnNpZ25l ZCBpbnQgX19zaXplX3Q7CiMgMTQ3ICIvaG9tZS9qbGF3L2plbmtpbnMvd29ya3NwYWNlL2Vw aXBoYW55LWVsZi9uZXdsaWItY3lnd2luL25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL190eXBl cy5oIiAzIDQKdHlwZWRlZiBsb25nIHNpZ25lZCBpbnQgX3NzaXplX3Q7CiMgMTU4ICIvaG9t ZS9qbGF3L2plbmtpbnMvd29ya3NwYWNlL2VwaXBoYW55LWVsZi9uZXdsaWItY3lnd2luL25l d2xpYi9saWJjL2luY2x1ZGUvc3lzL190eXBlcy5oIiAzIDQKdHlwZWRlZiBfc3NpemVfdCBf X3NzaXplX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1bmlvbgog IHsKICAgIHdpbnRfdCBfX3djaDsKICAgIHVuc2lnbmVkIGNoYXIgX193Y2hiWzRdOwogIH0g X192YWx1ZTsKfSBfbWJzdGF0ZV90OwoKCgoKdHlwZWRlZiB2b2lkICpfaWNvbnZfdDsKCgoK CgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fY2xvY2tfdDsKCgoKCgoKdHlwZWRlZiBfX2lu dF9sZWFzdDY0X3QgX190aW1lX3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fY2xv Y2tpZF90OwoKCnR5cGVkZWYgbG9uZyBfX2RhZGRyX3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQg bG9uZyBfX3RpbWVyX3Q7CgoKdHlwZWRlZiBfX3VpbnQ4X3QgX19zYV9mYW1pbHlfdDsKCgoK dHlwZWRlZiBfX3VpbnQzMl90IF9fc29ja2xlbl90OwoKCnR5cGVkZWYgaW50IF9fbmxfaXRl bTsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBfX3N1 c2Vjb25kc190Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191c2Vjb25kc190OwoKCgoKCgoK dHlwZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBfX3ZhX2xpc3Q7CiMgMTcgIi9ob21lL2psYXcv amVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4vbmV3bGliL2xp YmMvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMiAzIDQKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBs b25nIF9fVUxvbmc7CiMgMzUgIi9ob21lL2psYXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhh bnktZWxmL25ld2xpYi1jeWd3aW4vbmV3bGliL2xpYmMvaW5jbHVkZS9zeXMvcmVlbnQuaCIg MyA0CiMgMSAiL2hvbWUvamxhdy9qZW5raW5zL3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3 bGliLWN5Z3dpbi9uZXdsaWIvbGliYy9pbmNsdWRlL3N5cy9sb2NrLmgiIDEgMyA0CiMgMTEg Ii9ob21lL2psYXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3 aW4vbmV3bGliL2xpYmMvaW5jbHVkZS9zeXMvbG9jay5oIiAzIDQKdHlwZWRlZiBpbnQgX0xP Q0tfVDsKdHlwZWRlZiBpbnQgX0xPQ0tfUkVDVVJTSVZFX1Q7CiMgMzYgIi9ob21lL2psYXcv amVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4vbmV3bGliL2xp YmMvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMiAzIDQKdHlwZWRlZiBfTE9DS19SRUNVUlNJVkVf VCBfZmxvY2tfdDsKCgoKCgoKCnN0cnVjdCBfcmVlbnQ7CgpzdHJ1Y3QgX19sb2NhbGVfdDsK CgoKCgoKc3RydWN0IF9CaWdpbnQKewogIHN0cnVjdCBfQmlnaW50ICpfbmV4dDsKICBpbnQg X2ssIF9tYXh3ZHMsIF9zaWduLCBfd2RzOwogIF9fVUxvbmcgX3hbMV07Cn07CgoKc3RydWN0 IF9fdG0KewogIGludCBfX3RtX3NlYzsKICBpbnQgX190bV9taW47CiAgaW50IF9fdG1faG91 cjsKICBpbnQgX190bV9tZGF5OwogIGludCBfX3RtX21vbjsKICBpbnQgX190bV95ZWFyOwog IGludCBfX3RtX3dkYXk7CiAgaW50IF9fdG1feWRheTsKICBpbnQgX190bV9pc2RzdDsKfTsK CgoKCgoKCnN0cnVjdCBfb25fZXhpdF9hcmdzIHsKIHZvaWQgKiBfZm5hcmdzWzMyXTsKIHZv aWQgKiBfZHNvX2hhbmRsZVszMl07CgogX19VTG9uZyBfZm50eXBlczsKCgogX19VTG9uZyBf aXNfY3hhOwp9OwojIDk5ICIvaG9tZS9qbGF3L2plbmtpbnMvd29ya3NwYWNlL2VwaXBoYW55 LWVsZi9uZXdsaWItY3lnd2luL25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL3JlZW50LmgiIDMg NApzdHJ1Y3QgX2F0ZXhpdCB7CiBzdHJ1Y3QgX2F0ZXhpdCAqX25leHQ7CiBpbnQgX2luZDsK CiB2b2lkICgqX2Zuc1szMl0pKHZvaWQpOwogICAgICAgIHN0cnVjdCBfb25fZXhpdF9hcmdz IF9vbl9leGl0X2FyZ3M7Cn07CiMgMTE2ICIvaG9tZS9qbGF3L2plbmtpbnMvd29ya3NwYWNl L2VwaXBoYW55LWVsZi9uZXdsaWItY3lnd2luL25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL3Jl ZW50LmgiIDMgNApzdHJ1Y3QgX19zYnVmIHsKIHVuc2lnbmVkIGNoYXIgKl9iYXNlOwogaW50 IF9zaXplOwp9OwojIDE1MyAiL2hvbWUvamxhdy9qZW5raW5zL3dvcmtzcGFjZS9lcGlwaGFu eS1lbGYvbmV3bGliLWN5Z3dpbi9uZXdsaWIvbGliYy9pbmNsdWRlL3N5cy9yZWVudC5oIiAz IDQKc3RydWN0IF9fc0ZJTEUgewogIHVuc2lnbmVkIGNoYXIgKl9wOwogIGludCBfcjsKICBp bnQgX3c7CiAgc2hvcnQgX2ZsYWdzOwogIHNob3J0IF9maWxlOwogIHN0cnVjdCBfX3NidWYg X2JmOwogIGludCBfbGJmc2l6ZTsKCgoKCgoKICB2b2lkICogX2Nvb2tpZTsKCiAgaW50ICgq X3JlYWQpIChzdHJ1Y3QgX3JlZW50ICosIHZvaWQgKiwKICAgICAgICBjaGFyICosIGludCk7 CiAgaW50ICgqX3dyaXRlKSAoc3RydWN0IF9yZWVudCAqLCB2b2lkICosCiAgICAgICAgIGNv bnN0IGNoYXIgKiwKICAgICAgICAgaW50KTsKICBfZnBvc190ICgqX3NlZWspIChzdHJ1Y3Qg X3JlZW50ICosIHZvaWQgKiwgX2Zwb3NfdCwgaW50KTsKICBpbnQgKCpfY2xvc2UpIChzdHJ1 Y3QgX3JlZW50ICosIHZvaWQgKik7CgoKICBzdHJ1Y3QgX19zYnVmIF91YjsKICB1bnNpZ25l ZCBjaGFyICpfdXA7CiAgaW50IF91cjsKCgogIHVuc2lnbmVkIGNoYXIgX3VidWZbM107CiAg dW5zaWduZWQgY2hhciBfbmJ1ZlsxXTsKCgogIHN0cnVjdCBfX3NidWYgX2xiOwoKCiAgaW50 IF9ibGtzaXplOwogIF9vZmZfdCBfb2Zmc2V0OwoKCiAgc3RydWN0IF9yZWVudCAqX2RhdGE7 CgoKCiAgX2Zsb2NrX3QgX2xvY2s7CgogIF9tYnN0YXRlX3QgX21ic3RhdGU7CiAgaW50IF9m bGFnczI7Cn07CiMgMjcwICIvaG9tZS9qbGF3L2plbmtpbnMvd29ya3NwYWNlL2VwaXBoYW55 LWVsZi9uZXdsaWItY3lnd2luL25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL3JlZW50LmgiIDMg NAp0eXBlZGVmIHN0cnVjdCBfX3NGSUxFIF9fRklMRTsKCgoKZXh0ZXJuIF9fRklMRSBfX3Nm WzNdOwoKc3RydWN0IF9nbHVlCnsKICBzdHJ1Y3QgX2dsdWUgKl9uZXh0OwogIGludCBfbmlv YnM7CiAgX19GSUxFICpfaW9iczsKfTsKCmV4dGVybiBzdHJ1Y3QgX2dsdWUgX19zZ2x1ZTsK IyAzMDYgIi9ob21lL2psYXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL25ld2xp Yi1jeWd3aW4vbmV3bGliL2xpYmMvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMyA0CnN0cnVjdCBf cmFuZDQ4IHsKICB1bnNpZ25lZCBzaG9ydCBfc2VlZFszXTsKICB1bnNpZ25lZCBzaG9ydCBf bXVsdFszXTsKICB1bnNpZ25lZCBzaG9ydCBfYWRkOwoKCgoKfTsKIyA1NzggIi9ob21lL2ps YXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4vbmV3bGli L2xpYmMvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMyA0CnN0cnVjdCBfcmVlbnQKewogIGludCBf ZXJybm87CgoKCgogIF9fRklMRSAqX3N0ZGluLCAqX3N0ZG91dCwgKl9zdGRlcnI7CgogIGlu dCBfaW5jOwogIGNoYXIgX2VtZXJnZW5jeVsyNV07CgoKCgogIHN0cnVjdCBfX2xvY2FsZV90 ICpfbG9jYWxlOwoKCgoKCiAgdm9pZCAoKl9fY2xlYW51cCkgKHN0cnVjdCBfcmVlbnQgKik7 CgoKICBzdHJ1Y3QgX0JpZ2ludCAqX3Jlc3VsdDsKICBpbnQgX3Jlc3VsdF9rOwogIHN0cnVj dCBfQmlnaW50ICpfcDVzOwogIHN0cnVjdCBfQmlnaW50ICoqX2ZyZWVsaXN0OwoKCiAgaW50 IF9jdnRsZW47CiAgY2hhciAqX2N2dGJ1ZjsKCiAgdW5pb24KICAgIHsKICAgICAgc3RydWN0 CiAgICAgICAgewoKCgogICAgICAgICAgY2hhciAqIF9zdHJ0b2tfbGFzdDsKICAgICAgICAg IGNoYXIgX2FzY3RpbWVfYnVmWzI2XTsKICAgICAgICAgIHN0cnVjdCBfX3RtIF9sb2NhbHRp bWVfYnVmOwogICAgICAgICAgaW50IF9nYW1tYV9zaWduZ2FtOwogICAgICAgICAgX19leHRl bnNpb25fXyB1bnNpZ25lZCBsb25nIGxvbmcgX3JhbmRfbmV4dDsKICAgICAgICAgIHN0cnVj dCBfcmFuZDQ4IF9yNDg7CiAgICAgICAgICBfbWJzdGF0ZV90IF9tYmxlbl9zdGF0ZTsKICAg ICAgICAgIF9tYnN0YXRlX3QgX21idG93Y19zdGF0ZTsKICAgICAgICAgIF9tYnN0YXRlX3Qg X3djdG9tYl9zdGF0ZTsKICAgICAgICAgIGNoYXIgX2w2NGFfYnVmWzhdOwogICAgICAgICAg Y2hhciBfc2lnbmFsX2J1ZlsyNF07CiAgICAgICAgICBpbnQgX2dldGRhdGVfZXJyOwogICAg ICAgICAgX21ic3RhdGVfdCBfbWJybGVuX3N0YXRlOwogICAgICAgICAgX21ic3RhdGVfdCBf bWJydG93Y19zdGF0ZTsKICAgICAgICAgIF9tYnN0YXRlX3QgX21ic3J0b3djc19zdGF0ZTsK ICAgICAgICAgIF9tYnN0YXRlX3QgX3djcnRvbWJfc3RhdGU7CiAgICAgICAgICBfbWJzdGF0 ZV90IF93Y3NydG9tYnNfc3RhdGU7CiAgIGludCBfaF9lcnJubzsKIyA2NDcgIi9ob21lL2ps YXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4vbmV3bGli L2xpYmMvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMyA0CiAgIGNoYXIgX2dldGxvY2FsZW5hbWVf bF9idWZbMzIgXTsKICAgICAgICB9IF9yZWVudDsKCgoKCgoKCiAgICB9IF9uZXc7CgoKCgoK CgogIHZvaWQgKCoqX3NpZ19mdW5jKShpbnQpOwp9OwojIDc5NyAiL2hvbWUvamxhdy9qZW5r aW5zL3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dpbi9uZXdsaWIvbGliYy9p bmNsdWRlL3N5cy9yZWVudC5oIiAzIDQKZXh0ZXJuIHN0cnVjdCBfcmVlbnQgKl9pbXB1cmVf cHRyIDsKCgoKCgpleHRlcm4gc3RydWN0IF9yZWVudCBfaW1wdXJlX2RhdGEgOwojIDkxNyAi L2hvbWUvamxhdy9qZW5raW5zL3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dp bi9uZXdsaWIvbGliYy9pbmNsdWRlL3N5cy9yZWVudC5oIiAzIDQKZXh0ZXJuIHN0cnVjdCBf YXRleGl0ICpfX2F0ZXhpdDsKZXh0ZXJuIHN0cnVjdCBfYXRleGl0IF9fYXRleGl0MDsKCmV4 dGVybiB2b2lkICgqX19zdGRpb19leGl0X2hhbmRsZXIpICh2b2lkKTsKCnZvaWQgX3JlY2xh aW1fcmVlbnQgKHN0cnVjdCBfcmVlbnQgKik7CgpleHRlcm4gaW50IF9md2Fsa19zZ2x1ZSAo c3RydWN0IF9yZWVudCAqLCBpbnQgKCopKHN0cnVjdCBfcmVlbnQgKiwgX19GSUxFICopLAog ICAgc3RydWN0IF9nbHVlICopOwojIDYgIi9ob21lL2psYXcvamVua2lucy93b3Jrc3BhY2Uv ZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4vbmV3bGliL2xpYmMvaW5jbHVkZS9tYXRoLmgi IDIgMyA0CgojIDEgIi9ob21lL2psYXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxm L25ld2xpYi1jeWd3aW4vbmV3bGliL2xpYmMvaW5jbHVkZS9tYWNoaW5lL2llZWVmcC5oIiAx IDMgNAojIDggIi9ob21lL2psYXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL25l d2xpYi1jeWd3aW4vbmV3bGliL2xpYmMvaW5jbHVkZS9tYXRoLmgiIDIgMyA0CiMgMSAiL2hv bWUvamxhdy9qZW5raW5zL3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dpbi9u ZXdsaWIvbGliYy9pbmNsdWRlL19hbnNpLmgiIDEgMyA0CiMgOSAiL2hvbWUvamxhdy9qZW5r aW5zL3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dpbi9uZXdsaWIvbGliYy9p bmNsdWRlL21hdGguaCIgMiAzIDQKCgojIDg2ICIvaG9tZS9qbGF3L2plbmtpbnMvd29ya3Nw YWNlL2VwaXBoYW55LWVsZi9uZXdsaWItY3lnd2luL25ld2xpYi9saWJjL2luY2x1ZGUvbWF0 aC5oIiAzIDQKZXh0ZXJuIGRvdWJsZSBhdGFuIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGNv cyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBzaW4gKGRvdWJsZSk7CmV4dGVybiBkb3VibGUg dGFuIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHRhbmggKGRvdWJsZSk7CmV4dGVybiBkb3Vi bGUgZnJleHAgKGRvdWJsZSwgaW50ICopOwpleHRlcm4gZG91YmxlIG1vZGYgKGRvdWJsZSwg ZG91YmxlICopOwpleHRlcm4gZG91YmxlIGNlaWwgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUg ZmFicyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBmbG9vciAoZG91YmxlKTsKCgoKCgoKZXh0 ZXJuIGRvdWJsZSBhY29zIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGFzaW4gKGRvdWJsZSk7 CmV4dGVybiBkb3VibGUgYXRhbjIgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBj b3NoIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHNpbmggKGRvdWJsZSk7CmV4dGVybiBkb3Vi bGUgZXhwIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGxkZXhwIChkb3VibGUsIGludCk7CmV4 dGVybiBkb3VibGUgbG9nIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGxvZzEwIChkb3VibGUp OwpleHRlcm4gZG91YmxlIHBvdyAoZG91YmxlLCBkb3VibGUpOwpleHRlcm4gZG91YmxlIHNx cnQgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZm1vZCAoZG91YmxlLCBkb3VibGUpOwoKCgoK ZXh0ZXJuIGludCBmaW5pdGUgKGRvdWJsZSk7CmV4dGVybiBpbnQgZmluaXRlZiAoZmxvYXQp OwpleHRlcm4gaW50IGZpbml0ZWwgKGxvbmcgZG91YmxlKTsKZXh0ZXJuIGludCBpc2luZmYg KGZsb2F0KTsKZXh0ZXJuIGludCBpc25hbmYgKGZsb2F0KTsKCgoKCgpleHRlcm4gaW50IGlz aW5mIChkb3VibGUpOwoKCgoKZXh0ZXJuIGludCBpc25hbiAoZG91YmxlKTsKIyAxNjAgIi9o b21lL2psYXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4v bmV3bGliL2xpYmMvaW5jbHVkZS9tYXRoLmgiIDMgNAogICAgdHlwZWRlZiBmbG9hdCBmbG9h dF90OwogICAgdHlwZWRlZiBkb3VibGUgZG91YmxlX3Q7CiMgMjIzICIvaG9tZS9qbGF3L2pl bmtpbnMvd29ya3NwYWNlL2VwaXBoYW55LWVsZi9uZXdsaWItY3lnd2luL25ld2xpYi9saWJj L2luY2x1ZGUvbWF0aC5oIiAzIDQKZXh0ZXJuIGludCBfX2lzaW5mZiAoZmxvYXQpOwpleHRl cm4gaW50IF9faXNpbmZkIChkb3VibGUpOwpleHRlcm4gaW50IF9faXNuYW5mIChmbG9hdCk7 CmV4dGVybiBpbnQgX19pc25hbmQgKGRvdWJsZSk7CmV4dGVybiBpbnQgX19mcGNsYXNzaWZ5 ZiAoZmxvYXQpOwpleHRlcm4gaW50IF9fZnBjbGFzc2lmeWQgKGRvdWJsZSk7CmV4dGVybiBp bnQgX19zaWduYml0ZiAoZmxvYXQpOwpleHRlcm4gaW50IF9fc2lnbmJpdGQgKGRvdWJsZSk7 CiMgMzE5ICIvaG9tZS9qbGF3L2plbmtpbnMvd29ya3NwYWNlL2VwaXBoYW55LWVsZi9uZXds aWItY3lnd2luL25ld2xpYi9saWJjL2luY2x1ZGUvbWF0aC5oIiAzIDQKZXh0ZXJuIGRvdWJs ZSBpbmZpbml0eSAodm9pZCk7CmV4dGVybiBkb3VibGUgbmFuIChjb25zdCBjaGFyICopOwpl eHRlcm4gZG91YmxlIGNvcHlzaWduIChkb3VibGUsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUg bG9nYiAoZG91YmxlKTsKZXh0ZXJuIGludCBpbG9nYiAoZG91YmxlKTsKCmV4dGVybiBkb3Vi bGUgYXNpbmggKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgY2JydCAoZG91YmxlKTsKZXh0ZXJu IGRvdWJsZSBuZXh0YWZ0ZXIgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSByaW50 IChkb3VibGUpOwpleHRlcm4gZG91YmxlIHNjYWxibiAoZG91YmxlLCBpbnQpOwoKZXh0ZXJu IGRvdWJsZSBleHAyIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHNjYWxibG4gKGRvdWJsZSwg bG9uZyBpbnQpOwpleHRlcm4gZG91YmxlIHRnYW1tYSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJs ZSBuZWFyYnlpbnQgKGRvdWJsZSk7CmV4dGVybiBsb25nIGludCBscmludCAoZG91YmxlKTsK ZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50IChkb3VibGUpOwpleHRlcm4gZG91YmxlIHJv dW5kIChkb3VibGUpOwpleHRlcm4gbG9uZyBpbnQgbHJvdW5kIChkb3VibGUpOwpleHRlcm4g bG9uZyBsb25nIGludCBsbHJvdW5kIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHRydW5jIChk b3VibGUpOwpleHRlcm4gZG91YmxlIHJlbXF1byAoZG91YmxlLCBkb3VibGUsIGludCAqKTsK ZXh0ZXJuIGRvdWJsZSBmZGltIChkb3VibGUsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZm1h eCAoZG91YmxlLCBkb3VibGUpOwpleHRlcm4gZG91YmxlIGZtaW4gKGRvdWJsZSwgZG91Ymxl KTsKZXh0ZXJuIGRvdWJsZSBmbWEgKGRvdWJsZSwgZG91YmxlLCBkb3VibGUpOwoKCmV4dGVy biBkb3VibGUgbG9nMXAgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZXhwbTEgKGRvdWJsZSk7 CgoKCmV4dGVybiBkb3VibGUgYWNvc2ggKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgYXRhbmgg KGRvdWJsZSk7CmV4dGVybiBkb3VibGUgcmVtYWluZGVyIChkb3VibGUsIGRvdWJsZSk7CmV4 dGVybiBkb3VibGUgZ2FtbWEgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgbGdhbW1hIChkb3Vi bGUpOwpleHRlcm4gZG91YmxlIGVyZiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBlcmZjIChk b3VibGUpOwpleHRlcm4gZG91YmxlIGxvZzIgKGRvdWJsZSk7CgoKCgoKZXh0ZXJuIGRvdWJs ZSBoeXBvdCAoZG91YmxlLCBkb3VibGUpOwoKCgoKCgpleHRlcm4gZmxvYXQgYXRhbmYgKGZs b2F0KTsKZXh0ZXJuIGZsb2F0IGNvc2YgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHNpbmYgKGZs b2F0KTsKZXh0ZXJuIGZsb2F0IHRhbmYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHRhbmhmIChm bG9hdCk7CmV4dGVybiBmbG9hdCBmcmV4cGYgKGZsb2F0LCBpbnQgKik7CmV4dGVybiBmbG9h dCBtb2RmZiAoZmxvYXQsIGZsb2F0ICopOwpleHRlcm4gZmxvYXQgY2VpbGYgKGZsb2F0KTsK ZXh0ZXJuIGZsb2F0IGZhYnNmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBmbG9vcmYgKGZsb2F0 KTsKCgpleHRlcm4gZmxvYXQgYWNvc2YgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IGFzaW5mIChm bG9hdCk7CmV4dGVybiBmbG9hdCBhdGFuMmYgKGZsb2F0LCBmbG9hdCk7CmV4dGVybiBmbG9h dCBjb3NoZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgc2luaGYgKGZsb2F0KTsKZXh0ZXJuIGZs b2F0IGV4cGYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IGxkZXhwZiAoZmxvYXQsIGludCk7CmV4 dGVybiBmbG9hdCBsb2dmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBsb2cxMGYgKGZsb2F0KTsK ZXh0ZXJuIGZsb2F0IHBvd2YgKGZsb2F0LCBmbG9hdCk7CmV4dGVybiBmbG9hdCBzcXJ0ZiAo ZmxvYXQpOwpleHRlcm4gZmxvYXQgZm1vZGYgKGZsb2F0LCBmbG9hdCk7CgoKCgpleHRlcm4g ZmxvYXQgZXhwMmYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHNjYWxibG5mIChmbG9hdCwgbG9u ZyBpbnQpOwpleHRlcm4gZmxvYXQgdGdhbW1hZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgbmVh cmJ5aW50ZiAoZmxvYXQpOwpleHRlcm4gbG9uZyBpbnQgbHJpbnRmIChmbG9hdCk7CmV4dGVy biBsb25nIGxvbmcgaW50IGxscmludGYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHJvdW5kZiAo ZmxvYXQpOwpleHRlcm4gbG9uZyBpbnQgbHJvdW5kZiAoZmxvYXQpOwpleHRlcm4gbG9uZyBs b25nIGludCBsbHJvdW5kZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgdHJ1bmNmIChmbG9hdCk7 CmV4dGVybiBmbG9hdCByZW1xdW9mIChmbG9hdCwgZmxvYXQsIGludCAqKTsKZXh0ZXJuIGZs b2F0IGZkaW1mIChmbG9hdCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgZm1heGYgKGZsb2F0LCBm bG9hdCk7CmV4dGVybiBmbG9hdCBmbWluZiAoZmxvYXQsIGZsb2F0KTsKZXh0ZXJuIGZsb2F0 IGZtYWYgKGZsb2F0LCBmbG9hdCwgZmxvYXQpOwoKZXh0ZXJuIGZsb2F0IGluZmluaXR5ZiAo dm9pZCk7CmV4dGVybiBmbG9hdCBuYW5mIChjb25zdCBjaGFyICopOwpleHRlcm4gZmxvYXQg Y29weXNpZ25mIChmbG9hdCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgbG9nYmYgKGZsb2F0KTsK ZXh0ZXJuIGludCBpbG9nYmYgKGZsb2F0KTsKCmV4dGVybiBmbG9hdCBhc2luaGYgKGZsb2F0 KTsKZXh0ZXJuIGZsb2F0IGNicnRmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBuZXh0YWZ0ZXJm IChmbG9hdCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgcmludGYgKGZsb2F0KTsKZXh0ZXJuIGZs b2F0IHNjYWxibmYgKGZsb2F0LCBpbnQpOwpleHRlcm4gZmxvYXQgbG9nMXBmIChmbG9hdCk7 CmV4dGVybiBmbG9hdCBleHBtMWYgKGZsb2F0KTsKCgpleHRlcm4gZmxvYXQgYWNvc2hmIChm bG9hdCk7CmV4dGVybiBmbG9hdCBhdGFuaGYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHJlbWFp bmRlcmYgKGZsb2F0LCBmbG9hdCk7CmV4dGVybiBmbG9hdCBnYW1tYWYgKGZsb2F0KTsKZXh0 ZXJuIGZsb2F0IGxnYW1tYWYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IGVyZmYgKGZsb2F0KTsK ZXh0ZXJuIGZsb2F0IGVyZmNmIChmbG9hdCk7CmV4dGVybiBmbG9hdCBsb2cyZiAoZmxvYXQp OwpleHRlcm4gZmxvYXQgaHlwb3RmIChmbG9hdCwgZmxvYXQpOwojIDQ1MyAiL2hvbWUvamxh dy9qZW5raW5zL3dvcmtzcGFjZS9lcGlwaGFueS1lbGYvbmV3bGliLWN5Z3dpbi9uZXdsaWIv bGliYy9pbmNsdWRlL21hdGguaCIgMyA0CmV4dGVybiBsb25nIGRvdWJsZSBhdGFubCAobG9u ZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgY29zbCAobG9uZyBkb3VibGUpOwpleHRl cm4gbG9uZyBkb3VibGUgc2lubCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUg dGFubCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgdGFuaGwgKGxvbmcgZG91 YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGZyZXhwbCAobG9uZyBkb3VibGUsIGludCAqKTsK ZXh0ZXJuIGxvbmcgZG91YmxlIG1vZGZsIChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUgKik7 CmV4dGVybiBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBk b3VibGUgZmFic2wgKGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGZsb29ybCAo bG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgbG9nMXBsIChsb25nIGRvdWJsZSk7 CmV4dGVybiBsb25nIGRvdWJsZSBleHBtMWwgKGxvbmcgZG91YmxlKTsKCgoKCmV4dGVybiBs b25nIGRvdWJsZSBhY29zbCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgYXNp bmwgKGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW4ybCAobG9uZyBkb3Vi bGUsIGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGNvc2hsIChsb25nIGRvdWJs ZSk7CmV4dGVybiBsb25nIGRvdWJsZSBzaW5obCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9u ZyBkb3VibGUgZXhwbCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgbGRleHBs IChsb25nIGRvdWJsZSwgaW50KTsKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZ2wgKGxvbmcgZG91 YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzEwbCAobG9uZyBkb3VibGUpOwpleHRlcm4g bG9uZyBkb3VibGUgcG93bCAobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxv bmcgZG91YmxlIHNxcnRsIChsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSBmbW9k bCAobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGh5cG90 bCAobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgY29w eXNpZ25sIChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUg bmFubCAoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBpbG9nYmwgKGxvbmcgZG91YmxlKTsK ZXh0ZXJuIGxvbmcgZG91YmxlIGFzaW5obCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBk b3VibGUgY2JydGwgKGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIG5leHRhZnRl cmwgKGxvbmcgZG91YmxlLCBsb25nIGRvdWJsZSk7CmV4dGVybiBmbG9hdCBuZXh0dG93YXJk ZiAoZmxvYXQsIGxvbmcgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBuZXh0dG93YXJkIChkb3Vi bGUsIGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIG5leHR0b3dhcmRsIChsb25n IGRvdWJsZSwgbG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgbG9nYmwgKGxvbmcg ZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzJsIChsb25nIGRvdWJsZSk7CmV4dGVy biBsb25nIGRvdWJsZSByaW50bCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUg c2NhbGJubCAobG9uZyBkb3VibGUsIGludCk7CmV4dGVybiBsb25nIGRvdWJsZSBleHAybCAo bG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJsbmwgKGxvbmcgZG91Ymxl LCBsb25nKTsKZXh0ZXJuIGxvbmcgZG91YmxlIHRnYW1tYWwgKGxvbmcgZG91YmxlKTsKZXh0 ZXJuIGxvbmcgZG91YmxlIG5lYXJieWludGwgKGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcg aW50IGxyaW50bCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBsb25nIGludCBsbHJpbnRs IChsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSByb3VuZGwgKGxvbmcgZG91Ymxl KTsKZXh0ZXJuIGxvbmcgbHJvdW5kbCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBsb25n IGludCBsbHJvdW5kbCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgdHJ1bmNs IChsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSByZW1xdW9sIChsb25nIGRvdWJs ZSwgbG9uZyBkb3VibGUsIGludCAqKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGZkaW1sIChsb25n IGRvdWJsZSwgbG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgZm1heGwgKGxvbmcg ZG91YmxlLCBsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSBmbWlubCAobG9uZyBk b3VibGUsIGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGZtYWwgKGxvbmcgZG91 YmxlLCBsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGFj b3NobCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgYXRhbmhsIChsb25nIGRv dWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSByZW1haW5kZXJsIChsb25nIGRvdWJsZSwgbG9u ZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgbGdhbW1hbCAobG9uZyBkb3VibGUpOwpl eHRlcm4gbG9uZyBkb3VibGUgZXJmbCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3Vi bGUgZXJmY2wgKGxvbmcgZG91YmxlKTsKIyA1MzUgIi9ob21lL2psYXcvamVua2lucy93b3Jr c3BhY2UvZXBpcGhhbnktZWxmL25ld2xpYi1jeWd3aW4vbmV3bGliL2xpYmMvaW5jbHVkZS9t YXRoLmgiIDMgNApleHRlcm4gZG91YmxlIGRyZW0gKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJu IGZsb2F0IGRyZW1mIChmbG9hdCwgZmxvYXQpOwoKCgpleHRlcm4gZG91YmxlIGdhbW1hX3Ig KGRvdWJsZSwgaW50ICopOwpleHRlcm4gZG91YmxlIGxnYW1tYV9yIChkb3VibGUsIGludCAq KTsKZXh0ZXJuIGZsb2F0IGdhbW1hZl9yIChmbG9hdCwgaW50ICopOwpleHRlcm4gZmxvYXQg bGdhbW1hZl9yIChmbG9hdCwgaW50ICopOwoKCgpleHRlcm4gZG91YmxlIHkwIChkb3VibGUp OwpleHRlcm4gZG91YmxlIHkxIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHluIChpbnQsIGRv dWJsZSk7CmV4dGVybiBkb3VibGUgajAgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgajEgKGRv dWJsZSk7CmV4dGVybiBkb3VibGUgam4gKGludCwgZG91YmxlKTsKCgoKZXh0ZXJuIGZsb2F0 IHkwZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgeTFmIChmbG9hdCk7CmV4dGVybiBmbG9hdCB5 bmYgKGludCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgajBmIChmbG9hdCk7CmV4dGVybiBmbG9h dCBqMWYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IGpuZiAoaW50LCBmbG9hdCk7CiMgNTk3ICIv aG9tZS9qbGF3L2plbmtpbnMvd29ya3NwYWNlL2VwaXBoYW55LWVsZi9uZXdsaWItY3lnd2lu L25ld2xpYi9saWJjL2luY2x1ZGUvbWF0aC5oIiAzIDQKZXh0ZXJuIGludCAqX19zaWduZ2Ft ICh2b2lkKTsKIyA2MzkgIi9ob21lL2psYXcvamVua2lucy93b3Jrc3BhY2UvZXBpcGhhbnkt ZWxmL25ld2xpYi1jeWd3aW4vbmV3bGliL2xpYmMvaW5jbHVkZS9tYXRoLmgiIDMgNAoKIyA3 OSAiLi4vLi4vLi4vLi4vL25ld2xpYi1jeWd3aW4vbmV3bGliL2xpYm0vY29tcGxleC9jYWNv cy5jIiAyCgoKIyA4MCAiLi4vLi4vLi4vLi4vL25ld2xpYi1jeWd3aW4vbmV3bGliL2xpYm0v Y29tcGxleC9jYWNvcy5jIgpkb3VibGUgCiMgODAgIi4uLy4uLy4uLy4uLy9uZXdsaWItY3ln d2luL25ld2xpYi9saWJtL2NvbXBsZXgvY2Fjb3MuYyIgMyA0CiAgICAgIF9Db21wbGV4Cgoj IDgxICIuLi8uLi8uLi8uLi8vbmV3bGliLWN5Z3dpbi9uZXdsaWIvbGlibS9jb21wbGV4L2Nh Y29zLmMiCmNhY29zKGRvdWJsZSAKIyA4MSAiLi4vLi4vLi4vLi4vL25ld2xpYi1jeWd3aW4v bmV3bGliL2xpYm0vY29tcGxleC9jYWNvcy5jIiAzIDQKICAgICAgICAgICAgX0NvbXBsZXgg CiMgODEgIi4uLy4uLy4uLy4uLy9uZXdsaWItY3lnd2luL25ld2xpYi9saWJtL2NvbXBsZXgv Y2Fjb3MuYyIKICAgICAgICAgICAgICAgICAgICB6KQp7CiBkb3VibGUgCiMgODMgIi4uLy4u Ly4uLy4uLy9uZXdsaWItY3lnd2luL25ld2xpYi9saWJtL2NvbXBsZXgvY2Fjb3MuYyIgMyA0 CiAgICAgICBfQ29tcGxleCAKIyA4MyAiLi4vLi4vLi4vLi4vL25ld2xpYi1jeWd3aW4vbmV3 bGliL2xpYm0vY29tcGxleC9jYWNvcy5jIgogICAgICAgICAgICAgICB3OwojIDkyICIuLi8u Li8uLi8uLi8vbmV3bGliLWN5Z3dpbi9uZXdsaWIvbGlibS9jb21wbGV4L2NhY29zLmMiCiBk b3VibGUgCiMgOTIgIi4uLy4uLy4uLy4uLy9uZXdsaWItY3lnd2luL25ld2xpYi9saWJtL2Nv bXBsZXgvY2Fjb3MuYyIgMyA0CiAgICAgICBfQ29tcGxleCAKIyA5MiAiLi4vLi4vLi4vLi4v L25ld2xpYi1jeWd3aW4vbmV3bGliL2xpYm0vY29tcGxleC9jYWNvcy5jIgogICAgICAgICAg ICAgICB0bXAwLCB0bXAxOwoKIHRtcDAgPSBjYXNpbih6KTsKIHRtcDEgPSAKIyA5NSAiLi4v Li4vLi4vLi4vL25ld2xpYi1jeWd3aW4vbmV3bGliL2xpYm0vY29tcGxleC9jYWNvcy5jIiAz IDQKICAgICAgIDEuNTcwNzk2MzI2Nzk0ODk2NjE5MjMgCiMgOTUgIi4uLy4uLy4uLy4uLy9u ZXdsaWItY3lnd2luL25ld2xpYi9saWJtL2NvbXBsZXgvY2Fjb3MuYyIKICAgICAgICAgICAg ICAtIGNyZWFsKHRtcDApOwogdyA9IHRtcDEgLSAoY2ltYWcodG1wMCkgKiAKIyA5NiAiLi4v Li4vLi4vLi4vL25ld2xpYi1jeWd3aW4vbmV3bGliL2xpYm0vY29tcGxleC9jYWNvcy5jIiAz IDQKICAgICAgICAgICAgICAgICAgICAgICAgICAxLjBmaQojIDk2ICIuLi8uLi8uLi8uLi8v bmV3bGliLWN5Z3dpbi9uZXdsaWIvbGlibS9jb21wbGV4L2NhY29zLmMiCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICk7CgogcmV0dXJuIHc7Cn0K --------------aNZ4lSwm3OQpcl5Zh3mvhlTI--