From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id 960AE385800C for ; Sun, 25 Jul 2021 15:59:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 960AE385800C Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 16PFvWU4013442; Sun, 25 Jul 2021 15:59:29 GMT Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by mx0b-00069f02.pphosted.com with ESMTP id 3a18nfr3dk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 25 Jul 2021 15:59:28 +0000 Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 16PFujmu084595; Sun, 25 Jul 2021 15:59:26 GMT Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2174.outbound.protection.outlook.com [104.47.58.174]) by userp3030.oracle.com with ESMTP id 3a07ytwa8a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 25 Jul 2021 15:59:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Rb84eyF8VnDIaiCZkQo4+tOcuKI9vJbMSTRahFHEBBqd8U+wQCXxPiD//GeSc/mnUziD4BLgS/oaFiGyYsvgw0Xtz74ZP5lf3fIol84T0QywlI+L1OXxus+Fe6+FxZj0EQdSY1UoaeZreHSxNPFferTry2IjxHiBc2uDbIEUvg+CV7AODGPSRMcAgEwLr8I4j9CgxVi8pT29sYxHalVHNIKA71pVV9KgMbDHb5KA+n9IqbIfrZMeDhyPEuF3wC1NNtHPYSse1sK22/jtMOoRvmSJ4MHOFI0176M4pVESOxTK7gFczURgTXtgWABBRzYHfCOOBl5g9upNPVpDKXwHsg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8vAOZDvq0wLvUGT2mAjoUQk++A/Rgb83EjUuaEF8mow=; b=cKzykl+Fk8uM6v9sYW9HN17pfb/BQ2mQE+RrkelqbS85sd6tIk44dTH7YuB8baPLg6CLuO3uLgUNE2NQTK+wDkUSwwpwbBoJoMhrvujRGZly+rq/e7HrjMunhFv5EsxdCBiFc510a3lEFzdB2uZxba1s30bV0Figtm6cob/0ENdVL6+ghYEJ7sLJU7WWukYsTBlsDMxtqJqW0lGrMXgs7ytSrs3TObsWwbHrBmboerYp5n5cGc5wmy/B+vsyOr54hLANHqF6Rsk2N5BCwDG4OlNpUbdM9Dxt6Da2bV3/xcAdh63AsyJfyE3l8kDiAWVi5AiGurRTPvMw2pPNgK20JQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none Received: from CH2PR10MB4344.namprd10.prod.outlook.com (2603:10b6:610:af::19) by CH0PR10MB4954.namprd10.prod.outlook.com (2603:10b6:610:ca::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.25; Sun, 25 Jul 2021 15:59:24 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::40d3:31ef:73a8:802]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::40d3:31ef:73a8:802%3]) with mapi id 15.20.4352.031; Sun, 25 Jul 2021 15:59:23 +0000 From: Qing Zhao To: Richard Biener , Richard Sandiford CC: Jakub Jelinek , kees cook , Nick Alcock via Gcc-patches Subject: [patch][version5]add -ftrivial-auto-var-init and variable attribute "uninitialized" to gcc Thread-Topic: [patch][version5]add -ftrivial-auto-var-init and variable attribute "uninitialized" to gcc Thread-Index: AQHXgW4JU89dJmoi/ESSZP/doYTLpQ== Date: Sun, 25 Jul 2021 15:59:23 +0000 Message-ID: <3F8F960D-FC12-4520-90B3-C03569FDF649@oracle.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3608.120.23.2.7) x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 98712aca-a640-40d1-7a93-08d94f852c1a x-ms-traffictypediagnostic: CH0PR10MB4954: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BDsfHREt9TXFc+0KISt24Im29Iavyt5BIOhmbM2pW5DphqSofBWUVyCR6rLc8aAzy17/svxfspHuxrTZavenajSz6TPpuZSSdnop5X19TB9oyfLWRe1cWWmAlMKbrKVc8GkrqAPahrSqzu6RrlgY3kOv9pcro3mx5RNq9ZiEnTIngTC9equNVVx5cSH3L+E/hyoxNIE/d4mbyQuAIeZlk2nTkeB6B3sovs2JhYT0f4znde58HfiBhFTqjfIGOkq6eY95/EurHUVHZhJz76ZADXmHEfdsesk3Q4hTMgez7szmoRsAnKirc6zSJ2ZrrbDV5LpXf6lr44jHDY9xNIKy64I8SIQM4Soojgd7YSYmEqWwjdP38eXqH+gJ3k6z+chxNy9dDkl1ObwICfwKfrcIxiN2RTDm0E8XDoBXvv38/bEffgCoUQWp38L5/Wov/H/l48eGYoImDeJNhglbvFt3Bo+XzJaLSmaQ68FGo9HVU7HN7iaRmBIoJIns+G89bNs4LWBHYZiYdolWS1lzHZCWU6dEqci/YeFc23nzehTq2bd64ehnU21UvKon99sZF/XoTJsuRn1fn62YZfaAlkpao8q+zdUOoghXvUJzXJ/0PmZ2GKQ3YaIsgk9+0jqt7gApDThn7KRedwBfPWXIbseeLJ5WGSwCk3xl2DR65ru1E9g7fk4MlHLshJK0JNTMoJNZ1NwgCyHXVNukwWoQnmIBbf2in/cOEqnSUxrfi9PDCpOtWORIjfNdTHRjbD+QCMru9FUPylNoAkMtSYWqKi7jca6LdfRU/iES5aa14Lm047zRPoay+Uqe+wK6K5BrDUaAyzsEkB+KQwtdma1C6IAM2fQMZ22idbMPfQm2zp0Rbms= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR10MB4344.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(44832011)(4743002)(8676002)(186003)(110136005)(54906003)(21615005)(2906002)(36756003)(6506007)(122000001)(38100700002)(6512007)(8936002)(2616005)(966005)(508600001)(86362001)(5660300002)(71200400001)(166002)(64756008)(66476007)(66556008)(66616009)(66946007)(76116006)(91956017)(66446008)(33656002)(4326008)(316002)(83380400001)(99936003)(6486002)(38070700004)(45980500001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?AtDF5jThbSh3Y0WHMgiHVFtLXXejlbwSVPiR/VT0j+9aYspgS78HgN1GCIXv?= =?us-ascii?Q?IluoKHDKyz3QzTEOdw3oxHtY41b/WiCQyXNAZeZiTDxmCrQaQ3LyFLDIsPhI?= =?us-ascii?Q?iBXVBZJwlALns378q3w8i0KrzNxGzOoTqZ4rJxQPIF7feqfw7ykX8QUZgW/6?= =?us-ascii?Q?Nfj9MoHGb7w5z9ia16AeOWeTIMWl9E32YXMO+mssDlKmj9/JeLiFzhiY5zMw?= =?us-ascii?Q?M4I8+rkwc1UhDmFXg4sGfYsMGPzTXOvOkUCGNjDxd6A2H1q6M2Gx1yn+brzr?= =?us-ascii?Q?4eWJ4lFUiLBNPf0PPa1vEsV8rpZ0A35j5UAa+SvczvcLC/V6K1cgrPDr5mkn?= =?us-ascii?Q?/feTTxoRrKkoeIJ6YffbKH0pzsm7PB0dcWc7EbkiSsD26vBEhuCC9SYQ88eK?= =?us-ascii?Q?URhlL0ZBn0xfINZlazbymIf+e0Dnxi6PkRYLMlxmLb6PT0LO7rF/nYAXsBUg?= =?us-ascii?Q?LY16sZaHb+tmnZRpGnRTqIT8N3SUIF1tfEwm3ye1dteULPoCfanZ4EeulkY/?= =?us-ascii?Q?suG5HW65FRF6xSZ+OA/AHVfYRJl3lO53QY6uFrxRJ7zPAj+bAw+LQwz/VcvX?= =?us-ascii?Q?ETkoaGMv6cdGufsb2HkzIcXELsCa8+Zur2AQ4VaHfMx5obnvEeEwXTADc2BZ?= =?us-ascii?Q?jTHmdY3B4Tki/Mf0y8x8WKQ04u1PCTVmKV/8sxSNIKS8Wr7DfRFlnns0ZA1g?= =?us-ascii?Q?srSzi4ycg4MFVratm844/pCiLu88iTgnivTbFaeI+cQ8uKbFbgakZthZu4VK?= =?us-ascii?Q?EdKzczpTujEFAxepR8N0TrEdJDdJfzmy4YtifH5m/SEFNaUYMjEIWdaGmv6e?= =?us-ascii?Q?RUxyR/Mn/fefxXCs23xm+/zsC+Cr+4EkvajhOVo/afbaoZ5TkRviS8W/40J6?= =?us-ascii?Q?sXvJIASLiBnpiVEx3Z3uEhkFyuPe4rrJ6FFI66Dl0KIY6/Z6bCIrZODffatm?= =?us-ascii?Q?L0jZZhJveJRTjMsW26XaU5rWiHiasHradxBvOyKdhPTohpG5yqRxXtuRbweS?= =?us-ascii?Q?6QYxXYl++JBljyeHp4m935/B4IcCKg7FVhP4EnQcjoKlcZH2ZWxnlrhFgquk?= =?us-ascii?Q?h1H7OIsk+BQG+IooGx3cYttvA85leTHUMNTFZlvElWDBvxTyN/AZpfPWlt0h?= =?us-ascii?Q?gDGmCwP5tXOyi2sdMk0ZUAjxjl83KW04N2lqNiN63gOsA2lInR7jEBn4pDp1?= =?us-ascii?Q?x0zTJ3iDI18ynQpwO3BYfpatyBF/nLB+RIeHG+ua+fa7w99vdzUaG90WH4P9?= =?us-ascii?Q?VYWcmemyOmZhurEwA+8pY8tdWE+hrklHETRfYjLBmilzMXkP69aZIJCc/zSe?= =?us-ascii?Q?WxbkQTGkL5qDnNEPsE/RDpDX3O0FEx28wXE7sks7iGppT/ARX7wgWcJEuiJj?= =?us-ascii?Q?C0Bb3PZXK7IFC/HzIYOQ8bQYKP4J?= x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_004_3F8F960DFC12452090B3C03569FDF649oraclecom_" MIME-Version: 1.0 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR10MB4344.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 98712aca-a640-40d1-7a93-08d94f852c1a X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jul 2021 15:59:23.8225 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: oAZw7BcbXtl7L9dxG0wigZI0HgkEuvAmYxZZSg/LFlPLfg0DtD5lAOj42A9rMRCiCOw27BJc0xY3661tVfUyzw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB4954 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10056 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 bulkscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxlogscore=999 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2107250116 X-Proofpoint-GUID: zc3D0b6XH5Q4sBl49EtPi-RLVvFw_DKp X-Proofpoint-ORIG-GUID: zc3D0b6XH5Q4sBl49EtPi-RLVvFw_DKp X-Spam-Status: No, score=-3.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, HTML_MESSAGE, KAM_SHORT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_BL, RCVD_IN_MSPIKE_L3, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jul 2021 15:59:41 -0000 --_004_3F8F960DFC12452090B3C03569FDF649oraclecom_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi, This is the 5th version of the patch for the new security feature for GCC. I have tested it with bootstrap on both x86 and aarch64, regression testing= on both x86 and aarch64. Also compile and run CPU2017, without any issue. Please take a look and let me know your comments and suggestions. thanks. Qing ******Compare with the 4th version, the following are the major changes: 1. delete the code for handling "grp_to_be_debug_replaced" since they are n= ot needed per Martin Jambor's suggestion. 2. for Pattern init, call __builtin_clear_padding after the call to .DEFERR= ED_INIT to initialize the paddings to zeroes; 3. for partially or fully initialized auto variables, call __builtin_clea= r_padding before the real initialization to initialize the paddings to zeroes. 4. Update the documentation with padding initialization to zeroes. 5. in order to reuse __builtin_clear_padding for auto init purpose, add one= more dummy argument to indiciate whether it's for auto init or not, if for auto init, do not emit error messages to avoid confusing users. 6. Add new testing cases to verify padding initializations. 7. rename some of the old testing cases to make the file name reflecting th= e testing purpose per Kees Cook's suggestions. ******Please see version 4 at: https://gcc.gnu.org/pipermail/gcc-patches/2021-July/574642.html ******ChangeLog is: gcc/ChangeLog: 2021-07-23 qing zhao * builtins.c (expand_builtin_memset): Make external visible. * builtins.h (expand_builtin_memset): Declare extern. * common.opt (ftrivial-auto-var-init=3D): New option. * doc/extend.texi: Document the uninitialized attribute. * doc/invoke.texi: Document -ftrivial-auto-var-init. * flag-types.h (enum auto_init_type): New enumerated type auto_init_type. * gimple-fold.c (clear_padding_type): Add one new parameter. (clear_padding_union): Likewise. (clear_padding_emit_loop): Likewise. (clear_type_padding_in_mask): Likewise. (gimple_fold_builtin_clear_padding): Handle this new parameter. * gimplify.c (gimple_add_init_for_auto_var): New function. (maybe_with_size_expr): Forword declaration. (build_deferred_init): New function. (gimple_add_padding_init_for_auto_var): New function. (gimplify_decl_expr): Add initialization to automatic variables per users' requests. (gimplify_call_expr): Add one new parameter for call to __builtin_clear_padding. (gimplify_modify_expr_rhs): Add padding initialization before gimplify_init_constructor. * internal-fn.c (INIT_PATTERN_VALUE): New macro. (expand_DEFERRED_INIT): New function. * internal-fn.def (DEFERRED_INIT): New internal function. * tree-cfg.c (verify_gimple_call): Verify calls to .DEFERRED_INIT. * tree-sra.c (generate_subtree_deferred_init): New function. (sra_modify_deferred_init): Likewise. (sra_modify_function_body): Handle calls to DEFERRED_INIT specially= . * tree-ssa-structalias.c (find_func_aliases_for_call): Likewise. * tree-ssa-uninit.c (warn_uninit): Handle calls to DEFERRED_INIT specially. (check_defs): Likewise. (warn_uninitialized_vars): Likewise. * tree-ssa.c (ssa_undefined_value_p): Likewise. gcc/c-family/ChangeLog: 2021-07-23 qing zhao * c-attribs.c (handle_uninitialized_attribute): New function. (c_common_attribute_table): Add "uninitialized" attribute. gcc/testsuite/ChangeLog: 2021-07-23 qing zhao * c-c++-common/auto-init-1.c: New test. * c-c++-common/auto-init-10.c: New test. * c-c++-common/auto-init-11.c: New test. * c-c++-common/auto-init-12.c: New test. * c-c++-common/auto-init-13.c: New test. * c-c++-common/auto-init-14.c: New test. * c-c++-common/auto-init-15.c: New test. * c-c++-common/auto-init-16.c: New test. * c-c++-common/auto-init-2.c: New test. * c-c++-common/auto-init-3.c: New test. * c-c++-common/auto-init-4.c: New test. * c-c++-common/auto-init-5.c: New test. * c-c++-common/auto-init-6.c: New test. * c-c++-common/auto-init-7.c: New test. * c-c++-common/auto-init-8.c: New test. * c-c++-common/auto-init-9.c: New test. * c-c++-common/auto-init-esra.c: New test. * c-c++-common/auto-init-padding-1.c: New test. * c-c++-common/auto-init-padding-2.c: New test. * c-c++-common/auto-init-padding-3.c: New test. * g++.dg/auto-init-uninit-pred-1_a.C: New test. * g++.dg/auto-init-uninit-pred-1_b.C: New test. * g++.dg/auto-init-uninit-pred-2_a.C: New test. * g++.dg/auto-init-uninit-pred-2_b.C: New test. * g++.dg/auto-init-uninit-pred-3_a.C: New test. * g++.dg/auto-init-uninit-pred-3_b.C: New test. * g++.dg/auto-init-uninit-pred-4.C: New test. * g++.dg/auto-init-uninit-pred-loop-1_a.cc: New test. * g++.dg/auto-init-uninit-pred-loop-1_b.cc: New test. * g++.dg/auto-init-uninit-pred-loop-1_c.cc: New test. * g++.dg/auto-init-uninit-pred-loop_1.cc: New test. * gcc.dg/auto-init-uninit-1.c: New test. * gcc.dg/auto-init-uninit-11.c: New test. * gcc.dg/auto-init-uninit-12.c: New test. * gcc.dg/auto-init-uninit-13.c: New test. * gcc.dg/auto-init-uninit-14.c: New test. * gcc.dg/auto-init-uninit-15.c: New test. * gcc.dg/auto-init-uninit-16.c: New test. * gcc.dg/auto-init-uninit-17.c: New test. * gcc.dg/auto-init-uninit-18.c: New test. * gcc.dg/auto-init-uninit-19.c: New test. * gcc.dg/auto-init-uninit-2.c: New test. * gcc.dg/auto-init-uninit-20.c: New test. * gcc.dg/auto-init-uninit-21.c: New test. * gcc.dg/auto-init-uninit-22.c: New test. * gcc.dg/auto-init-uninit-23.c: New test. * gcc.dg/auto-init-uninit-24.c: New test. * gcc.dg/auto-init-uninit-25.c: New test. * gcc.dg/auto-init-uninit-26.c: New test. * gcc.dg/auto-init-uninit-3.c: New test. * gcc.dg/auto-init-uninit-34.c: New test. * gcc.dg/auto-init-uninit-36.c: New test. * gcc.dg/auto-init-uninit-37.c: New test. * gcc.dg/auto-init-uninit-4.c: New test. * gcc.dg/auto-init-uninit-5.c: New test. * gcc.dg/auto-init-uninit-6.c: New test. * gcc.dg/auto-init-uninit-8.c: New test. * gcc.dg/auto-init-uninit-9.c: New test. * gcc.dg/auto-init-uninit-A.c: New test. * gcc.dg/auto-init-uninit-B.c: New test. * gcc.dg/auto-init-uninit-C.c: New test. * gcc.dg/auto-init-uninit-H.c: New test. * gcc.dg/auto-init-uninit-I.c: New test. * gcc.target/aarch64/auto-init-1.c: New test. * gcc.target/aarch64/auto-init-2.c: New test. * gcc.target/aarch64/auto-init-3.c: New test. * gcc.target/aarch64/auto-init-4.c: New test. * gcc.target/aarch64/auto-init-5.c: New test. * gcc.target/aarch64/auto-init-6.c: New test. * gcc.target/aarch64/auto-init-7.c: New test. * gcc.target/aarch64/auto-init-8.c: New test. * gcc.target/aarch64/auto-init-padding-1.c: New test. * gcc.target/aarch64/auto-init-padding-10.c: New test. * gcc.target/aarch64/auto-init-padding-11.c: New test. * gcc.target/aarch64/auto-init-padding-12.c: New test. * gcc.target/aarch64/auto-init-padding-2.c: New test. * gcc.target/aarch64/auto-init-padding-3.c: New test. * gcc.target/aarch64/auto-init-padding-4.c: New test. * gcc.target/aarch64/auto-init-padding-5.c: New test. * gcc.target/aarch64/auto-init-padding-6.c: New test. * gcc.target/aarch64/auto-init-padding-7.c: New test. * gcc.target/aarch64/auto-init-padding-8.c: New test. * gcc.target/aarch64/auto-init-padding-9.c: New test. * gcc.target/i386/auto-init-1.c: New test. * gcc.target/i386/auto-init-2.c: New test. * gcc.target/i386/auto-init-21.c: New test. * gcc.target/i386/auto-init-22.c: New test. * gcc.target/i386/auto-init-23.c: New test. * gcc.target/i386/auto-init-24.c: New test. * gcc.target/i386/auto-init-3.c: New test. * gcc.target/i386/auto-init-4.c: New test. * gcc.target/i386/auto-init-5.c: New test. * gcc.target/i386/auto-init-6.c: New test. * gcc.target/i386/auto-init-7.c: New test. * gcc.target/i386/auto-init-8.c: New test. * gcc.target/i386/auto-init-padding-1.c: New test. * gcc.target/i386/auto-init-padding-10.c: New test. * gcc.target/i386/auto-init-padding-11.c: New test. * gcc.target/i386/auto-init-padding-12.c: New test. * gcc.target/i386/auto-init-padding-2.c: New test. * gcc.target/i386/auto-init-padding-3.c: New test. * gcc.target/i386/auto-init-padding-4.c: New test. * gcc.target/i386/auto-init-padding-5.c: New test. * gcc.target/i386/auto-init-padding-6.c: New test. * gcc.target/i386/auto-init-padding-7.c: New test. * gcc.target/i386/auto-init-padding-8.c: New test. * gcc.target/i386/auto-init-padding-9.c: New test. ******The complete 5th version of the patch is: --_004_3F8F960DFC12452090B3C03569FDF649oraclecom_ Content-Type: application/octet-stream; name="0001-the-5th-version.patch" Content-Description: 0001-the-5th-version.patch Content-Disposition: attachment; filename="0001-the-5th-version.patch"; size=168188; creation-date="Sun, 25 Jul 2021 15:59:23 GMT"; modification-date="Sun, 25 Jul 2021 15:59:23 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSBmMmQxODIzMDFhOWU1Mjk0YmVlNTcyYjE1MGY3NjRhNDAyNjUyYWQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBRaW5nIFpoYW8gPHFpbmcuemhhb0BvcmFjbGUuY29tPgpEYXRl OiBUdWUsIDIwIEp1bCAyMDIxIDE5OjQzOjEzICswMDAwClN1YmplY3Q6IFtQQVRDSF0gdGhlIDV0 aCB2ZXJzaW9uCgotLS0KIGdjYy9idWlsdGlucy5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMyArLQogZ2NjL2J1aWx0aW5zLmggICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAxICsKIGdjYy9jLWZhbWlseS9jLWF0dHJpYnMuYyAgICAgICAgICAgICAgICAgICAg ICB8ICAxOSArKwogZ2NjL2NvbW1vbi5vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDE2ICsrCiBnY2MvZG9jL2V4dGVuZC50ZXhpICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMTYgKysKIGdjYy9kb2MvaW52b2tlLnRleGkgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICA0MSArKy0KIGdjYy9mbGFnLXR5cGVzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgNyArCiBnY2MvZ2ltcGxlLWZvbGQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg NDggKystLQogZ2NjL2dpbXBsaWZ5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg MTYyICsrKysrKysrKysrLQogZ2NjL2ludGVybmFsLWZuLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMTA4ICsrKysrKysrCiBnY2MvaW50ZXJuYWwtZm4uZGVmICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDUgKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0 LTEuYyAgICAgIHwgIDM5ICsrKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0 LTEwLmMgICAgIHwgIDE3ICsrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQt MTEuYyAgICAgfCAgMTQgKysKIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0x Mi5jICAgICB8ICAxNCArKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTEz LmMgICAgIHwgIDIzICsrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTQu YyAgICAgfCAgMjMgKysKIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xNS5j ICAgICB8ICAxMyArCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTYuYyAg ICAgfCAgMTMgKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTIuYyAgICAg IHwgIDM5ICsrKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTMuYyAgICAg IHwgIDE5ICsrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtNC5jICAgICAg fCAgMTkgKysKIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC01LmMgICAgICB8 ICAyMSArKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTYuYyAgICAgIHwg IDIxICsrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtNy5jICAgICAgfCAg MzUgKysrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtOC5jICAgICAgfCAg MzUgKysrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtOS5jICAgICAgfCAg MTcgKysKIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC1lc3JhLmMgICB8ICAz NSArKysKIC4uLi9jLWMrKy1jb21tb24vYXV0by1pbml0LXBhZGRpbmctMS5jICAgICAgICB8ICAy MyArKwogLi4uL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtcGFkZGluZy0yLmMgICAgICAgIHwgMTE0 ICsrKysrKysrKwogLi4uL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtcGFkZGluZy0zLmMgICAgICAg IHwgMTE0ICsrKysrKysrKwogLi4uL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtMV9hLkMg ICAgICAgIHwgIDYzICsrKysrCiAuLi4vZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC0xX2Iu QyAgICAgICAgfCAgNjMgKysrKysKIC4uLi9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTJf YS5DICAgICAgICB8ICA2MiArKysrKwogLi4uL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQt Ml9iLkMgICAgICAgIHwgIDYyICsrKysrCiAuLi4vZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJl ZC0zX2EuQyAgICAgICAgfCAgNzcgKysrKysrCiAuLi4vZysrLmRnL2F1dG8taW5pdC11bmluaXQt cHJlZC0zX2IuQyAgICAgICAgfCAgODcgKysrKysrKwogLi4uL2crKy5kZy9hdXRvLWluaXQtdW5p bml0LXByZWQtNC5DICAgICAgICAgIHwgIDE2ICsrCiAuLi4vZysrLmRnL2F1dG8taW5pdC11bmlu aXQtcHJlZC1sb29wLTFfYS5jYyAgfCAgMjEgKysKIC4uLi9nKysuZGcvYXV0by1pbml0LXVuaW5p dC1wcmVkLWxvb3AtMV9iLmNjICB8ICAyMSArKwogLi4uL2crKy5kZy9hdXRvLWluaXQtdW5pbml0 LXByZWQtbG9vcC0xX2MuY2MgIHwgIDIzICsrCiAuLi4vZysrLmRnL2F1dG8taW5pdC11bmluaXQt cHJlZC1sb29wXzEuY2MgICAgfCAgMjEgKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5p dC11bmluaXQtMS5jICAgICB8ICAzMCArKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5p dC11bmluaXQtMTEuYyAgICB8ICA0MiArKysrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWlu aXQtdW5pbml0LTEyLmMgICAgfCAgMTIgKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0 LXVuaW5pdC0xMy5jICAgIHwgIDEwICsKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11 bmluaXQtMTQuYyAgICB8ICAyMCArKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVu aW5pdC0xNS5jICAgIHwgIDI2ICsrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5p bml0LTE2LmMgICAgfCAgMjMgKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmlu aXQtMTcuYyAgICB8ICAxNSArKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5p dC0xOC5jICAgIHwgIDI0ICsrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0 LTE5LmMgICAgfCAgMjYgKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQt Mi5jICAgICB8ICA1MiArKysrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0 LTIwLmMgICAgfCAgMTggKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQt MjEuYyAgICB8ICAzMyArKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQt MjIuYyAgICB8ICA2OSArKysrKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5p dC0yMy5jICAgIHwgIDI3ICsrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0 LTI0LmMgICAgfCAgMTAgKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0y NS5jICAgIHwgIDIzICsrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTI2 LmMgICAgfCAgMjMgKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMy5j ICAgICB8ICAzMyArKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMzQu YyAgICB8ICA1OCArKysrKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0z Ni5jICAgIHwgMjM4ICsrKysrKysrKysrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0 by1pbml0LXVuaW5pdC0zNy5jICAgIHwgMTU0ICsrKysrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvYXV0by1pbml0LXVuaW5pdC00LmMgICAgIHwgIDUyICsrKysKIGdjYy90ZXN0c3VpdGUv Z2NjLmRnL2F1dG8taW5pdC11bmluaXQtNS5jICAgICB8ICAzOSArKysKIGdjYy90ZXN0c3VpdGUv Z2NjLmRnL2F1dG8taW5pdC11bmluaXQtNi5jICAgICB8ICA0NyArKysrCiBnY2MvdGVzdHN1aXRl L2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTguYyAgICAgfCAgMzIgKysrCiBnY2MvdGVzdHN1aXRl L2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTkuYyAgICAgfCAgNDIgKysrKwogZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1BLmMgICAgIHwgMTE3ICsrKysrKysrKwogZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1CLmMgICAgIHwgIDE1ICsrCiBnY2MvdGVz dHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LUMuYyAgICAgfCAgMjEgKysKIGdjYy90ZXN0 c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtSC5jICAgICB8ICAzMyArKysKIGdjYy90ZXN0 c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtSS5jICAgICB8ICAgOCArCiAuLi4vZ2NjLnRh cmdldC9hYXJjaDY0L2F1dG8taW5pdC0xLmMgICAgICAgICAgfCAgMzIgKysrCiAuLi4vZ2NjLnRh cmdldC9hYXJjaDY0L2F1dG8taW5pdC0yLmMgICAgICAgICAgfCAgMzUgKysrCiAuLi4vZ2NjLnRh cmdldC9hYXJjaDY0L2F1dG8taW5pdC0zLmMgICAgICAgICAgfCAgMTcgKysKIC4uLi9nY2MudGFy Z2V0L2FhcmNoNjQvYXV0by1pbml0LTQuYyAgICAgICAgICB8ICAxOSArKwogLi4uL2djYy50YXJn ZXQvYWFyY2g2NC9hdXRvLWluaXQtNS5jICAgICAgICAgIHwgIDE5ICsrCiAuLi4vZ2NjLnRhcmdl dC9hYXJjaDY0L2F1dG8taW5pdC02LmMgICAgICAgICAgfCAgMTggKysKIC4uLi9nY2MudGFyZ2V0 L2FhcmNoNjQvYXV0by1pbml0LTcuYyAgICAgICAgICB8ICAzMiArKysKIC4uLi9nY2MudGFyZ2V0 L2FhcmNoNjQvYXV0by1pbml0LTguYyAgICAgICAgICB8ICAzMiArKysKIC4uLi9nY2MudGFyZ2V0 L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMS5jICB8ICAxNyArKwogLi4uL2djYy50YXJnZXQv YWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy0xMC5jIHwgIDIyICsrCiAuLi4vZ2NjLnRhcmdldC9h YXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTExLmMgfCAgMjcgKysKIC4uLi9nY2MudGFyZ2V0L2Fh cmNoNjQvYXV0by1pbml0LXBhZGRpbmctMTIuYyB8ICAyNyArKwogLi4uL2djYy50YXJnZXQvYWFy Y2g2NC9hdXRvLWluaXQtcGFkZGluZy0yLmMgIHwgIDE4ICsrCiAuLi4vZ2NjLnRhcmdldC9hYXJj aDY0L2F1dG8taW5pdC1wYWRkaW5nLTMuYyAgfCAgMjcgKysKIC4uLi9nY2MudGFyZ2V0L2FhcmNo NjQvYXV0by1pbml0LXBhZGRpbmctNC5jICB8ICAyNyArKwogLi4uL2djYy50YXJnZXQvYWFyY2g2 NC9hdXRvLWluaXQtcGFkZGluZy01LmMgIHwgIDIyICsrCiAuLi4vZ2NjLnRhcmdldC9hYXJjaDY0 L2F1dG8taW5pdC1wYWRkaW5nLTYuYyAgfCAgMjAgKysKIC4uLi9nY2MudGFyZ2V0L2FhcmNoNjQv YXV0by1pbml0LXBhZGRpbmctNy5jICB8ICAyMCArKwogLi4uL2djYy50YXJnZXQvYWFyY2g2NC9h dXRvLWluaXQtcGFkZGluZy04LmMgIHwgIDIyICsrCiAuLi4vZ2NjLnRhcmdldC9hYXJjaDY0L2F1 dG8taW5pdC1wYWRkaW5nLTkuYyAgfCAgMjEgKysKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L2F1dG8taW5pdC0xLmMgICB8ICAzMiArKysKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L2F1dG8taW5pdC0yLmMgICB8ICAzNiArKysKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L2F1dG8taW5pdC0yMS5jICB8ICAxNCArKwogZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvYXV0by1pbml0LTIyLmMgIHwgIDE0ICsrCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9hdXRvLWluaXQtMjMuYyAgfCAgMTMgKwogZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv YXV0by1pbml0LTI0LmMgIHwgIDEzICsKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1 dG8taW5pdC0zLmMgICB8ICAxNyArKwogZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0 by1pbml0LTQuYyAgIHwgIDIwICsrCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRv LWluaXQtNS5jICAgfCAgMjAgKysKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8t aW5pdC02LmMgICB8ICAxOSArKwogZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1p bml0LTcuYyAgIHwgIDMyICsrKwogZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1p bml0LTguYyAgIHwgIDM1ICsrKwogLi4uL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGlu Zy0xLmMgICAgIHwgIDE5ICsrCiAuLi4vZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5n LTEwLmMgICAgfCAgMjEgKysKIC4uLi9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmct MTEuYyAgICB8ICAyNiArKwogLi4uL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy0x Mi5jICAgIHwgIDI2ICsrCiAuLi4vZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTIu YyAgICAgfCAgMTkgKysKIC4uLi9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctMy5j ICAgICB8ICAzMCArKysKIC4uLi9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctNC5j ICAgICB8ICAyOCArKysKIC4uLi9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctNS5j ICAgICB8ICAyMiArKwogLi4uL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy02LmMg ICAgIHwgIDIyICsrCiAuLi4vZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTcuYyAg ICAgfCAgMjIgKysKIC4uLi9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctOC5jICAg ICB8ICAyMiArKwogLi4uL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy05LmMgICAg IHwgIDIzICsrCiBnY2MvdHJlZS1jZmcuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgOTkgKysrKysrLS0KIGdjYy90cmVlLXNyYS5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDExMyArKysrKysrKy0KIGdjYy90cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jICAgICAgICAg ICAgICAgICAgICB8ICAgMyArCiBnY2MvdHJlZS1zc2EtdW5pbml0LmMgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgNDcgKysrKwogZ2NjL3RyZWUtc3NhLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDQwICsrKwogMTIzIGZpbGVzIGNoYW5nZWQsIDQyMjggaW5zZXJ0aW9ucygr KSwgNTUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vYXV0by1pbml0LTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL2F1dG8taW5pdC0xMC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTExLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xMy5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTE0LmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTUuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xNi5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0 LTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8t aW5pdC0zLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9h dXRvLWluaXQtNC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vYXV0by1pbml0LTUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2F1dG8taW5pdC02LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9hdXRvLWluaXQtNy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTguYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC05LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtZXNyYS5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LXBhZGRpbmctMS5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LXBhZGRp bmctMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0 by1pbml0LXBhZGRpbmctMy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTFfYS5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTFfYi5DCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTJfYS5DCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1w cmVkLTJfYi5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1p bml0LXVuaW5pdC1wcmVkLTNfYS5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTNfYi5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTQuQwogY3JlYXRlIG1vZGUg MTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC1sb29wLTFf YS5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11 bmluaXQtcHJlZC1sb29wLTFfYi5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv ZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC1sb29wLTFfYy5jYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC1sb29wXzEuY2MK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0 LTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11 bmluaXQtMTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8t aW5pdC11bmluaXQtMTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRn L2F1dG8taW5pdC11bmluaXQtMTMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv Z2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTYuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTcuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTguYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTku YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmlu aXQtMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0 LXVuaW5pdC0yMC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0 by1pbml0LXVuaW5pdC0yMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvYXV0by1pbml0LXVuaW5pdC0yMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yMy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yNC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yNS5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yNi5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0zLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTM0 LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5p bml0LTM2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWlu aXQtdW5pbml0LTM3LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9h dXRvLWluaXQtdW5pbml0LTQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2Nj LmRnL2F1dG8taW5pdC11bmluaXQtNS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC02LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTguYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtOS5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1BLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LUIuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtQy5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1I LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5p bml0LUkuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L2F1dG8taW5pdC0xLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC00LmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtNS5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0 by1pbml0LTYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h YXJjaDY0L2F1dG8taW5pdC03LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtOC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMS5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBh ZGRpbmctMTAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h YXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTExLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy0xMi5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBh ZGRpbmctMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvYXV0by1pbml0LXBhZGRpbmctMy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctNC5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRp bmctNS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvYXV0by1pbml0LXBhZGRpbmctNi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctNy5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmct OC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv YXV0by1pbml0LXBhZGRpbmctOS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC0yLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtMjEuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC0yMi5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTIz LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRv LWluaXQtMjQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L2F1dG8taW5pdC0zLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9hdXRvLWluaXQtNC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC02LmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtNy5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTguYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1w YWRkaW5nLTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L2F1dG8taW5pdC1wYWRkaW5nLTEwLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy0xMS5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctMTIu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8t aW5pdC1wYWRkaW5nLTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTQuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5n LTUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1 dG8taW5pdC1wYWRkaW5nLTYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTcuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTguYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRk aW5nLTkuYwoKZGlmZiAtLWdpdCBhL2djYy9idWlsdGlucy5jIGIvZ2NjL2J1aWx0aW5zLmMKaW5k ZXggMzlhYjEzOWI3ZTFjLi5hYThlM2U0OTllNDggMTAwNjQ0Ci0tLSBhL2djYy9idWlsdGlucy5j CisrKyBiL2djYy9idWlsdGlucy5jCkBAIC0xNDUsNyArMTQ1LDYgQEAgc3RhdGljIHJ0eCBleHBh bmRfYnVpbHRpbl9zdHBjcHkgKHRyZWUsIHJ0eCwgbWFjaGluZV9tb2RlKTsKIHN0YXRpYyBydHgg ZXhwYW5kX2J1aWx0aW5fc3RwbmNweSAodHJlZSwgcnR4KTsKIHN0YXRpYyBydHggZXhwYW5kX2J1 aWx0aW5fc3RybmNhdCAodHJlZSwgcnR4KTsKIHN0YXRpYyBydHggZXhwYW5kX2J1aWx0aW5fc3Ry bmNweSAodHJlZSwgcnR4KTsKLXN0YXRpYyBydHggZXhwYW5kX2J1aWx0aW5fbWVtc2V0ICh0cmVl LCBydHgsIG1hY2hpbmVfbW9kZSk7CiBzdGF0aWMgcnR4IGV4cGFuZF9idWlsdGluX21lbXNldF9h cmdzICh0cmVlLCB0cmVlLCB0cmVlLCBydHgsIG1hY2hpbmVfbW9kZSwgdHJlZSk7CiBzdGF0aWMg cnR4IGV4cGFuZF9idWlsdGluX2J6ZXJvICh0cmVlKTsKIHN0YXRpYyBydHggZXhwYW5kX2J1aWx0 aW5fc3RybGVuICh0cmVlLCBydHgsIG1hY2hpbmVfbW9kZSk7CkBAIC02NzU3LDcgKzY3NTYsNyBA QCBidWlsdGluX21lbXNldF9nZW5fc3RyICh2b2lkICpkYXRhLCB2b2lkICpwcmV2cCwKICAgIHRy eSB0byBnZXQgdGhlIHJlc3VsdCBpbiBUQVJHRVQsIGlmIGNvbnZlbmllbnQgKGFuZCBpbiBtb2Rl IE1PREUgaWYgdGhhdCdzCiAgICBjb252ZW5pZW50KS4gICovCiAKLXN0YXRpYyBydHgKK3J0eAog ZXhwYW5kX2J1aWx0aW5fbWVtc2V0ICh0cmVlIGV4cCwgcnR4IHRhcmdldCwgbWFjaGluZV9tb2Rl IG1vZGUpCiB7CiAgIGlmICghdmFsaWRhdGVfYXJnbGlzdCAoZXhwLApkaWZmIC0tZ2l0IGEvZ2Nj L2J1aWx0aW5zLmggYi9nY2MvYnVpbHRpbnMuaAppbmRleCBhNjRlY2UzZjFjZDkuLmIxOGZlMDc5 ZWMzYSAxMDA2NDQKLS0tIGEvZ2NjL2J1aWx0aW5zLmgKKysrIGIvZ2NjL2J1aWx0aW5zLmgKQEAg LTExNCw2ICsxMTQsNyBAQCBleHRlcm4gcnR4IGJ1aWx0aW5fc3RybmNweV9yZWFkX3N0ciAodm9p ZCAqLCB2b2lkICosIEhPU1RfV0lERV9JTlQsCiAJCQkJICAgICBzY2FsYXJfaW50X21vZGUpOwog ZXh0ZXJuIHJ0eCBidWlsdGluX21lbXNldF9yZWFkX3N0ciAodm9pZCAqLCB2b2lkICosIEhPU1Rf V0lERV9JTlQsCiAJCQkJICAgIHNjYWxhcl9pbnRfbW9kZSk7CitleHRlcm4gcnR4IGV4cGFuZF9i dWlsdGluX21lbXNldCAodHJlZSwgcnR4LCBtYWNoaW5lX21vZGUpOwogZXh0ZXJuIHJ0eCBleHBh bmRfYnVpbHRpbl9zYXZlcmVncyAodm9pZCk7CiBleHRlcm4gdHJlZSBzdGRfYnVpbGRfYnVpbHRp bl92YV9saXN0ICh2b2lkKTsKIGV4dGVybiB0cmVlIHN0ZF9mbl9hYmlfdmFfbGlzdCAodHJlZSk7 CmRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy1hdHRyaWJzLmMgYi9nY2MvYy1mYW1pbHkvYy1h dHRyaWJzLmMKaW5kZXggZTYwZmIzMWQ4YzhlLi45YjU5NDAwNmZlNDQgMTAwNjQ0Ci0tLSBhL2dj Yy9jLWZhbWlseS9jLWF0dHJpYnMuYworKysgYi9nY2MvYy1mYW1pbHkvYy1hdHRyaWJzLmMKQEAg LTgzLDYgKzgzLDcgQEAgc3RhdGljIHRyZWUgaGFuZGxlX2FydGlmaWNpYWxfYXR0cmlidXRlICh0 cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKTsKIHN0YXRpYyB0cmVlIGhhbmRsZV9mbGF0 dGVuX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKik7CiBzdGF0aWMg dHJlZSBoYW5kbGVfZXJyb3JfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9v bCAqKTsKIHN0YXRpYyB0cmVlIGhhbmRsZV91c2VkX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0 cmVlLCBpbnQsIGJvb2wgKik7CitzdGF0aWMgdHJlZSBoYW5kbGVfdW5pbml0aWFsaXplZF9hdHRy aWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopOwogc3RhdGljIHRyZWUgaGFu ZGxlX2V4dGVybmFsbHlfdmlzaWJsZV9hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50 LAogCQkJCQkJIGJvb2wgKik7CiBzdGF0aWMgdHJlZSBoYW5kbGVfbm9fcmVvcmRlcl9hdHRyaWJ1 dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LApAQCAtMzMxLDYgKzMzMiw4IEBAIGNvbnN0IHN0 cnVjdCBhdHRyaWJ1dGVfc3BlYyBjX2NvbW1vbl9hdHRyaWJ1dGVfdGFibGVbXSA9CiAJCQkgICAg ICBoYW5kbGVfdXNlZF9hdHRyaWJ1dGUsIE5VTEwgfSwKICAgeyAidW51c2VkIiwgICAgICAgICAg ICAgICAgIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAogCQkJICAgICAgaGFuZGxl X3VudXNlZF9hdHRyaWJ1dGUsIE5VTEwgfSwKKyAgeyAidW5pbml0aWFsaXplZCIsCSAgICAgIDAs IDAsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJCQkgICAgICBoYW5kbGVfdW5pbml0aWFs aXplZF9hdHRyaWJ1dGUsIE5VTEwgfSwKICAgeyAicmV0YWluIiwgICAgICAgICAgICAgICAgIDAs IDAsIHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLAogCQkJICAgICAgaGFuZGxlX3JldGFpbl9h dHRyaWJ1dGUsIE5VTEwgfSwKICAgeyAiZXh0ZXJuYWxseV92aXNpYmxlIiwgICAgIDAsIDAsIHRy dWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLApAQCAtMTYxMyw2ICsxNjE2LDIyIEBAIGhhbmRsZV9y ZXRhaW5fYXR0cmlidXRlICh0cmVlICpwbm9kZSwgdHJlZSBuYW1lLCB0cmVlIEFSR19VTlVTRUQg KGFyZ3MpLAogICByZXR1cm4gTlVMTF9UUkVFOwogfQogCisvKiBIYW5kbGUgYW4gInVuaW5pdGlh bGl6ZWQiIGF0dHJpYnV0ZTsgYXJndW1lbnRzIGFzIGluCisgICBzdHJ1Y3QgYXR0cmlidXRlX3Nw ZWMuaGFuZGxlci4gICovCisKK3N0YXRpYyB0cmVlCitoYW5kbGVfdW5pbml0aWFsaXplZF9hdHRy aWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwgdHJlZSBBUkdfVU5VU0VEIChhcmdzKSwKKwkJ CQlpbnQgQVJHX1VOVVNFRCAoZmxhZ3MpLCBib29sICpub19hZGRfYXR0cnMpCit7CisgIGlmICgh VkFSX1AgKCpub2RlKSkKKyAgICB7CisgICAgICB3YXJuaW5nIChPUFRfV2F0dHJpYnV0ZXMsICIl cUUgYXR0cmlidXRlIGlnbm9yZWQiLCBuYW1lKTsKKyAgICAgICpub19hZGRfYXR0cnMgPSB0cnVl OworICAgIH0KKworICByZXR1cm4gTlVMTF9UUkVFOworfQorCiAvKiBIYW5kbGUgYSAiZXh0ZXJu YWxseV92aXNpYmxlIiBhdHRyaWJ1dGU7IGFyZ3VtZW50cyBhcyBpbgogICAgc3RydWN0IGF0dHJp YnV0ZV9zcGVjLmhhbmRsZXIuICAqLwogCmRpZmYgLS1naXQgYS9nY2MvY29tbW9uLm9wdCBiL2dj Yy9jb21tb24ub3B0CmluZGV4IGQ5ZGExMTMxZWRhYS4uNWU0MjIxZThhZjY0IDEwMDY0NAotLS0g YS9nY2MvY29tbW9uLm9wdAorKysgYi9nY2MvY29tbW9uLm9wdApAQCAtMzA3OCw2ICszMDc4LDIy IEBAIGZ0cmVlLXNjZXYtY3Byb3AKIENvbW1vbiBWYXIoZmxhZ190cmVlX3NjZXZfY3Byb3ApIElu aXQoMSkgT3B0aW1pemF0aW9uCiBFbmFibGUgY29weSBwcm9wYWdhdGlvbiBvZiBzY2FsYXItZXZv bHV0aW9uIGluZm9ybWF0aW9uLgogCitmdHJpdmlhbC1hdXRvLXZhci1pbml0PQorQ29tbW9uIEpv aW5lZCBSZWplY3ROZWdhdGl2ZSBFbnVtKGF1dG9faW5pdF90eXBlKSBWYXIoZmxhZ19hdXRvX3Zh cl9pbml0KSBJbml0KEFVVE9fSU5JVF9VTklOSVRJQUxJWkVEKSBPcHRpbWl6YXRpb24KKy1mdHJp dmlhbC1hdXRvLXZhci1pbml0PVt1bmluaXRpYWxpemVkfHBhdHRlcm58emVyb10JQWRkIGluaXRp YWxpemF0aW9ucyB0byBhdXRvbWF0aWMgdmFyaWFibGVzLgorCitFbnVtCitOYW1lKGF1dG9faW5p dF90eXBlKSBUeXBlKGVudW0gYXV0b19pbml0X3R5cGUpIFVua25vd25FcnJvcih1bnJlY29nbml6 ZWQgYXV0b21hdGljIHZhcmlhYmxlIGluaXRpYWxpemF0aW9uIHR5cGUgJXFzKQorCitFbnVtVmFs dWUKK0VudW0oYXV0b19pbml0X3R5cGUpIFN0cmluZyh1bmluaXRpYWxpemVkKSBWYWx1ZShBVVRP X0lOSVRfVU5JTklUSUFMSVpFRCkKKworRW51bVZhbHVlCitFbnVtKGF1dG9faW5pdF90eXBlKSBT dHJpbmcocGF0dGVybikgVmFsdWUoQVVUT19JTklUX1BBVFRFUk4pCisKK0VudW1WYWx1ZQorRW51 bShhdXRvX2luaXRfdHlwZSkgU3RyaW5nKHplcm8pIFZhbHVlKEFVVE9fSU5JVF9aRVJPKQorCiA7 IC1mdmVyYm9zZS1hc20gY2F1c2VzIGV4dHJhIGNvbW1lbnRhcnkgaW5mb3JtYXRpb24gdG8gYmUg cHJvZHVjZWQgaW4KIDsgdGhlIGdlbmVyYXRlZCBhc3NlbWJseSBjb2RlICh0byBtYWtlIGl0IG1v cmUgcmVhZGFibGUpLiAgVGhpcyBvcHRpb24KIDsgaXMgZ2VuZXJhbGx5IG9ubHkgb2YgdXNlIHRv IHRob3NlIHdobyBhY3R1YWxseSBuZWVkIHRvIHJlYWQgdGhlCmRpZmYgLS1naXQgYS9nY2MvZG9j L2V4dGVuZC50ZXhpIGIvZ2NjL2RvYy9leHRlbmQudGV4aQppbmRleCBiODNjZDQ5MTliYjEuLjU0 ZWU5OWQyOTQwNyAxMDA2NDQKLS0tIGEvZ2NjL2RvYy9leHRlbmQudGV4aQorKysgYi9nY2MvZG9j L2V4dGVuZC50ZXhpCkBAIC03NTQwLDYgKzc1NDAsMjIgQEAgd2lsbCBiZSBwbGFjZWQgaW4gbmV3 LCB1bmlxdWUgc2VjdGlvbnMuCiAKIFRoaXMgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5IHJlcXVp cmVzIEJpbnV0aWxzIHZlcnNpb24gMi4zNiBvciBsYXRlci4KIAorQGl0ZW0gdW5pbml0aWFsaXpl ZAorQGNpbmRleCBAY29kZXt1bmluaXRpYWxpemVkfSB2YXJpYWJsZSBhdHRyaWJ1dGUKK1RoaXMg YXR0cmlidXRlLCBhdHRhY2hlZCB0byBhIHZhcmlhYmxlIHdpdGggYXV0b21hdGljIHN0b3JhZ2Us IG1lYW5zIHRoYXQKK3RoZSB2YXJpYWJsZSBzaG91bGQgbm90IGJlIGF1dG9tYXRpY2FsbHkgaW5p dGlhbGl6ZWQgYnkgdGhlIGNvbXBpbGVyIHdoZW4KK3RoZSBvcHRpb24gQGNvZGV7LWZ0cml2aWFs LWF1dG8tdmFyLWluaXR9IHByZXNlbnRzLgorCitXaXRoIHRoZSBvcHRpb24gQGNvZGV7LWZ0cml2 aWFsLWF1dG8tdmFyLWluaXR9LCBhbGwgdGhlIGF1dG9tYXRpYyB2YXJpYWJsZXMKK3RoYXQgZG8g bm90IGhhdmUgZXhwbGljaXQgaW5pdGlhbGl6ZXJzIHdpbGwgYmUgaW5pdGlhbGl6ZWQgYnkgdGhl IGNvbXBpbGVyLgorVGhlc2UgYWRkaXRpb25hbCBjb21waWxlciBpbml0aWFsaXphdGlvbnMgbWln aHQgaW5jdXIgcnVuLXRpbWUgb3ZlcmhlYWQsCitzb21ldGltZXMgZHJhbWF0aWNhbGx5LiAgVGhp cyBhdHRyaWJ1dGUgY2FuIGJlIHVzZWQgdG8gbWFyayBzb21lIHZhcmlhYmxlcwordG8gYmUgZXhj bHVkZWQgZnJvbSBzdWNoIGF1dG9tYXRpY2FsIGluaXRpYWxpemF0aW9uIGluIG9yZGVyIHRvIHJl ZHVjZSBydW50aW1lCitvdmVyaGVhZC4KKworVGhpcyBhdHRyaWJ1dGUgaGFzIG5vIGVmZmVjdCB3 aGVuIHRoZSBvcHRpb24gQGNvZGV7LWZ0cml2aWFsLWF1dG8tdmFyLWluaXR9Citkb2VzIG5vdCBw cmVzZW50LgorCiBAaXRlbSB2ZWN0b3Jfc2l6ZSAoQHZhcntieXRlc30pCiBAY2luZGV4IEBjb2Rl e3ZlY3Rvcl9zaXplfSB2YXJpYWJsZSBhdHRyaWJ1dGUKIFRoaXMgYXR0cmlidXRlIHNwZWNpZmll cyB0aGUgdmVjdG9yIHNpemUgZm9yIHRoZSB0eXBlIG9mIHRoZSBkZWNsYXJlZApkaWZmIC0tZ2l0 IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKaW5kZXggMzI2OTdl NjExN2MwLi4wOTJlNGE5MTc3NGYgMTAwNjQ0Ci0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKKysr IGIvZ2NjL2RvYy9pbnZva2UudGV4aQpAQCAtNTczLDkgKzU3Myw5IEBAIE9iamVjdGl2ZS1DIGFu ZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4KIC1mdHJlZS1wYXJhbGxlbGl6ZS1sb29wcz1AdmFy e259ICAtZnRyZWUtcHJlICAtZnRyZWUtcGFydGlhbC1wcmUgIC1mdHJlZS1wdGEgQGdvbAogLWZ0 cmVlLXJlYXNzb2MgIC1mdHJlZS1zY2V2LWNwcm9wICAtZnRyZWUtc2luayAgLWZ0cmVlLXNsc3Ig IC1mdHJlZS1zcmEgQGdvbAogLWZ0cmVlLXN3aXRjaC1jb252ZXJzaW9uICAtZnRyZWUtdGFpbC1t ZXJnZSBAZ29sCi0tZnRyZWUtdGVyICAtZnRyZWUtdmVjdG9yaXplICAtZnRyZWUtdnJwICAtZnVu Y29uc3RyYWluZWQtY29tbW9ucyBAZ29sCi0tZnVuaXQtYXQtYS10aW1lICAtZnVucm9sbC1hbGwt bG9vcHMgIC1mdW5yb2xsLWxvb3BzIEBnb2wKLS1mdW5zYWZlLW1hdGgtb3B0aW1pemF0aW9ucyAg LWZ1bnN3aXRjaC1sb29wcyBAZ29sCistZnRyZWUtdGVyICAtZnRyZWUtdmVjdG9yaXplICAtZnRy ZWUtdnJwICAtZnRyaXZpYWwtYXV0by12YXItaW5pdCBAZ29sCistZnVuY29uc3RyYWluZWQtY29t bW9ucyAtZnVuaXQtYXQtYS10aW1lICAtZnVucm9sbC1hbGwtbG9vcHMgQGdvbAorLWZ1bnJvbGwt bG9vcHMgLWZ1bnNhZmUtbWF0aC1vcHRpbWl6YXRpb25zICAtZnVuc3dpdGNoLWxvb3BzIEBnb2wK IC1maXBhLXJhICAtZnZhcmlhYmxlLWV4cGFuc2lvbi1pbi11bnJvbGxlciAgLWZ2ZWN0LWNvc3Qt bW9kZWwgIC1mdnB0IEBnb2wKIC1md2ViICAtZndob2xlLXByb2dyYW0gIC1md3BhICAtZnVzZS1s aW5rZXItcGx1Z2luIC1memVyby1jYWxsLXVzZWQtcmVncyBAZ29sCiAtLXBhcmFtIEB2YXJ7bmFt ZX09QHZhcnt2YWx1ZX0KQEAgLTExODE4LDYgKzExODE4LDQxIEBAIFBlcmZvcm0gYmFzaWMgYmxv Y2sgdmVjdG9yaXphdGlvbiBvbiB0cmVlcy4gVGhpcyBmbGFnIGlzIGVuYWJsZWQgYnkgZGVmYXVs dCBhdAogQG9wdGlvbnstTzN9IGFuZCBieSBAb3B0aW9uey1mdHJlZS12ZWN0b3JpemV9LCBAb3B0 aW9uey1mcHJvZmlsZS11c2V9LAogYW5kIEBvcHRpb257LWZhdXRvLXByb2ZpbGV9LgogCitAaXRl bSAtZnRyaXZpYWwtYXV0by12YXItaW5pdD1AdmFye2Nob2ljZX0KK0BvcGluZGV4IGZ0cml2aWFs LWF1dG8tdmFyLWluaXQKK0luaXRpYWxpemUgYXV0b21hdGljIHZhcmlhYmxlcyB3aXRoIGVpdGhl ciBhIHBhdHRlcm4gb3Igd2l0aCB6ZXJvZXMgdG8gaW5jcmVhc2UKK3RoZSBzZWN1cml0eSBhbmQg cHJlZGljdGFiaWxpdHkgb2YgYSBwcm9ncmFtIGJ5IHByZXZlbnRpbmcgdW5pbml0aWFsaXplZCBt ZW1vcnkKK2Rpc2Nsb3N1cmUgYW5kIHVzZS4KK0dDQyBzdGlsbCBjb25zaWRlcnMgYW4gYXV0b21h dGljIHZhcmlhYmxlIHRoYXQgZG9lc24ndCBoYXZlIGFuIGV4cGxpY2l0Citpbml0aWFsaXplciBh cyB1bmluaXRpYWxpemVkLCAtV3VuaW5pdGlhbGl6ZWQgd2lsbCBzdGlsbCByZXBvcnQgd2Fybmlu ZyBtZXNzYWdlcworb24gc3VjaCBhdXRvbWF0aWMgdmFyaWFibGVzLgorV2l0aCB0aGlzIG9wdGlv biwgR0NDIHdpbGwgYWxzbyBpbml0aWFsaXplIGFueSBwYWRkaW5nIG9mIGF1dG9tYXRpYyB2YXJp YWJsZXMKK3RoYXQgaGF2ZSBzdHJ1Y3R1cmUgb3IgdW5pb24gdHlwZXMgdG8gemVyb2VzLgorCitU aGUgdGhyZWUgdmFsdWVzIG9mIEB2YXJ7Y2hvaWNlfSBhcmU6CisKK0BpdGVtaXplIEBidWxsZXQK K0BpdGVtCitAc2FtcHt1bmluaXRpYWxpemVkfSBkb2Vzbid0IGluaXRpYWxpemUgYW55IGF1dG9t YXRpYyB2YXJpYWJsZXMuCitUaGlzIGlzIEMgYW5kIEMrKydzIGRlZmF1bHQuCisKK0BpdGVtCitA c2FtcHtwYXR0ZXJufSBJbml0aWFsaXplIGF1dG9tYXRpYyB2YXJpYWJsZXMgd2l0aCB2YWx1ZXMg d2hpY2ggd2lsbCBsaWtlbHkKK3RyYW5zZm9ybSBsb2dpYyBidWdzIGludG8gY3Jhc2hlcyBkb3du IHRoZSBsaW5lLCBhcmUgZWFzaWx5IHJlY29nbml6ZWQgaW4gYQorY3Jhc2ggZHVtcCBhbmQgd2l0 aG91dCBiZWluZyB2YWx1ZXMgdGhhdCBwcm9ncmFtbWVycyBjYW4gcmVseSBvbiBmb3IgdXNlZnVs Citwcm9ncmFtIHNlbWFudGljcy4KK1RoZSBjdXJyZW50IHZhbHVlIGlzIGJ5dGUtcmVwZWF0YWJs ZSBwYXR0ZXJuIHdpdGggYnl0ZSAiMHhGRSIuCitUaGUgdmFsdWVzIHVzZWQgZm9yIHBhdHRlcm4g aW5pdGlhbGl6YXRpb24gbWlnaHQgYmUgY2hhbmdlZCBpbiB0aGUgZnV0dXJlLgorCitAaXRlbQor QHNhbXB7emVyb30gSW5pdGlhbGl6ZSBhdXRvbWF0aWMgdmFyaWFibGVzIHdpdGggemVyb2VzLgor QGVuZCBpdGVtaXplCisKK1RoZSBkZWZhdWx0IGlzIEBzYW1we3VuaW5pdGlhbGl6ZWR9LgorCitZ b3UgY2FuIGNvbnRyb2wgdGhpcyBiZWhhdmlvciBmb3IgYSBzcGVjaWZpYyB2YXJpYWJsZSBieSB1 c2luZyB0aGUgdmFyaWFibGUKK2F0dHJpYnV0ZSBAY29kZXt1bmluaXRpYWxpemVkfSAoQHB4cmVm e1ZhcmlhYmxlIEF0dHJpYnV0ZXN9KS4KKwogQGl0ZW0gLWZ2ZWN0LWNvc3QtbW9kZWw9QHZhcntt b2RlbH0KIEBvcGluZGV4IGZ2ZWN0LWNvc3QtbW9kZWwKIEFsdGVyIHRoZSBjb3N0IG1vZGVsIHVz ZWQgZm9yIHZlY3Rvcml6YXRpb24uICBUaGUgQHZhcnttb2RlbH0gYXJndW1lbnQKZGlmZiAtLWdp dCBhL2djYy9mbGFnLXR5cGVzLmggYi9nY2MvZmxhZy10eXBlcy5oCmluZGV4IGU0M2QxZGU0OTBk Zi4uNmZiMGFlZmJmYzdiIDEwMDY0NAotLS0gYS9nY2MvZmxhZy10eXBlcy5oCisrKyBiL2djYy9m bGFnLXR5cGVzLmgKQEAgLTI3Niw2ICsyNzYsMTMgQEAgZW51bSB2ZWN0X2Nvc3RfbW9kZWwgewog ICBWRUNUX0NPU1RfTU9ERUxfREVGQVVMVCA9IDEKIH07CiAKKy8qIEF1dG9tYXRpYyB2YXJpYWJs ZSBpbml0aWFsaXphdGlvbiB0eXBlLiAgKi8KK2VudW0gYXV0b19pbml0X3R5cGUgeworICBBVVRP X0lOSVRfVU5JTklUSUFMSVpFRCA9IDAsCisgIEFVVE9fSU5JVF9QQVRURVJOID0gMSwKKyAgQVVU T19JTklUX1pFUk8gPSAyCit9OworCiAvKiBEaWZmZXJlbnQgaW5zdHJ1bWVudGF0aW9uIG1vZGVz LiAgKi8KIGVudW0gc2FuaXRpemVfY29kZSB7CiAgIC8qIEFkZHJlc3NTYW5pdGl6ZXIuICAqLwpk aWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS1mb2xkLmMgYi9nY2MvZ2ltcGxlLWZvbGQuYwppbmRleCBh M2FmZTg3MWY2YjQuLjU0NThlZThjZTU0ZiAxMDA2NDQKLS0tIGEvZ2NjL2dpbXBsZS1mb2xkLmMK KysrIGIvZ2NjL2dpbXBsZS1mb2xkLmMKQEAgLTQ1MTcsMTIgKzQ1MTcsMTQgQEAgY2xlYXJfcGFk ZGluZ19hZGRfcGFkZGluZyAoY2xlYXJfcGFkZGluZ19zdHJ1Y3QgKmJ1ZiwKICAgICB9CiB9CiAK LXN0YXRpYyB2b2lkIGNsZWFyX3BhZGRpbmdfdHlwZSAoY2xlYXJfcGFkZGluZ19zdHJ1Y3QgKiwg dHJlZSwgSE9TVF9XSURFX0lOVCk7CitzdGF0aWMgdm9pZCBjbGVhcl9wYWRkaW5nX3R5cGUgKGNs ZWFyX3BhZGRpbmdfc3RydWN0ICosIHRyZWUsCisJCQkJSE9TVF9XSURFX0lOVCwgYm9vbCk7CiAK IC8qIENsZWFyIHBhZGRpbmcgYml0cyBvZiB1bmlvbiB0eXBlIFRZUEUuICAqLwogCiBzdGF0aWMg dm9pZAotY2xlYXJfcGFkZGluZ191bmlvbiAoY2xlYXJfcGFkZGluZ19zdHJ1Y3QgKmJ1ZiwgdHJl ZSB0eXBlLCBIT1NUX1dJREVfSU5UIHN6KQorY2xlYXJfcGFkZGluZ191bmlvbiAoY2xlYXJfcGFk ZGluZ19zdHJ1Y3QgKmJ1ZiwgdHJlZSB0eXBlLAorCQkgICAgIEhPU1RfV0lERV9JTlQgc3osIGJv b2wgZm9yX2F1dG9faW5pdCkKIHsKICAgY2xlYXJfcGFkZGluZ19zdHJ1Y3QgKnVuaW9uX2J1ZjsK ICAgSE9TVF9XSURFX0lOVCBzdGFydF9vZmYgPSAwLCBuZXh0X29mZiA9IDA7CkBAIC00NTY3LDcg KzQ1NjksNyBAQCBjbGVhcl9wYWRkaW5nX3VuaW9uIChjbGVhcl9wYWRkaW5nX3N0cnVjdCAqYnVm LCB0cmVlIHR5cGUsIEhPU1RfV0lERV9JTlQgc3opCiAJICAgICAgY29udGludWU7CiAJICAgIGdj Y19hc3NlcnQgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChmaWVsZCkpID09IEFSUkFZX1RZUEUKIAkJ CSYmICFDT01QTEVURV9UWVBFX1AgKFRSRUVfVFlQRSAoZmllbGQpKSk7Ci0JICAgIGlmICghYnVm LT5jbGVhcl9pbl9tYXNrKQorCSAgICBpZiAoIWJ1Zi0+Y2xlYXJfaW5fbWFzayAmJiAhZm9yX2F1 dG9faW5pdCkKIAkgICAgICBlcnJvcl9hdCAoYnVmLT5sb2MsICJmbGV4aWJsZSBhcnJheSBtZW1i ZXIgJXFEIGRvZXMgbm90IGhhdmUgIgogCQkJCSAgIndlbGwgZGVmaW5lZCBwYWRkaW5nIGJpdHMg Zm9yICVxcyIsCiAJCQlmaWVsZCwgIl9fYnVpbHRpbl9jbGVhcl9wYWRkaW5nIik7CkBAIC00NTc4 LDcgKzQ1ODAsNyBAQCBjbGVhcl9wYWRkaW5nX3VuaW9uIChjbGVhcl9wYWRkaW5nX3N0cnVjdCAq YnVmLCB0cmVlIHR5cGUsIEhPU1RfV0lERV9JTlQgc3opCiAJdW5pb25fYnVmLT5vZmYgPSBzdGFy dF9vZmY7CiAJdW5pb25fYnVmLT5zaXplID0gc3RhcnRfc2l6ZTsKIAltZW1zZXQgKHVuaW9uX2J1 Zi0+YnVmLCB+MCwgc3RhcnRfc2l6ZSk7Ci0JY2xlYXJfcGFkZGluZ190eXBlICh1bmlvbl9idWYs IFRSRUVfVFlQRSAoZmllbGQpLCBmbGRzeik7CisJY2xlYXJfcGFkZGluZ190eXBlICh1bmlvbl9i dWYsIFRSRUVfVFlQRSAoZmllbGQpLCBmbGRzeiwgZm9yX2F1dG9faW5pdCk7CiAJY2xlYXJfcGFk ZGluZ19hZGRfcGFkZGluZyAodW5pb25fYnVmLCBzeiAtIGZsZHN6KTsKIAljbGVhcl9wYWRkaW5n X2ZsdXNoICh1bmlvbl9idWYsIHRydWUpOwogICAgICAgfQpAQCAtNDY0OCw3ICs0NjUwLDggQEAg Y2xlYXJfcGFkZGluZ190eXBlX21heV9oYXZlX3BhZGRpbmdfcCAodHJlZSB0eXBlKQogICAgICBf X2J1aWx0aW5fY2xlYXJfcGFkZGluZyAoYnVmLmJhc2UpOyAgKi8KIAogc3RhdGljIHZvaWQKLWNs ZWFyX3BhZGRpbmdfZW1pdF9sb29wIChjbGVhcl9wYWRkaW5nX3N0cnVjdCAqYnVmLCB0cmVlIHR5 cGUsIHRyZWUgZW5kKQorY2xlYXJfcGFkZGluZ19lbWl0X2xvb3AgKGNsZWFyX3BhZGRpbmdfc3Ry dWN0ICpidWYsIHRyZWUgdHlwZSwKKwkJCSB0cmVlIGVuZCwgYm9vbCBmb3JfYXV0b19pbml0KQog ewogICB0cmVlIGwxID0gY3JlYXRlX2FydGlmaWNpYWxfbGFiZWwgKGJ1Zi0+bG9jKTsKICAgdHJl ZSBsMiA9IGNyZWF0ZV9hcnRpZmljaWFsX2xhYmVsIChidWYtPmxvYyk7CkBAIC00NjU5LDcgKzQ2 NjIsNyBAQCBjbGVhcl9wYWRkaW5nX2VtaXRfbG9vcCAoY2xlYXJfcGFkZGluZ19zdHJ1Y3QgKmJ1 ZiwgdHJlZSB0eXBlLCB0cmVlIGVuZCkKICAgZyA9IGdpbXBsZV9idWlsZF9sYWJlbCAobDEpOwog ICBnaW1wbGVfc2V0X2xvY2F0aW9uIChnLCBidWYtPmxvYyk7CiAgIGdzaV9pbnNlcnRfYmVmb3Jl IChidWYtPmdzaSwgZywgR1NJX1NBTUVfU1RNVCk7Ci0gIGNsZWFyX3BhZGRpbmdfdHlwZSAoYnVm LCB0eXBlLCBidWYtPnN6KTsKKyAgY2xlYXJfcGFkZGluZ190eXBlIChidWYsIHR5cGUsIGJ1Zi0+ c3osIGZvcl9hdXRvX2luaXQpOwogICBjbGVhcl9wYWRkaW5nX2ZsdXNoIChidWYsIHRydWUpOwog ICBnID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAoYnVmLT5iYXNlLCBQT0lOVEVSX1BMVVNfRVhQUiwg YnVmLT5iYXNlLAogCQkJICAgc2l6ZV9pbnQgKGJ1Zi0+c3opKTsKQEAgLTQ2NzcsMTAgKzQ2ODAs MTMgQEAgY2xlYXJfcGFkZGluZ19lbWl0X2xvb3AgKGNsZWFyX3BhZGRpbmdfc3RydWN0ICpidWYs IHRyZWUgdHlwZSwgdHJlZSBlbmQpCiB9CiAKIC8qIENsZWFyIHBhZGRpbmcgYml0cyBmb3IgVFlQ RS4gIENhbGxlZCByZWN1cnNpdmVseSBmcm9tCi0gICBnaW1wbGVfZm9sZF9idWlsdGluX2NsZWFy X3BhZGRpbmcuICAqLworICAgZ2ltcGxlX2ZvbGRfYnVpbHRpbl9jbGVhcl9wYWRkaW5nLiBJZiBG T1JfQVVUT19JTklULAorICAgbm90IGVtaXQgc29tZSBvZiB0aGUgZXJyb3IgbWVzc2FnZXMgc2lu Y2UgZG9pbmcgdGhhdAorICAgbWlnaHQgY29uZnVzZSB0aGUgZW5kIHVzZXIuICAqLwogCiBzdGF0 aWMgdm9pZAotY2xlYXJfcGFkZGluZ190eXBlIChjbGVhcl9wYWRkaW5nX3N0cnVjdCAqYnVmLCB0 cmVlIHR5cGUsIEhPU1RfV0lERV9JTlQgc3opCitjbGVhcl9wYWRkaW5nX3R5cGUgKGNsZWFyX3Bh ZGRpbmdfc3RydWN0ICpidWYsIHRyZWUgdHlwZSwKKwkJICAgIEhPU1RfV0lERV9JTlQgc3osIGJv b2wgZm9yX2F1dG9faW5pdCkKIHsKICAgc3dpdGNoIChUUkVFX0NPREUgKHR5cGUpKQogICAgIHsK QEAgLTQ3NjIsNyArNDc2OCw3IEBAIGNsZWFyX3BhZGRpbmdfdHlwZSAoY2xlYXJfcGFkZGluZ19z dHJ1Y3QgKmJ1ZiwgdHJlZSB0eXBlLCBIT1NUX1dJREVfSU5UIHN6KQogCQkgIGNvbnRpbnVlOwog CQlnY2NfYXNzZXJ0IChUUkVFX0NPREUgKGZ0eXBlKSA9PSBBUlJBWV9UWVBFCiAJCQkgICAgJiYg IUNPTVBMRVRFX1RZUEVfUCAoZnR5cGUpKTsKLQkJaWYgKCFidWYtPmNsZWFyX2luX21hc2spCisJ CWlmICghYnVmLT5jbGVhcl9pbl9tYXNrICYmICFmb3JfYXV0b19pbml0KQogCQkgIGVycm9yX2F0 IChidWYtPmxvYywgImZsZXhpYmxlIGFycmF5IG1lbWJlciAlcUQgZG9lcyBub3QgIgogCQkJCSAg ICAgICJoYXZlIHdlbGwgZGVmaW5lZCBwYWRkaW5nIGJpdHMgZm9yICVxcyIsCiAJCQkgICAgZmll bGQsICJfX2J1aWx0aW5fY2xlYXJfcGFkZGluZyIpOwpAQCAtNDc3Niw3ICs0NzgyLDggQEAgY2xl YXJfcGFkZGluZ190eXBlIChjbGVhcl9wYWRkaW5nX3N0cnVjdCAqYnVmLCB0cmVlIHR5cGUsIEhP U1RfV0lERV9JTlQgc3opCiAJCWdjY19hc3NlcnQgKHBvcyA+PSAwICYmIGZsZHN6ID49IDAgJiYg cG9zID49IGN1cl9wb3MpOwogCQljbGVhcl9wYWRkaW5nX2FkZF9wYWRkaW5nIChidWYsIHBvcyAt IGN1cl9wb3MpOwogCQljdXJfcG9zID0gcG9zOwotCQljbGVhcl9wYWRkaW5nX3R5cGUgKGJ1Ziwg VFJFRV9UWVBFIChmaWVsZCksIGZsZHN6KTsKKwkJY2xlYXJfcGFkZGluZ190eXBlIChidWYsIFRS RUVfVFlQRSAoZmllbGQpLAorCQkJCSAgICBmbGRzeiwgZm9yX2F1dG9faW5pdCk7CiAJCWN1cl9w b3MgKz0gZmxkc3o7CiAJICAgICAgfQogCSAgfQpAQCAtNDgxNiw3ICs0ODIzLDcgQEAgY2xlYXJf cGFkZGluZ190eXBlIChjbGVhcl9wYWRkaW5nX3N0cnVjdCAqYnVmLCB0cmVlIHR5cGUsIEhPU1Rf V0lERV9JTlQgc3opCiAJICBidWYtPmFsaWduID0gVFlQRV9BTElHTiAoZWx0dHlwZSk7CiAJICBi dWYtPm9mZiA9IDA7CiAJICBidWYtPnNpemUgPSAwOwotCSAgY2xlYXJfcGFkZGluZ19lbWl0X2xv b3AgKGJ1ZiwgZWx0dHlwZSwgZW5kKTsKKwkgIGNsZWFyX3BhZGRpbmdfZW1pdF9sb29wIChidWYs IGVsdHR5cGUsIGVuZCwgZm9yX2F1dG9faW5pdCk7CiAJICBidWYtPmJhc2UgPSBiYXNlOwogCSAg YnVmLT5zeiA9IHByZXZfc3o7CiAJICBidWYtPmFsaWduID0gcHJldl9hbGlnbjsKQEAgLTQ4MjYs MTAgKzQ4MzMsMTAgQEAgY2xlYXJfcGFkZGluZ190eXBlIChjbGVhcl9wYWRkaW5nX3N0cnVjdCAq YnVmLCB0cmVlIHR5cGUsIEhPU1RfV0lERV9JTlQgc3opCiAJICBicmVhazsKIAl9CiAgICAgICBm b3IgKEhPU1RfV0lERV9JTlQgaSA9IDA7IGkgPCBuZWx0czsgaSsrKQotCWNsZWFyX3BhZGRpbmdf dHlwZSAoYnVmLCBUUkVFX1RZUEUgKHR5cGUpLCBmbGRzeik7CisJY2xlYXJfcGFkZGluZ190eXBl IChidWYsIFRSRUVfVFlQRSAodHlwZSksIGZsZHN6LCBmb3JfYXV0b19pbml0KTsKICAgICAgIGJy ZWFrOwogICAgIGNhc2UgVU5JT05fVFlQRToKLSAgICAgIGNsZWFyX3BhZGRpbmdfdW5pb24gKGJ1 ZiwgdHlwZSwgc3opOworICAgICAgY2xlYXJfcGFkZGluZ191bmlvbiAoYnVmLCB0eXBlLCBzeiwg Zm9yX2F1dG9faW5pdCk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFJFQUxfVFlQRToKICAgICAg IGdjY19hc3NlcnQgKChzaXplX3QpIHN6IDw9IGNsZWFyX3BhZGRpbmdfdW5pdCk7CkBAIC00ODUz LDE0ICs0ODYwLDE0IEBAIGNsZWFyX3BhZGRpbmdfdHlwZSAoY2xlYXJfcGFkZGluZ19zdHJ1Y3Qg KmJ1ZiwgdHJlZSB0eXBlLCBIT1NUX1dJREVfSU5UIHN6KQogICAgICAgYnJlYWs7CiAgICAgY2Fz ZSBDT01QTEVYX1RZUEU6CiAgICAgICBmbGRzeiA9IGludF9zaXplX2luX2J5dGVzIChUUkVFX1RZ UEUgKHR5cGUpKTsKLSAgICAgIGNsZWFyX3BhZGRpbmdfdHlwZSAoYnVmLCBUUkVFX1RZUEUgKHR5 cGUpLCBmbGRzeik7Ci0gICAgICBjbGVhcl9wYWRkaW5nX3R5cGUgKGJ1ZiwgVFJFRV9UWVBFICh0 eXBlKSwgZmxkc3opOworICAgICAgY2xlYXJfcGFkZGluZ190eXBlIChidWYsIFRSRUVfVFlQRSAo dHlwZSksIGZsZHN6LCBmb3JfYXV0b19pbml0KTsKKyAgICAgIGNsZWFyX3BhZGRpbmdfdHlwZSAo YnVmLCBUUkVFX1RZUEUgKHR5cGUpLCBmbGRzeiwgZm9yX2F1dG9faW5pdCk7CiAgICAgICBicmVh azsKICAgICBjYXNlIFZFQ1RPUl9UWVBFOgogICAgICAgbmVsdHMgPSBUWVBFX1ZFQ1RPUl9TVUJQ QVJUUyAodHlwZSkudG9fY29uc3RhbnQgKCk7CiAgICAgICBmbGRzeiA9IGludF9zaXplX2luX2J5 dGVzIChUUkVFX1RZUEUgKHR5cGUpKTsKICAgICAgIGZvciAoSE9TVF9XSURFX0lOVCBpID0gMDsg aSA8IG5lbHRzOyBpKyspCi0JY2xlYXJfcGFkZGluZ190eXBlIChidWYsIFRSRUVfVFlQRSAodHlw ZSksIGZsZHN6KTsKKwljbGVhcl9wYWRkaW5nX3R5cGUgKGJ1ZiwgVFJFRV9UWVBFICh0eXBlKSwg Zmxkc3osIGZvcl9hdXRvX2luaXQpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBOVUxMUFRSX1RZ UEU6CiAgICAgICBnY2NfYXNzZXJ0ICgoc2l6ZV90KSBzeiA8PSBjbGVhcl9wYWRkaW5nX3VuaXQp OwpAQCAtNDg5Niw3ICs0OTAzLDcgQEAgY2xlYXJfdHlwZV9wYWRkaW5nX2luX21hc2sgKHRyZWUg dHlwZSwgdW5zaWduZWQgY2hhciAqbWFzaykKICAgYnVmLnN6ID0gaW50X3NpemVfaW5fYnl0ZXMg KHR5cGUpOwogICBidWYuc2l6ZSA9IDA7CiAgIGJ1Zi51bmlvbl9wdHIgPSBtYXNrOwotICBjbGVh cl9wYWRkaW5nX3R5cGUgKCZidWYsIHR5cGUsIGJ1Zi5zeik7CisgIGNsZWFyX3BhZGRpbmdfdHlw ZSAoJmJ1ZiwgdHlwZSwgYnVmLnN6LCBmYWxzZSk7CiAgIGNsZWFyX3BhZGRpbmdfZmx1c2ggKCZi dWYsIHRydWUpOwogfQogCkBAIC00OTA2LDkgKzQ5MTMsMTAgQEAgc3RhdGljIGJvb2wKIGdpbXBs ZV9mb2xkX2J1aWx0aW5fY2xlYXJfcGFkZGluZyAoZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKmdzaSkK IHsKICAgZ2ltcGxlICpzdG10ID0gZ3NpX3N0bXQgKCpnc2kpOwotICBnY2NfYXNzZXJ0IChnaW1w bGVfY2FsbF9udW1fYXJncyAoc3RtdCkgPT0gMik7CisgIGdjY19hc3NlcnQgKGdpbXBsZV9jYWxs X251bV9hcmdzIChzdG10KSA9PSAzKTsKICAgdHJlZSBwdHIgPSBnaW1wbGVfY2FsbF9hcmcgKHN0 bXQsIDApOwogICB0cmVlIHR5cGVhcmcgPSBnaW1wbGVfY2FsbF9hcmcgKHN0bXQsIDEpOworICBi b29sIGZvcl9hdXRvX2luaXQgPSAoYm9vbCkgVFJFRV9JTlRfQ1NUX0xPVyAoZ2ltcGxlX2NhbGxf YXJnIChzdG10LCAyKSk7CiAgIHRyZWUgdHlwZSA9IFRSRUVfVFlQRSAoVFJFRV9UWVBFICh0eXBl YXJnKSk7CiAgIGxvY2F0aW9uX3QgbG9jID0gZ2ltcGxlX2xvY2F0aW9uIChzdG10KTsKICAgY2xl YXJfcGFkZGluZ19zdHJ1Y3QgYnVmOwpAQCAtNDk2NSw3ICs0OTczLDcgQEAgZ2ltcGxlX2ZvbGRf YnVpbHRpbl9jbGVhcl9wYWRkaW5nIChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpKQogCSAgYnVm LnN6ID0gZWx0c3o7CiAJICBidWYuYWxpZ24gPSBUWVBFX0FMSUdOIChlbHR0eXBlKTsKIAkgIGJ1 Zi5hbGlhc190eXBlID0gYnVpbGRfcG9pbnRlcl90eXBlIChlbHR0eXBlKTsKLQkgIGNsZWFyX3Bh ZGRpbmdfZW1pdF9sb29wICgmYnVmLCBlbHR0eXBlLCBlbmQpOworCSAgY2xlYXJfcGFkZGluZ19l bWl0X2xvb3AgKCZidWYsIGVsdHR5cGUsIGVuZCwgZm9yX2F1dG9faW5pdCk7CiAJfQogICAgIH0K ICAgZWxzZQpAQCAtNDk3OCw3ICs0OTg2LDcgQEAgZ2ltcGxlX2ZvbGRfYnVpbHRpbl9jbGVhcl9w YWRkaW5nIChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpKQogCSAgZ3NpX2luc2VydF9iZWZvcmUg KGdzaSwgZywgR1NJX1NBTUVfU1RNVCk7CiAJfQogICAgICAgYnVmLmFsaWFzX3R5cGUgPSBidWls ZF9wb2ludGVyX3R5cGUgKHR5cGUpOwotICAgICAgY2xlYXJfcGFkZGluZ190eXBlICgmYnVmLCB0 eXBlLCBidWYuc3opOworICAgICAgY2xlYXJfcGFkZGluZ190eXBlICgmYnVmLCB0eXBlLCBidWYu c3osIGZvcl9hdXRvX2luaXQpOwogICAgICAgY2xlYXJfcGFkZGluZ19mbHVzaCAoJmJ1ZiwgdHJ1 ZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxpZnkuYyBiL2djYy9naW1wbGlmeS5j CmluZGV4IDkzYTIxMjFmZWExOC4uY2VlODY0OWNmM2E3IDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxp ZnkuYworKysgYi9nY2MvZ2ltcGxpZnkuYwpAQCAtMjQ5LDYgKzI0OSwxMSBAQCBzdGF0aWMgZW51 bSBnaW1wbGlmeV9zdGF0dXMgZ2ltcGxpZnlfY29tcG91bmRfZXhwciAodHJlZSAqLCBnaW1wbGVf c2VxICosIGJvb2wpOwogc3RhdGljIGhhc2hfbWFwPHRyZWUsIHRyZWU+ICpvYWNjX2RlY2xhcmVf cmV0dXJuczsKIHN0YXRpYyBlbnVtIGdpbXBsaWZ5X3N0YXR1cyBnaW1wbGlmeV9leHByICh0cmVl ICosIGdpbXBsZV9zZXEgKiwgZ2ltcGxlX3NlcSAqLAogCQkJCQkgICBib29sICgqKSAodHJlZSks IGZhbGxiYWNrX3QsIGJvb2wpOworc3RhdGljIHZvaWQgZ2ltcGxlX2FkZF9pbml0X2Zvcl9hdXRv X3ZhciAodHJlZSwgZW51bSBhdXRvX2luaXRfdHlwZSwgYm9vbCwKKwkJCQkJICBnaW1wbGVfc2Vx ICopOworc3RhdGljIHZvaWQgbWF5YmVfd2l0aF9zaXplX2V4cHIgKHRyZWUgKik7CitzdGF0aWMg dm9pZCBwcmVwYXJlX2dpbXBsZV9hZGRyZXNzYWJsZSAodHJlZSAqLCBnaW1wbGVfc2VxICopOwor CiAKIC8qIFNob3J0ZXIgYWxpYXMgbmFtZSBmb3IgdGhlIGFib3ZlIGZ1bmN0aW9uIGZvciB1c2Ug aW4gZ2ltcGxpZnkuYwogICAgb25seS4gICovCkBAIC0xNzQzLDYgKzE3NDgsMTE0IEBAIGZvcmNl X2xhYmVsc19yICh0cmVlICp0cCwgaW50ICp3YWxrX3N1YnRyZWVzLCB2b2lkICpkYXRhIEFUVFJJ QlVURV9VTlVTRUQpCiAgIHJldHVybiBOVUxMX1RSRUU7CiB9CiAKKworLyogQnVpbGQgYSBjYWxs IHRvIGludGVybmFsIGNvbnN0IGZ1bmN0aW9uIERFRkVSUkVEX0lOSVQ6CisgICAxc3QgYXJndW1l bnQ6IFNJWkUgb2YgdGhlIERFQ0w7CisgICAybmQgYXJndW1lbnQ6IElOSVRfVFlQRTsKKyAgIDNy ZCBhcmd1bWVudDogSVNfVkxBLCAwIE5PLCAxIFlFUzsKKworICAgYXMgREVGRVJSRURfSU5JVCAo U0laRSBvZiB0aGUgREVDTCwgSU5JVF9UWVBFLCBJU19WTEEpLiAgKi8KKworc3RhdGljIGdpbXBs ZSAqCitidWlsZF9kZWZlcnJlZF9pbml0ICh0cmVlIGRlY2wsCisJCSAgICAgZW51bSBhdXRvX2lu aXRfdHlwZSBpbml0X3R5cGUsCisJCSAgICAgYm9vbCBpc192bGEpCit7CisgIGdjY19hc3NlcnQg KChpc192bGEgJiYgVFJFRV9DT0RFIChkZWNsKSA9PSBXSVRIX1NJWkVfRVhQUikKKwkgICAgICB8 fCAoIWlzX3ZsYSAmJiBUUkVFX0NPREUgKGRlY2wpICE9IFdJVEhfU0laRV9FWFBSKSk7CisKKyAg dHJlZSBkZWNsX3NpemUgPSBOVUxMX1RSRUU7CisgIHRyZWUgaW5pdF90eXBlX25vZGUKKyAgICA9 IGJ1aWxkX2ludF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLCAoaW50KSBpbml0X3R5cGUpOworICB0 cmVlIGlzX3ZsYV9ub2RlCisgICAgPSBidWlsZF9pbnRfY3N0IChpbnRlZ2VyX3R5cGVfbm9kZSwg KGludCkgaXNfdmxhKTsKKworICAgaWYgKFRSRUVfQ09ERSAoZGVjbCkgPT0gV0lUSF9TSVpFX0VY UFIpCisgICAgIGRlY2xfc2l6ZSA9IFRSRUVfT1BFUkFORCAoZGVjbCwgMSk7CisgICBlbHNlCisg ICAgIGRlY2xfc2l6ZSA9IFRZUEVfU0laRV9VTklUIChUUkVFX1RZUEUgKGRlY2wpKTsKKworICAg cmV0dXJuIGdpbXBsZV9idWlsZF9jYWxsX2ludGVybmFsIChJRk5fREVGRVJSRURfSU5JVCwgMywK KwkJCQkgICAgICBkZWNsX3NpemUsIGluaXRfdHlwZV9ub2RlLCBpc192bGFfbm9kZSk7Cit9CisK Ky8qIEdlbmVyYXRlIGluaXRpYWxpemF0aW9uIHRvIGF1dG9tYXRpYyB2YXJpYWJsZSBERUNMIGJh c2VkIG9uIElOSVRfVFlQRS4gICovCitzdGF0aWMgdm9pZAorZ2ltcGxlX2FkZF9pbml0X2Zvcl9h dXRvX3ZhciAodHJlZSBkZWNsLAorCQkJICAgICAgZW51bSBhdXRvX2luaXRfdHlwZSBpbml0X3R5 cGUsCisJCQkgICAgICBib29sIGlzX3ZsYSwKKwkJCSAgICAgIGdpbXBsZV9zZXEgKnNlcV9wKQor eworICBnY2NfYXNzZXJ0IChWQVJfUCAoZGVjbCkgJiYgIURFQ0xfRVhURVJOQUwgKGRlY2wpICYm ICFUUkVFX1NUQVRJQyAoZGVjbCkpOworICBnY2NfYXNzZXJ0IChpbml0X3R5cGUgPiBBVVRPX0lO SVRfVU5JTklUSUFMSVpFRCk7CisKKyAgLyogSWYgdGhpcyBERUNMIGlzIGEgdmFyaWFibGUgc2l6 ZWQgdHlwZSwgd2UgbXVzdCByZW1lbWJlciB0aGUgc2l6ZS4gICovCisgIHRyZWUgb3JpZ19kZWNs ID0gZGVjbDsKKyAgbWF5YmVfd2l0aF9zaXplX2V4cHIgKCZkZWNsKTsKKworICBnaW1wbGUgKmNh bGwgPSBidWlsZF9kZWZlcnJlZF9pbml0IChkZWNsLCBpbml0X3R5cGUsIGlzX3ZsYSk7CisgIGdp bXBsZV9jYWxsX3NldF9saHMgKGNhbGwsIG9yaWdfZGVjbCk7CisgIGdpbXBsaWZ5X3NlcV9hZGRf c3RtdCAoc2VxX3AsIGNhbGwpOworfQorCisvKiBHZW5lcmF0ZSBwYWRkaW5nIGluaXRpYWxpemF0 aW9uIGZvciBhdXRvbWF0aWMgdmFpcmFibGUgREVDTC4KKyAgIEMgZ3VhcmFudGVlcyB0aGF0IGJy YWNlLWluaXQgd2l0aCBmZXdlciBpbml0aWFsaXplcnMgdGhhbiBtZW1iZXJzCisgICBhZ2dyZWdh dGUgd2lsbCBpbml0aWFsaXplIHRoZSByZXN0IG9mIHRoZSBhZ2dyZWdhdGUgYXMtaWYgaXQgd2Vy ZQorICAgc3RhdGljIGluaXRpYWxpemF0aW9uLiAgSW4gdHVybiBzdGF0aWMgaW5pdGlhbGl6YXRp b24gZ3VhcmFudGVlcworICAgdGhhdCBwYWRkaW5nIGlzIGluaXRpYWxpemVkIHRvIHplcm8uIFNv LCB3ZSBhbHdheXMgaW5pdGlhbGl6ZSBwYWRkaW5ncworICAgdG8gemVyb2VzIHJlZ2FyZGxlc3Mg SU5JVF9UWVBFLgorICAgVG8gZG8gdGhlIHBhZGRpbmcgaW5pdGlhbGl6YXRpb24sIHdlIGluc2Vy dCBhIGNhbGwgdG8KKyAgIF9fQlVJTFRJTl9DTEVBUl9QQURESU5HICgmZGVjbCwgMCwgZm9yX2F1 dG9faW5pdCA9IHRydWUpLgorICAgKi8KK3N0YXRpYyB2b2lkCitnaW1wbGVfYWRkX3BhZGRpbmdf aW5pdF9mb3JfYXV0b192YXIgKHRyZWUgZGVjbCwgYm9vbCBpc192bGEsCisJCQkJICAgICAgZ2lt cGxlX3NlcSAqc2VxX3ApCit7CisgIHRyZWUgYWRkcl9vZl9kZWNsID0gTlVMTF9UUkVFOworICBi b29sIGZvcl9hdXRvX2luaXQgPSB0cnVlOworICB0cmVlIGZuID0gYnVpbHRpbl9kZWNsX2V4cGxp Y2l0IChCVUlMVF9JTl9DTEVBUl9QQURESU5HKTsKKworICBpZiAoaXNfdmxhKQorICAgIHsKKyAg ICAgIC8qIFRoZSB0ZW1wb3JhcnkgYWRkcmVzcyB2YXJpYWJsZSBmb3IgdGhpcyB2bGEgc2hvdWxk IGJlCisJIGNyZWF0ZWQgaW4gZ2ltcGxpZnlfdmxhX2RlY2wuICAqLworICAgICAgZ2NjX2Fzc2Vy dCAoREVDTF9IQVNfVkFMVUVfRVhQUl9QIChkZWNsKSk7CisgICAgICBnY2NfYXNzZXJ0IChUUkVF X0NPREUgKERFQ0xfVkFMVUVfRVhQUiAoZGVjbCkpID09IElORElSRUNUX1JFRik7CisgICAgICBh ZGRyX29mX2RlY2wgPSBUUkVFX09QRVJBTkQgKERFQ0xfVkFMVUVfRVhQUiAoZGVjbCksIDApOwor ICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHByZXBhcmVfZ2ltcGxlX2FkZHJlc3NhYmxlICgm ZGVjbCwgc2VxX3ApOworICAgICAgbWFya19hZGRyZXNzYWJsZSAoZGVjbCk7CisgICAgICBhZGRy X29mX2RlY2wgPSBidWlsZF9mb2xkX2FkZHJfZXhwciAoZGVjbCk7CisgICAgfQorCisKKyAgLyog Zm9yIGxhbmd1YWdlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IEJVSUxUX0lOX0NMRUFSX1BBRERJTkcs IGNyZWF0ZSB0aGUKKyAgICAgZnVuY3Rpb24gbm9kZSBmb3IgcGFkZGluZyBpbml0aWFsaXphdGlv bi4gICovCisgIGlmICghZm4pCisgICAgeworICAgICAgdHJlZSBmdHlwZSA9IGJ1aWxkX2Z1bmN0 aW9uX3R5cGVfbGlzdCAodm9pZF90eXBlX25vZGUsCisJCQkJCSAgICAgcHRyX3R5cGVfbm9kZSwK KwkJCQkJICAgICBwdHJfdHlwZV9ub2RlLAorCQkJCQkgICAgIGludGVnZXJfdHlwZV9ub2RlLAor CQkJCQkgICAgIE5VTExfVFJFRSk7CisgICAgICBmbiA9IGFkZF9idWlsdGluX2Z1bmN0aW9uICgi X19idWlsdGluX2NsZWFyX3BhZGRpbmciLCBmdHlwZSwKKwkJCQkgQlVJTFRfSU5fQ0xFQVJfUEFE RElORywgQlVJTFRfSU5fTk9STUFMLAorCQkJCSBOVUxMLCBOVUxMX1RSRUUpOworICAgICAgc2V0 X2NhbGxfZXhwcl9mbGFncyAoZm4sIEVDRl9OT1RIUk9XIHwgRUNGX0xFQUYpOworICAgICAgc2V0 X2J1aWx0aW5fZGVjbCAoQlVJTFRfSU5fQ0xFQVJfUEFERElORywgZm4sIGZhbHNlKTsKKyAgICB9 CisKKyAgZ2ltcGxlICpjYWxsID0gZ2ltcGxlX2J1aWxkX2NhbGwgKGZuLAorCQkJCSAgICAzLCBh ZGRyX29mX2RlY2wsCisJCQkJICAgIGJ1aWxkX3plcm9fY3N0IChUUkVFX1RZUEUgKGFkZHJfb2Zf ZGVjbCkpLAorCQkJCSAgICBidWlsZF9pbnRfY3N0IChpbnRlZ2VyX3R5cGVfbm9kZSwKKwkJCQkJ CSAgIChpbnQpIGZvcl9hdXRvX2luaXQpKTsKKyAgZ2ltcGxpZnlfc2VxX2FkZF9zdG10IChzZXFf cCwgY2FsbCk7Cit9CisKKwogLyogR2ltcGxpZnkgYSBERUNMX0VYUFIgbm9kZSAqU1RNVF9QIGJ5 IG1ha2luZyBhbnkgbmVjZXNzYXJ5IGFsbG9jYXRpb24KICAgIGFuZCBpbml0aWFsaXphdGlvbiBl eHBsaWNpdC4gICovCiAKQEAgLTE4MzksNiArMTk1MiwzMSBAQCBnaW1wbGlmeV9kZWNsX2V4cHIg KHRyZWUgKnN0bXRfcCwgZ2ltcGxlX3NlcSAqc2VxX3ApCiAJICAgICAgIGFzIHRoZXkgbWF5IGNv bnRhaW4gYSBsYWJlbCBhZGRyZXNzLiAgKi8KIAkgICAgd2Fsa190cmVlICgmaW5pdCwgZm9yY2Vf bGFiZWxzX3IsIE5VTEwsIE5VTEwpOwogCX0KKyAgICAgIC8qIFdoZW4gdGhlcmUgaXMgbm8gZXhw bGljaXQgaW5pdGlhbGl6ZXIsIGlmIHRoZSB1c2VyIHJlcXVlc3RlZCwKKwkgV2Ugc2hvdWxkIGlu c2VydCBhbiBhcnRpZmljYWwgaW5pdGlhbGl6ZXIgZm9yIHRoaXMgYXV0b21hdGljCisJIHZhcmlh YmxlLiAgKi8KKyAgICAgIGVsc2UgaWYgKG9wdF9mb3JfZm4gKGN1cnJlbnRfZnVuY3Rpb25fZGVj bCwgZmxhZ19hdXRvX3Zhcl9pbml0KQorCQkgPiBBVVRPX0lOSVRfVU5JTklUSUFMSVpFRAorCSAg ICAgICAmJiAhbG9va3VwX2F0dHJpYnV0ZSAoInVuaW5pdGlhbGl6ZWQiLCBERUNMX0FUVFJJQlVU RVMgKGRlY2wpKQorCSAgICAgICAmJiAhVFJFRV9TVEFUSUMgKGRlY2wpKQorCXsKKwkgIGdpbXBs ZV9hZGRfaW5pdF9mb3JfYXV0b192YXIgKGRlY2wsCisJCQkJCW9wdF9mb3JfZm4gKGN1cnJlbnRf ZnVuY3Rpb25fZGVjbCwKKwkJCQkJCSAgICBmbGFnX2F1dG9fdmFyX2luaXQpLAorCQkJCQlpc192 bGEsCisJCQkJCXNlcV9wKTsKKwkgIC8qIFRoZSBleHBhbmRpbmcgb2YgYSBjYWxsIHRvIHRoZSBh Ym92ZSAuREVGRVJSRURfSU5JVCB3aWxsIGFwcGx5CisJICAgICBibG9jayBpbml0aWFsaXphdGlv biB0byB0aGUgd2hvbGUgc3BhY2UgY292ZXJlZCBieSB0aGlzIHZhcmlhYmxlLgorCSAgICAgQXMg YSByZXN1bHQsIGFsbCB0aGUgcGFkZGluZ3Mgd2lsbCBiZSBpbml0aWFsaXplZCB0byB6ZXJvZXMK KwkgICAgIGZvciB6ZXJvIGluaXRpYWxpemF0aW9uIGFuZCAweEZFIGJ5dGUtcmVwZWF0YWJsZSBw YXR0ZXJucyBmb3IKKwkgICAgIHBhdHRlcm4gaW5pdGlhbGl6YXRpb24uCisJICAgICBJbiBvcmRl ciB0byBtYWtlIHRoZSBwYWRkaW5ncyBhcyB6ZXJvZXMgZm9yIHBhdHRlcm4gaW5pdCwgV2UKKwkg ICAgIHNob3VsZCBhZGQgYSBjYWxsIHRvIF9fYnVpbHRpbl9jbGVhcl9wYWRkaW5nIHRvIGNsZWFy IHRoZQorCSAgICAgcGFkZGluZ3MgdG8gemVybyBpbiBjb21wYXRpcGxlIHdpdGggQ0xBTkcuICAq LworCSAgaWYgKG9wdF9mb3JfZm4gKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCwgZmxhZ19hdXRvX3Zh cl9pbml0KQorCSAgICAgID09IEFVVE9fSU5JVF9QQVRURVJOKQorCSAgICBnaW1wbGVfYWRkX3Bh ZGRpbmdfaW5pdF9mb3JfYXV0b192YXIgKGRlY2wsIGlzX3ZsYSwgc2VxX3ApOworCX0KICAgICB9 CiAKICAgcmV0dXJuIEdTX0FMTF9ET05FOwpAQCAtMzQxMCwxMSArMzU0OCwxNSBAQCBnaW1wbGlm eV9jYWxsX2V4cHIgKHRyZWUgKmV4cHJfcCwgZ2ltcGxlX3NlcSAqcHJlX3AsIGJvb2wgd2FudF92 YWx1ZSkKIAkgIHsKIAkgICAgLyogUmVtZW1iZXIgdGhlIG9yaWdpbmFsIHR5cGUgb2YgdGhlIGFy Z3VtZW50IGluIGFuIGludGVybmFsCiAJICAgICAgIGR1bW15IHNlY29uZCBhcmd1bWVudCwgYXMg aW4gR0lNUExFIHBvaW50ZXIgY29udmVyc2lvbnMgYXJlCi0JICAgICAgIHVzZWxlc3MuICAqLwor CSAgICAgICB1c2VsZXNzLiBhbHNvIG1hcmsgdGhpcyBjYWxsIGFzIG5vdCBmb3IgYXV0b21hdGlj IGluaXRpYWxpemF0aW9uCisJICAgICAgIGluIHRoZSBpbnRlcm5hbCBkdW1teSB0aGlyZCBhcmd1 bWVudC4gICovCiAJICAgIHAgPSBDQUxMX0VYUFJfQVJHICgqZXhwcl9wLCAwKTsKKwkgICAgYm9v bCBmb3JfYXV0b19pbml0ID0gZmFsc2U7CiAJICAgICpleHByX3AKLQkgICAgICA9IGJ1aWxkX2Nh bGxfZXhwcl9sb2MgKEVYUFJfTE9DQVRJT04gKCpleHByX3ApLCBmbmRlY2wsIDIsIHAsCi0JCQkJ ICAgICBidWlsZF96ZXJvX2NzdCAoVFJFRV9UWVBFIChwKSkpOworCSAgICAgID0gYnVpbGRfY2Fs bF9leHByX2xvYyAoRVhQUl9MT0NBVElPTiAoKmV4cHJfcCksIGZuZGVjbCwgMywgcCwKKwkJCQkg ICAgIGJ1aWxkX3plcm9fY3N0IChUUkVFX1RZUEUgKHApKSwKKwkJCQkgICAgIGJ1aWxkX2ludF9j c3QgKGludGVnZXJfdHlwZV9ub2RlLAorCQkJCQkJICAgIChpbnQpIGZvcl9hdXRvX2luaXQpKTsK IAkgICAgcmV0dXJuIEdTX09LOwogCSAgfQogCWJyZWFrOwpAQCAtNTI4MCw2ICs1NDIyLDcgQEAg Z2ltcGxpZnlfbW9kaWZ5X2V4cHJfcmhzICh0cmVlICpleHByX3AsIHRyZWUgKmZyb21fcCwgdHJl ZSAqdG9fcCwKIHsKICAgZW51bSBnaW1wbGlmeV9zdGF0dXMgcmV0ID0gR1NfVU5IQU5ETEVEOwog ICBib29sIGNoYW5nZWQ7CisgIHRyZWUgb2JqZWN0ID0gTlVMTF9UUkVFOwogCiAgIGRvCiAgICAg ewpAQCAtNTM5NCw2ICs1NTM3LDE5IEBAIGdpbXBsaWZ5X21vZGlmeV9leHByX3JocyAodHJlZSAq ZXhwcl9wLCB0cmVlICpmcm9tX3AsIHRyZWUgKnRvX3AsCiAJICAgICBjcmFjayBhdCB0aGlzIGJl Zm9yZSB3ZSBicmVhayBpdCBkb3duLiAgKi8KIAkgIGlmIChyZXQgIT0gR1NfVU5IQU5ETEVEKQog CSAgICBicmVhazsKKwkgIC8qIElmIHRoZSB1c2VyIHJlcXVlc3RzIHRvIGluaXRpYWxpemUgYXV0 b21hdGljIHZhcmlhYmxlcywgd2UKKwkgICAgIHNob3VsZCBpbml0aWFsaXplIHBhZGRpbmdzIGlu c2lkZSB0aGUgdmFyaWFibGUuIEFkZCBhIGNhbGwgdG8KKwkgICAgIF9fQlVJTFRJTl9DTEVBUl9Q QURESU5HICgmb2JqZWN0LCAwLCBmb3JfYXV0b19pbml0ID0gdHJ1ZSkgdG8KKwkgICAgIGluaXRp YWxpemUgcGFkZGluZ3Mgb2Ygb2JqZWN0IGFsd2F5cyB0byB6ZXJvIHJlZ2FyZGxlc3Mgb2YKKwkg ICAgIElOSVRfVFlQRS4gICovCisJICBvYmplY3QgPSBUUkVFX09QRVJBTkQgKCpleHByX3AsIDAp OworCSAgaWYgKG9wdF9mb3JfZm4gKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCwgZmxhZ19hdXRvX3Zh cl9pbml0KQorCQk+IEFVVE9fSU5JVF9VTklOSVRJQUxJWkVECisJICAgICAgJiYgVkFSX1AgKG9i amVjdCkKKwkgICAgICAmJiAhREVDTF9FWFRFUk5BTCAob2JqZWN0KQorCSAgICAgICYmICFUUkVF X1NUQVRJQyAob2JqZWN0KSkKKwkgICAgZ2ltcGxlX2FkZF9wYWRkaW5nX2luaXRfZm9yX2F1dG9f dmFyIChvYmplY3QsIGZhbHNlLCBwcmVfcCk7CisKIAkgIC8qIElmIHdlJ3JlIGluaXRpYWxpemlu ZyBmcm9tIGEgQ09OU1RSVUNUT1IsIGJyZWFrIHRoaXMgaW50bwogCSAgICAgaW5kaXZpZHVhbCBN T0RJRllfRVhQUnMuICAqLwogCSAgcmV0dXJuIGdpbXBsaWZ5X2luaXRfY29uc3RydWN0b3IgKGV4 cHJfcCwgcHJlX3AsIHBvc3RfcCwgd2FudF92YWx1ZSwKZGlmZiAtLWdpdCBhL2djYy9pbnRlcm5h bC1mbi5jIGIvZ2NjL2ludGVybmFsLWZuLmMKaW5kZXggMTM2MGEwMGYwYjkzLi42MjBhMmY5ZmVl MmEgMTAwNjQ0Ci0tLSBhL2djYy9pbnRlcm5hbC1mbi5jCisrKyBiL2djYy9pbnRlcm5hbC1mbi5j CkBAIC0yOTc3LDYgKzI5NzcsMTE0IEBAIGV4cGFuZF9VTklRVUUgKGludGVybmFsX2ZuLCBnY2Fs bCAqc3RtdCkKICAgICBlbWl0X2luc24gKHBhdHRlcm4pOwogfQogCisvKiBFeHBhbmQgdGhlIElG Tl9ERUZFUlJFRF9JTklUIGZ1bmN0aW9uOgorICAgSW5pdGlhbGl6ZSB0aGUgTEhTIHZhcmlhYmxl IHdpdGggemVyby9wYXR0ZXJuIGFjY29yZGluZyB0byBpdHMgc2Vjb25kCisgICBhcmd1bWVudCBJ TklUX1RZUEUuCisgICBpZiBJTklUX1RZUEUgaXMgQVVUT19JTklUX1pFUk8sIHVzZSB6ZXJvZXMg dG8gaW5pdGlhbGl6ZTsKKyAgIGlmIElOSVRfVFlQRSBpcyBBVVRPX0lOSVRfUEFUVEVSTiwgdXNl IDB4RkUgYnl0ZS1yZXBlYXRhYmxlIHBhdHRlcm4KKyAgICAgdG8gaW5pdGlhbGl6ZTsKKyAgIGFs bCB0aGUgbWVtb3J5IGNvdmVyZWQgYnkgdGhpcyBMSFMgdmFyaWFibGUgaXMgaW5pdGlhbGl6ZWQg aW5jbHVkaW5nCisgICBwYWRkaW5ncy4KKyAgIFRoZSByZWFzb25zIHRvIGNob29zZSAweEZFIGZv ciBwYXR0ZXJuIGluaXRpYWxpemF0aW9uIGFyZToKKyAgICAgMS4gSXQgaXMgYSBub24tY2Fub25p Y2FsIHZpcnR1YWwgYWRkcmVzcyBvbiB4ODZfNjQsIGFuZCBhdCB0aGUKKwloaWdoIGVuZCBvZiB0 aGUgaTM4NiBrZXJuZWwgYWRkcmVzcyBzcGFjZS4KKyAgICAgMi4gSXQgaXMgYSB2ZXJ5IGxhcmdl IGZsb2F0IHZhbHVlICgtMS42OTQ3Mzk1MzAzMTczNzllKzM4KS4KKyAgICAgMy4gSXQgaXMgYWxz byBhbiB1bnVzdWFsIG51bWJlciBmb3IgaW50ZWdlcnMuICAqLworI2RlZmluZSBJTklUX1BBVFRF Uk5fVkFMVUUgIDB4RkUKK3N0YXRpYyB2b2lkCitleHBhbmRfREVGRVJSRURfSU5JVCAoaW50ZXJu YWxfZm4sIGdjYWxsICpzdG10KQoreworICB0cmVlIHZhciA9IGdpbXBsZV9jYWxsX2xocyAoc3Rt dCk7CisgIHRyZWUgc2l6ZV9vZl92YXIgPSBnaW1wbGVfY2FsbF9hcmcgKHN0bXQsIDApOworICB0 cmVlIHZsYWFkZHIgPSBOVUxMX1RSRUU7CisgIHRyZWUgdmFyX3R5cGUgPSBUUkVFX1RZUEUgKHZh cik7CisgIGJvb2wgaXNfdmxhID0gKGJvb2wpIFRSRUVfSU5UX0NTVF9MT1cgKGdpbXBsZV9jYWxs X2FyZyAoc3RtdCwgMikpOworICBlbnVtIGF1dG9faW5pdF90eXBlIGluaXRfdHlwZQorICAgID0g KGVudW0gYXV0b19pbml0X3R5cGUpIFRSRUVfSU5UX0NTVF9MT1cgKGdpbXBsZV9jYWxsX2FyZyAo c3RtdCwgMSkpOworCisgIGdjY19hc3NlcnQgKGluaXRfdHlwZSA+IEFVVE9fSU5JVF9VTklOSVRJ QUxJWkVEKTsKKworICAvKiBpZiB0aGlzIHZhcmlhYmxlIGlzIGEgVkxBLCBnZXQgaXRzIFNJWkUg YW5kIEFERFIgZmlyc3QuICAqLworICBpZiAoaXNfdmxhKQorICAgIHsKKyAgICAgIC8qIFRoZSB0 ZW1wb3JhcnkgYWRkcmVzcyB2YXJpYWJsZSBmb3IgdGhpcyB2bGEgc2hvdWxkIGhhdmUgYmVlbgor CSBjcmVhdGVkIGR1cmluZyBnaW1wbGlmaWNhdGlvbiBwaGFzZS4gIFJlZmVyIHRvIGdpbXBsaWZ5 X3ZsYV9kZWNsCisJIGZvciBkZXRhaWxzLiAgKi8KKyAgICAgIHRyZWUgdmFyX2RlY2wgPSAoVFJF RV9DT0RFICh2YXIpID09IFNTQV9OQU1FKSA/CisJCSAgICAgICBTU0FfTkFNRV9WQVIgKHZhcikg OiB2YXI7CisgICAgICBnY2NfYXNzZXJ0IChERUNMX0hBU19WQUxVRV9FWFBSX1AgKHZhcl9kZWNs KSk7CisgICAgICBnY2NfYXNzZXJ0IChUUkVFX0NPREUgKERFQ0xfVkFMVUVfRVhQUiAodmFyX2Rl Y2wpKSA9PSBJTkRJUkVDVF9SRUYpOworICAgICAgLyogR2V0IHRoZSBhZGRyZXNzIG9mIHRoaXMg dmxhIHZhcmlhYmxlLiAgKi8KKyAgICAgIHZsYWFkZHIgPSBUUkVFX09QRVJBTkQgKERFQ0xfVkFM VUVfRVhQUiAodmFyX2RlY2wpLCAwKTsKKyAgICB9CisKKyAgaWYgKGlzX3ZsYSB8fCAoIXVzZV9y ZWdpc3Rlcl9mb3JfZGVjbCAodmFyKSkpCisgICAgeworICAgIC8qIElmIHRoaXMgaXMgYSBWTEEg b3IgdGhlIHZhcmlhYmxlIGlzIG5vdCBpbiByZWdpc3RlciwKKyAgICAgICBleHBhbmQgdG8gYSBt ZW1zZXQgdG8gaW5pdGlhbGl6ZSBpdC4gICovCisgICAgICBpZiAoVFJFRV9DT0RFICh2YXIpID09 IFNTQV9OQU1FKQorCXZhciA9IFNTQV9OQU1FX1ZBUiAodmFyKTsKKyAgICAgIHRyZWUgYWRkciA9 IGlzX3ZsYSA/IHZsYWFkZHI6IGJ1aWxkX2ZvbGRfYWRkcl9leHByICh2YXIpOworICAgICAgdHJl ZSB2YWx1ZSA9IChpbml0X3R5cGUgPT0gQVVUT19JTklUX1BBVFRFUk4pID8KKwkJICAgIGJ1aWxk X2ludF9jc3QgKHVuc2lnbmVkX2NoYXJfdHlwZV9ub2RlLAorCQkJCSAgIElOSVRfUEFUVEVSTl9W QUxVRSkgOgorCQkgICAgYnVpbGRfemVyb19jc3QgKHVuc2lnbmVkX2NoYXJfdHlwZV9ub2RlKTsK KyAgICAgIHRyZWUgbV9jYWxsID0gYnVpbGRfY2FsbF9leHByIChidWlsdGluX2RlY2xfaW1wbGlj aXQgKEJVSUxUX0lOX01FTVNFVCksCisJCQkJICAgICAzLCBhZGRyLCB2YWx1ZSwgc2l6ZV9vZl92 YXIpOworICAgICAgLyogRXhwYW5kIHRoaXMgbWVtc2V0IGNhbGwuICAqLworICAgICAgZXhwYW5k X2J1aWx0aW5fbWVtc2V0IChtX2NhbGwsIE5VTExfUlRYLCBUWVBFX01PREUgKHZhcl90eXBlKSk7 CisgICAgfQorICBlbHNlCisgICAgeworICAgIC8qIElmIHRoaXMgdmFyaWFibGUgaXMgaW4gYSBy ZWdpc3RlciwgdXNlIGV4cGFuZF9hc3NpZ25tZW50IG1pZ2h0CisgICAgICAgZ2VuZXJhdGUgYmV0 dGVyIGNvZGUuICAqLworICAgICAgdHJlZSBwYXR0ZXJuID0gTlVMTF9UUkVFOworICAgICAgdW5z aWduZWQgSE9TVF9XSURFX0lOVCB0b3RhbF9ieXRlcworCT0gdHJlZV90b191aHdpIChUWVBFX1NJ WkVfVU5JVCAodmFyX3R5cGUpKTsKKworICAgICAgaWYgKElOVEVHUkFMX1RZUEVfUCAodmFyX3R5 cGUpIHx8IFBPSU5URVJfVFlQRV9QICh2YXJfdHlwZSkpCisJeworCSAgdW5zaWduZWQgY2hhciAq cHRyID0gKHVuc2lnbmVkIGNoYXIgKil4bWFsbG9jICh0b3RhbF9ieXRlcyk7CisJICBmb3IgKHVu c2lnbmVkIGludCBpID0gMDsgaSA8IHRvdGFsX2J5dGVzOyBpKyspCisJICAgIHB0cltpXSA9IElO SVRfUEFUVEVSTl9WQUxVRTsKKwkgIHdpZGVfaW50IHJlc3VsdCA9IHdpOjpmcm9tX2J1ZmZlciAo cHRyLCB0b3RhbF9ieXRlcyk7CisJICBwYXR0ZXJuID0gIHdpZGVfaW50X3RvX3RyZWUgKHZhcl90 eXBlLCByZXN1bHQpOworCX0KKyAgICAgIGVsc2UgaWYgKFNDQUxBUl9GTE9BVF9UWVBFX1AgKHZh cl90eXBlKSkKKwl7CisJICB1bnNpZ25lZCBpbnQgbWF4X2luZGV4ID0gMiArIDIgKiB0b3RhbF9i eXRlczsKKwkgIGNoYXIgKnB0cj0gKGNoYXIgKil4bWFsbG9jIChtYXhfaW5kZXgpOworCSAgcHRy WzBdID0gJzAnOworCSAgcHRyWzFdID0gJ3gnOworCSAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDI7 IGkgPCBtYXhfaW5kZXg7IGkgKz0gMikKKwkgICAgcHRyW2ldID0gJ0YnOworCSAgZm9yICh1bnNp Z25lZCBpbnQgaSA9IDM7IGkgPCBtYXhfaW5kZXg7IGkgKz0gMikKKwkgICAgcHRyW2ldID0gJ0Un OworCSAgUkVBTF9WQUxVRV9UWVBFIHJfdmFyOworCSAgcmVhbF9mcm9tX3N0cmluZyAoJnJfdmFy LCBwdHIpOworCSAgcGF0dGVybiA9IGJ1aWxkX3JlYWwgKHZhcl90eXBlLCByX3Zhcik7CisJfQor ICAgICAgZWxzZQorCXsKKwkgIHRyZWUgaW5kZXhfdHlwZSA9IGJ1aWxkX2luZGV4X3R5cGUgKHNp emVfaW50ICh0b3RhbF9ieXRlcyAtIDEpKTsKKwkgIHRyZWUgYXJyYXlfdHlwZSA9IGJ1aWxkX2Fy cmF5X3R5cGUgKHVuc2lnbmVkX2NoYXJfdHlwZV9ub2RlLAorCQkJCQkgICAgICBpbmRleF90eXBl KTsKKwkgIHRyZWUgZWxlbWVudCA9IGJ1aWxkX2ludF9jc3QgKHVuc2lnbmVkX2NoYXJfdHlwZV9u b2RlLAorCQkJCQlJTklUX1BBVFRFUk5fVkFMVUUpOworCSAgdmVjPGNvbnN0cnVjdG9yX2VsdCwg dmFfZ2M+ICplbHRzID0gTlVMTDsKKwkgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdG90 YWxfYnl0ZXM7IGkrKykKKwkgICAgQ09OU1RSVUNUT1JfQVBQRU5EX0VMVCAoZWx0cywgTlVMTF9U UkVFLCBlbGVtZW50KTsKKwkgIHBhdHRlcm4gPSBidWlsZF9jb25zdHJ1Y3RvciAoYXJyYXlfdHlw ZSwgZWx0cyk7CisJICBwYXR0ZXJuID0gYnVpbGQxIChWSUVXX0NPTlZFUlRfRVhQUiwgdmFyX3R5 cGUsIHBhdHRlcm4pOworCX0KKworICAgICAgdHJlZSBpbml0ID0gKGluaXRfdHlwZSA9PSBBVVRP X0lOSVRfUEFUVEVSTikgPworCQkgICBwYXR0ZXJuIDoKKwkJICAgYnVpbGRfemVyb19jc3QgKFRS RUVfVFlQRSAodmFyKSk7CisgICAgICBleHBhbmRfYXNzaWdubWVudCAodmFyLCBpbml0LCBmYWxz ZSk7CisgICAgfQorfQorCiAvKiBUaGUgc2l6ZSBvZiBhbiBPcGVuQUNDIGNvbXB1dGUgZGltZW5z aW9uLiAgKi8KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL2djYy9pbnRlcm5hbC1mbi5kZWYg Yi9nY2MvaW50ZXJuYWwtZm4uZGVmCmluZGV4IDNhYzlhZTY4YjJhNi4uZGM4NGI3YjdjYTc5IDEw MDY0NAotLS0gYS9nY2MvaW50ZXJuYWwtZm4uZGVmCisrKyBiL2djYy9pbnRlcm5hbC1mbi5kZWYK QEAgLTM2MCw2ICszNjAsMTEgQEAgREVGX0lOVEVSTkFMX0ZOIChWRUNfQ09OVkVSVCwgRUNGX0NP TlNUIHwgRUNGX0xFQUYgfCBFQ0ZfTk9USFJPVywgTlVMTCkKIERFRl9JTlRFUk5BTF9GTiAoVU5J UVVFLCBFQ0ZfTk9USFJPVywgTlVMTCkKIERFRl9JTlRFUk5BTF9GTiAoUEhJLCAwLCBOVUxMKQog CisvKiBBIGZ1bmN0aW9uIHRvIHJlcHJlc2VudCBhbiBhcnRpZmljYWwgaW5pdGlhbGl6YXRpb24g dG8gYW4gdW5pbml0aWFsaXplZAorICAgYXV0b21hdGljIHZhcmlhYmxlLiAgVGhlIGZpcnN0IGFy Z3VtZW50IGlzIHRoZSB2YXJpYWJsZSBpdHNlbGYsIHRoZQorICAgc2Vjb25kIGFyZ3VtZW50IGlz IHRoZSBpbml0aWFsaXphdGlvbiB0eXBlLiAgKi8KK0RFRl9JTlRFUk5BTF9GTiAoREVGRVJSRURf SU5JVCwgRUNGX0NPTlNUIHwgRUNGX0xFQUYgfCBFQ0ZfTk9USFJPVywgTlVMTCkKKwogLyogRElN X1NJWkUgYW5kIERJTV9QT1MgcmV0dXJuIHRoZSBzaXplIG9mIGEgcGFydGljdWxhciBjb21wdXRl CiAgICBkaW1lbnNpb24gYW5kIHRoZSBleGVjdXRpbmcgdGhyZWFkJ3MgcG9zaXRpb24gd2l0aGlu IHRoYXQKICAgIGRpbWVuc2lvbi4gIERJTV9QT1MgaXMgcHVyZSAoYW5kIG5vdCBjb25zdCkgc28g dGhhdCBpdCBpc24ndApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0 by1pbml0LTEuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YjhiYTNkZDdlOGQKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMS5jCkBA IC0wLDAgKzEsMzkgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZvciBpbnRlZ2Vy IGFuZCBwb2ludGVyIHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcy4gICovCisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJv IC1mZHVtcC10cmVlLWdpbXBsZSIgfSAqLworCisjaWZuZGVmIF9fY3BsdXNwbHVzCisjIGRlZmlu ZSBib29sIF9Cb29sCisjZW5kaWYKKworZW51bSBFIHsKKyAgTjEgPSAwLAorICBOMiwKKyAgTjMK K307CisKK2V4dGVybiB2b2lkIGJhciAoY2hhciwgc2hvcnQsIGludCwgZW51bSBFLCBsb25nLCBs b25nIGxvbmcsIGludCAqLCBib29sKTsKKwordm9pZCBmb28oKQoreworICBjaGFyIHRlbXAxOwor ICBzaG9ydCB0ZW1wMjsKKyAgaW50IHRlbXAzOworICBlbnVtIEUgdGVtcDQ7CisgIGxvbmcgdGVt cDU7CisgIGxvbmcgbG9uZyB0ZW1wNjsKKyAgaW50ICp0ZW1wNzsKKyAgYm9vbCB0ZW1wODsKKwor ICBiYXIgKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCB0ZW1wNSwgdGVtcDYsIHRlbXA3LCB0 ZW1wOCk7CisgIHJldHVybjsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0 ZW1wMSA9IC5ERUZFUlJFRF9JTklUIFxcKDEsIDIsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wMiA9IC5ERUZFUlJFRF9JTklUIFxcKDIs IDIsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICJ0ZW1wMyA9IC5ERUZFUlJFRF9JTklUIFxcKDQsIDIsIDBcXCkiICJnaW1wbGUiIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wNCA9IC5ERUZFUlJFRF9JTklUIFxc KDQsIDIsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wICJ0ZW1wNSA9IC5ERUZFUlJFRF9JTklUIFxcKDgsIDIsIDBcXCkiICJnaW1wbGUiIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wNiA9IC5ERUZFUlJFRF9JTklU IFxcKDgsIDIsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wICJ0ZW1wNyA9IC5ERUZFUlJFRF9JTklUIFxcKDgsIDIsIDBcXCkiICJnaW1wbGUiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wOCA9IC5ERUZFUlJFRF9J TklUIFxcKDEsIDIsIDBcXCkiICJnaW1wbGUiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTEwLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9hdXRvLWluaXQtMTAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjBhODg0MWU2ZTBmOQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2F1dG8taW5pdC0xMC5jCkBAIC0wLDAgKzEsMTcgQEAKKy8qIFZlcmlmeSB0aGUgdmFy aWFibGUgYXR0cmlidXRlICJ1bmluaXRpYWxpemVkIi4gICovIAorLyogeyBkZy1kbyBjb21waWxl IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAt ZmR1bXAtdHJlZS1naW1wbGUiIH0gKi8KKworZXh0ZXJuIHZvaWQgYmFyIChjaGFyLCBsb25nIGxv bmcgKikgX19hdHRyaWJ1dGVfXyAoKHVuaW5pdGlhbGl6ZWQpKTsgLyogeyBkZy13YXJuaW5nICIn dW5pbml0aWFsaXplZCcgYXR0cmlidXRlIGlnbm9yZWQiIH0gKi8KKwordm9pZCBmb28oKQorewor ICBzaG9ydCB0ZW1wMTsKKyAgbG9uZyBsb25nIF9fYXR0cmlidXRlX18gKCh1bmluaXRpYWxpemVk KSkgdGVtcDJbMTBdOworCisgIGJhciAodGVtcDEsIHRlbXAyKTsKKyAgcmV0dXJuOworfQorCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAxID0gLkRFRkVSUkVEX0lOSVQgXFwo MiwgMSwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtbm90ICJ0ZW1wMiA9IC5ERUZFUlJFRF9JTklUIFxcKCIgImdpbXBsZSIgfSB9ICovCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTEuYyBiL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uYTJkNjY5MDhkODNlCi0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTExLmMKQEAgLTAsMCArMSwxNCBAQAor LyogVmVyaWZ5IHplcm8gaW5pdGlhbGl6YXRpb24gZm9yIFZMQSBhdXRvbWF0aWMgdmFyaWFibGVz LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlh bC1hdXRvLXZhci1pbml0PXplcm8gLWZkdW1wLXRyZWUtZ2ltcGxlIiB9ICovCisKK2V4dGVybiB2 b2lkIGJhciAoaW50KTsKKwordm9pZCBmb28oaW50IG4pCit7CisgIGludCBhcnJbbl07CisgIGJh ciAoYXJyWzJdKTsKKyAgcmV0dXJuOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAgIi5ERUZFUlJFRF9JTklUIFxcKEQuXFxkKiwgMiwgMVxcKSIgImdpbXBsZSIgfSB9ICovCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTIuYyBiL2dj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xMi5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjA1ZDc0M2ZkYTAyCi0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTEyLmMKQEAgLTAsMCArMSwxNCBA QAorLyogVmVyaWZ5IHplcm8gaW5pdGlhbGl6YXRpb24gZm9yIFZMQSBhdXRvbWF0aWMgdmFyaWFi bGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJp dmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXRyZWUtZ2ltcGxlIiB9ICovCisKK2V4 dGVybiB2b2lkIGJhciAoaW50KTsKKwordm9pZCBmb28oaW50IG4pCit7CisgIGludCBhcnJbbl07 CisgIGJhciAoYXJyWzJdKTsKKyAgcmV0dXJuOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgIi5ERUZFUlJFRF9JTklUIFxcKEQuXFxkKiwgMSwgMVxcKSIgImdpbXBsZSIgfSB9 ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTMu YyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xMy5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjBjMDM2NWIyODhhCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTEzLmMKQEAgLTAsMCAr MSwyMyBAQAorLyogVmVyaWZ5IHRoZSBhdXRvIGluaXRpYWxpemF0aW9uIG9mIHN0cnVjdHVyZSBv ciB1bmlvbiB3aXRoIGEgZmxleGlibGUgYXJyYXkKKyAgIG1lbWJlci4gICovIAorLyogeyBkZy1k byBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9 cGF0dGVybiAtZmR1bXAtdHJlZS1naW1wbGUiIH0gKi8KKworc3RydWN0IGEgeworICBpbnQgYjsK KyAgaW50IGFycmF5W107Cit9OwordW5pb24gdGFyIHsKKyAgc3RydWN0IGEgYmFyOworICBjaGFy IGJ1ZjsKK307CisKK2ludCBmb28oKQoreworICBzdHJ1Y3QgYSBkOworICB1bmlvbiB0YXIgdmFy OworICByZXR1cm4gZC5iICsgdmFyLmJhci5iOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgImQgPSAuREVGRVJSRURfSU5JVCBcXCg0LCAxLCAwXFwpIiAiZ2ltcGxlIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidmFyID0gLkRFRkVSUkVEX0lOSVQg XFwoNCwgMSwgMFxcKSIgImdpbXBsZSIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTQuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L2F1dG8taW5pdC0xNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u OTg2YmIxOWZhYWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vYXV0by1pbml0LTE0LmMKQEAgLTAsMCArMSwyMyBAQAorLyogVmVyaWZ5IHRoZSBhdXRvIGlu aXRpYWxpemF0aW9uIG9mIHN0cnVjdHVyZSBvciB1bmlvbiB3aXRoIGEgZmxleGlibGUgYXJyYXkK KyAgIG1lbWJlci4gICovIAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyAtZmR1bXAtdHJlZS1naW1wbGUiIH0gKi8K Kworc3RydWN0IGEgeworICBpbnQgYjsKKyAgaW50IGFycmF5W107Cit9OwordW5pb24gdGFyIHsK KyAgc3RydWN0IGEgYmFyOworICBjaGFyIGJ1ZjsKK307CisKK2ludCBmb28oKQoreworICBzdHJ1 Y3QgYSBkOworICB1bmlvbiB0YXIgdmFyOworICByZXR1cm4gZC5iICsgdmFyLmJhci5iOworfQor CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgImQgPSAuREVGRVJSRURfSU5JVCBcXCg0 LCAyLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cCAidmFyID0gLkRFRkVSUkVEX0lOSVQgXFwoNCwgMiwgMFxcKSIgImdpbXBsZSIgfSB9ICovCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTUuYyBiL2dj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xNS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWE5ZDdmYWI2OGE2Ci0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTE1LmMKQEAgLTAsMCArMSwxMyBA QAorLyogVmVyaWZ5IHRoZSBhdXRvIGluaXRpYWxpemF0aW9uIG9mIG5lc3RlZCBWTEEuICAqLwor LyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8t dmFyLWluaXQ9emVybyAtZmR1bXAtdHJlZS1naW1wbGUiIH0gKi8KKwordm9pZCBnKHZvaWQgKik7 CisKK3ZvaWQgZm9vKGludCBhKQoreworICBpbnQgeFthXVthXTsKKyAgZyh4KTsKK30KKworLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICIuREVGRVJSRURfSU5JVCBcXChELlxcZCosIDIs IDFcXCkiICJnaW1wbGUiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vYXV0by1pbml0LTE2LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWlu aXQtMTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg2NDkzZWVm OWU0NwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8t aW5pdC0xNi5jCkBAIC0wLDAgKzEsMTMgQEAKKy8qIFZlcmlmeSB0aGUgYXV0byBpbml0aWFsaXph dGlvbiBvZiBuZXN0ZWQgVkxBLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXRyZWUtZ2lt cGxlIiB9ICovCisKK3ZvaWQgZyh2b2lkICopOworCit2b2lkIGZvbyhpbnQgYSkKK3sKKyAgaW50 IHhbYV1bYV07CisgIGcoeCk7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAi LkRFRkVSUkVEX0lOSVQgXFwoRC5cXGQqLCAxLCAxXFwpIiAiZ2ltcGxlIiB9IH0gKi8KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0yLmMgYi9nY2MvdGVz dHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uNzE5NTViNTRiYTAzCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTIuYwpAQCAtMCwwICsxLDM5IEBACisvKiBW ZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgaW50ZWdlciBhbmQgcG9pbnRlciB0eXBl IGF1dG9tYXRpYyB2YXJpYWJsZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsg ZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtdHJlZS1n aW1wbGUiIH0gKi8KKworI2lmbmRlZiBfX2NwbHVzcGx1cworIyBkZWZpbmUgYm9vbCBfQm9vbAor I2VuZGlmCisKK2VudW0gRSB7CisgIE4xID0gMCwKKyAgTjIsCisgIE4zCit9OworCitleHRlcm4g dm9pZCBiYXIgKGNoYXIsIHNob3J0LCBpbnQsIGVudW0gRSwgbG9uZywgbG9uZyBsb25nLCBpbnQg KiwgYm9vbCk7CisKK3ZvaWQgZm9vKCkKK3sKKyAgY2hhciB0ZW1wMTsKKyAgc2hvcnQgdGVtcDI7 CisgIGludCB0ZW1wMzsKKyAgZW51bSBFIHRlbXA0OworICBsb25nIHRlbXA1OworICBsb25nIGxv bmcgdGVtcDY7CisgIGludCAqdGVtcDc7CisgIGJvb2wgdGVtcDg7CisKKyAgYmFyICh0ZW1wMSwg dGVtcDIsIHRlbXAzLCB0ZW1wNCwgdGVtcDUsIHRlbXA2LCB0ZW1wNywgdGVtcDgpOworICByZXR1 cm47Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDEgPSAuREVGRVJS RURfSU5JVCBcXCgxLCAxLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAidGVtcDIgPSAuREVGRVJSRURfSU5JVCBcXCgyLCAxLCAwXFwpIiAiZ2lt cGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDMgPSAuREVG RVJSRURfSU5JVCBcXCg0LCAxLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcCAidGVtcDQgPSAuREVGRVJSRURfSU5JVCBcXCg0LCAxLCAwXFwpIiAi Z2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDUgPSAu REVGRVJSRURfSU5JVCBcXCg4LCAxLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDYgPSAuREVGRVJSRURfSU5JVCBcXCg4LCAxLCAwXFwp IiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDcg PSAuREVGRVJSRURfSU5JVCBcXCg4LCAxLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDggPSAuREVGRVJSRURfSU5JVCBcXCgxLCAxLCAw XFwpIiAiZ2ltcGxlIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL2F1dG8taW5pdC0zLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQt My5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzEyMjc1NjY2Mzgx Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0 LTMuYwpAQCAtMCwwICsxLDE5IEBACisvKiBWZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3Ig ZmxvYXRpbmcgcG9pbnQgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXpl cm8gLWZkdW1wLXRyZWUtZ2ltcGxlIiB9ICovCisKK2xvbmcgZG91YmxlIHJlc3VsdDsKKworbG9u ZyBkb3VibGUgZm9vKCkKK3sKKyAgZmxvYXQgdGVtcDE7CisgIGRvdWJsZSB0ZW1wMjsKKyAgbG9u ZyBkb3VibGUgdGVtcDM7CisgIAorICByZXN1bHQgPSB0ZW1wMSArIHRlbXAyICsgdGVtcDM7Cisg IHJldHVybiByZXN1bHQ7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVt cDEgPSAuREVGRVJSRURfSU5JVCBcXCg0LCAyLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDIgPSAuREVGRVJSRURfSU5JVCBcXCg4LCAy LCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAi dGVtcDMgPSAuREVGRVJSRURfSU5JVCBcXCgxNiwgMiwgMFxcKSIgImdpbXBsZSIgfSB9ICovCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtNC5jIGIvZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjE1YTQzMTcyNmRjZAotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC00LmMKQEAgLTAsMCArMSwxOSBAQAor LyogVmVyaWZ5IHBhdHRlcm4gaW5pdGlhbGl6YXRpb24gZm9yIGZsb2F0aW5nIHBvaW50IHR5cGUg YXV0b21hdGljIHZhcmlhYmxlcy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD1wYXR0ZXJuIC1mZHVtcC10cmVlLWdp bXBsZSIgfSAqLworCitsb25nIGRvdWJsZSByZXN1bHQ7CisKK2xvbmcgZG91YmxlIGZvbygpCit7 CisgIGZsb2F0IHRlbXAxOworICBkb3VibGUgdGVtcDI7CisgIGxvbmcgZG91YmxlIHRlbXAzOwor ICAKKyAgcmVzdWx0ID0gdGVtcDEgKyB0ZW1wMiArIHRlbXAzOworICByZXR1cm4gcmVzdWx0Owor fQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAxID0gLkRFRkVSUkVEX0lO SVQgXFwoNCwgMSwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgInRlbXAyID0gLkRFRkVSUkVEX0lOSVQgXFwoOCwgMSwgMFxcKSIgImdpbXBsZSIg fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAzID0gLkRFRkVSUkVE X0lOSVQgXFwoMTYsIDEsIDBcXCkiICJnaW1wbGUiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTUuYyBiL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2F1dG8taW5pdC01LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi41NGY5MGJjODkwYjUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9hdXRvLWluaXQtNS5jCkBAIC0wLDAgKzEsMjEgQEAKKy8qIFZlcmlmeSB6ZXJvIGlu aXRpYWxpemF0aW9uIGZvciBjb21wbGV4IHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcy4gICovCisv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12 YXItaW5pdD16ZXJvIC1mZHVtcC10cmVlLWdpbXBsZSIgfSAqLworCisKK19Db21wbGV4IGxvbmcg ZG91YmxlIHJlc3VsdDsKKworX0NvbXBsZXggbG9uZyBkb3VibGUgZm9vKCkKK3sKKyAgX0NvbXBs ZXggZmxvYXQgdGVtcDE7CisgIF9Db21wbGV4IGRvdWJsZSB0ZW1wMjsKKyAgX0NvbXBsZXggbG9u ZyBkb3VibGUgdGVtcDM7CisKKyAgcmVzdWx0ID0gdGVtcDEgKyB0ZW1wMiArIHRlbXAzOworICBy ZXR1cm4gcmVzdWx0OworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAx ID0gLkRFRkVSUkVEX0lOSVQgXFwoOCwgMiwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAyID0gLkRFRkVSUkVEX0lOSVQgXFwoMTYsIDIs IDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0 ZW1wMyA9IC5ERUZFUlJFRF9JTklUIFxcKDMyLCAyLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKwpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTYuYyBiL2dj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC02LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40MTI0YTJiMTgzYWEKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtNi5jCkBAIC0wLDAgKzEsMjEgQEAK Ky8qIFZlcmlmeSBwYXR0ZXJuIGluaXRpYWxpemF0aW9uIGZvciBjb21wbGV4IHR5cGUgYXV0b21h dGljIHZhcmlhYmxlcy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD1wYXR0ZXJuIC1mZHVtcC10cmVlLWdpbXBsZSIg fSAqLworCisKK19Db21wbGV4IGxvbmcgZG91YmxlIHJlc3VsdDsKKworX0NvbXBsZXggbG9uZyBk b3VibGUgZm9vKCkKK3sKKyAgX0NvbXBsZXggZmxvYXQgdGVtcDE7CisgIF9Db21wbGV4IGRvdWJs ZSB0ZW1wMjsKKyAgX0NvbXBsZXggbG9uZyBkb3VibGUgdGVtcDM7CisKKyAgcmVzdWx0ID0gdGVt cDEgKyB0ZW1wMiArIHRlbXAzOworICByZXR1cm4gcmVzdWx0OworfQorCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi10cmVlLWR1bXAgInRlbXAxID0gLkRFRkVSUkVEX0lOSVQgXFwoOCwgMSwgMFxcKSIg ImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAyID0g LkRFRkVSUkVEX0lOSVQgXFwoMTYsIDEsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wMyA9IC5ERUZFUlJFRF9JTklUIFxcKDMyLCAxLCAw XFwpIiAiZ2ltcGxlIiB9IH0gKi8KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vYXV0by1pbml0LTcuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5p dC03LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xOTk4Njk2OWE4 ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWlu aXQtNy5jCkBAIC0wLDAgKzEsMzUgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZv ciBhcnJheSwgdW5pb24sIGFuZCBzdHJ1Y3R1cmUgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzLiAg Ki8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1h dXRvLXZhci1pbml0PXplcm8gLWZkdW1wLXRyZWUtZ2ltcGxlIiB9ICovCisKK3N0cnVjdCBTCit7 CisgIGludCBmMTsKKyAgZmxvYXQgZjI7CisgIGNoYXIgZjNbMjBdOworfTsKKwordW5pb24gVQor eworICBjaGFyIHUxWzVdOworICBpbnQgdTI7CisgIGZsb2F0IHUzOyAKK307CisKK2RvdWJsZSBy ZXN1bHQ7CisKK2RvdWJsZSBmb28oKQoreworICBpbnQgdGVtcDFbM107CisgIGRvdWJsZSB0ZW1w MlszXTsKKyAgc3RydWN0IFMgdGVtcDM7CisgIHVuaW9uIFUgdGVtcDQ7CisgIAorICByZXN1bHQg PSB0ZW1wMVsyXSArIHRlbXAyWzFdICsgdGVtcDMuZjIgKyB0ZW1wNC51MzsKKyAgcmV0dXJuIHJl c3VsdDsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wMSA9IC5ERUZF UlJFRF9JTklUIFxcKDEyLCAyLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcCAidGVtcDIgPSAuREVGRVJSRURfSU5JVCBcXCgyNCwgMiwgMFxcKSIg ImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAzID0g LkRFRkVSUkVEX0lOSVQgXFwoMjgsIDIsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wNCA9IC5ERUZFUlJFRF9JTklUIFxcKDgsIDIsIDBc XCkiICJnaW1wbGUiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vYXV0by1pbml0LTguYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC04 LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45Nzc4ZTkxMWUzYWQK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQt OC5jCkBAIC0wLDAgKzEsMzUgQEAKKy8qIFZlcmlmeSBwYXR0ZXJuIGluaXRpYWxpemF0aW9uIGZv ciBhcnJheSwgdW5pb24sIGFuZCBzdHJ1Y3R1cmUgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzLiAg Ki8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1h dXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXRyZWUtZ2ltcGxlIiB9ICovCisKK3N0cnVjdCBT Cit7CisgIGludCBmMTsKKyAgZmxvYXQgZjI7CisgIGNoYXIgZjNbMjBdOworfTsKKwordW5pb24g VQoreworICBjaGFyIHUxWzVdOworICBpbnQgdTI7CisgIGZsb2F0IHUzOyAKK307CisKK2RvdWJs ZSByZXN1bHQ7CisKK2RvdWJsZSBmb28oKQoreworICBpbnQgdGVtcDFbM107CisgIGRvdWJsZSB0 ZW1wMlszXTsKKyAgc3RydWN0IFMgdGVtcDM7CisgIHVuaW9uIFUgdGVtcDQ7CisgIAorICByZXN1 bHQgPSB0ZW1wMVsyXSArIHRlbXAyWzFdICsgdGVtcDMuZjIgKyB0ZW1wNC51MzsKKyAgcmV0dXJu IHJlc3VsdDsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wMSA9IC5E RUZFUlJFRF9JTklUIFxcKDEyLCAxLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDIgPSAuREVGRVJSRURfSU5JVCBcXCgyNCwgMSwgMFxc KSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAz ID0gLkRFRkVSUkVEX0lOSVQgXFwoMjgsIDEsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wNCA9IC5ERUZFUlJFRF9JTklUIFxcKDgsIDEs IDBcXCkiICJnaW1wbGUiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vYXV0by1pbml0LTkuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5p dC05LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45MGJiZDhjYjFh ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWlu aXQtOS5jCkBAIC0wLDAgKzEsMTcgQEAKKy8qIFZlcmlmeSB0aGUgdmFyaWFibGUgYXR0cmlidXRl ICJ1bmluaXRpYWxpemVkIi4gICovIAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyAtZmR1bXAtdHJlZS1naW1wbGUi IH0gKi8KKworZXh0ZXJuIHZvaWQgYmFyIChjaGFyLCBsb25nIGxvbmcgKikgX19hdHRyaWJ1dGVf XyAoKHVuaW5pdGlhbGl6ZWQpKTsgLyogeyBkZy13YXJuaW5nICIndW5pbml0aWFsaXplZCcgYXR0 cmlidXRlIGlnbm9yZWQiIH0gKi8KKwordm9pZCBmb28oKQoreworICBzaG9ydCB0ZW1wMTsKKyAg bG9uZyBsb25nIF9fYXR0cmlidXRlX18gKCh1bmluaXRpYWxpemVkKSkgdGVtcDJbMTBdOworCisg IGJhciAodGVtcDEsIHRlbXAyKTsKKyAgcmV0dXJuOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAgInRlbXAxID0gLkRFRkVSUkVEX0lOSVQgXFwoMiwgMiwgMFxcKSIgImdpbXBs ZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtbm90ICJ0ZW1wMiA9IC5E RUZFUlJFRF9JTklUIFxcKDgsIDIsIDBcXCkiICJnaW1wbGUiIH0gfSAqLwpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LWVzcmEuYyBiL2djYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL2F1dG8taW5pdC1lc3JhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi43N2VjMDIzNTVkZjQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtZXNyYS5jCkBAIC0wLDAgKzEsMzUgQEAKKy8q IFZlcmlmeSB0aGUgc3RyZW5ndGggcmVkdWN0aW9uIGFkanVzdG1lbnQgZm9yIC1mdHJpdmlhbC1h dXRvLXZhci1pbml0LiAgKi8gCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItTzIgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyAtZmR1bXAtdHJlZS1naW1wbGUg LWZkdW1wLXRyZWUtZXNyYSIgfSAqLworCisKK3R5cGVkZWYgZG91YmxlIFZFQ1RPUlszXTsKKwor ZW51bQoreworIFggPSAwLAorIFkgPSAxLAorIFogPSAyLAorIFQgPSAzCit9OworCit2b2lkIEFz c2lnbl9WZWN0b3IoVkVDVE9SIGQsIFZFQ1RPUiBzKQoreworIGRbWF0gPSBzW1hdOworIGRbWV0g PSBzW1ldOworIGRbWl0gPSBzW1pdOworfQorCit2b2lkIFZDcm9zcyhWRUNUT1IgYSwgY29uc3Qg VkVDVE9SIGIsIGNvbnN0IFZFQ1RPUiBjKQoreworIFZFQ1RPUiB0bXA7CisKKyB0bXBbWF0gPSBi W1ldICogY1taXSAtIGJbWl0gKiBjW1ldOworIHRtcFtZXSA9IGJbWl0gKiBjW1hdIC0gYltYXSAq IGNbWl07CisgdG1wW1pdID0gYltYXSAqIGNbWV0gLSBiW1ldICogY1tYXTsKKworIEFzc2lnbl9W ZWN0b3IoYSwgdG1wKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVz ICJ0bXAgPSAuREVGRVJSRURfSU5JVCBcXCgyNCwgMiwgMFxcKSIgMSAiZ2ltcGxlIiB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiLkRFRkVSUkVEX0lOSVQgXFwo OCwgMiwgMFxcKSIgMyAiZXNyYSIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9hdXRvLWluaXQtcGFkZGluZy0xLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9hdXRvLWluaXQtcGFkZGluZy0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi45N2Y3OGVlN2Q1NmEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9hdXRvLWluaXQtcGFkZGluZy0xLmMKQEAgLTAsMCArMSwyMyBAQAorLyog VmVyaWZ5IHRoZSBwYWRkaW5nIGluaXRpYWxpemF0aW9uIGZvciBwYXR0ZXJuIGluaXRpYWxpemF0 aW9uLCB3ZSBhbHdheXMgZW1pdAorICogYSBjYWxsIHRvIF9fYnVpbHRpbl9jbGVhcl9wYWRkaW5n IHRvIGluaXRpYWxpemUgdGhlIHBhZGRpbmdzIHRvIHplcm8uICAqLworLyogeyBkZy1kbyBjb21w aWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVy biAtZmR1bXAtdHJlZS1naW1wbGUiIH0gKi8KKworCitzdHJ1Y3QgdGVzdF9zbWFsbF9ob2xlIHsK KyAgaW50IG9uZTsKKyAgY2hhciB0d287CisgIC8qIDMgYnl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4g Ki8KKyAgaW50IHRocmVlOworICB1bnNpZ25lZCBsb25nIGZvdXI7Cit9OworCitleHRlcm4gdm9p ZCBnIChzdHJ1Y3QgdGVzdF9zbWFsbF9ob2xlKTsKK3ZvaWQgZm9vKGludCBhKQoreworICBzdHJ1 Y3QgdGVzdF9zbWFsbF9ob2xlIHM7IAorICBnKHMpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAgIi5ERUZFUlJFRF9JTklUIFxcKDI0LCAxLCAwXFwpIiAiZ2ltcGxlIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiX19idWlsdGluX2NsZWFyX3BhZGRp bmciICJnaW1wbGUiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vYXV0by1pbml0LXBhZGRpbmctMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0 by1pbml0LXBhZGRpbmctMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uZTJiNTBkYzVhZThlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vYXV0by1pbml0LXBhZGRpbmctMi5jCkBAIC0wLDAgKzEsMTE0IEBACisvKiBUbyB0ZXN0 IHRoYXQgdGhlIGNvbXBpbGVyIGNhbiBmaWxsIGFsbCB0aGUgcGFkZGluZ3MgdG8gemVyb2VzIGZv ciB0aGUgCisgICBzdHJ1Y3R1cmVzIHdoZW4gdGhlIGF1dG8gdmFyaWFibGUgaXMgcGFydGlhbGx5 IGluaXRpYWxpemVkLCAgZnVsbHkgCisgICBpbml0aWFsaXplZCwgb3Igbm90IGluaXRpYWxpemVk IGZvciAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvLiAgKi8KKy8qIHsgZGctZG8gcnVufSAq LworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisK Ky8qIFN0cnVjdHVyZSB3aXRoIG5vIHBhZGRpbmcuICovCitzdHJ1Y3QgdGVzdF9wYWNrZWQgewor ICB1bnNpZ25lZCBsb25nIG9uZTsKKyAgdW5zaWduZWQgbG9uZyB0d287CisgIHVuc2lnbmVkIGxv bmcgdGhyZWU7CisgIHVuc2lnbmVkIGxvbmcgZm91cjsKK30gcDE7CisKKy8qIFNpbXBsZSBzdHJ1 Y3R1cmUgd2l0aCBwYWRkaW5nIGxpa2VseSB0byBiZSBjb3ZlcmVkIGJ5IGNvbXBpbGVyLiAqLwor c3RydWN0IHRlc3Rfc21hbGxfaG9sZSB7CisgIHVuc2lnbmVkIGxvbmcgb25lOworICBjaGFyIHR3 bzsKKyAgLyogMyBieXRlIHBhZGRpbmcgaG9sZSBoZXJlLiAqLworICBpbnQgdGhyZWU7CisgIHVu c2lnbmVkIGxvbmcgZm91cjsKK30gc2gxOworCisvKiBUcnkgdG8gdHJpZ2dlciB1bmhhbmRsZWQg cGFkZGluZyBpbiBhIHN0cnVjdHVyZS4gKi8KK3N0cnVjdCB0ZXN0X2FsaWduZWQgeworICB1bnNp Z25lZCBpbnQgaW50ZXJuYWwxOworICB1bnNpZ25lZCBsb25nIGxvbmcgaW50ZXJuYWwyOworfSBf X2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyg2NCkpKTsKKworc3RydWN0IHRlc3RfYWxpZ25lZCBh MTsKKworc3RydWN0IHRlc3RfYmlnX2hvbGUgeworICB1bnNpZ25lZCBjaGFyIG9uZTsKKyAgdW5z aWduZWQgY2hhciB0d287CisgIHVuc2lnbmVkIGNoYXIgdGhyZWU7CisgIC8qIDYxIGJ5dGUgcGFk ZGluZyBob2xlIGhlcmUuICovCisgIHN0cnVjdCB0ZXN0X2FsaWduZWQgZm91cjsKK30gX19hdHRy aWJ1dGVfXygoX19hbGlnbmVkX18oNjQpKSk7IAorCitzdHJ1Y3QgdGVzdF9iaWdfaG9sZSBiaDE7 CisKK3N0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgeworICBjaGFyICpvbmU7CisgIGNoYXIgKnR3 bzsKKyAgY2hhciAqdGhyZWU7CisgIGNoYXIgZm91cjsKKyAgLyogInNpemVvZih1bnNpZ25lZCBs b25nKSAtIDEiIGJ5dGUgcGFkZGluZyBob2xlIGhlcmUuICovCit9IHRoMTsKKworX19hdHRyaWJ1 dGVfXygobm9pcGEpKSB2b2lkCitmb28gKHN0cnVjdCB0ZXN0X3BhY2tlZCAqcCwgc3RydWN0IHRl c3Rfc21hbGxfaG9sZSAqc2gsIHN0cnVjdCB0ZXN0X2FsaWduZWQgKmEsCisgICAgIHN0cnVjdCB0 ZXN0X2JpZ19ob2xlICpiaCwgc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSAqdGgpCit7CisgIHAt Pm9uZSA9IDE7IHAtPnR3byA9IDI7IHAtPnRocmVlID0gMzsgcC0+Zm91ciA9IDQ7CisgIHNoLT5v bmUgPSAxMTsgc2gtPnR3byA9IDEyOyBzaC0+dGhyZWUgPSAxMzsgc2gtPmZvdXIgPSAxNDsKKyAg YS0+aW50ZXJuYWwxID0gMjE7IGEtPmludGVybmFsMiA9IDIyOworICBiaC0+b25lID0gMzE7IGJo LT50d28gPSAzMjsgYmgtPnRocmVlID0gMzM7CisgIGJoLT5mb3VyLmludGVybmFsMSA9IDM0OyBi aC0+Zm91ci5pbnRlcm5hbDIgPSAzNTsgCisgIHRoLT5vbmUgPSAwOyB0aC0+dHdvID0gMDsgdGgt PnRocmVlID0gMDsgdGgtPmZvdXIgPSA0NDsKK30KKworaW50IG1haW4gKCkKK3sKKyAgc3RydWN0 IHRlc3RfcGFja2VkIHAyOworICBzdHJ1Y3QgdGVzdF9zbWFsbF9ob2xlIHNoMjsKKyAgc3RydWN0 IHRlc3RfYWxpZ25lZCBhMjsKKyAgc3RydWN0IHRlc3RfYmlnX2hvbGUgYmgyOworICBzdHJ1Y3Qg dGVzdF90cmFpbGluZ19ob2xlIHRoMjsKKworICBzdHJ1Y3QgdGVzdF9wYWNrZWQgcDMgPSB7Lm9u ZSA9IDF9OworICBzdHJ1Y3QgdGVzdF9zbWFsbF9ob2xlIHNoMyA9IHsudHdvID0gMTJ9OworICBz dHJ1Y3QgdGVzdF9hbGlnbmVkIGEzID0gey5pbnRlcm5hbDEgPSAyMX07CisgIHN0cnVjdCB0ZXN0 X2JpZ19ob2xlIGJoMyA9IHsub25lID0gMzF9OworICBzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xl IHRoMyA9IHsudGhyZWUgPSAwfTsKKworICBzdHJ1Y3QgdGVzdF9wYWNrZWQgcDQgPSB7Lm9uZSA9 IDEsIC50d28gPSAyLCAudGhyZWUgPSAzLCAuZm91ciA9IDR9OworICBzdHJ1Y3QgdGVzdF9zbWFs bF9ob2xlIHNoNCA9IHsub25lID0gMTEsIC50d28gPSAxMiwgLnRocmVlID0gMTMsIC5mb3VyID0g MTR9OworICBzdHJ1Y3QgdGVzdF9hbGlnbmVkIGE0ID0gey5pbnRlcm5hbDEgPSAyMSwgLmludGVy bmFsMiA9IDIyfTsKKyAgc3RydWN0IHRlc3RfYmlnX2hvbGUgYmg0ID0gey5vbmUgPSAzMSwgLnR3 byA9IDMyLCAudGhyZWUgPSAzM307CisgIHN0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgdGg0ID0g ey5vbmUgPSAwLCAudHdvID0gMCwgLnRocmVlID0gMCwgLmZvdXIgPSA0NH07CisKKyAgZm9vICgm cDEsICZzaDEsICZhMSwgJmJoMSwgJnRoMSk7CisgIGZvbyAoJnAyLCAmc2gyLCAmYTIsICZiaDIs ICZ0aDIpOworICBmb28gKCZwMywgJnNoMywgJmEzLCAmYmgzLCAmdGgzKTsKKyAgYmg0LmZvdXIu aW50ZXJuYWwxID0gMzQ7IGJoNC5mb3VyLmludGVybmFsMiA9IDM1OworCisgIF9fYnVpbHRpbl9j bGVhcl9wYWRkaW5nICgmcDEpOworICBfX2J1aWx0aW5fY2xlYXJfcGFkZGluZyAoJnNoMSk7Cisg IF9fYnVpbHRpbl9jbGVhcl9wYWRkaW5nICgmYTEpOworICBfX2J1aWx0aW5fY2xlYXJfcGFkZGlu ZyAoJmJoMSk7CisgIF9fYnVpbHRpbl9jbGVhcl9wYWRkaW5nICgmdGgxKTsKKworICBpZiAoX19i dWlsdGluX21lbWNtcCAoJnAxLCAmcDIsIHNpemVvZiAocDEpKQorICAgICAgfHwgX19idWlsdGlu X21lbWNtcCAoJnNoMSwgJnNoMiwgc2l6ZW9mIChzaDEpKQorICAgICAgfHwgX19idWlsdGluX21l bWNtcCAoJmExLCAmYTIsIHNpemVvZiAoYTEpKQorICAgICAgfHwgX19idWlsdGluX21lbWNtcCAo JmJoMSwgJmJoMiwgc2l6ZW9mIChiaDEpKQorICAgICAgfHwgX19idWlsdGluX21lbWNtcCAoJnRo MSwgJnRoMiwgc2l6ZW9mICh0aDEpKSkKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIGlmIChf X2J1aWx0aW5fbWVtY21wICgmcDEsICZwMywgc2l6ZW9mIChwMSkpCisgICAgICB8fCBfX2J1aWx0 aW5fbWVtY21wICgmc2gxLCAmc2gzLCBzaXplb2YgKHNoMSkpCisgICAgICB8fCBfX2J1aWx0aW5f bWVtY21wICgmYTEsICZhMywgc2l6ZW9mIChhMSkpCisgICAgICB8fCBfX2J1aWx0aW5fbWVtY21w ICgmYmgxLCAmYmgzLCBzaXplb2YgKGJoMSkpCisgICAgICB8fCBfX2J1aWx0aW5fbWVtY21wICgm dGgxLCAmdGgzLCBzaXplb2YgKHRoMSkpKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYg KF9fYnVpbHRpbl9tZW1jbXAgKCZwMSwgJnA0LCBzaXplb2YgKHAxKSkKKyAgICAgIHx8IF9fYnVp bHRpbl9tZW1jbXAgKCZzaDEsICZzaDQsIHNpemVvZiAoc2gxKSkKKyAgICAgIHx8IF9fYnVpbHRp bl9tZW1jbXAgKCZhMSwgJmE0LCBzaXplb2YgKGExKSkKKyAgICAgIHx8IF9fYnVpbHRpbl9tZW1j bXAgKCZiaDEsICZiaDQsIHNpemVvZiAoYmgxKSkKKyAgICAgIHx8IF9fYnVpbHRpbl9tZW1jbXAg KCZ0aDEsICZ0aDQsIHNpemVvZiAodGgxKSkpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworCisK KyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9h dXRvLWluaXQtcGFkZGluZy0zLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWlu aXQtcGFkZGluZy0zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5l MmM0OGMwMDJjOTUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9hdXRvLWluaXQtcGFkZGluZy0zLmMKQEAgLTAsMCArMSwxMTQgQEAKKy8qIFRvIHRlc3QgdGhh dCB0aGUgY29tcGlsZXIgY2FuIGZpbGwgYWxsIHRoZSBwYWRkaW5ncyB0byB6ZXJvZXMgZm9yIHRo ZSAKKyAgIHN0cnVjdHVyZXMgd2hlbiB0aGUgYXV0byB2YXJpYWJsZSBpcyBwYXJ0aWFsbHkgaW5p dGlhbGl6ZWQsICBmdWxseSAKKyAgIGluaXRpYWxpemVkLCBvciBub3QgaW5pdGlhbGl6ZWQgZm9y IC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4uICAqLworLyogeyBkZy1kbyBydW59ICov CisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4iIH0gKi8K KworLyogU3RydWN0dXJlIHdpdGggbm8gcGFkZGluZy4gKi8KK3N0cnVjdCB0ZXN0X3BhY2tlZCB7 CisgIHVuc2lnbmVkIGxvbmcgb25lOworICB1bnNpZ25lZCBsb25nIHR3bzsKKyAgdW5zaWduZWQg bG9uZyB0aHJlZTsKKyAgdW5zaWduZWQgbG9uZyBmb3VyOworfSBwMTsKKworLyogU2ltcGxlIHN0 cnVjdHVyZSB3aXRoIHBhZGRpbmcgbGlrZWx5IHRvIGJlIGNvdmVyZWQgYnkgY29tcGlsZXIuICov CitzdHJ1Y3QgdGVzdF9zbWFsbF9ob2xlIHsKKyAgdW5zaWduZWQgbG9uZyBvbmU7CisgIGNoYXIg dHdvOworICAvKiAzIGJ5dGUgcGFkZGluZyBob2xlIGhlcmUuICovCisgIGludCB0aHJlZTsKKyAg dW5zaWduZWQgbG9uZyBmb3VyOworfSBzaDE7CisKKy8qIFRyeSB0byB0cmlnZ2VyIHVuaGFuZGxl ZCBwYWRkaW5nIGluIGEgc3RydWN0dXJlLiAqLworc3RydWN0IHRlc3RfYWxpZ25lZCB7CisgIHVu c2lnbmVkIGludCBpbnRlcm5hbDE7CisgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnRlcm5hbDI7Cit9 IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDY0KSkpOworCitzdHJ1Y3QgdGVzdF9hbGlnbmVk IGExOworCitzdHJ1Y3QgdGVzdF9iaWdfaG9sZSB7CisgIHVuc2lnbmVkIGNoYXIgb25lOworICB1 bnNpZ25lZCBjaGFyIHR3bzsKKyAgdW5zaWduZWQgY2hhciB0aHJlZTsKKyAgLyogNjEgYnl0ZSBw YWRkaW5nIGhvbGUgaGVyZS4gKi8KKyAgc3RydWN0IHRlc3RfYWxpZ25lZCBmb3VyOworfSBfX2F0 dHJpYnV0ZV9fKChfX2FsaWduZWRfXyg2NCkpKTsgCisKK3N0cnVjdCB0ZXN0X2JpZ19ob2xlIGJo MTsKKworc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB7CisgIGNoYXIgKm9uZTsKKyAgY2hhciAq dHdvOworICBjaGFyICp0aHJlZTsKKyAgY2hhciBmb3VyOworICAvKiAic2l6ZW9mKHVuc2lnbmVk IGxvbmcpIC0gMSIgYnl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8KK30gdGgxOworCitfX2F0dHJp YnV0ZV9fKChub2lwYSkpIHZvaWQKK2ZvbyAoc3RydWN0IHRlc3RfcGFja2VkICpwLCBzdHJ1Y3Qg dGVzdF9zbWFsbF9ob2xlICpzaCwgc3RydWN0IHRlc3RfYWxpZ25lZCAqYSwKKyAgICAgc3RydWN0 IHRlc3RfYmlnX2hvbGUgKmJoLCBzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlICp0aCkKK3sKKyAg cC0+b25lID0gMTsgcC0+dHdvID0gMjsgcC0+dGhyZWUgPSAzOyBwLT5mb3VyID0gNDsKKyAgc2gt Pm9uZSA9IDExOyBzaC0+dHdvID0gMTI7IHNoLT50aHJlZSA9IDEzOyBzaC0+Zm91ciA9IDE0Owor ICBhLT5pbnRlcm5hbDEgPSAyMTsgYS0+aW50ZXJuYWwyID0gMjI7CisgIGJoLT5vbmUgPSAzMTsg YmgtPnR3byA9IDMyOyBiaC0+dGhyZWUgPSAzMzsKKyAgYmgtPmZvdXIuaW50ZXJuYWwxID0gMzQ7 IGJoLT5mb3VyLmludGVybmFsMiA9IDM1OyAKKyAgdGgtPm9uZSA9IDA7IHRoLT50d28gPSAwOyB0 aC0+dGhyZWUgPSAwOyB0aC0+Zm91ciA9IDQ0OworfQorCitpbnQgbWFpbiAoKQoreworICBzdHJ1 Y3QgdGVzdF9wYWNrZWQgcDI7CisgIHN0cnVjdCB0ZXN0X3NtYWxsX2hvbGUgc2gyOworICBzdHJ1 Y3QgdGVzdF9hbGlnbmVkIGEyOworICBzdHJ1Y3QgdGVzdF9iaWdfaG9sZSBiaDI7CisgIHN0cnVj dCB0ZXN0X3RyYWlsaW5nX2hvbGUgdGgyOworCisgIHN0cnVjdCB0ZXN0X3BhY2tlZCBwMyA9IHsu b25lID0gMX07CisgIHN0cnVjdCB0ZXN0X3NtYWxsX2hvbGUgc2gzID0gey50d28gPSAxMn07Cisg IHN0cnVjdCB0ZXN0X2FsaWduZWQgYTMgPSB7LmludGVybmFsMSA9IDIxfTsKKyAgc3RydWN0IHRl c3RfYmlnX2hvbGUgYmgzID0gey5vbmUgPSAzMX07CisgIHN0cnVjdCB0ZXN0X3RyYWlsaW5nX2hv bGUgdGgzID0gey50aHJlZSA9IDB9OworCisgIHN0cnVjdCB0ZXN0X3BhY2tlZCBwNCA9IHsub25l ID0gMSwgLnR3byA9IDIsIC50aHJlZSA9IDMsIC5mb3VyID0gNH07CisgIHN0cnVjdCB0ZXN0X3Nt YWxsX2hvbGUgc2g0ID0gey5vbmUgPSAxMSwgLnR3byA9IDEyLCAudGhyZWUgPSAxMywgLmZvdXIg PSAxNH07CisgIHN0cnVjdCB0ZXN0X2FsaWduZWQgYTQgPSB7LmludGVybmFsMSA9IDIxLCAuaW50 ZXJuYWwyID0gMjJ9OworICBzdHJ1Y3QgdGVzdF9iaWdfaG9sZSBiaDQgPSB7Lm9uZSA9IDMxLCAu dHdvID0gMzIsIC50aHJlZSA9IDMzfTsKKyAgc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB0aDQg PSB7Lm9uZSA9IDAsIC50d28gPSAwLCAudGhyZWUgPSAwLCAuZm91ciA9IDQ0fTsKKworICBmb28g KCZwMSwgJnNoMSwgJmExLCAmYmgxLCAmdGgxKTsKKyAgZm9vICgmcDIsICZzaDIsICZhMiwgJmJo MiwgJnRoMik7CisgIGZvbyAoJnAzLCAmc2gzLCAmYTMsICZiaDMsICZ0aDMpOworICBiaDQuZm91 ci5pbnRlcm5hbDEgPSAzNDsgYmg0LmZvdXIuaW50ZXJuYWwyID0gMzU7CisKKyAgX19idWlsdGlu X2NsZWFyX3BhZGRpbmcgKCZwMSk7CisgIF9fYnVpbHRpbl9jbGVhcl9wYWRkaW5nICgmc2gxKTsK KyAgX19idWlsdGluX2NsZWFyX3BhZGRpbmcgKCZhMSk7CisgIF9fYnVpbHRpbl9jbGVhcl9wYWRk aW5nICgmYmgxKTsKKyAgX19idWlsdGluX2NsZWFyX3BhZGRpbmcgKCZ0aDEpOworCisgIGlmIChf X2J1aWx0aW5fbWVtY21wICgmcDEsICZwMiwgc2l6ZW9mIChwMSkpCisgICAgICB8fCBfX2J1aWx0 aW5fbWVtY21wICgmc2gxLCAmc2gyLCBzaXplb2YgKHNoMSkpCisgICAgICB8fCBfX2J1aWx0aW5f bWVtY21wICgmYTEsICZhMiwgc2l6ZW9mIChhMSkpCisgICAgICB8fCBfX2J1aWx0aW5fbWVtY21w ICgmYmgxLCAmYmgyLCBzaXplb2YgKGJoMSkpCisgICAgICB8fCBfX2J1aWx0aW5fbWVtY21wICgm dGgxLCAmdGgyLCBzaXplb2YgKHRoMSkpKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgaWYg KF9fYnVpbHRpbl9tZW1jbXAgKCZwMSwgJnAzLCBzaXplb2YgKHAxKSkKKyAgICAgIHx8IF9fYnVp bHRpbl9tZW1jbXAgKCZzaDEsICZzaDMsIHNpemVvZiAoc2gxKSkKKyAgICAgIHx8IF9fYnVpbHRp bl9tZW1jbXAgKCZhMSwgJmEzLCBzaXplb2YgKGExKSkKKyAgICAgIHx8IF9fYnVpbHRpbl9tZW1j bXAgKCZiaDEsICZiaDMsIHNpemVvZiAoYmgxKSkKKyAgICAgIHx8IF9fYnVpbHRpbl9tZW1jbXAg KCZ0aDEsICZ0aDMsIHNpemVvZiAodGgxKSkpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBp ZiAoX19idWlsdGluX21lbWNtcCAoJnAxLCAmcDQsIHNpemVvZiAocDEpKQorICAgICAgfHwgX19i dWlsdGluX21lbWNtcCAoJnNoMSwgJnNoNCwgc2l6ZW9mIChzaDEpKQorICAgICAgfHwgX19idWls dGluX21lbWNtcCAoJmExLCAmYTQsIHNpemVvZiAoYTEpKQorICAgICAgfHwgX19idWlsdGluX21l bWNtcCAoJmJoMSwgJmJoNCwgc2l6ZW9mIChiaDEpKQorICAgICAgfHwgX19idWlsdGluX21lbWNt cCAoJnRoMSwgJnRoNCwgc2l6ZW9mICh0aDEpKSkKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisK KworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8t aW5pdC11bmluaXQtcHJlZC0xX2EuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11 bmluaXQtcHJlZC0xX2EuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjMzYzE3NDQxMzg0ZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1 dG8taW5pdC11bmluaXQtcHJlZC0xX2EuQwpAQCAtMCwwICsxLDYzIEBACisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItV3VuaW5pdGlhbGl6ZWQgLU8yIC1mdHJpdmlh bC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKwordHlwZWRlZiBsb25nIGxvbmcgaW50NjQ7Cit2 b2lkIGluY3IgKCk7Citib29sIGlzX3ZhbGlkIChpbnQpOworaW50ICBnZXRfdGltZSAoKTsKKwor Y2xhc3MgQSAKK3sKK3B1YmxpYzoKKyAgQSAoKTsKKyAgfkEgKCkgeworICAgIGlmIChJKSBkZWxl dGUgSTsKKyAgfQorCitwcml2YXRlOgorICBpbnQqIEk7Cit9OworCitib29sIGdldF91cmwgKEEg Kik7CisKK2NsYXNzIE0geworCisgcHVibGljOgorX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxp bmUpKSAgaW50IEdldEMgKGludCAqYykgIHsKKworICAgIEEgZGV0YWlsc19zdHI7CisgICAgaWYg KCFnZXRfdXJsICgmZGV0YWlsc19zdHIpKQorICAgICAgeworICAgICAgICBpbmNyICgpOworICAg ICAgICByZXR1cm4gMTsKKyAgICAgIH0KKworICAgICpjID0gZ2V0X3RpbWUgKCk7CisgICAgcmV0 dXJuIC0xOworICB9CisKKyAgdm9pZCBkb19zdGgoKTsKKyAgdm9pZCBkb19zdGgyKCk7CisgICAK KyAgdm9pZCBQIChpbnQ2NCB0KQorICAgIHsKKyAgICAgIGludCBjYzsgLyogeyBkZy1ib2d1cyAi dW5pbml0aWFsaXplZCIgInVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZyIgfSAgKi8gCisg ICAgICBpZiAoR2V0QyAoJmNjKSA+PSAwICkKKyAgICAgICAgcmV0dXJuOworICAgICAgCisgICAg ICBpZiAodCAmJiBjYyA8PSAwICkgIC8qIHsgZGctYm9ndXMgInVuaW5pdGlhbGl6ZWQiICJ1bmlu aXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmciIH0gKi8KKyAgICAgICAgeworICAgICAgICAgIHRo aXMtPmRvX3N0aCgpOworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgZG9fc3Ro MigpOworICB9Cit9OworCitNKiBtOyAKK3ZvaWQgZm9vKGludCB4KQoreworICBtID0gbmV3IE07 CisgIG0tPlAoeCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWlu aXQtdW5pbml0LXByZWQtMV9iLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5p bml0LXByZWQtMV9iLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42 YjZiZGFlZDcxZTAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRv LWluaXQtdW5pbml0LXByZWQtMV9iLkMKQEAgLTAsMCArMSw2MyBAQAorLyogeyBkZy1kbyBjb21w aWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLVd1bmluaXRpYWxpemVkIC1PMiAtZnRyaXZpYWwt YXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK3R5cGVkZWYgbG9uZyBsb25nIGludDY0Owordm9p ZCBpbmNyICgpOworYm9vbCBpc192YWxpZCAoaW50KTsKK2ludCAgZ2V0X3RpbWUgKCk7CisKK2Ns YXNzIEEgCit7CitwdWJsaWM6CisgIEEgKCk7CisgIH5BICgpIHsKKyAgICBpZiAoSSkgZGVsZXRl IEk7CisgIH0KKworcHJpdmF0ZToKKyAgaW50KiBJOworfTsKKworYm9vbCBnZXRfdXJsIChBICop OworCitjbGFzcyBNIHsKKworIHB1YmxpYzoKK19fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5l KSkgIGludCBHZXRDIChpbnQgKmMpICB7CisKKyAgICBBIGRldGFpbHNfc3RyOworICAgIGlmICgh Z2V0X3VybCAoJmRldGFpbHNfc3RyKSkKKyAgICAgIHsKKyAgICAgICAgaW5jciAoKTsKKyAgICAg ICAgcmV0dXJuIDE7CisgICAgICB9CisKKyAgICAqYyA9IGdldF90aW1lICgpOworICAgIHJldHVy biAtMTsKKyAgfQorCisgIHZvaWQgZG9fc3RoKCk7CisgIHZvaWQgZG9fc3RoMigpOworICAgCisg IHZvaWQgUCAoaW50NjQgdCkKKyAgICB7CisgICAgICBpbnQgY2M7IC8qIHsgZGctbWVzc2FnZSAi bm90ZTogJ2NjJyB3YXMgZGVjbGFyZWQgaGVyZSIgfSAqLworICAgICAgaWYgKEdldEMgKCZjYykg PD0gMCApIC8qIHJldHVybiBmbGFnIGNoZWNrZWQgd3JvbmdseSAqLworICAgICAgICByZXR1cm47 CisgICAgICAKKyAgICAgIGlmICh0ICYmIGNjIDw9IDAgKSAgLyogeyBkZy13YXJuaW5nICJ1bmlu aXRpYWxpemVkIiAidW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5nIiB9ICovCisgICAgICAg IHsKKyAgICAgICAgICB0aGlzLT5kb19zdGgoKTsKKyAgICAgICAgICByZXR1cm47CisgICAgICAg IH0KKworICAgIGRvX3N0aDIoKTsKKyAgfQorfTsKKworTSogbTsgCit2b2lkIGZvbyhpbnQgeCkK K3sKKyAgbSA9IG5ldyBNOworICBtLT5QKHgpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTJfYS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTJfYS5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uZmMxOGNiMWU3YzkxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTJfYS5DCkBAIC0wLDAgKzEsNjIgQEAK Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1XdW5pbml0aWFsaXpl ZCAtTzIgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCit0eXBlZGVmIGxvbmcg bG9uZyBpbnQ2NDsKK3ZvaWQgaW5jciAoKTsKK2Jvb2wgaXNfdmFsaWQgKGludCk7CitpbnQgIGdl dF90aW1lICgpOworCitjbGFzcyBBIAoreworcHVibGljOgorICBBICgpOworICB+QSAoKSB7Cisg ICAgaWYgKEkpIGRlbGV0ZSBJOworICB9CisKK3ByaXZhdGU6CisgIGludCogSTsKK307CisKK2Jv b2wgZ2V0X3VybCAoQSAqKTsKKworY2xhc3MgTSB7CisKKyBwdWJsaWM6CitfX2F0dHJpYnV0ZV9f ICgoYWx3YXlzX2lubGluZSkpICBib29sIEdldEMgKGludCAqYykgIHsKKworICAgIEEgZGV0YWls c19zdHI7CisgICAgaWYgKGdldF91cmwgKCZkZXRhaWxzX3N0cikpCisgICAgICB7CisgICAgICAg ICpjID0gZ2V0X3RpbWUgKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorCisgICAg cmV0dXJuIGZhbHNlOworICB9CisKKyAgdm9pZCBkb19zdGgoKTsKKyAgdm9pZCBkb19zdGgyKCk7 CisgICAKKyAgdm9pZCBQIChpbnQ2NCB0KQorICAgIHsKKyAgICAgIGludCBjYzsgCisgICAgICBp ZiAoIUdldEMgKCZjYykpIC8qIHJldHVybiBmbGFnIGNoZWNrZWQgcHJvcGVybHkgKi8KKyAgICAg ICAgcmV0dXJuOworICAgICAgCisgICAgICBpZiAoY2MgPD0gMCkgIC8qIHsgZGctYm9ndXMgInVu aW5pdGlhbGl6ZWQiICJ1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmciIH0gKi8KKyAgICAg ICAgeworICAgICAgICAgIHRoaXMtPmRvX3N0aCgpOworICAgICAgICAgIHJldHVybjsKKyAgICAg ICAgfQorCisgICAgZG9fc3RoMigpOworICB9Cit9OworCitNKiBtOyAKK3ZvaWQgZm9vKGludCB4 KQoreworICBtID0gbmV3IE07CisgIG0tPlAoeCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtMl9iLkMgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtMl9iLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi5lODVhMzZmMTZmZmYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtMl9iLkMKQEAgLTAsMCArMSw2MiBA QAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLVd1bmluaXRpYWxp emVkIC1PMiAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK3R5cGVkZWYgbG9u ZyBsb25nIGludDY0Owordm9pZCBpbmNyICgpOworYm9vbCBpc192YWxpZCAoaW50KTsKK2ludCAg Z2V0X3RpbWUgKCk7CisKK2NsYXNzIEEgCit7CitwdWJsaWM6CisgIEEgKCk7CisgIH5BICgpIHsK KyAgICBpZiAoSSkgZGVsZXRlIEk7CisgIH0KKworcHJpdmF0ZToKKyAgaW50KiBJOworfTsKKwor Ym9vbCBnZXRfdXJsIChBICopOworCitjbGFzcyBNIHsKKworIHB1YmxpYzoKK19fYXR0cmlidXRl X18gKChhbHdheXNfaW5saW5lKSkgIGJvb2wgR2V0QyAoaW50ICpjKSAgeworCisgICAgQSBkZXRh aWxzX3N0cjsKKyAgICBpZiAoZ2V0X3VybCAoJmRldGFpbHNfc3RyKSkKKyAgICAgIHsKKyAgICAg ICAgKmMgPSBnZXRfdGltZSAoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisKKyAg ICByZXR1cm4gZmFsc2U7CisgIH0KKworICB2b2lkIGRvX3N0aCgpOworICB2b2lkIGRvX3N0aDIo KTsKKyAgIAorICB2b2lkIFAgKGludDY0IHQpCisgICAgeworICAgICAgaW50IGNjOyAvKiB7IGRn LW1lc3NhZ2UgIm5vdGU6ICdjYycgd2FzIGRlY2xhcmVkIGhlcmUiIH0gKi8KKyAgICAgIGlmIChH ZXRDICgmY2MpKSAvKiByZXR1cm4gZmxhZyBjaGVja2VkIHdyb25nbHkgKi8KKyAgICAgICAgcmV0 dXJuOworICAgICAgCisgICAgICBpZiAoY2MgPD0gMCkgIC8qIHsgZGctd2FybmluZyAidW5pbml0 aWFsaXplZCIgInVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZyIgfSAqLworICAgICAgICB7 CisgICAgICAgICAgdGhpcy0+ZG9fc3RoKCk7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9 CisKKyAgICBkb19zdGgyKCk7CisgIH0KK307CisKK00qIG07IAordm9pZCBmb28oaW50IHgpCit7 CisgIG0gPSBuZXcgTTsKKyAgbS0+UCh4KTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv ZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC0zX2EuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRn L2F1dG8taW5pdC11bmluaXQtcHJlZC0zX2EuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjA5ZWQ2OTIxNTMyMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC0zX2EuQwpAQCAtMCwwICsxLDc3IEBACisv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItV3VuaW5pdGlhbGl6ZWQg LU8yIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworLyogTXVsdGlwbGUgaW5p dGlhbGl6YXRpb24gcGF0aHMuICAqLworCit0eXBlZGVmIGxvbmcgbG9uZyBpbnQ2NDsKK3ZvaWQg aW5jciAoKTsKK2Jvb2wgaXNfdmFsaWQgKGludCk7CitpbnQgIGdldF90aW1lICgpOworCitjbGFz cyBBCit7CitwdWJsaWM6CisgIEEgKCk7CisgIH5BICgpIHsKKyAgICBpZiAoSSkgZGVsZXRlIEk7 CisgIH0KKworcHJpdmF0ZToKKyAgaW50KiBJOworfTsKKworYm9vbCBnZXRfdXJsIChBICopOwor Ym9vbCBnZXRfdXJsMiAoQSAqKTsKKworY2xhc3MgTSB7CisKKyBwdWJsaWM6CisgX19hdHRyaWJ1 dGVfXyAoKGFsd2F5c19pbmxpbmUpKQorIGJvb2wgR2V0QyAoaW50ICpjKSAgeworCisgICAgQSBk ZXRhaWxzX3N0cjsKKyAgICAvKiBJbnRpYWxpemF0aW9uIHBhdGggMSAgKi8KKyAgICBpZiAoZ2V0 X3VybCAoJmRldGFpbHNfc3RyKSkKKyAgICAgIHsKKyAgICAgICAgKmMgPSBnZXRfdGltZSAoKTsK KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisKKyAgICAvKiBpbnNlcnQgZHRvciBjYWxs cyAoaW5saW5lZCkgaW50byBmb2xsb3dpbmcgcmV0dXJuIHBhdGhzICAqLworICAgIEEgdG1wX3N0 cjsKKworICAgIC8qIEludGlhbGl6dGlvbiBwYXRoIDIgICovCisgICAgaWYgKGdldF91cmwyICgm ZGV0YWlsc19zdHIpKQorICAgICAgeworICAgICAgICAqYyA9IGdldF90aW1lICgpOworICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHZv aWQgZG9fc3RoKCk7CisgIHZvaWQgZG9fc3RoMigpOworCisgIHZvaWQgUCAoaW50NjQgdCkKKyAg ICB7CisgICAgICBpbnQgY2M7CisgICAgICBpZiAoIUdldEMgKCZjYykpIC8qIHJldHVybiBmbGFn IGNoZWNrZWQgcHJvcGVybHkgKi8KKyAgICAgICAgcmV0dXJuOworCisgICAgICBpZiAoY2MgPD0g MCkgICAvKiB7IGRnLWJvZ3VzICJ1bmluaXRpYWxpemVkIiAidW5pbml0aWFsaXplZCB2YXJpYWJs ZSB3YXJuaW5nIiB9ICovCisgICAgICAgIHsKKyAgICAgICAgICB0aGlzLT5kb19zdGgoKTsKKyAg ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgIGRvX3N0aDIoKTsKKyAgfQorfTsKKwor TSogbTsKK3ZvaWQgdGVzdChpbnQgeCkKK3sKKyAgbSA9IG5ldyBNOworICBtLT5QKHgpOworfQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTNf Yi5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTNfYi5DCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGU3Yjg1NDE3MjVlCi0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVk LTNfYi5DCkBAIC0wLDAgKzEsODcgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1XdW5pbml0aWFsaXplZCAtTzIgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVy byIgfSAqLworCisvKiBNdWx0aXBsZSBpbml0aWFsaXphdGlvbiBwYXRocy4gICovCisKK3R5cGVk ZWYgbG9uZyBsb25nIGludDY0Owordm9pZCBpbmNyICgpOworYm9vbCBpc192YWxpZCAoaW50KTsK K2ludCAgZ2V0X3RpbWUgKCk7CisKK2NsYXNzIEEKK3sKK3B1YmxpYzoKKyAgQSAoKTsKKyAgfkEg KCkgeworICAgIGlmIChJKSBkZWxldGUgSTsKKyAgfQorCitwcml2YXRlOgorICBpbnQqIEk7Cit9 OworCitib29sIGdldF91cmwgKEEgKik7Citib29sIGdldF91cmwyIChBICopOworYm9vbCBnZXRf dXJsMyAoQSAqKTsKKworY2xhc3MgTSB7CisKKyBwdWJsaWM6CisgX19hdHRyaWJ1dGVfXyAoKGFs d2F5c19pbmxpbmUpKQorIGJvb2wgR2V0QyAoaW50ICpjKSAgeworCisgICAgQSBkZXRhaWxzX3N0 cjsKKworICAgIC8qIEluaXRpYWxpemF0aW9uIHBhdGggMSAgKi8KKyAgICBpZiAoZ2V0X3VybCAo JmRldGFpbHNfc3RyKSkKKyAgICAgIHsKKyAgICAgICAgKmMgPSBnZXRfdGltZSAoKTsKKyAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgICB9CisKKyAgICAvKiBEZXN0cnVjdG9yIGNhbGwgYmVmb3Jl IHJldHVybiovCisgICAgQSB0bXBfc3RyOworCisgICAgLyogSW5pdGlhbGl6YXRpb24gcGF0aCAy ICAqLworICAgIGlmIChnZXRfdXJsMiAoJmRldGFpbHNfc3RyKSkKKyAgICAgIHsKKyAgICAgICAg KmMgPSBnZXRfdGltZSAoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisKKyAgICAv KiBGYWlsIHRvIGluaXRpYWxpemUgaW4gdGhpcyBwYXRoIGJ1dAorICAgICAgIHN0aWxsIHJldHVy bnMgdHJ1ZSAgKi8KKyAgICBpZiAoZ2V0X3VybDIgKCZkZXRhaWxzX3N0cikpCisgICAgICB7Cisg ICAgICAgIC8qIEZhaWwgdG8gaW5pdGlhbGl6ZSAqYyAgKi8KKyAgICAgICAgcmV0dXJuIHRydWU7 CisgICAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICB2b2lkIGRvX3N0aCgpOwor ICB2b2lkIGRvX3N0aDIoKTsKKworICB2b2lkIFAgKGludDY0IHQpCisgICAgeworICAgICAgaW50 IGNjOworICAgICAgaWYgKCFHZXRDICgmY2MpKQorICAgICAgICByZXR1cm47CisKKyAgICAgIGlm IChjYyA8PSAwKSAgIC8qIHsgZGctd2FybmluZyAidW5pbml0aWFsaXplZCIgInVuaW5pdGlhbGl6 ZWQgdmFyaWFibGUgd2FybmluZyIgfSAqLworICAgICAgICB7CisgICAgICAgICAgdGhpcy0+ZG9f c3RoKCk7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICBkb19zdGgyKCk7Cisg IH0KK307CisKK00qIG07Cit2b2lkIHRlc3QoaW50IHgpCit7CisgIG0gPSBuZXcgTTsKKyAgbS0+ UCh4KTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmlu aXQtcHJlZC00LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQt NC5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzQ4NzcwYWU0NGRk Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5p dC1wcmVkLTQuQwpAQCAtMCwwICsxLDE2IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyog eyBkZy1vcHRpb25zICItV3VuaW5pdGlhbGl6ZWQgLU9nIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0 PXplcm8iIH0gKi8KKworaW50IHBvcCAoKTsKK2ludCBwb3BfZmlyc3RfYnVja2V0OworCitpbnQg bXlfcG9wICgpCit7CisgIGludCBvdXQ7ICAvLyB7IGRnLWJvZ3VzICJ1bmluaXRpYWxpemVkIiAi dW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5nIiB9CisKKyAgd2hpbGUgKHBvcF9maXJzdF9i dWNrZXQpCisgICAgaWYgKHBvcF9maXJzdF9idWNrZXQgJiYgKG91dCA9IHBvcCgpKSkKKyAgICAg IHJldHVybiBvdXQ7CisKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtbG9vcC0xX2EuY2MgYi9nY2MvdGVzdHN1aXRl L2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtbG9vcC0xX2EuY2MKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42Mjk2NzdhNjAyNTkKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtbG9vcC0xX2EuY2MK QEAgLTAsMCArMSwyMSBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLVd1bmluaXRpYWxpemVkIC1PMiAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICov CisKK2V4dGVybiBpbnQgYmFyKCk7CitpbnQgZm9vKHZvaWQpCit7CisgZm9yICg7OykgeworICAg aW50IGVyciA9ICh7aW50IF9lcnI7IC8qICB7IGRnLWJvZ3VzICJ1bmluaXRpYWxpemVkIiAiZmFs c2Ugd2FybmluZyIgfSAqLworICAgICBmb3IgKGludCBpID0gMDsgaSA8IDE2OyArK2kpIHsKKyAg ICAgICBfZXJyID0gMTc7CisgICAgICAgX2VyciA9IGJhcigpOworICAgICB9CisgICAgIF9lcnI7 IC8qICB7IGRnLWJvZ3VzICJ1bmluaXRpYWxpemVkIiAiZmFsc2Ugd2FybmluZyIgfSAqLworICAg fSk7CisKKyAgIGlmIChlcnIgPT0gMCkgcmV0dXJuIDE3OyAKKyB9CisKKyByZXR1cm4gMTg7Cit9 CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJl ZC1sb29wLTFfYi5jYyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJl ZC1sb29wLTFfYi5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA0 YWIzNjRhYzgzZQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8t aW5pdC11bmluaXQtcHJlZC1sb29wLTFfYi5jYwpAQCAtMCwwICsxLDIxIEBACisvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItV3VuaW5pdGlhbGl6ZWQgLU8yIC1mdHJp dmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworZXh0ZXJuIGludCBiYXIoKTsKK2ludCBm b28oaW50IG4pCit7CisgZm9yICg7OykgeworICAgaW50IGVyciA9ICh7aW50IF9lcnI7IAorICAg ICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgIF9lcnIgPSAxNzsKKyAgICAg ICBfZXJyID0gYmFyKCk7CisgICAgIH0KKyAgICAgX2VycjsgCisgICB9KTsgLyogeyBkZy13YXJu aW5nICJ1bmluaXRpYWxpemVkIiAid2FybiBvbiBfZXJyIiB9ICovCisKKyAgIGlmIChlcnIgPT0g MCkgcmV0dXJuIDE3OyAKKyB9CisKKyByZXR1cm4gMTg7Cit9CisKZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC1sb29wLTFfYy5jYyBiL2djYy90 ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC1sb29wLTFfYy5jYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjgyYTE4NDZjNmUwYgotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC1sb29w LTFfYy5jYwpAQCAtMCwwICsxLDIzIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItV3VuaW5pdGlhbGl6ZWQgLU8yIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXpl cm8iIH0gKi8KKworZXh0ZXJuIGludCBiYXIoKTsKK2ludCBmb28oaW50IG4sIGludCBtKQorewor IGZvciAoOzspIHsKKyAgIGludCBlcnIgPSAoe2ludCBfZXJyOyAKKyAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCAxNjsgKytpKSB7CisgICAgICAgaWYgKG0raSA+IG4pCisgICAgICAgICAgYnJlYWs7 CisgICAgICAgX2VyciA9IDE3OworICAgICAgIF9lcnIgPSBiYXIoKTsKKyAgICAgfQorICAgICBf ZXJyOyAKKyAgIH0pOyAKKworICAgaWYgKGVyciA9PSAwKSByZXR1cm4gMTc7IH0pOyAvKiB7IGRn LXdhcm5pbmcgInVuaW5pdGlhbGl6ZWQiICJ3YXJuIG9uIF9lcnIiIH0gKi8KKyB9CisKKyByZXR1 cm4gMTg7Cit9CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11 bmluaXQtcHJlZC1sb29wXzEuY2MgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5p bml0LXByZWQtbG9vcF8xLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uNjI5Njc3YTYwMjU5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv YXV0by1pbml0LXVuaW5pdC1wcmVkLWxvb3BfMS5jYwpAQCAtMCwwICsxLDIxIEBACisvKiB7IGRn LWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItV3VuaW5pdGlhbGl6ZWQgLU8yIC1m dHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworZXh0ZXJuIGludCBiYXIoKTsKK2lu dCBmb28odm9pZCkKK3sKKyBmb3IgKDs7KSB7CisgICBpbnQgZXJyID0gKHtpbnQgX2VycjsgLyog IHsgZGctYm9ndXMgInVuaW5pdGlhbGl6ZWQiICJmYWxzZSB3YXJuaW5nIiB9ICovCisgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgMTY7ICsraSkgeworICAgICAgIF9lcnIgPSAxNzsKKyAgICAgICBf ZXJyID0gYmFyKCk7CisgICAgIH0KKyAgICAgX2VycjsgLyogIHsgZGctYm9ndXMgInVuaW5pdGlh bGl6ZWQiICJmYWxzZSB3YXJuaW5nIiB9ICovCisgICB9KTsKKworICAgaWYgKGVyciA9PSAwKSBy ZXR1cm4gMTc7IAorIH0KKworIHJldHVybiAxODsKK30KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9h dXRvLWluaXQtdW5pbml0LTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLmNiMGU3Y2M2MjU0NQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L2F1dG8taW5pdC11bmluaXQtMS5jCkBAIC0wLDAgKzEsMzAgQEAKKy8qIFNwdXJpb3VzIHVuaW5p dGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZ3MsIGNhc2UgMS4KKyAgIFRha2VuIGZyb20gY3BwZmls ZXMuYyAobWVyZ2VfaW5jbHVkZV9jaGFpbnMpICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItTyAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWlu aXQ9emVybyIgfSAqLworCitzdHJ1Y3QgbGlzdAoreworICBzdHJ1Y3QgbGlzdCAqbmV4dDsKKyAg aW50IGlkOworfTsKKworZXh0ZXJuIHZvaWQgZnJlZSAodm9pZCAqKTsKKwordm9pZCByZW1vdmVf ZHVwZXMgKHN0cnVjdCBsaXN0ICplbCkKK3sKKyAgc3RydWN0IGxpc3QgKnAsICpxLCAqcjsgIC8q IHsgZGctYm9ndXMgInIiICJ1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmciIH0gKi8KKwor ICBmb3IgKHAgPSBlbDsgcDsgcCA9IHAtPm5leHQpCisgIHsKKyAgICBmb3IgKHEgPSBlbDsgcSAh PSBwOyBxID0gcS0+bmV4dCkKKyAgICAgIGlmIChxLT5pZCA9PSBwLT5pZCkKKyAgICAgIHsKKwly LT5uZXh0ID0gcC0+bmV4dDsKKwlmcmVlIChwKTsKKwlwID0gcjsKKwlicmVhazsKKyAgICAgIH0K KyAgICByID0gcDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0 by1pbml0LXVuaW5pdC0xMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5p dC0xMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTU5ZTJkOTYz Mzc2Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVu aW5pdC0xMS5jCkBAIC0wLDAgKzEsNDIgQEAKKy8qIFBvc2l0aXZlIHRlc3QgZm9yIHVuaW5pdGlh bGl6ZWQgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1PIC1XdW5pbml0aWFsaXplZCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9 ICovCisKK2ludCBzaW5rOworCit2b2lkIGYxKGludCBwYXJtKQkvKiB7IGRnLWJvZ3VzICJ1bmlu aXRpYWxpemVkIiAicGFyYW1ldGVyIiB9ICovCit7CisgIHNpbmsgPSBwYXJtOwkJLyogeyBkZy1i b2d1cyAidW5pbml0aWFsaXplZCIgInBhcmFtZXRlciIgfSAqLworfQorCit2b2lkIGYyKHZvaWQp Cit7CisgIGludCB4OworICBzaW5rID0geDsJCS8qIHsgZGctd2FybmluZyAiaXMgdXNlZCIgInVu Y29uZGl0aW9uYWwiIH0gKi8KK30KKwordm9pZCBmMyhpbnQgcCkKK3sKKyAgaW50IHg7CQkKKyAg aWYgKHApCisgICAgeCA9IHA7CisgIHNpbmsgPSB4OyAgICAgICAgICAgIC8qIHsgZGctd2Fybmlu ZyAibWF5IGJlIHVzZWQiICJjb25kaXRpb25hbCIgfSAqLworfQorCit2b2lkIGY0KGludCBwKQor eworICBpbnQgeDsJCS8qIHsgZGctYm9ndXMgInVuaW5pdGlhbGl6ZWQiICJlYXN5IGlmIiB9ICov CisgIGlmIChwKQorICAgIHggPSAxOworICBlbHNlCisgICAgeCA9IDI7CisgIHNpbmsgPSB4Owor fQorCit2b2lkIGY1KHZvaWQpCit7CisgIGludCB4LCBpOwkJLyogeyBkZy1ib2d1cyAidW5pbml0 aWFsaXplZCIgImVhc3kgbG9vcCIgfSAqLworICBmb3IgKGkgPSAwOyBpIDwgMTA7ICsraSkKKyAg ICB4ID0gMTsKKyAgc2luayA9IHg7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy9hdXRvLWluaXQtdW5pbml0LTEyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQt dW5pbml0LTEyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hY2Zm NzI1NzIyZGMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWlu aXQtdW5pbml0LTEyLmMKQEAgLTAsMCArMSwxMiBAQAorLyogUFIgMjM0OTcgKi8KKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1XdW5pbml0aWFsaXplZCAtZnRy aXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK3R5cGVkZWYgX0NvbXBsZXggZmxvYXQg QzsKK0MgZm9vKCkKK3sKKyAgQyBmOworICBfX3JlYWxfXyBmID0gMDsKKyAgX19pbWFnX18gZiA9 IDA7CisgIHJldHVybiBmOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0 by1pbml0LXVuaW5pdC0xMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5p dC0xMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODdkZDhiNTg3 ZTAwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVu aW5pdC0xMy5jCkBAIC0wLDAgKzEsMTAgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1PIC1XdW5pbml0aWFsaXplZCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16 ZXJvIiB9ICovCisKK3R5cGVkZWYgX0NvbXBsZXggZmxvYXQgQzsKK0MgZm9vKCkKK3sKKyAgQyBm OworICBfX2ltYWdfXyBmID0gMDsKKyAgcmV0dXJuIGY7CS8qIHsgZGctd2FybmluZyAiaXMgdXNl ZCIgInVuY29uZGl0aW9uYWwiIH0gKi8KK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL2F1dG8taW5pdC11bmluaXQtMTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5p dC11bmluaXQtMTQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU5 MjA1MmE5ZTlkMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8t aW5pdC11bmluaXQtMTQuYwpAQCAtMCwwICsxLDIwIEBACisvKiBQUiAyNDkzMSAqLworLyogeyBk Zy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLVd1bmluaXRpYWxpemVkIC1m dHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworc3RydWN0IHAgeworICAgICAgICBz aG9ydCB4LCB5OworfTsKKworc3RydWN0IHMgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgc3Ry dWN0IHAgcDsKK307CisKK3N0cnVjdCBzIGYoKQoreworICAgICAgICBzdHJ1Y3QgcyBzOworICAg ICAgICBzLnAgPSAoc3RydWN0IHApe307CisgICAgICAgIHMuaSA9IChzLnAueCB8fCBzLnAueSk7 CisgICAgICAgIHJldHVybiBzOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv YXV0by1pbml0LXVuaW5pdC0xNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVu aW5pdC0xNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTIxZjBj ZmYyNzRhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0 LXVuaW5pdC0xNS5jCkBAIC0wLDAgKzEsMjYgQEAKKy8qIFBSIHRyZWUtb3B0aW1pemF0aW9uLzE3 NTA2CisgICBXZSBpc3N1ZSBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmcgYXQgYSB3 cm9uZyBsb2NhdGlvbiBhdAorICAgbGluZSAxMSwgd2hpY2ggaXMgdmVyeSBjb25mdXNpbmcuICBN YWtlIHN1cmUgd2UgcHJpbnQgb3V0IGEgbm90ZSB0bworICAgbWFrZSBpdCBsZXNzIGNvbmZ1c2lu Zy4gIChub3QgeGZhaWxlZCBhbHRlcm5hdGl2ZSkKKyAgIEJ1dCBpdCBpcyBvZiBjb3Vyc2Ugb2sg aWYgd2Ugd2FybiBpbiBiYXIgYWJvdXQgdW5pbml0aWFsaXplZCB1c2UKKyAgIG9mIGouICAobm90 IHhmYWlsZWQgYWx0ZXJuYXRpdmUpICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsg ZGctb3B0aW9ucyAiLU8xIC1XdW5pbml0aWFsaXplZCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16 ZXJvIiB9ICovCisKK2lubGluZSBpbnQKK2ZvbyAoaW50IGkpCit7CisgIGlmIChpKSAvKiB7IGRn LXdhcm5pbmcgInVzZWQgdW5pbml0aWFsaXplZCIgfSAqLworICAgIHJldHVybiAxOworICByZXR1 cm4gMDsKK30KKwordm9pZCBiYXogKHZvaWQpOworCit2b2lkCitiYXIgKHZvaWQpCit7CisgIGlu dCBqOyAvKiB7IGRnLW1lc3NhZ2UgIm5vdGU6ICdqJyB3YXMgZGVjbGFyZWQgaGVyZSIgIiIgfSAq LworICBmb3IgKDsgZm9vIChqKTsgKytqKSAgLyogeyBkZy13YXJuaW5nICInaicgaXMgdXNlZCB1 bmluaXRpYWxpemVkIiAiIiB7IHhmYWlsICotKi0qIH0gfSAqLworICAgIGJheiAoKTsKK30KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTYuYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTYuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBlNGYzMzZmNzI2ZgotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTYuYwpAQCAtMCwwICsxLDIz IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLVd1bmlu aXRpYWxpemVkIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworaW50IGZvbywg YmFyOworCitzdGF0aWMKK3ZvaWQgZGVjb2RlX3JlbG9jKGludCByZWxvYywgaW50ICppc19hbHQp Cit7CisgIGlmIChyZWxvYyA+PSAyMCkKKyAgICAgICppc19hbHQgPSAxOworICBlbHNlIGlmIChy ZWxvYyA+PSAxMCkKKyAgICAgICppc19hbHQgPSAwOworfQorCit2b2lkIHRlc3RmdW5jKCkKK3sK KyAgaW50IGFsdF9yZWxvYzsKKworICBkZWNvZGVfcmVsb2MoZm9vLCAmYWx0X3JlbG9jKTsKKwor ICBpZiAoYWx0X3JlbG9jKSAvKiB7IGRnLXdhcm5pbmcgIm1heSBiZSB1c2VkIHVuaW5pdGlhbGl6 ZWQiIH0gKi8KKyAgICBiYXIgPSA0MjsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL2F1dG8taW5pdC11bmluaXQtMTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5p dC11bmluaXQtMTcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjll ZWM5NDQwYzc1ZQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8t aW5pdC11bmluaXQtMTcuYwpAQCAtMCwwICsxLDE1IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAq LworLyogeyBkZy1vcHRpb25zICItTyAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFy LWluaXQ9emVybyIgfSAqLworCit0eXBlZGVmIF9Db21wbGV4IGZsb2F0IEM7CitDIGZvbyhpbnQg Y29uZCkKK3sKKyAgQyBmOworICBfX2ltYWdfXyBmID0gMDsKKyAgaWYgKGNvbmQpCisgICAgewor ICAgICAgX19yZWFsX18gZiA9IDE7CisgICAgICByZXR1cm4gZjsKKyAgICB9CisgIHJldHVybiBm OwkvKiB7IGRnLXdhcm5pbmcgIm1heSBiZSB1c2VkIiAidW5jb25kaXRpb25hbCIgfSAqLworfQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xOC5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xOC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDkyMjg0OGY2ZGM3Ci0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xOC5jCkBAIC0wLDAgKzEs MjQgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICAqLworLyogeyBkZy1vcHRpb25zICItTyAtV3Vu aW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCitjaGFyICpm b28oaW50IGJhciwgY2hhciAqYmF6KQoreworICBjaGFyICp0bXA7CisKKyAgaWYgKGJhciAmIDMp CisgICAgdG1wID0gYmF6OworCisgIHN3aXRjaCAoYmFyKSB7CisgIGNhc2UgMToKKyAgICB0bXBb NV0gPSA3OyAgICAvKiB7IGRnLWJvZ3VzICJtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIiB9ICov CisgICAgYnJlYWs7CisgIGNhc2UgMjoKKyAgICB0bXBbMTFdID0gMTU7ICAvKiB7IGRnLWJvZ3Vz ICJtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIiB9ICovCisgICAgYnJlYWs7CisgIGRlZmF1bHQ6 CisgICAgdG1wID0gMDsKKyAgICBicmVhazsKKyAgfQorCisgIHJldHVybiB0bXA7ICAgICAgLyog eyBkZy1ib2d1cyAibWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCIgfSAqLworfQpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xOS5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xOS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uMzhkMjdlNGY5NTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xOS5jCkBAIC0wLDAgKzEsMjYgQEAKKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1XdW5pbml0aWFsaXpl ZCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwt b3B0aW9ucyAiLWZpbmxpbmUtc21hbGwtZnVuY3Rpb25zIiB7IHRhcmdldCBhdnItKi0qIH0gfSAq LworCitpbnQgYSwgbCwgbTsKK2Zsb2F0ICpiOworZmxvYXQgYywgZCwgZSwgZywgaDsKK3Vuc2ln bmVkIGNoYXIgaSwgazsKK3ZvaWQKK2ZuMSAoaW50IHAxLCBmbG9hdCAqZjEsIGZsb2F0ICpmMiwg ZmxvYXQgKmYzLCB1bnNpZ25lZCBjaGFyICpjMSwgZmxvYXQgKmY0LAorICAgICB1bnNpZ25lZCBj aGFyICpjMiwgZmxvYXQgKnAxMCkKK3sKKyAgaWYgKHAxICYgOCkKKyAgICBiWzNdID0gcDEwW2Fd OworICAvKiB7IGRnLXdhcm5pbmcgIm1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQiICIiIHsgdGFy Z2V0IHsgeyBub25waWMgfHwgcGllX2VuYWJsZWQgfSB8fCB7IGhwcGEqNjQqLSotKiAqLSotZGFy d2luKiB9IH0gfSAuLTEgfSAqLworfQorCit2b2lkCitmbjIgKCkKK3sKKyAgZmxvYXQgKm47Cisg IGlmIChsICYgNikKKyAgICBuID0gJmMgKyBtOworICBmbjEgKGwsICZkLCAmZSwgJmcsICZpLCAm aCwgJmssIG4pOworICAvKiB7IGRnLXdhcm5pbmcgIm1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQi ICIiIHsgdGFyZ2V0IHsgISB7IHsgbm9ucGljIHx8IHBpZV9lbmFibGVkIH0gfHwgeyBocHBhKjY0 Ki0qLSogKi0qLWRhcndpbiogfSB9IH0gfSAuLTEgfSAqLworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5k Zy9hdXRvLWluaXQtdW5pbml0LTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLmRhMDNiZjhmNmQ5OAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL2F1dG8taW5pdC11bmluaXQtMi5jCkBAIC0wLDAgKzEsNTIgQEAKKy8qIFNwdXJpb3VzIHVu aW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZ3MsIGNhc2UgMi4KKyAgIFRha2VuIGZyb20gY3Bw aGFzaC5jIChtYWNyb2V4cGFuZCkgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1PIC1XdW5pbml0aWFsaXplZCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJv IiB9ICovCisKK3N0cnVjdCBkZWZpbml0aW9uCit7CisgIGludCBuYXJnczsKKyAgaW50IHJlc3Rf YXJnczsKK307CisKK3N0cnVjdCBjcHBfcmVhZGVyOworCitlbnVtIGNwcF90b2tlbgoreworICBD UFBfRU9GLCBDUFBfUE9QLCBDUFBfQ09NTUEsIENQUF9SUEFSRU4KK307CisKK2V4dGVybiBlbnVt IGNwcF90b2tlbiBtYWNhcmcgKHN0cnVjdCBjcHBfcmVhZGVyICosIGludCk7CisKK3ZvaWQKK21h Y3JvZXhwYW5kIChzdHJ1Y3QgY3BwX3JlYWRlciAqcGZpbGUsIHN0cnVjdCBkZWZpbml0aW9uICpk ZWZuKQoreworICBpbnQgbmFyZ3MgPSBkZWZuLT5uYXJnczsKKworICBpZiAobmFyZ3MgPj0gMCkK KyAgICB7CisgICAgICBlbnVtIGNwcF90b2tlbiB0b2tlbjsgIC8qIHsgZGctYm9ndXMgInRva2Vu IiAidW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5nIiB9ICovCisgICAgICBpbnQgaSwgcmVz dF9hcmdzOworICAgICAgaSA9IDA7CisgICAgICByZXN0X2FyZ3MgPSAwOworICAgICAgZG8KKwl7 CisJICBpZiAocmVzdF9hcmdzKQorCSAgICBjb250aW51ZTsKKwkgIGlmIChpIDwgbmFyZ3MgfHwg KG5hcmdzID09IDAgJiYgaSA9PSAwKSkKKwkgICAgeworCSAgICAgIC8qIGlmIHdlIGFyZSB3b3Jr aW5nIG9uIGxhc3QgYXJnIHdoaWNoIGFic29yYnMgcmVzdCBvZiBhcmdzLi4uICovCisJICAgICAg aWYgKGkgPT0gbmFyZ3MgLSAxICYmIGRlZm4tPnJlc3RfYXJncykKKwkJcmVzdF9hcmdzID0gMTsK KwkgICAgICB0b2tlbiA9IG1hY2FyZyAocGZpbGUsIHJlc3RfYXJncyk7CisJICAgIH0KKwkgIGVs c2UKKwkgICAgdG9rZW4gPSBtYWNhcmcgKHBmaWxlLCAwKTsKKwkgIGlmICh0b2tlbiA9PSBDUFBf RU9GIHx8IHRva2VuID09IENQUF9QT1ApCisJICAgIHJldHVybjsKKworCSAgaSsrOworCX0KKyAg ICAgIHdoaWxlICh0b2tlbiA9PSBDUFBfQ09NTUEpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjAuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLmY1MzNjZTljNzBlNwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjAuYwpAQCAtMCwwICsxLDE4IEBACisvKiBTcHVy aW91cyB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmdzLCBmcm9tIGdkYiAqLworLyogeyBk Zy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1XdW5pbml0aWFsaXplZCAt ZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCitzdHJ1Y3Qgb3MgeyBzdHJ1Y3QgbyAq bzsgfTsKK3N0cnVjdCBvIHsgc3RydWN0IG8gKm5leHQ7IHN0cnVjdCBvcyAqc2U7IH07Cit2b2lk IGYoc3RydWN0IG8gKm8peworICBzdHJ1Y3Qgb3MgKnM7CisgIGlmKG8pIHMgPSBvLT5zZTsKKyAg d2hpbGUobyAmJiBzID09IG8tPnNlKXsKKyAgICBzKys7IC8vIGhlcmUgYG8nIGlzIG5vbi16ZXJv IGFuZCB0aHVzIHMgaXMgaW5pdGlhbGl6ZWQKKyAgICBzID09IG8tPnNlICAvLyBgPycgaXMgZXNz ZW50aWFsLCBgaWYnIGRvZXMgbm90IHRyaWdnZXIgdGhlIHdhcm5pbmcKKyAgICAgID8gKG8gPSBv LT5uZXh0LCBvID8gcyA9IG8tPnNlIDogMCkKKyAgICAgIDogMDsKKyAgfQorfQorCisKKwpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yMS5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yMS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjA0NGVhYjI3ODcwCi0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yMS5jCkBAIC0wLDAgKzEsMzMg QEAKKy8qIFBSNjk1MzcsIHNwdXJpb3VzIHdhcm5pbmcgYmVjYXVzZSBvZiBhIG1pc3NlZCBvcHRp bWl6YXRpb24uICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICIt TzIgLWZuby1zaG9ydC1lbnVtcyAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWlu aXQ9emVybyIgfSAqLworCitlbnVtIGNsbnRfc3RhdCB7CisgUlBDX1NVQ0NFU1M9MCwKKyBSUENf Q0FOVEVOQ09ERUFSR1M9MSwKK307CisgCitpbnQgZG9feXBjYWxsX3RyICgpOworIAorc3RhdGlj IGludAoreXBfbWFzdGVyIChjaGFyICoqb3V0bmFtZSkKK3sKKyAgLy8gUmVwbGFjaW5nIGVudW0g Y2xudF9zdGF0IHdpdGggaW50IGF2b2lkcyB0aGUgd2FybmluZy4KKyAgZW51bSBjbG50X3N0YXQg cmVzdWx0OworICByZXN1bHQgPSBkb195cGNhbGxfdHIgKCk7CisgIGlmIChyZXN1bHQgIT0gMCkK KyAgICByZXR1cm4gcmVzdWx0OworICAqb3V0bmFtZSA9IF9fYnVpbHRpbl9zdHJkdXAgKCJmb28i KTsKKyAgcmV0dXJuIDA7Cit9CisgCitpbnQKK3lwX3VwZGF0ZSAodm9pZCkKK3sKKyAgY2hhciAq bWFzdGVyOworICBpbnQgcjsKKyAgaWYgKChyID0geXBfbWFzdGVyICgmbWFzdGVyKSkgIT0gMCkK KyAgICByZXR1cm4gcjsKKyAgX19idWlsdGluX2ZyZWUgKG1hc3Rlcik7IC8qIHsgZGctYm9ndXMg InVuaW5pdGlhbGl6ZWQiIH0gKi8KKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTIyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5k Zy9hdXRvLWluaXQtdW5pbml0LTIyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi4wMjAwZDczNGEyYzMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy9hdXRvLWluaXQtdW5pbml0LTIyLmMKQEAgLTAsMCArMSw2OSBAQAorLyogeyBkZy1kbyBj b21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8zIC1XdW5pbml0aWFsaXplZCAtLXBhcmFt IHZlY3QtbWF4LXZlcnNpb24tZm9yLWFsaWFzLWNoZWNrcz0yMCAtZnRyaXZpYWwtYXV0by12YXIt aW5pdD16ZXJvIiB9ICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2RlZmluZSBBMSAgMjg5 NiAvKiAoMS9zcXJ0KDIpKTw8MTIgKi8KKyNkZWZpbmUgQTIgIDIyMTcKKyNkZWZpbmUgQTMgIDM3 ODQKKyNkZWZpbmUgQTQgLTUzNTIKKworI2RlZmluZSBJRENUX1RSQU5TRk9STShkZXN0LHMwLHMx LHMyLHMzLHM0LHM1LHM2LHM3LGQwLGQxLGQyLGQzLGQ0LGQ1LGQ2LGQ3LG11bmdlLHNyYykge1wK KyAgICBjb25zdCBpbnQgYTAgPSAoc3JjKVtzMF0gKyAoc3JjKVtzNF07IFwKKyAgICBjb25zdCBp bnQgYTEgPSAoc3JjKVtzMF0gLSAoc3JjKVtzNF07IFwKKyAgICBjb25zdCBpbnQgYTIgPSAoc3Jj KVtzMl0gKyAoc3JjKVtzNl07IFwKKyAgICBjb25zdCBpbnQgYTMgPSAoQTEqKChzcmMpW3MyXSAt IChzcmMpW3M2XSkpID4+IDExOyBcCisgICAgY29uc3QgaW50IGE0ID0gKHNyYylbczVdICsgKHNy YylbczNdOyBcCisgICAgY29uc3QgaW50IGE1ID0gKHNyYylbczVdIC0gKHNyYylbczNdOyBcCisg ICAgY29uc3QgaW50IGE2ID0gKHNyYylbczFdICsgKHNyYylbczddOyBcCisgICAgY29uc3QgaW50 IGE3ID0gKHNyYylbczFdIC0gKHNyYylbczddOyBcCisgICAgY29uc3QgaW50IGIwID0gYTQgKyBh NjsgXAorICAgIGNvbnN0IGludCBiMSA9IChBMyooYTUgKyBhNykpID4+IDExOyBcCisgICAgY29u c3QgaW50IGIyID0gKChBNCphNSkgPj4gMTEpIC0gYjAgKyBiMTsgXAorICAgIGNvbnN0IGludCBi MyA9IChBMSooYTYgLSBhNCkgPj4gMTEpIC0gYjI7IFwKKyAgICBjb25zdCBpbnQgYjQgPSAoKEEy KmE3KSA+PiAxMSkgKyBiMyAtIGIxOyBcCisgICAgKGRlc3QpW2QwXSA9IG11bmdlKGEwK2EyICAg K2IwKTsgXAorICAgIChkZXN0KVtkMV0gPSBtdW5nZShhMSthMy1hMitiMik7IFwKKyAgICAoZGVz dClbZDJdID0gbXVuZ2UoYTEtYTMrYTIrYjMpOyBcCisgICAgKGRlc3QpW2QzXSA9IG11bmdlKGEw LWEyICAgLWI0KTsgXAorICAgIChkZXN0KVtkNF0gPSBtdW5nZShhMC1hMiAgICtiNCk7IFwKKyAg ICAoZGVzdClbZDVdID0gbXVuZ2UoYTEtYTMrYTItYjMpOyBcCisgICAgKGRlc3QpW2Q2XSA9IG11 bmdlKGExK2EzLWEyLWIyKTsgXAorICAgIChkZXN0KVtkN10gPSBtdW5nZShhMCthMiAgIC1iMCk7 IFwKK30KKworI2RlZmluZSBNVU5HRV9OT05FKHgpICh4KQorI2RlZmluZSBJRENUX0NPTChkZXN0 LHNyYykgSURDVF9UUkFOU0ZPUk0oZGVzdCwwLDgsMTYsMjQsMzIsNDAsNDgsNTYsMCw4LDE2LDI0 LDMyLDQwLDQ4LDU2LE1VTkdFX05PTkUsc3JjKQorCisjZGVmaW5lIE1VTkdFX1JPVyh4KSAoKCh4 KSArIDB4N0YpPj44KQorI2RlZmluZSBJRENUX1JPVyhkZXN0LHNyYykgSURDVF9UUkFOU0ZPUk0o ZGVzdCwwLDEsMiwzLDQsNSw2LDcsMCwxLDIsMyw0LDUsNiw3LE1VTkdFX1JPVyxzcmMpCisKK3N0 YXRpYyBpbmxpbmUgdm9pZCBiaW5rX2lkY3RfY29sKGludCAqZGVzdCwgY29uc3QgaW50MzJfdCAq c3JjKQoreworICAgIGlmICgoc3JjWzhdfHNyY1sxNl18c3JjWzI0XXxzcmNbMzJdfHNyY1s0MF18 c3JjWzQ4XXxzcmNbNTZdKT09MCkgeworICAgICAgICBkZXN0WzBdICA9CisgICAgICAgIGRlc3Rb OF0gID0KKyAgICAgICAgZGVzdFsxNl0gPQorICAgICAgICBkZXN0WzI0XSA9CisgICAgICAgIGRl c3RbMzJdID0KKyAgICAgICAgZGVzdFs0MF0gPQorICAgICAgICBkZXN0WzQ4XSA9CisgICAgICAg IGRlc3RbNTZdID0gc3JjWzBdOworICAgIH0gZWxzZSB7CisgICAgICAgIElEQ1RfQ09MKGRlc3Qs IHNyYyk7CisgICAgfQorfQorCitpbnQgYmlua19pZGN0X3B1dF9jKHVpbnQ4X3QgKmRlc3QsIGlu dCBsaW5lc2l6ZSwgaW50MzJfdCAqYmxvY2spCit7CisgICAgaW50IGk7CisgICAgaW50IHRlbXBb NjRdOworICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspCisgICAgICAgIGJpbmtfaWRjdF9jb2wo JnRlbXBbaV0sICZibG9ja1tpXSk7CisgICAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworICAg ICAgICBJRENUX1JPVyggKCZkZXN0W2kqbGluZXNpemVdKSwgKCZ0ZW1wWzgqaV0pICk7CisgICAg fQorCisgICAgcmV0dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRn L2F1dG8taW5pdC11bmluaXQtMjMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11 bmluaXQtMjMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdkY2U4 ZDA1MmUxNgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5p dC11bmluaXQtMjMuYwpAQCAtMCwwICsxLDI3IEBACisvKiBQUiB0cmVlLW9wdGltaXphdGlvbi83 ODQ1NSAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1X dW5pbml0aWFsaXplZCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK2ludCBp ajsKKwordm9pZAorcWwgKHZvaWQpCit7CisgIGludCBtNSA9IDA7CisKKyAgZm9yICg7OykKKyAg eworICAgIGlmICgwKQorICAgICAgZm9yICg7OykKKyAgICAgIHsKKyAgICAgICAgaW50ICpnbzsK KyAgICAgICAgaW50ICp0NCA9IGdvOyAvKiB7IGRnLXdhcm5pbmcgImlzIHVzZWQgdW5pbml0aWFs aXplZCIgfSAqLworCisgbDE6CisgICAgICAgICp0NCA9ICgqdDQgIT0gMCkgPyAwIDogMjsKKyAg ICAgIH0KKworICAgIGlmIChpaiAhPSAwKQorICAgICAgZ290byBsMTsKKyAgfQorfQpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yNC5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uMWY2NzQwYzEyM2FkCi0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yNC5jCkBAIC0wLDAgKzEsMTAgQEAK Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1XbWF5YmUtdW5p bml0aWFsaXplZCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK2ludCBmb28g KGludCB4KQoreworICBpbnQgeTsKKyAgaWYgKHgpCisgICAgcmV0dXJuICooJnkgKyAxKTsgLyog eyBkZy1ib2d1cyAibWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCIgfSAqLworICByZXR1cm4gMDsK K30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjUu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjUuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYzNmQ5NWY5ZDI3OQotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjUuYwpAQCAtMCww ICsxLDIzIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAt V21heWJlLXVuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLwor CitleHRlcm4gdW5zaWduZWQgYmFyICh2b2lkKTsKK2V4dGVybiB2b2lkIHF1dXggKHZvaWQpOwor Cit1bnNpZ25lZCBmb28gKHVuc2lnbmVkIHYpCit7CisgIHVuc2lnbmVkIHU7CisgIGlmICh2ICE9 IDEpCisgICAgdSA9IGJhciAoKTsKKworICAvLyBQcmV2ZW50IHRoZSAiZG9tIiBwYXNzIGZyb20g Y2hhbmdpbmcgdGhlIENGRyBsYXlvdXQgYmFzZWQgb24gdGhlIGluZmVyZW5jZQorICAvLyAnaWYg KHYgIT0gMSkgaXMgZmFsc2UgdGhlbiAodiAhPSAyKSBpcyB0cnVlJy4gIChOb3cgaXQgd291bGQg aGF2ZSB0bworICAvLyBkdXBsaWNhdGUgdGhlIGxvb3AgaW4gb3JkZXIgdG8gZG8gc28sIHdoaWNo IGlzIGRlZW1lZCBleHBlbnNpdmUuKQorICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspCisg ICAgcXV1eCAoKTsKKworICBpZiAodiAhPSAyKQorICAgIHJldHVybiB1OyAgICAgICAvKiB7IGRn LXdhcm5pbmcgIm1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQiIH0gKi8KKworICByZXR1cm4gMDsK K30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjYu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjYuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFlOTdlY2ZhNzFlMQotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjYuYwpAQCAtMCww ICsxLDIzIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAt V21heWJlLXVuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLwor CitleHRlcm4gdW5zaWduZWQgYmFyICh2b2lkKTsKK2V4dGVybiB2b2lkIHF1dXggKHZvaWQpOwor Cit1bnNpZ25lZCBmb28gKHVuc2lnbmVkIHYpCit7CisgIHVuc2lnbmVkIHU7CisgIGlmICh2ICE9 IDEwMCkKKyAgICB1ID0gYmFyICgpOworCisgIC8vIFByZXZlbnQgdGhlICJkb20iIHBhc3MgZnJv bSBjaGFuZ2luZyB0aGUgQ0ZHIGxheW91dCBiYXNlZCBvbiB0aGUgaW5mZXJlbmNlCisgIC8vICdp ZiAodiAhPSAxMDApIGlzIGZhbHNlIHRoZW4gKHYgPCAxMDUpIGlzIHRydWUnLiAgKE5vdyBpdCB3 b3VsZCBoYXZlIHRvCisgIC8vIGR1cGxpY2F0ZSB0aGUgbG9vcCBpbiBvcmRlciB0byBkbyBzbywg d2hpY2ggaXMgZGVlbWVkIGV4cGVuc2l2ZS4pCisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkr KykKKyAgICBxdXV4ICgpOworCisgIGlmICh2IDwgMTA1KSAvKiB2ID09IDEwMCBmYWxscyBpbnRv IHRoaXMgcmFuZ2UuICAqLworICAgIHJldHVybiB1OyAgICAgICAvKiB7IGRnLXdhcm5pbmcgIm1h eSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQiIH0gICovCisKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTMuYyBiL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uN2ZmMjI4NTAxZjhkCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0zLmMKQEAgLTAsMCArMSwzMyBAQAorLyog U3B1cmlvdXMgdW5pbml0IHZhcmlhYmxlIHdhcm5pbmdzLCBjYXNlIDMuCisgICBJbnNwaXJlZCBi eSBjcHBleHAuYyAocGFyc2VfY2hhcmNvbnN0KSAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLU8gLVd1bmluaXRpYWxpemVkIC1mdHJpdmlhbC1hdXRvLXZhci1p bml0PXplcm8iIH0gKi8KKworZXh0ZXJuIHZvaWQgZXJyb3IgKGNoYXIgKik7CisKK2ludAorcGFy c2VfY2hhcmNvbnN0IChjb25zdCBjaGFyICpzdGFydCwgY29uc3QgY2hhciAqZW5kKQoreworICBp bnQgYzsgLyogeyBkZy1ib2d1cyAiYyIgInVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZyIg fSAqLworICBpbnQgbmNoYXJzLCByZXR2YWw7CisKKyAgbmNoYXJzID0gMDsKKyAgcmV0dmFsID0g MDsKKyAgd2hpbGUgKHN0YXJ0IDwgZW5kKQorICAgIHsKKyAgICAgIGMgPSAqc3RhcnQrKzsKKyAg ICAgIGlmIChjID09ICdcJycpCisJYnJlYWs7CisgICAgICBuY2hhcnMrKzsKKyAgICAgIHJldHZh bCArPSBjOworICAgICAgcmV0dmFsIDw8PSA4OworICAgIH0KKworICBpZiAobmNoYXJzID09IDAp CisgICAgcmV0dXJuIDA7CisKKyAgaWYgKGMgIT0gJ1wnJykKKyAgICBlcnJvciAoIm1hbGZvcm1l ZCBjaGFyYWN0ZXIgY29uc3RhbnQiKTsKKworICByZXR1cm4gcmV0dmFsOworfQpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0zNC5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0zNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uOThmYzM2NmM4NzFmCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0zNC5jCkBAIC0wLDAgKzEsNTggQEAKKy8q IFBSIG1pZGRsZS1lbmQvMTAxMzggLSB3YXJuIGZvciB1bmluaXRpYWxpemVkIGFycmF5cyBwYXNz ZWQgYXMgY29uc3QqCisgICBhcmd1bWVudHMKKyAgIFZlcmlmeSB0aGF0IHBhc3NpbmcgcG9pbnRl cnMgdG8gdW5pbml0aWFsaXplZCBvYmplY3RzIHRvIGFyZ3VtZW50cworICAgdG8gZnVuY3Rpb25z IGRlY2xhcmVkIHdpdGggYXR0cmlidXRlIGFjY2VzcyBpcyBkaWFnbm9zZWQgd2hlcmUgZXhwZWN0 ZWQuCisgICB7IGRnLWRvIGNvbXBpbGUgfQorICAgeyBkZy1vcHRpb25zICItTyAtV2FsbCAtZnRy aXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKKyNkZWZpbmUgUlcoLi4uKSBfX2F0dHJp YnV0ZV9fICgoYWNjZXNzIChyZWFkX3dyaXRlLCBfX1ZBX0FSR1NfXykpKQorCitSVyAoMSkgUlcg KDMpIHZvaWQKK2Y0cGkgKGludCosIGludCosIGludCosIGludCopOyAgICAvLyB7IGRnLW1lc3Nh Z2UgImluIGEgY2FsbCB0byAnZjRwaScgZGVjbGFyZWQgd2l0aCBhdHRyaWJ1dGUgJ2FjY2VzcyBc XFwocmVhZF93cml0ZSwgXFsxM1xdXFxcKSciIH0KKworCit2b2lkIG5vd2Fybl9zY2FsYXIgKHZv aWQpCit7CisgIGludCBpMSA9IDAsIGkyLCBpMyA9IDEsIGk0OworICBmNHBpICgmaTEsICZpMiwg JmkzLCAmaTQpOworfQorCit2b2lkIHdhcm5fc2NhbGFyXzEgKHZvaWQpCit7CisgIGludCBpMTsg ICAgICAgICAgICAgICAgICAgICAgICAgLy8geyBkZy1tZXNzYWdlICJkZWNsYXJlZCBoZXJlIiB9 CisgIGludCBpMiwgaTMgPSAxLCBpNDsKKworICBmNHBpICgmaTEsICZpMiwgJmkzLCAmaTQpOyAg ICAgIC8vIHsgZGctd2FybmluZyAiJ2kxJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIiB9Cit9 CisKK3ZvaWQgd2Fybl9zY2FsYXJfMiAodm9pZCkKK3sKKyAgaW50IGoxID0gMCwgajIsIGo0Owor ICBpbnQgajM7CisKKyAgZjRwaSAoJmoxLCAmajIsICZqMywgJmo0KTsgICAgICAvLyB7IGRnLXdh cm5pbmcgIidqMycgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCIgfQorfQorCisKK3ZvaWQgbm93 YXJuX2FycmF5X2luaXQgKHZvaWQpCit7CisgIGludCBhMVs0XSA9IHsgMCB9LCBhMls1XSwgYTNb Nl0gPSB7IDAgfSwgYTRbN107CisKKyAgZjRwaSAoYTEsIGEyLCBhMywgYTQpOworfQorCit2b2lk IHdhcm5fYXJyYXlfMSAodm9pZCkKK3sKKyAgaW50IGExWzRdOyAgICAgICAgICAgICAgICAgIC8v IHsgZGctbWVzc2FnZSAiJ2ExJyBkZWNsYXJlZCBoZXJlIiB9CisgIGludCBhMls1XSwgYTNbNl0g PSB7IDAgfSwgYTRbN107CisKKyAgZjRwaSAoYTEsIGEyLCBhMywgYTQpOyAgICAgIC8vIHsgZGct d2FybmluZyAiJ2ExJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIiB9Cit9CisKK3ZvaWQgd2Fy bl9hcnJheV8yICh2b2lkKQoreworICBpbnQgYTFbNF0gPSB7IDAgfSwgYTJbNV0sIGE0WzddOwor ICBpbnQgYTNbNl07ICAgICAgICAgICAgICAgICAgLy8geyBkZy1tZXNzYWdlICInYTMnIGRlY2xh cmVkIGhlcmUiIH0KKworICBmNHBpIChhMSwgYTIsIGEzLCBhNCk7ICAgICAgLy8geyBkZy13YXJu aW5nICInYTMnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQiIH0KK30KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMzYuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL2F1dG8taW5pdC11bmluaXQtMzYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjY0Mzc3ZDM4MGVlOQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMzYuYwpAQCAtMCwwICsxLDIzOCBAQAorLyogUFIg bWlkZGxlLWVuZC8xMDEzOCAtIHdhcm4gZm9yIHVuaW5pdGlhbGl6ZWQgYXJyYXlzIHBhc3NlZCBh cyBjb25zdCoKKyAgIGFyZ3VtZW50cworICAgVmVyaWZ5IHRoYXQgcGFzc2luZyBwb2ludGVycyB0 byB1bmluaXRpYWxpemVkIG9iamVjdHMgdG8gY29uc3QKKyAgIGFyZ3VtZW50cyB0byBidWlsdC1p bnMgaXMgZGlhZ25vc2VkIHdoZXJlIGV4cGVjdGVkLgorICAgeyBkZy1kbyBjb21waWxlIH0KKyAg IHsgZGctb3B0aW9ucyAiLU8gLVdhbGwgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfQor ICAgeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgYWxsb2NhIH0gKi8KKwordHlwZWRlZiBf X1NJWkVfVFlQRV9fIHNpemVfdDsKKwordm9pZCogYWxsb2NhIChzaXplX3QpOwordm9pZCogbWFs bG9jIChzaXplX3QpOwordm9pZCogcmVhbGxvYyAodm9pZCosIHNpemVfdCk7CisKK3ZvaWQqIG1l bWNweSAodm9pZCosIGNvbnN0IHZvaWQqLCBzaXplX3QpOworY2hhciogc3RyY3B5IChjaGFyKiwg Y29uc3QgY2hhciopOworc2l6ZV90IHN0cmxlbiAoY29uc3QgY2hhciopOworCit2b2lkIHNpbmsg KHZvaWQqKTsKKwordm9pZCBub3dhcm5fYXJyYXlfbWVtY3B5ICh2b2lkICpkLCB1bnNpZ25lZCBu KQoreworICBpbnQgYVsyXTsKKyAgLyogRGlhZ25vc2UgdGhpcz8gICovCisgIG1lbWNweSAoZCwg YSwgbiAvKiBOb24tY29uc3RhbnQgdG8gYXZvaWQgZm9sZGluZyBpbnRvIE1FTV9SRUYuICAqLyk7 Cit9CisKK3ZvaWQgbm93YXJuX2FycmF5X3BsdXNfY3N0X21lbWNweSAodm9pZCAqZCwgdW5zaWdu ZWQgbikKK3sKKyAgaW50IGFbM107CisgIC8qIERpYWdub3NlIHRoaXM/ICAqLworICBtZW1jcHkg KGQsIGEgKyAxLCBuKTsKK30KKwordm9pZCBub3dhcm5fYXJyYXlfcGx1c192YXJfbWVtY3B5ICh2 b2lkICpkLCB1bnNpZ25lZCBuLCBpbnQgaSkKK3sKKyAgaW50IGFbNF07CisgIC8qIERpYWdub3Nl IHRoaXM/ICAqLworICBtZW1jcHkgKGQsIGEgKyBpLCBuKTsKK30KKwordm9pZCBub3dhcm5fYXJy YXlfYXNzaWduX21lbWNweSAoY2hhciAqZCwgdW5zaWduZWQgbikKK3sKKyAgaW50IGFbM107Cisg IGFbMV0gPSAzOworICBtZW1jcHkgKGQsIGEsIG4pOworfQorCit2b2lkIG5vd2Fybl9hcnJheV9p bml0X21lbWNweSAoY2hhciAqZCwgdW5zaWduZWQgbikKK3sKKyAgaW50IGFbNF0gPSB7IDAgfTsK KyAgbWVtY3B5IChkLCBhLCBuKTsKK30KKwordm9pZCBub3dhcm5fYXJyYXlfY29tcG91bmRfbWVt Y3B5ICh2b2lkICpkLCB1bnNpZ25lZCBuKQoreworICBtZW1jcHkgKGQsIChpbnRbMl0peyAwIH0s IG4pOworfQorCit2b2lkIG5vd2Fybl9zdHJ1Y3RfYXNzaWduX21lbWNweSAodm9pZCAqZCwgdW5z aWduZWQgbikKK3sKKyAgc3RydWN0IFMgeyBpbnQgYSwgYiwgYywgZDsgfSBzOworICBzLmIgPSAx OworICBzLmQgPSAyOworICBtZW1jcHkgKGQsICZzLCBuKTsKK30KKworCit2b2lkIG5vd2Fybl9h cnJheV9pbml0X3N0cmNweSAoY2hhciAqZFtdLCB1bnNpZ25lZCBuKQoreworICBjaGFyIGFbOF0g PSAiMDEyIjsKKworICBzdHJjcHkgKGRbMF0sIGEpOworICBzdHJjcHkgKGRbMV0sIGEgKyAxKTsK KyAgc3RyY3B5IChkWzFdLCBhICsgMik7CisgIHN0cmNweSAoZFsxXSwgYSArIDMpOworICBzdHJj cHkgKGRbMV0sIGEgKyA0KTsKKyAgc3RyY3B5IChkWzFdLCBhICsgNSk7CisgIHN0cmNweSAoZFsx XSwgYSArIDYpOworICBzdHJjcHkgKGRbMV0sIGEgKyA3KTsKK30KKworCit2b2lkIG5vd2Fybl9h cnJheV9hc3NpZ25fc3RyY3B5IChjaGFyICpkW10sIHVuc2lnbmVkIG4pCit7CisgIGNoYXIgYVs4 XTsKKyAgYVswXSA9ICcwJzsKKyAgYVsxXSA9ICcxJzsKKyAgYVsyXSA9ICcyJzsKKyAgYVszXSA9 ICdcMCc7CisKKyAgc3RyY3B5IChkWzBdLCBhKTsKKyAgc3RyY3B5IChkWzFdLCBhICsgMSk7Cisg IHN0cmNweSAoZFsxXSwgYSArIDIpOworICBzdHJjcHkgKGRbMV0sIGEgKyAzKTsKK30KKwordm9p ZCB3YXJuX2FycmF5X3BsdXNfY3N0X3N0cmNweSAoY2hhciAqZCwgdW5zaWduZWQgbikKK3sKKyAg Y2hhciBhWzhdOworICBhWzBdID0gJzEnOworICBhWzFdID0gJzInOworICBhWzJdID0gJzMnOwor ICBhWzNdID0gJ1wwJzsKKworICBzdHJjcHkgKGQsIGEgKyA0KTsgICAgICAgICAgLy8geyBkZy13 YXJuaW5nICJcXFxbLVd1bmluaXRpYWxpemVkIiB9CisgIHN0cmNweSAoZCwgYSArIDUpOyAgICAg ICAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV3VuaW5pdGlhbGl6ZWQiIH0KKyAgc3RyY3B5IChk LCBhICsgNik7ICAgICAgICAgIC8vIHsgZGctd2FybmluZyAiXFxcWy1XdW5pbml0aWFsaXplZCIg fQorICBzdHJjcHkgKGQsIGEgKyA3KTsgICAgICAgICAgLy8geyBkZy13YXJuaW5nICJcXFxbLVd1 bmluaXRpYWxpemVkIiB9Cit9CisKK3ZvaWQgbm93YXJuX2FycmF5X3BsdXNfdmFyX3N0cmNweSAo Y2hhciAqZCwgaW50IGkpCit7CisgIGNoYXIgYVs4XTsKKyAgYVswXSA9ICcxJzsKKyAgYVsxXSA9 ICcyJzsKKyAgYVsyXSA9ICczJzsKKyAgYVszXSA9ICdcMCc7CisKKyAgc3RyY3B5IChkLCBhICsg aSk7Cit9CisKKworc2l6ZV90IG5vd2Fybl9hcnJheV9hc3NpZ25fc3RybGVuIChjb25zdCBjaGFy ICpzKQoreworICBjaGFyIGFbOF07CisgIGFbMF0gPSBzWzBdOworICBhWzFdID0gc1sxXTsKKyAg YVsyXSA9IHNbMl07CisgIGFbM10gPSBzWzNdOworCisgIHNpemVfdCBuID0gMDsKKworICBuICs9 IHN0cmxlbiAoYSk7CisgIG4gKz0gc3RybGVuIChhICsgMSk7CisgIG4gKz0gc3RybGVuIChhICsg Mik7CisgIG4gKz0gc3RybGVuIChhICsgMyk7CisgIHJldHVybiBuOworfQorCitzaXplX3Qgd2Fy bl9hcnJheV9wbHVzX2NzdF9zdHJsZW4gKGNvbnN0IGNoYXIgKnMpCit7CisgIGNoYXIgYVs4XTsK KyAgYVswXSA9IHNbMF07CisgIGFbMV0gPSBzWzFdOworICBhWzJdID0gc1syXTsKKyAgYVszXSA9 IHNbM107CisKKyAgcmV0dXJuIHN0cmxlbiAoYSArIDQpOyAgICAgIC8vIHsgZGctd2FybmluZyAi XFxcWy1XdW5pbml0aWFsaXplZCIgfQorfQorCitzaXplX3Qgbm93YXJuX2FycmF5X3BsdXNfdmFy X3N0cmxlbiAoY29uc3QgY2hhciAqcywgaW50IGkpCit7CisgIGNoYXIgYVs4XTsKKyAgYVswXSA9 IHNbMF07CisgIGFbMV0gPSBzWzFdOworICBhWzJdID0gc1syXTsKKyAgYVszXSA9IHNbM107CisK KyAgcmV0dXJuIHN0cmxlbiAoYSArIGkpOworfQorCisKK3NpemVfdCBub3dhcm5fYWxsb2NhX2Fz c2lnbl9zdHJsZW4gKGludCBpKQoreworICBjaGFyICpwID0gKGNoYXIqKWFsbG9jYSAoOCk7Cisg IHBbaV0gPSAnXDAnOworICByZXR1cm4gc3RybGVuIChwKTsKK30KKworc2l6ZV90IG5vd2Fybl9h bGxvY2FfZXNjYXBlX3N0cmxlbiAoaW50IGkpCit7CisgIGNoYXIgKnAgPSAoY2hhciopYWxsb2Nh ICg4KTsKKyAgc2luayAocCk7CisgIHJldHVybiBzdHJsZW4gKHApOworfQorCitzaXplX3Qgd2Fy bl9hbGxvY2Ffc3RybGVuICh2b2lkKQoreworICBjaGFyICpwID0gKGNoYXIqKWFsbG9jYSAoOCk7 CisgIHJldHVybiBzdHJsZW4gKHApOyAgICAgICAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV3Vu aW5pdGlhbGl6ZWQiIH0KK30KKworCitzaXplX3Qgbm93YXJuX21hbGxvY19hc3NpZ25fc3RybGVu IChpbnQgaSkKK3sKKyAgY2hhciAqcCA9IChjaGFyKiltYWxsb2MgKDgpOworICBwW2ldID0gJ1ww JzsKKyAgcmV0dXJuIHN0cmxlbiAocCk7Cit9CisKK3NpemVfdCBub3dhcm5fbWFsbG9jX2VzY2Fw ZV9zdHJsZW4gKGludCBpKQoreworICBjaGFyICpwID0gKGNoYXIqKW1hbGxvYyAoOCk7CisgIHNp bmsgKHApOworICByZXR1cm4gc3RybGVuIChwKTsKK30KKworc2l6ZV90IHdhcm5fbWFsbG9jX3N0 cmxlbiAodm9pZCkKK3sKKyAgY2hhciAqcCA9IChjaGFyKiltYWxsb2MgKDgpOworICByZXR1cm4g c3RybGVuIChwKTsgICAgICAgICAgLy8geyBkZy13YXJuaW5nICJcXFxbLVd1bmluaXRpYWxpemVk IiB9Cit9CisKKworc2l6ZV90IG5vd2Fybl9yZWFsbG9jX3N0cmxlbiAodm9pZCAqcCkKK3sKKyAg Y2hhciAqcSA9IChjaGFyKilyZWFsbG9jIChwLCA4KTsKKyAgcmV0dXJuIHN0cmxlbiAocSk7Cit9 CisKKworc2l6ZV90IG5vd2Fybl92bGFfYXNzaWduX3N0cmxlbiAoaW50IG4sIGludCBpKQorewor ICBjaGFyIHZsYVtuXTsKKyAgdmxhW2ldID0gJ1wwJzsKKyAgcmV0dXJuIHN0cmxlbiAodmxhKTsK K30KKworc2l6ZV90IG5vd2Fybl92bGFfc3RyY3B5X3N0cmxlbiAoaW50IG4sIGNvbnN0IGNoYXIg KnMsIGludCBpKQoreworICBjaGFyIHZsYVtuXTsKKyAgc3RyY3B5ICh2bGEsIHMpOworICByZXR1 cm4gc3RybGVuICh2bGEgKyBpKTsKK30KKworc2l6ZV90IG5vd2Fybl92bGFfZXNjYXBlX3N0cmxl biAoaW50IG4sIGludCBpKQoreworICBjaGFyIHZsYVtuXTsKKyAgc2luayAodmxhKTsKKyAgcmV0 dXJuIHN0cmxlbiAodmxhKTsKK30KKworc2l6ZV90IHdhcm5fdmxhX3N0cmxlbiAodW5zaWduZWQg bikKK3sKKyAgY2hhciB2bGFbbl07CisgIHJldHVybiBzdHJsZW4gKHZsYSk7ICAgICAgICAvLyB7 IGRnLXdhcm5pbmcgIlxcXFstV3VuaW5pdGlhbGl6ZWQiIH0KK30KZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMzcuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL2F1dG8taW5pdC11bmluaXQtMzcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLmRhM2M5ZGIxODQwYQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL2F1dG8taW5pdC11bmluaXQtMzcuYwpAQCAtMCwwICsxLDE1NCBAQAorLyogUFIgbWlk ZGxlLWVuZC8xMDEzOCAtIHdhcm4gZm9yIHVuaW5pdGlhbGl6ZWQgYXJyYXlzIHBhc3NlZCBhcyBj b25zdCBhcmd1bWVudHMKKyAgIFZlcmlmeSB0aGF0IC1XdW5pbml0aWFsaXplZCBhbmQgLVdtYXli ZS11bmluaXRpYWxpemVkIHRyaWdnZXIgKG9yIGRvbid0KQorICAgd2hlbiBwYXNzaW5nIHVuaW5p dGlhbGl6ZWQgdmFyaWFibGVzIGJ5IHJlZmVyZW5jZSB0byBmdW5jdGlvbnMgZGVjbGFyZWQKKyAg IHdpdGggb3Igd2l0aG91dCBhdHRyaWJ1dGUgYWNjZXNzIGFuZCB3aXRoIChvciB3aXRob3V0KSBj b25zdCBxdWFsaWZpZWQKKyAgIGFyZ3VtZW50cyBvZiBhcnJheSwgVkxBLCBvciBwb2ludGVyIHR5 cGVzLgorICAgeyBkZy1kbyBjb21waWxlIH0KKyAgIHsgZGctb3B0aW9ucyAiLU8yIC1XYWxsIC1m dHJhY2stbWFjcm8tZXhwYW5zaW9uPTAgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAq LworCisjZGVmaW5lIE5PTkUgICAgLyogbm9uZSAqLworI2RlZmluZSBSTyguLi4pIF9fYXR0cmli dXRlX18gKChhY2Nlc3MgKHJlYWRfb25seSwgX19WQV9BUkdTX18pKSkKKyNkZWZpbmUgUlcoLi4u KSBfX2F0dHJpYnV0ZV9fICgoYWNjZXNzIChyZWFkX3dyaXRlLCBfX1ZBX0FSR1NfXykpKQorI2Rl ZmluZSBXTyguLi4pIF9fYXR0cmlidXRlX18gKChhY2Nlc3MgKHdyaXRlX29ubHksIF9fVkFfQVJH U19fKSkpCisjZGVmaW5lIFgoLi4uKSAgX19hdHRyaWJ1dGVfXyAoKGFjY2VzcyAobm9uZSwgX19W QV9BUkdTX18pKSkKKworI2RlZmluZSBDT05DQVQoeCwgeSkgeCAjIyB5CisjZGVmaW5lIENBVCh4 LCB5KSAgICBDT05DQVQgKHgsIHkpCisjZGVmaW5lIFVOSVEocGZ4KSAgICBDQVQgKHBmeCwgX19M SU5FX18pCisKK2V4dGVybiB2b2lkIHNpbmsgKHZvaWQqKTsKKworCisjZGVmaW5lIFQxKGF0dHIs IG5hbWUsIHR5cGUpCQkJXAorICB2b2lkIFVOSVEgKENBVCAodGVzdF8sIG5hbWUpKSh2b2lkKSB7 CQlcCisgICAgZXh0ZXJuIGF0dHIgdm9pZCBVTklRIChuYW1lKSh0eXBlKTsJCVwKKyAgICBpbnQg eDsJCQkJCVwKKyAgICBVTklRIChuYW1lKSgmeCk7CQkJCVwKKyAgICBzaW5rICgmeCk7CQkJCQlc CisgIH0KKworI2RlZmluZSBUMihhdHRyLCBuYW1lLCB0eXBlcykJCQlcCisgIHZvaWQgVU5JUSAo Q0FUICh0ZXN0XywgbmFtZSkpKHZvaWQpIHsJCVwKKyAgICBleHRlcm4gYXR0ciB2b2lkIFVOSVEg KG5hbWUpKHR5cGVzKTsJXAorICAgIGludCB4OwkJCQkJXAorICAgIFVOSVEgKG5hbWUpKDEsICZ4 KTsJCQkJXAorICAgIHNpbmsgKCZ4KTsJCQkJCVwKKyAgfQorCisKK3R5cGVkZWYgaW50IElBX1td OwordHlwZWRlZiBjb25zdCBpbnQgQ0lBX1tdOworCitUMSAoTk9ORSwgICBmaWFfLCAgIElBXyk7 CitUMSAoTk9ORSwgICBmY2lhXywgIENJQV8pOyAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV21h eWJlLXVuaW5pdGlhbGl6ZWQiIH0KK1QxIChSTyAoMSksIGZyb2lhXywgSUFfKTsgICAgIC8vIHsg ZGctd2FybmluZyAiXFxcWy1XdW5pbml0aWFsaXplZCIgfQorVDEgKFJXICgxKSwgZnJ3aWFfLCBJ QV8pOyAgICAgLy8geyBkZy13YXJuaW5nICJcXFxbLVdtYXliZS11bmluaXRpYWxpemVkIiB9CitU MSAoV08gKDEpLCBmd29pYV8sIElBXyk7CitUMSAoWCAoMSksICBmeGlhXywgIElBXyk7CisKKwor dHlwZWRlZiBpbnQgSUExWzFdOwordHlwZWRlZiBjb25zdCBpbnQgQ0lBMVsxXTsKKworVDEgKE5P TkUsICAgZmlhMSwgICBJQTEpOworVDEgKE5PTkUsICAgZmNpYTEsICBDSUExKTsgICAgLy8geyBk Zy13YXJuaW5nICJcXFxbLVdtYXliZS11bmluaXRpYWxpemVkIiB9CitUMSAoUk8gKDEpLCBmcm9p YTEsIElBMSk7ICAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV3VuaW5pdGlhbGl6ZWQiIH0KK1Qx IChSVyAoMSksIGZyd2lhMSwgSUExKTsgICAgIC8vIHsgZGctd2FybmluZyAiXFxcWy1XbWF5YmUt dW5pbml0aWFsaXplZCIgfQorVDEgKFdPICgxKSwgZndvaWExLCBJQTEpOworVDEgKFggKDEpLCAg ZnhpYTEsICBJQTEpOworCisKKyNkZWZpbmUgSUFSUzEgIGludFtyZXN0cmljdCBzdGF0aWMgMV0K KyNkZWZpbmUgQ0lBUlMxIGNvbnN0IGludFtyZXN0cmljdCBzdGF0aWMgMV0KKworVDEgKE5PTkUs ICAgZmlhcnMxLCAgIElBUlMxKTsKK1QxIChOT05FLCAgIGZjaWFyczEsICBDSUFSUzEpOy8vIHsg ZGctd2FybmluZyAiXFxcWy1XbWF5YmUtdW5pbml0aWFsaXplZCIgfQorVDEgKFJPICgxKSwgZnJv aWFyczEsIElBUlMxKTsgLy8geyBkZy13YXJuaW5nICJcXFxbLVd1bmluaXRpYWxpemVkIiB9CitU MSAoUlcgKDEpLCBmcndpYXJzMSwgSUFSUzEpOyAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV21heWJl LXVuaW5pdGlhbGl6ZWQiIH0KK1QxIChXTyAoMSksIGZ3b2lhcnMxLCBJQVJTMSk7CitUMSAoWCAo MSksICBmeGlhcnMxLCAgSUFSUzEpOworCisKKyNkZWZpbmUgSUFTMSAgaW50W3N0YXRpYyAxXQor I2RlZmluZSBDSUFTMSBjb25zdCBpbnRbc3RhdGljIDFdCisKK1QxIChOT05FLCAgIGZpYXMxLCAg IElBUzEpOworVDEgKE5PTkUsICAgZmNpYXMxLCAgQ0lBUzEpOyAgIC8vIHsgZGctd2FybmluZyAi XFxcWy1XbWF5YmUtdW5pbml0aWFsaXplZCIgfQorVDEgKFJPICgxKSwgZnJvaWFzMSwgSUFTMSk7 ICAgIC8vIHsgZGctd2FybmluZyAiXFxcWy1XdW5pbml0aWFsaXplZCIgfQorVDEgKFJXICgxKSwg ZnJ3aWFzMSwgSUFTMSk7ICAgIC8vIHsgZGctd2FybmluZyAiXFxcWy1XbWF5YmUtdW5pbml0aWFs aXplZCIgfQorVDEgKFdPICgxKSwgZndvaWFzMSwgSUFTMSk7CitUMSAoWCAoMSksICBmeGlhczEs ICBJQVMxKTsKKworCisjZGVmaW5lIElBWCAgaW50WypdCisjZGVmaW5lIENJQVggY29uc3QgaW50 WypdCisKK1QxIChOT05FLCAgIGZpYXgsICAgSUFYKTsKK1QxIChOT05FLCAgIGZjaWF4LCAgQ0lB WCk7ICAgIC8vIHsgZGctd2FybmluZyAiXFxcWy1XbWF5YmUtdW5pbml0aWFsaXplZCIgfQorVDEg KFJPICgxKSwgZnJvaWF4LCBJQVgpOyAgICAgLy8geyBkZy13YXJuaW5nICJcXFxbLVd1bmluaXRp YWxpemVkIiB9CitUMSAoUlcgKDEpLCBmcndpYXgsIElBWCk7ICAgICAvLyB7IGRnLXdhcm5pbmcg IlxcXFstV21heWJlLXVuaW5pdGlhbGl6ZWQiIH0KK1QxIChXTyAoMSksIGZ3b2lheCwgSUFYKTsK K1QxIChYICgxKSwgIGZ4aWF4LCAgSUFYKTsKKworCisjZGVmaW5lIElBTiAgaW50IG4sIGludFtu XQorI2RlZmluZSBDSUFOIGludCBuLCBjb25zdCBpbnRbbl0KKworVDIgKE5PTkUsICAgICAgZmlh biwgICBJQU4pOworVDIgKE5PTkUsICAgICAgZmNpYW4sICBDSUFOKTsgLy8geyBkZy13YXJuaW5n ICJcXFxbLVdtYXliZS11bmluaXRpYWxpemVkIiB9CitUMiAoUk8gKDIsIDEpLCBmcm9pYW4sIElB Tik7ICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV3VuaW5pdGlhbGl6ZWQiIH0KK1QyIChSVyAoMiwg MSksIGZyd2lhbiwgSUFOKTsgIC8vIHsgZGctd2FybmluZyAiXFxcWy1XbWF5YmUtdW5pbml0aWFs aXplZCIgfQorVDIgKFdPICgyLCAxKSwgZndvaWFuLCBJQU4pOworVDIgKFggKDIsIDEpLCAgZnhp YW4sICBJQU4pOworCisKK3R5cGVkZWYgaW50KiBJUDsKK3R5cGVkZWYgY29uc3QgaW50KiBDSVA7 CisKK1QxIChOT05FLCAgIGZpcCwgICBJUCk7CitUMSAoTk9ORSwgICBmY2lwLCAgQ0lQKTsgICAg IC8vIHsgZGctd2FybmluZyAiXFxcWy1XbWF5YmUtdW5pbml0aWFsaXplZCIgfQorVDEgKFJPICgx KSwgZnJvaXAsIElQKTsgICAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV3VuaW5pdGlhbGl6ZWQi IH0KK1QxIChSVyAoMSksIGZyd2lwLCBJUCk7ICAgICAgLy8geyBkZy13YXJuaW5nICJcXFxbLVdt YXliZS11bmluaXRpYWxpemVkIiB9CitUMSAoV08gKDEpLCBmd29pcCwgSVApOworVDEgKFggKDEp LCAgZnhpcCwgIElQKTsKKworCisvKiBWZXJpZnkgdGhhdCB0aGUgbm90ZXMgcHJpbnRlZCBhZnRl ciB0aGUgd2FybmluZyBtZW50aW9uIGF0dHJpYnV0ZQorICAgYWNjZXNzIG9ubHkgd2hlbiB0aGUg YXR0cmlidXRlIGlzIGV4cGxpY2l0bHkgdXNlZCBpbiB0aGUgZGVjbGFyYXRpb24KKyAgIGFuZCBu b3Qgb3RoZXJ3aXNlLiAgKi8KKwordm9pZCB0ZXN0X25vdGVfY3N0X3Jlc3RyaWN0ICh2b2lkKQor eworICBleHRlcm4gdm9pZAorICAgIGZjY2FyIChjb25zdCBjaGFyW3Jlc3RyaWN0XSk7ICAgLy8g eyBkZy1tZXNzYWdlICJieSBhcmd1bWVudCAxIG9mIHR5cGUgJ2NvbnN0IGNoYXJcXFxbcmVzdHJp Y3RdJyB0byAnZmNjYXInIiAibm90ZSIgfQorCisgIGNoYXIgYVsxXTsgICAgICAgICAgICAgICAg ICAvLyB7IGRnLW1lc3NhZ2UgIidhJyBkZWNsYXJlZCBoZXJlIiAibm90ZSIgfQorICBmY2NhciAo YSk7ICAgICAgICAgICAgICAgICAgLy8geyBkZy13YXJuaW5nICInYScgbWF5IGJlIHVzZWQgdW5p bml0aWFsaXplZCIgfQorfQorCit2b2lkIHRlc3Rfbm90ZV92bGEgKGludCBuKQoreworICBleHRl cm4gdm9pZAorICAgIGZjY3ZsYSAoY29uc3QgY2hhcltuXSk7ICAgLy8geyBkZy1tZXNzYWdlICJi eSBhcmd1bWVudCAxIG9mIHR5cGUgJ2NvbnN0IGNoYXJcXFxbbl0nIHRvICdmY2N2bGEnIiAibm90 ZSIgfQorCisgIGNoYXIgYVsyXTsgICAgICAgICAgICAgICAgICAvLyB7IGRnLW1lc3NhZ2UgIidh JyBkZWNsYXJlZCBoZXJlIiAibm90ZSIgfQorICBmY2N2bGEgKGEpOyAgICAgICAgICAgICAgICAg Ly8geyBkZy13YXJuaW5nICInYScgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCIgfQorfQorCit2 b2lkIHRlc3Rfbm90ZV9ybyAodm9pZCkKK3sKKyAgZXh0ZXJuIFJPICgxKSB2b2lkCisgICAgZnJv Y2FyIChjaGFyW3Jlc3RyaWN0XSk7ICAvLyB7IGRnLW1lc3NhZ2UgImluIGEgY2FsbCB0byAnZnJv Y2FyJyBkZWNsYXJlZCB3aXRoIGF0dHJpYnV0ZSAnYWNjZXNzIFxcXChyZWFkX29ubHksIDFcXFwp JyIgIm5vdGUiIH0KKworICBjaGFyIGFbM107ICAgICAgICAgICAgICAgICAgLy8geyBkZy1tZXNz YWdlICInYScgZGVjbGFyZWQgaGVyZSIgIm5vdGUiIH0KKyAgZnJvY2FyIChhKTsgICAgICAgICAg ICAgICAgIC8vIHsgZGctd2FybmluZyAiJ2EnIGlzIHVzZWQgdW5pbml0aWFsaXplZCIgfQorfQor Cit2b2lkIHRlc3Rfbm90ZV9ydyAodm9pZCkKK3sKKyAgZXh0ZXJuIFJXICgxKSB2b2lkCisgICAg ZnJ3Y2FyIChjaGFyW3Jlc3RyaWN0XSk7ICAvLyB7IGRnLW1lc3NhZ2UgImluIGEgY2FsbCB0byAn ZnJ3Y2FyJyBkZWNsYXJlZCB3aXRoIGF0dHJpYnV0ZSAnYWNjZXNzIFxcXChyZWFkX3dyaXRlLCAx XFxcKSciICJub3RlIiB9CisKKyAgY2hhciBhWzRdOyAgICAgICAgICAgICAgICAgIC8vIHsgZGct bWVzc2FnZSAiJ2EnIGRlY2xhcmVkIGhlcmUiICJub3RlIiB9CisgIGZyd2NhciAoYSk7ICAgICAg ICAgICAgICAgICAvLyB7IGRnLXdhcm5pbmcgIidhJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVk IiB9Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0 LTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtNC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDgyYzgzN2NhY2IyCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC00LmMKQEAgLTAs MCArMSw1MiBAQAorLyogU3B1cmlvdXMgdW5pbml0IHZhcmlhYmxlIHdhcm5pbmdzLCBjYXNlIDQu CisgICBTaW1wbGlmaWVkIHZlcnNpb24gb2YgY3BwZXhwLmMgKGNwcF9wYXJzZV9leHByKS4KKwor ICAgVGhpcyBvbmUgaXMgcmVhbGx5IGZyYWdpbGUsIGl0IGdldHMgaXQgcmlnaHQgaWYgeW91IHRh a2Ugb3V0IGNhc2UKKyAgIDEsIG9yIGlmIHRoZSBzdHJ1Y3R1cmUgaXMgcmVwbGFjZWQgYnkgYW4g aW50LCBvciBpZiB0aGUgc3RydWN0dXJlCisgICBoYXMgZmV3ZXIgbWVtYmVycyAoISkgKi8KKwor LyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLVd1bmluaXRpYWxp emVkIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworZXh0ZXJuIHZvaWQgYWJv cnQgKHZvaWQpOworCitzdHJ1Y3Qgb3BlcmF0aW9uIHsKKyAgICBzaG9ydCBvcDsKKyAgICBjaGFy IHJwcmlvOworICAgIGNoYXIgZmxhZ3M7CisgICAgY2hhciB1bnNpZ25lZHA7CisgICAgbG9uZyB2 YWx1ZTsKK307CisKK2V4dGVybiBzdHJ1Y3Qgb3BlcmF0aW9uIGNwcF9sZXggKHZvaWQpOworCit2 b2lkCitjcHBfcGFyc2VfZXhwciAodm9pZCkKK3sKKyAgaW50IHJwcmlvOyAvKiB7IGRnLWJvZ3Vz ICJycHJpbyIgInVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZyBQUjE5ODMzIiB9ICovCisg IHN0cnVjdCBvcGVyYXRpb24gb3A7CisKKyAgZm9yICg7OykKKyAgICB7CisgICAgICBvcCA9IGNw cF9sZXggKCk7CisKKyAgICAgIHN3aXRjaCAob3Aub3ApCisJeworCWNhc2UgMDoKKwkgIGJyZWFr OworCWNhc2UgMToKKwkgIHJldHVybjsKKwljYXNlIDI6CisJICBycHJpbyA9IDE7CisJICBicmVh azsKKwlkZWZhdWx0OgorCSAgcmV0dXJuOworCX0KKworICAgICAgaWYgKG9wLm9wID09IDApCisJ cmV0dXJuOworCisgICAgICBpZiAocnByaW8gIT0gMSkKKwlhYm9ydCgpOworICAgIH0KK30KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtNS5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC01LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hZGE4MWM5MTJiZGQKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTUuYwpAQCAtMCwwICsxLDM5IEBA CisvKiBTcHVyaW91cyB1bmluaXRpYWxpemVkLXZhcmlhYmxlIHdhcm5pbmdzLiAgKi8KKy8qIERp c2FibGUganVtcCB0aHJlYWRpbmcsIGV0YyB0byB0ZXN0IGNvbXBpbGVyIGFuYWx5c2lzLiAgKi8K Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1XdW5pbml0aWFs aXplZCAtZm5vLXRyZWUtZGNlIC1mbm8tdHJlZS12cnAgLWZuby10cmVlLWRvbWluYXRvci1vcHRz IC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworZXh0ZXJuIHZvaWQgdXNlKGlu dCk7CitleHRlcm4gdm9pZCBmb28odm9pZCk7CisKK3ZvaWQKK2Z1bmMxKGludCBjb25kKQorewor ICAgIGludCB4OyAgLyogeyBkZy1ib2d1cyAieCIgInVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2Fy bmluZyIgfSAqLworCisgICAgaWYoY29uZCkKKwl4ID0gMTsKKworICAgIGZvbygpOworCisgICAg aWYoY29uZCkKKwl1c2UoeCk7Cit9CisKK3ZvaWQKK2Z1bmMyIChpbnQgY29uZCkKK3sKKyAgICBp bnQgeDsgIC8qIHsgZGctYm9ndXMgIngiICJ1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmci IH0gKi8KKyAgICBpbnQgZmxhZyA9IDA7CisKKyAgICBpZihjb25kKQorICAgIHsKKwl4ID0gMTsK KwlmbGFnID0gMTsKKyAgICB9CisKKyAgICBmb28oKTsKKworICAgIGlmKGZsYWcpCisJdXNlKHgp OworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC02 LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTYuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU2Y2JhNGVmMjJjMAotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtNi5jCkBAIC0wLDAg KzEsNDcgQEAKKy8qIFNwdXJpb3VzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZ3MuCisg ICBUaGlzIG9uZSBpbnNwaXJlZCBieSBqYXZhL2NsYXNzLmM6YnVpbGRfdXRmOF9yZWYuICAqLwor CisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtV3VuaW5pdGlh bGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCisjaW5jbHVkZSA8c3Rk ZGVmLmg+CisKK3N0cnVjdCB0cmVlCit7CisgICAgc3RydWN0IHRyZWUgKmNhcjsKKyAgICBzdHJ1 Y3QgdHJlZSAqY2RyOworICAgIGludCB0eXBlLCBkYXRhOworfTsKKworZXh0ZXJuIHZvaWQgKm1h bGxvYyhzaXplX3QpOworCisjZGVmaW5lIElOVEVHRVJfVCAxCisjZGVmaW5lIFBUUl9UCSAgMgor CisjZGVmaW5lIEFQUEVORChUUkVFLCBMQVNULCBUWVBFLCBWQUxVRSkJCQkJXAorZG8gewkJCQkJ CQkJXAorICAgICBzdHJ1Y3QgdHJlZSAqdG1wID0gbWFsbG9jIChzaXplb2YgKHN0cnVjdCB0cmVl KSk7CQlcCisgICAgIHRtcC0+Y2FyID0gMDsgdG1wLT5jZHIgPSAwOyB0bXAtPnR5cGUgPSBUWVBF OwkJXAorICAgICB0bXAtPmRhdGEgPSBWQUxVRTsJCQkJCQlcCisgICAgIGlmIChUUkVFLT5jYXIp CQkJCQkJXAorCSBMQVNULT5jZHIgPSB0bXA7CQkJCQlcCisgICAgIGVsc2UJCQkJCQkJXAorCSBU UkVFLT5jYXIgPSB0bXA7CQkJCQlcCisgICAgIExBU1QgPSB0bXA7CQkJCQkJXAorfSB3aGlsZSgw KQorIAorc3RydWN0IHRyZWUgKgorbWFrZV9zb21ldGhpbmcoaW50IGEsIGludCBiLCBpbnQgYykK K3sKKyAgICBzdHJ1Y3QgdHJlZSAqcnY7CisgICAgc3RydWN0IHRyZWUgKmZpZWxkOworCisgICAg cnYgPSBtYWxsb2MgKHNpemVvZiAoc3RydWN0IHRyZWUpKTsKKyAgICBydi0+Y2FyID0gMDsKKwor ICAgIEFQUEVORChydiwgZmllbGQsIElOVEVHRVJfVCwgYSk7ICAvKiB7IGRnLWJvZ3VzICJmaWVs ZCIgInVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZyIgfSAqLworICAgIEFQUEVORChydiwg ZmllbGQsIFBUUl9ULCBiKTsKKyAgICBBUFBFTkQocnYsIGZpZWxkLCBJTlRFR0VSX1QsIGMpOwor CisgICAgcmV0dXJuIHJ2OworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0 by1pbml0LXVuaW5pdC04LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0 LTguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjZjMjk4ODcwYzY3 OQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmlu aXQtOC5jCkBAIC0wLDAgKzEsMzIgQEAKKy8qIFVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2Fybmlu ZyB0ZXN0cy4uLgorICAgSW5zcGlyZWQgYnkgcGFydCBvZiBvcHRhYnMuYzpleHBhbmRfYmlub3Au CisgICBNYXkgYmUgdGhlIHNhbWUgYXMgdW5pbml0LTEuYy4gICovCisKKy8qIHsgZGctZG8gY29t cGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1XdW5pbml0aWFsaXplZCAtZnRyaXZpYWwt YXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKwordm9pZAor YWRkX2JpZ251bXMgKGludCAqb3V0LCBpbnQgKngsIGludCAqeSkKK3sKKyAgICBpbnQgcCwgc3Vt OworICAgIGludCBjYXJyeTsgLyogeyBkZy1ib2d1cyAiY2FycnkiICJ1bmluaXRpYWxpemVkIHZh cmlhYmxlIHdhcm5pbmciIH0gKi8KKworICAgIHAgPSAwOworICAgIGZvciAoOyAqeDsgeCsrLCB5 KyssIG91dCsrLCBwKyspCisgICAgeworCWlmIChwKQorCSAgICBzdW0gPSAqeCArICp5ICsgY2Fy cnk7CisJZWxzZQorCSAgICBzdW0gPSAqeCArICp5OworCisJaWYgKHN1bSA8IDApCisJeworCSAg ICBjYXJyeSA9IDE7CisJICAgIHN1bSAtPSBJTlRfTUFYOworCX0KKwllbHNlCisJICAgIGNhcnJ5 ID0gMDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWlu aXQtdW5pbml0LTkuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtOS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWQ2NTQ5M2JkZTJhCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC05 LmMKQEAgLTAsMCArMSw0MiBAQAorLyogU3B1cmlvdXMgdW5pbml0aWFsaXplZCB2YXJpYWJsZSB3 YXJuaW5ncy4gIFNsaWdodCB2YXJpYW50IG9uIHRoZQorICAgZG9jdW1lbnRlZCBjYXNlLCBpbnNw aXJlZCBieSByZWctc3RhY2suYzpyZWNvcmRfYXNtX3JlZ19saWZlLiAgKi8KKworLyogeyBkZy1k byBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLVd1bmluaXRpYWxpemVkIC1mdHJp dmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUt dGFyZ2V0IGFsbG9jYSB9ICovCisKK3N0cnVjdCBmb28KK3sKKyAgICBpbnQgdHlwZTsKKyAgICBz dHJ1Y3QgZm9vICpjYXI7CisgICAgc3RydWN0IGZvbyAqY2RyOworICAgIGNoYXIgKmRhdGE7Cisg ICAgaW50IGRhdGEyOworfTsKKworZXh0ZXJuIHZvaWQgdXNlKHN0cnVjdCBmb28gKik7CisKKyNk ZWZpbmUgQ0xPQkJFUiA2CisjZGVmaW5lIFBBUkFMTEVMIDMKKwordm9pZAorZnVuYyhzdHJ1Y3Qg Zm9vICpsaXN0LCBpbnQgY291bnQpCit7CisgICAgaW50IG5fY2xvYmJlcnMgPSAwOworICAgIGlu dCBpOworICAgIHN0cnVjdCBmb28gKipjbG9iX2xpc3Q7ICAgLyogeyBkZy1ib2d1cyAiY2xvYl9s aXN0IiAidW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5nIiB9ICovCisKKyAgICBpZihsaXN0 WzBdLnR5cGUgPT0gUEFSQUxMRUwpCisgICAgeworCWNsb2JfbGlzdCA9IF9fYnVpbHRpbl9hbGxv Y2EoY291bnQgKiBzaXplb2Yoc3RydWN0IGZvbyAqKSk7CisJCisJZm9yKGkgPSAxOyBpIDwgY291 bnQ7IGkrKykKKwl7CisJICAgIGlmKGxpc3RbaV0udHlwZSA9PSBDTE9CQkVSKQorCQljbG9iX2xp c3Rbbl9jbG9iYmVycysrXSA9ICZsaXN0W2ldOworCX0KKyAgICB9CisKKyAgICBmb3IoaSA9IDA7 IGkgPCBuX2Nsb2JiZXJzOyBpKyspCisJdXNlKGNsb2JfbGlzdFtpXSk7Cit9CmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LUEuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtQS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uMDFmY2Y1OWY0NTA0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1BLmMKQEAgLTAsMCArMSwxMTcgQEAKKy8qIElu c3BpcmVkIGJ5IHBhcnQgb2YgamF2YS9wYXJzZS55LgorICAgTWF5IGJlIGEgcmVhbCBidWcgaW4g Q1NFLiAqLworCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIg LVdhbGwgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCitzdHJ1Y3QgdHJlZQor eworICAgIHN0cnVjdCB0cmVlICpjYXIsICpjZHIsICp3Zmw7CisgICAgaW50IGNvZGU7CisgICAg c3RydWN0IHsgdW5zaWduZWQgaW50IHJlbnA6MTsKKyAgICAgIHVuc2lnbmVkIGludCBydG5wOjE7 CisgICAgICB1bnNpZ25lZCBpbnQgcnBucDoxOyB9IGZsYWdzOworfTsKK3R5cGVkZWYgc3RydWN0 IHRyZWUgKnRyZWU7CisjZGVmaW5lIE5VTExfVFJFRSAoKHRyZWUpMCkKKworLyogQ29kZXMgKi8K K2VudW0KK3sKKyAgICBDQUxMX0VYUFIsIE5FV19BUlJBWV9FWFBSLCBORVdfQ0xBU1NfRVhQUiwg Q09OVkVSVF9FWFBSLAorICAgIEFSUkFZX1JFRiwgQ09ORElUSU9OQUxfRVhQUiwgU1RSSU5HX0NT VCwgRVhQUl9XSVRIX0ZJTEVfTE9DQVRJT04KK307CisKKy8qIEZsYWdzICovCisjZGVmaW5lIFJF U09MVkVfRVhQUkVTU0lPTl9OQU1FX1AodCkgKCh0KS0+ZmxhZ3MucmVucCkKKyNkZWZpbmUgUkVT T0xWRV9UWVBFX05BTUVfUCh0KSAoKHQpLT5mbGFncy5ydG5wKQorI2RlZmluZSBSRVNPTFZFX1BB Q0tBR0VfTkFNRV9QKHQpICgodCktPmZsYWdzLnJwbnApCisKKy8qIE1hY3JvcyAqLworI2RlZmlu ZSBFWFBSX1dGTF9RVUFMSUZJQ0FUSU9OKHQpICgodCktPndmbCkKKyNkZWZpbmUgUVVBTF9XRkwo dCkgKCh0KS0+d2ZsKQorI2RlZmluZSBFWFBSX1dGTF9OT0RFKHQpICgodCktPndmbCkKKyNkZWZp bmUgVFJFRV9DT0RFKHQpICgodCktPmNvZGUpCisjZGVmaW5lIFRSRUVfT1BFUkFORCh0LHgpICgo dCktPmNhcikKKyNkZWZpbmUgQ0xBU1NUWVBFX1NVUEVSKHQpICgodCktPmNhcikKKyNkZWZpbmUg SURFTlRJRklFUl9MT0NBTF9WQUxVRSh0KSAoKHQpLT5jYXIpCisjZGVmaW5lIFRSRUVfQ0hBSU4o dCkgKCh0KS0+Y2RyKQorI2RlZmluZSBRVUFMX1JFU09MVVRJT04odCkgKCh0KS0+Y2RyKQorCitl eHRlcm4gdHJlZSBjdXJyZW50X2NsYXNzLCB0aGlzX2lkZW50aWZpZXJfbm9kZTsKK2V4dGVybiB0 cmVlIHN1cGVyX2lkZW50aWZpZXJfbm9kZSwgbGVuZ3RoX2lkZW50aWZpZXJfbm9kZTsKKwordHJl ZSByZXNvbHZlX2FuZF9sYXlvdXQgKHRyZWUsIHRyZWUpOwordHJlZSBsb29rdXBfZmllbGRfd3Jh cHBlciAodHJlZSwgdHJlZSk7CisKK3ZvaWQKK3F1YWxpZnlfYW1iaWd1b3VzX25hbWUgKGlkKQor ICAgICB0cmVlIGlkOworeworICB0cmVlIHF1YWwsIHF1YWxfd2ZsLCBkZWNsOworICB0cmVlIG5h bWU7CSAvKiB7IGRnLWJvZ3VzICJuYW1lIiAidW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5n IiB9ICovCisgIHRyZWUgcHRyX3R5cGU7IC8qIHsgZGctYm9ndXMgInB0cl90eXBlIiAidW5pbml0 aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5nIiB9ICovCisgIGludCBhZ2FpbiwgbmV3X2FycmF5X2Zv dW5kID0gMDsKKyAgaW50IHN1cGVyX2ZvdW5kID0gMCwgdGhpc19mb3VuZCA9IDA7CisKKyAgcXVh bCA9IEVYUFJfV0ZMX1FVQUxJRklDQVRJT04gKGlkKTsKKyAgZG8geworICAgIHF1YWxfd2ZsID0g UVVBTF9XRkwgKHF1YWwpOworICAgIHN3aXRjaCAoVFJFRV9DT0RFIChxdWFsX3dmbCkpCisgICAg ICB7CisgICAgICBjYXNlIENBTExfRVhQUjoKKwlxdWFsX3dmbCA9IFRSRUVfT1BFUkFORCAocXVh bF93ZmwsIDApOworCWlmIChUUkVFX0NPREUgKHF1YWxfd2ZsKSAhPSBFWFBSX1dJVEhfRklMRV9M T0NBVElPTikKKwkgIHsKKwkgICAgcXVhbCA9IEVYUFJfV0ZMX1FVQUxJRklDQVRJT04gKHF1YWxf d2ZsKTsKKwkgICAgcXVhbF93ZmwgPSBRVUFMX1dGTCAocXVhbCk7CisJICB9CisJYnJlYWs7Cisg ICAgICBjYXNlIE5FV19BUlJBWV9FWFBSOgorCXF1YWwgPSBUUkVFX0NIQUlOIChxdWFsKTsKKwlu ZXdfYXJyYXlfZm91bmQgPSBhZ2FpbiA9IDE7CisJY29udGludWU7CisgICAgICBjYXNlIE5FV19D TEFTU19FWFBSOgorICAgICAgY2FzZSBDT05WRVJUX0VYUFI6CisJcXVhbF93ZmwgPSBUUkVFX09Q RVJBTkQgKHF1YWxfd2ZsLCAwKTsKKwlicmVhazsKKyAgICAgIGNhc2UgQVJSQVlfUkVGOgorCXdo aWxlIChUUkVFX0NPREUgKHF1YWxfd2ZsKSA9PSBBUlJBWV9SRUYpCisJICBxdWFsX3dmbCA9IFRS RUVfT1BFUkFORCAocXVhbF93ZmwsIDApOworCWJyZWFrOworICAgICAgZGVmYXVsdDoKKwlicmVh azsKKyAgICAgIH0KKworICAgIG5hbWUgPSBFWFBSX1dGTF9OT0RFIChxdWFsX3dmbCk7CisgICAg cHRyX3R5cGUgPSBjdXJyZW50X2NsYXNzOworICAgIGFnYWluID0gMDsKKworICB9IHdoaWxlIChh Z2Fpbik7CisKKyAgLyogSWYgeW91IHB1dCBzdHJhaWdodGZvcndhcmQgdXNlcyBvZiBuYW1lIGFu ZCBwdHJfdHlwZSBoZXJlCisgICAgIGluc3RlYWQgb2YgdGhlIGlmLWVsc2Ugc2VxdWVuY2UgYmVs b3csIHRoZSB3YXJuaW5ncyBnbyBhd2F5LgorICAgICBUaGVyZWZvcmUgSSBzdXNwZWN0IGEgcmVh bCBidWcuICovCisgIAorICBpZiAoIXRoaXNfZm91bmQgJiYgIXN1cGVyX2ZvdW5kICYmIChkZWNs ID0gSURFTlRJRklFUl9MT0NBTF9WQUxVRSAobmFtZSkpKQorICAgIHsKKyAgICAgIFJFU09MVkVf RVhQUkVTU0lPTl9OQU1FX1AgKHF1YWxfd2ZsKSA9IDE7CisgICAgICBRVUFMX1JFU09MVVRJT04g KHF1YWwpID0gZGVjbDsKKyAgICB9CisgIGVsc2UgaWYgKChkZWNsID0gbG9va3VwX2ZpZWxkX3dy YXBwZXIgKHB0cl90eXBlLCBuYW1lKSkKKwkgICB8fCAobmV3X2FycmF5X2ZvdW5kICYmIG5hbWUg PT0gbGVuZ3RoX2lkZW50aWZpZXJfbm9kZSkpCisgICAgeworICAgICAgUkVTT0xWRV9FWFBSRVNT SU9OX05BTUVfUCAocXVhbF93ZmwpID0gMTsKKyAgICAgIFFVQUxfUkVTT0xVVElPTiAocXVhbCkg PSAobmV3X2FycmF5X2ZvdW5kID8gTlVMTF9UUkVFIDogZGVjbCk7CisgICAgfQorICBlbHNlIGlm ICgoZGVjbCA9IHJlc29sdmVfYW5kX2xheW91dCAobmFtZSwgTlVMTF9UUkVFKSkpCisgICAgewor ICAgICAgUkVTT0xWRV9UWVBFX05BTUVfUCAocXVhbF93ZmwpID0gMTsKKyAgICAgIFFVQUxfUkVT T0xVVElPTiAocXVhbCkgPSBkZWNsOworICAgIH0KKyAgZWxzZSBpZiAoVFJFRV9DT0RFIChRVUFM X1dGTCAocXVhbCkpID09IENBTExfRVhQUgorCSAgIHx8IFRSRUVfQ09ERSAoUVVBTF9XRkwgKHF1 YWwpKSA9PSBBUlJBWV9SRUYpCisgICAgUkVTT0xWRV9FWFBSRVNTSU9OX05BTUVfUCAocXVhbF93 ZmwpID0gMTsKKyAgZWxzZSAKKyAgICBSRVNPTFZFX1BBQ0tBR0VfTkFNRV9QIChxdWFsX3dmbCkg PSAxOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5p dC1CLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LUIuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBiMjgzNzEyNzIwOQotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtQi5jCkBAIC0w LDAgKzEsMTUgQEAKKy8qIE9yaWdpbjogUFIgYy8xNzkgZnJvbSBHcmF5IFdhdHNvbiA8Z3JheUAy NTYuY29tPiwgYWRhcHRlZCBhcyBhIHRlc3RjYXNlCisgICBieSBKb3NlcGggTXllcnMgPGpzbTI4 QGNhbS5hYy51az4uICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLU8yIC1XdW5pbml0aWFsaXplZCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICov CitleHRlcm4gdm9pZCBmb28gKGludCAqKTsKK2V4dGVybiB2b2lkIGJhciAoaW50KTsKKwordm9p ZAorYmF6ICh2b2lkKQoreworICBpbnQgaTsKKyAgaWYgKGkpIC8qIHsgZGctd2FybmluZyAiaXMg dXNlZCB1bmluaXRpYWxpemVkIiAidW5pbml0IGkgd2FybmluZyIgfSAqLworICAgIGJhciAoaSk7 CisgIGZvbyAoJmkpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1p bml0LXVuaW5pdC1DLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LUMu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE0YWE2MjliZjkzMAot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQt Qy5jCkBAIC0wLDAgKzEsMjEgQEAKKy8qIFNwdXJpb3VzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUg d2FybmluZywgaW5zcGlyZWQgYnkgbGliZ2NjMi5jLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1XdW5pbml0aWFsaXplZCAtZnRyaXZpYWwtYXV0by12 YXItaW5pdD16ZXJvIiB9ICovCisKKy8qIE5vdCBhbGwgcGxhdGZvcm1zIHN1cHBvcnQgVEltb2Rl IGludGVnZXJzLiAgKi8KKyNpZiBkZWZpbmVkKF9fTFA2NF9fKSAmJiAhZGVmaW5lZChfX2hwcGFf XykKK3R5cGVkZWYgaW50IFRJdHlwZSBfX2F0dHJpYnV0ZV9fICgobW9kZSAoVEkpKSk7CisjZWxz ZQordHlwZWRlZiBsb25nIFRJdHlwZTsKKyNlbmRpZgorCisKK1RJdHlwZQorX19zdWJ2ZGkzIChU SXR5cGUgYSwgVEl0eXBlIGIpCit7CisgIFRJdHlwZSB3OworICAKKyAgdyA9IGEgLSBiOworICAK KyAgcmV0dXJuIHc7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWlu aXQtdW5pbml0LUguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtSC5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzFlMmUyZDY4ZDdmCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1I LmMKQEAgLTAsMCArMSwzMyBAQAorLyogUFIgMTQyMDQgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1XYWxsIC1XZXJyb3IgLWZ0cml2aWFsLWF1dG8tdmFy LWluaXQ9emVybyIgfSAqLworCisjaWYgZGVmaW5lZCBfX2FscGhhX18KKyMgZGVmaW5lIEFTTSBf X2FzbV9fKCIkMzAiKQorI2VsaWYgZGVmaW5lZCBfX2kzODZfXworIyBkZWZpbmUgQVNNIF9fYXNt X18oImVzcCIpCisjZWxpZiBkZWZpbmVkIChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZCAoX19QUENf XykgfHwgZGVmaW5lZCAoX19wcGNfXykgfHwgZGVmaW5lZCAoX1BPV0VSKQorIyBkZWZpbmUgQVNN IF9fYXNtX18oInIxIikKKyNlbGlmIGRlZmluZWQgX19zMzkwX18KKyMgZGVmaW5lIEFTTSBfX2Fz bV9fKCJyMTUiKQorI2VsaWYgZGVmaW5lZCBfX21pcHMKKyMgZGVmaW5lIEFTTSBfX2FzbV9fKCIk c3AiKQorI2VsaWYgZGVmaW5lZCBfX3NwYXJjX18KKyMgZGVmaW5lIEFTTSBfX2FzbV9fKCJzcCIp CisjZWxpZiBkZWZpbmVkIF9faWE2NF9fCisjIGRlZmluZSBBU00gX19hc21fXygicjEyIikKKyNl bGlmIGRlZmluZWQgX19ocHBhX18KKyMgZGVmaW5lIEFTTSBfX2FzbV9fKCIlcjMwIikKKyNlbGlm IGRlZmluZWQgX194dGVuc2FfXworIyBkZWZpbmUgQVNNIF9fYXNtX18oInNwIikKKyNlbHNlCisv KiBUaGUgcmVnaXN0ZXIgbmFtZSBzaG91bGQgYmUgdGFyZ2V0LWRlcGVuZGVudCBzbyBmb3Igb3Ro ZXIgdGFyZ2V0cywKKyAgIHdlIGp1c3Qgc2lsZW5jZSB0aGUgdGVzdC4gICovCisjIGRlZmluZSBB U00gPSAwCisjZW5kaWYKKwordm9pZCAqbG9hZF9QQ0IgKHZvaWQpCit7CisgIHJlZ2lzdGVyIHZv aWQgKnNwIEFTTTsKKyAgcmV0dXJuIHNwOwkJCS8qIHsgZGctYm9ndXMgInVuaW5pdGlhbGl6ZWQi IH0gKi8KK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmlu aXQtSS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1JLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wOTY4MGZlOTc5MGQKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LUkuYwpAQCAt MCwwICsxLDggQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1P MiAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCitp bnQgc3lzX21zZ2N0bCAodm9pZCkKK3sKKyAgc3RydWN0IHsgaW50IG1vZGU7IH0gc2V0YnVmOwor ICByZXR1cm4gc2V0YnVmLm1vZGU7ICAvKiB7IGRnLXdhcm5pbmcgIidzZXRidWZcLm1vZGUnIGlz IHVzZWQiIH0gKi8KK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L2F1dG8taW5pdC0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRv LWluaXQtMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMGZhNDcw ODgwYmY1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvYXV0by1pbml0LTEuYwpAQCAtMCwwICsxLDMyIEBACisvKiBWZXJpZnkgemVybyBpbml0aWFs aXphdGlvbiBmb3IgaW50ZWdlciBhbmQgcG9pbnRlciB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMu ICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFs LWF1dG8tdmFyLWluaXQ9emVybyAtZmR1bXAtcnRsLWV4cGFuZCIgfSAqLworCisjaWZuZGVmIF9f Y3BsdXNwbHVzCisjIGRlZmluZSBib29sIF9Cb29sCisjZW5kaWYKKworZW51bSBFIHsKKyAgTjEg PSAwLAorICBOMiwKKyAgTjMKK307CisKK2V4dGVybiB2b2lkIGJhciAoY2hhciwgc2hvcnQsIGlu dCwgZW51bSBFLCBsb25nLCBsb25nIGxvbmcsIGludCAqLCBib29sKTsKKwordm9pZCBmb28oKQor eworICBjaGFyIHRlbXAxOworICBzaG9ydCB0ZW1wMjsKKyAgaW50IHRlbXAzOworICBlbnVtIEUg dGVtcDQ7CisgIGxvbmcgdGVtcDU7CisgIGxvbmcgbG9uZyB0ZW1wNjsKKyAgaW50ICp0ZW1wNzsK KyAgYm9vbCB0ZW1wODsKKworICBiYXIgKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCB0ZW1w NSwgdGVtcDYsIHRlbXA3LCB0ZW1wOCk7CisgIHJldHVybjsKK30KKworLyogeyBkZy1maW5hbCB7 IHNjYW4tcnRsLWR1bXAtdGltZXMgImNvbnN0X2ludCAwIiAxMSAiZXhwYW5kIiB9IH0gKi8KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC0yLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtMi5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmM1NGU2ZDYwMzgyCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTIuYwpA QCAtMCwwICsxLDM1IEBACisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgaW50 ZWdlciBhbmQgcG9pbnRlciB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMuICAqLworLyogeyBkZy1k byBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLWZ0cml2aWFsLWF1dG8tdmFyLWlu aXQ9cGF0dGVybiAtZmR1bXAtcnRsLWV4cGFuZCIgfSAqLworCisjaWZuZGVmIF9fY3BsdXNwbHVz CisjIGRlZmluZSBib29sIF9Cb29sCisjZW5kaWYKKworZW51bSBFIHsKKyAgTjEgPSAwLAorICBO MiwKKyAgTjMKK307CisKK2V4dGVybiB2b2lkIGJhciAoY2hhciwgc2hvcnQsIGludCwgZW51bSBF LCBsb25nLCBsb25nIGxvbmcsIGludCAqLCBib29sKTsKKwordm9pZCBmb28oKQoreworICBjaGFy IHRlbXAxOworICBzaG9ydCB0ZW1wMjsKKyAgaW50IHRlbXAzOworICBlbnVtIEUgdGVtcDQ7Cisg IGxvbmcgdGVtcDU7CisgIGxvbmcgbG9uZyB0ZW1wNjsKKyAgaW50ICp0ZW1wNzsKKyAgYm9vbCB0 ZW1wODsKKworICBiYXIgKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCB0ZW1wNSwgdGVtcDYs IHRlbXA3LCB0ZW1wOCk7CisgIHJldHVybjsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRs LWR1bXAtdGltZXMgIjB4ZmVcXFxdIiAxICJleHBhbmQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tcnRsLWR1bXAtdGltZXMgIjB4ZmZmZmZmZmZmZmZmZmVmZSIgMSAiZXhwYW5kIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICIweGZmZmZmZmZmZmVmZWZl ZmUiIDIgImV4cGFuZCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1l cyAiMHhmZWZlZmVmZWZlZmVmZWZlIiAyICJleHBhbmQiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTMuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC0zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi4xYWRjMTQ3YTMwMDAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtMy5jCkBAIC0wLDAgKzEsMTcg QEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZvciBmbG9hdGluZyBwb2ludCB0eXBl IGF1dG9tYXRpYyB2YXJpYWJsZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsg ZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyAtZmR1bXAtcnRsLWV4cGFu ZCIgfSAqLworCitsb25nIGRvdWJsZSByZXN1bHQ7CisKK2xvbmcgZG91YmxlIGZvbygpCit7Cisg IGZsb2F0IHRlbXAxOworICBkb3VibGUgdGVtcDI7CisgIGxvbmcgZG91YmxlIHRlbXAzOworICAK KyAgcmVzdWx0ID0gdGVtcDEgKyB0ZW1wMiArIHRlbXAzOworICByZXR1cm4gcmVzdWx0OworfQor CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiY29uc3RfaW50IDAiIDcgImV4 cGFuZCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC9hdXRvLWluaXQtNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1p bml0LTQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjllZTgzMzUw NjVmMQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L2F1dG8taW5pdC00LmMKQEAgLTAsMCArMSwxOSBAQAorLyogVmVyaWZ5IHBhdHRlcm4gaW5pdGlh bGl6YXRpb24gZm9yIGZsb2F0aW5nIHBvaW50IHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcy4gICov CisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtZnRyaXZpYWwt YXV0by12YXItaW5pdD1wYXR0ZXJuIC1mZHVtcC1ydGwtZXhwYW5kIiB9ICovCisKK2xvbmcgZG91 YmxlIHJlc3VsdDsKKworbG9uZyBkb3VibGUgZm9vKCkKK3sKKyAgZmxvYXQgdGVtcDE7CisgIGRv dWJsZSB0ZW1wMjsKKyAgbG9uZyBkb3VibGUgdGVtcDM7CisgIAorICByZXN1bHQgPSB0ZW1wMSAr IHRlbXAyICsgdGVtcDM7CisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIHsgZGctZmluYWwgeyBz Y2FuLXJ0bC1kdW1wICJmZWZlZmVmZSIgImV4cGFuZCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1ydGwtZHVtcCAiZmVmZWZlZmVmZWZlZmVmZSIgImV4cGFuZCIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1ydGwtZHVtcCAiZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmUi ICJleHBhbmQiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvYXV0by1pbml0LTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1 dG8taW5pdC01LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xODc0 ZDk2MWQ1ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9hdXRvLWluaXQtNS5jCkBAIC0wLDAgKzEsMTkgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRp YWxpemF0aW9uIGZvciBjb21wbGV4IHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcy4gICovCisvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXIt aW5pdD16ZXJvIC1mZHVtcC1ydGwtZXhwYW5kIiB9ICovCisKKworX0NvbXBsZXggbG9uZyBkb3Vi bGUgcmVzdWx0OworCitfQ29tcGxleCBsb25nIGRvdWJsZSBmb28oKQoreworICBfQ29tcGxleCBm bG9hdCB0ZW1wMTsKKyAgX0NvbXBsZXggZG91YmxlIHRlbXAyOworICBfQ29tcGxleCBsb25nIGRv dWJsZSB0ZW1wMzsKKworICByZXN1bHQgPSB0ZW1wMSArIHRlbXAyICsgdGVtcDM7CisgIHJldHVy biByZXN1bHQ7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICJjb25z dF9pbnQgMCIgMTIgImV4cGFuZCIgfSB9ICovCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYWFyY2g2NC9hdXRvLWluaXQtNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMjdjMTZiMzM2Nzg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTYuYwpAQCAtMCwwICsxLDE4IEBACisvKiBWZXJp ZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgY29tcGxleCB0eXBlIGF1dG9tYXRpYyB2YXJp YWJsZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0 cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtcnRsLWV4cGFuZCIgfSAqLworCisK K19Db21wbGV4IGxvbmcgZG91YmxlIHJlc3VsdDsKKworX0NvbXBsZXggbG9uZyBkb3VibGUgZm9v KCkKK3sKKyAgX0NvbXBsZXggZmxvYXQgdGVtcDE7CisgIF9Db21wbGV4IGRvdWJsZSB0ZW1wMjsK KyAgX0NvbXBsZXggbG9uZyBkb3VibGUgdGVtcDM7CisKKyAgcmVzdWx0ID0gdGVtcDEgKyB0ZW1w MiArIHRlbXAzOworICByZXR1cm4gcmVzdWx0OworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1y dGwtZHVtcC10aW1lcyAiMHhmZmZmZmZmZmZmZmZmZmZlXFxcXVxcXCkgcmVwZWF0ZWQgeDE2IiAz ICJleHBhbmQiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvYXV0by1pbml0LTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1 dG8taW5pdC03LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hYzI3 ZmJlOTJmNGEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9hdXRvLWluaXQtNy5jCkBAIC0wLDAgKzEsMzIgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRp YWxpemF0aW9uIGZvciBhcnJheSwgdW5pb24sIGFuZCBzdHJ1Y3R1cmUgdHlwZSBhdXRvbWF0aWMg dmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKwor c3RydWN0IFMKK3sKKyAgaW50IGYxOworICBmbG9hdCBmMjsKKyAgY2hhciBmM1syMF07Cit9Owor Cit1bmlvbiBVCit7CisgIGNoYXIgdTFbNV07CisgIGludCB1MjsKKyAgZmxvYXQgdTM7IAorfTsK KworZG91YmxlIHJlc3VsdDsKKworZG91YmxlIGZvbygpCit7CisgIGludCB0ZW1wMVszXTsKKyAg ZG91YmxlIHRlbXAyWzNdOworICBzdHJ1Y3QgUyB0ZW1wMzsKKyAgdW5pb24gVSB0ZW1wNDsKKyAg CisgIHJlc3VsdCA9IHRlbXAxWzJdICsgdGVtcDJbMV0gKyB0ZW1wMy5mMiArIHRlbXA0LnUzOwor ICByZXR1cm4gcmVzdWx0OworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1l cyAiY29uc3RfaW50IDAiIDggImV4cGFuZCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtOC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjM5NDNmNWE0ZDZiMgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC04LmMKQEAgLTAsMCArMSwzMiBAQAorLyog VmVyaWZ5IHBhdHRlcm4gaW5pdGlhbGl6YXRpb24gZm9yIGFycmF5LCB1bmlvbiwgYW5kIHN0cnVj dHVyZSB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1 bXAtcnRsLWV4cGFuZCIgfSAqLworCitzdHJ1Y3QgUworeworICBpbnQgZjE7CisgIGZsb2F0IGYy OworICBjaGFyIGYzWzIwXTsKK307CisKK3VuaW9uIFUKK3sKKyAgY2hhciB1MVs1XTsKKyAgaW50 IHUyOworICBmbG9hdCB1MzsgCit9OworCitkb3VibGUgcmVzdWx0OworCitkb3VibGUgZm9vKCkK K3sKKyAgaW50IHRlbXAxWzNdOworICBkb3VibGUgdGVtcDJbM107CisgIHN0cnVjdCBTIHRlbXAz OworICB1bmlvbiBVIHRlbXA0OworICAKKyAgcmVzdWx0ID0gdGVtcDFbMl0gKyB0ZW1wMlsxXSAr IHRlbXAzLmYyICsgdGVtcDQudTM7CisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIHsgZGctZmlu YWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICIweGZmZmZmZmZmZmZmZmZmZmVcXFxdXFxcKSByZXBl YXRlZCB4MTYiIDQgImV4cGFuZCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy0xLmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kM2E4OGM3MjQ1NDUKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy0xLmMKQEAg LTAsMCArMSwxNyBAQAorLyogVmVyaWZ5IHplcm8gaW5pdGlhbGl6YXRpb24gZm9yIHN0cnVjdHVy ZSB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMgd2l0aAorICAgcGFkZGluZy4gICovCisvKiB7IGRn LWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5p dD16ZXJvIiB9ICovCisKK3N0cnVjdCB0ZXN0X2FsaWduZWQgeworICAgICAgICBpbnQgaW50ZXJu YWwxOworICAgICAgICBsb25nIGxvbmcgaW50ZXJuYWwyOworfSBfX2F0dHJpYnV0ZV9fICgoYWxp Z25lZCg2NCkpKTsKKworaW50IGZvbyAoKQoreworICBzdHJ1Y3QgdGVzdF9hbGlnbmVkIHZhcjsK KyAgcmV0dXJuIHZhci5pbnRlcm5hbDE7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyAic3RwXHRxMCwgcTAsIiAyIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMTAuYyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTEwLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iMGYzYWNiMmY1MjgKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGlu Zy0xMC5jCkBAIC0wLDAgKzEsMjIgQEAKKy8qIFZlcmlmeSBwYXR0ZXJuIGluaXRpYWxpemF0aW9u IGZvciBhcnJheSB0eXBlIHdpdGggc3RydWN0dXJlIGVsZW1lbnQgd2l0aAorICAgcGFkZGluZy4g ICovIAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFs LWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtcnRsLWV4cGFuZCIgfSAqLworCitzdHJ1Y3Qg dGVzdF90cmFpbGluZ19ob2xlIHsKKyAgICAgICAgaW50IG9uZTsKKyAgICAgICAgaW50IHR3bzsK KyAgICAgICAgaW50IHRocmVlOworICAgICAgICBjaGFyIGZvdXI7CisgICAgICAgIC8qICJzaXpl b2YodW5zaWduZWQgbG9uZykgLSAxIiBieXRlIHBhZGRpbmcgaG9sZSBoZXJlLiAqLworfTsKKwor CitpbnQgZm9vICgpCit7CisgIHN0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgdmFyWzEwXTsgCisg IHJldHVybiB2YXJbMl0uZm91cjsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAt dGltZXMgIjB4ZmZmZmZmZmZmZmZmZmZmZVxcXF1cXFwpIHJlcGVhdGVkIHgxNiIgMSAiZXhwYW5k IiB9IH0gKi8KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv YXV0by1pbml0LXBhZGRpbmctMTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L2F1dG8taW5pdC1wYWRkaW5nLTExLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi4wMmY3ZWRjNTEwMDgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy0xMS5jCkBAIC0wLDAgKzEsMjcgQEAK Ky8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZvciB1bmlvbiB0eXBlIHdpdGggc3RydWN0 dXJlIGZpZWxkIHdpdGgKKyAgIHBhZGRpbmcuICAqLyAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKwor c3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB7CisgICAgICAgIGludCBvbmU7CisgICAgICAgIGlu dCB0d287CisgICAgICAgIGludCB0aHJlZTsKKyAgICAgICAgY2hhciBmb3VyOworICAgICAgICAv KiAic2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSIgYnl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8K K307CisKK3VuaW9uIHRlc3RfdW5pb25fcGFkZGluZyB7CisgIHN0cnVjdCB0ZXN0X3RyYWlsaW5n X2hvbGUgdTE7CisgIGxvbmcgbG9uZyB1MjsKK307CisKKworaW50IGZvbyAoKQoreworICB1bmlv biB0ZXN0X3VuaW9uX3BhZGRpbmcgdmFyOworICByZXR1cm4gdmFyLnUxLmZvdXI7Cit9CisKKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAic3RwXHR4enIsIHh6ciwiIH0gfSAqLworCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFk ZGluZy0xMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBh ZGRpbmctMTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU1NTk3 MmYxNzI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L2F1dG8taW5pdC1wYWRkaW5nLTEyLmMKQEAgLTAsMCArMSwyNyBAQAorLyogVmVyaWZ5IHBh dHRlcm4gaW5pdGlhbGl6YXRpb24gZm9yIHVuaW9uIHR5cGUgd2l0aCBzdHJ1Y3R1cmUgZmllbGQg d2l0aAorICAgcGFkZGluZy4gICovIAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtcnRsLWV4cGFu ZCIgfSAqLworCitzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHsKKyAgICAgICAgaW50IG9uZTsK KyAgICAgICAgaW50IHR3bzsKKyAgICAgICAgaW50IHRocmVlOworICAgICAgICBjaGFyIGZvdXI7 CisgICAgICAgIC8qICJzaXplb2YodW5zaWduZWQgbG9uZykgLSAxIiBieXRlIHBhZGRpbmcgaG9s ZSBoZXJlLiAqLworfTsKKwordW5pb24gdGVzdF91bmlvbl9wYWRkaW5nIHsKKyAgc3RydWN0IHRl c3RfdHJhaWxpbmdfaG9sZSB1MTsKKyAgbG9uZyBsb25nIHUyOworfTsKKworCitpbnQgZm9vICgp Cit7CisgIHVuaW9uIHRlc3RfdW5pb25fcGFkZGluZyB2YXI7CisgIHJldHVybiB2YXIudTEuZm91 cjsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIjB4ZmZmZmZmZmZm ZmZmZmZmZVxcXF1cXFwpIHJlcGVhdGVkIHgxNiIgMSAiZXhwYW5kIiB9IH0gKi8KKwpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmct Mi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmct Mi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWNlY2ViODdmYmUx Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0 by1pbml0LXBhZGRpbmctMi5jCkBAIC0wLDAgKzEsMTggQEAKKy8qIFZlcmlmeSBwYXR0ZXJuIGlu aXRpYWxpemF0aW9uIGZvciBzdHJ1Y3R1cmUgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzIHdpdGgK KyAgIHBhZGRpbmcuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiIgfSAqLworCitzdHJ1Y3QgdGVzdF9h bGlnbmVkIHsKKyAgICAgICAgaW50IGludGVybmFsMTsKKyAgICAgICAgbG9uZyBsb25nIGludGVy bmFsMjsKK30gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQoNjQpKSk7CisKK2ludCBmb28gKCkKK3sK KyAgc3RydWN0IHRlc3RfYWxpZ25lZCB2YXI7CisgIHJldHVybiB2YXIuaW50ZXJuYWwxOworfQor CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInN0cFx0cTAsIHEwLCIgMiB9 IH0gKi8KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0 by1pbml0LXBhZGRpbmctMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0 by1pbml0LXBhZGRpbmctMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uMDg1YzM4NjI5MjEwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMy5jCkBAIC0wLDAgKzEsMjcgQEAKKy8qIFZl cmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZvciBuZXN0ZWQgc3RydWN0dXJlIHR5cGUgYXV0b21h dGljIHZhcmlhYmxlcyB3aXRoCisgICBwYWRkaW5nLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8K Kworc3RydWN0IHRlc3RfYWxpZ25lZCB7CisgICAgICAgIHVuc2lnbmVkIGludGVybmFsMTsKKyAg ICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGludGVybmFsMjsKK30gX19hdHRyaWJ1dGVfXyAoKGFs aWduZWQoNjQpKSk7CisKK3N0cnVjdCB0ZXN0X2JpZ19ob2xlIHsKKyAgICAgICAgY2hhciBvbmU7 CisgICAgICAgIGNoYXIgdHdvOworICAgICAgICBjaGFyIHRocmVlOworICAgICAgICAvKiA2MSBi eXRlIHBhZGRpbmcgaG9sZSBoZXJlLiAqLworICAgICAgICBzdHJ1Y3QgdGVzdF9hbGlnbmVkIGZv dXI7Cit9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkKDY0KSkpOworCisKK2ludCBmb28gKCkKK3sK KyAgc3RydWN0IHRlc3RfYmlnX2hvbGUgdmFyOworICByZXR1cm4gdmFyLmZvdXIuaW50ZXJuYWwx OworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInN0cFx0cTAsIHEw LCIgNCB9IH0gKi8KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvYXV0by1pbml0LXBhZGRpbmctNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvYXV0by1pbml0LXBhZGRpbmctNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uN2E2ZGRiYzIwZWUxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctNC5jCkBAIC0wLDAgKzEsMjcgQEAK Ky8qIFZlcmlmeSBwYXR0ZXJuIGluaXRpYWxpemF0aW9uIGZvciBuZXN0ZWQgc3RydWN0dXJlIHR5 cGUgYXV0b21hdGljIHZhcmlhYmxlcyB3aXRoCisgICBwYWRkaW5nLiAgKi8KKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBh dHRlcm4iIH0gKi8KKworc3RydWN0IHRlc3RfYWxpZ25lZCB7CisgICAgICAgIHVuc2lnbmVkIGlu dGVybmFsMTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGludGVybmFsMjsKK30gX19hdHRy aWJ1dGVfXyAoKGFsaWduZWQoNjQpKSk7CisKK3N0cnVjdCB0ZXN0X2JpZ19ob2xlIHsKKyAgICAg ICAgY2hhciBvbmU7CisgICAgICAgIGNoYXIgdHdvOworICAgICAgICBjaGFyIHRocmVlOworICAg ICAgICAvKiA2MSBieXRlIHBhZGRpbmcgaG9sZSBoZXJlLiAqLworICAgICAgICBzdHJ1Y3QgdGVz dF9hbGlnbmVkIGZvdXI7Cit9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkKDY0KSkpOworCisKK2lu dCBmb28gKCkKK3sKKyAgc3RydWN0IHRlc3RfYmlnX2hvbGUgdmFyOworICByZXR1cm4gdmFyLmZv dXIuaW50ZXJuYWwxOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg InN0cFx0cTAsIHEwLCIgNSB9IH0gKi8KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uM2M0NWE2YzYyODhkCi0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctNS5jCkBAIC0w LDAgKzEsMjIgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZvciBzdHJ1Y3R1cmUg dHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzIHdpdGgKKyAgIHRhaWwgcGFkZGluZy4gICovCisvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXIt aW5pdD16ZXJvIiB9ICovCisKK3N0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgeworICAgICAgICBj aGFyICpvbmU7CisgICAgICAgIGNoYXIgKnR3bzsKKyAgICAgICAgY2hhciAqdGhyZWU7CisgICAg ICAgIGNoYXIgZm91cjsKKyAgICAgICAgLyogInNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEiIGJ5 dGUgcGFkZGluZyBob2xlIGhlcmUuICovCit9OworCitpbnQgZm9vICgpCit7CisgIHN0cnVjdCB0 ZXN0X3RyYWlsaW5nX2hvbGUgdmFyOworICByZXR1cm4gdmFyLmZvdXI7Cit9CisKKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAic3RwXHR4enIsIHh6ciwiIDIgfSB9ICovCisK KwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0 LXBhZGRpbmctNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0 LXBhZGRpbmctNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmZl ZjIzZDUyYTEwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvYXV0by1pbml0LXBhZGRpbmctNi5jCkBAIC0wLDAgKzEsMjAgQEAKKy8qIFZlcmlmeSBw YXR0ZXJuIGluaXRpYWxpemF0aW9uIGZvciBzdHJ1Y3R1cmUgdHlwZSBhdXRvbWF0aWMgdmFyaWFi bGVzIHdpdGgKKyAgIHRhaWwgcGFkZGluZy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD1wYXR0ZXJuIC1mZHVtcC1y dGwtZXhwYW5kIiB9ICovCisKK3N0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgeworICAgICAgICBj aGFyICpvbmU7CisgICAgICAgIGNoYXIgKnR3bzsKKyAgICAgICAgY2hhciAqdGhyZWU7CisgICAg ICAgIGNoYXIgZm91cjsKKyAgICAgICAgLyogInNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEiIGJ5 dGUgcGFkZGluZyBob2xlIGhlcmUuICovCit9OworCitpbnQgZm9vICgpCit7CisgIHN0cnVjdCB0 ZXN0X3RyYWlsaW5nX2hvbGUgdmFyOworICByZXR1cm4gdmFyLmZvdXI7Cit9CisKKy8qIHsgZGct ZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICIweGZmZmZmZmZmZmZmZmZmZmVcXFxdXFxcKSBy ZXBlYXRlZCB4MTYiIDEgImV4cGFuZCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy03LmMgYi9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy03LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jYjk2YzNhMWU0YjIKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy03LmMK QEAgLTAsMCArMSwyMCBAQAorLyogVmVyaWZ5IHplcm8gaW5pdGlhbGl6YXRpb24gZm9yIHN0cnVj dHVyZSB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMgd2l0aAorICAgcGFkZGluZyBhbmQgaGFzIGV4 cGxpY2l0IGluaXRpYWxpemF0aW9uLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworc3RydWN0 IHRlc3RfdHJhaWxpbmdfaG9sZSB7CisgICAgICAgIGludCBvbmU7CisgICAgICAgIGludCB0d287 CisgICAgICAgIGludCB0aHJlZTsKKyAgICAgICAgY2hhciBmb3VyOworICAgICAgICAvKiAic2l6 ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSIgYnl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8KK307CisK K2ludCBmb28gKCkKK3sKKyAgc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB2YXIgPSB7Lm9uZSA9 IDEsLnR3byA9IDIsIC5mb3VyID0gJ2MnfTsKKyAgcmV0dXJuIHZhci5mb3VyOworfQorCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInN0cFx0eHpyLCB4enIsIiB9IH0gKi8KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5n LTguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5n LTguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNlN2M3Y2QzMWMx ZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1 dG8taW5pdC1wYWRkaW5nLTguYwpAQCAtMCwwICsxLDIyIEBACisvKiBWZXJpZnkgcGF0dGVybiBp bml0aWFsaXphdGlvbiBmb3Igc3RydWN0dXJlIHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcyB3aXRo CisgICBwYWRkaW5nIGFuZCBoYXMgZXhwbGljaXQgaW5pdGlhbGl6YXRpb24uICAqLworLyogeyBk Zy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWlu aXQ9cGF0dGVybiIgfSAqLworCitzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHsKKyAgICAgICAg aW50IG9uZTsKKyAgICAgICAgaW50IHR3bzsKKyAgICAgICAgaW50IHRocmVlOworICAgICAgICBj aGFyIGZvdXI7CisgICAgICAgIC8qICJzaXplb2YodW5zaWduZWQgbG9uZykgLSAxIiBieXRlIHBh ZGRpbmcgaG9sZSBoZXJlLiAqLworfTsKKworaW50IGZvbyAoKQoreworICBzdHJ1Y3QgdGVzdF90 cmFpbGluZ19ob2xlIHZhciA9IHsub25lID0gMSwudHdvID0gMiwgLmZvdXIgPSAnYyd9OworICBy ZXR1cm4gdmFyLmZvdXI7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAic3Rw XHR4enIsIHh6ciwiIH0gfSAqLworCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTkuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLmM4MWU1ZmYyOGIwYgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTkuYwpAQCAtMCww ICsxLDIxIEBACisvKiBWZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3IgYXJyYXkgdHlwZSB3 aXRoIHN0cnVjdHVyZSBlbGVtZW50IHdpdGgKKyAgIHBhZGRpbmcuICAqLyAKKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXpl cm8iIH0gKi8KKworc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB7CisgICAgICAgIGludCBvbmU7 CisgICAgICAgIGludCB0d287CisgICAgICAgIGludCB0aHJlZTsKKyAgICAgICAgY2hhciBmb3Vy OworICAgICAgICAvKiAic2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSIgYnl0ZSBwYWRkaW5nIGhv bGUgaGVyZS4gKi8KK307CisKKworaW50IGZvbyAoKQoreworICBzdHJ1Y3QgdGVzdF90cmFpbGlu Z19ob2xlIHZhclsxMF07IAorICByZXR1cm4gdmFyWzJdLmZvdXI7Cit9CisKKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAic3RwXHRxMCwgcTAsIiA1IH0gfSAqLwpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTEuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iNzY5MGRmMjQwNjAKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtMS5jCkBAIC0wLDAgKzEsMzIg QEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZvciBpbnRlZ2VyIGFuZCBwb2ludGVy IHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIC1mZHVtcC1ydGwt ZXhwYW5kIiB9ICovCisKKyNpZm5kZWYgX19jcGx1c3BsdXMKKyMgZGVmaW5lIGJvb2wgX0Jvb2wK KyNlbmRpZgorCitlbnVtIEUgeworICBOMSA9IDAsCisgIE4yLAorICBOMworfTsKKworZXh0ZXJu IHZvaWQgYmFyIChjaGFyLCBzaG9ydCwgaW50LCBlbnVtIEUsIGxvbmcsIGxvbmcgbG9uZywgaW50 ICosIGJvb2wpOworCit2b2lkIGZvbygpCit7CisgIGNoYXIgdGVtcDE7CisgIHNob3J0IHRlbXAy OworICBpbnQgdGVtcDM7CisgIGVudW0gRSB0ZW1wNDsKKyAgbG9uZyB0ZW1wNTsKKyAgbG9uZyBs b25nIHRlbXA2OworICBpbnQgKnRlbXA3OworICBib29sIHRlbXA4OworCisgIGJhciAodGVtcDEs IHRlbXAyLCB0ZW1wMywgdGVtcDQsIHRlbXA1LCB0ZW1wNiwgdGVtcDcsIHRlbXA4KTsKKyAgcmV0 dXJuOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiY29uc3RfaW50 IDAiIDEwICJleHBhbmQiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvYXV0by1pbml0LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1 dG8taW5pdC0yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNzZm YzI1NjUxNjgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9hdXRvLWluaXQtMi5jCkBAIC0wLDAgKzEsMzYgQEAKKy8qIFZlcmlmeSBwYXR0ZXJuIGluaXRp YWxpemF0aW9uIGZvciBpbnRlZ2VyIGFuZCBwb2ludGVyIHR5cGUgYXV0b21hdGljIHZhcmlhYmxl cy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZp YWwtYXV0by12YXItaW5pdD1wYXR0ZXJuIC1mZHVtcC1ydGwtZXhwYW5kIiB9ICovCisKKyNpZm5k ZWYgX19jcGx1c3BsdXMKKyMgZGVmaW5lIGJvb2wgX0Jvb2wKKyNlbmRpZgorCitlbnVtIEUgewor ICBOMSA9IDAsCisgIE4yLAorICBOMworfTsKKworZXh0ZXJuIHZvaWQgYmFyIChjaGFyLCBzaG9y dCwgaW50LCBlbnVtIEUsIGxvbmcsIGxvbmcgbG9uZywgaW50ICosIGJvb2wpOworCit2b2lkIGZv bygpCit7CisgIGNoYXIgdGVtcDE7CisgIHNob3J0IHRlbXAyOworICBpbnQgdGVtcDM7CisgIGVu dW0gRSB0ZW1wNDsKKyAgbG9uZyB0ZW1wNTsKKyAgbG9uZyBsb25nIHRlbXA2OworICBpbnQgKnRl bXA3OworICBib29sIHRlbXA4OworCisgIGJhciAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQs IHRlbXA1LCB0ZW1wNiwgdGVtcDcsIHRlbXA4KTsKKyAgcmV0dXJuOworfQorCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiMHhmZmZmZmZmZmZmZmZmZmZlIiAyICJleHBhbmQi IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIjB4ZmZmZmZmZmZm ZmZmZmVmZSIgMSAiZXhwYW5kIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1w LXRpbWVzICIweGZmZmZmZmZmZmVmZWZlZmUiIDIgImV4cGFuZCIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiMHhmZWZlZmVmZWZlZmVmZWZlIiAzICJleHBhbmQi IH0gfSAqLworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRv LWluaXQtMjEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC0yMS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTE5MmE5MDhmOWRmCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0 LTIxLmMKQEAgLTAsMCArMSwxNCBAQAorLyogVmVyaWZ5IHplcm8gaW5pdGlhbGl6YXRpb24gZm9y IFZMQSBhdXRvbWF0aWMgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8gLWZkdW1wLXJ0bC1l eHBhbmQiIH0gKi8KKworZXh0ZXJuIHZvaWQgYmFyIChpbnQpOworCit2b2lkIGZvbyhpbnQgbikK K3sKKyAgaW50IGFycltuXTsKKyAgYmFyIChhcnJbMl0pOworICByZXR1cm47Cit9CisKKy8qIHsg ZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wICJfX2J1aWx0aW5fbWVtc2V0IiAiZXhwYW5kIiB9IH0g Ki8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC0y Mi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTIyLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40MzFkOTY2NGU5NGYKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtMjIuYwpA QCAtMCwwICsxLDE0IEBACisvKiBWZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3IgVkxBIGF1 dG9tYXRpYyB2YXJpYWJsZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtcnRsLWV4cGFu ZCIgfSAqLworCitleHRlcm4gdm9pZCBiYXIgKGludCk7CisKK3ZvaWQgZm9vKGludCBuKQorewor ICBpbnQgYXJyW25dOworICBiYXIgKGFyclsyXSk7CisgIHJldHVybjsKK30KKworLyogeyBkZy1m aW5hbCB7IHNjYW4tcnRsLWR1bXAgIl9fYnVpbHRpbl9tZW1zZXQiICJleHBhbmQiIH0gfSAqLwpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTIzLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtMjMuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjcyMDk0ZjZiZGI5MgotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC0yMy5jCkBAIC0w LDAgKzEsMTMgQEAKKy8qIFZlcmlmeSB0aGUgYXV0byBpbml0aWFsaXphdGlvbiBvZiBuZXN0ZWQg VkxBLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJp dmlhbC1hdXRvLXZhci1pbml0PXplcm8gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKwordm9pZCBn KHZvaWQgKik7CisKK3ZvaWQgZm9vKGludCBhKQoreworICBpbnQgeFthXVthXTsKKyAgZyh4KTsK K30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAgIl9fYnVpbHRpbl9tZW1zZXQiICJl eHBhbmQiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv YXV0by1pbml0LTI0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQt MjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVjYzNhNzU2YTFj NQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8t aW5pdC0yNC5jCkBAIC0wLDAgKzEsMTMgQEAKKy8qIFZlcmlmeSB0aGUgYXV0byBpbml0aWFsaXph dGlvbiBvZiBuZXN0ZWQgVkxBLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXJ0bC1leHBh bmQiIH0gKi8KKwordm9pZCBnKHZvaWQgKik7CisKK3ZvaWQgZm9vKGludCBhKQoreworICBpbnQg eFthXVthXTsKKyAgZyh4KTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAgIl9f YnVpbHRpbl9tZW1zZXQiICJleHBhbmQiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L2F1dG8taW5pdC0zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi4xMzBlNTVmZTJlODQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9hdXRvLWluaXQtMy5jCkBAIC0wLDAgKzEsMTcgQEAKKy8qIFZlcmlmeSB6ZXJv IGluaXRpYWxpemF0aW9uIGZvciBmbG9hdGluZyBwb2ludCB0eXBlIGF1dG9tYXRpYyB2YXJpYWJs ZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2 aWFsLWF1dG8tdmFyLWluaXQ9emVybyAtZmR1bXAtcnRsLWV4cGFuZCIgfSAqLworCitsb25nIGRv dWJsZSByZXN1bHQ7CisKK2xvbmcgZG91YmxlIGZvbygpCit7CisgIGZsb2F0IHRlbXAxOworICBk b3VibGUgdGVtcDI7CisgIGxvbmcgZG91YmxlIHRlbXAzOworCisgIHJlc3VsdCA9IHRlbXAxICsg dGVtcDIgKyB0ZW1wMzsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogeyBkZy1maW5hbCB7IHNj YW4tcnRsLWR1bXAtdGltZXMgImNvbnN0X2ludCAwIiAzICJleHBhbmQiIH0gfSAqLwpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTQuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC00LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41NTEyNWI1MzdiYmQKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtNC5jCkBAIC0wLDAgKzEsMjAg QEAKKy8qIFZlcmlmeSBwYXR0ZXJuIGluaXRpYWxpemF0aW9uIGZvciBmbG9hdGluZyBwb2ludCB0 eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8q IHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtcnRs LWV4cGFuZCIgfSAqLworCitsb25nIGRvdWJsZSByZXN1bHQ7CisKK2xvbmcgZG91YmxlIGZvbygp Cit7CisgIGZsb2F0IHRlbXAxOworICBkb3VibGUgdGVtcDI7CisgIGxvbmcgZG91YmxlIHRlbXAz OworCisgIHJlc3VsdCA9IHRlbXAxICsgdGVtcDIgKyB0ZW1wMzsKKyAgcmV0dXJuIHJlc3VsdDsK K30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIjB4ZmZmZmZmZmZmZWZl ZmVmZSIgMSAiZXhwYW5kIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRp bWVzICJcXFxbMHhmZWZlZmVmZWZlZmVmZWZlXFxcXSIgMSAiZXhwYW5kIiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICIweGZlZmVmZWZlZmVmZWZlZmVmZWZlZmVm ZWZlZmVmZWZlIiAxICJleHBhbmQiIH0gfSAqLworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvYXV0by1pbml0LTUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjA2YzE1YmY5MzViMgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2F1dG8taW5pdC01LmMKQEAgLTAsMCArMSwyMCBAQAorLyogVmVyaWZ5IHplcm8g aW5pdGlhbGl6YXRpb24gZm9yIGNvbXBsZXggdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzLiAgKi8K Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRv LXZhci1pbml0PXplcm8gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKworCitfQ29tcGxleCBsb25n IGRvdWJsZSByZXN1bHQ7CisKK19Db21wbGV4IGxvbmcgZG91YmxlIGZvbygpCit7CisgIF9Db21w bGV4IGZsb2F0IHRlbXAxOworICBfQ29tcGxleCBkb3VibGUgdGVtcDI7CisgIF9Db21wbGV4IGxv bmcgZG91YmxlIHRlbXAzOworCisgIHJlc3VsdCA9IHRlbXAxICsgdGVtcDIgKyB0ZW1wMzsKKyAg cmV0dXJuIHJlc3VsdDsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMg ImNvbnN0X2ludCAwIiA0ICJleHBhbmQiIH0gfSAqLworCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9hdXRvLWluaXQtNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uODBiZDU2YmNiOWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTYuYwpAQCAtMCwwICsxLDE5IEBACisvKiBWZXJpZnkg cGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgY29tcGxleCB0eXBlIGF1dG9tYXRpYyB2YXJpYWJs ZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2 aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtcnRsLWV4cGFuZCIgfSAqLworCisKK19D b21wbGV4IGxvbmcgZG91YmxlIHJlc3VsdDsKKworX0NvbXBsZXggbG9uZyBkb3VibGUgZm9vKCkK K3sKKyAgX0NvbXBsZXggZmxvYXQgdGVtcDE7CisgIF9Db21wbGV4IGRvdWJsZSB0ZW1wMjsKKyAg X0NvbXBsZXggbG9uZyBkb3VibGUgdGVtcDM7CisKKyAgcmVzdWx0ID0gdGVtcDEgKyB0ZW1wMiAr IHRlbXAzOworICByZXR1cm4gcmVzdWx0OworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwt ZHVtcC10aW1lcyAiXFxcWzB4ZmVmZWZlZmVmZWZlZmVmZVxcXF0iIDEgImV4cGFuZCIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiMHhmZWZlZmVmZWZlZmVmZWZl ZmVmZWZlZmVmZWZlZmVmZSIgMyAiZXhwYW5kIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9hdXRvLWluaXQtNy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uZTkxYTAyNDYzMWRhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTcuYwpAQCAtMCwwICsxLDMyIEBACisvKiBWZXJpZnkg emVybyBpbml0aWFsaXphdGlvbiBmb3IgYXJyYXksIHVuaW9uLCBhbmQgc3RydWN0dXJlIHR5cGUg YXV0b21hdGljIHZhcmlhYmxlcy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIC1mZHVtcC1ydGwtZXhwYW5k IiB9ICovCisKK3N0cnVjdCBTCit7CisgIGludCBmMTsKKyAgZmxvYXQgZjI7CisgIGNoYXIgZjNb MjBdOworfTsKKwordW5pb24gVQoreworICBjaGFyIHUxWzVdOworICBpbnQgdTI7CisgIGZsb2F0 IHUzOyAKK307CisKK2RvdWJsZSByZXN1bHQ7CisKK2RvdWJsZSBmb28oKQoreworICBpbnQgdGVt cDFbM107CisgIGRvdWJsZSB0ZW1wMlszXTsKKyAgc3RydWN0IFMgdGVtcDM7CisgIHVuaW9uIFUg dGVtcDQ7CisgIAorICByZXN1bHQgPSB0ZW1wMVsyXSArIHRlbXAyWzFdICsgdGVtcDMuZjIgKyB0 ZW1wNC51MzsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRs LWR1bXAtdGltZXMgImNvbnN0X2ludCAwIiA3ICJleHBhbmQiIH0gfSAqLwpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTguYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC04LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi41NWU1NWJlM2JkZDIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtOC5jCkBAIC0wLDAgKzEsMzUgQEAKKy8q IFZlcmlmeSBwYXR0ZXJuIGluaXRpYWxpemF0aW9uIGZvciBhcnJheSwgdW5pb24sIGFuZCBzdHJ1 Y3R1cmUgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZk dW1wLXJ0bC1leHBhbmQiIH0gKi8KKworc3RydWN0IFMKK3sKKyAgaW50IGYxOworICBmbG9hdCBm MjsKKyAgY2hhciBmM1syMF07Cit9OworCit1bmlvbiBVCit7CisgIGNoYXIgdTFbNV07CisgIGlu dCB1MjsKKyAgZmxvYXQgdTM7IAorfTsKKworZG91YmxlIHJlc3VsdDsKKworZG91YmxlIGZvbygp Cit7CisgIGludCB0ZW1wMVszXTsKKyAgZG91YmxlIHRlbXAyWzNdOworICBzdHJ1Y3QgUyB0ZW1w MzsKKyAgdW5pb24gVSB0ZW1wNDsKKyAgCisgIHJlc3VsdCA9IHRlbXAxWzJdICsgdGVtcDJbMV0g KyB0ZW1wMy5mMiArIHRlbXA0LnUzOworICByZXR1cm4gcmVzdWx0OworfQorCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiMHhmZmZmZmZmZmZlZmVmZWZlIiAxICJleHBhbmQi IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIlxcXFsweGZlZmVm ZWZlZmVmZWZlZmVcXFxdIiAzICJleHBhbmQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t cnRsLWR1bXAtdGltZXMgIjB4ZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmUiIDMgImV4 cGFuZCIgfSB9ICovCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L2F1dG8taW5pdC1wYWRkaW5nLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1 dG8taW5pdC1wYWRkaW5nLTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLmI0MDY5Nzk3ZDkzOQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTEuYwpAQCAtMCwwICsxLDE5IEBACisvKiBWZXJp ZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3Igc3RydWN0dXJlIHR5cGUgYXV0b21hdGljIHZhcmlh YmxlcyB3aXRoCisgICBwYWRkaW5nLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworc3RydWN0 IHRlc3RfYWxpZ25lZCB7CisgICAgICAgIGludCBpbnRlcm5hbDE7CisgICAgICAgIGxvbmcgbG9u ZyBpbnRlcm5hbDI7Cit9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkKDY0KSkpOworCitpbnQgZm9v ICgpCit7CisgIHN0cnVjdCB0ZXN0X2FsaWduZWQgdmFyOworICByZXR1cm4gdmFyLmludGVybmFs MTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJtb3ZxXHRcXFwk MCwiIDggfSB9ICovCisKKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvYXV0by1pbml0LXBhZGRpbmctMTAuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L2F1dG8taW5pdC1wYWRkaW5nLTEwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi5hZjdhNjAyOGM1Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy0xMC5jCkBAIC0wLDAgKzEsMjEgQEAKKy8q IFZlcmlmeSBwYXR0ZXJuIGluaXRpYWxpemF0aW9uIGZvciBhcnJheSB0eXBlIHdpdGggc3RydWN0 dXJlIGVsZW1lbnQgd2l0aAorICAgcGFkZGluZy4gICovIAorLyogeyBkZy1kbyBjb21waWxlIH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1 bXAtcnRsLWV4cGFuZCIgfSAqLworCitzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHsKKyAgICAg ICAgaW50IG9uZTsKKyAgICAgICAgaW50IHR3bzsKKyAgICAgICAgaW50IHRocmVlOworICAgICAg ICBjaGFyIGZvdXI7CisgICAgICAgIC8qICJzaXplb2YodW5zaWduZWQgbG9uZykgLSAxIiBieXRl IHBhZGRpbmcgaG9sZSBoZXJlLiAqLworfTsKKworCitpbnQgZm9vICgpCit7CisgIHN0cnVjdCB0 ZXN0X3RyYWlsaW5nX2hvbGUgdmFyWzEwXTsgCisgIHJldHVybiB2YXJbMl0uZm91cjsKK30KKwor LyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIjB4ZmVmZWZlZmVmZWZlZmVmZWZl ZmVmZWZlZmVmZWZlZmUiIDEwICJleHBhbmQiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctMTEuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTExLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zMWEzZWUxZmU5NzEKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy0xMS5jCkBA IC0wLDAgKzEsMjYgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZvciB1bmlvbiB0 eXBlIHdpdGggc3RydWN0dXJlIGZpZWxkIHdpdGgKKyAgIHBhZGRpbmcuICAqLyAKKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0 PXplcm8iIH0gKi8KKworc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB7CisgICAgICAgIGludCBv bmU7CisgICAgICAgIGludCB0d287CisgICAgICAgIGludCB0aHJlZTsKKyAgICAgICAgY2hhciBm b3VyOworICAgICAgICAvKiAic2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSIgYnl0ZSBwYWRkaW5n IGhvbGUgaGVyZS4gKi8KK307CisKK3VuaW9uIHRlc3RfdW5pb25fcGFkZGluZyB7CisgIHN0cnVj dCB0ZXN0X3RyYWlsaW5nX2hvbGUgdTE7CisgIGxvbmcgbG9uZyB1MjsKK307CisKKworaW50IGZv byAoKQoreworICB1bmlvbiB0ZXN0X3VuaW9uX3BhZGRpbmcgdmFyOworICByZXR1cm4gdmFyLnUx LmZvdXI7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAibW92cVx0 XFxcJDAsIiAyIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvYXV0by1pbml0LXBhZGRpbmctMTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L2F1dG8taW5pdC1wYWRkaW5nLTEyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi5iZjllYTVkNjI5YTMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy0xMi5jCkBAIC0wLDAgKzEsMjYgQEAKKy8q IFZlcmlmeSBwYXR0ZXJuIGluaXRpYWxpemF0aW9uIGZvciB1bmlvbiB0eXBlIHdpdGggc3RydWN0 dXJlIGZpZWxkIHdpdGgKKyAgIHBhZGRpbmcuICAqLyAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1w LXJ0bC1leHBhbmQiIH0gKi8KKworc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB7CisgICAgICAg IGludCBvbmU7CisgICAgICAgIGludCB0d287CisgICAgICAgIGludCB0aHJlZTsKKyAgICAgICAg Y2hhciBmb3VyOworICAgICAgICAvKiAic2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSIgYnl0ZSBw YWRkaW5nIGhvbGUgaGVyZS4gKi8KK307CisKK3VuaW9uIHRlc3RfdW5pb25fcGFkZGluZyB7Cisg IHN0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgdTE7CisgIGxvbmcgbG9uZyB1MjsKK307CisKKwor aW50IGZvbyAoKQoreworICB1bmlvbiB0ZXN0X3VuaW9uX3BhZGRpbmcgdmFyOworICByZXR1cm4g dmFyLnUxLmZvdXI7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICIw eGZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlIiAxICJleHBhbmQiIH0gfSAqLwpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmct Mi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctMi5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmRjMmQwMzVhNmM5Ci0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0 LXBhZGRpbmctMi5jCkBAIC0wLDAgKzEsMTkgQEAKKy8qIFZlcmlmeSBwYXR0ZXJuIGluaXRpYWxp emF0aW9uIGZvciBzdHJ1Y3R1cmUgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzIHdpdGgKKyAgIHBh ZGRpbmcuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0 cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtcnRsLWV4cGFuZCIgfSAqLworCitz dHJ1Y3QgdGVzdF9hbGlnbmVkIHsKKyAgICAgICAgaW50IGludGVybmFsMTsKKyAgICAgICAgbG9u ZyBsb25nIGludGVybmFsMjsKK30gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQoNjQpKSk7CisKK2lu dCBmb28gKCkKK3sKKyAgc3RydWN0IHRlc3RfYWxpZ25lZCB2YXI7CisgIHJldHVybiB2YXIuaW50 ZXJuYWwxOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiMHhmZWZl ZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZSIgNCAiZXhwYW5kIiB9IH0gKi8KKworCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy0z LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy0zLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YTZkNzY0YjlmYTQKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQt cGFkZGluZy0zLmMKQEAgLTAsMCArMSwzMCBAQAorLyogVmVyaWZ5IHplcm8gaW5pdGlhbGl6YXRp b24gZm9yIG5lc3RlZCBzdHJ1Y3R1cmUgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzIHdpdGgKKyAg IHBhZGRpbmcuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAi LWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCitzdHJ1Y3QgdGVzdF9hbGlnbmVk IHsKKyAgICAgICAgdW5zaWduZWQgaW50ZXJuYWwxOworICAgICAgICB1bnNpZ25lZCBsb25nIGxv bmcgaW50ZXJuYWwyOworfSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCg2NCkpKTsKKworc3RydWN0 IHRlc3RfYmlnX2hvbGUgeworICAgICAgICBjaGFyIG9uZTsKKyAgICAgICAgY2hhciB0d287Cisg ICAgICAgIGNoYXIgdGhyZWU7CisgICAgICAgIC8qIDYxIGJ5dGUgcGFkZGluZyBob2xlIGhlcmUu ICovCisgICAgICAgIHN0cnVjdCB0ZXN0X2FsaWduZWQgZm91cjsKK30gX19hdHRyaWJ1dGVfXyAo KGFsaWduZWQoNjQpKSk7CisKKworaW50IGZvbyAoKQoreworICBzdHJ1Y3QgdGVzdF9iaWdfaG9s ZSB2YXI7CisgIHJldHVybiB2YXIuZm91ci5pbnRlcm5hbDE7Cit9CisKKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlciAibW92bFx0XFxcJDAsIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAibW92bFx0XFxcJDE2LCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgInJlcCBzdG9zcSIgfSB9ICovCisKKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctNC5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctNC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWFkNjAyNDNhYTRjCi0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctNC5jCkBAIC0w LDAgKzEsMjggQEAKKy8qIFZlcmlmeSBwYXR0ZXJuIGluaXRpYWxpemF0aW9uIGZvciBuZXN0ZWQg c3RydWN0dXJlIHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcyB3aXRoCisgICBwYWRkaW5nLiAgKi8K Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRv LXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKworc3RydWN0IHRlc3Rf YWxpZ25lZCB7CisgICAgICAgIHVuc2lnbmVkIGludGVybmFsMTsKKyAgICAgICAgdW5zaWduZWQg bG9uZyBsb25nIGludGVybmFsMjsKK30gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQoNjQpKSk7CisK K3N0cnVjdCB0ZXN0X2JpZ19ob2xlIHsKKyAgICAgICAgY2hhciBvbmU7CisgICAgICAgIGNoYXIg dHdvOworICAgICAgICBjaGFyIHRocmVlOworICAgICAgICAvKiA2MSBieXRlIHBhZGRpbmcgaG9s ZSBoZXJlLiAqLworICAgICAgICBzdHJ1Y3QgdGVzdF9hbGlnbmVkIGZvdXI7Cit9IF9fYXR0cmli dXRlX18gKChhbGlnbmVkKDY0KSkpOworCisKK2ludCBmb28gKCkKK3sKKyAgc3RydWN0IHRlc3Rf YmlnX2hvbGUgdmFyOworICByZXR1cm4gdmFyLmZvdXIuaW50ZXJuYWwxOworfQorCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiMHhmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVm ZWZlZmVmZSIgOCAiZXhwYW5kIiB9IH0gKi8KKworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy01LmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy01LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi5lMThiYzMwNzNlMTgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy01LmMKQEAgLTAsMCAr MSwyMiBAQAorLyogVmVyaWZ5IHplcm8gaW5pdGlhbGl6YXRpb24gZm9yIHN0cnVjdHVyZSB0eXBl IGF1dG9tYXRpYyB2YXJpYWJsZXMgd2l0aAorICAgdGFpbCBwYWRkaW5nLiAgKi8KKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0 PXplcm8iIH0gKi8KKworc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB7CisgICAgICAgIGNoYXIg Km9uZTsKKyAgICAgICAgY2hhciAqdHdvOworICAgICAgICBjaGFyICp0aHJlZTsKKyAgICAgICAg Y2hhciBmb3VyOworICAgICAgICAvKiAic2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSIgYnl0ZSBw YWRkaW5nIGhvbGUgaGVyZS4gKi8KK307CisKK2ludCBmb28gKCkKK3sKKyAgc3RydWN0IHRlc3Rf dHJhaWxpbmdfaG9sZSB2YXI7CisgIHJldHVybiB2YXIuZm91cjsKK30KKworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJtb3ZxXHRcXFwkMCwiIDQgfSB9ICovCisKKwpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmct Ni5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctNi5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzM4YTM0MGVmYjYxCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0 LXBhZGRpbmctNi5jCkBAIC0wLDAgKzEsMjIgQEAKKy8qIFZlcmlmeSBwYXR0ZXJuIGluaXRpYWxp emF0aW9uIGZvciBzdHJ1Y3R1cmUgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzIHdpdGgKKyAgIHRh aWwgcGFkZGluZy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25z ICItZnRyaXZpYWwtYXV0by12YXItaW5pdD1wYXR0ZXJuIC1mZHVtcC1ydGwtZXhwYW5kIiB9ICov CisKK3N0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgeworICAgICAgICBjaGFyICpvbmU7CisgICAg ICAgIGNoYXIgKnR3bzsKKyAgICAgICAgY2hhciAqdGhyZWU7CisgICAgICAgIGNoYXIgZm91cjsK KyAgICAgICAgLyogInNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEiIGJ5dGUgcGFkZGluZyBob2xl IGhlcmUuICovCit9OworCitpbnQgZm9vICgpCit7CisgIHN0cnVjdCB0ZXN0X3RyYWlsaW5nX2hv bGUgdmFyOworICByZXR1cm4gdmFyLmZvdXI7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0 bC1kdW1wLXRpbWVzICIweGZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlIiAyICJleHBh bmQiIH0gfSAqLworCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L2F1dG8taW5pdC1wYWRkaW5nLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1 dG8taW5pdC1wYWRkaW5nLTcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLmI1YWJmZmIwZmM2NgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTcuYwpAQCAtMCwwICsxLDIyIEBACisvKiBWZXJp ZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3Igc3RydWN0dXJlIHR5cGUgYXV0b21hdGljIHZhcmlh YmxlcyB3aXRoCisgICBwYWRkaW5nIGFuZCBoYXMgZXhwbGljaXQgaW5pdGlhbGl6YXRpb24uICAq LworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1 dG8tdmFyLWluaXQ9emVybyIgfSAqLworCitzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHsKKyAg ICAgICAgaW50IG9uZTsKKyAgICAgICAgaW50IHR3bzsKKyAgICAgICAgaW50IHRocmVlOworICAg ICAgICBjaGFyIGZvdXI7CisgICAgICAgIC8qICJzaXplb2YodW5zaWduZWQgbG9uZykgLSAxIiBi eXRlIHBhZGRpbmcgaG9sZSBoZXJlLiAqLworfTsKKworaW50IGZvbyAoKQoreworICBzdHJ1Y3Qg dGVzdF90cmFpbGluZ19ob2xlIHZhciA9IHsub25lID0gMSwudHdvID0gMiwgLmZvdXIgPSAnYyd9 OworICByZXR1cm4gdmFyLmZvdXI7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyAibW92cVx0XFxcJDAsIiAyIH0gfSAqLworCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTguYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTguYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY2NTkxY2ZmNDQ4OAotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTguYwpAQCAt MCwwICsxLDIyIEBACisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3Igc3RydWN0 dXJlIHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcyB3aXRoCisgICBwYWRkaW5nIGFuZCBoYXMgZXhw bGljaXQgaW5pdGlhbGl6YXRpb24uICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsg ZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiIgfSAqLworCitzdHJ1 Y3QgdGVzdF90cmFpbGluZ19ob2xlIHsKKyAgICAgICAgaW50IG9uZTsKKyAgICAgICAgaW50IHR3 bzsKKyAgICAgICAgaW50IHRocmVlOworICAgICAgICBjaGFyIGZvdXI7CisgICAgICAgIC8qICJz aXplb2YodW5zaWduZWQgbG9uZykgLSAxIiBieXRlIHBhZGRpbmcgaG9sZSBoZXJlLiAqLworfTsK KworaW50IGZvbyAoKQoreworICBzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHZhciA9IHsub25l ID0gMSwudHdvID0gMiwgLmZvdXIgPSAnYyd9OworICByZXR1cm4gdmFyLmZvdXI7Cit9CisKKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAibW92cVx0XFxcJDAsIiAyIH0gfSAq LworCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5p dC1wYWRkaW5nLTkuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1w YWRkaW5nLTkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQwZmNj YWRmOTIwZAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L2F1dG8taW5pdC1wYWRkaW5nLTkuYwpAQCAtMCwwICsxLDIzIEBACisvKiBWZXJpZnkgemVybyBp bml0aWFsaXphdGlvbiBmb3IgYXJyYXkgdHlwZSB3aXRoIHN0cnVjdHVyZSBlbGVtZW50IHdpdGgK KyAgIHBhZGRpbmcuICAqLyAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlv bnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworc3RydWN0IHRlc3RfdHJh aWxpbmdfaG9sZSB7CisgICAgICAgIGludCBvbmU7CisgICAgICAgIGludCB0d287CisgICAgICAg IGludCB0aHJlZTsKKyAgICAgICAgY2hhciBmb3VyOworICAgICAgICAvKiAic2l6ZW9mKHVuc2ln bmVkIGxvbmcpIC0gMSIgYnl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8KK307CisKKworaW50IGZv byAoKQoreworICBzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHZhclsxMF07IAorICByZXR1cm4g dmFyWzJdLmZvdXI7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92bFx0 XFxcJDAsIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92bFx0XFxc JDIwLCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInJlcCBzdG9zcSIg fSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdHJlZS1jZmcuYyBiL2djYy90cmVlLWNmZy5jCmluZGV4 IGM4YjBmN2IzM2UxMi4uZTRkMTg0MTRhNzNiIDEwMDY0NAotLS0gYS9nY2MvdHJlZS1jZmcuYwor KysgYi9nY2MvdHJlZS1jZmcuYwpAQCAtMzQ1NywzMSArMzQ1Nyw5MiBAQCB2ZXJpZnlfZ2ltcGxl X2NhbGwgKGdjYWxsICpzdG10KQogCX0KICAgICB9CiAKKyAgLyogRm9yIGEgY2FsbCB0byAuREVG RVJSRURfSU5JVCwgd2Ugc2hvdWxkIGd1YXJhbnRlZSB0aGF0IHRoZSAxc3QgYW5kIHRoZSAzcmQK KyAgICAgYXJndW1lbnQgaXMgY29uc2lzdGVudCwgaS5lLjoKKyAgICAgMXN0IGFyZ3VtZW50OiBT SVpFIG9mIHRoZSBERUNMOworICAgICAzcmQgYXJndW1lbnQ6IElTX1ZMQSwgMCBOTywgMSBZRVM7 CisKKyAgICAgaWYgSVNfVkxBIGlzIGZhbHNlLCB0aGUgMXN0IGFyZ3VtZW50IHNob3VsZCBiZSBh IGNvbnN0YW50IGFuZCB0aGUgc2FtZSBhcworICAgICB0aGUgc2l6ZSBvZiB0aGUgTEhTLiAgKi8K KyAgaWYgKGdpbXBsZV9jYWxsX2ludGVybmFsX3AgKHN0bXQsIElGTl9ERUZFUlJFRF9JTklUKSkK KyAgICB7CisgICAgICB0cmVlIHNpemVfb2ZfYXJnMCA9IGdpbXBsZV9jYWxsX2FyZyAoc3RtdCwg MCk7CisgICAgICB0cmVlIHNpemVfb2ZfbGhzID0gVFlQRV9TSVpFX1VOSVQgKFRSRUVfVFlQRSAo bGhzKSk7CisgICAgICB0cmVlIGlzX3ZsYV9ub2RlID0gZ2ltcGxlX2NhbGxfYXJnIChzdG10LCAy KTsKKyAgICAgIGJvb2wgaXNfdmxhID0gKGJvb2wpIFRSRUVfSU5UX0NTVF9MT1cgKGlzX3ZsYV9u b2RlKTsKKworICAgICAgaWYgKFRSRUVfQ09ERSAobGhzKSA9PSBTU0FfTkFNRSkKKyAgICAgICBs aHMgPSBTU0FfTkFNRV9WQVIgKGxocyk7CisKKyAgICAgIHBvbHlfdWludDY0IHNpemVfZnJvbV9h cmcwLCBzaXplX2Zyb21fbGhzOworICAgICAgYm9vbCBpc19jb25zdGFudF9zaXplX2FyZzAgPSBw b2x5X2ludF90cmVlX3AgKHNpemVfb2ZfYXJnMCwKKwkJCQkJCSAgICAmc2l6ZV9mcm9tX2FyZzAp OworICAgICAgYm9vbCBpc19jb25zdGFudF9zaXplX2xocyA9IHBvbHlfaW50X3RyZWVfcCAoc2l6 ZV9vZl9saHMsCisJCQkJCQkgICAmc2l6ZV9mcm9tX2xocyk7CisgICAgICBpZiAoIWlzX3ZsYSkK Kwl7CisJICBpZiAoIWlzX2NvbnN0YW50X3NpemVfYXJnMCkKKwkgICAgeworCSAgICAgIGVycm9y ICgiJTxERUZGRVJFRF9JTklUJT4gY2FsbHMgZm9yIG5vbi1WTEEgc2hvdWxkIGhhdmUgIgorCQkg ICAgICJjb25zdGFudCBzaXplIGZvciB0aGUgZmlyc3QgYXJndW1lbnQiKTsKKwkgICAgICByZXR1 cm4gdHJ1ZTsKKwkgICAgfQorCSAgZWxzZSBpZiAoIWlzX2NvbnN0YW50X3NpemVfbGhzKQorCSAg ICB7CisJICAgICAgZXJyb3IgKCIlPERFRkZFUkVEX0lOSVQlPiBjYWxscyBmb3Igbm9uLVZMQSBz aG91bGQgaGF2ZSAiCisJCSAgICAgImNvbnN0YW50IHNpemUgZm9yIHRoZSBMSFMgIik7CisJICAg ICAgcmV0dXJuIHRydWU7CisJICAgIH0KKwkgIGVsc2UgaWYgKG1heWJlX25lIChzaXplX2Zyb21f YXJnMCwgc2l6ZV9mcm9tX2xocykpCisJICAgIHsKKwkgICAgICBlcnJvciAoIiU8REVGRkVSRURf SU5JVCU+IGNhbGxzIGZvciBub24tVkxBIHNob3VsZCBoYXZlIHNhbWUgIgorCQkgICAgICJjb25z dGFudCBzaXplIGZvciB0aGUgZmlyc3QgYXJndW1lbnQgYW5kIExIUyIpOworCSAgICAgIHJldHVy biB0cnVlOworCSAgICB9CisJfQorICAgIH0KKworICAvKiBXZSB3aWxsIG5vdCB2ZXJpZnkgdGhl IGFyZ3VtZW50cyBmb3IgdGhlIGNhbGxzIHRvIC5ERUZFUlJFRF9JTklULgorICAgICBTdWNoIGNh bGwgaXMgbm90IGEgcmVhbCBjYWxsLCBqdXN0IGEgcGxhY2Vob2xkZXIgZm9yIGEgbGF0ZXIKKyAg ICAgaW5pdGlhbGl6YXRpb24gZHVyaW5nIGV4cGFuZCBwaGFzZS4KKyAgICAgVGhpcyBpcyBtYWlu bHkgdG8gYXZvaWQgYXNzZXJ0aW9uIGZhaWx1cmUgZm9yIHRoZSBmb2xsb3dpbmcKKyAgICAgY2Fz ZToKKworICAgICB1bmlfdmFyID0gLkRFRkVSUkVEX0lOSVQgKHZhcl9zaXplLCBJTklUX1RZUEUs IGlzX3ZsYSk7CisgICAgIGZvbyAoJnVuaV92YXIpOworCisgICAgIGluIHRoZSBhYm92ZSwgdGhl IHVuaW5pdGlhbGl6ZWQgYXV0byB2YXJpYWJsZSAidW5pX3ZhciIgaXMKKyAgICAgYWRkcmVzc2Fi bGUsIHRoZXJlZm9yZSBzaG91bGQgbm90IGJlIGluIHJlZ2lzdGVycywgcmVzdWx0aW5nCisgICAg IHRoZSBhc3NlcnRpb24gZmFpbHVyZSBpbiB0aGUgZm9sbG93aW5nIGFyZ3VtZW50IHZlcmlmaWNh dGlvbi4gICovCisgIGlmIChnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChzdG10LCBJRk5fREVGRVJS RURfSU5JVCkpCisgICAgcmV0dXJuIGZhbHNlOworCiAgIC8qID8/PyAgVGhlIEMgZnJvbnRlbmQg cGFzc2VzIHVucHJvbW90ZWQgYXJndW1lbnRzIGluIGNhc2UgaXQKICAgICAgZGlkbid0IHNlZSBh IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGJlZm9yZSB0aGUgY2FsbC4gIFNvIGZvciBub3cKICAgICAg bGVhdmUgdGhlIGNhbGwgYXJndW1lbnRzIG1vc3RseSB1bnZlcmlmaWVkLiAgT25jZSB3ZSBnaW1w bGlmeQogICAgICB1bml0LWF0LWEtdGltZSB3ZSBoYXZlIGEgY2hhbmNlIHRvIGZpeCB0aGlzLiAg Ki8KIAotICBmb3IgKGkgPSAwOyBpIDwgZ2ltcGxlX2NhbGxfbnVtX2FyZ3MgKHN0bXQpOyArK2kp Ci0gICAgewotICAgICAgdHJlZSBhcmcgPSBnaW1wbGVfY2FsbF9hcmcgKHN0bXQsIGkpOwotICAg ICAgaWYgKChpc19naW1wbGVfcmVnX3R5cGUgKFRSRUVfVFlQRSAoYXJnKSkKLQkgICAmJiAhaXNf Z2ltcGxlX3ZhbCAoYXJnKSkKLQkgIHx8ICghaXNfZ2ltcGxlX3JlZ190eXBlIChUUkVFX1RZUEUg KGFyZykpCi0JICAgICAgJiYgIWlzX2dpbXBsZV9sdmFsdWUgKGFyZykpKQotCXsKLQkgIGVycm9y ICgiaW52YWxpZCBhcmd1bWVudCB0byBnaW1wbGUgY2FsbCIpOwotCSAgZGVidWdfZ2VuZXJpY19l eHByIChhcmcpOwotCSAgcmV0dXJuIHRydWU7Ci0JfQotICAgICAgaWYgKCFpc19naW1wbGVfcmVn IChhcmcpKQotCXsKLQkgIGlmIChUUkVFX0NPREUgKGFyZykgPT0gV0lUSF9TSVpFX0VYUFIpCi0J ICAgIGFyZyA9IFRSRUVfT1BFUkFORCAoYXJnLCAwKTsKLQkgIGlmICh2ZXJpZnlfdHlwZXNfaW5f Z2ltcGxlX3JlZmVyZW5jZSAoYXJnLCBmYWxzZSkpCisgIGVsc2UKKyAgICBmb3IgKGkgPSAwOyBp IDwgZ2ltcGxlX2NhbGxfbnVtX2FyZ3MgKHN0bXQpOyArK2kpCisgICAgICB7CisJdHJlZSBhcmcg PSBnaW1wbGVfY2FsbF9hcmcgKHN0bXQsIGkpOworCWlmICgoaXNfZ2ltcGxlX3JlZ190eXBlIChU UkVFX1RZUEUgKGFyZykpCisJICAgICAmJiAhaXNfZ2ltcGxlX3ZhbCAoYXJnKSkKKwkgICAgfHwg KCFpc19naW1wbGVfcmVnX3R5cGUgKFRSRUVfVFlQRSAoYXJnKSkKKwkJJiYgIWlzX2dpbXBsZV9s dmFsdWUgKGFyZykpKQorCSAgeworCSAgICBlcnJvciAoImludmFsaWQgYXJndW1lbnQgdG8gZ2lt cGxlIGNhbGwiKTsKKwkgICAgZGVidWdfZ2VuZXJpY19leHByIChhcmcpOwogCSAgICByZXR1cm4g dHJ1ZTsKLQl9Ci0gICAgfQorCSAgfQorCWlmICghaXNfZ2ltcGxlX3JlZyAoYXJnKSkKKwkgIHsK KwkgICAgaWYgKFRSRUVfQ09ERSAoYXJnKSA9PSBXSVRIX1NJWkVfRVhQUikKKwkgICAgICBhcmcg PSBUUkVFX09QRVJBTkQgKGFyZywgMCk7CisJICAgIGlmICh2ZXJpZnlfdHlwZXNfaW5fZ2ltcGxl X3JlZmVyZW5jZSAoYXJnLCBmYWxzZSkpCisJICAgICAgcmV0dXJuIHRydWU7CisJICB9CisgICAg ICB9CiAKICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3JhLmMgYi9n Y2MvdHJlZS1zcmEuYwppbmRleCBjMDVkMjJmM2U4ZjEuLmQxMjgwZTVmODg0OCAxMDA2NDQKLS0t IGEvZ2NjL3RyZWUtc3JhLmMKKysrIGIvZ2NjL3RyZWUtc3JhLmMKQEAgLTM4NCw2ICszODQsMTMg QEAgc3RhdGljIHN0cnVjdAogCiAgIC8qIE51bWJiZXIgb2YgY29tcG9uZW50cyBjcmVhdGVkIHdo ZW4gc3BsaXR0aW5nIGFnZ3JlZ2F0ZSBwYXJhbWV0ZXJzLiAgKi8KICAgaW50IHBhcmFtX3JlZHVj dGlvbnNfY3JlYXRlZDsKKworICAvKiBOdW1iZXIgb2YgZGVmZXJyZWRfaW5pdCBjYWxscyB0aGF0 IGFyZSBtb2RpZmllZC4gICovCisgIGludCBkZWZlcnJlZF9pbml0OworCisgIC8qIE51bWJlciBv ZiBkZWZlcnJlZF9pbml0IGNhbGxzIHRoYXQgYXJlIGNyZWF0ZWQgYnkKKyAgICAgZ2VuZXJhdGVf c3VidHJlZV9kZWZlcnJlZF9pbml0LiAgKi8KKyAgaW50IHN1YnRyZWVfZGVmZXJyZWRfaW5pdDsK IH0gc3JhX3N0YXRzOwogCiBzdGF0aWMgdm9pZApAQCAtNDA5Niw2ICs0MTAzLDg2IEBAIGdldF9y ZXBsX2RlZmF1bHRfZGVmX3NzYV9uYW1lIChzdHJ1Y3QgYWNjZXNzICpyYWNjLCB0cmVlIHJlZ190 eXBlKQogICByZXR1cm4gZ2V0X29yX2NyZWF0ZV9zc2FfZGVmYXVsdF9kZWYgKGNmdW4sIHJhY2Mt PnJlcGxhY2VtZW50X2RlY2wpOwogfQogCisKKy8qIEdlbmVyYXRlIHN0YXRlbWVudHMgdG8gY2Fs bCAuREVGRVJSRURfSU5JVCB0byBpbml0aWFsaXplIHNjYWxhciByZXBsYWNlbWVudHMKKyAgIG9m IGFjY2Vzc2VzIHdpdGhpbiBhIHN1YnRyZWUgQUNDRVNTOyBhbGwgaXRzIGNoaWxkcmVuLCBzaWJs aW5ncyBhbmQgdGhlaXIKKyAgIGNoaWxkcmVuIGFyZSB0byBiZSBwcm9jZXNzZWQuCisgICBHU0kg aXMgYSBzdGF0ZW1lbnQgaXRlcmF0b3IgdXNlZCB0byBwbGFjZSB0aGUgbmV3IHN0YXRlbWVudHMu ICAqLworc3RhdGljIHZvaWQKK2dlbmVyYXRlX3N1YnRyZWVfZGVmZXJyZWRfaW5pdCAoc3RydWN0 IGFjY2VzcyAqYWNjZXNzLAorCQkJCXRyZWUgaW5pdF90eXBlLAorCQkJCXRyZWUgaXNfdmxhLAor CQkJCWdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2ksCisJCQkJbG9jYXRpb25fdCBsb2MpCit7Cisg IGRvCisgICAgeworICAgICAgaWYgKGFjY2Vzcy0+Z3JwX3RvX2JlX3JlcGxhY2VkKQorCXsKKwkg IHRyZWUgcmVwbCA9IGdldF9hY2Nlc3NfcmVwbGFjZW1lbnQgKGFjY2Vzcyk7CisJICBnaW1wbGUg KmNhbGwKKwkgICAgPSBnaW1wbGVfYnVpbGRfY2FsbF9pbnRlcm5hbCAoSUZOX0RFRkVSUkVEX0lO SVQsIDMsCisJCQkJCSAgVFlQRV9TSVpFX1VOSVQgKFRSRUVfVFlQRSAocmVwbCkpLAorCQkJCQkg IGluaXRfdHlwZSwgaXNfdmxhKTsKKwkgIGdpbXBsZV9jYWxsX3NldF9saHMgKGNhbGwsIHJlcGwp OworCSAgZ3NpX2luc2VydF9iZWZvcmUgKGdzaSwgY2FsbCwgR1NJX1NBTUVfU1RNVCk7CisJICB1 cGRhdGVfc3RtdCAoY2FsbCk7CisJICBnaW1wbGVfc2V0X2xvY2F0aW9uIChjYWxsLCBsb2MpOwor CSAgc3JhX3N0YXRzLnN1YnRyZWVfZGVmZXJyZWRfaW5pdCsrOworCX0KKyAgICAgIGlmIChhY2Nl c3MtPmZpcnN0X2NoaWxkKQorCWdlbmVyYXRlX3N1YnRyZWVfZGVmZXJyZWRfaW5pdCAoYWNjZXNz LT5maXJzdF9jaGlsZCwgaW5pdF90eXBlLAorCQkJCQlpc192bGEsIGdzaSwgbG9jKTsKKworICAg ICAgYWNjZXNzID0gYWNjZXNzIC0+bmV4dF9zaWJsaW5nOworICAgIH0KKyAgd2hpbGUgKGFjY2Vz cyk7Cit9CisKKy8qIEZvciBhIGNhbGwgdG8gLkRFRkVSUkVEX0lOSVQ6CisgICB2YXIgPSAuREVG RVJSRURfSU5JVCAoc2l6ZV9vZl92YXIsIGluaXRfdHlwZSwgaXNfdmxhKTsKKyAgIGV4YW1pbmUg dGhlIExIUyB2YXJpYWJsZSBWQVIgYW5kIHJlcGxhY2UgaXQgd2l0aCBhIHNjYWxhciByZXBsYWNl bWVudCBpZgorICAgdGhlcmUgaXMgb25lLCBhbHNvIHJlcGxhY2UgdGhlIFJIUyBjYWxsIHRvIGEg Y2FsbCB0byAuREVGRVJSRURfSU5JVCBvZgorICAgdGhlIGNvcnJlc3BvbmRpbmcgc2NhbGFyIHJl bGFjZW1lbnQgdmFyaWFibGUuICBFeGFtaW5lIHRoZSBzdWJ0cmVlIGFuZAorICAgZG8gdGhlIHNj YWxhciByZXBsYWNlbWVudHMgaW4gdGhlIHN1YnRyZWUgdG9vLiAgU1RNVCBpcyB0aGUgY2FsbCwg R1NJIGlzCisgICB0aGUgc3RhdG1lbnQgaXRlcmF0b3IgdG8gcGxhY2UgbmV3bHkgY3JlYXRlZCBz dGF0ZW1lbnQuICAqLworCitzdGF0aWMgZW51bSBhc3NpZ25tZW50X21vZF9yZXN1bHQKK3NyYV9t b2RpZnlfZGVmZXJyZWRfaW5pdCAoZ2ltcGxlICpzdG10LCBnaW1wbGVfc3RtdF9pdGVyYXRvciAq Z3NpKQoreworICB0cmVlIGxocyA9IGdpbXBsZV9jYWxsX2xocyAoc3RtdCk7CisgIHRyZWUgaW5p dF90eXBlID0gZ2ltcGxlX2NhbGxfYXJnIChzdG10LCAxKTsKKyAgdHJlZSBpc192bGEgPSBnaW1w bGVfY2FsbF9hcmcgKHN0bXQsIDIpOworCisgIHN0cnVjdCBhY2Nlc3MgKmxoc19hY2Nlc3MgPSBn ZXRfYWNjZXNzX2Zvcl9leHByIChsaHMpOworICBpZiAoIWxoc19hY2Nlc3MpCisgICAgcmV0dXJu IFNSQV9BTV9OT05FOworCisgIGxvY2F0aW9uX3QgbG9jID0gZ2ltcGxlX2xvY2F0aW9uIChzdG10 KTsKKworICBpZiAobGhzX2FjY2Vzcy0+Z3JwX3RvX2JlX3JlcGxhY2VkKQorICAgIHsKKyAgICAg IHRyZWUgbGhzX3JlcGwgPSBnZXRfYWNjZXNzX3JlcGxhY2VtZW50IChsaHNfYWNjZXNzKTsKKyAg ICAgIGdpbXBsZV9jYWxsX3NldF9saHMgKHN0bXQsIGxoc19yZXBsKTsKKyAgICAgIHRyZWUgYXJn MF9yZXBsID0gVFlQRV9TSVpFX1VOSVQgKFRSRUVfVFlQRSAobGhzX3JlcGwpKTsKKyAgICAgIGdp bXBsZV9jYWxsX3NldF9hcmcgKHN0bXQsIDAsIGFyZzBfcmVwbCk7CisgICAgICBzcmFfc3RhdHMu ZGVmZXJyZWRfaW5pdCsrOworICAgIH0KKworICBpZiAobGhzX2FjY2Vzcy0+Zmlyc3RfY2hpbGQp CisgICAgZ2VuZXJhdGVfc3VidHJlZV9kZWZlcnJlZF9pbml0IChsaHNfYWNjZXNzLT5maXJzdF9j aGlsZCwKKwkJCQkgICAgaW5pdF90eXBlLCBpc192bGEsIGdzaSwgbG9jKTsKKyAgaWYgKGxoc19h Y2Nlc3MtPmdycF9jb3ZlcmVkKQorICAgIHsKKyAgICAgIHVubGlua19zdG10X3ZkZWYgKHN0bXQp OworICAgICAgZ3NpX3JlbW92ZSAoZ3NpLCB0cnVlKTsKKyAgICAgIHJlbGVhc2VfZGVmcyAoc3Rt dCk7CisgICAgICByZXR1cm4gU1JBX0FNX1JFTU9WRUQ7CisgICAgfQorCisgIHJldHVybiBTUkFf QU1fTU9ESUZJRUQ7Cit9CisKIC8qIEV4YW1pbmUgYm90aCBzaWRlcyBvZiB0aGUgYXNzaWdubWVu dCBzdGF0ZW1lbnQgcG9pbnRlZCB0byBieSBTVE1ULCByZXBsYWNlCiAgICB0aGVtIHdpdGggYSBz Y2FsYXJlIHJlcGxhY2VtZW50IGlmIHRoZXJlIGlzIG9uZSBhbmQgZ2VuZXJhdGUgY29weWluZyBv ZgogICAgcmVwbGFjZW1lbnRzIGlmIHNjYWxhcml6ZWQgYWdncmVnYXRlcyBoYXZlIGJlZW4gdXNl ZCBpbiB0aGUgYXNzaWdubWVudC4gIEdTSQpAQCAtNDQ2MCwxNyArNDU0NywyNyBAQCBzcmFfbW9k aWZ5X2Z1bmN0aW9uX2JvZHkgKHZvaWQpCiAJICAgICAgYnJlYWs7CiAKIAkgICAgY2FzZSBHSU1Q TEVfQ0FMTDoKLQkgICAgICAvKiBPcGVyYW5kcyBtdXN0IGJlIHByb2Nlc3NlZCBiZWZvcmUgdGhl IGxocy4gICovCi0JICAgICAgZm9yIChpID0gMDsgaSA8IGdpbXBsZV9jYWxsX251bV9hcmdzIChz dG10KTsgaSsrKQorCSAgICAgIC8qIEhhbmRsZSBjYWxscyB0byAuREVGRVJSRURfSU5JVCBzcGVj aWFsbHkuICAqLworCSAgICAgIGlmIChnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChzdG10LCBJRk5f REVGRVJSRURfSU5JVCkpCiAJCXsKLQkJICB0ID0gZ2ltcGxlX2NhbGxfYXJnX3B0ciAoc3RtdCwg aSk7Ci0JCSAgbW9kaWZpZWQgfD0gc3JhX21vZGlmeV9leHByICh0LCAmZ3NpLCBmYWxzZSk7CisJ CSAgYXNzaWduX3Jlc3VsdCA9IHNyYV9tb2RpZnlfZGVmZXJyZWRfaW5pdCAoc3RtdCwgJmdzaSk7 CisJCSAgbW9kaWZpZWQgfD0gYXNzaWduX3Jlc3VsdCA9PSBTUkFfQU1fTU9ESUZJRUQ7CisJCSAg ZGVsZXRlZCA9IGFzc2lnbl9yZXN1bHQgPT0gU1JBX0FNX1JFTU9WRUQ7CiAJCX0KLQotCSAgICAg IGlmIChnaW1wbGVfY2FsbF9saHMgKHN0bXQpKQorCSAgICAgIGVsc2UKIAkJewotCQkgIHQgPSBn aW1wbGVfY2FsbF9saHNfcHRyIChzdG10KTsKLQkJICBtb2RpZmllZCB8PSBzcmFfbW9kaWZ5X2V4 cHIgKHQsICZnc2ksIHRydWUpOworCQkgIC8qIE9wZXJhbmRzIG11c3QgYmUgcHJvY2Vzc2VkIGJl Zm9yZSB0aGUgbGhzLiAgKi8KKwkJICBmb3IgKGkgPSAwOyBpIDwgZ2ltcGxlX2NhbGxfbnVtX2Fy Z3MgKHN0bXQpOyBpKyspCisJCSAgICB7CisJCSAgICAgIHQgPSBnaW1wbGVfY2FsbF9hcmdfcHRy IChzdG10LCBpKTsKKwkJICAgICAgbW9kaWZpZWQgfD0gc3JhX21vZGlmeV9leHByICh0LCAmZ3Np LCBmYWxzZSk7CisJCSAgICB9CisKKwkgICAgICAJICBpZiAoZ2ltcGxlX2NhbGxfbGhzIChzdG10 KSkKKwkJICAgIHsKKwkJICAgICAgdCA9IGdpbXBsZV9jYWxsX2xoc19wdHIgKHN0bXQpOworCQkg ICAgICBtb2RpZmllZCB8PSBzcmFfbW9kaWZ5X2V4cHIgKHQsICZnc2ksIHRydWUpOworCQkgICAg fQogCQl9CiAJICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL2djYy90cmVlLXNzYS1zdHJ1Y3Rh bGlhcy5jIGIvZ2NjL3RyZWUtc3NhLXN0cnVjdGFsaWFzLmMKaW5kZXggNzE4OTRiMzhmZjkyLi40 ZThlMDE5NDc1M2QgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jCisrKyBi L2djYy90cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jCkBAIC00OTA3LDYgKzQ5MDcsOSBAQCBmaW5kX2Z1 bmNfYWxpYXNlc19mb3JfY2FsbCAoc3RydWN0IGZ1bmN0aW9uICpmbiwgZ2NhbGwgKnQpCiAgICAg ICAmJiBmaW5kX2Z1bmNfYWxpYXNlc19mb3JfYnVpbHRpbl9jYWxsIChmbiwgdCkpCiAgICAgcmV0 dXJuOwogCisgIGlmIChnaW1wbGVfY2FsbF9pbnRlcm5hbF9wICh0LCBJRk5fREVGRVJSRURfSU5J VCkpCisgICAgcmV0dXJuOworCiAgIGZpID0gZ2V0X2ZpX2Zvcl9jYWxsZWUgKHQpOwogICBpZiAo IWluX2lwYV9tb2RlCiAgICAgICB8fCAoZmktPmRlY2wgJiYgZm5kZWNsICYmICFmaS0+aXNfZm5f aW5mbykpCmRpZmYgLS1naXQgYS9nY2MvdHJlZS1zc2EtdW5pbml0LmMgYi9nY2MvdHJlZS1zc2Et dW5pbml0LmMKaW5kZXggMjRhYzAzMWE2OTNjLi40NDViNzM5YmNkODggMTAwNjQ0Ci0tLSBhL2dj Yy90cmVlLXNzYS11bmluaXQuYworKysgYi9nY2MvdHJlZS1zc2EtdW5pbml0LmMKQEAgLTE1Miw2 ICsxNTIsNDIgQEAgd2Fybl91bmluaXQgKGVudW0gb3B0X2NvZGUgd2MsIHRyZWUgdCwgdHJlZSBl eHByLCB0cmVlIHZhciwKICAgaWYgKGlzX2dpbXBsZV9hc3NpZ24gKGNvbnRleHQpCiAgICAgICAm JiBnaW1wbGVfYXNzaWduX3Joc19jb2RlIChjb250ZXh0KSA9PSBDT01QTEVYX0VYUFIpCiAgICAg cmV0dXJuOworCisgIC8qIElnbm9yZSBSRUFMUEFSVF9FWFBSIG9yIElNQUdQQVJUX0VYUFIgaWYg aXRzIG9wZXJhbmQgaXMgYSBjYWxsIHRvCisgICAgIC5ERUZFUlJFRF9JTklULiAgVGhpcyBpcyBm b3IgaGFuZGxpbmcgdGhlIGZvbGxvd2luZyBjYXNlIGNvcnJlY3RseToKKworICAxIHR5cGVkZWYg X0NvbXBsZXggZmxvYXQgQzsKKyAgMiBDIGZvbyAoaW50IGNvbmQpCisgIDMgeworICA0ICAgQyBm OworICA1ICAgX19pbWFnX18gZiA9IDA7CisgIDYgICBpZiAoY29uZCkKKyAgNyAgICAgeworICA4 ICAgICAgIF9fcmVhbF9fIGYgPSAxOworICA5ICAgICAgIHJldHVybiBmOworIDEwICAgICB9Cisg MTEgICByZXR1cm4gZjsKKyAxMiB9CisKKyAgICB3aXRoIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0 LCBjb21waWxlciB3aWxsIGluc2VydCB0aGUgZm9sbG93aW5nCisgICAgYXJ0aWZpY2lhbCBpbml0 aWFsaXphdGlvbiBhdCBsaW5lIDQ6CisgIGYgPSAuREVGRVJSRURfSU5JVCAoZiwgMik7CisgIF8x ID0gUkVBTFBBUlRfRVhQUiA8Zj47CisKKyAgICB3aXRob3V0IHRoZSBmb2xsb3dpbmcgc3BlY2lh bCBoYW5kbGluZywgXzEgPSBSRUFMUEFSVF9FWFBSIDxmPiB3aWxsCisgICAgYmUgdHJlYXRlZCBh cyB0aGUgdW5pbml0aWFsaXplZCB1c2UgcG9pbnQsIHdoaWNoIGlzIGluY29ycmVjdC4gKHRoZQor ICAgIHJlYWwgdW5pbml0aWFsaXplZCB1c2UgcG9pbnQgaXMgYXQgbGluZSAxMSkuICAqLworICBp ZiAoaXNfZ2ltcGxlX2Fzc2lnbiAoY29udGV4dCkKKyAgICAgICYmIChnaW1wbGVfYXNzaWduX3Jo c19jb2RlIChjb250ZXh0KSA9PSBSRUFMUEFSVF9FWFBSCisJICB8fCBnaW1wbGVfYXNzaWduX3Jo c19jb2RlIChjb250ZXh0KSA9PSBJTUFHUEFSVF9FWFBSKSkKKyAgICB7CisgICAgICB0cmVlIHYg PSBnaW1wbGVfYXNzaWduX3JoczEgKGNvbnRleHQpOworICAgICAgaWYgKFRSRUVfQ09ERSAoVFJF RV9PUEVSQU5EICh2LCAwKSkgPT0gU1NBX05BTUUKKwkgICYmIGdpbXBsZV9jYWxsX2ludGVybmFs X3AgKFNTQV9OQU1FX0RFRl9TVE1UIChUUkVFX09QRVJBTkQgKHYsIDApKSwKKwkJCQkgICAgIElG Tl9ERUZFUlJFRF9JTklUKSkKKwlyZXR1cm47CisgICAgfQorCiAgIGlmICghaGFzX3VuZGVmaW5l ZF92YWx1ZV9wICh0KSkKICAgICByZXR1cm47CiAKQEAgLTIyNyw2ICsyNjMsMTEgQEAgY2hlY2tf ZGVmcyAoYW9fcmVmICpyZWYsIHRyZWUgdmRlZiwgdm9pZCAqZGF0YV8pCiAgIGNoZWNrX2RlZnNf ZGF0YSAqZGF0YSA9IChjaGVja19kZWZzX2RhdGEgKilkYXRhXzsKICAgZ2ltcGxlICpkZWZfc3Rt dCA9IFNTQV9OQU1FX0RFRl9TVE1UICh2ZGVmKTsKIAorICAvKiBJZ25vcmUgdGhlIHZkZWYgaWYg dGhlIGRlZmluaXRpb24gc3RhdGVtZW50IGlzIGEgY2FsbAorICAgICB0byAuREVGRVJSRURfSU5J VCBmdW5jdGlvbi4gICovCisgIGlmIChnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChkZWZfc3RtdCwg SUZOX0RFRkVSUkVEX0lOSVQpKQorICAgIHJldHVybiBmYWxzZTsKKwogICAvKiBUaGUgQVNBTl9N QVJLIGludHJpbnNpYyBkb2Vzbid0IG1vZGlmeSB0aGUgdmFyaWFibGUuICAqLwogICBpZiAoaXNf Z2ltcGxlX2NhbGwgKGRlZl9zdG10KQogICAgICAgJiYgZ2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAo ZGVmX3N0bXQsIElGTl9BU0FOX01BUkspKQpAQCAtNjQyLDYgKzY4MywxMiBAQCB3YXJuX3VuaW5p dGlhbGl6ZWRfdmFycyAoYm9vbCB3bWF5YmVfdW5pbml0KQogCSAgc3NhX29wX2l0ZXIgb3BfaXRl cjsKIAkgIHRyZWUgdXNlOwogCisJICAvKiBUaGUgY2FsbCBpcyBhbiBhcnRpZmljaWFsIHVzZSwg d2lsbCBub3QgcHJvdmlkZSBtZWFuaW5nZnVsCisJICAgICBlcnJvciBtZXNzYWdlLiAgSWYgdGhl IHJlc3VsdCBvZiB0aGUgY2FsbCBpcyB1c2VkIHNvbWV3aGVyZQorCSAgICAgZWxzZSwgd2Ugd2Fy biB0aGVyZSBpbnN0ZWFkLiAgKi8KKwkgIGlmIChnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChzdG10 LCBJRk5fREVGRVJSRURfSU5JVCkpCisJICAgIGNvbnRpbnVlOworCiAJICBpZiAoaXNfZ2ltcGxl X2RlYnVnIChzdG10KSkKIAkgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL2djYy90cmVlLXNz YS5jIGIvZ2NjL3RyZWUtc3NhLmMKaW5kZXggNGNjNDAwZDNjMmViLi4wZmJhNDA0YmFiZTkgMTAw NjQ0Ci0tLSBhL2djYy90cmVlLXNzYS5jCisrKyBiL2djYy90cmVlLXNzYS5jCkBAIC0xMzI1LDYg KzEzMjUsNDYgQEAgc3NhX3VuZGVmaW5lZF92YWx1ZV9wICh0cmVlIHQsIGJvb2wgcGFydGlhbCkK ICAgaWYgKGdpbXBsZV9ub3BfcCAoZGVmX3N0bXQpKQogICAgIHJldHVybiB0cnVlOwogCisgIC8q IFRoZSB2YWx1ZSBpcyB1bmRlZmluZWQgaWYgdGhlIGRlZmluaXRpb24gc3RhdGVtZW50IGlzIGEg Y2FsbAorICAgICB0byAuREVGRVJSRURfSU5JVCBmdW5jdGlvbi4gICovCisgIGlmIChnaW1wbGVf Y2FsbF9pbnRlcm5hbF9wIChkZWZfc3RtdCwgSUZOX0RFRkVSUkVEX0lOSVQpKQorICAgIHJldHVy biB0cnVlOworCisgIC8qIFRoZSB2YWx1ZSBpcyBwYXJ0aWFsbHkgdW5kZWZpbmVkIGlmIHRoZSBk ZWZpbml0aW9uIHN0YXRlbWVudCBpcworICAgICBhIFJFQUxQQVJUX0VYUFIgb3IgSU1BR1BBUlRf RVhQUiBhbmQgaXRzIG9wZXJhbmQgaXMgZGVmaW5lZCBieQorICAgICB0aGUgY2FsbCB0byAuREVG RVJSRURfSU5JVCBmdW5jdGlvbi4gIFRoaXMgaXMgZm9yIGhhbmRsaW5nIHRoZQorICAgICBmb2xs b3dpbmcgY2FzZToKKworICAxIHR5cGVkZWYgX0NvbXBsZXggZmxvYXQgQzsKKyAgMiBDIGZvbyAo aW50IGNvbmQpCisgIDMgeworICA0ICAgQyBmOworICA1ICAgX19pbWFnX18gZiA9IDA7CisgIDYg ICBpZiAoY29uZCkKKyAgNyAgICAgeworICA4ICAgICAgIF9fcmVhbF9fIGYgPSAxOworICA5ICAg ICAgIHJldHVybiBmOworIDEwICAgICB9CisgMTEgICByZXR1cm4gZjsKKyAxMiB9CisKKyAgICB3 aXRoIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0LCBjb21waWxlciB3aWxsIGluc2VydCB0aGUgZm9s bG93aW5nCisgICAgYXJ0aWZpY2lhbCBpbml0aWFsaXphdGlvbjoKKyAgZiA9IC5ERUZFUlJFRF9J TklUIChmLCAyKTsKKyAgXzEgPSBSRUFMUEFSVF9FWFBSIDxmPjsKKworICAgIHdlIHNob3VsZCB0 cmVhdCB0aGUgZGVmaW5pdGlvbiBfMSA9IFJFQUxQQVJUX0VYUFIgPGY+IGFzIHVuZGVmaW5lZC4g ICovCisgIGlmIChwYXJ0aWFsICYmIGlzX2dpbXBsZV9hc3NpZ24gKGRlZl9zdG10KQorICAgICAg JiYgKGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKGRlZl9zdG10KSA9PSBSRUFMUEFSVF9FWFBSCisJ ICB8fCBnaW1wbGVfYXNzaWduX3Joc19jb2RlIChkZWZfc3RtdCkgPT0gSU1BR1BBUlRfRVhQUikp CisgICAgeworICAgICAgdHJlZSByZWFsX2ltYWdfcGFydCA9IFRSRUVfT1BFUkFORCAoZ2ltcGxl X2Fzc2lnbl9yaHMxIChkZWZfc3RtdCksIDApOworICAgICAgaWYgKFRSRUVfQ09ERSAocmVhbF9p bWFnX3BhcnQpID09IFNTQV9OQU1FCisJICYmIGdpbXBsZV9jYWxsX2ludGVybmFsX3AgKFNTQV9O QU1FX0RFRl9TVE1UIChyZWFsX2ltYWdfcGFydCksCisJCQkJICAgIElGTl9ERUZFUlJFRF9JTklU KSkKKwlyZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgLyogQ2hlY2sgaWYgdGhlIGNvbXBsZXggd2Fz IG5vdCBvbmx5IHBhcnRpYWxseSBkZWZpbmVkLiAgKi8KICAgaWYgKHBhcnRpYWwgJiYgaXNfZ2lt cGxlX2Fzc2lnbiAoZGVmX3N0bXQpCiAgICAgICAmJiBnaW1wbGVfYXNzaWduX3Joc19jb2RlIChk ZWZfc3RtdCkgPT0gQ09NUExFWF9FWFBSKQotLSAKMi4yNy4wCgo= --_004_3F8F960DFC12452090B3C03569FDF649oraclecom_--