From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2047.outbound.protection.outlook.com [40.107.22.47]) by sourceware.org (Postfix) with ESMTPS id 82D2F3858D38 for ; Fri, 30 Sep 2022 09:15:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 82D2F3858D38 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=U670eAk6V0CjYXNLgj+6+HleP6wLa7CtJTgUwJc0Jjf4CaQpHcKo1+yJcPFceO86GoCPpGAehs4ppvMxv+Y2ge4VbgDlK1FCUQc8y+SiLvZdz/ywEugONfFaQ1BPyBzobmi/5y2rtsCTHApseT81nEF6XIwDlUQ5hn4+2u3WYzFdLNK3M1v15K9pNnVXLqapFH+dxpAqmbqi78+pe/YWd+ESWgGWcFL6+1MOAPc1uC59+8dXb9Bb7k3RXD9KU+e+unaQi7fZC8+aK1ELLOeJD2r/lm3oOAh7ny8juNQHPXiJU7NTfEAi/25Js+mYOv5hAB7TViiak1CD9JAwDjifWA== ARC-Message-Signature: i=2; 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=QqyUDcBe6EmSOwPeEYQBjXcumJDDWH450bd4lXyNwK0=; b=O/ptwjbIt9CK0+LZ7ugTdsoTiuPZkg40k0jg2UQOT1p0ORjytlPAjHFnAzrsikQi5gk96nz+tVTrRzDhSmlelHhi4MKSIR3NV2cAhmc8gr9PLRWN50bePcoy83W0/XIfGRSx40EkJ/08IhnfXhWEC44+zE21Zc7mw5O9enMBqtFPPNwkk3WOM30mtO7VL0hXlZxgNDBMQfphWE+gNwruGtfwu+ZWT6zaN8c019zInDosxdtDlA76v1flGZHL5I9YFFLzVWiXFKsQpuoTsMa2VLdCowqsPb/kqV2zfPzjEPMz8KbrHZX279Q5koENOIWf0QY6wcZUCQVnIpmMie6rJQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QqyUDcBe6EmSOwPeEYQBjXcumJDDWH450bd4lXyNwK0=; b=UgOJvyMMlt1JHZEBvkZ9oWi1adbNRkvzL42Gr7ftguEnOwOa6GR21F764oann1HcAqdU3o8ELAozMb5fKR3ZrfunVdGjKo/vsuNf66NTSAhmfpez1eQIebhBaWzr/fsSLRzYOy60Jbh1a4QomRu+OmjRFGmAvmLVEOUCJd+PJLI= Received: from DU2PR04CA0319.eurprd04.prod.outlook.com (2603:10a6:10:2b5::24) by DU0PR08MB9876.eurprd08.prod.outlook.com (2603:10a6:10:424::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.19; Fri, 30 Sep 2022 09:15:15 +0000 Received: from DBAEUR03FT020.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:2b5:cafe::f8) by DU2PR04CA0319.outlook.office365.com (2603:10a6:10:2b5::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.23 via Frontend Transport; Fri, 30 Sep 2022 09:15:15 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT020.mail.protection.outlook.com (100.127.143.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.17 via Frontend Transport; Fri, 30 Sep 2022 09:15:14 +0000 Received: ("Tessian outbound ce981123c49d:v128"); Fri, 30 Sep 2022 09:15:14 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: a28013cdc5669ddf X-CR-MTA-TID: 64aa7808 Received: from 9076389fcb6b.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id A7A61381-2C48-47C5-920A-CDF8A350ED7C.1; Fri, 30 Sep 2022 09:15:04 +0000 Received: from EUR01-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 9076389fcb6b.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 30 Sep 2022 09:15:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a/S/x3mF7iJ/RYOjYNcnjxmh8cfU+Np38GmYFLA9QQqMChh3r8QnGy4mVqo8JHZEF1x5C4ax3IXMn9mNI+w58tGMAKtCmAnA2VFlDPZiVAriN2sgXhKMB6A2KfuUsSUzwbzWfu1x8+VJi2hgT+2YGf67z9q0NGemY4D+XuqcsyItP38DT4VDPuj/Y6llQN4noJ/qfUAaZ1sjtTicf+FnKP77oUoB8C8f6Y/dgR9CY5geKaWatogiUY8aFfW+3Ev+Offkhxo5WmHAPr/5JZiBh/vUVEjYwvCGznAT7tKmM4Z2cLTVaAtELZGTtGrndHSGMPkZzkFzXEOdX7YMKTfFxA== 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=QqyUDcBe6EmSOwPeEYQBjXcumJDDWH450bd4lXyNwK0=; b=gjilyBJ/GX13ASMGMHy0RALG3fWHa/M5qr4kn/3N9hRVq67ZWJ6piPg5LbSGYHV4i/WyZ8bOIXnurThnQizLOkgDNmPoLGR1BXU7qJTZRjZMp2x5bW+DoYDNlF+ek8iIs6/o4YYNYrD8ZkGIJ7I1uMTfl9BtYLaO8AUaMZO4cNIt5fTiuEjOuv7OCRF+aqdLSj59h+at4nmM7LpW4bXAOKOg63LtrJHYDgHw/L30GhGjHXeWwM+4GLX6BBquEQw5noUFacYMsHtqK5k4t7ah2FD7JjctvSNJPQqcsfjIMbMygPzB3z0al6v0ZqwKbuAs6viGCWLamyiabxc//Ke+ng== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QqyUDcBe6EmSOwPeEYQBjXcumJDDWH450bd4lXyNwK0=; b=UgOJvyMMlt1JHZEBvkZ9oWi1adbNRkvzL42Gr7ftguEnOwOa6GR21F764oann1HcAqdU3o8ELAozMb5fKR3ZrfunVdGjKo/vsuNf66NTSAhmfpez1eQIebhBaWzr/fsSLRzYOy60Jbh1a4QomRu+OmjRFGmAvmLVEOUCJd+PJLI= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by PR3PR08MB5610.eurprd08.prod.outlook.com (2603:10a6:102:91::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.23; Fri, 30 Sep 2022 09:15:01 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::6529:66e5:e7d4:1a40]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::6529:66e5:e7d4:1a40%4]) with mapi id 15.20.5676.023; Fri, 30 Sep 2022 09:15:00 +0000 From: Tamar Christina To: Richard Sandiford CC: Richard Biener , Tamar Christina via Gcc-patches , nd , Jeff Law Subject: RE: [PATCH 1/2]middle-end: RFC: On expansion of conditional branches, give hint if argument is a truth type to backend Thread-Topic: [PATCH 1/2]middle-end: RFC: On expansion of conditional branches, give hint if argument is a truth type to backend Thread-Index: AQHYzy5cPtP/U576lE6Yh3eQBn/QMK3xiPyAgAAF5FCAAAoggIAAAUohgANeuPmAACaxAIABECd3gAAA3gCAAArogIAADeOAgAFOFmCAABdsfYAAAasggAAD8PyAAAcNMA== Date: Fri, 30 Sep 2022 09:15:00 +0000 Message-ID: References: <8873DC9F-F868-458D-9AD6-90DDC5465057@suse.de> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: C9DD2298DB83C64989C33C42CA6F9874.0 Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|PR3PR08MB5610:EE_|DBAEUR03FT020:EE_|DU0PR08MB9876:EE_ X-MS-Office365-Filtering-Correlation-Id: 52e1e1bf-1f56-4cf1-d13b-08daa2c44917 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: vwhfjqxQ0PK2W5NHw9MY7sZ9cV3/X/Y7gFQz1hor8jnFwPZ9J2VoB8BiJOfYUPpWjQQzX3a5ewKoM8Q7HIrDkVNWxcpBQZobA6KVliyCqTaLyknpv9lwAZZCQriBKTAnqFvT047mSS4/XPuZY6A3FPLDjRHyj4vmeAQPFWFs3sGdholMjeuiv8Iym/MyNTHrlBNSiLVZX8RMonCPSy8JIhNw/RlHoXistnskzdlmv6Io5v11iVJql1tHET+sA7Wdx6M43Tr1n6iowdFwCYHfwypkFgAPjDVjZAk7e8NbSN4wPIHudk0y7nuoOf2+zxQKanGpkvdDVcoXtqPgVpGyhQjjqjZy6TpcPccqrnU3GuNeqmaP4W6cE4PPHBtUhxscDbLr21UX57zxeC3FD9vVj0egXYTyvb+UnLHwx+FyeGiLVgjRvH3WvxE0EE/eAifz9vNPbrCNyyJndmXzSSjhbp2W381bJJxBgdzVcBB6xIcnF8H1IlGa4pVbwjIRnX4L6OQlvIQ0WEU/tHwT/tvJoiXgLuR/9lbYJFtTYW34BpxNsQhVSF7owprbd/9iLqSwFPXalCajPGI6XiH+Ys1nMByc0a0YulLrkg8ArpaJt6LWaq154MvzBNKGXFd56Jj9wSTtjhNhvQ+ucuOAVC3tDHy2LEX9j4ELOKswYcgRTqtY/dfe2pDRcngQ//BdFj9lZZWNa31TDxF6rteT6bureH88ty+q8qGKZBl95M25s7SKzHctKMENRYdGVOaSKUmSCZ2gMeYlOPm9WzxYw2LOMw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB5325.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(396003)(376002)(346002)(136003)(39860400002)(451199015)(71200400001)(2906002)(38070700005)(66476007)(66946007)(86362001)(6636002)(4326008)(55016003)(8936002)(478600001)(38100700002)(76116006)(66899015)(122000001)(6862004)(8676002)(186003)(5660300002)(26005)(9686003)(33656002)(53546011)(7696005)(316002)(64756008)(41300700001)(83380400001)(66446008)(6506007)(54906003)(52536014)(66556008);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5610 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT020.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: d550c266-5cb7-4c91-0b07-08daa2c44088 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IRwQRiIBBekhN7NrHk1PFnUXZcuu9VBO/NbNBckCVwmnfSw4h8PC2LhFkLhFBOMsJoZII4PVyOB22k1bkaVVWuZBdBjTzk5mB8YVHT/AikG6L7AYWAeCI3sUFI0Iprbcxwynm2WmMjzYZO+wuIALV3dHHvl6bG2w5q8SyLfQXuLgMc6410Y7Z8qPBhhyFq8Hgx9HXwFYnqTf72lyt78G2IgY1qGF9h9GuYhvjmsceV+J7DgHL85Wa3mPRnFV0j+7TBkmc4UNWs+KIRvLQuY4AgwAiOP3Wp7whtWXTXb9zi2YNCXy/q9KVQUFPC8nA8saRU3xRoELA/sACDtsGgEsFDUzILL3PoQgX3CCHNGdOTHHaMCsn/In995+B2EG+pzS4s2fwyhk53ggaHSFVkP1hgpbXJAG4ILtkiBlgJgx1E1b4YjVSMY/DsIcABAGfVHtFrdag13GRXXWwFI9E+L+Ibh5eJaba6BiOw+SBHg3a1gAfbZaI1cTDOk0PiUmspJVJ2fV92xCI6iPWvg+JK1kBw4KHCqaEpW2JRt1sR1P5O/iXQHRGY1cP0I3XAbpMQglwRfeO5/JR8XPV8g4etJ+Z3C4scf1hWHXnAUusr679E7ITumJK4JH4p+K1NmexWJO09R0bw4ExTDghYbY1ByCrUnPr54EpBU7inw6r9DGW+uWU3R5iU1NvfxxV7DWBWKBWvgQiyYlRN6glQZwv3bDXpqGHOA5yZwOdJiRjjpImU3JNtpL05WIEBSSSY5NIzwK6DLJ8YaExzWDiOxrO/kdiw== X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230022)(4636009)(346002)(376002)(396003)(39860400002)(136003)(451199015)(36840700001)(40470700004)(46966006)(107886003)(53546011)(316002)(8676002)(70586007)(70206006)(4326008)(5660300002)(41300700001)(26005)(52536014)(9686003)(8936002)(6862004)(82310400005)(356005)(336012)(6506007)(40480700001)(2906002)(83380400001)(47076005)(186003)(55016003)(7696005)(82740400003)(478600001)(54906003)(6636002)(81166007)(40460700003)(33656002)(86362001)(36860700001)(66899015);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2022 09:15:14.9777 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 52e1e1bf-1f56-4cf1-d13b-08daa2c44917 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DBAEUR03FT020.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9876 X-Spam-Status: No, score=-6.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,KAM_DMARC_NONE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,UNPARSEABLE_RELAY autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUmljaGFyZCBTYW5kaWZv cmQgPHJpY2hhcmQuc2FuZGlmb3JkQGFybS5jb20+DQo+IFNlbnQ6IEZyaWRheSwgU2VwdGVtYmVy IDMwLCAyMDIyIDk6NDkgQU0NCj4gVG86IFRhbWFyIENocmlzdGluYSA8VGFtYXIuQ2hyaXN0aW5h QGFybS5jb20+DQo+IENjOiBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+OyBUYW1h ciBDaHJpc3RpbmEgdmlhIEdjYy1wYXRjaGVzDQo+IDxnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZz47 IG5kIDxuZEBhcm0uY29tPjsgSmVmZiBMYXcNCj4gPGplZmZyZXlhbGF3QGdtYWlsLmNvbT4NCj4g U3ViamVjdDogUmU6IFtQQVRDSCAxLzJdbWlkZGxlLWVuZDogUkZDOiBPbiBleHBhbnNpb24gb2Yg Y29uZGl0aW9uYWwNCj4gYnJhbmNoZXMsIGdpdmUgaGludCBpZiBhcmd1bWVudCBpcyBhIHRydXRo IHR5cGUgdG8gYmFja2VuZA0KPiANCj4gVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFA YXJtLmNvbT4gd3JpdGVzOg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBG cm9tOiBSaWNoYXJkIFNhbmRpZm9yZCA8cmljaGFyZC5zYW5kaWZvcmRAYXJtLmNvbT4NCj4gPj4g U2VudDogRnJpZGF5LCBTZXB0ZW1iZXIgMzAsIDIwMjIgOToyOSBBTQ0KPiA+PiBUbzogVGFtYXIg Q2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4NCj4gPj4gQ2M6IFJpY2hhcmQgQmll bmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT47IFRhbWFyIENocmlzdGluYSB2aWENCj4gPj4gR2NjLXBh dGNoZXMgPGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnPjsgbmQgPG5kQGFybS5jb20+OyBKZWZmIExh dw0KPiA+PiA8amVmZnJleWFsYXdAZ21haWwuY29tPg0KPiA+PiBTdWJqZWN0OiBSZTogW1BBVENI IDEvMl1taWRkbGUtZW5kOiBSRkM6IE9uIGV4cGFuc2lvbiBvZiBjb25kaXRpb25hbA0KPiA+PiBi cmFuY2hlcywgZ2l2ZSBoaW50IGlmIGFyZ3VtZW50IGlzIGEgdHJ1dGggdHlwZSB0byBiYWNrZW5k DQo+ID4+DQo+ID4+IFRhbWFyIENocmlzdGluYSA8VGFtYXIuQ2hyaXN0aW5hQGFybS5jb20+IHdy aXRlczoNCj4gPj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gPj4gRnJvbTog R2NjLXBhdGNoZXMgPGdjYy1wYXRjaGVzLQ0KPiA+PiA+PiBib3VuY2VzK3RhbWFyLmNocmlzdGlu YT1hcm0uY29tQGdjYy5nbnUub3JnPiBPbiBCZWhhbGYgT2YNCj4gUmljaGFyZA0KPiA+PiA+PiBC aWVuZXIgdmlhIEdjYy1wYXRjaGVzDQo+ID4+ID4+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIg MjksIDIwMjIgMTI6MDkgUE0NCj4gPj4gPj4gVG86IFRhbWFyIENocmlzdGluYSB2aWEgR2NjLXBh dGNoZXMgPGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnPg0KPiA+PiA+PiBDYzogUmljaGFyZCBTYW5k aWZvcmQgPFJpY2hhcmQuU2FuZGlmb3JkQGFybS5jb20+OyBuZA0KPiA8bmRAYXJtLmNvbT4NCj4g Pj4gPj4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzJdbWlkZGxlLWVuZDogUkZDOiBPbiBleHBhbnNp b24gb2YNCj4gPj4gPj4gY29uZGl0aW9uYWwgYnJhbmNoZXMsIGdpdmUgaGludCBpZiBhcmd1bWVu dCBpcyBhIHRydXRoIHR5cGUgdG8NCj4gPj4gPj4gYmFja2VuZA0KPiA+PiA+Pg0KPiA+PiA+Pg0K PiA+PiA+Pg0KPiA+PiA+PiA+IEFtIDI5LjA5LjIwMjIgdW0gMTI6MjMgc2NocmllYiBUYW1hciBD aHJpc3RpbmEgdmlhIEdjYy1wYXRjaGVzDQo+ID4+ID4+ID4gPGdjYy0NCj4gPj4gPj4gcGF0Y2hl c0BnY2MuZ251Lm9yZz46DQo+ID4+ID4+ID4NCj4gPj4gPj4gPg0KPiA+PiA+PiA+Pg0KPiA+PiA+ PiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiA+PiA+PiBGcm9tOiBSaWNoYXJk IEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+DQo+ID4+ID4+ID4+IFNlbnQ6IFRodXJzZGF5LCBT ZXB0ZW1iZXIgMjksIDIwMjIgMTA6NDEgQU0NCj4gPj4gPj4gPj4gVG86IFJpY2hhcmQgU2FuZGlm b3JkIDxSaWNoYXJkLlNhbmRpZm9yZEBhcm0uY29tPg0KPiA+PiA+PiA+PiBDYzogSmVmZiBMYXcg PGplZmZyZXlhbGF3QGdtYWlsLmNvbT47IFRhbWFyIENocmlzdGluYQ0KPiA+PiA+PiA+PiA8VGFt YXIuQ2hyaXN0aW5hQGFybS5jb20+OyBnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZzsgbmQNCj4gPj4g Pj4gPG5kQGFybS5jb20+DQo+ID4+ID4+ID4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMS8yXW1pZGRs ZS1lbmQ6IFJGQzogT24gZXhwYW5zaW9uIG9mDQo+ID4+ID4+ID4+IGNvbmRpdGlvbmFsIGJyYW5j aGVzLCBnaXZlIGhpbnQgaWYgYXJndW1lbnQgaXMgYSB0cnV0aCB0eXBlIHRvDQo+ID4+ID4+ID4+ IGJhY2tlbmQNCj4gPj4gPj4gPj4NCj4gPj4gPj4gPj4+IE9uIFRodSwgMjkgU2VwIDIwMjIsIFJp Y2hhcmQgU2FuZGlmb3JkIHdyb3RlOg0KPiA+PiA+PiA+Pj4NCj4gPj4gPj4gPj4+IEplZmYgTGF3 IDxqZWZmcmV5YWxhd0BnbWFpbC5jb20+IHdyaXRlczoNCj4gPj4gPj4gPj4+PiBPbiA5LzI4LzIy IDA5OjA0LCBSaWNoYXJkIFNhbmRpZm9yZCB3cm90ZToNCj4gPj4gPj4gPj4+Pj4gVGFtYXIgQ2hy aXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4gd3JpdGVzOg0KPiA+PiA+PiA+Pj4+Pj4+ IE1heWJlIHRoZSB0YXJnZXQgY291bGQgdXNlIChzdWJyZWc6U0kgKHJlZzpCSSAuLi4pKSBhcw0K PiBhcmd1bWVudC4NCj4gPj4gPj4gSGVoLg0KPiA+PiA+PiA+Pj4+Pj4gQnV0IHRoZW4gSSdkIHN0 aWxsIG5lZWQgdG8gY2hhbmdlIHRoZSBleHBhbnNpb24gY29kZS4gSQ0KPiA+PiA+PiA+Pj4+Pj4g c3VwcG9zZSB0aGlzIGNvdWxkIHByZXZlbnQgdGhlIGlzc3VlIHdpdGggY2hhbmdlcyB0byBjb2Rl DQo+ID4+ID4+ID4+Pj4+PiBvbg0KPiA+PiBvdGhlciB0YXJnZXRzLg0KPiA+PiA+PiA+Pj4+Pj4N Cj4gPj4gPj4gPj4+Pj4+Pj4+IFdlIGhhdmUgdW5kb2N1bWVudGVkIGFkZGNjLCBuZWdjYywgZXRj LiBwYXR0ZXJucywNCj4gc2hvdWxkDQo+ID4+IHdlDQo+ID4+ID4+ID4+Pj4+Pj4+PiBoYXZlIGFh bmRjYw0KPiA+PiA+PiA+Pj4+Pj4gcGF0dGVybiBmb3IgdGhpcyBpbmRpY2F0aW5nIHN1cHBvcnQg Zm9yIGFuZGNjICsganVtcCBhcw0KPiA+PiA+PiA+Pj4+Pj4gb3Bwb3NlZHRvDQo+ID4+ID4+ID4+ IGNtcGNjICsganVtcD8NCj4gPj4gPj4gPj4+Pj4+Pj4gVGhpcyBjb3VsZCB3b3JrIHllYWguIEkg ZGlkbid0IGtub3cgdGhlc2UgZXhpc3RlZC4NCj4gPj4gPj4gPj4+Pj4+PiBBaCwgc28gdGhleSBh cmUgY29uZGl0aW9uYWwgYWRkLCBub3QgYWRkIHNldHRpbmcgQ0MsIHNvDQo+ID4+ID4+ID4+Pj4+ Pj4gYW5kY2Mgd291bGRuJ3QgYmUgYXBwcm9wcmlhdGUuDQo+ID4+ID4+ID4+Pj4+Pj4gU28gSSdt IG5vdCBzdXJlIGhvdyB3ZSdkIGhhbmRsZSBzdWNoIHNpdHVhdGlvbiAtIG1heWJlDQo+ID4+ID4+ ID4+Pj4+Pj4gbG9va2luZyBhdCBSRUdfREVDTCBhbmQgcmVjb2duaXppbmcgYSBfQm9vbCBQQVJN X0RFQ0wgaXMNCj4gT0s/DQo+ID4+ID4+ID4+Pj4+PiBJIGhhdmUgYSBzbGlnaHQgc3VzcGljaW9u IHRoYXQgUmljaGFyZCBTYW5kaWZvcmQgd291bGQNCj4gPj4gPj4gPj4+Pj4+IGxpa2VseSByZWpl Y3QgdGhpcyB0aG91Z2guLg0KPiA+PiA+PiA+Pj4+PiBHb29kIGd1ZXNzIDotUCAgV2Ugc2hvdWxk bid0IHJlbHkgb24gc29tZXRoaW5nIGxpa2UgdGhhdCBmb3INCj4gPj4gPj4gPj4gY29ycmVjdG5l c3MuDQo+ID4+ID4+ID4+Pj4+DQo+ID4+ID4+ID4+Pj4+IFdvdWxkIGl0IGhlbHAgaWYgd2UgcHJv bW90ZWQgdGhlIHRlc3QtYW5kLWJyYW5jaA0KPiA+PiA+PiA+Pj4+PiBpbnN0cnVjdGlvbnMgdG8g b3B0YWJzLCBhbG9uZ3NpZGUgY2JyYW5jaD8gIFRoZSBqdW1wDQo+ID4+ID4+ID4+Pj4+IGV4cGFu ZGVycyBjb3VsZCB0aGVuIHRhcmdldCBpdA0KPiA+PiA+PiA+PiBkaXJlY3RseS4NCj4gPj4gPj4g Pj4+Pj4NCj4gPj4gPj4gPj4+Pj4gSU1PIHRoYXQnZCBiZSBhIHJlYXNvbmFibGUgdGhpbmcgdG8g ZG8gaWYgaXQgZG9lcyBoZWxwLg0KPiA+PiA+PiA+Pj4+PiBJdCdzIGEgcmVsYXRpdmVseSBjb21t b24gb3BlcmF0aW9uLCBlc3BlY2lhbGx5IG9uIENJU0N5IHRhcmdldHMuDQo+ID4+ID4+ID4+Pj4N Cj4gPj4gPj4gPj4+PiBCdXQgZG9uJ3Qgd2UgcmVwcmVzZW50IHRoZXNlIHNpbmdsZSBiaXQgdGVz dHMgdXNpbmcNCj4gPj4gPj4gPj4+PiB6ZXJvX2V4dHJhY3QgYXMgdGhlIGNvbmRpdGlvbiBvZiB0 aGUgYnJhbmNoPyAgSSBndWVzcyBpZiB3ZQ0KPiA+PiA+PiA+Pj4+IGNhbiBnZW5lcmF0ZSB0aGVt IGRpcmVjdGx5IHJhdGhlciB0aGFuIHdhaXRpbmcgZm9yIGNvbWJpbmUgdG8NCj4gPj4gPj4gPj4+ PiBkZWR1Y2UgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggYSBzaW5nbGUgYml0IHRlc3QgYW5kDQo+ ID4+ID4+ID4+Pj4gY29uc3RydWN0aW5nIHRoZSB6ZXJvX2V4dHJhY3QgZm9ybSB3b3VsZCBiZSBh biBpbXByb3ZlbWVudA0KPiA+PiA+PiA+Pj4+IGFuZCBtaWdodCBoZWxwIGFhcmNoIGF0IHRoZSBz YW1lDQo+ID4+IHRpbWUuDQo+ID4+ID4+ID4+Pg0KPiA+PiA+PiA+Pj4gRG8geW91IG1lYW4gdGhh dCB0aGUgcHJvbW90ZV9tb2RlIHN0dWZmIHNob3VsZCB1c2UgZXh0KHopdg0KPiA+PiA+PiA+Pj4g cmF0aGVyIHRoYW4gemVyb19leHRlbmQgdG8gcHJvbW90ZSBhIGJvb2wsIHdoZXJlIGF2YWlsYWJs ZT8NCj4gPj4gPj4gPj4+IElmIHNvLCBJIGFncmVlIHRoYXQgbWlnaHQgaGVscC4gIEJ1dCBpdCBz b3VuZHMgbGlrZSBpdCB3b3VsZA0KPiA+PiA+PiA+Pj4gaGF2ZSBkb3duc2lkZXMNCj4gPj4gdG9v Lg0KPiA+PiA+PiA+Pj4gQ3VycmVudGx5IGEgYm9vbCBtZW1vcnkgY2FuIGJlIHplcm8tZXh0ZW5k ZWQgb24gdGhlIGZseSB1c2luZw0KPiA+PiA+PiA+Pj4gYSBsb2FkLCBidXQgaWYgd2UgdXNlZCB0 aGUgemVyb19leHRyYWN0IGZvcm0gaW5zdGVhZCwgd2UnZA0KPiA+PiA+PiA+Pj4gaGF2ZSB0byBl eHRyYWN0IHRoZSBiaXQgYWZ0ZXIgdGhlIGxvYWQuICBBbmQgKGFzIGFuDQo+ID4+ID4+ID4+PiBh bHRlcm5hdGl2ZSkgY2hvb3NpbmcgZGlmZmVyZW50IGJlaGF2aW91ciBiYXNlZCBvbiB3aGV0aGVy DQo+ID4+ID4+ID4+PiBleHBhbmQgc2VlcyBhIFJFRyBvciBhIE1FTSBzb3VuZHMgbGlrZSBpdCBj b3VsZCBzdGlsbCBjYXVzZQ0KPiA+PiA+PiA+Pj4gcHJvYmxlbXMsIHNpbmNlIFJFR3MgY291bGQg YmUgcmVwbGFjZWQgYnkgTUVNcyAob3IgdmljZSB2ZXJzYSkNCj4gbGF0ZXIgaW4gdGhlIFJUTCBw YXNzZXMuDQo+ID4+ID4+ID4+Pg0KPiA+PiA+PiA+Pj4gSVNUTSB0aGF0IHRoZSBvcmlnaW5hbCBw YXRjaCB3YXMgaW5zZXJ0aW5nIGFuIGV4dHJhIG9wZXJhdGlvbg0KPiA+PiA+PiA+Pj4gaW4gdGhl IGJyYW5jaCBleHBhbnNpb24gaW4gb3JkZXIgdG8gdGFyZ2V0IGEgc3BlY2lmaWMgaW5zdHJ1Y3Rp b24uDQo+ID4+ID4+ID4+PiBUYXJnZXRpbmcgdGhlIGluc3RydWN0aW9uIGluIGV4cGFuZCBzZWVt cyBnb29kLCBidXQgSU1PIHdlDQo+ID4+ID4+ID4+PiBzaG91bGQgZG8gaXQgZGlyZWN0bHksIGJh c2VkIG9uIGtub3dsZWRnZSBvZiB3aGV0aGVyIHRoZQ0KPiA+PiA+PiA+Pj4gaW5zdHJ1Y3Rpb24g YWN0dWFsbHkNCj4gPj4gPj4gZXhpc3RzLg0KPiA+PiA+PiA+Pg0KPiA+PiA+PiA+PiBZZXMsIEkg dGhpbmsgYSBjb21wYXJlLWFuZC1icmFuY2ggcGF0dGVybiBpcyB0aGUgYmVzdCBmaXQgaGVyZS4N Cj4gPj4gPj4gPj4gTm90ZSBvbiBHSU1QTEUgd2UnZCByZWx5IG9uIHRoZSBmYWN0IHRoaXMgaXMg YSBCT09MRUFOX1RZUEUgKHNvDQo+ID4+ID4+ID4+IGV2ZW4gOCBiaXQgcHJlY2lzaW9uIGJvb2xz IG9ubHkgaGF2ZSAxIGFuZCAwIGFzIG1lYW5pbmdmdWwgdmFsdWVzKS4NCj4gPj4gPj4gPj4gU28g dGhlICdjb21wYXJlLScgYml0IGluIGNvbXBhcmUtYW5kLWJyYW5jaCB3b3VsZCBiZQ0KPiA+PiA+ PiA+PiBpbnRlcnByZXRpbmcgYSBCT09MRUFOX1RZUEUsIG5vdCBzbyBtdWNoIGEgZ2VuZXJhbCBj b21wYXJlLg0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gT2gsIEkgd2FzIHRoaW5raW5nIG9mIGFkZGlu ZyBhIGNvbnN0YW50IGFyZ3VtZW50IHJlcHJlc2VudGluZw0KPiA+PiA+PiA+IHRoZSBwcmVjaXNp b24gdGhhdCBpcyByZWxldmFudCBmb3IgdGhlIGNvbXBhcmUgaW4gb3JkZXIgdG8gbWFrZQ0KPiA+ PiA+PiA+IHRoaXMgYSBiaXQgbW9yZQ0KPiA+PiA+PiBnZW5lcmFsL2Z1dHVyZSBwcm9vZi4NCj4g Pj4gPj4gPg0KPiA+PiA+PiA+IEFyZSB5b3UgdGhpbmtpbmcgSSBzaG91bGQgaW5zdGVhZCBqdXN0 IG1ha2UgdGhlIG9wdGFiIGltcGxpY2l0bHkNCj4gPj4gPj4gPiBvbmx5IHdvcmsgZm9yIDEtYml0 IHByZWNpc2lvbiBjb21wYXJpc29ucz8NCj4gPj4gPj4NCj4gPj4gPj4gV2hhdOKAmXMgdGhlIG9w dGFiIHlvdSBwcm9wb3NlIChjaXRlIGFsc28gdGhlIGRvY3VtZW50YXRpb24gcGFydCk/DQo+ID4+ ID4NCj4gPj4gPiB0YnJhbmNobW9kZTUNCj4gPj4gPiAgIENvbmRpdGlvbmFsIGJyYW5jaCBpbnN0 cnVjdGlvbiBjb21iaW5lZCB3aXRoIGEgYml0IHRlc3QgaW5zdHJ1Y3Rpb24uDQo+ID4+IE9wZXJh bmQgMCBpcyBhIGNvbXBhcmlzb24gb3BlcmF0b3IuDQo+ID4+ID4gICBPcGVyYW5kIDEgYW5kIE9w ZXJhbmQgMiBhcmUgdGhlIGZpcnN0IGFuZCBzZWNvbmQgb3BlcmFuZHMgb2YgdGhlDQo+ID4+IGNv bXBhcmlzb24sIHJlc3BlY3RpdmVseS4NCj4gPj4gPiAgIE9wZXJhbmQgMyBpcyB0aGUgbnVtYmVy IG9mIGxvdy1vcmRlciBiaXRzIHRoYXQgYXJlIHJlbGV2YW50IGZvcg0KPiA+PiA+IHRoZQ0KPiA+ PiBjb21wYXJpc29uLg0KPiA+PiA+ICAgT3BlcmFuZCA0IGlzIHRoZSBjb2RlX2xhYmVsIHRvIGp1 bXAgdG8uDQo+ID4+DQo+ID4+IEZvciB0aGUgVEIgaW5zdHJ1Y3Rpb25zIChhbmQgZm9yIG90aGVy IHNpbWlsYXIgaW5zdHJ1Y3Rpb25zIHRoYXQgSSd2ZQ0KPiA+PiBzZWVuIG9uIG90aGVyIGFyY2hp dGVjdHVyZXMpIGl0IHdvdWxkIGJlIG1vcmUgdXNlZnVsIHRvIGhhdmUgYQ0KPiA+PiBzaW5nbGUt Yml0IHRlc3QsIHdpdGggb3BlcmFuZCA0IHNwZWNpZnlpbmcgdGhlIGJpdCBwb3NpdGlvbi4NCj4g Pj4gQXJndWFibHkgaXQgbWlnaHQgdGhlbiBiZSBiZXR0ZXIgdG8gaGF2ZSBzZXBhcmF0ZSBlcSBh bmQgbmUgb3B0YWJzLA0KPiA+PiB0byBhdm9pZCB0aGUgYXdrd2FyZCBkb3VibGluZyBvZiB0aGUg b3BlcmFuZHMgKG9wZXJhbmQgMSBjb250YWlucw0KPiBvcGVyYW5kcyAyIGFuZCAzKS4NCj4gPj4N Cj4gPj4gSSBndWVzcyBhIG1vcmUgZ2VuZXJhbCB3YXkgb2YgYWNoaWV2aW5nIHRoZSBzYW1lIHRo aW5nIHdvdWxkIGJlIHRvDQo+ID4+IG1ha2Ugb3BlcmFuZCA0IGluIHRoZSBvcHRhYiBhYm92ZSBh IG1hc2sgcmF0aGVyIHRoYW4gYSBiaXQgY291bnQuDQo+ID4+IEJ1dCB0aGF0IG1pZ2h0IGJlIG92 ZXJseSBnZW5lcmFsLCBpZiB0aGVyZSBhcmUgbm8ga25vd24gYXJjaGl0ZWN0dXJlcw0KPiA+PiB0 aGF0IGhhdmUgc3VjaCBhbiBpbnN0cnVjdGlvbi4NCj4gPg0KPiA+IE9uZSBvZiB0aGUgcmVhc29u cyBJIHdhbnRlZCBhIHJhbmdlIHJhdGhlciB0aGFuIGEgc2luZ2xlIGJpdCBpcyB0aGF0IEkNCj4g PiBjYW4gdGhlIHVzZSB0aGlzIHRvIGdlbmVyYXRlIGNiei9jYm56IGVhcmx5IG9uIGFzIHdlbGwu DQo+IA0KPiBXZSBhbHJlYWR5IGhhdmUgdGhlIG9wcG9ydHVuaXR5IHRvIGRvIHRoYXQgdmlhIGNi cmFuY2g8bW9kZT40Lg0KPiBCdXQgYXQgdGhlIG1vbWVudCBhYXJjaDY0Lm1kIGFsd2F5cyBmb3Jj ZXMgdGhlIHNlcGFyYXRlIGNvbXBhcmlzb24NCj4gaW5zdGVhZC4gIChOb3Qgc3VyZSB3aHkgVEJI LiAgRG9lcyBpdCBlbmFibGUgbW9yZSBpZmN2dCBvcHBvcnR1bml0aWVzPykNCj4gDQo+IElmIHdl IGNoYW5nZSB0aGUgYm9keSBvZiBjYnJhbmNoPG1vZGU+NCB0bzoNCj4gDQo+ICAgaWYgKChHRVRf Q09ERSAob3BlcmFuZHNbMF0pICE9IEVRICYmIEdFVF9DT0RFIChvcGVyYW5kc1swXSkgIT0gTkUp DQo+ICAgICAgIHx8IG9wZXJhbmRzWzJdICE9IGNvbnN0MF9ydHgpDQo+ICAgICB7DQo+ICAgICAg IG9wZXJhbmRzWzFdID0gYWFyY2g2NF9nZW5fY29tcGFyZV9yZWcgKEdFVF9DT0RFIChvcGVyYW5k c1swXSksDQo+IAkJCQkJICAgICBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOw0KPiAgICAgICBv cGVyYW5kc1syXSA9IGNvbnN0MF9ydHg7DQo+ICAgICB9DQo+IA0KPiB0aGVuIHdlIGdlbmVyYXRl IHRoZSBjYnovY2JueiBkaXJlY3RseS4NCj4NCg0KQWggb2ssIHRoZW4gaWYgUmljaGkgYWdyZWVz LCBiaXRwb3MgaXQgaXMgdGhlbiBpbnN0ZWFkIG9mIGJpdCBjb3VudC4NCg0KVGFtYXINCiANCg0K PiBUaGFua3MsDQo+IFJpY2hhcmQNCj4gDQo+IA0KPiA+IFRoaXMgd291bGQgbWVhbiB3ZSBjb3Vs ZCB1c2UgbXkgZWFybGllciBwYXRjaCB0aGF0IHRyaWVkIHRvIGRyb3AgdGhlDQo+ID4gUUkvSEkg cHJvbW90aW9ucyB3aXRob3V0IG5lZWRpbmcgdGhlIGFueV9leHRlbmQgYWRkaXRpb25hbCBwYXNz IGlmIHdlDQo+ID4gd2FudGVkIHRvLg0KPiA+DQo+ID4gV2UnZCBhbHNvIG5vIGxvbmdlciBuZWVk IHRvIHJlbHkgb24gc2VlaW5nIGEgcGFyYWRveGljYWwgc3VicmVnIGZvciBhIHRzdC4NCj4gPg0K PiA+IFRhbWFyLg0KPiA+DQo+ID4+DQo+ID4+IFRoYW5rcywNCj4gPj4gUmljaGFyZA0KPiA+Pg0K PiA+PiA+IFNwZWNpZmljYWxseSB0aGlzIHJlcHJlc2VudGF0aW9uIHdvdWxkIGFsbG93IHVzIHRv IGVtaXQgYWxsIG91cg0KPiA+PiA+IGRpZmZlcmVudCBjb25kaXRpb25hbCBicmFuY2hpbmcgaW5z dHJ1Y3Rpb25zIHdpdGhvdXQgbmVlZGluZyB0bw0KPiA+PiA+IHJlbHkgb24gY29tYmluZS4gIFdl IGhhdmUgc29tZSBjYXNlcyB0aGF0IGhhcHBlbiBkdXJpbmcNCj4gPj4gPiBvcHRpbWl6YXRpb24g dGhhdCBzb21ldGltZXMgcHJldmVudCB0aGUgb3B0aW1hbCBzZXF1ZW5jZSBmcm9tIGJlaW5nDQo+ ID4+ID4gZ2VuZXJhdGVkLiBUaGlzDQo+ID4+IHdvdWxkIGFsc28gc29sdmUgdGhhdCBhcyB3ZSB3 b3VsZCBleHBhbmQgdG8gd2hhdCB3ZSB3YW50IHRvIHN0YXJ0IHdpdGguDQo+ID4+ID4NCj4gPj4g PiBUYW1hci4NCj4gPj4gPg0KPiA+PiA+Pg0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gVGhhbmtzLA0K PiA+PiA+PiA+IFRhbWFyDQo+ID4+ID4+ID4NCj4gPj4gPj4gPj4NCj4gPj4gPj4gPj4gUmljaGFy ZC4NCg==