Re: [Cbor] Packed CBOR review

Brendan Moran <Brendan.Moran@arm.com> Thu, 17 June 2021 09:08 UTC

Return-Path: <Brendan.Moran@arm.com>
X-Original-To: cbor@ietfa.amsl.com
Delivered-To: cbor@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D0EBA3A148E for <cbor@ietfa.amsl.com>; Thu, 17 Jun 2021 02:08:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=armh.onmicrosoft.com header.b=qcQJgEG8; dkim=pass (1024-bit key) header.d=armh.onmicrosoft.com header.b=qcQJgEG8
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xKDzINFpCLFO for <cbor@ietfa.amsl.com>; Thu, 17 Jun 2021 02:08:35 -0700 (PDT)
Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2083.outbound.protection.outlook.com [40.107.20.83]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A7E953A0881 for <cbor@ietf.org>; Thu, 17 Jun 2021 02:08:35 -0700 (PDT)
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=aor2vhRF5T5pfWvrl4gQieZXIKzj1ZogAj8HhkPQMkM=; b=qcQJgEG82BgVcg/xkPPIxzdGvm+JtsYIB+j5MQVk0Crhot9lwGXvSAmy0PLF/T6P4eQX5CuxX9OSSeQnp70ByDXaG3Aa7XU1J3loUxZP99OFDCgDMo9YJoZ2J3qpnh6IGSmoZjt4MgvtS1DSWlZRN1zcRo+uYEzRsX7QDgimWos=
Received: from DU2PR04CA0273.eurprd04.prod.outlook.com (2603:10a6:10:28c::8) by DBBPR08MB6041.eurprd08.prod.outlook.com (2603:10a6:10:206::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.23; Thu, 17 Jun 2021 09:08:30 +0000
Received: from DB5EUR03FT058.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:28c:cafe::ea) by DU2PR04CA0273.outlook.office365.com (2603:10a6:10:28c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.18 via Frontend Transport; Thu, 17 Jun 2021 09:08:30 +0000
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; ietf.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;ietf.org; 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;
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT058.mail.protection.outlook.com (10.152.20.255) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.16 via Frontend Transport; Thu, 17 Jun 2021 09:08:29 +0000
Received: ("Tessian outbound 596959d6512a:v93"); Thu, 17 Jun 2021 09:08:29 +0000
X-CheckRecipientChecked: true
X-CR-MTA-CID: 2c6ef75b25cff849
X-CR-MTA-TID: 64aa7808
Received: from 829da3bc6607.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 6F059946-ACC3-43DD-9480-2F6C4EC058C7.1; Thu, 17 Jun 2021 09:08:22 +0000
Received: from EUR03-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 829da3bc6607.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 17 Jun 2021 09:08:22 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PDZj0Z+vbNH5uf5diIkJzw0R6vdz2mXK9GEJ3nqP2OMuIHCnwdx7+rf91jBhNyhVWBVNg9k46fPAHrjpD8cIsjvituM61HVR0ay8dDfMLql8xAFQSxOGlQ1LgHiHJ7JH2dmpHdJ2pO1osl0vG/PYcpakelzAAjhisEOn8sV+nucudjSlV4MsihU1QRib0OBHrkneL5uLFDqrZVKbsnk+xEd/G2LwBSGIr+vfG+dCLGpvswI+A5391pyN2ezjPRxGl0RLHScsNQ7rpk1z7tQqy91In8uGK35u0a8gbjmUn1El22eO9qC8LWi6L+Zi+ti3jH4uFjGJTEUU9UxgjY3eLQ==
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=aor2vhRF5T5pfWvrl4gQieZXIKzj1ZogAj8HhkPQMkM=; b=Fmw8vmS5BMg0cnUS3SpdMJTyRbMsZQRCW3ggwxEOipngb8V1bDzkFNk4blhp+2wWHck4fmY6oTXINeYP+7GFmTzK2GUc98V+dWT/e2TD0hoBCcY7IZg9AQGdOEYyNKAkliGJeyanGTmcpsqtLbilc0vMSWQcl0KHJP2NEN9F73u7TkRB5P07Br5oQ7ToyadXhMRUAyV+3iqEB/3wB4Kko4keGh8ubh4IG5x89DQMcpvi1+cKLA3PKg+b7/bn5q+DtqsCL2W0UYmtky5FInME4n2hHmasmjoLvWPgcHR7BkYkZwA+q1wJ6dufvs4B3OY1qpeXEuEJUCiE5qEtwfEzYQ==
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=aor2vhRF5T5pfWvrl4gQieZXIKzj1ZogAj8HhkPQMkM=; b=qcQJgEG82BgVcg/xkPPIxzdGvm+JtsYIB+j5MQVk0Crhot9lwGXvSAmy0PLF/T6P4eQX5CuxX9OSSeQnp70ByDXaG3Aa7XU1J3loUxZP99OFDCgDMo9YJoZ2J3qpnh6IGSmoZjt4MgvtS1DSWlZRN1zcRo+uYEzRsX7QDgimWos=
Received: from DBAPR08MB5576.eurprd08.prod.outlook.com (2603:10a6:10:1ae::11) by DB7PR08MB3561.eurprd08.prod.outlook.com (2603:10a6:10:42::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.24; Thu, 17 Jun 2021 09:08:20 +0000
Received: from DBAPR08MB5576.eurprd08.prod.outlook.com ([fe80::3487:4e34:2e16:5521]) by DBAPR08MB5576.eurprd08.prod.outlook.com ([fe80::3487:4e34:2e16:5521%3]) with mapi id 15.20.4242.019; Thu, 17 Jun 2021 09:08:19 +0000
From: Brendan Moran <Brendan.Moran@arm.com>
To: Carsten Bormann <cabo@tzi.org>
CC: "cbor@ietf.org" <cbor@ietf.org>
Thread-Topic: [Cbor] Packed CBOR review
Thread-Index: AQHXYpEHP1YPTS/t6U2wn+lIJtSz1asWnBuAgAFPYgA=
Date: Thu, 17 Jun 2021 09:08:18 +0000
Message-ID: <33C84949-0F9C-432C-9C94-DE2C9EE17976@arm.com>
References: <8713C3AB-71C0-4EC0-8977-15F80EC11309@arm.com> <212CE7EA-73BC-47BF-B192-D2D523F4A376@tzi.org>
In-Reply-To: <212CE7EA-73BC-47BF-B192-D2D523F4A376@tzi.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3654.100.0.2.22)
Authentication-Results-Original: tzi.org; dkim=none (message not signed) header.d=none;tzi.org; dmarc=none action=none header.from=arm.com;
x-originating-ip: [80.7.184.196]
x-ms-publictraffictype: Email
X-MS-Office365-Filtering-Correlation-Id: 8943cd1b-00e6-42b9-4100-08d9316f7965
x-ms-traffictypediagnostic: DB7PR08MB3561:|DBBPR08MB6041:
X-Microsoft-Antispam-PRVS: <DBBPR08MB6041C1AF48C73B3E919E7266EA0E9@DBBPR08MB6041.eurprd08.prod.outlook.com>
x-checkrecipientrouted: true
nodisclaimer: true
x-ms-oob-tlc-oobclassifiers: OLM:8882;OLM:10000;
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Untrusted: BCL:0;
X-Microsoft-Antispam-Message-Info-Original: Lb1Sqc4KWAs/uZKYnPOEQqP7oXeOql8XIB631kLaOSqtFHkxMVh2YISr4cYHRQAlmrbBL2y9u8Y4PGBLNsL1DnvaR29lHxt8xPaDGbNq27OqLZC1IqdEEnVfRMosl0iggZv6qBKbaDXrszTU8pcbpRj7+ebUiCFVXKoybA6YKOcXJ+LE/5+9PgGjZhr/q3kMfTcKRKp3FbXTnNdyUjUO/RAltLCHQSG6s0S8mkTXxXY4kaxNZav2v4WT4Ey7lHnO2oot6GojtVXLFYbZtqQQJtHtrvUR5R2r79kk6kzdhxJG67/QSTQWwkmvo9YOFsj2vdCYu7pJCTTFF3AineeF0U7e6gRKsZ1Iw52BWlCxv7zC/LQ3KNKLRUoiWj241FKomGaVsTiDdyzeRtXIxVxChu/2vAUBcquCjZORO04/0HmNGJ+EKA6ztpr2BnTxDwTqSeP8iBKRS5uft9BQrbzfDjKPkd8aytn/fbk4mHeyAC/6ohjQle8m5S1KLXGwJEWyUUMbLHtZNPHllpnCcFzOVSHvIrf5cIhHhA6qeGMdsl1Syy5RwTa0gyLzuFtHBy35IOz+cdORIb2m8bz1KFLjoPLX32WfmUSDGqyfbZsd7f0CE85zmyCWaeafiHoy8/hdXyIhdPA30EUcc2rNy/37b01BWQWucBUq8C+DWXOukoU=
X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR08MB5576.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(366004)(396003)(346002)(39850400004)(186003)(71200400001)(26005)(5660300002)(83380400001)(6506007)(36756003)(91956017)(53546011)(66556008)(6512007)(66946007)(76116006)(6486002)(316002)(66446008)(2616005)(64756008)(86362001)(8936002)(8676002)(4326008)(122000001)(2906002)(6916009)(33656002)(66476007)(38100700002)(478600001)(45980500001); DIR:OUT; SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: okIC2W8APxGlyfWfQ9IuCPM2yGv+6q76JLD9g66GgqOIqo3LwiHDBEAuDvb8avTq+dzFTLBsIxz3OM6k53tPCxAsfd67yj7McfYrlZ8BO/YMnMdh6a3PNFwngXOUFkh1VeBja0QkyyltQYnSjCahvFE5eszt60VA6Bx6P03H72yQizH1zyDewci8oSXkQPyx9gul3dLzvGmFncyoqr0dNBTm9sYH/qifZpUJJaTFan+p5bhqcXJGyjLRtNfdUjp1HJXYwWZkH78ZnSM8xykRzuMh3xZa3xc/kb+E5zGZRUadCTH3mupG/U3j4B6gpXcCtt4PeIhM2+NaH6CTeQjIoSi36Iaj4CiQBX6achWtaUQhVeX7HcGO+PiwjAZa0pjOLrGjujh1cX4zWDRIEBC07+0XZvIvLqO8nwWnmIs75npmJBCIZXgsjiMrumxD2MXvOBekDAurzZXP0UNI6neyeGdCeo6wU3v5N4BS7yeGGq/kGL4ykN9P/6IuGIj/EWQ7ypOMryW8MSj+jix/8BSGNwRgFzSYm9as8OvzItlO5ycxoewWiNQdMNe1MlxZvMQCjmwmRXr803sd8NcMsIkpnifVK+ebqAtTJfXic11v+bX7B86i049+nYrK8XDivdQlqwVKrswPvHITe8nsTgS6N0EObXbgZoHpu9hdDrZvpQ1g0bHGGarMidaQHw4mf9887GUyvB9XuRMfRj6eukzhMb4funWbrRz61qSPoNDE8O0FK5fDGp57NawMn8KwBfbqd7LHlLVWxmEkMXsbCl3DeitPsUP1pJU5rJENGRCZ1cvqCWQ9h7bMCyqTWhFldH09mOzSOsvwh7XhpvONJQmr71M6i4MQuu4sC84VmLKPE1w8CVG/jHE0zZpiXJvBNMGGymgLoAHOxsyNX+qMvHFoWlB8KEyC05VsW6p/8ZV3IhMrjv1x8rdyoLAIHhtL5C0drq8TmU58OYdSVIDfd+k6VShD6hqx+SycPi7wtrMIvqEhyi+MohG6gCM5jwU3NzV/5bqimL92s76SbWQhVMXHvXW+i6iwuzVfO4MUVDKy9CQqOlYyKyIv6AynND3zMsV6xZFqiThdn1exfxsCAxShbMqbJaxRN7Ar9DhW6CJ0Z5TjQgRDBfBjOyH5Vu3m3K89m7R4g93o1JLwXkEIf9K6FTl16mjkiQbMwQuIrCerHI9VT9UetnO43SGJN0r7xQsfU8Weqc3Ls5U5ARVgMbxKs2GFU88Ivhg7+KBJy8d0W/JkdpAXFyh1/RWrJcUWHWAI0uJm+CluXid4JFbq7AVBt34i69IrfupCKG3L9979jWCV8I8VJqQTAd6yJZI/+Yrm
x-ms-exchange-transport-forked: True
Content-Type: text/plain; charset="utf-8"
Content-ID: <FA8B026EC97DFD4D9175F31D98CEFEFC@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3561
Original-Authentication-Results: tzi.org; dkim=none (message not signed) header.d=none;tzi.org; dmarc=none action=none header.from=arm.com;
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT058.eop-EUR03.prod.protection.outlook.com
X-MS-Office365-Filtering-Correlation-Id-Prvs: b71981ac-f79d-44c2-e0a2-08d9316f7323
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info: 6MLH9c4vQNi3tXfJ82GM9hISl+goB80+ZZKm8NtE0yjXNp2nJmYkB04TFPHe6s7i2vJHDeJ3IvqkBe/wIC9E2W8MpMqdGXWi+b1sU0pWyUxH2vn5Oj2IDHEEM3GIAb3Inv+9SfrC/Q07JsvaAZMGFGkBGLbam/E4wBOOu8yGJHUkOhcFDTY8KnOnfEzMFynEnta6w2dtQdi6hcD1/qEtIII0/gUw2Zuj7GGCJf0taBSv+M1JjWEB8Gv77HR3llM6EtRVuMetPle2v9/3vwXtSfvk1t1ZyGWm9m/+kXtCugUkfwDs5xNBp5PCxOeJcJ8LZkoNRit2Ptq+AIZbopOAmsHeaYYQVKSv+E9YrFygh31QheKlsXFuRmtDP2iitCkJS8rafF4vOFtOiLDDbm3wTTSLR4TuSjRN25dzg0X9z5tpI+fo9D96inT/A8RfwP5w85ZyRV0KMLQ20DEfubFly692Yom5TkJS6WsLFaoqFkYSIgrNF3Af3+qXfavzYSF4KsMf5p5iApqiLeVZbXhVO+SHU3MVIxYvM8h/EkZ3DdFS3h4duO0WE3/Zda/iBR0BYh1HMbX7NEWZFJkHplYFjvSjIQIJyz1mUtts2jyreolhf0YXvPNY4xpsK6DTIt0vkPem2GLhjWjxLV+b6FB/vxRHZ70sZvmq+7Ym1kVgJy4=
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:(4636009)(376002)(346002)(136003)(396003)(39850400004)(36840700001)(46966006)(70206006)(82740400003)(8676002)(82310400003)(6486002)(356005)(8936002)(6506007)(26005)(5660300002)(36860700001)(2616005)(4326008)(186003)(36756003)(6862004)(336012)(53546011)(6512007)(33656002)(83380400001)(47076005)(70586007)(316002)(2906002)(86362001)(478600001)(81166007); DIR:OUT; SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jun 2021 09:08:29.7370 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8943cd1b-00e6-42b9-4100-08d9316f7965
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: DB5EUR03FT058.eop-EUR03.prod.protection.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6041
Archived-At: <https://mailarchive.ietf.org/arch/msg/cbor/1OVZSftmnsWvqj19imXm3Is3nMs>
Subject: Re: [Cbor] Packed CBOR review
X-BeenThere: cbor@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Concise Binary Object Representation \(CBOR\)" <cbor.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/cbor>, <mailto:cbor-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cbor/>
List-Post: <mailto:cbor@ietf.org>
List-Help: <mailto:cbor-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/cbor>, <mailto:cbor-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 17 Jun 2021 09:08:41 -0000

> On 16 Jun 2021, at 14:07, Carsten Bormann <cabo@tzi.org> wrote:
>
> On 2021-06-16, at 11:21, Brendan Moran <Brendan.Moran@arm.com> wrote:
>>
>> I would also propose adding another element to the table: an identifier for a pre-shared reference table:
>
> I’m wondering what the allocation mechanics for such an identifier would be.

We can have our cake and eat it too. I don’t see a reason not to support all of these choices.

>
> Let me go through a few cases and explain how I would handle it.
>
> * IANA
>
> Pro: can be very compact.
> Con (pro as well): high threshold, limited set.
>
> Solution: allocate a tag for the identifier, either wrapping a tag 51 or replacing it (in particular if not all tables need to be advanced).
>
> Task: We probably should define how to define such a tag.
>
> * Context
>
> Pro: can be embedded nicely.
> Con: Wherever the context comes from (e.g., referencing standard) needs to make sure the reference is unambiguous.
>
> Task: Not sure what we can do here, except maybe giving an example.
>
> * URI
>
> Pro: Free for all.
> Con: Hard to control.
>
> There will need to be some security and assurance of non-mutability on the data that URI describes.
> Preferred URI scheme would be ni:, but see next.
>
> Task: Define URI import tag; shape of data structure that should be used (almost, but not entirely, like tag 51).
>
> * Hash
>
> Pro: No-brainer
> Con: Can’t find the dictionary unless I already know it.
> Hashes are large (at least when secure).
>
> Task:
> Define Hash import tag, shape of data structure that is being hashed (see above).
>

If we simply use a different type in each case, the encoding is unambiguous:

Basic-Packed-CBOR = #6.51([ ?dictionary-reference, [*shared], [*prefix], [*suffix], rump])
rump = any
prefix = any
suffix = any
shared = any

dictionary-reference /= standard-reference
dictionary-reference /= uri-reference
dictionary-reference /= hash-reference
dictionary-reference /= context-reference

standard-reference = uint
uri-reference = tstr
hash-reference = bstr
context-reference = null


> Apparently, in all cases it would be good to have a single data structure shape pre-defined for pre-populating the tables (“dictionary”).

I can see two possibilities here:

1) just use the existing structure:

Packed-CBOR-Dictionary = [ ?reference, [*shared], [*prefix], [*suffix]]

2) eliminate any distinction between the different tables; leave that to the packing table.

Packed-CBOR-Dictionary = [?reference, [*fragment]]

For simplicity in the parser, I’d be inclined to go with option 1 and just make the Packed-CBOR-Dictionary a packing table with no rump.


Best Regards,
Brendan
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.