Return-Path: <oracle-l-bounce@freelists.org>
X-Original-To: oracle-l@orafaq.com
Delivered-To: oracle-l@orafaq.com
Received: from smtp-aa.freelists.org (smtp-aa.freelists.org [23.23.80.81])
 by malta2546.startdedicated.com (Postfix) with ESMTPS id 19267100315764
 for <oracle-l@orafaq.com>; Sun, 10 Oct 2021 20:13:51 +0200 (CEST)
Received: from turing.freelists.org (ip-10-0-0-164.ec2.internal [10.0.0.164])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by smtp-aa.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id 471B740997;
 Sun, 10 Oct 2021 18:13:49 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by turing.freelists.org (Postfix) with ESMTP id 3B6DC3F7B9;
 Sun, 10 Oct 2021 18:13:49 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=freelists.org;
 s=turing; t=1633889629;
 bh=XRZQb3t2gIHUDfrh0KnbhHoxLIg/UAUBOp9t/jQrNcg=;
 h=From:Sender:Sender:From;
 b=WRu44xw4wUc6R8tcoFgBGLzW7PM/7/G8Hv8EO33JFI1DhgU4jFIHJQIXpsvBnul7W
	 czWWmG4woTdf9tcEDG45mX/OxRjvnTCUwB68v1MlwdXvQ3PwVYa3Zpbjn/4lux7rI5
	 IfDgBDck6/Rx+qhD+w7pvP0OSZ3G3OxdH21lVLqU=
X-Virus-Scanned: by FreeLists at turing.freelists.org
Received: from turing.freelists.org ([127.0.0.1])
 by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 3pN2smm1l614; Sun, 10 Oct 2021 18:13:49 +0000 (UTC)
Received: from turing.freelists.org (localhost [127.0.0.1])
 by turing.freelists.org (Postfix) with ESMTP id 25BF33F7BA;
 Sun, 10 Oct 2021 18:13:46 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=freelists.org;
 s=turing; t=1633889627;
 bh=XRZQb3t2gIHUDfrh0KnbhHoxLIg/UAUBOp9t/jQrNcg=;
 h=From:Sender:Sender:From;
 b=wO0P5zB3T3wJ81z5+5ZFS53ptnscxD+i05UkzoxxC2WVacasBZ0m/oSHJFRdDyZ/s
	 632w7rZ3OXtpk015InS22AdWu9UCcB0GRE1OEUJ6hI6Bz0Rx57Eal7NDCiBUKH8KKK
	 btngajRsMlsJ6ZuhU+bPpzZ7jeWCNDjugAcDuhq0=
Received: with ECARTIS (v1.0.0; list oracle-l); Sun, 10 Oct 2021 18:13:44 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by turing.freelists.org (Postfix) with ESMTP id 7FA5C3F7B9
 for <oracle-l@freelists.org>; Sun, 10 Oct 2021 18:13:44 +0000 (UTC)
Authentication-Results: turing.freelists.org;
 dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=deCYkpCo;
 dkim-atps=neutral
Received: from turing.freelists.org ([127.0.0.1])
 by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id w0SbBwm5iaNy for <oracle-l@freelists.org>;
 Sun, 10 Oct 2021 18:13:44 +0000 (UTC)
Received: from mail-qt1-f181.google.com (mail-qt1-f181.google.com [209.85.160.181])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
	 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by turing.freelists.org (Postfix) with ESMTPS id 63E263F5F7
 for <oracle-l@freelists.org>; Sun, 10 Oct 2021 18:13:44 +0000 (UTC)
Received: by mail-qt1-f181.google.com with SMTP id z24so9716552qtv.9
        for <oracle-l@freelists.org>; Sun, 10 Oct 2021 11:13:44 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=x-gm-message-state:mime-version:references:in-reply-to:from:date
         :message-id:subject:to;
        bh=K6yin/hjLXQL5SsZoSex9t1ATuGqFHYuK0cC48i89t0=;
        b=qlVGkrrpWCOSOAsjuIomdX2YTdl2LnMJPlW55TSY9j7JWuLdZokXCutSZTF64Dm2yJ
         QAHazDWOGGyVDRcv7nTSV3mRgNxTpMLhYQ0SfyytMCTPiyuv7NpqLAad4eFov2Q/I9s1
         9G7Kt5hYOvfj+Hn/zlPm+twQLI06J7+S7F0Nre4L1GLgdghz1+Dg3n/Cx/cxZQ6C8lxK
         odMc77dup0DD5jNvOZV2e2iXiHBbcYps5Bhx6XSGd6IOIjqz4ijbpyYOiJVYCGSntS3Q
         rKNGd0HoMD+NDItgF/m9ScM5UrO+4vztn7u6sReGa9Rk1c1pDs3IUe1+EJmh/z6AAnJy
         Tykg==
X-Gm-Message-State: AOAM532GQzVEzpZgIsLdgvdSmSnQf8w0hSPUZRbuLTl+2YE1pK4lEPlr
 WyTeytmxcePb1AcuhS9nm8NOSO/TqZ42uwPUU4GpFfDp7lJAsg==
X-Google-Smtp-Source: ABdhPJwZHQgLKMam1m+e7yiYGtnnaJu5MMcJHigZXLHX/DqVsOJC+Wv4PT4hZgTiSVX5MiH1tAsSlMIiqRs7ESUW97c=
X-Received: by 2002:a05:622a:38e:: with SMTP id j14mr10669951qtx.245.1633889623766;
 Sun, 10 Oct 2021 11:13:43 -0700 (PDT)
MIME-Version: 1.0
References: <CAEjw_fjraKwNds2y+Ftzc5V0CjP_-SE0dVzaBEmvCcrpA4i=nQ@mail.gmail.com>
 <CAEjw_fi9J0ZO8OAcvhzZmNFKp+rUx9kvZ2vry5X8-qPkdXeUqA@mail.gmail.com>
 <CAGtsp8=TPb1Nn=C_x7_MG9wFw9NUc74LCGPgrDxZxgCpoE+4mA@mail.gmail.com>
 <CA+riqSVaqDFyabwGiVJOE7WHDbXKDaahFdQOz6-J_ZoH3sBuDA@mail.gmail.com>
 <CAEjw_fgLvtZP5zv+xCf_+zmsFUydU5DAE1rQ3WWAuzZVd+ZWbg@mail.gmail.com>
 <CAGtsp8mOX+kVxhzCj+WBcia6Wj-6TN5kXpScZZFO8M2sQJ-d7w@mail.gmail.com> <CAEjw_fhaB-2XFOnf=NpT5vmnFp3AJiu5KDdWvFYXhAEXs21dFw@mail.gmail.com>
In-Reply-To: <CAEjw_fhaB-2XFOnf=NpT5vmnFp3AJiu5KDdWvFYXhAEXs21dFw@mail.gmail.com>
From: Jonathan Lewis <jlewisoracle@gmail.com>
Date: Sun, 10 Oct 2021 19:13:31 +0100
Message-ID: <CAGtsp8kBvvDidZsU_oF-6nN6H9TVKfQ28PdZYQb53inAtP-Rxg@mail.gmail.com>
Subject: Re: question on table access by index rowid batched
To: Oracle L <oracle-l@freelists.org>
Content-Type: multipart/alternative; boundary="000000000000a0788f05ce03929c"
X-archive-position: 81110
X-ecartis-version: Ecartis v1.0.0
Sender: oracle-l-bounce@freelists.org
Errors-to: oracle-l-bounce@freelists.org
X-original-sender: jlewisoracle@gmail.com
Precedence: normal
Reply-To: jlewisoracle@gmail.com
List-Help: <mailto:ecartis@freelists.org?Subject=help>
List-Unsubscribe: <mailto:oracle-l-request@freelists.org?Subject=unsubscribe>
List-software: Ecartis version 1.0.0
List-Id: oracle-l <oracle-l.freelists.org>
X-List-ID: oracle-l <oracle-l.freelists.org>
List-Subscribe: <mailto:oracle-l-request@freelists.org?Subject=subscribe>
List-Owner: <mailto:>
List-post: <mailto:oracle-l@freelists.org>
List-Archive: <https://www.freelists.org/archive/oracle-l>
X-list: oracle-l
--000000000000a0788f05ce03929c
Content-Type: text/plain; charset="UTF-8"

You're a little unlucky with this query, and there's a lot in the SQL
Monitor to take in - especially since the SQL Monitor reporting has shown
you all the possible adaptations the plan might take, and that makes it
harder to interpret what actually happened.

The key point is that when the plan is allowed to adapt there are two
places where the optimizer had a prediction of 1 row (that's operations 7
and 11 - the lines after the Statistics Collector lines).   In both cases
the run-time engine found that far too many rows were being produced  (the
counting done by the statistics collector wouldn't have taken much time, it
would probably just have been buffering a few (hundred) rows before making
the decision to use a hash join).

With optimizer_adaptive_reporting_only = true the run-time engine has just
carried on with the nested loop and as you can see from the "Time Start"
column it ha actually got the first row of its response ready in the first
two seconds.

With optimizer_adaptive_report_only = false, the run-time engine has
switched to a hash join in both cases. So operation 11 provided 2M rows
(taking 129 seconds) to operation 8 to allow the first hash table build.
Operation 8 called operation 42 to supply the probe table, joined it then
passed the results up to the nested loop in operation 7 which took 27
seconds to get the data from operations 43 and 44 to pass up to the hash
join at operation 4 to create the build table. Operation 4 then called
operations 47 and 49 as the second child of the nested loop - this started
at +157 seconds (which is roughly the 131 + 27 I've mentioned).

Don't be alarmed by the TABLE ACCESS STORAGE FULL FIRST ROWS at operation
49, it takes virtually no time (even though it happens 2M times); and a key
detail that says that is that the first active operation of the "VIEW
PUSHED PREDICATE" also happens at +156.

The time AFTER the first 157 seconds is mostly the 661K read requests that
accumulate from that point onwards.

==================================

Bottom line - in this case the adaptive feature was unlucky. The
cardinality estimates were very low, but the actual was very high, so the
run-time engine switched to a pair of hash joins. The hash joins were
unlucky and resulted in a very long latency (time to first row), but the
fact that the order that the data passed on upwards from each hash join
meant that your access to a critical table was randomised and resulted in
far more I/O, adding considerably to the run time.

For this query you don't AT PRESENT want an adaptive plan. If this is a
controlled query then hinting /*+ no_adaptive_plan */ would be a nice
workaround. (Or adding an SQL Patch if the query text is fixed). It would
not be a good thing to change the parameter globally to address one query
that was unlucky.

Of course there is still the question of why the cardinality estimates are
so bad, but that might be a side effect of your statement that you're
running this query with first_rows optimisation. If that is EXACTLY what
you are doing, rather than first_rows_1 or first_rows_10 (or 100, or 1000)
then you shouldn't be, and changing to one of the cost-base first_rows_N
optimisation strategies should be your first change.


This leads to a couple of things I've noted down as something to test or
check for my own benefit, viz:
  Does adaptive optimization co-operate correctly with first_rows_N
optimisation?
  Is there a way in the call do dbms_monitor to show the used execution
plan rather than the full adaptive path - it would be a lot easier to read
(and I assume there is if I check the manuals or MOS.)

Regards
Jonathan Lewis









On Sat, 9 Oct 2021 at 17:19, Pap <oracle.developer35@gmail.com> wrote:

> Thank you Jonathan.
>
> There is a difference of ~350+ seconds between the run time of both the
> plans and out of this, ~131 seconds is contributed by the statistics
> collector which does the additional mathematics/counting to opt for the
> best path at that moment (must be based on the runtime/actual cardinality
> information). This query was actually a search query and running with
> first_rows hint and customer expecting to see the result as first ~50 odd
> rows asap on the screen but with the optimizer_adaptive_reporting_only
> 'false' it was using another set of mathematics(or as you mentioned
> multipasses) in this query adding significant overhead for this quick
> query. So is it recommended to have this parameter set as 'true' mainly in
> the oltp kind of environment ? Or should totally turn the key driver i.e.
> optimizer_adpative_plan as false?
>
> Note -- Just to note, after the upgrade , I think the infra team just kept
> it all default i.e. optimizer_adaptive_plan- true,
> optimizer_adaptive_reporting_only- false, optimizer_adaptive_statistics-
> false. So wondering if it's advisable/ and safe to change few to non
> default?
>
> As you rightly explained, there seems to be no role of rowid batching in
> this performance issue. Again, not much experience in reading
> complex execution paths, but from the path initially I was interpreting, it
> as both plans are exactly the same ,  with just the difference in 'rowid
> batching operation. But from your explanation, I see I was completely
> wrong.  Now, I can see in the good plan case it has read ~28million at step
> ~46 for index TP_PK but in the bad plan case it is not noted in the sql
> monitor. but conversely  ,  ~5GB data being read in the bad plan, at
> step-59 with ~661k read requests and it resulted in ~770k rows there. But
> in case of a good plan those bytes read and number of read requests are not
> noted. So does this point to the fact that the statistics collector is
> really playing a role in the order in which data results out from one
> operation/step to another?
>
>
> On Sat, Oct 9, 2021 at 4:49 PM Jonathan Lewis <jlewisoracle@gmail.com>
> wrote:
>
>>
>> Remember I was talking POSSIBILITIES in my previous post, not certainties.
>>
>> With the extra information you have now supplied I have a better
>> hypothesis, based on the fact that you have adaptive_plans_enabled (which I
>> should have realised in the first place), and that the plans you've
>> supplied are different in exactly the TYPE of reason I suggested, but not
>> for the exact reason. My basic hypothesis now is that when you enabled
>> adaptive plans but set it to reporting only Oracle will always include the
>> statistics collector operations, but it will not use them (i.e. not
>> counting etc,) to make a decision about whether to take a hash join or a
>> nested loop join. It will simply generate a path based on its first pass
>> calculations.
>>
>> (You could check this with a suitable set of examples and testing with
>> (a) adaptive plans enable (b) adaptive plans enabled but reporting only (c)
>> adaptive plans disabled.  You'd need to set up 4 possibilities:  nlj
>> changing to hj due to adaptive plans, hj changing to nlj due to adaptive
>> plans, nlj not changing, hj not changing).
>>
>> So Looking at your SQL Monitor reports - lines 41 and 42 as a starting
>> point:
>>
>> WIth reporting only = TRUE
>>
>> ==============================================================================================================================================================================
>> | Id |                      Operation                       |
>> Name              |  Rows   | Cost  |   Time    | Start  | Execs |   Rows
>> | Read  | Read  |  Mem  |
>> |    |                                                      |
>>                   | (Estim) |       | Active(s) | Active |       | (Actual)
>> | Reqs  | Bytes | (Max) |
>>
>> ===============================================================================================================================================================================
>> | 41 |            INDEX RANGE SCAN                          | TCX_PK
>>                    |       1 |     2 |       279 |     +2 |    2M |
>> 2M |       |       |     . |
>> | 42 |           INDEX RANGE SCAN                           | TCX_PK
>>                    |       1 |     2 |           |        |       |
>>  |       |       |     . |
>>
>> With reporting only = FALSE
>>
>> ===============================================================================================================================================================================================
>> | Id |                      Operation                       |
>> Name              |  Rows   | Cost  |   Time    | Start  | Execs |   Rows
>> | Read  | Read  | Write | Write |  Mem  |
>> |    |                                                      |
>>                   | (Estim) |       | Active(s) | Active |       | (Actual)
>> | Reqs  | Bytes | Reqs  | Bytes | (Max) |
>>
>> ===============================================================================================================================================================================================
>> | 41 |            INDEX RANGE SCAN                          | TCX_PK
>>                    |       1 |     2 |           |        |       |
>>  |       |       |       |       |     . |
>> | 42 |           INDEX RANGE SCAN                           | TCX_PK
>>                    |       1 |     2 |         1 |   +131 |     1 |
>> 976K |       |       |       |       |     . |
>>
>> These two lines are the options available as a result of a statistics
>> collector further up the plan, and one plan takes operation 41, the other
>> takes operation 42
>>
>> Putting them into context (adding in some parent and sibling rows)
>>
>> Reporting only = true ... plan based on estimates
>>
>> ==============================================================================================================================================================================
>> | Id |                      Operation                       |
>> Name              |  Rows   | Cost  |   Time    | Start  | Execs |   Rows
>> | Read  | Read  |  Mem  |
>> |    |                                                      |
>>                   | (Estim) |       | Active(s) | Active |       | (Actual)
>> | Reqs  | Bytes | (Max) |
>>
>> ===============================================================================================================================================================================
>> |  7 |         NESTED LOOPS OUTER                           |
>>                   |       1 |    3M |       279 |     +2 |     1 |       2M
>> |       |       |     . |          |                 |
>> |  8 |          HASH JOIN OUTER                             |
>>                   |       1 |    3M |       279 |     +2 |     1 |       2M
>> |       |       |     . |
>> |  9 |           NESTED LOOPS OUTER                         |
>>                   |       1 |    3M |       279 |     +2 |     1 |       2M
>> |       |       |     . |
>> | 10 |            STATISTICS COLLECTOR                      |
>>                   |         |       |       279 |     +2 |     1 |       2M
>> |       |       |     . |
>> | 11 |             NESTED LOOPS OUTER                       |
>>                   |       1 |    3M |       279 |     +2 |     1 |       2M
>> |       |       |     . |
>>
>> ...
>> | 41 |            INDEX RANGE SCAN                          | TCX_PK
>>                    |       1 |     2 |       279 |     +2 |    2M |
>> 2M |       |       |     . |
>> | 42 |           INDEX RANGE SCAN                           | TCX_PK
>>                    |       1 |     2 |           |        |       |
>>  |       |       |     . |
>> | 43 |          TABLE ACCESS BY INDEX ROWID                 | TC
>>                    |       1 |     2 |       279 |     +2 |    2M |
>> 2M | 16037 | 125MB |     . |          |                 |
>>
>>
>> Reporting only = false ... plan adapts to counting
>> (OPTERATION 10 dictates a HASH JOIN where the estimated stats suggested
>> NLJ)
>>
>> ===============================================================================================================================================================================================
>> | Id |                      Operation                       |
>> Name              |  Rows   | Cost  |   Time    | Start  | Execs |   Rows
>> | Read  | Read  | Write | Write |  Mem  |
>> |    |                                                      |
>>                   | (Estim) |       | Active(s) | Active |       | (Actual)
>> | Reqs  | Bytes | Reqs  | Bytes | (Max) |
>>
>> ===============================================================================================================================================================================================
>> |  7 |         NESTED LOOPS OUTER                           |
>>                   |       1 |    3M |        27 |   +131 |     1 |       2M
>> |       |       |       |       |     . |
>> |  8 |          HASH JOIN OUTER                             |
>>                   |       1 |    3M |       155 |     +3 |     1 |       2M
>> |  3035 |   1GB |  3035 |   1GB | 309MB |
>> |  9 |           NESTED LOOPS OUTER                         |
>>                   |       1 |    3M |       129 |     +3 |     1 |       2M
>> |       |       |       |       |     . |
>> | 10 |            STATISTICS COLLECTOR                      |
>>                   |         |       |       129 |     +3 |     1 |       2M
>> |       |       |       |       |     . |
>> | 11 |             NESTED LOOPS OUTER                       |
>>                   |       1 |    3M |       129 |     +3 |     1 |       2M
>> |       |       |       |       |     . |
>> ...
>> | 41 |            INDEX RANGE SCAN                          | TCX_PK
>>                    |       1 |     2 |           |        |       |
>>  |       |       |       |       |     . |
>> | 42 |           INDEX RANGE SCAN                           | TCX_PK
>>                    |       1 |     2 |         1 |   +131 |     1 |
>> 976K |       |       |       |       |     . |
>> | 43 |          TABLE ACCESS BY INDEX ROWID                 | TC
>>                    |       1 |     2 |        27 |   +131 |    2M |
>> 2M | 21549 | 168MB |       |       |     . |
>>
>>
>> As you can see, the ability to switch plans makes a big difference to the
>> amount of time Oracle spends working before it starts executing step 7
>> (start time = +2 seconds vs. +131 seconds).
>>
>> This one extract from the plans doesn't answer the question about why
>> "table access by index rowid batched" has appeared; nor does it explain the
>> total difference between the two executions because you also need to look
>> at the statistics collector at operation 6 and the impact that has on which
>> of operation 45/46 and 47/48 get chosen. The other point that then comes up
>> is that the order in which data appears from a hash join is (almost
>> certainly) different from the order it appears from a nested loop join -
>> which means that when you use the result of the join to probe other tables
>> by index the order of the driving data from one join may be roughly in line
>> with the indexes and data from the next table(s) in the join and benefit
>> from a lot of "self-induced" caching, while the other join might produce
>> data in what is effectively a randomised order resulting in "self-flushing"
>> and more random reads - and that might explain what happens at operations
>> 60/61
>>
>> What my observations suggest is a good argument for why you had such a
>> difference in performance, and that it had nothing to do with the batching
>> or not of the table access by rowid.
>>
>> I may write this up in more detail as a blog some day, but I don't have
>> time right now.
>>
>> Regards
>> Jonathan Lewis
>>
>>
>>
>>
>>
>> On Fri, 8 Oct 2021 at 18:34, Pap <oracle.developer35@gmail.com> wrote:
>>
>>>   It's fluctuating. I am now not able to reproduce the scenario for that
>>> same small query for which I had posted here just before.  And you are
>>> correct , I was luckily having sql monitors saved. I am attaching those
>>> here. If you see that, the main query was showing those rowid batched
>>> operations when we have the  optimizer_adaptive_reporting_only set as
>>> default/false and was taking a long time to finish and also the first few
>>> rows were also taking longer to get produced out of the query. But the
>>> sample small query which i had posted a cursor plan for was just showing
>>> the opposite behaviour. That is going for a rowid batched path when
>>> optimizer_adaptive_reporting_only sets as true.
>>>
>>> However,  now I am seeing that same small query in both the cases
>>> (irrespective of value of optimizer_adaptive_reporting_only) going for
>>> 'rowid batched' execution path. Not sure if it's just stats or
>>> anything else influencing and I am seeing different things behaviour. Just
>>> to note we have 'optimizer_adaptive_plans' set to true ,
>>> 'optimizer_adaptive_statistics' set  to false. The only change we made was
>>> moving ' optimizer_adaptive_reporting_only' from false to true.
>>>
>>> And Jonathan when you said the optimizer_adaptive_reporting_only = true
>>> will introduce 'statistics collector' operation, but if you see the
>>> attached sql monitor for the main query, i am seeing 'statistics collector'
>>> even when optimizer_adaptive_reporting_only is = false. Is that expected
>>> behaviour?
>>>
>>>
>>>
>>
>>
>>

--000000000000a0788f05ce03929c
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: base64

PGRpdiBkaXI9Imx0ciI+PGRpdj5Zb3UmIzM5O3JlIGEgbGl0dGxlIHVubHVja3kgd2l0aCB0aGlz
IHF1ZXJ5LCBhbmQgdGhlcmUmIzM5O3MgYSBsb3QgaW4gdGhlIFNRTCBNb25pdG9yIHRvIHRha2Ug
aW4gLSBlc3BlY2lhbGx5IHNpbmNlIHRoZSBTUUwgTW9uaXRvciByZXBvcnRpbmcgaGFzIHNob3du
IHlvdSBhbGwgdGhlIHBvc3NpYmxlIGFkYXB0YXRpb25zIHRoZSBwbGFuIG1pZ2h0IHRha2UsIGFu
ZCB0aGF0IG1ha2VzIGl0IGhhcmRlciB0byBpbnRlcnByZXQgd2hhdCBhY3R1YWxseSBoYXBwZW5l
ZC48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlRoZSBrZXkgcG9pbnQgaXMgdGhhdCB3aGVuIHRo
ZSBwbGFuIGlzIGFsbG93ZWQgdG8gYWRhcHQgdGhlcmUgYXJlIHR3byBwbGFjZXMgd2hlcmUgdGhl
IG9wdGltaXplciBoYWQgYSBwcmVkaWN0aW9uIG9mIDEgcm93ICh0aGF0JiMzOTtzIG9wZXJhdGlv
bnMgNyBhbmQgMTEgLSB0aGUgbGluZXMgYWZ0ZXIgdGhlIFN0YXRpc3RpY3MgQ29sbGVjdG9yIGxp
bmVzKS7CoMKgIEluIGJvdGggY2FzZXMgdGhlIHJ1bi10aW1lIGVuZ2luZSBmb3VuZCB0aGF0IGZh
ciB0b28gbWFueSByb3dzIHdlcmUgYmVpbmcgcHJvZHVjZWTCoCAodGhlIGNvdW50aW5nIGRvbmUg
YnkgdGhlIHN0YXRpc3RpY3MgY29sbGVjdG9yIHdvdWxkbiYjMzk7dCBoYXZlIHRha2VuIG11Y2gg
dGltZSwgaXQgd291bGQgDQpwcm9iYWJseSBqdXN0IGhhdmUgYmVlbiBidWZmZXJpbmcgYSBmZXcg
KGh1bmRyZWQpIHJvd3MgYmVmb3JlIG1ha2luZyB0aGUgZGVjaXNpb24gdG8gdXNlIGEgaGFzaCBq
b2luKS48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PldpdGggb3B0aW1pemVyX2FkYXB0aXZlX3Jl
cG9ydGluZ19vbmx5ID0gdHJ1ZSB0aGUgcnVuLXRpbWUgZW5naW5lIGhhcyBqdXN0IGNhcnJpZWQg
b24gd2l0aCB0aGUgbmVzdGVkIGxvb3AgYW5kIGFzIHlvdSBjYW4gc2VlIGZyb20gdGhlICZxdW90
O1RpbWUgU3RhcnQmcXVvdDsgY29sdW1uIGl0IGhhIGFjdHVhbGx5IGdvdCB0aGUgZmlyc3Qgcm93
IG9mIGl0cyByZXNwb25zZSByZWFkeSBpbiB0aGUgZmlyc3QgdHdvIHNlY29uZHMuPC9kaXY+PGRp
dj48YnI+PC9kaXY+PGRpdj5XaXRoIG9wdGltaXplcl9hZGFwdGl2ZV9yZXBvcnRfb25seSA9IGZh
bHNlLCB0aGUgcnVuLXRpbWUgZW5naW5lIGhhcyBzd2l0Y2hlZCB0byBhIGhhc2ggam9pbiBpbiBi
b3RoIGNhc2VzLiBTbyBvcGVyYXRpb24gMTEgcHJvdmlkZWQgMk0gcm93cyAodGFraW5nIDEyOSBz
ZWNvbmRzKSB0byBvcGVyYXRpb24gOCB0byBhbGxvdyB0aGUgZmlyc3QgaGFzaCB0YWJsZSBidWls
ZC4gT3BlcmF0aW9uIDggY2FsbGVkIG9wZXJhdGlvbiA0MiB0byBzdXBwbHkgdGhlIHByb2JlIHRh
YmxlLCBqb2luZWQgaXQgdGhlbiBwYXNzZWQgdGhlIHJlc3VsdHMgdXAgdG8gdGhlIG5lc3RlZCBs
b29wIGluIG9wZXJhdGlvbiA3IHdoaWNoIHRvb2sgMjcgc2Vjb25kcyB0byBnZXQgdGhlIGRhdGEg
ZnJvbSBvcGVyYXRpb25zIDQzIGFuZCA0NCB0byBwYXNzIHVwIHRvIHRoZSBoYXNoIGpvaW4gYXQg
b3BlcmF0aW9uIDQgdG8gY3JlYXRlIHRoZSBidWlsZCB0YWJsZS4gT3BlcmF0aW9uIDQgdGhlbiBj
YWxsZWQgb3BlcmF0aW9ucyA0NyBhbmQgNDkgYXMgdGhlIHNlY29uZCBjaGlsZCBvZiB0aGUgbmVz
dGVkIGxvb3AgLSB0aGlzIHN0YXJ0ZWQgYXTCoCsxNTcgc2Vjb25kcyAod2hpY2ggaXMgcm91Z2hs
eSB0aGUgMTMxwqArIDI3IEkmIzM5O3ZlIG1lbnRpb25lZCkuwqAgPGJyPjwvZGl2PjxkaXY+PGJy
PjwvZGl2PjxkaXY+RG9uJiMzOTt0IGJlIGFsYXJtZWQgYnkgdGhlIFRBQkxFIEFDQ0VTUyBTVE9S
QUdFIEZVTEwgRklSU1QgUk9XUyBhdCBvcGVyYXRpb24gNDksIGl0IHRha2VzIHZpcnR1YWxseSBu
byB0aW1lIChldmVuIHRob3VnaCBpdCBoYXBwZW5zIDJNIHRpbWVzKTsgYW5kIGEga2V5IGRldGFp
bCB0aGF0IHNheXMgdGhhdCBpcyB0aGF0IHRoZSBmaXJzdCBhY3RpdmUgb3BlcmF0aW9uIG9mIHRo
ZSAmcXVvdDtWSUVXIFBVU0hFRCBQUkVESUNBVEUmcXVvdDsgYWxzbyBoYXBwZW5zIGF0ICsxNTYu
PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5UaGUgdGltZSBBRlRFUiB0aGUgZmlyc3QgMTU3IHNl
Y29uZHMgaXMgbW9zdGx5IHRoZSA2NjFLIHJlYWQgcmVxdWVzdHMgdGhhdCBhY2N1bXVsYXRlIGZy
b20gdGhhdCBwb2ludCBvbndhcmRzLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+Qm90dG9t
IGxpbmUgLSBpbiB0aGlzIGNhc2UgdGhlIGFkYXB0aXZlIGZlYXR1cmUgd2FzIHVubHVja3kuIFRo
ZSBjYXJkaW5hbGl0eSBlc3RpbWF0ZXMgd2VyZSB2ZXJ5IGxvdywgYnV0IHRoZSBhY3R1YWwgd2Fz
IHZlcnkgaGlnaCwgc28gdGhlIHJ1bi10aW1lIGVuZ2luZSBzd2l0Y2hlZCB0byBhIHBhaXIgb2Yg
aGFzaCBqb2lucy4gVGhlIGhhc2ggam9pbnMgd2VyZSB1bmx1Y2t5IGFuZCByZXN1bHRlZCBpbiBh
IHZlcnkgbG9uZyBsYXRlbmN5ICh0aW1lIHRvIGZpcnN0IHJvdyksIGJ1dCB0aGUgZmFjdCB0aGF0
IHRoZSBvcmRlciB0aGF0IHRoZSBkYXRhIHBhc3NlZCBvbiB1cHdhcmRzIGZyb20gZWFjaCBoYXNo
IGpvaW4gbWVhbnQgdGhhdCB5b3VyIGFjY2VzcyB0byBhIGNyaXRpY2FsIHRhYmxlIHdhcyByYW5k
b21pc2VkIGFuZCByZXN1bHRlZCBpbiBmYXIgbW9yZSBJL08sIGFkZGluZyBjb25zaWRlcmFibHkg
dG8gdGhlIHJ1biB0aW1lLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+Rm9yIHRoaXMgcXVlcnkg
eW91IGRvbiYjMzk7dCBBVCBQUkVTRU5UIHdhbnQgYW4gYWRhcHRpdmUgcGxhbi4gSWYgdGhpcyBp
cyBhIGNvbnRyb2xsZWQgcXVlcnkgdGhlbiBoaW50aW5nIC8qKyBub19hZGFwdGl2ZV9wbGFuICov
IHdvdWxkIGJlIGEgbmljZSB3b3JrYXJvdW5kLiAoT3IgYWRkaW5nIGFuIFNRTCBQYXRjaCBpZiB0
aGUgcXVlcnkgdGV4dCBpcyBmaXhlZCkuIEl0IHdvdWxkIG5vdCBiZSBhIGdvb2QgdGhpbmcgdG8g
Y2hhbmdlIHRoZSBwYXJhbWV0ZXIgZ2xvYmFsbHkgdG8gYWRkcmVzcyBvbmUgcXVlcnkgdGhhdCB3
YXMgdW5sdWNreS48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pk9mIGNvdXJzZSB0aGVyZSBpcyBz
dGlsbCB0aGUgcXVlc3Rpb24gb2Ygd2h5IHRoZSBjYXJkaW5hbGl0eSBlc3RpbWF0ZXMgYXJlIHNv
IGJhZCwgYnV0IHRoYXQgbWlnaHQgYmUgYSBzaWRlIGVmZmVjdCBvZiB5b3VyIHN0YXRlbWVudCB0
aGF0IHlvdSYjMzk7cmUgcnVubmluZyB0aGlzIHF1ZXJ5IHdpdGggZmlyc3Rfcm93cyBvcHRpbWlz
YXRpb24uIElmIHRoYXQgaXMgRVhBQ1RMWSB3aGF0IHlvdSBhcmUgZG9pbmcsIHJhdGhlciB0aGFu
IGZpcnN0X3Jvd3NfMSBvciBmaXJzdF9yb3dzXzEwIChvciAxMDAsIG9yIDEwMDApIHRoZW4geW91
IHNob3VsZG4mIzM5O3QgYmUsIGFuZCBjaGFuZ2luZyB0byBvbmUgb2YgdGhlIGNvc3QtYmFzZSBm
aXJzdF9yb3dzX04gb3B0aW1pc2F0aW9uIHN0cmF0ZWdpZXMgc2hvdWxkIGJlIHlvdXIgZmlyc3Qg
Y2hhbmdlLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+VGhpcyBsZWFk
cyB0byBhIGNvdXBsZSBvZiB0aGluZ3MgSSYjMzk7dmUgbm90ZWQgZG93biBhcyBzb21ldGhpbmcg
dG8gdGVzdCBvciBjaGVjayBmb3IgbXkgb3duIGJlbmVmaXQsIHZpejo8L2Rpdj48ZGl2PsKgIERv
ZXMgYWRhcHRpdmUgb3B0aW1pemF0aW9uIGNvLW9wZXJhdGUgY29ycmVjdGx5IHdpdGggZmlyc3Rf
cm93c19OIG9wdGltaXNhdGlvbj88L2Rpdj48ZGl2PsKgIElzIHRoZXJlIGEgd2F5IGluIHRoZSBj
YWxsIGRvIGRibXNfbW9uaXRvciB0byBzaG93IHRoZSB1c2VkIGV4ZWN1dGlvbiBwbGFuIHJhdGhl
ciB0aGFuIHRoZSBmdWxsIGFkYXB0aXZlIHBhdGggLSBpdCB3b3VsZCBiZSBhIGxvdCBlYXNpZXIg
dG8gcmVhZCAoYW5kIEkgYXNzdW1lIHRoZXJlIGlzIGlmIEkgY2hlY2sgdGhlIG1hbnVhbHMgb3Ig
TU9TLik8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlJlZ2FyZHM8L2Rpdj48ZGl2PkpvbmF0aGFu
IExld2lzPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4gPGJyPjwvZGl2PjxkaXY+PGJyPjwv
ZGl2PjxkaXY+PGJyPjwvZGl2PjwvZGl2Pjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+PGRp
diBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX2F0dHIiPk9uIFNhdCwgOSBPY3QgMjAyMSBhdCAxNzox
OSwgUGFwICZsdDs8YSBocmVmPSJtYWlsdG86b3JhY2xlLmRldmVsb3BlcjM1QGdtYWlsLmNvbSI+
b3JhY2xlLmRldmVsb3BlcjM1QGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj48L2Rpdj48Ymxv
Y2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBweCAwcHggMC44
ZXg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGluZy1sZWZ0OjFl
eCI+PGRpdiBkaXI9Imx0ciI+VGhhbmsgeW91IEpvbmF0aGFuLsKgPGRpdj48YnI+PGRpdj5UaGVy
ZSBpcyBhIGRpZmZlcmVuY2Ugb2YgfjM1MCsgc2Vjb25kcyBiZXR3ZWVuIHRoZSBydW4gdGltZSBv
ZiBib3RoIHRoZSBwbGFucyBhbmQgb3V0IG9mIHRoaXMsIH4xMzEgc2Vjb25kcyBpcyBjb250cmli
dXRlZMKgYnkgdGhlIHN0YXRpc3RpY3MgY29sbGVjdG9yIHdoaWNoIGRvZXMgdGhlIGFkZGl0aW9u
YWwgbWF0aGVtYXRpY3MvY291bnRpbmcgdG8gb3B0IGZvciB0aGUgYmVzdCBwYXRoIGF0IHRoYXQg
bW9tZW50IChtdXN0IGJlIGJhc2VkIG9uIHRoZSBydW50aW1lL2FjdHVhbCBjYXJkaW5hbGl0eSBp
bmZvcm1hdGlvbikuIFRoaXMgcXVlcnkgd2FzIGFjdHVhbGx5IGEgc2VhcmNoIHF1ZXJ5IGFuZCBy
dW5uaW5nIHdpdGggZmlyc3Rfcm93cyBoaW50IGFuZCBjdXN0b21lciBleHBlY3RpbmcgdG8gc2Vl
IHRoZSByZXN1bHQgYXMgZmlyc3QgfjUwIG9kZCByb3dzIGFzYXAgb24gdGhlIHNjcmVlbiBidXQg
d2l0aCB0aGUgb3B0aW1pemVyX2FkYXB0aXZlX3JlcG9ydGluZ19vbmx5ICYjMzk7ZmFsc2UmIzM5
OyBpdCB3YXMgdXNpbmcgYW5vdGhlciBzZXQgb2YgbWF0aGVtYXRpY3Mob3IgYXMgeW91IG1lbnRp
b25lZCBtdWx0aXBhc3NlcykgaW4gdGhpcyBxdWVyeSBhZGRpbmcgc2lnbmlmaWNhbnQgb3Zlcmhl
YWQgZm9yIHRoaXMgcXVpY2sgcXVlcnkuIFNvIGlzIGl0IHJlY29tbWVuZGVkIHRvIGhhdmUgdGhp
cyBwYXJhbWV0ZXIgc2V0IGFzICYjMzk7dHJ1ZSYjMzk7IG1haW5seSBpbiB0aGUgb2x0cCBraW5k
IG9mIGVudmlyb25tZW50ID8gT3Igc2hvdWxkwqB0b3RhbGx5IHR1cm4gdGhlIGtleSBkcml2ZXIg
aS5lLiBvcHRpbWl6ZXJfYWRwYXRpdmVfcGxhbiBhcyBmYWxzZT/CoDxkaXY+PGJyPjxkaXY+Tm90
ZSAtLSBKdXN0IHRvIG5vdGUsIGFmdGVyIHRoZSB1cGdyYWRlICwgSSB0aGluayB0aGUgaW5mcmEg
dGVhbSBqdXN0IGtlcHQgaXQgYWxsIGRlZmF1bHTCoGkuZS4gb3B0aW1pemVyX2FkYXB0aXZlX3Bs
YW4tIHRydWUsIG9wdGltaXplcl9hZGFwdGl2ZV9yZXBvcnRpbmdfb25seS0gZmFsc2UsIG9wdGlt
aXplcl9hZGFwdGl2ZV9zdGF0aXN0aWNzLSBmYWxzZS4gU28gd29uZGVyaW5nIGlmIGl0JiMzOTtz
IGFkdmlzYWJsZS8gYW5kIHNhZmUgdG8gY2hhbmdlIGZldyB0byBub24gZGVmYXVsdD88L2Rpdj48
L2Rpdj48L2Rpdj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkFzIHlvdSByaWdodGx5IGV4cGxh
aW5lZCwgdGhlcmUgc2VlbXMgdG8gYmUgbm8gcm9sZSBvZiByb3dpZCBiYXRjaGluZyBpbiB0aGlz
IHBlcmZvcm1hbmNlIGlzc3VlLiBBZ2Fpbiwgbm90IG11Y2ggZXhwZXJpZW5jZSBpbiByZWFkaW5n
IGNvbXBsZXjCoGV4ZWN1dGlvbiBwYXRocywgYnV0IGZyb20gdGhlIHBhdGggaW5pdGlhbGx5IEkg
d2FzIGludGVycHJldGluZywgaXQgYXMgYm90aCBwbGFucyBhcmUgZXhhY3RseSB0aGUgc2FtZcKg
LMKgIHdpdGgganVzdCB0aGUgZGlmZmVyZW5jZSBpbiAmIzM5O3Jvd2lkIGJhdGNoaW5nIG9wZXJh
dGlvbi4gQnV0IGZyb20geW91ciBleHBsYW5hdGlvbiwgSSBzZWUgSSB3YXPCoGNvbXBsZXRlbHkg
d3JvbmcuwqDCoE5vdywgSSBjYW4gc2VlIGluIHRoZSBnb29kIHBsYW4gY2FzZSBpdCBoYXMgcmVh
ZCB+MjhtaWxsaW9uIGF0IHN0ZXAgfjQ2IGZvciBpbmRleCBUUF9QSyBidXQgaW4gdGhlIGJhZCBw
bGFuIGNhc2UgaXQgaXPCoG5vdCBub3RlZCBpbiB0aGUgc3FsIG1vbml0b3IuIGJ1dCBjb252ZXJz
ZWx5wqAgLMKgIH41R0IgZGF0YSBiZWluZyByZWFkIGluIHRoZSBiYWQgcGxhbiwgYXQgc3RlcC01
OSB3aXRoIH42NjFrIHJlYWQgcmVxdWVzdHMgYW5kIGl0IHJlc3VsdGVkIGluwqB+NzcwayByb3dz
IHRoZXJlLiBCdXQgaW4gY2FzZSBvZiBhIGdvb2QgcGxhbiB0aG9zZSBieXRlcyByZWFkIGFuZCBu
dW1iZXIgb2YgcmVhZCByZXF1ZXN0cyBhcmUgbm90IG5vdGVkLiBTbyBkb2VzIHRoaXMgcG9pbnQg
dG8gdGhlIGZhY3QgdGhhdCB0aGUgc3RhdGlzdGljcyBjb2xsZWN0b3IgaXMgcmVhbGx5IHBsYXlp
bmcgYSByb2xlIGluIHRoZSBvcmRlciBpbiB3aGljaCBkYXRhIHJlc3VsdHMgb3V0IGZyb20gb25l
IG9wZXJhdGlvbi9zdGVwIHRvIGFub3RoZXI/PC9kaXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+PGJy
PjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj48ZGl2IGRpcj0ibHRyIiBjbGFzcz0iZ21haWxfYXR0
ciI+T24gU2F0LCBPY3QgOSwgMjAyMSBhdCA0OjQ5IFBNIEpvbmF0aGFuIExld2lzICZsdDs8YSBo
cmVmPSJtYWlsdG86amxld2lzb3JhY2xlQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmpsZXdp
c29yYWNsZUBnbWFpbC5jb208L2E+Jmd0OyB3cm90ZTo8YnI+PC9kaXY+PGJsb2NrcXVvdGUgY2xh
c3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjBweCAwcHggMHB4IDAuOGV4O2JvcmRlci1s
ZWZ0OjFweCBzb2xpZCByZ2IoMjA0LDIwNCwyMDQpO3BhZGRpbmctbGVmdDoxZXgiPjxkaXYgZGly
PSJsdHIiPjxkaXYgZGlyPSJsdHIiPjxkaXY+PGJyPjwvZGl2PjxkaXY+UmVtZW1iZXIgSSB3YXMg
dGFsa2luZyBQT1NTSUJJTElUSUVTIGluIG15IHByZXZpb3VzIHBvc3QsIG5vdCBjZXJ0YWludGll
cy48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PldpdGggdGhlIGV4dHJhIGluZm9ybWF0aW9uIHlv
dSBoYXZlIG5vdyBzdXBwbGllZCBJIGhhdmUgYSBiZXR0ZXIgaHlwb3RoZXNpcywgYmFzZWQgb24g
dGhlIGZhY3QgdGhhdCB5b3UgaGF2ZSBhZGFwdGl2ZV9wbGFuc19lbmFibGVkICh3aGljaCBJIHNo
b3VsZCBoYXZlIHJlYWxpc2VkIGluIHRoZSBmaXJzdCBwbGFjZSksIGFuZCB0aGF0IHRoZSBwbGFu
cyB5b3UmIzM5O3ZlIHN1cHBsaWVkIGFyZSBkaWZmZXJlbnQgaW4gZXhhY3RseSB0aGUgVFlQRSBv
ZiByZWFzb24gSSBzdWdnZXN0ZWQsIGJ1dCBub3QgZm9yIHRoZSBleGFjdCByZWFzb24uIE15IGJh
c2ljIGh5cG90aGVzaXMgbm93IGlzIHRoYXQgd2hlbiB5b3UgZW5hYmxlZCBhZGFwdGl2ZSBwbGFu
cyBidXQgc2V0IGl0IHRvIHJlcG9ydGluZyBvbmx5IE9yYWNsZSB3aWxsIGFsd2F5cyBpbmNsdWRl
IHRoZSBzdGF0aXN0aWNzIGNvbGxlY3RvciBvcGVyYXRpb25zLCBidXQgaXQgd2lsbCBub3QgdXNl
IHRoZW0gKGkuZS4gbm90IGNvdW50aW5nIGV0YywpIHRvIG1ha2UgYSBkZWNpc2lvbiBhYm91dCB3
aGV0aGVyIHRvIHRha2UgYSBoYXNoIGpvaW4gb3IgYSBuZXN0ZWQgbG9vcCBqb2luLiBJdCB3aWxs
IHNpbXBseSBnZW5lcmF0ZSBhIHBhdGggYmFzZWQgb24gaXRzIGZpcnN0IHBhc3MgY2FsY3VsYXRp
b25zLiA8YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4oWW91IGNvdWxkIGNoZWNrIHRoaXMg
d2l0aCBhIHN1aXRhYmxlIHNldCBvZiBleGFtcGxlcyBhbmQgdGVzdGluZyB3aXRoIChhKSBhZGFw
dGl2ZSBwbGFucyBlbmFibGUgKGIpIGFkYXB0aXZlIHBsYW5zIGVuYWJsZWQgYnV0IHJlcG9ydGlu
ZyBvbmx5IChjKSBhZGFwdGl2ZSBwbGFucyBkaXNhYmxlZC7CoCBZb3UmIzM5O2QgbmVlZCB0byBz
ZXQgdXAgNCBwb3NzaWJpbGl0aWVzOsKgIG5saiBjaGFuZ2luZyB0byBoaiBkdWUgdG8gYWRhcHRp
dmUgcGxhbnMsIGhqIGNoYW5naW5nIHRvIG5saiBkdWUgdG8gYWRhcHRpdmUgcGxhbnMsIA0Kbmxq
IG5vdCBjaGFuZ2luZywgaGogbm90IGNoYW5naW5nKS48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj5TbyBMb29raW5nIGF0IHlvdXIgU1FMIE1vbml0b3IgcmVwb3J0cyAtIGxpbmVzIDQxIGFu
ZCA0MiBhcyBhIHN0YXJ0aW5nIHBvaW50OjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+V0l0aCBy
ZXBvcnRpbmcgb25seSA9IFRSVUU8YnI+PC9kaXY+PGRpdj49PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08YnI+fCBJZCB8IMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgT3BlcmF0aW9uIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIHwgwqAgwqAgwqAgwqAgwqAgwqAgTmFtZSDCoCDCoCDCoCDCoCDCoCDCoCDCoHwg
wqBSb3dzIMKgIHwgQ29zdCDCoHwgwqAgVGltZSDCoCDCoHwgU3RhcnQgwqB8IEV4ZWNzIHwgwqAg
Um93cyDCoCB8IFJlYWQgwqB8IFJlYWQgwqB8IMKgTWVtIMKgfDxicj58IMKgIMKgfCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoHwgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgfCAoRXN0aW0pIHwgwqAgwqAgwqAgfCBBY3RpdmUocykgfCBBY3RpdmUgfCDCoCDCoCDC
oCB8IChBY3R1YWwpIHwgUmVxcyDCoHwgQnl0ZXMgfCAoTWF4KSB8PGJyPj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08YnI+fCA0MSB8
IMKgIMKgIMKgIMKgIMKgIMKgSU5ERVggUkFOR0UgU0NBTiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoHwgVENYX1BLIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgfCDCoCDCoCDCoCAxIHwgwqAgwqAgMiB8IMKgIMKgIMKgIDI3OSB8IMKgIMKgICsyIHwgwqAg
wqAyTSB8IMKgIMKgIMKgIDJNIHwgwqAgwqAgwqAgfCDCoCDCoCDCoCB8IMKgIMKgIC4gfDxicj58
IDQyIHwgwqAgwqAgwqAgwqAgwqAgSU5ERVggUkFOR0UgU0NBTiDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCB8IFRDWF9QSyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoHwgwqAgwqAgwqAgMSB8IMKgIMKgIDIgfCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKg
IMKgfCDCoCDCoCDCoCB8IMKgIMKgIMKgIMKgIMKgfCDCoCDCoCDCoCB8IMKgIMKgIMKgIHwgwqAg
wqAgLiB8PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5XaXRoIHJlcG9ydGluZyBvbmx5ID0gRkFM
U0U8YnI+PC9kaXY+PGRpdj49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTxicj58IElkIHwgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBPcGVyYXRpb24gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgfCDCoCDCoCDCoCDCoCDCoCDCoCBOYW1lIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCDC
oFJvd3MgwqAgfCBDb3N0IMKgfCDCoCBUaW1lIMKgIMKgfCBTdGFydCDCoHwgRXhlY3MgfCDCoCBS
b3dzIMKgIHwgUmVhZCDCoHwgUmVhZCDCoHwgV3JpdGUgfCBXcml0ZSB8IMKgTWVtIMKgfDxicj58
IMKgIMKgfCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHwgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgfCAoRXN0aW0pIHwgwqAgwqAgwqAgfCBBY3RpdmUocykgfCBB
Y3RpdmUgfCDCoCDCoCDCoCB8IChBY3R1YWwpIHwgUmVxcyDCoHwgQnl0ZXMgfCBSZXFzIMKgfCBC
eXRlcyB8IChNYXgpIHw8YnI+PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08YnI+fCA0MSB8IMKgIMKgIMKg
IMKgIMKgIMKgSU5ERVggUkFOR0UgU0NBTiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoHwgVENYX1BLIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCDCoCDC
oCDCoCAxIHwgwqAgwqAgMiB8IMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAgwqAgwqB8IMKgIMKgIMKg
IHwgwqAgwqAgwqAgwqAgwqB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCDCoCB8IMKgIMKg
IMKgIHwgwqAgwqAgLiB8PGJyPnwgNDIgfCDCoCDCoCDCoCDCoCDCoCBJTkRFWCBSQU5HRSBTQ0FO
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgVENYX1BLIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCDCoCDCoCDCoCAxIHwgwqAgwqAgMiB8IMKgIMKg
IMKgIMKgIDEgfCDCoCArMTMxIHwgwqAgwqAgMSB8IMKgIMKgIDk3NksgfCDCoCDCoCDCoCB8IMKg
IMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCDCoCB8IMKgIMKgIC4gfDxicj48L2Rpdj48ZGl2Pjxi
cj48L2Rpdj5UaGVzZSB0d28gbGluZXMgYXJlIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBhcyBhIHJl
c3VsdCBvZiBhIHN0YXRpc3RpY3MgY29sbGVjdG9yIGZ1cnRoZXIgdXAgdGhlIHBsYW4sIGFuZCBv
bmUgcGxhbiB0YWtlcyBvcGVyYXRpb24gNDEsIHRoZSBvdGhlciB0YWtlcyBvcGVyYXRpb24gNDI8
YnI+PC9kaXY+PGRpdiBkaXI9Imx0ciI+PGJyPjwvZGl2PjxkaXY+UHV0dGluZyB0aGVtIGludG8g
Y29udGV4dCAoYWRkaW5nIGluIHNvbWUgcGFyZW50IGFuZCBzaWJsaW5nIHJvd3MpPC9kaXY+PGRp
dj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlIj48YnI+PC9zcGFuPjwvZGl2Pjxk
aXY+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZSI+PHNwYW4gc3R5bGU9ImZvbnQt
ZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYiPlJlcG9ydGluZyBvbmx5ID0gdHJ1ZSAuLi4gcGxhbiBi
YXNlZCBvbiBlc3RpbWF0ZXM8L3NwYW4+PGJyPj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTxicj58IElkIHwgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqBPcGVyYXRpb24gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgfCDCoCDCoCDCoCDCoCDCoCDCoCBOYW1lIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCDCoFJvd3Mg
wqAgfCBDb3N0IMKgfCDCoCBUaW1lIMKgIMKgfCBTdGFydCDCoHwgRXhlY3MgfCDCoCBSb3dzIMKg
IHwgUmVhZCDCoHwgUmVhZCDCoHwgwqBNZW0gwqB8PGJyPnwgwqAgwqB8IMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgfCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8
IChFc3RpbSkgfCDCoCDCoCDCoCB8IEFjdGl2ZShzKSB8IEFjdGl2ZSB8IMKgIMKgIMKgIHwgKEFj
dHVhbCkgfCBSZXFzIMKgfCBCeXRlcyB8IChNYXgpIHw8YnI+PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTxicj58IMKgNyB8IMKgIMKg
IMKgIMKgIE5FU1RFRCBMT09QUyBPVVRFUiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCB8IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwg
wqAgwqAgwqAgMSB8IMKgIMKgM00gfCDCoCDCoCDCoCAyNzkgfCDCoCDCoCArMiB8IMKgIMKgIDEg
fCDCoCDCoCDCoCAyTSB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCAuIHwgwqAgwqAgwqAg
wqAgwqB8IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHw8YnI+fCDCoDggfCDCoCDCoCDCoCDCoCDC
oEhBU0ggSk9JTiBPVVRFUiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCB8IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAg
wqAgMSB8IMKgIMKgM00gfCDCoCDCoCDCoCAyNzkgfCDCoCDCoCArMiB8IMKgIMKgIDEgfCDCoCDC
oCDCoCAyTSB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCAuIHw8YnI+fCDCoDkgfCDCoCDC
oCDCoCDCoCDCoCBORVNURUQgTE9PUFMgT1VURVIgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgfCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8
IMKgIMKgIMKgIDEgfCDCoCDCoDNNIHwgwqAgwqAgwqAgMjc5IHwgwqAgwqAgKzIgfCDCoCDCoCAx
IHwgwqAgwqAgwqAgMk0gfCDCoCDCoCDCoCB8IMKgIMKgIMKgIHwgwqAgwqAgLiB8PGJyPnwgMTAg
fCDCoCDCoCDCoCDCoCDCoCDCoFNUQVRJU1RJQ1MgQ09MTEVDVE9SIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgfCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCB8IMKgIMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCDCoCAyNzkgfCDCoCDCoCArMiB8
IMKgIMKgIDEgfCDCoCDCoCDCoCAyTSB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCAuIHw8
YnI+fCAxMSB8IMKgIMKgIMKgIMKgIMKgIMKgIE5FU1RFRCBMT09QUyBPVVRFUiDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIHwgwqAgwqAgwqAgMSB8IMKgIMKgM00gfCDCoCDCoCDCoCAyNzkgfCDCoCDC
oCArMiB8IMKgIMKgIDEgfCDCoCDCoCDCoCAyTSB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDC
oCAuIHw8YnI+PGJyPi4uLjxicj58IDQxIHwgwqAgwqAgwqAgwqAgwqAgwqBJTkRFWCBSQU5HRSBT
Q0FOIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCBUQ1hfUEsgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB8IMKgIMKgIMKgIDEgfCDCoCDCoCAyIHwgwqAg
wqAgwqAgMjc5IHwgwqAgwqAgKzIgfCDCoCDCoDJNIHwgwqAgwqAgwqAgMk0gfCDCoCDCoCDCoCB8
IMKgIMKgIMKgIHwgwqAgwqAgLiB8PGJyPnwgNDIgfCDCoCDCoCDCoCDCoCDCoCBJTkRFWCBSQU5H
RSBTQ0FOIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgVENYX1BLIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCDCoCDCoCDCoCAxIHwgwqAgwqAgMiB8
IMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAgwqAgwqB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgwqAgwqB8
IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCAuIHw8YnI+fCA0MyB8IMKgIMKgIMKgIMKgIMKg
VEFCTEUgQUNDRVNTIEJZIElOREVYIFJPV0lEIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgVEMg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB8IMKgIMKgIMKgIDEgfCDC
oCDCoCAyIHwgwqAgwqAgwqAgMjc5IHwgwqAgwqAgKzIgfCDCoCDCoDJNIHwgwqAgwqAgwqAgMk0g
fCAxNjAzNyB8IDEyNU1CIHwgwqAgwqAgLiB8IMKgIMKgIMKgIMKgIMKgfCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCB8PGJyPjxicj48YnI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsLHNh
bnMtc2VyaWYiPlJlcG9ydGluZyBvbmx5ID0gZmFsc2UgLi4uIHBsYW4gYWRhcHRzIHRvIGNvdW50
aW5nPGJyPihPUFRFUkFUSU9OIDEwIGRpY3RhdGVzIGEgSEFTSCBKT0lOIHdoZXJlIHRoZSBlc3Rp
bWF0ZWQgc3RhdHMgc3VnZ2VzdGVkIE5MSik8L3NwYW4+PGJyPj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PGJyPnwgSWQgfCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoE9wZXJhdGlvbiDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIMKgIMKgIMKgIE5hbWUgwqAg
wqAgwqAgwqAgwqAgwqAgwqB8IMKgUm93cyDCoCB8IENvc3QgwqB8IMKgIFRpbWUgwqAgwqB8IFN0
YXJ0IMKgfCBFeGVjcyB8IMKgIFJvd3MgwqAgfCBSZWFkIMKgfCBSZWFkIMKgfCBXcml0ZSB8IFdy
aXRlIHwgwqBNZW0gwqB8PGJyPnwgwqAgwqB8IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IChFc3RpbSkgfCDCoCDC
oCDCoCB8IEFjdGl2ZShzKSB8IEFjdGl2ZSB8IMKgIMKgIMKgIHwgKEFjdHVhbCkgfCBSZXFzIMKg
fCBCeXRlcyB8IFJlcXMgwqB8IEJ5dGVzIHwgKE1heCkgfDxicj49PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PTxicj58IMKgNyB8IMKgIMKgIMKgIMKgIE5FU1RFRCBMT09QUyBPVVRFUiDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAgwqAgMSB8IMKgIMKgM00gfCDCoCDCoCDCoCDCoDI3IHwg
wqAgKzEzMSB8IMKgIMKgIDEgfCDCoCDCoCDCoCAyTSB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDC
oCDCoCDCoCB8IMKgIMKgIMKgIHwgwqAgwqAgLiB8PGJyPnwgwqA4IHwgwqAgwqAgwqAgwqAgwqBI
QVNIIEpPSU4gT1VURVIgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
fCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKg
IDEgfCDCoCDCoDNNIHwgwqAgwqAgwqAgMTU1IHwgwqAgwqAgKzMgfCDCoCDCoCAxIHwgwqAgwqAg
wqAgMk0gfCDCoDMwMzUgfCDCoCAxR0IgfCDCoDMwMzUgfCDCoCAxR0IgfCAzMDlNQiB8PGJyPnwg
wqA5IHwgwqAgwqAgwqAgwqAgwqAgTkVTVEVEIExPT1BTIE9VVEVSIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgfCDCoCDCoCDCoCAxIHwgwqAgwqAzTSB8IMKgIMKgIMKgIDEyOSB8IMKgIMKgICsz
IHwgwqAgwqAgMSB8IMKgIMKgIMKgIDJNIHwgwqAgwqAgwqAgfCDCoCDCoCDCoCB8IMKgIMKgIMKg
IHwgwqAgwqAgwqAgfCDCoCDCoCAuIHw8YnI+fCAxMCB8IMKgIMKgIMKgIMKgIMKgIMKgU1RBVElT
VElDUyBDT0xMRUNUT1IgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB8IMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAgwqAgwqAgfCDCoCDC
oCDCoCB8IMKgIMKgIMKgIDEyOSB8IMKgIMKgICszIHwgwqAgwqAgMSB8IMKgIMKgIMKgIDJNIHwg
wqAgwqAgwqAgfCDCoCDCoCDCoCB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCAuIHw8YnI+
fCAxMSB8IMKgIMKgIMKgIMKgIMKgIMKgIE5FU1RFRCBMT09QUyBPVVRFUiDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIHwgwqAgwqAgwqAgMSB8IMKgIMKgM00gfCDCoCDCoCDCoCAxMjkgfCDCoCDCoCAr
MyB8IMKgIMKgIDEgfCDCoCDCoCDCoCAyTSB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCDC
oCB8IMKgIMKgIMKgIHwgwqAgwqAgLiB8PGJyPi4uLjxicj58IDQxIHwgwqAgwqAgwqAgwqAgwqAg
wqBJTkRFWCBSQU5HRSBTQ0FOIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
fCBUQ1hfUEsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB8IMKgIMKgIMKgIDEg
fCDCoCDCoCAyIHwgwqAgwqAgwqAgwqAgwqAgfCDCoCDCoCDCoCDCoHwgwqAgwqAgwqAgfCDCoCDC
oCDCoCDCoCDCoHwgwqAgwqAgwqAgfCDCoCDCoCDCoCB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDC
oCDCoCAuIHw8YnI+fCA0MiB8IMKgIMKgIMKgIMKgIMKgIElOREVYIFJBTkdFIFNDQU4gwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfCBUQ1hfUEsgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqB8IMKgIMKgIMKgIDEgfCDCoCDCoCAyIHwgwqAgwqAgwqAgwqAg
MSB8IMKgICsxMzEgfCDCoCDCoCAxIHwgwqAgwqAgOTc2SyB8IMKgIMKgIMKgIHwgwqAgwqAgwqAg
fCDCoCDCoCDCoCB8IMKgIMKgIMKgIHwgwqAgwqAgLiB8PGJyPnwgNDMgfCDCoCDCoCDCoCDCoCDC
oFRBQkxFIEFDQ0VTUyBCWSBJTkRFWCBST1dJRCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IFRD
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCDCoCDCoCDCoCAxIHwg
wqAgwqAgMiB8IMKgIMKgIMKgIMKgMjcgfCDCoCArMTMxIHwgwqAgwqAyTSB8IMKgIMKgIMKgIDJN
IHwgMjE1NDkgfCAxNjhNQiB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCAuIHw8YnI+PC9z
cGFuPjwvZGl2PjxkaXYgZGlyPSJsdHIiPjxicj48L2Rpdj48ZGl2IGRpcj0ibHRyIj48ZGl2Pjxi
cj48L2Rpdj48ZGl2PkFzIHlvdSBjYW4gc2VlLCB0aGUgYWJpbGl0eSB0byBzd2l0Y2ggcGxhbnMg
bWFrZXMgYSBiaWcgZGlmZmVyZW5jZSB0byB0aGUgYW1vdW50IG9mIHRpbWUgT3JhY2xlIHNwZW5k
cyB3b3JraW5nIGJlZm9yZSBpdCBzdGFydHMgZXhlY3V0aW5nIHN0ZXAgNyAoc3RhcnQgdGltZSA9
ICsyIHNlY29uZHMgdnMuICsxMzEgc2Vjb25kcykuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5U
aGlzIG9uZSBleHRyYWN0IGZyb20gdGhlIHBsYW5zIGRvZXNuJiMzOTt0IGFuc3dlciB0aGUgcXVl
c3Rpb24gYWJvdXQgd2h5ICZxdW90O3RhYmxlIGFjY2VzcyBieSBpbmRleCByb3dpZCBiYXRjaGVk
JnF1b3Q7IGhhcyBhcHBlYXJlZDsgbm9yIGRvZXMgaXQgZXhwbGFpbiB0aGUgdG90YWwgZGlmZmVy
ZW5jZSBiZXR3ZWVuIHRoZSB0d28gZXhlY3V0aW9ucyBiZWNhdXNlIHlvdSBhbHNvIG5lZWQgdG8g
bG9vayBhdCB0aGUgc3RhdGlzdGljcyBjb2xsZWN0b3IgYXQgb3BlcmF0aW9uIDYgYW5kIHRoZSBp
bXBhY3QgdGhhdCBoYXMgb24gd2hpY2ggb2Ygb3BlcmF0aW9uIDQ1LzQ2IGFuZCA0Ny80OCBnZXQg
Y2hvc2VuLiBUaGUgb3RoZXIgcG9pbnQgdGhhdCB0aGVuIGNvbWVzIHVwIGlzIHRoYXQgdGhlIG9y
ZGVyIGluIHdoaWNoIGRhdGEgYXBwZWFycyBmcm9tIGEgaGFzaCBqb2luIGlzIChhbG1vc3QgY2Vy
dGFpbmx5KSBkaWZmZXJlbnQgZnJvbSB0aGUgb3JkZXIgaXQgYXBwZWFycyBmcm9tIGEgbmVzdGVk
IGxvb3Agam9pbiAtIHdoaWNoIG1lYW5zIHRoYXQgd2hlbiB5b3UgdXNlIHRoZSByZXN1bHQgb2Yg
dGhlIGpvaW4gdG8gcHJvYmUgb3RoZXIgdGFibGVzIGJ5IGluZGV4IHRoZSBvcmRlciBvZiB0aGUg
ZHJpdmluZyBkYXRhIGZyb20gb25lIGpvaW4gbWF5IGJlIHJvdWdobHkgaW4gbGluZSB3aXRoIHRo
ZSBpbmRleGVzIGFuZCBkYXRhIGZyb20gdGhlIG5leHQgdGFibGUocykgaW4gdGhlIGpvaW4gYW5k
IGJlbmVmaXQgZnJvbSBhIGxvdCBvZiAmcXVvdDtzZWxmLWluZHVjZWQmcXVvdDsgY2FjaGluZywg
d2hpbGUgdGhlIG90aGVyIGpvaW4gbWlnaHQgcHJvZHVjZSBkYXRhIGluIHdoYXQgaXMgZWZmZWN0
aXZlbHkgYSByYW5kb21pc2VkIG9yZGVyIHJlc3VsdGluZyBpbiAmcXVvdDtzZWxmLWZsdXNoaW5n
JnF1b3Q7IGFuZCBtb3JlIHJhbmRvbSByZWFkcyAtIGFuZCB0aGF0IG1pZ2h0IGV4cGxhaW4gd2hh
dCBoYXBwZW5zIGF0IG9wZXJhdGlvbnMgNjAvNjE8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pldo
YXQgbXkgb2JzZXJ2YXRpb25zIHN1Z2dlc3QgaXMgYSBnb29kIGFyZ3VtZW50IGZvciB3aHkgeW91
IGhhZCBzdWNoIGEgZGlmZmVyZW5jZSBpbiBwZXJmb3JtYW5jZSwgYW5kIHRoYXQgaXQgaGFkIG5v
dGhpbmcgdG8gZG8gd2l0aCB0aGUgYmF0Y2hpbmcgb3Igbm90IG9mIHRoZSB0YWJsZSBhY2Nlc3Mg
Ynkgcm93aWQuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5JIG1heSB3cml0ZSB0aGlzIHVwIGlu
IG1vcmUgZGV0YWlsIGFzIGEgYmxvZyBzb21lIGRheSwgYnV0IEkgZG9uJiMzOTt0IGhhdmUgdGlt
ZSByaWdodCBub3cuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5SZWdhcmRzPC9kaXY+PGRpdj5K
b25hdGhhbiBMZXdpczwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxicj48ZGl2
PiA8YnI+PC9kaXY+PC9kaXY+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj48ZGl2IGRpcj0i
bHRyIiBjbGFzcz0iZ21haWxfYXR0ciI+T24gRnJpLCA4IE9jdCAyMDIxIGF0IDE4OjM0LCBQYXAg
Jmx0OzxhIGhyZWY9Im1haWx0bzpvcmFjbGUuZGV2ZWxvcGVyMzVAZ21haWwuY29tIiB0YXJnZXQ9
Il9ibGFuayI+b3JhY2xlLmRldmVsb3BlcjM1QGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj48
L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBw
eCAwcHggMC44ZXg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGlu
Zy1sZWZ0OjFleCI+PGRpdiBkaXI9Imx0ciI+wqAgSXQmIzM5O3MgZmx1Y3R1YXRpbmcuIEkgYW0g
bm93IG5vdCBhYmxlIHRvIHJlcHJvZHVjZSB0aGUgc2NlbmFyaW/CoGZvciB0aGF0IHNhbWUgc21h
bGwgcXVlcnkgZm9yIHdoaWNoIEkgaGFkIHBvc3RlZCBoZXJlIGp1c3QgYmVmb3JlLsKgIEFuZCB5
b3UgYXJlIGNvcnJlY3QgLCBJIHdhcyBsdWNraWx5IGhhdmluZyBzcWwgbW9uaXRvcnMgc2F2ZWQu
IEkgYW0gYXR0YWNoaW5nIHRob3NlIGhlcmUuwqBJZiB5b3Ugc2VlIHRoYXQsIHRoZSBtYWluIHF1
ZXJ5IHdhcyBzaG93aW5nIHRob3NlIHJvd2lkIGJhdGNoZWQgb3BlcmF0aW9ucyB3aGVuIHdlIGhh
dmUgdGhlwqANCg0Kb3B0aW1pemVyX2FkYXB0aXZlX3JlcG9ydGluZ19vbmx5IHNldCBhcyBkZWZh
dWx0L2ZhbHNlIGFuZCB3YXMgdGFraW5nIGEgbG9uZyB0aW1lIHRvIGZpbmlzaCBhbmQgYWxzbyB0
aGUgZmlyc3QgZmV3IHJvd3Mgd2VyZSBhbHNvIHRha2luZyBsb25nZXIgdG8gZ2V0IHByb2R1Y2Vk
IG91dMKgb2YgdGhlIHF1ZXJ5LiBCdXQgdGhlIHNhbXBsZSBzbWFsbCBxdWVyeSB3aGljaCBpIGhh
ZCBwb3N0ZWQgYSBjdXJzb3IgcGxhbiBmb3Igd2FzIGp1c3Qgc2hvd2luZyB0aGXCoG9wcG9zaXRl
IGJlaGF2aW91ci4gVGhhdCBpcyBnb2luZyBmb3IgYSByb3dpZCBiYXRjaGVkIHBhdGggd2hlbiBv
cHRpbWl6ZXJfYWRhcHRpdmVfcmVwb3J0aW5nX29ubHkgc2V0cyBhcyB0cnVlLjxkaXY+PGJyPjwv
ZGl2PjxkaXY+SG93ZXZlcizCoCBub3cgSSBhbSBzZWVpbmcgdGhhdCBzYW1lIHNtYWxsIHF1ZXJ5
IGluIGJvdGggdGhlIGNhc2VzIChpcnJlc3BlY3RpdmUgb2YgdmFsdWUgb2Ygb3B0aW1pemVyX2Fk
YXB0aXZlX3JlcG9ydGluZ19vbmx5KSBnb2luZyBmb3IgJiMzOTtyb3dpZCBiYXRjaGVkJiMzOTsg
ZXhlY3V0aW9uIHBhdGguIE5vdCBzdXJlIGlmIGl0JiMzOTtzIGp1c3Qgc3RhdHMgb3IgYW55dGhp
bmfCoGVsc2UgaW5mbHVlbmNpbmcgYW5kIEkgYW3CoHNlZWluZyBkaWZmZXJlbnQgdGhpbmdzwqBi
ZWhhdmlvdXIuIEp1c3QgdG8gbm90ZSB3ZSBoYXZlICYjMzk7b3B0aW1pemVyX2FkYXB0aXZlX3Bs
YW5zJiMzOTsgc2V0IHRvIHRydWUgLCAmIzM5O29wdGltaXplcl9hZGFwdGl2ZV9zdGF0aXN0aWNz
JiMzOTsgc2V0wqAgdG8gZmFsc2UuIFRoZSBvbmx5IGNoYW5nZSB3ZSBtYWRlIHdhcyBtb3Zpbmcg
JiMzOTsNCg0Kb3B0aW1pemVyX2FkYXB0aXZlX3JlcG9ydGluZ19vbmx5JiMzOTsgZnJvbSBmYWxz
ZSB0byB0cnVlLjwvZGl2PjxkaXY+PGRpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkFuZCBKb25hdGhh
biB3aGVuIHlvdSBzYWlkIHRoZSBvcHRpbWl6ZXJfYWRhcHRpdmVfcmVwb3J0aW5nX29ubHkgPSB0
cnVlIHdpbGwgaW50cm9kdWNlICYjMzk7c3RhdGlzdGljcyBjb2xsZWN0b3ImIzM5OyBvcGVyYXRp
b24sIGJ1dCBpZiB5b3Ugc2VlIHRoZSBhdHRhY2hlZCBzcWwgbW9uaXRvciBmb3IgdGhlIG1haW4g
cXVlcnksIGkgYW0gc2VlaW5nICYjMzk7c3RhdGlzdGljcyBjb2xsZWN0b3ImIzM5OyBldmVuIHdo
ZW4gb3B0aW1pemVyX2FkYXB0aXZlX3JlcG9ydGluZ19vbmx5IGlzID0gZmFsc2UuIElzIHRoYXQg
ZXhwZWN0ZWQgYmVoYXZpb3VyP8KgPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGJyPjxkaXYgY2xh
c3M9ImdtYWlsX3F1b3RlIj48YnI+PC9kaXY+DQo8L2Jsb2NrcXVvdGU+PC9kaXY+DQo8ZGl2Pjxi
cj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48L2Rpdj4NCjwvYmxvY2txdW90
ZT48L2Rpdj4NCjwvYmxvY2txdW90ZT48L2Rpdj4NCg==
--000000000000a0788f05ce03929c--

--
http://www.freelists.org/webpage/oracle-l



