Hello Team, I am beginner to Apache Flink and developing Flink Java Application where I have requirement to consume events form kafkaSource and do some processing then Sink to MongoDb and from same MongoDB source/Fetch the same collection and display in console fetch data, how can I create this flow, as I can source and sink but when I call env.execute it start the flink job and stuck with the last one, like I need this flow should work on arrival of each event, need help please suggest me some solution code example is :public class CarStreams_SinkSource implements Serializable { public static final String SECURITY_PROTOCOL_PROPERTY = "SASL_SSL"; public static final String SECURITY_MECHANISM_PROPERTY = "PLAIN"; public static final String SECURITY_JAAS_CONFIG_PROPERTY = "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"$ConnectionString\" password=\"Endpoint=sb://a-test-eventhub-eastus.servicebus.windows.net/;SharedAccessKeyName=L-PP;SharedAccessKey=Cre+rthtrh55rgegagg+6rtgrt+dgrdg/RY=\";"; public static final String CONSUMER_TIMEOUT_PROPERTY = "300000"; private static final String CAR_EVENT_AA_SCHEDULE = "car-event-schedule"; private static final String BOOTSTRAP_SERVERS = "a-test-eventhub-eastus.servicebus.windows.net:9093"; private static final boolean LOCAL_TESTING = false; public CarEventProcessor carEventProcessor; private final String CAR_COLLECTION_NAME ="A_CarSinkSourceTest"; ObjectMapper mapper = new ObjectMapper(); private static final String URI = "mongodb+srv://car:gdfgd8...@pp-np-eastus-mdb.xgpgt.mongodb.net/?authSource=admin&retryWrites=true&w=majority"; private static final String MONGO_DATABASE = "pp-car"; public CarStreams_SinkSource() { carEventProcessor = new CarEventProcessor(); } public static void main(String[] args) { CarStreams_SinkSource carStreams = new CarStreams_SinkSource(); carStreams.initStreams(); } public void initStreams() { mapper.configure(MapperFeature.INFER_PROPERTY_MUTATORS, false); mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true); try { System.setProperty("org.apache.flink.java.opts", "--add-opens java.base/java.lang=ALL-UNNAMED"); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setRuntimeMode(RuntimeExecutionMode.AUTOMATIC); env.setParallelism(1); env.enableCheckpointing(5000); // setting the checkpoint env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE); env.getCheckpointConfig().setExternalizedCheckpointCleanup(CheckpointConfig.ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION); DataStream<String> rawCarEventStream; KafkaSource<String> aaOhTestEventhubCarEastus = KafkaSource.<String>builder() .setBootstrapServers(BOOTSTRAP_SERVERS) .setTopics(CAR_EVENT_AA_SCHEDULE, CAR_EVENT_AA_TIME, CAR_EVENT_AA_AIRCRAFT, CAR_EVENT_AA_MISC, CAR_EVENT_AA_DEPARTURE_ARRIVAL, CAR_EVENT_AA_LOAD, CAR_EVENT_AA_FUEL) .setGroupId("pp") .setStartingOffsets(OffsetsInitializer.earliest()) .setProperty(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, SECURITY_PROTOCOL_PROPERTY) .setProperty(SaslConfigs.SASL_MECHANISM, SECURITY_MECHANISM_PROPERTY) .setProperty(SaslConfigs.SASL_JAAS_CONFIG, SECURITY_JAAS_CONFIG_PROPERTY) .setProperty(ConsumerConfig.REQUEST_TIMEOUT_MS_CONFIG, CONSUMER_TIMEOUT_PROPERTY) .setProperty(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()) .setProperty(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()) .setValueOnlyDeserializer(new SimpleStringSchema()) .build(); rawCarEventStream = env.fromSource(aaOhTestEventhubCarEastus, WatermarkStrategy.noWatermarks(), "aa-oh-test-eventhub-car") .name("carProcessor-rawCarEventStream"); DataStream<CarRawEvent> carRawEventStream = rawCarEventStream.map((MapFunction<String, CarRawEvent>) value -> { CarRawEvent carRawEvent = mapper.readValue(value, CarRawEvent.class); createCarKey(carRawEvent); return carRawEvent; }).name("car-rawEvent-map").keyBy(CarRawEvent::getCarKey); processCarEvents(carRawEventStream, env); } catch (Exception e) { log.error("Failed with exception " + e); e.printStackTrace(); } log.info("Exit CarStreams::processCarRawEvents"); } void processCarEvents(DataStream<CarRawEvent> carRawEventStream, StreamExecutionEnvironment env) throws Exception { DataStream<Car> carStream = carEventProcessor.processCarEvents(carRawEventStream).keyBy(Car::getCarKey); carStream.sinkTo(sinkToMongoDB(CAR_COLLECTION_NAME, Car.class)).name("car-mongoSink"); env.execute("CarProcessor Job"); List<Car> cars = getCarFromMongoDB(); System.out.println("cars=>"+cars.size()); env.execute("CarProcessor Job"); } public List<com.flink.datamodel.Car> getCarFromMongoDB() throws Exception { List<com.flink.datamodel.Car> carList = new ArrayList<>(); MongoSource<String> source = createMongoSource(CAR_COLLECTION_NAME); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setRuntimeMode(RuntimeExecutionMode.AUTOMATIC); env.setParallelism(1); env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE); env.getCheckpointConfig().setExternalizedCheckpointCleanup(CheckpointConfig.ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION); env.getConfig().setRestartStrategy(RestartStrategies.fixedDelayRestart(3, org.apache.flink.api.common.time.Time.seconds(10))); DataStream<String> carDataStream = env.fromSource(source, WatermarkStrategy.noWatermarks(), "MongoDB-car-source"); carDataStream.print("after fetch:"); DataStream<com.flink.datamodel.Car> carStream = carDataStream.map((MapFunction<String, com.flink.datamodel.Car>) value -> { com.flink.datamodel.Car filteredcar = mapper.readValue(value, com.flink.datamodel.Car.class); return filteredcar; }).name("getCarFromMongoDB-filtered-map").keyBy(com.flink.datamodel.Car::getCarKey); env.execute("Read from MongoDB-getCarFromMongoDB"); Iterator<Car> myOutput = DataStreamUtils.collect(carStream); while (myOutput.hasNext()) carList.add(myOutput.next()); return carList; } public MongoSource<String> createMongoSource(String collectionName){ MongoSource<String> source = MongoSource.<String>builder() .setUri(URI) .setDatabase(MONGO_DATABASE) .setCollection(collectionName) .setNoCursorTimeout(true) .setPartitionStrategy(PartitionStrategy.SAMPLE) .setPartitionSize(MemorySize.ofMebiBytes(64)) .setSamplesPerPartition(10) .setDeserializationSchema(new MongoDeserializationSchema<String>() { @Override public String deserialize(BsonDocument document) { return document.toJson(); } @Override public TypeInformation<String> getProducedType() { return BasicTypeInfo.STRING_TYPE_INFO; } }) .build(); return source; } }
Any help would be appreciated. Thanks and regards, ANITA KUMARI | Software Engineer Sr | Insight t. 480-366-7025 | c. 913.272.9568 | anita.kum...@insight.com | insight.com -----Original Message----- From: Kumari, Anita Sent: Monday, October 9, 2023 8:47 AM To: user-sc.1696859006.jobhkhjcpbkgdkojonii-Anita.Kumari=insight....@flink.apache.org Subject: RE: confirm subscribe to user@flink.apache.org Yes add me to the list. Thanks and regards, ANITA KUMARI | Software Engineer Sr | Insight t. 480-366-7025 | c. 913.272.9568 | anita.kum...@insight.com | insight.com -----Original Message----- From: user-h...@flink.apache.org <user-h...@flink.apache.org> Sent: Monday, October 9, 2023 8:43 AM To: Kumari, Anita <anita.kum...@insight.com> Subject: confirm subscribe to user@flink.apache.org External Message - Please be cautious when opening links or attachments in email Hi! This is the ezmlm program. I'm managing the user@flink.apache.org mailing list. To confirm that you would like anita.kum...@insight.com added to the user mailing list, please send a short reply to this address: user-sc.1696859006.jobhkhjcpbkgdkojonii-Anita.Kumari=insight....@flink.apache.org Usually, this happens when you just hit the "reply" button. If this does not work, simply copy the address and paste it into the "To:" field of a new message. This confirmation serves two purposes. First, it verifies that I am able to get mail through to you. Second, it protects you in case someone forges a subscription request in your name. Please note that ALL Apache dev- and user- mailing lists are publicly archived. Do familiarize yourself with Apache's public archive policy at http://www.apache.org/foundation/public-archives.html prior to subscribing and posting messages to user@flink.apache.org. If you're not sure whether or not the policy applies to this mailing list, assume it does unless the list name contains the word "private" in it. Some mail programs are broken and cannot handle long addresses. If you cannot reply to this request, instead send a message to <user-requ...@flink.apache.org> and put the entire address listed above into the "Subject:" line. --- Administrative commands for the user list --- I can handle administrative requests automatically. Please do not send them to the list address! Instead, send your message to the correct command address: To subscribe to the list, send a message to: <user-subscr...@flink.apache.org> To remove your address from the list, send a message to: <user-unsubscr...@flink.apache.org> Send mail to the following for info and FAQ for this list: <user-i...@flink.apache.org> <user-...@flink.apache.org> Similar addresses exist for the digest list: <user-digest-subscr...@flink.apache.org> <user-digest-unsubscr...@flink.apache.org> To get messages 123 through 145 (a maximum of 100 per request), mail: <user-get.123_...@flink.apache.org> To get an index with subject and author for messages 123-456 , mail: <user-index.123_...@flink.apache.org> They are always returned as sets of 100, max 2000 per request, so you'll actually get 100-499. To receive all messages with the same subject as message 12345, send a short message to: <user-thread.12...@flink.apache.org> The messages should contain one line or word of text to avoid being treated as sp@m, but I will ignore their content. Only the ADDRESS you send to is important. You can start a subscription for an alternate address, for example "john@host.domain", just add a hyphen and your address (with '=' instead of '@') after the command word: <user-subscribe-john=host.dom...@flink.apache.org> To stop subscription for this address, mail: <user-unsubscribe-john=host.dom...@flink.apache.org> In both cases, I'll send a confirmation message to that address. When you receive it, simply reply to it to complete your subscription. If despite following these instructions, you do not get the desired results, please contact my owner at user-ow...@flink.apache.org. Please be patient, my owner is a lot slower than I am ;-) --- Enclosed is a copy of the request I received. Return-Path: <anita.kum...@insight.com> Received: (qmail 529643 invoked by uid 116); 9 Oct 2023 13:43:26 -0000 Received: from spamproc1-he-de.apache.org (HELO spamproc1-he-de.apache.org) (116.203.196.100) by apache.org (qpsmtpd/0.94) with ESMTP; Mon, 09 Oct 2023 13:43:26 +0000 Authentication-Results: apache.org; auth=none Received: from localhost (localhost [127.0.0.1]) by spamproc1-he-de.apache.org (ASF Mail Server at spamproc1-he-de.apache.org) with ESMTP id BB5611FF930 for <user-subscr...@flink.apache.org>; Mon, 9 Oct 2023 13:43:26 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamproc1-he-de.apache.org X-Spam-Flag: NO X-Spam-Score: -4.999 X-Spam-Level: X-Spam-Status: No, score=-4.999 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.2, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, WEIRD_PORT=0.001] autolearn=disabled Authentication-Results: spamproc1-he-de.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=insight.com Received: from mx1-ec2-va.apache.org ([116.203.227.195]) by localhost (spamproc1-he-de.apache.org [116.203.196.100]) (amavisd-new, port 10024) with ESMTP id 3sAhuQTmsEFs for <user-subscr...@flink.apache.org>; Mon, 9 Oct 2023 13:43:24 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=139.138.35.239; helo=esa.hc3834-14.iphmx.com; envelope-from=anita.kum...@insight.com; receiver=<UNKNOWN> Received: from esa.hc3834-14.iphmx.com (esa.hc3834-14.iphmx.com [139.138.35.239]) by mx1-ec2-va.apache.org (ASF Mail Server at mx1-ec2-va.apache.org) with ESMTPS id E5389BE7D3 for <user-subscr...@flink.apache.org>; Mon, 9 Oct 2023 13:43:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=insight.com; i=@insight.com; q=dns/txt; s=ces; t=1696859004; x=1728395004; h=from:to:subject:date:message-id:mime-version; bh=nVSD1yMw/YREgJXX8SAvKxASOD0oAkGL5FZbJiMHwHE=; b=P6VBq11t7gpg3IjnueGxJjswztSJEHwUP+NVwej3M62t692+Y/iMSwa0 G4muSiUBmaYqJRAUnMNTQnL7tcklbfyP4tsrXQCXRlXiE+egiTx923Ze2 j9SnEISK57fyi8KrAwcmo7aoWugL3MlSytnH7HPk1mtRVWtkWZ0L7otIu V0N2uOtx+I5AezbCpnVVOa5oAsjaT33wJnp7omPR/VvSHXvUJuU77fkYg jc18mdrbthUD7FBmEx6Jq90m9sspRnIUgXNcGGKGXo8sRw9X6RIOULG3I Gi+0VSZ4q/wdHs5hkgYY//y2CrqkMClnD8OfhIueIVrCONVmpVJwjA9L8 A==; X-CSE-ConnectionGUID: 7BbC2KonQd2yWmpgrUOydQ== X-CSE-MsgGUID: kEhXo4rkT5mCSJ6HnGBE1Q== X-IronPort-RemoteIP: 104.47.56.168 X-IronPort-MID: 81577351 X-IronPort-Reputation: None X-IronPort-Listener: OutgoingMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED Received: from mail-co1nam11lp2168.outbound.protection.outlook.com (HELO NAM11-CO1-obe.outbound.protection.outlook.com) ([104.47.56.168]) by ob1.hc3834-14.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Oct 2023 13:43:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c6GId9m5dxtIdoY+EdildsJSLra5zIK0QOQ+aUa+OAZSFS3U2XBG/GIcuZO0jWf7EanjoMWWtoFJiH3r+9wWjzNKhAOK86TLDR17Ss3wMVYX3tkIRb5VkiST/igSK9scFFECicAXOB8eeMDDxEUSaQsJdsM3ql48/CvcLUUCuNaYQ3ru53hN2HvGAzSWCbXmBfR8nx9ukv49KfvfO9gQFLa/Wc8RtLrtLlwozkr3Nxm4FIupNRkROFgKkoMERGSsxUnwbFIEZk7TdYGGxDYUOSloQPz/gGH3eZA7NenaamJmObjYIYnBBt6jXAHfVKnduaDF/U2yCbbfkcLi20txEw== 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=9LxwrBoOtBn5eBneOrydMdtdQg6QnCzlBoGg+kO7aVM=; b=W5JL9YRm/iK+oEl+Y5uY20LOXhosdDla3uq91T4t9ddAPcrmzHOtpzqVUObFtEOZ2ShOy2oIdtlNJm2D48xemTFZvrIALXdjO7zEMSXJHOPUcySTkgOFngHhJYLYd5wFc0s/XA7iEeAmVC+ToO0VRY14inyrkBx8oPQQs2tJ7x9frvIbyyBuYLqACDWKA9iVsYMfa/qGbx5ehe8vqptYZV/Qw1nwyVg3jbZGz+sPJMvmOczJqB88AwP/sL4+4VNEQzMrN/4lhJR/dlhVJtqxGth+Tt9RIRWXOLA7btQuLwC9fbCn/lIFSpM8ZkxD6/jgy+r37GbrHyUHVPNMOnojMA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=insight.com; dmarc=pass action=none header.from=insight.com; dkim=pass header.d=insight.com; arc=none Received: from BN8PR06MB5777.namprd06.prod.outlook.com (2603:10b6:408:c6::19) by PH0PR06MB7949.namprd06.prod.outlook.com (2603:10b6:510:a6::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.36; Mon, 9 Oct 2023 13:43:14 +0000 Received: from BN8PR06MB5777.namprd06.prod.outlook.com ([fe80::aef7:3c62:a760:f2b9]) by BN8PR06MB5777.namprd06.prod.outlook.com ([fe80::aef7:3c62:a760:f2b9%3]) with mapi id 15.20.6863.032; Mon, 9 Oct 2023 13:43:14 +0000 From: "Kumari, Anita" <anita.kum...@insight.com> To: "user-subscr...@flink.apache.org" <user-subscr...@flink.apache.org> Subject: Help needed in Apache Flink for Event processing from consume,sink then source same events flow Thread-Topic: Help needed in Apache Flink for Event processing from consume,sink then source same events flow Thread-Index: Adn6tm4rrchBRLPYQvmJf5cliu5jRQ== Date: Mon, 9 Oct 2023 13:43:14 +0000 Message-ID: <bn8pr06mb57770bdf237edded8c51ebac87...@bn8pr06mb5777.namprd06.prod.outlook.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=insight.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BN8PR06MB5777:EE_|PH0PR06MB7949:EE_ x-ms-office365-filtering-correlation-id: 423b14a1-4c8a-4241-1ece-08dbc8cdaf8a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: JnUqw0itYucFiBG8FNMKTD6DQRmLnJM6YwyFDtYhSfws8TDzqsC6mhDCwzDCqRGK2JlKjE97mXZ8Xm6tzC5DHWqlX9L8RMOJHRt2bx78q+FOMVWTclDJ08NFEyF/2E1puEc4RPFQ9MjJvVpLhLadxGqPaPVU3bkiaR5fR/3Yr+BxxczJh9V9yya3+dYgu0lmzBjH0RSlk4bbh778o2fOTkU51wclIoMVwspNhkF8LPXh2XnuqP575bLGSvBI7C76BUZ/Kx+JkvJIILTMkj6CwxxXuMLuVygu7HPQ5w4vwKmxJjQP8pEN/av1NgYkZ7TPOxr47kIH9vcfbjyomEVWeVVqCfjtjAkSjd4QfQuCiljaIXsKaRb99v42tpDrB197t2nQtJQeNfrwoX4M2K+DCDEaSF4RxWGxrz713vVhuTcVlwz/YFdfTpwwb9R5ErzCowSxAV1TVJyM443J9cQcw/xdYW4bzswfQcRxFESQ2ae8sebHuDuhMxWebiV9SRyezTnyWUqMTZLprZ9EvNmBw1qmzQLDj/IxpFgY4JRmZP1aHa2zPz55b6zmjTzcd+DdURgFwnJKfS6Mm9qtFyacfDWWA6Cpbi4T6ZB2V0geqxg= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN8PR06MB5777.namprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(396003)(346002)(136003)(376002)(366004)(209900001)(230922051799003)(186009)(64100799003)(451199024)(1800799009)(9686003)(71200400001)(26005)(99936003)(55016003)(82960400001)(38100700002)(86362001)(33656002)(40140700001)(38070700005)(122000001)(166002)(83380400001)(6506007)(2906002)(478600001)(7696005)(21615005)(8676002)(5660300002)(76116006)(52536014)(41300700001)(8936002)(316002)(6916009)(66446008)(64756008)(66946007)(9326002)(66556008)(66476007);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZmxGOXM0Y01rYkhPUHRtM2hHRWZqcys2a2had2srRys4TGdkK1NoT0s2L0M5?= =?utf-8?B?K2hwMG95d0xVcnlEVU5Mb0V3N0w1ZVV3Z1BoM1ZndWtPaG4rYTY5Q25ObXE1?= =?utf-8?B?ZUU3UVJDL0xhZ25QSUxzU2JhdVh4Wm5BV2cxdHJGanYveC9oNGk1N2gySmJh?= =?utf-8?B?ak1vRUFBVUZieGltdnViWS9xYjhQQzFRUnYvYzhQUnh2YTlFWnpXckZDbWtC?= =?utf-8?B?REdMZ2x4b2RCV0JJbDM3bmFESktIZTl2UmVRWWlSTXc1WVY2QmhOWTVNb29v?= =?utf-8?B?OHgyMGlVd2dhTjFDSHc2RXNDL1BucHZTNStMZHhBMkpob01Cc1lhQzZSTCtN?= =?utf-8?B?TWU3TWkrQ245T1BMQUNib0hKRVBNVng2bW9sbTRLT1FOL21tdzIzdytKRUUy?= =?utf-8?B?MFE2MkFCSzFGMHhEeGt4cnhjQ0QwZ1NzdFNVdFZxRHJqTngwM09Qek5hNjNa?= =?utf-8?B?SFVtWlB5Yjc3cTNVZm5xbUFRRXM2dHlBWVVtTHpWRy94TTVGQStHM1ZZWW96?= =?utf-8?B?cllKZHhmdUxFRmFuZnlybWdJQWI5UTU0N3pDOW9MdFUwT2tVeE10REoza0Zu?= =?utf-8?B?WWRjYVo3RTM1S1VZY3lhaU93anRaTzE3aktlTjBVVW1nN2NPZWVrYlhsK1pa?= =?utf-8?B?Sk9vVUgyVTRxblIxNHEvQjE4OUNHbXBwSWh5cXE5M2RjOTFjZVNINVM5UTRi?= =?utf-8?B?YjA5UmZLKzdsMktBU0N1WWs1L3FHc2ZvMHNKNGxBN1czSFo1MWx3TElpM3RG?= =?utf-8?B?dFJpY1hDVjdSak9wblorK0I1VGl1SXpGL1ZtTFVTR0d2eTh6LzRweGdkOE5Q?= =?utf-8?B?RHZtNUJFdXE3WVhzVkJXZTR0dkVFdTFKdmtDOWNYQ1lCRDhoS3poU2JtK1B5?= =?utf-8?B?dVVlYXo2c1RvMkdkSUFzMUZiemdhQ3NkQXlLV2cremZlcDU2ZTgydEROeHVs?= =?utf-8?B?RXllMzhiNWhQYTJFMTBkbGRiMWVsRnBqMTlUNEZ5V3NPQy9wNHplQWpDQ3dm?= =?utf-8?B?NXlBOHZRZXRHVjdya0gxSG84c3NVeUFUMzVqVzArMm5WOWFkTzAzbjFYMi93?= =?utf-8?B?RGFLWTJyUXhSWmJoa3VFbUVTN0pPcXZZd3pQRXZ3elU2Sjd6OGx6Zjk3ODBx?= =?utf-8?B?UmJRaXVLcXMyZ3RWUThLZ2k5eDhwbWJ0T0hvdFRtYlVtUUpxUVhpSERpaDhT?= =?utf-8?B?MjY3bW13MVNRYnlPaXJ5UG8wbllaaWtFVWZyRkJDeWY1Q2wvbEk4VXZqSklM?= =?utf-8?B?VDhpNFFaMmhUSkRCY1FpalBkRTdXQWpnNlcyR2FrMUVITm9IQjA3WFJNeW9u?= =?utf-8?B?UzJGUFdNWklWblZDN0FaeUp6TTJRTzYwTVRzTUlWY1Ivem9zUXlVODg5UGox?= =?utf-8?B?REZMNm1WTUVvNkk3WXlPdU12eWVpWGdMM0Z2Q3lxSTNBVkc1VnNjVXZRVURn?= =?utf-8?B?Q1grT09GbHNXRWpKQ2dIV3FwdHRHUWhQRTlBUFZPVGVSZWhheStRQlRZRmlX?= =?utf-8?B?ZWpPWXpjVGZGSmVKZWJXdWdmamFXR3VrdTNJaDNuR1BXSDI3S2x1aWpaQkMy?= =?utf-8?B?Z1JyQXNFQ2lxNGhEaW9FbExZSUkxaWliblJkVVlwRVZVdXZLNUN2dXAxWkda?= =?utf-8?B?N1lCSHU4SWU4YzV6d2JmRENJeW9PMGtqb1Q4S1ViTklXczlXWUZDZzFTRzNw?= =?utf-8?B?Q2l5MTF4d3gxbFZTWDJhdWRTanEvNFNSS09BaEZWaHFSZ1AvV1NTVzZXZzZQ?= =?utf-8?B?Nm15dkRHSG1ySmVKL1hEVEEzN01yMkNVZlRRWDVZanMyN1pvV1AvZkFMMDNm?= =?utf-8?B?UlR4ZzVNMjNsWGlGdlhsaWlvQ00vd00vZ09JNUJtQncwajhxZkdVK3JOZ0h2?= =?utf-8?B?eVlQSnA1eGpidjFWaW5WL2ZBaFhYeExnZndxMG91ZzdQZ2hoUjYrVDNienlF?= =?utf-8?B?bS9rNUd4OGFyU1o2dDRBZUxXZnllZklDSjBUOFRQaVZ4djZodDFlR1dzVE80?= =?utf-8?B?R2xPVUNGOE4wYnR5anplNm9idUZtQjZhc00ySFpvbHRZTGlSNUUxMDJ2SU5Q?= =?utf-8?B?aWsveEJKdllGbi95dmZVanY5eFNhdnkrRlVpMStISFRDVExEL0wvNlpFcWho?= =?utf-8?Q?aRK7cXMAH50GbrIKUK0snYuqV?= Content-Type: multipart/related; boundary="_004_BN8PR06MB57770BDF237EDDED8C51EBAC87CEABN8PR06MB5777namp_"; type="multipart/alternative" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: lOFz9w+kx6vn9vqFXRn03huMxt/Pn+yxj7TBvli7Bu2VzTKqBIPYcOjd34yyf/gHcvcmjcO6nS38fIjXXTSmw70eqgQW84j0empEASll1zC1infMk/Hn7aDj+lUWKKGV8/5MK/wyY+OzOELv8LVUNef5DlwGYVq2xQGKmRIYx7zyh4WPvI05CBj5MU2GzicNQgHmUUu3vAiz+bXEXJrxkXsc7ZGxpCdQCMrsRZYDSrXUu5NdtHqzkTbpcCHLELlm4UDCuON09YBrJ/+1fxIbdCSjFiBq9BR8rl8hxe5FkIsSPd4RWxFn4a5I0wbDa6JvrexlEjrxW9wwOZRYylB3cC2rGhKvjqz4i89uxohCLzRxHEb81jMyoQlghxbz63AxF0WwmHKmB1LmGku+wkWly0RSFxpnbLiZpaBzR6wImTaWMfa1rCXs/js40UYpwCIbUGQ/NtgqJov4tuk04GvAiOyY353I2p/vlj5MOomDK5rBhZFHs0nROjYT+fKo0/jezASDhMUtZW1rutdYJDEv6NDyoKrkLcWjKNd205m/RIVyoU+VFnx0Qa3bBh1res7a6tbPV0V9uDpTlM4guOjPXlw7G4x4qvw9fRmItAhTL0fwGC3BZnUsILsGhMGB+gfCFtfQ2HlvOUjYnauOx0Nl66tTW1dJ0ePy9BKcgPb7uWw6bkaqZYdzJ+zph5utX6hxvfh8VOF8qTrdaGUoOodza/OWbJH1N2OlNzG/WnATgZDhzRfNVCwp6eLn1Bb0UUu1E8bu8llpuvUSzc/JtqaIPg== X-OriginatorOrg: insight.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN8PR06MB5777.namprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 423b14a1-4c8a-4241-1ece-08dbc8cdaf8a X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Oct 2023 13:43:14.1938 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 6c637512-c417-4e78-9d62-b61258e4b619 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: k1qxcGonBRSTms3uU1ydp3BSjEzxG+vUP0YVg2KdZGUyYZnHFa4lpXcoYJC9Fntd2N/2qGImFbsOUJtWDmIXisaJ5w/Wel0bth7vVMBJ2Ks= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR06MB7949