<?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>65707</bug_id>
          
          <creation_ts>2011-08-04 11:24:24 -0700</creation_ts>
          <short_desc>Chromium Mac: Enable rubber banding when scrolling</short_desc>
          <delta_ts>2011-08-09 12:42:46 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</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>65865</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter>asvitkine</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>mark</cc>
    
    <cc>sail</cc>
    
    <cc>thakis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>446641</commentid>
    <comment_count>0</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-04 11:24:24 -0700</bug_when>
    <thetext>This bug is to track the work to enable rubber banding when scrolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446645</commentid>
    <comment_count>1</comment_count>
      <attachid>102950</attachid>
    <who name="">asvitkine</who>
    <bug_when>2011-08-04 11:37:29 -0700</bug_when>
    <thetext>Created attachment 102950
Patch to enable rubber banding on Mac Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446649</commentid>
    <comment_count>2</comment_count>
      <attachid>102950</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-08-04 11:41:35 -0700</bug_when>
    <thetext>Comment on attachment 102950
Patch to enable rubber banding on Mac Chromium.

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

fishd@ wants to review all CLs that touch the chromium webkit api.

&gt; Source/WebKit/chromium/features.gypi:156
&gt; +	  &apos;ENABLE_RUBBER_BANDING=1&apos;,

indent looks funny

&gt; Source/WebKit/chromium/public/WebInputEvent.h:328
&gt; +    int x;

why not float?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446656</commentid>
    <comment_count>3</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-04 11:49:43 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebKit/chromium/public/WebInputEvent.h:328
&gt; &gt; +    int x;
&gt; 
&gt; why not float?

I&apos;ve used the same types as WebMouseEvent.

Webkit2&apos;s counterpart to this also uses ints, see: Source/WebKit2/Shared/mac/WebEventFactory.mm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446660</commentid>
    <comment_count>4</comment_count>
      <attachid>102950</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-08-04 11:52:35 -0700</bug_when>
    <thetext>Comment on attachment 102950
Patch to enable rubber banding on Mac Chromium.

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

&gt; Source/WebCore/platform/PlatformWheelEvent.h:218
&gt; +#if PLATFORM(MAC) || PLATFORM(CHROMIUM)

Does using PLATFORM(CHROMIUM) mean that this is enabled on Chromium Windows as well? Do we want that? Should we just replace the entire #if statement with #if OS(MAC) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446662</commentid>
    <comment_count>5</comment_count>
      <attachid>102953</attachid>
    <who name="">asvitkine</who>
    <bug_when>2011-08-04 11:53:13 -0700</bug_when>
    <thetext>Created attachment 102953
Patch to enable rubber banding on Mac Chromium (v2)

Fixed indentation in .gypi file. Added links to bug in ChangeLogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446695</commentid>
    <comment_count>6</comment_count>
      <attachid>102960</attachid>
    <who name="">asvitkine</who>
    <bug_when>2011-08-04 12:49:49 -0700</bug_when>
    <thetext>Created attachment 102960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446696</commentid>
    <comment_count>7</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-04 12:51:04 -0700</bug_when>
    <thetext>Updated patch to fix some style problems and changed ifdefs PLATFORM(MAC) || PLATFORM(CHROMIUM) to OS(MAC).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446698</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-04 12:52:02 -0700</bug_when>
    <thetext>Attachment 102960 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebKit/chromium/src/WebInputEventConversion.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446718</commentid>
    <comment_count>9</comment_count>
      <attachid>102960</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-04 13:10:49 -0700</bug_when>
    <thetext>Comment on attachment 102960
Patch

Attachment 102960 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9304594</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446736</commentid>
    <comment_count>10</comment_count>
      <attachid>102968</attachid>
    <who name="">asvitkine</who>
    <bug_when>2011-08-04 13:28:55 -0700</bug_when>
    <thetext>Created attachment 102968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446754</commentid>
    <comment_count>11</comment_count>
      <attachid>102968</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-04 13:54:11 -0700</bug_when>
    <thetext>Comment on attachment 102968
Patch

Attachment 102968 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9317060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446760</commentid>
    <comment_count>12</comment_count>
      <attachid>102968</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-08-04 14:00:58 -0700</bug_when>
    <thetext>Comment on attachment 102968
Patch

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

looks pretty good to me!

&gt; Source/WebKit/chromium/public/WebInputEvent.h:328
&gt; +    int x;

hmm... WebMouseEvent has these fields too.  maybe a WebMouseEvent should extend from WebGestureEvent, or maybe they should share some common base class?  or, maybe this is not worth it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446763</commentid>
    <comment_count>13</comment_count>
      <attachid>102976</attachid>
    <who name="">asvitkine</who>
    <bug_when>2011-08-04 14:02:57 -0700</bug_when>
    <thetext>Created attachment 102976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446768</commentid>
    <comment_count>14</comment_count>
      <attachid>102976</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-04 14:10:36 -0700</bug_when>
    <thetext>Comment on attachment 102976
Patch

Attachment 102976 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9306563</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446782</commentid>
    <comment_count>15</comment_count>
      <attachid>102980</attachid>
    <who name="">asvitkine</who>
    <bug_when>2011-08-04 14:25:16 -0700</bug_when>
    <thetext>Created attachment 102980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446849</commentid>
    <comment_count>16</comment_count>
      <attachid>102980</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-08-04 15:43:22 -0700</bug_when>
    <thetext>Comment on attachment 102980
Patch

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

&gt; Source/WebCore/platform/PlatformWheelEvent.h:76
&gt; +#if OS(DARWIN)

OS(DARWIN) is obviously not right here (and elsewhere).  Darwin is much lower level than mouse wheel events and the like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447183</commentid>
    <comment_count>17</comment_count>
      <attachid>103067</attachid>
    <who name="">asvitkine</who>
    <bug_when>2011-08-05 06:44:35 -0700</bug_when>
    <thetext>Created attachment 103067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447186</commentid>
    <comment_count>18</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-05 06:48:41 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 102980 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102980&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/PlatformWheelEvent.h:76
&gt; &gt; +#if OS(DARWIN)
&gt; 
&gt; OS(DARWIN) is obviously not right here (and elsewhere).  Darwin is much lower level than mouse wheel events and the like.

Changed to PLATFORM(MAC) || (PLATFORM(CHROMIUM) &amp;&amp; OS(DARWIN)) since there&apos;s no OS(MAC).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447404</commentid>
    <comment_count>19</comment_count>
      <attachid>103067</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-05 14:06:10 -0700</bug_when>
    <thetext>Comment on attachment 103067
Patch

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448103</commentid>
    <comment_count>20</comment_count>
      <attachid>103067</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 10:56:53 -0700</bug_when>
    <thetext>Comment on attachment 103067
Patch

Clearing flags on attachment: 103067

Committed r92607: &lt;http://trac.webkit.org/changeset/92607&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448104</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 10:56:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448152</commentid>
    <comment_count>22</comment_count>
      <attachid>103273</attachid>
    <who name="">asvitkine</who>
    <bug_when>2011-08-08 12:03:19 -0700</bug_when>
    <thetext>Created attachment 103273
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448169</commentid>
    <comment_count>23</comment_count>
      <attachid>103275</attachid>
    <who name="">asvitkine</who>
    <bug_when>2011-08-08 12:22:34 -0700</bug_when>
    <thetext>Created attachment 103275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448170</commentid>
    <comment_count>24</comment_count>
      <attachid>103275</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-08 12:23:33 -0700</bug_when>
    <thetext>Comment on attachment 103275
Patch

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

&gt; Source/WebKit/chromium/src/mac/WebInputEventFactory.mm:37
&gt; +#if !defined(MAC_OS_X_VERSION_10_7) || (MAC_OS_X_VERSION_MAX_ALLOWED &lt; MAC_OS_X_VERSION_10_7)

Shouldn&apos;t this be BUILDING_ON_LEOPARD, BUILDING_ON_SNOW_LEOPARD, et al. as defined in Platform.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448172</commentid>
    <comment_count>25</comment_count>
      <attachid>103275</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-08-08 12:25:50 -0700</bug_when>
    <thetext>Comment on attachment 103275
Patch

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

&gt;&gt; Source/WebKit/chromium/src/mac/WebInputEventFactory.mm:37
&gt;&gt; +#if !defined(MAC_OS_X_VERSION_10_7) || (MAC_OS_X_VERSION_MAX_ALLOWED &lt; MAC_OS_X_VERSION_10_7)
&gt; 
&gt; Shouldn&apos;t this be BUILDING_ON_LEOPARD, BUILDING_ON_SNOW_LEOPARD, et al. as defined in Platform.h?

I think we did that back when 10.7 wasn&apos;t out yet. Now that 10.7 is out it&apos;s probably better to check for that explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448177</commentid>
    <comment_count>26</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-08 12:29:21 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 103275 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103275&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/src/mac/WebInputEventFactory.mm:37
&gt; &gt; +#if !defined(MAC_OS_X_VERSION_10_7) || (MAC_OS_X_VERSION_MAX_ALLOWED &lt; MAC_OS_X_VERSION_10_7)
&gt; 
&gt; Shouldn&apos;t this be BUILDING_ON_LEOPARD, BUILDING_ON_SNOW_LEOPARD, et al. as defined in Platform.h?

I&apos;m not sure what those are supposed to mean, but if I read them literally, then the answer is no.

The #ifdef should be based on which SDK is being targeted, rather than what system it&apos;s being built on.

For example, the patch failed to build on &quot;Webkit Mac10.6&quot; bot, but actually it failed because that bot was targeting the 10.5 SDK.

So assuming &quot;BUILDING_ON_*&quot; refers to the OS of the system doing the compile, then those macros are not appropriate...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448188</commentid>
    <comment_count>27</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-08 12:44:58 -0700</bug_when>
    <thetext>Actually, I see that we do have TARGETING_LEOPARD/TARGETING_SNOW_LEOPARD but not TARGETING_LION macros, but there&apos;s a FIXME in Platform.h mentioning that they should be folded into OS().

Do you want me to change my patch to use those?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448257</commentid>
    <comment_count>28</comment_count>
      <attachid>103290</attachid>
    <who name="">asvitkine</who>
    <bug_when>2011-08-08 14:12:00 -0700</bug_when>
    <thetext>Created attachment 103290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448262</commentid>
    <comment_count>29</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-08 14:22:59 -0700</bug_when>
    <thetext>Latest patch uses the TARGETTING_* macros, since they seemed to be preferred in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448391</commentid>
    <comment_count>30</comment_count>
      <attachid>103290</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-08-08 17:53:22 -0700</bug_when>
    <thetext>Comment on attachment 103290
Patch

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

&gt; Source/WebKit/chromium/src/mac/WebInputEventFactory.mm:64
&gt; +};

Hm, I&apos;m getting build errors when compiling this with the 10.6 SDK. Do I need to do anything to make this work? (duplicate definition of NSEventTypeBeginGesture; prev definition in some system header)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448406</commentid>
    <comment_count>31</comment_count>
      <attachid>103275</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-08-08 18:51:26 -0700</bug_when>
    <thetext>Comment on attachment 103275
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/chromium/src/mac/WebInputEventFactory.mm:37
&gt;&gt;&gt;&gt; +#if !defined(MAC_OS_X_VERSION_10_7) || (MAC_OS_X_VERSION_MAX_ALLOWED &lt; MAC_OS_X_VERSION_10_7)
&gt;&gt;&gt; 
&gt;&gt;&gt; Shouldn&apos;t this be BUILDING_ON_LEOPARD, BUILDING_ON_SNOW_LEOPARD, et al. as defined in Platform.h?
&gt;&gt; 
&gt;&gt; I think we did that back when 10.7 wasn&apos;t out yet. Now that 10.7 is out it&apos;s probably better to check for that explicitly.
&gt; 
&gt; I&apos;m not sure what those are supposed to mean, but if I read them literally, then the answer is no.
&gt; 
&gt; The #ifdef should be based on which SDK is being targeted, rather than what system it&apos;s being built on.
&gt; 
&gt; For example, the patch failed to build on &quot;Webkit Mac10.6&quot; bot, but actually it failed because that bot was targeting the 10.5 SDK.
&gt; 
&gt; So assuming &quot;BUILDING_ON_*&quot; refers to the OS of the system doing the compile, then those macros are not appropriate...

The BUILDING_ON_* macros are defined here: http://codesearch.google.com/codesearch#OAMlx_jo-ck/src/third_party/WebKit/Source/JavaScriptCore/wtf/Platform.h&amp;exact_package=chromium&amp;q=TARGETING_LEOPARD&amp;type=cs&amp;l=390

I think this needs to be 

#if BUILDING_ON_LEOPARD || BUILDING_ON_SNOW_LEOPARD

here and

BUILDING_ON_LEOPARD

below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448409</commentid>
    <comment_count>32</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-08-08 18:58:03 -0700</bug_when>
    <thetext>I just saw that this patch got reverted in https://bugs.webkit.org/show_bug.cgi?id=65865 – maybe because of this issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448418</commentid>
    <comment_count>33</comment_count>
    <who name="Mark Mentovai">mark</who>
    <bug_when>2011-08-08 20:52:50 -0700</bug_when>
    <thetext>Nico is correct. In WebKit, the BUILDING_ON macros refer to the SDK, the set of headers in use, and are set on the basis of MAC_OS_X_VERSION_MAX_ALLOWED. The TARGETING_ macros refer to the deployment target, the minimum supported runtime version, and are set on the basis of MAC_OS_X_VERSION_MIN_REQUIRED. The deployment target may identify an older release than the SDK or the same release as the SDK, but may never identify a newer release.

There isn’t a macro to identify the OS release of the system performing the build. In practice, this is wholly irrelevant. If you’re using the “system” SDK (as I think Apple does in their WebKit builds), the SDK version and the OS release are one and the same. For Chrome release builds, we use the 10.5 SDK and set a 10.5 deployment target, but don’t support 10.5 as a build platform and do our builds on 10.6.

Based on a quick look at Source/WebKit/chromium/src/mac/WebInputEventFactory.mm as in the proposed patch, the first preprocessor conditional should be BUILDING_ON_LEOPARD || BUILDING_ON_SNOW_LEOPARD, and the second should be BUILDING_ON_LEOPARD.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448554</commentid>
    <comment_count>34</comment_count>
      <attachid>103353</attachid>
    <who name="">asvitkine</who>
    <bug_when>2011-08-09 06:34:15 -0700</bug_when>
    <thetext>Created attachment 103353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448555</commentid>
    <comment_count>35</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-09 06:37:58 -0700</bug_when>
    <thetext>One more try, now using BUILDING_ON_* macros.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448601</commentid>
    <comment_count>36</comment_count>
      <attachid>103353</attachid>
    <who name="Mark Mentovai">mark</who>
    <bug_when>2011-08-09 08:22:54 -0700</bug_when>
    <thetext>Comment on attachment 103353
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448602</commentid>
    <comment_count>37</comment_count>
      <attachid>103353</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-09 08:24:21 -0700</bug_when>
    <thetext>Comment on attachment 103353
Patch

rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448707</commentid>
    <comment_count>38</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-08-09 11:42:39 -0700</bug_when>
    <thetext>(reopening for commit-bot)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448738</commentid>
    <comment_count>39</comment_count>
      <attachid>103353</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-09 12:42:39 -0700</bug_when>
    <thetext>Comment on attachment 103353
Patch

Clearing flags on attachment: 103353

Committed r92699: &lt;http://trac.webkit.org/changeset/92699&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448739</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-09 12:42:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102950</attachid>
            <date>2011-08-04 11:37:29 -0700</date>
            <delta_ts>2011-08-04 11:53:13 -0700</delta_ts>
            <desc>Patch to enable rubber banding on Mac Chromium.</desc>
            <filename>rubber_banding.txt</filename>
            <type>text/plain</type>
            <size>19353</size>
            <attacher>asvitkine</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBT
dml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBF
bmFibGUgcnViYmVyIGJhbmRpbmcgd2hlbiBzY3JvbGxpbmcuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKwog
MjAxMS0wOC0wNCAgRGFyaW4gRmlzaGVyICA8ZGFyaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IHdlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSdzIGVsZW1lbnQgYXJndW1lbnQgbmVlZHMgdG8g
YmUgbWFya2VkIG9wdGlvbmFsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVdoZWVsRXZlbnQuaAkocmV2aXNpb24gOTIzMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50CiAg
ICAgfTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KENIUk9NSVVNKQogICAgIGVudW0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgewogICAgICAgICBQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUgICAgICAgID0gMCwKICAgICAgICAgUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2VCZWdhbiAgICAgICA9IDEgPDwgMSwKQEAgLTk3LDcgKzk3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2N0cmxLZXkoZmFsc2UpCiAgICAgICAg
ICAgICAsIG1fYWx0S2V5KGZhbHNlKQogICAgICAgICAgICAgLCBtX21ldGFLZXkoZmFsc2UpCi0j
aWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oQ0hST01JVU0p
CiAgICAgICAgICAgICAsIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyhmYWxzZSkKICAgICAg
ICAgICAgICwgbV9waGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUpCiAgICAgICAgICAg
ICAsIG1fbW9tZW50dW1QaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUpCkBAIC0xMTks
NyArMTE5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2N0cmxLZXko
Y3RybEtleSkKICAgICAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQogICAgICAgICAgICAgLCBt
X21ldGFLZXkobWV0YUtleSkKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShDSFJPTUlVTSkKICAgICAgICAgICAgICwgbV9oYXNQcmVjaXNlU2Nyb2xsaW5n
RGVsdGFzKGZhbHNlKQogICAgICAgICAgICAgLCBtX3BoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlTm9uZSkKICAgICAgICAgICAgICwgbV9tb21lbnR1bVBoYXNlKFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlTm9uZSkKQEAgLTE3NCw3ICsxNzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYg
ZGVmaW5lZChfX09CSkNfXykKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KE5TRXZlbnQgKiwg
TlNWaWV3ICp3aW5kb3dWaWV3KTsKICNlbmRpZgorI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKENIUk9NSVVNKQogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBw
aGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGhhc2U7IH0KICAgICAgICAgUGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2UgbW9tZW50dW1QaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9tZW50dW1QaGFzZTsg
fQogICAgICAgICBib29sIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSBjb25zdCB7IHJldHVy
biBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7IH0KQEAgLTIxMyw3ICsyMTUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9jdHJsS2V5OwogICAgICAgICBib29sIG1f
YWx0S2V5OwogICAgICAgICBib29sIG1fbWV0YUtleTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShDSFJPTUlVTSkKICAgICAgICAgYm9vbCBtX2hhc1By
ZWNpc2VTY3JvbGxpbmdEZWx0YXM7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1f
cGhhc2U7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1fbW9tZW50dW1QaGFzZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hy
b21pdW1NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbQkocmV2aXNpb24gOTIzMTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC04NTIsNyArODUyLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckNo
cm9taXVtTWFjOjpoYW5kbGVHZQogewogICAgIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBs
YXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGUpCiAgICAgICAgIGJlZ2luU2Nyb2xs
R2VzdHVyZSgpOwotICAgIGVsc2UKKyAgICBlbHNlIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlKQogICAgICAgICBlbmRTY3JvbGxH
ZXN0dXJlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5
MjM5MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBTdml0a2luZSAgPGFzdml0a2lu
ZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBFbmFibGUgcnViYmVyIGJhbmRp
bmcgd2hlbiBzY3JvbGxpbmcuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1YmxpYy9XZWJJbnB1dEV2
ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYk1vdXNlV2hlZWxFdmVudDo6V2ViTW91c2VXaGVl
bEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50OjpXZWJHZXN0dXJlRXZl
bnQpOgorICAgICAgICAqIHB1YmxpYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkuaDoKKyAgICAg
ICAgKiBzcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1
cmVFdmVudEJ1aWxkZXIpOgorICAgICAgICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5o
OgorICAgICAgICAqIHNyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUG9wdXBNZW51SW1wbDo6R2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9w
dXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgICogc3JjL1dlYlBvcHVwTWVu
dUltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OmhhbmRsZUlucHV0RXZlbnQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAg
ICAgICAqIHNyYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkubW06CisgICAgICAgIChXZWJLaXQ6
Omdlc3R1cmVFdmVudFR5cGVGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OnBoYXNlRm9yTlNF
dmVudFBoYXNlKToKKyAgICAgICAgKFdlYktpdDo6cGhhc2VGb3JFdmVudCk6CisgICAgICAgIChX
ZWJLaXQ6Om1vbWVudHVtUGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklucHV0
RXZlbnRGYWN0b3J5Ojptb3VzZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnB1
dEV2ZW50RmFjdG9yeTo6Z2VzdHVyZUV2ZW50KToKKwogMjAxMS0wOC0wNCAgQnJpYW4gV2VpbnN0
ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0MjogV2ViIEluc3Bl
Y3RvciBhbHdheXMgc3RhcnRzIGluIHVuZG9ja2VkIG1vZGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vZmVhdHVyZXMuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL2ZlYXR1cmVzLmd5cGkJKHJldmlzaW9uIDkyMzE2KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9mZWF0dXJlcy5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDcgQEAKICAg
ICAgIH1dLAogICAgICAgWydPUz09Im1hYyInLCB7CiAgICAgICAgICdmZWF0dXJlX2RlZmluZXMn
OiBbCisJICAnRU5BQkxFX1JVQkJFUl9CQU5ESU5HPTEnLAogICAgICAgICAgICdXVEZfVVNFX1NL
SUFfT05fTUFDX0NIUk9NSVVNPTwodXNlX3NraWEpJywKICAgICAgICAgXSwKICAgICAgIH1dLApJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaAko
cmV2aXNpb24gOTIzMTYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1
dEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsMTAgQEAgcHVibGljOgogICAg
ICAgICBLZXlVcCwKICAgICAgICAgQ2hhciwKIAorICAgICAgICAvLyBXZWJHZXN0dXJlRXZlbnQK
KyAgICAgICAgR2VzdHVyZVNjcm9sbEJlZ2luLAorICAgICAgICBHZXN0dXJlU2Nyb2xsRW5kLAor
CiAgICAgICAgIC8vIFdlYlRvdWNoRXZlbnQKICAgICAgICAgVG91Y2hTdGFydCwKICAgICAgICAg
VG91Y2hNb3ZlLApAQCAtMjc5LDYgKzI4MywxNSBAQCBwdWJsaWM6CiAKIGNsYXNzIFdlYk1vdXNl
V2hlZWxFdmVudCA6IHB1YmxpYyBXZWJNb3VzZUV2ZW50IHsKIHB1YmxpYzoKKyAgICBlbnVtIFBo
YXNlIHsKKyAgICAgICAgUGhhc2VOb25lICAgICAgICA9IDAsCisgICAgICAgIFBoYXNlQmVnYW4g
ICAgICAgPSAxIDw8IDEsCisgICAgICAgIFBoYXNlU3RhdGlvbmFyeSAgPSAxIDw8IDIsCisgICAg
ICAgIFBoYXNlQ2hhbmdlZCAgICAgPSAxIDw8IDMsCisgICAgICAgIFBoYXNlRW5kZWQgICAgICAg
PSAxIDw8IDQsCisgICAgICAgIFBoYXNlQ2FuY2VsbGVkICAgPSAxIDw8IDUsCisgICAgfTsKKwog
ICAgIGZsb2F0IGRlbHRhWDsKICAgICBmbG9hdCBkZWx0YVk7CiAgICAgZmxvYXQgd2hlZWxUaWNr
c1g7CkBAIC0yOTAsNiArMzAzLDEwIEBAIHB1YmxpYzoKICAgICAvLyB0cmFuc2ZlcmluZyBpdCBv
dmVyIHRoZSB3aXJlLgogICAgIGludCBzY3JvbGxCeVBhZ2U7CiAKKyAgICBib29sIGhhc1ByZWNp
c2VTY3JvbGxpbmdEZWx0YXM7CisgICAgUGhhc2UgcGhhc2U7CisgICAgUGhhc2UgbW9tZW50dW1Q
aGFzZTsKKwogICAgIFdlYk1vdXNlV2hlZWxFdmVudCh1bnNpZ25lZCBzaXplUGFyYW0gPSBzaXpl
b2YoV2ViTW91c2VXaGVlbEV2ZW50KSkKICAgICAgICAgOiBXZWJNb3VzZUV2ZW50KHNpemVQYXJh
bSkKICAgICAgICAgLCBkZWx0YVgoMC4wZikKQEAgLTI5Nyw2ICszMTQsMjcgQEAgcHVibGljOgog
ICAgICAgICAsIHdoZWVsVGlja3NYKDAuMGYpCiAgICAgICAgICwgd2hlZWxUaWNrc1koMC4wZikK
ICAgICAgICAgLCBzY3JvbGxCeVBhZ2UoZmFsc2UpCisgICAgICAgICwgaGFzUHJlY2lzZVNjcm9s
bGluZ0RlbHRhcyhmYWxzZSkKKyAgICAgICAgLCBwaGFzZShQaGFzZU5vbmUpCisgICAgICAgICwg
bW9tZW50dW1QaGFzZShQaGFzZU5vbmUpCisgICAgeworICAgIH0KK307CisKKy8vIFdlYkdlc3R1
cmVFdmVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitjbGFzcyBXZWJHZXN0dXJlRXZlbnQgOiBwdWJsaWMgV2ViSW5wdXRF
dmVudCB7CitwdWJsaWM6CisgICAgaW50IHg7CisgICAgaW50IHk7CisgICAgaW50IGdsb2JhbFg7
CisgICAgaW50IGdsb2JhbFk7CisKKyAgICBXZWJHZXN0dXJlRXZlbnQodW5zaWduZWQgc2l6ZVBh
cmFtID0gc2l6ZW9mKFdlYkdlc3R1cmVFdmVudCkpCisgICAgICAgIDogeCgwKQorICAgICAgICAs
IHkoMCkKKyAgICAgICAgLCBnbG9iYWxYKDApCisgICAgICAgICwgZ2xvYmFsWSgwKQogICAgIHsK
ICAgICB9CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbWFjL1dlYklu
cHV0RXZlbnRGYWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvbWFjL1dlYklucHV0RXZlbnRGYWN0b3J5LmgJKHJldmlzaW9uIDkyMzE2KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbWFjL1dlYklucHV0RXZlbnRGYWN0b3J5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBX
ZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk1vdXNlV2hl
ZWxFdmVudDsKK2NsYXNzIFdlYkdlc3R1cmVFdmVudDsKIAogY2xhc3MgV2ViSW5wdXRFdmVudEZh
Y3RvcnkgewogcHVibGljOgpAQCAtNTMsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0FQ
SSBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBrZXlib2FyZEV2ZW50KHdjaGFyX3QgY2hhcmFjdGVy
LCBpbnQgbW9kaWZpZXJzLCBkb3VibGUgdGltZVN0YW1wU2Vjb25kcyk7CiAgICAgV0VCS0lUX0FQ
SSBzdGF0aWMgV2ViTW91c2VFdmVudCBtb3VzZUV2ZW50KE5TRXZlbnQqLCBOU1ZpZXcqKTsKICAg
ICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJNb3VzZVdoZWVsRXZlbnQgbW91c2VXaGVlbEV2ZW50KE5T
RXZlbnQqLCBOU1ZpZXcqKTsKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJHZXN0dXJlRXZlbnQg
Z2VzdHVyZUV2ZW50KE5TRXZlbnQgKiwgTlNWaWV3ICopOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29u
dmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SW5wdXRFdmVudENvbnZlcnNpb24uY3BwCShyZXZpc2lvbiA5MjMxNikKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAwLDggKzEwMCwzNyBAQCBQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyOjpQbGF0Zm9y
bVdoZWVsCiAgICAgbV9jdHJsS2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6Q29u
dHJvbEtleSk7CiAgICAgbV9hbHRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpB
bHRLZXkpOwogICAgIG1fbWV0YUtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6Ok1l
dGFLZXkpOworICAgIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IGUuaGFzUHJlY2lzZVNj
cm9sbGluZ0RlbHRhczsKKyAgICBtX3BoYXNlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZv
cm1XaGVlbEV2ZW50UGhhc2U+KGUucGhhc2UpOworICAgIG1fbW9tZW50dW1QaGFzZSA9IHN0YXRp
Y19jYXN0PFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPihlLm1vbWVudHVtUGhhc2Up
OworICAgIG1fdGltZXN0YW1wID0gZS50aW1lU3RhbXBTZWNvbmRzOwogfQogCisvLyBQbGF0Zm9y
bUdlc3R1cmVFdmVudEJ1aWxkZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKK1BsYXRmb3JtR2Vz
dHVyZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKFdpZGdldCogd2lk
Z2V0LCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGUpCit7CisgICAgc3dpdGNoIChlLnR5cGUpIHsK
KyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAgICAgICAgbV90
eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgorICAgICAgICBt
X3R5cGUgPSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
ICAgIG1fcG9zaXRpb24gPSB3aWRnZXQtPmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhJbnRQ
b2ludChlLngsIGUueSkpOworICAgIG1fZ2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludChlLmdsb2Jh
bFgsIGUuZ2xvYmFsWSk7CisgICAgbV90aW1lc3RhbXAgPSBlLnRpbWVTdGFtcFNlY29uZHM7Cisg
ICAgbV9zaGlmdEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OlNoaWZ0S2V5KTsK
KyAgICBtX2N0cmxLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5
KTsKKyAgICBtX2FsdEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkFsdEtleSk7
CisgICAgbV9tZXRhS2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6TWV0YUtleSk7
Cit9CisjZW5kaWYKKwogLy8gTWFrZVBsYXRmb3JtS2V5Ym9hcmRFdmVudCAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBzdGF0aWMgaW5saW5lIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6VHlwZSB0b1BsYXRmb3JtS2V5Ym9hcmRFdmVudFR5cGUoV2Vi
SW5wdXRFdmVudDo6VHlwZSB0eXBlKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCShyZXZpc2lvbiA5MjMxNikKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZl
bnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBLZXlib2FyZEV2ZW50OwpAQCAtNTEsNiArNTIsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZVdo
ZWVsRXZlbnQ7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OworY2xhc3MgV2ViR2VzdHVyZUV2ZW50
OwogCiAvLyBUaGVzZSBjbGFzc2VzIGFyZSB1c2VkIHRvIGNvbnZlcnQgZnJvbSBXZWJJbnB1dEV2
ZW50IHN1YmNsYXNzZXMgdG8KIC8vIGNvcnJlc3BvbmRpbmcgV2ViQ29yZSBldmVudHMuCkBAIC02
NSw2ICs2NywxMyBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcihXZWJD
b3JlOjpXaWRnZXQqLCBjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKIH07CiAKKyNpZiBFTkFC
TEUoR0VTVFVSRV9FVkVOVFMpCitjbGFzcyBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIgOiBw
dWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQgeworcHVibGljOgorICAgIFBsYXRm
b3JtR2VzdHVyZUV2ZW50QnVpbGRlcihXZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJHZXN0dXJl
RXZlbnQmKTsKK307CisjZW5kaWYKKwogY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRl
ciA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQgewogcHVibGljOgogICAg
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5j
cHAJKHJldmlzaW9uIDkyMzE2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9w
dXBNZW51SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsMTEgQEAgdm9pZCBX
ZWJQb3B1cE1lbnVJbXBsOjpNb3VzZVdoZWVsKGNvbnN0IAogICAgIG1fd2lkZ2V0LT5oYW5kbGVX
aGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIobV93aWRnZXQsIGV2ZW50KSk7CiB9
CiAKK2Jvb2wgV2ViUG9wdXBNZW51SW1wbDo6R2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVF
dmVudCYgZXZlbnQpCit7CisgICAgcmV0dXJuIG1fd2lkZ2V0LT5oYW5kbGVHZXN0dXJlRXZlbnQo
UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKG1fd2lkZ2V0LCBldmVudCkpOworfQorCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKIGJvb2wgV2ViUG9wdXBNZW51SW1wbDo6VG91Y2hFdmVudChj
b25zdCBXZWJUb3VjaEV2ZW50JiBldmVudCkKIHsKQEAgLTI2Niw2ICsyNzEsMTAgQEAgYm9vbCBX
ZWJQb3B1cE1lbnVJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KAogICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6VG91Y2hDYW5jZWw6CiAgICAgICAgIHJldHVybiBUb3VjaEV2ZW50KCpzdGF0aWNfY2FzdDxj
b25zdCBXZWJUb3VjaEV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKIAorICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZVNjcm9sbEVuZDoJCQkKKyAgICAgICAgcmV0dXJuIEdlc3R1cmVFdmVudCgqc3RhdGljX2Nhc3Q8
Y29uc3QgV2ViR2VzdHVyZUV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKKwogICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6VW5kZWZpbmVkOgogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VFbnRlcjoK
ICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OkNvbnRleHRNZW51OgpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaAkocmV2aXNpb24gOTIzMTYpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDYgKzUyLDcgQEAgY2xhc3MgV2lkZ2V0OwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKK2NsYXNzIFdlYkdlc3R1cmVFdmVudDsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CiBj
bGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50OwpAQCAtMTA0LDYg
KzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIE1vdXNlVXAoY29uc3QgV2ViTW91c2VFdmVudCYp
OwogICAgIHZvaWQgTW91c2VEb3VibGVDbGljayhjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAg
dm9pZCBNb3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYpOworICAgIGJvb2wgR2Vz
dHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wgVG91Y2hFdmVudChj
b25zdCBXZWJUb3VjaEV2ZW50Jik7CiAgICAgYm9vbCBLZXlFdmVudChjb25zdCBXZWJLZXlib2Fy
ZEV2ZW50Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAJKHJldmlzaW9uIDkyMzE2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDMsNiArNjAzLDE0IEBAIGJvb2wgV2Vi
Vmlld0ltcGw6Om1vdXNlV2hlZWwoY29uc3QgV2ViTW8KICAgICByZXR1cm4gbWFpbkZyYW1lSW1w
bCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlV2hlZWxFdmVudChwbGF0Zm9ybUV2
ZW50KTsKIH0KIAorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKK2Jvb2wgV2ViVmlld0ltcGw6
Omdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQoreworICAgIFBsYXRm
b3JtR2VzdHVyZUV2ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+ZnJh
bWVWaWV3KCksIGV2ZW50KTsKKyAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5l
dmVudEhhbmRsZXIoKS0+aGFuZGxlR2VzdHVyZUV2ZW50KHBsYXRmb3JtRXZlbnQpOworfQorI2Vu
ZGlmCisKIGJvb2wgV2ViVmlld0ltcGw6OmtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQm
IGV2ZW50KQogewogICAgIEFTU0VSVCgoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpSYXdL
ZXlEb3duKQpAQCAtMTI4MCw2ICsxMjg4LDEzIEBAIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRsZUlu
cHV0RXZlbnQoY29uc3QKICAgICAgICAgaGFuZGxlZCA9IGNoYXJFdmVudCgqc3RhdGljX2Nhc3Q8
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCo+KCZpbnB1dEV2ZW50KSk7CiAgICAgICAgIGJyZWFrOwog
CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZVNjcm9sbEJlZ2luOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVu
ZDoKKyAgICAgICAgaGFuZGxlZCA9IGdlc3R1cmVFdmVudCgqc3RhdGljX2Nhc3Q8Y29uc3QgV2Vi
R2VzdHVyZUV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKwog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaFN0
YXJ0OgogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hNb3ZlOgpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCShyZXZpc2lvbiA5MjMxNikKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0
LDYgKzg0LDcgQEAgY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIFdlYkRldlRv
b2xzQWdlbnRDbGllbnQ7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50UHJpdmF0ZTsKIGNsYXNzIFdl
YkZyYW1lSW1wbDsKK2NsYXNzIFdlYkdlc3R1cmVFdmVudDsKIGNsYXNzIFdlYkltYWdlOwogY2xh
c3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CkBAIC0yNzYsNiArMjc3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgbW91c2VDb250ZXh0TWVudShjb25zdCBXZWJNb3VzZUV2
ZW50Jik7CiAgICAgdm9pZCBtb3VzZURvdWJsZUNsaWNrKGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsK
ICAgICBib29sIG1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Jik7CisgICAgYm9v
bCBnZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CiAgICAgYm9vbCBrZXlFdmVu
dChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAgYm9vbCBjaGFyRXZlbnQoY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYpOwogICAgIGJvb2wgdG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50
Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9tYWMvV2ViSW5wdXRFdmVudEZh
Y3RvcnkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbWFjL1dl
YklucHV0RXZlbnRGYWN0b3J5Lm1tCShyZXZpc2lvbiA5MjMxNikKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzQsNiArMzQsMjUgQEAKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSA8
d3RmL0FTQ0lJQ1R5cGUuaD4KIAorI2lmICFkZWZpbmVkKE1BQ19PU19YX1ZFUlNJT05fMTBfNykg
fHwgKE1BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCBNQUNfT1NfWF9WRVJTSU9OXzEwXzcp
CisKK2VudW0geworCU5TRXZlbnRQaGFzZU5vbmUgICAgICAgID0gMCwKKwlOU0V2ZW50UGhhc2VC
ZWdhbiAgICAgICA9IDB4MSA8PCAwLAorCU5TRXZlbnRQaGFzZVN0YXRpb25hcnkgID0gMHgxIDw8
IDEsCisJTlNFdmVudFBoYXNlQ2hhbmdlZCAgICAgPSAweDEgPDwgMiwKKwlOU0V2ZW50UGhhc2VF
bmRlZCAgICAgICA9IDB4MSA8PCAzLAorCU5TRXZlbnRQaGFzZUNhbmNlbGxlZCAgID0gMHgxIDw8
IDQKK307Cit0eXBlZGVmIE5TVUludGVnZXIgTlNFdmVudFBoYXNlOworCitAaW50ZXJmYWNlIE5T
RXZlbnQgKExpb25TREtEZWNsYXJhdGlvbnMpCistIChOU0V2ZW50UGhhc2UpcGhhc2U7CistIChO
U0V2ZW50UGhhc2UpbW9tZW50dW1QaGFzZTsKK0BlbmQKKworI2VuZGlmICAvLyBNQUNfT1NfWF9W
RVJTSU9OXzEwXzcKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIFdlYktleWJvYXJkRXZlbnQg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KQEAgLTE0OSw2ICsxNjgsMTkgQEAgc3RhdGljIGludCB3aW5kb3dzS2V5Q29kZUZvcktleUV2
ZW50KE5TRQogICAgIHJldHVybiBXZWJDb3JlOjp3aW5kb3dzS2V5Q29kZUZvcktleUNvZGUoW2V2
ZW50IGtleUNvZGVdKTsKIH0KIAorc3RhdGljIFdlYklucHV0RXZlbnQ6OlR5cGUgZ2VzdHVyZUV2
ZW50VHlwZUZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQoreworICAgIHN3aXRjaCAoW2V2ZW50IHR5
cGVdKSB7CisgICAgY2FzZSBOU0V2ZW50VHlwZUJlZ2luR2VzdHVyZToKKyAgICAgICAgcmV0dXJu
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjsKKyAgICBjYXNlIE5TRXZlbnRUeXBl
RW5kR2VzdHVyZToKKyAgICAgICAgcmV0dXJuIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxF
bmQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOworICAgIH0KK30KKwogc3Rh
dGljIGlubGluZSBOU1N0cmluZyogdGV4dEZyb21FdmVudChOU0V2ZW50KiBldmVudCkKIHsKICAg
ICBpZiAoW2V2ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2VkKQpAQCAtNzA3LDYgKzczOSw0MCBA
QCBXZWJNb3VzZUV2ZW50IFdlYklucHV0RXZlbnRGYWN0b3J5Ojptb3VzCiAKIC8vIFdlYk1vdXNl
V2hlZWxFdmVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAorc3RhdGljIFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2UgcGhhc2VGb3JO
U0V2ZW50UGhhc2UoTlNFdmVudFBoYXNlIGV2ZW50UGhhc2UpCit7CisJdWludDMyX3QgcGhhc2Ug
PSBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlTm9uZTsgCisJaWYgKGV2ZW50UGhhc2UgJiBOU0V2
ZW50UGhhc2VCZWdhbikKKwkJcGhhc2UgfD0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZUJlZ2Fu
OworCWlmIChldmVudFBoYXNlICYgTlNFdmVudFBoYXNlU3RhdGlvbmFyeSkKKwkJcGhhc2UgfD0g
V2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZVN0YXRpb25hcnk7CisJaWYgKGV2ZW50UGhhc2UgJiBO
U0V2ZW50UGhhc2VDaGFuZ2VkKQorCQlwaGFzZSB8PSBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNl
Q2hhbmdlZDsKKwlpZiAoZXZlbnRQaGFzZSAmIE5TRXZlbnRQaGFzZUVuZGVkKQorCQlwaGFzZSB8
PSBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlRW5kZWQ7CisJaWYgKGV2ZW50UGhhc2UgJiBOU0V2
ZW50UGhhc2VDYW5jZWxsZWQpCisJCXBoYXNlIHw9IFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2VD
YW5jZWxsZWQ7CisJcmV0dXJuIHN0YXRpY19jYXN0PFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2U+
KHBoYXNlKTsKK30KKworc3RhdGljIFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2UgcGhhc2VGb3JF
dmVudChOU0V2ZW50ICpldmVudCkKK3sKKwlpZiAoIVtldmVudCByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHBoYXNlKV0pCisJCXJldHVybiBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlTm9u
ZTsKKworCU5TRXZlbnRQaGFzZSBldmVudFBoYXNlID0gW2V2ZW50IHBoYXNlXTsKKwlyZXR1cm4g
cGhhc2VGb3JOU0V2ZW50UGhhc2UoZXZlbnRQaGFzZSk7Cit9CisKK3N0YXRpYyBXZWJNb3VzZVdo
ZWVsRXZlbnQ6OlBoYXNlIG1vbWVudHVtUGhhc2VGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sK
KwlpZiAoIVtldmVudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG1vbWVudHVtUGhhc2Up
XSkKKwkJcmV0dXJuIFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2VOb25lOworCisJTlNFdmVudFBo
YXNlIGV2ZW50TW9tZW50dW1QaGFzZSA9IFtldmVudCBtb21lbnR1bVBoYXNlXTsKKwlyZXR1cm4g
cGhhc2VGb3JOU0V2ZW50UGhhc2UoZXZlbnRNb21lbnR1bVBoYXNlKTsKK30KKwogV2ViTW91c2VX
aGVlbEV2ZW50IFdlYklucHV0RXZlbnRGYWN0b3J5Ojptb3VzZVdoZWVsRXZlbnQoTlNFdmVudCog
ZXZlbnQsIE5TVmlldyogdmlldykKIHsKICAgICBXZWJNb3VzZVdoZWVsRXZlbnQgcmVzdWx0OwpA
QCAtODM4LDYgKzkwNCw3IEBAIFdlYk1vdXNlV2hlZWxFdmVudCBXZWJJbnB1dEV2ZW50RmFjdG9y
eToKICAgICAgICAgcmVzdWx0LmRlbHRhWSA9IENHRXZlbnRHZXRJbnRlZ2VyVmFsdWVGaWVsZChj
Z0V2ZW50LCBrQ0dTY3JvbGxXaGVlbEV2ZW50UG9pbnREZWx0YUF4aXMxKTsKICAgICAgICAgcmVz
dWx0LndoZWVsVGlja3NYID0gcmVzdWx0LmRlbHRhWCAvIHNjcm9sbGJhclBpeGVsc1BlckNvY29h
VGljazsKICAgICAgICAgcmVzdWx0LndoZWVsVGlja3NZID0gcmVzdWx0LmRlbHRhWSAvIHNjcm9s
bGJhclBpeGVsc1BlckNvY29hVGljazsKKyAgICAgICAgcmVzdWx0Lmhhc1ByZWNpc2VTY3JvbGxp
bmdEZWx0YXMgPSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3VsdC5kZWx0YVggPSBb
ZXZlbnQgZGVsdGFYXSAqIHNjcm9sbGJhclBpeGVsc1BlckNvY29hVGljazsKICAgICAgICAgcmVz
dWx0LmRlbHRhWSA9IFtldmVudCBkZWx0YVldICogc2Nyb2xsYmFyUGl4ZWxzUGVyQ29jb2FUaWNr
OwpAQCAtODQ3LDYgKzkxNCwyOSBAQCBXZWJNb3VzZVdoZWVsRXZlbnQgV2ViSW5wdXRFdmVudEZh
Y3Rvcnk6CiAKICAgICByZXN1bHQudGltZVN0YW1wU2Vjb25kcyA9IFtldmVudCB0aW1lc3RhbXBd
OwogCisgICAgcmVzdWx0LnBoYXNlICAgICAgICAgICAgICA9IHBoYXNlRm9yRXZlbnQoZXZlbnQp
OworICAgIHJlc3VsdC5tb21lbnR1bVBoYXNlICAgICAgPSBtb21lbnR1bVBoYXNlRm9yRXZlbnQo
ZXZlbnQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworV2ViR2VzdHVyZUV2ZW50IFdlYklu
cHV0RXZlbnRGYWN0b3J5OjpnZXN0dXJlRXZlbnQoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAqdmll
dykKK3sKKyAgICBXZWJHZXN0dXJlRXZlbnQgcmVzdWx0OworCisgICAgLy8gVXNlIGEgdGVtcG9y
YXJ5IFdlYk1vdXNlRXZlbnQgdG8gZ2V0IHRoZSBsb2NhdGlvbi4KKyAgICBXZWJNb3VzZUV2ZW50
IHRlbXA7CisKKyAgICBzZXRXZWJFdmVudExvY2F0aW9uRnJvbUV2ZW50SW5WaWV3KCZ0ZW1wLCBl
dmVudCwgdmlldyk7CisgICAgcmVzdWx0LnggPSB0ZW1wLng7CisgICAgcmVzdWx0LnkgPSB0ZW1w
Lnk7CisgICAgcmVzdWx0Lmdsb2JhbFggPSB0ZW1wLmdsb2JhbFg7CisgICAgcmVzdWx0Lmdsb2Jh
bFkgPSB0ZW1wLmdsb2JhbFk7CisKKyAgICByZXN1bHQudHlwZSA9IGdlc3R1cmVFdmVudFR5cGVG
b3JFdmVudChldmVudCk7CisgICAgcmVzdWx0Lm1vZGlmaWVycyA9IG1vZGlmaWVyc0Zyb21FdmVu
dChldmVudCk7CisgICAgcmVzdWx0LnRpbWVTdGFtcFNlY29uZHMgPSBbZXZlbnQgdGltZXN0YW1w
XTsKKwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102953</attachid>
            <date>2011-08-04 11:53:13 -0700</date>
            <delta_ts>2011-08-04 12:49:41 -0700</delta_ts>
            <desc>Patch to enable rubber banding on Mac Chromium (v2)</desc>
            <filename>rubber_banding2.txt</filename>
            <type>text/plain</type>
            <size>19474</size>
            <attacher>asvitkine</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMzkzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBT
dml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBF
bmFibGUgcnViYmVyIGJhbmRpbmcgd2hlbiBzY3JvbGxpbmcuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKwog
MjAxMS0wOC0wNCAgRGFyaW4gRmlzaGVyICA8ZGFyaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IHdlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSdzIGVsZW1lbnQgYXJndW1lbnQgbmVlZHMgdG8g
YmUgbWFya2VkIG9wdGlvbmFsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVdoZWVsRXZlbnQuaAkocmV2aXNpb24gOTIzMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50CiAg
ICAgfTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KENIUk9NSVVNKQogICAgIGVudW0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgewogICAgICAgICBQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUgICAgICAgID0gMCwKICAgICAgICAgUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2VCZWdhbiAgICAgICA9IDEgPDwgMSwKQEAgLTk3LDcgKzk3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2N0cmxLZXkoZmFsc2UpCiAgICAgICAg
ICAgICAsIG1fYWx0S2V5KGZhbHNlKQogICAgICAgICAgICAgLCBtX21ldGFLZXkoZmFsc2UpCi0j
aWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oQ0hST01JVU0p
CiAgICAgICAgICAgICAsIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyhmYWxzZSkKICAgICAg
ICAgICAgICwgbV9waGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUpCiAgICAgICAgICAg
ICAsIG1fbW9tZW50dW1QaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUpCkBAIC0xMTks
NyArMTE5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2N0cmxLZXko
Y3RybEtleSkKICAgICAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQogICAgICAgICAgICAgLCBt
X21ldGFLZXkobWV0YUtleSkKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShDSFJPTUlVTSkKICAgICAgICAgICAgICwgbV9oYXNQcmVjaXNlU2Nyb2xsaW5n
RGVsdGFzKGZhbHNlKQogICAgICAgICAgICAgLCBtX3BoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlTm9uZSkKICAgICAgICAgICAgICwgbV9tb21lbnR1bVBoYXNlKFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlTm9uZSkKQEAgLTE3NCw3ICsxNzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYg
ZGVmaW5lZChfX09CSkNfXykKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KE5TRXZlbnQgKiwg
TlNWaWV3ICp3aW5kb3dWaWV3KTsKICNlbmRpZgorI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKENIUk9NSVVNKQogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBw
aGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGhhc2U7IH0KICAgICAgICAgUGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2UgbW9tZW50dW1QaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9tZW50dW1QaGFzZTsg
fQogICAgICAgICBib29sIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSBjb25zdCB7IHJldHVy
biBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7IH0KQEAgLTIxMyw3ICsyMTUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9jdHJsS2V5OwogICAgICAgICBib29sIG1f
YWx0S2V5OwogICAgICAgICBib29sIG1fbWV0YUtleTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShDSFJPTUlVTSkKICAgICAgICAgYm9vbCBtX2hhc1By
ZWNpc2VTY3JvbGxpbmdEZWx0YXM7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1f
cGhhc2U7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1fbW9tZW50dW1QaGFzZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hy
b21pdW1NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbQkocmV2aXNpb24gOTIzMTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC04NTIsNyArODUyLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckNo
cm9taXVtTWFjOjpoYW5kbGVHZQogewogICAgIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBs
YXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGUpCiAgICAgICAgIGJlZ2luU2Nyb2xs
R2VzdHVyZSgpOwotICAgIGVsc2UKKyAgICBlbHNlIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlKQogICAgICAgICBlbmRTY3JvbGxH
ZXN0dXJlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5
MjM5MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBTdml0a2luZSAgPGFzdml0a2lu
ZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBFbmFibGUgcnViYmVyIGJhbmRp
bmcgd2hlbiBzY3JvbGxpbmcuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY1NzA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1YmxpYy9XZWJJbnB1dEV2
ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYk1vdXNlV2hlZWxFdmVudDo6V2ViTW91c2VXaGVl
bEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50OjpXZWJHZXN0dXJlRXZl
bnQpOgorICAgICAgICAqIHB1YmxpYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkuaDoKKyAgICAg
ICAgKiBzcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1
cmVFdmVudEJ1aWxkZXIpOgorICAgICAgICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5o
OgorICAgICAgICAqIHNyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUG9wdXBNZW51SW1wbDo6R2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9w
dXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgICogc3JjL1dlYlBvcHVwTWVu
dUltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OmhhbmRsZUlucHV0RXZlbnQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAg
ICAgICAqIHNyYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkubW06CisgICAgICAgIChXZWJLaXQ6
Omdlc3R1cmVFdmVudFR5cGVGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OnBoYXNlRm9yTlNF
dmVudFBoYXNlKToKKyAgICAgICAgKFdlYktpdDo6cGhhc2VGb3JFdmVudCk6CisgICAgICAgIChX
ZWJLaXQ6Om1vbWVudHVtUGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklucHV0
RXZlbnRGYWN0b3J5Ojptb3VzZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnB1
dEV2ZW50RmFjdG9yeTo6Z2VzdHVyZUV2ZW50KToKKwogMjAxMS0wOC0wNCAgQnJpYW4gV2VpbnN0
ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0MjogV2ViIEluc3Bl
Y3RvciBhbHdheXMgc3RhcnRzIGluIHVuZG9ja2VkIG1vZGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vZmVhdHVyZXMuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL2ZlYXR1cmVzLmd5cGkJKHJldmlzaW9uIDkyMzE2KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9mZWF0dXJlcy5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDcgQEAKICAg
ICAgIH1dLAogICAgICAgWydPUz09Im1hYyInLCB7CiAgICAgICAgICdmZWF0dXJlX2RlZmluZXMn
OiBbCisgICAgICAgICAgJ0VOQUJMRV9SVUJCRVJfQkFORElORz0xJywKICAgICAgICAgICAnV1RG
X1VTRV9TS0lBX09OX01BQ19DSFJPTUlVTT08KHVzZV9za2lhKScsCiAgICAgICAgIF0sCiAgICAg
ICB9XSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2
ZW50LmgJKHJldmlzaW9uIDkyMzE2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSW5wdXRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgS2V5VXAsCiAgICAgICAgIENoYXIsCiAKKyAgICAgICAgLy8gV2ViR2VzdHVy
ZUV2ZW50CisgICAgICAgIEdlc3R1cmVTY3JvbGxCZWdpbiwKKyAgICAgICAgR2VzdHVyZVNjcm9s
bEVuZCwKKwogICAgICAgICAvLyBXZWJUb3VjaEV2ZW50CiAgICAgICAgIFRvdWNoU3RhcnQsCiAg
ICAgICAgIFRvdWNoTW92ZSwKQEAgLTI3OSw2ICsyODMsMTUgQEAgcHVibGljOgogCiBjbGFzcyBX
ZWJNb3VzZVdoZWVsRXZlbnQgOiBwdWJsaWMgV2ViTW91c2VFdmVudCB7CiBwdWJsaWM6CisgICAg
ZW51bSBQaGFzZSB7CisgICAgICAgIFBoYXNlTm9uZSAgICAgICAgPSAwLAorICAgICAgICBQaGFz
ZUJlZ2FuICAgICAgID0gMSA8PCAxLAorICAgICAgICBQaGFzZVN0YXRpb25hcnkgID0gMSA8PCAy
LAorICAgICAgICBQaGFzZUNoYW5nZWQgICAgID0gMSA8PCAzLAorICAgICAgICBQaGFzZUVuZGVk
ICAgICAgID0gMSA8PCA0LAorICAgICAgICBQaGFzZUNhbmNlbGxlZCAgID0gMSA8PCA1LAorICAg
IH07CisKICAgICBmbG9hdCBkZWx0YVg7CiAgICAgZmxvYXQgZGVsdGFZOwogICAgIGZsb2F0IHdo
ZWVsVGlja3NYOwpAQCAtMjkwLDYgKzMwMywxMCBAQCBwdWJsaWM6CiAgICAgLy8gdHJhbnNmZXJp
bmcgaXQgb3ZlciB0aGUgd2lyZS4KICAgICBpbnQgc2Nyb2xsQnlQYWdlOwogCisgICAgYm9vbCBo
YXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOworICAgIFBoYXNlIHBoYXNlOworICAgIFBoYXNlIG1v
bWVudHVtUGhhc2U7CisKICAgICBXZWJNb3VzZVdoZWVsRXZlbnQodW5zaWduZWQgc2l6ZVBhcmFt
ID0gc2l6ZW9mKFdlYk1vdXNlV2hlZWxFdmVudCkpCiAgICAgICAgIDogV2ViTW91c2VFdmVudChz
aXplUGFyYW0pCiAgICAgICAgICwgZGVsdGFYKDAuMGYpCkBAIC0yOTcsNiArMzE0LDI3IEBAIHB1
YmxpYzoKICAgICAgICAgLCB3aGVlbFRpY2tzWCgwLjBmKQogICAgICAgICAsIHdoZWVsVGlja3NZ
KDAuMGYpCiAgICAgICAgICwgc2Nyb2xsQnlQYWdlKGZhbHNlKQorICAgICAgICAsIGhhc1ByZWNp
c2VTY3JvbGxpbmdEZWx0YXMoZmFsc2UpCisgICAgICAgICwgcGhhc2UoUGhhc2VOb25lKQorICAg
ICAgICAsIG1vbWVudHVtUGhhc2UoUGhhc2VOb25lKQorICAgIHsKKyAgICB9Cit9OworCisvLyBX
ZWJHZXN0dXJlRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgV2ViR2VzdHVyZUV2ZW50IDogcHVibGljIFdl
YklucHV0RXZlbnQgeworcHVibGljOgorICAgIGludCB4OworICAgIGludCB5OworICAgIGludCBn
bG9iYWxYOworICAgIGludCBnbG9iYWxZOworCisgICAgV2ViR2VzdHVyZUV2ZW50KHVuc2lnbmVk
IHNpemVQYXJhbSA9IHNpemVvZihXZWJHZXN0dXJlRXZlbnQpKQorICAgICAgICA6IHgoMCkKKyAg
ICAgICAgLCB5KDApCisgICAgICAgICwgZ2xvYmFsWCgwKQorICAgICAgICAsIGdsb2JhbFkoMCkK
ICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL21h
Yy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oCShyZXZpc2lvbiA5MjMxNikK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9y
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJN
b3VzZVdoZWVsRXZlbnQ7CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiAKIGNsYXNzIFdlYklucHV0
RXZlbnRGYWN0b3J5IHsKIHB1YmxpYzoKQEAgLTUzLDYgKzU0LDcgQEAgcHVibGljOgogICAgIFdF
QktJVF9BUEkgc3RhdGljIFdlYktleWJvYXJkRXZlbnQga2V5Ym9hcmRFdmVudCh3Y2hhcl90IGNo
YXJhY3RlciwgaW50IG1vZGlmaWVycywgZG91YmxlIHRpbWVTdGFtcFNlY29uZHMpOwogICAgIFdF
QktJVF9BUEkgc3RhdGljIFdlYk1vdXNlRXZlbnQgbW91c2VFdmVudChOU0V2ZW50KiwgTlNWaWV3
Kik7CiAgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViTW91c2VXaGVlbEV2ZW50IG1vdXNlV2hlZWxF
dmVudChOU0V2ZW50KiwgTlNWaWV3Kik7CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViR2VzdHVy
ZUV2ZW50IGdlc3R1cmVFdmVudChOU0V2ZW50ICosIE5TVmlldyAqKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRF
dmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gOTIzMTYpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMCw4ICsxMDAsMzcgQEAgUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6
UGxhdGZvcm1XaGVlbAogICAgIG1fY3RybEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZl
bnQ6OkNvbnRyb2xLZXkpOwogICAgIG1fYWx0S2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRF
dmVudDo6QWx0S2V5KTsKICAgICBtX21ldGFLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2
ZW50OjpNZXRhS2V5KTsKKyAgICBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSBlLmhhc1By
ZWNpc2VTY3JvbGxpbmdEZWx0YXM7CisgICAgbV9waGFzZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6
OlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPihlLnBoYXNlKTsKKyAgICBtX21vbWVudHVtUGhhc2Ug
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZT4oZS5tb21lbnR1
bVBoYXNlKTsKKyAgICBtX3RpbWVzdGFtcCA9IGUudGltZVN0YW1wU2Vjb25kczsKIH0KIAorLy8g
UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitQbGF0
Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcihXaWRn
ZXQqIHdpZGdldCwgY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBlKQoreworICAgIHN3aXRjaCAoZS50
eXBlKSB7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46CisgICAg
ICAgIG1fdHlwZSA9IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKKyAg
ICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKyAgICBtX3Bvc2l0aW9uID0gd2lkZ2V0LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5k
b3coSW50UG9pbnQoZS54LCBlLnkpKTsKKyAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQo
ZS5nbG9iYWxYLCBlLmdsb2JhbFkpOworICAgIG1fdGltZXN0YW1wID0gZS50aW1lU3RhbXBTZWNv
bmRzOworICAgIG1fc2hpZnRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpTaGlm
dEtleSk7CisgICAgbV9jdHJsS2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6Q29u
dHJvbEtleSk7CisgICAgbV9hbHRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpB
bHRLZXkpOworICAgIG1fbWV0YUtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6Ok1l
dGFLZXkpOworfQorI2VuZGlmCisKIC8vIE1ha2VQbGF0Zm9ybUtleWJvYXJkRXZlbnQgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogc3RhdGljIGlu
bGluZSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlR5cGUgdG9QbGF0Zm9ybUtleWJvYXJkRXZlbnRU
eXBlKFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAkocmV2aXNpb24gOTIz
MTYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1N
b3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Ub3VjaEV2ZW50LmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgS2V5Ym9hcmRFdmVudDsKQEAgLTUxLDYgKzUy
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2Vi
TW91c2VXaGVlbEV2ZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKK2NsYXNzIFdlYkdlc3R1
cmVFdmVudDsKIAogLy8gVGhlc2UgY2xhc3NlcyBhcmUgdXNlZCB0byBjb252ZXJ0IGZyb20gV2Vi
SW5wdXRFdmVudCBzdWJjbGFzc2VzIHRvCiAvLyBjb3JyZXNwb25kaW5nIFdlYkNvcmUgZXZlbnRz
LgpAQCAtNjUsNiArNjcsMTMgQEAgcHVibGljOgogICAgIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxk
ZXIoV2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Jik7CiB9OwogCisj
aWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWls
ZGVyIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50IHsKK3B1YmxpYzoKKyAg
ICBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoV2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2Vi
R2VzdHVyZUV2ZW50Jik7Cit9OworI2VuZGlmCisKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dEJ1aWxkZXIgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50IHsKIHB1Ymxp
YzoKICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVu
dUltcGwuY3BwCShyZXZpc2lvbiA5MjMxNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBvcHVwTWVudUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDExIEBA
IHZvaWQgV2ViUG9wdXBNZW51SW1wbDo6TW91c2VXaGVlbChjb25zdCAKICAgICBtX3dpZGdldC0+
aGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKG1fd2lkZ2V0LCBldmVu
dCkpOwogfQogCitib29sIFdlYlBvcHVwTWVudUltcGw6Okdlc3R1cmVFdmVudChjb25zdCBXZWJH
ZXN0dXJlRXZlbnQmIGV2ZW50KQoreworICAgIHJldHVybiBtX3dpZGdldC0+aGFuZGxlR2VzdHVy
ZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcihtX3dpZGdldCwgZXZlbnQpKTsKK30K
KwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBib29sIFdlYlBvcHVwTWVudUltcGw6OlRvdWNo
RXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYgZXZlbnQpCiB7CkBAIC0yNjYsNiArMjcxLDEwIEBA
IGJvb2wgV2ViUG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudCgKICAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6OlRvdWNoQ2FuY2VsOgogICAgICAgICByZXR1cm4gVG91Y2hFdmVudCgqc3RhdGlj
X2Nhc3Q8Y29uc3QgV2ViVG91Y2hFdmVudCo+KCZpbnB1dEV2ZW50KSk7CiAKKyAgICBjYXNlIFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6
Okdlc3R1cmVTY3JvbGxFbmQ6CQkJCisgICAgICAgIHJldHVybiBHZXN0dXJlRXZlbnQoKnN0YXRp
Y19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZpbnB1dEV2ZW50KSk7CisKICAgICBjYXNl
IFdlYklucHV0RXZlbnQ6OlVuZGVmaW5lZDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNl
RW50ZXI6CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpDb250ZXh0TWVudToKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgJKHJldmlzaW9uIDky
MzE2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNzIFdpZGdldDsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiBjbGFzcyBXZWJLZXlib2FyZEV2
ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKQEAg
LTEwNCw2ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBNb3VzZVVwKGNvbnN0IFdlYk1vdXNl
RXZlbnQmKTsKICAgICB2b2lkIE1vdXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYp
OwogICAgIHZvaWQgTW91c2VXaGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKKyAgICBi
b29sIEdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKICAgICBib29sIFRvdWNo
RXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYpOwogICAgIGJvb2wgS2V5RXZlbnQoY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCShyZXZpc2lvbiA5MjMxNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAzLDYgKzYwMywxNCBAQCBi
b29sIFdlYlZpZXdJbXBsOjptb3VzZVdoZWVsKGNvbnN0IFdlYk1vCiAgICAgcmV0dXJuIG1haW5G
cmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVdoZWVsRXZlbnQocGxh
dGZvcm1FdmVudCk7CiB9CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitib29sIFdlYlZp
ZXdJbXBsOjpnZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKK3sKKyAg
ICBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIgcGxhdGZvcm1FdmVudChtYWluRnJhbWVJbXBs
KCktPmZyYW1lVmlldygpLCBldmVudCk7CisgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChwbGF0Zm9ybUV2ZW50KTsK
K30KKyNlbmRpZgorCiBib29sIFdlYlZpZXdJbXBsOjprZXlFdmVudChjb25zdCBXZWJLZXlib2Fy
ZEV2ZW50JiBldmVudCkKIHsKICAgICBBU1NFUlQoKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVu
dDo6UmF3S2V5RG93bikKQEAgLTEyODAsNiArMTI4OCwxMyBAQCBib29sIFdlYlZpZXdJbXBsOjpo
YW5kbGVJbnB1dEV2ZW50KGNvbnN0CiAgICAgICAgIGhhbmRsZWQgPSBjaGFyRXZlbnQoKnN0YXRp
Y19jYXN0PGNvbnN0IFdlYktleWJvYXJkRXZlbnQqPigmaW5wdXRFdmVudCkpOwogICAgICAgICBi
cmVhazsKIAorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVT
Y3JvbGxFbmQ6CisgICAgICAgIGhhbmRsZWQgPSBnZXN0dXJlRXZlbnQoKnN0YXRpY19jYXN0PGNv
bnN0IFdlYkdlc3R1cmVFdmVudCo+KCZpbnB1dEV2ZW50KSk7CisgICAgICAgIGJyZWFrOworI2Vu
ZGlmCisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6
VG91Y2hTdGFydDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoTW92ZToKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gOTIzMTYpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC04NCw2ICs4NCw3IEBAIGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFzcyBX
ZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGU7CiBj
bGFzcyBXZWJGcmFtZUltcGw7CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiBjbGFzcyBXZWJJbWFn
ZTsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwpAQCAtMjc2
LDYgKzI3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdXNlQ29udGV4dE1lbnUoY29uc3QgV2Vi
TW91c2VFdmVudCYpOwogICAgIHZvaWQgbW91c2VEb3VibGVDbGljayhjb25zdCBXZWJNb3VzZUV2
ZW50Jik7CiAgICAgYm9vbCBtb3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYpOwor
ICAgIGJvb2wgZ2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wg
a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIGJvb2wgY2hhckV2ZW50KGNv
bnN0IFdlYktleWJvYXJkRXZlbnQmKTsKICAgICBib29sIHRvdWNoRXZlbnQoY29uc3QgV2ViVG91
Y2hFdmVudCYpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbWFjL1dlYklucHV0
RXZlbnRGYWN0b3J5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5tbQkocmV2aXNpb24gOTIzMTYpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDI1IEBACiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKKyNpZiAhZGVmaW5lZChNQUNfT1NfWF9WRVJTSU9O
XzEwXzcpIHx8IChNQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgTUFDX09TX1hfVkVSU0lP
Tl8xMF83KQorCitlbnVtIHsKKwlOU0V2ZW50UGhhc2VOb25lICAgICAgICA9IDAsCisJTlNFdmVu
dFBoYXNlQmVnYW4gICAgICAgPSAweDEgPDwgMCwKKwlOU0V2ZW50UGhhc2VTdGF0aW9uYXJ5ICA9
IDB4MSA8PCAxLAorCU5TRXZlbnRQaGFzZUNoYW5nZWQgICAgID0gMHgxIDw8IDIsCisJTlNFdmVu
dFBoYXNlRW5kZWQgICAgICAgPSAweDEgPDwgMywKKwlOU0V2ZW50UGhhc2VDYW5jZWxsZWQgICA9
IDB4MSA8PCA0Cit9OwordHlwZWRlZiBOU1VJbnRlZ2VyIE5TRXZlbnRQaGFzZTsKKworQGludGVy
ZmFjZSBOU0V2ZW50IChMaW9uU0RLRGVjbGFyYXRpb25zKQorLSAoTlNFdmVudFBoYXNlKXBoYXNl
OworLSAoTlNFdmVudFBoYXNlKW1vbWVudHVtUGhhc2U7CitAZW5kCisKKyNlbmRpZiAgLy8gTUFD
X09TX1hfVkVSU0lPTl8xMF83CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBXZWJLZXlib2Fy
ZEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCkBAIC0xNDksNiArMTY4LDE5IEBAIHN0YXRpYyBpbnQgd2luZG93c0tleUNvZGVG
b3JLZXlFdmVudChOU0UKICAgICByZXR1cm4gV2ViQ29yZTo6d2luZG93c0tleUNvZGVGb3JLZXlD
b2RlKFtldmVudCBrZXlDb2RlXSk7CiB9CiAKK3N0YXRpYyBXZWJJbnB1dEV2ZW50OjpUeXBlIGdl
c3R1cmVFdmVudFR5cGVGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBzd2l0Y2ggKFtl
dmVudCB0eXBlXSkgeworICAgIGNhc2UgTlNFdmVudFR5cGVCZWdpbkdlc3R1cmU6CisgICAgICAg
IHJldHVybiBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47CisgICAgY2FzZSBOU0V2
ZW50VHlwZUVuZEdlc3R1cmU6CisgICAgICAgIHJldHVybiBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
U2Nyb2xsRW5kOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDsKKyAgICB9Cit9
CisKIHN0YXRpYyBpbmxpbmUgTlNTdHJpbmcqIHRleHRGcm9tRXZlbnQoTlNFdmVudCogZXZlbnQp
CiB7CiAgICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkKQEAgLTcwNyw2ICs3
MzksNDAgQEAgV2ViTW91c2VFdmVudCBXZWJJbnB1dEV2ZW50RmFjdG9yeTo6bW91cwogCiAvLyBX
ZWJNb3VzZVdoZWVsRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKK3N0YXRpYyBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlIHBo
YXNlRm9yTlNFdmVudFBoYXNlKE5TRXZlbnRQaGFzZSBldmVudFBoYXNlKQoreworCXVpbnQzMl90
IHBoYXNlID0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZU5vbmU7IAorCWlmIChldmVudFBoYXNl
ICYgTlNFdmVudFBoYXNlQmVnYW4pCisJCXBoYXNlIHw9IFdlYk1vdXNlV2hlZWxFdmVudDo6UGhh
c2VCZWdhbjsKKwlpZiAoZXZlbnRQaGFzZSAmIE5TRXZlbnRQaGFzZVN0YXRpb25hcnkpCisJCXBo
YXNlIHw9IFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2VTdGF0aW9uYXJ5OworCWlmIChldmVudFBo
YXNlICYgTlNFdmVudFBoYXNlQ2hhbmdlZCkKKwkJcGhhc2UgfD0gV2ViTW91c2VXaGVlbEV2ZW50
OjpQaGFzZUNoYW5nZWQ7CisJaWYgKGV2ZW50UGhhc2UgJiBOU0V2ZW50UGhhc2VFbmRlZCkKKwkJ
cGhhc2UgfD0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZUVuZGVkOworCWlmIChldmVudFBoYXNl
ICYgTlNFdmVudFBoYXNlQ2FuY2VsbGVkKQorCQlwaGFzZSB8PSBXZWJNb3VzZVdoZWVsRXZlbnQ6
OlBoYXNlQ2FuY2VsbGVkOworCXJldHVybiBzdGF0aWNfY2FzdDxXZWJNb3VzZVdoZWVsRXZlbnQ6
OlBoYXNlPihwaGFzZSk7Cit9CisKK3N0YXRpYyBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlIHBo
YXNlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisJaWYgKCFbZXZlbnQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihwaGFzZSldKQorCQlyZXR1cm4gV2ViTW91c2VXaGVlbEV2ZW50OjpQ
aGFzZU5vbmU7CisKKwlOU0V2ZW50UGhhc2UgZXZlbnRQaGFzZSA9IFtldmVudCBwaGFzZV07CisJ
cmV0dXJuIHBoYXNlRm9yTlNFdmVudFBoYXNlKGV2ZW50UGhhc2UpOworfQorCitzdGF0aWMgV2Vi
TW91c2VXaGVlbEV2ZW50OjpQaGFzZSBtb21lbnR1bVBoYXNlRm9yRXZlbnQoTlNFdmVudCAqZXZl
bnQpCit7CisJaWYgKCFbZXZlbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihtb21lbnR1
bVBoYXNlKV0pCisJCXJldHVybiBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlTm9uZTsKKworCU5T
RXZlbnRQaGFzZSBldmVudE1vbWVudHVtUGhhc2UgPSBbZXZlbnQgbW9tZW50dW1QaGFzZV07CisJ
cmV0dXJuIHBoYXNlRm9yTlNFdmVudFBoYXNlKGV2ZW50TW9tZW50dW1QaGFzZSk7Cit9CisKIFdl
Yk1vdXNlV2hlZWxFdmVudCBXZWJJbnB1dEV2ZW50RmFjdG9yeTo6bW91c2VXaGVlbEV2ZW50KE5T
RXZlbnQqIGV2ZW50LCBOU1ZpZXcqIHZpZXcpCiB7CiAgICAgV2ViTW91c2VXaGVlbEV2ZW50IHJl
c3VsdDsKQEAgLTgzOCw2ICs5MDQsNyBAQCBXZWJNb3VzZVdoZWVsRXZlbnQgV2ViSW5wdXRFdmVu
dEZhY3Rvcnk6CiAgICAgICAgIHJlc3VsdC5kZWx0YVkgPSBDR0V2ZW50R2V0SW50ZWdlclZhbHVl
RmllbGQoY2dFdmVudCwga0NHU2Nyb2xsV2hlZWxFdmVudFBvaW50RGVsdGFBeGlzMSk7CiAgICAg
ICAgIHJlc3VsdC53aGVlbFRpY2tzWCA9IHJlc3VsdC5kZWx0YVggLyBzY3JvbGxiYXJQaXhlbHNQ
ZXJDb2NvYVRpY2s7CiAgICAgICAgIHJlc3VsdC53aGVlbFRpY2tzWSA9IHJlc3VsdC5kZWx0YVkg
LyBzY3JvbGxiYXJQaXhlbHNQZXJDb2NvYVRpY2s7CisgICAgICAgIHJlc3VsdC5oYXNQcmVjaXNl
U2Nyb2xsaW5nRGVsdGFzID0gdHJ1ZTsKICAgICB9IGVsc2UgewogICAgICAgICByZXN1bHQuZGVs
dGFYID0gW2V2ZW50IGRlbHRhWF0gKiBzY3JvbGxiYXJQaXhlbHNQZXJDb2NvYVRpY2s7CiAgICAg
ICAgIHJlc3VsdC5kZWx0YVkgPSBbZXZlbnQgZGVsdGFZXSAqIHNjcm9sbGJhclBpeGVsc1BlckNv
Y29hVGljazsKQEAgLTg0Nyw2ICs5MTQsMjkgQEAgV2ViTW91c2VXaGVlbEV2ZW50IFdlYklucHV0
RXZlbnRGYWN0b3J5OgogCiAgICAgcmVzdWx0LnRpbWVTdGFtcFNlY29uZHMgPSBbZXZlbnQgdGlt
ZXN0YW1wXTsKIAorICAgIHJlc3VsdC5waGFzZSAgICAgICAgICAgICAgPSBwaGFzZUZvckV2ZW50
KGV2ZW50KTsKKyAgICByZXN1bHQubW9tZW50dW1QaGFzZSAgICAgID0gbW9tZW50dW1QaGFzZUZv
ckV2ZW50KGV2ZW50KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1dlYkdlc3R1cmVFdmVu
dCBXZWJJbnB1dEV2ZW50RmFjdG9yeTo6Z2VzdHVyZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1Zp
ZXcgKnZpZXcpCit7CisgICAgV2ViR2VzdHVyZUV2ZW50IHJlc3VsdDsKKworICAgIC8vIFVzZSBh
IHRlbXBvcmFyeSBXZWJNb3VzZUV2ZW50IHRvIGdldCB0aGUgbG9jYXRpb24uCisgICAgV2ViTW91
c2VFdmVudCB0ZW1wOworCisgICAgc2V0V2ViRXZlbnRMb2NhdGlvbkZyb21FdmVudEluVmlldygm
dGVtcCwgZXZlbnQsIHZpZXcpOworICAgIHJlc3VsdC54ID0gdGVtcC54OworICAgIHJlc3VsdC55
ID0gdGVtcC55OworICAgIHJlc3VsdC5nbG9iYWxYID0gdGVtcC5nbG9iYWxYOworICAgIHJlc3Vs
dC5nbG9iYWxZID0gdGVtcC5nbG9iYWxZOworCisgICAgcmVzdWx0LnR5cGUgPSBnZXN0dXJlRXZl
bnRUeXBlRm9yRXZlbnQoZXZlbnQpOworICAgIHJlc3VsdC5tb2RpZmllcnMgPSBtb2RpZmllcnNG
cm9tRXZlbnQoZXZlbnQpOworICAgIHJlc3VsdC50aW1lU3RhbXBTZWNvbmRzID0gW2V2ZW50IHRp
bWVzdGFtcF07CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102960</attachid>
            <date>2011-08-04 12:49:49 -0700</date>
            <delta_ts>2011-08-04 13:28:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65707-20110804154946.patch</filename>
            <type>text/plain</type>
            <size>19473</size>
            <attacher>asvitkine</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDAxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBT
dml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBF
bmFibGUgcnViYmVyIGJhbmRpbmcgd2hlbiBzY3JvbGxpbmcuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKwog
MjAxMS0wOC0wNCAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBHZXQgcmlkIG9mIFJlc291cmNlUmVxdWVzdEJhc2U6Om1fdGFyZ2V0VHlwZS4gTW92ZSBp
dCB0byBjaHJvbWl1bSdzIFJlc291cmNlUmVxdWVzdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCShyZXZpc2lvbiA5MjQwMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03Myw3ICs3Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2Nyb2xsQnlQaXhl
bFdoZWVsRXZlbnQKICAgICB9OwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIE9TKE1BQykKICAg
ICBlbnVtIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHsKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2VOb25lICAgICAgICA9IDAsCiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
QmVnYW4gICAgICAgPSAxIDw8IDEsCkBAIC05Nyw3ICs5Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgICwgbV9jdHJsS2V5KGZhbHNlKQogICAgICAgICAgICAgLCBtX2FsdEtl
eShmYWxzZSkKICAgICAgICAgICAgICwgbV9tZXRhS2V5KGZhbHNlKQotI2lmIFBMQVRGT1JNKE1B
QykKKyNpZiBPUyhNQUMpCiAgICAgICAgICAgICAsIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRh
cyhmYWxzZSkKICAgICAgICAgICAgICwgbV9waGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5v
bmUpCiAgICAgICAgICAgICAsIG1fbW9tZW50dW1QaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZU5vbmUpCkBAIC0xMTksNyArMTE5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgLCBtX2N0cmxLZXkoY3RybEtleSkKICAgICAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQog
ICAgICAgICAgICAgLCBtX21ldGFLZXkobWV0YUtleSkKLSNpZiBQTEFURk9STShNQUMpCisjaWYg
T1MoTUFDKQogICAgICAgICAgICAgLCBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoZmFsc2Up
CiAgICAgICAgICAgICAsIG1fcGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lKQogICAg
ICAgICAgICAgLCBtX21vbWVudHVtUGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lKQpA
QCAtMTc0LDcgKzE3NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBkZWZpbmVkKF9fT0JK
Q19fKQogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCAqLCBOU1ZpZXcgKndpbmRv
d1ZpZXcpOwogI2VuZGlmCisjZW5kaWYKIAorI2lmIE9TKE1BQykKICAgICAgICAgUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2UgcGhhc2UoKSBjb25zdCB7IHJldHVybiBtX3BoYXNlOyB9CiAgICAgICAg
IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1vbWVudHVtUGhhc2UoKSBjb25zdCB7IHJldHVybiBt
X21vbWVudHVtUGhhc2U7IH0KICAgICAgICAgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFz
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOyB9CkBAIC0yMTMs
NyArMjE1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fY3RybEtleTsK
ICAgICAgICAgYm9vbCBtX2FsdEtleTsKICAgICAgICAgYm9vbCBtX21ldGFLZXk7Ci0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIE9TKE1BQykKICAgICAgICAgYm9vbCBtX2hhc1ByZWNpc2VTY3JvbGxp
bmdEZWx0YXM7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1fcGhhc2U7CiAgICAg
ICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1fbW9tZW50dW1QaGFzZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5p
bWF0b3JDaHJvbWl1bU1hYy5tbQkocmV2aXNpb24gOTI0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC04NTIsNyArODUyLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpo
YW5kbGVHZQogewogICAgIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50OjpTY3JvbGxCZWdpblR5cGUpCiAgICAgICAgIGJlZ2luU2Nyb2xsR2VzdHVyZSgpOwot
ICAgIGVsc2UKKyAgICBlbHNlIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlKQogICAgICAgICBlbmRTY3JvbGxHZXN0dXJlKCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MjQwMSkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MzYgQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBTdml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBFbmFibGUgcnViYmVyIGJhbmRpbmcgd2hlbiBzY3Jv
bGxpbmcuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY1NzA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1YmxpYy9XZWJJbnB1dEV2ZW50Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1vdXNlV2hlZWxFdmVudDo6V2ViTW91c2VXaGVlbEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50OjpXZWJHZXN0dXJlRXZlbnQpOgorICAgICAg
ICAqIHB1YmxpYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkuaDoKKyAgICAgICAgKiBzcmMvV2Vi
SW5wdXRFdmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVdoZWVs
RXZlbnRCdWlsZGVyOjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYktp
dDo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxk
ZXIpOgorICAgICAgICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oOgorICAgICAgICAq
IHNyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51
SW1wbDo6R2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51SW1wbDo6
aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgICogc3JjL1dlYlBvcHVwTWVudUltcGwuaDoKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRsZUlu
cHV0RXZlbnQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIHNyYy9t
YWMvV2ViSW5wdXRFdmVudEZhY3RvcnkubW06CisgICAgICAgIChXZWJLaXQ6Omdlc3R1cmVFdmVu
dFR5cGVGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OnBoYXNlRm9yTlNFdmVudFBoYXNlKToK
KyAgICAgICAgKFdlYktpdDo6cGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Om1vbWVu
dHVtUGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklucHV0RXZlbnRGYWN0b3J5
Ojptb3VzZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnB1dEV2ZW50RmFjdG9y
eTo6Z2VzdHVyZUV2ZW50KToKKwogMjAxMS0wOC0wNCAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBHZXQgcmlkIG9mIFJlc291cmNlUmVxdWVzdEJhc2U6
Om1fdGFyZ2V0VHlwZS4gTW92ZSBpdCB0byBjaHJvbWl1bSdzIFJlc291cmNlUmVxdWVzdC4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkJKHJldmlzaW9uIDkyNDAxKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTMsNiArMTUzLDcgQEAKICAgICAgIH1dLAogICAgICAgWydPUz09Im1hYyInLCB7CiAgICAgICAg
ICdmZWF0dXJlX2RlZmluZXMnOiBbCisgICAgICAgICAgJ0VOQUJMRV9SVUJCRVJfQkFORElORz0x
JywKICAgICAgICAgICAnV1RGX1VTRV9TS0lBX09OX01BQ19DSFJPTUlVTT08KHVzZV9za2lhKScs
CiAgICAgICAgIF0sCiAgICAgICB9XSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYklucHV0RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgJKHJldmlzaW9uIDkyNDAxKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAs
NiArMTAwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgS2V5VXAsCiAgICAgICAgIENoYXIsCiAKKyAg
ICAgICAgLy8gV2ViR2VzdHVyZUV2ZW50CisgICAgICAgIEdlc3R1cmVTY3JvbGxCZWdpbiwKKyAg
ICAgICAgR2VzdHVyZVNjcm9sbEVuZCwKKwogICAgICAgICAvLyBXZWJUb3VjaEV2ZW50CiAgICAg
ICAgIFRvdWNoU3RhcnQsCiAgICAgICAgIFRvdWNoTW92ZSwKQEAgLTI3OSw2ICsyODMsMTUgQEAg
cHVibGljOgogCiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQgOiBwdWJsaWMgV2ViTW91c2VFdmVu
dCB7CiBwdWJsaWM6CisgICAgZW51bSBQaGFzZSB7CisgICAgICAgIFBoYXNlTm9uZSAgICAgICAg
PSAwLAorICAgICAgICBQaGFzZUJlZ2FuICAgICAgID0gMSA8PCAxLAorICAgICAgICBQaGFzZVN0
YXRpb25hcnkgID0gMSA8PCAyLAorICAgICAgICBQaGFzZUNoYW5nZWQgICAgID0gMSA8PCAzLAor
ICAgICAgICBQaGFzZUVuZGVkICAgICAgID0gMSA8PCA0LAorICAgICAgICBQaGFzZUNhbmNlbGxl
ZCAgID0gMSA8PCA1LAorICAgIH07CisKICAgICBmbG9hdCBkZWx0YVg7CiAgICAgZmxvYXQgZGVs
dGFZOwogICAgIGZsb2F0IHdoZWVsVGlja3NYOwpAQCAtMjkwLDYgKzMwMywxMCBAQCBwdWJsaWM6
CiAgICAgLy8gdHJhbnNmZXJpbmcgaXQgb3ZlciB0aGUgd2lyZS4KICAgICBpbnQgc2Nyb2xsQnlQ
YWdlOwogCisgICAgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOworICAgIFBoYXNlIHBo
YXNlOworICAgIFBoYXNlIG1vbWVudHVtUGhhc2U7CisKICAgICBXZWJNb3VzZVdoZWVsRXZlbnQo
dW5zaWduZWQgc2l6ZVBhcmFtID0gc2l6ZW9mKFdlYk1vdXNlV2hlZWxFdmVudCkpCiAgICAgICAg
IDogV2ViTW91c2VFdmVudChzaXplUGFyYW0pCiAgICAgICAgICwgZGVsdGFYKDAuMGYpCkBAIC0y
OTcsNiArMzE0LDI3IEBAIHB1YmxpYzoKICAgICAgICAgLCB3aGVlbFRpY2tzWCgwLjBmKQogICAg
ICAgICAsIHdoZWVsVGlja3NZKDAuMGYpCiAgICAgICAgICwgc2Nyb2xsQnlQYWdlKGZhbHNlKQor
ICAgICAgICAsIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoZmFsc2UpCisgICAgICAgICwgcGhh
c2UoUGhhc2VOb25lKQorICAgICAgICAsIG1vbWVudHVtUGhhc2UoUGhhc2VOb25lKQorICAgIHsK
KyAgICB9Cit9OworCisvLyBXZWJHZXN0dXJlRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgV2ViR2VzdHVy
ZUV2ZW50IDogcHVibGljIFdlYklucHV0RXZlbnQgeworcHVibGljOgorICAgIGludCB4OworICAg
IGludCB5OworICAgIGludCBnbG9iYWxYOworICAgIGludCBnbG9iYWxZOworCisgICAgV2ViR2Vz
dHVyZUV2ZW50KHVuc2lnbmVkIHNpemVQYXJhbSA9IHNpemVvZihXZWJHZXN0dXJlRXZlbnQpKQor
ICAgICAgICA6IHgoMCkKKyAgICAgICAgLCB5KDApCisgICAgICAgICwgZ2xvYmFsWCgwKQorICAg
ICAgICAsIGdsb2JhbFkoMCkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5o
CShyZXZpc2lvbiA5MjQwMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL21hYy9X
ZWJJbnB1dEV2ZW50RmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNl
RXZlbnQ7CiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7
CiAKIGNsYXNzIFdlYklucHV0RXZlbnRGYWN0b3J5IHsKIHB1YmxpYzoKQEAgLTUzLDYgKzU0LDcg
QEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYktleWJvYXJkRXZlbnQga2V5
Ym9hcmRFdmVudCh3Y2hhcl90IGNoYXJhY3RlciwgaW50IG1vZGlmaWVycywgZG91YmxlIHRpbWVT
dGFtcFNlY29uZHMpOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYk1vdXNlRXZlbnQgbW91
c2VFdmVudChOU0V2ZW50KiwgTlNWaWV3Kik7CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2Vi
TW91c2VXaGVlbEV2ZW50IG1vdXNlV2hlZWxFdmVudChOU0V2ZW50KiwgTlNWaWV3Kik7CisgICAg
V0VCS0lUX0FQSSBzdGF0aWMgV2ViR2VzdHVyZUV2ZW50IGdlc3R1cmVFdmVudChOU0V2ZW50ICos
IE5TVmlldyAqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNw
cAkocmV2aXNpb24gOTI0MDEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1
dEV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw4ICsxMDAsMzcgQEAg
UGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVlbAogICAgIG1fY3RybEtleSA9
IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xLZXkpOwogICAgIG1fYWx0S2V5
ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6QWx0S2V5KTsKICAgICBtX21ldGFLZXkg
PSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpNZXRhS2V5KTsKKyAgICBtX2hhc1ByZWNp
c2VTY3JvbGxpbmdEZWx0YXMgPSBlLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7CisgICAgbV9w
aGFzZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPihlLnBo
YXNlKTsKKyAgICBtX21vbWVudHVtUGhhc2UgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZT4oZS5tb21lbnR1bVBoYXNlKTsKKyAgICBtX3RpbWVzdGFtcCA9IGUu
dGltZVN0YW1wU2Vjb25kczsKIH0KIAorLy8gUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpZiBF
TkFCTEUoR0VTVFVSRV9FVkVOVFMpCitQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRm
b3JtR2VzdHVyZUV2ZW50QnVpbGRlcihXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViR2VzdHVyZUV2
ZW50JiBlKQoreworICAgIHN3aXRjaCAoZS50eXBlKSB7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlU2Nyb2xsQmVnaW46CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtR2VzdHVyZUV2
ZW50OjpTY3JvbGxCZWdpblR5cGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJl
RXZlbnQ6OlNjcm9sbEVuZFR5cGU7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBtX3Bvc2l0aW9uID0gd2lkZ2V0
LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coSW50UG9pbnQoZS54LCBlLnkpKTsKKyAgICBt
X2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQoZS5nbG9iYWxYLCBlLmdsb2JhbFkpOworICAgIG1f
dGltZXN0YW1wID0gZS50aW1lU3RhbXBTZWNvbmRzOworICAgIG1fc2hpZnRLZXkgPSAoZS5tb2Rp
ZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpTaGlmdEtleSk7CisgICAgbV9jdHJsS2V5ID0gKGUubW9k
aWZpZXJzICYgV2ViSW5wdXRFdmVudDo6Q29udHJvbEtleSk7CisgICAgbV9hbHRLZXkgPSAoZS5t
b2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpBbHRLZXkpOworICAgIG1fbWV0YUtleSA9IChlLm1v
ZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6Ok1ldGFLZXkpOworfQorI2VuZGlmCisKIC8vIE1ha2VQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogc3RhdGljIGlubGluZSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlR5
cGUgdG9QbGF0Zm9ybUtleWJvYXJkRXZlbnRUeXBlKFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVu
dENvbnZlcnNpb24uaAkocmV2aXNpb24gOTI0MDEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw3IEBACiAKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAKKyNpbmNsdWRlICJQbGF0Zm9y
bUdlc3R1cmVFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hFdmVu
dC5oIgpAQCAtNTEsNiArNTIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYk1vdXNl
RXZlbnQ7CiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50
OworY2xhc3MgV2ViR2VzdHVyZUV2ZW50OwogCiAvLyBUaGVzZSBjbGFzc2VzIGFyZSB1c2VkIHRv
IGNvbnZlcnQgZnJvbSBXZWJJbnB1dEV2ZW50IHN1YmNsYXNzZXMgdG8KIC8vIGNvcnJlc3BvbmRp
bmcgV2ViQ29yZSBldmVudHMuCkBAIC02NSw2ICs2NywxMyBAQCBwdWJsaWM6CiAgICAgUGxhdGZv
cm1XaGVlbEV2ZW50QnVpbGRlcihXZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJNb3VzZVdoZWVs
RXZlbnQmKTsKIH07CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitjbGFzcyBQbGF0Zm9y
bUdlc3R1cmVFdmVudEJ1aWxkZXIgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZl
bnQgeworcHVibGljOgorICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcihXZWJDb3JlOjpX
aWRnZXQqLCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKK307CisjZW5kaWYKKwogY2xhc3MgUGxh
dGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlciA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUtleWJv
YXJkRXZlbnQgewogcHVibGljOgogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIoY29u
c3QgV2ViS2V5Ym9hcmRFdmVudCYpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUG9wdXBNZW51SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5jcHAJKHJldmlzaW9uIDkyNDAxKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzMyw2ICsxMzMsMTEgQEAgdm9pZCBXZWJQb3B1cE1lbnVJbXBsOjpNb3VzZVdoZWVsKGNvbnN0
IAogICAgIG1fd2lkZ2V0LT5oYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxk
ZXIobV93aWRnZXQsIGV2ZW50KSk7CiB9CiAKK2Jvb2wgV2ViUG9wdXBNZW51SW1wbDo6R2VzdHVy
ZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCit7CisgICAgcmV0dXJuIG1fd2lk
Z2V0LT5oYW5kbGVHZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKG1fd2lk
Z2V0LCBldmVudCkpOworfQorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIGJvb2wgV2ViUG9w
dXBNZW51SW1wbDo6VG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50JiBldmVudCkKIHsKQEAg
LTI2Niw2ICsyNzEsMTAgQEAgYm9vbCBXZWJQb3B1cE1lbnVJbXBsOjpoYW5kbGVJbnB1dEV2ZW50
KAogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hDYW5jZWw6CiAgICAgICAgIHJldHVybiBU
b3VjaEV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJUb3VjaEV2ZW50Kj4oJmlucHV0RXZlbnQp
KTsKIAorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgorICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKKyAgICAgICAgcmV0dXJuIEdlc3R1
cmVFdmVudCgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50Kj4oJmlucHV0RXZlbnQp
KTsKKwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VW5kZWZpbmVkOgogICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6TW91c2VFbnRlcjoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OkNvbnRleHRNZW51
OgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwu
aAkocmV2aXNpb24gOTI0MDEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1
cE1lbnVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAgY2xhc3MgV2lkZ2V0
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkdlc3R1cmVFdmVudDsKIGNsYXNz
IFdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTW91c2VX
aGVlbEV2ZW50OwpAQCAtMTA0LDYgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIE1vdXNlVXAo
Y29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIHZvaWQgTW91c2VEb3VibGVDbGljayhjb25zdCBX
ZWJNb3VzZUV2ZW50Jik7CiAgICAgdm9pZCBNb3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxF
dmVudCYpOworICAgIGJvb2wgR2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwog
ICAgIGJvb2wgVG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50Jik7CiAgICAgYm9vbCBLZXlF
dmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDkyNDAxKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDMs
NiArNjAzLDE0IEBAIGJvb2wgV2ViVmlld0ltcGw6Om1vdXNlV2hlZWwoY29uc3QgV2ViTW8KICAg
ICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxl
V2hlZWxFdmVudChwbGF0Zm9ybUV2ZW50KTsKIH0KIAorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5U
UykKK2Jvb2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQm
IGV2ZW50KQoreworICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50
KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KTsKKyAgICByZXR1cm4gbWFpbkZy
YW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlR2VzdHVyZUV2ZW50KHBs
YXRmb3JtRXZlbnQpOworfQorI2VuZGlmCisKIGJvb2wgV2ViVmlld0ltcGw6OmtleUV2ZW50KGNv
bnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAgIEFTU0VSVCgoZXZlbnQudHlwZSA9
PSBXZWJJbnB1dEV2ZW50OjpSYXdLZXlEb3duKQpAQCAtMTI4MCw2ICsxMjg4LDEzIEBAIGJvb2wg
V2ViVmlld0ltcGw6OmhhbmRsZUlucHV0RXZlbnQoY29uc3QKICAgICAgICAgaGFuZGxlZCA9IGNo
YXJFdmVudCgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCo+KCZpbnB1dEV2ZW50
KSk7CiAgICAgICAgIGJyZWFrOwogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgorICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKKyAgICAgICAgaGFuZGxlZCA9IGdlc3R1cmVFdmVudCgq
c3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKKyAgICAg
ICAgYnJlYWs7CisjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgY2FzZSBX
ZWJJbnB1dEV2ZW50OjpUb3VjaFN0YXJ0OgogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hN
b3ZlOgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCShyZXZp
c2lvbiA5MjQwMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAgY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9i
amVjdDsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRDbGllbnQ7CiBjbGFzcyBXZWJEZXZUb29sc0Fn
ZW50UHJpdmF0ZTsKIGNsYXNzIFdlYkZyYW1lSW1wbDsKK2NsYXNzIFdlYkdlc3R1cmVFdmVudDsK
IGNsYXNzIFdlYkltYWdlOwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNl
RXZlbnQ7CkBAIC0yNzcsNiArMjc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgbW91c2VDb250ZXh0
TWVudShjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAgdm9pZCBtb3VzZURvdWJsZUNsaWNrKGNv
bnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICBib29sIG1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VX
aGVlbEV2ZW50Jik7CisgICAgYm9vbCBnZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50
Jik7CiAgICAgYm9vbCBrZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAgYm9v
bCBjaGFyRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIGJvb2wgdG91Y2hFdmVu
dChjb25zdCBXZWJUb3VjaEV2ZW50Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvbWFjL1dlYklucHV0RXZlbnRGYWN0b3J5Lm1tCShyZXZpc2lvbiA5MjQw
MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9y
eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMjUgQEAKICNpbmNsdWRlICJXZWJJbnB1
dEV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KIAorI2lmICFkZWZpbmVkKE1B
Q19PU19YX1ZFUlNJT05fMTBfNykgfHwgKE1BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCBN
QUNfT1NfWF9WRVJTSU9OXzEwXzcpCisKK2VudW0geworICAgIE5TRXZlbnRQaGFzZU5vbmUgICAg
ICAgID0gMCwKKyAgICBOU0V2ZW50UGhhc2VCZWdhbiAgICAgICA9IDB4MSA8PCAwLAorICAgIE5T
RXZlbnRQaGFzZVN0YXRpb25hcnkgID0gMHgxIDw8IDEsCisgICAgTlNFdmVudFBoYXNlQ2hhbmdl
ZCAgICAgPSAweDEgPDwgMiwKKyAgICBOU0V2ZW50UGhhc2VFbmRlZCAgICAgICA9IDB4MSA8PCAz
LAorICAgIE5TRXZlbnRQaGFzZUNhbmNlbGxlZCAgID0gMHgxIDw8IDQKK307Cit0eXBlZGVmIE5T
VUludGVnZXIgTlNFdmVudFBoYXNlOworCitAaW50ZXJmYWNlIE5TRXZlbnQgKExpb25TREtEZWNs
YXJhdGlvbnMpCistIChOU0V2ZW50UGhhc2UpcGhhc2U7CistIChOU0V2ZW50UGhhc2UpbW9tZW50
dW1QaGFzZTsKK0BlbmQKKworI2VuZGlmICAvLyBNQUNfT1NfWF9WRVJTSU9OXzEwXzcKKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIC8vIFdlYktleWJvYXJkRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE0OSw2ICsxNjgs
MTkgQEAgc3RhdGljIGludCB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KE5TRQogICAgIHJldHVy
biBXZWJDb3JlOjp3aW5kb3dzS2V5Q29kZUZvcktleUNvZGUoW2V2ZW50IGtleUNvZGVdKTsKIH0K
IAorc3RhdGljIFdlYklucHV0RXZlbnQ6OlR5cGUgZ2VzdHVyZUV2ZW50VHlwZUZvckV2ZW50KE5T
RXZlbnQgKmV2ZW50KQoreworICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CisgICAgY2FzZSBO
U0V2ZW50VHlwZUJlZ2luR2VzdHVyZToKKyAgICAgICAgcmV0dXJuIFdlYklucHV0RXZlbnQ6Okdl
c3R1cmVTY3JvbGxCZWdpbjsKKyAgICBjYXNlIE5TRXZlbnRUeXBlRW5kR2VzdHVyZToKKyAgICAg
ICAgcmV0dXJuIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBXZWJJbnB1dEV2
ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOworICAgIH0KK30KKwogc3RhdGljIGlubGluZSBOU1N0cmlu
ZyogdGV4dEZyb21FdmVudChOU0V2ZW50KiBldmVudCkKIHsKICAgICBpZiAoW2V2ZW50IHR5cGVd
ID09IE5TRmxhZ3NDaGFuZ2VkKQpAQCAtNzA3LDYgKzczOSw0MCBAQCBXZWJNb3VzZUV2ZW50IFdl
YklucHV0RXZlbnRGYWN0b3J5Ojptb3VzCiAKIC8vIFdlYk1vdXNlV2hlZWxFdmVudCAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorc3Rh
dGljIFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2UgcGhhc2VGb3JOU0V2ZW50UGhhc2UoTlNFdmVu
dFBoYXNlIGV2ZW50UGhhc2UpCit7CisgICAgdWludDMyX3QgcGhhc2UgPSBXZWJNb3VzZVdoZWVs
RXZlbnQ6OlBoYXNlTm9uZTsgCisgICAgaWYgKGV2ZW50UGhhc2UgJiBOU0V2ZW50UGhhc2VCZWdh
bikKKyAgICAgICAgcGhhc2UgfD0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZUJlZ2FuOworICAg
IGlmIChldmVudFBoYXNlICYgTlNFdmVudFBoYXNlU3RhdGlvbmFyeSkKKyAgICAgICAgcGhhc2Ug
fD0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZVN0YXRpb25hcnk7CisgICAgaWYgKGV2ZW50UGhh
c2UgJiBOU0V2ZW50UGhhc2VDaGFuZ2VkKQorICAgICAgICBwaGFzZSB8PSBXZWJNb3VzZVdoZWVs
RXZlbnQ6OlBoYXNlQ2hhbmdlZDsKKyAgICBpZiAoZXZlbnRQaGFzZSAmIE5TRXZlbnRQaGFzZUVu
ZGVkKQorICAgICAgICBwaGFzZSB8PSBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlRW5kZWQ7Cisg
ICAgaWYgKGV2ZW50UGhhc2UgJiBOU0V2ZW50UGhhc2VDYW5jZWxsZWQpCisgICAgICAgIHBoYXNl
IHw9IFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2VDYW5jZWxsZWQ7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2U+KHBoYXNlKTsKK30KKworc3RhdGljIFdl
Yk1vdXNlV2hlZWxFdmVudDo6UGhhc2UgcGhhc2VGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sK
KyAgICBpZiAoIVtldmVudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBoYXNlKV0pCisg
ICAgICAgIHJldHVybiBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlTm9uZTsKKworICAgIE5TRXZl
bnRQaGFzZSBldmVudFBoYXNlID0gW2V2ZW50IHBoYXNlXTsKKyAgICByZXR1cm4gcGhhc2VGb3JO
U0V2ZW50UGhhc2UoZXZlbnRQaGFzZSk7Cit9CisKK3N0YXRpYyBXZWJNb3VzZVdoZWVsRXZlbnQ6
OlBoYXNlIG1vbWVudHVtUGhhc2VGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBpZiAo
IVtldmVudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG1vbWVudHVtUGhhc2UpXSkKKyAg
ICAgICAgcmV0dXJuIFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2VOb25lOworCisgICAgTlNFdmVu
dFBoYXNlIGV2ZW50TW9tZW50dW1QaGFzZSA9IFtldmVudCBtb21lbnR1bVBoYXNlXTsKKyAgICBy
ZXR1cm4gcGhhc2VGb3JOU0V2ZW50UGhhc2UoZXZlbnRNb21lbnR1bVBoYXNlKTsKK30KKwogV2Vi
TW91c2VXaGVlbEV2ZW50IFdlYklucHV0RXZlbnRGYWN0b3J5Ojptb3VzZVdoZWVsRXZlbnQoTlNF
dmVudCogZXZlbnQsIE5TVmlldyogdmlldykKIHsKICAgICBXZWJNb3VzZVdoZWVsRXZlbnQgcmVz
dWx0OwpAQCAtODM4LDYgKzkwNCw3IEBAIFdlYk1vdXNlV2hlZWxFdmVudCBXZWJJbnB1dEV2ZW50
RmFjdG9yeToKICAgICAgICAgcmVzdWx0LmRlbHRhWSA9IENHRXZlbnRHZXRJbnRlZ2VyVmFsdWVG
aWVsZChjZ0V2ZW50LCBrQ0dTY3JvbGxXaGVlbEV2ZW50UG9pbnREZWx0YUF4aXMxKTsKICAgICAg
ICAgcmVzdWx0LndoZWVsVGlja3NYID0gcmVzdWx0LmRlbHRhWCAvIHNjcm9sbGJhclBpeGVsc1Bl
ckNvY29hVGljazsKICAgICAgICAgcmVzdWx0LndoZWVsVGlja3NZID0gcmVzdWx0LmRlbHRhWSAv
IHNjcm9sbGJhclBpeGVsc1BlckNvY29hVGljazsKKyAgICAgICAgcmVzdWx0Lmhhc1ByZWNpc2VT
Y3JvbGxpbmdEZWx0YXMgPSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3VsdC5kZWx0
YVggPSBbZXZlbnQgZGVsdGFYXSAqIHNjcm9sbGJhclBpeGVsc1BlckNvY29hVGljazsKICAgICAg
ICAgcmVzdWx0LmRlbHRhWSA9IFtldmVudCBkZWx0YVldICogc2Nyb2xsYmFyUGl4ZWxzUGVyQ29j
b2FUaWNrOwpAQCAtODQ3LDYgKzkxNCwyOSBAQCBXZWJNb3VzZVdoZWVsRXZlbnQgV2ViSW5wdXRF
dmVudEZhY3Rvcnk6CiAKICAgICByZXN1bHQudGltZVN0YW1wU2Vjb25kcyA9IFtldmVudCB0aW1l
c3RhbXBdOwogCisgICAgcmVzdWx0LnBoYXNlICAgICAgICAgICAgICA9IHBoYXNlRm9yRXZlbnQo
ZXZlbnQpOworICAgIHJlc3VsdC5tb21lbnR1bVBoYXNlICAgICAgPSBtb21lbnR1bVBoYXNlRm9y
RXZlbnQoZXZlbnQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworV2ViR2VzdHVyZUV2ZW50
IFdlYklucHV0RXZlbnRGYWN0b3J5OjpnZXN0dXJlRXZlbnQoTlNFdmVudCAqZXZlbnQsIE5TVmll
dyAqdmlldykKK3sKKyAgICBXZWJHZXN0dXJlRXZlbnQgcmVzdWx0OworCisgICAgLy8gVXNlIGEg
dGVtcG9yYXJ5IFdlYk1vdXNlRXZlbnQgdG8gZ2V0IHRoZSBsb2NhdGlvbi4KKyAgICBXZWJNb3Vz
ZUV2ZW50IHRlbXA7CisKKyAgICBzZXRXZWJFdmVudExvY2F0aW9uRnJvbUV2ZW50SW5WaWV3KCZ0
ZW1wLCBldmVudCwgdmlldyk7CisgICAgcmVzdWx0LnggPSB0ZW1wLng7CisgICAgcmVzdWx0Lnkg
PSB0ZW1wLnk7CisgICAgcmVzdWx0Lmdsb2JhbFggPSB0ZW1wLmdsb2JhbFg7CisgICAgcmVzdWx0
Lmdsb2JhbFkgPSB0ZW1wLmdsb2JhbFk7CisKKyAgICByZXN1bHQudHlwZSA9IGdlc3R1cmVFdmVu
dFR5cGVGb3JFdmVudChldmVudCk7CisgICAgcmVzdWx0Lm1vZGlmaWVycyA9IG1vZGlmaWVyc0Zy
b21FdmVudChldmVudCk7CisgICAgcmVzdWx0LnRpbWVTdGFtcFNlY29uZHMgPSBbZXZlbnQgdGlt
ZXN0YW1wXTsKKwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102968</attachid>
            <date>2011-08-04 13:28:55 -0700</date>
            <delta_ts>2011-08-04 14:02:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65707-20110804162853.patch</filename>
            <type>text/plain</type>
            <size>19669</size>
            <attacher>asvitkine</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDAxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBT
dml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBF
bmFibGUgcnViYmVyIGJhbmRpbmcgd2hlbiBzY3JvbGxpbmcuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKwog
MjAxMS0wOC0wNCAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBHZXQgcmlkIG9mIFJlc291cmNlUmVxdWVzdEJhc2U6Om1fdGFyZ2V0VHlwZS4gTW92ZSBp
dCB0byBjaHJvbWl1bSdzIFJlc291cmNlUmVxdWVzdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCShyZXZpc2lvbiA5MjQwMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03Myw3ICs3Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2Nyb2xsQnlQaXhl
bFdoZWVsRXZlbnQKICAgICB9OwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIE9TKERBUldJTikK
ICAgICBlbnVtIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHsKICAgICAgICAgUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2VOb25lICAgICAgICA9IDAsCiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlQmVnYW4gICAgICAgPSAxIDw8IDEsCkBAIC05Nyw3ICs5Nyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgICAgICwgbV9jdHJsS2V5KGZhbHNlKQogICAgICAgICAgICAgLCBtX2Fs
dEtleShmYWxzZSkKICAgICAgICAgICAgICwgbV9tZXRhS2V5KGZhbHNlKQotI2lmIFBMQVRGT1JN
KE1BQykKKyNpZiBPUyhEQVJXSU4pCiAgICAgICAgICAgICAsIG1faGFzUHJlY2lzZVNjcm9sbGlu
Z0RlbHRhcyhmYWxzZSkKICAgICAgICAgICAgICwgbV9waGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZU5vbmUpCiAgICAgICAgICAgICAsIG1fbW9tZW50dW1QaGFzZShQbGF0Zm9ybVdoZWVsRXZl
bnRQaGFzZU5vbmUpCkBAIC0xMTksNyArMTE5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtleSkKICAgICAgICAgICAgICwgbV9hbHRLZXkoYWx0
S2V5KQogICAgICAgICAgICAgLCBtX21ldGFLZXkobWV0YUtleSkKLSNpZiBQTEFURk9STShNQUMp
CisjaWYgT1MoREFSV0lOKQogICAgICAgICAgICAgLCBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0
YXMoZmFsc2UpCiAgICAgICAgICAgICAsIG1fcGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VO
b25lKQogICAgICAgICAgICAgLCBtX21vbWVudHVtUGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2VOb25lKQpAQCAtMTc0LDcgKzE3NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBkZWZp
bmVkKF9fT0JKQ19fKQogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCAqLCBOU1Zp
ZXcgKndpbmRvd1ZpZXcpOwogI2VuZGlmCisjZW5kaWYKIAorI2lmIE9TKERBUldJTikKICAgICAg
ICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2UoKSBjb25zdCB7IHJldHVybiBtX3BoYXNl
OyB9CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1vbWVudHVtUGhhc2UoKSBjb25z
dCB7IHJldHVybiBtX21vbWVudHVtUGhhc2U7IH0KICAgICAgICAgYm9vbCBoYXNQcmVjaXNlU2Ny
b2xsaW5nRGVsdGFzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFz
OyB9CkBAIC0yMTMsNyArMjE1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29s
IG1fY3RybEtleTsKICAgICAgICAgYm9vbCBtX2FsdEtleTsKICAgICAgICAgYm9vbCBtX21ldGFL
ZXk7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIE9TKERBUldJTikKICAgICAgICAgYm9vbCBtX2hh
c1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
IG1fcGhhc2U7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1fbW9tZW50dW1QaGFz
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9y
Q2hyb21pdW1NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbQkocmV2aXNpb24gOTI0MDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NTIsNyArODUyLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRv
ckNocm9taXVtTWFjOjpoYW5kbGVHZQogewogICAgIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGUpCiAgICAgICAgIGJlZ2luU2Ny
b2xsR2VzdHVyZSgpOwotICAgIGVsc2UKKyAgICBlbHNlIGlmIChnZXN0dXJlRXZlbnQudHlwZSgp
ID09IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlKQogICAgICAgICBlbmRTY3Jv
bGxHZXN0dXJlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lv
biA5MjQwMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBTdml0a2luZSAgPGFzdml0
a2luZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBFbmFibGUgcnViYmVyIGJh
bmRpbmcgd2hlbiBzY3JvbGxpbmcuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY1NzA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1YmxpYy9XZWJJbnB1
dEV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYk1vdXNlV2hlZWxFdmVudDo6V2ViTW91c2VX
aGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50OjpXZWJHZXN0dXJl
RXZlbnQpOgorICAgICAgICAqIHB1YmxpYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkuaDoKKyAg
ICAgICAgKiBzcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKToK
KyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdl
c3R1cmVFdmVudEJ1aWxkZXIpOgorICAgICAgICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lv
bi5oOgorICAgICAgICAqIHNyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUG9wdXBNZW51SW1wbDo6R2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgICogc3JjL1dlYlBvcHVw
TWVudUltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OmhhbmRsZUlucHV0RXZlbnQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgor
ICAgICAgICAqIHNyYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkubW06CisgICAgICAgIChXZWJL
aXQ6Omdlc3R1cmVFdmVudFR5cGVGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OnBoYXNlRm9y
TlNFdmVudFBoYXNlKToKKyAgICAgICAgKFdlYktpdDo6cGhhc2VGb3JFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6Om1vbWVudHVtUGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
cHV0RXZlbnRGYWN0b3J5Ojptb3VzZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnB1dEV2ZW50RmFjdG9yeTo6Z2VzdHVyZUV2ZW50KToKKwogMjAxMS0wOC0wNCAgSm9jaGVuIEVp
c2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBHZXQgcmlkIG9mIFJlc291
cmNlUmVxdWVzdEJhc2U6Om1fdGFyZ2V0VHlwZS4gTW92ZSBpdCB0byBjaHJvbWl1bSdzIFJlc291
cmNlUmVxdWVzdC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkJKHJldmlz
aW9uIDkyNDAxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDcgQEAKICAgICAgIH1dLAogICAgICAgWydPUz09Im1h
YyInLCB7CiAgICAgICAgICdmZWF0dXJlX2RlZmluZXMnOiBbCisgICAgICAgICAgJ0VOQUJMRV9S
VUJCRVJfQkFORElORz0xJywKICAgICAgICAgICAnV1RGX1VTRV9TS0lBX09OX01BQ19DSFJPTUlV
TT08KHVzZV9za2lhKScsCiAgICAgICAgIF0sCiAgICAgICB9XSwKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgJKHJldmlzaW9uIDkyNDAxKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDAsNiArMTAwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgS2V5VXAsCiAgICAg
ICAgIENoYXIsCiAKKyAgICAgICAgLy8gV2ViR2VzdHVyZUV2ZW50CisgICAgICAgIEdlc3R1cmVT
Y3JvbGxCZWdpbiwKKyAgICAgICAgR2VzdHVyZVNjcm9sbEVuZCwKKwogICAgICAgICAvLyBXZWJU
b3VjaEV2ZW50CiAgICAgICAgIFRvdWNoU3RhcnQsCiAgICAgICAgIFRvdWNoTW92ZSwKQEAgLTI3
OSw2ICsyODMsMTUgQEAgcHVibGljOgogCiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQgOiBwdWJs
aWMgV2ViTW91c2VFdmVudCB7CiBwdWJsaWM6CisgICAgZW51bSBQaGFzZSB7CisgICAgICAgIFBo
YXNlTm9uZSAgICAgICAgPSAwLAorICAgICAgICBQaGFzZUJlZ2FuICAgICAgID0gMSA8PCAxLAor
ICAgICAgICBQaGFzZVN0YXRpb25hcnkgID0gMSA8PCAyLAorICAgICAgICBQaGFzZUNoYW5nZWQg
ICAgID0gMSA8PCAzLAorICAgICAgICBQaGFzZUVuZGVkICAgICAgID0gMSA8PCA0LAorICAgICAg
ICBQaGFzZUNhbmNlbGxlZCAgID0gMSA8PCA1LAorICAgIH07CisKICAgICBmbG9hdCBkZWx0YVg7
CiAgICAgZmxvYXQgZGVsdGFZOwogICAgIGZsb2F0IHdoZWVsVGlja3NYOwpAQCAtMjkwLDYgKzMw
MywxMCBAQCBwdWJsaWM6CiAgICAgLy8gdHJhbnNmZXJpbmcgaXQgb3ZlciB0aGUgd2lyZS4KICAg
ICBpbnQgc2Nyb2xsQnlQYWdlOwogCisgICAgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFz
OworICAgIFBoYXNlIHBoYXNlOworICAgIFBoYXNlIG1vbWVudHVtUGhhc2U7CisKICAgICBXZWJN
b3VzZVdoZWVsRXZlbnQodW5zaWduZWQgc2l6ZVBhcmFtID0gc2l6ZW9mKFdlYk1vdXNlV2hlZWxF
dmVudCkpCiAgICAgICAgIDogV2ViTW91c2VFdmVudChzaXplUGFyYW0pCiAgICAgICAgICwgZGVs
dGFYKDAuMGYpCkBAIC0yOTcsNiArMzE0LDI3IEBAIHB1YmxpYzoKICAgICAgICAgLCB3aGVlbFRp
Y2tzWCgwLjBmKQogICAgICAgICAsIHdoZWVsVGlja3NZKDAuMGYpCiAgICAgICAgICwgc2Nyb2xs
QnlQYWdlKGZhbHNlKQorICAgICAgICAsIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoZmFsc2Up
CisgICAgICAgICwgcGhhc2UoUGhhc2VOb25lKQorICAgICAgICAsIG1vbWVudHVtUGhhc2UoUGhh
c2VOb25lKQorICAgIHsKKyAgICB9Cit9OworCisvLyBXZWJHZXN0dXJlRXZlbnQgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
Y2xhc3MgV2ViR2VzdHVyZUV2ZW50IDogcHVibGljIFdlYklucHV0RXZlbnQgeworcHVibGljOgor
ICAgIGludCB4OworICAgIGludCB5OworICAgIGludCBnbG9iYWxYOworICAgIGludCBnbG9iYWxZ
OworCisgICAgV2ViR2VzdHVyZUV2ZW50KHVuc2lnbmVkIHNpemVQYXJhbSA9IHNpemVvZihXZWJH
ZXN0dXJlRXZlbnQpKQorICAgICAgICA6IHgoMCkKKyAgICAgICAgLCB5KDApCisgICAgICAgICwg
Z2xvYmFsWCgwKQorICAgICAgICAsIGdsb2JhbFkoMCkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL21hYy9XZWJJbnB1
dEV2ZW50RmFjdG9yeS5oCShyZXZpc2lvbiA5MjQwMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsK
IGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CitjbGFzcyBX
ZWJHZXN0dXJlRXZlbnQ7CiAKIGNsYXNzIFdlYklucHV0RXZlbnRGYWN0b3J5IHsKIHB1YmxpYzoK
QEAgLTUzLDYgKzU0LDcgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYktl
eWJvYXJkRXZlbnQga2V5Ym9hcmRFdmVudCh3Y2hhcl90IGNoYXJhY3RlciwgaW50IG1vZGlmaWVy
cywgZG91YmxlIHRpbWVTdGFtcFNlY29uZHMpOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdl
Yk1vdXNlRXZlbnQgbW91c2VFdmVudChOU0V2ZW50KiwgTlNWaWV3Kik7CiAgICAgV0VCS0lUX0VY
UE9SVCBzdGF0aWMgV2ViTW91c2VXaGVlbEV2ZW50IG1vdXNlV2hlZWxFdmVudChOU0V2ZW50Kiwg
TlNWaWV3Kik7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViR2VzdHVyZUV2ZW50IGdlc3R1
cmVFdmVudChOU0V2ZW50ICosIE5TVmlldyAqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0
RXZlbnRDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gOTI0MDEpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMCw4ICsxMDAsMzcgQEAgUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVl
bAogICAgIG1fY3RybEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xL
ZXkpOwogICAgIG1fYWx0S2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6QWx0S2V5
KTsKICAgICBtX21ldGFLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpNZXRhS2V5
KTsKKyAgICBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSBlLmhhc1ByZWNpc2VTY3JvbGxp
bmdEZWx0YXM7CisgICAgbV9waGFzZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlPihlLnBoYXNlKTsKKyAgICBtX21vbWVudHVtUGhhc2UgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZT4oZS5tb21lbnR1bVBoYXNlKTsKKyAg
ICBtX3RpbWVzdGFtcCA9IGUudGltZVN0YW1wU2Vjb25kczsKIH0KIAorLy8gUGxhdGZvcm1HZXN0
dXJlRXZlbnRCdWlsZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitQbGF0Zm9ybUdlc3R1cmVF
dmVudEJ1aWxkZXI6OlBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcihXaWRnZXQqIHdpZGdldCwg
Y29uc3QgV2ViR2VzdHVyZUV2ZW50JiBlKQoreworICAgIHN3aXRjaCAoZS50eXBlKSB7CisgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46CisgICAgICAgIG1fdHlwZSA9
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKKyAgICAgICAgbV90eXBl
ID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBt
X3Bvc2l0aW9uID0gd2lkZ2V0LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coSW50UG9pbnQo
ZS54LCBlLnkpKTsKKyAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQoZS5nbG9iYWxYLCBl
Lmdsb2JhbFkpOworICAgIG1fdGltZXN0YW1wID0gZS50aW1lU3RhbXBTZWNvbmRzOworICAgIG1f
c2hpZnRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpTaGlmdEtleSk7CisgICAg
bV9jdHJsS2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6Q29udHJvbEtleSk7Cisg
ICAgbV9hbHRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpBbHRLZXkpOworICAg
IG1fbWV0YUtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6Ok1ldGFLZXkpOworfQor
I2VuZGlmCisKIC8vIE1ha2VQbGF0Zm9ybUtleWJvYXJkRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogc3RhdGljIGlubGluZSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OlR5cGUgdG9QbGF0Zm9ybUtleWJvYXJkRXZlbnRUeXBlKFdlYklucHV0
RXZlbnQ6OlR5cGUgdHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklu
cHV0RXZlbnRDb252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAkocmV2aXNpb24gOTI0MDEpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSwxMiArMzEsMTIgQEAKICNpZm5kZWYgV2ViSW5wdXRFdmVudENvbnZlcnNp
b25faAogI2RlZmluZSBXZWJJbnB1dEV2ZW50Q29udmVyc2lvbl9oCiAKLSNpbmNsdWRlICJXZWJJ
bnB1dEV2ZW50LmgiCi0KKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVu
dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
V2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgS2V5Ym9hcmRFdmVudDsKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50
OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKK2NsYXNzIFdlYkdlc3R1cmVFdmVudDsKIAogLy8g
VGhlc2UgY2xhc3NlcyBhcmUgdXNlZCB0byBjb252ZXJ0IGZyb20gV2ViSW5wdXRFdmVudCBzdWJj
bGFzc2VzIHRvCiAvLyBjb3JyZXNwb25kaW5nIFdlYkNvcmUgZXZlbnRzLgpAQCAtNjUsNiArNjYs
MTMgQEAgcHVibGljOgogICAgIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIoV2ViQ29yZTo6V2lk
Z2V0KiwgY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Jik7CiB9OwogCisjaWYgRU5BQkxFKEdFU1RV
UkVfRVZFTlRTKQorY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIDogcHVibGljIFdl
YkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybUdlc3R1
cmVFdmVudEJ1aWxkZXIoV2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7
Cit9OworI2VuZGlmCisKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIgOiBwdWJs
aWMgV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50IHsKIHB1YmxpYzoKICAgICBQbGF0Zm9y
bUtleWJvYXJkRXZlbnRCdWlsZGVyKGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCShyZXZp
c2lvbiA5MjQwMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUlt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDExIEBAIHZvaWQgV2ViUG9wdXBN
ZW51SW1wbDo6TW91c2VXaGVlbChjb25zdCAKICAgICBtX3dpZGdldC0+aGFuZGxlV2hlZWxFdmVu
dChQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKG1fd2lkZ2V0LCBldmVudCkpOwogfQogCitib29s
IFdlYlBvcHVwTWVudUltcGw6Okdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2
ZW50KQoreworICAgIHJldHVybiBtX3dpZGdldC0+aGFuZGxlR2VzdHVyZUV2ZW50KFBsYXRmb3Jt
R2VzdHVyZUV2ZW50QnVpbGRlcihtX3dpZGdldCwgZXZlbnQpKTsKK30KKwogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiBib29sIFdlYlBvcHVwTWVudUltcGw6OlRvdWNoRXZlbnQoY29uc3QgV2Vi
VG91Y2hFdmVudCYgZXZlbnQpCiB7CkBAIC0yNjYsNiArMjcxLDEwIEBAIGJvb2wgV2ViUG9wdXBN
ZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudCgKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNo
Q2FuY2VsOgogICAgICAgICByZXR1cm4gVG91Y2hFdmVudCgqc3RhdGljX2Nhc3Q8Y29uc3QgV2Vi
VG91Y2hFdmVudCo+KCZpbnB1dEV2ZW50KSk7CiAKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdl
c3R1cmVTY3JvbGxCZWdpbjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxF
bmQ6CisgICAgICAgIHJldHVybiBHZXN0dXJlRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdl
c3R1cmVFdmVudCo+KCZpbnB1dEV2ZW50KSk7CisKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlVu
ZGVmaW5lZDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlRW50ZXI6CiAgICAgY2FzZSBX
ZWJJbnB1dEV2ZW50OjpDb250ZXh0TWVudToKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBvcHVwTWVudUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgJKHJldmlzaW9uIDkyNDAxKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Miw2ICs1Miw3IEBAIGNsYXNzIFdpZGdldDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFz
cyBXZWJHZXN0dXJlRXZlbnQ7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91
c2VFdmVudDsKIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKQEAgLTEwNCw2ICsxMDUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBNb3VzZVVwKGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lk
IE1vdXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIHZvaWQgTW91c2VX
aGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKKyAgICBib29sIEdlc3R1cmVFdmVudChj
b25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKICAgICBib29sIFRvdWNoRXZlbnQoY29uc3QgV2ViVG91
Y2hFdmVudCYpOwogICAgIGJvb2wgS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZp
c2lvbiA5MjQwMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjAzLDYgKzYwMywxNCBAQCBib29sIFdlYlZpZXdJbXBsOjpt
b3VzZVdoZWVsKGNvbnN0IFdlYk1vCiAgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVdoZWVsRXZlbnQocGxhdGZvcm1FdmVudCk7CiB9CiAK
KyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitib29sIFdlYlZpZXdJbXBsOjpnZXN0dXJlRXZl
bnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKK3sKKyAgICBQbGF0Zm9ybUdlc3R1cmVF
dmVudEJ1aWxkZXIgcGxhdGZvcm1FdmVudChtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBl
dmVudCk7CisgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPmhhbmRsZUdlc3R1cmVFdmVudChwbGF0Zm9ybUV2ZW50KTsKK30KKyNlbmRpZgorCiBib29s
IFdlYlZpZXdJbXBsOjprZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsK
ICAgICBBU1NFUlQoKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6UmF3S2V5RG93bikKQEAg
LTEyODAsNiArMTI4OCwxMyBAQCBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNv
bnN0CiAgICAgICAgIGhhbmRsZWQgPSBjaGFyRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYktl
eWJvYXJkRXZlbnQqPigmaW5wdXRFdmVudCkpOwogICAgICAgICBicmVhazsKIAorI2lmIEVOQUJM
RShHRVNUVVJFX0VWRU5UUykKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxC
ZWdpbjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6CisgICAgICAg
IGhhbmRsZWQgPSBnZXN0dXJlRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVu
dCo+KCZpbnB1dEV2ZW50KSk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisKICNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hTdGFydDoKICAgICBj
YXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoTW92ZToKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gOTI0MDEpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3IEBA
IGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xp
ZW50OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGU7CiBjbGFzcyBXZWJGcmFtZUltcGw7
CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiBjbGFzcyBXZWJJbWFnZTsKIGNsYXNzIFdlYktleWJv
YXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwpAQCAtMjc3LDYgKzI3OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIG1vdXNlQ29udGV4dE1lbnUoY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAg
IHZvaWQgbW91c2VEb3VibGVDbGljayhjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAgYm9vbCBt
b3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYpOworICAgIGJvb2wgZ2VzdHVyZUV2
ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wga2V5RXZlbnQoY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYpOwogICAgIGJvb2wgY2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmKTsKICAgICBib29sIHRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYpOwpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbWFjL1dlYklucHV0RXZlbnRGYWN0b3J5Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL21hYy9XZWJJbnB1dEV2ZW50
RmFjdG9yeS5tbQkocmV2aXNpb24gOTI0MDEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0
LDI1IEBACiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNU
eXBlLmg+CiAKKyNpZiAhZGVmaW5lZChNQUNfT1NfWF9WRVJTSU9OXzEwXzcpIHx8IChNQUNfT1Nf
WF9WRVJTSU9OX01BWF9BTExPV0VEIDwgTUFDX09TX1hfVkVSU0lPTl8xMF83KQorCitlbnVtIHsK
KyAgICBOU0V2ZW50UGhhc2VOb25lICAgICAgICA9IDAsCisgICAgTlNFdmVudFBoYXNlQmVnYW4g
ICAgICAgPSAweDEgPDwgMCwKKyAgICBOU0V2ZW50UGhhc2VTdGF0aW9uYXJ5ICA9IDB4MSA8PCAx
LAorICAgIE5TRXZlbnRQaGFzZUNoYW5nZWQgICAgID0gMHgxIDw8IDIsCisgICAgTlNFdmVudFBo
YXNlRW5kZWQgICAgICAgPSAweDEgPDwgMywKKyAgICBOU0V2ZW50UGhhc2VDYW5jZWxsZWQgICA9
IDB4MSA8PCA0Cit9OwordHlwZWRlZiBOU1VJbnRlZ2VyIE5TRXZlbnRQaGFzZTsKKworQGludGVy
ZmFjZSBOU0V2ZW50IChMaW9uU0RLRGVjbGFyYXRpb25zKQorLSAoTlNFdmVudFBoYXNlKXBoYXNl
OworLSAoTlNFdmVudFBoYXNlKW1vbWVudHVtUGhhc2U7CitAZW5kCisKKyNlbmRpZiAgLy8gTUFD
X09TX1hfVkVSU0lPTl8xMF83CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBXZWJLZXlib2Fy
ZEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCkBAIC0xNDksNiArMTY4LDE5IEBAIHN0YXRpYyBpbnQgd2luZG93c0tleUNvZGVG
b3JLZXlFdmVudChOU0UKICAgICByZXR1cm4gV2ViQ29yZTo6d2luZG93c0tleUNvZGVGb3JLZXlD
b2RlKFtldmVudCBrZXlDb2RlXSk7CiB9CiAKK3N0YXRpYyBXZWJJbnB1dEV2ZW50OjpUeXBlIGdl
c3R1cmVFdmVudFR5cGVGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBzd2l0Y2ggKFtl
dmVudCB0eXBlXSkgeworICAgIGNhc2UgTlNFdmVudFR5cGVCZWdpbkdlc3R1cmU6CisgICAgICAg
IHJldHVybiBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47CisgICAgY2FzZSBOU0V2
ZW50VHlwZUVuZEdlc3R1cmU6CisgICAgICAgIHJldHVybiBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
U2Nyb2xsRW5kOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDsKKyAgICB9Cit9
CisKIHN0YXRpYyBpbmxpbmUgTlNTdHJpbmcqIHRleHRGcm9tRXZlbnQoTlNFdmVudCogZXZlbnQp
CiB7CiAgICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkKQEAgLTcwNyw2ICs3
MzksNDAgQEAgV2ViTW91c2VFdmVudCBXZWJJbnB1dEV2ZW50RmFjdG9yeTo6bW91cwogCiAvLyBX
ZWJNb3VzZVdoZWVsRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKK3N0YXRpYyBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlIHBo
YXNlRm9yTlNFdmVudFBoYXNlKE5TRXZlbnRQaGFzZSBldmVudFBoYXNlKQoreworICAgIHVpbnQz
Ml90IHBoYXNlID0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZU5vbmU7IAorICAgIGlmIChldmVu
dFBoYXNlICYgTlNFdmVudFBoYXNlQmVnYW4pCisgICAgICAgIHBoYXNlIHw9IFdlYk1vdXNlV2hl
ZWxFdmVudDo6UGhhc2VCZWdhbjsKKyAgICBpZiAoZXZlbnRQaGFzZSAmIE5TRXZlbnRQaGFzZVN0
YXRpb25hcnkpCisgICAgICAgIHBoYXNlIHw9IFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2VTdGF0
aW9uYXJ5OworICAgIGlmIChldmVudFBoYXNlICYgTlNFdmVudFBoYXNlQ2hhbmdlZCkKKyAgICAg
ICAgcGhhc2UgfD0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZUNoYW5nZWQ7CisgICAgaWYgKGV2
ZW50UGhhc2UgJiBOU0V2ZW50UGhhc2VFbmRlZCkKKyAgICAgICAgcGhhc2UgfD0gV2ViTW91c2VX
aGVlbEV2ZW50OjpQaGFzZUVuZGVkOworICAgIGlmIChldmVudFBoYXNlICYgTlNFdmVudFBoYXNl
Q2FuY2VsbGVkKQorICAgICAgICBwaGFzZSB8PSBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlQ2Fu
Y2VsbGVkOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNl
PihwaGFzZSk7Cit9CisKK3N0YXRpYyBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlIHBoYXNlRm9y
RXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgaWYgKCFbZXZlbnQgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihwaGFzZSldKQorICAgICAgICByZXR1cm4gV2ViTW91c2VXaGVlbEV2ZW50
OjpQaGFzZU5vbmU7CisKKyAgICBOU0V2ZW50UGhhc2UgZXZlbnRQaGFzZSA9IFtldmVudCBwaGFz
ZV07CisgICAgcmV0dXJuIHBoYXNlRm9yTlNFdmVudFBoYXNlKGV2ZW50UGhhc2UpOworfQorCitz
dGF0aWMgV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZSBtb21lbnR1bVBoYXNlRm9yRXZlbnQoTlNF
dmVudCAqZXZlbnQpCit7CisgICAgaWYgKCFbZXZlbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihtb21lbnR1bVBoYXNlKV0pCisgICAgICAgIHJldHVybiBXZWJNb3VzZVdoZWVsRXZlbnQ6
OlBoYXNlTm9uZTsKKworICAgIE5TRXZlbnRQaGFzZSBldmVudE1vbWVudHVtUGhhc2UgPSBbZXZl
bnQgbW9tZW50dW1QaGFzZV07CisgICAgcmV0dXJuIHBoYXNlRm9yTlNFdmVudFBoYXNlKGV2ZW50
TW9tZW50dW1QaGFzZSk7Cit9CisKIFdlYk1vdXNlV2hlZWxFdmVudCBXZWJJbnB1dEV2ZW50RmFj
dG9yeTo6bW91c2VXaGVlbEV2ZW50KE5TRXZlbnQqIGV2ZW50LCBOU1ZpZXcqIHZpZXcpCiB7CiAg
ICAgV2ViTW91c2VXaGVlbEV2ZW50IHJlc3VsdDsKQEAgLTgzOCw2ICs5MDQsNyBAQCBXZWJNb3Vz
ZVdoZWVsRXZlbnQgV2ViSW5wdXRFdmVudEZhY3Rvcnk6CiAgICAgICAgIHJlc3VsdC5kZWx0YVkg
PSBDR0V2ZW50R2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudCwga0NHU2Nyb2xsV2hlZWxFdmVu
dFBvaW50RGVsdGFBeGlzMSk7CiAgICAgICAgIHJlc3VsdC53aGVlbFRpY2tzWCA9IHJlc3VsdC5k
ZWx0YVggLyBzY3JvbGxiYXJQaXhlbHNQZXJDb2NvYVRpY2s7CiAgICAgICAgIHJlc3VsdC53aGVl
bFRpY2tzWSA9IHJlc3VsdC5kZWx0YVkgLyBzY3JvbGxiYXJQaXhlbHNQZXJDb2NvYVRpY2s7Cisg
ICAgICAgIHJlc3VsdC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gdHJ1ZTsKICAgICB9IGVs
c2UgewogICAgICAgICByZXN1bHQuZGVsdGFYID0gW2V2ZW50IGRlbHRhWF0gKiBzY3JvbGxiYXJQ
aXhlbHNQZXJDb2NvYVRpY2s7CiAgICAgICAgIHJlc3VsdC5kZWx0YVkgPSBbZXZlbnQgZGVsdGFZ
XSAqIHNjcm9sbGJhclBpeGVsc1BlckNvY29hVGljazsKQEAgLTg0Nyw2ICs5MTQsMjkgQEAgV2Vi
TW91c2VXaGVlbEV2ZW50IFdlYklucHV0RXZlbnRGYWN0b3J5OgogCiAgICAgcmVzdWx0LnRpbWVT
dGFtcFNlY29uZHMgPSBbZXZlbnQgdGltZXN0YW1wXTsKIAorICAgIHJlc3VsdC5waGFzZSAgICAg
ICAgICAgICAgPSBwaGFzZUZvckV2ZW50KGV2ZW50KTsKKyAgICByZXN1bHQubW9tZW50dW1QaGFz
ZSAgICAgID0gbW9tZW50dW1QaGFzZUZvckV2ZW50KGV2ZW50KTsKKworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK1dlYkdlc3R1cmVFdmVudCBXZWJJbnB1dEV2ZW50RmFjdG9yeTo6Z2VzdHVyZUV2
ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKnZpZXcpCit7CisgICAgV2ViR2VzdHVyZUV2ZW50
IHJlc3VsdDsKKworICAgIC8vIFVzZSBhIHRlbXBvcmFyeSBXZWJNb3VzZUV2ZW50IHRvIGdldCB0
aGUgbG9jYXRpb24uCisgICAgV2ViTW91c2VFdmVudCB0ZW1wOworCisgICAgc2V0V2ViRXZlbnRM
b2NhdGlvbkZyb21FdmVudEluVmlldygmdGVtcCwgZXZlbnQsIHZpZXcpOworICAgIHJlc3VsdC54
ID0gdGVtcC54OworICAgIHJlc3VsdC55ID0gdGVtcC55OworICAgIHJlc3VsdC5nbG9iYWxYID0g
dGVtcC5nbG9iYWxYOworICAgIHJlc3VsdC5nbG9iYWxZID0gdGVtcC5nbG9iYWxZOworCisgICAg
cmVzdWx0LnR5cGUgPSBnZXN0dXJlRXZlbnRUeXBlRm9yRXZlbnQoZXZlbnQpOworICAgIHJlc3Vs
dC5tb2RpZmllcnMgPSBtb2RpZmllcnNGcm9tRXZlbnQoZXZlbnQpOworICAgIHJlc3VsdC50aW1l
U3RhbXBTZWNvbmRzID0gW2V2ZW50IHRpbWVzdGFtcF07CisKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102976</attachid>
            <date>2011-08-04 14:02:57 -0700</date>
            <delta_ts>2011-08-04 14:25:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65707-20110804170255.patch</filename>
            <type>text/plain</type>
            <size>19789</size>
            <attacher>asvitkine</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDAxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBT
dml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBF
bmFibGUgcnViYmVyIGJhbmRpbmcgd2hlbiBzY3JvbGxpbmcuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgaXMg
anVzdCBzeW5jaW5nIGNoYW5nZXMgdG8gY2hyb21pdW0gcGxhdGZvcm0uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
V2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKwogMjAxMS0wOC0w
NCAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBHZXQg
cmlkIG9mIFJlc291cmNlUmVxdWVzdEJhc2U6Om1fdGFyZ2V0VHlwZS4gTW92ZSBpdCB0byBjaHJv
bWl1bSdzIFJlc291cmNlUmVxdWVzdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtV2hlZWxFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtV2hlZWxFdmVudC5oCShyZXZpc2lvbiA5MjQwMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2Nyb2xsQnlQaXhlbFdoZWVsRXZl
bnQKICAgICB9OwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIE9TKERBUldJTikKICAgICBlbnVt
IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHsKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2VOb25lICAgICAgICA9IDAsCiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW4g
ICAgICAgPSAxIDw8IDEsCkBAIC05Nyw3ICs5Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgICAgICwgbV9jdHJsS2V5KGZhbHNlKQogICAgICAgICAgICAgLCBtX2FsdEtleShmYWxz
ZSkKICAgICAgICAgICAgICwgbV9tZXRhS2V5KGZhbHNlKQotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBPUyhEQVJXSU4pCiAgICAgICAgICAgICAsIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyhm
YWxzZSkKICAgICAgICAgICAgICwgbV9waGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUp
CiAgICAgICAgICAgICAsIG1fbW9tZW50dW1QaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5v
bmUpCkBAIC0xMTksNyArMTE5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
LCBtX2N0cmxLZXkoY3RybEtleSkKICAgICAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQogICAg
ICAgICAgICAgLCBtX21ldGFLZXkobWV0YUtleSkKLSNpZiBQTEFURk9STShNQUMpCisjaWYgT1Mo
REFSV0lOKQogICAgICAgICAgICAgLCBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoZmFsc2Up
CiAgICAgICAgICAgICAsIG1fcGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lKQogICAg
ICAgICAgICAgLCBtX21vbWVudHVtUGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lKQpA
QCAtMTc0LDcgKzE3NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBkZWZpbmVkKF9fT0JK
Q19fKQogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCAqLCBOU1ZpZXcgKndpbmRv
d1ZpZXcpOwogI2VuZGlmCisjZW5kaWYKIAorI2lmIE9TKERBUldJTikKICAgICAgICAgUGxhdGZv
cm1XaGVlbEV2ZW50UGhhc2UgcGhhc2UoKSBjb25zdCB7IHJldHVybiBtX3BoYXNlOyB9CiAgICAg
ICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1vbWVudHVtUGhhc2UoKSBjb25zdCB7IHJldHVy
biBtX21vbWVudHVtUGhhc2U7IH0KICAgICAgICAgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVs
dGFzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOyB9CkBAIC0y
MTMsNyArMjE1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fY3RybEtl
eTsKICAgICAgICAgYm9vbCBtX2FsdEtleTsKICAgICAgICAgYm9vbCBtX21ldGFLZXk7Ci0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIE9TKERBUldJTikKICAgICAgICAgYm9vbCBtX2hhc1ByZWNpc2VT
Y3JvbGxpbmdEZWx0YXM7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1fcGhhc2U7
CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1fbW9tZW50dW1QaGFzZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1N
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbQkocmV2aXNpb24gOTI0MDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NTIsNyArODUyLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVt
TWFjOjpoYW5kbGVHZQogewogICAgIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGUpCiAgICAgICAgIGJlZ2luU2Nyb2xsR2VzdHVy
ZSgpOwotICAgIGVsc2UKKyAgICBlbHNlIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRm
b3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlKQogICAgICAgICBlbmRTY3JvbGxHZXN0dXJl
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MjQwMSkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzYgQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBTdml0a2luZSAgPGFzdml0a2luZUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBFbmFibGUgcnViYmVyIGJhbmRpbmcgd2hl
biBzY3JvbGxpbmcuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY1NzA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1YmxpYy9XZWJJbnB1dEV2ZW50Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYk1vdXNlV2hlZWxFdmVudDo6V2ViTW91c2VXaGVlbEV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50OjpXZWJHZXN0dXJlRXZlbnQpOgor
ICAgICAgICAqIHB1YmxpYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkuaDoKKyAgICAgICAgKiBz
cmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9y
bVdoZWVsRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKToKKyAgICAgICAg
KFdlYktpdDo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1cmVFdmVu
dEJ1aWxkZXIpOgorICAgICAgICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oOgorICAg
ICAgICAqIHNyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9w
dXBNZW51SW1wbDo6R2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51
SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgICogc3JjL1dlYlBvcHVwTWVudUltcGwu
aDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omhh
bmRsZUlucHV0RXZlbnQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAq
IHNyYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkubW06CisgICAgICAgIChXZWJLaXQ6Omdlc3R1
cmVFdmVudFR5cGVGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OnBoYXNlRm9yTlNFdmVudFBo
YXNlKToKKyAgICAgICAgKFdlYktpdDo6cGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
Om1vbWVudHVtUGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklucHV0RXZlbnRG
YWN0b3J5Ojptb3VzZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnB1dEV2ZW50
RmFjdG9yeTo6Z2VzdHVyZUV2ZW50KToKKwogMjAxMS0wOC0wNCAgSm9jaGVuIEVpc2luZ2VyICA8
am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBHZXQgcmlkIG9mIFJlc291cmNlUmVxdWVz
dEJhc2U6Om1fdGFyZ2V0VHlwZS4gTW92ZSBpdCB0byBjaHJvbWl1bSdzIFJlc291cmNlUmVxdWVz
dC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkJKHJldmlzaW9uIDkyNDAx
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTMsNiArMTUzLDcgQEAKICAgICAgIH1dLAogICAgICAgWydPUz09Im1hYyInLCB7CiAg
ICAgICAgICdmZWF0dXJlX2RlZmluZXMnOiBbCisgICAgICAgICAgJ0VOQUJMRV9SVUJCRVJfQkFO
RElORz0xJywKICAgICAgICAgICAnV1RGX1VTRV9TS0lBX09OX01BQ19DSFJPTUlVTT08KHVzZV9z
a2lhKScsCiAgICAgICAgIF0sCiAgICAgICB9XSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklucHV0RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgJKHJldmlzaW9uIDkyNDAxKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAsNiArMTAwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgS2V5VXAsCiAgICAgICAgIENoYXIs
CiAKKyAgICAgICAgLy8gV2ViR2VzdHVyZUV2ZW50CisgICAgICAgIEdlc3R1cmVTY3JvbGxCZWdp
biwKKyAgICAgICAgR2VzdHVyZVNjcm9sbEVuZCwKKwogICAgICAgICAvLyBXZWJUb3VjaEV2ZW50
CiAgICAgICAgIFRvdWNoU3RhcnQsCiAgICAgICAgIFRvdWNoTW92ZSwKQEAgLTI3OSw2ICsyODMs
MTUgQEAgcHVibGljOgogCiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQgOiBwdWJsaWMgV2ViTW91
c2VFdmVudCB7CiBwdWJsaWM6CisgICAgZW51bSBQaGFzZSB7CisgICAgICAgIFBoYXNlTm9uZSAg
ICAgICAgPSAwLAorICAgICAgICBQaGFzZUJlZ2FuICAgICAgID0gMSA8PCAxLAorICAgICAgICBQ
aGFzZVN0YXRpb25hcnkgID0gMSA8PCAyLAorICAgICAgICBQaGFzZUNoYW5nZWQgICAgID0gMSA8
PCAzLAorICAgICAgICBQaGFzZUVuZGVkICAgICAgID0gMSA8PCA0LAorICAgICAgICBQaGFzZUNh
bmNlbGxlZCAgID0gMSA8PCA1LAorICAgIH07CisKICAgICBmbG9hdCBkZWx0YVg7CiAgICAgZmxv
YXQgZGVsdGFZOwogICAgIGZsb2F0IHdoZWVsVGlja3NYOwpAQCAtMjkwLDYgKzMwMywxMiBAQCBw
dWJsaWM6CiAgICAgLy8gdHJhbnNmZXJpbmcgaXQgb3ZlciB0aGUgd2lyZS4KICAgICBpbnQgc2Ny
b2xsQnlQYWdlOwogCisjaWYgT1MoREFSV0lOKQorICAgIGJvb2wgaGFzUHJlY2lzZVNjcm9sbGlu
Z0RlbHRhczsKKyAgICBQaGFzZSBwaGFzZTsKKyAgICBQaGFzZSBtb21lbnR1bVBoYXNlOworI2Vu
ZGlmCisKICAgICBXZWJNb3VzZVdoZWVsRXZlbnQodW5zaWduZWQgc2l6ZVBhcmFtID0gc2l6ZW9m
KFdlYk1vdXNlV2hlZWxFdmVudCkpCiAgICAgICAgIDogV2ViTW91c2VFdmVudChzaXplUGFyYW0p
CiAgICAgICAgICwgZGVsdGFYKDAuMGYpCkBAIC0yOTcsNiArMzE2LDI5IEBAIHB1YmxpYzoKICAg
ICAgICAgLCB3aGVlbFRpY2tzWCgwLjBmKQogICAgICAgICAsIHdoZWVsVGlja3NZKDAuMGYpCiAg
ICAgICAgICwgc2Nyb2xsQnlQYWdlKGZhbHNlKQorI2lmIE9TKERBUldJTikKKyAgICAgICAgLCBo
YXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKGZhbHNlKQorICAgICAgICAsIHBoYXNlKFBoYXNlTm9u
ZSkKKyAgICAgICAgLCBtb21lbnR1bVBoYXNlKFBoYXNlTm9uZSkKKyNlbmRpZgorICAgIHsKKyAg
ICB9Cit9OworCisvLyBXZWJHZXN0dXJlRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgV2ViR2VzdHVyZUV2
ZW50IDogcHVibGljIFdlYklucHV0RXZlbnQgeworcHVibGljOgorICAgIGludCB4OworICAgIGlu
dCB5OworICAgIGludCBnbG9iYWxYOworICAgIGludCBnbG9iYWxZOworCisgICAgV2ViR2VzdHVy
ZUV2ZW50KHVuc2lnbmVkIHNpemVQYXJhbSA9IHNpemVvZihXZWJHZXN0dXJlRXZlbnQpKQorICAg
ICAgICA6IHgoMCkKKyAgICAgICAgLCB5KDApCisgICAgICAgICwgZ2xvYmFsWCgwKQorICAgICAg
ICAsIGdsb2JhbFkoMCkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oCShy
ZXZpc2lvbiA5MjQwMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL21hYy9XZWJJ
bnB1dEV2ZW50RmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZl
bnQ7CiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiAK
IGNsYXNzIFdlYklucHV0RXZlbnRGYWN0b3J5IHsKIHB1YmxpYzoKQEAgLTUzLDYgKzU0LDcgQEAg
cHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYktleWJvYXJkRXZlbnQga2V5Ym9h
cmRFdmVudCh3Y2hhcl90IGNoYXJhY3RlciwgaW50IG1vZGlmaWVycywgZG91YmxlIHRpbWVTdGFt
cFNlY29uZHMpOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYk1vdXNlRXZlbnQgbW91c2VF
dmVudChOU0V2ZW50KiwgTlNWaWV3Kik7CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViTW91
c2VXaGVlbEV2ZW50IG1vdXNlV2hlZWxFdmVudChOU0V2ZW50KiwgTlNWaWV3Kik7CisgICAgV0VC
S0lUX0VYUE9SVCBzdGF0aWMgV2ViR2VzdHVyZUV2ZW50IGdlc3R1cmVFdmVudChOU0V2ZW50ICos
IE5TVmlldyAqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNw
cAkocmV2aXNpb24gOTI0MDEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1
dEV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw4ICsxMDAsMzkgQEAg
UGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVlbAogICAgIG1fY3RybEtleSA9
IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xLZXkpOwogICAgIG1fYWx0S2V5
ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6QWx0S2V5KTsKICAgICBtX21ldGFLZXkg
PSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpNZXRhS2V5KTsKKyNpZiBPUyhEQVJXSU4p
CisgICAgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gZS5oYXNQcmVjaXNlU2Nyb2xsaW5n
RGVsdGFzOworICAgIG1fcGhhc2UgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQbGF0Zm9ybVdoZWVs
RXZlbnRQaGFzZT4oZS5waGFzZSk7CisgICAgbV9tb21lbnR1bVBoYXNlID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+KGUubW9tZW50dW1QaGFzZSk7CisgICAg
bV90aW1lc3RhbXAgPSBlLnRpbWVTdGFtcFNlY29uZHM7CisjZW5kaWYKIH0KIAorLy8gUGxhdGZv
cm1HZXN0dXJlRXZlbnRCdWlsZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitQbGF0Zm9ybUdl
c3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcihXaWRnZXQqIHdp
ZGdldCwgY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBlKQoreworICAgIHN3aXRjaCAoZS50eXBlKSB7
CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46CisgICAgICAgIG1f
dHlwZSA9IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKKyAgICAgICAg
bV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
KyAgICBtX3Bvc2l0aW9uID0gd2lkZ2V0LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coSW50
UG9pbnQoZS54LCBlLnkpKTsKKyAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQoZS5nbG9i
YWxYLCBlLmdsb2JhbFkpOworICAgIG1fdGltZXN0YW1wID0gZS50aW1lU3RhbXBTZWNvbmRzOwor
ICAgIG1fc2hpZnRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpTaGlmdEtleSk7
CisgICAgbV9jdHJsS2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6Q29udHJvbEtl
eSk7CisgICAgbV9hbHRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpBbHRLZXkp
OworICAgIG1fbWV0YUtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6Ok1ldGFLZXkp
OworfQorI2VuZGlmCisKIC8vIE1ha2VQbGF0Zm9ybUtleWJvYXJkRXZlbnQgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogc3RhdGljIGlubGluZSBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlR5cGUgdG9QbGF0Zm9ybUtleWJvYXJkRXZlbnRUeXBlKFdl
YklucHV0RXZlbnQ6OlR5cGUgdHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAkocmV2aXNpb24gOTI0MDEpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEsMTIgQEAKICNpZm5kZWYgV2ViSW5wdXRFdmVudENv
bnZlcnNpb25faAogI2RlZmluZSBXZWJJbnB1dEV2ZW50Q29udmVyc2lvbl9oCiAKLSNpbmNsdWRl
ICJXZWJJbnB1dEV2ZW50LmgiCi0KKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91
c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hFdmVudC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgS2V5Ym9hcmRFdmVudDsKQEAgLTUxLDYgKzUxLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTW91c2VXaGVl
bEV2ZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKK2NsYXNzIFdlYkdlc3R1cmVFdmVudDsK
IAogLy8gVGhlc2UgY2xhc3NlcyBhcmUgdXNlZCB0byBjb252ZXJ0IGZyb20gV2ViSW5wdXRFdmVu
dCBzdWJjbGFzc2VzIHRvCiAvLyBjb3JyZXNwb25kaW5nIFdlYkNvcmUgZXZlbnRzLgpAQCAtNjUs
NiArNjYsMTMgQEAgcHVibGljOgogICAgIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIoV2ViQ29y
ZTo6V2lkZ2V0KiwgY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Jik7CiB9OwogCisjaWYgRU5BQkxF
KEdFU1RVUkVfRVZFTlRTKQorY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIDogcHVi
bGljIFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9y
bUdlc3R1cmVFdmVudEJ1aWxkZXIoV2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViR2VzdHVyZUV2
ZW50Jik7Cit9OworI2VuZGlmCisKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIg
OiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50IHsKIHB1YmxpYzoKICAgICBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3Bw
CShyZXZpc2lvbiA5MjQwMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVw
TWVudUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDExIEBAIHZvaWQgV2Vi
UG9wdXBNZW51SW1wbDo6TW91c2VXaGVlbChjb25zdCAKICAgICBtX3dpZGdldC0+aGFuZGxlV2hl
ZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKG1fd2lkZ2V0LCBldmVudCkpOwogfQog
Citib29sIFdlYlBvcHVwTWVudUltcGw6Okdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZl
bnQmIGV2ZW50KQoreworICAgIHJldHVybiBtX3dpZGdldC0+aGFuZGxlR2VzdHVyZUV2ZW50KFBs
YXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcihtX3dpZGdldCwgZXZlbnQpKTsKK30KKwogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCiBib29sIFdlYlBvcHVwTWVudUltcGw6OlRvdWNoRXZlbnQoY29u
c3QgV2ViVG91Y2hFdmVudCYgZXZlbnQpCiB7CkBAIC0yNjYsNiArMjcxLDEwIEBAIGJvb2wgV2Vi
UG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudCgKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6
OlRvdWNoQ2FuY2VsOgogICAgICAgICByZXR1cm4gVG91Y2hFdmVudCgqc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViVG91Y2hFdmVudCo+KCZpbnB1dEV2ZW50KSk7CiAKKyAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVT
Y3JvbGxFbmQ6CisgICAgICAgIHJldHVybiBHZXN0dXJlRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0
IFdlYkdlc3R1cmVFdmVudCo+KCZpbnB1dEV2ZW50KSk7CisKICAgICBjYXNlIFdlYklucHV0RXZl
bnQ6OlVuZGVmaW5lZDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlRW50ZXI6CiAgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpDb250ZXh0TWVudToKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgJKHJldmlzaW9uIDkyNDAxKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Miw2ICs1Miw3IEBAIGNsYXNzIFdpZGdldDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3Mg
V2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKQEAgLTEwNCw2ICsxMDUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBNb3VzZVVwKGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAg
ICB2b2lkIE1vdXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIHZvaWQg
TW91c2VXaGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKKyAgICBib29sIEdlc3R1cmVF
dmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKICAgICBib29sIFRvdWNoRXZlbnQoY29uc3Qg
V2ViVG91Y2hFdmVudCYpOwogICAgIGJvb2wgS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVu
dCYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CShyZXZpc2lvbiA5MjQwMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAzLDYgKzYwMywxNCBAQCBib29sIFdlYlZpZXdJ
bXBsOjptb3VzZVdoZWVsKGNvbnN0IFdlYk1vCiAgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+
ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVdoZWVsRXZlbnQocGxhdGZvcm1FdmVudCk7
CiB9CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitib29sIFdlYlZpZXdJbXBsOjpnZXN0
dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKK3sKKyAgICBQbGF0Zm9ybUdl
c3R1cmVFdmVudEJ1aWxkZXIgcGxhdGZvcm1FdmVudChtYWluRnJhbWVJbXBsKCktPmZyYW1lVmll
dygpLCBldmVudCk7CisgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChwbGF0Zm9ybUV2ZW50KTsKK30KKyNlbmRpZgor
CiBib29sIFdlYlZpZXdJbXBsOjprZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVu
dCkKIHsKICAgICBBU1NFUlQoKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6UmF3S2V5RG93
bikKQEAgLTEyODAsNiArMTI4OCwxMyBAQCBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVJbnB1dEV2
ZW50KGNvbnN0CiAgICAgICAgIGhhbmRsZWQgPSBjaGFyRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0
IFdlYktleWJvYXJkRXZlbnQqPigmaW5wdXRFdmVudCkpOwogICAgICAgICBicmVhazsKIAorI2lm
IEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVT
Y3JvbGxCZWdpbjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6Cisg
ICAgICAgIGhhbmRsZWQgPSBnZXN0dXJlRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1
cmVFdmVudCo+KCZpbnB1dEV2ZW50KSk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hTdGFydDoK
ICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoTW92ZToKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gOTI0MDEpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4
NCw3IEBAIGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFzcyBXZWJEZXZUb29sc0Fn
ZW50Q2xpZW50OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGU7CiBjbGFzcyBXZWJGcmFt
ZUltcGw7CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiBjbGFzcyBXZWJJbWFnZTsKIGNsYXNzIFdl
YktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwpAQCAtMjc3LDYgKzI3OCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIG1vdXNlQ29udGV4dE1lbnUoY29uc3QgV2ViTW91c2VFdmVudCYp
OwogICAgIHZvaWQgbW91c2VEb3VibGVDbGljayhjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAg
Ym9vbCBtb3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYpOworICAgIGJvb2wgZ2Vz
dHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wga2V5RXZlbnQoY29u
c3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIGJvb2wgY2hhckV2ZW50KGNvbnN0IFdlYktleWJv
YXJkRXZlbnQmKTsKICAgICBib29sIHRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYpOwpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbWFjL1dlYklucHV0RXZlbnRGYWN0b3J5
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL21hYy9XZWJJbnB1
dEV2ZW50RmFjdG9yeS5tbQkocmV2aXNpb24gOTI0MDEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0
LDYgKzM0LDI1IEBACiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgPHd0Zi9B
U0NJSUNUeXBlLmg+CiAKKyNpZiAhZGVmaW5lZChNQUNfT1NfWF9WRVJTSU9OXzEwXzcpIHx8IChN
QUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgTUFDX09TX1hfVkVSU0lPTl8xMF83KQorCitl
bnVtIHsKKyAgICBOU0V2ZW50UGhhc2VOb25lICAgICAgICA9IDAsCisgICAgTlNFdmVudFBoYXNl
QmVnYW4gICAgICAgPSAweDEgPDwgMCwKKyAgICBOU0V2ZW50UGhhc2VTdGF0aW9uYXJ5ICA9IDB4
MSA8PCAxLAorICAgIE5TRXZlbnRQaGFzZUNoYW5nZWQgICAgID0gMHgxIDw8IDIsCisgICAgTlNF
dmVudFBoYXNlRW5kZWQgICAgICAgPSAweDEgPDwgMywKKyAgICBOU0V2ZW50UGhhc2VDYW5jZWxs
ZWQgICA9IDB4MSA8PCA0Cit9OwordHlwZWRlZiBOU1VJbnRlZ2VyIE5TRXZlbnRQaGFzZTsKKwor
QGludGVyZmFjZSBOU0V2ZW50IChMaW9uU0RLRGVjbGFyYXRpb25zKQorLSAoTlNFdmVudFBoYXNl
KXBoYXNlOworLSAoTlNFdmVudFBoYXNlKW1vbWVudHVtUGhhc2U7CitAZW5kCisKKyNlbmRpZiAg
Ly8gTUFDX09TX1hfVkVSU0lPTl8xMF83CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBXZWJL
ZXlib2FyZEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCkBAIC0xNDksNiArMTY4LDE5IEBAIHN0YXRpYyBpbnQgd2luZG93c0tl
eUNvZGVGb3JLZXlFdmVudChOU0UKICAgICByZXR1cm4gV2ViQ29yZTo6d2luZG93c0tleUNvZGVG
b3JLZXlDb2RlKFtldmVudCBrZXlDb2RlXSk7CiB9CiAKK3N0YXRpYyBXZWJJbnB1dEV2ZW50OjpU
eXBlIGdlc3R1cmVFdmVudFR5cGVGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBzd2l0
Y2ggKFtldmVudCB0eXBlXSkgeworICAgIGNhc2UgTlNFdmVudFR5cGVCZWdpbkdlc3R1cmU6Cisg
ICAgICAgIHJldHVybiBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47CisgICAgY2Fz
ZSBOU0V2ZW50VHlwZUVuZEdlc3R1cmU6CisgICAgICAgIHJldHVybiBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlU2Nyb2xsRW5kOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDsKKyAg
ICB9Cit9CisKIHN0YXRpYyBpbmxpbmUgTlNTdHJpbmcqIHRleHRGcm9tRXZlbnQoTlNFdmVudCog
ZXZlbnQpCiB7CiAgICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkKQEAgLTcw
Nyw2ICs3MzksNDAgQEAgV2ViTW91c2VFdmVudCBXZWJJbnB1dEV2ZW50RmFjdG9yeTo6bW91cwog
CiAvLyBXZWJNb3VzZVdoZWVsRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK3N0YXRpYyBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBo
YXNlIHBoYXNlRm9yTlNFdmVudFBoYXNlKE5TRXZlbnRQaGFzZSBldmVudFBoYXNlKQoreworICAg
IHVpbnQzMl90IHBoYXNlID0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZU5vbmU7IAorICAgIGlm
IChldmVudFBoYXNlICYgTlNFdmVudFBoYXNlQmVnYW4pCisgICAgICAgIHBoYXNlIHw9IFdlYk1v
dXNlV2hlZWxFdmVudDo6UGhhc2VCZWdhbjsKKyAgICBpZiAoZXZlbnRQaGFzZSAmIE5TRXZlbnRQ
aGFzZVN0YXRpb25hcnkpCisgICAgICAgIHBoYXNlIHw9IFdlYk1vdXNlV2hlZWxFdmVudDo6UGhh
c2VTdGF0aW9uYXJ5OworICAgIGlmIChldmVudFBoYXNlICYgTlNFdmVudFBoYXNlQ2hhbmdlZCkK
KyAgICAgICAgcGhhc2UgfD0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZUNoYW5nZWQ7CisgICAg
aWYgKGV2ZW50UGhhc2UgJiBOU0V2ZW50UGhhc2VFbmRlZCkKKyAgICAgICAgcGhhc2UgfD0gV2Vi
TW91c2VXaGVlbEV2ZW50OjpQaGFzZUVuZGVkOworICAgIGlmIChldmVudFBoYXNlICYgTlNFdmVu
dFBoYXNlQ2FuY2VsbGVkKQorICAgICAgICBwaGFzZSB8PSBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBo
YXNlQ2FuY2VsbGVkOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJNb3VzZVdoZWVsRXZlbnQ6
OlBoYXNlPihwaGFzZSk7Cit9CisKK3N0YXRpYyBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlIHBo
YXNlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgaWYgKCFbZXZlbnQgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihwaGFzZSldKQorICAgICAgICByZXR1cm4gV2ViTW91c2VXaGVl
bEV2ZW50OjpQaGFzZU5vbmU7CisKKyAgICBOU0V2ZW50UGhhc2UgZXZlbnRQaGFzZSA9IFtldmVu
dCBwaGFzZV07CisgICAgcmV0dXJuIHBoYXNlRm9yTlNFdmVudFBoYXNlKGV2ZW50UGhhc2UpOwor
fQorCitzdGF0aWMgV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZSBtb21lbnR1bVBoYXNlRm9yRXZl
bnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgaWYgKCFbZXZlbnQgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihtb21lbnR1bVBoYXNlKV0pCisgICAgICAgIHJldHVybiBXZWJNb3VzZVdoZWVs
RXZlbnQ6OlBoYXNlTm9uZTsKKworICAgIE5TRXZlbnRQaGFzZSBldmVudE1vbWVudHVtUGhhc2Ug
PSBbZXZlbnQgbW9tZW50dW1QaGFzZV07CisgICAgcmV0dXJuIHBoYXNlRm9yTlNFdmVudFBoYXNl
KGV2ZW50TW9tZW50dW1QaGFzZSk7Cit9CisKIFdlYk1vdXNlV2hlZWxFdmVudCBXZWJJbnB1dEV2
ZW50RmFjdG9yeTo6bW91c2VXaGVlbEV2ZW50KE5TRXZlbnQqIGV2ZW50LCBOU1ZpZXcqIHZpZXcp
CiB7CiAgICAgV2ViTW91c2VXaGVlbEV2ZW50IHJlc3VsdDsKQEAgLTgzOCw2ICs5MDQsNyBAQCBX
ZWJNb3VzZVdoZWVsRXZlbnQgV2ViSW5wdXRFdmVudEZhY3Rvcnk6CiAgICAgICAgIHJlc3VsdC5k
ZWx0YVkgPSBDR0V2ZW50R2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudCwga0NHU2Nyb2xsV2hl
ZWxFdmVudFBvaW50RGVsdGFBeGlzMSk7CiAgICAgICAgIHJlc3VsdC53aGVlbFRpY2tzWCA9IHJl
c3VsdC5kZWx0YVggLyBzY3JvbGxiYXJQaXhlbHNQZXJDb2NvYVRpY2s7CiAgICAgICAgIHJlc3Vs
dC53aGVlbFRpY2tzWSA9IHJlc3VsdC5kZWx0YVkgLyBzY3JvbGxiYXJQaXhlbHNQZXJDb2NvYVRp
Y2s7CisgICAgICAgIHJlc3VsdC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gdHJ1ZTsKICAg
ICB9IGVsc2UgewogICAgICAgICByZXN1bHQuZGVsdGFYID0gW2V2ZW50IGRlbHRhWF0gKiBzY3Jv
bGxiYXJQaXhlbHNQZXJDb2NvYVRpY2s7CiAgICAgICAgIHJlc3VsdC5kZWx0YVkgPSBbZXZlbnQg
ZGVsdGFZXSAqIHNjcm9sbGJhclBpeGVsc1BlckNvY29hVGljazsKQEAgLTg0Nyw2ICs5MTQsMjkg
QEAgV2ViTW91c2VXaGVlbEV2ZW50IFdlYklucHV0RXZlbnRGYWN0b3J5OgogCiAgICAgcmVzdWx0
LnRpbWVTdGFtcFNlY29uZHMgPSBbZXZlbnQgdGltZXN0YW1wXTsKIAorICAgIHJlc3VsdC5waGFz
ZSAgICAgICAgICAgICAgPSBwaGFzZUZvckV2ZW50KGV2ZW50KTsKKyAgICByZXN1bHQubW9tZW50
dW1QaGFzZSAgICAgID0gbW9tZW50dW1QaGFzZUZvckV2ZW50KGV2ZW50KTsKKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK1dlYkdlc3R1cmVFdmVudCBXZWJJbnB1dEV2ZW50RmFjdG9yeTo6Z2Vz
dHVyZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKnZpZXcpCit7CisgICAgV2ViR2VzdHVy
ZUV2ZW50IHJlc3VsdDsKKworICAgIC8vIFVzZSBhIHRlbXBvcmFyeSBXZWJNb3VzZUV2ZW50IHRv
IGdldCB0aGUgbG9jYXRpb24uCisgICAgV2ViTW91c2VFdmVudCB0ZW1wOworCisgICAgc2V0V2Vi
RXZlbnRMb2NhdGlvbkZyb21FdmVudEluVmlldygmdGVtcCwgZXZlbnQsIHZpZXcpOworICAgIHJl
c3VsdC54ID0gdGVtcC54OworICAgIHJlc3VsdC55ID0gdGVtcC55OworICAgIHJlc3VsdC5nbG9i
YWxYID0gdGVtcC5nbG9iYWxYOworICAgIHJlc3VsdC5nbG9iYWxZID0gdGVtcC5nbG9iYWxZOwor
CisgICAgcmVzdWx0LnR5cGUgPSBnZXN0dXJlRXZlbnRUeXBlRm9yRXZlbnQoZXZlbnQpOworICAg
IHJlc3VsdC5tb2RpZmllcnMgPSBtb2RpZmllcnNGcm9tRXZlbnQoZXZlbnQpOworICAgIHJlc3Vs
dC50aW1lU3RhbXBTZWNvbmRzID0gW2V2ZW50IHRpbWVzdGFtcF07CisKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102980</attachid>
            <date>2011-08-04 14:25:16 -0700</date>
            <delta_ts>2011-08-05 06:44:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65707-20110804172515.patch</filename>
            <type>text/plain</type>
            <size>19741</size>
            <attacher>asvitkine</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDAxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBT
dml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBF
bmFibGUgcnViYmVyIGJhbmRpbmcgd2hlbiBzY3JvbGxpbmcuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgaXMg
anVzdCBzeW5jaW5nIGNoYW5nZXMgdG8gY2hyb21pdW0gcGxhdGZvcm0uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
V2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKwogMjAxMS0wOC0w
NCAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBHZXQg
cmlkIG9mIFJlc291cmNlUmVxdWVzdEJhc2U6Om1fdGFyZ2V0VHlwZS4gTW92ZSBpdCB0byBjaHJv
bWl1bSdzIFJlc291cmNlUmVxdWVzdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtV2hlZWxFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtV2hlZWxFdmVudC5oCShyZXZpc2lvbiA5MjQwMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2Nyb2xsQnlQaXhlbFdoZWVsRXZl
bnQKICAgICB9OwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIE9TKERBUldJTikKICAgICBlbnVt
IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHsKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2VOb25lICAgICAgICA9IDAsCiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW4g
ICAgICAgPSAxIDw8IDEsCkBAIC05Nyw3ICs5Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgICAgICwgbV9jdHJsS2V5KGZhbHNlKQogICAgICAgICAgICAgLCBtX2FsdEtleShmYWxz
ZSkKICAgICAgICAgICAgICwgbV9tZXRhS2V5KGZhbHNlKQotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBPUyhEQVJXSU4pCiAgICAgICAgICAgICAsIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyhm
YWxzZSkKICAgICAgICAgICAgICwgbV9waGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUp
CiAgICAgICAgICAgICAsIG1fbW9tZW50dW1QaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5v
bmUpCkBAIC0xMTksNyArMTE5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
LCBtX2N0cmxLZXkoY3RybEtleSkKICAgICAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQogICAg
ICAgICAgICAgLCBtX21ldGFLZXkobWV0YUtleSkKLSNpZiBQTEFURk9STShNQUMpCisjaWYgT1Mo
REFSV0lOKQogICAgICAgICAgICAgLCBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoZmFsc2Up
CiAgICAgICAgICAgICAsIG1fcGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lKQogICAg
ICAgICAgICAgLCBtX21vbWVudHVtUGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lKQpA
QCAtMTc0LDcgKzE3NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBkZWZpbmVkKF9fT0JK
Q19fKQogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCAqLCBOU1ZpZXcgKndpbmRv
d1ZpZXcpOwogI2VuZGlmCisjZW5kaWYKIAorI2lmIE9TKERBUldJTikKICAgICAgICAgUGxhdGZv
cm1XaGVlbEV2ZW50UGhhc2UgcGhhc2UoKSBjb25zdCB7IHJldHVybiBtX3BoYXNlOyB9CiAgICAg
ICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1vbWVudHVtUGhhc2UoKSBjb25zdCB7IHJldHVy
biBtX21vbWVudHVtUGhhc2U7IH0KICAgICAgICAgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVs
dGFzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOyB9CkBAIC0y
MTMsNyArMjE1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fY3RybEtl
eTsKICAgICAgICAgYm9vbCBtX2FsdEtleTsKICAgICAgICAgYm9vbCBtX21ldGFLZXk7Ci0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIE9TKERBUldJTikKICAgICAgICAgYm9vbCBtX2hhc1ByZWNpc2VT
Y3JvbGxpbmdEZWx0YXM7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1fcGhhc2U7
CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1fbW9tZW50dW1QaGFzZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1N
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbQkocmV2aXNpb24gOTI0MDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NTIsNyArODUyLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVt
TWFjOjpoYW5kbGVHZQogewogICAgIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGUpCiAgICAgICAgIGJlZ2luU2Nyb2xsR2VzdHVy
ZSgpOwotICAgIGVsc2UKKyAgICBlbHNlIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRm
b3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlKQogICAgICAgICBlbmRTY3JvbGxHZXN0dXJl
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MjQwMSkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzYgQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBTdml0a2luZSAgPGFzdml0a2luZUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBFbmFibGUgcnViYmVyIGJhbmRpbmcgd2hl
biBzY3JvbGxpbmcuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY1NzA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1YmxpYy9XZWJJbnB1dEV2ZW50Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYk1vdXNlV2hlZWxFdmVudDo6V2ViTW91c2VXaGVlbEV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50OjpXZWJHZXN0dXJlRXZlbnQpOgor
ICAgICAgICAqIHB1YmxpYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkuaDoKKyAgICAgICAgKiBz
cmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9y
bVdoZWVsRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKToKKyAgICAgICAg
KFdlYktpdDo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1cmVFdmVu
dEJ1aWxkZXIpOgorICAgICAgICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oOgorICAg
ICAgICAqIHNyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9w
dXBNZW51SW1wbDo6R2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51
SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgICogc3JjL1dlYlBvcHVwTWVudUltcGwu
aDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omhh
bmRsZUlucHV0RXZlbnQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAq
IHNyYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkubW06CisgICAgICAgIChXZWJLaXQ6Omdlc3R1
cmVFdmVudFR5cGVGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OnBoYXNlRm9yTlNFdmVudFBo
YXNlKToKKyAgICAgICAgKFdlYktpdDo6cGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
Om1vbWVudHVtUGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklucHV0RXZlbnRG
YWN0b3J5Ojptb3VzZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnB1dEV2ZW50
RmFjdG9yeTo6Z2VzdHVyZUV2ZW50KToKKwogMjAxMS0wOC0wNCAgSm9jaGVuIEVpc2luZ2VyICA8
am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBHZXQgcmlkIG9mIFJlc291cmNlUmVxdWVz
dEJhc2U6Om1fdGFyZ2V0VHlwZS4gTW92ZSBpdCB0byBjaHJvbWl1bSdzIFJlc291cmNlUmVxdWVz
dC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkJKHJldmlzaW9uIDkyNDAx
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTMsNiArMTUzLDcgQEAKICAgICAgIH1dLAogICAgICAgWydPUz09Im1hYyInLCB7CiAg
ICAgICAgICdmZWF0dXJlX2RlZmluZXMnOiBbCisgICAgICAgICAgJ0VOQUJMRV9SVUJCRVJfQkFO
RElORz0xJywKICAgICAgICAgICAnV1RGX1VTRV9TS0lBX09OX01BQ19DSFJPTUlVTT08KHVzZV9z
a2lhKScsCiAgICAgICAgIF0sCiAgICAgICB9XSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklucHV0RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgJKHJldmlzaW9uIDkyNDAxKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAsNiArMTAwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgS2V5VXAsCiAgICAgICAgIENoYXIs
CiAKKyAgICAgICAgLy8gV2ViR2VzdHVyZUV2ZW50CisgICAgICAgIEdlc3R1cmVTY3JvbGxCZWdp
biwKKyAgICAgICAgR2VzdHVyZVNjcm9sbEVuZCwKKwogICAgICAgICAvLyBXZWJUb3VjaEV2ZW50
CiAgICAgICAgIFRvdWNoU3RhcnQsCiAgICAgICAgIFRvdWNoTW92ZSwKQEAgLTI3OSw2ICsyODMs
MTUgQEAgcHVibGljOgogCiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQgOiBwdWJsaWMgV2ViTW91
c2VFdmVudCB7CiBwdWJsaWM6CisgICAgZW51bSBQaGFzZSB7CisgICAgICAgIFBoYXNlTm9uZSAg
ICAgICAgPSAwLAorICAgICAgICBQaGFzZUJlZ2FuICAgICAgID0gMSA8PCAxLAorICAgICAgICBQ
aGFzZVN0YXRpb25hcnkgID0gMSA8PCAyLAorICAgICAgICBQaGFzZUNoYW5nZWQgICAgID0gMSA8
PCAzLAorICAgICAgICBQaGFzZUVuZGVkICAgICAgID0gMSA8PCA0LAorICAgICAgICBQaGFzZUNh
bmNlbGxlZCAgID0gMSA8PCA1LAorICAgIH07CisKICAgICBmbG9hdCBkZWx0YVg7CiAgICAgZmxv
YXQgZGVsdGFZOwogICAgIGZsb2F0IHdoZWVsVGlja3NYOwpAQCAtMjkwLDYgKzMwMywxMCBAQCBw
dWJsaWM6CiAgICAgLy8gdHJhbnNmZXJpbmcgaXQgb3ZlciB0aGUgd2lyZS4KICAgICBpbnQgc2Ny
b2xsQnlQYWdlOwogCisgICAgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOworICAgIFBo
YXNlIHBoYXNlOworICAgIFBoYXNlIG1vbWVudHVtUGhhc2U7CisKICAgICBXZWJNb3VzZVdoZWVs
RXZlbnQodW5zaWduZWQgc2l6ZVBhcmFtID0gc2l6ZW9mKFdlYk1vdXNlV2hlZWxFdmVudCkpCiAg
ICAgICAgIDogV2ViTW91c2VFdmVudChzaXplUGFyYW0pCiAgICAgICAgICwgZGVsdGFYKDAuMGYp
CkBAIC0yOTcsNiArMzE0LDI3IEBAIHB1YmxpYzoKICAgICAgICAgLCB3aGVlbFRpY2tzWCgwLjBm
KQogICAgICAgICAsIHdoZWVsVGlja3NZKDAuMGYpCiAgICAgICAgICwgc2Nyb2xsQnlQYWdlKGZh
bHNlKQorICAgICAgICAsIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoZmFsc2UpCisgICAgICAg
ICwgcGhhc2UoUGhhc2VOb25lKQorICAgICAgICAsIG1vbWVudHVtUGhhc2UoUGhhc2VOb25lKQor
ICAgIHsKKyAgICB9Cit9OworCisvLyBXZWJHZXN0dXJlRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgV2Vi
R2VzdHVyZUV2ZW50IDogcHVibGljIFdlYklucHV0RXZlbnQgeworcHVibGljOgorICAgIGludCB4
OworICAgIGludCB5OworICAgIGludCBnbG9iYWxYOworICAgIGludCBnbG9iYWxZOworCisgICAg
V2ViR2VzdHVyZUV2ZW50KHVuc2lnbmVkIHNpemVQYXJhbSA9IHNpemVvZihXZWJHZXN0dXJlRXZl
bnQpKQorICAgICAgICA6IHgoMCkKKyAgICAgICAgLCB5KDApCisgICAgICAgICwgZ2xvYmFsWCgw
KQorICAgICAgICAsIGdsb2JhbFkoMCkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL21hYy9XZWJJbnB1dEV2ZW50RmFj
dG9yeS5oCShyZXZpc2lvbiA5MjQwMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdl
Yk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CitjbGFzcyBXZWJHZXN0dXJl
RXZlbnQ7CiAKIGNsYXNzIFdlYklucHV0RXZlbnRGYWN0b3J5IHsKIHB1YmxpYzoKQEAgLTUzLDYg
KzU0LDcgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYktleWJvYXJkRXZl
bnQga2V5Ym9hcmRFdmVudCh3Y2hhcl90IGNoYXJhY3RlciwgaW50IG1vZGlmaWVycywgZG91Ymxl
IHRpbWVTdGFtcFNlY29uZHMpOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYk1vdXNlRXZl
bnQgbW91c2VFdmVudChOU0V2ZW50KiwgTlNWaWV3Kik7CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0
aWMgV2ViTW91c2VXaGVlbEV2ZW50IG1vdXNlV2hlZWxFdmVudChOU0V2ZW50KiwgTlNWaWV3Kik7
CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViR2VzdHVyZUV2ZW50IGdlc3R1cmVFdmVudChO
U0V2ZW50ICosIE5TVmlldyAqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252
ZXJzaW9uLmNwcAkocmV2aXNpb24gOTI0MDEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw4ICsx
MDAsMzkgQEAgUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVlbAogICAgIG1f
Y3RybEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xLZXkpOwogICAg
IG1fYWx0S2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6QWx0S2V5KTsKICAgICBt
X21ldGFLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpNZXRhS2V5KTsKKyNpZiBP
UyhEQVJXSU4pCisgICAgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gZS5oYXNQcmVjaXNl
U2Nyb2xsaW5nRGVsdGFzOworICAgIG1fcGhhc2UgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZT4oZS5waGFzZSk7CisgICAgbV9tb21lbnR1bVBoYXNlID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+KGUubW9tZW50dW1QaGFz
ZSk7CisgICAgbV90aW1lc3RhbXAgPSBlLnRpbWVTdGFtcFNlY29uZHM7CisjZW5kaWYKIH0KIAor
Ly8gUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitQ
bGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcihX
aWRnZXQqIHdpZGdldCwgY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBlKQoreworICAgIHN3aXRjaCAo
ZS50eXBlKSB7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46Cisg
ICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoK
KyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KKyAgICBtX3Bvc2l0aW9uID0gd2lkZ2V0LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdX
aW5kb3coSW50UG9pbnQoZS54LCBlLnkpKTsKKyAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9p
bnQoZS5nbG9iYWxYLCBlLmdsb2JhbFkpOworICAgIG1fdGltZXN0YW1wID0gZS50aW1lU3RhbXBT
ZWNvbmRzOworICAgIG1fc2hpZnRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpT
aGlmdEtleSk7CisgICAgbV9jdHJsS2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6
Q29udHJvbEtleSk7CisgICAgbV9hbHRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50
OjpBbHRLZXkpOworICAgIG1fbWV0YUtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6
Ok1ldGFLZXkpOworfQorI2VuZGlmCisKIC8vIE1ha2VQbGF0Zm9ybUtleWJvYXJkRXZlbnQgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogc3RhdGlj
IGlubGluZSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlR5cGUgdG9QbGF0Zm9ybUtleWJvYXJkRXZl
bnRUeXBlKFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAkocmV2aXNpb24g
OTI0MDEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVy
c2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEsMTIgQEAKICNpZm5kZWYgV2ViSW5w
dXRFdmVudENvbnZlcnNpb25faAogI2RlZmluZSBXZWJJbnB1dEV2ZW50Q29udmVyc2lvbl9oCiAK
LSNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCi0KKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVF
dmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hFdmVudC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgS2V5Ym9hcmRFdmVudDsKQEAgLTUxLDYgKzUx
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2Vi
TW91c2VXaGVlbEV2ZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKK2NsYXNzIFdlYkdlc3R1
cmVFdmVudDsKIAogLy8gVGhlc2UgY2xhc3NlcyBhcmUgdXNlZCB0byBjb252ZXJ0IGZyb20gV2Vi
SW5wdXRFdmVudCBzdWJjbGFzc2VzIHRvCiAvLyBjb3JyZXNwb25kaW5nIFdlYkNvcmUgZXZlbnRz
LgpAQCAtNjUsNiArNjYsMTMgQEAgcHVibGljOgogICAgIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxk
ZXIoV2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Jik7CiB9OwogCisj
aWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWls
ZGVyIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50IHsKK3B1YmxpYzoKKyAg
ICBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoV2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2Vi
R2VzdHVyZUV2ZW50Jik7Cit9OworI2VuZGlmCisKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dEJ1aWxkZXIgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50IHsKIHB1Ymxp
YzoKICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVu
dUltcGwuY3BwCShyZXZpc2lvbiA5MjQwMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBvcHVwTWVudUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDExIEBA
IHZvaWQgV2ViUG9wdXBNZW51SW1wbDo6TW91c2VXaGVlbChjb25zdCAKICAgICBtX3dpZGdldC0+
aGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKG1fd2lkZ2V0LCBldmVu
dCkpOwogfQogCitib29sIFdlYlBvcHVwTWVudUltcGw6Okdlc3R1cmVFdmVudChjb25zdCBXZWJH
ZXN0dXJlRXZlbnQmIGV2ZW50KQoreworICAgIHJldHVybiBtX3dpZGdldC0+aGFuZGxlR2VzdHVy
ZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcihtX3dpZGdldCwgZXZlbnQpKTsKK30K
KwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBib29sIFdlYlBvcHVwTWVudUltcGw6OlRvdWNo
RXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYgZXZlbnQpCiB7CkBAIC0yNjYsNiArMjcxLDEwIEBA
IGJvb2wgV2ViUG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudCgKICAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6OlRvdWNoQ2FuY2VsOgogICAgICAgICByZXR1cm4gVG91Y2hFdmVudCgqc3RhdGlj
X2Nhc3Q8Y29uc3QgV2ViVG91Y2hFdmVudCo+KCZpbnB1dEV2ZW50KSk7CiAKKyAgICBjYXNlIFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6
Okdlc3R1cmVTY3JvbGxFbmQ6CisgICAgICAgIHJldHVybiBHZXN0dXJlRXZlbnQoKnN0YXRpY19j
YXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZpbnB1dEV2ZW50KSk7CisKICAgICBjYXNlIFdl
YklucHV0RXZlbnQ6OlVuZGVmaW5lZDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlRW50
ZXI6CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpDb250ZXh0TWVudToKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgJKHJldmlzaW9uIDkyNDAx
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNzIFdpZGdldDsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50
OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKQEAgLTEw
NCw2ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBNb3VzZVVwKGNvbnN0IFdlYk1vdXNlRXZl
bnQmKTsKICAgICB2b2lkIE1vdXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYpOwog
ICAgIHZvaWQgTW91c2VXaGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKKyAgICBib29s
IEdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKICAgICBib29sIFRvdWNoRXZl
bnQoY29uc3QgV2ViVG91Y2hFdmVudCYpOwogICAgIGJvb2wgS2V5RXZlbnQoY29uc3QgV2ViS2V5
Ym9hcmRFdmVudCYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCShyZXZpc2lvbiA5MjQwMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAzLDYgKzYwMywxNCBAQCBib29s
IFdlYlZpZXdJbXBsOjptb3VzZVdoZWVsKGNvbnN0IFdlYk1vCiAgICAgcmV0dXJuIG1haW5GcmFt
ZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVdoZWVsRXZlbnQocGxhdGZv
cm1FdmVudCk7CiB9CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitib29sIFdlYlZpZXdJ
bXBsOjpnZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKK3sKKyAgICBQ
bGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIgcGxhdGZvcm1FdmVudChtYWluRnJhbWVJbXBsKCkt
PmZyYW1lVmlldygpLCBldmVudCk7CisgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChwbGF0Zm9ybUV2ZW50KTsKK30K
KyNlbmRpZgorCiBib29sIFdlYlZpZXdJbXBsOjprZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2
ZW50JiBldmVudCkKIHsKICAgICBBU1NFUlQoKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6
UmF3S2V5RG93bikKQEAgLTEyODAsNiArMTI4OCwxMyBAQCBib29sIFdlYlZpZXdJbXBsOjpoYW5k
bGVJbnB1dEV2ZW50KGNvbnN0CiAgICAgICAgIGhhbmRsZWQgPSBjaGFyRXZlbnQoKnN0YXRpY19j
YXN0PGNvbnN0IFdlYktleWJvYXJkRXZlbnQqPigmaW5wdXRFdmVudCkpOwogICAgICAgICBicmVh
azsKIAorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6
Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3Jv
bGxFbmQ6CisgICAgICAgIGhhbmRsZWQgPSBnZXN0dXJlRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0
IFdlYkdlc3R1cmVFdmVudCo+KCZpbnB1dEV2ZW50KSk7CisgICAgICAgIGJyZWFrOworI2VuZGlm
CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91
Y2hTdGFydDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoTW92ZToKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gOTI0MDEpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC04NCw2ICs4NCw3IEBAIGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFzcyBXZWJE
ZXZUb29sc0FnZW50Q2xpZW50OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGU7CiBjbGFz
cyBXZWJGcmFtZUltcGw7CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiBjbGFzcyBXZWJJbWFnZTsK
IGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwpAQCAtMjc3LDYg
KzI3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdXNlQ29udGV4dE1lbnUoY29uc3QgV2ViTW91
c2VFdmVudCYpOwogICAgIHZvaWQgbW91c2VEb3VibGVDbGljayhjb25zdCBXZWJNb3VzZUV2ZW50
Jik7CiAgICAgYm9vbCBtb3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYpOworICAg
IGJvb2wgZ2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wga2V5
RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIGJvb2wgY2hhckV2ZW50KGNvbnN0
IFdlYktleWJvYXJkRXZlbnQmKTsKICAgICBib29sIHRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hF
dmVudCYpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbWFjL1dlYklucHV0RXZl
bnRGYWN0b3J5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL21h
Yy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5tbQkocmV2aXNpb24gOTI0MDEpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDI1IEBACiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1
ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKKyNpZiAhZGVmaW5lZChNQUNfT1NfWF9WRVJTSU9OXzEw
XzcpIHx8IChNQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgTUFDX09TX1hfVkVSU0lPTl8x
MF83KQorCitlbnVtIHsKKyAgICBOU0V2ZW50UGhhc2VOb25lICAgICAgICA9IDAsCisgICAgTlNF
dmVudFBoYXNlQmVnYW4gICAgICAgPSAweDEgPDwgMCwKKyAgICBOU0V2ZW50UGhhc2VTdGF0aW9u
YXJ5ICA9IDB4MSA8PCAxLAorICAgIE5TRXZlbnRQaGFzZUNoYW5nZWQgICAgID0gMHgxIDw8IDIs
CisgICAgTlNFdmVudFBoYXNlRW5kZWQgICAgICAgPSAweDEgPDwgMywKKyAgICBOU0V2ZW50UGhh
c2VDYW5jZWxsZWQgICA9IDB4MSA8PCA0Cit9OwordHlwZWRlZiBOU1VJbnRlZ2VyIE5TRXZlbnRQ
aGFzZTsKKworQGludGVyZmFjZSBOU0V2ZW50IChMaW9uU0RLRGVjbGFyYXRpb25zKQorLSAoTlNF
dmVudFBoYXNlKXBoYXNlOworLSAoTlNFdmVudFBoYXNlKW1vbWVudHVtUGhhc2U7CitAZW5kCisK
KyNlbmRpZiAgLy8gTUFDX09TX1hfVkVSU0lPTl8xMF83CisKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiAvLyBXZWJLZXlib2FyZEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNDksNiArMTY4LDE5IEBAIHN0YXRpYyBpbnQg
d2luZG93c0tleUNvZGVGb3JLZXlFdmVudChOU0UKICAgICByZXR1cm4gV2ViQ29yZTo6d2luZG93
c0tleUNvZGVGb3JLZXlDb2RlKFtldmVudCBrZXlDb2RlXSk7CiB9CiAKK3N0YXRpYyBXZWJJbnB1
dEV2ZW50OjpUeXBlIGdlc3R1cmVFdmVudFR5cGVGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sK
KyAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgeworICAgIGNhc2UgTlNFdmVudFR5cGVCZWdpbkdl
c3R1cmU6CisgICAgICAgIHJldHVybiBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47
CisgICAgY2FzZSBOU0V2ZW50VHlwZUVuZEdlc3R1cmU6CisgICAgICAgIHJldHVybiBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9s
bEVuZDsKKyAgICB9Cit9CisKIHN0YXRpYyBpbmxpbmUgTlNTdHJpbmcqIHRleHRGcm9tRXZlbnQo
TlNFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdl
ZCkKQEAgLTcwNyw2ICs3MzksNDAgQEAgV2ViTW91c2VFdmVudCBXZWJJbnB1dEV2ZW50RmFjdG9y
eTo6bW91cwogCiAvLyBXZWJNb3VzZVdoZWVsRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK3N0YXRpYyBXZWJNb3VzZVdoZWVs
RXZlbnQ6OlBoYXNlIHBoYXNlRm9yTlNFdmVudFBoYXNlKE5TRXZlbnRQaGFzZSBldmVudFBoYXNl
KQoreworICAgIHVpbnQzMl90IHBoYXNlID0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZU5vbmU7
IAorICAgIGlmIChldmVudFBoYXNlICYgTlNFdmVudFBoYXNlQmVnYW4pCisgICAgICAgIHBoYXNl
IHw9IFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2VCZWdhbjsKKyAgICBpZiAoZXZlbnRQaGFzZSAm
IE5TRXZlbnRQaGFzZVN0YXRpb25hcnkpCisgICAgICAgIHBoYXNlIHw9IFdlYk1vdXNlV2hlZWxF
dmVudDo6UGhhc2VTdGF0aW9uYXJ5OworICAgIGlmIChldmVudFBoYXNlICYgTlNFdmVudFBoYXNl
Q2hhbmdlZCkKKyAgICAgICAgcGhhc2UgfD0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZUNoYW5n
ZWQ7CisgICAgaWYgKGV2ZW50UGhhc2UgJiBOU0V2ZW50UGhhc2VFbmRlZCkKKyAgICAgICAgcGhh
c2UgfD0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZUVuZGVkOworICAgIGlmIChldmVudFBoYXNl
ICYgTlNFdmVudFBoYXNlQ2FuY2VsbGVkKQorICAgICAgICBwaGFzZSB8PSBXZWJNb3VzZVdoZWVs
RXZlbnQ6OlBoYXNlQ2FuY2VsbGVkOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJNb3VzZVdo
ZWVsRXZlbnQ6OlBoYXNlPihwaGFzZSk7Cit9CisKK3N0YXRpYyBXZWJNb3VzZVdoZWVsRXZlbnQ6
OlBoYXNlIHBoYXNlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgaWYgKCFbZXZlbnQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwaGFzZSldKQorICAgICAgICByZXR1cm4gV2Vi
TW91c2VXaGVlbEV2ZW50OjpQaGFzZU5vbmU7CisKKyAgICBOU0V2ZW50UGhhc2UgZXZlbnRQaGFz
ZSA9IFtldmVudCBwaGFzZV07CisgICAgcmV0dXJuIHBoYXNlRm9yTlNFdmVudFBoYXNlKGV2ZW50
UGhhc2UpOworfQorCitzdGF0aWMgV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZSBtb21lbnR1bVBo
YXNlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgaWYgKCFbZXZlbnQgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihtb21lbnR1bVBoYXNlKV0pCisgICAgICAgIHJldHVybiBXZWJN
b3VzZVdoZWVsRXZlbnQ6OlBoYXNlTm9uZTsKKworICAgIE5TRXZlbnRQaGFzZSBldmVudE1vbWVu
dHVtUGhhc2UgPSBbZXZlbnQgbW9tZW50dW1QaGFzZV07CisgICAgcmV0dXJuIHBoYXNlRm9yTlNF
dmVudFBoYXNlKGV2ZW50TW9tZW50dW1QaGFzZSk7Cit9CisKIFdlYk1vdXNlV2hlZWxFdmVudCBX
ZWJJbnB1dEV2ZW50RmFjdG9yeTo6bW91c2VXaGVlbEV2ZW50KE5TRXZlbnQqIGV2ZW50LCBOU1Zp
ZXcqIHZpZXcpCiB7CiAgICAgV2ViTW91c2VXaGVlbEV2ZW50IHJlc3VsdDsKQEAgLTgzOCw2ICs5
MDQsNyBAQCBXZWJNb3VzZVdoZWVsRXZlbnQgV2ViSW5wdXRFdmVudEZhY3Rvcnk6CiAgICAgICAg
IHJlc3VsdC5kZWx0YVkgPSBDR0V2ZW50R2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudCwga0NH
U2Nyb2xsV2hlZWxFdmVudFBvaW50RGVsdGFBeGlzMSk7CiAgICAgICAgIHJlc3VsdC53aGVlbFRp
Y2tzWCA9IHJlc3VsdC5kZWx0YVggLyBzY3JvbGxiYXJQaXhlbHNQZXJDb2NvYVRpY2s7CiAgICAg
ICAgIHJlc3VsdC53aGVlbFRpY2tzWSA9IHJlc3VsdC5kZWx0YVkgLyBzY3JvbGxiYXJQaXhlbHNQ
ZXJDb2NvYVRpY2s7CisgICAgICAgIHJlc3VsdC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0g
dHJ1ZTsKICAgICB9IGVsc2UgewogICAgICAgICByZXN1bHQuZGVsdGFYID0gW2V2ZW50IGRlbHRh
WF0gKiBzY3JvbGxiYXJQaXhlbHNQZXJDb2NvYVRpY2s7CiAgICAgICAgIHJlc3VsdC5kZWx0YVkg
PSBbZXZlbnQgZGVsdGFZXSAqIHNjcm9sbGJhclBpeGVsc1BlckNvY29hVGljazsKQEAgLTg0Nyw2
ICs5MTQsMjkgQEAgV2ViTW91c2VXaGVlbEV2ZW50IFdlYklucHV0RXZlbnRGYWN0b3J5OgogCiAg
ICAgcmVzdWx0LnRpbWVTdGFtcFNlY29uZHMgPSBbZXZlbnQgdGltZXN0YW1wXTsKIAorICAgIHJl
c3VsdC5waGFzZSAgICAgICAgICAgICAgPSBwaGFzZUZvckV2ZW50KGV2ZW50KTsKKyAgICByZXN1
bHQubW9tZW50dW1QaGFzZSAgICAgID0gbW9tZW50dW1QaGFzZUZvckV2ZW50KGV2ZW50KTsKKwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1dlYkdlc3R1cmVFdmVudCBXZWJJbnB1dEV2ZW50RmFj
dG9yeTo6Z2VzdHVyZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKnZpZXcpCit7CisgICAg
V2ViR2VzdHVyZUV2ZW50IHJlc3VsdDsKKworICAgIC8vIFVzZSBhIHRlbXBvcmFyeSBXZWJNb3Vz
ZUV2ZW50IHRvIGdldCB0aGUgbG9jYXRpb24uCisgICAgV2ViTW91c2VFdmVudCB0ZW1wOworCisg
ICAgc2V0V2ViRXZlbnRMb2NhdGlvbkZyb21FdmVudEluVmlldygmdGVtcCwgZXZlbnQsIHZpZXcp
OworICAgIHJlc3VsdC54ID0gdGVtcC54OworICAgIHJlc3VsdC55ID0gdGVtcC55OworICAgIHJl
c3VsdC5nbG9iYWxYID0gdGVtcC5nbG9iYWxYOworICAgIHJlc3VsdC5nbG9iYWxZID0gdGVtcC5n
bG9iYWxZOworCisgICAgcmVzdWx0LnR5cGUgPSBnZXN0dXJlRXZlbnRUeXBlRm9yRXZlbnQoZXZl
bnQpOworICAgIHJlc3VsdC5tb2RpZmllcnMgPSBtb2RpZmllcnNGcm9tRXZlbnQoZXZlbnQpOwor
ICAgIHJlc3VsdC50aW1lU3RhbXBTZWNvbmRzID0gW2V2ZW50IHRpbWVzdGFtcF07CisKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103067</attachid>
            <date>2011-08-05 06:44:35 -0700</date>
            <delta_ts>2011-08-08 12:03:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65707-20110805094433.patch</filename>
            <type>text/plain</type>
            <size>19906</size>
            <attacher>asvitkine</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDc2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBT
dml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBF
bmFibGUgcnViYmVyIGJhbmRpbmcgd2hlbiBzY3JvbGxpbmcuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgaXMg
anVzdCBzeW5jaW5nIGNoYW5nZXMgdG8gY2hyb21pdW0gcGxhdGZvcm0uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
V2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKwogMjAxMS0wOC0w
NSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBjaGVjayB0aGF0IGRldGFjaGluZyBmcmFtZSBoYXMgYmVlbiBhdHRhY2hlZCBi
ZWZvcmUgcmVtb3ZpbmcgaXQgZnJvbSB0aGUgY29uc29sZSBzZWxlY3RvcgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgJKHJldmlzaW9uIDkyNDc2
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBT
Y3JvbGxCeVBpeGVsV2hlZWxFdmVudAogICAgIH07CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYg
UExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikpCiAgICAg
ZW51bSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSB7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlTm9uZSAgICAgICAgPSAwLAogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJl
Z2FuICAgICAgID0gMSA8PCAxLApAQCAtOTcsNyArOTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICAsIG1fY3RybEtleShmYWxzZSkKICAgICAgICAgICAgICwgbV9hbHRLZXko
ZmFsc2UpCiAgICAgICAgICAgICAsIG1fbWV0YUtleShmYWxzZSkKLSNpZiBQTEFURk9STShNQUMp
CisjaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikp
CiAgICAgICAgICAgICAsIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyhmYWxzZSkKICAgICAg
ICAgICAgICwgbV9waGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUpCiAgICAgICAgICAg
ICAsIG1fbW9tZW50dW1QaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUpCkBAIC0xMTks
NyArMTE5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2N0cmxLZXko
Y3RybEtleSkKICAgICAgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQogICAgICAgICAgICAgLCBt
X21ldGFLZXkobWV0YUtleSkKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSB8
fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikpCiAgICAgICAgICAgICAsIG1faGFz
UHJlY2lzZVNjcm9sbGluZ0RlbHRhcyhmYWxzZSkKICAgICAgICAgICAgICwgbV9waGFzZShQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUpCiAgICAgICAgICAgICAsIG1fbW9tZW50dW1QaGFzZShQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUpCkBAIC0xNzQsNyArMTc0LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogI2lmIGRlZmluZWQoX19PQkpDX18pCiAgICAgICAgIFBsYXRmb3JtV2hlZWxF
dmVudChOU0V2ZW50ICosIE5TVmlldyAqd2luZG93Vmlldyk7CiAjZW5kaWYKKyNlbmRpZgogCisj
aWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikpCiAg
ICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlKCkgY29uc3QgeyByZXR1cm4gbV9w
aGFzZTsgfQogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBtb21lbnR1bVBoYXNlKCkg
Y29uc3QgeyByZXR1cm4gbV9tb21lbnR1bVBoYXNlOyB9CiAgICAgICAgIGJvb2wgaGFzUHJlY2lz
ZVNjcm9sbGluZ0RlbHRhcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUHJlY2lzZVNjcm9sbGluZ0Rl
bHRhczsgfQpAQCAtMjEzLDcgKzIxNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCBtX2N0cmxLZXk7CiAgICAgICAgIGJvb2wgbV9hbHRLZXk7CiAgICAgICAgIGJvb2wgbV9t
ZXRhS2V5OwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9S
TShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgYm9vbCBtX2hhc1ByZWNpc2VTY3Jv
bGxpbmdEZWx0YXM7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1fcGhhc2U7CiAg
ICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1fbW9tZW50dW1QaGFzZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
QW5pbWF0b3JDaHJvbWl1bU1hYy5tbQkocmV2aXNpb24gOTI0NzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC04NTIsNyArODUyLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFj
OjpoYW5kbGVHZQogewogICAgIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGUpCiAgICAgICAgIGJlZ2luU2Nyb2xsR2VzdHVyZSgp
OwotICAgIGVsc2UKKyAgICBlbHNlIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlKQogICAgICAgICBlbmRTY3JvbGxHZXN0dXJlKCk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MjQ3NikKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzYgQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBTdml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBFbmFibGUgcnViYmVyIGJhbmRpbmcgd2hlbiBz
Y3JvbGxpbmcuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY1NzA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1YmxpYy9XZWJJbnB1dEV2ZW50Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk1vdXNlV2hlZWxFdmVudDo6V2ViTW91c2VXaGVlbEV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50OjpXZWJHZXN0dXJlRXZlbnQpOgorICAg
ICAgICAqIHB1YmxpYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkuaDoKKyAgICAgICAgKiBzcmMv
V2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVdo
ZWVsRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdl
YktpdDo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1
aWxkZXIpOgorICAgICAgICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oOgorICAgICAg
ICAqIHNyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBN
ZW51SW1wbDo6R2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51SW1w
bDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgICogc3JjL1dlYlBvcHVwTWVudUltcGwuaDoK
KyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRs
ZUlucHV0RXZlbnQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIHNy
Yy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkubW06CisgICAgICAgIChXZWJLaXQ6Omdlc3R1cmVF
dmVudFR5cGVGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OnBoYXNlRm9yTlNFdmVudFBoYXNl
KToKKyAgICAgICAgKFdlYktpdDo6cGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Om1v
bWVudHVtUGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklucHV0RXZlbnRGYWN0
b3J5Ojptb3VzZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnB1dEV2ZW50RmFj
dG9yeTo6Z2VzdHVyZUV2ZW50KToKKwogMjAxMS0wOC0wNCAgSmFtZXMgUm9iaW5zb24gIDxqYW1l
c3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xsZWQgREVQUy4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkJKHJldmlzaW9uIDkyNDc2KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTMsNiArMTUzLDcgQEAKICAgICAgIH1dLAogICAgICAgWydPUz09Im1hYyInLCB7CiAgICAgICAg
ICdmZWF0dXJlX2RlZmluZXMnOiBbCisgICAgICAgICAgJ0VOQUJMRV9SVUJCRVJfQkFORElORz0x
JywKICAgICAgICAgICAnV1RGX1VTRV9TS0lBX09OX01BQ19DSFJPTUlVTT08KHVzZV9za2lhKScs
CiAgICAgICAgIF0sCiAgICAgICB9XSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYklucHV0RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgJKHJldmlzaW9uIDkyNDc2KQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAs
NiArMTAwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgS2V5VXAsCiAgICAgICAgIENoYXIsCiAKKyAg
ICAgICAgLy8gV2ViR2VzdHVyZUV2ZW50CisgICAgICAgIEdlc3R1cmVTY3JvbGxCZWdpbiwKKyAg
ICAgICAgR2VzdHVyZVNjcm9sbEVuZCwKKwogICAgICAgICAvLyBXZWJUb3VjaEV2ZW50CiAgICAg
ICAgIFRvdWNoU3RhcnQsCiAgICAgICAgIFRvdWNoTW92ZSwKQEAgLTI3OSw2ICsyODMsMTUgQEAg
cHVibGljOgogCiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQgOiBwdWJsaWMgV2ViTW91c2VFdmVu
dCB7CiBwdWJsaWM6CisgICAgZW51bSBQaGFzZSB7CisgICAgICAgIFBoYXNlTm9uZSAgICAgICAg
PSAwLAorICAgICAgICBQaGFzZUJlZ2FuICAgICAgID0gMSA8PCAxLAorICAgICAgICBQaGFzZVN0
YXRpb25hcnkgID0gMSA8PCAyLAorICAgICAgICBQaGFzZUNoYW5nZWQgICAgID0gMSA8PCAzLAor
ICAgICAgICBQaGFzZUVuZGVkICAgICAgID0gMSA8PCA0LAorICAgICAgICBQaGFzZUNhbmNlbGxl
ZCAgID0gMSA8PCA1LAorICAgIH07CisKICAgICBmbG9hdCBkZWx0YVg7CiAgICAgZmxvYXQgZGVs
dGFZOwogICAgIGZsb2F0IHdoZWVsVGlja3NYOwpAQCAtMjkwLDYgKzMwMywxMCBAQCBwdWJsaWM6
CiAgICAgLy8gdHJhbnNmZXJpbmcgaXQgb3ZlciB0aGUgd2lyZS4KICAgICBpbnQgc2Nyb2xsQnlQ
YWdlOwogCisgICAgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOworICAgIFBoYXNlIHBo
YXNlOworICAgIFBoYXNlIG1vbWVudHVtUGhhc2U7CisKICAgICBXZWJNb3VzZVdoZWVsRXZlbnQo
dW5zaWduZWQgc2l6ZVBhcmFtID0gc2l6ZW9mKFdlYk1vdXNlV2hlZWxFdmVudCkpCiAgICAgICAg
IDogV2ViTW91c2VFdmVudChzaXplUGFyYW0pCiAgICAgICAgICwgZGVsdGFYKDAuMGYpCkBAIC0y
OTcsNiArMzE0LDI3IEBAIHB1YmxpYzoKICAgICAgICAgLCB3aGVlbFRpY2tzWCgwLjBmKQogICAg
ICAgICAsIHdoZWVsVGlja3NZKDAuMGYpCiAgICAgICAgICwgc2Nyb2xsQnlQYWdlKGZhbHNlKQor
ICAgICAgICAsIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoZmFsc2UpCisgICAgICAgICwgcGhh
c2UoUGhhc2VOb25lKQorICAgICAgICAsIG1vbWVudHVtUGhhc2UoUGhhc2VOb25lKQorICAgIHsK
KyAgICB9Cit9OworCisvLyBXZWJHZXN0dXJlRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgV2ViR2VzdHVy
ZUV2ZW50IDogcHVibGljIFdlYklucHV0RXZlbnQgeworcHVibGljOgorICAgIGludCB4OworICAg
IGludCB5OworICAgIGludCBnbG9iYWxYOworICAgIGludCBnbG9iYWxZOworCisgICAgV2ViR2Vz
dHVyZUV2ZW50KHVuc2lnbmVkIHNpemVQYXJhbSA9IHNpemVvZihXZWJHZXN0dXJlRXZlbnQpKQor
ICAgICAgICA6IHgoMCkKKyAgICAgICAgLCB5KDApCisgICAgICAgICwgZ2xvYmFsWCgwKQorICAg
ICAgICAsIGdsb2JhbFkoMCkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5o
CShyZXZpc2lvbiA5MjQ3NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL21hYy9X
ZWJJbnB1dEV2ZW50RmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNl
RXZlbnQ7CiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7
CiAKIGNsYXNzIFdlYklucHV0RXZlbnRGYWN0b3J5IHsKIHB1YmxpYzoKQEAgLTUzLDYgKzU0LDcg
QEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYktleWJvYXJkRXZlbnQga2V5
Ym9hcmRFdmVudCh3Y2hhcl90IGNoYXJhY3RlciwgaW50IG1vZGlmaWVycywgZG91YmxlIHRpbWVT
dGFtcFNlY29uZHMpOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYk1vdXNlRXZlbnQgbW91
c2VFdmVudChOU0V2ZW50KiwgTlNWaWV3Kik7CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2Vi
TW91c2VXaGVlbEV2ZW50IG1vdXNlV2hlZWxFdmVudChOU0V2ZW50KiwgTlNWaWV3Kik7CisgICAg
V0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViR2VzdHVyZUV2ZW50IGdlc3R1cmVFdmVudChOU0V2ZW50
ICosIE5TVmlldyAqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9u
LmNwcAkocmV2aXNpb24gOTI0NzYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
bnB1dEV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw4ICsxMDAsMzkg
QEAgUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVlbAogICAgIG1fY3RybEtl
eSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xLZXkpOwogICAgIG1fYWx0
S2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6QWx0S2V5KTsKICAgICBtX21ldGFL
ZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpNZXRhS2V5KTsKKyNpZiBPUyhEQVJX
SU4pCisgICAgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gZS5oYXNQcmVjaXNlU2Nyb2xs
aW5nRGVsdGFzOworICAgIG1fcGhhc2UgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQbGF0Zm9ybVdo
ZWVsRXZlbnRQaGFzZT4oZS5waGFzZSk7CisgICAgbV9tb21lbnR1bVBoYXNlID0gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+KGUubW9tZW50dW1QaGFzZSk7Cisg
ICAgbV90aW1lc3RhbXAgPSBlLnRpbWVTdGFtcFNlY29uZHM7CisjZW5kaWYKIH0KIAorLy8gUGxh
dGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitQbGF0Zm9y
bUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcihXaWRnZXQq
IHdpZGdldCwgY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBlKQoreworICAgIHN3aXRjaCAoZS50eXBl
KSB7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46CisgICAgICAg
IG1fdHlwZSA9IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKKyAgICAg
ICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKyAgICBtX3Bvc2l0aW9uID0gd2lkZ2V0LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3co
SW50UG9pbnQoZS54LCBlLnkpKTsKKyAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQoZS5n
bG9iYWxYLCBlLmdsb2JhbFkpOworICAgIG1fdGltZXN0YW1wID0gZS50aW1lU3RhbXBTZWNvbmRz
OworICAgIG1fc2hpZnRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpTaGlmdEtl
eSk7CisgICAgbV9jdHJsS2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6Q29udHJv
bEtleSk7CisgICAgbV9hbHRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpBbHRL
ZXkpOworICAgIG1fbWV0YUtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6Ok1ldGFL
ZXkpOworfQorI2VuZGlmCisKIC8vIE1ha2VQbGF0Zm9ybUtleWJvYXJkRXZlbnQgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogc3RhdGljIGlubGlu
ZSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlR5cGUgdG9QbGF0Zm9ybUtleWJvYXJkRXZlbnRUeXBl
KFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAkocmV2aXNpb24gOTI0NzYp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEsMTIgQEAKICNpZm5kZWYgV2ViSW5wdXRFdmVu
dENvbnZlcnNpb25faAogI2RlZmluZSBXZWJJbnB1dEV2ZW50Q29udmVyc2lvbl9oCiAKLSNpbmNs
dWRlICJXZWJJbnB1dEV2ZW50LmgiCi0KKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
TW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hFdmVudC5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgS2V5Ym9hcmRFdmVudDsKQEAgLTUxLDYgKzUxLDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTW91c2VX
aGVlbEV2ZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKK2NsYXNzIFdlYkdlc3R1cmVFdmVu
dDsKIAogLy8gVGhlc2UgY2xhc3NlcyBhcmUgdXNlZCB0byBjb252ZXJ0IGZyb20gV2ViSW5wdXRF
dmVudCBzdWJjbGFzc2VzIHRvCiAvLyBjb3JyZXNwb25kaW5nIFdlYkNvcmUgZXZlbnRzLgpAQCAt
NjUsNiArNjYsMTMgQEAgcHVibGljOgogICAgIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIoV2Vi
Q29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Jik7CiB9OwogCisjaWYgRU5B
QkxFKEdFU1RVUkVfRVZFTlRTKQorY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIDog
cHVibGljIFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50IHsKK3B1YmxpYzoKKyAgICBQbGF0
Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoV2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViR2VzdHVy
ZUV2ZW50Jik7Cit9OworI2VuZGlmCisKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxk
ZXIgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50IHsKIHB1YmxpYzoKICAg
ICBQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwu
Y3BwCShyZXZpc2lvbiA5MjQ3NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBv
cHVwTWVudUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDExIEBAIHZvaWQg
V2ViUG9wdXBNZW51SW1wbDo6TW91c2VXaGVlbChjb25zdCAKICAgICBtX3dpZGdldC0+aGFuZGxl
V2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKG1fd2lkZ2V0LCBldmVudCkpOwog
fQogCitib29sIFdlYlBvcHVwTWVudUltcGw6Okdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJl
RXZlbnQmIGV2ZW50KQoreworICAgIHJldHVybiBtX3dpZGdldC0+aGFuZGxlR2VzdHVyZUV2ZW50
KFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcihtX3dpZGdldCwgZXZlbnQpKTsKK30KKwogI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCiBib29sIFdlYlBvcHVwTWVudUltcGw6OlRvdWNoRXZlbnQo
Y29uc3QgV2ViVG91Y2hFdmVudCYgZXZlbnQpCiB7CkBAIC0yNjYsNiArMjcxLDEwIEBAIGJvb2wg
V2ViUG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudCgKICAgICBjYXNlIFdlYklucHV0RXZl
bnQ6OlRvdWNoQ2FuY2VsOgogICAgICAgICByZXR1cm4gVG91Y2hFdmVudCgqc3RhdGljX2Nhc3Q8
Y29uc3QgV2ViVG91Y2hFdmVudCo+KCZpbnB1dEV2ZW50KSk7CiAKKyAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVTY3JvbGxFbmQ6CisgICAgICAgIHJldHVybiBHZXN0dXJlRXZlbnQoKnN0YXRpY19jYXN0PGNv
bnN0IFdlYkdlc3R1cmVFdmVudCo+KCZpbnB1dEV2ZW50KSk7CisKICAgICBjYXNlIFdlYklucHV0
RXZlbnQ6OlVuZGVmaW5lZDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlRW50ZXI6CiAg
ICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpDb250ZXh0TWVudToKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgJKHJldmlzaW9uIDkyNDc2KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNzIFdpZGdldDsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xh
c3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKQEAgLTEwNCw2ICsx
MDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBNb3VzZVVwKGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsK
ICAgICB2b2lkIE1vdXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIHZv
aWQgTW91c2VXaGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKKyAgICBib29sIEdlc3R1
cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKICAgICBib29sIFRvdWNoRXZlbnQoY29u
c3QgV2ViVG91Y2hFdmVudCYpOwogICAgIGJvb2wgS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCShyZXZpc2lvbiA5MjQ3NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAzLDYgKzYwMywxNCBAQCBib29sIFdlYlZp
ZXdJbXBsOjptb3VzZVdoZWVsKGNvbnN0IFdlYk1vCiAgICAgcmV0dXJuIG1haW5GcmFtZUltcGwo
KS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVdoZWVsRXZlbnQocGxhdGZvcm1FdmVu
dCk7CiB9CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitib29sIFdlYlZpZXdJbXBsOjpn
ZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKK3sKKyAgICBQbGF0Zm9y
bUdlc3R1cmVFdmVudEJ1aWxkZXIgcGxhdGZvcm1FdmVudChtYWluRnJhbWVJbXBsKCktPmZyYW1l
VmlldygpLCBldmVudCk7CisgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZl
bnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChwbGF0Zm9ybUV2ZW50KTsKK30KKyNlbmRp
ZgorCiBib29sIFdlYlZpZXdJbXBsOjprZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBl
dmVudCkKIHsKICAgICBBU1NFUlQoKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6UmF3S2V5
RG93bikKQEAgLTEyODAsNiArMTI4OCwxMyBAQCBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVJbnB1
dEV2ZW50KGNvbnN0CiAgICAgICAgIGhhbmRsZWQgPSBjaGFyRXZlbnQoKnN0YXRpY19jYXN0PGNv
bnN0IFdlYktleWJvYXJkRXZlbnQqPigmaW5wdXRFdmVudCkpOwogICAgICAgICBicmVhazsKIAor
I2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVTY3JvbGxCZWdpbjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6
CisgICAgICAgIGhhbmRsZWQgPSBnZXN0dXJlRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdl
c3R1cmVFdmVudCo+KCZpbnB1dEV2ZW50KSk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hTdGFy
dDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoTW92ZToKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gOTI0NzYpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2
ICs4NCw3IEBAIGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFzcyBXZWJEZXZUb29s
c0FnZW50Q2xpZW50OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGU7CiBjbGFzcyBXZWJG
cmFtZUltcGw7CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiBjbGFzcyBXZWJJbWFnZTsKIGNsYXNz
IFdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwpAQCAtMjc3LDYgKzI3OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdXNlQ29udGV4dE1lbnUoY29uc3QgV2ViTW91c2VFdmVu
dCYpOwogICAgIHZvaWQgbW91c2VEb3VibGVDbGljayhjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAg
ICAgYm9vbCBtb3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYpOworICAgIGJvb2wg
Z2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wga2V5RXZlbnQo
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIGJvb2wgY2hhckV2ZW50KGNvbnN0IFdlYktl
eWJvYXJkRXZlbnQmKTsKICAgICBib29sIHRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYp
OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbWFjL1dlYklucHV0RXZlbnRGYWN0
b3J5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL21hYy9XZWJJ
bnB1dEV2ZW50RmFjdG9yeS5tbQkocmV2aXNpb24gOTI0NzYpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDI1IEBACiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgPHd0
Zi9BU0NJSUNUeXBlLmg+CiAKKyNpZiAhZGVmaW5lZChNQUNfT1NfWF9WRVJTSU9OXzEwXzcpIHx8
IChNQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgTUFDX09TX1hfVkVSU0lPTl8xMF83KQor
CitlbnVtIHsKKyAgICBOU0V2ZW50UGhhc2VOb25lICAgICAgICA9IDAsCisgICAgTlNFdmVudFBo
YXNlQmVnYW4gICAgICAgPSAweDEgPDwgMCwKKyAgICBOU0V2ZW50UGhhc2VTdGF0aW9uYXJ5ICA9
IDB4MSA8PCAxLAorICAgIE5TRXZlbnRQaGFzZUNoYW5nZWQgICAgID0gMHgxIDw8IDIsCisgICAg
TlNFdmVudFBoYXNlRW5kZWQgICAgICAgPSAweDEgPDwgMywKKyAgICBOU0V2ZW50UGhhc2VDYW5j
ZWxsZWQgICA9IDB4MSA8PCA0Cit9OwordHlwZWRlZiBOU1VJbnRlZ2VyIE5TRXZlbnRQaGFzZTsK
KworQGludGVyZmFjZSBOU0V2ZW50IChMaW9uU0RLRGVjbGFyYXRpb25zKQorLSAoTlNFdmVudFBo
YXNlKXBoYXNlOworLSAoTlNFdmVudFBoYXNlKW1vbWVudHVtUGhhc2U7CitAZW5kCisKKyNlbmRp
ZiAgLy8gTUFDX09TX1hfVkVSU0lPTl8xMF83CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBX
ZWJLZXlib2FyZEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNDksNiArMTY4LDE5IEBAIHN0YXRpYyBpbnQgd2luZG93
c0tleUNvZGVGb3JLZXlFdmVudChOU0UKICAgICByZXR1cm4gV2ViQ29yZTo6d2luZG93c0tleUNv
ZGVGb3JLZXlDb2RlKFtldmVudCBrZXlDb2RlXSk7CiB9CiAKK3N0YXRpYyBXZWJJbnB1dEV2ZW50
OjpUeXBlIGdlc3R1cmVFdmVudFR5cGVGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBz
d2l0Y2ggKFtldmVudCB0eXBlXSkgeworICAgIGNhc2UgTlNFdmVudFR5cGVCZWdpbkdlc3R1cmU6
CisgICAgICAgIHJldHVybiBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47CisgICAg
Y2FzZSBOU0V2ZW50VHlwZUVuZEdlc3R1cmU6CisgICAgICAgIHJldHVybiBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlU2Nyb2xsRW5kOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDsK
KyAgICB9Cit9CisKIHN0YXRpYyBpbmxpbmUgTlNTdHJpbmcqIHRleHRGcm9tRXZlbnQoTlNFdmVu
dCogZXZlbnQpCiB7CiAgICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkKQEAg
LTcwNyw2ICs3MzksNDAgQEAgV2ViTW91c2VFdmVudCBXZWJJbnB1dEV2ZW50RmFjdG9yeTo6bW91
cwogCiAvLyBXZWJNb3VzZVdoZWVsRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK3N0YXRpYyBXZWJNb3VzZVdoZWVsRXZlbnQ6
OlBoYXNlIHBoYXNlRm9yTlNFdmVudFBoYXNlKE5TRXZlbnRQaGFzZSBldmVudFBoYXNlKQorewor
ICAgIHVpbnQzMl90IHBoYXNlID0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZU5vbmU7IAorICAg
IGlmIChldmVudFBoYXNlICYgTlNFdmVudFBoYXNlQmVnYW4pCisgICAgICAgIHBoYXNlIHw9IFdl
Yk1vdXNlV2hlZWxFdmVudDo6UGhhc2VCZWdhbjsKKyAgICBpZiAoZXZlbnRQaGFzZSAmIE5TRXZl
bnRQaGFzZVN0YXRpb25hcnkpCisgICAgICAgIHBoYXNlIHw9IFdlYk1vdXNlV2hlZWxFdmVudDo6
UGhhc2VTdGF0aW9uYXJ5OworICAgIGlmIChldmVudFBoYXNlICYgTlNFdmVudFBoYXNlQ2hhbmdl
ZCkKKyAgICAgICAgcGhhc2UgfD0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZUNoYW5nZWQ7Cisg
ICAgaWYgKGV2ZW50UGhhc2UgJiBOU0V2ZW50UGhhc2VFbmRlZCkKKyAgICAgICAgcGhhc2UgfD0g
V2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZUVuZGVkOworICAgIGlmIChldmVudFBoYXNlICYgTlNF
dmVudFBoYXNlQ2FuY2VsbGVkKQorICAgICAgICBwaGFzZSB8PSBXZWJNb3VzZVdoZWVsRXZlbnQ6
OlBoYXNlQ2FuY2VsbGVkOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJNb3VzZVdoZWVsRXZl
bnQ6OlBoYXNlPihwaGFzZSk7Cit9CisKK3N0YXRpYyBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNl
IHBoYXNlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgaWYgKCFbZXZlbnQgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwaGFzZSldKQorICAgICAgICByZXR1cm4gV2ViTW91c2VX
aGVlbEV2ZW50OjpQaGFzZU5vbmU7CisKKyAgICBOU0V2ZW50UGhhc2UgZXZlbnRQaGFzZSA9IFtl
dmVudCBwaGFzZV07CisgICAgcmV0dXJuIHBoYXNlRm9yTlNFdmVudFBoYXNlKGV2ZW50UGhhc2Up
OworfQorCitzdGF0aWMgV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZSBtb21lbnR1bVBoYXNlRm9y
RXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgaWYgKCFbZXZlbnQgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihtb21lbnR1bVBoYXNlKV0pCisgICAgICAgIHJldHVybiBXZWJNb3VzZVdo
ZWVsRXZlbnQ6OlBoYXNlTm9uZTsKKworICAgIE5TRXZlbnRQaGFzZSBldmVudE1vbWVudHVtUGhh
c2UgPSBbZXZlbnQgbW9tZW50dW1QaGFzZV07CisgICAgcmV0dXJuIHBoYXNlRm9yTlNFdmVudFBo
YXNlKGV2ZW50TW9tZW50dW1QaGFzZSk7Cit9CisKIFdlYk1vdXNlV2hlZWxFdmVudCBXZWJJbnB1
dEV2ZW50RmFjdG9yeTo6bW91c2VXaGVlbEV2ZW50KE5TRXZlbnQqIGV2ZW50LCBOU1ZpZXcqIHZp
ZXcpCiB7CiAgICAgV2ViTW91c2VXaGVlbEV2ZW50IHJlc3VsdDsKQEAgLTgzOCw2ICs5MDQsNyBA
QCBXZWJNb3VzZVdoZWVsRXZlbnQgV2ViSW5wdXRFdmVudEZhY3Rvcnk6CiAgICAgICAgIHJlc3Vs
dC5kZWx0YVkgPSBDR0V2ZW50R2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudCwga0NHU2Nyb2xs
V2hlZWxFdmVudFBvaW50RGVsdGFBeGlzMSk7CiAgICAgICAgIHJlc3VsdC53aGVlbFRpY2tzWCA9
IHJlc3VsdC5kZWx0YVggLyBzY3JvbGxiYXJQaXhlbHNQZXJDb2NvYVRpY2s7CiAgICAgICAgIHJl
c3VsdC53aGVlbFRpY2tzWSA9IHJlc3VsdC5kZWx0YVkgLyBzY3JvbGxiYXJQaXhlbHNQZXJDb2Nv
YVRpY2s7CisgICAgICAgIHJlc3VsdC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gdHJ1ZTsK
ICAgICB9IGVsc2UgewogICAgICAgICByZXN1bHQuZGVsdGFYID0gW2V2ZW50IGRlbHRhWF0gKiBz
Y3JvbGxiYXJQaXhlbHNQZXJDb2NvYVRpY2s7CiAgICAgICAgIHJlc3VsdC5kZWx0YVkgPSBbZXZl
bnQgZGVsdGFZXSAqIHNjcm9sbGJhclBpeGVsc1BlckNvY29hVGljazsKQEAgLTg0Nyw2ICs5MTQs
MjkgQEAgV2ViTW91c2VXaGVlbEV2ZW50IFdlYklucHV0RXZlbnRGYWN0b3J5OgogCiAgICAgcmVz
dWx0LnRpbWVTdGFtcFNlY29uZHMgPSBbZXZlbnQgdGltZXN0YW1wXTsKIAorICAgIHJlc3VsdC5w
aGFzZSAgICAgICAgICAgICAgPSBwaGFzZUZvckV2ZW50KGV2ZW50KTsKKyAgICByZXN1bHQubW9t
ZW50dW1QaGFzZSAgICAgID0gbW9tZW50dW1QaGFzZUZvckV2ZW50KGV2ZW50KTsKKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK1dlYkdlc3R1cmVFdmVudCBXZWJJbnB1dEV2ZW50RmFjdG9yeTo6
Z2VzdHVyZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKnZpZXcpCit7CisgICAgV2ViR2Vz
dHVyZUV2ZW50IHJlc3VsdDsKKworICAgIC8vIFVzZSBhIHRlbXBvcmFyeSBXZWJNb3VzZUV2ZW50
IHRvIGdldCB0aGUgbG9jYXRpb24uCisgICAgV2ViTW91c2VFdmVudCB0ZW1wOworCisgICAgc2V0
V2ViRXZlbnRMb2NhdGlvbkZyb21FdmVudEluVmlldygmdGVtcCwgZXZlbnQsIHZpZXcpOworICAg
IHJlc3VsdC54ID0gdGVtcC54OworICAgIHJlc3VsdC55ID0gdGVtcC55OworICAgIHJlc3VsdC5n
bG9iYWxYID0gdGVtcC5nbG9iYWxYOworICAgIHJlc3VsdC5nbG9iYWxZID0gdGVtcC5nbG9iYWxZ
OworCisgICAgcmVzdWx0LnR5cGUgPSBnZXN0dXJlRXZlbnRUeXBlRm9yRXZlbnQoZXZlbnQpOwor
ICAgIHJlc3VsdC5tb2RpZmllcnMgPSBtb2RpZmllcnNGcm9tRXZlbnQoZXZlbnQpOworICAgIHJl
c3VsdC50aW1lU3RhbXBTZWNvbmRzID0gW2V2ZW50IHRpbWVzdGFtcF07CisKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103273</attachid>
            <date>2011-08-08 12:03:19 -0700</date>
            <delta_ts>2011-08-08 12:22:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65707-20110808150318.patch</filename>
            <type>text/plain</type>
            <size>20217</size>
            <attacher>asvitkine</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNTk0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBT
dml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBF
bmFibGUgcnViYmVyIGJhbmRpbmcgd2hlbiBzY3JvbGxpbmcuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgaXMg
anVzdCBzeW5jaW5nIGNoYW5nZXMgdG8gY2hyb21pdW0gcGxhdGZvcm0uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
V2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKwogMjAxMS0wOC0w
OCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQnVp
bGQgZml4IGFmdGVyIHI5MjU4OSwgZGVmYXVsdFNpemUgaXMgbm90IHVzZWQuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAkocmV2aXNpb24gOTI1
OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50CiAgICAgfTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKICAg
ICBlbnVtIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHsKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2VOb25lICAgICAgICA9IDAsCiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
QmVnYW4gICAgICAgPSAxIDw8IDEsCkBAIC05Nyw3ICs5Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgICwgbV9jdHJsS2V5KGZhbHNlKQogICAgICAgICAgICAgLCBtX2FsdEtl
eShmYWxzZSkKICAgICAgICAgICAgICwgbV9tZXRhS2V5KGZhbHNlKQotI2lmIFBMQVRGT1JNKE1B
QykKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lO
KSkKICAgICAgICAgICAgICwgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKGZhbHNlKQogICAg
ICAgICAgICAgLCBtX3BoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSkKICAgICAgICAg
ICAgICwgbV9tb21lbnR1bVBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSkKQEAgLTEx
OSw3ICsxMTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fY3RybEtl
eShjdHJsS2V5KQogICAgICAgICAgICAgLCBtX2FsdEtleShhbHRLZXkpCiAgICAgICAgICAgICAs
IG1fbWV0YUtleShtZXRhS2V5KQotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMp
IHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgICAgICwgbV9o
YXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKGZhbHNlKQogICAgICAgICAgICAgLCBtX3BoYXNlKFBs
YXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSkKICAgICAgICAgICAgICwgbV9tb21lbnR1bVBoYXNl
KFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSkKQEAgLTE3NCw3ICsxNzQsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAjaWYgZGVmaW5lZChfX09CSkNfXykKICAgICAgICAgUGxhdGZvcm1XaGVl
bEV2ZW50KE5TRXZlbnQgKiwgTlNWaWV3ICp3aW5kb3dWaWV3KTsKICNlbmRpZgorI2VuZGlmCiAK
KyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkK
ICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2UoKSBjb25zdCB7IHJldHVybiBt
X3BoYXNlOyB9CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1vbWVudHVtUGhhc2Uo
KSBjb25zdCB7IHJldHVybiBtX21vbWVudHVtUGhhc2U7IH0KICAgICAgICAgYm9vbCBoYXNQcmVj
aXNlU2Nyb2xsaW5nRGVsdGFzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNQcmVjaXNlU2Nyb2xsaW5n
RGVsdGFzOyB9CkBAIC0yMTMsNyArMjE1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBib29sIG1fY3RybEtleTsKICAgICAgICAgYm9vbCBtX2FsdEtleTsKICAgICAgICAgYm9vbCBt
X21ldGFLZXk7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRG
T1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogICAgICAgICBib29sIG1faGFzUHJlY2lzZVNj
cm9sbGluZ0RlbHRhczsKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbV9waGFzZTsK
ICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbV9tb21lbnR1bVBoYXNlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxBbmltYXRvckNocm9taXVtTWFjLm1tCShyZXZpc2lvbiA5MjU5NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTg1Miw3ICs4NTIsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1N
YWM6OmhhbmRsZUdlCiB7CiAgICAgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZSkKICAgICAgICAgYmVnaW5TY3JvbGxHZXN0dXJl
KCk7Ci0gICAgZWxzZQorICAgIGVsc2UgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZv
cm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGUpCiAgICAgICAgIGVuZFNjcm9sbEdlc3R1cmUo
KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNTk0KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzNiBAQAorMjAxMS0wOC0wNCAgQWxleGVpIFN2aXRraW5lICA8YXN2aXRraW5lQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEVuYWJsZSBydWJiZXIgYmFuZGluZyB3aGVu
IHNjcm9sbGluZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjU3MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAgICAgICogcHVibGljL1dlYklucHV0RXZlbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViTW91c2VXaGVlbEV2ZW50OjpXZWJNb3VzZVdoZWVsRXZlbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQ6OldlYkdlc3R1cmVFdmVudCk6Cisg
ICAgICAgICogcHVibGljL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oOgorICAgICAgICAqIHNy
Yy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3Jt
V2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIpOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRmb3JtR2VzdHVyZUV2ZW50
QnVpbGRlcik6CisgICAgICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmg6CisgICAg
ICAgICogc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1
cE1lbnVJbXBsOjpHZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVJ
bXBsOjpoYW5kbGVJbnB1dEV2ZW50KToKKyAgICAgICAgKiBzcmMvV2ViUG9wdXBNZW51SW1wbC5o
OgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpnZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFu
ZGxlSW5wdXRFdmVudCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICog
c3JjL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5tbToKKyAgICAgICAgKFdlYktpdDo6Z2VzdHVy
ZUV2ZW50VHlwZUZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6cGhhc2VGb3JOU0V2ZW50UGhh
c2UpOgorICAgICAgICAoV2ViS2l0OjpwaGFzZUZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6
bW9tZW50dW1QaGFzZUZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5wdXRFdmVudEZh
Y3Rvcnk6Om1vdXNlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklucHV0RXZlbnRG
YWN0b3J5OjpnZXN0dXJlRXZlbnQpOgorCiAyMDExLTA4LTA1ICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGltcGxlbWVudCBk
b2NrL3VuZG9jayBpbiBXZWJLaXQyIHdpdGhvdXQgZ2V0dGluZyBpbnRvIFdlYkNvcmUuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCShyZXZpc2lvbiA5MjU5NCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTUz
LDYgKzE1Myw3IEBACiAgICAgICB9XSwKICAgICAgIFsnT1M9PSJtYWMiJywgewogICAgICAgICAn
ZmVhdHVyZV9kZWZpbmVzJzogWworICAgICAgICAgICdFTkFCTEVfUlVCQkVSX0JBTkRJTkc9MScs
CiAgICAgICAgICAgJ1dURl9VU0VfU0tJQV9PTl9NQUNfQ0hST01JVU09PCh1c2Vfc2tpYSknLAog
ICAgICAgICBdLAogICAgICAgfV0sCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJbnB1dEV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSW5wdXRFdmVudC5oCShyZXZpc2lvbiA5MjU5NCkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYg
KzEwMCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIEtleVVwLAogICAgICAgICBDaGFyLAogCisgICAg
ICAgIC8vIFdlYkdlc3R1cmVFdmVudAorICAgICAgICBHZXN0dXJlU2Nyb2xsQmVnaW4sCisgICAg
ICAgIEdlc3R1cmVTY3JvbGxFbmQsCisKICAgICAgICAgLy8gV2ViVG91Y2hFdmVudAogICAgICAg
ICBUb3VjaFN0YXJ0LAogICAgICAgICBUb3VjaE1vdmUsCkBAIC0yNzksNiArMjgzLDE1IEBAIHB1
YmxpYzoKIAogY2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50IDogcHVibGljIFdlYk1vdXNlRXZlbnQg
ewogcHVibGljOgorICAgIGVudW0gUGhhc2UgeworICAgICAgICBQaGFzZU5vbmUgICAgICAgID0g
MCwKKyAgICAgICAgUGhhc2VCZWdhbiAgICAgICA9IDEgPDwgMSwKKyAgICAgICAgUGhhc2VTdGF0
aW9uYXJ5ICA9IDEgPDwgMiwKKyAgICAgICAgUGhhc2VDaGFuZ2VkICAgICA9IDEgPDwgMywKKyAg
ICAgICAgUGhhc2VFbmRlZCAgICAgICA9IDEgPDwgNCwKKyAgICAgICAgUGhhc2VDYW5jZWxsZWQg
ICA9IDEgPDwgNSwKKyAgICB9OworCiAgICAgZmxvYXQgZGVsdGFYOwogICAgIGZsb2F0IGRlbHRh
WTsKICAgICBmbG9hdCB3aGVlbFRpY2tzWDsKQEAgLTI5MCw2ICszMDMsMTAgQEAgcHVibGljOgog
ICAgIC8vIHRyYW5zZmVyaW5nIGl0IG92ZXIgdGhlIHdpcmUuCiAgICAgaW50IHNjcm9sbEJ5UGFn
ZTsKIAorICAgIGJvb2wgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhczsKKyAgICBQaGFzZSBwaGFz
ZTsKKyAgICBQaGFzZSBtb21lbnR1bVBoYXNlOworCiAgICAgV2ViTW91c2VXaGVlbEV2ZW50KHVu
c2lnbmVkIHNpemVQYXJhbSA9IHNpemVvZihXZWJNb3VzZVdoZWVsRXZlbnQpKQogICAgICAgICA6
IFdlYk1vdXNlRXZlbnQoc2l6ZVBhcmFtKQogICAgICAgICAsIGRlbHRhWCgwLjBmKQpAQCAtMjk3
LDYgKzMxNCwyNyBAQCBwdWJsaWM6CiAgICAgICAgICwgd2hlZWxUaWNrc1goMC4wZikKICAgICAg
ICAgLCB3aGVlbFRpY2tzWSgwLjBmKQogICAgICAgICAsIHNjcm9sbEJ5UGFnZShmYWxzZSkKKyAg
ICAgICAgLCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKGZhbHNlKQorICAgICAgICAsIHBoYXNl
KFBoYXNlTm9uZSkKKyAgICAgICAgLCBtb21lbnR1bVBoYXNlKFBoYXNlTm9uZSkKKyAgICB7Cisg
ICAgfQorfTsKKworLy8gV2ViR2VzdHVyZUV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIFdlYkdlc3R1cmVF
dmVudCA6IHB1YmxpYyBXZWJJbnB1dEV2ZW50IHsKK3B1YmxpYzoKKyAgICBpbnQgeDsKKyAgICBp
bnQgeTsKKyAgICBpbnQgZ2xvYmFsWDsKKyAgICBpbnQgZ2xvYmFsWTsKKworICAgIFdlYkdlc3R1
cmVFdmVudCh1bnNpZ25lZCBzaXplUGFyYW0gPSBzaXplb2YoV2ViR2VzdHVyZUV2ZW50KSkKKyAg
ICAgICAgOiB4KDApCisgICAgICAgICwgeSgwKQorICAgICAgICAsIGdsb2JhbFgoMCkKKyAgICAg
ICAgLCBnbG9iYWxZKDApCiAgICAgewogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkuaAko
cmV2aXNpb24gOTI1OTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9tYWMvV2Vi
SW5wdXRFdmVudEZhY3RvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2
ZW50OwogY2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50OworY2xhc3MgV2ViR2VzdHVyZUV2ZW50Owog
CiBjbGFzcyBXZWJJbnB1dEV2ZW50RmFjdG9yeSB7CiBwdWJsaWM6CkBAIC01Myw2ICs1NCw3IEBA
IHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJLZXlib2FyZEV2ZW50IGtleWJv
YXJkRXZlbnQod2NoYXJfdCBjaGFyYWN0ZXIsIGludCBtb2RpZmllcnMsIGRvdWJsZSB0aW1lU3Rh
bXBTZWNvbmRzKTsKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJNb3VzZUV2ZW50IG1vdXNl
RXZlbnQoTlNFdmVudCosIE5TVmlldyopOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYk1v
dXNlV2hlZWxFdmVudCBtb3VzZVdoZWVsRXZlbnQoTlNFdmVudCosIE5TVmlldyopOworICAgIFdF
QktJVF9FWFBPUlQgc3RhdGljIFdlYkdlc3R1cmVFdmVudCBnZXN0dXJlRXZlbnQoTlNFdmVudCAq
LCBOU1ZpZXcgKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5j
cHAJKHJldmlzaW9uIDkyNTk0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5w
dXRFdmVudENvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsOCArMTAwLDM5IEBA
IFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3JtV2hlZWwKICAgICBtX2N0cmxLZXkg
PSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5KTsKICAgICBtX2FsdEtl
eSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkFsdEtleSk7CiAgICAgbV9tZXRhS2V5
ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6TWV0YUtleSk7CisjaWYgT1MoREFSV0lO
KQorICAgIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IGUuaGFzUHJlY2lzZVNjcm9sbGlu
Z0RlbHRhczsKKyAgICBtX3BoYXNlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2U+KGUucGhhc2UpOworICAgIG1fbW9tZW50dW1QaGFzZSA9IHN0YXRpY19jYXN0
PFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPihlLm1vbWVudHVtUGhhc2UpOworICAg
IG1fdGltZXN0YW1wID0gZS50aW1lU3RhbXBTZWNvbmRzOworI2VuZGlmCiB9CiAKKy8vIFBsYXRm
b3JtR2VzdHVyZUV2ZW50QnVpbGRlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorUGxhdGZvcm1H
ZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3
aWRnZXQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZSkKK3sKKyAgICBzd2l0Y2ggKGUudHlwZSkg
eworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgorICAgICAgICBt
X3R5cGUgPSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6CisgICAgICAg
IG1fdHlwZSA9IFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CisgICAgbV9wb3NpdGlvbiA9IHdpZGdldC0+Y29udmVydEZyb21Db250YWluaW5nV2luZG93KElu
dFBvaW50KGUueCwgZS55KSk7CisgICAgbV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50KGUuZ2xv
YmFsWCwgZS5nbG9iYWxZKTsKKyAgICBtX3RpbWVzdGFtcCA9IGUudGltZVN0YW1wU2Vjb25kczsK
KyAgICBtX3NoaWZ0S2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6U2hpZnRLZXkp
OworICAgIG1fY3RybEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xL
ZXkpOworICAgIG1fYWx0S2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6QWx0S2V5
KTsKKyAgICBtX21ldGFLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpNZXRhS2V5
KTsKK30KKyNlbmRpZgorCiAvLyBNYWtlUGxhdGZvcm1LZXlib2FyZEV2ZW50IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHN0YXRpYyBpbmxpbmUg
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpUeXBlIHRvUGxhdGZvcm1LZXlib2FyZEV2ZW50VHlwZShX
ZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgJKHJldmlzaW9uIDkyNTk0KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsMTIgKzMxLDEyIEBACiAjaWZuZGVmIFdlYklucHV0RXZlbnRD
b252ZXJzaW9uX2gKICNkZWZpbmUgV2ViSW5wdXRFdmVudENvbnZlcnNpb25faAogCi0jaW5jbHVk
ZSAiV2ViSW5wdXRFdmVudC5oIgotCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1v
dXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CkBAIC01MSw2ICs1MSw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk1vdXNlV2hl
ZWxFdmVudDsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7
CiAKIC8vIFRoZXNlIGNsYXNzZXMgYXJlIHVzZWQgdG8gY29udmVydCBmcm9tIFdlYklucHV0RXZl
bnQgc3ViY2xhc3NlcyB0bwogLy8gY29ycmVzcG9uZGluZyBXZWJDb3JlIGV2ZW50cy4KQEAgLTY1
LDYgKzY2LDEzIEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKFdlYkNv
cmU6OldpZGdldCosIGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYpOwogfTsKIAorI2lmIEVOQUJM
RShHRVNUVVJFX0VWRU5UUykKK2NsYXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlciA6IHB1
YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudCB7CitwdWJsaWM6CisgICAgUGxhdGZv
cm1HZXN0dXJlRXZlbnRCdWlsZGVyKFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYkdlc3R1cmVF
dmVudCYpOworfTsKKyNlbmRpZgorCiBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVy
IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCB7CiBwdWJsaWM6CiAgICAg
UGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNw
cAkocmV2aXNpb24gOTI1OTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1
cE1lbnVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMywxMSBAQCB2b2lkIFdl
YlBvcHVwTWVudUltcGw6Ok1vdXNlV2hlZWwoY29uc3QgCiAgICAgbV93aWRnZXQtPmhhbmRsZVdo
ZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcihtX3dpZGdldCwgZXZlbnQpKTsKIH0K
IAorYm9vbCBXZWJQb3B1cE1lbnVJbXBsOjpHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2
ZW50JiBldmVudCkKK3sKKyAgICByZXR1cm4gbV93aWRnZXQtPmhhbmRsZUdlc3R1cmVFdmVudChQ
bGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIobV93aWRnZXQsIGV2ZW50KSk7Cit9CisKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQogYm9vbCBXZWJQb3B1cE1lbnVJbXBsOjpUb3VjaEV2ZW50KGNv
bnN0IFdlYlRvdWNoRXZlbnQmIGV2ZW50KQogewpAQCAtMjY2LDYgKzI3MSwxMCBAQCBib29sIFdl
YlBvcHVwTWVudUltcGw6OmhhbmRsZUlucHV0RXZlbnQoCiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50
OjpUb3VjaENhbmNlbDoKICAgICAgICAgcmV0dXJuIFRvdWNoRXZlbnQoKnN0YXRpY19jYXN0PGNv
bnN0IFdlYlRvdWNoRXZlbnQqPigmaW5wdXRFdmVudCkpOwogCisgICAgY2FzZSBXZWJJbnB1dEV2
ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
U2Nyb2xsRW5kOgorICAgICAgICByZXR1cm4gR2VzdHVyZUV2ZW50KCpzdGF0aWNfY2FzdDxjb25z
dCBXZWJHZXN0dXJlRXZlbnQqPigmaW5wdXRFdmVudCkpOworCiAgICAgY2FzZSBXZWJJbnB1dEV2
ZW50OjpVbmRlZmluZWQ6CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZUVudGVyOgogICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6Q29udGV4dE1lbnU6CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oCShyZXZpc2lvbiA5MjU5NCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBXaWRnZXQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
eworY2xhc3MgV2ViR2VzdHVyZUV2ZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNz
IFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CkBAIC0xMDQsNiArMTA1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgTW91c2VVcChjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAg
ICAgdm9pZCBNb3VzZURvdWJsZUNsaWNrKGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lk
IE1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Jik7CisgICAgYm9vbCBHZXN0dXJl
RXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CiAgICAgYm9vbCBUb3VjaEV2ZW50KGNvbnN0
IFdlYlRvdWNoRXZlbnQmKTsKICAgICBib29sIEtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmKTsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAkocmV2aXNpb24gOTI1OTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwMyw2ICs2MDMsMTQgQEAgYm9vbCBXZWJWaWV3
SW1wbDo6bW91c2VXaGVlbChjb25zdCBXZWJNbwogICAgIHJldHVybiBtYWluRnJhbWVJbXBsKCkt
PmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVXaGVlbEV2ZW50KHBsYXRmb3JtRXZlbnQp
OwogfQogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorYm9vbCBXZWJWaWV3SW1wbDo6Z2Vz
dHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCit7CisgICAgUGxhdGZvcm1H
ZXN0dXJlRXZlbnRCdWlsZGVyIHBsYXRmb3JtRXZlbnQobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZp
ZXcoKSwgZXZlbnQpOworICAgIHJldHVybiBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50
SGFuZGxlcigpLT5oYW5kbGVHZXN0dXJlRXZlbnQocGxhdGZvcm1FdmVudCk7Cit9CisjZW5kaWYK
KwogYm9vbCBXZWJWaWV3SW1wbDo6a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZl
bnQpCiB7CiAgICAgQVNTRVJUKChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6OlJhd0tleURv
d24pCkBAIC0xMjgwLDYgKzEyODgsMTMgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlSW5wdXRF
dmVudChjb25zdAogICAgICAgICBoYW5kbGVkID0gY2hhckV2ZW50KCpzdGF0aWNfY2FzdDxjb25z
dCBXZWJLZXlib2FyZEV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKICAgICAgICAgYnJlYWs7CiAKKyNp
ZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
U2Nyb2xsQmVnaW46CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgor
ICAgICAgICBoYW5kbGVkID0gZ2VzdHVyZUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0
dXJlRXZlbnQqPigmaW5wdXRFdmVudCkpOworICAgICAgICBicmVhazsKKyNlbmRpZgorCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoU3RhcnQ6
CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaE1vdmU6CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgJKHJldmlzaW9uIDkyNTk0KQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNiAr
ODQsNyBAQCBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViRGV2VG9vbHNB
Z2VudENsaWVudDsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRQcml2YXRlOwogY2xhc3MgV2ViRnJh
bWVJbXBsOworY2xhc3MgV2ViR2VzdHVyZUV2ZW50OwogY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBX
ZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKQEAgLTI3Nyw2ICsyNzgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBtb3VzZUNvbnRleHRNZW51KGNvbnN0IFdlYk1vdXNlRXZlbnQm
KTsKICAgICB2b2lkIG1vdXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAg
IGJvb2wgbW91c2VXaGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKKyAgICBib29sIGdl
c3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGtleUV2ZW50KGNv
bnN0IFdlYktleWJvYXJkRXZlbnQmKTsKICAgICBib29sIGNoYXJFdmVudChjb25zdCBXZWJLZXli
b2FyZEV2ZW50Jik7CiAgICAgYm9vbCB0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9y
eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9tYWMvV2ViSW5w
dXRFdmVudEZhY3RvcnkubW0JKHJldmlzaW9uIDkyNTk0KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvbWFjL1dlYklucHV0RXZlbnRGYWN0b3J5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCwzNiBAQAogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlIDx3dGYv
QVNDSUlDVHlwZS5oPgogCisjaWYgIWRlZmluZWQoTUFDX09TX1hfVkVSU0lPTl8xMF83KSB8fCAo
TUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IE1BQ19PU19YX1ZFUlNJT05fMTBfNykKKwor
ZW51bSB7CisgICAgTlNFdmVudFBoYXNlTm9uZSAgICAgICAgPSAwLAorICAgIE5TRXZlbnRQaGFz
ZUJlZ2FuICAgICAgID0gMHgxIDw8IDAsCisgICAgTlNFdmVudFBoYXNlU3RhdGlvbmFyeSAgPSAw
eDEgPDwgMSwKKyAgICBOU0V2ZW50UGhhc2VDaGFuZ2VkICAgICA9IDB4MSA8PCAyLAorICAgIE5T
RXZlbnRQaGFzZUVuZGVkICAgICAgID0gMHgxIDw8IDMsCisgICAgTlNFdmVudFBoYXNlQ2FuY2Vs
bGVkICAgPSAweDEgPDwgNAorfTsKK3R5cGVkZWYgTlNVSW50ZWdlciBOU0V2ZW50UGhhc2U7CisK
K0BpbnRlcmZhY2UgTlNFdmVudCAoTGlvblNES0RlY2xhcmF0aW9ucykKKy0gKE5TRXZlbnRQaGFz
ZSlwaGFzZTsKKy0gKE5TRXZlbnRQaGFzZSltb21lbnR1bVBoYXNlOworQGVuZAorCisjZW5kaWYg
IC8vIE1BQ19PU19YX1ZFUlNJT05fMTBfNworCisjaWYgIWRlZmluZWQoTUFDX09TX1hfVkVSU0lP
Tl8xMF82KQorCisvLyBUaGVzZSBhcmUgbm90IGRlZmluZWQgaW4gdGhlIDEwLjUgU0RLIGJ1dCBh
cmUgZGVmaW5lZCBpbiBsYXRlciBTREtzIGluc2lkZQorLy8gYSBNQUNfT1NfWF9WRVJTSU9OX01B
WF9BTExPV0VEID49IE1BQ19PU19YX1ZFUlNJT05fMTBfNSAjaWZkZWYuCitlbnVtIHsKKyAgICBO
U0V2ZW50VHlwZUJlZ2luR2VzdHVyZSAgICAgPSAxOSwKKyAgICBOU0V2ZW50VHlwZUVuZEdlc3R1
cmUgICAgICAgPSAyMAorfTsKKworI2VuZGlmICAvLyBNQUNfT1NfWF9WRVJTSU9OXzEwXzYKKwog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIFdlYktleWJvYXJkRXZlbnQgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE0OSw2ICsx
NzksMTkgQEAgc3RhdGljIGludCB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KE5TRQogICAgIHJl
dHVybiBXZWJDb3JlOjp3aW5kb3dzS2V5Q29kZUZvcktleUNvZGUoW2V2ZW50IGtleUNvZGVdKTsK
IH0KIAorc3RhdGljIFdlYklucHV0RXZlbnQ6OlR5cGUgZ2VzdHVyZUV2ZW50VHlwZUZvckV2ZW50
KE5TRXZlbnQgKmV2ZW50KQoreworICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CisgICAgY2Fz
ZSBOU0V2ZW50VHlwZUJlZ2luR2VzdHVyZToKKyAgICAgICAgcmV0dXJuIFdlYklucHV0RXZlbnQ6
Okdlc3R1cmVTY3JvbGxCZWdpbjsKKyAgICBjYXNlIE5TRXZlbnRUeXBlRW5kR2VzdHVyZToKKyAg
ICAgICAgcmV0dXJuIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOworICAgIH0KK30KKwogc3RhdGljIGlubGluZSBOU1N0
cmluZyogdGV4dEZyb21FdmVudChOU0V2ZW50KiBldmVudCkKIHsKICAgICBpZiAoW2V2ZW50IHR5
cGVdID09IE5TRmxhZ3NDaGFuZ2VkKQpAQCAtNzA3LDYgKzc1MCw0MCBAQCBXZWJNb3VzZUV2ZW50
IFdlYklucHV0RXZlbnRGYWN0b3J5Ojptb3VzCiAKIC8vIFdlYk1vdXNlV2hlZWxFdmVudCAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAor
c3RhdGljIFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2UgcGhhc2VGb3JOU0V2ZW50UGhhc2UoTlNF
dmVudFBoYXNlIGV2ZW50UGhhc2UpCit7CisgICAgdWludDMyX3QgcGhhc2UgPSBXZWJNb3VzZVdo
ZWVsRXZlbnQ6OlBoYXNlTm9uZTsgCisgICAgaWYgKGV2ZW50UGhhc2UgJiBOU0V2ZW50UGhhc2VC
ZWdhbikKKyAgICAgICAgcGhhc2UgfD0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZUJlZ2FuOwor
ICAgIGlmIChldmVudFBoYXNlICYgTlNFdmVudFBoYXNlU3RhdGlvbmFyeSkKKyAgICAgICAgcGhh
c2UgfD0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZVN0YXRpb25hcnk7CisgICAgaWYgKGV2ZW50
UGhhc2UgJiBOU0V2ZW50UGhhc2VDaGFuZ2VkKQorICAgICAgICBwaGFzZSB8PSBXZWJNb3VzZVdo
ZWVsRXZlbnQ6OlBoYXNlQ2hhbmdlZDsKKyAgICBpZiAoZXZlbnRQaGFzZSAmIE5TRXZlbnRQaGFz
ZUVuZGVkKQorICAgICAgICBwaGFzZSB8PSBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlRW5kZWQ7
CisgICAgaWYgKGV2ZW50UGhhc2UgJiBOU0V2ZW50UGhhc2VDYW5jZWxsZWQpCisgICAgICAgIHBo
YXNlIHw9IFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2VDYW5jZWxsZWQ7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2U+KHBoYXNlKTsKK30KKworc3RhdGlj
IFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2UgcGhhc2VGb3JFdmVudChOU0V2ZW50ICpldmVudCkK
K3sKKyAgICBpZiAoIVtldmVudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBoYXNlKV0p
CisgICAgICAgIHJldHVybiBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlTm9uZTsKKworICAgIE5T
RXZlbnRQaGFzZSBldmVudFBoYXNlID0gW2V2ZW50IHBoYXNlXTsKKyAgICByZXR1cm4gcGhhc2VG
b3JOU0V2ZW50UGhhc2UoZXZlbnRQaGFzZSk7Cit9CisKK3N0YXRpYyBXZWJNb3VzZVdoZWVsRXZl
bnQ6OlBoYXNlIG1vbWVudHVtUGhhc2VGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBp
ZiAoIVtldmVudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG1vbWVudHVtUGhhc2UpXSkK
KyAgICAgICAgcmV0dXJuIFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2VOb25lOworCisgICAgTlNF
dmVudFBoYXNlIGV2ZW50TW9tZW50dW1QaGFzZSA9IFtldmVudCBtb21lbnR1bVBoYXNlXTsKKyAg
ICByZXR1cm4gcGhhc2VGb3JOU0V2ZW50UGhhc2UoZXZlbnRNb21lbnR1bVBoYXNlKTsKK30KKwog
V2ViTW91c2VXaGVlbEV2ZW50IFdlYklucHV0RXZlbnRGYWN0b3J5Ojptb3VzZVdoZWVsRXZlbnQo
TlNFdmVudCogZXZlbnQsIE5TVmlldyogdmlldykKIHsKICAgICBXZWJNb3VzZVdoZWVsRXZlbnQg
cmVzdWx0OwpAQCAtODM4LDYgKzkxNSw3IEBAIFdlYk1vdXNlV2hlZWxFdmVudCBXZWJJbnB1dEV2
ZW50RmFjdG9yeToKICAgICAgICAgcmVzdWx0LmRlbHRhWSA9IENHRXZlbnRHZXRJbnRlZ2VyVmFs
dWVGaWVsZChjZ0V2ZW50LCBrQ0dTY3JvbGxXaGVlbEV2ZW50UG9pbnREZWx0YUF4aXMxKTsKICAg
ICAgICAgcmVzdWx0LndoZWVsVGlja3NYID0gcmVzdWx0LmRlbHRhWCAvIHNjcm9sbGJhclBpeGVs
c1BlckNvY29hVGljazsKICAgICAgICAgcmVzdWx0LndoZWVsVGlja3NZID0gcmVzdWx0LmRlbHRh
WSAvIHNjcm9sbGJhclBpeGVsc1BlckNvY29hVGljazsKKyAgICAgICAgcmVzdWx0Lmhhc1ByZWNp
c2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3VsdC5k
ZWx0YVggPSBbZXZlbnQgZGVsdGFYXSAqIHNjcm9sbGJhclBpeGVsc1BlckNvY29hVGljazsKICAg
ICAgICAgcmVzdWx0LmRlbHRhWSA9IFtldmVudCBkZWx0YVldICogc2Nyb2xsYmFyUGl4ZWxzUGVy
Q29jb2FUaWNrOwpAQCAtODQ3LDYgKzkyNSwyOSBAQCBXZWJNb3VzZVdoZWVsRXZlbnQgV2ViSW5w
dXRFdmVudEZhY3Rvcnk6CiAKICAgICByZXN1bHQudGltZVN0YW1wU2Vjb25kcyA9IFtldmVudCB0
aW1lc3RhbXBdOwogCisgICAgcmVzdWx0LnBoYXNlICAgICAgICAgICAgICA9IHBoYXNlRm9yRXZl
bnQoZXZlbnQpOworICAgIHJlc3VsdC5tb21lbnR1bVBoYXNlICAgICAgPSBtb21lbnR1bVBoYXNl
Rm9yRXZlbnQoZXZlbnQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworV2ViR2VzdHVyZUV2
ZW50IFdlYklucHV0RXZlbnRGYWN0b3J5OjpnZXN0dXJlRXZlbnQoTlNFdmVudCAqZXZlbnQsIE5T
VmlldyAqdmlldykKK3sKKyAgICBXZWJHZXN0dXJlRXZlbnQgcmVzdWx0OworCisgICAgLy8gVXNl
IGEgdGVtcG9yYXJ5IFdlYk1vdXNlRXZlbnQgdG8gZ2V0IHRoZSBsb2NhdGlvbi4KKyAgICBXZWJN
b3VzZUV2ZW50IHRlbXA7CisKKyAgICBzZXRXZWJFdmVudExvY2F0aW9uRnJvbUV2ZW50SW5WaWV3
KCZ0ZW1wLCBldmVudCwgdmlldyk7CisgICAgcmVzdWx0LnggPSB0ZW1wLng7CisgICAgcmVzdWx0
LnkgPSB0ZW1wLnk7CisgICAgcmVzdWx0Lmdsb2JhbFggPSB0ZW1wLmdsb2JhbFg7CisgICAgcmVz
dWx0Lmdsb2JhbFkgPSB0ZW1wLmdsb2JhbFk7CisKKyAgICByZXN1bHQudHlwZSA9IGdlc3R1cmVF
dmVudFR5cGVGb3JFdmVudChldmVudCk7CisgICAgcmVzdWx0Lm1vZGlmaWVycyA9IG1vZGlmaWVy
c0Zyb21FdmVudChldmVudCk7CisgICAgcmVzdWx0LnRpbWVTdGFtcFNlY29uZHMgPSBbZXZlbnQg
dGltZXN0YW1wXTsKKwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103275</attachid>
            <date>2011-08-08 12:22:34 -0700</date>
            <delta_ts>2011-08-08 18:51:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65707-20110808152232.patch</filename>
            <type>text/plain</type>
            <size>20199</size>
            <attacher>asvitkine</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNjIwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBT
dml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBF
bmFibGUgcnViYmVyIGJhbmRpbmcgd2hlbiBzY3JvbGxpbmcuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgaXMg
anVzdCBzeW5jaW5nIGNoYW5nZXMgdG8gY2hyb21pdW0gcGxhdGZvcm0uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
V2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKwogMjAxMS0wOC0w
OCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgcmVk
dW5kYW50IGlubGluZSBzdHlsZXMgZnJvbSB0aGUgcGFzdGVkIGNvbnRlbnRzIG1vcmUgYWdncmVz
c2l2ZWx5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZl
bnQuaAkocmV2aXNpb24gOTI2MjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50CiAgICAgfTsKIAotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkg
JiYgT1MoREFSV0lOKSkKICAgICBlbnVtIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHsKICAgICAg
ICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lICAgICAgICA9IDAsCiAgICAgICAgIFBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlQmVnYW4gICAgICAgPSAxIDw8IDEsCkBAIC05Nyw3ICs5Nyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9jdHJsS2V5KGZhbHNlKQogICAg
ICAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKICAgICAgICAgICAgICwgbV9tZXRhS2V5KGZhbHNl
KQotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJP
TUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgICAgICwgbV9oYXNQcmVjaXNlU2Nyb2xsaW5n
RGVsdGFzKGZhbHNlKQogICAgICAgICAgICAgLCBtX3BoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlTm9uZSkKICAgICAgICAgICAgICwgbV9tb21lbnR1bVBoYXNlKFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlTm9uZSkKQEAgLTExOSw3ICsxMTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgICAgICAsIG1fY3RybEtleShjdHJsS2V5KQogICAgICAgICAgICAgLCBtX2FsdEtleShhbHRL
ZXkpCiAgICAgICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQotI2lmIFBMQVRGT1JNKE1BQykK
KyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkK
ICAgICAgICAgICAgICwgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKGZhbHNlKQogICAgICAg
ICAgICAgLCBtX3BoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSkKICAgICAgICAgICAg
ICwgbV9tb21lbnR1bVBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSkKQEAgLTE3NCw3
ICsxNzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgZGVmaW5lZChfX09CSkNfXykKICAg
ICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KE5TRXZlbnQgKiwgTlNWaWV3ICp3aW5kb3dWaWV3KTsK
ICNlbmRpZgorI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlV
TSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2Uo
KSBjb25zdCB7IHJldHVybiBtX3BoYXNlOyB9CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlIG1vbWVudHVtUGhhc2UoKSBjb25zdCB7IHJldHVybiBtX21vbWVudHVtUGhhc2U7IH0KICAg
ICAgICAgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOyB9CkBAIC0yMTMsNyArMjE1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIG1fY3RybEtleTsKICAgICAgICAgYm9vbCBtX2FsdEtl
eTsKICAgICAgICAgYm9vbCBtX21ldGFLZXk7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRG
T1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogICAgICAgICBi
b29sIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhczsKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2UgbV9waGFzZTsKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbV9tb21l
bnR1bVBoYXNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
QW5pbWF0b3JDaHJvbWl1bU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tCShyZXZpc2lvbiA5MjYy
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hy
b21pdW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTg1Miw3ICs4NTIsNyBAQCB2b2lkIFNjcm9s
bEFuaW1hdG9yQ2hyb21pdW1NYWM6OmhhbmRsZUdlCiB7CiAgICAgaWYgKGdlc3R1cmVFdmVudC50
eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZSkKICAgICAgICAg
YmVnaW5TY3JvbGxHZXN0dXJlKCk7Ci0gICAgZWxzZQorICAgIGVsc2UgaWYgKGdlc3R1cmVFdmVu
dC50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGUpCiAgICAgICAg
IGVuZFNjcm9sbEdlc3R1cmUoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDkyNjIwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAxMS0wOC0wNCAgQWxleGVpIFN2aXRraW5l
ICA8YXN2aXRraW5lQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEVuYWJsZSBy
dWJiZXIgYmFuZGluZyB3aGVuIHNjcm9sbGluZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAgICAgICogcHVibGlj
L1dlYklucHV0RXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViTW91c2VXaGVlbEV2ZW50OjpX
ZWJNb3VzZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQ6Oldl
Ykdlc3R1cmVFdmVudCk6CisgICAgICAgICogcHVibGljL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9y
eS5oOgorICAgICAgICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3JtV2hlZWxFdmVudEJ1
aWxkZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBs
YXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgICogc3JjL1dlYklucHV0RXZlbnRD
b252ZXJzaW9uLmg6CisgICAgICAgICogc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVJbXBsOjpHZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb3B1cE1lbnVJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KToKKyAgICAgICAgKiBzcmMv
V2ViUG9wdXBNZW51SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJ
bXBsLmg6CisgICAgICAgICogc3JjL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5tbToKKyAgICAg
ICAgKFdlYktpdDo6Z2VzdHVyZUV2ZW50VHlwZUZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6
cGhhc2VGb3JOU0V2ZW50UGhhc2UpOgorICAgICAgICAoV2ViS2l0OjpwaGFzZUZvckV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6bW9tZW50dW1QaGFzZUZvckV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5wdXRFdmVudEZhY3Rvcnk6Om1vdXNlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklucHV0RXZlbnRGYWN0b3J5OjpnZXN0dXJlRXZlbnQpOgorCiAyMDExLTA4LTA4ICBE
bWl0cnkgTG9tb3YgIDxkc2xvbW92QGdvb2dsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1Nzc4CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL2ZlYXR1cmVzLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9mZWF0dXJlcy5neXBpCShyZXZpc2lvbiA5MjYyMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vZmVhdHVyZXMuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1Myw3IEBACiAgICAg
ICB9XSwKICAgICAgIFsnT1M9PSJtYWMiJywgewogICAgICAgICAnZmVhdHVyZV9kZWZpbmVzJzog
WworICAgICAgICAgICdFTkFCTEVfUlVCQkVSX0JBTkRJTkc9MScsCiAgICAgICAgICAgJ1dURl9V
U0VfU0tJQV9PTl9NQUNfQ0hST01JVU09PCh1c2Vfc2tpYSknLAogICAgICAgICBdLAogICAgICAg
fV0sCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVu
dC5oCShyZXZpc2lvbiA5MjYyMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklucHV0RXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCwxMCBAQCBwdWJsaWM6
CiAgICAgICAgIEtleVVwLAogICAgICAgICBDaGFyLAogCisgICAgICAgIC8vIFdlYkdlc3R1cmVF
dmVudAorICAgICAgICBHZXN0dXJlU2Nyb2xsQmVnaW4sCisgICAgICAgIEdlc3R1cmVTY3JvbGxF
bmQsCisKICAgICAgICAgLy8gV2ViVG91Y2hFdmVudAogICAgICAgICBUb3VjaFN0YXJ0LAogICAg
ICAgICBUb3VjaE1vdmUsCkBAIC0yNzksNiArMjgzLDE1IEBAIHB1YmxpYzoKIAogY2xhc3MgV2Vi
TW91c2VXaGVlbEV2ZW50IDogcHVibGljIFdlYk1vdXNlRXZlbnQgewogcHVibGljOgorICAgIGVu
dW0gUGhhc2UgeworICAgICAgICBQaGFzZU5vbmUgICAgICAgID0gMCwKKyAgICAgICAgUGhhc2VC
ZWdhbiAgICAgICA9IDEgPDwgMSwKKyAgICAgICAgUGhhc2VTdGF0aW9uYXJ5ICA9IDEgPDwgMiwK
KyAgICAgICAgUGhhc2VDaGFuZ2VkICAgICA9IDEgPDwgMywKKyAgICAgICAgUGhhc2VFbmRlZCAg
ICAgICA9IDEgPDwgNCwKKyAgICAgICAgUGhhc2VDYW5jZWxsZWQgICA9IDEgPDwgNSwKKyAgICB9
OworCiAgICAgZmxvYXQgZGVsdGFYOwogICAgIGZsb2F0IGRlbHRhWTsKICAgICBmbG9hdCB3aGVl
bFRpY2tzWDsKQEAgLTI5MCw2ICszMDMsMTAgQEAgcHVibGljOgogICAgIC8vIHRyYW5zZmVyaW5n
IGl0IG92ZXIgdGhlIHdpcmUuCiAgICAgaW50IHNjcm9sbEJ5UGFnZTsKIAorICAgIGJvb2wgaGFz
UHJlY2lzZVNjcm9sbGluZ0RlbHRhczsKKyAgICBQaGFzZSBwaGFzZTsKKyAgICBQaGFzZSBtb21l
bnR1bVBoYXNlOworCiAgICAgV2ViTW91c2VXaGVlbEV2ZW50KHVuc2lnbmVkIHNpemVQYXJhbSA9
IHNpemVvZihXZWJNb3VzZVdoZWVsRXZlbnQpKQogICAgICAgICA6IFdlYk1vdXNlRXZlbnQoc2l6
ZVBhcmFtKQogICAgICAgICAsIGRlbHRhWCgwLjBmKQpAQCAtMjk3LDYgKzMxNCwyNyBAQCBwdWJs
aWM6CiAgICAgICAgICwgd2hlZWxUaWNrc1goMC4wZikKICAgICAgICAgLCB3aGVlbFRpY2tzWSgw
LjBmKQogICAgICAgICAsIHNjcm9sbEJ5UGFnZShmYWxzZSkKKyAgICAgICAgLCBoYXNQcmVjaXNl
U2Nyb2xsaW5nRGVsdGFzKGZhbHNlKQorICAgICAgICAsIHBoYXNlKFBoYXNlTm9uZSkKKyAgICAg
ICAgLCBtb21lbnR1bVBoYXNlKFBoYXNlTm9uZSkKKyAgICB7CisgICAgfQorfTsKKworLy8gV2Vi
R2VzdHVyZUV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIFdlYkdlc3R1cmVFdmVudCA6IHB1YmxpYyBXZWJJ
bnB1dEV2ZW50IHsKK3B1YmxpYzoKKyAgICBpbnQgeDsKKyAgICBpbnQgeTsKKyAgICBpbnQgZ2xv
YmFsWDsKKyAgICBpbnQgZ2xvYmFsWTsKKworICAgIFdlYkdlc3R1cmVFdmVudCh1bnNpZ25lZCBz
aXplUGFyYW0gPSBzaXplb2YoV2ViR2VzdHVyZUV2ZW50KSkKKyAgICAgICAgOiB4KDApCisgICAg
ICAgICwgeSgwKQorICAgICAgICAsIGdsb2JhbFgoMCkKKyAgICAgICAgLCBnbG9iYWxZKDApCiAg
ICAgewogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9tYWMv
V2ViSW5wdXRFdmVudEZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkuaAkocmV2aXNpb24gOTI2MjApCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9tYWMvV2ViSW5wdXRFdmVudEZhY3Rvcnku
aAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTW91
c2VXaGVlbEV2ZW50OworY2xhc3MgV2ViR2VzdHVyZUV2ZW50OwogCiBjbGFzcyBXZWJJbnB1dEV2
ZW50RmFjdG9yeSB7CiBwdWJsaWM6CkBAIC01Myw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICBXRUJL
SVRfRVhQT1JUIHN0YXRpYyBXZWJLZXlib2FyZEV2ZW50IGtleWJvYXJkRXZlbnQod2NoYXJfdCBj
aGFyYWN0ZXIsIGludCBtb2RpZmllcnMsIGRvdWJsZSB0aW1lU3RhbXBTZWNvbmRzKTsKICAgICBX
RUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJNb3VzZUV2ZW50IG1vdXNlRXZlbnQoTlNFdmVudCosIE5T
VmlldyopOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYk1vdXNlV2hlZWxFdmVudCBtb3Vz
ZVdoZWVsRXZlbnQoTlNFdmVudCosIE5TVmlldyopOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGlj
IFdlYkdlc3R1cmVFdmVudCBnZXN0dXJlRXZlbnQoTlNFdmVudCAqLCBOU1ZpZXcgKik7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDkyNjIw
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsOCArMTAwLDM5IEBAIFBsYXRmb3JtV2hlZWxFdmVu
dEJ1aWxkZXI6OlBsYXRmb3JtV2hlZWwKICAgICBtX2N0cmxLZXkgPSAoZS5tb2RpZmllcnMgJiBX
ZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5KTsKICAgICBtX2FsdEtleSA9IChlLm1vZGlmaWVycyAm
IFdlYklucHV0RXZlbnQ6OkFsdEtleSk7CiAgICAgbV9tZXRhS2V5ID0gKGUubW9kaWZpZXJzICYg
V2ViSW5wdXRFdmVudDo6TWV0YUtleSk7CisjaWYgT1MoREFSV0lOKQorICAgIG1faGFzUHJlY2lz
ZVNjcm9sbGluZ0RlbHRhcyA9IGUuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhczsKKyAgICBtX3Bo
YXNlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+KGUucGhh
c2UpOworICAgIG1fbW9tZW50dW1QaGFzZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlPihlLm1vbWVudHVtUGhhc2UpOworICAgIG1fdGltZXN0YW1wID0gZS50
aW1lU3RhbXBTZWNvbmRzOworI2VuZGlmCiB9CiAKKy8vIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVp
bGRlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVy
OjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkdl
c3R1cmVFdmVudCYgZSkKK3sKKyAgICBzd2l0Y2ggKGUudHlwZSkgeworICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgorICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgbV9wb3NpdGlvbiA9
IHdpZGdldC0+Y29udmVydEZyb21Db250YWluaW5nV2luZG93KEludFBvaW50KGUueCwgZS55KSk7
CisgICAgbV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50KGUuZ2xvYmFsWCwgZS5nbG9iYWxZKTsK
KyAgICBtX3RpbWVzdGFtcCA9IGUudGltZVN0YW1wU2Vjb25kczsKKyAgICBtX3NoaWZ0S2V5ID0g
KGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6U2hpZnRLZXkpOworICAgIG1fY3RybEtleSA9
IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xLZXkpOworICAgIG1fYWx0S2V5
ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6QWx0S2V5KTsKKyAgICBtX21ldGFLZXkg
PSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpNZXRhS2V5KTsKK30KKyNlbmRpZgorCiAv
LyBNYWtlUGxhdGZvcm1LZXlib2FyZEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHN0YXRpYyBpbmxpbmUgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpUeXBlIHRvUGxhdGZvcm1LZXlib2FyZEV2ZW50VHlwZShXZWJJbnB1dEV2ZW50OjpUeXBl
IHR5cGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29u
dmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklu
cHV0RXZlbnRDb252ZXJzaW9uLmgJKHJldmlzaW9uIDkyNjIwKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTIgKzMxLDEyIEBACiAjaWZuZGVmIFdlYklucHV0RXZlbnRDb252ZXJzaW9uX2gKICNkZWZp
bmUgV2ViSW5wdXRFdmVudENvbnZlcnNpb25faAogCi0jaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5o
IgotCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQu
aCIKKyNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEtleWJvYXJkRXZlbnQ7CkBAIC01MSw2ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKIGNsYXNzIFdl
YktleWJvYXJkRXZlbnQ7CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiAKIC8vIFRoZXNlIGNsYXNz
ZXMgYXJlIHVzZWQgdG8gY29udmVydCBmcm9tIFdlYklucHV0RXZlbnQgc3ViY2xhc3NlcyB0bwog
Ly8gY29ycmVzcG9uZGluZyBXZWJDb3JlIGV2ZW50cy4KQEAgLTY1LDYgKzY2LDEzIEBAIHB1Ymxp
YzoKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKFdlYkNvcmU6OldpZGdldCosIGNvbnN0
IFdlYk1vdXNlV2hlZWxFdmVudCYpOwogfTsKIAorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykK
K2NsYXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlciA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0
Zm9ybUdlc3R1cmVFdmVudCB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWls
ZGVyKFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOworfTsKKyNlbmRp
ZgorCiBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyIDogcHVibGljIFdlYkNvcmU6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCB7CiBwdWJsaWM6CiAgICAgUGxhdGZvcm1LZXlib2FyZEV2
ZW50QnVpbGRlcihjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcAkocmV2aXNpb24gOTI2MjAp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMywxMSBAQCB2b2lkIFdlYlBvcHVwTWVudUltcGw6Ok1v
dXNlV2hlZWwoY29uc3QgCiAgICAgbV93aWRnZXQtPmhhbmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1X
aGVlbEV2ZW50QnVpbGRlcihtX3dpZGdldCwgZXZlbnQpKTsKIH0KIAorYm9vbCBXZWJQb3B1cE1l
bnVJbXBsOjpHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKK3sKKyAg
ICByZXR1cm4gbV93aWRnZXQtPmhhbmRsZUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVu
dEJ1aWxkZXIobV93aWRnZXQsIGV2ZW50KSk7Cit9CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogYm9vbCBXZWJQb3B1cE1lbnVJbXBsOjpUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQm
IGV2ZW50KQogewpAQCAtMjY2LDYgKzI3MSwxMCBAQCBib29sIFdlYlBvcHVwTWVudUltcGw6Omhh
bmRsZUlucHV0RXZlbnQoCiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaENhbmNlbDoKICAg
ICAgICAgcmV0dXJuIFRvdWNoRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYlRvdWNoRXZlbnQq
PigmaW5wdXRFdmVudCkpOwogCisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xs
QmVnaW46CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgorICAgICAg
ICByZXR1cm4gR2VzdHVyZUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQq
PigmaW5wdXRFdmVudCkpOworCiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpVbmRlZmluZWQ6CiAg
ICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZUVudGVyOgogICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6Q29udGV4dE1lbnU6CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1
cE1lbnVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UG9wdXBNZW51SW1wbC5oCShyZXZpc2lvbiA5MjYyMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBA
QCBjbGFzcyBXaWRnZXQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViR2VzdHVy
ZUV2ZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBj
bGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CkBAIC0xMDQsNiArMTA1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgTW91c2VVcChjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAgdm9pZCBNb3VzZURvdWJs
ZUNsaWNrKGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lkIE1vdXNlV2hlZWwoY29uc3Qg
V2ViTW91c2VXaGVlbEV2ZW50Jik7CisgICAgYm9vbCBHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2Vz
dHVyZUV2ZW50Jik7CiAgICAgYm9vbCBUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsK
ICAgICBib29sIEtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKIApJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNpb24gOTI2MjAp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYwMyw2ICs2MDMsMTQgQEAgYm9vbCBXZWJWaWV3SW1wbDo6bW91c2VXaGVlbChj
b25zdCBXZWJNbwogICAgIHJldHVybiBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFu
ZGxlcigpLT5oYW5kbGVXaGVlbEV2ZW50KHBsYXRmb3JtRXZlbnQpOwogfQogCisjaWYgRU5BQkxF
KEdFU1RVUkVfRVZFTlRTKQorYm9vbCBXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KGNvbnN0IFdl
Ykdlc3R1cmVFdmVudCYgZXZlbnQpCit7CisgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVy
IHBsYXRmb3JtRXZlbnQobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpOworICAg
IHJldHVybiBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVH
ZXN0dXJlRXZlbnQocGxhdGZvcm1FdmVudCk7Cit9CisjZW5kaWYKKwogYm9vbCBXZWJWaWV3SW1w
bDo6a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgQVNTRVJU
KChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6OlJhd0tleURvd24pCkBAIC0xMjgwLDYgKzEy
ODgsMTMgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdAogICAgICAg
ICBoYW5kbGVkID0gY2hhckV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJLZXlib2FyZEV2ZW50
Kj4oJmlucHV0RXZlbnQpKTsKICAgICAgICAgYnJlYWs7CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9F
VkVOVFMpCisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46CisgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgorICAgICAgICBoYW5kbGVkID0g
Z2VzdHVyZUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmaW5wdXRF
dmVudCkpOworICAgICAgICBicmVhazsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoU3RhcnQ6CiAgICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpUb3VjaE1vdmU6CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgJKHJldmlzaW9uIDkyNjIwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsNyBAQCBjbGFzcyBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKIGNsYXNz
IFdlYkRldlRvb2xzQWdlbnRQcml2YXRlOwogY2xhc3MgV2ViRnJhbWVJbXBsOworY2xhc3MgV2Vi
R2VzdHVyZUV2ZW50OwogY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50Owog
Y2xhc3MgV2ViTW91c2VFdmVudDsKQEAgLTI3Nyw2ICsyNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBtb3VzZUNvbnRleHRNZW51KGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lkIG1vdXNl
RG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIGJvb2wgbW91c2VXaGVlbChj
b25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKKyAgICBib29sIGdlc3R1cmVFdmVudChjb25zdCBX
ZWJHZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmKTsKICAgICBib29sIGNoYXJFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAg
Ym9vbCB0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkubW0J
KHJldmlzaW9uIDkyNjIwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbWFjL1dlYklu
cHV0RXZlbnRGYWN0b3J5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCwzNiBAQAogI2lu
Y2x1ZGUgIldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogCisj
aWYgIWRlZmluZWQoTUFDX09TX1hfVkVSU0lPTl8xMF83KSB8fCAoTUFDX09TX1hfVkVSU0lPTl9N
QVhfQUxMT1dFRCA8IE1BQ19PU19YX1ZFUlNJT05fMTBfNykKKworZW51bSB7CisgICAgTlNFdmVu
dFBoYXNlTm9uZSAgICAgICAgPSAwLAorICAgIE5TRXZlbnRQaGFzZUJlZ2FuICAgICAgID0gMHgx
IDw8IDAsCisgICAgTlNFdmVudFBoYXNlU3RhdGlvbmFyeSAgPSAweDEgPDwgMSwKKyAgICBOU0V2
ZW50UGhhc2VDaGFuZ2VkICAgICA9IDB4MSA8PCAyLAorICAgIE5TRXZlbnRQaGFzZUVuZGVkICAg
ICAgID0gMHgxIDw8IDMsCisgICAgTlNFdmVudFBoYXNlQ2FuY2VsbGVkICAgPSAweDEgPDwgNAor
fTsKK3R5cGVkZWYgTlNVSW50ZWdlciBOU0V2ZW50UGhhc2U7CisKK0BpbnRlcmZhY2UgTlNFdmVu
dCAoTGlvblNES0RlY2xhcmF0aW9ucykKKy0gKE5TRXZlbnRQaGFzZSlwaGFzZTsKKy0gKE5TRXZl
bnRQaGFzZSltb21lbnR1bVBoYXNlOworQGVuZAorCisjZW5kaWYgIC8vIE1BQ19PU19YX1ZFUlNJ
T05fMTBfNworCisjaWYgIWRlZmluZWQoTUFDX09TX1hfVkVSU0lPTl8xMF82KQorCisvLyBUaGVz
ZSBhcmUgbm90IGRlZmluZWQgaW4gdGhlIDEwLjUgU0RLIGJ1dCBhcmUgZGVmaW5lZCBpbiBsYXRl
ciBTREtzIGluc2lkZQorLy8gYSBNQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IE1BQ19P
U19YX1ZFUlNJT05fMTBfNSAjaWZkZWYuCitlbnVtIHsKKyAgICBOU0V2ZW50VHlwZUJlZ2luR2Vz
dHVyZSAgICAgPSAxOSwKKyAgICBOU0V2ZW50VHlwZUVuZEdlc3R1cmUgICAgICAgPSAyMAorfTsK
KworI2VuZGlmICAvLyBNQUNfT1NfWF9WRVJTSU9OXzEwXzYKKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIC8vIFdlYktleWJvYXJkRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE0OSw2ICsxNzksMTkgQEAgc3RhdGljIGlu
dCB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KE5TRQogICAgIHJldHVybiBXZWJDb3JlOjp3aW5k
b3dzS2V5Q29kZUZvcktleUNvZGUoW2V2ZW50IGtleUNvZGVdKTsKIH0KIAorc3RhdGljIFdlYklu
cHV0RXZlbnQ6OlR5cGUgZ2VzdHVyZUV2ZW50VHlwZUZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQor
eworICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CisgICAgY2FzZSBOU0V2ZW50VHlwZUJlZ2lu
R2VzdHVyZToKKyAgICAgICAgcmV0dXJuIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdp
bjsKKyAgICBjYXNlIE5TRXZlbnRUeXBlRW5kR2VzdHVyZToKKyAgICAgICAgcmV0dXJuIFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Ny
b2xsRW5kOworICAgIH0KK30KKwogc3RhdGljIGlubGluZSBOU1N0cmluZyogdGV4dEZyb21FdmVu
dChOU0V2ZW50KiBldmVudCkKIHsKICAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFu
Z2VkKQpAQCAtNzA3LDYgKzc1MCw0MCBAQCBXZWJNb3VzZUV2ZW50IFdlYklucHV0RXZlbnRGYWN0
b3J5Ojptb3VzCiAKIC8vIFdlYk1vdXNlV2hlZWxFdmVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorc3RhdGljIFdlYk1vdXNlV2hl
ZWxFdmVudDo6UGhhc2UgcGhhc2VGb3JOU0V2ZW50UGhhc2UoTlNFdmVudFBoYXNlIGV2ZW50UGhh
c2UpCit7CisgICAgdWludDMyX3QgcGhhc2UgPSBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlTm9u
ZTsgCisgICAgaWYgKGV2ZW50UGhhc2UgJiBOU0V2ZW50UGhhc2VCZWdhbikKKyAgICAgICAgcGhh
c2UgfD0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZUJlZ2FuOworICAgIGlmIChldmVudFBoYXNl
ICYgTlNFdmVudFBoYXNlU3RhdGlvbmFyeSkKKyAgICAgICAgcGhhc2UgfD0gV2ViTW91c2VXaGVl
bEV2ZW50OjpQaGFzZVN0YXRpb25hcnk7CisgICAgaWYgKGV2ZW50UGhhc2UgJiBOU0V2ZW50UGhh
c2VDaGFuZ2VkKQorICAgICAgICBwaGFzZSB8PSBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlQ2hh
bmdlZDsKKyAgICBpZiAoZXZlbnRQaGFzZSAmIE5TRXZlbnRQaGFzZUVuZGVkKQorICAgICAgICBw
aGFzZSB8PSBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlRW5kZWQ7CisgICAgaWYgKGV2ZW50UGhh
c2UgJiBOU0V2ZW50UGhhc2VDYW5jZWxsZWQpCisgICAgICAgIHBoYXNlIHw9IFdlYk1vdXNlV2hl
ZWxFdmVudDo6UGhhc2VDYW5jZWxsZWQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYk1vdXNl
V2hlZWxFdmVudDo6UGhhc2U+KHBoYXNlKTsKK30KKworc3RhdGljIFdlYk1vdXNlV2hlZWxFdmVu
dDo6UGhhc2UgcGhhc2VGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBpZiAoIVtldmVu
dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBoYXNlKV0pCisgICAgICAgIHJldHVybiBX
ZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlTm9uZTsKKworICAgIE5TRXZlbnRQaGFzZSBldmVudFBo
YXNlID0gW2V2ZW50IHBoYXNlXTsKKyAgICByZXR1cm4gcGhhc2VGb3JOU0V2ZW50UGhhc2UoZXZl
bnRQaGFzZSk7Cit9CisKK3N0YXRpYyBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlIG1vbWVudHVt
UGhhc2VGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBpZiAoIVtldmVudCByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKG1vbWVudHVtUGhhc2UpXSkKKyAgICAgICAgcmV0dXJuIFdl
Yk1vdXNlV2hlZWxFdmVudDo6UGhhc2VOb25lOworCisgICAgTlNFdmVudFBoYXNlIGV2ZW50TW9t
ZW50dW1QaGFzZSA9IFtldmVudCBtb21lbnR1bVBoYXNlXTsKKyAgICByZXR1cm4gcGhhc2VGb3JO
U0V2ZW50UGhhc2UoZXZlbnRNb21lbnR1bVBoYXNlKTsKK30KKwogV2ViTW91c2VXaGVlbEV2ZW50
IFdlYklucHV0RXZlbnRGYWN0b3J5Ojptb3VzZVdoZWVsRXZlbnQoTlNFdmVudCogZXZlbnQsIE5T
VmlldyogdmlldykKIHsKICAgICBXZWJNb3VzZVdoZWVsRXZlbnQgcmVzdWx0OwpAQCAtODM4LDYg
KzkxNSw3IEBAIFdlYk1vdXNlV2hlZWxFdmVudCBXZWJJbnB1dEV2ZW50RmFjdG9yeToKICAgICAg
ICAgcmVzdWx0LmRlbHRhWSA9IENHRXZlbnRHZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LCBr
Q0dTY3JvbGxXaGVlbEV2ZW50UG9pbnREZWx0YUF4aXMxKTsKICAgICAgICAgcmVzdWx0LndoZWVs
VGlja3NYID0gcmVzdWx0LmRlbHRhWCAvIHNjcm9sbGJhclBpeGVsc1BlckNvY29hVGljazsKICAg
ICAgICAgcmVzdWx0LndoZWVsVGlja3NZID0gcmVzdWx0LmRlbHRhWSAvIHNjcm9sbGJhclBpeGVs
c1BlckNvY29hVGljazsKKyAgICAgICAgcmVzdWx0Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMg
PSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3VsdC5kZWx0YVggPSBbZXZlbnQgZGVs
dGFYXSAqIHNjcm9sbGJhclBpeGVsc1BlckNvY29hVGljazsKICAgICAgICAgcmVzdWx0LmRlbHRh
WSA9IFtldmVudCBkZWx0YVldICogc2Nyb2xsYmFyUGl4ZWxzUGVyQ29jb2FUaWNrOwpAQCAtODQ3
LDYgKzkyNSwyOSBAQCBXZWJNb3VzZVdoZWVsRXZlbnQgV2ViSW5wdXRFdmVudEZhY3Rvcnk6CiAK
ICAgICByZXN1bHQudGltZVN0YW1wU2Vjb25kcyA9IFtldmVudCB0aW1lc3RhbXBdOwogCisgICAg
cmVzdWx0LnBoYXNlICAgICAgICAgICAgICA9IHBoYXNlRm9yRXZlbnQoZXZlbnQpOworICAgIHJl
c3VsdC5tb21lbnR1bVBoYXNlICAgICAgPSBtb21lbnR1bVBoYXNlRm9yRXZlbnQoZXZlbnQpOwor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworV2ViR2VzdHVyZUV2ZW50IFdlYklucHV0RXZlbnRG
YWN0b3J5OjpnZXN0dXJlRXZlbnQoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAqdmlldykKK3sKKyAg
ICBXZWJHZXN0dXJlRXZlbnQgcmVzdWx0OworCisgICAgLy8gVXNlIGEgdGVtcG9yYXJ5IFdlYk1v
dXNlRXZlbnQgdG8gZ2V0IHRoZSBsb2NhdGlvbi4KKyAgICBXZWJNb3VzZUV2ZW50IHRlbXA7CisK
KyAgICBzZXRXZWJFdmVudExvY2F0aW9uRnJvbUV2ZW50SW5WaWV3KCZ0ZW1wLCBldmVudCwgdmll
dyk7CisgICAgcmVzdWx0LnggPSB0ZW1wLng7CisgICAgcmVzdWx0LnkgPSB0ZW1wLnk7CisgICAg
cmVzdWx0Lmdsb2JhbFggPSB0ZW1wLmdsb2JhbFg7CisgICAgcmVzdWx0Lmdsb2JhbFkgPSB0ZW1w
Lmdsb2JhbFk7CisKKyAgICByZXN1bHQudHlwZSA9IGdlc3R1cmVFdmVudFR5cGVGb3JFdmVudChl
dmVudCk7CisgICAgcmVzdWx0Lm1vZGlmaWVycyA9IG1vZGlmaWVyc0Zyb21FdmVudChldmVudCk7
CisgICAgcmVzdWx0LnRpbWVTdGFtcFNlY29uZHMgPSBbZXZlbnQgdGltZXN0YW1wXTsKKwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103290</attachid>
            <date>2011-08-08 14:12:00 -0700</date>
            <delta_ts>2011-08-09 06:34:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65707-20110808171159.patch</filename>
            <type>text/plain</type>
            <size>20183</size>
            <attacher>asvitkine</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNjIwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBT
dml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBF
bmFibGUgcnViYmVyIGJhbmRpbmcgd2hlbiBzY3JvbGxpbmcuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgaXMg
anVzdCBzeW5jaW5nIGNoYW5nZXMgdG8gY2hyb21pdW0gcGxhdGZvcm0uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
V2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKwogMjAxMS0wOC0w
OCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgcmVk
dW5kYW50IGlubGluZSBzdHlsZXMgZnJvbSB0aGUgcGFzdGVkIGNvbnRlbnRzIG1vcmUgYWdncmVz
c2l2ZWx5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZl
bnQuaAkocmV2aXNpb24gOTI2MjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50CiAgICAgfTsKIAotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkg
JiYgT1MoREFSV0lOKSkKICAgICBlbnVtIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHsKICAgICAg
ICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lICAgICAgICA9IDAsCiAgICAgICAgIFBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlQmVnYW4gICAgICAgPSAxIDw8IDEsCkBAIC05Nyw3ICs5Nyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9jdHJsS2V5KGZhbHNlKQogICAg
ICAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKICAgICAgICAgICAgICwgbV9tZXRhS2V5KGZhbHNl
KQotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJP
TUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgICAgICwgbV9oYXNQcmVjaXNlU2Nyb2xsaW5n
RGVsdGFzKGZhbHNlKQogICAgICAgICAgICAgLCBtX3BoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlTm9uZSkKICAgICAgICAgICAgICwgbV9tb21lbnR1bVBoYXNlKFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlTm9uZSkKQEAgLTExOSw3ICsxMTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgICAgICAsIG1fY3RybEtleShjdHJsS2V5KQogICAgICAgICAgICAgLCBtX2FsdEtleShhbHRL
ZXkpCiAgICAgICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQotI2lmIFBMQVRGT1JNKE1BQykK
KyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkK
ICAgICAgICAgICAgICwgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKGZhbHNlKQogICAgICAg
ICAgICAgLCBtX3BoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSkKICAgICAgICAgICAg
ICwgbV9tb21lbnR1bVBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSkKQEAgLTE3NCw3
ICsxNzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgZGVmaW5lZChfX09CSkNfXykKICAg
ICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KE5TRXZlbnQgKiwgTlNWaWV3ICp3aW5kb3dWaWV3KTsK
ICNlbmRpZgorI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlV
TSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2Uo
KSBjb25zdCB7IHJldHVybiBtX3BoYXNlOyB9CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlIG1vbWVudHVtUGhhc2UoKSBjb25zdCB7IHJldHVybiBtX21vbWVudHVtUGhhc2U7IH0KICAg
ICAgICAgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOyB9CkBAIC0yMTMsNyArMjE1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIG1fY3RybEtleTsKICAgICAgICAgYm9vbCBtX2FsdEtl
eTsKICAgICAgICAgYm9vbCBtX21ldGFLZXk7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRG
T1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogICAgICAgICBi
b29sIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhczsKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2UgbV9waGFzZTsKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbV9tb21l
bnR1bVBoYXNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
QW5pbWF0b3JDaHJvbWl1bU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tCShyZXZpc2lvbiA5MjYy
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hy
b21pdW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTg1Miw3ICs4NTIsNyBAQCB2b2lkIFNjcm9s
bEFuaW1hdG9yQ2hyb21pdW1NYWM6OmhhbmRsZUdlCiB7CiAgICAgaWYgKGdlc3R1cmVFdmVudC50
eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZSkKICAgICAgICAg
YmVnaW5TY3JvbGxHZXN0dXJlKCk7Ci0gICAgZWxzZQorICAgIGVsc2UgaWYgKGdlc3R1cmVFdmVu
dC50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGUpCiAgICAgICAg
IGVuZFNjcm9sbEdlc3R1cmUoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDkyNjIwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAxMS0wOC0wNCAgQWxleGVpIFN2aXRraW5l
ICA8YXN2aXRraW5lQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEVuYWJsZSBy
dWJiZXIgYmFuZGluZyB3aGVuIHNjcm9sbGluZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAgICAgICogcHVibGlj
L1dlYklucHV0RXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViTW91c2VXaGVlbEV2ZW50OjpX
ZWJNb3VzZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQ6Oldl
Ykdlc3R1cmVFdmVudCk6CisgICAgICAgICogcHVibGljL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9y
eS5oOgorICAgICAgICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3JtV2hlZWxFdmVudEJ1
aWxkZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBs
YXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgICogc3JjL1dlYklucHV0RXZlbnRD
b252ZXJzaW9uLmg6CisgICAgICAgICogc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVJbXBsOjpHZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb3B1cE1lbnVJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KToKKyAgICAgICAgKiBzcmMv
V2ViUG9wdXBNZW51SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJ
bXBsLmg6CisgICAgICAgICogc3JjL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5tbToKKyAgICAg
ICAgKFdlYktpdDo6Z2VzdHVyZUV2ZW50VHlwZUZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6
cGhhc2VGb3JOU0V2ZW50UGhhc2UpOgorICAgICAgICAoV2ViS2l0OjpwaGFzZUZvckV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6bW9tZW50dW1QaGFzZUZvckV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5wdXRFdmVudEZhY3Rvcnk6Om1vdXNlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklucHV0RXZlbnRGYWN0b3J5OjpnZXN0dXJlRXZlbnQpOgorCiAyMDExLTA4LTA4ICBE
bWl0cnkgTG9tb3YgIDxkc2xvbW92QGdvb2dsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1Nzc4CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL2ZlYXR1cmVzLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9mZWF0dXJlcy5neXBpCShyZXZpc2lvbiA5MjYyMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vZmVhdHVyZXMuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1Myw3IEBACiAgICAg
ICB9XSwKICAgICAgIFsnT1M9PSJtYWMiJywgewogICAgICAgICAnZmVhdHVyZV9kZWZpbmVzJzog
WworICAgICAgICAgICdFTkFCTEVfUlVCQkVSX0JBTkRJTkc9MScsCiAgICAgICAgICAgJ1dURl9V
U0VfU0tJQV9PTl9NQUNfQ0hST01JVU09PCh1c2Vfc2tpYSknLAogICAgICAgICBdLAogICAgICAg
fV0sCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVu
dC5oCShyZXZpc2lvbiA5MjYyMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklucHV0RXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCwxMCBAQCBwdWJsaWM6
CiAgICAgICAgIEtleVVwLAogICAgICAgICBDaGFyLAogCisgICAgICAgIC8vIFdlYkdlc3R1cmVF
dmVudAorICAgICAgICBHZXN0dXJlU2Nyb2xsQmVnaW4sCisgICAgICAgIEdlc3R1cmVTY3JvbGxF
bmQsCisKICAgICAgICAgLy8gV2ViVG91Y2hFdmVudAogICAgICAgICBUb3VjaFN0YXJ0LAogICAg
ICAgICBUb3VjaE1vdmUsCkBAIC0yNzksNiArMjgzLDE1IEBAIHB1YmxpYzoKIAogY2xhc3MgV2Vi
TW91c2VXaGVlbEV2ZW50IDogcHVibGljIFdlYk1vdXNlRXZlbnQgewogcHVibGljOgorICAgIGVu
dW0gUGhhc2UgeworICAgICAgICBQaGFzZU5vbmUgICAgICAgID0gMCwKKyAgICAgICAgUGhhc2VC
ZWdhbiAgICAgICA9IDEgPDwgMSwKKyAgICAgICAgUGhhc2VTdGF0aW9uYXJ5ICA9IDEgPDwgMiwK
KyAgICAgICAgUGhhc2VDaGFuZ2VkICAgICA9IDEgPDwgMywKKyAgICAgICAgUGhhc2VFbmRlZCAg
ICAgICA9IDEgPDwgNCwKKyAgICAgICAgUGhhc2VDYW5jZWxsZWQgICA9IDEgPDwgNSwKKyAgICB9
OworCiAgICAgZmxvYXQgZGVsdGFYOwogICAgIGZsb2F0IGRlbHRhWTsKICAgICBmbG9hdCB3aGVl
bFRpY2tzWDsKQEAgLTI5MCw2ICszMDMsMTAgQEAgcHVibGljOgogICAgIC8vIHRyYW5zZmVyaW5n
IGl0IG92ZXIgdGhlIHdpcmUuCiAgICAgaW50IHNjcm9sbEJ5UGFnZTsKIAorICAgIGJvb2wgaGFz
UHJlY2lzZVNjcm9sbGluZ0RlbHRhczsKKyAgICBQaGFzZSBwaGFzZTsKKyAgICBQaGFzZSBtb21l
bnR1bVBoYXNlOworCiAgICAgV2ViTW91c2VXaGVlbEV2ZW50KHVuc2lnbmVkIHNpemVQYXJhbSA9
IHNpemVvZihXZWJNb3VzZVdoZWVsRXZlbnQpKQogICAgICAgICA6IFdlYk1vdXNlRXZlbnQoc2l6
ZVBhcmFtKQogICAgICAgICAsIGRlbHRhWCgwLjBmKQpAQCAtMjk3LDYgKzMxNCwyNyBAQCBwdWJs
aWM6CiAgICAgICAgICwgd2hlZWxUaWNrc1goMC4wZikKICAgICAgICAgLCB3aGVlbFRpY2tzWSgw
LjBmKQogICAgICAgICAsIHNjcm9sbEJ5UGFnZShmYWxzZSkKKyAgICAgICAgLCBoYXNQcmVjaXNl
U2Nyb2xsaW5nRGVsdGFzKGZhbHNlKQorICAgICAgICAsIHBoYXNlKFBoYXNlTm9uZSkKKyAgICAg
ICAgLCBtb21lbnR1bVBoYXNlKFBoYXNlTm9uZSkKKyAgICB7CisgICAgfQorfTsKKworLy8gV2Vi
R2VzdHVyZUV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIFdlYkdlc3R1cmVFdmVudCA6IHB1YmxpYyBXZWJJ
bnB1dEV2ZW50IHsKK3B1YmxpYzoKKyAgICBpbnQgeDsKKyAgICBpbnQgeTsKKyAgICBpbnQgZ2xv
YmFsWDsKKyAgICBpbnQgZ2xvYmFsWTsKKworICAgIFdlYkdlc3R1cmVFdmVudCh1bnNpZ25lZCBz
aXplUGFyYW0gPSBzaXplb2YoV2ViR2VzdHVyZUV2ZW50KSkKKyAgICAgICAgOiB4KDApCisgICAg
ICAgICwgeSgwKQorICAgICAgICAsIGdsb2JhbFgoMCkKKyAgICAgICAgLCBnbG9iYWxZKDApCiAg
ICAgewogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9tYWMv
V2ViSW5wdXRFdmVudEZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkuaAkocmV2aXNpb24gOTI2MjApCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9tYWMvV2ViSW5wdXRFdmVudEZhY3Rvcnku
aAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTW91
c2VXaGVlbEV2ZW50OworY2xhc3MgV2ViR2VzdHVyZUV2ZW50OwogCiBjbGFzcyBXZWJJbnB1dEV2
ZW50RmFjdG9yeSB7CiBwdWJsaWM6CkBAIC01Myw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICBXRUJL
SVRfRVhQT1JUIHN0YXRpYyBXZWJLZXlib2FyZEV2ZW50IGtleWJvYXJkRXZlbnQod2NoYXJfdCBj
aGFyYWN0ZXIsIGludCBtb2RpZmllcnMsIGRvdWJsZSB0aW1lU3RhbXBTZWNvbmRzKTsKICAgICBX
RUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJNb3VzZUV2ZW50IG1vdXNlRXZlbnQoTlNFdmVudCosIE5T
VmlldyopOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYk1vdXNlV2hlZWxFdmVudCBtb3Vz
ZVdoZWVsRXZlbnQoTlNFdmVudCosIE5TVmlldyopOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGlj
IFdlYkdlc3R1cmVFdmVudCBnZXN0dXJlRXZlbnQoTlNFdmVudCAqLCBOU1ZpZXcgKik7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDkyNjIw
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsOCArMTAwLDM5IEBAIFBsYXRmb3JtV2hlZWxFdmVu
dEJ1aWxkZXI6OlBsYXRmb3JtV2hlZWwKICAgICBtX2N0cmxLZXkgPSAoZS5tb2RpZmllcnMgJiBX
ZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5KTsKICAgICBtX2FsdEtleSA9IChlLm1vZGlmaWVycyAm
IFdlYklucHV0RXZlbnQ6OkFsdEtleSk7CiAgICAgbV9tZXRhS2V5ID0gKGUubW9kaWZpZXJzICYg
V2ViSW5wdXRFdmVudDo6TWV0YUtleSk7CisjaWYgT1MoREFSV0lOKQorICAgIG1faGFzUHJlY2lz
ZVNjcm9sbGluZ0RlbHRhcyA9IGUuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhczsKKyAgICBtX3Bo
YXNlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+KGUucGhh
c2UpOworICAgIG1fbW9tZW50dW1QaGFzZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlPihlLm1vbWVudHVtUGhhc2UpOworICAgIG1fdGltZXN0YW1wID0gZS50
aW1lU3RhbXBTZWNvbmRzOworI2VuZGlmCiB9CiAKKy8vIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVp
bGRlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVy
OjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkdl
c3R1cmVFdmVudCYgZSkKK3sKKyAgICBzd2l0Y2ggKGUudHlwZSkgeworICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgorICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgbV9wb3NpdGlvbiA9
IHdpZGdldC0+Y29udmVydEZyb21Db250YWluaW5nV2luZG93KEludFBvaW50KGUueCwgZS55KSk7
CisgICAgbV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50KGUuZ2xvYmFsWCwgZS5nbG9iYWxZKTsK
KyAgICBtX3RpbWVzdGFtcCA9IGUudGltZVN0YW1wU2Vjb25kczsKKyAgICBtX3NoaWZ0S2V5ID0g
KGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6U2hpZnRLZXkpOworICAgIG1fY3RybEtleSA9
IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xLZXkpOworICAgIG1fYWx0S2V5
ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6QWx0S2V5KTsKKyAgICBtX21ldGFLZXkg
PSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpNZXRhS2V5KTsKK30KKyNlbmRpZgorCiAv
LyBNYWtlUGxhdGZvcm1LZXlib2FyZEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHN0YXRpYyBpbmxpbmUgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpUeXBlIHRvUGxhdGZvcm1LZXlib2FyZEV2ZW50VHlwZShXZWJJbnB1dEV2ZW50OjpUeXBl
IHR5cGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29u
dmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklu
cHV0RXZlbnRDb252ZXJzaW9uLmgJKHJldmlzaW9uIDkyNjIwKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTIgKzMxLDEyIEBACiAjaWZuZGVmIFdlYklucHV0RXZlbnRDb252ZXJzaW9uX2gKICNkZWZp
bmUgV2ViSW5wdXRFdmVudENvbnZlcnNpb25faAogCi0jaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5o
IgotCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQu
aCIKKyNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEtleWJvYXJkRXZlbnQ7CkBAIC01MSw2ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKIGNsYXNzIFdl
YktleWJvYXJkRXZlbnQ7CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiAKIC8vIFRoZXNlIGNsYXNz
ZXMgYXJlIHVzZWQgdG8gY29udmVydCBmcm9tIFdlYklucHV0RXZlbnQgc3ViY2xhc3NlcyB0bwog
Ly8gY29ycmVzcG9uZGluZyBXZWJDb3JlIGV2ZW50cy4KQEAgLTY1LDYgKzY2LDEzIEBAIHB1Ymxp
YzoKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKFdlYkNvcmU6OldpZGdldCosIGNvbnN0
IFdlYk1vdXNlV2hlZWxFdmVudCYpOwogfTsKIAorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykK
K2NsYXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlciA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0
Zm9ybUdlc3R1cmVFdmVudCB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWls
ZGVyKFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOworfTsKKyNlbmRp
ZgorCiBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyIDogcHVibGljIFdlYkNvcmU6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCB7CiBwdWJsaWM6CiAgICAgUGxhdGZvcm1LZXlib2FyZEV2
ZW50QnVpbGRlcihjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcAkocmV2aXNpb24gOTI2MjAp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMywxMSBAQCB2b2lkIFdlYlBvcHVwTWVudUltcGw6Ok1v
dXNlV2hlZWwoY29uc3QgCiAgICAgbV93aWRnZXQtPmhhbmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1X
aGVlbEV2ZW50QnVpbGRlcihtX3dpZGdldCwgZXZlbnQpKTsKIH0KIAorYm9vbCBXZWJQb3B1cE1l
bnVJbXBsOjpHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKK3sKKyAg
ICByZXR1cm4gbV93aWRnZXQtPmhhbmRsZUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVu
dEJ1aWxkZXIobV93aWRnZXQsIGV2ZW50KSk7Cit9CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogYm9vbCBXZWJQb3B1cE1lbnVJbXBsOjpUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQm
IGV2ZW50KQogewpAQCAtMjY2LDYgKzI3MSwxMCBAQCBib29sIFdlYlBvcHVwTWVudUltcGw6Omhh
bmRsZUlucHV0RXZlbnQoCiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaENhbmNlbDoKICAg
ICAgICAgcmV0dXJuIFRvdWNoRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYlRvdWNoRXZlbnQq
PigmaW5wdXRFdmVudCkpOwogCisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xs
QmVnaW46CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgorICAgICAg
ICByZXR1cm4gR2VzdHVyZUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQq
PigmaW5wdXRFdmVudCkpOworCiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpVbmRlZmluZWQ6CiAg
ICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZUVudGVyOgogICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6Q29udGV4dE1lbnU6CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1
cE1lbnVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UG9wdXBNZW51SW1wbC5oCShyZXZpc2lvbiA5MjYyMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBA
QCBjbGFzcyBXaWRnZXQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViR2VzdHVy
ZUV2ZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBj
bGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CkBAIC0xMDQsNiArMTA1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgTW91c2VVcChjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAgdm9pZCBNb3VzZURvdWJs
ZUNsaWNrKGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lkIE1vdXNlV2hlZWwoY29uc3Qg
V2ViTW91c2VXaGVlbEV2ZW50Jik7CisgICAgYm9vbCBHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2Vz
dHVyZUV2ZW50Jik7CiAgICAgYm9vbCBUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsK
ICAgICBib29sIEtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKIApJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNpb24gOTI2MjAp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYwMyw2ICs2MDMsMTQgQEAgYm9vbCBXZWJWaWV3SW1wbDo6bW91c2VXaGVlbChj
b25zdCBXZWJNbwogICAgIHJldHVybiBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFu
ZGxlcigpLT5oYW5kbGVXaGVlbEV2ZW50KHBsYXRmb3JtRXZlbnQpOwogfQogCisjaWYgRU5BQkxF
KEdFU1RVUkVfRVZFTlRTKQorYm9vbCBXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KGNvbnN0IFdl
Ykdlc3R1cmVFdmVudCYgZXZlbnQpCit7CisgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVy
IHBsYXRmb3JtRXZlbnQobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpOworICAg
IHJldHVybiBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVH
ZXN0dXJlRXZlbnQocGxhdGZvcm1FdmVudCk7Cit9CisjZW5kaWYKKwogYm9vbCBXZWJWaWV3SW1w
bDo6a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgQVNTRVJU
KChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6OlJhd0tleURvd24pCkBAIC0xMjgwLDYgKzEy
ODgsMTMgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdAogICAgICAg
ICBoYW5kbGVkID0gY2hhckV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJLZXlib2FyZEV2ZW50
Kj4oJmlucHV0RXZlbnQpKTsKICAgICAgICAgYnJlYWs7CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9F
VkVOVFMpCisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46CisgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgorICAgICAgICBoYW5kbGVkID0g
Z2VzdHVyZUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmaW5wdXRF
dmVudCkpOworICAgICAgICBicmVhazsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoU3RhcnQ6CiAgICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpUb3VjaE1vdmU6CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgJKHJldmlzaW9uIDkyNjIwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsNyBAQCBjbGFzcyBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKIGNsYXNz
IFdlYkRldlRvb2xzQWdlbnRQcml2YXRlOwogY2xhc3MgV2ViRnJhbWVJbXBsOworY2xhc3MgV2Vi
R2VzdHVyZUV2ZW50OwogY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50Owog
Y2xhc3MgV2ViTW91c2VFdmVudDsKQEAgLTI3Nyw2ICsyNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBtb3VzZUNvbnRleHRNZW51KGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lkIG1vdXNl
RG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIGJvb2wgbW91c2VXaGVlbChj
b25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKKyAgICBib29sIGdlc3R1cmVFdmVudChjb25zdCBX
ZWJHZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmKTsKICAgICBib29sIGNoYXJFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAg
Ym9vbCB0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkubW0J
KHJldmlzaW9uIDkyNjIwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbWFjL1dlYklu
cHV0RXZlbnRGYWN0b3J5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCwzNyBAQAogI2lu
Y2x1ZGUgIldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogCisj
aWYgVEFSR0VUSU5HX0xFT1BBUkQgfHwgVEFSR0VUSU5HX1NOT1dfTEVPUEFSRAorCisvLyBBZGRp
dGlvbmFsIExpb24gQVBJcy4KK2VudW0geworICAgIE5TRXZlbnRQaGFzZU5vbmUgICAgICAgID0g
MCwKKyAgICBOU0V2ZW50UGhhc2VCZWdhbiAgICAgICA9IDB4MSA8PCAwLAorICAgIE5TRXZlbnRQ
aGFzZVN0YXRpb25hcnkgID0gMHgxIDw8IDEsCisgICAgTlNFdmVudFBoYXNlQ2hhbmdlZCAgICAg
PSAweDEgPDwgMiwKKyAgICBOU0V2ZW50UGhhc2VFbmRlZCAgICAgICA9IDB4MSA8PCAzLAorICAg
IE5TRXZlbnRQaGFzZUNhbmNlbGxlZCAgID0gMHgxIDw8IDQKK307Cit0eXBlZGVmIE5TVUludGVn
ZXIgTlNFdmVudFBoYXNlOworCitAaW50ZXJmYWNlIE5TRXZlbnQgKExpb25TREtEZWNsYXJhdGlv
bnMpCistIChOU0V2ZW50UGhhc2UpcGhhc2U7CistIChOU0V2ZW50UGhhc2UpbW9tZW50dW1QaGFz
ZTsKK0BlbmQKKworI2VuZGlmICAvLyBUQVJHRVRJTkdfTEVPUEFSRCB8fCBUQVJHRVRJTkdfU05P
V19MRU9QQVJECisKKyNpZiBUQVJHRVRJTkdfTEVPUEFSRAorCisvLyBUaGVzZSBhcmUgbm90IGRl
ZmluZWQgaW4gdGhlIDEwLjUgU0RLIGJ1dCBhcmUgZGVmaW5lZCBpbiBsYXRlciBTREtzIGluc2lk
ZQorLy8gYSBNQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IE1BQ19PU19YX1ZFUlNJT05f
MTBfNSAjaWZkZWYuCitlbnVtIHsKKyAgICBOU0V2ZW50VHlwZUJlZ2luR2VzdHVyZSAgICAgPSAx
OSwKKyAgICBOU0V2ZW50VHlwZUVuZEdlc3R1cmUgICAgICAgPSAyMAorfTsKKworI2VuZGlmICAv
LyBUQVJHRVRJTkdfTEVPUEFSRAorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogLy8gV2ViS2V5Ym9h
cmRFdmVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpAQCAtMTQ5LDYgKzE4MCwxOSBAQCBzdGF0aWMgaW50IHdpbmRvd3NLZXlDb2Rl
Rm9yS2V5RXZlbnQoTlNFCiAgICAgcmV0dXJuIFdlYkNvcmU6OndpbmRvd3NLZXlDb2RlRm9yS2V5
Q29kZShbZXZlbnQga2V5Q29kZV0pOwogfQogCitzdGF0aWMgV2ViSW5wdXRFdmVudDo6VHlwZSBn
ZXN0dXJlRXZlbnRUeXBlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgc3dpdGNoIChb
ZXZlbnQgdHlwZV0pIHsKKyAgICBjYXNlIE5TRXZlbnRUeXBlQmVnaW5HZXN0dXJlOgorICAgICAg
ICByZXR1cm4gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOworICAgIGNhc2UgTlNF
dmVudFR5cGVFbmRHZXN0dXJlOgorICAgICAgICByZXR1cm4gV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZVNjcm9sbEVuZDsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7CisgICAgfQor
fQorCiBzdGF0aWMgaW5saW5lIE5TU3RyaW5nKiB0ZXh0RnJvbUV2ZW50KE5TRXZlbnQqIGV2ZW50
KQogewogICAgIGlmIChbZXZlbnQgdHlwZV0gPT0gTlNGbGFnc0NoYW5nZWQpCkBAIC03MDcsNiAr
NzUxLDQwIEBAIFdlYk1vdXNlRXZlbnQgV2ViSW5wdXRFdmVudEZhY3Rvcnk6Om1vdXMKIAogLy8g
V2ViTW91c2VXaGVlbEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCitzdGF0aWMgV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZSBw
aGFzZUZvck5TRXZlbnRQaGFzZShOU0V2ZW50UGhhc2UgZXZlbnRQaGFzZSkKK3sKKyAgICB1aW50
MzJfdCBwaGFzZSA9IFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2VOb25lOyAKKyAgICBpZiAoZXZl
bnRQaGFzZSAmIE5TRXZlbnRQaGFzZUJlZ2FuKQorICAgICAgICBwaGFzZSB8PSBXZWJNb3VzZVdo
ZWVsRXZlbnQ6OlBoYXNlQmVnYW47CisgICAgaWYgKGV2ZW50UGhhc2UgJiBOU0V2ZW50UGhhc2VT
dGF0aW9uYXJ5KQorICAgICAgICBwaGFzZSB8PSBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlU3Rh
dGlvbmFyeTsKKyAgICBpZiAoZXZlbnRQaGFzZSAmIE5TRXZlbnRQaGFzZUNoYW5nZWQpCisgICAg
ICAgIHBoYXNlIHw9IFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2VDaGFuZ2VkOworICAgIGlmIChl
dmVudFBoYXNlICYgTlNFdmVudFBoYXNlRW5kZWQpCisgICAgICAgIHBoYXNlIHw9IFdlYk1vdXNl
V2hlZWxFdmVudDo6UGhhc2VFbmRlZDsKKyAgICBpZiAoZXZlbnRQaGFzZSAmIE5TRXZlbnRQaGFz
ZUNhbmNlbGxlZCkKKyAgICAgICAgcGhhc2UgfD0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZUNh
bmNlbGxlZDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViTW91c2VXaGVlbEV2ZW50OjpQaGFz
ZT4ocGhhc2UpOworfQorCitzdGF0aWMgV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZSBwaGFzZUZv
ckV2ZW50KE5TRXZlbnQgKmV2ZW50KQoreworICAgIGlmICghW2V2ZW50IHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IocGhhc2UpXSkKKyAgICAgICAgcmV0dXJuIFdlYk1vdXNlV2hlZWxFdmVu
dDo6UGhhc2VOb25lOworCisgICAgTlNFdmVudFBoYXNlIGV2ZW50UGhhc2UgPSBbZXZlbnQgcGhh
c2VdOworICAgIHJldHVybiBwaGFzZUZvck5TRXZlbnRQaGFzZShldmVudFBoYXNlKTsKK30KKwor
c3RhdGljIFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2UgbW9tZW50dW1QaGFzZUZvckV2ZW50KE5T
RXZlbnQgKmV2ZW50KQoreworICAgIGlmICghW2V2ZW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IobW9tZW50dW1QaGFzZSldKQorICAgICAgICByZXR1cm4gV2ViTW91c2VXaGVlbEV2ZW50
OjpQaGFzZU5vbmU7CisKKyAgICBOU0V2ZW50UGhhc2UgZXZlbnRNb21lbnR1bVBoYXNlID0gW2V2
ZW50IG1vbWVudHVtUGhhc2VdOworICAgIHJldHVybiBwaGFzZUZvck5TRXZlbnRQaGFzZShldmVu
dE1vbWVudHVtUGhhc2UpOworfQorCiBXZWJNb3VzZVdoZWVsRXZlbnQgV2ViSW5wdXRFdmVudEZh
Y3Rvcnk6Om1vdXNlV2hlZWxFdmVudChOU0V2ZW50KiBldmVudCwgTlNWaWV3KiB2aWV3KQogewog
ICAgIFdlYk1vdXNlV2hlZWxFdmVudCByZXN1bHQ7CkBAIC04MzgsNiArOTE2LDcgQEAgV2ViTW91
c2VXaGVlbEV2ZW50IFdlYklucHV0RXZlbnRGYWN0b3J5OgogICAgICAgICByZXN1bHQuZGVsdGFZ
ID0gQ0dFdmVudEdldEludGVnZXJWYWx1ZUZpZWxkKGNnRXZlbnQsIGtDR1Njcm9sbFdoZWVsRXZl
bnRQb2ludERlbHRhQXhpczEpOwogICAgICAgICByZXN1bHQud2hlZWxUaWNrc1ggPSByZXN1bHQu
ZGVsdGFYIC8gc2Nyb2xsYmFyUGl4ZWxzUGVyQ29jb2FUaWNrOwogICAgICAgICByZXN1bHQud2hl
ZWxUaWNrc1kgPSByZXN1bHQuZGVsdGFZIC8gc2Nyb2xsYmFyUGl4ZWxzUGVyQ29jb2FUaWNrOwor
ICAgICAgICByZXN1bHQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IHRydWU7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgcmVzdWx0LmRlbHRhWCA9IFtldmVudCBkZWx0YVhdICogc2Nyb2xsYmFy
UGl4ZWxzUGVyQ29jb2FUaWNrOwogICAgICAgICByZXN1bHQuZGVsdGFZID0gW2V2ZW50IGRlbHRh
WV0gKiBzY3JvbGxiYXJQaXhlbHNQZXJDb2NvYVRpY2s7CkBAIC04NDcsNiArOTI2LDI5IEBAIFdl
Yk1vdXNlV2hlZWxFdmVudCBXZWJJbnB1dEV2ZW50RmFjdG9yeToKIAogICAgIHJlc3VsdC50aW1l
U3RhbXBTZWNvbmRzID0gW2V2ZW50IHRpbWVzdGFtcF07CiAKKyAgICByZXN1bHQucGhhc2UgICAg
ICAgICAgICAgID0gcGhhc2VGb3JFdmVudChldmVudCk7CisgICAgcmVzdWx0Lm1vbWVudHVtUGhh
c2UgICAgICA9IG1vbWVudHVtUGhhc2VGb3JFdmVudChldmVudCk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitXZWJHZXN0dXJlRXZlbnQgV2ViSW5wdXRFdmVudEZhY3Rvcnk6Omdlc3R1cmVF
dmVudChOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp2aWV3KQoreworICAgIFdlYkdlc3R1cmVFdmVu
dCByZXN1bHQ7CisKKyAgICAvLyBVc2UgYSB0ZW1wb3JhcnkgV2ViTW91c2VFdmVudCB0byBnZXQg
dGhlIGxvY2F0aW9uLgorICAgIFdlYk1vdXNlRXZlbnQgdGVtcDsKKworICAgIHNldFdlYkV2ZW50
TG9jYXRpb25Gcm9tRXZlbnRJblZpZXcoJnRlbXAsIGV2ZW50LCB2aWV3KTsKKyAgICByZXN1bHQu
eCA9IHRlbXAueDsKKyAgICByZXN1bHQueSA9IHRlbXAueTsKKyAgICByZXN1bHQuZ2xvYmFsWCA9
IHRlbXAuZ2xvYmFsWDsKKyAgICByZXN1bHQuZ2xvYmFsWSA9IHRlbXAuZ2xvYmFsWTsKKworICAg
IHJlc3VsdC50eXBlID0gZ2VzdHVyZUV2ZW50VHlwZUZvckV2ZW50KGV2ZW50KTsKKyAgICByZXN1
bHQubW9kaWZpZXJzID0gbW9kaWZpZXJzRnJvbUV2ZW50KGV2ZW50KTsKKyAgICByZXN1bHQudGlt
ZVN0YW1wU2Vjb25kcyA9IFtldmVudCB0aW1lc3RhbXBdOworCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103353</attachid>
            <date>2011-08-09 06:34:15 -0700</date>
            <delta_ts>2011-08-09 12:42:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65707-20110809093413.patch</filename>
            <type>text/plain</type>
            <size>20185</size>
            <attacher>asvitkine</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNjc3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDgtMDQgIEFsZXhlaSBT
dml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBF
bmFibGUgcnViYmVyIGJhbmRpbmcgd2hlbiBzY3JvbGxpbmcuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgaXMg
anVzdCBzeW5jaW5nIGNoYW5nZXMgdG8gY2hyb21pdW0gcGxhdGZvcm0uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
V2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKwogMjAxMS0wOC0w
OSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBnZXQgcmlkIG9mIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdG9y
QWdlbnRzKCkgbWFwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVs
RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdo
ZWVsRXZlbnQuaAkocmV2aXNpb24gOTI2NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVdoZWVsRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50CiAgICAgfTsK
IAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJP
TUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICBlbnVtIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHsK
ICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lICAgICAgICA9IDAsCiAgICAgICAg
IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW4gICAgICAgPSAxIDw8IDEsCkBAIC05Nyw3ICs5
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9jdHJsS2V5KGZhbHNl
KQogICAgICAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKICAgICAgICAgICAgICwgbV9tZXRhS2V5
KGZhbHNlKQotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9S
TShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgICAgICwgbV9oYXNQcmVjaXNlU2Ny
b2xsaW5nRGVsdGFzKGZhbHNlKQogICAgICAgICAgICAgLCBtX3BoYXNlKFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlTm9uZSkKICAgICAgICAgICAgICwgbV9tb21lbnR1bVBoYXNlKFBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlTm9uZSkKQEAgLTExOSw3ICsxMTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICAsIG1fY3RybEtleShjdHJsS2V5KQogICAgICAgICAgICAgLCBtX2FsdEtl
eShhbHRLZXkpCiAgICAgICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQotI2lmIFBMQVRGT1JN
KE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFS
V0lOKSkKICAgICAgICAgICAgICwgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKGZhbHNlKQog
ICAgICAgICAgICAgLCBtX3BoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSkKICAgICAg
ICAgICAgICwgbV9tb21lbnR1bVBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSkKQEAg
LTE3NCw3ICsxNzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgZGVmaW5lZChfX09CSkNf
XykKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KE5TRXZlbnQgKiwgTlNWaWV3ICp3aW5kb3dW
aWV3KTsKICNlbmRpZgorI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShD
SFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2Ug
cGhhc2UoKSBjb25zdCB7IHJldHVybiBtX3BoYXNlOyB9CiAgICAgICAgIFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlIG1vbWVudHVtUGhhc2UoKSBjb25zdCB7IHJldHVybiBtX21vbWVudHVtUGhhc2U7
IH0KICAgICAgICAgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOyB9CkBAIC0yMTMsNyArMjE1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fY3RybEtleTsKICAgICAgICAgYm9vbCBt
X2FsdEtleTsKICAgICAgICAgYm9vbCBtX21ldGFLZXk7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lm
IFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogICAg
ICAgICBib29sIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhczsKICAgICAgICAgUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2UgbV9waGFzZTsKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2Ug
bV9tb21lbnR1bVBoYXNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLm1tCShyZXZpc2lv
biA5MjY3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1h
dG9yQ2hyb21pdW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTg1Miw3ICs4NTIsNyBAQCB2b2lk
IFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmhhbmRsZUdlCiB7CiAgICAgaWYgKGdlc3R1cmVF
dmVudC50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZSkKICAg
ICAgICAgYmVnaW5TY3JvbGxHZXN0dXJlKCk7Ci0gICAgZWxzZQorICAgIGVsc2UgaWYgKGdlc3R1
cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGUpCiAg
ICAgICAgIGVuZFNjcm9sbEdlc3R1cmUoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDkyNjc3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAxMS0wOC0wNCAgQWxleGVpIFN2
aXRraW5lICA8YXN2aXRraW5lQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEVu
YWJsZSBydWJiZXIgYmFuZGluZyB3aGVuIHNjcm9sbGluZy4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3MDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAgICAgICog
cHVibGljL1dlYklucHV0RXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViTW91c2VXaGVlbEV2
ZW50OjpXZWJNb3VzZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZXN0dXJlRXZl
bnQ6OldlYkdlc3R1cmVFdmVudCk6CisgICAgICAgICogcHVibGljL21hYy9XZWJJbnB1dEV2ZW50
RmFjdG9yeS5oOgorICAgICAgICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3JtV2hlZWxF
dmVudEJ1aWxkZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxk
ZXI6OlBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgICogc3JjL1dlYklucHV0
RXZlbnRDb252ZXJzaW9uLmg6CisgICAgICAgICogc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVJbXBsOjpHZXN0dXJlRXZlbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KToKKyAgICAgICAg
KiBzcmMvV2ViUG9wdXBNZW51SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmg6CisgICAgICAgICogc3JjL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5tbToK
KyAgICAgICAgKFdlYktpdDo6Z2VzdHVyZUV2ZW50VHlwZUZvckV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6cGhhc2VGb3JOU0V2ZW50UGhhc2UpOgorICAgICAgICAoV2ViS2l0OjpwaGFzZUZvckV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6bW9tZW50dW1QaGFzZUZvckV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5wdXRFdmVudEZhY3Rvcnk6Om1vdXNlV2hlZWxFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYklucHV0RXZlbnRGYWN0b3J5OjpnZXN0dXJlRXZlbnQpOgorCiAyMDExLTA4
LTA5ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuICBSb2xsZWQgREVQUy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVh
dHVyZXMuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVz
Lmd5cGkJKHJldmlzaW9uIDkyNjc3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJl
cy5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDcgQEAKICAgICAgIH1dLAogICAg
ICAgWydPUz09Im1hYyInLCB7CiAgICAgICAgICdmZWF0dXJlX2RlZmluZXMnOiBbCisgICAgICAg
ICAgJ0VOQUJMRV9SVUJCRVJfQkFORElORz0xJywKICAgICAgICAgICAnV1RGX1VTRV9TS0lBX09O
X01BQ19DSFJPTUlVTT08KHVzZV9za2lhKScsCiAgICAgICAgIF0sCiAgICAgICB9XSwKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgJKHJldmlz
aW9uIDkyNjc3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDEwIEBAIHB1YmxpYzoKICAgICAgICAg
S2V5VXAsCiAgICAgICAgIENoYXIsCiAKKyAgICAgICAgLy8gV2ViR2VzdHVyZUV2ZW50CisgICAg
ICAgIEdlc3R1cmVTY3JvbGxCZWdpbiwKKyAgICAgICAgR2VzdHVyZVNjcm9sbEVuZCwKKwogICAg
ICAgICAvLyBXZWJUb3VjaEV2ZW50CiAgICAgICAgIFRvdWNoU3RhcnQsCiAgICAgICAgIFRvdWNo
TW92ZSwKQEAgLTI3OSw2ICsyODMsMTUgQEAgcHVibGljOgogCiBjbGFzcyBXZWJNb3VzZVdoZWVs
RXZlbnQgOiBwdWJsaWMgV2ViTW91c2VFdmVudCB7CiBwdWJsaWM6CisgICAgZW51bSBQaGFzZSB7
CisgICAgICAgIFBoYXNlTm9uZSAgICAgICAgPSAwLAorICAgICAgICBQaGFzZUJlZ2FuICAgICAg
ID0gMSA8PCAxLAorICAgICAgICBQaGFzZVN0YXRpb25hcnkgID0gMSA8PCAyLAorICAgICAgICBQ
aGFzZUNoYW5nZWQgICAgID0gMSA8PCAzLAorICAgICAgICBQaGFzZUVuZGVkICAgICAgID0gMSA8
PCA0LAorICAgICAgICBQaGFzZUNhbmNlbGxlZCAgID0gMSA8PCA1LAorICAgIH07CisKICAgICBm
bG9hdCBkZWx0YVg7CiAgICAgZmxvYXQgZGVsdGFZOwogICAgIGZsb2F0IHdoZWVsVGlja3NYOwpA
QCAtMjkwLDYgKzMwMywxMCBAQCBwdWJsaWM6CiAgICAgLy8gdHJhbnNmZXJpbmcgaXQgb3ZlciB0
aGUgd2lyZS4KICAgICBpbnQgc2Nyb2xsQnlQYWdlOwogCisgICAgYm9vbCBoYXNQcmVjaXNlU2Ny
b2xsaW5nRGVsdGFzOworICAgIFBoYXNlIHBoYXNlOworICAgIFBoYXNlIG1vbWVudHVtUGhhc2U7
CisKICAgICBXZWJNb3VzZVdoZWVsRXZlbnQodW5zaWduZWQgc2l6ZVBhcmFtID0gc2l6ZW9mKFdl
Yk1vdXNlV2hlZWxFdmVudCkpCiAgICAgICAgIDogV2ViTW91c2VFdmVudChzaXplUGFyYW0pCiAg
ICAgICAgICwgZGVsdGFYKDAuMGYpCkBAIC0yOTcsNiArMzE0LDI3IEBAIHB1YmxpYzoKICAgICAg
ICAgLCB3aGVlbFRpY2tzWCgwLjBmKQogICAgICAgICAsIHdoZWVsVGlja3NZKDAuMGYpCiAgICAg
ICAgICwgc2Nyb2xsQnlQYWdlKGZhbHNlKQorICAgICAgICAsIGhhc1ByZWNpc2VTY3JvbGxpbmdE
ZWx0YXMoZmFsc2UpCisgICAgICAgICwgcGhhc2UoUGhhc2VOb25lKQorICAgICAgICAsIG1vbWVu
dHVtUGhhc2UoUGhhc2VOb25lKQorICAgIHsKKyAgICB9Cit9OworCisvLyBXZWJHZXN0dXJlRXZl
bnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworY2xhc3MgV2ViR2VzdHVyZUV2ZW50IDogcHVibGljIFdlYklucHV0RXZlbnQg
eworcHVibGljOgorICAgIGludCB4OworICAgIGludCB5OworICAgIGludCBnbG9iYWxYOworICAg
IGludCBnbG9iYWxZOworCisgICAgV2ViR2VzdHVyZUV2ZW50KHVuc2lnbmVkIHNpemVQYXJhbSA9
IHNpemVvZihXZWJHZXN0dXJlRXZlbnQpKQorICAgICAgICA6IHgoMCkKKyAgICAgICAgLCB5KDAp
CisgICAgICAgICwgZ2xvYmFsWCgwKQorICAgICAgICAsIGdsb2JhbFkoMCkKICAgICB7CiAgICAg
fQogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL21hYy9XZWJJbnB1dEV2
ZW50RmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oCShyZXZpc2lvbiA5MjY3NykKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViS2V5
Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZl
bnQ7CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiAKIGNsYXNzIFdlYklucHV0RXZlbnRGYWN0b3J5
IHsKIHB1YmxpYzoKQEAgLTUzLDYgKzU0LDcgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQg
c3RhdGljIFdlYktleWJvYXJkRXZlbnQga2V5Ym9hcmRFdmVudCh3Y2hhcl90IGNoYXJhY3Rlciwg
aW50IG1vZGlmaWVycywgZG91YmxlIHRpbWVTdGFtcFNlY29uZHMpOwogICAgIFdFQktJVF9FWFBP
UlQgc3RhdGljIFdlYk1vdXNlRXZlbnQgbW91c2VFdmVudChOU0V2ZW50KiwgTlNWaWV3Kik7CiAg
ICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViTW91c2VXaGVlbEV2ZW50IG1vdXNlV2hlZWxFdmVu
dChOU0V2ZW50KiwgTlNWaWV3Kik7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViR2VzdHVy
ZUV2ZW50IGdlc3R1cmVFdmVudChOU0V2ZW50ICosIE5TVmlldyAqKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRF
dmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gOTI2NzcpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMCw4ICsxMDAsMzkgQEAgUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6
UGxhdGZvcm1XaGVlbAogICAgIG1fY3RybEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZl
bnQ6OkNvbnRyb2xLZXkpOwogICAgIG1fYWx0S2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRF
dmVudDo6QWx0S2V5KTsKICAgICBtX21ldGFLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2
ZW50OjpNZXRhS2V5KTsKKyNpZiBPUyhEQVJXSU4pCisgICAgbV9oYXNQcmVjaXNlU2Nyb2xsaW5n
RGVsdGFzID0gZS5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOworICAgIG1fcGhhc2UgPSBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZT4oZS5waGFzZSk7CisgICAg
bV9tb21lbnR1bVBoYXNlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50
UGhhc2U+KGUubW9tZW50dW1QaGFzZSk7CisgICAgbV90aW1lc3RhbXAgPSBlLnRpbWVTdGFtcFNl
Y29uZHM7CisjZW5kaWYKIH0KIAorLy8gUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpZiBFTkFC
TEUoR0VTVFVSRV9FVkVOVFMpCitQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRmb3Jt
R2VzdHVyZUV2ZW50QnVpbGRlcihXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViR2VzdHVyZUV2ZW50
JiBlKQoreworICAgIHN3aXRjaCAoZS50eXBlKSB7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlU2Nyb2xsQmVnaW46CisgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpTY3JvbGxCZWdpblR5cGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZVNjcm9sbEVuZDoKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlNjcm9sbEVuZFR5cGU7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBtX3Bvc2l0aW9uID0gd2lkZ2V0LT5j
b252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coSW50UG9pbnQoZS54LCBlLnkpKTsKKyAgICBtX2ds
b2JhbFBvc2l0aW9uID0gSW50UG9pbnQoZS5nbG9iYWxYLCBlLmdsb2JhbFkpOworICAgIG1fdGlt
ZXN0YW1wID0gZS50aW1lU3RhbXBTZWNvbmRzOworICAgIG1fc2hpZnRLZXkgPSAoZS5tb2RpZmll
cnMgJiBXZWJJbnB1dEV2ZW50OjpTaGlmdEtleSk7CisgICAgbV9jdHJsS2V5ID0gKGUubW9kaWZp
ZXJzICYgV2ViSW5wdXRFdmVudDo6Q29udHJvbEtleSk7CisgICAgbV9hbHRLZXkgPSAoZS5tb2Rp
ZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpBbHRLZXkpOworICAgIG1fbWV0YUtleSA9IChlLm1vZGlm
aWVycyAmIFdlYklucHV0RXZlbnQ6Ok1ldGFLZXkpOworfQorI2VuZGlmCisKIC8vIE1ha2VQbGF0
Zm9ybUtleWJvYXJkRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogc3RhdGljIGlubGluZSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlR5cGUg
dG9QbGF0Zm9ybUtleWJvYXJkRXZlbnRUeXBlKFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENv
bnZlcnNpb24uaAkocmV2aXNpb24gOTI2NzcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEs
MTIgQEAKICNpZm5kZWYgV2ViSW5wdXRFdmVudENvbnZlcnNpb25faAogI2RlZmluZSBXZWJJbnB1
dEV2ZW50Q29udmVyc2lvbl9oCiAKLSNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCi0KKyNpbmNs
dWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRF
dmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtVG91Y2hFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1
ZGUgIldlYklucHV0RXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgS2V5Ym9h
cmRFdmVudDsKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJN
b3VzZUV2ZW50OwogY2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRF
dmVudDsKK2NsYXNzIFdlYkdlc3R1cmVFdmVudDsKIAogLy8gVGhlc2UgY2xhc3NlcyBhcmUgdXNl
ZCB0byBjb252ZXJ0IGZyb20gV2ViSW5wdXRFdmVudCBzdWJjbGFzc2VzIHRvCiAvLyBjb3JyZXNw
b25kaW5nIFdlYkNvcmUgZXZlbnRzLgpAQCAtNjUsNiArNjYsMTMgQEAgcHVibGljOgogICAgIFBs
YXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIoV2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViTW91c2VX
aGVlbEV2ZW50Jik7CiB9OwogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorY2xhc3MgUGxh
dGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVy
ZUV2ZW50IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoV2ViQ29y
ZTo6V2lkZ2V0KiwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7Cit9OworI2VuZGlmCisKIGNsYXNz
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1L
ZXlib2FyZEV2ZW50IHsKIHB1YmxpYzoKICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVy
KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCShyZXZpc2lvbiA5MjY3NykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzMsNiArMTMzLDExIEBAIHZvaWQgV2ViUG9wdXBNZW51SW1wbDo6TW91c2VXaGVlbChj
b25zdCAKICAgICBtX3dpZGdldC0+aGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnRC
dWlsZGVyKG1fd2lkZ2V0LCBldmVudCkpOwogfQogCitib29sIFdlYlBvcHVwTWVudUltcGw6Okdl
c3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQoreworICAgIHJldHVybiBt
X3dpZGdldC0+aGFuZGxlR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlciht
X3dpZGdldCwgZXZlbnQpKTsKK30KKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBib29sIFdl
YlBvcHVwTWVudUltcGw6OlRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYgZXZlbnQpCiB7
CkBAIC0yNjYsNiArMjcxLDEwIEBAIGJvb2wgV2ViUG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRF
dmVudCgKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoQ2FuY2VsOgogICAgICAgICByZXR1
cm4gVG91Y2hFdmVudCgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViVG91Y2hFdmVudCo+KCZpbnB1dEV2
ZW50KSk7CiAKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6CisgICAgICAgIHJldHVybiBH
ZXN0dXJlRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZpbnB1dEV2
ZW50KSk7CisKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlVuZGVmaW5lZDoKICAgICBjYXNlIFdl
YklucHV0RXZlbnQ6Ok1vdXNlRW50ZXI6CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpDb250ZXh0
TWVudToKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJ
bXBsLmgJKHJldmlzaW9uIDkyNjc3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UG9wdXBNZW51SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNzIFdp
ZGdldDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiBj
bGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk1v
dXNlV2hlZWxFdmVudDsKQEAgLTEwNCw2ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBNb3Vz
ZVVwKGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lkIE1vdXNlRG91YmxlQ2xpY2soY29u
c3QgV2ViTW91c2VFdmVudCYpOwogICAgIHZvaWQgTW91c2VXaGVlbChjb25zdCBXZWJNb3VzZVdo
ZWVsRXZlbnQmKTsKKyAgICBib29sIEdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQm
KTsKICAgICBib29sIFRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYpOwogICAgIGJvb2wg
S2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiA5MjY3NykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjAzLDYgKzYwMywxNCBAQCBib29sIFdlYlZpZXdJbXBsOjptb3VzZVdoZWVsKGNvbnN0IFdlYk1v
CiAgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhh
bmRsZVdoZWVsRXZlbnQocGxhdGZvcm1FdmVudCk7CiB9CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9F
VkVOVFMpCitib29sIFdlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2
ZW50JiBldmVudCkKK3sKKyAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIgcGxhdGZvcm1F
dmVudChtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBldmVudCk7CisgICAgcmV0dXJuIG1h
aW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVu
dChwbGF0Zm9ybUV2ZW50KTsKK30KKyNlbmRpZgorCiBib29sIFdlYlZpZXdJbXBsOjprZXlFdmVu
dChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICBBU1NFUlQoKGV2ZW50LnR5
cGUgPT0gV2ViSW5wdXRFdmVudDo6UmF3S2V5RG93bikKQEAgLTEyODAsNiArMTI4OCwxMyBAQCBi
b29sIFdlYlZpZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0CiAgICAgICAgIGhhbmRsZWQg
PSBjaGFyRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYktleWJvYXJkRXZlbnQqPigmaW5wdXRF
dmVudCkpOwogICAgICAgICBicmVhazsKIAorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6CisgICAgICAgIGhhbmRsZWQgPSBnZXN0dXJlRXZl
bnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZpbnB1dEV2ZW50KSk7Cisg
ICAgICAgIGJyZWFrOworI2VuZGlmCisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6VG91Y2hTdGFydDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRv
dWNoTW92ZToKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAko
cmV2aXNpb24gOTI2NzcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3IEBAIGNsYXNzIFdlYkFjY2Vzc2liaWxp
dHlPYmplY3Q7CiBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xhc3MgV2ViRGV2VG9v
bHNBZ2VudFByaXZhdGU7CiBjbGFzcyBXZWJGcmFtZUltcGw7CitjbGFzcyBXZWJHZXN0dXJlRXZl
bnQ7CiBjbGFzcyBXZWJJbWFnZTsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJN
b3VzZUV2ZW50OwpAQCAtMjc3LDYgKzI3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdXNlQ29u
dGV4dE1lbnUoY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIHZvaWQgbW91c2VEb3VibGVDbGlj
ayhjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAgYm9vbCBtb3VzZVdoZWVsKGNvbnN0IFdlYk1v
dXNlV2hlZWxFdmVudCYpOworICAgIGJvb2wgZ2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVF
dmVudCYpOwogICAgIGJvb2wga2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAg
IGJvb2wgY2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKICAgICBib29sIHRvdWNo
RXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvbWFjL1dlYklucHV0RXZlbnRGYWN0b3J5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5tbQkocmV2aXNpb24g
OTI2NzcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9tYWMvV2ViSW5wdXRFdmVudEZh
Y3RvcnkubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDM3IEBACiAjaW5jbHVkZSAiV2Vi
SW5wdXRFdmVudC5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKKyNpZiBCVUlMRElO
R19PTl9MRU9QQVJEIHx8IEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRAorCisvLyBBZGRpdGlvbmFs
IExpb24gQVBJcy4KK2VudW0geworICAgIE5TRXZlbnRQaGFzZU5vbmUgICAgICAgID0gMCwKKyAg
ICBOU0V2ZW50UGhhc2VCZWdhbiAgICAgICA9IDB4MSA8PCAwLAorICAgIE5TRXZlbnRQaGFzZVN0
YXRpb25hcnkgID0gMHgxIDw8IDEsCisgICAgTlNFdmVudFBoYXNlQ2hhbmdlZCAgICAgPSAweDEg
PDwgMiwKKyAgICBOU0V2ZW50UGhhc2VFbmRlZCAgICAgICA9IDB4MSA8PCAzLAorICAgIE5TRXZl
bnRQaGFzZUNhbmNlbGxlZCAgID0gMHgxIDw8IDQKK307Cit0eXBlZGVmIE5TVUludGVnZXIgTlNF
dmVudFBoYXNlOworCitAaW50ZXJmYWNlIE5TRXZlbnQgKExpb25TREtEZWNsYXJhdGlvbnMpCist
IChOU0V2ZW50UGhhc2UpcGhhc2U7CistIChOU0V2ZW50UGhhc2UpbW9tZW50dW1QaGFzZTsKK0Bl
bmQKKworI2VuZGlmICAvLyBCVUlMRElOR19PTl9MRU9QQVJEIHx8IEJVSUxESU5HX09OX1NOT1df
TEVPUEFSRAorCisjaWYgQlVJTERJTkdfT05fTEVPUEFSRAorCisvLyBUaGVzZSBhcmUgbm90IGRl
ZmluZWQgaW4gdGhlIDEwLjUgU0RLIGJ1dCBhcmUgZGVmaW5lZCBpbiBsYXRlciBTREtzIGluc2lk
ZQorLy8gYSBNQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IE1BQ19PU19YX1ZFUlNJT05f
MTBfNSAjaWZkZWYuCitlbnVtIHsKKyAgICBOU0V2ZW50VHlwZUJlZ2luR2VzdHVyZSAgICAgPSAx
OSwKKyAgICBOU0V2ZW50VHlwZUVuZEdlc3R1cmUgICAgICAgPSAyMAorfTsKKworI2VuZGlmICAv
LyBCVUlMRElOR19PTl9MRU9QQVJECisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBXZWJLZXli
b2FyZEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCkBAIC0xNDksNiArMTgwLDE5IEBAIHN0YXRpYyBpbnQgd2luZG93c0tleUNv
ZGVGb3JLZXlFdmVudChOU0UKICAgICByZXR1cm4gV2ViQ29yZTo6d2luZG93c0tleUNvZGVGb3JL
ZXlDb2RlKFtldmVudCBrZXlDb2RlXSk7CiB9CiAKK3N0YXRpYyBXZWJJbnB1dEV2ZW50OjpUeXBl
IGdlc3R1cmVFdmVudFR5cGVGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBzd2l0Y2gg
KFtldmVudCB0eXBlXSkgeworICAgIGNhc2UgTlNFdmVudFR5cGVCZWdpbkdlc3R1cmU6CisgICAg
ICAgIHJldHVybiBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47CisgICAgY2FzZSBO
U0V2ZW50VHlwZUVuZEdlc3R1cmU6CisgICAgICAgIHJldHVybiBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlU2Nyb2xsRW5kOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDsKKyAgICB9
Cit9CisKIHN0YXRpYyBpbmxpbmUgTlNTdHJpbmcqIHRleHRGcm9tRXZlbnQoTlNFdmVudCogZXZl
bnQpCiB7CiAgICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkKQEAgLTcwNyw2
ICs3NTEsNDAgQEAgV2ViTW91c2VFdmVudCBXZWJJbnB1dEV2ZW50RmFjdG9yeTo6bW91cwogCiAv
LyBXZWJNb3VzZVdoZWVsRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK3N0YXRpYyBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNl
IHBoYXNlRm9yTlNFdmVudFBoYXNlKE5TRXZlbnRQaGFzZSBldmVudFBoYXNlKQoreworICAgIHVp
bnQzMl90IHBoYXNlID0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZU5vbmU7IAorICAgIGlmIChl
dmVudFBoYXNlICYgTlNFdmVudFBoYXNlQmVnYW4pCisgICAgICAgIHBoYXNlIHw9IFdlYk1vdXNl
V2hlZWxFdmVudDo6UGhhc2VCZWdhbjsKKyAgICBpZiAoZXZlbnRQaGFzZSAmIE5TRXZlbnRQaGFz
ZVN0YXRpb25hcnkpCisgICAgICAgIHBoYXNlIHw9IFdlYk1vdXNlV2hlZWxFdmVudDo6UGhhc2VT
dGF0aW9uYXJ5OworICAgIGlmIChldmVudFBoYXNlICYgTlNFdmVudFBoYXNlQ2hhbmdlZCkKKyAg
ICAgICAgcGhhc2UgfD0gV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZUNoYW5nZWQ7CisgICAgaWYg
KGV2ZW50UGhhc2UgJiBOU0V2ZW50UGhhc2VFbmRlZCkKKyAgICAgICAgcGhhc2UgfD0gV2ViTW91
c2VXaGVlbEV2ZW50OjpQaGFzZUVuZGVkOworICAgIGlmIChldmVudFBoYXNlICYgTlNFdmVudFBo
YXNlQ2FuY2VsbGVkKQorICAgICAgICBwaGFzZSB8PSBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNl
Q2FuY2VsbGVkOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJNb3VzZVdoZWVsRXZlbnQ6OlBo
YXNlPihwaGFzZSk7Cit9CisKK3N0YXRpYyBXZWJNb3VzZVdoZWVsRXZlbnQ6OlBoYXNlIHBoYXNl
Rm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgaWYgKCFbZXZlbnQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihwaGFzZSldKQorICAgICAgICByZXR1cm4gV2ViTW91c2VXaGVlbEV2
ZW50OjpQaGFzZU5vbmU7CisKKyAgICBOU0V2ZW50UGhhc2UgZXZlbnRQaGFzZSA9IFtldmVudCBw
aGFzZV07CisgICAgcmV0dXJuIHBoYXNlRm9yTlNFdmVudFBoYXNlKGV2ZW50UGhhc2UpOworfQor
CitzdGF0aWMgV2ViTW91c2VXaGVlbEV2ZW50OjpQaGFzZSBtb21lbnR1bVBoYXNlRm9yRXZlbnQo
TlNFdmVudCAqZXZlbnQpCit7CisgICAgaWYgKCFbZXZlbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihtb21lbnR1bVBoYXNlKV0pCisgICAgICAgIHJldHVybiBXZWJNb3VzZVdoZWVsRXZl
bnQ6OlBoYXNlTm9uZTsKKworICAgIE5TRXZlbnRQaGFzZSBldmVudE1vbWVudHVtUGhhc2UgPSBb
ZXZlbnQgbW9tZW50dW1QaGFzZV07CisgICAgcmV0dXJuIHBoYXNlRm9yTlNFdmVudFBoYXNlKGV2
ZW50TW9tZW50dW1QaGFzZSk7Cit9CisKIFdlYk1vdXNlV2hlZWxFdmVudCBXZWJJbnB1dEV2ZW50
RmFjdG9yeTo6bW91c2VXaGVlbEV2ZW50KE5TRXZlbnQqIGV2ZW50LCBOU1ZpZXcqIHZpZXcpCiB7
CiAgICAgV2ViTW91c2VXaGVlbEV2ZW50IHJlc3VsdDsKQEAgLTgzOCw2ICs5MTYsNyBAQCBXZWJN
b3VzZVdoZWVsRXZlbnQgV2ViSW5wdXRFdmVudEZhY3Rvcnk6CiAgICAgICAgIHJlc3VsdC5kZWx0
YVkgPSBDR0V2ZW50R2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudCwga0NHU2Nyb2xsV2hlZWxF
dmVudFBvaW50RGVsdGFBeGlzMSk7CiAgICAgICAgIHJlc3VsdC53aGVlbFRpY2tzWCA9IHJlc3Vs
dC5kZWx0YVggLyBzY3JvbGxiYXJQaXhlbHNQZXJDb2NvYVRpY2s7CiAgICAgICAgIHJlc3VsdC53
aGVlbFRpY2tzWSA9IHJlc3VsdC5kZWx0YVkgLyBzY3JvbGxiYXJQaXhlbHNQZXJDb2NvYVRpY2s7
CisgICAgICAgIHJlc3VsdC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gdHJ1ZTsKICAgICB9
IGVsc2UgewogICAgICAgICByZXN1bHQuZGVsdGFYID0gW2V2ZW50IGRlbHRhWF0gKiBzY3JvbGxi
YXJQaXhlbHNQZXJDb2NvYVRpY2s7CiAgICAgICAgIHJlc3VsdC5kZWx0YVkgPSBbZXZlbnQgZGVs
dGFZXSAqIHNjcm9sbGJhclBpeGVsc1BlckNvY29hVGljazsKQEAgLTg0Nyw2ICs5MjYsMjkgQEAg
V2ViTW91c2VXaGVlbEV2ZW50IFdlYklucHV0RXZlbnRGYWN0b3J5OgogCiAgICAgcmVzdWx0LnRp
bWVTdGFtcFNlY29uZHMgPSBbZXZlbnQgdGltZXN0YW1wXTsKIAorICAgIHJlc3VsdC5waGFzZSAg
ICAgICAgICAgICAgPSBwaGFzZUZvckV2ZW50KGV2ZW50KTsKKyAgICByZXN1bHQubW9tZW50dW1Q
aGFzZSAgICAgID0gbW9tZW50dW1QaGFzZUZvckV2ZW50KGV2ZW50KTsKKworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK1dlYkdlc3R1cmVFdmVudCBXZWJJbnB1dEV2ZW50RmFjdG9yeTo6Z2VzdHVy
ZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKnZpZXcpCit7CisgICAgV2ViR2VzdHVyZUV2
ZW50IHJlc3VsdDsKKworICAgIC8vIFVzZSBhIHRlbXBvcmFyeSBXZWJNb3VzZUV2ZW50IHRvIGdl
dCB0aGUgbG9jYXRpb24uCisgICAgV2ViTW91c2VFdmVudCB0ZW1wOworCisgICAgc2V0V2ViRXZl
bnRMb2NhdGlvbkZyb21FdmVudEluVmlldygmdGVtcCwgZXZlbnQsIHZpZXcpOworICAgIHJlc3Vs
dC54ID0gdGVtcC54OworICAgIHJlc3VsdC55ID0gdGVtcC55OworICAgIHJlc3VsdC5nbG9iYWxY
ID0gdGVtcC5nbG9iYWxYOworICAgIHJlc3VsdC5nbG9iYWxZID0gdGVtcC5nbG9iYWxZOworCisg
ICAgcmVzdWx0LnR5cGUgPSBnZXN0dXJlRXZlbnRUeXBlRm9yRXZlbnQoZXZlbnQpOworICAgIHJl
c3VsdC5tb2RpZmllcnMgPSBtb2RpZmllcnNGcm9tRXZlbnQoZXZlbnQpOworICAgIHJlc3VsdC50
aW1lU3RhbXBTZWNvbmRzID0gW2V2ZW50IHRpbWVzdGFtcF07CisKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>