<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>12279</bug_id>
          
          <creation_ts>2007-01-15 05:59:28 -0800</creation_ts>
          <short_desc>Two pass loading is needed when the network has high latency and low bandwidth</short_desc>
          <delta_ts>2008-11-11 21:40:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>420+</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Carson">dacarson</reporter>
          <assigned_to name="David Carson">dacarson</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>klobag</cc>
    
    <cc>koivisto</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>34855</commentid>
    <comment_count>0</comment_count>
    <who name="David Carson">dacarson</who>
    <bug_when>2007-01-15 05:59:28 -0800</bug_when>
    <thetext>When loading some sites on devices that have high latency and low bandwidth (HL/LB), the user may not see content for quite some time. This is due the external javascript references and CSS references. When the parser hits the external JS reference, it blocks - which is the correct behaviour - and waits until the JS is available then executes the JS. Then continues parsing the markup. 
When using a HL/LB device, the user can be waiting too long, and they press cancel to stop loading thinking that the page is not loading. 
One way to address this issue is to load the page, but not execute any JS or block on external CSS requests, though, the content is still requested. This way the user sees some content. When all the content is available, the browser needs to reparse the HTML content executing the JS and applying the CSS.
This process does result in a FoUC (Flash of Unstyled Content), though, this is preferable to the user pressing cancel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34765</commentid>
    <comment_count>1</comment_count>
      <attachid>12457</attachid>
    <who name="David Carson">dacarson</who>
    <bug_when>2007-01-15 08:15:18 -0800</bug_when>
    <thetext>Created attachment 12457
Incomplete patch

The attached patch is not complete, and presently does not compile. The code in FrameLoader is not correct as it was migrated from Frame.cpp. It had to be migrated as the frame loading code has been moved from Frame to FrameLoader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34201</commentid>
    <comment_count>2</comment_count>
      <attachid>12562</attachid>
    <who name="David Carson">dacarson</who>
    <bug_when>2007-01-19 06:45:17 -0800</bug_when>
    <thetext>Created attachment 12562
updated patch

This new patch compiles fine. In this patch double tree is enabled for the  mac build. It is enabled via WebKit/config.h WTF_USE_DOUBLE_TREE
This patch works fine when there are no resources to load, but crashes otherwise.
Patch is Work In Progress (WIP)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22393</commentid>
    <comment_count>3</comment_count>
      <attachid>13300</attachid>
    <who name="Bradley Morrison">bradley.morrison</who>
    <bug_when>2007-02-21 10:29:33 -0800</bug_when>
    <thetext>Created attachment 13300
patch for s60 webkit tot doubletree

You may find this patch by anttik an interesting reference. It implements the s60 doubletree.

This won&apos;t of course apply cleanly to WebKit ToT because:
   - our internal ToT is not quite up to date with WebKit ToT (but it;s close)
   - the patch touches some s60 specific files that won&apos;t be in WebKiT ToT (or so I&apos;m guessing)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20379</commentid>
    <comment_count>4</comment_count>
      <attachid>13483</attachid>
    <who name="Grace Kloba">klobag</who>
    <bug_when>2007-03-05 18:42:17 -0800</bug_when>
    <thetext>Created attachment 13483
patch for ToT (rev 19972)

This patch should work with ToT (rev 19972). It is enabled by WTF_USE_DOUBLE_TREE in WebCore/config.h for MAC. While running LayoutTests, I found some small problems.
1. It caused assertion for fast/dom/css-insert-import-rule.html. But I can reproduce the assertion without this patch. It is reported in bug http://bugs.webkit.org/show_bug.cgi?id=12973
2. When running script run-webkit-tests, I saw the following two fail cases.
     fast/events/updateLayoutForHitTest.html -&gt; failed
     fast/events/window-events-bubble2.html -&gt; failed
   But if I run with -1, I got all cases succeeded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20093</commentid>
    <comment_count>5</comment_count>
      <attachid>13483</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-07 07:35:57 -0800</bug_when>
    <thetext>Comment on attachment 13483
patch for ToT (rev 19972)

This looks great to me!

Very interesting work that will probably require more than one pass of review, and from more than just me. Here are my comments from my first time reading through:

Why are we turning the double tree on for the Macintosh platform? Is this feature helpful for the Macintosh desktop browser? If it is, then what browser would ever want this feature off? What about other WebKit clients on Macintosh? Maybe we need a way to opt in per-WebView for compatibility with existing programs that won&apos;t expect this behavior, like Dashboard for example.

I don&apos;t think it&apos;s clear that inFastDisplay is realted to the feature called DOUBLE_TREE. In particular, it doesn&apos;t seem to have anything to do with the name &quot;double tree&quot;.Similarly, nothing about a function named needToSwitch or a data member named m_needSwitch connects it with the fast display or double tree names. The function name switchToFinalDocIfReady also is not clearly connected to the double tree or to fast mode. The names are too vague given context. There is more than one kind of switch that occurs in a frame loader, for example the switch from provisional state to committed state.

I&apos;d like to see the various names -- for the entire feature, the mode where you haven&apos;t yet loaded enough to do &quot;real&quot; display, the transition from one mode to the other, and the two documents -- that are clearly related. Today the feature overall is called &quot;double tree&quot;, the early mode is called &quot;fast display&quot;, the transition is called &quot;switch&quot; and &quot;switch to final doc&quot;.

+#if USE(DOUBLE_TREE)
+#include &quot;Frame.h&quot;
+#include &quot;FrameLoader.h&quot;
+#endif

This is a strange change in Cache.cpp. That file already includes FrameLoader.h so we don&apos;t need to include it again.

Also, we typically only put #if around includes in cases where we have to, like major platform differences. This ifdef change would not require an ifdef.

+#if USE(DOUBLE_TREE)        
+    CachedResourceClientWalker n(m_clients);
+    while (CachedResourceClient *c = n.next())
+        c-&gt;notifyFinished(this);
+#endif        

No comment here to indicate why this is correct behavior. I guess the rule is that CSS always pretends to be done loading immediately, but that&apos;s not obvious so it needs some kind of comment.

This also has formatting. The * should be next to the class name, CachedResourceClient, not the variable name, c. The surrounding code was already incorrect; it&apos;s older code that we haven&apos;t gotten too yet. It&apos;s better to do it our new way for new code.

+    void replaceDoc(Document* doc) { m_doc = doc; }

Please name this replaceDocument, rather than replaceDoc. We&apos;re trying to abbreviate less. Even the class name, DocLoader, is slated to be changed (actually, we&apos;re going to merge the two classes DocLoader and DocumentLoader).

+    if (document-&gt;isHTMLDocument() &amp;&amp;

Why is this check, in FrameLoader::begin, correct? Why don&apos;t we want to do this for non-HTML documents?

+        if (m_needSwitch)
+            return;
+        else
+            switchToFinalDocIfReady();

This code shows some confusion of terminology. When I read that if I think that is says: &quot;if you need switch don&apos;t switch, but if you don&apos;t need a switch go ahead and switch if ready&quot;.

Also, we don&apos;t use else statements after return in new WebKit code.

+    switch(cache-&gt;type()) {

We put space after switch keywords before te parentheses.

+        case CachedResource::CSSStyleSheet:
+        case CachedResource::Script:
+            m_needSwitch = true;
+            m_CachedRequests.add(cache);
+            cache-&gt;ref(this);
+            return true;
+        default:
+        break;
+    }

The break should be indented after default, but more importantly, we normally list all the cases in switch statements like this one. That way the gcc compiler can detect missing switch statements. This is very helpful when adding a new enumeration value. It helps you spot switch statements and make a decision about the right behavior. So please add the other cases here.

m_CachedRequests should not have a capital &quot;C&quot;. But also I don&apos;t understand in what sense these requests are &quot;cached&quot;. Is the cache in &quot;cached&quot; a reference to the WebCore::Cache object? I think we need a better name for these than &quot;cached requests&quot;; ideally one that makes it clear how these relate to the double tree, fast mode, and decision about when to switch.

+void FrameLoader::removeAllCachedRequests()
+{
+    if (!m_CachedRequests.isEmpty()) {
+        HashSet&lt;CachedResource*&gt;::iterator end = m_CachedRequests.end();
+        for (HashSet&lt;CachedResource*&gt;::iterator it = m_CachedRequests.begin(); it != end; ++it)
+            (*it)-&gt;deref(this);
+        m_CachedRequests.clear();        
+    }
+}

The isEmpty() check here is unnecessary. It will be quite efficient to just call end(), begin(), and clear() even if the set is empty.

+    if (m_CachedRequests.contains(script)) {
+        HashSet&lt;CachedResource*&gt;::iterator it = m_CachedRequests.find(script);
+        (*it)-&gt;deref(this);
+        m_CachedRequests.remove(it);
+        switchToFinalDocIfReady();        
+    }

This can be written more efficiently to do only a single hash table lookup.

    HashSet&lt;CachedResource*&gt;::iterator it = m_CachedRequests.find(script);
    if (it != m_CachedRequests.end()) {
        (*it)-&gt;deref(this);
        m_CachedRequests.remove(it);
        switchToFinalDocIfReady();        
    }

+#define MAX_SRC_LENGTH  128*1024

Since this is C++, we use const for things like this rather than #define. And thus we don&apos;t use all capitals either. And we put such constants at the top of the file rather than in between functions.

I think that FrameLoader::switchToFinalDocIfReady has too much repeated code that&apos;s also in FrameLoader::begin. FrameLoader has some bad stuff like that in it already, but I&apos;d like to avoid adding more. Instead we should consider a small bit of refactoring so we can share as much of the code as possible.

+            oldDoc-&gt;removeAllEventListenersFromAllNodes();

Why is this helpful? Who could have added event listeners? Do we actually let JavaScript run in the &quot;fast display&quot; mode? If so, how can that work? Wouldn&apos;t at least some documents have a problem if they were loaded twice?

+#if USE(DOUBLE_TREE)
+    class FrameLoader : Noncopyable, CachedResourceClient {
+#else

I&apos;d like this to say &quot;private CachedResourceClient&quot;. It&apos;s correct to use private inheritance for this, but it should be explicit. The one case where we don&apos;t bother saying &quot;private&quot; explicitly is for Noncopyable, because in that one special case it doesn&apos;t matter if it&apos;s private or public inheritance. So it sets a bad example!

+        // implementation for CachedResourceClient        
+        virtual void notifyFinished(CachedResource*);

This function should be private. We privately inherit from CachedResourceClient.

+        bool addCachedRequest(CachedResource*);
+        void removeAllCachedRequests();
+        
+        void setUseFastDisplay(bool fastDisplay) { m_useFastDisplay = fastDisplay; }
+        void needToSwitch() { m_needSwitch = true; }
+        
+        void switchToFinalDocIfReady();        

Can some of these functions be private? We want everything private unless it needs to be public.

+        // whether to use fastDislay, set by client

Typo &quot;fast dislay&quot;.

+        String m_pendingSrc;        

We try to avoid abbreviations where possible, and &quot;src&quot; here is pretty terse.

What kinds of testing have you done so far on this? Is there any way to write tests to make sure we exercise all the code paths?

review- because at least some of these comments will need to be addressed before we can land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19873</commentid>
    <comment_count>6</comment_count>
      <attachid>13537</attachid>
    <who name="Grace Kloba">klobag</who>
    <bug_when>2007-03-07 22:37:22 -0800</bug_when>
    <thetext>Created attachment 13537
updated patch according to review (rev 20051)

I have updated the patch according to the comment from Darin.

The patch originally set the flag for MAC build to make testing easier. I have changed it to depend on whether MOBILE is set as it is only needed when network has low bandwidth.

I also modified all the names. Hope they are more related this time.

I was planning to reuse begin() when switch. But current code is not suitable. Maybe we can re-factor them later to avoid duplicate code.

I did run through all 7416 LayoutTests with the flag on. There is an assertion as I mentioned before. There are three other fail cases. But they are all fine if I run the test with -1. I will continue look into them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17471</commentid>
    <comment_count>7</comment_count>
      <attachid>13537</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-03-24 19:09:42 -0700</bug_when>
    <thetext>Comment on attachment 13537
updated patch according to review (rev 20051)

So one problem I have with this patch is that there is way too much generic terminology employed.

The term &quot;fast display&quot; really should be replaced with something a bit more specific in both the ifdef and the Document methods.

This isn&apos;t so much about &quot;fast display.&quot;  Ideally our desktop Safari is displaying pages fast! ;)

I&apos;d prefer USE(LOW_BANDWIDTH_DISPLAY) and inLowBandwidthDisplay/setLowBandwidthDisplay.

The methods addExternalRequest and removeAllExternalRequests are way too generically named.  I&apos;d use addLowBandwidthDisplayRequest and removeAllLowbandwidthDisplayRequests.  I know this is a bit of a mouthful, but I think the current names don&apos;t provide any clue that they are only used with the low bandwidth display code.

Please ifdef the include of CachedResourceClient.h in FrameLoader.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17461</commentid>
    <comment_count>8</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-03-24 19:10:53 -0700</bug_when>
    <thetext>And sorry for the big delay in review time.   We&apos;re in the big stabilization push now, so we&apos;re focusing more on reviewing the P1 bugs, etc.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16839</commentid>
    <comment_count>9</comment_count>
      <attachid>13840</attachid>
    <who name="Grace Kloba">klobag</who>
    <bug_when>2007-03-27 23:08:31 -0700</bug_when>
    <thetext>Created attachment 13840
updated patch according to review (rev 20546)

Thanks for the review. I have changed the names according to the suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16782</commentid>
    <comment_count>10</comment_count>
      <attachid>13840</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-03-27 23:14:08 -0700</bug_when>
    <thetext>Comment on attachment 13840
updated patch according to review (rev 20546)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15906</commentid>
    <comment_count>11</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-04-01 06:41:58 -0700</bug_when>
    <thetext>Does this mode still cause assertion failures on the layout tests? If so then I do not think it should be r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15837</commentid>
    <comment_count>12</comment_count>
      <attachid>13932</attachid>
    <who name="Grace Kloba">klobag</who>
    <bug_when>2007-04-02 23:42:12 -0700</bug_when>
    <thetext>Created attachment 13932
updated patch for fix layout tests (rev 20675)

I have updated the patch so that it passed all layout tests except one, security/block-test. I suspect that the difference is caused by the nature of the two passes. Can someone inside confirm this? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15577</commentid>
    <comment_count>13</comment_count>
      <attachid>13932</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-04-05 09:11:35 -0700</bug_when>
    <thetext>Comment on attachment 13932
updated patch for fix layout tests (rev 20675)

No real review, just noticed a mistake. removeAllLowbandwidthDisplayRequests should have a capital B</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13241</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-04-22 16:32:11 -0700</bug_when>
    <thetext>Sending        WebCore/ChangeLog
Sending        WebCore/dom/Document.cpp
Sending        WebCore/dom/Document.h
Sending        WebCore/html/HTMLTokenizer.cpp
Sending        WebCore/loader/Cache.cpp
Sending        WebCore/loader/CachedCSSStyleSheet.cpp
Sending        WebCore/loader/DocLoader.h
Sending        WebCore/loader/FrameLoader.cpp
Sending        WebCore/loader/FrameLoader.h
Transmitting file data .........
Committed revision 21009.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64291</commentid>
    <comment_count>15</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-12-15 06:09:06 -0800</bug_when>
    <thetext>Currently broken in ToT WebKit.  See Bug 16433.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98431</commentid>
    <comment_count>16</comment_count>
    <who name="Arun Patole">webkit.arunp</who>
    <bug_when>2008-11-11 21:40:50 -0800</bug_when>
    <thetext>Hello David/Grace/Darin

I know this bug is Resolved FIXED but just putting my comments and queries in case you are still tracking it.

Some comments on:

+ FrameLoader::switchOutLowBandwidthDisplayIfReady()
 .....
 .....
+ // drop the old doc
+   oldDoc = 0; 
 .....
 .....

Here we are dropping the old document, creating new and swapping the ownership.

Has anyone thought of not dropping the existing document and just inserting the JS and CSS at approriate place in existing document once all external JS and CSS are available.

Problem with dropping the existing doc and creating new:
I think if we have recursive external java script calls, lets say we have a page referring to external &quot;script1.js&quot;. This script will be skipped in low bandwidth display. Once script1.js is available, switching out of low bandwidth display will happen. 

But, if script1.js calls another external JS script2.js, we will be blocked till we receive script2.js and on slow networks we might see blank page after low bandwidth display for some time I think.

Couldn&apos;t we just insert output of all scripts to the existing document which will avoid user seeing blank page in case of external calls.

Thanks,
Arun Patole
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12457</attachid>
            <date>2007-01-15 08:15:18 -0800</date>
            <delta_ts>2007-01-19 06:45:17 -0800</delta_ts>
            <desc>Incomplete patch</desc>
            <filename>not_working.txt</filename>
            <type>text/plain</type>
            <size>15870</size>
            <attacher name="David Carson">dacarson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jb25maWcuaAko
cmV2aXNpb24gMTg4NTgpCisrKyBXZWJDb3JlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC04
Nyw2ICs4Nyw3IEBAIHR5cGVkZWYgZmxvYXQgQ0dGbG9hdDsKICNpZiBQTEFURk9STShNQUMpCiAj
ZGVmaW5lIFdURl9VU0VfSkFWQVNDUklQVENPUkVfQklORElOR1MgMQogI2RlZmluZSBXVEZfVVNF
X05QT0JKRUNUIDEKKyNkZWZpbmUgV1RGX1VTRV9ET1VCTEVfVFJFRSAxCiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKFNZTUJJQU4pCkBAIC0xMDMsNiArMTA0LDggQEAgdHlwZWRlZiBmbG9hdCBDR0Zs
b2F0OwogI2RlZmluZSBVX0hBVkVfSU5UNjRfVCAwCiAjZGVmaW5lIFVfSEFWRV9JTlRUWVBFU19I
IDAKIAorI2RlZmluZSBXVEZfVVNFX0RPVUJMRV9UUkVFIDEKKwogI2luY2x1ZGUgPHN0ZGlvLmg+
CiAjaW5jbHVkZSA8c25wcmludGYuaD4KICNpbmNsdWRlIDxsaW1pdHMuaD4KSW5kZXg6IFdlYkNv
cmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nz
c3N0eWxlc2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxODg1OCkKKysrIFdlYkNvcmUvY3NzL2Nzc3N0
eWxlc2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODIsNyArNzgyLDExIEBAIFJlbmRl
clN0eWxlKiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckUKIHsKICAgICAvLyBPbmNlIGFuIGVs
ZW1lbnQgaGFzIGEgcmVuZGVyZXIsIHdlIGRvbid0IHRyeSB0byBkZXN0cm95IGl0LCBzaW5jZSBv
dGhlcndpc2UgdGhlIHJlbmRlcmVyCiAgICAgLy8gd2lsbCB2YW5pc2ggaWYgYSBzdHlsZSByZWNh
bGMgaGFwcGVucyBkdXJpbmcgbG9hZGluZy4KKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisgICAgaWYg
KGFsbG93U2hhcmluZyAmJiAhZS0+ZG9jdW1lbnQoKS0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkg
JiYgIWUtPnJlbmRlcmVyKCkgJiYgIWUtPmRvY3VtZW50KCktPmZhc3REaXNwbGF5TW9kZSgpKSB7
CisjZWxzZQogICAgIGlmIChhbGxvd1NoYXJpbmcgJiYgIWUtPmRvY3VtZW50KCktPmhhdmVTdHls
ZXNoZWV0c0xvYWRlZCgpICYmICFlLT5yZW5kZXJlcigpKSB7CisjZW5kaWYKICAgICAgICAgaWYg
KCFzdHlsZU5vdFlldEF2YWlsYWJsZSkgewogICAgICAgICAgICAgc3R5bGVOb3RZZXRBdmFpbGFi
bGUgPSA6Om5ldyBSZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgc3R5bGVOb3RZZXRBdmFpbGFi
bGUtPnNldERpc3BsYXkoTk9ORSk7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxODg1OCkKKysr
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk2LDYgKzI5Niw5
IEBAIERvY3VtZW50OjpEb2N1bWVudChET01JbXBsZW1lbnRhdGlvbiogaW0KICAgICAsIG1fYWNj
ZXNzS2V5TWFwVmFsaWQoZmFsc2UpCiAgICAgLCBtX2NyZWF0ZVJlbmRlcmVycyh0cnVlKQogICAg
ICwgbV9pblBhZ2VDYWNoZShmYWxzZSkKKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisgICAgLCBtX2Zh
c3REaXNwbGF5TW9kZShmYWxzZSkKKyNlbmRpZgogewogICAgIG1fZG9jdW1lbnQucmVzZXRTa2lw
cGluZ1JlZih0aGlzKTsKIApAQCAtMTM4NCw3ICsxMzg3LDExIEBAIGJvb2wgRG9jdW1lbnQ6OnNo
b3VsZFNjaGVkdWxlTGF5b3V0KCkKICAgICAvLyAoYSkgd2UgYWN0dWFsbHkgbmVlZCBhIGxheW91
dAogICAgIC8vIChiKSBvdXIgc3R5bGVzaGVldHMgYXJlIGFsbCBsb2FkZWQKICAgICAvLyAoYykg
d2UgaGF2ZSBhIDxib2R5PgorI2lmIFVTRShET1VCTEVfVFJFRSkKKyAgICByZXR1cm4gKHJlbmRl
cmVyKCkgJiYgcmVuZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSAmJiAoaGF2ZVN0eWxlc2hlZXRzTG9h
ZGVkKCkgfHwgbV9mYXN0RGlzcGxheU1vZGUpICYmCisjZWxzZQogICAgIHJldHVybiAocmVuZGVy
ZXIoKSAmJiByZW5kZXJlcigpLT5uZWVkc0xheW91dCgpICYmIGhhdmVTdHlsZXNoZWV0c0xvYWRl
ZCgpICYmCisjZW5kaWYKICAgICAgICAgICAgIGRvY3VtZW50RWxlbWVudCgpICYmIGRvY3VtZW50
RWxlbWVudCgpLT5yZW5kZXJlcigpICYmCiAgICAgICAgICAgICAoIWRvY3VtZW50RWxlbWVudCgp
LT5oYXNUYWdOYW1lKGh0bWxUYWcpIHx8IGJvZHkoKSkpOwogfQpJbmRleDogV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lv
biAxODg1OCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
Myw2ICszMDMsMTEgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKCk7CiAgICAgc3RhdGljIHZvaWQgdXBkYXRlRG9jdW1lbnRzUmVuZGVyaW5n
KCk7CiAgICAgRG9jTG9hZGVyKiBkb2NMb2FkZXIoKSB7IHJldHVybiBtX2RvY0xvYWRlcjsgfQor
I2lmIFVTRShET1VCTEVfVFJFRSkKKyAgICB2b2lkIHNldERvY0xvYWRlcihEb2NMb2FkZXIqIGxv
YWRlcikgeyBtX2RvY0xvYWRlciA9IGxvYWRlcjsgfQorICAgIGJvb2wgZmFzdERpc3BsYXlNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9mYXN0RGlzcGxheU1vZGU7IH0KKyAgICB2b2lkIHNldEZhc3RE
aXNwbGF5TW9kZShib29sIG1vZGUpIHsgbV9mYXN0RGlzcGxheU1vZGUgPSBtb2RlOyB9CisjZW5k
aWYgCiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFj
aCgpOwpAQCAtODI0LDYgKzgyOSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jcmVhdGVSZW5k
ZXJlcnM7CiAgICAgYm9vbCBtX2luUGFnZUNhY2hlOwogICAgIFN0cmluZyBtX2ljb25VUkw7CisJ
CisjaWYgVVNFKERPVUJMRV9UUkVFKQorICAgIGJvb2wgbV9mYXN0RGlzcGxheU1vZGU7CisjZW5k
aWYgCiB9OwogCiB9IC8vbmFtZXNwYWNlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXpl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCShyZXZp
c2lvbiAxODg1OCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAwLDYgKzQwMCw5IEBAIEhUTUxUb2tlbml6ZXI6OlN0YXRlIEhUTUxUb2tlbml6
ZXI6OnNjcmkKICAgICAgICAgICAgIGtkRGVidWcoIDYwMzYgKSA8PCAiLS0tRU5EIFNDUklQVC0t
LSIgPDwgZW5kbDsKICNlbmRpZgogICAgICAgICAgICAgLy8gUGFyc2Ugc2NyaXB0Q29kZSBjb250
YWluaW5nIDxzY3JpcHQ+IGluZm8KKyNpZmRlZiBVU0UoRE9VQkxFX1RSRUUpCisgICAgICAgICAg
ICBpZiAoIXBhcnNlci0+ZG9jKCktPmZhc3REaXNwbGF5TW9kZSgpKQorI2VuZGlmIAogICAgICAg
ICAgICAgZG9TY3JpcHRFeGVjID0gc3RhdGljX2Nhc3Q8SFRNTFNjcmlwdEVsZW1lbnQqPihzY3Jp
cHROb2RlLmdldCgpKS0+c2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpOwogICAgICAgICAgICAg
c2NyaXB0Tm9kZSA9IDA7CiAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJKHJldmlzaW9uIDE4ODU4
KQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICsz
Niw5IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaWYgVVNFKERPVUJMRV9UUkVFKQorI2luY2x1ZGUgIkZy
YW1lLmgiCisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtMTAxLDYgKzEwNCwx
MyBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGU6OnJlcXVlc3RSZXNvdXJjZShECiAKICAgICBpZiAo
cmVzb3VyY2UtPnR5cGUoKSAhPSB0eXBlKQogICAgICAgICByZXR1cm4gMDsKKwkJCisjaWYgVVNF
KERPVUJMRV9UUkVFKQorICAgIGlmIChkb2NMb2FkZXItPmRvYygpLT5mYXN0RGlzcGxheU1vZGUo
KSkgeworICAgICAgICBkb2NMb2FkZXItPmRvYygpLT5mcmFtZSgpLT5sb2FkZXIoKS0+YWRkQ2Fj
aGVkUmVxdWVzdChyZXNvdXJjZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyNlbmRpZgog
CiAgICAgcmV0dXJuIHJlc291cmNlOwogfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgJKHJldmlzaW9uIDE4
ODU4KQorKysgV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1
LDYgKzg1LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TG9hZEluUHJvZ3Jlc3MoYm9vbCk7
CiAgICAgYm9vbCBsb2FkSW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZEluUHJvZ3Jl
c3M7IH0KKwkKKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisgICAgdm9pZCBzZXREb2MoV2ViQ29yZTo6
RG9jdW1lbnQqIGRvYykgeyBtX2RvYyA9IGRvYzsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAg
Q2FjaGVkUmVzb3VyY2UqIHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyogY2hhcnNldCA9IDApOwpJbmRleDogV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTg4NTgpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw2ICsyMzUsMTAgQEAgRnJhbWVMb2FkZXI6
OkZyYW1lTG9hZGVyKEZyYW1lKiBmcmFtZSwgRgogICAgICwgbV9yZWRpcmVjdGlvblRpbWVyKHRo
aXMsICZGcmFtZUxvYWRlcjo6cmVkaXJlY3Rpb25UaW1lckZpcmVkKQogICAgICwgbV9vcGVuZXIo
MCkKICAgICAsIG1fb3BlbmVkQnlKYXZhU2NyaXB0KGZhbHNlKQorI2lmZGVmIFVTRV9ET1VCTEVf
VFJFRQorICAgICwgbV91c2VGYXN0RGlzcGxheSh0cnVlKQorCSwgbV9maW5pc2hQYXJzaW5nQ2Fs
bGVkKGZhbHNlKQorI2VuZGlmICAgCiB7CiB9CiAKQEAgLTU1Niw2ICs1NjAsMTMgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6c3RvcExvYWRpbmcoYm9vbCBzZW5kVQogICAgICAgICBjaGlsZC0+bG9hZGVy
KCktPnN0b3BMb2FkaW5nKHNlbmRVbmxvYWQpOwogCiAgICAgY2FuY2VsUmVkaXJlY3Rpb24oKTsK
KwkKKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkgJiYg
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZmFzdERpc3BsYXlNb2RlKCkpIHsKKwkJcmVtb3ZlQWxsQ2Fj
aGVkUmVxdWVzdCgpOworICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0RmFzdERpc3Bs
YXlNb2RlKGZhbHNlKTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6c3Rv
cCgpCkBAIC03NjEsNiArNzcyLDEzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlY2VpdmVkRmlyc3RE
YXRhKCkKIAogICAgIGRvdWJsZSBkZWxheTsKICAgICBTdHJpbmcgVVJMOworCQorI2lmIFVTRShE
T1VCTEVfVFJFRSkKKyAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQo
KSAmJiBtX2ZyYW1lLT5tX3VzZUZhc3REaXNwbGF5KSB7CisgICAgICAgIG1fZnJhbWUtPmRvY3Vt
ZW50KCktPnNldEZhc3REaXNwbGF5TW9kZSh0cnVlKTsKKyAgICAgICAgbV9wZW5kaW5nU3JjLmNs
ZWFyKCk7CisgICAgfQorI2VuZGlmCiAKICAgICBpZiAoIXBhcnNlSFRUUFJlZnJlc2gocmVmcmVz
aCwgZGVsYXksIFVSTCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg0OSw2ICs4NjcsMTYgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6d3JpdGUoY29uc3QgY2hhciogc3RyLAogICAgIAogICAgIGlmIChsZW4g
PT0gLTEpCiAgICAgICAgIGxlbiA9IHN0cmxlbihzdHIpOworCQkKKyNpZiBVU0UoRE9VQkxFX1RS
RUUpCisvLyBUaGUgYXNzdW1wdGlvbiBpbiB0aGUgY29kZSBiZWxvdyBpcyB0aGF0IHRoZXJlIGlz
IGEgZG9jdW1lbnQKKy8vIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2hlY2sgbV9mcmFtZS0+ZG9j
dW1lbnQoKSBleGlzdHMuCisgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCktPmZhc3REaXNwbGF5
TW9kZSgpKSB7CisgICAgICAgIFZlY3RvcjxjaGFyPiB0bXAobGVuKTsKKyAgICAgICAgbWVtY3B5
KHRtcC5kYXRhKCksIHN0ciwgbGVuICogc2l6ZW9mKGNoYXIpKTsKKyAgICAgICAgbV9wZW5kaW5n
U3JjLmFwcGVuZCh0bXApOworICAgIH0KKyNlbmRpZgogCiAgICAgVG9rZW5pemVyKiB0b2tlbml6
ZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT50b2tlbml6ZXIoKTsKICAgICBpZiAodG9rZW5pemVy
ICYmIHRva2VuaXplci0+d2FudHNSYXdEYXRhKCkpIHsKQEAgLTg4Myw2ICs5MTEsMTMgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6d3JpdGUoY29uc3QgY2hhciogc3RyLAogICAgICAgICBBU1NFUlQoIXRv
a2VuaXplci0+d2FudHNSYXdEYXRhKCkpOwogICAgICAgICB0b2tlbml6ZXItPndyaXRlKGRlY29k
ZWQsIHRydWUpOwogICAgIH0KKwkKKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisgIGlmIChtX2ZyYW1l
LT5kb2N1bWVudCgpLT5mYXN0RGlzcGxheU1vZGUoKSAmJiBtX2ZyYW1lLT52aWV3KCkpIHsKKyAg
ICAgIG1fZnJhbWUtPnZpZXcoKS0+bGF5b3V0KCk7CisgICAgICBtX2ZyYW1lLT52aWV3KCktPnVu
c2NoZWR1bGVSZWxheW91dCgpOworICB9CisjZW5kaWYKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6
d3JpdGUoY29uc3QgU3RyaW5nJiBzdHIpCkBAIC05MTksNiArOTU0LDEwIEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmVuZElmTm90TG9hZGluZygpCiAgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkpIHsK
ICAgICAgICAgd3JpdGUoMCwgMCwgdHJ1ZSk7CiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCkt
PmZpbmlzaFBhcnNpbmcoKTsKKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisgICAgICAgIG1fZmluaXNo
UGFyc2luZ0NhbGxlZCA9IHRydWU7CisgICAgICAgIHN3aXRjaFRvRmluYWxEb2NJZlJlYWR5KCk7
CisjZW5kaWYgICAgCiAgICAgfSBlbHNlCiAgICAgICAgIC8vIFdlYktpdCBwYXJ0aWFsbHkgdXNl
cyBXZWJDb3JlIHdoZW4gbG9hZGluZyBub24tSFRNTCBkb2NzLiAgSW4gdGhlc2UgY2FzZXMgZG9j
PT1uaWwsIGJ1dAogICAgICAgICAvLyBXZWJDb3JlIGlzIGVub3VnaCBpbnZvbHZlZCB0aGF0IHdl
IG5lZWQgdG8gY2hlY2tDb21wbGV0ZWQoKSBpbiBvcmRlciBmb3IgbV9iQ29tcGxldGUgdG8KQEAg
LTQyMjAsNSArNDI1OSwxMTAgQEAgU3RyaW5nIEZyYW1lTG9hZGVyOjpyZWZlcnJlcigpIGNvbnN0
CiAgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyKCktPnJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKTsK
IH0KIAorI2lmIFVTRShET1VCTEVfVFJFRSkKK3ZvaWQgRnJhbWVMb2FkZXI6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlKikKK3sKKyAgICBzd2l0Y2hUb0ZpbmFsRG9jSWZSZWFkeSgpOwor
fQorCit2b2lkIEZyYW1lTG9hZGVyOjpzZXRTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgLypVUkwq
LywgY29uc3QgU3RyaW5nJiAvKnNoZWV0Ki8pCit7CisgICAgc3dpdGNoVG9GaW5hbERvY0lmUmVh
ZHkoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlcjo6YWRkQ2FjaGVkUmVxdWVzdChDYWNoZWRSZXNv
dXJjZSogY2FjaGUpCit7CisJY2FjaGUtPnJlZih0aGlzKTsKKwltX0NhY2hlUmVxdWVzdExpc3Qu
YXBwZW5kKGNhY2hlKTsJCit9CisJCit2b2lkIEZyYW1lTG9hZGVyOjogcmVtb3ZlQWxsQ2FjaGVk
UmVxdWVzdCgpCit7CisgICAgZm9yIChEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPENhY2hlZFJl
c291cmNlPiBpdChtX0NhY2hlUmVxdWVzdExpc3QpOyBpdC5jdXJyZW50KCk7ICsraXQpCisgICAg
ICAgIGl0LmN1cnJlbnQoKS0+ZGVyZWYodGhpcyk7CisgICAgbV9DYWNoZVJlcXVlc3RMaXN0LmNs
ZWFyKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldFVzZUZhc3REaXNwbGF5KGJvb2wgZmFz
dERpc3BsYXkpCit7CisgICAgbV91c2VGYXN0RGlzcGxheSA9IGZhc3REaXNwbGF5OworfQorCiti
b29sIEZyYW1lTG9hZGVyOjpzd2l0Y2hUb0ZpbmFsRG9jSWZSZWFkeSgpCit7CisgICAgaWYgKGQt
Pm1fZG9jLT5mYXN0RGlzcGxheU1vZGUoKSkgeworICAgICAgICBpZiAoZC0+bV9kb2MtPmJvZHko
KSAmJgorICAgICAgICAJKChDYWNoZTo6bG9hZGVyKCktPm51bVJlcXVlc3RzKGQtPm1fZG9jLT5k
b2NMb2FkZXIoKSwgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQpID09IDAgJiYKKyAgICAg
ICAgICAgIENhY2hlOjpsb2FkZXIoKS0+bnVtUmVxdWVzdHMoZC0+bV9kb2MtPmRvY0xvYWRlcigp
LCBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0KSA9PSAwKSB8fAorICAgICAgICAJZC0+bV9wZW5kaW5n
U3JjLnNpemUoKSA+IDEzMTA3MikpIHsgICAgICAgIAkJCisgICAgICAgICAgICBSZWZQdHI8RG9j
dW1lbnQ+IG9sZERvYyA9IGQtPm1fZG9jOworICAgICAgICAgICAgZC0+bV92aWV3LT5jbGVhcigp
OworICAgICAgICAgICAgb2xkRG9jLT5yZW1vdmVBbGxFdmVudExpc3RlbmVyc0Zyb21BbGxOb2Rl
cygpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKERPTUltcGxlbWVudGF0aW9u
Ojppc1hNTE1JTUVUeXBlKGQtPm1fcmVxdWVzdC5tX3Jlc3BvbnNlTUlNRVR5cGUpKQorICAgICAg
ICAgICAgICAgIGQtPm1fZG9jID0gRE9NSW1wbGVtZW50YXRpb246Omluc3RhbmNlKCktPmNyZWF0
ZURvY3VtZW50KGQtPm1fdmlldy5nZXQoKSk7CisgICAgICAgICAgICBlbHNlIGlmIChET01JbXBs
ZW1lbnRhdGlvbjo6aXNUZXh0TUlNRVR5cGUoZC0+bV9yZXF1ZXN0Lm1fcmVzcG9uc2VNSU1FVHlw
ZSkpCisgICAgICAgICAgICAgICAgZC0+bV9kb2MgPSBuZXcgVGV4dERvY3VtZW50KERPTUltcGxl
bWVudGF0aW9uOjppbnN0YW5jZSgpLCBkLT5tX3ZpZXcuZ2V0KCkpOworICAgICAgICAgICAgZWxz
ZSBpZiAoSW1hZ2U6OnN1cHBvcnRzVHlwZShkLT5tX3JlcXVlc3QubV9yZXNwb25zZU1JTUVUeXBl
KSkKKyAgICAgICAgICAgICAgICBkLT5tX2RvYyA9IG5ldyBJbWFnZURvY3VtZW50KERPTUltcGxl
bWVudGF0aW9uOjppbnN0YW5jZSgpLCBkLT5tX3ZpZXcuZ2V0KCkpOworICAgICAgICAgICAgZWxz
ZSAKKyAgICAgICAgICAgICAgICBkLT5tX2RvYyA9IERPTUltcGxlbWVudGF0aW9uOjppbnN0YW5j
ZSgpLT5jcmVhdGVIVE1MRG9jdW1lbnQoZC0+bV92aWV3LmdldCgpKTsKKyAgICAgICAgICAgIGQt
Pm1fZG9jLT5zZXRGYXN0RGlzcGxheU1vZGUoZmFsc2UpOyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGQtPm1fZG9jLT5hdHRhY2goKTsKKyAgICAgICAgICAgIGQtPm1fZG9jLT5zZXRVUkwo
ZC0+bV91cmwudXJsKCkpOworICAgICAgICAgICAgZC0+bV9kb2MtPnNldEJhc2VVUkwoZC0+bV91
cmwudXJsKCkpOworICAgICAgICAgICAgaWYgKGQtPm1fZGVjb2RlcikKKyAgICAgICAgICAgICAg
ICBkLT5tX2RvYy0+c2V0RGVjb2RlcihkLT5tX2RlY29kZXIuZ2V0KCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBtb3ZlIHRoZSBkb2NMb2FkZXIgb3duZXJzaGlw
CisgICAgICAgICAgICBkZWxldGUgZC0+bV9kb2MtPmRvY0xvYWRlcigpOworICAgICAgICAgICAg
ZC0+bV9kb2MtPnNldERvY0xvYWRlcihvbGREb2MtPmRvY0xvYWRlcigpKTsKKyAgICAgICAgICAg
IGQtPm1fZG9jLT5kb2NMb2FkZXIoKS0+c2V0RG9jKGQtPm1fZG9jLmdldCgpKTsKKyAgICAgICAg
ICAgIG9sZERvYy0+c2V0RG9jTG9hZGVyKG5ldyBEb2NMb2FkZXIodGhpcywgb2xkRG9jLmdldCgp
KSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgb2xkIGRvYworICAg
ICAgICAgICAgd2hpbGUgKEZyYW1lKiBjaGlsZCA9IHRyZWUoKS0+bGFzdENoaWxkKCkpIHsKKyAg
ICAgICAgICAgICAgICBjaGlsZC0+ZGlzY29ubmVjdE93bmVyRWxlbWVudCgpOworICAgICAgICAg
ICAgICAgIGNoaWxkLT5mcmFtZURldGFjaGVkKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIG9sZERvYy0+Y2FuY2VsUGFyc2luZygpOworICAgICAgICAgICAgb2xkRG9jLT5kZXRhY2go
KTsKKyAgICAgICAgICAgIGlmIChkLT5tX2pzY3JpcHQpCisgICAgICAgICAgICAgICAgZC0+bV9q
c2NyaXB0LT5jbGVhcigpOworICAgICAgICAgICAgb2xkRG9jID0gMDsgICAgICAgICAgICAKKwkJ
CQorCQkJcmVtb3ZlQWxsQ2FjaGVkUmVxdWVzdCgpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICByZXN0b3JlRG9jdW1lbnRTdGF0ZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBkLT5t
X2RvYy0+aW1wbGljaXRPcGVuKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChkLT5t
X2RvYy0+dG9rZW5pemVyKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZC0+bV9kb2MtPnRva2Vu
aXplcigpLT53YW50c1Jhd0RhdGEoKSkKKyAgICAgICAgICAgICAgICAgICAgZC0+bV9kb2MtPnRv
a2VuaXplcigpLT53cml0ZVJhd0RhdGEoZC0+bV9wZW5kaW5nU3JjLmRhdGEoKSwgZC0+bV9wZW5k
aW5nU3JjLnNpemUoKSk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIFN0cmluZyBkZWNvZGVkID0gZC0+bV9kZWNvZGVyLT5kZWNvZGUoZC0+bV9wZW5kaW5nU3Jj
LmRhdGEoKSwgZC0+bV9wZW5kaW5nU3JjLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGQt
Pm1fZG9jLT5kZXRlcm1pbmVQYXJzZU1vZGUoZGVjb2RlZCk7CisgICAgICAgICAgICAgICAgICAg
IGQtPm1fZG9jLT50b2tlbml6ZXIoKS0+d3JpdGUoZGVjb2RlZCwgdHJ1ZSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChkLT5tX2ZpbmlzaFBhcnNpbmdDYWxsZWQpIHsK
KyAgICAgICAgICAgICAgICAgICAgZC0+bV9kb2MtPmZpbmlzaFBhcnNpbmcoKTsKKyAgICAgICAg
ICAgICAgICAgICAgZC0+bV9maW5pc2hQYXJzaW5nQ2FsbGVkID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkLT5tX3BlbmRpbmdTcmMuY2xl
YXIoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gZm9yY2UgbGF5b3V0CisgICAgICAg
ICAgICBkLT5tX3ZpZXctPmxheW91dCgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMTg4NTgpCisrKyBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSwxMSBAQAogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXF1ZXN0LmgiCisjaWYgVVNFKERPVUJMRV9UUkVFKQorI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiRGVwcmVjYXRlZFB0ckxpc3QuaCIKKyNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRlckNsaWVudC5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBLSlMgewogICAgIGNs
YXNzIEpTVmFsdWU7CkBAIC0xMjMsNyArMTI4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24gbV9jb250ZW50RnVuY3Rpb247CiAg
ICAgICAgIHZvaWQqIG1fYXJndW1lbnQ7CiAgICAgfTsKLQorCQorI2lmIFVTRShET1VCTEVfVFJF
RSkKKyAgICBjbGFzcyBGcmFtZUxvYWRlciA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCwg
Tm9uY29weWFibGUsIFJlc291cmNlTG9hZGVyQ2xpZW50IHsKKyNlbHNlCisgICAgY2xhc3MgRnJh
bWVMb2FkZXIgOiBOb25jb3B5YWJsZSB7CisjZW5kaWYKICAgICBjbGFzcyBGcmFtZUxvYWRlciA6
IE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEZyYW1lTG9hZGVyKEZyYW1lKiwg
RnJhbWVMb2FkZXJDbGllbnQqKTsKQEAgLTM5NSw2ICs0MDUsMTggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIEtVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiBVUkwpOwogCisj
aWYgVVNFKERPVUJMRV9UUkVFKQorICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlU2hlZXQoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisKKwkgICAgdm9pZCBhZGRDYWNoZWRSZXF1ZXN0
KENhY2hlZFJlc291cmNlKik7CisJICAgIHZvaWQgcmVtb3ZlQWxsQ2FjaGVkUmVxdWVzdCgpOwor
CQorICAgICAgICB2b2lkIHNldFVzZUZhc3REaXNwbGF5KGJvb2wpOworICAgIAorICAgICAgICB2
aXJ0dWFsIGJvb2wgc3dpdGNoVG9GaW5hbERvY0lmUmVhZHkoKTsKKyNlbmRpZgorCiAgICAgICAg
IFdpZGdldCogY3JlYXRlUGx1Z2luKEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtTmFtZXMsCiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCkBAIC02MjYsNiArNjQ4LDE5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBtX2N1
cnJlbnRIaXN0b3J5SXRlbTsKICAgICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBtX3ByZXZpb3Vz
SGlzdG9yeUl0ZW07CiAgICAgICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gbV9wcm92aXNpb25hbEhp
c3RvcnlJdGVtOworCQkKKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisgICAgICAgIC8vIGZsYWcgdG8g
aW5kaWNhdGUgd2hldGhlciB0byB1c2VkIGZhc3REaXNsYXkgbW9kZQorICAgICAgICBib29sIG1f
dXNlRmFzdERpc3BsYXk7CisgICAgICAgIC8vIHN3aXRjaFRvRmluYWxEb2NJZlJlYWR5KCkgdXNl
cyB0aGlzIGZsYWcgdG8gZGVjaWRlIHdoZXRoZXIgdG8gY2FsbCBmaW5pc2hQYXJzaW5nKCkKKyAg
ICAgICAgYm9vbCBtX2ZpbmlzaFBhcnNpbmdDYWxsZWQ7ICAgICAgICAKKworICAgICAgICAvLyAo
cGhhbm5hKSBXYXMgYSBTdHJpbmcgYnV0IHNpbmNlIEltYWdlRG9jdW1lbnQgd2FudHMgcmF3IGRh
dGEsIHN0b3JlIHRoZSBwZW5kaW5nIHNyYyBhcyBhIHZlY3RvciBvZgorICAgICAgICAvLyBjaGFy
YWN0ZXJzLgorICAgICAgICBWZWN0b3I8Y2hhcj4gbV9wZW5kaW5nU3JjOworICAgICAgICAKKyAg
ICAgICAgRGVwcmVjYXRlZFB0ckxpc3Q8Q2FjaGVkUmVzb3VyY2U+IG1fQ2FjaGVSZXF1ZXN0TGlz
dDsgICAgICAgIAorI2VuZGlmIAogCiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9sb2FkZXIvbG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCShyZXZpc2lv
biAxODg1OCkKKysrIFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwNyw2ICsyMDcsMzMgQEAgaW50IExvYWRlcjo6bnVtUmVxdWVzdHMoRG9jTG9hZGVyKiBkbCkg
YwogICAgIHJldHVybiByZXM7CiB9CiAKKyNpZiBVU0UoRE9VQkxFX1RSRUUpCitpbnQgTG9hZGVy
OjpudW1SZXF1ZXN0cyggRG9jTG9hZGVyKiBkbCwgaW50IGluVHlwZSApIGNvbnN0Cit7CisgICAg
Q2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSA9IChDYWNoZWRSZXNvdXJjZTo6VHlwZSlpblR5cGU7
CisgICAgCisgICAgaW50IHJlcyA9IDA7CisKKyAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9y
PFJlcXVlc3Q+IHBJdCggbV9yZXF1ZXN0c1BlbmRpbmcgKTsKKyAgICBmb3IgKDsgcEl0LmN1cnJl
bnQoKTsgKytwSXQgKQorICAgICAgICBpZiAoIHBJdC5jdXJyZW50KCktPmRvY0xvYWRlcigpID09
IGRsICYmIHBJdC5jdXJyZW50KCktPmNhY2hlZE9iamVjdCgpLT50eXBlKCkgPT0gdHlwZSApCisg
ICAgICAgICAgICByZXMrKzsKKworICAgIFJlcXVlc3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IG1fcmVxdWVzdHNMb2FkaW5nLmVuZCgpOworICAgIGZvciAoUmVxdWVzdE1hcDo6Y29uc3RfaXRl
cmF0b3IgaSA9IG1fcmVxdWVzdHNMb2FkaW5nLmJlZ2luKCk7ICEoaSA9PSBlbmQpOyArK2kpIHsK
KyAgICAgICAgUmVxdWVzdCogciA9IGktPnNlY29uZDsKKyAgICAgICAgcmVzICs9IChyLT5kb2NM
b2FkZXIoKSA9PSBkbCAmJiAhci0+aXNNdWx0aXBhcnQoKSAmJiByLT5jYWNoZWRPYmplY3QoKS0+
dHlwZSgpID09IHR5cGUgKTsKKyAgICB9CisKKyAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9y
PFJlcXVlc3Q+IGJkSXQoIG1fcmVxdWVzdHNCYWNrZ3JvdW5kRGVjb2RpbmcgKTsKKyAgICBmb3Ig
KDsgYmRJdC5jdXJyZW50KCk7ICsrYmRJdCApCisgICAgICAgIGlmICggYmRJdC5jdXJyZW50KCkt
PmRvY0xvYWRlcigpID09IGRsICYmIGJkSXQuY3VycmVudCgpLT5jYWNoZWRPYmplY3QoKS0+dHlw
ZSgpID09IHR5cGUgKQorICAgICAgICAgICAgcmVzKys7CisKKyAgICByZXR1cm4gcmVzOworfQor
I2VuZGlmCisKIHZvaWQgTG9hZGVyOjpjYW5jZWxSZXF1ZXN0cyhEb2NMb2FkZXIqIGRsKQogewog
ICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8UmVxdWVzdD4gcEl0KG1fcmVxdWVzdHNQZW5k
aW5nKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL2xvYWRlci5oCShyZXZpc2lvbiAxODg1OCkKKysrIFdlYkNvcmUvbG9hZGVyL2xv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdm9pZCBsb2FkKERvY0xvYWRlciosIENhY2hlZFJlc291cmNlKiwgYm9vbCBp
bmNyZW1lbnRhbCA9IHRydWUpOwogCiAgICAgICAgIGludCBudW1SZXF1ZXN0cyhEb2NMb2FkZXIq
KSBjb25zdDsKKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisgICAgICAgIGludCBudW1SZXF1ZXN0cyhE
b2NMb2FkZXIqLCBpbnQgdHlwZSkgY29uc3Q7CisjZW5kaWYgCiAgICAgICAgIHZvaWQgY2FuY2Vs
UmVxdWVzdHMoRG9jTG9hZGVyKik7CiAKICAgICAgICAgdm9pZCByZW1vdmVCYWNrZ3JvdW5kRGVj
b2RpbmdSZXF1ZXN0KFJlcXVlc3QqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12562</attachid>
            <date>2007-01-19 06:45:17 -0800</date>
            <delta_ts>2007-01-19 06:45:17 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>dt2.txt</filename>
            <type>text/plain</type>
            <size>15457</size>
            <attacher name="David Carson">dacarson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jb25maWcuaAko
cmV2aXNpb24gMTg5NzkpCisrKyBXZWJDb3JlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC04
Nyw2ICs4Nyw3IEBAIHR5cGVkZWYgZmxvYXQgQ0dGbG9hdDsKICNpZiBQTEFURk9STShNQUMpCiAj
ZGVmaW5lIFdURl9VU0VfSkFWQVNDUklQVENPUkVfQklORElOR1MgMQogI2RlZmluZSBXVEZfVVNF
X05QT0JKRUNUIDEKKyNkZWZpbmUgV1RGX1VTRV9ET1VCTEVfVFJFRSAxCiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKFNZTUJJQU4pCkBAIC0xMDMsNiArMTA0LDggQEAgdHlwZWRlZiBmbG9hdCBDR0Zs
b2F0OwogI2RlZmluZSBVX0hBVkVfSU5UNjRfVCAwCiAjZGVmaW5lIFVfSEFWRV9JTlRUWVBFU19I
IDAKIAorI2RlZmluZSBXVEZfVVNFX0RPVUJMRV9UUkVFIDEKKwogI2luY2x1ZGUgPHN0ZGlvLmg+
CiAjaW5jbHVkZSA8c25wcmludGYuaD4KICNpbmNsdWRlIDxsaW1pdHMuaD4KSW5kZXg6IFdlYkNv
cmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nz
c3N0eWxlc2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxODk3OSkKKysrIFdlYkNvcmUvY3NzL2Nzc3N0
eWxlc2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODIsNyArNzgyLDExIEBAIFJlbmRl
clN0eWxlKiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckUKIHsKICAgICAvLyBPbmNlIGFuIGVs
ZW1lbnQgaGFzIGEgcmVuZGVyZXIsIHdlIGRvbid0IHRyeSB0byBkZXN0cm95IGl0LCBzaW5jZSBv
dGhlcndpc2UgdGhlIHJlbmRlcmVyCiAgICAgLy8gd2lsbCB2YW5pc2ggaWYgYSBzdHlsZSByZWNh
bGMgaGFwcGVucyBkdXJpbmcgbG9hZGluZy4KKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisgICAgaWYg
KGFsbG93U2hhcmluZyAmJiAhZS0+ZG9jdW1lbnQoKS0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkg
JiYgIWUtPnJlbmRlcmVyKCkgJiYgIWUtPmRvY3VtZW50KCktPmZhc3REaXNwbGF5TW9kZSgpKSB7
CisjZWxzZQogICAgIGlmIChhbGxvd1NoYXJpbmcgJiYgIWUtPmRvY3VtZW50KCktPmhhdmVTdHls
ZXNoZWV0c0xvYWRlZCgpICYmICFlLT5yZW5kZXJlcigpKSB7CisjZW5kaWYKICAgICAgICAgaWYg
KCFzdHlsZU5vdFlldEF2YWlsYWJsZSkgewogICAgICAgICAgICAgc3R5bGVOb3RZZXRBdmFpbGFi
bGUgPSA6Om5ldyBSZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgc3R5bGVOb3RZZXRBdmFpbGFi
bGUtPnNldERpc3BsYXkoTk9ORSk7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxODk3OSkKKysr
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk2LDYgKzI5Niw5
IEBAIERvY3VtZW50OjpEb2N1bWVudChET01JbXBsZW1lbnRhdGlvbiogaW0KICAgICAsIG1fYWNj
ZXNzS2V5TWFwVmFsaWQoZmFsc2UpCiAgICAgLCBtX2NyZWF0ZVJlbmRlcmVycyh0cnVlKQogICAg
ICwgbV9pblBhZ2VDYWNoZShmYWxzZSkKKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisgICAgLCBtX2Zh
c3REaXNwbGF5TW9kZShmYWxzZSkKKyNlbmRpZgogewogICAgIG1fZG9jdW1lbnQucmVzZXRTa2lw
cGluZ1JlZih0aGlzKTsKIApAQCAtMTM4NCw3ICsxMzg3LDExIEBAIGJvb2wgRG9jdW1lbnQ6OnNo
b3VsZFNjaGVkdWxlTGF5b3V0KCkKICAgICAvLyAoYSkgd2UgYWN0dWFsbHkgbmVlZCBhIGxheW91
dAogICAgIC8vIChiKSBvdXIgc3R5bGVzaGVldHMgYXJlIGFsbCBsb2FkZWQKICAgICAvLyAoYykg
d2UgaGF2ZSBhIDxib2R5PgorI2lmIFVTRShET1VCTEVfVFJFRSkKKyAgICByZXR1cm4gKHJlbmRl
cmVyKCkgJiYgcmVuZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSAmJiAoaGF2ZVN0eWxlc2hlZXRzTG9h
ZGVkKCkgfHwgbV9mYXN0RGlzcGxheU1vZGUpICYmCisjZWxzZQogICAgIHJldHVybiAocmVuZGVy
ZXIoKSAmJiByZW5kZXJlcigpLT5uZWVkc0xheW91dCgpICYmIGhhdmVTdHlsZXNoZWV0c0xvYWRl
ZCgpICYmCisjZW5kaWYKICAgICAgICAgICAgIGRvY3VtZW50RWxlbWVudCgpICYmIGRvY3VtZW50
RWxlbWVudCgpLT5yZW5kZXJlcigpICYmCiAgICAgICAgICAgICAoIWRvY3VtZW50RWxlbWVudCgp
LT5oYXNUYWdOYW1lKGh0bWxUYWcpIHx8IGJvZHkoKSkpOwogfQpJbmRleDogV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lv
biAxODk3OSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
Myw2ICszMDMsMTEgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKCk7CiAgICAgc3RhdGljIHZvaWQgdXBkYXRlRG9jdW1lbnRzUmVuZGVyaW5n
KCk7CiAgICAgRG9jTG9hZGVyKiBkb2NMb2FkZXIoKSB7IHJldHVybiBtX2RvY0xvYWRlcjsgfQor
I2lmIFVTRShET1VCTEVfVFJFRSkKKyAgICB2b2lkIHNldERvY0xvYWRlcihEb2NMb2FkZXIqIGxv
YWRlcikgeyBtX2RvY0xvYWRlciA9IGxvYWRlcjsgfQorICAgIGJvb2wgZmFzdERpc3BsYXlNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9mYXN0RGlzcGxheU1vZGU7IH0KKyAgICB2b2lkIHNldEZhc3RE
aXNwbGF5TW9kZShib29sIG1vZGUpIHsgbV9mYXN0RGlzcGxheU1vZGUgPSBtb2RlOyB9CisjZW5k
aWYgCiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFj
aCgpOwpAQCAtODI0LDYgKzgyOSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jcmVhdGVSZW5k
ZXJlcnM7CiAgICAgYm9vbCBtX2luUGFnZUNhY2hlOwogICAgIFN0cmluZyBtX2ljb25VUkw7CisJ
CisjaWYgVVNFKERPVUJMRV9UUkVFKQorICAgIGJvb2wgbV9mYXN0RGlzcGxheU1vZGU7CisjZW5k
aWYgCiB9OwogCiB9IC8vbmFtZXNwYWNlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXpl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCShyZXZp
c2lvbiAxODk3OSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAwLDYgKzQwMCw5IEBAIEhUTUxUb2tlbml6ZXI6OlN0YXRlIEhUTUxUb2tlbml6
ZXI6OnNjcmkKICAgICAgICAgICAgIGtkRGVidWcoIDYwMzYgKSA8PCAiLS0tRU5EIFNDUklQVC0t
LSIgPDwgZW5kbDsKICNlbmRpZgogICAgICAgICAgICAgLy8gUGFyc2Ugc2NyaXB0Q29kZSBjb250
YWluaW5nIDxzY3JpcHQ+IGluZm8KKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisgICAgICAgICAgICBp
ZiAoIW1fZG9jLT5mYXN0RGlzcGxheU1vZGUoKSkKKyNlbmRpZiAKICAgICAgICAgICAgIGRvU2Ny
aXB0RXhlYyA9IHN0YXRpY19jYXN0PEhUTUxTY3JpcHRFbGVtZW50Kj4oc2NyaXB0Tm9kZS5nZXQo
KSktPnNob3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKTsKICAgICAgICAgICAgIHNjcmlwdE5vZGUg
PSAwOwogICAgICAgICB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCShyZXZpc2lvbiAxODk3OSkKKysrIFdlYkNv
cmUvbG9hZGVyL0NhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsMTAgQEAKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGUuaCIKKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAK
QEAgLTEwMSw2ICsxMDUsMTQgQEAgQ2FjaGVkUmVzb3VyY2UqIENhY2hlOjpyZXF1ZXN0UmVzb3Vy
Y2UoRAogCiAgICAgaWYgKHJlc291cmNlLT50eXBlKCkgIT0gdHlwZSkKICAgICAgICAgcmV0dXJu
IDA7CisJCQorI2lmIFVTRShET1VCTEVfVFJFRSkKKyAgICAvLyBGSVhNRSBTaG91bGQgb25seSBk
byBmb3IgQ1NTICYgSlMKKyAgICBpZiAoZG9jTG9hZGVyLT5kb2MoKS0+ZmFzdERpc3BsYXlNb2Rl
KCkpIHsKKyAgICAgICAgZG9jTG9hZGVyLT5kb2MoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPmFkZENh
Y2hlZFJlcXVlc3QocmVzb3VyY2UpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYK
IAogICAgIHJldHVybiByZXNvdXJjZTsKIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5oCShyZXZpc2lvbiAx
ODk3OSkKKysrIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NSw2ICs4NSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldExvYWRJblByb2dyZXNzKGJvb2wp
OwogICAgIGJvb2wgbG9hZEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX2xvYWRJblByb2dy
ZXNzOyB9CisJCisjaWYgVVNFKERPVUJMRV9UUkVFKQorICAgIHZvaWQgc2V0RG9jKFdlYkNvcmU6
OkRvY3VtZW50KiBkb2MpIHsgbV9kb2MgPSBkb2M7IH0KKyNlbmRpZgogCiBwcml2YXRlOgogICAg
IENhY2hlZFJlc291cmNlKiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcqIGNoYXJzZXQgPSAwKTsKSW5kZXg6IFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDE4OTc5KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNiArMjMzLDEwIEBAIEZyYW1lTG9hZGVy
OjpGcmFtZUxvYWRlcihGcmFtZSogZnJhbWUsIEYKICAgICAsIG1fcmVkaXJlY3Rpb25UaW1lcih0
aGlzLCAmRnJhbWVMb2FkZXI6OnJlZGlyZWN0aW9uVGltZXJGaXJlZCkKICAgICAsIG1fb3BlbmVy
KDApCiAgICAgLCBtX29wZW5lZEJ5SmF2YVNjcmlwdChmYWxzZSkKKyNpZiBVU0UoRE9VQkxFX1RS
RUUpCisgICAgLCBtX3VzZUZhc3REaXNwbGF5KHRydWUpCisgICAgLCBtX2ZpbmlzaFBhcnNpbmdD
YWxsZWQoZmFsc2UpCisjZW5kaWYgICAKIHsKIH0KIApAQCAtNTU0LDYgKzU1OCwxMyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyhib29sIHNlbmRVCiAgICAgICAgIGNoaWxkLT5sb2Fk
ZXIoKS0+c3RvcExvYWRpbmcoc2VuZFVubG9hZCk7CiAKICAgICBjYW5jZWxSZWRpcmVjdGlvbigp
OworCQorI2lmIFVTRShET1VCTEVfVFJFRSkKKyAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSAm
JiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5mYXN0RGlzcGxheU1vZGUoKSkgeworICAgICAgICByZW1v
dmVBbGxDYWNoZWRSZXF1ZXN0KCk7CisJCW1fZnJhbWUtPmRvY3VtZW50KCktPnNldEZhc3REaXNw
bGF5TW9kZShmYWxzZSk7CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnN0
b3AoKQpAQCAtNzU5LDYgKzc3MCwxMyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0
RGF0YSgpCiAKICAgICBkb3VibGUgZGVsYXk7CiAgICAgU3RyaW5nIFVSTDsKKwkKKyNpZiBVU0Uo
RE9VQkxFX1RSRUUpCisgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50
KCkgJiYgbV91c2VGYXN0RGlzcGxheSkgeworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5z
ZXRGYXN0RGlzcGxheU1vZGUodHJ1ZSk7CisgICAgICAgIG1fcGVuZGluZ1NyYy5jbGVhcigpOwor
ICAgIH0KKyNlbmRpZgogCiAgICAgaWYgKCFwYXJzZUhUVFBSZWZyZXNoKHJlZnJlc2gsIGRlbGF5
LCBVUkwpKQogICAgICAgICByZXR1cm47CkBAIC04NDcsNiArODY1LDE2IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OndyaXRlKGNvbnN0IGNoYXIqIHN0ciwKICAgICAKICAgICBpZiAobGVuID09IC0xKQog
ICAgICAgICBsZW4gPSBzdHJsZW4oc3RyKTsKKwkJCisjaWYgVVNFKERPVUJMRV9UUkVFKQorLy8g
VGhlIGFzc3VtcHRpb24gaW4gdGhlIGNvZGUgYmVsb3cgaXMgdGhhdCB0aGVyZSBpcyBhIGRvY3Vt
ZW50CisvLyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIGNoZWNrIG1fZnJhbWUtPmRvY3VtZW50KCkg
ZXhpc3RzLgorICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5mYXN0RGlzcGxheU1vZGUoKSkg
eworICAgICAgICBWZWN0b3I8Y2hhcj4gdG1wKGxlbik7CisgICAgICAgIG1lbWNweSh0bXAuZGF0
YSgpLCBzdHIsIGxlbiAqIHNpemVvZihjaGFyKSk7CisgICAgICAgIG1fcGVuZGluZ1NyYy5hcHBl
bmQodG1wKTsKKyAgICB9CisjZW5kaWYKIAogICAgIFRva2VuaXplciogdG9rZW5pemVyID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dG9rZW5pemVyKCk7CiAgICAgaWYgKHRva2VuaXplciAmJiB0b2tl
bml6ZXItPndhbnRzUmF3RGF0YSgpKSB7CkBAIC04ODEsNiArOTA5LDEzIEBAIHZvaWQgRnJhbWVM
b2FkZXI6OndyaXRlKGNvbnN0IGNoYXIqIHN0ciwKICAgICAgICAgQVNTRVJUKCF0b2tlbml6ZXIt
PndhbnRzUmF3RGF0YSgpKTsKICAgICAgICAgdG9rZW5pemVyLT53cml0ZShkZWNvZGVkLCB0cnVl
KTsKICAgICB9CisJCisjaWYgVVNFKERPVUJMRV9UUkVFKQorICBpZiAobV9mcmFtZS0+ZG9jdW1l
bnQoKS0+ZmFzdERpc3BsYXlNb2RlKCkgJiYgbV9mcmFtZS0+dmlldygpKSB7CisgICAgICBtX2Zy
YW1lLT52aWV3KCktPmxheW91dCgpOworICAgICAgbV9mcmFtZS0+dmlldygpLT51bnNjaGVkdWxl
UmVsYXlvdXQoKTsKKyAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OndyaXRlKGNv
bnN0IFN0cmluZyYgc3RyKQpAQCAtOTE3LDYgKzk1MiwxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpl
bmRJZk5vdExvYWRpbmcoKQogICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpKSB7CiAgICAgICAg
IHdyaXRlKDAsIDAsIHRydWUpOwogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5maW5pc2hQ
YXJzaW5nKCk7CisjaWYgVVNFKERPVUJMRV9UUkVFKQorICAgICAgICBtX2ZpbmlzaFBhcnNpbmdD
YWxsZWQgPSB0cnVlOworICAgICAgICBzd2l0Y2hUb0ZpbmFsRG9jSWZSZWFkeSgpOworI2VuZGlm
ICAgIAogICAgIH0gZWxzZQogICAgICAgICAvLyBXZWJLaXQgcGFydGlhbGx5IHVzZXMgV2ViQ29y
ZSB3aGVuIGxvYWRpbmcgbm9uLUhUTUwgZG9jcy4gIEluIHRoZXNlIGNhc2VzIGRvYz09bmlsLCBi
dXQKICAgICAgICAgLy8gV2ViQ29yZSBpcyBlbm91Z2ggaW52b2x2ZWQgdGhhdCB3ZSBuZWVkIHRv
IGNoZWNrQ29tcGxldGVkKCkgaW4gb3JkZXIgZm9yIG1fYkNvbXBsZXRlIHRvCkBAIC00MjIxLDUg
KzQyNjAsMTA3IEBAIFN0cmluZyBGcmFtZUxvYWRlcjo6cmVmZXJyZXIoKSBjb25zdAogICAgIHJl
dHVybiBkb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCk7CiB9CiAKKyNp
ZiBVU0UoRE9VQkxFX1RSRUUpCit2b2lkIEZyYW1lTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSopCit7CisgICAgc3dpdGNoVG9GaW5hbERvY0lmUmVhZHkoKTsKK30KKwordm9p
ZCBGcmFtZUxvYWRlcjo6c2V0U3R5bGVTaGVldChjb25zdCBTdHJpbmcmIC8qVVJMKi8sIGNvbnN0
IFN0cmluZyYgLypzaGVldCovKQoreworICAgIHN3aXRjaFRvRmluYWxEb2NJZlJlYWR5KCk7Cit9
CisKK3ZvaWQgRnJhbWVMb2FkZXI6OmFkZENhY2hlZFJlcXVlc3QoQ2FjaGVkUmVzb3VyY2UqIGNh
Y2hlKQoreworICAgIGNhY2hlLT5yZWYodGhpcyk7CisgICAgbV9DYWNoZVJlcXVlc3RMaXN0LmFw
cGVuZChjYWNoZSk7CQorfQorCQordm9pZCBGcmFtZUxvYWRlcjo6IHJlbW92ZUFsbENhY2hlZFJl
cXVlc3QoKQoreworICAgIGZvciAoRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxDYWNoZWRSZXNv
dXJjZT4gaXQobV9DYWNoZVJlcXVlc3RMaXN0KTsgaXQuY3VycmVudCgpOyArK2l0KQorICAgICAg
ICBpdC5jdXJyZW50KCktPmRlcmVmKHRoaXMpOworICAgIG1fQ2FjaGVSZXF1ZXN0TGlzdC5jbGVh
cigpOworfQorCit2b2lkIEZyYW1lTG9hZGVyOjpzZXRVc2VGYXN0RGlzcGxheShib29sIGZhc3RE
aXNwbGF5KQoreworICAgIG1fdXNlRmFzdERpc3BsYXkgPSBmYXN0RGlzcGxheTsKK30KKworYm9v
bCBGcmFtZUxvYWRlcjo6c3dpdGNoVG9GaW5hbERvY0lmUmVhZHkoKQoreworICAgIGlmIChtX2Zy
YW1lLT5kb2N1bWVudCgpLT5mYXN0RGlzcGxheU1vZGUoKSkgeworICAgICAgICBpZiAobV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+Ym9keSgpICYmCisgICAgICAgIAkoKGNhY2hlKCktPmxvYWRlcigpLT5u
dW1SZXF1ZXN0cyhtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb2NMb2FkZXIoKSwgQ2FjaGVkUmVzb3Vy
Y2U6OkNTU1N0eWxlU2hlZXQpID09IDAgJiYKKyAgICAgICAgICAgIGNhY2hlKCktPmxvYWRlcigp
LT5udW1SZXF1ZXN0cyhtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb2NMb2FkZXIoKSwgQ2FjaGVkUmVz
b3VyY2U6OlNjcmlwdCkgPT0gMCkgfHwKKyAgICAgICAgCW1fcGVuZGluZ1NyYy5zaXplKCkgPiAx
MzEwNzIpKSB7ICAgICAgICAJCQorICAgICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBvbGREb2Mg
PSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgICAgICAgICAgbV9mcmFtZS0+dmlldygpLT5jbGVh
cigpOworICAgICAgICAgICAgb2xkRG9jLT5yZW1vdmVBbGxFdmVudExpc3RlbmVyc0Zyb21BbGxO
b2RlcygpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBk
b2N1bWVudCA9IERPTUltcGxlbWVudGF0aW9uOjppbnN0YW5jZSgpLT4KKyAgICAgICAgICAgICAg
ICBjcmVhdGVEb2N1bWVudChtX3Jlc3BvbnNlTUlNRVR5cGUsIG1fZnJhbWUtPnZpZXcoKSwgbV9m
cmFtZS0+aW5WaWV3U291cmNlTW9kZSgpKTsKKyAgICAgICAgICAgIG1fZnJhbWUtPmQtPm1fZG9j
ID0gZG9jdW1lbnQ7CisKKyAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnNldEZhc3RE
aXNwbGF5TW9kZShmYWxzZSk7ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+YXR0YWNoKCk7CisgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5z
ZXRVUkwobV9VUkwudXJsKCkpOworICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0
QmFzZVVSTChtX1VSTC51cmwoKSk7CisgICAgICAgICAgICBpZiAob2xkRG9jLT5kZWNvZGVyKCkp
CisgICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0RGVjb2RlcihvbGREb2Mt
PmRlY29kZXIoKSk7CisKKyAgICAgICAgICAgIC8vIG1vdmUgdGhlIGRvY0xvYWRlciBvd25lcnNo
aXAKKyAgICAgICAgICAgIGRlbGV0ZSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb2NMb2FkZXIoKTsK
KyAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnNldERvY0xvYWRlcihvbGREb2MtPmRv
Y0xvYWRlcigpKTsKKyAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvY0xvYWRlcigp
LT5zZXREb2MobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgICAgICAgICBvbGREb2MtPnNldERv
Y0xvYWRlcihuZXcgRG9jTG9hZGVyKG1fZnJhbWUsIG9sZERvYy5nZXQoKSkpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICAvLyByZW1vdmUgdGhlIG9sZCBkb2MKKwkJCS8vIEZJWE1FOiBJZiB0
aGlzIGlzIHRvIGJlIHVzZWQgb24gbm9uLW1hYyBwbGF0Zm9ybSwgdGhlIGJyaWRnZSBzaG91bGQg
YmUgbm90aWZpZWQsIGxpa2UgdGhlIGNhbGwKKwkJCS8vIHRvIGNsb3NlQnJpZGdlKCkgaW4gZnJh
bWVEZXRhY2hlZCgpCisJCQkvL2ZyYW1lRGV0YWNoZWQoKTsKKworICAgICAgICAgICAgb2xkRG9j
LT5jYW5jZWxQYXJzaW5nKCk7CisgICAgICAgICAgICBvbGREb2MtPmRldGFjaCgpOworCQkJLyoK
KyAgICAgICAgICAgIGlmIChkLT5tX2pzY3JpcHQpCisgICAgICAgICAgICAgICAgZC0+bV9qc2Ny
aXB0LT5jbGVhcigpOworCQkJCSovCisgICAgICAgICAgICBvbGREb2MgPSAwOyAgICAgICAgICAg
IAorCisJCQlyZW1vdmVBbGxDYWNoZWRSZXF1ZXN0KCk7CisKKyAgICAgICAgICAgIHJlc3RvcmVE
b2N1bWVudFN0YXRlKCk7CisKKyAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmltcGxp
Y2l0T3BlbigpOworCisgICAgICAgICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dG9rZW5p
emVyKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dG9rZW5p
emVyKCktPndhbnRzUmF3RGF0YSgpKQorICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1
bWVudCgpLT50b2tlbml6ZXIoKS0+d3JpdGVSYXdEYXRhKG1fcGVuZGluZ1NyYy5kYXRhKCksIG1f
cGVuZGluZ1NyYy5zaXplKCkpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICBTdHJpbmcgZGVjb2RlZCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRlY29kZXIoKS0+
ZGVjb2RlKG1fcGVuZGluZ1NyYy5kYXRhKCksIG1fcGVuZGluZ1NyYy5zaXplKCkpOworICAgICAg
ICAgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kZXRlcm1pbmVQYXJzZU1vZGUoZGVj
b2RlZCk7CisgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnRva2VuaXpl
cigpLT53cml0ZShkZWNvZGVkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgaWYgKG1fZmluaXNoUGFyc2luZ0NhbGxlZCkgeworICAgICAgICAgICAgICAgICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5maW5pc2hQYXJzaW5nKCk7CisgICAgICAgICAgICAgICAgICAg
IG1fZmluaXNoUGFyc2luZ0NhbGxlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgbV9wZW5kaW5nU3JjLmNsZWFyKCk7CisKKyAgICAgICAg
ICAgIC8vIGZvcmNlIGxheW91dAorICAgICAgICAgICAgbV9mcmFtZS0+dmlldygpLT5sYXlvdXQo
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UKKwkgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYK
KwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlz
aW9uIDE4OTc5KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNiArNDEsMTEgQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2lmIFVTRShET1VC
TEVfVFJFRSkKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgorI2luY2x1ZGUgIkRl
cHJlY2F0ZWRQdHJMaXN0LmgiCisvLyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgor
I2VuZGlmCiAKIG5hbWVzcGFjZSBLSlMgewogICAgIGNsYXNzIEpTVmFsdWU7CkBAIC0xMjQsMTAg
KzEyOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQqIG1fYXJndW1lbnQ7
CiAgICAgfTsKIAorI2lmIFVTRShET1VCTEVfVFJFRSkKKyAgICBjbGFzcyBGcmFtZUxvYWRlciA6
IE5vbmNvcHlhYmxlLCBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CisjZWxzZQogICAgIGNsYXNzIEZy
YW1lTG9hZGVyIDogTm9uY29weWFibGUgeworI2VuZGlmCiAgICAgcHVibGljOgogICAgICAgICBG
cmFtZUxvYWRlcihGcmFtZSosIEZyYW1lTG9hZGVyQ2xpZW50Kik7Ci0gICAgICAgIH5GcmFtZUxv
YWRlcigpOworICAgICAgICB2aXJ0dWFsIH5GcmFtZUxvYWRlcigpOwogCiAgICAgICAgIEZyYW1l
KiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KIApAQCAtMzk1LDYgKzQwNCwxOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBT
dHJpbmcmIFVSTCk7CiAKKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisgICAgICAgIHZpcnR1YWwgdm9p
ZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQg
c2V0U3R5bGVTaGVldChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKworICAgICAgICB2
b2lkIGFkZENhY2hlZFJlcXVlc3QoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICAgICAgdm9pZCByZW1v
dmVBbGxDYWNoZWRSZXF1ZXN0KCk7CisKKyAgICAgICAgdm9pZCBzZXRVc2VGYXN0RGlzcGxheShi
b29sKTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgc3dpdGNoVG9GaW5hbERvY0lmUmVhZHkoKTsK
KyNlbmRpZgorCiAgICAgICAgIFdpZGdldCogY3JlYXRlUGx1Z2luKEVsZW1lbnQqLCBjb25zdCBL
VVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsCiAgICAgICAgICAgICBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwog
CkBAIC02MjYsNiArNjQ3LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRy
PEhpc3RvcnlJdGVtPiBtX2N1cnJlbnRIaXN0b3J5SXRlbTsKICAgICAgICAgUmVmUHRyPEhpc3Rv
cnlJdGVtPiBtX3ByZXZpb3VzSGlzdG9yeUl0ZW07CiAgICAgICAgIFJlZlB0cjxIaXN0b3J5SXRl
bT4gbV9wcm92aXNpb25hbEhpc3RvcnlJdGVtOworCQkKKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisg
ICAgICAgIC8vIGZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciB0byB1c2VkIGZhc3REaXNsYXkgbW9k
ZQorICAgICAgICBib29sIG1fdXNlRmFzdERpc3BsYXk7CisgICAgICAgIC8vIHN3aXRjaFRvRmlu
YWxEb2NJZlJlYWR5KCkgdXNlcyB0aGlzIGZsYWcgdG8gZGVjaWRlIHdoZXRoZXIgdG8gY2FsbCBm
aW5pc2hQYXJzaW5nKCkKKyAgICAgICAgYm9vbCBtX2ZpbmlzaFBhcnNpbmdDYWxsZWQ7ICAgICAg
ICAKKworICAgICAgICAvLyAocGhhbm5hKSBXYXMgYSBTdHJpbmcgYnV0IHNpbmNlIEltYWdlRG9j
dW1lbnQgd2FudHMgcmF3IGRhdGEsIHN0b3JlIHRoZSBwZW5kaW5nIHNyYyBhcyBhIHZlY3RvciBv
ZgorICAgICAgICAvLyBjaGFyYWN0ZXJzLgorICAgICAgICBWZWN0b3I8Y2hhcj4gbV9wZW5kaW5n
U3JjOworICAgICAgICAKKyAgICAgICAgRGVwcmVjYXRlZFB0ckxpc3Q8Q2FjaGVkUmVzb3VyY2U+
IG1fQ2FjaGVSZXF1ZXN0TGlzdDsgICAgICAgIAorI2VuZGlmIAogCiAgICAgfTsKIApJbmRleDog
V2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9s
b2FkZXIuY3BwCShyZXZpc2lvbiAxODk3OSkKKysrIFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIsMzIgQEAgaW50IExvYWRlcjo6bnVtUmVxdWVz
dHMoRG9jTG9hZGVyKiBkbCkgYwogICAgIHJldHVybiByZXM7CiB9CiAKKyNpZiBVU0UoRE9VQkxF
X1RSRUUpCitpbnQgTG9hZGVyOjpudW1SZXF1ZXN0cyggRG9jTG9hZGVyKiBkbCwgaW50IGluVHlw
ZSApIGNvbnN0Cit7CisgICAgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSA9IChDYWNoZWRSZXNv
dXJjZTo6VHlwZSlpblR5cGU7CisgICAgCisgICAgaW50IHJlcyA9IDA7CisKKyAgICBEZXByZWNh
dGVkUHRyTGlzdEl0ZXJhdG9yPFJlcXVlc3Q+IHBJdCggbV9yZXF1ZXN0c1BlbmRpbmcgKTsKKyAg
ICBmb3IgKDsgcEl0LmN1cnJlbnQoKTsgKytwSXQgKQorICAgICAgICBpZiAoIHBJdC5jdXJyZW50
KCktPmRvY0xvYWRlcigpID09IGRsICYmIHBJdC5jdXJyZW50KCktPmNhY2hlZFJlc291cmNlKCkt
PnR5cGUoKSA9PSB0eXBlICkKKyAgICAgICAgICAgIHJlcysrOworCisgICAgUmVxdWVzdE1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yZXF1ZXN0c0xvYWRpbmcuZW5kKCk7CisgICAgZm9yIChS
ZXF1ZXN0TWFwOjpjb25zdF9pdGVyYXRvciBpID0gbV9yZXF1ZXN0c0xvYWRpbmcuYmVnaW4oKTsg
IShpID09IGVuZCk7ICsraSkgeworICAgICAgICBSZXF1ZXN0KiByID0gaS0+c2Vjb25kOworICAg
ICAgICByZXMgKz0gKHItPmRvY0xvYWRlcigpID09IGRsICYmICFyLT5pc011bHRpcGFydCgpICYm
IHItPmNhY2hlZFJlc291cmNlKCktPnR5cGUoKSA9PSB0eXBlICk7CisgICAgfQorCQorCS8vIERB
QzogSXMgdGhpcyBuZWVkZWQ/CisJaWYgKGRsLT5sb2FkSW5Qcm9ncmVzcygpKQorICAgICAgICBy
ZXMrKzsKKworICAgIHJldHVybiByZXM7Cit9CisjZW5kaWYKKwogdm9pZCBMb2FkZXI6OmNhbmNl
bFJlcXVlc3RzKERvY0xvYWRlciogZGwpCiB7CiAgICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRv
cjxSZXF1ZXN0PiBwSXQobV9yZXF1ZXN0c1BlbmRpbmcpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIv
bG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgJKHJldmlzaW9u
IDE4OTc5KQorKysgV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDYgKzUyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGxvYWQoRG9jTG9h
ZGVyKiwgQ2FjaGVkUmVzb3VyY2UqLCBib29sIGluY3JlbWVudGFsID0gdHJ1ZSk7CiAKICAgICAg
ICAgaW50IG51bVJlcXVlc3RzKERvY0xvYWRlciopIGNvbnN0OworI2lmIFVTRShET1VCTEVfVFJF
RSkKKyAgICAgICAgaW50IG51bVJlcXVlc3RzKERvY0xvYWRlciosIGludCB0eXBlKSBjb25zdDsK
KyNlbmRpZiAKICAgICAgICAgdm9pZCBjYW5jZWxSZXF1ZXN0cyhEb2NMb2FkZXIqKTsKIAogICAg
IHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13300</attachid>
            <date>2007-02-21 10:29:33 -0800</date>
            <delta_ts>2007-02-21 10:29:33 -0800</delta_ts>
            <desc>patch for s60 webkit tot doubletree</desc>
            <filename>dtree.diff</filename>
            <type>text/plain</type>
            <size>83178</size>
            <attacher name="Bradley Morrison">bradley.morrison</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY29uZmlnLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2NvbmZpZy5o
CShyZXZpc2lvbiA4NDEpDQorKysgV2ViQ29yZS9jb25maWcuaAkocmV2aXNpb24gODQyKQ0KQEAg
LTg2LDYgKzg2LDcgQEANCiAjaWYgUExBVEZPUk0oU1lNQklBTikNCiAjZGVmaW5lIEtYTUxDT1JF
X1VTRV9KQVZBU0NSSVBUQ09SRV9CSU5ESU5HUyAxDQogI2RlZmluZSBLWE1MQ09SRV9VU0VfTlBP
QkpFQ1QgMQ0KKyNkZWZpbmUgS1hNTENPUkVfVVNFX0RPVUJMRVRSRUUgMQ0KICN1bmRlZiBYU0xU
X1NVUFBPUlQNCiAjdW5kZWYgV0lOMzINCiAjdW5kZWYgX1dJTjMyDQpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDg0MSkNCisrKyBXZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA4NDIpDQpAQCAtMTgwLDYgKzE4MCw5IEBADQog
DQogYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSog
c3R5bGUpDQogew0KKyAgICBpZiAoZG9jdW1lbnQoKS0+ZmFzdERpc3BsYXlNb2RlKCkpDQorICAg
ICAgICByZXR1cm4gZmFsc2U7DQorICAgIA0KICAgICBpZiAobV91c2VGYWxsYmFja0NvbnRlbnQg
fHwgaXNJbWFnZVR5cGUoKSkNCiAgICAgICAgIHJldHVybiBIVE1MUGx1Z0luRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChzdHlsZSk7DQogDQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRF
bGVtZW50LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDg0MSkNCisrKyBXZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA4NDIpDQpAQCAtMTAzLDYgKzEwMyw5IEBADQogDQogYm9vbCBIVE1MQXBw
bGV0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSAqc3R5bGUpDQogew0KKyAg
ICBpZiAoZG9jdW1lbnQoKS0+ZmFzdERpc3BsYXlNb2RlKCkpDQorICAgICAgICByZXR1cm4gZmFs
c2U7ICAgIA0KKyAgICAgICAgDQogICAgIHJldHVybiAhZ2V0QXR0cmlidXRlKGNvZGVBdHRyKS5p
c051bGwoKTsNCiB9DQogDQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNw
cA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDg0MSkNCisrKyBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiA4NDIpDQpAQCAtMTA2LDYgKzEwNiw4IEBADQogDQogYm9vbCBIVE1MSUZyYW1lRWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSAqc3R5bGUpDQogew0KKyAgICBpZiAoZG9j
dW1lbnQoKS0+ZmFzdERpc3BsYXlNb2RlKCkpDQorICAgICAgICByZXR1cm4gZmFsc2U7DQogICAg
IC8vIERvbid0IGlnbm9yZSBkaXNwbGF5OiBub25lIHRoZSB3YXkgZnJhbWUgZG9lcy4NCiAgICAg
cmV0dXJuIGlzVVJMQWxsb3dlZChtX1VSTCkgJiYgc3R5bGUtPmRpc3BsYXkoKSAhPSBOT05FOw0K
IH0NCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHANCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDg0MSkNCisr
KyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDg0MikNCkBAIC0x
MDYsNiArMTA2LDkgQEANCiANCiB2b2lkIEhUTUxGcmFtZUVsZW1lbnQ6Om9wZW5VUkwoKQ0KIHsN
CisgICAgaWYgKGRvY3VtZW50KCktPmZhc3REaXNwbGF5TW9kZSgpKQ0KKyAgICAgICAgcmV0dXJu
OyAgICANCisgICAgICAgIA0KICAgICBpZiAoIWlzVVJMQWxsb3dlZChtX1VSTCkpDQogICAgICAg
ICByZXR1cm47DQogDQpAQCAtMTY4LDYgKzE3MSw4IEBADQogDQogYm9vbCBIVE1MRnJhbWVFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkNCiB7DQorICAgIGlmIChk
b2N1bWVudCgpLT5mYXN0RGlzcGxheU1vZGUoKSkNCisgICAgICAgIHJldHVybiBmYWxzZTsgICAg
DQogICAgIC8vIElnbm9yZSBkaXNwbGF5OiBub25lLg0KICAgICByZXR1cm4gaXNVUkxBbGxvd2Vk
KG1fVVJMKTsNCiB9DQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA4NDEpDQorKysgV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA4NDIpDQpAQCAtMTA2LDYgKzEwNiw4IEBADQogDQogYm9vbCBIVE1MRnJhbWVTZXRF
bGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkNCiB7DQorICAgIGlm
IChkb2N1bWVudCgpLT5mYXN0RGlzcGxheU1vZGUoKSkNCisgICAgICAgIHJldHVybiBmYWxzZTsg
ICAgDQogICAgIC8vIElnbm9yZSBkaXNwbGF5OiBub25lIGJ1dCBkbyBwYXkgYXR0ZW50aW9uIGlm
IGEgc3R5bGVzaGVldCBoYXMgY2F1c2VkIHVzIHRvIGRlbGF5IG91ciBsb2FkaW5nLg0KICAgICBy
ZXR1cm4gc3R5bGUtPmlzU3R5bGVBdmFpbGFibGUoKTsNCiB9DQpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxUb2tlbml6ZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9odG1sL0hUTUxUb2tl
bml6ZXIuY3BwCShyZXZpc2lvbiA4NDEpDQorKysgV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIu
Y3BwCShyZXZpc2lvbiA4NDIpDQpAQCAtMzk4LDcgKzM5OCw3IEBADQogI2VuZGlmDQogICAgICAg
ICAgICAgc2NyaXB0Tm9kZSA9IDA7DQogICAgICAgICAgICAgLy8gUGFyc2Ugc2NyaXB0Q29kZSBj
b250YWluaW5nIDxzY3JpcHQ+IGluZm8NCi0gICAgICAgICAgICBkb1NjcmlwdEV4ZWMgPSB0cnVl
Ow0KKyAgICAgICAgICAgIGRvU2NyaXB0RXhlYyA9ICFtX2RvYy0+ZmFzdERpc3BsYXlNb2RlKCk7
DQogICAgICAgICB9DQogICAgIH0NCiANCkBAIC0xNzA5LDEyICsxNzA5LDE0IEBADQogICAgICAg
ICBpZiAoIW1fZG9jLT5vd25lckVsZW1lbnQoKSkNCiAgICAgICAgICAgICBwcmludGYoImV4dGVy
bmFsIHNjcmlwdCBiZWdpbm5pbmcgZXhlY3V0aW9uIGF0ICVkXG4iLCBtX2RvYy0+ZWxhcHNlZFRp
bWUoKSk7DQogI2VuZGlmDQotDQotICAgICAgICBpZiAoZXJyb3JPY2N1cnJlZCkNCi0gICAgICAg
ICAgICBFdmVudFRhcmdldE5vZGVDYXN0KG4uZ2V0KCkpLT5kaXNwYXRjaEhUTUxFdmVudChlcnJv
ckV2ZW50LCB0cnVlLCBmYWxzZSk7DQotICAgICAgICBlbHNlIHsNCi0gICAgICAgICAgICBtX3N0
YXRlID0gc2NyaXB0RXhlY3V0aW9uKHNjcmlwdFNvdXJjZS5kZXByZWNhdGVkU3RyaW5nKCksIG1f
c3RhdGUsIGNhY2hlZFNjcmlwdFVybCk7DQotICAgICAgICAgICAgRXZlbnRUYXJnZXROb2RlQ2Fz
dChuLmdldCgpKS0+ZGlzcGF0Y2hIVE1MRXZlbnQobG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpOw0K
KyAgICAgICAgDQorICAgICAgICBpZiAoIW1fZG9jLT5mYXN0RGlzcGxheU1vZGUoKSkgew0KKyAg
ICAgICAgICAgIGlmIChlcnJvck9jY3VycmVkKQ0KKyAgICAgICAgICAgICAgICBFdmVudFRhcmdl
dE5vZGVDYXN0KG4uZ2V0KCkpLT5kaXNwYXRjaEhUTUxFdmVudChlcnJvckV2ZW50LCB0cnVlLCBm
YWxzZSk7DQorICAgICAgICAgICAgZWxzZSB7DQorICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBz
Y3JpcHRFeGVjdXRpb24oc2NyaXB0U291cmNlLmRlcHJlY2F0ZWRTdHJpbmcoKSwgbV9zdGF0ZSwg
Y2FjaGVkU2NyaXB0VXJsKTsNCisgICAgICAgICAgICAgICAgRXZlbnRUYXJnZXROb2RlQ2FzdChu
LmdldCgpKS0+ZGlzcGF0Y2hIVE1MRXZlbnQobG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpOw0KKyAg
ICAgICAgICAgIH0NCiAgICAgICAgIH0NCiANCiAgICAgICAgIC8vIFRoZSBzdGF0ZSBvZiBwZW5k
aW5nU2NyaXB0cy5pc0VtcHR5KCkgY2FuIGNoYW5nZSBpbnNpZGUgdGhlIHNjcmlwdEV4ZWN1dGlv
bigpDQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxHZW5lcmljRm9ybUVsZW1lbnQuaA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MR2VuZXJpY0Zvcm1FbGVtZW50LmgJKHJldmlzaW9u
IDg0MSkNCisrKyBXZWJDb3JlL2h0bWwvSFRNTEdlbmVyaWNGb3JtRWxlbWVudC5oCShyZXZpc2lv
biA4NDIpDQpAQCAtMTAyLDYgKzEwMiw4IEBADQogDQogICAgIGludCB0YWJJbmRleCgpIGNvbnN0
Ow0KICAgICB2b2lkIHNldFRhYkluZGV4KGludCk7DQorICAgIA0KKyAgICBib29sIHJlbmRlcmVy
SXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKTsNCiANCiBwcm90ZWN0ZWQ6DQogICAgIEhUTUxG
b3JtRWxlbWVudCogZ2V0Rm9ybSgpIGNvbnN0Ow0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MR2Vu
ZXJpY0Zvcm1FbGVtZW50LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MR2Vu
ZXJpY0Zvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gODQxKQ0KKysrIFdlYkNvcmUvaHRtbC9IVE1M
R2VuZXJpY0Zvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gODQyKQ0KQEAgLTI2NCw1ICsyNjQsMTMg
QEANCiB7DQogICAgIHNldEF0dHJpYnV0ZSh0YWJpbmRleEF0dHIsIFN0cmluZzo6bnVtYmVyKHZh
bHVlKSk7DQogfQ0KKw0KK2Jvb2wgSFRNTEdlbmVyaWNGb3JtRWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChSZW5kZXJTdHlsZSAqc3R5bGUpDQorew0KKyAgICBpZiAoZG9jdW1lbnQoKS0+ZmFzdERp
c3BsYXlNb2RlKCkpDQorICAgICAgICByZXR1cm4gZmFsc2U7DQorICAgICAgICANCisgICAgcmV0
dXJuIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsNCit9DQogICAgIA0KIH0g
Ly8gbmFtZXNwYWNlDQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCShyZXZpc2lv
biA4NDEpDQorKysgV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiA4
NDIpDQpAQCAtMTMxLDYgKzEzMSw5IEBADQogDQogYm9vbCBIVE1MRW1iZWRFbGVtZW50OjpyZW5k
ZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkNCiB7DQorICAgIGlmIChkb2N1bWVudCgp
LT5mYXN0RGlzcGxheU1vZGUoKSkNCisgICAgICAgIHJldHVybiBmYWxzZTsNCisgICAgDQogICAg
IEZyYW1lICpmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7DQogICAgIGlmICghZnJhbWUgfHwg
IWZyYW1lLT5wbHVnaW5zRW5hYmxlZCgpKQ0KICAgICAgICAgcmV0dXJuIGZhbHNlOw0KSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvYmlkaS5jcHAJKHJldmlzaW9uIDg0MSkNCisrKyBXZWJDb3JlL3JlbmRlcmluZy9iaWRp
LmNwcAkocmV2aXNpb24gODQyKQ0KQEAgLTIwMzAsNyArMjAzMCw3IEBADQogICAgICAgICAgICAg
ICAgIC8vIG5lZWQgYXQgbGVhc3QgeCBhbW91bnQgb2YgY2hhcmFjdGVycyBpbiB0aGUgYmxvY2sN
CiAgICAgICAgICAgICAgICAgLy8gYWxzbyBpZiBsb25nZXN0IHNpbmdsZSB0ZXh0IG5vZGUgKG5v
dCBicm9rZW4gYnkgaW5saW5lcykgaXMgdmVyeSBzaG9ydA0KICAgICAgICAgICAgICAgICAvLyBp
dCBpcyBsaWtlbHkgc29tZSBtZW51IHRoaW5nIGFuZCB3ZSBkb24ndCBhcHBseSB0aGUgbGltaXQN
Ci0gICAgICAgICAgICAgICAgaWYgKGNoYXJzRm91bmQgPiAzMCAmJiBtb3N0Q2hhcnNJbkVsZW1l
bnQgPiAyMCkNCisgICAgICAgICAgICAgICAgaWYgKGNoYXJzRm91bmQgPiAzMCAmJiBtb3N0Q2hh
cnNJbkVsZW1lbnQgPiAyNSkNCiAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gbWF4VGV4dFdp
ZHRoOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlz
aW9uIDg0MSkNCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDg0MikNCkBA
IC0yMzIsNiArMjMyLDcgQEANCiAgICAgLCBtX2FjY2Vzc0tleU1hcFZhbGlkKGZhbHNlKQ0KICAg
ICAsIG1fY3JlYXRlUmVuZGVyZXJzKHRydWUpDQogICAgICwgbV9pblBhZ2VDYWNoZShmYWxzZSkN
CisgICAgLCBtX2Zhc3REaXNwbGF5TW9kZShmYWxzZSkNCiB7DQogICAgIG1fZG9jdW1lbnQucmVz
ZXRTa2lwcGluZ1JlZih0aGlzKTsNCiANCkBAIC0yNzksNyArMjgwLDcgQEANCiAgICAgbV9qc0Vk
aXRvciA9IDA7DQogDQogICAgIHN0YXRpYyBpbnQgZG9jSUQgPSAwOw0KLSAgICBtX2RvY0lEID0g
ZG9jSUQrKzsNCisgICAgbV9kb2NJRCA9IGRvY0lEKys7ICAgDQogfQ0KIA0KIHZvaWQgRG9jdW1l
bnQ6OnJlbW92ZWRMYXN0UmVmKCkNCkBAIC0xMjg2LDcgKzEyODcsNyBAQA0KICAgICAvLyAoYSkg
d2UgYWN0dWFsbHkgbmVlZCBhIGxheW91dA0KICAgICAvLyAoYikgb3VyIHN0eWxlc2hlZXRzIGFy
ZSBhbGwgbG9hZGVkDQogICAgIC8vIChjKSB3ZSBoYXZlIGEgPGJvZHk+DQotICAgIHJldHVybiAo
cmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5uZWVkc0xheW91dCgpICYmIGhhdmVTdHlsZXNoZWV0
c0xvYWRlZCgpICYmDQorICAgIHJldHVybiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5uZWVk
c0xheW91dCgpICYmIChoYXZlU3R5bGVzaGVldHNMb2FkZWQoKSB8fCBtX2Zhc3REaXNwbGF5TW9k
ZSkgJiYNCiAgICAgICAgICAgICBkb2N1bWVudEVsZW1lbnQoKSAmJiBkb2N1bWVudEVsZW1lbnQo
KS0+cmVuZGVyZXIoKSAmJg0KICAgICAgICAgICAgICghZG9jdW1lbnRFbGVtZW50KCktPmhhc1Rh
Z05hbWUoaHRtbFRhZykgfHwgYm9keSgpKSk7DQogfQ0KQEAgLTE3ODUsNyArMTc4Niw3IEBADQog
dm9pZCBEb2N1bWVudDo6dXBkYXRlU3R5bGVTZWxlY3RvcigpDQogew0KICAgICAvLyBEb24ndCBi
b3RoZXIgdXBkYXRpbmcsIHNpbmNlIHdlIGhhdmVuJ3QgbG9hZGVkIGFsbCBvdXIgc3R5bGUgaW5m
byB5ZXQuDQotICAgIGlmICghaGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpDQorICAgIGlmICghaGF2
ZVN0eWxlc2hlZXRzTG9hZGVkKCkgJiYgIW1fZmFzdERpc3BsYXlNb2RlKQ0KICAgICAgICAgcmV0
dXJuOw0KIA0KICAgICBpZiAoZGlkTGF5b3V0V2l0aFBlbmRpbmdTdHlsZXNoZWV0cygpICYmIG1f
cGVuZGluZ1N0eWxlc2hlZXRzIDw9IDApIHsNCkBAIC0zNDg5LDQgKzM0OTAsMTEgQEANCiAgICAg
ICAgIG1faWNvblVSTCA9IGljb25VUkw7DQogfQ0KIA0KK3ZvaWQgRG9jdW1lbnQ6OnNldERvY0xv
YWRlcihEb2NMb2FkZXIqIGRsKQ0KK3sNCisgICAgbV9kb2NMb2FkZXIgPSBkbDsNCisgICAgaWYg
KG1fZG9jTG9hZGVyKQ0KKyAgICAgICAgbV9kb2NMb2FkZXItPm1fZG9jID0gdGhpczsNCiB9DQor
DQorfQ0KSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA4NDEpDQorKysgV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAkocmV2aXNpb24gODQyKQ0KQEAgLTI5Myw2ICsyOTMsNyBAQA0KICAgICB2b2lkIHVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOw0KICAgICBzdGF0aWMgdm9pZCB1cGRh
dGVEb2N1bWVudHNSZW5kZXJpbmcoKTsNCiAgICAgRG9jTG9hZGVyKiBkb2NMb2FkZXIoKSB7IHJl
dHVybiBtX2RvY0xvYWRlcjsgfQ0KKyAgICB2b2lkIHNldERvY0xvYWRlcihEb2NMb2FkZXIqIGRs
KTsNCiANCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOw0KICAgICB2aXJ0dWFsIHZvaWQgZGV0
YWNoKCk7DQpAQCAtNzU5LDYgKzc2MCw5IEBADQogICAgIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyog
YWNjZXNzU1ZHRXh0ZW5zaW9ucygpOw0KICNlbmRpZg0KIA0KKyAgICB2b2lkIHNldEZhc3REaXNw
bGF5TW9kZShib29sIGYpIHsgbV9mYXN0RGlzcGxheU1vZGUgPSBmOyB9DQorICAgIGJvb2wgZmFz
dERpc3BsYXlNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mYXN0RGlzcGxheU1vZGU7IH0NCisNCiBw
cml2YXRlOg0KICAgICB2b2lkIHVwZGF0ZVRpdGxlKCk7DQogICAgIHZvaWQgcmVtb3ZlQWxsRGlz
Y29ubmVjdGVkTm9kZUV2ZW50TGlzdGVuZXJzKCk7DQpAQCAtODEyLDYgKzgxNiw4IEBADQogICAg
IGJvb2wgbV9jcmVhdGVSZW5kZXJlcnM7DQogICAgIGJvb2wgbV9pblBhZ2VDYWNoZTsNCiAgICAg
U3RyaW5nIG1faWNvblVSTDsNCisgICAgDQorICAgIGJvb2wgbV9mYXN0RGlzcGxheU1vZGU7DQog
fTsNCiANCiB9IC8vbmFtZXNwYWNlDQpJbmRleDogV2ViQ29yZS9CV0lOUy9XZWJDb3JlVS5ERUYN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL0JXSU5TL1dlYkNvcmVVLkRFRgkocmV2aXNpb24gODQx
KQ0KKysrIFdlYkNvcmUvQldJTlMvV2ViQ29yZVUuREVGCShyZXZpc2lvbiA4NDIpDQpAQCAtNDUs
MTc5ICs0NSwxODAgQEANCiAJP0RvbWFpbkBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkU/QVZUUHRy
QzE2QEBYWiBAIDQ0IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6
RG9tYWluKHZvaWQpIGNvbnN0DQogCT9Eb25lUHJvY2Vzc2luZ0RhdGFAQ1dlYkNvcmVGcmFtZUJy
aWRnZUBAUUJFSFhaIEAgNDUgTk9OQU1FIDsgaW50IENXZWJDb3JlRnJhbWVCcmlkZ2U6OkRvbmVQ
cm9jZXNzaW5nRGF0YSh2b2lkKSBjb25zdA0KIAk/RHJhd1JlY3RAQ1dlYkNvcmVGcmFtZUJyaWRn
ZUBAUUFFWEFCVlRSZWN0QEBBQVZDV2ViQ29yZUdyYXBoaWNzQ29udGV4dEBAQFogQCA0NiBOT05B
TUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6OkRyYXdSZWN0KGNsYXNzIFRSZWN0IGNvbnN0
ICYsIGNsYXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0ICYpDQotCT9FZGl0YWJsZVBvc2l0aW9u
VG9Qb2ludEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkU/QVZUUG9pbnRAQEhAWiBAIDQ3IE5PTkFN
RSA7IGNsYXNzIFRQb2ludCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpFZGl0YWJsZVBvc2l0aW9uVG9Q
b2ludChpbnQpIGNvbnN0DQotCT9FbmRAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWFhaIEAgNDgg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpFbmQodm9pZCkNCi0JP0V4ZWN1dGVT
Y3JpcHRAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWEFCVlREZXNDOEBAQFogQCA0OSBOT05BTUUg
OyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6OkV4ZWN1dGVTY3JpcHQoY2xhc3MgVERlc0M4IGNv
bnN0ICYpDQotCT9GYW50YXN5Rm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRy
QzE2QEBYWiBAIDUwIE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6RmFu
dGFzeUZvbnRGYW1pbHkodm9pZCkgY29uc3QNCi0JP0Zhc3RGaXJzdERpc3BsYXlNb2RlQENXZWJD
b3JlRnJhbWVCcmlkZ2VAQFFCRUhYWiBAIDUxIE5PTkFNRSA7IGludCBDV2ViQ29yZUZyYW1lQnJp
ZGdlOjpGYXN0Rmlyc3REaXNwbGF5TW9kZSh2b2lkKSBjb25zdA0KLQk/RmluZEZyYW1lTmFtZWRA
Q1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJFUEFWMUBBQlZURGVzQzE2QEBAWiBAIDUyIE5PTkFNRSA7
IGNsYXNzIENXZWJDb3JlRnJhbWVCcmlkZ2UgKiBDV2ViQ29yZUZyYW1lQnJpZGdlOjpGaW5kRnJh
bWVOYW1lZChjbGFzcyBURGVzQzE2IGNvbnN0ICYpIGNvbnN0DQotCT9GaW5kTGlua3NPZlR5cGVA
Q1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEFBVj8kUkFycmF5QFVUV2ViQ29y
ZUxpbmtJdGVtQEBAQEBaIEAgNTMgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpG
aW5kTGlua3NPZlR5cGUoY2xhc3MgVERlc0MxNiBjb25zdCAmLCBjbGFzcyBSQXJyYXk8c3RydWN0
IFRXZWJDb3JlTGlua0l0ZW0+ICYpDQotCT9GaXJzdENoaWxkQENXZWJDb3JlRnJhbWVCcmlkZ2VA
QFFCRVBBVjFAWFogQCA1NCBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUZyYW1lQnJpZGdlICogQ1dl
YkNvcmVGcmFtZUJyaWRnZTo6Rmlyc3RDaGlsZCh2b2lkKSBjb25zdA0KLQk/Rml4ZWRGb250RmFt
aWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgNTUgTk9OQU1FIDsgY2xh
c3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpGaXhlZEZvbnRGYW1pbHkodm9pZCkgY29uc3QN
Ci0JP0ZvcmNlTGF5b3V0QWRqdXN0aW5nVmlld1NpemVAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFF
WEhAWiBAIDU2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6Rm9yY2VMYXlvdXRB
ZGp1c3RpbmdWaWV3U2l6ZShpbnQpDQotCT9Gb3JjZUxheW91dFdpdGhNaW5pbXVtUGFnZVdpZHRo
QENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhISEhAWiBAIDU3IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVGcmFtZUJyaWRnZTo6Rm9yY2VMYXlvdXRXaXRoTWluaW11bVBhZ2VXaWR0aChpbnQsIGludCwg
aW50KQ0KLQk/Rm9yd2FyZERlbGV0ZUtleVByZXNzZWRXaXRoU21hcnREZWxldGVAQ1dlYkNvcmVG
cmFtZUJyaWRnZUBAUUFFWEhXNFdlYkJyaWRnZVNlbGVjdGlvbkdyYW51bGFyaXR5QEBAWiBAIDU4
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6Rm9yd2FyZERlbGV0ZUtleVByZXNz
ZWRXaXRoU21hcnREZWxldGUoaW50LCBlbnVtIFdlYkJyaWRnZVNlbGVjdGlvbkdyYW51bGFyaXR5
KQ0KLQk/R2V0Q3Vyc29yU2VsZWN0aW9uQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFCRUhBQUgwQFog
QCA1OSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6R2V0Q3Vyc29yU2VsZWN0aW9u
KGludCAmLCBpbnQgJikgY29uc3QNCi0JP0dldEVkaXRhYmxlVGV4dEBDV2ViQ29yZUZyYW1lQnJp
ZGdlQEBRQUVYQUFWVERlczE2QEBISEBaIEAgNjAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1l
QnJpZGdlOjpHZXRFZGl0YWJsZVRleHQoY2xhc3MgVERlczE2ICYsIGludCwgaW50KQ0KLQk/R2V0
UGFnZURhdGFMQ0BDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVQQVY/JENBcnJheVB0ckBWQ1dlYkNv
cmVQYWdlRGF0YUl0ZW1AQEBASEBaIEAgNjEgTk9OQU1FIDsgY2xhc3MgQ0FycmF5UHRyPGNsYXNz
IENXZWJDb3JlUGFnZURhdGFJdGVtPiAqIENXZWJDb3JlRnJhbWVCcmlkZ2U6OkdldFBhZ2VEYXRh
TEMoaW50KQ0KLQk/R2V0VGV4dENvbnRlbnRMQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVBBVkhC
dWZDMTZAQFhaIEAgNjIgTk9OQU1FIDsgY2xhc3MgSEJ1ZkMxNiAqIENXZWJDb3JlRnJhbWVCcmlk
Z2U6OkdldFRleHRDb250ZW50TCh2b2lkKQ0KLQk/R2V0VXJsT2ZOb2RlSW5Gb2N1c0xAQ1dlYkNv
cmVGcmFtZUJyaWRnZUBAUUJFUEFWSEJ1ZkMxNkBAQUFWVFBvaW50QEBAWiBAIDYzIE5PTkFNRSA7
IGNsYXNzIEhCdWZDMTYgKiBDV2ViQ29yZUZyYW1lQnJpZGdlOjpHZXRVcmxPZk5vZGVJbkZvY3Vz
TChjbGFzcyBUUG9pbnQgJikgY29uc3QNCi0JP0hhbmRsZUZhbGxiYWNrQ29udGVudEBDV2ViQ29y
ZUZyYW1lQnJpZGdlQEBRQUVYWFogQCA2NCBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlk
Z2U6OkhhbmRsZUZhbGxiYWNrQ29udGVudCh2b2lkKQ0KLQk/SGFzUGVuZGluZ0xheW91dEBDV2Vi
Q29yZUZyYW1lQnJpZGdlQEBRQkVIWFogQCA2NSBOT05BTUUgOyBpbnQgQ1dlYkNvcmVGcmFtZUJy
aWRnZTo6SGFzUGVuZGluZ0xheW91dCh2b2lkKSBjb25zdA0KLQk/SGlzdG9yeVByb3ZpZGVyQFdl
YkNvcmVIaXN0b3J5QEBTQVBBVk1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyQEBYWiBAIDY2IE5PTkFN
RSA7IGNsYXNzIE1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyICogV2ViQ29yZUhpc3Rvcnk6Okhpc3Rv
cnlQcm92aWRlcih2b2lkKQ0KLQk/SW1hZ2VDb3VudEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVI
SEBaIEAgNjcgTk9OQU1FIDsgaW50IENXZWJDb3JlRnJhbWVCcmlkZ2U6OkltYWdlQ291bnQoaW50
KQ0KLQk/SW1hZ2VzSW5SZWN0TENAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFUEFWPyRDQXJyYXlG
aXhGbGF0QFVUV2ViQ29yZUltYWdlQ2FycmllckBAQEBIQFogQCA2OCBOT05BTUUgOyBjbGFzcyBD
QXJyYXlGaXhGbGF0PHN0cnVjdCBUV2ViQ29yZUltYWdlQ2Fycmllcj4gKiBDV2ViQ29yZUZyYW1l
QnJpZGdlOjpJbWFnZXNJblJlY3RMQyhpbnQpDQotCT9JblZpZXdTb3VyY2VNb2RlQENXZWJDb3Jl
RnJhbWVCcmlkZ2VAQFFCRUhYWiBAIDY5IE5PTkFNRSA7IGludCBDV2ViQ29yZUZyYW1lQnJpZGdl
OjpJblZpZXdTb3VyY2VNb2RlKHZvaWQpIGNvbnN0DQotCT9Jbml0aWFsaXplU2V0dGluZ3NAQ1dl
YkNvcmVGcmFtZUJyaWRnZUBAUUFFWEFCVkNXZWJDb3JlU2V0dGluZ3NAQEBaIEAgNzAgTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpJbml0aWFsaXplU2V0dGluZ3MoY2xhc3MgQ1dl
YkNvcmVTZXR0aW5ncyBjb25zdCAmKQ0KLQk/SW5zZXJ0TGluZUJyZWFrQENXZWJDb3JlRnJhbWVC
cmlkZ2VAQFFBRVhYWiBAIDcxIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6SW5z
ZXJ0TGluZUJyZWFrKHZvaWQpDQotCT9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JAQ1dlYkNvcmVG
cmFtZUJyaWRnZUBAUUFFWFhaIEAgNzIgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdl
OjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3Iodm9pZCkNCi0JP0luc2VydFBhcmFncmFwaFNlcGFy
YXRvckluUXVvdGVkQ29udGVudEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVYWFogQCA3MyBOT05B
TUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6Okluc2VydFBhcmFncmFwaFNlcGFyYXRvcklu
UXVvdGVkQ29udGVudCh2b2lkKQ0KLQk/SW5zZXJ0VGV4dEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBR
QUVYQUJWVERlc0MxNkBASEBaIEAgNzQgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdl
OjpJbnNlcnRUZXh0KGNsYXNzIFREZXNDMTYgY29uc3QgJiwgaW50KQ0KLQk/SW5zZXJ0VW5jb21t
aXRlZFRleHRAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEBaIEAgNzUgTk9O
QU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpJbnNlcnRVbmNvbW1pdGVkVGV4dChjbGFz
cyBURGVzQzE2IGNvbnN0ICYpDQotCT9JbnN0YWxsSW5GcmFtZUBDV2ViQ29yZUZyYW1lQnJpZGdl
QEBRQUVYQUFWTVdlYkNvcmVTY3JvbGxWaWV3QEBAWiBAIDc2IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVGcmFtZUJyaWRnZTo6SW5zdGFsbEluRnJhbWUoY2xhc3MgTVdlYkNvcmVTY3JvbGxWaWV3ICYp
DQotCT9Jc0Rlc2NlbmRhbnRPZkZyYW1lQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFCRUhQQlYxQEBa
IEAgNzcgTk9OQU1FIDsgaW50IENXZWJDb3JlRnJhbWVCcmlkZ2U6OklzRGVzY2VuZGFudE9mRnJh
bWUoY2xhc3MgQ1dlYkNvcmVGcmFtZUJyaWRnZSBjb25zdCAqKSBjb25zdA0KLQk/SXNFZGl0YWJs
ZVNpbmdsZUxpbmVAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJFSFhaIEAgNzggTk9OQU1FIDsgaW50
IENXZWJDb3JlRnJhbWVCcmlkZ2U6OklzRWRpdGFibGVTaW5nbGVMaW5lKHZvaWQpIGNvbnN0DQot
CT9Jc0ZyYW1lU2V0QENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFCRUhYWiBAIDc5IE5PTkFNRSA7IGlu
dCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpJc0ZyYW1lU2V0KHZvaWQpIGNvbnN0DQotCT9Jc1NlbGVj
dGlvbkVkaXRhYmxlQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFCRUhYWiBAIDgwIE5PTkFNRSA7IGlu
dCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpJc1NlbGVjdGlvbkVkaXRhYmxlKHZvaWQpIGNvbnN0DQot
CT9Jc1NlbGVjdGlvbkVuZE9mRWRpdGFibGVDb250ZW50QENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFC
RUhYWiBAIDgxIE5PTkFNRSA7IGludCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpJc1NlbGVjdGlvbkVu
ZE9mRWRpdGFibGVDb250ZW50KHZvaWQpIGNvbnN0DQotCT9Jc1NlbGVjdGlvbkluUGFzc3dvcmRG
aWVsZEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkVIWFogQCA4MiBOT05BTUUgOyBpbnQgQ1dlYkNv
cmVGcmFtZUJyaWRnZTo6SXNTZWxlY3Rpb25JblBhc3N3b3JkRmllbGQodm9pZCkgY29uc3QNCi0J
P0lzU2VsZWN0aW9uUmljaGx5RWRpdGFibGVAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJFSFhaIEAg
ODMgTk9OQU1FIDsgaW50IENXZWJDb3JlRnJhbWVCcmlkZ2U6OklzU2VsZWN0aW9uUmljaGx5RWRp
dGFibGUodm9pZCkgY29uc3QNCi0JP0lzU2VsZWN0aW9uU3RhcnRPZkVkaXRhYmxlQ29udGVudEBD
V2ViQ29yZUZyYW1lQnJpZGdlQEBRQkVIWFogQCA4NCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVGcmFt
ZUJyaWRnZTo6SXNTZWxlY3Rpb25TdGFydE9mRWRpdGFibGVDb250ZW50KHZvaWQpIGNvbnN0DQot
CT9KYXZhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA4NSBOT05BTUUgOyBpbnQg
Q1dlYkNvcmVTZXR0aW5nczo6SmF2YUVuYWJsZWQodm9pZCkgY29uc3QNCi0JP0phdmFTY3JpcHRD
YW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgODYg
Tk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OkphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1
dG9tYXRpY2FsbHkodm9pZCkgY29uc3QNCi0JP0phdmFTY3JpcHRFbmFibGVkQENXZWJDb3JlU2V0
dGluZ3NAQFFCRUhYWiBAIDg3IE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpKYXZhU2Ny
aXB0RW5hYmxlZCh2b2lkKSBjb25zdA0KLQk/SnVtcFRvU2VsZWN0aW9uQENXZWJDb3JlRnJhbWVC
cmlkZ2VAQFFBRVhYWiBAIDg4IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6SnVt
cFRvU2VsZWN0aW9uKHZvaWQpDQotCT9LZXlFdmVudEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVI
VVRLZXlFdmVudEBASEBaIEAgODkgTk9OQU1FIDsgaW50IENXZWJDb3JlRnJhbWVCcmlkZ2U6Oktl
eUV2ZW50KHN0cnVjdCBUS2V5RXZlbnQsIGludCkNCi0JP0xhc3RDaGlsZEBDV2ViQ29yZUZyYW1l
QnJpZGdlQEBRQkVQQVYxQFhaIEAgOTAgTk9OQU1FIDsgY2xhc3MgQ1dlYkNvcmVGcmFtZUJyaWRn
ZSAqIENXZWJDb3JlRnJhbWVCcmlkZ2U6Okxhc3RDaGlsZCh2b2lkKSBjb25zdA0KLQk/TG9hZElt
YWdlc0BDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVYWFogQCA5MSBOT05BTUUgOyB2b2lkIENXZWJD
b3JlRnJhbWVCcmlkZ2U6OkxvYWRJbWFnZXModm9pZCkNCi0JP0xvYWRlckNvbnRhaW5lckBXZWJD
b3JlTG9hZGVyQ29udGFpbmVyQEBTQVBBVk1XZWJDb3JlTG9hZGVyQ29udGFpbmVyQEBYWiBAIDky
IE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlTG9hZGVyQ29udGFpbmVyICogV2ViQ29yZUxvYWRlckNv
bnRhaW5lcjo6TG9hZGVyQ29udGFpbmVyKHZvaWQpDQotCT9NYXhpbXVtRWRpdGFibGVMZW5ndGhA
Q1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJFSFhaIEAgOTMgTk9OQU1FIDsgaW50IENXZWJDb3JlRnJh
bWVCcmlkZ2U6Ok1heGltdW1FZGl0YWJsZUxlbmd0aCh2b2lkKSBjb25zdA0KLQk/TWluaW11bUZv
bnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDk0IE5PTkFNRSA7IGludCBDV2ViQ29y
ZVNldHRpbmdzOjpNaW5pbXVtRm9udFNpemUodm9pZCkgY29uc3QNCi0JP01pbmltdW1Mb2dpY2Fs
Rm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgOTUgTk9OQU1FIDsgaW50IENXZWJD
b3JlU2V0dGluZ3M6Ok1pbmltdW1Mb2dpY2FsRm9udFNpemUodm9pZCkgY29uc3QNCi0JP05hbWVA
Q1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJFP0FWVFB0ckMxNkBAWFogQCA5NiBOT05BTUUgOyBjbGFz
cyBUUHRyQzE2IENXZWJDb3JlRnJhbWVCcmlkZ2U6Ok5hbWUodm9pZCkgY29uc3QNCi0JP05hdmln
YWJsZU5vZGVVbmRlckN1cnNvckBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkVIQUFWVFBvaW50QEBB
QVc0VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVAQEFBVlRSZWN0QEBAWiBAIDk3IE5PTkFNRSA7
IGludCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpOYXZpZ2FibGVOb2RlVW5kZXJDdXJzb3IoY2xhc3Mg
VFBvaW50ICYsIGVudW0gVFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGUgJiwgY2xhc3MgVFJlY3Qg
JikgY29uc3QNCi0JP05lZWRzTGF5b3V0QENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFCRUhYWiBAIDk4
IE5PTkFNRSA7IGludCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpOZWVkc0xheW91dCh2b2lkKSBjb25z
dA0KLQk/TmV3TEBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dEBAU0FQQVYxQEFBVkNGYnNCaXRHY0BA
UEFWQ0Zic0JpdG1hcEBAUEFWTVdlYkNvcmVTY3JvbGxWaWV3QEBAWiBAIDk5IE5PTkFNRSA7IGNs
YXNzIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0ICogQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQ6Ok5l
d0woY2xhc3MgQ0Zic0JpdEdjICYsIGNsYXNzIENGYnNCaXRtYXAgKiwgY2xhc3MgTVdlYkNvcmVT
Y3JvbGxWaWV3ICopDQotCT9OZXdMQENXZWJDb3JlR3JhcGhpY3NDb250ZXh0QEBTQVBBVjFAUEFW
Q0Zic0JpdG1hcERldmljZUBAUEFWQ0Zic0JpdG1hcEBAUEFWTVdlYkNvcmVTY3JvbGxWaWV3QEBA
WiBAIDEwMCBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCAqIENXZWJDb3Jl
R3JhcGhpY3NDb250ZXh0OjpOZXdMKGNsYXNzIENGYnNCaXRtYXBEZXZpY2UgKiwgY2xhc3MgQ0Zi
c0JpdG1hcCAqLCBjbGFzcyBNV2ViQ29yZVNjcm9sbFZpZXcgKikNCi0JP05ld0xAQ1dlYkNvcmVQ
YWdlRGF0YUl0ZW1AQFNBUEFWMUBXNFRQYWdlRGF0YUl0ZW1UeXBlQDFAQFogQCAxMDEgTk9OQU1F
IDsgY2xhc3MgQ1dlYkNvcmVQYWdlRGF0YUl0ZW0gKiBDV2ViQ29yZVBhZ2VEYXRhSXRlbTo6TmV3
TChlbnVtIENXZWJDb3JlUGFnZURhdGFJdGVtOjpUUGFnZURhdGFJdGVtVHlwZSkNCi0JP05ld0xA
Q1dlYkNvcmVTZXR0aW5nc0BAU0FQQVYxQFhaIEAgMTAyIE5PTkFNRSA7IGNsYXNzIENXZWJDb3Jl
U2V0dGluZ3MgKiBDV2ViQ29yZVNldHRpbmdzOjpOZXdMKHZvaWQpDQotCT9OZXdNYWluRnJhbWVX
aXRoUGFnZUxAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAU0FQQVYxQEFBVk1XZWJDb3JlRnJhbWVDYWxs
YmFja0BAQUFWQ1dlYkNvcmVQYWdlQnJpZGdlQEBAWiBAIDEwMyBOT05BTUUgOyBjbGFzcyBDV2Vi
Q29yZUZyYW1lQnJpZGdlICogQ1dlYkNvcmVGcmFtZUJyaWRnZTo6TmV3TWFpbkZyYW1lV2l0aFBh
Z2VMKGNsYXNzIE1XZWJDb3JlRnJhbWVDYWxsYmFjayAmLCBjbGFzcyBDV2ViQ29yZVBhZ2VCcmlk
Z2UgJikNCi0JP05ld1N1YmZyYW1lV2l0aE93bmVyRWxlbWVudExAQ1dlYkNvcmVGcmFtZUJyaWRn
ZUBAU0FQQVYxQEFBVk1XZWJDb3JlRnJhbWVDYWxsYmFja0BAQUFWRWxlbWVudEBXZWJDb3JlQEBA
WiBAIDEwNCBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUZyYW1lQnJpZGdlICogQ1dlYkNvcmVGcmFt
ZUJyaWRnZTo6TmV3U3ViZnJhbWVXaXRoT3duZXJFbGVtZW50TChjbGFzcyBNV2ViQ29yZUZyYW1l
Q2FsbGJhY2sgJiwgY2xhc3MgV2ViQ29yZTo6RWxlbWVudCAmKQ0KLQk/TmV4dEZyYW1lV2l0aFdy
YXBAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJFUEFWMUBIQFogQCAxMDUgTk9OQU1FIDsgY2xhc3Mg
Q1dlYkNvcmVGcmFtZUJyaWRnZSAqIENXZWJDb3JlRnJhbWVCcmlkZ2U6Ok5leHRGcmFtZVdpdGhX
cmFwKGludCkgY29uc3QNCi0JP05leHRSZWNvZ25pemVkVGV4dEZyb21DdXJzb3JMQENXZWJDb3Jl
RnJhbWVCcmlkZ2VAQFFCRT9BVlRQdHJDMTZAQEFCVlRQb2ludEBAQUJIQUJXNFRGaW5kSXRlbVNl
YXJjaENhc2VAQ0ZpbmRJdGVtRW5naW5lQEBBQVZUUmVjdEBAQFogQCAxMDYgTk9OQU1FIDsgY2xh
c3MgVFB0ckMxNiBDV2ViQ29yZUZyYW1lQnJpZGdlOjpOZXh0UmVjb2duaXplZFRleHRGcm9tQ3Vy
c29yTChjbGFzcyBUUG9pbnQgY29uc3QgJiwgaW50IGNvbnN0ICYsIGVudW0gQ0ZpbmRJdGVtRW5n
aW5lOjpURmluZEl0ZW1TZWFyY2hDYXNlIGNvbnN0ICYsIGNsYXNzIFRSZWN0ICYpIGNvbnN0DQot
CT9OZXh0U2libGluZ0BDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkVQQVYxQFhaIEAgMTA3IE5PTkFN
RSA7IGNsYXNzIENXZWJDb3JlRnJhbWVCcmlkZ2UgKiBDV2ViQ29yZUZyYW1lQnJpZGdlOjpOZXh0
U2libGluZyh2b2lkKSBjb25zdA0KLQk/TnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3RzQENXZWJD
b3JlRnJhbWVCcmlkZ2VAQFFCRUhYWiBAIDEwOCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVGcmFtZUJy
aWRnZTo6TnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3RzKHZvaWQpIGNvbnN0DQotCT9PcGVuVVJM
QENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhBQlZURGVzQzhAQEhBQlZURGVzQzE2QEAxQUJWVERh
dGVUaW1lQEBAWiBAIDEwOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6Ok9wZW5V
UkwoY2xhc3MgVERlc0M4IGNvbnN0ICYsIGludCwgY2xhc3MgVERlc0MxNiBjb25zdCAmLCBjbGFz
cyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREYXRlVGltZSBjb25zdCAmKQ0KLQk/T3BlbmVyQENX
ZWJDb3JlRnJhbWVCcmlkZ2VAQFFCRVBBVjFAWFogQCAxMTAgTk9OQU1FIDsgY2xhc3MgQ1dlYkNv
cmVGcmFtZUJyaWRnZSAqIENXZWJDb3JlRnJhbWVCcmlkZ2U6Ok9wZW5lcih2b2lkKSBjb25zdA0K
LQk/UGFyZW50QENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFCRVBBVjFAWFogQCAxMTEgTk9OQU1FIDsg
Y2xhc3MgQ1dlYkNvcmVGcmFtZUJyaWRnZSAqIENXZWJDb3JlRnJhbWVCcmlkZ2U6OlBhcmVudCh2
b2lkKSBjb25zdA0KLQk/UGx1Z2luSGFuZGxlckBXZWJDb3JlUGx1Z2luSGFuZGxlckBAU0FQQVZN
V2ViQ29yZVBsdWdpbkhhbmRsZXJAQFhaIEAgMTEyIE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlUGx1
Z2luSGFuZGxlciAqIFdlYkNvcmVQbHVnaW5IYW5kbGVyOjpQbHVnaW5IYW5kbGVyKHZvaWQpDQot
CT9QbHVnaW5zRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCAxMTMgTk9OQU1FIDsg
aW50IENXZWJDb3JlU2V0dGluZ3M6OlBsdWdpbnNFbmFibGVkKHZvaWQpIGNvbnN0DQotCT9Qb2lu
dGVyRXZlbnRAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWFVUUG9pbnRlckV2ZW50QEBAWiBAIDEx
NCBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6OlBvaW50ZXJFdmVudChzdHJ1Y3Qg
VFBvaW50ZXJFdmVudCkNCi0JP1BvaW50ZXJFdmVudEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVY
VzRUVHlwZUBUUG9pbnRlckV2ZW50QEBBQlZUUG9pbnRAQEBaIEAgMTE1IE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVGcmFtZUJyaWRnZTo6UG9pbnRlckV2ZW50KGVudW0gVFBvaW50ZXJFdmVudDo6VFR5
cGUsIGNsYXNzIFRQb2ludCBjb25zdCAmKQ0KLQk/UHJlcGFyZUZvckV4aXRAQ1dlYkNvcmVGcmFt
ZUJyaWRnZUBAU0FYWFogQCAxMTYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpQ
cmVwYXJlRm9yRXhpdCh2b2lkKQ0KLQk/UHJldmlvdXNGcmFtZVdpdGhXcmFwQENXZWJDb3JlRnJh
bWVCcmlkZ2VAQFFCRVBBVjFASEBaIEAgMTE3IE5PTkFNRSA7IGNsYXNzIENXZWJDb3JlRnJhbWVC
cmlkZ2UgKiBDV2ViQ29yZUZyYW1lQnJpZGdlOjpQcmV2aW91c0ZyYW1lV2l0aFdyYXAoaW50KSBj
b25zdA0KLQk/UHJldmlvdXNTaWJsaW5nQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFCRVBBVjFAWFog
QCAxMTggTk9OQU1FIDsgY2xhc3MgQ1dlYkNvcmVGcmFtZUJyaWRnZSAqIENXZWJDb3JlRnJhbWVC
cmlkZ2U6OlByZXZpb3VzU2libGluZyh2b2lkKSBjb25zdA0KLQk/UHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVYWFogQCAxMTkgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUZyYW1lQnJpZGdlOjpQcm92aXNpb25hbExvYWRTdGFydGVkKHZvaWQpDQotCT9SZWFwcGx5
U3R5bGVzRm9yRGV2aWNlVHlwZUBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVYVzRUV2ViQ29yZURl
dmljZVR5cGVAQEBaIEAgMTIwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6UmVh
cHBseVN0eWxlc0ZvckRldmljZVR5cGUoZW51bSBUV2ViQ29yZURldmljZVR5cGUpDQotCT9SZWNv
Z25pemVkVGV4dFVuZGVyQ3Vyc29yTEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkU/QVZUUHRyQzE2
QEBBQlZUUG9pbnRAQEFBVlRSZWN0QEBBQVc0VEZpbmRJdGVtU2VhcmNoQ2FzZUBDRmluZEl0ZW1F
bmdpbmVAQEBaIEAgMTIxIE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVGcmFtZUJyaWRn
ZTo6UmVjb2duaXplZFRleHRVbmRlckN1cnNvckwoY2xhc3MgVFBvaW50IGNvbnN0ICYsIGNsYXNz
IFRSZWN0ICYsIGVudW0gQ0ZpbmRJdGVtRW5naW5lOjpURmluZEl0ZW1TZWFyY2hDYXNlICYpIGNv
bnN0DQotCT9SZWZlcnJlckBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkU/QVZUUHRyQzE2QEBYWiBA
IDEyMiBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlRnJhbWVCcmlkZ2U6OlJlZmVycmVy
KHZvaWQpIGNvbnN0DQotCT9SZW1vdmVDaGlsZEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVYUEFW
MUBAWiBAIDEyMyBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6OlJlbW92ZUNoaWxk
KGNsYXNzIENXZWJDb3JlRnJhbWVCcmlkZ2UgKikNCi0JP1JlbW92ZUZpbGVOYW1lQENXZWJDb3Jl
RnJhbWVCcmlkZ2VAQFFBRVhBQVZUUG9pbnRAQEBaIEAgMTI0IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVGcmFtZUJyaWRnZTo6UmVtb3ZlRmlsZU5hbWUoY2xhc3MgVFBvaW50ICYpDQotCT9SZW1vdmVG
cm9tRnJhbWVAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWFhaIEAgMTI1IE5PTkFNRSA7IHZvaWQg
Q1dlYkNvcmVGcmFtZUJyaWRnZTo6UmVtb3ZlRnJvbUZyYW1lKHZvaWQpDQotCT9SZXNvbHZlVXJs
TEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBTQVBBVkhCdWZDOEBAQUJWVERlc0M4QEAwQFogQCAxMjYg
Tk9OQU1FIDsgY2xhc3MgSEJ1ZkM4ICogQ1dlYkNvcmVGcmFtZUJyaWRnZTo6UmVzb2x2ZVVybEwo
Y2xhc3MgVERlc0M4IGNvbnN0ICYsIGNsYXNzIFREZXNDOCBjb25zdCAmKQ0KLQk/UmVzdG9yZURv
Y3VtZW50U3RhdGVAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWFhaIEAgMTI3IE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6UmVzdG9yZURvY3VtZW50U3RhdGUodm9pZCkNCi0JP1Nh
bnNTZXJpZkZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFP0FWVFB0ckMxNkBAWFogQCAx
MjggTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpTYW5zU2VyaWZGb250
RmFtaWx5KHZvaWQpIGNvbnN0DQotCT9TYXZlRG9jdW1lbnRTdGF0ZUBDV2ViQ29yZUZyYW1lQnJp
ZGdlQEBRQUVYWFogQCAxMjkgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpTYXZl
RG9jdW1lbnRTdGF0ZSh2b2lkKQ0KLQk/U2NhbGluZ0ZhY3RvckNoYW5nZWRAQ1dlYkNvcmVGcmFt
ZUJyaWRnZUBAUUFFWEhAWiBAIDEzMCBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6
OlNjYWxpbmdGYWN0b3JDaGFuZ2VkKGludCkNCi0JP1Njcm9sbE92ZXJmbG93SW5EaXJlY3Rpb25A
Q1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFSFc0VFdlYlNjcm9sbERpcmVjdGlvbkBAVzRUV2ViU2Ny
b2xsR3JhbnVsYXJpdHlAQEBaIEAgMTMxIE5PTkFNRSA7IGludCBDV2ViQ29yZUZyYW1lQnJpZGdl
OjpTY3JvbGxPdmVyZmxvd0luRGlyZWN0aW9uKGVudW0gVFdlYlNjcm9sbERpcmVjdGlvbiwgZW51
bSBUV2ViU2Nyb2xsR3JhbnVsYXJpdHkpDQotCT9TY3JvbGxUb0FuY2hvcldpdGhVUkxAQ1dlYkNv
cmVGcmFtZUJyaWRnZUBAUUFFWEFCVlREZXNDOEBAQFogQCAxMzIgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUZyYW1lQnJpZGdlOjpTY3JvbGxUb0FuY2hvcldpdGhVUkwoY2xhc3MgVERlc0M4IGNvbnN0
ICYpDQotCT9TZWFyY2hBZ2FpbkBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVIQUJWVERlc0MxNkBA
SEhIQFogQCAxMzMgTk9OQU1FIDsgaW50IENXZWJDb3JlRnJhbWVCcmlkZ2U6OlNlYXJjaEFnYWlu
KGNsYXNzIFREZXNDMTYgY29uc3QgJiwgaW50LCBpbnQsIGludCkNCi0JP1NlYXJjaEZvckBDV2Vi
Q29yZUZyYW1lQnJpZGdlQEBRQUVIQUJWVERlc0MxNkBASEhIQFogQCAxMzQgTk9OQU1FIDsgaW50
IENXZWJDb3JlRnJhbWVCcmlkZ2U6OlNlYXJjaEZvcihjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGlu
dCwgaW50LCBpbnQpDQotCT9TZWxlY3RBbGxAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWFhaIEAg
MTM1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6U2VsZWN0QWxsKHZvaWQpDQot
CT9TZWxlY3Rpb25Db2xvckBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkU/QVZUUmdiQEBYWiBAIDEz
NiBOT05BTUUgOyBjbGFzcyBUUmdiIENXZWJDb3JlRnJhbWVCcmlkZ2U6OlNlbGVjdGlvbkNvbG9y
KHZvaWQpIGNvbnN0DQotCT9TZWxlY3Rpb25HcmFudWxhcml0eUBDV2ViQ29yZUZyYW1lQnJpZGdl
QEBRQkU/QVc0V2ViQnJpZGdlU2VsZWN0aW9uR3JhbnVsYXJpdHlAQFhaIEAgMTM3IE5PTkFNRSA7
IGVudW0gV2ViQnJpZGdlU2VsZWN0aW9uR3JhbnVsYXJpdHkgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6
U2VsZWN0aW9uR3JhbnVsYXJpdHkodm9pZCkgY29uc3QNCi0JP1NlbGVjdGlvblN0YXRlQENXZWJD
b3JlRnJhbWVCcmlkZ2VAQFFCRT9BVzRXZWJTZWxlY3Rpb25TdGF0ZUBAWFogQCAxMzggTk9OQU1F
IDsgZW51bSBXZWJTZWxlY3Rpb25TdGF0ZSBDV2ViQ29yZUZyYW1lQnJpZGdlOjpTZWxlY3Rpb25T
dGF0ZSh2b2lkKSBjb25zdA0KLQk/U2VuZFJlc2l6ZUV2ZW50QENXZWJDb3JlRnJhbWVCcmlkZ2VA
QFFBRVhYWiBAIDEzOSBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6OlNlbmRSZXNp
emVFdmVudCh2b2lkKQ0KLQk/U2VuZFNjcm9sbEV2ZW50QENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFB
RVhYWiBAIDE0MCBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6OlNlbmRTY3JvbGxF
dmVudCh2b2lkKQ0KLQk/U2VyaWZGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQ
dHJDMTZAQFhaIEAgMTQxIE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6
U2VyaWZGb250RmFtaWx5KHZvaWQpIGNvbnN0DQotCT9TZXRDaGFyc2V0TEBDV2ViQ29yZVBhZ2VE
YXRhSXRlbUBAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTQyIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVQ
YWdlRGF0YUl0ZW06OlNldENoYXJzZXRMKGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldENv
bnRlbnRUeXBlTEBDV2ViQ29yZVBhZ2VEYXRhSXRlbUBAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTQz
IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVQYWdlRGF0YUl0ZW06OlNldENvbnRlbnRUeXBlTChjbGFz
cyBURGVzQzE2IGNvbnN0ICYpDQotCT9TZXRDb29raWVBZGFwdGVyQFdlYkNvcmVDb29raWVGYWN0
b3J5QEBTQVhQQVZNV2ViQ29yZUNvb2tpZUFkYXB0ZXJAQEBaIEAgMTQ0IE5PTkFNRSA7IHZvaWQg
V2ViQ29yZUNvb2tpZUZhY3Rvcnk6OlNldENvb2tpZUFkYXB0ZXIoY2xhc3MgTVdlYkNvcmVDb29r
aWVBZGFwdGVyICopDQotCT9TZXRDdXJzaXZlRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBR
QUVYQUJWVERlc0MxNkBAQFogQCAxNDUgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpT
ZXRDdXJzaXZlRm9udEZhbWlseShjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9TZXRDdXJzb3JT
ZWxlY3Rpb25AQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWEhIQFogQCAxNDYgTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpTZXRDdXJzb3JTZWxlY3Rpb24oaW50LCBpbnQpDQotCT9T
ZXREYXRhTEBDV2ViQ29yZVBhZ2VEYXRhSXRlbUBAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTQ3IE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVQYWdlRGF0YUl0ZW06OlNldERhdGFMKGNsYXNzIFREZXNDMTYg
Y29uc3QgJikNCi0JP1NldERlZmF1bHRGaXhlZEZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFB
RVhIQFogQCAxNDggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXREZWZhdWx0Rml4
ZWRGb250U2l6ZShpbnQpDQotCT9TZXREZWZhdWx0Rm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BA
UUFFWEhAWiBAIDE0OSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldERlZmF1bHRG
b250U2l6ZShpbnQpDQotCT9TZXREZWZhdWx0VGV4dEVuY29kaW5nQENXZWJDb3JlU2V0dGluZ3NA
QFFBRVhBQlZURGVzQzE2QEBAWiBAIDE1MCBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6
OlNldERlZmF1bHRUZXh0RW5jb2RpbmcoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0RGVm
ZXJzVGltZXJzQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFNBWEhAWiBAIDE1MSBOT05BTUUgOyB2b2lk
IENXZWJDb3JlRnJhbWVCcmlkZ2U6OlNldERlZmVyc1RpbWVycyhpbnQpDQotCT9TZXREcmF3c0Jh
Y2tncm91bmRAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWEhAWiBAIDE1MiBOT05BTUUgOyB2b2lk
IENXZWJDb3JlRnJhbWVCcmlkZ2U6OlNldERyYXdzQmFja2dyb3VuZChpbnQpDQotCT9TZXRGYW50
YXN5Rm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxNTMg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRGYW50YXN5Rm9udEZhbWlseShjbGFz
cyBURGVzQzE2IGNvbnN0ICYpDQotCT9TZXRGYXN0Rmlyc3REaXNwbGF5TW9kZUBDV2ViQ29yZUZy
YW1lQnJpZGdlQEBRQUVYSEBaIEAgMTU0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRn
ZTo6U2V0RmFzdEZpcnN0RGlzcGxheU1vZGUoaW50KQ0KLQk/U2V0Rml4ZWRGb250RmFtaWx5QENX
ZWJDb3JlU2V0dGluZ3NAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDE1NSBOT05BTUUgOyB2b2lkIENX
ZWJDb3JlU2V0dGluZ3M6OlNldEZpeGVkRm9udEZhbWlseShjbGFzcyBURGVzQzE2IGNvbnN0ICYp
DQotCT9TZXRGb250U2l6ZUxldmVsQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhIQFogQCAxNTYg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpTZXRGb250U2l6ZUxldmVsKGludCkN
Ci0JP1NldEZvcm1Db250cm9sVGV4dEJ5TmFtZUBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVYQUJW
VERlc0MxNkBAMEBaIEAgMTU3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6U2V0
Rm9ybUNvbnRyb2xUZXh0QnlOYW1lKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgVERlc0Mx
NiBjb25zdCAmKQ0KLQk/U2V0SGlzdG9yeVByb3ZpZGVyQFdlYkNvcmVIaXN0b3J5QEBTQVhQQVZN
V2ViQ29yZUhpc3RvcnlQcm92aWRlckBAQFogQCAxNTggTk9OQU1FIDsgdm9pZCBXZWJDb3JlSGlz
dG9yeTo6U2V0SGlzdG9yeVByb3ZpZGVyKGNsYXNzIE1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyICop
DQotCT9TZXRJblZpZXdTb3VyY2VNb2RlQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhIQFogQCAx
NTkgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpTZXRJblZpZXdTb3VyY2VNb2Rl
KGludCkNCi0JP1NldElzQWN0aXZlQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhIQFogQCAxNjAg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpTZXRJc0FjdGl2ZShpbnQpDQotCT9T
ZXRKYXZhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTYxIE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2YUVuYWJsZWQoaW50KQ0KLQk/U2V0SmF2YVNjcmlw
dENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAg
MTYyIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0SmF2YVNjcmlwdENhbk9wZW5X
aW5kb3dzQXV0b21hdGljYWxseShpbnQpDQotCT9TZXRKYXZhU2NyaXB0RW5hYmxlZEBDV2ViQ29y
ZVNldHRpbmdzQEBRQUVYSEBaIEAgMTYzIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6
U2V0SmF2YVNjcmlwdEVuYWJsZWQoaW50KQ0KLQk/U2V0TWF4QmlkaVdpZHRoQENXZWJDb3JlRnJh
bWVCcmlkZ2VAQFFBRVhIQFogQCAxNjQgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdl
OjpTZXRNYXhCaWRpV2lkdGgoaW50KQ0KLQk/U2V0TWluaW11bUZvbnRTaXplQENXZWJDb3JlU2V0
dGluZ3NAQFFBRVhIQFogQCAxNjUgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRN
aW5pbXVtRm9udFNpemUoaW50KQ0KLQk/U2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZUBDV2ViQ29y
ZVNldHRpbmdzQEBRQUVYSEBaIEAgMTY2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6
U2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZShpbnQpDQotCT9TZXROYW1lQENXZWJDb3JlRnJhbWVC
cmlkZ2VAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDE2NyBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJh
bWVCcmlkZ2U6OlNldE5hbWUoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0TmVlZHNMYXlv
dXRAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWFhaIEAgMTY4IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVGcmFtZUJyaWRnZTo6U2V0TmVlZHNMYXlvdXQodm9pZCkNCi0JP1NldE9wZW5lckBDV2ViQ29y
ZUZyYW1lQnJpZGdlQEBRQUVYUEFWMUBAWiBAIDE2OSBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJh
bWVCcmlkZ2U6OlNldE9wZW5lcihjbGFzcyBDV2ViQ29yZUZyYW1lQnJpZGdlICopDQotCT9TZXRQ
bHVnaW5zRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTcwIE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0UGx1Z2luc0VuYWJsZWQoaW50KQ0KLQk/U2V0U2Fuc1Nl
cmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxNzEg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRTYW5zU2VyaWZGb250RmFtaWx5KGNs
YXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldFNlcmlmRm9udEZhbWlseUBDV2ViQ29yZVNldHRp
bmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxNzIgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRp
bmdzOjpTZXRTZXJpZkZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0U2hv
dWxkQ3JlYXRlUmVuZGVyZXJzQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhIQFogQCAxNzMgTk9O
QU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpTZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMo
aW50KQ0KLQk/U2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0BDV2ViQ29yZVNldHRpbmdzQEBRQUVY
SEBaIEAgMTc0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2hvdWxkUHJpbnRC
YWNrZ3JvdW5kcyhpbnQpDQotCT9TZXRTdGFuZGFyZEZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5n
c0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTc1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5n
czo6U2V0U3RhbmRhcmRGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0JP1NldFRl
eHRTaXplTXVsdGlwbGllckBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVYTUBaIEAgMTc2IE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6U2V0VGV4dFNpemVNdWx0aXBsaWVyKGZsb2F0
KQ0KLQk/U2V0VXJsTEBDV2ViQ29yZVBhZ2VEYXRhSXRlbUBAUUFFWEFCVlREZXNDMTZAQEBaIEAg
MTc3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVQYWdlRGF0YUl0ZW06OlNldFVybEwoY2xhc3MgVERl
c0MxNiBjb25zdCAmKQ0KLQk/U2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkBDV2ViQ29yZVNldHRp
bmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxNzggTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRp
bmdzOjpTZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNsYXNzIFREZXNDMTYgY29uc3QgJikNCi0J
P1NldFdlYkNvcmVMb2FkZXJDb250YWluZXJAV2ViQ29yZUxvYWRlckNvbnRhaW5lckBAU0FYUEFW
TVdlYkNvcmVMb2FkZXJDb250YWluZXJAQEBaIEAgMTc5IE5PTkFNRSA7IHZvaWQgV2ViQ29yZUxv
YWRlckNvbnRhaW5lcjo6U2V0V2ViQ29yZUxvYWRlckNvbnRhaW5lcihjbGFzcyBNV2ViQ29yZUxv
YWRlckNvbnRhaW5lciAqKQ0KLQk/U2V0V2ViQ29yZVBsdWdpbkhhbmRsZXJAV2ViQ29yZVBsdWdp
bkhhbmRsZXJAQFNBWFBBVk1XZWJDb3JlUGx1Z2luSGFuZGxlckBAQFogQCAxODAgTk9OQU1FIDsg
dm9pZCBXZWJDb3JlUGx1Z2luSGFuZGxlcjo6U2V0V2ViQ29yZVBsdWdpbkhhbmRsZXIoY2xhc3Mg
TVdlYkNvcmVQbHVnaW5IYW5kbGVyICopDQotCT9TZXRXaWxsTG9hZEltYWdlc0F1dG9tYXRpY2Fs
bHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBAIDE4MSBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
U2V0dGluZ3M6OlNldFdpbGxMb2FkSW1hZ2VzQXV0b21hdGljYWxseShpbnQpDQotCT9TZXRXaW5k
b3dIYXNGb2N1c0BDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVYSEBaIEAgMTgyIE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6U2V0V2luZG93SGFzRm9jdXMoaW50KQ0KLQk/U2V0dGlu
Z3NAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFUEFWMFdlYkNvcmVAQFhaIEAgMTgzIE5PTkFNRSA7IGNs
YXNzIFdlYkNvcmU6OlNldHRpbmdzICogQ1dlYkNvcmVTZXR0aW5nczo6U2V0dGluZ3Modm9pZCkg
Y29uc3QNCi0JP1Nob3VsZENsb3NlQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFCRUhYWiBAIDE4NCBO
T05BTUUgOyBpbnQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6U2hvdWxkQ2xvc2Uodm9pZCkgY29uc3QN
Ci0JP1Nob3VsZENyZWF0ZVJlbmRlcmVyc0BDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkVIWFogQCAx
ODUgTk9OQU1FIDsgaW50IENXZWJDb3JlRnJhbWVCcmlkZ2U6OlNob3VsZENyZWF0ZVJlbmRlcmVy
cyh2b2lkKSBjb25zdA0KLQk/U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0BDV2ViQ29yZVNldHRpbmdz
QEBRQkVIWFogQCAxODYgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OlNob3VsZFByaW50
QmFja2dyb3VuZHModm9pZCkgY29uc3QNCi0JP1Nob3dpbmdGYXN0UHJldmlld0BDV2ViQ29yZUZy
YW1lQnJpZGdlQEBRQkVIWFogQCAxODcgTk9OQU1FIDsgaW50IENXZWJDb3JlRnJhbWVCcmlkZ2U6
OlNob3dpbmdGYXN0UHJldmlldyh2b2lkKSBjb25zdA0KLQk/U3RhbmRhcmRGb250RmFtaWx5QENX
ZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAgMTg4IE5PTkFNRSA7IGNsYXNzIFRQ
dHJDMTYgQ1dlYkNvcmVTZXR0aW5nczo6U3RhbmRhcmRGb250RmFtaWx5KHZvaWQpIGNvbnN0DQot
CT9TdG9wQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhYWiBAIDE4OSBOT05BTUUgOyB2b2lkIENX
ZWJDb3JlRnJhbWVCcmlkZ2U6OlN0b3Aodm9pZCkNCi0JP1N0b3BMb2FkaW5nQENXZWJDb3JlRnJh
bWVCcmlkZ2VAQFFBRVhYWiBAIDE5MCBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6
OlN0b3BMb2FkaW5nKHZvaWQpDQotCT9UYWJiZWROYXZpZ2F0aW9uQENXZWJDb3JlRnJhbWVCcmlk
Z2VAQFFBRUhXNFRXZWJOYXZEaXJlY3Rpb25AQEFBVzRUV2ViQ29yZUZvY3VzZWRFbGVtZW50VHlw
ZUBASEBaIEAgMTkxIE5PTkFNRSA7IGludCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpUYWJiZWROYXZp
Z2F0aW9uKGVudW0gVFdlYk5hdkRpcmVjdGlvbiwgZW51bSBUV2ViQ29yZUZvY3VzZWRFbGVtZW50
VHlwZSAmLCBpbnQpDQotCT9UZXh0RW5jb2RpbmdAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJFSVha
IEAgMTkyIE5PTkFNRSA7IHVuc2lnbmVkIGludCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpUZXh0RW5j
b2Rpbmcodm9pZCkgY29uc3QNCi0JP1RyYXZlcnNlTmV4dEZyYW1lU3RheVdpdGhpbkBDV2ViQ29y
ZUZyYW1lQnJpZGdlQEBRQkVQQVYxQFBCVjFAQFogQCAxOTMgTk9OQU1FIDsgY2xhc3MgQ1dlYkNv
cmVGcmFtZUJyaWRnZSAqIENXZWJDb3JlRnJhbWVCcmlkZ2U6OlRyYXZlcnNlTmV4dEZyYW1lU3Rh
eVdpdGhpbihjbGFzcyBDV2ViQ29yZUZyYW1lQnJpZGdlIGNvbnN0ICopIGNvbnN0DQotCT9VUkxA
Q1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJFP0FWVFB0ckM4QEBYWiBAIDE5NCBOT05BTUUgOyBjbGFz
cyBUUHRyQzggQ1dlYkNvcmVGcmFtZUJyaWRnZTo6VVJMKHZvaWQpIGNvbnN0DQotCT9Vc2VyU3R5
bGVTaGVldExvY2F0aW9uQENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDOEBAWFogQCAxOTUg
Tk9OQU1FIDsgY2xhc3MgVFB0ckM4IENXZWJDb3JlU2V0dGluZ3M6OlVzZXJTdHlsZVNoZWV0TG9j
YXRpb24odm9pZCkgY29uc3QNCi0JP1dpbGxMb2FkSW1hZ2VzQXV0b21hdGljYWxseUBDV2ViQ29y
ZVNldHRpbmdzQEBRQkVIWFogQCAxOTYgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6Oldp
bGxMb2FkSW1hZ2VzQXV0b21hdGljYWxseSh2b2lkKSBjb25zdA0KLQk/V2luZG93U2NyaXB0TlBP
YmplY3RAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFUEFWTlBPYmplY3RAQFhaIEAgMTk3IE5PTkFN
RSA7IGNsYXNzIE5QT2JqZWN0ICogQ1dlYkNvcmVGcmFtZUJyaWRnZTo6V2luZG93U2NyaXB0TlBP
YmplY3Qodm9pZCkNCi0JP2Nsb3NlU2hhcmVkRGF0YWJhc2VAQ1dlYkNvcmVJY29uRGF0YWJhc2VC
cmlkZ2VAQFFBRVhYWiBAIDE5OCBOT05BTUUgOyB2b2lkIENXZWJDb3JlSWNvbkRhdGFiYXNlQnJp
ZGdlOjpjbG9zZVNoYXJlZERhdGFiYXNlKHZvaWQpDQotCT9kZWZhdWx0RGF0YWJhc2VGaWxlbmFt
ZUBDV2ViQ29yZUljb25EYXRhYmFzZUJyaWRnZUBAUUFFP0FWVFB0ckMxNkBAWFogQCAxOTkgTk9O
QU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZUljb25EYXRhYmFzZUJyaWRnZTo6ZGVmYXVsdERh
dGFiYXNlRmlsZW5hbWUodm9pZCkNCi0JP2RlZmF1bHRJY29uV2l0aFNpemVAQ1dlYkNvcmVJY29u
RGF0YWJhc2VCcmlkZ2VAQFFBRVBCVkNGYnNCaXRtYXBAQFZUU2l6ZUBAQFogQCAyMDAgTk9OQU1F
IDsgY2xhc3MgQ0Zic0JpdG1hcCBjb25zdCAqIENXZWJDb3JlSWNvbkRhdGFiYXNlQnJpZGdlOjpk
ZWZhdWx0SWNvbldpdGhTaXplKGNsYXNzIFRTaXplKQ0KLQk/Z2V0TnVtYmVyQEpTVmFsdWVAS0pT
QEBRQkVfTkFBTkBaIEAgMjAxIE5PTkFNRSA7IGJvb2wgS0pTOjpKU1ZhbHVlOjpnZXROdW1iZXIo
ZG91YmxlICYpIGNvbnN0DQotCT9oYXNFbnRyeUZvckljb25VUkxAQ1dlYkNvcmVJY29uRGF0YWJh
c2VCcmlkZ2VAQFFBRUhBQlZURGVzQzhAQEBaIEAgMjAyIE5PTkFNRSA7IGludCBDV2ViQ29yZUlj
b25EYXRhYmFzZUJyaWRnZTo6aGFzRW50cnlGb3JJY29uVVJMKGNsYXNzIFREZXNDOCBjb25zdCAm
KQ0KLQk/aWNvbkZvclBhZ2VVUkxAQ1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2VAQFFBRVBBVkNH
dWxJY29uQEBBQlZURGVzQzhAQFZUU2l6ZUBAQFogQCAyMDMgTk9OQU1FIDsgY2xhc3MgQ0d1bElj
b24gKiBDV2ViQ29yZUljb25EYXRhYmFzZUJyaWRnZTo6aWNvbkZvclBhZ2VVUkwoY2xhc3MgVERl
c0M4IGNvbnN0ICYsIGNsYXNzIFRTaXplKQ0KLQk/aWNvblVSTEZvclBhZ2VVUkxAQ1dlYkNvcmVJ
Y29uRGF0YWJhc2VCcmlkZ2VAQFFBRT9BVlRQdHJDMTZAQEFCVlREZXNDOEBAQFogQCAyMDQgTk9O
QU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZUljb25EYXRhYmFzZUJyaWRnZTo6aWNvblVSTEZv
clBhZ2VVUkwoY2xhc3MgVERlc0M4IGNvbnN0ICYpDQotCT9pbnRlcmNlcHRLZXlFdmVudEBDV2Vi
Q29yZUZyYW1lQnJpZGdlQEBRQUVIQUFVVEtleUV2ZW50QEBXNFRFdmVudENvZGVAQEBaIEAgMjA1
IE5PTkFNRSA7IGludCBDV2ViQ29yZUZyYW1lQnJpZGdlOjppbnRlcmNlcHRLZXlFdmVudChzdHJ1
Y3QgVEtleUV2ZW50ICYsIGVudW0gVEV2ZW50Q29kZSkNCi0JP2lzRW1wdHlAQ1dlYkNvcmVJY29u
RGF0YWJhc2VCcmlkZ2VAQFFBRUhYWiBAIDIwNiBOT05BTUUgOyBpbnQgQ1dlYkNvcmVJY29uRGF0
YWJhc2VCcmlkZ2U6OmlzRW1wdHkodm9pZCkNCi0JP2lzRW5hYmxlZEBDV2ViQ29yZUljb25EYXRh
YmFzZUJyaWRnZUBAUUFFSFhaIEAgMjA3IE5PTkFNRSA7IGludCBDV2ViQ29yZUljb25EYXRhYmFz
ZUJyaWRnZTo6aXNFbmFibGVkKHZvaWQpDQotCT9pc0ljb25FeHBpcmVkRm9ySWNvblVSTEBDV2Vi
Q29yZUljb25EYXRhYmFzZUJyaWRnZUBAUUFFSEFCVlREZXNDOEBAQFogQCAyMDggTk9OQU1FIDsg
aW50IENXZWJDb3JlSWNvbkRhdGFiYXNlQnJpZGdlOjppc0ljb25FeHBpcmVkRm9ySWNvblVSTChj
bGFzcyBURGVzQzggY29uc3QgJikNCi0JP2lzT3BlbkBDV2ViQ29yZUljb25EYXRhYmFzZUJyaWRn
ZUBAUUFFSFhaIEAgMjA5IE5PTkFNRSA7IGludCBDV2ViQ29yZUljb25EYXRhYmFzZUJyaWRnZTo6
aXNPcGVuKHZvaWQpDQotCT9vcGVuU2hhcmVkRGF0YWJhc2VXaXRoUGF0aEBDV2ViQ29yZUljb25E
YXRhYmFzZUJyaWRnZUBAUUFFSEFBVlREZXNDMTZAQEBaIEAgMjEwIE5PTkFNRSA7IGludCBDV2Vi
Q29yZUljb25EYXRhYmFzZUJyaWRnZTo6b3BlblNoYXJlZERhdGFiYXNlV2l0aFBhdGgoY2xhc3Mg
VERlc0MxNiAmKQ0KLQk/cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEBDV2ViQ29yZUljb25EYXRhYmFz
ZUJyaWRnZUBAUUFFSFhaIEAgMjExIE5PTkFNRSA7IGludCBDV2ViQ29yZUljb25EYXRhYmFzZUJy
aWRnZTo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCh2b2lkKQ0KLQk/cmVsZWFzZUljb25Gb3JVUkxA
Q1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2VAQFFBRVhBQlZURGVzQzhAQEBaIEAgMjEyIE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2U6OnJlbGVhc2VJY29uRm9yVVJMKGNs
YXNzIFREZXNDOCBjb25zdCAmKQ0KLQk/cmVtb3ZlQWxsSWNvbnNAQ1dlYkNvcmVJY29uRGF0YWJh
c2VCcmlkZ2VAQFFBRVhYWiBAIDIxMyBOT05BTUUgOyB2b2lkIENXZWJDb3JlSWNvbkRhdGFiYXNl
QnJpZGdlOjpyZW1vdmVBbGxJY29ucyh2b2lkKQ0KLQk/cmV0YWluSWNvbkZvclVSTEBDV2ViQ29y
ZUljb25EYXRhYmFzZUJyaWRnZUBAUUFFWEFCVlREZXNDOEBAQFogQCAyMTQgTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZUljb25EYXRhYmFzZUJyaWRnZTo6cmV0YWluSWNvbkZvclVSTChjbGFzcyBURGVz
QzggY29uc3QgJikNCi0JP3NldEVuYWJsZWRAQ1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2VAQFFB
RVhIQFogQCAyMTUgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUljb25EYXRhYmFzZUJyaWRnZTo6c2V0
RW5hYmxlZChpbnQpDQotCT9zZXRIYXZlTm9JY29uRm9ySWNvblVSTEBDV2ViQ29yZUljb25EYXRh
YmFzZUJyaWRnZUBAUUFFWEFCVlREZXNDOEBAQFogQCAyMTYgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUljb25EYXRhYmFzZUJyaWRnZTo6c2V0SGF2ZU5vSWNvbkZvckljb25VUkwoY2xhc3MgVERlc0M4
IGNvbnN0ICYpDQotCT9zZXRJY29uRGF0YUBDV2ViQ29yZUljb25EYXRhYmFzZUJyaWRnZUBAUUFF
WEFCVlREZXNDOEBAMEBaIEAgMjE3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVJY29uRGF0YWJhc2VC
cmlkZ2U6OnNldEljb25EYXRhKGNsYXNzIFREZXNDOCBjb25zdCAmLCBjbGFzcyBURGVzQzggY29u
c3QgJikNCi0JP3NldEljb25VUkxAQ1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2VAQFFBRUhBQlZU
RGVzQzhAQDBAWiBAIDIxOCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2U6
OnNldEljb25VUkwoY2xhc3MgVERlc0M4IGNvbnN0ICYsIGNsYXNzIFREZXNDOCBjb25zdCAmKQ0K
LQk/c2V0TWFpbkZyYW1lQENXZWJDb3JlUGFnZUJyaWRnZUBAUUFFWFBBVkNXZWJDb3JlRnJhbWVC
cmlkZ2VAQEBaIEAgMjE5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVQYWdlQnJpZGdlOjpzZXRNYWlu
RnJhbWUoY2xhc3MgQ1dlYkNvcmVGcmFtZUJyaWRnZSAqKQ0KLQk/c2V0UHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZEBDV2ViQ29yZUljb25EYXRhYmFzZUJyaWRnZUBAUUFFWEhAWiBAIDIyMCBOT05BTUUg
OyB2b2lkIENXZWJDb3JlSWNvbkRhdGFiYXNlQnJpZGdlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKGludCkNCi0JP3NoYXJlZEluc3RhbmNlQENXZWJDb3JlSWNvbkRhdGFiYXNlQnJpZGdlQEBT
QVBBVjFAWFogQCAyMjEgTk9OQU1FIDsgY2xhc3MgQ1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2Ug
KiBDV2ViQ29yZUljb25EYXRhYmFzZUJyaWRnZTo6c2hhcmVkSW5zdGFuY2Uodm9pZCkNCisJP0Ry
YXdpbmdEaXNhYmxlZEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkVIWFogQCA0NyBOT05BTUUgOyBp
bnQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6RHJhd2luZ0Rpc2FibGVkKHZvaWQpIGNvbnN0DQorCT9F
ZGl0YWJsZVBvc2l0aW9uVG9Qb2ludEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkU/QVZUUG9pbnRA
QEhAWiBAIDQ4IE5PTkFNRSA7IGNsYXNzIFRQb2ludCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpFZGl0
YWJsZVBvc2l0aW9uVG9Qb2ludChpbnQpIGNvbnN0DQorCT9FbmRAQ1dlYkNvcmVGcmFtZUJyaWRn
ZUBAUUFFWFhaIEAgNDkgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpFbmQodm9p
ZCkNCisJP0V4ZWN1dGVTY3JpcHRAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWEFCVlREZXNDOEBA
QFogQCA1MCBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6OkV4ZWN1dGVTY3JpcHQo
Y2xhc3MgVERlc0M4IGNvbnN0ICYpDQorCT9GYW50YXN5Rm9udEZhbWlseUBDV2ViQ29yZVNldHRp
bmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDUxIE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNv
cmVTZXR0aW5nczo6RmFudGFzeUZvbnRGYW1pbHkodm9pZCkgY29uc3QNCisJP0Zhc3RGaXJzdERp
c3BsYXlNb2RlQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFCRUhYWiBAIDUyIE5PTkFNRSA7IGludCBD
V2ViQ29yZUZyYW1lQnJpZGdlOjpGYXN0Rmlyc3REaXNwbGF5TW9kZSh2b2lkKSBjb25zdA0KKwk/
RmluZEZyYW1lTmFtZWRAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJFUEFWMUBBQlZURGVzQzE2QEBA
WiBAIDUzIE5PTkFNRSA7IGNsYXNzIENXZWJDb3JlRnJhbWVCcmlkZ2UgKiBDV2ViQ29yZUZyYW1l
QnJpZGdlOjpGaW5kRnJhbWVOYW1lZChjbGFzcyBURGVzQzE2IGNvbnN0ICYpIGNvbnN0DQorCT9G
aW5kTGlua3NPZlR5cGVAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQEFBVj8k
UkFycmF5QFVUV2ViQ29yZUxpbmtJdGVtQEBAQEBaIEAgNTQgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUZyYW1lQnJpZGdlOjpGaW5kTGlua3NPZlR5cGUoY2xhc3MgVERlc0MxNiBjb25zdCAmLCBjbGFz
cyBSQXJyYXk8c3RydWN0IFRXZWJDb3JlTGlua0l0ZW0+ICYpDQorCT9GaXJzdENoaWxkQENXZWJD
b3JlRnJhbWVCcmlkZ2VAQFFCRVBBVjFAWFogQCA1NSBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUZy
YW1lQnJpZGdlICogQ1dlYkNvcmVGcmFtZUJyaWRnZTo6Rmlyc3RDaGlsZCh2b2lkKSBjb25zdA0K
Kwk/Rml4ZWRGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9BVlRQdHJDMTZAQFhaIEAg
NTYgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZVNldHRpbmdzOjpGaXhlZEZvbnRGYW1p
bHkodm9pZCkgY29uc3QNCisJP0ZvcmNlTGF5b3V0QWRqdXN0aW5nVmlld1NpemVAQ1dlYkNvcmVG
cmFtZUJyaWRnZUBAUUFFWEhAWiBAIDU3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRn
ZTo6Rm9yY2VMYXlvdXRBZGp1c3RpbmdWaWV3U2l6ZShpbnQpDQorCT9Gb3JjZUxheW91dFdpdGhN
aW5pbXVtUGFnZVdpZHRoQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhISEhAWiBAIDU4IE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6Rm9yY2VMYXlvdXRXaXRoTWluaW11bVBhZ2VX
aWR0aChpbnQsIGludCwgaW50KQ0KKwk/Rm9yd2FyZERlbGV0ZUtleVByZXNzZWRXaXRoU21hcnRE
ZWxldGVAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWEhXNFdlYkJyaWRnZVNlbGVjdGlvbkdyYW51
bGFyaXR5QEBAWiBAIDU5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6Rm9yd2Fy
ZERlbGV0ZUtleVByZXNzZWRXaXRoU21hcnREZWxldGUoaW50LCBlbnVtIFdlYkJyaWRnZVNlbGVj
dGlvbkdyYW51bGFyaXR5KQ0KKwk/R2V0Q3Vyc29yU2VsZWN0aW9uQENXZWJDb3JlRnJhbWVCcmlk
Z2VAQFFCRUhBQUgwQFogQCA2MCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6R2V0
Q3Vyc29yU2VsZWN0aW9uKGludCAmLCBpbnQgJikgY29uc3QNCisJP0dldEVkaXRhYmxlVGV4dEBD
V2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVYQUFWVERlczE2QEBISEBaIEAgNjEgTk9OQU1FIDsgdm9p
ZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpHZXRFZGl0YWJsZVRleHQoY2xhc3MgVERlczE2ICYsIGlu
dCwgaW50KQ0KKwk/R2V0UGFnZURhdGFMQ0BDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVQQVY/JENB
cnJheVB0ckBWQ1dlYkNvcmVQYWdlRGF0YUl0ZW1AQEBASEBaIEAgNjIgTk9OQU1FIDsgY2xhc3Mg
Q0FycmF5UHRyPGNsYXNzIENXZWJDb3JlUGFnZURhdGFJdGVtPiAqIENXZWJDb3JlRnJhbWVCcmlk
Z2U6OkdldFBhZ2VEYXRhTEMoaW50KQ0KKwk/R2V0VGV4dENvbnRlbnRMQENXZWJDb3JlRnJhbWVC
cmlkZ2VAQFFBRVBBVkhCdWZDMTZAQFhaIEAgNjMgTk9OQU1FIDsgY2xhc3MgSEJ1ZkMxNiAqIENX
ZWJDb3JlRnJhbWVCcmlkZ2U6OkdldFRleHRDb250ZW50TCh2b2lkKQ0KKwk/R2V0VXJsT2ZOb2Rl
SW5Gb2N1c0xAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJFUEFWSEJ1ZkMxNkBAQUFWVFBvaW50QEBA
WiBAIDY0IE5PTkFNRSA7IGNsYXNzIEhCdWZDMTYgKiBDV2ViQ29yZUZyYW1lQnJpZGdlOjpHZXRV
cmxPZk5vZGVJbkZvY3VzTChjbGFzcyBUUG9pbnQgJikgY29uc3QNCisJP0hhbmRsZUZhbGxiYWNr
Q29udGVudEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVYWFogQCA2NSBOT05BTUUgOyB2b2lkIENX
ZWJDb3JlRnJhbWVCcmlkZ2U6OkhhbmRsZUZhbGxiYWNrQ29udGVudCh2b2lkKQ0KKwk/SGFzUGVu
ZGluZ0xheW91dEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkVIWFogQCA2NiBOT05BTUUgOyBpbnQg
Q1dlYkNvcmVGcmFtZUJyaWRnZTo6SGFzUGVuZGluZ0xheW91dCh2b2lkKSBjb25zdA0KKwk/SGlz
dG9yeVByb3ZpZGVyQFdlYkNvcmVIaXN0b3J5QEBTQVBBVk1XZWJDb3JlSGlzdG9yeVByb3ZpZGVy
QEBYWiBAIDY3IE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlSGlzdG9yeVByb3ZpZGVyICogV2ViQ29y
ZUhpc3Rvcnk6Okhpc3RvcnlQcm92aWRlcih2b2lkKQ0KKwk/SW1hZ2VDb3VudEBDV2ViQ29yZUZy
YW1lQnJpZGdlQEBRQUVISEBaIEAgNjggTk9OQU1FIDsgaW50IENXZWJDb3JlRnJhbWVCcmlkZ2U6
OkltYWdlQ291bnQoaW50KQ0KKwk/SW1hZ2VzSW5SZWN0TENAQ1dlYkNvcmVGcmFtZUJyaWRnZUBA
UUFFUEFWPyRDQXJyYXlGaXhGbGF0QFVUV2ViQ29yZUltYWdlQ2FycmllckBAQEBIQFogQCA2OSBO
T05BTUUgOyBjbGFzcyBDQXJyYXlGaXhGbGF0PHN0cnVjdCBUV2ViQ29yZUltYWdlQ2Fycmllcj4g
KiBDV2ViQ29yZUZyYW1lQnJpZGdlOjpJbWFnZXNJblJlY3RMQyhpbnQpDQorCT9JblZpZXdTb3Vy
Y2VNb2RlQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFCRUhYWiBAIDcwIE5PTkFNRSA7IGludCBDV2Vi
Q29yZUZyYW1lQnJpZGdlOjpJblZpZXdTb3VyY2VNb2RlKHZvaWQpIGNvbnN0DQorCT9Jbml0aWFs
aXplU2V0dGluZ3NAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWEFCVkNXZWJDb3JlU2V0dGluZ3NA
QEBaIEAgNzEgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpJbml0aWFsaXplU2V0
dGluZ3MoY2xhc3MgQ1dlYkNvcmVTZXR0aW5ncyBjb25zdCAmKQ0KKwk/SW5zZXJ0TGluZUJyZWFr
QENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhYWiBAIDcyIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVG
cmFtZUJyaWRnZTo6SW5zZXJ0TGluZUJyZWFrKHZvaWQpDQorCT9JbnNlcnRQYXJhZ3JhcGhTZXBh
cmF0b3JAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWFhaIEAgNzMgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUZyYW1lQnJpZGdlOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3Iodm9pZCkNCisJP0luc2Vy
dFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBR
QUVYWFogQCA3NCBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6Okluc2VydFBhcmFn
cmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCh2b2lkKQ0KKwk/SW5zZXJ0VGV4dEBDV2ViQ29y
ZUZyYW1lQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBASEBaIEAgNzUgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUZyYW1lQnJpZGdlOjpJbnNlcnRUZXh0KGNsYXNzIFREZXNDMTYgY29uc3QgJiwgaW50KQ0K
Kwk/SW5zZXJ0VW5jb21taXRlZFRleHRAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWEFCVlREZXND
MTZAQEBaIEAgNzYgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpJbnNlcnRVbmNv
bW1pdGVkVGV4dChjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorCT9JbnN0YWxsSW5GcmFtZUBDV2Vi
Q29yZUZyYW1lQnJpZGdlQEBRQUVYQUFWTVdlYkNvcmVTY3JvbGxWaWV3QEBAWiBAIDc3IE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6SW5zdGFsbEluRnJhbWUoY2xhc3MgTVdlYkNv
cmVTY3JvbGxWaWV3ICYpDQorCT9Jc0Rlc2NlbmRhbnRPZkZyYW1lQENXZWJDb3JlRnJhbWVCcmlk
Z2VAQFFCRUhQQlYxQEBaIEAgNzggTk9OQU1FIDsgaW50IENXZWJDb3JlRnJhbWVCcmlkZ2U6Oklz
RGVzY2VuZGFudE9mRnJhbWUoY2xhc3MgQ1dlYkNvcmVGcmFtZUJyaWRnZSBjb25zdCAqKSBjb25z
dA0KKwk/SXNFZGl0YWJsZVNpbmdsZUxpbmVAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJFSFhaIEAg
NzkgTk9OQU1FIDsgaW50IENXZWJDb3JlRnJhbWVCcmlkZ2U6OklzRWRpdGFibGVTaW5nbGVMaW5l
KHZvaWQpIGNvbnN0DQorCT9Jc0ZyYW1lU2V0QENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFCRUhYWiBA
IDgwIE5PTkFNRSA7IGludCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpJc0ZyYW1lU2V0KHZvaWQpIGNv
bnN0DQorCT9Jc1NlbGVjdGlvbkVkaXRhYmxlQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFCRUhYWiBA
IDgxIE5PTkFNRSA7IGludCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpJc1NlbGVjdGlvbkVkaXRhYmxl
KHZvaWQpIGNvbnN0DQorCT9Jc1NlbGVjdGlvbkVuZE9mRWRpdGFibGVDb250ZW50QENXZWJDb3Jl
RnJhbWVCcmlkZ2VAQFFCRUhYWiBAIDgyIE5PTkFNRSA7IGludCBDV2ViQ29yZUZyYW1lQnJpZGdl
OjpJc1NlbGVjdGlvbkVuZE9mRWRpdGFibGVDb250ZW50KHZvaWQpIGNvbnN0DQorCT9Jc1NlbGVj
dGlvbkluUGFzc3dvcmRGaWVsZEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkVIWFogQCA4MyBOT05B
TUUgOyBpbnQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6SXNTZWxlY3Rpb25JblBhc3N3b3JkRmllbGQo
dm9pZCkgY29uc3QNCisJP0lzU2VsZWN0aW9uUmljaGx5RWRpdGFibGVAQ1dlYkNvcmVGcmFtZUJy
aWRnZUBAUUJFSFhaIEAgODQgTk9OQU1FIDsgaW50IENXZWJDb3JlRnJhbWVCcmlkZ2U6OklzU2Vs
ZWN0aW9uUmljaGx5RWRpdGFibGUodm9pZCkgY29uc3QNCisJP0lzU2VsZWN0aW9uU3RhcnRPZkVk
aXRhYmxlQ29udGVudEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkVIWFogQCA4NSBOT05BTUUgOyBp
bnQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6SXNTZWxlY3Rpb25TdGFydE9mRWRpdGFibGVDb250ZW50
KHZvaWQpIGNvbnN0DQorCT9KYXZhRW5hYmxlZEBDV2ViQ29yZVNldHRpbmdzQEBRQkVIWFogQCA4
NiBOT05BTUUgOyBpbnQgQ1dlYkNvcmVTZXR0aW5nczo6SmF2YUVuYWJsZWQodm9pZCkgY29uc3QN
CisJP0phdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlAQ1dlYkNvcmVTZXR0aW5n
c0BAUUJFSFhaIEAgODcgTk9OQU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6OkphdmFTY3JpcHRD
YW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkodm9pZCkgY29uc3QNCisJP0phdmFTY3JpcHRFbmFi
bGVkQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDg4IE5PTkFNRSA7IGludCBDV2ViQ29yZVNl
dHRpbmdzOjpKYXZhU2NyaXB0RW5hYmxlZCh2b2lkKSBjb25zdA0KKwk/SnVtcFRvU2VsZWN0aW9u
QENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhYWiBAIDg5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVG
cmFtZUJyaWRnZTo6SnVtcFRvU2VsZWN0aW9uKHZvaWQpDQorCT9LZXlFdmVudEBDV2ViQ29yZUZy
YW1lQnJpZGdlQEBRQUVIVVRLZXlFdmVudEBASEBaIEAgOTAgTk9OQU1FIDsgaW50IENXZWJDb3Jl
RnJhbWVCcmlkZ2U6OktleUV2ZW50KHN0cnVjdCBUS2V5RXZlbnQsIGludCkNCisJP0xhc3RDaGls
ZEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkVQQVYxQFhaIEAgOTEgTk9OQU1FIDsgY2xhc3MgQ1dl
YkNvcmVGcmFtZUJyaWRnZSAqIENXZWJDb3JlRnJhbWVCcmlkZ2U6Okxhc3RDaGlsZCh2b2lkKSBj
b25zdA0KKwk/TG9hZEltYWdlc0BDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVYWFogQCA5MiBOT05B
TUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6OkxvYWRJbWFnZXModm9pZCkNCisJP0xvYWRl
ckNvbnRhaW5lckBXZWJDb3JlTG9hZGVyQ29udGFpbmVyQEBTQVBBVk1XZWJDb3JlTG9hZGVyQ29u
dGFpbmVyQEBYWiBAIDkzIE5PTkFNRSA7IGNsYXNzIE1XZWJDb3JlTG9hZGVyQ29udGFpbmVyICog
V2ViQ29yZUxvYWRlckNvbnRhaW5lcjo6TG9hZGVyQ29udGFpbmVyKHZvaWQpDQorCT9NYXhpbXVt
RWRpdGFibGVMZW5ndGhAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJFSFhaIEAgOTQgTk9OQU1FIDsg
aW50IENXZWJDb3JlRnJhbWVCcmlkZ2U6Ok1heGltdW1FZGl0YWJsZUxlbmd0aCh2b2lkKSBjb25z
dA0KKwk/TWluaW11bUZvbnRTaXplQENXZWJDb3JlU2V0dGluZ3NAQFFCRUhYWiBAIDk1IE5PTkFN
RSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpNaW5pbXVtRm9udFNpemUodm9pZCkgY29uc3QNCisJ
P01pbmltdW1Mb2dpY2FsRm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgOTYgTk9O
QU1FIDsgaW50IENXZWJDb3JlU2V0dGluZ3M6Ok1pbmltdW1Mb2dpY2FsRm9udFNpemUodm9pZCkg
Y29uc3QNCisJP05hbWVAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJFP0FWVFB0ckMxNkBAWFogQCA5
NyBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlRnJhbWVCcmlkZ2U6Ok5hbWUodm9pZCkg
Y29uc3QNCisJP05hdmlnYWJsZU5vZGVVbmRlckN1cnNvckBDV2ViQ29yZUZyYW1lQnJpZGdlQEBR
QkVIQUFWVFBvaW50QEBBQVc0VFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGVAQEFBVlRSZWN0QEBA
WiBAIDk4IE5PTkFNRSA7IGludCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpOYXZpZ2FibGVOb2RlVW5k
ZXJDdXJzb3IoY2xhc3MgVFBvaW50ICYsIGVudW0gVFdlYkNvcmVGb2N1c2VkRWxlbWVudFR5cGUg
JiwgY2xhc3MgVFJlY3QgJikgY29uc3QNCisJP05lZWRzTGF5b3V0QENXZWJDb3JlRnJhbWVCcmlk
Z2VAQFFCRUhYWiBAIDk5IE5PTkFNRSA7IGludCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpOZWVkc0xh
eW91dCh2b2lkKSBjb25zdA0KKwk/TmV3TEBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dEBAU0FQQVYx
QEFBVkNGYnNCaXRHY0BAUEFWQ0Zic0JpdG1hcEBAUEFWTVdlYkNvcmVTY3JvbGxWaWV3QEBAWiBA
IDEwMCBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCAqIENXZWJDb3JlR3Jh
cGhpY3NDb250ZXh0OjpOZXdMKGNsYXNzIENGYnNCaXRHYyAmLCBjbGFzcyBDRmJzQml0bWFwICos
IGNsYXNzIE1XZWJDb3JlU2Nyb2xsVmlldyAqKQ0KKwk/TmV3TEBDV2ViQ29yZUdyYXBoaWNzQ29u
dGV4dEBAU0FQQVYxQFBBVkNGYnNCaXRtYXBEZXZpY2VAQFBBVkNGYnNCaXRtYXBAQFBBVk1XZWJD
b3JlU2Nyb2xsVmlld0BAQFogQCAxMDEgTk9OQU1FIDsgY2xhc3MgQ1dlYkNvcmVHcmFwaGljc0Nv
bnRleHQgKiBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dDo6TmV3TChjbGFzcyBDRmJzQml0bWFwRGV2
aWNlICosIGNsYXNzIENGYnNCaXRtYXAgKiwgY2xhc3MgTVdlYkNvcmVTY3JvbGxWaWV3ICopDQor
CT9OZXdMQENXZWJDb3JlUGFnZURhdGFJdGVtQEBTQVBBVjFAVzRUUGFnZURhdGFJdGVtVHlwZUAx
QEBaIEAgMTAyIE5PTkFNRSA7IGNsYXNzIENXZWJDb3JlUGFnZURhdGFJdGVtICogQ1dlYkNvcmVQ
YWdlRGF0YUl0ZW06Ok5ld0woZW51bSBDV2ViQ29yZVBhZ2VEYXRhSXRlbTo6VFBhZ2VEYXRhSXRl
bVR5cGUpDQorCT9OZXdMQENXZWJDb3JlU2V0dGluZ3NAQFNBUEFWMUBYWiBAIDEwMyBOT05BTUUg
OyBjbGFzcyBDV2ViQ29yZVNldHRpbmdzICogQ1dlYkNvcmVTZXR0aW5nczo6TmV3TCh2b2lkKQ0K
Kwk/TmV3TWFpbkZyYW1lV2l0aFBhZ2VMQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFNBUEFWMUBBQVZN
V2ViQ29yZUZyYW1lQ2FsbGJhY2tAQEFBVkNXZWJDb3JlUGFnZUJyaWRnZUBAQFogQCAxMDQgTk9O
QU1FIDsgY2xhc3MgQ1dlYkNvcmVGcmFtZUJyaWRnZSAqIENXZWJDb3JlRnJhbWVCcmlkZ2U6Ok5l
d01haW5GcmFtZVdpdGhQYWdlTChjbGFzcyBNV2ViQ29yZUZyYW1lQ2FsbGJhY2sgJiwgY2xhc3Mg
Q1dlYkNvcmVQYWdlQnJpZGdlICYpDQorCT9OZXdTdWJmcmFtZVdpdGhPd25lckVsZW1lbnRMQENX
ZWJDb3JlRnJhbWVCcmlkZ2VAQFNBUEFWMUBBQVZNV2ViQ29yZUZyYW1lQ2FsbGJhY2tAQEFBVkVs
ZW1lbnRAV2ViQ29yZUBAQFogQCAxMDUgTk9OQU1FIDsgY2xhc3MgQ1dlYkNvcmVGcmFtZUJyaWRn
ZSAqIENXZWJDb3JlRnJhbWVCcmlkZ2U6Ok5ld1N1YmZyYW1lV2l0aE93bmVyRWxlbWVudEwoY2xh
c3MgTVdlYkNvcmVGcmFtZUNhbGxiYWNrICYsIGNsYXNzIFdlYkNvcmU6OkVsZW1lbnQgJikNCisJ
P05leHRGcmFtZVdpdGhXcmFwQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFCRVBBVjFASEBaIEAgMTA2
IE5PTkFNRSA7IGNsYXNzIENXZWJDb3JlRnJhbWVCcmlkZ2UgKiBDV2ViQ29yZUZyYW1lQnJpZGdl
OjpOZXh0RnJhbWVXaXRoV3JhcChpbnQpIGNvbnN0DQorCT9OZXh0UmVjb2duaXplZFRleHRGcm9t
Q3Vyc29yTEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkU/QVZUUHRyQzE2QEBBQlZUUG9pbnRAQEFC
SEFCVzRURmluZEl0ZW1TZWFyY2hDYXNlQENGaW5kSXRlbUVuZ2luZUBAQUFWVFJlY3RAQEBaIEAg
MTA3IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6TmV4dFJlY29n
bml6ZWRUZXh0RnJvbUN1cnNvckwoY2xhc3MgVFBvaW50IGNvbnN0ICYsIGludCBjb25zdCAmLCBl
bnVtIENGaW5kSXRlbUVuZ2luZTo6VEZpbmRJdGVtU2VhcmNoQ2FzZSBjb25zdCAmLCBjbGFzcyBU
UmVjdCAmKSBjb25zdA0KKwk/TmV4dFNpYmxpbmdAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJFUEFW
MUBYWiBAIDEwOCBOT05BTUUgOyBjbGFzcyBDV2ViQ29yZUZyYW1lQnJpZGdlICogQ1dlYkNvcmVG
cmFtZUJyaWRnZTo6TmV4dFNpYmxpbmcodm9pZCkgY29uc3QNCisJP051bVBlbmRpbmdPckxvYWRp
bmdSZXF1ZXN0c0BDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkVIWFogQCAxMDkgTk9OQU1FIDsgaW50
IENXZWJDb3JlRnJhbWVCcmlkZ2U6Ok51bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0cyh2b2lkKSBj
b25zdA0KKwk/T3BlblVSTEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVYQUJWVERlc0M4QEBIQUJW
VERlc0MxNkBAMUFCVlREYXRlVGltZUBAQFogQCAxMTAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZy
YW1lQnJpZGdlOjpPcGVuVVJMKGNsYXNzIFREZXNDOCBjb25zdCAmLCBpbnQsIGNsYXNzIFREZXND
MTYgY29uc3QgJiwgY2xhc3MgVERlc0MxNiBjb25zdCAmLCBjbGFzcyBURGF0ZVRpbWUgY29uc3Qg
JikNCisJP09wZW5lckBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkVQQVYxQFhaIEAgMTExIE5PTkFN
RSA7IGNsYXNzIENXZWJDb3JlRnJhbWVCcmlkZ2UgKiBDV2ViQ29yZUZyYW1lQnJpZGdlOjpPcGVu
ZXIodm9pZCkgY29uc3QNCisJP1BhcmVudEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkVQQVYxQFha
IEAgMTEyIE5PTkFNRSA7IGNsYXNzIENXZWJDb3JlRnJhbWVCcmlkZ2UgKiBDV2ViQ29yZUZyYW1l
QnJpZGdlOjpQYXJlbnQodm9pZCkgY29uc3QNCisJP1BsdWdpbkhhbmRsZXJAV2ViQ29yZVBsdWdp
bkhhbmRsZXJAQFNBUEFWTVdlYkNvcmVQbHVnaW5IYW5kbGVyQEBYWiBAIDExMyBOT05BTUUgOyBj
bGFzcyBNV2ViQ29yZVBsdWdpbkhhbmRsZXIgKiBXZWJDb3JlUGx1Z2luSGFuZGxlcjo6UGx1Z2lu
SGFuZGxlcih2b2lkKQ0KKwk/UGx1Z2luc0VuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFha
IEAgMTE0IE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRpbmdzOjpQbHVnaW5zRW5hYmxlZCh2b2lk
KSBjb25zdA0KKwk/UG9pbnRlckV2ZW50QENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhVVFBvaW50
ZXJFdmVudEBAQFogQCAxMTUgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpQb2lu
dGVyRXZlbnQoc3RydWN0IFRQb2ludGVyRXZlbnQpDQorCT9Qb2ludGVyRXZlbnRAQ1dlYkNvcmVG
cmFtZUJyaWRnZUBAUUFFWFc0VFR5cGVAVFBvaW50ZXJFdmVudEBAQUJWVFBvaW50QEBAWiBAIDEx
NiBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6OlBvaW50ZXJFdmVudChlbnVtIFRQ
b2ludGVyRXZlbnQ6OlRUeXBlLCBjbGFzcyBUUG9pbnQgY29uc3QgJikNCisJP1ByZXBhcmVGb3JF
eGl0QENXZWJDb3JlRnJhbWVCcmlkZ2VAQFNBWFhaIEAgMTE3IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVGcmFtZUJyaWRnZTo6UHJlcGFyZUZvckV4aXQodm9pZCkNCisJP1ByZXZpb3VzRnJhbWVXaXRo
V3JhcEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkVQQVYxQEhAWiBAIDExOCBOT05BTUUgOyBjbGFz
cyBDV2ViQ29yZUZyYW1lQnJpZGdlICogQ1dlYkNvcmVGcmFtZUJyaWRnZTo6UHJldmlvdXNGcmFt
ZVdpdGhXcmFwKGludCkgY29uc3QNCisJP1ByZXZpb3VzU2libGluZ0BDV2ViQ29yZUZyYW1lQnJp
ZGdlQEBRQkVQQVYxQFhaIEAgMTE5IE5PTkFNRSA7IGNsYXNzIENXZWJDb3JlRnJhbWVCcmlkZ2Ug
KiBDV2ViQ29yZUZyYW1lQnJpZGdlOjpQcmV2aW91c1NpYmxpbmcodm9pZCkgY29uc3QNCisJP1By
b3Zpc2lvbmFsTG9hZFN0YXJ0ZWRAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWFhaIEAgMTIwIE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCh2
b2lkKQ0KKwk/UmVhcHBseVN0eWxlc0ZvckRldmljZVR5cGVAQ1dlYkNvcmVGcmFtZUJyaWRnZUBA
UUFFWFc0VFdlYkNvcmVEZXZpY2VUeXBlQEBAWiBAIDEyMSBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
RnJhbWVCcmlkZ2U6OlJlYXBwbHlTdHlsZXNGb3JEZXZpY2VUeXBlKGVudW0gVFdlYkNvcmVEZXZp
Y2VUeXBlKQ0KKwk/UmVjb2duaXplZFRleHRVbmRlckN1cnNvckxAQ1dlYkNvcmVGcmFtZUJyaWRn
ZUBAUUJFP0FWVFB0ckMxNkBAQUJWVFBvaW50QEBBQVZUUmVjdEBAQUFXNFRGaW5kSXRlbVNlYXJj
aENhc2VAQ0ZpbmRJdGVtRW5naW5lQEBAWiBAIDEyMiBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENX
ZWJDb3JlRnJhbWVCcmlkZ2U6OlJlY29nbml6ZWRUZXh0VW5kZXJDdXJzb3JMKGNsYXNzIFRQb2lu
dCBjb25zdCAmLCBjbGFzcyBUUmVjdCAmLCBlbnVtIENGaW5kSXRlbUVuZ2luZTo6VEZpbmRJdGVt
U2VhcmNoQ2FzZSAmKSBjb25zdA0KKwk/UmVmZXJyZXJAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJF
P0FWVFB0ckMxNkBAWFogQCAxMjMgTk9OQU1FIDsgY2xhc3MgVFB0ckMxNiBDV2ViQ29yZUZyYW1l
QnJpZGdlOjpSZWZlcnJlcih2b2lkKSBjb25zdA0KKwk/UmVtb3ZlQ2hpbGRAQ1dlYkNvcmVGcmFt
ZUJyaWRnZUBAUUFFWFBBVjFAQFogQCAxMjQgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJp
ZGdlOjpSZW1vdmVDaGlsZChjbGFzcyBDV2ViQ29yZUZyYW1lQnJpZGdlICopDQorCT9SZW1vdmVG
aWxlTmFtZUBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVYQUFWVFBvaW50QEBAWiBAIDEyNSBOT05B
TUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6OlJlbW92ZUZpbGVOYW1lKGNsYXNzIFRQb2lu
dCAmKQ0KKwk/UmVtb3ZlRnJvbUZyYW1lQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhYWiBAIDEy
NiBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6OlJlbW92ZUZyb21GcmFtZSh2b2lk
KQ0KKwk/UmVzb2x2ZVVybExAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAU0FQQVZIQnVmQzhAQEFCVlRE
ZXNDOEBAMEBaIEAgMTI3IE5PTkFNRSA7IGNsYXNzIEhCdWZDOCAqIENXZWJDb3JlRnJhbWVCcmlk
Z2U6OlJlc29sdmVVcmxMKGNsYXNzIFREZXNDOCBjb25zdCAmLCBjbGFzcyBURGVzQzggY29uc3Qg
JikNCisJP1Jlc3RvcmVEb2N1bWVudFN0YXRlQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhYWiBA
IDEyOCBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6OlJlc3RvcmVEb2N1bWVudFN0
YXRlKHZvaWQpDQorCT9TYW5zU2VyaWZGb250RmFtaWx5QENXZWJDb3JlU2V0dGluZ3NAQFFCRT9B
VlRQdHJDMTZAQFhaIEAgMTI5IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVTZXR0aW5n
czo6U2Fuc1NlcmlmRm9udEZhbWlseSh2b2lkKSBjb25zdA0KKwk/U2F2ZURvY3VtZW50U3RhdGVA
Q1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWFhaIEAgMTMwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVG
cmFtZUJyaWRnZTo6U2F2ZURvY3VtZW50U3RhdGUodm9pZCkNCisJP1NjYWxpbmdGYWN0b3JDaGFu
Z2VkQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhIQFogQCAxMzEgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUZyYW1lQnJpZGdlOjpTY2FsaW5nRmFjdG9yQ2hhbmdlZChpbnQpDQorCT9TY3JvbGxPdmVy
Zmxvd0luRGlyZWN0aW9uQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRUhXNFRXZWJTY3JvbGxEaXJl
Y3Rpb25AQFc0VFdlYlNjcm9sbEdyYW51bGFyaXR5QEBAWiBAIDEzMiBOT05BTUUgOyBpbnQgQ1dl
YkNvcmVGcmFtZUJyaWRnZTo6U2Nyb2xsT3ZlcmZsb3dJbkRpcmVjdGlvbihlbnVtIFRXZWJTY3Jv
bGxEaXJlY3Rpb24sIGVudW0gVFdlYlNjcm9sbEdyYW51bGFyaXR5KQ0KKwk/U2Nyb2xsVG9BbmNo
b3JXaXRoVVJMQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhBQlZURGVzQzhAQEBaIEAgMTMzIE5P
TkFNRSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6U2Nyb2xsVG9BbmNob3JXaXRoVVJMKGNs
YXNzIFREZXNDOCBjb25zdCAmKQ0KKwk/U2VhcmNoQWdhaW5AQ1dlYkNvcmVGcmFtZUJyaWRnZUBA
UUFFSEFCVlREZXNDMTZAQEhISEBaIEAgMTM0IE5PTkFNRSA7IGludCBDV2ViQ29yZUZyYW1lQnJp
ZGdlOjpTZWFyY2hBZ2FpbihjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCwgaW50LCBpbnQpDQor
CT9TZWFyY2hGb3JAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFSEFCVlREZXNDMTZAQEhISEBaIEAg
MTM1IE5PTkFNRSA7IGludCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpTZWFyY2hGb3IoY2xhc3MgVERl
c0MxNiBjb25zdCAmLCBpbnQsIGludCwgaW50KQ0KKwk/U2VsZWN0QWxsQENXZWJDb3JlRnJhbWVC
cmlkZ2VAQFFBRVhYWiBAIDEzNiBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6OlNl
bGVjdEFsbCh2b2lkKQ0KKwk/U2VsZWN0aW9uQ29sb3JAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJF
P0FWVFJnYkBAWFogQCAxMzcgTk9OQU1FIDsgY2xhc3MgVFJnYiBDV2ViQ29yZUZyYW1lQnJpZGdl
OjpTZWxlY3Rpb25Db2xvcih2b2lkKSBjb25zdA0KKwk/U2VsZWN0aW9uR3JhbnVsYXJpdHlAQ1dl
YkNvcmVGcmFtZUJyaWRnZUBAUUJFP0FXNFdlYkJyaWRnZVNlbGVjdGlvbkdyYW51bGFyaXR5QEBY
WiBAIDEzOCBOT05BTUUgOyBlbnVtIFdlYkJyaWRnZVNlbGVjdGlvbkdyYW51bGFyaXR5IENXZWJD
b3JlRnJhbWVCcmlkZ2U6OlNlbGVjdGlvbkdyYW51bGFyaXR5KHZvaWQpIGNvbnN0DQorCT9TZWxl
Y3Rpb25TdGF0ZUBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQkU/QVc0V2ViU2VsZWN0aW9uU3RhdGVA
QFhaIEAgMTM5IE5PTkFNRSA7IGVudW0gV2ViU2VsZWN0aW9uU3RhdGUgQ1dlYkNvcmVGcmFtZUJy
aWRnZTo6U2VsZWN0aW9uU3RhdGUodm9pZCkgY29uc3QNCisJP1NlbmRSZXNpemVFdmVudEBDV2Vi
Q29yZUZyYW1lQnJpZGdlQEBRQUVYWFogQCAxNDAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1l
QnJpZGdlOjpTZW5kUmVzaXplRXZlbnQodm9pZCkNCisJP1NlbmRTY3JvbGxFdmVudEBDV2ViQ29y
ZUZyYW1lQnJpZGdlQEBRQUVYWFogQCAxNDEgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJp
ZGdlOjpTZW5kU2Nyb2xsRXZlbnQodm9pZCkNCisJP1NlcmlmRm9udEZhbWlseUBDV2ViQ29yZVNl
dHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE0MiBOT05BTUUgOyBjbGFzcyBUUHRyQzE2IENX
ZWJDb3JlU2V0dGluZ3M6OlNlcmlmRm9udEZhbWlseSh2b2lkKSBjb25zdA0KKwk/U2V0Q2hhcnNl
dExAQ1dlYkNvcmVQYWdlRGF0YUl0ZW1AQFFBRVhBQlZURGVzQzE2QEBAWiBAIDE0MyBOT05BTUUg
OyB2b2lkIENXZWJDb3JlUGFnZURhdGFJdGVtOjpTZXRDaGFyc2V0TChjbGFzcyBURGVzQzE2IGNv
bnN0ICYpDQorCT9TZXRDb250ZW50VHlwZUxAQ1dlYkNvcmVQYWdlRGF0YUl0ZW1AQFFBRVhBQlZU
RGVzQzE2QEBAWiBAIDE0NCBOT05BTUUgOyB2b2lkIENXZWJDb3JlUGFnZURhdGFJdGVtOjpTZXRD
b250ZW50VHlwZUwoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKwk/U2V0Q29va2llQWRhcHRlckBX
ZWJDb3JlQ29va2llRmFjdG9yeUBAU0FYUEFWTVdlYkNvcmVDb29raWVBZGFwdGVyQEBAWiBAIDE0
NSBOT05BTUUgOyB2b2lkIFdlYkNvcmVDb29raWVGYWN0b3J5OjpTZXRDb29raWVBZGFwdGVyKGNs
YXNzIE1XZWJDb3JlQ29va2llQWRhcHRlciAqKQ0KKwk/U2V0Q3Vyc2l2ZUZvbnRGYW1pbHlAQ1dl
YkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTQ2IE5PTkFNRSA7IHZvaWQgQ1dl
YkNvcmVTZXR0aW5nczo6U2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAm
KQ0KKwk/U2V0Q3Vyc29yU2VsZWN0aW9uQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhISEBaIEAg
MTQ3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6U2V0Q3Vyc29yU2VsZWN0aW9u
KGludCwgaW50KQ0KKwk/U2V0RGF0YUxAQ1dlYkNvcmVQYWdlRGF0YUl0ZW1AQFFBRVhBQlZURGVz
QzE2QEBAWiBAIDE0OCBOT05BTUUgOyB2b2lkIENXZWJDb3JlUGFnZURhdGFJdGVtOjpTZXREYXRh
TChjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorCT9TZXREZWZhdWx0Rml4ZWRGb250U2l6ZUBDV2Vi
Q29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTQ5IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5n
czo6U2V0RGVmYXVsdEZpeGVkRm9udFNpemUoaW50KQ0KKwk/U2V0RGVmYXVsdEZvbnRTaXplQENX
ZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxNTAgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRp
bmdzOjpTZXREZWZhdWx0Rm9udFNpemUoaW50KQ0KKwk/U2V0RGVmYXVsdFRleHRFbmNvZGluZ0BD
V2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxNTEgTk9OQU1FIDsgdm9pZCBD
V2ViQ29yZVNldHRpbmdzOjpTZXREZWZhdWx0VGV4dEVuY29kaW5nKGNsYXNzIFREZXNDMTYgY29u
c3QgJikNCisJP1NldERlZmVyc1RpbWVyc0BDV2ViQ29yZUZyYW1lQnJpZGdlQEBTQVhIQFogQCAx
NTIgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpTZXREZWZlcnNUaW1lcnMoaW50
KQ0KKwk/U2V0RHJhd3NCYWNrZ3JvdW5kQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhIQFogQCAx
NTMgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpTZXREcmF3c0JhY2tncm91bmQo
aW50KQ0KKwk/U2V0RmFudGFzeUZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlRE
ZXNDMTZAQEBaIEAgMTU0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0RmFudGFz
eUZvbnRGYW1pbHkoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKwk/U2V0RmFzdEZpcnN0RGlzcGxh
eU1vZGVAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWEhAWiBAIDE1NSBOT05BTUUgOyB2b2lkIENX
ZWJDb3JlRnJhbWVCcmlkZ2U6OlNldEZhc3RGaXJzdERpc3BsYXlNb2RlKGludCkNCisJP1NldEZp
eGVkRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxNTYg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRGaXhlZEZvbnRGYW1pbHkoY2xhc3Mg
VERlc0MxNiBjb25zdCAmKQ0KKwk/U2V0Rm9udFNpemVMZXZlbEBDV2ViQ29yZUZyYW1lQnJpZGdl
QEBRQUVYSEBaIEAgMTU3IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6U2V0Rm9u
dFNpemVMZXZlbChpbnQpDQorCT9TZXRGb3JtQ29udHJvbFRleHRCeU5hbWVAQ1dlYkNvcmVGcmFt
ZUJyaWRnZUBAUUFFWEFCVlREZXNDMTZAQDBAWiBAIDE1OCBOT05BTUUgOyB2b2lkIENXZWJDb3Jl
RnJhbWVCcmlkZ2U6OlNldEZvcm1Db250cm9sVGV4dEJ5TmFtZShjbGFzcyBURGVzQzE2IGNvbnN0
ICYsIGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisJP1NldEhpc3RvcnlQcm92aWRlckBXZWJDb3Jl
SGlzdG9yeUBAU0FYUEFWTVdlYkNvcmVIaXN0b3J5UHJvdmlkZXJAQEBaIEAgMTU5IE5PTkFNRSA7
IHZvaWQgV2ViQ29yZUhpc3Rvcnk6OlNldEhpc3RvcnlQcm92aWRlcihjbGFzcyBNV2ViQ29yZUhp
c3RvcnlQcm92aWRlciAqKQ0KKwk/U2V0SW5WaWV3U291cmNlTW9kZUBDV2ViQ29yZUZyYW1lQnJp
ZGdlQEBRQUVYSEBaIEAgMTYwIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6U2V0
SW5WaWV3U291cmNlTW9kZShpbnQpDQorCT9TZXRJc0FjdGl2ZUBDV2ViQ29yZUZyYW1lQnJpZGdl
QEBRQUVYSEBaIEAgMTYxIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6U2V0SXNB
Y3RpdmUoaW50KQ0KKwk/U2V0SmF2YUVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBA
IDE2MiBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldEphdmFFbmFibGVkKGludCkN
CisJP1NldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlAQ1dlYkNvcmVTZXR0
aW5nc0BAUUFFWEhAWiBAIDE2MyBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldEph
dmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoaW50KQ0KKwk/U2V0SmF2YVNjcmlw
dEVuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBAIDE2NCBOT05BTUUgOyB2b2lkIENX
ZWJDb3JlU2V0dGluZ3M6OlNldEphdmFTY3JpcHRFbmFibGVkKGludCkNCisJP1NldE1heEJpZGlX
aWR0aEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVYSEBaIEAgMTY1IE5PTkFNRSA7IHZvaWQgQ1dl
YkNvcmVGcmFtZUJyaWRnZTo6U2V0TWF4QmlkaVdpZHRoKGludCkNCisJP1NldE1pbmltdW1Gb250
U2l6ZUBDV2ViQ29yZVNldHRpbmdzQEBRQUVYSEBaIEAgMTY2IE5PTkFNRSA7IHZvaWQgQ1dlYkNv
cmVTZXR0aW5nczo6U2V0TWluaW11bUZvbnRTaXplKGludCkNCisJP1NldE1pbmltdW1Mb2dpY2Fs
Rm9udFNpemVAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBAIDE2NyBOT05BTUUgOyB2b2lkIENX
ZWJDb3JlU2V0dGluZ3M6OlNldE1pbmltdW1Mb2dpY2FsRm9udFNpemUoaW50KQ0KKwk/U2V0TmFt
ZUBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVYQUJWVERlc0MxNkBAQFogQCAxNjggTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpTZXROYW1lKGNsYXNzIFREZXNDMTYgY29uc3QgJikN
CisJP1NldE5lZWRzTGF5b3V0QENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVhYWiBAIDE2OSBOT05B
TUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6OlNldE5lZWRzTGF5b3V0KHZvaWQpDQorCT9T
ZXRPcGVuZXJAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWFBBVjFAQFogQCAxNzAgTk9OQU1FIDsg
dm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpTZXRPcGVuZXIoY2xhc3MgQ1dlYkNvcmVGcmFtZUJy
aWRnZSAqKQ0KKwk/U2V0UGx1Z2luc0VuYWJsZWRAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEhAWiBA
IDE3MSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6OlNldFBsdWdpbnNFbmFibGVkKGlu
dCkNCisJP1NldFNhbnNTZXJpZkZvbnRGYW1pbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlRE
ZXNDMTZAQEBaIEAgMTcyIE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2Fuc1Nl
cmlmRm9udEZhbWlseShjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorCT9TZXRTZXJpZkZvbnRGYW1p
bHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTczIE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0U2VyaWZGb250RmFtaWx5KGNsYXNzIFREZXNDMTYgY29u
c3QgJikNCisJP1NldFNob3VsZENyZWF0ZVJlbmRlcmVyc0BDV2ViQ29yZUZyYW1lQnJpZGdlQEBR
QUVYSEBaIEAgMTc0IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6U2V0U2hvdWxk
Q3JlYXRlUmVuZGVyZXJzKGludCkNCisJP1NldFNob3VsZFByaW50QmFja2dyb3VuZHNAQ1dlYkNv
cmVTZXR0aW5nc0BAUUFFWEhAWiBAIDE3NSBOT05BTUUgOyB2b2lkIENXZWJDb3JlU2V0dGluZ3M6
OlNldFNob3VsZFByaW50QmFja2dyb3VuZHMoaW50KQ0KKwk/U2V0U3RhbmRhcmRGb250RmFtaWx5
QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhBQlZURGVzQzE2QEBAWiBAIDE3NiBOT05BTUUgOyB2b2lk
IENXZWJDb3JlU2V0dGluZ3M6OlNldFN0YW5kYXJkRm9udEZhbWlseShjbGFzcyBURGVzQzE2IGNv
bnN0ICYpDQorCT9TZXRUZXh0U2l6ZU11bHRpcGxpZXJAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFF
WE1AWiBAIDE3NyBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6OlNldFRleHRTaXpl
TXVsdGlwbGllcihmbG9hdCkNCisJP1NldFVybExAQ1dlYkNvcmVQYWdlRGF0YUl0ZW1AQFFBRVhB
QlZURGVzQzE2QEBAWiBAIDE3OCBOT05BTUUgOyB2b2lkIENXZWJDb3JlUGFnZURhdGFJdGVtOjpT
ZXRVcmxMKGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisJP1NldFVzZXJTdHlsZVNoZWV0TG9jYXRp
b25AQ1dlYkNvcmVTZXR0aW5nc0BAUUFFWEFCVlREZXNDMTZAQEBaIEAgMTc5IE5PTkFNRSA7IHZv
aWQgQ1dlYkNvcmVTZXR0aW5nczo6U2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjbGFzcyBURGVz
QzE2IGNvbnN0ICYpDQorCT9TZXRXZWJDb3JlTG9hZGVyQ29udGFpbmVyQFdlYkNvcmVMb2FkZXJD
b250YWluZXJAQFNBWFBBVk1XZWJDb3JlTG9hZGVyQ29udGFpbmVyQEBAWiBAIDE4MCBOT05BTUUg
OyB2b2lkIFdlYkNvcmVMb2FkZXJDb250YWluZXI6OlNldFdlYkNvcmVMb2FkZXJDb250YWluZXIo
Y2xhc3MgTVdlYkNvcmVMb2FkZXJDb250YWluZXIgKikNCisJP1NldFdlYkNvcmVQbHVnaW5IYW5k
bGVyQFdlYkNvcmVQbHVnaW5IYW5kbGVyQEBTQVhQQVZNV2ViQ29yZVBsdWdpbkhhbmRsZXJAQEBa
IEAgMTgxIE5PTkFNRSA7IHZvaWQgV2ViQ29yZVBsdWdpbkhhbmRsZXI6OlNldFdlYkNvcmVQbHVn
aW5IYW5kbGVyKGNsYXNzIE1XZWJDb3JlUGx1Z2luSGFuZGxlciAqKQ0KKwk/U2V0V2lsbExvYWRJ
bWFnZXNBdXRvbWF0aWNhbGx5QENXZWJDb3JlU2V0dGluZ3NAQFFBRVhIQFogQCAxODIgTk9OQU1F
IDsgdm9pZCBDV2ViQ29yZVNldHRpbmdzOjpTZXRXaWxsTG9hZEltYWdlc0F1dG9tYXRpY2FsbHko
aW50KQ0KKwk/U2V0V2luZG93SGFzRm9jdXNAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFWEhAWiBA
IDE4MyBOT05BTUUgOyB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6OlNldFdpbmRvd0hhc0ZvY3Vz
KGludCkNCisJP1NldHRpbmdzQENXZWJDb3JlU2V0dGluZ3NAQFFCRVBBVjBXZWJDb3JlQEBYWiBA
IDE4NCBOT05BTUUgOyBjbGFzcyBXZWJDb3JlOjpTZXR0aW5ncyAqIENXZWJDb3JlU2V0dGluZ3M6
OlNldHRpbmdzKHZvaWQpIGNvbnN0DQorCT9TaG91bGRDbG9zZUBDV2ViQ29yZUZyYW1lQnJpZGdl
QEBRQkVIWFogQCAxODUgTk9OQU1FIDsgaW50IENXZWJDb3JlRnJhbWVCcmlkZ2U6OlNob3VsZENs
b3NlKHZvaWQpIGNvbnN0DQorCT9TaG91bGRDcmVhdGVSZW5kZXJlcnNAQ1dlYkNvcmVGcmFtZUJy
aWRnZUBAUUJFSFhaIEAgMTg2IE5PTkFNRSA7IGludCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpTaG91
bGRDcmVhdGVSZW5kZXJlcnModm9pZCkgY29uc3QNCisJP1Nob3VsZFByaW50QmFja2dyb3VuZHNA
Q1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgMTg3IE5PTkFNRSA7IGludCBDV2ViQ29yZVNldHRp
bmdzOjpTaG91bGRQcmludEJhY2tncm91bmRzKHZvaWQpIGNvbnN0DQorCT9TaG93aW5nRmFzdFBy
ZXZpZXdAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJFSFhaIEAgMTg4IE5PTkFNRSA7IGludCBDV2Vi
Q29yZUZyYW1lQnJpZGdlOjpTaG93aW5nRmFzdFByZXZpZXcodm9pZCkgY29uc3QNCisJP1N0YW5k
YXJkRm9udEZhbWlseUBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZUUHRyQzE2QEBYWiBAIDE4OSBO
T05BTUUgOyBjbGFzcyBUUHRyQzE2IENXZWJDb3JlU2V0dGluZ3M6OlN0YW5kYXJkRm9udEZhbWls
eSh2b2lkKSBjb25zdA0KKwk/U3RvcEBDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVYWFogQCAxOTAg
Tk9OQU1FIDsgdm9pZCBDV2ViQ29yZUZyYW1lQnJpZGdlOjpTdG9wKHZvaWQpDQorCT9TdG9wTG9h
ZGluZ0BDV2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVYWFogQCAxOTEgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUZyYW1lQnJpZGdlOjpTdG9wTG9hZGluZyh2b2lkKQ0KKwk/VGFiYmVkTmF2aWdhdGlvbkBD
V2ViQ29yZUZyYW1lQnJpZGdlQEBRQUVIVzRUV2ViTmF2RGlyZWN0aW9uQEBBQVc0VFdlYkNvcmVG
b2N1c2VkRWxlbWVudFR5cGVAQEhAWiBAIDE5MiBOT05BTUUgOyBpbnQgQ1dlYkNvcmVGcmFtZUJy
aWRnZTo6VGFiYmVkTmF2aWdhdGlvbihlbnVtIFRXZWJOYXZEaXJlY3Rpb24sIGVudW0gVFdlYkNv
cmVGb2N1c2VkRWxlbWVudFR5cGUgJiwgaW50KQ0KKwk/VGV4dEVuY29kaW5nQENXZWJDb3JlRnJh
bWVCcmlkZ2VAQFFCRUlYWiBAIDE5MyBOT05BTUUgOyB1bnNpZ25lZCBpbnQgQ1dlYkNvcmVGcmFt
ZUJyaWRnZTo6VGV4dEVuY29kaW5nKHZvaWQpIGNvbnN0DQorCT9UcmF2ZXJzZU5leHRGcmFtZVN0
YXlXaXRoaW5AQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUJFUEFWMUBQQlYxQEBaIEAgMTk0IE5PTkFN
RSA7IGNsYXNzIENXZWJDb3JlRnJhbWVCcmlkZ2UgKiBDV2ViQ29yZUZyYW1lQnJpZGdlOjpUcmF2
ZXJzZU5leHRGcmFtZVN0YXlXaXRoaW4oY2xhc3MgQ1dlYkNvcmVGcmFtZUJyaWRnZSBjb25zdCAq
KSBjb25zdA0KKwk/VVJMQENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFCRT9BVlRQdHJDOEBAWFogQCAx
OTUgTk9OQU1FIDsgY2xhc3MgVFB0ckM4IENXZWJDb3JlRnJhbWVCcmlkZ2U6OlVSTCh2b2lkKSBj
b25zdA0KKwk/VXNlclN0eWxlU2hlZXRMb2NhdGlvbkBDV2ViQ29yZVNldHRpbmdzQEBRQkU/QVZU
UHRyQzhAQFhaIEAgMTk2IE5PTkFNRSA7IGNsYXNzIFRQdHJDOCBDV2ViQ29yZVNldHRpbmdzOjpV
c2VyU3R5bGVTaGVldExvY2F0aW9uKHZvaWQpIGNvbnN0DQorCT9XaWxsTG9hZEltYWdlc0F1dG9t
YXRpY2FsbHlAQ1dlYkNvcmVTZXR0aW5nc0BAUUJFSFhaIEAgMTk3IE5PTkFNRSA7IGludCBDV2Vi
Q29yZVNldHRpbmdzOjpXaWxsTG9hZEltYWdlc0F1dG9tYXRpY2FsbHkodm9pZCkgY29uc3QNCisJ
P1dpbmRvd1NjcmlwdE5QT2JqZWN0QENXZWJDb3JlRnJhbWVCcmlkZ2VAQFFBRVBBVk5QT2JqZWN0
QEBYWiBAIDE5OCBOT05BTUUgOyBjbGFzcyBOUE9iamVjdCAqIENXZWJDb3JlRnJhbWVCcmlkZ2U6
OldpbmRvd1NjcmlwdE5QT2JqZWN0KHZvaWQpDQorCT9jbG9zZVNoYXJlZERhdGFiYXNlQENXZWJD
b3JlSWNvbkRhdGFiYXNlQnJpZGdlQEBRQUVYWFogQCAxOTkgTk9OQU1FIDsgdm9pZCBDV2ViQ29y
ZUljb25EYXRhYmFzZUJyaWRnZTo6Y2xvc2VTaGFyZWREYXRhYmFzZSh2b2lkKQ0KKwk/ZGVmYXVs
dERhdGFiYXNlRmlsZW5hbWVAQ1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2VAQFFBRT9BVlRQdHJD
MTZAQFhaIEAgMjAwIE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVJY29uRGF0YWJhc2VC
cmlkZ2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKHZvaWQpDQorCT9kZWZhdWx0SWNvbldpdGhT
aXplQENXZWJDb3JlSWNvbkRhdGFiYXNlQnJpZGdlQEBRQUVQQlZDRmJzQml0bWFwQEBWVFNpemVA
QEBaIEAgMjAxIE5PTkFNRSA7IGNsYXNzIENGYnNCaXRtYXAgY29uc3QgKiBDV2ViQ29yZUljb25E
YXRhYmFzZUJyaWRnZTo6ZGVmYXVsdEljb25XaXRoU2l6ZShjbGFzcyBUU2l6ZSkNCisJP2dldE51
bWJlckBKU1ZhbHVlQEtKU0BAUUJFX05BQU5AWiBAIDIwMiBOT05BTUUgOyBib29sIEtKUzo6SlNW
YWx1ZTo6Z2V0TnVtYmVyKGRvdWJsZSAmKSBjb25zdA0KKwk/aGFzRW50cnlGb3JJY29uVVJMQENX
ZWJDb3JlSWNvbkRhdGFiYXNlQnJpZGdlQEBRQUVIQUJWVERlc0M4QEBAWiBAIDIwMyBOT05BTUUg
OyBpbnQgQ1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2U6Omhhc0VudHJ5Rm9ySWNvblVSTChjbGFz
cyBURGVzQzggY29uc3QgJikNCisJP2ljb25Gb3JQYWdlVVJMQENXZWJDb3JlSWNvbkRhdGFiYXNl
QnJpZGdlQEBRQUVQQVZDR3VsSWNvbkBAQUJWVERlc0M4QEBWVFNpemVAQEBaIEAgMjA0IE5PTkFN
RSA7IGNsYXNzIENHdWxJY29uICogQ1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2U6Omljb25Gb3JQ
YWdlVVJMKGNsYXNzIFREZXNDOCBjb25zdCAmLCBjbGFzcyBUU2l6ZSkNCisJP2ljb25VUkxGb3JQ
YWdlVVJMQENXZWJDb3JlSWNvbkRhdGFiYXNlQnJpZGdlQEBRQUU/QVZUUHRyQzE2QEBBQlZURGVz
QzhAQEBaIEAgMjA1IE5PTkFNRSA7IGNsYXNzIFRQdHJDMTYgQ1dlYkNvcmVJY29uRGF0YWJhc2VC
cmlkZ2U6Omljb25VUkxGb3JQYWdlVVJMKGNsYXNzIFREZXNDOCBjb25zdCAmKQ0KKwk/aW50ZXJj
ZXB0S2V5RXZlbnRAQ1dlYkNvcmVGcmFtZUJyaWRnZUBAUUFFSEFBVVRLZXlFdmVudEBAVzRURXZl
bnRDb2RlQEBAWiBAIDIwNiBOT05BTUUgOyBpbnQgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6aW50ZXJj
ZXB0S2V5RXZlbnQoc3RydWN0IFRLZXlFdmVudCAmLCBlbnVtIFRFdmVudENvZGUpDQorCT9pc0Vt
cHR5QENXZWJDb3JlSWNvbkRhdGFiYXNlQnJpZGdlQEBRQUVIWFogQCAyMDcgTk9OQU1FIDsgaW50
IENXZWJDb3JlSWNvbkRhdGFiYXNlQnJpZGdlOjppc0VtcHR5KHZvaWQpDQorCT9pc0VuYWJsZWRA
Q1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2VAQFFBRUhYWiBAIDIwOCBOT05BTUUgOyBpbnQgQ1dl
YkNvcmVJY29uRGF0YWJhc2VCcmlkZ2U6OmlzRW5hYmxlZCh2b2lkKQ0KKwk/aXNJY29uRXhwaXJl
ZEZvckljb25VUkxAQ1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2VAQFFBRUhBQlZURGVzQzhAQEBa
IEAgMjA5IE5PTkFNRSA7IGludCBDV2ViQ29yZUljb25EYXRhYmFzZUJyaWRnZTo6aXNJY29uRXhw
aXJlZEZvckljb25VUkwoY2xhc3MgVERlc0M4IGNvbnN0ICYpDQorCT9pc09wZW5AQ1dlYkNvcmVJ
Y29uRGF0YWJhc2VCcmlkZ2VAQFFBRUhYWiBAIDIxMCBOT05BTUUgOyBpbnQgQ1dlYkNvcmVJY29u
RGF0YWJhc2VCcmlkZ2U6OmlzT3Blbih2b2lkKQ0KKwk/b3BlblNoYXJlZERhdGFiYXNlV2l0aFBh
dGhAQ1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2VAQFFBRUhBQVZURGVzQzE2QEBAWiBAIDIxMSBO
T05BTUUgOyBpbnQgQ1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2U6Om9wZW5TaGFyZWREYXRhYmFz
ZVdpdGhQYXRoKGNsYXNzIFREZXNDMTYgJikNCisJP3ByaXZhdGVCcm93c2luZ0VuYWJsZWRAQ1dl
YkNvcmVJY29uRGF0YWJhc2VCcmlkZ2VAQFFBRUhYWiBAIDIxMiBOT05BTUUgOyBpbnQgQ1dlYkNv
cmVJY29uRGF0YWJhc2VCcmlkZ2U6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQodm9pZCkNCisJP3Jl
bGVhc2VJY29uRm9yVVJMQENXZWJDb3JlSWNvbkRhdGFiYXNlQnJpZGdlQEBRQUVYQUJWVERlc0M4
QEBAWiBAIDIxMyBOT05BTUUgOyB2b2lkIENXZWJDb3JlSWNvbkRhdGFiYXNlQnJpZGdlOjpyZWxl
YXNlSWNvbkZvclVSTChjbGFzcyBURGVzQzggY29uc3QgJikNCisJP3JlbW92ZUFsbEljb25zQENX
ZWJDb3JlSWNvbkRhdGFiYXNlQnJpZGdlQEBRQUVYWFogQCAyMTQgTk9OQU1FIDsgdm9pZCBDV2Vi
Q29yZUljb25EYXRhYmFzZUJyaWRnZTo6cmVtb3ZlQWxsSWNvbnModm9pZCkNCisJP3JldGFpbklj
b25Gb3JVUkxAQ1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2VAQFFBRVhBQlZURGVzQzhAQEBaIEAg
MjE1IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2U6OnJldGFpbkljb25G
b3JVUkwoY2xhc3MgVERlc0M4IGNvbnN0ICYpDQorCT9zZXRFbmFibGVkQENXZWJDb3JlSWNvbkRh
dGFiYXNlQnJpZGdlQEBRQUVYSEBaIEAgMjE2IE5PTkFNRSA7IHZvaWQgQ1dlYkNvcmVJY29uRGF0
YWJhc2VCcmlkZ2U6OnNldEVuYWJsZWQoaW50KQ0KKwk/c2V0SGF2ZU5vSWNvbkZvckljb25VUkxA
Q1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2VAQFFBRVhBQlZURGVzQzhAQEBaIEAgMjE3IE5PTkFN
RSA7IHZvaWQgQ1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2U6OnNldEhhdmVOb0ljb25Gb3JJY29u
VVJMKGNsYXNzIFREZXNDOCBjb25zdCAmKQ0KKwk/c2V0SWNvbkRhdGFAQ1dlYkNvcmVJY29uRGF0
YWJhc2VCcmlkZ2VAQFFBRVhBQlZURGVzQzhAQDBAWiBAIDIxOCBOT05BTUUgOyB2b2lkIENXZWJD
b3JlSWNvbkRhdGFiYXNlQnJpZGdlOjpzZXRJY29uRGF0YShjbGFzcyBURGVzQzggY29uc3QgJiwg
Y2xhc3MgVERlc0M4IGNvbnN0ICYpDQorCT9zZXRJY29uVVJMQENXZWJDb3JlSWNvbkRhdGFiYXNl
QnJpZGdlQEBRQUVIQUJWVERlc0M4QEAwQFogQCAyMTkgTk9OQU1FIDsgaW50IENXZWJDb3JlSWNv
bkRhdGFiYXNlQnJpZGdlOjpzZXRJY29uVVJMKGNsYXNzIFREZXNDOCBjb25zdCAmLCBjbGFzcyBU
RGVzQzggY29uc3QgJikNCisJP3NldE1haW5GcmFtZUBDV2ViQ29yZVBhZ2VCcmlkZ2VAQFFBRVhQ
QVZDV2ViQ29yZUZyYW1lQnJpZGdlQEBAWiBAIDIyMCBOT05BTUUgOyB2b2lkIENXZWJDb3JlUGFn
ZUJyaWRnZTo6c2V0TWFpbkZyYW1lKGNsYXNzIENXZWJDb3JlRnJhbWVCcmlkZ2UgKikNCisJP3Nl
dFByaXZhdGVCcm93c2luZ0VuYWJsZWRAQ1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2VAQFFBRVhI
QFogQCAyMjEgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUljb25EYXRhYmFzZUJyaWRnZTo6c2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZChpbnQpDQorCT9zaGFyZWRJbnN0YW5jZUBDV2ViQ29yZUljb25E
YXRhYmFzZUJyaWRnZUBAU0FQQVYxQFhaIEAgMjIyIE5PTkFNRSA7IGNsYXNzIENXZWJDb3JlSWNv
bkRhdGFiYXNlQnJpZGdlICogQ1dlYkNvcmVJY29uRGF0YWJhc2VCcmlkZ2U6OnNoYXJlZEluc3Rh
bmNlKHZvaWQpDQogDQpJbmRleDogV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAkocmV2aXNpb24g
ODQxKQ0KKysrIFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCShyZXZpc2lvbiA4NDIp
DQpAQCAtNzgzLDcgKzc4Myw3IEBADQogew0KICAgICAvLyBPbmNlIGFuIGVsZW1lbnQgaGFzIGEg
cmVuZGVyZXIsIHdlIGRvbid0IHRyeSB0byBkZXN0cm95IGl0LCBzaW5jZSBvdGhlcndpc2UgdGhl
IHJlbmRlcmVyDQogICAgIC8vIHdpbGwgdmFuaXNoIGlmIGEgc3R5bGUgcmVjYWxjIGhhcHBlbnMg
ZHVyaW5nIGxvYWRpbmcuDQotICAgIGlmIChhbGxvd1NoYXJpbmcgJiYgIWUtPmRvY3VtZW50KCkt
PmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpICYmICFlLT5yZW5kZXJlcigpKSB7DQorICAgIGlmIChh
bGxvd1NoYXJpbmcgJiYgIShlLT5kb2N1bWVudCgpLT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSB8
fCBlLT5kb2N1bWVudCgpLT5mYXN0RGlzcGxheU1vZGUoKSkgJiYgIWUtPnJlbmRlcmVyKCkpIHsN
CiAgICAgICAgIGlmICghc3R5bGVOb3RZZXRBdmFpbGFibGUpIHsNCiAgICAgICAgICAgICBzdHls
ZU5vdFlldEF2YWlsYWJsZSA9IDo6bmV3IFJlbmRlclN0eWxlKCk7DQogICAgICAgICAgICAgc3R5
bGVOb3RZZXRBdmFpbGFibGUtPnNldERpc3BsYXkoTk9ORSk7DQpJbmRleDogV2ViQ29yZS9icmlk
Z2Uvc3ltYmlhbi9XZWJDb3JlRnJhbWVCcmlkZ2UuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9icmlkZ2Uvc3ltYmlhbi9XZWJDb3JlRnJhbWVCcmlkZ2UuY3BwCShyZXZpc2lvbiA4NDEpDQor
KysgV2ViQ29yZS9icmlkZ2Uvc3ltYmlhbi9XZWJDb3JlRnJhbWVCcmlkZ2UuY3BwCShyZXZpc2lv
biA4NDIpDQpAQCAtMTAyMyw2ICsxMDIzLDEyIEBADQogLy8gICAgW3NlbGYgX3NldHVwUm9vdEZv
clByaW50aW5nOk5PXTsNCiB9DQogDQorRVhQT1JUX0MgVEJvb2wgQ1dlYkNvcmVGcmFtZUJyaWRn
ZTo6RHJhd2luZ0Rpc2FibGVkKCkgY29uc3QNCit7DQorICAgIHJldHVybiBtX2ZyYW1lLT5mYXN0
RGlzcGxheVN0YXRlKCkgPT0gRnJhbWU6OlN3aXRjaGluZ1RvRmluYWxEb2N1bWVudDsNCisgICAg
DQorfQ0KKw0KIC8qDQogLy8gVXNlZCBieSBwYWdpbmF0aW9uIGNvZGUgY2FsbGVkIGZyb20gQXBw
S2l0IHdoZW4gYSBzdGFuZGFsb25lIHdlYiBwYWdlIGlzIHByaW50ZWQuDQogLSAoTlNBcnJheSop
Y29tcHV0ZVBhZ2VSZWN0c1dpdGhQcmludFdpZHRoU2NhbGVGYWN0b3I6KGZsb2F0KXByaW50V2lk
dGhTY2FsZUZhY3RvciBwcmludEhlaWdodDooZmxvYXQpcHJpbnRIZWlnaHQNCkBAIC0yODQyLDIy
ICsyODQ4LDIwIEBADQogRVhQT1JUX0MNCiB2b2lkIENXZWJDb3JlRnJhbWVCcmlkZ2U6OlNldEZh
c3RGaXJzdERpc3BsYXlNb2RlKFRCb29sIGFGYXN0TW9kZSkNCiAgICAgew0KLS8vICAgIGlQYXJ0
LT5zZXRGYXN0Rmlyc3REaXNwbGF5TW9kZShhRmFzdE1vZGUpOw0KKyAgICBtX2ZyYW1lLT5zZXRG
YXN0RGlzcGxheU1vZGUoYUZhc3RNb2RlKTsNCiAgICAgfQ0KIA0KIEVYUE9SVF9DDQogVEJvb2wg
Q1dlYkNvcmVGcmFtZUJyaWRnZTo6RmFzdEZpcnN0RGlzcGxheU1vZGUoKSBjb25zdA0KICAgICB7
DQotICAgIHJldHVybiBFRmFsc2U7DQotLy8gICAgcmV0dXJuIGlQYXJ0LT5mYXN0Rmlyc3REaXNw
bGF5TW9kZSgpOw0KKyAgICByZXR1cm4gbV9mcmFtZSAmJiBtX2ZyYW1lLT5mYXN0RGlzcGxheU1v
ZGUoKTsNCiAgICAgfQ0KIA0KIEVYUE9SVF9DDQogVEJvb2wgQ1dlYkNvcmVGcmFtZUJyaWRnZTo6
U2hvd2luZ0Zhc3RQcmV2aWV3KCkgY29uc3QNCiAgICAgew0KLSAgICByZXR1cm4gRUZhbHNlOw0K
LS8vICAgIERvY3VtZW50SW1wbCAqZG9jID0gaVBhcnQtPnhtbERvY0ltcGwoKTsNCi0vLyAgICBy
ZXR1cm4gZG9jP2RvYy0+ZmFzdERpc3BsYXlNb2RlKCk6ZmFsc2U7DQorICAgIERvY3VtZW50ICpk
b2MgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOw0KKyAgICByZXR1cm4gZG9jICYmIGRvYy0+ZmFzdERp
c3BsYXlNb2RlKCk7DQogICAgIH0NCiANCiBFWFBPUlRfQw0KSW5kZXg6IFdlYkNvcmUvYnJpZGdl
L3N5bWJpYW4vRnJhbWVTeW1iaWFuLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JyaWRnZS9z
eW1iaWFuL0ZyYW1lU3ltYmlhbi5oCShyZXZpc2lvbiA4NDEpDQorKysgV2ViQ29yZS9icmlkZ2Uv
c3ltYmlhbi9GcmFtZVN5bWJpYW4uaAkocmV2aXNpb24gODQyKQ0KQEAgLTE5NCw2ICsxOTQsOSBA
QA0KICAgICBpbnQgbWF4VGV4dFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9tYXhUZXh0V2lkdGg7
IH0NCiAgICAgdm9pZCBzZXRNYXhUZXh0V2lkdGgoaW50IHcpOw0KICAgICANCisgICAgdmlydHVh
bCBib29sIGNhbmNlbEluUHJvZ3Jlc3MoKSBjb25zdDsNCisgICAgdmlydHVhbCBib29sIG9iamVj
dEF2YWlsYWJsZUluRGlza0NhY2hlKEtVUkwgdXJsKSBjb25zdDsNCisgICAgDQogcHJvdGVjdGVk
Og0KICAgICBQbHVnaW4qIGNyZWF0ZVBsdWdpbihFbGVtZW50KiBub2RlLCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOw0KICAgICBGcmFtZSogY3Jl
YXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEVsZW1lbnQqIG93
bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7DQpJbmRleDogV2ViQ29yZS9icmlk
Z2Uvc3ltYmlhbi9GcmFtZVN5bWJpYW4uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9icmlk
Z2Uvc3ltYmlhbi9GcmFtZVN5bWJpYW4uY3BwCShyZXZpc2lvbiA4NDEpDQorKysgV2ViQ29yZS9i
cmlkZ2Uvc3ltYmlhbi9GcmFtZVN5bWJpYW4uY3BwCShyZXZpc2lvbiA4NDIpDQpAQCAtMTAyOCw0
ICsxMDI4LDE0IEBADQogICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJWaWV3Kj4ocmVuZGVyZXIo
KSktPnNldE1heFRleHRXaWR0aChtX21heFRleHRXaWR0aCk7DQogfQ0KIA0KK2Jvb2wgRnJhbWVT
eW1iaWFuOjpjYW5jZWxJblByb2dyZXNzKCkgY29uc3QgDQoreyANCisgICAgcmV0dXJuIFN5bWJp
YW4odGhpcyktPmJyaWRnZSgpLT5DYWxsYmFjaygpLkNhbmNlbEluUHJvZ3Jlc3MoKTsgDQogfQ0K
Kw0KK2Jvb2wgRnJhbWVTeW1iaWFuOjpvYmplY3RBdmFpbGFibGVJbkRpc2tDYWNoZShLVVJMIHVy
bCkgY29uc3QgDQoreyANCisgICAgcmV0dXJuIFN5bWJpYW4odGhpcyktPmJyaWRnZSgpLT5DYWxs
YmFjaygpLklzT2JqZWN0QXZhaWxhYmxlSW5EaXNrQ2FjaGUodXJsLmRlcygpKTsgDQorfQ0KKw0K
K30NCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9zeW1iaWFuL1dlYkNvcmVGcmFtZUJyaWRnZS5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViQ29yZS9icmlkZ2Uvc3ltYmlhbi9XZWJDb3JlRnJhbWVCcmlkZ2Uu
aAkocmV2aXNpb24gODQxKQ0KKysrIFdlYkNvcmUvYnJpZGdlL3N5bWJpYW4vV2ViQ29yZUZyYW1l
QnJpZGdlLmgJKHJldmlzaW9uIDg0MikNCkBAIC0zNDYsNiArMzQ2LDcgQEANCiAgICAgICAgIElN
UE9SVF9DIFRCb29sIE5lZWRzTGF5b3V0KCkgY29uc3Q7DQogICAgICAgICBJTVBPUlRfQyB2b2lk
IFNldE5lZWRzTGF5b3V0KCk7DQogICAgICAgICBJTVBPUlRfQyB2b2lkIERyYXdSZWN0KGNvbnN0
IFRSZWN0JiByZWN0LCBDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCYgYUdjKTsNCisgICAgICAgIElN
UE9SVF9DIFRCb29sIERyYXdpbmdEaXNhYmxlZCgpIGNvbnN0Ow0KIA0KIC8vICAgICAgICBJTVBP
UlRfQyB2b2lkIEFkanVzdFBhZ2VIZWlnaHROZXcoVEludCBhTmV3Qm90dG9tLCBUSW50IGFPbGRU
b3AsIFRJbnQgYU9sZEJvdHRvbSwgVEludCBhQm90dG9tTGltaXQpOw0KIA0KSW5kZXg6IFdlYkNv
cmUvbG9hZGVyL2xvYWRlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9sb2FkZXIvbG9hZGVy
LmgJKHJldmlzaW9uIDg0MSkNCisrKyBXZWJDb3JlL2xvYWRlci9sb2FkZXIuaAkocmV2aXNpb24g
ODQyKQ0KQEAgLTU0LDcgKzU0LDcgQEANCiANCiAgICAgICAgIHZvaWQgbG9hZChEb2NMb2FkZXIq
LCBDYWNoZWRSZXNvdXJjZSosIGJvb2wgaW5jcmVtZW50YWwgPSB0cnVlKTsNCiANCi0gICAgICAg
IGludCBudW1SZXF1ZXN0cyhEb2NMb2FkZXIqKSBjb25zdDsNCisgICAgICAgIGludCBudW1SZXF1
ZXN0cyhEb2NMb2FkZXIqLCBib29sIGJsb2NraW5nT25seT1mYWxzZSkgY29uc3Q7DQogICAgICAg
ICB2b2lkIGNhbmNlbFJlcXVlc3RzKERvY0xvYWRlciopOw0KIA0KICAgICAgICAgdm9pZCByZW1v
dmVCYWNrZ3JvdW5kRGVjb2RpbmdSZXF1ZXN0KFJlcXVlc3QqKTsNCkluZGV4OiBXZWJDb3JlL2xv
YWRlci9SZXF1ZXN0LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2xvYWRlci9SZXF1ZXN0LmgJ
KHJldmlzaW9uIDg0MSkNCisrKyBXZWJDb3JlL2xvYWRlci9SZXF1ZXN0LmgJKHJldmlzaW9uIDg0
MikNCkBAIC00OSw2ICs0OSw4IEBADQogDQogICAgICAgICBib29sIGlzTXVsdGlwYXJ0KCkgeyBy
ZXR1cm4gbV9tdWx0aXBhcnQ7IH0NCiAgICAgICAgIHZvaWQgc2V0SXNNdWx0aXBhcnQoYm9vbCBi
ID0gdHJ1ZSkgeyBtX211bHRpcGFydCA9IGI7IH0NCisgICAgICAgIA0KKyAgICAgICAgYm9vbCBp
c0Jsb2NraW5nKCkgY29uc3Q7DQogDQogICAgIHByaXZhdGU6DQogICAgICAgICBWZWN0b3I8Y2hh
cj4gbV9idWZmZXI7DQpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCShyZXZpc2lvbiA4NDEpDQorKysgV2ViQ29y
ZS9sb2FkZXIvQ2FjaGUuY3BwCShyZXZpc2lvbiA4NDIpDQpAQCAtMzcsNiArMzcsNyBAQA0KICNp
bmNsdWRlICJJbWFnZS5oIg0KICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlci5oIg0KICNpbmNsdWRl
ICJsb2FkZXIuaCINCisjaW5jbHVkZSAiRnJhbWUuaCINCiANCiB1c2luZyBuYW1lc3BhY2Ugc3Rk
Ow0KIA0KQEAgLTIwNSw2ICsyMDYsMTQgQEANCiAgICAgICAgICAgICBjYWNoZS0+c2V0KGt1cmwu
dXJsKCksIHNoZWV0KTsNCiAgICAgICAgICAgICBtb3ZlVG9IZWFkT2ZMUlVMaXN0KHNoZWV0KTsN
CiAgICAgICAgIH0NCisNCisjaWYgVVNFKERPVUJMRVRSRUUpDQorICAgICAgICBkbC0+ZG9jKCkt
PmZyYW1lKCktPnN3aXRjaFRvRmFzdERpc3BsYXlEb2NJZk5lZWRlZChrdXJsLnVybCgpKTsNCisg
ICAgICAgIC8vIG1ha2UgdGhlIHJlcXVlc3QgYnV0IGRvbid0IGFjdHVhbGx5IHJlZiB0aGUgcmVz
b3VyY2UNCisgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgYW55dGhpbmcgdG8gZ2V0IGFwcGxpZWQg
dG8gZmFzdCBkaXNwbGF5IGRvYw0KKyAgICAgICAgaWYgKGRsLT5kb2MoKS0+ZmFzdERpc3BsYXlN
b2RlKCkpDQorICAgICAgICAgICAgcmV0dXJuIDA7DQorI2VuZGlmICAgICAgICAgICAgDQogICAg
ICAgICBvID0gc2hlZXQ7DQogICAgIH0NCiANCkBAIC0yNTcsNiArMjY2LDEzIEBADQogICAgICAg
ICAgICAgbW92ZVRvSGVhZE9mTFJVTGlzdChzY3JpcHQpOw0KICAgICAgICAgfQ0KICAgICAgICAg
byA9IHNjcmlwdDsNCisjaWYgVVNFKERPVUJMRVRSRUUpICAgICAgICANCisgICAgICAgIGRsLT5k
b2MoKS0+ZnJhbWUoKS0+c3dpdGNoVG9GYXN0RGlzcGxheURvY0lmTmVlZGVkKGt1cmwpOw0KKyAg
ICAgICAgLy8gbWFrZSB0aGUgcmVxdWVzdCBidXQgZG9uJ3QgYWN0dWFsbHkgcmVmIHRoZSByZXNv
dXJjZQ0KKyAgICAgICAgLy8gd2UgZG9uJ3Qgd2FudCBhbnl0aGluZyB0byBnZXQgYXBwbGllZCB0
byBmYXN0IGRpc3BsYXkgZG9jDQorICAgICAgICBpZiAoZGwtPmRvYygpLT5mYXN0RGlzcGxheU1v
ZGUoKSkNCisgICAgICAgICAgICByZXR1cm4gMDsNCisjZW5kaWYNCiAgICAgfQ0KIA0KICAgICAN
CkluZGV4OiBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9sb2FkZXIvbG9hZGVyLmNwcAkocmV2aXNpb24gODQxKQ0KKysrIFdlYkNvcmUvbG9hZGVyL2xv
YWRlci5jcHAJKHJldmlzaW9uIDg0MikNCkBAIC0xNjIsNyArMTYyLDcgQEANCiAgICAgICAgIG9i
amVjdC0+ZGF0YShidWZmZXIsIGZhbHNlKTsNCiB9DQogDQotaW50IExvYWRlcjo6bnVtUmVxdWVz
dHMoRG9jTG9hZGVyKiBkbCkgY29uc3QNCitpbnQgTG9hZGVyOjpudW1SZXF1ZXN0cyhEb2NMb2Fk
ZXIqIGRsLCBib29sIGJsb2NraW5nT25seSkgY29uc3QNCiB7DQogICAgIC8vIEZJWE1FOiBNYXli
ZSB3ZSBzaG91bGQga2VlcCBhIGNvbGxlY3Rpb24gb2YgcmVxdWVzdHMgYnkgRG9jTG9hZGVyLCBz
byB3ZSBjYW4gZG8gdGhpcyBpbnN0YW50bHkuDQogDQpAQCAtMTcwLDE1ICsxNzAsMTkgQEANCiAN
CiAgICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxSZXF1ZXN0PiBwSXQobV9yZXF1ZXN0c1Bl
bmRpbmcpOw0KICAgICBmb3IgKDsgcEl0LmN1cnJlbnQoKTsgKytwSXQpIHsNCi0gICAgICAgIGlm
IChwSXQuY3VycmVudCgpLT5kb2NMb2FkZXIoKSA9PSBkbCkNCisgICAgICAgIFJlcXVlc3QqIHIg
PSBwSXQuY3VycmVudCgpOw0KKyAgICAgICAgaWYgKHItPmRvY0xvYWRlcigpID09IGRsICYmICgh
YmxvY2tpbmdPbmx5IHx8IHItPmlzQmxvY2tpbmcoKSkpDQogICAgICAgICAgICAgcmVzKys7DQog
ICAgIH0NCiANCiAgICAgUmVxdWVzdE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yZXF1ZXN0
c0xvYWRpbmcuZW5kKCk7DQogICAgIGZvciAoUmVxdWVzdE1hcDo6Y29uc3RfaXRlcmF0b3IgaSA9
IG1fcmVxdWVzdHNMb2FkaW5nLmJlZ2luKCk7ICEoaSA9PSBlbmQpOyArK2kpIHsNCiAgICAgICAg
IFJlcXVlc3QqIHIgPSBpLT5zZWNvbmQ7DQotICAgICAgICByZXMgKz0gKHItPmRvY0xvYWRlcigp
ID09IGRsICYmICFyLT5pc011bHRpcGFydCgpKTsNCisgICAgICAgIHJlcyArPSAoci0+ZG9jTG9h
ZGVyKCkgPT0gZGwgJiYgIXItPmlzTXVsdGlwYXJ0KCkgJiYgKCFibG9ja2luZ09ubHkgfHwgci0+
aXNCbG9ja2luZygpKSk7DQogICAgIH0NCisgICAgDQorICAgIGlmIChibG9ja2luZ09ubHkpDQor
ICAgICAgICByZXR1cm4gcmVzOw0KIA0KICAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPFJl
cXVlc3Q+IGJkSXQobV9yZXF1ZXN0c0JhY2tncm91bmREZWNvZGluZyk7DQogICAgIGZvciAoOyBi
ZEl0LmN1cnJlbnQoKTsgKytiZEl0KQ0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1JlcXVlc3QuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9sb2FkZXIvUmVxdWVzdC5jcHAJKHJldmlzaW9uIDg0
MSkNCisrKyBXZWJDb3JlL2xvYWRlci9SZXF1ZXN0LmNwcAkocmV2aXNpb24gODQyKQ0KQEAgLTQ3
LDQgKzQ3LDkgQEANCiAgICAgbV9vYmplY3QtPnNldFJlcXVlc3QoMCk7DQogfQ0KIA0KK2Jvb2wg
UmVxdWVzdDo6aXNCbG9ja2luZygpIGNvbnN0IA0KK3sgDQorICAgIHJldHVybiBtX29iamVjdC0+
dHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOyANCit9DQorDQogfSAvL25h
bWVzcGFjZSBXZWJDb3JlDQpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkocmV2aXNpb24gODQxKQ0KKysrIFdlYkNvcmUvcGFn
ZS9GcmFtZS5oCShyZXZpc2lvbiA4NDIpDQpAQCAtNzg4LDEwICs3ODgsMzQgQEANCiAgIENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbiogc2VsZWN0aW9uQ29tcHV0ZWRTdHlsZShOb2RlKiAmbm9k
ZVRvUmVtb3ZlKSBjb25zdDsNCiANCiAgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c0JhclRleHQo
Y29uc3QgU3RyaW5nJik7DQotICAgIA0KKw0KICAgICB2b2lkIGF1dG9zY3JvbGxUaW1lckZpcmVk
KFRpbWVyPEZyYW1lPiopOw0KIA0KKyNpZiBVU0UoRE9VQkxFVFJFRSkgIA0KIHB1YmxpYzoNCisv
LyBmYXN0IGRpc3BsYXkgbW9kZSBzdHVmZiANCisgICAgZW51bSBGYXN0RGlzcGxheVN0YXRlIHsN
CisgICAgICAgIFNob3dpbmdJbml0aWFsRG9jdW1lbnQsDQorICAgICAgICBTaG93aW5nRmFzdERp
c3BsYXlEb2N1bWVudCwNCisgICAgICAgIFN3aXRjaGluZ1RvRmluYWxEb2N1bWVudCwNCisgICAg
ICAgIFNob3dpbmdGaW5hbERvY3VtZW50DQorICAgIH07DQorDQorICAgIGJvb2wgZmFzdERpc3Bs
YXlNb2RlKCkgY29uc3Q7DQorICAgIHZvaWQgc2V0RmFzdERpc3BsYXlNb2RlKGJvb2wgZmFzdG1v
ZGUpOw0KKyAgICB2b2lkIHN3aXRjaFRvRG9jV2l0aFBlbmRpbmdTcmMoKTsNCisgICAgdm9pZCBz
d2l0Y2hUb0ZpbmFsRG9jKCk7DQorICAgIHZvaWQgc3dpdGNoVG9GYXN0RGlzcGxheURvY0lmTmVl
ZGVkKEtVUkwgcmVxdWVzdFVybCk7DQorICAgIHZvaWQgc3dpdGNoVG9GYXN0RGlzcGxheURvYygp
Ow0KKyAgICBGYXN0RGlzcGxheVN0YXRlIGZhc3REaXNwbGF5U3RhdGUoKSBjb25zdDsgICAgDQor
ICAgIGJvb2wgaGFzVmlzaWJsZVJlbmRlcmluZygpIGNvbnN0Ow0KKyAgICB2b2lkIHVwZGF0ZUZh
c3REaXNwbGF5U3RhdHVzKCk7DQorICAgIA0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuY2VsSW5Qcm9n
cmVzcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9DQorICAgIHZpcnR1YWwgYm9vbCBvYmplY3RB
dmFpbGFibGVJbkRpc2tDYWNoZShLVVJMIHVybCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0NCisj
ZW5kaWYNCisNCitwdWJsaWM6DQogICBmcmllbmQgY2xhc3MgRnJhbWVNYWM7DQogICBmcmllbmQg
Y2xhc3MgRnJhbWVXaW47DQogI2lmIFBMQVRGT1JNKEdESykNCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CShyZXZpc2lvbiA4NDEpDQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9u
IDg0MikNCkBAIC01NjAsNiArNTYwLDEwIEBADQogICAgIH0NCiAgICAgc2V0U3RhdGljQmFja2dy
b3VuZCh1c2VTbG93UmVwYWludHMoKSk7DQogDQorI2lmIFVTRShET1VCTEVUUkVFKSAgICANCisg
ICAgbV9mcmFtZS0+dXBkYXRlRmFzdERpc3BsYXlTdGF0dXMoKTsNCisjZW5kaWYNCisNCiAgICAg
aWYgKGRvY3VtZW50LT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6Ok9WRVJGTE9XQ0hBTkdFRF9M
SVNURU5FUikpDQogICAgICAgICB1cGRhdGVPdmVyZmxvd1N0YXR1cyh2aXNpYmxlV2lkdGgoKSA8
IGNvbnRlbnRzV2lkdGgoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGVI
ZWlnaHQoKSA8IGNvbnRlbnRzSGVpZ2h0KCkpOw0KSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVBy
aXZhdGUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVByaXZhdGUuaAkocmV2
aXNpb24gODQxKQ0KKysrIFdlYkNvcmUvcGFnZS9GcmFtZVByaXZhdGUuaAkocmV2aXNpb24gODQy
KQ0KQEAgLTExMSw2ICsxMTEsMTAgQEANCiAgICAgICAgICAgICAsIG1faW5WaWV3U291cmNlTW9k
ZShmYWxzZSkNCiAgICAgICAgICAgICAsIGZyYW1lQ291bnQoMCkNCiAgICAgICAgICAgICAsIG1f
cHJvaGliaXRzU2Nyb2xsaW5nKGZhbHNlKQ0KKyNpZiBVU0UoRE9VQkxFVFJFRSkgICAgICAgICAg
ICANCisgICAgICAgICAgICAsIG1fZmFzdERpc3BsYXlNb2RlKGZhbHNlKQ0KKyAgICAgICAgICAg
ICwgbV9mYXN0RGlzcGxheVN0YXRlKEZyYW1lOjpTaG93aW5nSW5pdGlhbERvY3VtZW50KQ0KKyNl
bmRpZiAgICAgICAgICAgIA0KICAgICAgICAgew0KICAgICAgICAgfQ0KIA0KQEAgLTI0NCw2ICsy
NDgsMTEgQEANCiAgICAgICAgIHVuc2lnbmVkIGZyYW1lQ291bnQ7DQogDQogICAgICAgICBib29s
IG1fcHJvaGliaXRzU2Nyb2xsaW5nOw0KKyNpZiBVU0UoRE9VQkxFVFJFRSkgICAgICAgIA0KKyAg
ICAgICAgU3RyaW5nIG1fZmFzdERpc3BsYXlQZW5kaW5nU3JjOw0KKyAgICAgICAgYm9vbCBtX2Zh
c3REaXNwbGF5TW9kZTsNCisgICAgICAgIEZyYW1lOjpGYXN0RGlzcGxheVN0YXRlIG1fZmFzdERp
c3BsYXlTdGF0ZTsNCisjZW5kaWYgICAgICAgIA0KICAgICB9Ow0KIH0NCiANCkluZGV4OiBXZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cAkocmV2aXNpb24gODQxKQ0KKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDg0
MikNCkBAIC04Miw2ICs4Miw3IEBADQogI2luY2x1ZGUgIm1hcmt1cC5oIg0KICNpbmNsdWRlICJ2
aXNpYmxlX3VuaXRzLmgiDQogI2luY2x1ZGUgInhtbGh0dHByZXF1ZXN0LmgiDQorI2luY2x1ZGUg
Imh0bWx0b2tlbml6ZXIuaCINCiAjaW5jbHVkZSA8bWF0aC5oPg0KICNpbmNsdWRlIDxzeXMvdHlw
ZXMuaD4NCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+DQpAQCAtMzQ4LDYgKzM0OSwxMyBAQA0K
ICAgZC0+bV9iUGVuZGluZ0NoaWxkUmVkaXJlY3Rpb24gPSBmYWxzZTsNCiANCiAgIGNhbmNlbFJl
ZGlyZWN0aW9uKCk7DQorICANCisjaWYgVVNFKERPVUJMRVRSRUUpICANCisgICAgaWYgKCBkLT5t
X2RvYyApIHsNCisgICAgICAgIGQtPm1fZG9jLT5zZXRGYXN0RGlzcGxheU1vZGUoIGZhbHNlICk7
DQorICAgICAgICBkLT5tX2Zhc3REaXNwbGF5U3RhdGUgPSBTaG93aW5nRmluYWxEb2N1bWVudDsN
CisgICAgfSAgDQorI2VuZGlmICANCiB9DQogDQogQnJvd3NlckV4dGVuc2lvbiAqRnJhbWU6OmJy
b3dzZXJFeHRlbnNpb24oKSBjb25zdA0KQEAgLTU4Niw2ICs1OTQsMTcgQEANCiANCiAgICAgLy8g
U3VwcG9ydCBmb3IgaHR0cCBsYXN0LW1vZGlmaWVkDQogICAgIGQtPm1fbGFzdE1vZGlmaWVkID0g
ZC0+bV9tZXRhRGF0YS5nZXQoIm1vZGlmaWVkIik7DQorDQorI2lmIFVTRShET1VCTEVUUkVFKSAg
ICAgICAgDQorICAgIC8vIGZhc3QgZGlzcGxheSBzdXBwb3J0DQorICAgIGQtPm1fZG9jLT5zZXRG
YXN0RGlzcGxheU1vZGUoZmFsc2UpOw0KKyAgICBpZiAoZC0+bV9kb2MtPmlzSFRNTERvY3VtZW50
KCkgJiYgZC0+bV9mYXN0RGlzcGxheU1vZGUpIHsNCisgICAgICAgIHN0YXRpY19jYXN0PEhUTUxU
b2tlbml6ZXIqPihkLT5tX2RvYy0+dG9rZW5pemVyKCkpLT5zZXRGb3JjZVN5bmNocm9ub3VzKHRy
dWUpOw0KKyAgICAgICAgZC0+bV9mYXN0RGlzcGxheVN0YXRlID0gU2hvd2luZ0luaXRpYWxEb2N1
bWVudDsNCisgICAgfSBlbHNlDQorICAgICAgICBkLT5tX2Zhc3REaXNwbGF5U3RhdGUgPSBTaG93
aW5nRmluYWxEb2N1bWVudDsNCisgICAgZC0+bV9mYXN0RGlzcGxheVBlbmRpbmdTcmMgPSBTdHJp
bmcoKTsgICAgDQorI2VuZGlmDQogfQ0KIA0KIHZvaWQgRnJhbWU6OmNoaWxkQmVnaW4oKQ0KQEAg
LTY3Niw2ICs2OTUsOCBAQA0KICAgICBkLT5tX3ZpZXctPnJlc2l6ZUNvbnRlbnRzKDAsIDApOw0K
IH0NCiANCitjb25zdCBpbnQgY1ByZXZpZXdVbnRpbCA9IDMyNzY4Ow0KKw0KIHZvaWQgRnJhbWU6
OndyaXRlKGNvbnN0IGNoYXIqIHN0ciwgaW50IGxlbikNCiB7DQogICAgIGlmIChsZW4gPT0gMCkN
CkBAIC03MTMsMTAgKzczNCw0OSBAQA0KICAgICAgICAgZC0+bV9kb2MtPnJlY2FsY1N0eWxlKE5v
ZGU6OkZvcmNlKTsNCiAgICAgfQ0KIA0KKyNpZiBVU0UoRE9VQkxFVFJFRSkNCisgICAgLy8gc3dp
dGNoIG91dCBmcm9tIGZhc3QgZGlzcGxheSBtb2RlIHdoZW4gc2NyaXB0cyBhbmQgc3R5bGVzaGVl
dHMgaGF2ZSBiZWVuIGxvYWRlZA0KKyAgICBpZihkLT5tX2Zhc3REaXNwbGF5U3RhdGUgPCBTd2l0
Y2hpbmdUb0ZpbmFsRG9jdW1lbnQpDQorICAgIHsNCisgICAgICAgIGQtPm1fZmFzdERpc3BsYXlQ
ZW5kaW5nU3JjLmFwcGVuZChkZWNvZGVkKTsNCisgICAgICAgIGlmIChkLT5tX2RvYy0+ZmFzdERp
c3BsYXlNb2RlKCkpIHsNCisgICAgICAgICAgICBpZiAoZC0+bV9mYXN0RGlzcGxheVBlbmRpbmdT
cmMubGVuZ3RoKCkgPiA0MDk2ICYmDQorICAgICAgICAgICAgICAgIENhY2hlOjpsb2FkZXIoKS0+
bnVtUmVxdWVzdHMoZC0+bV9kb2MtPmRvY0xvYWRlcigpLCB0cnVlKT09MCl7DQorDQorICAgICAg
ICAgICAgICAgIHN3aXRjaFRvRmluYWxEb2MoKTsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0K
KyAgICAgICAgICAgIH0NCisgICAgICAgICAgICAvLyBkb24ndCBib3RoZXIgZG9pbmcgZmFzdCBk
aXNwbGF5IGZvciB0aGUgZW50aXJlIGxvbmcgZG9jdW1lbnQsIGl0IGlzIHRvbyBDUFUtY29zdGx5
DQorICAgICAgICAgICAgaWYgKGQtPm1fZmFzdERpc3BsYXlQZW5kaW5nU3JjLmxlbmd0aCgpID4g
Y1ByZXZpZXdVbnRpbCkgew0KKyAgICAgICAgICAgICAgICBpbnQgbCA9IGRlY29kZWQubGVuZ3Ro
KCkgLSAoZC0+bV9mYXN0RGlzcGxheVBlbmRpbmdTcmMubGVuZ3RoKCkgLSBjUHJldmlld1VudGls
KTsNCisgICAgICAgICAgICAgICAgaWYgKGw8PTApDQorICAgICAgICAgICAgICAgICAgICByZXR1
cm47DQorICAgICAgICAgICAgICAgIGRlY29kZWQgPSBkZWNvZGVkLmxlZnQobCk7DQorICAgICAg
ICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorI2VuZGlmDQorDQogICAgIGlmIChUb2tlbml6
ZXIqIHQgPSBkLT5tX2RvYy0+dG9rZW5pemVyKCkpIHsNCiAgICAgICAgIEFTU0VSVCghdC0+d2Fu
dHNSYXdEYXRhKCkpOw0KICAgICAgICAgdC0+d3JpdGUoZGVjb2RlZCwgdHJ1ZSk7DQogICAgIH0N
CisgICAgDQorI2lmIFVTRShET1VCTEVUUkVFKSAgICANCisgICAgaWYgKGQtPm1fZmFzdERpc3Bs
YXlTdGF0ZSA8IFN3aXRjaGluZ1RvRmluYWxEb2N1bWVudCkgew0KKyAgICAgICAgaWYgKGQtPm1f
ZmFzdERpc3BsYXlQZW5kaW5nU3JjLmxlbmd0aCgpLWRlY29kZWQubGVuZ3RoKCkgPD0gY1ByZXZp
ZXdVbnRpbCkgew0KKyAgICAgICAgICAgIGQtPm1fdmlldy0+bGF5b3V0KCk7DQorICAgICAgICAg
ICAgZC0+bV92aWV3LT51bnNjaGVkdWxlUmVsYXlvdXQoKTsNCisgICAgICAgIH0gZWxzZSB7DQor
ICAgICAgICAgICAgaWYgKGQtPm1fZG9jLT5pc0hUTUxEb2N1bWVudCgpKSB7DQorICAgICAgICAg
ICAgICAgIC8vIHRva2VuaXplciBtaWdodCBiZSBkZWxldGVkIGluIHdyaXRlKCkgaWYgT09NIGR1
cmluZyBodG1sIHBhcnNpbmcuDQorICAgICAgICAgICAgICAgIEhUTUxUb2tlbml6ZXIqIHRva2Vu
aXplciA9IHN0YXRpY19jYXN0PEhUTUxUb2tlbml6ZXIqPihkLT5tX2RvYy0+dG9rZW5pemVyKCkp
Ow0KKyAgICAgICAgICAgICAgICBpZiggdG9rZW5pemVyICkNCisgICAgICAgICAgICAgICAgICAg
IHRva2VuaXplci0+c2V0Rm9yY2VTeW5jaHJvbm91cyhmYWxzZSk7DQorICAgICAgICAgICAgfQ0K
KyAgICAgICAgfQ0KKyAgICB9DQorI2VuZGlmDQogfQ0KIA0KIHZvaWQgRnJhbWU6OndyaXRlKGNv
bnN0IFN0cmluZyYgc3RyKQ0KQEAgLTc2MCw2ICs4MjAsMTIgQEANCiAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgd3JpdGUoZGVjb2RlZCk7DQogICAgICAgICB9DQorI2lmIFVTRShET1VCTEVU
UkVFKSAgICAgICAgICAgIA0KKyAgICAgICAgaWYgKGQtPm1fZG9jLT5mYXN0RGlzcGxheU1vZGUo
KSAmJiBkLT5tX2Zhc3REaXNwbGF5UGVuZGluZ1NyYy5sZW5ndGgoKSA+IDAgJiYNCisgICAgICAg
ICAgICBDYWNoZTo6bG9hZGVyKCktPm51bVJlcXVlc3RzKGQtPm1fZG9jLT5kb2NMb2FkZXIoKSwg
dHJ1ZSkgPT0gMCkgew0KKyAgICAgICAgICAgIHN3aXRjaFRvRmluYWxEb2MoKTsNCisgICAgICAg
IH0gICAgICAgICAgICANCisjZW5kaWYgICAgICAgIA0KICAgICAgICAgZC0+bV9kb2MtPmZpbmlz
aFBhcnNpbmcoKTsNCiAgICAgfSBlbHNlDQogICAgICAgICAvLyBXZWJLaXQgcGFydGlhbGx5IHVz
ZXMgV2ViQ29yZSB3aGVuIGxvYWRpbmcgbm9uLUhUTUwgZG9jcy4gIEluIHRoZXNlIGNhc2VzIGRv
Yz09bmlsLCBidXQNCkBAIC04NTAsNiArOTE2LDEyIEBADQogDQogdm9pZCBGcmFtZTo6ZmluaXNo
ZWRQYXJzaW5nKCkNCiB7DQorI2lmIFVTRShET1VCTEVUUkVFKSAgICANCisgICAgLy8gb25seSB0
aGUgcmVhbCBkb2N1bWVudCBjYW4gcmVhbGx5IGZpbmlzaCBwYXJzaW5nDQorICAgIGlmICggZC0+
bV9kb2MtPmZhc3REaXNwbGF5TW9kZSgpKQ0KKyAgICAgICAgcmV0dXJuOw0KKyNlbmRpZiAgICAN
CisNCiAgIC8vIFRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgZnJvbSBvdXIgZGVzdHJ1Y3Rvciwg
aW4gd2hpY2ggY2FzZSB3ZSBzaG91bGRuJ3QgcHJvdGVjdCBvdXJzZWx2ZXMNCiAgIC8vIGJlY2F1
c2UgZG9pbmcgc28gd2lsbCBjYXVzZSB1cyB0byByZS1lbnRlciBvdXIgZGVzdHJ1Y3RvciB3aGVu
IHByb3RlY3RvciBnb2VzIG91dCBvZiBzY29wZS4NCiAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdG9y
ID0gcmVmQ291bnQoKSA+IDAgPyB0aGlzIDogMDsNCkBAIC04NjcsNiArOTM5LDE1IEBADQogDQog
dm9pZCBGcmFtZTo6bG9hZERvbmUoKQ0KIHsNCisjaWYgVVNFKERPVUJMRVRSRUUpICAgIA0KKyAg
ICAvLyBzd2l0Y2ggb3V0IGZyb20gZmFzdCBkaXNwbGF5IG1vZGUgd2hlbiBzY3JpcHRzIGFuZCBz
dHlsZXNoZWV0cyBoYXZlIGJlZW4gbG9hZGVkDQorICAgIGlmIChkLT5tX2RvYyAmJiBkLT5tX2Rv
Yy0+ZmFzdERpc3BsYXlNb2RlKCkgJiYNCisgICAgICAgIENhY2hlOjpsb2FkZXIoKS0+bnVtUmVx
dWVzdHMoZC0+bV9kb2MtPmRvY0xvYWRlcigpLCB0cnVlKSA9PSAwKSB7DQorICAgICAgICBzd2l0
Y2hUb0ZpbmFsRG9jKCk7DQorICAgICAgICBpZiAoIWQtPm1fYkxvYWRpbmdNYWluUmVzb3VyY2Up
DQorICAgICAgICAgICAgZC0+bV9kb2MtPmZpbmlzaFBhcnNpbmcoKTsNCisgICAgfSAgICANCisj
ZW5kaWYgICAgDQogICAgIGlmIChkLT5tX2RvYykNCiAgICAgICAgIGNoZWNrQ29tcGxldGVkKCk7
DQogfQ0KQEAgLTg4Niw2ICs5NjcsMTAgQEANCiAgIGlmIChkLT5tX2RvYyAmJiBkLT5tX2RvYy0+
cGFyc2luZygpKQ0KICAgICAgIHJldHVybjsNCiANCisjaWYgVVNFKERPVUJMRVRSRUUpDQorICB1
cGRhdGVGYXN0RGlzcGxheVN0YXR1cygpOw0KKyNlbmRpZg0KKw0KICAgLy8gU3RpbGwgd2FpdGlu
ZyBmb3IgaW1hZ2VzL3NjcmlwdHMgZnJvbSB0aGUgbG9hZGVyID8NCiAgIGludCByZXF1ZXN0cyA9
IDA7DQogICBpZiAoZC0+bV9kb2MgJiYgZC0+bV9kb2MtPmRvY0xvYWRlcigpKQ0KQEAgLTM3MDcs
NCArMzc5MiwxMjcgQEANCiAgICAgZC0+bV9wcm9oaWJpdHNTY3JvbGxpbmcgPSBwcm9oaWJpdDsN
CiB9DQogDQorI2lmIFVTRShET1VCTEVUUkVFKSAgDQorYm9vbCBGcmFtZTo6ZmFzdERpc3BsYXlN
b2RlKCkgY29uc3QNCit7DQorICAgIHJldHVybiBkLT5tX2Zhc3REaXNwbGF5TW9kZTsNCit9DQor
DQordm9pZCBGcmFtZTo6c2V0RmFzdERpc3BsYXlNb2RlKGJvb2wgZmFzdG1vZGUpDQorew0KKyAg
ICBkLT5tX2Zhc3REaXNwbGF5TW9kZSA9IGZhc3Rtb2RlOw0KK30NCisNCitGcmFtZTo6RmFzdERp
c3BsYXlTdGF0ZSBGcmFtZTo6ZmFzdERpc3BsYXlTdGF0ZSgpIGNvbnN0DQorew0KKyAgICByZXR1
cm4gZC0+bV9mYXN0RGlzcGxheVN0YXRlOw0KK30NCisNCit2b2lkIEZyYW1lOjpzd2l0Y2hUb0Zh
c3REaXNwbGF5RG9jSWZOZWVkZWQoS1VSTCByZXF1ZXN0VXJsKQ0KK3sNCisgICAgaWYgKGQtPm1f
ZmFzdERpc3BsYXlTdGF0ZSAhPSBGcmFtZTo6U2hvd2luZ0luaXRpYWxEb2N1bWVudCkNCisgICAg
ICAgIHJldHVybjsNCisNCisgICAgaWYgKG9iamVjdEF2YWlsYWJsZUluRGlza0NhY2hlKHJlcXVl
c3RVcmwpKQ0KKyAgICAgICAgcmV0dXJuOw0KKw0KKyAgICBzd2l0Y2hUb0Zhc3REaXNwbGF5RG9j
KCk7DQorfQ0KKw0KK3ZvaWQgRnJhbWU6OnN3aXRjaFRvRmFzdERpc3BsYXlEb2MoKQ0KK3sNCisg
ICAgaWYgKGQtPm1fZmFzdERpc3BsYXlTdGF0ZSA9PSBTaG93aW5nSW5pdGlhbERvY3VtZW50KSB7
DQorICAgICAgICBpZiAoaGFzVmlzaWJsZVJlbmRlcmluZygpKSB7DQorICAgICAgICAgICAgLy8g
d2UgYXJlIGRpc3BsYXlpbmcgZW5vdWdoLCBnbyBkaXJlY3RseSB0byBmaW5hbA0KKyAgICAgICAg
ICAgIGQtPm1fZG9jLT5zZXRGYXN0RGlzcGxheU1vZGUoZmFsc2UpOw0KKyAgICAgICAgICAgIGQt
Pm1fZmFzdERpc3BsYXlTdGF0ZSA9IFNob3dpbmdGaW5hbERvY3VtZW50Ow0KKyAgICAgICAgfSBl
bHNlIHsNCisgICAgICAgICAgICAvLyBub3QgZW5vdWdoDQorICAgICAgICAgICAgZC0+bV9kb2Mt
PnNldEZhc3REaXNwbGF5TW9kZSh0cnVlKTsNCisgICAgICAgICAgICBkLT5tX2Zhc3REaXNwbGF5
U3RhdGUgPSBTaG93aW5nRmFzdERpc3BsYXlEb2N1bWVudDsNCisgICAgICAgIH0NCisgICAgfQ0K
K30NCisNCit2b2lkIEZyYW1lOjpzd2l0Y2hUb0RvY1dpdGhQZW5kaW5nU3JjKCkNCit7DQorICAg
IGQtPm1fZG9jLT5maW5pc2hQYXJzaW5nKCk7DQorICAgIERvY3VtZW50KiBvbGREb2MgPSBkLT5t
X2RvYy5nZXQoKTsNCisgICAgb2xkRG9jLT5yZWYoKTsNCisNCisgICAgLy8gY3JlYXRlIHRoZSBy
ZWFsIGRpc3BsYXkgZG9jLCB0aGlzIGlzIGFsd2F5cyBodG1sIHByZXZpZXcgbW9kZSBpcyBub3Qg
dXNlZCBvdGhlcndpc2UNCisgICAgZC0+bV9kb2MgPSBET01JbXBsZW1lbnRhdGlvbjo6aW5zdGFu
Y2UoKS0+Y3JlYXRlSFRNTERvY3VtZW50KCBkLT5tX3ZpZXcuZ2V0KCkgKTsNCisgICAgaWYgKCFk
LT5tX2RvYy0+YXR0YWNoZWQoKSkNCisgICAgICBkLT5tX2RvYy0+YXR0YWNoKCApOw0KKyAgICAg
IA0KKyAgICAvLyBzZXQgaXQgdG8gdGhlIHNhbWUgc3RhdGUgYXMgb3JpZ2luYWwNCisgICAgZC0+
bV9kb2MtPnNldFVSTCggZC0+bV91cmwudXJsKCkgKTsNCisgICAgZC0+bV9kb2MtPnNldEJhc2VV
UkwoIGQtPm1fdXJsLnVybCgpICk7DQorICAgIGlmIChkLT5tX2RlY29kZXIpDQorICAgICAgICBk
LT5tX2RvYy0+c2V0RGVjb2RlcihkLT5tX2RlY29kZXIuZ2V0KCkpOw0KKyAgICBkLT5tX2RvYy0+
ZGV0ZXJtaW5lUGFyc2VNb2RlKGQtPm1fZmFzdERpc3BsYXlQZW5kaW5nU3JjKTsNCisgICAgLy8g
bW92ZSB0aGUgb3duZXJzaGlwIG9mIGRvY2xvYWRlciB0byB0aGUgbmV3IGRvYw0KKyAgICBkZWxl
dGUgZC0+bV9kb2MtPmRvY0xvYWRlcigpOw0KKyAgICBkLT5tX2RvYy0+c2V0RG9jTG9hZGVyKG9s
ZERvYy0+ZG9jTG9hZGVyKCkpOw0KKyAgICBkLT5tX2RvYy0+ZG9jTG9hZGVyKCktPnNldENhY2hl
UG9saWN5KENhY2hlUG9saWN5Q2FjaGUpOw0KKyAgICBvbGREb2MtPnNldERvY0xvYWRlcihuZXcg
RG9jTG9hZGVyKHRoaXMsIG9sZERvYyApKTsNCisNCisgICAgLy8gZ2V0IHJpZCBvZiB0aGUgZmFz
dCBkaXNwbGF5IGRvYw0KKyAgICBvbGREb2MtPmRldGFjaCgpOw0KKyAgICBpZiAoIGQtPm1fanNj
cmlwdCApDQorICAgICAgICAgZC0+bV9qc2NyaXB0LT5jbGVhcigpOw0KKyAgICBvbGREb2MtPmRl
cmVmKCk7DQorDQorICAgIC8vIHdyaXRlIHRoZSBidWZmZXJlZCBzb3VyY2UgdG8gdGhlIG5ldyBk
b2MNCisgICAgZC0+bV9kb2MtPmltcGxpY2l0T3BlbigpOw0KKyAgICAvLyB0aGUgbmV3IGRvY3Vt
ZW50IHNob3VsZCBiZSBpbiBub3JtYWwgZGlzcGxheSBtb2RlIGFscmVhZHksDQorICAgIC8vIG1v
ZGUgZmxhZyBzaG91bGQgYmUgc2V0IGJlZm9yZSBkb2N1bWVudCB3cml0aW5nDQorICAgIGQtPm1f
ZG9jLT5zZXRGYXN0RGlzcGxheU1vZGUoZmFsc2UpOw0KKyAgICBkLT5tX2Zhc3REaXNwbGF5U3Rh
dGUgPSBTd2l0Y2hpbmdUb0ZpbmFsRG9jdW1lbnQ7DQorDQorICAgIGlmIChkLT5tX2RvYy0+dG9r
ZW5pemVyKCkpDQorICAgICAgICBkLT5tX2RvYy0+dG9rZW5pemVyKCktPndyaXRlKCBkLT5tX2Zh
c3REaXNwbGF5UGVuZGluZ1NyYywgdHJ1ZSApOw0KKyAgICBkLT5tX2Zhc3REaXNwbGF5UGVuZGlu
Z1NyYyA9IFN0cmluZygpOw0KKw0KKyAgICAvLyBmb3JjZSBsYXlvdXQNCisgICAgZC0+bV92aWV3
LT5sYXlvdXQoKTsNCit9DQorDQordm9pZCBGcmFtZTo6c3dpdGNoVG9GaW5hbERvYygpDQorew0K
KyAgICBpZiAoZC0+bV9kb2MtPmZhc3REaXNwbGF5TW9kZSgpICYmIGQtPm1fZmFzdERpc3BsYXlQ
ZW5kaW5nU3JjLmxlbmd0aCgpID4gMCAmJiAhY2FuY2VsSW5Qcm9ncmVzcygpKQ0KKyAgICAgICAg
c3dpdGNoVG9Eb2NXaXRoUGVuZGluZ1NyYygpOw0KKyAgICBlbHNlIHsNCisgICAgICAgIGlmIChk
LT5tX2RvYy0+dG9rZW5pemVyKCkpIHsNCisgICAgICAgICAgICBpZiAoZC0+bV9kb2MtPmlzSFRN
TERvY3VtZW50KCkpDQorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxUb2tlbml6ZXIq
PihkLT5tX2RvYy0+dG9rZW5pemVyKCkpLT5zZXRGb3JjZVN5bmNocm9ub3VzKGZhbHNlKTsNCisg
ICAgICAgICAgICBpZiAoZC0+bV9mYXN0RGlzcGxheVBlbmRpbmdTcmMubGVuZ3RoKCk+MCkNCisg
ICAgICAgICAgICAgICAgZC0+bV9kb2MtPnRva2VuaXplcigpLT53cml0ZSggZC0+bV9mYXN0RGlz
cGxheVBlbmRpbmdTcmMsIHRydWUgKTsNCisgICAgICAgIH0NCisgICAgICAgIGQtPm1fZmFzdERp
c3BsYXlQZW5kaW5nU3JjID0gU3RyaW5nKCk7DQorICAgICAgICBkLT5tX2RvYy0+c2V0RmFzdERp
c3BsYXlNb2RlKGZhbHNlKTsNCisgICAgICAgIGQtPm1fZmFzdERpc3BsYXlTdGF0ZSA9IFNob3dp
bmdGaW5hbERvY3VtZW50Ow0KKyAgICB9DQorfQ0KKw0KK2Jvb2wgRnJhbWU6Omhhc1Zpc2libGVS
ZW5kZXJpbmcoKSBjb25zdA0KK3sNCisgICAgaWYgKGQtPm1fZG9jICYmICFkLT5tX2RvYy0+cGFy
c2luZygpKSAgICANCisgICAgICAgIHJldHVybiB0cnVlOw0KKyAgICANCisgICAgLy8gY291bnQg
aG93IG1hbnkgcmVuZGVyZXJzIHdlIGhhdmUgdG8gZ2V0IGlkZWEgaG93IG11Y2ggaXMgdmlzaWJs
ZSBhbHJlYWR5DQorICAgIFJlbmRlck9iamVjdCogciA9IGQtPm1fZG9jLT5yZW5kZXJlcigpOw0K
KyAgICBpbnQgcmVxdWlyZWRSZW0gPSAxMDA7DQorICAgIHdoaWxlIChyICYmIC0tcmVxdWlyZWRS
ZW0pDQorICAgICAgICByID0gci0+bmV4dEluUHJlT3JkZXIoKTsNCisgICAgcmV0dXJuICFyZXF1
aXJlZFJlbTsNCit9DQorDQordm9pZCBGcmFtZTo6dXBkYXRlRmFzdERpc3BsYXlTdGF0dXMoKQ0K
K3sNCisgICAgaWYgKGQtPm1fZmFzdERpc3BsYXlTdGF0ZSA9PSBTd2l0Y2hpbmdUb0ZpbmFsRG9j
dW1lbnQgJiYgaGFzVmlzaWJsZVJlbmRlcmluZygpKQ0KKyAgICAgICAgZC0+bV9mYXN0RGlzcGxh
eVN0YXRlID0gU2hvd2luZ0ZpbmFsRG9jdW1lbnQ7DQorfQ0KKyNlbmRpZiAvLyBVU0UoRE9VQkxF
VFJFRSkNCisNCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlDQpJbmRleDogV2Via2l0UzYwL2dyb3Vw
L3dlYmtpdC5tbXANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJraXRTNjAvZ3JvdXAvd2Via2l0Lm1tcAko
cmV2aXNpb24gODQxKQ0KKysrIFdlYmtpdFM2MC9ncm91cC93ZWJraXQubW1wCShyZXZpc2lvbiA4
NDIpDQpAQCAtMTA2LDkgKzEwNiw3IEBADQogVVNFUklOQ0xVREUgICAgIC4uXFBhZ2VTY2FsZXJc
aW5jDQogVVNFUklOQ0xVREUgICAuLlxIaXN0b3J5UHJvdmlkZXJcaW5jDQogTVdfTEFZRVJfU1lT
VEVNSU5DTFVERQ0KLSNpZmRlZiBSRF8zMl9CUk9XU0VSDQogVVNFUklOQ0xVREUgICAuLlxUb29s
QmFyXGluYw0KLSNlbmRpZg0KICNlbHNlDQogU1lTVEVNSU5DTFVERSBcRXBvYzMyXGluY2x1ZGUg
XEVwb2MzMlxpbmNsdWRlXG9lbQ0KICNlbmRpZg0KSW5kZXg6IFdlYmtpdFM2MC9Ccm93c2VyVmll
dy9zcmMvV2ViS2l0Vmlldy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJraXRTNjAvQnJvd3NlclZp
ZXcvc3JjL1dlYktpdFZpZXcuY3BwCShyZXZpc2lvbiA4NDEpDQorKysgV2Via2l0UzYwL0Jyb3dz
ZXJWaWV3L3NyYy9XZWJLaXRWaWV3LmNwcAkocmV2aXNpb24gODQyKQ0KQEAgLTk3MCw4ICs5NzAs
OCBAQA0KIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIHZvaWQgQ1dlYktpdFZpZXc6OlN5bmNS
ZXBhaW50KCkNCiAgICAgew0KLSAgLy8gb25seSByZXBhaW50IHdoZW4gdmlldyBvd25zIHRoZSBz
dXJmYWNlDQotICBpZiggaVJlbmRlclRhcmdldC0+Q3VycmVudFZpZXcoKSAhPSB0aGlzICkgcmV0
dXJuOw0KKyAgICAvLyBvbmx5IHJlcGFpbnQgd2hlbiB2aWV3IG93bnMgdGhlIHN1cmZhY2UNCisg
ICAgaWYoIGlSZW5kZXJUYXJnZXQtPkN1cnJlbnRWaWV3KCkgIT0gdGhpcyApIHJldHVybjsgICAg
DQogDQogICAgIENGYnNCaXRHYyZnYyA9IGlXZWJDb3JlQ29udGV4dC0+R2MoKTsNCiAgICAgZ2Mu
UmVzZXQoKTsNCkBAIC05ODYsNiArOTg2LDkgQEANCiAgICAgICAgIHsNCiAgICAgICAgIC8vIGVu
c3VyZSBhbGwgZG9jdW1lbnRzIGhhdmUgdmFsaWQgbGF5b3V0DQogICAgICAgICBpTWFpbkZyYW1l
LT5MYXlvdXRSZWN1cnNpdmUoKTsNCisgICAgICAgIA0KKyAgICAgICAgaWYgKGlNYWluRnJhbWUt
PldlYktpdEJyaWRnZSgpLldlYkNvcmVCcmlkZ2UoKS5EcmF3aW5nRGlzYWJsZWQoKSkNCisgICAg
ICAgICAgICByZXR1cm47ICAgICAgICANCiANCiAgICAgICAgIC8vIG1heWJlIGl0IGdvdCBiaWdn
ZXIgaW4gbGF5b3V0Pw0KICAgICAgICAgcmVjdCA9IGlSZXBhaW50UmVnaW9uLkJvdW5kaW5nUmVj
dCgpOw0KQEAgLTEwMzksOCArMTA0Miw4IEBADQogICAgIC8vIHRoZSB0aW1lciBtdXN0IGFsd2F5
cyBiZSBjYW5jZWxlZCBoZXJlIQ0KICAgICBpUmVwYWludFRpbWVyLT5DYW5jZWwoKTsNCiANCi0g
IC8vIG9ubHkgcmVwYWludCB3aGVuIHRoaXMgdmlldyBvd25zIHRoZSBzdXJmYWNlDQotICBpZigg
aVJlbmRlclRhcmdldC0+Q3VycmVudFZpZXcoKSAhPSB0aGlzICkgcmV0dXJuOw0KKyAgICAvLyBv
bmx5IHJlcGFpbnQgd2hlbiB0aGlzIHZpZXcgb3ducyB0aGUgc3VyZmFjZQ0KKyAgICBpZiggaVJl
bmRlclRhcmdldC0+Q3VycmVudFZpZXcoKSAhPSB0aGlzICkgcmV0dXJuOw0KIA0KICAgICAvLyBh
bnl0aGluZyB0byBkbz8NCiAgICAgaWYoICFpUmVwYWludFJlZ2lvbi5Jc0VtcHR5KCkgKQ0KSW5k
ZXg6IFdlYmtpdFM2MC9Ccm93c2VyVmlldy9zcmMvS2V5RXZlbnRIYW5kbGVyLmNwcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYmtpdFM2MC9Ccm93c2VyVmlldy9zcmMvS2V5RXZlbnRIYW5kbGVyLmNwcAko
cmV2aXNpb24gODQxKQ0KKysrIFdlYmtpdFM2MC9Ccm93c2VyVmlldy9zcmMvS2V5RXZlbnRIYW5k
bGVyLmNwcAkocmV2aXNpb24gODQyKQ0KQEAgLTE1NCw3ICsxNTQsNyBAQA0KICAgICANCiAgICAg
aWYgKCFmb2N1c2VkKSByZXR1cm47DQogDQotICAgIGlmKGVsVHlwZSA9PSBUQnJDdGxEZWZzOjpF
RWxlbWVudFNtYXJ0TGlua1RlbCkNCisvKiAgICBpZihlbFR5cGUgPT0gVEJyQ3RsRGVmczo6RUVs
ZW1lbnRTbWFydExpbmtUZWwpDQogICAgICAgICB7DQogICAgICAgICBmb2N1c2VkLT5TbWFydExp
bmtIYW5kbGVyKCktPkhhbmRsZU1ha2VDYWxsKCk7DQogICAgICAgICB9DQpAQCAtMTczLDcgKzE3
Myw3IEBADQogICAgICAgICAgICAgaVdlYktpdFZpZXctPldlYktpdENvbnRyb2woKS5CckN0bCgp
LkNhcGFiaWxpdGllcygpICYgVEJyQ3RsRGVmczo6RUNhcGFiaWxpdHlUb29sQmFyKQ0KICAgICAg
ICAgew0KICAgICAgICAgaVdlYktpdFZpZXctPkxhdW5jaFRvb2xCYXJMKCk7DQotICAgICAgICB9
DQorICAgICAgICB9Ki8NCiAgICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAt
MjIzLDYgKzIyMyw3IEBADQogICAgIC8vIG1vdmUgbmVlZHMgb25seSB0aGUgZXZlbnRrZXkNCiAg
ICAgaWYoIGRpcmVjdGlvbiAhPSBFV2ViTmF2QW55ICYmIGFFdmVudENvZGUgPT0gRUV2ZW50S2V5
ICkNCiAgICAgICAgIHsNCisvKiAgICAgICAgDQogICAgICAgICAvLyBzbWFydGxpbmsgbW92ZSAg
ICANCiAgICAgICAgIGlmIChpV2ViS2l0Vmlldy0+U21hcnRMaW5rTW9kZSgpICE9IEVTbWFydExp
bmtOb25lKQ0KICAgICAgICAgICAgIHsNCkBAIC0yMzYsNyArMjM3LDcgQEANCiAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgIH0NCiAgICAgICAgIC8vIG5vcm1hbCBzY3JvbGxpbmcNCi0g
ICAgICAgIGVsc2UNCisgICAgICAgIGVsc2UqLw0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAvLyAgICANCiAgICAgICAgICAgICBUQm9vbCBmYXN0c2Nyb2xsKCBpSm95c3RpY2tUaW1lci0+
SXNBY3RpdmUoKSApOw0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13483</attachid>
            <date>2007-03-05 18:42:17 -0800</date>
            <delta_ts>2007-03-07 22:37:22 -0800</delta_ts>
            <desc>patch for ToT (rev 19972)</desc>
            <filename>doubleTree</filename>
            <type>text/plain</type>
            <size>18474</size>
            <attacher name="Grace Kloba">klobag</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTk3MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTMgQEAKKzIwMDctMDMtMDUgIEdyYWNlIEtsb2JhICA8a2xvYmFnQGdtYWlsLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXQVJO
SU5HOiBOTyBURVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQKKworCUZpeGVzOiBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI3OQorCUltcGxlbWVudGVkIHR3byBwYXNz
IGxvYWRpbmcuIEVuYWJsZWQgYnkgV1RGX1VTRV9ET1VCTEVfVFJFRSBmbGFnLgorCisgICAgICAg
ICogY29uZmlnLmg6IGRlZmluZSBXVEZfVVNFX0RPVUJMRV9UUkVFIHRvIGJlIDEgZm9yIE1BQyBi
dWlsZAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpEb2N1bWVudCk6IGluaXRpYWxpemUgbWVtYmVyIHZhcmlhYmxlIG1faW5GYXN0RGlz
cGxheQorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKTogd2hpbGUgaW4gZmFzdCBkaXNwbGF5IG1vZGUs
IGlnbm9yZSBwZW5kaW5nIHN0eWxlIHNoZWV0cworICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnNldERvY0xvYWRlcik6IAorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmluRmFzdERpc3Bs
YXkpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEZhc3REaXNwbGF5KToKKworICAg
ICAgICAqIGh0bWwvSFRNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9r
ZW5pemVyOjpzY3JpcHRIYW5kbGVyKTogd2hpbGUgaW4gZmFzdCBkaXNwbGF5IG1vZGUsIGRvbid0
IGV4ZWN1dGUgSmF2YVNjcmlwdAorCisgICAgICAgICogbG9hZGVyL0NhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlOjpyZXF1ZXN0UmVzb3VyY2UpOiB3aGlsZSBpbiBmYXN0IGRpc3Bs
YXkgbW9kZSwgZG9uJ3QgbGV0IHN0eWxlIHNoZWV0IGFuZCBKYXZhU2NyaXB0IGJsb2NrCisKKyAg
ICAgICAgKiBsb2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpjaGVja05vdGlmeSk6IGFkZCBub3RpZnlGaW5pc2hlZCgp
IGFzIGNsaWVudCBuZWVkcyAidGhpcyIgcG9pbnRlcgorCisgICAgICAgICogbG9hZGVyL0RvY0xv
YWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jTG9hZGVyOjpyZXBsYWNlRG9jKToKKworICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6RnJhbWVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRT
dWJmcmFtZSk6IHdoaWxlIGluIGZhc3QgZGlzcGxheSBtb2RlLCBkb24ndCBsb2FkIHN1Yi1mcmFt
ZQorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpiZWdpbik6IG9ubHkgdXNlIGZhc3QgZGlzcGxheSBmb3Ig
SFRNTCBkb2N1bWVudAorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OndyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjplbmRJZk5vdExvYWRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrRW1pdExvYWRFdmVudCk6IGRvbid0IGNhbGwgbG9h
ZCBldmVudCBpZiB3ZSBuZWVkIHRvIHN3aXRjaCB0byBmaW5hbCBkb2MgbW9kZQorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQbHVnaW4pOiB3aGlsZSBpbiBmYXN0IGRpc3BsYXkg
bW9kZSwgZG9uJ3QgbG9hZCBwbHVnaW4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjph
ZGRDYWNoZWRSZXF1ZXN0KToga2VlcCB0cmFjayBvZiBleHRlcm5hbCBzdHlsZSBzaGVldCBhbmQg
SmF2YVNjcmlwdAorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlbW92ZUFsbENhY2hl
ZFJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpub3RpZnlGaW5pc2hl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3dpdGNoVG9GaW5hbERvY0lmUmVh
ZHkpOiBzd2l0Y2ggdG8gZmluYWwgZG9jdW1lbnQKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5oOiBGcmFtZUxvYWRlciBkZXN0cnVjdG9yIG5lZWRzIHRvIGJlIHZpcnR1YWwKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpGcmFtZUxvYWRlcjo6c2V0VXNlRmFzdERpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyOjpuZWVkVG9Td2l0
Y2gpOgorCiAyMDA3LTAzLTA2ICBOaWtvbGFzIFppbW1lcm1hbm4gIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCkluZGV4OiBXZWJDb3JlL2NvbmZpZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY29uZmlnLmgJKHJldmlzaW9uIDE5OTcyKQorKysgV2Vi
Q29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNyBAQCB0eXBlZGVmIGZs
b2F0IENHRmxvYXQ7CiAjaWYgUExBVEZPUk0oTUFDKQogI2RlZmluZSBXVEZfVVNFX0pBVkFTQ1JJ
UFRDT1JFX0JJTkRJTkdTIDEKICNkZWZpbmUgV1RGX1VTRV9OUE9CSkVDVCAxCisjZGVmaW5lIFdU
Rl9VU0VfRE9VQkxFX1RSRUUgMQogI2VuZGlmCiAKICNpZiBQTEFURk9STShTWU1CSUFOKQpJbmRl
eDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAkocmV2aXNpb24gMTk5NzIpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwMCw2ICszMDAsOSBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRE9N
SW1wbGVtZW50YXRpb24qIGltCiAgICAgLCBtX2NyZWF0ZVJlbmRlcmVycyh0cnVlKQogICAgICwg
bV9pblBhZ2VDYWNoZShmYWxzZSkKICAgICAsIG1faXNBbGxvd2VkVG9Mb2FkTG9jYWxSZXNvdXJj
ZXMoZmFsc2UpCisjaWYgVVNFKERPVUJMRV9UUkVFKQorICAgICwgbV9pbkZhc3REaXNwbGF5KGZh
bHNlKQorI2VuZGlmICAgIAogewogICAgIG1fZG9jdW1lbnQucmVzZXRTa2lwcGluZ1JlZih0aGlz
KTsKIApJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxOTk3MikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw3ICsyNDksMTIgQEAgcHVibGljOgogICAgICAqIFRo
aXMgbWV0aG9kIHJldHVybnMgdHJ1ZSBpZiBhbGwgdG9wLWxldmVsIHN0eWxlc2hlZXRzIGhhdmUg
bG9hZGVkIChpbmNsdWRpbmcKICAgICAgKiBhbnkgQGltcG9ydHMgdGhhdCB0aGV5IG1heSBiZSBs
b2FkaW5nKS4KICAgICAgKi8KKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisgICAgYm9vbCBoYXZlU3R5
bGVzaGVldHNMb2FkZWQoKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdTdHlsZXNoZWV0cyA8PSAw
IHx8IG1faWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfHwgbV9pbkZhc3REaXNwbGF5OyB9CisjZWxzZQogICAgIGJvb2wgaGF2
ZVN0eWxlc2hlZXRzTG9hZGVkKCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5nU3R5bGVzaGVldHMg
PD0gMCB8fCBtX2lnbm9yZVBlbmRpbmdTdHlsZXNoZWV0czsgfQorI2VuZGlmCiAKICAgICAvKioK
ICAgICAgKiBJbmNyZW1lbnRzIHRoZSBudW1iZXIgb2YgcGVuZGluZyBzaGVldHMuICBUaGUgPGxp
bms+IGVsZW1lbnRzCkBAIC0zMDYsNiArMzExLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIHN0YXRpYyB2b2lkIHVwZGF0
ZURvY3VtZW50c1JlbmRlcmluZygpOwogICAgIERvY0xvYWRlciogZG9jTG9hZGVyKCkgeyByZXR1
cm4gbV9kb2NMb2FkZXI7IH0KKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisgICAgdm9pZCBzZXREb2NM
b2FkZXIoRG9jTG9hZGVyKiBsb2FkZXIpIHsgbV9kb2NMb2FkZXIgPSBsb2FkZXI7IH0KKyAgICBi
b29sIGluRmFzdERpc3BsYXkoKSBjb25zdCB7IHJldHVybiBtX2luRmFzdERpc3BsYXk7IH0KKyAg
ICB2b2lkIHNldEZhc3REaXNwbGF5KGJvb2wgZmFzdCkgeyBtX2luRmFzdERpc3BsYXkgPSBmYXN0
OyB9CisjZW5kaWYgICAgIAogCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2goKTsKQEAgLTgzNyw2ICs4NDcsOSBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX2ljb25VUkw7CiAKICAgICBib29sIG1faXNBbGxvd2VkVG9Mb2FkTG9jYWxSZXNvdXJjZXM7
CisjaWYgVVNFKERPVUJMRV9UUkVFKQorICAgIGJvb2wgbV9pbkZhc3REaXNwbGF5OworI2VuZGlm
ICAgIAogfTsKIAogfSAvL25hbWVzcGFjZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAkocmV2
aXNpb24gMTk5NzIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwMiw2ICs0MDIsMTIgQEAgSFRNTFRva2VuaXplcjo6U3RhdGUgSFRNTFRva2Vu
aXplcjo6c2NyaQogI2VuZGlmCiAgICAgICAgICAgICAvLyBQYXJzZSBzY3JpcHRDb2RlIGNvbnRh
aW5pbmcgPHNjcmlwdD4gaW5mbwogICAgICAgICAgICAgZG9TY3JpcHRFeGVjID0gc3RhdGljX2Nh
c3Q8SFRNTFNjcmlwdEVsZW1lbnQqPihzY3JpcHROb2RlLmdldCgpKS0+c2hvdWxkRXhlY3V0ZUFz
SmF2YVNjcmlwdCgpOworI2lmIFVTRShET1VCTEVfVFJFRSkKKyAgICAgICAgICAgIGlmIChtX2Rv
Yy0+aW5GYXN0RGlzcGxheSgpKSB7CisgICAgICAgICAgICAgICAgbV9kb2MtPmZyYW1lKCktPmxv
YWRlcigpLT5uZWVkVG9Td2l0Y2goKTsKKyAgICAgICAgICAgICAgICBkb1NjcmlwdEV4ZWMgPSBm
YWxzZTsKKyAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAgICAgc2NyaXB0Tm9kZSA9IDA7
CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCShyZXZpc2lvbiAxOTk3MikKKysrIFdl
YkNvcmUvbG9hZGVyL0NhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAgQEAK
ICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VIYW5kbGUuaCIKKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisjaW5jbHVkZSAiRnJhbWUu
aCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKQEAgLTExMSw2ICsxMTUsMTMgQEAgQ2FjaGVkUmVzb3VyY2UqIENhY2hlOjpyZXF1ZXN0
UmVzb3VyY2UoRAogICAgIGlmIChyZXNvdXJjZS0+dHlwZSgpICE9IHR5cGUpCiAgICAgICAgIHJl
dHVybiAwOwogCisjaWYgVVNFKERPVUJMRV9UUkVFKQorICAgIC8vIGFkZENhY2hlZFJlcXVlc3Qo
KSByZXR1cm5zIHRydWUgaWYgcmVxdWVzdGluZyBjc3Mgb3IganMgZHVyaW5nIGZhc3QgZGlzcGxh
eS4KKyAgICAvLyB3ZSByZXR1cm4gMCB0byBub3QgYmxvY2sgcGFyc2luZworICAgIGlmIChkb2NM
b2FkZXItPmZyYW1lKCkgJiYgZG9jTG9hZGVyLT5mcmFtZSgpLT5sb2FkZXIoKS0+YWRkQ2FjaGVk
UmVxdWVzdChyZXNvdXJjZSkpCisgICAgICAgIHJldHVybiAwOworI2VuZGlmCisKICAgICByZXR1
cm4gcmVzb3VyY2U7CiB9CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwCShyZXZpc2lvbiAxOTk3MikKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw2ICs4NywxMSBAQCB2b2lkIENhY2hlZENTU1N0
eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KCkKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlciB3
KG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xpZW50ICpjID0gdy5uZXh0
KCkpCiAgICAgICAgIGMtPnNldENTU1N0eWxlU2hlZXQobV9yZXNwb25zZS51cmwoKS51cmwoKSwg
bV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKSwgbV9zaGVldCk7CisjaWYgVVNFKERPVUJMRV9U
UkVFKSAgICAgICAgCisgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIgbihtX2NsaWVudHMp
OworICAgIHdoaWxlIChDYWNoZWRSZXNvdXJjZUNsaWVudCAqYyA9IG4ubmV4dCgpKQorICAgICAg
ICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsKKyNlbmRpZiAgICAgICAgCiB9CiAKIHZvaWQgQ2Fj
aGVkQ1NTU3R5bGVTaGVldDo6ZXJyb3IoKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgJKHJldmlzaW9uIDE5
OTcyKQorKysgV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3
LDYgKzg3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExvYWRJblByb2dyZXNzKGJvb2wpOwog
ICAgIGJvb2wgbG9hZEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX2xvYWRJblByb2dyZXNz
OyB9CiAKKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisgICAgdm9pZCByZXBsYWNlRG9jKERvY3VtZW50
KiBkb2MpIHsgbV9kb2MgPSBkb2M7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIENhY2hlZFJl
c291cmNlKiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcqIGNoYXJzZXQgPSAwLCBib29sIHNraXBDYW5Mb2FkQ2hlY2sg
PSBmYWxzZSk7CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDE5OTcyKQor
KysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjUs
NiArMjI1LDExIEBAIEZyYW1lTG9hZGVyOjpGcmFtZUxvYWRlcihGcmFtZSogZnJhbWUsIEYKICAg
ICAsIG1fcmVkaXJlY3Rpb25UaW1lcih0aGlzLCAmRnJhbWVMb2FkZXI6OnJlZGlyZWN0aW9uVGlt
ZXJGaXJlZCkKICAgICAsIG1fb3BlbmVyKDApCiAgICAgLCBtX29wZW5lZEJ5SmF2YVNjcmlwdChm
YWxzZSkKKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisgICAgLCBtX3VzZUZhc3REaXNwbGF5KHRydWUp
CisgICAgLCBtX2ZpbmlzaFBhcnNpbmdDYWxsZWQoZmFsc2UpCisgICAgLCBtX25lZWRTd2l0Y2go
ZmFsc2UpCisjZW5kaWYgCiB7CiB9CiAKQEAgLTM5Niw2ICs0MDEsMTQgQEAgRnJhbWUqIEZyYW1l
TG9hZGVyOjpsb2FkU3ViZnJhbWUoSFRNTEZyYQogICAgIGlmICghY2FuTG9hZCh1cmwsIHJlZmVy
cmVyLCBoaWRlUmVmZXJyZXIpKQogICAgICAgICByZXR1cm4gMDsKIAorI2lmIFVTRShET1VCTEVf
VFJFRSkKKyAgICAvLyBkb24ndCBjcmVhdGUgc3ViLWZyYW1lIGR1cmluZyBmYXN0IGRpc3BsYXkK
KyAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5GYXN0RGlzcGxheSgpKSB7CisgICAgICAg
IG1fbmVlZFN3aXRjaCA9IHRydWU7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyNlbmRpZgor
CiAgICAgRnJhbWUqIGZyYW1lID0gbV9jbGllbnQtPmNyZWF0ZUZyYW1lKHVybCwgbmFtZSwgb3du
ZXJFbGVtZW50LCBoaWRlUmVmZXJyZXIgPyBTdHJpbmcoKSA6IHJlZmVycmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd3NTY3JvbGxpbmcsIG1hcmdpbldp
ZHRoLCBtYXJnaW5IZWlnaHQpOwogCkBAIC01NTIsNiArNTY1LDE2IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnN0b3BMb2FkaW5nKGJvb2wgc2VuZFUKICAgICAgICAgY2hpbGQtPmxvYWRlcigpLT5zdG9w
TG9hZGluZyhzZW5kVW5sb2FkKTsKIAogICAgIGNhbmNlbFJlZGlyZWN0aW9uKCk7CisKKyNpZiBV
U0UoRE9VQkxFX1RSRUUpCisgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkgJiYgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+aW5GYXN0RGlzcGxheSgpKSB7CisgICAgICAgIHJlbW92ZUFsbENhY2hlZFJl
cXVlc3RzKCk7CisgICAgICAgIG1fcGVuZGluZ1NyYyA9IFN0cmluZygpOworICAgICAgICBtX2Zp
bmlzaFBhcnNpbmdDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgbV9uZWVkU3dpdGNoID0gZmFsc2U7
CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnNldEZhc3REaXNwbGF5KGZhbHNlKTsgICAg
ICAgIAorICAgIH0KKyNlbmRpZiAgCiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3AoKQpAQCAt
ODM3LDYgKzg2MCwxNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpiZWdpbihjb25zdCBLVVJMJiB1cmwp
CiAKICAgICBpZiAobV9mcmFtZS0+dmlldygpKQogICAgICAgICBtX2ZyYW1lLT52aWV3KCktPnJl
c2l6ZUNvbnRlbnRzKDAsIDApOworCisjaWYgVVNFKERPVUJMRV9UUkVFKQorICAgIGlmIChkb2N1
bWVudC0+aXNIVE1MRG9jdW1lbnQoKSAmJgorICAgICAgICAhbV9mcmFtZS0+dHJlZSgpLT5wYXJl
bnQoKSAmJiBtX3VzZUZhc3REaXNwbGF5KSB7CisgICAgICAgIG1fcGVuZGluZ1NyYyA9IFN0cmlu
ZygpOworICAgICAgICBtX2ZpbmlzaFBhcnNpbmdDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgbV9u
ZWVkU3dpdGNoID0gZmFsc2U7ICAgICAgICAgICAgCisgICAgICAgIGRvY3VtZW50LT5zZXRGYXN0
RGlzcGxheSh0cnVlKTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6d3Jp
dGUoY29uc3QgY2hhciogc3RyLCBpbnQgbGVuLCBib29sIGZsdXNoKQpAQCAtODY4LDYgKzkwMSwx
NCBAQCB2b2lkIEZyYW1lTG9hZGVyOjp3cml0ZShjb25zdCBjaGFyKiBzdHIsCiAgICAgaWYgKGRl
Y29kZWQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBVU0UoRE9VQkxFX1RSRUUp
CisgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCktPmluRmFzdERpc3BsYXkoKSkKKyAgICAgICAg
bV9wZW5kaW5nU3JjLmFwcGVuZChkZWNvZGVkKTsKKyAgICBlbHNlCisgICAgICAgIC8vIHJlc2V0
IHBvbGljeSB3aGljaCBpcyBjaGFuZ2VkIGluIHN3aXRjaFRvRmluYWxEb2NJZlJlYWR5KCkKKyAg
ICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCktPnNldENhY2hlUG9saWN5KG1f
Y2FjaGVQb2xpY3kpOyAgICAKKyNlbmRpZgorCiAgICAgaWYgKCFtX3JlY2VpdmVkRGF0YSkgewog
ICAgICAgICBtX3JlY2VpdmVkRGF0YSA9IHRydWU7CiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmRldGVybWluZVBhcnNlTW9kZShkZWNvZGVkKTsKQEAgLTkxNiw2ICs5NTcsMTEgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6ZW5kSWZOb3RMb2FkaW5nKCkKICAgICBpZiAobV9mcmFtZS0+ZG9jdW1l
bnQoKSkgewogICAgICAgICB3cml0ZSgwLCAwLCB0cnVlKTsKICAgICAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+ZmluaXNoUGFyc2luZygpOworI2lmIFVTRShET1VCTEVfVFJFRSkKKyAgICAgICAg
bV9maW5pc2hQYXJzaW5nQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgaWYgKG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmluRmFzdERpc3BsYXkoKSkgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaFRvRmlu
YWxEb2NJZlJlYWR5KCk7CisjZW5kaWYgICAgICAgICAgICAKICAgICB9IGVsc2UKICAgICAgICAg
Ly8gV2ViS2l0IHBhcnRpYWxseSB1c2VzIFdlYkNvcmUgd2hlbiBsb2FkaW5nIG5vbi1IVE1MIGRv
Y3MuICBJbiB0aGVzZSBjYXNlcyBkb2M9PW5pbCwgYnV0CiAgICAgICAgIC8vIFdlYkNvcmUgaXMg
ZW5vdWdoIGludm9sdmVkIHRoYXQgd2UgbmVlZCB0byBjaGVja0NvbXBsZXRlZCgpIGluIG9yZGVy
IGZvciBtX2JDb21wbGV0ZSB0bwpAQCAtMTA5Niw2ICsxMTQyLDE1IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmNoZWNrRW1pdExvYWRFdmVudCgpCiB7CiAgICAgaWYgKG1fd2FzTG9hZEV2ZW50RW1pdHRl
ZCB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKSB8fCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJzaW5n
KCkpCiAgICAgICAgIHJldHVybjsKKyNpZiBVU0UoRE9VQkxFX1RSRUUpCisgICAgaWYgKG1fZnJh
bWUtPmRvY3VtZW50KCktPmluRmFzdERpc3BsYXkoKSkgeworICAgICAgICAvLyBhcyBzd2l0Y2gg
d2lsbCBiZSBjYWxsZWQsIGRvbid0IGVtaXQgbG9hZCBldmVudCB5ZXQKKyAgICAgICAgaWYgKG1f
bmVlZFN3aXRjaCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgc3dpdGNoVG9GaW5hbERvY0lmUmVhZHkoKTsKKyAgICB9CisjZW5kaWYKIAogICAgIGZvciAo
RnJhbWUqIGNoaWxkID0gbV9mcmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGls
ZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGlmICghY2hpbGQtPmxv
YWRlcigpLT5tX2lzQ29tcGxldGUpIC8vIHN0aWxsIGdvdCBhIGZyYW1lIHJ1bm5pbmcgLT4gdG9v
IGVhcmx5CkBAIC0xMzc1LDYgKzE0MzAsMTMgQEAgYm9vbCBGcmFtZUxvYWRlcjo6bG9hZFBsdWdp
bihSZW5kZXJQYXJ0KgogICAgICAgICBpZiAoIWNhbkxvYWQodXJsLCBmcmFtZSgpLT5kb2N1bWVu
dCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorI2lmIFVTRShET1VCTEVfVFJFRSkK
KyAgICAgICAgLy8gZG9uJ3QgbG9hZCBwbHVnaW4gZHVyaW5nIGZhc3QgZGlzcGxheQorICAgICAg
ICBpZiAoZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aW5GYXN0RGlzcGxheSgpKSB7CisgICAgICAgICAg
ICBtX25lZWRTd2l0Y2ggPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisjZW5kaWYKICAgICAgICAgd2lkZ2V0ID0gbV9jbGllbnQtPmNyZWF0ZVBsdWdpbihwbHVn
aW5FbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCBtaW1lVHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5p
c1BsdWdpbkRvY3VtZW50KCkpOwogICAgICAgICBpZiAod2lkZ2V0KSB7CkBAIC00MzIzLDQgKzQz
ODUsMTI1IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZFRyZWF0VVJMQXNMb2NhbCgKICAgICBy
ZXR1cm4gbG9jYWxTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKTsKIH0KIAorI2lmIFVTRShET1VC
TEVfVFJFRSkKK2Jvb2wgRnJhbWVMb2FkZXI6OmFkZENhY2hlZFJlcXVlc3QoQ2FjaGVkUmVzb3Vy
Y2UqIGNhY2hlKQoreworICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5pbkZhc3REaXNwbGF5
KCkgPT0gZmFsc2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgaWYgKGNh
Y2hlLT5pc0xvYWRlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
CisgICAgc3dpdGNoKGNhY2hlLT50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6Q1NTU3R5bGVTaGVldDoKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0Ogor
ICAgICAgICAgICAgbV9uZWVkU3dpdGNoID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fQ2FjaGVkUmVx
dWVzdHMuYWRkKGNhY2hlKTsKKyAgICAgICAgICAgIGNhY2hlLT5yZWYodGhpcyk7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBGcmFtZUxvYWRlcjo6cmVtb3Zl
QWxsQ2FjaGVkUmVxdWVzdHMoKQoreworICAgIGlmICghbV9DYWNoZWRSZXF1ZXN0cy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgSGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+OjppdGVyYXRvciBlbmQgPSBt
X0NhY2hlZFJlcXVlc3RzLmVuZCgpOworICAgICAgICBmb3IgKEhhc2hTZXQ8Q2FjaGVkUmVzb3Vy
Y2UqPjo6aXRlcmF0b3IgaXQgPSBtX0NhY2hlZFJlcXVlc3RzLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkKKyAgICAgICAgICAgICgqaXQpLT5kZXJlZih0aGlzKTsKKyAgICAgICAgbV9DYWNoZWRS
ZXF1ZXN0cy5jbGVhcigpOyAgICAgICAgCisgICAgfQorfQorICAgIAordm9pZCBGcmFtZUxvYWRl
cjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHNjcmlwdCkKK3sKKyAgICBpZiAobV9D
YWNoZWRSZXF1ZXN0cy5jb250YWlucyhzY3JpcHQpKSB7CisgICAgICAgIEhhc2hTZXQ8Q2FjaGVk
UmVzb3VyY2UqPjo6aXRlcmF0b3IgaXQgPSBtX0NhY2hlZFJlcXVlc3RzLmZpbmQoc2NyaXB0KTsK
KyAgICAgICAgKCppdCktPmRlcmVmKHRoaXMpOworICAgICAgICBtX0NhY2hlZFJlcXVlc3RzLnJl
bW92ZShpdCk7CisgICAgICAgIHN3aXRjaFRvRmluYWxEb2NJZlJlYWR5KCk7ICAgICAgICAKKyAg
ICB9Cit9CisKKyNkZWZpbmUgTUFYX1NSQ19MRU5HVEggIDEyOCoxMDI0CisKK3ZvaWQgRnJhbWVM
b2FkZXI6OnN3aXRjaFRvRmluYWxEb2NJZlJlYWR5KCkKK3sKKyAgICBSZWZQdHI8RG9jdW1lbnQ+
IG9sZERvYyA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKG9sZERvYy0+aW5GYXN0RGlz
cGxheSgpKSB7CisgICAgICAgIGlmICghbV9uZWVkU3dpdGNoKSB7CisgICAgICAgICAgICBvbGRE
b2MtPnNldEZhc3REaXNwbGF5KGZhbHNlKTsKKyAgICAgICAgICAgIG1fcGVuZGluZ1NyYyA9IFN0
cmluZygpOworICAgICAgICAgICAgbV9maW5pc2hQYXJzaW5nQ2FsbGVkID0gZmFsc2U7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSBpZiAobV9DYWNoZWRSZXF1ZXN0cy5pc0Vt
cHR5KCkgfHwgbV9wZW5kaW5nU3JjLmxlbmd0aCgpPk1BWF9TUkNfTEVOR1RIKSB7CisgICAgICAg
ICAgICAvLyBzdG9wIHRoZSBvbGQgZG9jCisgICAgICAgICAgICBvbGREb2MtPnNldEZhc3REaXNw
bGF5KGZhbHNlKTsKKyAgICAgICAgICAgIGlmICghbV9maW5pc2hQYXJzaW5nQ2FsbGVkKSAgICAg
ICAgCisgICAgICAgICAgICAgICAgb2xkRG9jLT5jYW5jZWxQYXJzaW5nKCk7CisgICAgICAgICAg
ICBvbGREb2MtPnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzRnJvbUFsbE5vZGVzKCk7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAvLyBjcmVhdGUgYSBuZXcgZG9jLCBzaW1pbGFyIGFzIGJl
Z2luKGNvbnN0IEtVUkwmIHVybCkKKyAgICAgICAgICAgIFJlZlB0cjxEb2N1bWVudD4gbmV3RG9j
ID0gRE9NSW1wbGVtZW50YXRpb246Omluc3RhbmNlKCktPgorICAgICAgICAgICAgICAgIGNyZWF0
ZURvY3VtZW50KG1fcmVzcG9uc2VNSU1FVHlwZSwgbV9mcmFtZS0+dmlldygpLCBmYWxzZSk7Cisg
ICAgICAgICAgICBtX2ZyYW1lLT5kLT5tX2RvYyA9IG5ld0RvYzsKKyAgICAgICAgICAgIGlmICgh
bmV3RG9jLT5hdHRhY2hlZCgpKQorICAgICAgICAgICAgICAgIG5ld0RvYy0+YXR0YWNoKCk7Cisg
ICAgICAgICAgICBuZXdEb2MtPnNldFVSTChtX1VSTC51cmwoKSk7CisgICAgICAgICAgICBuZXdE
b2MtPnNldEJhc2VVUkwobV9VUkwudXJsKCkpOworICAgICAgICAgICAgaWYgKG1fZGVjb2RlcikK
KyAgICAgICAgICAgICAgICBuZXdEb2MtPnNldERlY29kZXIobV9kZWNvZGVyLmdldCgpKTsgICAg
ICAgIAorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBzd2FwIERvY0xvYWRlciBvd25lcnNo
aXAKKyAgICAgICAgICAgIERvY0xvYWRlciogZG9jTG9hZGVyID0gbmV3RG9jLT5kb2NMb2FkZXIo
KTsKKyAgICAgICAgICAgIG5ld0RvYy0+c2V0RG9jTG9hZGVyKG9sZERvYy0+ZG9jTG9hZGVyKCkp
OworICAgICAgICAgICAgbmV3RG9jLT5kb2NMb2FkZXIoKS0+cmVwbGFjZURvYyhuZXdEb2MuZ2V0
KCkpOworICAgICAgICAgICAgZG9jTG9hZGVyLT5yZXBsYWNlRG9jKG9sZERvYy5nZXQoKSk7Cisg
ICAgICAgICAgICBvbGREb2MtPnNldERvY0xvYWRlcihkb2NMb2FkZXIpOworICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyByZW1vdmUgdGhlIG9sZCBkb2MKKyAgICAgICAgICAgIG9sZERvYy0+
ZGV0YWNoKCk7CisgICAgICAgICAgICBpZiAobV9mcmFtZS0+c2NyaXB0UHJveHkoKSkKKyAgICAg
ICAgICAgICAgICBtX2ZyYW1lLT5zY3JpcHRQcm94eSgpLT5jbGVhcigpOworICAgICAgICAgICAg
aWYgKG1fZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgICAgICBtX2ZyYW1lLT52aWV3KCktPmNs
ZWFyKCk7CisgICAgICAgICAgICBvbGREb2MgPSAwOworICAgIAkJCisgICAgICAgICAgICAvLyBy
ZXNldCBzdGF0ZQorICAgICAgICAgICAgbV9pc0NvbXBsZXRlID0gZmFsc2U7CisgICAgICAgICAg
ICByZXN0b3JlRG9jdW1lbnRTdGF0ZSgpOworICAgICAgICAgICAgaWYgKG1fZnJhbWUtPnNldHRp
bmdzKCktPmlzSmF2YVNjcmlwdEVuYWJsZWQoKSkKKyAgICAgICAgICAgIG1fY2xpZW50LT53aW5k
b3dPYmplY3RDbGVhcmVkKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIHdyaXRlIGRh
dGEgdG8gdGhlIG5ldyBkb2MKKyAgICAgICAgICAgIG5ld0RvYy0+aW1wbGljaXRPcGVuKCk7ICAg
ICAgICAKKyAgICAgICAgICAgIGlmIChuZXdEb2MtPnRva2VuaXplcigpKSB7CisgICAgICAgICAg
ICAgICAgLy8gc2V0IGNhY2hlUG9saWN5IHRvIENhY2hlIHRvIHVzZSB0aGUgcmVzb3VyY2Ugd2Ug
bG9hZGVkCisgICAgICAgICAgICAgICAgbmV3RG9jLT5kb2NMb2FkZXIoKS0+c2V0Q2FjaGVQb2xp
Y3koQ2FjaGVQb2xpY3lDYWNoZSk7CisgICAgICAgICAgICAgICAgbmV3RG9jLT5kZXRlcm1pbmVQ
YXJzZU1vZGUobV9wZW5kaW5nU3JjKTsKKyAgICAgICAgICAgICAgICBpZiAobV9kZWNvZGVyLT5l
bmNvZGluZygpLnVzZXNWaXN1YWxPcmRlcmluZygpKQorICAgICAgICAgICAgICAgICAgICBuZXdE
b2MtPnNldFZpc3VhbGx5T3JkZXJlZCgpOyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgbmV3RG9jLT5yZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7CisgICAgICAgICAgICAgICAg
bmV3RG9jLT50b2tlbml6ZXIoKS0+d3JpdGUobV9wZW5kaW5nU3JjLCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICBpZiAobV9maW5pc2hQYXJzaW5nQ2FsbGVkKQorICAgICAgICAgICAgICAgICAgICBu
ZXdEb2MtPmZpbmlzaFBhcnNpbmcoKTsKKyAgICAgICAgICAgICAgICAvLyBmb3JjZSBsYXlvdXQK
KyAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS0+dmlldygpKSB7CisgICAgICAgICAgICAgICAg
ICAgIG1fZnJhbWUtPnZpZXcoKS0+bGF5b3V0KCk7CisgICAgICAgICAgICAgICAgICAgIG1fZnJh
bWUtPnZpZXcoKS0+dW5zY2hlZHVsZVJlbGF5b3V0KCk7ICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IHJlbW92ZUFsbENhY2hlZFJlcXVlc3RzKCk7ICAgICAgICAKKyAgICAgICAgICAgIG1fcGVuZGlu
Z1NyYyA9IFN0cmluZygpOworICAgICAgICAgICAgbV9maW5pc2hQYXJzaW5nQ2FsbGVkID0gZmFs
c2U7CisgICAgICAgICAgICBtX25lZWRTd2l0Y2ggPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0K
K30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmgJKHJldmlzaW9uIDE5OTcyKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNiArNDMsOSBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaWYg
VVNFKERPVUJMRV9UUkVFKQorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjZW5k
aWYKIAogbmFtZXNwYWNlIEtKUyB7CiAgICAgY2xhc3MgSlNWYWx1ZTsKQEAgLTEyMSwxMCArMTI0
LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCogbV9hcmd1bWVudDsKICAg
ICB9OwogCisjaWYgVVNFKERPVUJMRV9UUkVFKQorICAgIGNsYXNzIEZyYW1lTG9hZGVyIDogTm9u
Y29weWFibGUsIENhY2hlZFJlc291cmNlQ2xpZW50IHsKKyNlbHNlCiAgICAgY2xhc3MgRnJhbWVM
b2FkZXIgOiBOb25jb3B5YWJsZSB7CisjZW5kaWYKICAgICBwdWJsaWM6CiAgICAgICAgIEZyYW1l
TG9hZGVyKEZyYW1lKiwgRnJhbWVMb2FkZXJDbGllbnQqKTsKLSAgICAgICAgfkZyYW1lTG9hZGVy
KCk7CisgICAgICAgIHZpcnR1YWwgfkZyYW1lTG9hZGVyKCk7CiAKICAgICAgICAgRnJhbWUqIGZy
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQogCkBAIC00MTksNiArNDI2LDE4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIHZvaWQgc2V0UmVzdHJpY3RBY2Nlc3NU
b0xvY2FsKGJvb2wpOwogICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdFVSTEFzTG9jYWwo
Y29uc3QgU3RyaW5nJiB1cmwpOwogCisjaWYgVVNFKERPVUJMRV9UUkVFKQorICAgICAgICAvLyBp
bXBsZW1lbnRhdGlvbiBmb3IgQ2FjaGVkUmVzb3VyY2VDbGllbnQgICAgICAgIAorICAgICAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICAKKyAgICAg
ICAgYm9vbCBhZGRDYWNoZWRSZXF1ZXN0KENhY2hlZFJlc291cmNlKik7CisgICAgICAgIHZvaWQg
cmVtb3ZlQWxsQ2FjaGVkUmVxdWVzdHMoKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0VXNl
RmFzdERpc3BsYXkoYm9vbCBmYXN0RGlzcGxheSkgeyBtX3VzZUZhc3REaXNwbGF5ID0gZmFzdERp
c3BsYXk7IH0KKyAgICAgICAgdm9pZCBuZWVkVG9Td2l0Y2goKSB7IG1fbmVlZFN3aXRjaCA9IHRy
dWU7IH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgc3dpdGNoVG9GaW5hbERvY0lmUmVhZHkoKTsg
ICAgICAgIAorI2VuZGlmCiAgICAgcHJpdmF0ZTogICAgICAgIAogICAgICAgICBQYXNzUmVmUHRy
PEhpc3RvcnlJdGVtPiBjcmVhdGVIaXN0b3J5SXRlbShib29sIHVzZU9yaWdpbmFsKTsKICAgICAg
ICAgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gY3JlYXRlSGlzdG9yeUl0ZW1UcmVlKEZyYW1lKiB0
YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpOwpAQCAtNjAyLDYgKzYyMSwxNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gbV9wcmV2aW91c0hp
c3RvcnlJdGVtOwogICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IG1fcHJvdmlzaW9uYWxIaXN0
b3J5SXRlbTsKIAorI2lmIFVTRShET1VCTEVfVFJFRSkKKyAgICAgICAgLy8gd2hldGhlciB0byB1
c2UgZmFzdERpc2xheSwgc2V0IGJ5IGNsaWVudAorICAgICAgICBib29sIG1fdXNlRmFzdERpc3Bs
YXk7CisgICAgICAgIC8vIHdoZXRoZXIgdG8gY2FsbCBmaW5pc2hQYXJzaW5nKCkgaW4gc3dpdGNo
VG9GaW5hbERvY0lmUmVhZHkoKSAKKyAgICAgICAgYm9vbCBtX2ZpbmlzaFBhcnNpbmdDYWxsZWQ7
CisgICAgICAgIC8vIG9ubHkgc3dpdGNoIGlmIHRoZXJlIGlzIGV4dGVybmFsIGNzcywgamF2YXNj
cmlwdCwgc3ViZnJhbWUgb3IgcGx1Z2luCisgICAgICAgIGJvb2wgbV9uZWVkU3dpdGNoOworICAg
ICAgICAKKyAgICAgICAgU3RyaW5nIG1fcGVuZGluZ1NyYzsgICAgICAgIAorICAgICAgICBIYXNo
U2V0PENhY2hlZFJlc291cmNlKj4gbV9DYWNoZWRSZXF1ZXN0czsKKyNlbmRpZiAgIAogICAgIH07
CiAKIH0K
</data>
<flag name="review"
          id="5323"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13537</attachid>
            <date>2007-03-07 22:37:22 -0800</date>
            <delta_ts>2007-03-27 23:08:31 -0700</delta_ts>
            <desc>updated patch according to review (rev 20051)</desc>
            <filename>doubleTree2</filename>
            <type>text/plain</type>
            <size>21082</size>
            <attacher name="Grace Kloba">klobag</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDA1MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTUgQEAKKzIwMDctMDMtMDcgIEdyYWNlIEtsb2JhICA8a2xvYmFnQGdtYWlsLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXQVJO
SU5HOiBOTyBURVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQKKworCUZpeGVzOiBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI3OQorCUltcGxlbWVudGVkIHR3byBwYXNz
IGxvYWRpbmcuIEVuYWJsZWQgYnkgV1RGX1VTRV9GQVNUX0RJU1BMQVkgZmxhZy4KKworICAgICAg
ICAqIGNvbmZpZy5oOiBkZWZpbmUgV1RGX1VTRV9GQVNUX0RJU1BMQVkgdG8gYmUgMSBpZiBNT0JJ
TEUgaXMgMQorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpEb2N1bWVudCk6IGluaXRpYWxpemUgbWVtYmVyIHZhcmlhYmxlIG1faW5GYXN0
RGlzcGxheQorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKTogd2hpbGUgaW4gZmFzdCBkaXNwbGF5IG1v
ZGUsIGlnbm9yZSBwZW5kaW5nIHN0eWxlIHNoZWV0cworICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnNldERvY0xvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5GYXN0RGlz
cGxheSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0RmFzdERpc3BsYXkpOgorCisg
ICAgICAgICogaHRtbC9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
b2tlbml6ZXI6OnNjcmlwdEhhbmRsZXIpOiB3aGlsZSBpbiBmYXN0IGRpc3BsYXkgbW9kZSwgZG9u
J3QgZXhlY3V0ZSBKYXZhU2NyaXB0CisKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGU6OnJlcXVlc3RSZXNvdXJjZSk6IHdoaWxlIGluIGZhc3QgZGlz
cGxheSBtb2RlLCBkb24ndCBsZXQgc3R5bGUgc2hlZXQgYW5kIEphdmFTY3JpcHQgYmxvY2sKKwor
ICAgICAgICAqIGxvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KTogYWRkIG5vdGlmeUZpbmlzaGVk
KCkgYXMgY2xpZW50IG1heSBuZWVkICJ0aGlzIiBwb2ludGVyCisKKyAgICAgICAgKiBsb2FkZXIv
RG9jTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6OnJlcGxhY2VEb2N1bWVu
dCk6CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkU3ViZnJhbWUpOiB3aGlsZSBpbiBmYXN0IGRpc3BsYXkgbW9kZSwgZG9uJ3QgbG9h
ZCBzdWItZnJhbWUKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6YmVnaW4pOiBzZXQgdG8gZmFzdCBkaXNw
bGF5IG1vZGUgaWYgdGhlIHRvcCBmcmFtZSBpcyBIVE1MIGRvY3VtZW50CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmVuZElmTm90TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tD
b21wbGV0ZWQpOiB3aGlsZSBpbiBmYXN0IGRpc3BsYXkgbW9kZSwgZG9uJ3Qgc2V0IGNvbXBsZXRl
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tFbWl0TG9hZEV2ZW50KTogZG9u
J3QgY2FsbCBsb2FkIGV2ZW50IGlmIHdlIG5lZWQgdG8gc3dpdGNoIG91dCBvZiBmYXN0IGRpc3Bs
YXkgbW9kZQorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQbHVnaW4pOiB3aGls
ZSBpbiBmYXN0IGRpc3BsYXkgbW9kZSwgZG9uJ3QgbG9hZCBwbHVnaW4KKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6YWRkRXh0ZXJuYWxSZXF1ZXN0KToga2VlcCB0cmFjayBv
ZiBleHRlcm5hbCBzdHlsZSBzaGVldCBhbmQgSmF2YVNjcmlwdAorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnJlbW92ZUFsbEV4dGVybmFsUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpzd2l0Y2hUb0ZpbmFsRGlzcGxheUlmUmVhZHkpOgorCisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyLmg6IEZyYW1lTG9hZGVyIGRlc3RydWN0b3IgbmVlZHMgdG8gYmUgdmlydHVh
bAorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyOjpzZXRVc2VGYXN0
RGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXI6Om5l
ZWRUb1N3aXRjaFRvRmluYWxEaXNwbGF5KToKKwogMjAwNy0wMy0wNyAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCkluZGV4
OiBXZWJDb3JlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY29uZmlnLmgJKHJldmlz
aW9uIDIwMDUxKQorKysgV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDMg
KzEwNiw3IEBAIHR5cGVkZWYgZmxvYXQgQ0dGbG9hdDsKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2VuZGlmCisKKyNpZiBNT0JJTEUKKyNkZWZpbmUg
V1RGX1VTRV9GQVNUX0RJU1BMQVkgMQorI2VuZGlmCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAy
MDA1MSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAw
LDYgKzMwMCw5IEBAIERvY3VtZW50OjpEb2N1bWVudChET01JbXBsZW1lbnRhdGlvbiogaW0KICAg
ICAsIG1fY3JlYXRlUmVuZGVyZXJzKHRydWUpCiAgICAgLCBtX2luUGFnZUNhY2hlKGZhbHNlKQog
ICAgICwgbV9pc0FsbG93ZWRUb0xvYWRMb2NhbFJlc291cmNlcyhmYWxzZSkKKyNpZiBVU0UoRkFT
VF9ESVNQTEFZKQorICAgICwgbV9pbkZhc3REaXNwbGF5KGZhbHNlKQorI2VuZGlmICAgIAogewog
ICAgIG1fZG9jdW1lbnQucmVzZXRTa2lwcGluZ1JlZih0aGlzKTsKIApJbmRleDogV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZp
c2lvbiAyMDA1MSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1NCw3ICsyNTQsMTIgQEAgcHVibGljOgogICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdHJ1
ZSBpZiBhbGwgdG9wLWxldmVsIHN0eWxlc2hlZXRzIGhhdmUgbG9hZGVkIChpbmNsdWRpbmcKICAg
ICAgKiBhbnkgQGltcG9ydHMgdGhhdCB0aGV5IG1heSBiZSBsb2FkaW5nKS4KICAgICAgKi8KKyNp
ZiBVU0UoRkFTVF9ESVNQTEFZKQorICAgIGJvb2wgaGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkgY29u
c3QgeyByZXR1cm4gbV9wZW5kaW5nU3R5bGVzaGVldHMgPD0gMCB8fCBtX2lnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IG1f
aW5GYXN0RGlzcGxheTsgfQorI2Vsc2UKICAgICBib29sIGhhdmVTdHlsZXNoZWV0c0xvYWRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ1N0eWxlc2hlZXRzIDw9IDAgfHwgbV9pZ25vcmVQZW5k
aW5nU3R5bGVzaGVldHM7IH0KKyNlbmRpZgogCiAgICAgLyoqCiAgICAgICogSW5jcmVtZW50cyB0
aGUgbnVtYmVyIG9mIHBlbmRpbmcgc2hlZXRzLiAgVGhlIDxsaW5rPiBlbGVtZW50cwpAQCAtMzEx
LDYgKzMxNiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMoKTsKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVEb2N1bWVudHNSZW5kZXJpbmco
KTsKICAgICBEb2NMb2FkZXIqIGRvY0xvYWRlcigpIHsgcmV0dXJuIG1fZG9jTG9hZGVyOyB9Cisj
aWYgVVNFKEZBU1RfRElTUExBWSkKKyAgICB2b2lkIHNldERvY0xvYWRlcihEb2NMb2FkZXIqIGxv
YWRlcikgeyBtX2RvY0xvYWRlciA9IGxvYWRlcjsgfQorICAgIGJvb2wgaW5GYXN0RGlzcGxheSgp
IGNvbnN0IHsgcmV0dXJuIG1faW5GYXN0RGlzcGxheTsgfQorICAgIHZvaWQgc2V0RmFzdERpc3Bs
YXkoYm9vbCBmYXN0KSB7IG1faW5GYXN0RGlzcGxheSA9IGZhc3Q7IH0KKyNlbmRpZiAgICAgCiAK
ICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwpA
QCAtODQyLDYgKzg1Miw5IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1faWNvblVSTDsKIAogICAg
IGJvb2wgbV9pc0FsbG93ZWRUb0xvYWRMb2NhbFJlc291cmNlczsKKyNpZiBVU0UoRkFTVF9ESVNQ
TEFZKQorICAgIGJvb2wgbV9pbkZhc3REaXNwbGF5OworI2VuZGlmICAgIAogfTsKIAogfSAvL25h
bWVzcGFjZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAkocmV2aXNpb24gMjAwNTEpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMiw2ICs0
MDIsMTUgQEAgSFRNTFRva2VuaXplcjo6U3RhdGUgSFRNTFRva2VuaXplcjo6c2NyaQogI2VuZGlm
CiAgICAgICAgICAgICAvLyBQYXJzZSBzY3JpcHRDb2RlIGNvbnRhaW5pbmcgPHNjcmlwdD4gaW5m
bwogICAgICAgICAgICAgZG9TY3JpcHRFeGVjID0gc3RhdGljX2Nhc3Q8SFRNTFNjcmlwdEVsZW1l
bnQqPihzY3JpcHROb2RlLmdldCgpKS0+c2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpOworI2lm
IFVTRShGQVNUX0RJU1BMQVkpCisgICAgICAgICAgICBpZiAobV9kb2MtPmluRmFzdERpc3BsYXko
KSkgeworICAgICAgICAgICAgICAgIC8vIGlkZWFsIHdheSBpcyBvbmx5IHNraXBwaW5nIGludGVy
bmFsIEphdmFTY3JpcHQgaWYgdGhlcmUgaXMgZXh0ZXJuYWwgSmF2YVNjcmlwdC4KKyAgICAgICAg
ICAgICAgICAvLyBidXQgYXMgaW50ZXJuYWwgSmF2YVNjcmlwdCBjYW4gaGF2ZSBkb2N1bWVudC53
cml0ZSgpIGFuZCB3cml0ZSBhbiBleHRlcm5hbCBKYXZhU2NyaXB0LAorICAgICAgICAgICAgICAg
IC8vIHdlIGhhdmUgdG8gc2tpcCBpbnRlcm5hbCBKYXZhU2NyaXB0IGFsbCB0aGUgdGltZS4KKyAg
ICAgICAgICAgICAgICBtX2RvYy0+ZnJhbWUoKS0+bG9hZGVyKCktPm5lZWRUb1N3aXRjaFRvRmlu
YWxEaXNwbGF5KCk7CisgICAgICAgICAgICAgICAgZG9TY3JpcHRFeGVjID0gZmFsc2U7CisgICAg
ICAgICAgICB9CisjZW5kaWYKICAgICAgICAgICAgIHNjcmlwdE5vZGUgPSAwOwogICAgICAgICB9
CiAgICAgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL0NhY2hlLmNwcAkocmV2aXNpb24gMjAwNTEpCisrKyBXZWJDb3JlL2xvYWRl
ci9DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJG
cmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0x
MDksNiArMTEwLDEzIEBAIENhY2hlZFJlc291cmNlKiBDYWNoZTo6cmVxdWVzdFJlc291cmNlKEQK
ICAgICBpZiAocmVzb3VyY2UtPnR5cGUoKSAhPSB0eXBlKQogICAgICAgICByZXR1cm4gMDsKIAor
I2lmIFVTRShGQVNUX0RJU1BMQVkpCisgICAgLy8gYWRkRXh0ZXJuYWxSZXF1ZXN0KCkgcmV0dXJu
cyB0cnVlIGlmIHJlcXVlc3RpbmcgY3NzIG9yIGpzIGR1cmluZyBmYXN0IGRpc3BsYXkuCisgICAg
Ly8gd2UgcmV0dXJuIDAgdG8gbm90IGJsb2NrIHBhcnNpbmcgYW5kIGxheW91dAorICAgIGlmIChk
b2NMb2FkZXItPmZyYW1lKCkgJiYgZG9jTG9hZGVyLT5mcmFtZSgpLT5sb2FkZXIoKS0+YWRkRXh0
ZXJuYWxSZXF1ZXN0KHJlc291cmNlKSkKKyAgICAgICAgcmV0dXJuIDA7CisjZW5kaWYKKwogICAg
IHJldHVybiByZXNvdXJjZTsKIH0KIApJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHAJKHJldmlzaW9uIDIwMDUxKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDE0IEBAIHZvaWQgQ2FjaGVk
Q1NTU3R5bGVTaGVldDo6Y2hlY2tOb3RpZnkoKQogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fs
a2VyIHcobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQgKmMgPSB3
Lm5leHQoKSkKICAgICAgICAgYy0+c2V0Q1NTU3R5bGVTaGVldChtX3Jlc3BvbnNlLnVybCgpLnVy
bCgpLCBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpLCBtX3NoZWV0KTsKKyNpZiBVU0UoRkFT
VF9ESVNQTEFZKSAgICAgICAgCisgICAgLy8gaWYgY2hlY2tOb3RpZnkoKSBpcyBjYWxsZWQgZnJv
bSBlcnJvcigpLCBjbGllbnQncyBzZXRDU1NTdHlsZVNoZWV0KC4uLikKKyAgICAvLyBjYW4ndCBm
aW5kICJ0aGlzIiBmcm9tIHVybCwgc28gdGhleSBjYW4ndCBkbyBjbGVhbiB1cCBpZiBuZWVkZWQu
CisgICAgLy8gY2FsbCBub3RpZnlGaW5pc2hlZCgpIHRvIG1ha2Ugc3VyZSB0aGV5IGhhdmUgY2hh
bmNlLgorICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyIG4obV9jbGllbnRzKTsKKyAgICB3
aGlsZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIHMgPSBuLm5leHQoKSkKKyAgICAgICAgcy0+bm90
aWZ5RmluaXNoZWQodGhpcyk7CisjZW5kaWYgICAgICAgIAogfQogCiB2b2lkIENhY2hlZENTU1N0
eWxlU2hlZXQ6OmVycm9yKCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5oCShyZXZpc2lvbiAyMDA1MSkKKysr
IFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw2ICs4Nywx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMb2FkSW5Qcm9ncmVzcyhib29sKTsKICAgICBib29s
IGxvYWRJblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkSW5Qcm9ncmVzczsgfQogCisj
aWYgVVNFKEZBU1RfRElTUExBWSkKKyAgICB2b2lkIHJlcGxhY2VEb2N1bWVudChEb2N1bWVudCog
ZG9jKSB7IG1fZG9jID0gZG9jOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBDYWNoZWRSZXNv
dXJjZSogcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nKiBjaGFyc2V0ID0gMCwgYm9vbCBza2lwQ2FuTG9hZENoZWNrID0g
ZmFsc2UpOwogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDA1MSkKKysr
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNiAr
OTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
dXNpbmcgbmFtZXNwYWNlIEV2ZW50TmFtZXM7CiAKK2NvbnN0IHVuc2lnbmVkIGludCBjTWF4UGVu
ZGVyaW5nU291cmNlTGVuZ3RoSW5GYXN0RGlzcGxheSA9IDEyOCAqIDEwMjQ7CisKIHN0cnVjdCBG
b3JtU3VibWlzc2lvbiB7CiAgICAgY29uc3QgY2hhciogYWN0aW9uOwogICAgIFN0cmluZyBVUkw7
CkBAIC0yMjUsNiArMjI3LDExIEBAIEZyYW1lTG9hZGVyOjpGcmFtZUxvYWRlcihGcmFtZSogZnJh
bWUsIEYKICAgICAsIG1fcmVkaXJlY3Rpb25UaW1lcih0aGlzLCAmRnJhbWVMb2FkZXI6OnJlZGly
ZWN0aW9uVGltZXJGaXJlZCkKICAgICAsIG1fb3BlbmVyKDApCiAgICAgLCBtX29wZW5lZEJ5SmF2
YVNjcmlwdChmYWxzZSkKKyNpZiBVU0UoRkFTVF9ESVNQTEFZKQorICAgICwgbV91c2VGYXN0RGlz
cGxheSh0cnVlKQorICAgICwgbV9maW5pc2hQYXJzaW5nQ2FsbGVkKGZhbHNlKQorICAgICwgbV9u
ZWVkVG9Td2l0Y2hUb0ZpbmFsRGlzcGxheShmYWxzZSkKKyNlbmRpZiAKIHsKIH0KIApAQCAtMzk2
LDYgKzQwMywxNCBAQCBGcmFtZSogRnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZShIVE1MRnJhCiAg
ICAgaWYgKCFjYW5Mb2FkKHVybCwgcmVmZXJyZXIsIGhpZGVSZWZlcnJlcikpCiAgICAgICAgIHJl
dHVybiAwOwogCisjaWYgVVNFKEZBU1RfRElTUExBWSkKKyAgICAvLyBkb24ndCBjcmVhdGUgc3Vi
LWZyYW1lIGR1cmluZyBmYXN0IGRpc3BsYXkKKyAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSAm
JiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pbkZhc3REaXNwbGF5KCkpIHsKKyAgICAgICAgbV9uZWVk
VG9Td2l0Y2hUb0ZpbmFsRGlzcGxheSA9IHRydWU7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KyNlbmRpZgorCiAgICAgRnJhbWUqIGZyYW1lID0gbV9jbGllbnQtPmNyZWF0ZUZyYW1lKHVybCwg
bmFtZSwgb3duZXJFbGVtZW50LCBoaWRlUmVmZXJyZXIgPyBTdHJpbmcoKSA6IHJlZmVycmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd3NTY3JvbGxpbmcs
IG1hcmdpbldpZHRoLCBtYXJnaW5IZWlnaHQpOwogCkBAIC01NTIsNiArNTY3LDE1IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKGJvb2wgc2VuZFUKICAgICAgICAgY2hpbGQtPmxvYWRl
cigpLT5zdG9wTG9hZGluZyhzZW5kVW5sb2FkKTsKIAogICAgIGNhbmNlbFJlZGlyZWN0aW9uKCk7
CisKKyNpZiBVU0UoRkFTVF9ESVNQTEFZKQorICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpICYm
IG1fZnJhbWUtPmRvY3VtZW50KCktPmluRmFzdERpc3BsYXkoKSkgeworICAgICAgICAvLyBsb2Fk
aW5nIGlzIGZvcmNlZCB0byBzdG9wLCBzZXQgbV9uZWVkVG9Td2l0Y2hUb0ZpbmFsRGlzcGxheSB0
byBmYWxzZQorICAgICAgICAvLyB0byBvbmx5IHJlc2V0IHN0YXRlIHdpdGhvdXQgcmVhbGx5IHN3
aXRjaGluZworICAgICAgICBtX25lZWRUb1N3aXRjaFRvRmluYWxEaXNwbGF5ID0gZmFsc2U7Cisg
ICAgICAgIHN3aXRjaFRvRmluYWxEaXNwbGF5SWZSZWFkeSgpOworICAgIH0KKyNlbmRpZiAgCiB9
CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3AoKQpAQCAtODM3LDYgKzg2MSwxOCBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpiZWdpbihjb25zdCBLVVJMJiB1cmwpCiAKICAgICBpZiAobV9mcmFtZS0+dmll
dygpKQogICAgICAgICBtX2ZyYW1lLT52aWV3KCktPnJlc2l6ZUNvbnRlbnRzKDAsIDApOworCisj
aWYgVVNFKEZBU1RfRElTUExBWSkKKyAgICAvLyBmYXN0IGRpc3BsYXkgaXMgdXNlZCB0byBnaXZl
IGFuIGluc3RhbnQgdmlzdWFsIGZlZWRiYWNrLgorICAgIC8vIHdlIGN1cnJlbnRseSBvbmx5IGVu
YWJsZSBpdCBmb3IgSFRNTCBkb2N1bWVudCBvbiBhIHRvcCBmcmFtZS4KKyAgICBpZiAoZG9jdW1l
bnQtPmlzSFRNTERvY3VtZW50KCkgJiYKKyAgICAgICAgIW1fZnJhbWUtPnRyZWUoKS0+cGFyZW50
KCkgJiYgbV91c2VGYXN0RGlzcGxheSkgeworICAgICAgICBtX3BlbmRpbmdTb3VyY2VJbkZhc3RE
aXNwbGF5ID0gU3RyaW5nKCk7CisgICAgICAgIG1fZmluaXNoUGFyc2luZ0NhbGxlZCA9IGZhbHNl
OworICAgICAgICBtX25lZWRUb1N3aXRjaFRvRmluYWxEaXNwbGF5ID0gZmFsc2U7ICAgICAgICAg
ICAgCisgICAgICAgIGRvY3VtZW50LT5zZXRGYXN0RGlzcGxheSh0cnVlKTsKKyAgICB9CisjZW5k
aWYKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6d3JpdGUoY29uc3QgY2hhciogc3RyLCBpbnQgbGVu
LCBib29sIGZsdXNoKQpAQCAtODY4LDYgKzkwNCwxMyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp3cml0
ZShjb25zdCBjaGFyKiBzdHIsCiAgICAgaWYgKGRlY29kZWQuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKKyNpZiBVU0UoRkFTVF9ESVNQTEFZKQorICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5pbkZhc3REaXNwbGF5KCkpCisgICAgICAgIG1fcGVuZGluZ1NvdXJjZUluRmFzdERpc3Bs
YXkuYXBwZW5kKGRlY29kZWQpOworICAgIGVsc2UgLy8gcmVzZXQgcG9saWN5IHdoaWNoIGlzIGNo
YW5nZWQgaW4gc3dpdGNoVG9GaW5hbERpc3BsYXlJZlJlYWR5KCkKKyAgICAgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCktPnNldENhY2hlUG9saWN5KG1fY2FjaGVQb2xpY3kpOyAg
ICAKKyNlbmRpZgorCiAgICAgaWYgKCFtX3JlY2VpdmVkRGF0YSkgewogICAgICAgICBtX3JlY2Vp
dmVkRGF0YSA9IHRydWU7CiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRldGVybWluZVBh
cnNlTW9kZShkZWNvZGVkKTsKQEAgLTkxNiw2ICs5NTksMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
ZW5kSWZOb3RMb2FkaW5nKCkKICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSkgewogICAgICAg
ICB3cml0ZSgwLCAwLCB0cnVlKTsKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZmluaXNo
UGFyc2luZygpOworI2lmIFVTRShGQVNUX0RJU1BMQVkpCisgICAgICAgIGlmIChtX2ZyYW1lLT5k
b2N1bWVudCgpLT5pbkZhc3REaXNwbGF5KCkpIHsKKyAgICAgICAgICAgIG1fZmluaXNoUGFyc2lu
Z0NhbGxlZCA9IHRydWU7CisgICAgICAgICAgICBzd2l0Y2hUb0ZpbmFsRGlzcGxheUlmUmVhZHko
KTsKKyAgICAgICAgfQorI2VuZGlmICAgICAgICAgICAgCiAgICAgfSBlbHNlCiAgICAgICAgIC8v
IFdlYktpdCBwYXJ0aWFsbHkgdXNlcyBXZWJDb3JlIHdoZW4gbG9hZGluZyBub24tSFRNTCBkb2Nz
LiAgSW4gdGhlc2UgY2FzZXMgZG9jPT1uaWwsIGJ1dAogICAgICAgICAvLyBXZWJDb3JlIGlzIGVu
b3VnaCBpbnZvbHZlZCB0aGF0IHdlIG5lZWQgdG8gY2hlY2tDb21wbGV0ZWQoKSBpbiBvcmRlciBm
b3IgbV9iQ29tcGxldGUgdG8KQEAgLTEwNzksNiArMTEyOCwxMiBAQCB2b2lkIEZyYW1lTG9hZGVy
OjpjaGVja0NvbXBsZXRlZCgpCiAgICAgICAgIGlmIChjYWNoZSgpLT5sb2FkZXIoKS0+bnVtUmVx
dWVzdHMobV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCkpKQogICAgICAgICAgICAgcmV0
dXJuOwogCisjaWYgVVNFKEZBU1RfRElTUExBWSkKKyAgICAvLyBzdGlsbCBpbiBmYXN0IGRpc3Bs
YXkKKyAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5p
bkZhc3REaXNwbGF5KCkgJiYgbV9uZWVkVG9Td2l0Y2hUb0ZpbmFsRGlzcGxheSkKKyAgICAgICAg
cmV0dXJuOworI2VuZGlmCisKICAgICAvLyBPSywgY29tcGxldGVkLgogICAgIG1faXNDb21wbGV0
ZSA9IHRydWU7CiAKQEAgLTEwOTYsNiArMTE1MSwxNSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVj
a0VtaXRMb2FkRXZlbnQoKQogewogICAgIGlmIChtX3dhc0xvYWRFdmVudEVtaXR0ZWQgfHwgIW1f
ZnJhbWUtPmRvY3VtZW50KCkgfHwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2luZygpKQogICAg
ICAgICByZXR1cm47CisjaWYgVVNFKEZBU1RfRElTUExBWSkKKyAgICBpZiAobV9mcmFtZS0+ZG9j
dW1lbnQoKS0+aW5GYXN0RGlzcGxheSgpKSB7CisgICAgICAgIC8vIGFzIHN3aXRjaCB3aWxsIGJl
IGNhbGxlZCwgZG9uJ3QgZW1pdCBsb2FkIGV2ZW50IHlldAorICAgICAgICBpZiAobV9uZWVkVG9T
d2l0Y2hUb0ZpbmFsRGlzcGxheSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gYXMg
bm8gcmVhbCBzd2l0Y2ggaXMgbmVlZGVkLCBjYWxsIHN3aXRjaFRvRmluYWxEaXNwbGF5SWZSZWFk
eSgpIHRvIHJlc2V0IHN0YXRlCisgICAgICAgIHN3aXRjaFRvRmluYWxEaXNwbGF5SWZSZWFkeSgp
OworICAgIH0KKyNlbmRpZgogCiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLT50cmVl
KCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxp
bmcoKSkKICAgICAgICAgaWYgKCFjaGlsZC0+bG9hZGVyKCktPm1faXNDb21wbGV0ZSkgLy8gc3Rp
bGwgZ290IGEgZnJhbWUgcnVubmluZyAtPiB0b28gZWFybHkKQEAgLTEzNzUsNiArMTQzOSwxMyBA
QCBib29sIEZyYW1lTG9hZGVyOjpsb2FkUGx1Z2luKFJlbmRlclBhcnQqCiAgICAgICAgIGlmICgh
Y2FuTG9hZCh1cmwsIGZyYW1lKCktPmRvY3VtZW50KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCisjaWYgVVNFKEZBU1RfRElTUExBWSkKKyAgICAgICAgLy8gZG9uJ3QgbG9hZCBwbHVn
aW4gZHVyaW5nIGZhc3QgZGlzcGxheQorICAgICAgICBpZiAoZnJhbWUoKS0+ZG9jdW1lbnQoKS0+
aW5GYXN0RGlzcGxheSgpKSB7CisgICAgICAgICAgICBtX25lZWRUb1N3aXRjaFRvRmluYWxEaXNw
bGF5ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorI2VuZGlm
CiAgICAgICAgIHdpZGdldCA9IG1fY2xpZW50LT5jcmVhdGVQbHVnaW4ocGx1Z2luRWxlbWVudCwg
dXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgbWltZVR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1
bWVudCgpKTsKICAgICAgICAgaWYgKHdpZGdldCkgewpAQCAtNDI5NSw0ICs0MzY2LDEzMSBAQCBi
b29sIEZyYW1lTG9hZGVyOjpzaG91bGRUcmVhdFVSTEFzTG9jYWwoCiAgICAgcmV0dXJuIGxvY2Fs
U2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKKyNpZiBVU0UoRkFTVF9ESVNQTEFZKQor
Ym9vbCBGcmFtZUxvYWRlcjo6YWRkRXh0ZXJuYWxSZXF1ZXN0KENhY2hlZFJlc291cmNlKiBjYWNo
ZSkKK3sKKyAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5GYXN0RGlzcGxheSgpID09IGZh
bHNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgIC8vIGlmIGNhY2hlIGlz
IGxvYWRlZCwgZG9uJ3QgYWRkIHRvIHRoZSBsaXN0LCB3aGVyZSBub3RpZnlGaW5pc2hlZCgpIGlz
IGV4cGVjdGVkLiAKKyAgICBpZiAoY2FjaGUtPmlzTG9hZGVkKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICAKKyAgICBzd2l0Y2goY2FjaGUtPnR5cGUoKSkgeworICAg
ICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OgorICAgICAgICBjYXNlIENh
Y2hlZFJlc291cmNlOjpTY3JpcHQ6CisgICAgICAgICAgICBtX25lZWRUb1N3aXRjaFRvRmluYWxE
aXNwbGF5ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fZXh0ZXJuYWxSZXF1ZXN0c0luRmFzdERpc3Bs
YXkuYWRkKGNhY2hlKTsKKyAgICAgICAgICAgIGNhY2hlLT5yZWYodGhpcyk7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJj
ZToKKyNpZiBFTkFCTEUoWFNMVCkKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6WFNMU3R5
bGVTaGVldDoKKyNlbmRpZgorI2lmIEVOQUJMRShYQkwpCisgICAgICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OlhCTFN0eWxlU2hlZXQ6CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRnJh
bWVMb2FkZXI6OnJlbW92ZUFsbEV4dGVybmFsUmVxdWVzdHMoKQoreworICAgIEhhc2hTZXQ8Q2Fj
aGVkUmVzb3VyY2UqPjo6aXRlcmF0b3IgZW5kID0gbV9leHRlcm5hbFJlcXVlc3RzSW5GYXN0RGlz
cGxheS5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPjo6aXRlcmF0b3Ig
aXQgPSBtX2V4dGVybmFsUmVxdWVzdHNJbkZhc3REaXNwbGF5LmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkKKyAgICAgICAgKCppdCktPmRlcmVmKHRoaXMpOworICAgIG1fZXh0ZXJuYWxSZXF1ZXN0
c0luRmFzdERpc3BsYXkuY2xlYXIoKTsKK30KKyAgICAKK3ZvaWQgRnJhbWVMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBzY3JpcHQpCit7CisgICAgSGFzaFNldDxDYWNoZWRS
ZXNvdXJjZSo+OjppdGVyYXRvciBpdCA9IG1fZXh0ZXJuYWxSZXF1ZXN0c0luRmFzdERpc3BsYXku
ZmluZChzY3JpcHQpOworICAgIGlmIChpdCAhPSBtX2V4dGVybmFsUmVxdWVzdHNJbkZhc3REaXNw
bGF5LmVuZCgpKSB7CisgICAgICAgICgqaXQpLT5kZXJlZih0aGlzKTsKKyAgICAgICAgbV9leHRl
cm5hbFJlcXVlc3RzSW5GYXN0RGlzcGxheS5yZW1vdmUoaXQpOworICAgICAgICBzd2l0Y2hUb0Zp
bmFsRGlzcGxheUlmUmVhZHkoKTsgICAgICAgIAorICAgIH0KK30KKwordm9pZCBGcmFtZUxvYWRl
cjo6c3dpdGNoVG9GaW5hbERpc3BsYXlJZlJlYWR5KCkKK3sKKyAgICBSZWZQdHI8RG9jdW1lbnQ+
IG9sZERvYyA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKG9sZERvYy0+aW5GYXN0RGlz
cGxheSgpKSB7CisgICAgICAgIGlmICghbV9uZWVkVG9Td2l0Y2hUb0ZpbmFsRGlzcGxheSkgewor
ICAgICAgICAgICAgLy8gbm8gcmVhbCBzd2l0Y2gsIGp1c3QgcmVzZXQgc3RhdGUKKyAgICAgICAg
ICAgIG9sZERvYy0+c2V0RmFzdERpc3BsYXkoZmFsc2UpOworICAgICAgICAgICAgcmVtb3ZlQWxs
RXh0ZXJuYWxSZXF1ZXN0cygpOyAgICAgICAgCisgICAgICAgICAgICBtX3BlbmRpbmdTb3VyY2VJ
bkZhc3REaXNwbGF5ID0gU3RyaW5nKCk7CisgICAgICAgICAgICBtX2ZpbmlzaFBhcnNpbmdDYWxs
ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIGlmIChtX2V4
dGVybmFsUmVxdWVzdHNJbkZhc3REaXNwbGF5LmlzRW1wdHkoKSB8fCAKKyAgICAgICAgICAgICAg
ICBtX3BlbmRpbmdTb3VyY2VJbkZhc3REaXNwbGF5Lmxlbmd0aCgpID4gY01heFBlbmRlcmluZ1Nv
dXJjZUxlbmd0aEluRmFzdERpc3BsYXkpIHsKKyAgICAgICAgICAgIC8vIHN0b3AgdGhlIG9sZCBk
b2MgZmlyc3QKKyAgICAgICAgICAgIG9sZERvYy0+c2V0RmFzdERpc3BsYXkoZmFsc2UpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICAvLyBzaW1pbGFyIGFzIGNsZWFyKCksIGNhbiBiZSByZS1m
YWN0b3IgbGF0ZXIKKyAgICAgICAgICAgIG9sZERvYy0+Y2FuY2VsUGFyc2luZygpOworICAgICAg
ICAgICAgb2xkRG9jLT5kZXRhY2goKTsKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lLT5zY3JpcHRQ
cm94eSgpKQorICAgICAgICAgICAgICAgIG1fZnJhbWUtPnNjcmlwdFByb3h5KCktPmNsZWFyKCk7
CisgICAgICAgICAgICBpZiAobV9mcmFtZS0+dmlldygpKQorICAgICAgICAgICAgICAgIG1fZnJh
bWUtPnZpZXcoKS0+Y2xlYXIoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gdGhpcyBp
cyBzaW1pbGFyIGFzIGJlZ2luKCksIGNhbiBiZSByZS1mYWN0b3IgbGF0ZXIKKyAgICAgICAgICAg
IFJlZlB0cjxEb2N1bWVudD4gbmV3RG9jID0gRE9NSW1wbGVtZW50YXRpb246Omluc3RhbmNlKCkt
PgorICAgICAgICAgICAgICAgIGNyZWF0ZURvY3VtZW50KG1fcmVzcG9uc2VNSU1FVHlwZSwgbV9m
cmFtZS0+dmlldygpLCBtX2ZyYW1lLT5pblZpZXdTb3VyY2VNb2RlKCkpOworICAgICAgICAgICAg
bV9mcmFtZS0+ZC0+bV9kb2MgPSBuZXdEb2M7CisgICAgICAgICAgICBpZiAoIW5ld0RvYy0+YXR0
YWNoZWQoKSkKKyAgICAgICAgICAgICAgICBuZXdEb2MtPmF0dGFjaCgpOworICAgICAgICAgICAg
bmV3RG9jLT5zZXRVUkwobV9VUkwudXJsKCkpOworICAgICAgICAgICAgbmV3RG9jLT5zZXRCYXNl
VVJMKG1fVVJMLnVybCgpKTsKKyAgICAgICAgICAgIGlmIChtX2RlY29kZXIpCisgICAgICAgICAg
ICAgICAgbmV3RG9jLT5zZXREZWNvZGVyKG1fZGVjb2Rlci5nZXQoKSk7CisgICAgICAgICAgICBy
ZXN0b3JlRG9jdW1lbnRTdGF0ZSgpOworICAgICAgICAgICAgcGFydENsZWFyZWRJbkJlZ2luKCk7
ICAgICAgICAgCisgICAgICAgICAgICBuZXdEb2MtPmltcGxpY2l0T3BlbigpOworCisgICAgICAg
ICAgICAvLyBzd2FwIERvY0xvYWRlciBvd25lcnNoaXAKKyAgICAgICAgICAgIERvY0xvYWRlciog
ZG9jTG9hZGVyID0gbmV3RG9jLT5kb2NMb2FkZXIoKTsKKyAgICAgICAgICAgIG5ld0RvYy0+c2V0
RG9jTG9hZGVyKG9sZERvYy0+ZG9jTG9hZGVyKCkpOworICAgICAgICAgICAgbmV3RG9jLT5kb2NM
b2FkZXIoKS0+cmVwbGFjZURvY3VtZW50KG5ld0RvYy5nZXQoKSk7CisgICAgICAgICAgICBkb2NM
b2FkZXItPnJlcGxhY2VEb2N1bWVudChvbGREb2MuZ2V0KCkpOworICAgICAgICAgICAgb2xkRG9j
LT5zZXREb2NMb2FkZXIoZG9jTG9hZGVyKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8g
ZHJvcCB0aGUgb2xkIGRvYyAgICAgICAgICAgIAorICAgICAgICAgICAgb2xkRG9jID0gMDsKKwor
ICAgICAgICAgICAgLy8gd3JpdGUgZGVjb2RlZCBkYXRhIHRvIHRoZSBuZXcgZG9jLCBpdCBpcyBz
aW1pbGFyIGFzIHdyaXRlKCksIAorICAgICAgICAgICAgLy8gYnV0IG1fcGVuZGluZ1NvdXJjZUlu
RmFzdERpc3BsYXkgaXMgZGVjb2RlZCBhbHJlYWR5IAorICAgICAgICAgICAgaWYgKG1fcGVuZGlu
Z1NvdXJjZUluRmFzdERpc3BsYXkubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBzZXQg
Y2FjaGVQb2xpY3kgdG8gQ2FjaGUgdG8gdXNlIHRoZSByZXNvdXJjZSB3ZSBsb2FkZWQKKyAgICAg
ICAgICAgICAgICBuZXdEb2MtPmRvY0xvYWRlcigpLT5zZXRDYWNoZVBvbGljeShDYWNoZVBvbGlj
eUNhY2hlKTsKKyAgICAgICAgICAgICAgICBuZXdEb2MtPmRldGVybWluZVBhcnNlTW9kZShtX3Bl
bmRpbmdTb3VyY2VJbkZhc3REaXNwbGF5KTsKKyAgICAgICAgICAgICAgICBpZiAobV9kZWNvZGVy
LT5lbmNvZGluZygpLnVzZXNWaXN1YWxPcmRlcmluZygpKQorICAgICAgICAgICAgICAgICAgICBu
ZXdEb2MtPnNldFZpc3VhbGx5T3JkZXJlZCgpOyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgbmV3RG9jLT5yZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7ICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIG5ld0RvYy0+dG9rZW5pemVyKCktPndyaXRlKG1fcGVuZGluZ1Nv
dXJjZUluRmFzdERpc3BsYXksIHRydWUpOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
aWYgKG1fZmluaXNoUGFyc2luZ0NhbGxlZCkKKyAgICAgICAgICAgICAgICAgICAgbmV3RG9jLT5m
aW5pc2hQYXJzaW5nKCk7CisgICAgICAgICAgICAgICAgLy8gZm9yY2UgbGF5b3V0CisgICAgICAg
ICAgICAgICAgaWYgKG1fZnJhbWUtPnZpZXcoKSkgeworICAgICAgICAgICAgICAgICAgICBtX2Zy
YW1lLT52aWV3KCktPmxheW91dCgpOworICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLT52aWV3
KCktPnVuc2NoZWR1bGVSZWxheW91dCgpOyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyByZXNl
dCBzdGF0ZQorICAgICAgICAgICAgcmVtb3ZlQWxsRXh0ZXJuYWxSZXF1ZXN0cygpOyAgICAgICAg
CisgICAgICAgICAgICBtX3BlbmRpbmdTb3VyY2VJbkZhc3REaXNwbGF5ID0gU3RyaW5nKCk7Cisg
ICAgICAgICAgICBtX2ZpbmlzaFBhcnNpbmdDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIG1f
bmVlZFRvU3dpdGNoVG9GaW5hbERpc3BsYXkgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJ
KHJldmlzaW9uIDIwMDUxKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKIAogbmFtZXNwYWNlIEtKUyB7CiAgICAgY2xhc3Mg
SlNWYWx1ZTsKQEAgLTEyMSwxMCArMTIyLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCogbV9hcmd1bWVudDsKICAgICB9OwogCisjaWYgVVNFKEZBU1RfRElTUExBWSkKKyAg
ICBjbGFzcyBGcmFtZUxvYWRlciA6IE5vbmNvcHlhYmxlLCBwcml2YXRlIENhY2hlZFJlc291cmNl
Q2xpZW50IHsKKyNlbHNlCiAgICAgY2xhc3MgRnJhbWVMb2FkZXIgOiBOb25jb3B5YWJsZSB7Cisj
ZW5kaWYKICAgICBwdWJsaWM6CiAgICAgICAgIEZyYW1lTG9hZGVyKEZyYW1lKiwgRnJhbWVMb2Fk
ZXJDbGllbnQqKTsKLSAgICAgICAgfkZyYW1lTG9hZGVyKCk7CisgICAgICAgIHZpcnR1YWwgfkZy
YW1lTG9hZGVyKCk7CiAKICAgICAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFtZTsgfQogCkBAIC00MTMsNiArNDE4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgc3RhdGljIHZvaWQgc2V0UmVzdHJpY3RBY2Nlc3NUb0xvY2FsKGJvb2wpOwogICAgICAgICBz
dGF0aWMgYm9vbCBzaG91bGRUcmVhdFVSTEFzTG9jYWwoY29uc3QgU3RyaW5nJiB1cmwpOwogCisj
aWYgVVNFKEZBU1RfRElTUExBWSkgICAgCisgICAgICAgIGJvb2wgYWRkRXh0ZXJuYWxSZXF1ZXN0
KENhY2hlZFJlc291cmNlKik7CisgICAgICAgIC8vIGNsaWVudCBjYW4gY29udHJvbCB3aGV0aGVy
IHRvIHVzZSBmYXN0IGRpc3BsYXkgb24gYSBwZXIgZnJhbWUgYmFzZS4KKyAgICAgICAgLy8gdGhp
cyBzaG91bGQgb25seSBiZSB1c2VkIGZvciB0aGUgdG9wIGZyYW1lLCBub3Qgc3ViLWZyYW1lLgor
ICAgICAgICB2b2lkIHNldFVzZUZhc3REaXNwbGF5KGJvb2wgZmFzdERpc3BsYXkpIHsgbV91c2VG
YXN0RGlzcGxheSA9IGZhc3REaXNwbGF5OyB9CisgICAgICAgIHZvaWQgbmVlZFRvU3dpdGNoVG9G
aW5hbERpc3BsYXkoKSB7IG1fbmVlZFRvU3dpdGNoVG9GaW5hbERpc3BsYXkgPSB0cnVlOyB9Cisj
ZW5kaWYKKwogICAgIHByaXZhdGU6ICAgICAgICAKICAgICAgICAgUGFzc1JlZlB0cjxIaXN0b3J5
SXRlbT4gY3JlYXRlSGlzdG9yeUl0ZW0oYm9vbCB1c2VPcmlnaW5hbCk7CiAgICAgICAgIFBhc3NS
ZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0ZUhpc3RvcnlJdGVtVHJlZShGcmFtZSogdGFyZ2V0RnJh
bWUsIGJvb2wgY2xpcEF0VGFyZ2V0KTsKQEAgLTUyMyw2ICs1MzYsMTQgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIHZvaWQgc3RhcnRJY29uTG9hZGVyKCk7CiAKKyNpZiBVU0UoRkFT
VF9ESVNQTEFZKQorICAgICAgICAvLyBpbXBsZW1lbnRhdGlvbiBmb3IgQ2FjaGVkUmVzb3VyY2VD
bGllbnQgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UqKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgcmVtb3ZlQWxsRXh0ZXJuYWxSZXF1
ZXN0cygpOyAgICAKKyAgICAgICAgdm9pZCBzd2l0Y2hUb0ZpbmFsRGlzcGxheUlmUmVhZHkoKTsg
ICAgICAgIAorI2VuZGlmCisKICAgICAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIEZyYW1l
TG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKIApAQCAtNTk2LDYgKzYxNywxNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gbV9wcmV2aW91c0hpc3RvcnlJ
dGVtOwogICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IG1fcHJvdmlzaW9uYWxIaXN0b3J5SXRl
bTsKIAorI2lmIFVTRShGQVNUX0RJU1BMQVkpCisgICAgICAgIC8vIHdoZXRoZXIgdG8gdXNlIGZh
c3QgZGlzbGF5LCBzZXQgYnkgY2xpZW50CisgICAgICAgIGJvb2wgbV91c2VGYXN0RGlzcGxheTsK
KyAgICAgICAgLy8gd2hldGhlciB0byBjYWxsIGZpbmlzaFBhcnNpbmcoKSBpbiBzd2l0Y2hUb0Zp
bmFsRG9jSWZSZWFkeSgpIAorICAgICAgICBib29sIG1fZmluaXNoUGFyc2luZ0NhbGxlZDsKKyAg
ICAgICAgLy8gb25seSBzd2l0Y2ggaWYgdGhlcmUgaXMgZXh0ZXJuYWwgY3NzLCBqYXZhc2NyaXB0
LCBzdWJmcmFtZSBvciBwbHVnaW4KKyAgICAgICAgYm9vbCBtX25lZWRUb1N3aXRjaFRvRmluYWxE
aXNwbGF5OworICAgICAgICAKKyAgICAgICAgU3RyaW5nIG1fcGVuZGluZ1NvdXJjZUluRmFzdERp
c3BsYXk7ICAgICAgICAKKyAgICAgICAgSGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+IG1fZXh0ZXJu
YWxSZXF1ZXN0c0luRmFzdERpc3BsYXk7CisjZW5kaWYgICAKICAgICB9OwogCiB9Cg==
</data>
<flag name="review"
          id="5362"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13840</attachid>
            <date>2007-03-27 23:08:31 -0700</date>
            <delta_ts>2007-04-02 23:42:12 -0700</delta_ts>
            <desc>updated patch according to review (rev 20546)</desc>
            <filename>doubleTree3</filename>
            <type>text/plain</type>
            <size>21694</size>
            <attacher name="Grace Kloba">klobag</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDU0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTMgQEAKKzIwMDctMDMtMjcgIEdyYWNlIEtsb2JhICA8a2xvYmFnQGdtYWlsLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCUZpeGVzOiBodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI3OQorCUltcGxlbWVudGVkIHR3
byBwYXNzIGxvYWRpbmcuIEVuYWJsZWQgYnkgV1RGX1VTRV9MT1dfQkFORFdJRFRIX0RJU1BMQVkg
ZmxhZy4KKworICAgICAgICAqIGNvbmZpZy5oOiBkZWZpbmUgV1RGX1VTRV9MT1dfQkFORFdJRFRI
X0RJU1BMQVkgdG8gYmUgMSBpZiBNT0JJTEUgaXMgMQorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6IGluaXRpYWxpemUg
bWVtYmVyIHZhcmlhYmxlIG1faW5Mb3dCYW5kd2lkdGhEaXNwbGF5CisKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXZlU3R5bGVzaGVldHNM
b2FkZWQpOiB3aGlsZSBpbiBsb3cgYmFuZHdpZHRoIGRpc3BsYXkgbW9kZSwgaWdub3JlIHBlbmRp
bmcgc3R5bGUgc2hlZXRzCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0RG9jTG9hZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbkxvd0JhbmR3aWR0aERpc3BsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldExvd0JhbmR3aWR0aERpc3BsYXkpOgorCisg
ICAgICAgICogaHRtbC9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
b2tlbml6ZXI6OnNjcmlwdEhhbmRsZXIpOiB3aGlsZSBpbiBsb3cgYmFuZHdpZHRoIGRpc3BsYXkg
bW9kZSwgZG9uJ3QgZXhlY3V0ZSBKYXZhU2NyaXB0CisKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnJlcXVlc3RSZXNvdXJjZSk6IHdoaWxlIGlu
IGxvdyBiYW5kd2lkdGggZGlzcGxheSBtb2RlLCBkb24ndCBsZXQgc3R5bGUgc2hlZXQgYW5kIEph
dmFTY3JpcHQgYmxvY2sKKworICAgICAgICAqIGxvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KTog
YWRkIG5vdGlmeUZpbmlzaGVkKCkgYXMgY2xpZW50IG1heSBuZWVkICJ0aGlzIiBwb2ludGVyCisK
KyAgICAgICAgKiBsb2FkZXIvRG9jTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2NMb2Fk
ZXI6OnJlcGxhY2VEb2N1bWVudCk6CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUpOiB3aGlsZSBpbiBsb3cgYmFuZHdp
ZHRoIGRpc3BsYXkgbW9kZSwgZG9uJ3QgbG9hZCBzdWItZnJhbWUKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6YmVnaW4pOiBzZXQgdG8gbG93IGJhbmR3aWR0aCBkaXNwbGF5IG1vZGUgaWYgdGhlIHRvcCBm
cmFtZSBpcyBIVE1MIGRvY3VtZW50CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6d3Jp
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmVuZElmTm90TG9hZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tDb21wbGV0ZWQpOiB3aGlsZSBpbiBs
b3cgYmFuZHdpZHRoIGRpc3BsYXkgbW9kZSwgZG9uJ3Qgc2V0IGNvbXBsZXRlCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tFbWl0TG9hZEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpyZXF1ZXN0T2JqZWN0KTogd2hpbGUgaW4gbG93IGJhbmR3aWR0aCBk
aXNwbGF5IG1vZGUsIGRvbid0IGNhcmUgT2JqZWN0CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6YWRkTG93QmFuZHdpZHRoRGlzcGxheVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnJlbW92ZUFsbExvd2JhbmR3aWR0aERpc3BsYXlSZXF1ZXN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OnN3aXRjaE91dExvd0JhbmR3aWR0aERpc3BsYXlJZlJlYWR5KToK
KworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOiBGcmFtZUxvYWRlciBkZXN0cnVjdG9y
IG5lZWRzIHRvIGJlIHZpcnR1YWwKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpGcmFt
ZUxvYWRlcjo6bmVlZFRvU3dpdGNoT3V0TG93QmFuZHdpZHRoRGlzcGxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXI6OnNldFVzZUxvd0JhbmR3aWR0aERpc3Bs
YXkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyOjp1c2VMb3dC
YW5kd2lkdGhEaXNwbGF5KToKKwogMjAwNy0wMy0yNyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0uCkluZGV4OiBXZWJDb3JlL2NvbmZp
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY29uZmlnLmgJKHJldmlzaW9uIDIwNTQ2KQorKysg
V2ViQ29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsMyArOTcsNyBAQCB0eXBlZGVm
IGZsb2F0IENHRmxvYXQ7CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KICNlbmRpZgorCisjaWYgTU9CSUxFCisjZGVmaW5lIFdURl9VU0VfTE9XX0JBTkRX
SURUSF9ESVNQTEFZIDEKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjA1NDYpCisr
KyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMiw2ICszMDIs
OSBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRE9NSW1wbGVtZW50YXRpb24qIGltCiAgICAgLCBtX2Ny
ZWF0ZVJlbmRlcmVycyh0cnVlKQogICAgICwgbV9pblBhZ2VDYWNoZShmYWxzZSkKICAgICAsIG1f
aXNBbGxvd2VkVG9Mb2FkTG9jYWxSZXNvdXJjZXMoZmFsc2UpCisjaWYgVVNFKExPV19CQU5EV0lE
VEhfRElTUExBWSkKKyAgICAsIG1faW5Mb3dCYW5kd2lkdGhEaXNwbGF5KGZhbHNlKQorI2VuZGlm
ICAgIAogewogICAgIG1fZG9jdW1lbnQucmVzZXRTa2lwcGluZ1JlZih0aGlzKTsKIApJbmRleDog
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCShyZXZpc2lvbiAyMDU0NikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1NCw4ICsyNTQsMTIgQEAgcHVibGljOgogICAgICAqIFRoaXMgbWV0aG9kIHJl
dHVybnMgdHJ1ZSBpZiBhbGwgdG9wLWxldmVsIHN0eWxlc2hlZXRzIGhhdmUgbG9hZGVkIChpbmNs
dWRpbmcKICAgICAgKiBhbnkgQGltcG9ydHMgdGhhdCB0aGV5IG1heSBiZSBsb2FkaW5nKS4KICAg
ICAgKi8KKyNpZiBVU0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKQorICAgIGJvb2wgaGF2ZVN0eWxl
c2hlZXRzTG9hZGVkKCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5nU3R5bGVzaGVldHMgPD0gMCB8
fCBtX2lnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHx8IG1faW5Mb3dCYW5kd2lkdGhEaXNwbGF5OyB9CisjZWxzZQogICAgIGJv
b2wgaGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5nU3R5bGVz
aGVldHMgPD0gMCB8fCBtX2lnbm9yZVBlbmRpbmdTdHlsZXNoZWV0czsgfQotCisjZW5kaWYKICAg
ICAvKioKICAgICAgKiBJbmNyZW1lbnRzIHRoZSBudW1iZXIgb2YgcGVuZGluZyBzaGVldHMuICBU
aGUgPGxpbms+IGVsZW1lbnRzCiAgICAgICogaW52b2tlIHRoaXMgdG8gYWRkIHRoZW1zZWx2ZXMg
dG8gdGhlIGxvYWRpbmcgbGlzdC4KQEAgLTYyNiw2ICs2MzAsMTIgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBpc0FsbG93ZWRUb0xvYWRMb2NhbFJlc291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1faXNB
bGxvd2VkVG9Mb2FkTG9jYWxSZXNvdXJjZXM7IH0KIAorI2lmIFVTRShMT1dfQkFORFdJRFRIX0RJ
U1BMQVkpCisgICAgdm9pZCBzZXREb2NMb2FkZXIoRG9jTG9hZGVyKiBsb2FkZXIpIHsgbV9kb2NM
b2FkZXIgPSBsb2FkZXI7IH0KKyAgICBib29sIGluTG93QmFuZHdpZHRoRGlzcGxheSgpIGNvbnN0
IHsgcmV0dXJuIG1faW5Mb3dCYW5kd2lkdGhEaXNwbGF5OyB9CisgICAgdm9pZCBzZXRMb3dCYW5k
d2lkdGhEaXNwbGF5KGJvb2wgbG93QmFuZFdpZHRoKSB7IG1faW5Mb3dCYW5kd2lkdGhEaXNwbGF5
ID0gbG93QmFuZFdpZHRoOyB9CisjZW5kaWYgICAgIAorCiBwcm90ZWN0ZWQ6CiAgICAgQ1NTU3R5
bGVTZWxlY3RvciogbV9zdHlsZVNlbGVjdG9yOwogICAgIEZyYW1lVmlldyogbV92aWV3OwpAQCAt
ODQyLDYgKzg1MiwxMCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2ljb25VUkw7CiAKICAgICBi
b29sIG1faXNBbGxvd2VkVG9Mb2FkTG9jYWxSZXNvdXJjZXM7CisKKyNpZiBVU0UoTE9XX0JBTkRX
SURUSF9ESVNQTEFZKQorICAgIGJvb2wgbV9pbkxvd0JhbmR3aWR0aERpc3BsYXk7CisjZW5kaWYg
ICAgIAogfTsKIAogfSAvL25hbWVzcGFjZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAkocmV2
aXNpb24gMjA1NDYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwMSw2ICs0MDEsMTUgQEAgSFRNTFRva2VuaXplcjo6U3RhdGUgSFRNTFRva2Vu
aXplcjo6c2NyaQogICAgICAgICAgICAga2REZWJ1ZyggNjAzNiApIDw8ICItLS1FTkQgU0NSSVBU
LS0tIiA8PCBlbmRsOwogI2VuZGlmCiAgICAgICAgICAgICAvLyBQYXJzZSBzY3JpcHRDb2RlIGNv
bnRhaW5pbmcgPHNjcmlwdD4gaW5mbworI2lmIFVTRShMT1dfQkFORFdJRFRIX0RJU1BMQVkpCisg
ICAgICAgICAgICBpZiAobV9kb2MtPmluTG93QmFuZHdpZHRoRGlzcGxheSgpKSB7CisgICAgICAg
ICAgICAgICAgLy8gaWRlYWwgc29sdXRpb24gaXMgb25seSBza2lwcGluZyBpbnRlcm5hbCBKYXZh
U2NyaXB0IGlmIHRoZXJlIGlzIGV4dGVybmFsIEphdmFTY3JpcHQuCisgICAgICAgICAgICAgICAg
Ly8gYnV0IGludGVybmFsIEphdmFTY3JpcHQgY2FuIHVzZSBkb2N1bWVudC53cml0ZSgpIHRvIGNy
ZWF0ZSBhbiBleHRlcm5hbCBKYXZhU2NyaXB0LAorICAgICAgICAgICAgICAgIC8vIHNvIHdlIGhh
dmUgdG8gc2tpcCBpbnRlcm5hbCBKYXZhU2NyaXB0IGFsbCB0aGUgdGltZS4KKyAgICAgICAgICAg
ICAgICBtX2RvYy0+ZnJhbWUoKS0+bG9hZGVyKCktPm5lZWRUb1N3aXRjaE91dExvd0JhbmR3aWR0
aERpc3BsYXkoKTsKKyAgICAgICAgICAgICAgICBkb1NjcmlwdEV4ZWMgPSBmYWxzZTsKKyAgICAg
ICAgICAgIH0gZWxzZQorI2VuZGlmCiAgICAgICAgICAgICBkb1NjcmlwdEV4ZWMgPSBzdGF0aWNf
Y2FzdDxIVE1MU2NyaXB0RWxlbWVudCo+KHNjcmlwdE5vZGUuZ2V0KCkpLT5zaG91bGRFeGVjdXRl
QXNKYXZhU2NyaXB0KCk7CiAgICAgICAgICAgICBzY3JpcHROb2RlID0gMDsKICAgICAgICAgfQpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL0NhY2hlLmNwcAkocmV2aXNpb24gMjA1NDYpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRl
ci5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0xMTEsNiArMTEy
LDEzIEBAIENhY2hlZFJlc291cmNlKiBDYWNoZTo6cmVxdWVzdFJlc291cmNlKEQKICAgICBpZiAo
cmVzb3VyY2UtPnR5cGUoKSAhPSB0eXBlKQogICAgICAgICByZXR1cm4gMDsKIAorI2lmIFVTRShM
T1dfQkFORFdJRFRIX0RJU1BMQVkpCisgICAgLy8gYWRkTG93QmFuZHdpZHRoRGlzcGxheVJlcXVl
c3QoKSByZXR1cm5zIHRydWUgaWYgcmVxdWVzdGluZyBjc3Mgb3IganMgZHVyaW5nIGxvdyBiYW5k
d2lkdGggZGlzcGxheS4KKyAgICAvLyB3ZSByZXR1cm4gMCB0byBub3QgYmxvY2sgcGFyc2luZyBv
ciBsYXlvdXQKKyAgICBpZiAoZG9jTG9hZGVyLT5mcmFtZSgpICYmIGRvY0xvYWRlci0+ZnJhbWUo
KS0+bG9hZGVyKCktPmFkZExvd0JhbmR3aWR0aERpc3BsYXlSZXF1ZXN0KHJlc291cmNlKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisjZW5kaWYKKwogICAgIHJldHVybiByZXNvdXJjZTsKIH0KIApJbmRl
eDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDIwNTQ2KQor
KysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkwLDYgKzkwLDE0IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6Y2hlY2tOb3RpZnko
KQogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyIHcobV9jbGllbnRzKTsKICAgICB3aGls
ZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQgKmMgPSB3Lm5leHQoKSkKICAgICAgICAgYy0+c2V0Q1NT
U3R5bGVTaGVldChtX3Jlc3BvbnNlLnVybCgpLnVybCgpLCBtX2RlY29kZXItPmVuY29kaW5nKCku
bmFtZSgpLCBtX3NoZWV0KTsKKyNpZiBVU0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKSAgICAgICAg
CisgICAgLy8gaWYgY2hlY2tOb3RpZnkoKSBpcyBjYWxsZWQgZnJvbSBlcnJvcigpLCBjbGllbnQn
cyBzZXRDU1NTdHlsZVNoZWV0KC4uLikKKyAgICAvLyBjYW4ndCBmaW5kICJ0aGlzIiBmcm9tIHVy
bCwgc28gdGhleSBjYW4ndCBkbyBjbGVhbiB1cCBpZiBuZWVkZWQuCisgICAgLy8gY2FsbCBub3Rp
ZnlGaW5pc2hlZCgpIHRvIG1ha2Ugc3VyZSB0aGV5IGhhdmUgYSBjaGFuY2UuCisgICAgQ2FjaGVk
UmVzb3VyY2VDbGllbnRXYWxrZXIgbihtX2NsaWVudHMpOworICAgIHdoaWxlIChDYWNoZWRSZXNv
dXJjZUNsaWVudCogcyA9IG4ubmV4dCgpKQorICAgICAgICBzLT5ub3RpZnlGaW5pc2hlZCh0aGlz
KTsKKyNlbmRpZiAgICAgICAgCiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZXJyb3Io
KQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvRG9jTG9hZGVyLmgJKHJldmlzaW9uIDIwNTQ2KQorKysgV2ViQ29yZS9sb2FkZXIv
RG9jTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldExvYWRJblByb2dyZXNzKGJvb2wpOwogICAgIGJvb2wgbG9hZEluUHJvZ3Jlc3Mo
KSBjb25zdCB7IHJldHVybiBtX2xvYWRJblByb2dyZXNzOyB9CiAKKyNpZiBVU0UoTE9XX0JBTkRX
SURUSF9ESVNQTEFZKQorICAgIHZvaWQgcmVwbGFjZURvY3VtZW50KERvY3VtZW50KiBkb2MpIHsg
bV9kb2MgPSBkb2M7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIENhY2hlZFJlc291cmNlKiBy
ZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcqIGNoYXJzZXQgPSAwLCBib29sIHNraXBDYW5Mb2FkQ2hlY2sgPSBmYWxzZSk7
CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDIwNTQ2KQorKysgV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcg
bmFtZXNwYWNlIEV2ZW50TmFtZXM7CiAKKyNpZiBVU0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKQor
Y29uc3QgdW5zaWduZWQgaW50IGNNYXhQZW5kZXJpbmdTb3VyY2VMZW5ndGhJbkxvd0JhbmR3aWR0
aERpc3BsYXkgPSAxMjggKiAxMDI0OworI2VuZGlmCisKIHN0cnVjdCBGb3JtU3VibWlzc2lvbiB7
CiAgICAgY29uc3QgY2hhciogYWN0aW9uOwogICAgIFN0cmluZyBVUkw7CkBAIC0yMjYsNiArMjMw
LDExIEBAIEZyYW1lTG9hZGVyOjpGcmFtZUxvYWRlcihGcmFtZSogZnJhbWUsIEYKICAgICAsIG1f
Y2hlY2tDb21wbGV0ZWRUaW1lcih0aGlzLCAmRnJhbWVMb2FkZXI6OmNoZWNrQ29tcGxldGVkVGlt
ZXJGaXJlZCkKICAgICAsIG1fb3BlbmVyKDApCiAgICAgLCBtX29wZW5lZEJ5SmF2YVNjcmlwdChm
YWxzZSkKKyNpZiBVU0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKQorICAgICwgbV91c2VMb3dCYW5k
d2lkdGhEaXNwbGF5KHRydWUpCisgICAgLCBtX2ZpbmlzaGVkUGFyc2luZ0R1cmluZ0xvd0JhbmR3
aWR0aERpc3BsYXkoZmFsc2UpCisgICAgLCBtX25lZWRUb1N3aXRjaE91dExvd0JhbmR3aWR0aERp
c3BsYXkoZmFsc2UpCisjZW5kaWYgCiB7CiB9CiAKQEAgLTM1Nyw2ICszNjYsMTQgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgUmVzbwogCiBib29sIEZyYW1lTG9hZGVyOjpy
ZXF1ZXN0RnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSkKIHsKKyNpZiBV
U0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKQorICAgIC8vIGRvbid0IGNyZWF0ZSBzdWItZnJhbWUg
ZHVyaW5nIGxvdyBiYW5kd2lkdGggZGlzcGxheQorICAgIGlmIChmcmFtZSgpLT5kb2N1bWVudCgp
LT5pbkxvd0JhbmR3aWR0aERpc3BsYXkoKSkgeworICAgICAgICBtX25lZWRUb1N3aXRjaE91dExv
d0JhbmR3aWR0aERpc3BsYXkgPSB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
I2VuZGlmCisKICAgICAvLyBTdXBwb3J0IGZvciA8ZnJhbWUgc3JjPSJqYXZhc2NyaXB0OnN0cmlu
ZyI+CiAgICAgS1VSTCBzY3JpcHRVUkw7CiAgICAgS1VSTCB1cmw7CkBAIC01NTMsNiArNTcwLDE1
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKGJvb2wgc2VuZFUKICAgICAgICAgY2hp
bGQtPmxvYWRlcigpLT5zdG9wTG9hZGluZyhzZW5kVW5sb2FkKTsKIAogICAgIGNhbmNlbFJlZGly
ZWN0aW9uKCk7CisKKyNpZiBVU0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKQorICAgIGlmIChtX2Zy
YW1lLT5kb2N1bWVudCgpICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPmluTG93QmFuZHdpZHRoRGlz
cGxheSgpKSB7CisgICAgICAgIC8vIGxvYWRpbmcgaXMgZm9yY2VkIHRvIHN0b3AsIHNldCBtX25l
ZWRUb1N3aXRjaE91dExvd0JhbmR3aWR0aERpc3BsYXkgdG8gZmFsc2UKKyAgICAgICAgLy8gdG8g
b25seSByZXNldCBzdGF0ZSB3aXRob3V0IHJlYWxseSBzd2l0Y2hpbmcKKyAgICAgICAgbV9uZWVk
VG9Td2l0Y2hPdXRMb3dCYW5kd2lkdGhEaXNwbGF5ID0gZmFsc2U7CisgICAgICAgIHN3aXRjaE91
dExvd0JhbmR3aWR0aERpc3BsYXlJZlJlYWR5KCk7CisgICAgfQorI2VuZGlmICAKIH0KIAogdm9p
ZCBGcmFtZUxvYWRlcjo6c3RvcCgpCkBAIC04NDAsNiArODY2LDE4IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybCkKIAogICAgIGlmIChtX2ZyYW1lLT52aWV3KCkpCiAg
ICAgICAgIG1fZnJhbWUtPnZpZXcoKS0+cmVzaXplQ29udGVudHMoMCwgMCk7CisKKyNpZiBVU0Uo
TE9XX0JBTkRXSURUSF9ESVNQTEFZKQorICAgIC8vIGxvdyBiYW5kd2lkdGggZGlzcGxheSBpcyB1
c2VkIHRvIGdpdmUgYW4gaW5zdGFudCB2aXN1YWwgZmVlZGJhY2suCisgICAgLy8gd2UgY3VycmVu
dGx5IG9ubHkgZW5hYmxlIGl0IGZvciBIVE1MIGRvY3VtZW50IG9uIGEgdG9wIGZyYW1lLgorICAg
IGlmIChkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSAmJgorICAgICAgICAhbV9mcmFtZS0+dHJl
ZSgpLT5wYXJlbnQoKSAmJiBtX3VzZUxvd0JhbmR3aWR0aERpc3BsYXkpIHsKKyAgICAgICAgbV9w
ZW5kaW5nU291cmNlSW5Mb3dCYW5kd2lkdGhEaXNwbGF5ID0gU3RyaW5nKCk7CisgICAgICAgIG1f
ZmluaXNoZWRQYXJzaW5nRHVyaW5nTG93QmFuZHdpZHRoRGlzcGxheSA9IGZhbHNlOworICAgICAg
ICBtX25lZWRUb1N3aXRjaE91dExvd0JhbmR3aWR0aERpc3BsYXkgPSBmYWxzZTsKKyAgICAgICAg
ZG9jdW1lbnQtPnNldExvd0JhbmR3aWR0aERpc3BsYXkodHJ1ZSk7CisgICAgfQorI2VuZGlmCiB9
CiAKIHZvaWQgRnJhbWVMb2FkZXI6OndyaXRlKGNvbnN0IGNoYXIqIHN0ciwgaW50IGxlbiwgYm9v
bCBmbHVzaCkKQEAgLTg3MSw2ICs5MDksMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6d3JpdGUoY29u
c3QgY2hhciogc3RyLAogICAgIGlmIChkZWNvZGVkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCisjaWYgVVNFKExPV19CQU5EV0lEVEhfRElTUExBWSkKKyAgICBpZiAobV9mcmFtZS0+ZG9j
dW1lbnQoKS0+aW5Mb3dCYW5kd2lkdGhEaXNwbGF5KCkpCisgICAgICAgIG1fcGVuZGluZ1NvdXJj
ZUluTG93QmFuZHdpZHRoRGlzcGxheS5hcHBlbmQoZGVjb2RlZCk7CisgICAgZWxzZSAvLyByZXNl
dCBwb2xpY3kgd2hpY2ggaXMgY2hhbmdlZCBpbiBzd2l0Y2hPdXRMb3dCYW5kd2lkdGhEaXNwbGF5
SWZSZWFkeSgpCisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvY0xvYWRlcigpLT5zZXRD
YWNoZVBvbGljeShtX2NhY2hlUG9saWN5KTsgICAgCisjZW5kaWYKKwogICAgIGlmICghbV9yZWNl
aXZlZERhdGEpIHsKICAgICAgICAgbV9yZWNlaXZlZERhdGEgPSB0cnVlOwogICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5kZXRlcm1pbmVQYXJzZU1vZGUoZGVjb2RlZCk7CkBAIC05MTksNiAr
OTY0LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmVuZElmTm90TG9hZGluZygpCiAgICAgaWYgKG1f
ZnJhbWUtPmRvY3VtZW50KCkpIHsKICAgICAgICAgd3JpdGUoMCwgMCwgdHJ1ZSk7CiAgICAgICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPmZpbmlzaFBhcnNpbmcoKTsKKyNpZiBVU0UoTE9XX0JBTkRX
SURUSF9ESVNQTEFZKQorICAgICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5Mb3dCYW5k
d2lkdGhEaXNwbGF5KCkpIHsKKyAgICAgICAgICAgIG1fZmluaXNoZWRQYXJzaW5nRHVyaW5nTG93
QmFuZHdpZHRoRGlzcGxheSA9IHRydWU7CisgICAgICAgICAgICBzd2l0Y2hPdXRMb3dCYW5kd2lk
dGhEaXNwbGF5SWZSZWFkeSgpOworICAgICAgICB9CisjZW5kaWYgICAgICAgICAgICAKICAgICB9
IGVsc2UKICAgICAgICAgLy8gV2ViS2l0IHBhcnRpYWxseSB1c2VzIFdlYkNvcmUgd2hlbiBsb2Fk
aW5nIG5vbi1IVE1MIGRvY3MuICBJbiB0aGVzZSBjYXNlcyBkb2M9PW5pbCwgYnV0CiAgICAgICAg
IC8vIFdlYkNvcmUgaXMgZW5vdWdoIGludm9sdmVkIHRoYXQgd2UgbmVlZCB0byBjaGVja0NvbXBs
ZXRlZCgpIGluIG9yZGVyIGZvciBtX2JDb21wbGV0ZSB0bwpAQCAtMTA4Miw2ICsxMTMzLDEyIEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrQ29tcGxldGVkKCkKICAgICAgICAgaWYgKGNhY2hlKCkt
PmxvYWRlcigpLT5udW1SZXF1ZXN0cyhtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb2NMb2FkZXIoKSkp
CiAgICAgICAgICAgICByZXR1cm47CiAKKyNpZiBVU0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKQor
ICAgIC8vIGFzIHN3aXRjaCB3aWxsIGJlIGNhbGxlZCwgZG9uJ3QgY29tcGxldGUgeWV0CisgICAg
aWYgKG1fZnJhbWUtPmRvY3VtZW50KCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5Mb3dCYW5k
d2lkdGhEaXNwbGF5KCkgJiYgbV9uZWVkVG9Td2l0Y2hPdXRMb3dCYW5kd2lkdGhEaXNwbGF5KQor
ICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIC8vIE9LLCBjb21wbGV0ZWQuCiAgICAgbV9p
c0NvbXBsZXRlID0gdHJ1ZTsKIApAQCAtMTExMSw3ICsxMTY4LDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6Y2hlY2tFbWl0TG9hZEV2ZW50KCkKIHsKICAgICBpZiAobV93YXNMb2FkRXZlbnRFbWl0dGVk
IHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpIHx8IG1fZnJhbWUtPmRvY3VtZW50KCktPnBhcnNpbmco
KSkKICAgICAgICAgcmV0dXJuOwotCisgICAgICAgIAogICAgIGZvciAoRnJhbWUqIGNoaWxkID0g
bV9mcmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVl
KCktPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGlmICghY2hpbGQtPmxvYWRlcigpLT5tX2lzQ29t
cGxldGUpIC8vIHN0aWxsIGdvdCBhIGZyYW1lIHJ1bm5pbmcgLT4gdG9vIGVhcmx5CiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xMzQ3LDYgKzE0MDQsMTQgQEAgYm9vbCBGcmFtZUxvYWRlcjo6cmVx
dWVzdE9iamVjdChSZW5kZXJQYQogICAgIGlmICh1cmwuaXNFbXB0eSgpICYmIG1pbWVUeXBlLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyNpZiBVU0UoTE9XX0JBTkRXSURUSF9E
SVNQTEFZKQorICAgIC8vIGRvbid0IGNhcmUgb2JqZWN0IGR1cmluZyBsb3cgYmFuZHdpZHRoIGRp
c3BsYXkKKyAgICBpZiAoZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aW5Mb3dCYW5kd2lkdGhEaXNwbGF5
KCkpIHsKKyAgICAgICAgbV9uZWVkVG9Td2l0Y2hPdXRMb3dCYW5kd2lkdGhEaXNwbGF5ID0gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgorCiAgICAgS1VSTCBjb21w
bGV0ZWRVUkw7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQogICAgICAgICBjb21wbGV0ZWRVUkwg
PSBjb21wbGV0ZVVSTCh1cmwpOwpAQCAtNDMzOCw0ICs0NDAzLDEyNSBAQCBib29sIEZyYW1lTG9h
ZGVyOjpzaG91bGRUcmVhdFVSTEFzTG9jYWwoCiAgICAgcmV0dXJuIGxvY2FsU2NoZW1lcygpLmNv
bnRhaW5zKHNjaGVtZSk7CiB9CiAKKyNpZiBVU0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKQorYm9v
bCBGcmFtZUxvYWRlcjo6YWRkTG93QmFuZHdpZHRoRGlzcGxheVJlcXVlc3QoQ2FjaGVkUmVzb3Vy
Y2UqIGNhY2hlKQoreworICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5pbkxvd0JhbmR3aWR0
aERpc3BsYXkoKSA9PSBmYWxzZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAg
ICAvLyBpZiBjYWNoZSBpcyBsb2FkZWQsIGRvbid0IGFkZCB0byB0aGUgbGlzdCwgd2hlcmUgbm90
aWZ5RmluaXNoZWQoKSBpcyBleHBlY3RlZC4gCisgICAgaWYgKGNhY2hlLT5pc0xvYWRlZCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgCisgICAgc3dpdGNoKGNhY2hl
LT50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldDoK
KyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OgorICAgICAgICAgICAgbV9uZWVk
VG9Td2l0Y2hPdXRMb3dCYW5kd2lkdGhEaXNwbGF5ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fZXh0
ZXJuYWxSZXF1ZXN0c0luTG93QmFuZHdpZHRoRGlzcGxheS5hZGQoY2FjaGUpOworICAgICAgICAg
ICAgY2FjaGUtPnJlZih0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgorI2lmIEVOQUJMRShYU0xUKQorICAg
ICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0OgorI2VuZGlmCisjaWYgRU5B
QkxFKFhCTCkKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6WEJMU3R5bGVTaGVldDoKKyNl
bmRpZgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBGcmFtZUxvYWRlcjo6cmVtb3ZlQWxsTG93YmFu
ZHdpZHRoRGlzcGxheVJlcXVlc3RzKCkKK3sKKyAgICBIYXNoU2V0PENhY2hlZFJlc291cmNlKj46
Oml0ZXJhdG9yIGVuZCA9IG1fZXh0ZXJuYWxSZXF1ZXN0c0luTG93QmFuZHdpZHRoRGlzcGxheS5l
bmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPjo6aXRlcmF0b3IgaXQgPSBt
X2V4dGVybmFsUmVxdWVzdHNJbkxvd0JhbmR3aWR0aERpc3BsYXkuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQorICAgICAgICAoKml0KS0+ZGVyZWYodGhpcyk7CisgICAgbV9leHRlcm5hbFJlcXVl
c3RzSW5Mb3dCYW5kd2lkdGhEaXNwbGF5LmNsZWFyKCk7Cit9CisgICAgCit2b2lkIEZyYW1lTG9h
ZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogc2NyaXB0KQoreworICAgIEhhc2hT
ZXQ8Q2FjaGVkUmVzb3VyY2UqPjo6aXRlcmF0b3IgaXQgPSBtX2V4dGVybmFsUmVxdWVzdHNJbkxv
d0JhbmR3aWR0aERpc3BsYXkuZmluZChzY3JpcHQpOworICAgIGlmIChpdCAhPSBtX2V4dGVybmFs
UmVxdWVzdHNJbkxvd0JhbmR3aWR0aERpc3BsYXkuZW5kKCkpIHsKKyAgICAgICAgKCppdCktPmRl
cmVmKHRoaXMpOworICAgICAgICBtX2V4dGVybmFsUmVxdWVzdHNJbkxvd0JhbmR3aWR0aERpc3Bs
YXkucmVtb3ZlKGl0KTsKKyAgICAgICAgc3dpdGNoT3V0TG93QmFuZHdpZHRoRGlzcGxheUlmUmVh
ZHkoKTsgICAgICAgIAorICAgIH0KK30KKwordm9pZCBGcmFtZUxvYWRlcjo6c3dpdGNoT3V0TG93
QmFuZHdpZHRoRGlzcGxheUlmUmVhZHkoKQoreworICAgIFJlZlB0cjxEb2N1bWVudD4gb2xkRG9j
ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAob2xkRG9jLT5pbkxvd0JhbmR3aWR0aERp
c3BsYXkoKSkgeworICAgICAgICBpZiAoIW1fbmVlZFRvU3dpdGNoT3V0TG93QmFuZHdpZHRoRGlz
cGxheSkgeworICAgICAgICAgICAgLy8gbm8gbmVlZCB0byBzd2l0Y2gsIGp1c3QgcmVzZXQgc3Rh
dGUKKyAgICAgICAgICAgIG9sZERvYy0+c2V0TG93QmFuZHdpZHRoRGlzcGxheShmYWxzZSk7Cisg
ICAgICAgICAgICByZW1vdmVBbGxMb3diYW5kd2lkdGhEaXNwbGF5UmVxdWVzdHMoKTsgICAgICAg
IAorICAgICAgICAgICAgbV9wZW5kaW5nU291cmNlSW5Mb3dCYW5kd2lkdGhEaXNwbGF5ID0gU3Ry
aW5nKCk7CisgICAgICAgICAgICBtX2ZpbmlzaGVkUGFyc2luZ0R1cmluZ0xvd0JhbmR3aWR0aERp
c3BsYXkgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIGlmICht
X2V4dGVybmFsUmVxdWVzdHNJbkxvd0JhbmR3aWR0aERpc3BsYXkuaXNFbXB0eSgpIHx8IAorICAg
ICAgICAgICAgbV9wZW5kaW5nU291cmNlSW5Mb3dCYW5kd2lkdGhEaXNwbGF5Lmxlbmd0aCgpID4g
Y01heFBlbmRlcmluZ1NvdXJjZUxlbmd0aEluTG93QmFuZHdpZHRoRGlzcGxheSkgeworICAgICAg
ICAgICAgLy8gY2xlYXIgdGhlIGZsYWcgZmlyc3QKKyAgICAgICAgICAgIG9sZERvYy0+c2V0TG93
QmFuZHdpZHRoRGlzcGxheShmYWxzZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIHNp
bWlsYXIgYXMgY2xlYXIoKSwgY2FuIGJlIHJlLWZhY3RvciBsYXRlcgorICAgICAgICAgICAgb2xk
RG9jLT5jYW5jZWxQYXJzaW5nKCk7CisgICAgICAgICAgICBvbGREb2MtPmRldGFjaCgpOworICAg
ICAgICAgICAgaWYgKG1fZnJhbWUtPnNjcmlwdFByb3h5KCkpCisgICAgICAgICAgICAgICAgbV9m
cmFtZS0+c2NyaXB0UHJveHkoKS0+Y2xlYXIoKTsKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lLT52
aWV3KCkpCisgICAgICAgICAgICAgICAgbV9mcmFtZS0+dmlldygpLT5jbGVhcigpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICAvLyBzaW1pbGFyIGFzIGJlZ2luKCksIGNhbiBiZSByZS1mYWN0
b3IgbGF0ZXIKKyAgICAgICAgICAgIFJlZlB0cjxEb2N1bWVudD4gbmV3RG9jID0gRE9NSW1wbGVt
ZW50YXRpb246Omluc3RhbmNlKCktPgorICAgICAgICAgICAgICAgIGNyZWF0ZURvY3VtZW50KG1f
cmVzcG9uc2VNSU1FVHlwZSwgbV9mcmFtZS0+dmlldygpLCBtX2ZyYW1lLT5pblZpZXdTb3VyY2VN
b2RlKCkpOworICAgICAgICAgICAgbV9mcmFtZS0+ZC0+bV9kb2MgPSBuZXdEb2M7CisgICAgICAg
ICAgICBpZiAoIW5ld0RvYy0+YXR0YWNoZWQoKSkKKyAgICAgICAgICAgICAgICBuZXdEb2MtPmF0
dGFjaCgpOworICAgICAgICAgICAgbmV3RG9jLT5zZXRVUkwobV9VUkwudXJsKCkpOworICAgICAg
ICAgICAgbmV3RG9jLT5zZXRCYXNlVVJMKG1fVVJMLnVybCgpKTsKKyAgICAgICAgICAgIGlmICht
X2RlY29kZXIpCisgICAgICAgICAgICAgICAgbmV3RG9jLT5zZXREZWNvZGVyKG1fZGVjb2Rlci5n
ZXQoKSk7CisgICAgICAgICAgICByZXN0b3JlRG9jdW1lbnRTdGF0ZSgpOworICAgICAgICAgICAg
cGFydENsZWFyZWRJbkJlZ2luKCk7ICAgICAgICAgCisgICAgICAgICAgICBuZXdEb2MtPmltcGxp
Y2l0T3BlbigpOworCisgICAgICAgICAgICAvLyBzd2FwIERvY0xvYWRlciBvd25lcnNoaXAKKyAg
ICAgICAgICAgIERvY0xvYWRlciogZG9jTG9hZGVyID0gbmV3RG9jLT5kb2NMb2FkZXIoKTsKKyAg
ICAgICAgICAgIG5ld0RvYy0+c2V0RG9jTG9hZGVyKG9sZERvYy0+ZG9jTG9hZGVyKCkpOworICAg
ICAgICAgICAgbmV3RG9jLT5kb2NMb2FkZXIoKS0+cmVwbGFjZURvY3VtZW50KG5ld0RvYy5nZXQo
KSk7CisgICAgICAgICAgICBkb2NMb2FkZXItPnJlcGxhY2VEb2N1bWVudChvbGREb2MuZ2V0KCkp
OworICAgICAgICAgICAgb2xkRG9jLT5zZXREb2NMb2FkZXIoZG9jTG9hZGVyKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgLy8gZHJvcCB0aGUgb2xkIGRvYyAgICAgICAgICAgIAorICAgICAg
ICAgICAgb2xkRG9jID0gMDsKKworICAgICAgICAgICAgLy8gd3JpdGUgZGVjb2RlZCBkYXRhIHRv
IHRoZSBuZXcgZG9jLCBzaW1pbGFyIGFzIHdyaXRlKCksIAorICAgICAgICAgICAgaWYgKG1fcGVu
ZGluZ1NvdXJjZUluTG93QmFuZHdpZHRoRGlzcGxheS5sZW5ndGgoKSkgeworICAgICAgICAgICAg
ICAgIC8vIHNldCBjYWNoZVBvbGljeSB0byBDYWNoZSB0byB1c2UgdGhlIGxvYWRlZCByZXNvdXJj
ZQorICAgICAgICAgICAgICAgIG5ld0RvYy0+ZG9jTG9hZGVyKCktPnNldENhY2hlUG9saWN5KENh
Y2hlUG9saWN5Q2FjaGUpOworICAgICAgICAgICAgICAgIG5ld0RvYy0+ZGV0ZXJtaW5lUGFyc2VN
b2RlKG1fcGVuZGluZ1NvdXJjZUluTG93QmFuZHdpZHRoRGlzcGxheSk7CisgICAgICAgICAgICAg
ICAgaWYgKG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS51c2VzVmlzdWFsT3JkZXJpbmcoKSkKKyAgICAg
ICAgICAgICAgICAgICAgbmV3RG9jLT5zZXRWaXN1YWxseU9yZGVyZWQoKTsgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIG5ld0RvYy0+cmVjYWxjU3R5bGUoTm9kZTo6Rm9yY2Up
OyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBuZXdEb2MtPnRva2VuaXplcigpLT53
cml0ZShtX3BlbmRpbmdTb3VyY2VJbkxvd0JhbmR3aWR0aERpc3BsYXksIHRydWUpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgaWYgKG1fZmluaXNoZWRQYXJzaW5nRHVyaW5nTG93QmFu
ZHdpZHRoRGlzcGxheSkKKyAgICAgICAgICAgICAgICAgICAgbmV3RG9jLT5maW5pc2hQYXJzaW5n
KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIHJlc2V0IHN0
YXRlcworICAgICAgICAgICAgcmVtb3ZlQWxsTG93YmFuZHdpZHRoRGlzcGxheVJlcXVlc3RzKCk7
ICAgICAgICAKKyAgICAgICAgICAgIG1fcGVuZGluZ1NvdXJjZUluTG93QmFuZHdpZHRoRGlzcGxh
eSA9IFN0cmluZygpOworICAgICAgICAgICAgbV9maW5pc2hlZFBhcnNpbmdEdXJpbmdMb3dCYW5k
d2lkdGhEaXNwbGF5ID0gZmFsc2U7CisgICAgICAgICAgICBtX25lZWRUb1N3aXRjaE91dExvd0Jh
bmR3aWR0aERpc3BsYXkgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KK30KKyNlbmRpZgorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDIw
NTQ2KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDMsNiArNDMsOSBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaWYgVVNFKExPV19CQU5EV0lE
VEhfRElTUExBWSkKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgorI2VuZGlmCiAK
IG5hbWVzcGFjZSBLSlMgewogICAgIGNsYXNzIEpTVmFsdWU7CkBAIC0xMTksMTEgKzEyMiwxOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQqIG1fYXJndW1lbnQ7CiAgICAgfTsK
IAorI2lmIFVTRShMT1dfQkFORFdJRFRIX0RJU1BMQVkpCisgICAgY2xhc3MgRnJhbWVMb2FkZXIg
OiBOb25jb3B5YWJsZSwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CisjZWxzZQogICAg
IGNsYXNzIEZyYW1lTG9hZGVyIDogTm9uY29weWFibGUgeworI2VuZGlmCiAgICAgcHVibGljOgog
ICAgICAgICBGcmFtZUxvYWRlcihGcmFtZSosIEZyYW1lTG9hZGVyQ2xpZW50Kik7CisjaWYgVVNF
KExPV19CQU5EV0lEVEhfRElTUExBWSkKKyAgICAgICAgdmlydHVhbCB+RnJhbWVMb2FkZXIoKTsK
KyNlbHNlCiAgICAgICAgIH5GcmFtZUxvYWRlcigpOwotCisjZW5kaWYKICAgICAgICAgRnJhbWUq
IGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQogCiAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGlzIG5vdCBjb29sLCBwZW9wbGUuCkBAIC00MTQsNiArNDI0LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgc3RhdGljIHZvaWQgc2V0UmVzdHJpY3RBY2Nlc3NUb0xvY2FsKGJv
b2wpOwogICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdFVSTEFzTG9jYWwoY29uc3QgU3Ry
aW5nJiB1cmwpOwogCisjaWYgVVNFKExPV19CQU5EV0lEVEhfRElTUExBWSkgICAgCisgICAgICAg
IGJvb2wgYWRkTG93QmFuZHdpZHRoRGlzcGxheVJlcXVlc3QoQ2FjaGVkUmVzb3VyY2UqKTsKKyAg
ICAgICAgdm9pZCBuZWVkVG9Td2l0Y2hPdXRMb3dCYW5kd2lkdGhEaXNwbGF5KCkgeyBtX25lZWRU
b1N3aXRjaE91dExvd0JhbmR3aWR0aERpc3BsYXkgPSB0cnVlOyB9CisgICAgICAgIC8vIGNsaWVu
dCBjYW4gY29udHJvbCB3aGV0aGVyIHRvIHVzZSBsb3cgYmFuZHdpZHRoIGRpc3BsYXkgb24gYSBw
ZXIgZnJhbWUgYmFzZS4KKyAgICAgICAgLy8gd2hpbGUgdGhpcyBzaG91bGQgb25seSBiZSB1c2Vk
IGZvciB0aGUgdG9wIGZyYW1lLCBub3Qgc3ViLWZyYW1lLgorICAgICAgICB2b2lkIHNldFVzZUxv
d0JhbmR3aWR0aERpc3BsYXkoYm9vbCBsb3dCYW5kd2lkdGgpIHsgbV91c2VMb3dCYW5kd2lkdGhE
aXNwbGF5ID0gbG93QmFuZHdpZHRoOyB9CisgICAgICAgIGJvb2wgdXNlTG93QmFuZHdpZHRoRGlz
cGxheSgpIHsgcmV0dXJuIG1fdXNlTG93QmFuZHdpZHRoRGlzcGxheTsgfQorI2VuZGlmCiAgICAg
cHJpdmF0ZTogICAgICAgIAogICAgICAgICBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjcmVhdGVI
aXN0b3J5SXRlbShib29sIHVzZU9yaWdpbmFsKTsKICAgICAgICAgUGFzc1JlZlB0cjxIaXN0b3J5
SXRlbT4gY3JlYXRlSGlzdG9yeUl0ZW1UcmVlKEZyYW1lKiB0YXJnZXRGcmFtZSwgYm9vbCBjbGlw
QXRUYXJnZXQpOwpAQCAtNTI1LDYgKzU0MywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgdm9pZCBzdGFydEljb25Mb2FkZXIoKTsKIAorI2lmIFVTRShMT1dfQkFORFdJRFRIX0RJ
U1BMQVkpCisgICAgICAgIC8vIGltcGxlbWVudGF0aW9uIGZvciBDYWNoZWRSZXNvdXJjZUNsaWVu
dCAgICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSopOworICAgICAgICAKKyAgICAgICAgdm9pZCByZW1vdmVBbGxMb3diYW5kd2lkdGhEaXNw
bGF5UmVxdWVzdHMoKTsgICAgCisgICAgICAgIHZvaWQgc3dpdGNoT3V0TG93QmFuZHdpZHRoRGlz
cGxheUlmUmVhZHkoKTsgICAgICAgIAorI2VuZGlmCisKICAgICAgICAgRnJhbWUqIG1fZnJhbWU7
CiAgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKIApAQCAtNTk5LDYgKzYyNSwx
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gbV9w
cmV2aW91c0hpc3RvcnlJdGVtOwogICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IG1fcHJvdmlz
aW9uYWxIaXN0b3J5SXRlbTsKIAorI2lmIFVTRShMT1dfQkFORFdJRFRIX0RJU1BMQVkpCisgICAg
ICAgIC8vIHdoZXRoZXIgdG8gdXNlIGxvdyBiYW5kd2lkdGggZGlzbGF5LCBzZXQgYnkgY2xpZW50
CisgICAgICAgIGJvb2wgbV91c2VMb3dCYW5kd2lkdGhEaXNwbGF5OworICAgICAgICAvLyB3aGV0
aGVyIHRvIGNhbGwgZmluaXNoUGFyc2luZygpIGluIHN3aXRjaE91dExvd0JhbmR3aWR0aERpc3Bs
YXlJZlJlYWR5KCkgCisgICAgICAgIGJvb2wgbV9maW5pc2hlZFBhcnNpbmdEdXJpbmdMb3dCYW5k
d2lkdGhEaXNwbGF5OworICAgICAgICAvLyB3aGV0aGVyIHRvIGNhbGwgc3dpdGNoT3V0TG93QmFu
ZHdpZHRoRGlzcGxheUlmUmVhZHk7CisgICAgICAgIC8vIHRydWUgaWYgdGhlcmUgaXMgZXh0ZXJu
YWwgY3NzLCBqYXZhc2NyaXB0LCBvciBzdWJmcmFtZS9wbHVnaW4KKyAgICAgICAgYm9vbCBtX25l
ZWRUb1N3aXRjaE91dExvd0JhbmR3aWR0aERpc3BsYXk7CisgICAgICAgIAorICAgICAgICBTdHJp
bmcgbV9wZW5kaW5nU291cmNlSW5Mb3dCYW5kd2lkdGhEaXNwbGF5OyAgICAgICAgCisgICAgICAg
IEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPiBtX2V4dGVybmFsUmVxdWVzdHNJbkxvd0JhbmR3aWR0
aERpc3BsYXk7CisjZW5kaWYgICAKICAgICB9OwogCiB9Cg==
</data>
<flag name="review"
          id="5536"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13932</attachid>
            <date>2007-04-02 23:42:12 -0700</date>
            <delta_ts>2007-04-22 16:31:30 -0700</delta_ts>
            <desc>updated patch for fix layout tests (rev 20675)</desc>
            <filename>doubleTree4</filename>
            <type>text/plain</type>
            <size>21359</size>
            <attacher name="Grace Kloba">klobag</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDY3NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTEgQEAKKzIwMDctMDQtMDIgIEdyYWNlIEtsb2JhICA8a2xvYmFnQGdtYWlsLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXQVJO
SU5HOiBOTyBURVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQKKworCUZpeGVzOiBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI3OQorCUltcGxlbWVudGVkIHR3byBwYXNz
IGxvYWRpbmcuIEVuYWJsZWQgYnkgV1RGX1VTRV9MT1dfQkFORFdJRFRIX0RJU1BMQVkgZmxhZy4K
KworICAgICAgICAqIGNvbmZpZy5oOiBkZWZpbmUgV1RGX1VTRV9MT1dfQkFORFdJRFRIX0RJU1BM
QVkgdG8gYmUgMSBpZiBNT0JJTEUgaXMgMQorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6IGluaXRpYWxpemUgbWVtYmVy
IHZhcmlhYmxlIG1faW5Mb3dCYW5kd2lkdGhEaXNwbGF5CisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXZlU3R5bGVzaGVldHNMb2FkZWQp
OiB3aGlsZSBpbiBsb3cgYmFuZHdpZHRoIGRpc3BsYXkgbW9kZSwgaWdub3JlIHBlbmRpbmcgc3R5
bGUgc2hlZXRzCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0RG9jTG9hZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbkxvd0JhbmR3aWR0aERpc3BsYXkpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldExvd0JhbmR3aWR0aERpc3BsYXkpOgorICAgICAgICAq
IGh0bWwvSFRNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVy
OjpzY3JpcHRIYW5kbGVyKTogd2hpbGUgaW4gbG93IGJhbmR3aWR0aCBkaXNwbGF5IG1vZGUsIGRv
bid0IGV4ZWN1dGUgSmF2YVNjcmlwdAorCisgICAgICAgICogbG9hZGVyL0NhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlOjpyZXF1ZXN0UmVzb3VyY2UpOiB3aGlsZSBpbiBsb3cgYmFu
ZHdpZHRoIGRpc3BsYXkgbW9kZSwgZG9uJ3QgbGV0IHN0eWxlIHNoZWV0IGFuZCBKYXZhU2NyaXB0
IGJsb2NrCisKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpjaGVja05vdGlmeSk6IGFkZCBub3Rp
ZnlGaW5pc2hlZCgpIGFzIGNsaWVudCBtYXkgbmVlZCAidGhpcyIgcG9pbnRlcgorCisgICAgICAg
ICogbG9hZGVyL0RvY0xvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jTG9hZGVyOjpyZXBs
YWNlRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZSk6IHdoaWxlIGluIGxvdyBiYW5kd2lkdGggZGlzcGxh
eSBtb2RlLCBkb24ndCBsb2FkIHN1Yi1mcmFtZQorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpiZWdpbik6
IHNldCB0byBsb3cgYmFuZHdpZHRoIGRpc3BsYXkgbW9kZSBpZiB0aGUgdG9wIGZyYW1lIGlzIEhU
TUwgZG9jdW1lbnQKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp3cml0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZW5kSWZOb3RMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0NvbXBsZXRlZCk6IHdoaWxlIGluIGxvdyBiYW5kd2lk
dGggZGlzcGxheSBtb2RlLCBkb24ndCBzZXQgY29tcGxldGUKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpyZXF1ZXN0T2JqZWN0KTogd2hpbGUgaW4gbG93IGJhbmR3aWR0aCBkaXNwbGF5
IG1vZGUsIGRvbid0IGNhcmUgT2JqZWN0CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
YWRkTG93QmFuZHdpZHRoRGlzcGxheVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnJlbW92ZUFsbExvd2JhbmR3aWR0aERpc3BsYXlSZXF1ZXN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnN3aXRjaE91dExvd0JhbmR3aWR0aERpc3BsYXlJZlJlYWR5KToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
OjpGcmFtZUxvYWRlcjo6bmVlZFRvU3dpdGNoT3V0TG93QmFuZHdpZHRoRGlzcGxheSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXI6OnNldFVzZUxvd0JhbmR3aWR0
aERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyOjp1
c2VMb3dCYW5kd2lkdGhEaXNwbGF5KToKKwogMjAwNy0wNC0wMiAgQWRlbGUgUGV0ZXJzb24gIDxh
ZGVsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqLgpJbmRleDogV2Vi
Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2NvbmZpZy5oCShyZXZpc2lvbiAy
MDY3NSkKKysrIFdlYkNvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDMgKzk3LDcg
QEAgdHlwZWRlZiBmbG9hdCBDR0Zsb2F0OwogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAjZW5kaWYKKworI2lmIE1PQklMRQorI2RlZmluZSBXVEZfVVNF
X0xPV19CQU5EV0lEVEhfRElTUExBWSAxCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9u
IDIwNjc1KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MDIsNiArMzAyLDkgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KERPTUltcGxlbWVudGF0aW9uKiBpbQog
ICAgICwgbV9jcmVhdGVSZW5kZXJlcnModHJ1ZSkKICAgICAsIG1faW5QYWdlQ2FjaGUoZmFsc2Up
CiAgICAgLCBtX2lzQWxsb3dlZFRvTG9hZExvY2FsUmVzb3VyY2VzKGZhbHNlKQorI2lmIFVTRShM
T1dfQkFORFdJRFRIX0RJU1BMQVkpCisgICAgLCBtX2luTG93QmFuZHdpZHRoRGlzcGxheShmYWxz
ZSkKKyNlbmRpZiAgICAKIHsKICAgICBtX2RvY3VtZW50LnJlc2V0U2tpcHBpbmdSZWYodGhpcyk7
CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAkocmV2aXNpb24gMjA2NzUpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTQsOCArMjU0LDEyIEBAIHB1YmxpYzoKICAgICAgKiBUaGlz
IG1ldGhvZCByZXR1cm5zIHRydWUgaWYgYWxsIHRvcC1sZXZlbCBzdHlsZXNoZWV0cyBoYXZlIGxv
YWRlZCAoaW5jbHVkaW5nCiAgICAgICogYW55IEBpbXBvcnRzIHRoYXQgdGhleSBtYXkgYmUgbG9h
ZGluZykuCiAgICAgICovCisjaWYgVVNFKExPV19CQU5EV0lEVEhfRElTUExBWSkKKyAgICBib29s
IGhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ1N0eWxlc2hl
ZXRzIDw9IDAgfHwgbV9pZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8fCBtX2luTG93QmFuZHdpZHRoRGlzcGxheTsgfQorI2Vs
c2UKICAgICBib29sIGhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVu
ZGluZ1N0eWxlc2hlZXRzIDw9IDAgfHwgbV9pZ25vcmVQZW5kaW5nU3R5bGVzaGVldHM7IH0KLQor
I2VuZGlmCiAgICAgLyoqCiAgICAgICogSW5jcmVtZW50cyB0aGUgbnVtYmVyIG9mIHBlbmRpbmcg
c2hlZXRzLiAgVGhlIDxsaW5rPiBlbGVtZW50cwogICAgICAqIGludm9rZSB0aGlzIHRvIGFkZCB0
aGVtc2VsdmVzIHRvIHRoZSBsb2FkaW5nIGxpc3QuCkBAIC02MjYsNiArNjMwLDEyIEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaXNBbGxvd2VkVG9Mb2FkTG9jYWxSZXNvdXJjZXMoKSBjb25zdCB7IHJl
dHVybiBtX2lzQWxsb3dlZFRvTG9hZExvY2FsUmVzb3VyY2VzOyB9CiAKKyNpZiBVU0UoTE9XX0JB
TkRXSURUSF9ESVNQTEFZKQorICAgIHZvaWQgc2V0RG9jTG9hZGVyKERvY0xvYWRlciogbG9hZGVy
KSB7IG1fZG9jTG9hZGVyID0gbG9hZGVyOyB9CisgICAgYm9vbCBpbkxvd0JhbmR3aWR0aERpc3Bs
YXkoKSBjb25zdCB7IHJldHVybiBtX2luTG93QmFuZHdpZHRoRGlzcGxheTsgfQorICAgIHZvaWQg
c2V0TG93QmFuZHdpZHRoRGlzcGxheShib29sIGxvd0JhbmRXaWR0aCkgeyBtX2luTG93QmFuZHdp
ZHRoRGlzcGxheSA9IGxvd0JhbmRXaWR0aDsgfQorI2VuZGlmICAgICAKKwogcHJvdGVjdGVkOgog
ICAgIENTU1N0eWxlU2VsZWN0b3IqIG1fc3R5bGVTZWxlY3RvcjsKICAgICBGcmFtZVZpZXcqIG1f
dmlldzsKQEAgLTg0Miw2ICs4NTIsMTAgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9pY29uVVJM
OwogCiAgICAgYm9vbCBtX2lzQWxsb3dlZFRvTG9hZExvY2FsUmVzb3VyY2VzOworCisjaWYgVVNF
KExPV19CQU5EV0lEVEhfRElTUExBWSkKKyAgICBib29sIG1faW5Mb3dCYW5kd2lkdGhEaXNwbGF5
OworI2VuZGlmICAgICAKIH07CiAKIH0gLy9uYW1lc3BhY2UKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MVG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXpl
ci5jcHAJKHJldmlzaW9uIDIwNjc1KQorKysgV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MDEsNiArNDAxLDE1IEBAIEhUTUxUb2tlbml6ZXI6OlN0YXRl
IEhUTUxUb2tlbml6ZXI6OnNjcmkKICAgICAgICAgICAgIGtkRGVidWcoIDYwMzYgKSA8PCAiLS0t
RU5EIFNDUklQVC0tLSIgPDwgZW5kbDsKICNlbmRpZgogICAgICAgICAgICAgLy8gUGFyc2Ugc2Ny
aXB0Q29kZSBjb250YWluaW5nIDxzY3JpcHQ+IGluZm8KKyNpZiBVU0UoTE9XX0JBTkRXSURUSF9E
SVNQTEFZKQorICAgICAgICAgICAgaWYgKG1fZG9jLT5pbkxvd0JhbmR3aWR0aERpc3BsYXkoKSkg
eworICAgICAgICAgICAgICAgIC8vIGlkZWFsIHNvbHV0aW9uIGlzIG9ubHkgc2tpcHBpbmcgaW50
ZXJuYWwgSmF2YVNjcmlwdCBpZiB0aGVyZSBpcyBleHRlcm5hbCBKYXZhU2NyaXB0LgorICAgICAg
ICAgICAgICAgIC8vIGJ1dCBpbnRlcm5hbCBKYXZhU2NyaXB0IGNhbiB1c2UgZG9jdW1lbnQud3Jp
dGUoKSB0byBjcmVhdGUgYW4gZXh0ZXJuYWwgSmF2YVNjcmlwdCwKKyAgICAgICAgICAgICAgICAv
LyBzbyB3ZSBoYXZlIHRvIHNraXAgaW50ZXJuYWwgSmF2YVNjcmlwdCBhbGwgdGhlIHRpbWUuCisg
ICAgICAgICAgICAgICAgbV9kb2MtPmZyYW1lKCktPmxvYWRlcigpLT5uZWVkVG9Td2l0Y2hPdXRM
b3dCYW5kd2lkdGhEaXNwbGF5KCk7CisgICAgICAgICAgICAgICAgZG9TY3JpcHRFeGVjID0gZmFs
c2U7CisgICAgICAgICAgICB9IGVsc2UKKyNlbmRpZgogICAgICAgICAgICAgZG9TY3JpcHRFeGVj
ID0gc3RhdGljX2Nhc3Q8SFRNTFNjcmlwdEVsZW1lbnQqPihzY3JpcHROb2RlLmdldCgpKS0+c2hv
dWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpOwogICAgICAgICAgICAgc2NyaXB0Tm9kZSA9IDA7CiAg
ICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJKHJldmlzaW9uIDIwNjc1KQorKysgV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFu
ZGxlLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAt
MTExLDYgKzExMiwxMyBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGU6OnJlcXVlc3RSZXNvdXJjZShE
CiAgICAgaWYgKHJlc291cmNlLT50eXBlKCkgIT0gdHlwZSkKICAgICAgICAgcmV0dXJuIDA7CiAK
KyNpZiBVU0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKQorICAgIC8vIGFkZExvd0JhbmR3aWR0aERp
c3BsYXlSZXF1ZXN0KCkgcmV0dXJucyB0cnVlIGlmIHJlcXVlc3RpbmcgY3NzIG9yIGpzIGR1cmlu
ZyBsb3cgYmFuZHdpZHRoIGRpc3BsYXkuCisgICAgLy8gd2UgcmV0dXJuIDAgdG8gbm90IGJsb2Nr
IHBhcnNpbmcgb3IgbGF5b3V0CisgICAgaWYgKGRvY0xvYWRlci0+ZnJhbWUoKSAmJiBkb2NMb2Fk
ZXItPmZyYW1lKCktPmxvYWRlcigpLT5hZGRMb3dCYW5kd2lkdGhEaXNwbGF5UmVxdWVzdChyZXNv
dXJjZSkpCisgICAgICAgIHJldHVybiAwOworI2VuZGlmCisKICAgICByZXR1cm4gcmVzb3VyY2U7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCShyZXZpc2lv
biAyMDY3NSkKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MCw2ICs5MCwxNCBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmNo
ZWNrTm90aWZ5KCkKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlciB3KG1fY2xpZW50cyk7
CiAgICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xpZW50ICpjID0gdy5uZXh0KCkpCiAgICAgICAg
IGMtPnNldENTU1N0eWxlU2hlZXQobV9yZXNwb25zZS51cmwoKS51cmwoKSwgbV9kZWNvZGVyLT5l
bmNvZGluZygpLm5hbWUoKSwgbV9zaGVldCk7CisjaWYgVVNFKExPV19CQU5EV0lEVEhfRElTUExB
WSkgICAgICAgIAorICAgIC8vIGlmIGNoZWNrTm90aWZ5KCkgaXMgY2FsbGVkIGZyb20gZXJyb3Io
KSwgY2xpZW50J3Mgc2V0Q1NTU3R5bGVTaGVldCguLi4pCisgICAgLy8gY2FuJ3QgZmluZCAidGhp
cyIgZnJvbSB1cmwsIHNvIHRoZXkgY2FuJ3QgZG8gY2xlYW4gdXAgaWYgbmVlZGVkLgorICAgIC8v
IGNhbGwgbm90aWZ5RmluaXNoZWQoKSB0byBtYWtlIHN1cmUgdGhleSBoYXZlIGEgY2hhbmNlLgor
ICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyIG4obV9jbGllbnRzKTsKKyAgICB3aGlsZSAo
Q2FjaGVkUmVzb3VyY2VDbGllbnQqIHMgPSBuLm5leHQoKSkKKyAgICAgICAgcy0+bm90aWZ5Rmlu
aXNoZWQodGhpcyk7CisjZW5kaWYgICAgICAgIAogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hl
ZXQ6OmVycm9yKCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5oCShyZXZpc2lvbiAyMDY3NSkKKysrIFdlYkNv
cmUvbG9hZGVyL0RvY0xvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4NiwxMCBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdm9pZCBzZXRBbGxvd1N0YWxlUmVzb3VyY2VzKGJvb2wgYWxsb3dT
dGFsZVJlc291cmNlcykgeyBtX2FsbG93U3RhbGVSZXNvdXJjZXMgPSBhbGxvd1N0YWxlUmVzb3Vy
Y2VzOyB9CiAKKyNpZiBVU0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKQorICAgIHZvaWQgcmVwbGFj
ZURvY3VtZW50KERvY3VtZW50KiBkb2MpIHsgbV9kb2MgPSBkb2M7IH0KKyNlbmRpZgorCiBwcml2
YXRlOgogICAgIENhY2hlZFJlc291cmNlKiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6
OlR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcqIGNoYXJzZXQgPSAwLCBib29s
IHNraXBDYW5Mb2FkQ2hlY2sgPSBmYWxzZSk7CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDIwNjc1KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MSw2ICs5MSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIEV2ZW50TmFtZXM7CiAKKyNpZiBV
U0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKQorY29uc3QgdW5zaWduZWQgaW50IGNNYXhQZW5kZXJp
bmdTb3VyY2VMZW5ndGhJbkxvd0JhbmR3aWR0aERpc3BsYXkgPSAxMjggKiAxMDI0OworI2VuZGlm
CisKIHN0cnVjdCBGb3JtU3VibWlzc2lvbiB7CiAgICAgY29uc3QgY2hhciogYWN0aW9uOwogICAg
IFN0cmluZyBVUkw7CkBAIC0yMjYsNiArMjMwLDExIEBAIEZyYW1lTG9hZGVyOjpGcmFtZUxvYWRl
cihGcmFtZSogZnJhbWUsIEYKICAgICAsIG1fY2hlY2tDb21wbGV0ZWRUaW1lcih0aGlzLCAmRnJh
bWVMb2FkZXI6OmNoZWNrQ29tcGxldGVkVGltZXJGaXJlZCkKICAgICAsIG1fb3BlbmVyKDApCiAg
ICAgLCBtX29wZW5lZEJ5SmF2YVNjcmlwdChmYWxzZSkKKyNpZiBVU0UoTE9XX0JBTkRXSURUSF9E
SVNQTEFZKQorICAgICwgbV91c2VMb3dCYW5kd2lkdGhEaXNwbGF5KHRydWUpCisgICAgLCBtX2Zp
bmlzaGVkUGFyc2luZ0R1cmluZ0xvd0JhbmR3aWR0aERpc3BsYXkoZmFsc2UpCisgICAgLCBtX25l
ZWRUb1N3aXRjaE91dExvd0JhbmR3aWR0aERpc3BsYXkoZmFsc2UpCisjZW5kaWYgCiB7CiB9CiAK
QEAgLTM1Nyw2ICszNjYsMTQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3Qg
UmVzbwogCiBib29sIEZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUoSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNT
dHJpbmcmIGZyYW1lTmFtZSkKIHsKKyNpZiBVU0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKQorICAg
IC8vIGRvbid0IGNyZWF0ZSBzdWItZnJhbWUgZHVyaW5nIGxvdyBiYW5kd2lkdGggZGlzcGxheQor
ICAgIGlmIChmcmFtZSgpLT5kb2N1bWVudCgpLT5pbkxvd0JhbmR3aWR0aERpc3BsYXkoKSkgewor
ICAgICAgICBtX25lZWRUb1N3aXRjaE91dExvd0JhbmR3aWR0aERpc3BsYXkgPSB0cnVlOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlmCisKICAgICAvLyBTdXBwb3J0IGZvciA8
ZnJhbWUgc3JjPSJqYXZhc2NyaXB0OnN0cmluZyI+CiAgICAgS1VSTCBzY3JpcHRVUkw7CiAgICAg
S1VSTCB1cmw7CkBAIC01NTMsNiArNTcwLDE1IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BMb2Fk
aW5nKGJvb2wgc2VuZFUKICAgICAgICAgY2hpbGQtPmxvYWRlcigpLT5zdG9wTG9hZGluZyhzZW5k
VW5sb2FkKTsKIAogICAgIGNhbmNlbFJlZGlyZWN0aW9uKCk7CisKKyNpZiBVU0UoTE9XX0JBTkRX
SURUSF9ESVNQTEFZKQorICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpICYmIG1fZnJhbWUtPmRv
Y3VtZW50KCktPmluTG93QmFuZHdpZHRoRGlzcGxheSgpKSB7CisgICAgICAgIC8vIGxvYWRpbmcg
aXMgZm9yY2VkIHRvIHN0b3AsIHNldCBtX25lZWRUb1N3aXRjaE91dExvd0JhbmR3aWR0aERpc3Bs
YXkgdG8gZmFsc2UKKyAgICAgICAgLy8gdG8gb25seSByZXNldCBzdGF0ZSB3aXRob3V0IHJlYWxs
eSBzd2l0Y2hpbmcKKyAgICAgICAgbV9uZWVkVG9Td2l0Y2hPdXRMb3dCYW5kd2lkdGhEaXNwbGF5
ID0gZmFsc2U7CisgICAgICAgIHN3aXRjaE91dExvd0JhbmR3aWR0aERpc3BsYXlJZlJlYWR5KCk7
CisgICAgfQorI2VuZGlmICAKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6c3RvcCgpCkBAIC04NDAs
NiArODY2LDE4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybCkKIAog
ICAgIGlmIChtX2ZyYW1lLT52aWV3KCkpCiAgICAgICAgIG1fZnJhbWUtPnZpZXcoKS0+cmVzaXpl
Q29udGVudHMoMCwgMCk7CisKKyNpZiBVU0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKQorICAgIC8v
IGxvdyBiYW5kd2lkdGggZGlzcGxheSBpcyB1c2VkIHRvIGdpdmUgYW4gaW5zdGFudCB2aXN1YWwg
ZmVlZGJhY2suCisgICAgLy8gd2UgY3VycmVudGx5IG9ubHkgZW5hYmxlIGl0IGZvciBIVE1MIGRv
Y3VtZW50IG9uIGEgdG9wIGZyYW1lLgorICAgIGlmIChkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQo
KSAmJgorICAgICAgICAhbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSAmJiBtX3VzZUxvd0JhbmR3
aWR0aERpc3BsYXkpIHsKKyAgICAgICAgbV9wZW5kaW5nU291cmNlSW5Mb3dCYW5kd2lkdGhEaXNw
bGF5ID0gU3RyaW5nKCk7CisgICAgICAgIG1fZmluaXNoZWRQYXJzaW5nRHVyaW5nTG93QmFuZHdp
ZHRoRGlzcGxheSA9IGZhbHNlOworICAgICAgICBtX25lZWRUb1N3aXRjaE91dExvd0JhbmR3aWR0
aERpc3BsYXkgPSBmYWxzZTsKKyAgICAgICAgZG9jdW1lbnQtPnNldExvd0JhbmR3aWR0aERpc3Bs
YXkodHJ1ZSk7CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OndyaXRlKGNv
bnN0IGNoYXIqIHN0ciwgaW50IGxlbiwgYm9vbCBmbHVzaCkKQEAgLTg3MSw2ICs5MDksMTMgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6d3JpdGUoY29uc3QgY2hhciogc3RyLAogICAgIGlmIChkZWNvZGVk
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgVVNFKExPV19CQU5EV0lEVEhfRElT
UExBWSkKKyAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5Mb3dCYW5kd2lkdGhEaXNwbGF5
KCkpCisgICAgICAgIG1fcGVuZGluZ1NvdXJjZUluTG93QmFuZHdpZHRoRGlzcGxheS5hcHBlbmQo
ZGVjb2RlZCk7CisgICAgZWxzZSAvLyByZXNldCBwb2xpY3kgd2hpY2ggaXMgY2hhbmdlZCBpbiBz
d2l0Y2hPdXRMb3dCYW5kd2lkdGhEaXNwbGF5SWZSZWFkeSgpCisgICAgICAgIG1fZnJhbWUtPmRv
Y3VtZW50KCktPmRvY0xvYWRlcigpLT5zZXRDYWNoZVBvbGljeShtX2NhY2hlUG9saWN5KTsgICAg
CisjZW5kaWYKKwogICAgIGlmICghbV9yZWNlaXZlZERhdGEpIHsKICAgICAgICAgbV9yZWNlaXZl
ZERhdGEgPSB0cnVlOwogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kZXRlcm1pbmVQYXJz
ZU1vZGUoZGVjb2RlZCk7CkBAIC05MTksNiArOTY0LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmVu
ZElmTm90TG9hZGluZygpCiAgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkpIHsKICAgICAgICAg
d3JpdGUoMCwgMCwgdHJ1ZSk7CiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmZpbmlzaFBh
cnNpbmcoKTsKKyNpZiBVU0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKQorICAgICAgICBpZiAobV9m
cmFtZS0+ZG9jdW1lbnQoKS0+aW5Mb3dCYW5kd2lkdGhEaXNwbGF5KCkpIHsKKyAgICAgICAgICAg
IG1fZmluaXNoZWRQYXJzaW5nRHVyaW5nTG93QmFuZHdpZHRoRGlzcGxheSA9IHRydWU7CisgICAg
ICAgICAgICBzd2l0Y2hPdXRMb3dCYW5kd2lkdGhEaXNwbGF5SWZSZWFkeSgpOworICAgICAgICB9
CisjZW5kaWYgICAgICAgICAgICAKICAgICB9IGVsc2UKICAgICAgICAgLy8gV2ViS2l0IHBhcnRp
YWxseSB1c2VzIFdlYkNvcmUgd2hlbiBsb2FkaW5nIG5vbi1IVE1MIGRvY3MuICBJbiB0aGVzZSBj
YXNlcyBkb2M9PW5pbCwgYnV0CiAgICAgICAgIC8vIFdlYkNvcmUgaXMgZW5vdWdoIGludm9sdmVk
IHRoYXQgd2UgbmVlZCB0byBjaGVja0NvbXBsZXRlZCgpIGluIG9yZGVyIGZvciBtX2JDb21wbGV0
ZSB0bwpAQCAtMTA4Miw2ICsxMTMzLDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrQ29tcGxl
dGVkKCkKICAgICAgICAgaWYgKGNhY2hlKCktPmxvYWRlcigpLT5udW1SZXF1ZXN0cyhtX2ZyYW1l
LT5kb2N1bWVudCgpLT5kb2NMb2FkZXIoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAKKyNpZiBV
U0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKQorICAgIC8vIGFzIHN3aXRjaCB3aWxsIGJlIGNhbGxl
ZCwgZG9uJ3QgY29tcGxldGUgeWV0CisgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkgJiYgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+aW5Mb3dCYW5kd2lkdGhEaXNwbGF5KCkgJiYgbV9uZWVkVG9Td2l0
Y2hPdXRMb3dCYW5kd2lkdGhEaXNwbGF5KQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAg
IC8vIE9LLCBjb21wbGV0ZWQuCiAgICAgbV9pc0NvbXBsZXRlID0gdHJ1ZTsKIApAQCAtMTM0Nyw2
ICsxNDA0LDE0IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnJlcXVlc3RPYmplY3QoUmVuZGVyUGEKICAg
ICBpZiAodXJsLmlzRW1wdHkoKSAmJiBtaW1lVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCisjaWYgVVNFKExPV19CQU5EV0lEVEhfRElTUExBWSkKKyAgICAvLyBkb24ndCBj
YXJlIG9iamVjdCBkdXJpbmcgbG93IGJhbmR3aWR0aCBkaXNwbGF5CisgICAgaWYgKGZyYW1lKCkt
PmRvY3VtZW50KCktPmluTG93QmFuZHdpZHRoRGlzcGxheSgpKSB7CisgICAgICAgIG1fbmVlZFRv
U3dpdGNoT3V0TG93QmFuZHdpZHRoRGlzcGxheSA9IHRydWU7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisjZW5kaWYKKwogICAgIEtVUkwgY29tcGxldGVkVVJMOwogICAgIGlmICghdXJs
LmlzRW1wdHkoKSkKICAgICAgICAgY29tcGxldGVkVVJMID0gY29tcGxldGVVUkwodXJsKTsKQEAg
LTQzMzgsNCArNDQwMywxMjggQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc0xv
Y2FsKAogICAgIHJldHVybiBsb2NhbFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCisj
aWYgVVNFKExPV19CQU5EV0lEVEhfRElTUExBWSkKK2Jvb2wgRnJhbWVMb2FkZXI6OmFkZExvd0Jh
bmR3aWR0aERpc3BsYXlSZXF1ZXN0KENhY2hlZFJlc291cmNlKiBjYWNoZSkKK3sKKyAgICBpZiAo
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5Mb3dCYW5kd2lkdGhEaXNwbGF5KCkgPT0gZmFsc2UpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgLy8gaWYgY2FjaGUgaXMgbG9hZGVk
LCBkb24ndCBhZGQgdG8gdGhlIGxpc3QsIHdoZXJlIG5vdGlmeUZpbmlzaGVkKCkgaXMgZXhwZWN0
ZWQuIAorICAgIGlmIChjYWNoZS0+aXNMb2FkZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgIAorICAgIHN3aXRjaChjYWNoZS0+dHlwZSgpKSB7CisgICAgICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6CisgICAgICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OlNjcmlwdDoKKyAgICAgICAgICAgIG1fbmVlZFRvU3dpdGNoT3V0TG93QmFuZHdpZHRo
RGlzcGxheSA9IHRydWU7CisgICAgICAgICAgICBtX2V4dGVybmFsUmVxdWVzdHNJbkxvd0JhbmR3
aWR0aERpc3BsYXkuYWRkKGNhY2hlKTsKKyAgICAgICAgICAgIGNhY2hlLT5yZWYodGhpcyk7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1h
Z2VSZXNvdXJjZToKKyNpZiBFTkFCTEUoWFNMVCkKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6WFNMU3R5bGVTaGVldDoKKyNlbmRpZgorI2lmIEVOQUJMRShYQkwpCisgICAgICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlhCTFN0eWxlU2hlZXQ6CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgRnJhbWVMb2FkZXI6OnJlbW92ZUFsbExvd2JhbmR3aWR0aERpc3BsYXlSZXF1ZXN0cygp
Cit7CisgICAgSGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+OjppdGVyYXRvciBlbmQgPSBtX2V4dGVy
bmFsUmVxdWVzdHNJbkxvd0JhbmR3aWR0aERpc3BsYXkuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0
PENhY2hlZFJlc291cmNlKj46Oml0ZXJhdG9yIGl0ID0gbV9leHRlcm5hbFJlcXVlc3RzSW5Mb3dC
YW5kd2lkdGhEaXNwbGF5LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCkt
PmRlcmVmKHRoaXMpOworICAgIG1fZXh0ZXJuYWxSZXF1ZXN0c0luTG93QmFuZHdpZHRoRGlzcGxh
eS5jbGVhcigpOworfQorICAgIAordm9pZCBGcmFtZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqIHNjcmlwdCkKK3sKKyAgICBIYXNoU2V0PENhY2hlZFJlc291cmNlKj46Oml0
ZXJhdG9yIGl0ID0gbV9leHRlcm5hbFJlcXVlc3RzSW5Mb3dCYW5kd2lkdGhEaXNwbGF5LmZpbmQo
c2NyaXB0KTsKKyAgICBpZiAoaXQgIT0gbV9leHRlcm5hbFJlcXVlc3RzSW5Mb3dCYW5kd2lkdGhE
aXNwbGF5LmVuZCgpKSB7CisgICAgICAgICgqaXQpLT5kZXJlZih0aGlzKTsKKyAgICAgICAgbV9l
eHRlcm5hbFJlcXVlc3RzSW5Mb3dCYW5kd2lkdGhEaXNwbGF5LnJlbW92ZShpdCk7CisgICAgICAg
IHN3aXRjaE91dExvd0JhbmR3aWR0aERpc3BsYXlJZlJlYWR5KCk7ICAgICAgICAKKyAgICB9Cit9
CisKK3ZvaWQgRnJhbWVMb2FkZXI6OnN3aXRjaE91dExvd0JhbmR3aWR0aERpc3BsYXlJZlJlYWR5
KCkKK3sKKyAgICBSZWZQdHI8RG9jdW1lbnQ+IG9sZERvYyA9IG1fZnJhbWUtPmRvY3VtZW50KCk7
CisgICAgaWYgKG9sZERvYy0+aW5Mb3dCYW5kd2lkdGhEaXNwbGF5KCkpIHsKKyAgICAgICAgaWYg
KCFtX25lZWRUb1N3aXRjaE91dExvd0JhbmR3aWR0aERpc3BsYXkpIHsKKyAgICAgICAgICAgIC8v
IG5vIG5lZWQgdG8gc3dpdGNoLCBqdXN0IHJlc2V0IHN0YXRlCisgICAgICAgICAgICBvbGREb2Mt
PnNldExvd0JhbmR3aWR0aERpc3BsYXkoZmFsc2UpOworICAgICAgICAgICAgcmVtb3ZlQWxsTG93
YmFuZHdpZHRoRGlzcGxheVJlcXVlc3RzKCk7ICAgICAgICAKKyAgICAgICAgICAgIG1fcGVuZGlu
Z1NvdXJjZUluTG93QmFuZHdpZHRoRGlzcGxheSA9IFN0cmluZygpOworICAgICAgICAgICAgbV9m
aW5pc2hlZFBhcnNpbmdEdXJpbmdMb3dCYW5kd2lkdGhEaXNwbGF5ID0gZmFsc2U7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSBpZiAobV9leHRlcm5hbFJlcXVlc3RzSW5Mb3dC
YW5kd2lkdGhEaXNwbGF5LmlzRW1wdHkoKSB8fCAKKyAgICAgICAgICAgIG1fcGVuZGluZ1NvdXJj
ZUluTG93QmFuZHdpZHRoRGlzcGxheS5sZW5ndGgoKSA+IGNNYXhQZW5kZXJpbmdTb3VyY2VMZW5n
dGhJbkxvd0JhbmR3aWR0aERpc3BsYXkpIHsKKyAgICAgICAgICAgIC8vIGNsZWFyIHRoZSBmbGFn
IGZpcnN0CisgICAgICAgICAgICBvbGREb2MtPnNldExvd0JhbmR3aWR0aERpc3BsYXkoZmFsc2Up
OworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBzaW1pbGFyIGFzIGNsZWFyKCksIGNhbiBi
ZSByZS1mYWN0b3IgbGF0ZXIKKyAgICAgICAgICAgIG9sZERvYy0+Y2FuY2VsUGFyc2luZygpOwor
ICAgICAgICAgICAgb2xkRG9jLT5kZXRhY2goKTsKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lLT5z
Y3JpcHRQcm94eSgpKQorICAgICAgICAgICAgICAgIG1fZnJhbWUtPnNjcmlwdFByb3h5KCktPmNs
ZWFyKCk7CisgICAgICAgICAgICBpZiAobV9mcmFtZS0+dmlldygpKQorICAgICAgICAgICAgICAg
IG1fZnJhbWUtPnZpZXcoKS0+Y2xlYXIoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8g
c2ltaWxhciBhcyBiZWdpbigpLCBjYW4gYmUgcmUtZmFjdG9yIGxhdGVyCisgICAgICAgICAgICBS
ZWZQdHI8RG9jdW1lbnQ+IG5ld0RvYyA9IERPTUltcGxlbWVudGF0aW9uOjppbnN0YW5jZSgpLT4K
KyAgICAgICAgICAgICAgICBjcmVhdGVEb2N1bWVudChtX3Jlc3BvbnNlTUlNRVR5cGUsIG1fZnJh
bWUtPnZpZXcoKSwgbV9mcmFtZS0+aW5WaWV3U291cmNlTW9kZSgpKTsKKyAgICAgICAgICAgIG1f
ZnJhbWUtPmQtPm1fZG9jID0gbmV3RG9jOworICAgICAgICAgICAgaWYgKCFuZXdEb2MtPmF0dGFj
aGVkKCkpCisgICAgICAgICAgICAgICAgbmV3RG9jLT5hdHRhY2goKTsKKyAgICAgICAgICAgIG5l
d0RvYy0+c2V0VVJMKG1fVVJMLnVybCgpKTsKKyAgICAgICAgICAgIG5ld0RvYy0+c2V0QmFzZVVS
TChtX1VSTC51cmwoKSk7CisgICAgICAgICAgICBpZiAobV9kZWNvZGVyKQorICAgICAgICAgICAg
ICAgIG5ld0RvYy0+c2V0RGVjb2RlcihtX2RlY29kZXIuZ2V0KCkpOworICAgICAgICAgICAgcmVz
dG9yZURvY3VtZW50U3RhdGUoKTsKKyAgICAgICAgICAgIHBhcnRDbGVhcmVkSW5CZWdpbigpOyAg
ICAgICAgIAorICAgICAgICAgICAgbmV3RG9jLT5pbXBsaWNpdE9wZW4oKTsKKworICAgICAgICAg
ICAgLy8gc3dhcCBEb2NMb2FkZXIgb3duZXJzaGlwCisgICAgICAgICAgICBEb2NMb2FkZXIqIGRv
Y0xvYWRlciA9IG5ld0RvYy0+ZG9jTG9hZGVyKCk7CisgICAgICAgICAgICBuZXdEb2MtPnNldERv
Y0xvYWRlcihvbGREb2MtPmRvY0xvYWRlcigpKTsKKyAgICAgICAgICAgIG5ld0RvYy0+ZG9jTG9h
ZGVyKCktPnJlcGxhY2VEb2N1bWVudChuZXdEb2MuZ2V0KCkpOworICAgICAgICAgICAgZG9jTG9h
ZGVyLT5yZXBsYWNlRG9jdW1lbnQob2xkRG9jLmdldCgpKTsKKyAgICAgICAgICAgIG9sZERvYy0+
c2V0RG9jTG9hZGVyKGRvY0xvYWRlcik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIGRy
b3AgdGhlIG9sZCBkb2MgICAgICAgICAgICAKKyAgICAgICAgICAgIG9sZERvYyA9IDA7CisKKyAg
ICAgICAgICAgIC8vIHdyaXRlIGRlY29kZWQgZGF0YSB0byB0aGUgbmV3IGRvYywgc2ltaWxhciBh
cyB3cml0ZSgpLCAKKyAgICAgICAgICAgIGlmIChtX3BlbmRpbmdTb3VyY2VJbkxvd0JhbmR3aWR0
aERpc3BsYXkubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBzZXQgY2FjaGVQb2xpY3kg
dG8gQ2FjaGUgdG8gdXNlIHRoZSBsb2FkZWQgcmVzb3VyY2UKKyAgICAgICAgICAgICAgICBuZXdE
b2MtPmRvY0xvYWRlcigpLT5zZXRDYWNoZVBvbGljeShDYWNoZVBvbGljeUNhY2hlKTsKKyAgICAg
ICAgICAgICAgICBuZXdEb2MtPmRldGVybWluZVBhcnNlTW9kZShtX3BlbmRpbmdTb3VyY2VJbkxv
d0JhbmR3aWR0aERpc3BsYXkpOworICAgICAgICAgICAgICAgIGlmIChtX2RlY29kZXItPmVuY29k
aW5nKCkudXNlc1Zpc3VhbE9yZGVyaW5nKCkpCisgICAgICAgICAgICAgICAgICAgIG5ld0RvYy0+
c2V0VmlzdWFsbHlPcmRlcmVkKCk7ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBuZXdEb2MtPnJlY2FsY1N0eWxlKE5vZGU6OkZvcmNlKTsgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgbmV3RG9jLT50b2tlbml6ZXIoKS0+d3JpdGUobV9wZW5kaW5nU291cmNlSW5M
b3dCYW5kd2lkdGhEaXNwbGF5LCB0cnVlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IGlmIChtX2ZpbmlzaGVkUGFyc2luZ0R1cmluZ0xvd0JhbmR3aWR0aERpc3BsYXkpCisgICAgICAg
ICAgICAgICAgICAgIG5ld0RvYy0+ZmluaXNoUGFyc2luZygpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyB1cGRhdGUgcmVuZGVyaW5nCisgICAgICAgICAgICBuZXdEb2MtPnVwZGF0
ZVJlbmRlcmluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBy
ZXNldCBzdGF0ZXMKKyAgICAgICAgICAgIHJlbW92ZUFsbExvd2JhbmR3aWR0aERpc3BsYXlSZXF1
ZXN0cygpOyAgICAgICAgCisgICAgICAgICAgICBtX3BlbmRpbmdTb3VyY2VJbkxvd0JhbmR3aWR0
aERpc3BsYXkgPSBTdHJpbmcoKTsKKyAgICAgICAgICAgIG1fZmluaXNoZWRQYXJzaW5nRHVyaW5n
TG93QmFuZHdpZHRoRGlzcGxheSA9IGZhbHNlOworICAgICAgICAgICAgbV9uZWVkVG9Td2l0Y2hP
dXRMb3dCYW5kd2lkdGhEaXNwbGF5ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cit9CisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZp
c2lvbiAyMDY3NSkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDYgKzQzLDkgQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2lmIFVTRShMT1df
QkFORFdJRFRIX0RJU1BMQVkpCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNl
bmRpZgogCiBuYW1lc3BhY2UgS0pTIHsKICAgICBjbGFzcyBKU1ZhbHVlOwpAQCAtMTE5LDExICsx
MjIsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkKiBtX2FyZ3VtZW50Owog
ICAgIH07CiAKKyNpZiBVU0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKQorICAgIGNsYXNzIEZyYW1l
TG9hZGVyIDogTm9uY29weWFibGUsIHByaXZhdGUgQ2FjaGVkUmVzb3VyY2VDbGllbnQgeworI2Vs
c2UKICAgICBjbGFzcyBGcmFtZUxvYWRlciA6IE5vbmNvcHlhYmxlIHsKKyNlbmRpZgogICAgIHB1
YmxpYzoKICAgICAgICAgRnJhbWVMb2FkZXIoRnJhbWUqLCBGcmFtZUxvYWRlckNsaWVudCopOwor
I2lmIFVTRShMT1dfQkFORFdJRFRIX0RJU1BMQVkpCisgICAgICAgIHZpcnR1YWwgfkZyYW1lTG9h
ZGVyKCk7CisjZWxzZQogICAgICAgICB+RnJhbWVMb2FkZXIoKTsKLQorI2VuZGlmCiAgICAgICAg
IEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KIAogICAgICAgICAvLyBG
SVhNRTogVGhpcyBpcyBub3QgY29vbCwgcGVvcGxlLgpAQCAtNDE0LDYgKzQyNCwxNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHNldFJlc3RyaWN0QWNjZXNzVG9M
b2NhbChib29sKTsKICAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRVUkxBc0xvY2FsKGNv
bnN0IFN0cmluZyYgdXJsKTsKIAorI2lmIFVTRShMT1dfQkFORFdJRFRIX0RJU1BMQVkpICAgIAor
ICAgICAgICBib29sIGFkZExvd0JhbmR3aWR0aERpc3BsYXlSZXF1ZXN0KENhY2hlZFJlc291cmNl
Kik7CisgICAgICAgIHZvaWQgbmVlZFRvU3dpdGNoT3V0TG93QmFuZHdpZHRoRGlzcGxheSgpIHsg
bV9uZWVkVG9Td2l0Y2hPdXRMb3dCYW5kd2lkdGhEaXNwbGF5ID0gdHJ1ZTsgfQorICAgICAgICAv
LyBjbGllbnQgY2FuIGNvbnRyb2wgd2hldGhlciB0byB1c2UgbG93IGJhbmR3aWR0aCBkaXNwbGF5
IG9uIGEgcGVyIGZyYW1lIGJhc2UuCisgICAgICAgIC8vIHdoaWxlIHRoaXMgc2hvdWxkIG9ubHkg
YmUgdXNlZCBmb3IgdGhlIHRvcCBmcmFtZSwgbm90IHN1Yi1mcmFtZS4KKyAgICAgICAgdm9pZCBz
ZXRVc2VMb3dCYW5kd2lkdGhEaXNwbGF5KGJvb2wgbG93QmFuZHdpZHRoKSB7IG1fdXNlTG93QmFu
ZHdpZHRoRGlzcGxheSA9IGxvd0JhbmR3aWR0aDsgfQorICAgICAgICBib29sIHVzZUxvd0JhbmR3
aWR0aERpc3BsYXkoKSB7IHJldHVybiBtX3VzZUxvd0JhbmR3aWR0aERpc3BsYXk7IH0KKyNlbmRp
ZgogICAgIHByaXZhdGU6ICAgICAgICAKICAgICAgICAgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4g
Y3JlYXRlSGlzdG9yeUl0ZW0oYm9vbCB1c2VPcmlnaW5hbCk7CiAgICAgICAgIFBhc3NSZWZQdHI8
SGlzdG9yeUl0ZW0+IGNyZWF0ZUhpc3RvcnlJdGVtVHJlZShGcmFtZSogdGFyZ2V0RnJhbWUsIGJv
b2wgY2xpcEF0VGFyZ2V0KTsKQEAgLTUyNSw2ICs1NDMsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIHZvaWQgc3RhcnRJY29uTG9hZGVyKCk7CiAKKyNpZiBVU0UoTE9XX0JBTkRX
SURUSF9ESVNQTEFZKQorICAgICAgICAvLyBpbXBsZW1lbnRhdGlvbiBmb3IgQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgcmVtb3ZlQWxsTG93YmFuZHdp
ZHRoRGlzcGxheVJlcXVlc3RzKCk7ICAgIAorICAgICAgICB2b2lkIHN3aXRjaE91dExvd0JhbmR3
aWR0aERpc3BsYXlJZlJlYWR5KCk7ICAgICAgICAKKyNlbmRpZgorCiAgICAgICAgIEZyYW1lKiBt
X2ZyYW1lOwogICAgICAgICBGcmFtZUxvYWRlckNsaWVudCogbV9jbGllbnQ7CiAKQEAgLTU5OSw2
ICs2MjUsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8SGlzdG9yeUl0
ZW0+IG1fcHJldmlvdXNIaXN0b3J5SXRlbTsKICAgICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBt
X3Byb3Zpc2lvbmFsSGlzdG9yeUl0ZW07CiAKKyNpZiBVU0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZ
KQorICAgICAgICAvLyB3aGV0aGVyIHRvIHVzZSBsb3cgYmFuZHdpZHRoIGRpc2xheSwgc2V0IGJ5
IGNsaWVudAorICAgICAgICBib29sIG1fdXNlTG93QmFuZHdpZHRoRGlzcGxheTsKKyAgICAgICAg
Ly8gd2hldGhlciB0byBjYWxsIGZpbmlzaFBhcnNpbmcoKSBpbiBzd2l0Y2hPdXRMb3dCYW5kd2lk
dGhEaXNwbGF5SWZSZWFkeSgpIAorICAgICAgICBib29sIG1fZmluaXNoZWRQYXJzaW5nRHVyaW5n
TG93QmFuZHdpZHRoRGlzcGxheTsKKyAgICAgICAgLy8gd2hldGhlciB0byBjYWxsIHN3aXRjaE91
dExvd0JhbmR3aWR0aERpc3BsYXlJZlJlYWR5OworICAgICAgICAvLyB0cnVlIGlmIHRoZXJlIGlz
IGV4dGVybmFsIGNzcywgamF2YXNjcmlwdCwgb3Igc3ViZnJhbWUvcGx1Z2luCisgICAgICAgIGJv
b2wgbV9uZWVkVG9Td2l0Y2hPdXRMb3dCYW5kd2lkdGhEaXNwbGF5OworICAgICAgICAKKyAgICAg
ICAgU3RyaW5nIG1fcGVuZGluZ1NvdXJjZUluTG93QmFuZHdpZHRoRGlzcGxheTsgICAgICAgIAor
ICAgICAgICBIYXNoU2V0PENhY2hlZFJlc291cmNlKj4gbV9leHRlcm5hbFJlcXVlc3RzSW5Mb3dC
YW5kd2lkdGhEaXNwbGF5OworI2VuZGlmICAgCiAgICAgfTsKIAogfQo=
</data>
<flag name="review"
          id="5605"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>