<?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>80477</bug_id>
          
          <creation_ts>2012-03-06 20:38:38 -0800</creation_ts>
          <short_desc>Add Notification constructor</short_desc>
          <delta_ts>2012-04-23 09:17:12 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>83472</dependson>
          <blocked>80472</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jianli</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>savagobr</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>572479</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-03-06 20:38:38 -0800</bug_when>
    <thetext>Add constructor function to create Notification, with optional icon URL.

&lt;rdar://problem/10912431&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575442</commentid>
    <comment_count>1</comment_count>
      <attachid>131152</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-03-09 21:56:16 -0800</bug_when>
    <thetext>Created attachment 131152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575443</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-09 21:58:41 -0800</bug_when>
    <thetext>Attachment 131152 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/WebCore/notifications/Notification.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 7 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>575446</commentid>
    <comment_count>3</comment_count>
      <attachid>131152</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-09 22:18:31 -0800</bug_when>
    <thetext>Comment on attachment 131152
Patch

Attachment 131152 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11898981</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575448</commentid>
    <comment_count>4</comment_count>
      <attachid>131155</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-03-09 22:59:39 -0800</bug_when>
    <thetext>Created attachment 131155
new Notification(title, body, iconURL)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575493</commentid>
    <comment_count>5</comment_count>
      <attachid>131155</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-10 03:23:32 -0800</bug_when>
    <thetext>Comment on attachment 131155
new Notification(title, body, iconURL)

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

&gt; Source/WebCore/ChangeLog:8
&gt; +

Would you please add the link to the spec that supports this change?

&gt; Source/WebCore/notifications/Notification.idl:38
&gt; +        Constructor(in DOMString title, in DOMString body, in [Optional=DefaultIsUndefined] DOMString iconUrl),

This constructor signature is different from the spec: http://www.w3.org/TR/notifications/#notification-constructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576695</commentid>
    <comment_count>6</comment_count>
      <attachid>131443</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-03-12 16:29:33 -0700</bug_when>
    <thetext>Created attachment 131443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576730</commentid>
    <comment_count>7</comment_count>
      <attachid>131443</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-12 16:52:49 -0700</bug_when>
    <thetext>Comment on attachment 131443
Patch

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

Why does this constructor need custom code?  It seems like we should be able to handle this constructor with the code generator.

&gt; Source/WebCore/page/DOMWindow.idl:175
&gt; +        attribute NotificationConstructor Notification;

I&apos;m slightly confused by these patches.  Suppose Chromium is going to cut a release branch the day after this patch lands.  What set of ENABLE flags should we set on that branch?  The doesn&apos;t seem to be a way to enable the LEGACY_NOTIFICATIONS without also enabling this half-baked implementation of the new notifications API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576781</commentid>
    <comment_count>8</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-03-12 17:29:34 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 131443 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131443&amp;action=review
&gt; 
&gt; Why does this constructor need custom code?  It seems like we should be able to handle this constructor with the code generator.

Can you point me to an .idl that does this only with the code generator? I was looking at geolocation, and there is custom code there to parse the options. But maybe in that case it was because the functions provided are just callback functions, but here we&apos;re dealing with event listeners.

&gt; 
&gt; &gt; Source/WebCore/page/DOMWindow.idl:175
&gt; &gt; +        attribute NotificationConstructor Notification;
&gt; 
&gt; I&apos;m slightly confused by these patches.  Suppose Chromium is going to cut a release branch the day after this patch lands.  What set of ENABLE flags should we set on that branch?  The doesn&apos;t seem to be a way to enable the LEGACY_NOTIFICATIONS without also enabling this half-baked implementation of the new notifications API.

I will remove the dependency of LEGACY_NOTIFICATIONS and NOTIFICATIONS flags, and make them separate. So ports that wish to support the legacy API can use LEGACY_NOTIFICATIONS, and those that wish to support the new one can use NOTIFICATIONS. A new patch is on the way to reflect this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576797</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-12 17:40:11 -0700</bug_when>
    <thetext>&gt; Can you point me to an .idl that does this only with the code generator? I was looking at geolocation, and there is custom code there to parse the options. But maybe in that case it was because the functions provided are just callback functions, but here we&apos;re dealing with event listeners.

Maybe I&apos;m unclear about what &quot;this&quot; is.  Is this the latest version of the spec that you&apos;re implementing?

http://dev.w3.org/2006/webapi/WebNotifications/publish/Notifications.html

It lists the constructor as follows:

  Notification Notification(in DOMString iconUrl, in DOMString title, in DOMString body);

which you should be able to implement with https://trac.webkit.org/wiki/WebKitIDL#Constructor

    interface [
        Constructor(in DOMString iconUrl, in DOMString title, in DOMString body),
        CallWith=ScriptExecutionContext
    ] XXX {
        [...]
    };

The code in your patch doesn&apos;t seem to match the spec, however.  You seem to be doing something with JSDictionary.  I suspect you might need to flesh out the support for OptionsObject in JSC, but it&apos;s hard to know without seeing the specification that you&apos;re trying to implement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576823</commentid>
    <comment_count>10</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-12 17:56:46 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; The code in your patch doesn&apos;t seem to match the spec, however.  You seem to be doing something with JSDictionary.  I suspect you might need to flesh out the support for OptionsObject in JSC, but it&apos;s hard to know without seeing the specification that you&apos;re trying to implement.

FYI: OptionsObject in JSC is going to land in https://bugs.webkit.org/show_bug.cgi?id=80207</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576879</commentid>
    <comment_count>11</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-03-12 18:43:09 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; Can you point me to an .idl that does this only with the code generator? I was looking at geolocation, and there is custom code there to parse the options. But maybe in that case it was because the functions provided are just callback functions, but here we&apos;re dealing with event listeners.
&gt; 
&gt; Maybe I&apos;m unclear about what &quot;this&quot; is.  Is this the latest version of the spec that you&apos;re implementing?
&gt; 
&gt; http://dev.w3.org/2006/webapi/WebNotifications/publish/Notifications.html

No, it is not. If you look at the change log there&apos;s a link to a recent thread in the WG, where there was consensus to alter the constructor signature to use an options object. The spec has not been updated with the changes yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576884</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-12 18:46:55 -0700</bug_when>
    <thetext>&gt; No, it is not. If you look at the change log there&apos;s a link to a recent thread in the WG, where there was consensus to alter the constructor signature to use an options object. The spec has not been updated with the changes yet.

Thanks.  From that email:

&gt; Notification(DOMString title, DOMString body, NotificationOptions optionsDict);

It definitely sounds like you want the OptionsObject support in JSC from Bug 80207.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576953</commentid>
    <comment_count>13</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-03-12 20:05:22 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; No, it is not. If you look at the change log there&apos;s a link to a recent thread in the WG, where there was consensus to alter the constructor signature to use an options object. The spec has not been updated with the changes yet.
&gt; 
&gt; Thanks.  From that email:
&gt; 
&gt; &gt; Notification(DOMString title, DOMString body, NotificationOptions optionsDict);
&gt; 
&gt; It definitely sounds like you want the OptionsObject support in JSC from Bug 80207.

It looks like bug 80802 is just renaming OptionsObject to V8Dictionary, which is the analog to JSDictionary that I use here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576957</commentid>
    <comment_count>14</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-12 20:09:29 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; It definitely sounds like you want the OptionsObject support in JSC from Bug 80207.
&gt; 
&gt; It looks like bug 80802 is just renaming OptionsObject to V8Dictionary, which is the analog to JSDictionary that I use here.

No. We are trying to unify the interface between JSC and V8. The unified interface will be named OptionsObject after the bug 80207 is fixed. After that, the bug 80802 will rename OptionsObject to Dictionary for clarification. Anyway, what is important is to use the interface of (not JSDictionary but) OptionsObject in your patch, because OptionsObject will become the unified interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604659</commentid>
    <comment_count>15</comment_count>
      <attachid>137664</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-04-18 03:09:21 -0700</bug_when>
    <thetext>Created attachment 137664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604665</commentid>
    <comment_count>16</comment_count>
      <attachid>137664</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-18 03:23:11 -0700</bug_when>
    <thetext>Comment on attachment 137664
Patch

Attachment 137664 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12424409</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604666</commentid>
    <comment_count>17</comment_count>
      <attachid>137664</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-18 03:27:38 -0700</bug_when>
    <thetext>Comment on attachment 137664
Patch

Attachment 137664 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12428121</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604667</commentid>
    <comment_count>18</comment_count>
      <attachid>137664</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-18 03:30:58 -0700</bug_when>
    <thetext>Comment on attachment 137664
Patch

Attachment 137664 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12428122</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604855</commentid>
    <comment_count>19</comment_count>
      <attachid>137717</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-04-18 10:20:26 -0700</bug_when>
    <thetext>Created attachment 137717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604908</commentid>
    <comment_count>20</comment_count>
      <attachid>137717</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-18 11:14:05 -0700</bug_when>
    <thetext>Comment on attachment 137717
Patch

Attachment 137717 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12423924</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604938</commentid>
    <comment_count>21</comment_count>
      <attachid>137717</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-18 11:36:53 -0700</bug_when>
    <thetext>Comment on attachment 137717
Patch

Attachment 137717 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12425507</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604986</commentid>
    <comment_count>22</comment_count>
      <attachid>137717</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-18 12:28:53 -0700</bug_when>
    <thetext>Comment on attachment 137717
Patch

Attachment 137717 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12426435</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605413</commentid>
    <comment_count>23</comment_count>
      <attachid>137855</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-04-19 00:05:18 -0700</bug_when>
    <thetext>Created attachment 137855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605431</commentid>
    <comment_count>24</comment_count>
      <attachid>137855</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-19 00:33:58 -0700</bug_when>
    <thetext>Comment on attachment 137855
Patch

Attachment 137855 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12437144</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605831</commentid>
    <comment_count>25</comment_count>
      <attachid>137966</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-04-19 13:26:01 -0700</bug_when>
    <thetext>Created attachment 137966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606216</commentid>
    <comment_count>26</comment_count>
      <attachid>137966</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-04-19 17:21:10 -0700</bug_when>
    <thetext>Comment on attachment 137966
Patch

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

&gt; Source/WebCore/bindings/js/Dictionary.h:60
&gt; +    bool isUndefinedOrNull() const { return m_dictionary.isValid(); }

Should this method return true only if m_dictionary is not valid or empty?

&gt; Source/WebCore/notifications/DOMWindowNotifications.idl:34
&gt; +        attribute NotificationConstructor Notification;

Should this be only exposed to ENABLE(NOTIFICATIONS)?

&gt; Source/WebCore/notifications/Notification.cpp:188
&gt; +        setPendingActivity(this);

Should this be needed for all other platforms?

&gt; Source/WebCore/notifications/Notification.cpp:292
&gt;      unsetPendingActivity(this);

This seems to be unbalanced for non-QT platform. startLoading is only called for QT while finishloading is called for all platforms. I know this is not caused by this patch, but could you please fix this? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606263</commentid>
    <comment_count>27</comment_count>
      <attachid>137966</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-04-19 18:18:54 -0700</bug_when>
    <thetext>Comment on attachment 137966
Patch

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

&gt;&gt; Source/WebCore/bindings/js/Dictionary.h:60
&gt;&gt; +    bool isUndefinedOrNull() const { return m_dictionary.isValid(); }
&gt; 
&gt; Should this method return true only if m_dictionary is not valid or empty?

Yeah that implementation is completely wrong! Missing a &quot;!&quot;. But, having an empty dictionary should return false, because it is a defined object.

&gt;&gt; Source/WebCore/notifications/DOMWindowNotifications.idl:34
&gt;&gt; +        attribute NotificationConstructor Notification;
&gt; 
&gt; Should this be only exposed to ENABLE(NOTIFICATIONS)?

Yes, will fix.

&gt;&gt; Source/WebCore/notifications/Notification.cpp:188
&gt;&gt; +        setPendingActivity(this);
&gt; 
&gt; Should this be needed for all other platforms?

This could be applied to all platforms. Might be easier to just simplify the pending activity for Qt.

&gt;&gt; Source/WebCore/notifications/Notification.cpp:292
&gt;&gt;      unsetPendingActivity(this);
&gt; 
&gt; This seems to be unbalanced for non-QT platform. startLoading is only called for QT while finishloading is called for all platforms. I know this is not caused by this patch, but could you please fix this? Thanks.

I can just remove this call, so that it is only handled via the show() -&gt; finalize() loop</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606391</commentid>
    <comment_count>28</comment_count>
      <attachid>138049</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-04-19 23:29:18 -0700</bug_when>
    <thetext>Created attachment 138049
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606398</commentid>
    <comment_count>29</comment_count>
      <attachid>138049</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-19 23:44:53 -0700</bug_when>
    <thetext>Comment on attachment 138049
Patch

Attachment 138049 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12460145</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606401</commentid>
    <comment_count>30</comment_count>
      <attachid>138049</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-19 23:48:47 -0700</bug_when>
    <thetext>Comment on attachment 138049
Patch

Attachment 138049 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12480081</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606417</commentid>
    <comment_count>31</comment_count>
      <attachid>138055</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-04-20 00:31:32 -0700</bug_when>
    <thetext>Created attachment 138055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606717</commentid>
    <comment_count>32</comment_count>
      <attachid>138055</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-04-20 11:04:24 -0700</bug_when>
    <thetext>Comment on attachment 138055
Patch

I notice that there&apos;re a lot of QT-specific icon-loading logic in Notification.*. Some of them are guarded while other are not. This makes Notification implementation quite complex and fragmented. I am thinking probably we can move all icon-loading logic out of Notification class and put it into something like NotificationIconLoader. Certainly, this is not part of this patch. Could you please file a bug on this and assign it to QT guy?


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

&gt; Source/WebCore/notifications/Notification.cpp:188
&gt;      if (m_state == Idle &amp;&amp; m_notificationCenter-&gt;client()) {

It seems that we can merge the logic for MAC platform and other non-QT platform. Since NotificationClient::show could return false for an error, why not also checking it before setting state to Showing, as what we do in non-QT platform.

&gt; Source/WebCore/notifications/Notification.cpp:304
&gt;      unsetPendingActivity(this);

For non-mac platform, where do we call unsetPendingActivity?

&gt; Source/WebCore/notifications/Notification.h:165
&gt;      void finishLoading();

finishLoading is also only related to icon loading in QT. Could you please also suffix it with Icon?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606766</commentid>
    <comment_count>33</comment_count>
      <attachid>138055</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-04-20 11:54:50 -0700</bug_when>
    <thetext>Comment on attachment 138055
Patch

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

&gt;&gt; Source/WebCore/notifications/Notification.cpp:188
&gt;&gt;      if (m_state == Idle &amp;&amp; m_notificationCenter-&gt;client()) {
&gt; 
&gt; It seems that we can merge the logic for MAC platform and other non-QT platform. Since NotificationClient::show could return false for an error, why not also checking it before setting state to Showing, as what we do in non-QT platform.

I don&apos;t understand what the boolean represents. Does is simply represent whether the notification got queued rather than shown, or that something went wrong on the platform side?

&gt;&gt; Source/WebCore/notifications/Notification.cpp:304
&gt;&gt;      unsetPendingActivity(this);
&gt; 
&gt; For non-mac platform, where do we call unsetPendingActivity?

The guards need to disappear.

&gt;&gt; Source/WebCore/notifications/Notification.h:165
&gt;&gt;      void finishLoading();
&gt; 
&gt; finishLoading is also only related to icon loading in QT. Could you please also suffix it with Icon?

You mentioned in the previous patch that the unsetPendingActivity() in finishLoading() is used by non-Qt ports. So I was reluctant to rename this to finishLoadingIcon since other ports are not loading the icon.

Did I misunderstand your comment? Is it only Qt that executes this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606767</commentid>
    <comment_count>34</comment_count>
      <attachid>138055</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-04-20 11:54:56 -0700</bug_when>
    <thetext>Comment on attachment 138055
Patch

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

&gt;&gt; Source/WebCore/notifications/Notification.cpp:188
&gt;&gt;      if (m_state == Idle &amp;&amp; m_notificationCenter-&gt;client()) {
&gt; 
&gt; It seems that we can merge the logic for MAC platform and other non-QT platform. Since NotificationClient::show could return false for an error, why not also checking it before setting state to Showing, as what we do in non-QT platform.

I don&apos;t understand what the boolean represents. Does is simply represent whether the notification got queued rather than shown, or that something went wrong on the platform side?

&gt;&gt; Source/WebCore/notifications/Notification.cpp:304
&gt;&gt;      unsetPendingActivity(this);
&gt; 
&gt; For non-mac platform, where do we call unsetPendingActivity?

The guards need to disappear.

&gt;&gt; Source/WebCore/notifications/Notification.h:165
&gt;&gt;      void finishLoading();
&gt; 
&gt; finishLoading is also only related to icon loading in QT. Could you please also suffix it with Icon?

You mentioned in the previous patch that the unsetPendingActivity() in finishLoading() is used by non-Qt ports. So I was reluctant to rename this to finishLoadingIcon since other ports are not loading the icon.

Did I misunderstand your comment? Is it only Qt that executes this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606787</commentid>
    <comment_count>35</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-04-20 12:08:25 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 138055 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138055&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/notifications/Notification.cpp:188
&gt; &gt;&gt;      if (m_state == Idle &amp;&amp; m_notificationCenter-&gt;client()) {
&gt; &gt; 
&gt; &gt; It seems that we can merge the logic for MAC platform and other non-QT platform. Since NotificationClient::show could return false for an error, why not also checking it before setting state to Showing, as what we do in non-QT platform.
&gt; 
&gt; I don&apos;t understand what the boolean represents. Does is simply represent whether the notification got queued rather than shown, or that something went wrong on the platform side?

I just checked the implementation for NotificationClient::show on Chromium and Mac platforms, it seems that we mean something went wrong on the platform side. Currently on Mac, it does not check the return value of show().

&gt; 
&gt; &gt;&gt; Source/WebCore/notifications/Notification.cpp:304
&gt; &gt;&gt;      unsetPendingActivity(this);
&gt; &gt; 
&gt; &gt; For non-mac platform, where do we call unsetPendingActivity?
&gt; 
&gt; The guards need to disappear.
&gt; 
&gt; &gt;&gt; Source/WebCore/notifications/Notification.h:165
&gt; &gt;&gt;      void finishLoading();
&gt; &gt; 
&gt; &gt; finishLoading is also only related to icon loading in QT. Could you please also suffix it with Icon?
&gt; 
&gt; You mentioned in the previous patch that the unsetPendingActivity() in finishLoading() is used by non-Qt ports. So I was reluctant to rename this to finishLoadingIcon since other ports are not loading the icon.
&gt; 
&gt; Did I misunderstand your comment? Is it only Qt that executes this?

My previous comment about &quot;finishLoading() is used by non-Qt ports&quot; is wrong after I read the code more carefully. Only QT port does the icon loading and all the callers of finishLoading(), did***, are solely executed by QT port. I am fine that you leave the name unchanged since I do feel that we need to refactor this complicated icon-loading logic for QT port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606800</commentid>
    <comment_count>36</comment_count>
    <who name="Adenilson Cavalcanti Silva">savagobr</who>
    <bug_when>2012-04-20 12:20:50 -0700</bug_when>
    <thetext>Probably relevant to Jian&apos;s comment about Qt notification &amp; icon code: https://bugs.webkit.org/show_bug.cgi?id=80700</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606840</commentid>
    <comment_count>37</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-04-20 13:05:19 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (From update of attachment 138055 [details])
&gt; I notice that there&apos;re a lot of QT-specific icon-loading logic in Notification.*. Some of them are guarded while other are not. This makes Notification implementation quite complex and fragmented. I am thinking probably we can move all icon-loading logic out of Notification class and put it into something like NotificationIconLoader. Certainly, this is not part of this patch. Could you please file a bug on this and assign it to QT guy?

Filed bug 84484 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606893</commentid>
    <comment_count>38</comment_count>
      <attachid>138163</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-04-20 14:17:18 -0700</bug_when>
    <thetext>Created attachment 138163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607296</commentid>
    <comment_count>39</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-04-21 17:18:33 -0700</bug_when>
    <thetext>Committed r114855: &lt;http://trac.webkit.org/changeset/114855&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607742</commentid>
    <comment_count>40</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-04-23 09:17:12 -0700</bug_when>
    <thetext>The following tests started failing on Mountain Lion Debug Tests in r114855:

    fast/js/global-constructors.html
    fast/dom/Window/window-properties.html
    fast/dom/prototype-inheritance-2.html

Filed &lt;https://bugs.webkit.org/show_bug.cgi?id=84604&gt; to track this test failure.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131152</attachid>
            <date>2012-03-09 21:56:16 -0800</date>
            <delta_ts>2012-03-09 22:59:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80477-20120309215732.patch</filename>
            <type>text/plain</type>
            <size>12158</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE5MmMzM2UwOWFjM2U2
Y2MwMGM1YjQ0YWQyMmFjMGQ1OGFhZTdlYS4uYjhhODcyYzI0NmM4NzlmYWJlMjhjNGU1YjA2YzA0
ODg1ZmNkMGQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAzLTA5ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTm90aWZpY2F0aW9uIGNvbnN0
cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MDQ3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA5MTI0MzE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5jcHA6IFdyYXAgbGVnYWN5IGNyZWF0b3JzIGluIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FU
SU9OUykuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNyZWF0ZSk6IEFkZCBuZXcgQVBJLgorICAg
ICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6CisgICAgICAgIChOb3RpZmljYXRp
b24pOgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbDogQ2hhbmdlIGlu
dGVyZmFjZSBmcm9tIE9taXRDb25zdHJ1Y3RvciB0bworICAgICAgICBDb25zdHJ1Y3Rvci4KKyAg
ICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oOiBXcmFwIGxlZ2FjeSBj
cmVhdG9ycyBpbiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpLgorICAgICAgICAoTm90aWZp
Y2F0aW9uQ2VudGVyKToKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5pZGw6IFdyYXAgbGVnYWN5IGNyZWF0b3JzIGluIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9O
UykuCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOiBNYWtlIE5vdGlmaWNhdGlvbiBjb25z
dHJ1Y3RvciBhY2Nlc3NpYmxlIGZyb20gRE9NV2luZG93LgorCiAyMDEyLTAzLTA5ICBFcmlrIEFy
dmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBVbmRvIHRleHQgcG9z
aXRpb24gYWRqdXN0bWVudCBmb3IgYXR0cmlidXRlIGV2ZW50IGhhbmRsZXJzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggNzQ5NjRkYzc3YWRh
ZDA4MWNiMGVmMTljYTQ0YWQ0YTQ4ZTA4N2U3Mi4uMzVmNzRlZmY5Y2JhN2FiODg0ZWE1Y2I0MWQx
MTQzNmZjN2U4MTcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDks
IDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzYsMTAgKzM2LDEyIEBACiAjaW5jbHVkZSAiTm90
aWZpY2F0aW9uLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAj
aW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ29u
dGVudHMuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtNTMsNiArNTUsNyBAQCBOb3RpZmljYXRp
b246Ok5vdGlmaWNhdGlvbigpCiB7CiB9CiAKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElP
TlMpCiBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBLVVJMJiB1cmwsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5v
dGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4
dCwgdGhpcykKICAgICAsIG1faXNIVE1MKHRydWUpCkBAIC03Miw3ICs3NSw5IEBAIE5vdGlmaWNh
dGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IEtVUkwmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgRXhjCiAKICAgICBtX25vdGlmaWNhdGlvblVSTCA9IHVybDsKIH0KKyNlbmRp
ZgogCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogTm90aWZpY2F0aW9uOjpOb3Rp
ZmljYXRpb24oY29uc3QgTm90aWZpY2F0aW9uQ29udGVudHMmIGNvbnRlbnRzLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3Rp
ZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQs
IHRoaXMpCiAgICAgLCBtX2lzSFRNTChmYWxzZSkKQEAgLTkxLDYgKzk2LDI4IEBAIE5vdGlmaWNh
dGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IE5vdGlmaWNhdGlvbkNvbnRlbnRzJiBjb250ZW50cywg
U2NyaXB0RXhlY3V0aW9uCiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CisjZW5kaWYKKworTm90
aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgTm90aWZpY2F0aW9uQ29udGVudHMmIGNvbnRl
bnRzLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykK
KyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQorICAgICwgbV9pc0hUTUwoZmFs
c2UpCisgICAgLCBtX2NvbnRlbnRzKGNvbnRlbnRzKQorICAgICwgbV9zdGF0ZShJZGxlKQorewor
ICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIG1fbm90aWZpY2F0aW9uQ2Vu
dGVyID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZG9tV2luZG93KCktPndlYmtp
dE5vdGlmaWNhdGlvbnMoKTsKKworICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbkNlbnRlci0+cHJl
c2VudGVyKCkpOworICAgIGlmIChtX25vdGlmaWNhdGlvbkNlbnRlci0+cHJlc2VudGVyKCktPmNo
ZWNrUGVybWlzc2lvbihjb250ZXh0KSAhPSBOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Np
b25BbGxvd2VkKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIGlmICghY29udGVudHMuaWNvbi5pc0VtcHR5KCkgJiYgIWNvbnRl
bnRzLmljb24uaXNWYWxpZCgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KK30KIAogTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKCkgCiB7CkBA
IC0xMDAsMTkgKzEyNywzMSBAQCBOb3RpZmljYXRpb246On5Ob3RpZmljYXRpb24oKQogICAgIH0K
IH0KIAorI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKIFBhc3NSZWZQdHI8Tm90aWZp
Y2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlm
aWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpIAogeyAKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBu
b3RpZmljYXRpb24oYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbih1cmwsIGNvbnRleHQsIGVjLCBw
cm92aWRlcikpKTsKICAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJl
dHVybiBub3RpZmljYXRpb24ucmVsZWFzZSgpOwogfQorI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCiBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9u
OjpjcmVhdGUoY29uc3QgTm90aWZpY2F0aW9uQ29udGVudHMmIGNvbnRlbnRzLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3Rp
ZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKSAKIHsgCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4g
bm90aWZpY2F0aW9uKGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24oY29udGVudHMsIGNvbnRleHQs
IGVjLCBwcm92aWRlcikpKTsKICAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgpOwog
ICAgIHJldHVybiBub3RpZmljYXRpb24ucmVsZWFzZSgpOwogfQorI2VuZGlmCisKK1Bhc3NSZWZQ
dHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNv
bnN0IFN0cmluZyYgaWNvblVSSSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgTm90aWZpY2F0
aW9uQ29udGVudHMgY29udGVudHMoaWNvblVSSS5pc0VtcHR5KCkgPyBLVVJMKCkgOiBjb250ZXh0
LT5jb21wbGV0ZVVSTChpY29uVVJJKSwgdGl0bGUsIGJvZHkpOworICAgIFJlZlB0cjxOb3RpZmlj
YXRpb24+IG5vdGlmaWNhdGlvbihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKGNvbnRlbnRzLCBj
b250ZXh0LCBlYykpKTsKKyAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgpOworICAg
IHJldHVybiBub3RpZmljYXRpb24ucmVsZWFzZSgpOworfQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IE5vdGlmaWNhdGlvbjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAppbmRleCBkZDBkNmVkODRhZDMwNzlkODhiYTAy
YTAyYmNhY2M2YTY0NWNiMzlkLi42ZGI2OTYyOWMwNzNmMGU3NjYyOWI4OTYwZTUwMGJhMDIxM2M3
ZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTYxLDggKzYxLDExIEBAIGNsYXNzIE5vdGlmaWNhdGlvbiA6IHB1YmxpYyBS
ZWZDb3VudGVkPE5vdGlmaWNhdGlvbj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTm90aWZpY2F0aW9uKCk7Cisj
aWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5v
dGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IEtVUkwmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcik7
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgTm90aWZp
Y2F0aW9uQ29udGVudHMmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYs
IFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcik7CisjZW5kaWYKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJp
bmcmIGljb25VUkksIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAKICAgICB2aXJ0dWFsIH5Ob3RpZmlj
YXRpb24oKTsKIApAQCAtMTI2LDggKzEyOSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWxSZWRpcmVjdENoZWNrKCk7CiAKIHByaXZhdGU6CisjaWYgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQogICAgIE5vdGlmaWNhdGlvbihjb25zdCBLVVJMJiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRl
cj4pOwogICAgIE5vdGlmaWNhdGlvbihjb25zdCBOb3RpZmljYXRpb25Db250ZW50cyYsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRp
b25DZW50ZXI+KTsKKyNlbmRpZgorICAgIE5vdGlmaWNhdGlvbihjb25zdCBOb3RpZmljYXRpb25D
b250ZW50cyYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAKICAg
ICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJn
ZXQoKSB7IHJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5pZGwKaW5kZXggZDhjYjNjYzM5YTI1ZTcxNzQzZTlmNzVlOWU4Y2Y0YzE4MGUyMjE2OC4u
ZTE0MzZjMWUxNmY4MzFjMGQxNmM4OTJjMDNiZjU5YzY0MDYxMWUwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzUsNyArMzUsOSBAQCBt
b2R1bGUgdGhyZWFkcyB7CiAgICAgICAgIENvbmRpdGlvbmFsPU5PVElGSUNBVElPTlMsCiAgICAg
ICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICAgICAgRXZlbnRUYXJnZXQsCi0gICAgICAgIE9taXRD
b25zdHJ1Y3RvcgorICAgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgdGl0bGUsIGluIERP
TVN0cmluZyBib2R5LCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcg
aWNvblVybCksCisgICAgICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAg
ICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uCiAgICAgXSBOb3RpZmljYXRpb24gewogICAg
ICAgICB2b2lkIHNob3coKTsKICAgICAgICAgdm9pZCBjYW5jZWwoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCmluZGV4IDQwMmNjYmE5
MzhiMmZlZTA4MWY4YTZhOGQ3YmVjZWZmNzhjYzI2OTIuLjIzMGU3ZDM3Mjc1NzNlNGEyMTcxY2M2
NWVjMGJmYTY5NGY3ZjY0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ2VudGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25DZW50ZXIuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBOb3RpZmljYXRp
b25DZW50ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb25DZW50ZXI+LCBwdWJsaWMg
QWN0aXZlRAogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRl
cj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBOb3RpZmljYXRpb25QcmVzZW50ZXIq
KTsKIAorI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICBQYXNzUmVmUHRyPE5v
dGlmaWNhdGlvbj4gY3JlYXRlSFRNTE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIFVSSSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgewogICAgICAgICBpZiAoIXByZXNlbnRlcigpKSB7CkBAIC02
NCw3ICs2NSw5IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICByZXR1cm4gTm90aWZpY2F0
aW9uOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChVUkkpLCBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVjLCB0aGlzKTsKICAgICB9CisjZW5kaWYKIAorI2lm
IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlv
bj4gY3JlYXRlTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgaWNvblVSSSwgY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB7CiAg
ICAgICAgIGlmICghcHJlc2VudGVyKCkpIHsKQEAgLTc0LDYgKzc3LDcgQEAgcHVibGljOgogICAg
ICAgICBOb3RpZmljYXRpb25Db250ZW50cyBjb250ZW50cyhpY29uVVJJLmlzRW1wdHkoKSA/IEtV
UkwoKSA6IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwoaWNvblVSSSksIHRp
dGxlLCBib2R5KTsKICAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnRlbnRz
LCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVjLCB0aGlzKTsKICAgICB9CisjZW5kaWYKIAog
ICAgIE5vdGlmaWNhdGlvblByZXNlbnRlciogcHJlc2VudGVyKCkgY29uc3QgeyByZXR1cm4gbV9u
b3RpZmljYXRpb25QcmVzZW50ZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCmluZGV4IDhiZTFlY2M3NjlmYmM1YTQzN2I3
NjRlOTZhMDdlNDc1MTcwYTM1NjYuLjNlMTMyMDQ3NTU1Nzg0YjRlNzQ5MDMwM2U1MmRhYzc3Yzdl
MGNiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ2VudGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNlbnRlci5pZGwKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKQEAgLTM2LDEwICszNiwxMiBAQCBtb2R1bGUgdGhyZWFkcyB7CiAgICAg
ICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICAgICAgT21pdENvbnN0cnVjdG9yCiAgICAgXSBOb3Rp
ZmljYXRpb25DZW50ZXIgeworI2lmICFkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9O
X0RFUFJFQ0FUSU9OKSB8fCAhRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05fREVQUkVDQVRJT04K
ICNpZiAhZGVmaW5lZChFTkFCTEVfVEVYVF9OT1RJRklDQVRJT05TX09OTFkpIHx8ICFFTkFCTEVf
VEVYVF9OT1RJRklDQVRJT05TX09OTFkKICAgICAgICBbVjhDdXN0b21dIE5vdGlmaWNhdGlvbiBj
cmVhdGVIVE1MTm90aWZpY2F0aW9uKGluIERPTVN0cmluZyB1cmwpIHJhaXNlcyhET01FeGNlcHRp
b24pOwogI2VuZGlmCiAgICAgICAgW1Y4Q3VzdG9tXSBOb3RpZmljYXRpb24gY3JlYXRlTm90aWZp
Y2F0aW9uKGluIERPTVN0cmluZyBpY29uVXJsLCBpbiBET01TdHJpbmcgdGl0bGUsIGluIERPTVN0
cmluZyBib2R5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyNlbmRpZgogCiAgICAgICAgaW50IGNo
ZWNrUGVybWlzc2lvbigpOwogICAgICAgIFtDdXN0b21dIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24o
aW4gVm9pZENhbGxiYWNrIGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRl
eCAxNDA4NmJmMjBlOWU0OTc2YWE4ODEyM2I4NjBjMDdiNDU5M2E3OWFkLi4yNmVmMmU2ZTU1YjM5
NDkxNjMxYjcxMTZiOGM3YTkyOWFhODk4NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CkBAIC0xNzMsNiArMTczLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAj
aWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX05PVElGSUNBVElPTlMK
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIE5vdGlmaWNh
dGlvbkNlbnRlciB3ZWJraXROb3RpZmljYXRpb25zOwogI2VuZGlmCisgICAgICAgIGF0dHJpYnV0
ZSBOb3RpZmljYXRpb25Db25zdHJ1Y3RvciBOb3RpZmljYXRpb247CiAKICNpZiBkZWZpbmVkKEVO
QUJMRV9PUklFTlRBVElPTl9FVkVOVFMpICYmIEVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMKICAg
ICAgICAgLy8gVGhpcyBpcyB0aGUgaW50ZXJmYWNlIG9yaWVudGF0aW9uIGluIGRlZ3JlZXMuIFNv
bWUgZXhhbXBsZXMgYXJlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131155</attachid>
            <date>2012-03-09 22:59:39 -0800</date>
            <delta_ts>2012-03-12 16:29:29 -0700</delta_ts>
            <desc>new Notification(title, body, iconURL)</desc>
            <filename>bug-80477-20120309230055.patch</filename>
            <type>text/plain</type>
            <size>12114</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRlM2FhZWU2ODE2NmEx
ODBlMjljOGY4OTk4NzU3M2I5Y2UyNjg4MS4uMjYzYzg4NzhhNDhiZjc2NzZmYjA5MDBiNzZlMjUz
NjMwMTljODM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAzLTA5ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTm90aWZpY2F0aW9uIGNvbnN0
cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MDQ3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA5MTI0MzE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5jcHA6IFdyYXAgbGVnYWN5IGNyZWF0b3JzIGluIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FU
SU9OUykuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNyZWF0ZSk6IEFkZCBuZXcgQVBJLgorICAg
ICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6CisgICAgICAgIChOb3RpZmljYXRp
b24pOgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbDogQ2hhbmdlIGlu
dGVyZmFjZSBmcm9tIE9taXRDb25zdHJ1Y3RvciB0bworICAgICAgICBDb25zdHJ1Y3Rvci4KKyAg
ICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oOiBXcmFwIGxlZ2FjeSBj
cmVhdG9ycyBpbiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpLgorICAgICAgICAoTm90aWZp
Y2F0aW9uQ2VudGVyKToKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5pZGw6IFdyYXAgbGVnYWN5IGNyZWF0b3JzIGluIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9O
UykuCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOiBNYWtlIE5vdGlmaWNhdGlvbiBjb25z
dHJ1Y3RvciBhY2Nlc3NpYmxlIGZyb20gRE9NV2luZG93LgorCiAyMDEyLTAzLTA5ICBSb2JlcnQg
S3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBIYW5kbGUgbW9yZSBH
ZXN0dXJlKiBldmVudHMgYnkgcGVyZm9ybWluZyBzY3JvbGxzIG9uIHRoZSBjb3JyZWN0IHRhcmdl
dCBTY3JvbGxhYmxlQXJlYSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmNwcAppbmRleCA3NDk2NGRjNzdhZGFkMDgxY2IwZWYxOWNhNDRhZDRhNDhlMDg3ZTcy
Li5kOWI2NmRlYTQ4Y2YxMzkxZmY2MDU0NzY4YjY2MDc0MDM1NzE3YzQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0z
NSwxMSArMzUsMTMgQEAKIAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgogCisjaW5jbHVkZSAi
RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50
LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRl
ci5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNvbnRlbnRzLmgiCisjaW5jbHVkZSAiTm90aWZp
Y2F0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKQEAgLTUzLDYgKzU1LDcgQEAgTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oKQogewogfQog
CisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogTm90aWZpY2F0aW9uOjpOb3RpZmlj
YXRpb24oY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBF
eGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVy
KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2lzSFRNTCh0
cnVlKQpAQCAtNzIsNyArNzUsOSBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBL
VVJMJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4YwogCiAgICAgbV9u
b3RpZmljYXRpb25VUkwgPSB1cmw7CiB9CisjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfTk9U
SUZJQ0FUSU9OUykKIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IE5vdGlmaWNhdGlv
bkNvbnRlbnRzJiBjb250ZW50cywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcikK
ICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9pc0hUTUwoZmFs
c2UpCkBAIC05MSw2ICs5NiwyOCBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBO
b3RpZmljYXRpb25Db250ZW50cyYgY29udGVudHMsIFNjcmlwdEV4ZWN1dGlvbgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogfQorI2VuZGlmCisKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNv
bnN0IE5vdGlmaWNhdGlvbkNvbnRlbnRzJiBjb250ZW50cywgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29u
dGV4dCwgdGhpcykKKyAgICAsIG1faXNIVE1MKGZhbHNlKQorICAgICwgbV9jb250ZW50cyhjb250
ZW50cykKKyAgICAsIG1fc3RhdGUoSWRsZSkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1
bWVudCgpKTsKKyAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IHN0YXRpY19jYXN0PERvY3VtZW50
Kj4oY29udGV4dCktPmRvbVdpbmRvdygpLT53ZWJraXROb3RpZmljYXRpb25zKCk7CisKKyAgICBB
U1NFUlQobV9ub3RpZmljYXRpb25DZW50ZXItPnByZXNlbnRlcigpKTsKKyAgICBpZiAobV9ub3Rp
ZmljYXRpb25DZW50ZXItPnByZXNlbnRlcigpLT5jaGVja1Blcm1pc3Npb24oY29udGV4dCkgIT0g
Tm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uQWxsb3dlZCkgeworICAgICAgICBlYyA9
IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNv
bnRlbnRzLmljb24uaXNFbXB0eSgpICYmICFjb250ZW50cy5pY29uLmlzVmFsaWQoKSkgeworICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CiAKIE5vdGlm
aWNhdGlvbjo6fk5vdGlmaWNhdGlvbigpIAogewpAQCAtMTAwLDE5ICsxMjcsMzEgQEAgTm90aWZp
Y2F0aW9uOjp+Tm90aWZpY2F0aW9uKCkKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCiBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVh
dGUoY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNl
cHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKSAK
IHsgCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKGFkb3B0UmVmKG5ldyBO
b3RpZmljYXRpb24odXJsLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKSk7CiAgICAgbm90aWZpY2F0
aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVhc2Uo
KTsKIH0KKyNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogUGFzc1Jl
ZlB0cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnN0IE5vdGlmaWNhdGlv
bkNvbnRlbnRzJiBjb250ZW50cywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcikg
CiB7IAogICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbihhZG9wdFJlZihuZXcg
Tm90aWZpY2F0aW9uKGNvbnRlbnRzLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKSk7CiAgICAgbm90
aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJl
bGVhc2UoKTsKIH0KKyNlbmRpZgorCitQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0
aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIE5vdGlmaWNhdGlvbkNvbnRlbnRzIGNvbnRlbnRzKGljb25V
UkkuaXNFbXB0eSgpID8gS1VSTCgpIDogY29udGV4dC0+Y29tcGxldGVVUkwoaWNvblVSSSksIHRp
dGxlLCBib2R5KTsKKyAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24oYWRvcHRS
ZWYobmV3IE5vdGlmaWNhdGlvbihjb250ZW50cywgY29udGV4dCwgZWMpKSk7CisgICAgbm90aWZp
Y2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVh
c2UoKTsKK30KIAogY29uc3QgQXRvbWljU3RyaW5nJiBOb3RpZmljYXRpb246OmludGVyZmFjZU5h
bWUoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmgKaW5kZXggZGQwZDZlZDg0YWQzMDc5ZDg4YmEwMmEwMmJjYWNjNmE2NDVjYjM5ZC4uNmRiNjk2
MjljMDczZjBlNzY2MjliODk2MGU1MDBiYTAyMTNjN2Y3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC02MSw4ICs2MSwxMSBA
QCBjbGFzcyBOb3RpZmljYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+LCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdQogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIE5vdGlmaWNhdGlvbigpOworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FU
SU9OUykKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBL
VVJMJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRy
PE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5v
dGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IE5vdGlmaWNhdGlvbkNvbnRlbnRzJiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNl
bnRlcj4gcHJvdmlkZXIpOworI2VuZGlmCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0
aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgCiAgICAgdmlydHVhbCB+Tm90aWZpY2F0aW9uKCk7CiAKQEAgLTEyNiw4ICsxMjks
MTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpOwog
CiBwcml2YXRlOgorI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICBOb3RpZmlj
YXRpb24oY29uc3QgS1VSTCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2Rl
JiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+KTsKICAgICBOb3RpZmljYXRpb24oY29u
c3QgTm90aWZpY2F0aW9uQ29udGVudHMmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0
aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPik7CisjZW5kaWYKKyAgICBO
b3RpZmljYXRpb24oY29uc3QgTm90aWZpY2F0aW9uQ29udGVudHMmLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNl
CiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsIGIvU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCmluZGV4IGQ4Y2IzY2MzOWEy
NWU3MTc0M2U5Zjc1ZTllOGNmNGMxODBlMjIxNjguLmUxNDM2YzFlMTZmODMxYzBkMTZjODkyYzAz
YmY1OWM2NDA2MTFlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5pZGwKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKQEAgLTM1LDcgKzM1LDkgQEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICBD
b25kaXRpb25hbD1OT1RJRklDQVRJT05TLAogICAgICAgICBBY3RpdmVET01PYmplY3QsCiAgICAg
ICAgIEV2ZW50VGFyZ2V0LAotICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICAgICAgQ29uc3Ry
dWN0b3IoaW4gRE9NU3RyaW5nIHRpdGxlLCBpbiBET01TdHJpbmcgYm9keSwgaW4gW09wdGlvbmFs
PURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIGljb25VcmwpLAorICAgICAgICBDYWxsV2l0
aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAorICAgICAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2Vw
dGlvbgogICAgIF0gTm90aWZpY2F0aW9uIHsKICAgICAgICAgdm9pZCBzaG93KCk7CiAgICAgICAg
IHZvaWQgY2FuY2VsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuaAppbmRleCA0MDJjY2JhOTM4YjJmZWUwODFmOGE2YThkN2JlY2VmZjc4
Y2MyNjkyLi4yMzBlN2QzNzI3NTczZTRhMjE3MWNjNjVlYzBiZmE2OTRmN2Y2NDE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAg
LTUyLDYgKzUyLDcgQEAgY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyIDogcHVibGljIFJlZkNvdW50
ZWQ8Tm90aWZpY2F0aW9uQ2VudGVyPiwgcHVibGljIEFjdGl2ZUQKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgTm90aWZpY2F0aW9uUHJlc2VudGVyKik7CiAKKyNpZiBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCiAgICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZUhUTUxOb3Rp
ZmljYXRpb24oY29uc3QgU3RyaW5nJiBVUkksIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsKICAg
ICAgICAgaWYgKCFwcmVzZW50ZXIoKSkgewpAQCAtNjQsNyArNjUsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+Y29tcGxldGVVUkwoVVJJKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBl
YywgdGhpcyk7CiAgICAgfQorI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElP
TlMpCiAgICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZU5vdGlmaWNhdGlvbihjb25z
dCBTdHJpbmcmIGljb25VUkksIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9k
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgewogICAgICAgICBpZiAoIXByZXNlbnRlcigpKSB7
CkBAIC03NCw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgTm90aWZpY2F0aW9uQ29udGVudHMg
Y29udGVudHMoaWNvblVSSS5pc0VtcHR5KCkgPyBLVVJMKCkgOiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmNvbXBsZXRlVVJMKGljb25VUkkpLCB0aXRsZSwgYm9keSk7CiAgICAgICAgIHJldHVy
biBOb3RpZmljYXRpb246OmNyZWF0ZShjb250ZW50cywgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBlYywgdGhpcyk7CiAgICAgfQorI2VuZGlmCiAKICAgICBOb3RpZmljYXRpb25QcmVzZW50ZXIq
IHByZXNlbnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUHJlc2VudGVyOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2Vu
dGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVy
LmlkbAppbmRleCA4YmUxZWNjNzY5ZmJjNWE0MzdiNzY0ZTk2YTA3ZTQ3NTE3MGEzNTY2Li4zZTEz
MjA0NzU1NTc4NGI0ZTc0OTAzMDNlNTJkYWM3N2M3ZTBjYmM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNiwxMCAr
MzYsMTIgQEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICBBY3RpdmVET01PYmplY3QsCiAgICAg
ICAgIE9taXRDb25zdHJ1Y3RvcgogICAgIF0gTm90aWZpY2F0aW9uQ2VudGVyIHsKKyNpZiAhZGVm
aW5lZChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTl9ERVBSRUNBVElPTikgfHwgIUVOQUJMRV9M
RUdBQ1lfTk9USUZJQ0FUSU9OX0RFUFJFQ0FUSU9OCiAjaWYgIWRlZmluZWQoRU5BQkxFX1RFWFRf
Tk9USUZJQ0FUSU9OU19PTkxZKSB8fCAhRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZCiAg
ICAgICAgW1Y4Q3VzdG9tXSBOb3RpZmljYXRpb24gY3JlYXRlSFRNTE5vdGlmaWNhdGlvbihpbiBE
T01TdHJpbmcgdXJsKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbmRpZgogICAgICAgIFtWOEN1
c3RvbV0gTm90aWZpY2F0aW9uIGNyZWF0ZU5vdGlmaWNhdGlvbihpbiBET01TdHJpbmcgaWNvblVy
bCwgaW4gRE9NU3RyaW5nIHRpdGxlLCBpbiBET01TdHJpbmcgYm9keSkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CisjZW5kaWYKIAogICAgICAgIGludCBjaGVja1Blcm1pc3Npb24oKTsKICAgICAgICBb
Q3VzdG9tXSB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKGluIFZvaWRDYWxsYmFjayBjYWxsYmFjayk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggMTQwODZiZjIwZTllNDk3NmFhODgxMjNi
ODYwYzA3YjQ1OTNhNzlhZC4uYmIzMTc4NDYxMWI2YjYzZGFlNTRjMmUwN2JiN2NiNjRjODZkOWJj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTcy
LDYgKzE3Miw3IEBAIG1vZHVsZSB3aW5kb3cgewogCiAjaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJ
Q0FUSU9OUykgJiYgRU5BQkxFX05PVElGSUNBVElPTlMKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIE5vdGlmaWNhdGlvbkNlbnRlciB3ZWJraXROb3RpZmlj
YXRpb25zOworICAgICAgICBhdHRyaWJ1dGUgTm90aWZpY2F0aW9uQ29uc3RydWN0b3IgTm90aWZp
Y2F0aW9uOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMp
ICYmIEVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131443</attachid>
            <date>2012-03-12 16:29:33 -0700</date>
            <delta_ts>2012-04-18 03:09:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80477-20120312163053.patch</filename>
            <type>text/plain</type>
            <size>35086</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmIwODgwNmQ4MTU0N2Uz
ZmQzMDIwZjhiY2RmODFiOGJlM2FhNGUwNi4uNzU2NGQ2OGU3NjMzM2QzZDdlNmZkZTYxYzM0MDE2
Y2ZlZWMzZjJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTAzLTEyICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTm90aWZpY2F0aW9uIGNvbnN0
cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MDQ3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA5MTI0MzE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gZGlzY3Vzc2lvbiBpbiB0
aGUgV2ViIE5vdGlmaWNhdGlvbnMgV0c6CisgICAgICAgIGh0dHA6Ly9saXN0cy53My5vcmcvQXJj
aGl2ZXMvUHVibGljL3B1YmxpYy13ZWItbm90aWZpY2F0aW9uLzIwMTJNYXIvMDAwOC5odG1sCisK
KyAgICAgICAgRGVmaW5lIGEgbmV3IGNvbnN0cnVjdG9yOiBuZXcgTm90aWZpY2F0aW9uKHRpdGxl
LCBib2R5LCBvcHRpb25zKSwgd2hlcmUgb3B0aW9ucyBpcyBhIGRpY3Rpb25hcnkgdGhhdCBjYW4K
KyAgICAgICAgY29udGFpbiB0aGUgZm9sbG93aW5nIGtleXM6IGRpciwgcmVwbGFjZUlkLCBpY29u
VVJMLCBvbnNob3csIG9uY2xvc2UsIG9uZXJyb3IsIG9uY2xpY2suCisKKyAgICAgICAgKiBub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGw6IEFkZCBbQ3VzdG9tQ29uc3RydWN0b3JdIHRvIE5v
dGlmaWNhdGlvbi4gV3JhcCBtb3N0IGF0dHJpYnV0ZXMgd2l0aAorICAgICAgICBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpLiBLZWVwIHJlcGxhY2VJZCBleHBvc2VkIHNpbmNlIGEgc2NyaXB0
IG1pZ2h0IHdhbnQgdG8gc2VlIHRoYXQgdmFsdWUgYWZ0ZXIKKyAgICAgICAgdGhlIG5vdGlmaWNh
dGlvbiBoYXMgYmVlbiBzaG93bi4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNlbnRlci5pZGw6IFdyYXAgbGVnYWN5IGNvbnN0cnVjdG9ycyB3aXRoIEVOQUJMRShMRUdBQ1lf
Tk9USUZJQ0FUSU9OUykuCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOiBBZGQgTm90aWZp
Y2F0aW9uIGFzIGEgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlv
bik6IFdyYXAgbGVnYWN5IGNvbnN0cnVjdG9ycyB3aXRoIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FU
SU9OUykuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNyZWF0ZSk6CisgICAgICAg
ICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDogV3JhcCBsZWdhY3kgY29uc3RydWN0b3Jz
LCBhbmQgZXZlbnQgbGlzdGVuZXIgYXR0cmlidXRlcyB3aXRoCisgICAgICAgIEVOQUJMRShMRUdB
Q1lfTk9USUZJQ0FUSU9OUykuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246Omljb25V
UkwpOiBTaG91bGQgYmUgYSBjb25zdCBmdW5jdGlvbi4KKyAgICAgICAgKiBub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNlbnRlci5oOiBXcmFwIGxlZ2FjeSBjb25zdHJ1Y3RvcnMgd2l0aCBFTkFC
TEUoTEVHQUNZX05PVElGSUNBVElPTlMpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNOb3Rp
ZmljYXRpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRyeUdldEFuZEFk
ZEV2ZW50TGlzdGVuZXIpOiBMb29rIGluIHRoZSBkaWN0aW9uYXJ5IGZvciB0aGUgcHJvcGVydHkg
bmFtZSwgYW5kIGlmIGZvdW5kLCBjcmVhdGUKKyAgICAgICAgYW4gZXZlbnQgbGlzdGVuZXIsIGFu
ZCBhZGQgaXQgdG8gdGhlIG5vdGlmaWNhdGlvbiBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpK
U05vdGlmaWNhdGlvbkNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU05vdGlmaWNhdGlvbik6IEZpcnN0
IHBhcnQsIHdoaWNoIGNoZWNrcyBmb3IgdGl0bGUgYW5kIGJvZHkKKyAgICAgICAgZWxlbWVudHMs
IGlzIGJhc2VkIG9uIGdlbmVyYXRlZCBKUy4gVGhlIHNlY29uZCBoYWxmIGdvZXMgdGhyb3VnaCB0
aGUgZW50aXJlcyBpbiB0aGUgb3B0aW9ucyBkaWN0aW9uYXJ5IGFuZAorICAgICAgICB1cGRhdGVz
IHRoZSBub3RpZmljYXRpb24gb2JqZWN0IGFjY29yZGluZ2x5LgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0QW5kQWRkRXZlbnRMaXN0ZW5lcik6IFNpbWlsYXIgaW1wbGVtZW50YXRpb24uCisg
ICAgICAgIChXZWJDb3JlOjpWOE5vdGlmaWNhdGlvbjo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisK
KyAgICAgICAgKiBUYXJnZXQucHJpOiBBZGQgVjhOb3RpZmljYXRpb25DdXN0b20uY3BwIGFuZCBK
U05vdGlmaWNhdGlvbkN1c3RvbS5jcHAuCisgICAgICAgICogVXNlSlNDLmNtYWtlOiBBZGQgSlNO
b3RpZmljYXRpb25DdXN0b20uY3BwLgorICAgICAgICAqIFVzZVY4LmNtYWtlOiBBZGQgVjhOb3Rp
ZmljYXRpb25DdXN0b20uY3BwLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogQWRkIFY4Tm90aWZp
Y2F0aW9uQ3VzdG9tLmNwcCBhbmQgSlNOb3RpZmljYXRpb25DdXN0b20uY3BwLgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBBZGQgSlNOb3RpZmljYXRpb25DdXN0b20u
Y3BwLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIEpT
Tm90aWZpY2F0aW9uQ3VzdG9tLmNwcC4KKwogMjAxMi0wMy0xMiAgQnJpYW4gU2Fsb21vbiAgPGJz
YWxvbW9uQGdvb2dsZS5jb20+CiAKICAgICAgICAgW1NraWFdIFJlbGVhc2UgQ0dJbWFnZSB1c2Vk
IHRvIGFwcGx5IGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gdG8gU2tCaXRtYXAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmlu
ZGV4IDc0MzQzZjAxNWE5NmJiMzA4MTBiODJmN2M5ODU0ZWY4OWZhZWZlMDUuLjljNzk0Y2M0MzZh
MmE4ZjAxNTNlMjA0NGZmZDI5YmE1OWI1Zjc3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjMzLDYgKzIz
Myw3IEBAIHY4IHsKICAgICAgICAgXAogICAgICAgICBiaW5kaW5ncy92OC9zcGVjaWFsaXphdGlv
bi9WOEJpbmRpbmdTdGF0ZS5jcHBcCiAgICAgICAgIFwKKyAgICAgICAgYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Tm90aWZpY2F0aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9j
dXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAgXApAQCAtMzQxLDYgKzM0Miw3IEBAIHY4IHsK
ICAgICAgICAgYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pz
L0pTTm9kZUxpc3RDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNOb3RpZmljYXRp
b25DdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAg
XAogICAgICAgICBiaW5kaW5ncy9qcy9KU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkN1c3RvbS5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvVXNlSlNDLmNtYWtlCmluZGV4IDA5MDM4ZGQ2ODQ4NzdlMWY4MjAyMTkyNzVlNzgyZWIxMzA4
M2EyNjYuLjA5ZjIxMmU3YmE4MmI3ZWMzZmZhNWMxZDgxNjA4ODZiOWZhMThlOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VK
U0MuY21ha2UKQEAgLTEwOSw2ICsxMDksNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
ICAgICBiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMv
SlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3Rv
bS5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU05vdGlmaWNhdGlvbkN1c3RvbS5jcHAKICAgICBiaW5k
aW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCiAgICAgYmluZGluZ3MvanMvSlNQ
b3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uQ3VzdG9tLmNwcApAQCAtMjI4LDYgKzIyOSw3IEBAIEVORElGICgpCiBJRiAoRU5BQkxF
X05PVElGSUNBVElPTlMpCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwCisgICAgICAgIGJp
bmRpbmdzL2pzL0pTTm90aWZpY2F0aW9uQ3VzdG9tLmNwcAogICAgICkKIEVORElGICgpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNl
VjguY21ha2UKaW5kZXggYjhmNWZkMjY3ZWE1YTNlYjkyZDg5MTlkYTE0YWRkNTM0NmFmNzhlMC4u
MGFkNWY5MzM5ZDNmNjQ1ZjBiNjQ5MjEwYTZlZTNmNTM1M2E1MWE3MyAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UK
QEAgLTEzNyw2ICsxMzcsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5k
aW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5jcHAKICAgICBiaW5kaW5ncy92
OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVM
aXN0Q3VzdG9tLmNwcAorICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkN1c3Rv
bS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DZW50ZXJDdXN0b20u
Y3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVyZm9ybWFuY2VDdXN0b20uY3BwCiAgICAg
YmluZGluZ3MvdjgvY3VzdG9tL1Y4UG9wU3RhdGVFdmVudEN1c3RvbS5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCBiODE3MWVjNjg0NTRjN2NjYTI0YTMyMWZhM2U0YWNmZmRhMWM0MzIzLi41MWU0ZGVm
ZmZlYmMxOTFjMWRiMDUyNTY5M2ZjNjExMzdlNWI5MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0x
Nzc0LDYgKzE3NzQsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9y
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3Bw
JywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU05vdGlmaWNhdGlvbkN1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTUHJvY2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcCcs
CkBAIC0yMDgwLDYgKzIwODEsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OE5hbWVkTm9kZXNDb2xsZWN0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5vZGVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhO
b2RlTGlzdEN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5v
dGlmaWNhdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFBlcmZvcm1hbmNlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4UG9wU3RhdGVFdmVudEN1c3RvbS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAyMTZiZmY1YmVmNGJiMjVkZDU5YWU1
YmVmOWQ5NzJhNDlkYzE4YTNkLi5mNTcxNmU3Yzc4ZGQzNDM0N2M3MDE3ZjI1ZDViYzJlYmIyODI0
YTUxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpA
QCAtNjcyNzMsNiArNjcyNzMsNTggQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQk8
L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU05v
dGlmaWNhdGlvbkN1c3RvbS5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxX
aW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRv
b2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1
Z19BbGx8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJ
CQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFt
ZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJ
Lz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMu
Y3BwIgogCQkJCQk+CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJlOTA1OWViMzczZTkx
Yjk4NmViYzc5MTY0NTI0ZWYyNjM0OWYzODYuLjZiMGNiZTY5MzYyMzAyOGYxNWEyZWFiODIyMDg5
ZmU2NzZlYjg4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTg5OSw2ICs4OTksNyBAQAogCQkzMUMwRkY0QzBFNENFRkREMDA3
RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUMwRkY0NjBFNENFRkREMDA3RDZGRTUgLyogRE9N
V2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggKi87IH07CiAJCTMxQzBGRjREMEU0Q0VGREQwMDdENkZF
NSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUMwRkY0NzBFNENFRkREMDA3RDZGRTUgLyogRE9NV2Vi
S2l0VHJhbnNpdGlvbkV2ZW50Lm1tICovOyB9OwogCQkzMUMwRkY0RTBFNENFRkREMDA3RDZGRTUg
LyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzBGRjQ4MEU0Q0VGREQwMDdENkZFNSAvKiBE
T01XZWJLaXRUcmFuc2l0aW9uRXZlbnRJbnRlcm5hbC5oICovOyB9OworCQkzMUMyREM3NTE1MEU5
OEU4MDA3ODA3MEIgLyogSlNOb3RpZmljYXRpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDMkRDNzMxNTBFOThFODAwNzgwNzBCIC8q
IEpTTm90aWZpY2F0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMzFGQjFBNTcxMjBBNUQwNjAwREMw
MkEwIC8qIERldmljZU1vdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFGQjFBNEYxMjBBNUQwNjAwREMwMkEwIC8qIERldmljZU1vdGlv
bkNsaWVudC5oICovOyB9OwogCQkzMUZCMUE1ODEyMEE1RDA2MDBEQzAyQTAgLyogRGV2aWNlTW90
aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMUZCMUE1MDEyMEE1RDA2MDBEQzAyQTAgLyogRGV2aWNlTW90aW9uQ29udHJvbGxl
ci5jcHAgKi87IH07CiAJCTMxRkIxQTU5MTIwQTVEMDYwMERDMDJBMCAvKiBEZXZpY2VNb3Rpb25D
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMUZCMUE1MTEyMEE1RDA2MDBEQzAyQTAgLyogRGV2aWNlTW90aW9uQ29udHJvbGxlci5oICov
OyB9OwpAQCAtNzc1NCw2ICs3NzU1LDcgQEAKIAkJMzFDMEZGNDYwRTRDRUZERDAwN0Q2RkU1IC8q
IERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzFDMEZGNDcwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVdlYktpdFRy
YW5zaXRpb25FdmVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFDMEZGNDgw
RTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdlYktpdFRyYW5zaXRpb25FdmVudElu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQzJEQzczMTUwRTk4RTgw
MDc4MDcwQiAvKiBKU05vdGlmaWNhdGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU05vdGlmaWNhdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxRkIxQTRGMTIwQTVEMDYwMERDMDJBMCAvKiBEZXZpY2VNb3Rpb25D
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlTW90aW9uQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxRkIxQTUwMTIwQTVEMDYwMERD
MDJBMCAvKiBEZXZpY2VNb3Rpb25Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERldmljZU1vdGlvbkNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMUZCMUE1MTEyMEE1RDA2MDBEQzAyQTAgLyogRGV2aWNlTW90aW9u
Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VNb3Rp
b25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTY3Myw2ICsx
OTY3NSw3IEBACiAJCQkJQkNCNzczNjAwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckN1
c3RvbS5jcHAgKi8sCiAJCQkJMUE3NTBERDMwQTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJh
dG9yQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI2MTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2Rl
TGlzdEN1c3RvbS5jcHAgKi8sCisJCQkJMzFDMkRDNzMxNTBFOThFODAwNzgwNzBCIC8qIEpTTm90
aWZpY2F0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlBODVGMjIwODE0MzAzNzdEMDA3Q0M4ODQgLyog
SlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUFEMTJENTEyOTVEMEJEMDBBQ0E5
ODkgLyogSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwICovLAogCQkJCTQ5OThBRUQz
MTNGQzQxN0YwMDkwQjFBQSAvKiBKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrQ3VzdG9t
LmNwcCAqLywKQEAgLTI3NTQ0LDYgKzI3NTQ3LDcgQEAKIAkJCQk0NTBDRUJGMDE1MDczQkJFMDAy
QkIxNDkgLyogTGFiZWxhYmxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNUI0QzI0
RTE1MDkyMzZDMDBBNkVGMzcgLyogV2ViQ29yZU5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJOUIyQjdBQzExNTA5ODUwQTAwODkzMkNDIC8qIE1pY3JvRGF0YUl0ZW1WYWx1ZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkzMUMyREM3NTE1MEU5OEU4MDA3ODA3MEIgLyogSlNOb3RpZmlj
YXRpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vdGlmaWNhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05vdGlmaWNhdGlvbkN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmMzMzlhZTU0
NGM0MWFhZGU3MzM3YWZjYzJiZWNiZDcxNDNmMDQzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm90aWZpY2F0aW9uQ3VzdG9tLmNwcApAQCAtMCwwICsx
LDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCisjaW5jbHVkZSAiSlNOb3RpZmljYXRpb24uaCIKKworI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0RpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJKU0V2ZW50
TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJTY3JpcHRW
YWx1ZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgYm9vbCB0cnlHZXRBbmRBZGRFdmVu
dExpc3RlbmVyKEpTRGljdGlvbmFyeSYgZGljdGlvbmFyeSwgY29uc3QgY2hhciogcHJvcGVydHlO
YW1lLCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSwgRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
bGlzdGVuZXIsIE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIFNjcmlwdFZhbHVl
IGV2ZW50TGlzdGVuZXI7CisgICAgaWYgKCFkaWN0aW9uYXJ5LnRyeUdldFByb3BlcnR5KHByb3Bl
cnR5TmFtZSwgZXZlbnRMaXN0ZW5lcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
ZXZlbnRMaXN0ZW5lci5oYXNOb1ZhbHVlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAor
ICAgIG5vdGlmaWNhdGlvbi0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIEpTRXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGV2ZW50TGlzdGVuZXIuanNWYWx1ZSgpKSwgbGlzdGVuZXIs
IGZhbHNlLCBjdXJyZW50V29ybGQoZXhlYykpLCBmYWxzZSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNOb3RpZmljYXRpb25Db25zdHJ1Y3Rv
cjo6Y29uc3RydWN0SlNOb3RpZmljYXRpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTTm90
aWZpY2F0aW9uQ29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU05vdGlm
aWNhdGlvbkNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPCAyKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCAiTm90IGVub3VnaCBhcmd1bWVudHMiKSk7CisgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgY29uc3QgU3RyaW5nJiB0aXRsZSh1c3RyaW5nVG9TdHJpbmcoTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5
KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBjb25zdCBTdHJpbmcmIGJvZHkodXN0cmluZ1RvU3RyaW5nKE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8g
VVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5k
ZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGpzQ29uc3Ry
dWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywg
Ik5vdGlmaWNhdGlvbiBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxh
YmxlIikpOworICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IE5vdGlmaWNh
dGlvbjo6Y3JlYXRlKGNvbnRleHQsIHRpdGxlLCBib2R5LCBlYyk7CisgICAgaWYgKGVjKSB7Cisg
ICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICB9CisgICAgCisgICAgSlNWYWx1ZSBvcHRpb25zVmFs
dWUgPSBleGVjLT5hcmd1bWVudCgyKTsKKyAgICBKU09iamVjdCoganNOb3RpZmljYXRpb24gPSBh
c09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBub3RpZmlj
YXRpb24uZ2V0KCkpKTsKKyAgICBpZiAob3B0aW9uc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb3RpZmljYXRpb24pOworICAgIAor
ICAgIEpTRGljdGlvbmFyeSBkaWN0aW9uYXJ5KGV4ZWMsIG9wdGlvbnNWYWx1ZS50b09iamVjdChl
eGVjKSk7CisgICAgCisgICAgU3RyaW5nIGljb25VUkk7CisgICAgaWYgKCFkaWN0aW9uYXJ5LnRy
eUdldFByb3BlcnR5KCJpY29uVVJMIiwgaWNvblVSSSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgS1VSTCBpY29uVVJMID0gaWNvblVSSS5pc0Vt
cHR5KCkgPyBLVVJMKCkgOiBjb250ZXh0LT5jb21wbGV0ZVVSTChpY29uVVJJKTsKKyAgICBpZiAo
IWljb25VUkwuaXNFbXB0eSgpICYmICFpY29uVVJMLmlzVmFsaWQoKSkgeworICAgICAgICBzZXRE
T01FeGNlcHRpb24oZXhlYywgU1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZSgpKTsKKyAgICB9CisgICAgbm90aWZpY2F0aW9uLT5jb250ZW50cygpLmlj
b24gPSBpY29uVVJMOworICAgIAorICAgIFN0cmluZyBkaXI7CisgICAgaWYgKCFkaWN0aW9uYXJ5
LnRyeUdldFByb3BlcnR5KCJkaXIiLCBkaXIpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIG5vdGlmaWNhdGlvbi0+c2V0RGlyKGRpcik7CisgICAg
CisgICAgU3RyaW5nIHJlcGxhY2VJZDsKKyAgICBpZiAoIWRpY3Rpb25hcnkudHJ5R2V0UHJvcGVy
dHkoInJlcGxhY2VJZCIsIHJlcGxhY2VJZCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgbm90aWZpY2F0aW9uLT5zZXRSZXBsYWNlSWQocmVwbGFj
ZUlkKTsKKyAgICAKKyAgICBpZiAoIXRyeUdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZGljdGlvbmFy
eSwgIm9uc2hvdyIsIGV2ZW50TmFtZXMoKS5zaG93RXZlbnQsIGV4ZWMsIGpzTm90aWZpY2F0aW9u
LCBub3RpZmljYXRpb24uZ2V0KCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIGlmICghdHJ5R2V0QW5kQWRkRXZlbnRMaXN0ZW5lcihkaWN0aW9u
YXJ5LCAib25jbGljayIsIGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBleGVjLCBqc05vdGlmaWNh
dGlvbiwgbm90aWZpY2F0aW9uLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICBpZiAoIXRyeUdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZGlj
dGlvbmFyeSwgIm9uY2xvc2UiLCBldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgZXhlYywganNOb3Rp
ZmljYXRpb24sIG5vdGlmaWNhdGlvbi5nZXQoKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgaWYgKCF0cnlHZXRBbmRBZGRFdmVudExpc3RlbmVy
KGRpY3Rpb25hcnksICJvbmVycm9yIiwgZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGV4ZWMsIGpz
Tm90aWZpY2F0aW9uLCBub3RpZmljYXRpb24uZ2V0KCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIAorICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgbm90
aWZpY2F0aW9uLmdldCgpKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DdXN0b20uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlMDQ2MGM2MWJmY2YyM2Q1ZTNhNTJkZWViMmMwMDM0MGUxNWY5OGIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DdXN0
b20uY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisjaW5jbHVkZSAiVjhOb3RpZmljYXRpb24uaCIK
KworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNp
bmNsdWRlICJWOEJpbmRpbmdNYWNyb3MuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordm9pZCBnZXRBbmRBZGRFdmVudExpc3RlbmVyKE5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uLCB2ODo6TG9jYWw8djg6Ok9iamVjdD4mIG9iamVjdCwgY29uc3QgY2hh
ciogcHJvcGVydHksIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4mIGhvbGRlcikKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGV2ZW50UHJv
cGVydHkgPSB2ODo6U3RyaW5nOjpOZXcocHJvcGVydHkpOworICAgIGlmICghb2JqZWN0LT5IYXMo
ZXZlbnRQcm9wZXJ0eSkpCisgICAgICAgIHJldHVybjsKKworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBsaXN0ZW5lciA9IG9iamVjdC0+R2V0KGV2ZW50UHJvcGVydHkpOworICAgIFJlZlB0cjxF
dmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3Rl
bmVyKGxpc3RlbmVyLCBmYWxzZSwgTGlzdGVuZXJGaW5kT3JDcmVhdGUpOworICAgIGlmICghZXZl
bnRMaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1wbC0+YWRkRXZlbnRMaXN0ZW5l
cihldmVudE5hbWUsIGV2ZW50TGlzdGVuZXIucmVsZWFzZSgpLCBmYWxzZSk7CisgICAgY3JlYXRl
SGlkZGVuRGVwZW5kZW5jeShob2xkZXIsIGxpc3RlbmVyLCBWOE5vdGlmaWNhdGlvbjo6ZXZlbnRM
aXN0ZW5lckNhY2hlSW5kZXgpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb3RpZmlj
YXRpb246OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sK
KyAgICBJTkNfU1RBVFMoIkRPTS5Ob3RpZmljYXRpb24uQ29uc3RydWN0b3IiKTsKKworICAgIGlm
ICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRP
TSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIFY4
UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICBpZiAoQ29uc3RydWN0b3JNb2RlOjpjdXJyZW50KCkg
PT0gQ29uc3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdPYmplY3QpCisgICAgICByZXR1cm4gYXJn
cy5Ib2xkZXIoKTsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCisgICAgICByZXR1cm4gdGhy
b3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiLCBWOFByb3h5OjpUeXBlRXJyb3IpOworCisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQ
VElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCB0aXRsZSwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIo
YXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVS
X0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBib2R5LCBNQVlCRV9NSVNTSU5HX1BBUkFN
RVRFUihhcmdzLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKKworICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYg
KCFjb250ZXh0KQorICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdGlmaWNhdGlvbiBjb25zdHJ1
Y3RvcidzIGFzc29jaWF0ZWQgY29udGV4dCBpcyBub3QgYXZhaWxhYmxlIiwgVjhQcm94eTo6UmVm
ZXJlbmNlRXJyb3IpOworCisgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gaW1wbCA9IE5vdGlmaWNh
dGlvbjo6Y3JlYXRlKGNvbnRleHQsIHRpdGxlLCBib2R5LCBlYyk7CisgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKKyAgICBpZiAoZWMpCisgICAgICBn
b3RvIGZhaWw7CisKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwgJmlu
Zm8sIGltcGwuZ2V0KCkpOworICAgIGltcGwtPnJlZigpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0
SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KGltcGwuZ2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+OjpOZXcod3JhcHBlcikpOworCisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZGlj
dGlvbmFyeVZhbHVlID0gYXJnc1syXTsKKyAgICBpZiAoaXNVbmRlZmluZWRPck51bGwoZGljdGlv
bmFyeVZhbHVlKSkKKyAgICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworCisgICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IG9iamVjdCA9IGRpY3Rpb25hcnlWYWx1ZS0+VG9PYmplY3QoKTsKKworICAg
IHY4OjpIYW5kbGU8djg6OlN0cmluZz4gaWNvblVSTFByb3BlcnR5ID0gdjg6OlN0cmluZzo6TmV3
KCJpY29uVVJMIik7CisgICAgaWYgKG9iamVjdC0+SGFzKGljb25VUkxQcm9wZXJ0eSkpIHsKKyAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBpY29uVVJJID0gb2JqZWN0LT5HZXQoaWNvblVS
TFByb3BlcnR5KS0+VG9TdHJpbmcoKTsKKyAgICAgICAgS1VSTCBpY29uVVJMID0gaWNvblVSSS5J
c0VtcHR5KCkgPyBLVVJMKCkgOiBjb250ZXh0LT5jb21wbGV0ZVVSTCh0b1dlYkNvcmVTdHJpbmco
aWNvblVSSSkpOworICAgICAgICBpZiAoIWljb25VUkwuaXNFbXB0eSgpICYmICFpY29uVVJMLmlz
VmFsaWQoKSkgeworICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgZ290
byBmYWlsOworICAgICAgICB9CisgICAgICAgIGltcGwtPmNvbnRlbnRzKCkuaWNvbiA9IGljb25V
Ukw7CisgICAgfQorCisgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBkaXIgPSB2ODo6U3RyaW5n
OjpOZXcoImRpciIpOworICAgIGlmIChvYmplY3QtPkhhcyhkaXIpKQorICAgICAgICBpbXBsLT5z
ZXREaXIodG9XZWJDb3JlU3RyaW5nKG9iamVjdC0+R2V0KGRpciktPlRvU3RyaW5nKCkpKTsKKwor
ICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gcmVwbGFjZUlkID0gdjg6OlN0cmluZzo6TmV3KCJy
ZXBsYWNlSWQiKTsKKyAgICBpZiAob2JqZWN0LT5IYXMocmVwbGFjZUlkKSkKKyAgICAgICAgaW1w
bC0+c2V0UmVwbGFjZUlkKHRvV2ViQ29yZVN0cmluZyhvYmplY3QtPkdldChyZXBsYWNlSWQpLT5U
b1N0cmluZygpKSk7CisKKyAgICBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGltcGwuZ2V0KCksIG9i
amVjdCwgIm9uc2hvdyIsIGV2ZW50TmFtZXMoKS5zaG93RXZlbnQsIGFyZ3MuSG9sZGVyKCkpOwor
ICAgIGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoaW1wbC5nZXQoKSwgb2JqZWN0LCAib25jbGljayIs
IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBhcmdzLkhvbGRlcigpKTsKKyAgICBnZXRBbmRBZGRF
dmVudExpc3RlbmVyKGltcGwuZ2V0KCksIG9iamVjdCwgIm9uY2xvc2UiLCBldmVudE5hbWVzKCku
Y2xvc2VFdmVudCwgYXJncy5Ib2xkZXIoKSk7CisgICAgZ2V0QW5kQWRkRXZlbnRMaXN0ZW5lcihp
bXBsLmdldCgpLCBvYmplY3QsICJvbmVycm9yIiwgZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGFy
Z3MuSG9sZGVyKCkpOworCisgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CitmYWlsOgorICAgIHJl
dHVybiB0aHJvd0Vycm9yKGVjKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggNWRlMGU1MjdjNmEzMzM4NjU1ODE1OGFlNDg5NDUz
YmQwYTViZjlkNi4uMTE0YzFmYjgxNTFiMDFjOWEwN2Y0ZDE3MDY1MmJmMTIxMThkODA5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAKKyNp
bmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVy
cm9yRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCkBAIC01Myw2ICs1NCw3IEBAIE5v
dGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKCkKIHsKIH0KIAorI2lmIEVOQUJMRShMRUdBQ1lfTk9U
SUZJQ0FUSU9OUykKIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IEtVUkwmIHVybCwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIFBhc3NS
ZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcikKICAgICA6IEFjdGl2ZURPTU9iamVj
dChjb250ZXh0LCB0aGlzKQogICAgICwgbV9pc0hUTUwodHJ1ZSkKQEAgLTcyLDcgKzc0LDkgQEAg
Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBFeGMKIAogICAgIG1fbm90aWZpY2F0aW9uVVJMID0gdXJsOwog
fQorI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiBOb3RpZmljYXRp
b246Ok5vdGlmaWNhdGlvbihjb25zdCBOb3RpZmljYXRpb25Db250ZW50cyYgY29udGVudHMsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVm
UHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpCiAgICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCwgdGhpcykKICAgICAsIG1faXNIVE1MKGZhbHNlKQpAQCAtOTEsNiArOTUsMjggQEAg
Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgTm90aWZpY2F0aW9uQ29udGVudHMmIGNv
bnRlbnRzLCBTY3JpcHRFeGVjdXRpb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KKyNlbmRp
ZgorCitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBOb3RpZmljYXRpb25Db250ZW50
cyYgY29udGVudHMsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX2lz
SFRNTChmYWxzZSkKKyAgICAsIG1fY29udGVudHMoY29udGVudHMpCisgICAgLCBtX3N0YXRlKElk
bGUpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgbV9ub3RpZmlj
YXRpb25DZW50ZXIgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5kb21XaW5kb3co
KS0+d2Via2l0Tm90aWZpY2F0aW9ucygpOworCisgICAgQVNTRVJUKG1fbm90aWZpY2F0aW9uQ2Vu
dGVyLT5jbGllbnQoKSk7CisgICAgaWYgKG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKS0+
Y2hlY2tQZXJtaXNzaW9uKGNvbnRleHQpICE9IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lv
bkFsbG93ZWQpIHsKKyAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgaWYgKCFjb250ZW50cy5pY29uLmlzRW1wdHkoKSAmJiAhY29udGVu
dHMuaWNvbi5pc1ZhbGlkKCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBy
ZXR1cm47CisgICAgfQorfQogCiBOb3RpZmljYXRpb246On5Ob3RpZmljYXRpb24oKSAKIHsKQEAg
LTEwMCwxOSArMTI2LDMxIEBAIE5vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlvbigpCiAgICAgfQog
fQogCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogUGFzc1JlZlB0cjxOb3RpZmlj
YXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZp
Y2F0aW9uQ2VudGVyPiBwcm92aWRlcikgCiB7IAogICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5v
dGlmaWNhdGlvbihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKHVybCwgY29udGV4dCwgZWMsIHBy
b3ZpZGVyKSkpOwogICAgIG5vdGlmaWNhdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0
dXJuIG5vdGlmaWNhdGlvbi5yZWxlYXNlKCk7CiB9CisjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdB
Q1lfTk9USUZJQ0FUSU9OUykKIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246
OmNyZWF0ZShjb25zdCBOb3RpZmljYXRpb25Db250ZW50cyYgY29udGVudHMsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlm
aWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpIAogeyAKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBu
b3RpZmljYXRpb24oYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbihjb250ZW50cywgY29udGV4dCwg
ZWMsIHByb3ZpZGVyKSkpOwogICAgIG5vdGlmaWNhdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CiAg
ICAgcmV0dXJuIG5vdGlmaWNhdGlvbi5yZWxlYXNlKCk7CiB9CisjZW5kaWYKKworUGFzc1JlZlB0
cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgTm90aWZpY2F0aW9uQ29udGVudHMgY29udGVudHMoS1VS
TCgpLCB0aXRsZSwgYm9keSk7CisgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9u
KGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24oY29udGVudHMsIGNvbnRleHQsIGVjKSkpOworICAg
IG5vdGlmaWNhdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIG5vdGlmaWNhdGlv
bi5yZWxlYXNlKCk7Cit9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTm90aWZpY2F0aW9uOjppbnRl
cmZhY2VOYW1lKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oCmluZGV4IGRkMGQ2ZWQ4NGFkMzA3OWQ4OGJhMDJhMDJiY2FjYzZhNjQ1Y2IzOWQu
LmU4NzhjMzBjMWQ1NjExMDhmZDE5NWQ1MmFkZDk2ZmU2ODhiMjVmYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNjEsOCAr
NjEsMTEgQEAgY2xhc3MgTm90aWZpY2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0
aW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHUKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBOb3RpZmljYXRpb24oKTsKKyNpZiBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUo
Y29uc3QgS1VSTCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwgUGFz
c1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKTsKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBOb3RpZmljYXRpb25Db250ZW50cyYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmlj
YXRpb25DZW50ZXI+IHByb3ZpZGVyKTsKKyNlbmRpZgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5v
dGlmaWNhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAKICAgICB2
aXJ0dWFsIH5Ob3RpZmljYXRpb24oKTsKIApAQCAtNzUsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAg
S1VSTCB1cmwoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlvblVSTDsgfQogICAgIHZvaWQg
c2V0VVJMKEtVUkwgdXJsKSB7IG1fbm90aWZpY2F0aW9uVVJMID0gdXJsOyB9CiAgICAgCi0gICAg
S1VSTCBpY29uVVJMKCkgeyByZXR1cm4gbV9jb250ZW50cy5pY29uOyB9CisgICAgS1VSTCBpY29u
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50cy5pY29uOyB9CiAgICAgCiAgICAgY29uc3Qg
Tm90aWZpY2F0aW9uQ29udGVudHMmIGNvbnRlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
czsgfQogICAgIE5vdGlmaWNhdGlvbkNvbnRlbnRzJiBjb250ZW50cygpIHsgcmV0dXJuIG1fY29u
dGVudHM7IH0KQEAgLTg4LDYgKzkxLDcgQEAgcHVibGljOgogCiAgICAgVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBkaXIoKSA9PSAicnRsIiA/IFJUTCA6IExUUjsgfQog
CisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIoc2hvdyk7CiAgICAgLy8gRklYTUU6IFRoZSBsYXRlc3QgV2ViIE5vdGlm
aWNhdGlvbnMgc3RhbmRhcmQgdXNlcyB0aGUgb25zaG93IGV2ZW50IGxpc3RlbmVyLgogICAgIC8v
IFRoZSBvbmRpc3BsYXkgZXZlbnQgbGlzdGVuZXIgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBpbXBs
ZW1lbnRhdGlvbnMgY2hhbmdlIHRoZSBldmVudCBsaXN0ZW5lciB0byBvbnNob3cuCkBAIC05NSw2
ICs5OSw3IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVy
cm9yKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsb3NlKTsKICAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsaWNrKTsKKyNlbmRpZgogICAgIAogICAg
IHZvaWQgZGlzcGF0Y2hDbGlja0V2ZW50KCk7CiAgICAgdm9pZCBkaXNwYXRjaENsb3NlRXZlbnQo
KTsKQEAgLTEyNiw4ICsxMzEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
UmVkaXJlY3RDaGVjaygpOwogCiBwcml2YXRlOgorI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FU
SU9OUykKICAgICBOb3RpZmljYXRpb24oY29uc3QgS1VSTCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+KTsKICAg
ICBOb3RpZmljYXRpb24oY29uc3QgTm90aWZpY2F0aW9uQ29udGVudHMmLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVy
Pik7CisjZW5kaWYKKyAgICBOb3RpZmljYXRpb24oY29uc3QgTm90aWZpY2F0aW9uQ29udGVudHMm
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgLy8gRXZl
bnRUYXJnZXQgaW50ZXJmYWNlCiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyBy
ZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRs
CmluZGV4IGQ4Y2IzY2MzOWEyNWU3MTc0M2U5Zjc1ZTllOGNmNGMxODBlMjIxNjguLjIyNDVhZGUy
MWU4NzkyOTc5YmMwMzUyZjk1OTk1MzQzMGYyZTY3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM1LDExICszNSwxNCBAQCBtb2R1bGUg
dGhyZWFkcyB7CiAgICAgICAgIENvbmRpdGlvbmFsPU5PVElGSUNBVElPTlMsCiAgICAgICAgIEFj
dGl2ZURPTU9iamVjdCwKICAgICAgICAgRXZlbnRUYXJnZXQsCi0gICAgICAgIE9taXRDb25zdHJ1
Y3RvcgorICAgICAgICBDdXN0b21Db25zdHJ1Y3RvciwKKyAgICAgICAgQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwKKyAgICAgICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24KICAg
ICBdIE5vdGlmaWNhdGlvbiB7CiAgICAgICAgIHZvaWQgc2hvdygpOwogICAgICAgICB2b2lkIGNh
bmNlbCgpOwogCisjaWYgZGVmaW5lZChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICYmIEVO
QUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUwogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbnNob3c7CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgbGF0ZXN0IFdlYiBOb3RpZmljYXRpb25z
IHN0YW5kYXJkIHVzZXMgdGhlIG9uc2hvdyBldmVudCBsaXN0ZW5lci4KICAgICAgICAgLy8gVGhl
IG9uZGlzcGxheSBldmVudCBsaXN0ZW5lciBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIGltcGxlbWVu
dGF0aW9ucyBjaGFuZ2UgdGhlIGV2ZW50IGxpc3RlbmVyIHRvIG9uc2hvdy4KQEAgLTQ5LDYgKzUy
LDcgQEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBv
bmNsaWNrOwogCiAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgZGlyOworI2VuZGlmCiAgICAg
ICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgcmVwbGFjZUlkOwogCiAgICAgICAgIC8vIEV2ZW50VGFy
Z2V0IGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25DZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ2VudGVyLmgKaW5kZXggMmNjY2MwZGZjYzZhNmI3YTYxZGMyOTI0YWRiNzU5YWE4YWNk
ZjU5NS4uZGY5NWFhZTI3MDc1N2ZiOGY0ZGMxYjI4Yzg4NmY0MmU2N2RiNTc0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC01
Miw2ICs1Miw3IEBAIGNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlciA6IHB1YmxpYyBSZWZDb3VudGVk
PE5vdGlmaWNhdGlvbkNlbnRlcj4sIHB1YmxpYyBBY3RpdmVECiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIE5vdGlmaWNhdGlvbkNsaWVudCopOwogCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQogICAgIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVIVE1MTm90aWZpY2F0
aW9uKGNvbnN0IFN0cmluZyYgVVJJLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB7CiAgICAgICAg
IGlmICghY2xpZW50KCkpIHsKQEAgLTY0LDcgKzY1LDkgQEAgcHVibGljOgogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmNvbXBsZXRlVVJMKFVSSSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZWMsIHRoaXMp
OwogICAgIH0KKyNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAg
IFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVOb3RpZmljYXRpb24oY29uc3QgU3RyaW5n
JiBpY29uVVJJLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgIHsKICAgICAgICAgaWYgKCFjbGllbnQoKSkgewpAQCAtNzQsNiAr
NzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIE5vdGlmaWNhdGlvbkNvbnRlbnRzIGNvbnRlbnRzKGlj
b25VUkkuaXNFbXB0eSgpID8gS1VSTCgpIDogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21w
bGV0ZVVSTChpY29uVVJJKSwgdGl0bGUsIGJvZHkpOwogICAgICAgICByZXR1cm4gTm90aWZpY2F0
aW9uOjpjcmVhdGUoY29udGVudHMsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZWMsIHRoaXMp
OwogICAgIH0KKyNlbmRpZgogCiAgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQoKSBjb25z
dCB7IHJldHVybiBtX2NsaWVudDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwKaW5kZXggOGJlMWVjYzc2OWZiYzVhNDM3Yjc2
NGU5NmEwN2U0NzUxNzBhMzU2Ni4uYTI2ZWUzNDM5ZmE2NTJmYjcxZmM1NTE3NzZhN2JmYmY5NjUz
NDk5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25DZW50ZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ2VudGVyLmlkbApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQpAQCAtMzYsMTAgKzM2LDEyIEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICAg
ICAgQWN0aXZlRE9NT2JqZWN0LAogICAgICAgICBPbWl0Q29uc3RydWN0b3IKICAgICBdIE5vdGlm
aWNhdGlvbkNlbnRlciB7CisjaWYgZGVmaW5lZChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMp
ICYmIEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUwogI2lmICFkZWZpbmVkKEVOQUJMRV9URVhU
X05PVElGSUNBVElPTlNfT05MWSkgfHwgIUVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWQog
ICAgICAgIFtWOEN1c3RvbV0gTm90aWZpY2F0aW9uIGNyZWF0ZUhUTUxOb3RpZmljYXRpb24oaW4g
RE9NU3RyaW5nIHVybCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKICAgICAgICBbVjhD
dXN0b21dIE5vdGlmaWNhdGlvbiBjcmVhdGVOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIGljb25V
cmwsIGluIERPTVN0cmluZyB0aXRsZSwgaW4gRE9NU3RyaW5nIGJvZHkpIHJhaXNlcyhET01FeGNl
cHRpb24pOworI2VuZGlmCiAKICAgICAgICBpbnQgY2hlY2tQZXJtaXNzaW9uKCk7CiAgICAgICAg
W0N1c3RvbV0gdm9pZCByZXF1ZXN0UGVybWlzc2lvbihpbiBWb2lkQ2FsbGJhY2sgY2FsbGJhY2sp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDE0MDg2YmYyMGU5ZTQ5NzZhYTg4MTIz
Yjg2MGMwN2I0NTkzYTc5YWQuLmJiMzE3ODQ2MTFiNmI2M2RhZTU0YzJlMDdiYjdjYjY0Yzg2ZDli
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTE3
Miw2ICsxNzIsNyBAQCBtb2R1bGUgd2luZG93IHsKIAogI2lmIGRlZmluZWQoRU5BQkxFX05PVElG
SUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBOb3RpZmljYXRpb25DZW50ZXIgd2Via2l0Tm90aWZp
Y2F0aW9uczsKKyAgICAgICAgYXR0cmlidXRlIE5vdGlmaWNhdGlvbkNvbnN0cnVjdG9yIE5vdGlm
aWNhdGlvbjsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRT
KSAmJiBFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137664</attachid>
            <date>2012-04-18 03:09:21 -0700</date>
            <delta_ts>2012-04-18 10:20:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80477-20120418031131.patch</filename>
            <type>text/plain</type>
            <size>27798</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDM1M2ExYWVhMzU2Y2Y5
OTlhNzY4YjRmMzYzN2YzMjVjNjZiN2E2OS4uNWE0MDhlZDY0ZGVhNzcxZGFmOGFmNjlmMzg3Mjc2
MWY2MWU3Y2U2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEyLTA0LTE4ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTm90aWZpY2F0aW9uIGNvbnN0
cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MDQ3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA5MTI0MzE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgd2lsbCBiZSBhZGRlZCBvbmNl
IHRoZXJlIGlzIHN1cHBvcnQgZm9yIHdlYiBub3RpZmljYXRpb25zIG9uIHRoZSBNYWMgcG9ydHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IGZpbmFsaXplKCkgZnVuY3Rpb24u
CisKKyAgICAgICAgTW9kaWZ5IERpY3Rpb25hcnkgdG8gc3VwcG9ydCBjcmVhdGlvbiBvZiBldmVu
dCBsaXN0ZW5lcnMuCisgICAgICAgICogYmluZGluZ3MvanMvRGljdGlvbmFyeS5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6aXNPYmplY3QpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgSlNE
aWN0aW9uYXJ5IGlzIHZhbGlkLgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6aXNVbmRl
ZmluZWRPck51bGwpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgSlNEaWN0aW9uYXJ5IGlzIHZhbGlkLgor
ICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0KTogQWRkIGNvbnZlbmllbmNlIGZ1bmN0
aW9uIHRvIHRha2UgY29uc3QgY2hhciogZm9yCisgICAgICAgIHByb3BlcnR5IG5hbWUsIHRvIHBy
ZXZlbnQgaGF2aW5nIHRvIGRvIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gV1RGOjpTdHJpbmcuCisg
ICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRFdmVudExpc3RlbmVyKTogQWRkIGZ1bmN0
aW9uIHRvIGNyZWF0ZSBldmVudCBsaXN0ZW5lcgorICAgICAgICBmcm9tIHRoZSBkaWN0aW9uYXJ5
LgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6YXNKU09iamVjdCk6IEhlbHBlciB0byBj
b252ZXJ0IFdlYkNvcmUgb2JqZWN0cyB0byBKUyB3cmFwcGVyLgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKTogSW1w
bGVtZW50IGFzSlNPYmplY3QoKSBmb3IgTm90aWZpY2F0aW9uLgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRGljdGlvbmFyeS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5OjpleGVj
U3RhdGUpOiBFeHBvc2UgdGhlIGV4ZWMgc3RhdGUgc28gdGhhdCB0aGUgRGljdGlvbmFyeQorICAg
ICAgICBjYW4gb2J0YWluIGl0cyB3b3JsZCBmb3IgY3JlYXRpbmcgdGhlIGV2ZW50IGxpc3RlbmVy
LgorCisgICAgICAgIEFkZCBuZXcgY29uc3RydWN0b3IgdG8gaWRsIGRlZmluaXRpb25zLgorICAg
ICAgICAqIG5vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGw6IEFkZCBOb3Rp
ZmljYXRpb24gY29uc3RydWN0b3IuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uaWRsOiBJZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgaXMgdHVybmVkIG9uLCBkZWZpbmUKKyAg
ICAgICAgdGhlIGNvbnN0cnVjdG9yLiBPdGhlcndpc2UsIHVzZSBPbWl0Q29uc3RydWN0b3IuCisg
ICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsOiBXcmFwIGNyZWF0
aW9uIGZ1bmN0aW9ucyBpbgorICAgICAgICBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpLgor
ICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmg6IERpdHRvLgorICAg
ICAgICAoTm90aWZpY2F0aW9uQ2VudGVyKToKKworICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmg6CisgICAgICAgIChOb3RpZmljYXRpb24pOiBXcmFwIGxlZ2FjeSBjb25zdHJ1
Y3RvcnMgaW4gRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKS4KKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbjo6Y3JlYXRlKTogTmV3IGNyZWF0aW9uIGZ1bmN0aW9uIGJhc2VkIG9uIGRp
c2N1c3Npb25zIGluIFdHLgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEFuZEFkZEV2ZW50TGlzdGVuZXIpOiBIZWxwZXIgZnVu
Y3Rpb24gdG8gZ2V0IHRoZSBsaXN0ZW5lciBmcm9tIHRoZQorICAgICAgICBkaWN0aW9uYXJ5LCBh
bmQgYXR0YWNoIHRvIHRlaCBub3RpZmljYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb246OmNyZWF0ZSk6IENyZWF0ZSB0aGUgbm90aWZpY2F0aW9uLCB0aGVuIGFwcGx5IHdoYXRl
dmVyCisgICAgICAgIHByb3BlcnRpZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBkaWN0aW9uYXJ5IHRv
IHRoZSBub3RpZmljYXRpb24uIEluIG9yZGVyIHRvCisgICAgICAgIGF0dGFjaCB0aGUgZXZlbnQg
bGlzdGVuZXJzLCB0aGUgbm90aWZpY2F0aW9uIGhhcyB0byBoYXZlIGJlZW4gY3JlYXRlZCwgd2hp
Y2ggaXMKKyAgICAgICAgd2h5IHRoaXMgYWxsIGhhcHBlbnMgaW4gdGhlIGZhY3RvcnkgbWV0aG9k
IGFuZCBub3QgaW4gdGhlIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uOjpzZXRCb2R5KTogQWRkZWQgc28gdGhhdCBpdCBjYW4gYmUgc2V0IGlmIHdlIGZpbmQgaXQg
aW4gdGhlCisgICAgICAgIGRpY3Rpb25hcnkuCisgICAgICAgIAorICAgICAgICBUaGUgbmV3IGNv
bnN0cnVjdG9yIHF1ZXVlcyBhIHRhc2sgdG8gc2hvdyB3aGVuIGl0IGlzIGNyZWF0ZWQuIFRvIHN1
cHBvcnQgdGhpcywgd2UKKyAgICAgICAgdXNlIGEgb25lLXNob3QgdGltZXIgdGhhdCBjYWxscyBz
aG93KCkgaW4gdGhlIG5leHQgaXRlcmF0aW9uIG9mIHRoZSBydW4gbG9vcC4KKyAgICAgICAgKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKTogU3RhcnQgdGhlIHRpbWVyLgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzaG93VGFza1RpbWVyRmlyZWQpOiBDYWxsIHNo
b3coKS4KKworICAgICAgICBOb3RpZmljYXRpb25zLCBub3QgYmVpbmcgYXR0YWNoZWQgdG8gdGhl
IERPTSwgY291bGQgYmUgR0MnZWQgYnkgdGhlIEpTIGVuZ2luZQorICAgICAgICBiZWZvcmUgaXRz
IGxpZmUgY3ljbGUgaGFzIGNvbXBsZXRlZC4gV2UgYWRkIGNhbGxzIHRvIHNldFBlbmRpbmdBY3Rp
dml0eSgpIHdoZW4gdGhlCisgICAgICAgIG5vdGlmaWNhdGlvbiBoYXMgYmVlbiBzaG93biwgYW5k
IHdoZW4gaXQgaXMgY2xvc2VkLCB3ZSB1bnNldFBlbmRpbmdBY3Rpdml0eSgpLgorICAgICAgICBU
byBndWFyYW50ZWUgdGhhdCB3ZSBvbmx5IGNhbGwgdGhpcyBvbmNlLCB3ZSBhZGQgYSBuZXcgc3Rh
dGUgdG8gdGhlIE5vdGlmaWNhdGlvbgorICAgICAgICBzdGF0ZSBtYWNoaW5lLCBjYWxsZWQgTm90
aWZpY2F0aW9uU3RhdGU6OkNsb3NlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6
Y2xvc2UpOiBJbmNsdWRlIENsb3NlZCBzdGF0ZSB0byBtYWNoaW5lOyBkbyBub3RoaW5nLgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQpOiBDYWxsIGZp
bmFsaXplKCkuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmZpbmFsaXplKTogSWYg
dGhlIHN0YXRlIGlzIG5vdCBDbG9zZWQsIHdlIHVuc2V0UGVuZGluZ0FjdGl2aXR5KCkKKyAgICAg
ICAgdG8gbWFrZSBpdCBhdmFpbGFibGUgZm9yIEdDLgorCisgICAgICAgIEluIE5vdGlmaWNhdGlv
biwgcmVuYW1lIHNvbWUgb2YgdGhlIHN0YWdlcyBhbmQgZnVuY3Rpb25zIHRvIG1vcmUgY2xlYXJs
eSBjb21tdW5pY2F0ZQorICAgICAgICB0aGF0IHRoZXkgbW9zdGx5IGRlYWwgd2l0aCB0aGUgaWNv
biBvZiB0aGUgbm90aWZpY2F0aW9uLCBpbnN0ZWFkIG9mIGdlbmVyYWwgbG9hZGluZy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2hvdyk6IFJlZmFjdG9yZWQgdG8gdXNlIExvYWRp
bmdJY29uIGFuZCBDYW5jZWxsZWRJY29uLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9u
OjpjbG9zZSk6IFJlZmFjdG9yZWQgdG8gdXNlIExvYWRpbmdJY29uIGFuZCBDYW5jZWxsZWRJY29u
LgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKTogUmVmYWN0
b3IgdG8gdXNlIExvYWRpbmdJY29uLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpz
dGFydExvYWRpbmdJY29uKTogUmVuYW1lZCBmcm9tIHN0YXJ0TG9hZGluZygpLgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzdG9wTG9hZGluZ0ljb24pOiBSZW5hbWVkIGZyb20gc3Rv
cExvYWRpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZmluaXNoTG9hZGluZyk6
CisKIDIwMTItMDQtMTYgIEdlb3JnZSBTdGFpa29zICA8c3RhaWtvc0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIEZpeCBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2ggd2FybmluZyBmb3IgQmxhY2tCZXJy
eSBkZWJ1ZyBidWlsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZjA5ZTk3OGY4MzIwMzIyNWYwOGQ0
MzRhMzFhNjA4MTNkNjMyMWJmMC4uNTljZDhhMThlODNmZmI0NzdmMWNlOTE4OTg4NDFiNWQ1Zjdm
NTE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA0LTE4ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTm90aWZpY2F0aW9uIGNvbnN0
cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MDQ3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA5MTI0MzE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJOb3Rp
ZmljYXRpb25DbGllbnQubW06CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNsZWFy
Tm90aWZpY2F0aW9ucyk6IFdoZW4gY2xlYXJpbmcgbm90aWZpY2F0aW9ucywgZmluYWxpemUKKyAg
ICAgICAgdGhlbSBzbyB0aGF0IHRoZXkgY2FuIGJlIGNsZWFuZWQgdXAgYnkgdGhlIEdDLgorCiAy
MDEyLTA0LTEyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OIChyMTAyMjYyKTogaUFkIFByb2R1Y2VyIHJlbGllcyBvbiBDU1NTdHlsZURlY2xhcmF0
aW9uIHByb3BlcnR5IHNldHRlcnMgcmVzcGVjdGluZyAnIWltcG9ydGFudCcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCA2NjJlNDZmNjMwZDU3Y2E2OWVhM2ExMmI5YzQ5M2M4OTAyNzVhZjExLi42NjFlZDBkM2Y1ZmQ3
N2FlYTUyNzBkNzM4YjMzNmFhMGRjNzQ1ZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTItMDQtMTggIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBO
b3RpZmljYXRpb24gY29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgwNDc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDkxMjQzMT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRpb25zKTogV2hl
biBjbGVhcmluZyBub3RpZmljYXRpb25zLAorICAgICAgICBmaW5hbGl6ZSB0aGVtIHNvIHRoYXQg
dGhleSBjYW4gYmUgY2xlYW5lZCB1cCBieSB0aGUgR0MuCisKIDIwMTItMDQtMTUgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVzZSBH
UmVmUHRyIHRvIGRlbGV0ZSB0aGUgZGVmYXVsdCB3ZWIgY29udGV4dCBpbiBXZWJLaXQyIEdUSysK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggN2I0NzQ0OThkN2RiZTA4YzUxZGFhNjhiMDczZjUwOTQ1
NjY2MDM2My4uYzBmZGI2ODMyZDc3NDg3MGY3ZWJmM2JlMjAyMzdjMDc4Y2FlNzQ2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTIxNTUsNiArMjE1NSw3IEBAIF93a0NyZWF0ZVZNUHJlc3N1cmVE
aXNwYXRjaE9uTWFpblF1ZXVlCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKIF9fWk43V2ViQ29yZTEyTm90aWZpY2F0aW9uQzFFdgogX19a
TjdXZWJDb3JlMTJOb3RpZmljYXRpb25EMUV2CitfX1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbjhm
aW5hbGl6ZUV2CiBfX1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbjE3ZGlzcGF0Y2hTaG93RXZlbnRF
dgogX19aTjdXZWJDb3JlMTJOb3RpZmljYXRpb24xOGRpc3BhdGNoQ2xpY2tFdmVudEV2CiBfX1pO
N1dlYkNvcmUxMk5vdGlmaWNhdGlvbjE4ZGlzcGF0Y2hDbG9zZUV2ZW50RXYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKaW5kZXggNzViZWYxNTQ5NjAyZmRkOTU5ZDc2
ZDg5ZGY0NzUyMTcwOWQyNGM5NS4uMmMxYjc4NWZlMGY4NWM4YWFhYzc2ODk5YTRkODBjOWI2YTA5
ZTkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKQEAgLTI2
LDYgKzI2LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5o
IgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisjaW5jbHVkZSAiSlNOb3RpZmljYXRpb24u
aCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNSwxNCArNDAsMTQgQEAgRGljdGlvbmFy
eTo6RGljdGlvbmFyeShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ewogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgotYm9vbCBEaWN0aW9uYXJ5OjpnZXQo
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFJlc3VsdCYgcmVzdWx0KSBjb25zdAorCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCit0ZW1wbGF0ZTw+CitKU09iamVjdCogRGljdGlvbmFyeTo6
YXNKU09iamVjdDxOb3RpZmljYXRpb24+KE5vdGlmaWNhdGlvbiogb2JqZWN0KSBjb25zdAogewot
ICAgIGlmICghbV9kaWN0aW9uYXJ5LmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIAotICAgIHJldHVybiBtX2RpY3Rpb25hcnkuZ2V0KHByb3BlcnR5TmFtZS5hc2NpaSgpLmRh
dGEoKSwgcmVzdWx0KTsKKyAgICByZXR1cm4gYXNPYmplY3QodG9KUyhtX2RpY3Rpb25hcnkuZXhl
Y1N0YXRlKCksIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZGljdGlvbmFyeS5leGVjU3Rh
dGUoKS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgb2JqZWN0KSk7CiB9CisjZW5kaWYKIAogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCmluZGV4IDkzYTQ4YjhhZTU3
NzE1NjRmMGY3YWZiM2QxN2U4MjVmMzhlNmQzZTYuLmE3NzczNDJiNzNjZTQ3MjM3MjExOTQ2YzEx
NTg1ZjNmMDBkMmQ5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Rp
Y3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgRGljdGlvbmFyeV9oCiAKICNpbmNsdWRlICJKU0Rp
Y3Rpb25hcnkuaCIKKyNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgpAQCAtNDYsMTYgKzQ3LDYyIEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiBhIHZhbHVlIHdhcyBmb3VuZCBmb3IgdGhlIHByb3ZpZGVkIHByb3BlcnR5Lgog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+CisgICAgYm9vbCBnZXQoY29uc3QgY2hhciog
cHJvcGVydHlOYW1lLCBSZXN1bHQmKSBjb25zdDsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVz
dWx0PgogICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBSZXN1bHQmKSBj
b25zdDsKKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBU
KiB0YXJnZXQpIGNvbnN0OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSwgVCogdGFyZ2V0KSBjb25zdDsKIAotICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IG5v
dEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNVbmRlZmluZWRPck51
bGwoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2RpY3Rpb25hcnkuaXNWYWxpZCgpOyB9CisgICAg
Ym9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGljdGlvbmFyeS5pc1Zh
bGlkKCk7IH0KICAgICBib29sIGdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJp
bmcmLCBTdHJpbmcmKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQog
CiBwcml2YXRlOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIEpTQzo6SlNPYmplY3Qq
IGFzSlNPYmplY3QoVCopIGNvbnN0OworICAgIAogICAgIEpTRGljdGlvbmFyeSBtX2RpY3Rpb25h
cnk7CiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgorYm9vbCBEaWN0aW9uYXJ5Ojpn
ZXQoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBSZXN1bHQmIHJlc3VsdCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fZGljdGlvbmFyeS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICByZXR1cm4gbV9kaWN0aW9uYXJ5LmdldChwcm9wZXJ0eU5hbWUsIHJlc3VsdCk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+Citib29sIERpY3Rpb25hcnk6OmdldChjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgUmVzdWx0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGdldChwcm9wZXJ0eU5hbWUudXRmOCgpLmRhdGEoKSwgcmVzdWx0KTsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IERpY3Rpb25hcnk6Omdl
dEV2ZW50TGlzdGVuZXIoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2RpY3Rpb25hcnkuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIFNjcmlwdFZhbHVlIGV2ZW50TGlzdGVuZXI7CisgICAgaWYgKCFtX2RpY3Rpb25hcnku
dHJ5R2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCBldmVudExpc3RlbmVyKSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgaWYgKGV2ZW50TGlzdGVuZXIuaGFzTm9WYWx1ZSgpKQorICAgICAgICByZXR1
cm4gMDsKKyAgICAKKyAgICByZXR1cm4gSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3Qo
ZXZlbnRMaXN0ZW5lci5qc1ZhbHVlKCkpLCBhc0pTT2JqZWN0KHRhcmdldCksIHRydWUsIGN1cnJl
bnRXb3JsZChtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCkpKTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50TGlz
dGVuZXIoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZ2V0RXZlbnRMaXN0ZW5lcihwcm9wZXJ0eU5hbWUudXRmOCgpLmRhdGEoKSwgdGFy
Z2V0KTsKK30KKwogfQogCiAjZW5kaWYgLy8gRGljdGlvbmFyeV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCmluZGV4IGU5ZDk5ZTFmYzAzZTkxYThkZWUwOTY4NjNi
ZTBmYzc4OWU1YTAzZDAuLjhmNjMzN2Q2ZTRhMzg0ZjhiNWRlMTcyOGU2MDU1NTkxZTQyMTE0ZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCkBAIC01OCw2ICs1
OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgogICAgIGJvb2wg
Z2V0KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgUmVzdWx0JikgY29uc3Q7CiAKKyAgICBKU0M6
OkV4ZWNTdGF0ZSogZXhlY1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9leGVjOyB9CiAgICAgYm9v
bCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9leGVjICYmIG1faW5pdGlhbGl6ZXJPYmplY3Q7
IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMv
RE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25z
L0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsCmluZGV4IDA1N2I2NjZiNmUzZDc0N2U1OTc0NDBj
NGYzZWJjOWYxNjdiZTMzZjkuLmQ4MjQxNjg5YWY0NDVkZjU4YWYwNGFkNjEzNDAwNTA0MDM3ZDE1
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90
aWZpY2F0aW9ucy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5k
b3dOb3RpZmljYXRpb25zLmlkbApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEsNiArMzEsNyBAQCBt
b2R1bGUgd2luZG93IHsKICAgICAgICAgU3VwcGxlbWVudGFsPURPTVdpbmRvdwogICAgIF0gRE9N
V2luZG93Tm90aWZpY2F0aW9ucyB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhFbmFi
bGVkQXRSdW50aW1lXSBOb3RpZmljYXRpb25DZW50ZXIgd2Via2l0Tm90aWZpY2F0aW9uczsKKyAg
ICAgICAgYXR0cmlidXRlIE5vdGlmaWNhdGlvbkNvbnN0cnVjdG9yIE5vdGlmaWNhdGlvbjsKICAg
ICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5j
cHAKaW5kZXggMjI0MWIzNjA3M2NiZDZkNmRkZjQ2MmFkM2E4ZWIxZTA5NTE2OTQ5Yi4uNWNjZjBj
ODQzZTI2NDVkZmY3MzE0ZTg4NDQ2ZTBlMGUwYWExYWEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtMzUsNiArMzUsOSBAQAogCiAjaW5j
bHVkZSAiTm90aWZpY2F0aW9uLmgiCiAKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRl
ICJET01XaW5kb3dOb3RpZmljYXRpb25zLmgiCisjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKQEAgLTUyLDYgKzU1LDcgQEAgTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24o
KQogewogfQogCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogTm90aWZpY2F0aW9u
OjpOb3RpZmljYXRpb24oY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+
IHByb3ZpZGVyKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBt
X2lzSFRNTCh0cnVlKQpAQCAtNzAsNyArNzQsOSBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlv
bihjb25zdCBLVVJMJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Ywog
CiAgICAgbV9ub3RpZmljYXRpb25VUkwgPSB1cmw7CiB9CisjZW5kaWYKIAorI2lmIEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1Jl
ZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKQogICAgIDogQWN0aXZlRE9NT2JqZWN0
KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2lzSFRNTChmYWxzZSkKQEAgLTkwLDE1ICs5NiwzMyBA
QCBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBT
dHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogfQorI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUp
CisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1faXNIVE1MKGZh
bHNlKQorICAgICwgbV90aXRsZSh0aXRsZSkKKyAgICAsIG1fc3RhdGUoSWRsZSkKKyAgICAsIG1f
c2hvd1Rhc2tUaW1lcihhZG9wdFB0cihuZXcgVGltZXI8Tm90aWZpY2F0aW9uPih0aGlzLCAmTm90
aWZpY2F0aW9uOjpzaG93VGFza1RpbWVyRmlyZWQpKSkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+
aXNEb2N1bWVudCgpKTsKKyAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IERPTVdpbmRvd05vdGlm
aWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnMoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250
ZXh0KS0+ZG9tV2luZG93KCkpOworICAgIAorICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbkNlbnRl
ci0+Y2xpZW50KCkpOworICAgIG1fc2hvd1Rhc2tUaW1lci0+c3RhcnRPbmVTaG90KDApOworfQor
I2VuZGlmCiAKIE5vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlvbigpIAogewotICAgIGlmIChtX3N0
YXRlID09IExvYWRpbmcpIHsKKyAgICBpZiAobV9zdGF0ZSA9PSBMb2FkaW5nSWNvbikgewogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2xvc2UoKTsKICAgICB9CiB9CiAK
KyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiBQYXNzUmVmUHRyPE5vdGlmaWNhdGlv
bj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRp
b25DZW50ZXI+IHByb3ZpZGVyKSAKIHsgCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZp
Y2F0aW9uKGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24odXJsLCBjb250ZXh0LCBlYywgcHJvdmlk
ZXIpKSk7CkBAIC0xMTIsNiArMTM2LDMzIEBAIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3Rp
ZmljYXRpb246OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmCiAgICAg
bm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gbm90aWZpY2F0aW9u
LnJlbGVhc2UoKTsKIH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitzdGF0
aWMgdm9pZCBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRO
YW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgTm90
aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyID0gb3B0aW9ucy5nZXRFdmVudExpc3RlbmVyKHByb3BlcnR5LCBub3RpZmljYXRpb24p
OworICAgIGlmIChsaXN0ZW5lcikKKyAgICAgICAgbm90aWZpY2F0aW9uLT5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZSwgbGlzdGVuZXIucmVsZWFzZSgpLCBmYWxzZSk7Cit9CisKK1Bhc3NSZWZQ
dHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRp
b25zKQoreworICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbihhZG9wdFJlZihu
ZXcgTm90aWZpY2F0aW9uKGNvbnRleHQsIHRpdGxlKSkpOworICAgIFN0cmluZyBhcmd1bWVudDsK
KyAgICBpZiAob3B0aW9ucy5nZXQoImJvZHkiLCBhcmd1bWVudCkpCisgICAgICAgIG5vdGlmaWNh
dGlvbi0+c2V0Qm9keShhcmd1bWVudCk7CisgICAgaWYgKG9wdGlvbnMuZ2V0KCJ0YWciLCBhcmd1
bWVudCkpCisgICAgICAgIG5vdGlmaWNhdGlvbi0+c2V0VGFnKGFyZ3VtZW50KTsKKyAgICBnZXRB
bmRBZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zaG93RXZlbnQsICJvbnNob3ciLCBvcHRp
b25zLCBub3RpZmljYXRpb24uZ2V0KCkpOworICAgIGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmNsb3NlRXZlbnQsICJvbmNsb3NlIiwgb3B0aW9ucywgbm90aWZpY2F0aW9uLmdl
dCgpKTsKKyAgICBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50
LCAib25lcnJvciIsIG9wdGlvbnMsIG5vdGlmaWNhdGlvbi5nZXQoKSk7CisgICAgZ2V0QW5kQWRk
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgIm9uY2xpY2siLCBvcHRpb25z
LCBub3RpZmljYXRpb24uZ2V0KCkpOworCisgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVk
ZWQoKTsKKyAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVhc2UoKTsKK30KKyNlbmRpZgogCiBj
b25zdCBBdG9taWNTdHJpbmcmIE5vdGlmaWNhdGlvbjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7
CkBAIC0xMzQsNiArMTg1LDcgQEAgdm9pZCBOb3RpZmljYXRpb246OnNob3coKQogI2VsaWYgUExB
VEZPUk0oTUFDKQogICAgIGlmIChtX3N0YXRlID09IElkbGUgJiYgbV9ub3RpZmljYXRpb25DZW50
ZXItPmNsaWVudCgpKSB7CiAgICAgICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKS0+
c2hvdyh0aGlzKTsKKyAgICAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogICAgICAgICBt
X3N0YXRlID0gU2hvd2luZzsKICAgICB9CiAjZWxzZQpAQCAtMTQ4LDE1ICsyMDAsMTYgQEAgdm9p
ZCBOb3RpZmljYXRpb246OmNsb3NlKCkKICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKICAgICBjYXNl
IElkbGU6CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTG9hZGluZzoKLSAgICAgICAgbV9zdGF0
ZSA9IENhbmNlbGxlZDsKLSAgICAgICAgc3RvcExvYWRpbmcoKTsKKyAgICBjYXNlIExvYWRpbmdJ
Y29uOgorICAgICAgICBtX3N0YXRlID0gQ2FuY2VsbGVkSWNvbjsKKyAgICAgICAgc3RvcExvYWRp
bmdJY29uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2hvd2luZzoKICAgICAgICAgaWYg
KG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKSkKICAgICAgICAgICAgIG1fbm90aWZpY2F0
aW9uQ2VudGVyLT5jbGllbnQoKS0+Y2FuY2VsKHRoaXMpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIENhbmNlbGxlZDoKKyAgICBjYXNlIENhbmNlbGxlZEljb246CisgICAgY2FzZSBDbG9zZWQ6
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTE3OCwxMiArMjMxLDEyIEBAIHZvaWQgTm90
aWZpY2F0aW9uOjpjb250ZXh0RGVzdHJveWVkKCkKICAgICAgICAgbV9ub3RpZmljYXRpb25DZW50
ZXItPmNsaWVudCgpLT5ub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQodGhpcyk7CiB9CiAKLXZv
aWQgTm90aWZpY2F0aW9uOjpzdGFydExvYWRpbmcoKQordm9pZCBOb3RpZmljYXRpb246OnN0YXJ0
TG9hZGluZ0ljb24oKQogewogICAgIGlmIChtX3N0YXRlICE9IElkbGUpCiAgICAgICAgIHJldHVy
bjsKICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgbV9zdGF0ZSA9IExvYWRpbmc7
CisgICAgbV9zdGF0ZSA9IExvYWRpbmdJY29uOwogICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25z
IG9wdGlvbnM7CiAgICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IERvTm90U2VuZENhbGxi
YWNrczsKICAgICBvcHRpb25zLnNuaWZmQ29udGVudCA9IERvTm90U25pZmZDb250ZW50OwpAQCAt
MTkzLDcgKzI0Niw3IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzdGFydExvYWRpbmcoKQogICAgIG1f
bG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgdGhpcywgUmVzb3VyY2VSZXF1ZXN0KGljb25VUkwoKSksIG9wdGlvbnMpOwogfQogCi12b2lk
IE5vdGlmaWNhdGlvbjo6c3RvcExvYWRpbmcoKQordm9pZCBOb3RpZmljYXRpb246OnN0b3BMb2Fk
aW5nSWNvbigpCiB7CiAgICAgbV9pY29uRGF0YSA9IDA7CiAgICAgUmVmUHRyPFRocmVhZGFibGVM
b2FkZXI+IHByb3RlY3QobV9sb2FkZXIpOwpAQCAtMjA0LDcgKzI1Nyw3IEBAIHZvaWQgTm90aWZp
Y2F0aW9uOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzCiB7CiAgICAgaW50IHN0YXR1cyA9IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCk7CiAgICAgaWYgKHN0YXR1cyAmJiAoc3RhdHVzIDwgMjAwIHx8IHN0YXR1cyA+IDI5OSkpIHsK
LSAgICAgICAgc3RvcExvYWRpbmcoKTsKKyAgICAgICAgc3RvcExvYWRpbmdJY29uKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgbV9pY29uRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CkBAIC0yMzIsMTMgKzI4NSwyMyBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlkRmFpbFJlZGly
ZWN0Q2hlY2soKQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZmluaXNoTG9hZGluZygpCiB7Ci0gICAg
aWYgKG1fc3RhdGUgPT0gTG9hZGluZykgeworICAgIGlmIChtX3N0YXRlID09IExvYWRpbmdJY29u
KSB7CiAgICAgICAgIGlmIChtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkgJiYgbV9ub3Rp
ZmljYXRpb25DZW50ZXItPmNsaWVudCgpLT5zaG93KHRoaXMpKQogICAgICAgICAgICAgbV9zdGF0
ZSA9IFNob3dpbmc7CiAgICAgfQogICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogfQog
Cit2b2lkIE5vdGlmaWNhdGlvbjo6ZmluYWxpemUoKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBpZiAobV9zdGF0ZSA9PSBDbG9zZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3N0YXRlID0g
Q2xvc2VkOworICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworI2VuZGlmCit9CisKIHZv
aWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaFNob3dFdmVudCgpCiB7CiAgICAgZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zaG93RXZlbnQsIGZhbHNlLCBmYWxzZSkpOwpA
QCAtMjUyLDYgKzMxNSw3IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNrRXZlbnQo
KQogdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xvc2VFdmVudCgpCiB7CiAgICAgZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgZmFs
c2UpKTsKKyAgICBmaW5hbGl6ZSgpOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hF
cnJvckV2ZW50KCkKQEAgLTI1OSw2ICszMjMsMTQgQEAgdm9pZCBOb3RpZmljYXRpb246OmRpc3Bh
dGNoRXJyb3JFdmVudCgpCiAgICAgZGlzcGF0Y2hFdmVudChFcnJvckV2ZW50OjpjcmVhdGUoKSk7
CiB9CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK3ZvaWQgTm90aWZpY2F0aW9uOjpzaG93
VGFza1RpbWVyRmlyZWQoVGltZXI8Tm90aWZpY2F0aW9uPiogdGltZXIpCit7CisgICAgQVNTRVJU
X1VOVVNFRCh0aW1lciwgdGltZXIgPT0gbV9zaG93VGFza1RpbWVyLmdldCgpKTsKKyAgICBzaG93
KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCmluZGV4IGE2NzE1OWE5ZTI0
YmEyZTk5MjZhZjA0MGM5NGM2ZmIyMjJlY2JiODEuLjUwZTFjMjIxYzAzYmIyYTk3NzhjMTNjYzhi
OTBlNjEzN2I0MzA1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaApAQCAtNDUsOSArNDUsMTQgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgogCisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCisjaW5jbHVkZSAiVGltZXIuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgRGljdGlvbmFyeTsKIGNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpAQCAtNjAsOCArNjUsMTMg
QEAgY2xhc3MgTm90aWZpY2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPiwg
cHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHUKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBOb3RpZmljYXRpb24oKTsKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNB
VElPTlMpCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3Qg
S1VSTCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0
cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxO
b3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJv
ZHksIGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2Vw
dGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpOworI2Vu
ZGlmCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90
aWZpY2F0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
dGl0bGUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpOworI2VuZGlmCiAgICAgCiAgICAgdmly
dHVhbCB+Tm90aWZpY2F0aW9uKCk7CiAKQEAgLTc4LDYgKzg4LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0VVJMKEtVUkwgdXJsKSB7IG1fbm90aWZpY2F0aW9uVVJMID0gdXJsOyB9CiAgICAgCiAg
ICAgS1VSTCBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9pY29uOyB9CisKICAgICBTdHJpbmcg
dGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9CiAgICAgU3RyaW5nIGJvZHkoKSBjb25z
dCB7IHJldHVybiBtX2JvZHk7IH0KIApAQCAtMTE3LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICAv
LyBBY3RpdmVET01PYmplY3QgaW50ZXJmYWNlCiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0
cm95ZWQoKTsKIAotICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKKyAgICB2b2lkIHN0b3BMb2FkaW5n
SWNvbigpOwogCiAgICAgU2hhcmVkQnVmZmVyKiBpY29uRGF0YSgpIHsgcmV0dXJuIG1faWNvbkRh
dGEuZ2V0KCk7IH0KICAgICB2b2lkIHJlbGVhc2VJY29uRGF0YSgpIHsgbV9pY29uRGF0YSA9IDA7
IH0KQEAgLTEzMSw5ICsxNDIsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFJlZGlyZWN0
Q2hlY2soKTsKIAorICAgIHZvaWQgZmluYWxpemUoKTsKKwogcHJpdmF0ZToKKyNpZiBFTkFCTEUo
TEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgTm90aWZpY2F0aW9uKGNvbnN0IEtVUkwmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0
aW9uQ2VudGVyPik7CiAgICAgTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0
IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPik7Cisj
ZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBOb3RpZmljYXRpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdGl0bGUpOworI2VuZGlmCisKKyAgICB2
b2lkIHNldEJvZHkoY29uc3QgU3RyaW5nJiBib2R5KSB7IG1fYm9keSA9IGJvZHk7IH0KIAogICAg
IC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdl
dCgpIHsgcmVmKCk7IH0KQEAgLTE0MSw5ICsxNjEsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgdmlydHVhbCBFdmVudFRh
cmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwogCi0gICAgdm9pZCBzdGFydExvYWRp
bmcoKTsKKyAgICB2b2lkIHN0YXJ0TG9hZGluZ0ljb24oKTsKICAgICB2b2lkIGZpbmlzaExvYWRp
bmcoKTsKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHZvaWQgc2hvd1Rhc2tUaW1l
ckZpcmVkKFRpbWVyPE5vdGlmaWNhdGlvbj4qKTsKKyNlbmRpZgorICAgIAogICAgIGJvb2wgbV9p
c0hUTUw7CiAKICAgICAvLyBUZXh0IG5vdGlmaWNhdGlvbnMuCkBAIC0xNTgsOSArMTgyLDEwIEBA
IHByaXZhdGU6CiAKICAgICBlbnVtIE5vdGlmaWNhdGlvblN0YXRlIHsKICAgICAgICAgSWRsZSA9
IDAsCi0gICAgICAgIExvYWRpbmcgPSAxLAorICAgICAgICBMb2FkaW5nSWNvbiA9IDEsCiAgICAg
ICAgIFNob3dpbmcgPSAyLAotICAgICAgICBDYW5jZWxsZWQgPSAzCisgICAgICAgIENhbmNlbGxl
ZEljb24gPSAzLAorICAgICAgICBDbG9zZWQgPSA0LAogICAgIH07CiAKICAgICBOb3RpZmljYXRp
b25TdGF0ZSBtX3N0YXRlOwpAQCAtMTcxLDYgKzE5Niw5IEBAIHByaXZhdGU6CiAKICAgICBSZWZQ
dHI8VGhyZWFkYWJsZUxvYWRlcj4gbV9sb2FkZXI7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9pY29uRGF0YTsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBPd25QdHI8VGltZXI8
Tm90aWZpY2F0aW9uPiA+IG1fc2hvd1Rhc2tUaW1lcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uaWRsCmluZGV4IDFmYjY3NDZkNDQ3M2NkY2Y5OTNmYWQ0NjgxODM2OTI1MTMzODBjMjIuLjA3
OWYxM2VjYTMxODM2YjFlNDJiMzk0NTI0N2YxNGQ5ODczYmRmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM1LDcgKzM1LDEyIEBAIG1v
ZHVsZSB0aHJlYWRzIHsKICAgICAgICAgQ29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OU3xMRUdBQ1lf
Tk9USUZJQ0FUSU9OUywKICAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgICAgICBFdmVudFRh
cmdldCwKKyNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTk9USUZJ
Q0FUSU9OUworICAgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgdGl0bGUsIGluIFtPcHRp
b25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERpY3Rpb25hcnkgb3B0aW9ucyksCisgICAgICAgIENh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisjZWxzZQogICAgICAgICBPbWl0Q29uc3Ry
dWN0b3IKKyNlbmRpZgogICAgIF0gTm90aWZpY2F0aW9uIHsKICAgICAgICAgdm9pZCBzaG93KCk7
CiAjaWYgZGVmaW5lZChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9MRUdB
Q1lfTk9USUZJQ0FUSU9OUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25DZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmgKaW5kZXggYTA0N2FiZjgxMDkyYmJhYmNmMTY0NzYwMjAzM2JlMmYy
Y2Y2OGEyNy4uNDkyOTllMWEwMmE5MTFlOTMwNjI1ZDMyZmE2NDgzM2RiY2MzYTFlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCkBA
IC01Myw2ICs1Myw3IEBAIGNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE5vdGlmaWNhdGlvbkNlbnRlcj4sIHB1YmxpYyBBY3RpdmVECiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIE5vdGlmaWNhdGlvbkNsaWVudCopOwogCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJ
RklDQVRJT05TKQogICAgIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVIVE1MTm90aWZp
Y2F0aW9uKGNvbnN0IFN0cmluZyYgVVJJLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB7CiAgICAg
ICAgIGlmICghY2xpZW50KCkpIHsKQEAgLTY1LDcgKzY2LDkgQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgICAgIHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmNvbXBsZXRlVVJMKFVSSSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZWMsIHRo
aXMpOwogICAgIH0KKyNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQog
ICAgIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVOb3RpZmljYXRpb24oY29uc3QgU3Ry
aW5nJiBpY29uVVJJLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsKICAgICAgICAgaWYgKCFjbGllbnQoKSkgewpAQCAtNzQs
NiArNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlv
bjo6Y3JlYXRlKHRpdGxlLCBib2R5LCBpY29uVVJJLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IGVjLCB0aGlzKTsKICAgICB9CisjZW5kaWYKIAogICAgIE5vdGlmaWNhdGlvbkNsaWVudCogY2xp
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsIGIvU291cmNlL1dlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCmluZGV4IDdiMGZjMjU1NTdj
YzUwYTNiNTU3OGMzMmI4MjI0NTA5MWMxMWMyN2IuLmU1MDg0NDdkNDllYmFhNDE5Y2ZlNzI1MDAy
NGM5MzExNjJlZWRkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ2VudGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNlbnRlci5pZGwKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM2LDEwICszNiwxMiBAQCBtb2R1bGUgdGhyZWFk
cyB7CiAgICAgICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICAgICAgT21pdENvbnN0cnVjdG9yCiAg
ICAgXSBOb3RpZmljYXRpb25DZW50ZXIgeworI2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9OT1RJ
RklDQVRJT05TKSAmJiBFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMKICNpZiAhZGVmaW5lZChF
TkFCTEVfVEVYVF9OT1RJRklDQVRJT05TX09OTFkpIHx8ICFFTkFCTEVfVEVYVF9OT1RJRklDQVRJ
T05TX09OTFkKICAgICAgICBbVjhDdXN0b21dIE5vdGlmaWNhdGlvbiBjcmVhdGVIVE1MTm90aWZp
Y2F0aW9uKGluIERPTVN0cmluZyB1cmwpIHJhaXNlcyhET01FeGNlcHRpb24pOwogI2VuZGlmCiAg
ICAgICAgW1Y4Q3VzdG9tXSBOb3RpZmljYXRpb24gY3JlYXRlTm90aWZpY2F0aW9uKGluIERPTVN0
cmluZyBpY29uVXJsLCBpbiBET01TdHJpbmcgdGl0bGUsIGluIERPTVN0cmluZyBib2R5KSByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKKyNlbmRpZgogCiAgICAgICAgaW50IGNoZWNrUGVybWlzc2lvbigp
OwogICAgICAgIFtDdXN0b21dIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oaW4gVm9pZENhbGxiYWNr
IGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQppbmRleCA4MTIwOTM2MDE2Mzc0OWI3NjZmYzdi
OGQzZDcwNjAyN2NiMjdkNmRhLi5jOGIxZTJkMWUzN2EwMTIwYjg5MDcwMGE5YmQ1ODY2ZmY4NTZh
ODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3Rp
ZmljYXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCkBAIC0xMDgsNiArMTA4LDcgQEAgdm9pZCBXZWJOb3Rp
ZmljYXRpb25DbGllbnQ6OmNsZWFyTm90aWZpY2F0aW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAg
ICAgICBXZWJOb3RpZmljYXRpb24gKndlYk5vdGlmaWNhdGlvbiA9IHdlYk5vdGlmaWNhdGlvbnNb
aV0uZ2V0KCk7CiAgICAgICAgIFtuc0lEcyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhV
bnNpZ25lZExvbmdMb25nOlt3ZWJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uSURdXV07CisgICAg
ICAgIGNvcmUod2ViTm90aWZpY2F0aW9uKS0+ZmluYWxpemUoKTsKICAgICAgICAgbV9ub3RpZmlj
YXRpb25NYXAucmVtb3ZlKGNvcmUod2ViTm90aWZpY2F0aW9uKSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggMjZlNTQwNzQ0YmQ1Mjc0YzliNmRhY2Vl
YTViZjk0ZmEzYWUwNDk3My4uNmJjNmE0ODFlMTUxMGFjZjhkZTcyZmYwZjEzMTNiMDk3YzBkZThj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMTUzLDYgKzE1Myw3
IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiAgICAgICAgIFJlZlB0cjxOb3RpZmljYXRpb24+
IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAudGFrZShub3RpZmljYXRpb25JRHNb
aV0pOwogICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBub3RpZmljYXRpb24tPmZpbmFsaXplKCk7CiAgICAgICAgIG1fbm90aWZpY2F0aW9u
TWFwLnJlbW92ZShub3RpZmljYXRpb24pOwogICAgIH0KICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137717</attachid>
            <date>2012-04-18 10:20:26 -0700</date>
            <delta_ts>2012-04-19 00:05:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80477-20120418102234.patch</filename>
            <type>text/plain</type>
            <size>29114</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDM1M2ExYWVhMzU2Y2Y5
OTlhNzY4YjRmMzYzN2YzMjVjNjZiN2E2OS4uN2Y4MjE3NmU2NmQxZWI3MTZmZDQ1MjMyMzk0NTlm
YjI3NDcxODBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA0LTE4ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTm90aWZpY2F0aW9uIGNvbnN0
cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MDQ3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA5MTI0MzE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgd2lsbCBiZSBhZGRlZCBvbmNl
IHRoZXJlIGlzIHN1cHBvcnQgZm9yIHdlYiBub3RpZmljYXRpb25zIG9uIHRoZSBNYWMgcG9ydHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IGZpbmFsaXplKCkgZnVuY3Rpb24u
CisKKyAgICAgICAgTW9kaWZ5IERpY3Rpb25hcnkgdG8gc3VwcG9ydCBjcmVhdGlvbiBvZiBldmVu
dCBsaXN0ZW5lcnMuCisgICAgICAgICogYmluZGluZ3MvanMvRGljdGlvbmFyeS5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6aXNPYmplY3QpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgSlNE
aWN0aW9uYXJ5IGlzIHZhbGlkLgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6aXNVbmRl
ZmluZWRPck51bGwpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgSlNEaWN0aW9uYXJ5IGlzIHZhbGlkLgor
ICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0KTogQWRkIGNvbnZlbmllbmNlIGZ1bmN0
aW9uIHRvIHRha2UgY29uc3QgY2hhciogZm9yCisgICAgICAgIHByb3BlcnR5IG5hbWUsIHRvIHBy
ZXZlbnQgaGF2aW5nIHRvIGRvIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gV1RGOjpTdHJpbmcuCisg
ICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRFdmVudExpc3RlbmVyKTogQWRkIGZ1bmN0
aW9uIHRvIGNyZWF0ZSBldmVudCBsaXN0ZW5lcgorICAgICAgICBmcm9tIHRoZSBkaWN0aW9uYXJ5
LgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6YXNKU09iamVjdCk6IEhlbHBlciB0byBj
b252ZXJ0IFdlYkNvcmUgb2JqZWN0cyB0byBKUyB3cmFwcGVyLgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKTogSW1w
bGVtZW50IGFzSlNPYmplY3QoKSBmb3IgTm90aWZpY2F0aW9uLgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRGljdGlvbmFyeS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5OjpleGVj
U3RhdGUpOiBFeHBvc2UgdGhlIGV4ZWMgc3RhdGUgc28gdGhhdCB0aGUgRGljdGlvbmFyeQorICAg
ICAgICBjYW4gb2J0YWluIGl0cyB3b3JsZCBmb3IgY3JlYXRpbmcgdGhlIGV2ZW50IGxpc3RlbmVy
LgorCisgICAgICAgICogYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGljdGlvbmFyeTo6Z2V0RXZlbnRMaXN0ZW5lcik6IFN0dWIgaW1wbGVtZW50YXRpb24uCisK
KyAgICAgICAgQWRkIG5ldyBjb25zdHJ1Y3RvciB0byBpZGwgZGVmaW5pdGlvbnMuCisgICAgICAg
ICogbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbDogQWRkIE5vdGlmaWNh
dGlvbiBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5p
ZGw6IElmIEVOQUJMRShOT1RJRklDQVRJT05TKSBpcyB0dXJuZWQgb24sIGRlZmluZQorICAgICAg
ICB0aGUgY29uc3RydWN0b3IuIE90aGVyd2lzZSwgdXNlIE9taXRDb25zdHJ1Y3Rvci4KKyAgICAg
ICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGw6IFdyYXAgY3JlYXRpb24g
ZnVuY3Rpb25zIGluCisgICAgICAgIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykuCisgICAg
ICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaDogRGl0dG8uCisgICAgICAg
IChOb3RpZmljYXRpb25DZW50ZXIpOgorCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaDoKKyAgICAgICAgKE5vdGlmaWNhdGlvbik6IFdyYXAgbGVnYWN5IGNvbnN0cnVjdG9y
cyBpbiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpLgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjpjcmVhdGUpOiBOZXcgY3JlYXRpb24gZnVuY3Rpb24gYmFzZWQgb24gZGlzY3Vz
c2lvbnMgaW4gV0cuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0QW5kQWRkRXZlbnRMaXN0ZW5lcik6IEhlbHBlciBmdW5jdGlv
biB0byBnZXQgdGhlIGxpc3RlbmVyIGZyb20gdGhlCisgICAgICAgIGRpY3Rpb25hcnksIGFuZCBh
dHRhY2ggdG8gdGVoIG5vdGlmaWNhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bjo6Y3JlYXRlKTogQ3JlYXRlIHRoZSBub3RpZmljYXRpb24sIHRoZW4gYXBwbHkgd2hhdGV2ZXIK
KyAgICAgICAgcHJvcGVydGllcyBjYW4gYmUgZm91bmQgaW4gdGhlIGRpY3Rpb25hcnkgdG8gdGhl
IG5vdGlmaWNhdGlvbi4gSW4gb3JkZXIgdG8KKyAgICAgICAgYXR0YWNoIHRoZSBldmVudCBsaXN0
ZW5lcnMsIHRoZSBub3RpZmljYXRpb24gaGFzIHRvIGhhdmUgYmVlbiBjcmVhdGVkLCB3aGljaCBp
cworICAgICAgICB3aHkgdGhpcyBhbGwgaGFwcGVucyBpbiB0aGUgZmFjdG9yeSBtZXRob2QgYW5k
IG5vdCBpbiB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OnNldEJvZHkpOiBBZGRlZCBzbyB0aGF0IGl0IGNhbiBiZSBzZXQgaWYgd2UgZmluZCBpdCBpbiB0
aGUKKyAgICAgICAgZGljdGlvbmFyeS4KKworICAgICAgICBUaGUgbmV3IGNvbnN0cnVjdG9yIHF1
ZXVlcyBhIHRhc2sgdG8gc2hvdyB3aGVuIGl0IGlzIGNyZWF0ZWQuIFRvIHN1cHBvcnQgdGhpcywg
d2UKKyAgICAgICAgdXNlIGEgb25lLXNob3QgdGltZXIgdGhhdCBjYWxscyBzaG93KCkgaW4gdGhl
IG5leHQgaXRlcmF0aW9uIG9mIHRoZSBydW4gbG9vcC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6Tm90aWZpY2F0aW9uKTogU3RhcnQgdGhlIHRpbWVyLgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjpzaG93VGFza1RpbWVyRmlyZWQpOiBDYWxsIHNob3coKS4KKworICAg
ICAgICBOb3RpZmljYXRpb25zLCBub3QgYmVpbmcgYXR0YWNoZWQgdG8gdGhlIERPTSwgY291bGQg
YmUgR0MnZWQgYnkgdGhlIEpTIGVuZ2luZQorICAgICAgICBiZWZvcmUgaXRzIGxpZmUgY3ljbGUg
aGFzIGNvbXBsZXRlZC4gV2UgYWRkIGNhbGxzIHRvIHNldFBlbmRpbmdBY3Rpdml0eSgpIHdoZW4g
dGhlCisgICAgICAgIG5vdGlmaWNhdGlvbiBoYXMgYmVlbiBzaG93biwgYW5kIHdoZW4gaXQgaXMg
Y2xvc2VkLCB3ZSB1bnNldFBlbmRpbmdBY3Rpdml0eSgpLgorICAgICAgICBUbyBndWFyYW50ZWUg
dGhhdCB3ZSBvbmx5IGNhbGwgdGhpcyBvbmNlLCB3ZSBhZGQgYSBuZXcgc3RhdGUgdG8gdGhlIE5v
dGlmaWNhdGlvbgorICAgICAgICBzdGF0ZSBtYWNoaW5lLCBjYWxsZWQgTm90aWZpY2F0aW9uU3Rh
dGU6OkNsb3NlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y2xvc2UpOiBJbmNs
dWRlIENsb3NlZCBzdGF0ZSB0byBtYWNoaW5lOyBkbyBub3RoaW5nLgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQpOiBDYWxsIGZpbmFsaXplKCkuCisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmZpbmFsaXplKTogSWYgdGhlIHN0YXRlIGlz
IG5vdCBDbG9zZWQsIHdlIHVuc2V0UGVuZGluZ0FjdGl2aXR5KCkKKyAgICAgICAgdG8gbWFrZSBp
dCBhdmFpbGFibGUgZm9yIEdDLgorCisgICAgICAgIEluIE5vdGlmaWNhdGlvbiwgcmVuYW1lIHNv
bWUgb2YgdGhlIHN0YWdlcyBhbmQgZnVuY3Rpb25zIHRvIG1vcmUgY2xlYXJseSBjb21tdW5pY2F0
ZQorICAgICAgICB0aGF0IHRoZXkgbW9zdGx5IGRlYWwgd2l0aCB0aGUgaWNvbiBvZiB0aGUgbm90
aWZpY2F0aW9uLCBpbnN0ZWFkIG9mIGdlbmVyYWwgbG9hZGluZy4KKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbjo6c2hvdyk6IFJlZmFjdG9yZWQgdG8gdXNlIExvYWRpbmdJY29uIGFuZCBD
YW5jZWxsZWRJY29uLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjbG9zZSk6IFJl
ZmFjdG9yZWQgdG8gdXNlIExvYWRpbmdJY29uIGFuZCBDYW5jZWxsZWRJY29uLgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKTogUmVmYWN0b3IgdG8gdXNlIExv
YWRpbmdJY29uLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzdGFydExvYWRpbmdJ
Y29uKTogUmVuYW1lZCBmcm9tIHN0YXJ0TG9hZGluZygpLgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjpzdG9wTG9hZGluZ0ljb24pOiBSZW5hbWVkIGZyb20gc3RvcExvYWRpbmcoKS4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZmluaXNoTG9hZGluZyk6CisKIDIwMTItMDQt
MTYgIEdlb3JnZSBTdGFpa29zICA8c3RhaWtvc0B3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBz
aWduZWQvdW5zaWduZWQgbWlzbWF0Y2ggd2FybmluZyBmb3IgQmxhY2tCZXJyeSBkZWJ1ZyBidWls
ZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZjA5ZTk3OGY4MzIwMzIyNWYwOGQ0MzRhMzFhNjA4MTNk
NjMyMWJmMC4uNTljZDhhMThlODNmZmI0NzdmMWNlOTE4OTg4NDFiNWQ1ZjdmNTE3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA0LTE4ICBKb24gTGVlICA8am9ubGVl
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTm90aWZpY2F0aW9uIGNvbnN0cnVjdG9yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQ3NworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTA5MTI0MzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGll
bnQubW06CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNsZWFyTm90aWZpY2F0aW9u
cyk6IFdoZW4gY2xlYXJpbmcgbm90aWZpY2F0aW9ucywgZmluYWxpemUKKyAgICAgICAgdGhlbSBz
byB0aGF0IHRoZXkgY2FuIGJlIGNsZWFuZWQgdXAgYnkgdGhlIEdDLgorCiAyMDEyLTA0LTEyICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTAy
MjYyKTogaUFkIFByb2R1Y2VyIHJlbGllcyBvbiBDU1NTdHlsZURlY2xhcmF0aW9uIHByb3BlcnR5
IHNldHRlcnMgcmVzcGVjdGluZyAnIWltcG9ydGFudCcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2NjJlNDZmNjMw
ZDU3Y2E2OWVhM2ExMmI5YzQ5M2M4OTAyNzVhZjExLi42NjFlZDBkM2Y1ZmQ3N2FlYTUyNzBkNzM4
YjMzNmFhMGRjNzQ1ZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDQtMTgg
IEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBOb3RpZmljYXRpb24g
Y29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgwNDc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDkxMjQzMT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRpb25zKTogV2hlbiBjbGVhcmluZyBu
b3RpZmljYXRpb25zLAorICAgICAgICBmaW5hbGl6ZSB0aGVtIHNvIHRoYXQgdGhleSBjYW4gYmUg
Y2xlYW5lZCB1cCBieSB0aGUgR0MuCisKIDIwMTItMDQtMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVzZSBHUmVmUHRyIHRvIGRl
bGV0ZSB0aGUgZGVmYXVsdCB3ZWIgY29udGV4dCBpbiBXZWJLaXQyIEdUSysKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KaW5kZXggN2I0NzQ0OThkN2RiZTA4YzUxZGFhNjhiMDczZjUwOTQ1NjY2MDM2My4uYzBm
ZGI2ODMyZDc3NDg3MGY3ZWJmM2JlMjAyMzdjMDc4Y2FlNzQ2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KQEAgLTIxNTUsNiArMjE1NSw3IEBAIF93a0NyZWF0ZVZNUHJlc3N1cmVEaXNwYXRjaE9uTWFp
blF1ZXVlCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJ
Q0FUSU9OUykKIF9fWk43V2ViQ29yZTEyTm90aWZpY2F0aW9uQzFFdgogX19aTjdXZWJDb3JlMTJO
b3RpZmljYXRpb25EMUV2CitfX1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbjhmaW5hbGl6ZUV2CiBf
X1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbjE3ZGlzcGF0Y2hTaG93RXZlbnRFdgogX19aTjdXZWJD
b3JlMTJOb3RpZmljYXRpb24xOGRpc3BhdGNoQ2xpY2tFdmVudEV2CiBfX1pON1dlYkNvcmUxMk5v
dGlmaWNhdGlvbjE4ZGlzcGF0Y2hDbG9zZUV2ZW50RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRGljdGlvbmFyeS5jcHAKaW5kZXggNzViZWYxNTQ5NjAyZmRkOTU5ZDc2ZDg5ZGY0NzUyMTcw
OWQyNGM5NS4uMmMxYjc4NWZlMGY4NWM4YWFhYzc2ODk5YTRkODBjOWI2YTA5ZTkyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKQEAgLTI2LDYgKzI2LDExIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogCisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCisjaW5jbHVkZSAiSlNOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRl
ICJOb3RpZmljYXRpb24uaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zNSwxNCArNDAsMTQgQEAgRGljdGlvbmFyeTo6RGljdGlvbmFy
eShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogfQogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgotYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUsIFJlc3VsdCYgcmVzdWx0KSBjb25zdAorCisjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCit0ZW1wbGF0ZTw+CitKU09iamVjdCogRGljdGlvbmFyeTo6YXNKU09iamVjdDxO
b3RpZmljYXRpb24+KE5vdGlmaWNhdGlvbiogb2JqZWN0KSBjb25zdAogewotICAgIGlmICghbV9k
aWN0aW9uYXJ5LmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIHJl
dHVybiBtX2RpY3Rpb25hcnkuZ2V0KHByb3BlcnR5TmFtZS5hc2NpaSgpLmRhdGEoKSwgcmVzdWx0
KTsKKyAgICByZXR1cm4gYXNPYmplY3QodG9KUyhtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCksIGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKS0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKSwgb2JqZWN0KSk7CiB9CisjZW5kaWYKIAogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCmluZGV4IDkzYTQ4YjhhZTU3NzE1NjRmMGY3YWZi
M2QxN2U4MjVmMzhlNmQzZTYuLmE3NzczNDJiNzNjZTQ3MjM3MjExOTQ2YzExNTg1ZjNmMDBkMmQ5
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNkZWZpbmUgRGljdGlvbmFyeV9oCiAKICNpbmNsdWRlICJKU0RpY3Rpb25hcnkuaCIK
KyNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgpAQCAtNDYsMTYgKzQ3LDYyIEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBh
IHZhbHVlIHdhcyBmb3VuZCBmb3IgdGhlIHByb3ZpZGVkIHByb3BlcnR5LgogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBSZXN1bHQ+CisgICAgYm9vbCBnZXQoY29uc3QgY2hhciogcHJvcGVydHlOYW1l
LCBSZXN1bHQmKSBjb25zdDsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgogICAgIGJv
b2wgZ2V0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBSZXN1bHQmKSBjb25zdDsKKyAgICAK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGdldEV2ZW50TGlzdGVuZXIoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNv
bnN0OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgVCogdGFy
Z2V0KSBjb25zdDsKIAotICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IG5vdEltcGxlbWVudGVk
KCk7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNVbmRlZmluZWRPck51bGwoKSBjb25zdCB7
IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNPYmplY3QoKSBj
b25zdCB7IHJldHVybiBtX2RpY3Rpb25hcnkuaXNWYWxpZCgpOyB9CisgICAgYm9vbCBpc1VuZGVm
aW5lZE9yTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGljdGlvbmFyeS5pc1ZhbGlkKCk7IH0KICAg
ICBib29sIGdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJpbmcmLCBTdHJpbmcm
KSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIEpTQzo6SlNPYmplY3QqIGFzSlNPYmplY3Qo
VCopIGNvbnN0OworICAgIAogICAgIEpTRGljdGlvbmFyeSBtX2RpY3Rpb25hcnk7CiB9OwogCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgorYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgY2hh
ciogcHJvcGVydHlOYW1lLCBSZXN1bHQmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZGlj
dGlvbmFyeS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1
cm4gbV9kaWN0aW9uYXJ5LmdldChwcm9wZXJ0eU5hbWUsIHJlc3VsdCk7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBSZXN1bHQ+Citib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIHBy
b3BlcnR5TmFtZSwgUmVzdWx0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldChwcm9w
ZXJ0eU5hbWUudXRmOCgpLmRhdGEoKSwgcmVzdWx0KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVu
ZXIoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0Cit7CisgICAgaWYg
KCFtX2RpY3Rpb25hcnkuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFNjcmlw
dFZhbHVlIGV2ZW50TGlzdGVuZXI7CisgICAgaWYgKCFtX2RpY3Rpb25hcnkudHJ5R2V0UHJvcGVy
dHkocHJvcGVydHlOYW1lLCBldmVudExpc3RlbmVyKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
aWYgKGV2ZW50TGlzdGVuZXIuaGFzTm9WYWx1ZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAK
KyAgICByZXR1cm4gSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QoZXZlbnRMaXN0ZW5l
ci5qc1ZhbHVlKCkpLCBhc0pTT2JqZWN0KHRhcmdldCksIHRydWUsIGN1cnJlbnRXb3JsZChtX2Rp
Y3Rpb25hcnkuZXhlY1N0YXRlKCkpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0
RXZlbnRMaXN0ZW5lcihwcm9wZXJ0eU5hbWUudXRmOCgpLmRhdGEoKSwgdGFyZ2V0KTsKK30KKwog
fQogCiAjZW5kaWYgLy8gRGljdGlvbmFyeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGljdGlvbmFyeS5oCmluZGV4IGU5ZDk5ZTFmYzAzZTkxYThkZWUwOTY4NjNiZTBmYzc4OWU1YTAz
ZDAuLjhmNjMzN2Q2ZTRhMzg0ZjhiNWRlMTcyOGU2MDU1NTkxZTQyMTE0ZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCkBAIC01OCw2ICs1OCw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgogICAgIGJvb2wgZ2V0KGNvbnN0IGNo
YXIqIHByb3BlcnR5TmFtZSwgUmVzdWx0JikgY29uc3Q7CiAKKyAgICBKU0M6OkV4ZWNTdGF0ZSog
ZXhlY1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9leGVjOyB9CiAgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV9leGVjICYmIG1faW5pdGlhbGl6ZXJPYmplY3Q7IH0KIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaAppbmRleCAzMjE2NGI4Y2Ji
MjNhNTRhYmM1ODQ5Nzk5NjI1OTZjNWZkMmZmODMxLi5lNTg4OTBlNTlmYjI1MjE2NTIwNzFjZjg1
ZjYwMTU5MTMwMTk4NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
aWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIERpY3Rpb25hcnlfaAogI2RlZmluZSBEaWN0aW9u
YXJ5X2gKIAorI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9y
dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUu
aCIKQEAgLTM4LDEyICszOSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01TdHJp
bmdMaXN0OwogY2xhc3MgRE9NV2luZG93OwogY2xhc3MgSURCS2V5UmFuZ2U7Ci1jbGFzcyBTdG9y
YWdlOwogY2xhc3MgTWVkaWFLZXlFcnJvcjsKLWNsYXNzIFRyYWNrQmFzZTsKK2NsYXNzIE5vdGlm
aWNhdGlvbjsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uRXJyb3I7CiBjbGFzcyBTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdDsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdDsKK2NsYXNz
IFN0b3JhZ2U7CitjbGFzcyBUcmFja0Jhc2U7CiAKIGNsYXNzIERpY3Rpb25hcnkgewogcHVibGlj
OgpAQCAtODQsNiArODYsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGdldFdpdGhVbmRlZmluZWRP
ck51bGxDaGVjayhjb25zdCBTdHJpbmcmLCBTdHJpbmcmKSBjb25zdDsKIAorICAgIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmLCBOb3RpZmlj
YXRpb24qKSBjb25zdCB7IHJldHVybiAwOyB9CisKIHByaXZhdGU6CiAgICAgYm9vbCBnZXRLZXko
Y29uc3QgU3RyaW5nJiBrZXksIHY4OjpMb2NhbDx2ODo6VmFsdWU+JikgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9u
cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlv
bnMuaWRsCmluZGV4IDA1N2I2NjZiNmUzZDc0N2U1OTc0NDBjNGYzZWJjOWYxNjdiZTMzZjkuLmQ4
MjQxNjg5YWY0NDVkZjU4YWYwNGFkNjEzNDAwNTA0MDM3ZDE1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtMzEsNiArMzEsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAg
ICAgU3VwcGxlbWVudGFsPURPTVdpbmRvdwogICAgIF0gRE9NV2luZG93Tm90aWZpY2F0aW9ucyB7
CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBOb3RpZmlj
YXRpb25DZW50ZXIgd2Via2l0Tm90aWZpY2F0aW9uczsKKyAgICAgICAgYXR0cmlidXRlIE5vdGlm
aWNhdGlvbkNvbnN0cnVjdG9yIE5vdGlmaWNhdGlvbjsKICAgICB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggMjI0MWIzNjA3M2Ni
ZDZkNmRkZjQ2MmFkM2E4ZWIxZTA5NTE2OTQ5Yi4uZDNlZWQ3Y2JkMGRlNmIxZWJiYjBjNjdiZmU1
NTdjMmI0OGY2ZTU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmNwcApAQCAtMzUsNiArMzUsOSBAQAogCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgi
CiAKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJET01XaW5kb3dOb3RpZmljYXRp
b25zLmgiCisjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRXJyb3JFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTUyLDYg
KzU1LDcgQEAgTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oKQogewogfQogCisjaWYgRU5BQkxF
KExFR0FDWV9OT1RJRklDQVRJT05TKQogTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3Qg
S1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2Rl
JiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKQogICAgIDogQWN0
aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2lzSFRNTCh0cnVlKQpAQCAtNzAs
NyArNzQsOSBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBLVVJMJiB1cmwsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4YwogCiAgICAgbV9ub3RpZmljYXRpb25V
UkwgPSB1cmw7CiB9CisjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
IE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0
cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50
ZXI+IHByb3ZpZGVyKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAg
LCBtX2lzSFRNTChmYWxzZSkKQEAgLTkwLDE1ICs5NiwzMyBAQCBOb3RpZmljYXRpb246Ok5vdGlm
aWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0
cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUpCisgICAgOiBBY3RpdmVET01PYmpl
Y3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1faXNIVE1MKGZhbHNlKQorICAgICwgbV90aXRsZSh0
aXRsZSkKKyAgICAsIG1fc3RhdGUoSWRsZSkKKyAgICAsIG1fc2hvd1Rhc2tUaW1lcihhZG9wdFB0
cihuZXcgVGltZXI8Tm90aWZpY2F0aW9uPih0aGlzLCAmTm90aWZpY2F0aW9uOjpzaG93VGFza1Rp
bWVyRmlyZWQpKSkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBt
X25vdGlmaWNhdGlvbkNlbnRlciA9IERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlm
aWNhdGlvbnMoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZG9tV2luZG93KCkpOwor
ICAgIAorICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkpOworICAgIG1f
c2hvd1Rhc2tUaW1lci0+c3RhcnRPbmVTaG90KDApOworfQorI2VuZGlmCiAKIE5vdGlmaWNhdGlv
bjo6fk5vdGlmaWNhdGlvbigpIAogewotICAgIGlmIChtX3N0YXRlID09IExvYWRpbmcpIHsKKyAg
ICBpZiAobV9zdGF0ZSA9PSBMb2FkaW5nSWNvbikgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgY2xvc2UoKTsKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCiBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVh
dGUoY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNl
cHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKSAK
IHsgCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKGFkb3B0UmVmKG5ldyBO
b3RpZmljYXRpb24odXJsLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKSk7CkBAIC0xMTIsNiArMTM2
LDMzIEBAIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmCiAgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5k
SWZOZWVkZWQoKTsKICAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVhc2UoKTsKIH0KKyNlbmRp
ZgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitzdGF0aWMgdm9pZCBnZXRBbmRBZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBjb25zdCBjaGFyKiBwcm9w
ZXJ0eSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgTm90aWZpY2F0aW9uKiBub3RpZmljYXRp
b24pCit7CisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gb3B0aW9ucy5nZXRF
dmVudExpc3RlbmVyKHByb3BlcnR5LCBub3RpZmljYXRpb24pOworICAgIGlmIChsaXN0ZW5lcikK
KyAgICAgICAgbm90aWZpY2F0aW9uLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgbGlzdGVu
ZXIucmVsZWFzZSgpLCBmYWxzZSk7Cit9CisKK1Bhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3Rp
ZmljYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKQoreworICAgIFJlZlB0cjxO
b3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKGNvbnRl
eHQsIHRpdGxlKSkpOworICAgIFN0cmluZyBhcmd1bWVudDsKKyAgICBpZiAob3B0aW9ucy5nZXQo
ImJvZHkiLCBhcmd1bWVudCkpCisgICAgICAgIG5vdGlmaWNhdGlvbi0+c2V0Qm9keShhcmd1bWVu
dCk7CisgICAgaWYgKG9wdGlvbnMuZ2V0KCJ0YWciLCBhcmd1bWVudCkpCisgICAgICAgIG5vdGlm
aWNhdGlvbi0+c2V0VGFnKGFyZ3VtZW50KTsKKyAgICBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5zaG93RXZlbnQsICJvbnNob3ciLCBvcHRpb25zLCBub3RpZmljYXRpb24uZ2V0
KCkpOworICAgIGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQs
ICJvbmNsb3NlIiwgb3B0aW9ucywgbm90aWZpY2F0aW9uLmdldCgpKTsKKyAgICBnZXRBbmRBZGRF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCAib25lcnJvciIsIG9wdGlvbnMs
IG5vdGlmaWNhdGlvbi5nZXQoKSk7CisgICAgZ2V0QW5kQWRkRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkuY2xpY2tFdmVudCwgIm9uY2xpY2siLCBvcHRpb25zLCBub3RpZmljYXRpb24uZ2V0KCkp
OworCisgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gbm90
aWZpY2F0aW9uLnJlbGVhc2UoKTsKK30KKyNlbmRpZgogCiBjb25zdCBBdG9taWNTdHJpbmcmIE5v
dGlmaWNhdGlvbjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7CkBAIC0xMzAsMTAgKzE4MSwxMSBA
QCB2b2lkIE5vdGlmaWNhdGlvbjo6c2hvdygpCiAgICAgICAgICAgICAgICAgbV9ub3RpZmljYXRp
b25DZW50ZXItPmNsaWVudCgpLT5zaG93KHRoaXMpOwogICAgICAgICB9CiAgICAgfSBlbHNlCi0g
ICAgICAgIHN0YXJ0TG9hZGluZygpOworICAgICAgICBzdGFydExvYWRpbmdJY29uKCk7CiAjZWxp
ZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fc3RhdGUgPT0gSWRsZSAmJiBtX25vdGlmaWNhdGlv
bkNlbnRlci0+Y2xpZW50KCkpIHsKICAgICAgICAgbV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVu
dCgpLT5zaG93KHRoaXMpOworICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAgICAg
ICAgIG1fc3RhdGUgPSBTaG93aW5nOwogICAgIH0KICNlbHNlCkBAIC0xNDgsMTUgKzIwMCwxNiBA
QCB2b2lkIE5vdGlmaWNhdGlvbjo6Y2xvc2UoKQogICAgIHN3aXRjaCAobV9zdGF0ZSkgewogICAg
IGNhc2UgSWRsZToKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMb2FkaW5nOgotICAgICAgICBt
X3N0YXRlID0gQ2FuY2VsbGVkOwotICAgICAgICBzdG9wTG9hZGluZygpOworICAgIGNhc2UgTG9h
ZGluZ0ljb246CisgICAgICAgIG1fc3RhdGUgPSBDYW5jZWxsZWRJY29uOworICAgICAgICBzdG9w
TG9hZGluZ0ljb24oKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTaG93aW5nOgogICAgICAg
ICBpZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpKQogICAgICAgICAgICAgbV9ub3Rp
ZmljYXRpb25DZW50ZXItPmNsaWVudCgpLT5jYW5jZWwodGhpcyk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ2FuY2VsbGVkOgorICAgIGNhc2UgQ2FuY2VsbGVkSWNvbjoKKyAgICBjYXNlIENs
b3NlZDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtMTc4LDEyICsyMzEsMTIgQEAgdm9p
ZCBOb3RpZmljYXRpb246OmNvbnRleHREZXN0cm95ZWQoKQogICAgICAgICBtX25vdGlmaWNhdGlv
bkNlbnRlci0+Y2xpZW50KCktPm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCh0aGlzKTsKIH0K
IAotdm9pZCBOb3RpZmljYXRpb246OnN0YXJ0TG9hZGluZygpCit2b2lkIE5vdGlmaWNhdGlvbjo6
c3RhcnRMb2FkaW5nSWNvbigpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gSWRsZSkKICAgICAgICAg
cmV0dXJuOwogICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICBtX3N0YXRlID0gTG9h
ZGluZzsKKyAgICBtX3N0YXRlID0gTG9hZGluZ0ljb247CiAgICAgVGhyZWFkYWJsZUxvYWRlck9w
dGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gRG9Ob3RTZW5k
Q2FsbGJhY2tzOwogICAgIG9wdGlvbnMuc25pZmZDb250ZW50ID0gRG9Ob3RTbmlmZkNvbnRlbnQ7
CkBAIC0xOTMsNyArMjQ2LDcgQEAgdm9pZCBOb3RpZmljYXRpb246OnN0YXJ0TG9hZGluZygpCiAg
ICAgbV9sb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCB0aGlzLCBSZXNvdXJjZVJlcXVlc3QoaWNvblVSTCgpKSwgb3B0aW9ucyk7CiB9CiAK
LXZvaWQgTm90aWZpY2F0aW9uOjpzdG9wTG9hZGluZygpCit2b2lkIE5vdGlmaWNhdGlvbjo6c3Rv
cExvYWRpbmdJY29uKCkKIHsKICAgICBtX2ljb25EYXRhID0gMDsKICAgICBSZWZQdHI8VGhyZWFk
YWJsZUxvYWRlcj4gcHJvdGVjdChtX2xvYWRlcik7CkBAIC0yMDQsNyArMjU3LDcgQEAgdm9pZCBO
b3RpZmljYXRpb246OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXMKIHsKICAgICBpbnQgc3RhdHVzID0gcmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKTsKICAgICBpZiAoc3RhdHVzICYmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID4gMjk5
KSkgewotICAgICAgICBzdG9wTG9hZGluZygpOworICAgICAgICBzdG9wTG9hZGluZ0ljb24oKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2ljb25EYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKQEAgLTIzMiwxMyArMjg1LDIzIEBAIHZvaWQgTm90aWZpY2F0aW9uOjpkaWRGYWls
UmVkaXJlY3RDaGVjaygpCiAKIHZvaWQgTm90aWZpY2F0aW9uOjpmaW5pc2hMb2FkaW5nKCkKIHsK
LSAgICBpZiAobV9zdGF0ZSA9PSBMb2FkaW5nKSB7CisgICAgaWYgKG1fc3RhdGUgPT0gTG9hZGlu
Z0ljb24pIHsKICAgICAgICAgaWYgKG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKSAmJiBt
X25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCktPnNob3codGhpcykpCiAgICAgICAgICAgICBt
X3N0YXRlID0gU2hvd2luZzsKICAgICB9CiAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7
CiB9CiAKK3ZvaWQgTm90aWZpY2F0aW9uOjpmaW5hbGl6ZSgpCit7CisjaWYgUExBVEZPUk0oTUFD
KQorICAgIGlmIChtX3N0YXRlID09IENsb3NlZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3Rh
dGUgPSBDbG9zZWQ7CisgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CisjZW5kaWYKK30K
Kwogdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoU2hvd0V2ZW50KCkKIHsKICAgICBkaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNob3dFdmVudCwgZmFsc2UsIGZhbHNl
KSk7CkBAIC0yNTIsNiArMzE1LDcgQEAgdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xpY2tF
dmVudCgpCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KCkKIHsKICAgICBk
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNl
LCBmYWxzZSkpOworICAgIGZpbmFsaXplKCk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpkaXNw
YXRjaEVycm9yRXZlbnQoKQpAQCAtMjU5LDYgKzMyMywxNCBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6
ZGlzcGF0Y2hFcnJvckV2ZW50KCkKICAgICBkaXNwYXRjaEV2ZW50KEVycm9yRXZlbnQ6OmNyZWF0
ZSgpKTsKIH0KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQordm9pZCBOb3RpZmljYXRpb246
OnNob3dUYXNrVGltZXJGaXJlZChUaW1lcjxOb3RpZmljYXRpb24+KiB0aW1lcikKK3sKKyAgICBB
U1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSBtX3Nob3dUYXNrVGltZXIuZ2V0KCkpOworICAg
IHNob3coKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXggYTY3MTU5
YTllMjRiYTJlOTkyNmFmMDQwYzk0YzZmYjIyMmVjYmI4MS4uNTBlMWMyMjFjMDNiYjJhOTc3OGMx
M2NjOGI5MGU2MTM3YjQzMDU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5oCkBAIC00NSw5ICs0NSwxNCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAKKyNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKKyNpbmNsdWRlICJUaW1lci5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBEaWN0aW9uYXJ5OwogY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyOwog
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CkBAIC02MCw4ICs2
NSwxMyBAQCBjbGFzcyBOb3RpZmljYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRp
b24+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdQogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIE5vdGlmaWNhdGlvbigpOworI2lmIEVOQUJMRShMRUdBQ1lfTk9U
SUZJQ0FUSU9OUykKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShj
b25zdCBLVVJMJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNz
UmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpOwogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmlu
ZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcik7
CisjZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxOb3RpZmljYXRpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucyk7CisjZW5kaWYKICAgICAKICAg
ICB2aXJ0dWFsIH5Ob3RpZmljYXRpb24oKTsKIApAQCAtNzgsNiArODgsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRVUkwoS1VSTCB1cmwpIHsgbV9ub3RpZmljYXRpb25VUkwgPSB1cmw7IH0KICAg
ICAKICAgICBLVVJMIGljb25VUkwoKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KKwogICAgIFN0
cmluZyB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KICAgICBTdHJpbmcgYm9keSgp
IGNvbnN0IHsgcmV0dXJuIG1fYm9keTsgfQogCkBAIC0xMTcsNyArMTI4LDcgQEAgcHVibGljOgog
ICAgIC8vIEFjdGl2ZURPTU9iamVjdCBpbnRlcmZhY2UKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4
dERlc3Ryb3llZCgpOwogCi0gICAgdm9pZCBzdG9wTG9hZGluZygpOworICAgIHZvaWQgc3RvcExv
YWRpbmdJY29uKCk7CiAKICAgICBTaGFyZWRCdWZmZXIqIGljb25EYXRhKCkgeyByZXR1cm4gbV9p
Y29uRGF0YS5nZXQoKTsgfQogICAgIHZvaWQgcmVsZWFzZUljb25EYXRhKCkgeyBtX2ljb25EYXRh
ID0gMDsgfQpAQCAtMTMxLDkgKzE0MiwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVk
aXJlY3RDaGVjaygpOwogCisgICAgdm9pZCBmaW5hbGl6ZSgpOworCiBwcml2YXRlOgorI2lmIEVO
QUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICBOb3RpZmljYXRpb24oY29uc3QgS1VSTCYs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3Rp
ZmljYXRpb25DZW50ZXI+KTsKICAgICBOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+
KTsKKyNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIE5vdGlmaWNhdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisjZW5kaWYKKwor
ICAgIHZvaWQgc2V0Qm9keShjb25zdCBTdHJpbmcmIGJvZHkpIHsgbV9ib2R5ID0gYm9keTsgfQog
CiAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50
VGFyZ2V0KCkgeyByZWYoKTsgfQpAQCAtMTQxLDkgKzE2MSwxMyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKICAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CiAKLSAgICB2b2lkIHN0YXJ0
TG9hZGluZygpOworICAgIHZvaWQgc3RhcnRMb2FkaW5nSWNvbigpOwogICAgIHZvaWQgZmluaXNo
TG9hZGluZygpOwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgdm9pZCBzaG93VGFz
a1RpbWVyRmlyZWQoVGltZXI8Tm90aWZpY2F0aW9uPiopOworI2VuZGlmCisgICAgCiAgICAgYm9v
bCBtX2lzSFRNTDsKIAogICAgIC8vIFRleHQgbm90aWZpY2F0aW9ucy4KQEAgLTE1OCw5ICsxODIs
MTAgQEAgcHJpdmF0ZToKIAogICAgIGVudW0gTm90aWZpY2F0aW9uU3RhdGUgewogICAgICAgICBJ
ZGxlID0gMCwKLSAgICAgICAgTG9hZGluZyA9IDEsCisgICAgICAgIExvYWRpbmdJY29uID0gMSwK
ICAgICAgICAgU2hvd2luZyA9IDIsCi0gICAgICAgIENhbmNlbGxlZCA9IDMKKyAgICAgICAgQ2Fu
Y2VsbGVkSWNvbiA9IDMsCisgICAgICAgIENsb3NlZCA9IDQsCiAgICAgfTsKIAogICAgIE5vdGlm
aWNhdGlvblN0YXRlIG1fc3RhdGU7CkBAIC0xNzEsNiArMTk2LDkgQEAgcHJpdmF0ZToKIAogICAg
IFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBtX2xvYWRlcjsKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2ljb25EYXRhOworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIE93blB0cjxU
aW1lcjxOb3RpZmljYXRpb24+ID4gbV9zaG93VGFza1RpbWVyOworI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5pZGwKaW5kZXggMWZiNjc0NmQ0NDczY2RjZjk5M2ZhZDQ2ODE4MzY5MjUxMzM4MGMy
Mi4uMDc5ZjEzZWNhMzE4MzZiMWU0MmIzOTQ1MjQ3ZjE0ZDk4NzNiZGZhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbApAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzUsNyArMzUsMTIg
QEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICBDb25kaXRpb25hbD1OT1RJRklDQVRJT05TfExF
R0FDWV9OT1RJRklDQVRJT05TLAogICAgICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgICAgIEV2
ZW50VGFyZ2V0LAorI2lmIGRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9O
T1RJRklDQVRJT05TCisgICAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB0aXRsZSwgaW4g
W09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRGljdGlvbmFyeSBvcHRpb25zKSwKKyAgICAg
ICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyNlbHNlCiAgICAgICAgIE9taXRD
b25zdHJ1Y3RvcgorI2VuZGlmCiAgICAgXSBOb3RpZmljYXRpb24gewogICAgICAgICB2b2lkIHNo
b3coKTsKICNpZiBkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxF
X0xFR0FDWV9OT1RJRklDQVRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25DZW50ZXIuaAppbmRleCBhMDQ3YWJmODEwOTJiYmFiY2YxNjQ3NjAyMDMz
YmUyZjJjZjY4YTI3Li40OTI5OWUxYTAyYTkxMWU5MzA2MjVkMzJmYTY0ODMzZGJjYzNhMWVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVy
LmgKQEAgLTUzLDYgKzUzLDcgQEAgY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8Tm90aWZpY2F0aW9uQ2VudGVyPiwgcHVibGljIEFjdGl2ZUQKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgTm90aWZpY2F0aW9uQ2xpZW50Kik7CiAKKyNpZiBFTkFCTEUoTEVHQUNZ
X05PVElGSUNBVElPTlMpCiAgICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZUhUTUxO
b3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBVUkksIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsK
ICAgICAgICAgaWYgKCFjbGllbnQoKSkgewpAQCAtNjUsNyArNjYsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+Y29tcGxldGVVUkwoVVJJKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBl
YywgdGhpcyk7CiAgICAgfQorI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElP
TlMpCiAgICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZU5vdGlmaWNhdGlvbihjb25z
dCBTdHJpbmcmIGljb25VUkksIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9k
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgewogICAgICAgICBpZiAoIWNsaWVudCgpKSB7CkBA
IC03NCw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICByZXR1cm4gTm90aWZp
Y2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGljb25VUkksIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgZWMsIHRoaXMpOwogICAgIH0KKyNlbmRpZgogCiAgICAgTm90aWZpY2F0aW9uQ2xpZW50
KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwKaW5kZXggN2IwZmMy
NTU1N2NjNTBhM2I1NTc4YzMyYjgyMjQ1MDkxYzExYzI3Yi4uZTUwODQ0N2Q0OWViYWE0MTljZmU3
MjUwMDI0YzkzMTE2MmVlZGQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzYsMTAgKzM2LDEyIEBAIG1vZHVsZSB0
aHJlYWRzIHsKICAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgICAgICBPbWl0Q29uc3RydWN0
b3IKICAgICBdIE5vdGlmaWNhdGlvbkNlbnRlciB7CisjaWYgZGVmaW5lZChFTkFCTEVfTEVHQUNZ
X05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUwogI2lmICFkZWZp
bmVkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgfHwgIUVOQUJMRV9URVhUX05PVElG
SUNBVElPTlNfT05MWQogICAgICAgIFtWOEN1c3RvbV0gTm90aWZpY2F0aW9uIGNyZWF0ZUhUTUxO
b3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIHVybCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZW5k
aWYKICAgICAgICBbVjhDdXN0b21dIE5vdGlmaWNhdGlvbiBjcmVhdGVOb3RpZmljYXRpb24oaW4g
RE9NU3RyaW5nIGljb25VcmwsIGluIERPTVN0cmluZyB0aXRsZSwgaW4gRE9NU3RyaW5nIGJvZHkp
IHJhaXNlcyhET01FeGNlcHRpb24pOworI2VuZGlmCiAKICAgICAgICBpbnQgY2hlY2tQZXJtaXNz
aW9uKCk7CiAgICAgICAgW0N1c3RvbV0gdm9pZCByZXF1ZXN0UGVybWlzc2lvbihpbiBWb2lkQ2Fs
bGJhY2sgY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCmluZGV4IDgxMjA5MzYwMTYzNzQ5Yjc2
NmZjN2I4ZDNkNzA2MDI3Y2IyN2Q2ZGEuLmM4YjFlMmQxZTM3YTAxMjBiODkwNzAwYTliZDU4NjZm
Zjg1NmE4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Yk5vdGlmaWNhdGlvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KQEAgLTEwOCw2ICsxMDgsNyBAQCB2b2lkIFdl
Yk5vdGlmaWNhdGlvbkNsaWVudDo6Y2xlYXJOb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7
CiAgICAgICAgIFdlYk5vdGlmaWNhdGlvbiAqd2ViTm90aWZpY2F0aW9uID0gd2ViTm90aWZpY2F0
aW9uc1tpXS5nZXQoKTsKICAgICAgICAgW25zSURzIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVy
V2l0aFVuc2lnbmVkTG9uZ0xvbmc6W3dlYk5vdGlmaWNhdGlvbiBub3RpZmljYXRpb25JRF1dXTsK
KyAgICAgICAgY29yZSh3ZWJOb3RpZmljYXRpb24pLT5maW5hbGl6ZSgpOwogICAgICAgICBtX25v
dGlmaWNhdGlvbk1hcC5yZW1vdmUoY29yZSh3ZWJOb3RpZmljYXRpb24pKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCAyNmU1NDA3NDRiZDUyNzRjOWI2
ZGFjZWVhNWJmOTRmYTNhZTA0OTczLi42YmM2YTQ4MWUxNTEwYWNmOGRlNzJmZjBmMTMxM2IwOTdj
MGRlOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xNTMsNiAr
MTUzLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCoKICAgICAgICAgUmVmUHRyPE5vdGlmaWNh
dGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC50YWtlKG5vdGlmaWNhdGlv
bklEc1tpXSk7CiAgICAgICAgIGlmICghbm90aWZpY2F0aW9uKQogICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIG5vdGlmaWNhdGlvbi0+ZmluYWxpemUoKTsKICAgICAgICAgbV9ub3RpZmlj
YXRpb25NYXAucmVtb3ZlKG5vdGlmaWNhdGlvbik7CiAgICAgfQogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137855</attachid>
            <date>2012-04-19 00:05:18 -0700</date>
            <delta_ts>2012-04-19 13:25:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80477-20120419000726.patch</filename>
            <type>text/plain</type>
            <size>31607</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDM1M2ExYWVhMzU2Y2Y5
OTlhNzY4YjRmMzYzN2YzMjVjNjZiN2E2OS4uZWZiMmEwMGRkOTk4NGM1Y2IwMWE4NDFjNTFmMGFi
ZGUxYzE4YmRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTA0LTE4ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTm90aWZpY2F0aW9uIGNvbnN0
cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MDQ3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA5MTI0MzE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgd2lsbCBiZSBhZGRlZCBvbmNl
IHRoZXJlIGlzIHN1cHBvcnQgZm9yIHdlYiBub3RpZmljYXRpb25zIG9uIHRoZSBNYWMgcG9ydHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IGZpbmFsaXplKCkgZnVuY3Rpb24u
CisKKyAgICAgICAgTW9kaWZ5IERpY3Rpb25hcnkgdG8gc3VwcG9ydCBjcmVhdGlvbiBvZiBldmVu
dCBsaXN0ZW5lcnMuCisgICAgICAgICogYmluZGluZ3MvanMvRGljdGlvbmFyeS5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6aXNPYmplY3QpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgSlNE
aWN0aW9uYXJ5IGlzIHZhbGlkLgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6aXNVbmRl
ZmluZWRPck51bGwpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgSlNEaWN0aW9uYXJ5IGlzIHZhbGlkLgor
ICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0KTogQWRkIGNvbnZlbmllbmNlIGZ1bmN0
aW9uIHRvIHRha2UgY29uc3QgY2hhciogZm9yCisgICAgICAgIHByb3BlcnR5IG5hbWUsIHRvIHBy
ZXZlbnQgaGF2aW5nIHRvIGRvIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gV1RGOjpTdHJpbmcuCisg
ICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRFdmVudExpc3RlbmVyKTogQWRkIGZ1bmN0
aW9uIHRvIGNyZWF0ZSBldmVudCBsaXN0ZW5lcgorICAgICAgICBmcm9tIHRoZSBkaWN0aW9uYXJ5
LgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6YXNKU09iamVjdCk6IEhlbHBlciB0byBj
b252ZXJ0IFdlYkNvcmUgb2JqZWN0cyB0byBKUyB3cmFwcGVyLgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKTogSW1w
bGVtZW50IGFzSlNPYmplY3QoKSBmb3IgTm90aWZpY2F0aW9uLgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRGljdGlvbmFyeS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5OjpleGVj
U3RhdGUpOiBFeHBvc2UgdGhlIGV4ZWMgc3RhdGUgc28gdGhhdCB0aGUgRGljdGlvbmFyeQorICAg
ICAgICBjYW4gb2J0YWluIGl0cyB3b3JsZCBmb3IgY3JlYXRpbmcgdGhlIGV2ZW50IGxpc3RlbmVy
LgorCisgICAgICAgICogYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGljdGlvbmFyeTo6Z2V0RXZlbnRMaXN0ZW5lcik6IFN0dWIgaW1wbGVtZW50YXRpb24uCisK
KyAgICAgICAgQWRkIG5ldyBjb25zdHJ1Y3RvciB0byBpZGwgZGVmaW5pdGlvbnMuCisgICAgICAg
ICogbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbDogQWRkIE5vdGlmaWNh
dGlvbiBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5p
ZGw6IElmIEVOQUJMRShOT1RJRklDQVRJT05TKSBpcyB0dXJuZWQgb24sIGRlZmluZQorICAgICAg
ICB0aGUgY29uc3RydWN0b3IuIE90aGVyd2lzZSwgdXNlIE9taXRDb25zdHJ1Y3Rvci4KKyAgICAg
ICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGw6IFdyYXAgY3JlYXRpb24g
ZnVuY3Rpb25zIGluCisgICAgICAgIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykuCisgICAg
ICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaDogRGl0dG8uCisgICAgICAg
IChOb3RpZmljYXRpb25DZW50ZXIpOgorCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaDoKKyAgICAgICAgKE5vdGlmaWNhdGlvbik6IFdyYXAgbGVnYWN5IGNvbnN0cnVjdG9y
cyBpbiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpLgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjpjcmVhdGUpOiBOZXcgY3JlYXRpb24gZnVuY3Rpb24gYmFzZWQgb24gZGlzY3Vz
c2lvbnMgaW4gV0cuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0QW5kQWRkRXZlbnRMaXN0ZW5lcik6IEhlbHBlciBmdW5jdGlv
biB0byBnZXQgdGhlIGxpc3RlbmVyIGZyb20gdGhlCisgICAgICAgIGRpY3Rpb25hcnksIGFuZCBh
dHRhY2ggdG8gdGVoIG5vdGlmaWNhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bjo6Y3JlYXRlKTogQ3JlYXRlIHRoZSBub3RpZmljYXRpb24sIHRoZW4gYXBwbHkgd2hhdGV2ZXIK
KyAgICAgICAgcHJvcGVydGllcyBjYW4gYmUgZm91bmQgaW4gdGhlIGRpY3Rpb25hcnkgdG8gdGhl
IG5vdGlmaWNhdGlvbi4gSW4gb3JkZXIgdG8KKyAgICAgICAgYXR0YWNoIHRoZSBldmVudCBsaXN0
ZW5lcnMsIHRoZSBub3RpZmljYXRpb24gaGFzIHRvIGhhdmUgYmVlbiBjcmVhdGVkLCB3aGljaCBp
cworICAgICAgICB3aHkgdGhpcyBhbGwgaGFwcGVucyBpbiB0aGUgZmFjdG9yeSBtZXRob2QgYW5k
IG5vdCBpbiB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OnNldEJvZHkpOiBBZGRlZCBzbyB0aGF0IGl0IGNhbiBiZSBzZXQgaWYgd2UgZmluZCBpdCBpbiB0
aGUKKyAgICAgICAgZGljdGlvbmFyeS4KKworICAgICAgICBUaGUgbmV3IGNvbnN0cnVjdG9yIHF1
ZXVlcyBhIHRhc2sgdG8gc2hvdyB3aGVuIGl0IGlzIGNyZWF0ZWQuIFRvIHN1cHBvcnQgdGhpcywg
d2UKKyAgICAgICAgdXNlIGEgb25lLXNob3QgdGltZXIgdGhhdCBjYWxscyBzaG93KCkgaW4gdGhl
IG5leHQgaXRlcmF0aW9uIG9mIHRoZSBydW4gbG9vcC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6Tm90aWZpY2F0aW9uKTogU3RhcnQgdGhlIHRpbWVyLgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjpzaG93VGFza1RpbWVyRmlyZWQpOiBDYWxsIHNob3coKS4KKworICAg
ICAgICBOb3RpZmljYXRpb25zLCBub3QgYmVpbmcgYXR0YWNoZWQgdG8gdGhlIERPTSwgY291bGQg
YmUgR0MnZWQgYnkgdGhlIEpTIGVuZ2luZQorICAgICAgICBiZWZvcmUgaXRzIGxpZmUgY3ljbGUg
aGFzIGNvbXBsZXRlZC4gV2UgYWRkIGNhbGxzIHRvIHNldFBlbmRpbmdBY3Rpdml0eSgpIHdoZW4g
dGhlCisgICAgICAgIG5vdGlmaWNhdGlvbiBoYXMgYmVlbiBzaG93biwgYW5kIHdoZW4gaXQgaXMg
Y2xvc2VkLCB3ZSB1bnNldFBlbmRpbmdBY3Rpdml0eSgpLgorICAgICAgICBUbyBndWFyYW50ZWUg
dGhhdCB3ZSBvbmx5IGNhbGwgdGhpcyBvbmNlLCB3ZSBhZGQgYSBuZXcgc3RhdGUgdG8gdGhlIE5v
dGlmaWNhdGlvbgorICAgICAgICBzdGF0ZSBtYWNoaW5lLCBjYWxsZWQgTm90aWZpY2F0aW9uU3Rh
dGU6OkNsb3NlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y2xvc2UpOiBJbmNs
dWRlIENsb3NlZCBzdGF0ZSB0byBtYWNoaW5lOyBkbyBub3RoaW5nLgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQpOiBDYWxsIGZpbmFsaXplKCkuCisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmZpbmFsaXplKTogSWYgdGhlIHN0YXRlIGlz
IG5vdCBDbG9zZWQsIHdlIHVuc2V0UGVuZGluZ0FjdGl2aXR5KCkKKyAgICAgICAgdG8gbWFrZSBp
dCBhdmFpbGFibGUgZm9yIEdDLgorCisgICAgICAgIEluIE5vdGlmaWNhdGlvbiwgcmVuYW1lIHNv
bWUgb2YgdGhlIHN0YWdlcyBhbmQgZnVuY3Rpb25zIHRvIG1vcmUgY2xlYXJseSBjb21tdW5pY2F0
ZQorICAgICAgICB0aGF0IHRoZXkgbW9zdGx5IGRlYWwgd2l0aCB0aGUgaWNvbiBvZiB0aGUgbm90
aWZpY2F0aW9uLCBpbnN0ZWFkIG9mIGdlbmVyYWwgbG9hZGluZy4KKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbjo6c2hvdyk6IFJlZmFjdG9yZWQgdG8gdXNlIExvYWRpbmdJY29uIGFuZCBD
YW5jZWxsZWRJY29uLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjbG9zZSk6IFJl
ZmFjdG9yZWQgdG8gdXNlIExvYWRpbmdJY29uIGFuZCBDYW5jZWxsZWRJY29uLgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKTogUmVmYWN0b3IgdG8gdXNlIExv
YWRpbmdJY29uLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzdGFydExvYWRpbmdJ
Y29uKTogUmVuYW1lZCBmcm9tIHN0YXJ0TG9hZGluZygpLgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjpzdG9wTG9hZGluZ0ljb24pOiBSZW5hbWVkIGZyb20gc3RvcExvYWRpbmcoKS4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZmluaXNoTG9hZGluZyk6CisKKyAgICAgICAg
QWRkIERpY3Rpb25hcnkuY3BwLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorCiAyMDEyLTA0LTE2ICBHZW9yZ2UgU3RhaWtvcyAgPHN0YWlrb3NAd2Via2l0
Lm9yZz4KIAogICAgICAgICBGaXggc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNoIHdhcm5pbmcgZm9y
IEJsYWNrQmVycnkgZGVidWcgYnVpbGRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGYwOWU5NzhmODMy
MDMyMjVmMDhkNDM0YTMxYTYwODEzZDYzMjFiZjAuLjU5Y2Q4YTE4ZTgzZmZiNDc3ZjFjZTkxODk4
ODQxYjVkNWY3ZjUxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0w
NC0xOCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIE5vdGlmaWNh
dGlvbiBjb25zdHJ1Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODA0NzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwOTEyNDMxPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uQ2xp
ZW50OjpjbGVhck5vdGlmaWNhdGlvbnMpOiBXaGVuIGNsZWFyaW5nIG5vdGlmaWNhdGlvbnMsIGZp
bmFsaXplCisgICAgICAgIHRoZW0gc28gdGhhdCB0aGV5IGNhbiBiZSBjbGVhbmVkIHVwIGJ5IHRo
ZSBHQy4KKwogMjAxMi0wNC0xMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTiAocjEwMjI2Mik6IGlBZCBQcm9kdWNlciByZWxpZXMgb24gQ1NTU3R5
bGVEZWNsYXJhdGlvbiBwcm9wZXJ0eSBzZXR0ZXJzIHJlc3BlY3RpbmcgJyFpbXBvcnRhbnQnCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggNjYyZTQ2ZjYzMGQ1N2NhNjllYTNhMTJiOWM0OTNjODkwMjc1YWYxMS4uNjYx
ZWQwZDNmNWZkNzdhZWE1MjcwZDczOGIzMzZhYTBkYzc0NWZjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDEyLTA0LTE4ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgTm90aWZpY2F0aW9uIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQ3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTA5MTI0MzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0
aW9ucyk6IFdoZW4gY2xlYXJpbmcgbm90aWZpY2F0aW9ucywKKyAgICAgICAgZmluYWxpemUgdGhl
bSBzbyB0aGF0IHRoZXkgY2FuIGJlIGNsZWFuZWQgdXAgYnkgdGhlIEdDLgorCiAyMDEyLTA0LTE1
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBVc2UgR1JlZlB0ciB0byBkZWxldGUgdGhlIGRlZmF1bHQgd2ViIGNvbnRleHQgaW4gV2Vi
S2l0MiBHVEsrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1NzRiYjA0NjZmZGI4
MzBlMmE0MDhjY2JhNDUxNWY3MzE5NzQ0ODdkLi40MjU3NTVlY2UzZGNiMGI2MmMxOTE0ZDg0Mjdj
NmQyMjgzMGUwYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE0NzEsNiAr
MTQ3MSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0phdmFTY3JpcHRDYWxsRnJhbWUuaCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGlj
dGlvbmFyeS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKaW5kZXggYTQxNzJjNjY1Mjg1NTFmYjAwNGJkMTJkZGVjYWI5M2M4ZGQ3ZWUxNy4u
Mjc1MzMzZjExNjg1ZDZlOWZhZDEzY2VhNTM5OTBhNWFlYTZhMDk1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBA
IC0yNDYsNiArMjQ2LDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0
aW9uLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5jcHAg
XAogICAgICAgICBiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwIFwKKyAgICAgICAgYmlu
ZGluZ3MvanMvRGljdGlvbmFyeS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xs
ZXIuY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAgXAog
ICAgICAgICBiaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQppbmRl
eCBkMDc0YTkwMWU5NWNhODdkMWRiMTI4MzY2NWNkNDM2NTI0ZjM2MzE0Li41MTU1ODFjZDBlZGIz
OGQ1NDVhNmJmMzRjYzIzZTNmYzY3Zjk1ZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9V
c2VKU0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCkBAIC0yNSw2ICsy
NSw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0NhbGxi
YWNrRnVuY3Rpb24uY3BwCiAgICAgYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmNw
cAogICAgIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAKKyAgICBiaW5kaW5ncy9qcy9E
aWN0aW9uYXJ5LmNwcAogICAgIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKICAgICBiaW5k
aW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTQXR0ckN1
c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggN2I0NzQ0OThkN2RiZTA4YzUxZGFhNjhi
MDczZjUwOTQ1NjY2MDM2My4uYzBmZGI2ODMyZDc3NDg3MGY3ZWJmM2JlMjAyMzdjMDc4Y2FlNzQ2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTIxNTUsNiArMjE1NSw3IEBAIF93a0NyZWF0ZVZN
UHJlc3N1cmVEaXNwYXRjaE9uTWFpblF1ZXVlCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8
IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKIF9fWk43V2ViQ29yZTEyTm90aWZpY2F0aW9u
QzFFdgogX19aTjdXZWJDb3JlMTJOb3RpZmljYXRpb25EMUV2CitfX1pON1dlYkNvcmUxMk5vdGlm
aWNhdGlvbjhmaW5hbGl6ZUV2CiBfX1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbjE3ZGlzcGF0Y2hT
aG93RXZlbnRFdgogX19aTjdXZWJDb3JlMTJOb3RpZmljYXRpb24xOGRpc3BhdGNoQ2xpY2tFdmVu
dEV2CiBfX1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbjE4ZGlzcGF0Y2hDbG9zZUV2ZW50RXYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCAwZDY3MGFkYTIyNTRjZTRjYTYzNTUxMzUzNmMzNjVhZjIxZTcxYzJh
Li5hMDJlOThkMWQwMmU4YmI5ZWQ2NTU4YmJmN2FkMzcyYWNhYTE1ZjRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC0yMDI2LDYgKzIwMjYsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTWFNM
VFByb2Nlc3NvckN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0phdmFTY3Jp
cHRDYWxsRnJhbWUuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2Fs
bEZyYW1lLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5j
cHAKaW5kZXggNzViZWYxNTQ5NjAyZmRkOTU5ZDc2ZDg5ZGY0NzUyMTcwOWQyNGM5NS4uMmMxYjc4
NWZlMGY4NWM4YWFhYzc2ODk5YTRkODBjOWI2YTA5ZTkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKQEAgLTI2LDYgKzI2LDExIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCisjaW5jbHVkZSAiSlNOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb24u
aCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0zNSwxNCArNDAsMTQgQEAgRGljdGlvbmFyeTo6RGljdGlvbmFyeShKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
UmVzdWx0PgotYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUs
IFJlc3VsdCYgcmVzdWx0KSBjb25zdAorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCit0ZW1w
bGF0ZTw+CitKU09iamVjdCogRGljdGlvbmFyeTo6YXNKU09iamVjdDxOb3RpZmljYXRpb24+KE5v
dGlmaWNhdGlvbiogb2JqZWN0KSBjb25zdAogewotICAgIGlmICghbV9kaWN0aW9uYXJ5LmlzVmFs
aWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIHJldHVybiBtX2RpY3Rpb25h
cnkuZ2V0KHByb3BlcnR5TmFtZS5hc2NpaSgpLmRhdGEoKSwgcmVzdWx0KTsKKyAgICByZXR1cm4g
YXNPYmplY3QodG9KUyhtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCksIGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKS0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KSwgb2JqZWN0KSk7CiB9CisjZW5kaWYKIAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RGljdGlvbmFyeS5oCmluZGV4IDkzYTQ4YjhhZTU3NzE1NjRmMGY3YWZiM2QxN2U4MjVmMzhlNmQz
ZTYuLmE3NzczNDJiNzNjZTQ3MjM3MjExOTQ2YzExNTg1ZjNmMDBkMmQ5OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNkZWZpbmUg
RGljdGlvbmFyeV9oCiAKICNpbmNsdWRlICJKU0RpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJKU0V2
ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNj
cmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNDYsMTYgKzQ3
LDYyIEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhIHZhbHVlIHdhcyBmb3Vu
ZCBmb3IgdGhlIHByb3ZpZGVkIHByb3BlcnR5LgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1
bHQ+CisgICAgYm9vbCBnZXQoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBSZXN1bHQmKSBjb25z
dDsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgogICAgIGJvb2wgZ2V0KGNvbnN0IFN0
cmluZyYgcHJvcGVydHlOYW1lLCBSZXN1bHQmKSBjb25zdDsKKyAgICAKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KKyAgICBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVu
ZXIoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0OworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICAgIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRM
aXN0ZW5lcihjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgVCogdGFyZ2V0KSBjb25zdDsKIAot
ICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxz
ZTsgfQotICAgIGJvb2wgaXNVbmRlZmluZWRPck51bGwoKSBjb25zdCB7IG5vdEltcGxlbWVudGVk
KCk7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IHJldHVybiBt
X2RpY3Rpb25hcnkuaXNWYWxpZCgpOyB9CisgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGljdGlvbmFyeS5pc1ZhbGlkKCk7IH0KICAgICBib29sIGdldFdpdGhV
bmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJpbmcmLCBTdHJpbmcmKSBjb25zdCB7IG5vdElt
cGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgorICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgorICAgIEpTQzo6SlNPYmplY3QqIGFzSlNPYmplY3QoVCopIGNvbnN0OworICAg
IAogICAgIEpTRGljdGlvbmFyeSBtX2RpY3Rpb25hcnk7CiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgUmVzdWx0PgorYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgY2hhciogcHJvcGVydHlOYW1l
LCBSZXN1bHQmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZGljdGlvbmFyeS5pc1ZhbGlk
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gbV9kaWN0aW9uYXJ5
LmdldChwcm9wZXJ0eU5hbWUsIHJlc3VsdCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXN1
bHQ+Citib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgUmVz
dWx0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldChwcm9wZXJ0eU5hbWUudXRmOCgp
LmRhdGEoKSwgcmVzdWx0KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIoY29uc3QgY2hhciog
cHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RpY3Rpb25hcnku
aXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFNjcmlwdFZhbHVlIGV2ZW50TGlz
dGVuZXI7CisgICAgaWYgKCFtX2RpY3Rpb25hcnkudHJ5R2V0UHJvcGVydHkocHJvcGVydHlOYW1l
LCBldmVudExpc3RlbmVyKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGV2ZW50TGlzdGVu
ZXIuaGFzTm9WYWx1ZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4gSlNF
dmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QoZXZlbnRMaXN0ZW5lci5qc1ZhbHVlKCkpLCBh
c0pTT2JqZWN0KHRhcmdldCksIHRydWUsIGN1cnJlbnRXb3JsZChtX2RpY3Rpb25hcnkuZXhlY1N0
YXRlKCkpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUsIFQqIHRhcmdldCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0RXZlbnRMaXN0ZW5lcihw
cm9wZXJ0eU5hbWUudXRmOCgpLmRhdGEoKSwgdGFyZ2V0KTsKK30KKwogfQogCiAjZW5kaWYgLy8g
RGljdGlvbmFyeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rp
Y3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCmlu
ZGV4IGU5ZDk5ZTFmYzAzZTkxYThkZWUwOTY4NjNiZTBmYzc4OWU1YTAzZDAuLjhmNjMzN2Q2ZTRh
Mzg0ZjhiNWRlMTcyOGU2MDU1NTkxZTQyMTE0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRGljdGlvbmFyeS5oCkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgUmVzdWx0PgogICAgIGJvb2wgZ2V0KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFt
ZSwgUmVzdWx0JikgY29uc3Q7CiAKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9leGVjOyB9CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4g
bV9leGVjICYmIG1faW5pdGlhbGl6ZXJPYmplY3Q7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaAppbmRleCAzMjE2NGI4Y2JiMjNhNTRhYmM1ODQ5Nzk5
NjI1OTZjNWZkMmZmODMxLi5lNTg4OTBlNTlmYjI1MjE2NTIwNzFjZjg1ZjYwMTU5MTMwMTk4NzBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjaWZuZGVmIERpY3Rpb25hcnlfaAogI2RlZmluZSBEaWN0aW9uYXJ5X2gKIAorI2luY2x1
ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKQEAgLTM4LDEyICsz
OSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01TdHJpbmdMaXN0OwogY2xhc3Mg
RE9NV2luZG93OwogY2xhc3MgSURCS2V5UmFuZ2U7Ci1jbGFzcyBTdG9yYWdlOwogY2xhc3MgTWVk
aWFLZXlFcnJvcjsKLWNsYXNzIFRyYWNrQmFzZTsKK2NsYXNzIE5vdGlmaWNhdGlvbjsKIGNsYXNz
IFNwZWVjaFJlY29nbml0aW9uRXJyb3I7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdDsK
IGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdDsKK2NsYXNzIFN0b3JhZ2U7CitjbGFz
cyBUcmFja0Jhc2U7CiAKIGNsYXNzIERpY3Rpb25hcnkgewogcHVibGljOgpAQCAtODQsNiArODYs
OCBAQCBwdWJsaWM6CiAKICAgICBib29sIGdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25z
dCBTdHJpbmcmLCBTdHJpbmcmKSBjb25zdDsKIAorICAgIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gZ2V0RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmLCBOb3RpZmljYXRpb24qKSBjb25zdCB7
IHJldHVybiAwOyB9CisKIHByaXZhdGU6CiAgICAgYm9vbCBnZXRLZXkoY29uc3QgU3RyaW5nJiBr
ZXksIHY4OjpMb2NhbDx2ODo6VmFsdWU+JikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsCmluZGV4IDA1
N2I2NjZiNmUzZDc0N2U1OTc0NDBjNGYzZWJjOWYxNjdiZTMzZjkuLmQ4MjQxNjg5YWY0NDVkZjU4
YWYwNGFkNjEzNDAwNTA0MDM3ZDE1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
bm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtMzEsNiArMzEsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgU3VwcGxlbWVudGFs
PURPTVdpbmRvdwogICAgIF0gRE9NV2luZG93Tm90aWZpY2F0aW9ucyB7CiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBOb3RpZmljYXRpb25DZW50ZXIgd2Vi
a2l0Tm90aWZpY2F0aW9uczsKKyAgICAgICAgYXR0cmlidXRlIE5vdGlmaWNhdGlvbkNvbnN0cnVj
dG9yIE5vdGlmaWNhdGlvbjsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggMjI0MWIzNjA3M2NiZDZkNmRkZjQ2MmFkM2E4
ZWIxZTA5NTE2OTQ5Yi4uZDNlZWQ3Y2JkMGRlNmIxZWJiYjBjNjdiZmU1NTdjMmI0OGY2ZTU0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAt
MzUsNiArMzUsOSBAQAogCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAKKyNpbmNsdWRlICJE
T01XaW5kb3cuaCIKKyNpbmNsdWRlICJET01XaW5kb3dOb3RpZmljYXRpb25zLmgiCisjaW5jbHVk
ZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXJyb3JF
dmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTUyLDYgKzU1LDcgQEAgTm90aWZp
Y2F0aW9uOjpOb3RpZmljYXRpb24oKQogewogfQogCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQogTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgS1VSTCYgdXJsLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0
cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNv
bnRleHQsIHRoaXMpCiAgICAgLCBtX2lzSFRNTCh0cnVlKQpAQCAtNzAsNyArNzQsOSBAQCBOb3Rp
ZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBLVVJMJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIEV4YwogCiAgICAgbV9ub3RpZmljYXRpb25VUkwgPSB1cmw7CiB9Cisj
ZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKIE5vdGlmaWNhdGlvbjo6
Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29u
c3QgU3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNl
cHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKQog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2lzSFRNTChmYWxz
ZSkKQEAgLTkwLDE1ICs5NiwzMyBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK05v
dGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgdGl0bGUpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhp
cykKKyAgICAsIG1faXNIVE1MKGZhbHNlKQorICAgICwgbV90aXRsZSh0aXRsZSkKKyAgICAsIG1f
c3RhdGUoSWRsZSkKKyAgICAsIG1fc2hvd1Rhc2tUaW1lcihhZG9wdFB0cihuZXcgVGltZXI8Tm90
aWZpY2F0aW9uPih0aGlzLCAmTm90aWZpY2F0aW9uOjpzaG93VGFza1RpbWVyRmlyZWQpKSkKK3sK
KyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBtX25vdGlmaWNhdGlvbkNl
bnRlciA9IERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnMoc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZG9tV2luZG93KCkpOworICAgIAorICAgIEFTU0VS
VChtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkpOworICAgIG1fc2hvd1Rhc2tUaW1lci0+
c3RhcnRPbmVTaG90KDApOworfQorI2VuZGlmCiAKIE5vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlv
bigpIAogewotICAgIGlmIChtX3N0YXRlID09IExvYWRpbmcpIHsKKyAgICBpZiAobV9zdGF0ZSA9
PSBMb2FkaW5nSWNvbikgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
Y2xvc2UoKTsKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiBQ
YXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgS1VSTCYg
dXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywg
UGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKSAKIHsgCiAgICAgUmVmUHRy
PE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24odXJs
LCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKSk7CkBAIC0xMTIsNiArMTM2LDMzIEBAIFBhc3NSZWZQ
dHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBTdHJpbmcmCiAgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAg
ICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVhc2UoKTsKIH0KKyNlbmRpZgorCisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCitzdGF0aWMgdm9pZCBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eSwgY29uc3QgRGlj
dGlvbmFyeSYgb3B0aW9ucywgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gb3B0aW9ucy5nZXRFdmVudExpc3RlbmVyKHBy
b3BlcnR5LCBub3RpZmljYXRpb24pOworICAgIGlmIChsaXN0ZW5lcikKKyAgICAgICAgbm90aWZp
Y2F0aW9uLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgbGlzdGVuZXIucmVsZWFzZSgpLCBm
YWxzZSk7Cit9CisKK1Bhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKQoreworICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5v
dGlmaWNhdGlvbihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKGNvbnRleHQsIHRpdGxlKSkpOwor
ICAgIFN0cmluZyBhcmd1bWVudDsKKyAgICBpZiAob3B0aW9ucy5nZXQoImJvZHkiLCBhcmd1bWVu
dCkpCisgICAgICAgIG5vdGlmaWNhdGlvbi0+c2V0Qm9keShhcmd1bWVudCk7CisgICAgaWYgKG9w
dGlvbnMuZ2V0KCJ0YWciLCBhcmd1bWVudCkpCisgICAgICAgIG5vdGlmaWNhdGlvbi0+c2V0VGFn
KGFyZ3VtZW50KTsKKyAgICBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zaG93
RXZlbnQsICJvbnNob3ciLCBvcHRpb25zLCBub3RpZmljYXRpb24uZ2V0KCkpOworICAgIGdldEFu
ZEFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsICJvbmNsb3NlIiwgb3B0
aW9ucywgbm90aWZpY2F0aW9uLmdldCgpKTsKKyAgICBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5lcnJvckV2ZW50LCAib25lcnJvciIsIG9wdGlvbnMsIG5vdGlmaWNhdGlvbi5n
ZXQoKSk7CisgICAgZ2V0QW5kQWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVu
dCwgIm9uY2xpY2siLCBvcHRpb25zLCBub3RpZmljYXRpb24uZ2V0KCkpOworCisgICAgbm90aWZp
Y2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVh
c2UoKTsKK30KKyNlbmRpZgogCiBjb25zdCBBdG9taWNTdHJpbmcmIE5vdGlmaWNhdGlvbjo6aW50
ZXJmYWNlTmFtZSgpIGNvbnN0CiB7CkBAIC0xMzAsMTAgKzE4MSwxMSBAQCB2b2lkIE5vdGlmaWNh
dGlvbjo6c2hvdygpCiAgICAgICAgICAgICAgICAgbV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVu
dCgpLT5zaG93KHRoaXMpOwogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIHN0YXJ0TG9h
ZGluZygpOworICAgICAgICBzdGFydExvYWRpbmdJY29uKCk7CiAjZWxpZiBQTEFURk9STShNQUMp
CiAgICAgaWYgKG1fc3RhdGUgPT0gSWRsZSAmJiBtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50
KCkpIHsKICAgICAgICAgbV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpLT5zaG93KHRoaXMp
OworICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAgICAgICAgIG1fc3RhdGUgPSBT
aG93aW5nOwogICAgIH0KICNlbHNlCkBAIC0xNDgsMTUgKzIwMCwxNiBAQCB2b2lkIE5vdGlmaWNh
dGlvbjo6Y2xvc2UoKQogICAgIHN3aXRjaCAobV9zdGF0ZSkgewogICAgIGNhc2UgSWRsZToKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMb2FkaW5nOgotICAgICAgICBtX3N0YXRlID0gQ2FuY2Vs
bGVkOwotICAgICAgICBzdG9wTG9hZGluZygpOworICAgIGNhc2UgTG9hZGluZ0ljb246CisgICAg
ICAgIG1fc3RhdGUgPSBDYW5jZWxsZWRJY29uOworICAgICAgICBzdG9wTG9hZGluZ0ljb24oKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTaG93aW5nOgogICAgICAgICBpZiAobV9ub3RpZmlj
YXRpb25DZW50ZXItPmNsaWVudCgpKQogICAgICAgICAgICAgbV9ub3RpZmljYXRpb25DZW50ZXIt
PmNsaWVudCgpLT5jYW5jZWwodGhpcyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2FuY2Vs
bGVkOgorICAgIGNhc2UgQ2FuY2VsbGVkSWNvbjoKKyAgICBjYXNlIENsb3NlZDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQogfQpAQCAtMTc4LDEyICsyMzEsMTIgQEAgdm9pZCBOb3RpZmljYXRpb246
OmNvbnRleHREZXN0cm95ZWQoKQogICAgICAgICBtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50
KCktPm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCh0aGlzKTsKIH0KIAotdm9pZCBOb3RpZmlj
YXRpb246OnN0YXJ0TG9hZGluZygpCit2b2lkIE5vdGlmaWNhdGlvbjo6c3RhcnRMb2FkaW5nSWNv
bigpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gSWRsZSkKICAgICAgICAgcmV0dXJuOwogICAgIHNl
dFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICBtX3N0YXRlID0gTG9hZGluZzsKKyAgICBtX3N0
YXRlID0gTG9hZGluZ0ljb247CiAgICAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgb3B0aW9uczsK
ICAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gRG9Ob3RTZW5kQ2FsbGJhY2tzOwogICAg
IG9wdGlvbnMuc25pZmZDb250ZW50ID0gRG9Ob3RTbmlmZkNvbnRlbnQ7CkBAIC0xOTMsNyArMjQ2
LDcgQEAgdm9pZCBOb3RpZmljYXRpb246OnN0YXJ0TG9hZGluZygpCiAgICAgbV9sb2FkZXIgPSBU
aHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCBS
ZXNvdXJjZVJlcXVlc3QoaWNvblVSTCgpKSwgb3B0aW9ucyk7CiB9CiAKLXZvaWQgTm90aWZpY2F0
aW9uOjpzdG9wTG9hZGluZygpCit2b2lkIE5vdGlmaWNhdGlvbjo6c3RvcExvYWRpbmdJY29uKCkK
IHsKICAgICBtX2ljb25EYXRhID0gMDsKICAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gcHJv
dGVjdChtX2xvYWRlcik7CkBAIC0yMDQsNyArMjU3LDcgQEAgdm9pZCBOb3RpZmljYXRpb246OmRp
ZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXMKIHsKICAgICBpbnQgc3RhdHVzID0gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKTsKICAgICBp
ZiAoc3RhdHVzICYmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID4gMjk5KSkgewotICAgICAgICBz
dG9wTG9hZGluZygpOworICAgICAgICBzdG9wTG9hZGluZ0ljb24oKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBtX2ljb25EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKQEAgLTIz
MiwxMyArMjg1LDIzIEBAIHZvaWQgTm90aWZpY2F0aW9uOjpkaWRGYWlsUmVkaXJlY3RDaGVjaygp
CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpmaW5pc2hMb2FkaW5nKCkKIHsKLSAgICBpZiAobV9zdGF0
ZSA9PSBMb2FkaW5nKSB7CisgICAgaWYgKG1fc3RhdGUgPT0gTG9hZGluZ0ljb24pIHsKICAgICAg
ICAgaWYgKG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKSAmJiBtX25vdGlmaWNhdGlvbkNl
bnRlci0+Y2xpZW50KCktPnNob3codGhpcykpCiAgICAgICAgICAgICBtX3N0YXRlID0gU2hvd2lu
ZzsKICAgICB9CiAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiB9CiAKK3ZvaWQgTm90
aWZpY2F0aW9uOjpmaW5hbGl6ZSgpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChtX3N0
YXRlID09IENsb3NlZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3RhdGUgPSBDbG9zZWQ7Cisg
ICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CisjZW5kaWYKK30KKwogdm9pZCBOb3RpZmlj
YXRpb246OmRpc3BhdGNoU2hvd0V2ZW50KCkKIHsKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLnNob3dFdmVudCwgZmFsc2UsIGZhbHNlKSk7CkBAIC0yNTIsNiAr
MzE1LDcgQEAgdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xpY2tFdmVudCgpCiB2b2lkIE5v
dGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KCkKIHsKICAgICBkaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAg
IGZpbmFsaXplKCk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaEVycm9yRXZlbnQo
KQpAQCAtMjU5LDYgKzMyMywxNCBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hFcnJvckV2
ZW50KCkKICAgICBkaXNwYXRjaEV2ZW50KEVycm9yRXZlbnQ6OmNyZWF0ZSgpKTsKIH0KIAorI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQordm9pZCBOb3RpZmljYXRpb246OnNob3dUYXNrVGltZXJG
aXJlZChUaW1lcjxOb3RpZmljYXRpb24+KiB0aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRp
bWVyLCB0aW1lciA9PSBtX3Nob3dUYXNrVGltZXIuZ2V0KCkpOworICAgIHNob3coKTsKK30KKyNl
bmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXggYTY3MTU5YTllMjRiYTJlOTkyNmFm
MDQwYzk0YzZmYjIyMmVjYmI4MS4uNTBlMWMyMjFjMDNiYjJhOTc3OGMxM2NjOGI5MGU2MTM3YjQz
MDU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCkBA
IC00NSw5ICs0NSwxNCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyNp
bmNsdWRlICJUaW1lci5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwg
RU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBEaWN0aW9uYXJ5OwogY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyOwogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CkBAIC02MCw4ICs2NSwxMyBAQCBjbGFzcyBO
b3RpZmljYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+LCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0LCBwdQogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIE5vdGlmaWNhdGlvbigpOworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBLVVJMJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNh
dGlvbkNlbnRlcj4gcHJvdmlkZXIpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlv
bj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3Qg
U3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYs
IFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcik7CisjZW5kaWYKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29u
c3QgRGljdGlvbmFyeSYgb3B0aW9ucyk7CisjZW5kaWYKICAgICAKICAgICB2aXJ0dWFsIH5Ob3Rp
ZmljYXRpb24oKTsKIApAQCAtNzgsNiArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVUkwo
S1VSTCB1cmwpIHsgbV9ub3RpZmljYXRpb25VUkwgPSB1cmw7IH0KICAgICAKICAgICBLVVJMIGlj
b25VUkwoKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KKwogICAgIFN0cmluZyB0aXRsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KICAgICBTdHJpbmcgYm9keSgpIGNvbnN0IHsgcmV0dXJu
IG1fYm9keTsgfQogCkBAIC0xMTcsNyArMTI4LDcgQEAgcHVibGljOgogICAgIC8vIEFjdGl2ZURP
TU9iamVjdCBpbnRlcmZhY2UKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwog
Ci0gICAgdm9pZCBzdG9wTG9hZGluZygpOworICAgIHZvaWQgc3RvcExvYWRpbmdJY29uKCk7CiAK
ICAgICBTaGFyZWRCdWZmZXIqIGljb25EYXRhKCkgeyByZXR1cm4gbV9pY29uRGF0YS5nZXQoKTsg
fQogICAgIHZvaWQgcmVsZWFzZUljb25EYXRhKCkgeyBtX2ljb25EYXRhID0gMDsgfQpAQCAtMTMx
LDkgKzE0MiwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpOwog
CisgICAgdm9pZCBmaW5hbGl6ZSgpOworCiBwcml2YXRlOgorI2lmIEVOQUJMRShMRUdBQ1lfTk9U
SUZJQ0FUSU9OUykKICAgICBOb3RpZmljYXRpb24oY29uc3QgS1VSTCYsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+
KTsKICAgICBOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBi
b2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNl
cHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+KTsKKyNlbmRpZgorI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIE5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisjZW5kaWYKKworICAgIHZvaWQgc2V0Qm9k
eShjb25zdCBTdHJpbmcmIGJvZHkpIHsgbV9ib2R5ID0gYm9keTsgfQogCiAgICAgLy8gRXZlbnRU
YXJnZXQgaW50ZXJmYWNlCiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYo
KTsgfQpAQCAtMTQxLDkgKzE2MSwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSog
ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CiAKLSAgICB2b2lkIHN0YXJ0TG9hZGluZygpOworICAg
IHZvaWQgc3RhcnRMb2FkaW5nSWNvbigpOwogICAgIHZvaWQgZmluaXNoTG9hZGluZygpOwogCisj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgdm9pZCBzaG93VGFza1RpbWVyRmlyZWQoVGlt
ZXI8Tm90aWZpY2F0aW9uPiopOworI2VuZGlmCisgICAgCiAgICAgYm9vbCBtX2lzSFRNTDsKIAog
ICAgIC8vIFRleHQgbm90aWZpY2F0aW9ucy4KQEAgLTE1OCw5ICsxODIsMTAgQEAgcHJpdmF0ZToK
IAogICAgIGVudW0gTm90aWZpY2F0aW9uU3RhdGUgewogICAgICAgICBJZGxlID0gMCwKLSAgICAg
ICAgTG9hZGluZyA9IDEsCisgICAgICAgIExvYWRpbmdJY29uID0gMSwKICAgICAgICAgU2hvd2lu
ZyA9IDIsCi0gICAgICAgIENhbmNlbGxlZCA9IDMKKyAgICAgICAgQ2FuY2VsbGVkSWNvbiA9IDMs
CisgICAgICAgIENsb3NlZCA9IDQsCiAgICAgfTsKIAogICAgIE5vdGlmaWNhdGlvblN0YXRlIG1f
c3RhdGU7CkBAIC0xNzEsNiArMTk2LDkgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxUaHJlYWRh
YmxlTG9hZGVyPiBtX2xvYWRlcjsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2ljb25EYXRh
OworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIE93blB0cjxUaW1lcjxOb3RpZmljYXRp
b24+ID4gbV9zaG93VGFza1RpbWVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwKaW5k
ZXggMWZiNjc0NmQ0NDczY2RjZjk5M2ZhZDQ2ODE4MzY5MjUxMzM4MGMyMi4uMDc5ZjEzZWNhMzE4
MzZiMWU0MmIzOTQ1MjQ3ZjE0ZDk4NzNiZGZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzUsNyArMzUsMTIgQEAgbW9kdWxlIHRocmVh
ZHMgewogICAgICAgICBDb25kaXRpb25hbD1OT1RJRklDQVRJT05TfExFR0FDWV9OT1RJRklDQVRJ
T05TLAogICAgICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgICAgIEV2ZW50VGFyZ2V0LAorI2lm
IGRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCisg
ICAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB0aXRsZSwgaW4gW09wdGlvbmFsPURlZmF1
bHRJc1VuZGVmaW5lZF0gRGljdGlvbmFyeSBvcHRpb25zKSwKKyAgICAgICAgQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwKKyNlbHNlCiAgICAgICAgIE9taXRDb25zdHJ1Y3RvcgorI2Vu
ZGlmCiAgICAgXSBOb3RpZmljYXRpb24gewogICAgICAgICB2b2lkIHNob3coKTsKICNpZiBkZWZp
bmVkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX0xFR0FDWV9OT1RJRklD
QVRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
ZW50ZXIuaAppbmRleCBhMDQ3YWJmODEwOTJiYmFiY2YxNjQ3NjAyMDMzYmUyZjJjZjY4YTI3Li40
OTI5OWUxYTAyYTkxMWU5MzA2MjVkMzJmYTY0ODMzZGJjYzNhMWVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgKQEAgLTUzLDYgKzUz
LDcgQEAgY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZp
Y2F0aW9uQ2VudGVyPiwgcHVibGljIEFjdGl2ZUQKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Tm90aWZpY2F0aW9uQ2xpZW50Kik7CiAKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMp
CiAgICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZUhUTUxOb3RpZmljYXRpb24oY29u
c3QgU3RyaW5nJiBVUkksIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsKICAgICAgICAgaWYgKCFj
bGllbnQoKSkgewpAQCAtNjUsNyArNjYsOSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIE5vdGlmaWNhdGlvbjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29t
cGxldGVVUkwoVVJJKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBlYywgdGhpcyk7CiAgICAg
fQorI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgUGFzc1Jl
ZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZU5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIGljb25V
UkksIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgewogICAgICAgICBpZiAoIWNsaWVudCgpKSB7CkBAIC03NCw2ICs3Nyw3IEBA
IHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uOjpjcmVhdGUo
dGl0bGUsIGJvZHksIGljb25VUkksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZWMsIHRoaXMp
OwogICAgIH0KKyNlbmRpZgogCiAgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQoKSBjb25z
dCB7IHJldHVybiBtX2NsaWVudDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwKaW5kZXggN2IwZmMyNTU1N2NjNTBhM2I1NTc4
YzMyYjgyMjQ1MDkxYzExYzI3Yi4uZTUwODQ0N2Q0OWViYWE0MTljZmU3MjUwMDI0YzkzMTE2MmVl
ZGQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25DZW50ZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ2VudGVyLmlkbApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQpAQCAtMzYsMTAgKzM2LDEyIEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICAg
ICAgQWN0aXZlRE9NT2JqZWN0LAogICAgICAgICBPbWl0Q29uc3RydWN0b3IKICAgICBdIE5vdGlm
aWNhdGlvbkNlbnRlciB7CisjaWYgZGVmaW5lZChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMp
ICYmIEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUwogI2lmICFkZWZpbmVkKEVOQUJMRV9URVhU
X05PVElGSUNBVElPTlNfT05MWSkgfHwgIUVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWQog
ICAgICAgIFtWOEN1c3RvbV0gTm90aWZpY2F0aW9uIGNyZWF0ZUhUTUxOb3RpZmljYXRpb24oaW4g
RE9NU3RyaW5nIHVybCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKICAgICAgICBbVjhD
dXN0b21dIE5vdGlmaWNhdGlvbiBjcmVhdGVOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIGljb25V
cmwsIGluIERPTVN0cmluZyB0aXRsZSwgaW4gRE9NU3RyaW5nIGJvZHkpIHJhaXNlcyhET01FeGNl
cHRpb24pOworI2VuZGlmCiAKICAgICAgICBpbnQgY2hlY2tQZXJtaXNzaW9uKCk7CiAgICAgICAg
W0N1c3RvbV0gdm9pZCByZXF1ZXN0UGVybWlzc2lvbihpbiBWb2lkQ2FsbGJhY2sgY2FsbGJhY2sp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZp
Y2F0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90
aWZpY2F0aW9uQ2xpZW50Lm1tCmluZGV4IDgxMjA5MzYwMTYzNzQ5Yjc2NmZjN2I4ZDNkNzA2MDI3
Y2IyN2Q2ZGEuLmM4YjFlMmQxZTM3YTAxMjBiODkwNzAwYTliZDU4NjZmZjg1NmE4MWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmlj
YXRpb25DbGllbnQubW0KQEAgLTEwOCw2ICsxMDgsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbkNs
aWVudDo6Y2xlYXJOb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIFdlYk5v
dGlmaWNhdGlvbiAqd2ViTm90aWZpY2F0aW9uID0gd2ViTm90aWZpY2F0aW9uc1tpXS5nZXQoKTsK
ICAgICAgICAgW25zSURzIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkTG9u
Z0xvbmc6W3dlYk5vdGlmaWNhdGlvbiBub3RpZmljYXRpb25JRF1dXTsKKyAgICAgICAgY29yZSh3
ZWJOb3RpZmljYXRpb24pLT5maW5hbGl6ZSgpOwogICAgICAgICBtX25vdGlmaWNhdGlvbk1hcC5y
ZW1vdmUoY29yZSh3ZWJOb3RpZmljYXRpb24pKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcAppbmRleCAyNmU1NDA3NDRiZDUyNzRjOWI2ZGFjZWVhNWJmOTRmYTNh
ZTA0OTczLi42YmM2YTQ4MWUxNTEwYWNmOGRlNzJmZjBmMTMxM2IwOTdjMGRlOGM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xNTMsNiArMTUzLDcgQEAgdm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCoKICAgICAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0
aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC50YWtlKG5vdGlmaWNhdGlvbklEc1tpXSk7CiAgICAg
ICAgIGlmICghbm90aWZpY2F0aW9uKQogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIG5v
dGlmaWNhdGlvbi0+ZmluYWxpemUoKTsKICAgICAgICAgbV9ub3RpZmljYXRpb25NYXAucmVtb3Zl
KG5vdGlmaWNhdGlvbik7CiAgICAgfQogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137966</attachid>
            <date>2012-04-19 13:26:01 -0700</date>
            <delta_ts>2012-04-19 23:29:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80477-20120419132752.patch</filename>
            <type>text/plain</type>
            <size>34540</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDM1M2ExYWVhMzU2Y2Y5
OTlhNzY4YjRmMzYzN2YzMjVjNjZiN2E2OS4uZjRkNTI0MzIxYTgzMDBjMDEzOTNmZjExYjkxZTI2
YWUxY2VmNTllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEyLTA0LTE5ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTm90aWZpY2F0aW9uIGNvbnN0
cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MDQ3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA5MTI0MzE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgd2lsbCBiZSBhZGRlZCBvbmNl
IHRoZXJlIGlzIHN1cHBvcnQgZm9yIHdlYiBub3RpZmljYXRpb25zIG9uIHRoZSBNYWMgcG9ydHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IGZpbmFsaXplKCkgZnVuY3Rpb24u
CisKKyAgICAgICAgTW9kaWZ5IERpY3Rpb25hcnkgdG8gc3VwcG9ydCBjcmVhdGlvbiBvZiBldmVu
dCBsaXN0ZW5lcnMuCisgICAgICAgICogYmluZGluZ3MvanMvRGljdGlvbmFyeS5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6aXNPYmplY3QpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgSlNE
aWN0aW9uYXJ5IGlzIHZhbGlkLgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6aXNVbmRl
ZmluZWRPck51bGwpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgSlNEaWN0aW9uYXJ5IGlzIHZhbGlkLgor
ICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0KTogQWRkIGNvbnZlbmllbmNlIGZ1bmN0
aW9uIHRvIHRha2UgY29uc3QgY2hhciogZm9yCisgICAgICAgIHByb3BlcnR5IG5hbWUsIHRvIHBy
ZXZlbnQgaGF2aW5nIHRvIGRvIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gV1RGOjpTdHJpbmcuCisg
ICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRFdmVudExpc3RlbmVyKTogQWRkIGZ1bmN0
aW9uIHRvIGNyZWF0ZSBldmVudCBsaXN0ZW5lcgorICAgICAgICBmcm9tIHRoZSBkaWN0aW9uYXJ5
LgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6YXNKU09iamVjdCk6IEhlbHBlciB0byBj
b252ZXJ0IFdlYkNvcmUgb2JqZWN0cyB0byBKUyB3cmFwcGVyLgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKTogSW1w
bGVtZW50IGFzSlNPYmplY3QoKSBmb3IgTm90aWZpY2F0aW9uLgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRGljdGlvbmFyeS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5OjpleGVj
U3RhdGUpOiBFeHBvc2UgdGhlIGV4ZWMgc3RhdGUgc28gdGhhdCB0aGUgRGljdGlvbmFyeQorICAg
ICAgICBjYW4gb2J0YWluIGl0cyB3b3JsZCBmb3IgY3JlYXRpbmcgdGhlIGV2ZW50IGxpc3RlbmVy
LgorCisgICAgICAgICogYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGljdGlvbmFyeTo6Z2V0RXZlbnRMaXN0ZW5lcik6IFN0dWIgaW1wbGVtZW50YXRpb24uCisK
KyAgICAgICAgQWRkIG5ldyBjb25zdHJ1Y3RvciB0byBpZGwgZGVmaW5pdGlvbnMuCisgICAgICAg
ICogbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbDogQWRkIE5vdGlmaWNh
dGlvbiBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5p
ZGw6IElmIEVOQUJMRShOT1RJRklDQVRJT05TKSBpcyB0dXJuZWQgb24sIGRlZmluZQorICAgICAg
ICB0aGUgY29uc3RydWN0b3IuIE90aGVyd2lzZSwgdXNlIE9taXRDb25zdHJ1Y3Rvci4KKyAgICAg
ICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGw6IFdyYXAgY3JlYXRpb24g
ZnVuY3Rpb25zIGluCisgICAgICAgIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykuCisgICAg
ICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaDogRGl0dG8uCisgICAgICAg
IChOb3RpZmljYXRpb25DZW50ZXIpOgorCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaDoKKyAgICAgICAgKE5vdGlmaWNhdGlvbik6IFdyYXAgbGVnYWN5IGNvbnN0cnVjdG9y
cyBpbiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpLgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjpjcmVhdGUpOiBOZXcgY3JlYXRpb24gZnVuY3Rpb24gYmFzZWQgb24gZGlzY3Vz
c2lvbnMgaW4gV0cuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0QW5kQWRkRXZlbnRMaXN0ZW5lcik6IEhlbHBlciBmdW5jdGlv
biB0byBnZXQgdGhlIGxpc3RlbmVyIGZyb20gdGhlCisgICAgICAgIGRpY3Rpb25hcnksIGFuZCBh
dHRhY2ggdG8gdGVoIG5vdGlmaWNhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bjo6Y3JlYXRlKTogQ3JlYXRlIHRoZSBub3RpZmljYXRpb24sIHRoZW4gYXBwbHkgd2hhdGV2ZXIK
KyAgICAgICAgcHJvcGVydGllcyBjYW4gYmUgZm91bmQgaW4gdGhlIGRpY3Rpb25hcnkgdG8gdGhl
IG5vdGlmaWNhdGlvbi4gSW4gb3JkZXIgdG8KKyAgICAgICAgYXR0YWNoIHRoZSBldmVudCBsaXN0
ZW5lcnMsIHRoZSBub3RpZmljYXRpb24gaGFzIHRvIGhhdmUgYmVlbiBjcmVhdGVkLCB3aGljaCBp
cworICAgICAgICB3aHkgdGhpcyBhbGwgaGFwcGVucyBpbiB0aGUgZmFjdG9yeSBtZXRob2QgYW5k
IG5vdCBpbiB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OnNldEJvZHkpOiBBZGRlZCBzbyB0aGF0IGl0IGNhbiBiZSBzZXQgaWYgd2UgZmluZCBpdCBpbiB0
aGUKKyAgICAgICAgZGljdGlvbmFyeS4KKworICAgICAgICBUaGUgbmV3IGNvbnN0cnVjdG9yIHF1
ZXVlcyBhIHRhc2sgdG8gc2hvdyB3aGVuIGl0IGlzIGNyZWF0ZWQuIFRvIHN1cHBvcnQgdGhpcywg
d2UKKyAgICAgICAgdXNlIGEgb25lLXNob3QgdGltZXIgdGhhdCBjYWxscyBzaG93KCkgaW4gdGhl
IG5leHQgaXRlcmF0aW9uIG9mIHRoZSBydW4gbG9vcC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6Tm90aWZpY2F0aW9uKTogU3RhcnQgdGhlIHRpbWVyLgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjpzaG93VGFza1RpbWVyRmlyZWQpOiBDYWxsIHNob3coKS4KKworICAg
ICAgICBOb3RpZmljYXRpb25zLCBub3QgYmVpbmcgYXR0YWNoZWQgdG8gdGhlIERPTSwgY291bGQg
YmUgR0MnZWQgYnkgdGhlIEpTIGVuZ2luZQorICAgICAgICBiZWZvcmUgaXRzIGxpZmUgY3ljbGUg
aGFzIGNvbXBsZXRlZC4gV2UgYWRkIGNhbGxzIHRvIHNldFBlbmRpbmdBY3Rpdml0eSgpIHdoZW4g
dGhlCisgICAgICAgIG5vdGlmaWNhdGlvbiBoYXMgYmVlbiBzaG93biwgYW5kIHdoZW4gaXQgaXMg
Y2xvc2VkLCB3ZSB1bnNldFBlbmRpbmdBY3Rpdml0eSgpLgorICAgICAgICBUbyBndWFyYW50ZWUg
dGhhdCB3ZSBvbmx5IGNhbGwgdGhpcyBvbmNlLCB3ZSBhZGQgYSBuZXcgc3RhdGUgdG8gdGhlIE5v
dGlmaWNhdGlvbgorICAgICAgICBzdGF0ZSBtYWNoaW5lLCBjYWxsZWQgTm90aWZpY2F0aW9uU3Rh
dGU6OkNsb3NlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y2xvc2UpOiBJbmNs
dWRlIENsb3NlZCBzdGF0ZSB0byBtYWNoaW5lOyBkbyBub3RoaW5nLgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQpOiBDYWxsIGZpbmFsaXplKCkuCisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmZpbmFsaXplKTogSWYgdGhlIHN0YXRlIGlz
IG5vdCBDbG9zZWQsIHdlIHVuc2V0UGVuZGluZ0FjdGl2aXR5KCkKKyAgICAgICAgdG8gbWFrZSBp
dCBhdmFpbGFibGUgZm9yIEdDLgorCisgICAgICAgIEluIE5vdGlmaWNhdGlvbiwgcmVuYW1lIHNv
bWUgb2YgdGhlIHN0YWdlcyBhbmQgZnVuY3Rpb25zIHRvIG1vcmUgY2xlYXJseSBjb21tdW5pY2F0
ZQorICAgICAgICB0aGF0IHRoZXkgbW9zdGx5IGRlYWwgd2l0aCB0aGUgaWNvbiBvZiB0aGUgbm90
aWZpY2F0aW9uLCBpbnN0ZWFkIG9mIGdlbmVyYWwgbG9hZGluZy4KKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbjo6c2hvdyk6IFJlZmFjdG9yZWQgdG8gdXNlIExvYWRpbmdJY29uIGFuZCBD
YW5jZWxsZWRJY29uLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjbG9zZSk6IFJl
ZmFjdG9yZWQgdG8gdXNlIExvYWRpbmdJY29uIGFuZCBDYW5jZWxsZWRJY29uLgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKTogUmVmYWN0b3IgdG8gdXNlIExv
YWRpbmdJY29uLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzdGFydExvYWRpbmdJ
Y29uKTogUmVuYW1lZCBmcm9tIHN0YXJ0TG9hZGluZygpLgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjpzdG9wTG9hZGluZ0ljb24pOiBSZW5hbWVkIGZyb20gc3RvcExvYWRpbmcoKS4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZmluaXNoTG9hZGluZyk6CisKKyAgICAgICAg
QWRkIERpY3Rpb25hcnkuY3BwLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorCisgICAgICAgIEZpeCBidWcgaW4gVjggYmluZGluZ3MgZ2VuZXJhdGlvbiBj
b2RlLiBJZiB0aGUgY29uc3RydWN0b3IgZG9lc24ndCByYWlzZSBhbiBleGNlcHRpb24sCisgICAg
ICAgIGRvbid0IHVzZSBhbiBleGNlcHRpb24gY29kZS4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNr
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDogUmVz
ZXQgcmVzdWx0cy4KKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvcHRpb25z
T2JqZWN0Q2FsbGJhY2spOgorCiAyMDEyLTA0LTE2ICBHZW9yZ2UgU3RhaWtvcyAgPHN0YWlrb3NA
d2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNoIHdhcm5p
bmcgZm9yIEJsYWNrQmVycnkgZGVidWcgYnVpbGRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGYwOWU5
NzhmODMyMDMyMjVmMDhkNDM0YTMxYTYwODEzZDYzMjFiZjAuLmY5N2FjYjk2ZGJmZGU5NDZmOTBi
NWZjZWJlOTE5MzYwNDU3MzMwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0wNC0xOSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIE5v
dGlmaWNhdGlvbiBjb25zdHJ1Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODA0NzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwOTEyNDMxPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tOgorICAgICAgICAoV2ViTm90aWZpY2F0
aW9uQ2xpZW50OjpjbGVhck5vdGlmaWNhdGlvbnMpOiBXaGVuIGNsZWFyaW5nIG5vdGlmaWNhdGlv
bnMsIGZpbmFsaXplCisgICAgICAgIHRoZW0gc28gdGhhdCB0aGV5IGNhbiBiZSBjbGVhbmVkIHVw
IGJ5IHRoZSBHQy4KKwogMjAxMi0wNC0xMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjEwMjI2Mik6IGlBZCBQcm9kdWNlciByZWxpZXMgb24g
Q1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0eSBzZXR0ZXJzIHJlc3BlY3RpbmcgJyFpbXBvcnRh
bnQnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggNjYyZTQ2ZjYzMGQ1N2NhNjllYTNhMTJiOWM0OTNjODkwMjc1YWYx
MS4uMDc2MWU2OWExOTA0NThlYmQzNDVjOGVlZjUwMzQ0ODRkZmVjNTE2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDEyLTA0LTE5ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgTm90aWZpY2F0aW9uIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQ3NworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTA5MTI0MzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90
aWZpY2F0aW9ucyk6IFdoZW4gY2xlYXJpbmcgbm90aWZpY2F0aW9ucywKKyAgICAgICAgZmluYWxp
emUgdGhlbSBzbyB0aGF0IHRoZXkgY2FuIGJlIGNsZWFuZWQgdXAgYnkgdGhlIEdDLgorCiAyMDEy
LTA0LTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBVc2UgR1JlZlB0ciB0byBkZWxldGUgdGhlIGRlZmF1bHQgd2ViIGNvbnRleHQg
aW4gV2ViS2l0MiBHVEsrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1NzRiYjA0
NjZmZGI4MzBlMmE0MDhjY2JhNDUxNWY3MzE5NzQ0ODdkLi40MjU3NTVlY2UzZGNiMGI2MmMxOTE0
ZDg0MjdjNmQyMjgzMGUwYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE0
NzEsNiArMTQ3MSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRGljdGlvbmFyeS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25h
cnkuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVy
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVy
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKaW5kZXggYTQxNzJjNjY1Mjg1NTFmYjAwNGJkMTJkZGVjYWI5M2M4ZGQ3
ZWUxNy4uMjc1MzMzZjExNjg1ZDZlOWZhZDEzY2VhNTM5OTBhNWFlYTZhMDk1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCkBAIC0yNDYsNiArMjQ2LDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy9qcy9DYWxsYmFj
a0Z1bmN0aW9uLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1h
cC5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwIFwKKyAgICAg
ICAgYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9HQ0Nv
bnRyb2xsZXIuY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlckN1c3RvbS5j
cHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFr
ZQppbmRleCBkMDc0YTkwMWU5NWNhODdkMWRiMTI4MzY2NWNkNDM2NTI0ZjM2MzE0Li41MTU1ODFj
ZDBlZGIzOGQ1NDVhNmJmMzRjYzIzZTNmYzY3Zjk1ZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Vc2VKU0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCkBAIC0y
NSw2ICsyNSw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pz
L0NhbGxiYWNrRnVuY3Rpb24uY3BwCiAgICAgYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxl
TWFwLmNwcAogICAgIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAKKyAgICBiaW5kaW5n
cy9qcy9EaWN0aW9uYXJ5LmNwcAogICAgIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pT
QXR0ckN1c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggN2I0NzQ0OThkN2RiZTA4YzUx
ZGFhNjhiMDczZjUwOTQ1NjY2MDM2My4uYzBmZGI2ODMyZDc3NDg3MGY3ZWJmM2JlMjAyMzdjMDc4
Y2FlNzQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTIxNTUsNiArMjE1NSw3IEBAIF93a0Ny
ZWF0ZVZNUHJlc3N1cmVEaXNwYXRjaE9uTWFpblF1ZXVlCiAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKIF9fWk43V2ViQ29yZTEyTm90aWZp
Y2F0aW9uQzFFdgogX19aTjdXZWJDb3JlMTJOb3RpZmljYXRpb25EMUV2CitfX1pON1dlYkNvcmUx
Mk5vdGlmaWNhdGlvbjhmaW5hbGl6ZUV2CiBfX1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbjE3ZGlz
cGF0Y2hTaG93RXZlbnRFdgogX19aTjdXZWJDb3JlMTJOb3RpZmljYXRpb24xOGRpc3BhdGNoQ2xp
Y2tFdmVudEV2CiBfX1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbjE4ZGlzcGF0Y2hDbG9zZUV2ZW50
RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwZDY3MGFkYTIyNTRjZTRjYTYzNTUxMzUzNmMzNjVhZjIx
ZTcxYzJhLi5hMDJlOThkMWQwMmU4YmI5ZWQ2NTU4YmJmN2FkMzcyYWNhYTE1ZjRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0yMDI2LDYgKzIwMjYsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0ph
dmFTY3JpcHRDYWxsRnJhbWUuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KYXZhU2Ny
aXB0Q2FsbEZyYW1lLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL1NjaGVkdWxlZEFjdGlvbi5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlv
bmFyeS5jcHAKaW5kZXggNzViZWYxNTQ5NjAyZmRkOTU5ZDc2ZDg5ZGY0NzUyMTcwOWQyNGM5NS4u
MmMxYjc4NWZlMGY4NWM4YWFhYzc2ODk5YTRkODBjOWI2YTA5ZTkyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKQEAgLTI2LDYgKzI2LDExIEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogCisjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCisjaW5jbHVkZSAiSlNOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJOb3RpZmlj
YXRpb24uaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0zNSwxNCArNDAsMTQgQEAgRGljdGlvbmFyeTo6RGljdGlvbmFyeShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogfQogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgUmVzdWx0PgotYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUsIFJlc3VsdCYgcmVzdWx0KSBjb25zdAorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
Cit0ZW1wbGF0ZTw+CitKU09iamVjdCogRGljdGlvbmFyeTo6YXNKU09iamVjdDxOb3RpZmljYXRp
b24+KE5vdGlmaWNhdGlvbiogb2JqZWN0KSBjb25zdAogewotICAgIGlmICghbV9kaWN0aW9uYXJ5
LmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIHJldHVybiBtX2Rp
Y3Rpb25hcnkuZ2V0KHByb3BlcnR5TmFtZS5hc2NpaSgpLmRhdGEoKSwgcmVzdWx0KTsKKyAgICBy
ZXR1cm4gYXNPYmplY3QodG9KUyhtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCksIGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKS0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKSwgb2JqZWN0KSk7CiB9CisjZW5kaWYKIAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRGljdGlvbmFyeS5oCmluZGV4IDkzYTQ4YjhhZTU3NzE1NjRmMGY3YWZiM2QxN2U4MjVm
MzhlNmQzZTYuLmE3NzczNDJiNzNjZTQ3MjM3MjExOTQ2YzExNTg1ZjNmMDBkMmQ5OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNk
ZWZpbmUgRGljdGlvbmFyeV9oCiAKICNpbmNsdWRlICJKU0RpY3Rpb25hcnkuaCIKKyNpbmNsdWRl
ICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNDYs
MTYgKzQ3LDYyIEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhIHZhbHVlIHdh
cyBmb3VuZCBmb3IgdGhlIHByb3ZpZGVkIHByb3BlcnR5LgogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBSZXN1bHQ+CisgICAgYm9vbCBnZXQoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBSZXN1bHQm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgogICAgIGJvb2wgZ2V0KGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBSZXN1bHQmKSBjb25zdDsKKyAgICAKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50
TGlzdGVuZXIoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0OworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0
RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgVCogdGFyZ2V0KSBjb25z
dDsKIAotICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVy
biBmYWxzZTsgfQotICAgIGJvb2wgaXNVbmRlZmluZWRPck51bGwoKSBjb25zdCB7IG5vdEltcGxl
bWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IHJl
dHVybiBtX2RpY3Rpb25hcnkuaXNWYWxpZCgpOyB9CisgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVs
bCgpIGNvbnN0IHsgcmV0dXJuIG1fZGljdGlvbmFyeS5pc1ZhbGlkKCk7IH0KICAgICBib29sIGdl
dFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJpbmcmLCBTdHJpbmcmKSBjb25zdCB7
IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICAgIEpTQzo6SlNPYmplY3QqIGFzSlNPYmplY3QoVCopIGNvbnN0
OworICAgIAogICAgIEpTRGljdGlvbmFyeSBtX2RpY3Rpb25hcnk7CiB9OwogCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgUmVzdWx0PgorYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgY2hhciogcHJvcGVy
dHlOYW1lLCBSZXN1bHQmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZGljdGlvbmFyeS5p
c1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gbV9kaWN0
aW9uYXJ5LmdldChwcm9wZXJ0eU5hbWUsIHJlc3VsdCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBSZXN1bHQ+Citib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSwgUmVzdWx0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldChwcm9wZXJ0eU5hbWUu
dXRmOCgpLmRhdGEoKSwgcmVzdWx0KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIoY29uc3Qg
Y2hhciogcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RpY3Rp
b25hcnkuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFNjcmlwdFZhbHVlIGV2
ZW50TGlzdGVuZXI7CisgICAgaWYgKCFtX2RpY3Rpb25hcnkudHJ5R2V0UHJvcGVydHkocHJvcGVy
dHlOYW1lLCBldmVudExpc3RlbmVyKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGV2ZW50
TGlzdGVuZXIuaGFzTm9WYWx1ZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1
cm4gSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QoZXZlbnRMaXN0ZW5lci5qc1ZhbHVl
KCkpLCBhc0pTT2JqZWN0KHRhcmdldCksIHRydWUsIGN1cnJlbnRXb3JsZChtX2RpY3Rpb25hcnku
ZXhlY1N0YXRlKCkpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0RXZlbnRMaXN0
ZW5lcihwcm9wZXJ0eU5hbWUudXRmOCgpLmRhdGEoKSwgdGFyZ2V0KTsKK30KKwogfQogCiAjZW5k
aWYgLy8gRGljdGlvbmFyeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFy
eS5oCmluZGV4IGU5ZDk5ZTFmYzAzZTkxYThkZWUwOTY4NjNiZTBmYzc4OWU1YTAzZDAuLjhmNjMz
N2Q2ZTRhMzg0ZjhiNWRlMTcyOGU2MDU1NTkxZTQyMTE0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgogICAgIGJvb2wgZ2V0KGNvbnN0IGNoYXIqIHByb3Bl
cnR5TmFtZSwgUmVzdWx0JikgY29uc3Q7CiAKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9leGVjOyB9CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9leGVjICYmIG1faW5pdGlhbGl6ZXJPYmplY3Q7IH0KIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5k
ZXggZTk2OGE3MzU5YjcxYTYwZjg1ODMxYTg2NGQzYjhjOTk5MTExM2UzZS4uMGRlZGZmM2MxMTlj
NzdmYTc4YzE4OWM4ZDMzMGM3NWFkNTk1YWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTE2NTAsOCArMTY1MCwxMCBA
QCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICAgSlNWYWx1ZVRv
TmF0aXZlKCRwYXJhbWV0ZXIsICJNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAkcGFyYW1J
bmRleCwgJHBhcmFtZXRlckRlZmF1bHRQb2xpY3kpIikgLiAiKTtcbiI7CiAgICAgICAgICAgICBp
ZiAoJG5hdGl2ZVR5cGUgZXEgJ0RpY3Rpb25hcnknKSB7CiAgICAgICAgICAgICAgICAkcGFyYW1l
dGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoYXJncy5MZW5ndGgoKSA+ICRwYXJhbUluZGV4ICYm
ICEkcGFyYW1ldGVyTmFtZS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICEkcGFyYW1ldGVyTmFtZS5p
c09iamVjdCgpKSB7XG4iOwotICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49
ICIgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7XG4iOwotICAgICAgICAgICAgICAgJHBh
cmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihl
Yyk7XG4iOworICAgICAgICAgICAgICAgaWYgKEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25z
fSkgeworICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAg
ICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSO1xuIjsKKyAgICAgICAgICAgICAgICAgICAkcGFyYW1l
dGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTtc
biI7CisgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJp
bmcgLj0gIiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoXCJOb3QgYW4gb2JqZWN0LlwiLCBWOFBy
b3h5OjpUeXBlRXJyb3IpO1xuIjsKICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmlu
ZyAuPSAiICAgIH1cbiI7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDIwY2I5OGQxNTFl
ODg2YTFkNzc3NjI1MjE5ODA4N2Q5YTJkYmJiNzEuLjYxMGYyYzdkMmYxYzU4YzZmYTQwNDIzOWQ5
N2QxZDI2ZmYzZWFiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC0xMTQzLDggKzExNDMsNiBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IG9wdGlvbnNPYmplY3RDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CiAgICAgRVhDRVBUSU9OX0JMT0NLKERpY3Rpb25hcnksIG9vLCBNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA+IDAgJiYgIW9vLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIW9vLmlzT2Jq
ZWN0KCkpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgVjhQcm94
eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTsKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBh
biBvYmplY3QuIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKICAgICB9CiAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPD0gMSkgewpAQCAtMTE1Myw4ICsxMTUxLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBvcHRpb25zT2JqZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
ICAgICB9CiAgICAgRVhDRVBUSU9OX0JMT0NLKERpY3Rpb25hcnksIG9vbywgTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CiAgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPiAxICYmICFvb28uaXNVbmRlZmluZWRPck51bGwoKSAmJiAhb29vLmlzT2JqZWN0
KCkpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgVjhQcm94eTo6
c2V0RE9NRXhjZXB0aW9uKGVjKTsKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBhbiBv
YmplY3QuIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKICAgICB9CiAgICAgaW1wLT5vcHRpb25zT2Jq
ZWN0KG9vLCBvb28pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGlj
dGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oCmluZGV4
IDMyMTY0YjhjYmIyM2E1NGFiYzU4NDk3OTk2MjU5NmM1ZmQyZmY4MzEuLmU1ODg5MGU1OWZiMjUy
MTY1MjA3MWNmODVmNjAxNTkxMzAxOTg3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0RpY3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
aWN0aW9uYXJ5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgRGljdGlvbmFyeV9oCiAjZGVm
aW5lIERpY3Rpb25hcnlfaAogCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgpAQCAtMzgsMTIgKzM5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIERPTVN0cmluZ0xpc3Q7CiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBJREJLZXlSYW5nZTsK
LWNsYXNzIFN0b3JhZ2U7CiBjbGFzcyBNZWRpYUtleUVycm9yOwotY2xhc3MgVHJhY2tCYXNlOwor
Y2xhc3MgTm90aWZpY2F0aW9uOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25FcnJvcjsKIGNsYXNz
IFNwZWVjaFJlY29nbml0aW9uUmVzdWx0OwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXN1bHRM
aXN0OworY2xhc3MgU3RvcmFnZTsKK2NsYXNzIFRyYWNrQmFzZTsKIAogY2xhc3MgRGljdGlvbmFy
eSB7CiBwdWJsaWM6CkBAIC04NCw2ICs4Niw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZ2V0V2l0
aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IFN0cmluZyYsIFN0cmluZyYpIGNvbnN0OwogCisg
ICAgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBnZXRFdmVudExpc3RlbmVyKGNvbnN0IFN0cmlu
ZyYsIE5vdGlmaWNhdGlvbiopIGNvbnN0IHsgcmV0dXJuIDA7IH0KKwogcHJpdmF0ZToKICAgICBi
b29sIGdldEtleShjb25zdCBTdHJpbmcmIGtleSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4mKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dO
b3RpZmljYXRpb25zLmlkbCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93
Tm90aWZpY2F0aW9ucy5pZGwKaW5kZXggMDU3YjY2NmI2ZTNkNzQ3ZTU5NzQ0MGM0ZjNlYmM5ZjE2
N2JlMzNmOS4uZDgyNDE2ODlhZjQ0NWRmNThhZjA0YWQ2MTM0MDA1MDQwMzdkMTU4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25z
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNh
dGlvbnMuaWRsCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMSw2ICszMSw3IEBAIG1vZHVsZSB3aW5k
b3cgewogICAgICAgICBTdXBwbGVtZW50YWw9RE9NV2luZG93CiAgICAgXSBET01XaW5kb3dOb3Rp
ZmljYXRpb25zIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRp
bWVdIE5vdGlmaWNhdGlvbkNlbnRlciB3ZWJraXROb3RpZmljYXRpb25zOworICAgICAgICBhdHRy
aWJ1dGUgTm90aWZpY2F0aW9uQ29uc3RydWN0b3IgTm90aWZpY2F0aW9uOwogICAgIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCAy
MjQxYjM2MDczY2JkNmQ2ZGRmNDYyYWQzYThlYjFlMDk1MTY5NDliLi5kM2VlZDdjYmQwZGU2YjFl
YmJiMGM2N2JmZTU1N2MyYjQ4ZjZlNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBAIC0zNSw2ICszNSw5IEBACiAKICNpbmNsdWRlICJOb3Rp
ZmljYXRpb24uaCIKIAorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRPTVdpbmRv
d05vdGlmaWNhdGlvbnMuaCIKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgpAQCAtNTIsNiArNTUsNyBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbigpCiB7CiB9CiAK
KyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiBOb3RpZmljYXRpb246Ok5vdGlmaWNh
dGlvbihjb25zdCBLVVJMJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4
Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIp
CiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1faXNIVE1MKHRy
dWUpCkBAIC03MCw3ICs3NCw5IEBAIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IEtV
UkwmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjCiAKICAgICBtX25v
dGlmaWNhdGlvblVSTCA9IHVybDsKIH0KKyNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJ
RklDQVRJT05TKQogTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlm
aWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwg
dGhpcykKICAgICAsIG1faXNIVE1MKGZhbHNlKQpAQCAtOTAsMTUgKzk2LDMzIEBAIE5vdGlmaWNh
dGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9k
eSwgY29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CisjZW5kaWYKKworI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQorTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKKyAgICA6IEFj
dGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQorICAgICwgbV9pc0hUTUwoZmFsc2UpCisgICAg
LCBtX3RpdGxlKHRpdGxlKQorICAgICwgbV9zdGF0ZShJZGxlKQorICAgICwgbV9zaG93VGFza1Rp
bWVyKGFkb3B0UHRyKG5ldyBUaW1lcjxOb3RpZmljYXRpb24+KHRoaXMsICZOb3RpZmljYXRpb246
OnNob3dUYXNrVGltZXJGaXJlZCkpKQoreworICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50
KCkpOworICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gRE9NV2luZG93Tm90aWZpY2F0aW9uczo6
d2Via2l0Tm90aWZpY2F0aW9ucyhzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5kb21X
aW5kb3coKSk7CisgICAgCisgICAgQVNTRVJUKG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQo
KSk7CisgICAgbV9zaG93VGFza1RpbWVyLT5zdGFydE9uZVNob3QoMCk7Cit9CisjZW5kaWYKIAog
Tm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKCkgCiB7Ci0gICAgaWYgKG1fc3RhdGUgPT0gTG9h
ZGluZykgeworICAgIGlmIChtX3N0YXRlID09IExvYWRpbmdJY29uKSB7CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjbG9zZSgpOwogICAgIH0KIH0KIAorI2lmIEVOQUJM
RShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3RpZmlj
YXRpb246OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4g
cHJvdmlkZXIpIAogeyAKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24oYWRv
cHRSZWYobmV3IE5vdGlmaWNhdGlvbih1cmwsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpKTsKQEAg
LTExMiw2ICsxMzYsMzMgQEAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYKICAgICBub3RpZmljYXRp
b24tPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBub3RpZmljYXRpb24ucmVsZWFzZSgp
OwogfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK3N0YXRpYyB2b2lkIGdl
dEFuZEFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0
IGNoYXIqIHByb3BlcnR5LCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbikKK3sKKyAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBv
cHRpb25zLmdldEV2ZW50TGlzdGVuZXIocHJvcGVydHksIG5vdGlmaWNhdGlvbik7CisgICAgaWYg
KGxpc3RlbmVyKQorICAgICAgICBub3RpZmljYXRpb24tPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lLCBsaXN0ZW5lci5yZWxlYXNlKCksIGZhbHNlKTsKK30KKworUGFzc1JlZlB0cjxOb3RpZmlj
YXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpCit7Cisg
ICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKGFkb3B0UmVmKG5ldyBOb3RpZmlj
YXRpb24oY29udGV4dCwgdGl0bGUpKSk7CisgICAgU3RyaW5nIGFyZ3VtZW50OworICAgIGlmIChv
cHRpb25zLmdldCgiYm9keSIsIGFyZ3VtZW50KSkKKyAgICAgICAgbm90aWZpY2F0aW9uLT5zZXRC
b2R5KGFyZ3VtZW50KTsKKyAgICBpZiAob3B0aW9ucy5nZXQoInRhZyIsIGFyZ3VtZW50KSkKKyAg
ICAgICAgbm90aWZpY2F0aW9uLT5zZXRUYWcoYXJndW1lbnQpOworICAgIGdldEFuZEFkZEV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLnNob3dFdmVudCwgIm9uc2hvdyIsIG9wdGlvbnMsIG5vdGlm
aWNhdGlvbi5nZXQoKSk7CisgICAgZ2V0QW5kQWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
Y2xvc2VFdmVudCwgIm9uY2xvc2UiLCBvcHRpb25zLCBub3RpZmljYXRpb24uZ2V0KCkpOworICAg
IGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsICJvbmVycm9y
Iiwgb3B0aW9ucywgbm90aWZpY2F0aW9uLmdldCgpKTsKKyAgICBnZXRBbmRBZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCAib25jbGljayIsIG9wdGlvbnMsIG5vdGlmaWNh
dGlvbi5nZXQoKSk7CisKKyAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgpOworICAg
IHJldHVybiBub3RpZmljYXRpb24ucmVsZWFzZSgpOworfQorI2VuZGlmCiAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgTm90aWZpY2F0aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKIHsKQEAgLTEzMCwx
MCArMTgxLDExIEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkKICAgICAgICAgICAgICAgICBt
X25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCktPnNob3codGhpcyk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UKLSAgICAgICAgc3RhcnRMb2FkaW5nKCk7CisgICAgICAgIHN0YXJ0TG9hZGluZ0lj
b24oKTsKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBpZiAobV9zdGF0ZSA9PSBJZGxlICYmIG1f
bm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKSkgewogICAgICAgICBtX25vdGlmaWNhdGlvbkNl
bnRlci0+Y2xpZW50KCktPnNob3codGhpcyk7CisgICAgICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0
aGlzKTsKICAgICAgICAgbV9zdGF0ZSA9IFNob3dpbmc7CiAgICAgfQogI2Vsc2UKQEAgLTE0OCwx
NSArMjAwLDE2IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpjbG9zZSgpCiAgICAgc3dpdGNoIChtX3N0
YXRlKSB7CiAgICAgY2FzZSBJZGxlOgogICAgICAgICBicmVhazsKLSAgICBjYXNlIExvYWRpbmc6
Ci0gICAgICAgIG1fc3RhdGUgPSBDYW5jZWxsZWQ7Ci0gICAgICAgIHN0b3BMb2FkaW5nKCk7Cisg
ICAgY2FzZSBMb2FkaW5nSWNvbjoKKyAgICAgICAgbV9zdGF0ZSA9IENhbmNlbGxlZEljb247Cisg
ICAgICAgIHN0b3BMb2FkaW5nSWNvbigpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNob3dp
bmc6CiAgICAgICAgIGlmIChtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkpCiAgICAgICAg
ICAgICBtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCktPmNhbmNlbCh0aGlzKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDYW5jZWxsZWQ6CisgICAgY2FzZSBDYW5jZWxsZWRJY29uOgor
ICAgIGNhc2UgQ2xvc2VkOgogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC0xNzgsMTIgKzIz
MSwxMiBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6Y29udGV4dERlc3Ryb3llZCgpCiAgICAgICAgIG1f
bm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKS0+bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVk
KHRoaXMpOwogfQogCi12b2lkIE5vdGlmaWNhdGlvbjo6c3RhcnRMb2FkaW5nKCkKK3ZvaWQgTm90
aWZpY2F0aW9uOjpzdGFydExvYWRpbmdJY29uKCkKIHsKICAgICBpZiAobV9zdGF0ZSAhPSBJZGxl
KQogICAgICAgICByZXR1cm47CiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgIG1f
c3RhdGUgPSBMb2FkaW5nOworICAgIG1fc3RhdGUgPSBMb2FkaW5nSWNvbjsKICAgICBUaHJlYWRh
YmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3Mg
PSBEb05vdFNlbmRDYWxsYmFja3M7CiAgICAgb3B0aW9ucy5zbmlmZkNvbnRlbnQgPSBEb05vdFNu
aWZmQ29udGVudDsKQEAgLTE5Myw3ICsyNDYsNyBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6c3RhcnRM
b2FkaW5nKCkKICAgICBtX2xvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIHRoaXMsIFJlc291cmNlUmVxdWVzdChpY29uVVJMKCkpLCBvcHRp
b25zKTsKIH0KIAotdm9pZCBOb3RpZmljYXRpb246OnN0b3BMb2FkaW5nKCkKK3ZvaWQgTm90aWZp
Y2F0aW9uOjpzdG9wTG9hZGluZ0ljb24oKQogewogICAgIG1faWNvbkRhdGEgPSAwOwogICAgIFJl
ZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBwcm90ZWN0KG1fbG9hZGVyKTsKQEAgLTIwNCw3ICsyNTcs
NyBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlcwogewogICAgIGludCBzdGF0dXMgPSByZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpOwogICAgIGlmIChzdGF0dXMgJiYgKHN0YXR1cyA8IDIwMCB8fCBz
dGF0dXMgPiAyOTkpKSB7Ci0gICAgICAgIHN0b3BMb2FkaW5nKCk7CisgICAgICAgIHN0b3BMb2Fk
aW5nSWNvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1faWNvbkRhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwpAQCAtMjMyLDEzICsyODUsMjMgQEAgdm9pZCBOb3RpZmljYXRp
b246OmRpZEZhaWxSZWRpcmVjdENoZWNrKCkKIAogdm9pZCBOb3RpZmljYXRpb246OmZpbmlzaExv
YWRpbmcoKQogewotICAgIGlmIChtX3N0YXRlID09IExvYWRpbmcpIHsKKyAgICBpZiAobV9zdGF0
ZSA9PSBMb2FkaW5nSWNvbikgewogICAgICAgICBpZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNs
aWVudCgpICYmIG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKS0+c2hvdyh0aGlzKSkKICAg
ICAgICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOwogICAgIH0KICAgICB1bnNldFBlbmRpbmdBY3Rp
dml0eSh0aGlzKTsKIH0KIAordm9pZCBOb3RpZmljYXRpb246OmZpbmFsaXplKCkKK3sKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgaWYgKG1fc3RhdGUgPT0gQ2xvc2VkKQorICAgICAgICByZXR1cm47
CisgICAgbV9zdGF0ZSA9IENsb3NlZDsKKyAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsK
KyNlbmRpZgorfQorCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hTaG93RXZlbnQoKQogewog
ICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2hvd0V2ZW50LCBm
YWxzZSwgZmFsc2UpKTsKQEAgLTI1Miw2ICszMTUsNyBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlz
cGF0Y2hDbGlja0V2ZW50KCkKIHZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQo
KQogewogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xvc2VF
dmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgZmluYWxpemUoKTsKIH0KIAogdm9pZCBOb3RpZmlj
YXRpb246OmRpc3BhdGNoRXJyb3JFdmVudCgpCkBAIC0yNTksNiArMzIzLDE0IEBAIHZvaWQgTm90
aWZpY2F0aW9uOjpkaXNwYXRjaEVycm9yRXZlbnQoKQogICAgIGRpc3BhdGNoRXZlbnQoRXJyb3JF
dmVudDo6Y3JlYXRlKCkpOwogfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCit2b2lkIE5v
dGlmaWNhdGlvbjo6c2hvd1Rhc2tUaW1lckZpcmVkKFRpbWVyPE5vdGlmaWNhdGlvbj4qIHRpbWVy
KQoreworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09IG1fc2hvd1Rhc2tUaW1lci5n
ZXQoKSk7CisgICAgc2hvdygpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElG
SUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaApp
bmRleCBhNjcxNTlhOWUyNGJhMmU5OTI2YWYwNDBjOTRjNmZiMjIyZWNiYjgxLi41MGUxYzIyMWMw
M2JiMmE5Nzc4YzEzY2M4YjkwZTYxMzdiNDMwNTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAgLTQ1LDkgKzQ1LDE0IEBACiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KIAorI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIlRpbWVyLmgiCisjZW5kaWYKKwogI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERpY3Rpb25hcnk7CiBjbGFzcyBOb3RpZmljYXRp
b25DZW50ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
QEAgLTYwLDggKzY1LDEzIEBAIGNsYXNzIE5vdGlmaWNhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVk
PE5vdGlmaWNhdGlvbj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTm90aWZpY2F0aW9uKCk7CisjaWYgRU5BQkxF
KExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlv
bj4gY3JlYXRlKGNvbnN0IEtVUkwmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9u
Q29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcik7CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+
IHByb3ZpZGVyKTsKKyNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKTsKKyNlbmRp
ZgogICAgIAogICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlvbigpOwogCkBAIC03OCw2ICs4OCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFVSTChLVVJMIHVybCkgeyBtX25vdGlmaWNhdGlvblVSTCA9
IHVybDsgfQogICAgIAogICAgIEtVUkwgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1faWNvbjsg
fQorCiAgICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQogICAgIFN0
cmluZyBib2R5KCkgY29uc3QgeyByZXR1cm4gbV9ib2R5OyB9CiAKQEAgLTExNyw3ICsxMjgsNyBA
QCBwdWJsaWM6CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IGludGVyZmFjZQogICAgIHZpcnR1YWwg
dm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CiAKLSAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CisgICAg
dm9pZCBzdG9wTG9hZGluZ0ljb24oKTsKIAogICAgIFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEoKSB7
IHJldHVybiBtX2ljb25EYXRhLmdldCgpOyB9CiAgICAgdm9pZCByZWxlYXNlSWNvbkRhdGEoKSB7
IG1faWNvbkRhdGEgPSAwOyB9CkBAIC0xMzEsOSArMTQyLDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWxSZWRpcmVjdENoZWNrKCk7CiAKKyAgICB2b2lkIGZpbmFsaXplKCk7CisKIHByaXZh
dGU6CisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIE5vdGlmaWNhdGlvbihj
b25zdCBLVVJMJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNz
UmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4pOwogICAgIE5vdGlmaWNhdGlvbihjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNh
dGlvbkNlbnRlcj4pOworI2VuZGlmCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgTm90
aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsK
KyNlbmRpZgorCisgICAgdm9pZCBzZXRCb2R5KGNvbnN0IFN0cmluZyYgYm9keSkgeyBtX2JvZHkg
PSBib2R5OyB9CiAKICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKICAgICB2aXJ0dWFsIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CkBAIC0xNDEsOSArMTYxLDEzIEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwogICAg
IHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKIAotICAg
IHZvaWQgc3RhcnRMb2FkaW5nKCk7CisgICAgdm9pZCBzdGFydExvYWRpbmdJY29uKCk7CiAgICAg
dm9pZCBmaW5pc2hMb2FkaW5nKCk7CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICB2
b2lkIHNob3dUYXNrVGltZXJGaXJlZChUaW1lcjxOb3RpZmljYXRpb24+Kik7CisjZW5kaWYKKyAg
ICAKICAgICBib29sIG1faXNIVE1MOwogCiAgICAgLy8gVGV4dCBub3RpZmljYXRpb25zLgpAQCAt
MTU4LDkgKzE4MiwxMCBAQCBwcml2YXRlOgogCiAgICAgZW51bSBOb3RpZmljYXRpb25TdGF0ZSB7
CiAgICAgICAgIElkbGUgPSAwLAotICAgICAgICBMb2FkaW5nID0gMSwKKyAgICAgICAgTG9hZGlu
Z0ljb24gPSAxLAogICAgICAgICBTaG93aW5nID0gMiwKLSAgICAgICAgQ2FuY2VsbGVkID0gMwor
ICAgICAgICBDYW5jZWxsZWRJY29uID0gMywKKyAgICAgICAgQ2xvc2VkID0gNCwKICAgICB9Owog
CiAgICAgTm90aWZpY2F0aW9uU3RhdGUgbV9zdGF0ZTsKQEAgLTE3MSw2ICsxOTYsOSBAQCBwcml2
YXRlOgogCiAgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fbG9hZGVyOwogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1faWNvbkRhdGE7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisg
ICAgT3duUHRyPFRpbWVyPE5vdGlmaWNhdGlvbj4gPiBtX3Nob3dUYXNrVGltZXI7CisjZW5kaWYK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmlkbAppbmRleCAxZmI2NzQ2ZDQ0NzNjZGNmOTkzZmFkNDY4MTgz
NjkyNTEzMzgwYzIyLi4wNzlmMTNlY2EzMTgzNmIxZTQyYjM5NDUyNDdmMTRkOTg3M2JkZmFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0z
NSw3ICszNSwxMiBAQCBtb2R1bGUgdGhyZWFkcyB7CiAgICAgICAgIENvbmRpdGlvbmFsPU5PVElG
SUNBVElPTlN8TEVHQUNZX05PVElGSUNBVElPTlMsCiAgICAgICAgIEFjdGl2ZURPTU9iamVjdCwK
ICAgICAgICAgRXZlbnRUYXJnZXQsCisjaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykg
JiYgRU5BQkxFX05PVElGSUNBVElPTlMKKyAgICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5n
IHRpdGxlLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBEaWN0aW9uYXJ5IG9wdGlv
bnMpLAorICAgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAorI2Vsc2UKICAg
ICAgICAgT21pdENvbnN0cnVjdG9yCisjZW5kaWYKICAgICBdIE5vdGlmaWNhdGlvbiB7CiAgICAg
ICAgIHZvaWQgc2hvdygpOwogI2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05T
KSAmJiBFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCmluZGV4IGEwNDdhYmY4MTA5MmJiYWJj
ZjE2NDc2MDIwMzNiZTJmMmNmNjhhMjcuLjQ5Mjk5ZTFhMDJhOTExZTkzMDYyNWQzMmZhNjQ4MzNk
YmNjM2ExZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ2VudGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25DZW50ZXIuaApAQCAtNTMsNiArNTMsNyBAQCBjbGFzcyBOb3RpZmljYXRpb25DZW50ZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb25DZW50ZXI+LCBwdWJsaWMgQWN0aXZlRAog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBOb3RpZmljYXRpb25DbGllbnQqKTsKIAorI2lmIEVO
QUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4g
Y3JlYXRlSFRNTE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIFVSSSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgewogICAgICAgICBpZiAoIWNsaWVudCgpKSB7CkBAIC02NSw3ICs2Niw5IEBAIHB1
YmxpYzoKICAgICAgICAgfQogICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uOjpjcmVhdGUoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChVUkkpLCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIGVjLCB0aGlzKTsKICAgICB9CisjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lf
Tk9USUZJQ0FUSU9OUykKICAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlTm90aWZp
Y2F0aW9uKGNvbnN0IFN0cmluZyYgaWNvblVSSSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiBib2R5LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB7CiAgICAgICAgIGlmICghY2xp
ZW50KCkpIHsKQEAgLTc0LDYgKzc3LDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVSSSwgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBlYywgdGhpcyk7CiAgICAgfQorI2VuZGlmCiAKICAgICBOb3RpZmlj
YXRpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbApp
bmRleCA3YjBmYzI1NTU3Y2M1MGEzYjU1NzhjMzJiODIyNDUwOTFjMTFjMjdiLi5lNTA4NDQ3ZDQ5
ZWJhYTQxOWNmZTcyNTAwMjRjOTMxMTYyZWVkZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNiwxMCArMzYsMTIg
QEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgICAgIE9t
aXRDb25zdHJ1Y3RvcgogICAgIF0gTm90aWZpY2F0aW9uQ2VudGVyIHsKKyNpZiBkZWZpbmVkKEVO
QUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05T
CiAjaWYgIWRlZmluZWQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKSB8fCAhRU5BQkxF
X1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZCiAgICAgICAgW1Y4Q3VzdG9tXSBOb3RpZmljYXRpb24g
Y3JlYXRlSFRNTE5vdGlmaWNhdGlvbihpbiBET01TdHJpbmcgdXJsKSByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKICNlbmRpZgogICAgICAgIFtWOEN1c3RvbV0gTm90aWZpY2F0aW9uIGNyZWF0ZU5vdGlm
aWNhdGlvbihpbiBET01TdHJpbmcgaWNvblVybCwgaW4gRE9NU3RyaW5nIHRpdGxlLCBpbiBET01T
dHJpbmcgYm9keSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisjZW5kaWYKIAogICAgICAgIGludCBj
aGVja1Blcm1pc3Npb24oKTsKICAgICAgICBbQ3VzdG9tXSB2b2lkIHJlcXVlc3RQZXJtaXNzaW9u
KGluIFZvaWRDYWxsYmFjayBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KaW5kZXggODEyMDkz
NjAxNjM3NDliNzY2ZmM3YjhkM2Q3MDYwMjdjYjI3ZDZkYS4uYzhiMWUyZDFlMzdhMDEyMGI4OTA3
MDBhOWJkNTg2NmZmODU2YTgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQpAQCAtMTA4LDYgKzEwOCw3
IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjbGVhck5vdGlmaWNhdGlvbnMoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNv
dW50OyArK2kpIHsKICAgICAgICAgV2ViTm90aWZpY2F0aW9uICp3ZWJOb3RpZmljYXRpb24gPSB3
ZWJOb3RpZmljYXRpb25zW2ldLmdldCgpOwogICAgICAgICBbbnNJRHMgYWRkT2JqZWN0OltOU051
bWJlciBudW1iZXJXaXRoVW5zaWduZWRMb25nTG9uZzpbd2ViTm90aWZpY2F0aW9uIG5vdGlmaWNh
dGlvbklEXV1dOworICAgICAgICBjb3JlKHdlYk5vdGlmaWNhdGlvbiktPmZpbmFsaXplKCk7CiAg
ICAgICAgIG1fbm90aWZpY2F0aW9uTWFwLnJlbW92ZShjb3JlKHdlYk5vdGlmaWNhdGlvbikpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDI2ZTU0MDc0
NGJkNTI3NGM5YjZkYWNlZWE1YmY5NGZhM2FlMDQ5NzMuLjZiYzZhNDgxZTE1MTBhY2Y4ZGU3MmZm
MGYxMzEzYjA5N2MwZGU4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAK
QEAgLTE1Myw2ICsxNTMsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90
aWZpY2F0aW9ucyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KgogICAgICAgICBSZWZQ
dHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLnRha2Uo
bm90aWZpY2F0aW9uSURzW2ldKTsKICAgICAgICAgaWYgKCFub3RpZmljYXRpb24pCiAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgbm90aWZpY2F0aW9uLT5maW5hbGl6ZSgpOwogICAgICAg
ICBtX25vdGlmaWNhdGlvbk1hcC5yZW1vdmUobm90aWZpY2F0aW9uKTsKICAgICB9CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138049</attachid>
            <date>2012-04-19 23:29:18 -0700</date>
            <delta_ts>2012-04-20 00:31:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80477-20120419233136.patch</filename>
            <type>text/plain</type>
            <size>35557</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDM1M2ExYWVhMzU2Y2Y5
OTlhNzY4YjRmMzYzN2YzMjVjNjZiN2E2OS4uMGNkYjNlNGM4MTliNDFlYWQ1ZDc2NDc5ZDVmYWY3
ZmU1ZmI1YTE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDEyLTA0LTE5ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTm90aWZpY2F0aW9uIGNvbnN0
cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MDQ3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA5MTI0MzE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgd2lsbCBiZSBhZGRlZCBvbmNl
IHRoZXJlIGlzIHN1cHBvcnQgZm9yIHdlYiBub3RpZmljYXRpb25zIG9uIHRoZSBNYWMgcG9ydHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IGZpbmFsaXplKCkgZnVuY3Rpb24u
CisKKyAgICAgICAgTW9kaWZ5IERpY3Rpb25hcnkgdG8gc3VwcG9ydCBjcmVhdGlvbiBvZiBldmVu
dCBsaXN0ZW5lcnMuCisgICAgICAgICogYmluZGluZ3MvanMvRGljdGlvbmFyeS5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6aXNPYmplY3QpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgSlNE
aWN0aW9uYXJ5IGlzIHZhbGlkLgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6aXNVbmRl
ZmluZWRPck51bGwpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgSlNEaWN0aW9uYXJ5IGlzIG5vdCB2YWxp
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldCk6IEFkZCBjb252ZW5pZW5jZSBm
dW5jdGlvbiB0byB0YWtlIGNvbnN0IGNoYXIqIGZvcgorICAgICAgICBwcm9wZXJ0eSBuYW1lLCB0
byBwcmV2ZW50IGhhdmluZyB0byBkbyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIFdURjo6U3RyaW5n
LgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0RXZlbnRMaXN0ZW5lcik6IEFkZCBm
dW5jdGlvbiB0byBjcmVhdGUgZXZlbnQgbGlzdGVuZXIKKyAgICAgICAgZnJvbSB0aGUgZGljdGlv
bmFyeS4KKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmFzSlNPYmplY3QpOiBIZWxwZXIg
dG8gY29udmVydCBXZWJDb3JlIG9iamVjdHMgdG8gSlMgd3JhcHBlci4KKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbik6
IEltcGxlbWVudCBhc0pTT2JqZWN0KCkgZm9yIE5vdGlmaWNhdGlvbi4KKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RpY3Rpb25hcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGljdGlvbmFyeTo6
ZXhlY1N0YXRlKTogRXhwb3NlIHRoZSBleGVjIHN0YXRlIHNvIHRoYXQgdGhlIERpY3Rpb25hcnkK
KyAgICAgICAgY2FuIG9idGFpbiBpdHMgd29ybGQgZm9yIGNyZWF0aW5nIHRoZSBldmVudCBsaXN0
ZW5lci4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIpOiBTdHViIGltcGxlbWVudGF0aW9u
LgorCisgICAgICAgIEFkZCBuZXcgY29uc3RydWN0b3IgdG8gaWRsIGRlZmluaXRpb25zLgorICAg
ICAgICAqIG5vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGw6IEFkZCBOb3Rp
ZmljYXRpb24gY29uc3RydWN0b3IsIGlmCisgICAgICAgIEVOQUJMRShOT1RJRklDQVRJT05TKSBp
cyBvbi4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGw6IElmIEVOQUJM
RShOT1RJRklDQVRJT05TKSBpcyB0dXJuZWQgb24sIGRlZmluZQorICAgICAgICB0aGUgY29uc3Ry
dWN0b3IuIE90aGVyd2lzZSwgdXNlIE9taXRDb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGw6IFdyYXAgY3JlYXRpb24gZnVuY3Rpb25zIGlu
CisgICAgICAgIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykuCisgICAgICAgICogbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaDogRGl0dG8uCisgICAgICAgIChOb3RpZmljYXRp
b25DZW50ZXIpOgorCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDoKKyAg
ICAgICAgKE5vdGlmaWNhdGlvbik6IFdyYXAgbGVnYWN5IGNvbnN0cnVjdG9ycyBpbiBFTkFCTEUo
TEVHQUNZX05PVElGSUNBVElPTlMpLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpj
cmVhdGUpOiBOZXcgY3JlYXRpb24gZnVuY3Rpb24gYmFzZWQgb24gZGlzY3Vzc2lvbnMgaW4gV0cu
CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0QW5kQWRkRXZlbnRMaXN0ZW5lcik6IEhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhl
IGxpc3RlbmVyIGZyb20gdGhlCisgICAgICAgIGRpY3Rpb25hcnksIGFuZCBhdHRhY2ggdG8gdGhl
IG5vdGlmaWNhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y3JlYXRlKTog
Q3JlYXRlIHRoZSBub3RpZmljYXRpb24sIHRoZW4gYXBwbHkgd2hhdGV2ZXIKKyAgICAgICAgcHJv
cGVydGllcyBjYW4gYmUgZm91bmQgaW4gdGhlIGRpY3Rpb25hcnkgdG8gdGhlIG5vdGlmaWNhdGlv
bi4gSW4gb3JkZXIgdG8KKyAgICAgICAgYXR0YWNoIHRoZSBldmVudCBsaXN0ZW5lcnMsIHRoZSBu
b3RpZmljYXRpb24gaGFzIHRvIGhhdmUgYmVlbiBjcmVhdGVkLCB3aGljaCBpcworICAgICAgICB3
aHkgdGhpcyBhbGwgaGFwcGVucyBpbiB0aGUgZmFjdG9yeSBtZXRob2QgYW5kIG5vdCBpbiB0aGUg
Y29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnNldEJvZHkpOiBB
ZGRlZCBzbyB0aGF0IGl0IGNhbiBiZSBzZXQgaWYgd2UgZmluZCBpdCBpbiB0aGUKKyAgICAgICAg
ZGljdGlvbmFyeS4KKworICAgICAgICBUaGUgbmV3IGNvbnN0cnVjdG9yIHF1ZXVlcyBhIHRhc2sg
dG8gc2hvdyB3aGVuIGl0IGlzIGNyZWF0ZWQuIFRvIHN1cHBvcnQgdGhpcywgd2UKKyAgICAgICAg
dXNlIGEgb25lLXNob3QgdGltZXIgdGhhdCBjYWxscyBzaG93KCkgaW4gdGhlIG5leHQgaXRlcmF0
aW9uIG9mIHRoZSBydW4gbG9vcC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Tm90
aWZpY2F0aW9uKTogU3RhcnQgdGhlIHRpbWVyLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uOjpzaG93VGFza1RpbWVyRmlyZWQpOiBDYWxsIHNob3coKS4KKworICAgICAgICBOb3RpZmlj
YXRpb25zLCBub3QgYmVpbmcgYXR0YWNoZWQgdG8gdGhlIERPTSwgY291bGQgYmUgR0MnZWQgYnkg
dGhlIEpTIGVuZ2luZQorICAgICAgICBiZWZvcmUgaXRzIGxpZmUgY3ljbGUgaGFzIGNvbXBsZXRl
ZC4gV2UgYWRkIGNhbGxzIHRvIHNldFBlbmRpbmdBY3Rpdml0eSgpIHdoZW4gdGhlCisgICAgICAg
IG5vdGlmaWNhdGlvbiBoYXMgYmVlbiBzaG93biwgYW5kIHdoZW4gaXQgaXMgY2xvc2VkLCB3ZSB1
bnNldFBlbmRpbmdBY3Rpdml0eSgpLgorICAgICAgICBUbyBndWFyYW50ZWUgdGhhdCB3ZSBvbmx5
IGNhbGwgdGhpcyBvbmNlLCB3ZSBhZGQgYSBuZXcgc3RhdGUgdG8gdGhlIE5vdGlmaWNhdGlvbgor
ICAgICAgICBzdGF0ZSBtYWNoaW5lLCBjYWxsZWQgTm90aWZpY2F0aW9uU3RhdGU6OkNsb3NlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2hvdyk6IENhbGwgc2V0UGVuZGluZ0Fj
dGl2aXR5KCkgZm9yIGFsbCBwb3J0cy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6
Y2xvc2UpOiBJbmNsdWRlIENsb3NlZCBzdGF0ZSB0byBtYWNoaW5lOyBkbyBub3RoaW5nLgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQpOiBDYWxsIGZp
bmFsaXplKCkuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmZpbmFsaXplKTogSWYg
dGhlIHN0YXRlIGlzIG5vdCBDbG9zZWQsIHdlIHVuc2V0UGVuZGluZ0FjdGl2aXR5KCkKKyAgICAg
ICAgdG8gbWFrZSBpdCBhdmFpbGFibGUgZm9yIEdDLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uOjpmaW5pc2hMb2FkaW5nKTogUmVtb3ZlIHRoZSB1bnNldFBlbmRpbmdBY3Rpdml0eSgp
LiBUaGF0IGNhbGwKKyAgICAgICAgd2FzIHRvIGJhbGFuY2UgdGhlIHNldFBlbmRpbmdBY3Rpdml0
eSgpIGNhbGxlZCBmb3IgbG9hZGluZyB0aGUgaWNvbi4gSW5zdGVhZCBvZiB3cmFwcGluZworICAg
ICAgICBhcm91bmQgdGhlIGljb24gbG9hZCwgd2Ugd3JhcCBhcm91bmQgdGhlIHNob3coKSAtPiBm
aW5hbGl6ZSgpIGxvb3AuCisKKyAgICAgICAgSW4gTm90aWZpY2F0aW9uLCByZW5hbWUgc29tZSBv
ZiB0aGUgc3RhZ2VzIGFuZCBmdW5jdGlvbnMgdG8gbW9yZSBjbGVhcmx5IGNvbW11bmljYXRlCisg
ICAgICAgIHRoYXQgdGhleSBtb3N0bHkgZGVhbCB3aXRoIHRoZSBpY29uIG9mIHRoZSBub3RpZmlj
YXRpb24sIGluc3RlYWQgb2YgZ2VuZXJhbCBsb2FkaW5nLgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjpzaG93KTogUmVmYWN0b3JlZCB0byB1c2UgTG9hZGluZ0ljb24gYW5kIENhbmNl
bGxlZEljb24uCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNsb3NlKTogUmVmYWN0
b3JlZCB0byB1c2UgTG9hZGluZ0ljb24gYW5kIENhbmNlbGxlZEljb24uCisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb246On5Ob3RpZmljYXRpb24pOiBSZWZhY3RvciB0byB1c2UgTG9hZGlu
Z0ljb24uCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnN0YXJ0TG9hZGluZ0ljb24p
OiBSZW5hbWVkIGZyb20gc3RhcnRMb2FkaW5nKCkuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb246OnN0b3BMb2FkaW5nSWNvbik6IFJlbmFtZWQgZnJvbSBzdG9wTG9hZGluZygpLgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpmaW5pc2hMb2FkaW5nKToKKworICAgICAgICBBZGQg
RGljdGlvbmFyeS5jcHAuCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBUYXJnZXQucHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisKKyAgICAgICAgRml4IGJ1ZyBpbiBWOCBiaW5kaW5ncyBnZW5lcmF0aW9uIGNvZGUu
IElmIHRoZSBjb25zdHJ1Y3RvciBkb2Vzbid0IHJhaXNlIGFuIGV4Y2VwdGlvbiwKKyAgICAgICAg
ZG9uJ3QgdXNlIGFuIGV4Y2VwdGlvbiBjb2RlLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOiBSZXNldCBy
ZXN1bHRzLgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om9wdGlvbnNPYmpl
Y3RDYWxsYmFjayk6CisKIDIwMTItMDQtMTYgIEdlb3JnZSBTdGFpa29zICA8c3RhaWtvc0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIEZpeCBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2ggd2FybmluZyBm
b3IgQmxhY2tCZXJyeSBkZWJ1ZyBidWlsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZjA5ZTk3OGY4
MzIwMzIyNWYwOGQ0MzRhMzFhNjA4MTNkNjMyMWJmMC4uZjk3YWNiOTZkYmZkZTk0NmY5MGI1ZmNl
YmU5MTkzNjA0NTczMzBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEy
LTA0LTE5ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTm90aWZp
Y2F0aW9uIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MDQ3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA5MTI0MzE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW06CisgICAgICAgIChXZWJOb3RpZmljYXRpb25D
bGllbnQ6OmNsZWFyTm90aWZpY2F0aW9ucyk6IFdoZW4gY2xlYXJpbmcgbm90aWZpY2F0aW9ucywg
ZmluYWxpemUKKyAgICAgICAgdGhlbSBzbyB0aGF0IHRoZXkgY2FuIGJlIGNsZWFuZWQgdXAgYnkg
dGhlIEdDLgorCiAyMDEyLTA0LTEyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSRUdSRVNTSU9OIChyMTAyMjYyKTogaUFkIFByb2R1Y2VyIHJlbGllcyBvbiBDU1NT
dHlsZURlY2xhcmF0aW9uIHByb3BlcnR5IHNldHRlcnMgcmVzcGVjdGluZyAnIWltcG9ydGFudCcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2NjJlNDZmNjMwZDU3Y2E2OWVhM2ExMmI5YzQ5M2M4OTAyNzVhZjExLi4w
NzYxZTY5YTE5MDQ1OGViZDM0NWM4ZWVmNTAzNDQ4NGRmZWM1MTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDQtMTkgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZCBOb3RpZmljYXRpb24gY29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNDc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMDkxMjQzMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmlj
YXRpb25zKTogV2hlbiBjbGVhcmluZyBub3RpZmljYXRpb25zLAorICAgICAgICBmaW5hbGl6ZSB0
aGVtIHNvIHRoYXQgdGhleSBjYW4gYmUgY2xlYW5lZCB1cCBieSB0aGUgR0MuCisKIDIwMTItMDQt
MTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIFVzZSBHUmVmUHRyIHRvIGRlbGV0ZSB0aGUgZGVmYXVsdCB3ZWIgY29udGV4dCBpbiBX
ZWJLaXQyIEdUSysKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDU3NGJiMDQ2NmZk
YjgzMGUyYTQwOGNjYmE0NTE1ZjczMTk3NDQ4N2QuLjQyNTc1NWVjZTNkY2IwYjYyYzE5MTRkODQy
N2M2ZDIyODMwZTBhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTQ3MSw2
ICsxNDcxLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSmF2YVNjcmlwdENhbGxGcmFtZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9E
aWN0aW9uYXJ5LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQppbmRleCBhNDE3MmM2NjUyODU1MWZiMDA0YmQxMmRkZWNhYjkzYzhkZDdlZTE3
Li4yNzUzMzNmMTE2ODVkNmU5ZmFkMTNjZWE1Mzk5MGE1YWVhNmEwOTVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
QEAgLTI0Niw2ICsyNDYsNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL2pzL0NhbGxiYWNrRnVu
Y3Rpb24uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmNw
cCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAgXAorICAgICAgICBi
aW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0dDQ29udHJv
bGxlci5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcCBc
CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCmlu
ZGV4IGQwNzRhOTAxZTk1Y2E4N2QxZGIxMjgzNjY1Y2Q0MzY1MjRmMzYzMTQuLjUxNTU4MWNkMGVk
YjM4ZDU0NWE2YmYzNGNjMjNlM2ZjNjdmOTVkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAgLTI1LDYg
KzI1LDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvQ2Fs
bGJhY2tGdW5jdGlvbi5jcHAKICAgICBiaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAu
Y3BwCiAgICAgYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcAorICAgIGJpbmRpbmdzL2pz
L0RpY3Rpb25hcnkuY3BwCiAgICAgYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAogICAgIGJp
bmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNBdHRy
Q3VzdG9tLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA3YjQ3NDQ5OGQ3ZGJlMDhjNTFkYWE2
OGIwNzNmNTA5NDU2NjYwMzYzLi5jMGZkYjY4MzJkNzc0ODcwZjdlYmYzYmUyMDIzN2MwNzhjYWU3
NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjE1NSw2ICsyMTU1LDcgQEAgX3drQ3JlYXRl
Vk1QcmVzc3VyZURpc3BhdGNoT25NYWluUXVldWUKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykg
fHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogX19aTjdXZWJDb3JlMTJOb3RpZmljYXRp
b25DMUV2CiBfX1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbkQxRXYKK19fWk43V2ViQ29yZTEyTm90
aWZpY2F0aW9uOGZpbmFsaXplRXYKIF9fWk43V2ViQ29yZTEyTm90aWZpY2F0aW9uMTdkaXNwYXRj
aFNob3dFdmVudEV2CiBfX1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbjE4ZGlzcGF0Y2hDbGlja0V2
ZW50RXYKIF9fWk43V2ViQ29yZTEyTm90aWZpY2F0aW9uMThkaXNwYXRjaENsb3NlRXZlbnRFdgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDBkNjcwYWRhMjI1NGNlNGNhNjM1NTEzNTM2YzM2NWFmMjFlNzFj
MmEuLmEwMmU5OGQxZDAyZThiYjllZDY1NThiYmY3YWQzNzJhY2FhMTVmNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTIwMjYsNiArMjAyNiw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNY
U0xUUHJvY2Vzc29yQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSmF2YVNj
cmlwdENhbGxGcmFtZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0phdmFTY3JpcHRD
YWxsRnJhbWUuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
U2NoZWR1bGVkQWN0aW9uLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5
LmNwcAppbmRleCA3NWJlZjE1NDk2MDJmZGQ5NTlkNzZkODlkZjQ3NTIxNzA5ZDI0Yzk1Li4yYzFi
Nzg1ZmUwZjg1YzhhYWFjNzY4OTlhNGQ4MGM5YjZhMDllOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcApAQCAtMjYsNiArMjYsMTEgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKKyNpbmNsdWRlICJKU05vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlv
bi5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTM1LDE0ICs0MCwxNCBAQCBEaWN0aW9uYXJ5OjpEaWN0aW9uYXJ5KEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBSZXN1bHQ+Ci1ib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSwgUmVzdWx0JiByZXN1bHQpIGNvbnN0CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK3Rl
bXBsYXRlPD4KK0pTT2JqZWN0KiBEaWN0aW9uYXJ5Ojphc0pTT2JqZWN0PE5vdGlmaWNhdGlvbj4o
Tm90aWZpY2F0aW9uKiBvYmplY3QpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2RpY3Rpb25hcnkuaXNW
YWxpZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgcmV0dXJuIG1fZGljdGlv
bmFyeS5nZXQocHJvcGVydHlOYW1lLmFzY2lpKCkuZGF0YSgpLCByZXN1bHQpOworICAgIHJldHVy
biBhc09iamVjdCh0b0pTKG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKSwganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4obV9kaWN0aW9uYXJ5LmV4ZWNTdGF0ZSgpLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLCBvYmplY3QpKTsKIH0KKyNlbmRpZgogCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9EaWN0aW9uYXJ5LmgKaW5kZXggOTNhNDhiOGFlNTc3MTU2NGYwZjdhZmIzZDE3ZTgyNWYzOGU2
ZDNlNi4uZDQxY2IxNzA1M2QyYWFhOWUyZTQzZWMzYmQ4YmEwOGJhODNkM2EzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaApAQCAtMjgsNiArMjgsNyBAQAogI2RlZmlu
ZSBEaWN0aW9uYXJ5X2gKIAogI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIkpT
RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAi
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC00NiwxNiAr
NDcsNjIgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGEgdmFsdWUgd2FzIGZv
dW5kIGZvciB0aGUgcHJvdmlkZWQgcHJvcGVydHkuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFJl
c3VsdD4KKyAgICBib29sIGdldChjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFJlc3VsdCYpIGNv
bnN0OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+CiAgICAgYm9vbCBnZXQoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFJlc3VsdCYpIGNvbnN0OworICAgIAorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgorICAgIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0
ZW5lcihjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3Q7CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBnZXRFdmVu
dExpc3RlbmVyKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0Owog
Ci0gICAgYm9vbCBpc09iamVjdCgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0IHsgbm90SW1wbGVtZW50
ZWQoKTsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGljdGlvbmFyeS5pc1ZhbGlkKCk7IH0KKyAgICBib29sIGlzVW5kZWZpbmVkT3JOdWxsKCkg
Y29uc3QgeyByZXR1cm4gIW1fZGljdGlvbmFyeS5pc1ZhbGlkKCk7IH0KICAgICBib29sIGdldFdp
dGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJpbmcmLCBTdHJpbmcmKSBjb25zdCB7IG5v
dEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgorICAgIEpTQzo6SlNPYmplY3QqIGFzSlNPYmplY3QoVCopIGNvbnN0Owor
ICAgIAogICAgIEpTRGljdGlvbmFyeSBtX2RpY3Rpb25hcnk7CiB9OwogCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUmVzdWx0PgorYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgY2hhciogcHJvcGVydHlO
YW1lLCBSZXN1bHQmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZGljdGlvbmFyeS5pc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gbV9kaWN0aW9u
YXJ5LmdldChwcm9wZXJ0eU5hbWUsIHJlc3VsdCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBS
ZXN1bHQ+Citib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwg
UmVzdWx0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldChwcm9wZXJ0eU5hbWUudXRm
OCgpLmRhdGEoKSwgcmVzdWx0KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIoY29uc3QgY2hh
ciogcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RpY3Rpb25h
cnkuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFNjcmlwdFZhbHVlIGV2ZW50
TGlzdGVuZXI7CisgICAgaWYgKCFtX2RpY3Rpb25hcnkudHJ5R2V0UHJvcGVydHkocHJvcGVydHlO
YW1lLCBldmVudExpc3RlbmVyKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGV2ZW50TGlz
dGVuZXIuaGFzTm9WYWx1ZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4g
SlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QoZXZlbnRMaXN0ZW5lci5qc1ZhbHVlKCkp
LCBhc0pTT2JqZWN0KHRhcmdldCksIHRydWUsIGN1cnJlbnRXb3JsZChtX2RpY3Rpb25hcnkuZXhl
Y1N0YXRlKCkpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitQYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0RXZlbnRMaXN0ZW5l
cihwcm9wZXJ0eU5hbWUudXRmOCgpLmRhdGEoKSwgdGFyZ2V0KTsKK30KKwogfQogCiAjZW5kaWYg
Ly8gRGljdGlvbmFyeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5o
CmluZGV4IGU5ZDk5ZTFmYzAzZTkxYThkZWUwOTY4NjNiZTBmYzc4OWU1YTAzZDAuLjhmNjMzN2Q2
ZTRhMzg0ZjhiNWRlMTcyOGU2MDU1NTkxZTQyMTE0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRGljdGlvbmFyeS5oCkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgogICAgIGJvb2wgZ2V0KGNvbnN0IGNoYXIqIHByb3BlcnR5
TmFtZSwgUmVzdWx0JikgY29uc3Q7CiAKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9leGVjOyB9CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gbV9leGVjICYmIG1faW5pdGlhbGl6ZXJPYmplY3Q7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXgg
ZTk2OGE3MzU5YjcxYTYwZjg1ODMxYTg2NGQzYjhjOTk5MTExM2UzZS4uMGRlZGZmM2MxMTljNzdm
YTc4YzE4OWM4ZDMzMGM3NWFkNTk1YWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTE2NTAsOCArMTY1MCwxMCBAQCBz
dWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICAgSlNWYWx1ZVRvTmF0
aXZlKCRwYXJhbWV0ZXIsICJNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAkcGFyYW1JbmRl
eCwgJHBhcmFtZXRlckRlZmF1bHRQb2xpY3kpIikgLiAiKTtcbiI7CiAgICAgICAgICAgICBpZiAo
JG5hdGl2ZVR5cGUgZXEgJ0RpY3Rpb25hcnknKSB7CiAgICAgICAgICAgICAgICAkcGFyYW1ldGVy
Q2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoYXJncy5MZW5ndGgoKSA+ICRwYXJhbUluZGV4ICYmICEk
cGFyYW1ldGVyTmFtZS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICEkcGFyYW1ldGVyTmFtZS5pc09i
amVjdCgpKSB7XG4iOwotICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIg
ICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7XG4iOwotICAgICAgICAgICAgICAgJHBhcmFt
ZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7
XG4iOworICAgICAgICAgICAgICAgaWYgKEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfSkg
eworICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBl
YyA9IFRZUEVfTUlTTUFUQ0hfRVJSO1xuIjsKKyAgICAgICAgICAgICAgICAgICAkcGFyYW1ldGVy
Q2hlY2tTdHJpbmcgLj0gIiAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTtcbiI7
CisgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcg
Lj0gIiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoXCJOb3QgYW4gb2JqZWN0LlwiLCBWOFByb3h5
OjpUeXBlRXJyb3IpO1xuIjsKICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAu
PSAiICAgIH1cbiI7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDIwY2I5OGQxNTFlODg2
YTFkNzc3NjI1MjE5ODA4N2Q5YTJkYmJiNzEuLjYxMGYyYzdkMmYxYzU4YzZmYTQwNDIzOWQ5N2Qx
ZDI2ZmYzZWFiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC0xMTQzLDggKzExNDMsNiBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IG9wdGlvbnNPYmplY3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAgICAgRVhDRVBUSU9OX0JMT0NLKERpY3Rpb25hcnksIG9vLCBNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA+IDAgJiYgIW9vLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIW9vLmlzT2JqZWN0
KCkpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgVjhQcm94eTo6
c2V0RE9NRXhjZXB0aW9uKGVjKTsKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBhbiBv
YmplY3QuIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKICAgICB9CiAgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPD0gMSkgewpAQCAtMTE1Myw4ICsxMTUxLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBvcHRpb25zT2JqZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAg
ICB9CiAgICAgRVhDRVBUSU9OX0JMT0NLKERpY3Rpb25hcnksIG9vbywgTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CiAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPiAxICYmICFvb28uaXNVbmRlZmluZWRPck51bGwoKSAmJiAhb29vLmlzT2JqZWN0KCkp
IHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgVjhQcm94eTo6c2V0
RE9NRXhjZXB0aW9uKGVjKTsKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBhbiBvYmpl
Y3QuIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKICAgICB9CiAgICAgaW1wLT5vcHRpb25zT2JqZWN0
KG9vLCBvb28pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlv
bmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oCmluZGV4IDMy
MTY0YjhjYmIyM2E1NGFiYzU4NDk3OTk2MjU5NmM1ZmQyZmY4MzEuLmU1ODg5MGU1OWZiMjUyMTY1
MjA3MWNmODVmNjAxNTkxMzAxOTg3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RpY3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0
aW9uYXJ5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgRGljdGlvbmFyeV9oCiAjZGVmaW5l
IERpY3Rpb25hcnlfaAogCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3Jp
cHRWYWx1ZS5oIgpAQCAtMzgsMTIgKzM5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IERPTVN0cmluZ0xpc3Q7CiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBJREJLZXlSYW5nZTsKLWNs
YXNzIFN0b3JhZ2U7CiBjbGFzcyBNZWRpYUtleUVycm9yOwotY2xhc3MgVHJhY2tCYXNlOworY2xh
c3MgTm90aWZpY2F0aW9uOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25FcnJvcjsKIGNsYXNzIFNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0OwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0
OworY2xhc3MgU3RvcmFnZTsKK2NsYXNzIFRyYWNrQmFzZTsKIAogY2xhc3MgRGljdGlvbmFyeSB7
CiBwdWJsaWM6CkBAIC04NCw2ICs4Niw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZ2V0V2l0aFVu
ZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IFN0cmluZyYsIFN0cmluZyYpIGNvbnN0OwogCisgICAg
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBnZXRFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYs
IE5vdGlmaWNhdGlvbiopIGNvbnN0IHsgcmV0dXJuIDA7IH0KKwogcHJpdmF0ZToKICAgICBib29s
IGdldEtleShjb25zdCBTdHJpbmcmIGtleSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4mKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3Rp
ZmljYXRpb25zLmlkbCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90
aWZpY2F0aW9ucy5pZGwKaW5kZXggMDU3YjY2NmI2ZTNkNzQ3ZTU5NzQ0MGM0ZjNlYmM5ZjE2N2Jl
MzNmOS4uMWRmMWIxMWY5NjQ0MGZlMDFjMjY5YTU3NTkyOWY3YmQwZGE5NWNjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlv
bnMuaWRsCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMSw2ICszMSw5IEBAIG1vZHVsZSB3aW5kb3cg
ewogICAgICAgICBTdXBwbGVtZW50YWw9RE9NV2luZG93CiAgICAgXSBET01XaW5kb3dOb3RpZmlj
YXRpb25zIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVd
IE5vdGlmaWNhdGlvbkNlbnRlciB3ZWJraXROb3RpZmljYXRpb25zOworI2lmIGRlZmluZWQoRU5B
QkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCisgICAgICAgIGF0dHJp
YnV0ZSBOb3RpZmljYXRpb25Db25zdHJ1Y3RvciBOb3RpZmljYXRpb247CisjZW5kaWYKICAgICB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAK
aW5kZXggMjI0MWIzNjA3M2NiZDZkNmRkZjQ2MmFkM2E4ZWIxZTA5NTE2OTQ5Yi4uMDZhYzM4OWE5
OWFiYWUyMDc4ZWU5MmM4MmEzNmM4ZjljNWE2NWU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtMzUsNiArMzUsOSBAQAogCiAjaW5jbHVk
ZSAiTm90aWZpY2F0aW9uLmgiCiAKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJE
T01XaW5kb3dOb3RpZmljYXRpb25zLmgiCisjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKQEAgLTUyLDYgKzU1LDcgQEAgTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oKQog
ewogfQogCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogTm90aWZpY2F0aW9uOjpO
b3RpZmljYXRpb24oY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHBy
b3ZpZGVyKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2lz
SFRNTCh0cnVlKQpAQCAtNzAsNyArNzQsOSBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihj
b25zdCBLVVJMJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4YwogCiAg
ICAgbV9ub3RpZmljYXRpb25VUkwgPSB1cmw7CiB9CisjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdB
Q1lfTk9USUZJQ0FUSU9OUykKIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0
cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNv
bnRleHQsIHRoaXMpCiAgICAgLCBtX2lzSFRNTChmYWxzZSkKQEAgLTkwLDE1ICs5NiwzMyBAQCBO
b3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJp
bmcmIGJvZHksIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogfQorI2VuZGlm
CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUpCisg
ICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1faXNIVE1MKGZhbHNl
KQorICAgICwgbV90aXRsZSh0aXRsZSkKKyAgICAsIG1fc3RhdGUoSWRsZSkKKyAgICAsIG1fc2hv
d1Rhc2tUaW1lcihhZG9wdFB0cihuZXcgVGltZXI8Tm90aWZpY2F0aW9uPih0aGlzLCAmTm90aWZp
Y2F0aW9uOjpzaG93VGFza1RpbWVyRmlyZWQpKSkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+aXNE
b2N1bWVudCgpKTsKKyAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IERPTVdpbmRvd05vdGlmaWNh
dGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnMoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0
KS0+ZG9tV2luZG93KCkpOworICAgIAorICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbkNlbnRlci0+
Y2xpZW50KCkpOworICAgIG1fc2hvd1Rhc2tUaW1lci0+c3RhcnRPbmVTaG90KDApOworfQorI2Vu
ZGlmCiAKIE5vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlvbigpIAogewotICAgIGlmIChtX3N0YXRl
ID09IExvYWRpbmcpIHsKKyAgICBpZiAobV9zdGF0ZSA9PSBMb2FkaW5nSWNvbikgewogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2xvc2UoKTsKICAgICB9CiB9CiAKKyNp
ZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4g
Tm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25D
ZW50ZXI+IHByb3ZpZGVyKSAKIHsgCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0
aW9uKGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24odXJsLCBjb250ZXh0LCBlYywgcHJvdmlkZXIp
KSk7CkBAIC0xMTIsNiArMTM2LDMzIEBAIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3RpZmlj
YXRpb246OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmCiAgICAgbm90
aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJl
bGVhc2UoKTsKIH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitzdGF0aWMg
dm9pZCBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1l
LCBjb25zdCBjaGFyKiBwcm9wZXJ0eSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3Rl
bmVyID0gb3B0aW9ucy5nZXRFdmVudExpc3RlbmVyKHByb3BlcnR5LCBub3RpZmljYXRpb24pOwor
ICAgIGlmIChsaXN0ZW5lcikKKyAgICAgICAgbm90aWZpY2F0aW9uLT5hZGRFdmVudExpc3RlbmVy
KGV2ZW50TmFtZSwgbGlzdGVuZXIucmVsZWFzZSgpLCBmYWxzZSk7Cit9CisKK1Bhc3NSZWZQdHI8
Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25z
KQoreworICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbihhZG9wdFJlZihuZXcg
Tm90aWZpY2F0aW9uKGNvbnRleHQsIHRpdGxlKSkpOworICAgIFN0cmluZyBhcmd1bWVudDsKKyAg
ICBpZiAob3B0aW9ucy5nZXQoImJvZHkiLCBhcmd1bWVudCkpCisgICAgICAgIG5vdGlmaWNhdGlv
bi0+c2V0Qm9keShhcmd1bWVudCk7CisgICAgaWYgKG9wdGlvbnMuZ2V0KCJ0YWciLCBhcmd1bWVu
dCkpCisgICAgICAgIG5vdGlmaWNhdGlvbi0+c2V0VGFnKGFyZ3VtZW50KTsKKyAgICBnZXRBbmRB
ZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zaG93RXZlbnQsICJvbnNob3ciLCBvcHRpb25z
LCBub3RpZmljYXRpb24uZ2V0KCkpOworICAgIGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmNsb3NlRXZlbnQsICJvbmNsb3NlIiwgb3B0aW9ucywgbm90aWZpY2F0aW9uLmdldCgp
KTsKKyAgICBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCAi
b25lcnJvciIsIG9wdGlvbnMsIG5vdGlmaWNhdGlvbi5nZXQoKSk7CisgICAgZ2V0QW5kQWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgIm9uY2xpY2siLCBvcHRpb25zLCBu
b3RpZmljYXRpb24uZ2V0KCkpOworCisgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQo
KTsKKyAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVhc2UoKTsKK30KKyNlbmRpZgogCiBjb25z
dCBBdG9taWNTdHJpbmcmIE5vdGlmaWNhdGlvbjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7CkBA
IC0xMjYsMjAgKzE3NywyNSBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6c2hvdygpCiAgICAgICAgIC8v
IGhhbmRsaW5nIG9mIG9uZGlzcGxheSBtYXkgcmVseSBvbiB0aGF0LgogICAgICAgICBpZiAobV9z
dGF0ZSA9PSBJZGxlKSB7CiAgICAgICAgICAgICBtX3N0YXRlID0gU2hvd2luZzsKLSAgICAgICAg
ICAgIGlmIChtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkpCi0gICAgICAgICAgICAgICAg
bV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpLT5zaG93KHRoaXMpOworICAgICAgICAgICAg
aWYgKG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKSkgeworICAgICAgICAgICAgICAgIG1f
bm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKS0+c2hvdyh0aGlzKSkKKyAgICAgICAgICAgICAg
ICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9IGVsc2UKLSAgICAgICAgc3RhcnRMb2FkaW5nKCk7CisgICAgICAgIHN0YXJ0TG9hZGluZ0lj
b24oKTsKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBpZiAobV9zdGF0ZSA9PSBJZGxlICYmIG1f
bm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKSkgewogICAgICAgICBtX25vdGlmaWNhdGlvbkNl
bnRlci0+Y2xpZW50KCktPnNob3codGhpcyk7CisgICAgICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0
aGlzKTsKICAgICAgICAgbV9zdGF0ZSA9IFNob3dpbmc7CiAgICAgfQogI2Vsc2UKICAgICAvLyBw
cmV2ZW50IGRvdWJsZS1zaG93aW5nCi0gICAgaWYgKG1fc3RhdGUgPT0gSWRsZSAmJiBtX25vdGlm
aWNhdGlvbkNlbnRlci0+Y2xpZW50KCkgJiYgbV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgp
LT5zaG93KHRoaXMpKQorICAgIGlmIChtX3N0YXRlID09IElkbGUgJiYgbV9ub3RpZmljYXRpb25D
ZW50ZXItPmNsaWVudCgpICYmIG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKS0+c2hvdyh0
aGlzKSkgewogICAgICAgICBtX3N0YXRlID0gU2hvd2luZzsKKyAgICAgICAgc2V0UGVuZGluZ0Fj
dGl2aXR5KHRoaXMpOworICAgIH0KICNlbmRpZgogfQogCkBAIC0xNDgsMTUgKzIwNCwxNiBAQCB2
b2lkIE5vdGlmaWNhdGlvbjo6Y2xvc2UoKQogICAgIHN3aXRjaCAobV9zdGF0ZSkgewogICAgIGNh
c2UgSWRsZToKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMb2FkaW5nOgotICAgICAgICBtX3N0
YXRlID0gQ2FuY2VsbGVkOwotICAgICAgICBzdG9wTG9hZGluZygpOworICAgIGNhc2UgTG9hZGlu
Z0ljb246CisgICAgICAgIG1fc3RhdGUgPSBDYW5jZWxsZWRJY29uOworICAgICAgICBzdG9wTG9h
ZGluZ0ljb24oKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTaG93aW5nOgogICAgICAgICBp
ZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpKQogICAgICAgICAgICAgbV9ub3RpZmlj
YXRpb25DZW50ZXItPmNsaWVudCgpLT5jYW5jZWwodGhpcyk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ2FuY2VsbGVkOgorICAgIGNhc2UgQ2FuY2VsbGVkSWNvbjoKKyAgICBjYXNlIENsb3Nl
ZDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtMTc4LDEyICsyMzUsMTIgQEAgdm9pZCBO
b3RpZmljYXRpb246OmNvbnRleHREZXN0cm95ZWQoKQogICAgICAgICBtX25vdGlmaWNhdGlvbkNl
bnRlci0+Y2xpZW50KCktPm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCh0aGlzKTsKIH0KIAot
dm9pZCBOb3RpZmljYXRpb246OnN0YXJ0TG9hZGluZygpCit2b2lkIE5vdGlmaWNhdGlvbjo6c3Rh
cnRMb2FkaW5nSWNvbigpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gSWRsZSkKICAgICAgICAgcmV0
dXJuOwogICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICBtX3N0YXRlID0gTG9hZGlu
ZzsKKyAgICBtX3N0YXRlID0gTG9hZGluZ0ljb247CiAgICAgVGhyZWFkYWJsZUxvYWRlck9wdGlv
bnMgb3B0aW9uczsKICAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gRG9Ob3RTZW5kQ2Fs
bGJhY2tzOwogICAgIG9wdGlvbnMuc25pZmZDb250ZW50ID0gRG9Ob3RTbmlmZkNvbnRlbnQ7CkBA
IC0xOTMsNyArMjUwLDcgQEAgdm9pZCBOb3RpZmljYXRpb246OnN0YXJ0TG9hZGluZygpCiAgICAg
bV9sb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCB0aGlzLCBSZXNvdXJjZVJlcXVlc3QoaWNvblVSTCgpKSwgb3B0aW9ucyk7CiB9CiAKLXZv
aWQgTm90aWZpY2F0aW9uOjpzdG9wTG9hZGluZygpCit2b2lkIE5vdGlmaWNhdGlvbjo6c3RvcExv
YWRpbmdJY29uKCkKIHsKICAgICBtX2ljb25EYXRhID0gMDsKICAgICBSZWZQdHI8VGhyZWFkYWJs
ZUxvYWRlcj4gcHJvdGVjdChtX2xvYWRlcik7CkBAIC0yMDQsNyArMjYxLDcgQEAgdm9pZCBOb3Rp
ZmljYXRpb246OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXMKIHsKICAgICBpbnQgc3RhdHVzID0gcmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKTsKICAgICBpZiAoc3RhdHVzICYmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID4gMjk5KSkg
ewotICAgICAgICBzdG9wTG9hZGluZygpOworICAgICAgICBzdG9wTG9hZGluZ0ljb24oKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2ljb25EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKQEAgLTIzMiwxMSArMjg5LDIwIEBAIHZvaWQgTm90aWZpY2F0aW9uOjpkaWRGYWlsUmVk
aXJlY3RDaGVjaygpCiAKIHZvaWQgTm90aWZpY2F0aW9uOjpmaW5pc2hMb2FkaW5nKCkKIHsKLSAg
ICBpZiAobV9zdGF0ZSA9PSBMb2FkaW5nKSB7CisgICAgaWYgKG1fc3RhdGUgPT0gTG9hZGluZ0lj
b24pIHsKICAgICAgICAgaWYgKG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKSAmJiBtX25v
dGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCktPnNob3codGhpcykpCiAgICAgICAgICAgICBtX3N0
YXRlID0gU2hvd2luZzsKICAgICB9Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpmaW5hbGl6ZSgp
Cit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChtX3N0YXRlID09IENsb3NlZCkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fc3RhdGUgPSBDbG9zZWQ7CiAgICAgdW5zZXRQZW5kaW5nQWN0aXZp
dHkodGhpcyk7CisjZW5kaWYKIH0KIAogdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoU2hvd0V2
ZW50KCkKQEAgLTI1Miw2ICszMTgsNyBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbGlj
a0V2ZW50KCkKIHZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQoKQogewogICAg
IGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgZmFs
c2UsIGZhbHNlKSk7CisgICAgZmluYWxpemUoKTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb246OmRp
c3BhdGNoRXJyb3JFdmVudCgpCkBAIC0yNTksNiArMzI2LDE0IEBAIHZvaWQgTm90aWZpY2F0aW9u
OjpkaXNwYXRjaEVycm9yRXZlbnQoKQogICAgIGRpc3BhdGNoRXZlbnQoRXJyb3JFdmVudDo6Y3Jl
YXRlKCkpOwogfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCit2b2lkIE5vdGlmaWNhdGlv
bjo6c2hvd1Rhc2tUaW1lckZpcmVkKFRpbWVyPE5vdGlmaWNhdGlvbj4qIHRpbWVyKQoreworICAg
IEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09IG1fc2hvd1Rhc2tUaW1lci5nZXQoKSk7Cisg
ICAgc2hvdygpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAppbmRleCBhNjcx
NTlhOWUyNGJhMmU5OTI2YWYwNDBjOTRjNmZiMjIyZWNiYjgxLi41MGUxYzIyMWMwM2JiMmE5Nzc4
YzEzY2M4YjkwZTYxMzdiNDMwNTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmgKQEAgLTQ1LDkgKzQ1LDE0IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KIAorI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQorI2luY2x1ZGUgIlRpbWVyLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIERpY3Rpb25hcnk7CiBjbGFzcyBOb3RpZmljYXRpb25DZW50ZXI7
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTYwLDgg
KzY1LDEzIEBAIGNsYXNzIE5vdGlmaWNhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNh
dGlvbj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgTm90aWZpY2F0aW9uKCk7CisjaWYgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRl
KGNvbnN0IEtVUkwmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBh
c3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcik7CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3Ry
aW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVy
KTsKKyNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKTsKKyNlbmRpZgogICAgIAog
ICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlvbigpOwogCkBAIC03OCw2ICs4OCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFVSTChLVVJMIHVybCkgeyBtX25vdGlmaWNhdGlvblVSTCA9IHVybDsgfQog
ICAgIAogICAgIEtVUkwgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1faWNvbjsgfQorCiAgICAg
U3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQogICAgIFN0cmluZyBib2R5
KCkgY29uc3QgeyByZXR1cm4gbV9ib2R5OyB9CiAKQEAgLTExNyw3ICsxMjgsNyBAQCBwdWJsaWM6
CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IGludGVyZmFjZQogICAgIHZpcnR1YWwgdm9pZCBjb250
ZXh0RGVzdHJveWVkKCk7CiAKLSAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CisgICAgdm9pZCBzdG9w
TG9hZGluZ0ljb24oKTsKIAogICAgIFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEoKSB7IHJldHVybiBt
X2ljb25EYXRhLmdldCgpOyB9CiAgICAgdm9pZCByZWxlYXNlSWNvbkRhdGEoKSB7IG1faWNvbkRh
dGEgPSAwOyB9CkBAIC0xMzEsOSArMTQyLDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxS
ZWRpcmVjdENoZWNrKCk7CiAKKyAgICB2b2lkIGZpbmFsaXplKCk7CisKIHByaXZhdGU6CisjaWYg
RU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIE5vdGlmaWNhdGlvbihjb25zdCBLVVJM
JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5v
dGlmaWNhdGlvbkNlbnRlcj4pOwogICAgIE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRl
cj4pOworI2VuZGlmCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgTm90aWZpY2F0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyNlbmRpZgor
CisgICAgdm9pZCBzZXRCb2R5KGNvbnN0IFN0cmluZyYgYm9keSkgeyBtX2JvZHkgPSBib2R5OyB9
CiAKICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZl
bnRUYXJnZXQoKSB7IHJlZigpOyB9CkBAIC0xNDEsOSArMTYxLDEzIEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwogICAgIHZpcnR1YWwg
RXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKIAotICAgIHZvaWQgc3Rh
cnRMb2FkaW5nKCk7CisgICAgdm9pZCBzdGFydExvYWRpbmdJY29uKCk7CiAgICAgdm9pZCBmaW5p
c2hMb2FkaW5nKCk7CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICB2b2lkIHNob3dU
YXNrVGltZXJGaXJlZChUaW1lcjxOb3RpZmljYXRpb24+Kik7CisjZW5kaWYKKyAgICAKICAgICBi
b29sIG1faXNIVE1MOwogCiAgICAgLy8gVGV4dCBub3RpZmljYXRpb25zLgpAQCAtMTU4LDkgKzE4
MiwxMCBAQCBwcml2YXRlOgogCiAgICAgZW51bSBOb3RpZmljYXRpb25TdGF0ZSB7CiAgICAgICAg
IElkbGUgPSAwLAotICAgICAgICBMb2FkaW5nID0gMSwKKyAgICAgICAgTG9hZGluZ0ljb24gPSAx
LAogICAgICAgICBTaG93aW5nID0gMiwKLSAgICAgICAgQ2FuY2VsbGVkID0gMworICAgICAgICBD
YW5jZWxsZWRJY29uID0gMywKKyAgICAgICAgQ2xvc2VkID0gNCwKICAgICB9OwogCiAgICAgTm90
aWZpY2F0aW9uU3RhdGUgbV9zdGF0ZTsKQEAgLTE3MSw2ICsxOTYsOSBAQCBwcml2YXRlOgogCiAg
ICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fbG9hZGVyOwogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1faWNvbkRhdGE7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgT3duUHRy
PFRpbWVyPE5vdGlmaWNhdGlvbj4gPiBtX3Nob3dUYXNrVGltZXI7CisjZW5kaWYKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmlkbAppbmRleCAxZmI2NzQ2ZDQ0NzNjZGNmOTkzZmFkNDY4MTgzNjkyNTEzMzgw
YzIyLi4wNzlmMTNlY2EzMTgzNmIxZTQyYjM5NDUyNDdmMTRkOTg3M2JkZmFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNSw3ICszNSwx
MiBAQCBtb2R1bGUgdGhyZWFkcyB7CiAgICAgICAgIENvbmRpdGlvbmFsPU5PVElGSUNBVElPTlN8
TEVHQUNZX05PVElGSUNBVElPTlMsCiAgICAgICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICAgICAg
RXZlbnRUYXJnZXQsCisjaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxF
X05PVElGSUNBVElPTlMKKyAgICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHRpdGxlLCBp
biBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBEaWN0aW9uYXJ5IG9wdGlvbnMpLAorICAg
ICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAorI2Vsc2UKICAgICAgICAgT21p
dENvbnN0cnVjdG9yCisjZW5kaWYKICAgICBdIE5vdGlmaWNhdGlvbiB7CiAgICAgICAgIHZvaWQg
c2hvdygpOwogI2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAmJiBFTkFC
TEVfTEVHQUNZX05PVElGSUNBVElPTlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5oCmluZGV4IGEwNDdhYmY4MTA5MmJiYWJjZjE2NDc2MDIw
MzNiZTJmMmNmNjhhMjcuLjQ5Mjk5ZTFhMDJhOTExZTkzMDYyNWQzMmZhNjQ4MzNkYmNjM2ExZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2Vu
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50
ZXIuaApAQCAtNTMsNiArNTMsNyBAQCBjbGFzcyBOb3RpZmljYXRpb25DZW50ZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxOb3RpZmljYXRpb25DZW50ZXI+LCBwdWJsaWMgQWN0aXZlRAogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBOb3RpZmljYXRpb25DbGllbnQqKTsKIAorI2lmIEVOQUJMRShMRUdB
Q1lfTk9USUZJQ0FUSU9OUykKICAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlSFRN
TE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIFVSSSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
ewogICAgICAgICBpZiAoIWNsaWVudCgpKSB7CkBAIC02NSw3ICs2Niw5IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uOjpjcmVhdGUoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChVUkkpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IGVjLCB0aGlzKTsKICAgICB9CisjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FU
SU9OUykKICAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlTm90aWZpY2F0aW9uKGNv
bnN0IFN0cmluZyYgaWNvblVSSSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBi
b2R5LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB7CiAgICAgICAgIGlmICghY2xpZW50KCkpIHsK
QEAgLTc0LDYgKzc3LDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIHJldHVybiBOb3Rp
ZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVSSSwgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBlYywgdGhpcyk7CiAgICAgfQorI2VuZGlmCiAKICAgICBOb3RpZmljYXRpb25DbGll
bnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbAppbmRleCA3YjBm
YzI1NTU3Y2M1MGEzYjU1NzhjMzJiODIyNDUwOTFjMTFjMjdiLi5lNTA4NDQ3ZDQ5ZWJhYTQxOWNm
ZTcyNTAwMjRjOTMxMTYyZWVkZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNiwxMCArMzYsMTIgQEAgbW9kdWxl
IHRocmVhZHMgewogICAgICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgICAgIE9taXRDb25zdHJ1
Y3RvcgogICAgIF0gTm90aWZpY2F0aW9uQ2VudGVyIHsKKyNpZiBkZWZpbmVkKEVOQUJMRV9MRUdB
Q1lfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TCiAjaWYgIWRl
ZmluZWQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKSB8fCAhRU5BQkxFX1RFWFRfTk9U
SUZJQ0FUSU9OU19PTkxZCiAgICAgICAgW1Y4Q3VzdG9tXSBOb3RpZmljYXRpb24gY3JlYXRlSFRN
TE5vdGlmaWNhdGlvbihpbiBET01TdHJpbmcgdXJsKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNl
bmRpZgogICAgICAgIFtWOEN1c3RvbV0gTm90aWZpY2F0aW9uIGNyZWF0ZU5vdGlmaWNhdGlvbihp
biBET01TdHJpbmcgaWNvblVybCwgaW4gRE9NU3RyaW5nIHRpdGxlLCBpbiBET01TdHJpbmcgYm9k
eSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisjZW5kaWYKIAogICAgICAgIGludCBjaGVja1Blcm1p
c3Npb24oKTsKICAgICAgICBbQ3VzdG9tXSB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKGluIFZvaWRD
YWxsYmFjayBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KaW5kZXggODEyMDkzNjAxNjM3NDli
NzY2ZmM3YjhkM2Q3MDYwMjdjYjI3ZDZkYS4uYzhiMWUyZDFlMzdhMDEyMGI4OTA3MDBhOWJkNTg2
NmZmODU2YTgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQpAQCAtMTA4LDYgKzEwOCw3IEBAIHZvaWQg
V2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjbGVhck5vdGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kp
IHsKICAgICAgICAgV2ViTm90aWZpY2F0aW9uICp3ZWJOb3RpZmljYXRpb24gPSB3ZWJOb3RpZmlj
YXRpb25zW2ldLmdldCgpOwogICAgICAgICBbbnNJRHMgYWRkT2JqZWN0OltOU051bWJlciBudW1i
ZXJXaXRoVW5zaWduZWRMb25nTG9uZzpbd2ViTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbklEXV1d
OworICAgICAgICBjb3JlKHdlYk5vdGlmaWNhdGlvbiktPmZpbmFsaXplKCk7CiAgICAgICAgIG1f
bm90aWZpY2F0aW9uTWFwLnJlbW92ZShjb3JlKHdlYk5vdGlmaWNhdGlvbikpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDI2ZTU0MDc0NGJkNTI3NGM5
YjZkYWNlZWE1YmY5NGZhM2FlMDQ5NzMuLjZiYzZhNDgxZTE1MTBhY2Y4ZGU3MmZmMGYxMzEzYjA5
N2MwZGU4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTE1Myw2
ICsxNTMsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0aW9u
cyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KgogICAgICAgICBSZWZQdHI8Tm90aWZp
Y2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLnRha2Uobm90aWZpY2F0
aW9uSURzW2ldKTsKICAgICAgICAgaWYgKCFub3RpZmljYXRpb24pCiAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgbm90aWZpY2F0aW9uLT5maW5hbGl6ZSgpOwogICAgICAgICBtX25vdGlm
aWNhdGlvbk1hcC5yZW1vdmUobm90aWZpY2F0aW9uKTsKICAgICB9CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138055</attachid>
            <date>2012-04-20 00:31:32 -0700</date>
            <delta_ts>2012-04-20 14:17:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80477-20120420003351.patch</filename>
            <type>text/plain</type>
            <size>35496</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDM1M2ExYWVhMzU2Y2Y5
OTlhNzY4YjRmMzYzN2YzMjVjNjZiN2E2OS4uMGNkYjNlNGM4MTliNDFlYWQ1ZDc2NDc5ZDVmYWY3
ZmU1ZmI1YTE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDEyLTA0LTE5ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTm90aWZpY2F0aW9uIGNvbnN0
cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MDQ3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA5MTI0MzE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgd2lsbCBiZSBhZGRlZCBvbmNl
IHRoZXJlIGlzIHN1cHBvcnQgZm9yIHdlYiBub3RpZmljYXRpb25zIG9uIHRoZSBNYWMgcG9ydHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IGZpbmFsaXplKCkgZnVuY3Rpb24u
CisKKyAgICAgICAgTW9kaWZ5IERpY3Rpb25hcnkgdG8gc3VwcG9ydCBjcmVhdGlvbiBvZiBldmVu
dCBsaXN0ZW5lcnMuCisgICAgICAgICogYmluZGluZ3MvanMvRGljdGlvbmFyeS5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6aXNPYmplY3QpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgSlNE
aWN0aW9uYXJ5IGlzIHZhbGlkLgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6aXNVbmRl
ZmluZWRPck51bGwpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgSlNEaWN0aW9uYXJ5IGlzIG5vdCB2YWxp
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldCk6IEFkZCBjb252ZW5pZW5jZSBm
dW5jdGlvbiB0byB0YWtlIGNvbnN0IGNoYXIqIGZvcgorICAgICAgICBwcm9wZXJ0eSBuYW1lLCB0
byBwcmV2ZW50IGhhdmluZyB0byBkbyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIFdURjo6U3RyaW5n
LgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0RXZlbnRMaXN0ZW5lcik6IEFkZCBm
dW5jdGlvbiB0byBjcmVhdGUgZXZlbnQgbGlzdGVuZXIKKyAgICAgICAgZnJvbSB0aGUgZGljdGlv
bmFyeS4KKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmFzSlNPYmplY3QpOiBIZWxwZXIg
dG8gY29udmVydCBXZWJDb3JlIG9iamVjdHMgdG8gSlMgd3JhcHBlci4KKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbik6
IEltcGxlbWVudCBhc0pTT2JqZWN0KCkgZm9yIE5vdGlmaWNhdGlvbi4KKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RpY3Rpb25hcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGljdGlvbmFyeTo6
ZXhlY1N0YXRlKTogRXhwb3NlIHRoZSBleGVjIHN0YXRlIHNvIHRoYXQgdGhlIERpY3Rpb25hcnkK
KyAgICAgICAgY2FuIG9idGFpbiBpdHMgd29ybGQgZm9yIGNyZWF0aW5nIHRoZSBldmVudCBsaXN0
ZW5lci4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIpOiBTdHViIGltcGxlbWVudGF0aW9u
LgorCisgICAgICAgIEFkZCBuZXcgY29uc3RydWN0b3IgdG8gaWRsIGRlZmluaXRpb25zLgorICAg
ICAgICAqIG5vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGw6IEFkZCBOb3Rp
ZmljYXRpb24gY29uc3RydWN0b3IsIGlmCisgICAgICAgIEVOQUJMRShOT1RJRklDQVRJT05TKSBp
cyBvbi4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGw6IElmIEVOQUJM
RShOT1RJRklDQVRJT05TKSBpcyB0dXJuZWQgb24sIGRlZmluZQorICAgICAgICB0aGUgY29uc3Ry
dWN0b3IuIE90aGVyd2lzZSwgdXNlIE9taXRDb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGw6IFdyYXAgY3JlYXRpb24gZnVuY3Rpb25zIGlu
CisgICAgICAgIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykuCisgICAgICAgICogbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaDogRGl0dG8uCisgICAgICAgIChOb3RpZmljYXRp
b25DZW50ZXIpOgorCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDoKKyAg
ICAgICAgKE5vdGlmaWNhdGlvbik6IFdyYXAgbGVnYWN5IGNvbnN0cnVjdG9ycyBpbiBFTkFCTEUo
TEVHQUNZX05PVElGSUNBVElPTlMpLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpj
cmVhdGUpOiBOZXcgY3JlYXRpb24gZnVuY3Rpb24gYmFzZWQgb24gZGlzY3Vzc2lvbnMgaW4gV0cu
CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0QW5kQWRkRXZlbnRMaXN0ZW5lcik6IEhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhl
IGxpc3RlbmVyIGZyb20gdGhlCisgICAgICAgIGRpY3Rpb25hcnksIGFuZCBhdHRhY2ggdG8gdGhl
IG5vdGlmaWNhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y3JlYXRlKTog
Q3JlYXRlIHRoZSBub3RpZmljYXRpb24sIHRoZW4gYXBwbHkgd2hhdGV2ZXIKKyAgICAgICAgcHJv
cGVydGllcyBjYW4gYmUgZm91bmQgaW4gdGhlIGRpY3Rpb25hcnkgdG8gdGhlIG5vdGlmaWNhdGlv
bi4gSW4gb3JkZXIgdG8KKyAgICAgICAgYXR0YWNoIHRoZSBldmVudCBsaXN0ZW5lcnMsIHRoZSBu
b3RpZmljYXRpb24gaGFzIHRvIGhhdmUgYmVlbiBjcmVhdGVkLCB3aGljaCBpcworICAgICAgICB3
aHkgdGhpcyBhbGwgaGFwcGVucyBpbiB0aGUgZmFjdG9yeSBtZXRob2QgYW5kIG5vdCBpbiB0aGUg
Y29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnNldEJvZHkpOiBB
ZGRlZCBzbyB0aGF0IGl0IGNhbiBiZSBzZXQgaWYgd2UgZmluZCBpdCBpbiB0aGUKKyAgICAgICAg
ZGljdGlvbmFyeS4KKworICAgICAgICBUaGUgbmV3IGNvbnN0cnVjdG9yIHF1ZXVlcyBhIHRhc2sg
dG8gc2hvdyB3aGVuIGl0IGlzIGNyZWF0ZWQuIFRvIHN1cHBvcnQgdGhpcywgd2UKKyAgICAgICAg
dXNlIGEgb25lLXNob3QgdGltZXIgdGhhdCBjYWxscyBzaG93KCkgaW4gdGhlIG5leHQgaXRlcmF0
aW9uIG9mIHRoZSBydW4gbG9vcC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Tm90
aWZpY2F0aW9uKTogU3RhcnQgdGhlIHRpbWVyLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uOjpzaG93VGFza1RpbWVyRmlyZWQpOiBDYWxsIHNob3coKS4KKworICAgICAgICBOb3RpZmlj
YXRpb25zLCBub3QgYmVpbmcgYXR0YWNoZWQgdG8gdGhlIERPTSwgY291bGQgYmUgR0MnZWQgYnkg
dGhlIEpTIGVuZ2luZQorICAgICAgICBiZWZvcmUgaXRzIGxpZmUgY3ljbGUgaGFzIGNvbXBsZXRl
ZC4gV2UgYWRkIGNhbGxzIHRvIHNldFBlbmRpbmdBY3Rpdml0eSgpIHdoZW4gdGhlCisgICAgICAg
IG5vdGlmaWNhdGlvbiBoYXMgYmVlbiBzaG93biwgYW5kIHdoZW4gaXQgaXMgY2xvc2VkLCB3ZSB1
bnNldFBlbmRpbmdBY3Rpdml0eSgpLgorICAgICAgICBUbyBndWFyYW50ZWUgdGhhdCB3ZSBvbmx5
IGNhbGwgdGhpcyBvbmNlLCB3ZSBhZGQgYSBuZXcgc3RhdGUgdG8gdGhlIE5vdGlmaWNhdGlvbgor
ICAgICAgICBzdGF0ZSBtYWNoaW5lLCBjYWxsZWQgTm90aWZpY2F0aW9uU3RhdGU6OkNsb3NlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2hvdyk6IENhbGwgc2V0UGVuZGluZ0Fj
dGl2aXR5KCkgZm9yIGFsbCBwb3J0cy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6
Y2xvc2UpOiBJbmNsdWRlIENsb3NlZCBzdGF0ZSB0byBtYWNoaW5lOyBkbyBub3RoaW5nLgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQpOiBDYWxsIGZp
bmFsaXplKCkuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmZpbmFsaXplKTogSWYg
dGhlIHN0YXRlIGlzIG5vdCBDbG9zZWQsIHdlIHVuc2V0UGVuZGluZ0FjdGl2aXR5KCkKKyAgICAg
ICAgdG8gbWFrZSBpdCBhdmFpbGFibGUgZm9yIEdDLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uOjpmaW5pc2hMb2FkaW5nKTogUmVtb3ZlIHRoZSB1bnNldFBlbmRpbmdBY3Rpdml0eSgp
LiBUaGF0IGNhbGwKKyAgICAgICAgd2FzIHRvIGJhbGFuY2UgdGhlIHNldFBlbmRpbmdBY3Rpdml0
eSgpIGNhbGxlZCBmb3IgbG9hZGluZyB0aGUgaWNvbi4gSW5zdGVhZCBvZiB3cmFwcGluZworICAg
ICAgICBhcm91bmQgdGhlIGljb24gbG9hZCwgd2Ugd3JhcCBhcm91bmQgdGhlIHNob3coKSAtPiBm
aW5hbGl6ZSgpIGxvb3AuCisKKyAgICAgICAgSW4gTm90aWZpY2F0aW9uLCByZW5hbWUgc29tZSBv
ZiB0aGUgc3RhZ2VzIGFuZCBmdW5jdGlvbnMgdG8gbW9yZSBjbGVhcmx5IGNvbW11bmljYXRlCisg
ICAgICAgIHRoYXQgdGhleSBtb3N0bHkgZGVhbCB3aXRoIHRoZSBpY29uIG9mIHRoZSBub3RpZmlj
YXRpb24sIGluc3RlYWQgb2YgZ2VuZXJhbCBsb2FkaW5nLgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjpzaG93KTogUmVmYWN0b3JlZCB0byB1c2UgTG9hZGluZ0ljb24gYW5kIENhbmNl
bGxlZEljb24uCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNsb3NlKTogUmVmYWN0
b3JlZCB0byB1c2UgTG9hZGluZ0ljb24gYW5kIENhbmNlbGxlZEljb24uCisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb246On5Ob3RpZmljYXRpb24pOiBSZWZhY3RvciB0byB1c2UgTG9hZGlu
Z0ljb24uCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnN0YXJ0TG9hZGluZ0ljb24p
OiBSZW5hbWVkIGZyb20gc3RhcnRMb2FkaW5nKCkuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb246OnN0b3BMb2FkaW5nSWNvbik6IFJlbmFtZWQgZnJvbSBzdG9wTG9hZGluZygpLgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpmaW5pc2hMb2FkaW5nKToKKworICAgICAgICBBZGQg
RGljdGlvbmFyeS5jcHAuCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBUYXJnZXQucHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisKKyAgICAgICAgRml4IGJ1ZyBpbiBWOCBiaW5kaW5ncyBnZW5lcmF0aW9uIGNvZGUu
IElmIHRoZSBjb25zdHJ1Y3RvciBkb2Vzbid0IHJhaXNlIGFuIGV4Y2VwdGlvbiwKKyAgICAgICAg
ZG9uJ3QgdXNlIGFuIGV4Y2VwdGlvbiBjb2RlLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOiBSZXNldCBy
ZXN1bHRzLgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om9wdGlvbnNPYmpl
Y3RDYWxsYmFjayk6CisKIDIwMTItMDQtMTYgIEdlb3JnZSBTdGFpa29zICA8c3RhaWtvc0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIEZpeCBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2ggd2FybmluZyBm
b3IgQmxhY2tCZXJyeSBkZWJ1ZyBidWlsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZjA5ZTk3OGY4
MzIwMzIyNWYwOGQ0MzRhMzFhNjA4MTNkNjMyMWJmMC4uZjk3YWNiOTZkYmZkZTk0NmY5MGI1ZmNl
YmU5MTkzNjA0NTczMzBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEy
LTA0LTE5ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTm90aWZp
Y2F0aW9uIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MDQ3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA5MTI0MzE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW06CisgICAgICAgIChXZWJOb3RpZmljYXRpb25D
bGllbnQ6OmNsZWFyTm90aWZpY2F0aW9ucyk6IFdoZW4gY2xlYXJpbmcgbm90aWZpY2F0aW9ucywg
ZmluYWxpemUKKyAgICAgICAgdGhlbSBzbyB0aGF0IHRoZXkgY2FuIGJlIGNsZWFuZWQgdXAgYnkg
dGhlIEdDLgorCiAyMDEyLTA0LTEyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSRUdSRVNTSU9OIChyMTAyMjYyKTogaUFkIFByb2R1Y2VyIHJlbGllcyBvbiBDU1NT
dHlsZURlY2xhcmF0aW9uIHByb3BlcnR5IHNldHRlcnMgcmVzcGVjdGluZyAnIWltcG9ydGFudCcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2NjJlNDZmNjMwZDU3Y2E2OWVhM2ExMmI5YzQ5M2M4OTAyNzVhZjExLi4w
NzYxZTY5YTE5MDQ1OGViZDM0NWM4ZWVmNTAzNDQ4NGRmZWM1MTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDQtMTkgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZCBOb3RpZmljYXRpb24gY29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNDc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMDkxMjQzMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmlj
YXRpb25zKTogV2hlbiBjbGVhcmluZyBub3RpZmljYXRpb25zLAorICAgICAgICBmaW5hbGl6ZSB0
aGVtIHNvIHRoYXQgdGhleSBjYW4gYmUgY2xlYW5lZCB1cCBieSB0aGUgR0MuCisKIDIwMTItMDQt
MTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIFVzZSBHUmVmUHRyIHRvIGRlbGV0ZSB0aGUgZGVmYXVsdCB3ZWIgY29udGV4dCBpbiBX
ZWJLaXQyIEdUSysKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDU3NGJiMDQ2NmZk
YjgzMGUyYTQwOGNjYmE0NTE1ZjczMTk3NDQ4N2QuLjQyNTc1NWVjZTNkY2IwYjYyYzE5MTRkODQy
N2M2ZDIyODMwZTBhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTQ3MSw2
ICsxNDcxLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSmF2YVNjcmlwdENhbGxGcmFtZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9E
aWN0aW9uYXJ5LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQppbmRleCBhNDE3MmM2NjUyODU1MWZiMDA0YmQxMmRkZWNhYjkzYzhkZDdlZTE3
Li4yNzUzMzNmMTE2ODVkNmU5ZmFkMTNjZWE1Mzk5MGE1YWVhNmEwOTVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
QEAgLTI0Niw2ICsyNDYsNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL2pzL0NhbGxiYWNrRnVu
Y3Rpb24uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmNw
cCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAgXAorICAgICAgICBi
aW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0dDQ29udHJv
bGxlci5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcCBc
CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCmlu
ZGV4IGQwNzRhOTAxZTk1Y2E4N2QxZGIxMjgzNjY1Y2Q0MzY1MjRmMzYzMTQuLjUxNTU4MWNkMGVk
YjM4ZDU0NWE2YmYzNGNjMjNlM2ZjNjdmOTVkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAgLTI1LDYg
KzI1LDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvQ2Fs
bGJhY2tGdW5jdGlvbi5jcHAKICAgICBiaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAu
Y3BwCiAgICAgYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcAorICAgIGJpbmRpbmdzL2pz
L0RpY3Rpb25hcnkuY3BwCiAgICAgYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAogICAgIGJp
bmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNBdHRy
Q3VzdG9tLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA3YjQ3NDQ5OGQ3ZGJlMDhjNTFkYWE2
OGIwNzNmNTA5NDU2NjYwMzYzLi5jMGZkYjY4MzJkNzc0ODcwZjdlYmYzYmUyMDIzN2MwNzhjYWU3
NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjE1NSw2ICsyMTU1LDcgQEAgX3drQ3JlYXRl
Vk1QcmVzc3VyZURpc3BhdGNoT25NYWluUXVldWUKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykg
fHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogX19aTjdXZWJDb3JlMTJOb3RpZmljYXRp
b25DMUV2CiBfX1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbkQxRXYKK19fWk43V2ViQ29yZTEyTm90
aWZpY2F0aW9uOGZpbmFsaXplRXYKIF9fWk43V2ViQ29yZTEyTm90aWZpY2F0aW9uMTdkaXNwYXRj
aFNob3dFdmVudEV2CiBfX1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbjE4ZGlzcGF0Y2hDbGlja0V2
ZW50RXYKIF9fWk43V2ViQ29yZTEyTm90aWZpY2F0aW9uMThkaXNwYXRjaENsb3NlRXZlbnRFdgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDBkNjcwYWRhMjI1NGNlNGNhNjM1NTEzNTM2YzM2NWFmMjFlNzFj
MmEuLmEwMmU5OGQxZDAyZThiYjllZDY1NThiYmY3YWQzNzJhY2FhMTVmNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTIwMjYsNiArMjAyNiw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNY
U0xUUHJvY2Vzc29yQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSmF2YVNj
cmlwdENhbGxGcmFtZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0phdmFTY3JpcHRD
YWxsRnJhbWUuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
U2NoZWR1bGVkQWN0aW9uLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5
LmNwcAppbmRleCA3NWJlZjE1NDk2MDJmZGQ5NTlkNzZkODlkZjQ3NTIxNzA5ZDI0Yzk1Li4yYzFi
Nzg1ZmUwZjg1YzhhYWFjNzY4OTlhNGQ4MGM5YjZhMDllOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcApAQCAtMjYsNiArMjYsMTEgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKKyNpbmNsdWRlICJKU05vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlv
bi5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTM1LDE0ICs0MCwxNCBAQCBEaWN0aW9uYXJ5OjpEaWN0aW9uYXJ5KEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBSZXN1bHQ+Ci1ib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSwgUmVzdWx0JiByZXN1bHQpIGNvbnN0CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK3Rl
bXBsYXRlPD4KK0pTT2JqZWN0KiBEaWN0aW9uYXJ5Ojphc0pTT2JqZWN0PE5vdGlmaWNhdGlvbj4o
Tm90aWZpY2F0aW9uKiBvYmplY3QpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2RpY3Rpb25hcnkuaXNW
YWxpZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgcmV0dXJuIG1fZGljdGlv
bmFyeS5nZXQocHJvcGVydHlOYW1lLmFzY2lpKCkuZGF0YSgpLCByZXN1bHQpOworICAgIHJldHVy
biBhc09iamVjdCh0b0pTKG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKSwganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4obV9kaWN0aW9uYXJ5LmV4ZWNTdGF0ZSgpLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLCBvYmplY3QpKTsKIH0KKyNlbmRpZgogCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9EaWN0aW9uYXJ5LmgKaW5kZXggOTNhNDhiOGFlNTc3MTU2NGYwZjdhZmIzZDE3ZTgyNWYzOGU2
ZDNlNi4uZDQxY2IxNzA1M2QyYWFhOWUyZTQzZWMzYmQ4YmEwOGJhODNkM2EzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaApAQCAtMjgsNiArMjgsNyBAQAogI2RlZmlu
ZSBEaWN0aW9uYXJ5X2gKIAogI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIkpT
RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAi
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC00NiwxNiAr
NDcsNjIgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGEgdmFsdWUgd2FzIGZv
dW5kIGZvciB0aGUgcHJvdmlkZWQgcHJvcGVydHkuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFJl
c3VsdD4KKyAgICBib29sIGdldChjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFJlc3VsdCYpIGNv
bnN0OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+CiAgICAgYm9vbCBnZXQoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFJlc3VsdCYpIGNvbnN0OworICAgIAorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgorICAgIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0
ZW5lcihjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3Q7CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBnZXRFdmVu
dExpc3RlbmVyKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0Owog
Ci0gICAgYm9vbCBpc09iamVjdCgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0IHsgbm90SW1wbGVtZW50
ZWQoKTsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGljdGlvbmFyeS5pc1ZhbGlkKCk7IH0KKyAgICBib29sIGlzVW5kZWZpbmVkT3JOdWxsKCkg
Y29uc3QgeyByZXR1cm4gIW1fZGljdGlvbmFyeS5pc1ZhbGlkKCk7IH0KICAgICBib29sIGdldFdp
dGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJpbmcmLCBTdHJpbmcmKSBjb25zdCB7IG5v
dEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgorICAgIEpTQzo6SlNPYmplY3QqIGFzSlNPYmplY3QoVCopIGNvbnN0Owor
ICAgIAogICAgIEpTRGljdGlvbmFyeSBtX2RpY3Rpb25hcnk7CiB9OwogCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUmVzdWx0PgorYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgY2hhciogcHJvcGVydHlO
YW1lLCBSZXN1bHQmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZGljdGlvbmFyeS5pc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gbV9kaWN0aW9u
YXJ5LmdldChwcm9wZXJ0eU5hbWUsIHJlc3VsdCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBS
ZXN1bHQ+Citib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwg
UmVzdWx0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldChwcm9wZXJ0eU5hbWUudXRm
OCgpLmRhdGEoKSwgcmVzdWx0KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIoY29uc3QgY2hh
ciogcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RpY3Rpb25h
cnkuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFNjcmlwdFZhbHVlIGV2ZW50
TGlzdGVuZXI7CisgICAgaWYgKCFtX2RpY3Rpb25hcnkudHJ5R2V0UHJvcGVydHkocHJvcGVydHlO
YW1lLCBldmVudExpc3RlbmVyKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGV2ZW50TGlz
dGVuZXIuaGFzTm9WYWx1ZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4g
SlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QoZXZlbnRMaXN0ZW5lci5qc1ZhbHVlKCkp
LCBhc0pTT2JqZWN0KHRhcmdldCksIHRydWUsIGN1cnJlbnRXb3JsZChtX2RpY3Rpb25hcnkuZXhl
Y1N0YXRlKCkpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitQYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0RXZlbnRMaXN0ZW5l
cihwcm9wZXJ0eU5hbWUudXRmOCgpLmRhdGEoKSwgdGFyZ2V0KTsKK30KKwogfQogCiAjZW5kaWYg
Ly8gRGljdGlvbmFyeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5o
CmluZGV4IGU5ZDk5ZTFmYzAzZTkxYThkZWUwOTY4NjNiZTBmYzc4OWU1YTAzZDAuLjhmNjMzN2Q2
ZTRhMzg0ZjhiNWRlMTcyOGU2MDU1NTkxZTQyMTE0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRGljdGlvbmFyeS5oCkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgogICAgIGJvb2wgZ2V0KGNvbnN0IGNoYXIqIHByb3BlcnR5
TmFtZSwgUmVzdWx0JikgY29uc3Q7CiAKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9leGVjOyB9CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gbV9leGVjICYmIG1faW5pdGlhbGl6ZXJPYmplY3Q7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXgg
ZTk2OGE3MzU5YjcxYTYwZjg1ODMxYTg2NGQzYjhjOTk5MTExM2UzZS4uMGRlZGZmM2MxMTljNzdm
YTc4YzE4OWM4ZDMzMGM3NWFkNTk1YWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTE2NTAsOCArMTY1MCwxMCBAQCBz
dWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICAgSlNWYWx1ZVRvTmF0
aXZlKCRwYXJhbWV0ZXIsICJNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAkcGFyYW1JbmRl
eCwgJHBhcmFtZXRlckRlZmF1bHRQb2xpY3kpIikgLiAiKTtcbiI7CiAgICAgICAgICAgICBpZiAo
JG5hdGl2ZVR5cGUgZXEgJ0RpY3Rpb25hcnknKSB7CiAgICAgICAgICAgICAgICAkcGFyYW1ldGVy
Q2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoYXJncy5MZW5ndGgoKSA+ICRwYXJhbUluZGV4ICYmICEk
cGFyYW1ldGVyTmFtZS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICEkcGFyYW1ldGVyTmFtZS5pc09i
amVjdCgpKSB7XG4iOwotICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIg
ICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7XG4iOwotICAgICAgICAgICAgICAgJHBhcmFt
ZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7
XG4iOworICAgICAgICAgICAgICAgaWYgKEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfSkg
eworICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBl
YyA9IFRZUEVfTUlTTUFUQ0hfRVJSO1xuIjsKKyAgICAgICAgICAgICAgICAgICAkcGFyYW1ldGVy
Q2hlY2tTdHJpbmcgLj0gIiAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTtcbiI7
CisgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcg
Lj0gIiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoXCJOb3QgYW4gb2JqZWN0LlwiLCBWOFByb3h5
OjpUeXBlRXJyb3IpO1xuIjsKICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAu
PSAiICAgIH1cbiI7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDIwY2I5OGQxNTFlODg2
YTFkNzc3NjI1MjE5ODA4N2Q5YTJkYmJiNzEuLjYxMGYyYzdkMmYxYzU4YzZmYTQwNDIzOWQ5N2Qx
ZDI2ZmYzZWFiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC0xMTQzLDggKzExNDMsNiBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IG9wdGlvbnNPYmplY3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAgICAgRVhDRVBUSU9OX0JMT0NLKERpY3Rpb25hcnksIG9vLCBNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKTsKICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA+IDAgJiYgIW9vLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIW9vLmlzT2JqZWN0
KCkpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgVjhQcm94eTo6
c2V0RE9NRXhjZXB0aW9uKGVjKTsKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBhbiBv
YmplY3QuIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKICAgICB9CiAgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPD0gMSkgewpAQCAtMTE1Myw4ICsxMTUxLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBvcHRpb25zT2JqZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAg
ICB9CiAgICAgRVhDRVBUSU9OX0JMT0NLKERpY3Rpb25hcnksIG9vbywgTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CiAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPiAxICYmICFvb28uaXNVbmRlZmluZWRPck51bGwoKSAmJiAhb29vLmlzT2JqZWN0KCkp
IHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgVjhQcm94eTo6c2V0
RE9NRXhjZXB0aW9uKGVjKTsKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBhbiBvYmpl
Y3QuIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKICAgICB9CiAgICAgaW1wLT5vcHRpb25zT2JqZWN0
KG9vLCBvb28pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlv
bmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oCmluZGV4IDMy
MTY0YjhjYmIyM2E1NGFiYzU4NDk3OTk2MjU5NmM1ZmQyZmY4MzEuLmU1ODg5MGU1OWZiMjUyMTY1
MjA3MWNmODVmNjAxNTkxMzAxOTg3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RpY3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0
aW9uYXJ5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgRGljdGlvbmFyeV9oCiAjZGVmaW5l
IERpY3Rpb25hcnlfaAogCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3Jp
cHRWYWx1ZS5oIgpAQCAtMzgsMTIgKzM5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IERPTVN0cmluZ0xpc3Q7CiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBJREJLZXlSYW5nZTsKLWNs
YXNzIFN0b3JhZ2U7CiBjbGFzcyBNZWRpYUtleUVycm9yOwotY2xhc3MgVHJhY2tCYXNlOworY2xh
c3MgTm90aWZpY2F0aW9uOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25FcnJvcjsKIGNsYXNzIFNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0OwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0
OworY2xhc3MgU3RvcmFnZTsKK2NsYXNzIFRyYWNrQmFzZTsKIAogY2xhc3MgRGljdGlvbmFyeSB7
CiBwdWJsaWM6CkBAIC04NCw2ICs4Niw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZ2V0V2l0aFVu
ZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IFN0cmluZyYsIFN0cmluZyYpIGNvbnN0OwogCisgICAg
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBnZXRFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYs
IE5vdGlmaWNhdGlvbiopIGNvbnN0IHsgcmV0dXJuIDA7IH0KKwogcHJpdmF0ZToKICAgICBib29s
IGdldEtleShjb25zdCBTdHJpbmcmIGtleSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4mKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3Rp
ZmljYXRpb25zLmlkbCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90
aWZpY2F0aW9ucy5pZGwKaW5kZXggMDU3YjY2NmI2ZTNkNzQ3ZTU5NzQ0MGM0ZjNlYmM5ZjE2N2Jl
MzNmOS4uMWRmMWIxMWY5NjQ0MGZlMDFjMjY5YTU3NTkyOWY3YmQwZGE5NWNjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlv
bnMuaWRsCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMSw2ICszMSw5IEBAIG1vZHVsZSB3aW5kb3cg
ewogICAgICAgICBTdXBwbGVtZW50YWw9RE9NV2luZG93CiAgICAgXSBET01XaW5kb3dOb3RpZmlj
YXRpb25zIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVd
IE5vdGlmaWNhdGlvbkNlbnRlciB3ZWJraXROb3RpZmljYXRpb25zOworI2lmIGRlZmluZWQoRU5B
QkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCisgICAgICAgIGF0dHJp
YnV0ZSBOb3RpZmljYXRpb25Db25zdHJ1Y3RvciBOb3RpZmljYXRpb247CisjZW5kaWYKICAgICB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAK
aW5kZXggMjI0MWIzNjA3M2NiZDZkNmRkZjQ2MmFkM2E4ZWIxZTA5NTE2OTQ5Yi4uY2E0MzY4ZGI2
OWY3NTg2YjMzNWRhZTE1NmExZmJlMmVlMDJhNTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtMzUsNiArMzUsOSBAQAogCiAjaW5jbHVk
ZSAiTm90aWZpY2F0aW9uLmgiCiAKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJE
T01XaW5kb3dOb3RpZmljYXRpb25zLmgiCisjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKQEAgLTUyLDYgKzU1LDcgQEAgTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oKQog
ewogfQogCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogTm90aWZpY2F0aW9uOjpO
b3RpZmljYXRpb24oY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHBy
b3ZpZGVyKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2lz
SFRNTCh0cnVlKQpAQCAtNzAsNyArNzQsOSBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihj
b25zdCBLVVJMJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4YwogCiAg
ICAgbV9ub3RpZmljYXRpb25VUkwgPSB1cmw7CiB9CisjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdB
Q1lfTk9USUZJQ0FUSU9OUykKIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0
cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNv
bnRleHQsIHRoaXMpCiAgICAgLCBtX2lzSFRNTChmYWxzZSkKQEAgLTkwLDE1ICs5NiwzMyBAQCBO
b3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJp
bmcmIGJvZHksIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogfQorI2VuZGlm
CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUpCisg
ICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1faXNIVE1MKGZhbHNl
KQorICAgICwgbV90aXRsZSh0aXRsZSkKKyAgICAsIG1fc3RhdGUoSWRsZSkKKyAgICAsIG1fc2hv
d1Rhc2tUaW1lcihhZG9wdFB0cihuZXcgVGltZXI8Tm90aWZpY2F0aW9uPih0aGlzLCAmTm90aWZp
Y2F0aW9uOjpzaG93VGFza1RpbWVyRmlyZWQpKSkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+aXNE
b2N1bWVudCgpKTsKKyAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IERPTVdpbmRvd05vdGlmaWNh
dGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnMoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0
KS0+ZG9tV2luZG93KCkpOworICAgIAorICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbkNlbnRlci0+
Y2xpZW50KCkpOworICAgIG1fc2hvd1Rhc2tUaW1lci0+c3RhcnRPbmVTaG90KDApOworfQorI2Vu
ZGlmCiAKIE5vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlvbigpIAogewotICAgIGlmIChtX3N0YXRl
ID09IExvYWRpbmcpIHsKKyAgICBpZiAobV9zdGF0ZSA9PSBMb2FkaW5nSWNvbikgewogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2xvc2UoKTsKICAgICB9CiB9CiAKKyNp
ZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4g
Tm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25D
ZW50ZXI+IHByb3ZpZGVyKSAKIHsgCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0
aW9uKGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24odXJsLCBjb250ZXh0LCBlYywgcHJvdmlkZXIp
KSk7CkBAIC0xMTIsNiArMTM2LDMzIEBAIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3RpZmlj
YXRpb246OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmCiAgICAgbm90
aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJl
bGVhc2UoKTsKIH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitzdGF0aWMg
dm9pZCBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1l
LCBjb25zdCBjaGFyKiBwcm9wZXJ0eSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3Rl
bmVyID0gb3B0aW9ucy5nZXRFdmVudExpc3RlbmVyKHByb3BlcnR5LCBub3RpZmljYXRpb24pOwor
ICAgIGlmIChsaXN0ZW5lcikKKyAgICAgICAgbm90aWZpY2F0aW9uLT5hZGRFdmVudExpc3RlbmVy
KGV2ZW50TmFtZSwgbGlzdGVuZXIucmVsZWFzZSgpLCBmYWxzZSk7Cit9CisKK1Bhc3NSZWZQdHI8
Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25z
KQoreworICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbihhZG9wdFJlZihuZXcg
Tm90aWZpY2F0aW9uKGNvbnRleHQsIHRpdGxlKSkpOworICAgIFN0cmluZyBhcmd1bWVudDsKKyAg
ICBpZiAob3B0aW9ucy5nZXQoImJvZHkiLCBhcmd1bWVudCkpCisgICAgICAgIG5vdGlmaWNhdGlv
bi0+c2V0Qm9keShhcmd1bWVudCk7CisgICAgaWYgKG9wdGlvbnMuZ2V0KCJ0YWciLCBhcmd1bWVu
dCkpCisgICAgICAgIG5vdGlmaWNhdGlvbi0+c2V0VGFnKGFyZ3VtZW50KTsKKyAgICBnZXRBbmRB
ZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zaG93RXZlbnQsICJvbnNob3ciLCBvcHRpb25z
LCBub3RpZmljYXRpb24uZ2V0KCkpOworICAgIGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmNsb3NlRXZlbnQsICJvbmNsb3NlIiwgb3B0aW9ucywgbm90aWZpY2F0aW9uLmdldCgp
KTsKKyAgICBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCAi
b25lcnJvciIsIG9wdGlvbnMsIG5vdGlmaWNhdGlvbi5nZXQoKSk7CisgICAgZ2V0QW5kQWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgIm9uY2xpY2siLCBvcHRpb25zLCBu
b3RpZmljYXRpb24uZ2V0KCkpOworCisgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQo
KTsKKyAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVhc2UoKTsKK30KKyNlbmRpZgogCiBjb25z
dCBBdG9taWNTdHJpbmcmIE5vdGlmaWNhdGlvbjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7CkBA
IC0xMjYsMjAgKzE3NywyNSBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6c2hvdygpCiAgICAgICAgIC8v
IGhhbmRsaW5nIG9mIG9uZGlzcGxheSBtYXkgcmVseSBvbiB0aGF0LgogICAgICAgICBpZiAobV9z
dGF0ZSA9PSBJZGxlKSB7CiAgICAgICAgICAgICBtX3N0YXRlID0gU2hvd2luZzsKLSAgICAgICAg
ICAgIGlmIChtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkpCisgICAgICAgICAgICBpZiAo
bV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpKSB7CiAgICAgICAgICAgICAgICAgbV9ub3Rp
ZmljYXRpb25DZW50ZXItPmNsaWVudCgpLT5zaG93KHRoaXMpOworICAgICAgICAgICAgICAgIHNl
dFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0g
ZWxzZQotICAgICAgICBzdGFydExvYWRpbmcoKTsKKyAgICAgICAgc3RhcnRMb2FkaW5nSWNvbigp
OwogI2VsaWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChtX3N0YXRlID09IElkbGUgJiYgbV9ub3Rp
ZmljYXRpb25DZW50ZXItPmNsaWVudCgpKSB7CiAgICAgICAgIG1fbm90aWZpY2F0aW9uQ2VudGVy
LT5jbGllbnQoKS0+c2hvdyh0aGlzKTsKKyAgICAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMp
OwogICAgICAgICBtX3N0YXRlID0gU2hvd2luZzsKICAgICB9CiAjZWxzZQogICAgIC8vIHByZXZl
bnQgZG91YmxlLXNob3dpbmcKLSAgICBpZiAobV9zdGF0ZSA9PSBJZGxlICYmIG1fbm90aWZpY2F0
aW9uQ2VudGVyLT5jbGllbnQoKSAmJiBtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCktPnNo
b3codGhpcykpCisgICAgaWYgKG1fc3RhdGUgPT0gSWRsZSAmJiBtX25vdGlmaWNhdGlvbkNlbnRl
ci0+Y2xpZW50KCkgJiYgbV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpLT5zaG93KHRoaXMp
KSB7CiAgICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOworICAgICAgICBzZXRQZW5kaW5nQWN0aXZp
dHkodGhpcyk7CisgICAgfQogI2VuZGlmCiB9CiAKQEAgLTE0OCwxNSArMjA0LDE2IEBAIHZvaWQg
Tm90aWZpY2F0aW9uOjpjbG9zZSgpCiAgICAgc3dpdGNoIChtX3N0YXRlKSB7CiAgICAgY2FzZSBJ
ZGxlOgogICAgICAgICBicmVhazsKLSAgICBjYXNlIExvYWRpbmc6Ci0gICAgICAgIG1fc3RhdGUg
PSBDYW5jZWxsZWQ7Ci0gICAgICAgIHN0b3BMb2FkaW5nKCk7CisgICAgY2FzZSBMb2FkaW5nSWNv
bjoKKyAgICAgICAgbV9zdGF0ZSA9IENhbmNlbGxlZEljb247CisgICAgICAgIHN0b3BMb2FkaW5n
SWNvbigpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNob3dpbmc6CiAgICAgICAgIGlmICht
X25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkpCiAgICAgICAgICAgICBtX25vdGlmaWNhdGlv
bkNlbnRlci0+Y2xpZW50KCktPmNhbmNlbCh0aGlzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDYW5jZWxsZWQ6CisgICAgY2FzZSBDYW5jZWxsZWRJY29uOgorICAgIGNhc2UgQ2xvc2VkOgog
ICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC0xNzgsMTIgKzIzNSwxMiBAQCB2b2lkIE5vdGlm
aWNhdGlvbjo6Y29udGV4dERlc3Ryb3llZCgpCiAgICAgICAgIG1fbm90aWZpY2F0aW9uQ2VudGVy
LT5jbGllbnQoKS0+bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKHRoaXMpOwogfQogCi12b2lk
IE5vdGlmaWNhdGlvbjo6c3RhcnRMb2FkaW5nKCkKK3ZvaWQgTm90aWZpY2F0aW9uOjpzdGFydExv
YWRpbmdJY29uKCkKIHsKICAgICBpZiAobV9zdGF0ZSAhPSBJZGxlKQogICAgICAgICByZXR1cm47
CiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgIG1fc3RhdGUgPSBMb2FkaW5nOwor
ICAgIG1fc3RhdGUgPSBMb2FkaW5nSWNvbjsKICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBv
cHRpb25zOwogICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSBEb05vdFNlbmRDYWxsYmFj
a3M7CiAgICAgb3B0aW9ucy5zbmlmZkNvbnRlbnQgPSBEb05vdFNuaWZmQ29udGVudDsKQEAgLTE5
Myw3ICsyNTAsNyBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6c3RhcnRMb2FkaW5nKCkKICAgICBtX2xv
YWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IHRoaXMsIFJlc291cmNlUmVxdWVzdChpY29uVVJMKCkpLCBvcHRpb25zKTsKIH0KIAotdm9pZCBO
b3RpZmljYXRpb246OnN0b3BMb2FkaW5nKCkKK3ZvaWQgTm90aWZpY2F0aW9uOjpzdG9wTG9hZGlu
Z0ljb24oKQogewogICAgIG1faWNvbkRhdGEgPSAwOwogICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9h
ZGVyPiBwcm90ZWN0KG1fbG9hZGVyKTsKQEAgLTIwNCw3ICsyNjEsNyBAQCB2b2lkIE5vdGlmaWNh
dGlvbjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlcwogewogICAgIGludCBzdGF0dXMgPSByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
OwogICAgIGlmIChzdGF0dXMgJiYgKHN0YXR1cyA8IDIwMCB8fCBzdGF0dXMgPiAyOTkpKSB7Ci0g
ICAgICAgIHN0b3BMb2FkaW5nKCk7CisgICAgICAgIHN0b3BMb2FkaW5nSWNvbigpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIG1faWNvbkRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwpAQCAtMjMyLDExICsyODksMjAgQEAgdm9pZCBOb3RpZmljYXRpb246OmRpZEZhaWxSZWRpcmVj
dENoZWNrKCkKIAogdm9pZCBOb3RpZmljYXRpb246OmZpbmlzaExvYWRpbmcoKQogewotICAgIGlm
IChtX3N0YXRlID09IExvYWRpbmcpIHsKKyAgICBpZiAobV9zdGF0ZSA9PSBMb2FkaW5nSWNvbikg
ewogICAgICAgICBpZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpICYmIG1fbm90aWZp
Y2F0aW9uQ2VudGVyLT5jbGllbnQoKS0+c2hvdyh0aGlzKSkKICAgICAgICAgICAgIG1fc3RhdGUg
PSBTaG93aW5nOwogICAgIH0KK30KKwordm9pZCBOb3RpZmljYXRpb246OmZpbmFsaXplKCkKK3sK
KyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKG1fc3RhdGUgPT0gQ2xvc2VkKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9zdGF0ZSA9IENsb3NlZDsKICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0
aGlzKTsKKyNlbmRpZgogfQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hTaG93RXZlbnQo
KQpAQCAtMjUyLDYgKzMxOCw3IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNrRXZl
bnQoKQogdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xvc2VFdmVudCgpCiB7CiAgICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwg
ZmFsc2UpKTsKKyAgICBmaW5hbGl6ZSgpOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0
Y2hFcnJvckV2ZW50KCkKQEAgLTI1OSw2ICszMjYsMTQgQEAgdm9pZCBOb3RpZmljYXRpb246OmRp
c3BhdGNoRXJyb3JFdmVudCgpCiAgICAgZGlzcGF0Y2hFdmVudChFcnJvckV2ZW50OjpjcmVhdGUo
KSk7CiB9CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK3ZvaWQgTm90aWZpY2F0aW9uOjpz
aG93VGFza1RpbWVyRmlyZWQoVGltZXI8Tm90aWZpY2F0aW9uPiogdGltZXIpCit7CisgICAgQVNT
RVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gbV9zaG93VGFza1RpbWVyLmdldCgpKTsKKyAgICBz
aG93KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCmluZGV4IGE2NzE1OWE5
ZTI0YmEyZTk5MjZhZjA0MGM5NGM2ZmIyMjJlY2JiODEuLjUwZTFjMjIxYzAzYmIyYTk3NzhjMTNj
YzhiOTBlNjEzN2I0MzA1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uaApAQCAtNDUsOSArNDUsMTQgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgogCisjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCisjaW5jbHVkZSAiVGltZXIuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgRGljdGlvbmFyeTsKIGNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKIGNs
YXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpAQCAtNjAsOCArNjUs
MTMgQEAgY2xhc3MgTm90aWZpY2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9u
PiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHUKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBOb3RpZmljYXRpb24oKTsKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElG
SUNBVElPTlMpCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29u
c3QgS1VSTCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1Jl
ZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcm
IGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4
Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpOwor
I2VuZGlmCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
Tm90aWZpY2F0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpOworI2VuZGlmCiAgICAgCiAgICAg
dmlydHVhbCB+Tm90aWZpY2F0aW9uKCk7CiAKQEAgLTc4LDYgKzg4LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0VVJMKEtVUkwgdXJsKSB7IG1fbm90aWZpY2F0aW9uVVJMID0gdXJsOyB9CiAgICAg
CiAgICAgS1VSTCBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9pY29uOyB9CisKICAgICBTdHJp
bmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9CiAgICAgU3RyaW5nIGJvZHkoKSBj
b25zdCB7IHJldHVybiBtX2JvZHk7IH0KIApAQCAtMTE3LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAg
ICAvLyBBY3RpdmVET01PYmplY3QgaW50ZXJmYWNlCiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRE
ZXN0cm95ZWQoKTsKIAotICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKKyAgICB2b2lkIHN0b3BMb2Fk
aW5nSWNvbigpOwogCiAgICAgU2hhcmVkQnVmZmVyKiBpY29uRGF0YSgpIHsgcmV0dXJuIG1faWNv
bkRhdGEuZ2V0KCk7IH0KICAgICB2b2lkIHJlbGVhc2VJY29uRGF0YSgpIHsgbV9pY29uRGF0YSA9
IDA7IH0KQEAgLTEzMSw5ICsxNDIsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFJlZGly
ZWN0Q2hlY2soKTsKIAorICAgIHZvaWQgZmluYWxpemUoKTsKKwogcHJpdmF0ZToKKyNpZiBFTkFC
TEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgTm90aWZpY2F0aW9uKGNvbnN0IEtVUkwmLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZp
Y2F0aW9uQ2VudGVyPik7CiAgICAgTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNv
bnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPik7
CisjZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBOb3RpZmljYXRpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdGl0bGUpOworI2VuZGlmCisKKyAg
ICB2b2lkIHNldEJvZHkoY29uc3QgU3RyaW5nJiBib2R5KSB7IG1fYm9keSA9IGJvZHk7IH0KIAog
ICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRh
cmdldCgpIHsgcmVmKCk7IH0KQEAgLTE0MSw5ICsxNjEsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgdmlydHVhbCBFdmVu
dFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwogCi0gICAgdm9pZCBzdGFydExv
YWRpbmcoKTsKKyAgICB2b2lkIHN0YXJ0TG9hZGluZ0ljb24oKTsKICAgICB2b2lkIGZpbmlzaExv
YWRpbmcoKTsKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHZvaWQgc2hvd1Rhc2tU
aW1lckZpcmVkKFRpbWVyPE5vdGlmaWNhdGlvbj4qKTsKKyNlbmRpZgorICAgIAogICAgIGJvb2wg
bV9pc0hUTUw7CiAKICAgICAvLyBUZXh0IG5vdGlmaWNhdGlvbnMuCkBAIC0xNTgsOSArMTgyLDEw
IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIE5vdGlmaWNhdGlvblN0YXRlIHsKICAgICAgICAgSWRs
ZSA9IDAsCi0gICAgICAgIExvYWRpbmcgPSAxLAorICAgICAgICBMb2FkaW5nSWNvbiA9IDEsCiAg
ICAgICAgIFNob3dpbmcgPSAyLAotICAgICAgICBDYW5jZWxsZWQgPSAzCisgICAgICAgIENhbmNl
bGxlZEljb24gPSAzLAorICAgICAgICBDbG9zZWQgPSA0LAogICAgIH07CiAKICAgICBOb3RpZmlj
YXRpb25TdGF0ZSBtX3N0YXRlOwpAQCAtMTcxLDYgKzE5Niw5IEBAIHByaXZhdGU6CiAKICAgICBS
ZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gbV9sb2FkZXI7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9pY29uRGF0YTsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBPd25QdHI8VGlt
ZXI8Tm90aWZpY2F0aW9uPiA+IG1fc2hvd1Rhc2tUaW1lcjsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaWRsCmluZGV4IDFmYjY3NDZkNDQ3M2NkY2Y5OTNmYWQ0NjgxODM2OTI1MTMzODBjMjIu
LjA3OWYxM2VjYTMxODM2YjFlNDJiMzk0NTI0N2YxNGQ5ODczYmRmYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwKQEAgLTEsNiArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM1LDcgKzM1LDEyIEBA
IG1vZHVsZSB0aHJlYWRzIHsKICAgICAgICAgQ29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OU3xMRUdB
Q1lfTk9USUZJQ0FUSU9OUywKICAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgICAgICBFdmVu
dFRhcmdldCwKKyNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTk9U
SUZJQ0FUSU9OUworICAgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgdGl0bGUsIGluIFtP
cHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERpY3Rpb25hcnkgb3B0aW9ucyksCisgICAgICAg
IENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisjZWxzZQogICAgICAgICBPbWl0Q29u
c3RydWN0b3IKKyNlbmRpZgogICAgIF0gTm90aWZpY2F0aW9uIHsKICAgICAgICAgdm9pZCBzaG93
KCk7CiAjaWYgZGVmaW5lZChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9M
RUdBQ1lfTk9USUZJQ0FUSU9OUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ2VudGVyLmgKaW5kZXggYTA0N2FiZjgxMDkyYmJhYmNmMTY0NzYwMjAzM2Jl
MmYyY2Y2OGEyNy4uNDkyOTllMWEwMmE5MTFlOTMwNjI1ZDMyZmE2NDgzM2RiY2MzYTFlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5o
CkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPE5vdGlmaWNhdGlvbkNlbnRlcj4sIHB1YmxpYyBBY3RpdmVECiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIE5vdGlmaWNhdGlvbkNsaWVudCopOwogCisjaWYgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQogICAgIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVIVE1MTm90
aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgVVJJLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB7CiAg
ICAgICAgIGlmICghY2xpZW50KCkpIHsKQEAgLTY1LDcgKzY2LDkgQEAgcHVibGljOgogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmNvbXBsZXRlVVJMKFVSSSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZWMs
IHRoaXMpOwogICAgIH0KKyNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05T
KQogICAgIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVOb3RpZmljYXRpb24oY29uc3Qg
U3RyaW5nJiBpY29uVVJJLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHks
IEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsKICAgICAgICAgaWYgKCFjbGllbnQoKSkgewpAQCAt
NzQsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIE5vdGlmaWNh
dGlvbjo6Y3JlYXRlKHRpdGxlLCBib2R5LCBpY29uVVJJLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIGVjLCB0aGlzKTsKICAgICB9CisjZW5kaWYKIAogICAgIE5vdGlmaWNhdGlvbkNsaWVudCog
Y2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsIGIvU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCmluZGV4IDdiMGZjMjU1
NTdjYzUwYTNiNTU3OGMzMmI4MjI0NTA5MWMxMWMyN2IuLmU1MDg0NDdkNDllYmFhNDE5Y2ZlNzI1
MDAyNGM5MzExNjJlZWRkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM2LDEwICszNiwxMiBAQCBtb2R1bGUgdGhy
ZWFkcyB7CiAgICAgICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICAgICAgT21pdENvbnN0cnVjdG9y
CiAgICAgXSBOb3RpZmljYXRpb25DZW50ZXIgeworI2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMKICNpZiAhZGVmaW5l
ZChFTkFCTEVfVEVYVF9OT1RJRklDQVRJT05TX09OTFkpIHx8ICFFTkFCTEVfVEVYVF9OT1RJRklD
QVRJT05TX09OTFkKICAgICAgICBbVjhDdXN0b21dIE5vdGlmaWNhdGlvbiBjcmVhdGVIVE1MTm90
aWZpY2F0aW9uKGluIERPTVN0cmluZyB1cmwpIHJhaXNlcyhET01FeGNlcHRpb24pOwogI2VuZGlm
CiAgICAgICAgW1Y4Q3VzdG9tXSBOb3RpZmljYXRpb24gY3JlYXRlTm90aWZpY2F0aW9uKGluIERP
TVN0cmluZyBpY29uVXJsLCBpbiBET01TdHJpbmcgdGl0bGUsIGluIERPTVN0cmluZyBib2R5KSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKyNlbmRpZgogCiAgICAgICAgaW50IGNoZWNrUGVybWlzc2lv
bigpOwogICAgICAgIFtDdXN0b21dIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oaW4gVm9pZENhbGxi
YWNrIGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQppbmRleCA4MTIwOTM2MDE2Mzc0OWI3NjZm
YzdiOGQzZDcwNjAyN2NiMjdkNmRhLi5jOGIxZTJkMWUzN2EwMTIwYjg5MDcwMGE5YmQ1ODY2ZmY4
NTZhODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJO
b3RpZmljYXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCkBAIC0xMDgsNiArMTA4LDcgQEAgdm9pZCBXZWJO
b3RpZmljYXRpb25DbGllbnQ6OmNsZWFyTm90aWZpY2F0aW9ucyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewog
ICAgICAgICBXZWJOb3RpZmljYXRpb24gKndlYk5vdGlmaWNhdGlvbiA9IHdlYk5vdGlmaWNhdGlv
bnNbaV0uZ2V0KCk7CiAgICAgICAgIFtuc0lEcyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldp
dGhVbnNpZ25lZExvbmdMb25nOlt3ZWJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uSURdXV07Cisg
ICAgICAgIGNvcmUod2ViTm90aWZpY2F0aW9uKS0+ZmluYWxpemUoKTsKICAgICAgICAgbV9ub3Rp
ZmljYXRpb25NYXAucmVtb3ZlKGNvcmUod2ViTm90aWZpY2F0aW9uKSk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggMjZlNTQwNzQ0YmQ1Mjc0YzliNmRh
Y2VlYTViZjk0ZmEzYWUwNDk3My4uNmJjNmE0ODFlMTUxMGFjZjhkZTcyZmYwZjEzMTNiMDk3YzBk
ZThjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMTUzLDYgKzE1
Myw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRpb25zKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiAgICAgICAgIFJlZlB0cjxOb3RpZmljYXRp
b24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAudGFrZShub3RpZmljYXRpb25J
RHNbaV0pOwogICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBub3RpZmljYXRpb24tPmZpbmFsaXplKCk7CiAgICAgICAgIG1fbm90aWZpY2F0
aW9uTWFwLnJlbW92ZShub3RpZmljYXRpb24pOwogICAgIH0KICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138163</attachid>
            <date>2012-04-20 14:17:18 -0700</date>
            <delta_ts>2012-04-20 20:56:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80477-20120420141934.patch</filename>
            <type>text/plain</type>
            <size>36655</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ5YzBmNmZkYmQwMGY1
MzYyY2U4MmY1Y2RmNDBjYmJmNDM1MzUzZC4uZThmOTVmMDc3NGQzZDU4NTk4MmVmZjcwMzZiMTc5
ZTk4Yzg5Nzk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMi0wNC0yMCAgSm9u
IExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIE5vdGlmaWNhdGlvbiBjb25z
dHJ1Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODA0NzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwOTEyNDMxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIHdpbGwgYmUgYWRkZWQgb25j
ZSB0aGVyZSBpcyBzdXBwb3J0IGZvciB3ZWIgbm90aWZpY2F0aW9ucyBvbiB0aGUgTWFjIHBvcnRz
LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBmaW5hbGl6ZSgpIGZ1bmN0aW9u
LgorCisgICAgICAgIE1vZGlmeSBEaWN0aW9uYXJ5IHRvIHN1cHBvcnQgY3JlYXRpb24gb2YgZXZl
bnQgbGlzdGVuZXJzLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmlzT2JqZWN0KTogUmV0dXJuIHRydWUgaWYgdGhlIEpT
RGljdGlvbmFyeSBpcyB2YWxpZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmlzVW5k
ZWZpbmVkT3JOdWxsKTogUmV0dXJuIHRydWUgaWYgdGhlIEpTRGljdGlvbmFyeSBpcyBub3QgdmFs
aWQuCisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXQpOiBBZGQgY29udmVuaWVuY2Ug
ZnVuY3Rpb24gdG8gdGFrZSBjb25zdCBjaGFyKiBmb3IKKyAgICAgICAgcHJvcGVydHkgbmFtZSwg
dG8gcHJldmVudCBoYXZpbmcgdG8gZG8gaW1wbGljaXQgY29udmVyc2lvbiB0byBXVEY6OlN0cmlu
Zy4KKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIpOiBBZGQg
ZnVuY3Rpb24gdG8gY3JlYXRlIGV2ZW50IGxpc3RlbmVyCisgICAgICAgIGZyb20gdGhlIGRpY3Rp
b25hcnkuCisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5Ojphc0pTT2JqZWN0KTogSGVscGVy
IHRvIGNvbnZlcnQgV2ViQ29yZSBvYmplY3RzIHRvIEpTIHdyYXBwZXIuCisgICAgICAgICogYmlu
ZGluZ3MvanMvRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb24p
OiBJbXBsZW1lbnQgYXNKU09iamVjdCgpIGZvciBOb3RpZmljYXRpb24uCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNEaWN0aW9uYXJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RpY3Rpb25hcnk6
OmV4ZWNTdGF0ZSk6IEV4cG9zZSB0aGUgZXhlYyBzdGF0ZSBzbyB0aGF0IHRoZSBEaWN0aW9uYXJ5
CisgICAgICAgIGNhbiBvYnRhaW4gaXRzIHdvcmxkIGZvciBjcmVhdGluZyB0aGUgZXZlbnQgbGlz
dGVuZXIuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9EaWN0aW9uYXJ5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRFdmVudExpc3RlbmVyKTogU3R1YiBpbXBsZW1lbnRhdGlv
bi4KKworICAgICAgICBBZGQgbmV3IGNvbnN0cnVjdG9yIHRvIGlkbCBkZWZpbml0aW9ucy4KKyAg
ICAgICAgKiBub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsOiBBZGQgTm90
aWZpY2F0aW9uIGNvbnN0cnVjdG9yLCBpZgorICAgICAgICBFTkFCTEUoTk9USUZJQ0FUSU9OUykg
aXMgb24uCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsOiBJZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykgaXMgdHVybmVkIG9uLCBkZWZpbmUKKyAgICAgICAgdGhlIGNvbnN0
cnVjdG9yLiBPdGhlcndpc2UsIHVzZSBPbWl0Q29uc3RydWN0b3IuCisgICAgICAgICogbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsOiBXcmFwIGNyZWF0aW9uIGZ1bmN0aW9ucyBp
bgorICAgICAgICBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpLgorICAgICAgICAqIG5vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmg6IERpdHRvLgorICAgICAgICAoTm90aWZpY2F0
aW9uQ2VudGVyKToKKworICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6Cisg
ICAgICAgIChOb3RpZmljYXRpb24pOiBXcmFwIGxlZ2FjeSBjb25zdHJ1Y3RvcnMgaW4gRU5BQkxF
KExFR0FDWV9OT1RJRklDQVRJT05TKS4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6
Y3JlYXRlKTogTmV3IGNyZWF0aW9uIGZ1bmN0aW9uIGJhc2VkIG9uIGRpc2N1c3Npb25zIGluIFdH
LgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdldEFuZEFkZEV2ZW50TGlzdGVuZXIpOiBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRo
ZSBsaXN0ZW5lciBmcm9tIHRoZQorICAgICAgICBkaWN0aW9uYXJ5LCBhbmQgYXR0YWNoIHRvIHRo
ZSBub3RpZmljYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNyZWF0ZSk6
IENyZWF0ZSB0aGUgbm90aWZpY2F0aW9uLCB0aGVuIGFwcGx5IHdoYXRldmVyCisgICAgICAgIHBy
b3BlcnRpZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBkaWN0aW9uYXJ5IHRvIHRoZSBub3RpZmljYXRp
b24uIEluIG9yZGVyIHRvCisgICAgICAgIGF0dGFjaCB0aGUgZXZlbnQgbGlzdGVuZXJzLCB0aGUg
bm90aWZpY2F0aW9uIGhhcyB0byBoYXZlIGJlZW4gY3JlYXRlZCwgd2hpY2ggaXMKKyAgICAgICAg
d2h5IHRoaXMgYWxsIGhhcHBlbnMgaW4gdGhlIGZhY3RvcnkgbWV0aG9kIGFuZCBub3QgaW4gdGhl
IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzZXRCb2R5KTog
QWRkZWQgc28gdGhhdCBpdCBjYW4gYmUgc2V0IGlmIHdlIGZpbmQgaXQgaW4gdGhlCisgICAgICAg
IGRpY3Rpb25hcnkuCisKKyAgICAgICAgVGhlIG5ldyBjb25zdHJ1Y3RvciBxdWV1ZXMgYSB0YXNr
IHRvIHNob3cgd2hlbiBpdCBpcyBjcmVhdGVkLiBUbyBzdXBwb3J0IHRoaXMsIHdlCisgICAgICAg
IHVzZSBhIG9uZS1zaG90IHRpbWVyIHRoYXQgY2FsbHMgc2hvdygpIGluIHRoZSBuZXh0IGl0ZXJh
dGlvbiBvZiB0aGUgcnVuIGxvb3AuCisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246Ok5v
dGlmaWNhdGlvbik6IFN0YXJ0IHRoZSB0aW1lci4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbjo6c2hvd1Rhc2tUaW1lckZpcmVkKTogQ2FsbCBzaG93KCkuCisKKyAgICAgICAgTm90aWZp
Y2F0aW9ucywgbm90IGJlaW5nIGF0dGFjaGVkIHRvIHRoZSBET00sIGNvdWxkIGJlIEdDJ2VkIGJ5
IHRoZSBKUyBlbmdpbmUKKyAgICAgICAgYmVmb3JlIGl0cyBsaWZlIGN5Y2xlIGhhcyBjb21wbGV0
ZWQuIFdlIGFkZCBjYWxscyB0byBzZXRQZW5kaW5nQWN0aXZpdHkoKSB3aGVuIHRoZQorICAgICAg
ICBub3RpZmljYXRpb24gaGFzIGJlZW4gc2hvd24sIGFuZCB3aGVuIGl0IGlzIGNsb3NlZCwgd2Ug
dW5zZXRQZW5kaW5nQWN0aXZpdHkoKS4KKyAgICAgICAgVG8gZ3VhcmFudGVlIHRoYXQgd2Ugb25s
eSBjYWxsIHRoaXMgb25jZSwgd2UgYWRkIGEgbmV3IHN0YXRlIHRvIHRoZSBOb3RpZmljYXRpb24K
KyAgICAgICAgc3RhdGUgbWFjaGluZSwgY2FsbGVkIE5vdGlmaWNhdGlvblN0YXRlOjpDbG9zZWQu
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnNob3cpOiBDYWxsIHNldFBlbmRpbmdB
Y3Rpdml0eSgpIGZvciBhbGwgcG9ydHMuIFJlbW92ZSBjb25kaXRpb25hbCBvbiBNYWMuCisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNsb3NlKTogSW5jbHVkZSBDbG9zZWQgc3RhdGUg
dG8gbWFjaGluZTsgZG8gbm90aGluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6
ZGlzcGF0Y2hDbG9zZUV2ZW50KTogQ2FsbCBmaW5hbGl6ZSgpLgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpmaW5hbGl6ZSk6IElmIHRoZSBzdGF0ZSBpcyBub3QgQ2xvc2VkLCB3ZSB1
bnNldFBlbmRpbmdBY3Rpdml0eSgpCisgICAgICAgIHRvIG1ha2UgaXQgYXZhaWxhYmxlIGZvciBH
Qy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZmluaXNoTG9hZGluZyk6IFJlbW92
ZSB0aGUgdW5zZXRQZW5kaW5nQWN0aXZpdHkoKS4gVGhhdCBjYWxsCisgICAgICAgIHdhcyB0byBi
YWxhbmNlIHRoZSBzZXRQZW5kaW5nQWN0aXZpdHkoKSBjYWxsZWQgZm9yIGxvYWRpbmcgdGhlIGlj
b24uIEluc3RlYWQgb2Ygd3JhcHBpbmcKKyAgICAgICAgYXJvdW5kIHRoZSBpY29uIGxvYWQsIHdl
IHdyYXAgYXJvdW5kIHRoZSBzaG93KCkgLT4gZmluYWxpemUoKSBsb29wLgorCisgICAgICAgIElu
IE5vdGlmaWNhdGlvbiwgcmVuYW1lIHNvbWUgb2YgdGhlIHN0YWdlcyBhbmQgZnVuY3Rpb25zIHRv
IG1vcmUgY2xlYXJseSBjb21tdW5pY2F0ZQorICAgICAgICB0aGF0IHRoZXkgbW9zdGx5IGRlYWwg
d2l0aCB0aGUgaWNvbiBvZiB0aGUgbm90aWZpY2F0aW9uLCBpbnN0ZWFkIG9mIGdlbmVyYWwgbG9h
ZGluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2hvdyk6IFJlZmFjdG9yZWQg
dG8gdXNlIExvYWRpbmdJY29uIGFuZCBDYW5jZWxsZWRJY29uLgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpjbG9zZSk6IFJlZmFjdG9yZWQgdG8gdXNlIExvYWRpbmdJY29uIGFuZCBD
YW5jZWxsZWRJY29uLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0
aW9uKTogUmVmYWN0b3IgdG8gdXNlIExvYWRpbmdJY29uLgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjpzdGFydExvYWRpbmdJY29uKTogUmVuYW1lZCBmcm9tIHN0YXJ0TG9hZGluZygp
LgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzdG9wTG9hZGluZ0ljb24pOiBSZW5h
bWVkIGZyb20gc3RvcExvYWRpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6
ZmluaXNoTG9hZGluZ0ljb24pOiBSZW5hbWVkIGZyb20gZmluaXNoTG9hZGluZygpLgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb246OmRpZEZhaWxSZWRpcmVjdENoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bjo6ZmluaXNoTG9hZGluZyk6CisKKyAgICAgICAgQWRkIERpY3Rpb25hcnkuY3BwLgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBVc2VKU0MuY21ha2U6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorCisgICAgICAgIEZpeCBi
dWcgaW4gVjggYmluZGluZ3MgZ2VuZXJhdGlvbiBjb2RlLiBJZiB0aGUgY29uc3RydWN0b3IgZG9l
c24ndCByYWlzZSBhbiBleGNlcHRpb24sCisgICAgICAgIGRvbid0IHVzZSBhbiBleGNlcHRpb24g
Y29kZS4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAg
ICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDogUmVzZXQgcmVzdWx0cy4KKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjpvcHRpb25zT2JqZWN0Q2FsbGJhY2spOgorCiAyMDEyLTA0
LTIwICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbd2luXSBV
cGRhdGUgd2luZG93cyBwbGF0Zm9ybSBjb2RlIHRvIHVzZSBwaXhlbCBzbmFwcGVkIHZhbHVlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCmluZGV4IGI0OGY0NDZkOTgwMWU1NjM1NDY5NDc1NjFiNDE4NWJjZjA4Mjdj
MDYuLjJjMzMxYjhkN2JhNmFjZjA4YWJhNDc2YmU3YmMzN2EwODQwYzkxOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNC0yMCAgSm9uIExlZSAgPGpvbmxlZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIE5vdGlmaWNhdGlvbiBjb25zdHJ1Y3RvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0NzcKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzEwOTEyNDMxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjbGVhck5vdGlmaWNhdGlvbnMpOiBX
aGVuIGNsZWFyaW5nIG5vdGlmaWNhdGlvbnMsIGZpbmFsaXplCisgICAgICAgIHRoZW0gc28gdGhh
dCB0aGV5IGNhbiBiZSBjbGVhbmVkIHVwIGJ5IHRoZSBHQy4KKwogMjAxMi0wNC0xOCAgSGlyb25v
cmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTcGxpdCBTcGVsbENoZWNr
ZXI6OmRpZENoZWNrKCkgdG8gU3BlbGxDaGVja2VyOjpkaWRDaGVja1N1Y2NlZWRlZCgpIGFuZCBT
cGVsbENoZWNrZXI6OmRpZENoZWNrQ2FuY2VsZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI5NzFhNzNiMmM3
NjE5ODFkM2ZmNWIxMDcxZGM4YzkwMzk5OWZkZjEuLmU3ZGM3NDZjOTRkMmRlNzU3ZWMzNzcyY2M3
MmZlYTU5ZDRkN2Q0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNC0yMCAg
Sm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIE5vdGlmaWNhdGlvbiBj
b25zdHJ1Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA0NzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwOTEyNDMxPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJO
b3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KTogSWYgdGhlIG5vdGlmaWNhdGlvbiBkb2Vzbid0IGdl
dCBzaG93biwKKyAgICAgICAgd2Ugc2hvdWxkIHJldHVybiBmYWxzZSwgc2luY2UgaXQgd2lsbCBu
b3QgZ28gdGhyb3VnaCBhIHNldFBlbmRpbmdBY3Rpdml0eSBjeWNsZS4KKyAgICAgICAgKFdlYktp
dDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRpb25zKTogV2hlbiBjbGVh
cmluZyBub3RpZmljYXRpb25zLAorICAgICAgICBmaW5hbGl6ZSB0aGVtIHNvIHRoYXQgdGhleSBj
YW4gYmUgY2xlYW5lZCB1cCBieSB0aGUgR0MuCisKIDIwMTItMDQtMTkgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIElnbm9yZSByZXNv
dXJjZXMgd2hpbGUgcmVwbGFjaW5nIGNvbnRlbnQgaW4gV2ViS2l0MiBHVEsrIEFQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNGY4MTcxYzJhOTNmNDc0NDliMGFiMGMxMzkwMjBi
ZmU0NmM2MDU4Zi4uNmQxNmY4YjI2NDdlMzRjM2RjYzE3OWViZjE1NWVmZTI3MmFlMmEzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xNDczLDYgKzE0NzMsNyBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3Nv
ckN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxs
RnJhbWUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZy
YW1lLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmggXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDUz
NjQ4MGYyOGMxZWUzM2I4YWQzMTRiOGIwNjg0ZmMyNzNmODNhNWUuLmI4NjJmZDU0N2JjOTVjZjZk
YzYwOTE3MTgyODE1YzlkYjUxNWM1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjQ2LDYgKzI0Niw3IEBA
IHY4IHsKICAgICAgICAgYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5jcHAgXAogICAgICAg
ICBiaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuY3BwIFwKICAgICAgICAgYmluZGlu
Z3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0RpY3Rpb25h
cnkuY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcCBcCiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3Mv
anMvSlNBdHRyQ3VzdG9tLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0Mu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggZDA3NGE5MDFlOTVjYTg3
ZDFkYjEyODM2NjVjZDQzNjUyNGYzNjMxNC4uNTE1NTgxY2QwZWRiMzhkNTQ1YTZiZjM0Y2MyM2Uz
ZmM2N2Y5NWQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQpAQCAtMjUsNiArMjUsNyBAQCBMSVNUKEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5jcHAKICAgICBiaW5kaW5ncy9q
cy9ET01XcmFwcGVyV29ybGQuY3BwCisgICAgYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCiAgICAgYmluZGluZ3MvanMvSlNBcnJheUJ1
ZmZlckN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCmluZGV4IDg4OTQ1YmQ1NDJjZTFmMGI5MTQzZWQ3M2FjMTgxOTY2ZjM2OGM0MTMu
LjA5Njk2MTg4YjljZWYwMTg5YTkwMGVkMWE3MWFhODBlZTExYjdkYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCkBAIC0yMTU2LDYgKzIxNTYsNyBAQCBfd2tDcmVhdGVWTVByZXNzdXJlRGlzcGF0Y2hP
bk1haW5RdWV1ZQogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCiBfX1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbkMxRXYKIF9fWk43V2ViQ29y
ZTEyTm90aWZpY2F0aW9uRDFFdgorX19aTjdXZWJDb3JlMTJOb3RpZmljYXRpb244ZmluYWxpemVF
dgogX19aTjdXZWJDb3JlMTJOb3RpZmljYXRpb24xN2Rpc3BhdGNoU2hvd0V2ZW50RXYKIF9fWk43
V2ViQ29yZTEyTm90aWZpY2F0aW9uMThkaXNwYXRjaENsaWNrRXZlbnRFdgogX19aTjdXZWJDb3Jl
MTJOb3RpZmljYXRpb24xOGRpc3BhdGNoQ2xvc2VFdmVudEV2CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
NDVlZDk2ZTA1ODIwM2E2YTkzNTNiYTI4YmRkNGQwZjQ5OGUxMTVlNC4uZDU0OWVlNzMxY2E5NDZi
NTJiMmM1MGFlMGRhYzBjNGU4Mzk5M2UwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjAyNyw2ICsy
MDI3LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oJywKKyAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvanMvRGljdGlvbmFyeS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwCmluZGV4IDc1YmVmMTU0
OTYwMmZkZDk1OWQ3NmQ4OWRmNDc1MjE3MDlkMjRjOTUuLjJjMWI3ODVmZTBmODVjOGFhYWM3Njg5
OWE0ZDgwYzliNmEwOWU5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25h
cnkuY3BwCkBAIC0yNiw2ICsyNiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkRpY3Rpb25hcnkuaCIKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIkpT
Tm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisjZW5kaWYKKwogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMTQgKzQwLDE0
IEBAIERpY3Rpb25hcnk6OkRpY3Rpb25hcnkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNW
YWx1ZSB2YWx1ZSkKIHsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdD4KLWJvb2wgRGlj
dGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBSZXN1bHQmIHJlc3VsdCkg
Y29uc3QKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQordGVtcGxhdGU8PgorSlNPYmplY3Qq
IERpY3Rpb25hcnk6OmFzSlNPYmplY3Q8Tm90aWZpY2F0aW9uPihOb3RpZmljYXRpb24qIG9iamVj
dCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZGljdGlvbmFyeS5pc1ZhbGlkKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gbV9kaWN0aW9uYXJ5LmdldChwcm9wZXJ0eU5h
bWUuYXNjaWkoKS5kYXRhKCksIHJlc3VsdCk7CisgICAgcmV0dXJuIGFzT2JqZWN0KHRvSlMobV9k
aWN0aW9uYXJ5LmV4ZWNTdGF0ZSgpLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihtX2RpY3Rp
b25hcnkuZXhlY1N0YXRlKCktPmxleGljYWxHbG9iYWxPYmplY3QoKSksIG9iamVjdCkpOwogfQor
I2VuZGlmCiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Rp
Y3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAppbmRl
eCA5M2E0OGI4YWU1NzcxNTY0ZjBmN2FmYjNkMTdlODI1ZjM4ZTZkM2U2Li5kNDFjYjE3MDUzZDJh
YWE5ZTJlNDNlYzNiZDhiYTA4YmE4M2QzYTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RGljdGlvbmFyeS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIERpY3Rpb25hcnlfaAogCiAj
aW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTQ2LDE2ICs0Nyw2MiBAQCBwdWJsaWM6CiAK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYSB2YWx1ZSB3YXMgZm91bmQgZm9yIHRoZSBwcm92aWRl
ZCBwcm9wZXJ0eS4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgorICAgIGJvb2wgZ2V0
KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgUmVzdWx0JikgY29uc3Q7CisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFJlc3VsdD4KICAgICBib29sIGdldChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSwgUmVzdWx0JikgY29uc3Q7CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAg
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBnZXRFdmVudExpc3RlbmVyKGNvbnN0IGNoYXIqIHBy
b3BlcnR5TmFtZSwgVCogdGFyZ2V0KSBjb25zdDsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
KyAgICBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoY29uc3QgU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3Q7CiAKLSAgICBib29sIGlzT2JqZWN0
KCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlz
VW5kZWZpbmVkT3JOdWxsKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5LmlzVmFs
aWQoKTsgfQorICAgIGJvb2wgaXNVbmRlZmluZWRPck51bGwoKSBjb25zdCB7IHJldHVybiAhbV9k
aWN0aW9uYXJ5LmlzVmFsaWQoKTsgfQogICAgIGJvb2wgZ2V0V2l0aFVuZGVmaW5lZE9yTnVsbENo
ZWNrKGNvbnN0IFN0cmluZyYsIFN0cmluZyYpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0
dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAg
SlNDOjpKU09iamVjdCogYXNKU09iamVjdChUKikgY29uc3Q7CisgICAgCiAgICAgSlNEaWN0aW9u
YXJ5IG1fZGljdGlvbmFyeTsKIH07CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+Citib29s
IERpY3Rpb25hcnk6OmdldChjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFJlc3VsdCYgcmVzdWx0
KSBjb25zdAoreworICAgIGlmICghbV9kaWN0aW9uYXJ5LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBtX2RpY3Rpb25hcnkuZ2V0KHByb3BlcnR5TmFt
ZSwgcmVzdWx0KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdD4KK2Jvb2wgRGljdGlv
bmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBSZXN1bHQmIHJlc3VsdCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZ2V0KHByb3BlcnR5TmFtZS51dGY4KCkuZGF0YSgpLCByZXN1bHQp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1Bhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
RGljdGlvbmFyeTo6Z2V0RXZlbnRMaXN0ZW5lcihjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFQq
IHRhcmdldCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZGljdGlvbmFyeS5pc1ZhbGlkKCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgU2NyaXB0VmFsdWUgZXZlbnRMaXN0ZW5lcjsKKyAgICBpZiAo
IW1fZGljdGlvbmFyeS50cnlHZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIGV2ZW50TGlzdGVuZXIp
KQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoZXZlbnRMaXN0ZW5lci5oYXNOb1ZhbHVlKCkp
CisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBKU0V2ZW50TGlzdGVuZXI6OmNy
ZWF0ZShhc09iamVjdChldmVudExpc3RlbmVyLmpzVmFsdWUoKSksIGFzSlNPYmplY3QodGFyZ2V0
KSwgdHJ1ZSwgY3VycmVudFdvcmxkKG1fZGljdGlvbmFyeS5leGVjU3RhdGUoKSkpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1Bhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gRGljdGlvbmFy
eTo6Z2V0RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgVCogdGFyZ2V0
KSBjb25zdAoreworICAgIHJldHVybiBnZXRFdmVudExpc3RlbmVyKHByb3BlcnR5TmFtZS51dGY4
KCkuZGF0YSgpLCB0YXJnZXQpOworfQorCiB9CiAKICNlbmRpZiAvLyBEaWN0aW9uYXJ5X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKaW5kZXggZTlkOTllMWZjMDNl
OTFhOGRlZTA5Njg2M2JlMGZjNzg5ZTVhMDNkMC4uOGY2MzM3ZDZlNGEzODRmOGI1ZGUxNzI4ZTYw
NTU1OTFlNDIxMTRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
aWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5
LmgKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1
bHQ+CiAgICAgYm9vbCBnZXQoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBSZXN1bHQmKSBjb25z
dDsKIAorICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2V4
ZWM7IH0KICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2V4ZWMgJiYgbV9pbml0
aWFsaXplck9iamVjdDsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBjMTYxMmNlYmZkOGMxMjQzMWZm
NzU4ZDFlMTAzYWJkZDk2NTk5NGY0Li41ZTdiMjVlZGQ1YWIzYzg1NzJmMTczNTRlZmI2ODI3MTNh
ZjdiZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQpAQCAtMTY2NSw4ICsxNjY1LDEwIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRl
cnNDaGVjawogICAgICAgICAgICAgICAgICBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgIk1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsICRwYXJhbUluZGV4LCAkcGFyYW1ldGVyRGVmYXVs
dFBvbGljeSkiKSAuICIpO1xuIjsKICAgICAgICAgICAgIGlmICgkbmF0aXZlVHlwZSBlcSAnRGlj
dGlvbmFyeScpIHsKICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAg
IGlmIChhcmdzLkxlbmd0aCgpID4gJHBhcmFtSW5kZXggJiYgISRwYXJhbWV0ZXJOYW1lLmlzVW5k
ZWZpbmVkT3JOdWxsKCkgJiYgISRwYXJhbWV0ZXJOYW1lLmlzT2JqZWN0KCkpIHtcbiI7Ci0gICAg
ICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgZWMgPSBUWVBFX01J
U01BVENIX0VSUjtcbiI7Ci0gICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0g
IiAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTtcbiI7CisgICAgICAgICAgICAg
ICBpZiAoQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9KSB7CisgICAgICAgICAgICAgICAg
ICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9F
UlI7XG4iOworICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAg
ICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpO1xuIjsKKyAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcihcIk5vdCBhbiBvYmplY3QuXCIsIFY4UHJveHk6OlR5cGVFcnJvcik7XG4iOwog
ICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgfVxuIjsKICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggMjBjYjk4ZDE1MWU4ODZhMWQ3Nzc2MjUyMTk4MDg3ZDlh
MmRiYmI3MS4uNjEwZjJjN2QyZjFjNThjNmZhNDA0MjM5ZDk3ZDFkMjZmZjNlYWI1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9i
ai5jcHAKQEAgLTExNDMsOCArMTE0Myw2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
b3B0aW9uc09iamVjdENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBFWENF
UFRJT05fQkxPQ0soRGljdGlvbmFyeSwgb28sIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3Ms
IDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAmJiAh
b28uaXNVbmRlZmluZWRPck51bGwoKSAmJiAhb28uaXNPYmplY3QoKSkgewotICAgICAgICBlYyA9
IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMp
OwogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGFuIG9iamVjdC4iLCBWOFByb3h5OjpU
eXBlRXJyb3IpOwogICAgIH0KICAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAxKSB7CkBAIC0xMTUz
LDggKzExNTEsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG9wdGlvbnNPYmplY3RD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIH0KICAgICBFWENFUFRJT05f
QkxPQ0soRGljdGlvbmFyeSwgb29vLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAxLCBE
ZWZhdWx0SXNVbmRlZmluZWQpKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEgJiYgIW9vby5p
c1VuZGVmaW5lZE9yTnVsbCgpICYmICFvb28uaXNPYmplY3QoKSkgewotICAgICAgICBlYyA9IFRZ
UEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOwog
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGFuIG9iamVjdC4iLCBWOFByb3h5OjpUeXBl
RXJyb3IpOwogICAgIH0KICAgICBpbXAtPm9wdGlvbnNPYmplY3Qob28sIG9vbyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmgKaW5kZXggMzIxNjRiOGNiYjIzYTU0YWJjNTg0
OTc5OTYyNTk2YzVmZDJmZjgzMS4uZTU4ODkwZTU5ZmIyNTIxNjUyMDcxY2Y4NWY2MDE1OTEzMDE5
ODcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaApAQCAtMjYsNiAr
MjYsNyBAQAogI2lmbmRlZiBEaWN0aW9uYXJ5X2gKICNkZWZpbmUgRGljdGlvbmFyeV9oCiAKKyNp
bmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCkBAIC0zOCwx
MiArMzksMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRE9NU3RyaW5nTGlzdDsKIGNs
YXNzIERPTVdpbmRvdzsKIGNsYXNzIElEQktleVJhbmdlOwotY2xhc3MgU3RvcmFnZTsKIGNsYXNz
IE1lZGlhS2V5RXJyb3I7Ci1jbGFzcyBUcmFja0Jhc2U7CitjbGFzcyBOb3RpZmljYXRpb247CiBj
bGFzcyBTcGVlY2hSZWNvZ25pdGlvbkVycm9yOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXN1
bHQ7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q7CitjbGFzcyBTdG9yYWdlOwor
Y2xhc3MgVHJhY2tCYXNlOwogCiBjbGFzcyBEaWN0aW9uYXJ5IHsKIHB1YmxpYzoKQEAgLTg0LDYg
Kzg2LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBnZXRXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2so
Y29uc3QgU3RyaW5nJiwgU3RyaW5nJikgY29uc3Q7CiAKKyAgICBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiwgTm90aWZpY2F0aW9uKikgY29u
c3QgeyByZXR1cm4gMDsgfQorCiBwcml2YXRlOgogICAgIGJvb2wgZ2V0S2V5KGNvbnN0IFN0cmlu
ZyYga2V5LCB2ODo6TG9jYWw8djg6OlZhbHVlPiYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsIGIvU291
cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbAppbmRl
eCAwNTdiNjY2YjZlM2Q3NDdlNTk3NDQwYzRmM2ViYzlmMTY3YmUzM2Y5Li4xZGYxYjExZjk2NDQw
ZmUwMWMyNjlhNTc1OTI5ZjdiZDBkYTk1Y2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9u
b3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTMxLDYgKzMxLDkgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIFN1cHBsZW1l
bnRhbD1ET01XaW5kb3cKICAgICBdIERPTVdpbmRvd05vdGlmaWNhdGlvbnMgewogICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gTm90aWZpY2F0aW9uQ2VudGVy
IHdlYmtpdE5vdGlmaWNhdGlvbnM7CisjaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykg
JiYgRU5BQkxFX05PVElGSUNBVElPTlMKKyAgICAgICAgYXR0cmlidXRlIE5vdGlmaWNhdGlvbkNv
bnN0cnVjdG9yIE5vdGlmaWNhdGlvbjsKKyNlbmRpZgogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCAyMjQxYjM2MDczY2Jk
NmQ2ZGRmNDYyYWQzYThlYjFlMDk1MTY5NDliLi40OGIxYzIwOTkwYjAzZjU2M2NiNWRlNGVkYTk2
MDBjOTVkYTRhNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCkBAIC0zNSw2ICszNSw5IEBACiAKICNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIK
IAorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRPTVdpbmRvd05vdGlmaWNhdGlv
bnMuaCIKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgpAQCAtNTIsNiAr
NTUsNyBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbigpCiB7CiB9CiAKKyNpZiBFTkFCTEUo
TEVHQUNZX05PVElGSUNBVElPTlMpCiBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBL
VVJMJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUm
IGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpCiAgICAgOiBBY3Rp
dmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1faXNIVE1MKHRydWUpCkBAIC03MCw3
ICs3NCw5IEBAIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IEtVUkwmIHVybCwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjCiAKICAgICBtX25vdGlmaWNhdGlvblVS
TCA9IHVybDsKIH0KKyNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQog
Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3Ry
aW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRl
cj4gcHJvdmlkZXIpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAs
IG1faXNIVE1MKGZhbHNlKQpAQCAtOTAsMTUgKzk2LDMzIEBAIE5vdGlmaWNhdGlvbjo6Tm90aWZp
Y2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3Ry
aW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CisjZW5kaWYKKworI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKQorTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKKyAgICA6IEFjdGl2ZURPTU9iamVj
dChjb250ZXh0LCB0aGlzKQorICAgICwgbV9pc0hUTUwoZmFsc2UpCisgICAgLCBtX3RpdGxlKHRp
dGxlKQorICAgICwgbV9zdGF0ZShJZGxlKQorICAgICwgbV9zaG93VGFza1RpbWVyKGFkb3B0UHRy
KG5ldyBUaW1lcjxOb3RpZmljYXRpb24+KHRoaXMsICZOb3RpZmljYXRpb246OnNob3dUYXNrVGlt
ZXJGaXJlZCkpKQoreworICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIG1f
bm90aWZpY2F0aW9uQ2VudGVyID0gRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZp
Y2F0aW9ucyhzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5kb21XaW5kb3coKSk7Cisg
ICAgCisgICAgQVNTRVJUKG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKSk7CisgICAgbV9z
aG93VGFza1RpbWVyLT5zdGFydE9uZVNob3QoMCk7Cit9CisjZW5kaWYKIAogTm90aWZpY2F0aW9u
Ojp+Tm90aWZpY2F0aW9uKCkgCiB7Ci0gICAgaWYgKG1fc3RhdGUgPT0gTG9hZGluZykgeworICAg
IGlmIChtX3N0YXRlID09IExvYWRpbmdJY29uKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICBjbG9zZSgpOwogICAgIH0KIH0KIAorI2lmIEVOQUJMRShMRUdBQ1lfTk9U
SUZJQ0FUSU9OUykKIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0
ZShjb25zdCBLVVJMJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2Vw
dGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpIAog
eyAKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24oYWRvcHRSZWYobmV3IE5v
dGlmaWNhdGlvbih1cmwsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpKTsKQEAgLTExMiw2ICsxMzYs
MzMgQEAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYKICAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJ
Zk5lZWRlZCgpOwogICAgIHJldHVybiBub3RpZmljYXRpb24ucmVsZWFzZSgpOwogfQorI2VuZGlm
CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK3N0YXRpYyB2b2lkIGdldEFuZEFkZEV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0IGNoYXIqIHByb3Bl
cnR5LCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlv
bikKK3sKKyAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBvcHRpb25zLmdldEV2
ZW50TGlzdGVuZXIocHJvcGVydHksIG5vdGlmaWNhdGlvbik7CisgICAgaWYgKGxpc3RlbmVyKQor
ICAgICAgICBub3RpZmljYXRpb24tPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBsaXN0ZW5l
ci5yZWxlYXNlKCksIGZhbHNlKTsKK30KKworUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IE5vdGlm
aWNhdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpCit7CisgICAgUmVmUHRyPE5v
dGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24oY29udGV4
dCwgdGl0bGUpKSk7CisgICAgU3RyaW5nIGFyZ3VtZW50OworICAgIGlmIChvcHRpb25zLmdldCgi
Ym9keSIsIGFyZ3VtZW50KSkKKyAgICAgICAgbm90aWZpY2F0aW9uLT5zZXRCb2R5KGFyZ3VtZW50
KTsKKyAgICBpZiAob3B0aW9ucy5nZXQoInRhZyIsIGFyZ3VtZW50KSkKKyAgICAgICAgbm90aWZp
Y2F0aW9uLT5zZXRUYWcoYXJndW1lbnQpOworICAgIGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLnNob3dFdmVudCwgIm9uc2hvdyIsIG9wdGlvbnMsIG5vdGlmaWNhdGlvbi5nZXQo
KSk7CisgICAgZ2V0QW5kQWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xvc2VFdmVudCwg
Im9uY2xvc2UiLCBvcHRpb25zLCBub3RpZmljYXRpb24uZ2V0KCkpOworICAgIGdldEFuZEFkZEV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsICJvbmVycm9yIiwgb3B0aW9ucywg
bm90aWZpY2F0aW9uLmdldCgpKTsKKyAgICBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5jbGlja0V2ZW50LCAib25jbGljayIsIG9wdGlvbnMsIG5vdGlmaWNhdGlvbi5nZXQoKSk7
CisKKyAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBub3Rp
ZmljYXRpb24ucmVsZWFzZSgpOworfQorI2VuZGlmCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTm90
aWZpY2F0aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKIHsKQEAgLTEyNiwyMCArMTc3LDE5IEBA
IHZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkKICAgICAgICAgLy8gaGFuZGxpbmcgb2Ygb25kaXNw
bGF5IG1heSByZWx5IG9uIHRoYXQuCiAgICAgICAgIGlmIChtX3N0YXRlID09IElkbGUpIHsKICAg
ICAgICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOwotICAgICAgICAgICAgaWYgKG1fbm90aWZpY2F0
aW9uQ2VudGVyLT5jbGllbnQoKSkKKyAgICAgICAgICAgIGlmIChtX25vdGlmaWNhdGlvbkNlbnRl
ci0+Y2xpZW50KCkpIHsKICAgICAgICAgICAgICAgICBtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xp
ZW50KCktPnNob3codGhpcyk7CisgICAgICAgICAgICAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRo
aXMpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIHN0YXJ0
TG9hZGluZygpOwotI2VsaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChtX3N0YXRlID09IElkbGUg
JiYgbV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpKSB7Ci0gICAgICAgIG1fbm90aWZpY2F0
aW9uQ2VudGVyLT5jbGllbnQoKS0+c2hvdyh0aGlzKTsKLSAgICAgICAgbV9zdGF0ZSA9IFNob3dp
bmc7Ci0gICAgfQorICAgICAgICBzdGFydExvYWRpbmdJY29uKCk7CiAjZWxzZQogICAgIC8vIHBy
ZXZlbnQgZG91YmxlLXNob3dpbmcKLSAgICBpZiAobV9zdGF0ZSA9PSBJZGxlICYmIG1fbm90aWZp
Y2F0aW9uQ2VudGVyLT5jbGllbnQoKSAmJiBtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkt
PnNob3codGhpcykpCisgICAgaWYgKG1fc3RhdGUgPT0gSWRsZSAmJiBtX25vdGlmaWNhdGlvbkNl
bnRlci0+Y2xpZW50KCkgJiYgbV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpLT5zaG93KHRo
aXMpKSB7CiAgICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOworICAgICAgICBzZXRQZW5kaW5nQWN0
aXZpdHkodGhpcyk7CisgICAgfQogI2VuZGlmCiB9CiAKQEAgLTE0OCwxNSArMTk4LDE2IEBAIHZv
aWQgTm90aWZpY2F0aW9uOjpjbG9zZSgpCiAgICAgc3dpdGNoIChtX3N0YXRlKSB7CiAgICAgY2Fz
ZSBJZGxlOgogICAgICAgICBicmVhazsKLSAgICBjYXNlIExvYWRpbmc6Ci0gICAgICAgIG1fc3Rh
dGUgPSBDYW5jZWxsZWQ7Ci0gICAgICAgIHN0b3BMb2FkaW5nKCk7CisgICAgY2FzZSBMb2FkaW5n
SWNvbjoKKyAgICAgICAgbV9zdGF0ZSA9IENhbmNlbGxlZEljb247CisgICAgICAgIHN0b3BMb2Fk
aW5nSWNvbigpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNob3dpbmc6CiAgICAgICAgIGlm
IChtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkpCiAgICAgICAgICAgICBtX25vdGlmaWNh
dGlvbkNlbnRlci0+Y2xpZW50KCktPmNhbmNlbCh0aGlzKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDYW5jZWxsZWQ6CisgICAgY2FzZSBDYW5jZWxsZWRJY29uOgorICAgIGNhc2UgQ2xvc2Vk
OgogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC0xNzgsMTIgKzIyOSwxMiBAQCB2b2lkIE5v
dGlmaWNhdGlvbjo6Y29udGV4dERlc3Ryb3llZCgpCiAgICAgICAgIG1fbm90aWZpY2F0aW9uQ2Vu
dGVyLT5jbGllbnQoKS0+bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKHRoaXMpOwogfQogCi12
b2lkIE5vdGlmaWNhdGlvbjo6c3RhcnRMb2FkaW5nKCkKK3ZvaWQgTm90aWZpY2F0aW9uOjpzdGFy
dExvYWRpbmdJY29uKCkKIHsKICAgICBpZiAobV9zdGF0ZSAhPSBJZGxlKQogICAgICAgICByZXR1
cm47CiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgIG1fc3RhdGUgPSBMb2FkaW5n
OworICAgIG1fc3RhdGUgPSBMb2FkaW5nSWNvbjsKICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9u
cyBvcHRpb25zOwogICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSBEb05vdFNlbmRDYWxs
YmFja3M7CiAgICAgb3B0aW9ucy5zbmlmZkNvbnRlbnQgPSBEb05vdFNuaWZmQ29udGVudDsKQEAg
LTE5Myw3ICsyNDQsNyBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6c3RhcnRMb2FkaW5nKCkKICAgICBt
X2xvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIHRoaXMsIFJlc291cmNlUmVxdWVzdChpY29uVVJMKCkpLCBvcHRpb25zKTsKIH0KIAotdm9p
ZCBOb3RpZmljYXRpb246OnN0b3BMb2FkaW5nKCkKK3ZvaWQgTm90aWZpY2F0aW9uOjpzdG9wTG9h
ZGluZ0ljb24oKQogewogICAgIG1faWNvbkRhdGEgPSAwOwogICAgIFJlZlB0cjxUaHJlYWRhYmxl
TG9hZGVyPiBwcm90ZWN0KG1fbG9hZGVyKTsKQEAgLTIwNCw3ICsyNTUsNyBAQCB2b2lkIE5vdGlm
aWNhdGlvbjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlcwogewogICAgIGludCBzdGF0dXMgPSByZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpOwogICAgIGlmIChzdGF0dXMgJiYgKHN0YXR1cyA8IDIwMCB8fCBzdGF0dXMgPiAyOTkpKSB7
Ci0gICAgICAgIHN0b3BMb2FkaW5nKCk7CisgICAgICAgIHN0b3BMb2FkaW5nSWNvbigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1faWNvbkRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwpAQCAtMjE3LDI1ICsyNjgsMzIgQEAgdm9pZCBOb3RpZmljYXRpb246OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogCiB2b2lkIE5vdGlmaWNhdGlv
bjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpCiB7Ci0gICAgZmluaXNo
TG9hZGluZygpOworICAgIGZpbmlzaExvYWRpbmdJY29uKCk7CiB9CiAKIHZvaWQgTm90aWZpY2F0
aW9uOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKQogewotICAgIGZpbmlzaExvYWRpbmco
KTsKKyAgICBmaW5pc2hMb2FkaW5nSWNvbigpOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlk
RmFpbFJlZGlyZWN0Q2hlY2soKQogewotICAgIGZpbmlzaExvYWRpbmcoKTsKKyAgICBmaW5pc2hM
b2FkaW5nSWNvbigpOwogfQogCi12b2lkIE5vdGlmaWNhdGlvbjo6ZmluaXNoTG9hZGluZygpCit2
b2lkIE5vdGlmaWNhdGlvbjo6ZmluaXNoTG9hZGluZ0ljb24oKQogewotICAgIGlmIChtX3N0YXRl
ID09IExvYWRpbmcpIHsKKyAgICBpZiAobV9zdGF0ZSA9PSBMb2FkaW5nSWNvbikgewogICAgICAg
ICBpZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpICYmIG1fbm90aWZpY2F0aW9uQ2Vu
dGVyLT5jbGllbnQoKS0+c2hvdyh0aGlzKSkKICAgICAgICAgICAgIG1fc3RhdGUgPSBTaG93aW5n
OwogICAgIH0KK30KKwordm9pZCBOb3RpZmljYXRpb246OmZpbmFsaXplKCkKK3sKKyAgICBpZiAo
bV9zdGF0ZSA9PSBDbG9zZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3N0YXRlID0gQ2xvc2Vk
OwogICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogfQogCkBAIC0yNTIsNiArMzEwLDcg
QEAgdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xpY2tFdmVudCgpCiB2b2lkIE5vdGlmaWNh
dGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KCkKIHsKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgIGZpbmFs
aXplKCk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaEVycm9yRXZlbnQoKQpAQCAt
MjU5LDYgKzMxOCwxNCBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkK
ICAgICBkaXNwYXRjaEV2ZW50KEVycm9yRXZlbnQ6OmNyZWF0ZSgpKTsKIH0KIAorI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQordm9pZCBOb3RpZmljYXRpb246OnNob3dUYXNrVGltZXJGaXJlZChU
aW1lcjxOb3RpZmljYXRpb24+KiB0aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0
aW1lciA9PSBtX3Nob3dUYXNrVGltZXIuZ2V0KCkpOworICAgIHNob3coKTsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9O
UykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXggYTY3MTU5YTllMjRiYTJlOTkyNmFmMDQwYzk0
YzZmYjIyMmVjYmI4MS4uOWVjZjhjNmExOGFkNDEzN2ZkZGU0ODRlMjk5ODFlOTE1ZjJkYzdkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC00NSw5
ICs0NSwxNCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmdIYXNoLmg+CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyNpbmNsdWRl
ICJUaW1lci5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxF
KExFR0FDWV9OT1RJRklDQVRJT05TKQogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEaWN0
aW9uYXJ5OwogY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CkBAIC02MCw4ICs2NSwxMyBAQCBjbGFzcyBOb3RpZmlj
YXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+LCBwdWJsaWMgQWN0aXZlRE9N
T2JqZWN0LCBwdQogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5v
dGlmaWNhdGlvbigpOworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBLVVJMJiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNl
bnRlcj4gcHJvdmlkZXIpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5n
JiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NS
ZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcik7CisjZW5kaWYKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgRGlj
dGlvbmFyeSYgb3B0aW9ucyk7CisjZW5kaWYKICAgICAKICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRp
b24oKTsKIApAQCAtNzgsNiArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVUkwoS1VSTCB1
cmwpIHsgbV9ub3RpZmljYXRpb25VUkwgPSB1cmw7IH0KICAgICAKICAgICBLVVJMIGljb25VUkwo
KSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KKwogICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGl0bGU7IH0KICAgICBTdHJpbmcgYm9keSgpIGNvbnN0IHsgcmV0dXJuIG1fYm9k
eTsgfQogCkBAIC0xMTcsNyArMTI4LDcgQEAgcHVibGljOgogICAgIC8vIEFjdGl2ZURPTU9iamVj
dCBpbnRlcmZhY2UKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogCi0gICAg
dm9pZCBzdG9wTG9hZGluZygpOworICAgIHZvaWQgc3RvcExvYWRpbmdJY29uKCk7CiAKICAgICBT
aGFyZWRCdWZmZXIqIGljb25EYXRhKCkgeyByZXR1cm4gbV9pY29uRGF0YS5nZXQoKTsgfQogICAg
IHZvaWQgcmVsZWFzZUljb25EYXRhKCkgeyBtX2ljb25EYXRhID0gMDsgfQpAQCAtMTMxLDkgKzE0
MiwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpOwogCisgICAg
dm9pZCBmaW5hbGl6ZSgpOworCiBwcml2YXRlOgorI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FU
SU9OUykKICAgICBOb3RpZmljYXRpb24oY29uc3QgS1VSTCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+KTsKICAg
ICBOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBj
b25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25D
b2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+KTsKKyNlbmRpZgorI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQorICAgIE5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisjZW5kaWYKKworICAgIHZvaWQgc2V0Qm9keShjb25z
dCBTdHJpbmcmIGJvZHkpIHsgbV9ib2R5ID0gYm9keTsgfQogCiAgICAgLy8gRXZlbnRUYXJnZXQg
aW50ZXJmYWNlCiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQpA
QCAtMTQxLDkgKzE2MSwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRh
KiBldmVudFRhcmdldERhdGEoKTsKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJl
RXZlbnRUYXJnZXREYXRhKCk7CiAKLSAgICB2b2lkIHN0YXJ0TG9hZGluZygpOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZygpOworICAgIHZvaWQgc3RhcnRMb2FkaW5nSWNvbigpOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZ0ljb24oKTsKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHZv
aWQgc2hvd1Rhc2tUaW1lckZpcmVkKFRpbWVyPE5vdGlmaWNhdGlvbj4qKTsKKyNlbmRpZgorICAg
IAogICAgIGJvb2wgbV9pc0hUTUw7CiAKICAgICAvLyBUZXh0IG5vdGlmaWNhdGlvbnMuCkBAIC0x
NTgsOSArMTgyLDEwIEBAIHByaXZhdGU6CiAKICAgICBlbnVtIE5vdGlmaWNhdGlvblN0YXRlIHsK
ICAgICAgICAgSWRsZSA9IDAsCi0gICAgICAgIExvYWRpbmcgPSAxLAorICAgICAgICBMb2FkaW5n
SWNvbiA9IDEsCiAgICAgICAgIFNob3dpbmcgPSAyLAotICAgICAgICBDYW5jZWxsZWQgPSAzCisg
ICAgICAgIENhbmNlbGxlZEljb24gPSAzLAorICAgICAgICBDbG9zZWQgPSA0LAogICAgIH07CiAK
ICAgICBOb3RpZmljYXRpb25TdGF0ZSBtX3N0YXRlOwpAQCAtMTcxLDYgKzE5Niw5IEBAIHByaXZh
dGU6CiAKICAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gbV9sb2FkZXI7CiAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9pY29uRGF0YTsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAg
ICBPd25QdHI8VGltZXI8Tm90aWZpY2F0aW9uPiA+IG1fc2hvd1Rhc2tUaW1lcjsKKyNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaWRsCmluZGV4IDFmYjY3NDZkNDQ3M2NkY2Y5OTNmYWQ0NjgxODM2
OTI1MTMzODBjMjIuLjA3OWYxM2VjYTMxODM2YjFlNDJiMzk0NTI0N2YxNGQ5ODczYmRmYWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM1
LDcgKzM1LDEyIEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICAgICAgQ29uZGl0aW9uYWw9Tk9USUZJ
Q0FUSU9OU3xMRUdBQ1lfTk9USUZJQ0FUSU9OUywKICAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAog
ICAgICAgICBFdmVudFRhcmdldCwKKyNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAm
JiBFTkFCTEVfTk9USUZJQ0FUSU9OUworICAgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcg
dGl0bGUsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERpY3Rpb25hcnkgb3B0aW9u
cyksCisgICAgICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisjZWxzZQogICAg
ICAgICBPbWl0Q29uc3RydWN0b3IKKyNlbmRpZgogICAgIF0gTm90aWZpY2F0aW9uIHsKICAgICAg
ICAgdm9pZCBzaG93KCk7CiAjaWYgZGVmaW5lZChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMp
ICYmIEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgKaW5kZXggYTA0N2FiZjgxMDkyYmJhYmNm
MTY0NzYwMjAzM2JlMmYyY2Y2OGEyNy4uNDkyOTllMWEwMmE5MTFlOTMwNjI1ZDMyZmE2NDgzM2Ri
Y2MzYTFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25DZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNlbnRlci5oCkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlciA6
IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbkNlbnRlcj4sIHB1YmxpYyBBY3RpdmVECiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE5vdGlmaWNhdGlvbkNsaWVudCopOwogCisjaWYgRU5B
QkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBj
cmVhdGVIVE1MTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgVVJJLCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICB7CiAgICAgICAgIGlmICghY2xpZW50KCkpIHsKQEAgLTY1LDcgKzY2LDkgQEAgcHVi
bGljOgogICAgICAgICB9CiAgICAgICAgIHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKFVSSSksIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgZWMsIHRoaXMpOwogICAgIH0KKyNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQogICAgIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVOb3RpZmlj
YXRpb24oY29uc3QgU3RyaW5nJiBpY29uVVJJLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBT
dHJpbmcmIGJvZHksIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsKICAgICAgICAgaWYgKCFjbGll
bnQoKSkgewpAQCAtNzQsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIE5vdGlmaWNhdGlvbjo6Y3JlYXRlKHRpdGxlLCBib2R5LCBpY29uVVJJLCBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIGVjLCB0aGlzKTsKICAgICB9CisjZW5kaWYKIAogICAgIE5vdGlmaWNh
dGlvbkNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRs
IGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCmlu
ZGV4IDdiMGZjMjU1NTdjYzUwYTNiNTU3OGMzMmI4MjI0NTA5MWMxMWMyN2IuLmU1MDg0NDdkNDll
YmFhNDE5Y2ZlNzI1MDAyNGM5MzExNjJlZWRkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwKQEAgLTEsNiArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM2LDEwICszNiwxMiBA
QCBtb2R1bGUgdGhyZWFkcyB7CiAgICAgICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICAgICAgT21p
dENvbnN0cnVjdG9yCiAgICAgXSBOb3RpZmljYXRpb25DZW50ZXIgeworI2lmIGRlZmluZWQoRU5B
QkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMK
ICNpZiAhZGVmaW5lZChFTkFCTEVfVEVYVF9OT1RJRklDQVRJT05TX09OTFkpIHx8ICFFTkFCTEVf
VEVYVF9OT1RJRklDQVRJT05TX09OTFkKICAgICAgICBbVjhDdXN0b21dIE5vdGlmaWNhdGlvbiBj
cmVhdGVIVE1MTm90aWZpY2F0aW9uKGluIERPTVN0cmluZyB1cmwpIHJhaXNlcyhET01FeGNlcHRp
b24pOwogI2VuZGlmCiAgICAgICAgW1Y4Q3VzdG9tXSBOb3RpZmljYXRpb24gY3JlYXRlTm90aWZp
Y2F0aW9uKGluIERPTVN0cmluZyBpY29uVXJsLCBpbiBET01TdHJpbmcgdGl0bGUsIGluIERPTVN0
cmluZyBib2R5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyNlbmRpZgogCiAgICAgICAgaW50IGNo
ZWNrUGVybWlzc2lvbigpOwogICAgICAgIFtDdXN0b21dIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24o
aW4gVm9pZENhbGxiYWNrIGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQppbmRleCA4MTIwOTM2
MDE2Mzc0OWI3NjZmYzdiOGQzZDcwNjAyN2NiMjdkNmRhLi5jOGIxZTJkMWUzN2EwMTIwYjg5MDcw
MGE5YmQ1ODY2ZmY4NTZhODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCkBAIC0xMDgsNiArMTA4LDcg
QEAgdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNsZWFyTm90aWZpY2F0aW9ucyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgewogICAgICAgICBXZWJOb3RpZmljYXRpb24gKndlYk5vdGlmaWNhdGlvbiA9IHdl
Yk5vdGlmaWNhdGlvbnNbaV0uZ2V0KCk7CiAgICAgICAgIFtuc0lEcyBhZGRPYmplY3Q6W05TTnVt
YmVyIG51bWJlcldpdGhVbnNpZ25lZExvbmdMb25nOlt3ZWJOb3RpZmljYXRpb24gbm90aWZpY2F0
aW9uSURdXV07CisgICAgICAgIGNvcmUod2ViTm90aWZpY2F0aW9uKS0+ZmluYWxpemUoKTsKICAg
ICAgICAgbV9ub3RpZmljYXRpb25NYXAucmVtb3ZlKGNvcmUod2ViTm90aWZpY2F0aW9uKSk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggMjZlNTQwNzQ0
YmQ1Mjc0YzliNmRhY2VlYTViZjk0ZmEzYWUwNDk3My4uZTEwY2FjYjBhNjFjMzQwMmY5NjJlYWVi
NWFmNjVjZjE4MjFiNmU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApA
QCAtMTA5LDcgKzEwOSw3IEBAIGJvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhOb3Rp
ZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIHsKICNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIGlmICghbm90
aWZpY2F0aW9uIHx8ICFwYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLT5ub3RpZmljYXRpb25z
RW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIAogICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0gZ2VuZXJhdGVOb3RpZmljYXRpb25J
RCgpOwogICAgIG1fbm90aWZpY2F0aW9uTWFwLnNldChub3RpZmljYXRpb24sIG5vdGlmaWNhdGlv
bklEKTsKQEAgLTE1Myw2ICsxNTMsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNs
ZWFyTm90aWZpY2F0aW9ucyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KgogICAgICAg
ICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFw
LnRha2Uobm90aWZpY2F0aW9uSURzW2ldKTsKICAgICAgICAgaWYgKCFub3RpZmljYXRpb24pCiAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbm90aWZpY2F0aW9uLT5maW5hbGl6ZSgpOwog
ICAgICAgICBtX25vdGlmaWNhdGlvbk1hcC5yZW1vdmUobm90aWZpY2F0aW9uKTsKICAgICB9CiAg
ICAgCg==
</data>
<flag name="review"
          id="143442"
          type_id="1"
          status="+"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>