Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1svYMx-00FuQ1-SN for pgsql-general@arkaria.postgresql.org; Tue, 01 Oct 2024 08:36:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1svYMw-00DFJ9-U8 for pgsql-general@arkaria.postgresql.org; Tue, 01 Oct 2024 08:36:30 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1svYMw-00DFI3-AX for pgsql-general@lists.postgresql.org; Tue, 01 Oct 2024 08:36:30 +0000 Received: from mail-oi1-x236.google.com ([2607:f8b0:4864:20::236]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1svYMq-001vbu-HE for pgsql-general@lists.postgresql.org; Tue, 01 Oct 2024 08:36:29 +0000 Received: by mail-oi1-x236.google.com with SMTP id 5614622812f47-3e03f0564c6so3313043b6e.2 for ; Tue, 01 Oct 2024 01:36:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1727771784; x=1728376584; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ThE0UDWbf3u97uiFhvL9XWZMpR8WlzGhlMX4dI7ykFc=; b=lnzq0ckEsmO9ew6Uj/2W286wbCyeh4rd0SdDGR4fgMd72AJDoEmKkVkbOTqulxWePl jRpKoMudnZOoWVS5USAVmfQsnztFfmdAsiaS1WQ9Tk1bCOIwXqngSGz6NjKdA/o4OeQf FLhltbiS8KSFS9OtT8DrtppD11woYn3OfCh8wxlECTd5UGvOg1+oIALpMKzJJOelUE5H pbSslWB9MujDa+m/LLpx3wFBh8wJW9sQ1SWlLRdmocu6ZjGB4qCopKhjFHH7g55XtMLG qmf3aeRKju1nIt5VT8kntA/N2f4C/3YEU8XcVYL8PqXokdXrXMYlmi7yqkkZib5ZoKe7 kGgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727771784; x=1728376584; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ThE0UDWbf3u97uiFhvL9XWZMpR8WlzGhlMX4dI7ykFc=; b=RtP/i9/ZR+koL3Sv5w4nb5a4ZKxkz+FsePseaH0nMKz5lEoYtN0EaeRQPVeXrRaD93 OXMJQufyMfCe8/ilOP7t/3g2Bwa5p9O/i1Tl3qVllZcV7goL6K88cACDCm1lr7nds6k3 k1GiX0cco26rlRwzBB6TJiHkhyl2Xjo9e8+bNgh+lLyLYL7T7hbfkujtbaY4QpBEkpUI Xi1Y79YGFhHsNhIMXy2j44QoaWdjNzMRsgm7NRY0CrlOUfipRzfiD7CNc1jWCT0WKEa+ lueoPquW0YQGBqg9HByJPHU3ewBwcghh1SuexbxZftcfvfjjq/vOF7lzAa2fh64NkQhu 1eZw== X-Gm-Message-State: AOJu0YxIJCOICOQY5AZTnDIu26yVAuZM3bo5/S0KEiNW4mpMbSCfjGth APGNWp42Cdm+FCp0Bsk7KYvilWdE/9XPYQLlBoK2UDDvv5fmHuWnTjLBD5oKQPJ01De8uclUkPl c9cu0E/DTjsh/qUACaiGVc31wGo0d8g== X-Google-Smtp-Source: AGHT+IEShYSYB8gg9ezU6kQA0me9nASylE0xnHO2fyPj6hLDAAA7gHJ2gsFoeUX1tTyX3PhsBZv28NU38wy2AxeQvEg= X-Received: by 2002:a05:6808:179d:b0:3e0:41fe:646b with SMTP id 5614622812f47-3e3939e192dmr10632538b6e.42.1727771783711; Tue, 01 Oct 2024 01:36:23 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: David Mullineux Date: Tue, 1 Oct 2024 09:36:12 +0100 Message-ID: Subject: Re: Help with query optimizer To: Siraj G Cc: pgsql-general@lists.postgresql.org Content-Type: multipart/alternative; boundary="0000000000006bd29106236637a0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006bd29106236637a0 Content-Type: text/plain; charset="UTF-8" Hi, Its usually helpful to give some details on what 'slow' means and then define what 'fast enough ' means. Just so we know when to stop optimizing. You should also help by giving the DDL of those.tables and any indexes they have etc.. The plan shows me that there are expensive seq scans on 2 tables : conversations and tasks. So it would be good to get the pg_stats items for the columns used on those filters on those tables. I would then look at what indexes you have on those tables to find out if some are not being used and why.( lots of reasons why ). thanks On Tue, 1 Oct 2024, 08:53 Siraj G, wrote: > Hello Experts! > > Can you please help with the attached query as it is taking time to > execute. The execution plan for the same is below: > Thank you! > > Nested Loop Left Join (cost=8176.99..168603.11 rows=1 width=294) (actual > time=3301.886..3303.715 rows=0 loops=1) > Join Filter: (conversation.id = "jobReminders"."conversationId") > Buffers: shared hit=743696 read=78069 dirtied=16 written=10 > I/O Timings: shared read=7224.068 write=0.287 > -> Gather (cost=8176.99..168472.90 rows=1 width=246) (actual > time=3301.885..3303.711 rows=0 loops=1) > Workers Planned: 2 > Workers Launched: 2 > Buffers: shared hit=743696 read=78069 dirtied=16 written=10 > I/O Timings: shared read=7224.068 write=0.287 > -> Nested Loop (cost=7176.99..167472.80 rows=1 width=246) > (actual time=3286.866..3286.874 rows=0 loops=3) > Buffers: shared hit=743696 read=78069 dirtied=16 written=10 > I/O Timings: shared read=7224.068 write=0.287 > -> Nested Loop (cost=7176.56..61685.83 rows=59320 > width=174) (actual time=68.447..1978.593 rows=57917 loops=3) > Buffers: shared hit=284214 read=56135 dirtied=11 > written=9 > I/O Timings: shared read=4546.889 write=0.242 > -> Hash Join (cost=7176.13..20450.20 rows=15571 > width=142) (actual time=68.196..211.016 rows=17903 loops=3) > Hash Cond: (conversation."mailBoxId" = > "mailBox".id) > Buffers: shared hit=7428 read=11254 dirtied=9 > written=3 > I/O Timings: shared read=85.214 write=0.085 > -> Parallel Hash Join (cost=6944.87..20143.53 > rows=26942 width=118) (actual time=67.736..197.476 rows=21937 loops=3) > Hash Cond: (conversation."taskId" = > task.id) > Buffers: shared hit=6678 read=11254 > dirtied=9 written=3 > I/O Timings: shared read=85.214 > write=0.085 > -> Parallel Seq Scan on conversations > conversation (cost=0.00..13029.34 rows=64502 width=102) (actual > time=0.017..79.191 rows=51677 loops=3) > Filter: ((NOT "isCompose") AND > ("parentConversationId" IS NULL) AND (id <> > '559702f9-55a8-47c7-9b5c-93b29baabf3d'::uuid)) > Rows Removed by Filter: 622 > Buffers: shared hit=3605 read=8608 > dirtied=5 written=3 > I/O Timings: shared read=57.862 > write=0.085 > -> Parallel Hash (cost=6583.67..6583.67 > rows=28896 width=16) (actual time=67.046..67.047 rows=22266 loops=3) > Buckets: 131072 Batches: 1 Memory > Usage: 4224kB > Buffers: shared hit=3073 read=2646 > dirtied=4 > I/O Timings: shared read=27.352 > -> Parallel Seq Scan on tasks task > (cost=0.00..6583.67 rows=28896 width=16) (actual time=0.015..48.469 > rows=22266 loops=3) > Filter: (("deletedAt" IS > NULL) AND (type = 'MESSAGE'::enum_tasks_type)) > Rows Removed by Filter: 32166 > Buffers: shared hit=3073 > read=2646 dirtied=4 > I/O Timings: shared > read=27.352 > -> Hash (cost=230.80..230.80 rows=37 > width=24) (actual time=0.382..0.383 rows=37 loops=3) > Buckets: 1024 Batches: 1 Memory Usage: > 11kB > Buffers: shared hit=690 > -> Seq Scan on "mailBoxes" "mailBox" > (cost=0.00..230.80 rows=37 width=24) (actual time=0.021..0.367 rows=37 > loops=3) > Filter: (status = ANY > ('{ACTIVE,SYNCING}'::"enum_mailBoxes_status"[])) > Rows Removed by Filter: 27 > Buffers: shared hit=690 > -> Index Scan using idx_message_fk_conversation_id > on messages (cost=0.42..2.53 rows=12 width=48) (actual time=0.035..0.096 > rows=3 loops=53708) > Index Cond: ("conversationId" = conversation.id > ) > Buffers: shared hit=276786 read=44881 dirtied=2 > written=6 > I/O Timings: shared read=4461.675 write=0.156 > -> Index Scan using "mailMessages_pkey" on "mailMessages" > "messages->mailMessage" (cost=0.43..1.78 rows=1 width=88) (actual > time=0.022..0.022 rows=0 loops=173750) > Index Cond: (id = messages."mailMessageId") > Filter: (("mailId")::text = '< > CAMWt+ZZk_vSuuRU7Wzw76wh4JQLd2i3ZKh7h2+ES4jsjMHsYJQ@mail.gmail.com > >'::text) > Rows Removed by Filter: 1 > Buffers: shared hit=459482 read=21934 dirtied=5 > written=1 > I/O Timings: shared read=2677.179 write=0.045 > -> Seq Scan on "jobReminders" (cost=0.00..129.90 rows=25 width=48) > (never executed) > Filter: (status = 'PENDING'::"enum_jobReminders_status") > Planning: > Buffers: shared hit=105 read=1 > I/O Timings: shared read=0.010 > Planning Time: 2.250 ms > Execution Time: 3303.810 ms > (61 rows) > --0000000000006bd29106236637a0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PHAgZGlyPSJsdHIiPkhpLCA8YnI+DQpJdHMgdXN1YWxseSBoZWxwZnVsIHRvIGdpdmUgc29tZSBk ZXRhaWxzIG9uIHdoYXQgJiMzOTtzbG93JiMzOTsgbWVhbnMgYW5kIHRoZW4gZGVmaW5lIHdoYXQg JiMzOTtmYXN0IGVub3VnaCAmIzM5OyBtZWFucy4gSnVzdCBzbyB3ZSBrbm93IHdoZW4gdG8gc3Rv cCBvcHRpbWl6aW5nLjxicj4NCllvdSBzaG91bGQgYWxzbyBoZWxwIGJ5IGdpdmluZyB0aGUgRERM IG9mIHRob3NlLnRhYmxlcyBhbmQgYW55IGluZGV4ZXMgdGhleSBoYXZlIGV0Yy4uPGJyPg0KVGhl IHBsYW4gc2hvd3MgbWUgdGhhdCB0aGVyZSBhcmUgZXhwZW5zaXZlIHNlcSBzY2FucyBvbiAyIHRh YmxlcyA6IGNvbnZlcnNhdGlvbnMgYW5kIHRhc2tzLjwvcD4NCjxwIGRpcj0ibHRyIj5TbyBpdCB3 b3VsZCBiZSBnb29kIHRvIGdldCB0aGUgcGdfc3RhdHMgaXRlbXMgZm9yIHRoZSBjb2x1bW5zIHVz ZWQgb24gdGhvc2UgZmlsdGVycyBvbiB0aG9zZSB0YWJsZXMuPC9wPg0KPHAgZGlyPSJsdHIiPkkg d291bGQgdGhlbiBsb29rIGF0IHdoYXQgaW5kZXhlcyB5b3UgaGF2ZSBvbiB0aG9zZcKgIHRhYmxl cyB0byBmaW5kIG91dCBpZiBzb21lIGFyZSBub3QgYmVpbmcgdXNlZCBhbmQgd2h5LiggbG90cyBv ZiByZWFzb25zIHdoeSApLjwvcD4NCjxwIGRpcj0ibHRyIj50aGFua3M8YnI+DQo8L3A+DQo8YnI+ PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJnbWFpbF9hdHRy Ij5PbiBUdWUsIDEgT2N0IDIwMjQsIDA4OjUzIFNpcmFqIEcsICZsdDs8YSBocmVmPSJtYWlsdG86 dG9zaXJhai5nQGdtYWlsLmNvbSI+dG9zaXJhai5nQGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxi cj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAw IDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij48ZGl2 IGRpcj0ibHRyIj5IZWxsbyBFeHBlcnRzITxkaXY+PGJyPjwvZGl2PjxkaXY+Q2FuIHlvdSBwbGVh c2UgaGVscCB3aXRoIHRoZSBhdHRhY2hlZCBxdWVyeSBhcyBpdCBpcyB0YWtpbmcgdGltZSB0byBl eGVjdXRlLiBUaGUgZXhlY3V0aW9uIHBsYW4gZm9yIHRoZSBzYW1lIGlzIGJlbG93OjwvZGl2Pjxk aXY+VGhhbmsgeW91ITwvZGl2PjxkaXY+PGJyPjxkaXY+TmVzdGVkIExvb3AgTGVmdCBKb2luIMKg KGNvc3Q9ODE3Ni45OS4uMTY4NjAzLjExIHJvd3M9MSB3aWR0aD0yOTQpIChhY3R1YWwgdGltZT0z MzAxLjg4Ni4uMzMwMy43MTUgcm93cz0wIGxvb3BzPTEpPGJyPsKgIMKgSm9pbiBGaWx0ZXI6ICg8 YSBocmVmPSJodHRwOi8vY29udmVyc2F0aW9uLmlkIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub3Jl ZmVycmVyIj5jb252ZXJzYXRpb24uaWQ8L2E+ID0gJnF1b3Q7am9iUmVtaW5kZXJzJnF1b3Q7LiZx dW90O2NvbnZlcnNhdGlvbklkJnF1b3Q7KTxicj7CoCDCoEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9NzQz Njk2IHJlYWQ9NzgwNjkgZGlydGllZD0xNiB3cml0dGVuPTEwPGJyPsKgIMKgSS9PIFRpbWluZ3M6 IHNoYXJlZCByZWFkPTcyMjQuMDY4IHdyaXRlPTAuMjg3PGJyPsKgIMKgLSZndDsgwqBHYXRoZXIg wqAoY29zdD04MTc2Ljk5Li4xNjg0NzIuOTAgcm93cz0xIHdpZHRoPTI0NikgKGFjdHVhbCB0aW1l PTMzMDEuODg1Li4zMzAzLjcxMSByb3dzPTAgbG9vcHM9MSk8YnI+wqAgwqAgwqAgwqAgwqBXb3Jr ZXJzIFBsYW5uZWQ6IDI8YnI+wqAgwqAgwqAgwqAgwqBXb3JrZXJzIExhdW5jaGVkOiAyPGJyPsKg IMKgIMKgIMKgIMKgQnVmZmVyczogc2hhcmVkIGhpdD03NDM2OTYgcmVhZD03ODA2OSBkaXJ0aWVk PTE2IHdyaXR0ZW49MTA8YnI+wqAgwqAgwqAgwqAgwqBJL08gVGltaW5nczogc2hhcmVkIHJlYWQ9 NzIyNC4wNjggd3JpdGU9MC4yODc8YnI+wqAgwqAgwqAgwqAgwqAtJmd0OyDCoE5lc3RlZCBMb29w IMKgKGNvc3Q9NzE3Ni45OS4uMTY3NDcyLjgwIHJvd3M9MSB3aWR0aD0yNDYpIChhY3R1YWwgdGlt ZT0zMjg2Ljg2Ni4uMzI4Ni44NzQgcm93cz0wIGxvb3BzPTMpPGJyPsKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgQnVmZmVyczogc2hhcmVkIGhpdD03NDM2OTYgcmVhZD03ODA2OSBkaXJ0aWVkPTE2IHdy aXR0ZW49MTA8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBJL08gVGltaW5nczogc2hhcmVkIHJl YWQ9NzIyNC4wNjggd3JpdGU9MC4yODc8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAtJmd0OyDC oE5lc3RlZCBMb29wIMKgKGNvc3Q9NzE3Ni41Ni4uNjE2ODUuODMgcm93cz01OTMyMCB3aWR0aD0x NzQpIChhY3R1YWwgdGltZT02OC40NDcuLjE5NzguNTkzIHJvd3M9NTc5MTcgbG9vcHM9Myk8YnI+ wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBCdWZmZXJzOiBzaGFyZWQgaGl0PTI4NDIx NCByZWFkPTU2MTM1IGRpcnRpZWQ9MTEgd3JpdHRlbj05PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgSS9PIFRpbWluZ3M6IHNoYXJlZCByZWFkPTQ1NDYuODg5IHdyaXRlPTAuMjQy PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLSZndDsgwqBIYXNoIEpvaW4gwqAo Y29zdD03MTc2LjEzLi4yMDQ1MC4yMCByb3dzPTE1NTcxIHdpZHRoPTE0MikgKGFjdHVhbCB0aW1l PTY4LjE5Ni4uMjExLjAxNiByb3dzPTE3OTAzIGxvb3BzPTMpPGJyPsKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgSGFzaCBDb25kOiAoY29udmVyc2F0aW9uLiZxdW90O21h aWxCb3hJZCZxdW90OyA9ICZxdW90O21haWxCb3gmcXVvdDsuaWQpPGJyPsKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgQnVmZmVyczogc2hhcmVkIGhpdD03NDI4IHJlYWQ9 MTEyNTQgZGlydGllZD05IHdyaXR0ZW49Mzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoEkvTyBUaW1pbmdzOiBzaGFyZWQgcmVhZD04NS4yMTQgd3JpdGU9MC4wODU8 YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAtJmd0OyDCoFBhcmFs bGVsIEhhc2ggSm9pbiDCoChjb3N0PTY5NDQuODcuLjIwMTQzLjUzIHJvd3M9MjY5NDIgd2lkdGg9 MTE4KSAoYWN0dWFsIHRpbWU9NjcuNzM2Li4xOTcuNDc2IHJvd3M9MjE5MzcgbG9vcHM9Myk8YnI+ wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBIYXNoIENv bmQ6IChjb252ZXJzYXRpb24uJnF1b3Q7dGFza0lkJnF1b3Q7ID0gPGEgaHJlZj0iaHR0cDovL3Rh c2suaWQiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vcmVmZXJyZXIiPnRhc2suaWQ8L2E+KTxicj7C oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEJ1ZmZlcnM6 IHNoYXJlZCBoaXQ9NjY3OCByZWFkPTExMjU0IGRpcnRpZWQ9OSB3cml0dGVuPTM8YnI+wqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBJL08gVGltaW5nczog c2hhcmVkIHJlYWQ9ODUuMjE0IHdyaXRlPTAuMDg1PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLSZndDsgwqBQYXJhbGxlbCBTZXEgU2NhbiBvbiBj b252ZXJzYXRpb25zIGNvbnZlcnNhdGlvbiDCoChjb3N0PTAuMDAuLjEzMDI5LjM0IHJvd3M9NjQ1 MDIgd2lkdGg9MTAyKSAoYWN0dWFsIHRpbWU9MC4wMTcuLjc5LjE5MSByb3dzPTUxNjc3IGxvb3Bz PTMpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgRmlsdGVyOiAoKE5PVCAmcXVvdDtpc0NvbXBvc2UmcXVvdDspIEFORCAoJnF1b3Q7 cGFyZW50Q29udmVyc2F0aW9uSWQmcXVvdDsgSVMgTlVMTCkgQU5EIChpZCAmbHQ7Jmd0OyAmIzM5 OzU1OTcwMmY5LTU1YTgtNDdjNy05YjVjLTkzYjI5YmFhYmYzZCYjMzk7Ojp1dWlkKSk8YnI+wqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBS b3dzIFJlbW92ZWQgYnkgRmlsdGVyOiA2MjI8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBCdWZmZXJzOiBzaGFyZWQgaGl0PTM2MDUg cmVhZD04NjA4IGRpcnRpZWQ9NSB3cml0dGVuPTM8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBJL08gVGltaW5nczogc2hhcmVkIHJl YWQ9NTcuODYyIHdyaXRlPTAuMDg1PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgLSZndDsgwqBQYXJhbGxlbCBIYXNoIMKgKGNvc3Q9NjU4My42Ny4u NjU4My42NyByb3dzPTI4ODk2IHdpZHRoPTE2KSAoYWN0dWFsIHRpbWU9NjcuMDQ2Li42Ny4wNDcg cm93cz0yMjI2NiBsb29wcz0zKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEJ1Y2tldHM6IDEzMTA3MiDCoEJhdGNoZXM6IDEgwqBN ZW1vcnkgVXNhZ2U6IDQyMjRrQjxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MzA3MyByZWFkPTI2 NDYgZGlydGllZD00PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgSS9PIFRpbWluZ3M6IHNoYXJlZCByZWFkPTI3LjM1Mjxicj7CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC0m Z3Q7IMKgUGFyYWxsZWwgU2VxIFNjYW4gb24gdGFza3MgdGFzayDCoChjb3N0PTAuMDAuLjY1ODMu Njcgcm93cz0yODg5NiB3aWR0aD0xNikgKGFjdHVhbCB0aW1lPTAuMDE1Li40OC40Njkgcm93cz0y MjI2NiBsb29wcz0zKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEZpbHRlcjogKCgmcXVvdDtkZWxldGVkQXQmcXVv dDsgSVMgTlVMTCkgQU5EICh0eXBlID0gJiMzOTtNRVNTQUdFJiMzOTs6OmVudW1fdGFza3NfdHlw ZSkpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgUm93cyBSZW1vdmVkIGJ5IEZpbHRlcjogMzIxNjY8YnI+wqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBCdWZmZXJzOiBzaGFyZWQgaGl0PTMwNzMgcmVhZD0yNjQ2IGRpcnRpZWQ9NDxicj7CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoEkvTyBUaW1pbmdzOiBzaGFyZWQgcmVhZD0yNy4zNTI8YnI+wqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAtJmd0OyDCoEhhc2ggwqAoY29zdD0yMzAuODAuLjIz MC44MCByb3dzPTM3IHdpZHRoPTI0KSAoYWN0dWFsIHRpbWU9MC4zODIuLjAuMzgzIHJvd3M9Mzcg bG9vcHM9Myk8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBCdWNrZXRzOiAxMDI0IMKgQmF0Y2hlczogMSDCoE1lbW9yeSBVc2FnZTogMTFrQjxicj7C oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEJ1ZmZlcnM6 IHNoYXJlZCBoaXQ9NjkwPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgLSZndDsgwqBTZXEgU2NhbiBvbiAmcXVvdDttYWlsQm94ZXMmcXVvdDsgJnF1 b3Q7bWFpbEJveCZxdW90OyDCoChjb3N0PTAuMDAuLjIzMC44MCByb3dzPTM3IHdpZHRoPTI0KSAo YWN0dWFsIHRpbWU9MC4wMjEuLjAuMzY3IHJvd3M9MzcgbG9vcHM9Myk8YnI+wqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBGaWx0ZXI6IChz dGF0dXMgPSBBTlkgKCYjMzk7e0FDVElWRSxTWU5DSU5HfSYjMzk7OjomcXVvdDtlbnVtX21haWxC b3hlc19zdGF0dXMmcXVvdDtbXSkpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgUm93cyBSZW1vdmVkIGJ5IEZpbHRlcjogMjc8YnI+ wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBCdWZmZXJzOiBzaGFyZWQgaGl0PTY5MDxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoC0mZ3Q7IMKgSW5kZXggU2NhbiB1c2luZyBpZHhfbWVzc2FnZV9ma19jb252ZXJzYXRpb25f aWQgb24gbWVzc2FnZXMgwqAoY29zdD0wLjQyLi4yLjUzIHJvd3M9MTIgd2lkdGg9NDgpIChhY3R1 YWwgdGltZT0wLjAzNS4uMC4wOTYgcm93cz0zIGxvb3BzPTUzNzA4KTxicj7CoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEluZGV4IENvbmQ6ICgmcXVvdDtjb252ZXJzYXRp b25JZCZxdW90OyA9IDxhIGhyZWY9Imh0dHA6Ly9jb252ZXJzYXRpb24uaWQiIHRhcmdldD0iX2Js YW5rIiByZWw9Im5vcmVmZXJyZXIiPmNvbnZlcnNhdGlvbi5pZDwvYT4pPGJyPsKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgQnVmZmVyczogc2hhcmVkIGhpdD0yNzY3ODYg cmVhZD00NDg4MSBkaXJ0aWVkPTIgd3JpdHRlbj02PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgSS9PIFRpbWluZ3M6IHNoYXJlZCByZWFkPTQ0NjEuNjc1IHdyaXRl PTAuMTU2PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLSZndDsgwqBJbmRleCBTY2FuIHVzaW5n ICZxdW90O21haWxNZXNzYWdlc19wa2V5JnF1b3Q7IG9uICZxdW90O21haWxNZXNzYWdlcyZxdW90 OyAmcXVvdDttZXNzYWdlcy0mZ3Q7bWFpbE1lc3NhZ2UmcXVvdDsgwqAoY29zdD0wLjQzLi4xLjc4 IHJvd3M9MSB3aWR0aD04OCkgKGFjdHVhbCB0aW1lPTAuMDIyLi4wLjAyMiByb3dzPTAgbG9vcHM9 MTczNzUwKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEluZGV4IENvbmQ6IChp ZCA9IG1lc3NhZ2VzLiZxdW90O21haWxNZXNzYWdlSWQmcXVvdDspPGJyPsKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgRmlsdGVyOiAoKCZxdW90O21haWxJZCZxdW90Oyk6OnRleHQgPSAm IzM5OyZsdDs8YSBocmVmPSJtYWlsdG86Q0FNV3QlMkJaWmtfdlN1dVJVN1d6dzc2d2g0SlFMZDJp M1pLaDdoMiUyQkVTNGpzak1Ic1lKUUBtYWlsLmdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiIHJl bD0ibm9yZWZlcnJlciI+Q0FNV3QrWlprX3ZTdXVSVTdXenc3NndoNEpRTGQyaTNaS2g3aDIrRVM0 anNqTUhzWUpRQG1haWwuZ21haWwuY29tPC9hPiZndDsmIzM5Ozo6dGV4dCk8YnI+wqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBSb3dzIFJlbW92ZWQgYnkgRmlsdGVyOiAxPGJyPsKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgQnVmZmVyczogc2hhcmVkIGhpdD00NTk0ODIgcmVh ZD0yMTkzNCBkaXJ0aWVkPTUgd3JpdHRlbj0xPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgSS9PIFRpbWluZ3M6IHNoYXJlZCByZWFkPTI2NzcuMTc5IHdyaXRlPTAuMDQ1PGJyPsKg IMKgLSZndDsgwqBTZXEgU2NhbiBvbiAmcXVvdDtqb2JSZW1pbmRlcnMmcXVvdDsgwqAoY29zdD0w LjAwLi4xMjkuOTAgcm93cz0yNSB3aWR0aD00OCkgKG5ldmVyIGV4ZWN1dGVkKTxicj7CoCDCoCDC oCDCoCDCoEZpbHRlcjogKHN0YXR1cyA9ICYjMzk7UEVORElORyYjMzk7OjomcXVvdDtlbnVtX2pv YlJlbWluZGVyc19zdGF0dXMmcXVvdDspPGJyPsKgUGxhbm5pbmc6PGJyPsKgIMKgQnVmZmVyczog c2hhcmVkIGhpdD0xMDUgcmVhZD0xPGJyPsKgIMKgSS9PIFRpbWluZ3M6IHNoYXJlZCByZWFkPTAu MDEwPGJyPsKgUGxhbm5pbmcgVGltZTogMi4yNTAgbXM8YnI+wqBFeGVjdXRpb24gVGltZTogMzMw My44MTAgbXM8YnI+KDYxIHJvd3MpPGJyPjwvZGl2PjwvZGl2PjwvZGl2Pg0KPC9ibG9ja3F1b3Rl PjwvZGl2Pg0K --0000000000006bd29106236637a0--