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 1tPCot-00Au6G-Vc for pgsql-performance@arkaria.postgresql.org; Sun, 22 Dec 2024 03:39:56 +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 1tPCnt-00F8dz-Pe for pgsql-performance@arkaria.postgresql.org; Sun, 22 Dec 2024 03:38:53 +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 1tPCnt-00F8bZ-5E for pgsql-performance@lists.postgresql.org; Sun, 22 Dec 2024 03:38:53 +0000 Received: from mail-yw1-x112a.google.com ([2607:f8b0:4864:20::112a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tPCnp-000l06-M4 for pgsql-performance@lists.postgresql.org; Sun, 22 Dec 2024 03:38:51 +0000 Received: by mail-yw1-x112a.google.com with SMTP id 00721157ae682-6efe4e3d698so26804437b3.0 for ; Sat, 21 Dec 2024 19:38:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1734838729; x=1735443529; 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=i/Dw6NPC31NvwR6uOItZ4Pd2wb7bZPAwOI+3T892tRA=; b=bdpFpZN2d/MPMzhi4v1xoaxVEqz71hFgWtww0pYE8l/R4kfqEjTDF8CAtx4lgYEf4Y Etpp6r5GqzANMSIfZfxw97M2gL4wrWCNCw3dshwCKcbPw5R3tXfPC55brgQt9zFkt0fm x1bU4Y/Tb1oi+Sh2q1NoOa34Jx2GLp45+nbpQ32pS8Fhn+JEH1XEsRD2jiP1vwo1UaTq 9Bx0kEWCEoekpP/mxHpjLZ99ILbUQoWOnO/Nm3HHr0x22Jk7sja/IEMFaGBvdJOUOxlp O44wZogIP4cTWMIsOVOZqy05iIP53yJmENAWccVGdFIjAXYXHtCBO9NL17sa+ACjJ8W4 Iwfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734838729; x=1735443529; 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=i/Dw6NPC31NvwR6uOItZ4Pd2wb7bZPAwOI+3T892tRA=; b=NhuLYfmc07LwbBJ1jl3rOQQifEviuaZd63gaz/FLSqCondsEq+sDVb3GMjvLeotI4F 036d+9hbup9Jm5UPTAMxbi9f7JNTzveO2ve62tZ4AN5angeDbf1LxZGFfm/OJ+krDXI1 nMVMLPitGBeiZM0Z+RTw1PgjSNp7shKA7LiL4ofYhMupFk0p22lPJrYqREUwOJRXv9cj S3YHX57ShMccejPCb4yCrBctuocQBrO4M64rRZe/FzG/2/ueqxUrZAjc/6OvF3cbi0cC XQdyG4aNplnt6pEU0lHZJ7TUZCm3Ykx6f3g+NDZ2ijHvxndHPsVxh6vfzo/tPzDAw+bp hBKw== X-Gm-Message-State: AOJu0YzCJTUOyr90a33+uZE2jyQInW14g7WmkzWvXcN+9Ptrc45EWRC0 BBDM2sCdEcKmleegP4zIespQwsR89Xr5ql+Er5PYxf9/qSOV/3PYXaB5cpfRIb+GQtEC5h7gnP8 BSMVRrCJ4DNDt7CqUvPaTOKC1LZM= X-Gm-Gg: ASbGncvFgMnFHLZ9ImSolG5GH2HC4M2tIvGLFkYCGs48bHMtXLgThDQcO6lYxuWnYpq 7SKBCNcstO4Unow99AfNeNrlBroIEMCdftPBaIA== X-Google-Smtp-Source: AGHT+IFMMkYevT8IGq6PslO0MeL8htasWwEz+yqRIcoW3vMq3taoYZn3R5oWNf31j9huHFnW2xui6YKsTeQsuB/0rkM= X-Received: by 2002:a05:690c:498b:b0:6e3:fd6:6ccb with SMTP id 00721157ae682-6f3f811016cmr68668897b3.13.1734838728622; Sat, 21 Dec 2024 19:38:48 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: James Pang Date: Sun, 22 Dec 2024 11:38:37 +0800 Message-ID: Subject: Re: huge shared_blocks_hit one select but manually run very fast To: David Mullineux Cc: pgsql-performance@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000002a1a5c0629d39e76" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002a1a5c0629d39e76 Content-Type: multipart/alternative; boundary="0000000000002a1a5b0629d39e74" --0000000000002a1a5b0629d39e74 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Yes, we have primary key and another index that include bigint and uuid that stored in database as varchar(64), many sessions inserting ... values and at the same time, many sessions running the select query. table size 13GB, primary is 6GB, the other index is 13GB too, the select query use the 13GB index only scan. in addition to this table and query, during the workload, we have other two hot tables with similar bigint and uuid composite index, inserting by many sessions and select in many sessions too, but the table size is smaller, table 3790MB, index 1445MB. when the workload started, database server cpu got increased very fast and in tens of seconds, cpu is almost 100% used, and then buffermapping LWLock started for these selects , even the inserts started see buffermapping contention too. attached please find top 1 table and sql details, another two tables and it's query are similar. Thanks, James David Mullineux =E6=96=BC 2024=E5=B9=B412=E6=9C=8822=E6= =97=A5=E9=80=B1=E6=97=A5 =E4=B8=8A=E5=8D=8812:41=E5=AF=AB=E9=81=93=EF=BC=9A > Depends on a lot of thongs...Visibility map sounds like it's impacted > here. Are your inserts towards the index (like a monotonically increasing > serial id) or scattered around the index values ? How big is the table > index and shared buffers ? An example would really help > > On Sat, 21 Dec 2024, 11:51 James Pang, wrote: > >> Hi, >> we have a simple select .... from table where ... (that mache the >> index) , table has 80million rows. when many application sessions run t= he >> query and at the same time some other sessions doing insert into ... thi= s >> table. from pg_stat_statements, shared_blks_hit show 31652 / per call. = we >> see very high cpu almost 100% cpu during application workload test, and >> high LWLock BufferMapping waiting for these querys. But manually run th= e >> sql show only 2148 shared_blks_hit/ per call. this is a simple sql, fro= m >> pg_profile we did see it use same index scan as manually running. What >> could be possible reason leading so big difference with shared_blks_hit = ? >> PGv14.8 >> >> Thanks, >> >> James >> > --0000000000002a1a5b0629d39e74 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
=C2=A0 =C2=A0Yes, we have primary key and another index th= at include bigint and uuid that stored in database as varchar(64),=C2=A0 = =C2=A0many sessions inserting ... values=C2=A0 and=C2=A0 =C2=A0at the same = time, many sessions running the select query.=C2=A0 =C2=A0table size 13GB, = primary is 6GB,=C2=A0 =C2=A0the other index is 13GB too, the select query u= se the 13GB index only scan.=C2=A0=C2=A0
=C2=A0 =C2=A0in addition=C2=A0= to this table and query,=C2=A0 during the workload, we have other two hot t= ables with similar bigint and uuid composite index, inserting by many sessi= ons and select in many sessions too, but the table size is smaller,=C2=A0 t= able 3790MB, index 1445MB.=C2=A0
=C2=A0 =C2=A0when the workload s= tarted, database server cpu got increased very fast and in tens of seconds,= cpu is almost 100% used, and then buffermapping=C2=A0LWLock started for th= ese selects , even the inserts started see buffermapping=C2=A0contention to= o.=C2=A0
=C2=A0 attached please find top=C2=A01 table and sql det= ails, another two tables and it's query are similar.

Thanks,

James=C2=A0

David Mullineux <dmullx@gmail.co= m> =E6=96=BC 2024=E5=B9=B412=E6=9C=8822=E6=97=A5=E9=80=B1=E6=97=A5 = =E4=B8=8A=E5=8D=8812:41=E5=AF=AB=E9=81=93=EF=BC=9A

Depends on a lot of thong= s...Visibility map sounds like it's impacted here. Are your inserts tow= ards the index (like a monotonically increasing serial id)=C2=A0 or scatter= ed around the index values ?=C2=A0=C2=A0 How big is the table=C2=A0 index a= nd shared buffers ?=C2=A0=C2=A0 An example would really help


On Sat= , 21 Dec 2024, 11:51 James Pang, <jamespang886@gmail.com> wrote:
Hi,=C2=A0
= =C2=A0 =C2=A0we have a simple select .... from table where ... (that mache = the index) , table has 80million rows.=C2=A0 when many application sessions= run the query and at the same time some other sessions doing insert into .= .. this table. from pg_stat_statements, shared_blks_hit show 31652 / per ca= ll.=C2=A0 =C2=A0we see very high cpu almost 100% cpu during application wor= kload test, and high LWLock=C2=A0BufferMapping waiting for these querys.=C2= =A0 But manually=C2=A0run the sql show only 2148 shared_blks_hit/ per call.= =C2=A0 this is a simple sql, from pg_profile we did see it use same index s= can as manually=C2=A0running.=C2=A0 What could be possible reason leading s= o big difference with shared_blks_hit ?=C2=A0=C2=A0
=C2=A0PGv14.8= =C2=A0

Thanks,

James
--0000000000002a1a5b0629d39e74-- --0000000000002a1a5c0629d39e76 Content-Type: text/plain; charset="US-ASCII"; name="table_sql_details_masked.txt" Content-Disposition: attachment; filename="table_sql_details_masked.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m4z24agq0 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInRlc3RhcHAudGVzdGFibGVuYW1l Ig0KICAgICAgQ29sdW1uICAgICAgfCAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgfCBD b2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgRGVmYXVsdA0KLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLQ0KIGxtYXB1dWlkICAgICAgICAgfCBjaGFyYWN0ZXIgdmFyeWluZyg2 NCkgICAgICAgICAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8DQogc3NzaWQgICAgICAgICAgIHwg YmlnaW50ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgbm90IG51bGwgfA0K IGV2Y3RpZCAgICAgICAgICB8IGJpZ2ludCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICB8IG5vdCBudWxsIHwNCiBsbWFwcGFyYW1ldGVyICAgIHwgY2hhcmFjdGVyIHZhcnlpbmco NDAwMCkgICAgICAgIHwgICAgICAgICAgIHwgbm90IG51bGwgfA0KIGNyZWF0ZXRpbWUgICAgICAg fCB0aW1lc3RhbXAoMCkgd2l0aG91dCB0aW1lIHpvbmUgfCAgICAgICAgICAgfCBub3QgbnVsbCB8 IGNsb2NrX3RpbWVzdGFtcCgpDQogbG1kdGltZSAgICAgICAgICB8IHRpbWVzdGFtcCgwKSB3aXRo b3V0IHRpbWUgem9uZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgY2xvY2tfdGltZXN0YW1wKCkN CkluZGV4ZXM6DQogICAgInBrX3Rlc3RhYmxlbmFtZSIgUFJJTUFSWSBLRVksIGJ0cmVlIChsbWFw dXVpZCwgc3NzaWQpDQogICAgImlkeF90ZXN0YWJsZW5hbWVfZXZjdGlkXzEiIGJ0cmVlIChzc3Np ZCwgZXZjdGlkLCBsbWFwcGFyYW1ldGVyLCBsbWFwdXVpZCkNClB1YmxpY2F0aW9uczoNCiAgICAi dGVzdGFwcF8xMDAwMSINClRyaWdnZXJzOg0KICAgIHRyX3Rlc3RhYmxlbmFtZSBCRUZPUkUgREVM RVRFIE9OIHRlc3RhYmxlbmFtZSBGT1IgRUFDSCBST1cgV0hFTiAoVVNFUiA8PiAnYmF0Y2hhJzo6 bmFtZSBPUiBVU0VSID0gJ2JhdGNoYic6Om5hbWUpIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9m Y3RfdHJfdGVzdGFibGVuYW1lKCkNCiAgICB0cl90ZXN0YWJsZW5hbWVfbG10IEJFRk9SRSBVUERB VEUgT04gdGVzdGFibGVuYW1lIEZPUiBFQUNIIFJPVyBXSEVOIChVU0VSICF+fiAnYmF0Y2glJzo6 dGV4dCkgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2ZjdF9jb21tb25fbG10KCkNCg0KdGFibGUg YW5kIGluZGV4IHNpemUgDQpzZWxlY3QgcmVsbmFtZSxyZWx0dXBsZXMscmVscGFnZXMscmVscGFn ZXMqOC8xMDI0ICJzaXplKG1iKSIgZnJvbSBwZ19jbGFzcyAgd2hlcmUgcmVsbmFtZT0neHh4JzsN Cg0KICAgICAgIHJlbG5hbWUgICAgICAgIHwgICByZWx0dXBsZXMgICB8IHJlbHBhZ2VzICAgICAg ICAgICBzaXplKG1iKQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSAgICAgICAgICANCiB0ZXN0YWJsZW5hbWUgICAgICAgICB8IDguMjM4MjQxNmUrMDcg fCAgMTc2MTkwOCAgICAgICAgICAgMTM3NjQNCiBwa190ZXN0YWJsZW5hbWUgICAgICB8IDguMjM4 MjQxNmUrMDcgfCAgIDcyOTIyOCAgICAgICAgICAgNTY5Nw0KIGlkeF90ZXN0YWJsZW5hbWVfZXZj dGlkXzEgfCA4LjIzODI0MTZlKzA3IHwgIDE3NDI3MzQgICAgICAxMzYxNQ0KDQogc2hvdyBzaGFy ZWRfYnVmZmVyczsNCiBzaGFyZWRfYnVmZmVycw0KLS0tLS0tLS0tLS0tLS0tLQ0KIDY1MzY5TUIN CigxIHJvdykNCg0Kc3NzaWQsIGV2Y3RpZCBhcmUgYmlnaW50ICwgbG1hcHV1aWQgaXMgVVVJRCBh bmQgc3RvcmVkIGluIGRhdGFiYXNlIGFyZSB2YXJjaGFyKDY0KS4gIA0KDQoNClNFTEVDVCBzc3Np ZCxsbWFwdXVpZCBBUyBVVUlEICxldmN0aWQsbG1hcHBhcmFtZXRlciBBUyBsbGxwYXJtIEZST00g dGVzdGFibGVuYW1lDQogICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBldmN0aWQgPSAkMSBB TkQgc3NzaWQgPSAkMg0KICAgICAgICAgICAgICAgICAgICAgICAgQU5EIGxtYXBwYXJhbWV0ZXIg TElLRSAnJXguYWJjJScgQU5EICgobG1hcHBhcmFtZXRlciBMSUtFICclRUQ9JScgQU5EIGxtYXBw YXJhbWV0ZXIgTElLRSAnJUFJRD0lJykgT1IgKGxtYXBwYXJhbWV0ZXIgTElLRSAnJUo9JScgQU5E IGxtYXBwYXJhbWV0ZXIgTElLRSAnJVJUPSUnKSBPUiAoKExJTktQQVJBTUVURVIgTElLRSAnJUVE PSUnIE9SIChMSU5LUEFSQU1FVEVSIExJS0UgJyVKPSUnICApKSBBTkQgbG1hcHBhcmFtZXRlciBM SUtFICclVUo9MSUnKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIEFORCBsbWFwcGFyYW1ldGVy IE5PVCBMSUtFICclZGlzYWJsZWQlJyBBTkQgbG1hcHBhcmFtZXRlciBOT1QgTElLRSAnJUlFSD0l Jw0KICAgICAgICAgICAgICAgICAgICAgICAgRkVUQ0ggRklSU1QgJDMgUk9XUyBPTkxZDQoJCQkJ CQkNCg0KDQogTGltaXQgIChjb3N0PTAuODIuLjguNjMgcm93cz0zMSB3aWR0aD0xMTYpIChhY3R1 YWwgdGltZT0wLjAyMy4uMTQuMzcxIHJvd3M9NyBsb29wcz0xKQ0KICAgT3V0cHV0OiBzc3NpZCwg bG1hcHV1aWQsIGV2Y3RpZCwgbG1hcHBhcmFtZXRlcg0KICAgQnVmZmVyczogc2hhcmVkIGhpdD0y MTQ4DQogICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIGlkeF90ZXN0YWJsZW5hbWVfZXZjdGlk XzEgb24gdGVzdGFibGVuYW1lICAoY29zdD0wLjgyLi4zMC44MSByb3dzPTExOSB3aWR0aD0xMTYp IChhY3R1YWwgdGltZT0wLjAyMi4uMTQuMzY4IHJvdw0Kcz03IGxvb3BzPTEpDQogICAgICAgICBP dXRwdXQ6IHNzc2lkLCBsbWFwdXVpZCwgZXZjdGlkLCBsbWFwcGFyYW1ldGVyDQogICAgICAgICBJ bmRleCBDb25kOiAoKHRlc3RhYmxlbmFtZS5zc3NpZCA9ICd4eHh4eHh4Jzo6YmlnaW50KSBBTkQg KHRlc3RhYmxlbmFtZS5ldmN0aWQgPSAneHh4eHh4eCc6OmJpZ2ludCkpDQogICAgICAgICBGaWx0 ZXI6ICgoKHRlc3RhYmxlbmFtZS5sbWFwcGFyYW1ldGVyKTo6dGV4dCB+fiAnJXguYWJjJSc6OnRl eHQpIEFORCAoKHRlc3RhYmxlbmFtZS5sbWFwcGFyYW1ldGVyKTo6dGV4dCAhfn4gJyVkaXNhYmxl ZCUnOjp0ZXh0KSBBTkQNCiAoKHRlc3RhYmxlbmFtZS5sbWFwcGFyYW1ldGVyKTo6dGV4dCAhfn4g JyVJRUg9JSc6OnRleHQpIEFORCAoKCgodGVzdGFibGVuYW1lLmxtYXBwYXJhbWV0ZXIpOjp0ZXh0 IH5+ICclRUQ9JSc6OnRleHQpIEFORCAoKG10Z2NvbmZlcmVuY2VsaW5rbQ0KYXAubG1hcHBhcmFt ZXRlcik6OnRleHQgfn4gJyVBSUQ9JSc6OnRleHQpKSBPUiAoKCh0ZXN0YWJsZW5hbWUubG1hcHBh cmFtZXRlcik6OnRleHQgfn4gJyVKPSUnOjp0ZXh0KSBBTkQgKCh0ZXN0YWJsZW5hbWUubG1hcHBh cmFtZXRlcik6OnRleHQNCn5+ICclUlQ9JSc6OnRleHQpKSBPUiAoKCgodGVzdGFibGVuYW1lLmxt YXBwYXJhbWV0ZXIpOjp0ZXh0IH5+ICclRUQ9JSc6OnRleHQpIE9SICgodGVzdGFibGVuYW1lLmxt YXBwYXJhbWV0ZXIpOjp0ZXh0IH5+ICclSj0lJzo6dGV4dCkpIEFORCAoKA0KdGVzdGFibGVuYW1l LmxtYXBwYXJhbWV0ZXIpOjp0ZXh0IH5+ICclVUo9MSUnOjp0ZXh0KSkpKQ0KICAgICAgICAgUm93 cyBSZW1vdmVkIGJ5IEZpbHRlcjogMzYxNTUNCiAgICAgICAgIEhlYXAgRmV0Y2hlczogMjYwDQog ICAgICAgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTIxNDgNCiBRdWVyeSBJZGVudGlmaWVyOiAtNDgw MTIwMTk4OTA2NzA2NjI2Nw0KIFBsYW5uaW5nIFRpbWU6IDAuMzE4IG1zDQogRXhlY3V0aW9uIFRp bWU6IDE0LjM5MSBtcw0KIA0KDQphYm92ZSBhcmUgdGVzdCBmcm9tIHBzcWwgbWFudWFsIHJ1bm5p bmcgd2l0aCBwcmVwYXJlZCBzdGF0ZW1lbnQsIHJ1bm5pbmcgbWFueSB0aW1lcywgaXQgc2hvdyBz aGFyZWRfaGl0PTIxNDggLCBpbmRleCBvbmx5IHNjYW4gYnV0IHdpdGggaGVhcCBmZXRjaGVzLiAN Cg0KDQpiZWxvdyBhcmUgcGdfc3RhdF9zdGF0ZW1lbnRzIHNuYXB0c2hvdCBxdWVyeSBhYm91dCB0 aGlzIFNRTCwgDQpzb21lIHNlc3Npb25zIGluc2VydCBpbnRvIHRoaXMgdGFibGUgaW4gcGFyYWxs ZWwsIGFuZCBhdCB0aGUgc2FtZSB0aW1lLCBtYW55IHNlc3Npb25zIHJ1biB0aGlzIHNlbGVjdCBz dGF0ZW1lbnQsIHRoZSBzaGFyZWRfYmxrc19oaXQvY2FsbHMgc2hvdyBhIGh1Z2UgbnVtYmVyDQp0 aGFudCB0ZW5zIG9mIHRpbWVzIG9mIG1hbnVhbGx5IHJ1bm5pbmcgdGVzdCAyMTQ4LiANCg0KcGdf c3RhdF9zdGF0ZW1lbnRzIHF1ZXJ5DQphdmdzYmxrcz1zaGFyZWRfYmxrc19oaXQvY2FsbHMsIGF2 Z2RpcnRpZWQ9c2hhcmVkX2Jsa3NfZGlydGllZC9jYWxsLCBhdmdyZWFkPXNoYXJlZF9ibGtzX3Jl YWQvY2FsbHMsIGF2Z2ZwaT1mcGkvY2FsbHMsIGF2Z3dhbD13YWxieXRlcy9jYWxscyANCg0KICAg ICAgIHNhbXBsZV90aW1lICAgICAgIHwgY2FsbHMgfCAgICBtaW5fZXhlY190aW1lICAgICB8ICAg bWVhbl9leGVjX3RpbWUgICB8ICAgbWF4X2V4ZWNfdGltZSAgICB8IGF2Z3NibGtzIHwgYXZnZGly dGllZCB8IGF2Z3JlYWQgfCBhdmdmcGkgfCAgICAgICAgIGF2Z3dhbA0KICAgICAgICB8ICAgICAg YXZncnRpbWUgICAgICB8IGF2Z3d0aW1lDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tDQotLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tDQog MjAyNC0xMi0yMCAwMjo0NToyMCswMCB8ICAxMjM2IHwgICAgICAgICAgICAgMC4wMjI1NTcgfCAg IDAuNTAxMDQxMjI4MTU1MzQgfCAgICAgICAgICAgMS4zNzcwNDcgfCAgICAgIDgxMCB8ICAgICAg ICAgIDAgfCAgICAgICAwIHwgICAgICAwIHwgMC4zNDYyNzgzMTcxNTIxDQowMzU1OTg3IHwgICAg ICAgICAgICAgICAgICAwIHwgICAgICAgIDANCiAyMDI0LTEyLTIwIDAyOjU1OjMxKzAwIHwgMTE0 MzUgfCAgICAgICAgICAgICAwLjAxNzQ2MyB8ICAgNC4zMjYwMDQ0MTY5NjU0NSB8IDIwMC4zMDk3 Mzk5OTk5OTk5OCB8ICAgICA1MjcyIHwgICAgICAgICAgMCB8ICAgICAgIDAgfCAgICAgIDAgfCAw LjA2OTYxMDg0MzkwMDMNCjA2MDc3ODMgfCAgICAgICAgICAgICAgICAgIDAgfCAgICAgICAgMA0K IDIwMjQtMTItMjAgMDM6MTU6NTkrMDAgfCAxNjAzNSB8ICAgICAgICAgICAgIDAuMDIwMTQzIHwg MTE1LjU0NjY3MjEyNjQxMDE5IHwgICAgICAgMTUxNTcuMzA3NTA4IHwgICAgMjA3MzUgfCAgICAg ICAgICAyIHwgICAgICAgMSB8ICAgICAgMCB8ICAyMjY5LjM1MzEwMjU4OA0KMDg4NTU2MyB8IDAu ODI0OTU1NzE4ODY0OTgyOCB8ICAgICAgICAwDQogMjAyNC0xMi0yMCAwMzoyNToxMCswMCB8ICAg MTQ3IHwgMC4wMTg0NTM5OTk5OTk5OTk5OTggfCAgMTQ0LjMwODQ4ODk1OTE4MzcgfCAxOTguMzcx ODc1MDAwMDAwMDIgfCAgIDIwNjUwNSB8ICAgICAgICAgIDAgfCAgICAgICAwIHwgICAgICAwIHwg ICAgIDEuNTM3NDE0OTY1DQo5ODYzOTQ2IHwgICAgICAgICAgICAgICAgICAwIHwgICAgICAgIDAN CiAyMDI0LTEyLTIwIDA1OjU1OjM4KzAwIHwgICAgNTYgfCAwLjAyODg4NjAwMDAwMDAwMDAwMiB8 IDIwMS41MzA0MzI3MTQyODU3NSB8ICAgICAgICAgODM4LjcwOTAwNCB8ICAgMTk2ODc4IHwgICAg ICAgICAgMCB8ICAgICAgIDAgfCAgICAgODAgfCAgICAzMjk5MzYuNzMyMTQNCjI4NTcxNDMgfCAg ICAgICAgICAgICAgICAgIDAgfCAgICAgICAgMA0KIDIwMjQtMTItMjAgMDY6MzU6MjgrMDAgfCAg NzM0NCB8ICAgICAgICAgICAgIDAuMDI1OTc5IHwgICA2OTQuMDU0MjQzNjU2MzE4IHwgICAgICAg MTAzOTEuNDQxMjY3IHwgICAgMzYxNjIgfCAgICAgICAgICAwIHwgICAgICAgMCB8ICAgICAgMCB8 ICAgMTE3LjE1MTI3OTk1NiAgICAgIA0KNDI3MDE1MyB8ICAgICAgICAgICAgICAgICAgMCB8ICAg ICAgICAwDQogMjAyNC0xMi0yMCAwNzowNTo1OSswMCB8ICAgMTI0IHwgICAgICAgICAgICAgMC4w NTYwNjcgfCAgMTYxLjA1MzE3NzUyNDE5MzYgfCAgICAgICAgIDE2Ny4wNzcyODUgfCAgIDIzNTgx NSB8ICAgICAgICAgIDAgfCAgICAgICAwIHwgICAgICAwIHwgICAgIDEuMDMyMjU4MDY0DQogDQog DQogDQoNCiAgIGluIGFkZHRpb24gdG8gdGhpcyB0YWJsZSBhbmQgcXVlcnksIHRoZSB3b3JrbG9h ZCBkb2luZyBpbnNlcnRpbmcgdG8gYW5vdGhlciB0d28gdGFibGVzIGluIG1hbnkgc2Vzc2lvbnMs IGFuZCBydW5uaW5nIHF1ZXJ5IHNlbGVjdCB3aXRoIHRoZSBpbmRleCBpbiBtYW55IHNlc3Npb25z IHRvby4NCnRoZSBvdGhlciB0d28gdGFibGVzIGhhdmUgc2ltaWxhciBwcmltYXJ5IGFuZCBpbmRl eGVzIHRoYXQgaGF2aW5nIGJpZ2ludCBhbmQgdXVpZCBjb2x1bW5zLCB0aGUgcXVlcnkgdXNlIHRo ZSBpbmRleCB0aGF0IGhhdmUgIGJpZ2ludCwgdXVpZCwgdmFyY2hhciAsMyBjb2x1bW4gY29tcG9z aXRlIGluZGV4LiANCnRhYmxlIHNpemUgMzc5ME1CLCBpbmRleCBzaXplIDE0NDVNQi4NCg0KIA== --0000000000002a1a5c0629d39e76--