<?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>116428</bug_id>
          
          <creation_ts>2013-05-19 22:04:30 -0700</creation_ts>
          <short_desc>[WK2] Notifications clobber each other with multiple processes</short_desc>
          <delta_ts>2013-05-27 17:02:32 -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.8</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>abecsi</cc>
    
    <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>menard</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>891111</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2013-05-19 22:04:30 -0700</bug_when>
    <thetext>With multiple processes, the IDs of the notifications from the web processes can clobber over each other, leading to errant behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891112</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-05-19 22:04:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/13935191&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891220</commentid>
    <comment_count>2</comment_count>
      <attachid>202283</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2013-05-20 09:57:56 -0700</bug_when>
    <thetext>Created attachment 202283
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891222</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-20 09:59:52 -0700</bug_when>
    <thetext>Attachment 202283 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;ManualTests/notification-in-multiple-windows.html&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/DerivedSources.pri&apos;, u&apos;Source/WebKit2/GNUmakefile.list.am&apos;, u&apos;Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.messages.in&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.messages.in&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp&apos;]&quot; exit_code: 1
Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp:104:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp:109:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Total errors found: 2 in 9 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>891230</commentid>
    <comment_count>4</comment_count>
      <attachid>202283</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-20 10:20:36 -0700</bug_when>
    <thetext>Comment on attachment 202283
Patch

Attachment 202283 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/383119</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891288</commentid>
    <comment_count>5</comment_count>
      <attachid>202302</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2013-05-20 12:18:59 -0700</bug_when>
    <thetext>Created attachment 202302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891289</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-20 12:20:06 -0700</bug_when>
    <thetext>Attachment 202302 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;ManualTests/notification-in-multiple-windows.html&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/DerivedSources.make&apos;, u&apos;Source/WebKit2/DerivedSources.pri&apos;, u&apos;Source/WebKit2/GNUmakefile.list.am&apos;, u&apos;Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.messages.in&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.messages.in&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit2/WebProcess/Notifications/NotificationPermissionRequestManager.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Notifications/WebNotificationManager.cpp&apos;]&quot; exit_code: 1
Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp:104:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp:109:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Total errors found: 2 in 9 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>891863</commentid>
    <comment_count>7</comment_count>
      <attachid>202302</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-21 10:08:20 -0700</bug_when>
    <thetext>Comment on attachment 202302
Patch

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

I think all the helper functions used to extract things from the hash maps are confusing. It’s better to use local variables and name them accordingly.

&gt; Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp:206
&gt; +    for (const auto&amp; notificationItem: m_notifications) {

Unfortunately we can’t use range-for yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893875</commentid>
    <comment_count>8</comment_count>
      <attachid>202943</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2013-05-26 19:00:06 -0700</bug_when>
    <thetext>Created attachment 202943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894099</commentid>
    <comment_count>9</comment_count>
      <attachid>202943</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-27 11:26:05 -0700</bug_when>
    <thetext>Comment on attachment 202943
Patch

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

I am not sure I understand why so many different IDs are needed and the data structure so indirect. For example, why can’t we use a WebPageProxy* in the hash table key rather than a page ID? And why not have this be a per-WebPageProxy data structure that just uses the notification ID as the key and has the WebNotification object as the value. If we don’t want to store it in a WebPageProxy data member, we could still use a hash table in the notification manager proxy, but the key should just be a WebPageProxy and the values could be OwnPtr&lt;HashMap&lt;uint64_t, RefPtr&lt;WebNotification&gt;&gt;&gt;.

If I was doing this, maybe I would have a per-WePageProxy data structure, or maybe a per-WebProcessProxy one, that maps notification IDs from that process to WebNotification objects. I don’t think we need a global notification ID.

I’m going to say review+ but I think we can simplify this in the future.

&gt; Source/WebKit2/ChangeLog:12
&gt; +        With multiple processes, the notification IDs, when passed up to the UI process, can clobber
&gt; +        each other. To fix this, we need to maintain a global map of notification IDs. This map is
&gt; +        keyed by its own unique notification ID, and maps to a pair containing the web page ID and that
&gt; +        web page&apos;s ID for the notification.

I don’t understand how it follows that we need a global map of notification IDs. Could WebNotificationManagerProxy instead be made into something that’s per-process?

&gt; Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp:106
&gt; -    if (!isNotificationIDValid(notificationID))
&gt; +    if (!isNotificationIDValid(pageNotificationID))
&gt;          return;

This check is important if the notification ID itself is used as a hash key and therefore we have to ensure that it’s neither 0 nor -1. But in the current patch, since the key involves both the page and the ID, this check is not needed nor do I think it’s helpful.

&gt; Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp:110
&gt; +    pair&lt;uint64_t, uint64_t&gt; notificationPairID = make_pair(webPage-&gt;pageID(), pageNotificationID);

This is a “notification ID pair”, not a “notification pair ID”.

&gt; Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp:119
&gt; -    if (!isNotificationIDValid(notificationID))
&gt; +    if (!isNotificationIDValid(pageNotificationID))
&gt;          return;

This check was important before when the notification ID itself was a hash key and therefore we had to ensure that it’s neither 0 nor -1. But now since the key involves both the page and the ID, there’s no need for this check.

&gt; Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp:121
&gt; +    const auto&amp; notificationItem = m_notifications.find(make_pair(webPage-&gt;pageID(), pageNotificationID));

Since an iterator is a scalar, this can just be &quot;auto&quot; rather than &quot;const auto&amp;&quot;.

But why use get here instead of find? With get we would get a pair with zero for both, and so the notification would be 0. I think using find makes the code harder to read.

I’d write:

    if (WebNotification* notification = m_notifications.get(make_pair(webPage-&gt;pageID(), pageNotificationID)).second.get())
        m_provider.cancel(notification);

&gt; Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp:134
&gt; +    const auto&amp; notificationItem = m_notifications.find(make_pair(webPage-&gt;pageID(), pageNotificationID));

Same comment about auto vs const auto&amp;.

But also, again why not use get?

&gt; Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp:158
&gt; +void WebNotificationManagerProxy::clearNotifications(WebPageProxy* webPage)
&gt; +{
&gt; +    clearNotifications(webPage, Vector&lt;uint64_t&gt;(), pageIDsMatch);
&gt; +}

This seems unnecessarily inefficient. We have to iterate the entire m_notifications data structure because we chose to key it only off pairs. Why not group all the notifications for a page in a page-specific hash map so we don’t have to iterate everything?

&gt; Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp:163
&gt; +void WebNotificationManagerProxy::clearNotifications(WebPageProxy* webPage, const Vector&lt;uint64_t&gt;&amp; pageNotificationIDs)
&gt; +{
&gt; +    clearNotifications(webPage, pageNotificationIDs, pageAndNotificationIDsMatch);
&gt; +}

This seems like a strange idiom. We have an indexed data structure with webPage and notification ID as keys. But instead of using that indexing, we iterate the whole thing. If we’re going to iterate the whole thing, why not use a Vector instead of a HashMap?

&gt; Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp:183
&gt; +        const pair&lt;uint64_t, uint64_t&gt;&amp; pageNotification = m_globalNotificationMap.take(*it);

There’s no need to say const pair&lt;uint64_t, uint64_t&gt;&amp; here. The const&amp; doesn’t help, and auto would work.

&gt; Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp:192
&gt; +    const auto&amp; it = m_globalNotificationMap.find(globalNotificationID);

Just auto would be OK here, no need for const auto&amp;.

&gt; Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp:207
&gt; +    const auto&amp; it = m_globalNotificationMap.find(globalNotificationID);

auto would be fine here, no need for const auto&amp;.

&gt; Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h:86
&gt; +    // Pair comprised of web page ID and the web process&apos;s notification ID
&gt; +    HashMap&lt;uint64_t, pair&lt;uint64_t, uint64_t&gt;&gt; m_globalNotificationMap;
&gt; +    // Key pair comprised of web page ID and the web process&apos;s notification ID; value pair comprised of global notification ID, and notification object
&gt; +    HashMap&lt;pair&lt;uint64_t, uint64_t&gt;, pair&lt;uint64_t, RefPtr&lt;WebNotification&gt;&gt;&gt; m_notifications;

These us of &quot;pair&quot; makes this code hard to read. You have to think about what the first and what the second item is. I think I might prefer to use a struct instead so the members could have meaningful names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894194</commentid>
    <comment_count>10</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2013-05-27 17:02:32 -0700</bug_when>
    <thetext>Committed r150785: &lt;http://trac.webkit.org/changeset/150785&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202283</attachid>
            <date>2013-05-20 09:57:56 -0700</date>
            <delta_ts>2013-05-20 12:18:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116428-20130520095646.patch</filename>
            <type>text/plain</type>
            <size>41235</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2E2YTcxNDU0MzdiN2Zi
YjU0YTdhODZmMGFkN2NkYzEwYTM3Yjg0Ni4uM2I0ODI0NjMxMTJmZGQ5YmI5YTI5MmUzMGFhNWZl
NmJlOTVjYjg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMy0wNS0yMCAgSm9u
IExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gTm90aWZpY2F0aW9ucyBj
bG9iYmVyIGVhY2ggb3RoZXIgd2l0aCBtdWx0aXBsZSBwcm9jZXNzZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjQyOAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTM5MzUxOTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2l0aCBtdWx0aXBsZSBwcm9jZXNzZXMsIHRoZSBub3RpZmljYXRpb24gSURz
LCB3aGVuIHBhc3NlZCB1cCB0byB0aGUgVUkgcHJvY2VzcywgY2FuIGNsb2JiZXIKKyAgICAgICAg
ZWFjaCBvdGhlci4gVG8gZml4IHRoaXMsIHdlIG5lZWQgdG8gbWFpbnRhaW4gYSBnbG9iYWwgbWFw
IG9mIG5vdGlmaWNhdGlvbiBJRHMuIFRoaXMgbWFwIGlzCisgICAgICAgIGtleWVkIGJ5IGl0cyBv
d24gdW5pcXVlIG5vdGlmaWNhdGlvbiBJRCwgYW5kIG1hcHMgdG8gYSBwYWlyIGNvbnRhaW5pbmcg
dGhlIHdlYiBwYWdlIElEIGFuZCB0aGF0CisgICAgICAgIHdlYiBwYWdlJ3MgSUQgZm9yIHRoZSBu
b3RpZmljYXRpb24uCisKKyAgICAgICAgTm93IHRoYXQgd2UgbWFpbnRhaW4gZ3JvdXBzIG9mIG5v
dGlmaWNhdGlvbnMgYmFzZWQgb24gdGhlIHdlYiBwYWdlLCB3ZSBubyBsb25nZXIgc2VuZCBJUEMg
bWVzc2FnZXMKKyAgICAgICAgZnJvbSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIHRvIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTsgaW5zdGVhZCB3ZSBzZW5kIG1lc3NhZ2VzIHRvIHRoZQorICAg
ICAgICBXZWJQYWdlUHJveHkuIFRoaXMgcmVtb3ZlcyB0aGUgbmVlZCBmb3IgV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5IHRvIGJlIGEgbWVzc2FnZSByZWNlaXZlci4KKworICAgICAgICBXaGVu
IGEgcGFnZSBjbG9zZXMsIGFsbCBvZiB0aGUgd2ViIG5vdGlmaWNhdGlvbnMgYXJlIGNsZWFyZWQg
b3V0LiBIb3dldmVyLCBieSB0aGUgdGltZSB0aGUKKyAgICAgICAgV2ViUGFnZTo6Y2xvc2UoKSBp
cyBjYWxsZWQsIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gV2ViUGFnZSBhbmQgV2ViUGFnZVByb3h5
IGlzIGRlc3Ryb3llZC4gU2luY2UKKyAgICAgICAgdGhlIFdlYlBhZ2UgaXMgdG9sZCB0byBjbG9z
ZSBmcm9tIHRoZSBVSSBwcm9jZXNzIGFueXdheSwgd2UgY2xlYXIgb3V0IHRoZSBub3RpZmljYXRp
b25zIHNlcGFyYXRlbHksCisgICAgICAgIGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgYSBtZXNzYWdl
IGZyb20gdGhlIFdlYlBhZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaDogVXBkYXRlIHRvIHRha2UgaW50byBhY2NvdW50
IHRoZQorICAgICAgICBub3RpZmljYXRpb24ncyB3ZWIgcGFnZS4gUmVtb3ZlIGluaGVyaXRhbmNl
IG9mIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlci4gRXhwb3NlIHRoZSBvcmlnaW5hbCBtZXNzYWdl
CisgICAgICAgIGhhbmRsZXJzIGFzIHB1YmxpYyBmdW5jdGlvbnMsIHNpbmNlIHRoZXkgd2lsbCBi
ZSBjYWxsZWQgZnJvbSBXZWJQYWdlUHJveHkuIEFkZCBhIG5ldyBtYXAgdGhhdAorICAgICAgICBh
c3NvY2lhdGVzIGEgZ2xvYmFsIElEIHdpdGggYSBub3RpZmljYXRpb24gSUQgdGhhdCBjYW1lIGZy
b20gYSB3ZWIgcGFnZS4KKyAgICAgICAgICAgIFRoZXJlIGFyZSBub3cgdHdvIGZsYXZvcnMgb2Yg
Y2xlYXJOb3RpZmljYXRpb25zKCkuIE9uZSBjbGVhcnMgb3V0IGFsbCBub3RpZmljYXRpb25zIGFz
c29jaWF0ZWQKKyAgICAgICAgd2l0aCBhIHdlYiBwYWdlLiBUaGlzIGlzIGNhbGxlZCB3aGVuIHRo
ZSBwYWdlIGlzIGNsb3NlZC4gVGhlIG90aGVyIGNsZWFycyBvdXQgYSBzdWJzZXQgb2YKKyAgICAg
ICAgbm90aWZpY2F0aW9ucyBhc3NvY2lhdGVkIHdpdGggYSB3ZWIgcGFnZS4gVGhpcyBpcyBjYWxs
ZWQgd2hlbiBub3RpZmljYXRpb25zIGFzc29jaWF0ZWQgd2l0aCBhIHN1Yi1mcmFtZQorICAgICAg
ICBpcyBjbG9zZWQuCisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOiBSZW1vdmVkLiBBbGwgbWVzc2FnZXMgZnJv
bQorICAgICAgICB0aGUgd2ViIHByb2Nlc3MgZ28gdG8gV2ViUGFnZVByb3h5IG5vdy4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eS5jcHA6IFVwZGF0ZSB0byB0YWtlIGludG8gYWNjb3VudCB0aGUKKyAgICAgICAgbm90aWZpY2F0
aW9uJ3Mgd2ViIHBhZ2UuCisKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVHbG9iYWxOb3RpZmlj
YXRpb25JRCk6IFRoZSBtYW5hZ2VyIHByb3h5IG5vdyBtYWludGFpbnMgaXRzIG93biBnbG9iYWwg
bm90aWZpY2F0aW9uCisgICAgICAgIElEIGdlbmVyYXRvci4KKyAgICAgICAgKFdlYktpdDo6V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkpOiBU
aGUgcHJveHkgaXMgbm8gbG9uZ2VyIGEKKyAgICAgICAgbWVzc2FnZSByZWNlaXZlci4gUmVtb3Zl
IGNvZGUgdGhhdCByZWdpc3RlcnMgaXQgYXMgc3VjaC4KKworICAgICAgICBBZGQgaGVscGVyIG1l
dGhvZHMgdG8gZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtYXBzIG1fZ2xvYmFsTm90aWZp
Y2F0aW9uTWFwIGFuZCBtX25vdGlmaWNhdGlvbnMuCisgICAgICAgIChXZWJLaXQ6OndlYlBhZ2VJ
RCk6CisgICAgICAgIChXZWJLaXQ6OnBhZ2VOb3RpZmljYXRpb25JRCk6CisgICAgICAgIChXZWJL
aXQ6Omdsb2JhbE5vdGlmaWNhdGlvbklEKToKKyAgICAgICAgKFdlYktpdDo6d2ViTm90aWZpY2F0
aW9uKToKKworICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNo
b3cpOiBSZWZhY3RvciB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlIG5vdGlmaWNhdGlvbiBJ
RAorICAgICAgICB0aGF0IGNhbWUgZnJvbSB0aGUgd2ViIHByb2Nlc3MsIGFuZCB0aGUgZ2xvYmFs
IG5vdGlmaWNhdGlvbiBJRCB0aGUgcHJveHkgbWFpbnRhaW5zLiBBZGQgdGhlIG1hcHBpbmcKKyAg
ICAgICAgZnJvbSB0aGUgZ2xvYmFsIElEIHRvIHRoZSAod2ViIHBhZ2UgSUQsIG5vdGlmaWNhdGlv
biBJRCkgcGFpci4KKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
OjpjYW5jZWwpOiBSZWZhY3RvciB0byB0YWtlIGludG8gY29uc2lkZXJhdGlvbiB0aGUgd2ViIHBh
Z2UuCisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlkRGVz
dHJveU5vdGlmaWNhdGlvbik6IFJlZmFjdG9yIHRvIHRha2UgaW50byBjb25zaWRlcmF0aW9uCisg
ICAgICAgIHRoZSB3ZWIgcGFnZS4gRml4ZXMgYSBsZWFrIHdoZXJlIHdlIGRpZCBub3QgcmVtb3Zl
IHRoZSBpdGVtIGZyb20gdGhlIG1hcHMuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkCisgICAgICAg
IGZyb20gdGhlIHdlYiBwcm9jZXNzLCB3aGVuIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGlz
IGRlc3Ryb3llZCwgc28gd2UgcmVtb3ZlIGl0IGZyb20gb3VyIG1hcHMKKyAgICAgICAgYmVmb3Jl
IHdlIHBhc3MgdGhlIG1lc3NhZ2UgYWxvbmcgdG8gdGhlIHByb3ZpZGVyLgorCisgICAgICAgIEhl
bHBlciBmdW5jdGlvbnMgdGhhdCBldmFsdWF0ZSB3aGVuIGEgZ2l2ZW4gbm90aWZpY2F0aW9uIGlu
IHRoZSBtYXAgbWF0Y2hlcyB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzLgorICAgICAgICAoV2ViS2l0
OjpwYWdlSURzTWF0Y2gpOiBUaGUgbm90aWZpY2F0aW9uIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUg
cHJvdmlkZWQgcGFnZS4KKyAgICAgICAgKFdlYktpdDo6cGFnZUFuZE5vdGlmaWNhdGlvbklEc01h
dGNoKTogVGhlIG5vdGlmaWNhdGlvbiBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIHBh
Z2UgYW5kIGlzCisgICAgICAgIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGxpc3Qgb2YgcHJvdmlkZWQg
bm90aWZpY2F0aW9ucy4KKworICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyk6IENoYW5nZWQgdG8gb25seSByZW1vdmUgbm90aWZp
Y2F0aW9ucworICAgICAgICBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIHdlYiBwYWdlLCBh
bmQgY291bGQgaW5jbHVkZSBhIHNwZWNpZmljIGxpc3Qgb2Ygbm90aWZpY2F0aW9ucy4gVGhpcyBs
YXR0ZXIKKyAgICAgICAgc2l0dWF0aW9uIG9jY3VycyBpZiBub3RpZmljYXRpb25zIHdlcmUgYXNz
b2NpYXRlZCB3aXRoIGFuIGlmcmFtZSwgYW5kIHRoYXQgaWZyYW1lIHdhcyByZW1vdmVkLgorICAg
ICAgICBUaGVyZSBpcyBhbiBPKG4pIHdhbGsgdGhhdCBjb3VsZCBiZSBtYWtlIG1vcmUgZWZmaWNp
ZW50IHVzaW5nIGFub3RoZXIgaGFzaCBtYXAsIGJ1dCB0aGF0J3Mgb3ZlcmhlYWQKKyAgICAgICAg
Zm9yIGEgbWFwIHRoYXQgc2hvdWxkIGJlIHNtYWxsIGluIHNpemUgYW55d2F5LgorCisgICAgICAg
IChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRTaG93Tm90
aWZpY2F0aW9uKTogUmVmYWN0b3IgdG8gdGFrZSBpbnRvCisgICAgICAgIGNvbnNpZGVyYXRpb24g
dGhlIHdlYiBwYWdlLgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24pOiBSZWZhY3RvciB0byB0YWtlIGludG8K
KyAgICAgICAgY29uc2lkZXJhdGlvbiB0aGUgd2ViIHBhZ2UuCisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMp
OiBOb3cgd2UgbmVlZCB0byBjb21iIHRocm91Z2gKKyAgICAgICAgdGhlIGxpc3Qgb2YgZ2xvYmFs
IElEcyBhbmQgcHV0IHRoZW0gaW4gYnVja2V0cyBiYXNlZCBvbiB0aGUgbm90aWZpY2F0aW9uJ3Mg
d2ViIHBhZ2VzLiBBZnRlciB0aGF0CisgICAgICAgIGlzIGRvbmUgd2UgY2FuIHNlbmQgdGhlIERp
ZENsb3NlTm90aWZpY2F0aW9ucygpIHRvIHRob3NlIHBhZ2VzJyBwcm9jZXNzZXMuIFRoZXJlIGlz
IGEgcG9zc2libGUKKyAgICAgICAgZXh0cmEgb3B0aW1pemF0aW9uIGhlcmUgd2hlcmUgd2UgZ3Jv
dXAgYmFzZWQgb24gdGhlIHBhZ2UncyBwcm9jZXNzIGluc3RlYWQsIHRvIHJlZHVjZSB0aGUgbnVt
YmVyCisgICAgICAgIG9mIG1lc3NhZ2VzIHNlbnQgdG8gcHJvY2Vzc2VzLgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Y2xvc2UpOiBXaGVuIGEgd2ViIHBhZ2UgaXMgY2xvc2VkLCB3ZSBjbGVhciB0aGUgbm90aWZp
Y2F0aW9ucyBhc3NvY2lhdGVkCisgICAgICAgIHdpdGggdGhlIHBhZ2UuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y2FuY2VsTm90aWZpY2F0aW9uKTogRm9yd2FyZCBjYWxsIHRvIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpjbGVhck5vdGlmaWNhdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlm
aWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24pOgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6IFJlbW92ZSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4gYW5kIHJlbGF0ZWQgZmlsZXMuCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJp
OiBEaXR0by4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAg
KiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIFdl
YlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuY3BwOiBSZW1vdmUgZXh0cmFuZW91cyBpbmNsdWRlLgorCiAyMDEzLTA1LTE2ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgV0tCdW5kbGVQYWdlR2V0
SGVhZGVyTGF5ZXIvRm9vdGVyIFNQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCBlNzIzYTFlMDEx
YTQ4ZTdiM2ZkNDYxZWZmMTRjZmM3NjMxMTM4ZjM3Li4yNDVkMmE5NDgxNTEwNGRhNjRlODE2Y2M1
MzM4NWJkYjdlNDBmNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtNTQ0LDggKzU0NCw2IEBA
IHNldChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBVSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW4KIAotICAgIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgotCiAgICAgVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCiAKICAgICBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2
ZWRTb3VyY2VzLnByaSBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCA4
OWJhY2U2MDc1ZTg1YjRlYjhhYThkNzIyNmVlOWQ0YjNjZjgwOTY2Li40MDZlODJiZmM3MmM0MGVi
NTM0MjFhY2UzMzc5Mjc4M2M3NzRhMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJp
dmVkU291cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJpCkBA
IC05OSw3ICs5OSw2IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFdlYk1lZGlhQ2FjaGVN
YW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gXAogICAgIFdlYk5ldHdvcmtJbmZvTWFuYWdlci5tZXNz
YWdlcy5pbiBcCiAgICAgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gXAot
ICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBcCiAgICAgV2ViTm90
aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBcCiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXIu
bWVzc2FnZXMuaW4gXAogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4g
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggN2UyMjk2MmE4YzVlNGM0Y2VjZThi
MTY2ZDkzOGFiOGU4M2RiZTJhMC4uNGRjOTJlMWNiODQwNGI2NGZhNTRmNWUyZjk4YzZjZDY3NTA1
MTFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMTgsOCArMjE4LDYgQEAg
d2Via2l0Ml9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYk5l
dHdvcmtJbmZvTWFuYWdlclByb3h5TWVzc2FnZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCBcCi0JRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUGFnZUdyb3VwUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlBhZ2VH
cm91cFByb3h5TWVzc2FnZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJQYWdlUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkuY3BwCmluZGV4IGE3YjBmYTZkOWI4ZDc5MjIyOGQ2MTdiNDNiNjdkMzg0YjQ5NzEzMDgu
LmE2ZjMzMzU0ZTEzZDc3MWMxZDYyZjg2NDk0NjUwNWFjZmExNDA0MjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtMzEsMTUgKzMxLDIyIEBACiAjaW5j
bHVkZSAiV2ViQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbi5oIgogI2luY2x1
ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmln
aW4uaCIKIAordXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRpYyB1aW50
NjRfdCBnZW5lcmF0ZUdsb2JhbE5vdGlmaWNhdGlvbklEKCkKK3sKKyAgICBzdGF0aWMgdWludDY0
X3QgdW5pcXVlR2xvYmFsTm90aWZpY2F0aW9uSUQgPSAxOworICAgIHJldHVybiB1bmlxdWVHbG9i
YWxOb3RpZmljYXRpb25JRCsrOworfQorCiBjb25zdCBjaGFyKiBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKCkKIHsKICAgICByZXR1cm4gIldlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eSI7CkBAIC01Myw3ICs2MCw2IEBAIFBhc3NSZWZQdHI8V2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5PiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJD
CiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eShXZWJDb250ZXh0KiBjb250ZXh0KQogICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQoY29udGV4
dCkKIHsKLSAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6Y29udGV4dCgpLT5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCB0aGlzKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6
OmluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS05vdGlmaWNhdGlvblByb3ZpZGVyICpwcm92aWRl
cikKQEAgLTc5LDggKzg1LDYgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRl
cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQogICAgIEFQSU9iamVjdDo6ZGVyZWYoKTsKIH0KIAot
Ly8gQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyCi0KIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5Ojpwb3B1bGF0ZUNvcHlPZk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKEhhc2hNYXA8U3Ry
aW5nLCBib29sPiYgcGVybWlzc2lvbnMpCiB7CiAgICAgUmVmUHRyPEltbXV0YWJsZURpY3Rpb25h
cnk+IGtub3duUGVybWlzc2lvbnMgPSBtX3Byb3ZpZGVyLm5vdGlmaWNhdGlvblBlcm1pc3Npb25z
KCk7CkBAIC05Niw4MiArMTAwLDE3OCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6cG9wdWxhdGVDb3B5T2ZOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhIYXNoTWFwPAogICAgIH0K
IH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNob3coV2ViUGFnZVByb3h5
KiBwYWdlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0
cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0YWcsIGNvbnN0IFN0cmluZyYgbGFuZywgY29u
c3QgU3RyaW5nJiBkaXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCB1aW50NjRfdCBub3Rp
ZmljYXRpb25JRCkKKy8vIEhlbHBlciBtZXRob2RzIGZvciBleHRyYWN0aW5nIHRoZSBkYXRhIGZy
b20gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAKK3N0YXRpYyBpbmxpbmUgdWludDY0X3Qgd2ViUGFn
ZUlEKGNvbnN0IEhhc2hNYXA8dWludDY0X3QsIHBhaXI8dWludDY0X3QsIHVpbnQ2NF90Pj46Oml0
ZXJhdG9yJiBpdCkKIHsKLSAgICBpZiAoIWlzTm90aWZpY2F0aW9uSURWYWxpZChub3RpZmljYXRp
b25JRCkpCisgICAgcmV0dXJuIGl0LT52YWx1ZS5maXJzdDsKK30KKworc3RhdGljIGlubGluZSB1
aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQoY29uc3QgSGFzaE1hcDx1aW50NjRfdCwgcGFpcjx1
aW50NjRfdCwgdWludDY0X3Q+Pjo6aXRlcmF0b3ImIGl0KQoreworICAgIHJldHVybiBpdC0+dmFs
dWUuc2Vjb25kOworfQorCisvLyBIZWxwZXIgbWV0aG9kcyBmb3IgZXh0cmFjdGluZyB0aGUgZGF0
YSBmcm9tIG1fbm90aWZpY2F0aW9ucworc3RhdGljIGlubGluZSB1aW50NjRfdCB3ZWJQYWdlSUQo
Y29uc3QgS2V5VmFsdWVQYWlyPHBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiwgcGFpcjx1aW50NjRf
dCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+PiYgaXRlbSkKK3sKKyAgICByZXR1cm4gaXRlbS5r
ZXkuZmlyc3Q7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklE
KGNvbnN0IEtleVZhbHVlUGFpcjxwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4sIHBhaXI8dWludDY0
X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+Pj4mIGl0ZW0pCit7CisgICAgcmV0dXJuIGl0ZW0u
a2V5LnNlY29uZDsKK30KKworc3RhdGljIGlubGluZSB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRp
b25JRChjb25zdCBIYXNoTWFwPHBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiwgcGFpcjx1aW50NjRf
dCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+Pjo6aXRlcmF0b3ImIGl0KQoreworICAgIHJldHVy
biBpdC0+dmFsdWUuZmlyc3Q7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgZ2xvYmFsTm90
aWZpY2F0aW9uSUQoY29uc3QgS2V5VmFsdWVQYWlyPHBhaXI8dWludDY0X3QsIHVpbnQ2NF90Piwg
cGFpcjx1aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+PiYgaXRlbSkKK3sKKyAgICBy
ZXR1cm4gaXRlbS52YWx1ZS5maXJzdDsKK30KKworc3RhdGljIGlubGluZSBXZWJOb3RpZmljYXRp
b24qIHdlYk5vdGlmaWNhdGlvbihjb25zdCBIYXNoTWFwPHBhaXI8dWludDY0X3QsIHVpbnQ2NF90
PiwgcGFpcjx1aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+Pjo6aXRlcmF0b3ImIGl0
KQoreworICAgIHJldHVybiBpdC0+dmFsdWUuc2Vjb25kLmdldCgpOworfQorCit2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJM
LCBjb25zdCBTdHJpbmcmIHRhZywgY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBTdHJpbmcmIGRp
ciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25J
RCkKK3sKKyAgICBpZiAoIWlzTm90aWZpY2F0aW9uSURWYWxpZChwYWdlTm90aWZpY2F0aW9uSUQp
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4gbm90
aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGljb25VUkws
IHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIG5vdGlmaWNhdGlvbklEKTsKLSAgICBtX25v
dGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24pOwotICAgIG1fcHJv
dmlkZXIuc2hvdyhwYWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOworICAgIHVpbnQ2NF90IGdsb2Jh
bE5vdGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmljYXRpb25JRCgpOworICAgIFJl
ZlB0cjxXZWJOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3Jl
YXRlKHRpdGxlLCBib2R5LCBpY29uVVJMLCB0YWcsIGxhbmcsIGRpciwgb3JpZ2luU3RyaW5nLCBn
bG9iYWxOb3RpZmljYXRpb25JRCk7CisgICAgcGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IG5vdGlm
aWNhdGlvblBhaXJJRCA9IG1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNh
dGlvbklEKTsKKyAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90aWZpY2F0
aW9uSUQsIG5vdGlmaWNhdGlvblBhaXJJRCk7CisgICAgbV9ub3RpZmljYXRpb25zLnNldChub3Rp
ZmljYXRpb25QYWlySUQsIG1ha2VfcGFpcihnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0
aW9uKSk7CisgICAgbV9wcm92aWRlci5zaG93KHdlYlBhZ2UsIG5vdGlmaWNhdGlvbi5nZXQoKSk7
CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjYW5jZWwodWludDY0X3Qg
bm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2Vs
KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEKQogewot
ICAgIGlmICghaXNOb3RpZmljYXRpb25JRFZhbGlkKG5vdGlmaWNhdGlvbklEKSkKKyAgICBpZiAo
IWlzTm90aWZpY2F0aW9uSURWYWxpZChwYWdlTm90aWZpY2F0aW9uSUQpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlm
aWNhdGlvbnMuZ2V0KG5vdGlmaWNhdGlvbklEKTsKLSAgICBpZiAoIW5vdGlmaWNhdGlvbikKKyAg
ICBjb25zdCBhdXRvJiBub3RpZmljYXRpb25JdGVtID0gbV9ub3RpZmljYXRpb25zLmZpbmQobWFr
ZV9wYWlyKHdlYlBhZ2UtPnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0aW9uSUQpKTsKKyAgICBpZiAo
bm90aWZpY2F0aW9uSXRlbSA9PSBtX25vdGlmaWNhdGlvbnMuZW5kKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcHJvdmlkZXIuY2FuY2VsKG5vdGlmaWNhdGlvbi5nZXQoKSk7CisgICAgbV9w
cm92aWRlci5jYW5jZWwod2ViTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbkl0ZW0pKTsKIH0KICAg
ICAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0
aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCB1aW50
NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgaWYgKCFpc05vdGlmaWNhdGlvbklEVmFs
aWQobm90aWZpY2F0aW9uSUQpKQorICAgIGlmICghaXNOb3RpZmljYXRpb25JRFZhbGlkKHBhZ2VO
b3RpZmljYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxXZWJOb3RpZmlj
YXRpb24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy50YWtlKG5vdGlmaWNhdGlvbklE
KTsKLSAgICBpZiAoIW5vdGlmaWNhdGlvbikKKyAgICBjb25zdCBhdXRvJiBub3RpZmljYXRpb25J
dGVtID0gbV9ub3RpZmljYXRpb25zLmZpbmQobWFrZV9wYWlyKHdlYlBhZ2UtPnBhZ2VJRCgpLCBw
YWdlTm90aWZpY2F0aW9uSUQpKTsKKyAgICBpZiAobm90aWZpY2F0aW9uSXRlbSA9PSBtX25vdGlm
aWNhdGlvbnMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvdmlkZXIuZGlkRGVz
dHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24uZ2V0KCkpOworICAgIG1fZ2xvYmFsTm90aWZp
Y2F0aW9uTWFwLnJlbW92ZShnbG9iYWxOb3RpZmljYXRpb25JRChub3RpZmljYXRpb25JdGVtKSk7
CisgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShub3RpZmljYXRpb25JdGVtKTsKKyAgICBtX3By
b3ZpZGVyLmRpZERlc3Ryb3lOb3RpZmljYXRpb24od2ViTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlv
bkl0ZW0pKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90
aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpCitzdGF0
aWMgYm9vbCBwYWdlSURzTWF0Y2godWludDY0X3QgcGFnZUlELCB1aW50NjRfdCwgdWludDY0X3Qg
ZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpCiB7Ci0gICAgbV9wcm92aWRl
ci5jbGVhck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uSURzKTsKLSAgICBzaXplX3QgY291bnQg
PSBub3RpZmljYXRpb25JRHMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291
bnQ7ICsraSkKLSAgICAgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShub3RpZmljYXRpb25JRHNb
aV0pOworICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBhZ2VJRDsKIH0KIAotdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbih1aW50
NjRfdCBub3RpZmljYXRpb25JRCkKK3N0YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRpb25JRHNN
YXRjaCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgdWludDY0
X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3Rp
ZmljYXRpb25JRHMpCiB7Ci0gICAgaWYgKCFjb250ZXh0KCkpCisgICAgcmV0dXJuIHBhZ2VJRCA9
PSBkZXNpcmVkUGFnZUlEICYmIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzLmNvbnRhaW5zKHBh
Z2VOb3RpZmljYXRpb25JRCk7Cit9CisKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
OjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlKQoreworICAgIGNsZWFy
Tm90aWZpY2F0aW9ucyh3ZWJQYWdlLCBWZWN0b3I8dWludDY0X3Q+KCksIHBhZ2VJRHNNYXRjaCk7
Cit9CisKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlmaWNhdGlv
bnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlTm90
aWZpY2F0aW9uSURzKQoreworICAgIGNsZWFyTm90aWZpY2F0aW9ucyh3ZWJQYWdlLCBwYWdlTm90
aWZpY2F0aW9uSURzLCBwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0Y2gpOworfQorCit2b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94
eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZU5vdGlmaWNhdGlvbklEcywg
Tm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24gZmlsdGVyRnVuY3Rpb24pCit7CisgICAgdWludDY0
X3QgcGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CisKKyAgICBWZWN0b3I8dWludDY0X3Q+IGds
b2JhbE5vdGlmaWNhdGlvbklEczsKKyAgICBnbG9iYWxOb3RpZmljYXRpb25JRHMucmVzZXJ2ZUNh
cGFjaXR5KG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNpemUoKSk7CisKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIG5vdGlmaWNhdGlvbkl0ZW06IG1fbm90aWZpY2F0aW9ucykgeworICAgICAgICBpZiAo
IWZpbHRlckZ1bmN0aW9uKHdlYlBhZ2VJRChub3RpZmljYXRpb25JdGVtKSwgcGFnZU5vdGlmaWNh
dGlvbklEKG5vdGlmaWNhdGlvbkl0ZW0pLCBwYWdlSUQsIHBhZ2VOb3RpZmljYXRpb25JRHMpKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZ2xvYmFsTm90aWZpY2F0aW9uSURzLmFw
cGVuZChnbG9iYWxOb3RpZmljYXRpb25JRChub3RpZmljYXRpb25JdGVtKSk7CisgICAgfQorCisg
ICAgZm9yICh1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRDogZ2xvYmFsTm90aWZpY2F0aW9u
SURzKSB7CisgICAgICAgIGNvbnN0IHBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiYgcGFnZU5vdGlm
aWNhdGlvbiA9IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnRha2UoZ2xvYmFsTm90aWZpY2F0aW9u
SUQpOworICAgICAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKHBhZ2VOb3RpZmljYXRpb24pOwor
ICAgIH0KKworICAgIG1fcHJvdmlkZXIuY2xlYXJOb3RpZmljYXRpb25zKGdsb2JhbE5vdGlmaWNh
dGlvbklEcyk7Cit9CisKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRl
ckRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQpCit7Cisg
ICAgY29uc3QgYXV0byYgaXQgPSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5maW5kKGdsb2JhbE5v
dGlmaWNhdGlvbklEKTsKKyAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5k
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkU2hvd05vdGlmaWNhdGlv
bihub3RpZmljYXRpb25JRCkpOworCisgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJv
Y2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRChpdCkpOworICAgIGlmICghd2ViUGFnZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgd2ViUGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRTaG93Tm90aWZpY2F0aW9uKHBhZ2VOb3RpZmljYXRp
b25JRChpdCkpLCAwKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnBy
b3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCit2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlv
bih1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCkKIHsKLSAgICBpZiAoIWNvbnRleHQoKSkK
KyAgICBjb25zdCBhdXRvJiBpdCA9IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmZpbmQoZ2xvYmFs
Tm90aWZpY2F0aW9uSUQpOworICAgIGlmIChpdCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5l
bmQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlmaWNh
dGlvbihub3RpZmljYXRpb25JRCkpOworICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZSA9IFdlYlBy
b2Nlc3NQcm94eTo6d2ViUGFnZSh3ZWJQYWdlSUQoaXQpKTsKKyAgICBpZiAoIXdlYlBhZ2UpCisg
ICAgICAgIHJldHVybjsKKworICAgIHdlYlBhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRpb24ocGFnZU5vdGlmaWNh
dGlvbklEKGl0KSksIDApOwogfQogCiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
Ojpwcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhJbW11dGFibGVBcnJheSogbm90aWZpY2F0
aW9uSURzKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xv
c2VOb3RpZmljYXRpb25zKEltbXV0YWJsZUFycmF5KiBnbG9iYWxOb3RpZmljYXRpb25JRHMpCiB7
Ci0gICAgaWYgKCFjb250ZXh0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzaXplX3Qg
c2l6ZSA9IG5vdGlmaWNhdGlvbklEcy0+c2l6ZSgpOwotICAgIAotICAgIFZlY3Rvcjx1aW50NjRf
dD4gdmVjdG9yTm90aWZpY2F0aW9uSURzOwotICAgIHZlY3Rvck5vdGlmaWNhdGlvbklEcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5KiwgVmVj
dG9yPHVpbnQ2NF90Pj4gcGFnZU5vdGlmaWNhdGlvbklEczsKICAgICAKKyAgICBzaXplX3Qgc2l6
ZSA9IGdsb2JhbE5vdGlmaWNhdGlvbklEcy0+c2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0gbm90
aWZpY2F0aW9uSURzLT5hdDxXZWJVSW50NjQ+KGkpLT52YWx1ZSgpOwotICAgICAgICB2ZWN0b3JO
b3RpZmljYXRpb25JRHMuYXBwZW5kKG5vdGlmaWNhdGlvbklEKTsKKyAgICAgICAgY29uc3QgYXV0
byYgaXQgPSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5maW5kKGdsb2JhbE5vdGlmaWNhdGlvbklE
cy0+YXQ8V2ViVUludDY0PihpKS0+dmFsdWUoKSk7CisgICAgICAgIGlmIChpdCA9PSBtX2dsb2Jh
bE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IGlmIChXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uod2Vi
UGFnZUlEKGl0KSkpIHsKKyAgICAgICAgICAgIGF1dG8gcGFnZUl0ID0gcGFnZU5vdGlmaWNhdGlv
bklEcy5maW5kKHdlYlBhZ2UpOworICAgICAgICAgICAgaWYgKHBhZ2VJdCA9PSBwYWdlTm90aWZp
Y2F0aW9uSURzLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ2NF90PiBuZXdW
ZWN0b3I7CisgICAgICAgICAgICAgICAgbmV3VmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
c2l6ZSk7CisgICAgICAgICAgICAgICAgcGFnZUl0ID0gcGFnZU5vdGlmaWNhdGlvbklEcy5hZGQo
d2ViUGFnZSwgbmV3VmVjdG9yKS5pdGVyYXRvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcGFnZUl0LT52YWx1ZS5hcHBlbmQocGFnZU5vdGlmaWNhdGlvbklEKGl0KSk7CisgICAgICAg
IH0KKworICAgICAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKGl0LT52YWx1ZSk7CisgICAgICAg
IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZShpdCk7CiAgICAgfQotICAgIAotICAgIGlm
ICh2ZWN0b3JOb3RpZmljYXRpb25JRHMuc2l6ZSgpKQotICAgICAgICBjb250ZXh0KCktPnNlbmRU
b0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xvc2VO
b3RpZmljYXRpb25zKHZlY3Rvck5vdGlmaWNhdGlvbklEcykpOworCisgICAgZm9yIChjb25zdCBh
dXRvJiBpdDogcGFnZU5vdGlmaWNhdGlvbklEcykKKyAgICAgICAgaXQua2V5LT5wcm9jZXNzKCkt
PnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsb3NlTm90aWZpY2F0
aW9ucyhpdC52YWx1ZSksIDApOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6cHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xpY3koY29uc3QgV2ViU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbiwgYm9vbCBhbGxvd2VkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkuaAppbmRleCAwZmZiMmI3ODM0MTJhNDQxNTI5MTI0NTc5NmUzNDllMmYzOGNiMzg3
Li41ODkwYjVjMWIwZTRmNWQ2MGM4OTYwMWNmYTY4NmFkMWU5ZTBhMGZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBXZWJD
b250ZXh0OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CiAK
LWNsYXNzIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBUeXBlZEFQSU9iamVj
dDxBUElPYmplY3Q6OlR5cGVOb3RpZmljYXRpb25NYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRT
dXBwbGVtZW50LCBwcml2YXRlIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0
OjpUeXBlTm90aWZpY2F0aW9uTWFuYWdlcj4sIHB1YmxpYyBXZWJDb250ZXh0U3VwcGxlbWVudCB7
CiBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKQEAg
LTUzLDcgKzUzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVQcm92aWRlcihjb25z
dCBXS05vdGlmaWNhdGlvblByb3ZpZGVyKik7CiAgICAgdm9pZCBwb3B1bGF0ZUNvcHlPZk5vdGlm
aWNhdGlvblBlcm1pc3Npb25zKEhhc2hNYXA8U3RyaW5nLCBib29sPiYpOwogCi0gICAgdm9pZCBz
aG93KFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9k
eSwgY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHRhZywgY29uc3QgU3RyaW5n
JiBsYW5nLCBjb25zdCBTdHJpbmcmIGRpciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVp
bnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5KiwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25V
UkwsIGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFN0cmluZyYg
ZGlyLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlv
bklEKTsKKyAgICB2b2lkIGNhbmNlbChXZWJQYWdlUHJveHkqLCB1aW50NjRfdCBwYWdlTm90aWZp
Y2F0aW9uSUQpOworICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSopOwor
ICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMpOworICAgIHZvaWQgZGlkRGVzdHJveU5vdGlm
aWNhdGlvbihXZWJQYWdlUHJveHkqLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpOwogCiAg
ICAgdm9pZCBwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9u
SUQpOwogICAgIHZvaWQgcHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBub3Rp
ZmljYXRpb25JRCk7CkBAIC02NywyMyArNzEsMTkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViQ29udGV4dCopOwogCisgICAg
dHlwZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pKHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCB1aW50NjRfdCBkZXNpcmVkUGFnZUlELCBj
b25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcyk7CisgICAg
dm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pOwor
CiAgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERl
c3Ryb3llZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxl
bWVudCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZXJlZldlYkNvbnRleHRTdXBwbGVt
ZW50KCkgT1ZFUlJJREU7CiAKLSAgICAvLyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJikgT1ZFUlJJREU7Ci0gICAgCi0gICAgLy8gTWVzc2FnZSBoYW5k
bGVycwotICAgIHZvaWQgY2FuY2VsKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lk
IGRpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwotICAgIHZv
aWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlv
bklEcyk7Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmlj
YXRpb24+PiBXZWJOb3RpZmljYXRpb25NYXA7Ci0gICAgCiAgICAgV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIgbV9wcm92aWRlcjsKLSAgICBXZWJOb3RpZmljYXRpb25NYXAgbV9ub3RpZmljYXRpb25z
OworICAgIC8vIFBhaXIgY29tcHJpc2VkIG9mIHdlYiBwYWdlIElEIGFuZCB0aGUgd2ViIHByb2Nl
c3MncyBub3RpZmljYXRpb24gSUQKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBwYWlyPHVpbnQ2NF90
LCB1aW50NjRfdD4+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwOworICAgIC8vIEtleSBwYWlyIGNv
bXByaXNlZCBvZiB3ZWIgcGFnZSBJRCBhbmQgdGhlIHdlYiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9u
IElEOyB2YWx1ZSBwYWlyIGNvbXByaXNlZCBvZiBnbG9iYWwgbm90aWZpY2F0aW9uIElELCBhbmQg
bm90aWZpY2F0aW9uIG9iamVjdAorICAgIEhhc2hNYXA8cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+
LCBwYWlyPHVpbnQ2NF90LCBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPj4+IG1fbm90aWZpY2F0aW9u
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhMDZlOTI4MTI4M2Q1OTgyNzgyNTkwMjY2MjllYWU5OTMyYzZkYjY1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLQotbWVzc2FnZXMgLT4gV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5IHsKLSAgICBDYW5jZWwodWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwotICAgIERpZERlc3Ry
b3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwotICAgIENsZWFyTm90aWZp
Y2F0aW9ucyhWZWN0b3I8dWludDY0X3Q+IG5vdGlmaWNhdGlvbklEcyk7Ci19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGMxMWVlNDI2N2M0OGZlYTliMTcy
OGU1NzQ4ODZkZTBmYTViOTkyZDMuLmQ1ZDFhMDY1ZWJhMmUxZmYxMjM0YTFjNThiMjMwZTZjZWMy
ZTQ2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01
OTAsNiArNTkwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICNlbmRpZgogCiAgICAg
bV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaW52YWxpZGF0ZVJlcXVlc3Rz
KCk7CisgICAgbV9wcm9jZXNzLT5jb250ZXh0KCktPnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5PigpLT5jbGVhck5vdGlmaWNhdGlvbnModGhpcyk7CiAKICAgICBtX3Rvb2xU
aXAgPSBTdHJpbmcoKTsKIApAQCAtNDA1OSw2ICs0MDYwLDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9k
eSwgY29uCiAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCktPnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5PigpLT5zaG93KHRoaXMsIHRpdGxlLCBib2R5LCBpY29uVVJMLCB0YWcs
IGxhbmcsIGRpciwgb3JpZ2luU3RyaW5nLCBub3RpZmljYXRpb25JRCk7CiB9CiAKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpjYW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCit7
CisgICAgbV9wcm9jZXNzLT5jb250ZXh0KCktPnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5PigpLT5jYW5jZWwodGhpcywgbm90aWZpY2F0aW9uSUQpOworfQorCit2b2lkIFdl
YlBhZ2VQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5v
dGlmaWNhdGlvbklEcykKK3sKKyAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+c3VwcGxlbWVudDxX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNsZWFyTm90aWZpY2F0aW9ucyh0aGlzLCBu
b3RpZmljYXRpb25JRHMpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGVzdHJveU5vdGlm
aWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkKK3sKKyAgICBtX3Byb2Nlc3MtPmNvbnRl
eHQoKS0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmRpZERlc3Ry
b3lOb3RpZmljYXRpb24odGhpcywgbm90aWZpY2F0aW9uSUQpOworfQorCiBmbG9hdCBXZWJQYWdl
UHJveHk6OmhlYWRlckhlaWdodChXZWJGcmFtZVByb3h5KiBmcmFtZSkKIHsKICAgICBpZiAoZnJh
bWUtPmlzRGlzcGxheWluZ1BERkRvY3VtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggOTVlMWNkODFkNWU2ZDNlOGJiYzY3MzBlZWQ3OTgxMjY4MTY2MTI1
ZS4uZGRiMzlkMzI0Zjk4OWNkNGFjMDg1M2YyODFjZTMwMzM4OGE4ODRmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODcyLDcgKzg3MiwxMCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCByZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbih1aW50NjRfdCBub3Rp
ZmljYXRpb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpOwogICAgIHZvaWQgc2hvd05v
dGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0
IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0YWcsIGNvbnN0IFN0cmluZyYgbGFuZywg
Y29uc3QgU3RyaW5nJiBkaXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCB1aW50NjRfdCBu
b3RpZmljYXRpb25JRCk7Ci0gICAgCisgICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24odWludDY0
X3Qgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZl
Y3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcyk7CisgICAgdm9pZCBkaWREZXN0cm95Tm90
aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKKwogI2lmIFVTRShUSUxFRF9CQUNL
SU5HX1NUT1JFKQogICAgIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKTsKICAgICB2b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggZDVjYTA0MGQ2NjZjM2QwZDU1NGE5MWI3YWI2NTBkZTRmNTNlMzg0ZS4uNGUyNDE1ZmUyM2Fh
ZTM4OGQ5YmU4NzJkZWMzYTc0ZDhlNWQ5NjI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMjAsNiArMjIwLDkgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAjIE5vdGlmaWNhdGlvbiBtZXNzYWdlcwogICAg
IFJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgV1RGOjpT
dHJpbmcgb3JpZ2luSWRlbnRpZmllcikKICAgICBTaG93Tm90aWZpY2F0aW9uKFdURjo6U3RyaW5n
IHRpdGxlLCBXVEY6OlN0cmluZyBib2R5LCBXVEY6OlN0cmluZyBpY29uVVJMLCBXVEY6OlN0cmlu
ZyB0YWcsIFdURjo6U3RyaW5nIGxhbmcsIFdURjo6U3RyaW5nIGRpciwgV1RGOjpTdHJpbmcgb3Jp
Z2luSWRlbnRpZmllciwgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCisgICAgQ2FuY2VsTm90aWZp
Y2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQorICAgIENsZWFyTm90aWZpY2F0aW9ucyhW
ZWN0b3I8dWludDY0X3Q+IG5vdGlmaWNhdGlvbklEcykKKyAgICBEaWREZXN0cm95Tm90aWZpY2F0
aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQogCiAgICAgIyBTcGVsbGluZyBhbmQgZ3JhbW1h
ciBtZXNzYWdlcwogI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxODkwMWI0
NTY3YWM0ZTBlZWZlY2YwNmNiMGIzYjM3NTE0ZmM1ODFmLi41N2VjNzM1NjYwODI4MGZlYmQ5ZTM0
YzkxZTViMjg4MmVhMTAyYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMjksOCArMzI5LDYgQEAKIAkJMzEzMTI2MUYxNDhG
RjgyQzAwQkEyQTM5IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzMTI2MUExNDhG
RjgyQjAwQkEyQTM5IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oICov
OyB9OwogCQkzMTMxMjYyMDE0OEZGODJDMDBCQTJBMzkgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTMx
MjYxQjE0OEZGODJCMDBCQTJBMzkgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgKi87IH07
CiAJCTMxMzEyNjIxMTQ4RkY4MkMwMEJBMkEzOSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTMxMjYxQzE0
OEZGODJCMDBCQTJBMzkgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oICovOyB9OwotCQkzMThC
RTE2NzE0NzM0MzM3MDBBOEZCQjIgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxOEJFMTY1MTQ3MzQzMzcwMEE4RkJCMiAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwotCQkzMThCRTE2ODE0NzM0MzM3MDBBOEZCQjIg
LyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOEJFMTY2MTQ3MzQzMzcwMEE4RkJCMiAv
KiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovOyB9OwogCQkzMThCRTE3
MTE0NzQzREIxMDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMThCRTE3MDE0NzQzREIxMDBBOEZC
QjIgLyogV0tOb3RpZmljYXRpb25NYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzE4QkUxNzUxNDc0M0RENzAwQThGQkIyIC8qIFdLTm90
aWZpY2F0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMThCRTE3NDE0NzQzREQ2MDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb25NYW5h
Z2VyLmNwcCAqLzsgfTsKIAkJMzE4QkUxNzcxNDc0M0U2MDAwQThGQkIyIC8qIFdLTm90aWZpY2F0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
OEJFMTc2MTQ3NDNFNjAwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbi5jcHAgKi87IH07CkBAIC0x
NzgwLDggKzE3NzgsNiBAQAogCQkzMTMxMjYxQjE0OEZGODJCMDBCQTJBMzkgLyogV2ViTm90aWZp
Y2F0aW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzEzMTI2MUMxNDhGRjgyQjAwQkEyQTM5IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTMxMjYxRDE0OEZGODJDMDBCQTJBMzkgLyog
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkzMThCRTE2NTE0NzM0MzM3MDBBOEZCQjIgLyogV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxOEJFMTY2MTQ3MzQzMzcwMEE4RkJCMiAv
KiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMThCRTE3MDE0NzQzREIxMDBBOEZCQjIgLyog
V0tOb3RpZmljYXRpb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLTm90aWZpY2F0aW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MThCRTE3NDE0NzQzREQ2MDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLTm90aWZpY2F0aW9uTWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxOEJFMTc2MTQ3NDNFNjAwMEE4RkJC
MiAvKiBXS05vdGlmaWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXS05vdGlmaWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NzkwLDcgKzE3ODYsNiBAQAogCQkzMUEyRUM0MjE0ODk5N0JFMDA4MTBENzEgLyogV2ViTm90aWZp
Y2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUEyRUM0MzE0ODk5N0JFMDA4MTBE
NzEgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxQTJFQzQ0MTQ4OTk3QkYwMDgxMEQ3MSAvKiBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTMxQTJFQzQ1MTQ4OTk3QkYwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MUEyRUM0NjE0ODk5N0MwMDA4MTBENzEgLyogV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uUHJvdmlk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUEyRUM0NzE0ODk5N0MxMDA4
MTBENzEgLyogV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzFBMkVDNEYxNDg5OTgwNTAwODEwRDcxIC8qIE5vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1NTIsNyArMzU0Nyw2IEBACiAJCQkJMzFB
MkVDNDIxNDg5OTdCRTAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvbi5oICovLAogCQkJCTMxQTJF
QzQzMTQ4OTk3QkUwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwICov
LAogCQkJCTMxQTJFQzQ0MTQ4OTk3QkYwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkuaCAqLywKLQkJCQkzMUEyRUM0NTE0ODk5N0JGMDA4MTBENzEgLyogV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCTMxQTJFQzQ2MTQ4OTk3QzAwMDgx
MEQ3MSAvKiBXZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgKi8sCiAJCQkJMzFBMkVDNDcxNDg5
OTdDMTAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmggKi8sCiAJCQkpOwpAQCAt
NTEwNSw4ICs1MDk5LDYgQEAKIAkJCQkzM0QzQTNDNzEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVk
aWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMzFCQTkyNDgxNDg4MzA4MTAw
NjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAog
CQkJCTMxQkE5MjQ5MTQ4ODMwODEwMDYyRURCNSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZXMuaCAqLywKLQkJCQkzMThCRTE2NTE0NzM0MzM3MDBBOEZCQjIgLyogV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKLQkJCQkzMThCRTE2NjE0NzM0
MzM3MDBBOEZCQjIgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLywK
IAkJCQkyOUQ1NURFRjE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovLAogCQkJCTI5RDU1REYwMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdl
R3JvdXBQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJQzBDRTcyOUUxMjQ3RTcxRDAwQkMwRUM0IC8q
IFdlYlBhZ2VNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtNTYwNyw3ICs1NTk5LDYgQEAKIAkJ
CQkzMTMxMjYyMTE0OEZGODJDMDBCQTJBMzkgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzFCQTkyNEUxNDg4MzEyNjAwNjJFREI1IC8qIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBMkVDNEIxNDg5OTdD
MjAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMzE4QkUxNjgxNDczNDMzNzAwQThGQkIyIC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUEyRUM0RTE0ODk5N0MyMDA4MTBE
NzEgLyogV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzNE
RDY4MTIzODQ2NDYwMDM2MEYzRiAvKiBXZWJOdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
ODU3RkI1MTJCODMwRTYwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTY4ODMsNyArNjg3NCw2IEBACiAJCQkJMzEzMTI2MjAxNDhGRjgyQzAwQkEy
QTM5IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFC
QTkyNEQxNDg4MzEyNjAwNjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFBMkVDNEExNDg5OTdDMjAwODEwRDcxIC8q
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkzMThC
RTE2NzE0NzM0MzM3MDBBOEZCQjIgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQTJFQzREMTQ4OTk3QzIwMDgxMEQ3
MSAvKiBXZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzg1
N0ZCNjEyQjgzMEU2MDBFREVCMkUgLyogV2ViT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQThDNzI4QzE3Mzg0NzdDMDAwQTY1NTQgLyogTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAppbmRleCBiZDY5ZjFkNDhiNzk4
YWUyMDJhMDhkMzk1YTNmOTFkMDMyY2EyMzZlLi43MWRjODI2OTg2NDdiNTc2ODVhOGRlN2Y1MWNh
NGI4YWQzYzY5OWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgogCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlci5jcHAKaW5kZXggOTU3NTBlMTk2Njk0MzQ1NzZkOWU2YWE5MDM1MDZhOWMxZTIyM2E0
OC4uMjhmMDM4ZmI3MzkzNzI2NmI5MWU2OTI2MWNjMTMyZWRmNTBhZTM1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAjaW5jbHVkZSAi
V2ViTm90aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VzLmgiCi0jaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9j
dW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbi5oPgpAQCAtMTc1LDcgKzE3
NCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsKE5vdGlmaWNhdGlvbiog
bm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogICAgIGlmICghbm90aWZpY2F0aW9uSUQpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpDYW5jZWwobm90aWZpY2F0aW9u
SUQpLCAwKTsKKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpDYW5jZWxOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdl
SUQoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwogICAgIFVOVVNF
RF9QQVJBTShwYWdlKTsKQEAgLTE4OCw5ICsxODcsOSBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KgogICAgIE5vdGlmaWNhdGlvbkNvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRp
b25Db250ZXh0TWFwLmZpbmQoY29udGV4dCk7CiAgICAgaWYgKGl0ID09IG1fbm90aWZpY2F0aW9u
Q29udGV4dE1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgVmVjdG9yPHVp
bnQ2NF90PiYgbm90aWZpY2F0aW9uSURzID0gaXQtPnZhbHVlOwotICAgIG1fcHJvY2Vzcy0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OkNs
ZWFyTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25JRHMpLCAwKTsKKyAgICBtX3Byb2Nlc3MtPmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDbGVhck5vdGlmaWNhdGlv
bnMobm90aWZpY2F0aW9uSURzKSwgcGFnZS0+cGFnZUlEKCkpOwogICAgIHNpemVfdCBjb3VudCA9
IG5vdGlmaWNhdGlvbklEcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IG1f
bm90aWZpY2F0aW9uSURNYXAudGFrZShub3RpZmljYXRpb25JRHNbaV0pOwpAQCAtMjE2LDcgKzIx
NSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlv
bihOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwKIAogICAgIG1fbm90aWZpY2F0aW9uSURNYXAu
cmVtb3ZlKG5vdGlmaWNhdGlvbklEKTsKICAgICByZW1vdmVOb3RpZmljYXRpb25Gcm9tQ29udGV4
dE1hcChub3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uKTsKLSAgICBtX3Byb2Nlc3MtPmNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpEaWRE
ZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSwgMCk7CisgICAgbV9wcm9jZXNzLT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRGVzdHJveU5vdGlm
aWNhdGlvbihub3RpZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwpkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDQzOGI3OWI1ZjM1MzJkNjdkMDA4OTZi
NWU0M2Q5NGE1YmNkYzY1NWMuLjgyMDQ2Y2U2ZTBiODlkOGZhZjlhNjhhZDg1MmVhZTdhMGMyZmQz
MDEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxMy0wNS0yMCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dL
Ml0gTm90aWZpY2F0aW9ucyBjbG9iYmVyIGVhY2ggb3RoZXIgd2l0aCBtdWx0aXBsZSBwcm9jZXNz
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjQy
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTM5MzUxOTE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNYW51YWxUZXN0cy9ub3RpZmljYXRpb24t
aW4tbXVsdGlwbGUtd2luZG93cy5odG1sOiBBZGRlZC4KKwogMjAxMy0wNS0xNiAgTWFydGluIFJv
Ymluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gW0NNYWtlXSBE
aXNhYmxlIHRoZSBzaGFkb3cgRE9NCmRpZmYgLS1naXQgYS9NYW51YWxUZXN0cy9ub3RpZmljYXRp
b24taW4tbXVsdGlwbGUtd2luZG93cy5odG1sIGIvTWFudWFsVGVzdHMvbm90aWZpY2F0aW9uLWlu
LW11bHRpcGxlLXdpbmRvd3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGZkODcxNzMxZDZlZjhjOThlNGQ5
Y2M5MzdkNWEwNWNkNGEzMTE1Ci0tLSAvZGV2L251bGwKKysrIGIvTWFudWFsVGVzdHMvbm90aWZp
Y2F0aW9uLWluLW11bHRpcGxlLXdpbmRvd3MuaHRtbApAQCAtMCwwICsxLDUyIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGJvZHk+CitPcGVuIHRoaXMgcGFnZSB0aHJvdWdoIGEgd2ViIHNl
cnZlciBpbiB0d28gdmlld3MuIElmIG5lY2Vzc2FyeSByZXF1ZXN0IHBlcm1pc3Npb24gdG8gcG9z
dCB3ZWIgbm90aWZpY2F0aW9uczogPGJ1dHRvbiBvbmNsaWNrPSJyZXF1ZXN0UGVybWlzc2lvbigp
Ij5SZXF1ZXN0IHBlcm1pc3Npb248L2J1dHRvbj48YnIvPgorVGhlbiBwb3N0IHRoaXMgcGVybWlz
c2lvbiBvbmNlIGluIGVhY2ggcGFnZS4gPGJ1dHRvbiBvbmNsaWNrPSJwb3N0Tm90aWZpY2F0aW9u
KCkiPlBvc3Qgbm90aWZpY2F0aW9uPC9idXR0b24+PGJyLz4KK0NsaWNrIG9uIHRoZSBub3RpZmlj
YXRpb24uIE9ubHkgdGhlIHNlY29uZCBub3RpZmljYXRpb24gc2hvdWxkIGJlIGNsb3NlZCBvbiB0
aGUgc2Vjb25kIHBhZ2UuCis8cCBpZD0iY29uc29sZSI+Cis8L3A+CisKKzxzY3JpcHQ+CitmdW5j
dGlvbiByZXF1ZXN0UGVybWlzc2lvbigpIHsKKyAgICBpZiAoTm90aWZpY2F0aW9uLnBlcm1pc3Np
b24gPT0gImdyYW50ZWQiKSB7CisgICAgICAgIGxvZygiTm90aWZpY2F0aW9uIGFscmVhZHkgZ3Jh
bnRlZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbG9nKCJSZXF1ZXN0aW5nIHBl
cm1pc3Npb24uLi4iKTsKKyAgICBOb3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Npb24oZnVuY3Rp
b24ocGVybWlzc2lvbikgeworICAgICAgICBpZiAoTm90aWZpY2F0aW9uLnBlcm1pc3Npb24gPT0g
ImdyYW50ZWQiKSB7CisgICAgICAgICAgICBsb2coIk5vdGlmaWNhdGlvbiBncmFudGVkIik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbG9nKCJOb3RpZmljYXRpb24g
ZGVuaWVkIik7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHBvc3ROb3RpZmljYXRpb24oKSB7Cisg
ICAgdmFyIG4gPSBuZXcgTm90aWZpY2F0aW9uKCJOb3RpZmljYXRpb24gdGl0bGUiKTsKKyAgICBu
Lm9uc2hvdyA9IG9uU2hvd0hhbmRsZXI7CisgICAgbi5vbmNsaWNrID0gb25DbGlja0hhbmRsZXI7
CisgICAgbi5vbmNsb3NlID0gb25DbG9zZUhhbmRsZXI7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNz
YWdlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwg
Kz0gbWVzc2FnZSArICI8YnIvPiI7Cit9CisKK2Z1bmN0aW9uIG9uU2hvd0hhbmRsZXIoKSB7Cisg
ICAgbG9nKCJvbnNob3cgaGFuZGxlciBjYWxsZWQiKTsKK30KKworZnVuY3Rpb24gb25DbGlja0hh
bmRsZXIoKSB7CisgICAgbG9nKCJvbmNsaWNrIGhhbmRsZXIgY2FsbGVkIik7CisgICAgdGhpcy5j
bG9zZSgpOworfQorCitmdW5jdGlvbiBvbkNsb3NlSGFuZGxlcigpIHsKKyAgICBsb2coIm9uY2xv
c2UgaGFuZGxlciBjYWxsZWQiKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202302</attachid>
            <date>2013-05-20 12:18:59 -0700</date>
            <delta_ts>2013-05-26 19:00:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116428-20130520121748.patch</filename>
            <type>text/plain</type>
            <size>41816</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzZmN2M2NWJhMTU3YjBi
ODgxMjI4MGNhZjVlMTRjNzdkMWNhYTM0MC4uNTNhNDU4NDg2ZDFmMWE2ZjlmNjRkYTFmZjk4MzI3
ZDkyOGQ2NWIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMy0wNS0yMCAgSm9u
IExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gTm90aWZpY2F0aW9ucyBj
bG9iYmVyIGVhY2ggb3RoZXIgd2l0aCBtdWx0aXBsZSBwcm9jZXNzZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjQyOAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTM5MzUxOTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2l0aCBtdWx0aXBsZSBwcm9jZXNzZXMsIHRoZSBub3RpZmljYXRpb24gSURz
LCB3aGVuIHBhc3NlZCB1cCB0byB0aGUgVUkgcHJvY2VzcywgY2FuIGNsb2JiZXIKKyAgICAgICAg
ZWFjaCBvdGhlci4gVG8gZml4IHRoaXMsIHdlIG5lZWQgdG8gbWFpbnRhaW4gYSBnbG9iYWwgbWFw
IG9mIG5vdGlmaWNhdGlvbiBJRHMuIFRoaXMgbWFwIGlzCisgICAgICAgIGtleWVkIGJ5IGl0cyBv
d24gdW5pcXVlIG5vdGlmaWNhdGlvbiBJRCwgYW5kIG1hcHMgdG8gYSBwYWlyIGNvbnRhaW5pbmcg
dGhlIHdlYiBwYWdlIElEIGFuZCB0aGF0CisgICAgICAgIHdlYiBwYWdlJ3MgSUQgZm9yIHRoZSBu
b3RpZmljYXRpb24uCisKKyAgICAgICAgTm93IHRoYXQgd2UgbWFpbnRhaW4gZ3JvdXBzIG9mIG5v
dGlmaWNhdGlvbnMgYmFzZWQgb24gdGhlIHdlYiBwYWdlLCB3ZSBubyBsb25nZXIgc2VuZCBJUEMg
bWVzc2FnZXMKKyAgICAgICAgZnJvbSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIHRvIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTsgaW5zdGVhZCB3ZSBzZW5kIG1lc3NhZ2VzIHRvIHRoZQorICAg
ICAgICBXZWJQYWdlUHJveHkuIFRoaXMgcmVtb3ZlcyB0aGUgbmVlZCBmb3IgV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5IHRvIGJlIGEgbWVzc2FnZSByZWNlaXZlci4KKworICAgICAgICBXaGVu
IGEgcGFnZSBjbG9zZXMsIGFsbCBvZiB0aGUgd2ViIG5vdGlmaWNhdGlvbnMgYXJlIGNsZWFyZWQg
b3V0LiBIb3dldmVyLCBieSB0aGUgdGltZSB0aGUKKyAgICAgICAgV2ViUGFnZTo6Y2xvc2UoKSBp
cyBjYWxsZWQsIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gV2ViUGFnZSBhbmQgV2ViUGFnZVByb3h5
IGlzIGRlc3Ryb3llZC4gU2luY2UKKyAgICAgICAgdGhlIFdlYlBhZ2UgaXMgdG9sZCB0byBjbG9z
ZSBmcm9tIHRoZSBVSSBwcm9jZXNzIGFueXdheSwgd2UgY2xlYXIgb3V0IHRoZSBub3RpZmljYXRp
b25zIHNlcGFyYXRlbHksCisgICAgICAgIGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgYSBtZXNzYWdl
IGZyb20gdGhlIFdlYlBhZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaDogVXBkYXRlIHRvIHRha2UgaW50byBhY2NvdW50
IHRoZQorICAgICAgICBub3RpZmljYXRpb24ncyB3ZWIgcGFnZS4gUmVtb3ZlIGluaGVyaXRhbmNl
IG9mIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlci4gRXhwb3NlIHRoZSBvcmlnaW5hbCBtZXNzYWdl
CisgICAgICAgIGhhbmRsZXJzIGFzIHB1YmxpYyBmdW5jdGlvbnMsIHNpbmNlIHRoZXkgd2lsbCBi
ZSBjYWxsZWQgZnJvbSBXZWJQYWdlUHJveHkuIEFkZCBhIG5ldyBtYXAgdGhhdAorICAgICAgICBh
c3NvY2lhdGVzIGEgZ2xvYmFsIElEIHdpdGggYSBub3RpZmljYXRpb24gSUQgdGhhdCBjYW1lIGZy
b20gYSB3ZWIgcGFnZS4KKyAgICAgICAgICAgIFRoZXJlIGFyZSBub3cgdHdvIGZsYXZvcnMgb2Yg
Y2xlYXJOb3RpZmljYXRpb25zKCkuIE9uZSBjbGVhcnMgb3V0IGFsbCBub3RpZmljYXRpb25zIGFz
c29jaWF0ZWQKKyAgICAgICAgd2l0aCBhIHdlYiBwYWdlLiBUaGlzIGlzIGNhbGxlZCB3aGVuIHRo
ZSBwYWdlIGlzIGNsb3NlZC4gVGhlIG90aGVyIGNsZWFycyBvdXQgYSBzdWJzZXQgb2YKKyAgICAg
ICAgbm90aWZpY2F0aW9ucyBhc3NvY2lhdGVkIHdpdGggYSB3ZWIgcGFnZS4gVGhpcyBpcyBjYWxs
ZWQgd2hlbiBub3RpZmljYXRpb25zIGFzc29jaWF0ZWQgd2l0aCBhIHN1Yi1mcmFtZQorICAgICAg
ICBpcyBjbG9zZWQuCisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOiBSZW1vdmVkLiBBbGwgbWVzc2FnZXMgZnJv
bQorICAgICAgICB0aGUgd2ViIHByb2Nlc3MgZ28gdG8gV2ViUGFnZVByb3h5IG5vdy4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eS5jcHA6IFVwZGF0ZSB0byB0YWtlIGludG8gYWNjb3VudCB0aGUKKyAgICAgICAgbm90aWZpY2F0
aW9uJ3Mgd2ViIHBhZ2UuCisKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVHbG9iYWxOb3RpZmlj
YXRpb25JRCk6IFRoZSBtYW5hZ2VyIHByb3h5IG5vdyBtYWludGFpbnMgaXRzIG93biBnbG9iYWwg
bm90aWZpY2F0aW9uCisgICAgICAgIElEIGdlbmVyYXRvci4KKyAgICAgICAgKFdlYktpdDo6V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkpOiBU
aGUgcHJveHkgaXMgbm8gbG9uZ2VyIGEKKyAgICAgICAgbWVzc2FnZSByZWNlaXZlci4gUmVtb3Zl
IGNvZGUgdGhhdCByZWdpc3RlcnMgaXQgYXMgc3VjaC4KKworICAgICAgICBBZGQgaGVscGVyIG1l
dGhvZHMgdG8gZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtYXBzIG1fZ2xvYmFsTm90aWZp
Y2F0aW9uTWFwIGFuZCBtX25vdGlmaWNhdGlvbnMuCisgICAgICAgIChXZWJLaXQ6OndlYlBhZ2VJ
RCk6CisgICAgICAgIChXZWJLaXQ6OnBhZ2VOb3RpZmljYXRpb25JRCk6CisgICAgICAgIChXZWJL
aXQ6Omdsb2JhbE5vdGlmaWNhdGlvbklEKToKKyAgICAgICAgKFdlYktpdDo6d2ViTm90aWZpY2F0
aW9uKToKKworICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNo
b3cpOiBSZWZhY3RvciB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlIG5vdGlmaWNhdGlvbiBJ
RAorICAgICAgICB0aGF0IGNhbWUgZnJvbSB0aGUgd2ViIHByb2Nlc3MsIGFuZCB0aGUgZ2xvYmFs
IG5vdGlmaWNhdGlvbiBJRCB0aGUgcHJveHkgbWFpbnRhaW5zLiBBZGQgdGhlIG1hcHBpbmcKKyAg
ICAgICAgZnJvbSB0aGUgZ2xvYmFsIElEIHRvIHRoZSAod2ViIHBhZ2UgSUQsIG5vdGlmaWNhdGlv
biBJRCkgcGFpci4KKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
OjpjYW5jZWwpOiBSZWZhY3RvciB0byB0YWtlIGludG8gY29uc2lkZXJhdGlvbiB0aGUgd2ViIHBh
Z2UuCisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlkRGVz
dHJveU5vdGlmaWNhdGlvbik6IFJlZmFjdG9yIHRvIHRha2UgaW50byBjb25zaWRlcmF0aW9uCisg
ICAgICAgIHRoZSB3ZWIgcGFnZS4gRml4ZXMgYSBsZWFrIHdoZXJlIHdlIGRpZCBub3QgcmVtb3Zl
IHRoZSBpdGVtIGZyb20gdGhlIG1hcHMuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkCisgICAgICAg
IGZyb20gdGhlIHdlYiBwcm9jZXNzLCB3aGVuIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGlz
IGRlc3Ryb3llZCwgc28gd2UgcmVtb3ZlIGl0IGZyb20gb3VyIG1hcHMKKyAgICAgICAgYmVmb3Jl
IHdlIHBhc3MgdGhlIG1lc3NhZ2UgYWxvbmcgdG8gdGhlIHByb3ZpZGVyLgorCisgICAgICAgIEhl
bHBlciBmdW5jdGlvbnMgdGhhdCBldmFsdWF0ZSB3aGVuIGEgZ2l2ZW4gbm90aWZpY2F0aW9uIGlu
IHRoZSBtYXAgbWF0Y2hlcyB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzLgorICAgICAgICAoV2ViS2l0
OjpwYWdlSURzTWF0Y2gpOiBUaGUgbm90aWZpY2F0aW9uIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUg
cHJvdmlkZWQgcGFnZS4KKyAgICAgICAgKFdlYktpdDo6cGFnZUFuZE5vdGlmaWNhdGlvbklEc01h
dGNoKTogVGhlIG5vdGlmaWNhdGlvbiBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIHBh
Z2UgYW5kIGlzCisgICAgICAgIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGxpc3Qgb2YgcHJvdmlkZWQg
bm90aWZpY2F0aW9ucy4KKworICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyk6IENoYW5nZWQgdG8gb25seSByZW1vdmUgbm90aWZp
Y2F0aW9ucworICAgICAgICBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIHdlYiBwYWdlLCBh
bmQgY291bGQgaW5jbHVkZSBhIHNwZWNpZmljIGxpc3Qgb2Ygbm90aWZpY2F0aW9ucy4gVGhpcyBs
YXR0ZXIKKyAgICAgICAgc2l0dWF0aW9uIG9jY3VycyBpZiBub3RpZmljYXRpb25zIHdlcmUgYXNz
b2NpYXRlZCB3aXRoIGFuIGlmcmFtZSwgYW5kIHRoYXQgaWZyYW1lIHdhcyByZW1vdmVkLgorICAg
ICAgICBUaGVyZSBpcyBhbiBPKG4pIHdhbGsgdGhhdCBjb3VsZCBiZSBtYWtlIG1vcmUgZWZmaWNp
ZW50IHVzaW5nIGFub3RoZXIgaGFzaCBtYXAsIGJ1dCB0aGF0J3Mgb3ZlcmhlYWQKKyAgICAgICAg
Zm9yIGEgbWFwIHRoYXQgc2hvdWxkIGJlIHNtYWxsIGluIHNpemUgYW55d2F5LgorCisgICAgICAg
IChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRTaG93Tm90
aWZpY2F0aW9uKTogUmVmYWN0b3IgdG8gdGFrZSBpbnRvCisgICAgICAgIGNvbnNpZGVyYXRpb24g
dGhlIHdlYiBwYWdlLgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24pOiBSZWZhY3RvciB0byB0YWtlIGludG8K
KyAgICAgICAgY29uc2lkZXJhdGlvbiB0aGUgd2ViIHBhZ2UuCisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMp
OiBOb3cgd2UgbmVlZCB0byBjb21iIHRocm91Z2gKKyAgICAgICAgdGhlIGxpc3Qgb2YgZ2xvYmFs
IElEcyBhbmQgcHV0IHRoZW0gaW4gYnVja2V0cyBiYXNlZCBvbiB0aGUgbm90aWZpY2F0aW9uJ3Mg
d2ViIHBhZ2VzLiBBZnRlciB0aGF0CisgICAgICAgIGlzIGRvbmUgd2UgY2FuIHNlbmQgdGhlIERp
ZENsb3NlTm90aWZpY2F0aW9ucygpIHRvIHRob3NlIHBhZ2VzJyBwcm9jZXNzZXMuIFRoZXJlIGlz
IGEgcG9zc2libGUKKyAgICAgICAgZXh0cmEgb3B0aW1pemF0aW9uIGhlcmUgd2hlcmUgd2UgZ3Jv
dXAgYmFzZWQgb24gdGhlIHBhZ2UncyBwcm9jZXNzIGluc3RlYWQsIHRvIHJlZHVjZSB0aGUgbnVt
YmVyCisgICAgICAgIG9mIG1lc3NhZ2VzIHNlbnQgdG8gcHJvY2Vzc2VzLgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Y2xvc2UpOiBXaGVuIGEgd2ViIHBhZ2UgaXMgY2xvc2VkLCB3ZSBjbGVhciB0aGUgbm90aWZp
Y2F0aW9ucyBhc3NvY2lhdGVkCisgICAgICAgIHdpdGggdGhlIHBhZ2UuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y2FuY2VsTm90aWZpY2F0aW9uKTogRm9yd2FyZCBjYWxsIHRvIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpjbGVhck5vdGlmaWNhdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlm
aWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24pOgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6IFJlbW92ZSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4gYW5kIHJlbGF0ZWQgZmlsZXMuCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJp
OiBEaXR0by4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBEaXR0by4KKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1vdmUgZXh0
cmFuZW91cyBpbmNsdWRlLgorCiAyMDEzLTA1LTE5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQnVtcCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgdmVyc2lvbiBudW1i
ZXIgc28gYXMgbm90IHRvIGJyZWFrIHNvbWUgY2xpZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRl
eCA5YWQxNTA1YWYwYTAzZmU4OWRlZTRlMzJmYmYxYzJjODBjNWEyOGNjLi41MjUzY2UzNmNhODA3
YzE3ZWQ4N2YzYzViOTJmZDQyZTM4MDFjMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtNTQy
LDggKzU0Miw2IEBAIHNldChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBVSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW4KIAotICAgIFVJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgotCiAg
ICAgVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCiAKICAg
ICBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IGQyODRmYjM4YjFiOGZmZGVkYTgxNTIzNDYzMjBlNDBmZDkyYzQ3ZDMuLmRk
N2JhMjMzNDM4NjIwNmI1ZDQwY2E2ZWVhY2Y0NWQzMTY1MDZjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdDIvRGVyaXZl
ZFNvdXJjZXMubWFrZQpAQCAtMTA0LDcgKzEwNCw2IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAog
ICAgIFdlYkluc3BlY3RvclByb3h5IFwKICAgICBXZWJNZWRpYUNhY2hlTWFuYWdlciBcCiAgICAg
V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eSBcCi0gICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5IFwKICAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIFwKICAgICBXZWJQYWdlIFwKICAgICBX
ZWJQYWdlR3JvdXBQcm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291
cmNlcy5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5wcmkKaW5kZXggOTMzOWVl
MmYzNzFjMTZjNmMxNTI4MDM5NDJlMTI2ZjQxNDcwNGFhZS4uZGMxN2ZhYWFjMGI5Y2NmZjgyOGI0
YmNkNzYxNGJiYWE2M2YxZGQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNv
dXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtOTcs
NyArOTcsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJNZWRpYUNhY2hlTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluIFwKICAgICBXZWJOZXR3b3JrSW5mb01hbmFnZXIubWVzc2FnZXMu
aW4gXAogICAgIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIFwKLSAgICBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gXAogICAgIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gXAogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3Nh
Z2VzLmluIFwKICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGRhYzI5MjUxMzgzZmFiMmM1MmU3YjliMWVm
MWMyZjEwNWI2NjBjNWYuLmE3MTczZWUwNDk5YWZlZTAzZWQ0Mjg3ZmE2OWMxMjdkMDVkZjRjMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjE0LDggKzIxNCw2IEBAIHdlYmtp
dDJfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJOZXR3b3Jr
SW5mb01hbmFnZXJQcm94eU1lc3NhZ2VzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggXAotCURlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlBhZ2VHcm91cFByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJQYWdlR3JvdXBQ
cm94eU1lc3NhZ2VzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUGFnZVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmNwcAppbmRleCBhN2IwZmE2ZDliOGQ3OTIyMjhkNjE3YjQzYjY3ZDM4NGI0OTcxMzA4Li5hNmYz
MzM1NGUxM2Q3NzFjMWQ2MmY4NjQ5NDY1MDVhY2ZhMTQwNDIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTMxLDE1ICszMSwyMiBAQAogI2luY2x1ZGUg
IldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgi
CiAKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdGF0aWMgdWludDY0X3Qg
Z2VuZXJhdGVHbG9iYWxOb3RpZmljYXRpb25JRCgpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IHVu
aXF1ZUdsb2JhbE5vdGlmaWNhdGlvbklEID0gMTsKKyAgICByZXR1cm4gdW5pcXVlR2xvYmFsTm90
aWZpY2F0aW9uSUQrKzsKK30KKwogY29uc3QgY2hhciogV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpzdXBwbGVtZW50TmFtZSgpCiB7CiAgICAgcmV0dXJuICJXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkiOwpAQCAtNTMsNyArNjAsNiBAQCBQYXNzUmVmUHRyPFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eT4gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViQwogV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2Vi
Q29udGV4dCogY29udGV4dCkKICAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KGNvbnRleHQpCiB7
Ci0gICAgV2ViQ29udGV4dFN1cHBsZW1lbnQ6OmNvbnRleHQoKS0+YWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgdGhpcyk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojppbml0
aWFsaXplUHJvdmlkZXIoY29uc3QgV0tOb3RpZmljYXRpb25Qcm92aWRlciAqcHJvdmlkZXIpCkBA
IC03OSw4ICs4NSw2IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkZXJlZldl
YkNvbnRleHRTdXBwbGVtZW50KCkKICAgICBBUElPYmplY3Q6OmRlcmVmKCk7CiB9CiAKLS8vIENv
cmVJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6cG9wdWxhdGVDb3B5T2ZOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhIYXNoTWFwPFN0cmluZywg
Ym9vbD4mIHBlcm1pc3Npb25zKQogewogICAgIFJlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBr
bm93blBlcm1pc3Npb25zID0gbV9wcm92aWRlci5ub3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwpA
QCAtOTYsODIgKzEwMCwxNzggQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnBv
cHVsYXRlQ29weU9mTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoSGFzaE1hcDwKICAgICB9CiB9CiAK
LXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQcm94eSogcGFn
ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcm
IGljb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFN0
cmluZyYgZGlyLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgdWludDY0X3Qgbm90aWZpY2F0
aW9uSUQpCisvLyBIZWxwZXIgbWV0aG9kcyBmb3IgZXh0cmFjdGluZyB0aGUgZGF0YSBmcm9tIG1f
Z2xvYmFsTm90aWZpY2F0aW9uTWFwCitzdGF0aWMgaW5saW5lIHVpbnQ2NF90IHdlYlBhZ2VJRChj
b25zdCBIYXNoTWFwPHVpbnQ2NF90LCBwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4+OjppdGVyYXRv
ciYgaXQpCiB7Ci0gICAgaWYgKCFpc05vdGlmaWNhdGlvbklEVmFsaWQobm90aWZpY2F0aW9uSUQp
KQorICAgIHJldHVybiBpdC0+dmFsdWUuZmlyc3Q7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDY0
X3QgcGFnZU5vdGlmaWNhdGlvbklEKGNvbnN0IEhhc2hNYXA8dWludDY0X3QsIHBhaXI8dWludDY0
X3QsIHVpbnQ2NF90Pj46Oml0ZXJhdG9yJiBpdCkKK3sKKyAgICByZXR1cm4gaXQtPnZhbHVlLnNl
Y29uZDsKK30KKworLy8gSGVscGVyIG1ldGhvZHMgZm9yIGV4dHJhY3RpbmcgdGhlIGRhdGEgZnJv
bSBtX25vdGlmaWNhdGlvbnMKK3N0YXRpYyBpbmxpbmUgdWludDY0X3Qgd2ViUGFnZUlEKGNvbnN0
IEtleVZhbHVlUGFpcjxwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4sIHBhaXI8dWludDY0X3QsIFJl
ZlB0cjxXZWJOb3RpZmljYXRpb24+Pj4mIGl0ZW0pCit7CisgICAgcmV0dXJuIGl0ZW0ua2V5LmZp
cnN0OworfQorCitzdGF0aWMgaW5saW5lIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRChjb25z
dCBLZXlWYWx1ZVBhaXI8cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+LCBwYWlyPHVpbnQ2NF90LCBS
ZWZQdHI8V2ViTm90aWZpY2F0aW9uPj4+JiBpdGVtKQoreworICAgIHJldHVybiBpdGVtLmtleS5z
ZWNvbmQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQo
Y29uc3QgSGFzaE1hcDxwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4sIHBhaXI8dWludDY0X3QsIFJl
ZlB0cjxXZWJOb3RpZmljYXRpb24+Pj46Oml0ZXJhdG9yJiBpdCkKK3sKKyAgICByZXR1cm4gaXQt
PnZhbHVlLmZpcnN0OworfQorCitzdGF0aWMgaW5saW5lIHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNh
dGlvbklEKGNvbnN0IEtleVZhbHVlUGFpcjxwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4sIHBhaXI8
dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+Pj4mIGl0ZW0pCit7CisgICAgcmV0dXJu
IGl0ZW0udmFsdWUuZmlyc3Q7Cit9CisKK3N0YXRpYyBpbmxpbmUgV2ViTm90aWZpY2F0aW9uKiB3
ZWJOb3RpZmljYXRpb24oY29uc3QgSGFzaE1hcDxwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4sIHBh
aXI8dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+Pj46Oml0ZXJhdG9yJiBpdCkKK3sK
KyAgICByZXR1cm4gaXQtPnZhbHVlLnNlY29uZC5nZXQoKTsKK30KKwordm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29u
c3QgU3RyaW5nJiB0YWcsIGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgU3RyaW5nJiBkaXIsIGNv
bnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpCit7
CisgICAgaWYgKCFpc05vdGlmaWNhdGlvbklEVmFsaWQocGFnZU5vdGlmaWNhdGlvbklEKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+IG5vdGlmaWNh
dGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlKHRpdGxlLCBib2R5LCBpY29uVVJMLCB0YWcs
IGxhbmcsIGRpciwgb3JpZ2luU3RyaW5nLCBub3RpZmljYXRpb25JRCk7Ci0gICAgbV9ub3RpZmlj
YXRpb25zLnNldChub3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uKTsKLSAgICBtX3Byb3ZpZGVy
LnNob3cocGFnZSwgbm90aWZpY2F0aW9uLmdldCgpKTsKKyAgICB1aW50NjRfdCBnbG9iYWxOb3Rp
ZmljYXRpb25JRCA9IGdlbmVyYXRlR2xvYmFsTm90aWZpY2F0aW9uSUQoKTsKKyAgICBSZWZQdHI8
V2ViTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0
aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFs
Tm90aWZpY2F0aW9uSUQpOworICAgIHBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmljYXRp
b25QYWlySUQgPSBtYWtlX3BhaXIod2ViUGFnZS0+cGFnZUlEKCksIHBhZ2VOb3RpZmljYXRpb25J
RCk7CisgICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2V0KGdsb2JhbE5vdGlmaWNhdGlvbklE
LCBub3RpZmljYXRpb25QYWlySUQpOworICAgIG1fbm90aWZpY2F0aW9ucy5zZXQobm90aWZpY2F0
aW9uUGFpcklELCBtYWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbikp
OworICAgIG1fcHJvdmlkZXIuc2hvdyh3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOwogfQog
Ci12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKHVpbnQ2NF90IG5vdGlm
aWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQ
YWdlUHJveHkqIHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKLSAgICBp
ZiAoIWlzTm90aWZpY2F0aW9uSURWYWxpZChub3RpZmljYXRpb25JRCkpCisgICAgaWYgKCFpc05v
dGlmaWNhdGlvbklEVmFsaWQocGFnZU5vdGlmaWNhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRp
b25zLmdldChub3RpZmljYXRpb25JRCk7Ci0gICAgaWYgKCFub3RpZmljYXRpb24pCisgICAgY29u
c3QgYXV0byYgbm90aWZpY2F0aW9uSXRlbSA9IG1fbm90aWZpY2F0aW9ucy5maW5kKG1ha2VfcGFp
cih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklEKSk7CisgICAgaWYgKG5vdGlm
aWNhdGlvbkl0ZW0gPT0gbV9ub3RpZmljYXRpb25zLmVuZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Byb3ZpZGVyLmNhbmNlbChub3RpZmljYXRpb24uZ2V0KCkpOworICAgIG1fcHJvdmlk
ZXIuY2FuY2VsKHdlYk5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JdGVtKSk7CiB9CiAgICAgCi12
b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1
aW50NjRfdCBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgdWludDY0X3Qg
cGFnZU5vdGlmaWNhdGlvbklEKQogewotICAgIGlmICghaXNOb3RpZmljYXRpb25JRFZhbGlkKG5v
dGlmaWNhdGlvbklEKSkKKyAgICBpZiAoIWlzTm90aWZpY2F0aW9uSURWYWxpZChwYWdlTm90aWZp
Y2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8V2ViTm90aWZpY2F0aW9u
PiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMudGFrZShub3RpZmljYXRpb25JRCk7Ci0g
ICAgaWYgKCFub3RpZmljYXRpb24pCisgICAgY29uc3QgYXV0byYgbm90aWZpY2F0aW9uSXRlbSA9
IG1fbm90aWZpY2F0aW9ucy5maW5kKG1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5v
dGlmaWNhdGlvbklEKSk7CisgICAgaWYgKG5vdGlmaWNhdGlvbkl0ZW0gPT0gbV9ub3RpZmljYXRp
b25zLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb3ZpZGVyLmRpZERlc3Ryb3lO
b3RpZmljYXRpb24obm90aWZpY2F0aW9uLmdldCgpKTsKKyAgICBtX2dsb2JhbE5vdGlmaWNhdGlv
bk1hcC5yZW1vdmUoZ2xvYmFsTm90aWZpY2F0aW9uSUQobm90aWZpY2F0aW9uSXRlbSkpOworICAg
IG1fbm90aWZpY2F0aW9ucy5yZW1vdmUobm90aWZpY2F0aW9uSXRlbSk7CisgICAgbV9wcm92aWRl
ci5kaWREZXN0cm95Tm90aWZpY2F0aW9uKHdlYk5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JdGVt
KSk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlmaWNh
dGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0aW9uSURzKQorc3RhdGljIGJv
b2wgcGFnZUlEc01hdGNoKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QsIHVpbnQ2NF90IGRlc2ly
ZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQogewotICAgIG1fcHJvdmlkZXIuY2xl
YXJOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbklEcyk7Ci0gICAgc2l6ZV90IGNvdW50ID0gbm90
aWZpY2F0aW9uSURzLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyAr
K2kpCi0gICAgICAgIG1fbm90aWZpY2F0aW9ucy5yZW1vdmUobm90aWZpY2F0aW9uSURzW2ldKTsK
KyAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7CiB9CiAKLXZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3Qg
bm90aWZpY2F0aW9uSUQpCitzdGF0aWMgYm9vbCBwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0Y2go
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQsIHVpbnQ2NF90IGRl
c2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0
aW9uSURzKQogewotICAgIGlmICghY29udGV4dCgpKQorICAgIHJldHVybiBwYWdlSUQgPT0gZGVz
aXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250YWlucyhwYWdlTm90
aWZpY2F0aW9uSUQpOworfQorCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xl
YXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSkKK3sKKyAgICBjbGVhck5vdGlm
aWNhdGlvbnMod2ViUGFnZSwgVmVjdG9yPHVpbnQ2NF90PigpLCBwYWdlSURzTWF0Y2gpOworfQor
Cit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdl
YlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZU5vdGlmaWNh
dGlvbklEcykKK3sKKyAgICBjbGVhck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgcGFnZU5vdGlmaWNh
dGlvbklEcywgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKTsKK30KKwordm9pZCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdl
YlBhZ2UsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlm
aWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZpbHRlckZ1bmN0aW9uKQoreworICAgIHVpbnQ2NF90IHBh
Z2VJRCA9IHdlYlBhZ2UtPnBhZ2VJRCgpOworCisgICAgVmVjdG9yPHVpbnQ2NF90PiBnbG9iYWxO
b3RpZmljYXRpb25JRHM7CisgICAgZ2xvYmFsTm90aWZpY2F0aW9uSURzLnJlc2VydmVDYXBhY2l0
eShtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zaXplKCkpOworCisgICAgZm9yIChjb25zdCBhdXRv
JiBub3RpZmljYXRpb25JdGVtOiBtX25vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgaWYgKCFmaWx0
ZXJGdW5jdGlvbih3ZWJQYWdlSUQobm90aWZpY2F0aW9uSXRlbSksIHBhZ2VOb3RpZmljYXRpb25J
RChub3RpZmljYXRpb25JdGVtKSwgcGFnZUlELCBwYWdlTm90aWZpY2F0aW9uSURzKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGdsb2JhbE5vdGlmaWNhdGlvbklEcy5hcHBlbmQo
Z2xvYmFsTm90aWZpY2F0aW9uSUQobm90aWZpY2F0aW9uSXRlbSkpOworICAgIH0KKworICAgIGZv
ciAodWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQ6IGdsb2JhbE5vdGlmaWNhdGlvbklEcykg
eworICAgICAgICBjb25zdCBwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRp
b24gPSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC50YWtlKGdsb2JhbE5vdGlmaWNhdGlvbklEKTsK
KyAgICAgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShwYWdlTm90aWZpY2F0aW9uKTsKKyAgICB9
CisKKyAgICBtX3Byb3ZpZGVyLmNsZWFyTm90aWZpY2F0aW9ucyhnbG9iYWxOb3RpZmljYXRpb25J
RHMpOworfQorCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRT
aG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEKQoreworICAgIGNv
bnN0IGF1dG8mIGl0ID0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZmluZChnbG9iYWxOb3RpZmlj
YXRpb25JRCk7CisgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgY29udGV4dCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFNob3dOb3RpZmljYXRpb24obm90
aWZpY2F0aW9uSUQpKTsKKworICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZSA9IFdlYlByb2Nlc3NQ
cm94eTo6d2ViUGFnZSh3ZWJQYWdlSUQoaXQpKTsKKyAgICBpZiAoIXdlYlBhZ2UpCisgICAgICAg
IHJldHVybjsKKworICAgIHdlYlBhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6RGlkU2hvd05vdGlmaWNhdGlvbihwYWdlTm90aWZpY2F0aW9uSUQo
aXQpKSwgMCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRl
ckRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWlu
dDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgaWYgKCFjb250ZXh0KCkpCisgICAg
Y29uc3QgYXV0byYgaXQgPSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5maW5kKGdsb2JhbE5vdGlm
aWNhdGlvbklEKTsKKyAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nl
cyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRpb24o
bm90aWZpY2F0aW9uSUQpKTsKKyAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQcm9jZXNz
UHJveHk6OndlYlBhZ2Uod2ViUGFnZUlEKGl0KSk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAg
ICByZXR1cm47CisKKyAgICB3ZWJQYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsaWNrTm90aWZpY2F0aW9uKHBhZ2VOb3RpZmljYXRpb25J
RChpdCkpLCAwKTsKIH0KIAogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJv
dmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoSW1tdXRhYmxlQXJyYXkqIG5vdGlmaWNhdGlvbklE
cykKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsb3NlTm90
aWZpY2F0aW9ucyhJbW11dGFibGVBcnJheSogZ2xvYmFsTm90aWZpY2F0aW9uSURzKQogewotICAg
IGlmICghY29udGV4dCgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgc2l6ZV90IHNpemUg
PSBub3RpZmljYXRpb25JRHMtPnNpemUoKTsKLSAgICAKLSAgICBWZWN0b3I8dWludDY0X3Q+IHZl
Y3Rvck5vdGlmaWNhdGlvbklEczsKLSAgICB2ZWN0b3JOb3RpZmljYXRpb25JRHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShzaXplKTsKKyAgICBIYXNoTWFwPFdlYlBhZ2VQcm94eSosIFZlY3Rvcjx1
aW50NjRfdD4+IHBhZ2VOb3RpZmljYXRpb25JRHM7CiAgICAgCisgICAgc2l6ZV90IHNpemUgPSBn
bG9iYWxOb3RpZmljYXRpb25JRHMtPnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgewotICAgICAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCA9IG5vdGlmaWNh
dGlvbklEcy0+YXQ8V2ViVUludDY0PihpKS0+dmFsdWUoKTsKLSAgICAgICAgdmVjdG9yTm90aWZp
Y2F0aW9uSURzLmFwcGVuZChub3RpZmljYXRpb25JRCk7CisgICAgICAgIGNvbnN0IGF1dG8mIGl0
ID0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZmluZChnbG9iYWxOb3RpZmljYXRpb25JRHMtPmF0
PFdlYlVJbnQ2ND4oaSktPnZhbHVlKCkpOworICAgICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3Rp
ZmljYXRpb25NYXAuZW5kKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAo
V2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJ
RChpdCkpKSB7CisgICAgICAgICAgICBhdXRvIHBhZ2VJdCA9IHBhZ2VOb3RpZmljYXRpb25JRHMu
ZmluZCh3ZWJQYWdlKTsKKyAgICAgICAgICAgIGlmIChwYWdlSXQgPT0gcGFnZU5vdGlmaWNhdGlv
bklEcy5lbmQoKSkgeworICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50NjRfdD4gbmV3VmVjdG9y
OworICAgICAgICAgICAgICAgIG5ld1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUp
OworICAgICAgICAgICAgICAgIHBhZ2VJdCA9IHBhZ2VOb3RpZmljYXRpb25JRHMuYWRkKHdlYlBh
Z2UsIG5ld1ZlY3RvcikuaXRlcmF0b3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHBh
Z2VJdC0+dmFsdWUuYXBwZW5kKHBhZ2VOb3RpZmljYXRpb25JRChpdCkpOworICAgICAgICB9CisK
KyAgICAgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShpdC0+dmFsdWUpOworICAgICAgICBtX2ds
b2JhbE5vdGlmaWNhdGlvbk1hcC5yZW1vdmUoaXQpOwogICAgIH0KLSAgICAKLSAgICBpZiAodmVj
dG9yTm90aWZpY2F0aW9uSURzLnNpemUoKSkKLSAgICAgICAgY29udGV4dCgpLT5zZW5kVG9BbGxQ
cm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsb3NlTm90aWZp
Y2F0aW9ucyh2ZWN0b3JOb3RpZmljYXRpb25JRHMpKTsKKworICAgIGZvciAoY29uc3QgYXV0byYg
aXQ6IHBhZ2VOb3RpZmljYXRpb25JRHMpCisgICAgICAgIGl0LmtleS0+cHJvY2VzcygpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbG9zZU5vdGlmaWNhdGlvbnMo
aXQudmFsdWUpLCAwKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnBy
b3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5KGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4sIGJvb2wgYWxsb3dlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5LmgKaW5kZXggMGZmYjJiNzgzNDEyYTQ0MTUyOTEyNDU3OTZlMzQ5ZTJmMzhjYjM4Ny4uNTg5
MGI1YzFiMGU0ZjVkNjBjODk2MDFjZmE2ODZhZDFlOWUwYTBmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgV2ViQ29udGV4
dDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOwogCi1jbGFz
cyBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJ
T2JqZWN0OjpUeXBlTm90aWZpY2F0aW9uTWFuYWdlcj4sIHB1YmxpYyBXZWJDb250ZXh0U3VwcGxl
bWVudCwgcHJpdmF0ZSBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlw
ZU5vdGlmaWNhdGlvbk1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQgewogcHVi
bGljOgogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CkBAIC01Myw3
ICs1MywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXplUHJvdmlkZXIoY29uc3QgV0tO
b3RpZmljYXRpb25Qcm92aWRlciopOwogICAgIHZvaWQgcG9wdWxhdGVDb3B5T2ZOb3RpZmljYXRp
b25QZXJtaXNzaW9ucyhIYXNoTWFwPFN0cmluZywgYm9vbD4mKTsKIAotICAgIHZvaWQgc2hvdyhX
ZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNv
bnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0YWcsIGNvbnN0IFN0cmluZyYgbGFu
ZywgY29uc3QgU3RyaW5nJiBkaXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCB1aW50NjRf
dCBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJMLCBj
b25zdCBTdHJpbmcmIHRhZywgY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBTdHJpbmcmIGRpciwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCk7
CisgICAgdm9pZCBjYW5jZWwoV2ViUGFnZVByb3h5KiwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlv
bklEKTsKKyAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqKTsKKyAgICB2
b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8dWludDY0
X3Q+JiBwYWdlTm90aWZpY2F0aW9uSURzKTsKKyAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRp
b24oV2ViUGFnZVByb3h5KiwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEKTsKIAogICAgIHZv
aWQgcHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsK
ICAgICB2b2lkIHByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0
aW9uSUQpOwpAQCAtNjcsMjMgKzcxLDE5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KFdlYkNvbnRleHQqKTsKIAorICAgIHR5cGVk
ZWYgYm9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3Qg
VmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpOworICAgIHZvaWQg
Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4m
IHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKTsKKwogICAg
IC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95
ZWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgp
IE9WRVJSSURFOwogCi0gICAgLy8gQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlRGVjb2RlciYpIE9WRVJSSURFOwotICAgIAotICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMK
LSAgICB2b2lkIGNhbmNlbCh1aW50NjRfdCBub3RpZmljYXRpb25JRCk7Ci0gICAgdm9pZCBkaWRE
ZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lkIGNs
ZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMp
OwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViTm90aWZpY2F0aW9u
Pj4gV2ViTm90aWZpY2F0aW9uTWFwOwotICAgIAogICAgIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
IG1fcHJvdmlkZXI7Ci0gICAgV2ViTm90aWZpY2F0aW9uTWFwIG1fbm90aWZpY2F0aW9uczsKKyAg
ICAvLyBQYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFnZSBJRCBhbmQgdGhlIHdlYiBwcm9jZXNzJ3Mg
bm90aWZpY2F0aW9uIElECisgICAgSGFzaE1hcDx1aW50NjRfdCwgcGFpcjx1aW50NjRfdCwgdWlu
dDY0X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKKyAgICAvLyBLZXkgcGFpciBjb21wcmlz
ZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5vdGlmaWNhdGlvbiBJRDsg
dmFsdWUgcGFpciBjb21wcmlzZWQgb2YgZ2xvYmFsIG5vdGlmaWNhdGlvbiBJRCwgYW5kIG5vdGlm
aWNhdGlvbiBvYmplY3QKKyAgICBIYXNoTWFwPHBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiwgcGFp
cjx1aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+PiBtX25vdGlmaWNhdGlvbnM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTA2ZTkyODEyODNkNTk4Mjc4MjU5MDI2NjI5ZWFlOTkzMmM2ZGI2NS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4K
KysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
LSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLW1lc3NhZ2VzIC0+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSB7
Ci0gICAgQ2FuY2VsKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKLSAgICBEaWREZXN0cm95Tm90
aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKLSAgICBDbGVhck5vdGlmaWNhdGlv
bnMoVmVjdG9yPHVpbnQ2NF90PiBub3RpZmljYXRpb25JRHMpOwotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmOGJkZTE0NzMxNmRlMjA2YTJlNzUwNDFk
YTU1Mjc4MDljNWIzMjJlLi4yNGVlNmExNTk1ZTgxYTM4MzUyNDNhNzBjNmEwMTA0OTUyOWMxNDhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTkxLDYg
KzU5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAjZW5kaWYKIAogICAgIG1fbm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmludmFsaWRhdGVSZXF1ZXN0cygpOwor
ICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eT4oKS0+Y2xlYXJOb3RpZmljYXRpb25zKHRoaXMpOwogCiAgICAgbV90b29sVGlwID0g
U3RyaW5nKCk7CiAKQEAgLTQwODksNiArNDA5MCwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hv
d05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNv
bgogICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eT4oKS0+c2hvdyh0aGlzLCB0aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBsYW5n
LCBkaXIsIG9yaWdpblN0cmluZywgbm90aWZpY2F0aW9uSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQ
cm94eTo6Y2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQoreworICAg
IG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eT4oKS0+Y2FuY2VsKHRoaXMsIG5vdGlmaWNhdGlvbklEKTsKK30KKwordm9pZCBXZWJQYWdl
UHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmlj
YXRpb25JRHMpCit7CisgICAgbV9wcm9jZXNzLT5jb250ZXh0KCktPnN1cHBsZW1lbnQ8V2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5jbGVhck5vdGlmaWNhdGlvbnModGhpcywgbm90aWZp
Y2F0aW9uSURzKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRp
b24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCit7CisgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkt
PnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5kaWREZXN0cm95Tm90
aWZpY2F0aW9uKHRoaXMsIG5vdGlmaWNhdGlvbklEKTsKK30KKwogZmxvYXQgV2ViUGFnZVByb3h5
OjpoZWFkZXJIZWlnaHQoV2ViRnJhbWVQcm94eSogZnJhbWUpCiB7CiAgICAgaWYgKGZyYW1lLT5p
c0Rpc3BsYXlpbmdQREZEb2N1bWVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IDE3ZDRkMTZmNWUxZTViNDE5YzRjZWI2NTAxMWI2NDg2MzVlYTE3NjkuLmI0
Y2JlYzY3NjU2ZTljZDcwMmZkNTQ3MWY4ZGE1NzExOTRhODI2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTg3NSw3ICs4NzUsMTAgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24odWludDY0X3Qgbm90aWZpY2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKTsKICAgICB2b2lkIHNob3dOb3RpZmlj
YXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJp
bmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0
IFN0cmluZyYgZGlyLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgdWludDY0X3Qgbm90aWZp
Y2F0aW9uSUQpOwotICAgIAorICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5v
dGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8
dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpOworICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNh
dGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CisKICNpZiBVU0UoVElMRURfQkFDS0lOR19T
VE9SRSkKICAgICB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50Jik7CiAgICAgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDZl
ODIwYmQ0ZWYyNDY5MjRlNGYwYTNlMmZlOGMyNmRmNDI2ZTk1M2MuLjdmMDRhYzA0ZWJmODBjYWQx
Y2ZkMjdkYzI2YjFlZjc1N2UyNjRmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIwLDYgKzIyMCw5IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBOb3RpZmljYXRpb24gbWVzc2FnZXMKICAgICBSZXF1
ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIFdURjo6U3RyaW5n
IG9yaWdpbklkZW50aWZpZXIpCiAgICAgU2hvd05vdGlmaWNhdGlvbihXVEY6OlN0cmluZyB0aXRs
ZSwgV1RGOjpTdHJpbmcgYm9keSwgV1RGOjpTdHJpbmcgaWNvblVSTCwgV1RGOjpTdHJpbmcgdGFn
LCBXVEY6OlN0cmluZyBsYW5nLCBXVEY6OlN0cmluZyBkaXIsIFdURjo6U3RyaW5nIG9yaWdpbklk
ZW50aWZpZXIsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQorICAgIENhbmNlbE5vdGlmaWNhdGlv
bih1aW50NjRfdCBub3RpZmljYXRpb25JRCkKKyAgICBDbGVhck5vdGlmaWNhdGlvbnMoVmVjdG9y
PHVpbnQ2NF90PiBub3RpZmljYXRpb25JRHMpCisgICAgRGlkRGVzdHJveU5vdGlmaWNhdGlvbih1
aW50NjRfdCBub3RpZmljYXRpb25JRCkKIAogICAgICMgU3BlbGxpbmcgYW5kIGdyYW1tYXIgbWVz
c2FnZXMKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKSAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWVhYzQwYTNkNjU3
NTc0N2IzNWZmNDJhMDZlNTFjNTBmYTgzMzA4Ni4uYWZiMTAwZDhmYmE3MjEyMzJmZGViMzc4ODRj
ZGQxYmM1NzlmNmRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMzI3LDggKzMyNyw2IEBACiAJCTMxMzEyNjFGMTQ4RkY4MkMw
MEJBMkEzOSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMzEyNjFBMTQ4RkY4MkIw
MEJBMkEzOSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCAqLzsgfTsK
IAkJMzEzMTI2MjAxNDhGRjgyQzAwQkEyQTM5IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzMTI2MUIx
NDhGRjgyQjAwQkEyQTM5IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwICovOyB9OwogCQkz
MTMxMjYyMTE0OEZGODJDMDBCQTJBMzkgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzMTI2MUMxNDhGRjgy
QjAwQkEyQTM5IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCAqLzsgfTsKLQkJMzE4QkUxNjcx
NDczNDMzNzAwQThGQkIyIC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MThCRTE2NTE0NzM0MzM3MDBBOEZCQjIgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKLQkJMzE4QkUxNjgxNDczNDMzNzAwQThGQkIyIC8qIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMThCRTE2NjE0NzM0MzM3MDBBOEZCQjIgLyogV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJMzE4QkUxNzExNDc0
M0RCMTAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE4QkUxNzAxNDc0M0RCMTAwQThGQkIyIC8q
IFdLTm90aWZpY2F0aW9uTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTMxOEJFMTc1MTQ3NDNERDcwMEE4RkJCMiAvKiBXS05vdGlmaWNh
dGlvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzE4QkUxNzQxNDc0M0RENjAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uTWFuYWdlci5j
cHAgKi87IH07CiAJCTMxOEJFMTc3MTQ3NDNFNjAwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMThCRTE3
NjE0NzQzRTYwMDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb24uY3BwICovOyB9OwpAQCAtMTc3Niw4
ICsxNzc0LDYgQEAKIAkJMzEzMTI2MUIxNDhGRjgyQjAwQkEyQTM5IC8qIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTm90
aWZpY2F0aW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzEy
NjFDMTQ4RkY4MkIwMEJBMkEzOSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEzMTI2MUQxNDhGRjgyQzAwQkEyQTM5IC8qIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMzE4QkUxNjUxNDczNDMzNzAwQThGQkIyIC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMThCRTE2NjE0NzM0MzM3MDBBOEZCQjIgLyogV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE4QkUxNzAxNDc0M0RCMTAwQThGQkIyIC8qIFdLTm90
aWZpY2F0aW9uTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05v
dGlmaWNhdGlvbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE4QkUx
NzQxNDc0M0RENjAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMThCRTE3NjE0NzQzRTYwMDBBOEZCQjIgLyog
V0tOb3RpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tOb3RpZmljYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc4Niw3
ICsxNzgyLDYgQEAKIAkJMzFBMkVDNDIxNDg5OTdCRTAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFBMkVDNDMxNDg5OTdCRTAwODEwRDcxIC8q
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMUEyRUM0NDE0ODk5N0JGMDA4MTBENzEgLyogV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMUEyRUM0NTE0ODk5N0JGMDA4MTBENzEgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFBMkVD
NDYxNDg5OTdDMDAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFBMkVDNDcxNDg5OTdDMTAwODEwRDcx
IC8qIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMxQTJFQzRGMTQ4OTk4MDUwMDgxMEQ3MSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTQ1LDcgKzM1NDAsNiBAQAogCQkJCTMxQTJFQzQy
MTQ4OTk3QkUwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb24uaCAqLywKIAkJCQkzMUEyRUM0MzE0
ODk5N0JFMDA4MTBENzEgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCAqLywKIAkJ
CQkzMUEyRUM0NDE0ODk5N0JGMDA4MTBENzEgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmggKi8sCi0JCQkJMzFBMkVDNDUxNDg5OTdCRjAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQkzMUEyRUM0NjE0ODk5N0MwMDA4MTBENzEg
LyogV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwICovLAogCQkJCTMxQTJFQzQ3MTQ4OTk3QzEw
MDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oICovLAogCQkJKTsKQEAgLTUwOTgs
OCArNTA5Miw2IEBACiAJCQkJMzNEM0EzQzcxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2Fj
aGVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovLAogCQkJCTMxQkE5MjQ4MTQ4ODMwODEwMDYyRURC
NSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkz
MUJBOTI0OTE0ODgzMDgxMDA2MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2Vz
LmggKi8sCi0JCQkJMzE4QkUxNjUxNDczNDMzNzAwQThGQkIyIC8qIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCi0JCQkJMzE4QkUxNjYxNDczNDMzNzAw
QThGQkIyIC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJ
MjlENTVERUYxNjFCRjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKIAkJCQkyOUQ1NURGMDE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFnZUdyb3Vw
UHJveHlNZXNzYWdlcy5oICovLAogCQkJCUMwQ0U3MjlFMTI0N0U3MUQwMEJDMEVDNCAvKiBXZWJQ
YWdlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTU1OTgsNyArNTU5MCw2IEBACiAJCQkJMzEz
MTI2MjExNDhGRjgyQzAwQkEyQTM5IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxQkE5MjRFMTQ4ODMxMjYwMDYyRURCNSAvKiBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQTJFQzRCMTQ4OTk3QzIwMDgx
MEQ3MSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTMxOEJFMTY4MTQ3MzQzMzcwMEE4RkJCMiAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBMkVDNEUxNDg5OTdDMjAwODEwRDcxIC8q
IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMzREQ2ODEy
Mzg0NjQ2MDAzNjBGM0YgLyogV2ViTnVtYmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzg1N0ZC
NTEyQjgzMEU2MDBFREVCMkUgLyogV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC02ODc0LDcgKzY4NjUsNiBAQAogCQkJCTMxMzEyNjIwMTQ4RkY4MkMwMEJBMkEzOSAv
KiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQkE5MjRE
MTQ4ODMxMjYwMDYyRURCNSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQTJFQzRBMTQ4OTk3QzIwMDgxMEQ3MSAvKiBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMzE4QkUxNjcx
NDczNDMzNzAwQThGQkIyIC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUEyRUM0RDE0ODk5N0MyMDA4MTBENzEgLyog
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4NTdGQjYx
MkI4MzBFNjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUE4QzcyOEMxNzM4NDc3QzAwMEE2NTU0IC8qIExvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXggYmQ2OWYxZDQ4Yjc5OGFlMjAy
YTA4ZDM5NWEzZjkxZDAzMmNhMjM2ZS4uNzFkYzgyNjk4NjQ3YjU3Njg1YThkZTdmNTFjYTRiOGFk
M2M2OTlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKIAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgotI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXIuY3BwCmluZGV4IDk1NzUwZTE5NjY5NDM0NTc2ZDllNmFhOTAzNTA2YTljMWUyMjNhNDguLjI4
ZjAzOGZiNzM5MzcyNjZiOTFlNjkyNjFjYzEzMmVkZjUwYWUzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogI2luY2x1ZGUgIldlYk5v
dGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5o
IgotI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb24uaD4KQEAgLTE3NSw3ICsxNzQsNyBA
QCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbChOb3RpZmljYXRpb24qIG5vdGlm
aWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKICAgICBpZiAoIW5vdGlmaWNhdGlvbklEKQogICAgICAg
ICByZXR1cm47CiAgICAgCi0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Q2FuY2VsKG5vdGlmaWNhdGlvbklEKSwg
MCk7CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Q2FuY2VsTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSwgcGFnZS0+cGFnZUlEKCkp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKICAgICBVTlVTRURfUEFS
QU0ocGFnZSk7CkBAIC0xODgsOSArMTg3LDkgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCoKICAg
ICBOb3RpZmljYXRpb25Db250ZXh0TWFwOjppdGVyYXRvciBpdCA9IG1fbm90aWZpY2F0aW9uQ29u
dGV4dE1hcC5maW5kKGNvbnRleHQpOwogICAgIGlmIChpdCA9PSBtX25vdGlmaWNhdGlvbkNvbnRl
eHRNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIFZlY3Rvcjx1aW50NjRf
dD4mIG5vdGlmaWNhdGlvbklEcyA9IGl0LT52YWx1ZTsKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpDbGVhck5v
dGlmaWNhdGlvbnMobm90aWZpY2F0aW9uSURzKSwgMCk7CisgICAgbV9wcm9jZXNzLT5jb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2xlYXJOb3RpZmljYXRpb25zKG5v
dGlmaWNhdGlvbklEcyksIHBhZ2UtPnBhZ2VJRCgpKTsKICAgICBzaXplX3QgY291bnQgPSBub3Rp
ZmljYXRpb25JRHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkgewogICAgICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlm
aWNhdGlvbklETWFwLnRha2Uobm90aWZpY2F0aW9uSURzW2ldKTsKQEAgLTIxNiw3ICsyMTUsNyBA
QCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oTm90
aWZpY2F0aW9uKiBub3RpZmljYXRpb24sCiAKICAgICBtX25vdGlmaWNhdGlvbklETWFwLnJlbW92
ZShub3RpZmljYXRpb25JRCk7CiAgICAgcmVtb3ZlTm90aWZpY2F0aW9uRnJvbUNvbnRleHRNYXAo
bm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbik7Ci0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6RGlkRGVzdHJv
eU5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCksIDApOworICAgIG1fcHJvY2Vzcy0+Y29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZERlc3Ryb3lOb3RpZmljYXRp
b24obm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShub3RpZmljYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKZGlmZiAtLWdpdCBh
L0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlZTY3OThkN2U2NzMyZWU3YzE1Y2RkNTczM2Rl
MjM1N2I2YWI1Y2MxLi4xZDU4NzliZDc1MzA5MjlkNGQ5NzRjNmI1ZDYyZjZmOWZhZGJjMmJhIDEw
MDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTMtMDUtMjAgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIE5v
dGlmaWNhdGlvbnMgY2xvYmJlciBlYWNoIG90aGVyIHdpdGggbXVsdGlwbGUgcHJvY2Vzc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY0MjgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEzOTM1MTkxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWFudWFsVGVzdHMvbm90aWZpY2F0aW9uLWluLW11
bHRpcGxlLXdpbmRvd3MuaHRtbDogQWRkZWQuCisKIDIwMTMtMDUtMjAgIENocmlzdG9waGUgRHVt
ZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFJlZW5hYmxl
ZCBJTkRFWEVEX0RBVEFCQVNFIGFmdGVyIHIxNTAzNDQKZGlmZiAtLWdpdCBhL01hbnVhbFRlc3Rz
L25vdGlmaWNhdGlvbi1pbi1tdWx0aXBsZS13aW5kb3dzLmh0bWwgYi9NYW51YWxUZXN0cy9ub3Rp
ZmljYXRpb24taW4tbXVsdGlwbGUtd2luZG93cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwZmQ4NzE3MzFk
NmVmOGM5OGU0ZDljYzkzN2Q1YTA1Y2Q0YTMxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9NYW51YWxU
ZXN0cy9ub3RpZmljYXRpb24taW4tbXVsdGlwbGUtd2luZG93cy5odG1sCkBAIC0wLDAgKzEsNTIg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KK09wZW4gdGhpcyBwYWdlIHRocm91
Z2ggYSB3ZWIgc2VydmVyIGluIHR3byB2aWV3cy4gSWYgbmVjZXNzYXJ5IHJlcXVlc3QgcGVybWlz
c2lvbiB0byBwb3N0IHdlYiBub3RpZmljYXRpb25zOiA8YnV0dG9uIG9uY2xpY2s9InJlcXVlc3RQ
ZXJtaXNzaW9uKCkiPlJlcXVlc3QgcGVybWlzc2lvbjwvYnV0dG9uPjxici8+CitUaGVuIHBvc3Qg
dGhpcyBwZXJtaXNzaW9uIG9uY2UgaW4gZWFjaCBwYWdlLiA8YnV0dG9uIG9uY2xpY2s9InBvc3RO
b3RpZmljYXRpb24oKSI+UG9zdCBub3RpZmljYXRpb248L2J1dHRvbj48YnIvPgorQ2xpY2sgb24g
dGhlIG5vdGlmaWNhdGlvbi4gT25seSB0aGUgc2Vjb25kIG5vdGlmaWNhdGlvbiBzaG91bGQgYmUg
Y2xvc2VkIG9uIHRoZSBzZWNvbmQgcGFnZS4KKzxwIGlkPSJjb25zb2xlIj4KKzwvcD4KKworPHNj
cmlwdD4KK2Z1bmN0aW9uIHJlcXVlc3RQZXJtaXNzaW9uKCkgeworICAgIGlmIChOb3RpZmljYXRp
b24ucGVybWlzc2lvbiA9PSAiZ3JhbnRlZCIpIHsKKyAgICAgICAgbG9nKCJOb3RpZmljYXRpb24g
YWxyZWFkeSBncmFudGVkIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsb2coIlJl
cXVlc3RpbmcgcGVybWlzc2lvbi4uLiIpOworICAgIE5vdGlmaWNhdGlvbi5yZXF1ZXN0UGVybWlz
c2lvbihmdW5jdGlvbihwZXJtaXNzaW9uKSB7CisgICAgICAgIGlmIChOb3RpZmljYXRpb24ucGVy
bWlzc2lvbiA9PSAiZ3JhbnRlZCIpIHsKKyAgICAgICAgICAgIGxvZygiTm90aWZpY2F0aW9uIGdy
YW50ZWQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBsb2coIk5v
dGlmaWNhdGlvbiBkZW5pZWQiKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gcG9zdE5vdGlmaWNh
dGlvbigpIHsKKyAgICB2YXIgbiA9IG5ldyBOb3RpZmljYXRpb24oIk5vdGlmaWNhdGlvbiB0aXRs
ZSIpOworICAgIG4ub25zaG93ID0gb25TaG93SGFuZGxlcjsKKyAgICBuLm9uY2xpY2sgPSBvbkNs
aWNrSGFuZGxlcjsKKyAgICBuLm9uY2xvc2UgPSBvbkNsb3NlSGFuZGxlcjsKK30KKworZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIp
LmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxici8+IjsKK30KKworZnVuY3Rpb24gb25TaG93SGFu
ZGxlcigpIHsKKyAgICBsb2coIm9uc2hvdyBoYW5kbGVyIGNhbGxlZCIpOworfQorCitmdW5jdGlv
biBvbkNsaWNrSGFuZGxlcigpIHsKKyAgICBsb2coIm9uY2xpY2sgaGFuZGxlciBjYWxsZWQiKTsK
KyAgICB0aGlzLmNsb3NlKCk7Cit9CisKK2Z1bmN0aW9uIG9uQ2xvc2VIYW5kbGVyKCkgeworICAg
IGxvZygib25jbG9zZSBoYW5kbGVyIGNhbGxlZCIpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202943</attachid>
            <date>2013-05-26 19:00:06 -0700</date>
            <delta_ts>2013-05-27 11:26:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116428-20130526185847.patch</filename>
            <type>text/plain</type>
            <size>40918</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDBkYmFiMjVjNDMzYTBm
NTczYmY4YTQ5N2MxNmVmYWNmMDc2MmI3Ny4uYzEwZWQxODVlYmFmNTUxMTVjY2Q3YmRmYjk3NTFm
ZDY0N2NhYTM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEzLTA1LTI2ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBOb3RpZmljYXRpb25zIGNs
b2JiZXIgZWFjaCBvdGhlciB3aXRoIG11bHRpcGxlIHByb2Nlc3NlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2NDI4CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xMzkzNTE5MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXaXRoIG11bHRpcGxlIHByb2Nlc3NlcywgdGhlIG5vdGlmaWNhdGlvbiBJRHMs
IHdoZW4gcGFzc2VkIHVwIHRvIHRoZSBVSSBwcm9jZXNzLCBjYW4gY2xvYmJlcgorICAgICAgICBl
YWNoIG90aGVyLiBUbyBmaXggdGhpcywgd2UgbmVlZCB0byBtYWludGFpbiBhIGdsb2JhbCBtYXAg
b2Ygbm90aWZpY2F0aW9uIElEcy4gVGhpcyBtYXAgaXMKKyAgICAgICAga2V5ZWQgYnkgaXRzIG93
biB1bmlxdWUgbm90aWZpY2F0aW9uIElELCBhbmQgbWFwcyB0byBhIHBhaXIgY29udGFpbmluZyB0
aGUgd2ViIHBhZ2UgSUQgYW5kIHRoYXQKKyAgICAgICAgd2ViIHBhZ2UncyBJRCBmb3IgdGhlIG5v
dGlmaWNhdGlvbi4KKworICAgICAgICBOb3cgdGhhdCB3ZSBtYWludGFpbiBncm91cHMgb2Ygbm90
aWZpY2F0aW9ucyBiYXNlZCBvbiB0aGUgd2ViIHBhZ2UsIHdlIG5vIGxvbmdlciBzZW5kIElQQyBt
ZXNzYWdlcworICAgICAgICBmcm9tIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgdG8gV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OyBpbnN0ZWFkIHdlIHNlbmQgbWVzc2FnZXMgdG8gdGhlCisgICAg
ICAgIFdlYlBhZ2VQcm94eS4gVGhpcyByZW1vdmVzIHRoZSBuZWVkIGZvciBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkgdG8gYmUgYSBtZXNzYWdlIHJlY2VpdmVyLgorCisgICAgICAgIFdoZW4g
YSBwYWdlIGNsb3NlcywgYWxsIG9mIHRoZSB3ZWIgbm90aWZpY2F0aW9ucyBhcmUgY2xlYXJlZCBv
dXQuIEhvd2V2ZXIsIGJ5IHRoZSB0aW1lIHRoZQorICAgICAgICBXZWJQYWdlOjpjbG9zZSgpIGlz
IGNhbGxlZCwgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBXZWJQYWdlIGFuZCBXZWJQYWdlUHJveHkg
aXMgZGVzdHJveWVkLiBTaW5jZQorICAgICAgICB0aGUgV2ViUGFnZSBpcyB0b2xkIHRvIGNsb3Nl
IGZyb20gdGhlIFVJIHByb2Nlc3MgYW55d2F5LCB3ZSBjbGVhciBvdXQgdGhlIG5vdGlmaWNhdGlv
bnMgc2VwYXJhdGVseSwKKyAgICAgICAgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBhIG1lc3NhZ2Ug
ZnJvbSB0aGUgV2ViUGFnZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oOiBVcGRhdGUgdG8gdGFrZSBpbnRvIGFjY291bnQg
dGhlCisgICAgICAgIG5vdGlmaWNhdGlvbidzIHdlYiBwYWdlLiBSZW1vdmUgaW5oZXJpdGFuY2Ug
b2YgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyLiBFeHBvc2UgdGhlIG9yaWdpbmFsIG1lc3NhZ2UK
KyAgICAgICAgaGFuZGxlcnMgYXMgcHVibGljIGZ1bmN0aW9ucywgc2luY2UgdGhleSB3aWxsIGJl
IGNhbGxlZCBmcm9tIFdlYlBhZ2VQcm94eS4gQWRkIGEgbmV3IG1hcCB0aGF0CisgICAgICAgIGFz
c29jaWF0ZXMgYSBnbG9iYWwgSUQgd2l0aCBhIG5vdGlmaWNhdGlvbiBJRCB0aGF0IGNhbWUgZnJv
bSBhIHdlYiBwYWdlLgorICAgICAgICAgICAgVGhlcmUgYXJlIG5vdyB0d28gZmxhdm9ycyBvZiBj
bGVhck5vdGlmaWNhdGlvbnMoKS4gT25lIGNsZWFycyBvdXQgYWxsIG5vdGlmaWNhdGlvbnMgYXNz
b2NpYXRlZAorICAgICAgICB3aXRoIGEgd2ViIHBhZ2UuIFRoaXMgaXMgY2FsbGVkIHdoZW4gdGhl
IHBhZ2UgaXMgY2xvc2VkLiBUaGUgb3RoZXIgY2xlYXJzIG91dCBhIHN1YnNldCBvZgorICAgICAg
ICBub3RpZmljYXRpb25zIGFzc29jaWF0ZWQgd2l0aCBhIHdlYiBwYWdlLiBUaGlzIGlzIGNhbGxl
ZCB3aGVuIG5vdGlmaWNhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGEgc3ViLWZyYW1lCisgICAgICAg
IGlzIGNsb3NlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46IFJlbW92ZWQuIEFsbCBtZXNzYWdlcyBmcm9t
CisgICAgICAgIHRoZSB3ZWIgcHJvY2VzcyBnbyB0byBXZWJQYWdlUHJveHkgbm93LgorCisgICAg
ICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmNwcDogVXBkYXRlIHRvIHRha2UgaW50byBhY2NvdW50IHRoZQorICAgICAgICBub3RpZmljYXRp
b24ncyB3ZWIgcGFnZS4KKworICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZUdsb2JhbE5vdGlmaWNh
dGlvbklEKTogVGhlIG1hbmFnZXIgcHJveHkgbm93IG1haW50YWlucyBpdHMgb3duIGdsb2JhbCBu
b3RpZmljYXRpb24KKyAgICAgICAgSUQgZ2VuZXJhdG9yLgorICAgICAgICAoV2ViS2l0OjpXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSk6IFRo
ZSBwcm94eSBpcyBubyBsb25nZXIgYQorICAgICAgICBtZXNzYWdlIHJlY2VpdmVyLiBSZW1vdmUg
Y29kZSB0aGF0IHJlZ2lzdGVycyBpdCBhcyBzdWNoLgorCisgICAgICAgIChXZWJLaXQ6OldlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyk6IFJlZmFjdG9yIHRvIGRpZmZlcmVudGlhdGUg
YmV0d2VlbiB0aGUgbm90aWZpY2F0aW9uIElECisgICAgICAgIHRoYXQgY2FtZSBmcm9tIHRoZSB3
ZWIgcHJvY2VzcywgYW5kIHRoZSBnbG9iYWwgbm90aWZpY2F0aW9uIElEIHRoZSBwcm94eSBtYWlu
dGFpbnMuIEFkZCB0aGUgbWFwcGluZworICAgICAgICBmcm9tIHRoZSBnbG9iYWwgSUQgdG8gdGhl
ICh3ZWIgcGFnZSBJRCwgbm90aWZpY2F0aW9uIElEKSBwYWlyLgorICAgICAgICAoV2ViS2l0OjpX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbCk6IFJlZmFjdG9yIHRvIHRha2UgaW50
byBjb25zaWRlcmF0aW9uIHRoZSB3ZWIgcGFnZS4KKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKTogUmVmYWN0b3IgdG8g
dGFrZSBpbnRvIGNvbnNpZGVyYXRpb24KKyAgICAgICAgdGhlIHdlYiBwYWdlLiBGaXhlcyBhIGxl
YWsgd2hlcmUgd2UgZGlkIG5vdCByZW1vdmUgdGhlIGl0ZW0gZnJvbSB0aGUgbWFwcy4gVGhpcyBm
dW5jdGlvbiBpcyBjYWxsZWQKKyAgICAgICAgZnJvbSB0aGUgd2ViIHByb2Nlc3MsIHdoZW4gdGhl
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgaXMgZGVzdHJveWVkLCBzbyB3ZSByZW1vdmUgaXQgZnJv
bSBvdXIgbWFwcworICAgICAgICBiZWZvcmUgd2UgcGFzcyB0aGUgbWVzc2FnZSBhbG9uZyB0byB0
aGUgcHJvdmlkZXIuCisKKyAgICAgICAgSGVscGVyIGZ1bmN0aW9ucyB0aGF0IGV2YWx1YXRlIHdo
ZW4gYSBnaXZlbiBub3RpZmljYXRpb24gaW4gdGhlIG1hcCBtYXRjaGVzIHRoZSBkZXNpcmVkIHBh
cmFtZXRlcnMuCisgICAgICAgIChXZWJLaXQ6OnBhZ2VJRHNNYXRjaCk6IFRoZSBub3RpZmljYXRp
b24gaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm92aWRlZCBwYWdlLgorICAgICAgICAoV2ViS2l0
OjpwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0Y2gpOiBUaGUgbm90aWZpY2F0aW9uIGlzIGFzc29j
aWF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQgcGFnZSBhbmQgaXMKKyAgICAgICAgY29udGFpbmVkIHdp
dGhpbiB0aGUgbGlzdCBvZiBwcm92aWRlZCBub3RpZmljYXRpb25zLgorCisgICAgICAgIChXZWJL
aXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKTogQ2hh
bmdlZCB0byBvbmx5IHJlbW92ZSBub3RpZmljYXRpb25zCisgICAgICAgIGFzc29jaWF0ZWQgd2l0
aCB0aGUgcHJvdmlkZWQgd2ViIHBhZ2UsIGFuZCBjb3VsZCBpbmNsdWRlIGEgc3BlY2lmaWMgbGlz
dCBvZiBub3RpZmljYXRpb25zLiBUaGlzIGxhdHRlcgorICAgICAgICBzaXR1YXRpb24gb2NjdXJz
IGlmIG5vdGlmaWNhdGlvbnMgd2VyZSBhc3NvY2lhdGVkIHdpdGggYW4gaWZyYW1lLCBhbmQgdGhh
dCBpZnJhbWUgd2FzIHJlbW92ZWQuCisgICAgICAgIFRoZXJlIGlzIGFuIE8obikgd2FsayB0aGF0
IGNvdWxkIGJlIG1ha2UgbW9yZSBlZmZpY2llbnQgdXNpbmcgYW5vdGhlciBoYXNoIG1hcCwgYnV0
IHRoYXQncyBvdmVyaGVhZAorICAgICAgICBmb3IgYSBtYXAgdGhhdCBzaG91bGQgYmUgc21hbGwg
aW4gc2l6ZSBhbnl3YXkuCisKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24pOiBSZWZhY3RvciB0byB0YWtlIGlu
dG8KKyAgICAgICAgY29uc2lkZXJhdGlvbiB0aGUgd2ViIHBhZ2UuCisgICAgICAgIChXZWJLaXQ6
OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlv
bik6IFJlZmFjdG9yIHRvIHRha2UgaW50bworICAgICAgICBjb25zaWRlcmF0aW9uIHRoZSB3ZWIg
cGFnZS4KKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92
aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyk6IE5vdyB3ZSBuZWVkIHRvIGNvbWIgdGhyb3VnaAor
ICAgICAgICB0aGUgbGlzdCBvZiBnbG9iYWwgSURzIGFuZCBwdXQgdGhlbSBpbiBidWNrZXRzIGJh
c2VkIG9uIHRoZSBub3RpZmljYXRpb24ncyB3ZWIgcGFnZXMuIEFmdGVyIHRoYXQKKyAgICAgICAg
aXMgZG9uZSB3ZSBjYW4gc2VuZCB0aGUgRGlkQ2xvc2VOb3RpZmljYXRpb25zKCkgdG8gdGhvc2Ug
cGFnZXMnIHByb2Nlc3Nlcy4gVGhlcmUgaXMgYSBwb3NzaWJsZQorICAgICAgICBleHRyYSBvcHRp
bWl6YXRpb24gaGVyZSB3aGVyZSB3ZSBncm91cCBiYXNlZCBvbiB0aGUgcGFnZSdzIHByb2Nlc3Mg
aW5zdGVhZCwgdG8gcmVkdWNlIHRoZSBudW1iZXIKKyAgICAgICAgb2YgbWVzc2FnZXMgc2VudCB0
byBwcm9jZXNzZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6IFdoZW4gYSB3ZWIgcGFnZSBpcyBj
bG9zZWQsIHdlIGNsZWFyIHRoZSBub3RpZmljYXRpb25zIGFzc29jaWF0ZWQKKyAgICAgICAgd2l0
aCB0aGUgcGFnZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjYW5jZWxOb3RpZmlj
YXRpb24pOiBGb3J3YXJkIGNhbGwgdG8gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24pOiBE
aXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRp
b25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJv
eU5vdGlmaWNhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6IFJlbW92ZSBleHRyYW5lb3VzIGlu
Y2x1ZGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogUmVtb3ZlIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBhbmQgcmVsYXRlZCBmaWxlcy4KKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy5wcmk6IERpdHRvLgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
IERpdHRvLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRvLgorICAgICAgICAq
IFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisKIDIwMTMtMDUtMjYg
IEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEZvY3VzQ29udHJv
bGxlcjo6c2V0Rm9jdXNlZE5vZGUoKSBzaG91bGQgYmUgc2V0Rm9jdXNlZEVsZW1lbnQoKS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIv
Q01ha2VMaXN0cy50eHQKaW5kZXggYTE3NzIzNjFiYWIwNTU1YTQxYWQ2ZDlhNjM1MTdiYjA3NGY1
NTBmNC4uNjBhNGVmZDE4MjllOTYxOTBjZDgxZGQ1MjYxMmQ3ZWUxOThiZGIwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQKQEAgLTU1MSw4ICs1NTEsNiBAQCBzZXQoV2ViS2l0Ml9NRVNTQUdFU19JTl9G
SUxFUwogCiAgICAgVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmlu
CiAKLSAgICBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW4KLQogICAgIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgogCiAgICAgV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dl
YktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkMjg0ZmIzOGIxYjhmZmRlZGE4MTUyMzQ2
MzIwZTQwZmQ5MmM0N2QzLi5kZDdiYTIzMzQzODYyMDZiNWQ0MGNhNmVlYWNmNDVkMzE2NTA2YzFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEwNCw3ICsxMDQsNiBAQCBNRVNT
QUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJJbnNwZWN0b3JQcm94eSBcCiAgICAgV2ViTWVkaWFD
YWNoZU1hbmFnZXIgXAogICAgIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkgXAotICAgIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eSBcCiAgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlciBcCiAg
ICAgV2ViUGFnZSBcCiAgICAgV2ViUGFnZUdyb3VwUHJveHkgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJpIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJj
ZXMucHJpCmluZGV4IDkzMzllZTJmMzcxYzE2YzZjMTUyODAzOTQyZTEyNmY0MTQ3MDRhYWUuLmRj
MTdmYWFhYzBiOWNjZmY4MjhiNGJjZDc2MTRiYmFhNjNmMWRkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVk
U291cmNlcy5wcmkKQEAgLTk3LDcgKzk3LDYgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAg
V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBcCiAgICAgV2ViTmV0d29ya0lu
Zm9NYW5hZ2VyLm1lc3NhZ2VzLmluIFwKICAgICBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbiBcCi0gICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
IFwKICAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIFwKICAgICBXZWJGdWxs
U2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiBcCiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbiBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBiN2FhNmI1
MjY2ODJkMDAwZjU3ZWQ1NDhhZTNiZGI4M2I2MTFhNWRlLi41NWQyZTA4NjI2ZGMzNjA0YWUzMzQ3
NTI2MmJjMmQxNDY4YjE2N2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIx
NCw4ICsyMTQsNiBAQCB3ZWJraXQyX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJLaXQyL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
cy5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9X
ZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YktpdDIvV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlcy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJL
aXQyL1dlYlBhZ2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggYTdiMGZhNmQ5YjhkNzkyMjI4ZDYxN2I0M2I2
N2QzODRiNDk3MTMwOC4uMDUzMmY5OTQxMTFkYjUwY2ZjMTVhMGQ0NGI1ZmQ2MmUwYzNlYzc1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC0zMSwxNSAr
MzEsMjIgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0
aW9uLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCi0jaW5j
bHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJX
ZWJTZWN1cml0eU9yaWdpbi5oIgogCit1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNw
YWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlR2xvYmFsTm90aWZpY2F0aW9uSUQoKQoreworICAg
IHN0YXRpYyB1aW50NjRfdCB1bmlxdWVHbG9iYWxOb3RpZmljYXRpb25JRCA9IDE7CisgICAgcmV0
dXJuIHVuaXF1ZUdsb2JhbE5vdGlmaWNhdGlvbklEKys7Cit9CisKIGNvbnN0IGNoYXIqIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c3VwcGxlbWVudE5hbWUoKQogewogICAgIHJldHVybiAi
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5IjsKQEAgLTUzLDcgKzYwLDYgQEAgUGFzc1JlZlB0
cjxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6Y3JlYXRlKFdlYkMKIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6V2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5KFdlYkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBXZWJDb250ZXh0U3Vw
cGxlbWVudChjb250ZXh0KQogewotICAgIFdlYkNvbnRleHRTdXBwbGVtZW50Ojpjb250ZXh0KCkt
PmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZVByb3ZpZGVyKGNvbnN0IFdLTm90aWZpY2F0aW9uUHJv
dmlkZXIgKnByb3ZpZGVyKQpAQCAtNzksOCArODUsNiBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCiAgICAgQVBJT2JqZWN0Ojpk
ZXJlZigpOwogfQogCi0vLyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLQogdm9pZCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk6OnBvcHVsYXRlQ29weU9mTm90aWZpY2F0aW9uUGVybWlzc2lv
bnMoSGFzaE1hcDxTdHJpbmcsIGJvb2w+JiBwZXJtaXNzaW9ucykKIHsKICAgICBSZWZQdHI8SW1t
dXRhYmxlRGljdGlvbmFyeT4ga25vd25QZXJtaXNzaW9ucyA9IG1fcHJvdmlkZXIubm90aWZpY2F0
aW9uUGVybWlzc2lvbnMoKTsKQEAgLTk2LDgyICsxMDAsMTUyIEBAIHZvaWQgV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5Ojpwb3B1bGF0ZUNvcHlPZk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKEhh
c2hNYXA8CiAgICAgfQogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hv
dyhXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYg
Ym9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHRhZywgY29uc3QgU3Ry
aW5nJiBsYW5nLCBjb25zdCBTdHJpbmcmIGRpciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcs
IHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0YWcs
IGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgU3RyaW5nJiBkaXIsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luU3RyaW5nLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgaWYgKCFpc05v
dGlmaWNhdGlvbklEVmFsaWQobm90aWZpY2F0aW9uSUQpKQorICAgIGlmICghaXNOb3RpZmljYXRp
b25JRFZhbGlkKHBhZ2VOb3RpZmljYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246
OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmlu
Zywgbm90aWZpY2F0aW9uSUQpOwotICAgIG1fbm90aWZpY2F0aW9ucy5zZXQobm90aWZpY2F0aW9u
SUQsIG5vdGlmaWNhdGlvbik7Ci0gICAgbV9wcm92aWRlci5zaG93KHBhZ2UsIG5vdGlmaWNhdGlv
bi5nZXQoKSk7CisgICAgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZUds
b2JhbE5vdGlmaWNhdGlvbklEKCk7CisgICAgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4gbm90aWZp
Y2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGljb25VUkwsIHRh
ZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNhdGlvbklEKTsKKyAgICBw
YWlyPHVpbnQ2NF90LCB1aW50NjRfdD4gbm90aWZpY2F0aW9uUGFpcklEID0gbWFrZV9wYWlyKHdl
YlBhZ2UtPnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0aW9uSUQpOworICAgIG1fZ2xvYmFsTm90aWZp
Y2F0aW9uTWFwLnNldChnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uUGFpcklEKTsK
KyAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvblBhaXJJRCwgbWFrZV9wYWlyKGds
b2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24pKTsKKyAgICBtX3Byb3ZpZGVyLnNob3co
d2ViUGFnZSwgbm90aWZpY2F0aW9uLmdldCgpKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OmNhbmNlbCh1aW50NjRfdCBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjYW5jZWwoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCB1aW50
NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgaWYgKCFpc05vdGlmaWNhdGlvbklEVmFs
aWQobm90aWZpY2F0aW9uSUQpKQorICAgIGlmICghaXNOb3RpZmljYXRpb25JRFZhbGlkKHBhZ2VO
b3RpZmljYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxXZWJOb3RpZmlj
YXRpb24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy5nZXQobm90aWZpY2F0aW9uSUQp
OwotICAgIGlmICghbm90aWZpY2F0aW9uKQorICAgIGNvbnN0IGF1dG8mIG5vdGlmaWNhdGlvbkl0
ZW0gPSBtX25vdGlmaWNhdGlvbnMuZmluZChtYWtlX3BhaXIod2ViUGFnZS0+cGFnZUlEKCksIHBh
Z2VOb3RpZmljYXRpb25JRCkpOworICAgIGlmIChub3RpZmljYXRpb25JdGVtID09IG1fbm90aWZp
Y2F0aW9ucy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm92aWRlci5jYW5jZWwo
bm90aWZpY2F0aW9uLmdldCgpKTsKKyAgICBXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9
IG5vdGlmaWNhdGlvbkl0ZW0tPnZhbHVlLnNlY29uZC5nZXQoKTsKKyAgICBtX3Byb3ZpZGVyLmNh
bmNlbChub3RpZmljYXRpb24pOwogfQogICAgIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCit2
b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihX
ZWJQYWdlUHJveHkqIHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKLSAg
ICBpZiAoIWlzTm90aWZpY2F0aW9uSURWYWxpZChub3RpZmljYXRpb25JRCkpCisgICAgaWYgKCFp
c05vdGlmaWNhdGlvbklEVmFsaWQocGFnZU5vdGlmaWNhdGlvbklEKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmlj
YXRpb25zLnRha2Uobm90aWZpY2F0aW9uSUQpOwotICAgIGlmICghbm90aWZpY2F0aW9uKQorICAg
IGNvbnN0IGF1dG8mIG5vdGlmaWNhdGlvbkl0ZW0gPSBtX25vdGlmaWNhdGlvbnMuZmluZChtYWtl
X3BhaXIod2ViUGFnZS0+cGFnZUlEKCksIHBhZ2VOb3RpZmljYXRpb25JRCkpOworICAgIGlmIChu
b3RpZmljYXRpb25JdGVtID09IG1fbm90aWZpY2F0aW9ucy5lbmQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm92aWRlci5kaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5n
ZXQoKSk7CisgICAgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBub3RpZmljYXRpb25J
dGVtLT52YWx1ZS5maXJzdDsKKyAgICBXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IG5v
dGlmaWNhdGlvbkl0ZW0tPnZhbHVlLnNlY29uZC5nZXQoKTsKKyAgICBtX2dsb2JhbE5vdGlmaWNh
dGlvbk1hcC5yZW1vdmUoZ2xvYmFsTm90aWZpY2F0aW9uSUQpOworICAgIG1fbm90aWZpY2F0aW9u
cy5yZW1vdmUobm90aWZpY2F0aW9uSXRlbSk7CisgICAgbV9wcm92aWRlci5kaWREZXN0cm95Tm90
aWZpY2F0aW9uKG5vdGlmaWNhdGlvbik7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZp
Y2F0aW9uSURzKQorc3RhdGljIGJvb2wgcGFnZUlEc01hdGNoKHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QsIHVpbnQ2NF90IGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQog
ewotICAgIG1fcHJvdmlkZXIuY2xlYXJOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbklEcyk7Ci0g
ICAgc2l6ZV90IGNvdW50ID0gbm90aWZpY2F0aW9uSURzLnNpemUoKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIG1fbm90aWZpY2F0aW9ucy5yZW1vdmUo
bm90aWZpY2F0aW9uSURzW2ldKTsKKyAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7
CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dO
b3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCitzdGF0aWMgYm9vbCBwYWdlQW5k
Tm90aWZpY2F0aW9uSURzTWF0Y2godWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90aWZp
Y2F0aW9uSUQsIHVpbnQ2NF90IGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4m
IGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQogewotICAgIGlmICghY29udGV4dCgpKQorICAg
IHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlv
bklEcy5jb250YWlucyhwYWdlTm90aWZpY2F0aW9uSUQpOworfQorCit2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFn
ZSkKK3sKKyAgICBjbGVhck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgVmVjdG9yPHVpbnQ2NF90Pigp
LCBwYWdlSURzTWF0Y2gpOworfQorCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYgcGFnZU5vdGlmaWNhdGlvbklEcykKK3sKKyAgICBjbGVhck5vdGlmaWNhdGlvbnMo
d2ViUGFnZSwgcGFnZU5vdGlmaWNhdGlvbklEcywgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNo
KTsKK30KKwordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0
aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VO
b3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZpbHRlckZ1bmN0aW9u
KQoreworICAgIHVpbnQ2NF90IHRhcmdldFBhZ2VJRCA9IHdlYlBhZ2UtPnBhZ2VJRCgpOworCisg
ICAgVmVjdG9yPHVpbnQ2NF90PiBnbG9iYWxOb3RpZmljYXRpb25JRHM7CisgICAgZ2xvYmFsTm90
aWZpY2F0aW9uSURzLnJlc2VydmVDYXBhY2l0eShtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zaXpl
KCkpOworCisgICAgZm9yIChhdXRvIGl0ID0gbV9ub3RpZmljYXRpb25zLmJlZ2luKCksIGVuZCA9
IG1fbm90aWZpY2F0aW9ucy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIHVpbnQ2
NF90IHdlYlBhZ2VJRCA9IGl0LT5rZXkuZmlyc3Q7CisgICAgICAgIHVpbnQ2NF90IHBhZ2VOb3Rp
ZmljYXRpb25JRCA9IGl0LT5rZXkuc2Vjb25kOworICAgICAgICBpZiAoIWZpbHRlckZ1bmN0aW9u
KHdlYlBhZ2VJRCwgcGFnZU5vdGlmaWNhdGlvbklELCB0YXJnZXRQYWdlSUQsIHBhZ2VOb3RpZmlj
YXRpb25JRHMpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdWludDY0X3QgZ2xv
YmFsTm90aWZpY2F0aW9uSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CisgICAgICAgIGdsb2JhbE5vdGlm
aWNhdGlvbklEcy5hcHBlbmQoZ2xvYmFsTm90aWZpY2F0aW9uSUQpOworICAgIH0KKworICAgIGZv
ciAoYXV0byBpdCA9IGdsb2JhbE5vdGlmaWNhdGlvbklEcy5iZWdpbigpLCBlbmQgPSBnbG9iYWxO
b3RpZmljYXRpb25JRHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBjb25zdCBw
YWlyPHVpbnQ2NF90LCB1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb24gPSBtX2dsb2JhbE5vdGlm
aWNhdGlvbk1hcC50YWtlKCppdCk7CisgICAgICAgIG1fbm90aWZpY2F0aW9ucy5yZW1vdmUocGFn
ZU5vdGlmaWNhdGlvbik7CisgICAgfQorCisgICAgbV9wcm92aWRlci5jbGVhck5vdGlmaWNhdGlv
bnMoZ2xvYmFsTm90aWZpY2F0aW9uSURzKTsKK30KKwordm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OnByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxOb3Rp
ZmljYXRpb25JRCkKK3sKKyAgICBjb25zdCBhdXRvJiBpdCA9IG1fZ2xvYmFsTm90aWZpY2F0aW9u
TWFwLmZpbmQoZ2xvYmFsTm90aWZpY2F0aW9uSUQpOworICAgIGlmIChpdCA9PSBtX2dsb2JhbE5v
dGlmaWNhdGlvbk1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGNvbnRleHQo
KS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpE
aWRTaG93Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSk7CisKKyAgICB1aW50NjRfdCB3ZWJQ
YWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CisgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAg
ICAgICByZXR1cm47CisKKyAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+dmFs
dWUuc2Vjb25kOworICAgIHdlYlBhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6RGlkU2hvd05vdGlmaWNhdGlvbihwYWdlTm90aWZpY2F0aW9uSUQp
LCAwKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlk
Q2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRf
dCBnbG9iYWxOb3RpZmljYXRpb25JRCkKIHsKLSAgICBpZiAoIWNvbnRleHQoKSkKKyAgICBjb25z
dCBhdXRvJiBpdCA9IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmZpbmQoZ2xvYmFsTm90aWZpY2F0
aW9uSUQpOworICAgIGlmIChpdCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1l
c3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlmaWNhdGlvbihub3Rp
ZmljYXRpb25JRCkpOworICAgIHVpbnQ2NF90IHdlYlBhZ2VJRCA9IGl0LT52YWx1ZS5maXJzdDsK
KyAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uod2Vi
UGFnZUlEKTsKKyAgICBpZiAoIXdlYlBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHVpbnQ2
NF90IHBhZ2VOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1ZS5zZWNvbmQ7CisgICAgd2ViUGFnZS0+
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlj
a05vdGlmaWNhdGlvbihwYWdlTm90aWZpY2F0aW9uSUQpLCAwKTsKIH0KIAogCi12b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoSW1t
dXRhYmxlQXJyYXkqIG5vdGlmaWNhdGlvbklEcykKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhJbW11dGFibGVBcnJheSogZ2xv
YmFsTm90aWZpY2F0aW9uSURzKQogewotICAgIGlmICghY29udGV4dCgpKQotICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgc2l6ZV90IHNpemUgPSBub3RpZmljYXRpb25JRHMtPnNpemUoKTsKLSAg
ICAKLSAgICBWZWN0b3I8dWludDY0X3Q+IHZlY3Rvck5vdGlmaWNhdGlvbklEczsKLSAgICB2ZWN0
b3JOb3RpZmljYXRpb25JRHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKyAgICBIYXNo
TWFwPFdlYlBhZ2VQcm94eSosIFZlY3Rvcjx1aW50NjRfdD4+IHBhZ2VOb3RpZmljYXRpb25JRHM7
CiAgICAgCisgICAgc2l6ZV90IHNpemUgPSBnbG9iYWxOb3RpZmljYXRpb25JRHMtPnNpemUoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICB1aW50NjRf
dCBub3RpZmljYXRpb25JRCA9IG5vdGlmaWNhdGlvbklEcy0+YXQ8V2ViVUludDY0PihpKS0+dmFs
dWUoKTsKLSAgICAgICAgdmVjdG9yTm90aWZpY2F0aW9uSURzLmFwcGVuZChub3RpZmljYXRpb25J
RCk7CisgICAgICAgIGNvbnN0IGF1dG8mIGl0ID0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZmlu
ZChnbG9iYWxOb3RpZmljYXRpb25JRHMtPmF0PFdlYlVJbnQ2ND4oaSktPnZhbHVlKCkpOworICAg
ICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBpZiAoV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJv
Y2Vzc1Byb3h5Ojp3ZWJQYWdlKGl0LT52YWx1ZS5maXJzdCkpIHsKKyAgICAgICAgICAgIGF1dG8g
cGFnZUl0ID0gcGFnZU5vdGlmaWNhdGlvbklEcy5maW5kKHdlYlBhZ2UpOworICAgICAgICAgICAg
aWYgKHBhZ2VJdCA9PSBwYWdlTm90aWZpY2F0aW9uSURzLmVuZCgpKSB7CisgICAgICAgICAgICAg
ICAgVmVjdG9yPHVpbnQ2NF90PiBuZXdWZWN0b3I7CisgICAgICAgICAgICAgICAgbmV3VmVjdG9y
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CisgICAgICAgICAgICAgICAgcGFnZUl0ID0g
cGFnZU5vdGlmaWNhdGlvbklEcy5hZGQod2ViUGFnZSwgbmV3VmVjdG9yKS5pdGVyYXRvcjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEID0g
aXQtPnZhbHVlLnNlY29uZDsKKyAgICAgICAgICAgIHBhZ2VJdC0+dmFsdWUuYXBwZW5kKHBhZ2VO
b3RpZmljYXRpb25JRCk7CisgICAgICAgIH0KKworICAgICAgICBtX25vdGlmaWNhdGlvbnMucmVt
b3ZlKGl0LT52YWx1ZSk7CisgICAgICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZShp
dCk7CiAgICAgfQotICAgIAotICAgIGlmICh2ZWN0b3JOb3RpZmljYXRpb25JRHMuc2l6ZSgpKQot
ICAgICAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6RGlkQ2xvc2VOb3RpZmljYXRpb25zKHZlY3Rvck5vdGlmaWNhdGlvbklE
cykpOworCisgICAgZm9yIChhdXRvIGl0ID0gcGFnZU5vdGlmaWNhdGlvbklEcy5iZWdpbigpLCBl
bmQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAg
IGl0LT5rZXktPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdl
cjo6RGlkQ2xvc2VOb3RpZmljYXRpb25zKGl0LT52YWx1ZSksIDApOwogfQogCiB2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xp
Y3koY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgYm9vbCBhbGxvd2VkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCAwZmZiMmI3ODM0MTJhNDQxNTI5
MTI0NTc5NmUzNDllMmYzOGNiMzg3Li41ODkwYjVjMWIwZTRmNWQ2MGM4OTYwMWNmYTY4NmFkMWU5
ZTBhMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtNDMs
NyArNDMsNyBAQCBjbGFzcyBXZWJDb250ZXh0OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3Mg
V2ViU2VjdXJpdHlPcmlnaW47CiAKLWNsYXNzIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSA6
IHB1YmxpYyBUeXBlZEFQSU9iamVjdDxBUElPYmplY3Q6OlR5cGVOb3RpZmljYXRpb25NYW5hZ2Vy
PiwgcHVibGljIFdlYkNvbnRleHRTdXBwbGVtZW50LCBwcml2YXRlIENvcmVJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciB7CitjbGFzcyBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgVHlw
ZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlTm90aWZpY2F0aW9uTWFuYWdlcj4sIHB1YmxpYyBX
ZWJDb250ZXh0U3VwcGxlbWVudCB7CiBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciog
c3VwcGxlbWVudE5hbWUoKTsKQEAgLTUzLDcgKzUzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGlu
aXRpYWxpemVQcm92aWRlcihjb25zdCBXS05vdGlmaWNhdGlvblByb3ZpZGVyKik7CiAgICAgdm9p
ZCBwb3B1bGF0ZUNvcHlPZk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKEhhc2hNYXA8U3RyaW5nLCBi
b29sPiYpOwogCi0gICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJp
bmcmIHRhZywgY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBTdHJpbmcmIGRpciwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIHNo
b3coV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5
LCBjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBTdHJpbmcm
IGxhbmcsIGNvbnN0IFN0cmluZyYgZGlyLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgdWlu
dDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIGNhbmNlbChXZWJQYWdlUHJveHkq
LCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgY2xlYXJOb3RpZmljYXRp
b25zKFdlYlBhZ2VQcm94eSopOworICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQ
cm94eSosIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMpOworICAg
IHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqLCB1aW50NjRfdCBwYWdl
Tm90aWZpY2F0aW9uSUQpOwogCiAgICAgdm9pZCBwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24o
dWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgcHJvdmlkZXJEaWRDbGlja05vdGlm
aWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CkBAIC02NywyMyArNzEsMTkgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHko
V2ViQ29udGV4dCopOwogCisgICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVu
Y3Rpb24pKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCB1aW50
NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5v
dGlmaWNhdGlvbklEcyk7CisgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5
KiwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0
aW9uRmlsdGVyRnVuY3Rpb24pOworCiAgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKICAgICB2
aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBk
ZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgT1ZFUlJJREU7CiAKLSAgICAvLyBDb3JlSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgT1ZFUlJJREU7Ci0gICAg
Ci0gICAgLy8gTWVzc2FnZSBoYW5kbGVycwotICAgIHZvaWQgY2FuY2VsKHVpbnQ2NF90IG5vdGlm
aWNhdGlvbklEKTsKLSAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90
aWZpY2F0aW9uSUQpOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcyk7Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+PiBXZWJOb3RpZmljYXRpb25NYXA7Ci0gICAgCiAg
ICAgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIgbV9wcm92aWRlcjsKLSAgICBXZWJOb3RpZmljYXRp
b25NYXAgbV9ub3RpZmljYXRpb25zOworICAgIC8vIFBhaXIgY29tcHJpc2VkIG9mIHdlYiBwYWdl
IElEIGFuZCB0aGUgd2ViIHByb2Nlc3MncyBub3RpZmljYXRpb24gSUQKKyAgICBIYXNoTWFwPHVp
bnQ2NF90LCBwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFw
OworICAgIC8vIEtleSBwYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFnZSBJRCBhbmQgdGhlIHdlYiBw
cm9jZXNzJ3Mgbm90aWZpY2F0aW9uIElEOyB2YWx1ZSBwYWlyIGNvbXByaXNlZCBvZiBnbG9iYWwg
bm90aWZpY2F0aW9uIElELCBhbmQgbm90aWZpY2F0aW9uIG9iamVjdAorICAgIEhhc2hNYXA8cGFp
cjx1aW50NjRfdCwgdWludDY0X3Q+LCBwYWlyPHVpbnQ2NF90LCBSZWZQdHI8V2ViTm90aWZpY2F0
aW9uPj4+IG1fbm90aWZpY2F0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDZlOTI4MTI4M2Q1OTgyNzgyNTkwMjY2Mjll
YWU5OTMyYzZkYjY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAK
LSMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
LSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotbWVzc2FnZXMgLT4gV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5IHsKLSAgICBDYW5jZWwodWludDY0X3Qgbm90aWZpY2F0
aW9uSUQpOwotICAgIERpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9u
SUQpOwotICAgIENsZWFyTm90aWZpY2F0aW9ucyhWZWN0b3I8dWludDY0X3Q+IG5vdGlmaWNhdGlv
bklEcyk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IGUyMTQ4N2UzZTExNmNiODU2NDNlYjQzMjE4YzRlZGFjNmU5OWZkYzQuLjU5NGNmZGE2ODEzYTk0
YWRlNmZjYTAxZTJlZmJjY2Y1OTU3MTgyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC01OTEsNiArNTkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNs
b3NlKCkKICNlbmRpZgogCiAgICAgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuaW52YWxpZGF0ZVJlcXVlc3RzKCk7CisgICAgbV9wcm9jZXNzLT5jb250ZXh0KCktPnN1cHBs
ZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5jbGVhck5vdGlmaWNhdGlvbnMo
dGhpcyk7CiAKICAgICBtX3Rvb2xUaXAgPSBTdHJpbmcoKTsKIApAQCAtNDEwMyw2ICs0MTA0LDIx
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uCiAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCktPnN1
cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5zaG93KHRoaXMsIHRpdGxl
LCBib2R5LCBpY29uVVJMLCB0YWcsIGxhbmcsIGRpciwgb3JpZ2luU3RyaW5nLCBub3RpZmljYXRp
b25JRCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxOb3RpZmljYXRpb24odWludDY0
X3Qgbm90aWZpY2F0aW9uSUQpCit7CisgICAgbV9wcm9jZXNzLT5jb250ZXh0KCktPnN1cHBsZW1l
bnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5jYW5jZWwodGhpcywgbm90aWZpY2F0
aW9uSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykKK3sKKyAgICBtX3Byb2Nlc3MtPmNv
bnRleHQoKS0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNsZWFy
Tm90aWZpY2F0aW9ucyh0aGlzLCBub3RpZmljYXRpb25JRHMpOworfQorCit2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkKK3sK
KyAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk+KCktPmRpZERlc3Ryb3lOb3RpZmljYXRpb24odGhpcywgbm90aWZpY2F0aW9uSUQp
OworfQorCiBmbG9hdCBXZWJQYWdlUHJveHk6OmhlYWRlckhlaWdodChXZWJGcmFtZVByb3h5KiBm
cmFtZSkKIHsKICAgICBpZiAoZnJhbWUtPmlzRGlzcGxheWluZ1BERkRvY3VtZW50KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNDA0NzNlZmRhNGY0NzQxMDFi
MjgzZGQ2OTJjMDg0ZWJlMDM3ODQzZC4uNTMyZWMzZmQxZDM1OWE5MTIyZWFmZDNmYTM4NTRlMDkz
YjE4NmU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODcy
LDcgKzg3MiwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJp
bmcpOwogICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0YWcs
IGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgU3RyaW5nJiBkaXIsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luU3RyaW5nLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCk7Ci0gICAgCisgICAgdm9pZCBjYW5j
ZWxOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgY2xlYXJO
b3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcyk7Cisg
ICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsK
KwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHZvaWQgcGFnZURpZFJlcXVlc3RT
Y3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIHBhZ2VUcmFuc2l0aW9u
Vmlld3BvcnRSZWFkeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KaW5kZXggYTdlZWI1NDI5ODM3YzE3MGRjYzNkOWRlYzczNjQ3ODg0
NmM2ODcxMC4uODYyMTNmMWNjYzcwYjQwMzhlZjlkMzNhMTQ3M2Q3NWI5MjdlMDdhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0yMjAsNiArMjIwLDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAjIE5vdGlm
aWNhdGlvbiBtZXNzYWdlcwogICAgIFJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uKHVpbnQ2
NF90IHJlcXVlc3RJRCwgV1RGOjpTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikKICAgICBTaG93Tm90
aWZpY2F0aW9uKFdURjo6U3RyaW5nIHRpdGxlLCBXVEY6OlN0cmluZyBib2R5LCBXVEY6OlN0cmlu
ZyBpY29uVVJMLCBXVEY6OlN0cmluZyB0YWcsIFdURjo6U3RyaW5nIGxhbmcsIFdURjo6U3RyaW5n
IGRpciwgV1RGOjpTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwgdWludDY0X3Qgbm90aWZpY2F0aW9u
SUQpCisgICAgQ2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQorICAg
IENsZWFyTm90aWZpY2F0aW9ucyhWZWN0b3I8dWludDY0X3Q+IG5vdGlmaWNhdGlvbklEcykKKyAg
ICBEaWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQogCiAgICAg
IyBTcGVsbGluZyBhbmQgZ3JhbW1hciBtZXNzYWdlcwogI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hF
Q0tJTkcpICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA0OTM5MmExOTFhNDQ2Y2U5N2NkMGQ3MzU3NTY2ZTlhY2U3OGUxZTBmLi4w
ZGFkM2FkNDUwYjM1ZjhkNmI0MzliYmYxNDJlZDU3NWE4MmFiYzc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMzQsOCArMzM0
LDYgQEAKIAkJMzEzMTI2MUYxNDhGRjgyQzAwQkEyQTM5IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzEzMTI2MUExNDhGRjgyQjAwQkEyQTM5IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5oICovOyB9OwogCQkzMTMxMjYyMDE0OEZGODJDMDBCQTJBMzkgLyog
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMTMxMjYxQjE0OEZGODJCMDBCQTJBMzkgLyogV2ViTm90aWZpY2F0
aW9uTWFuYWdlci5jcHAgKi87IH07CiAJCTMxMzEyNjIxMTQ4RkY4MkMwMEJBMkEzOSAvKiBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTMxMjYxQzE0OEZGODJCMDBCQTJBMzkgLyogV2ViTm90aWZpY2F0aW9uTWFu
YWdlci5oICovOyB9OwotCQkzMThCRTE2NzE0NzM0MzM3MDBBOEZCQjIgLyogV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOEJFMTY1MTQ3MzQzMzcwMEE4RkJCMiAvKiBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwotCQkzMThC
RTE2ODE0NzM0MzM3MDBBOEZCQjIgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxOEJF
MTY2MTQ3MzQzMzcwMEE4RkJCMiAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdl
cy5oICovOyB9OwogCQkzMThCRTE3MTE0NzQzREIxMDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb25N
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MThCRTE3MDE0NzQzREIxMDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb25NYW5hZ2VyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzE4QkUxNzUxNDc0
M0RENzAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMThCRTE3NDE0NzQzREQ2MDBBOEZCQjIg
LyogV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJMzE4QkUxNzcxNDc0M0U2MDAw
QThGQkIyIC8qIFdLTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxOEJFMTc2MTQ3NDNFNjAwMEE4RkJCMiAvKiBXS05vdGlmaWNh
dGlvbi5jcHAgKi87IH07CkBAIC0xNzkwLDggKzE3ODgsNiBAQAogCQkzMTMxMjYxQjE0OEZGODJC
MDBCQTJBMzkgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEzMTI2MUMxNDhGRjgyQjAwQkEyQTM5IC8qIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90
aWZpY2F0aW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTMxMjYx
RDE0OEZGODJDMDBCQTJBMzkgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMThCRTE2NTE0NzM0MzM3MDBBOEZCQjIg
LyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxOEJF
MTY2MTQ3MzQzMzcwMEE4RkJCMiAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMThCRTE3
MDE0NzQzREIxMDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb25NYW5hZ2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTm90aWZpY2F0aW9uTWFuYWdlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMThCRTE3NDE0NzQzREQ2MDBBOEZCQjIgLyogV0tOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdL
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMx
OEJFMTc2MTQ3NDNFNjAwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS05vdGlmaWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xODAwLDcgKzE3OTYsNiBAQAogCQkzMUEyRUM0MjE0ODk5N0JF
MDA4MTBENzEgLyogV2ViTm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYk5vdGlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MUEyRUM0MzE0ODk5N0JFMDA4MTBENzEgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxQTJFQzQ0MTQ4
OTk3QkYwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxQTJFQzQ1MTQ4OTk3QkYwMDgxMEQ3MSAvKiBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMUEyRUM0NjE0ODk5N0MwMDA4MTBENzEgLyogV2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMUEyRUM0NzE0ODk5N0MxMDA4MTBENzEgLyogV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFBMkVDNEYxNDg5OTgwNTAwODEwRDcx
IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1NjYs
NyArMzU2MSw2IEBACiAJCQkJMzFBMkVDNDIxNDg5OTdCRTAwODEwRDcxIC8qIFdlYk5vdGlmaWNh
dGlvbi5oICovLAogCQkJCTMxQTJFQzQzMTQ4OTk3QkUwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuY3BwICovLAogCQkJCTMxQTJFQzQ0MTQ4OTk3QkYwMDgxMEQ3MSAvKiBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCAqLywKLQkJCQkzMUEyRUM0NTE0ODk5N0JGMDA4
MTBENzEgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJ
CTMxQTJFQzQ2MTQ4OTk3QzAwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAg
Ki8sCiAJCQkJMzFBMkVDNDcxNDg5OTdDMTAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyLmggKi8sCiAJCQkpOwpAQCAtNTExOSw4ICs1MTEzLDYgQEAKIAkJCQkzM0QzQTNDNzEzMzk2
MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8sCiAJ
CQkJMzFCQTkyNDgxNDg4MzA4MTAwNjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTMxQkE5MjQ5MTQ4ODMwODEwMDYyRURCNSAvKiBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCAqLywKLQkJCQkzMThCRTE2NTE0NzM0MzM3MDBB
OEZCQjIgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKLQkJCQkzMThCRTE2NjE0NzM0MzM3MDBBOEZCQjIgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5TWVzc2FnZXMuaCAqLywKIAkJCQkyOUQ1NURFRjE2MUJGOUYxMDAzMUEyRTMgLyogV2Vi
UGFnZUdyb3VwUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTI5RDU1REYwMTYxQkY5
RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJQzBDRTcy
OUUxMjQ3RTcxRDAwQkMwRUM0IC8qIFdlYlBhZ2VNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAt
NTYyMyw3ICs1NjE1LDYgQEAKIAkJCQkzMTMxMjYyMTE0OEZGODJDMDBCQTJBMzkgLyogV2ViTm90
aWZpY2F0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFCQTkyNEUxNDg4MzEyNjAw
NjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzFBMkVDNEIxNDg5OTdDMjAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE4QkUxNjgxNDczNDMzNzAwQThGQkIyIC8qIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
MUEyRUM0RTE0ODk5N0MyMDA4MTBENzEgLyogV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMzNERDY4MTIzODQ2NDYwMDM2MEYzRiAvKiBXZWJOdW1iZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDODU3RkI1MTJCODMwRTYwMEVERUIyRSAvKiBXZWJPcGVuUGFu
ZWxQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKQEAgLTY5MDAsNyArNjg5MSw2IEBACiAJCQkJ
MzEzMTI2MjAxNDhGRjgyQzAwQkEyQTM5IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzFCQTkyNEQxNDg4MzEyNjAwNjJFREI1IC8qIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFBMkVD
NEExNDg5OTdDMjAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQkzMThCRTE2NzE0NzM0MzM3MDBBOEZCQjIgLyogV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMx
QTJFQzREMTQ4OTk3QzIwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzg1N0ZCNjEyQjgzMEU2MDBFREVCMkUgLyogV2ViT3BlblBhbmVs
UGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQThDNzI4QzE3Mzg0NzdDMDAwQTY1
NTQgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNw
cAppbmRleCBiZDY5ZjFkNDhiNzk4YWUyMDJhMDhkMzk1YTNmOTFkMDMyY2EyMzZlLi43MWRjODI2
OTg2NDdiNTc2ODVhOGRlN2Y1MWNhNGI4YWQzYzY5OWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtMjcsNyArMjcs
NiBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgog
CiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggNTQ0NmU4NGZhOWM0YWMxMDYy
NjBjZGU2ODNiNmJjOGUwMzc2ZTdjMC4uYjU1OGMxM2MxNGQ5MzZkN2Y0NWYyYjYwNzY5ZGQ0MDc4
N2I4NzBkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMzMsNyAr
MzMsNiBAQAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElG
SUNBVElPTlMpCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiV2ViTm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNh
dGlvbi5oPgpAQCAtMTc1LDcgKzE3NCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
Y2FuY2VsKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogICAgIGlm
ICghbm90aWZpY2F0aW9uSUQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3Mt
PnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eTo6Q2FuY2VsKG5vdGlmaWNhdGlvbklEKSwgMCk7CisgICAgbV9wcm9jZXNz
LT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkNhbmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHBh
Z2UpOwpAQCAtMTg4LDkgKzE4Nyw5IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xl
YXJOb3RpZmljYXRpb25zKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiAgICAgTm90
aWZpY2F0aW9uQ29udGV4dE1hcDo6aXRlcmF0b3IgaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRN
YXAuZmluZChjb250ZXh0KTsKICAgICBpZiAoaXQgPT0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFw
LmVuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBWZWN0b3I8dWludDY0X3Q+JiBu
b3RpZmljYXRpb25JRHMgPSBpdC0+dmFsdWU7Ci0gICAgbV9wcm9jZXNzLT5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6
OkNsZWFyTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25JRHMpLCAwKTsKKyAgICBtX3Byb2Nlc3Mt
PnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
Q2xlYXJOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbklEcyksIHBhZ2UtPnBhZ2VJRCgpKTsKICAg
ICBzaXplX3QgY291bnQgPSBub3RpZmljYXRpb25JRHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBu
b3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLnRha2Uobm90aWZpY2F0aW9uSURzW2ld
KTsKQEAgLTIxNiw3ICsyMTUsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERl
c3Ryb3lOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sCiAKICAgICBtX25v
dGlmaWNhdGlvbklETWFwLnJlbW92ZShub3RpZmljYXRpb25JRCk7CiAgICAgcmVtb3ZlTm90aWZp
Y2F0aW9uRnJvbUNvbnRleHRNYXAobm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbik7Ci0gICAg
bV9wcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OkRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0
aW9uSUQpLCAwKTsKKyAgICBtX3Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmlj
YXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlm
aWNhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9n
IGIvQ2hhbmdlTG9nCmluZGV4IDNmMzViMWJkZDAxZGUwMjk2Yzg1MTYwM2JlYWM1MjY0YTk0NmMz
MzUuLmY1ZjVlMjkyZTFkODZlYmUxM2UxNjNmYjdhZWYwZjMyZjZiNTNmZGEgMTAwNjQ0Ci0tLSBh
L0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wNS0yNiAg
Sm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gTm90aWZpY2F0aW9u
cyBjbG9iYmVyIGVhY2ggb3RoZXIgd2l0aCBtdWx0aXBsZSBwcm9jZXNzZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjQyOAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTM5MzUxOTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBNYW51YWxUZXN0cy9ub3RpZmljYXRpb24taW4tbXVsdGlwbGUtd2lu
ZG93cy5odG1sOiBBZGRlZC4KKwogMjAxMy0wNS0yNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBQYWdlUG9wdXAgY29kZQpkaWZmIC0tZ2l0
IGEvTWFudWFsVGVzdHMvbm90aWZpY2F0aW9uLWluLW11bHRpcGxlLXdpbmRvd3MuaHRtbCBiL01h
bnVhbFRlc3RzL25vdGlmaWNhdGlvbi1pbi1tdWx0aXBsZS13aW5kb3dzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDBmZDg3MTczMWQ2ZWY4Yzk4ZTRkOWNjOTM3ZDVhMDVjZDRhMzExNQotLS0gL2Rldi9udWxs
CisrKyBiL01hbnVhbFRlc3RzL25vdGlmaWNhdGlvbi1pbi1tdWx0aXBsZS13aW5kb3dzLmh0bWwK
QEAgLTAsMCArMSw1MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorT3BlbiB0
aGlzIHBhZ2UgdGhyb3VnaCBhIHdlYiBzZXJ2ZXIgaW4gdHdvIHZpZXdzLiBJZiBuZWNlc3Nhcnkg
cmVxdWVzdCBwZXJtaXNzaW9uIHRvIHBvc3Qgd2ViIG5vdGlmaWNhdGlvbnM6IDxidXR0b24gb25j
bGljaz0icmVxdWVzdFBlcm1pc3Npb24oKSI+UmVxdWVzdCBwZXJtaXNzaW9uPC9idXR0b24+PGJy
Lz4KK1RoZW4gcG9zdCB0aGlzIHBlcm1pc3Npb24gb25jZSBpbiBlYWNoIHBhZ2UuIDxidXR0b24g
b25jbGljaz0icG9zdE5vdGlmaWNhdGlvbigpIj5Qb3N0IG5vdGlmaWNhdGlvbjwvYnV0dG9uPjxi
ci8+CitDbGljayBvbiB0aGUgbm90aWZpY2F0aW9uLiBPbmx5IHRoZSBzZWNvbmQgbm90aWZpY2F0
aW9uIHNob3VsZCBiZSBjbG9zZWQgb24gdGhlIHNlY29uZCBwYWdlLgorPHAgaWQ9ImNvbnNvbGUi
PgorPC9wPgorCis8c2NyaXB0PgorZnVuY3Rpb24gcmVxdWVzdFBlcm1pc3Npb24oKSB7CisgICAg
aWYgKE5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uID09ICJncmFudGVkIikgeworICAgICAgICBsb2co
Ik5vdGlmaWNhdGlvbiBhbHJlYWR5IGdyYW50ZWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGxvZygiUmVxdWVzdGluZyBwZXJtaXNzaW9uLi4uIik7CisgICAgTm90aWZpY2F0aW9u
LnJlcXVlc3RQZXJtaXNzaW9uKGZ1bmN0aW9uKHBlcm1pc3Npb24pIHsKKyAgICAgICAgaWYgKE5v
dGlmaWNhdGlvbi5wZXJtaXNzaW9uID09ICJncmFudGVkIikgeworICAgICAgICAgICAgbG9nKCJO
b3RpZmljYXRpb24gZ3JhbnRlZCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGxvZygiTm90aWZpY2F0aW9uIGRlbmllZCIpOworICAgIH0pOworfQorCitmdW5jdGlv
biBwb3N0Tm90aWZpY2F0aW9uKCkgeworICAgIHZhciBuID0gbmV3IE5vdGlmaWNhdGlvbigiTm90
aWZpY2F0aW9uIHRpdGxlIik7CisgICAgbi5vbnNob3cgPSBvblNob3dIYW5kbGVyOworICAgIG4u
b25jbGljayA9IG9uQ2xpY2tIYW5kbGVyOworICAgIG4ub25jbG9zZSA9IG9uQ2xvc2VIYW5kbGVy
OworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyLz4iOworfQorCitmdW5j
dGlvbiBvblNob3dIYW5kbGVyKCkgeworICAgIGxvZygib25zaG93IGhhbmRsZXIgY2FsbGVkIik7
Cit9CisKK2Z1bmN0aW9uIG9uQ2xpY2tIYW5kbGVyKCkgeworICAgIGxvZygib25jbGljayBoYW5k
bGVyIGNhbGxlZCIpOworICAgIHRoaXMuY2xvc2UoKTsKK30KKworZnVuY3Rpb24gb25DbG9zZUhh
bmRsZXIoKSB7CisgICAgbG9nKCJvbmNsb3NlIGhhbmRsZXIgY2FsbGVkIik7Cit9Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="review"
          id="224373"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>