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 6C84A3969804 for ; Tue, 27 Jul 2021 03:26:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6C84A3969804 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 16R3BkJA027676; Tue, 27 Jul 2021 03:26:06 GMT Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by mx0b-00069f02.pphosted.com with ESMTP id 3a2356gm4f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 27 Jul 2021 03:26:04 +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 16R3Apqb050463; Tue, 27 Jul 2021 03:26:03 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2104.outbound.protection.outlook.com [104.47.58.104]) by userp3030.oracle.com with ESMTP id 3a23524nfj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 27 Jul 2021 03:26:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DC8JCCp3XjBhnIIdeLjfF5O3pqLp847hxZjE03/5q4nfqU8oW925Uu6EeoGZQR/8QwI81AdMBMCcKlGYTB25mLyXPRcvYUmnsZvU0sKGH31D6kpHZE56Yvmd/2YAkBBFpcZwt9txcZNEdesNmImXYrkZLDvkOurQ2AJaSK6DncBMB4n3e743yWvpIHZQeOg+YAcYuQlD88jOVQxQpduGGLTFcOVeJvUvIV1NNhDP4sQYDrTh05NHicdOcfA1gY039QPncQL4+QMKS7XBm35i1s0BvPleuTQbXwbAlXvQovJbGte34xL8RL1VemipxyWSCBZDkdDfqFFDTV6iUjy7ew== 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=bWHSyBso5Ib1+tf3/6mBVLJLKl+IxTgRP+4EPTqYnfg=; b=RWe8Tu2EbevJf7qweO676eL2cmQJGoq0cDMzCLKSXnt6KhbFPn6iwc9xGG9THLrNyypOWwvS1xt26/OYuubQyTCsKfFVgAYTV2kW5VCObDcRSu84bjkiRjUaGH2L24Q6nkUgCDFmRDMbzsssJ/KHFRy8ihtWVBcuzz+yZ2v1uLg3xTQjgDaLl+cfVA0TJom6jkd1k3hPlUrOttN+EPy4ukmBahS2Oy9rjEmqnP79CQxfnIfevvJ0VTVfYdW3etNsjfI0qPNzkjJiGTsX5svPdFCKrSj5F9FQ4vxTYP7kQxsSHxYxkVpTFnCiq5Sjr79LpWzwIX39kehoZ7+Fv4E4ew== 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 CH0PR10MB4953.namprd10.prod.outlook.com (2603:10b6:610:de::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.25; Tue, 27 Jul 2021 03:26:00 +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; Tue, 27 Jul 2021 03:26:00 +0000 From: Qing Zhao To: Richard Biener , Martin Jambor , Jakub Jelinek CC: Kees Cook , Nick Alcock via Gcc-patches , Richard Biener Subject: [patch][version 6] add -ftrivial-auto-var-init and variable attribute "uninitialized" to gcc Thread-Topic: [patch][version 6] add -ftrivial-auto-var-init and variable attribute "uninitialized" to gcc Thread-Index: AQHXgpcfEHoSC5Qy5kmjWfXN7cdVkg== Date: Tue, 27 Jul 2021 03:26:00 +0000 Message-ID: <52E29277-1403-4755-901A-528116C43FB8@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: 5620acdd-c7db-4d93-17e5-08d950ae41aa x-ms-traffictypediagnostic: CH0PR10MB4953: 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: tYzhaVvrOS/7e4EyRPrB/0d3qLbjmu0dISGh1muui2PjZaH+Jxoy7oqK13s7Lwqu82Zbe263Yzrksk8W9PsrwBsIW1kwPekzty1Ptk1M8ixi3aWIPZ4CQqX9hDIRJ+/3gNg/DTDyCGii1h4fEfnujEbbeRTAL79loqoKWQtLFk+eejhWHDeKmZHnQ8P6Nkacs+lAC1hZabkRnVYBmmveBCWEUutQg4S+qsArUJq2W7IkdmVS6ru2dLrcZH/kdx/hN7/bkgySKopK6BcW2ZkJvpw5SEkE+wBiMtonS4pnYa1c3LJNk1zvNlQhND/zA6EWXbujvzDM+iZaahhy2tnhs5XGrnmunxfhvLRwQkfFsC0yz22o97mjSkRgi8oqMYLkbaIxJBrLvzLVKTnwb8y6/2t/zZz0v+5Lk0+y5ZbKDaclDiC2qSSWQL+ldwA0hihQ11nQqzsj5piXFzeD4sT4OkQeTDMLYvDHt3momulAl4Sg2Q9NnCqTHFMIAercmNvS55uJEdQZi1JdB6R4ApvCD9tAu1SqDi/LxdakVw6Z/khCGveEkQe3WgqtjWeVseDYhd5QZvZzcYLRf99xF6FbOtqvQaTv6DbDri8dpGYVcOLUiipLCkRcW3de9Hiw8NK9xutn1aBhkNzYT5B2uM5S0TMW1hTTeQNrLgmz2FN6LkSgPMTylZ1pQCH1jSuc0W0kJ/CU7EdZqlEiZIlFbX/vsADyDGammfSDlAU7Ct83seGzBdlER6hQOIjDT4viYL4Wv+V6o9JBFVVvt2EaE3X4YOlouT/cSYKOm9Gg5gGWIl0lMBXxLP0Gza7jbqKpVejLANIWXLZhYMlcVwZaOg1pqQsbPVeuljtONCUSskEMHzM= 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:(346002)(376002)(39860400002)(396003)(366004)(136003)(36756003)(21615005)(86362001)(186003)(8676002)(6512007)(166002)(99936003)(83380400001)(8936002)(71200400001)(122000001)(38100700002)(33656002)(4326008)(478600001)(5660300002)(6486002)(2906002)(76116006)(66946007)(66446008)(64756008)(66556008)(66476007)(66616009)(966005)(44832011)(2616005)(6506007)(110136005)(316002)(91956017)(54906003)(38070700004)(45980500001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?T7293TILWDtj4oLHVPIwckYLSbXkrhCBpae3x0bbKQbewL8X4jnCdurD9gTV?= =?us-ascii?Q?C+4AAK6sveOk8dLlHGnoBW0f9/xA8LmtX7/Q1lB+h/HQ2qNUwGrfARRg4sCx?= =?us-ascii?Q?sxT7eYCCdrecoONWQTqbsJKEfNjrotA5lFI0ShwsdHZZdAxMzxGDak+D5x+2?= =?us-ascii?Q?rJ930AhgQK8moUKfscAwBZ1dqLzp0x/hn3zFYBCPvNCflksAonM9m8+ZG2KE?= =?us-ascii?Q?Z8Ma/I0oPmyOgfAqz58hi642GBuzmDdtg0F1bVDb6kzavoJnnuzHZFP37xiW?= =?us-ascii?Q?S49Wpl9XBcrtlLtV2nRoVfz4iGcOnP+H3AwzEHkdjUFO3HbeqVSZSNJfQiMl?= =?us-ascii?Q?WNp8nmNQOOVJluVljxof/v2Hf9zZ6E0ipM9UP4wkACY/Xd8skjx/HQGg2L1/?= =?us-ascii?Q?cp+BmzEzC3YsJvdVGZ6i2U6VdYs+3INmlTkDoExUtHMSKD4o4kYipFVUcQEE?= =?us-ascii?Q?93jRzFrz/XnPR32Rahg17yafwVdii7QQV0EkrrhguFPvACQciam/24M+jNwU?= =?us-ascii?Q?Ys74ZKB4NLYogUS5B+/RFoiytiZIlH1F8jmI/WWEmwL1Cx63F5y9binq5b86?= =?us-ascii?Q?W7jv3qC/mygpR3ADwvpIiFn9KFGaRrAOAydPsKKpqdpGzMfrkHDolBaiOTzY?= =?us-ascii?Q?Y86TNwzILmFHWNabr3X5/XRVw5aPfTRL3WijlEOZ9Jn1bu0yAMk31jCtNKEn?= =?us-ascii?Q?H+RVWcjsKpjw0c6EOEj5+nkSJlPaPVG0i4soDXyro67tZIgF2MjeeQ2jWqlt?= =?us-ascii?Q?cTuN+5o5EWK4oPrn4/ohaFRm8LSsmlZchsqnaOC5Qw6mFlqdpV64AhjHhX/X?= =?us-ascii?Q?1yRkAaaqCzH4+Q6IL6KGgqfD/KI8mhrUyzXiSF46fCddKqMJyGvM4W0hgtz8?= =?us-ascii?Q?KO+t0yFSU1jg1sDrcAjLqeTmaKwp05gsC9d1Fc2dndLj+pHkZSMu+tZ/aIm+?= =?us-ascii?Q?XAMdubKYxcOEU0zK2IL+t/r2+bMWTGA1P73trtsaJCmk1UtlEx8Qd1JvtnrQ?= =?us-ascii?Q?IDVwsI6JBcsBNkqJ7vWXcf8OpFJXdqSkUnMTXltNIwKrGh01wIsHlCZqBy43?= =?us-ascii?Q?tmtR7qLia/PsRj5bSW875eGQogWje2FGRSE9FqP3l61oTdYg27Haesx62VKV?= =?us-ascii?Q?7LtGfb5ni1LqaC7MZdZLqTYxE5x+E8WMwE5EtTeSoVOvuiAMCXtcUso3ox9H?= =?us-ascii?Q?K1FxS0Z5O8f2YSh7RhtndUV3gYAJzD6ICx5uPGlukuU2BNcV3/95JyUHcy0F?= =?us-ascii?Q?4YghMLKPWmH4MuOpseHAmUpt88rF8PqjoHvZS1An0gDAYbJuUamKm8zYYJDs?= =?us-ascii?Q?/Pef3cRkck26Q6Mt09OlC02PxdLeoj3ta5bf0Dp0qKelSAkVL27G50PnzaHB?= =?us-ascii?Q?yWt5Cg9Ks5RJOjfWAcYrXehaZ5CW?= x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_004_52E2927714034755901A528116C43FB8oraclecom_" 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: 5620acdd-c7db-4d93-17e5-08d950ae41aa X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jul 2021 03:26:00.5106 (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: LWexsyb8tGawJRnWVex1KBpJ6fP7hZu6O3cBqEIcCfWe97UsktkB5YH3l3jy+lSoi1qyzMuvtDuZHvhjpAtsBw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB4953 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10057 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 malwarescore=0 suspectscore=0 phishscore=0 mlxscore=0 bulkscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2107140000 definitions=main-2107270017 X-Proofpoint-ORIG-GUID: I0Un2flhu1s5bgiuPKGJ9FgOUOrvxdTb X-Proofpoint-GUID: I0Un2flhu1s5bgiuPKGJ9FgOUOrvxdTb X-Spam-Status: No, score=-4.2 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: Tue, 27 Jul 2021 03:26:13 -0000 --_004_52E2927714034755901A528116C43FB8oraclecom_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi, This is the 6th 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 CPU2017 (running is ongoing), without any issue. (With the fix= to bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D101586). Please take a look and let me know any issue. Thanks Qing ******Compared with the 5th version, the changes are: 1. Fix two issues raised by Martin Jambor in tree-sra.c: A. Inside "scan_function", Do not set cannot_scalarize_away_bitmap for a= call to DEFERRED_INIT. B. Fix a potential issue for single-field structure. 2. Add two testing cases based on gcc/testsuite/gcc.dg/tree-ssa/sra-12.c t= o verity SRA total scalarization will not be confused by auto initializatoi= n. ******the 5th version compared 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 5 at: https://gcc.gnu.org/pipermail/gcc-patches/2021-July/575977.html ******ChangeLog is: gcc/ChangeLog: 2021-07-26 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. (scan_function): Avoid setting cannot_scalarize_away_bitmap for calls to .DEFERRED_INIT. (sra_modify_deferred_init): New function. (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-26 qing zhao * c-attribs.c (handle_uninitialized_attribute): New function. (c_common_attribute_table): Add "uninitialized" attribute. gcc/testsuite/ChangeLog: 2021-07-26 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-sra-1.c: New test. * gcc.dg/auto-init-sra-2.c: 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 6th version of the patch is: --_004_52E2927714034755901A528116C43FB8oraclecom_ Content-Type: application/octet-stream; name="0001-the-6th-version.patch" Content-Description: 0001-the-6th-version.patch Content-Disposition: attachment; filename="0001-the-6th-version.patch"; size=170515; creation-date="Tue, 27 Jul 2021 03:26:00 GMT"; modification-date="Tue, 27 Jul 2021 03:26:00 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSBhODk0YWYyMGMxNTA1Y2NhYmQ3ZGE3YWUxZTM3MTcxYzU0Yzk0MDcyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBRaW5nIFpoYW8gPHFpbmcuemhhb0BvcmFjbGUuY29tPgpEYXRl OiBUdWUsIDIwIEp1bCAyMDIxIDE5OjQzOjEzICswMDAwClN1YmplY3Q6IFtQQVRDSF0gdGhlIDZ0 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 dC1zcmEtMS5jICAgICAgICB8ICAyNCArKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0 LXNyYS0yLmMgICAgICAgIHwgIDI0ICsrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQt dW5pbml0LTEuYyAgICAgfCAgMzAgKysrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQt dW5pbml0LTExLmMgICAgfCAgNDIgKysrKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0 LXVuaW5pdC0xMi5jICAgIHwgIDEyICsKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11 bmluaXQtMTMuYyAgICB8ICAxMCArCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5p bml0LTE0LmMgICAgfCAgMjAgKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmlu aXQtMTUuYyAgICB8ICAyNiArKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5p dC0xNi5jICAgIHwgIDIzICsrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0 LTE3LmMgICAgfCAgMTUgKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQt MTguYyAgICB8ICAyNCArKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0x OS5jICAgIHwgIDI2ICsrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTIu YyAgICAgfCAgNTIgKysrKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0y MC5jICAgIHwgIDE4ICsrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTIx LmMgICAgfCAgMzMgKysrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTIy LmMgICAgfCAgNjkgKysrKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQt MjMuYyAgICB8ICAyNyArKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0y NC5jICAgIHwgIDEwICsKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjUu YyAgICB8ICAyMyArKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yNi5j ICAgIHwgIDIzICsrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTMuYyAg ICAgfCAgMzMgKysrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTM0LmMg ICAgfCAgNTggKysrKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMzYu YyAgICB8IDIzOCArKysrKysrKysrKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8t aW5pdC11bmluaXQtMzcuYyAgICB8IDE1NCArKysrKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2Nj LmRnL2F1dG8taW5pdC11bmluaXQtNC5jICAgICB8ICA1MiArKysrCiBnY2MvdGVzdHN1aXRlL2dj Yy5kZy9hdXRvLWluaXQtdW5pbml0LTUuYyAgICAgfCAgMzkgKysrCiBnY2MvdGVzdHN1aXRlL2dj Yy5kZy9hdXRvLWluaXQtdW5pbml0LTYuYyAgICAgfCAgNDcgKysrKwogZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvYXV0by1pbml0LXVuaW5pdC04LmMgICAgIHwgIDMyICsrKwogZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvYXV0by1pbml0LXVuaW5pdC05LmMgICAgIHwgIDQyICsrKysKIGdjYy90ZXN0c3VpdGUv Z2NjLmRnL2F1dG8taW5pdC11bmluaXQtQS5jICAgICB8IDExNyArKysrKysrKysKIGdjYy90ZXN0 c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtQi5jICAgICB8ICAxNSArKwogZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1DLmMgICAgIHwgIDIxICsrCiBnY2MvdGVzdHN1 aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LUguYyAgICAgfCAgMzMgKysrCiBnY2MvdGVzdHN1 aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LUkuYyAgICAgfCAgIDggKwogLi4uL2djYy50YXJn ZXQvYWFyY2g2NC9hdXRvLWluaXQtMS5jICAgICAgICAgIHwgIDMyICsrKwogLi4uL2djYy50YXJn ZXQvYWFyY2g2NC9hdXRvLWluaXQtMi5jICAgICAgICAgIHwgIDM1ICsrKwogLi4uL2djYy50YXJn ZXQvYWFyY2g2NC9hdXRvLWluaXQtMy5jICAgICAgICAgIHwgIDE3ICsrCiAuLi4vZ2NjLnRhcmdl dC9hYXJjaDY0L2F1dG8taW5pdC00LmMgICAgICAgICAgfCAgMTkgKysKIC4uLi9nY2MudGFyZ2V0 L2FhcmNoNjQvYXV0by1pbml0LTUuYyAgICAgICAgICB8ICAxOSArKwogLi4uL2djYy50YXJnZXQv YWFyY2g2NC9hdXRvLWluaXQtNi5jICAgICAgICAgIHwgIDE4ICsrCiAuLi4vZ2NjLnRhcmdldC9h YXJjaDY0L2F1dG8taW5pdC03LmMgICAgICAgICAgfCAgMzIgKysrCiAuLi4vZ2NjLnRhcmdldC9h YXJjaDY0L2F1dG8taW5pdC04LmMgICAgICAgICAgfCAgMzIgKysrCiAuLi4vZ2NjLnRhcmdldC9h YXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTEuYyAgfCAgMTcgKysKIC4uLi9nY2MudGFyZ2V0L2Fh cmNoNjQvYXV0by1pbml0LXBhZGRpbmctMTAuYyB8ICAyMiArKwogLi4uL2djYy50YXJnZXQvYWFy Y2g2NC9hdXRvLWluaXQtcGFkZGluZy0xMS5jIHwgIDI3ICsrCiAuLi4vZ2NjLnRhcmdldC9hYXJj aDY0L2F1dG8taW5pdC1wYWRkaW5nLTEyLmMgfCAgMjcgKysKIC4uLi9nY2MudGFyZ2V0L2FhcmNo NjQvYXV0by1pbml0LXBhZGRpbmctMi5jICB8ICAxOCArKwogLi4uL2djYy50YXJnZXQvYWFyY2g2 NC9hdXRvLWluaXQtcGFkZGluZy0zLmMgIHwgIDI3ICsrCiAuLi4vZ2NjLnRhcmdldC9hYXJjaDY0 L2F1dG8taW5pdC1wYWRkaW5nLTQuYyAgfCAgMjcgKysKIC4uLi9nY2MudGFyZ2V0L2FhcmNoNjQv YXV0by1pbml0LXBhZGRpbmctNS5jICB8ICAyMiArKwogLi4uL2djYy50YXJnZXQvYWFyY2g2NC9h dXRvLWluaXQtcGFkZGluZy02LmMgIHwgIDIwICsrCiAuLi4vZ2NjLnRhcmdldC9hYXJjaDY0L2F1 dG8taW5pdC1wYWRkaW5nLTcuYyAgfCAgMjAgKysKIC4uLi9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0 by1pbml0LXBhZGRpbmctOC5jICB8ICAyMiArKwogLi4uL2djYy50YXJnZXQvYWFyY2g2NC9hdXRv LWluaXQtcGFkZGluZy05LmMgIHwgIDIxICsrCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9hdXRvLWluaXQtMS5jICAgfCAgMzIgKysrCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9hdXRvLWluaXQtMi5jICAgfCAgMzYgKysrCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9hdXRvLWluaXQtMjEuYyAgfCAgMTQgKysKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L2F1dG8taW5pdC0yMi5jICB8ICAxNCArKwogZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv YXV0by1pbml0LTIzLmMgIHwgIDEzICsKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1 dG8taW5pdC0yNC5jICB8ICAxMyArCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRv LWluaXQtMy5jICAgfCAgMTcgKysKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8t aW5pdC00LmMgICB8ICAyMCArKwogZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1p bml0LTUuYyAgIHwgIDIwICsrCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWlu aXQtNi5jICAgfCAgMTkgKysKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5p dC03LmMgICB8ICAzMiArKysKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5p dC04LmMgICB8ICAzNSArKysKIC4uLi9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmct MS5jICAgICB8ICAxOSArKwogLi4uL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy0x MC5jICAgIHwgIDIxICsrCiAuLi4vZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTEx LmMgICAgfCAgMjYgKysKIC4uLi9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctMTIu YyAgICB8ICAyNiArKwogLi4uL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy0yLmMg ICAgIHwgIDE5ICsrCiAuLi4vZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTMuYyAg ICAgfCAgMzAgKysrCiAuLi4vZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTQuYyAg ICAgfCAgMjggKysrCiAuLi4vZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTUuYyAg ICAgfCAgMjIgKysKIC4uLi9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctNi5jICAg ICB8ICAyMiArKwogLi4uL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy03LmMgICAg IHwgIDIyICsrCiAuLi4vZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTguYyAgICAg fCAgMjIgKysKIC4uLi9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctOS5jICAgICB8 ICAyMyArKwogZ2NjL3RyZWUtY2ZnLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDk5ICsrKysrKy0tCiBnY2MvdHJlZS1zcmEuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAxMjQgKysrKysrKystCiBnY2MvdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAgICAgICAgICAg ICAgICAgICAgfCAgIDMgKwogZ2NjL3RyZWUtc3NhLXVuaW5pdC5jICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDQ3ICsrKysKIGdjYy90cmVlLXNzYS5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICA0MCArKysKIDEyNSBmaWxlcyBjaGFuZ2VkLCA0Mjg2IGluc2VydGlvbnMoKyks IDU2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2F1dG8taW5pdC0xLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9hdXRvLWluaXQtMTAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTEyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTMuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xNC5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTE1LmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTYuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0y LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWlu aXQtMy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0 by1pbml0LTQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L2F1dG8taW5pdC01LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9hdXRvLWluaXQtNi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vYXV0by1pbml0LTcuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL2F1dG8taW5pdC04LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtOS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LWVzcmEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC1wYWRkaW5nLTEuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC1wYWRkaW5n LTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8t aW5pdC1wYWRkaW5nLTMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRn L2F1dG8taW5pdC11bmluaXQtcHJlZC0xX2EuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC0xX2IuQwogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC0yX2EuQwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJl ZC0yX2IuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5p dC11bmluaXQtcHJlZC0zX2EuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysr LmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC0zX2IuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC00LkMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtbG9vcC0xX2Eu Y2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5p bml0LXByZWQtbG9vcC0xX2IuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2cr Ky5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtbG9vcC0xX2MuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtbG9vcF8xLmNjCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXNyYS0xLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtc3JhLTIu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmlu aXQtMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0 LXVuaW5pdC0xMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0 by1pbml0LXVuaW5pdC0xMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvYXV0by1pbml0LXVuaW5pdC0xMy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xNC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xNS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xNi5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xNy5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xOC5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0x OS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVu aW5pdC0yLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWlu aXQtdW5pbml0LTIwLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9h dXRvLWluaXQtdW5pbml0LTIxLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dj Yy5kZy9hdXRvLWluaXQtdW5pbml0LTIyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTIzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTI0LmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTI1LmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTI2LmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTMuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQt MzQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11 bmluaXQtMzYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8t aW5pdC11bmluaXQtMzcuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRn L2F1dG8taW5pdC11bmluaXQtNC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvYXV0by1pbml0LXVuaW5pdC01LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtOC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC05LmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LUEuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtQi5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1DLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0 LUguYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11 bmluaXQtSS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvYXV0by1pbml0LTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC0yLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtMy5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTQuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC01 LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9h dXRvLWluaXQtNi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2FhcmNoNjQvYXV0by1pbml0LTcuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC04LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy0xLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQt cGFkZGluZy0xMC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTEyLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQt cGFkZGluZy0yLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy0zLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy00LmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFk ZGluZy01LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9hdXRvLWluaXQtcGFkZGluZy02LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy03LmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGlu Zy04LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC9hdXRvLWluaXQtcGFkZGluZy05LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC0yMS5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTIyLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQt MjMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1 dG8taW5pdC0yNC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvYXV0by1pbml0LTMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L2F1dG8taW5pdC00LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtNS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTYuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC03LmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtOC5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0 LXBhZGRpbmctMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvYXV0by1pbml0LXBhZGRpbmctMTAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTExLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy0x Mi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0 by1pbml0LXBhZGRpbmctMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctMy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctNC5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRp bmctNS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv YXV0by1pbml0LXBhZGRpbmctNi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctNy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctOC5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBh ZGRpbmctOS5jCgpkaWZmIC0tZ2l0IGEvZ2NjL2J1aWx0aW5zLmMgYi9nY2MvYnVpbHRpbnMuYwpp bmRleCAzOWFiMTM5YjdlMWMuLmFhOGUzZTQ5OWU0OCAxMDA2NDQKLS0tIGEvZ2NjL2J1aWx0aW5z LmMKKysrIGIvZ2NjL2J1aWx0aW5zLmMKQEAgLTE0NSw3ICsxNDUsNiBAQCBzdGF0aWMgcnR4IGV4 cGFuZF9idWlsdGluX3N0cGNweSAodHJlZSwgcnR4LCBtYWNoaW5lX21vZGUpOwogc3RhdGljIHJ0 eCBleHBhbmRfYnVpbHRpbl9zdHBuY3B5ICh0cmVlLCBydHgpOwogc3RhdGljIHJ0eCBleHBhbmRf YnVpbHRpbl9zdHJuY2F0ICh0cmVlLCBydHgpOwogc3RhdGljIHJ0eCBleHBhbmRfYnVpbHRpbl9z dHJuY3B5ICh0cmVlLCBydHgpOwotc3RhdGljIHJ0eCBleHBhbmRfYnVpbHRpbl9tZW1zZXQgKHRy ZWUsIHJ0eCwgbWFjaGluZV9tb2RlKTsKIHN0YXRpYyBydHggZXhwYW5kX2J1aWx0aW5fbWVtc2V0 X2FyZ3MgKHRyZWUsIHRyZWUsIHRyZWUsIHJ0eCwgbWFjaGluZV9tb2RlLCB0cmVlKTsKIHN0YXRp YyBydHggZXhwYW5kX2J1aWx0aW5fYnplcm8gKHRyZWUpOwogc3RhdGljIHJ0eCBleHBhbmRfYnVp bHRpbl9zdHJsZW4gKHRyZWUsIHJ0eCwgbWFjaGluZV9tb2RlKTsKQEAgLTY3NTcsNyArNjc1Niw3 IEBAIGJ1aWx0aW5fbWVtc2V0X2dlbl9zdHIgKHZvaWQgKmRhdGEsIHZvaWQgKnByZXZwLAogICAg dHJ5IHRvIGdldCB0aGUgcmVzdWx0IGluIFRBUkdFVCwgaWYgY29udmVuaWVudCAoYW5kIGluIG1v ZGUgTU9ERSBpZiB0aGF0J3MKICAgIGNvbnZlbmllbnQpLiAgKi8KIAotc3RhdGljIHJ0eAorcnR4 CiBleHBhbmRfYnVpbHRpbl9tZW1zZXQgKHRyZWUgZXhwLCBydHggdGFyZ2V0LCBtYWNoaW5lX21v ZGUgbW9kZSkKIHsKICAgaWYgKCF2YWxpZGF0ZV9hcmdsaXN0IChleHAsCmRpZmYgLS1naXQgYS9n Y2MvYnVpbHRpbnMuaCBiL2djYy9idWlsdGlucy5oCmluZGV4IGE2NGVjZTNmMWNkOS4uYjE4ZmUw NzllYzNhIDEwMDY0NAotLS0gYS9nY2MvYnVpbHRpbnMuaAorKysgYi9nY2MvYnVpbHRpbnMuaApA QCAtMTE0LDYgKzExNCw3IEBAIGV4dGVybiBydHggYnVpbHRpbl9zdHJuY3B5X3JlYWRfc3RyICh2 b2lkICosIHZvaWQgKiwgSE9TVF9XSURFX0lOVCwKIAkJCQkgICAgIHNjYWxhcl9pbnRfbW9kZSk7 CiBleHRlcm4gcnR4IGJ1aWx0aW5fbWVtc2V0X3JlYWRfc3RyICh2b2lkICosIHZvaWQgKiwgSE9T VF9XSURFX0lOVCwKIAkJCQkgICAgc2NhbGFyX2ludF9tb2RlKTsKK2V4dGVybiBydHggZXhwYW5k X2J1aWx0aW5fbWVtc2V0ICh0cmVlLCBydHgsIG1hY2hpbmVfbW9kZSk7CiBleHRlcm4gcnR4IGV4 cGFuZF9idWlsdGluX3NhdmVyZWdzICh2b2lkKTsKIGV4dGVybiB0cmVlIHN0ZF9idWlsZF9idWls dGluX3ZhX2xpc3QgKHZvaWQpOwogZXh0ZXJuIHRyZWUgc3RkX2ZuX2FiaV92YV9saXN0ICh0cmVl KTsKZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLWF0dHJpYnMuYyBiL2djYy9jLWZhbWlseS9j LWF0dHJpYnMuYwppbmRleCBlNjBmYjMxZDhjOGUuLjliNTk0MDA2ZmU0NCAxMDA2NDQKLS0tIGEv Z2NjL2MtZmFtaWx5L2MtYXR0cmlicy5jCisrKyBiL2djYy9jLWZhbWlseS9jLWF0dHJpYnMuYwpA QCAtODMsNiArODMsNyBAQCBzdGF0aWMgdHJlZSBoYW5kbGVfYXJ0aWZpY2lhbF9hdHRyaWJ1dGUg KHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopOwogc3RhdGljIHRyZWUgaGFuZGxlX2Zs YXR0ZW5fYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKTsKIHN0YXRp YyB0cmVlIGhhbmRsZV9lcnJvcl9hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBi b29sICopOwogc3RhdGljIHRyZWUgaGFuZGxlX3VzZWRfYXR0cmlidXRlICh0cmVlICosIHRyZWUs IHRyZWUsIGludCwgYm9vbCAqKTsKK3N0YXRpYyB0cmVlIGhhbmRsZV91bmluaXRpYWxpemVkX2F0 dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKik7CiBzdGF0aWMgdHJlZSBo YW5kbGVfZXh0ZXJuYWxseV92aXNpYmxlX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBp bnQsCiAJCQkJCQkgYm9vbCAqKTsKIHN0YXRpYyB0cmVlIGhhbmRsZV9ub19yZW9yZGVyX2F0dHJp YnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsCkBAIC0zMzEsNiArMzMyLDggQEAgY29uc3Qg c3RydWN0IGF0dHJpYnV0ZV9zcGVjIGNfY29tbW9uX2F0dHJpYnV0ZV90YWJsZVtdID0KIAkJCSAg ICAgIGhhbmRsZV91c2VkX2F0dHJpYnV0ZSwgTlVMTCB9LAogICB7ICJ1bnVzZWQiLCAgICAgICAg ICAgICAgICAgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCiAJCQkgICAgICBoYW5k bGVfdW51c2VkX2F0dHJpYnV0ZSwgTlVMTCB9LAorICB7ICJ1bmluaXRpYWxpemVkIiwJICAgICAg MCwgMCwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwkJCSAgICAgIGhhbmRsZV91bmluaXRp YWxpemVkX2F0dHJpYnV0ZSwgTlVMTCB9LAogICB7ICJyZXRhaW4iLCAgICAgICAgICAgICAgICAg MCwgMCwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsCiAJCQkgICAgICBoYW5kbGVfcmV0YWlu X2F0dHJpYnV0ZSwgTlVMTCB9LAogICB7ICJleHRlcm5hbGx5X3Zpc2libGUiLCAgICAgMCwgMCwg dHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsCkBAIC0xNjEzLDYgKzE2MTYsMjIgQEAgaGFuZGxl X3JldGFpbl9hdHRyaWJ1dGUgKHRyZWUgKnBub2RlLCB0cmVlIG5hbWUsIHRyZWUgQVJHX1VOVVNF RCAoYXJncyksCiAgIHJldHVybiBOVUxMX1RSRUU7CiB9CiAKKy8qIEhhbmRsZSBhbiAidW5pbml0 aWFsaXplZCIgYXR0cmlidXRlOyBhcmd1bWVudHMgYXMgaW4KKyAgIHN0cnVjdCBhdHRyaWJ1dGVf c3BlYy5oYW5kbGVyLiAgKi8KKworc3RhdGljIHRyZWUKK2hhbmRsZV91bmluaXRpYWxpemVkX2F0 dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lLCB0cmVlIEFSR19VTlVTRUQgKGFyZ3MpLAor CQkJCWludCBBUkdfVU5VU0VEIChmbGFncyksIGJvb2wgKm5vX2FkZF9hdHRycykKK3sKKyAgaWYg KCFWQVJfUCAoKm5vZGUpKQorICAgIHsKKyAgICAgIHdhcm5pbmcgKE9QVF9XYXR0cmlidXRlcywg IiVxRSBhdHRyaWJ1dGUgaWdub3JlZCIsIG5hbWUpOworICAgICAgKm5vX2FkZF9hdHRycyA9IHRy dWU7CisgICAgfQorCisgIHJldHVybiBOVUxMX1RSRUU7Cit9CisKIC8qIEhhbmRsZSBhICJleHRl cm5hbGx5X3Zpc2libGUiIGF0dHJpYnV0ZTsgYXJndW1lbnRzIGFzIGluCiAgICBzdHJ1Y3QgYXR0 cmlidXRlX3NwZWMuaGFuZGxlci4gICovCiAKZGlmZiAtLWdpdCBhL2djYy9jb21tb24ub3B0IGIv Z2NjL2NvbW1vbi5vcHQKaW5kZXggZDlkYTExMzFlZGFhLi41ZTQyMjFlOGFmNjQgMTAwNjQ0Ci0t LSBhL2djYy9jb21tb24ub3B0CisrKyBiL2djYy9jb21tb24ub3B0CkBAIC0zMDc4LDYgKzMwNzgs MjIgQEAgZnRyZWUtc2Nldi1jcHJvcAogQ29tbW9uIFZhcihmbGFnX3RyZWVfc2Nldl9jcHJvcCkg SW5pdCgxKSBPcHRpbWl6YXRpb24KIEVuYWJsZSBjb3B5IHByb3BhZ2F0aW9uIG9mIHNjYWxhci1l dm9sdXRpb24gaW5mb3JtYXRpb24uCiAKK2Z0cml2aWFsLWF1dG8tdmFyLWluaXQ9CitDb21tb24g Sm9pbmVkIFJlamVjdE5lZ2F0aXZlIEVudW0oYXV0b19pbml0X3R5cGUpIFZhcihmbGFnX2F1dG9f dmFyX2luaXQpIEluaXQoQVVUT19JTklUX1VOSU5JVElBTElaRUQpIE9wdGltaXphdGlvbgorLWZ0 cml2aWFsLWF1dG8tdmFyLWluaXQ9W3VuaW5pdGlhbGl6ZWR8cGF0dGVybnx6ZXJvXQlBZGQgaW5p dGlhbGl6YXRpb25zIHRvIGF1dG9tYXRpYyB2YXJpYWJsZXMuCisKK0VudW0KK05hbWUoYXV0b19p bml0X3R5cGUpIFR5cGUoZW51bSBhdXRvX2luaXRfdHlwZSkgVW5rbm93bkVycm9yKHVucmVjb2du aXplZCBhdXRvbWF0aWMgdmFyaWFibGUgaW5pdGlhbGl6YXRpb24gdHlwZSAlcXMpCisKK0VudW1W YWx1ZQorRW51bShhdXRvX2luaXRfdHlwZSkgU3RyaW5nKHVuaW5pdGlhbGl6ZWQpIFZhbHVlKEFV VE9fSU5JVF9VTklOSVRJQUxJWkVEKQorCitFbnVtVmFsdWUKK0VudW0oYXV0b19pbml0X3R5cGUp IFN0cmluZyhwYXR0ZXJuKSBWYWx1ZShBVVRPX0lOSVRfUEFUVEVSTikKKworRW51bVZhbHVlCitF bnVtKGF1dG9faW5pdF90eXBlKSBTdHJpbmcoemVybykgVmFsdWUoQVVUT19JTklUX1pFUk8pCisK IDsgLWZ2ZXJib3NlLWFzbSBjYXVzZXMgZXh0cmEgY29tbWVudGFyeSBpbmZvcm1hdGlvbiB0byBi ZSBwcm9kdWNlZCBpbgogOyB0aGUgZ2VuZXJhdGVkIGFzc2VtYmx5IGNvZGUgKHRvIG1ha2UgaXQg bW9yZSByZWFkYWJsZSkuICBUaGlzIG9wdGlvbgogOyBpcyBnZW5lcmFsbHkgb25seSBvZiB1c2Ug dG8gdGhvc2Ugd2hvIGFjdHVhbGx5IG5lZWQgdG8gcmVhZCB0aGUKZGlmZiAtLWdpdCBhL2djYy9k b2MvZXh0ZW5kLnRleGkgYi9nY2MvZG9jL2V4dGVuZC50ZXhpCmluZGV4IGI4M2NkNDkxOWJiMS4u NTRlZTk5ZDI5NDA3IDEwMDY0NAotLS0gYS9nY2MvZG9jL2V4dGVuZC50ZXhpCisrKyBiL2djYy9k b2MvZXh0ZW5kLnRleGkKQEAgLTc1NDAsNiArNzU0MCwyMiBAQCB3aWxsIGJlIHBsYWNlZCBpbiBu ZXcsIHVuaXF1ZSBzZWN0aW9ucy4KIAogVGhpcyBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkgcmVx dWlyZXMgQmludXRpbHMgdmVyc2lvbiAyLjM2IG9yIGxhdGVyLgogCitAaXRlbSB1bmluaXRpYWxp emVkCitAY2luZGV4IEBjb2Rle3VuaW5pdGlhbGl6ZWR9IHZhcmlhYmxlIGF0dHJpYnV0ZQorVGhp cyBhdHRyaWJ1dGUsIGF0dGFjaGVkIHRvIGEgdmFyaWFibGUgd2l0aCBhdXRvbWF0aWMgc3RvcmFn ZSwgbWVhbnMgdGhhdAordGhlIHZhcmlhYmxlIHNob3VsZCBub3QgYmUgYXV0b21hdGljYWxseSBp bml0aWFsaXplZCBieSB0aGUgY29tcGlsZXIgd2hlbgordGhlIG9wdGlvbiBAY29kZXstZnRyaXZp YWwtYXV0by12YXItaW5pdH0gcHJlc2VudHMuCisKK1dpdGggdGhlIG9wdGlvbiBAY29kZXstZnRy aXZpYWwtYXV0by12YXItaW5pdH0sIGFsbCB0aGUgYXV0b21hdGljIHZhcmlhYmxlcwordGhhdCBk byBub3QgaGF2ZSBleHBsaWNpdCBpbml0aWFsaXplcnMgd2lsbCBiZSBpbml0aWFsaXplZCBieSB0 aGUgY29tcGlsZXIuCitUaGVzZSBhZGRpdGlvbmFsIGNvbXBpbGVyIGluaXRpYWxpemF0aW9ucyBt aWdodCBpbmN1ciBydW4tdGltZSBvdmVyaGVhZCwKK3NvbWV0aW1lcyBkcmFtYXRpY2FsbHkuICBU aGlzIGF0dHJpYnV0ZSBjYW4gYmUgdXNlZCB0byBtYXJrIHNvbWUgdmFyaWFibGVzCit0byBiZSBl eGNsdWRlZCBmcm9tIHN1Y2ggYXV0b21hdGljYWwgaW5pdGlhbGl6YXRpb24gaW4gb3JkZXIgdG8g cmVkdWNlIHJ1bnRpbWUKK292ZXJoZWFkLgorCitUaGlzIGF0dHJpYnV0ZSBoYXMgbm8gZWZmZWN0 IHdoZW4gdGhlIG9wdGlvbiBAY29kZXstZnRyaXZpYWwtYXV0by12YXItaW5pdH0KK2RvZXMgbm90 IHByZXNlbnQuCisKIEBpdGVtIHZlY3Rvcl9zaXplIChAdmFye2J5dGVzfSkKIEBjaW5kZXggQGNv ZGV7dmVjdG9yX3NpemV9IHZhcmlhYmxlIGF0dHJpYnV0ZQogVGhpcyBhdHRyaWJ1dGUgc3BlY2lm aWVzIHRoZSB2ZWN0b3Igc2l6ZSBmb3IgdGhlIHR5cGUgb2YgdGhlIGRlY2xhcmVkCmRpZmYgLS1n aXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQppbmRleCAzMjY5 N2U2MTE3YzAuLjA5MmU0YTkxNzc0ZiAxMDA2NDQKLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQor KysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCkBAIC01NzMsOSArNTczLDkgQEAgT2JqZWN0aXZlLUMg YW5kIE9iamVjdGl2ZS1DKysgRGlhbGVjdHN9LgogLWZ0cmVlLXBhcmFsbGVsaXplLWxvb3BzPUB2 YXJ7bn0gIC1mdHJlZS1wcmUgIC1mdHJlZS1wYXJ0aWFsLXByZSAgLWZ0cmVlLXB0YSBAZ29sCiAt ZnRyZWUtcmVhc3NvYyAgLWZ0cmVlLXNjZXYtY3Byb3AgIC1mdHJlZS1zaW5rICAtZnRyZWUtc2xz ciAgLWZ0cmVlLXNyYSBAZ29sCiAtZnRyZWUtc3dpdGNoLWNvbnZlcnNpb24gIC1mdHJlZS10YWls LW1lcmdlIEBnb2wKLS1mdHJlZS10ZXIgIC1mdHJlZS12ZWN0b3JpemUgIC1mdHJlZS12cnAgIC1m dW5jb25zdHJhaW5lZC1jb21tb25zIEBnb2wKLS1mdW5pdC1hdC1hLXRpbWUgIC1mdW5yb2xsLWFs bC1sb29wcyAgLWZ1bnJvbGwtbG9vcHMgQGdvbAotLWZ1bnNhZmUtbWF0aC1vcHRpbWl6YXRpb25z ICAtZnVuc3dpdGNoLWxvb3BzIEBnb2wKKy1mdHJlZS10ZXIgIC1mdHJlZS12ZWN0b3JpemUgIC1m dHJlZS12cnAgIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0IEBnb2wKKy1mdW5jb25zdHJhaW5lZC1j b21tb25zIC1mdW5pdC1hdC1hLXRpbWUgIC1mdW5yb2xsLWFsbC1sb29wcyBAZ29sCistZnVucm9s bC1sb29wcyAtZnVuc2FmZS1tYXRoLW9wdGltaXphdGlvbnMgIC1mdW5zd2l0Y2gtbG9vcHMgQGdv bAogLWZpcGEtcmEgIC1mdmFyaWFibGUtZXhwYW5zaW9uLWluLXVucm9sbGVyICAtZnZlY3QtY29z dC1tb2RlbCAgLWZ2cHQgQGdvbAogLWZ3ZWIgIC1md2hvbGUtcHJvZ3JhbSAgLWZ3cGEgIC1mdXNl LWxpbmtlci1wbHVnaW4gLWZ6ZXJvLWNhbGwtdXNlZC1yZWdzIEBnb2wKIC0tcGFyYW0gQHZhcntu YW1lfT1AdmFye3ZhbHVlfQpAQCAtMTE4MTgsNiArMTE4MTgsNDEgQEAgUGVyZm9ybSBiYXNpYyBi bG9jayB2ZWN0b3JpemF0aW9uIG9uIHRyZWVzLiBUaGlzIGZsYWcgaXMgZW5hYmxlZCBieSBkZWZh dWx0IGF0CiBAb3B0aW9uey1PM30gYW5kIGJ5IEBvcHRpb257LWZ0cmVlLXZlY3Rvcml6ZX0sIEBv cHRpb257LWZwcm9maWxlLXVzZX0sCiBhbmQgQG9wdGlvbnstZmF1dG8tcHJvZmlsZX0uCiAKK0Bp dGVtIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PUB2YXJ7Y2hvaWNlfQorQG9waW5kZXggZnRyaXZp YWwtYXV0by12YXItaW5pdAorSW5pdGlhbGl6ZSBhdXRvbWF0aWMgdmFyaWFibGVzIHdpdGggZWl0 aGVyIGEgcGF0dGVybiBvciB3aXRoIHplcm9lcyB0byBpbmNyZWFzZQordGhlIHNlY3VyaXR5IGFu ZCBwcmVkaWN0YWJpbGl0eSBvZiBhIHByb2dyYW0gYnkgcHJldmVudGluZyB1bmluaXRpYWxpemVk IG1lbW9yeQorZGlzY2xvc3VyZSBhbmQgdXNlLgorR0NDIHN0aWxsIGNvbnNpZGVycyBhbiBhdXRv bWF0aWMgdmFyaWFibGUgdGhhdCBkb2Vzbid0IGhhdmUgYW4gZXhwbGljaXQKK2luaXRpYWxpemVy IGFzIHVuaW5pdGlhbGl6ZWQsIC1XdW5pbml0aWFsaXplZCB3aWxsIHN0aWxsIHJlcG9ydCB3YXJu aW5nIG1lc3NhZ2VzCitvbiBzdWNoIGF1dG9tYXRpYyB2YXJpYWJsZXMuCitXaXRoIHRoaXMgb3B0 aW9uLCBHQ0Mgd2lsbCBhbHNvIGluaXRpYWxpemUgYW55IHBhZGRpbmcgb2YgYXV0b21hdGljIHZh cmlhYmxlcwordGhhdCBoYXZlIHN0cnVjdHVyZSBvciB1bmlvbiB0eXBlcyB0byB6ZXJvZXMuCisK K1RoZSB0aHJlZSB2YWx1ZXMgb2YgQHZhcntjaG9pY2V9IGFyZToKKworQGl0ZW1pemUgQGJ1bGxl dAorQGl0ZW0KK0BzYW1we3VuaW5pdGlhbGl6ZWR9IGRvZXNuJ3QgaW5pdGlhbGl6ZSBhbnkgYXV0 b21hdGljIHZhcmlhYmxlcy4KK1RoaXMgaXMgQyBhbmQgQysrJ3MgZGVmYXVsdC4KKworQGl0ZW0K K0BzYW1we3BhdHRlcm59IEluaXRpYWxpemUgYXV0b21hdGljIHZhcmlhYmxlcyB3aXRoIHZhbHVl cyB3aGljaCB3aWxsIGxpa2VseQordHJhbnNmb3JtIGxvZ2ljIGJ1Z3MgaW50byBjcmFzaGVzIGRv d24gdGhlIGxpbmUsIGFyZSBlYXNpbHkgcmVjb2duaXplZCBpbiBhCitjcmFzaCBkdW1wIGFuZCB3 aXRob3V0IGJlaW5nIHZhbHVlcyB0aGF0IHByb2dyYW1tZXJzIGNhbiByZWx5IG9uIGZvciB1c2Vm dWwKK3Byb2dyYW0gc2VtYW50aWNzLgorVGhlIGN1cnJlbnQgdmFsdWUgaXMgYnl0ZS1yZXBlYXRh YmxlIHBhdHRlcm4gd2l0aCBieXRlICIweEZFIi4KK1RoZSB2YWx1ZXMgdXNlZCBmb3IgcGF0dGVy biBpbml0aWFsaXphdGlvbiBtaWdodCBiZSBjaGFuZ2VkIGluIHRoZSBmdXR1cmUuCisKK0BpdGVt CitAc2FtcHt6ZXJvfSBJbml0aWFsaXplIGF1dG9tYXRpYyB2YXJpYWJsZXMgd2l0aCB6ZXJvZXMu CitAZW5kIGl0ZW1pemUKKworVGhlIGRlZmF1bHQgaXMgQHNhbXB7dW5pbml0aWFsaXplZH0uCisK K1lvdSBjYW4gY29udHJvbCB0aGlzIGJlaGF2aW9yIGZvciBhIHNwZWNpZmljIHZhcmlhYmxlIGJ5 IHVzaW5nIHRoZSB2YXJpYWJsZQorYXR0cmlidXRlIEBjb2Rle3VuaW5pdGlhbGl6ZWR9IChAcHhy ZWZ7VmFyaWFibGUgQXR0cmlidXRlc30pLgorCiBAaXRlbSAtZnZlY3QtY29zdC1tb2RlbD1AdmFy e21vZGVsfQogQG9waW5kZXggZnZlY3QtY29zdC1tb2RlbAogQWx0ZXIgdGhlIGNvc3QgbW9kZWwg dXNlZCBmb3IgdmVjdG9yaXphdGlvbi4gIFRoZSBAdmFye21vZGVsfSBhcmd1bWVudApkaWZmIC0t Z2l0IGEvZ2NjL2ZsYWctdHlwZXMuaCBiL2djYy9mbGFnLXR5cGVzLmgKaW5kZXggZTQzZDFkZTQ5 MGRmLi42ZmIwYWVmYmZjN2IgMTAwNjQ0Ci0tLSBhL2djYy9mbGFnLXR5cGVzLmgKKysrIGIvZ2Nj L2ZsYWctdHlwZXMuaApAQCAtMjc2LDYgKzI3NiwxMyBAQCBlbnVtIHZlY3RfY29zdF9tb2RlbCB7 CiAgIFZFQ1RfQ09TVF9NT0RFTF9ERUZBVUxUID0gMQogfTsKIAorLyogQXV0b21hdGljIHZhcmlh YmxlIGluaXRpYWxpemF0aW9uIHR5cGUuICAqLworZW51bSBhdXRvX2luaXRfdHlwZSB7CisgIEFV VE9fSU5JVF9VTklOSVRJQUxJWkVEID0gMCwKKyAgQVVUT19JTklUX1BBVFRFUk4gPSAxLAorICBB VVRPX0lOSVRfWkVSTyA9IDIKK307CisKIC8qIERpZmZlcmVudCBpbnN0cnVtZW50YXRpb24gbW9k ZXMuICAqLwogZW51bSBzYW5pdGl6ZV9jb2RlIHsKICAgLyogQWRkcmVzc1Nhbml0aXplci4gICov CmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxlLWZvbGQuYyBiL2djYy9naW1wbGUtZm9sZC5jCmluZGV4 IGEzYWZlODcxZjZiNC4uNTQ1OGVlOGNlNTRmIDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxlLWZvbGQu YworKysgYi9nY2MvZ2ltcGxlLWZvbGQuYwpAQCAtNDUxNywxMiArNDUxNywxNCBAQCBjbGVhcl9w YWRkaW5nX2FkZF9wYWRkaW5nIChjbGVhcl9wYWRkaW5nX3N0cnVjdCAqYnVmLAogICAgIH0KIH0K IAotc3RhdGljIHZvaWQgY2xlYXJfcGFkZGluZ190eXBlIChjbGVhcl9wYWRkaW5nX3N0cnVjdCAq LCB0cmVlLCBIT1NUX1dJREVfSU5UKTsKK3N0YXRpYyB2b2lkIGNsZWFyX3BhZGRpbmdfdHlwZSAo Y2xlYXJfcGFkZGluZ19zdHJ1Y3QgKiwgdHJlZSwKKwkJCQlIT1NUX1dJREVfSU5ULCBib29sKTsK IAogLyogQ2xlYXIgcGFkZGluZyBiaXRzIG9mIHVuaW9uIHR5cGUgVFlQRS4gICovCiAKIHN0YXRp YyB2b2lkCi1jbGVhcl9wYWRkaW5nX3VuaW9uIChjbGVhcl9wYWRkaW5nX3N0cnVjdCAqYnVmLCB0 cmVlIHR5cGUsIEhPU1RfV0lERV9JTlQgc3opCitjbGVhcl9wYWRkaW5nX3VuaW9uIChjbGVhcl9w YWRkaW5nX3N0cnVjdCAqYnVmLCB0cmVlIHR5cGUsCisJCSAgICAgSE9TVF9XSURFX0lOVCBzeiwg Ym9vbCBmb3JfYXV0b19pbml0KQogewogICBjbGVhcl9wYWRkaW5nX3N0cnVjdCAqdW5pb25fYnVm OwogICBIT1NUX1dJREVfSU5UIHN0YXJ0X29mZiA9IDAsIG5leHRfb2ZmID0gMDsKQEAgLTQ1Njcs NyArNDU2OSw3IEBAIGNsZWFyX3BhZGRpbmdfdW5pb24gKGNsZWFyX3BhZGRpbmdfc3RydWN0ICpi dWYsIHRyZWUgdHlwZSwgSE9TVF9XSURFX0lOVCBzeikKIAkgICAgICBjb250aW51ZTsKIAkgICAg Z2NjX2Fzc2VydCAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKGZpZWxkKSkgPT0gQVJSQVlfVFlQRQog CQkJJiYgIUNPTVBMRVRFX1RZUEVfUCAoVFJFRV9UWVBFIChmaWVsZCkpKTsKLQkgICAgaWYgKCFi dWYtPmNsZWFyX2luX21hc2spCisJICAgIGlmICghYnVmLT5jbGVhcl9pbl9tYXNrICYmICFmb3Jf YXV0b19pbml0KQogCSAgICAgIGVycm9yX2F0IChidWYtPmxvYywgImZsZXhpYmxlIGFycmF5IG1l bWJlciAlcUQgZG9lcyBub3QgaGF2ZSAiCiAJCQkJICAid2VsbCBkZWZpbmVkIHBhZGRpbmcgYml0 cyBmb3IgJXFzIiwKIAkJCWZpZWxkLCAiX19idWlsdGluX2NsZWFyX3BhZGRpbmciKTsKQEAgLTQ1 NzgsNyArNDU4MCw3IEBAIGNsZWFyX3BhZGRpbmdfdW5pb24gKGNsZWFyX3BhZGRpbmdfc3RydWN0 ICpidWYsIHRyZWUgdHlwZSwgSE9TVF9XSURFX0lOVCBzeikKIAl1bmlvbl9idWYtPm9mZiA9IHN0 YXJ0X29mZjsKIAl1bmlvbl9idWYtPnNpemUgPSBzdGFydF9zaXplOwogCW1lbXNldCAodW5pb25f YnVmLT5idWYsIH4wLCBzdGFydF9zaXplKTsKLQljbGVhcl9wYWRkaW5nX3R5cGUgKHVuaW9uX2J1 ZiwgVFJFRV9UWVBFIChmaWVsZCksIGZsZHN6KTsKKwljbGVhcl9wYWRkaW5nX3R5cGUgKHVuaW9u X2J1ZiwgVFJFRV9UWVBFIChmaWVsZCksIGZsZHN6LCBmb3JfYXV0b19pbml0KTsKIAljbGVhcl9w YWRkaW5nX2FkZF9wYWRkaW5nICh1bmlvbl9idWYsIHN6IC0gZmxkc3opOwogCWNsZWFyX3BhZGRp bmdfZmx1c2ggKHVuaW9uX2J1ZiwgdHJ1ZSk7CiAgICAgICB9CkBAIC00NjQ4LDcgKzQ2NTAsOCBA QCBjbGVhcl9wYWRkaW5nX3R5cGVfbWF5X2hhdmVfcGFkZGluZ19wICh0cmVlIHR5cGUpCiAgICAg IF9fYnVpbHRpbl9jbGVhcl9wYWRkaW5nIChidWYuYmFzZSk7ICAqLwogCiBzdGF0aWMgdm9pZAot Y2xlYXJfcGFkZGluZ19lbWl0X2xvb3AgKGNsZWFyX3BhZGRpbmdfc3RydWN0ICpidWYsIHRyZWUg dHlwZSwgdHJlZSBlbmQpCitjbGVhcl9wYWRkaW5nX2VtaXRfbG9vcCAoY2xlYXJfcGFkZGluZ19z dHJ1Y3QgKmJ1ZiwgdHJlZSB0eXBlLAorCQkJIHRyZWUgZW5kLCBib29sIGZvcl9hdXRvX2luaXQp CiB7CiAgIHRyZWUgbDEgPSBjcmVhdGVfYXJ0aWZpY2lhbF9sYWJlbCAoYnVmLT5sb2MpOwogICB0 cmVlIGwyID0gY3JlYXRlX2FydGlmaWNpYWxfbGFiZWwgKGJ1Zi0+bG9jKTsKQEAgLTQ2NTksNyAr NDY2Miw3IEBAIGNsZWFyX3BhZGRpbmdfZW1pdF9sb29wIChjbGVhcl9wYWRkaW5nX3N0cnVjdCAq YnVmLCB0cmVlIHR5cGUsIHRyZWUgZW5kKQogICBnID0gZ2ltcGxlX2J1aWxkX2xhYmVsIChsMSk7 CiAgIGdpbXBsZV9zZXRfbG9jYXRpb24gKGcsIGJ1Zi0+bG9jKTsKICAgZ3NpX2luc2VydF9iZWZv cmUgKGJ1Zi0+Z3NpLCBnLCBHU0lfU0FNRV9TVE1UKTsKLSAgY2xlYXJfcGFkZGluZ190eXBlIChi dWYsIHR5cGUsIGJ1Zi0+c3opOworICBjbGVhcl9wYWRkaW5nX3R5cGUgKGJ1ZiwgdHlwZSwgYnVm LT5zeiwgZm9yX2F1dG9faW5pdCk7CiAgIGNsZWFyX3BhZGRpbmdfZmx1c2ggKGJ1ZiwgdHJ1ZSk7 CiAgIGcgPSBnaW1wbGVfYnVpbGRfYXNzaWduIChidWYtPmJhc2UsIFBPSU5URVJfUExVU19FWFBS LCBidWYtPmJhc2UsCiAJCQkgICBzaXplX2ludCAoYnVmLT5zeikpOwpAQCAtNDY3NywxMCArNDY4 MCwxMyBAQCBjbGVhcl9wYWRkaW5nX2VtaXRfbG9vcCAoY2xlYXJfcGFkZGluZ19zdHJ1Y3QgKmJ1 ZiwgdHJlZSB0eXBlLCB0cmVlIGVuZCkKIH0KIAogLyogQ2xlYXIgcGFkZGluZyBiaXRzIGZvciBU WVBFLiAgQ2FsbGVkIHJlY3Vyc2l2ZWx5IGZyb20KLSAgIGdpbXBsZV9mb2xkX2J1aWx0aW5fY2xl YXJfcGFkZGluZy4gICovCisgICBnaW1wbGVfZm9sZF9idWlsdGluX2NsZWFyX3BhZGRpbmcuIElm IEZPUl9BVVRPX0lOSVQsCisgICBub3QgZW1pdCBzb21lIG9mIHRoZSBlcnJvciBtZXNzYWdlcyBz aW5jZSBkb2luZyB0aGF0CisgICBtaWdodCBjb25mdXNlIHRoZSBlbmQgdXNlci4gICovCiAKIHN0 YXRpYyB2b2lkCi1jbGVhcl9wYWRkaW5nX3R5cGUgKGNsZWFyX3BhZGRpbmdfc3RydWN0ICpidWYs IHRyZWUgdHlwZSwgSE9TVF9XSURFX0lOVCBzeikKK2NsZWFyX3BhZGRpbmdfdHlwZSAoY2xlYXJf cGFkZGluZ19zdHJ1Y3QgKmJ1ZiwgdHJlZSB0eXBlLAorCQkgICAgSE9TVF9XSURFX0lOVCBzeiwg Ym9vbCBmb3JfYXV0b19pbml0KQogewogICBzd2l0Y2ggKFRSRUVfQ09ERSAodHlwZSkpCiAgICAg ewpAQCAtNDc2Miw3ICs0NzY4LDcgQEAgY2xlYXJfcGFkZGluZ190eXBlIChjbGVhcl9wYWRkaW5n X3N0cnVjdCAqYnVmLCB0cmVlIHR5cGUsIEhPU1RfV0lERV9JTlQgc3opCiAJCSAgY29udGludWU7 CiAJCWdjY19hc3NlcnQgKFRSRUVfQ09ERSAoZnR5cGUpID09IEFSUkFZX1RZUEUKIAkJCSAgICAm JiAhQ09NUExFVEVfVFlQRV9QIChmdHlwZSkpOwotCQlpZiAoIWJ1Zi0+Y2xlYXJfaW5fbWFzaykK KwkJaWYgKCFidWYtPmNsZWFyX2luX21hc2sgJiYgIWZvcl9hdXRvX2luaXQpCiAJCSAgZXJyb3Jf YXQgKGJ1Zi0+bG9jLCAiZmxleGlibGUgYXJyYXkgbWVtYmVyICVxRCBkb2VzIG5vdCAiCiAJCQkJ ICAgICAgImhhdmUgd2VsbCBkZWZpbmVkIHBhZGRpbmcgYml0cyBmb3IgJXFzIiwKIAkJCSAgICBm aWVsZCwgIl9fYnVpbHRpbl9jbGVhcl9wYWRkaW5nIik7CkBAIC00Nzc2LDcgKzQ3ODIsOCBAQCBj bGVhcl9wYWRkaW5nX3R5cGUgKGNsZWFyX3BhZGRpbmdfc3RydWN0ICpidWYsIHRyZWUgdHlwZSwg SE9TVF9XSURFX0lOVCBzeikKIAkJZ2NjX2Fzc2VydCAocG9zID49IDAgJiYgZmxkc3ogPj0gMCAm JiBwb3MgPj0gY3VyX3Bvcyk7CiAJCWNsZWFyX3BhZGRpbmdfYWRkX3BhZGRpbmcgKGJ1ZiwgcG9z IC0gY3VyX3Bvcyk7CiAJCWN1cl9wb3MgPSBwb3M7Ci0JCWNsZWFyX3BhZGRpbmdfdHlwZSAoYnVm LCBUUkVFX1RZUEUgKGZpZWxkKSwgZmxkc3opOworCQljbGVhcl9wYWRkaW5nX3R5cGUgKGJ1Ziwg VFJFRV9UWVBFIChmaWVsZCksCisJCQkJICAgIGZsZHN6LCBmb3JfYXV0b19pbml0KTsKIAkJY3Vy X3BvcyArPSBmbGRzejsKIAkgICAgICB9CiAJICB9CkBAIC00ODE2LDcgKzQ4MjMsNyBAQCBjbGVh cl9wYWRkaW5nX3R5cGUgKGNsZWFyX3BhZGRpbmdfc3RydWN0ICpidWYsIHRyZWUgdHlwZSwgSE9T VF9XSURFX0lOVCBzeikKIAkgIGJ1Zi0+YWxpZ24gPSBUWVBFX0FMSUdOIChlbHR0eXBlKTsKIAkg IGJ1Zi0+b2ZmID0gMDsKIAkgIGJ1Zi0+c2l6ZSA9IDA7Ci0JICBjbGVhcl9wYWRkaW5nX2VtaXRf bG9vcCAoYnVmLCBlbHR0eXBlLCBlbmQpOworCSAgY2xlYXJfcGFkZGluZ19lbWl0X2xvb3AgKGJ1 ZiwgZWx0dHlwZSwgZW5kLCBmb3JfYXV0b19pbml0KTsKIAkgIGJ1Zi0+YmFzZSA9IGJhc2U7CiAJ ICBidWYtPnN6ID0gcHJldl9zejsKIAkgIGJ1Zi0+YWxpZ24gPSBwcmV2X2FsaWduOwpAQCAtNDgy NiwxMCArNDgzMywxMCBAQCBjbGVhcl9wYWRkaW5nX3R5cGUgKGNsZWFyX3BhZGRpbmdfc3RydWN0 ICpidWYsIHRyZWUgdHlwZSwgSE9TVF9XSURFX0lOVCBzeikKIAkgIGJyZWFrOwogCX0KICAgICAg IGZvciAoSE9TVF9XSURFX0lOVCBpID0gMDsgaSA8IG5lbHRzOyBpKyspCi0JY2xlYXJfcGFkZGlu Z190eXBlIChidWYsIFRSRUVfVFlQRSAodHlwZSksIGZsZHN6KTsKKwljbGVhcl9wYWRkaW5nX3R5 cGUgKGJ1ZiwgVFJFRV9UWVBFICh0eXBlKSwgZmxkc3osIGZvcl9hdXRvX2luaXQpOwogICAgICAg YnJlYWs7CiAgICAgY2FzZSBVTklPTl9UWVBFOgotICAgICAgY2xlYXJfcGFkZGluZ191bmlvbiAo YnVmLCB0eXBlLCBzeik7CisgICAgICBjbGVhcl9wYWRkaW5nX3VuaW9uIChidWYsIHR5cGUsIHN6 LCBmb3JfYXV0b19pbml0KTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgUkVBTF9UWVBFOgogICAg ICAgZ2NjX2Fzc2VydCAoKHNpemVfdCkgc3ogPD0gY2xlYXJfcGFkZGluZ191bml0KTsKQEAgLTQ4 NTMsMTQgKzQ4NjAsMTQgQEAgY2xlYXJfcGFkZGluZ190eXBlIChjbGVhcl9wYWRkaW5nX3N0cnVj dCAqYnVmLCB0cmVlIHR5cGUsIEhPU1RfV0lERV9JTlQgc3opCiAgICAgICBicmVhazsKICAgICBj YXNlIENPTVBMRVhfVFlQRToKICAgICAgIGZsZHN6ID0gaW50X3NpemVfaW5fYnl0ZXMgKFRSRUVf VFlQRSAodHlwZSkpOwotICAgICAgY2xlYXJfcGFkZGluZ190eXBlIChidWYsIFRSRUVfVFlQRSAo dHlwZSksIGZsZHN6KTsKLSAgICAgIGNsZWFyX3BhZGRpbmdfdHlwZSAoYnVmLCBUUkVFX1RZUEUg KHR5cGUpLCBmbGRzeik7CisgICAgICBjbGVhcl9wYWRkaW5nX3R5cGUgKGJ1ZiwgVFJFRV9UWVBF ICh0eXBlKSwgZmxkc3osIGZvcl9hdXRvX2luaXQpOworICAgICAgY2xlYXJfcGFkZGluZ190eXBl IChidWYsIFRSRUVfVFlQRSAodHlwZSksIGZsZHN6LCBmb3JfYXV0b19pbml0KTsKICAgICAgIGJy ZWFrOwogICAgIGNhc2UgVkVDVE9SX1RZUEU6CiAgICAgICBuZWx0cyA9IFRZUEVfVkVDVE9SX1NV QlBBUlRTICh0eXBlKS50b19jb25zdGFudCAoKTsKICAgICAgIGZsZHN6ID0gaW50X3NpemVfaW5f Ynl0ZXMgKFRSRUVfVFlQRSAodHlwZSkpOwogICAgICAgZm9yIChIT1NUX1dJREVfSU5UIGkgPSAw OyBpIDwgbmVsdHM7IGkrKykKLQljbGVhcl9wYWRkaW5nX3R5cGUgKGJ1ZiwgVFJFRV9UWVBFICh0 eXBlKSwgZmxkc3opOworCWNsZWFyX3BhZGRpbmdfdHlwZSAoYnVmLCBUUkVFX1RZUEUgKHR5cGUp LCBmbGRzeiwgZm9yX2F1dG9faW5pdCk7CiAgICAgICBicmVhazsKICAgICBjYXNlIE5VTExQVFJf VFlQRToKICAgICAgIGdjY19hc3NlcnQgKChzaXplX3QpIHN6IDw9IGNsZWFyX3BhZGRpbmdfdW5p dCk7CkBAIC00ODk2LDcgKzQ5MDMsNyBAQCBjbGVhcl90eXBlX3BhZGRpbmdfaW5fbWFzayAodHJl ZSB0eXBlLCB1bnNpZ25lZCBjaGFyICptYXNrKQogICBidWYuc3ogPSBpbnRfc2l6ZV9pbl9ieXRl cyAodHlwZSk7CiAgIGJ1Zi5zaXplID0gMDsKICAgYnVmLnVuaW9uX3B0ciA9IG1hc2s7Ci0gIGNs ZWFyX3BhZGRpbmdfdHlwZSAoJmJ1ZiwgdHlwZSwgYnVmLnN6KTsKKyAgY2xlYXJfcGFkZGluZ190 eXBlICgmYnVmLCB0eXBlLCBidWYuc3osIGZhbHNlKTsKICAgY2xlYXJfcGFkZGluZ19mbHVzaCAo JmJ1ZiwgdHJ1ZSk7CiB9CiAKQEAgLTQ5MDYsOSArNDkxMywxMCBAQCBzdGF0aWMgYm9vbAogZ2lt cGxlX2ZvbGRfYnVpbHRpbl9jbGVhcl9wYWRkaW5nIChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3Np KQogewogICBnaW1wbGUgKnN0bXQgPSBnc2lfc3RtdCAoKmdzaSk7Ci0gIGdjY19hc3NlcnQgKGdp bXBsZV9jYWxsX251bV9hcmdzIChzdG10KSA9PSAyKTsKKyAgZ2NjX2Fzc2VydCAoZ2ltcGxlX2Nh bGxfbnVtX2FyZ3MgKHN0bXQpID09IDMpOwogICB0cmVlIHB0ciA9IGdpbXBsZV9jYWxsX2FyZyAo c3RtdCwgMCk7CiAgIHRyZWUgdHlwZWFyZyA9IGdpbXBsZV9jYWxsX2FyZyAoc3RtdCwgMSk7Cisg IGJvb2wgZm9yX2F1dG9faW5pdCA9IChib29sKSBUUkVFX0lOVF9DU1RfTE9XIChnaW1wbGVfY2Fs bF9hcmcgKHN0bXQsIDIpKTsKICAgdHJlZSB0eXBlID0gVFJFRV9UWVBFIChUUkVFX1RZUEUgKHR5 cGVhcmcpKTsKICAgbG9jYXRpb25fdCBsb2MgPSBnaW1wbGVfbG9jYXRpb24gKHN0bXQpOwogICBj bGVhcl9wYWRkaW5nX3N0cnVjdCBidWY7CkBAIC00OTY1LDcgKzQ5NzMsNyBAQCBnaW1wbGVfZm9s ZF9idWlsdGluX2NsZWFyX3BhZGRpbmcgKGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2kpCiAJICBi dWYuc3ogPSBlbHRzejsKIAkgIGJ1Zi5hbGlnbiA9IFRZUEVfQUxJR04gKGVsdHR5cGUpOwogCSAg YnVmLmFsaWFzX3R5cGUgPSBidWlsZF9wb2ludGVyX3R5cGUgKGVsdHR5cGUpOwotCSAgY2xlYXJf cGFkZGluZ19lbWl0X2xvb3AgKCZidWYsIGVsdHR5cGUsIGVuZCk7CisJICBjbGVhcl9wYWRkaW5n X2VtaXRfbG9vcCAoJmJ1ZiwgZWx0dHlwZSwgZW5kLCBmb3JfYXV0b19pbml0KTsKIAl9CiAgICAg fQogICBlbHNlCkBAIC00OTc4LDcgKzQ5ODYsNyBAQCBnaW1wbGVfZm9sZF9idWlsdGluX2NsZWFy X3BhZGRpbmcgKGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2kpCiAJICBnc2lfaW5zZXJ0X2JlZm9y ZSAoZ3NpLCBnLCBHU0lfU0FNRV9TVE1UKTsKIAl9CiAgICAgICBidWYuYWxpYXNfdHlwZSA9IGJ1 aWxkX3BvaW50ZXJfdHlwZSAodHlwZSk7Ci0gICAgICBjbGVhcl9wYWRkaW5nX3R5cGUgKCZidWYs IHR5cGUsIGJ1Zi5zeik7CisgICAgICBjbGVhcl9wYWRkaW5nX3R5cGUgKCZidWYsIHR5cGUsIGJ1 Zi5zeiwgZm9yX2F1dG9faW5pdCk7CiAgICAgICBjbGVhcl9wYWRkaW5nX2ZsdXNoICgmYnVmLCB0 cnVlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2djYy9naW1wbGlmeS5jIGIvZ2NjL2dpbXBsaWZ5 LmMKaW5kZXggOTNhMjEyMWZlYTE4Li5jZWU4NjQ5Y2YzYTcgMTAwNjQ0Ci0tLSBhL2djYy9naW1w bGlmeS5jCisrKyBiL2djYy9naW1wbGlmeS5jCkBAIC0yNDksNiArMjQ5LDExIEBAIHN0YXRpYyBl bnVtIGdpbXBsaWZ5X3N0YXR1cyBnaW1wbGlmeV9jb21wb3VuZF9leHByICh0cmVlICosIGdpbXBs ZV9zZXEgKiwgYm9vbCk7CiBzdGF0aWMgaGFzaF9tYXA8dHJlZSwgdHJlZT4gKm9hY2NfZGVjbGFy ZV9yZXR1cm5zOwogc3RhdGljIGVudW0gZ2ltcGxpZnlfc3RhdHVzIGdpbXBsaWZ5X2V4cHIgKHRy ZWUgKiwgZ2ltcGxlX3NlcSAqLCBnaW1wbGVfc2VxICosCiAJCQkJCSAgIGJvb2wgKCopICh0cmVl KSwgZmFsbGJhY2tfdCwgYm9vbCk7CitzdGF0aWMgdm9pZCBnaW1wbGVfYWRkX2luaXRfZm9yX2F1 dG9fdmFyICh0cmVlLCBlbnVtIGF1dG9faW5pdF90eXBlLCBib29sLAorCQkJCQkgIGdpbXBsZV9z ZXEgKik7CitzdGF0aWMgdm9pZCBtYXliZV93aXRoX3NpemVfZXhwciAodHJlZSAqKTsKK3N0YXRp YyB2b2lkIHByZXBhcmVfZ2ltcGxlX2FkZHJlc3NhYmxlICh0cmVlICosIGdpbXBsZV9zZXEgKik7 CisKIAogLyogU2hvcnRlciBhbGlhcyBuYW1lIGZvciB0aGUgYWJvdmUgZnVuY3Rpb24gZm9yIHVz ZSBpbiBnaW1wbGlmeS5jCiAgICBvbmx5LiAgKi8KQEAgLTE3NDMsNiArMTc0OCwxMTQgQEAgZm9y Y2VfbGFiZWxzX3IgKHRyZWUgKnRwLCBpbnQgKndhbGtfc3VidHJlZXMsIHZvaWQgKmRhdGEgQVRU UklCVVRFX1VOVVNFRCkKICAgcmV0dXJuIE5VTExfVFJFRTsKIH0KIAorCisvKiBCdWlsZCBhIGNh bGwgdG8gaW50ZXJuYWwgY29uc3QgZnVuY3Rpb24gREVGRVJSRURfSU5JVDoKKyAgIDFzdCBhcmd1 bWVudDogU0laRSBvZiB0aGUgREVDTDsKKyAgIDJuZCBhcmd1bWVudDogSU5JVF9UWVBFOworICAg M3JkIGFyZ3VtZW50OiBJU19WTEEsIDAgTk8sIDEgWUVTOworCisgICBhcyBERUZFUlJFRF9JTklU IChTSVpFIG9mIHRoZSBERUNMLCBJTklUX1RZUEUsIElTX1ZMQSkuICAqLworCitzdGF0aWMgZ2lt cGxlICoKK2J1aWxkX2RlZmVycmVkX2luaXQgKHRyZWUgZGVjbCwKKwkJICAgICBlbnVtIGF1dG9f aW5pdF90eXBlIGluaXRfdHlwZSwKKwkJICAgICBib29sIGlzX3ZsYSkKK3sKKyAgZ2NjX2Fzc2Vy dCAoKGlzX3ZsYSAmJiBUUkVFX0NPREUgKGRlY2wpID09IFdJVEhfU0laRV9FWFBSKQorCSAgICAg IHx8ICghaXNfdmxhICYmIFRSRUVfQ09ERSAoZGVjbCkgIT0gV0lUSF9TSVpFX0VYUFIpKTsKKwor ICB0cmVlIGRlY2xfc2l6ZSA9IE5VTExfVFJFRTsKKyAgdHJlZSBpbml0X3R5cGVfbm9kZQorICAg ID0gYnVpbGRfaW50X2NzdCAoaW50ZWdlcl90eXBlX25vZGUsIChpbnQpIGluaXRfdHlwZSk7Cisg IHRyZWUgaXNfdmxhX25vZGUKKyAgICA9IGJ1aWxkX2ludF9jc3QgKGludGVnZXJfdHlwZV9ub2Rl LCAoaW50KSBpc192bGEpOworCisgICBpZiAoVFJFRV9DT0RFIChkZWNsKSA9PSBXSVRIX1NJWkVf RVhQUikKKyAgICAgZGVjbF9zaXplID0gVFJFRV9PUEVSQU5EIChkZWNsLCAxKTsKKyAgIGVsc2UK KyAgICAgZGVjbF9zaXplID0gVFlQRV9TSVpFX1VOSVQgKFRSRUVfVFlQRSAoZGVjbCkpOworCisg ICByZXR1cm4gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwgKElGTl9ERUZFUlJFRF9JTklULCAz LAorCQkJCSAgICAgIGRlY2xfc2l6ZSwgaW5pdF90eXBlX25vZGUsIGlzX3ZsYV9ub2RlKTsKK30K KworLyogR2VuZXJhdGUgaW5pdGlhbGl6YXRpb24gdG8gYXV0b21hdGljIHZhcmlhYmxlIERFQ0wg YmFzZWQgb24gSU5JVF9UWVBFLiAgKi8KK3N0YXRpYyB2b2lkCitnaW1wbGVfYWRkX2luaXRfZm9y X2F1dG9fdmFyICh0cmVlIGRlY2wsCisJCQkgICAgICBlbnVtIGF1dG9faW5pdF90eXBlIGluaXRf dHlwZSwKKwkJCSAgICAgIGJvb2wgaXNfdmxhLAorCQkJICAgICAgZ2ltcGxlX3NlcSAqc2VxX3Ap Cit7CisgIGdjY19hc3NlcnQgKFZBUl9QIChkZWNsKSAmJiAhREVDTF9FWFRFUk5BTCAoZGVjbCkg JiYgIVRSRUVfU1RBVElDIChkZWNsKSk7CisgIGdjY19hc3NlcnQgKGluaXRfdHlwZSA+IEFVVE9f SU5JVF9VTklOSVRJQUxJWkVEKTsKKworICAvKiBJZiB0aGlzIERFQ0wgaXMgYSB2YXJpYWJsZSBz aXplZCB0eXBlLCB3ZSBtdXN0IHJlbWVtYmVyIHRoZSBzaXplLiAgKi8KKyAgdHJlZSBvcmlnX2Rl Y2wgPSBkZWNsOworICBtYXliZV93aXRoX3NpemVfZXhwciAoJmRlY2wpOworCisgIGdpbXBsZSAq Y2FsbCA9IGJ1aWxkX2RlZmVycmVkX2luaXQgKGRlY2wsIGluaXRfdHlwZSwgaXNfdmxhKTsKKyAg Z2ltcGxlX2NhbGxfc2V0X2xocyAoY2FsbCwgb3JpZ19kZWNsKTsKKyAgZ2ltcGxpZnlfc2VxX2Fk ZF9zdG10IChzZXFfcCwgY2FsbCk7Cit9CisKKy8qIEdlbmVyYXRlIHBhZGRpbmcgaW5pdGlhbGl6 YXRpb24gZm9yIGF1dG9tYXRpYyB2YWlyYWJsZSBERUNMLgorICAgQyBndWFyYW50ZWVzIHRoYXQg YnJhY2UtaW5pdCB3aXRoIGZld2VyIGluaXRpYWxpemVycyB0aGFuIG1lbWJlcnMKKyAgIGFnZ3Jl Z2F0ZSB3aWxsIGluaXRpYWxpemUgdGhlIHJlc3Qgb2YgdGhlIGFnZ3JlZ2F0ZSBhcy1pZiBpdCB3 ZXJlCisgICBzdGF0aWMgaW5pdGlhbGl6YXRpb24uICBJbiB0dXJuIHN0YXRpYyBpbml0aWFsaXph dGlvbiBndWFyYW50ZWVzCisgICB0aGF0IHBhZGRpbmcgaXMgaW5pdGlhbGl6ZWQgdG8gemVyby4g U28sIHdlIGFsd2F5cyBpbml0aWFsaXplIHBhZGRpbmdzCisgICB0byB6ZXJvZXMgcmVnYXJkbGVz cyBJTklUX1RZUEUuCisgICBUbyBkbyB0aGUgcGFkZGluZyBpbml0aWFsaXphdGlvbiwgd2UgaW5z ZXJ0IGEgY2FsbCB0bworICAgX19CVUlMVElOX0NMRUFSX1BBRERJTkcgKCZkZWNsLCAwLCBmb3Jf YXV0b19pbml0ID0gdHJ1ZSkuCisgICAqLworc3RhdGljIHZvaWQKK2dpbXBsZV9hZGRfcGFkZGlu Z19pbml0X2Zvcl9hdXRvX3ZhciAodHJlZSBkZWNsLCBib29sIGlzX3ZsYSwKKwkJCQkgICAgICBn aW1wbGVfc2VxICpzZXFfcCkKK3sKKyAgdHJlZSBhZGRyX29mX2RlY2wgPSBOVUxMX1RSRUU7Cisg IGJvb2wgZm9yX2F1dG9faW5pdCA9IHRydWU7CisgIHRyZWUgZm4gPSBidWlsdGluX2RlY2xfZXhw bGljaXQgKEJVSUxUX0lOX0NMRUFSX1BBRERJTkcpOworCisgIGlmIChpc192bGEpCisgICAgewor ICAgICAgLyogVGhlIHRlbXBvcmFyeSBhZGRyZXNzIHZhcmlhYmxlIGZvciB0aGlzIHZsYSBzaG91 bGQgYmUKKwkgY3JlYXRlZCBpbiBnaW1wbGlmeV92bGFfZGVjbC4gICovCisgICAgICBnY2NfYXNz ZXJ0IChERUNMX0hBU19WQUxVRV9FWFBSX1AgKGRlY2wpKTsKKyAgICAgIGdjY19hc3NlcnQgKFRS RUVfQ09ERSAoREVDTF9WQUxVRV9FWFBSIChkZWNsKSkgPT0gSU5ESVJFQ1RfUkVGKTsKKyAgICAg IGFkZHJfb2ZfZGVjbCA9IFRSRUVfT1BFUkFORCAoREVDTF9WQUxVRV9FWFBSIChkZWNsKSwgMCk7 CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgcHJlcGFyZV9naW1wbGVfYWRkcmVzc2FibGUg KCZkZWNsLCBzZXFfcCk7CisgICAgICBtYXJrX2FkZHJlc3NhYmxlIChkZWNsKTsKKyAgICAgIGFk ZHJfb2ZfZGVjbCA9IGJ1aWxkX2ZvbGRfYWRkcl9leHByIChkZWNsKTsKKyAgICB9CisKKworICAv KiBmb3IgbGFuZ3VhZ2VzIHRoYXQgZG8gbm90IHN1cHBvcnQgQlVJTFRfSU5fQ0xFQVJfUEFERElO RywgY3JlYXRlIHRoZQorICAgICBmdW5jdGlvbiBub2RlIGZvciBwYWRkaW5nIGluaXRpYWxpemF0 aW9uLiAgKi8KKyAgaWYgKCFmbikKKyAgICB7CisgICAgICB0cmVlIGZ0eXBlID0gYnVpbGRfZnVu Y3Rpb25fdHlwZV9saXN0ICh2b2lkX3R5cGVfbm9kZSwKKwkJCQkJICAgICBwdHJfdHlwZV9ub2Rl LAorCQkJCQkgICAgIHB0cl90eXBlX25vZGUsCisJCQkJCSAgICAgaW50ZWdlcl90eXBlX25vZGUs CisJCQkJCSAgICAgTlVMTF9UUkVFKTsKKyAgICAgIGZuID0gYWRkX2J1aWx0aW5fZnVuY3Rpb24g KCJfX2J1aWx0aW5fY2xlYXJfcGFkZGluZyIsIGZ0eXBlLAorCQkJCSBCVUlMVF9JTl9DTEVBUl9Q QURESU5HLCBCVUlMVF9JTl9OT1JNQUwsCisJCQkJIE5VTEwsIE5VTExfVFJFRSk7CisgICAgICBz ZXRfY2FsbF9leHByX2ZsYWdzIChmbiwgRUNGX05PVEhST1cgfCBFQ0ZfTEVBRik7CisgICAgICBz ZXRfYnVpbHRpbl9kZWNsIChCVUlMVF9JTl9DTEVBUl9QQURESU5HLCBmbiwgZmFsc2UpOworICAg IH0KKworICBnaW1wbGUgKmNhbGwgPSBnaW1wbGVfYnVpbGRfY2FsbCAoZm4sCisJCQkJICAgIDMs IGFkZHJfb2ZfZGVjbCwKKwkJCQkgICAgYnVpbGRfemVyb19jc3QgKFRSRUVfVFlQRSAoYWRkcl9v Zl9kZWNsKSksCisJCQkJICAgIGJ1aWxkX2ludF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLAorCQkJ CQkJICAgKGludCkgZm9yX2F1dG9faW5pdCkpOworICBnaW1wbGlmeV9zZXFfYWRkX3N0bXQgKHNl cV9wLCBjYWxsKTsKK30KKworCiAvKiBHaW1wbGlmeSBhIERFQ0xfRVhQUiBub2RlICpTVE1UX1Ag YnkgbWFraW5nIGFueSBuZWNlc3NhcnkgYWxsb2NhdGlvbgogICAgYW5kIGluaXRpYWxpemF0aW9u IGV4cGxpY2l0LiAgKi8KIApAQCAtMTgzOSw2ICsxOTUyLDMxIEBAIGdpbXBsaWZ5X2RlY2xfZXhw ciAodHJlZSAqc3RtdF9wLCBnaW1wbGVfc2VxICpzZXFfcCkKIAkgICAgICAgYXMgdGhleSBtYXkg Y29udGFpbiBhIGxhYmVsIGFkZHJlc3MuICAqLwogCSAgICB3YWxrX3RyZWUgKCZpbml0LCBmb3Jj ZV9sYWJlbHNfciwgTlVMTCwgTlVMTCk7CiAJfQorICAgICAgLyogV2hlbiB0aGVyZSBpcyBubyBl eHBsaWNpdCBpbml0aWFsaXplciwgaWYgdGhlIHVzZXIgcmVxdWVzdGVkLAorCSBXZSBzaG91bGQg aW5zZXJ0IGFuIGFydGlmaWNhbCBpbml0aWFsaXplciBmb3IgdGhpcyBhdXRvbWF0aWMKKwkgdmFy aWFibGUuICAqLworICAgICAgZWxzZSBpZiAob3B0X2Zvcl9mbiAoY3VycmVudF9mdW5jdGlvbl9k ZWNsLCBmbGFnX2F1dG9fdmFyX2luaXQpCisJCSA+IEFVVE9fSU5JVF9VTklOSVRJQUxJWkVECisJ ICAgICAgICYmICFsb29rdXBfYXR0cmlidXRlICgidW5pbml0aWFsaXplZCIsIERFQ0xfQVRUUklC VVRFUyAoZGVjbCkpCisJICAgICAgICYmICFUUkVFX1NUQVRJQyAoZGVjbCkpCisJeworCSAgZ2lt cGxlX2FkZF9pbml0X2Zvcl9hdXRvX3ZhciAoZGVjbCwKKwkJCQkJb3B0X2Zvcl9mbiAoY3VycmVu dF9mdW5jdGlvbl9kZWNsLAorCQkJCQkJICAgIGZsYWdfYXV0b192YXJfaW5pdCksCisJCQkJCWlz X3ZsYSwKKwkJCQkJc2VxX3ApOworCSAgLyogVGhlIGV4cGFuZGluZyBvZiBhIGNhbGwgdG8gdGhl IGFib3ZlIC5ERUZFUlJFRF9JTklUIHdpbGwgYXBwbHkKKwkgICAgIGJsb2NrIGluaXRpYWxpemF0 aW9uIHRvIHRoZSB3aG9sZSBzcGFjZSBjb3ZlcmVkIGJ5IHRoaXMgdmFyaWFibGUuCisJICAgICBB cyBhIHJlc3VsdCwgYWxsIHRoZSBwYWRkaW5ncyB3aWxsIGJlIGluaXRpYWxpemVkIHRvIHplcm9l cworCSAgICAgZm9yIHplcm8gaW5pdGlhbGl6YXRpb24gYW5kIDB4RkUgYnl0ZS1yZXBlYXRhYmxl IHBhdHRlcm5zIGZvcgorCSAgICAgcGF0dGVybiBpbml0aWFsaXphdGlvbi4KKwkgICAgIEluIG9y ZGVyIHRvIG1ha2UgdGhlIHBhZGRpbmdzIGFzIHplcm9lcyBmb3IgcGF0dGVybiBpbml0LCBXZQor CSAgICAgc2hvdWxkIGFkZCBhIGNhbGwgdG8gX19idWlsdGluX2NsZWFyX3BhZGRpbmcgdG8gY2xl YXIgdGhlCisJICAgICBwYWRkaW5ncyB0byB6ZXJvIGluIGNvbXBhdGlwbGUgd2l0aCBDTEFORy4g ICovCisJICBpZiAob3B0X2Zvcl9mbiAoY3VycmVudF9mdW5jdGlvbl9kZWNsLCBmbGFnX2F1dG9f dmFyX2luaXQpCisJICAgICAgPT0gQVVUT19JTklUX1BBVFRFUk4pCisJICAgIGdpbXBsZV9hZGRf cGFkZGluZ19pbml0X2Zvcl9hdXRvX3ZhciAoZGVjbCwgaXNfdmxhLCBzZXFfcCk7CisJfQogICAg IH0KIAogICByZXR1cm4gR1NfQUxMX0RPTkU7CkBAIC0zNDEwLDExICszNTQ4LDE1IEBAIGdpbXBs aWZ5X2NhbGxfZXhwciAodHJlZSAqZXhwcl9wLCBnaW1wbGVfc2VxICpwcmVfcCwgYm9vbCB3YW50 X3ZhbHVlKQogCSAgewogCSAgICAvKiBSZW1lbWJlciB0aGUgb3JpZ2luYWwgdHlwZSBvZiB0aGUg YXJndW1lbnQgaW4gYW4gaW50ZXJuYWwKIAkgICAgICAgZHVtbXkgc2Vjb25kIGFyZ3VtZW50LCBh cyBpbiBHSU1QTEUgcG9pbnRlciBjb252ZXJzaW9ucyBhcmUKLQkgICAgICAgdXNlbGVzcy4gICov CisJICAgICAgIHVzZWxlc3MuIGFsc28gbWFyayB0aGlzIGNhbGwgYXMgbm90IGZvciBhdXRvbWF0 aWMgaW5pdGlhbGl6YXRpb24KKwkgICAgICAgaW4gdGhlIGludGVybmFsIGR1bW15IHRoaXJkIGFy Z3VtZW50LiAgKi8KIAkgICAgcCA9IENBTExfRVhQUl9BUkcgKCpleHByX3AsIDApOworCSAgICBi b29sIGZvcl9hdXRvX2luaXQgPSBmYWxzZTsKIAkgICAgKmV4cHJfcAotCSAgICAgID0gYnVpbGRf Y2FsbF9leHByX2xvYyAoRVhQUl9MT0NBVElPTiAoKmV4cHJfcCksIGZuZGVjbCwgMiwgcCwKLQkJ CQkgICAgIGJ1aWxkX3plcm9fY3N0IChUUkVFX1RZUEUgKHApKSk7CisJICAgICAgPSBidWlsZF9j YWxsX2V4cHJfbG9jIChFWFBSX0xPQ0FUSU9OICgqZXhwcl9wKSwgZm5kZWNsLCAzLCBwLAorCQkJ CSAgICAgYnVpbGRfemVyb19jc3QgKFRSRUVfVFlQRSAocCkpLAorCQkJCSAgICAgYnVpbGRfaW50 X2NzdCAoaW50ZWdlcl90eXBlX25vZGUsCisJCQkJCQkgICAgKGludCkgZm9yX2F1dG9faW5pdCkp OwogCSAgICByZXR1cm4gR1NfT0s7CiAJICB9CiAJYnJlYWs7CkBAIC01MjgwLDYgKzU0MjIsNyBA QCBnaW1wbGlmeV9tb2RpZnlfZXhwcl9yaHMgKHRyZWUgKmV4cHJfcCwgdHJlZSAqZnJvbV9wLCB0 cmVlICp0b19wLAogewogICBlbnVtIGdpbXBsaWZ5X3N0YXR1cyByZXQgPSBHU19VTkhBTkRMRUQ7 CiAgIGJvb2wgY2hhbmdlZDsKKyAgdHJlZSBvYmplY3QgPSBOVUxMX1RSRUU7CiAKICAgZG8KICAg ICB7CkBAIC01Mzk0LDYgKzU1MzcsMTkgQEAgZ2ltcGxpZnlfbW9kaWZ5X2V4cHJfcmhzICh0cmVl ICpleHByX3AsIHRyZWUgKmZyb21fcCwgdHJlZSAqdG9fcCwKIAkgICAgIGNyYWNrIGF0IHRoaXMg YmVmb3JlIHdlIGJyZWFrIGl0IGRvd24uICAqLwogCSAgaWYgKHJldCAhPSBHU19VTkhBTkRMRUQp CiAJICAgIGJyZWFrOworCSAgLyogSWYgdGhlIHVzZXIgcmVxdWVzdHMgdG8gaW5pdGlhbGl6ZSBh dXRvbWF0aWMgdmFyaWFibGVzLCB3ZQorCSAgICAgc2hvdWxkIGluaXRpYWxpemUgcGFkZGluZ3Mg aW5zaWRlIHRoZSB2YXJpYWJsZS4gQWRkIGEgY2FsbCB0bworCSAgICAgX19CVUlMVElOX0NMRUFS X1BBRERJTkcgKCZvYmplY3QsIDAsIGZvcl9hdXRvX2luaXQgPSB0cnVlKSB0bworCSAgICAgaW5p dGlhbGl6ZSBwYWRkaW5ncyBvZiBvYmplY3QgYWx3YXlzIHRvIHplcm8gcmVnYXJkbGVzcyBvZgor CSAgICAgSU5JVF9UWVBFLiAgKi8KKwkgIG9iamVjdCA9IFRSRUVfT1BFUkFORCAoKmV4cHJfcCwg MCk7CisJICBpZiAob3B0X2Zvcl9mbiAoY3VycmVudF9mdW5jdGlvbl9kZWNsLCBmbGFnX2F1dG9f dmFyX2luaXQpCisJCT4gQVVUT19JTklUX1VOSU5JVElBTElaRUQKKwkgICAgICAmJiBWQVJfUCAo b2JqZWN0KQorCSAgICAgICYmICFERUNMX0VYVEVSTkFMIChvYmplY3QpCisJICAgICAgJiYgIVRS RUVfU1RBVElDIChvYmplY3QpKQorCSAgICBnaW1wbGVfYWRkX3BhZGRpbmdfaW5pdF9mb3JfYXV0 b192YXIgKG9iamVjdCwgZmFsc2UsIHByZV9wKTsKKwogCSAgLyogSWYgd2UncmUgaW5pdGlhbGl6 aW5nIGZyb20gYSBDT05TVFJVQ1RPUiwgYnJlYWsgdGhpcyBpbnRvCiAJICAgICBpbmRpdmlkdWFs IE1PRElGWV9FWFBScy4gICovCiAJICByZXR1cm4gZ2ltcGxpZnlfaW5pdF9jb25zdHJ1Y3RvciAo ZXhwcl9wLCBwcmVfcCwgcG9zdF9wLCB3YW50X3ZhbHVlLApkaWZmIC0tZ2l0IGEvZ2NjL2ludGVy bmFsLWZuLmMgYi9nY2MvaW50ZXJuYWwtZm4uYwppbmRleCAxMzYwYTAwZjBiOTMuLjYyMGEyZjlm ZWUyYSAxMDA2NDQKLS0tIGEvZ2NjL2ludGVybmFsLWZuLmMKKysrIGIvZ2NjL2ludGVybmFsLWZu LmMKQEAgLTI5NzcsNiArMjk3NywxMTQgQEAgZXhwYW5kX1VOSVFVRSAoaW50ZXJuYWxfZm4sIGdj YWxsICpzdG10KQogICAgIGVtaXRfaW5zbiAocGF0dGVybik7CiB9CiAKKy8qIEV4cGFuZCB0aGUg SUZOX0RFRkVSUkVEX0lOSVQgZnVuY3Rpb246CisgICBJbml0aWFsaXplIHRoZSBMSFMgdmFyaWFi bGUgd2l0aCB6ZXJvL3BhdHRlcm4gYWNjb3JkaW5nIHRvIGl0cyBzZWNvbmQKKyAgIGFyZ3VtZW50 IElOSVRfVFlQRS4KKyAgIGlmIElOSVRfVFlQRSBpcyBBVVRPX0lOSVRfWkVSTywgdXNlIHplcm9l cyB0byBpbml0aWFsaXplOworICAgaWYgSU5JVF9UWVBFIGlzIEFVVE9fSU5JVF9QQVRURVJOLCB1 c2UgMHhGRSBieXRlLXJlcGVhdGFibGUgcGF0dGVybgorICAgICB0byBpbml0aWFsaXplOworICAg YWxsIHRoZSBtZW1vcnkgY292ZXJlZCBieSB0aGlzIExIUyB2YXJpYWJsZSBpcyBpbml0aWFsaXpl ZCBpbmNsdWRpbmcKKyAgIHBhZGRpbmdzLgorICAgVGhlIHJlYXNvbnMgdG8gY2hvb3NlIDB4RkUg Zm9yIHBhdHRlcm4gaW5pdGlhbGl6YXRpb24gYXJlOgorICAgICAxLiBJdCBpcyBhIG5vbi1jYW5v bmljYWwgdmlydHVhbCBhZGRyZXNzIG9uIHg4Nl82NCwgYW5kIGF0IHRoZQorCWhpZ2ggZW5kIG9m IHRoZSBpMzg2IGtlcm5lbCBhZGRyZXNzIHNwYWNlLgorICAgICAyLiBJdCBpcyBhIHZlcnkgbGFy Z2UgZmxvYXQgdmFsdWUgKC0xLjY5NDczOTUzMDMxNzM3OWUrMzgpLgorICAgICAzLiBJdCBpcyBh bHNvIGFuIHVudXN1YWwgbnVtYmVyIGZvciBpbnRlZ2Vycy4gICovCisjZGVmaW5lIElOSVRfUEFU VEVSTl9WQUxVRSAgMHhGRQorc3RhdGljIHZvaWQKK2V4cGFuZF9ERUZFUlJFRF9JTklUIChpbnRl cm5hbF9mbiwgZ2NhbGwgKnN0bXQpCit7CisgIHRyZWUgdmFyID0gZ2ltcGxlX2NhbGxfbGhzIChz dG10KTsKKyAgdHJlZSBzaXplX29mX3ZhciA9IGdpbXBsZV9jYWxsX2FyZyAoc3RtdCwgMCk7Cisg IHRyZWUgdmxhYWRkciA9IE5VTExfVFJFRTsKKyAgdHJlZSB2YXJfdHlwZSA9IFRSRUVfVFlQRSAo dmFyKTsKKyAgYm9vbCBpc192bGEgPSAoYm9vbCkgVFJFRV9JTlRfQ1NUX0xPVyAoZ2ltcGxlX2Nh bGxfYXJnIChzdG10LCAyKSk7CisgIGVudW0gYXV0b19pbml0X3R5cGUgaW5pdF90eXBlCisgICAg PSAoZW51bSBhdXRvX2luaXRfdHlwZSkgVFJFRV9JTlRfQ1NUX0xPVyAoZ2ltcGxlX2NhbGxfYXJn IChzdG10LCAxKSk7CisKKyAgZ2NjX2Fzc2VydCAoaW5pdF90eXBlID4gQVVUT19JTklUX1VOSU5J VElBTElaRUQpOworCisgIC8qIGlmIHRoaXMgdmFyaWFibGUgaXMgYSBWTEEsIGdldCBpdHMgU0la RSBhbmQgQUREUiBmaXJzdC4gICovCisgIGlmIChpc192bGEpCisgICAgeworICAgICAgLyogVGhl IHRlbXBvcmFyeSBhZGRyZXNzIHZhcmlhYmxlIGZvciB0aGlzIHZsYSBzaG91bGQgaGF2ZSBiZWVu CisJIGNyZWF0ZWQgZHVyaW5nIGdpbXBsaWZpY2F0aW9uIHBoYXNlLiAgUmVmZXIgdG8gZ2ltcGxp ZnlfdmxhX2RlY2wKKwkgZm9yIGRldGFpbHMuICAqLworICAgICAgdHJlZSB2YXJfZGVjbCA9IChU UkVFX0NPREUgKHZhcikgPT0gU1NBX05BTUUpID8KKwkJICAgICAgIFNTQV9OQU1FX1ZBUiAodmFy KSA6IHZhcjsKKyAgICAgIGdjY19hc3NlcnQgKERFQ0xfSEFTX1ZBTFVFX0VYUFJfUCAodmFyX2Rl Y2wpKTsKKyAgICAgIGdjY19hc3NlcnQgKFRSRUVfQ09ERSAoREVDTF9WQUxVRV9FWFBSICh2YXJf ZGVjbCkpID09IElORElSRUNUX1JFRik7CisgICAgICAvKiBHZXQgdGhlIGFkZHJlc3Mgb2YgdGhp cyB2bGEgdmFyaWFibGUuICAqLworICAgICAgdmxhYWRkciA9IFRSRUVfT1BFUkFORCAoREVDTF9W QUxVRV9FWFBSICh2YXJfZGVjbCksIDApOworICAgIH0KKworICBpZiAoaXNfdmxhIHx8ICghdXNl X3JlZ2lzdGVyX2Zvcl9kZWNsICh2YXIpKSkKKyAgICB7CisgICAgLyogSWYgdGhpcyBpcyBhIFZM QSBvciB0aGUgdmFyaWFibGUgaXMgbm90IGluIHJlZ2lzdGVyLAorICAgICAgIGV4cGFuZCB0byBh IG1lbXNldCB0byBpbml0aWFsaXplIGl0LiAgKi8KKyAgICAgIGlmIChUUkVFX0NPREUgKHZhcikg PT0gU1NBX05BTUUpCisJdmFyID0gU1NBX05BTUVfVkFSICh2YXIpOworICAgICAgdHJlZSBhZGRy ID0gaXNfdmxhID8gdmxhYWRkcjogYnVpbGRfZm9sZF9hZGRyX2V4cHIgKHZhcik7CisgICAgICB0 cmVlIHZhbHVlID0gKGluaXRfdHlwZSA9PSBBVVRPX0lOSVRfUEFUVEVSTikgPworCQkgICAgYnVp bGRfaW50X2NzdCAodW5zaWduZWRfY2hhcl90eXBlX25vZGUsCisJCQkJICAgSU5JVF9QQVRURVJO X1ZBTFVFKSA6CisJCSAgICBidWlsZF96ZXJvX2NzdCAodW5zaWduZWRfY2hhcl90eXBlX25vZGUp OworICAgICAgdHJlZSBtX2NhbGwgPSBidWlsZF9jYWxsX2V4cHIgKGJ1aWx0aW5fZGVjbF9pbXBs aWNpdCAoQlVJTFRfSU5fTUVNU0VUKSwKKwkJCQkgICAgIDMsIGFkZHIsIHZhbHVlLCBzaXplX29m X3Zhcik7CisgICAgICAvKiBFeHBhbmQgdGhpcyBtZW1zZXQgY2FsbC4gICovCisgICAgICBleHBh bmRfYnVpbHRpbl9tZW1zZXQgKG1fY2FsbCwgTlVMTF9SVFgsIFRZUEVfTU9ERSAodmFyX3R5cGUp KTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgLyogSWYgdGhpcyB2YXJpYWJsZSBpcyBpbiBh IHJlZ2lzdGVyLCB1c2UgZXhwYW5kX2Fzc2lnbm1lbnQgbWlnaHQKKyAgICAgICBnZW5lcmF0ZSBi ZXR0ZXIgY29kZS4gICovCisgICAgICB0cmVlIHBhdHRlcm4gPSBOVUxMX1RSRUU7CisgICAgICB1 bnNpZ25lZCBIT1NUX1dJREVfSU5UIHRvdGFsX2J5dGVzCisJPSB0cmVlX3RvX3Vod2kgKFRZUEVf U0laRV9VTklUICh2YXJfdHlwZSkpOworCisgICAgICBpZiAoSU5URUdSQUxfVFlQRV9QICh2YXJf dHlwZSkgfHwgUE9JTlRFUl9UWVBFX1AgKHZhcl90eXBlKSkKKwl7CisJICB1bnNpZ25lZCBjaGFy ICpwdHIgPSAodW5zaWduZWQgY2hhciAqKXhtYWxsb2MgKHRvdGFsX2J5dGVzKTsKKwkgIGZvciAo dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdG90YWxfYnl0ZXM7IGkrKykKKwkgICAgcHRyW2ldID0g SU5JVF9QQVRURVJOX1ZBTFVFOworCSAgd2lkZV9pbnQgcmVzdWx0ID0gd2k6OmZyb21fYnVmZmVy IChwdHIsIHRvdGFsX2J5dGVzKTsKKwkgIHBhdHRlcm4gPSAgd2lkZV9pbnRfdG9fdHJlZSAodmFy X3R5cGUsIHJlc3VsdCk7CisJfQorICAgICAgZWxzZSBpZiAoU0NBTEFSX0ZMT0FUX1RZUEVfUCAo dmFyX3R5cGUpKQorCXsKKwkgIHVuc2lnbmVkIGludCBtYXhfaW5kZXggPSAyICsgMiAqIHRvdGFs X2J5dGVzOworCSAgY2hhciAqcHRyPSAoY2hhciAqKXhtYWxsb2MgKG1heF9pbmRleCk7CisJICBw dHJbMF0gPSAnMCc7CisJICBwdHJbMV0gPSAneCc7CisJICBmb3IgKHVuc2lnbmVkIGludCBpID0g MjsgaSA8IG1heF9pbmRleDsgaSArPSAyKQorCSAgICBwdHJbaV0gPSAnRic7CisJICBmb3IgKHVu c2lnbmVkIGludCBpID0gMzsgaSA8IG1heF9pbmRleDsgaSArPSAyKQorCSAgICBwdHJbaV0gPSAn RSc7CisJICBSRUFMX1ZBTFVFX1RZUEUgcl92YXI7CisJICByZWFsX2Zyb21fc3RyaW5nICgmcl92 YXIsIHB0cik7CisJICBwYXR0ZXJuID0gYnVpbGRfcmVhbCAodmFyX3R5cGUsIHJfdmFyKTsKKwl9 CisgICAgICBlbHNlCisJeworCSAgdHJlZSBpbmRleF90eXBlID0gYnVpbGRfaW5kZXhfdHlwZSAo c2l6ZV9pbnQgKHRvdGFsX2J5dGVzIC0gMSkpOworCSAgdHJlZSBhcnJheV90eXBlID0gYnVpbGRf YXJyYXlfdHlwZSAodW5zaWduZWRfY2hhcl90eXBlX25vZGUsCisJCQkJCSAgICAgIGluZGV4X3R5 cGUpOworCSAgdHJlZSBlbGVtZW50ID0gYnVpbGRfaW50X2NzdCAodW5zaWduZWRfY2hhcl90eXBl X25vZGUsCisJCQkJCUlOSVRfUEFUVEVSTl9WQUxVRSk7CisJICB2ZWM8Y29uc3RydWN0b3JfZWx0 LCB2YV9nYz4gKmVsdHMgPSBOVUxMOworCSAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB0 b3RhbF9ieXRlczsgaSsrKQorCSAgICBDT05TVFJVQ1RPUl9BUFBFTkRfRUxUIChlbHRzLCBOVUxM X1RSRUUsIGVsZW1lbnQpOworCSAgcGF0dGVybiA9IGJ1aWxkX2NvbnN0cnVjdG9yIChhcnJheV90 eXBlLCBlbHRzKTsKKwkgIHBhdHRlcm4gPSBidWlsZDEgKFZJRVdfQ09OVkVSVF9FWFBSLCB2YXJf dHlwZSwgcGF0dGVybik7CisJfQorCisgICAgICB0cmVlIGluaXQgPSAoaW5pdF90eXBlID09IEFV VE9fSU5JVF9QQVRURVJOKSA/CisJCSAgIHBhdHRlcm4gOgorCQkgICBidWlsZF96ZXJvX2NzdCAo VFJFRV9UWVBFICh2YXIpKTsKKyAgICAgIGV4cGFuZF9hc3NpZ25tZW50ICh2YXIsIGluaXQsIGZh bHNlKTsKKyAgICB9Cit9CisKIC8qIFRoZSBzaXplIG9mIGFuIE9wZW5BQ0MgY29tcHV0ZSBkaW1l bnNpb24uICAqLwogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZuLmRl ZiBiL2djYy9pbnRlcm5hbC1mbi5kZWYKaW5kZXggM2FjOWFlNjhiMmE2Li5kYzg0YjdiN2NhNzkg MTAwNjQ0Ci0tLSBhL2djYy9pbnRlcm5hbC1mbi5kZWYKKysrIGIvZ2NjL2ludGVybmFsLWZuLmRl ZgpAQCAtMzYwLDYgKzM2MCwxMSBAQCBERUZfSU5URVJOQUxfRk4gKFZFQ19DT05WRVJULCBFQ0Zf Q09OU1QgfCBFQ0ZfTEVBRiB8IEVDRl9OT1RIUk9XLCBOVUxMKQogREVGX0lOVEVSTkFMX0ZOIChV TklRVUUsIEVDRl9OT1RIUk9XLCBOVUxMKQogREVGX0lOVEVSTkFMX0ZOIChQSEksIDAsIE5VTEwp CiAKKy8qIEEgZnVuY3Rpb24gdG8gcmVwcmVzZW50IGFuIGFydGlmaWNhbCBpbml0aWFsaXphdGlv biB0byBhbiB1bmluaXRpYWxpemVkCisgICBhdXRvbWF0aWMgdmFyaWFibGUuICBUaGUgZmlyc3Qg YXJndW1lbnQgaXMgdGhlIHZhcmlhYmxlIGl0c2VsZiwgdGhlCisgICBzZWNvbmQgYXJndW1lbnQg aXMgdGhlIGluaXRpYWxpemF0aW9uIHR5cGUuICAqLworREVGX0lOVEVSTkFMX0ZOIChERUZFUlJF RF9JTklULCBFQ0ZfQ09OU1QgfCBFQ0ZfTEVBRiB8IEVDRl9OT1RIUk9XLCBOVUxMKQorCiAvKiBE SU1fU0laRSBhbmQgRElNX1BPUyByZXR1cm4gdGhlIHNpemUgb2YgYSBwYXJ0aWN1bGFyIGNvbXB1 dGUKICAgIGRpbWVuc2lvbiBhbmQgdGhlIGV4ZWN1dGluZyB0aHJlYWQncyBwb3NpdGlvbiB3aXRo aW4gdGhhdAogICAgZGltZW5zaW9uLiAgRElNX1BPUyBpcyBwdXJlIChhbmQgbm90IGNvbnN0KSBz byB0aGF0IGl0IGlzbid0CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9h dXRvLWluaXQtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTEuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhiOGJhM2RkN2U4ZAotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xLmMK QEAgLTAsMCArMSwzOSBAQAorLyogVmVyaWZ5IHplcm8gaW5pdGlhbGl6YXRpb24gZm9yIGludGVn ZXIgYW5kIHBvaW50ZXIgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXpl cm8gLWZkdW1wLXRyZWUtZ2ltcGxlIiB9ICovCisKKyNpZm5kZWYgX19jcGx1c3BsdXMKKyMgZGVm aW5lIGJvb2wgX0Jvb2wKKyNlbmRpZgorCitlbnVtIEUgeworICBOMSA9IDAsCisgIE4yLAorICBO MworfTsKKworZXh0ZXJuIHZvaWQgYmFyIChjaGFyLCBzaG9ydCwgaW50LCBlbnVtIEUsIGxvbmcs IGxvbmcgbG9uZywgaW50ICosIGJvb2wpOworCit2b2lkIGZvbygpCit7CisgIGNoYXIgdGVtcDE7 CisgIHNob3J0IHRlbXAyOworICBpbnQgdGVtcDM7CisgIGVudW0gRSB0ZW1wNDsKKyAgbG9uZyB0 ZW1wNTsKKyAgbG9uZyBsb25nIHRlbXA2OworICBpbnQgKnRlbXA3OworICBib29sIHRlbXA4Owor CisgIGJhciAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIHRlbXA1LCB0ZW1wNiwgdGVtcDcs IHRlbXA4KTsKKyAgcmV0dXJuOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAg InRlbXAxID0gLkRFRkVSUkVEX0lOSVQgXFwoMSwgMiwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAyID0gLkRFRkVSUkVEX0lOSVQgXFwo MiwgMiwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAgInRlbXAzID0gLkRFRkVSUkVEX0lOSVQgXFwoNCwgMiwgMFxcKSIgImdpbXBsZSIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXA0ID0gLkRFRkVSUkVEX0lOSVQg XFwoNCwgMiwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAgInRlbXA1ID0gLkRFRkVSUkVEX0lOSVQgXFwoOCwgMiwgMFxcKSIgImdpbXBsZSIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXA2ID0gLkRFRkVSUkVEX0lO SVQgXFwoOCwgMiwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgInRlbXA3ID0gLkRFRkVSUkVEX0lOSVQgXFwoOCwgMiwgMFxcKSIgImdpbXBsZSIg fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXA4ID0gLkRFRkVSUkVE X0lOSVQgXFwoMSwgMiwgMFxcKSIgImdpbXBsZSIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTAuYyBiL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2F1dG8taW5pdC0xMC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uMGE4ODQxZTZlMGY5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vYXV0by1pbml0LTEwLmMKQEAgLTAsMCArMSwxNyBAQAorLyogVmVyaWZ5IHRoZSB2 YXJpYWJsZSBhdHRyaWJ1dGUgInVuaW5pdGlhbGl6ZWQiLiAgKi8gCisvKiB7IGRnLWRvIGNvbXBp bGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD1wYXR0ZXJu IC1mZHVtcC10cmVlLWdpbXBsZSIgfSAqLworCitleHRlcm4gdm9pZCBiYXIgKGNoYXIsIGxvbmcg bG9uZyAqKSBfX2F0dHJpYnV0ZV9fICgodW5pbml0aWFsaXplZCkpOyAvKiB7IGRnLXdhcm5pbmcg Iid1bmluaXRpYWxpemVkJyBhdHRyaWJ1dGUgaWdub3JlZCIgfSAqLworCit2b2lkIGZvbygpCit7 CisgIHNob3J0IHRlbXAxOworICBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXyAoKHVuaW5pdGlhbGl6 ZWQpKSB0ZW1wMlsxMF07CisKKyAgYmFyICh0ZW1wMSwgdGVtcDIpOworICByZXR1cm47Cit9CisK Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDEgPSAuREVGRVJSRURfSU5JVCBc XCgyLCAxLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC1ub3QgInRlbXAyID0gLkRFRkVSUkVEX0lOSVQgXFwoIiAiZ2ltcGxlIiB9IH0gKi8KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xMS5jIGIvZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTExLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hMmQ2NjkwOGQ4M2UKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTEuYwpAQCAtMCwwICsxLDE0IEBA CisvKiBWZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3IgVkxBIGF1dG9tYXRpYyB2YXJpYWJs ZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2 aWFsLWF1dG8tdmFyLWluaXQ9emVybyAtZmR1bXAtdHJlZS1naW1wbGUiIH0gKi8KKworZXh0ZXJu IHZvaWQgYmFyIChpbnQpOworCit2b2lkIGZvbyhpbnQgbikKK3sKKyAgaW50IGFycltuXTsKKyAg YmFyIChhcnJbMl0pOworICByZXR1cm47Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcCAiLkRFRkVSUkVEX0lOSVQgXFwoRC5cXGQqLCAyLCAxXFwpIiAiZ2ltcGxlIiB9IH0gKi8K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xMi5jIGIv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTEyLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMDVkNzQzZmRhMDIKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTIuYwpAQCAtMCwwICsxLDE0 IEBACisvKiBWZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3IgVkxBIGF1dG9tYXRpYyB2YXJp YWJsZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0 cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtdHJlZS1naW1wbGUiIH0gKi8KKwor ZXh0ZXJuIHZvaWQgYmFyIChpbnQpOworCit2b2lkIGZvbyhpbnQgbikKK3sKKyAgaW50IGFycltu XTsKKyAgYmFyIChhcnJbMl0pOworICByZXR1cm47Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAiLkRFRkVSUkVEX0lOSVQgXFwoRC5cXGQqLCAxLCAxXFwpIiAiZ2ltcGxlIiB9 IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0x My5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTEzLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iMGMwMzY1YjI4OGEKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTMuYwpAQCAtMCww ICsxLDIzIEBACisvKiBWZXJpZnkgdGhlIGF1dG8gaW5pdGlhbGl6YXRpb24gb2Ygc3RydWN0dXJl IG9yIHVuaW9uIHdpdGggYSBmbGV4aWJsZSBhcnJheQorICAgbWVtYmVyLiAgKi8gCisvKiB7IGRn LWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5p dD1wYXR0ZXJuIC1mZHVtcC10cmVlLWdpbXBsZSIgfSAqLworCitzdHJ1Y3QgYSB7CisgIGludCBi OworICBpbnQgYXJyYXlbXTsKK307Cit1bmlvbiB0YXIgeworICBzdHJ1Y3QgYSBiYXI7CisgIGNo YXIgYnVmOworfTsKKworaW50IGZvbygpCit7CisgIHN0cnVjdCBhIGQ7CisgIHVuaW9uIHRhciB2 YXI7CisgIHJldHVybiBkLmIgKyB2YXIuYmFyLmI7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAiZCA9IC5ERUZFUlJFRF9JTklUIFxcKDQsIDEsIDBcXCkiICJnaW1wbGUiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ2YXIgPSAuREVGRVJSRURfSU5J VCBcXCg0LCAxLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vYXV0by1pbml0LTE0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li45ODZiYjE5ZmFhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9hdXRvLWluaXQtMTQuYwpAQCAtMCwwICsxLDIzIEBACisvKiBWZXJpZnkgdGhlIGF1dG8g aW5pdGlhbGl6YXRpb24gb2Ygc3RydWN0dXJlIG9yIHVuaW9uIHdpdGggYSBmbGV4aWJsZSBhcnJh eQorICAgbWVtYmVyLiAgKi8gCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIC1mZHVtcC10cmVlLWdpbXBsZSIgfSAq LworCitzdHJ1Y3QgYSB7CisgIGludCBiOworICBpbnQgYXJyYXlbXTsKK307Cit1bmlvbiB0YXIg eworICBzdHJ1Y3QgYSBiYXI7CisgIGNoYXIgYnVmOworfTsKKworaW50IGZvbygpCit7CisgIHN0 cnVjdCBhIGQ7CisgIHVuaW9uIHRhciB2YXI7CisgIHJldHVybiBkLmIgKyB2YXIuYmFyLmI7Cit9 CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiZCA9IC5ERUZFUlJFRF9JTklUIFxc KDQsIDIsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wICJ2YXIgPSAuREVGRVJSRURfSU5JVCBcXCg0LCAyLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xNS5jIGIv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTE1LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hYTlkN2ZhYjY4YTYKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTUuYwpAQCAtMCwwICsxLDEz IEBACisvKiBWZXJpZnkgdGhlIGF1dG8gaW5pdGlhbGl6YXRpb24gb2YgbmVzdGVkIFZMQS4gICov CisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0 by12YXItaW5pdD16ZXJvIC1mZHVtcC10cmVlLWdpbXBsZSIgfSAqLworCit2b2lkIGcodm9pZCAq KTsKKwordm9pZCBmb28oaW50IGEpCit7CisgIGludCB4W2FdW2FdOworICBnKHgpOworfQorCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIi5ERUZFUlJFRF9JTklUIFxcKEQuXFxkKiwg MiwgMVxcKSIgImdpbXBsZSIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9hdXRvLWluaXQtMTYuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8t aW5pdC0xNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODY0OTNl ZWY5ZTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0 by1pbml0LTE2LmMKQEAgLTAsMCArMSwxMyBAQAorLyogVmVyaWZ5IHRoZSBhdXRvIGluaXRpYWxp emF0aW9uIG9mIG5lc3RlZCBWTEEuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsg ZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtdHJlZS1n aW1wbGUiIH0gKi8KKwordm9pZCBnKHZvaWQgKik7CisKK3ZvaWQgZm9vKGludCBhKQoreworICBp bnQgeFthXVthXTsKKyAgZyh4KTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICIuREVGRVJSRURfSU5JVCBcXChELlxcZCosIDEsIDFcXCkiICJnaW1wbGUiIH0gfSAqLwpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTIuYyBiL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi43MTk1NWI1NGJhMDMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMi5jCkBAIC0wLDAgKzEsMzkgQEAKKy8q IFZlcmlmeSBwYXR0ZXJuIGluaXRpYWxpemF0aW9uIGZvciBpbnRlZ2VyIGFuZCBwb2ludGVyIHR5 cGUgYXV0b21hdGljIHZhcmlhYmxlcy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyog eyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD1wYXR0ZXJuIC1mZHVtcC10cmVl LWdpbXBsZSIgfSAqLworCisjaWZuZGVmIF9fY3BsdXNwbHVzCisjIGRlZmluZSBib29sIF9Cb29s CisjZW5kaWYKKworZW51bSBFIHsKKyAgTjEgPSAwLAorICBOMiwKKyAgTjMKK307CisKK2V4dGVy biB2b2lkIGJhciAoY2hhciwgc2hvcnQsIGludCwgZW51bSBFLCBsb25nLCBsb25nIGxvbmcsIGlu dCAqLCBib29sKTsKKwordm9pZCBmb28oKQoreworICBjaGFyIHRlbXAxOworICBzaG9ydCB0ZW1w MjsKKyAgaW50IHRlbXAzOworICBlbnVtIEUgdGVtcDQ7CisgIGxvbmcgdGVtcDU7CisgIGxvbmcg bG9uZyB0ZW1wNjsKKyAgaW50ICp0ZW1wNzsKKyAgYm9vbCB0ZW1wODsKKworICBiYXIgKHRlbXAx LCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCB0ZW1wNSwgdGVtcDYsIHRlbXA3LCB0ZW1wOCk7CisgIHJl dHVybjsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wMSA9IC5ERUZF UlJFRF9JTklUIFxcKDEsIDEsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wICJ0ZW1wMiA9IC5ERUZFUlJFRF9JTklUIFxcKDIsIDEsIDBcXCkiICJn aW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wMyA9IC5E RUZFUlJFRF9JTklUIFxcKDQsIDEsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wNCA9IC5ERUZFUlJFRF9JTklUIFxcKDQsIDEsIDBcXCki ICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wNSA9 IC5ERUZFUlJFRF9JTklUIFxcKDgsIDEsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wNiA9IC5ERUZFUlJFRF9JTklUIFxcKDgsIDEsIDBc XCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1w NyA9IC5ERUZFUlJFRF9JTklUIFxcKDgsIDEsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wOCA9IC5ERUZFUlJFRF9JTklUIFxcKDEsIDEs IDBcXCkiICJnaW1wbGUiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vYXV0by1pbml0LTMuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5p dC0zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zMTIyNzU2NjYz ODEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWlu aXQtMy5jCkBAIC0wLDAgKzEsMTkgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZv ciBmbG9hdGluZyBwb2ludCB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMuICAqLworLyogeyBkZy1k byBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9 emVybyAtZmR1bXAtdHJlZS1naW1wbGUiIH0gKi8KKworbG9uZyBkb3VibGUgcmVzdWx0OworCits b25nIGRvdWJsZSBmb28oKQoreworICBmbG9hdCB0ZW1wMTsKKyAgZG91YmxlIHRlbXAyOworICBs b25nIGRvdWJsZSB0ZW1wMzsKKyAgCisgIHJlc3VsdCA9IHRlbXAxICsgdGVtcDIgKyB0ZW1wMzsK KyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0 ZW1wMSA9IC5ERUZFUlJFRF9JTklUIFxcKDQsIDIsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wMiA9IC5ERUZFUlJFRF9JTklUIFxcKDgs IDIsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICJ0ZW1wMyA9IC5ERUZFUlJFRF9JTklUIFxcKDE2LCAyLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC00LmMgYi9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtNC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTVhNDMxNzI2ZGNkCi0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTQuYwpAQCAtMCwwICsxLDE5IEBA CisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgZmxvYXRpbmcgcG9pbnQgdHlw ZSBhdXRvbWF0aWMgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXRyZWUt Z2ltcGxlIiB9ICovCisKK2xvbmcgZG91YmxlIHJlc3VsdDsKKworbG9uZyBkb3VibGUgZm9vKCkK K3sKKyAgZmxvYXQgdGVtcDE7CisgIGRvdWJsZSB0ZW1wMjsKKyAgbG9uZyBkb3VibGUgdGVtcDM7 CisgIAorICByZXN1bHQgPSB0ZW1wMSArIHRlbXAyICsgdGVtcDM7CisgIHJldHVybiByZXN1bHQ7 Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDEgPSAuREVGRVJSRURf SU5JVCBcXCg0LCAxLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAidGVtcDIgPSAuREVGRVJSRURfSU5JVCBcXCg4LCAxLCAwXFwpIiAiZ2ltcGxl IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDMgPSAuREVGRVJS RURfSU5JVCBcXCgxNiwgMSwgMFxcKSIgImdpbXBsZSIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vYXV0by1pbml0LTUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjU0ZjkwYmM4OTBiNQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL2F1dG8taW5pdC01LmMKQEAgLTAsMCArMSwyMSBAQAorLyogVmVyaWZ5IHplcm8g aW5pdGlhbGl6YXRpb24gZm9yIGNvbXBsZXggdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzLiAgKi8K Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRv LXZhci1pbml0PXplcm8gLWZkdW1wLXRyZWUtZ2ltcGxlIiB9ICovCisKKworX0NvbXBsZXggbG9u ZyBkb3VibGUgcmVzdWx0OworCitfQ29tcGxleCBsb25nIGRvdWJsZSBmb28oKQoreworICBfQ29t cGxleCBmbG9hdCB0ZW1wMTsKKyAgX0NvbXBsZXggZG91YmxlIHRlbXAyOworICBfQ29tcGxleCBs b25nIGRvdWJsZSB0ZW1wMzsKKworICByZXN1bHQgPSB0ZW1wMSArIHRlbXAyICsgdGVtcDM7Cisg IHJldHVybiByZXN1bHQ7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVt cDEgPSAuREVGRVJSRURfSU5JVCBcXCg4LCAyLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDIgPSAuREVGRVJSRURfSU5JVCBcXCgxNiwg MiwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAg InRlbXAzID0gLkRFRkVSUkVEX0lOSVQgXFwoMzIsIDIsIDBcXCkiICJnaW1wbGUiIH0gfSAqLwor CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtNi5jIGIv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTYuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQxMjRhMmIxODNhYQotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC02LmMKQEAgLTAsMCArMSwyMSBA QAorLyogVmVyaWZ5IHBhdHRlcm4gaW5pdGlhbGl6YXRpb24gZm9yIGNvbXBsZXggdHlwZSBhdXRv bWF0aWMgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXRyZWUtZ2ltcGxl IiB9ICovCisKKworX0NvbXBsZXggbG9uZyBkb3VibGUgcmVzdWx0OworCitfQ29tcGxleCBsb25n IGRvdWJsZSBmb28oKQoreworICBfQ29tcGxleCBmbG9hdCB0ZW1wMTsKKyAgX0NvbXBsZXggZG91 YmxlIHRlbXAyOworICBfQ29tcGxleCBsb25nIGRvdWJsZSB0ZW1wMzsKKworICByZXN1bHQgPSB0 ZW1wMSArIHRlbXAyICsgdGVtcDM7CisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDEgPSAuREVGRVJSRURfSU5JVCBcXCg4LCAxLCAwXFwp IiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDIg PSAuREVGRVJSRURfSU5JVCBcXCgxNiwgMSwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAzID0gLkRFRkVSUkVEX0lOSVQgXFwoMzIsIDEs IDBcXCkiICJnaW1wbGUiIH0gfSAqLworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9hdXRvLWluaXQtNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1p bml0LTcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjE5OTg2OTY5 YThmNwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8t aW5pdC03LmMKQEAgLTAsMCArMSwzNSBAQAorLyogVmVyaWZ5IHplcm8gaW5pdGlhbGl6YXRpb24g Zm9yIGFycmF5LCB1bmlvbiwgYW5kIHN0cnVjdHVyZSB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMu ICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFs LWF1dG8tdmFyLWluaXQ9emVybyAtZmR1bXAtdHJlZS1naW1wbGUiIH0gKi8KKworc3RydWN0IFMK K3sKKyAgaW50IGYxOworICBmbG9hdCBmMjsKKyAgY2hhciBmM1syMF07Cit9OworCit1bmlvbiBV Cit7CisgIGNoYXIgdTFbNV07CisgIGludCB1MjsKKyAgZmxvYXQgdTM7IAorfTsKKworZG91Ymxl IHJlc3VsdDsKKworZG91YmxlIGZvbygpCit7CisgIGludCB0ZW1wMVszXTsKKyAgZG91YmxlIHRl bXAyWzNdOworICBzdHJ1Y3QgUyB0ZW1wMzsKKyAgdW5pb24gVSB0ZW1wNDsKKyAgCisgIHJlc3Vs dCA9IHRlbXAxWzJdICsgdGVtcDJbMV0gKyB0ZW1wMy5mMiArIHRlbXA0LnUzOworICByZXR1cm4g cmVzdWx0OworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAxID0gLkRF RkVSUkVEX0lOSVQgXFwoMTIsIDIsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wMiA9IC5ERUZFUlJFRF9JTklUIFxcKDI0LCAyLCAwXFwp IiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDMg PSAuREVGRVJSRURfSU5JVCBcXCgyOCwgMiwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXA0ID0gLkRFRkVSUkVEX0lOSVQgXFwoOCwgMiwg MFxcKSIgImdpbXBsZSIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9hdXRvLWluaXQtOC5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0 LTguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk3NzhlOTExZTNh ZAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5p dC04LmMKQEAgLTAsMCArMSwzNSBAQAorLyogVmVyaWZ5IHBhdHRlcm4gaW5pdGlhbGl6YXRpb24g Zm9yIGFycmF5LCB1bmlvbiwgYW5kIHN0cnVjdHVyZSB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMu ICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFs LWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtdHJlZS1naW1wbGUiIH0gKi8KKworc3RydWN0 IFMKK3sKKyAgaW50IGYxOworICBmbG9hdCBmMjsKKyAgY2hhciBmM1syMF07Cit9OworCit1bmlv biBVCit7CisgIGNoYXIgdTFbNV07CisgIGludCB1MjsKKyAgZmxvYXQgdTM7IAorfTsKKworZG91 YmxlIHJlc3VsdDsKKworZG91YmxlIGZvbygpCit7CisgIGludCB0ZW1wMVszXTsKKyAgZG91Ymxl IHRlbXAyWzNdOworICBzdHJ1Y3QgUyB0ZW1wMzsKKyAgdW5pb24gVSB0ZW1wNDsKKyAgCisgIHJl c3VsdCA9IHRlbXAxWzJdICsgdGVtcDJbMV0gKyB0ZW1wMy5mMiArIHRlbXA0LnUzOworICByZXR1 cm4gcmVzdWx0OworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAxID0g LkRFRkVSUkVEX0lOSVQgXFwoMTIsIDEsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wMiA9IC5ERUZFUlJFRF9JTklUIFxcKDI0LCAxLCAw XFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVt cDMgPSAuREVGRVJSRURfSU5JVCBcXCgyOCwgMSwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXA0ID0gLkRFRkVSUkVEX0lOSVQgXFwoOCwg MSwgMFxcKSIgImdpbXBsZSIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9hdXRvLWluaXQtOS5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1p bml0LTkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjkwYmJkOGNi MWFmZQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8t aW5pdC05LmMKQEAgLTAsMCArMSwxNyBAQAorLyogVmVyaWZ5IHRoZSB2YXJpYWJsZSBhdHRyaWJ1 dGUgInVuaW5pdGlhbGl6ZWQiLiAgKi8gCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIC1mZHVtcC10cmVlLWdpbXBs ZSIgfSAqLworCitleHRlcm4gdm9pZCBiYXIgKGNoYXIsIGxvbmcgbG9uZyAqKSBfX2F0dHJpYnV0 ZV9fICgodW5pbml0aWFsaXplZCkpOyAvKiB7IGRnLXdhcm5pbmcgIid1bmluaXRpYWxpemVkJyBh dHRyaWJ1dGUgaWdub3JlZCIgfSAqLworCit2b2lkIGZvbygpCit7CisgIHNob3J0IHRlbXAxOwor ICBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXyAoKHVuaW5pdGlhbGl6ZWQpKSB0ZW1wMlsxMF07CisK KyAgYmFyICh0ZW1wMSwgdGVtcDIpOworICByZXR1cm47Cit9CisKKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAidGVtcDEgPSAuREVGRVJSRURfSU5JVCBcXCgyLCAyLCAwXFwpIiAiZ2lt cGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC1ub3QgInRlbXAyID0g LkRFRkVSUkVEX0lOSVQgXFwoOCwgMiwgMFxcKSIgImdpbXBsZSIgfSB9ICovCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtZXNyYS5jIGIvZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LWVzcmEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjc3ZWMwMjM1NWRmNAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC1lc3JhLmMKQEAgLTAsMCArMSwzNSBAQAor LyogVmVyaWZ5IHRoZSBzdHJlbmd0aCByZWR1Y3Rpb24gYWRqdXN0bWVudCBmb3IgLWZ0cml2aWFs LWF1dG8tdmFyLWluaXQuICAqLyAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1PMiAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIC1mZHVtcC10cmVlLWdpbXBs ZSAtZmR1bXAtdHJlZS1lc3JhIiB9ICovCisKKwordHlwZWRlZiBkb3VibGUgVkVDVE9SWzNdOwor CitlbnVtCit7CisgWCA9IDAsCisgWSA9IDEsCisgWiA9IDIsCisgVCA9IDMKK307CisKK3ZvaWQg QXNzaWduX1ZlY3RvcihWRUNUT1IgZCwgVkVDVE9SIHMpCit7CisgZFtYXSA9IHNbWF07CisgZFtZ XSA9IHNbWV07CisgZFtaXSA9IHNbWl07Cit9CisKK3ZvaWQgVkNyb3NzKFZFQ1RPUiBhLCBjb25z dCBWRUNUT1IgYiwgY29uc3QgVkVDVE9SIGMpCit7CisgVkVDVE9SIHRtcDsKKworIHRtcFtYXSA9 IGJbWV0gKiBjW1pdIC0gYltaXSAqIGNbWV07CisgdG1wW1ldID0gYltaXSAqIGNbWF0gLSBiW1hd ICogY1taXTsKKyB0bXBbWl0gPSBiW1hdICogY1tZXSAtIGJbWV0gKiBjW1hdOworCisgQXNzaWdu X1ZlY3RvcihhLCB0bXApOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGlt ZXMgInRtcCA9IC5ERUZFUlJFRF9JTklUIFxcKDI0LCAyLCAwXFwpIiAxICJnaW1wbGUiIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICIuREVGRVJSRURfSU5JVCBc XCg4LCAyLCAwXFwpIiAzICJlc3JhIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL2F1dG8taW5pdC1wYWRkaW5nLTEuYyBiL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2F1dG8taW5pdC1wYWRkaW5nLTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjk3Zjc4ZWU3ZDU2YQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL2F1dG8taW5pdC1wYWRkaW5nLTEuYwpAQCAtMCwwICsxLDIzIEBACisv KiBWZXJpZnkgdGhlIHBhZGRpbmcgaW5pdGlhbGl6YXRpb24gZm9yIHBhdHRlcm4gaW5pdGlhbGl6 YXRpb24sIHdlIGFsd2F5cyBlbWl0CisgKiBhIGNhbGwgdG8gX19idWlsdGluX2NsZWFyX3BhZGRp bmcgdG8gaW5pdGlhbGl6ZSB0aGUgcGFkZGluZ3MgdG8gemVyby4gICovCisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD1wYXR0 ZXJuIC1mZHVtcC10cmVlLWdpbXBsZSIgfSAqLworCisKK3N0cnVjdCB0ZXN0X3NtYWxsX2hvbGUg eworICBpbnQgb25lOworICBjaGFyIHR3bzsKKyAgLyogMyBieXRlIHBhZGRpbmcgaG9sZSBoZXJl LiAqLworICBpbnQgdGhyZWU7CisgIHVuc2lnbmVkIGxvbmcgZm91cjsKK307CisKK2V4dGVybiB2 b2lkIGcgKHN0cnVjdCB0ZXN0X3NtYWxsX2hvbGUpOwordm9pZCBmb28oaW50IGEpCit7CisgIHN0 cnVjdCB0ZXN0X3NtYWxsX2hvbGUgczsgCisgIGcocyk7Cit9CisKKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAiLkRFRkVSUkVEX0lOSVQgXFwoMjQsIDEsIDBcXCkiICJnaW1wbGUiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJfX2J1aWx0aW5fY2xlYXJfcGFk ZGluZyIgImdpbXBsZSIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9hdXRvLWluaXQtcGFkZGluZy0yLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9h dXRvLWluaXQtcGFkZGluZy0yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi5lMmI1MGRjNWFlOGUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9hdXRvLWluaXQtcGFkZGluZy0yLmMKQEAgLTAsMCArMSwxMTQgQEAKKy8qIFRvIHRl c3QgdGhhdCB0aGUgY29tcGlsZXIgY2FuIGZpbGwgYWxsIHRoZSBwYWRkaW5ncyB0byB6ZXJvZXMg Zm9yIHRoZSAKKyAgIHN0cnVjdHVyZXMgd2hlbiB0aGUgYXV0byB2YXJpYWJsZSBpcyBwYXJ0aWFs bHkgaW5pdGlhbGl6ZWQsICBmdWxseSAKKyAgIGluaXRpYWxpemVkLCBvciBub3QgaW5pdGlhbGl6 ZWQgZm9yIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8uICAqLworLyogeyBkZy1kbyBydW59 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8K 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 KworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L2F1dG8taW5pdC1wYWRkaW5nLTMuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8t aW5pdC1wYWRkaW5nLTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LmUyYzQ4YzAwMmM5NQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL2F1dG8taW5pdC1wYWRkaW5nLTMuYwpAQCAtMCwwICsxLDExNCBAQAorLyogVG8gdGVzdCB0 aGF0IHRoZSBjb21waWxlciBjYW4gZmlsbCBhbGwgdGhlIHBhZGRpbmdzIHRvIHplcm9lcyBmb3Ig dGhlIAorICAgc3RydWN0dXJlcyB3aGVuIHRoZSBhdXRvIHZhcmlhYmxlIGlzIHBhcnRpYWxseSBp bml0aWFsaXplZCwgIGZ1bGx5IAorICAgaW5pdGlhbGl6ZWQsIG9yIG5vdCBpbml0aWFsaXplZCBm b3IgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybi4gICovCisvKiB7IGRnLWRvIHJ1bn0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiIgfSAq LworCisvKiBTdHJ1Y3R1cmUgd2l0aCBubyBwYWRkaW5nLiAqLworc3RydWN0IHRlc3RfcGFja2Vk IHsKKyAgdW5zaWduZWQgbG9uZyBvbmU7CisgIHVuc2lnbmVkIGxvbmcgdHdvOworICB1bnNpZ25l ZCBsb25nIHRocmVlOworICB1bnNpZ25lZCBsb25nIGZvdXI7Cit9IHAxOworCisvKiBTaW1wbGUg c3RydWN0dXJlIHdpdGggcGFkZGluZyBsaWtlbHkgdG8gYmUgY292ZXJlZCBieSBjb21waWxlci4g Ki8KK3N0cnVjdCB0ZXN0X3NtYWxsX2hvbGUgeworICB1bnNpZ25lZCBsb25nIG9uZTsKKyAgY2hh ciB0d287CisgIC8qIDMgYnl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8KKyAgaW50IHRocmVlOwor ICB1bnNpZ25lZCBsb25nIGZvdXI7Cit9IHNoMTsKKworLyogVHJ5IHRvIHRyaWdnZXIgdW5oYW5k bGVkIHBhZGRpbmcgaW4gYSBzdHJ1Y3R1cmUuICovCitzdHJ1Y3QgdGVzdF9hbGlnbmVkIHsKKyAg dW5zaWduZWQgaW50IGludGVybmFsMTsKKyAgdW5zaWduZWQgbG9uZyBsb25nIGludGVybmFsMjsK K30gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oNjQpKSk7CisKK3N0cnVjdCB0ZXN0X2FsaWdu ZWQgYTE7CisKK3N0cnVjdCB0ZXN0X2JpZ19ob2xlIHsKKyAgdW5zaWduZWQgY2hhciBvbmU7Cisg IHVuc2lnbmVkIGNoYXIgdHdvOworICB1bnNpZ25lZCBjaGFyIHRocmVlOworICAvKiA2MSBieXRl IHBhZGRpbmcgaG9sZSBoZXJlLiAqLworICBzdHJ1Y3QgdGVzdF9hbGlnbmVkIGZvdXI7Cit9IF9f YXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDY0KSkpOyAKKworc3RydWN0IHRlc3RfYmlnX2hvbGUg YmgxOworCitzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHsKKyAgY2hhciAqb25lOworICBjaGFy ICp0d287CisgIGNoYXIgKnRocmVlOworICBjaGFyIGZvdXI7CisgIC8qICJzaXplb2YodW5zaWdu ZWQgbG9uZykgLSAxIiBieXRlIHBhZGRpbmcgaG9sZSBoZXJlLiAqLworfSB0aDE7CisKK19fYXR0 cmlidXRlX18oKG5vaXBhKSkgdm9pZAorZm9vIChzdHJ1Y3QgdGVzdF9wYWNrZWQgKnAsIHN0cnVj dCB0ZXN0X3NtYWxsX2hvbGUgKnNoLCBzdHJ1Y3QgdGVzdF9hbGlnbmVkICphLAorICAgICBzdHJ1 Y3QgdGVzdF9iaWdfaG9sZSAqYmgsIHN0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgKnRoKQorewor ICBwLT5vbmUgPSAxOyBwLT50d28gPSAyOyBwLT50aHJlZSA9IDM7IHAtPmZvdXIgPSA0OworICBz aC0+b25lID0gMTE7IHNoLT50d28gPSAxMjsgc2gtPnRocmVlID0gMTM7IHNoLT5mb3VyID0gMTQ7 CisgIGEtPmludGVybmFsMSA9IDIxOyBhLT5pbnRlcm5hbDIgPSAyMjsKKyAgYmgtPm9uZSA9IDMx OyBiaC0+dHdvID0gMzI7IGJoLT50aHJlZSA9IDMzOworICBiaC0+Zm91ci5pbnRlcm5hbDEgPSAz NDsgYmgtPmZvdXIuaW50ZXJuYWwyID0gMzU7IAorICB0aC0+b25lID0gMDsgdGgtPnR3byA9IDA7 IHRoLT50aHJlZSA9IDA7IHRoLT5mb3VyID0gNDQ7Cit9CisKK2ludCBtYWluICgpCit7CisgIHN0 cnVjdCB0ZXN0X3BhY2tlZCBwMjsKKyAgc3RydWN0IHRlc3Rfc21hbGxfaG9sZSBzaDI7CisgIHN0 cnVjdCB0ZXN0X2FsaWduZWQgYTI7CisgIHN0cnVjdCB0ZXN0X2JpZ19ob2xlIGJoMjsKKyAgc3Ry dWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB0aDI7CisKKyAgc3RydWN0IHRlc3RfcGFja2VkIHAzID0g ey5vbmUgPSAxfTsKKyAgc3RydWN0IHRlc3Rfc21hbGxfaG9sZSBzaDMgPSB7LnR3byA9IDEyfTsK KyAgc3RydWN0IHRlc3RfYWxpZ25lZCBhMyA9IHsuaW50ZXJuYWwxID0gMjF9OworICBzdHJ1Y3Qg dGVzdF9iaWdfaG9sZSBiaDMgPSB7Lm9uZSA9IDMxfTsKKyAgc3RydWN0IHRlc3RfdHJhaWxpbmdf aG9sZSB0aDMgPSB7LnRocmVlID0gMH07CisKKyAgc3RydWN0IHRlc3RfcGFja2VkIHA0ID0gey5v bmUgPSAxLCAudHdvID0gMiwgLnRocmVlID0gMywgLmZvdXIgPSA0fTsKKyAgc3RydWN0IHRlc3Rf c21hbGxfaG9sZSBzaDQgPSB7Lm9uZSA9IDExLCAudHdvID0gMTIsIC50aHJlZSA9IDEzLCAuZm91 ciA9IDE0fTsKKyAgc3RydWN0IHRlc3RfYWxpZ25lZCBhNCA9IHsuaW50ZXJuYWwxID0gMjEsIC5p bnRlcm5hbDIgPSAyMn07CisgIHN0cnVjdCB0ZXN0X2JpZ19ob2xlIGJoNCA9IHsub25lID0gMzEs IC50d28gPSAzMiwgLnRocmVlID0gMzN9OworICBzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHRo NCA9IHsub25lID0gMCwgLnR3byA9IDAsIC50aHJlZSA9IDAsIC5mb3VyID0gNDR9OworCisgIGZv byAoJnAxLCAmc2gxLCAmYTEsICZiaDEsICZ0aDEpOworICBmb28gKCZwMiwgJnNoMiwgJmEyLCAm YmgyLCAmdGgyKTsKKyAgZm9vICgmcDMsICZzaDMsICZhMywgJmJoMywgJnRoMyk7CisgIGJoNC5m b3VyLmludGVybmFsMSA9IDM0OyBiaDQuZm91ci5pbnRlcm5hbDIgPSAzNTsKKworICBfX2J1aWx0 aW5fY2xlYXJfcGFkZGluZyAoJnAxKTsKKyAgX19idWlsdGluX2NsZWFyX3BhZGRpbmcgKCZzaDEp OworICBfX2J1aWx0aW5fY2xlYXJfcGFkZGluZyAoJmExKTsKKyAgX19idWlsdGluX2NsZWFyX3Bh ZGRpbmcgKCZiaDEpOworICBfX2J1aWx0aW5fY2xlYXJfcGFkZGluZyAoJnRoMSk7CisKKyAgaWYg KF9fYnVpbHRpbl9tZW1jbXAgKCZwMSwgJnAyLCBzaXplb2YgKHAxKSkKKyAgICAgIHx8IF9fYnVp bHRpbl9tZW1jbXAgKCZzaDEsICZzaDIsIHNpemVvZiAoc2gxKSkKKyAgICAgIHx8IF9fYnVpbHRp bl9tZW1jbXAgKCZhMSwgJmEyLCBzaXplb2YgKGExKSkKKyAgICAgIHx8IF9fYnVpbHRpbl9tZW1j bXAgKCZiaDEsICZiaDIsIHNpemVvZiAoYmgxKSkKKyAgICAgIHx8IF9fYnVpbHRpbl9tZW1jbXAg KCZ0aDEsICZ0aDIsIHNpemVvZiAodGgxKSkpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBp ZiAoX19idWlsdGluX21lbWNtcCAoJnAxLCAmcDMsIHNpemVvZiAocDEpKQorICAgICAgfHwgX19i dWlsdGluX21lbWNtcCAoJnNoMSwgJnNoMywgc2l6ZW9mIChzaDEpKQorICAgICAgfHwgX19idWls dGluX21lbWNtcCAoJmExLCAmYTMsIHNpemVvZiAoYTEpKQorICAgICAgfHwgX19idWlsdGluX21l bWNtcCAoJmJoMSwgJmJoMywgc2l6ZW9mIChiaDEpKQorICAgICAgfHwgX19idWlsdGluX21lbWNt cCAoJnRoMSwgJnRoMywgc2l6ZW9mICh0aDEpKSkKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7Cisg IGlmIChfX2J1aWx0aW5fbWVtY21wICgmcDEsICZwNCwgc2l6ZW9mIChwMSkpCisgICAgICB8fCBf X2J1aWx0aW5fbWVtY21wICgmc2gxLCAmc2g0LCBzaXplb2YgKHNoMSkpCisgICAgICB8fCBfX2J1 aWx0aW5fbWVtY21wICgmYTEsICZhNCwgc2l6ZW9mIChhMSkpCisgICAgICB8fCBfX2J1aWx0aW5f bWVtY21wICgmYmgxLCAmYmg0LCBzaXplb2YgKGJoMSkpCisgICAgICB8fCBfX2J1aWx0aW5fbWVt Y21wICgmdGgxLCAmdGg0LCBzaXplb2YgKHRoMSkpKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsK KworCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0 by1pbml0LXVuaW5pdC1wcmVkLTFfYS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0 LXVuaW5pdC1wcmVkLTFfYS5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uMzNjMTc0NDEzODRmCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv YXV0by1pbml0LXVuaW5pdC1wcmVkLTFfYS5DCkBAIC0wLDAgKzEsNjMgQEAKKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1XdW5pbml0aWFsaXplZCAtTzIgLWZ0cml2 aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCit0eXBlZGVmIGxvbmcgbG9uZyBpbnQ2NDsK K3ZvaWQgaW5jciAoKTsKK2Jvb2wgaXNfdmFsaWQgKGludCk7CitpbnQgIGdldF90aW1lICgpOwor CitjbGFzcyBBIAoreworcHVibGljOgorICBBICgpOworICB+QSAoKSB7CisgICAgaWYgKEkpIGRl bGV0ZSBJOworICB9CisKK3ByaXZhdGU6CisgIGludCogSTsKK307CisKK2Jvb2wgZ2V0X3VybCAo QSAqKTsKKworY2xhc3MgTSB7CisKKyBwdWJsaWM6CitfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lu bGluZSkpICBpbnQgR2V0QyAoaW50ICpjKSAgeworCisgICAgQSBkZXRhaWxzX3N0cjsKKyAgICBp ZiAoIWdldF91cmwgKCZkZXRhaWxzX3N0cikpCisgICAgICB7CisgICAgICAgIGluY3IgKCk7Cisg ICAgICAgIHJldHVybiAxOworICAgICAgfQorCisgICAgKmMgPSBnZXRfdGltZSAoKTsKKyAgICBy ZXR1cm4gLTE7CisgIH0KKworICB2b2lkIGRvX3N0aCgpOworICB2b2lkIGRvX3N0aDIoKTsKKyAg IAorICB2b2lkIFAgKGludDY0IHQpCisgICAgeworICAgICAgaW50IGNjOyAvKiB7IGRnLWJvZ3Vz ICJ1bmluaXRpYWxpemVkIiAidW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5nIiB9ICAqLyAK KyAgICAgIGlmIChHZXRDICgmY2MpID49IDAgKQorICAgICAgICByZXR1cm47CisgICAgICAKKyAg ICAgIGlmICh0ICYmIGNjIDw9IDAgKSAgLyogeyBkZy1ib2d1cyAidW5pbml0aWFsaXplZCIgInVu aW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZyIgfSAqLworICAgICAgICB7CisgICAgICAgICAg dGhpcy0+ZG9fc3RoKCk7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICBkb19z dGgyKCk7CisgIH0KK307CisKK00qIG07IAordm9pZCBmb28oaW50IHgpCit7CisgIG0gPSBuZXcg TTsKKyAgbS0+UCh4KTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8t aW5pdC11bmluaXQtcHJlZC0xX2IuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11 bmluaXQtcHJlZC0xX2IuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjZiNmJkYWVkNzFlMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1 dG8taW5pdC11bmluaXQtcHJlZC0xX2IuQwpAQCAtMCwwICsxLDYzIEBACisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItV3VuaW5pdGlhbGl6ZWQgLU8yIC1mdHJpdmlh bC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKwordHlwZWRlZiBsb25nIGxvbmcgaW50NjQ7Cit2 b2lkIGluY3IgKCk7Citib29sIGlzX3ZhbGlkIChpbnQpOworaW50ICBnZXRfdGltZSAoKTsKKwor Y2xhc3MgQSAKK3sKK3B1YmxpYzoKKyAgQSAoKTsKKyAgfkEgKCkgeworICAgIGlmIChJKSBkZWxl dGUgSTsKKyAgfQorCitwcml2YXRlOgorICBpbnQqIEk7Cit9OworCitib29sIGdldF91cmwgKEEg Kik7CisKK2NsYXNzIE0geworCisgcHVibGljOgorX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxp bmUpKSAgaW50IEdldEMgKGludCAqYykgIHsKKworICAgIEEgZGV0YWlsc19zdHI7CisgICAgaWYg KCFnZXRfdXJsICgmZGV0YWlsc19zdHIpKQorICAgICAgeworICAgICAgICBpbmNyICgpOworICAg ICAgICByZXR1cm4gMTsKKyAgICAgIH0KKworICAgICpjID0gZ2V0X3RpbWUgKCk7CisgICAgcmV0 dXJuIC0xOworICB9CisKKyAgdm9pZCBkb19zdGgoKTsKKyAgdm9pZCBkb19zdGgyKCk7CisgICAK KyAgdm9pZCBQIChpbnQ2NCB0KQorICAgIHsKKyAgICAgIGludCBjYzsgLyogeyBkZy1tZXNzYWdl ICJub3RlOiAnY2MnIHdhcyBkZWNsYXJlZCBoZXJlIiB9ICovCisgICAgICBpZiAoR2V0QyAoJmNj KSA8PSAwICkgLyogcmV0dXJuIGZsYWcgY2hlY2tlZCB3cm9uZ2x5ICovCisgICAgICAgIHJldHVy bjsKKyAgICAgIAorICAgICAgaWYgKHQgJiYgY2MgPD0gMCApICAvKiB7IGRnLXdhcm5pbmcgInVu aW5pdGlhbGl6ZWQiICJ1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmciIH0gKi8KKyAgICAg ICAgeworICAgICAgICAgIHRoaXMtPmRvX3N0aCgpOworICAgICAgICAgIHJldHVybjsKKyAgICAg ICAgfQorCisgICAgZG9fc3RoMigpOworICB9Cit9OworCitNKiBtOyAKK3ZvaWQgZm9vKGludCB4 KQoreworICBtID0gbmV3IE07CisgIG0tPlAoeCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtMl9hLkMgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtMl9hLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi5mYzE4Y2IxZTdjOTEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtMl9hLkMKQEAgLTAsMCArMSw2MiBA QAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLVd1bmluaXRpYWxp emVkIC1PMiAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK3R5cGVkZWYgbG9u ZyBsb25nIGludDY0Owordm9pZCBpbmNyICgpOworYm9vbCBpc192YWxpZCAoaW50KTsKK2ludCAg Z2V0X3RpbWUgKCk7CisKK2NsYXNzIEEgCit7CitwdWJsaWM6CisgIEEgKCk7CisgIH5BICgpIHsK KyAgICBpZiAoSSkgZGVsZXRlIEk7CisgIH0KKworcHJpdmF0ZToKKyAgaW50KiBJOworfTsKKwor Ym9vbCBnZXRfdXJsIChBICopOworCitjbGFzcyBNIHsKKworIHB1YmxpYzoKK19fYXR0cmlidXRl X18gKChhbHdheXNfaW5saW5lKSkgIGJvb2wgR2V0QyAoaW50ICpjKSAgeworCisgICAgQSBkZXRh aWxzX3N0cjsKKyAgICBpZiAoZ2V0X3VybCAoJmRldGFpbHNfc3RyKSkKKyAgICAgIHsKKyAgICAg ICAgKmMgPSBnZXRfdGltZSAoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisKKyAg ICByZXR1cm4gZmFsc2U7CisgIH0KKworICB2b2lkIGRvX3N0aCgpOworICB2b2lkIGRvX3N0aDIo KTsKKyAgIAorICB2b2lkIFAgKGludDY0IHQpCisgICAgeworICAgICAgaW50IGNjOyAKKyAgICAg IGlmICghR2V0QyAoJmNjKSkgLyogcmV0dXJuIGZsYWcgY2hlY2tlZCBwcm9wZXJseSAqLworICAg ICAgICByZXR1cm47CisgICAgICAKKyAgICAgIGlmIChjYyA8PSAwKSAgLyogeyBkZy1ib2d1cyAi dW5pbml0aWFsaXplZCIgInVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZyIgfSAqLworICAg ICAgICB7CisgICAgICAgICAgdGhpcy0+ZG9fc3RoKCk7CisgICAgICAgICAgcmV0dXJuOworICAg ICAgICB9CisKKyAgICBkb19zdGgyKCk7CisgIH0KK307CisKK00qIG07IAordm9pZCBmb28oaW50 IHgpCit7CisgIG0gPSBuZXcgTTsKKyAgbS0+UCh4KTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC0yX2IuQyBiL2djYy90ZXN0c3VpdGUv ZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC0yX2IuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLmU4NWEzNmYxNmZmZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC0yX2IuQwpAQCAtMCwwICsxLDYy IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItV3VuaW5pdGlh bGl6ZWQgLU8yIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKwordHlwZWRlZiBs b25nIGxvbmcgaW50NjQ7Cit2b2lkIGluY3IgKCk7Citib29sIGlzX3ZhbGlkIChpbnQpOworaW50 ICBnZXRfdGltZSAoKTsKKworY2xhc3MgQSAKK3sKK3B1YmxpYzoKKyAgQSAoKTsKKyAgfkEgKCkg eworICAgIGlmIChJKSBkZWxldGUgSTsKKyAgfQorCitwcml2YXRlOgorICBpbnQqIEk7Cit9Owor Citib29sIGdldF91cmwgKEEgKik7CisKK2NsYXNzIE0geworCisgcHVibGljOgorX19hdHRyaWJ1 dGVfXyAoKGFsd2F5c19pbmxpbmUpKSAgYm9vbCBHZXRDIChpbnQgKmMpICB7CisKKyAgICBBIGRl dGFpbHNfc3RyOworICAgIGlmIChnZXRfdXJsICgmZGV0YWlsc19zdHIpKQorICAgICAgeworICAg ICAgICAqYyA9IGdldF90aW1lICgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKwor ICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHZvaWQgZG9fc3RoKCk7CisgIHZvaWQgZG9fc3Ro MigpOworICAgCisgIHZvaWQgUCAoaW50NjQgdCkKKyAgICB7CisgICAgICBpbnQgY2M7IC8qIHsg ZGctbWVzc2FnZSAibm90ZTogJ2NjJyB3YXMgZGVjbGFyZWQgaGVyZSIgfSAqLworICAgICAgaWYg KEdldEMgKCZjYykpIC8qIHJldHVybiBmbGFnIGNoZWNrZWQgd3JvbmdseSAqLworICAgICAgICBy ZXR1cm47CisgICAgICAKKyAgICAgIGlmIChjYyA8PSAwKSAgLyogeyBkZy13YXJuaW5nICJ1bmlu aXRpYWxpemVkIiAidW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5nIiB9ICovCisgICAgICAg IHsKKyAgICAgICAgICB0aGlzLT5kb19zdGgoKTsKKyAgICAgICAgICByZXR1cm47CisgICAgICAg IH0KKworICAgIGRvX3N0aDIoKTsKKyAgfQorfTsKKworTSogbTsgCit2b2lkIGZvbyhpbnQgeCkK K3sKKyAgbSA9IG5ldyBNOworICBtLT5QKHgpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTNfYS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTNfYS5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uMDllZDY5MjE1MzIwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTNfYS5DCkBAIC0wLDAgKzEsNzcgQEAK Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1XdW5pbml0aWFsaXpl ZCAtTzIgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCisvKiBNdWx0aXBsZSBp bml0aWFsaXphdGlvbiBwYXRocy4gICovCisKK3R5cGVkZWYgbG9uZyBsb25nIGludDY0Owordm9p ZCBpbmNyICgpOworYm9vbCBpc192YWxpZCAoaW50KTsKK2ludCAgZ2V0X3RpbWUgKCk7CisKK2Ns YXNzIEEKK3sKK3B1YmxpYzoKKyAgQSAoKTsKKyAgfkEgKCkgeworICAgIGlmIChJKSBkZWxldGUg STsKKyAgfQorCitwcml2YXRlOgorICBpbnQqIEk7Cit9OworCitib29sIGdldF91cmwgKEEgKik7 Citib29sIGdldF91cmwyIChBICopOworCitjbGFzcyBNIHsKKworIHB1YmxpYzoKKyBfX2F0dHJp YnV0ZV9fICgoYWx3YXlzX2lubGluZSkpCisgYm9vbCBHZXRDIChpbnQgKmMpICB7CisKKyAgICBB IGRldGFpbHNfc3RyOworICAgIC8qIEludGlhbGl6YXRpb24gcGF0aCAxICAqLworICAgIGlmIChn ZXRfdXJsICgmZGV0YWlsc19zdHIpKQorICAgICAgeworICAgICAgICAqYyA9IGdldF90aW1lICgp OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKworICAgIC8qIGluc2VydCBkdG9yIGNh bGxzIChpbmxpbmVkKSBpbnRvIGZvbGxvd2luZyByZXR1cm4gcGF0aHMgICovCisgICAgQSB0bXBf c3RyOworCisgICAgLyogSW50aWFsaXp0aW9uIHBhdGggMiAgKi8KKyAgICBpZiAoZ2V0X3VybDIg KCZkZXRhaWxzX3N0cikpCisgICAgICB7CisgICAgICAgICpjID0gZ2V0X3RpbWUgKCk7CisgICAg ICAgIHJldHVybiB0cnVlOworICAgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAg dm9pZCBkb19zdGgoKTsKKyAgdm9pZCBkb19zdGgyKCk7CisKKyAgdm9pZCBQIChpbnQ2NCB0KQor ICAgIHsKKyAgICAgIGludCBjYzsKKyAgICAgIGlmICghR2V0QyAoJmNjKSkgLyogcmV0dXJuIGZs YWcgY2hlY2tlZCBwcm9wZXJseSAqLworICAgICAgICByZXR1cm47CisKKyAgICAgIGlmIChjYyA8 PSAwKSAgIC8qIHsgZGctYm9ndXMgInVuaW5pdGlhbGl6ZWQiICJ1bmluaXRpYWxpemVkIHZhcmlh YmxlIHdhcm5pbmciIH0gKi8KKyAgICAgICAgeworICAgICAgICAgIHRoaXMtPmRvX3N0aCgpOwor ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgZG9fc3RoMigpOworICB9Cit9Owor CitNKiBtOwordm9pZCB0ZXN0KGludCB4KQoreworICBtID0gbmV3IE07CisgIG0tPlAoeCk7Cit9 CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQt M19iLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtM19iLkMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZTdiODU0MTcyNWUKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXBy ZWQtM19iLkMKQEAgLTAsMCArMSw4NyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsg ZGctb3B0aW9ucyAiLVd1bmluaXRpYWxpemVkIC1PMiAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16 ZXJvIiB9ICovCisKKy8qIE11bHRpcGxlIGluaXRpYWxpemF0aW9uIHBhdGhzLiAgKi8KKwordHlw ZWRlZiBsb25nIGxvbmcgaW50NjQ7Cit2b2lkIGluY3IgKCk7Citib29sIGlzX3ZhbGlkIChpbnQp OworaW50ICBnZXRfdGltZSAoKTsKKworY2xhc3MgQQoreworcHVibGljOgorICBBICgpOworICB+ QSAoKSB7CisgICAgaWYgKEkpIGRlbGV0ZSBJOworICB9CisKK3ByaXZhdGU6CisgIGludCogSTsK K307CisKK2Jvb2wgZ2V0X3VybCAoQSAqKTsKK2Jvb2wgZ2V0X3VybDIgKEEgKik7Citib29sIGdl dF91cmwzIChBICopOworCitjbGFzcyBNIHsKKworIHB1YmxpYzoKKyBfX2F0dHJpYnV0ZV9fICgo YWx3YXlzX2lubGluZSkpCisgYm9vbCBHZXRDIChpbnQgKmMpICB7CisKKyAgICBBIGRldGFpbHNf c3RyOworCisgICAgLyogSW5pdGlhbGl6YXRpb24gcGF0aCAxICAqLworICAgIGlmIChnZXRfdXJs ICgmZGV0YWlsc19zdHIpKQorICAgICAgeworICAgICAgICAqYyA9IGdldF90aW1lICgpOworICAg ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKworICAgIC8qIERlc3RydWN0b3IgY2FsbCBiZWZv cmUgcmV0dXJuKi8KKyAgICBBIHRtcF9zdHI7CisKKyAgICAvKiBJbml0aWFsaXphdGlvbiBwYXRo IDIgICovCisgICAgaWYgKGdldF91cmwyICgmZGV0YWlsc19zdHIpKQorICAgICAgeworICAgICAg ICAqYyA9IGdldF90aW1lICgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKworICAg IC8qIEZhaWwgdG8gaW5pdGlhbGl6ZSBpbiB0aGlzIHBhdGggYnV0CisgICAgICAgc3RpbGwgcmV0 dXJucyB0cnVlICAqLworICAgIGlmIChnZXRfdXJsMiAoJmRldGFpbHNfc3RyKSkKKyAgICAgIHsK KyAgICAgICAgLyogRmFpbCB0byBpbml0aWFsaXplICpjICAqLworICAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHZvaWQgZG9fc3RoKCk7 CisgIHZvaWQgZG9fc3RoMigpOworCisgIHZvaWQgUCAoaW50NjQgdCkKKyAgICB7CisgICAgICBp bnQgY2M7CisgICAgICBpZiAoIUdldEMgKCZjYykpCisgICAgICAgIHJldHVybjsKKworICAgICAg aWYgKGNjIDw9IDApICAgLyogeyBkZy13YXJuaW5nICJ1bmluaXRpYWxpemVkIiAidW5pbml0aWFs aXplZCB2YXJpYWJsZSB3YXJuaW5nIiB9ICovCisgICAgICAgIHsKKyAgICAgICAgICB0aGlzLT5k b19zdGgoKTsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgIGRvX3N0aDIoKTsK KyAgfQorfTsKKworTSogbTsKK3ZvaWQgdGVzdChpbnQgeCkKK3sKKyAgbSA9IG5ldyBNOworICBt LT5QKHgpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVu aW5pdC1wcmVkLTQuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJl ZC00LkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jNDg3NzBhZTQ0 ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5p bml0LXByZWQtNC5DCkBAIC0wLDAgKzEsMTYgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1XdW5pbml0aWFsaXplZCAtT2cgLWZ0cml2aWFsLWF1dG8tdmFyLWlu aXQ9emVybyIgfSAqLworCitpbnQgcG9wICgpOworaW50IHBvcF9maXJzdF9idWNrZXQ7CisKK2lu dCBteV9wb3AgKCkKK3sKKyAgaW50IG91dDsgIC8vIHsgZGctYm9ndXMgInVuaW5pdGlhbGl6ZWQi ICJ1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmciIH0KKworICB3aGlsZSAocG9wX2ZpcnN0 X2J1Y2tldCkKKyAgICBpZiAocG9wX2ZpcnN0X2J1Y2tldCAmJiAob3V0ID0gcG9wKCkpKQorICAg ICAgcmV0dXJuIG91dDsKKworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC1sb29wLTFfYS5jYyBiL2djYy90ZXN0c3Vp dGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC1sb29wLTFfYS5jYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjYyOTY3N2E2MDI1OQotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC1sb29wLTFfYS5j YwpAQCAtMCwwICsxLDIxIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItV3VuaW5pdGlhbGl6ZWQgLU8yIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0g Ki8KKworZXh0ZXJuIGludCBiYXIoKTsKK2ludCBmb28odm9pZCkKK3sKKyBmb3IgKDs7KSB7Cisg ICBpbnQgZXJyID0gKHtpbnQgX2VycjsgLyogIHsgZGctYm9ndXMgInVuaW5pdGlhbGl6ZWQiICJm YWxzZSB3YXJuaW5nIiB9ICovCisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTY7ICsraSkgewor ICAgICAgIF9lcnIgPSAxNzsKKyAgICAgICBfZXJyID0gYmFyKCk7CisgICAgIH0KKyAgICAgX2Vy cjsgLyogIHsgZGctYm9ndXMgInVuaW5pdGlhbGl6ZWQiICJmYWxzZSB3YXJuaW5nIiB9ICovCisg ICB9KTsKKworICAgaWYgKGVyciA9PSAwKSByZXR1cm4gMTc7IAorIH0KKworIHJldHVybiAxODsK K30KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1w cmVkLWxvb3AtMV9iLmNjIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1w cmVkLWxvb3AtMV9iLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u MDRhYjM2NGFjODNlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0 by1pbml0LXVuaW5pdC1wcmVkLWxvb3AtMV9iLmNjCkBAIC0wLDAgKzEsMjEgQEAKKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1XdW5pbml0aWFsaXplZCAtTzIgLWZ0 cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCitleHRlcm4gaW50IGJhcigpOworaW50 IGZvbyhpbnQgbikKK3sKKyBmb3IgKDs7KSB7CisgICBpbnQgZXJyID0gKHtpbnQgX2VycjsgCisg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgX2VyciA9IDE3OworICAg ICAgIF9lcnIgPSBiYXIoKTsKKyAgICAgfQorICAgICBfZXJyOyAKKyAgIH0pOyAvKiB7IGRnLXdh cm5pbmcgInVuaW5pdGlhbGl6ZWQiICJ3YXJuIG9uIF9lcnIiIH0gKi8KKworICAgaWYgKGVyciA9 PSAwKSByZXR1cm4gMTc7IAorIH0KKworIHJldHVybiAxODsKK30KKwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLWxvb3AtMV9jLmNjIGIvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLWxvb3AtMV9jLmNjCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODJhMTg0NmM2ZTBiCi0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLWxv b3AtMV9jLmNjCkBAIC0wLDAgKzEsMjMgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1XdW5pbml0aWFsaXplZCAtTzIgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9 emVybyIgfSAqLworCitleHRlcm4gaW50IGJhcigpOworaW50IGZvbyhpbnQgbiwgaW50IG0pCit7 CisgZm9yICg7OykgeworICAgaW50IGVyciA9ICh7aW50IF9lcnI7IAorICAgICBmb3IgKGludCBp ID0gMDsgaSA8IDE2OyArK2kpIHsKKyAgICAgICBpZiAobStpID4gbikKKyAgICAgICAgICBicmVh azsKKyAgICAgICBfZXJyID0gMTc7CisgICAgICAgX2VyciA9IGJhcigpOworICAgICB9CisgICAg IF9lcnI7IAorICAgfSk7IAorCisgICBpZiAoZXJyID09IDApIHJldHVybiAxNzsgfSk7IC8qIHsg ZGctd2FybmluZyAidW5pbml0aWFsaXplZCIgIndhcm4gb24gX2VyciIgfSAqLworIH0KKworIHJl dHVybiAxODsKK30KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0 LXVuaW5pdC1wcmVkLWxvb3BfMS5jYyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11 bmluaXQtcHJlZC1sb29wXzEuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi42Mjk2NzdhNjAyNTkKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5k Zy9hdXRvLWluaXQtdW5pbml0LXByZWQtbG9vcF8xLmNjCkBAIC0wLDAgKzEsMjEgQEAKKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1XdW5pbml0aWFsaXplZCAtTzIg LWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCitleHRlcm4gaW50IGJhcigpOwor aW50IGZvbyh2b2lkKQoreworIGZvciAoOzspIHsKKyAgIGludCBlcnIgPSAoe2ludCBfZXJyOyAv KiAgeyBkZy1ib2d1cyAidW5pbml0aWFsaXplZCIgImZhbHNlIHdhcm5pbmciIH0gKi8KKyAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgKytpKSB7CisgICAgICAgX2VyciA9IDE3OworICAgICAg IF9lcnIgPSBiYXIoKTsKKyAgICAgfQorICAgICBfZXJyOyAvKiAgeyBkZy1ib2d1cyAidW5pbml0 aWFsaXplZCIgImZhbHNlIHdhcm5pbmciIH0gKi8KKyAgIH0pOworCisgICBpZiAoZXJyID09IDAp IHJldHVybiAxNzsgCisgfQorCisgcmV0dXJuIDE4OworfQorCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy5kZy9hdXRvLWluaXQtc3JhLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1 dG8taW5pdC1zcmEtMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u ODhmZDY2Njc4ZjI5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0 by1pbml0LXNyYS0xLmMKQEAgLTAsMCArMSwyNCBAQAorLyogVmVyaWZ5IHRoYXQgU1JBIHRvdGFs IHNjYWxhcml6YXRpb24gd2lsbCBub3QgYmUgY29uZnVzZWQgYnkgcGFkZGluZworICAgYW5kIGFs c28gbm90IGNvbmZ1c2VkIGJ5IGF1dG8gaW5pdGlhbGl6YXRpb24uICAqLworLyogeyBkZy1kbyBj b21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8xIC0tcGFyYW0gc3JhLW1heC1zY2FsYXJp emF0aW9uLXNpemUtT3NwZWVkPTE2IC1mZHVtcC10cmVlLXJlbGVhc2Vfc3NhIC1mdHJpdmlhbC1h dXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworc3RydWN0IFMKK3sKKyAgaW50IGk7CisgIHVuc2ln bmVkIHNob3J0IGYxOworICBjaGFyIGYyOworICB1bnNpZ25lZCBzaG9ydCBmMywgZjQ7Cit9Owor CisKK2ludCBmb28gKHN0cnVjdCBTICpwKQoreworICBzdHJ1Y3QgUyBsOworCisgIGwgPSAqcDsK KyAgbC5pKys7CisgICpwID0gbDsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LXRpbWVzICJsOyIgMCAicmVsZWFzZV9zc2EiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvYXV0by1pbml0LXNyYS0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRv LWluaXQtc3JhLTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQy NjBmNWFlOTM0ZQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8t aW5pdC1zcmEtMi5jCkBAIC0wLDAgKzEsMjQgQEAKKy8qIFZlcmlmeSB0aGF0IFNSQSB0b3RhbCBz Y2FsYXJpemF0aW9uIHdpbGwgbm90IGJlIGNvbmZ1c2VkIGJ5IHBhZGRpbmcKKyAgIGFuZCBhbHNv IG5vdCBjb25mdXNlZCBieSBhdXRvIGluaXRpYWxpemF0aW9uLiAgKi8KKy8qIHsgZGctZG8gY29t cGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMSAtLXBhcmFtIHNyYS1tYXgtc2NhbGFyaXph dGlvbi1zaXplLU9zcGVlZD0xNiAtZmR1bXAtdHJlZS1yZWxlYXNlX3NzYSAtZnRyaXZpYWwtYXV0 by12YXItaW5pdD1wYXR0ZXJuIiB9ICovCisKK3N0cnVjdCBTCit7CisgIGludCBpOworICB1bnNp Z25lZCBzaG9ydCBmMTsKKyAgY2hhciBmMjsKKyAgdW5zaWduZWQgc2hvcnQgZjMsIGY0OworfTsK KworCitpbnQgZm9vIChzdHJ1Y3QgUyAqcCkKK3sKKyAgc3RydWN0IFMgbDsKKworICBsID0gKnA7 CisgIGwuaSsrOworICAqcCA9IGw7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cC10aW1lcyAibDsiIDAgInJlbGVhc2Vfc3NhIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv YXV0by1pbml0LXVuaW5pdC0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi5jYjBlN2NjNjI1NDUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5k Zy9hdXRvLWluaXQtdW5pbml0LTEuYwpAQCAtMCwwICsxLDMwIEBACisvKiBTcHVyaW91cyB1bmlu aXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmdzLCBjYXNlIDEuCisgICBUYWtlbiBmcm9tIGNwcGZp bGVzLmMgKG1lcmdlX2luY2x1ZGVfY2hhaW5zKSAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLU8gLVd1bmluaXRpYWxpemVkIC1mdHJpdmlhbC1hdXRvLXZhci1p bml0PXplcm8iIH0gKi8KKworc3RydWN0IGxpc3QKK3sKKyAgc3RydWN0IGxpc3QgKm5leHQ7Cisg IGludCBpZDsKK307CisKK2V4dGVybiB2b2lkIGZyZWUgKHZvaWQgKik7CisKK3ZvaWQgcmVtb3Zl X2R1cGVzIChzdHJ1Y3QgbGlzdCAqZWwpCit7CisgIHN0cnVjdCBsaXN0ICpwLCAqcSwgKnI7ICAv KiB7IGRnLWJvZ3VzICJyIiAidW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5nIiB9ICovCisK KyAgZm9yIChwID0gZWw7IHA7IHAgPSBwLT5uZXh0KQorICB7CisgICAgZm9yIChxID0gZWw7IHEg IT0gcDsgcSA9IHEtPm5leHQpCisgICAgICBpZiAocS0+aWQgPT0gcC0+aWQpCisgICAgICB7CisJ ci0+bmV4dCA9IHAtPm5leHQ7CisJZnJlZSAocCk7CisJcCA9IHI7CisJYnJlYWs7CisgICAgICB9 CisgICAgciA9IHA7CisgIH0KK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1 dG8taW5pdC11bmluaXQtMTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmlu aXQtMTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU1OWUyZDk2 MzM3NgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11 bmluaXQtMTEuYwpAQCAtMCwwICsxLDQyIEBACisvKiBQb3NpdGl2ZSB0ZXN0IGZvciB1bmluaXRp YWxpemVkIHZhcmlhYmxlcy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1v cHRpb25zICItTyAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIg fSAqLworCitpbnQgc2luazsKKwordm9pZCBmMShpbnQgcGFybSkJLyogeyBkZy1ib2d1cyAidW5p bml0aWFsaXplZCIgInBhcmFtZXRlciIgfSAqLworeworICBzaW5rID0gcGFybTsJCS8qIHsgZGct Ym9ndXMgInVuaW5pdGlhbGl6ZWQiICJwYXJhbWV0ZXIiIH0gKi8KK30KKwordm9pZCBmMih2b2lk KQoreworICBpbnQgeDsKKyAgc2luayA9IHg7CQkvKiB7IGRnLXdhcm5pbmcgImlzIHVzZWQiICJ1 bmNvbmRpdGlvbmFsIiB9ICovCit9CisKK3ZvaWQgZjMoaW50IHApCit7CisgIGludCB4OwkJCisg IGlmIChwKQorICAgIHggPSBwOworICBzaW5rID0geDsgICAgICAgICAgICAvKiB7IGRnLXdhcm5p bmcgIm1heSBiZSB1c2VkIiAiY29uZGl0aW9uYWwiIH0gKi8KK30KKwordm9pZCBmNChpbnQgcCkK K3sKKyAgaW50IHg7CQkvKiB7IGRnLWJvZ3VzICJ1bmluaXRpYWxpemVkIiAiZWFzeSBpZiIgfSAq LworICBpZiAocCkKKyAgICB4ID0gMTsKKyAgZWxzZQorICAgIHggPSAyOworICBzaW5rID0geDsK K30KKwordm9pZCBmNSh2b2lkKQoreworICBpbnQgeCwgaTsJCS8qIHsgZGctYm9ndXMgInVuaW5p dGlhbGl6ZWQiICJlYXN5IGxvb3AiIH0gKi8KKyAgZm9yIChpID0gMDsgaSA8IDEwOyArK2kpCisg ICAgeCA9IDE7CisgIHNpbmsgPSB4OworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvYXV0by1pbml0LXVuaW5pdC0xMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0 LXVuaW5pdC0xMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWNm ZjcyNTcyMmRjCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1p bml0LXVuaW5pdC0xMi5jCkBAIC0wLDAgKzEsMTIgQEAKKy8qIFBSIDIzNDk3ICovCisvKiB7IGRn LWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtV3VuaW5pdGlhbGl6ZWQgLWZ0 cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCit0eXBlZGVmIF9Db21wbGV4IGZsb2F0 IEM7CitDIGZvbygpCit7CisgIEMgZjsKKyAgX19yZWFsX18gZiA9IDA7CisgIF9faW1hZ19fIGYg PSAwOworICByZXR1cm4gZjsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1 dG8taW5pdC11bmluaXQtMTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmlu aXQtMTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg3ZGQ4YjU4 N2UwMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11 bmluaXQtMTMuYwpAQCAtMCwwICsxLDEwIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyog eyBkZy1vcHRpb25zICItTyAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9 emVybyIgfSAqLworCit0eXBlZGVmIF9Db21wbGV4IGZsb2F0IEM7CitDIGZvbygpCit7CisgIEMg ZjsKKyAgX19pbWFnX18gZiA9IDA7CisgIHJldHVybiBmOwkvKiB7IGRnLXdhcm5pbmcgImlzIHVz ZWQiICJ1bmNvbmRpdGlvbmFsIiB9ICovCit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy5kZy9hdXRvLWluaXQtdW5pbml0LTE0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWlu aXQtdW5pbml0LTE0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41 OTIwNTJhOWU5ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRv LWluaXQtdW5pbml0LTE0LmMKQEAgLTAsMCArMSwyMCBAQAorLyogUFIgMjQ5MzEgKi8KKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1XdW5pbml0aWFsaXplZCAt ZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK3N0cnVjdCBwIHsKKyAgICAgICAg c2hvcnQgeCwgeTsKK307CisKK3N0cnVjdCBzIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIHN0 cnVjdCBwIHA7Cit9OworCitzdHJ1Y3QgcyBmKCkKK3sKKyAgICAgICAgc3RydWN0IHMgczsKKyAg ICAgICAgcy5wID0gKHN0cnVjdCBwKXt9OworICAgICAgICBzLmkgPSAocy5wLnggfHwgcy5wLnkp OworICAgICAgICByZXR1cm4gczsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRn L2F1dG8taW5pdC11bmluaXQtMTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11 bmluaXQtMTUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjEyMWYw Y2ZmMjc0YQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5p dC11bmluaXQtMTUuYwpAQCAtMCwwICsxLDI2IEBACisvKiBQUiB0cmVlLW9wdGltaXphdGlvbi8x NzUwNgorICAgV2UgaXNzdWUgYW4gdW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5nIGF0IGEg d3JvbmcgbG9jYXRpb24gYXQKKyAgIGxpbmUgMTEsIHdoaWNoIGlzIHZlcnkgY29uZnVzaW5nLiAg TWFrZSBzdXJlIHdlIHByaW50IG91dCBhIG5vdGUgdG8KKyAgIG1ha2UgaXQgbGVzcyBjb25mdXNp bmcuICAobm90IHhmYWlsZWQgYWx0ZXJuYXRpdmUpCisgICBCdXQgaXQgaXMgb2YgY291cnNlIG9r IGlmIHdlIHdhcm4gaW4gYmFyIGFib3V0IHVuaW5pdGlhbGl6ZWQgdXNlCisgICBvZiBqLiAgKG5v dCB4ZmFpbGVkIGFsdGVybmF0aXZlKSAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1PMSAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9 emVybyIgfSAqLworCitpbmxpbmUgaW50Citmb28gKGludCBpKQoreworICBpZiAoaSkgLyogeyBk Zy13YXJuaW5nICJ1c2VkIHVuaW5pdGlhbGl6ZWQiIH0gKi8KKyAgICByZXR1cm4gMTsKKyAgcmV0 dXJuIDA7Cit9CisKK3ZvaWQgYmF6ICh2b2lkKTsKKwordm9pZAorYmFyICh2b2lkKQoreworICBp bnQgajsgLyogeyBkZy1tZXNzYWdlICJub3RlOiAnaicgd2FzIGRlY2xhcmVkIGhlcmUiICIiIH0g Ki8KKyAgZm9yICg7IGZvbyAoaik7ICsraikgIC8qIHsgZGctd2FybmluZyAiJ2onIGlzIHVzZWQg dW5pbml0aWFsaXplZCIgIiIgeyB4ZmFpbCAqLSotKiB9IH0gKi8KKyAgICBiYXogKCk7Cit9CmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTE2LmMgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTE2LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wZTRmMzM2ZjcyNmYKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTE2LmMKQEAgLTAsMCArMSwy MyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1XdW5p bml0aWFsaXplZCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK2ludCBmb28s IGJhcjsKKworc3RhdGljCit2b2lkIGRlY29kZV9yZWxvYyhpbnQgcmVsb2MsIGludCAqaXNfYWx0 KQoreworICBpZiAocmVsb2MgPj0gMjApCisgICAgICAqaXNfYWx0ID0gMTsKKyAgZWxzZSBpZiAo cmVsb2MgPj0gMTApCisgICAgICAqaXNfYWx0ID0gMDsKK30KKwordm9pZCB0ZXN0ZnVuYygpCit7 CisgIGludCBhbHRfcmVsb2M7CisKKyAgZGVjb2RlX3JlbG9jKGZvbywgJmFsdF9yZWxvYyk7CisK KyAgaWYgKGFsdF9yZWxvYykgLyogeyBkZy13YXJuaW5nICJtYXkgYmUgdXNlZCB1bmluaXRpYWxp emVkIiB9ICovCisgICAgYmFyID0gNDI7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy5kZy9hdXRvLWluaXQtdW5pbml0LTE3LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWlu aXQtdW5pbml0LTE3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45 ZWVjOTQ0MGM3NWUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRv LWluaXQtdW5pbml0LTE3LmMKQEAgLTAsMCArMSwxNSBAQAorLyogeyBkZy1kbyBjb21waWxlIH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLVd1bmluaXRpYWxpemVkIC1mdHJpdmlhbC1hdXRvLXZh ci1pbml0PXplcm8iIH0gKi8KKwordHlwZWRlZiBfQ29tcGxleCBmbG9hdCBDOworQyBmb28oaW50 IGNvbmQpCit7CisgIEMgZjsKKyAgX19pbWFnX18gZiA9IDA7CisgIGlmIChjb25kKQorICAgIHsK KyAgICAgIF9fcmVhbF9fIGYgPSAxOworICAgICAgcmV0dXJuIGY7CisgICAgfQorICByZXR1cm4g ZjsJLyogeyBkZy13YXJuaW5nICJtYXkgYmUgdXNlZCIgInVuY29uZGl0aW9uYWwiIH0gKi8KK30K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTguYyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTguYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQ5MjI4NDhmNmRjNwotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTguYwpAQCAtMCwwICsx LDI0IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAgKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLVd1 bmluaXRpYWxpemVkIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworY2hhciAq Zm9vKGludCBiYXIsIGNoYXIgKmJheikKK3sKKyAgY2hhciAqdG1wOworCisgIGlmIChiYXIgJiAz KQorICAgIHRtcCA9IGJhejsKKworICBzd2l0Y2ggKGJhcikgeworICBjYXNlIDE6CisgICAgdG1w WzVdID0gNzsgICAgLyogeyBkZy1ib2d1cyAibWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCIgfSAq LworICAgIGJyZWFrOworICBjYXNlIDI6CisgICAgdG1wWzExXSA9IDE1OyAgLyogeyBkZy1ib2d1 cyAibWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCIgfSAqLworICAgIGJyZWFrOworICBkZWZhdWx0 OgorICAgIHRtcCA9IDA7CisgICAgYnJlYWs7CisgIH0KKworICByZXR1cm4gdG1wOyAgICAgIC8q IHsgZGctYm9ndXMgIm1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQiIH0gKi8KK30KZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTkuYyBiL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjM4ZDI3ZTRmOTU0OAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTkuYwpAQCAtMCwwICsxLDI2IEBACisv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtV3VuaW5pdGlhbGl6 ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworLyogeyBkZy1hZGRpdGlvbmFs LW9wdGlvbnMgIi1maW5saW5lLXNtYWxsLWZ1bmN0aW9ucyIgeyB0YXJnZXQgYXZyLSotKiB9IH0g Ki8KKworaW50IGEsIGwsIG07CitmbG9hdCAqYjsKK2Zsb2F0IGMsIGQsIGUsIGcsIGg7Cit1bnNp Z25lZCBjaGFyIGksIGs7Cit2b2lkCitmbjEgKGludCBwMSwgZmxvYXQgKmYxLCBmbG9hdCAqZjIs IGZsb2F0ICpmMywgdW5zaWduZWQgY2hhciAqYzEsIGZsb2F0ICpmNCwKKyAgICAgdW5zaWduZWQg Y2hhciAqYzIsIGZsb2F0ICpwMTApCit7CisgIGlmIChwMSAmIDgpCisgICAgYlszXSA9IHAxMFth XTsKKyAgLyogeyBkZy13YXJuaW5nICJtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIiAiIiB7IHRh cmdldCB7IHsgbm9ucGljIHx8IHBpZV9lbmFibGVkIH0gfHwgeyBocHBhKjY0Ki0qLSogKi0qLWRh cndpbiogfSB9IH0gLi0xIH0gKi8KK30KKwordm9pZAorZm4yICgpCit7CisgIGZsb2F0ICpuOwor ICBpZiAobCAmIDYpCisgICAgbiA9ICZjICsgbTsKKyAgZm4xIChsLCAmZCwgJmUsICZnLCAmaSwg JmgsICZrLCBuKTsKKyAgLyogeyBkZy13YXJuaW5nICJtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVk IiAiIiB7IHRhcmdldCB7ICEgeyB7IG5vbnBpYyB8fCBwaWVfZW5hYmxlZCB9IHx8IHsgaHBwYSo2 NCotKi0qICotKi1kYXJ3aW4qIH0gfSB9IH0gLi0xIH0gKi8KK30KZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvYXV0by1pbml0LXVuaW5pdC0yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi5kYTAzYmY4ZjZkOTgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy9hdXRvLWluaXQtdW5pbml0LTIuYwpAQCAtMCwwICsxLDUyIEBACisvKiBTcHVyaW91cyB1 bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmdzLCBjYXNlIDIuCisgICBUYWtlbiBmcm9tIGNw cGhhc2guYyAobWFjcm9leHBhbmQpICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItTyAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVy byIgfSAqLworCitzdHJ1Y3QgZGVmaW5pdGlvbgoreworICBpbnQgbmFyZ3M7CisgIGludCByZXN0 X2FyZ3M7Cit9OworCitzdHJ1Y3QgY3BwX3JlYWRlcjsKKworZW51bSBjcHBfdG9rZW4KK3sKKyAg Q1BQX0VPRiwgQ1BQX1BPUCwgQ1BQX0NPTU1BLCBDUFBfUlBBUkVOCit9OworCitleHRlcm4gZW51 bSBjcHBfdG9rZW4gbWFjYXJnIChzdHJ1Y3QgY3BwX3JlYWRlciAqLCBpbnQpOworCit2b2lkCitt YWNyb2V4cGFuZCAoc3RydWN0IGNwcF9yZWFkZXIgKnBmaWxlLCBzdHJ1Y3QgZGVmaW5pdGlvbiAq ZGVmbikKK3sKKyAgaW50IG5hcmdzID0gZGVmbi0+bmFyZ3M7CisKKyAgaWYgKG5hcmdzID49IDAp CisgICAgeworICAgICAgZW51bSBjcHBfdG9rZW4gdG9rZW47ICAvKiB7IGRnLWJvZ3VzICJ0b2tl biIgInVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZyIgfSAqLworICAgICAgaW50IGksIHJl c3RfYXJnczsKKyAgICAgIGkgPSAwOworICAgICAgcmVzdF9hcmdzID0gMDsKKyAgICAgIGRvCisJ eworCSAgaWYgKHJlc3RfYXJncykKKwkgICAgY29udGludWU7CisJICBpZiAoaSA8IG5hcmdzIHx8 IChuYXJncyA9PSAwICYmIGkgPT0gMCkpCisJICAgIHsKKwkgICAgICAvKiBpZiB3ZSBhcmUgd29y a2luZyBvbiBsYXN0IGFyZyB3aGljaCBhYnNvcmJzIHJlc3Qgb2YgYXJncy4uLiAqLworCSAgICAg IGlmIChpID09IG5hcmdzIC0gMSAmJiBkZWZuLT5yZXN0X2FyZ3MpCisJCXJlc3RfYXJncyA9IDE7 CisJICAgICAgdG9rZW4gPSBtYWNhcmcgKHBmaWxlLCByZXN0X2FyZ3MpOworCSAgICB9CisJICBl bHNlCisJICAgIHRva2VuID0gbWFjYXJnIChwZmlsZSwgMCk7CisJICBpZiAodG9rZW4gPT0gQ1BQ X0VPRiB8fCB0b2tlbiA9PSBDUFBfUE9QKQorCSAgICByZXR1cm47CisKKwkgIGkrKzsKKwl9Cisg ICAgICB3aGlsZSAodG9rZW4gPT0gQ1BQX0NPTU1BKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTIwLmMgYi9nY2MvdGVzdHN1aXRl L2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTIwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi5mNTMzY2U5YzcwZTcKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTIwLmMKQEAgLTAsMCArMSwxOCBAQAorLyogU3B1 cmlvdXMgdW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5ncywgZnJvbSBnZGIgKi8KKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtV3VuaW5pdGlhbGl6ZWQg LWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworc3RydWN0IG9zIHsgc3RydWN0IG8g Km87IH07CitzdHJ1Y3QgbyB7IHN0cnVjdCBvICpuZXh0OyBzdHJ1Y3Qgb3MgKnNlOyB9Owordm9p ZCBmKHN0cnVjdCBvICpvKXsKKyAgc3RydWN0IG9zICpzOworICBpZihvKSBzID0gby0+c2U7Cisg IHdoaWxlKG8gJiYgcyA9PSBvLT5zZSl7CisgICAgcysrOyAvLyBoZXJlIGBvJyBpcyBub24temVy byBhbmQgdGh1cyBzIGlzIGluaXRpYWxpemVkCisgICAgcyA9PSBvLT5zZSAgLy8gYD8nIGlzIGVz c2VudGlhbCwgYGlmJyBkb2VzIG5vdCB0cmlnZ2VyIHRoZSB3YXJuaW5nCisgICAgICA/IChvID0g by0+bmV4dCwgbyA/IHMgPSBvLT5zZSA6IDApCisgICAgICA6IDA7CisgIH0KK30KKworCisKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjEuYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjEuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjYwNDRlYWIyNzg3MAotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjEuYwpAQCAtMCwwICsxLDMz IEBACisvKiBQUjY5NTM3LCBzcHVyaW91cyB3YXJuaW5nIGJlY2F1c2Ugb2YgYSBtaXNzZWQgb3B0 aW1pemF0aW9uLiAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAi LU8yIC1mbm8tc2hvcnQtZW51bXMgLVd1bmluaXRpYWxpemVkIC1mdHJpdmlhbC1hdXRvLXZhci1p bml0PXplcm8iIH0gKi8KKworZW51bSBjbG50X3N0YXQgeworIFJQQ19TVUNDRVNTPTAsCisgUlBD X0NBTlRFTkNPREVBUkdTPTEsCit9OworIAoraW50IGRvX3lwY2FsbF90ciAoKTsKKyAKK3N0YXRp YyBpbnQKK3lwX21hc3RlciAoY2hhciAqKm91dG5hbWUpCit7CisgIC8vIFJlcGxhY2luZyBlbnVt IGNsbnRfc3RhdCB3aXRoIGludCBhdm9pZHMgdGhlIHdhcm5pbmcuCisgIGVudW0gY2xudF9zdGF0 IHJlc3VsdDsKKyAgcmVzdWx0ID0gZG9feXBjYWxsX3RyICgpOworICBpZiAocmVzdWx0ICE9IDAp CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgKm91dG5hbWUgPSBfX2J1aWx0aW5fc3RyZHVwICgiZm9v Iik7CisgIHJldHVybiAwOworfQorIAoraW50Cit5cF91cGRhdGUgKHZvaWQpCit7CisgIGNoYXIg Km1hc3RlcjsKKyAgaW50IHI7CisgIGlmICgociA9IHlwX21hc3RlciAoJm1hc3RlcikpICE9IDAp CisgICAgcmV0dXJuIHI7CisgIF9fYnVpbHRpbl9mcmVlIChtYXN0ZXIpOyAvKiB7IGRnLWJvZ3Vz ICJ1bmluaXRpYWxpemVkIiB9ICovCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvYXV0by1pbml0LXVuaW5pdC0yMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMDIwMGQ3MzRhMmMzCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvYXV0by1pbml0LXVuaW5pdC0yMi5jCkBAIC0wLDAgKzEsNjkgQEAKKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMyAtV3VuaW5pdGlhbGl6ZWQgLS1wYXJh bSB2ZWN0LW1heC12ZXJzaW9uLWZvci1hbGlhcy1jaGVja3M9MjAgLWZ0cml2aWFsLWF1dG8tdmFy LWluaXQ9emVybyIgfSAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNkZWZpbmUgQTEgIDI4 OTYgLyogKDEvc3FydCgyKSk8PDEyICovCisjZGVmaW5lIEEyICAyMjE3CisjZGVmaW5lIEEzICAz Nzg0CisjZGVmaW5lIEE0IC01MzUyCisKKyNkZWZpbmUgSURDVF9UUkFOU0ZPUk0oZGVzdCxzMCxz MSxzMixzMyxzNCxzNSxzNixzNyxkMCxkMSxkMixkMyxkNCxkNSxkNixkNyxtdW5nZSxzcmMpIHtc CisgICAgY29uc3QgaW50IGEwID0gKHNyYylbczBdICsgKHNyYylbczRdOyBcCisgICAgY29uc3Qg aW50IGExID0gKHNyYylbczBdIC0gKHNyYylbczRdOyBcCisgICAgY29uc3QgaW50IGEyID0gKHNy YylbczJdICsgKHNyYylbczZdOyBcCisgICAgY29uc3QgaW50IGEzID0gKEExKigoc3JjKVtzMl0g LSAoc3JjKVtzNl0pKSA+PiAxMTsgXAorICAgIGNvbnN0IGludCBhNCA9IChzcmMpW3M1XSArIChz cmMpW3MzXTsgXAorICAgIGNvbnN0IGludCBhNSA9IChzcmMpW3M1XSAtIChzcmMpW3MzXTsgXAor ICAgIGNvbnN0IGludCBhNiA9IChzcmMpW3MxXSArIChzcmMpW3M3XTsgXAorICAgIGNvbnN0IGlu dCBhNyA9IChzcmMpW3MxXSAtIChzcmMpW3M3XTsgXAorICAgIGNvbnN0IGludCBiMCA9IGE0ICsg YTY7IFwKKyAgICBjb25zdCBpbnQgYjEgPSAoQTMqKGE1ICsgYTcpKSA+PiAxMTsgXAorICAgIGNv bnN0IGludCBiMiA9ICgoQTQqYTUpID4+IDExKSAtIGIwICsgYjE7IFwKKyAgICBjb25zdCBpbnQg YjMgPSAoQTEqKGE2IC0gYTQpID4+IDExKSAtIGIyOyBcCisgICAgY29uc3QgaW50IGI0ID0gKChB MiphNykgPj4gMTEpICsgYjMgLSBiMTsgXAorICAgIChkZXN0KVtkMF0gPSBtdW5nZShhMCthMiAg ICtiMCk7IFwKKyAgICAoZGVzdClbZDFdID0gbXVuZ2UoYTErYTMtYTIrYjIpOyBcCisgICAgKGRl c3QpW2QyXSA9IG11bmdlKGExLWEzK2EyK2IzKTsgXAorICAgIChkZXN0KVtkM10gPSBtdW5nZShh MC1hMiAgIC1iNCk7IFwKKyAgICAoZGVzdClbZDRdID0gbXVuZ2UoYTAtYTIgICArYjQpOyBcCisg ICAgKGRlc3QpW2Q1XSA9IG11bmdlKGExLWEzK2EyLWIzKTsgXAorICAgIChkZXN0KVtkNl0gPSBt dW5nZShhMSthMy1hMi1iMik7IFwKKyAgICAoZGVzdClbZDddID0gbXVuZ2UoYTArYTIgICAtYjAp OyBcCit9CisKKyNkZWZpbmUgTVVOR0VfTk9ORSh4KSAoeCkKKyNkZWZpbmUgSURDVF9DT0woZGVz dCxzcmMpIElEQ1RfVFJBTlNGT1JNKGRlc3QsMCw4LDE2LDI0LDMyLDQwLDQ4LDU2LDAsOCwxNiwy NCwzMiw0MCw0OCw1NixNVU5HRV9OT05FLHNyYykKKworI2RlZmluZSBNVU5HRV9ST1coeCkgKCgo eCkgKyAweDdGKT4+OCkKKyNkZWZpbmUgSURDVF9ST1coZGVzdCxzcmMpIElEQ1RfVFJBTlNGT1JN KGRlc3QsMCwxLDIsMyw0LDUsNiw3LDAsMSwyLDMsNCw1LDYsNyxNVU5HRV9ST1csc3JjKQorCitz dGF0aWMgaW5saW5lIHZvaWQgYmlua19pZGN0X2NvbChpbnQgKmRlc3QsIGNvbnN0IGludDMyX3Qg KnNyYykKK3sKKyAgICBpZiAoKHNyY1s4XXxzcmNbMTZdfHNyY1syNF18c3JjWzMyXXxzcmNbNDBd fHNyY1s0OF18c3JjWzU2XSk9PTApIHsKKyAgICAgICAgZGVzdFswXSAgPQorICAgICAgICBkZXN0 WzhdICA9CisgICAgICAgIGRlc3RbMTZdID0KKyAgICAgICAgZGVzdFsyNF0gPQorICAgICAgICBk ZXN0WzMyXSA9CisgICAgICAgIGRlc3RbNDBdID0KKyAgICAgICAgZGVzdFs0OF0gPQorICAgICAg ICBkZXN0WzU2XSA9IHNyY1swXTsKKyAgICB9IGVsc2UgeworICAgICAgICBJRENUX0NPTChkZXN0 LCBzcmMpOworICAgIH0KK30KKworaW50IGJpbmtfaWRjdF9wdXRfYyh1aW50OF90ICpkZXN0LCBp bnQgbGluZXNpemUsIGludDMyX3QgKmJsb2NrKQoreworICAgIGludCBpOworICAgIGludCB0ZW1w WzY0XTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQorICAgICAgICBiaW5rX2lkY3RfY29s KCZ0ZW1wW2ldLCAmYmxvY2tbaV0pOworICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKyAg ICAgICAgSURDVF9ST1coICgmZGVzdFtpKmxpbmVzaXplXSksICgmdGVtcFs4KmldKSApOworICAg IH0KKworICAgIHJldHVybiAwOworfQorCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy9hdXRvLWluaXQtdW5pbml0LTIzLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQt dW5pbml0LTIzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43ZGNl OGQwNTJlMTYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWlu aXQtdW5pbml0LTIzLmMKQEAgLTAsMCArMSwyNyBAQAorLyogUFIgdHJlZS1vcHRpbWl6YXRpb24v Nzg0NTUgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAt V3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCitpbnQg aWo7CisKK3ZvaWQKK3FsICh2b2lkKQoreworICBpbnQgbTUgPSAwOworCisgIGZvciAoOzspCisg IHsKKyAgICBpZiAoMCkKKyAgICAgIGZvciAoOzspCisgICAgICB7CisgICAgICAgIGludCAqZ287 CisgICAgICAgIGludCAqdDQgPSBnbzsgLyogeyBkZy13YXJuaW5nICJpcyB1c2VkIHVuaW5pdGlh bGl6ZWQiIH0gKi8KKworIGwxOgorICAgICAgICAqdDQgPSAoKnQ0ICE9IDApID8gMCA6IDI7Cisg ICAgICB9CisKKyAgICBpZiAoaWogIT0gMCkKKyAgICAgIGdvdG8gbDE7CisgIH0KK30KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjQuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjFmNjc0MGMxMjNhZAotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjQuYwpAQCAtMCwwICsxLDEwIEBA CisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtV21heWJlLXVu aW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCitpbnQgZm9v IChpbnQgeCkKK3sKKyAgaW50IHk7CisgIGlmICh4KQorICAgIHJldHVybiAqKCZ5ICsgMSk7IC8q IHsgZGctYm9ndXMgIm1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQiIH0gKi8KKyAgcmV0dXJuIDA7 Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTI1 LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTI1LmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMzZkOTVmOWQyNzkKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTI1LmMKQEAgLTAs MCArMSwyMyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8g LVdtYXliZS11bmluaXRpYWxpemVkIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8K KworZXh0ZXJuIHVuc2lnbmVkIGJhciAodm9pZCk7CitleHRlcm4gdm9pZCBxdXV4ICh2b2lkKTsK KwordW5zaWduZWQgZm9vICh1bnNpZ25lZCB2KQoreworICB1bnNpZ25lZCB1OworICBpZiAodiAh PSAxKQorICAgIHUgPSBiYXIgKCk7CisKKyAgLy8gUHJldmVudCB0aGUgImRvbSIgcGFzcyBmcm9t IGNoYW5naW5nIHRoZSBDRkcgbGF5b3V0IGJhc2VkIG9uIHRoZSBpbmZlcmVuY2UKKyAgLy8gJ2lm ICh2ICE9IDEpIGlzIGZhbHNlIHRoZW4gKHYgIT0gMikgaXMgdHJ1ZScuICAoTm93IGl0IHdvdWxk IGhhdmUgdG8KKyAgLy8gZHVwbGljYXRlIHRoZSBsb29wIGluIG9yZGVyIHRvIGRvIHNvLCB3aGlj aCBpcyBkZWVtZWQgZXhwZW5zaXZlLikKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKQor ICAgIHF1dXggKCk7CisKKyAgaWYgKHYgIT0gMikKKyAgICByZXR1cm4gdTsgICAgICAgLyogeyBk Zy13YXJuaW5nICJtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIiB9ICovCisKKyAgcmV0dXJuIDA7 Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTI2 LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTI2LmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hZTk3ZWNmYTcxZTEKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTI2LmMKQEAgLTAs MCArMSwyMyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8g LVdtYXliZS11bmluaXRpYWxpemVkIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8K KworZXh0ZXJuIHVuc2lnbmVkIGJhciAodm9pZCk7CitleHRlcm4gdm9pZCBxdXV4ICh2b2lkKTsK KwordW5zaWduZWQgZm9vICh1bnNpZ25lZCB2KQoreworICB1bnNpZ25lZCB1OworICBpZiAodiAh PSAxMDApCisgICAgdSA9IGJhciAoKTsKKworICAvLyBQcmV2ZW50IHRoZSAiZG9tIiBwYXNzIGZy b20gY2hhbmdpbmcgdGhlIENGRyBsYXlvdXQgYmFzZWQgb24gdGhlIGluZmVyZW5jZQorICAvLyAn aWYgKHYgIT0gMTAwKSBpcyBmYWxzZSB0aGVuICh2IDwgMTA1KSBpcyB0cnVlJy4gIChOb3cgaXQg d291bGQgaGF2ZSB0bworICAvLyBkdXBsaWNhdGUgdGhlIGxvb3AgaW4gb3JkZXIgdG8gZG8gc28s IHdoaWNoIGlzIGRlZW1lZCBleHBlbnNpdmUuKQorICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBp KyspCisgICAgcXV1eCAoKTsKKworICBpZiAodiA8IDEwNSkgLyogdiA9PSAxMDAgZmFsbHMgaW50 byB0aGlzIHJhbmdlLiAgKi8KKyAgICByZXR1cm4gdTsgICAgICAgLyogeyBkZy13YXJuaW5nICJt YXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIiB9ICAqLworCisgIHJldHVybiAwOworfQpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0zLmMgYi9nY2MvdGVz dHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjdmZjIyODUwMWY4ZAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMy5jCkBAIC0wLDAgKzEsMzMgQEAKKy8q IFNwdXJpb3VzIHVuaW5pdCB2YXJpYWJsZSB3YXJuaW5ncywgY2FzZSAzLgorICAgSW5zcGlyZWQg YnkgY3BwZXhwLmMgKHBhcnNlX2NoYXJjb25zdCkgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1PIC1XdW5pbml0aWFsaXplZCAtZnRyaXZpYWwtYXV0by12YXIt aW5pdD16ZXJvIiB9ICovCisKK2V4dGVybiB2b2lkIGVycm9yIChjaGFyICopOworCitpbnQKK3Bh cnNlX2NoYXJjb25zdCAoY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0IGNoYXIgKmVuZCkKK3sKKyAg aW50IGM7IC8qIHsgZGctYm9ndXMgImMiICJ1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmci IH0gKi8KKyAgaW50IG5jaGFycywgcmV0dmFsOworCisgIG5jaGFycyA9IDA7CisgIHJldHZhbCA9 IDA7CisgIHdoaWxlIChzdGFydCA8IGVuZCkKKyAgICB7CisgICAgICBjID0gKnN0YXJ0Kys7Cisg ICAgICBpZiAoYyA9PSAnXCcnKQorCWJyZWFrOworICAgICAgbmNoYXJzKys7CisgICAgICByZXR2 YWwgKz0gYzsKKyAgICAgIHJldHZhbCA8PD0gODsKKyAgICB9CisKKyAgaWYgKG5jaGFycyA9PSAw KQorICAgIHJldHVybiAwOworCisgIGlmIChjICE9ICdcJycpCisgICAgZXJyb3IgKCJtYWxmb3Jt ZWQgY2hhcmFjdGVyIGNvbnN0YW50Iik7CisKKyAgcmV0dXJuIHJldHZhbDsKK30KZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMzQuYyBiL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMzQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjk4ZmMzNjZjODcxZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMzQuYwpAQCAtMCwwICsxLDU4IEBACisv KiBQUiBtaWRkbGUtZW5kLzEwMTM4IC0gd2FybiBmb3IgdW5pbml0aWFsaXplZCBhcnJheXMgcGFz c2VkIGFzIGNvbnN0KgorICAgYXJndW1lbnRzCisgICBWZXJpZnkgdGhhdCBwYXNzaW5nIHBvaW50 ZXJzIHRvIHVuaW5pdGlhbGl6ZWQgb2JqZWN0cyB0byBhcmd1bWVudHMKKyAgIHRvIGZ1bmN0aW9u cyBkZWNsYXJlZCB3aXRoIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgZGlhZ25vc2VkIHdoZXJlIGV4cGVj dGVkLgorICAgeyBkZy1kbyBjb21waWxlIH0KKyAgIHsgZGctb3B0aW9ucyAiLU8gLVdhbGwgLWZ0 cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCisjZGVmaW5lIFJXKC4uLikgX19hdHRy aWJ1dGVfXyAoKGFjY2VzcyAocmVhZF93cml0ZSwgX19WQV9BUkdTX18pKSkKKworUlcgKDEpIFJX ICgzKSB2b2lkCitmNHBpIChpbnQqLCBpbnQqLCBpbnQqLCBpbnQqKTsgICAgLy8geyBkZy1tZXNz YWdlICJpbiBhIGNhbGwgdG8gJ2Y0cGknIGRlY2xhcmVkIHdpdGggYXR0cmlidXRlICdhY2Nlc3Mg XFxcKHJlYWRfd3JpdGUsIFxbMTNcXVxcXCknIiB9CisKKwordm9pZCBub3dhcm5fc2NhbGFyICh2 b2lkKQoreworICBpbnQgaTEgPSAwLCBpMiwgaTMgPSAxLCBpNDsKKyAgZjRwaSAoJmkxLCAmaTIs ICZpMywgJmk0KTsKK30KKwordm9pZCB3YXJuX3NjYWxhcl8xICh2b2lkKQoreworICBpbnQgaTE7 ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHsgZGctbWVzc2FnZSAiZGVjbGFyZWQgaGVyZSIg fQorICBpbnQgaTIsIGkzID0gMSwgaTQ7CisKKyAgZjRwaSAoJmkxLCAmaTIsICZpMywgJmk0KTsg ICAgICAvLyB7IGRnLXdhcm5pbmcgIidpMScgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCIgfQor fQorCit2b2lkIHdhcm5fc2NhbGFyXzIgKHZvaWQpCit7CisgIGludCBqMSA9IDAsIGoyLCBqNDsK KyAgaW50IGozOworCisgIGY0cGkgKCZqMSwgJmoyLCAmajMsICZqNCk7ICAgICAgLy8geyBkZy13 YXJuaW5nICInajMnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQiIH0KK30KKworCit2b2lkIG5v d2Fybl9hcnJheV9pbml0ICh2b2lkKQoreworICBpbnQgYTFbNF0gPSB7IDAgfSwgYTJbNV0sIGEz WzZdID0geyAwIH0sIGE0WzddOworCisgIGY0cGkgKGExLCBhMiwgYTMsIGE0KTsKK30KKwordm9p ZCB3YXJuX2FycmF5XzEgKHZvaWQpCit7CisgIGludCBhMVs0XTsgICAgICAgICAgICAgICAgICAv LyB7IGRnLW1lc3NhZ2UgIidhMScgZGVjbGFyZWQgaGVyZSIgfQorICBpbnQgYTJbNV0sIGEzWzZd ID0geyAwIH0sIGE0WzddOworCisgIGY0cGkgKGExLCBhMiwgYTMsIGE0KTsgICAgICAvLyB7IGRn LXdhcm5pbmcgIidhMScgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCIgfQorfQorCit2b2lkIHdh cm5fYXJyYXlfMiAodm9pZCkKK3sKKyAgaW50IGExWzRdID0geyAwIH0sIGEyWzVdLCBhNFs3XTsK KyAgaW50IGEzWzZdOyAgICAgICAgICAgICAgICAgIC8vIHsgZGctbWVzc2FnZSAiJ2EzJyBkZWNs YXJlZCBoZXJlIiB9CisKKyAgZjRwaSAoYTEsIGEyLCBhMywgYTQpOyAgICAgIC8vIHsgZGctd2Fy bmluZyAiJ2EzJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIiB9Cit9CmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTM2LmMgYi9nY2MvdGVzdHN1aXRl L2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTM2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi42NDM3N2QzODBlZTkKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTM2LmMKQEAgLTAsMCArMSwyMzggQEAKKy8qIFBS IG1pZGRsZS1lbmQvMTAxMzggLSB3YXJuIGZvciB1bmluaXRpYWxpemVkIGFycmF5cyBwYXNzZWQg YXMgY29uc3QqCisgICBhcmd1bWVudHMKKyAgIFZlcmlmeSB0aGF0IHBhc3NpbmcgcG9pbnRlcnMg dG8gdW5pbml0aWFsaXplZCBvYmplY3RzIHRvIGNvbnN0CisgICBhcmd1bWVudHMgdG8gYnVpbHQt aW5zIGlzIGRpYWdub3NlZCB3aGVyZSBleHBlY3RlZC4KKyAgIHsgZGctZG8gY29tcGlsZSB9Cisg ICB7IGRnLW9wdGlvbnMgIi1PIC1XYWxsIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0K KyAgIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGFsbG9jYSB9ICovCisKK3R5cGVkZWYg X19TSVpFX1RZUEVfXyBzaXplX3Q7CisKK3ZvaWQqIGFsbG9jYSAoc2l6ZV90KTsKK3ZvaWQqIG1h bGxvYyAoc2l6ZV90KTsKK3ZvaWQqIHJlYWxsb2MgKHZvaWQqLCBzaXplX3QpOworCit2b2lkKiBt ZW1jcHkgKHZvaWQqLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKK2NoYXIqIHN0cmNweSAoY2hhcios IGNvbnN0IGNoYXIqKTsKK3NpemVfdCBzdHJsZW4gKGNvbnN0IGNoYXIqKTsKKwordm9pZCBzaW5r ICh2b2lkKik7CisKK3ZvaWQgbm93YXJuX2FycmF5X21lbWNweSAodm9pZCAqZCwgdW5zaWduZWQg bikKK3sKKyAgaW50IGFbMl07CisgIC8qIERpYWdub3NlIHRoaXM/ICAqLworICBtZW1jcHkgKGQs IGEsIG4gLyogTm9uLWNvbnN0YW50IHRvIGF2b2lkIGZvbGRpbmcgaW50byBNRU1fUkVGLiAgKi8p OworfQorCit2b2lkIG5vd2Fybl9hcnJheV9wbHVzX2NzdF9tZW1jcHkgKHZvaWQgKmQsIHVuc2ln bmVkIG4pCit7CisgIGludCBhWzNdOworICAvKiBEaWFnbm9zZSB0aGlzPyAgKi8KKyAgbWVtY3B5 IChkLCBhICsgMSwgbik7Cit9CisKK3ZvaWQgbm93YXJuX2FycmF5X3BsdXNfdmFyX21lbWNweSAo dm9pZCAqZCwgdW5zaWduZWQgbiwgaW50IGkpCit7CisgIGludCBhWzRdOworICAvKiBEaWFnbm9z ZSB0aGlzPyAgKi8KKyAgbWVtY3B5IChkLCBhICsgaSwgbik7Cit9CisKK3ZvaWQgbm93YXJuX2Fy cmF5X2Fzc2lnbl9tZW1jcHkgKGNoYXIgKmQsIHVuc2lnbmVkIG4pCit7CisgIGludCBhWzNdOwor ICBhWzFdID0gMzsKKyAgbWVtY3B5IChkLCBhLCBuKTsKK30KKwordm9pZCBub3dhcm5fYXJyYXlf aW5pdF9tZW1jcHkgKGNoYXIgKmQsIHVuc2lnbmVkIG4pCit7CisgIGludCBhWzRdID0geyAwIH07 CisgIG1lbWNweSAoZCwgYSwgbik7Cit9CisKK3ZvaWQgbm93YXJuX2FycmF5X2NvbXBvdW5kX21l bWNweSAodm9pZCAqZCwgdW5zaWduZWQgbikKK3sKKyAgbWVtY3B5IChkLCAoaW50WzJdKXsgMCB9 LCBuKTsKK30KKwordm9pZCBub3dhcm5fc3RydWN0X2Fzc2lnbl9tZW1jcHkgKHZvaWQgKmQsIHVu c2lnbmVkIG4pCit7CisgIHN0cnVjdCBTIHsgaW50IGEsIGIsIGMsIGQ7IH0gczsKKyAgcy5iID0g MTsKKyAgcy5kID0gMjsKKyAgbWVtY3B5IChkLCAmcywgbik7Cit9CisKKwordm9pZCBub3dhcm5f YXJyYXlfaW5pdF9zdHJjcHkgKGNoYXIgKmRbXSwgdW5zaWduZWQgbikKK3sKKyAgY2hhciBhWzhd ID0gIjAxMiI7CisKKyAgc3RyY3B5IChkWzBdLCBhKTsKKyAgc3RyY3B5IChkWzFdLCBhICsgMSk7 CisgIHN0cmNweSAoZFsxXSwgYSArIDIpOworICBzdHJjcHkgKGRbMV0sIGEgKyAzKTsKKyAgc3Ry Y3B5IChkWzFdLCBhICsgNCk7CisgIHN0cmNweSAoZFsxXSwgYSArIDUpOworICBzdHJjcHkgKGRb MV0sIGEgKyA2KTsKKyAgc3RyY3B5IChkWzFdLCBhICsgNyk7Cit9CisKKwordm9pZCBub3dhcm5f YXJyYXlfYXNzaWduX3N0cmNweSAoY2hhciAqZFtdLCB1bnNpZ25lZCBuKQoreworICBjaGFyIGFb OF07CisgIGFbMF0gPSAnMCc7CisgIGFbMV0gPSAnMSc7CisgIGFbMl0gPSAnMic7CisgIGFbM10g PSAnXDAnOworCisgIHN0cmNweSAoZFswXSwgYSk7CisgIHN0cmNweSAoZFsxXSwgYSArIDEpOwor ICBzdHJjcHkgKGRbMV0sIGEgKyAyKTsKKyAgc3RyY3B5IChkWzFdLCBhICsgMyk7Cit9CisKK3Zv aWQgd2Fybl9hcnJheV9wbHVzX2NzdF9zdHJjcHkgKGNoYXIgKmQsIHVuc2lnbmVkIG4pCit7Cisg IGNoYXIgYVs4XTsKKyAgYVswXSA9ICcxJzsKKyAgYVsxXSA9ICcyJzsKKyAgYVsyXSA9ICczJzsK KyAgYVszXSA9ICdcMCc7CisKKyAgc3RyY3B5IChkLCBhICsgNCk7ICAgICAgICAgIC8vIHsgZGct d2FybmluZyAiXFxcWy1XdW5pbml0aWFsaXplZCIgfQorICBzdHJjcHkgKGQsIGEgKyA1KTsgICAg ICAgICAgLy8geyBkZy13YXJuaW5nICJcXFxbLVd1bmluaXRpYWxpemVkIiB9CisgIHN0cmNweSAo ZCwgYSArIDYpOyAgICAgICAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV3VuaW5pdGlhbGl6ZWQi IH0KKyAgc3RyY3B5IChkLCBhICsgNyk7ICAgICAgICAgIC8vIHsgZGctd2FybmluZyAiXFxcWy1X dW5pbml0aWFsaXplZCIgfQorfQorCit2b2lkIG5vd2Fybl9hcnJheV9wbHVzX3Zhcl9zdHJjcHkg KGNoYXIgKmQsIGludCBpKQoreworICBjaGFyIGFbOF07CisgIGFbMF0gPSAnMSc7CisgIGFbMV0g PSAnMic7CisgIGFbMl0gPSAnMyc7CisgIGFbM10gPSAnXDAnOworCisgIHN0cmNweSAoZCwgYSAr IGkpOworfQorCisKK3NpemVfdCBub3dhcm5fYXJyYXlfYXNzaWduX3N0cmxlbiAoY29uc3QgY2hh ciAqcykKK3sKKyAgY2hhciBhWzhdOworICBhWzBdID0gc1swXTsKKyAgYVsxXSA9IHNbMV07Cisg IGFbMl0gPSBzWzJdOworICBhWzNdID0gc1szXTsKKworICBzaXplX3QgbiA9IDA7CisKKyAgbiAr PSBzdHJsZW4gKGEpOworICBuICs9IHN0cmxlbiAoYSArIDEpOworICBuICs9IHN0cmxlbiAoYSAr IDIpOworICBuICs9IHN0cmxlbiAoYSArIDMpOworICByZXR1cm4gbjsKK30KKworc2l6ZV90IHdh cm5fYXJyYXlfcGx1c19jc3Rfc3RybGVuIChjb25zdCBjaGFyICpzKQoreworICBjaGFyIGFbOF07 CisgIGFbMF0gPSBzWzBdOworICBhWzFdID0gc1sxXTsKKyAgYVsyXSA9IHNbMl07CisgIGFbM10g PSBzWzNdOworCisgIHJldHVybiBzdHJsZW4gKGEgKyA0KTsgICAgICAvLyB7IGRnLXdhcm5pbmcg IlxcXFstV3VuaW5pdGlhbGl6ZWQiIH0KK30KKworc2l6ZV90IG5vd2Fybl9hcnJheV9wbHVzX3Zh cl9zdHJsZW4gKGNvbnN0IGNoYXIgKnMsIGludCBpKQoreworICBjaGFyIGFbOF07CisgIGFbMF0g PSBzWzBdOworICBhWzFdID0gc1sxXTsKKyAgYVsyXSA9IHNbMl07CisgIGFbM10gPSBzWzNdOwor CisgIHJldHVybiBzdHJsZW4gKGEgKyBpKTsKK30KKworCitzaXplX3Qgbm93YXJuX2FsbG9jYV9h c3NpZ25fc3RybGVuIChpbnQgaSkKK3sKKyAgY2hhciAqcCA9IChjaGFyKilhbGxvY2EgKDgpOwor ICBwW2ldID0gJ1wwJzsKKyAgcmV0dXJuIHN0cmxlbiAocCk7Cit9CisKK3NpemVfdCBub3dhcm5f YWxsb2NhX2VzY2FwZV9zdHJsZW4gKGludCBpKQoreworICBjaGFyICpwID0gKGNoYXIqKWFsbG9j YSAoOCk7CisgIHNpbmsgKHApOworICByZXR1cm4gc3RybGVuIChwKTsKK30KKworc2l6ZV90IHdh cm5fYWxsb2NhX3N0cmxlbiAodm9pZCkKK3sKKyAgY2hhciAqcCA9IChjaGFyKilhbGxvY2EgKDgp OworICByZXR1cm4gc3RybGVuIChwKTsgICAgICAgICAgLy8geyBkZy13YXJuaW5nICJcXFxbLVd1 bmluaXRpYWxpemVkIiB9Cit9CisKKworc2l6ZV90IG5vd2Fybl9tYWxsb2NfYXNzaWduX3N0cmxl biAoaW50IGkpCit7CisgIGNoYXIgKnAgPSAoY2hhciopbWFsbG9jICg4KTsKKyAgcFtpXSA9ICdc MCc7CisgIHJldHVybiBzdHJsZW4gKHApOworfQorCitzaXplX3Qgbm93YXJuX21hbGxvY19lc2Nh cGVfc3RybGVuIChpbnQgaSkKK3sKKyAgY2hhciAqcCA9IChjaGFyKiltYWxsb2MgKDgpOworICBz aW5rIChwKTsKKyAgcmV0dXJuIHN0cmxlbiAocCk7Cit9CisKK3NpemVfdCB3YXJuX21hbGxvY19z dHJsZW4gKHZvaWQpCit7CisgIGNoYXIgKnAgPSAoY2hhciopbWFsbG9jICg4KTsKKyAgcmV0dXJu IHN0cmxlbiAocCk7ICAgICAgICAgIC8vIHsgZGctd2FybmluZyAiXFxcWy1XdW5pbml0aWFsaXpl ZCIgfQorfQorCisKK3NpemVfdCBub3dhcm5fcmVhbGxvY19zdHJsZW4gKHZvaWQgKnApCit7Cisg IGNoYXIgKnEgPSAoY2hhciopcmVhbGxvYyAocCwgOCk7CisgIHJldHVybiBzdHJsZW4gKHEpOwor fQorCisKK3NpemVfdCBub3dhcm5fdmxhX2Fzc2lnbl9zdHJsZW4gKGludCBuLCBpbnQgaSkKK3sK KyAgY2hhciB2bGFbbl07CisgIHZsYVtpXSA9ICdcMCc7CisgIHJldHVybiBzdHJsZW4gKHZsYSk7 Cit9CisKK3NpemVfdCBub3dhcm5fdmxhX3N0cmNweV9zdHJsZW4gKGludCBuLCBjb25zdCBjaGFy ICpzLCBpbnQgaSkKK3sKKyAgY2hhciB2bGFbbl07CisgIHN0cmNweSAodmxhLCBzKTsKKyAgcmV0 dXJuIHN0cmxlbiAodmxhICsgaSk7Cit9CisKK3NpemVfdCBub3dhcm5fdmxhX2VzY2FwZV9zdHJs ZW4gKGludCBuLCBpbnQgaSkKK3sKKyAgY2hhciB2bGFbbl07CisgIHNpbmsgKHZsYSk7CisgIHJl dHVybiBzdHJsZW4gKHZsYSk7Cit9CisKK3NpemVfdCB3YXJuX3ZsYV9zdHJsZW4gKHVuc2lnbmVk IG4pCit7CisgIGNoYXIgdmxhW25dOworICByZXR1cm4gc3RybGVuICh2bGEpOyAgICAgICAgLy8g eyBkZy13YXJuaW5nICJcXFxbLVd1bmluaXRpYWxpemVkIiB9Cit9CmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTM3LmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy9hdXRvLWluaXQtdW5pbml0LTM3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi5kYTNjOWRiMTg0MGEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRl L2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTM3LmMKQEAgLTAsMCArMSwxNTQgQEAKKy8qIFBSIG1p ZGRsZS1lbmQvMTAxMzggLSB3YXJuIGZvciB1bmluaXRpYWxpemVkIGFycmF5cyBwYXNzZWQgYXMg Y29uc3QgYXJndW1lbnRzCisgICBWZXJpZnkgdGhhdCAtV3VuaW5pdGlhbGl6ZWQgYW5kIC1XbWF5 YmUtdW5pbml0aWFsaXplZCB0cmlnZ2VyIChvciBkb24ndCkKKyAgIHdoZW4gcGFzc2luZyB1bmlu aXRpYWxpemVkIHZhcmlhYmxlcyBieSByZWZlcmVuY2UgdG8gZnVuY3Rpb25zIGRlY2xhcmVkCisg ICB3aXRoIG9yIHdpdGhvdXQgYXR0cmlidXRlIGFjY2VzcyBhbmQgd2l0aCAob3Igd2l0aG91dCkg Y29uc3QgcXVhbGlmaWVkCisgICBhcmd1bWVudHMgb2YgYXJyYXksIFZMQSwgb3IgcG9pbnRlciB0 eXBlcy4KKyAgIHsgZGctZG8gY29tcGlsZSB9CisgICB7IGRnLW9wdGlvbnMgIi1PMiAtV2FsbCAt ZnRyYWNrLW1hY3JvLWV4cGFuc2lvbj0wIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0g Ki8KKworI2RlZmluZSBOT05FICAgIC8qIG5vbmUgKi8KKyNkZWZpbmUgUk8oLi4uKSBfX2F0dHJp YnV0ZV9fICgoYWNjZXNzIChyZWFkX29ubHksIF9fVkFfQVJHU19fKSkpCisjZGVmaW5lIFJXKC4u LikgX19hdHRyaWJ1dGVfXyAoKGFjY2VzcyAocmVhZF93cml0ZSwgX19WQV9BUkdTX18pKSkKKyNk ZWZpbmUgV08oLi4uKSBfX2F0dHJpYnV0ZV9fICgoYWNjZXNzICh3cml0ZV9vbmx5LCBfX1ZBX0FS R1NfXykpKQorI2RlZmluZSBYKC4uLikgIF9fYXR0cmlidXRlX18gKChhY2Nlc3MgKG5vbmUsIF9f VkFfQVJHU19fKSkpCisKKyNkZWZpbmUgQ09OQ0FUKHgsIHkpIHggIyMgeQorI2RlZmluZSBDQVQo eCwgeSkgICAgQ09OQ0FUICh4LCB5KQorI2RlZmluZSBVTklRKHBmeCkgICAgQ0FUIChwZngsIF9f TElORV9fKQorCitleHRlcm4gdm9pZCBzaW5rICh2b2lkKik7CisKKworI2RlZmluZSBUMShhdHRy LCBuYW1lLCB0eXBlKQkJCVwKKyAgdm9pZCBVTklRIChDQVQgKHRlc3RfLCBuYW1lKSkodm9pZCkg ewkJXAorICAgIGV4dGVybiBhdHRyIHZvaWQgVU5JUSAobmFtZSkodHlwZSk7CQlcCisgICAgaW50 IHg7CQkJCQlcCisgICAgVU5JUSAobmFtZSkoJngpOwkJCQlcCisgICAgc2luayAoJngpOwkJCQkJ XAorICB9CisKKyNkZWZpbmUgVDIoYXR0ciwgbmFtZSwgdHlwZXMpCQkJXAorICB2b2lkIFVOSVEg KENBVCAodGVzdF8sIG5hbWUpKSh2b2lkKSB7CQlcCisgICAgZXh0ZXJuIGF0dHIgdm9pZCBVTklR IChuYW1lKSh0eXBlcyk7CVwKKyAgICBpbnQgeDsJCQkJCVwKKyAgICBVTklRIChuYW1lKSgxLCAm eCk7CQkJCVwKKyAgICBzaW5rICgmeCk7CQkJCQlcCisgIH0KKworCit0eXBlZGVmIGludCBJQV9b XTsKK3R5cGVkZWYgY29uc3QgaW50IENJQV9bXTsKKworVDEgKE5PTkUsICAgZmlhXywgICBJQV8p OworVDEgKE5PTkUsICAgZmNpYV8sICBDSUFfKTsgICAgLy8geyBkZy13YXJuaW5nICJcXFxbLVdt YXliZS11bmluaXRpYWxpemVkIiB9CitUMSAoUk8gKDEpLCBmcm9pYV8sIElBXyk7ICAgICAvLyB7 IGRnLXdhcm5pbmcgIlxcXFstV3VuaW5pdGlhbGl6ZWQiIH0KK1QxIChSVyAoMSksIGZyd2lhXywg SUFfKTsgICAgIC8vIHsgZGctd2FybmluZyAiXFxcWy1XbWF5YmUtdW5pbml0aWFsaXplZCIgfQor VDEgKFdPICgxKSwgZndvaWFfLCBJQV8pOworVDEgKFggKDEpLCAgZnhpYV8sICBJQV8pOworCisK K3R5cGVkZWYgaW50IElBMVsxXTsKK3R5cGVkZWYgY29uc3QgaW50IENJQTFbMV07CisKK1QxIChO T05FLCAgIGZpYTEsICAgSUExKTsKK1QxIChOT05FLCAgIGZjaWExLCAgQ0lBMSk7ICAgIC8vIHsg ZGctd2FybmluZyAiXFxcWy1XbWF5YmUtdW5pbml0aWFsaXplZCIgfQorVDEgKFJPICgxKSwgZnJv aWExLCBJQTEpOyAgICAgLy8geyBkZy13YXJuaW5nICJcXFxbLVd1bmluaXRpYWxpemVkIiB9CitU MSAoUlcgKDEpLCBmcndpYTEsIElBMSk7ICAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV21heWJl LXVuaW5pdGlhbGl6ZWQiIH0KK1QxIChXTyAoMSksIGZ3b2lhMSwgSUExKTsKK1QxIChYICgxKSwg IGZ4aWExLCAgSUExKTsKKworCisjZGVmaW5lIElBUlMxICBpbnRbcmVzdHJpY3Qgc3RhdGljIDFd CisjZGVmaW5lIENJQVJTMSBjb25zdCBpbnRbcmVzdHJpY3Qgc3RhdGljIDFdCisKK1QxIChOT05F LCAgIGZpYXJzMSwgICBJQVJTMSk7CitUMSAoTk9ORSwgICBmY2lhcnMxLCAgQ0lBUlMxKTsvLyB7 IGRnLXdhcm5pbmcgIlxcXFstV21heWJlLXVuaW5pdGlhbGl6ZWQiIH0KK1QxIChSTyAoMSksIGZy b2lhcnMxLCBJQVJTMSk7IC8vIHsgZGctd2FybmluZyAiXFxcWy1XdW5pbml0aWFsaXplZCIgfQor VDEgKFJXICgxKSwgZnJ3aWFyczEsIElBUlMxKTsgLy8geyBkZy13YXJuaW5nICJcXFxbLVdtYXli ZS11bmluaXRpYWxpemVkIiB9CitUMSAoV08gKDEpLCBmd29pYXJzMSwgSUFSUzEpOworVDEgKFgg KDEpLCAgZnhpYXJzMSwgIElBUlMxKTsKKworCisjZGVmaW5lIElBUzEgIGludFtzdGF0aWMgMV0K KyNkZWZpbmUgQ0lBUzEgY29uc3QgaW50W3N0YXRpYyAxXQorCitUMSAoTk9ORSwgICBmaWFzMSwg ICBJQVMxKTsKK1QxIChOT05FLCAgIGZjaWFzMSwgIENJQVMxKTsgICAvLyB7IGRnLXdhcm5pbmcg IlxcXFstV21heWJlLXVuaW5pdGlhbGl6ZWQiIH0KK1QxIChSTyAoMSksIGZyb2lhczEsIElBUzEp OyAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV3VuaW5pdGlhbGl6ZWQiIH0KK1QxIChSVyAoMSks IGZyd2lhczEsIElBUzEpOyAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV21heWJlLXVuaW5pdGlh bGl6ZWQiIH0KK1QxIChXTyAoMSksIGZ3b2lhczEsIElBUzEpOworVDEgKFggKDEpLCAgZnhpYXMx LCAgSUFTMSk7CisKKworI2RlZmluZSBJQVggIGludFsqXQorI2RlZmluZSBDSUFYIGNvbnN0IGlu dFsqXQorCitUMSAoTk9ORSwgICBmaWF4LCAgIElBWCk7CitUMSAoTk9ORSwgICBmY2lheCwgIENJ QVgpOyAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV21heWJlLXVuaW5pdGlhbGl6ZWQiIH0KK1Qx IChSTyAoMSksIGZyb2lheCwgSUFYKTsgICAgIC8vIHsgZGctd2FybmluZyAiXFxcWy1XdW5pbml0 aWFsaXplZCIgfQorVDEgKFJXICgxKSwgZnJ3aWF4LCBJQVgpOyAgICAgLy8geyBkZy13YXJuaW5n ICJcXFxbLVdtYXliZS11bmluaXRpYWxpemVkIiB9CitUMSAoV08gKDEpLCBmd29pYXgsIElBWCk7 CitUMSAoWCAoMSksICBmeGlheCwgIElBWCk7CisKKworI2RlZmluZSBJQU4gIGludCBuLCBpbnRb bl0KKyNkZWZpbmUgQ0lBTiBpbnQgbiwgY29uc3QgaW50W25dCisKK1QyIChOT05FLCAgICAgIGZp YW4sICAgSUFOKTsKK1QyIChOT05FLCAgICAgIGZjaWFuLCAgQ0lBTik7IC8vIHsgZGctd2Fybmlu ZyAiXFxcWy1XbWF5YmUtdW5pbml0aWFsaXplZCIgfQorVDIgKFJPICgyLCAxKSwgZnJvaWFuLCBJ QU4pOyAgLy8geyBkZy13YXJuaW5nICJcXFxbLVd1bmluaXRpYWxpemVkIiB9CitUMiAoUlcgKDIs IDEpLCBmcndpYW4sIElBTik7ICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV21heWJlLXVuaW5pdGlh bGl6ZWQiIH0KK1QyIChXTyAoMiwgMSksIGZ3b2lhbiwgSUFOKTsKK1QyIChYICgyLCAxKSwgIGZ4 aWFuLCAgSUFOKTsKKworCit0eXBlZGVmIGludCogSVA7Cit0eXBlZGVmIGNvbnN0IGludCogQ0lQ OworCitUMSAoTk9ORSwgICBmaXAsICAgSVApOworVDEgKE5PTkUsICAgZmNpcCwgIENJUCk7ICAg ICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV21heWJlLXVuaW5pdGlhbGl6ZWQiIH0KK1QxIChSTyAo MSksIGZyb2lwLCBJUCk7ICAgICAgLy8geyBkZy13YXJuaW5nICJcXFxbLVd1bmluaXRpYWxpemVk IiB9CitUMSAoUlcgKDEpLCBmcndpcCwgSVApOyAgICAgIC8vIHsgZGctd2FybmluZyAiXFxcWy1X bWF5YmUtdW5pbml0aWFsaXplZCIgfQorVDEgKFdPICgxKSwgZndvaXAsIElQKTsKK1QxIChYICgx KSwgIGZ4aXAsICBJUCk7CisKKworLyogVmVyaWZ5IHRoYXQgdGhlIG5vdGVzIHByaW50ZWQgYWZ0 ZXIgdGhlIHdhcm5pbmcgbWVudGlvbiBhdHRyaWJ1dGUKKyAgIGFjY2VzcyBvbmx5IHdoZW4gdGhl IGF0dHJpYnV0ZSBpcyBleHBsaWNpdGx5IHVzZWQgaW4gdGhlIGRlY2xhcmF0aW9uCisgICBhbmQg bm90IG90aGVyd2lzZS4gICovCisKK3ZvaWQgdGVzdF9ub3RlX2NzdF9yZXN0cmljdCAodm9pZCkK K3sKKyAgZXh0ZXJuIHZvaWQKKyAgICBmY2NhciAoY29uc3QgY2hhcltyZXN0cmljdF0pOyAgIC8v IHsgZGctbWVzc2FnZSAiYnkgYXJndW1lbnQgMSBvZiB0eXBlICdjb25zdCBjaGFyXFxcW3Jlc3Ry aWN0XScgdG8gJ2ZjY2FyJyIgIm5vdGUiIH0KKworICBjaGFyIGFbMV07ICAgICAgICAgICAgICAg ICAgLy8geyBkZy1tZXNzYWdlICInYScgZGVjbGFyZWQgaGVyZSIgIm5vdGUiIH0KKyAgZmNjYXIg KGEpOyAgICAgICAgICAgICAgICAgIC8vIHsgZGctd2FybmluZyAiJ2EnIG1heSBiZSB1c2VkIHVu aW5pdGlhbGl6ZWQiIH0KK30KKwordm9pZCB0ZXN0X25vdGVfdmxhIChpbnQgbikKK3sKKyAgZXh0 ZXJuIHZvaWQKKyAgICBmY2N2bGEgKGNvbnN0IGNoYXJbbl0pOyAgIC8vIHsgZGctbWVzc2FnZSAi YnkgYXJndW1lbnQgMSBvZiB0eXBlICdjb25zdCBjaGFyXFxcW25dJyB0byAnZmNjdmxhJyIgIm5v dGUiIH0KKworICBjaGFyIGFbMl07ICAgICAgICAgICAgICAgICAgLy8geyBkZy1tZXNzYWdlICIn YScgZGVjbGFyZWQgaGVyZSIgIm5vdGUiIH0KKyAgZmNjdmxhIChhKTsgICAgICAgICAgICAgICAg IC8vIHsgZGctd2FybmluZyAiJ2EnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQiIH0KK30KKwor dm9pZCB0ZXN0X25vdGVfcm8gKHZvaWQpCit7CisgIGV4dGVybiBSTyAoMSkgdm9pZAorICAgIGZy b2NhciAoY2hhcltyZXN0cmljdF0pOyAgLy8geyBkZy1tZXNzYWdlICJpbiBhIGNhbGwgdG8gJ2Zy b2NhcicgZGVjbGFyZWQgd2l0aCBhdHRyaWJ1dGUgJ2FjY2VzcyBcXFwocmVhZF9vbmx5LCAxXFxc KSciICJub3RlIiB9CisKKyAgY2hhciBhWzNdOyAgICAgICAgICAgICAgICAgIC8vIHsgZGctbWVz c2FnZSAiJ2EnIGRlY2xhcmVkIGhlcmUiICJub3RlIiB9CisgIGZyb2NhciAoYSk7ICAgICAgICAg ICAgICAgICAvLyB7IGRnLXdhcm5pbmcgIidhJyBpcyB1c2VkIHVuaW5pdGlhbGl6ZWQiIH0KK30K Kwordm9pZCB0ZXN0X25vdGVfcncgKHZvaWQpCit7CisgIGV4dGVybiBSVyAoMSkgdm9pZAorICAg IGZyd2NhciAoY2hhcltyZXN0cmljdF0pOyAgLy8geyBkZy1tZXNzYWdlICJpbiBhIGNhbGwgdG8g J2Zyd2NhcicgZGVjbGFyZWQgd2l0aCBhdHRyaWJ1dGUgJ2FjY2VzcyBcXFwocmVhZF93cml0ZSwg MVxcXCknIiAibm90ZSIgfQorCisgIGNoYXIgYVs0XTsgICAgICAgICAgICAgICAgICAvLyB7IGRn LW1lc3NhZ2UgIidhJyBkZWNsYXJlZCBoZXJlIiAibm90ZSIgfQorICBmcndjYXIgKGEpOyAgICAg ICAgICAgICAgICAgLy8geyBkZy13YXJuaW5nICInYScgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXpl ZCIgfQorfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5p dC00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTQuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQ4MmM4MzdjYWNiMgotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtNC5jCkBAIC0w LDAgKzEsNTIgQEAKKy8qIFNwdXJpb3VzIHVuaW5pdCB2YXJpYWJsZSB3YXJuaW5ncywgY2FzZSA0 LgorICAgU2ltcGxpZmllZCB2ZXJzaW9uIG9mIGNwcGV4cC5jIChjcHBfcGFyc2VfZXhwcikuCisK KyAgIFRoaXMgb25lIGlzIHJlYWxseSBmcmFnaWxlLCBpdCBnZXRzIGl0IHJpZ2h0IGlmIHlvdSB0 YWtlIG91dCBjYXNlCisgICAxLCBvciBpZiB0aGUgc3RydWN0dXJlIGlzIHJlcGxhY2VkIGJ5IGFu IGludCwgb3IgaWYgdGhlIHN0cnVjdHVyZQorICAgaGFzIGZld2VyIG1lbWJlcnMgKCEpICovCisK Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1XdW5pbml0aWFs aXplZCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK2V4dGVybiB2b2lkIGFi b3J0ICh2b2lkKTsKKworc3RydWN0IG9wZXJhdGlvbiB7CisgICAgc2hvcnQgb3A7CisgICAgY2hh ciBycHJpbzsKKyAgICBjaGFyIGZsYWdzOworICAgIGNoYXIgdW5zaWduZWRwOworICAgIGxvbmcg dmFsdWU7Cit9OworCitleHRlcm4gc3RydWN0IG9wZXJhdGlvbiBjcHBfbGV4ICh2b2lkKTsKKwor dm9pZAorY3BwX3BhcnNlX2V4cHIgKHZvaWQpCit7CisgIGludCBycHJpbzsgLyogeyBkZy1ib2d1 cyAicnByaW8iICJ1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmcgUFIxOTgzMyIgfSAqLwor ICBzdHJ1Y3Qgb3BlcmF0aW9uIG9wOworCisgIGZvciAoOzspCisgICAgeworICAgICAgb3AgPSBj cHBfbGV4ICgpOworCisgICAgICBzd2l0Y2ggKG9wLm9wKQorCXsKKwljYXNlIDA6CisJICBicmVh azsKKwljYXNlIDE6CisJICByZXR1cm47CisJY2FzZSAyOgorCSAgcnByaW8gPSAxOworCSAgYnJl YWs7CisJZGVmYXVsdDoKKwkgIHJldHVybjsKKwl9CisKKyAgICAgIGlmIChvcC5vcCA9PSAwKQor CXJldHVybjsKKworICAgICAgaWYgKHJwcmlvICE9IDEpCisJYWJvcnQoKTsKKyAgICB9Cit9CmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTUuYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtNS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWRhODFjOTEyYmRkCi0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC01LmMKQEAgLTAsMCArMSwzOSBA QAorLyogU3B1cmlvdXMgdW5pbml0aWFsaXplZC12YXJpYWJsZSB3YXJuaW5ncy4gICovCisvKiBE aXNhYmxlIGp1bXAgdGhyZWFkaW5nLCBldGMgdG8gdGVzdCBjb21waWxlciBhbmFseXNpcy4gICov CisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtV3VuaW5pdGlh bGl6ZWQgLWZuby10cmVlLWRjZSAtZm5vLXRyZWUtdnJwIC1mbm8tdHJlZS1kb21pbmF0b3Itb3B0 cyAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK2V4dGVybiB2b2lkIHVzZShp bnQpOworZXh0ZXJuIHZvaWQgZm9vKHZvaWQpOworCit2b2lkCitmdW5jMShpbnQgY29uZCkKK3sK KyAgICBpbnQgeDsgIC8qIHsgZGctYm9ndXMgIngiICJ1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdh cm5pbmciIH0gKi8KKworICAgIGlmKGNvbmQpCisJeCA9IDE7CisKKyAgICBmb28oKTsKKworICAg IGlmKGNvbmQpCisJdXNlKHgpOworfQorCit2b2lkCitmdW5jMiAoaW50IGNvbmQpCit7CisgICAg aW50IHg7ICAvKiB7IGRnLWJvZ3VzICJ4IiAidW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5n IiB9ICovCisgICAgaW50IGZsYWcgPSAwOworCisgICAgaWYoY29uZCkKKyAgICB7CisJeCA9IDE7 CisJZmxhZyA9IDE7CisgICAgfQorCisgICAgZm9vKCk7CisKKyAgICBpZihmbGFnKQorCXVzZSh4 KTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQt Ni5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC02LmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNmNiYTRlZjIyYzAKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTYuYwpAQCAtMCww ICsxLDQ3IEBACisvKiBTcHVyaW91cyB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmdzLgor ICAgVGhpcyBvbmUgaW5zcGlyZWQgYnkgamF2YS9jbGFzcy5jOmJ1aWxkX3V0ZjhfcmVmLiAgKi8K KworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLVd1bmluaXRp YWxpemVkIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworI2luY2x1ZGUgPHN0 ZGRlZi5oPgorCitzdHJ1Y3QgdHJlZQoreworICAgIHN0cnVjdCB0cmVlICpjYXI7CisgICAgc3Ry dWN0IHRyZWUgKmNkcjsKKyAgICBpbnQgdHlwZSwgZGF0YTsKK307CisKK2V4dGVybiB2b2lkICpt YWxsb2Moc2l6ZV90KTsKKworI2RlZmluZSBJTlRFR0VSX1QgMQorI2RlZmluZSBQVFJfVAkgIDIK KworI2RlZmluZSBBUFBFTkQoVFJFRSwgTEFTVCwgVFlQRSwgVkFMVUUpCQkJCVwKK2RvIHsJCQkJ CQkJCVwKKyAgICAgc3RydWN0IHRyZWUgKnRtcCA9IG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgdHJl ZSkpOwkJXAorICAgICB0bXAtPmNhciA9IDA7IHRtcC0+Y2RyID0gMDsgdG1wLT50eXBlID0gVFlQ RTsJCVwKKyAgICAgdG1wLT5kYXRhID0gVkFMVUU7CQkJCQkJXAorICAgICBpZiAoVFJFRS0+Y2Fy KQkJCQkJCVwKKwkgTEFTVC0+Y2RyID0gdG1wOwkJCQkJXAorICAgICBlbHNlCQkJCQkJCVwKKwkg VFJFRS0+Y2FyID0gdG1wOwkJCQkJXAorICAgICBMQVNUID0gdG1wOwkJCQkJCVwKK30gd2hpbGUo MCkKKyAKK3N0cnVjdCB0cmVlICoKK21ha2Vfc29tZXRoaW5nKGludCBhLCBpbnQgYiwgaW50IGMp Cit7CisgICAgc3RydWN0IHRyZWUgKnJ2OworICAgIHN0cnVjdCB0cmVlICpmaWVsZDsKKworICAg IHJ2ID0gbWFsbG9jIChzaXplb2YgKHN0cnVjdCB0cmVlKSk7CisgICAgcnYtPmNhciA9IDA7CisK KyAgICBBUFBFTkQocnYsIGZpZWxkLCBJTlRFR0VSX1QsIGEpOyAgLyogeyBkZy1ib2d1cyAiZmll bGQiICJ1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmciIH0gKi8KKyAgICBBUFBFTkQocnYs IGZpZWxkLCBQVFJfVCwgYik7CisgICAgQVBQRU5EKHJ2LCBmaWVsZCwgSU5URUdFUl9ULCBjKTsK KworICAgIHJldHVybiBydjsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1 dG8taW5pdC11bmluaXQtOC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5p dC04LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42YzI5ODg3MGM2 NzkKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5p bml0LTguYwpAQCAtMCwwICsxLDMyIEBACisvKiBVbmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5p bmcgdGVzdHMuLi4KKyAgIEluc3BpcmVkIGJ5IHBhcnQgb2Ygb3B0YWJzLmM6ZXhwYW5kX2Jpbm9w LgorICAgTWF5IGJlIHRoZSBzYW1lIGFzIHVuaW5pdC0xLmMuICAqLworCisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFs LWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCisjaW5jbHVkZSA8bGltaXRzLmg+CisKK3ZvaWQK K2FkZF9iaWdudW1zIChpbnQgKm91dCwgaW50ICp4LCBpbnQgKnkpCit7CisgICAgaW50IHAsIHN1 bTsKKyAgICBpbnQgY2Fycnk7IC8qIHsgZGctYm9ndXMgImNhcnJ5IiAidW5pbml0aWFsaXplZCB2 YXJpYWJsZSB3YXJuaW5nIiB9ICovCisKKyAgICBwID0gMDsKKyAgICBmb3IgKDsgKng7IHgrKywg eSsrLCBvdXQrKywgcCsrKQorICAgIHsKKwlpZiAocCkKKwkgICAgc3VtID0gKnggKyAqeSArIGNh cnJ5OworCWVsc2UKKwkgICAgc3VtID0gKnggKyAqeTsKKworCWlmIChzdW0gPCAwKQorCXsKKwkg ICAgY2FycnkgPSAxOworCSAgICBzdW0gLT0gSU5UX01BWDsKKwl9CisJZWxzZQorCSAgICBjYXJy eSA9IDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1p bml0LXVuaW5pdC05LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTku YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjlkNjU0OTNiZGUyYQot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQt OS5jCkBAIC0wLDAgKzEsNDIgQEAKKy8qIFNwdXJpb3VzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUg d2FybmluZ3MuICBTbGlnaHQgdmFyaWFudCBvbiB0aGUKKyAgIGRvY3VtZW50ZWQgY2FzZSwgaW5z cGlyZWQgYnkgcmVnLXN0YWNrLmM6cmVjb3JkX2FzbV9yZWdfbGlmZS4gICovCisKKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1XdW5pbml0aWFsaXplZCAtZnRy aXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZl LXRhcmdldCBhbGxvY2EgfSAqLworCitzdHJ1Y3QgZm9vCit7CisgICAgaW50IHR5cGU7CisgICAg c3RydWN0IGZvbyAqY2FyOworICAgIHN0cnVjdCBmb28gKmNkcjsKKyAgICBjaGFyICpkYXRhOwor ICAgIGludCBkYXRhMjsKK307CisKK2V4dGVybiB2b2lkIHVzZShzdHJ1Y3QgZm9vICopOworCisj ZGVmaW5lIENMT0JCRVIgNgorI2RlZmluZSBQQVJBTExFTCAzCisKK3ZvaWQKK2Z1bmMoc3RydWN0 IGZvbyAqbGlzdCwgaW50IGNvdW50KQoreworICAgIGludCBuX2Nsb2JiZXJzID0gMDsKKyAgICBp bnQgaTsKKyAgICBzdHJ1Y3QgZm9vICoqY2xvYl9saXN0OyAgIC8qIHsgZGctYm9ndXMgImNsb2Jf bGlzdCIgInVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZyIgfSAqLworCisgICAgaWYobGlz dFswXS50eXBlID09IFBBUkFMTEVMKQorICAgIHsKKwljbG9iX2xpc3QgPSBfX2J1aWx0aW5fYWxs b2NhKGNvdW50ICogc2l6ZW9mKHN0cnVjdCBmb28gKikpOworCQorCWZvcihpID0gMTsgaSA8IGNv dW50OyBpKyspCisJeworCSAgICBpZihsaXN0W2ldLnR5cGUgPT0gQ0xPQkJFUikKKwkJY2xvYl9s aXN0W25fY2xvYmJlcnMrK10gPSAmbGlzdFtpXTsKKwl9CisgICAgfQorCisgICAgZm9yKGkgPSAw OyBpIDwgbl9jbG9iYmVyczsgaSsrKQorCXVzZShjbG9iX2xpc3RbaV0pOworfQpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1BLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LUEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjAxZmNmNTlmNDUwNAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtQS5jCkBAIC0wLDAgKzEsMTE3IEBACisvKiBJ bnNwaXJlZCBieSBwYXJ0IG9mIGphdmEvcGFyc2UueS4KKyAgIE1heSBiZSBhIHJlYWwgYnVnIGlu IENTRS4gKi8KKworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8y IC1XYWxsIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworc3RydWN0IHRyZWUK K3sKKyAgICBzdHJ1Y3QgdHJlZSAqY2FyLCAqY2RyLCAqd2ZsOworICAgIGludCBjb2RlOworICAg IHN0cnVjdCB7IHVuc2lnbmVkIGludCByZW5wOjE7CisgICAgICB1bnNpZ25lZCBpbnQgcnRucDox OworICAgICAgdW5zaWduZWQgaW50IHJwbnA6MTsgfSBmbGFnczsKK307Cit0eXBlZGVmIHN0cnVj dCB0cmVlICp0cmVlOworI2RlZmluZSBOVUxMX1RSRUUgKCh0cmVlKTApCisKKy8qIENvZGVzICov CitlbnVtCit7CisgICAgQ0FMTF9FWFBSLCBORVdfQVJSQVlfRVhQUiwgTkVXX0NMQVNTX0VYUFIs IENPTlZFUlRfRVhQUiwKKyAgICBBUlJBWV9SRUYsIENPTkRJVElPTkFMX0VYUFIsIFNUUklOR19D U1QsIEVYUFJfV0lUSF9GSUxFX0xPQ0FUSU9OCit9OworCisvKiBGbGFncyAqLworI2RlZmluZSBS RVNPTFZFX0VYUFJFU1NJT05fTkFNRV9QKHQpICgodCktPmZsYWdzLnJlbnApCisjZGVmaW5lIFJF U09MVkVfVFlQRV9OQU1FX1AodCkgKCh0KS0+ZmxhZ3MucnRucCkKKyNkZWZpbmUgUkVTT0xWRV9Q QUNLQUdFX05BTUVfUCh0KSAoKHQpLT5mbGFncy5ycG5wKQorCisvKiBNYWNyb3MgKi8KKyNkZWZp bmUgRVhQUl9XRkxfUVVBTElGSUNBVElPTih0KSAoKHQpLT53ZmwpCisjZGVmaW5lIFFVQUxfV0ZM KHQpICgodCktPndmbCkKKyNkZWZpbmUgRVhQUl9XRkxfTk9ERSh0KSAoKHQpLT53ZmwpCisjZGVm aW5lIFRSRUVfQ09ERSh0KSAoKHQpLT5jb2RlKQorI2RlZmluZSBUUkVFX09QRVJBTkQodCx4KSAo KHQpLT5jYXIpCisjZGVmaW5lIENMQVNTVFlQRV9TVVBFUih0KSAoKHQpLT5jYXIpCisjZGVmaW5l IElERU5USUZJRVJfTE9DQUxfVkFMVUUodCkgKCh0KS0+Y2FyKQorI2RlZmluZSBUUkVFX0NIQUlO KHQpICgodCktPmNkcikKKyNkZWZpbmUgUVVBTF9SRVNPTFVUSU9OKHQpICgodCktPmNkcikKKwor ZXh0ZXJuIHRyZWUgY3VycmVudF9jbGFzcywgdGhpc19pZGVudGlmaWVyX25vZGU7CitleHRlcm4g dHJlZSBzdXBlcl9pZGVudGlmaWVyX25vZGUsIGxlbmd0aF9pZGVudGlmaWVyX25vZGU7CisKK3Ry ZWUgcmVzb2x2ZV9hbmRfbGF5b3V0ICh0cmVlLCB0cmVlKTsKK3RyZWUgbG9va3VwX2ZpZWxkX3dy YXBwZXIgKHRyZWUsIHRyZWUpOworCit2b2lkCitxdWFsaWZ5X2FtYmlndW91c19uYW1lIChpZCkK KyAgICAgdHJlZSBpZDsKK3sKKyAgdHJlZSBxdWFsLCBxdWFsX3dmbCwgZGVjbDsKKyAgdHJlZSBu YW1lOwkgLyogeyBkZy1ib2d1cyAibmFtZSIgInVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2Fybmlu ZyIgfSAqLworICB0cmVlIHB0cl90eXBlOyAvKiB7IGRnLWJvZ3VzICJwdHJfdHlwZSIgInVuaW5p dGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZyIgfSAqLworICBpbnQgYWdhaW4sIG5ld19hcnJheV9m b3VuZCA9IDA7CisgIGludCBzdXBlcl9mb3VuZCA9IDAsIHRoaXNfZm91bmQgPSAwOworCisgIHF1 YWwgPSBFWFBSX1dGTF9RVUFMSUZJQ0FUSU9OIChpZCk7CisgIGRvIHsKKyAgICBxdWFsX3dmbCA9 IFFVQUxfV0ZMIChxdWFsKTsKKyAgICBzd2l0Y2ggKFRSRUVfQ09ERSAocXVhbF93ZmwpKQorICAg ICAgeworICAgICAgY2FzZSBDQUxMX0VYUFI6CisJcXVhbF93ZmwgPSBUUkVFX09QRVJBTkQgKHF1 YWxfd2ZsLCAwKTsKKwlpZiAoVFJFRV9DT0RFIChxdWFsX3dmbCkgIT0gRVhQUl9XSVRIX0ZJTEVf TE9DQVRJT04pCisJICB7CisJICAgIHF1YWwgPSBFWFBSX1dGTF9RVUFMSUZJQ0FUSU9OIChxdWFs X3dmbCk7CisJICAgIHF1YWxfd2ZsID0gUVVBTF9XRkwgKHF1YWwpOworCSAgfQorCWJyZWFrOwor ICAgICAgY2FzZSBORVdfQVJSQVlfRVhQUjoKKwlxdWFsID0gVFJFRV9DSEFJTiAocXVhbCk7CisJ bmV3X2FycmF5X2ZvdW5kID0gYWdhaW4gPSAxOworCWNvbnRpbnVlOworICAgICAgY2FzZSBORVdf Q0xBU1NfRVhQUjoKKyAgICAgIGNhc2UgQ09OVkVSVF9FWFBSOgorCXF1YWxfd2ZsID0gVFJFRV9P UEVSQU5EIChxdWFsX3dmbCwgMCk7CisJYnJlYWs7CisgICAgICBjYXNlIEFSUkFZX1JFRjoKKwl3 aGlsZSAoVFJFRV9DT0RFIChxdWFsX3dmbCkgPT0gQVJSQVlfUkVGKQorCSAgcXVhbF93ZmwgPSBU UkVFX09QRVJBTkQgKHF1YWxfd2ZsLCAwKTsKKwlicmVhazsKKyAgICAgIGRlZmF1bHQ6CisJYnJl YWs7CisgICAgICB9CisKKyAgICBuYW1lID0gRVhQUl9XRkxfTk9ERSAocXVhbF93ZmwpOworICAg IHB0cl90eXBlID0gY3VycmVudF9jbGFzczsKKyAgICBhZ2FpbiA9IDA7CisKKyAgfSB3aGlsZSAo YWdhaW4pOworCisgIC8qIElmIHlvdSBwdXQgc3RyYWlnaHRmb3J3YXJkIHVzZXMgb2YgbmFtZSBh bmQgcHRyX3R5cGUgaGVyZQorICAgICBpbnN0ZWFkIG9mIHRoZSBpZi1lbHNlIHNlcXVlbmNlIGJl bG93LCB0aGUgd2FybmluZ3MgZ28gYXdheS4KKyAgICAgVGhlcmVmb3JlIEkgc3VzcGVjdCBhIHJl YWwgYnVnLiAqLworICAKKyAgaWYgKCF0aGlzX2ZvdW5kICYmICFzdXBlcl9mb3VuZCAmJiAoZGVj bCA9IElERU5USUZJRVJfTE9DQUxfVkFMVUUgKG5hbWUpKSkKKyAgICB7CisgICAgICBSRVNPTFZF X0VYUFJFU1NJT05fTkFNRV9QIChxdWFsX3dmbCkgPSAxOworICAgICAgUVVBTF9SRVNPTFVUSU9O IChxdWFsKSA9IGRlY2w7CisgICAgfQorICBlbHNlIGlmICgoZGVjbCA9IGxvb2t1cF9maWVsZF93 cmFwcGVyIChwdHJfdHlwZSwgbmFtZSkpCisJICAgfHwgKG5ld19hcnJheV9mb3VuZCAmJiBuYW1l ID09IGxlbmd0aF9pZGVudGlmaWVyX25vZGUpKQorICAgIHsKKyAgICAgIFJFU09MVkVfRVhQUkVT U0lPTl9OQU1FX1AgKHF1YWxfd2ZsKSA9IDE7CisgICAgICBRVUFMX1JFU09MVVRJT04gKHF1YWwp ID0gKG5ld19hcnJheV9mb3VuZCA/IE5VTExfVFJFRSA6IGRlY2wpOworICAgIH0KKyAgZWxzZSBp ZiAoKGRlY2wgPSByZXNvbHZlX2FuZF9sYXlvdXQgKG5hbWUsIE5VTExfVFJFRSkpKQorICAgIHsK KyAgICAgIFJFU09MVkVfVFlQRV9OQU1FX1AgKHF1YWxfd2ZsKSA9IDE7CisgICAgICBRVUFMX1JF U09MVVRJT04gKHF1YWwpID0gZGVjbDsKKyAgICB9CisgIGVsc2UgaWYgKFRSRUVfQ09ERSAoUVVB TF9XRkwgKHF1YWwpKSA9PSBDQUxMX0VYUFIKKwkgICB8fCBUUkVFX0NPREUgKFFVQUxfV0ZMIChx dWFsKSkgPT0gQVJSQVlfUkVGKQorICAgIFJFU09MVkVfRVhQUkVTU0lPTl9OQU1FX1AgKHF1YWxf d2ZsKSA9IDE7CisgIGVsc2UgCisgICAgUkVTT0xWRV9QQUNLQUdFX05BTUVfUCAocXVhbF93Zmwp ID0gMTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmlu aXQtQi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1CLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wYjI4MzcxMjcyMDkKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LUIuYwpAQCAt MCwwICsxLDE1IEBACisvKiBPcmlnaW46IFBSIGMvMTc5IGZyb20gR3JheSBXYXRzb24gPGdyYXlA MjU2LmNvbT4sIGFkYXB0ZWQgYXMgYSB0ZXN0Y2FzZQorICAgYnkgSm9zZXBoIE15ZXJzIDxqc20y OEBjYW0uYWMudWs+LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlv bnMgIi1PMiAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAq LworZXh0ZXJuIHZvaWQgZm9vIChpbnQgKik7CitleHRlcm4gdm9pZCBiYXIgKGludCk7CisKK3Zv aWQKK2JheiAodm9pZCkKK3sKKyAgaW50IGk7CisgIGlmIChpKSAvKiB7IGRnLXdhcm5pbmcgImlz IHVzZWQgdW5pbml0aWFsaXplZCIgInVuaW5pdCBpIHdhcm5pbmciIH0gKi8KKyAgICBiYXIgKGkp OworICBmb28gKCZpKTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8t aW5pdC11bmluaXQtQy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1D LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hNGFhNjI5YmY5MzAK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0 LUMuYwpAQCAtMCwwICsxLDIxIEBACisvKiBTcHVyaW91cyB1bmluaXRpYWxpemVkIHZhcmlhYmxl IHdhcm5pbmcsIGluc3BpcmVkIGJ5IGxpYmdjYzIuYy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLworLyogeyBkZy1vcHRpb25zICItTyAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8t dmFyLWluaXQ9emVybyIgfSAqLworCisvKiBOb3QgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IFRJbW9k ZSBpbnRlZ2Vycy4gICovCisjaWYgZGVmaW5lZChfX0xQNjRfXykgJiYgIWRlZmluZWQoX19ocHBh X18pCit0eXBlZGVmIGludCBUSXR5cGUgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKFRJKSkpOworI2Vs c2UKK3R5cGVkZWYgbG9uZyBUSXR5cGU7CisjZW5kaWYKKworCitUSXR5cGUKK19fc3VidmRpMyAo VEl0eXBlIGEsIFRJdHlwZSBiKQoreworICBUSXR5cGUgdzsKKyAgCisgIHcgPSBhIC0gYjsKKyAg CisgIHJldHVybiB3OworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1p bml0LXVuaW5pdC1ILmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LUgu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjcxZTJlMmQ2OGQ3Zgot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQt SC5jCkBAIC0wLDAgKzEsMzMgQEAKKy8qIFBSIDE0MjA0ICovCisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLworLyogeyBkZy1vcHRpb25zICItTyAtV2FsbCAtV2Vycm9yIC1mdHJpdmlhbC1hdXRvLXZh ci1pbml0PXplcm8iIH0gKi8KKworI2lmIGRlZmluZWQgX19hbHBoYV9fCisjIGRlZmluZSBBU00g X19hc21fXygiJDMwIikKKyNlbGlmIGRlZmluZWQgX19pMzg2X18KKyMgZGVmaW5lIEFTTSBfX2Fz bV9fKCJlc3AiKQorI2VsaWYgZGVmaW5lZCAoX19wb3dlcnBjX18pIHx8IGRlZmluZWQgKF9fUFBD X18pIHx8IGRlZmluZWQgKF9fcHBjX18pIHx8IGRlZmluZWQgKF9QT1dFUikKKyMgZGVmaW5lIEFT TSBfX2FzbV9fKCJyMSIpCisjZWxpZiBkZWZpbmVkIF9fczM5MF9fCisjIGRlZmluZSBBU00gX19h c21fXygicjE1IikKKyNlbGlmIGRlZmluZWQgX19taXBzCisjIGRlZmluZSBBU00gX19hc21fXygi JHNwIikKKyNlbGlmIGRlZmluZWQgX19zcGFyY19fCisjIGRlZmluZSBBU00gX19hc21fXygic3Ai KQorI2VsaWYgZGVmaW5lZCBfX2lhNjRfXworIyBkZWZpbmUgQVNNIF9fYXNtX18oInIxMiIpCisj ZWxpZiBkZWZpbmVkIF9faHBwYV9fCisjIGRlZmluZSBBU00gX19hc21fXygiJXIzMCIpCisjZWxp ZiBkZWZpbmVkIF9feHRlbnNhX18KKyMgZGVmaW5lIEFTTSBfX2FzbV9fKCJzcCIpCisjZWxzZQor LyogVGhlIHJlZ2lzdGVyIG5hbWUgc2hvdWxkIGJlIHRhcmdldC1kZXBlbmRlbnQgc28gZm9yIG90 aGVyIHRhcmdldHMsCisgICB3ZSBqdXN0IHNpbGVuY2UgdGhlIHRlc3QuICAqLworIyBkZWZpbmUg QVNNID0gMAorI2VuZGlmCisKK3ZvaWQgKmxvYWRfUENCICh2b2lkKQoreworICByZWdpc3RlciB2 b2lkICpzcCBBU007CisgIHJldHVybiBzcDsJCQkvKiB7IGRnLWJvZ3VzICJ1bmluaXRpYWxpemVk IiB9ICovCit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5p bml0LUkuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtSS5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDk2ODBmZTk3OTBkCi0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1JLmMKQEAg LTAsMCArMSw4IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICIt TzIgLVd1bmluaXRpYWxpemVkIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKwor aW50IHN5c19tc2djdGwgKHZvaWQpCit7CisgIHN0cnVjdCB7IGludCBtb2RlOyB9IHNldGJ1ZjsK KyAgcmV0dXJuIHNldGJ1Zi5tb2RlOyAgLyogeyBkZy13YXJuaW5nICInc2V0YnVmXC5tb2RlJyBp cyB1c2VkIiB9ICovCit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9hdXRvLWluaXQtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0 by1pbml0LTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBmYTQ3 MDg4MGJmNQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L2F1dG8taW5pdC0xLmMKQEAgLTAsMCArMSwzMiBAQAorLyogVmVyaWZ5IHplcm8gaW5pdGlh bGl6YXRpb24gZm9yIGludGVnZXIgYW5kIHBvaW50ZXIgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVz LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlh bC1hdXRvLXZhci1pbml0PXplcm8gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKworI2lmbmRlZiBf X2NwbHVzcGx1cworIyBkZWZpbmUgYm9vbCBfQm9vbAorI2VuZGlmCisKK2VudW0gRSB7CisgIE4x ID0gMCwKKyAgTjIsCisgIE4zCit9OworCitleHRlcm4gdm9pZCBiYXIgKGNoYXIsIHNob3J0LCBp bnQsIGVudW0gRSwgbG9uZywgbG9uZyBsb25nLCBpbnQgKiwgYm9vbCk7CisKK3ZvaWQgZm9vKCkK K3sKKyAgY2hhciB0ZW1wMTsKKyAgc2hvcnQgdGVtcDI7CisgIGludCB0ZW1wMzsKKyAgZW51bSBF IHRlbXA0OworICBsb25nIHRlbXA1OworICBsb25nIGxvbmcgdGVtcDY7CisgIGludCAqdGVtcDc7 CisgIGJvb2wgdGVtcDg7CisKKyAgYmFyICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgdGVt cDUsIHRlbXA2LCB0ZW1wNywgdGVtcDgpOworICByZXR1cm47Cit9CisKKy8qIHsgZGctZmluYWwg eyBzY2FuLXJ0bC1kdW1wLXRpbWVzICJjb25zdF9pbnQgMCIgMTEgImV4cGFuZCIgfSB9ICovCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtMi5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTIuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJjNTRlNmQ2MDM4MgotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC0yLmMK QEAgLTAsMCArMSwzNSBAQAorLyogVmVyaWZ5IHBhdHRlcm4gaW5pdGlhbGl6YXRpb24gZm9yIGlu dGVnZXIgYW5kIHBvaW50ZXIgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1mdHJpdmlhbC1hdXRvLXZhci1p bml0PXBhdHRlcm4gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKworI2lmbmRlZiBfX2NwbHVzcGx1 cworIyBkZWZpbmUgYm9vbCBfQm9vbAorI2VuZGlmCisKK2VudW0gRSB7CisgIE4xID0gMCwKKyAg TjIsCisgIE4zCit9OworCitleHRlcm4gdm9pZCBiYXIgKGNoYXIsIHNob3J0LCBpbnQsIGVudW0g RSwgbG9uZywgbG9uZyBsb25nLCBpbnQgKiwgYm9vbCk7CisKK3ZvaWQgZm9vKCkKK3sKKyAgY2hh ciB0ZW1wMTsKKyAgc2hvcnQgdGVtcDI7CisgIGludCB0ZW1wMzsKKyAgZW51bSBFIHRlbXA0Owor ICBsb25nIHRlbXA1OworICBsb25nIGxvbmcgdGVtcDY7CisgIGludCAqdGVtcDc7CisgIGJvb2wg dGVtcDg7CisKKyAgYmFyICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgdGVtcDUsIHRlbXA2 LCB0ZW1wNywgdGVtcDgpOworICByZXR1cm47Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0 bC1kdW1wLXRpbWVzICIweGZlXFxcXSIgMSAiZXhwYW5kIiB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLXJ0bC1kdW1wLXRpbWVzICIweGZmZmZmZmZmZmZmZmZlZmUiIDEgImV4cGFuZCIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiMHhmZmZmZmZmZmZlZmVm ZWZlIiAyICJleHBhbmQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGlt ZXMgIjB4ZmVmZWZlZmVmZWZlZmVmZSIgMiAiZXhwYW5kIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC0zLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uMWFkYzE0N2EzMDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTMuYwpAQCAtMCwwICsxLDE3 IEBACisvKiBWZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3IgZmxvYXRpbmcgcG9pbnQgdHlw ZSBhdXRvbWF0aWMgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8gLWZkdW1wLXJ0bC1leHBh bmQiIH0gKi8KKworbG9uZyBkb3VibGUgcmVzdWx0OworCitsb25nIGRvdWJsZSBmb28oKQorewor ICBmbG9hdCB0ZW1wMTsKKyAgZG91YmxlIHRlbXAyOworICBsb25nIGRvdWJsZSB0ZW1wMzsKKyAg CisgIHJlc3VsdCA9IHRlbXAxICsgdGVtcDIgKyB0ZW1wMzsKKyAgcmV0dXJuIHJlc3VsdDsKK30K KworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgImNvbnN0X2ludCAwIiA3ICJl eHBhbmQiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvYXV0by1pbml0LTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8t aW5pdC00LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45ZWU4MzM1 MDY1ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC9hdXRvLWluaXQtNC5jCkBAIC0wLDAgKzEsMTkgQEAKKy8qIFZlcmlmeSBwYXR0ZXJuIGluaXRp YWxpemF0aW9uIGZvciBmbG9hdGluZyBwb2ludCB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMuICAq LworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLWZ0cml2aWFs LWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtcnRsLWV4cGFuZCIgfSAqLworCitsb25nIGRv dWJsZSByZXN1bHQ7CisKK2xvbmcgZG91YmxlIGZvbygpCit7CisgIGZsb2F0IHRlbXAxOworICBk b3VibGUgdGVtcDI7CisgIGxvbmcgZG91YmxlIHRlbXAzOworICAKKyAgcmVzdWx0ID0gdGVtcDEg KyB0ZW1wMiArIHRlbXAzOworICByZXR1cm4gcmVzdWx0OworfQorCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1ydGwtZHVtcCAiZmVmZWZlZmUiICJleHBhbmQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tcnRsLWR1bXAgImZlZmVmZWZlZmVmZWZlZmUiICJleHBhbmQiIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tcnRsLWR1bXAgImZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZl IiAiZXhwYW5kIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h YXJjaDY0L2F1dG8taW5pdC01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9h dXRvLWluaXQtNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTg3 NGQ5NjFkNWRlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvYXV0by1pbml0LTUuYwpAQCAtMCwwICsxLDE5IEBACisvKiBWZXJpZnkgemVybyBpbml0 aWFsaXphdGlvbiBmb3IgY29tcGxleCB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMuICAqLworLyog eyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFy LWluaXQ9emVybyAtZmR1bXAtcnRsLWV4cGFuZCIgfSAqLworCisKK19Db21wbGV4IGxvbmcgZG91 YmxlIHJlc3VsdDsKKworX0NvbXBsZXggbG9uZyBkb3VibGUgZm9vKCkKK3sKKyAgX0NvbXBsZXgg ZmxvYXQgdGVtcDE7CisgIF9Db21wbGV4IGRvdWJsZSB0ZW1wMjsKKyAgX0NvbXBsZXggbG9uZyBk b3VibGUgdGVtcDM7CisKKyAgcmVzdWx0ID0gdGVtcDEgKyB0ZW1wMiArIHRlbXAzOworICByZXR1 cm4gcmVzdWx0OworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiY29u c3RfaW50IDAiIDEyICJleHBhbmQiIH0gfSAqLworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FhcmNoNjQvYXV0by1pbml0LTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjI3YzE2YjMzNjc4OQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC02LmMKQEAgLTAsMCArMSwxOCBAQAorLyogVmVy aWZ5IHBhdHRlcm4gaW5pdGlhbGl6YXRpb24gZm9yIGNvbXBsZXggdHlwZSBhdXRvbWF0aWMgdmFy aWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1m dHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKwor CitfQ29tcGxleCBsb25nIGRvdWJsZSByZXN1bHQ7CisKK19Db21wbGV4IGxvbmcgZG91YmxlIGZv bygpCit7CisgIF9Db21wbGV4IGZsb2F0IHRlbXAxOworICBfQ29tcGxleCBkb3VibGUgdGVtcDI7 CisgIF9Db21wbGV4IGxvbmcgZG91YmxlIHRlbXAzOworCisgIHJlc3VsdCA9IHRlbXAxICsgdGVt cDIgKyB0ZW1wMzsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4t cnRsLWR1bXAtdGltZXMgIjB4ZmZmZmZmZmZmZmZmZmZmZVxcXF1cXFwpIHJlcGVhdGVkIHgxNiIg MyAiZXhwYW5kIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h YXJjaDY0L2F1dG8taW5pdC03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9h dXRvLWluaXQtNy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWMy N2ZiZTkyZjRhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvYXV0by1pbml0LTcuYwpAQCAtMCwwICsxLDMyIEBACisvKiBWZXJpZnkgemVybyBpbml0 aWFsaXphdGlvbiBmb3IgYXJyYXksIHVuaW9uLCBhbmQgc3RydWN0dXJlIHR5cGUgYXV0b21hdGlj IHZhcmlhYmxlcy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25z ICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIC1mZHVtcC1ydGwtZXhwYW5kIiB9ICovCisK K3N0cnVjdCBTCit7CisgIGludCBmMTsKKyAgZmxvYXQgZjI7CisgIGNoYXIgZjNbMjBdOworfTsK KwordW5pb24gVQoreworICBjaGFyIHUxWzVdOworICBpbnQgdTI7CisgIGZsb2F0IHUzOyAKK307 CisKK2RvdWJsZSByZXN1bHQ7CisKK2RvdWJsZSBmb28oKQoreworICBpbnQgdGVtcDFbM107Cisg IGRvdWJsZSB0ZW1wMlszXTsKKyAgc3RydWN0IFMgdGVtcDM7CisgIHVuaW9uIFUgdGVtcDQ7Cisg IAorICByZXN1bHQgPSB0ZW1wMVsyXSArIHRlbXAyWzFdICsgdGVtcDMuZjIgKyB0ZW1wNC51MzsK KyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGlt ZXMgImNvbnN0X2ludCAwIiA4ICJleHBhbmQiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTguYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC04LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi4zOTQzZjVhNGQ2YjIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtOC5jCkBAIC0wLDAgKzEsMzIgQEAKKy8q IFZlcmlmeSBwYXR0ZXJuIGluaXRpYWxpemF0aW9uIGZvciBhcnJheSwgdW5pb24sIGFuZCBzdHJ1 Y3R1cmUgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZk dW1wLXJ0bC1leHBhbmQiIH0gKi8KKworc3RydWN0IFMKK3sKKyAgaW50IGYxOworICBmbG9hdCBm MjsKKyAgY2hhciBmM1syMF07Cit9OworCit1bmlvbiBVCit7CisgIGNoYXIgdTFbNV07CisgIGlu dCB1MjsKKyAgZmxvYXQgdTM7IAorfTsKKworZG91YmxlIHJlc3VsdDsKKworZG91YmxlIGZvbygp Cit7CisgIGludCB0ZW1wMVszXTsKKyAgZG91YmxlIHRlbXAyWzNdOworICBzdHJ1Y3QgUyB0ZW1w MzsKKyAgdW5pb24gVSB0ZW1wNDsKKyAgCisgIHJlc3VsdCA9IHRlbXAxWzJdICsgdGVtcDJbMV0g KyB0ZW1wMy5mMiArIHRlbXA0LnUzOworICByZXR1cm4gcmVzdWx0OworfQorCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiMHhmZmZmZmZmZmZmZmZmZmZlXFxcXVxcXCkgcmVw ZWF0ZWQgeDE2IiA0ICJleHBhbmQiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDNhODhjNzI0NTQ1Ci0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMS5jCkBA IC0wLDAgKzEsMTcgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZvciBzdHJ1Y3R1 cmUgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzIHdpdGgKKyAgIHBhZGRpbmcuICAqLworLyogeyBk Zy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWlu aXQ9emVybyIgfSAqLworCitzdHJ1Y3QgdGVzdF9hbGlnbmVkIHsKKyAgICAgICAgaW50IGludGVy bmFsMTsKKyAgICAgICAgbG9uZyBsb25nIGludGVybmFsMjsKK30gX19hdHRyaWJ1dGVfXyAoKGFs aWduZWQoNjQpKSk7CisKK2ludCBmb28gKCkKK3sKKyAgc3RydWN0IHRlc3RfYWxpZ25lZCB2YXI7 CisgIHJldHVybiB2YXIuaW50ZXJuYWwxOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMgInN0cFx0cTAsIHEwLCIgMiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTEwLmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy0xMC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjBmM2FjYjJmNTI4Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRp bmctMTAuYwpAQCAtMCwwICsxLDIyIEBACisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlv biBmb3IgYXJyYXkgdHlwZSB3aXRoIHN0cnVjdHVyZSBlbGVtZW50IHdpdGgKKyAgIHBhZGRpbmcu ICAqLyAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlh bC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKworc3RydWN0 IHRlc3RfdHJhaWxpbmdfaG9sZSB7CisgICAgICAgIGludCBvbmU7CisgICAgICAgIGludCB0d287 CisgICAgICAgIGludCB0aHJlZTsKKyAgICAgICAgY2hhciBmb3VyOworICAgICAgICAvKiAic2l6 ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSIgYnl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8KK307CisK KworaW50IGZvbyAoKQoreworICBzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHZhclsxMF07IAor ICByZXR1cm4gdmFyWzJdLmZvdXI7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1w LXRpbWVzICIweGZmZmZmZmZmZmZmZmZmZmVcXFxdXFxcKSByZXBlYXRlZCB4MTYiIDEgImV4cGFu ZCIgfSB9ICovCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L2F1dG8taW5pdC1wYWRkaW5nLTExLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC9hdXRvLWluaXQtcGFkZGluZy0xMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMDJmN2VkYzUxMDA4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMTEuYwpAQCAtMCwwICsxLDI3IEBA CisvKiBWZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3IgdW5pb24gdHlwZSB3aXRoIHN0cnVj dHVyZSBmaWVsZCB3aXRoCisgICBwYWRkaW5nLiAgKi8gCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAq LworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisK K3N0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgeworICAgICAgICBpbnQgb25lOworICAgICAgICBp bnQgdHdvOworICAgICAgICBpbnQgdGhyZWU7CisgICAgICAgIGNoYXIgZm91cjsKKyAgICAgICAg LyogInNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEiIGJ5dGUgcGFkZGluZyBob2xlIGhlcmUuICov Cit9OworCit1bmlvbiB0ZXN0X3VuaW9uX3BhZGRpbmcgeworICBzdHJ1Y3QgdGVzdF90cmFpbGlu Z19ob2xlIHUxOworICBsb25nIGxvbmcgdTI7Cit9OworCisKK2ludCBmb28gKCkKK3sKKyAgdW5p b24gdGVzdF91bmlvbl9wYWRkaW5nIHZhcjsKKyAgcmV0dXJuIHZhci51MS5mb3VyOworfQorCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInN0cFx0eHpyLCB4enIsIiB9IH0gKi8KKwpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBh ZGRpbmctMTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1w YWRkaW5nLTEyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41NTU5 NzJmMTcyOGYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9hdXRvLWluaXQtcGFkZGluZy0xMi5jCkBAIC0wLDAgKzEsMjcgQEAKKy8qIFZlcmlmeSBw YXR0ZXJuIGluaXRpYWxpemF0aW9uIGZvciB1bmlvbiB0eXBlIHdpdGggc3RydWN0dXJlIGZpZWxk IHdpdGgKKyAgIHBhZGRpbmcuICAqLyAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXJ0bC1leHBh bmQiIH0gKi8KKworc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB7CisgICAgICAgIGludCBvbmU7 CisgICAgICAgIGludCB0d287CisgICAgICAgIGludCB0aHJlZTsKKyAgICAgICAgY2hhciBmb3Vy OworICAgICAgICAvKiAic2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSIgYnl0ZSBwYWRkaW5nIGhv bGUgaGVyZS4gKi8KK307CisKK3VuaW9uIHRlc3RfdW5pb25fcGFkZGluZyB7CisgIHN0cnVjdCB0 ZXN0X3RyYWlsaW5nX2hvbGUgdTE7CisgIGxvbmcgbG9uZyB1MjsKK307CisKKworaW50IGZvbyAo KQoreworICB1bmlvbiB0ZXN0X3VuaW9uX3BhZGRpbmcgdmFyOworICByZXR1cm4gdmFyLnUxLmZv dXI7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICIweGZmZmZmZmZm ZmZmZmZmZmVcXFxdXFxcKSByZXBlYXRlZCB4MTYiIDEgImV4cGFuZCIgfSB9ICovCisKZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5n LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5n LTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFjZWNlYjg3ZmJl MQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1 dG8taW5pdC1wYWRkaW5nLTIuYwpAQCAtMCwwICsxLDE4IEBACisvKiBWZXJpZnkgcGF0dGVybiBp bml0aWFsaXphdGlvbiBmb3Igc3RydWN0dXJlIHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcyB3aXRo CisgICBwYWRkaW5nLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlv bnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4iIH0gKi8KKworc3RydWN0IHRlc3Rf YWxpZ25lZCB7CisgICAgICAgIGludCBpbnRlcm5hbDE7CisgICAgICAgIGxvbmcgbG9uZyBpbnRl cm5hbDI7Cit9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkKDY0KSkpOworCitpbnQgZm9vICgpCit7 CisgIHN0cnVjdCB0ZXN0X2FsaWduZWQgdmFyOworICByZXR1cm4gdmFyLmludGVybmFsMTsKK30K KworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJzdHBcdHEwLCBxMCwiIDIg fSB9ICovCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1 dG8taW5pdC1wYWRkaW5nLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1 dG8taW5pdC1wYWRkaW5nLTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjA4NWMzODYyOTIxMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTMuYwpAQCAtMCwwICsxLDI3IEBACisvKiBW ZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3IgbmVzdGVkIHN0cnVjdHVyZSB0eXBlIGF1dG9t YXRpYyB2YXJpYWJsZXMgd2l0aAorICAgcGFkZGluZy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICov CisKK3N0cnVjdCB0ZXN0X2FsaWduZWQgeworICAgICAgICB1bnNpZ25lZCBpbnRlcm5hbDE7Cisg ICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnRlcm5hbDI7Cit9IF9fYXR0cmlidXRlX18gKChh bGlnbmVkKDY0KSkpOworCitzdHJ1Y3QgdGVzdF9iaWdfaG9sZSB7CisgICAgICAgIGNoYXIgb25l OworICAgICAgICBjaGFyIHR3bzsKKyAgICAgICAgY2hhciB0aHJlZTsKKyAgICAgICAgLyogNjEg Ynl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8KKyAgICAgICAgc3RydWN0IHRlc3RfYWxpZ25lZCBm b3VyOworfSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCg2NCkpKTsKKworCitpbnQgZm9vICgpCit7 CisgIHN0cnVjdCB0ZXN0X2JpZ19ob2xlIHZhcjsKKyAgcmV0dXJuIHZhci5mb3VyLmludGVybmFs MTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJzdHBcdHEwLCBx MCwiIDQgfSB9ICovCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L2F1dG8taW5pdC1wYWRkaW5nLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L2F1dG8taW5pdC1wYWRkaW5nLTQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjdhNmRkYmMyMGVlMQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTQuYwpAQCAtMCwwICsxLDI3IEBA CisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgbmVzdGVkIHN0cnVjdHVyZSB0 eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMgd2l0aAorICAgcGFkZGluZy4gICovCisvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD1w YXR0ZXJuIiB9ICovCisKK3N0cnVjdCB0ZXN0X2FsaWduZWQgeworICAgICAgICB1bnNpZ25lZCBp bnRlcm5hbDE7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnRlcm5hbDI7Cit9IF9fYXR0 cmlidXRlX18gKChhbGlnbmVkKDY0KSkpOworCitzdHJ1Y3QgdGVzdF9iaWdfaG9sZSB7CisgICAg ICAgIGNoYXIgb25lOworICAgICAgICBjaGFyIHR3bzsKKyAgICAgICAgY2hhciB0aHJlZTsKKyAg ICAgICAgLyogNjEgYnl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8KKyAgICAgICAgc3RydWN0IHRl c3RfYWxpZ25lZCBmb3VyOworfSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCg2NCkpKTsKKworCitp bnQgZm9vICgpCit7CisgIHN0cnVjdCB0ZXN0X2JpZ19ob2xlIHZhcjsKKyAgcmV0dXJuIHZhci5m b3VyLmludGVybmFsMTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJzdHBcdHEwLCBxMCwiIDUgfSB9ICovCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjNjNDVhNmM2Mjg4ZAotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTUuYwpAQCAt MCwwICsxLDIyIEBACisvKiBWZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3Igc3RydWN0dXJl IHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcyB3aXRoCisgICB0YWlsIHBhZGRpbmcuICAqLworLyog eyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFy LWluaXQ9emVybyIgfSAqLworCitzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHsKKyAgICAgICAg Y2hhciAqb25lOworICAgICAgICBjaGFyICp0d287CisgICAgICAgIGNoYXIgKnRocmVlOworICAg ICAgICBjaGFyIGZvdXI7CisgICAgICAgIC8qICJzaXplb2YodW5zaWduZWQgbG9uZykgLSAxIiBi eXRlIHBhZGRpbmcgaG9sZSBoZXJlLiAqLworfTsKKworaW50IGZvbyAoKQoreworICBzdHJ1Y3Qg dGVzdF90cmFpbGluZ19ob2xlIHZhcjsKKyAgcmV0dXJuIHZhci5mb3VyOworfQorCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInN0cFx0eHpyLCB4enIsIiAyIH0gfSAqLwor CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5p dC1wYWRkaW5nLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5p dC1wYWRkaW5nLTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJm ZWYyM2Q1MmExMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h YXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTYuYwpAQCAtMCwwICsxLDIwIEBACisvKiBWZXJpZnkg cGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3Igc3RydWN0dXJlIHR5cGUgYXV0b21hdGljIHZhcmlh YmxlcyB3aXRoCisgICB0YWlsIHBhZGRpbmcuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAt cnRsLWV4cGFuZCIgfSAqLworCitzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHsKKyAgICAgICAg Y2hhciAqb25lOworICAgICAgICBjaGFyICp0d287CisgICAgICAgIGNoYXIgKnRocmVlOworICAg ICAgICBjaGFyIGZvdXI7CisgICAgICAgIC8qICJzaXplb2YodW5zaWduZWQgbG9uZykgLSAxIiBi eXRlIHBhZGRpbmcgaG9sZSBoZXJlLiAqLworfTsKKworaW50IGZvbyAoKQoreworICBzdHJ1Y3Qg dGVzdF90cmFpbGluZ19ob2xlIHZhcjsKKyAgcmV0dXJuIHZhci5mb3VyOworfQorCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiMHhmZmZmZmZmZmZmZmZmZmZlXFxcXVxcXCkg cmVwZWF0ZWQgeDE2IiAxICJleHBhbmQiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctNy5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctNy5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2I5NmMzYTFlNGIyCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctNy5j CkBAIC0wLDAgKzEsMjAgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZvciBzdHJ1 Y3R1cmUgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzIHdpdGgKKyAgIHBhZGRpbmcgYW5kIGhhcyBl eHBsaWNpdCBpbml0aWFsaXphdGlvbi4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyog eyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK3N0cnVj dCB0ZXN0X3RyYWlsaW5nX2hvbGUgeworICAgICAgICBpbnQgb25lOworICAgICAgICBpbnQgdHdv OworICAgICAgICBpbnQgdGhyZWU7CisgICAgICAgIGNoYXIgZm91cjsKKyAgICAgICAgLyogInNp emVvZih1bnNpZ25lZCBsb25nKSAtIDEiIGJ5dGUgcGFkZGluZyBob2xlIGhlcmUuICovCit9Owor CitpbnQgZm9vICgpCit7CisgIHN0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgdmFyID0gey5vbmUg PSAxLC50d28gPSAyLCAuZm91ciA9ICdjJ307CisgIHJldHVybiB2YXIuZm91cjsKK30KKworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJzdHBcdHh6ciwgeHpyLCIgfSB9ICovCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGlu Zy04LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGlu Zy04LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jZTdjN2NkMzFj MWYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9h dXRvLWluaXQtcGFkZGluZy04LmMKQEAgLTAsMCArMSwyMiBAQAorLyogVmVyaWZ5IHBhdHRlcm4g aW5pdGlhbGl6YXRpb24gZm9yIHN0cnVjdHVyZSB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMgd2l0 aAorICAgcGFkZGluZyBhbmQgaGFzIGV4cGxpY2l0IGluaXRpYWxpemF0aW9uLiAgKi8KKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1p bml0PXBhdHRlcm4iIH0gKi8KKworc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB7CisgICAgICAg IGludCBvbmU7CisgICAgICAgIGludCB0d287CisgICAgICAgIGludCB0aHJlZTsKKyAgICAgICAg Y2hhciBmb3VyOworICAgICAgICAvKiAic2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSIgYnl0ZSBw YWRkaW5nIGhvbGUgaGVyZS4gKi8KK307CisKK2ludCBmb28gKCkKK3sKKyAgc3RydWN0IHRlc3Rf dHJhaWxpbmdfaG9sZSB2YXIgPSB7Lm9uZSA9IDEsLnR3byA9IDIsIC5mb3VyID0gJ2MnfTsKKyAg cmV0dXJuIHZhci5mb3VyOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInN0 cFx0eHpyLCB4enIsIiB9IH0gKi8KKworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy05LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy05LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi5jODFlNWZmMjhiMGIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy05LmMKQEAgLTAs MCArMSwyMSBAQAorLyogVmVyaWZ5IHplcm8gaW5pdGlhbGl6YXRpb24gZm9yIGFycmF5IHR5cGUg d2l0aCBzdHJ1Y3R1cmUgZWxlbWVudCB3aXRoCisgICBwYWRkaW5nLiAgKi8gCisvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16 ZXJvIiB9ICovCisKK3N0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgeworICAgICAgICBpbnQgb25l OworICAgICAgICBpbnQgdHdvOworICAgICAgICBpbnQgdGhyZWU7CisgICAgICAgIGNoYXIgZm91 cjsKKyAgICAgICAgLyogInNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEiIGJ5dGUgcGFkZGluZyBo b2xlIGhlcmUuICovCit9OworCisKK2ludCBmb28gKCkKK3sKKyAgc3RydWN0IHRlc3RfdHJhaWxp bmdfaG9sZSB2YXJbMTBdOyAKKyAgcmV0dXJuIHZhclsyXS5mb3VyOworfQorCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInN0cFx0cTAsIHEwLCIgNSB9IH0gKi8KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC0xLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtMS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjc2OTBkZjI0MDYwCi0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTEuYwpAQCAtMCwwICsxLDMy IEBACisvKiBWZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3IgaW50ZWdlciBhbmQgcG9pbnRl ciB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyAtZmR1bXAtcnRs LWV4cGFuZCIgfSAqLworCisjaWZuZGVmIF9fY3BsdXNwbHVzCisjIGRlZmluZSBib29sIF9Cb29s CisjZW5kaWYKKworZW51bSBFIHsKKyAgTjEgPSAwLAorICBOMiwKKyAgTjMKK307CisKK2V4dGVy biB2b2lkIGJhciAoY2hhciwgc2hvcnQsIGludCwgZW51bSBFLCBsb25nLCBsb25nIGxvbmcsIGlu dCAqLCBib29sKTsKKwordm9pZCBmb28oKQoreworICBjaGFyIHRlbXAxOworICBzaG9ydCB0ZW1w MjsKKyAgaW50IHRlbXAzOworICBlbnVtIEUgdGVtcDQ7CisgIGxvbmcgdGVtcDU7CisgIGxvbmcg bG9uZyB0ZW1wNjsKKyAgaW50ICp0ZW1wNzsKKyAgYm9vbCB0ZW1wODsKKworICBiYXIgKHRlbXAx LCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCB0ZW1wNSwgdGVtcDYsIHRlbXA3LCB0ZW1wOCk7CisgIHJl dHVybjsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgImNvbnN0X2lu dCAwIiAxMCAiZXhwYW5kIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2F1dG8taW5pdC0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9h dXRvLWluaXQtMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTc2 ZmMyNTY1MTY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvYXV0by1pbml0LTIuYwpAQCAtMCwwICsxLDM2IEBACisvKiBWZXJpZnkgcGF0dGVybiBpbml0 aWFsaXphdGlvbiBmb3IgaW50ZWdlciBhbmQgcG9pbnRlciB0eXBlIGF1dG9tYXRpYyB2YXJpYWJs ZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2 aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtcnRsLWV4cGFuZCIgfSAqLworCisjaWZu ZGVmIF9fY3BsdXNwbHVzCisjIGRlZmluZSBib29sIF9Cb29sCisjZW5kaWYKKworZW51bSBFIHsK KyAgTjEgPSAwLAorICBOMiwKKyAgTjMKK307CisKK2V4dGVybiB2b2lkIGJhciAoY2hhciwgc2hv cnQsIGludCwgZW51bSBFLCBsb25nLCBsb25nIGxvbmcsIGludCAqLCBib29sKTsKKwordm9pZCBm b28oKQoreworICBjaGFyIHRlbXAxOworICBzaG9ydCB0ZW1wMjsKKyAgaW50IHRlbXAzOworICBl bnVtIEUgdGVtcDQ7CisgIGxvbmcgdGVtcDU7CisgIGxvbmcgbG9uZyB0ZW1wNjsKKyAgaW50ICp0 ZW1wNzsKKyAgYm9vbCB0ZW1wODsKKworICBiYXIgKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0 LCB0ZW1wNSwgdGVtcDYsIHRlbXA3LCB0ZW1wOCk7CisgIHJldHVybjsKK30KKworLyogeyBkZy1m aW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIjB4ZmZmZmZmZmZmZmZmZmZmZSIgMiAiZXhwYW5k IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICIweGZmZmZmZmZm ZmZmZmZlZmUiIDEgImV4cGFuZCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVt cC10aW1lcyAiMHhmZmZmZmZmZmZlZmVmZWZlIiAyICJleHBhbmQiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIjB4ZmVmZWZlZmVmZWZlZmVmZSIgMyAiZXhwYW5k IiB9IH0gKi8KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0 by1pbml0LTIxLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtMjEu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjExOTJhOTA4ZjlkZgot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5p dC0yMS5jCkBAIC0wLDAgKzEsMTQgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZv ciBWTEEgYXV0b21hdGljIHZhcmlhYmxlcy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIC1mZHVtcC1ydGwt ZXhwYW5kIiB9ICovCisKK2V4dGVybiB2b2lkIGJhciAoaW50KTsKKwordm9pZCBmb28oaW50IG4p Cit7CisgIGludCBhcnJbbl07CisgIGJhciAoYXJyWzJdKTsKKyAgcmV0dXJuOworfQorCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcCAiX19idWlsdGluX21lbXNldCIgImV4cGFuZCIgfSB9 ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQt MjIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC0yMi5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDMxZDk2NjRlOTRmCi0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTIyLmMK QEAgLTAsMCArMSwxNCBAQAorLyogVmVyaWZ5IHplcm8gaW5pdGlhbGl6YXRpb24gZm9yIFZMQSBh dXRvbWF0aWMgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXJ0bC1leHBh bmQiIH0gKi8KKworZXh0ZXJuIHZvaWQgYmFyIChpbnQpOworCit2b2lkIGZvbyhpbnQgbikKK3sK KyAgaW50IGFycltuXTsKKyAgYmFyIChhcnJbMl0pOworICByZXR1cm47Cit9CisKKy8qIHsgZGct ZmluYWwgeyBzY2FuLXJ0bC1kdW1wICJfX2J1aWx0aW5fbWVtc2V0IiAiZXhwYW5kIiB9IH0gKi8K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC0yMy5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTIzLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43MjA5NGY2YmRiOTIKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtMjMuYwpAQCAt MCwwICsxLDEzIEBACisvKiBWZXJpZnkgdGhlIGF1dG8gaW5pdGlhbGl6YXRpb24gb2YgbmVzdGVk IFZMQS4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRy aXZpYWwtYXV0by12YXItaW5pdD16ZXJvIC1mZHVtcC1ydGwtZXhwYW5kIiB9ICovCisKK3ZvaWQg Zyh2b2lkICopOworCit2b2lkIGZvbyhpbnQgYSkKK3sKKyAgaW50IHhbYV1bYV07CisgIGcoeCk7 Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wICJfX2J1aWx0aW5fbWVtc2V0IiAi ZXhwYW5kIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L2F1dG8taW5pdC0yNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0 LTI0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41Y2MzYTc1NmEx YzUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRv LWluaXQtMjQuYwpAQCAtMCwwICsxLDEzIEBACisvKiBWZXJpZnkgdGhlIGF1dG8gaW5pdGlhbGl6 YXRpb24gb2YgbmVzdGVkIFZMQS4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD1wYXR0ZXJuIC1mZHVtcC1ydGwtZXhw YW5kIiB9ICovCisKK3ZvaWQgZyh2b2lkICopOworCit2b2lkIGZvbyhpbnQgYSkKK3sKKyAgaW50 IHhbYV1bYV07CisgIGcoeCk7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wICJf X2J1aWx0aW5fbWVtc2V0IiAiZXhwYW5kIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9hdXRvLWluaXQtMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uMTMwZTU1ZmUyZTg0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvYXV0by1pbml0LTMuYwpAQCAtMCwwICsxLDE3IEBACisvKiBWZXJpZnkgemVy byBpbml0aWFsaXphdGlvbiBmb3IgZmxvYXRpbmcgcG9pbnQgdHlwZSBhdXRvbWF0aWMgdmFyaWFi bGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJp dmlhbC1hdXRvLXZhci1pbml0PXplcm8gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKworbG9uZyBk b3VibGUgcmVzdWx0OworCitsb25nIGRvdWJsZSBmb28oKQoreworICBmbG9hdCB0ZW1wMTsKKyAg ZG91YmxlIHRlbXAyOworICBsb25nIGRvdWJsZSB0ZW1wMzsKKworICByZXN1bHQgPSB0ZW1wMSAr IHRlbXAyICsgdGVtcDM7CisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIHsgZGctZmluYWwgeyBz Y2FuLXJ0bC1kdW1wLXRpbWVzICJjb25zdF9pbnQgMCIgMyAiZXhwYW5kIiB9IH0gKi8KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC00LmMgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtNC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTUxMjViNTM3YmJkCi0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTQuYwpAQCAtMCwwICsxLDIw IEBACisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgZmxvYXRpbmcgcG9pbnQg dHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXJ0 bC1leHBhbmQiIH0gKi8KKworbG9uZyBkb3VibGUgcmVzdWx0OworCitsb25nIGRvdWJsZSBmb28o KQoreworICBmbG9hdCB0ZW1wMTsKKyAgZG91YmxlIHRlbXAyOworICBsb25nIGRvdWJsZSB0ZW1w MzsKKworICByZXN1bHQgPSB0ZW1wMSArIHRlbXAyICsgdGVtcDM7CisgIHJldHVybiByZXN1bHQ7 Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICIweGZmZmZmZmZmZmVm ZWZlZmUiIDEgImV4cGFuZCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10 aW1lcyAiXFxcWzB4ZmVmZWZlZmVmZWZlZmVmZVxcXF0iIDEgImV4cGFuZCIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiMHhmZWZlZmVmZWZlZmVmZWZlZmVmZWZl ZmVmZWZlZmVmZSIgMSAiZXhwYW5kIiB9IH0gKi8KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L2F1dG8taW5pdC01LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi4wNmMxNWJmOTM1YjIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9hdXRvLWluaXQtNS5jCkBAIC0wLDAgKzEsMjAgQEAKKy8qIFZlcmlmeSB6ZXJv IGluaXRpYWxpemF0aW9uIGZvciBjb21wbGV4IHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcy4gICov CisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0 by12YXItaW5pdD16ZXJvIC1mZHVtcC1ydGwtZXhwYW5kIiB9ICovCisKKworX0NvbXBsZXggbG9u ZyBkb3VibGUgcmVzdWx0OworCitfQ29tcGxleCBsb25nIGRvdWJsZSBmb28oKQoreworICBfQ29t cGxleCBmbG9hdCB0ZW1wMTsKKyAgX0NvbXBsZXggZG91YmxlIHRlbXAyOworICBfQ29tcGxleCBs b25nIGRvdWJsZSB0ZW1wMzsKKworICByZXN1bHQgPSB0ZW1wMSArIHRlbXAyICsgdGVtcDM7Cisg IHJldHVybiByZXN1bHQ7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVz ICJjb25zdF9pbnQgMCIgNCAiZXhwYW5kIiB9IH0gKi8KKworCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvYXV0by1pbml0LTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjgwYmQ1NmJjYjlhNwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC02LmMKQEAgLTAsMCArMSwxOSBAQAorLyogVmVyaWZ5 IHBhdHRlcm4gaW5pdGlhbGl6YXRpb24gZm9yIGNvbXBsZXggdHlwZSBhdXRvbWF0aWMgdmFyaWFi bGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJp dmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKworCitf Q29tcGxleCBsb25nIGRvdWJsZSByZXN1bHQ7CisKK19Db21wbGV4IGxvbmcgZG91YmxlIGZvbygp Cit7CisgIF9Db21wbGV4IGZsb2F0IHRlbXAxOworICBfQ29tcGxleCBkb3VibGUgdGVtcDI7Cisg IF9Db21wbGV4IGxvbmcgZG91YmxlIHRlbXAzOworCisgIHJlc3VsdCA9IHRlbXAxICsgdGVtcDIg KyB0ZW1wMzsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRs LWR1bXAtdGltZXMgIlxcXFsweGZlZmVmZWZlZmVmZWZlZmVcXFxdIiAxICJleHBhbmQiIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIjB4ZmVmZWZlZmVmZWZlZmVm ZWZlZmVmZWZlZmVmZWZlZmUiIDMgImV4cGFuZCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvYXV0by1pbml0LTcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLmU5MWEwMjQ2MzFkYQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC03LmMKQEAgLTAsMCArMSwzMiBAQAorLyogVmVyaWZ5 IHplcm8gaW5pdGlhbGl6YXRpb24gZm9yIGFycmF5LCB1bmlvbiwgYW5kIHN0cnVjdHVyZSB0eXBl IGF1dG9tYXRpYyB2YXJpYWJsZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsg ZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyAtZmR1bXAtcnRsLWV4cGFu ZCIgfSAqLworCitzdHJ1Y3QgUworeworICBpbnQgZjE7CisgIGZsb2F0IGYyOworICBjaGFyIGYz WzIwXTsKK307CisKK3VuaW9uIFUKK3sKKyAgY2hhciB1MVs1XTsKKyAgaW50IHUyOworICBmbG9h dCB1MzsgCit9OworCitkb3VibGUgcmVzdWx0OworCitkb3VibGUgZm9vKCkKK3sKKyAgaW50IHRl bXAxWzNdOworICBkb3VibGUgdGVtcDJbM107CisgIHN0cnVjdCBTIHRlbXAzOworICB1bmlvbiBV IHRlbXA0OworICAKKyAgcmVzdWx0ID0gdGVtcDFbMl0gKyB0ZW1wMlsxXSArIHRlbXAzLmYyICsg dGVtcDQudTM7CisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0 bC1kdW1wLXRpbWVzICJjb25zdF9pbnQgMCIgNyAiZXhwYW5kIiB9IH0gKi8KZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC04LmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtOC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uNTVlNTViZTNiZGQyCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTguYwpAQCAtMCwwICsxLDM1IEBACisv KiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgYXJyYXksIHVuaW9uLCBhbmQgc3Ry dWN0dXJlIHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD1wYXR0ZXJuIC1m ZHVtcC1ydGwtZXhwYW5kIiB9ICovCisKK3N0cnVjdCBTCit7CisgIGludCBmMTsKKyAgZmxvYXQg ZjI7CisgIGNoYXIgZjNbMjBdOworfTsKKwordW5pb24gVQoreworICBjaGFyIHUxWzVdOworICBp bnQgdTI7CisgIGZsb2F0IHUzOyAKK307CisKK2RvdWJsZSByZXN1bHQ7CisKK2RvdWJsZSBmb28o KQoreworICBpbnQgdGVtcDFbM107CisgIGRvdWJsZSB0ZW1wMlszXTsKKyAgc3RydWN0IFMgdGVt cDM7CisgIHVuaW9uIFUgdGVtcDQ7CisgIAorICByZXN1bHQgPSB0ZW1wMVsyXSArIHRlbXAyWzFd ICsgdGVtcDMuZjIgKyB0ZW1wNC51MzsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogeyBkZy1m aW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIjB4ZmZmZmZmZmZmZWZlZmVmZSIgMSAiZXhwYW5k IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICJcXFxbMHhmZWZl ZmVmZWZlZmVmZWZlXFxcXSIgMyAiZXhwYW5kIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXJ0bC1kdW1wLXRpbWVzICIweGZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlIiAzICJl eHBhbmQiIH0gfSAqLworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9hdXRvLWluaXQtcGFkZGluZy0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9h dXRvLWluaXQtcGFkZGluZy0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi5iNDA2OTc5N2Q5MzkKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy0xLmMKQEAgLTAsMCArMSwxOSBAQAorLyogVmVy aWZ5IHplcm8gaW5pdGlhbGl6YXRpb24gZm9yIHN0cnVjdHVyZSB0eXBlIGF1dG9tYXRpYyB2YXJp YWJsZXMgd2l0aAorICAgcGFkZGluZy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyog eyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK3N0cnVj dCB0ZXN0X2FsaWduZWQgeworICAgICAgICBpbnQgaW50ZXJuYWwxOworICAgICAgICBsb25nIGxv bmcgaW50ZXJuYWwyOworfSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCg2NCkpKTsKKworaW50IGZv byAoKQoreworICBzdHJ1Y3QgdGVzdF9hbGlnbmVkIHZhcjsKKyAgcmV0dXJuIHZhci5pbnRlcm5h bDE7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAibW92cVx0XFxc JDAsIiA4IH0gfSAqLworCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L2F1dG8taW5pdC1wYWRkaW5nLTEwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9hdXRvLWluaXQtcGFkZGluZy0xMC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uYWY3YTYwMjhjNWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctMTAuYwpAQCAtMCwwICsxLDIxIEBACisv KiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgYXJyYXkgdHlwZSB3aXRoIHN0cnVj dHVyZSBlbGVtZW50IHdpdGgKKyAgIHBhZGRpbmcuICAqLyAKKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZk dW1wLXJ0bC1leHBhbmQiIH0gKi8KKworc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB7CisgICAg ICAgIGludCBvbmU7CisgICAgICAgIGludCB0d287CisgICAgICAgIGludCB0aHJlZTsKKyAgICAg ICAgY2hhciBmb3VyOworICAgICAgICAvKiAic2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSIgYnl0 ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8KK307CisKKworaW50IGZvbyAoKQoreworICBzdHJ1Y3Qg dGVzdF90cmFpbGluZ19ob2xlIHZhclsxMF07IAorICByZXR1cm4gdmFyWzJdLmZvdXI7Cit9CisK Ky8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICIweGZlZmVmZWZlZmVmZWZlZmVm ZWZlZmVmZWZlZmVmZWZlIiAxMCAiZXhwYW5kIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTExLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy0xMS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzFhM2VlMWZlOTcxCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctMTEuYwpA QCAtMCwwICsxLDI2IEBACisvKiBWZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3IgdW5pb24g dHlwZSB3aXRoIHN0cnVjdHVyZSBmaWVsZCB3aXRoCisgICBwYWRkaW5nLiAgKi8gCisvKiB7IGRn LWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5p dD16ZXJvIiB9ICovCisKK3N0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgeworICAgICAgICBpbnQg b25lOworICAgICAgICBpbnQgdHdvOworICAgICAgICBpbnQgdGhyZWU7CisgICAgICAgIGNoYXIg Zm91cjsKKyAgICAgICAgLyogInNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEiIGJ5dGUgcGFkZGlu ZyBob2xlIGhlcmUuICovCit9OworCit1bmlvbiB0ZXN0X3VuaW9uX3BhZGRpbmcgeworICBzdHJ1 Y3QgdGVzdF90cmFpbGluZ19ob2xlIHUxOworICBsb25nIGxvbmcgdTI7Cit9OworCisKK2ludCBm b28gKCkKK3sKKyAgdW5pb24gdGVzdF91bmlvbl9wYWRkaW5nIHZhcjsKKyAgcmV0dXJuIHZhci51 MS5mb3VyOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIm1vdnFc dFxcXCQwLCIgMiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L2F1dG8taW5pdC1wYWRkaW5nLTEyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9hdXRvLWluaXQtcGFkZGluZy0xMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uYmY5ZWE1ZDYyOWEzCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctMTIuYwpAQCAtMCwwICsxLDI2IEBACisv KiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgdW5pb24gdHlwZSB3aXRoIHN0cnVj dHVyZSBmaWVsZCB3aXRoCisgICBwYWRkaW5nLiAgKi8gCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAq LworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD1wYXR0ZXJuIC1mZHVt cC1ydGwtZXhwYW5kIiB9ICovCisKK3N0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgeworICAgICAg ICBpbnQgb25lOworICAgICAgICBpbnQgdHdvOworICAgICAgICBpbnQgdGhyZWU7CisgICAgICAg IGNoYXIgZm91cjsKKyAgICAgICAgLyogInNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEiIGJ5dGUg cGFkZGluZyBob2xlIGhlcmUuICovCit9OworCit1bmlvbiB0ZXN0X3VuaW9uX3BhZGRpbmcgewor ICBzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHUxOworICBsb25nIGxvbmcgdTI7Cit9OworCisK K2ludCBmb28gKCkKK3sKKyAgdW5pb24gdGVzdF91bmlvbl9wYWRkaW5nIHZhcjsKKyAgcmV0dXJu IHZhci51MS5mb3VyOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAi MHhmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZSIgMSAiZXhwYW5kIiB9IH0gKi8KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5n LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTIu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJkYzJkMDM1YTZjOQot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5p dC1wYWRkaW5nLTIuYwpAQCAtMCwwICsxLDE5IEBACisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFs aXphdGlvbiBmb3Igc3RydWN0dXJlIHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcyB3aXRoCisgICBw YWRkaW5nLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1m dHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKwor c3RydWN0IHRlc3RfYWxpZ25lZCB7CisgICAgICAgIGludCBpbnRlcm5hbDE7CisgICAgICAgIGxv bmcgbG9uZyBpbnRlcm5hbDI7Cit9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkKDY0KSkpOworCitp bnQgZm9vICgpCit7CisgIHN0cnVjdCB0ZXN0X2FsaWduZWQgdmFyOworICByZXR1cm4gdmFyLmlu dGVybmFsMTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIjB4ZmVm ZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmUiIDQgImV4cGFuZCIgfSB9ICovCisKKwpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmct My5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctMy5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGE2ZDc2NGI5ZmE0Ci0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0 LXBhZGRpbmctMy5jCkBAIC0wLDAgKzEsMzAgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0 aW9uIGZvciBuZXN0ZWQgc3RydWN0dXJlIHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcyB3aXRoCisg ICBwYWRkaW5nLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworc3RydWN0IHRlc3RfYWxpZ25l ZCB7CisgICAgICAgIHVuc2lnbmVkIGludGVybmFsMTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBs b25nIGludGVybmFsMjsKK30gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQoNjQpKSk7CisKK3N0cnVj dCB0ZXN0X2JpZ19ob2xlIHsKKyAgICAgICAgY2hhciBvbmU7CisgICAgICAgIGNoYXIgdHdvOwor ICAgICAgICBjaGFyIHRocmVlOworICAgICAgICAvKiA2MSBieXRlIHBhZGRpbmcgaG9sZSBoZXJl LiAqLworICAgICAgICBzdHJ1Y3QgdGVzdF9hbGlnbmVkIGZvdXI7Cit9IF9fYXR0cmlidXRlX18g KChhbGlnbmVkKDY0KSkpOworCisKK2ludCBmb28gKCkKK3sKKyAgc3RydWN0IHRlc3RfYmlnX2hv bGUgdmFyOworICByZXR1cm4gdmFyLmZvdXIuaW50ZXJuYWwxOworfQorCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgIm1vdmxcdFxcXCQwLCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgIm1vdmxcdFxcXCQxNiwiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJyZXAgc3Rvc3EiIH0gfSAqLworCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTQuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTQuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjFhZDYwMjQzYWE0YwotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTQuYwpAQCAt MCwwICsxLDI4IEBACisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgbmVzdGVk IHN0cnVjdHVyZSB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMgd2l0aAorICAgcGFkZGluZy4gICov CisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0 by12YXItaW5pdD1wYXR0ZXJuIC1mZHVtcC1ydGwtZXhwYW5kIiB9ICovCisKK3N0cnVjdCB0ZXN0 X2FsaWduZWQgeworICAgICAgICB1bnNpZ25lZCBpbnRlcm5hbDE7CisgICAgICAgIHVuc2lnbmVk IGxvbmcgbG9uZyBpbnRlcm5hbDI7Cit9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkKDY0KSkpOwor CitzdHJ1Y3QgdGVzdF9iaWdfaG9sZSB7CisgICAgICAgIGNoYXIgb25lOworICAgICAgICBjaGFy IHR3bzsKKyAgICAgICAgY2hhciB0aHJlZTsKKyAgICAgICAgLyogNjEgYnl0ZSBwYWRkaW5nIGhv bGUgaGVyZS4gKi8KKyAgICAgICAgc3RydWN0IHRlc3RfYWxpZ25lZCBmb3VyOworfSBfX2F0dHJp YnV0ZV9fICgoYWxpZ25lZCg2NCkpKTsKKworCitpbnQgZm9vICgpCit7CisgIHN0cnVjdCB0ZXN0 X2JpZ19ob2xlIHZhcjsKKyAgcmV0dXJuIHZhci5mb3VyLmludGVybmFsMTsKK30KKworLyogeyBk Zy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIjB4ZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZl ZmVmZWZlZmUiIDggImV4cGFuZCIgfSB9ICovCisKKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uZTE4YmMzMDczZTE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctNS5jCkBAIC0wLDAg KzEsMjIgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZvciBzdHJ1Y3R1cmUgdHlw ZSBhdXRvbWF0aWMgdmFyaWFibGVzIHdpdGgKKyAgIHRhaWwgcGFkZGluZy4gICovCisvKiB7IGRn LWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5p dD16ZXJvIiB9ICovCisKK3N0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgeworICAgICAgICBjaGFy ICpvbmU7CisgICAgICAgIGNoYXIgKnR3bzsKKyAgICAgICAgY2hhciAqdGhyZWU7CisgICAgICAg IGNoYXIgZm91cjsKKyAgICAgICAgLyogInNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEiIGJ5dGUg cGFkZGluZyBob2xlIGhlcmUuICovCit9OworCitpbnQgZm9vICgpCit7CisgIHN0cnVjdCB0ZXN0 X3RyYWlsaW5nX2hvbGUgdmFyOworICByZXR1cm4gdmFyLmZvdXI7Cit9CisKKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAibW92cVx0XFxcJDAsIiA0IH0gfSAqLworCisKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5n LTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTYu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjczOGEzNDBlZmI2MQot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5p dC1wYWRkaW5nLTYuYwpAQCAtMCwwICsxLDIyIEBACisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFs aXphdGlvbiBmb3Igc3RydWN0dXJlIHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcyB3aXRoCisgICB0 YWlsIHBhZGRpbmcuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtcnRsLWV4cGFuZCIgfSAq LworCitzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHsKKyAgICAgICAgY2hhciAqb25lOworICAg ICAgICBjaGFyICp0d287CisgICAgICAgIGNoYXIgKnRocmVlOworICAgICAgICBjaGFyIGZvdXI7 CisgICAgICAgIC8qICJzaXplb2YodW5zaWduZWQgbG9uZykgLSAxIiBieXRlIHBhZGRpbmcgaG9s ZSBoZXJlLiAqLworfTsKKworaW50IGZvbyAoKQoreworICBzdHJ1Y3QgdGVzdF90cmFpbGluZ19o b2xlIHZhcjsKKyAgcmV0dXJuIHZhci5mb3VyOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1y dGwtZHVtcC10aW1lcyAiMHhmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZSIgMiAiZXhw YW5kIiB9IH0gKi8KKworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9hdXRvLWluaXQtcGFkZGluZy03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9h dXRvLWluaXQtcGFkZGluZy03LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi5iNWFiZmZiMGZjNjYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy03LmMKQEAgLTAsMCArMSwyMiBAQAorLyogVmVy aWZ5IHplcm8gaW5pdGlhbGl6YXRpb24gZm9yIHN0cnVjdHVyZSB0eXBlIGF1dG9tYXRpYyB2YXJp YWJsZXMgd2l0aAorICAgcGFkZGluZyBhbmQgaGFzIGV4cGxpY2l0IGluaXRpYWxpemF0aW9uLiAg Ki8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1h dXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB7Cisg ICAgICAgIGludCBvbmU7CisgICAgICAgIGludCB0d287CisgICAgICAgIGludCB0aHJlZTsKKyAg ICAgICAgY2hhciBmb3VyOworICAgICAgICAvKiAic2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSIg Ynl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8KK307CisKK2ludCBmb28gKCkKK3sKKyAgc3RydWN0 IHRlc3RfdHJhaWxpbmdfaG9sZSB2YXIgPSB7Lm9uZSA9IDEsLnR3byA9IDIsIC5mb3VyID0gJ2Mn fTsKKyAgcmV0dXJuIHZhci5mb3VyOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgIm1vdnFcdFxcXCQwLCIgMiB9IH0gKi8KKworCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy04LmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy04LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42NjU5MWNmZjQ0ODgKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy04LmMKQEAg LTAsMCArMSwyMiBAQAorLyogVmVyaWZ5IHBhdHRlcm4gaW5pdGlhbGl6YXRpb24gZm9yIHN0cnVj dHVyZSB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMgd2l0aAorICAgcGFkZGluZyBhbmQgaGFzIGV4 cGxpY2l0IGluaXRpYWxpemF0aW9uLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4iIH0gKi8KKworc3Ry dWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB7CisgICAgICAgIGludCBvbmU7CisgICAgICAgIGludCB0 d287CisgICAgICAgIGludCB0aHJlZTsKKyAgICAgICAgY2hhciBmb3VyOworICAgICAgICAvKiAi c2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSIgYnl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8KK307 CisKK2ludCBmb28gKCkKK3sKKyAgc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB2YXIgPSB7Lm9u ZSA9IDEsLnR3byA9IDIsIC5mb3VyID0gJ2MnfTsKKyAgcmV0dXJuIHZhci5mb3VyOworfQorCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIm1vdnFcdFxcXCQwLCIgMiB9IH0g Ki8KKworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWlu aXQtcGFkZGluZy05LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQt cGFkZGluZy05LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40MGZj Y2FkZjkyMGQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9hdXRvLWluaXQtcGFkZGluZy05LmMKQEAgLTAsMCArMSwyMyBAQAorLyogVmVyaWZ5IHplcm8g aW5pdGlhbGl6YXRpb24gZm9yIGFycmF5IHR5cGUgd2l0aCBzdHJ1Y3R1cmUgZWxlbWVudCB3aXRo CisgICBwYWRkaW5nLiAgKi8gCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK3N0cnVjdCB0ZXN0X3Ry YWlsaW5nX2hvbGUgeworICAgICAgICBpbnQgb25lOworICAgICAgICBpbnQgdHdvOworICAgICAg ICBpbnQgdGhyZWU7CisgICAgICAgIGNoYXIgZm91cjsKKyAgICAgICAgLyogInNpemVvZih1bnNp Z25lZCBsb25nKSAtIDEiIGJ5dGUgcGFkZGluZyBob2xlIGhlcmUuICovCit9OworCisKK2ludCBm b28gKCkKK3sKKyAgc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB2YXJbMTBdOyAKKyAgcmV0dXJu IHZhclsyXS5mb3VyOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdmxc dFxcXCQwLCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdmxcdFxc XCQyMCwiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJyZXAgc3Rvc3Ei IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtY2ZnLmMgYi9nY2MvdHJlZS1jZmcuYwppbmRl eCBjOGIwZjdiMzNlMTIuLjhkMzE4N2QxOTY2NSAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtY2ZnLmMK KysrIGIvZ2NjL3RyZWUtY2ZnLmMKQEAgLTM0NTcsMzEgKzM0NTcsOTIgQEAgdmVyaWZ5X2dpbXBs ZV9jYWxsIChnY2FsbCAqc3RtdCkKIAl9CiAgICAgfQogCisgIC8qIEZvciBhIGNhbGwgdG8gLkRF RkVSUkVEX0lOSVQsIHdlIHNob3VsZCBndWFyYW50ZWUgdGhhdCB0aGUgMXN0IGFuZCB0aGUgM3Jk CisgICAgIGFyZ3VtZW50IGlzIGNvbnNpc3RlbnQsIGkuZS46CisgICAgIDFzdCBhcmd1bWVudDog U0laRSBvZiB0aGUgREVDTDsKKyAgICAgM3JkIGFyZ3VtZW50OiBJU19WTEEsIDAgTk8sIDEgWUVT OworCisgICAgIGlmIElTX1ZMQSBpcyBmYWxzZSwgdGhlIDFzdCBhcmd1bWVudCBzaG91bGQgYmUg YSBjb25zdGFudCBhbmQgdGhlIHNhbWUgYXMKKyAgICAgdGhlIHNpemUgb2YgdGhlIExIUy4gICov CisgIGlmIChnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChzdG10LCBJRk5fREVGRVJSRURfSU5JVCkp CisgICAgeworICAgICAgdHJlZSBzaXplX29mX2FyZzAgPSBnaW1wbGVfY2FsbF9hcmcgKHN0bXQs IDApOworICAgICAgdHJlZSBzaXplX29mX2xocyA9IFRZUEVfU0laRV9VTklUIChUUkVFX1RZUEUg KGxocykpOworICAgICAgdHJlZSBpc192bGFfbm9kZSA9IGdpbXBsZV9jYWxsX2FyZyAoc3RtdCwg Mik7CisgICAgICBib29sIGlzX3ZsYSA9IChib29sKSBUUkVFX0lOVF9DU1RfTE9XIChpc192bGFf bm9kZSk7CisKKyAgICAgIGlmIChUUkVFX0NPREUgKGxocykgPT0gU1NBX05BTUUpCisgICAgICAg bGhzID0gU1NBX05BTUVfVkFSIChsaHMpOworCisgICAgICBwb2x5X3VpbnQ2NCBzaXplX2Zyb21f YXJnMCwgc2l6ZV9mcm9tX2xoczsKKyAgICAgIGJvb2wgaXNfY29uc3RhbnRfc2l6ZV9hcmcwID0g cG9seV9pbnRfdHJlZV9wIChzaXplX29mX2FyZzAsCisJCQkJCQkgICAgJnNpemVfZnJvbV9hcmcw KTsKKyAgICAgIGJvb2wgaXNfY29uc3RhbnRfc2l6ZV9saHMgPSBwb2x5X2ludF90cmVlX3AgKHNp emVfb2ZfbGhzLAorCQkJCQkJICAgJnNpemVfZnJvbV9saHMpOworICAgICAgaWYgKCFpc192bGEp CisJeworCSAgaWYgKCFpc19jb25zdGFudF9zaXplX2FyZzApCisJICAgIHsKKwkgICAgICBlcnJv ciAoIiU8REVGRkVSRURfSU5JVCU+IGNhbGxzIGZvciBub24tVkxBIHNob3VsZCBoYXZlICIKKwkJ ICAgICAiY29uc3RhbnQgc2l6ZSBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50Iik7CisJICAgICAgcmV0 dXJuIHRydWU7CisJICAgIH0KKwkgIGVsc2UgaWYgKCFpc19jb25zdGFudF9zaXplX2xocykKKwkg ICAgeworCSAgICAgIGVycm9yICgiJTxERUZGRVJFRF9JTklUJT4gY2FsbHMgZm9yIG5vbi1WTEEg c2hvdWxkIGhhdmUgIgorCQkgICAgICJjb25zdGFudCBzaXplIGZvciB0aGUgTEhTIik7CisJICAg 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 Y2MvdHJlZS1zcmEuYwppbmRleCBjMDVkMjJmM2U4ZjEuLjQ1YzllOTE2ZjU1YSAxMDA2NDQKLS0t IGEvZ2NjL3RyZWUtc3JhLmMKKysrIGIvZ2NjL3RyZWUtc3JhLmMKQEAgLTM4NCw2ICszODQsMTMg QEAgc3RhdGljIHN0cnVjdAogCiAgIC8qIE51bWJiZXIgb2YgY29tcG9uZW50cyBjcmVhdGVkIHdo ZW4gc3BsaXR0aW5nIGFnZ3JlZ2F0ZSBwYXJhbWV0ZXJzLiAgKi8KICAgaW50IHBhcmFtX3JlZHVj dGlvbnNfY3JlYXRlZDsKKworICAvKiBOdW1iZXIgb2YgZGVmZXJyZWRfaW5pdCBjYWxscyB0aGF0 IGFyZSBtb2RpZmllZC4gICovCisgIGludCBkZWZlcnJlZF9pbml0OworCisgIC8qIE51bWJlciBv ZiBkZWZlcnJlZF9pbml0IGNhbGxzIHRoYXQgYXJlIGNyZWF0ZWQgYnkKKyAgICAgZ2VuZXJhdGVf c3VidHJlZV9kZWZlcnJlZF9pbml0LiAgKi8KKyAgaW50IHN1YnRyZWVfZGVmZXJyZWRfaW5pdDsK IH0gc3JhX3N0YXRzOwogCiBzdGF0aWMgdm9pZApAQCAtMTM4OCw3ICsxMzk1LDE0IEBAIHNjYW5f ZnVuY3Rpb24gKHZvaWQpCiAKIAkgICAgICB0ID0gZ2ltcGxlX2NhbGxfbGhzIChzdG10KTsKIAkg ICAgICBpZiAodCAmJiAhZGlzcXVhbGlmeV9pZl9iYWRfYmJfdGVybWluYXRpbmdfc3RtdCAoc3Rt dCwgdCwgTlVMTCkpCi0JCXJldCB8PSBidWlsZF9hY2Nlc3NfZnJvbV9leHByICh0LCBzdG10LCB0 cnVlKTsKKwkJeworCQkgIC8qIElmIHRoZSBTVE1UIGlzIGEgY2FsbCB0byBERUZFUlJFRF9JTklU LCBhdm9pZCBzZXR0aW5nCisJCSAgICAgY2Fubm90X3NjYWxhcml6ZV9hd2F5X2JpdG1hcC4gICov CisJCSAgaWYgKGdpbXBsZV9jYWxsX2ludGVybmFsX3AgKHN0bXQsIElGTl9ERUZFUlJFRF9JTklU KSkKKwkJICAgIHJldCB8PSAhIWJ1aWxkX2FjY2Vzc19mcm9tX2V4cHJfMSAodCwgc3RtdCwgdHJ1 ZSk7CisJCSAgZWxzZQorCQkgICAgcmV0IHw9IGJ1aWxkX2FjY2Vzc19mcm9tX2V4cHIgKHQsIHN0 bXQsIHRydWUpOworCQl9CiAJICAgICAgYnJlYWs7CiAKIAkgICAgY2FzZSBHSU1QTEVfQVNNOgpA QCAtNDA5Niw2ICs0MTEwLDg4IEBAIGdldF9yZXBsX2RlZmF1bHRfZGVmX3NzYV9uYW1lIChzdHJ1 Y3QgYWNjZXNzICpyYWNjLCB0cmVlIHJlZ190eXBlKQogICByZXR1cm4gZ2V0X29yX2NyZWF0ZV9z c2FfZGVmYXVsdF9kZWYgKGNmdW4sIHJhY2MtPnJlcGxhY2VtZW50X2RlY2wpOwogfQogCisKKy8q IEdlbmVyYXRlIHN0YXRlbWVudHMgdG8gY2FsbCAuREVGRVJSRURfSU5JVCB0byBpbml0aWFsaXpl IHNjYWxhciByZXBsYWNlbWVudHMKKyAgIG9mIGFjY2Vzc2VzIHdpdGhpbiBhIHN1YnRyZWUgQUND RVNTOyBhbGwgaXRzIGNoaWxkcmVuLCBzaWJsaW5ncyBhbmQgdGhlaXIKKyAgIGNoaWxkcmVuIGFy ZSB0byBiZSBwcm9jZXNzZWQuCisgICBHU0kgaXMgYSBzdGF0ZW1lbnQgaXRlcmF0b3IgdXNlZCB0 byBwbGFjZSB0aGUgbmV3IHN0YXRlbWVudHMuICAqLworc3RhdGljIHZvaWQKK2dlbmVyYXRlX3N1 YnRyZWVfZGVmZXJyZWRfaW5pdCAoc3RydWN0IGFjY2VzcyAqYWNjZXNzLAorCQkJCXRyZWUgaW5p dF90eXBlLAorCQkJCXRyZWUgaXNfdmxhLAorCQkJCWdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2ks CisJCQkJbG9jYXRpb25fdCBsb2MpCit7CisgIGRvCisgICAgeworICAgICAgaWYgKGFjY2Vzcy0+ Z3JwX3RvX2JlX3JlcGxhY2VkKQorCXsKKwkgIHRyZWUgcmVwbCA9IGdldF9hY2Nlc3NfcmVwbGFj ZW1lbnQgKGFjY2Vzcyk7CisJICBnaW1wbGUgKmNhbGwKKwkgICAgPSBnaW1wbGVfYnVpbGRfY2Fs bF9pbnRlcm5hbCAoSUZOX0RFRkVSUkVEX0lOSVQsIDMsCisJCQkJCSAgVFlQRV9TSVpFX1VOSVQg KFRSRUVfVFlQRSAocmVwbCkpLAorCQkJCQkgIGluaXRfdHlwZSwgaXNfdmxhKTsKKwkgIGdpbXBs ZV9jYWxsX3NldF9saHMgKGNhbGwsIHJlcGwpOworCSAgZ3NpX2luc2VydF9iZWZvcmUgKGdzaSwg Y2FsbCwgR1NJX1NBTUVfU1RNVCk7CisJICB1cGRhdGVfc3RtdCAoY2FsbCk7CisJICBnaW1wbGVf c2V0X2xvY2F0aW9uIChjYWxsLCBsb2MpOworCSAgc3JhX3N0YXRzLnN1YnRyZWVfZGVmZXJyZWRf aW5pdCsrOworCX0KKyAgICAgIGlmIChhY2Nlc3MtPmZpcnN0X2NoaWxkKQorCWdlbmVyYXRlX3N1 YnRyZWVfZGVmZXJyZWRfaW5pdCAoYWNjZXNzLT5maXJzdF9jaGlsZCwgaW5pdF90eXBlLAorCQkJ CQlpc192bGEsIGdzaSwgbG9jKTsKKworICAgICAgYWNjZXNzID0gYWNjZXNzIC0+bmV4dF9zaWJs aW5nOworICAgIH0KKyAgd2hpbGUgKGFjY2Vzcyk7Cit9CisKKy8qIEZvciBhIGNhbGwgdG8gLkRF RkVSUkVEX0lOSVQ6CisgICB2YXIgPSAuREVGRVJSRURfSU5JVCAoc2l6ZV9vZl92YXIsIGluaXRf dHlwZSwgaXNfdmxhKTsKKyAgIGV4YW1pbmUgdGhlIExIUyB2YXJpYWJsZSBWQVIgYW5kIHJlcGxh Y2UgaXQgd2l0aCBhIHNjYWxhciByZXBsYWNlbWVudCBpZgorICAgdGhlcmUgaXMgb25lLCBhbHNv IHJlcGxhY2UgdGhlIFJIUyBjYWxsIHRvIGEgY2FsbCB0byAuREVGRVJSRURfSU5JVCBvZgorICAg dGhlIGNvcnJlc3BvbmRpbmcgc2NhbGFyIHJlbGFjZW1lbnQgdmFyaWFibGUuICBFeGFtaW5lIHRo ZSBzdWJ0cmVlIGFuZAorICAgZG8gdGhlIHNjYWxhciByZXBsYWNlbWVudHMgaW4gdGhlIHN1YnRy ZWUgdG9vLiAgU1RNVCBpcyB0aGUgY2FsbCwgR1NJIGlzCisgICB0aGUgc3RhdG1lbnQgaXRlcmF0 b3IgdG8gcGxhY2UgbmV3bHkgY3JlYXRlZCBzdGF0ZW1lbnQuICAqLworCitzdGF0aWMgZW51bSBh c3NpZ25tZW50X21vZF9yZXN1bHQKK3NyYV9tb2RpZnlfZGVmZXJyZWRfaW5pdCAoZ2ltcGxlICpz dG10LCBnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpKQoreworICB0cmVlIGxocyA9IGdpbXBsZV9j YWxsX2xocyAoc3RtdCk7CisgIHRyZWUgaW5pdF90eXBlID0gZ2ltcGxlX2NhbGxfYXJnIChzdG10 LCAxKTsKKyAgdHJlZSBpc192bGEgPSBnaW1wbGVfY2FsbF9hcmcgKHN0bXQsIDIpOworCisgIHN0 cnVjdCBhY2Nlc3MgKmxoc19hY2Nlc3MgPSBnZXRfYWNjZXNzX2Zvcl9leHByIChsaHMpOworICBp ZiAoIWxoc19hY2Nlc3MpCisgICAgcmV0dXJuIFNSQV9BTV9OT05FOworCisgIGxvY2F0aW9uX3Qg bG9jID0gZ2ltcGxlX2xvY2F0aW9uIChzdG10KTsKKworICBpZiAobGhzX2FjY2Vzcy0+Z3JwX3Rv X2JlX3JlcGxhY2VkKQorICAgIHsKKyAgICAgIHRyZWUgbGhzX3JlcGwgPSBnZXRfYWNjZXNzX3Jl cGxhY2VtZW50IChsaHNfYWNjZXNzKTsKKyAgICAgIGdpbXBsZV9jYWxsX3NldF9saHMgKHN0bXQs IGxoc19yZXBsKTsKKyAgICAgIHRyZWUgYXJnMF9yZXBsID0gVFlQRV9TSVpFX1VOSVQgKFRSRUVf VFlQRSAobGhzX3JlcGwpKTsKKyAgICAgIGdpbXBsZV9jYWxsX3NldF9hcmcgKHN0bXQsIDAsIGFy ZzBfcmVwbCk7CisgICAgICBzcmFfc3RhdHMuZGVmZXJyZWRfaW5pdCsrOworICAgICAgZ2NjX2Fz c2VydCAoIWxoc19hY2Nlc3MtPmZpcnN0X2NoaWxkKTsKKyAgICAgIHJldHVybiBTUkFfQU1fTU9E SUZJRUQ7CisgICAgfQorCisgIGlmIChsaHNfYWNjZXNzLT5maXJzdF9jaGlsZCkKKyAgICBnZW5l cmF0ZV9zdWJ0cmVlX2RlZmVycmVkX2luaXQgKGxoc19hY2Nlc3MtPmZpcnN0X2NoaWxkLAorCQkJ CSAgICBpbml0X3R5cGUsIGlzX3ZsYSwgZ3NpLCBsb2MpOworICBpZiAobGhzX2FjY2Vzcy0+Z3Jw X2NvdmVyZWQpCisgICAgeworICAgICAgdW5saW5rX3N0bXRfdmRlZiAoc3RtdCk7CisgICAgICBn c2lfcmVtb3ZlIChnc2ksIHRydWUpOworICAgICAgcmVsZWFzZV9kZWZzIChzdG10KTsKKyAgICAg IHJldHVybiBTUkFfQU1fUkVNT1ZFRDsKKyAgICB9CisKKyAgcmV0dXJuIFNSQV9BTV9NT0RJRklF RDsKK30KKwogLyogRXhhbWluZSBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IHN0YXRlbWVu dCBwb2ludGVkIHRvIGJ5IFNUTVQsIHJlcGxhY2UKICAgIHRoZW0gd2l0aCBhIHNjYWxhcmUgcmVw bGFjZW1lbnQgaWYgdGhlcmUgaXMgb25lIGFuZCBnZW5lcmF0ZSBjb3B5aW5nIG9mCiAgICByZXBs YWNlbWVudHMgaWYgc2NhbGFyaXplZCBhZ2dyZWdhdGVzIGhhdmUgYmVlbiB1c2VkIGluIHRoZSBh c3NpZ25tZW50LiAgR1NJCkBAIC00NDYwLDE3ICs0NTU2LDI3IEBAIHNyYV9tb2RpZnlfZnVuY3Rp b25fYm9keSAodm9pZCkKIAkgICAgICBicmVhazsKIAogCSAgICBjYXNlIEdJTVBMRV9DQUxMOgot CSAgICAgIC8qIE9wZXJhbmRzIG11c3QgYmUgcHJvY2Vzc2VkIGJlZm9yZSB0aGUgbGhzLiAgKi8K LQkgICAgICBmb3IgKGkgPSAwOyBpIDwgZ2ltcGxlX2NhbGxfbnVtX2FyZ3MgKHN0bXQpOyBpKysp CisJICAgICAgLyogSGFuZGxlIGNhbGxzIHRvIC5ERUZFUlJFRF9JTklUIHNwZWNpYWxseS4gICov CisJICAgICAgaWYgKGdpbXBsZV9jYWxsX2ludGVybmFsX3AgKHN0bXQsIElGTl9ERUZFUlJFRF9J TklUKSkKIAkJewotCQkgIHQgPSBnaW1wbGVfY2FsbF9hcmdfcHRyIChzdG10LCBpKTsKLQkJICBt b2RpZmllZCB8PSBzcmFfbW9kaWZ5X2V4cHIgKHQsICZnc2ksIGZhbHNlKTsKKwkJICBhc3NpZ25f cmVzdWx0ID0gc3JhX21vZGlmeV9kZWZlcnJlZF9pbml0IChzdG10LCAmZ3NpKTsKKwkJICBtb2Rp ZmllZCB8PSBhc3NpZ25fcmVzdWx0ID09IFNSQV9BTV9NT0RJRklFRDsKKwkJICBkZWxldGVkID0g YXNzaWduX3Jlc3VsdCA9PSBTUkFfQU1fUkVNT1ZFRDsKIAkJfQotCi0JICAgICAgaWYgKGdpbXBs ZV9jYWxsX2xocyAoc3RtdCkpCisJICAgICAgZWxzZQogCQl7Ci0JCSAgdCA9IGdpbXBsZV9jYWxs X2xoc19wdHIgKHN0bXQpOwotCQkgIG1vZGlmaWVkIHw9IHNyYV9tb2RpZnlfZXhwciAodCwgJmdz aSwgdHJ1ZSk7CisJCSAgLyogT3BlcmFuZHMgbXVzdCBiZSBwcm9jZXNzZWQgYmVmb3JlIHRoZSBs aHMuICAqLworCQkgIGZvciAoaSA9IDA7IGkgPCBnaW1wbGVfY2FsbF9udW1fYXJncyAoc3RtdCk7 IGkrKykKKwkJICAgIHsKKwkJICAgICAgdCA9IGdpbXBsZV9jYWxsX2FyZ19wdHIgKHN0bXQsIGkp OworCQkgICAgICBtb2RpZmllZCB8PSBzcmFfbW9kaWZ5X2V4cHIgKHQsICZnc2ksIGZhbHNlKTsK KwkJICAgIH0KKworCSAgICAgIAkgIGlmIChnaW1wbGVfY2FsbF9saHMgKHN0bXQpKQorCQkgICAg eworCQkgICAgICB0ID0gZ2ltcGxlX2NhbGxfbGhzX3B0ciAoc3RtdCk7CisJCSAgICAgIG1vZGlm aWVkIHw9IHNyYV9tb2RpZnlfZXhwciAodCwgJmdzaSwgdHJ1ZSk7CisJCSAgICB9CiAJCX0KIAkg ICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLXN0cnVjdGFsaWFzLmMgYi9n Y2MvdHJlZS1zc2Etc3RydWN0YWxpYXMuYwppbmRleCA3MTg5NGIzOGZmOTIuLjRlOGUwMTk0NzUz ZCAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtc3NhLXN0cnVjdGFsaWFzLmMKKysrIGIvZ2NjL3RyZWUt c3NhLXN0cnVjdGFsaWFzLmMKQEAgLTQ5MDcsNiArNDkwNyw5IEBAIGZpbmRfZnVuY19hbGlhc2Vz X2Zvcl9jYWxsIChzdHJ1Y3QgZnVuY3Rpb24gKmZuLCBnY2FsbCAqdCkKICAgICAgICYmIGZpbmRf ZnVuY19hbGlhc2VzX2Zvcl9idWlsdGluX2NhbGwgKGZuLCB0KSkKICAgICByZXR1cm47CiAKKyAg aWYgKGdpbXBsZV9jYWxsX2ludGVybmFsX3AgKHQsIElGTl9ERUZFUlJFRF9JTklUKSkKKyAgICBy ZXR1cm47CisKICAgZmkgPSBnZXRfZmlfZm9yX2NhbGxlZSAodCk7CiAgIGlmICghaW5faXBhX21v ZGUKICAgICAgIHx8IChmaS0+ZGVjbCAmJiBmbmRlY2wgJiYgIWZpLT5pc19mbl9pbmZvKSkKZGlm ZiAtLWdpdCBhL2djYy90cmVlLXNzYS11bmluaXQuYyBiL2djYy90cmVlLXNzYS11bmluaXQuYwpp bmRleCAyNGFjMDMxYTY5M2MuLjQ0NWI3MzliY2Q4OCAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtc3Nh LXVuaW5pdC5jCisrKyBiL2djYy90cmVlLXNzYS11bmluaXQuYwpAQCAtMTUyLDYgKzE1Miw0MiBA QCB3YXJuX3VuaW5pdCAoZW51bSBvcHRfY29kZSB3YywgdHJlZSB0LCB0cmVlIGV4cHIsIHRyZWUg dmFyLAogICBpZiAoaXNfZ2ltcGxlX2Fzc2lnbiAoY29udGV4dCkKICAgICAgICYmIGdpbXBsZV9h c3NpZ25fcmhzX2NvZGUgKGNvbnRleHQpID09IENPTVBMRVhfRVhQUikKICAgICByZXR1cm47CisK KyAgLyogSWdub3JlIFJFQUxQQVJUX0VYUFIgb3IgSU1BR1BBUlRfRVhQUiBpZiBpdHMgb3BlcmFu ZCBpcyBhIGNhbGwgdG8KKyAgICAgLkRFRkVSUkVEX0lOSVQuICBUaGlzIGlzIGZvciBoYW5kbGlu ZyB0aGUgZm9sbG93aW5nIGNhc2UgY29ycmVjdGx5OgorCisgIDEgdHlwZWRlZiBfQ29tcGxleCBm bG9hdCBDOworICAyIEMgZm9vIChpbnQgY29uZCkKKyAgMyB7CisgIDQgICBDIGY7CisgIDUgICBf X2ltYWdfXyBmID0gMDsKKyAgNiAgIGlmIChjb25kKQorICA3ICAgICB7CisgIDggICAgICAgX19y ZWFsX18gZiA9IDE7CisgIDkgICAgICAgcmV0dXJuIGY7CisgMTAgICAgIH0KKyAxMSAgIHJldHVy biBmOworIDEyIH0KKworICAgIHdpdGggLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQsIGNvbXBpbGVy IHdpbGwgaW5zZXJ0IHRoZSBmb2xsb3dpbmcKKyAgICBhcnRpZmljaWFsIGluaXRpYWxpemF0aW9u IGF0IGxpbmUgNDoKKyAgZiA9IC5ERUZFUlJFRF9JTklUIChmLCAyKTsKKyAgXzEgPSBSRUFMUEFS VF9FWFBSIDxmPjsKKworICAgIHdpdGhvdXQgdGhlIGZvbGxvd2luZyBzcGVjaWFsIGhhbmRsaW5n LCBfMSA9IFJFQUxQQVJUX0VYUFIgPGY+IHdpbGwKKyAgICBiZSB0cmVhdGVkIGFzIHRoZSB1bmlu aXRpYWxpemVkIHVzZSBwb2ludCwgd2hpY2ggaXMgaW5jb3JyZWN0LiAodGhlCisgICAgcmVhbCB1 bmluaXRpYWxpemVkIHVzZSBwb2ludCBpcyBhdCBsaW5lIDExKS4gICovCisgIGlmIChpc19naW1w bGVfYXNzaWduIChjb250ZXh0KQorICAgICAgJiYgKGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKGNv bnRleHQpID09IFJFQUxQQVJUX0VYUFIKKwkgIHx8IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKGNv bnRleHQpID09IElNQUdQQVJUX0VYUFIpKQorICAgIHsKKyAgICAgIHRyZWUgdiA9IGdpbXBsZV9h c3NpZ25fcmhzMSAoY29udGV4dCk7CisgICAgICBpZiAoVFJFRV9DT0RFIChUUkVFX09QRVJBTkQg KHYsIDApKSA9PSBTU0FfTkFNRQorCSAgJiYgZ2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAoU1NBX05B TUVfREVGX1NUTVQgKFRSRUVfT1BFUkFORCAodiwgMCkpLAorCQkJCSAgICAgSUZOX0RFRkVSUkVE X0lOSVQpKQorCXJldHVybjsKKyAgICB9CisKICAgaWYgKCFoYXNfdW5kZWZpbmVkX3ZhbHVlX3Ag KHQpKQogICAgIHJldHVybjsKIApAQCAtMjI3LDYgKzI2MywxMSBAQCBjaGVja19kZWZzIChhb19y ZWYgKnJlZiwgdHJlZSB2ZGVmLCB2b2lkICpkYXRhXykKICAgY2hlY2tfZGVmc19kYXRhICpkYXRh ID0gKGNoZWNrX2RlZnNfZGF0YSAqKWRhdGFfOwogICBnaW1wbGUgKmRlZl9zdG10ID0gU1NBX05B TUVfREVGX1NUTVQgKHZkZWYpOwogCisgIC8qIElnbm9yZSB0aGUgdmRlZiBpZiB0aGUgZGVmaW5p dGlvbiBzdGF0ZW1lbnQgaXMgYSBjYWxsCisgICAgIHRvIC5ERUZFUlJFRF9JTklUIGZ1bmN0aW9u LiAgKi8KKyAgaWYgKGdpbXBsZV9jYWxsX2ludGVybmFsX3AgKGRlZl9zdG10LCBJRk5fREVGRVJS RURfSU5JVCkpCisgICAgcmV0dXJuIGZhbHNlOworCiAgIC8qIFRoZSBBU0FOX01BUksgaW50cmlu c2ljIGRvZXNuJ3QgbW9kaWZ5IHRoZSB2YXJpYWJsZS4gICovCiAgIGlmIChpc19naW1wbGVfY2Fs bCAoZGVmX3N0bXQpCiAgICAgICAmJiBnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChkZWZfc3RtdCwg SUZOX0FTQU5fTUFSSykpCkBAIC02NDIsNiArNjgzLDEyIEBAIHdhcm5fdW5pbml0aWFsaXplZF92 YXJzIChib29sIHdtYXliZV91bmluaXQpCiAJICBzc2Ffb3BfaXRlciBvcF9pdGVyOwogCSAgdHJl ZSB1c2U7CiAKKwkgIC8qIFRoZSBjYWxsIGlzIGFuIGFydGlmaWNpYWwgdXNlLCB3aWxsIG5vdCBw cm92aWRlIG1lYW5pbmdmdWwKKwkgICAgIGVycm9yIG1lc3NhZ2UuICBJZiB0aGUgcmVzdWx0IG9m IHRoZSBjYWxsIGlzIHVzZWQgc29tZXdoZXJlCisJICAgICBlbHNlLCB3ZSB3YXJuIHRoZXJlIGlu c3RlYWQuICAqLworCSAgaWYgKGdpbXBsZV9jYWxsX2ludGVybmFsX3AgKHN0bXQsIElGTl9ERUZF UlJFRF9JTklUKSkKKwkgICAgY29udGludWU7CisKIAkgIGlmIChpc19naW1wbGVfZGVidWcgKHN0 bXQpKQogCSAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLmMgYi9nY2Mv dHJlZS1zc2EuYwppbmRleCA0Y2M0MDBkM2MyZWIuLjBmYmE0MDRiYWJlOSAxMDA2NDQKLS0tIGEv Z2NjL3RyZWUtc3NhLmMKKysrIGIvZ2NjL3RyZWUtc3NhLmMKQEAgLTEzMjUsNiArMTMyNSw0NiBA QCBzc2FfdW5kZWZpbmVkX3ZhbHVlX3AgKHRyZWUgdCwgYm9vbCBwYXJ0aWFsKQogICBpZiAoZ2lt cGxlX25vcF9wIChkZWZfc3RtdCkpCiAgICAgcmV0dXJuIHRydWU7CiAKKyAgLyogVGhlIHZhbHVl IGlzIHVuZGVmaW5lZCBpZiB0aGUgZGVmaW5pdGlvbiBzdGF0ZW1lbnQgaXMgYSBjYWxsCisgICAg IHRvIC5ERUZFUlJFRF9JTklUIGZ1bmN0aW9uLiAgKi8KKyAgaWYgKGdpbXBsZV9jYWxsX2ludGVy bmFsX3AgKGRlZl9zdG10LCBJRk5fREVGRVJSRURfSU5JVCkpCisgICAgcmV0dXJuIHRydWU7CisK KyAgLyogVGhlIHZhbHVlIGlzIHBhcnRpYWxseSB1bmRlZmluZWQgaWYgdGhlIGRlZmluaXRpb24g c3RhdGVtZW50IGlzCisgICAgIGEgUkVBTFBBUlRfRVhQUiBvciBJTUFHUEFSVF9FWFBSIGFuZCBp dHMgb3BlcmFuZCBpcyBkZWZpbmVkIGJ5CisgICAgIHRoZSBjYWxsIHRvIC5ERUZFUlJFRF9JTklU IGZ1bmN0aW9uLiAgVGhpcyBpcyBmb3IgaGFuZGxpbmcgdGhlCisgICAgIGZvbGxvd2luZyBjYXNl OgorCisgIDEgdHlwZWRlZiBfQ29tcGxleCBmbG9hdCBDOworICAyIEMgZm9vIChpbnQgY29uZCkK KyAgMyB7CisgIDQgICBDIGY7CisgIDUgICBfX2ltYWdfXyBmID0gMDsKKyAgNiAgIGlmIChjb25k KQorICA3ICAgICB7CisgIDggICAgICAgX19yZWFsX18gZiA9IDE7CisgIDkgICAgICAgcmV0dXJu IGY7CisgMTAgICAgIH0KKyAxMSAgIHJldHVybiBmOworIDEyIH0KKworICAgIHdpdGggLWZ0cml2 aWFsLWF1dG8tdmFyLWluaXQsIGNvbXBpbGVyIHdpbGwgaW5zZXJ0IHRoZSBmb2xsb3dpbmcKKyAg ICBhcnRpZmljaWFsIGluaXRpYWxpemF0aW9uOgorICBmID0gLkRFRkVSUkVEX0lOSVQgKGYsIDIp OworICBfMSA9IFJFQUxQQVJUX0VYUFIgPGY+OworCisgICAgd2Ugc2hvdWxkIHRyZWF0IHRoZSBk ZWZpbml0aW9uIF8xID0gUkVBTFBBUlRfRVhQUiA8Zj4gYXMgdW5kZWZpbmVkLiAgKi8KKyAgaWYg KHBhcnRpYWwgJiYgaXNfZ2ltcGxlX2Fzc2lnbiAoZGVmX3N0bXQpCisgICAgICAmJiAoZ2ltcGxl X2Fzc2lnbl9yaHNfY29kZSAoZGVmX3N0bXQpID09IFJFQUxQQVJUX0VYUFIKKwkgIHx8IGdpbXBs ZV9hc3NpZ25fcmhzX2NvZGUgKGRlZl9zdG10KSA9PSBJTUFHUEFSVF9FWFBSKSkKKyAgICB7Cisg ICAgICB0cmVlIHJlYWxfaW1hZ19wYXJ0ID0gVFJFRV9PUEVSQU5EIChnaW1wbGVfYXNzaWduX3Jo czEgKGRlZl9zdG10KSwgMCk7CisgICAgICBpZiAoVFJFRV9DT0RFIChyZWFsX2ltYWdfcGFydCkg PT0gU1NBX05BTUUKKwkgJiYgZ2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAoU1NBX05BTUVfREVGX1NU TVQgKHJlYWxfaW1hZ19wYXJ0KSwKKwkJCQkgICAgSUZOX0RFRkVSUkVEX0lOSVQpKQorCXJldHVy biB0cnVlOworICAgIH0KKwogICAvKiBDaGVjayBpZiB0aGUgY29tcGxleCB3YXMgbm90IG9ubHkg cGFydGlhbGx5IGRlZmluZWQuICAqLwogICBpZiAocGFydGlhbCAmJiBpc19naW1wbGVfYXNzaWdu IChkZWZfc3RtdCkKICAgICAgICYmIGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKGRlZl9zdG10KSA9 PSBDT01QTEVYX0VYUFIpCi0tIAoyLjI3LjAKCg== --_004_52E2927714034755901A528116C43FB8oraclecom_--