<?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>48483</bug_id>
          
          <creation_ts>2010-10-27 16:39:09 -0700</creation_ts>
          <short_desc>Get rid of ResourceRequestBase::m_targetType</short_desc>
          <delta_ts>2011-09-14 09:14:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>48476</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to>jochen</assigned_to>
          <cc>abarth</cc>
    
    <cc>fishd</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>joenotcharles</cc>
    
    <cc>joepeck</cc>
    
    <cc>michaeln</cc>
    
    <cc>mjs</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>300697</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-27 16:39:09 -0700</bug_when>
    <thetext>Keeping the knowledge of Web platform concepts (main frame? subframe?) in ResourceRequest is a layering violation. The only valid use for target type that I know is centralized request prioritization on platforms that have a separate process for network loading.

I thought that the initial step could be to move it behind #if PLATFORM(CHROMIUM). But Joe explained that Blackberry is also using a separate process.

My biggest concern is with attempts to use ResourceRequest::m_targetType for anything but passing priority to network loading back-end (as we&apos;ve seen in bug 27165). Keeping it as a cross-platform data member will undoubtedly keep causing confusion.

I can think of two things to do to improve the situation.

1. Make the priority values passed to loader process Web-agnostic to address layering violations. Arguments can be made either way, but to me, it seems more of a WebCore job to set relative priorities for various request types. Otherwise, we&apos;d need to update loaders (separate projects living in different repositories) simultaneously once a new target type appears in the Web platform.

2. Pass the priority outside of ResourceRequest (as a separate argument). Or alternatively, just make sure to reset it in Mac WebKit code after re-creating ResourceRequest from NSResourceRequest - it&apos;s not like a delegate call will change top frame resource into a subframe resource!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300707</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-27 16:55:16 -0700</bug_when>
    <thetext>This is related to the larger question of how to interface with network stacks that provide more functionality than CFNetwork.

We can look at what all Chrome uses this bit of data for.  I suspect it uses it in deciding whether something should be treated as a download.

Also, the number of processses isn&apos;t really relevant here.  With respect to prioritization, the issue arises because some network transports (e.g., SPDY) have different prioritization tradeoffs.  WebCore can&apos;t do the optimal prioritization because it doesn&apos;t know what transport is being used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300720</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-27 17:14:10 -0700</bug_when>
    <thetext>I&apos;ve been previously told that WebCore can&apos;t do the optimal prioritization because it doesn&apos;t know what other WebCores are doing at the moment.

I&apos;m not convinced that WebCore can realistically be network back-end agnostic. Surely Web Inspector needs to know if it&apos;s SPDY or HTTP. In addition, this prioritization logic should ideally be shared between WebKit ports, so that any port that had a SPDY capable back-end could use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300762</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-27 18:10:31 -0700</bug_when>
    <thetext>&gt; I&apos;ve been previously told that WebCore can&apos;t do the optimal prioritization because it doesn&apos;t know what other WebCores are doing at the moment.

That&apos;s also true.

&gt; I&apos;m not convinced that WebCore can realistically be network back-end agnostic. Surely Web Inspector needs to know if it&apos;s SPDY or HTTP.

Why does the web inspector need to know that?  Does the web inspector need to know whether we&apos;re using Ethernet or CDMA?

&gt; In addition, this prioritization logic should ideally be shared between WebKit ports, so that any port that had a SPDY capable back-end could use it.

I&apos;m not quite sure I follow.  Prioritization is part of the SPDY protocol.  Another implementation of SPDY would need to handle that as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300770</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-27 18:28:19 -0700</bug_when>
    <thetext>&gt; Why does the web inspector need to know that? 

The Web Inspector displays HTTP request and response headers for resources. Being a binary protocol, SPDY doesn&apos;t have these, right?

Web developers will want to know what protocol was used and how, so synthesizing fake HTTP request and response would be against the purpose of Web Inspector.

&gt; Prioritization is part of the SPDY protocol.

Are you saying that SPDY prioritization is specified in terms of top frames, subframes, scripts and such? The Web part of prioritization that deals with those should obviously (to me) be handled by WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300783</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-27 18:37:46 -0700</bug_when>
    <thetext>The reason why developers want to see details of HTTP and other protocols is of course that they usually have some control over what servers send, and they always have control over their own XMLHttpRequests. This is different from Ethernet or CDMA details in common case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300812</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-27 19:20:56 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Why does the web inspector need to know that? 
&gt; 
&gt; The Web Inspector displays HTTP request and response headers for resources. Being a binary protocol, SPDY doesn&apos;t have these, right?

SPDY is a layer below HTTP that makes HTTP go faster by multiplexing multiple HTTP request/response pairs over a single socket.

&gt; Web developers will want to know what protocol was used and how, so synthesizing fake HTTP request and response would be against the purpose of Web Inspector.

There&apos;s nothing fake about the HTTP request / response pairs.

&gt; &gt; Prioritization is part of the SPDY protocol.
&gt; 
&gt; Are you saying that SPDY prioritization is specified in terms of top frames, subframes, scripts and such? The Web part of prioritization that deals with those should obviously (to me) be handled by WebCore.

I&apos;m saying that the mapping of those HTML concepts to priorities differs in different scenarios.  Certainly holding request in WebCore is counter-productive in cases were the networking library can make better prioritization decisions than WebCore.

In some sense, you can compute a more optimal prioritization of requests when you have as much information available as possible.  In some cases, some of that information is transport-specific and so only exists at the lower layers of the network stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300828</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-27 20:07:42 -0700</bug_when>
    <thetext>&gt; SPDY is a layer below HTTP

OK. Clearly, I&apos;ve been misunderstanding it.

&gt; I&apos;m saying that the mapping of those HTML concepts to priorities differs in different scenarios.  Certainly holding request in WebCore is counter-productive in cases were the networking library can make better prioritization decisions than WebCore.

I wasn&apos;t saying that we should be holding the request in WebCore for prioritization. But the networking back-end shouldn&apos;t speak in terms of frames and scripts, that&apos;s way too high level for it. It&apos;s WebCore that knows that stylesheets should be loaded ahead of images, it&apos;s WebCore that knows which page is frontmost, and so on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300832</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-27 20:11:49 -0700</bug_when>
    <thetext>Here&apos;s some more information about SPDY, if you&apos;re interested:

http://www.chromium.org/spdy/spdy-whitepaper

In particular, the diagram in the section titled &quot;SPDY design and features&quot; shows the layering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314574</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-29 12:52:34 -0800</bug_when>
    <thetext>Another developer got caught in the targetType trap in bug 49838.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315115</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-30 09:52:17 -0800</bug_when>
    <thetext>Originally, TargetType was added to chromium/ResourceRequest.h (not ResourceRequestBase.h) with the intention of it being Chromium specific.

Chromium uses TargetType information for several purposes:

1- To prioritize network requests.

2- To determine requests that could be subject to being treated as a download.

3- To implement an optional security filter, where by images loaded with a bad certificate are replaced with a placeholder image.  This feature is not enabled by default.

4- To identify prefetch requests, which are loaded with special policy.

5- To identify cases where an external protocol handler may be loaded via ShellExecute (i.e., only if the target type is a frame).

6- As part of identifying main frame requests that correspond to a cross-process tab navigation.

7- Probably for some other things that I didn&apos;t turn up with a quick grep.

As you can see TargetType is more than just a priority field.

I believe that fixing bug 49113 would make it so that we no longer need this field for PLATFORM(CHROMIUM).  The additional meta data required by Chromium could be captured by Chromium within the willSendRequest callback and it could tag that information on the ResourceRequest for its use.

While I agree the above does not address the &quot;laying violation&quot; concerns, it at least isolates the issue, which is an improvement.

A good first step may be to move TargetType back to chromium/ResourceRequest.h, and copy it to the Blackberry&apos;s version of ResourceRequest.h as well.  That will help avoid extra uses of this field from cropping up.

Maybe this is for a different discussion, but long-term, I believe we need a layer between ResourceLoader and ResourceHandle that abstracts the concept of &quot;network stack&quot;, providing the right layer for indirection.  This is the layer where appcache, blobs, and other concepts that CFNetwork doesn&apos;t understand would live.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318815</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-08 09:04:57 -0800</bug_when>
    <thetext>&gt; A good first step may be to move TargetType back to chromium/ResourceRequest.h, and copy
&gt; it to the Blackberry&apos;s version of ResourceRequest.h as well.  That will help avoid extra uses of
&gt; this field from cropping up.

Sounds good. Can someone from Chromium land do that? It would probably be less build breakage that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445437</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-08-02 12:40:12 -0700</bug_when>
    <thetext>One way to solve this problem is to add a parameter to FrameLoaderClient::willSendRequest that is like the current TargetType enumeration.  (Maybe it needs a better name.)

Chromium needs a way to know the intended purpose of a ResourceRequest that WebCore is making.  This is for all the reasons listed in comment #10.  It seems like passing that information up to the FrameLoaderClient is the correct way to address a use case like this.

Chromium can then store that information for later use.  This would allow us to remove ResourceRequest{Base}::TargetType completely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445440</commentid>
    <comment_count>13</comment_count>
    <who name="">jochen</who>
    <bug_when>2011-08-02 12:46:03 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; One way to solve this problem is to add a parameter to FrameLoaderClient::willSendRequest that is like the current TargetType enumeration.  (Maybe it needs a better name.)
&gt; 
&gt; Chromium needs a way to know the intended purpose of a ResourceRequest that WebCore is making.  This is for all the reasons listed in comment #10.  It seems like passing that information up to the FrameLoaderClient is the correct way to address a use case like this.
&gt; 
&gt; Chromium can then store that information for later use.  This would allow us to remove ResourceRequest{Base}::TargetType completely.

How would you get that information from the point of where the ResourceRequest is created to FrameLoaderClient::willSendRequest. Add it to the options used to create the loader?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445468</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-08-02 13:05:15 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; How would you get that information from the point of where the ResourceRequest is created to FrameLoaderClient::willSendRequest. Add it to the options used to create the loader?

I&apos;m not sure.  Maybe we would need to create a wrapper for ResourceRequest that WebCore can use whenever it constructs a ResourceRequest.  That would probably be the most robust way to plumb this (as opposed to adding another parameter to a zillion functions).

We have FrameLoadRequest, which I&apos;m sure everyone hates, and my proposal would be to add another thing like that, but what else can you do?  If ResourceRequest is supposed to be low-level, then WebCore needs some higher-level wrapper to construct whenever it wants to make a ResourceRequest.  Maybe call it LoadRequest to be ultra-confusing but at least somewhat related to FrameLoadRequest?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445493</commentid>
    <comment_count>15</comment_count>
    <who name="">jochen</who>
    <bug_when>2011-08-02 13:37:37 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; How would you get that information from the point of where the ResourceRequest is created to FrameLoaderClient::willSendRequest. Add it to the options used to create the loader?
&gt; 
&gt; I&apos;m not sure.  Maybe we would need to create a wrapper for ResourceRequest that WebCore can use whenever it constructs a ResourceRequest.  That would probably be the most robust way to plumb this (as opposed to adding another parameter to a zillion functions).
&gt; 
&gt; We have FrameLoadRequest, which I&apos;m sure everyone hates, and my proposal would be to add another thing like that, but what else can you do?  If ResourceRequest is supposed to be low-level, then WebCore needs some higher-level wrapper to construct whenever it wants to make a ResourceRequest.  Maybe call it LoadRequest to be ultra-confusing but at least somewhat related to FrameLoadRequest?

ok, I&apos;ll try to come up with something along these lines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445500</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-02 13:49:56 -0700</bug_when>
    <thetext>I think that what Darin suggested in comment 10 is still a practical way forward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445510</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-08-02 14:05:02 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; I think that what Darin suggested in comment 10 is still a practical way forward.

Really?  We need to add a call from XMLHttpRequest.cpp to set the new target type for XHR.  If we don&apos;t have the enumeration on ResourceRequestBase, then it means that XMLHttpRequest.cpp will need to grow a #if PLATFORM(CHROMIUM) around the code that sets the XHR target type.

Is that OK by you while we sort out this refactoring?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445582</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-02 15:59:38 -0700</bug_when>
    <thetext>That sounds fine to me. My immediate concern and the reason for filing this bug is about cross platform code (like Web Inspector) becoming dependent on m_targetType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446500</commentid>
    <comment_count>19</comment_count>
      <attachid>102916</attachid>
    <who name="">jochen</who>
    <bug_when>2011-08-04 08:03:24 -0700</bug_when>
    <thetext>Created attachment 102916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446504</commentid>
    <comment_count>20</comment_count>
      <attachid>102917</attachid>
    <who name="">jochen</who>
    <bug_when>2011-08-04 08:15:29 -0700</bug_when>
    <thetext>Created attachment 102917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446506</commentid>
    <comment_count>21</comment_count>
    <who name="">jochen</who>
    <bug_when>2011-08-04 08:21:36 -0700</bug_when>
    <thetext>I introduced HAVE(RESOURCEREQUEST_TARGETTYPE) instead of using PLATFORM(chromium) so blackberry can easily adopt the change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446527</commentid>
    <comment_count>22</comment_count>
      <attachid>102917</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-04 08:56:59 -0700</bug_when>
    <thetext>Comment on attachment 102917
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=102917&amp;action=review

The essence of this patch seems fine to me. One nit that needs to be addressed: this is not a correct use of HAVE - it&apos;s supposed to tell you what an underlying platform has.

/* HAVE() - specific system features (headers, functions or similar) that are present or not */

I don&apos;t think that there is a macro in Platform.h that can be used for this difference. I&apos;d just use PLATFORM(CHROMIUM) and let platforms that don&apos;t contribute back to webkit.org deal with it. In a way, PLATFORM sends the correct message - even for Chromium, it&apos;s a layering violation that needs to be addressed some day.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

This line will prevent the patch from being landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446625</commentid>
    <comment_count>23</comment_count>
      <attachid>102947</attachid>
    <who name="">jochen</who>
    <bug_when>2011-08-04 10:59:35 -0700</bug_when>
    <thetext>Created attachment 102947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446628</commentid>
    <comment_count>24</comment_count>
    <who name="">jochen</who>
    <bug_when>2011-08-04 11:01:31 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 102917 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102917&amp;action=review
&gt; 
&gt; The essence of this patch seems fine to me. One nit that needs to be addressed: this is not a correct use of HAVE - it&apos;s supposed to tell you what an underlying platform has.
&gt; 
&gt; /* HAVE() - specific system features (headers, functions or similar) that are present or not */
&gt; 
&gt; I don&apos;t think that there is a macro in Platform.h that can be used for this difference. I&apos;d just use PLATFORM(CHROMIUM) and let platforms that don&apos;t contribute back to webkit.org deal with it. In a way, PLATFORM sends the correct message - even for Chromium, it&apos;s a layering violation that needs to be addressed some day.

OTOH it makes it harder for them to upstream their changes. Anyway, I hope we fix this layering violation rather sooner than later, so I&apos;m fine with PLATFORM(CHROMIUM)

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        No new tests. (OOPS!)
&gt; 
&gt; This line will prevent the patch from being landed.

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446675</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-04 12:15:52 -0700</bug_when>
    <thetext>Thanks jochen!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446680</commentid>
    <comment_count>26</comment_count>
      <attachid>102947</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-04 12:23:42 -0700</bug_when>
    <thetext>Comment on attachment 102947
Patch

Clearing flags on attachment: 102947

Committed r92399: &lt;http://trac.webkit.org/changeset/92399&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446681</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-04 12:23:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102916</attachid>
            <date>2011-08-04 08:03:24 -0700</date>
            <delta_ts>2011-08-04 08:15:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48483-20110804170321.patch</filename>
            <type>text/plain</type>
            <size>22190</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIzNjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MjdmYTFlMGRmYzZkNzQz
OGE3OGEwMzE3OTc4MzM4NmY4NjAwN2Q3Li42ZmM3NWJhYjE1NDZmMGFhNGMzNTRiYjIxMDljNGFm
ZmYzMTJkZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDgtMDQgIEpvY2hl
biBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgR2V0IHJpZCBvZiBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjptX3RhcmdldFR5cGUuIE1vdmUgaXQgdG8gY2hyb21pdW0ncyBS
ZXNvdXJjZVJlcXVlc3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODQ4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogbG9hZGVyL1BpbmdMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGluZ0xvYWRlcjo6bG9hZEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6OnNlbmRQaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBp
bmdMb2FkZXI6OnJlcG9ydENvbnRlbnRTZWN1cml0eVBvbGljeVZpb2xhdGlvbik6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmxvYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAo
d2ViS2l0V2ViU3JjU3RhcnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjph
ZG9wdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpjb3B5RGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXNvdXJjZVJlcXVlc3RCYXNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1Db3B5RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1BZG9wdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZVJlcXVlc3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6dGFyZ2V0VHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnNldFRhcmdldFR5cGUpOgorICAgICAgICAqIHdvcmtlcnMv
RGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OmNyZWF0ZSk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6Omlt
cG9ydFNjcmlwdHMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6V29ya2VyU2NyaXB0TG9hZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlUmVzb3VyY2VS
ZXF1ZXN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpzZXRUYXJnZXRUeXBlKToKKwogMjAxMS0wOC0wNCAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogUmVuYW1lIHNvdXJjZUlkIC0+IHNjcmlwdElkIGluIHRoZSBwcm90b2NvbCBhbmQgdGhlIHNv
dXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IGU1Y2RiMDEz
MTZjOGIzYThlMmE2NTI5ZWQwNWRhOTgzMWEyY2YyYjMuLjBlNTM3ODQ3ZTQxN2RjMTZjYzkyNTFl
NmYxNzkxMzFiY2I1NDRiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5n
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKQEAg
LTU1LDcgKzU1LDkgQEAgdm9pZCBQaW5nTG9hZGVyOjpsb2FkSW1hZ2UoRnJhbWUqIGZyYW1lLCBj
b25zdCBLVVJMJiB1cmwpCiAgICAgfQogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJs
KTsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICByZXF1ZXN0LnNldFRhcmdldFR5cGUoUmVz
b3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0ltYWdlKTsKKyNlbmRpZgogICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKCJDYWNoZS1Db250cm9sIiwgIm1heC1hZ2U9MCIpOwogICAgIGlmICghU2Vj
dXJpdHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcihyZXF1ZXN0LnVybCgpLCBmcmFtZS0+bG9h
ZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSkpCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVy
cmVyKGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKTsKQEAgLTcxLDcgKzczLDkg
QEAgdm9pZCBQaW5nTG9hZGVyOjpsb2FkSW1hZ2UoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1
cmwpCiB2b2lkIFBpbmdMb2FkZXI6OnNlbmRQaW5nKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYg
cGluZ1VSTCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25VUkwpCiB7CiAgICAgUmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QocGluZ1VSTCk7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgcmVxdWVz
dC5zZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZSk7Cisj
ZW5kaWYKICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIlBPU1QiKTsKICAgICByZXF1ZXN0LnNl
dEhUVFBDb250ZW50VHlwZSgidGV4dC9waW5nIik7CiAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShG
b3JtRGF0YTo6Y3JlYXRlKCJQSU5HIikpOwpAQCAtOTcsNyArMTAxLDkgQEAgdm9pZCBQaW5nTG9h
ZGVyOjpzZW5kUGluZyhGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHBpbmdVUkwsIGNvbnN0IEtV
UkwmIGRlc3RpbmEKIHZvaWQgUGluZ0xvYWRlcjo6cmVwb3J0Q29udGVudFNlY3VyaXR5UG9saWN5
VmlvbGF0aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcmVwb3J0VVJMLCBQYXNzUmVmUHRy
PEZvcm1EYXRhPiByZXBvcnQpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocmVwb3J0
VVJMKTsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICByZXF1ZXN0LnNldFRhcmdldFR5cGUo
UmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N1YnJlc291cmNlKTsKKyNlbmRpZgogICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOwogICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBl
KCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKICAgICByZXF1ZXN0LnNldEhU
VFBCb2R5KHJlcG9ydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCmluZGV4IDIzODc3MjgzYjIzZjc3NDE3OGY5OTBkZmQz
NDIyYTQxNjUxMDI1YTcuLjQyZDc3MDA0ZTA1YzkwNDkyNmE1NTM0ZWMxMzg3N2Q5MmRhMGFmMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwCkBAIC00NCw3ICs0NCw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKKyNpZiBQTEFURk9STShDSFJPTUlV
TSkKIHN0YXRpYyBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldFR5cGUgY2FjaGVkUmVzb3VyY2VUeXBl
VG9UYXJnZXRUeXBlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0
eXBlKSB7CkBAIC03MSw2ICs3Miw3IEBAIHN0YXRpYyBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldFR5
cGUgY2FjaGVkUmVzb3VyY2VUeXBlVG9UYXJnZXRUeXBlKENhY2hlZFJlc291cmNlCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNT
dWJyZXNvdXJjZTsKIH0KKyNlbmRpZgogCiBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OkNhY2hlZFJl
c291cmNlUmVxdWVzdChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIs
IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgYm9vbCBpbmNyZW1lbnRhbCkKICAgICA6IG1fY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoY2FjaGVkUmVzb3VyY2VMb2FkZXIpCkBAIC05MCw3ICs5Miw5IEBA
IFBhc3NPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6
OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkCiAgICAgT3duUHRyPENhY2hlZFJlc291cmNlUmVxdWVz
dD4gcmVxdWVzdCA9IGFkb3B0UHRyKG5ldyBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoY2FjaGVkUmVz
b3VyY2VMb2FkZXIsIHJlc291cmNlLCBpbmNyZW1lbnRhbCkpOwogCiAgICAgUmVzb3VyY2VSZXF1
ZXN0IHJlc291cmNlUmVxdWVzdCA9IHJlc291cmNlLT5yZXNvdXJjZVJlcXVlc3QoKTsKKyNpZiBQ
TEFURk9STShDSFJPTUlVTSkKICAgICByZXNvdXJjZVJlcXVlc3Quc2V0VGFyZ2V0VHlwZShjYWNo
ZWRSZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUocmVzb3VyY2UtPnR5cGUoKSkpOworI2VuZGlmCiAK
ICAgICBpZiAoIXJlc291cmNlLT5hY2NlcHQoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJlc291cmNl
UmVxdWVzdC5zZXRIVFRQQWNjZXB0KHJlc291cmNlLT5hY2NlcHQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGU0ODk5OGZmNmM0MDhiMTUwYTM2
YjVkNjc4OWFkMzJiMjY2MWFhOTguLjhmM2ZkNmQ5OWEzMjliZDFiMWJlZDlkZWI1Y2FmYzZhNjBj
OWQzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBA
IC00MTIsNyArNDEyLDYgQEAgc3RhdGljIGJvb2wgd2ViS2l0V2ViU3JjU3RhcnQoV2ViS2l0V2Vi
U3JjKiBzcmMpCiAgICAgS1VSTCB1cmwgPSBLVVJMKEtVUkwoKSwgcHJpdi0+dXJpKTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7Ci0gICAgcmVxdWVzdC5zZXRUYXJnZXRUeXBl
KFJlc291cmNlUmVxdWVzdEJhc2U6OlRhcmdldElzTWVkaWEpOwogICAgIHJlcXVlc3Quc2V0QWxs
b3dDb29raWVzKHRydWUpOwogCiAgICAgTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5jcHAKaW5kZXggZmU4Njk5Mzk5ZjRkNzk1MzA1YjE4NjQ2ZTMzYzAwNmQxZjBmNjcz
Ni4uMDFkOTJjMDcyNTA3ZTNlODMxNmNlZWFlNDk5ZjRlOThmMjNmYjcxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
Y3BwCkBAIC01Myw3ICs1Myw2IEBAIFBhc3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBSZXNvdXJj
ZVJlcXVlc3RCYXNlOjphZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzCiAgICAgcmVxdWVz
dC0+c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoZGF0YS0+bV9maXJzdFBhcnR5Rm9yQ29va2llcyk7
CiAgICAgcmVxdWVzdC0+c2V0SFRUUE1ldGhvZChkYXRhLT5tX2h0dHBNZXRob2QpOwogICAgIHJl
cXVlc3QtPnNldFByaW9yaXR5KGRhdGEtPm1fcHJpb3JpdHkpOwotICAgIHJlcXVlc3QtPnNldFRh
cmdldFR5cGUoZGF0YS0+bV90YXJnZXRUeXBlKTsKIAogICAgIHJlcXVlc3QtPnVwZGF0ZVJlc291
cmNlUmVxdWVzdCgpOwogICAgIHJlcXVlc3QtPm1faHR0cEhlYWRlckZpZWxkcy5hZG9wdChkYXRh
LT5tX2h0dHBIZWFkZXJzLnJlbGVhc2UoKSk7CkBAIC04Nyw3ICs4Niw2IEBAIFBhc3NPd25QdHI8
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpjb3B5
RGF0YSgpIGNvbnN0CiAgICAgZGF0YS0+bV9odHRwTWV0aG9kID0gaHR0cE1ldGhvZCgpLmNyb3Nz
VGhyZWFkU3RyaW5nKCk7CiAgICAgZGF0YS0+bV9odHRwSGVhZGVycyA9IGh0dHBIZWFkZXJGaWVs
ZHMoKS5jb3B5RGF0YSgpOwogICAgIGRhdGEtPm1fcHJpb3JpdHkgPSBwcmlvcml0eSgpOwotICAg
IGRhdGEtPm1fdGFyZ2V0VHlwZSA9IG1fdGFyZ2V0VHlwZTsKIAogICAgIGRhdGEtPm1fcmVzcG9u
c2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5
LnNpemUoKSk7CiAgICAgc2l6ZV90IGVuY29kaW5nQXJyYXlTaXplID0gbV9yZXNwb25zZUNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5zaXplKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCmluZGV4
IDRjN2FiY2I1ZjNkYWZjODMxMmQ2NWVjNmRiMDVhMTBjMmMxMTNkN2MuLjRiMjRkYzM2NjJhYWJk
NjZlNjAxOWQ1ODJjNWIxYzU0MDcwODc2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBAIC01MSwyNCArNTEsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0QmFzZSB7CiAg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgLy8g
VGhlIHR5cGUgb2YgdGhpcyBSZXNvdXJjZVJlcXVlc3QsIGJhc2VkIG9uIGhvdyB0aGUgcmVzb3Vy
Y2Ugd2lsbCBiZSB1c2VkLgotICAgICAgICBlbnVtIFRhcmdldFR5cGUgewotICAgICAgICAgICAg
VGFyZ2V0SXNNYWluRnJhbWUsCi0gICAgICAgICAgICBUYXJnZXRJc1N1YmZyYW1lLAotICAgICAg
ICAgICAgVGFyZ2V0SXNTdWJyZXNvdXJjZSwgIC8vIFJlc291cmNlIGlzIGEgZ2VuZXJpYyBzdWJy
ZXNvdXJjZS4gIChHZW5lcmFsbHkgYSBzcGVjaWZpYyB0eXBlIHNob3VsZCBiZSBzcGVjaWZpZWQp
Ci0gICAgICAgICAgICBUYXJnZXRJc1N0eWxlU2hlZXQsCi0gICAgICAgICAgICBUYXJnZXRJc1Nj
cmlwdCwKLSAgICAgICAgICAgIFRhcmdldElzRm9udFJlc291cmNlLAotICAgICAgICAgICAgVGFy
Z2V0SXNJbWFnZSwKLSAgICAgICAgICAgIFRhcmdldElzT2JqZWN0LAotICAgICAgICAgICAgVGFy
Z2V0SXNNZWRpYSwKLSAgICAgICAgICAgIFRhcmdldElzV29ya2VyLAotICAgICAgICAgICAgVGFy
Z2V0SXNTaGFyZWRXb3JrZXIsCi0gICAgICAgICAgICBUYXJnZXRJc1ByZWZldGNoLAotICAgICAg
ICAgICAgVGFyZ2V0SXNQcmVyZW5kZXIsCi0gICAgICAgICAgICBUYXJnZXRJc0Zhdmljb24sCi0g
ICAgICAgIH07Ci0KICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBh
ZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pOwogCiAgICAg
ICAgIC8vIEdldHMgYSBjb3B5IG9mIHRoZSBkYXRhIHN1aXRhYmxlIGZvciBwYXNzaW5nIHRvIGFu
b3RoZXIgdGhyZWFkLgpAQCAtMTQ3LDExICsxMjksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGJvb2wgcmVwb3J0UmF3SGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcmVwb3J0UmF3
SGVhZGVyczsgfQogICAgICAgICB2b2lkIHNldFJlcG9ydFJhd0hlYWRlcnMoYm9vbCByZXBvcnRS
YXdIZWFkZXJzKSB7IG1fcmVwb3J0UmF3SGVhZGVycyA9IHJlcG9ydFJhd0hlYWRlcnM7IH0KIAot
ICAgICAgICAvLyBXaGF0IHRoaXMgcmVxdWVzdCBpcyBmb3IuCi0gICAgICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBiZSBtb3ZlZCBvdXQgb2YgUmVzb3VyY2VSZXF1ZXN0QmFzZSwgPGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODQ4Mz4uCi0gICAgICAgIFRhcmdldFR5
cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0VHlwZTsgfQotICAgICAgICB2
b2lkIHNldFRhcmdldFR5cGUoVGFyZ2V0VHlwZSB0eXBlKSB7IG1fdGFyZ2V0VHlwZSA9IHR5cGU7
IH0KLQogICAgICAgICBzdGF0aWMgZG91YmxlIGRlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoKTsgLy8g
TWF5IHJldHVybiAwIHdoZW4gdXNpbmcgcGxhdGZvcm0gZGVmYXVsdC4KICAgICAgICAgc3RhdGlj
IHZvaWQgc2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbChkb3VibGUpOwogCkBAIC0xNjYsNyArMTQz
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX3JlcG9ydExvYWRUaW1p
bmcoZmFsc2UpCiAgICAgICAgICAgICAsIG1fcmVwb3J0UmF3SGVhZGVycyhmYWxzZSkKICAgICAg
ICAgICAgICwgbV9wcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eUxvdykKLSAgICAgICAgICAg
ICwgbV90YXJnZXRUeXBlKFRhcmdldElzU3VicmVzb3VyY2UpCiAgICAgICAgIHsKICAgICAgICAg
fQogCkBAIC0xODIsNyArMTU4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
LCBtX3JlcG9ydExvYWRUaW1pbmcoZmFsc2UpCiAgICAgICAgICAgICAsIG1fcmVwb3J0UmF3SGVh
ZGVycyhmYWxzZSkKICAgICAgICAgICAgICwgbV9wcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0
eUxvdykKLSAgICAgICAgICAgICwgbV90YXJnZXRUeXBlKFRhcmdldElzU3VicmVzb3VyY2UpCiAg
ICAgICAgIHsKICAgICAgICAgfQogCkBAIC0yMDgsNyArMTgzLDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBib29sIG1fcmVwb3J0TG9hZFRpbWluZzsKICAgICAgICAgYm9vbCBtX3Jl
cG9ydFJhd0hlYWRlcnM7CiAgICAgICAgIFJlc291cmNlTG9hZFByaW9yaXR5IG1fcHJpb3JpdHk7
Ci0gICAgICAgIFRhcmdldFR5cGUgbV90YXJnZXRUeXBlOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhc1Jlc291cmNlUmVxdWVzdCgpIGNvbnN0OwpAQCAt
MjM3LDcgKzIxMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPEZvcm1E
YXRhPiBtX2h0dHBCb2R5OwogICAgICAgICBib29sIG1fYWxsb3dDb29raWVzOwogICAgICAgICBS
ZXNvdXJjZUxvYWRQcmlvcml0eSBtX3ByaW9yaXR5OwotICAgICAgICBSZXNvdXJjZVJlcXVlc3RC
YXNlOjpUYXJnZXRUeXBlIG1fdGFyZ2V0VHlwZTsKICAgICB9OwogICAgIAogICAgIHVuc2lnbmVk
IGluaXRpYWxpemVNYXhpbXVtSFRUUENvbm5lY3Rpb25Db3VudFBlckhvc3QoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3Vy
Y2VSZXF1ZXN0LmNwcAppbmRleCA1MTljNjNmNGMzNzA1MzcyN2QzMzc0NjVlN2YzYTkwYjYzZTIy
MTYwLi4yNTQxZGU3Njk3ODYwMzNkNDgyZTdmNjM0NjljMGEwZjVlYzExZjkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNv
dXJjZVJlcXVlc3QuY3BwCkBAIC00NCw2ICs0NCw3IEBAIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRS
ZXNvdXJjZVJlcXVlc3REYXRhPiBSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1Db3B5RGF0YShQ
CiAgICAgZGF0YS0+bV9hcHBDYWNoZUhvc3RJRCA9IG1fYXBwQ2FjaGVIb3N0SUQ7CiAgICAgZGF0
YS0+bV9oYXNVc2VyR2VzdHVyZSA9IG1faGFzVXNlckdlc3R1cmU7CiAgICAgZGF0YS0+bV9kb3du
bG9hZFRvRmlsZSA9IG1fZG93bmxvYWRUb0ZpbGU7CisgICAgZGF0YS0+bV90YXJnZXRUeXBlID0g
bV90YXJnZXRUeXBlOwogICAgIHJldHVybiBkYXRhOwogfQogCkBAIC01NCw2ICs1NSw3IEBAIHZv
aWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1BsYXRmb3JtQWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVh
ZFJlc291cmNlUmVxdWVzdERhdGE+CiAgICAgbV9hcHBDYWNoZUhvc3RJRCA9IGRhdGEtPm1fYXBw
Q2FjaGVIb3N0SUQ7CiAgICAgbV9oYXNVc2VyR2VzdHVyZSA9IGRhdGEtPm1faGFzVXNlckdlc3R1
cmU7CiAgICAgbV9kb3dubG9hZFRvRmlsZSA9IGRhdGEtPm1fZG93bmxvYWRUb0ZpbGU7CisgICAg
bV90YXJnZXRUeXBlID0gZGF0YS0+bV90YXJnZXRUeXBlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9t
aXVtL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
aHJvbWl1bS9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCBjOTdlNTRiMWEyYjFkZmEzYWQyNTBhNzBi
YWE3OWE5NTNlMGU1NGVjLi42YjU3OGIwYzIzOWM5NTdlYjkzYWE1NWVhNTU4ZTRmNTcyMGFjMDk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jl
c291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hy
b21pdW0vUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTM5LDYgKzM5LDI0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdCA6IHB1YmxpYyBSZXNvdXJjZVJlcXVl
c3RCYXNlIHsKICAgICBwdWJsaWM6CisgICAgICAgIC8vIFRoZSB0eXBlIG9mIHRoaXMgUmVzb3Vy
Y2VSZXF1ZXN0LCBiYXNlZCBvbiBob3cgdGhlIHJlc291cmNlIHdpbGwgYmUgdXNlZC4KKyAgICAg
ICAgZW51bSBUYXJnZXRUeXBlIHsKKyAgICAgICAgICAgIFRhcmdldElzTWFpbkZyYW1lLAorICAg
ICAgICAgICAgVGFyZ2V0SXNTdWJmcmFtZSwKKyAgICAgICAgICAgIFRhcmdldElzU3VicmVzb3Vy
Y2UsIC8vIFJlc291cmNlIGlzIGEgZ2VuZXJpYyBzdWJyZXNvdXJjZS4gKEdlbmVyYWxseSBhIHNw
ZWNpZmljIHR5cGUgc2hvdWxkIGJlIHNwZWNpZmllZCkKKyAgICAgICAgICAgIFRhcmdldElzU3R5
bGVTaGVldCwKKyAgICAgICAgICAgIFRhcmdldElzU2NyaXB0LAorICAgICAgICAgICAgVGFyZ2V0
SXNGb250UmVzb3VyY2UsCisgICAgICAgICAgICBUYXJnZXRJc0ltYWdlLAorICAgICAgICAgICAg
VGFyZ2V0SXNPYmplY3QsCisgICAgICAgICAgICBUYXJnZXRJc01lZGlhLAorICAgICAgICAgICAg
VGFyZ2V0SXNXb3JrZXIsCisgICAgICAgICAgICBUYXJnZXRJc1NoYXJlZFdvcmtlciwKKyAgICAg
ICAgICAgIFRhcmdldElzUHJlZmV0Y2gsCisgICAgICAgICAgICBUYXJnZXRJc1ByZXJlbmRlciwK
KyAgICAgICAgICAgIFRhcmdldElzRmF2aWNvbiwKKyAgICAgICAgfTsKKwogICAgICAgICBjbGFz
cyBFeHRyYURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxFeHRyYURhdGE+IHsKICAgICAgICAgcHVi
bGljOgogICAgICAgICAgICAgdmlydHVhbCB+RXh0cmFEYXRhKCkgeyB9CkBAIC01MSw2ICs2OSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9hcHBDYWNoZUhvc3RJRCgw
KQogICAgICAgICAgICAgLCBtX2hhc1VzZXJHZXN0dXJlKGZhbHNlKQogICAgICAgICAgICAgLCBt
X2Rvd25sb2FkVG9GaWxlKGZhbHNlKQorICAgICAgICAgICAgLCBtX3RhcmdldFR5cGUoVGFyZ2V0
SXNTdWJyZXNvdXJjZSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTYxLDYgKzgwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2FwcENhY2hlSG9zdElEKDApCiAg
ICAgICAgICAgICAsIG1faGFzVXNlckdlc3R1cmUoZmFsc2UpCiAgICAgICAgICAgICAsIG1fZG93
bmxvYWRUb0ZpbGUoZmFsc2UpCisgICAgICAgICAgICAsIG1fdGFyZ2V0VHlwZShUYXJnZXRJc1N1
YnJlc291cmNlKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNzEsNiArOTEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fYXBwQ2FjaGVIb3N0SUQoMCkKICAgICAg
ICAgICAgICwgbV9oYXNVc2VyR2VzdHVyZShmYWxzZSkKICAgICAgICAgICAgICwgbV9kb3dubG9h
ZFRvRmlsZShmYWxzZSkKKyAgICAgICAgICAgICwgbV90YXJnZXRUeXBlKFRhcmdldElzU3VicmVz
b3VyY2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7
CiAgICAgICAgIH0KQEAgLTgyLDYgKzEwMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgICwgbV9hcHBDYWNoZUhvc3RJRCgwKQogICAgICAgICAgICAgLCBtX2hhc1VzZXJHZXN0
dXJlKGZhbHNlKQogICAgICAgICAgICAgLCBtX2Rvd25sb2FkVG9GaWxlKGZhbHNlKQorICAgICAg
ICAgICAgLCBtX3RhcmdldFR5cGUoVGFyZ2V0SXNTdWJyZXNvdXJjZSkKICAgICAgICAgewogICAg
ICAgICB9CiAKQEAgLTExMiw2ICsxMzQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBFeHRyYURhdGEqIGV4dHJhRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZXh0cmFEYXRhLmdldCgp
OyB9CiAgICAgICAgIHZvaWQgc2V0RXh0cmFEYXRhKFBhc3NSZWZQdHI8RXh0cmFEYXRhPiBleHRy
YURhdGEpIHsgbV9leHRyYURhdGEgPSBleHRyYURhdGE7IH0KIAorICAgICAgICAvLyBXaGF0IHRo
aXMgcmVxdWVzdCBpcyBmb3IuCisgICAgICAgIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGFyZ2V0VHlwZTsgfQorICAgICAgICB2b2lkIHNldFRhcmdldFR5cGUoVGFy
Z2V0VHlwZSB0eXBlKSB7IG1fdGFyZ2V0VHlwZSA9IHR5cGU7IH0KKwogICAgIHByaXZhdGU6CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlcXVlc3RCYXNlOwogCkBAIC0xMjcsNiArMTUz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1faGFzVXNlckdlc3R1cmU7
CiAgICAgICAgIGJvb2wgbV9kb3dubG9hZFRvRmlsZTsKICAgICAgICAgUmVmUHRyPEV4dHJhRGF0
YT4gbV9leHRyYURhdGE7CisgICAgICAgIFRhcmdldFR5cGUgbV90YXJnZXRUeXBlOwogICAgIH07
CiAKICAgICBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhIDogcHVibGljIENy
b3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YUJhc2UgewpAQCAtMTM1LDYgKzE2Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50IG1fYXBwQ2FjaGVIb3N0SUQ7CiAgICAgICAg
IGJvb2wgbV9oYXNVc2VyR2VzdHVyZTsKICAgICAgICAgYm9vbCBtX2Rvd25sb2FkVG9GaWxlOwor
ICAgICAgICBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldFR5cGUgbV90YXJnZXRUeXBlOwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKaW5kZXggNWY2Y2ViZWI4
ZmQ3ZjU2ZDA3ZmRkOTIzMTkwYjNkZDQ3YjE2OTQ0OC4uMjNkYTlmZjk1NWI3YzJhOWM0ZDk3ZmYz
NzQ1YTBkNDMyM2VmNWVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZh
dWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKQEAgLTI4OCw3ICsyODgsMTAgQEAg
dm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsKQogICAg
IG1fd29ya2VyLT5zZXRQZW5kaW5nQWN0aXZpdHkobV93b3JrZXIuZ2V0KCkpOwogCiAgICAgLy8g
TWFyayB0aGlzIG9iamVjdCBhcyBhY3RpdmUgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgbG9hZC4K
LSAgICBtX3NjcmlwdExvYWRlciA9IFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKFJlc291cmNl
UmVxdWVzdEJhc2U6OlRhcmdldElzU2hhcmVkV29ya2VyKTsKKyAgICBtX3NjcmlwdExvYWRlciA9
IFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCk7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisg
ICAgbV9zY3JpcHRMb2FkZXItPnNldFRhcmdldFR5cGUoUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJ
c1NoYXJlZFdvcmtlcik7CisjZW5kaWYKICAgICBtX3NjcmlwdExvYWRlci0+bG9hZEFzeW5jaHJv
bm91c2x5KG1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHVybCwgRGVueUNyb3Nz
T3JpZ2luUmVxdWVzdHMsIHRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5k
ZXggNzI0ZjY0MTQ4YzU1YTdlNDFhY2Q0NDYxZGNlZjdiZDNmM2Y5NzBiMi4uMjM3YjYxMDc3MDlk
MDQ4NGFlMGM2MDI0NmFkNzk1YzQxZWI4NzcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNw
cApAQCAtNjcsNyArNjcsMTAgQEAgUGFzc1JlZlB0cjxXb3JrZXI+IFdvcmtlcjo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb24KICAgICAvLyBUaGUg
d29ya2VyIGNvbnRleHQgZG9lcyBub3QgZXhpc3Qgd2hpbGUgbG9hZGluZywgc28gd2UgbXVzdCBl
bnN1cmUgdGhhdCB0aGUgd29ya2VyIG9iamVjdCBpcyBub3QgY29sbGVjdGVkLCBub3IgYXJlIGl0
cyBldmVudCBsaXN0ZW5lcnMuCiAgICAgd29ya2VyLT5zZXRQZW5kaW5nQWN0aXZpdHkod29ya2Vy
LmdldCgpKTsKIAotICAgIHdvcmtlci0+bV9zY3JpcHRMb2FkZXIgPSBXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmNyZWF0ZShSZXNvdXJjZVJlcXVlc3RCYXNlOjpUYXJnZXRJc1dvcmtlcik7CisgICAgd29y
a2VyLT5tX3NjcmlwdExvYWRlciA9IFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCk7CisjaWYg
UExBVEZPUk0oQ0hST01JVU0pCisgICAgd29ya2VyLT5tX3NjcmlwdExvYWRlci0+c2V0VGFyZ2V0
VHlwZShSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzV29ya2VyKTsKKyNlbmRpZgogICAgIHdvcmtl
ci0+bV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShjb250ZXh0LCBzY3JpcHRVUkws
IERlbnlDcm9zc09yaWdpblJlcXVlc3RzLCB3b3JrZXIuZ2V0KCkpOwogCiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXb3JrZXIoY29udGV4dCwgd29ya2VyLT5hc0lEKCks
IHNjcmlwdFVSTC5zdHJpbmcoKSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5jcHAKaW5kZXggNThlYjg1NDVjMzNlZDJhMzQ2MjA4YTY4YWZiMmIyMjQ2YTY3YmUz
Mi4uOTMwYzM2MGVlZGJmOTI4NWFiYjYwNDFmOTZhY2UxYjBlZTNiNTNiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCkBAIC0yNDUsNyArMjQ1LDEwIEBAIHZvaWQg
V29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywg
RXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgVmVjdG9yPEtVUkw+Ojpjb25zdF9pdGVyYXRvciBlbmQg
PSBjb21wbGV0ZWRVUkxzLmVuZCgpOwogCiAgICAgZm9yIChWZWN0b3I8S1VSTD46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gY29tcGxldGVkVVJMcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgUmVmUHRyPFdvcmtlclNjcmlwdExvYWRlcj4gc2NyaXB0TG9hZGVyKFdvcmtlclNjcmlw
dExvYWRlcjo6Y3JlYXRlKFJlc291cmNlUmVxdWVzdEJhc2U6OlRhcmdldElzU2NyaXB0KSk7Cisg
ICAgICAgIFJlZlB0cjxXb3JrZXJTY3JpcHRMb2FkZXI+IHNjcmlwdExvYWRlcihXb3JrZXJTY3Jp
cHRMb2FkZXI6OmNyZWF0ZSgpKTsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICAgICAgc2Ny
aXB0TG9hZGVyLT5zZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTY3JpcHQp
OworI2VuZGlmCiAgICAgICAgIHNjcmlwdExvYWRlci0+bG9hZFN5bmNocm9ub3VzbHkoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCAqaXQsIEFsbG93Q3Jvc3NPcmlnaW5SZXF1ZXN0cyk7CiAKICAg
ICAgICAgLy8gSWYgdGhlIGZldGNoaW5nIGF0dGVtcHQgZmFpbGVkLCB0aHJvdyBhIE5FVFdPUktf
RVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgYWxsIHRoZXNlIHN0ZXBzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDEzYmY0MjczNTJjMmQ0OGE4
NTAxMjQzMzBlYWM2ZTRhMWJhNjQ4NTkuLjg4YjRjM2RiOTc3NzU5ZjQzYjNmNWZhMzUzNTI0MmMy
NjRhZjAxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIK
IAogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTQ3LDEyICs0
NiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdvcmtlclNjcmlwdExvYWRlcjo6V29y
a2VyU2NyaXB0TG9hZGVyKFJlc291cmNlUmVxdWVzdEJhc2U6OlRhcmdldFR5cGUgdGFyZ2V0VHlw
ZSkKK1dvcmtlclNjcmlwdExvYWRlcjo6V29ya2VyU2NyaXB0TG9hZGVyKCkKICAgICA6IG1fY2xp
ZW50KDApCiAgICAgLCBtX2ZhaWxlZChmYWxzZSkKICAgICAsIG1faWRlbnRpZmllcigwKQotICAg
ICwgbV90YXJnZXRUeXBlKHRhcmdldFR5cGUpCiAgICAgLCBtX2ZpbmlzaGluZyhmYWxzZSkKKyNp
ZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICAsIG1fdGFyZ2V0VHlwZShSZXNvdXJjZVJlcXVlc3Q6
OlRhcmdldElzV29ya2VyKQorI2VuZGlmCiB7CiB9CiAKQEAgLTEwOCw3ICsxMDksOSBAQCBQYXNz
T3duUHRyPFJlc291cmNlUmVxdWVzdD4gV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJj
ZVJlcXVlc3QoKQogewogICAgIE93blB0cjxSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9w
dFB0cihuZXcgUmVzb3VyY2VSZXF1ZXN0KG1fdXJsKSk7CiAgICAgcmVxdWVzdC0+c2V0SFRUUE1l
dGhvZCgiR0VUIik7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgcmVxdWVzdC0+c2V0VGFy
Z2V0VHlwZShtX3RhcmdldFR5cGUpOworI2VuZGlmCiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFz
ZSgpOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmgKaW5kZXggYmVjOGE2YTI2MTNjMDlmOTM2MTZiZmQzMzVmMmU2NDIyNzUyOGM3NC4uOTVhMTg5
N2FkNjcwYjAzMTRiOTEzN2RiOGUxZWVkYjg1MjVhM2I5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCkBAIC0zMSw3ICszMSw3IEBACiAjaWYgRU5BQkxF
KFdPUktFUlMpCiAKICNpbmNsdWRlICJLVVJMLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
QmFzZS5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlRocmVhZGFi
bGVMb2FkZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAKQEAgLTUw
LDkgKzUwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFdvcmtlclNjcmlwdExv
YWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclNjcmlwdExvYWRlcj4sIHB1YmxpYyBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXJTY3JpcHRMb2FkZXI+
IGNyZWF0ZShSZXNvdXJjZVJlcXVlc3RCYXNlOjpUYXJnZXRUeXBlIHRhcmdldFR5cGUpCisgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdvcmtlclNjcmlwdExvYWRlcj4gY3JlYXRlKCkKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXb3JrZXJTY3JpcHRMb2FkZXIo
dGFyZ2V0VHlwZSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXb3JrZXJTY3Jp
cHRMb2FkZXIoKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGxvYWRTeW5jaHJvbm91c2x5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBLVVJMJiwgQ3Jvc3NPcmlnaW5SZXF1ZXN0
UG9saWN5KTsKQEAgLTczLDEwICs3MywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKHVuc2lnbmVkIGxvbmcgLypp
ZGVudGlmaWVyKi8sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAorI2lmIFBMQVRGT1JNKENI
Uk9NSVVNKQorICAgICAgICB2b2lkIHNldFRhcmdldFR5cGUoUmVzb3VyY2VSZXF1ZXN0OjpUYXJn
ZXRUeXBlIHRhcmdldFR5cGUpIHsgbV90YXJnZXRUeXBlID0gdGFyZ2V0VHlwZTsgfQorI2VuZGlm
CisKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFdv
cmtlclNjcmlwdExvYWRlcj47CiAKLSAgICAgICAgZXhwbGljaXQgV29ya2VyU2NyaXB0TG9hZGVy
KFJlc291cmNlUmVxdWVzdEJhc2U6OlRhcmdldFR5cGUpOworICAgICAgICBXb3JrZXJTY3JpcHRM
b2FkZXIoKTsKICAgICAgICAgfldvcmtlclNjcmlwdExvYWRlcigpOwogCiAgICAgICAgIFBhc3NP
d25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBjcmVhdGVSZXNvdXJjZVJlcXVlc3QoKTsKQEAgLTkxLDgg
Kzk1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgS1VSTCBtX3Jlc3BvbnNlVVJM
OwogICAgICAgICBib29sIG1fZmFpbGVkOwogICAgICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRp
ZmllcjsKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6VGFyZ2V0VHlwZSBtX3RhcmdldFR5
cGU7CiAgICAgICAgIGJvb2wgbV9maW5pc2hpbmc7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisg
ICAgICAgIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0VHlwZSBtX3RhcmdldFR5cGU7CisjZW5kaWYK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IGQxNjhhZTllODM1MGFlZGI2ZTBmNmUwOTliNDNlODNmNDY2N2E0MjcuLjljNmM3NTll
NDcwM2YzM2NiMDU2OTk0ZGVjMGJiYmIzYzgwMzI1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMDQgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hl
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgR2V0IHJpZCBvZiBSZXNvdXJjZVJlcXVlc3RCYXNl
OjptX3RhcmdldFR5cGUuIE1vdmUgaXQgdG8gY2hyb21pdW0ncyBSZXNvdXJjZVJlcXVlc3QuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODQ4MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1NoYXJl
ZFdvcmtlclJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVyOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIpOgorCiAyMDExLTA4LTAzICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGdvb2dsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IEV2ZW50
U2VuZGVyLnNjYWxlUGFnZUJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKaW5kZXggZTI0MjFhZWU3MjM3ODdhMzRiNjc5
ZDgwNDdmMDUxOTRlYWU5NDQ2NC4uNTJjMjJiZTZlY2IzMGU2MTQ2MDMxMmFkOGVlZWRkOWUzZGVi
MzU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2hhcmVkV29ya2Vy
UmVwb3NpdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2hhcmVkV29y
a2VyUmVwb3NpdG9yeS5jcHAKQEAgLTcwLDEwICs3MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICwg
bV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV93ZWJXb3JrZXIod2ViV29ya2VyKQogICAgICAgICAs
IG1fcG9ydChwb3J0KQotICAgICAgICAsIG1fc2NyaXB0TG9hZGVyKFdvcmtlclNjcmlwdExvYWRl
cjo6Y3JlYXRlKFJlc291cmNlUmVxdWVzdEJhc2U6OlRhcmdldElzU2hhcmVkV29ya2VyKSkKKyAg
ICAgICAgLCBtX3NjcmlwdExvYWRlcihXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZSgpKQogICAg
ICAgICAsIG1fbG9hZGluZyhmYWxzZSkKICAgICAgICAgLCBtX3Jlc3BvbnNlQXBwQ2FjaGVJRCgw
KQogICAgIHsKKyAgICAgICAgbV9zY3JpcHRMb2FkZXItPnNldFRhcmdldFR5cGUoUmVzb3VyY2VS
ZXF1ZXN0OjpUYXJnZXRJc1NoYXJlZFdvcmtlcik7CiAgICAgfQogCiAgICAgflNoYXJlZFdvcmtl
clNjcmlwdExvYWRlcigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102917</attachid>
            <date>2011-08-04 08:15:29 -0700</date>
            <delta_ts>2011-08-04 10:59:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48483-20110804171527.patch</filename>
            <type>text/plain</type>
            <size>22401</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIzNjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MjdmYTFlMGRmYzZkNzQz
OGE3OGEwMzE3OTc4MzM4NmY4NjAwN2Q3Li42ZmM3NWJhYjE1NDZmMGFhNGMzNTRiYjIxMDljNGFm
ZmYzMTJkZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDgtMDQgIEpvY2hl
biBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgR2V0IHJpZCBvZiBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjptX3RhcmdldFR5cGUuIE1vdmUgaXQgdG8gY2hyb21pdW0ncyBS
ZXNvdXJjZVJlcXVlc3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODQ4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogbG9hZGVyL1BpbmdMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGluZ0xvYWRlcjo6bG9hZEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6OnNlbmRQaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBp
bmdMb2FkZXI6OnJlcG9ydENvbnRlbnRTZWN1cml0eVBvbGljeVZpb2xhdGlvbik6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmxvYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAo
d2ViS2l0V2ViU3JjU3RhcnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjph
ZG9wdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpjb3B5RGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXNvdXJjZVJlcXVlc3RCYXNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1Db3B5RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1BZG9wdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZVJlcXVlc3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6dGFyZ2V0VHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnNldFRhcmdldFR5cGUpOgorICAgICAgICAqIHdvcmtlcnMv
RGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OmNyZWF0ZSk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6Omlt
cG9ydFNjcmlwdHMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6V29ya2VyU2NyaXB0TG9hZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlUmVzb3VyY2VS
ZXF1ZXN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpzZXRUYXJnZXRUeXBlKToKKwogMjAxMS0wOC0wNCAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogUmVuYW1lIHNvdXJjZUlkIC0+IHNjcmlwdElkIGluIHRoZSBwcm90b2NvbCBhbmQgdGhlIHNv
dXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IGU1Y2RiMDEz
MTZjOGIzYThlMmE2NTI5ZWQwNWRhOTgzMWEyY2YyYjMuLjNiYjdmYTM4NWRkMDdkOWZhNDM3Njgw
ODNmOWQwYTEyOWE5NjlmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5n
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKQEAg
LTU1LDcgKzU1LDkgQEAgdm9pZCBQaW5nTG9hZGVyOjpsb2FkSW1hZ2UoRnJhbWUqIGZyYW1lLCBj
b25zdCBLVVJMJiB1cmwpCiAgICAgfQogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJs
KTsKKyNpZiBIQVZFKFJFU09VUkNFUkVRVUVTVF9UQVJHRVRUWVBFKQogICAgIHJlcXVlc3Quc2V0
VGFyZ2V0VHlwZShSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzSW1hZ2UpOworI2VuZGlmCiAgICAg
cmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIkNhY2hlLUNvbnRyb2wiLCAibWF4LWFnZT0wIik7
CiAgICAgaWYgKCFTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVycmVyKHJlcXVlc3QudXJs
KCksIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSkKICAgICAgICAgcmVxdWVz
dC5zZXRIVFRQUmVmZXJyZXIoZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpOwpA
QCAtNzEsNyArNzMsOSBAQCB2b2lkIFBpbmdMb2FkZXI6OmxvYWRJbWFnZShGcmFtZSogZnJhbWUs
IGNvbnN0IEtVUkwmIHVybCkKIHZvaWQgUGluZ0xvYWRlcjo6c2VuZFBpbmcoRnJhbWUqIGZyYW1l
LCBjb25zdCBLVVJMJiBwaW5nVVJMLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblVSTCkKIHsKICAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChwaW5nVVJMKTsKKyNpZiBIQVZFKFJFU09VUkNFUkVR
VUVTVF9UQVJHRVRUWVBFKQogICAgIHJlcXVlc3Quc2V0VGFyZ2V0VHlwZShSZXNvdXJjZVJlcXVl
c3Q6OlRhcmdldElzU3VicmVzb3VyY2UpOworI2VuZGlmCiAgICAgcmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJQT1NUIik7CiAgICAgcmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoInRleHQvcGluZyIp
OwogICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoRm9ybURhdGE6OmNyZWF0ZSgiUElORyIpKTsKQEAg
LTk3LDcgKzEwMSw5IEBAIHZvaWQgUGluZ0xvYWRlcjo6c2VuZFBpbmcoRnJhbWUqIGZyYW1lLCBj
b25zdCBLVVJMJiBwaW5nVVJMLCBjb25zdCBLVVJMJiBkZXN0aW5hCiB2b2lkIFBpbmdMb2FkZXI6
OnJlcG9ydENvbnRlbnRTZWN1cml0eVBvbGljeVZpb2xhdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIHJlcG9ydFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVwb3J0KQogewogICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KHJlcG9ydFVSTCk7CisjaWYgSEFWRShSRVNPVVJDRVJFUVVF
U1RfVEFSR0VUVFlQRSkKICAgICByZXF1ZXN0LnNldFRhcmdldFR5cGUoUmVzb3VyY2VSZXF1ZXN0
OjpUYXJnZXRJc1N1YnJlc291cmNlKTsKKyNlbmRpZgogICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhv
ZCgiUE9TVCIpOwogICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94
LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KHJlcG9ydCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJl
cXVlc3QuY3BwCmluZGV4IDIzODc3MjgzYjIzZjc3NDE3OGY5OTBkZmQzNDIyYTQxNjUxMDI1YTcu
LjMwZDIxNDgwOWY5ZDU1NmI1MjEyZjdlMDE2YjQyODExNmFkMjJkMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCkBA
IC00NCw3ICs0NCw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0gICAgCisKKyNpZiBIQVZFKFJFU09VUkNFUkVRVUVTVF9UQVJHRVRUWVBF
KQogc3RhdGljIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0VHlwZSBjYWNoZWRSZXNvdXJjZVR5cGVU
b1RhcmdldFR5cGUoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5
cGUpIHsKQEAgLTcxLDYgKzcyLDcgQEAgc3RhdGljIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0VHlw
ZSBjYWNoZWRSZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUoQ2FjaGVkUmVzb3VyY2UKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N1
YnJlc291cmNlOwogfQorI2VuZGlmCiAKIENhY2hlZFJlc291cmNlUmVxdWVzdDo6Q2FjaGVkUmVz
b3VyY2VSZXF1ZXN0KENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwg
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBib29sIGluY3JlbWVudGFsKQogICAgIDogbV9jYWNo
ZWRSZXNvdXJjZUxvYWRlcihjYWNoZWRSZXNvdXJjZUxvYWRlcikKQEAgLTkwLDcgKzkyLDkgQEAg
UGFzc093blB0cjxDYWNoZWRSZXNvdXJjZVJlcXVlc3Q+IENhY2hlZFJlc291cmNlUmVxdWVzdDo6
bG9hZChDYWNoZWRSZXNvdXJjZUxvYWQKICAgICBPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0
PiByZXF1ZXN0ID0gYWRvcHRQdHIobmV3IENhY2hlZFJlc291cmNlUmVxdWVzdChjYWNoZWRSZXNv
dXJjZUxvYWRlciwgcmVzb3VyY2UsIGluY3JlbWVudGFsKSk7CiAKICAgICBSZXNvdXJjZVJlcXVl
c3QgcmVzb3VyY2VSZXF1ZXN0ID0gcmVzb3VyY2UtPnJlc291cmNlUmVxdWVzdCgpOworI2lmIEhB
VkUoUkVTT1VSQ0VSRVFVRVNUX1RBUkdFVFRZUEUpCiAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldFRh
cmdldFR5cGUoY2FjaGVkUmVzb3VyY2VUeXBlVG9UYXJnZXRUeXBlKHJlc291cmNlLT50eXBlKCkp
KTsKKyNlbmRpZgogCiAgICAgaWYgKCFyZXNvdXJjZS0+YWNjZXB0KCkuaXNFbXB0eSgpKQogICAg
ICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEFjY2VwdChyZXNvdXJjZS0+YWNjZXB0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCBlNDg5OThm
ZjZjNDA4YjE1MGEzNmI1ZDY3ODlhZDMyYjI2NjFhYTk4Li44ZjNmZDZkOTlhMzI5YmQxYjFiZWQ5
ZGViNWNhZmM2YTYwYzlkMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcApAQCAtNDEyLDcgKzQxMiw2IEBAIHN0YXRpYyBib29sIHdlYktpdFdlYlNyY1N0
YXJ0KFdlYktpdFdlYlNyYyogc3JjKQogICAgIEtVUkwgdXJsID0gS1VSTChLVVJMKCksIHByaXYt
PnVyaSk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwotICAgIHJlcXVlc3Qu
c2V0VGFyZ2V0VHlwZShSZXNvdXJjZVJlcXVlc3RCYXNlOjpUYXJnZXRJc01lZGlhKTsKICAgICBy
ZXF1ZXN0LnNldEFsbG93Q29va2llcyh0cnVlKTsKIAogICAgIE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IGZlODY5OTM5OWY0ZDc5NTMwNWIxODY0NmUz
M2MwMDZkMWYwZjY3MzYuLjAxZDkyYzA3MjUwN2UzZTgzMTZjZWVhZTQ5OWY0ZTk4ZjIzZmI3MWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlcXVlc3RCYXNlLmNwcApAQCAtNTMsNyArNTMsNiBAQCBQYXNzT3duUHRyPFJlc291cmNlUmVx
dWVzdD4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJl
cwogICAgIHJlcXVlc3QtPnNldEZpcnN0UGFydHlGb3JDb29raWVzKGRhdGEtPm1fZmlyc3RQYXJ0
eUZvckNvb2tpZXMpOwogICAgIHJlcXVlc3QtPnNldEhUVFBNZXRob2QoZGF0YS0+bV9odHRwTWV0
aG9kKTsKICAgICByZXF1ZXN0LT5zZXRQcmlvcml0eShkYXRhLT5tX3ByaW9yaXR5KTsKLSAgICBy
ZXF1ZXN0LT5zZXRUYXJnZXRUeXBlKGRhdGEtPm1fdGFyZ2V0VHlwZSk7CiAKICAgICByZXF1ZXN0
LT51cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsKICAgICByZXF1ZXN0LT5tX2h0dHBIZWFkZXJGaWVs
ZHMuYWRvcHQoZGF0YS0+bV9odHRwSGVhZGVycy5yZWxlYXNlKCkpOwpAQCAtODcsNyArODYsNiBA
QCBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gUmVzb3VyY2VSZXF1
ZXN0QmFzZTo6Y29weURhdGEoKSBjb25zdAogICAgIGRhdGEtPm1faHR0cE1ldGhvZCA9IGh0dHBN
ZXRob2QoKS5jcm9zc1RocmVhZFN0cmluZygpOwogICAgIGRhdGEtPm1faHR0cEhlYWRlcnMgPSBo
dHRwSGVhZGVyRmllbGRzKCkuY29weURhdGEoKTsKICAgICBkYXRhLT5tX3ByaW9yaXR5ID0gcHJp
b3JpdHkoKTsKLSAgICBkYXRhLT5tX3RhcmdldFR5cGUgPSBtX3RhcmdldFR5cGU7CiAKICAgICBk
YXRhLT5tX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheS5zaXplKCkpOwogICAgIHNpemVfdCBlbmNvZGluZ0FycmF5U2l6ZSA9IG1f
cmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVz
dEJhc2UuaAppbmRleCA0YzdhYmNiNWYzZGFmYzgzMTJkNjVlYzZkYjA1YTEwYzJjMTEzZDdjLi40
YjI0ZGMzNjYyYWFiZDY2ZTYwMTlkNTgyYzViMWM1NDA3MDg3NjIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAt
NTEsMjQgKzUxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlUmVx
dWVzdEJhc2UgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6
Ci0gICAgICAgIC8vIFRoZSB0eXBlIG9mIHRoaXMgUmVzb3VyY2VSZXF1ZXN0LCBiYXNlZCBvbiBo
b3cgdGhlIHJlc291cmNlIHdpbGwgYmUgdXNlZC4KLSAgICAgICAgZW51bSBUYXJnZXRUeXBlIHsK
LSAgICAgICAgICAgIFRhcmdldElzTWFpbkZyYW1lLAotICAgICAgICAgICAgVGFyZ2V0SXNTdWJm
cmFtZSwKLSAgICAgICAgICAgIFRhcmdldElzU3VicmVzb3VyY2UsICAvLyBSZXNvdXJjZSBpcyBh
IGdlbmVyaWMgc3VicmVzb3VyY2UuICAoR2VuZXJhbGx5IGEgc3BlY2lmaWMgdHlwZSBzaG91bGQg
YmUgc3BlY2lmaWVkKQotICAgICAgICAgICAgVGFyZ2V0SXNTdHlsZVNoZWV0LAotICAgICAgICAg
ICAgVGFyZ2V0SXNTY3JpcHQsCi0gICAgICAgICAgICBUYXJnZXRJc0ZvbnRSZXNvdXJjZSwKLSAg
ICAgICAgICAgIFRhcmdldElzSW1hZ2UsCi0gICAgICAgICAgICBUYXJnZXRJc09iamVjdCwKLSAg
ICAgICAgICAgIFRhcmdldElzTWVkaWEsCi0gICAgICAgICAgICBUYXJnZXRJc1dvcmtlciwKLSAg
ICAgICAgICAgIFRhcmdldElzU2hhcmVkV29ya2VyLAotICAgICAgICAgICAgVGFyZ2V0SXNQcmVm
ZXRjaCwKLSAgICAgICAgICAgIFRhcmdldElzUHJlcmVuZGVyLAotICAgICAgICAgICAgVGFyZ2V0
SXNGYXZpY29uLAotICAgICAgICB9OwotCiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlc291
cmNlUmVxdWVzdD4gYWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERh
dGE+KTsKIAogICAgICAgICAvLyBHZXRzIGEgY29weSBvZiB0aGUgZGF0YSBzdWl0YWJsZSBmb3Ig
cGFzc2luZyB0byBhbm90aGVyIHRocmVhZC4KQEAgLTE0NywxMSArMTI5LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIHJlcG9ydFJhd0hlYWRlcnMoKSBjb25zdCB7IHJldHVy
biBtX3JlcG9ydFJhd0hlYWRlcnM7IH0KICAgICAgICAgdm9pZCBzZXRSZXBvcnRSYXdIZWFkZXJz
KGJvb2wgcmVwb3J0UmF3SGVhZGVycykgeyBtX3JlcG9ydFJhd0hlYWRlcnMgPSByZXBvcnRSYXdI
ZWFkZXJzOyB9CiAKLSAgICAgICAgLy8gV2hhdCB0aGlzIHJlcXVlc3QgaXMgZm9yLgotICAgICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbW92ZWQgb3V0IG9mIFJlc291cmNlUmVxdWVzdEJh
c2UsIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg0ODM+LgotICAg
ICAgICBUYXJnZXRUeXBlIHRhcmdldFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldFR5cGU7
IH0KLSAgICAgICAgdm9pZCBzZXRUYXJnZXRUeXBlKFRhcmdldFR5cGUgdHlwZSkgeyBtX3Rhcmdl
dFR5cGUgPSB0eXBlOyB9Ci0KICAgICAgICAgc3RhdGljIGRvdWJsZSBkZWZhdWx0VGltZW91dElu
dGVydmFsKCk7IC8vIE1heSByZXR1cm4gMCB3aGVuIHVzaW5nIHBsYXRmb3JtIGRlZmF1bHQuCiAg
ICAgICAgIHN0YXRpYyB2b2lkIHNldERlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoZG91YmxlKTsKIApA
QCAtMTY2LDcgKzE0Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9y
ZXBvcnRMb2FkVGltaW5nKGZhbHNlKQogICAgICAgICAgICAgLCBtX3JlcG9ydFJhd0hlYWRlcnMo
ZmFsc2UpCiAgICAgICAgICAgICAsIG1fcHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3cp
Ci0gICAgICAgICAgICAsIG1fdGFyZ2V0VHlwZShUYXJnZXRJc1N1YnJlc291cmNlKQogICAgICAg
ICB7CiAgICAgICAgIH0KIApAQCAtMTgyLDcgKzE1OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgICwgbV9yZXBvcnRMb2FkVGltaW5nKGZhbHNlKQogICAgICAgICAgICAgLCBt
X3JlcG9ydFJhd0hlYWRlcnMoZmFsc2UpCiAgICAgICAgICAgICAsIG1fcHJpb3JpdHkoUmVzb3Vy
Y2VMb2FkUHJpb3JpdHlMb3cpCi0gICAgICAgICAgICAsIG1fdGFyZ2V0VHlwZShUYXJnZXRJc1N1
YnJlc291cmNlKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtMjA4LDcgKzE4Myw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3JlcG9ydExvYWRUaW1pbmc7CiAgICAg
ICAgIGJvb2wgbV9yZXBvcnRSYXdIZWFkZXJzOwogICAgICAgICBSZXNvdXJjZUxvYWRQcmlvcml0
eSBtX3ByaW9yaXR5OwotICAgICAgICBUYXJnZXRUeXBlIG1fdGFyZ2V0VHlwZTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgYXNSZXNvdXJjZVJlcXVlc3Qo
KSBjb25zdDsKQEAgLTIzNyw3ICsyMTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFJlZlB0cjxGb3JtRGF0YT4gbV9odHRwQm9keTsKICAgICAgICAgYm9vbCBtX2FsbG93Q29va2ll
czsKICAgICAgICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgbV9wcmlvcml0eTsKLSAgICAgICAgUmVz
b3VyY2VSZXF1ZXN0QmFzZTo6VGFyZ2V0VHlwZSBtX3RhcmdldFR5cGU7CiAgICAgfTsKICAgICAK
ICAgICB1bnNpZ25lZCBpbml0aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVt
L1Jlc291cmNlUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2No
cm9taXVtL1Jlc291cmNlUmVxdWVzdC5jcHAKaW5kZXggNTE5YzYzZjRjMzcwNTM3MjdkMzM3NDY1
ZTdmM2E5MGI2M2UyMjE2MC4uMjU0MWRlNzY5Nzg2MDMzZDQ4MmU3ZjYzNDY5YzBhMGY1ZWMxMWY5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9S
ZXNvdXJjZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2hyb21pdW0vUmVzb3VyY2VSZXF1ZXN0LmNwcApAQCAtNDQsNiArNDQsNyBAQCBQYXNzT3duUHRy
PENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gUmVzb3VyY2VSZXF1ZXN0Ojpkb1BsYXRm
b3JtQ29weURhdGEoUAogICAgIGRhdGEtPm1fYXBwQ2FjaGVIb3N0SUQgPSBtX2FwcENhY2hlSG9z
dElEOwogICAgIGRhdGEtPm1faGFzVXNlckdlc3R1cmUgPSBtX2hhc1VzZXJHZXN0dXJlOwogICAg
IGRhdGEtPm1fZG93bmxvYWRUb0ZpbGUgPSBtX2Rvd25sb2FkVG9GaWxlOworICAgIGRhdGEtPm1f
dGFyZ2V0VHlwZSA9IG1fdGFyZ2V0VHlwZTsKICAgICByZXR1cm4gZGF0YTsKIH0KIApAQCAtNTQs
NiArNTUsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybUFkb3B0KFBhc3NPd25Q
dHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPgogICAgIG1fYXBwQ2FjaGVIb3N0SUQg
PSBkYXRhLT5tX2FwcENhY2hlSG9zdElEOwogICAgIG1faGFzVXNlckdlc3R1cmUgPSBkYXRhLT5t
X2hhc1VzZXJHZXN0dXJlOwogICAgIG1fZG93bmxvYWRUb0ZpbGUgPSBkYXRhLT5tX2Rvd25sb2Fk
VG9GaWxlOworICAgIG1fdGFyZ2V0VHlwZSA9IGRhdGEtPm1fdGFyZ2V0VHlwZTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggYzk3ZTU0YjFhMmIx
ZGZhM2FkMjUwYTcwYmFhNzlhOTUzZTBlNTRlYy4uMmYwZGQxNTYzZTg1OTIyZjI0MmFiOTgxNDhk
Y2FkZjNmY2VjZDJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jaHJvbWl1bS9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlUmVxdWVzdC5oCkBAIC0zOSw2ICszOSwyNSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3QgOiBwdWJsaWMg
UmVzb3VyY2VSZXF1ZXN0QmFzZSB7CiAgICAgcHVibGljOgorICAgICAgICAvLyBUaGUgdHlwZSBv
ZiB0aGlzIFJlc291cmNlUmVxdWVzdCwgYmFzZWQgb24gaG93IHRoZSByZXNvdXJjZSB3aWxsIGJl
IHVzZWQuCisjZGVmaW5lIEhBVkVfUkVTT1VSQ0VSRVFVRVNUX1RBUkdFVFRZUEUgMQorICAgICAg
ICBlbnVtIFRhcmdldFR5cGUgeworICAgICAgICAgICAgVGFyZ2V0SXNNYWluRnJhbWUsCisgICAg
ICAgICAgICBUYXJnZXRJc1N1YmZyYW1lLAorICAgICAgICAgICAgVGFyZ2V0SXNTdWJyZXNvdXJj
ZSwgLy8gUmVzb3VyY2UgaXMgYSBnZW5lcmljIHN1YnJlc291cmNlLiAoR2VuZXJhbGx5IGEgc3Bl
Y2lmaWMgdHlwZSBzaG91bGQgYmUgc3BlY2lmaWVkKQorICAgICAgICAgICAgVGFyZ2V0SXNTdHls
ZVNoZWV0LAorICAgICAgICAgICAgVGFyZ2V0SXNTY3JpcHQsCisgICAgICAgICAgICBUYXJnZXRJ
c0ZvbnRSZXNvdXJjZSwKKyAgICAgICAgICAgIFRhcmdldElzSW1hZ2UsCisgICAgICAgICAgICBU
YXJnZXRJc09iamVjdCwKKyAgICAgICAgICAgIFRhcmdldElzTWVkaWEsCisgICAgICAgICAgICBU
YXJnZXRJc1dvcmtlciwKKyAgICAgICAgICAgIFRhcmdldElzU2hhcmVkV29ya2VyLAorICAgICAg
ICAgICAgVGFyZ2V0SXNQcmVmZXRjaCwKKyAgICAgICAgICAgIFRhcmdldElzUHJlcmVuZGVyLAor
ICAgICAgICAgICAgVGFyZ2V0SXNGYXZpY29uLAorICAgICAgICB9OworCiAgICAgICAgIGNsYXNz
IEV4dHJhRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEV4dHJhRGF0YT4gewogICAgICAgICBwdWJs
aWM6CiAgICAgICAgICAgICB2aXJ0dWFsIH5FeHRyYURhdGEoKSB7IH0KQEAgLTUxLDYgKzcwLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2FwcENhY2hlSG9zdElEKDAp
CiAgICAgICAgICAgICAsIG1faGFzVXNlckdlc3R1cmUoZmFsc2UpCiAgICAgICAgICAgICAsIG1f
ZG93bmxvYWRUb0ZpbGUoZmFsc2UpCisgICAgICAgICAgICAsIG1fdGFyZ2V0VHlwZShUYXJnZXRJ
c1N1YnJlc291cmNlKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNjEsNiArODEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fYXBwQ2FjaGVIb3N0SUQoMCkKICAg
ICAgICAgICAgICwgbV9oYXNVc2VyR2VzdHVyZShmYWxzZSkKICAgICAgICAgICAgICwgbV9kb3du
bG9hZFRvRmlsZShmYWxzZSkKKyAgICAgICAgICAgICwgbV90YXJnZXRUeXBlKFRhcmdldElzU3Vi
cmVzb3VyY2UpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03MSw2ICs5Miw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9hcHBDYWNoZUhvc3RJRCgwKQogICAgICAg
ICAgICAgLCBtX2hhc1VzZXJHZXN0dXJlKGZhbHNlKQogICAgICAgICAgICAgLCBtX2Rvd25sb2Fk
VG9GaWxlKGZhbHNlKQorICAgICAgICAgICAgLCBtX3RhcmdldFR5cGUoVGFyZ2V0SXNTdWJyZXNv
dXJjZSkKICAgICAgICAgewogICAgICAgICAgICAgc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsK
ICAgICAgICAgfQpAQCAtODIsNiArMTA0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAgICAgLCBtX2FwcENhY2hlSG9zdElEKDApCiAgICAgICAgICAgICAsIG1faGFzVXNlckdlc3R1
cmUoZmFsc2UpCiAgICAgICAgICAgICAsIG1fZG93bmxvYWRUb0ZpbGUoZmFsc2UpCisgICAgICAg
ICAgICAsIG1fdGFyZ2V0VHlwZShUYXJnZXRJc1N1YnJlc291cmNlKQogICAgICAgICB7CiAgICAg
ICAgIH0KIApAQCAtMTEyLDYgKzEzNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IEV4dHJhRGF0YSogZXh0cmFEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9leHRyYURhdGEuZ2V0KCk7
IH0KICAgICAgICAgdm9pZCBzZXRFeHRyYURhdGEoUGFzc1JlZlB0cjxFeHRyYURhdGE+IGV4dHJh
RGF0YSkgeyBtX2V4dHJhRGF0YSA9IGV4dHJhRGF0YTsgfQogCisgICAgICAgIC8vIFdoYXQgdGhp
cyByZXF1ZXN0IGlzIGZvci4KKyAgICAgICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90YXJnZXRUeXBlOyB9CisgICAgICAgIHZvaWQgc2V0VGFyZ2V0VHlwZShUYXJn
ZXRUeXBlIHR5cGUpIHsgbV90YXJnZXRUeXBlID0gdHlwZTsgfQorCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgZnJpZW5kIGNsYXNzIFJlc291cmNlUmVxdWVzdEJhc2U7CiAKQEAgLTEyNyw2ICsxNTQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9oYXNVc2VyR2VzdHVyZTsK
ICAgICAgICAgYm9vbCBtX2Rvd25sb2FkVG9GaWxlOwogICAgICAgICBSZWZQdHI8RXh0cmFEYXRh
PiBtX2V4dHJhRGF0YTsKKyAgICAgICAgVGFyZ2V0VHlwZSBtX3RhcmdldFR5cGU7CiAgICAgfTsK
IAogICAgIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGEgOiBwdWJsaWMgQ3Jv
c3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhQmFzZSB7CkBAIC0xMzUsNiArMTYzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBpbnQgbV9hcHBDYWNoZUhvc3RJRDsKICAgICAgICAg
Ym9vbCBtX2hhc1VzZXJHZXN0dXJlOwogICAgICAgICBib29sIG1fZG93bmxvYWRUb0ZpbGU7Cisg
ICAgICAgIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0VHlwZSBtX3RhcmdldFR5cGU7CiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAppbmRleCA1ZjZjZWJlYjhm
ZDdmNTZkMDdmZGQ5MjMxOTBiM2RkNDdiMTY5NDQ4Li4zY2JjODYzZGZiYTNiMDcwZmE1ZGNhYmVm
MTFkZGUxMDNkNGIyMDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1
bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcApAQCAtMjg4LDcgKzI4OCwxMCBAQCB2
b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZChjb25zdCBLVVJMJiB1cmwpCiAgICAg
bV93b3JrZXItPnNldFBlbmRpbmdBY3Rpdml0eShtX3dvcmtlci5nZXQoKSk7CiAKICAgICAvLyBN
YXJrIHRoaXMgb2JqZWN0IGFzIGFjdGl2ZSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBsb2FkLgot
ICAgIG1fc2NyaXB0TG9hZGVyID0gV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGUoUmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6VGFyZ2V0SXNTaGFyZWRXb3JrZXIpOworICAgIG1fc2NyaXB0TG9hZGVyID0g
V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGUoKTsKKyNpZiBIQVZFKFJFU09VUkNFUkVRVUVTVF9U
QVJHRVRUWVBFKQorICAgIG1fc2NyaXB0TG9hZGVyLT5zZXRUYXJnZXRUeXBlKFJlc291cmNlUmVx
dWVzdDo6VGFyZ2V0SXNTaGFyZWRXb3JrZXIpOworI2VuZGlmCiAgICAgbV9zY3JpcHRMb2FkZXIt
PmxvYWRBc3luY2hyb25vdXNseShtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB1
cmwsIERlbnlDcm9zc09yaWdpblJlcXVlc3RzLCB0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXIuY3BwCmluZGV4IDcyNGY2NDE0OGM1NWE3ZTQxYWNkNDQ2MWRjZWY3YmQzZjNmOTcwYjIu
LjgzZWQ4YjdmYWJlOGRkM2E2Mjk1ZWZjNDE0OWZlZDQwODU5ZDRkMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5jcHAKQEAgLTY3LDcgKzY3LDEwIEBAIFBhc3NSZWZQdHI8V29ya2VyPiBXb3Jr
ZXI6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
CiAgICAgLy8gVGhlIHdvcmtlciBjb250ZXh0IGRvZXMgbm90IGV4aXN0IHdoaWxlIGxvYWRpbmcs
IHNvIHdlIG11c3QgZW5zdXJlIHRoYXQgdGhlIHdvcmtlciBvYmplY3QgaXMgbm90IGNvbGxlY3Rl
ZCwgbm9yIGFyZSBpdHMgZXZlbnQgbGlzdGVuZXJzLgogICAgIHdvcmtlci0+c2V0UGVuZGluZ0Fj
dGl2aXR5KHdvcmtlci5nZXQoKSk7CiAKLSAgICB3b3JrZXItPm1fc2NyaXB0TG9hZGVyID0gV29y
a2VyU2NyaXB0TG9hZGVyOjpjcmVhdGUoUmVzb3VyY2VSZXF1ZXN0QmFzZTo6VGFyZ2V0SXNXb3Jr
ZXIpOworICAgIHdvcmtlci0+bV9zY3JpcHRMb2FkZXIgPSBXb3JrZXJTY3JpcHRMb2FkZXI6OmNy
ZWF0ZSgpOworI2lmIEhBVkUoUkVTT1VSQ0VSRVFVRVNUX1RBUkdFVFRZUEUpCisgICAgd29ya2Vy
LT5tX3NjcmlwdExvYWRlci0+c2V0VGFyZ2V0VHlwZShSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElz
V29ya2VyKTsKKyNlbmRpZgogICAgIHdvcmtlci0+bV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hy
b25vdXNseShjb250ZXh0LCBzY3JpcHRVUkwsIERlbnlDcm9zc09yaWdpblJlcXVlc3RzLCB3b3Jr
ZXIuZ2V0KCkpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXb3Jr
ZXIoY29udGV4dCwgd29ya2VyLT5hc0lEKCksIHNjcmlwdFVSTC5zdHJpbmcoKSwgZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKaW5kZXggNThlYjg1NDVjMzNl
ZDJhMzQ2MjA4YTY4YWZiMmIyMjQ2YTY3YmUzMi4uZDc5NzEzNmEzZTdiZWE2MjRkZTM0N2IwZjY4
OWFiMDJiMTM4MDEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3Bw
CkBAIC0yNDUsNyArMjQ1LDEwIEBAIHZvaWQgV29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgVmVjdG9y
PEtVUkw+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBjb21wbGV0ZWRVUkxzLmVuZCgpOwogCiAgICAg
Zm9yIChWZWN0b3I8S1VSTD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29tcGxldGVkVVJMcy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgUmVmUHRyPFdvcmtlclNjcmlwdExvYWRl
cj4gc2NyaXB0TG9hZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKFJlc291cmNlUmVxdWVz
dEJhc2U6OlRhcmdldElzU2NyaXB0KSk7CisgICAgICAgIFJlZlB0cjxXb3JrZXJTY3JpcHRMb2Fk
ZXI+IHNjcmlwdExvYWRlcihXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZSgpKTsKKyNpZiBIQVZF
KFJFU09VUkNFUkVRVUVTVF9UQVJHRVRUWVBFKQorICAgICAgICBzY3JpcHRMb2FkZXItPnNldFRh
cmdldFR5cGUoUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1NjcmlwdCk7CisjZW5kaWYKICAgICAg
ICAgc2NyaXB0TG9hZGVyLT5sb2FkU3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksICppdCwgQWxsb3dDcm9zc09yaWdpblJlcXVlc3RzKTsKIAogICAgICAgICAvLyBJZiB0aGUg
ZmV0Y2hpbmcgYXR0ZW1wdCBmYWlsZWQsIHRocm93IGEgTkVUV09SS19FUlIgZXhjZXB0aW9uIGFu
ZCBhYm9ydCBhbGwgdGhlc2Ugc3RlcHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5jcHAKaW5kZXggMTNiZjQyNzM1MmMyZDQ4YTg1MDEyNDMzMGVhYzZlNGEx
YmE2NDg1OS4uZTI4ODE0ZTc4ODA5YjI3YjZjZDU2Y2YyN2U5ZjQ2MTRmMWJjM2FkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMzIsNyAr
MzIsNiBAQAogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgogCiAjaW5jbHVkZSAiQ3Jv
c3NUaHJlYWRUYXNrLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNDcsMTIgKzQ2LDE0IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotV29ya2VyU2NyaXB0TG9hZGVyOjpXb3JrZXJTY3JpcHRMb2FkZXIo
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6VGFyZ2V0VHlwZSB0YXJnZXRUeXBlKQorV29ya2VyU2NyaXB0
TG9hZGVyOjpXb3JrZXJTY3JpcHRMb2FkZXIoKQogICAgIDogbV9jbGllbnQoMCkKICAgICAsIG1f
ZmFpbGVkKGZhbHNlKQogICAgICwgbV9pZGVudGlmaWVyKDApCi0gICAgLCBtX3RhcmdldFR5cGUo
dGFyZ2V0VHlwZSkKICAgICAsIG1fZmluaXNoaW5nKGZhbHNlKQorI2lmIEhBVkUoUkVTT1VSQ0VS
RVFVRVNUX1RBUkdFVFRZUEUpCisgICAgLCBtX3RhcmdldFR5cGUoUmVzb3VyY2VSZXF1ZXN0OjpU
YXJnZXRJc1dvcmtlcikKKyNlbmRpZgogewogfQogCkBAIC0xMDgsNyArMTA5LDkgQEAgUGFzc093
blB0cjxSZXNvdXJjZVJlcXVlc3Q+IFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlUmVzb3VyY2VS
ZXF1ZXN0KCkKIHsKICAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRQ
dHIobmV3IFJlc291cmNlUmVxdWVzdChtX3VybCkpOwogICAgIHJlcXVlc3QtPnNldEhUVFBNZXRo
b2QoIkdFVCIpOworI2lmIEhBVkUoUkVTT1VSQ0VSRVFVRVNUX1RBUkdFVFRZUEUpCiAgICAgcmVx
dWVzdC0+c2V0VGFyZ2V0VHlwZShtX3RhcmdldFR5cGUpOworI2VuZGlmCiAgICAgcmV0dXJuIHJl
cXVlc3QucmVsZWFzZSgpOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyLmgKaW5kZXggYmVjOGE2YTI2MTNjMDlmOTM2MTZiZmQzMzVmMmU2NDIyNzUy
OGM3NC4uODk4NTY0YWJhZDRhMWY1MmY2YTRhZGY1NjI5MjU1ZmNiMGY5ZmJmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCkBAIC0zMSw3ICszMSw3IEBA
CiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKICNpbmNsdWRlICJLVVJMLmgiCi0jaW5jbHVkZSAiUmVz
b3VyY2VSZXF1ZXN0QmFzZS5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1
ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
LmgiCiAKQEAgLTUwLDkgKzUwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFdv
cmtlclNjcmlwdExvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclNjcmlwdExvYWRlcj4s
IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXJT
Y3JpcHRMb2FkZXI+IGNyZWF0ZShSZXNvdXJjZVJlcXVlc3RCYXNlOjpUYXJnZXRUeXBlIHRhcmdl
dFR5cGUpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdvcmtlclNjcmlwdExvYWRlcj4gY3Jl
YXRlKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXb3JrZXJT
Y3JpcHRMb2FkZXIodGFyZ2V0VHlwZSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXb3JrZXJTY3JpcHRMb2FkZXIoKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGxvYWRT
eW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBLVVJMJiwgQ3Jvc3NP
cmlnaW5SZXF1ZXN0UG9saWN5KTsKQEAgLTczLDEwICs3MywxNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKHVuc2ln
bmVkIGxvbmcgLyppZGVudGlmaWVyKi8sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAorI2lm
IEhBVkUoUkVTT1VSQ0VSRVFVRVNUX1RBUkdFVFRZUEUpCisgICAgICAgIHZvaWQgc2V0VGFyZ2V0
VHlwZShSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldFR5cGUgdGFyZ2V0VHlwZSkgeyBtX3RhcmdldFR5
cGUgPSB0YXJnZXRUeXBlOyB9CisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8V29ya2VyU2NyaXB0TG9hZGVyPjsKIAotICAgICAgICBl
eHBsaWNpdCBXb3JrZXJTY3JpcHRMb2FkZXIoUmVzb3VyY2VSZXF1ZXN0QmFzZTo6VGFyZ2V0VHlw
ZSk7CisgICAgICAgIFdvcmtlclNjcmlwdExvYWRlcigpOwogICAgICAgICB+V29ya2VyU2NyaXB0
TG9hZGVyKCk7CiAKICAgICAgICAgUGFzc093blB0cjxSZXNvdXJjZVJlcXVlc3Q+IGNyZWF0ZVJl
c291cmNlUmVxdWVzdCgpOwpAQCAtOTEsOCArOTUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBLVVJMIG1fcmVzcG9uc2VVUkw7CiAgICAgICAgIGJvb2wgbV9mYWlsZWQ7CiAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyOwotICAgICAgICBSZXNvdXJjZVJlcXVlc3RC
YXNlOjpUYXJnZXRUeXBlIG1fdGFyZ2V0VHlwZTsKICAgICAgICAgYm9vbCBtX2ZpbmlzaGluZzsK
KyNpZiBIQVZFKFJFU09VUkNFUkVRVUVTVF9UQVJHRVRUWVBFKQorICAgICAgICBSZXNvdXJjZVJl
cXVlc3Q6OlRhcmdldFR5cGUgbV90YXJnZXRUeXBlOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkMTY4YWU5ZTgz
NTBhZWRiNmUwZjZlMDk5YjQzZTgzZjQ2NjdhNDI3Li45YzZjNzU5ZTQ3MDNmMzNjYjA1Njk5NGRl
YzBiYmJiM2M4MDMyNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDExLTA4LTA0ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEdldCByaWQgb2YgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6bV90YXJnZXRUeXBlLiBN
b3ZlIGl0IHRvIGNocm9taXVtJ3MgUmVzb3VyY2VSZXF1ZXN0LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg0ODMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6U2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyKToKKwogMjAxMS0wOC0wMyAgS2VudGFybyBIYXJhICA8aGFyYWtl
bkBnb29nbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBFdmVudFNlbmRlci5zY2FsZVBhZ2VC
eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TaGFyZWRXb3JrZXJS
ZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1NoYXJlZFdvcmtlclJl
cG9zaXRvcnkuY3BwCmluZGV4IGUyNDIxYWVlNzIzNzg3YTM0YjY3OWQ4MDQ3ZjA1MTk0ZWFlOTQ0
NjQuLjUyYzIyYmU2ZWNiMzBlNjE0NjAzMTJhZDhlZWVkZDllM2RlYjM1NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3Bw
CkBAIC03MCwxMCArNzAsMTEgQEAgcHVibGljOgogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAg
ICAgICAsIG1fd2ViV29ya2VyKHdlYldvcmtlcikKICAgICAgICAgLCBtX3BvcnQocG9ydCkKLSAg
ICAgICAgLCBtX3NjcmlwdExvYWRlcihXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZShSZXNvdXJj
ZVJlcXVlc3RCYXNlOjpUYXJnZXRJc1NoYXJlZFdvcmtlcikpCisgICAgICAgICwgbV9zY3JpcHRM
b2FkZXIoV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGUoKSkKICAgICAgICAgLCBtX2xvYWRpbmco
ZmFsc2UpCiAgICAgICAgICwgbV9yZXNwb25zZUFwcENhY2hlSUQoMCkKICAgICB7CisgICAgICAg
IG1fc2NyaXB0TG9hZGVyLT5zZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNT
aGFyZWRXb3JrZXIpOwogICAgIH0KIAogICAgIH5TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102947</attachid>
            <date>2011-08-04 10:59:35 -0700</date>
            <delta_ts>2011-08-04 12:23:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48483-20110804195933.patch</filename>
            <type>text/plain</type>
            <size>22157</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIzNjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MjdmYTFlMGRmYzZkNzQz
OGE3OGEwMzE3OTc4MzM4NmY4NjAwN2Q3Li4wNDdiZTEwY2Y4MjUzOTI3ZmY5MDMwZWJkZjAwNzc4
M2M0ZDIyNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDgtMDQgIEpvY2hl
biBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgR2V0IHJpZCBvZiBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjptX3RhcmdldFR5cGUuIE1vdmUgaXQgdG8gY2hyb21pdW0ncyBS
ZXNvdXJjZVJlcXVlc3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODQ4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogbG9hZGVyL1BpbmdMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGluZ0xv
YWRlcjo6bG9hZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6OnNlbmRQaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6OnJlcG9ydENvbnRlbnRTZWN1cml0eVBv
bGljeVZpb2xhdGlvbik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmxvYWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViU3JjU3RhcnQpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3RCYXNlOjphZG9wdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3RCYXNlOjpjb3B5RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNl
OjpSZXNvdXJjZVJlcXVlc3RCYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nocm9t
aXVtL1Jlc291cmNlUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3Q6OmRvUGxhdGZvcm1Db3B5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3Q6OmRvUGxhdGZvcm1BZG9wdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1
bS9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6
UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6dGFy
Z2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnNldFRhcmdldFR5
cGUpOgorICAgICAgICAqIHdvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKToKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExv
YWRlcjo6V29ya2VyU2NyaXB0TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlw
dExvYWRlcjo6Y3JlYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpzZXRUYXJnZXRU
eXBlKToKKwogMjAxMS0wOC0wNCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVuYW1lIHNvdXJjZUlkIC0+IHNjcmlwdElkIGlu
IHRoZSBwcm90b2NvbCBhbmQgdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdM
b2FkZXIuY3BwCmluZGV4IGU1Y2RiMDEzMTZjOGIzYThlMmE2NTI5ZWQwNWRhOTgzMWEyY2YyYjMu
LjBlNTM3ODQ3ZTQxN2RjMTZjYzkyNTFlNmYxNzkxMzFiY2I1NDRiZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUGluZ0xvYWRlci5jcHAKQEAgLTU1LDcgKzU1LDkgQEAgdm9pZCBQaW5nTG9hZGVyOjps
b2FkSW1hZ2UoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgfQogCiAgICAgUmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsKTsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICBy
ZXF1ZXN0LnNldFRhcmdldFR5cGUoUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0ltYWdlKTsKKyNl
bmRpZgogICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJDYWNoZS1Db250cm9sIiwgIm1h
eC1hZ2U9MCIpOwogICAgIGlmICghU2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcihy
ZXF1ZXN0LnVybCgpLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSkpCiAgICAg
ICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZl
cnJlcigpKTsKQEAgLTcxLDcgKzczLDkgQEAgdm9pZCBQaW5nTG9hZGVyOjpsb2FkSW1hZ2UoRnJh
bWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiB2b2lkIFBpbmdMb2FkZXI6OnNlbmRQaW5nKEZy
YW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcGluZ1VSTCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25V
UkwpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocGluZ1VSTCk7CisjaWYgUExBVEZP
Uk0oQ0hST01JVU0pCiAgICAgcmVxdWVzdC5zZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdDo6
VGFyZ2V0SXNTdWJyZXNvdXJjZSk7CisjZW5kaWYKICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2Qo
IlBPU1QiKTsKICAgICByZXF1ZXN0LnNldEhUVFBDb250ZW50VHlwZSgidGV4dC9waW5nIik7CiAg
ICAgcmVxdWVzdC5zZXRIVFRQQm9keShGb3JtRGF0YTo6Y3JlYXRlKCJQSU5HIikpOwpAQCAtOTcs
NyArMTAxLDkgQEAgdm9pZCBQaW5nTG9hZGVyOjpzZW5kUGluZyhGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIHBpbmdVUkwsIGNvbnN0IEtVUkwmIGRlc3RpbmEKIHZvaWQgUGluZ0xvYWRlcjo6cmVw
b3J0Q29udGVudFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VS
TCYgcmVwb3J0VVJMLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiByZXBvcnQpCiB7CiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QocmVwb3J0VVJMKTsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKICAg
ICByZXF1ZXN0LnNldFRhcmdldFR5cGUoUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N1YnJlc291
cmNlKTsKKyNlbmRpZgogICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOwogICAgIHJl
cXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29k
ZWQiKTsKICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KHJlcG9ydCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCmluZGV4IDIz
ODc3MjgzYjIzZjc3NDE3OGY5OTBkZmQzNDIyYTQxNjUxMDI1YTcuLjQyZDc3MDA0ZTA1YzkwNDky
NmE1NTM0ZWMxMzg3N2Q5MmRhMGFmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCkBAIC00NCw3ICs0NCw4IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAg
CisKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKIHN0YXRpYyBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdl
dFR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlVG9UYXJnZXRUeXBlKENhY2hlZFJlc291cmNlOjpUeXBl
IHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC03MSw2ICs3Miw3IEBAIHN0YXRpYyBS
ZXNvdXJjZVJlcXVlc3Q6OlRhcmdldFR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlVG9UYXJnZXRUeXBl
KENhY2hlZFJlc291cmNlCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFJl
c291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZTsKIH0KKyNlbmRpZgogCiBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3Q6OkNhY2hlZFJlc291cmNlUmVxdWVzdChDYWNoZWRSZXNvdXJjZUxvYWRl
ciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgYm9vbCBp
bmNyZW1lbnRhbCkKICAgICA6IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIoY2FjaGVkUmVzb3VyY2VM
b2FkZXIpCkBAIC05MCw3ICs5Miw5IEBAIFBhc3NPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0
PiBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkCiAgICAgT3du
UHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0UHRyKG5ldyBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIHJlc291cmNlLCBpbmNyZW1lbnRh
bCkpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCA9IHJlc291cmNlLT5y
ZXNvdXJjZVJlcXVlc3QoKTsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICByZXNvdXJjZVJl
cXVlc3Quc2V0VGFyZ2V0VHlwZShjYWNoZWRSZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUocmVzb3Vy
Y2UtPnR5cGUoKSkpOworI2VuZGlmCiAKICAgICBpZiAoIXJlc291cmNlLT5hY2NlcHQoKS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRIVFRQQWNjZXB0KHJlc291cmNlLT5h
Y2NlcHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmlu
ZGV4IGU0ODk5OGZmNmM0MDhiMTUwYTM2YjVkNjc4OWFkMzJiMjY2MWFhOTguLjhmM2ZkNmQ5OWEz
MjliZDFiMWJlZDlkZWI1Y2FmYzZhNjBjOWQzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC00MTIsNyArNDEyLDYgQEAgc3RhdGljIGJvb2wgd2Vi
S2l0V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgS1VSTCB1cmwgPSBLVVJMKEtV
UkwoKSwgcHJpdi0+dXJpKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7Ci0g
ICAgcmVxdWVzdC5zZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdEJhc2U6OlRhcmdldElzTWVk
aWEpOwogICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVzKHRydWUpOwogCiAgICAgTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggZmU4Njk5Mzk5ZjRkNzk1
MzA1YjE4NjQ2ZTMzYzAwNmQxZjBmNjczNi4uMDFkOTJjMDcyNTA3ZTNlODMxNmNlZWFlNDk5ZjRl
OThmMjNmYjcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC01Myw3ICs1Myw2IEBAIFBhc3NPd25QdHI8
UmVzb3VyY2VSZXF1ZXN0PiBSZXNvdXJjZVJlcXVlc3RCYXNlOjphZG9wdChQYXNzT3duUHRyPENy
b3NzVGhyZWFkUmVzCiAgICAgcmVxdWVzdC0+c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoZGF0YS0+
bV9maXJzdFBhcnR5Rm9yQ29va2llcyk7CiAgICAgcmVxdWVzdC0+c2V0SFRUUE1ldGhvZChkYXRh
LT5tX2h0dHBNZXRob2QpOwogICAgIHJlcXVlc3QtPnNldFByaW9yaXR5KGRhdGEtPm1fcHJpb3Jp
dHkpOwotICAgIHJlcXVlc3QtPnNldFRhcmdldFR5cGUoZGF0YS0+bV90YXJnZXRUeXBlKTsKIAog
ICAgIHJlcXVlc3QtPnVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOwogICAgIHJlcXVlc3QtPm1faHR0
cEhlYWRlckZpZWxkcy5hZG9wdChkYXRhLT5tX2h0dHBIZWFkZXJzLnJlbGVhc2UoKSk7CkBAIC04
Nyw3ICs4Niw2IEBAIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjpjb3B5RGF0YSgpIGNvbnN0CiAgICAgZGF0YS0+bV9odHRwTWV0
aG9kID0gaHR0cE1ldGhvZCgpLmNyb3NzVGhyZWFkU3RyaW5nKCk7CiAgICAgZGF0YS0+bV9odHRw
SGVhZGVycyA9IGh0dHBIZWFkZXJGaWVsZHMoKS5jb3B5RGF0YSgpOwogICAgIGRhdGEtPm1fcHJp
b3JpdHkgPSBwcmlvcml0eSgpOwotICAgIGRhdGEtPm1fdGFyZ2V0VHlwZSA9IG1fdGFyZ2V0VHlw
ZTsKIAogICAgIGRhdGEtPm1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxi
YWNrQXJyYXkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0
aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUoKSk7CiAgICAgc2l6ZV90IGVuY29kaW5nQXJy
YXlTaXplID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eS5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5oCmluZGV4IDRjN2FiY2I1ZjNkYWZjODMxMmQ2NWVjNmRiMDVhMTBj
MmMxMTNkN2MuLjRiMjRkYzM2NjJhYWJkNjZlNjAxOWQ1ODJjNWIxYzU0MDcwODc2MjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5oCkBAIC01MSwyNCArNTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0QmFzZSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKLSAgICAgICAgLy8gVGhlIHR5cGUgb2YgdGhpcyBSZXNvdXJjZVJlcXVlc3Qs
IGJhc2VkIG9uIGhvdyB0aGUgcmVzb3VyY2Ugd2lsbCBiZSB1c2VkLgotICAgICAgICBlbnVtIFRh
cmdldFR5cGUgewotICAgICAgICAgICAgVGFyZ2V0SXNNYWluRnJhbWUsCi0gICAgICAgICAgICBU
YXJnZXRJc1N1YmZyYW1lLAotICAgICAgICAgICAgVGFyZ2V0SXNTdWJyZXNvdXJjZSwgIC8vIFJl
c291cmNlIGlzIGEgZ2VuZXJpYyBzdWJyZXNvdXJjZS4gIChHZW5lcmFsbHkgYSBzcGVjaWZpYyB0
eXBlIHNob3VsZCBiZSBzcGVjaWZpZWQpCi0gICAgICAgICAgICBUYXJnZXRJc1N0eWxlU2hlZXQs
Ci0gICAgICAgICAgICBUYXJnZXRJc1NjcmlwdCwKLSAgICAgICAgICAgIFRhcmdldElzRm9udFJl
c291cmNlLAotICAgICAgICAgICAgVGFyZ2V0SXNJbWFnZSwKLSAgICAgICAgICAgIFRhcmdldElz
T2JqZWN0LAotICAgICAgICAgICAgVGFyZ2V0SXNNZWRpYSwKLSAgICAgICAgICAgIFRhcmdldElz
V29ya2VyLAotICAgICAgICAgICAgVGFyZ2V0SXNTaGFyZWRXb3JrZXIsCi0gICAgICAgICAgICBU
YXJnZXRJc1ByZWZldGNoLAotICAgICAgICAgICAgVGFyZ2V0SXNQcmVyZW5kZXIsCi0gICAgICAg
ICAgICBUYXJnZXRJc0Zhdmljb24sCi0gICAgICAgIH07Ci0KICAgICAgICAgc3RhdGljIFBhc3NP
d25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBhZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXF1ZXN0RGF0YT4pOwogCiAgICAgICAgIC8vIEdldHMgYSBjb3B5IG9mIHRoZSBkYXRhIHN1
aXRhYmxlIGZvciBwYXNzaW5nIHRvIGFub3RoZXIgdGhyZWFkLgpAQCAtMTQ3LDExICsxMjksNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgcmVwb3J0UmF3SGVhZGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVwb3J0UmF3SGVhZGVyczsgfQogICAgICAgICB2b2lkIHNldFJlcG9y
dFJhd0hlYWRlcnMoYm9vbCByZXBvcnRSYXdIZWFkZXJzKSB7IG1fcmVwb3J0UmF3SGVhZGVycyA9
IHJlcG9ydFJhd0hlYWRlcnM7IH0KIAotICAgICAgICAvLyBXaGF0IHRoaXMgcmVxdWVzdCBpcyBm
b3IuCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtb3ZlZCBvdXQgb2YgUmVzb3Vy
Y2VSZXF1ZXN0QmFzZSwgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
ODQ4Mz4uCi0gICAgICAgIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGFyZ2V0VHlwZTsgfQotICAgICAgICB2b2lkIHNldFRhcmdldFR5cGUoVGFyZ2V0VHlwZSB0eXBl
KSB7IG1fdGFyZ2V0VHlwZSA9IHR5cGU7IH0KLQogICAgICAgICBzdGF0aWMgZG91YmxlIGRlZmF1
bHRUaW1lb3V0SW50ZXJ2YWwoKTsgLy8gTWF5IHJldHVybiAwIHdoZW4gdXNpbmcgcGxhdGZvcm0g
ZGVmYXVsdC4KICAgICAgICAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbChk
b3VibGUpOwogCkBAIC0xNjYsNyArMTQzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAgICAgLCBtX3JlcG9ydExvYWRUaW1pbmcoZmFsc2UpCiAgICAgICAgICAgICAsIG1fcmVwb3J0
UmF3SGVhZGVycyhmYWxzZSkKICAgICAgICAgICAgICwgbV9wcmlvcml0eShSZXNvdXJjZUxvYWRQ
cmlvcml0eUxvdykKLSAgICAgICAgICAgICwgbV90YXJnZXRUeXBlKFRhcmdldElzU3VicmVzb3Vy
Y2UpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC0xODIsNyArMTU4LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX3JlcG9ydExvYWRUaW1pbmcoZmFsc2UpCiAgICAg
ICAgICAgICAsIG1fcmVwb3J0UmF3SGVhZGVycyhmYWxzZSkKICAgICAgICAgICAgICwgbV9wcmlv
cml0eShSZXNvdXJjZUxvYWRQcmlvcml0eUxvdykKLSAgICAgICAgICAgICwgbV90YXJnZXRUeXBl
KFRhcmdldElzU3VicmVzb3VyY2UpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC0yMDgsNyAr
MTgzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fcmVwb3J0TG9hZFRp
bWluZzsKICAgICAgICAgYm9vbCBtX3JlcG9ydFJhd0hlYWRlcnM7CiAgICAgICAgIFJlc291cmNl
TG9hZFByaW9yaXR5IG1fcHJpb3JpdHk7Ci0gICAgICAgIFRhcmdldFR5cGUgbV90YXJnZXRUeXBl
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhc1Jlc291
cmNlUmVxdWVzdCgpIGNvbnN0OwpAQCAtMjM3LDcgKzIxMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBtX2h0dHBCb2R5OwogICAgICAgICBib29sIG1f
YWxsb3dDb29raWVzOwogICAgICAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBtX3ByaW9yaXR5Owot
ICAgICAgICBSZXNvdXJjZVJlcXVlc3RCYXNlOjpUYXJnZXRUeXBlIG1fdGFyZ2V0VHlwZTsKICAg
ICB9OwogICAgIAogICAgIHVuc2lnbmVkIGluaXRpYWxpemVNYXhpbXVtSFRUUENvbm5lY3Rpb25D
b3VudFBlckhvc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2hyb21pdW0vUmVzb3VyY2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXF1ZXN0LmNwcAppbmRleCA1MTljNjNmNGMzNzA1
MzcyN2QzMzc0NjVlN2YzYTkwYjYzZTIyMTYwLi4yNTQxZGU3Njk3ODYwMzNkNDgyZTdmNjM0Njlj
MGEwZjVlYzExZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2Nocm9taXVtL1Jlc291cmNlUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZVJlcXVlc3QuY3BwCkBAIC00NCw2ICs0NCw3IEBA
IFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBSZXNvdXJjZVJlcXVl
c3Q6OmRvUGxhdGZvcm1Db3B5RGF0YShQCiAgICAgZGF0YS0+bV9hcHBDYWNoZUhvc3RJRCA9IG1f
YXBwQ2FjaGVIb3N0SUQ7CiAgICAgZGF0YS0+bV9oYXNVc2VyR2VzdHVyZSA9IG1faGFzVXNlckdl
c3R1cmU7CiAgICAgZGF0YS0+bV9kb3dubG9hZFRvRmlsZSA9IG1fZG93bmxvYWRUb0ZpbGU7Cisg
ICAgZGF0YS0+bV90YXJnZXRUeXBlID0gbV90YXJnZXRUeXBlOwogICAgIHJldHVybiBkYXRhOwog
fQogCkBAIC01NCw2ICs1NSw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1BsYXRmb3JtQWRv
cHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+CiAgICAgbV9hcHBD
YWNoZUhvc3RJRCA9IGRhdGEtPm1fYXBwQ2FjaGVIb3N0SUQ7CiAgICAgbV9oYXNVc2VyR2VzdHVy
ZSA9IGRhdGEtPm1faGFzVXNlckdlc3R1cmU7CiAgICAgbV9kb3dubG9hZFRvRmlsZSA9IGRhdGEt
Pm1fZG93bmxvYWRUb0ZpbGU7CisgICAgbV90YXJnZXRUeXBlID0gZGF0YS0+bV90YXJnZXRUeXBl
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCBj
OTdlNTRiMWEyYjFkZmEzYWQyNTBhNzBiYWE3OWE5NTNlMGU1NGVjLi42YjU3OGIwYzIzOWM5NTdl
YjkzYWE1NWVhNTU4ZTRmNTcyMGFjMDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTM5LDYg
KzM5LDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFJlc291cmNlUmVxdWVz
dCA6IHB1YmxpYyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKICAgICBwdWJsaWM6CisgICAgICAgIC8v
IFRoZSB0eXBlIG9mIHRoaXMgUmVzb3VyY2VSZXF1ZXN0LCBiYXNlZCBvbiBob3cgdGhlIHJlc291
cmNlIHdpbGwgYmUgdXNlZC4KKyAgICAgICAgZW51bSBUYXJnZXRUeXBlIHsKKyAgICAgICAgICAg
IFRhcmdldElzTWFpbkZyYW1lLAorICAgICAgICAgICAgVGFyZ2V0SXNTdWJmcmFtZSwKKyAgICAg
ICAgICAgIFRhcmdldElzU3VicmVzb3VyY2UsIC8vIFJlc291cmNlIGlzIGEgZ2VuZXJpYyBzdWJy
ZXNvdXJjZS4gKEdlbmVyYWxseSBhIHNwZWNpZmljIHR5cGUgc2hvdWxkIGJlIHNwZWNpZmllZCkK
KyAgICAgICAgICAgIFRhcmdldElzU3R5bGVTaGVldCwKKyAgICAgICAgICAgIFRhcmdldElzU2Ny
aXB0LAorICAgICAgICAgICAgVGFyZ2V0SXNGb250UmVzb3VyY2UsCisgICAgICAgICAgICBUYXJn
ZXRJc0ltYWdlLAorICAgICAgICAgICAgVGFyZ2V0SXNPYmplY3QsCisgICAgICAgICAgICBUYXJn
ZXRJc01lZGlhLAorICAgICAgICAgICAgVGFyZ2V0SXNXb3JrZXIsCisgICAgICAgICAgICBUYXJn
ZXRJc1NoYXJlZFdvcmtlciwKKyAgICAgICAgICAgIFRhcmdldElzUHJlZmV0Y2gsCisgICAgICAg
ICAgICBUYXJnZXRJc1ByZXJlbmRlciwKKyAgICAgICAgICAgIFRhcmdldElzRmF2aWNvbiwKKyAg
ICAgICAgfTsKKwogICAgICAgICBjbGFzcyBFeHRyYURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxF
eHRyYURhdGE+IHsKICAgICAgICAgcHVibGljOgogICAgICAgICAgICAgdmlydHVhbCB+RXh0cmFE
YXRhKCkgeyB9CkBAIC01MSw2ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
ICAgICwgbV9hcHBDYWNoZUhvc3RJRCgwKQogICAgICAgICAgICAgLCBtX2hhc1VzZXJHZXN0dXJl
KGZhbHNlKQogICAgICAgICAgICAgLCBtX2Rvd25sb2FkVG9GaWxlKGZhbHNlKQorICAgICAgICAg
ICAgLCBtX3RhcmdldFR5cGUoVGFyZ2V0SXNTdWJyZXNvdXJjZSkKICAgICAgICAgewogICAgICAg
ICB9CiAKQEAgLTYxLDYgKzgwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
LCBtX2FwcENhY2hlSG9zdElEKDApCiAgICAgICAgICAgICAsIG1faGFzVXNlckdlc3R1cmUoZmFs
c2UpCiAgICAgICAgICAgICAsIG1fZG93bmxvYWRUb0ZpbGUoZmFsc2UpCisgICAgICAgICAgICAs
IG1fdGFyZ2V0VHlwZShUYXJnZXRJc1N1YnJlc291cmNlKQogICAgICAgICB7CiAgICAgICAgIH0K
IApAQCAtNzEsNiArOTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1f
YXBwQ2FjaGVIb3N0SUQoMCkKICAgICAgICAgICAgICwgbV9oYXNVc2VyR2VzdHVyZShmYWxzZSkK
ICAgICAgICAgICAgICwgbV9kb3dubG9hZFRvRmlsZShmYWxzZSkKKyAgICAgICAgICAgICwgbV90
YXJnZXRUeXBlKFRhcmdldElzU3VicmVzb3VyY2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNl
dEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgICAgIH0KQEAgLTgyLDYgKzEwMyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9hcHBDYWNoZUhvc3RJRCgwKQogICAg
ICAgICAgICAgLCBtX2hhc1VzZXJHZXN0dXJlKGZhbHNlKQogICAgICAgICAgICAgLCBtX2Rvd25s
b2FkVG9GaWxlKGZhbHNlKQorICAgICAgICAgICAgLCBtX3RhcmdldFR5cGUoVGFyZ2V0SXNTdWJy
ZXNvdXJjZSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTExMiw2ICsxMzQsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBFeHRyYURhdGEqIGV4dHJhRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fZXh0cmFEYXRhLmdldCgpOyB9CiAgICAgICAgIHZvaWQgc2V0RXh0cmFEYXRhKFBh
c3NSZWZQdHI8RXh0cmFEYXRhPiBleHRyYURhdGEpIHsgbV9leHRyYURhdGEgPSBleHRyYURhdGE7
IH0KIAorICAgICAgICAvLyBXaGF0IHRoaXMgcmVxdWVzdCBpcyBmb3IuCisgICAgICAgIFRhcmdl
dFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0VHlwZTsgfQorICAgICAg
ICB2b2lkIHNldFRhcmdldFR5cGUoVGFyZ2V0VHlwZSB0eXBlKSB7IG1fdGFyZ2V0VHlwZSA9IHR5
cGU7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlcXVl
c3RCYXNlOwogCkBAIC0xMjcsNiArMTUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBib29sIG1faGFzVXNlckdlc3R1cmU7CiAgICAgICAgIGJvb2wgbV9kb3dubG9hZFRvRmlsZTsK
ICAgICAgICAgUmVmUHRyPEV4dHJhRGF0YT4gbV9leHRyYURhdGE7CisgICAgICAgIFRhcmdldFR5
cGUgbV90YXJnZXRUeXBlOwogICAgIH07CiAKICAgICBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlcXVlc3REYXRhIDogcHVibGljIENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YUJhc2Ug
ewpAQCAtMTM1LDYgKzE2Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50IG1f
YXBwQ2FjaGVIb3N0SUQ7CiAgICAgICAgIGJvb2wgbV9oYXNVc2VyR2VzdHVyZTsKICAgICAgICAg
Ym9vbCBtX2Rvd25sb2FkVG9GaWxlOworICAgICAgICBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldFR5
cGUgbV90YXJnZXRUeXBlOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRv
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3Np
dG9yeS5jcHAKaW5kZXggNWY2Y2ViZWI4ZmQ3ZjU2ZDA3ZmRkOTIzMTkwYjNkZDQ3YjE2OTQ0OC4u
MjNkYTlmZjk1NWI3YzJhOWM0ZDk3ZmYzNzQ1YTBkNDMyM2VmNWVjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5j
cHAKQEAgLTI4OCw3ICsyODgsMTAgQEAgdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Omxv
YWQoY29uc3QgS1VSTCYgdXJsKQogICAgIG1fd29ya2VyLT5zZXRQZW5kaW5nQWN0aXZpdHkobV93
b3JrZXIuZ2V0KCkpOwogCiAgICAgLy8gTWFyayB0aGlzIG9iamVjdCBhcyBhY3RpdmUgZm9yIHRo
ZSBkdXJhdGlvbiBvZiB0aGUgbG9hZC4KLSAgICBtX3NjcmlwdExvYWRlciA9IFdvcmtlclNjcmlw
dExvYWRlcjo6Y3JlYXRlKFJlc291cmNlUmVxdWVzdEJhc2U6OlRhcmdldElzU2hhcmVkV29ya2Vy
KTsKKyAgICBtX3NjcmlwdExvYWRlciA9IFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCk7Cisj
aWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgbV9zY3JpcHRMb2FkZXItPnNldFRhcmdldFR5cGUo
UmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1NoYXJlZFdvcmtlcik7CisjZW5kaWYKICAgICBtX3Nj
cmlwdExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KG1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIHVybCwgRGVueUNyb3NzT3JpZ2luUmVxdWVzdHMsIHRoaXMpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggNzI0ZjY0MTQ4YzU1YTdlNDFhY2Q0NDYxZGNlZjdi
ZDNmM2Y5NzBiMi4uMjM3YjYxMDc3MDlkMDQ4NGFlMGM2MDI0NmFkNzk1YzQxZWI4NzcwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtNjcsNyArNjcsMTAgQEAgUGFzc1JlZlB0cjxX
b3JrZXI+IFdvcmtlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb24KICAgICAvLyBUaGUgd29ya2VyIGNvbnRleHQgZG9lcyBub3QgZXhpc3Qgd2hp
bGUgbG9hZGluZywgc28gd2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgd29ya2VyIG9iamVjdCBpcyBu
b3QgY29sbGVjdGVkLCBub3IgYXJlIGl0cyBldmVudCBsaXN0ZW5lcnMuCiAgICAgd29ya2VyLT5z
ZXRQZW5kaW5nQWN0aXZpdHkod29ya2VyLmdldCgpKTsKIAotICAgIHdvcmtlci0+bV9zY3JpcHRM
b2FkZXIgPSBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZShSZXNvdXJjZVJlcXVlc3RCYXNlOjpU
YXJnZXRJc1dvcmtlcik7CisgICAgd29ya2VyLT5tX3NjcmlwdExvYWRlciA9IFdvcmtlclNjcmlw
dExvYWRlcjo6Y3JlYXRlKCk7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgd29ya2VyLT5t
X3NjcmlwdExvYWRlci0+c2V0VGFyZ2V0VHlwZShSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzV29y
a2VyKTsKKyNlbmRpZgogICAgIHdvcmtlci0+bV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25v
dXNseShjb250ZXh0LCBzY3JpcHRVUkwsIERlbnlDcm9zc09yaWdpblJlcXVlc3RzLCB3b3JrZXIu
Z2V0KCkpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXb3JrZXIo
Y29udGV4dCwgd29ya2VyLT5hc0lEKCksIHNjcmlwdFVSTC5zdHJpbmcoKSwgZmFsc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKaW5kZXggNThlYjg1NDVjMzNlZDJh
MzQ2MjA4YTY4YWZiMmIyMjQ2YTY3YmUzMi4uOTMwYzM2MGVlZGJmOTI4NWFiYjYwNDFmOTZhY2Ux
YjBlZTNiNTNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCkBA
IC0yNDUsNyArMjQ1LDEwIEBAIHZvaWQgV29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdXJscywgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgVmVjdG9yPEtV
Ukw+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBjb21wbGV0ZWRVUkxzLmVuZCgpOwogCiAgICAgZm9y
IChWZWN0b3I8S1VSTD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29tcGxldGVkVVJMcy5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgUmVmUHRyPFdvcmtlclNjcmlwdExvYWRlcj4g
c2NyaXB0TG9hZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKFJlc291cmNlUmVxdWVzdEJh
c2U6OlRhcmdldElzU2NyaXB0KSk7CisgICAgICAgIFJlZlB0cjxXb3JrZXJTY3JpcHRMb2FkZXI+
IHNjcmlwdExvYWRlcihXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZSgpKTsKKyNpZiBQTEFURk9S
TShDSFJPTUlVTSkKKyAgICAgICAgc2NyaXB0TG9hZGVyLT5zZXRUYXJnZXRUeXBlKFJlc291cmNl
UmVxdWVzdDo6VGFyZ2V0SXNTY3JpcHQpOworI2VuZGlmCiAgICAgICAgIHNjcmlwdExvYWRlci0+
bG9hZFN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaXQsIEFsbG93Q3Jv
c3NPcmlnaW5SZXF1ZXN0cyk7CiAKICAgICAgICAgLy8gSWYgdGhlIGZldGNoaW5nIGF0dGVtcHQg
ZmFpbGVkLCB0aHJvdyBhIE5FVFdPUktfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgYWxsIHRoZXNl
IHN0ZXBzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3Bw
CmluZGV4IDEzYmY0MjczNTJjMmQ0OGE4NTAxMjQzMzBlYWM2ZTRhMWJhNjQ4NTkuLjg4YjRjM2Ri
OTc3NzU5ZjQzYjNmNWZhMzUzNTI0MmMyNjRhZjAxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRl
ICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKIAogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgot
I2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKQEAgLTQ3LDEyICs0NiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVdvcmtlclNjcmlwdExvYWRlcjo6V29ya2VyU2NyaXB0TG9hZGVyKFJlc291cmNlUmVxdWVzdEJh
c2U6OlRhcmdldFR5cGUgdGFyZ2V0VHlwZSkKK1dvcmtlclNjcmlwdExvYWRlcjo6V29ya2VyU2Ny
aXB0TG9hZGVyKCkKICAgICA6IG1fY2xpZW50KDApCiAgICAgLCBtX2ZhaWxlZChmYWxzZSkKICAg
ICAsIG1faWRlbnRpZmllcigwKQotICAgICwgbV90YXJnZXRUeXBlKHRhcmdldFR5cGUpCiAgICAg
LCBtX2ZpbmlzaGluZyhmYWxzZSkKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICAsIG1fdGFy
Z2V0VHlwZShSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzV29ya2VyKQorI2VuZGlmCiB7CiB9CiAK
QEAgLTEwOCw3ICsxMDksOSBAQCBQYXNzT3duUHRyPFJlc291cmNlUmVxdWVzdD4gV29ya2VyU2Ny
aXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3QoKQogewogICAgIE93blB0cjxSZXNvdXJj
ZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdFB0cihuZXcgUmVzb3VyY2VSZXF1ZXN0KG1fdXJsKSk7
CiAgICAgcmVxdWVzdC0+c2V0SFRUUE1ldGhvZCgiR0VUIik7CisjaWYgUExBVEZPUk0oQ0hST01J
VU0pCiAgICAgcmVxdWVzdC0+c2V0VGFyZ2V0VHlwZShtX3RhcmdldFR5cGUpOworI2VuZGlmCiAg
ICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggYmVjOGE2YTI2MTNjMDlmOTM2MTZiZmQz
MzVmMmU2NDIyNzUyOGM3NC4uOTVhMTg5N2FkNjcwYjAzMTRiOTEzN2RiOGUxZWVkYjg1MjVhM2I5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCkBAIC0z
MSw3ICszMSw3IEBACiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKICNpbmNsdWRlICJLVVJMLmgiCi0j
aW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dC5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50LmgiCiAKQEAgLTUwLDkgKzUwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIFdvcmtlclNjcmlwdExvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclNj
cmlwdExvYWRlcj4sIHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKICAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXb3JrZXJTY3JpcHRMb2FkZXI+IGNyZWF0ZShSZXNvdXJjZVJlcXVlc3RCYXNlOjpUYXJn
ZXRUeXBlIHRhcmdldFR5cGUpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdvcmtlclNjcmlw
dExvYWRlcj4gY3JlYXRlKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXb3JrZXJTY3JpcHRMb2FkZXIodGFyZ2V0VHlwZSkpOworICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXb3JrZXJTY3JpcHRMb2FkZXIoKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICB2b2lkIGxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBL
VVJMJiwgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KTsKQEAgLTczLDEwICs3MywxNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVj
aygpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2Vs
bGF0aW9uKHVuc2lnbmVkIGxvbmcgLyppZGVudGlmaWVyKi8sIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgICAgICB2b2lkIHNldFRhcmdldFR5
cGUoUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRUeXBlIHRhcmdldFR5cGUpIHsgbV90YXJnZXRUeXBl
ID0gdGFyZ2V0VHlwZTsgfQorI2VuZGlmCisKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQg
Y2xhc3MgV1RGOjpSZWZDb3VudGVkPFdvcmtlclNjcmlwdExvYWRlcj47CiAKLSAgICAgICAgZXhw
bGljaXQgV29ya2VyU2NyaXB0TG9hZGVyKFJlc291cmNlUmVxdWVzdEJhc2U6OlRhcmdldFR5cGUp
OworICAgICAgICBXb3JrZXJTY3JpcHRMb2FkZXIoKTsKICAgICAgICAgfldvcmtlclNjcmlwdExv
YWRlcigpOwogCiAgICAgICAgIFBhc3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBjcmVhdGVSZXNv
dXJjZVJlcXVlc3QoKTsKQEAgLTkxLDggKzk1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgS1VSTCBtX3Jlc3BvbnNlVVJMOwogICAgICAgICBib29sIG1fZmFpbGVkOwogICAgICAg
ICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6VGFyZ2V0VHlwZSBtX3RhcmdldFR5cGU7CiAgICAgICAgIGJvb2wgbV9maW5pc2hpbmc7Cisj
aWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgICAgIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0VHlw
ZSBtX3RhcmdldFR5cGU7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQxNjhhZTllODM1MGFlZGI2ZTBmNmUwOTli
NDNlODNmNDY2N2E0MjcuLjljNmM3NTllNDcwM2YzM2NiMDU2OTk0ZGVjMGJiYmIzYzgwMzI1MDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMDQg
IEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgR2V0IHJp
ZCBvZiBSZXNvdXJjZVJlcXVlc3RCYXNlOjptX3RhcmdldFR5cGUuIE1vdmUgaXQgdG8gY2hyb21p
dW0ncyBSZXNvdXJjZVJlcXVlc3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00ODQ4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXIpOgorCiAyMDExLTA4LTAzICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgSW1wbGVtZW50IEV2ZW50U2VuZGVyLnNjYWxlUGFnZUJ5KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKaW5k
ZXggZTI0MjFhZWU3MjM3ODdhMzRiNjc5ZDgwNDdmMDUxOTRlYWU5NDQ2NC4uNTJjMjJiZTZlY2Iz
MGU2MTQ2MDMxMmFkOGVlZWRkOWUzZGViMzU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKQEAgLTcwLDEwICs3MCwx
MSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV93ZWJXb3Jr
ZXIod2ViV29ya2VyKQogICAgICAgICAsIG1fcG9ydChwb3J0KQotICAgICAgICAsIG1fc2NyaXB0
TG9hZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKFJlc291cmNlUmVxdWVzdEJhc2U6OlRh
cmdldElzU2hhcmVkV29ya2VyKSkKKyAgICAgICAgLCBtX3NjcmlwdExvYWRlcihXb3JrZXJTY3Jp
cHRMb2FkZXI6OmNyZWF0ZSgpKQogICAgICAgICAsIG1fbG9hZGluZyhmYWxzZSkKICAgICAgICAg
LCBtX3Jlc3BvbnNlQXBwQ2FjaGVJRCgwKQogICAgIHsKKyAgICAgICAgbV9zY3JpcHRMb2FkZXIt
PnNldFRhcmdldFR5cGUoUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1NoYXJlZFdvcmtlcik7CiAg
ICAgfQogCiAgICAgflNoYXJlZFdvcmtlclNjcmlwdExvYWRlcigpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>