Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1WZnX0-0000ck-2Z for pgsql-performance@arkaria.postgresql.org; Mon, 14 Apr 2014 20:31:06 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1WZnWz-0008O2-F8 for pgsql-performance@arkaria.postgresql.org; Mon, 14 Apr 2014 20:31:05 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1WZnWy-0008Nw-Fp for pgsql-performance@postgresql.org; Mon, 14 Apr 2014 20:31:04 +0000 Received: from bureau82.ns.utoronto.ca ([128.100.132.182]) by magus.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1WZnWv-0000W2-02 for pgsql-performance@postgresql.org; Mon, 14 Apr 2014 20:31:04 +0000 Received: from [142.1.102.233] (dhcphost-ic233.utsc.utoronto.ca [142.1.102.233]) (authenticated bits=0) by bureau82.ns.utoronto.ca (8.13.8/8.13.8) with ESMTP id s3EKUw4C021294 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 14 Apr 2014 16:30:59 -0400 Message-ID: <534C4580.40700@cs.utoronto.ca> Date: Mon, 14 Apr 2014 16:30:56 -0400 From: Ryan Johnson User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130801 Thunderbird/17.0.8 MIME-Version: 1.0 To: pgsql-performance@postgresql.org Subject: Re: SSI slows down over time References: <1397484864.73109.YahooMailBasic@web122302.mail.ne1.yahoo.com> In-Reply-To: <1397484864.73109.YahooMailBasic@web122302.mail.ne1.yahoo.com> Content-Type: multipart/alternative; boundary="------------010906010007020806080904" X-Pg-Spam-Score: -2.8 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-performance Precedence: bulk Sender: pgsql-performance-owner@postgresql.org This is a multi-part message in MIME format. --------------010906010007020806080904 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 14/04/2014 10:14 AM, Kevin Grittner wrote: > Ryan Johnson wrote: > >> every time I shut down a database and bring it back up, SSI seems >> to go slower. > There's one thing to rule out up front -- that would be a > long-lived prepared transaction. > > Please post the output of these queries: > > select version(); > show max_prepared_transactions; > select * from pg_prepared_xacts; version ------------------------------------------------------------------------------------------------------------ PostgreSQL 9.3.4 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit (1 row) max_prepared_transactions --------------------------- 0 (1 row) transaction | gid | prepared | owner | database -------------+-----+----------+-------+---------- (0 rows) FYI, here's a plot of performance over time. Each point in the graph is throughput (in tps) over a 10-second measurement (~20 minutes total), against a 12 WH TPC-C dataset with 24 clients banging on it. I issued a pg_ctl stop/start pair between each run: The downward trend is clearly visible, almost 30% performance loss by the end. The data directory went from 1.4GB to 3.8GB over the lifetime of the experiment. Final pg_serial size was 144kB, so the 8GB pg_serial anomaly was not responsible for the drop in performance over time (this time). I forgot to do an SI run at the beginning, but historically SI performance has remained pretty steady over time. I don't know what causes those big dips in performance, but it happens with SI as well so I assume it's checkpointing or some such. Now that I have a degraded database, any suggestions what should I look for or what experiments I should run? I'm currently re-running the same experiment, but deleting pg_serial/* in between runs; there was some indication last week that this prevents the performance drop, but that was nowhere near a rigorous analysis. BTW, this is actually a TPC-C++ implementation I created, based on the description in Cahill's thesis (and starting from the oltpbenchmark TPC-C code). It turns out that normal TPC-C never spills to pg_serial (at least, not that I ever saw). If you want to put hands on the code, I can tar it up and post it somewhere. Thoughts? Ryan --------------010906010007020806080904 Content-Type: multipart/related; boundary="------------000906060203060508030000" --------------000906060203060508030000 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit
On 14/04/2014 10:14 AM, Kevin Grittner wrote:
Ryan Johnson <ryan.johnson@cs.utoronto.ca> wrote:

every time I shut down a database and bring it back up, SSI seems
to go slower.
There's one thing to rule out up front -- that would be a
long-lived prepared transaction.

Please post the output of these queries:

select version();
show max_prepared_transactions;
select * from pg_prepared_xacts;
                                                  version
------------------------------------------------------------------------------------------------------------
 PostgreSQL 9.3.4 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit
(1 row)

 max_prepared_transactions
---------------------------
 0
(1 row)

 transaction | gid | prepared | owner | database
-------------+-----+----------+-------+----------
(0 rows)

FYI, here's a plot of performance over time. Each point in the graph is throughput (in tps) over a 10-second measurement (~20 minutes total), against a 12 WH TPC-C dataset with 24 clients banging on it. I issued a pg_ctl stop/start pair between each run:


The downward trend is clearly visible, almost 30% performance loss by the end. The data directory went from 1.4GB to 3.8GB over the lifetime of the experiment. Final pg_serial size was 144kB, so the 8GB pg_serial anomaly was not responsible for the drop in performance over time (this time). I forgot to do an SI run at the beginning, but historically SI performance has remained pretty steady over time. I don't know what causes those big dips in performance, but it happens with SI as well so I assume it's checkpointing or some such.

Now that I have a degraded database, any suggestions what should I look for or what experiments I should run? I'm currently re-running the same experiment, but deleting pg_serial/* in between runs; there was some indication last week that this prevents the performance drop, but that was nowhere near a rigorous analysis.

BTW, this is actually a TPC-C++ implementation I created, based on the description in Cahill's thesis (and starting from the oltpbenchmark TPC-C code). It turns out that normal TPC-C never spills to pg_serial (at least, not that I ever saw). If you want to put hands on the code, I can tar it up and post it somewhere.

Thoughts?
Ryan

--------------000906060203060508030000 Content-Type: image/png; name="bjadcjjf.png" Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: inline; filename="bjadcjjf.png" iVBORw0KGgoAAAANSUhEUgAAAZYAAAEhCAIAAADTVREMAAAgAElEQVR4nO2df3Bc1ZXn9Ucq Q01lal3ZbA2zFXa1G7LLTIrYE4bB0e6sO0VNcCkwaCEkLC4LmzANIYQQzzISZOzGEm6DoxWK YwLxFIiMrfGAk4iU1zIZDTROPIJyaeVBDNYYj8rLKsZ47LIdUKFVNN67f1zp6PS5991+3f1+ 3db3U/pD6n56797X73773HPPPafp6aefLgIAgIc8/fTTTcViUQEAgIcUi0VIGADAVyBhAACP gYQBADwGEgYA8BhIGADAYyBhAACPgYQBADwGEgYA8BhIGADAYwwJG8o3aVr6jpsv8pfNF62H AQBAbAgJG8rPa8/xvhaSoaE8/br4svmi9TAAAIiRwInk8b6WRdsqP0SvzwuV+WJLi+UwAACI kyAJO963oEiLvy280dJ33HyxqanJPMx6yYGBAdplvm3btrg3sgMAss/AwECUEsYVKnIJE5ev rd0AAKCsEiYcWUKt9AzRfFFIWMiJJCQMAFAPUsKG8mVKpFS5pNHv5otDtsNCXD6ijgAAliLl EjY/ISQWxIxFSyzqm/mi9bBKl4+0OwCApYXdF5bk5dO6NACgAYCEAQA8BhIGAPAYSBgAwGMg YQAAj4GEAQA8BhIGAPAYSBgAwGMgYQAAj4GEAQA8BhIGAPAYSBgAwGMgYQAAj4GEAQA8BhIG APAYSFgFRt8629k/uv/wVNoNAQBYsEnYUF7mLIytjmT2JSy/faR103Bb10vTM3NptwUAILEn nrbWXVOKJ9KPpo5k9iWsddOw/nn3/AdptwUAILFPJCtLWER1JDMuYe+e/wASBkCWCSNhPKf+ /MtR1ZHcunVrLTXnkuLBLdtJwr61pS/t5gDQsERcR1JI2PG+lqam/JAWqvxQnRImLq8WXObD Yydr60N8vDJ+iiRs/MS5tJsDAJCEkLCyOeG8dkVbR7KzfzSbk7Xnf3YCEgZAlqlWwhbqTEZa R7J7z+taJna/PBlBn6Jj54FjJGGvjJ9KuzkAAImUMBYXYQ2WsAdV1FlHkuZr63sPRdq7eiFt bd00nJF57sjR04hTA4CwW2FJXl4pNTt38ZZiSSvFxNQFx/ETUxc6+0cf2/vG/sNTU2em427e vd97LWsStr73EOLUACAyIWFKqd7BN7VS7Ng34TheB5rSz5ptBwdH3rYeGckSwZptB+laWZjk zs5dpPa4tR6AJUJWJGz8xDk9Mm8plmbnLgYdz/XLLS4bdh6u01rhepERCZs89R61B3NJAFR2 JEwtTJFaNw2PHD0ddDwN4O49r9Pc06ovZEDVvMo5dWaaS1j/cKgtU7HCgzx2HjiWdnMASJ8M SVj/8HGSp6DjaQArpWbnLm7cNUavPP+zE9YjJ0+9V1vbyDDUP72Db9Z2ngjhQR4bd425Dx4/ cS6b0XYAREiGJIysHj37e/5nJzr7R7kwTc/M0QH6Fa5iYs5YfzzX8NjJrEnYY3vf4H5A98Ha DvXR8Y/sICA8GZIwteDA0uOTxiqNQNqxyGMvZucuko+f5ox8b6NjWupm98uTXMIe2/tGbeep Fm09WQcw3R9xZ6wn8dfxj+wgIDzZkrDBkbdNb70pTCJ8jIL7aaxyCat5JkWLpPqns3+0tvNU xezcRZLvc+/Pine5+8+tTTv2TVgd/9rACVrGzQj+ii9InmxJ2Ln3Z9u6XqpWwmh6NfrWWf3K xNQF+nc+XHVcqBjA+w9PWa0e7mhLTMK49SSadO79WXFnHFMtbsZyxz9ZrAlE1dVGJF8/YOmQ GQnbulXlcmrduvHb79t4W/E7nc/QAiX54ymkIL99hJ+ELA564rkQ8MVKGsB0JM0WzWmLiEG7 93uvxXMPyuBbmoRocl02tYkjFiLI8c/DRMIvaCa8LMAbn4VVYJBxMiNhuZxqahI/7y77zfHm 5Wfu+KraulWVSv/w87+zjm2SITKvRo6eto5VerGt66WpM9PC20VGnEbYg3FsftLTOr5kQcJt ziX3H56ilghtEvBZJFd8HiayZttBR/wdJ+FlAb6K4libBkCTGQmbmVGlktqzRxUKqq3Nqmj6 Z/LSTxy7skUVCqq/X5VK6vx58qCRwcWHAa0kiomY8CuJKSetfsYnYXzWrJdNRSSamCpS0AlZ akGLknwWqX+0Wo2+dZa/GGbjOjf9kskjwr9XhLkNgElmJMyge8/razY819He849/2qUKBZXL /d9PfNIqahc//GvjzcuHl3/+1S/fowYH1auvksHCTRUe2m7VMr7myCetZLjRu5HsXuJzxvW9 h2bnLlLYFzWJ25u053zk6Gk6wLSMaCK2vvcQ7fHUk3GxWhLGu8cFJRkJ46so/J4DYCW7EkaP MimFnh7em3/qmYd2qkJB3X23yuXUpZdade3cRz463rz8hWtuevGL96pSSU1MkA3C7a+Nu8bI 0ODeLpqK8mQV9C6ZORXjZvVagbkCaC5c7Ng3QUurgyNv07s0l+SeeIquEGt20zNz1OD+4eO0 0KENLi6adCp3+6lJrUllTONXDNNCsMTxScJoeiiiTCemLnS09zx680N/c2Ne3XqrexI6evnV h//b135+78Md7T19z47Mzl3kTm5yD5Edx4c9XZFecTtrHGsFdFpzPqttK1oPpbkkidrs3EXy dtG70zNzu1+e5GebmLpAZp32i5O6kQS7nfrTM3NcZytK2OSp9zbuGqvTOBXewJrD+sASIbsS Rq4f08MlJIyW4cl1smPfhJ6E7vjCN1647g6Vy6kVK4J0TeVyo7/3hwOr1nZ/6eF3frRfXH1w 5G1zuyUfY0GGmFgr4LMwboKNHD1tjd6gzuo/yU2m+0hTQq1Bo2+dFVKotZX2VOo/yY4jaXM7 9fmqSBg1oRtVz5Z4oeYZD2EDqWOTMLOOpDWbYcx1JEkCKkoYmVHkcbf6U3bsm8jf80xHe8/k XRvU/fc7JqHq0kvf/tTVL1xz08CqtX/39I8e6hzgMiQ8/VZDTOhXa/mMj0wwPXU99/4sFyC9 QMktoN0vT9IsWLv2+J8825q+CWQHkUdPX4jbcSQ3Dqe+mHi6zSsez8U/Nb1RLORuIXGSVpZ8 ybtcj9gmlQy2rK2yjiRlm+bEXkfSlDAyPcycYvTE6z+5A8t8UQRPqFLptUd3Dqxae/BTn3vn 07+vLrnEqmtTH7ts9j//F1Uo/LJ3e0d7z5oNz3HzZHjsZO/gm2ISxH/4LIysIbJr+BIqeX94 bAQ55rXZRaura7YdJFPrlmJJqAyJe1vXS/QvWujp9jqc+qI77tHIs2hQU/mOqDATTJ5zSf+y Yedh0ZgIVxVirTtTf7onEIYwFYxkSTbrEZHXkSRvFNlcpqgR9Hzrx0W4hLVHnIaTOfUjo0YP mPO/OP1n63t3fOEbA6vW/uoPP//Ov/kPQZPQ8eblBz/1uYFVax+9+aGO9h4xhjfuGhMOdY3Q Vo22HHmol0jFIXSED/Kg26KYXNL91JrFQ0ysomAaRO7podu717oQi+c4g2JSzt12orUVFSdo CcWEQt7iWGwNmYgY1EkICTve19LS0lI+j0ygjuT93Tv1E7Bu8x79yt1dP9Cv3N31A3HwLYWf 6Lc2bekpFotfLgzywaNfvKmwX//58JZvi3/vLm7Tb92w6UCxWPzjrt3zo7Hwk2KxeNvmH7du Gs7f88z3v3Jf6brrDrXkxpuXv7vsN62iNn3JR8abl++/6vrB3Bd33ZnvvucRfar7u3fqaz28 5dv6lZsK+4P6TjxSfHTN5h/yvjzQ/YR+S/SRuilYu3mvfpd++UrXX+q36Mxf7/pzx/2nH37b H+h+4rbNP6ZO8fZ8s/sp3ubrN/20rTCkf7+5sO+R4qOO/tJHfE9X/w2bDszLWXHbn3R/j054 ++bnwpzh+k0/7S5ucxxZLBbpnLwjUUEn/2b3U5GfvPGIs45kmVzNzymjrSNphb6QKVzLYYWJ nd5iBqRftNo+BPcNiX+kk+sZKE12OvtH9/b8VfeXHv6rz7WP/cEf/dPvrvx/vxY4CX13xTWq UFCPP/7Oj/brSShNkdwIW4xiLEQIftB8kNYlyBFGmwHILrNG+ZMdRDeTz9/FEsfs3EU6//TM 3OzcRW1+bth5eOrM9MTUBXrXnbOInJivjJ/igSPct3hLsRT078IFWdH8oSMjz6TEl7mzkO+3 galWwubfiraOpBWuFPoVmqqI7IbK2OktJGz8xDnhCTIxAw7ITy/CO8yGlXH+vCqVVH+/KhTU 6tUXrvxM0CT0F5/8tGprU4WC2rNHlUpqZiboVpAi8CuKONWg6ZXIetbKprQ0VWzreslcl6R7 SCLIxzmdTfvmaN2A317uA+KtdSgL/yrit104N62rwDyeWf+4nXd8WSbyrRd8Gp5YmqalSQgJ 43pFfvpI60haMZXCjBQjxE5vc9DSGAuyfWig0qgme0dcl8y0MI+mPnj9fbuf735Wbd2qOjvP /d5ngyahatkylcupu+9WhYI6cEAdOeI4M98tZNUgjbk5nI9/8pTJJY6Fe9jW9RJ9EHztlV96 emaOFMpxT8iWdGyYJ9089/4sD2oTW6asocLke6Jf3FFvwtkXrTuM7xULaW6D2pASZq0juTBR LLe0oqsjaYXGHj0BDgkTO73FoB0eO0kDPigYVcRA8RwJpI/65EGxHVbM8U9NfXHHD9WBA6pQ UOvWqVwuaCVUNTerXE51dqrHH1elkjpxQp+He7gdLTE3e3LjiIRbLPLyvEbmd4nYbTo48jZ9 NA4nOo+GC4rkIFlU7BMRiR5bbfYvj1MR0XBBCAmLdl2S59twzHxB/ditsCQvH/SWmR3MIWF8 p7eZV2v3y5OkO0FF3hxZHIQPrioJI+uPRp2ZGmgRvdddT0Lb2tTKlYHhuCtXqra256+9vffG Bzrae974B9eGbW7CiOHEN1Ty1+n7o7N/lD4I6oIY/Gu2HSTrye1+ojtpDakVIcrmpne6irA6 +e7XiakLIgw4CLFnNlp3mMh3hLiK+PBJwsghYn6Hc1mxRgM4lgIImoAIcRH/S3+GyWZl7hwI DE8L4sQJVSqpxx9XnZ0ql1PNza5J6Lp185PQV1+lE/DVAHNSQ73mE0wyZPj9pA/CvMNWZTHh IbXmB0HDXi8viCJ4rZuGdx44RirG4+yog2R28SDeoMYIlYnWHSZckIiriI/sShgZU2Q4kK/X 3KxHj+Nje98wM1L0Dr7psn0W0LMqc3lOhNSGUUOC5nE0QhzhaVVw5Mj8JFTvdV+2zDEJPfKl fP+1X+lo71l/327TV0W2Le8O+aF2vzxpdsH0r7UuTOIqNpzEkXsbNaalLLJOvjJ+ymwtzTf5 CUWKDitCwlqd7jCd99FcRwpCSFiYvEagNrIrYcoIg3BIGJ/4mI9m7+CbVds+DDFzrErCzF5w j3W1LXEhEq65J6GrV1PCtUN/e8w00KzLI/RdQnd4w87DQRmuHZCIb9w1xj9KurGkFGIhcurM NH0WWi558RduFDsMdsLcTjA8dlLvlu/sHxX/GD43iehLVY8KqIEGkTA+X+P+HdK1emwfIWEO l5wVevqtnYqXU6dUqfR/HnpkYNXa8eblUx+7zCpqv/rQh3XCtV99a6NOuCYUn+Zl+qzcwc/3 UYa8IcJMXrPt4GN739h/eIrmgyQf/ORaQLmjc3pmjpYjhHONXnfYTWa4SX77CE2r+cYgPnEO 8qUK0ip/tQTJtITR86QNFpodmJ4FvtObHk2Src7+0XpsH7HFuloJ45v7KoanxQEf9uMnzqkj R1SpVHESqrN+v3/X19TWrY/d8938Pc+0LriWuKbzdcbwub1ECIv4oc+Xh3rRYgI9Bnwbmfgs wgS+UC+CdraSwc7Fzpz/WhGBx4iriI9MS5jY2eve6MufZnp8zWe0hkaKqAI6bUgJo5E2dWa6 YnhaTIgvA0H3ntd1wrV3vv6n7oRrc1d+Wq1ePXnXhh1f+EZHe88Tu19TC46zais8TZ56j7vn +Q81kjvdaJZqJm403ZciRYey5Y0gf9+OfRNm3axWFiAirmgGjkxMXRCJ0kQFP8RVxEfjSJgZ TW7uranN9hES5pjPWqH50fiJcxXD02JCz2uC4gaE50v779dseO6Ru76jnnxSFQr/+B+vCpqE qksuUbmcuvVWVSiowUFVKlXbtqkz0/sPT3XveV3rLLebuP1Is0sRwafTDYlz8hQdigW+8jVT 7tPUcqZNeDMhCtl9rQuTVnE5/ezxuae5Pz/auIrhsZMbd41hlUBlXMJEemW3hNFzxsMsxWNU m+1DcUZaAauVMGqPzskjhkcW4OuPivWXTBjq8mTpsCqVxm+/74VrbhpvXv7BR/9VUMI1lcup ++9XhYLO+l1z28h+pFkq349p1S8N38XJzSh6eIKWZfhihSqP7eCJKul4HjxMJ6c7Fke+Cu5o Q6nNTEuYEAv3bIgOJuEbHjsp5im12T4iMCoob30QNH6Gx05Wu5qZDGK9wjQVybuvPwjZi1JJ DQ6qQsE9CVUrVqhcThUK6sknVamkToWyILQpLT44bTY69EsxO4gEWqiMmbxbQ5KkLThStHu/ 9xp9lHzWzGe7pLP0hUpPS1QWk1goCJPCqLHxScLoY7MeTC4qnnNCSFhttg9JmJ5BVJt7j8cK hAlPSx4RU8rrBugDyJDUHm7Hfvt59F73J5/Ue93dWb/nJ6F6r3t0UCOFn4s+NceyDD1CU2em SQF7B9/kGwZoYsiNfTLMeXqPCL+0zGzArZuG89tHQpYEbUgyLWHCce6WMLEGpJ8nkfuw5seI X7paCSNF2P3yZD3hafEhthDwugH6ADHaq12TnWdiQpVKauvWilm/F/e6l0ruve4OzMQVQmUc vSALbuToafrI9GGmDc4fPDo5zRiqSgoQvkc6pI7UWa9ULE1zLNMSJh4yt4SZX1CmhNVs+/BL u+ezJnyaFk1oftSQu0cvnPGkXfoAurd1SZiVV18tm4QG7XW/4or5Saje6x5iEmpGOAuVIZ0y v064mSk2YJnr0dbk2q0LBqCZraA2ePAKzaBNb69ORF7PhbzDDwnbf3hKeChMzI/z3fMfiLXt mm0fns/PraQm5Fp6bO8bcYXm1w1NnaZn5kT+SGU4v7iREn1TyhOuVZiE8oRr5fDVzDXbDpLQ kIQ5lmXIdCKXFkVFiLp2in2lkYTxKEV6YOqMq+CpOPi00Zx8ZO0LMm4yLWF85JibjQVmsLUp YTV/tHzyWK2E8ZiMav83MWisTp2ZNnWWJwJR1a/JRoDe606TUPde94WEaw98/c9JWXgtdH1K Ry/MbbYUeiYy+Yi0KNo5KJ5VR+n1kIiqfWZrB0fepqiU1sRDdtKlcSTMnDjo/W78lZptHxrV 9HCH/1LlLXd3IUW4k67VsHbp60E7+FOQMCuvvhom4dqZf92scrnDN935/eu+2tHec3B43rlG H4fpQjKTZJAXVQTN8sSTrUZUil64pF2cNWdVFFX7guDKu3QMMZuE2epIqoW8h9aUh3HUkVTl aW0qSpiZPkEZDrIwTbJCRgrFVYaXITN/WQa3m/CFM7ODPPeOcg7+lOEJ11avdu91/19X/sHA qrW9Nz5wbt+LZtZvkSSDXBAiaFZEbGiJrzMWWuA2wQT0VZSiIaYrfia25m7L2mrUkVRqvp5H X54Xwo23jqQqd4TTN0xQHjuRxEo/YXx2WY/tQ08h31gX/t+FhGXQzqehSH4uHvrEcxmpeEo6 xsiJE6pU+vmdDz7/n24db17+wW99PEzCtf5v7xUWPZ2PB82Sd59LPN0u/ScdU5vrMKQJpknd EKPCzIkV0AyTO19RQaLF1+OvI6nKJaxC0Q3D+NcSwyWsHtuHJIyGepjniRClFTMVmq+hG2Ut NSRuvmcSppQyw3GPHNl4W3Fg1drh5Z+/uGqVe6/7X1/XrrZupazffClT7D3SEi9Cha3BgNpU 2XngmNu5UZUJpgkyxPQu0TDlNeuBj7hkHo9QEkYV1ej1BOpIFovFb3Y/pe/F2s17Ox75rv79 ts0/DjqeP0y6SiP9lz6J41pueBHGis0woRKW+sesg5k6/EaZjdy4pZf3mo5Jr71VYxYhFb3Y 1tW1+847X7j11p9fe+2x3/md/33ZvwuahE5edvno5VcPrFq767/e8WD7t9seWvxw9f2hEpz5 rr8olhfHpPbcXNinX7x+00//uGu3WdtUI0qahuFbW/qoPby0KFXz3Lilt/r7FxZe3vRbW/rC /2NCdSQjkTBxece7/Mu/ohWmymuv6cO4g6we24dWNumXqhIziAIWmQrN15i5pHkjRewrHZNe e6vG3Nrl7oV2ya/Z8FxHe8+x//7wfNbvK65wJ1z7mxvzanDwxR0/5NeikFSelFEY5m1dL5lb HWowwTRkiFFnrTk/Ikes5Caz2hNCwsqLGmlXfQJ1JFW5hJEf3Vq3VcOtei0xfGTWs8ODlIsm EVUFW4sI20yF5mvMNTjeSJ7mTPizfYF0RH+TVVwdUgFVBZRSR3/ySkd7z8CqtS9efcN48/Lp Sz4SNAk9e9Vn1f33H//6gzrrt7UQJ/8RzqOqvGAcGizkOObrWtbaK5EgshLFEjZoEELCrK/H X0dSlS9gh6kbxJVCSwxfDazH9qE9N2ToVVXwJqrwtFgRtRrFaiM9/WEGfwYRz0+YXugP3TS3 zdJKO/ZN6IRrL1x3h2pr+8WVv+/a67569cyDf6YTrn1ty4sjR0+TVnLnUc0mmGI+9VajIr3+ CYrgf/f8B8NjJ3sH36xhSZFftP4RFx4pYfY6kuzdxOpIqvLnLIyE8eUhOiwS24eHGtQvYVkL zdcIz7T4oqbXl46EORBbx3lNE7Xwca/Z8NzfPzuonnzy3J886Mj6rS65ZOLy3z34qc8NrFp7 fvdzVHqqZhNMQ2sIO/ZNTM/MiQabujz61lmRE6HaJUUztjx8tZR6sFthiRGthPHNFjThpw+v HtvH3IAZpgJb0L/X3IxY4bU2grL6tbLgXneVxqxBcyu9ThfGtepARI1NnnqPlxfgSS6VkMuJ CVUqnflm5/6rrh9vXv7ev/iXQXvdj33yMy9cc9PAqrV//+xgDQnXqIN61yT9Tm0WVrawwU2r sCLk8KVHJZmMUpmWML4v0sylacKVgm5fJNsSzW+Yqj4eHgCZWeOFfwGY3/x0G+lW1Db400Jo Vp0SJkorzc5dpPvDN5nSt6b+0ywBpd0dOzu+/+jNDw2sWnv+hpuqSLh2/ry7kdQkEtydB45R y4VTn/qycddYDaHL9MWm1yUqDtUIybSEKXZnwyQL5Du9yYh151wOSZ0SFlV4WqxwnTWDb2ma 2RgSRhuDausFL1+i5Z7HytG9IiuGnET6TzGlIMlb9HWcP9/R3rPjC994/trbVS4XKuGakfXb nDqMHD1N1qhw6tMxqqbtBPT9173ndbpEtAXSg2goCeNKEa0r0VpzMPy/83TvGQzN1/C7Z667 02NNozezHbEiJCyMX8IBT92lLSle5MU0/EUwMF1duyPM5EX2Slc64VqhEDLh2i8feKijvUeX nmplvi2eE1SfWCT1JJ9ySAnjWjn61lmRQTNusi5hdLutRacFfKd3tBJm7iGv6vz83zMYmq/h jTRjuMm/w0PkUmlnbQj/fZ0SxsOstL3PLRdhc/F39dRSfB+bEkatrezLD5dwbepjl01ecZWe hA73/uWaDc9xC1TcnKrywXH90poldrlr9N6AONYosy5h9PVFc3jHMgd/sKKNvapTwvgyfKay 5nN4DJ256G4G93otYWRG1dYLHqyjIx645UJWDx0vHPxkyeqniGZh9M3Bq9NX3TiW9fufPpub vPQTQZPQ8ebl/3zDjapQOP3kMx3tPa0LSzS82oP7UiKRrJ6ZWld7yR8XeUSRNxLGN1oHHcwH YbSRwWYajKrOzxuWwdB8DY9uNSubkHLxYneptLM2xLiqvw6LKK3E03OaA9idudtsjPD31wwF l62/b/fbz/9PSrh25qO/ZRW1mV//DZXLvXXDbQOr1na09/z10/vd5ydh4qVYeMZHOpIercj9 D1mXMFIuviIWdDAfhNGKvbn/plqJjMk8jBaatpurt2Zwb2bNSStiU0H9EiZKK5HlYs1WRHdP V0sSziazMXXOczm6YcItpYfVhju2n/3BHlUonPvibePNy2c/9GG7vaazfnd2mlm/KZQkKIpQ /ymGT7Rjs6EkTJVHYEbYTlPCqi0LGEl4Wtw4Vm9pmFFH/JIwVT6uSFOiCr+k+2PdRSsqdYrU 3uasVvj7I0esOdLltj8/pkqlNx9+fGDV2tHLrz59RfBK6MqV/3zDjQOr1j5680OP3PUdkXCN vgv1n2ISE60h5o2E8ZIwjuNjSk7PU+bXJpGZzZofEpHbr+J3SQbhEhZlBROlFLs/9MRyCRMl kEXUhWlzxV1vVJiBogGyPZT1W+91d2f9XrdOFQq9+f9xb/4p6qC5oB/hF3nWJUxszWmtNIPT T1IcnuY6JSyS8LQUMSPjvJMwPuuJXMLo/vCq8vQuLwGjjO8z+l/yfAl/f+SI7lNApcg66/LE HTly4tm9OuHa5BVXBSVcm7vs36pcbmLNV3XW7/X37eaP0PreQ4/tfaPO8nGNJmHxIZrhqTFV M6aEeVfsiwdnkRkSVS/M++PIGSmiLsytApErrECsOQqjz7p1YWLqgq5WSa/IEFaW9fvNz+Qm Pv7bQZPQiY//tk641nvjAx3tPTrhmrmnLSRZlzBrgdtk2iYQm8hSaUOKmGElKdf+qB4uYZFX MDHvD3djWROumfuNSDKqDS6tFl5hXjGjz1q+RKO3QPK932bVd4Ik+PW/PapKpZ+2P6Czfs/8 +09aRW32Qx+ueUxlXcLMTRLV+tGjQuzjT6UNKQIJc2PeH+7GIl/q+t5DZuS9uXPeLOUZLWJ5 QRh91sAumoaTC0XoIEeckJf4U0qpI0d06alftn/lzGdWzvz6b6impiUkYWnla+cSVmdZUx8x SytmeWnVCpctGlRRaYSZRIzPuZQtWxFF3vs5+i0AABF7SURBVJuSYe6yjBZRVU8oDhdcfTxf zqI7Zq0JoKFhq28CTZzjSLWYdQkzF8LSkjCeNC6z2Sbiwwwr8aj2h4ZLWOQVTNyZuxX7CjR3 mJsSFvf6tVhzNMuz6z9pgwEXaApspNmuGerIrTySv5q9XW5sEmbWkaRchjwHYvx1JFVAje6Q fYsWSFhGPoiaiVXCzLAbkWrVTPVB6308JFu/Yu6yjBax5mhOq3n6MxWw+9gx2+VWHslfbbkb K2LL2irrSA7l5wWJ55NOoo6ksklYWkuBXMJi+jAyjvggkqkSGCG0zZbneo7wcRL3R3jZ6Pmx bjIVEtYas79CLCBQtkJqM09/psqHIW3kdHwN8NrJZHXGlNqkutz5i3WJEqkjqcrT1MT6vVQR Ht7hV6qsqMjIB1Ez3OMTRy9EcmfhK6RpF/3Clyzpf6dn5uyZdiJFrDmaYiRe4f4cWqZwmIok kd17XncsXEZCVRK2WLcomTqSRVt9Q/fx8bFu8x5qQ1VFJBsGKkSY7gdRM/QJUp3HaHshqoXy Go7FYpEqkNJhvFInvbhpS8+mLT3zVljo2pHVQpfQ5Vb51fUBt23+sX5FF52kcpatm4bXbd5T LBYfKT6q/7xh0wHz/A9u2U4jJd/1F/r3r3U97WhSnHUkTQFLqo6ksq1VVzxnTPAItTrzB3gK X5ONyTUbK/QJkk0R7UxNhN2IKaq5yZT7+7nVU1emnXCINUduA+oDhHeMF9bRD7+IdBPwVVcy fmOKhQ4rYcK7lUwdSWWsVadYu5CHd/i7T6geeM0LHxc0zJ3Y0fZCFDoT7/LUWqaE8SCPqDLt uOEDymyziK3lXRNFpq06yyUy7hi3UBKmffxlRyRSR1IZC2EpjhxImO9rsklKmPlda2515v5+ bvVEmGnHAd8xarZZRIpxA1ObXWLXpwmdM+4AESlhljqS87NEo0Rk/HUkVZYkjNcW8SvbX1SY X8V+QRJGS5PRrizz2Zb5oJouEW6V8AogcWfa0ZhV9XibxSZKXuNWZO4OSqQuyuLGN3+yW2GJ UfHSPGQmXQnjy1jepcqKBN/XZGkqRzPiaHvB74/5oJrbG3gsArd64s60oyEJI23lbeabh8QY bN00rEKkAxKewfhGbtYlTJWv5adYfhUSxodoMsVpooU+QZ7NPMLzk+ViPbMZG8wnVlzC4s60 o+GZ3PUvvDwgD683Wz49M1cxv74oDh/fd55nEpbilz9N/uN+tjILH6I+egNprJIbKNpgS+4t tT6opi1D8AogcWfa0ZCEUbOtORp3HjhmToHfPf8BNVJsQjDPH/cD44GEcYs0RQmLr8KbL/i+ oGGGSUfbCx7/aT0zdw+JeA4+L4s7046GrkLfTNyy5ksK5kKEzh3mbiT3DMY6cYGEhQUSxiUs pkjrWDGtiWgljLsarGfmT7LwDXEJizsKQcNz/Jtt5oEdfCFL/4y+dZb8iUGbTEWy0viGjAcS xsORUnTB8Ag171JlRYLv3kBTwqIVYn5/rIuJjm22vAJI3Jl2NGR8uSWss3+UfHM8KJcygAbl z6H/ItWLqSMeSBj/4FOcv8RXpNIXGk/Cou0FP7/1zBTMYc4n+MQtmUox5m4BLrt8EyXZU2RM kF3mCJUQmf7qyY7vBhIWFi5haWWOTRe+oCHy+XmBubIWn4RZ7w+fW4mIUJ6BJ+5MOxozEx+/ GzyFGQ1AkuAwscFiN0IcyQ41HkgY5WNLV8JUbEUqfcF3b6ApYdEKMXc1WO8Pn1uJJ5lP3PQv cWcGNtNY8fzRfIcQGV9kWNFU1+Gb5uePdUetBxLGv7uCQoGTYYlLGC9o2hgSFm0v+PmtoQbc 8BHOMpIw0ou4o7grVtWjqSK5vcgMp1ccUSn8Cy/W/HqeSVi6LhjyGiy1CmwaPkTj887Ghxll Hq2E8cStVm+pw5lIsfv0jMWdVtP0DIq7IdKf3VIsiaLc7lkRP39MyQ41HkgYj6hMV8J8L2db Jw2woCFGYORCTGe21kZxREebFmLc8UOmhIm7IXYI5bePVOVM5AfHGoLjgYTxpQ0fF8IaBm7F NIaERd4Ls1IZxzETN9Uh7px0ZsklcTeEhHX2j5pmrMOZyHtEuarjwDMJMyvWgSShD8JTb6CY HEUuYe54CIcZa6pD3Ma+KZrCchQ7hLSkin9xZzEMeVideCBhPDjYRy9yI0Hr/Z5KmLAsIg9W crsarNUYCaEOcSd0Mksuic9USJieDIob6P4OoC+MWIOQPJAw7gSFhKVLMlGX8SFGYPJC7Li0 sBAT8Jm4JUxsctQTIJF/wv0dkMzTYpMwRx1JXiAykTqSChKWJXxf0EhdwhyjWrQtgUddiKZ4 17rJUZhm7kJ8+mmJ26lny9pq1pG0ZJROqI6kKl/HiXVSDRoeMQLjCxkPQoeGVdwEnoyEiSuK d3kkQKutDoj5L6kQIne+Vc+SqiOpyld/PV0IAxnBXaEjXcQcLYFHnUuYuRnAusmR1/HKSP2E yhJm1ltr6TueWB3JYnkpyY5HvlvxeACCoPKI+ift5pQh2vbglu1JXlEXlOTc09XP29Nd3FYs Fu/u+gG98uXCYISNibGOZOQSJi5f8ZgGiKgEGYHnisiIEUEICzEBP527JBX3QVNGCh4ekJHk 41VLmJ4hJlZHUiFFBIgOd4WOdBHu8wTWfLljy9wMwCWM7lXFtI7JU1nCLCUjjydXR1KVS5in 4UggI3gkYQlf0ZQw7oOmd/mLGSlFKCXMUkdSBRSITKSOpAYSBiKBe6OzVkeOty3uTDsavuZo 7sS27tPme6Ri3TYUHrsVluTlwxwGCQORULHIUIrwtiVjIbrrufBNlJTkik+JMhKk6YeELfEs NyAqfJGwuDPtaNwll7ha0VaBDG7190PCfA8KBxkhy3XkeKbmZOTVXQyBb6LkBhe9aE0olDx+ SBgAkcBlImsSxgUl7k055hWtWzLpXZ5KLGv7ZCFhYAmRwZgAIvm2VaxXQg4cbnBlbUoECQNL iCzXkUs+XqFiPZesGVxWIGFgCTFy9LQXEpZM2/iaozWBQtYMLiuQMLCE4DKRtQzAVAEksXiF xti6BwkDS4gsl8JMPuSqYsklL4CEgSWELxKWmKDQFSPPwZ0YkDCwhOAykbX0mTxqNLF0Bu6S S14ACQNLiIx7f6htiQmKF2uObiBhYAmRcQlLfiOdF2uObiBhYAmRymQtPA0gKMkDCQNLi+Qn ayBWIGFgaQEJazBCSFjIIpJBL1a6fD2tB6BakLipwagoYaI6pM7GGrKyZKjL19d+AKrDUckR +EhNEhaysmRE5T8AACCIEBPJ+QpriwnxQ5Zli6qOJACg4Ym4jqShYPkhLWT5ofolTFy+tnYD AICqLGFlE8J5mQpZWRISBgCIm6okbCiv7bCQlSXhzgcAxEzliSSvLGmNn3BVlgxx+ToaDwBY 6lSWsLgvn9alAQANACQMAOAxkDAAgMdAwgAAHuONhK1YsaIJJMiKFSti/egBiARvJKypqSnW lgABbjjwAkgYsIMbDrwAEgbs4IYDL4CEATu44cALIGHADm448AJIGLCDGw68ABIG7OCGAy+A hAE7uOHACyBhFijjRsgiJmoxD1F116jqPxIGEga8ABJmwFKkDeVjERmtd+XFBjIHJAx4ga8S NvrW2fW9h6gmYP0/63sPDY+dVMqecNaoH6Bfa8nnW7SxRom2A46kfTtl2dUgYQDUSSgJs6Qy TLyOpBhR0eqX/mnreon3oyzh9qJdRrdgvqhA2SHWIwO0ChIGQP2Ey9oqh1oKdSTFiNLVAKP9 2bFvgl1Bm07zusT3P7NOSpULOFJLouUmQsIAqJOKEmYbaGnUkUxlRFkrmywQIGGBsiSFDBIG QP1UkrDjfS0tLcKTk0odycRG1PG+Fj5VXCh3YqqNRcICjuT/svh29iUs5EcDQP3EVkdSDjpL EbZk6kgmaBRYXH9shkjdskmY7ciy2eVCNXTLdDNjwAoDXlCVhM0bDqnUkcSIShjccOAFlSSM 65W7ZGTMdSQxohIGNxx4QUUJK5sIVSgZGWcdSYyohMENB14QQsJivnzIIzGiEgY3HHgBJAzY wQ0HXgAJA3Zww4EXQMKAHdxw4AWQMGAHNxx4ASQM2MENB14ACQN2cMOBF0DCgB3ccOAFkDBg BzcceAEkDNjBDQdeAAkDdnDDgRdAwoAd3HDgBZCw1GE5FlNgKB+QUqRxbzhoKCBhJpZ0qlWX iazpajXUr6ylbeUlLIOSx0LCgBdAwkwSzQhdVugo5vqVylrCMqC7kDDgBZAwE8uYXsgrPZRv yvct5E+jg4zakTyzdFmiaqo7ya7F6hzZrC/j5PI8wSUs7fUrZQ8D8v1DwoAXhJUwPRqs2Q1T qSOplFKdnaqpKbKfdetY3xwStnAXaP5mrzLJTsZz6Dsrscn6lfaTy/MElrAMtiaNalOQMOAr 4STseF9LS19fmdMm5TqSSim1cmWUEtbcvHDeClaYcCJZa0eWvbgoYdYq4eJai/Ur5XmaKMO3 ReVsR9rrVxo9tJt/kDDgBWEkbH7MBJWnbrg6ktVLmEWFRJlvZZewAAuI7p5tkhcsYXabyyJk sMJAw1BZwmjE0JPe2HUkq5Uwi8yUO7hcVlj5PFPWr7SePEDCnCUs5XshfWEhPxoA6ieJOpJR SZi4fMiGJithQZNAm4TZakcuniKfz7skzBpTIV1dxiTV7i4TR5r1K0XfFqebWJEE3lJJwsof ef3Uo45klKRd1BtxYcBrKkkYo9zqQB3JqEhXwwKv3rg3HDQUNUmYQh3Jxgc3HHhBFRIW0+VD HokRlTC44cALIGHADm448AJIGLCDGw68ABIG7OCGAy+AhAE7uOHAC7yRsGXLljWBBFm2bFms Hz0AkeCNhAEAgAkkDADgMZAwAIDHQMIAAB4DCQMAeAwkDADgMZAwAIDHQMIAAB4DCQMAeAwk DADgMSEkjBIZ8jysideRBAAAk4oSNsSqV9gKTydVRxIAAEyqmEguVs5Jo44kAACYhJewxRJF qdSRBAA0MLHVkTQFLKU6kgAAYBJKwoRrK5U6kgAAYFJZwobyRkm1NOpIAgCASSUJK6tq32Qt bJ9MHUkAADAJ6wuL7/JpXRoA0ABAwgAAHgMJAwB4DCQMAOAxkDAAgMdAwgAAHgMJAwB4DCQM AOAxkDAAgMdAwgAAHgMJAwB4DCQMAOAxkDAAgMdAwgAAHgMJAwB4DCQMAOAxkUoY6kgCAJIl QglDHUkAQNJEJ2GoIwkASJzIJAx1JAEANbN9+/balKeYvISJy9d/6eyA7mQZdCfL1NyduCRs aU4k0Z0sg+5kmfQlDHUkFbqTbdCdLJMBCVO11JF84oknorl0NkB3sgy6k2Vq7k6kEgYAAMkC CQMAeAwkDADgMZAwAIDHQMIAAB4DCQMAeAwkDADgMZAwAIDHQMIAAB6TqoRVnyIxc1AXeAc8 79fxvpay/RU+d8eyYcTf7lhb7mN3hvJyA08dXUtRwmpJkZgxhvLzreYd8Lxfx/taWvr68nzE +9qdoby5083f7oiW64751x39oQRmF1zsRdiupSdhNaVIzCyLyYX87td8PxY74XF3yptue823 7hgS5m13yhpu7UXorqUmYbXlF8sqi73xul/UWnp+PO7O8b6WlpaW8nmkx91RCzN8Nin2tztc oKy9CN81SFgE8L543C/W9AaRsMWmz88pPe7OvILlh5ir0t/uNKCEeWQDC8Q83eN+Me8p+VA9 7k550/WY8bg7ZW2d74e/3XFImO5F+K6l5wurKUVi1rA4jBulX2yu4ml32CiglvvbnbJBvPDc edudMk+XtRehu5aVoIqQKRKzxaJvInDZ3st+md5WT7vDPqAG6A63kq2RB150p9zWZ8v4tX5S CG0FAHgMJAwA4DGQMACAx0DCAAAeAwkDAHgMJAwA4DGQMACAx0DCAAAeAwkDAHgMJAwA4DGQ MACAx0DCAAAeUywWm3p7e4sAAOAhvb29/x/eZeF2Km0FyQAAAABJRU5ErkJggg== --------------000906060203060508030000-- --------------010906010007020806080904--