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 1rhcMp-00CUOC-IG for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Mar 2024 21:30: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 1rhcMn-002rqD-MC for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Mar 2024 21:30:30 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rhcMn-002rq5-91 for pgsql-hackers@lists.postgresql.org; Tue, 05 Mar 2024 21:30:29 +0000 Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rhcMi-002xb7-OW for pgsql-hackers@postgresql.org; Tue, 05 Mar 2024 21:30:27 +0000 Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-33d36736d4eso124336f8f.1 for ; Tue, 05 Mar 2024 13:30:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1709674223; x=1710279023; darn=postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=Fg6yR3YJ2GU1K7wqyFaiyxcT9t5rdS4dHyHvsrNfghc=; b=bIEwbgeh593nYQJUOuWM2WYH4JA7WtF+Lmg2YE7Q0tci5qo9MeY1/znn9VT5zhPTei 4+i4LasXADaJM5npUdII/XDXPrnV0W+nckWeVka/bY/PChyGCqTlpeZ5nQT6RmM6+2fd YVLBe8ofXBjlKPgAfSBk+hpiRwBNTVcKh5wcsRUG3hksrK3Hoj2rS3L45rv7EDAjh6M0 D9oqDHKNcr1bU7pyPgrXKWpMyhnSg9uMyjYv/vfdxQb7/5Vy4b4dhunUu18wUSCAUO+b X3FguO/fJtrhtpmcnn+ruXjO8wcJ6Pl4gAHcIWoPFhWden/W2b2W9xAHDQFYe3ePKmBE XBlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709674223; x=1710279023; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Fg6yR3YJ2GU1K7wqyFaiyxcT9t5rdS4dHyHvsrNfghc=; b=b1QuO6GAOsLqIYnIxLOcUQeXN5w6M5/TJ+z4T8IBvuhTKhYV1w5vAmLI5GP1shcWky Y+bWvNWkuMzflXqwYpqXmSAyESTIFgqPmlKSz+lsqGZbEHjKsqYxhnNOcyRa9kGSuDYc T0J6noAWKN91d0fB/BJN1sgcPtQ9Aj4LHmnjC227mRpfi6xtHEEhixHm3i/bqLgVkE31 NZ68ixzRM5GHSQU5TiVA1tRkWz+SnqRr0EOO28aPO4fboy9kXwIks+q0e/QvQCEUzJMp SlJTDBSzn92TrUNhoFSX6/hRBPInGkbnWgkA95THrHmPci2//ucefBpp41FIyoI7Lt9y Vatw== X-Forwarded-Encrypted: i=1; AJvYcCX+LPd++2JU72itKyvDbNhDo7r4boqGVSAJa1Oylkxk1NZ5EFIuNudOPca0RARrph4k1M/bRA4FvpuoJzKzVMaXK2HxJ9WkD9bwt9FT X-Gm-Message-State: AOJu0Yzt6siHBne39w48cjv2HSdlz4iioI+8XJ2Uy2H4TYMJWpVpA0rw UATQIiZQ+hnqc8ek9QKzCAvIUkoco4tz3Wl+BCorTiXJ8ARsvSBkyfx2fXRVzg== X-Google-Smtp-Source: AGHT+IE6qCLANndYvUDrQaDRNNgBH10zerKfOR48pl74YnwMVSCOtKe1nNrt2Ui+Pgts1MUTKZaMqQ== X-Received: by 2002:a5d:6d8b:0:b0:33d:354a:99b2 with SMTP id l11-20020a5d6d8b000000b0033d354a99b2mr11361492wrs.3.1709674222531; Tue, 05 Mar 2024 13:30:22 -0800 (PST) Received: from [10.137.0.18] (ip-86-49-229-30.bb.vodafone.cz. [86.49.229.30]) by smtp.gmail.com with ESMTPSA id bs3-20020a056000070300b0033d4c3b0beesm16214039wrb.19.2024.03.05.13.30.21 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 05 Mar 2024 13:30:22 -0800 (PST) Content-Type: multipart/mixed; boundary="------------9O1uStZT2MGXGTN2LdBdroZs" Message-ID: <1e0e5800-965e-42ed-8caa-362294604243@enterprisedb.com> Date: Tue, 5 Mar 2024 22:30:20 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: remaining sql/json patches To: Amit Langote , Alvaro Herrera Cc: Erik Rijkers , jian he , Andres Freund , Andrew Dunstan , PostgreSQL-development References: <1cee81f3-312f-30e3-0282-c4df7ee72f93@xs4all.nl> <202403041503.5momp6knupgo@alvherre.pgsql> Content-Language: en-US From: Tomas Vondra In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------9O1uStZT2MGXGTN2LdBdroZs Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, I know very little about sql/json and all the json internals, but I decided to do some black box testing. I built a large JSONB table (single column, ~7GB of data after loading). And then I did a query transforming the data into tabular form using JSON_TABLE. The JSON_TABLE query looks like this: SELECT jt.* FROM title_jsonb t, json_table(t.info, '$' COLUMNS ( "id" text path '$."id"', "type" text path '$."type"', "title" text path '$."title"', "original_title" text path '$."original_title"', "is_adult" text path '$."is_adult"', "start_year" text path '$."start_year"', "end_year" text path '$."end_year"', "minutes" text path '$."minutes"', "genres" text path '$."genres"', "aliases" text path '$."aliases"', "directors" text path '$."directors"', "writers" text path '$."writers"', "ratings" text path '$."ratings"', NESTED PATH '$."aliases"[*]' COLUMNS ( "alias_title" text path '$."title"', "alias_region" text path '$."region"' ), NESTED PATH '$."directors"[*]' COLUMNS ( "director_name" text path '$."name"', "director_birth_year" text path '$."birth_year"', "director_death_year" text path '$."death_year"' ), NESTED PATH '$."writers"[*]' COLUMNS ( "writer_name" text path '$."name"', "writer_birth_year" text path '$."birth_year"', "writer_death_year" text path '$."death_year"' ), NESTED PATH '$."ratings"[*]' COLUMNS ( "rating_average" text path '$."average"', "rating_votes" text path '$."votes"' ) ) ) as jt; again, not particularly complex. But if I run this, it consumes multiple gigabytes of memory, before it gets killed by OOM killer. This happens even when ran using COPY (...) TO '/dev/null' so there's nothing sent to the client. I did catch memory context info, where it looks like this (complete stats attached): ------ TopMemoryContext: 97696 total in 5 blocks; 13056 free (11 chunks); 84640 used ... TopPortalContext: 8192 total in 1 blocks; 7680 free (0 chunks); ... PortalContext: 1024 total in 1 blocks; 560 free (0 chunks); ... ExecutorState: 2541764672 total in 314 blocks; 6528176 free (1208 chunks); 2535236496 used printtup: 8192 total in 1 blocks; 7952 free (0 chunks); ... ... ... Grand total: 2544132336 bytes in 528 blocks; 7484504 free (1340 chunks); 2536647832 used ------ I'd say 2.5GB in ExecutorState seems a bit excessive ... Seems there's some memory management issue? My guess is we're not releasing memory allocated while parsing the JSON or building JSON output. I'm not attaching the data, but I can provide that if needed - it's about 600MB compressed. The structure is not particularly complex, it's movie info from [1] combined into a JSON document (one per movie). regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------9O1uStZT2MGXGTN2LdBdroZs Content-Type: text/plain; charset=UTF-8; name="memory.txt" Content-Disposition: attachment; filename="memory.txt" Content-Transfer-Encoding: base64 VG9wTWVtb3J5Q29udGV4dDogOTc2OTYgdG90YWwgaW4gNSBibG9ja3M7IDEzMDU2IGZyZWUg KDExIGNodW5rcyk7IDg0NjQwIHVzZWQKICBUeXBlIGluZm9ybWF0aW9uIGNhY2hlOiAyNDM4 NCB0b3RhbCBpbiAyIGJsb2NrczsgMjY0MCBmcmVlICgwIGNodW5rcyk7IDIxNzQ0IHVzZWQK ICBUYWJsZVNwYWNlIGNhY2hlOiA4MTkyIHRvdGFsIGluIDEgYmxvY2tzOyAyMTEyIGZyZWUg KDAgY2h1bmtzKTsgNjA4MCB1c2VkCiAgVG9wVHJhbnNhY3Rpb25Db250ZXh0OiA4MTkyIHRv dGFsIGluIDEgYmxvY2tzOyA3NzYwIGZyZWUgKDIgY2h1bmtzKTsgNDMyIHVzZWQKICBSb3dE ZXNjcmlwdGlvbkNvbnRleHQ6IDgxOTIgdG90YWwgaW4gMSBibG9ja3M7IDY5MTIgZnJlZSAo MCBjaHVua3MpOyAxMjgwIHVzZWQKICBNZXNzYWdlQ29udGV4dDogNTI0Mjg4IHRvdGFsIGlu IDcgYmxvY2tzOyAyNDA3MzYgZnJlZSAoNCBjaHVua3MpOyAyODM1NTIgdXNlZAogIHNlYXJj aF9wYXRoIHByb2Nlc3NpbmcgY2FjaGU6IDgxOTIgdG90YWwgaW4gMSBibG9ja3M7IDU2MTYg ZnJlZSAoOCBjaHVua3MpOyAyNTc2IHVzZWQKICBPcGVyYXRvciBjbGFzcyBjYWNoZTogODE5 MiB0b3RhbCBpbiAxIGJsb2NrczsgNTc2IGZyZWUgKDAgY2h1bmtzKTsgNzYxNiB1c2VkCiAg UGdTdGF0IFNoYXJlZCBSZWYgSGFzaDogNzIzMiB0b3RhbCBpbiAyIGJsb2NrczsgNzA0IGZy ZWUgKDAgY2h1bmtzKTsgNjUyOCB1c2VkCiAgUGdTdGF0IFNoYXJlZCBSZWY6IDQwOTYgdG90 YWwgaW4gMyBibG9ja3M7IDQ5NiBmcmVlICgyIGNodW5rcyk7IDM2MDAgdXNlZAogIFBnU3Rh dCBQZW5kaW5nOiAxNjM4NCB0b3RhbCBpbiA1IGJsb2NrczsgNjQ2NCBmcmVlICg5IGNodW5r cyk7IDk5MjAgdXNlZAogIHNtZ3IgcmVsYXRpb24gdGFibGU6IDMyNzY4IHRvdGFsIGluIDMg YmxvY2tzOyAxNjg0OCBmcmVlICg4IGNodW5rcyk7IDE1OTIwIHVzZWQKICBUcmFuc2FjdGlv bkFib3J0Q29udGV4dDogMzI3NjggdG90YWwgaW4gMSBibG9ja3M7IDMyNTI4IGZyZWUgKDAg Y2h1bmtzKTsgMjQwIHVzZWQKICBQb3J0YWwgaGFzaDogODE5MiB0b3RhbCBpbiAxIGJsb2Nr czsgNTc2IGZyZWUgKDAgY2h1bmtzKTsgNzYxNiB1c2VkCiAgVG9wUG9ydGFsQ29udGV4dDog ODE5MiB0b3RhbCBpbiAxIGJsb2NrczsgNzY4MCBmcmVlICgwIGNodW5rcyk7IDUxMiB1c2Vk CiAgICBQb3J0YWxDb250ZXh0OiAxMDI0IHRvdGFsIGluIDEgYmxvY2tzOyA1NjAgZnJlZSAo MCBjaHVua3MpOyA0NjQgdXNlZDogPHVubmFtZWQ+CiAgICAgIEV4ZWN1dG9yU3RhdGU6IDI1 NDE3NjQ2NzIgdG90YWwgaW4gMzE0IGJsb2NrczsgNjUyODE3NiBmcmVlICgxMjA4IGNodW5r cyk7IDI1MzUyMzY0OTYgdXNlZAogICAgICAgIHByaW50dHVwOiA4MTkyIHRvdGFsIGluIDEg YmxvY2tzOyA3OTUyIGZyZWUgKDAgY2h1bmtzKTsgMjQwIHVzZWQKICAgICAgICBUYWJsZUZ1 bmMgcGVyIHZhbHVlIGNvbnRleHQ6IDgxOTIgdG90YWwgaW4gMSBibG9ja3M7IDY2NzIgZnJl ZSAoMCBjaHVua3MpOyAxNTIwIHVzZWQKICAgICAgICAgIEpzb25UYWJsZUV4ZWNDb250ZXh0 OiA4MTkyIHRvdGFsIGluIDEgYmxvY2tzOyA2ODY0IGZyZWUgKDAgY2h1bmtzKTsgMTMyOCB1 c2VkCiAgICAgICAgICAgIEpzb25UYWJsZUV4ZWNDb250ZXh0OiA4MTkyIHRvdGFsIGluIDEg YmxvY2tzOyA3OTUyIGZyZWUgKDAgY2h1bmtzKTsgMjQwIHVzZWQKICAgICAgICAgICAgSnNv blRhYmxlRXhlY0NvbnRleHQ6IDgxOTIgdG90YWwgaW4gMSBibG9ja3M7IDc5NTIgZnJlZSAo MCBjaHVua3MpOyAyNDAgdXNlZAogICAgICAgICAgICBKc29uVGFibGVFeGVjQ29udGV4dDog ODE5MiB0b3RhbCBpbiAxIGJsb2NrczsgNzk1MiBmcmVlICgwIGNodW5rcyk7IDI0MCB1c2Vk CiAgICAgICAgICAgIEpzb25UYWJsZUV4ZWNDb250ZXh0OiA4MTkyIHRvdGFsIGluIDEgYmxv Y2tzOyA3MTUyIGZyZWUgKDEgY2h1bmtzKTsgMTA0MCB1c2VkCiAgICAgICAgRXhwckNvbnRl eHQ6IDgxOTIgdG90YWwgaW4gMSBibG9ja3M7IDcyMzIgZnJlZSAoMCBjaHVua3MpOyA5NjAg dXNlZAogICAgICAgIEV4cHJDb250ZXh0OiA4MTkyIHRvdGFsIGluIDEgYmxvY2tzOyA3OTUy IGZyZWUgKDAgY2h1bmtzKTsgMjQwIHVzZWQKICAgICAgICBFeHByQ29udGV4dDogODE5MiB0 b3RhbCBpbiAxIGJsb2NrczsgNzk1MiBmcmVlICgwIGNodW5rcyk7IDI0MCB1c2VkCiAgUmVs Y2FjaGUgYnkgT0lEOiAxNjM4NCB0b3RhbCBpbiAyIGJsb2NrczsgMzUyOCBmcmVlICgyIGNo dW5rcyk7IDEyODU2IHVzZWQKICBDYWNoZU1lbW9yeUNvbnRleHQ6IDEwNjQ1NDQgdG90YWwg aW4gOSBibG9ja3M7IDQzMzIzMiBmcmVlICgxIGNodW5rcyk7IDYzMTMxMiB1c2VkCiAgICBp bmRleCBpbmZvOiAyMDQ4IHRvdGFsIGluIDIgYmxvY2tzOyA1NTIgZnJlZSAoMiBjaHVua3Mp OyAxNDk2IHVzZWQ6IHBnX3RvYXN0XzI3NDkyX2luZGV4CiAgICBpbmRleCBpbmZvOiAyMDQ4 IHRvdGFsIGluIDIgYmxvY2tzOyA1NTIgZnJlZSAoMiBjaHVua3MpOyAxNDk2IHVzZWQ6IHBn X3RvYXN0XzI2MTlfaW5kZXgKICAgIGluZGV4IGluZm86IDIwNDggdG90YWwgaW4gMiBibG9j a3M7IDg0OCBmcmVlICgxIGNodW5rcyk7IDEyMDAgdXNlZDogcGdfaW5kZXhfaW5kcmVsaWRf aW5kZXgKICAgIGluZGV4IGluZm86IDIwNDggdG90YWwgaW4gMiBibG9ja3M7IDkyOCBmcmVl ICgxIGNodW5rcyk7IDExMjAgdXNlZDogcGdfc3RhdGlzdGljX2V4dF9yZWxpZF9pbmRleAog ICAgaW5kZXggaW5mbzogMjA0OCB0b3RhbCBpbiAyIGJsb2NrczsgNTIwIGZyZWUgKDEgY2h1 bmtzKTsgMTUyOCB1c2VkOiBwZ19kYl9yb2xlX3NldHRpbmdfZGF0YWJhc2VpZF9yb2xfaW5k ZXgKICAgIGluZGV4IGluZm86IDIwNDggdG90YWwgaW4gMiBibG9ja3M7IDY4MCBmcmVlICgx IGNodW5rcyk7IDEzNjggdXNlZDogcGdfdXNlcl9tYXBwaW5nX3VzZXJfc2VydmVyX2luZGV4 CiAgICBpbmRleCBpbmZvOiAxMDI0IHRvdGFsIGluIDEgYmxvY2tzOyAyNCBmcmVlICgwIGNo dW5rcyk7IDEwMDAgdXNlZDogcGdfdXNlcl9tYXBwaW5nX29pZF9pbmRleAogICAgaW5kZXgg aW5mbzogMjA0OCB0b3RhbCBpbiAyIGJsb2NrczsgODQ4IGZyZWUgKDEgY2h1bmtzKTsgMTIw MCB1c2VkOiBwZ190eXBlX29pZF9pbmRleAogICAgaW5kZXggaW5mbzogMjA0OCB0b3RhbCBp biAyIGJsb2NrczsgNDcyIGZyZWUgKDIgY2h1bmtzKTsgMTU3NiB1c2VkOiBwZ190eXBlX3R5 cG5hbWVfbnNwX2luZGV4CiAgICBpbmRleCBpbmZvOiAxMDI0IHRvdGFsIGluIDEgYmxvY2tz OyAyNCBmcmVlICgwIGNodW5rcyk7IDEwMDAgdXNlZDogcGdfdHNfdGVtcGxhdGVfb2lkX2lu ZGV4CiAgICBpbmRleCBpbmZvOiAyMDQ4IHRvdGFsIGluIDIgYmxvY2tzOyA3MTIgZnJlZSAo MiBjaHVua3MpOyAxMzM2IHVzZWQ6IHBnX3RzX3RlbXBsYXRlX3RtcGxuYW1lX2luZGV4CiAg ICBpbmRleCBpbmZvOiAxMDI0IHRvdGFsIGluIDEgYmxvY2tzOyAyNCBmcmVlICgwIGNodW5r cyk7IDEwMDAgdXNlZDogcGdfdHNfcGFyc2VyX29pZF9pbmRleAogICAgaW5kZXggaW5mbzog MjA0OCB0b3RhbCBpbiAyIGJsb2NrczsgNzEyIGZyZWUgKDIgY2h1bmtzKTsgMTMzNiB1c2Vk OiBwZ190c19wYXJzZXJfcHJzbmFtZV9pbmRleAogICAgaW5kZXggaW5mbzogMTAyNCB0b3Rh bCBpbiAxIGJsb2NrczsgMjQgZnJlZSAoMCBjaHVua3MpOyAxMDAwIHVzZWQ6IHBnX3RzX2Rp Y3Rfb2lkX2luZGV4CiAgICBpbmRleCBpbmZvOiAyMDQ4IHRvdGFsIGluIDIgYmxvY2tzOyA3 MTIgZnJlZSAoMiBjaHVua3MpOyAxMzM2IHVzZWQ6IHBnX3RzX2RpY3RfZGljdG5hbWVfaW5k ZXgKICAgIGluZGV4IGluZm86IDEwMjQgdG90YWwgaW4gMSBibG9ja3M7IDI0IGZyZWUgKDAg Y2h1bmtzKTsgMTAwMCB1c2VkOiBwZ190c19jb25maWdfb2lkX2luZGV4CiAgICBpbmRleCBp bmZvOiAyMDQ4IHRvdGFsIGluIDIgYmxvY2tzOyA3MTIgZnJlZSAoMiBjaHVua3MpOyAxMzM2 IHVzZWQ6IHBnX3RzX2NvbmZpZ19jZmduYW1lX2luZGV4CiAgICBpbmRleCBpbmZvOiAzMDcy IHRvdGFsIGluIDIgYmxvY2tzOyAxMTg0IGZyZWUgKDEgY2h1bmtzKTsgMTg4OCB1c2VkOiBw Z190c19jb25maWdfbWFwX2luZGV4CiAgICBpbmRleCBpbmZvOiAyMDQ4IHRvdGFsIGluIDIg YmxvY2tzOyA3MTIgZnJlZSAoMiBjaHVua3MpOyAxMzM2IHVzZWQ6IHBnX3RyYW5zZm9ybV90 eXBlX2xhbmdfaW5kZXgKICAgIGluZGV4IGluZm86IDEwMjQgdG90YWwgaW4gMSBibG9ja3M7 IDI0IGZyZWUgKDAgY2h1bmtzKTsgMTAwMCB1c2VkOiBwZ190cmFuc2Zvcm1fb2lkX2luZGV4 CiAgICBpbmRleCBpbmZvOiAyMDQ4IHRvdGFsIGluIDIgYmxvY2tzOyA4NDggZnJlZSAoMSBj aHVua3MpOyAxMjAwIHVzZWQ6IHBnX3RhYmxlc3BhY2Vfb2lkX2luZGV4CiAgICBpbmRleCBp bmZvOiAyMDQ4IHRvdGFsIGluIDIgYmxvY2tzOyA2ODAgZnJlZSAoMSBjaHVua3MpOyAxMzY4 IHVzZWQ6IHBnX3N1YnNjcmlwdGlvbl9yZWxfc3JyZWxpZF9zcnN1YmlkX2luZGV4CiAgICBp bmRleCBpbmZvOiAxMDI0IHRvdGFsIGluIDEgYmxvY2tzOyAyNCBmcmVlICgwIGNodW5rcyk7 IDEwMDAgdXNlZDogcGdfc3Vic2NyaXB0aW9uX29pZF9pbmRleAogICAgaW5kZXggaW5mbzog MjA0OCB0b3RhbCBpbiAyIGJsb2NrczsgNzEyIGZyZWUgKDIgY2h1bmtzKTsgMTMzNiB1c2Vk OiBwZ19zdWJzY3JpcHRpb25fc3VibmFtZV9pbmRleAogICAgaW5kZXggaW5mbzogMzA3MiB0 b3RhbCBpbiAyIGJsb2NrczsgODMyIGZyZWUgKDEgY2h1bmtzKTsgMjI0MCB1c2VkOiBwZ19z dGF0aXN0aWNfcmVsaWRfYXR0X2luaF9pbmRleAogICAgaW5kZXggaW5mbzogMTAyNCB0b3Rh bCBpbiAxIGJsb2NrczsgMjQgZnJlZSAoMCBjaHVua3MpOyAxMDAwIHVzZWQ6IHBnX3N0YXRp c3RpY19leHRfb2lkX2luZGV4CiAgICBpbmRleCBpbmZvOiAyMDQ4IHRvdGFsIGluIDIgYmxv Y2tzOyA3MTIgZnJlZSAoMiBjaHVua3MpOyAxMzM2IHVzZWQ6IHBnX3N0YXRpc3RpY19leHRf bmFtZV9pbmRleAogICAgaW5kZXggaW5mbzogMjA0OCB0b3RhbCBpbiAyIGJsb2NrczsgNjgw IGZyZWUgKDEgY2h1bmtzKTsgMTM2OCB1c2VkOiBwZ19zdGF0aXN0aWNfZXh0X2RhdGFfc3R4 b2lkX2luaF9pbmRleAogICAgaW5kZXggaW5mbzogMTAyNCB0b3RhbCBpbiAxIGJsb2Nrczsg MjQgZnJlZSAoMCBjaHVua3MpOyAxMDAwIHVzZWQ6IHBnX3NlcXVlbmNlX3NlcXJlbGlkX2lu ZGV4CiAgICBpbmRleCBpbmZvOiAyMDQ4IHRvdGFsIGluIDIgYmxvY2tzOyA5NzYgZnJlZSAo MCBjaHVua3MpOyAxMDcyIHVzZWQ6IHBnX3JlcGxpY2F0aW9uX29yaWdpbl9yb25hbWVfaW5k ZXgKICAgIGluZGV4IGluZm86IDIwNDggdG90YWwgaW4gMiBibG9ja3M7IDk3NiBmcmVlICgw IGNodW5rcyk7IDEwNzIgdXNlZDogcGdfcmVwbGljYXRpb25fb3JpZ2luX3JvaWlkZW50X2lu ZGV4CiAgICBpbmRleCBpbmZvOiAyMDQ4IHRvdGFsIGluIDIgYmxvY2tzOyA0NzIgZnJlZSAo MiBjaHVua3MpOyAxNTc2IHVzZWQ6IHBnX2NsYXNzX3JlbG5hbWVfbnNwX2luZGV4CiAgICBp bmRleCBpbmZvOiAxMDI0IHRvdGFsIGluIDEgYmxvY2tzOyAyNCBmcmVlICgwIGNodW5rcyk7 IDEwMDAgdXNlZDogcGdfcmFuZ2Vfcm5ndHlwaWRfaW5kZXgKICAgIGluZGV4IGluZm86IDEw MjQgdG90YWwgaW4gMSBibG9ja3M7IDI0IGZyZWUgKDAgY2h1bmtzKTsgMTAwMCB1c2VkOiBw Z19yYW5nZV9ybmdtdWx0aXR5cGlkX2luZGV4CiAgICBpbmRleCBpbmZvOiAyMDQ4IHRvdGFs IGluIDIgYmxvY2tzOyA2ODAgZnJlZSAoMSBjaHVua3MpOyAxMzY4IHVzZWQ6IHBnX3B1Ymxp Y2F0aW9uX3JlbF9wcnJlbGlkX3BycHViaWRfaW5kZXgKICAgIGluZGV4IGluZm86IDEwMjQg dG90YWwgaW4gMSBibG9ja3M7IDI0IGZyZWUgKDAgY2h1bmtzKTsgMTAwMCB1c2VkOiBwZ19w dWJsaWNhdGlvbl9yZWxfb2lkX2luZGV4CiAgICBpbmRleCBpbmZvOiAxMDI0IHRvdGFsIGlu IDEgYmxvY2tzOyAyNCBmcmVlICgwIGNodW5rcyk7IDEwMDAgdXNlZDogcGdfcHVibGljYXRp b25fb2lkX2luZGV4CiAgICBpbmRleCBpbmZvOiAyMDQ4IHRvdGFsIGluIDIgYmxvY2tzOyA2 ODAgZnJlZSAoMSBjaHVua3MpOyAxMzY4IHVzZWQ6IHBnX3B1YmxpY2F0aW9uX25hbWVzcGFj ZV9wbm5zcGlkX3BucHViaWRfaW5kZXgKICAgIGluZGV4IGluZm86IDIwNDggdG90YWwgaW4g MiBibG9ja3M7IDk3NiBmcmVlICgwIGNodW5rcyk7IDEwNzIgdXNlZDogcGdfcHVibGljYXRp b25fbmFtZXNwYWNlX29pZF9pbmRleAogICAgaW5kZXggaW5mbzogMTAyNCB0b3RhbCBpbiAx IGJsb2NrczsgMjQgZnJlZSAoMCBjaHVua3MpOyAxMDAwIHVzZWQ6IHBnX3B1YmxpY2F0aW9u X3B1Ym5hbWVfaW5kZXgKICAgIGluZGV4IGluZm86IDIwNDggdG90YWwgaW4gMiBibG9ja3M7 IDg0OCBmcmVlICgxIGNodW5rcyk7IDEyMDAgdXNlZDogcGdfcHJvY19vaWRfaW5kZXgKICAg IGluZGV4IGluZm86IDMwNzIgdG90YWwgaW4gMiBibG9ja3M7IDExODQgZnJlZSAoMSBjaHVu a3MpOyAxODg4IHVzZWQ6IHBnX3Byb2NfcHJvbmFtZV9hcmdzX25zcF9pbmRleAogICAgaW5k ZXggaW5mbzogMjA0OCB0b3RhbCBpbiAyIGJsb2NrczsgOTc2IGZyZWUgKDAgY2h1bmtzKTsg MTA3MiB1c2VkOiBwZ19wYXJ0aXRpb25lZF90YWJsZV9wYXJ0cmVsaWRfaW5kZXgKICAgIGlu ZGV4IGluZm86IDEwMjQgdG90YWwgaW4gMSBibG9ja3M7IDI0IGZyZWUgKDAgY2h1bmtzKTsg MTAwMCB1c2VkOiBwZ19wYXJhbWV0ZXJfYWNsX29pZF9pbmRleAogICAgaW5kZXggaW5mbzog MTAyNCB0b3RhbCBpbiAxIGJsb2NrczsgMjQgZnJlZSAoMCBjaHVua3MpOyAxMDAwIHVzZWQ6 IHBnX3BhcmFtZXRlcl9hY2xfcGFybmFtZV9pbmRleAogICAgaW5kZXggaW5mbzogMTAyNCB0 b3RhbCBpbiAxIGJsb2NrczsgMjQgZnJlZSAoMCBjaHVua3MpOyAxMDAwIHVzZWQ6IHBnX29w ZmFtaWx5X29pZF9pbmRleAogICAgaW5kZXggaW5mbzogMzA3MiB0b3RhbCBpbiAyIGJsb2Nr czsgMTE4NCBmcmVlICgxIGNodW5rcyk7IDE4ODggdXNlZDogcGdfb3BmYW1pbHlfYW1fbmFt ZV9uc3BfaW5kZXgKICAgIGluZGV4IGluZm86IDEwMjQgdG90YWwgaW4gMSBibG9ja3M7IDI0 IGZyZWUgKDAgY2h1bmtzKTsgMTAwMCB1c2VkOiBwZ19vcGVyYXRvcl9vaWRfaW5kZXgKICAg IGluZGV4IGluZm86IDMwNzIgdG90YWwgaW4gMiBibG9ja3M7IDExMjAgZnJlZSAoMiBjaHVu a3MpOyAxOTUyIHVzZWQ6IHBnX29wZXJhdG9yX29wcm5hbWVfbF9yX25faW5kZXgKICAgIGlu ZGV4IGluZm86IDEwMjQgdG90YWwgaW4gMSBibG9ja3M7IDI0IGZyZWUgKDAgY2h1bmtzKTsg MTAwMCB1c2VkOiBwZ19uYW1lc3BhY2Vfb2lkX2luZGV4CiAgICBpbmRleCBpbmZvOiAyMDQ4 IHRvdGFsIGluIDIgYmxvY2tzOyA4NDggZnJlZSAoMSBjaHVua3MpOyAxMjAwIHVzZWQ6IHBn X25hbWVzcGFjZV9uc3BuYW1lX2luZGV4CiAgICBpbmRleCBpbmZvOiAxMDI0IHRvdGFsIGlu IDEgYmxvY2tzOyAyNCBmcmVlICgwIGNodW5rcyk7IDEwMDAgdXNlZDogcGdfbGFuZ3VhZ2Vf b2lkX2luZGV4CiAgICBpbmRleCBpbmZvOiAxMDI0IHRvdGFsIGluIDEgYmxvY2tzOyAyNCBm cmVlICgwIGNodW5rcyk7IDEwMDAgdXNlZDogcGdfbGFuZ3VhZ2VfbmFtZV9pbmRleAogICAg aW5kZXggaW5mbzogMTAyNCB0b3RhbCBpbiAxIGJsb2NrczsgMjQgZnJlZSAoMCBjaHVua3Mp OyAxMDAwIHVzZWQ6IHBnX2ZvcmVpZ25fdGFibGVfcmVsaWRfaW5kZXgKICAgIGluZGV4IGlu Zm86IDEwMjQgdG90YWwgaW4gMSBibG9ja3M7IDI0IGZyZWUgKDAgY2h1bmtzKTsgMTAwMCB1 c2VkOiBwZ19mb3JlaWduX3NlcnZlcl9vaWRfaW5kZXgKICAgIGluZGV4IGluZm86IDEwMjQg dG90YWwgaW4gMSBibG9ja3M7IDI0IGZyZWUgKDAgY2h1bmtzKTsgMTAwMCB1c2VkOiBwZ19m b3JlaWduX3NlcnZlcl9uYW1lX2luZGV4CiAgICBpbmRleCBpbmZvOiAyMDQ4IHRvdGFsIGlu IDIgYmxvY2tzOyA5NzYgZnJlZSAoMCBjaHVua3MpOyAxMDcyIHVzZWQ6IHBnX2ZvcmVpZ25f ZGF0YV93cmFwcGVyX29pZF9pbmRleAogICAgaW5kZXggaW5mbzogMjA0OCB0b3RhbCBpbiAy IGJsb2NrczsgOTc2IGZyZWUgKDAgY2h1bmtzKTsgMTA3MiB1c2VkOiBwZ19mb3JlaWduX2Rh dGFfd3JhcHBlcl9uYW1lX2luZGV4CiAgICBpbmRleCBpbmZvOiAxMDI0IHRvdGFsIGluIDEg YmxvY2tzOyAyNCBmcmVlICgwIGNodW5rcyk7IDEwMDAgdXNlZDogcGdfZXZlbnRfdHJpZ2dl cl9vaWRfaW5kZXgKICAgIGluZGV4IGluZm86IDEwMjQgdG90YWwgaW4gMSBibG9ja3M7IDI0 IGZyZWUgKDAgY2h1bmtzKTsgMTAwMCB1c2VkOiBwZ19ldmVudF90cmlnZ2VyX2V2dG5hbWVf aW5kZXgKICAgIGluZGV4IGluZm86IDIwNDggdG90YWwgaW4gMiBibG9ja3M7IDcxMiBmcmVl ICgyIGNodW5rcyk7IDEzMzYgdXNlZDogcGdfZW51bV90eXBpZF9sYWJlbF9pbmRleAogICAg aW5kZXggaW5mbzogMTAyNCB0b3RhbCBpbiAxIGJsb2NrczsgMjQgZnJlZSAoMCBjaHVua3Mp OyAxMDAwIHVzZWQ6IHBnX2VudW1fb2lkX2luZGV4CiAgICBpbmRleCBpbmZvOiAzMDcyIHRv dGFsIGluIDIgYmxvY2tzOyAxMTUyIGZyZWUgKDEgY2h1bmtzKTsgMTkyMCB1c2VkOiBwZ19k ZWZhdWx0X2FjbF9yb2xlX25zcF9vYmpfaW5kZXgKICAgIGluZGV4IGluZm86IDEwMjQgdG90 YWwgaW4gMSBibG9ja3M7IDI0IGZyZWUgKDAgY2h1bmtzKTsgMTAwMCB1c2VkOiBwZ19jb252 ZXJzaW9uX29pZF9pbmRleAogICAgaW5kZXggaW5mbzogMTAyNCB0b3RhbCBpbiAxIGJsb2Nr czsgMjQgZnJlZSAoMCBjaHVua3MpOyAxMDAwIHVzZWQ6IHBnX2NvbnN0cmFpbnRfb2lkX2lu ZGV4CiAgICBpbmRleCBpbmZvOiAyMDQ4IHRvdGFsIGluIDIgYmxvY2tzOyA3MTIgZnJlZSAo MiBjaHVua3MpOyAxMzM2IHVzZWQ6IHBnX2NvbnZlcnNpb25fbmFtZV9uc3BfaW5kZXgKICAg IGluZGV4IGluZm86IDMwNzIgdG90YWwgaW4gMiBibG9ja3M7IDExMjAgZnJlZSAoMiBjaHVu a3MpOyAxOTUyIHVzZWQ6IHBnX2NvbnZlcnNpb25fZGVmYXVsdF9pbmRleAogICAgaW5kZXgg aW5mbzogMTAyNCB0b3RhbCBpbiAxIGJsb2NrczsgMjQgZnJlZSAoMCBjaHVua3MpOyAxMDAw IHVzZWQ6IHBnX2NvbGxhdGlvbl9vaWRfaW5kZXgKICAgIGluZGV4IGluZm86IDMwNzIgdG90 YWwgaW4gMiBibG9ja3M7IDExODQgZnJlZSAoMSBjaHVua3MpOyAxODg4IHVzZWQ6IHBnX2Nv bGxhdGlvbl9uYW1lX2VuY19uc3BfaW5kZXgKICAgIGluZGV4IGluZm86IDMwNzIgdG90YWwg aW4gMiBibG9ja3M7IDEwMjQgZnJlZSAoMSBjaHVua3MpOyAyMDQ4IHVzZWQ6IHBnX29wY2xh c3NfYW1fbmFtZV9uc3BfaW5kZXgKICAgIGluZGV4IGluZm86IDIwNDggdG90YWwgaW4gMiBi bG9ja3M7IDQ3MiBmcmVlICgyIGNodW5rcyk7IDE1NzYgdXNlZDogcGdfY2FzdF9zb3VyY2Vf dGFyZ2V0X2luZGV4CiAgICBpbmRleCBpbmZvOiAzMDcyIHRvdGFsIGluIDIgYmxvY2tzOyAx MTUyIGZyZWUgKDEgY2h1bmtzKTsgMTkyMCB1c2VkOiBwZ19hdXRoX21lbWJlcnNfcm9sZV9t ZW1iZXJfaW5kZXgKICAgIGluZGV4IGluZm86IDIwNDggdG90YWwgaW4gMiBibG9ja3M7IDcx MiBmcmVlICgyIGNodW5rcyk7IDEzMzYgdXNlZDogcGdfYXR0cmlidXRlX3JlbGlkX2F0dG5h bV9pbmRleAogICAgaW5kZXggaW5mbzogMzA3MiB0b3RhbCBpbiAyIGJsb2NrczsgNzIwIGZy ZWUgKDEgY2h1bmtzKTsgMjM1MiB1c2VkOiBwZ19hbW9wX2ZhbV9zdHJhdF9pbmRleAogICAg aW5kZXggaW5mbzogMzA3MiB0b3RhbCBpbiAyIGJsb2NrczsgMTE4NCBmcmVlICgxIGNodW5r cyk7IDE4ODggdXNlZDogcGdfYW1vcF9vcHJfZmFtX2luZGV4CiAgICBpbmRleCBpbmZvOiAx MDI0IHRvdGFsIGluIDEgYmxvY2tzOyAyNCBmcmVlICgwIGNodW5rcyk7IDEwMDAgdXNlZDog cGdfYWdncmVnYXRlX2Zub2lkX2luZGV4CiAgICBpbmRleCBpbmZvOiAzMDcyIHRvdGFsIGlu IDIgYmxvY2tzOyAxMTg0IGZyZWUgKDEgY2h1bmtzKTsgMTg4OCB1c2VkOiBwZ19zaHNlY2xh YmVsX29iamVjdF9pbmRleAogICAgaW5kZXggaW5mbzogMzA3MiB0b3RhbCBpbiAyIGJsb2Nr czsgMTE1MiBmcmVlICgxIGNodW5rcyk7IDE5MjAgdXNlZDogcGdfYXV0aF9tZW1iZXJzX21l bWJlcl9yb2xlX2luZGV4CiAgICBpbmRleCBpbmZvOiAxMDI0IHRvdGFsIGluIDEgYmxvY2tz OyAyNCBmcmVlICgwIGNodW5rcyk7IDEwMDAgdXNlZDogcGdfYXV0aGlkX29pZF9pbmRleAog ICAgaW5kZXggaW5mbzogMTAyNCB0b3RhbCBpbiAxIGJsb2NrczsgMjQgZnJlZSAoMCBjaHVu a3MpOyAxMDAwIHVzZWQ6IHBnX2F1dGhpZF9yb2xuYW1lX2luZGV4CiAgICBpbmRleCBpbmZv OiAyMDQ4IHRvdGFsIGluIDIgYmxvY2tzOyA4NDggZnJlZSAoMSBjaHVua3MpOyAxMjAwIHVz ZWQ6IHBnX2RhdGFiYXNlX29pZF9pbmRleAogICAgaW5kZXggaW5mbzogMTAyNCB0b3RhbCBp biAxIGJsb2NrczsgMjQgZnJlZSAoMCBjaHVua3MpOyAxMDAwIHVzZWQ6IHBnX2RhdGFiYXNl X2RhdG5hbWVfaW5kZXgKICAgIGluZGV4IGluZm86IDIwNDggdG90YWwgaW4gMiBibG9ja3M7 IDcxMiBmcmVlICgyIGNodW5rcyk7IDEzMzYgdXNlZDogcGdfdHJpZ2dlcl90Z3JlbGlkX3Rn bmFtZV9pbmRleAogICAgaW5kZXggaW5mbzogMjA0OCB0b3RhbCBpbiAyIGJsb2NrczsgNzEy IGZyZWUgKDIgY2h1bmtzKTsgMTMzNiB1c2VkOiBwZ19yZXdyaXRlX3JlbF9ydWxlbmFtZV9p bmRleAogICAgaW5kZXggaW5mbzogMzA3MiB0b3RhbCBpbiAyIGJsb2NrczsgNzIwIGZyZWUg KDEgY2h1bmtzKTsgMjM1MiB1c2VkOiBwZ19hbXByb2NfZmFtX3Byb2NfaW5kZXgKICAgIGlu ZGV4IGluZm86IDIwNDggdG90YWwgaW4gMiBibG9ja3M7IDg0OCBmcmVlICgxIGNodW5rcyk7 IDEyMDAgdXNlZDogcGdfb3BjbGFzc19vaWRfaW5kZXgKICAgIGluZGV4IGluZm86IDIwNDgg dG90YWwgaW4gMiBibG9ja3M7IDg0OCBmcmVlICgxIGNodW5rcyk7IDEyMDAgdXNlZDogcGdf aW5kZXhfaW5kZXhyZWxpZF9pbmRleAogICAgaW5kZXggaW5mbzogMjA0OCB0b3RhbCBpbiAy IGJsb2NrczsgNDcyIGZyZWUgKDIgY2h1bmtzKTsgMTU3NiB1c2VkOiBwZ19hdHRyaWJ1dGVf cmVsaWRfYXR0bnVtX2luZGV4CiAgICBpbmRleCBpbmZvOiAyMDQ4IHRvdGFsIGluIDIgYmxv Y2tzOyA4NDggZnJlZSAoMSBjaHVua3MpOyAxMjAwIHVzZWQ6IHBnX2NsYXNzX29pZF9pbmRl eAogIFdBTCByZWNvcmQgY29uc3RydWN0aW9uOiA0OTc3NiB0b3RhbCBpbiAyIGJsb2Nrczsg NjM4NCBmcmVlICgwIGNodW5rcyk7IDQzMzkyIHVzZWQKICBQcml2YXRlUmVmQ291bnQ6IDgx OTIgdG90YWwgaW4gMSBibG9ja3M7IDI2NDAgZnJlZSAoMCBjaHVua3MpOyA1NTUyIHVzZWQK ICBNZFNtZ3I6IDgxOTIgdG90YWwgaW4gMSBibG9ja3M7IDY5NjAgZnJlZSAoMiBjaHVua3Mp OyAxMjMyIHVzZWQKICBMT0NBTExPQ0sgaGFzaDogODE5MiB0b3RhbCBpbiAxIGJsb2Nrczsg NTc2IGZyZWUgKDAgY2h1bmtzKTsgNzYxNiB1c2VkCiAgR1VDTWVtb3J5Q29udGV4dDogMjQ1 NzYgdG90YWwgaW4gMiBibG9ja3M7IDEyMTQ0IGZyZWUgKDQgY2h1bmtzKTsgMTI0MzIgdXNl ZAogICAgR1VDIGhhc2ggdGFibGU6IDMyNzY4IHRvdGFsIGluIDMgYmxvY2tzOyAxMjU5MiBm cmVlICg2IGNodW5rcyk7IDIwMTc2IHVzZWQKICBUaW1lem9uZXM6IDEwNDEyOCB0b3RhbCBp biAyIGJsb2NrczsgMjY0MCBmcmVlICgwIGNodW5rcyk7IDEwMTQ4OCB1c2VkCiAgRXJyb3JD b250ZXh0OiA4MTkyIHRvdGFsIGluIDEgYmxvY2tzOyA3OTUyIGZyZWUgKDMgY2h1bmtzKTsg MjQwIHVzZWQKR3JhbmQgdG90YWw6IDI1NDQxMzIzMzYgYnl0ZXMgaW4gNTI4IGJsb2Nrczsg NzQ4NDUwNCBmcmVlICgxMzQwIGNodW5rcyk7IDI1MzY2NDc4MzIgdXNlZAo= --------------9O1uStZT2MGXGTN2LdBdroZs--