From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id D42CD3858D20 for ; Mon, 22 Jan 2024 14:52:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D42CD3858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D42CD3858D20 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1705935157; cv=pass; b=UBVE01AnLI12ZMMWGiIiQWo158MTTz6L1ZurOkSBsXPGUixcB5iOA3AierEjzO0F6VAx9eXlYUZg7oqOy+dyGEd22AkmbyBO5+7QEvyr47NgqAvaH1TvgI2+LX3E8AjI3aXOC+NoPTAsT/UHjbc4GW4bazd+Ij47O2IxJ+1s8ew= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1705935157; c=relaxed/simple; bh=us1+WRnjsw6GipYrgrLokzJve6ZlOs5BJNxcXJavrYY=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=oYgCwaM6MWcp23X5jNimRzvATbmErYaHChQKDL9r47YSuAp1c5Ou/ranJzkwkGVb69diRX4dA4Obl7WSXYN1YFV2d99yjJllTfiZDbZj62FpBHR7pAAxMXsDJv4kNByJ578PHto4k8QDIVuXBL3WYOuONQe4ZE9a4Almi9gx5n0= ARC-Authentication-Results: i=2; server2.sourceware.org Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 40MAY5d1031573; Mon, 22 Jan 2024 14:52:33 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=corp-2023-11-20; bh=us1+WRnjsw6GipYrgrLokzJve6ZlOs5BJNxcXJavrYY=; b=cP+tG6bihqO+HH5peIRgXIuAwuTOVMhtqeJpxMXJ6J9YMIuSGTDnSxMHTJ92btf23686 MU43QO5s47n2xTut5fbHD0V8R3zHiV2VBtTySJp0xXtpx8Kz/bvKRaKecuHVlog5Oqba sbneA8r3O4ijQyAnEWAKb3aHNQb7lobHO+kFkdfb3PsVAy46xQV+ixNGTryGGIiKhm8/ t1Zq6Hf0R9+y37vAchufplGn0X/Yu4dWDCKvzZkzMEBhy9bvxolcm4RsjgH7dtcFx15W NVC5WaW/9kWAY4Uv0qoSq3dpBWhYI6ODFiN5bn27KB2P8ASqi/NFF2buQ7hHRElAdygw hA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3vr7n7uppd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Jan 2024 14:52:33 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 40MDtTu4013652; Mon, 22 Jan 2024 14:52:32 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam04lp2041.outbound.protection.outlook.com [104.47.73.41]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3vs320rxm8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Jan 2024 14:52:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E58EVm6ucBeguPX6oGVbzJG7q0XA1aPtwK756T4JC7Nk13BdL3slp3bJQ8ILwb7KxKiO2RogZDxrMMBTkR9eBu6rmYwr4TQGIAz4sPnRp0i6+SOdZ72Vbp9g79e9Bn9o1Nj+dtoKXYXRL5Pf/8nhOaaxqYZFfhEQA5Q6c/mImKlIYylRdUkjG5PSwQj64rbRmZkrAE9zlS8/lDmnhQqdgG2kgnuW4nC03qxHm9rk61s0v0TV9GTC0jtUVSaKSzISsJDTom/s+bbgZzAIk4SWPHzPHLbdMjMW4vOwDLG4nkFgQAb0zMyksid9rE8vi/CxmUfIX8v8/dxTdu1eUGqU5g== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=us1+WRnjsw6GipYrgrLokzJve6ZlOs5BJNxcXJavrYY=; b=TiH0YLVuL681k9IKq1LH0GiAKJjTUAOaSeSxkDp7kkrgRtpMTvzSmFWmll35HzSf9TpZF4XQxWW4lz7cO8mCSfkScNWPU1cDiro3rretFwWYP7KT1dXS0mALsUAuacet6Dts0uZ9Fb2eQBMG1dVJGA8RmkLzcpAqagtdJvluWfniGjDpEo5NTxgeR2Av1cX8FqPp2e50a+qQMk2RHf8zyz/ebLwD08EaIoWrpwG5jp4lkgs764A85FI0SRCzuspUUCwZ9ES0SeM1Xrfy4T8kD5rMpPDzM1iIlIXKVimnHfitTOGDpAW/s7Zy44/FN75fyaAsvoR2IofNuCMNyXq0/Q== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=us1+WRnjsw6GipYrgrLokzJve6ZlOs5BJNxcXJavrYY=; b=N9W4+nF8QOqTHGkhYexYMCcy3MwFvTNnrYNcl1eSrEYMLNzb16a6RdTgah9yx01dK06BeLj6yw5I4KGVI/6C2JTxnHk1lBfOik8B41s0zyjPAw7LiXzzlKzWAly3gzY+NHH6cs6iM5XfnvPnrK0xqHZyF2lAd+kquXZD9Nk6hrQ= Received: from CH3PR10MB7957.namprd10.prod.outlook.com (2603:10b6:610:1bf::19) by CH3PR10MB7355.namprd10.prod.outlook.com (2603:10b6:610:131::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.34; Mon, 22 Jan 2024 14:52:30 +0000 Received: from CH3PR10MB7957.namprd10.prod.outlook.com ([fe80::6234:e7a1:b517:c44]) by CH3PR10MB7957.namprd10.prod.outlook.com ([fe80::6234:e7a1:b517:c44%6]) with mapi id 15.20.7202.031; Mon, 22 Jan 2024 14:52:30 +0000 From: Qing Zhao To: Richard Biener CC: "jakub@redhat.com" , gcc Patches Subject: Re: HELP: Questions on unshare_expr Thread-Topic: HELP: Questions on unshare_expr Thread-Index: AQHaRW+uruqoybhuuUCPXa2beNzsb7DWXdUAgAARQACABDFGAIACSSOAgACsa4CAAAA8AIACGPkAgAE6Q4CAAHQJgIAEJEkAgAB4nYA= Date: Mon, 22 Jan 2024 14:52:29 +0000 Message-ID: <4AFCA347-8A7C-4A96-B76A-33529E20D546@oracle.com> References: <50C8811D-9C2A-4FFB-9FC5-D24C5A76F868@oracle.com> <70C34042-B741-4697-9524-396CB9D40DF8@gmail.com> <4D91B027-0B34-4DB4-9338-1B9DE6E2EB00@oracle.com> <63DEF4CB-18DA-48C5-842B-B743EF365B24@oracle.com> <97EDB4A5-1A68-4D46-A060-F550AEB2812A@oracle.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3731.700.6) x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH3PR10MB7957:EE_|CH3PR10MB7355:EE_ x-ms-office365-filtering-correlation-id: b6031063-de81-40b9-4ca2-08dc1b59c1ff x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: rg12FgGFmHohpNzSb8h/NWI0CeG6kObC3M4MciRiHq7xcm4hM+GwOGQD2HGPil9tG9KnQBvBjplaTZls/B6/jsDeRZ1TkL1usmzNmPfDF+3N2H32sAEfKGgXUM2Yj6wjU29RKdY+ePf8ll/AROVfvjIZetArtO6lGqfJecr6tOS7SsT4UXIJLO5xwuE7g1t3JWT7NFWQfWRNkuKrXsLc0VAjWw65cZkuyXFWISTl3j8uU1wy7ih1yzuk8wkqHlGkxN60iQPVu0a6XSrulXujdnKfFAISQk1Npv3ud/hzONA5o41LcCh/pYqJop/fw60+TzDcR89rkwNaRC5137Tg7fTJ3xvdh4vghl4ywclaJzjDxoe6r9ZEwtgYpFt/t9EqAo6GafXKEHq3isMT+1f36FlmqLqvooLR/jG+jgsXeZbGj9zaKUT7l2i+uo5jal6oo+ung+ya6nQkhlXzt+1FULixe/8kY2tg3CP0cfWgsIb5L5WJKv1aBUEDnRtPQM+gUDixGZmZ3NaWqNwAQlK7ixt/wKrEyYDoDPn8cmijX2hF0GkWQtaAnEk64W4G6pKBn9WZJES1GQutTqBYyl5zJ5JR27D3IlP/8UTj/ps2n84CYxwkA8lwL0I6WPWjYes14EpG4YW+Ms/t0ZrX9L4MIGQaVtI9RqCtIdTfKKBCqse4jedgoveojfHe6mi57vwD x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR10MB7957.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(136003)(376002)(346002)(366004)(39860400002)(396003)(230922051799003)(64100799003)(451199024)(186009)(1800799012)(38100700002)(122000001)(2906002)(30864003)(33656002)(36756003)(41300700001)(86362001)(316002)(6916009)(91956017)(71200400001)(76116006)(66556008)(66946007)(66476007)(66446008)(64756008)(478600001)(54906003)(6512007)(966005)(6486002)(4326008)(83380400001)(8936002)(5660300002)(53546011)(6506007)(2616005)(8676002)(44832011)(38070700009)(45980500001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?elBKTkhYa1BrbzA1M0MxWVpXRFhSd0xEZWN3QnRhZmJuVHltbnU4cEhtQzlF?= =?utf-8?B?aWNRaTRDM2N6ZnFTZFREeEhUbXhtTVM0eXJsbUtjYURhbTZUMXdkbEZQc014?= =?utf-8?B?Nzc0bmxuajVYTTNLZXNTc3lDSWhqZDdYVlczSGFHMm10T0dFTnE4ZEZ6ZFVQ?= =?utf-8?B?ZmpkRUJKajdHeG9uVUtwbFZROVFaemIyWnhQaGRYa2VjZkYxRGVtSVI1TGh4?= =?utf-8?B?Ukt3UU0rTUd1S3pCMzlOU0xGMzBSd24xNkwxbWkvejJXbmZTeVdxaGVrN25X?= =?utf-8?B?L1FRUThVcXVVaDNmOWRsTHZaek0vZElscjk0QU9UNWxmYUpDd3dwOEpsMGpy?= =?utf-8?B?eUZub05tMkwxU3R0Y1J5YWNYbHVEMmU0akYwOFlDV1BuNXJNMjlBeSs4Nzc2?= =?utf-8?B?V0t1OTA0cHZJSHF4YnFiZ21nOGdyc2pKb1FyMDArbG1aM1NxY3JxcCtTWTQr?= =?utf-8?B?TEhIRndWSnBGTG05a1FLZEE1RTNPaXJmVjFyTkw0OXE0NlVVdnJBeUpJZXhM?= =?utf-8?B?WDNKOGUzU3FmVkZVaklWcGFJSWVhQXloSjVOdWIrM0xFZFhhYWFscUx1WDFM?= =?utf-8?B?TnljS1JMNGxlNTJYeE9lUWdNd2E4WXZzdWRRRWZ2MGhxUEx6NmYzS01JbGp2?= =?utf-8?B?TzJrK3dFM3JRVFZjaG5WeldzYlpBWmxXUWxJL1AyUXJ6T2swYXlodFNvb0di?= =?utf-8?B?L28xbGxCQjFIcUg2QkNZMVRXQktlRURuYURweE5LQjE5Y0wzNW5MWFZjSmhH?= =?utf-8?B?TXlJclpianlwYURRRndSUWdEYmhPTnhHSnZpUEs3dkF1WFBKOHZnaUpnOXVh?= =?utf-8?B?dEdpQ0VQaEs5dTJuYXhEcEFyU2RieFFHWW9PTzVaem84LzduLzY5RUtrV25Y?= =?utf-8?B?MWxRN29mV2lUNi83TGh5Ung5ZXF0aGcrZFZVY1RyU0FnT0pobjU5OHd6bEYy?= =?utf-8?B?YXBTcFdBMWR2VmVVS0M3SjhSb1A1WWNtLzRhWDNvKy9jNHhCem0vazJxa2NS?= =?utf-8?B?dlVXTW9vM2lqY1l1bFpUbWhaZFhJdlBNYlJwazFaK29lemhVTndNUE90RXo2?= =?utf-8?B?bnlDRktPdFZiRmorb2ZqK3UrWDNDbEZ3OVNlaUJNZXhrZVhEU2J5OW8vejBV?= =?utf-8?B?M2VsaS9zTnU1cU1mZVRCUlZKZFNMUDV5V3J4bGRubzRpcm1SQVB5SDVOSnM4?= =?utf-8?B?SEE0RXcwbEgxTWMwMXV1dFJKSGYzT2NGYk1wUk1KbGN5SWV1SFNMMnRwZXp2?= =?utf-8?B?emNXN2N5Rm5jNERvdk1xQXpkeGV4RHFJQ25qWEJ4alFrOWZ6YUpCUXpPTHF3?= =?utf-8?B?Rm1FYXovVGVnS0hZSjdFeVllNjlJRlh4UFAvUzFNNjJCbzZ4V2FGb1krdDE4?= =?utf-8?B?R0hpWUI1b25MZ0Vlb2hvcjgyK21nRlE4bnRlZEF6UnFqalR6UUdhWWNYMURC?= =?utf-8?B?RFJtZmw4Q0JDY29uMWJZdk5JeE40a09VK2Z1K00vc2dMUCtSVmdGU2ZNcEZn?= =?utf-8?B?aXBRY1I5TGRzUDNnbzBvWHpkTUFLTTVOd3NFdjBIeWI4RHlUamp0N1ZHVzNr?= =?utf-8?B?UmwvdkVoUGVjaE5OWE54TmQ3ZEdqUGFHRzRTNWRFbmFISXBvcnR6Vmo2K2ZN?= =?utf-8?B?TE9IY3diWlJ0eWt1VlVuRlp6b1AvNk0rWTBXYVVaSUtHbXhSbkVyT2txM0hx?= =?utf-8?B?L1M1RGlhK3VNZEpPMTk4L1R2N2htK3JXOEtmWVpqM2hRRDhwZ2szSCtPd3M2?= =?utf-8?B?YmJsZXNuOWhFWGg1akROV2sxdS8zc2MvTXAvYVAzdk5qNWpmWkUzTWsxMkxw?= =?utf-8?B?ei9HSVpXVVBOd0w3cjVVVTI3anBZdlZUT3l2aWFrMHE0TGU0a0tSTVVNb1BF?= =?utf-8?B?MjRNcWU5UUUvT0xFUS8ySkJNMmtVZkxqQStuMTNXMFREbWU3UmlYOHUwQTlP?= =?utf-8?B?M2pmMUpjYStOZjRwa1EvdWVtUSttL2crY053ZGtBZFJ2TG5Vb1FDbXNadWhv?= =?utf-8?B?cEVFdjQ0d0ZsUFkwK3FCc3JpWHZGUGhmdnYyMllyR1dZaGMwdmVBdFo3SXlR?= =?utf-8?B?YzJnSHkyTnhEb3BOQjFMaE9VRUlIZGRqOFRwVVNjYlFCclRzQWhpYW9yeUwy?= =?utf-8?B?SjJXWWp5VmhLV2lXZVd6eXBBUUhwVWtBbmgvWnBlOTBseENYRGVOcmh0ZTMy?= =?utf-8?Q?tC2ZvZLA/GgxfmrEZHvjYBA=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <91D83A3180BEC34380717B126CEF70B0@namprd10.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 7nuVliF+YZhgtjf5/6JIxJkARyf2o+iCw5bLODgLsHieQSPn9if0wmfx/pZ2iDvm/NX4/+UxkvtCCUq4NEMVPf5IEyz6Q2lC20xe4uyl1ArWU4otIPuz7L0Tv3e7KOZHRL2IuzuTu0edxzZmUJQ3JSbLI9EDbvHCRbgglpgB+VeIpLzsynzJx9i7xitGcIgdotmgCqezrRiy2iXzrIzcEgknw1El003XbjaMQ9zstRVSYW0vyfXhGYYRVAOr5M16J77kBoGMs1J/NXSav4vYR7D4auhLwesMZKQKPFYuEDFM7XoBXVRbQw9FEXJxXDcZi4m2nHx4qx2Svk1PTLr7CmotpbPf0OGOUqdHEd1l3cj6czgOXL6f3tu8+BjGx3PONa7UeXIdSnu+CA2yXR+oc9twbhT6y+qcLi67qZ4FwZt5XRxpBI/+mZEeHAdX9zzC71b4zHMfDmaDlBgpgDmjATwtthpQuBt/KH9FUnRPEj9CeFI2lfXcz6FK1UKos9qs16w/SLOjiVjWjsYY7o775AIzj4X3pIKwoT7is4doxoT3/7/lyqXswelQ5IE3mjbuPQ6AdVXZVL/IthmLfXy1Bc/isBa0nUT+FkSTLsj32DA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7957.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b6031063-de81-40b9-4ca2-08dc1b59c1ff X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Jan 2024 14:52:29.9932 (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: lHi4sx1OGeKuDjP2QCGdIKVxppk0dK1d57i6Vv3nV0sbzN6tNGp59uWGYI4Ha4G9xp4rUbUgeRA8z9y9DYLXLg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB7355 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-01-22_05,2024-01-22_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 suspectscore=0 phishscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 spamscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2401220101 X-Proofpoint-GUID: Pn-0I-yd7xNP-vsJiob_HyPAhVVEyi63 X-Proofpoint-ORIG-GUID: Pn-0I-yd7xNP-vsJiob_HyPAhVVEyi63 X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,KAM_SHORT,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,WEIRD_PORT autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: DQoNCj4gT24gSmFuIDIyLCAyMDI0LCBhdCAyOjQwIEFNLCBSaWNoYXJkIEJpZW5lciA8cmljaGFy ZC5ndWVudGhlckBnbWFpbC5jb20+IHdyb3RlOg0KPiANCj4gT24gRnJpLCBKYW4gMTksIDIwMjQg YXQgNToyNuKAr1BNIFFpbmcgWmhhbyA8cWluZy56aGFvQG9yYWNsZS5jb20+IHdyb3RlOg0KPj4g DQo+PiANCj4+IA0KPj4+IE9uIEphbiAxOSwgMjAyNCwgYXQgNDozMCBBTSwgUmljaGFyZCBCaWVu ZXIgPHJpY2hhcmQuZ3VlbnRoZXJAZ21haWwuY29tPiB3cm90ZToNCj4+PiANCj4+PiBPbiBUaHUs IEphbiAxOCwgMjAyNCBhdCAzOjQ24oCvUE0gUWluZyBaaGFvIDxxaW5nLnpoYW9Ab3JhY2xlLmNv bT4gd3JvdGU6DQo+Pj4+IA0KPj4+PiANCj4+Pj4gDQo+Pj4+PiBPbiBKYW4gMTcsIDIwMjQsIGF0 IDE6NDMgQU0sIFJpY2hhcmQgQmllbmVyIDxyaWNoYXJkLmd1ZW50aGVyQGdtYWlsLmNvbT4gd3Jv dGU6DQo+Pj4+PiANCj4+Pj4+IE9uIFdlZCwgSmFuIDE3LCAyMDI0IGF0IDc6NDLigK9BTSBSaWNo YXJkIEJpZW5lcg0KPj4+Pj4gPHJpY2hhcmQuZ3VlbnRoZXJAZ21haWwuY29tPiB3cm90ZToNCj4+ Pj4+PiANCj4+Pj4+PiBPbiBUdWUsIEphbiAxNiwgMjAyNCBhdCA5OjI24oCvUE0gUWluZyBaaGFv IDxxaW5nLnpoYW9Ab3JhY2xlLmNvbT4gd3JvdGU6DQo+Pj4+Pj4+IA0KPj4+Pj4+PiANCj4+Pj4+ Pj4gDQo+Pj4+Pj4+PiBPbiBKYW4gMTUsIDIwMjQsIGF0IDQ6MzEgQU0sIFJpY2hhcmQgQmllbmVy IDxyaWNoYXJkLmd1ZW50aGVyQGdtYWlsLmNvbT4gd3JvdGU6DQo+Pj4+Pj4+PiANCj4+Pj4+Pj4+ PiBBbGwgbXkgcXVlc3Rpb25zIGZvciB1bnNoYXJlX2V4cHIgcmVsYXRlIHRvIGEgIExUTyBidWcg dGhhdCBJIGN1cnJlbnRseSBzdHVjayB3aXRoDQo+Pj4+Pj4+Pj4gd2hlbiB1c2luZyAuQUNDRVNT X1dJVEhfU0laRSBpbiBib3VuZCBzYW5pdGl6ZXIgKG9ubHkgd2l0aCAtZmx0bywgd2l0aG91dCAt Zmx0bywgbm8gaXNzdWUpOg0KPj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IFtvcGNAcWluemhhby1hYXJj aDY0LW9sOCBnY2NdJCBzaCB0DQo+Pj4+Pj4+Pj4gZHVyaW5nIElQQSBwYXNzOiBtb2RyZWYNCj4+ Pj4+Pj4+PiB0LmM6MjA6MTogaW50ZXJuYWwgY29tcGlsZXIgZXJyb3I6IHRyZWUgY29kZSDigJhz c2FfbmFtZeKAmSBpcyBub3Qgc3VwcG9ydGVkIGluIExUTyBzdHJlYW1zDQo+Pj4+Pj4+Pj4gMHgx NGMzOTkzIGx0b193cml0ZV90cmVlDQo+Pj4+Pj4+Pj4gICAgIC4uLy4uL2xhdGVzdC1nY2Mtd3Jp dGUvZ2NjL2x0by1zdHJlYW1lci1vdXQuY2M6NTYxDQo+Pj4+Pj4+Pj4gMHgxNGMzYWViIGx0b19v dXRwdXRfdHJlZV8xDQo+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gQW5kIHRoZSB2YWx1ZSBvZiB0aGUg dHJlZSBub2RlIHRoYXQgdHJpZ2dlcmVkIHRoZSBJQ0UgaXM6DQo+Pj4+Pj4+Pj4gKGdkYikgY2Fs bCBkZWJ1Z190cmVlKGV4cHIpDQo+Pj4+Pj4+Pj4gPHNzYV9uYW1lIDB4ZmZmZmY1NzYxZTYwIHR5 cGUgPGVycm9yX21hcmsgMHhmZmZmZjU2YzBlNTg+DQo+Pj4+Pj4+Pj4gbm90aHJvdw0KPj4+Pj4+ Pj4+IGRlZl9zdG10DQo+Pj4+Pj4+Pj4gdmVyc2lvbjoxMyBpbi1mcmVlLWxpc3Q+DQo+Pj4+Pj4+ Pj4gDQo+Pj4+Pj4+Pj4gSXMgdGhlcmUgYW55IGdvb2Qgd2F5IHRvIGRlYnVnIExUTyBidWc/DQo+ Pj4+Pj4+PiANCj4+Pj4+Pj4+IFRoaXMgaGFwcGVucyB1c3VhbGx5IHdoZW4geW91IGhhdmUgYSBW TEEgdHlwZSBhbmQgaXRzIHR5cGUgZmllbGRzIGFyZSBub3QNCj4+Pj4+Pj4+IHByb3Blcmx5IGdp bXBsaWZpZWQgd2hpY2ggdXN1YWxseSBoYXBwZW5zIGJlY2F1c2UgdGhlIGZyb250ZW5kIGZhaWxz IHRvDQo+Pj4+Pj4+PiBpbnNlcnQgYSBnaW1wbGlmaWNhdGlvbiBwb2ludCBmb3IgaXQgKGEgREVD TF9FWFBSKS4NCj4+Pj4+Pj4gDQo+Pj4+Pj4+IEkgZm91bmQgYW4gb2xkIGdjYyBidWcNCj4+Pj4+ Pj4gaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9OTcxNzINCj4+ Pj4+Pj4gSUNFOiB0cmVlIGNvZGUg4oCYc3NhX25hbWXigJkgaXMgbm90IHN1cHBvcnRlZCBpbiBM VE8gc3RyZWFtcyBzaW5jZSByMTEtMzMwMy1nNjQ1MGYwNzM4OGY5ZmU1Nw0KPj4+Pj4+PiANCj4+ Pj4+Pj4gV2hpY2ggaXMgdmVyeSBzaW1pbGFyIHRvIHRoZSBidWcgSSBhbSBoYXZpbmcgcmlnaHQg bm93Lg0KPj4+Pj4+PiANCj4+Pj4+Pj4gQWZ0ZXIgZnVydGhlciBzdHVkeSwgSSBzdXNwZWN0IHRo YXQgdGhlIGlzc3VlIEkgYW0gaGF2aW5nIHJpZ2h0IG5vdyB3aXRoIHRoZSBMVE8gc3RyZWFtaW5n IGFsc28NCj4+Pj4+Pj4gcmVsYXRlIHRvIOKAnHVuc2hhcmVfZXhwcuKAnSwg4oCcc2F2ZV9leHBy 4oCdLCBhbmQgdGhlIGNvbWJpbmF0aW9uIG9mIHRoZXNlIHR3bywgSSBzdXNwZWN0IHRoYXQNCj4+ Pj4+Pj4gdGhlIGN1cnJlbnQgZ2NjIGNhbm5vdCBoYW5kbGUgdGhlIGNvbWJpbmF0aW9uIG9mIHRo ZXNlIHR3byBjb3JyZWN0bHkgZm9yIG15IGNhc2UuDQo+Pj4+Pj4+IA0KPj4+Pj4+PiBNeSB0ZXN0 aW5nIGNhc2UgaXM6DQo+Pj4+Pj4+IA0KPj4+Pj4+PiAjaW5jbHVkZSA8c3RkbGliLmg+DQo+Pj4+ Pj4+IHZvaWQgX19hdHRyaWJ1dGVfXygoX19ub2lubGluZV9fKSkgc2V0dXBfYW5kX3Rlc3Rfdmxh IChpbnQgbjEsIGludCBuMiwgaW50IG0pDQo+Pj4+Pj4+IHsNCj4+Pj4+Pj4gc3RydWN0IGZvbyB7 DQo+Pj4+Pj4+ICAgICBpbnQgbjsNCj4+Pj4+Pj4gICAgIGludCBwW11bbjJdW24xXSBfX2F0dHJp YnV0ZV9fKChjb3VudGVkX2J5KG4pKSk7DQo+Pj4+Pj4+IH0gKmY7DQo+Pj4+Pj4+IA0KPj4+Pj4+ PiBmID0gKHN0cnVjdCBmb28gKikgbWFsbG9jIChzaXplb2Yoc3RydWN0IGZvbykgKyBtKnNpemVv ZihpbnRbbjJdW24xXSkpOw0KPj4+Pj4+PiBmLT5uID0gbTsNCj4+Pj4+Pj4gZi0+cFttXVtuMl1b bjFdPTE7DQo+Pj4+Pj4+IHJldHVybjsNCj4+Pj4+Pj4gfQ0KPj4+Pj4+PiANCj4+Pj4+Pj4gaW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCj4+Pj4+Pj4gew0KPj4+Pj4+PiBzZXR1cF9h bmRfdGVzdF92bGEgKDEwLCAxMSwgMjApOw0KPj4+Pj4+PiByZXR1cm4gMDsNCj4+Pj4+Pj4gfQ0K Pj4+Pj4+PiANCj4+Pj4+Pj4gRmFpbGVkIHdpdGgNCj4+Pj4+Pj4gbXlfZ2NjIC1PcyAtZnNhbml0 aXplPWJvdW5kcyAtZmx0bw0KPj4+Pj4+PiANCj4+Pj4+Pj4gSWYgY2hhbmdpbmcgZWl0aGVyIG4x IG9yIG4yIHRvIGEgY29uc3RhbnQsIHRoZSB0ZXN0aW5nIHBhc3NlZC4NCj4+Pj4+Pj4gSWYgZGVs ZXRpbmcgLWZsdG8sIHRoZSB0ZXN0aW5nIHBhc3NlZCB0b28uDQo+Pj4+Pj4+IA0KPj4+Pj4+PiBJ IGRvdWJsZSBjaGVja2VkIG15IGNvZGUgcGVyIHRoZSBzdWdnZXN0aW9ucyBwcm92aWRlZCBieSB5 b3UgYW5kIEpha3ViIGluIHRoaXMNCj4+Pj4+Pj4gZW1haWwgdGhyZWFkLCBhbmQgSSB0aGluayB0 aGUgY29kZSBzaG91bGQgYmUgZmluZS4NCj4+Pj4+Pj4gDQo+Pj4+Pj4+IFRoZSBjb2RlIGlzIGZv bGxvd2luZzoNCj4+Pj4+Pj4gDQo+Pj4+Pj4+ID09PT09DQo+Pj4+Pj4+IDUwNCAvKiBJbnN0cnVt ZW50IGFycmF5IGJvdW5kcyBmb3IgSU5ESVJFQ1RfUkVGcyB3aG9zZSBwb2ludGVycyBhcmUNCj4+ Pj4+Pj4gNTA1ICAgIFBPSU5URVJfUExVU19FWFBScyBvZiBjYWxscyB0byAuQUNDRVNTX1dJVEhf U0laRS4gV2UgY3JlYXRlIHNwZWNpYWwNCj4+Pj4+Pj4gNTA2ICAgIGJ1aWx0aW5zIHRoYXQgZ2V0 cyBleHBhbmRlZCBpbiB0aGUgc2Fub3B0IHBhc3MsIGFuZCBtYWtlIGFuIGFycmF5DQo+Pj4+Pj4+ IDUwNyAgICBkaW1lbnNpb24gb2YgaXQuICBBUlJBWSBpcyB0aGUgcG9pbnRlciB0byB0aGUgYmFz ZSBvZiB0aGUgYXJyYXksDQo+Pj4+Pj4+IDUwOCAgICB3aGljaCBpcyBhIGNhbGwgdG8gLkFDQ0VT U19XSVRIX1NJWkUsICpPRkZTRVQgaXMgdGhlIG9mZnNldCB0byB0aGUNCj4+Pj4+Pj4gNTA5ICAg IGJlZ2lubmluZyBvZiBhcnJheS4NCj4+Pj4+Pj4gNTEwICAgIFJldHVybiBOVUxMX1RSRUUgaWYg bm8gaW5zdHJ1bWVudGF0aW9uIGlzIGVtaXR0ZWQuICAqLw0KPj4+Pj4+PiA1MTENCj4+Pj4+Pj4g NTEyIHRyZWUNCj4+Pj4+Pj4gNTEzIHVic2FuX2luc3RydW1lbnRfYm91bmRzX2luZGlyZWN0X3Jl ZiAobG9jYXRpb25fdCBsb2MsIHRyZWUgYXJyYXksIHRyZWUgKm9mZnNldCkNCj4+Pj4+Pj4gNTE0 IHsNCj4+Pj4+Pj4gNTE1ICAgaWYgKCFpc19hY2Nlc3Nfd2l0aF9zaXplX3AgKGFycmF5KSkNCj4+ Pj4+Pj4gNTE2ICAgICByZXR1cm4gTlVMTF9UUkVFOw0KPj4+Pj4+PiA1MTcgICB0cmVlIGJvdW5k ID0gZ2V0X2JvdW5kX2Zyb21fYWNjZXNzX3dpdGhfc2l6ZSAoYXJyYXkpOw0KPj4+Pj4+PiA1MTgg ICAvKiBUaGUgdHlwZSBvZiB0aGUgY2FsbCB0byAuQUNDRVNTX1dJVEhfU0laRSBpcyBhIHBvaW50 ZXIgdHlwZSB0bw0KPj4+Pj4+PiA1MTkgICAgICB0aGUgZWxlbWVudCBvZiB0aGUgYXJyYXkuICAq Lw0KPj4+Pj4+PiA1MjAgICB0cmVlIGVsZW1lbnRfc2l6ZSA9IFRZUEVfU0laRV9VTklUIChUUkVF X1RZUEUgKFRSRUVfVFlQRSAoYXJyYXkpKSk7DQo+Pj4+Pj4+IDUyMSAgIGdjY19hc3NlcnQgKGJv dW5kKTsNCj4+Pj4+Pj4gNTIyDQo+Pj4+Pj4+IDUyMyAgIC8qIEdpdmVuIHRoZSBvZmZzZXQsIGFu ZCB0aGUgc2l6ZSBvZiBlYWNoIGVsZW1lbnQsIHRoZSBpbmRleCBjYW4gYmUNCj4+Pj4+Pj4gNTI0 ICAgICAgY29tcHV0ZWQgYXM6IG9mZnNldC9lbGVtZW50X3NpemUuICAqLw0KPj4+Pj4+PiA1MjUg ICAqb2Zmc2V0ID0gc2F2ZV9leHByICgqb2Zmc2V0KTsNCj4+Pj4+Pj4gNTI2ICAgdHJlZSBpbmRl eCA9IGZvbGRfYnVpbGQyIChFWEFDVF9ESVZfRVhQUiwNCj4+Pj4+Pj4gNTI3ICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemV0eXBlLCAqb2Zmc2V0LA0KPj4+Pj4+PiA1MjggICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaGFyZV9leHByIChlbGVtZW50X3NpemUpKTsNCj4+Pj4+Pj4g NTI5ICAgLyogQ3JlYXRlIGEgIihUICopIDAiIHRyZWUgbm9kZSB0byBkZXNjcmliZSB0aGUgb3Jp Z2luYWwgYXJyYXkgdHlwZS4NCj4+Pj4+Pj4gNTMwICAgICAgV2UgZ2V0IHRoZSBvcmlnaW5hbCBh cnJheSB0eXBlIGZyb20gdGhlIGZpcnN0IGFyZ3VtZW50IG9mIHRoZSBjYWxsIHRvDQo+Pj4+Pj4+ IDUzMSAgICAgIC5BQ0NFU1NfV0lUSF9TSVpFIChSRUYsIENPVU5URURfQllfUkVGLCAxLCBudW1f Ynl0ZXMsIC0xKS4NCj4+Pj4+Pj4gNTMyDQo+Pj4+Pj4+IDUzMyAgICAgIE9yaWdpbmFsbHksIFJF RiBpcyBhIENPTVBPTkVOVF9SRUYgd2l0aCB0aGUgb3JpZ2luYWwgYXJyYXkgdHlwZSwNCj4+Pj4+ Pj4gNTM0ICAgICAgaXQgd2FzIGNvbnZlcnRlZCB0byBhIHBvaW50ZXIgdG8gYW4gQUREUl9FWFBS LCBhbmQgdGhlIEFERFJfRVhQUidzDQo+Pj4+Pj4+IDUzNSAgICAgIGZpcnN0IG9wZXJhbmQgaXMg dGhlIG9yaWdpbmFsIENPTVBPTkVOVF9SRUYuICAqLw0KPj4+Pj4+PiA1MzYgICB0cmVlIHJlZiA9 IENBTExfRVhQUl9BUkcgKGFycmF5LCAwKTsNCj4+Pj4+Pj4gNTM3ICAgdHJlZSBhcnJheV90eXBl DQo+Pj4+Pj4+IDUzOCAgICAgPSB1bnNoYXJlX2V4cHIgKFRSRUVfVFlQRSAoVFJFRV9PUEVSQU5E IChUUkVFX09QRVJBTkQocmVmLCAwKSwgMCkpKTsNCj4+Pj4+Pj4gNTM5ICAgdHJlZSB6ZXJvX3dp dGhfdHlwZSA9IGJ1aWxkX2ludF9jc3QgKGJ1aWxkX3BvaW50ZXJfdHlwZSAoYXJyYXlfdHlwZSks IDApOw0KPj4+Pj4+PiA1NDAgICByZXR1cm4gYnVpbGRfY2FsbF9leHByX2ludGVybmFsX2xvYyAo bG9jLCBJRk5fVUJTQU5fQk9VTkRTLA0KPj4+Pj4+PiA1NDEgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdm9pZF90eXBlX25vZGUsIDMsIHplcm9fd2l0aF90eXBlLA0KPj4+ Pj4+PiA1NDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIGJv dW5kKTsNCj4+Pj4+Pj4gNTQzIH0NCj4+Pj4+Pj4gDQo+Pj4+Pj4+ID09PT09DQo+Pj4+Pj4+IA0K Pj4+Pj4+PiBJbnNpZGUgZ2RiLCB0aGUgZ3VpbHR5IElSIGZhaWxlZCBpbiBMVE8gc3RyZWFtaW5n IGlzIGZyb20gdGhlIGFib3ZlIGxpbmUgNTIwOg0KPj4+Pj4+PiBUWVBFX1NJWkVfVU5JVCAoVFJF RV9UWVBFIChUUkVFX1RZUEUgKGFycmF5KSkpLA0KPj4+Pj4+PiANCj4+Pj4+Pj4gV2hlbiBJIHVz ZSB0aGlzIHRyZWUgbm9kZSBhcyBhbiBvcGVyYW5kIG9mIHRoZSBleHByZXNzaW9uIGF0IGxpbmUg NTI2LCBJIGFkZGVkDQo+Pj4+Pj4+IHVuc2hhcmVfZXhwci4NCj4+Pj4+Pj4gDQo+Pj4+Pj4+IEhv d2V2ZXIsIEkgc3RpbGwgc2VlIHRoZSBndWlsdHkgSVIgYXMgaW4gZ2RiOg0KPj4+Pj4+PiANCj4+ Pj4+Pj4gICAgICAgICAgdW5pdC1zaXplIDxtdWx0X2V4cHIgMHhmZmZmZjVhYWJmOTAgdHlwZSA8 aW50ZWdlcl90eXBlIDB4ZmZmZmY1N2MwMDAwIHNpemV0eXBlPg0KPj4+Pj4+PiAgICAgICAgICAg ICAgc2lkZS1lZmZlY3RzDQo+Pj4+Pj4+ICAgICAgICAgICAgICBhcmc6MCA8bXVsdF9leHByIDB4 ZmZmZmY1YWFiZjY4IHR5cGUgPGludGVnZXJfdHlwZSAweGZmZmZmNTdjMDAwMCBzaXpldHlwZT4N Cj4+Pj4+Pj4gDQo+Pj4+Pj4+ICAgICAgICAgICAgICAgICAgYXJnOjAgPHNzYV9uYW1lIDB4ZmZm ZmY1NzYxZTE4IHR5cGUgPGVycm9yX21hcmsgMHhmZmZmZjU2YzBlNTg+DQo+Pj4+Pj4+ICAgICAg ICAgICAgICAgICAgICAgIG5vdGhyb3cNCj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgZGVm X3N0bXQNCj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjoxMiBpbi1mcmVlLWxp c3Q+DQo+Pj4+Pj4+ICAgICAgICAgICAgICAgICAgYXJnOjEgPHNzYV9uYW1lIDB4ZmZmZmY1NzYx ZTYwIHR5cGUgPGVycm9yX21hcmsgMHhmZmZmZjU2YzBlNTg+DQo+Pj4+Pj4+ICAgICAgICAgICAg ICAgICAgICAgIG5vdGhyb3cNCj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgZGVmX3N0bXQN Cj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjoxMyBpbi1mcmVlLWxpc3Q+Pg0K Pj4+Pj4+PiAgICAgICAgICAgICAgYXJnOjEgPGludGVnZXJfY3N0IDB4ZmZmZmY1NmMxMGM4IGNv bnN0YW50IDQ+Pg0KPj4+Pj4+PiANCj4+Pj4+Pj4gDQo+Pj4+Pj4+IEkgaGF2ZSBiZWVuIHN0dWNr IHdpdGggdGhpcyBidWcgZm9yIHF1aXRlIHNvbWUgdGltZS4NCj4+Pj4+Pj4gQW55IGhlbHAgaXMg aGVscGZ1bC4NCj4+Pj4+PiANCj4+Pj4+PiBUaGUgYWJvdmUgaGFzbid0IGJlZW4gZ2ltcGxpZmll ZCBjb3JyZWN0bHksIHlvdSdkIGluc3RlYWQgc2VlDQo+Pj4+Pj4gYSBELjEyMzQgaW4gdGhlcmUs IG5vdCBhbiBleHByZXNzaW9uIHdpdGggU1NBIG5hbWVzLiAgVGhhdCBoYXBwZW5zDQo+Pj4+Pj4g d2hlbiB0aGUgZnJvbnRlbmQgZmFpbHMgdG8gZW1pdCBhIERFQ0xfRVhQUiBmb3IgYSBkZWNsIHdp dGggdGhpcw0KPj4+Pj4+IHR5cGUuDQo+Pj4+PiANCj4+Pj4+IC4uIHdoaWNoIHRoZW4gYWxzbyBy ZXN1bHRzIGluIG1pc3NpbmcgdW5zaGFyaW5nIG9mIHRoaXMgZXhwcmVzc2lvbg0KPj4+Pj4gKHNv IHRoZSBTU0EgbmFtZXMgbGVhayBpbikNCj4+Pj4gDQo+Pj4+IFRoYW5rcyBhIGxvdCBmb3IgdGhl IGhpbnRzLg0KPj4+PiANCj4+Pj4gT25lIGNvcnJlY3Rpb24gZmlyc3QsIHRoZSBMVE8gYnVnIGlz IG5vdCByZWxhdGVkIHRvIC1mc2FuaXRpemU9Ym91bmRzLiAgRGVsZXRpbmcgLWZzYW5pdGl6ZT1i b3VuZHMgc3RpbGwgY2FuDQo+Pj4+IHJlcGVhdCB0aGUgZmFpbHVyZS4NCj4+Pj4gDQo+Pj4+IEFm dGVyIGZ1cnRoZXIgZGVidWdnaW5nIGludG8gdGhlIGdpbXBsaWZpY2F0aW9uIHBoYXNlIHJlbGF0 ZWQgd2l0aCB0aGUgU0FWRV9FWFBSLCBJIGZpbmFsbHkgbG9jYXRlIHRoZSBwbGFjZQ0KPj4+PiB3 aGVyZSB0aGUgdW5zaGFyZWluZyBvZiB0aGUgZXhwcmVzc2lvbiBpcyBtaXNzaW5nLiAgIFRoaXMg aXMgaW4gdGhlIHJvdXRpbmUg4oCccG9pbnRlcl9pbnRfc3Vt4oCdIG9mIGMtZmFtaWx5L2MtY29t bW9uLmNjOg0KPj4+PiANCj4+Pj4gMzMzMCAgICAgew0KPj4+PiAzMzMxICAgICAgIGlmICghY29t cGxhaW4gJiYgIUNPTVBMRVRFX1RZUEVfUCAoVFJFRV9UWVBFIChyZXN1bHRfdHlwZSkpKQ0KPj4+ PiAzMzMyICAgICAgICAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsNCj4+Pj4gMzMzMyAgICAgICBz aXplX2V4cCA9IHNpemVfaW5fYnl0ZXNfbG9jIChsb2MsIFRSRUVfVFlQRSAocmVzdWx0X3R5cGUp KTsNCj4+Pj4gMzMzNCAgICAgICAvKiBXcmFwIHRoZSBwb2ludGVyIGV4cHJlc3Npb24gaW4gYSBT QVZFX0VYUFIgdG8gbWFrZSBzdXJlIGl0DQo+Pj4+IDMzMzUgICAgICAgICAgaXMgZXZhbHVhdGVk IGZpcnN0IHdoZW4gdGhlIHNpemUgZXhwcmVzc2lvbiBtYXkgZGVwZW5kDQo+Pj4+IDMzMzYgICAg ICAgICAgb24gaXQgZm9yIFZNIHR5cGVzLiAgKi8NCj4+Pj4gMzMzNyAgICAgICBpZiAoVFJFRV9T SURFX0VGRkVDVFMgKHNpemVfZXhwKQ0KPj4+PiAzMzM4ICAgICAgICAgICAmJiBUUkVFX1NJREVf RUZGRUNUUyAocHRyb3ApDQo+Pj4+IDMzMzkgICAgICAgICAgICYmIHZhcmlhYmx5X21vZGlmaWVk X3R5cGVfcCAoVFJFRV9UWVBFIChwdHJvcCksIE5VTEwpKQ0KPj4+PiAzMzQwICAgICAgICAgew0K Pj4+PiAzMzQxICAgICAgICAgICBwdHJvcCA9IHNhdmVfZXhwciAocHRyb3ApOw0KPj4+PiAzMzQy ICAgICAgICAgICBzaXplX2V4cCA9IGJ1aWxkMiAoQ09NUE9VTkRfRVhQUiwgVFJFRV9UWVBFIChp bnRvcCksIHB0cm9wLCBzaXplX2V4cCk7DQo+Pj4+IDMzNDMgICAgICAgICB9DQo+Pj4+IDMzNDQg ICAgIH0NCj4+Pj4gDQo+Pj4+IEluIHRoZSBhYm92ZSwgYXQgbGluZSAzMzMzLCB0aGUgdHJlZSBu b2RlLCBUWVBFX1NJWkVfVU5JVCAoVFJFRV9UWVBFKHJlc3VsdF90eXBlKSksIGlzIHJldHVybmVk IGRpcmVjdGx5IGFzDQo+Pj4+IHRoZSBzaXplX2V4cCwNCj4+Pj4gDQo+Pj4+IChnZGIpIGNhbGwg ZGVidWdfdHJlZShzaXplX2V4cCkNCj4+Pj4gPG11bHRfZXhwciAweGZmZmZmNWE2ZjkxMA0KPj4+ PiAgIHR5cGUgPGludGVnZXJfdHlwZSAweGZmZmZmNTdjMDAwMCBzaXpldHlwZSBwdWJsaWMgdW5z aWduZWQgREkNCj4+Pj4gICAgICAgc2l6ZSA8aW50ZWdlcl9jc3QgMHhmZmZmZjU2YzBlNzAgY29u c3RhbnQgNjQ+DQo+Pj4+ICAgICAgIHVuaXQtc2l6ZSA8aW50ZWdlcl9jc3QgMHhmZmZmZjU2YzBl ODggY29uc3RhbnQgOD4NCj4+Pj4gICAgICAgYWxpZ246NjQgd2Fybl9pZl9ub3RfYWxpZ246MCBz eW10YWI6MCBhbGlhcy1zZXQgLTEgY2Fub25pY2FsLXR5cGUgMHhmZmZmZjU3YzAwMDAgcHJlY2lz aW9uOjY0IG1pbiA8aW50ZWdlcl9jc3QgMHhmZmZmZjU2YzBlYTAgMD4gbWF4IDxpbnRlZ2VyX2Nz dCAweGZmZmZmNTZkMDVlMCAxODQ0Njc0NDA3MzcwOTU1MTYxNT4+DQo+Pj4+ICAgc2lkZS1lZmZl Y3RzDQo+Pj4+ICAgYXJnOjAgPG11bHRfZXhwciAweGZmZmZmNWE2ZjhlOCB0eXBlIDxpbnRlZ2Vy X3R5cGUgMHhmZmZmZjU3YzAwMDAgc2l6ZXR5cGU+DQo+Pj4+ICAgICAgIHNpZGUtZWZmZWN0cw0K Pj4+PiAgICAgICBhcmc6MCA8bm9wX2V4cHIgMHhmZmZmZjU2ZGM1NDAgdHlwZSA8aW50ZWdlcl90 eXBlIDB4ZmZmZmY1N2MwMDAwIHNpemV0eXBlPg0KPj4+PiAgICAgICAgICAgc2lkZS1lZmZlY3Rz DQo+Pj4+ICAgICAgICAgICBhcmc6MCA8c2F2ZV9leHByIDB4ZmZmZmY1NmRjNGMwIHR5cGUgPGlu dGVnZXJfdHlwZSAweGZmZmZmNTdjMDVlOCBpbnQ+DQo+Pj4+ICAgICAgICAgICAgICAgc2lkZS1l ZmZlY3RzIGFyZzowIDxwYXJtX2RlY2wgMHhmZmZmZjc2YjZmODAgbjE+Pj4NCj4+Pj4gICAgICAg YXJnOjEgPG5vcF9leHByIDB4ZmZmZmY1NmRjNjAwIHR5cGUgPGludGVnZXJfdHlwZSAweGZmZmZm NTdjMDAwMCBzaXpldHlwZT4NCj4+Pj4gICAgICAgICAgIHNpZGUtZWZmZWN0cw0KPj4+PiAgICAg ICAgICAgYXJnOjAgPHNhdmVfZXhwciAweGZmZmZmNTZkYzU4MCB0eXBlIDxpbnRlZ2VyX3R5cGUg MHhmZmZmZjU3YzA1ZTggaW50Pg0KPj4+PiAgICAgICAgICAgICAgIHNpZGUtZWZmZWN0cyBhcmc6 MCA8cGFybV9kZWNsIDB4ZmZmZmY3NmI3MDAwIG4yPj4+Pg0KPj4+PiAgIGFyZzoxIDxpbnRlZ2Vy X2NzdCAweGZmZmZmNTZjMTBjOCB0eXBlIDxpbnRlZ2VyX3R5cGUgMHhmZmZmZjU3YzAwMDAgc2l6 ZXR5cGU+IGNvbnN0YW50IDQ+Pg0KPj4+PiANCj4+Pj4gDQo+Pj4+IFdpdGhvdXQgdW5zaGFyZV9l eHByIHRvIHRoaXMgc2l6ZV9leHAsIHRoZSBhYm92ZSBUWVBFX1NJWkVfVU5JVCBub2RlIGNvbnRh aW5pbmcgU0FWRV9FWFBScw0KPj4+PiBpcyBnaW1wZmxpZmllZCB0byBleHByZXNzaW9ucyB3aXRo IFNTQV9OQU1FIGR1cmluZyBnaW1wbGlmaWNhdGlvbi4gIChUaGlzIGlzIHVuYWNjZXB0ZWQgYnkg TFRPKS4NCj4+Pj4gDQo+Pj4+IEFkZGluZyBhbiB1bnNoYXJlX2V4cHIgKHNpemVfZXhwKSByZXNv bHZlZCB0aGlzIHByb2JsZW0uDQo+Pj4+IA0KPj4+PiBBbHRob3VnaCBJIHN0aWxsIHRoaW5rIHRo YXQgdGhlcmUgbWlnaHQgYmUgcG90ZW50aWFsIGlzc3VlIHdpdGggdGhlIGdpbXBmbGljYXRpb24g b2YgU0FWRV9FWFBScywgSSBkYXJlIG5vdA0KPj4+PiB0byBtb2RpZnkgdGhhdCBwYXJ0IG9mIHRo ZSBjb2RlLg0KPj4+PiANCj4+Pj4gQXQgdGhpcyBtb21lbnQsIEkgd2lsbCBhZGQgdW5zaGFyZV9l eHByIHRvIHRoZSByb3V0aW5lIOKAnHBvaW50ZXJfaW50X3N1beKAnSB0byB3b3JrYXJvdW5kIHRo aXMgaXNzdWUuDQo+Pj4gDQo+Pj4gSXQncyBvbmx5IGEgd29ya2Fyb3VuZCBtaW5kIHlvdS4gIFRo ZSBidWcgaXMgdGhhdCB0aGUgZnJvbnRlbmQgZmFpbHMNCj4+PiB0byBlbWl0IGEgREVDTF9FWFBS IHdoaWNoIHdvdWxkDQo+Pj4gdHJpZ2dlciBib3RoIHVuc2hhcmluZyBhbmQgcHJvcGVyIGdpbXBs aWZpY2F0aW9uIG9mIHRoZSB0eXBlIHNpemUuDQo+PiANCj4+IEZvciBhIHNpbXBsZSB0ZXN0aW5n IGNhc2U6DQo+PiANCj4+ICQgY2F0IHRlc3QuYw0KPj4gc3RydWN0IGFubm90YXRlZCB7DQo+PiAg dW5zaWduZWQgaW50IGZvbzsNCj4+ICBjaGFyIGI7DQo+PiAgaW50IGFycmF5W10gX19hdHRyaWJ1 dGVfXygoY291bnRlZF9ieSAoZm9vKSkpOw0KPj4gfTsNCj4+IGV4dGVybiBzdHJ1Y3QgYW5ub3Rh dGVkICogYWxsb2NfYnVmIChpbnQgaW5kZXgpOw0KPj4gDQo+PiBzdGF0aWMgdm9pZCBiYXIgKCkN Cj4+IHsNCj4+ICBzdHJ1Y3QgYW5ub3RhdGVkICpwMiA9IGFsbG9jX2J1ZiAoMTApOw0KPj4gIHAy LT5hcnJheVsxMV0gPSAwOw0KPj4gIHJldHVybjsNCj4+IH0NCj4+IA0KPj4gVGhlIEMgRkUgZ2Vu ZXJhdGVzIHRoZSBmb2xsb3dpbmcgSVI6DQo+PiANCj4+IFtvcGNAcWluemhhby1vbDh1My14ODYg MTA4ODk2XSQgY2F0IHRlc3QuYy4wMDV0Lm9yaWdpbmFsDQo+PiA7OyBGdW5jdGlvbiBiYXIgKG51 bGwpDQo+PiA7OyBlbmFibGVkIGJ5IC10cmVlLW9yaWdpbmFsDQo+PiANCj4+IA0KPj4gew0KPj4g IHN0cnVjdCBhbm5vdGF0ZWQgKiBwMiA9IGFsbG9jX2J1ZiAoMTApOw0KPj4gDQo+PiAgICBzdHJ1 Y3QgYW5ub3RhdGVkICogcDIgPSBhbGxvY19idWYgKDEwKTsNCj4+ICAqKC5BQ0NFU1NfV0lUSF9T SVpFICgoaW50ICopICZwMi0+YXJyYXksICZwMi0+Zm9vLCAxLCAzMiwgLTEpICsgNDQpID0gMDsN Cj4+ICByZXR1cm47DQo+PiB9DQo+PiANCj4+IERvIHlvdSBzZWUgYW55IG9idmlvdXMgSVIgaXNz dWUgaW4gdGhlIGFib3ZlPyBEbyBJIG1pc3MgdG8gZ2VuZXJhdGUgYW55IERFQ0xfRVhQUiBpbiB0 aGUgYWJvdmUgSVI/DQo+IA0KPiBJdCdzIGFuIGludGVyZXN0aW5nIHF1ZXN0aW9uIC0gSSBkb24n dCBzZWUgd2hlcmUgdGhlIGdpbXBsaWZpZXIgd291bGQNCj4gbmVlZCB0byBhY2Nlc3MgREVDTC9U WVBFX1NJWkUNCg0KTXkgYmFkLCB0aGUgYWJvdmUgc2ltcGxlIGV4YW1wbGUgZGlkIG5vdCBleHBv c2UgdGhlIExUTyBlcnJvci4gSnVzdCB1c2VkIHRvIHNob3cgdGhlIElSIGdlbmVyYXRlZCBmb3Ig dGhlIGFycmF5IGFjY2Vzcy4NCg0KVGhlIExUTyBlcnJvciBvbmx5IGhhcHBlbnMgd2l0aCBtdWx0 aS1kaW1lbnNpb24gYXJyYXksIHdob3NlIGlubmVyIGRpbWVuc2lvbnMgYXJlIFZMQS4gIEFuZCB0 aGUgb3V0ZXJtb3N0IGRpbWVuc2lvbiBpcyBmbGV4aWJsZSBhcnJheSBtZW1iZXIuICBMaWtlIGZv bGxvd2luZzoNCg0KDQogICB2b2lkIF9fYXR0cmlidXRlX18oKF9fbm9pbmxpbmVfXykpIHNldHVw X2FuZF90ZXN0X3ZsYSAoaW50IG4xLCBpbnQgbjIsIGludCBtKQ0Kew0KICAgc3RydWN0IGZvbyB7 DQogICAgICAgaW50IG47DQogICAgICAgaW50IHBbXVtuMl1bbjFdIF9fYXR0cmlidXRlX18oKGNv dW50ZWRfYnkobikpKTsNCiAgIH0gKmY7DQoNCiAgIGYgPSAoc3RydWN0IGZvbyAqKSBtYWxsb2Mg KHNpemVvZihzdHJ1Y3QgZm9vKSArIG0qc2l6ZW9mKGludFtuMl1bbjFdKSk7DQogICBmLT5uID0g bTsNCiAgIGYtPnBbbV1bbjJdW24xXT0xOw0KICAgcmV0dXJuOw0KfQ0KIA0KQW5kIHRoZSBJUiBm b3IgdGhlIHJvdXRpbmUg4oCcc2V0dXBfYW5kX3Rlc3Rfdmxh4oCdIGlzOg0KDQp7DQogIHR5cGVk ZWYgc3RydWN0IGZvbyBzdHJ1Y3Qgc3RydWN0IGZvbzsNCiAgc3RydWN0IGZvbyAqIGY7DQoNCiAg U0FWRV9FWFBSIDxuMT47LCBTQVZFX0VYUFIgPG4yPjs7LCB7DQogICAgICAgIHR5cGVkZWYgc3Ry dWN0IGZvbyBzdHJ1Y3Qgc3RydWN0IGZvbzsNCiAgfTsNCiAgICBzdHJ1Y3QgZm9vICogZjsNCiAg ZiA9IChzdHJ1Y3QgZm9vICopIG1hbGxvYyAoMCwgU0FWRV9FWFBSIDxuMT47LCBTQVZFX0VYUFIg PG4yPjs7LCAoKGxvbmcgdW5zaWduZWQgaW50KSBtICogKGxvbmcgdW5zaWduZWQgaW50KSAoKHNp emV0eXBlKSBTQVZFX0VYUFIgPG4xPiAqIChzaXpldHlwZSkgU0FWRV9FWFBSIDxuMj4pICsgMSkg KiA0Oyk7DQogIGYtPm4gPSBtOw0KICAoKiguQUNDRVNTX1dJVEhfU0laRSAoKGludFswOihzaXpl dHlwZSkgKChsb25nIGludCkgU0FWRV9FWFBSIDxuMj4gKyAtMSldWzA6KHNpemV0eXBlKSAoKGxv bmcgaW50KSBTQVZFX0VYUFIgPG4xPiArIC0xKV0gKikgJmYtPnAsICZmLT5uLCAxLCAzMiwgLTEp ICsgKHNpemV0eXBlKSAoKChsb25nIHVuc2lnbmVkIGludCkgbSAqIChsb25nIHVuc2lnbmVkIGlu dCkgKChzaXpldHlwZSkgU0FWRV9FWFBSIDxuMT4gKiAoc2l6ZXR5cGUpIFNBVkVfRVhQUiA8bjI+ KSkgKiA0KSkpW24yXVtuMV0gPSAxOw0KICByZXR1cm47DQp9DQoNCg0KDQo+IHNvIHRoZSBtaXN0 YWtlLCBpZiBhbnksIHNob3VsZCBiZSB0aGF0IHlvdSBuZWVkIHRvIHVuc2hhcmUgdGhlIHNpemUN Cj4gZXhwcmVzc2lvbnMgeW91IGFyZSB1c2luZyBhcw0KPiBhcmd1bWVudCB0byAuQUNDRVNTX1dJ VEhfU0laRT8NCg0KSG0sIEkgdHJpZWQgdGhhdCBpbiB0aGUgYmVnaW5uaW5nLCBidXQgZGlkbuKA mXQgd29yay4gSSB3aWxsIGNoZWNrIGFnYWluLiANCg0KPiAgTWluZCwgeW91IGFyZSByZXBsYWNp bmcgYW4gQVJSQVlfUkVGDQo+IHdpdGggYSBwb2ludGVyIGluZGlyZWN0aW9uDQo+IGFzIHdlbGwN Cg0KWWVzLCB0aGlzIGlzIGZvciByZXNvbHZpbmcgYSB2ZXJ5IGVhcmx5IGdpbXBsaWZpY2F0aW9u IGlzc3VlIGFzIEkgcmVwb3J0ZWQgbGFzdCBOb3Y6DQpodHRwczovL2djYy5nbnUub3JnL3BpcGVy bWFpbC9nY2MtcGF0Y2hlcy8yMDIzLU5vdmVtYmVyLzYzODc5My5odG1sDQoNClNpbmNlIG5vLW9u ZSByZXNwb25kZWQgYXQgdGhhdCB0aW1lLCBJIGZpeGVkIHRoZSBpc3N1ZSBieSByZXBsYWNpbmcg dGhlIEFSUkFZX1JFRg0KV2l0aCBhIHBvaW50ZXIgaW5kaXJlY3Rpb246DQpodHRwczovL2djYy5n bnUub3JnL3BpcGVybWFpbC9nY2MtcGF0Y2hlcy8yMDIzLURlY2VtYmVyLzYzOTYwNS5odG1sDQoN ClRoZSByZWFzb24gZm9yIHN1Y2ggY2hhbmdlIGlzOiAgcmV0dXJuIGEgZmxleGlibGUgYXJyYXkg bWVtYmVyIFRZUEUgaXMgbm90IGFsbG93ZWQNCiBieSBDIGxhbmd1YWdlIChvdXIgZ2ltcGxpZmlj YXRpb24gZm9sbG93cyB0aGlzIHJ1bGUpLCBzbywgd2UgaGF2ZSB0byByZXR1cm4gYSBwb2ludGVy IFRZUEUgaW5zdGVhZC4gDQoNCg0KPiAtIElNTyB3ZSBzaG91bGRuJ3QgcmVwbGFjZSBhY2Nlc3Nl cyB0aGlzIHdheSBidXQgaW5zdGVhZCBtYWtlDQo+IGl0IHBvc3NpYmxlIGZvciBhbmFseXNpcyB0 bw0KPiBkaXNjb3ZlciB0aGUgYmFzZS9zaXplIHZhbHVlcz8NCg0KWWVzLCBpZiBrZWVwaW5nIHRo ZSBBUlJBWV9SRUYsIHRoZW4gYm91bmQgc2FuaXRpemVyIGluc3RydW1lbnRhdGlvbiB3aWxsIGJl IG11Y2ggc2ltcGxlciBzaW5jZSB0aGUgSU5ERVgNCkluZm9ybWF0aW9uIGlzIGtlcHQgaW4gdGhl IFRZUEUgTk9ERSBvZiB0aGUgQVJSQVlfUkVGLiAgDQpIb3dldmVyLCBkdWUgdG8gdGhlIGFib3Zl IHJlYXNvbiwgd2UgaGF2ZSB0byByZXBsYWNlIHRoZSBBUlJBWV9SRUYgd2l0aCBhIHBvaW50ZXIg SU5ESVJFQ1RfUkVGLiANClN1Y2ggY2hhbmdlIG1hZGUgdGhlIGJvdW5kIHNhbml0aXplciBtb3Jl IGRpZmZpY3VsdCBkdWUgdG8gdGhlIElOREVYIHdhcyBsb3N0IHdoZW4gdGhlIEFSUkFZX1JFRiB3 YXMNCkNvbnZlcnRlZCB0byB0aGUgSU5ESVJFQ1RfUkVGLg0KDQpJIHJlc29sdmVkIHRoaXMgaXNz dWUgYnkgYWRkaW5nIGEgbmV3IGFyZ3VtZW50IHRvIC5BQ0NFU1NfV0lUSF9TSVpFIHRvIHJlY29y ZCB0aGUgSU5ERVggd2hlbiBjb252ZXJ0aW5nDQpUaGUgQVJSQVlfUkVGIHRvIElORElSRUNUX1JF RiBkdXJpbmcgQyBGRS4NCg0KTGV0IG1lIGtub3cgaWYgeW91IGhhdmUgYW55IGNvbW1lbnQuDQoN ClRoYW5rcy4NCg0KUWluZw0KPiANCj4+IFRoYW5rcy4NCj4+IA0KPj4gUWluZw0KPj4gDQo+PiAN Cj4+IEkgY29tcGFyZWQgaXQgd2l0aCB0aGUgZm9sbG93aW5nIHRlc3RpbmcgY2FzZSB3aXRob3V0 IHRoZSDigJxjb3VudGVkLWJ54oCdIGFubm90YXRpb24NCj4+IGFuZCB1c2UgYW4gdXNlci1kZWZp bmVkIOKAnGFjY2Vzc193aXRoX3NpemXigJ0gZnVuY3Rpb24sIFRoZSBJUiBsb29rcyBsaWtlIGV4 YWN0bHkgdGhlIHNhbWU6DQo+PiANCj4+ICQgY2F0IHRlc3RfMS5jDQo+PiBzdHJ1Y3QgYW5ub3Rh dGVkIHsNCj4+ICB1bnNpZ25lZCBpbnQgZm9vOw0KPj4gIGNoYXIgYjsNCj4+ICBpbnQgYXJyYXlb XTsNCj4+IH07DQo+PiBleHRlcm4gc3RydWN0IGFubm90YXRlZCAqYWxsb2NfYnVmIChpbnQpOw0K Pj4gZXh0ZXJuIGludCAqYWNjZXNzX3dpdGhfc2l6ZSAoaW50ICogcmVmLCB1bnNpZ25lZCBpbnQg KiBzaXplLCBpbnQgYSwgaW50IGIsIGludCBjKTsNCj4+IA0KPj4gc3RhdGljIHZvaWQgYmFyICgp DQo+PiB7DQo+PiAgc3RydWN0IGFubm90YXRlZCAqcDIgPSBhbGxvY19idWYgKDEwKTsNCj4+ICBh Y2Nlc3Nfd2l0aF9zaXplICgoaW50ICopICZwMi0+YXJyYXksICZwMi0+Zm9vLCAxLCAzMiwgLTEp WzExXSA9IDA7DQo+PiAgcmV0dXJuOw0KPj4gfQ0KPj4gW29wY0BxaW56aGFvLW9sOHUzLXg4NiAx MDg4OTZdJCBjYXQgdGVzdF8xLmMuMDA1dC5vcmlnaW5hbA0KPj4gDQo+PiA7OyBGdW5jdGlvbiBi YXIgKG51bGwpDQo+PiA7OyBlbmFibGVkIGJ5IC10cmVlLW9yaWdpbmFsDQo+PiANCj4+IA0KPj4g ew0KPj4gIHN0cnVjdCBhbm5vdGF0ZWQgKiBwMiA9IGFsbG9jX2J1ZiAoMTApOw0KPj4gDQo+PiAg ICBzdHJ1Y3QgYW5ub3RhdGVkICogcDIgPSBhbGxvY19idWYgKDEwKTsNCj4+ICAqKGFjY2Vzc193 aXRoX3NpemUgKChpbnQgKikgJnAyLT5hcnJheSwgJnAyLT5mb28sIDEsIDMyLCAtMSkgKyA0NCkg PSAwOw0KPj4gIHJldHVybjsNCj4+IH0NCj4+IA0KPj4gDQo+PiANCj4+PiANCj4+Pj4gTGV0IG1l IGtub3cgaWYgeW91IGhhdmUgYW55IGNvbW1lbnQgYW5kIHN1Z2dlc3Rpb24uDQo+Pj4+IA0KPj4+ PiBUaGFua3MgYSBsb3QuDQo+Pj4+IA0KPj4+PiBRaW5nDQo+Pj4+IA0KPj4+Pj4+IA0KPj4+Pj4+ PiANCj4+Pj4+Pj4gUWluZw0KPj4+Pj4+PiANCj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IFRoYW5rcyBh IGxvdCBmb3IgdGhlIGhlbHAuDQo+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gUWluZw0KDQoNCg==