Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lhNVb-0003lV-ST for pgsql-hackers@arkaria.postgresql.org; Fri, 14 May 2021 02:25:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lhNVa-0002oz-Jy for pgsql-hackers@arkaria.postgresql.org; Fri, 14 May 2021 02:24:58 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lhNVa-0002or-7d for pgsql-hackers@lists.postgresql.org; Fri, 14 May 2021 02:24:58 +0000 Received: from mail-m17670.qiye.163.com ([59.111.176.70]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lhNVT-0003cp-IW for pgsql-hackers@postgresql.org; Fri, 14 May 2021 02:24:55 +0000 Received: from activesync-2-hmail-entmail-virt40.dg.163.org (localhost [127.0.0.1]) by mail-m17670.qiye.163.com (Hmail) with ESMTP id 4BC813C00B5; Fri, 14 May 2021 10:24:42 +0800 (CST) From: "Pengchengliu" To: "'Greg Nancarrow'" Cc: "'Andres Freund'" , "'PostgreSQL-development'" References: <000901d742f1$acae3ad0$060ab070$@tju.edu.cn> <20210507035510.he7e5hiu6dsi4rug@alap3.anarazel.de> <000001d7432b$33cc4a00$9b64de00$@tju.edu.cn> <000601d74604$d8af7570$8a0e6050$@tju.edu.cn> <002501d74796$ce4083c0$6ac18b40$@tju.edu.cn> In-Reply-To: Subject: RE: Parallel scan with SubTransGetTopmostTransaction assert coredump Date: Fri, 14 May 2021 10:24:42 +0800 Message-ID: <000601d74868$4cacca30$e6065e90$@tju.edu.cn> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0007_01D748AB.5AD25420" X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQJWZzOrsYDN3Ar+nCJfWwrfcv+5KQKg04GwAjPEpnoBa3FGLQFfmMneAjZdCbACx8BMQwIzciSwqW13NnA= Content-Language: zh-cn X-HM-Spam-Status: e1kfGhgUHx5ZQUtXWQgYFAkeWUFZS1VLWVdZKFlBSE83V1ktWUFJV1kPCR oVCBIfWUFZGR9PHVZKSxhDQ05MTxkYQ0JVEwETFhoSFyQUDg9ZV1kWGg8SFR0UWUFZT0tIVUpKS0 9ISVVLWQY+ X-HM-Sender-Digest: e1kMHhlZQQ8JDh5XWRIfHhUPWUFZRzo3TToYOjgvPxAzMDAvCRZNPAkV MhoJDFVKVUpNSUtCTkJLQ0lNQ0tVMxYaEhdVCx4VHBgTHhUcFxIOOw8RDlUeHw5VGBVFWVdZEgtZ QVlJSkNVSVVCTFVCSVlXWQgBWUFMS0JJSDcG X-HM-Tid: 0a7968b0b747da5akuws4bc813c00b5 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multipart message in MIME format. ------=_NextPart_000_0007_01D748AB.5AD25420 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0008_01D748AB.5AD25420" ------=_NextPart_001_0008_01D748AB.5AD25420 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Greg, Thanks for you replay and test. =20 When main process gets the transaction snapshot in = InitializeParallelDSM->GetTransactionSnapshot, the transaction snapshot = xmin is very likely follows active snapshot xmin. =20 Use gdb it is easy to verify it. Create env as blow: =20 1, Use PG13.2(3fb4c75e857adee3da4386e947ba58a75f3e74b7), init a = cluster database. 2, Append the postgres.conf as below: =20 max_connections =3D 2000 parallel_setup_cost=3D0 parallel_tuple_cost=3D0 min_parallel_table_scan_size=3D0 max_parallel_workers_per_gather=3D8 max_parallel_workers =3D 128=20 =20 3, Start the cluster database. Use the init_test.sql script in = attachment to create some test tables. 4, Use the sub_120.sql script in attachment with pgbench to test it. =20 pgbench -d postgres -p 33550 -n -r -f sub_120.sql -c 200 -j 200 -T = 1800 =20 =20 =20 Then you can login the database, and use GDB to verify it.=20 1, First use explain, make sure force Parallel is OK. =20 postgres=3D# explain (verbose,analyze) select count(*) from contend1; = QUERY PLAN =20 =20 -------------------------------------------------------------------------= ------------------------------------------------------------ ---------------- Finalize Aggregate (cost=3D12006.11..12006.12 rows=3D1 width=3D8) = (actual time=3D1075.214..1075.449 rows=3D1 loops=3D1) Output: count(*) -> Gather (cost=3D12006.08..12006.09 rows=3D8 width=3D8) (actual = time=3D1075.198..1075.433 rows=3D1 loops=3D1) Output: (PARTIAL count(*)) Workers Planned: 8 Workers Launched: 0 -> Partial Aggregate (cost=3D12006.08..12006.09 rows=3D1 = width=3D8) (actual time=3D1074.674..1074.676 rows=3D1 loops=3D1) Output: PARTIAL count(*) -> Parallel Seq Scan on public.contend1 = (cost=3D0.00..11690.06 rows=3D126406 width=3D0) (actual = time=3D0.008..587.454 rows=3D1 010200 loops=3D1) Output: id, val, c2, c3, c4, c5, c6, c7, c8, c9, = c10, crt_time Planning Time: 0.123 ms Execution Time: 1075.588 ms postgres=3D# select pg_backend_pid(); pg_backend_pid=20 ---------------- 2182678 =20 =20 2, use gdb to debug our backend process. Add the breakpoint in = parallel.c:219 and continue. =20 gdb -q -p 2182678=20 ... (gdb) b parallel.c:219 Breakpoint 1 at 0x55d085: file = /home/liupc/build/build_postgres2/../../devel/postgres2/src/backend/acces= s/transam/parallel.c, line 219. (gdb) c Continuing. =20 3, In the psql clinet, we can execute the explain command in step1 = again.=20 After we get the breakpoint in gdb, we wait a moment. Then we = execute next. Use gdb check active_snapshot and transaction_snapshot, = active_snapshot->xmin is 158987 and transaction_snapshot->xmin is = 162160. When I use gdb test it, sometimes active_snapshot is the same as = transaction_snapshot. Then you can try it multiple times, and before = execute next, try wait longer time. =20 Breakpoint 1, InitializeParallelDSM (pcxt=3D0x2d53670) at = /home/liupc/build/build_postgres2/../../devel/postgres2/src/backend/acces= s/transam/parallel.c:219 219 Snapshot transaction_snapshot =3D = GetTransactionSnapshot(); (gdb) n=20 220 Snapshot active_snapshot =3D GetActiveSnapshot(); (gdb)=20 223 oldcontext =3D = MemoryContextSwitchTo(TopTransactionContext); (gdb) p *transaction_snapshot $1 =3D {snapshot_type =3D SNAPSHOT_MVCC, xmin =3D 162160, xmax =3D = 183011, xip =3D 0x2d50d10, xcnt =3D 179, subxip =3D 0x148a9cddf010,=20 subxcnt =3D 0, suboverflowed =3D true, takenDuringRecovery =3D false, = copied =3D false, curcid =3D 0, speculativeToken =3D 0,=20 active_count =3D 0, regd_count =3D 0, ph_node =3D {first_child =3D = 0x0, next_sibling =3D 0x0, prev_or_parent =3D 0x0}, whenTaken =3D 0, lsn = =3D 0} (gdb) p *active_snapshot $2 =3D {snapshot_type =3D SNAPSHOT_MVCC, xmin =3D 158987, xmax =3D = 173138, xip =3D 0x2d53288, xcnt =3D 178, subxip =3D 0x0, subxcnt =3D 0,=20 suboverflowed =3D true, takenDuringRecovery =3D false, copied =3D = true, curcid =3D 0, speculativeToken =3D 0, active_count =3D 1,=20 regd_count =3D 2, ph_node =3D {first_child =3D 0x0, next_sibling =3D = 0x0, prev_or_parent =3D 0x2d52e48}, whenTaken =3D 0, lsn =3D 0} (gdb) =20 =20 Thanks Pengcheng =20 =20 =20 -----Original Message----- From: Greg Nancarrow =20 Sent: 2021=E5=B9=B45=E6=9C=8813=E6=97=A5 22:15 To: Pengchengliu Cc: Andres Freund ; PostgreSQL-development = Subject: Re: Parallel scan with SubTransGetTopmostTransaction assert = coredump =20 On Thu, May 13, 2021 at 11:25 AM Pengchengliu < = pengchengliu@tju.edu.cn> wrote: >=20 =20 > Hi Andres, > Thanks for you replay. =20 Er, it's Greg who has replied so far (not Andres). =20 >=20 > And If you still cannot reproduce it in 2 minitus. Could you run = pgbench longer time, such as 30 or 60 minutes. >=20 =20 Actually, I did run it, multiple times, for more than 60 minutes, but no = assert/crash/coredump occurred in my environment. =20 >=20 > The parallel work process: >=20 > 1, Get Snapshot and set TransactionXmin itself, in = ParallelWorkerMain->BackgroundWorkerInitializeConnectionByOid->GetTransac= tionSnapshot->GetSnapshotData. >=20 > 2, Acooding PARALLEL_KEY_TRANSACTION_SNAPSHOT(xmin 799425, xmax = 82229) from main process, and set TransactionXmin 799425 in = ParallelWorkerMain->RestoreTransactionSnapshot->SetTransactionSnapshot->P= rocArrayInstallRestoredXmin. >=20 > 3, = ExecParallelInitializeWorker->ExecSeqScanInitializeWorker->table_beginsca= n_parallel get the active snapshot(xmin 799162, xmax 82206) from main = process, and set this snapshot to scan->rs_base.rs_snapshot. >=20 > 4, parallel scan begin, with active snapshot(xmin 799162, xmax = 82206) and TransactionXmin(799425),when scan tuple(xmin 799225) = SubTransGetTopmostTransaction assert got. >=20 > In = HeapTupleSatisfiesMVCC->XidInMVCCSnapshot->SubTransGetTopmostTransaction.= >=20 =20 I added some logging at a couple of points in the code: 1) In the Worker process code - ParallelWorkerMain() - where it restores = the serialized transaction and active snapshots (i.e. passed to the = Worker from the main process). 2) In the HeapTupleSatisfiesMVCC() function, immediately before it calls = XidInMVCCSnapshot() =20 After running it for an hour, examination of the log showed that in ALL = cases, the transaction snapshot xmin,xmax was always THE SAME as the = active snapshot xmin,xmax. (Can you verify that this occurs on your system when things are working, = prior to the coredump?) =20 This is different to what you are getting in your environment (at least, = different to what you described when the problem occurs). In your case, you say that the main process gets "the newer transaction = snapshot" - where exactly is this happening in your case? (or this is what you don't yet know?) Perhaps very occasionally this somehow happens on your system and = triggers the Assert (and coredump)? I have not been able to reproduce = that on my system. =20 Have you reproduced this issue on any other system, using the same steps = as you provided? I'm wondering if there might be something else in your environment that = may be influencing this problem. =20 =20 Regards, Greg Nancarrow Fujitsu Australia ------=_NextPart_001_0008_01D748AB.5AD25420 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Hi Greg,

=C2=A0 Thanks for you replay and = test.

=C2=A0

=C2=A0=C2=A0When main process gets the transaction = snapshot in InitializeParallelDSM->GetTransactionSnapshot, =C2=A0the = transaction snapshot xmin is very likely follows active snapshot = xmin.

=C2=A0

=C2=A0=C2=A0Use gdb it is easy to verify = it.

=C2=A0 Create env as = blow:

=C2=A0

=C2=A0=C2=A01, Use = PG13.2(3fb4c75e857adee3da4386e947ba58a75f3e74b7), init a cluster = database.

=C2=A0 2, Append the = postgres.conf as below:

=C2=A0 =

=C2=A0=C2=A0max_connections =3D = 2000

=C2=A0 = parallel_setup_cost=3D0

=C2=A0 = parallel_tuple_cost=3D0

=C2=A0 = min_parallel_table_scan_size=3D0

=C2=A0 = max_parallel_workers_per_gather=3D8

=C2=A0 max_parallel_workers =3D 128 =

=C2=A0=C2=A0

=C2=A0=C2=A03, Start the cluster database. Use the = init_test.sql script in attachment to create some test = tables.

=C2=A0 4, Use the = sub_120.sql script in attachment with pgbench to test = it.

=C2=A0

=C2=A0=C2=A0pgbench=C2=A0 -d postgres -p = 33550=C2=A0 -n -r -f sub_120.sql=C2=A0=C2=A0 -c 200 -j 200 -T = 1800

 

 

 

=C2=A0 = Then you can login the database, and use GDB to verify it. =

=C2=A0=C2=A01, First use explain, = make sure force Parallel is OK.

 

=C2=A0 = postgres=3D# explain (verbose,analyze) select count(*) from = contend1;

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 QUERY = PLAN=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0

----------------------------------------------------= -------------------------------------------------------------------------= --------

----------------

Finalize Aggregate=C2=A0 = (cost=3D12006.11..12006.12 rows=3D1 width=3D8) (actual = time=3D1075.214..1075.449 rows=3D1 loops=3D1)

=C2=A0=C2=A0 Output: count(*)

=C2=A0=C2=A0 ->=C2=A0 Gather=C2=A0 = (cost=3D12006.08..12006.09 rows=3D8 width=3D8) (actual = time=3D1075.198..1075.433 rows=3D1 loops=3D1)

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = Output: (PARTIAL count(*))

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = Workers Planned: 8

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = Workers Launched: 0

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = ->=C2=A0 Partial Aggregate=C2=A0 (cost=3D12006.08..12006.09 rows=3D1 = width=3D8) (actual time=3D1074.674..1074.676 rows=3D1 = loops=3D1)

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Output: PARTIAL count(*)

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ->=C2=A0 Parallel Seq Scan on = public.contend1=C2=A0 (cost=3D0.00..11690.06 rows=3D126406 width=3D0) = (actual time=3D0.008..587.454 rows=3D1

010200 loops=3D1)

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = Output: id, val, c2, c3, c4, c5, c6, c7, c8, c9, c10, = crt_time

Planning Time: 0.123 = ms

Execution Time: 1075.588 = ms

=C2=A0postgres=3D# select = pg_backend_pid();

pg_backend_pid =

----------------

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = 2182678

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =

 

=C2=A0 2, use gdb to debug our backend process. Add = the breakpoint in parallel.c:219 and continue.

=C2=A0

=C2=A0=C2=A0gdb=C2=A0 -q -p 2182678 =

=C2=A0=C2=A0...

=C2=A0 (gdb) b parallel.c:219

Breakpoint 1 at 0x55d085: file = /home/liupc/build/build_postgres2/../../devel/postgres2/src/backend/acces= s/transam/parallel.c, line 219.

=C2=A0 (gdb) c

Continuing.

 

=C2=A0 = 3, In the psql clinet, we can execute the explain command in step1 = again.

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0After we get the = breakpoint in gdb, we wait a moment. Then we execute = next.

=C2=A0=C2=A0=C2=A0=C2=A0 Use = gdb check active_snapshot and transaction_snapshot, = active_snapshot->xmin is 158987 and transaction_snapshot->xmin is = 162160.

When I use gdb test it, sometimes = active_snapshot is the same as transaction_snapshot. Then you can try it = multiple times, and before execute next, try wait longer = time.

=C2=A0=C2=A0 =

=C2=A0=C2=A0=C2=A0Breakpoint 1, = InitializeParallelDSM (pcxt=3D0x2d53670)

=C2=A0=C2=A0=C2=A0 at = /home/liupc/build/build_postgres2/../../devel/postgres2/src/backend/acces= s/transam/parallel.c:219

219=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 Snapshot=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = transaction_snapshot =3D GetTransactionSnapshot();

(gdb) n

220=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 Snapshot=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = active_snapshot =3D GetActiveSnapshot();

(gdb)

223=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 oldcontext =3D = MemoryContextSwitchTo(TopTransactionContext);

(gdb) p *transaction_snapshot

$1 =3D {snapshot_type =3D SNAPSHOT_MVCC, xmin =3D = 162160, xmax =3D 183011, xip =3D 0x2d50d10, xcnt =3D 179, subxip =3D = 0x148a9cddf010,

=C2=A0=C2=A0subxcnt =3D 0, suboverflowed =3D true, = takenDuringRecovery =3D false, copied =3D false, curcid =3D 0, = speculativeToken =3D 0,

=C2=A0=C2=A0active_count =3D 0, regd_count =3D 0, = ph_node =3D {first_child =3D 0x0, next_sibling =3D 0x0, prev_or_parent = =3D 0x0}, whenTaken =3D 0, lsn =3D 0}

(gdb) p *active_snapshot

$2 =3D {snapshot_type =3D SNAPSHOT_MVCC, xmin =3D = 158987, xmax =3D 173138, xip =3D 0x2d53288, xcnt =3D 178, subxip =3D = 0x0, subxcnt =3D 0,

=C2=A0=C2=A0suboverflowed =3D true, = takenDuringRecovery =3D false, copied =3D true, curcid =3D 0, = speculativeToken =3D 0, active_count =3D 1,

=C2=A0=C2=A0regd_count =3D 2, ph_node =3D = {first_child =3D 0x0, next_sibling =3D 0x0, prev_or_parent =3D = 0x2d52e48}, whenTaken =3D 0, lsn =3D 0}

(gdb)=C2=A0

 

Thanks

Pengcheng

=C2=A0

=C2=A0=C2=A0

 

-----Original Message-----
From: Greg Nancarrow = <gregn4422@gmail.com>
Sent: 2021=E5=B9=B45=E6=9C=8813=E6=97=A5 = 22:15
To: Pengchengliu <pengchengliu@tju.edu.cn>
Cc: Andres = Freund <andres@anarazel.de>; PostgreSQL-development = <pgsql-hackers@postgresql.org>
Subject: Re: Parallel scan with = SubTransGetTopmostTransaction assert coredump

 

On = Thu, May 13, 2021 at 11:25 AM Pengchengliu <pengchengliu@tju.edu.cn> wrote:

> 

 

> = Hi Andres,

>=C2=A0 Thanks for = you replay.

 

Er, = it's Greg who has replied so far (not Andres).

 

> 

>=C2=A0=C2=A0 And If you still cannot reproduce = it in 2 minitus. Could you run pgbench longer time, such as 30 or 60 = minutes.

> 

 

Actually, I did run it, multiple times, for more = than 60 minutes, but no assert/crash/coredump occurred in my = environment.

 

> 

>=C2=A0=C2=A0 The parallel work = process:

> 

>=C2=A0=C2=A0 1, Get Snapshot and set = TransactionXmin itself, in = ParallelWorkerMain->BackgroundWorkerInitializeConnectionByOid->GetT= ransactionSnapshot->GetSnapshotData.

> 

>=C2=A0=C2=A0 2, Acooding = PARALLEL_KEY_TRANSACTION_SNAPSHOT(xmin 799425, xmax 82229) from main = process, and set TransactionXmin 799425 in = ParallelWorkerMain->RestoreTransactionSnapshot->SetTransactionSnaps= hot->ProcArrayInstallRestoredXmin.

> 

>=C2=A0=C2=A0 3, = ExecParallelInitializeWorker->ExecSeqScanInitializeWorker->table_be= ginscan_parallel get the active snapshot(xmin 799162, xmax=C2=A0 82206) = from main process, and set this snapshot to = scan->rs_base.rs_snapshot.

> 

>=C2=A0=C2=A0 4, parallel scan begin, with = active snapshot(xmin 799162, xmax=C2=A0 82206) and = TransactionXmin(799425),when scan tuple(xmin 799225) = SubTransGetTopmostTransaction assert got.

> 

>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 In=C2=A0 = HeapTupleSatisfiesMVCC->XidInMVCCSnapshot->SubTransGetTopmostTransa= ction.

> 

 

I = added some logging at a couple of points in the code:

1) In the Worker process code - = ParallelWorkerMain() - where it restores the serialized transaction and = active snapshots (i.e. passed to the Worker from the main = process).

2) In the = HeapTupleSatisfiesMVCC() function, immediately before it calls = XidInMVCCSnapshot()

 

After = running it for an hour, examination of the log showed that in ALL cases, = the transaction snapshot xmin,xmax was always THE SAME as the active = snapshot xmin,xmax.

(Can you = verify that this occurs on your system when things are working, prior to = the coredump?)

 

This = is different to what you are getting in your environment (at least, = different to what you described when the problem = occurs).

In your case, you say = that the main process gets "the newer transaction snapshot" - = where exactly is this happening in your case?

(or this is what you don't yet = know?)

Perhaps very occasionally = this somehow happens on your system and triggers the Assert (and = coredump)?=C2=A0 I have not been able to reproduce that on my = system.

 

Have you reproduced this issue on any other system, = using the same steps as you provided?

I'm wondering if there might be something else in = your environment that may be influencing this problem.

 

 

Regards,

Greg = Nancarrow

Fujitsu = Australia

------=_NextPart_001_0008_01D748AB.5AD25420-- ------=_NextPart_000_0007_01D748AB.5AD25420 Content-Type: application/x-tar; name="test_script.tar" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test_script.tar" dGVzdF9zY3JpcHQvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3MDAAMDAwMTc1 NwAwMDAxNzU3ADAwMDAwMDAwMDAwADE0MDQ1MjEwMDIxADAxMjQyNAAgNQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGxpdXBjAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAbGl1cGMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0 ZXN0X3NjcmlwdC9zdWJfMTIwLnNxbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDYwMAAwMDAxNzU3 ADAwMDE3NTcAMDAwMDAwNDUwMjYAMTQwNDUyMTAwMjEAMDE0MzMxACAwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbGl1cGMAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABsaXVwYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoK QkVHSU47ClxzZXQgbnVtIHJhbmRvbSgxLDEwKQpcc2V0IHBudW0gcmFuZG9tKDEsOTk5OTk5OSkK UFJFUEFSRSBzZWxfOnBudW0oaW50ZWdlcikgQVMgU0VMRUNUIGNvdW50KCopIEZST00gY29udGVu ZDpudW0gV0hFUkUgaWQgQkVUV0VFTiAkMSBBTkQgJDEgKyAxMDA7ClBSRVBBUkUgaXN0XzpwbnVt KGludGVnZXIpIEFTIGluc2VydCBpbnRvIGNvbnRlbmQ6bnVtKGlkLHZhbCkgIHZhbHVlcyAoJDEs IDEpOwpQUkVQQVJFIHVwZF86cG51bShpbnRlZ2VyKSBBUyBVUERBVEUgY29udGVuZDpudW0gU0VU IHZhbCA9IHZhbCArIDEgV0hFUkUgaWQgPSAkMTsKClNBVkVQT0lOVCBhXzE7ClxzZXQgcm5kIHJh bmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsK RVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNh dmVwb2ludCBhXzE7ClNBVkVQT0lOVCBhXzI7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVD VVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0o MTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzI7ClNBVkVQ T0lOVCBhXzM7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAq IDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVu dF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzM7ClNBVkVQT0lOVCBhXzQ7ClxzZXQgcm5k IHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lk KTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNl IHNhdmVwb2ludCBhXzQ7ClNBVkVQT0lOVCBhXzU7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpF WEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBu dW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzU7ClNB VkVQT0lOVCBhXzY7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgx MCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNs aWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzY7ClNBVkVQT0lOVCBhXzc7ClxzZXQg cm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50 X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxl YXNlIHNhdmVwb2ludCBhXzc7ClNBVkVQT0lOVCBhXzg7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkw KQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxf OnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzg7 ClNBVkVQT0lOVCBhXzk7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51 bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsg OmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzk7ClNBVkVQT0lOVCBhXzEwOwpc c2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNs aWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsK cmVsZWFzZSBzYXZlcG9pbnQgYV8xMDsKU0FWRVBPSU5UIGFfMTE7ClxzZXQgcm5kIHJhbmRvbSgx LDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VU RSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2lu dCBhXzExOwpTQVZFUE9JTlQgYV8xMjsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUg aXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAq IDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMTI7ClNBVkVQT0lO VCBhXzEzOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6 cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRf aWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8xMzsKU0FWRVBPSU5UIGFfMTQ7ClxzZXQgcm5k IHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lk KTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNl IHNhdmVwb2ludCBhXzE0OwpTQVZFUE9JTlQgYV8xNTsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTAp CkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86 cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMTU7 ClNBVkVQT0lOVCBhXzE2Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBu dW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCAr IDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8xNjsKU0FWRVBPSU5UIGFfMTc7 ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6 Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEp OwpyZWxlYXNlIHNhdmVwb2ludCBhXzE3OwpTQVZFUE9JTlQgYV8xODsKXHNldCBybmQgcmFuZG9t KDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVD VVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBv aW50IGFfMTg7ClNBVkVQT0lOVCBhXzE5Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VU RSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEw ICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8xOTsKU0FWRVBP SU5UIGFfMjA7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAq IDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVu dF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzIwOwpTQVZFUE9JTlQgYV8yMTsKXHNldCBy bmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRf aWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVh c2Ugc2F2ZXBvaW50IGFfMjE7ClNBVkVQT0lOVCBhXzIyOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5 MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2Vs XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8y MjsKU0FWRVBPSU5UIGFfMjM7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86 cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5k ICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzIzOwpTQVZFUE9JTlQgYV8y NDsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCAr IDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsg MSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMjQ7ClNBVkVQT0lOVCBhXzI1Owpcc2V0IHJuZCByYW5k b20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVY RUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZl cG9pbnQgYV8yNTsKU0FWRVBPSU5UIGFfMjY7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVD VVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0o MTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzI2OwpTQVZF UE9JTlQgYV8yNzsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEw ICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xp ZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMjc7ClNBVkVQT0lOVCBhXzI4Owpcc2V0 IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVu dF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVs ZWFzZSBzYXZlcG9pbnQgYV8yODsKU0FWRVBPSU5UIGFfMjk7ClxzZXQgcm5kIHJhbmRvbSgxLDk5 OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBz ZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBh XzI5OwpTQVZFUE9JTlQgYV8zMDsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0 XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpy bmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMzA7ClNBVkVQT0lOVCBh XzMxOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5k ICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQg KyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8zMTsKU0FWRVBPSU5UIGFfMzI7ClxzZXQgcm5kIHJh bmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsK RVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNh dmVwb2ludCBhXzMyOwpTQVZFUE9JTlQgYV8zMzsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVY RUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51 bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMzM7ClNB VkVQT0lOVCBhXzM0Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0o MTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpj bGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8zNDsKU0FWRVBPSU5UIGFfMzU7Clxz ZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xp ZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpy ZWxlYXNlIHNhdmVwb2ludCBhXzM1OwpTQVZFUE9JTlQgYV8zNjsKXHNldCBybmQgcmFuZG9tKDEs OTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRF IHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50 IGFfMzY7ClNBVkVQT0lOVCBhXzM3Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBp c3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICog OnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8zNzsKU0FWRVBPSU5U IGFfMzg7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpy bmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9p ZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzM4OwpTQVZFUE9JTlQgYV8zOTsKXHNldCBybmQg cmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQp OwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ug c2F2ZXBvaW50IGFfMzk7ClNBVkVQT0lOVCBhXzQwOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkK RVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpw bnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV80MDsK U0FWRVBPSU5UIGFfNDE7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51 bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsg OmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzQxOwpTQVZFUE9JTlQgYV80MjsK XHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpj bGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7 CnJlbGVhc2Ugc2F2ZXBvaW50IGFfNDI7ClNBVkVQT0lOVCBhXzQzOwpcc2V0IHJuZCByYW5kb20o MSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNV VEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9p bnQgYV80MzsKU0FWRVBPSU5UIGFfNDQ7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRF IGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAg KiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzQ0OwpTQVZFUE9J TlQgYV80NTsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICog OnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50 X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfNDU7ClNBVkVQT0lOVCBhXzQ2Owpcc2V0IHJu ZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9p ZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFz ZSBzYXZlcG9pbnQgYV80NjsKU0FWRVBPSU5UIGFfNDc7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkw KQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxf OnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzQ3 OwpTQVZFUE9JTlQgYV80ODsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0Xzpw bnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQg KyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfNDg7ClNBVkVQT0lOVCBhXzQ5 Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsg OmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAx KTsKcmVsZWFzZSBzYXZlcG9pbnQgYV80OTsKU0FWRVBPSU5UIGFfNTA7ClxzZXQgcm5kIHJhbmRv bSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhF Q1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVw b2ludCBhXzUwOwpTQVZFUE9JTlQgYV81MTsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNV VEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgx MCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfNTE7ClNBVkVQ T0lOVCBhXzUyOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAg KiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGll bnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV81MjsKU0FWRVBPSU5UIGFfNTM7ClxzZXQg cm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50 X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxl YXNlIHNhdmVwb2ludCBhXzUzOwpTQVZFUE9JTlQgYV81NDsKXHNldCBybmQgcmFuZG9tKDEsOTk5 OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNl bF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFf NTQ7ClNBVkVQT0lOVCBhXzU1Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3Rf OnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJu ZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV81NTsKU0FWRVBPSU5UIGFf NTY7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQg KyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCAr IDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzU2OwpTQVZFUE9JTlQgYV81NzsKXHNldCBybmQgcmFu ZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpF WEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2 ZXBvaW50IGFfNTc7ClNBVkVQT0lOVCBhXzU4Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhF Q1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVt KDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV81ODsKU0FW RVBPSU5UIGFfNTk7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgx MCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNs aWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzU5OwpTQVZFUE9JTlQgYV82MDsKXHNl dCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGll bnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJl bGVhc2Ugc2F2ZXBvaW50IGFfNjA7ClNBVkVQT0lOVCBhXzYxOwpcc2V0IHJuZCByYW5kb20oMSw5 OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUg c2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQg YV82MTsKU0FWRVBPSU5UIGFfNjI7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlz dF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6 cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzYyOwpTQVZFUE9JTlQg YV82MzsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJu ZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lk ICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfNjM7ClNBVkVQT0lOVCBhXzY0Owpcc2V0IHJuZCBy YW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7 CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBz YXZlcG9pbnQgYV82NDsKU0FWRVBPSU5UIGFfNjU7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpF WEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBu dW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzY1OwpT QVZFUE9JTlQgYV82NjsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVt KDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6 Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfNjY7ClNBVkVQT0lOVCBhXzY3Owpc c2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNs aWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsK cmVsZWFzZSBzYXZlcG9pbnQgYV82NzsKU0FWRVBPSU5UIGFfNjg7ClxzZXQgcm5kIHJhbmRvbSgx LDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VU RSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2lu dCBhXzY4OwpTQVZFUE9JTlQgYV82OTsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUg aXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAq IDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfNjk7ClNBVkVQT0lO VCBhXzcwOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6 cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRf aWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV83MDsKU0FWRVBPSU5UIGFfNzE7ClxzZXQgcm5k IHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lk KTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNl IHNhdmVwb2ludCBhXzcxOwpTQVZFUE9JTlQgYV83MjsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTAp CkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86 cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfNzI7 ClNBVkVQT0lOVCBhXzczOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBu dW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCAr IDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV83MzsKU0FWRVBPSU5UIGFfNzQ7 ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6 Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEp OwpyZWxlYXNlIHNhdmVwb2ludCBhXzc0OwpTQVZFUE9JTlQgYV83NTsKXHNldCBybmQgcmFuZG9t KDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVD VVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBv aW50IGFfNzU7ClNBVkVQT0lOVCBhXzc2Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VU RSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEw ICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV83NjsKU0FWRVBP SU5UIGFfNzc7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAq IDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVu dF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzc3OwpTQVZFUE9JTlQgYV83ODsKXHNldCBy bmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRf aWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVh c2Ugc2F2ZXBvaW50IGFfNzg7ClNBVkVQT0lOVCBhXzc5Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5 MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2Vs XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV83 OTsKU0FWRVBPSU5UIGFfODA7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86 cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5k ICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzgwOwpTQVZFUE9JTlQgYV84 MTsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCAr IDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsg MSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfODE7ClNBVkVQT0lOVCBhXzgyOwpcc2V0IHJuZCByYW5k b20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVY RUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZl cG9pbnQgYV84MjsKU0FWRVBPSU5UIGFfODM7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVD VVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0o MTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzgzOwpTQVZF UE9JTlQgYV84NDsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEw ICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xp ZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfODQ7ClNBVkVQT0lOVCBhXzg1Owpcc2V0 IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVu dF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVs ZWFzZSBzYXZlcG9pbnQgYV84NTsKU0FWRVBPSU5UIGFfODY7ClxzZXQgcm5kIHJhbmRvbSgxLDk5 OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBz ZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBh Xzg2OwpTQVZFUE9JTlQgYV84NzsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0 XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpy bmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfODc7ClNBVkVQT0lOVCBh Xzg4Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5k ICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQg KyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV84ODsKU0FWRVBPSU5UIGFfODk7ClxzZXQgcm5kIHJh bmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsK RVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNh dmVwb2ludCBhXzg5OwpTQVZFUE9JTlQgYV85MDsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVY RUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51 bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfOTA7ClNB VkVQT0lOVCBhXzkxOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0o MTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpj bGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV85MTsKU0FWRVBPSU5UIGFfOTI7Clxz ZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xp ZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpy ZWxlYXNlIHNhdmVwb2ludCBhXzkyOwpTQVZFUE9JTlQgYV85MzsKXHNldCBybmQgcmFuZG9tKDEs OTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRF IHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50 IGFfOTM7ClNBVkVQT0lOVCBhXzk0Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBp c3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICog OnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV85NDsKU0FWRVBPSU5U IGFfOTU7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpy bmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9p ZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzk1OwpTQVZFUE9JTlQgYV85NjsKXHNldCBybmQg cmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQp OwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ug c2F2ZXBvaW50IGFfOTY7ClNBVkVQT0lOVCBhXzk3Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkK RVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpw bnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV85NzsK U0FWRVBPSU5UIGFfOTg7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51 bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsg OmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzk4OwpTQVZFUE9JTlQgYV85OTsK XHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpj bGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7 CnJlbGVhc2Ugc2F2ZXBvaW50IGFfOTk7ClNBVkVQT0lOVCBhXzEwMDsKXHNldCBybmQgcmFuZG9t KDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVD VVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBv aW50IGFfMTAwOwpTQVZFUE9JTlQgYV8xMDE7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVD VVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0o MTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzEwMTsKU0FW RVBPSU5UIGFfMTAyOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0o MTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpj bGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8xMDI7ClNBVkVQT0lOVCBhXzEwMzsK XHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpj bGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7 CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMTAzOwpTQVZFUE9JTlQgYV8xMDQ7ClxzZXQgcm5kIHJhbmRv bSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhF Q1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVw b2ludCBhXzEwNDsKU0FWRVBPSU5UIGFfMTA1Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhF Q1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVt KDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8xMDU7ClNB VkVQT0lOVCBhXzEwNjsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVt KDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6 Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMTA2OwpTQVZFUE9JTlQgYV8xMDc7 ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6 Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEp OwpyZWxlYXNlIHNhdmVwb2ludCBhXzEwNzsKU0FWRVBPSU5UIGFfMTA4Owpcc2V0IHJuZCByYW5k b20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVY RUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZl cG9pbnQgYV8xMDg7ClNBVkVQT0lOVCBhXzEwOTsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVY RUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51 bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMTA5OwpT QVZFUE9JTlQgYV8xMTA7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51 bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsg OmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzExMDsKU0FWRVBPSU5UIGFfMTEx Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsg OmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAx KTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8xMTE7ClNBVkVQT0lOVCBhXzExMjsKXHNldCBybmQgcmFu ZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpF WEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2 ZXBvaW50IGFfMTEyOwpTQVZFUE9JTlQgYV8xMTM7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpF WEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBu dW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzExMzsK U0FWRVBPSU5UIGFfMTE0Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBu dW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCAr IDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8xMTQ7ClNBVkVQT0lOVCBhXzEx NTsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCAr IDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsg MSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMTE1OwpTQVZFUE9JTlQgYV8xMTY7ClxzZXQgcm5kIHJh bmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsK RVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNh dmVwb2ludCBhXzExNjsKU0FWRVBPSU5UIGFfMTE3Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkK RVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpw bnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8xMTc7 ClNBVkVQT0lOVCBhXzExODsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0Xzpw bnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQg KyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMTE4OwpTQVZFUE9JTlQgYV8x MTk7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQg KyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCAr IDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzExOTsKU0FWRVBPSU5UIGFfMTIwOwpcc2V0IHJuZCBy YW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7 CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBz YXZlcG9pbnQgYV8xMjA7CkRFQUxMT0NBVEUgQUxMOwpDT01NSVQ7CgAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAB0ZXN0X3NjcmlwdC9pbml0X3Rlc3Quc3FsAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAMDAwMDYwMAAwMDAxNzU3ADAwMDE3NTcAMDAwMDAwMDEyNTEAMTQwNDUyMTAwMjEAMDE1MTUw ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbGl1 cGMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsaXVwYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAACBkbyBsYW5ndWFnZSBwbHBnc3FsICQkICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKCSBkZWNsYXJlCgkgYmVnaW4KCSAgIGV4ZWN1dGUgJ2Ryb3AgdGFibGUgaWYg ZXhpc3RzIGNvbnRlbmQnOwoJICAgICBleGVjdXRlICdjcmVhdGUgdGFibGUgY29udGVuZChpZCBp bnQsIHZhbCBpbnQsIGMyIGludCBkZWZhdWx0IDAsYzMgaW50IGRlZmF1bHQgMCxjNCBpbnQgZGVm YXVsdCAwLGM1IGludCBkZWZhdWx0IDAsYzYgaW50IGRlZmF1bHQgMCxjNyBpbnQgZGVmYXVsdCAw LGM4IGludCBkZWZhdWx0IDAsYzkKCSAgICAgICBpbnQgZGVmYXVsdCAwLGMxMCBpbnQgZGVmYXVs dCAwLCBjcnRfdGltZSB0aW1lc3RhbXAgZGVmYXVsdCBub3coKSknOwoJICAgICAgICAgZXhlY3V0 ZSAnaW5zZXJ0IGludG8gY29udGVuZChpZCx2YWwpIHNlbGVjdCBnZW5lcmF0ZV9zZXJpZXMoMSwx MDAwMDAwKSwxICc7CgkJICAgCgkJICAKCQkgICBmb3IgaSBpbiAxLi4xMCBsb29wCgkJCSAgICAg ICBleGVjdXRlIGZvcm1hdCgnZHJvcCB0YWJsZSBpZiBleGlzdHMgY29udGVuZCVzJywgaSk7CgkJ CSAgICAgICAgICAgZXhlY3V0ZSBmb3JtYXQoJ2NyZWF0ZSB0YWJsZSBjb250ZW5kJXMgYXMgc2Vs ZWN0ICogZnJvbSBjb250ZW5kICcsIGkpOwoJCQkJICAgICBlbmQgbG9vcDsKCQkJICAgICBlbmQ7 CgkJCSAgICAgJCQ7CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ------=_NextPart_000_0007_01D748AB.5AD25420--