<?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>213744</bug_id>
          
          <creation_ts>2020-06-29 10:52:17 -0700</creation_ts>
          <short_desc>AX: Implement relevant simulated key presses for custom ARIA widgets for increment/decrement</short_desc>
          <delta_ts>2020-07-01 16:35:48 -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>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1667187</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-06-29 10:52:17 -0700</bug_when>
    <thetext>Implement relevant simulated key presses for custom ARIA widgets, according to Authoring Practices Guide… 

For example: 
- increment is swipe up on iOS, and interact with then VO+Up on macOS. In both cases, WebKit shoud send the relevant arrow key.

Temp PR URL:
https://github.com/WICG/aom/blob/keyevents/explainer.md#user-action-events-from-assistive-technology

Will be merged here.
https://github.com/WICG/aom/blob/gh-pages/explainer.md#user-action-events-from-assistive-technology


&lt;rdar://problem/64820964&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667188</commentid>
    <comment_count>1</comment_count>
      <attachid>403082</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-06-29 10:54:47 -0700</bug_when>
    <thetext>Created attachment 403082
patch`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667189</commentid>
    <comment_count>2</comment_count>
      <attachid>403083</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-06-29 10:56:38 -0700</bug_when>
    <thetext>Created attachment 403083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667247</commentid>
    <comment_count>3</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-06-29 13:30:02 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #2)
&gt; Created attachment 403083 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/AccessibilityNodeObject.cpp
+++ a/Source/WebCore/accessibility/AccessibilityNodeObject.cpp
@@ -1094,18 +1095,41 @@ void AccessibilityNodeObject::decrement()
     alterSliderValue(false);
 }

+// Fire a keyboard event if we were not able to set this value natively.

I&apos;d put this comment in the declaration in the header instead.

+void AccessibilityNodeObject::postKeyboardKeysForValueChange(bool increase)
+{
+    auto keyInit = KeyboardEvent::Init();
+    bool vertical = orientation() == AccessibilityOrientation::Vertical;
+    bool isLTR = page()-&gt;userInterfaceLayoutDirection() == UserInterfaceLayoutDirection::LTR;
+
+    keyInit.key = increase ? vertical ? &quot;up&quot; : isLTR ? &quot;right&quot; : &quot;left&quot; : vertical ? &quot;down&quot; : isLTR ? &quot;left&quot; : &quot;right&quot;;
+    keyInit.keyCode = increase ? vertical ? 38 : isLTR ? 39 : 37 : vertical ? 40 : isLTR ? 37: 39;

Missing space after 37:
37: 39; -&gt; 37 : 39;
Aren&apos;t named consts for these values?

+
+    auto downEvent = KeyboardEvent::create(eventNames().keydownEvent, keyInit);
+    node()-&gt;dispatchEvent(downEvent);
+
+    auto upEvent = KeyboardEvent::create(eventNames().keyupEvent, keyInit);
+    node()-&gt;dispatchEvent(upEvent);
+}
+
+void AccessibilityNodeObject::setNodeValue(bool increase, float value)
+{
+    bool didSet = setValue(String::number(value));
+
+    if (didSet) {
+        if (auto* cache = axObjectCache())
+            cache-&gt;postNotification(node(), AXObjectCache::AXValueChanged);

Why not cache-&gt;postNotification(this, AXObjectCache::AXValueChanged) directly?

+    } else
+        postKeyboardKeysForValueChange(increase);

Don&apos;t we need to postNotification here too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667484</commentid>
    <comment_count>4</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-06-29 23:49:38 -0700</bug_when>
    <thetext>
&gt; +    } else
&gt; +        postKeyboardKeysForValueChange(increase);
&gt; 
&gt; Don&apos;t we need to postNotification here too?

This will allow the web app to update itself if necessary and that change would result in a AXValueChange (if a change occurred). At this point (just posting keys) we don&apos;t know if the value changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667845</commentid>
    <comment_count>5</comment_count>
      <attachid>403269</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-06-30 22:44:31 -0700</bug_when>
    <thetext>Created attachment 403269
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667846</commentid>
    <comment_count>6</comment_count>
      <attachid>403270</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-06-30 22:51:18 -0700</bug_when>
    <thetext>Created attachment 403270
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668002</commentid>
    <comment_count>7</comment_count>
      <attachid>403270</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-01 10:42:17 -0700</bug_when>
    <thetext>Comment on attachment 403270
patch

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

looks generally OK, but super concerned about object lifetime and possibly introducing a security bug

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1106
&gt; +    keyInit.key = increase ? vertical ? &quot;ArrowUp&quot; : isLTR ? &quot;ArrowRight&quot; : &quot;ArrowLeft&quot; : vertical ? &quot;ArrowDown&quot; : isLTR ? &quot;ArrowLeft&quot; : &quot;ArrowRight&quot;;
&gt; +    keyInit.keyIdentifier = increase ? vertical ? &quot;up&quot; : isLTR ? &quot;right&quot; : &quot;left&quot; : vertical ? &quot;down&quot; : isLTR ? &quot;left&quot; : &quot;right&quot;;

Using _s on all these constants should make things more efficient.

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1109
&gt; +    auto downEvent = KeyboardEvent::create(eventNames().keydownEvent, keyInit);
&gt; +    node()-&gt;dispatchEvent(downEvent);

One-liner instead?

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1112
&gt; +    auto upEvent = KeyboardEvent::create(eventNames().keyupEvent, keyInit);
&gt; +    node()-&gt;dispatchEvent(upEvent);

One-liner instead?

After dispatching the first event, lots may have changed. I don’t think we have a guarantee about node() after that. Maybe it’s been deallocated or is not in the document any more? Are we guaranteed that &quot;this&quot; is still alive and node() is still alive, non-null, and attached to the document? May need to intentionally construct a test case where the down event handler makes huge disruptive changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668004</commentid>
    <comment_count>8</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-07-01 10:44:15 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; Comment on attachment 403270 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403270&amp;action=review
&gt; 
&gt; looks generally OK, but super concerned about object lifetime and possibly
&gt; introducing a security bug
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1106
&gt; &gt; +    keyInit.key = increase ? vertical ? &quot;ArrowUp&quot; : isLTR ? &quot;ArrowRight&quot; : &quot;ArrowLeft&quot; : vertical ? &quot;ArrowDown&quot; : isLTR ? &quot;ArrowLeft&quot; : &quot;ArrowRight&quot;;
&gt; &gt; +    keyInit.keyIdentifier = increase ? vertical ? &quot;up&quot; : isLTR ? &quot;right&quot; : &quot;left&quot; : vertical ? &quot;down&quot; : isLTR ? &quot;left&quot; : &quot;right&quot;;
&gt; 
&gt; Using _s on all these constants should make things more efficient.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1109
&gt; &gt; +    auto downEvent = KeyboardEvent::create(eventNames().keydownEvent, keyInit);
&gt; &gt; +    node()-&gt;dispatchEvent(downEvent);
&gt; 
&gt; One-liner instead?
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1112
&gt; &gt; +    auto upEvent = KeyboardEvent::create(eventNames().keyupEvent, keyInit);
&gt; &gt; +    node()-&gt;dispatchEvent(upEvent);
&gt; 
&gt; One-liner instead?

&gt; 
&gt; After dispatching the first event, lots may have changed. I don’t think we
&gt; have a guarantee about node() after that. Maybe it’s been deallocated or is
&gt; not in the document any more? Are we guaranteed that &quot;this&quot; is still alive
&gt; and node() is still alive, non-null, and attached to the document? May need
&gt; to intentionally construct a test case where the down event handler makes
&gt; huge disruptive changes.

Will add a test case for that and add more checks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668006</commentid>
    <comment_count>9</comment_count>
      <attachid>403270</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-01 10:46:13 -0700</bug_when>
    <thetext>Comment on attachment 403270
patch

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

&gt;&gt;&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1106
&gt;&gt;&gt; +    keyInit.keyIdentifier = increase ? vertical ? &quot;up&quot; : isLTR ? &quot;right&quot; : &quot;left&quot; : vertical ? &quot;down&quot; : isLTR ? &quot;left&quot; : &quot;right&quot;;
&gt;&gt; 
&gt;&gt; Using _s on all these constants should make things more efficient.
&gt; 
&gt; 

Another idea would be to use the constants from EventNames.h instead of literals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668022</commentid>
    <comment_count>10</comment_count>
      <attachid>403307</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-07-01 12:19:49 -0700</bug_when>
    <thetext>Created attachment 403307
landing patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668036</commentid>
    <comment_count>11</comment_count>
      <attachid>403307</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-01 13:10:15 -0700</bug_when>
    <thetext>Comment on attachment 403307
landing patch

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

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1111
&gt; +    // Ensure node is still valid and wasn&apos;t removed after the keydown.

What about the AccessibilityNodeObject? Is that guaranteed to still be alive? I don’t see this function doing a ref/deref on it, so the guarantee must come from outside the function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668049</commentid>
    <comment_count>12</comment_count>
      <attachid>403307</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-07-01 13:21:51 -0700</bug_when>
    <thetext>Comment on attachment 403307
landing patch

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1111
&gt;&gt; +    // Ensure node is still valid and wasn&apos;t removed after the keydown.
&gt; 
&gt; What about the AccessibilityNodeObject? Is that guaranteed to still be alive? I don’t see this function doing a ref/deref on it, so the guarantee must come from outside the function.

I don&apos;t see a guarantee for that. we&apos;ll need to add that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668053</commentid>
    <comment_count>13</comment_count>
      <attachid>403315</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-07-01 13:32:32 -0700</bug_when>
    <thetext>Created attachment 403315
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668075</commentid>
    <comment_count>14</comment_count>
      <attachid>403321</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-07-01 14:49:47 -0700</bug_when>
    <thetext>Created attachment 403321
Patch

Skip tests on windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668097</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-01 16:35:47 -0700</bug_when>
    <thetext>Committed r263823: &lt;https://trac.webkit.org/changeset/263823&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403321.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403082</attachid>
            <date>2020-06-29 10:54:47 -0700</date>
            <delta_ts>2020-06-29 10:56:38 -0700</delta_ts>
            <desc>patch`</desc>
            <filename>file_213744.txt</filename>
            <type>text/plain</type>
            <size>15895</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggYjNjNjEwYmM1MzAuLjEzMGMxYjQ0YTlhIDEwMDY0NA0KLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nDQorKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsMTMg
QEANCisyMDIwLTA2LTI5ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+DQor
DQorICAgICAgICBBWDogSW1wbGVtZW50IHJlbGV2YW50IHNpbXVsYXRlZCBrZXkgcHJlc3NlcyBm
b3IgY3VzdG9tIEFSSUEgd2lkZ2V0cyBmb3IgaW5jcmVtZW50L2RlY3JlbWVudA0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc0NA0KKw0KKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkva2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVtZW50LWFjdGlvbnMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4NCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtcG9zdGVkLWZvci1pbmNy
ZW1lbnQtYWN0aW9ucy5odG1sOiBBZGRlZC4NCisNCiAyMDIwLTA2LTI1ICBaYWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+DQogDQogICAgICAgICBbSW5saW5lXSBPdmVybGFwcGluZyBjb250
ZW50IHdoZW4gbWFyZ2luLXJpZ2h0IGlzIHByZXNlbnQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCmluZGV4IDk1OGYyYmQ4
ZWZmLi4xYWM2ZmZkODk5MCAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0K
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQpAQCAtMSwzICsxLDM4IEBADQorMjAyMC0w
Ni0yOSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPg0KKw0KKyAgICAgICAg
QVg6IEltcGxlbWVudCByZWxldmFudCBzaW11bGF0ZWQga2V5IHByZXNzZXMgZm9yIGN1c3RvbSBB
UklBIHdpZGdldHMgZm9yIGluY3JlbWVudC9kZWNyZW1lbnQNCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3NDQNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgSW4gb3JkZXIgdG8gYWxsb3cgY3VzdG9t
IEFSSUEgd2lkZ2V0cyB0byB3b3JrLCB3ZSBjYW4gcG9zdCBrZXlib2FyZCBldmVudHMgZm9yIHNw
ZWNpZmljIGF4IGFjdGlvbnMNCisgICAgICAgIHRoYXQgYXJlIG5vdCBoYW5kbGVkIG5hdGl2ZWx5
Lg0KKw0KKyAgICAgICAgU3BlYzogaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvYW9tL2Jsb2IvZ2gt
cGFnZXMvZXhwbGFpbmVyLm1kI3VzZXItYWN0aW9uLWV2ZW50cy1mcm9tLWFzc2lzdGl2ZS10ZWNo
bm9sb2d5DQorDQorICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2tleWV2ZW50cy1wb3N0ZWQt
Zm9yLWluY3JlbWVudC1hY3Rpb25zLmh0bWwNCisNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6DQorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OnBvc3RLZXlib2FyZEtleXNGb3JWYWx1ZUNoYW5nZSk6DQorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNldE5vZGVWYWx1ZSk6DQorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNoYW5nZVZhbHVlQnlTdGVw
KToNCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hhbmdlVmFs
dWVCeVBlcmNlbnQpOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0Lmg6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
Og0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Uu
aDoNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cDoNCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRWYWx1
ZSk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5o
Og0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwOg0K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxiYXI6OnNldFZhbHVlKToNCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmg6DQorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHA6DQorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVNsaWRlcjo6c2V0VmFsdWUpOg0KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaDoNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHA6DQorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZE9iamVjdDo6c2V0VmFsdWUpOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6DQorDQogMjAyMC0wNi0yNSAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+DQogDQogICAgICAgICBVbnJldmlld2VkLCByZXZl
cnRpbmcgcjI2MzUzNy4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwDQppbmRleCAyMzE5YTYxYTAyOS4uMTI2MzNj
NjZiNGMgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHANCkBAIC01Nyw2ICs1Nyw3IEBADQogI2luY2x1ZGUg
IkhUTUxTZWxlY3RFbGVtZW50LmgiDQogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIN
CiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCINCisjaW5jbHVkZSAiS2V5
Ym9hcmRFdmVudC5oIg0KICNpbmNsdWRlICJMYWJlbGFibGVFbGVtZW50LmgiDQogI2luY2x1ZGUg
IkxvY2FsaXplZFN0cmluZ3MuaCINCiAjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIg0KQEAgLTEw
OTQsMTggKzEwOTUsNDEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6ZGVjcmVtZW50
KCkNCiAgICAgYWx0ZXJTbGlkZXJWYWx1ZShmYWxzZSk7DQogfQ0KIA0KKy8vIEZpcmUgYSBrZXli
b2FyZCBldmVudCBpZiB3ZSB3ZXJlIG5vdCBhYmxlIHRvIHNldCB0aGlzIHZhbHVlIG5hdGl2ZWx5
Lg0KK3ZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnBvc3RLZXlib2FyZEtleXNGb3JWYWx1
ZUNoYW5nZShib29sIGluY3JlYXNlKQ0KK3sNCisgICAgYXV0byBrZXlJbml0ID0gS2V5Ym9hcmRF
dmVudDo6SW5pdCgpOw0KKyAgICBib29sIHZlcnRpY2FsID0gb3JpZW50YXRpb24oKSA9PSBBY2Nl
c3NpYmlsaXR5T3JpZW50YXRpb246OlZlcnRpY2FsOw0KKyAgICBib29sIGlzTFRSID0gcGFnZSgp
LT51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkgPT0gVXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbjo6TFRSOw0KKyAgICANCisgICAga2V5SW5pdC5rZXkgPSBpbmNyZWFzZSA/IHZlcnRp
Y2FsID8gInVwIiA6IGlzTFRSID8gInJpZ2h0IiA6ICJsZWZ0IiA6IHZlcnRpY2FsID8gImRvd24i
IDogaXNMVFIgPyAibGVmdCIgOiAicmlnaHQiOw0KKyAgICBrZXlJbml0LmtleUNvZGUgPSBpbmNy
ZWFzZSA/IHZlcnRpY2FsID8gMzggOiBpc0xUUiA/IDM5IDogMzcgOiB2ZXJ0aWNhbCA/IDQwIDog
aXNMVFIgPyAzNzogMzk7DQorDQorICAgIGF1dG8gZG93bkV2ZW50ID0gS2V5Ym9hcmRFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIGtleUluaXQpOw0KKyAgICBub2RlKCkt
PmRpc3BhdGNoRXZlbnQoZG93bkV2ZW50KTsNCisgICAgDQorICAgIGF1dG8gdXBFdmVudCA9IEtl
eWJvYXJkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkua2V5dXBFdmVudCwga2V5SW5pdCk7DQor
ICAgIG5vZGUoKS0+ZGlzcGF0Y2hFdmVudCh1cEV2ZW50KTsNCit9DQorDQordm9pZCBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6c2V0Tm9kZVZhbHVlKGJvb2wgaW5jcmVhc2UsIGZsb2F0IHZhbHVl
KQ0KK3sNCisgICAgYm9vbCBkaWRTZXQgPSBzZXRWYWx1ZShTdHJpbmc6Om51bWJlcih2YWx1ZSkp
Ow0KKyAgICANCisgICAgaWYgKGRpZFNldCkgew0KKyAgICAgICAgaWYgKGF1dG8qIGNhY2hlID0g
YXhPYmplY3RDYWNoZSgpKQ0KKyAgICAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKG5v
ZGUoKSwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQpOw0KKyAgICB9IGVsc2UNCisgICAg
ICAgIHBvc3RLZXlib2FyZEtleXNGb3JWYWx1ZUNoYW5nZShpbmNyZWFzZSk7DQorfQ0KKw0KIHZv
aWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNoYW5nZVZhbHVlQnlTdGVwKGJvb2wgaW5jcmVh
c2UpDQogew0KICAgICBmbG9hdCBzdGVwID0gc3RlcFZhbHVlRm9yUmFuZ2UoKTsNCiAgICAgZmxv
YXQgdmFsdWUgPSB2YWx1ZUZvclJhbmdlKCk7DQogDQogICAgIHZhbHVlICs9IGluY3JlYXNlID8g
c3RlcCA6IC1zdGVwOw0KLQ0KLSAgICBzZXRWYWx1ZShTdHJpbmc6Om51bWJlcih2YWx1ZSkpOw0K
LQ0KLSAgICBhdXRvIG9iamVjdENhY2hlID0gYXhPYmplY3RDYWNoZSgpOw0KLSAgICBpZiAob2Jq
ZWN0Q2FjaGUpDQotICAgICAgICBvYmplY3RDYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihub2RlKCks
IEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkKTsNCisgICAgc2V0Tm9kZVZhbHVlKGluY3Jl
YXNlLCB2YWx1ZSk7DQogfQ0KIA0KIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNoYW5n
ZVZhbHVlQnlQZXJjZW50KGZsb2F0IHBlcmNlbnRDaGFuZ2UpDQpAQCAtMTExOSwxMSArMTE0Myw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNoYW5nZVZhbHVlQnlQZXJjZW50KGZs
b2F0IHBlcmNlbnRDaGFuZ2UpDQogICAgICAgICBzdGVwID0gc3RkOjphYnMocGVyY2VudENoYW5n
ZSkgKiAoMSAvIHBlcmNlbnRDaGFuZ2UpOw0KIA0KICAgICB2YWx1ZSArPSBzdGVwOw0KLSAgICBz
ZXRWYWx1ZShTdHJpbmc6Om51bWJlcih2YWx1ZSkpOw0KLQ0KLSAgICBhdXRvIG9iamVjdENhY2hl
ID0gYXhPYmplY3RDYWNoZSgpOw0KLSAgICBpZiAob2JqZWN0Q2FjaGUpDQotICAgICAgICBvYmpl
Y3RDYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihub2RlKCksIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVD
aGFuZ2VkKTsNCisgICAgc2V0Tm9kZVZhbHVlKHBlcmNlbnRDaGFuZ2UgPiAwLCB2YWx1ZSk7DQog
fQ0KIA0KIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzR2VuZXJpY0ZvY3VzYWJsZUVs
ZW1lbnQoKSBjb25zdA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaA0KaW5kZXggNGUyM2NiYWJmMzcuLmNiNWY2MWJjZDlh
IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdC5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmgNCkBAIC0xODksNyArMTg5LDggQEAgcHJpdmF0ZToNCiAgICAgYm9v
bCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBi
b29sIHVzZXNBbHRUYWdGb3JUZXh0Q29tcHV0YXRpb24oKSBjb25zdDsNCiAgICAgYm9vbCByb2xl
SWdub3Jlc1RpdGxlKCkgY29uc3Q7DQotICAgIA0KKyAgICB2b2lkIHBvc3RLZXlib2FyZEtleXNG
b3JWYWx1ZUNoYW5nZShib29sIGluY3JlYXNlKTsNCisgICAgdm9pZCBzZXROb2RlVmFsdWUoYm9v
bCBpbmNyZWFzZSwgZmxvYXQgdmFsdWUpOw0KICAgICBOb2RlKiBtX25vZGU7DQogfTsNCiANCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
DQppbmRleCBjNmU2MWNlYTM4MC4uOTUzOGZlNDE1YjMgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaA0KKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgNCkBAIC00NjMsMTEgKzQ2
MywxMSBAQCBwdWJsaWM6DQogICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZSB7IH0N
CiAgICAgdm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9DQog
ICAgIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVy
cmlkZSB7IH0NCi0gICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0N
CisgICAgYm9vbCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQ0KICAgICBib29sIHJlcGxhY2VUZXh0SW5SYW5nZShjb25zdCBTdHJpbmcmLCBjb25zdCBQ
bGFpblRleHRSYW5nZSYpIG92ZXJyaWRlOw0KICAgICBib29sIGluc2VydFRleHQoY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7DQogDQotICAgIHZvaWQgc2V0VmFsdWUoZmxvYXQpIG92ZXJyaWRlIHsg
fQ0KKyAgICBib29sIHNldFZhbHVlKGZsb2F0KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0K
ICAgICB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIG92ZXJyaWRlIHsgfQ0KICAgICB2b2lkIHNldFNl
bGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0NCiAN
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdEludGVyZmFjZS5oDQppbmRleCA2MWExMWJiNDNiNi4uYmVhNGE3ZmY0NmIgMTAw
NjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UuaA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgNCkBAIC04OTYsMTEgKzg5NiwxMSBAQCBwdWJsaWM6DQog
ICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1c2VkKGJvb2wpID0gMDsNCiAgICAgdmlydHVhbCB2b2lk
IHNldFNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7DQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpID0gMDsNCi0gICAgdmly
dHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpID0gMDsNCisgICAgdmlydHVhbCBib29s
IHNldFZhbHVlKGNvbnN0IFN0cmluZyYpID0gMDsNCiAgICAgdmlydHVhbCBib29sIHJlcGxhY2VU
ZXh0SW5SYW5nZShjb25zdCBTdHJpbmcmLCBjb25zdCBQbGFpblRleHRSYW5nZSYpID0gMDsNCiAg
ICAgdmlydHVhbCBib29sIGluc2VydFRleHQoY29uc3QgU3RyaW5nJikgPSAwOw0KIA0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0VmFsdWUoZmxvYXQpID0gMDsNCisgICAgdmlydHVhbCBib29sIHNldFZh
bHVlKGZsb2F0KSA9IDA7DQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChib29sKSA9IDA7
DQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgPSAwOw0KIA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwDQppbmRleCA2MjI0OWEzODE1MS4u
ZDZlZTJiOTAyYTUgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwDQpAQCAtMTg1OCwxMCArMTg1OCwx
MCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFNlbGVjdGVkUm93cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHNlbA0KICAgICAgICAgc2VsZWN0ZWRSb3ctPnNldFNl
bGVjdGVkKHRydWUpOw0KIH0NCiAgICAgDQotdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHN0cmluZykNCitib29sIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQ0KIHsNCiAgICAgaWYgKCFt
X3JlbmRlcmVyIHx8ICFpczxFbGVtZW50PihtX3JlbmRlcmVyLT5ub2RlKCkpKQ0KLSAgICAgICAg
cmV0dXJuOw0KKyAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICANCiAgICAgRWxlbWVudCYgZWxl
bWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCptX3JlbmRlcmVyLT5ub2RlKCkpOw0KICAgICBSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyID0gKm1fcmVuZGVyZXI7DQpAQCAtMTg3MywxNCArMTg3MywyMCBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQ0KICAgICAgICAgaWYgKGVsZW1lbnQuc2hvdWxkVXNlSW5wdXRNZXRob2QoKSkgew0K
ICAgICAgICAgICAgIGVkaXRvci5jbGVhclRleHQoKTsNCiAgICAgICAgICAgICBlZGl0b3IuaW5z
ZXJ0VGV4dChzdHJpbmcsIG51bGxwdHIpOw0KLSAgICAgICAgICAgIHJldHVybjsNCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgIH0NCiAgICAgfQ0KICAgICAvLyBGSVhNRTogRG8g
d2Ugd2FudCB0byBkbyBhbnl0aGluZyBoZXJlIGZvciBBUklBIHRleHRib3hlcz8NCi0gICAgaWYg
KHJlbmRlcmVyLmlzVGV4dEZpZWxkKCkgJiYgaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkp
DQorICAgIGlmIChyZW5kZXJlci5pc1RleHRGaWVsZCgpICYmIGlzPEhUTUxJbnB1dEVsZW1lbnQ+
KGVsZW1lbnQpKSB7DQogICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50
KS5zZXRWYWx1ZShzdHJpbmcpOw0KLSAgICBlbHNlIGlmIChyZW5kZXJlci5pc1RleHRBcmVhKCkg
JiYgaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCkpDQorICAgICAgICByZXR1cm4gdHJ1
ZTsNCisgICAgfQ0KKyAgICBlbHNlIGlmIChyZW5kZXJlci5pc1RleHRBcmVhKCkgJiYgaXM8SFRN
TFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCkpIHsNCiAgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0
QXJlYUVsZW1lbnQ+KGVsZW1lbnQpLnNldFZhbHVlKHN0cmluZyk7DQorICAgICAgICByZXR1cm4g
dHJ1ZTsNCisgICAgfQ0KKyAgICANCisgICAgcmV0dXJuIGZhbHNlOw0KIH0NCiANCiBib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN1cHBvcnRzQVJJQU93bnMoKSBjb25zdA0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmgNCmluZGV4IDc4MTg1ZTcwMzI4Li45OTIzNTc2ZWEzMSAxMDA2NDQNCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oDQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaA0KQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6DQogICAgIA0KICAgICB2b2lkIHNldEZv
Y3VzZWQoYm9vbCkgb3ZlcnJpZGU7DQogICAgIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29u
c3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlkZTsNCi0gICAgdm9pZCBzZXRWYWx1ZShjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsNCisgICAgYm9vbCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsNCiAgICAgdm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgb3ZlcnJpZGU7DQogICAgIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlv
bigpIGNvbnN0IG92ZXJyaWRlOw0KIA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwDQppbmRleCBjMDg5MTZhNzlmNC4u
NzU0N2Y2ZjE1NWEgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwDQpAQCAtOTIsMTMgKzkyLDE0IEBAIGZsb2F0
IEFjY2Vzc2liaWxpdHlTY3JvbGxiYXI6OnZhbHVlRm9yUmFuZ2UoKSBjb25zdA0KICAgICByZXR1
cm4gbV9zY3JvbGxiYXItPmN1cnJlbnRQb3MoKSAvIG1fc2Nyb2xsYmFyLT5tYXhpbXVtKCk7DQog
fQ0KIA0KLXZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbGJhcjo6c2V0VmFsdWUoZmxvYXQgdmFsdWUp
DQorYm9vbCBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyOjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSkNCiB7
DQogICAgIGlmICghbV9zY3JvbGxiYXIpDQotICAgICAgICByZXR1cm47DQorICAgICAgICByZXR1
cm4gZmFsc2U7DQogICAgIA0KICAgICBmbG9hdCBuZXdWYWx1ZSA9IHZhbHVlICogbV9zY3JvbGxi
YXItPm1heGltdW0oKTsNCiAgICAgbV9zY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCkuc2Nyb2xs
VG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKG1fc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpLCBuZXdW
YWx1ZSk7DQorICAgIHJldHVybiB0cnVlOw0KIH0NCiAgICAgDQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQ0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsYmFyLmgNCmluZGV4IDRiMGQyZTNiYjBjLi5mYjIxZWE1MzBlNiAxMDA2NDQNCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5o
DQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxi
YXIuaA0KQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToNCiAgICAgYm9vbCBpc0VuYWJsZWQoKSBj
b25zdCBvdmVycmlkZTsNCiAgICAgDQogICAgIC8vIEFzc3VtZXMgZmxvYXQgWzAuLjFdDQotICAg
IHZvaWQgc2V0VmFsdWUoZmxvYXQpIG92ZXJyaWRlOw0KKyAgICBib29sIHNldFZhbHVlKGZsb2F0
KSBvdmVycmlkZTsNCiAgICAgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOw0K
IA0KICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX3Njcm9sbGJhcjsNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcA0KaW5kZXggY2M2
Y2I4MThlOGIuLmExYTE0Nzk5ZWVlIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcA0KQEAgLTEyNiwxNCArMTI2LDE1IEBA
IGZsb2F0IEFjY2Vzc2liaWxpdHlTbGlkZXI6Om1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdA0KICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGlucHV0RWxlbWVudCgpLT5taW5pbXVtKCkpOw0K
IH0NCiANCi12b2lkIEFjY2Vzc2liaWxpdHlTbGlkZXI6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYg
dmFsdWUpDQorYm9vbCBBY2Nlc3NpYmlsaXR5U2xpZGVyOjpzZXRWYWx1ZShjb25zdCBTdHJpbmcm
IHZhbHVlKQ0KIHsNCiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBpbnB1dEVsZW1lbnQo
KTsNCiAgICAgDQogICAgIGlmIChpbnB1dC0+dmFsdWUoKSA9PSB2YWx1ZSkNCi0gICAgICAgIHJl
dHVybjsNCisgICAgICAgIHJldHVybiB0cnVlOw0KIA0KICAgICBpbnB1dC0+c2V0VmFsdWUodmFs
dWUsIERpc3BhdGNoQ2hhbmdlRXZlbnQpOw0KKyAgICByZXR1cm4gdHJ1ZTsNCiB9DQogDQogSFRN
TElucHV0RWxlbWVudCogQWNjZXNzaWJpbGl0eVNsaWRlcjo6aW5wdXRFbGVtZW50KCkgY29uc3QN
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
bGlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRl
ci5oDQppbmRleCA5MWM3MDkyNWU2ZC4uYWJhOTEyMDAwODQgMTAwNjQ0DQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaA0KKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgNCkBAIC01Nyw3ICs1
Nyw3IEBAIHByaXZhdGU6DQogICAgIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9DQogICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7DQogICAgIA0KLSAgICB2
b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOw0KKyAgICBib29sIHNldFZhbHVl
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOw0KICAgICBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29u
c3Qgb3ZlcnJpZGU7DQogICAgIGZsb2F0IG1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlk
ZTsNCiAgICAgZmxvYXQgbWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOw0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5jcHANCmluZGV4IDgzOTViZTI2YTQ5Li4wNjFlOWE2ODYwZCAxMDA2
NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuY3BwDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcA0KQEAgLTYyOSwxMCArNjI5LDIyIEBAIHZvaWQg
QVhJc29sYXRlZE9iamVjdDo6c2V0SXNFeHBhbmRlZChib29sIHZhbHVlKQ0KICAgICAgICAgb2Jq
ZWN0LT5zZXRJc0V4cGFuZGVkKHZhbHVlKTsNCiAgICAgfSk7DQogfQ0KLXZvaWQgQVhJc29sYXRl
ZE9iamVjdDo6c2V0VmFsdWUoZmxvYXQgdmFsdWUpDQorDQorYm9vbCBBWElzb2xhdGVkT2JqZWN0
OjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSkNCiB7DQotICAgIHBlcmZvcm1GdW5jdGlvbk9uTWFpblRo
cmVhZChbJnZhbHVlXShBWENvcmVPYmplY3QqIG9iamVjdCkgew0KLSAgICAgICAgb2JqZWN0LT5z
ZXRWYWx1ZSh2YWx1ZSk7DQorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVl
RnJvbU1haW5UaHJlYWQ8Ym9vbD4oWyZ2YWx1ZSwgdGhpc10gKCkgLT4gYm9vbCB7DQorICAgICAg
ICBpZiAoYXV0byogYXhPYmplY3QgPSBhc3NvY2lhdGVkQVhPYmplY3QoKSkNCisgICAgICAgICAg
ICByZXR1cm4gYXhPYmplY3QtPnNldFZhbHVlKHZhbHVlKTsNCisgICAgICAgIHJldHVybiBmYWxz
ZTsNCisgICAgfSk7DQorfQ0KKw0KK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6c2V0VmFsdWUoY29u
c3QgU3RyaW5nJiB2YWx1ZSkNCit7DQorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2
ZVZhbHVlRnJvbU1haW5UaHJlYWQ8Ym9vbD4oWyZ2YWx1ZSwgdGhpc10gKCkgLT4gYm9vbCB7DQor
ICAgICAgICBpZiAoYXV0byogYXhPYmplY3QgPSBhc3NvY2lhdGVkQVhPYmplY3QoKSkNCisgICAg
ICAgICAgICByZXR1cm4gYXhPYmplY3QtPnNldFZhbHVlKHZhbHVlKTsNCisgICAgICAgIHJldHVy
biBmYWxzZTsNCiAgICAgfSk7DQogfQ0KIA0KQEAgLTY3MSwxMyArNjgzLDYgQEAgdm9pZCBBWElz
b2xhdGVkT2JqZWN0OjpzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYg
dmFsdWUpDQogICAgIH0pOw0KIH0NCiANCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldFZhbHVl
KGNvbnN0IFN0cmluZyYgdmFsdWUpDQotew0KLSAgICBwZXJmb3JtRnVuY3Rpb25Pbk1haW5UaHJl
YWQoWyZ2YWx1ZV0oQVhDb3JlT2JqZWN0KiBvYmplY3QpIHsNCi0gICAgICAgIG9iamVjdC0+c2V0
VmFsdWUodmFsdWUpOw0KLSAgICB9KTsNCi19DQotDQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkNCiB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldENhcmV0QnJv
d3NpbmdFbmFibGVkKGJvb2wgdmFsdWUpDQogew0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaA0KaW5k
ZXggYmFhNWRiZmI5YTMuLjZjOGNkNTBmYWQ5IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oDQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgN
CkBAIC03MDMsMTMgKzcwMywxMyBAQCBwcml2YXRlOg0KICAgICAvLyBBdHRyaWJ1dGUgc2V0dGVy
cy4NCiAgICAgdm9pZCBzZXRBUklBR3JhYmJlZChib29sKSBvdmVycmlkZTsNCiAgICAgdm9pZCBz
ZXRJc0V4cGFuZGVkKGJvb2wpIG92ZXJyaWRlOw0KLSAgICB2b2lkIHNldFZhbHVlKGZsb2F0KSBv
dmVycmlkZTsNCisgICAgYm9vbCBzZXRWYWx1ZShmbG9hdCkgb3ZlcnJpZGU7DQogICAgIHZvaWQg
c2V0U2VsZWN0ZWQoYm9vbCkgb3ZlcnJpZGU7DQogICAgIHZvaWQgc2V0U2VsZWN0ZWRSb3dzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlOw0KICAgICB2b2lkIHNldEZvY3Vz
ZWQoYm9vbCkgb3ZlcnJpZGU7DQogICAgIHZvaWQgc2V0U2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOw0KICAgICB2b2lkIHNldFNlbGVjdGVkVGV4dFJhbmdlKGNvbnN0IFBsYWlu
VGV4dFJhbmdlJikgb3ZlcnJpZGU7DQotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7DQorICAgIGJvb2wgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7DQog
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkNCiAgICAgdm9pZCBz
ZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKSBvdmVycmlkZTsNCiAjZW5kaWYNCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403083</attachid>
            <date>2020-06-29 10:56:38 -0700</date>
            <delta_ts>2020-06-30 22:44:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>file_213744.txt</filename>
            <type>text/plain</type>
            <size>15890</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggYjNjNjEwYmM1MzAuLjEzMGMxYjQ0YTlhIDEwMDY0NA0KLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nDQorKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsMTMg
QEANCisyMDIwLTA2LTI5ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+DQor
DQorICAgICAgICBBWDogSW1wbGVtZW50IHJlbGV2YW50IHNpbXVsYXRlZCBrZXkgcHJlc3NlcyBm
b3IgY3VzdG9tIEFSSUEgd2lkZ2V0cyBmb3IgaW5jcmVtZW50L2RlY3JlbWVudA0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc0NA0KKw0KKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkva2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVtZW50LWFjdGlvbnMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4NCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtcG9zdGVkLWZvci1pbmNy
ZW1lbnQtYWN0aW9ucy5odG1sOiBBZGRlZC4NCisNCiAyMDIwLTA2LTI1ICBaYWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+DQogDQogICAgICAgICBbSW5saW5lXSBPdmVybGFwcGluZyBjb250
ZW50IHdoZW4gbWFyZ2luLXJpZ2h0IGlzIHByZXNlbnQNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCmluZGV4IDk1OGYyYmQ4
ZWZmLi4xYWM2ZmZkODk5MCAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0K
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQpAQCAtMSwzICsxLDM4IEBADQorMjAyMC0w
Ni0yOSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPg0KKw0KKyAgICAgICAg
QVg6IEltcGxlbWVudCByZWxldmFudCBzaW11bGF0ZWQga2V5IHByZXNzZXMgZm9yIGN1c3RvbSBB
UklBIHdpZGdldHMgZm9yIGluY3JlbWVudC9kZWNyZW1lbnQNCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3NDQNCisNCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgSW4gb3JkZXIgdG8gYWxsb3cgY3VzdG9t
IEFSSUEgd2lkZ2V0cyB0byB3b3JrLCB3ZSBjYW4gcG9zdCBrZXlib2FyZCBldmVudHMgZm9yIHNw
ZWNpZmljIGF4IGFjdGlvbnMNCisgICAgICAgIHRoYXQgYXJlIG5vdCBoYW5kbGVkIG5hdGl2ZWx5
Lg0KKw0KKyAgICAgICAgU3BlYzogaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvYW9tL2Jsb2IvZ2gt
cGFnZXMvZXhwbGFpbmVyLm1kI3VzZXItYWN0aW9uLWV2ZW50cy1mcm9tLWFzc2lzdGl2ZS10ZWNo
bm9sb2d5DQorDQorICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2tleWV2ZW50cy1wb3N0ZWQt
Zm9yLWluY3JlbWVudC1hY3Rpb25zLmh0bWwNCisNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6DQorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OnBvc3RLZXlib2FyZEtleXNGb3JWYWx1ZUNoYW5nZSk6DQorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNldE5vZGVWYWx1ZSk6DQorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNoYW5nZVZhbHVlQnlTdGVw
KToNCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hhbmdlVmFs
dWVCeVBlcmNlbnQpOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0Lmg6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
Og0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Uu
aDoNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cDoNCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRWYWx1
ZSk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5o
Og0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwOg0K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxiYXI6OnNldFZhbHVlKToNCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmg6DQorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHA6DQorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVNsaWRlcjo6c2V0VmFsdWUpOg0KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaDoNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHA6DQorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZE9iamVjdDo6c2V0VmFsdWUpOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6DQorDQogMjAyMC0wNi0yNSAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+DQogDQogICAgICAgICBVbnJldmlld2VkLCByZXZl
cnRpbmcgcjI2MzUzNy4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwDQppbmRleCAyMzE5YTYxYTAyOS4uMTI2MzNj
NjZiNGMgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHANCkBAIC01Nyw2ICs1Nyw3IEBADQogI2luY2x1ZGUg
IkhUTUxTZWxlY3RFbGVtZW50LmgiDQogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIN
CiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCINCisjaW5jbHVkZSAiS2V5
Ym9hcmRFdmVudC5oIg0KICNpbmNsdWRlICJMYWJlbGFibGVFbGVtZW50LmgiDQogI2luY2x1ZGUg
IkxvY2FsaXplZFN0cmluZ3MuaCINCiAjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIg0KQEAgLTEw
OTQsMTggKzEwOTUsNDEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6ZGVjcmVtZW50
KCkNCiAgICAgYWx0ZXJTbGlkZXJWYWx1ZShmYWxzZSk7DQogfQ0KIA0KKy8vIEZpcmUgYSBrZXli
b2FyZCBldmVudCBpZiB3ZSB3ZXJlIG5vdCBhYmxlIHRvIHNldCB0aGlzIHZhbHVlIG5hdGl2ZWx5
Lg0KK3ZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnBvc3RLZXlib2FyZEtleXNGb3JWYWx1
ZUNoYW5nZShib29sIGluY3JlYXNlKQ0KK3sNCisgICAgYXV0byBrZXlJbml0ID0gS2V5Ym9hcmRF
dmVudDo6SW5pdCgpOw0KKyAgICBib29sIHZlcnRpY2FsID0gb3JpZW50YXRpb24oKSA9PSBBY2Nl
c3NpYmlsaXR5T3JpZW50YXRpb246OlZlcnRpY2FsOw0KKyAgICBib29sIGlzTFRSID0gcGFnZSgp
LT51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkgPT0gVXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbjo6TFRSOw0KKyAgICANCisgICAga2V5SW5pdC5rZXkgPSBpbmNyZWFzZSA/IHZlcnRp
Y2FsID8gInVwIiA6IGlzTFRSID8gInJpZ2h0IiA6ICJsZWZ0IiA6IHZlcnRpY2FsID8gImRvd24i
IDogaXNMVFIgPyAibGVmdCIgOiAicmlnaHQiOw0KKyAgICBrZXlJbml0LmtleUNvZGUgPSBpbmNy
ZWFzZSA/IHZlcnRpY2FsID8gMzggOiBpc0xUUiA/IDM5IDogMzcgOiB2ZXJ0aWNhbCA/IDQwIDog
aXNMVFIgPyAzNzogMzk7DQorDQorICAgIGF1dG8gZG93bkV2ZW50ID0gS2V5Ym9hcmRFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIGtleUluaXQpOw0KKyAgICBub2RlKCkt
PmRpc3BhdGNoRXZlbnQoZG93bkV2ZW50KTsNCisgICAgDQorICAgIGF1dG8gdXBFdmVudCA9IEtl
eWJvYXJkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkua2V5dXBFdmVudCwga2V5SW5pdCk7DQor
ICAgIG5vZGUoKS0+ZGlzcGF0Y2hFdmVudCh1cEV2ZW50KTsNCit9DQorDQordm9pZCBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6c2V0Tm9kZVZhbHVlKGJvb2wgaW5jcmVhc2UsIGZsb2F0IHZhbHVl
KQ0KK3sNCisgICAgYm9vbCBkaWRTZXQgPSBzZXRWYWx1ZShTdHJpbmc6Om51bWJlcih2YWx1ZSkp
Ow0KKyAgICANCisgICAgaWYgKGRpZFNldCkgew0KKyAgICAgICAgaWYgKGF1dG8qIGNhY2hlID0g
YXhPYmplY3RDYWNoZSgpKQ0KKyAgICAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKG5v
ZGUoKSwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQpOw0KKyAgICB9IGVsc2UNCisgICAg
ICAgIHBvc3RLZXlib2FyZEtleXNGb3JWYWx1ZUNoYW5nZShpbmNyZWFzZSk7DQorfQ0KKw0KIHZv
aWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNoYW5nZVZhbHVlQnlTdGVwKGJvb2wgaW5jcmVh
c2UpDQogew0KICAgICBmbG9hdCBzdGVwID0gc3RlcFZhbHVlRm9yUmFuZ2UoKTsNCiAgICAgZmxv
YXQgdmFsdWUgPSB2YWx1ZUZvclJhbmdlKCk7DQogDQogICAgIHZhbHVlICs9IGluY3JlYXNlID8g
c3RlcCA6IC1zdGVwOw0KLQ0KLSAgICBzZXRWYWx1ZShTdHJpbmc6Om51bWJlcih2YWx1ZSkpOw0K
LQ0KLSAgICBhdXRvIG9iamVjdENhY2hlID0gYXhPYmplY3RDYWNoZSgpOw0KLSAgICBpZiAob2Jq
ZWN0Q2FjaGUpDQotICAgICAgICBvYmplY3RDYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihub2RlKCks
IEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkKTsNCisgICAgc2V0Tm9kZVZhbHVlKGluY3Jl
YXNlLCB2YWx1ZSk7DQogfQ0KIA0KIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNoYW5n
ZVZhbHVlQnlQZXJjZW50KGZsb2F0IHBlcmNlbnRDaGFuZ2UpDQpAQCAtMTExOSwxMSArMTE0Myw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNoYW5nZVZhbHVlQnlQZXJjZW50KGZs
b2F0IHBlcmNlbnRDaGFuZ2UpDQogICAgICAgICBzdGVwID0gc3RkOjphYnMocGVyY2VudENoYW5n
ZSkgKiAoMSAvIHBlcmNlbnRDaGFuZ2UpOw0KIA0KICAgICB2YWx1ZSArPSBzdGVwOw0KLSAgICBz
ZXRWYWx1ZShTdHJpbmc6Om51bWJlcih2YWx1ZSkpOw0KLQ0KLSAgICBhdXRvIG9iamVjdENhY2hl
ID0gYXhPYmplY3RDYWNoZSgpOw0KLSAgICBpZiAob2JqZWN0Q2FjaGUpDQotICAgICAgICBvYmpl
Y3RDYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihub2RlKCksIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVD
aGFuZ2VkKTsNCisgICAgc2V0Tm9kZVZhbHVlKHBlcmNlbnRDaGFuZ2UgPiAwLCB2YWx1ZSk7DQog
fQ0KIA0KIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzR2VuZXJpY0ZvY3VzYWJsZUVs
ZW1lbnQoKSBjb25zdA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaA0KaW5kZXggNGUyM2NiYWJmMzcuLmNiNWY2MWJjZDlh
IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdC5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmgNCkBAIC0xODksNyArMTg5LDggQEAgcHJpdmF0ZToNCiAgICAgYm9v
bCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBi
b29sIHVzZXNBbHRUYWdGb3JUZXh0Q29tcHV0YXRpb24oKSBjb25zdDsNCiAgICAgYm9vbCByb2xl
SWdub3Jlc1RpdGxlKCkgY29uc3Q7DQotICAgIA0KKyAgICB2b2lkIHBvc3RLZXlib2FyZEtleXNG
b3JWYWx1ZUNoYW5nZShib29sIGluY3JlYXNlKTsNCisgICAgdm9pZCBzZXROb2RlVmFsdWUoYm9v
bCBpbmNyZWFzZSwgZmxvYXQgdmFsdWUpOw0KICAgICBOb2RlKiBtX25vZGU7DQogfTsNCiANCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
DQppbmRleCBjNmU2MWNlYTM4MC4uOTUzOGZlNDE1YjMgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaA0KKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgNCkBAIC00NjMsMTEgKzQ2
MywxMSBAQCBwdWJsaWM6DQogICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZSB7IH0N
CiAgICAgdm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9DQog
ICAgIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVy
cmlkZSB7IH0NCi0gICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0N
CisgICAgYm9vbCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQ0KICAgICBib29sIHJlcGxhY2VUZXh0SW5SYW5nZShjb25zdCBTdHJpbmcmLCBjb25zdCBQ
bGFpblRleHRSYW5nZSYpIG92ZXJyaWRlOw0KICAgICBib29sIGluc2VydFRleHQoY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7DQogDQotICAgIHZvaWQgc2V0VmFsdWUoZmxvYXQpIG92ZXJyaWRlIHsg
fQ0KKyAgICBib29sIHNldFZhbHVlKGZsb2F0KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0K
ICAgICB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIG92ZXJyaWRlIHsgfQ0KICAgICB2b2lkIHNldFNl
bGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0NCiAN
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdEludGVyZmFjZS5oDQppbmRleCA2MWExMWJiNDNiNi4uYmVhNGE3ZmY0NmIgMTAw
NjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UuaA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgNCkBAIC04OTYsMTEgKzg5NiwxMSBAQCBwdWJsaWM6DQog
ICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1c2VkKGJvb2wpID0gMDsNCiAgICAgdmlydHVhbCB2b2lk
IHNldFNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7DQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpID0gMDsNCi0gICAgdmly
dHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpID0gMDsNCisgICAgdmlydHVhbCBib29s
IHNldFZhbHVlKGNvbnN0IFN0cmluZyYpID0gMDsNCiAgICAgdmlydHVhbCBib29sIHJlcGxhY2VU
ZXh0SW5SYW5nZShjb25zdCBTdHJpbmcmLCBjb25zdCBQbGFpblRleHRSYW5nZSYpID0gMDsNCiAg
ICAgdmlydHVhbCBib29sIGluc2VydFRleHQoY29uc3QgU3RyaW5nJikgPSAwOw0KIA0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0VmFsdWUoZmxvYXQpID0gMDsNCisgICAgdmlydHVhbCBib29sIHNldFZh
bHVlKGZsb2F0KSA9IDA7DQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChib29sKSA9IDA7
DQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgPSAwOw0KIA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwDQppbmRleCA2MjI0OWEzODE1MS4u
Yjg1MDIxNGRhMmQgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwDQpAQCAtMTg1OCwxMCArMTg1OCwx
MCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFNlbGVjdGVkUm93cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHNlbA0KICAgICAgICAgc2VsZWN0ZWRSb3ctPnNldFNl
bGVjdGVkKHRydWUpOw0KIH0NCiAgICAgDQotdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHN0cmluZykNCitib29sIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQ0KIHsNCiAgICAgaWYgKCFt
X3JlbmRlcmVyIHx8ICFpczxFbGVtZW50PihtX3JlbmRlcmVyLT5ub2RlKCkpKQ0KLSAgICAgICAg
cmV0dXJuOw0KKyAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICANCiAgICAgRWxlbWVudCYgZWxl
bWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCptX3JlbmRlcmVyLT5ub2RlKCkpOw0KICAgICBSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyID0gKm1fcmVuZGVyZXI7DQpAQCAtMTg3MywxNCArMTg3MywyMCBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQ0KICAgICAgICAgaWYgKGVsZW1lbnQuc2hvdWxkVXNlSW5wdXRNZXRob2QoKSkgew0K
ICAgICAgICAgICAgIGVkaXRvci5jbGVhclRleHQoKTsNCiAgICAgICAgICAgICBlZGl0b3IuaW5z
ZXJ0VGV4dChzdHJpbmcsIG51bGxwdHIpOw0KLSAgICAgICAgICAgIHJldHVybjsNCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgIH0NCiAgICAgfQ0KICAgICAvLyBGSVhNRTogRG8g
d2Ugd2FudCB0byBkbyBhbnl0aGluZyBoZXJlIGZvciBBUklBIHRleHRib3hlcz8NCi0gICAgaWYg
KHJlbmRlcmVyLmlzVGV4dEZpZWxkKCkgJiYgaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkp
DQorICAgIGlmIChyZW5kZXJlci5pc1RleHRGaWVsZCgpICYmIGlzPEhUTUxJbnB1dEVsZW1lbnQ+
KGVsZW1lbnQpKSB7DQogICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50
KS5zZXRWYWx1ZShzdHJpbmcpOw0KLSAgICBlbHNlIGlmIChyZW5kZXJlci5pc1RleHRBcmVhKCkg
JiYgaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCkpDQorICAgICAgICByZXR1cm4gdHJ1
ZTsNCisgICAgfQ0KKyAgICBpZiAocmVuZGVyZXIuaXNUZXh0QXJlYSgpICYmIGlzPEhUTUxUZXh0
QXJlYUVsZW1lbnQ+KGVsZW1lbnQpKSB7DQogICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEFyZWFF
bGVtZW50PihlbGVtZW50KS5zZXRWYWx1ZShzdHJpbmcpOw0KKyAgICAgICAgcmV0dXJuIHRydWU7
DQorICAgIH0NCisgICAgDQorICAgIHJldHVybiBmYWxzZTsNCiB9DQogDQogYm9vbCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpzdXBwb3J0c0FSSUFPd25zKCkgY29uc3QNCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5oDQppbmRleCA3ODE4NWU3MDMyOC4uOTkyMzU3NmVhMzEgMTAwNjQ0DQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaA0KKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgN
CkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOg0KICAgICANCiAgICAgdm9pZCBzZXRGb2N1c2Vk
KGJvb2wpIG92ZXJyaWRlOw0KICAgICB2b2lkIHNldFNlbGVjdGVkVGV4dFJhbmdlKGNvbnN0IFBs
YWluVGV4dFJhbmdlJikgb3ZlcnJpZGU7DQotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7DQorICAgIGJvb2wgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
DQogICAgIHZvaWQgc2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
IG92ZXJyaWRlOw0KICAgICBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBj
b25zdCBvdmVycmlkZTsNCiANCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcA0KaW5kZXggYzA4OTE2YTc5ZjQuLjc1NDdm
NmYxNTVhIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2Nyb2xsYmFyLmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcA0KQEAgLTkyLDEzICs5MiwxNCBAQCBmbG9hdCBBY2Nl
c3NpYmlsaXR5U2Nyb2xsYmFyOjp2YWx1ZUZvclJhbmdlKCkgY29uc3QNCiAgICAgcmV0dXJuIG1f
c2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgLyBtX3Njcm9sbGJhci0+bWF4aW11bSgpOw0KIH0NCiAN
Ci12b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXI6OnNldFZhbHVlKGZsb2F0IHZhbHVlKQ0KK2Jv
b2wgQWNjZXNzaWJpbGl0eVNjcm9sbGJhcjo6c2V0VmFsdWUoZmxvYXQgdmFsdWUpDQogew0KICAg
ICBpZiAoIW1fc2Nyb2xsYmFyKQ0KLSAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgcmV0dXJuIGZh
bHNlOw0KICAgICANCiAgICAgZmxvYXQgbmV3VmFsdWUgPSB2YWx1ZSAqIG1fc2Nyb2xsYmFyLT5t
YXhpbXVtKCk7DQogICAgIG1fc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLnNjcm9sbFRvT2Zm
c2V0V2l0aG91dEFuaW1hdGlvbihtX3Njcm9sbGJhci0+b3JpZW50YXRpb24oKSwgbmV3VmFsdWUp
Ow0KKyAgICByZXR1cm4gdHJ1ZTsNCiB9DQogICAgIA0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUN
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
Y3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbGJhci5oDQppbmRleCA0YjBkMmUzYmIwYy4uZmIyMWVhNTMwZTYgMTAwNjQ0DQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaA0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgN
CkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6DQogICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qg
b3ZlcnJpZGU7DQogICAgIA0KICAgICAvLyBBc3N1bWVzIGZsb2F0IFswLi4xXQ0KLSAgICB2b2lk
IHNldFZhbHVlKGZsb2F0KSBvdmVycmlkZTsNCisgICAgYm9vbCBzZXRWYWx1ZShmbG9hdCkgb3Zl
cnJpZGU7DQogICAgIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsNCiANCiAg
ICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9zY3JvbGxiYXI7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHANCmluZGV4IGNjNmNiODE4
ZThiLi5hMWExNDc5OWVlZSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHANCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHANCkBAIC0xMjYsMTQgKzEyNiwxNSBAQCBmbG9h
dCBBY2Nlc3NpYmlsaXR5U2xpZGVyOjptaW5WYWx1ZUZvclJhbmdlKCkgY29uc3QNCiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGZsb2F0PihpbnB1dEVsZW1lbnQoKS0+bWluaW11bSgpKTsNCiB9DQog
DQotdm9pZCBBY2Nlc3NpYmlsaXR5U2xpZGVyOjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVl
KQ0KK2Jvb2wgQWNjZXNzaWJpbGl0eVNsaWRlcjo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1
ZSkNCiB7DQogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gaW5wdXRFbGVtZW50KCk7DQog
ICAgIA0KICAgICBpZiAoaW5wdXQtPnZhbHVlKCkgPT0gdmFsdWUpDQotICAgICAgICByZXR1cm47
DQorICAgICAgICByZXR1cm4gdHJ1ZTsNCiANCiAgICAgaW5wdXQtPnNldFZhbHVlKHZhbHVlLCBE
aXNwYXRjaENoYW5nZUV2ZW50KTsNCisgICAgcmV0dXJuIHRydWU7DQogfQ0KIA0KIEhUTUxJbnB1
dEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlTbGlkZXI6OmlucHV0RWxlbWVudCgpIGNvbnN0DQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaA0K
aW5kZXggOTFjNzA5MjVlNmQuLmFiYTkxMjAwMDg0IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgNCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oDQpAQCAtNTcsNyArNTcsNyBA
QCBwcml2YXRlOg0KICAgICBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQ0KICAgICBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOw0KICAgICANCi0gICAgdm9pZCBz
ZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsNCisgICAgYm9vbCBzZXRWYWx1ZShjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsNCiAgICAgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92
ZXJyaWRlOw0KICAgICBmbG9hdCBtYXhWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7DQog
ICAgIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsNCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuY3BwDQppbmRleCA4Mzk1YmUyNmE0OS4uMDYxZTlhNjg2MGQgMTAwNjQ0DQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCkBAIC02MjksMTAgKzYyOSwyMiBAQCB2b2lkIEFYSXNv
bGF0ZWRPYmplY3Q6OnNldElzRXhwYW5kZWQoYm9vbCB2YWx1ZSkNCiAgICAgICAgIG9iamVjdC0+
c2V0SXNFeHBhbmRlZCh2YWx1ZSk7DQogICAgIH0pOw0KIH0NCi12b2lkIEFYSXNvbGF0ZWRPYmpl
Y3Q6OnNldFZhbHVlKGZsb2F0IHZhbHVlKQ0KKw0KK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6c2V0
VmFsdWUoZmxvYXQgdmFsdWUpDQogew0KLSAgICBwZXJmb3JtRnVuY3Rpb25Pbk1haW5UaHJlYWQo
WyZ2YWx1ZV0oQVhDb3JlT2JqZWN0KiBvYmplY3QpIHsNCi0gICAgICAgIG9iamVjdC0+c2V0VmFs
dWUodmFsdWUpOw0KKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21N
YWluVGhyZWFkPGJvb2w+KFsmdmFsdWUsIHRoaXNdICgpIC0+IGJvb2wgew0KKyAgICAgICAgaWYg
KGF1dG8qIGF4T2JqZWN0ID0gYXNzb2NpYXRlZEFYT2JqZWN0KCkpDQorICAgICAgICAgICAgcmV0
dXJuIGF4T2JqZWN0LT5zZXRWYWx1ZSh2YWx1ZSk7DQorICAgICAgICByZXR1cm4gZmFsc2U7DQor
ICAgIH0pOw0KK30NCisNCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OnNldFZhbHVlKGNvbnN0IFN0
cmluZyYgdmFsdWUpDQorew0KKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1
ZUZyb21NYWluVGhyZWFkPGJvb2w+KFsmdmFsdWUsIHRoaXNdICgpIC0+IGJvb2wgew0KKyAgICAg
ICAgaWYgKGF1dG8qIGF4T2JqZWN0ID0gYXNzb2NpYXRlZEFYT2JqZWN0KCkpDQorICAgICAgICAg
ICAgcmV0dXJuIGF4T2JqZWN0LT5zZXRWYWx1ZSh2YWx1ZSk7DQorICAgICAgICByZXR1cm4gZmFs
c2U7DQogICAgIH0pOw0KIH0NCiANCkBAIC02NzEsMTMgKzY4Myw2IEBAIHZvaWQgQVhJc29sYXRl
ZE9iamVjdDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmIHZhbHVl
KQ0KICAgICB9KTsNCiB9DQogDQotdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRWYWx1ZShjb25z
dCBTdHJpbmcmIHZhbHVlKQ0KLXsNCi0gICAgcGVyZm9ybUZ1bmN0aW9uT25NYWluVGhyZWFkKFsm
dmFsdWVdKEFYQ29yZU9iamVjdCogb2JqZWN0KSB7DQotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KHZhbHVlKTsNCi0gICAgfSk7DQotfQ0KLQ0KICNpZiBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRG
T1JNKElPU19GQU1JTFkpDQogdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRDYXJldEJyb3dzaW5n
RW5hYmxlZChib29sIHZhbHVlKQ0KIHsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgNCmluZGV4IGJh
YTVkYmZiOWEzLi42YzhjZDUwZmFkOSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaA0KKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oDQpAQCAt
NzAzLDEzICs3MDMsMTMgQEAgcHJpdmF0ZToNCiAgICAgLy8gQXR0cmlidXRlIHNldHRlcnMuDQog
ICAgIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkgb3ZlcnJpZGU7DQogICAgIHZvaWQgc2V0SXNF
eHBhbmRlZChib29sKSBvdmVycmlkZTsNCi0gICAgdm9pZCBzZXRWYWx1ZShmbG9hdCkgb3ZlcnJp
ZGU7DQorICAgIGJvb2wgc2V0VmFsdWUoZmxvYXQpIG92ZXJyaWRlOw0KICAgICB2b2lkIHNldFNl
bGVjdGVkKGJvb2wpIG92ZXJyaWRlOw0KICAgICB2b2lkIHNldFNlbGVjdGVkUm93cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZTsNCiAgICAgdm9pZCBzZXRGb2N1c2VkKGJv
b2wpIG92ZXJyaWRlOw0KICAgICB2b2lkIHNldFNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsNCiAgICAgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRS
YW5nZSYpIG92ZXJyaWRlOw0KLSAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOw0KKyAgICBib29sIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOw0KICNpZiBQ
TEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpDQogICAgIHZvaWQgc2V0Q2Fy
ZXRCcm93c2luZ0VuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7DQogI2VuZGlmDQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403269</attachid>
            <date>2020-06-30 22:44:31 -0700</date>
            <delta_ts>2020-06-30 22:51:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>file_213744.txt</filename>
            <type>text/plain</type>
            <size>18138</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggYjNjNjEwYmM1MzAuLjEzMGMxYjQ0YTlhIDEwMDY0NA0KLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nDQorKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsMTMg
QEANCisyMDIwLTA2LTI5ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+DQor
DQorICAgICAgICBBWDogSW1wbGVtZW50IHJlbGV2YW50IHNpbXVsYXRlZCBrZXkgcHJlc3NlcyBm
b3IgY3VzdG9tIEFSSUEgd2lkZ2V0cyBmb3IgaW5jcmVtZW50L2RlY3JlbWVudA0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc0NA0KKw0KKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkva2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVtZW50LWFjdGlvbnMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4NCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtcG9zdGVkLWZvci1pbmNy
ZW1lbnQtYWN0aW9ucy5odG1sOiBBZGRlZC4NCisNCiAyMDIwLTA2LTI1ICBaYWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+DQogDQogICAgICAgICBbSW5saW5lXSBPdmVybGFwcGluZyBjb250
ZW50IHdoZW4gbWFyZ2luLXJpZ2h0IGlzIHByZXNlbnQNCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2tleWV2ZW50cy1wb3N0ZWQtZm9yLWluY3JlbWVudC1hY3Rpb25zLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLXBvc3RlZC1m
b3ItaW5jcmVtZW50LWFjdGlvbnMtZXhwZWN0ZWQudHh0DQppbmRleCAxNDhmNjUwNDk0NC4uMTg0
MDc2OTNkMDQgMTAwNjQ0DQotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2tleWV2ZW50
cy1wb3N0ZWQtZm9yLWluY3JlbWVudC1hY3Rpb25zLWV4cGVjdGVkLnR4dA0KKysrIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtcG9zdGVkLWZvci1pbmNyZW1lbnQtYWN0aW9u
cy1leHBlY3RlZC50eHQNCkBAIC01LDE4ICs1LDE4IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
DQogDQogSW5jcmVtZW50L0RlY3JlbWVudCAtIExUUg0KIEhvcml6b250YWwgb3JpZW50YXRpb24N
Ci1LZXljb2RlIHJlY2VpdmVkOiBjb2RlOiAzOSBuYW1lOiByaWdodA0KLUtleWNvZGUgcmVjZWl2
ZWQ6IGNvZGU6IDM3IG5hbWU6IGxlZnQNCitLZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVyOiBy
aWdodCBrZXkgbmFtZTogQXJyb3dSaWdodA0KK0tleWNvZGUgcmVjZWl2ZWQ6IGlkZW50aWZpZXI6
IGxlZnQga2V5IG5hbWU6IEFycm93TGVmdA0KIFZlcnRpY2FsIG9yaWVudGF0aW9uDQotS2V5Y29k
ZSByZWNlaXZlZDogY29kZTogMzggbmFtZTogdXANCi1LZXljb2RlIHJlY2VpdmVkOiBjb2RlOiA0
MCBuYW1lOiBkb3duDQorS2V5Y29kZSByZWNlaXZlZDogaWRlbnRpZmllcjogdXAga2V5IG5hbWU6
IEFycm93VXANCitLZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVyOiBkb3duIGtleSBuYW1lOiBB
cnJvd0Rvd24NCiBJbmNyZW1lbnQvRGVjcmVtZW50IC0gUlRMDQogSG9yaXpvbnRhbCBvcmllbnRh
dGlvbg0KLUtleWNvZGUgcmVjZWl2ZWQ6IGNvZGU6IDM3IG5hbWU6IGxlZnQNCi1LZXljb2RlIHJl
Y2VpdmVkOiBjb2RlOiAzOSBuYW1lOiByaWdodA0KK0tleWNvZGUgcmVjZWl2ZWQ6IGlkZW50aWZp
ZXI6IGxlZnQga2V5IG5hbWU6IEFycm93TGVmdA0KK0tleWNvZGUgcmVjZWl2ZWQ6IGlkZW50aWZp
ZXI6IHJpZ2h0IGtleSBuYW1lOiBBcnJvd1JpZ2h0DQogVmVydGljYWwgb3JpZW50YXRpb24NCi1L
ZXljb2RlIHJlY2VpdmVkOiBjb2RlOiAzOCBuYW1lOiB1cA0KLUtleWNvZGUgcmVjZWl2ZWQ6IGNv
ZGU6IDQwIG5hbWU6IGRvd24NCitLZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVyOiB1cCBrZXkg
bmFtZTogQXJyb3dVcA0KK0tleWNvZGUgcmVjZWl2ZWQ6IGlkZW50aWZpZXI6IGRvd24ga2V5IG5h
bWU6IEFycm93RG93bg0KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUNCiANCiBURVNU
IENPTVBMRVRFDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9rZXlldmVu
dHMtcG9zdGVkLWZvci1pbmNyZW1lbnQtYWN0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9rZXlldmVudHMtcG9zdGVkLWZvci1pbmNyZW1lbnQtYWN0aW9ucy5odG1sDQppbmRl
eCBiOTgzYmNjMjA0YS4uNDc5Yjc5ZjNjZjcgMTAwNjQ0DQotLS0gYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2tleWV2ZW50cy1wb3N0ZWQtZm9yLWluY3JlbWVudC1hY3Rpb25zLmh0bWwNCisr
KyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVt
ZW50LWFjdGlvbnMuaHRtbA0KQEAgLTE5LDcgKzE5LDcgQEANCiA8c2NyaXB0Pg0KICAgICB2YXIg
a2V5Q291bnQgPSAwOw0KICAgICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKGV2ZW50KSB7DQotICAg
ICAgICBkZWJ1ZygiS2V5Y29kZSByZWNlaXZlZDogY29kZTogIiArIGV2ZW50LmtleUNvZGUgKyAi
IG5hbWU6ICIgKyBldmVudC5rZXkpOw0KKyAgICAgICAgZGVidWcoIktleWNvZGUgcmVjZWl2ZWQ6
IGlkZW50aWZpZXI6ICIgKyBldmVudC5rZXlJZGVudGlmaWVyICsgIiBrZXkgbmFtZTogIiArIGV2
ZW50LmtleSk7DQogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICAgZXZl
bnQuc3RvcFByb3BhZ2F0aW9uKCk7DQogICAgICAgICBrZXlDb3VudCsrOw0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0KaW5k
ZXggOTU4ZjJiZDhlZmYuLjFhYzZmZmQ4OTkwIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsMzgg
QEANCisyMDIwLTA2LTI5ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+DQor
DQorICAgICAgICBBWDogSW1wbGVtZW50IHJlbGV2YW50IHNpbXVsYXRlZCBrZXkgcHJlc3NlcyBm
b3IgY3VzdG9tIEFSSUEgd2lkZ2V0cyBmb3IgaW5jcmVtZW50L2RlY3JlbWVudA0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc0NA0KKw0KKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQorICAgICAgICBJbiBvcmRlciB0byBh
bGxvdyBjdXN0b20gQVJJQSB3aWRnZXRzIHRvIHdvcmssIHdlIGNhbiBwb3N0IGtleWJvYXJkIGV2
ZW50cyBmb3Igc3BlY2lmaWMgYXggYWN0aW9ucw0KKyAgICAgICAgdGhhdCBhcmUgbm90IGhhbmRs
ZWQgbmF0aXZlbHkuDQorDQorICAgICAgICBTcGVjOiBodHRwczovL2dpdGh1Yi5jb20vV0lDRy9h
b20vYmxvYi9naC1wYWdlcy9leHBsYWluZXIubWQjdXNlci1hY3Rpb24tZXZlbnRzLWZyb20tYXNz
aXN0aXZlLXRlY2hub2xvZ3kNCisNCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkva2V5ZXZl
bnRzLXBvc3RlZC1mb3ItaW5jcmVtZW50LWFjdGlvbnMuaHRtbA0KKw0KKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoNCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6cG9zdEtleWJvYXJkS2V5c0ZvclZhbHVlQ2hhbmdl
KToNCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2V0Tm9kZVZh
bHVlKToNCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hhbmdl
VmFsdWVCeVN0ZXApOg0KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpjaGFuZ2VWYWx1ZUJ5UGVyY2VudCk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QuaDoNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0Lmg6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dEludGVyZmFjZS5oOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwOg0KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OnNldFZhbHVlKToNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Lmg6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9s
bGJhci5jcHA6DQorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbGJhcjo6c2V0
VmFsdWUpOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIu
aDoNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcDoNCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyOjpzZXRWYWx1ZSk6DQorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oOg0KKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoNCisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzZXRWYWx1ZSk6DQorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoNCisNCiAyMDIwLTA2LTI1ICBD
b21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4NCiANCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJldmVydGluZyByMjYzNTM3Lg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHANCmluZGV4IDIzMTlhNjFh
MDI5Li43OGQwMTg2NmE5MyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcA0KQEAgLTU3LDYgKzU3LDcgQEAN
CiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCINCiAjaW5jbHVkZSAiSFRNTFRleHRBcmVh
RWxlbWVudC5oIg0KICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIg0KKyNp
bmNsdWRlICJLZXlib2FyZEV2ZW50LmgiDQogI2luY2x1ZGUgIkxhYmVsYWJsZUVsZW1lbnQuaCIN
CiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIg0KICNpbmNsdWRlICJNYXRoTUxFbGVtZW50
LmgiDQpAQCAtMTA5NCwxOCArMTA5NSw0MSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpkZWNyZW1lbnQoKQ0KICAgICBhbHRlclNsaWRlclZhbHVlKGZhbHNlKTsNCiB9DQogDQorLy8g
RmlyZSBhIGtleWJvYXJkIGV2ZW50IGlmIHdlIHdlcmUgbm90IGFibGUgdG8gc2V0IHRoaXMgdmFs
dWUgbmF0aXZlbHkuDQordm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6cG9zdEtleWJvYXJk
S2V5c0ZvclZhbHVlQ2hhbmdlKGJvb2wgaW5jcmVhc2UpDQorew0KKyAgICBhdXRvIGtleUluaXQg
PSBLZXlib2FyZEV2ZW50OjpJbml0KCk7DQorICAgIGJvb2wgdmVydGljYWwgPSBvcmllbnRhdGlv
bigpID09IEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VmVydGljYWw7DQorICAgIGJvb2wgaXNM
VFIgPSBwYWdlKCktPnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKSA9PSBVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uOjpMVFI7DQorICAgIA0KKyAgICBrZXlJbml0LmtleSA9IGluY3Jl
YXNlID8gdmVydGljYWwgPyAiQXJyb3dVcCIgOiBpc0xUUiA/ICJBcnJvd1JpZ2h0IiA6ICJBcnJv
d0xlZnQiIDogdmVydGljYWwgPyAiQXJyb3dEb3duIiA6IGlzTFRSID8gIkFycm93TGVmdCIgOiAi
QXJyb3dSaWdodCI7DQorICAgIGtleUluaXQua2V5SWRlbnRpZmllciA9IGluY3JlYXNlID8gdmVy
dGljYWwgPyAidXAiIDogaXNMVFIgPyAicmlnaHQiIDogImxlZnQiIDogdmVydGljYWwgPyAiZG93
biIgOiBpc0xUUiA/ICJsZWZ0IiA6ICJyaWdodCI7DQorDQorICAgIGF1dG8gZG93bkV2ZW50ID0g
S2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIGtleUluaXQp
Ow0KKyAgICBub2RlKCktPmRpc3BhdGNoRXZlbnQoZG93bkV2ZW50KTsNCisgICAgDQorICAgIGF1
dG8gdXBFdmVudCA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkua2V5dXBFdmVu
dCwga2V5SW5pdCk7DQorICAgIG5vZGUoKS0+ZGlzcGF0Y2hFdmVudCh1cEV2ZW50KTsNCit9DQor
DQordm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2V0Tm9kZVZhbHVlKGJvb2wgaW5jcmVh
c2UsIGZsb2F0IHZhbHVlKQ0KK3sNCisgICAgYm9vbCBkaWRTZXQgPSBzZXRWYWx1ZShTdHJpbmc6
Om51bWJlcih2YWx1ZSkpOw0KKyAgICANCisgICAgaWYgKGRpZFNldCkgew0KKyAgICAgICAgaWYg
KGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpKQ0KKyAgICAgICAgICAgIGNhY2hlLT5wb3N0
Tm90aWZpY2F0aW9uKHRoaXMsIGRvY3VtZW50KCksIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFu
Z2VkKTsNCisgICAgfSBlbHNlDQorICAgICAgICBwb3N0S2V5Ym9hcmRLZXlzRm9yVmFsdWVDaGFu
Z2UoaW5jcmVhc2UpOw0KK30NCisNCiB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjaGFu
Z2VWYWx1ZUJ5U3RlcChib29sIGluY3JlYXNlKQ0KIHsNCiAgICAgZmxvYXQgc3RlcCA9IHN0ZXBW
YWx1ZUZvclJhbmdlKCk7DQogICAgIGZsb2F0IHZhbHVlID0gdmFsdWVGb3JSYW5nZSgpOw0KIA0K
ICAgICB2YWx1ZSArPSBpbmNyZWFzZSA/IHN0ZXAgOiAtc3RlcDsNCi0NCi0gICAgc2V0VmFsdWUo
U3RyaW5nOjpudW1iZXIodmFsdWUpKTsNCi0NCi0gICAgYXV0byBvYmplY3RDYWNoZSA9IGF4T2Jq
ZWN0Q2FjaGUoKTsNCi0gICAgaWYgKG9iamVjdENhY2hlKQ0KLSAgICAgICAgb2JqZWN0Q2FjaGUt
PnBvc3ROb3RpZmljYXRpb24obm9kZSgpLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCk7
DQorICAgIHNldE5vZGVWYWx1ZShpbmNyZWFzZSwgdmFsdWUpOw0KIH0NCiANCiB2b2lkIEFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0OjpjaGFuZ2VWYWx1ZUJ5UGVyY2VudChmbG9hdCBwZXJjZW50Q2hh
bmdlKQ0KQEAgLTExMTksMTEgKzExNDMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpjaGFuZ2VWYWx1ZUJ5UGVyY2VudChmbG9hdCBwZXJjZW50Q2hhbmdlKQ0KICAgICAgICAgc3Rl
cCA9IHN0ZDo6YWJzKHBlcmNlbnRDaGFuZ2UpICogKDEgLyBwZXJjZW50Q2hhbmdlKTsNCiANCiAg
ICAgdmFsdWUgKz0gc3RlcDsNCi0gICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIodmFsdWUpKTsN
Ci0NCi0gICAgYXV0byBvYmplY3RDYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsNCi0gICAgaWYgKG9i
amVjdENhY2hlKQ0KLSAgICAgICAgb2JqZWN0Q2FjaGUtPnBvc3ROb3RpZmljYXRpb24obm9kZSgp
LCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCk7DQorICAgIHNldE5vZGVWYWx1ZShwZXJj
ZW50Q2hhbmdlID4gMCwgdmFsdWUpOw0KIH0NCiANCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojppc0dlbmVyaWNGb2N1c2FibGVFbGVtZW50KCkgY29uc3QNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgNCmluZGV4
IDRlMjNjYmFiZjM3Li5jYjVmNjFiY2Q5YSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaA0KKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oDQpAQCAtMTg5LDcgKzE4
OSw4IEBAIHByaXZhdGU6DQogICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSBjb25zdCBvdmVycmlkZTsNCiAgICAgYm9vbCB1c2VzQWx0VGFnRm9yVGV4dENvbXB1dGF0aW9u
KCkgY29uc3Q7DQogICAgIGJvb2wgcm9sZUlnbm9yZXNUaXRsZSgpIGNvbnN0Ow0KLSAgICANCisg
ICAgdm9pZCBwb3N0S2V5Ym9hcmRLZXlzRm9yVmFsdWVDaGFuZ2UoYm9vbCBpbmNyZWFzZSk7DQor
ICAgIHZvaWQgc2V0Tm9kZVZhbHVlKGJvb2wgaW5jcmVhc2UsIGZsb2F0IHZhbHVlKTsNCiAgICAg
Tm9kZSogbV9ub2RlOw0KIH07DQogDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaA0KaW5kZXggYzZlNjFjZWEzODAuLjk1MzhmZTQxNWIz
IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oDQpAQCAtNDYzLDExICs0NjMsMTEgQEAgcHVibGljOg0KICAgICB2b2lkIHNldEZv
Y3VzZWQoYm9vbCkgb3ZlcnJpZGUgeyB9DQogICAgIHZvaWQgc2V0U2VsZWN0ZWRUZXh0KGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlIHsgfQ0KICAgICB2b2lkIHNldFNlbGVjdGVkVGV4dFJhbmdlKGNv
bnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGUgeyB9DQotICAgIHZvaWQgc2V0VmFsdWUoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9DQorICAgIGJvb2wgc2V0VmFsdWUoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCiAgICAgYm9vbCByZXBsYWNlVGV4dEluUmFu
Z2UoY29uc3QgU3RyaW5nJiwgY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlkZTsNCiAgICAg
Ym9vbCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOw0KIA0KLSAgICB2b2lkIHNl
dFZhbHVlKGZsb2F0KSBvdmVycmlkZSB7IH0NCisgICAgYm9vbCBzZXRWYWx1ZShmbG9hdCkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCiAgICAgdm9pZCBzZXRTZWxlY3RlZChib29sKSBvdmVy
cmlkZSB7IH0NCiAgICAgdm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgb3ZlcnJpZGUgeyB9DQogDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaA0KaW5kZXggNjFh
MTFiYjQzYjYuLmJlYTRhN2ZmNDZiIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgNCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oDQpAQCAtODk2
LDExICs4OTYsMTEgQEAgcHVibGljOg0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXNlZChib29s
KSA9IDA7DQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikg
PSAwOw0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5U
ZXh0UmFuZ2UmKSA9IDA7DQotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcm
KSA9IDA7DQorICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSA9IDA7DQog
ICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwgY29uc3Qg
UGxhaW5UZXh0UmFuZ2UmKSA9IDA7DQogICAgIHZpcnR1YWwgYm9vbCBpbnNlcnRUZXh0KGNvbnN0
IFN0cmluZyYpID0gMDsNCiANCi0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGZsb2F0KSA9IDA7
DQorICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZShmbG9hdCkgPSAwOw0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0U2VsZWN0ZWQoYm9vbCkgPSAwOw0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRS
b3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsNCiANCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcA0KaW5kZXggNjIyNDlhMzgxNTEuLmI4NTAyMTRkYTJkIDEwMDY0NA0KLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcA0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcA0KQEAgLTE4NTgsMTAgKzE4NTgsMTAgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBzZWwNCiAg
ICAgICAgIHNlbGVjdGVkUm93LT5zZXRTZWxlY3RlZCh0cnVlKTsNCiB9DQogICAgIA0KLXZvaWQg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmcp
DQorYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcm
IHN0cmluZykNCiB7DQogICAgIGlmICghbV9yZW5kZXJlciB8fCAhaXM8RWxlbWVudD4obV9yZW5k
ZXJlci0+bm9kZSgpKSkNCi0gICAgICAgIHJldHVybjsNCisgICAgICAgIHJldHVybiBmYWxzZTsN
CiAgICAgDQogICAgIEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50PigqbV9yZW5k
ZXJlci0+bm9kZSgpKTsNCiAgICAgUmVuZGVyT2JqZWN0JiByZW5kZXJlciA9ICptX3JlbmRlcmVy
Ow0KQEAgLTE4NzMsMTQgKzE4NzMsMjAgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHN0cmluZykNCiAgICAgICAgIGlmIChlbGVtZW50LnNo
b3VsZFVzZUlucHV0TWV0aG9kKCkpIHsNCiAgICAgICAgICAgICBlZGl0b3IuY2xlYXJUZXh0KCk7
DQogICAgICAgICAgICAgZWRpdG9yLmluc2VydFRleHQoc3RyaW5nLCBudWxscHRyKTsNCi0gICAg
ICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICB9DQog
ICAgIH0NCiAgICAgLy8gRklYTUU6IERvIHdlIHdhbnQgdG8gZG8gYW55dGhpbmcgaGVyZSBmb3Ig
QVJJQSB0ZXh0Ym94ZXM/DQotICAgIGlmIChyZW5kZXJlci5pc1RleHRGaWVsZCgpICYmIGlzPEhU
TUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKQ0KKyAgICBpZiAocmVuZGVyZXIuaXNUZXh0RmllbGQo
KSAmJiBpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkgew0KICAgICAgICAgZG93bmNhc3Q8
SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkuc2V0VmFsdWUoc3RyaW5nKTsNCi0gICAgZWxzZSBp
ZiAocmVuZGVyZXIuaXNUZXh0QXJlYSgpICYmIGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KGVsZW1l
bnQpKQ0KKyAgICAgICAgcmV0dXJuIHRydWU7DQorICAgIH0NCisgICAgaWYgKHJlbmRlcmVyLmlz
VGV4dEFyZWEoKSAmJiBpczxIVE1MVGV4dEFyZWFFbGVtZW50PihlbGVtZW50KSkgew0KICAgICAg
ICAgZG93bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCkuc2V0VmFsdWUoc3RyaW5n
KTsNCisgICAgICAgIHJldHVybiB0cnVlOw0KKyAgICB9DQorICAgIA0KKyAgICByZXR1cm4gZmFs
c2U7DQogfQ0KIA0KIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3VwcG9ydHNBUklB
T3ducygpIGNvbnN0DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaA0KaW5kZXggNzgxODVlNzAzMjguLjk5MjM1NzZl
YTMxIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oDQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1YmxpYzoNCiAg
ICAgDQogICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZTsNCiAgICAgdm9pZCBzZXRT
ZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlOw0KLSAgICB2
b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOw0KKyAgICBib29sIHNldFZhbHVl
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOw0KICAgICB2b2lkIHNldFNlbGVjdGVkUm93cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZTsNCiAgICAgQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7DQogDQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAN
CmluZGV4IGMwODkxNmE3OWY0Li43NTQ3ZjZmMTU1YSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHANCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHANCkBAIC05
MiwxMyArOTIsMTQgQEAgZmxvYXQgQWNjZXNzaWJpbGl0eVNjcm9sbGJhcjo6dmFsdWVGb3JSYW5n
ZSgpIGNvbnN0DQogICAgIHJldHVybiBtX3Njcm9sbGJhci0+Y3VycmVudFBvcygpIC8gbV9zY3Jv
bGxiYXItPm1heGltdW0oKTsNCiB9DQogDQotdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyOjpz
ZXRWYWx1ZShmbG9hdCB2YWx1ZSkNCitib29sIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXI6OnNldFZh
bHVlKGZsb2F0IHZhbHVlKQ0KIHsNCiAgICAgaWYgKCFtX3Njcm9sbGJhcikNCi0gICAgICAgIHJl
dHVybjsNCisgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgDQogICAgIGZsb2F0IG5ld1ZhbHVl
ID0gdmFsdWUgKiBtX3Njcm9sbGJhci0+bWF4aW11bSgpOw0KICAgICBtX3Njcm9sbGJhci0+c2Ny
b2xsYWJsZUFyZWEoKS5zY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24obV9zY3JvbGxiYXIt
Pm9yaWVudGF0aW9uKCksIG5ld1ZhbHVlKTsNCisgICAgcmV0dXJuIHRydWU7DQogfQ0KICAgICAN
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaA0KaW5kZXggNGIwZDJlM2JiMGMuLmZi
MjFlYTUzMGU2IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2Nyb2xsYmFyLmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oDQpAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOg0KICAg
ICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOw0KICAgICANCiAgICAgLy8gQXNzdW1l
cyBmbG9hdCBbMC4uMV0NCi0gICAgdm9pZCBzZXRWYWx1ZShmbG9hdCkgb3ZlcnJpZGU7DQorICAg
IGJvb2wgc2V0VmFsdWUoZmxvYXQpIG92ZXJyaWRlOw0KICAgICBmbG9hdCB2YWx1ZUZvclJhbmdl
KCkgY29uc3Qgb3ZlcnJpZGU7DQogDQogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1fc2Nyb2xsYmFy
Ow0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNsaWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
bGlkZXIuY3BwDQppbmRleCBjYzZjYjgxOGU4Yi4uYTFhMTQ3OTllZWUgMTAwNjQ0DQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwDQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwDQpA
QCAtMTI2LDE0ICsxMjYsMTUgQEAgZmxvYXQgQWNjZXNzaWJpbGl0eVNsaWRlcjo6bWluVmFsdWVG
b3JSYW5nZSgpIGNvbnN0DQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oaW5wdXRFbGVt
ZW50KCktPm1pbmltdW0oKSk7DQogfQ0KIA0KLXZvaWQgQWNjZXNzaWJpbGl0eVNsaWRlcjo6c2V0
VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkNCitib29sIEFjY2Vzc2liaWxpdHlTbGlkZXI6OnNl
dFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpDQogew0KICAgICBIVE1MSW5wdXRFbGVtZW50KiBp
bnB1dCA9IGlucHV0RWxlbWVudCgpOw0KICAgICANCiAgICAgaWYgKGlucHV0LT52YWx1ZSgpID09
IHZhbHVlKQ0KLSAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgcmV0dXJuIHRydWU7DQogDQogICAg
IGlucHV0LT5zZXRWYWx1ZSh2YWx1ZSwgRGlzcGF0Y2hDaGFuZ2VFdmVudCk7DQorICAgIHJldHVy
biB0cnVlOw0KIH0NCiANCiBIVE1MSW5wdXRFbGVtZW50KiBBY2Nlc3NpYmlsaXR5U2xpZGVyOjpp
bnB1dEVsZW1lbnQoKSBjb25zdA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgNCmluZGV4IDkxYzcwOTI1ZTZkLi5hYmE5MTIwMDA4NCAx
MDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNs
aWRlci5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
bGlkZXIuaA0KQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToNCiAgICAgYm9vbCBjYW5TZXRWYWx1
ZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0NCiAgICAgY29uc3Qg
QXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVy
cmlkZTsNCiAgICAgDQotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
DQorICAgIGJvb2wgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7DQogICAgIGZsb2F0
IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsNCiAgICAgZmxvYXQgbWF4VmFsdWVGb3JS
YW5nZSgpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkgY29u
c3Qgb3ZlcnJpZGU7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcA0KaW5kZXggODM5NWJlMjZh
NDkuLjA2MWU5YTY4NjBkIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwDQpAQCAtNjI5
LDEwICs2MjksMjIgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRJc0V4cGFuZGVkKGJvb2wg
dmFsdWUpDQogICAgICAgICBvYmplY3QtPnNldElzRXhwYW5kZWQodmFsdWUpOw0KICAgICB9KTsN
CiB9DQotdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSkNCisNCiti
b29sIEFYSXNvbGF0ZWRPYmplY3Q6OnNldFZhbHVlKGZsb2F0IHZhbHVlKQ0KIHsNCi0gICAgcGVy
Zm9ybUZ1bmN0aW9uT25NYWluVGhyZWFkKFsmdmFsdWVdKEFYQ29yZU9iamVjdCogb2JqZWN0KSB7
DQotICAgICAgICBvYmplY3QtPnNldFZhbHVlKHZhbHVlKTsNCisgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxib29sPihbJnZhbHVlLCB0aGlzXSAo
KSAtPiBib29sIHsNCisgICAgICAgIGlmIChhdXRvKiBheE9iamVjdCA9IGFzc29jaWF0ZWRBWE9i
amVjdCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBheE9iamVjdC0+c2V0VmFsdWUodmFsdWUpOw0K
KyAgICAgICAgcmV0dXJuIGZhbHNlOw0KKyAgICB9KTsNCit9DQorDQorYm9vbCBBWElzb2xhdGVk
T2JqZWN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQ0KK3sNCisgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxib29sPihbJnZhbHVlLCB0
aGlzXSAoKSAtPiBib29sIHsNCisgICAgICAgIGlmIChhdXRvKiBheE9iamVjdCA9IGFzc29jaWF0
ZWRBWE9iamVjdCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBheE9iamVjdC0+c2V0VmFsdWUodmFs
dWUpOw0KKyAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICB9KTsNCiB9DQogDQpAQCAtNjcxLDEz
ICs2ODMsNiBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldFNlbGVjdGVkVGV4dFJhbmdlKGNv
bnN0IFBsYWluVGV4dFJhbmdlJiB2YWx1ZSkNCiAgICAgfSk7DQogfQ0KIA0KLXZvaWQgQVhJc29s
YXRlZE9iamVjdDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkNCi17DQotICAgIHBlcmZv
cm1GdW5jdGlvbk9uTWFpblRocmVhZChbJnZhbHVlXShBWENvcmVPYmplY3QqIG9iamVjdCkgew0K
LSAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZSh2YWx1ZSk7DQotICAgIH0pOw0KLX0NCi0NCiAjaWYg
UExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQ0KIHZvaWQgQVhJc29sYXRl
ZE9iamVjdDo6c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCB2YWx1ZSkNCiB7DQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZE9iamVjdC5oDQppbmRleCBiYWE1ZGJmYjlhMy4uNmM4Y2Q1MGZhZDkgMTAwNjQ0DQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRPYmplY3QuaA0KQEAgLTcwMywxMyArNzAzLDEzIEBAIHByaXZhdGU6DQogICAg
IC8vIEF0dHJpYnV0ZSBzZXR0ZXJzLg0KICAgICB2b2lkIHNldEFSSUFHcmFiYmVkKGJvb2wpIG92
ZXJyaWRlOw0KICAgICB2b2lkIHNldElzRXhwYW5kZWQoYm9vbCkgb3ZlcnJpZGU7DQotICAgIHZv
aWQgc2V0VmFsdWUoZmxvYXQpIG92ZXJyaWRlOw0KKyAgICBib29sIHNldFZhbHVlKGZsb2F0KSBv
dmVycmlkZTsNCiAgICAgdm9pZCBzZXRTZWxlY3RlZChib29sKSBvdmVycmlkZTsNCiAgICAgdm9p
ZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7
DQogICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZTsNCiAgICAgdm9pZCBzZXRTZWxl
Y3RlZFRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7DQogICAgIHZvaWQgc2V0U2VsZWN0ZWRU
ZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlkZTsNCi0gICAgdm9pZCBzZXRW
YWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsNCisgICAgYm9vbCBzZXRWYWx1ZShjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsNCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShJT1Nf
RkFNSUxZKQ0KICAgICB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpIG92ZXJyaWRl
Ow0KICNlbmRpZg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403270</attachid>
            <date>2020-06-30 22:51:18 -0700</date>
            <delta_ts>2020-07-01 12:19:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>file_213744.txt</filename>
            <type>text/plain</type>
            <size>19445</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggODExMGE2OTJiMjYuLjgzMmIwYjg5M2VlIDEwMDY0NA0KLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nDQorKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsMTMg
QEANCisyMDIwLTA2LTMwICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+DQor
DQorICAgICAgICBBWDogSW1wbGVtZW50IHJlbGV2YW50IHNpbXVsYXRlZCBrZXkgcHJlc3NlcyBm
b3IgY3VzdG9tIEFSSUEgd2lkZ2V0cyBmb3IgaW5jcmVtZW50L2RlY3JlbWVudA0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc0NA0KKw0KKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkva2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVtZW50LWFjdGlvbnMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4NCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtcG9zdGVkLWZvci1pbmNy
ZW1lbnQtYWN0aW9ucy5odG1sOiBBZGRlZC4NCisNCiAyMDIwLTA2LTMwICBMYXVybyBNb3VyYSAg
PGxtb3VyYUBpZ2FsaWEuY29tPg0KIA0KICAgICAgICAgW1dQRV0gR2FyZGVuIHNvbWUgZmFpbHVy
ZXMgYW5kIGFkZCBuZXcgc2VjdGlvbiB0byBleHBlY3RhdGlvbg0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVtZW50LWFjdGlv
bnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtcG9z
dGVkLWZvci1pbmNyZW1lbnQtYWN0aW9ucy1leHBlY3RlZC50eHQNCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uMTg0MDc2OTNkMDQNCi0tLSAvZGV2L251bGwNCisrKyBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVtZW50
LWFjdGlvbnMtZXhwZWN0ZWQudHh0DQpAQCAtMCwwICsxLDIzIEBADQorVGhpcyB0ZXN0IG1ha2Vz
IHN1cmUgdGhhdCB3aGVuIGFyaWEtaGlkZGVuIGNoYW5nZXMsIHRoZSBBWCBoaWVyYXJjaHkgaXMg
dXBkYXRlZC4NCisNCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuDQorDQorDQorSW5jcmVtZW50
L0RlY3JlbWVudCAtIExUUg0KK0hvcml6b250YWwgb3JpZW50YXRpb24NCitLZXljb2RlIHJlY2Vp
dmVkOiBpZGVudGlmaWVyOiByaWdodCBrZXkgbmFtZTogQXJyb3dSaWdodA0KK0tleWNvZGUgcmVj
ZWl2ZWQ6IGlkZW50aWZpZXI6IGxlZnQga2V5IG5hbWU6IEFycm93TGVmdA0KK1ZlcnRpY2FsIG9y
aWVudGF0aW9uDQorS2V5Y29kZSByZWNlaXZlZDogaWRlbnRpZmllcjogdXAga2V5IG5hbWU6IEFy
cm93VXANCitLZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVyOiBkb3duIGtleSBuYW1lOiBBcnJv
d0Rvd24NCitJbmNyZW1lbnQvRGVjcmVtZW50IC0gUlRMDQorSG9yaXpvbnRhbCBvcmllbnRhdGlv
bg0KK0tleWNvZGUgcmVjZWl2ZWQ6IGlkZW50aWZpZXI6IGxlZnQga2V5IG5hbWU6IEFycm93TGVm
dA0KK0tleWNvZGUgcmVjZWl2ZWQ6IGlkZW50aWZpZXI6IHJpZ2h0IGtleSBuYW1lOiBBcnJvd1Jp
Z2h0DQorVmVydGljYWwgb3JpZW50YXRpb24NCitLZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVy
OiB1cCBrZXkgbmFtZTogQXJyb3dVcA0KK0tleWNvZGUgcmVjZWl2ZWQ6IGlkZW50aWZpZXI6IGRv
d24ga2V5IG5hbWU6IEFycm93RG93bg0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUN
CisNCitURVNUIENPTVBMRVRFDQorDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9rZXlldmVudHMtcG9zdGVkLWZvci1pbmNyZW1lbnQtYWN0aW9ucy5odG1sIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtcG9zdGVkLWZvci1pbmNyZW1lbnQtYWN0aW9u
cy5odG1sDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLjQ3OWI3OWYz
Y2Y3DQotLS0gL2Rldi9udWxsDQorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2tleWV2
ZW50cy1wb3N0ZWQtZm9yLWluY3JlbWVudC1hY3Rpb25zLmh0bWwNCkBAIC0wLDAgKzEsNjMgQEAN
Cis8aHRtbD4NCis8aHRtbD4NCis8aGVhZD4NCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCis8L2hlYWQ+DQorPGJvZHkgaWQ9ImJvZHkiPg0KKw0K
KzxkaXYgaWQ9InNsaWRlciINCisgICAgICAgICAgIHJvbGU9InNsaWRlciINCisgICAgICAgICAg
IHRhYmluZGV4PSIwIg0KKyAgICAgICAgICAgYXJpYS12YWx1ZW1pbj0iMCINCisgICAgICAgICAg
IGFyaWEtdmFsdWVub3c9IjAiDQorICAgICAgICAgICBhcmlhLXZhbHVlbWF4PSIyNTUiDQorICAg
ICAgICAgICBhcmlhLWxhYmVsbGVkYnk9ImlkUmVkIj48L2Rpdj4NCisNCis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4NCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4NCisgICAgIA0KKzxzY3JpcHQ+
DQorICAgIHZhciBrZXlDb3VudCA9IDA7DQorICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZl
bnQpIHsNCisgICAgICAgIGRlYnVnKCJLZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVyOiAiICsg
ZXZlbnQua2V5SWRlbnRpZmllciArICIga2V5IG5hbWU6ICIgKyBldmVudC5rZXkpOw0KKyAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsNCisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlv
bigpOw0KKyAgICAgICAga2V5Q291bnQrKzsNCisgICAgICAgIGlmIChrZXlDb3VudCA9PSA0KSB7
DQorICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7DQorICAgICAgICB9DQorICAgICB9DQorDQor
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsNCisgICAgICAgIGpzVGVz
dElzQXN5bmMgPSB0cnVlOw0KKyAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBtYWtlcyBz
dXJlIHRoYXQgd2hlbiBhcmlhLWhpZGRlbiBjaGFuZ2VzLCB0aGUgQVggaGllcmFyY2h5IGlzIHVw
ZGF0ZWQuIik7DQorDQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2xpZGVyIiku
YWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pOw0KKw0KKyAgICAgICAg
Ly8gR2V0IHRoZSBwYXJlbnQgZWxlbWVudC4NCisgICAgICAgIHZhciBheFNsaWRlciA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgic2xpZGVyIik7DQorICAg
ICAgICANCisgICAgICAgIGRlYnVnKCJJbmNyZW1lbnQvRGVjcmVtZW50IC0gTFRSIik7ICAgIA0K
KyAgICAgICAgaW5jcmVtZW50RGVjcmVtZW50KCk7DQorDQorICAgICAgICBkZWJ1ZygiSW5jcmVt
ZW50L0RlY3JlbWVudCAtIFJUTCIpOw0KKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXRVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCJSVEwiKTsNCisgICAgICAgIGluY3JlbWVudERlY3Jl
bWVudCgpOw0KKw0KKyAgICAgICAgZnVuY3Rpb24gaW5jcmVtZW50RGVjcmVtZW50KCkgew0KKyAg
ICAgICAgICAgIGRlYnVnKCJIb3Jpem9udGFsIG9yaWVudGF0aW9uIik7DQorICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNsaWRlciIpLnNldEF0dHJpYnV0ZSgiYXJpYS1vcmll
bnRhdGlvbiIsICJob3Jpem9udGFsIik7DQorICAgICAgICAgICAgYXhTbGlkZXIuaW5jcmVtZW50
KCk7DQorICAgICAgICAgICAgYXhTbGlkZXIuZGVjcmVtZW50KCk7DQorDQorICAgICAgICAgICAg
ZGVidWcoIlZlcnRpY2FsIG9yaWVudGF0aW9uIik7DQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInNsaWRlciIpLnNldEF0dHJpYnV0ZSgiYXJpYS1vcmllbnRhdGlvbiIsICJ2
ZXJ0aWNhbCIpOw0KKyAgICAgICAgICAgIGF4U2xpZGVyLmluY3JlbWVudCgpOw0KKyAgICAgICAg
ICAgIGF4U2xpZGVyLmRlY3JlbWVudCgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorIDwvc2NyaXB0
Pg0KKw0KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4NCis8L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0KaW5kZXggYTYxNmU2NTRkNmQuLmVlNzJh
ZmY5NGU3IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsMzggQEANCisyMDIwLTA2LTMwICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+DQorDQorICAgICAgICBBWDogSW1wbGVt
ZW50IHJlbGV2YW50IHNpbXVsYXRlZCBrZXkgcHJlc3NlcyBmb3IgY3VzdG9tIEFSSUEgd2lkZ2V0
cyBmb3IgaW5jcmVtZW50L2RlY3JlbWVudA0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzc0NA0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuDQorDQorICAgICAgICBJbiBvcmRlciB0byBhbGxvdyBjdXN0b20gQVJJQSB3aWRn
ZXRzIHRvIHdvcmssIHdlIGNhbiBwb3N0IGtleWJvYXJkIGV2ZW50cyBmb3Igc3BlY2lmaWMgYXgg
YWN0aW9ucw0KKyAgICAgICAgdGhhdCBhcmUgbm90IGhhbmRsZWQgbmF0aXZlbHkuDQorDQorICAg
ICAgICBTcGVjOiBodHRwczovL2dpdGh1Yi5jb20vV0lDRy9hb20vYmxvYi9naC1wYWdlcy9leHBs
YWluZXIubWQjdXNlci1hY3Rpb24tZXZlbnRzLWZyb20tYXNzaXN0aXZlLXRlY2hub2xvZ3kNCisN
CisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVt
ZW50LWFjdGlvbnMuaHRtbA0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0LmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6cG9zdEtleWJvYXJkS2V5c0ZvclZhbHVlQ2hhbmdlKToNCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2V0Tm9kZVZhbHVlKToNCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hhbmdlVmFsdWVCeVN0ZXApOg0KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjaGFuZ2VWYWx1ZUJ5UGVyY2Vu
dCk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaDoN
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6DQorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oOg0KKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOg0KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFZhbHVlKToNCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6DQorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHA6DQorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbGJhcjo6c2V0VmFsdWUpOg0KKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaDoNCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5U2xpZGVyOjpzZXRWYWx1ZSk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNsaWRlci5oOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0OjpzZXRWYWx1ZSk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuaDoNCisNCiAyMDIwLTA2LTMwICBGdWppaSBIaXJvbm9yaSAgPEhpcm9u
b3JpLkZ1amlpQHNvbnkuY29tPg0KIA0KICAgICAgICAgW1dpbkNhaXJvXSBVbnJldmlld2VkIGJ1
aWxkIGZpeCBhZnRlciByMjYzNzc2DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcA0KaW5kZXggMjMxOWE2MWEwMjku
Ljc4ZDAxODY2YTkzIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHANCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwDQpAQCAtNTcsNiArNTcsNyBAQA0KICNp
bmNsdWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIg0KICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVt
ZW50LmgiDQogI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiDQorI2luY2x1
ZGUgIktleWJvYXJkRXZlbnQuaCINCiAjaW5jbHVkZSAiTGFiZWxhYmxlRWxlbWVudC5oIg0KICNp
bmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiDQogI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuaCIN
CkBAIC0xMDk0LDE4ICsxMDk1LDQxIEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRl
Y3JlbWVudCgpDQogICAgIGFsdGVyU2xpZGVyVmFsdWUoZmFsc2UpOw0KIH0NCiANCisvLyBGaXJl
IGEga2V5Ym9hcmQgZXZlbnQgaWYgd2Ugd2VyZSBub3QgYWJsZSB0byBzZXQgdGhpcyB2YWx1ZSBu
YXRpdmVseS4NCit2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpwb3N0S2V5Ym9hcmRLZXlz
Rm9yVmFsdWVDaGFuZ2UoYm9vbCBpbmNyZWFzZSkNCit7DQorICAgIGF1dG8ga2V5SW5pdCA9IEtl
eWJvYXJkRXZlbnQ6OkluaXQoKTsNCisgICAgYm9vbCB2ZXJ0aWNhbCA9IG9yaWVudGF0aW9uKCkg
PT0gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbDsNCisgICAgYm9vbCBpc0xUUiA9
IHBhZ2UoKS0+dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpID09IFVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb246OkxUUjsNCisgICAgDQorICAgIGtleUluaXQua2V5ID0gaW5jcmVhc2Ug
PyB2ZXJ0aWNhbCA/ICJBcnJvd1VwIiA6IGlzTFRSID8gIkFycm93UmlnaHQiIDogIkFycm93TGVm
dCIgOiB2ZXJ0aWNhbCA/ICJBcnJvd0Rvd24iIDogaXNMVFIgPyAiQXJyb3dMZWZ0IiA6ICJBcnJv
d1JpZ2h0IjsNCisgICAga2V5SW5pdC5rZXlJZGVudGlmaWVyID0gaW5jcmVhc2UgPyB2ZXJ0aWNh
bCA/ICJ1cCIgOiBpc0xUUiA/ICJyaWdodCIgOiAibGVmdCIgOiB2ZXJ0aWNhbCA/ICJkb3duIiA6
IGlzTFRSID8gImxlZnQiIDogInJpZ2h0IjsNCisNCisgICAgYXV0byBkb3duRXZlbnQgPSBLZXli
b2FyZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwga2V5SW5pdCk7DQor
ICAgIG5vZGUoKS0+ZGlzcGF0Y2hFdmVudChkb3duRXZlbnQpOw0KKyAgICANCisgICAgYXV0byB1
cEV2ZW50ID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50LCBr
ZXlJbml0KTsNCisgICAgbm9kZSgpLT5kaXNwYXRjaEV2ZW50KHVwRXZlbnQpOw0KK30NCisNCit2
b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZXROb2RlVmFsdWUoYm9vbCBpbmNyZWFzZSwg
ZmxvYXQgdmFsdWUpDQorew0KKyAgICBib29sIGRpZFNldCA9IHNldFZhbHVlKFN0cmluZzo6bnVt
YmVyKHZhbHVlKSk7DQorICAgIA0KKyAgICBpZiAoZGlkU2V0KSB7DQorICAgICAgICBpZiAoYXV0
byogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpDQorICAgICAgICAgICAgY2FjaGUtPnBvc3ROb3Rp
ZmljYXRpb24odGhpcywgZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQp
Ow0KKyAgICB9IGVsc2UNCisgICAgICAgIHBvc3RLZXlib2FyZEtleXNGb3JWYWx1ZUNoYW5nZShp
bmNyZWFzZSk7DQorfQ0KKw0KIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNoYW5nZVZh
bHVlQnlTdGVwKGJvb2wgaW5jcmVhc2UpDQogew0KICAgICBmbG9hdCBzdGVwID0gc3RlcFZhbHVl
Rm9yUmFuZ2UoKTsNCiAgICAgZmxvYXQgdmFsdWUgPSB2YWx1ZUZvclJhbmdlKCk7DQogDQogICAg
IHZhbHVlICs9IGluY3JlYXNlID8gc3RlcCA6IC1zdGVwOw0KLQ0KLSAgICBzZXRWYWx1ZShTdHJp
bmc6Om51bWJlcih2YWx1ZSkpOw0KLQ0KLSAgICBhdXRvIG9iamVjdENhY2hlID0gYXhPYmplY3RD
YWNoZSgpOw0KLSAgICBpZiAob2JqZWN0Q2FjaGUpDQotICAgICAgICBvYmplY3RDYWNoZS0+cG9z
dE5vdGlmaWNhdGlvbihub2RlKCksIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkKTsNCisg
ICAgc2V0Tm9kZVZhbHVlKGluY3JlYXNlLCB2YWx1ZSk7DQogfQ0KIA0KIHZvaWQgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmNoYW5nZVZhbHVlQnlQZXJjZW50KGZsb2F0IHBlcmNlbnRDaGFuZ2Up
DQpAQCAtMTExOSwxMSArMTE0Myw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNo
YW5nZVZhbHVlQnlQZXJjZW50KGZsb2F0IHBlcmNlbnRDaGFuZ2UpDQogICAgICAgICBzdGVwID0g
c3RkOjphYnMocGVyY2VudENoYW5nZSkgKiAoMSAvIHBlcmNlbnRDaGFuZ2UpOw0KIA0KICAgICB2
YWx1ZSArPSBzdGVwOw0KLSAgICBzZXRWYWx1ZShTdHJpbmc6Om51bWJlcih2YWx1ZSkpOw0KLQ0K
LSAgICBhdXRvIG9iamVjdENhY2hlID0gYXhPYmplY3RDYWNoZSgpOw0KLSAgICBpZiAob2JqZWN0
Q2FjaGUpDQotICAgICAgICBvYmplY3RDYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihub2RlKCksIEFY
T2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkKTsNCisgICAgc2V0Tm9kZVZhbHVlKHBlcmNlbnRD
aGFuZ2UgPiAwLCB2YWx1ZSk7DQogfQ0KIA0KIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OmlzR2VuZXJpY0ZvY3VzYWJsZUVsZW1lbnQoKSBjb25zdA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaA0KaW5kZXggNGUy
M2NiYWJmMzcuLmNiNWY2MWJjZDlhIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgNCkBAIC0xODksNyArMTg5LDgg
QEAgcHJpdmF0ZToNCiAgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0IG92ZXJyaWRlOw0KICAgICBib29sIHVzZXNBbHRUYWdGb3JUZXh0Q29tcHV0YXRpb24oKSBj
b25zdDsNCiAgICAgYm9vbCByb2xlSWdub3Jlc1RpdGxlKCkgY29uc3Q7DQotICAgIA0KKyAgICB2
b2lkIHBvc3RLZXlib2FyZEtleXNGb3JWYWx1ZUNoYW5nZShib29sIGluY3JlYXNlKTsNCisgICAg
dm9pZCBzZXROb2RlVmFsdWUoYm9vbCBpbmNyZWFzZSwgZmxvYXQgdmFsdWUpOw0KICAgICBOb2Rl
KiBtX25vZGU7DQogfTsNCiANCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oDQppbmRleCBjNmU2MWNlYTM4MC4uOTUzOGZlNDE1YjMgMTAw
NjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgNCkBAIC00NjMsMTEgKzQ2MywxMSBAQCBwdWJsaWM6DQogICAgIHZvaWQgc2V0Rm9jdXNl
ZChib29sKSBvdmVycmlkZSB7IH0NCiAgICAgdm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGUgeyB9DQogICAgIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3Qg
UGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlkZSB7IH0NCi0gICAgdm9pZCBzZXRWYWx1ZShjb25zdCBT
dHJpbmcmKSBvdmVycmlkZSB7IH0NCisgICAgYm9vbCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0KICAgICBib29sIHJlcGxhY2VUZXh0SW5SYW5nZShj
b25zdCBTdHJpbmcmLCBjb25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlOw0KICAgICBib29s
IGluc2VydFRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7DQogDQotICAgIHZvaWQgc2V0VmFs
dWUoZmxvYXQpIG92ZXJyaWRlIHsgfQ0KKyAgICBib29sIHNldFZhbHVlKGZsb2F0KSBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQ0KICAgICB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIG92ZXJyaWRl
IHsgfQ0KICAgICB2b2lkIHNldFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBvdmVycmlkZSB7IH0NCiANCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oDQppbmRleCA2MWExMWJi
NDNiNi4uYmVhNGE3ZmY0NmIgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaA0KKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgNCkBAIC04OTYsMTEg
Kzg5NiwxMSBAQCBwdWJsaWM6DQogICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1c2VkKGJvb2wpID0g
MDsNCiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7
DQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRS
YW5nZSYpID0gMDsNCi0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpID0g
MDsNCisgICAgdmlydHVhbCBib29sIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpID0gMDsNCiAgICAg
dmlydHVhbCBib29sIHJlcGxhY2VUZXh0SW5SYW5nZShjb25zdCBTdHJpbmcmLCBjb25zdCBQbGFp
blRleHRSYW5nZSYpID0gMDsNCiAgICAgdmlydHVhbCBib29sIGluc2VydFRleHQoY29uc3QgU3Ry
aW5nJikgPSAwOw0KIA0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoZmxvYXQpID0gMDsNCisg
ICAgdmlydHVhbCBib29sIHNldFZhbHVlKGZsb2F0KSA9IDA7DQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRTZWxlY3RlZChib29sKSA9IDA7DQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFJvd3Mo
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgPSAwOw0KIA0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
DQppbmRleCA3MzcwNjg1YWQ0Ny4uNDlkNmYyNTVjN2YgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwDQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
DQpAQCAtMTg2MCwxMCArMTg2MCwxMCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnNldFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHNlbA0KICAgICAg
ICAgc2VsZWN0ZWRSb3ctPnNldFNlbGVjdGVkKHRydWUpOw0KIH0NCiAgICAgDQotdm9pZCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHN0cmluZykNCiti
b29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQ0KIHsNCiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFpczxFbGVtZW50PihtX3JlbmRlcmVy
LT5ub2RlKCkpKQ0KLSAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAg
ICANCiAgICAgRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCptX3JlbmRlcmVy
LT5ub2RlKCkpOw0KICAgICBSZW5kZXJPYmplY3QmIHJlbmRlcmVyID0gKm1fcmVuZGVyZXI7DQpA
QCAtMTg3NSwxNCArMTg3NSwyMCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNl
dFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQ0KICAgICAgICAgaWYgKGVsZW1lbnQuc2hvdWxk
VXNlSW5wdXRNZXRob2QoKSkgew0KICAgICAgICAgICAgIGVkaXRvci5jbGVhclRleHQoKTsNCiAg
ICAgICAgICAgICBlZGl0b3IuaW5zZXJ0VGV4dChzdHJpbmcsIG51bGxwdHIpOw0KLSAgICAgICAg
ICAgIHJldHVybjsNCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgIH0NCiAgICAg
fQ0KICAgICAvLyBGSVhNRTogRG8gd2Ugd2FudCB0byBkbyBhbnl0aGluZyBoZXJlIGZvciBBUklB
IHRleHRib3hlcz8NCi0gICAgaWYgKHJlbmRlcmVyLmlzVGV4dEZpZWxkKCkgJiYgaXM8SFRNTElu
cHV0RWxlbWVudD4oZWxlbWVudCkpDQorICAgIGlmIChyZW5kZXJlci5pc1RleHRGaWVsZCgpICYm
IGlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKSB7DQogICAgICAgICBkb3duY2FzdDxIVE1M
SW5wdXRFbGVtZW50PihlbGVtZW50KS5zZXRWYWx1ZShzdHJpbmcpOw0KLSAgICBlbHNlIGlmIChy
ZW5kZXJlci5pc1RleHRBcmVhKCkgJiYgaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCkp
DQorICAgICAgICByZXR1cm4gdHJ1ZTsNCisgICAgfQ0KKyAgICBpZiAocmVuZGVyZXIuaXNUZXh0
QXJlYSgpICYmIGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KGVsZW1lbnQpKSB7DQogICAgICAgICBk
b3duY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50PihlbGVtZW50KS5zZXRWYWx1ZShzdHJpbmcpOw0K
KyAgICAgICAgcmV0dXJuIHRydWU7DQorICAgIH0NCisgICAgDQorICAgIHJldHVybiBmYWxzZTsN
CiB9DQogDQogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdXBwb3J0c0FSSUFPd25z
KCkgY29uc3QNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oDQppbmRleCA3ODE4NWU3MDMyOC4uOTkyMzU3NmVhMzEg
MTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuaA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmgNCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOg0KICAgICAN
CiAgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wpIG92ZXJyaWRlOw0KICAgICB2b2lkIHNldFNlbGVj
dGVkVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGU7DQotICAgIHZvaWQg
c2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7DQorICAgIGJvb2wgc2V0VmFsdWUoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7DQogICAgIHZvaWQgc2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlOw0KICAgICBBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlkZTsNCiANCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcA0KaW5k
ZXggYzA4OTE2YTc5ZjQuLjc1NDdmNmYxNTVhIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcA0KKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcA0KQEAgLTkyLDEz
ICs5MiwxNCBAQCBmbG9hdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyOjp2YWx1ZUZvclJhbmdlKCkg
Y29uc3QNCiAgICAgcmV0dXJuIG1fc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgLyBtX3Njcm9sbGJh
ci0+bWF4aW11bSgpOw0KIH0NCiANCi12b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXI6OnNldFZh
bHVlKGZsb2F0IHZhbHVlKQ0KK2Jvb2wgQWNjZXNzaWJpbGl0eVNjcm9sbGJhcjo6c2V0VmFsdWUo
ZmxvYXQgdmFsdWUpDQogew0KICAgICBpZiAoIW1fc2Nyb2xsYmFyKQ0KLSAgICAgICAgcmV0dXJu
Ow0KKyAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICANCiAgICAgZmxvYXQgbmV3VmFsdWUgPSB2
YWx1ZSAqIG1fc2Nyb2xsYmFyLT5tYXhpbXVtKCk7DQogICAgIG1fc2Nyb2xsYmFyLT5zY3JvbGxh
YmxlQXJlYSgpLnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihtX3Njcm9sbGJhci0+b3Jp
ZW50YXRpb24oKSwgbmV3VmFsdWUpOw0KKyAgICByZXR1cm4gdHJ1ZTsNCiB9DQogICAgIA0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oDQppbmRleCA0YjBkMmUzYmIwYy4uZmIyMWVh
NTMwZTYgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxiYXIuaA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2Nyb2xsYmFyLmgNCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6DQogICAgIGJv
b2wgaXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7DQogICAgIA0KICAgICAvLyBBc3N1bWVzIGZs
b2F0IFswLi4xXQ0KLSAgICB2b2lkIHNldFZhbHVlKGZsb2F0KSBvdmVycmlkZTsNCisgICAgYm9v
bCBzZXRWYWx1ZShmbG9hdCkgb3ZlcnJpZGU7DQogICAgIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBj
b25zdCBvdmVycmlkZTsNCiANCiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9zY3JvbGxiYXI7DQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xp
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRl
ci5jcHANCmluZGV4IGNjNmNiODE4ZThiLi5hMWExNDc5OWVlZSAxMDA2NDQNCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHANCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHANCkBAIC0x
MjYsMTQgKzEyNiwxNSBAQCBmbG9hdCBBY2Nlc3NpYmlsaXR5U2xpZGVyOjptaW5WYWx1ZUZvclJh
bmdlKCkgY29uc3QNCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihpbnB1dEVsZW1lbnQo
KS0+bWluaW11bSgpKTsNCiB9DQogDQotdm9pZCBBY2Nlc3NpYmlsaXR5U2xpZGVyOjpzZXRWYWx1
ZShjb25zdCBTdHJpbmcmIHZhbHVlKQ0KK2Jvb2wgQWNjZXNzaWJpbGl0eVNsaWRlcjo6c2V0VmFs
dWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkNCiB7DQogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0
ID0gaW5wdXRFbGVtZW50KCk7DQogICAgIA0KICAgICBpZiAoaW5wdXQtPnZhbHVlKCkgPT0gdmFs
dWUpDQotICAgICAgICByZXR1cm47DQorICAgICAgICByZXR1cm4gdHJ1ZTsNCiANCiAgICAgaW5w
dXQtPnNldFZhbHVlKHZhbHVlLCBEaXNwYXRjaENoYW5nZUV2ZW50KTsNCisgICAgcmV0dXJuIHRy
dWU7DQogfQ0KIA0KIEhUTUxJbnB1dEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlTbGlkZXI6OmlucHV0
RWxlbWVudCgpIGNvbnN0DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTbGlkZXIuaA0KaW5kZXggOTFjNzA5MjVlNmQuLmFiYTkxMjAwMDg0IDEwMDY0
NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVy
LmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRl
ci5oDQpAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOg0KICAgICBib29sIGNhblNldFZhbHVlQXR0
cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQ0KICAgICBjb25zdCBBdG9t
U3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRl
Ow0KICAgICANCi0gICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsNCisg
ICAgYm9vbCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsNCiAgICAgZmxvYXQgdmFs
dWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBmbG9hdCBtYXhWYWx1ZUZvclJhbmdl
KCkgY29uc3Qgb3ZlcnJpZGU7DQogICAgIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCBv
dmVycmlkZTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwDQppbmRleCA4Mzk1YmUyNmE0OS4u
MDYxZTlhNjg2MGQgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCkBAIC02MjksMTAg
KzYyOSwyMiBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldElzRXhwYW5kZWQoYm9vbCB2YWx1
ZSkNCiAgICAgICAgIG9iamVjdC0+c2V0SXNFeHBhbmRlZCh2YWx1ZSk7DQogICAgIH0pOw0KIH0N
Ci12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldFZhbHVlKGZsb2F0IHZhbHVlKQ0KKw0KK2Jvb2wg
QVhJc29sYXRlZE9iamVjdDo6c2V0VmFsdWUoZmxvYXQgdmFsdWUpDQogew0KLSAgICBwZXJmb3Jt
RnVuY3Rpb25Pbk1haW5UaHJlYWQoWyZ2YWx1ZV0oQVhDb3JlT2JqZWN0KiBvYmplY3QpIHsNCi0g
ICAgICAgIG9iamVjdC0+c2V0VmFsdWUodmFsdWUpOw0KKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPGJvb2w+KFsmdmFsdWUsIHRoaXNdICgpIC0+
IGJvb2wgew0KKyAgICAgICAgaWYgKGF1dG8qIGF4T2JqZWN0ID0gYXNzb2NpYXRlZEFYT2JqZWN0
KCkpDQorICAgICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5zZXRWYWx1ZSh2YWx1ZSk7DQorICAg
ICAgICByZXR1cm4gZmFsc2U7DQorICAgIH0pOw0KK30NCisNCitib29sIEFYSXNvbGF0ZWRPYmpl
Y3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpDQorew0KKyAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPGJvb2w+KFsmdmFsdWUsIHRoaXNd
ICgpIC0+IGJvb2wgew0KKyAgICAgICAgaWYgKGF1dG8qIGF4T2JqZWN0ID0gYXNzb2NpYXRlZEFY
T2JqZWN0KCkpDQorICAgICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5zZXRWYWx1ZSh2YWx1ZSk7
DQorICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgIH0pOw0KIH0NCiANCkBAIC02NzEsMTMgKzY4
Myw2IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3Qg
UGxhaW5UZXh0UmFuZ2UmIHZhbHVlKQ0KICAgICB9KTsNCiB9DQogDQotdm9pZCBBWElzb2xhdGVk
T2JqZWN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQ0KLXsNCi0gICAgcGVyZm9ybUZ1
bmN0aW9uT25NYWluVGhyZWFkKFsmdmFsdWVdKEFYQ29yZU9iamVjdCogb2JqZWN0KSB7DQotICAg
ICAgICBvYmplY3QtPnNldFZhbHVlKHZhbHVlKTsNCi0gICAgfSk7DQotfQ0KLQ0KICNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpDQogdm9pZCBBWElzb2xhdGVkT2Jq
ZWN0OjpzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sIHZhbHVlKQ0KIHsNCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmgNCmluZGV4IDJlNmI3ZWZjNjA2Li4yYTE5OWZlYTU5YiAxMDA2NDQNCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuaA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZE9iamVjdC5oDQpAQCAtNzAzLDEzICs3MDMsMTMgQEAgcHJpdmF0ZToNCiAgICAgLy8g
QXR0cmlidXRlIHNldHRlcnMuDQogICAgIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkgb3ZlcnJp
ZGU7DQogICAgIHZvaWQgc2V0SXNFeHBhbmRlZChib29sKSBvdmVycmlkZTsNCi0gICAgdm9pZCBz
ZXRWYWx1ZShmbG9hdCkgb3ZlcnJpZGU7DQorICAgIGJvb2wgc2V0VmFsdWUoZmxvYXQpIG92ZXJy
aWRlOw0KICAgICB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIG92ZXJyaWRlOw0KICAgICB2b2lkIHNl
dFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZTsNCiAg
ICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wpIG92ZXJyaWRlOw0KICAgICB2b2lkIHNldFNlbGVjdGVk
VGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsNCiAgICAgdm9pZCBzZXRTZWxlY3RlZFRleHRS
YW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlOw0KLSAgICB2b2lkIHNldFZhbHVl
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOw0KKyAgICBib29sIHNldFZhbHVlKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOw0KICNpZiBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKElPU19GQU1J
TFkpDQogICAgIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7DQog
I2VuZGlmDQo=
</data>
<flag name="review"
          id="418677"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403307</attachid>
            <date>2020-07-01 12:19:49 -0700</date>
            <delta_ts>2020-07-01 13:32:32 -0700</delta_ts>
            <desc>landing patch</desc>
            <filename>file_213744.txt</filename>
            <type>text/plain</type>
            <size>22362</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggODExMGE2OTJiMjYuLmU4NTA3OTA4ZWM0IDEwMDY0NA0KLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nDQorKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsMTUg
QEANCisyMDIwLTA2LTMwICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+DQor
DQorICAgICAgICBBWDogSW1wbGVtZW50IHJlbGV2YW50IHNpbXVsYXRlZCBrZXkgcHJlc3NlcyBm
b3IgY3VzdG9tIEFSSUEgd2lkZ2V0cyBmb3IgaW5jcmVtZW50L2RlY3JlbWVudA0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc0NA0KKw0KKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuDQorDQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
a2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVtZW50LWFjdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4NCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtcG9zdGVkLWZvci1pbmNyZW1l
bnQtYWN0aW9ucy5odG1sOiBBZGRlZC4NCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9rZXlldmVu
dHMtZm9yLWluY3JlbWVudC1hY3Rpb25zLXdpdGgtbm9kZS1yZW1vdmFsLWV4cGVjdGVkLnR4dDog
QWRkZWQuDQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLWZvci1pbmNyZW1lbnQt
YWN0aW9ucy13aXRoLW5vZGUtcmVtb3ZhbC5odG1rOiBBZGRlZC4NCisNCiAyMDIwLTA2LTMwICBM
YXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPg0KIA0KICAgICAgICAgW1dQRV0gR2FyZGVu
IHNvbWUgZmFpbHVyZXMgYW5kIGFkZCBuZXcgc2VjdGlvbiB0byBleHBlY3RhdGlvbg0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLWZvci1pbmNyZW1lbnQt
YWN0aW9ucy13aXRoLW5vZGUtcmVtb3ZhbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2tleWV2ZW50cy1mb3ItaW5jcmVtZW50LWFjdGlvbnMtd2l0aC1ub2RlLXJlbW92
YWwtZXhwZWN0ZWQudHh0DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAu
LmRiM2M5NGY5NjhmDQotLS0gL2Rldi9udWxsDQorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2tleWV2ZW50cy1mb3ItaW5jcmVtZW50LWFjdGlvbnMtd2l0aC1ub2RlLXJlbW92YWwtZXhw
ZWN0ZWQudHh0DQpAQCAtMCwwICsxLDEwIEBADQorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgaWYgYSBr
ZXlkb3duIGV2ZW50IHJlbW92ZXMgdGhlIG5vZGUsIGJhZCB0aGluZ3MgZG9uJ3QgaGFwcGVuLg0K
Kw0KK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4NCisNCisNCitLZXljb2RlIHJlY2VpdmVkOiBp
ZGVudGlmaWVyOiByaWdodCBrZXkgbmFtZTogQXJyb3dSaWdodA0KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUNCisNCitURVNUIENPTVBMRVRFDQorDQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtZm9yLWluY3JlbWVudC1hY3Rpb25zLXdpdGgt
bm9kZS1yZW1vdmFsLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2tleWV2ZW50cy1m
b3ItaW5jcmVtZW50LWFjdGlvbnMtd2l0aC1ub2RlLXJlbW92YWwuaHRtbA0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi4xODJmYzllZjgxNA0KLS0tIC9kZXYvbnVsbA0K
KysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtZm9yLWluY3JlbWVudC1h
Y3Rpb25zLXdpdGgtbm9kZS1yZW1vdmFsLmh0bWwNCkBAIC0wLDAgKzEsNDcgQEANCis8aHRtbD4N
Cis8aHRtbD4NCis8aGVhZD4NCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4NCis8L2hlYWQ+DQorPGJvZHkgaWQ9ImJvZHkiPg0KKw0KKzxkaXYgaWQ9
InNsaWRlciINCisgICAgICAgICAgIHJvbGU9InNsaWRlciINCisgICAgICAgICAgIHRhYmluZGV4
PSIwIg0KKyAgICAgICAgICAgYXJpYS12YWx1ZW1pbj0iMCINCisgICAgICAgICAgIGFyaWEtdmFs
dWVub3c9IjAiDQorICAgICAgICAgICBhcmlhLXZhbHVlbWF4PSIyNTUiDQorICAgICAgICAgICBh
cmlhLWxhYmVsbGVkYnk9ImlkUmVkIj48L2Rpdj4NCisNCis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4NCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4NCisgICAgIA0KKzxzY3JpcHQ+DQorICAgIGZ1
bmN0aW9uIGhhbmRsZUtleVVwKGV2ZW50KSB7DQorICAgICAgICBkZWJ1ZygiS2V5IHVwIHNob3Vs
ZCBOT1QgYmUgcmVhY2hlZCIpOw0KKyAgICB9DQorDQorICAgIGZ1bmN0aW9uIGhhbmRsZUtleURv
d24oZXZlbnQpIHsNCisgICAgICAgIGRlYnVnKCJLZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVy
OiAiICsgZXZlbnQua2V5SWRlbnRpZmllciArICIga2V5IG5hbWU6ICIgKyBldmVudC5rZXkpOw0K
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKS5yZW1vdmVDaGlsZChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic2xpZGVyIikpOw0KKyAgICAgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsNCisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOw0KKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7DQorICAgIH0NCisNCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcikgew0KKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7DQorICAgICAgICBkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgaWYgYSBrZXlkb3duIGV2ZW50IHJlbW92ZXMg
dGhlIG5vZGUsIGJhZCB0aGluZ3MgZG9uJ3QgaGFwcGVuLiIpOw0KKw0KKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInNsaWRlciIpLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBo
YW5kbGVLZXlEb3duKTsNCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzbGlkZXIi
KS5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIGhhbmRsZUtleVVwKTsNCisNCisgICAgICAgIC8v
IEdldCB0aGUgcGFyZW50IGVsZW1lbnQuDQorICAgICAgICB2YXIgYXhTbGlkZXIgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInNsaWRlciIpOw0KKyAgICAg
ICAgYXhTbGlkZXIuaW5jcmVtZW50KCk7DQorICAgIH0NCisgPC9zY3JpcHQ+DQorDQorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KKzwvYm9keT4N
Cis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9rZXlldmVu
dHMtcG9zdGVkLWZvci1pbmNyZW1lbnQtYWN0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2tleWV2ZW50cy1wb3N0ZWQtZm9yLWluY3JlbWVudC1hY3Rpb25zLWV4
cGVjdGVkLnR4dA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi42NTNh
MGQ1MGYzMg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9r
ZXlldmVudHMtcG9zdGVkLWZvci1pbmNyZW1lbnQtYWN0aW9ucy1leHBlY3RlZC50eHQNCkBAIC0w
LDAgKzEsMjMgQEANCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgaW5jcmVtZW50L2RlY3Jl
bWVudCBhY3Rpb25zIHBvc3Qga2V5Ym9hcmQgZXZlbnRzIHRoYXQgYXJlIGNvcnJlY3QgZm9yIExU
UiBhbmQgb3JpZW50YXRpb24uDQorDQorT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLg0KKw0KKw0K
K0luY3JlbWVudC9EZWNyZW1lbnQgLSBMVFINCitIb3Jpem9udGFsIG9yaWVudGF0aW9uDQorS2V5
Y29kZSByZWNlaXZlZDogaWRlbnRpZmllcjogcmlnaHQga2V5IG5hbWU6IEFycm93UmlnaHQNCitL
ZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVyOiBsZWZ0IGtleSBuYW1lOiBBcnJvd0xlZnQNCitW
ZXJ0aWNhbCBvcmllbnRhdGlvbg0KK0tleWNvZGUgcmVjZWl2ZWQ6IGlkZW50aWZpZXI6IHVwIGtl
eSBuYW1lOiBBcnJvd1VwDQorS2V5Y29kZSByZWNlaXZlZDogaWRlbnRpZmllcjogZG93biBrZXkg
bmFtZTogQXJyb3dEb3duDQorSW5jcmVtZW50L0RlY3JlbWVudCAtIFJUTA0KK0hvcml6b250YWwg
b3JpZW50YXRpb24NCitLZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVyOiBsZWZ0IGtleSBuYW1l
OiBBcnJvd0xlZnQNCitLZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVyOiByaWdodCBrZXkgbmFt
ZTogQXJyb3dSaWdodA0KK1ZlcnRpY2FsIG9yaWVudGF0aW9uDQorS2V5Y29kZSByZWNlaXZlZDog
aWRlbnRpZmllcjogdXAga2V5IG5hbWU6IEFycm93VXANCitLZXljb2RlIHJlY2VpdmVkOiBpZGVu
dGlmaWVyOiBkb3duIGtleSBuYW1lOiBBcnJvd0Rvd24NCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlDQorDQorVEVTVCBDT01QTEVURQ0KKw0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVtZW50LWFjdGlvbnMuaHRt
bCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVt
ZW50LWFjdGlvbnMuaHRtbA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAw
Li4zOTE2YzRjNzRjNg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9rZXlldmVudHMtcG9zdGVkLWZvci1pbmNyZW1lbnQtYWN0aW9ucy5odG1sDQpAQCAtMCww
ICsxLDYzIEBADQorPGh0bWw+DQorPGh0bWw+DQorPGhlYWQ+DQorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxib2R5IGlkPSJi
b2R5Ij4NCisNCis8ZGl2IGlkPSJzbGlkZXIiDQorICAgICAgICAgICByb2xlPSJzbGlkZXIiDQor
ICAgICAgICAgICB0YWJpbmRleD0iMCINCisgICAgICAgICAgIGFyaWEtdmFsdWVtaW49IjAiDQor
ICAgICAgICAgICBhcmlhLXZhbHVlbm93PSIwIg0KKyAgICAgICAgICAgYXJpYS12YWx1ZW1heD0i
MjU1Ig0KKyAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PSJpZFJlZCI+PC9kaXY+DQorDQorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+DQorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+DQorICAgICAN
Cis8c2NyaXB0Pg0KKyAgICB2YXIga2V5Q291bnQgPSAwOw0KKyAgICBmdW5jdGlvbiBoYW5kbGVL
ZXlEb3duKGV2ZW50KSB7DQorICAgICAgICBkZWJ1ZygiS2V5Y29kZSByZWNlaXZlZDogaWRlbnRp
ZmllcjogIiArIGV2ZW50LmtleUlkZW50aWZpZXIgKyAiIGtleSBuYW1lOiAiICsgZXZlbnQua2V5
KTsNCisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQorICAgICAgICBldmVudC5zdG9w
UHJvcGFnYXRpb24oKTsNCisgICAgICAgIGtleUNvdW50Kys7DQorICAgICAgICBpZiAoa2V5Q291
bnQgPT0gNCkgew0KKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOw0KKyAgICAgICAgfQ0KKyAg
ICAgfQ0KKw0KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7DQorICAg
ICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsNCisgICAgICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCB0aGUgaW5jcmVtZW50L2RlY3JlbWVudCBhY3Rpb25zIHBvc3Qga2V5
Ym9hcmQgZXZlbnRzIHRoYXQgYXJlIGNvcnJlY3QgZm9yIExUUiBhbmQgb3JpZW50YXRpb24uIik7
DQorDQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2xpZGVyIikuYWRkRXZlbnRM
aXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pOw0KKw0KKyAgICAgICAgLy8gR2V0IHRo
ZSBwYXJlbnQgZWxlbWVudC4NCisgICAgICAgIHZhciBheFNsaWRlciA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgic2xpZGVyIik7DQorICAgICAgICANCisg
ICAgICAgIGRlYnVnKCJJbmNyZW1lbnQvRGVjcmVtZW50IC0gTFRSIik7ICAgIA0KKyAgICAgICAg
aW5jcmVtZW50RGVjcmVtZW50KCk7DQorDQorICAgICAgICBkZWJ1ZygiSW5jcmVtZW50L0RlY3Jl
bWVudCAtIFJUTCIpOw0KKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXRVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKCJSVEwiKTsNCisgICAgICAgIGluY3JlbWVudERlY3JlbWVudCgpOw0K
Kw0KKyAgICAgICAgZnVuY3Rpb24gaW5jcmVtZW50RGVjcmVtZW50KCkgew0KKyAgICAgICAgICAg
IGRlYnVnKCJIb3Jpem9udGFsIG9yaWVudGF0aW9uIik7DQorICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNsaWRlciIpLnNldEF0dHJpYnV0ZSgiYXJpYS1vcmllbnRhdGlvbiIs
ICJob3Jpem9udGFsIik7DQorICAgICAgICAgICAgYXhTbGlkZXIuaW5jcmVtZW50KCk7DQorICAg
ICAgICAgICAgYXhTbGlkZXIuZGVjcmVtZW50KCk7DQorDQorICAgICAgICAgICAgZGVidWcoIlZl
cnRpY2FsIG9yaWVudGF0aW9uIik7DQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNsaWRlciIpLnNldEF0dHJpYnV0ZSgiYXJpYS1vcmllbnRhdGlvbiIsICJ2ZXJ0aWNhbCIp
Ow0KKyAgICAgICAgICAgIGF4U2xpZGVyLmluY3JlbWVudCgpOw0KKyAgICAgICAgICAgIGF4U2xp
ZGVyLmRlY3JlbWVudCgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorIDwvc2NyaXB0Pg0KKw0KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4NCis8L2Jv
ZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0KaW5kZXggYTYxNmU2NTRkNmQuLjc5ODc3NjlmMGY5IDEw
MDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsMzkgQEANCisyMDIwLTA2LTMwICBDaHJpcyBGbGVpemFj
aCAgPGNmbGVpemFjaEBhcHBsZS5jb20+DQorDQorICAgICAgICBBWDogSW1wbGVtZW50IHJlbGV2
YW50IHNpbXVsYXRlZCBrZXkgcHJlc3NlcyBmb3IgY3VzdG9tIEFSSUEgd2lkZ2V0cyBmb3IgaW5j
cmVtZW50L2RlY3JlbWVudA0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMzc0NA0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuDQor
DQorICAgICAgICBJbiBvcmRlciB0byBhbGxvdyBjdXN0b20gQVJJQSB3aWRnZXRzIHRvIHdvcmss
IHdlIGNhbiBwb3N0IGtleWJvYXJkIGV2ZW50cyBmb3Igc3BlY2lmaWMgYXggYWN0aW9ucw0KKyAg
ICAgICAgdGhhdCBhcmUgbm90IGhhbmRsZWQgbmF0aXZlbHkuDQorDQorICAgICAgICBTcGVjOiBo
dHRwczovL2dpdGh1Yi5jb20vV0lDRy9hb20vYmxvYi9naC1wYWdlcy9leHBsYWluZXIubWQjdXNl
ci1hY3Rpb24tZXZlbnRzLWZyb20tYXNzaXN0aXZlLXRlY2hub2xvZ3kNCisNCisgICAgICAgIFRl
c3Q6IGFjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVtZW50LWFjdGlvbnMu
aHRtbA0KKyAgICAgICAgICAgICAgYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtZm9yLWluY3JlbWVu
dC1hY3Rpb25zLXdpdGgtbm9kZS1yZW1vdmFsLmh0bWwNCisNCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6DQorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnBvc3RLZXlib2FyZEtleXNGb3JWYWx1ZUNoYW5nZSk6DQor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNldE5vZGVWYWx1ZSk6
DQorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNoYW5nZVZhbHVl
QnlTdGVwKToNCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hh
bmdlVmFsdWVCeVBlcmNlbnQpOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0Lmg6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5oOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UuaDoNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpz
ZXRWYWx1ZSk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5oOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIu
Y3BwOg0KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxiYXI6OnNldFZhbHVl
KToNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmg6DQor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHA6DQorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNsaWRlcjo6c2V0VmFsdWUpOg0KKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaDoNCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHA6DQorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6c2V0VmFsdWUpOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6DQorDQogMjAyMC0wNi0zMCAgRnVqaWkg
SGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4NCiANCiAgICAgICAgIFtXaW5DYWly
b10gVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjI2Mzc3Ng0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHANCmlu
ZGV4IDIzMTlhNjFhMDI5Li42MDNmNDJiNTczMiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwDQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcA0KQEAgLTU3
LDYgKzU3LDcgQEANCiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCINCiAjaW5jbHVkZSAi
SFRNTFRleHRBcmVhRWxlbWVudC5oIg0KICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oIg0KKyNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiDQogI2luY2x1ZGUgIkxhYmVsYWJs
ZUVsZW1lbnQuaCINCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIg0KICNpbmNsdWRlICJN
YXRoTUxFbGVtZW50LmgiDQpAQCAtMTA5NCwxOCArMTA5NSw0MiBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0OjpkZWNyZW1lbnQoKQ0KICAgICBhbHRlclNsaWRlclZhbHVlKGZhbHNlKTsN
CiB9DQogDQorLy8gRmlyZSBhIGtleWJvYXJkIGV2ZW50IGlmIHdlIHdlcmUgbm90IGFibGUgdG8g
c2V0IHRoaXMgdmFsdWUgbmF0aXZlbHkuDQordm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
cG9zdEtleWJvYXJkS2V5c0ZvclZhbHVlQ2hhbmdlKGJvb2wgaW5jcmVhc2UpDQorew0KKyAgICBh
dXRvIGtleUluaXQgPSBLZXlib2FyZEV2ZW50OjpJbml0KCk7DQorICAgIGJvb2wgdmVydGljYWwg
PSBvcmllbnRhdGlvbigpID09IEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VmVydGljYWw7DQor
ICAgIGJvb2wgaXNMVFIgPSBwYWdlKCktPnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKSA9
PSBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpMVFI7DQorICAgIA0KKyAgICBrZXlJbml0
LmtleSA9IGluY3JlYXNlID8gdmVydGljYWwgPyAiQXJyb3dVcCJfcyA6IGlzTFRSID8gIkFycm93
UmlnaHQiX3MgOiAiQXJyb3dMZWZ0Il9zIDogdmVydGljYWwgPyAiQXJyb3dEb3duIl9zIDogaXNM
VFIgPyAiQXJyb3dMZWZ0Il9zIDogIkFycm93UmlnaHQiX3M7DQorICAgIGtleUluaXQua2V5SWRl
bnRpZmllciA9IGluY3JlYXNlID8gdmVydGljYWwgPyAidXAiX3MgOiBpc0xUUiA/ICJyaWdodCJf
cyA6ICJsZWZ0Il9zIDogdmVydGljYWwgPyAiZG93biJfcyA6IGlzTFRSID8gImxlZnQiX3MgOiAi
cmlnaHQiX3M7DQorDQorICAgIGlmIChhdXRvKiBub2RlID0gdGhpcy0+bm9kZSgpKQ0KKyAgICAg
ICAgbm9kZS0+ZGlzcGF0Y2hFdmVudChLZXlib2FyZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmtleWRvd25FdmVudCwga2V5SW5pdCkpOw0KKw0KKyAgICAvLyBFbnN1cmUgbm9kZSBpcyBzdGls
bCB2YWxpZCBhbmQgd2Fzbid0IHJlbW92ZWQgYWZ0ZXIgdGhlIGtleWRvd24uDQorICAgIGlmIChh
dXRvKiBub2RlID0gdGhpcy0+bm9kZSgpKQ0KKyAgICAgICAgbm9kZS0+ZGlzcGF0Y2hFdmVudChL
ZXlib2FyZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmtleXVwRXZlbnQsIGtleUluaXQpKTsN
Cit9DQorDQordm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2V0Tm9kZVZhbHVlKGJvb2wg
aW5jcmVhc2UsIGZsb2F0IHZhbHVlKQ0KK3sNCisgICAgYm9vbCBkaWRTZXQgPSBzZXRWYWx1ZShT
dHJpbmc6Om51bWJlcih2YWx1ZSkpOw0KKyAgICANCisgICAgaWYgKGRpZFNldCkgew0KKyAgICAg
ICAgaWYgKGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpKQ0KKyAgICAgICAgICAgIGNhY2hl
LT5wb3N0Tm90aWZpY2F0aW9uKHRoaXMsIGRvY3VtZW50KCksIEFYT2JqZWN0Q2FjaGU6OkFYVmFs
dWVDaGFuZ2VkKTsNCisgICAgfSBlbHNlDQorICAgICAgICBwb3N0S2V5Ym9hcmRLZXlzRm9yVmFs
dWVDaGFuZ2UoaW5jcmVhc2UpOw0KK30NCisNCiB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpjaGFuZ2VWYWx1ZUJ5U3RlcChib29sIGluY3JlYXNlKQ0KIHsNCiAgICAgZmxvYXQgc3RlcCA9
IHN0ZXBWYWx1ZUZvclJhbmdlKCk7DQogICAgIGZsb2F0IHZhbHVlID0gdmFsdWVGb3JSYW5nZSgp
Ow0KIA0KICAgICB2YWx1ZSArPSBpbmNyZWFzZSA/IHN0ZXAgOiAtc3RlcDsNCi0NCi0gICAgc2V0
VmFsdWUoU3RyaW5nOjpudW1iZXIodmFsdWUpKTsNCi0NCi0gICAgYXV0byBvYmplY3RDYWNoZSA9
IGF4T2JqZWN0Q2FjaGUoKTsNCi0gICAgaWYgKG9iamVjdENhY2hlKQ0KLSAgICAgICAgb2JqZWN0
Q2FjaGUtPnBvc3ROb3RpZmljYXRpb24obm9kZSgpLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hh
bmdlZCk7DQorICAgIHNldE5vZGVWYWx1ZShpbmNyZWFzZSwgdmFsdWUpOw0KIH0NCiANCiB2b2lk
IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjaGFuZ2VWYWx1ZUJ5UGVyY2VudChmbG9hdCBwZXJj
ZW50Q2hhbmdlKQ0KQEAgLTExMTksMTEgKzExNDQsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0OjpjaGFuZ2VWYWx1ZUJ5UGVyY2VudChmbG9hdCBwZXJjZW50Q2hhbmdlKQ0KICAgICAg
ICAgc3RlcCA9IHN0ZDo6YWJzKHBlcmNlbnRDaGFuZ2UpICogKDEgLyBwZXJjZW50Q2hhbmdlKTsN
CiANCiAgICAgdmFsdWUgKz0gc3RlcDsNCi0gICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIodmFs
dWUpKTsNCi0NCi0gICAgYXV0byBvYmplY3RDYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsNCi0gICAg
aWYgKG9iamVjdENhY2hlKQ0KLSAgICAgICAgb2JqZWN0Q2FjaGUtPnBvc3ROb3RpZmljYXRpb24o
bm9kZSgpLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCk7DQorICAgIHNldE5vZGVWYWx1
ZShwZXJjZW50Q2hhbmdlID4gMCwgdmFsdWUpOw0KIH0NCiANCiBib29sIEFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0Ojppc0dlbmVyaWNGb2N1c2FibGVFbGVtZW50KCkgY29uc3QNCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgN
CmluZGV4IDRlMjNjYmFiZjM3Li5jYjVmNjFiY2Q5YSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaA0KKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oDQpAQCAtMTg5
LDcgKzE4OSw4IEBAIHByaXZhdGU6DQogICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSBjb25zdCBvdmVycmlkZTsNCiAgICAgYm9vbCB1c2VzQWx0VGFnRm9yVGV4dENvbXB1
dGF0aW9uKCkgY29uc3Q7DQogICAgIGJvb2wgcm9sZUlnbm9yZXNUaXRsZSgpIGNvbnN0Ow0KLSAg
ICANCisgICAgdm9pZCBwb3N0S2V5Ym9hcmRLZXlzRm9yVmFsdWVDaGFuZ2UoYm9vbCBpbmNyZWFz
ZSk7DQorICAgIHZvaWQgc2V0Tm9kZVZhbHVlKGJvb2wgaW5jcmVhc2UsIGZsb2F0IHZhbHVlKTsN
CiAgICAgTm9kZSogbV9ub2RlOw0KIH07DQogDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaA0KaW5kZXggYzZlNjFjZWEzODAuLjk1Mzhm
ZTQxNWIzIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oDQpAQCAtNDYzLDExICs0NjMsMTEgQEAgcHVibGljOg0KICAgICB2b2lk
IHNldEZvY3VzZWQoYm9vbCkgb3ZlcnJpZGUgeyB9DQogICAgIHZvaWQgc2V0U2VsZWN0ZWRUZXh0
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQ0KICAgICB2b2lkIHNldFNlbGVjdGVkVGV4dFJh
bmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGUgeyB9DQotICAgIHZvaWQgc2V0VmFs
dWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9DQorICAgIGJvb2wgc2V0VmFsdWUoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCiAgICAgYm9vbCByZXBsYWNlVGV4
dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlkZTsN
CiAgICAgYm9vbCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOw0KIA0KLSAgICB2
b2lkIHNldFZhbHVlKGZsb2F0KSBvdmVycmlkZSB7IH0NCisgICAgYm9vbCBzZXRWYWx1ZShmbG9h
dCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCiAgICAgdm9pZCBzZXRTZWxlY3RlZChib29s
KSBvdmVycmlkZSB7IH0NCiAgICAgdm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9DQogDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaA0KaW5k
ZXggNjFhMTFiYjQzYjYuLmJlYTRhN2ZmNDZiIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgNCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oDQpA
QCAtODk2LDExICs4OTYsMTEgQEAgcHVibGljOg0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXNl
ZChib29sKSA9IDA7DQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3Ry
aW5nJikgPSAwOw0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3Qg
UGxhaW5UZXh0UmFuZ2UmKSA9IDA7DQotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBT
dHJpbmcmKSA9IDA7DQorICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSA9
IDA7DQogICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwg
Y29uc3QgUGxhaW5UZXh0UmFuZ2UmKSA9IDA7DQogICAgIHZpcnR1YWwgYm9vbCBpbnNlcnRUZXh0
KGNvbnN0IFN0cmluZyYpID0gMDsNCiANCi0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGZsb2F0
KSA9IDA7DQorICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZShmbG9hdCkgPSAwOw0KICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgPSAwOw0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Vs
ZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsNCiANCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcA0KaW5kZXggNzM3MDY4NWFkNDcuLjQ5ZDZmMjU1YzdmIDEwMDY0NA0KLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcA0KQEAgLTE4NjAsMTAgKzE4NjAsMTAgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBz
ZWwNCiAgICAgICAgIHNlbGVjdGVkUm93LT5zZXRTZWxlY3RlZCh0cnVlKTsNCiB9DQogICAgIA0K
LXZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiBz
dHJpbmcpDQorYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRWYWx1ZShjb25zdCBT
dHJpbmcmIHN0cmluZykNCiB7DQogICAgIGlmICghbV9yZW5kZXJlciB8fCAhaXM8RWxlbWVudD4o
bV9yZW5kZXJlci0+bm9kZSgpKSkNCi0gICAgICAgIHJldHVybjsNCisgICAgICAgIHJldHVybiBm
YWxzZTsNCiAgICAgDQogICAgIEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pigq
bV9yZW5kZXJlci0+bm9kZSgpKTsNCiAgICAgUmVuZGVyT2JqZWN0JiByZW5kZXJlciA9ICptX3Jl
bmRlcmVyOw0KQEAgLTE4NzUsMTQgKzE4NzUsMjAgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHN0cmluZykNCiAgICAgICAgIGlmIChlbGVt
ZW50LnNob3VsZFVzZUlucHV0TWV0aG9kKCkpIHsNCiAgICAgICAgICAgICBlZGl0b3IuY2xlYXJU
ZXh0KCk7DQogICAgICAgICAgICAgZWRpdG9yLmluc2VydFRleHQoc3RyaW5nLCBudWxscHRyKTsN
Ci0gICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAg
ICB9DQogICAgIH0NCiAgICAgLy8gRklYTUU6IERvIHdlIHdhbnQgdG8gZG8gYW55dGhpbmcgaGVy
ZSBmb3IgQVJJQSB0ZXh0Ym94ZXM/DQotICAgIGlmIChyZW5kZXJlci5pc1RleHRGaWVsZCgpICYm
IGlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKQ0KKyAgICBpZiAocmVuZGVyZXIuaXNUZXh0
RmllbGQoKSAmJiBpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkgew0KICAgICAgICAgZG93
bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkuc2V0VmFsdWUoc3RyaW5nKTsNCi0gICAg
ZWxzZSBpZiAocmVuZGVyZXIuaXNUZXh0QXJlYSgpICYmIGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+
KGVsZW1lbnQpKQ0KKyAgICAgICAgcmV0dXJuIHRydWU7DQorICAgIH0NCisgICAgaWYgKHJlbmRl
cmVyLmlzVGV4dEFyZWEoKSAmJiBpczxIVE1MVGV4dEFyZWFFbGVtZW50PihlbGVtZW50KSkgew0K
ICAgICAgICAgZG93bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCkuc2V0VmFsdWUo
c3RyaW5nKTsNCisgICAgICAgIHJldHVybiB0cnVlOw0KKyAgICB9DQorICAgIA0KKyAgICByZXR1
cm4gZmFsc2U7DQogfQ0KIA0KIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3VwcG9y
dHNBUklBT3ducygpIGNvbnN0DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaA0KaW5kZXggNzgxODVlNzAzMjguLjk5
MjM1NzZlYTMxIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oDQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1Ymxp
YzoNCiAgICAgDQogICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZTsNCiAgICAgdm9p
ZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlOw0K
LSAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOw0KKyAgICBib29sIHNl
dFZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOw0KICAgICB2b2lkIHNldFNlbGVjdGVkUm93
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZTsNCiAgICAgQWNjZXNzaWJp
bGl0eU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7DQogDQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJh
ci5jcHANCmluZGV4IGMwODkxNmE3OWY0Li43NTQ3ZjZmMTU1YSAxMDA2NDQNCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHANCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAN
CkBAIC05MiwxMyArOTIsMTQgQEAgZmxvYXQgQWNjZXNzaWJpbGl0eVNjcm9sbGJhcjo6dmFsdWVG
b3JSYW5nZSgpIGNvbnN0DQogICAgIHJldHVybiBtX3Njcm9sbGJhci0+Y3VycmVudFBvcygpIC8g
bV9zY3JvbGxiYXItPm1heGltdW0oKTsNCiB9DQogDQotdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xs
YmFyOjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSkNCitib29sIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXI6
OnNldFZhbHVlKGZsb2F0IHZhbHVlKQ0KIHsNCiAgICAgaWYgKCFtX3Njcm9sbGJhcikNCi0gICAg
ICAgIHJldHVybjsNCisgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgDQogICAgIGZsb2F0IG5l
d1ZhbHVlID0gdmFsdWUgKiBtX3Njcm9sbGJhci0+bWF4aW11bSgpOw0KICAgICBtX3Njcm9sbGJh
ci0+c2Nyb2xsYWJsZUFyZWEoKS5zY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24obV9zY3Jv
bGxiYXItPm9yaWVudGF0aW9uKCksIG5ld1ZhbHVlKTsNCisgICAgcmV0dXJuIHRydWU7DQogfQ0K
ICAgICANCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaA0KaW5kZXggNGIwZDJlM2Ji
MGMuLmZiMjFlYTUzMGU2IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oDQpAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRl
Og0KICAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOw0KICAgICANCiAgICAgLy8g
QXNzdW1lcyBmbG9hdCBbMC4uMV0NCi0gICAgdm9pZCBzZXRWYWx1ZShmbG9hdCkgb3ZlcnJpZGU7
DQorICAgIGJvb2wgc2V0VmFsdWUoZmxvYXQpIG92ZXJyaWRlOw0KICAgICBmbG9hdCB2YWx1ZUZv
clJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7DQogDQogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1fc2Ny
b2xsYmFyOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNsaWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTbGlkZXIuY3BwDQppbmRleCBjYzZjYjgxOGU4Yi4uYTFhMTQ3OTllZWUgMTAwNjQ0DQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3Bw
DQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIu
Y3BwDQpAQCAtMTI2LDE0ICsxMjYsMTUgQEAgZmxvYXQgQWNjZXNzaWJpbGl0eVNsaWRlcjo6bWlu
VmFsdWVGb3JSYW5nZSgpIGNvbnN0DQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oaW5w
dXRFbGVtZW50KCktPm1pbmltdW0oKSk7DQogfQ0KIA0KLXZvaWQgQWNjZXNzaWJpbGl0eVNsaWRl
cjo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkNCitib29sIEFjY2Vzc2liaWxpdHlTbGlk
ZXI6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpDQogew0KICAgICBIVE1MSW5wdXRFbGVt
ZW50KiBpbnB1dCA9IGlucHV0RWxlbWVudCgpOw0KICAgICANCiAgICAgaWYgKGlucHV0LT52YWx1
ZSgpID09IHZhbHVlKQ0KLSAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgcmV0dXJuIHRydWU7DQog
DQogICAgIGlucHV0LT5zZXRWYWx1ZSh2YWx1ZSwgRGlzcGF0Y2hDaGFuZ2VFdmVudCk7DQorICAg
IHJldHVybiB0cnVlOw0KIH0NCiANCiBIVE1MSW5wdXRFbGVtZW50KiBBY2Nlc3NpYmlsaXR5U2xp
ZGVyOjppbnB1dEVsZW1lbnQoKSBjb25zdA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgNCmluZGV4IDkxYzcwOTI1ZTZkLi5hYmE5MTIw
MDA4NCAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNsaWRlci5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTbGlkZXIuaA0KQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToNCiAgICAgYm9vbCBjYW5T
ZXRWYWx1ZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0NCiAgICAg
Y29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dCBvdmVycmlkZTsNCiAgICAgDQotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7DQorICAgIGJvb2wgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7DQogICAg
IGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsNCiAgICAgZmxvYXQgbWF4VmFs
dWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBmbG9hdCBtaW5WYWx1ZUZvclJhbmdl
KCkgY29uc3Qgb3ZlcnJpZGU7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcA0KaW5kZXggODM5
NWJlMjZhNDkuLjA2MWU5YTY4NjBkIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwDQpA
QCAtNjI5LDEwICs2MjksMjIgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRJc0V4cGFuZGVk
KGJvb2wgdmFsdWUpDQogICAgICAgICBvYmplY3QtPnNldElzRXhwYW5kZWQodmFsdWUpOw0KICAg
ICB9KTsNCiB9DQotdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSkN
CisNCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OnNldFZhbHVlKGZsb2F0IHZhbHVlKQ0KIHsNCi0g
ICAgcGVyZm9ybUZ1bmN0aW9uT25NYWluVGhyZWFkKFsmdmFsdWVdKEFYQ29yZU9iamVjdCogb2Jq
ZWN0KSB7DQotICAgICAgICBvYmplY3QtPnNldFZhbHVlKHZhbHVlKTsNCisgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxib29sPihbJnZhbHVlLCB0
aGlzXSAoKSAtPiBib29sIHsNCisgICAgICAgIGlmIChhdXRvKiBheE9iamVjdCA9IGFzc29jaWF0
ZWRBWE9iamVjdCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBheE9iamVjdC0+c2V0VmFsdWUodmFs
dWUpOw0KKyAgICAgICAgcmV0dXJuIGZhbHNlOw0KKyAgICB9KTsNCit9DQorDQorYm9vbCBBWElz
b2xhdGVkT2JqZWN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQ0KK3sNCisgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxib29sPihbJnZh
bHVlLCB0aGlzXSAoKSAtPiBib29sIHsNCisgICAgICAgIGlmIChhdXRvKiBheE9iamVjdCA9IGFz
c29jaWF0ZWRBWE9iamVjdCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBheE9iamVjdC0+c2V0VmFs
dWUodmFsdWUpOw0KKyAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICB9KTsNCiB9DQogDQpAQCAt
NjcxLDEzICs2ODMsNiBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldFNlbGVjdGVkVGV4dFJh
bmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJiB2YWx1ZSkNCiAgICAgfSk7DQogfQ0KIA0KLXZvaWQg
QVhJc29sYXRlZE9iamVjdDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkNCi17DQotICAg
IHBlcmZvcm1GdW5jdGlvbk9uTWFpblRocmVhZChbJnZhbHVlXShBWENvcmVPYmplY3QqIG9iamVj
dCkgew0KLSAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZSh2YWx1ZSk7DQotICAgIH0pOw0KLX0NCi0N
CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQ0KIHZvaWQgQVhJ
c29sYXRlZE9iamVjdDo6c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCB2YWx1ZSkNCiB7DQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZE9iamVjdC5oDQppbmRleCAyZTZiN2VmYzYwNi4uMmExOTlmZWE1OWIgMTAw
NjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkT2JqZWN0LmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaA0KQEAgLTcwMywxMyArNzAzLDEzIEBAIHByaXZhdGU6
DQogICAgIC8vIEF0dHJpYnV0ZSBzZXR0ZXJzLg0KICAgICB2b2lkIHNldEFSSUFHcmFiYmVkKGJv
b2wpIG92ZXJyaWRlOw0KICAgICB2b2lkIHNldElzRXhwYW5kZWQoYm9vbCkgb3ZlcnJpZGU7DQot
ICAgIHZvaWQgc2V0VmFsdWUoZmxvYXQpIG92ZXJyaWRlOw0KKyAgICBib29sIHNldFZhbHVlKGZs
b2F0KSBvdmVycmlkZTsNCiAgICAgdm9pZCBzZXRTZWxlY3RlZChib29sKSBvdmVycmlkZTsNCiAg
ICAgdm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3Zl
cnJpZGU7DQogICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZTsNCiAgICAgdm9pZCBz
ZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7DQogICAgIHZvaWQgc2V0U2Vs
ZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlkZTsNCi0gICAgdm9p
ZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsNCisgICAgYm9vbCBzZXRWYWx1ZShj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsNCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9S
TShJT1NfRkFNSUxZKQ0KICAgICB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpIG92
ZXJyaWRlOw0KICNlbmRpZg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403315</attachid>
            <date>2020-07-01 13:32:32 -0700</date>
            <delta_ts>2020-07-01 14:49:47 -0700</delta_ts>
            <desc>patch</desc>
            <filename>file_213744.txt</filename>
            <type>text/plain</type>
            <size>22489</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggODExMGE2OTJiMjYuLmU4NTA3OTA4ZWM0IDEwMDY0NA0KLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nDQorKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsMTUg
QEANCisyMDIwLTA2LTMwICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+DQor
DQorICAgICAgICBBWDogSW1wbGVtZW50IHJlbGV2YW50IHNpbXVsYXRlZCBrZXkgcHJlc3NlcyBm
b3IgY3VzdG9tIEFSSUEgd2lkZ2V0cyBmb3IgaW5jcmVtZW50L2RlY3JlbWVudA0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc0NA0KKw0KKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuDQorDQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
a2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVtZW50LWFjdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4NCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtcG9zdGVkLWZvci1pbmNyZW1l
bnQtYWN0aW9ucy5odG1sOiBBZGRlZC4NCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9rZXlldmVu
dHMtZm9yLWluY3JlbWVudC1hY3Rpb25zLXdpdGgtbm9kZS1yZW1vdmFsLWV4cGVjdGVkLnR4dDog
QWRkZWQuDQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLWZvci1pbmNyZW1lbnQt
YWN0aW9ucy13aXRoLW5vZGUtcmVtb3ZhbC5odG1rOiBBZGRlZC4NCisNCiAyMDIwLTA2LTMwICBM
YXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPg0KIA0KICAgICAgICAgW1dQRV0gR2FyZGVu
IHNvbWUgZmFpbHVyZXMgYW5kIGFkZCBuZXcgc2VjdGlvbiB0byBleHBlY3RhdGlvbg0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLWZvci1pbmNyZW1lbnQt
YWN0aW9ucy13aXRoLW5vZGUtcmVtb3ZhbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2tleWV2ZW50cy1mb3ItaW5jcmVtZW50LWFjdGlvbnMtd2l0aC1ub2RlLXJlbW92
YWwtZXhwZWN0ZWQudHh0DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAu
LmRiM2M5NGY5NjhmDQotLS0gL2Rldi9udWxsDQorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2tleWV2ZW50cy1mb3ItaW5jcmVtZW50LWFjdGlvbnMtd2l0aC1ub2RlLXJlbW92YWwtZXhw
ZWN0ZWQudHh0DQpAQCAtMCwwICsxLDEwIEBADQorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgaWYgYSBr
ZXlkb3duIGV2ZW50IHJlbW92ZXMgdGhlIG5vZGUsIGJhZCB0aGluZ3MgZG9uJ3QgaGFwcGVuLg0K
Kw0KK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4NCisNCisNCitLZXljb2RlIHJlY2VpdmVkOiBp
ZGVudGlmaWVyOiByaWdodCBrZXkgbmFtZTogQXJyb3dSaWdodA0KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUNCisNCitURVNUIENPTVBMRVRFDQorDQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtZm9yLWluY3JlbWVudC1hY3Rpb25zLXdpdGgt
bm9kZS1yZW1vdmFsLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2tleWV2ZW50cy1m
b3ItaW5jcmVtZW50LWFjdGlvbnMtd2l0aC1ub2RlLXJlbW92YWwuaHRtbA0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi4xODJmYzllZjgxNA0KLS0tIC9kZXYvbnVsbA0K
KysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtZm9yLWluY3JlbWVudC1h
Y3Rpb25zLXdpdGgtbm9kZS1yZW1vdmFsLmh0bWwNCkBAIC0wLDAgKzEsNDcgQEANCis8aHRtbD4N
Cis8aHRtbD4NCis8aGVhZD4NCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4NCis8L2hlYWQ+DQorPGJvZHkgaWQ9ImJvZHkiPg0KKw0KKzxkaXYgaWQ9
InNsaWRlciINCisgICAgICAgICAgIHJvbGU9InNsaWRlciINCisgICAgICAgICAgIHRhYmluZGV4
PSIwIg0KKyAgICAgICAgICAgYXJpYS12YWx1ZW1pbj0iMCINCisgICAgICAgICAgIGFyaWEtdmFs
dWVub3c9IjAiDQorICAgICAgICAgICBhcmlhLXZhbHVlbWF4PSIyNTUiDQorICAgICAgICAgICBh
cmlhLWxhYmVsbGVkYnk9ImlkUmVkIj48L2Rpdj4NCisNCis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4NCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4NCisgICAgIA0KKzxzY3JpcHQ+DQorICAgIGZ1
bmN0aW9uIGhhbmRsZUtleVVwKGV2ZW50KSB7DQorICAgICAgICBkZWJ1ZygiS2V5IHVwIHNob3Vs
ZCBOT1QgYmUgcmVhY2hlZCIpOw0KKyAgICB9DQorDQorICAgIGZ1bmN0aW9uIGhhbmRsZUtleURv
d24oZXZlbnQpIHsNCisgICAgICAgIGRlYnVnKCJLZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVy
OiAiICsgZXZlbnQua2V5SWRlbnRpZmllciArICIga2V5IG5hbWU6ICIgKyBldmVudC5rZXkpOw0K
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKS5yZW1vdmVDaGlsZChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic2xpZGVyIikpOw0KKyAgICAgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsNCisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOw0KKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7DQorICAgIH0NCisNCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcikgew0KKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7DQorICAgICAgICBkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgaWYgYSBrZXlkb3duIGV2ZW50IHJlbW92ZXMg
dGhlIG5vZGUsIGJhZCB0aGluZ3MgZG9uJ3QgaGFwcGVuLiIpOw0KKw0KKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInNsaWRlciIpLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBo
YW5kbGVLZXlEb3duKTsNCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzbGlkZXIi
KS5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIGhhbmRsZUtleVVwKTsNCisNCisgICAgICAgIC8v
IEdldCB0aGUgcGFyZW50IGVsZW1lbnQuDQorICAgICAgICB2YXIgYXhTbGlkZXIgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInNsaWRlciIpOw0KKyAgICAg
ICAgYXhTbGlkZXIuaW5jcmVtZW50KCk7DQorICAgIH0NCisgPC9zY3JpcHQ+DQorDQorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KKzwvYm9keT4N
Cis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9rZXlldmVu
dHMtcG9zdGVkLWZvci1pbmNyZW1lbnQtYWN0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2tleWV2ZW50cy1wb3N0ZWQtZm9yLWluY3JlbWVudC1hY3Rpb25zLWV4
cGVjdGVkLnR4dA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi42NTNh
MGQ1MGYzMg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9r
ZXlldmVudHMtcG9zdGVkLWZvci1pbmNyZW1lbnQtYWN0aW9ucy1leHBlY3RlZC50eHQNCkBAIC0w
LDAgKzEsMjMgQEANCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgaW5jcmVtZW50L2RlY3Jl
bWVudCBhY3Rpb25zIHBvc3Qga2V5Ym9hcmQgZXZlbnRzIHRoYXQgYXJlIGNvcnJlY3QgZm9yIExU
UiBhbmQgb3JpZW50YXRpb24uDQorDQorT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLg0KKw0KKw0K
K0luY3JlbWVudC9EZWNyZW1lbnQgLSBMVFINCitIb3Jpem9udGFsIG9yaWVudGF0aW9uDQorS2V5
Y29kZSByZWNlaXZlZDogaWRlbnRpZmllcjogcmlnaHQga2V5IG5hbWU6IEFycm93UmlnaHQNCitL
ZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVyOiBsZWZ0IGtleSBuYW1lOiBBcnJvd0xlZnQNCitW
ZXJ0aWNhbCBvcmllbnRhdGlvbg0KK0tleWNvZGUgcmVjZWl2ZWQ6IGlkZW50aWZpZXI6IHVwIGtl
eSBuYW1lOiBBcnJvd1VwDQorS2V5Y29kZSByZWNlaXZlZDogaWRlbnRpZmllcjogZG93biBrZXkg
bmFtZTogQXJyb3dEb3duDQorSW5jcmVtZW50L0RlY3JlbWVudCAtIFJUTA0KK0hvcml6b250YWwg
b3JpZW50YXRpb24NCitLZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVyOiBsZWZ0IGtleSBuYW1l
OiBBcnJvd0xlZnQNCitLZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVyOiByaWdodCBrZXkgbmFt
ZTogQXJyb3dSaWdodA0KK1ZlcnRpY2FsIG9yaWVudGF0aW9uDQorS2V5Y29kZSByZWNlaXZlZDog
aWRlbnRpZmllcjogdXAga2V5IG5hbWU6IEFycm93VXANCitLZXljb2RlIHJlY2VpdmVkOiBpZGVu
dGlmaWVyOiBkb3duIGtleSBuYW1lOiBBcnJvd0Rvd24NCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlDQorDQorVEVTVCBDT01QTEVURQ0KKw0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVtZW50LWFjdGlvbnMuaHRt
bCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVt
ZW50LWFjdGlvbnMuaHRtbA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAw
Li4zOTE2YzRjNzRjNg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9rZXlldmVudHMtcG9zdGVkLWZvci1pbmNyZW1lbnQtYWN0aW9ucy5odG1sDQpAQCAtMCww
ICsxLDYzIEBADQorPGh0bWw+DQorPGh0bWw+DQorPGhlYWQ+DQorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxib2R5IGlkPSJi
b2R5Ij4NCisNCis8ZGl2IGlkPSJzbGlkZXIiDQorICAgICAgICAgICByb2xlPSJzbGlkZXIiDQor
ICAgICAgICAgICB0YWJpbmRleD0iMCINCisgICAgICAgICAgIGFyaWEtdmFsdWVtaW49IjAiDQor
ICAgICAgICAgICBhcmlhLXZhbHVlbm93PSIwIg0KKyAgICAgICAgICAgYXJpYS12YWx1ZW1heD0i
MjU1Ig0KKyAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PSJpZFJlZCI+PC9kaXY+DQorDQorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+DQorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+DQorICAgICAN
Cis8c2NyaXB0Pg0KKyAgICB2YXIga2V5Q291bnQgPSAwOw0KKyAgICBmdW5jdGlvbiBoYW5kbGVL
ZXlEb3duKGV2ZW50KSB7DQorICAgICAgICBkZWJ1ZygiS2V5Y29kZSByZWNlaXZlZDogaWRlbnRp
ZmllcjogIiArIGV2ZW50LmtleUlkZW50aWZpZXIgKyAiIGtleSBuYW1lOiAiICsgZXZlbnQua2V5
KTsNCisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQorICAgICAgICBldmVudC5zdG9w
UHJvcGFnYXRpb24oKTsNCisgICAgICAgIGtleUNvdW50Kys7DQorICAgICAgICBpZiAoa2V5Q291
bnQgPT0gNCkgew0KKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOw0KKyAgICAgICAgfQ0KKyAg
ICAgfQ0KKw0KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7DQorICAg
ICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsNCisgICAgICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCB0aGUgaW5jcmVtZW50L2RlY3JlbWVudCBhY3Rpb25zIHBvc3Qga2V5
Ym9hcmQgZXZlbnRzIHRoYXQgYXJlIGNvcnJlY3QgZm9yIExUUiBhbmQgb3JpZW50YXRpb24uIik7
DQorDQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2xpZGVyIikuYWRkRXZlbnRM
aXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pOw0KKw0KKyAgICAgICAgLy8gR2V0IHRo
ZSBwYXJlbnQgZWxlbWVudC4NCisgICAgICAgIHZhciBheFNsaWRlciA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgic2xpZGVyIik7DQorICAgICAgICANCisg
ICAgICAgIGRlYnVnKCJJbmNyZW1lbnQvRGVjcmVtZW50IC0gTFRSIik7ICAgIA0KKyAgICAgICAg
aW5jcmVtZW50RGVjcmVtZW50KCk7DQorDQorICAgICAgICBkZWJ1ZygiSW5jcmVtZW50L0RlY3Jl
bWVudCAtIFJUTCIpOw0KKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXRVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKCJSVEwiKTsNCisgICAgICAgIGluY3JlbWVudERlY3JlbWVudCgpOw0K
Kw0KKyAgICAgICAgZnVuY3Rpb24gaW5jcmVtZW50RGVjcmVtZW50KCkgew0KKyAgICAgICAgICAg
IGRlYnVnKCJIb3Jpem9udGFsIG9yaWVudGF0aW9uIik7DQorICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNsaWRlciIpLnNldEF0dHJpYnV0ZSgiYXJpYS1vcmllbnRhdGlvbiIs
ICJob3Jpem9udGFsIik7DQorICAgICAgICAgICAgYXhTbGlkZXIuaW5jcmVtZW50KCk7DQorICAg
ICAgICAgICAgYXhTbGlkZXIuZGVjcmVtZW50KCk7DQorDQorICAgICAgICAgICAgZGVidWcoIlZl
cnRpY2FsIG9yaWVudGF0aW9uIik7DQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNsaWRlciIpLnNldEF0dHJpYnV0ZSgiYXJpYS1vcmllbnRhdGlvbiIsICJ2ZXJ0aWNhbCIp
Ow0KKyAgICAgICAgICAgIGF4U2xpZGVyLmluY3JlbWVudCgpOw0KKyAgICAgICAgICAgIGF4U2xp
ZGVyLmRlY3JlbWVudCgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorIDwvc2NyaXB0Pg0KKw0KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4NCis8L2Jv
ZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0KaW5kZXggYTYxNmU2NTRkNmQuLjc5ODc3NjlmMGY5IDEw
MDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsMzkgQEANCisyMDIwLTA2LTMwICBDaHJpcyBGbGVpemFj
aCAgPGNmbGVpemFjaEBhcHBsZS5jb20+DQorDQorICAgICAgICBBWDogSW1wbGVtZW50IHJlbGV2
YW50IHNpbXVsYXRlZCBrZXkgcHJlc3NlcyBmb3IgY3VzdG9tIEFSSUEgd2lkZ2V0cyBmb3IgaW5j
cmVtZW50L2RlY3JlbWVudA0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMzc0NA0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuDQor
DQorICAgICAgICBJbiBvcmRlciB0byBhbGxvdyBjdXN0b20gQVJJQSB3aWRnZXRzIHRvIHdvcmss
IHdlIGNhbiBwb3N0IGtleWJvYXJkIGV2ZW50cyBmb3Igc3BlY2lmaWMgYXggYWN0aW9ucw0KKyAg
ICAgICAgdGhhdCBhcmUgbm90IGhhbmRsZWQgbmF0aXZlbHkuDQorDQorICAgICAgICBTcGVjOiBo
dHRwczovL2dpdGh1Yi5jb20vV0lDRy9hb20vYmxvYi9naC1wYWdlcy9leHBsYWluZXIubWQjdXNl
ci1hY3Rpb24tZXZlbnRzLWZyb20tYXNzaXN0aXZlLXRlY2hub2xvZ3kNCisNCisgICAgICAgIFRl
c3Q6IGFjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVtZW50LWFjdGlvbnMu
aHRtbA0KKyAgICAgICAgICAgICAgYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtZm9yLWluY3JlbWVu
dC1hY3Rpb25zLXdpdGgtbm9kZS1yZW1vdmFsLmh0bWwNCisNCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6DQorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnBvc3RLZXlib2FyZEtleXNGb3JWYWx1ZUNoYW5nZSk6DQor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNldE5vZGVWYWx1ZSk6
DQorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNoYW5nZVZhbHVl
QnlTdGVwKToNCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hh
bmdlVmFsdWVCeVBlcmNlbnQpOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0Lmg6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5oOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UuaDoNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpz
ZXRWYWx1ZSk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5oOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIu
Y3BwOg0KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxiYXI6OnNldFZhbHVl
KToNCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmg6DQor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHA6DQorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNsaWRlcjo6c2V0VmFsdWUpOg0KKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaDoNCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHA6DQorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6c2V0VmFsdWUpOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6DQorDQogMjAyMC0wNi0zMCAgRnVqaWkg
SGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4NCiANCiAgICAgICAgIFtXaW5DYWly
b10gVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjI2Mzc3Ng0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHANCmlu
ZGV4IDIzMTlhNjFhMDI5Li4yOWUyMmJiMGQ2YiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwDQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcA0KQEAgLTU3
LDYgKzU3LDcgQEANCiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCINCiAjaW5jbHVkZSAi
SFRNTFRleHRBcmVhRWxlbWVudC5oIg0KICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oIg0KKyNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiDQogI2luY2x1ZGUgIkxhYmVsYWJs
ZUVsZW1lbnQuaCINCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIg0KICNpbmNsdWRlICJN
YXRoTUxFbGVtZW50LmgiDQpAQCAtMTA5NCwxOCArMTA5NSw0NSBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0OjpkZWNyZW1lbnQoKQ0KICAgICBhbHRlclNsaWRlclZhbHVlKGZhbHNlKTsN
CiB9DQogDQorLy8gRmlyZSBhIGtleWJvYXJkIGV2ZW50IGlmIHdlIHdlcmUgbm90IGFibGUgdG8g
c2V0IHRoaXMgdmFsdWUgbmF0aXZlbHkuDQordm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
cG9zdEtleWJvYXJkS2V5c0ZvclZhbHVlQ2hhbmdlKGJvb2wgaW5jcmVhc2UpDQorew0KKyAgICAv
LyBJbiBjYXNlIHRoZSBrZXlib2FyZCBldmVudCBjYXVzZXMgdGhpcyBlbGVtZW50IHRvIGJlIHJl
bW92ZWQuDQorICAgIFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsNCisNCisgICAgYXV0byBrZXlJbml0ID0gS2V5Ym9hcmRFdmVudDo6SW5pdCgpOw0KKyAgICBi
b29sIHZlcnRpY2FsID0gb3JpZW50YXRpb24oKSA9PSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246
OlZlcnRpY2FsOw0KKyAgICBib29sIGlzTFRSID0gcGFnZSgpLT51c2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uKCkgPT0gVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRSOw0KKyAgICAN
CisgICAga2V5SW5pdC5rZXkgPSBpbmNyZWFzZSA/IHZlcnRpY2FsID8gIkFycm93VXAiX3MgOiBp
c0xUUiA/ICJBcnJvd1JpZ2h0Il9zIDogIkFycm93TGVmdCJfcyA6IHZlcnRpY2FsID8gIkFycm93
RG93biJfcyA6IGlzTFRSID8gIkFycm93TGVmdCJfcyA6ICJBcnJvd1JpZ2h0Il9zOw0KKyAgICBr
ZXlJbml0LmtleUlkZW50aWZpZXIgPSBpbmNyZWFzZSA/IHZlcnRpY2FsID8gInVwIl9zIDogaXNM
VFIgPyAicmlnaHQiX3MgOiAibGVmdCJfcyA6IHZlcnRpY2FsID8gImRvd24iX3MgOiBpc0xUUiA/
ICJsZWZ0Il9zIDogInJpZ2h0Il9zOw0KKw0KKyAgICBpZiAoYXV0byogbm9kZSA9IHRoaXMtPm5v
ZGUoKSkNCisgICAgICAgIG5vZGUtPmRpc3BhdGNoRXZlbnQoS2V5Ym9hcmRFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIGtleUluaXQpKTsNCisNCisgICAgLy8gRW5zdXJl
IG5vZGUgaXMgc3RpbGwgdmFsaWQgYW5kIHdhc24ndCByZW1vdmVkIGFmdGVyIHRoZSBrZXlkb3du
Lg0KKyAgICBpZiAoYXV0byogbm9kZSA9IHRoaXMtPm5vZGUoKSkNCisgICAgICAgIG5vZGUtPmRp
c3BhdGNoRXZlbnQoS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50
LCBrZXlJbml0KSk7DQorfQ0KKw0KK3ZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNldE5v
ZGVWYWx1ZShib29sIGluY3JlYXNlLCBmbG9hdCB2YWx1ZSkNCit7DQorICAgIGJvb2wgZGlkU2V0
ID0gc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIodmFsdWUpKTsNCisgICAgDQorICAgIGlmIChkaWRT
ZXQpIHsNCisgICAgICAgIGlmIChhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKSkNCisgICAg
ICAgICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbih0aGlzLCBkb2N1bWVudCgpLCBBWE9iamVj
dENhY2hlOjpBWFZhbHVlQ2hhbmdlZCk7DQorICAgIH0gZWxzZQ0KKyAgICAgICAgcG9zdEtleWJv
YXJkS2V5c0ZvclZhbHVlQ2hhbmdlKGluY3JlYXNlKTsNCit9DQorDQogdm9pZCBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6Y2hhbmdlVmFsdWVCeVN0ZXAoYm9vbCBpbmNyZWFzZSkNCiB7DQogICAg
IGZsb2F0IHN0ZXAgPSBzdGVwVmFsdWVGb3JSYW5nZSgpOw0KICAgICBmbG9hdCB2YWx1ZSA9IHZh
bHVlRm9yUmFuZ2UoKTsNCiANCiAgICAgdmFsdWUgKz0gaW5jcmVhc2UgPyBzdGVwIDogLXN0ZXA7
DQotDQotICAgIHNldFZhbHVlKFN0cmluZzo6bnVtYmVyKHZhbHVlKSk7DQotDQotICAgIGF1dG8g
b2JqZWN0Q2FjaGUgPSBheE9iamVjdENhY2hlKCk7DQotICAgIGlmIChvYmplY3RDYWNoZSkNCi0g
ICAgICAgIG9iamVjdENhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKG5vZGUoKSwgQVhPYmplY3RDYWNo
ZTo6QVhWYWx1ZUNoYW5nZWQpOw0KKyAgICBzZXROb2RlVmFsdWUoaW5jcmVhc2UsIHZhbHVlKTsN
CiB9DQogDQogdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hhbmdlVmFsdWVCeVBlcmNl
bnQoZmxvYXQgcGVyY2VudENoYW5nZSkNCkBAIC0xMTE5LDExICsxMTQ3LDcgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hhbmdlVmFsdWVCeVBlcmNlbnQoZmxvYXQgcGVyY2VudENo
YW5nZSkNCiAgICAgICAgIHN0ZXAgPSBzdGQ6OmFicyhwZXJjZW50Q2hhbmdlKSAqICgxIC8gcGVy
Y2VudENoYW5nZSk7DQogDQogICAgIHZhbHVlICs9IHN0ZXA7DQotICAgIHNldFZhbHVlKFN0cmlu
Zzo6bnVtYmVyKHZhbHVlKSk7DQotDQotICAgIGF1dG8gb2JqZWN0Q2FjaGUgPSBheE9iamVjdENh
Y2hlKCk7DQotICAgIGlmIChvYmplY3RDYWNoZSkNCi0gICAgICAgIG9iamVjdENhY2hlLT5wb3N0
Tm90aWZpY2F0aW9uKG5vZGUoKSwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQpOw0KKyAg
ICBzZXROb2RlVmFsdWUocGVyY2VudENoYW5nZSA+IDAsIHZhbHVlKTsNCiB9DQogDQogYm9vbCBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNHZW5lcmljRm9jdXNhYmxlRWxlbWVudCgpIGNvbnN0
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdC5oDQppbmRleCA0ZTIzY2JhYmYzNy4uY2I1ZjYxYmNkOWEgMTAwNjQ0DQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgN
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3QuaA0KQEAgLTE4OSw3ICsxODksOCBAQCBwcml2YXRlOg0KICAgICBib29sIGNvbXB1dGVBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7DQogICAgIGJvb2wgdXNlc0FsdFRh
Z0ZvclRleHRDb21wdXRhdGlvbigpIGNvbnN0Ow0KICAgICBib29sIHJvbGVJZ25vcmVzVGl0bGUo
KSBjb25zdDsNCi0gICAgDQorICAgIHZvaWQgcG9zdEtleWJvYXJkS2V5c0ZvclZhbHVlQ2hhbmdl
KGJvb2wgaW5jcmVhc2UpOw0KKyAgICB2b2lkIHNldE5vZGVWYWx1ZShib29sIGluY3JlYXNlLCBm
bG9hdCB2YWx1ZSk7DQogICAgIE5vZGUqIG1fbm9kZTsNCiB9Ow0KIA0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgNCmluZGV4IGM2ZTYx
Y2VhMzgwLi45NTM4ZmU0MTViMyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaA0KQEAgLTQ2MywxMSArNDYzLDExIEBAIHB1Ymxp
YzoNCiAgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wpIG92ZXJyaWRlIHsgfQ0KICAgICB2b2lkIHNl
dFNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0NCiAgICAgdm9pZCBzZXRT
ZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlIHsgfQ0KLSAg
ICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQ0KKyAgICBib29sIHNl
dFZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9DQogICAgIGJv
b2wgcmVwbGFjZVRleHRJblJhbmdlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBsYWluVGV4dFJhbmdl
Jikgb3ZlcnJpZGU7DQogICAgIGJvb2wgaW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsNCiANCi0gICAgdm9pZCBzZXRWYWx1ZShmbG9hdCkgb3ZlcnJpZGUgeyB9DQorICAgIGJvb2wg
c2V0VmFsdWUoZmxvYXQpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9DQogICAgIHZvaWQgc2V0
U2VsZWN0ZWQoYm9vbCkgb3ZlcnJpZGUgeyB9DQogICAgIHZvaWQgc2V0U2VsZWN0ZWRSb3dzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlIHsgfQ0KIA0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmgNCmluZGV4IDYxYTExYmI0M2I2Li5iZWE0YTdmZjQ2YiAxMDA2NDQNCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5o
DQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJ
bnRlcmZhY2UuaA0KQEAgLTg5NiwxMSArODk2LDExIEBAIHB1YmxpYzoNCiAgICAgdmlydHVhbCB2
b2lkIHNldEZvY3VzZWQoYm9vbCkgPSAwOw0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRU
ZXh0KGNvbnN0IFN0cmluZyYpID0gMDsNCiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVGV4
dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgPSAwOw0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
VmFsdWUoY29uc3QgU3RyaW5nJikgPSAwOw0KKyAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWUoY29u
c3QgU3RyaW5nJikgPSAwOw0KICAgICB2aXJ0dWFsIGJvb2wgcmVwbGFjZVRleHRJblJhbmdlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFBsYWluVGV4dFJhbmdlJikgPSAwOw0KICAgICB2aXJ0dWFsIGJv
b2wgaW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmKSA9IDA7DQogDQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRWYWx1ZShmbG9hdCkgPSAwOw0KKyAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWUoZmxvYXQpID0g
MDsNCiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wpID0gMDsNCiAgICAgdmlydHVh
bCB2b2lkIHNldFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSA9IDA7
DQogDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHANCmluZGV4IDczNzA2ODVhZDQ3Li40OWQ2ZjI1NWM3ZiAx
MDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHANCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHANCkBAIC0xODYwLDEwICsxODYwLDEwIEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYgc2VsDQogICAgICAgICBzZWxlY3RlZFJvdy0+c2V0U2VsZWN0ZWQodHJ1ZSk7
DQogfQ0KICAgICANCi12b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFZhbHVlKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQ0KK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0
VmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmcpDQogew0KICAgICBpZiAoIW1fcmVuZGVyZXIgfHwg
IWlzPEVsZW1lbnQ+KG1fcmVuZGVyZXItPm5vZGUoKSkpDQotICAgICAgICByZXR1cm47DQorICAg
ICAgICByZXR1cm4gZmFsc2U7DQogICAgIA0KICAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNh
c3Q8RWxlbWVudD4oKm1fcmVuZGVyZXItPm5vZGUoKSk7DQogICAgIFJlbmRlck9iamVjdCYgcmVu
ZGVyZXIgPSAqbV9yZW5kZXJlcjsNCkBAIC0xODc1LDE0ICsxODc1LDIwIEBAIHZvaWQgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmcpDQogICAg
ICAgICBpZiAoZWxlbWVudC5zaG91bGRVc2VJbnB1dE1ldGhvZCgpKSB7DQogICAgICAgICAgICAg
ZWRpdG9yLmNsZWFyVGV4dCgpOw0KICAgICAgICAgICAgIGVkaXRvci5pbnNlcnRUZXh0KHN0cmlu
ZywgbnVsbHB0cik7DQotICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIHJldHVybiB0
cnVlOw0KICAgICAgICAgfQ0KICAgICB9DQogICAgIC8vIEZJWE1FOiBEbyB3ZSB3YW50IHRvIGRv
IGFueXRoaW5nIGhlcmUgZm9yIEFSSUEgdGV4dGJveGVzPw0KLSAgICBpZiAocmVuZGVyZXIuaXNU
ZXh0RmllbGQoKSAmJiBpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkNCisgICAgaWYgKHJl
bmRlcmVyLmlzVGV4dEZpZWxkKCkgJiYgaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkpIHsN
CiAgICAgICAgIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpLnNldFZhbHVlKHN0
cmluZyk7DQotICAgIGVsc2UgaWYgKHJlbmRlcmVyLmlzVGV4dEFyZWEoKSAmJiBpczxIVE1MVGV4
dEFyZWFFbGVtZW50PihlbGVtZW50KSkNCisgICAgICAgIHJldHVybiB0cnVlOw0KKyAgICB9DQor
ICAgIGlmIChyZW5kZXJlci5pc1RleHRBcmVhKCkgJiYgaXM8SFRNTFRleHRBcmVhRWxlbWVudD4o
ZWxlbWVudCkpIHsNCiAgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KGVsZW1l
bnQpLnNldFZhbHVlKHN0cmluZyk7DQorICAgICAgICByZXR1cm4gdHJ1ZTsNCisgICAgfQ0KKyAg
ICANCisgICAgcmV0dXJuIGZhbHNlOw0KIH0NCiANCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OnN1cHBvcnRzQVJJQU93bnMoKSBjb25zdA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgNCmluZGV4IDc4
MTg1ZTcwMzI4Li45OTIzNTc2ZWEzMSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oDQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaA0KQEAgLTE0Niw3ICsx
NDYsNyBAQCBwdWJsaWM6DQogICAgIA0KICAgICB2b2lkIHNldEZvY3VzZWQoYm9vbCkgb3ZlcnJp
ZGU7DQogICAgIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2Um
KSBvdmVycmlkZTsNCi0gICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsN
CisgICAgYm9vbCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsNCiAgICAgdm9pZCBz
ZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7DQog
ICAgIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IG92ZXJyaWRl
Ow0KIA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbGJhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxiYXIuY3BwDQppbmRleCBjMDg5MTZhNzlmNC4uNzU0N2Y2ZjE1NWEgMTAwNjQ0
DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxi
YXIuY3BwDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
Y3JvbGxiYXIuY3BwDQpAQCAtOTIsMTMgKzkyLDE0IEBAIGZsb2F0IEFjY2Vzc2liaWxpdHlTY3Jv
bGxiYXI6OnZhbHVlRm9yUmFuZ2UoKSBjb25zdA0KICAgICByZXR1cm4gbV9zY3JvbGxiYXItPmN1
cnJlbnRQb3MoKSAvIG1fc2Nyb2xsYmFyLT5tYXhpbXVtKCk7DQogfQ0KIA0KLXZvaWQgQWNjZXNz
aWJpbGl0eVNjcm9sbGJhcjo6c2V0VmFsdWUoZmxvYXQgdmFsdWUpDQorYm9vbCBBY2Nlc3NpYmls
aXR5U2Nyb2xsYmFyOjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSkNCiB7DQogICAgIGlmICghbV9zY3Jv
bGxiYXIpDQotICAgICAgICByZXR1cm47DQorICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgIA0K
ICAgICBmbG9hdCBuZXdWYWx1ZSA9IHZhbHVlICogbV9zY3JvbGxiYXItPm1heGltdW0oKTsNCiAg
ICAgbV9zY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5p
bWF0aW9uKG1fc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpLCBuZXdWYWx1ZSk7DQorICAgIHJldHVy
biB0cnVlOw0KIH0NCiAgICAgDQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQ0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgNCmlu
ZGV4IDRiMGQyZTNiYjBjLi5mYjIxZWE1MzBlNiAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oDQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaA0KQEAgLTU1LDcgKzU1
LDcgQEAgcHJpdmF0ZToNCiAgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsNCiAg
ICAgDQogICAgIC8vIEFzc3VtZXMgZmxvYXQgWzAuLjFdDQotICAgIHZvaWQgc2V0VmFsdWUoZmxv
YXQpIG92ZXJyaWRlOw0KKyAgICBib29sIHNldFZhbHVlKGZsb2F0KSBvdmVycmlkZTsNCiAgICAg
ZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOw0KIA0KICAgICBSZWZQdHI8U2Ny
b2xsYmFyPiBtX3Njcm9sbGJhcjsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcA0KaW5kZXggY2M2Y2I4MThlOGIuLmExYTE0Nzk5
ZWVlIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2xpZGVyLmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2xpZGVyLmNwcA0KQEAgLTEyNiwxNCArMTI2LDE1IEBAIGZsb2F0IEFjY2Vzc2liaWxp
dHlTbGlkZXI6Om1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdA0KICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGlucHV0RWxlbWVudCgpLT5taW5pbXVtKCkpOw0KIH0NCiANCi12b2lkIEFjY2Vz
c2liaWxpdHlTbGlkZXI6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpDQorYm9vbCBBY2Nl
c3NpYmlsaXR5U2xpZGVyOjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQ0KIHsNCiAgICAg
SFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBpbnB1dEVsZW1lbnQoKTsNCiAgICAgDQogICAgIGlm
IChpbnB1dC0+dmFsdWUoKSA9PSB2YWx1ZSkNCi0gICAgICAgIHJldHVybjsNCisgICAgICAgIHJl
dHVybiB0cnVlOw0KIA0KICAgICBpbnB1dC0+c2V0VmFsdWUodmFsdWUsIERpc3BhdGNoQ2hhbmdl
RXZlbnQpOw0KKyAgICByZXR1cm4gdHJ1ZTsNCiB9DQogDQogSFRNTElucHV0RWxlbWVudCogQWNj
ZXNzaWJpbGl0eVNsaWRlcjo6aW5wdXRFbGVtZW50KCkgY29uc3QNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oDQppbmRleCA5MWM3MDky
NWU2ZC4uYWJhOTEyMDAwODQgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgNCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6DQog
ICAgIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9DQogICAgIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7DQogICAgIA0KLSAgICB2b2lkIHNldFZhbHVlKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOw0KKyAgICBib29sIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOw0KICAgICBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7DQogICAg
IGZsb2F0IG1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsNCiAgICAgZmxvYXQgbWlu
VmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5j
cHANCmluZGV4IDgzOTViZTI2YTQ5Li4wNjFlOWE2ODYwZCAxMDA2NDQNCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwDQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmNwcA0KQEAgLTYyOSwxMCArNjI5LDIyIEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6
c2V0SXNFeHBhbmRlZChib29sIHZhbHVlKQ0KICAgICAgICAgb2JqZWN0LT5zZXRJc0V4cGFuZGVk
KHZhbHVlKTsNCiAgICAgfSk7DQogfQ0KLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6c2V0VmFsdWUo
ZmxvYXQgdmFsdWUpDQorDQorYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpzZXRWYWx1ZShmbG9hdCB2
YWx1ZSkNCiB7DQotICAgIHBlcmZvcm1GdW5jdGlvbk9uTWFpblRocmVhZChbJnZhbHVlXShBWENv
cmVPYmplY3QqIG9iamVjdCkgew0KLSAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZSh2YWx1ZSk7DQor
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8Ym9v
bD4oWyZ2YWx1ZSwgdGhpc10gKCkgLT4gYm9vbCB7DQorICAgICAgICBpZiAoYXV0byogYXhPYmpl
Y3QgPSBhc3NvY2lhdGVkQVhPYmplY3QoKSkNCisgICAgICAgICAgICByZXR1cm4gYXhPYmplY3Qt
PnNldFZhbHVlKHZhbHVlKTsNCisgICAgICAgIHJldHVybiBmYWxzZTsNCisgICAgfSk7DQorfQ0K
Kw0KK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkN
Cit7DQorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJl
YWQ8Ym9vbD4oWyZ2YWx1ZSwgdGhpc10gKCkgLT4gYm9vbCB7DQorICAgICAgICBpZiAoYXV0byog
YXhPYmplY3QgPSBhc3NvY2lhdGVkQVhPYmplY3QoKSkNCisgICAgICAgICAgICByZXR1cm4gYXhP
YmplY3QtPnNldFZhbHVlKHZhbHVlKTsNCisgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgfSk7
DQogfQ0KIA0KQEAgLTY3MSwxMyArNjgzLDYgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRT
ZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYgdmFsdWUpDQogICAgIH0pOw0K
IH0NCiANCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFs
dWUpDQotew0KLSAgICBwZXJmb3JtRnVuY3Rpb25Pbk1haW5UaHJlYWQoWyZ2YWx1ZV0oQVhDb3Jl
T2JqZWN0KiBvYmplY3QpIHsNCi0gICAgICAgIG9iamVjdC0+c2V0VmFsdWUodmFsdWUpOw0KLSAg
ICB9KTsNCi19DQotDQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkNCiB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wg
dmFsdWUpDQogew0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaA0KaW5kZXggMmU2YjdlZmM2MDYuLjJh
MTk5ZmVhNTliIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgNCkBAIC03MDMsMTMgKzcwMywx
MyBAQCBwcml2YXRlOg0KICAgICAvLyBBdHRyaWJ1dGUgc2V0dGVycy4NCiAgICAgdm9pZCBzZXRB
UklBR3JhYmJlZChib29sKSBvdmVycmlkZTsNCiAgICAgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wp
IG92ZXJyaWRlOw0KLSAgICB2b2lkIHNldFZhbHVlKGZsb2F0KSBvdmVycmlkZTsNCisgICAgYm9v
bCBzZXRWYWx1ZShmbG9hdCkgb3ZlcnJpZGU7DQogICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkg
b3ZlcnJpZGU7DQogICAgIHZvaWQgc2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIG92ZXJyaWRlOw0KICAgICB2b2lkIHNldEZvY3VzZWQoYm9vbCkgb3ZlcnJpZGU7
DQogICAgIHZvaWQgc2V0U2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOw0KICAg
ICB2b2lkIHNldFNlbGVjdGVkVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJp
ZGU7DQotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7DQorICAgIGJv
b2wgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7DQogI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkNCiAgICAgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5h
YmxlZChib29sKSBvdmVycmlkZTsNCiAjZW5kaWYNCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403321</attachid>
            <date>2020-07-01 14:49:47 -0700</date>
            <delta_ts>2020-07-01 16:35:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>file_213744.txt</filename>
            <type>text/plain</type>
            <size>24177</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
Zw0KaW5kZXggODExMGE2OTJiMjYuLmU4NTA3OTA4ZWM0IDEwMDY0NA0KLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nDQorKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsMTUg
QEANCisyMDIwLTA2LTMwICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+DQor
DQorICAgICAgICBBWDogSW1wbGVtZW50IHJlbGV2YW50IHNpbXVsYXRlZCBrZXkgcHJlc3NlcyBm
b3IgY3VzdG9tIEFSSUEgd2lkZ2V0cyBmb3IgaW5jcmVtZW50L2RlY3JlbWVudA0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc0NA0KKw0KKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuDQorDQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
a2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVtZW50LWFjdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4NCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtcG9zdGVkLWZvci1pbmNyZW1l
bnQtYWN0aW9ucy5odG1sOiBBZGRlZC4NCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9rZXlldmVu
dHMtZm9yLWluY3JlbWVudC1hY3Rpb25zLXdpdGgtbm9kZS1yZW1vdmFsLWV4cGVjdGVkLnR4dDog
QWRkZWQuDQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLWZvci1pbmNyZW1lbnQt
YWN0aW9ucy13aXRoLW5vZGUtcmVtb3ZhbC5odG1rOiBBZGRlZC4NCisNCiAyMDIwLTA2LTMwICBM
YXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPg0KIA0KICAgICAgICAgW1dQRV0gR2FyZGVu
IHNvbWUgZmFpbHVyZXMgYW5kIGFkZCBuZXcgc2VjdGlvbiB0byBleHBlY3RhdGlvbg0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLWZvci1pbmNyZW1lbnQt
YWN0aW9ucy13aXRoLW5vZGUtcmVtb3ZhbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2tleWV2ZW50cy1mb3ItaW5jcmVtZW50LWFjdGlvbnMtd2l0aC1ub2RlLXJlbW92
YWwtZXhwZWN0ZWQudHh0DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAu
LmRiM2M5NGY5NjhmDQotLS0gL2Rldi9udWxsDQorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2tleWV2ZW50cy1mb3ItaW5jcmVtZW50LWFjdGlvbnMtd2l0aC1ub2RlLXJlbW92YWwtZXhw
ZWN0ZWQudHh0DQpAQCAtMCwwICsxLDEwIEBADQorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgaWYgYSBr
ZXlkb3duIGV2ZW50IHJlbW92ZXMgdGhlIG5vZGUsIGJhZCB0aGluZ3MgZG9uJ3QgaGFwcGVuLg0K
Kw0KK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4NCisNCisNCitLZXljb2RlIHJlY2VpdmVkOiBp
ZGVudGlmaWVyOiByaWdodCBrZXkgbmFtZTogQXJyb3dSaWdodA0KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUNCisNCitURVNUIENPTVBMRVRFDQorDQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtZm9yLWluY3JlbWVudC1hY3Rpb25zLXdpdGgt
bm9kZS1yZW1vdmFsLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2tleWV2ZW50cy1m
b3ItaW5jcmVtZW50LWFjdGlvbnMtd2l0aC1ub2RlLXJlbW92YWwuaHRtbA0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi4xODJmYzllZjgxNA0KLS0tIC9kZXYvbnVsbA0K
KysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtZm9yLWluY3JlbWVudC1h
Y3Rpb25zLXdpdGgtbm9kZS1yZW1vdmFsLmh0bWwNCkBAIC0wLDAgKzEsNDcgQEANCis8aHRtbD4N
Cis8aHRtbD4NCis8aGVhZD4NCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4NCis8L2hlYWQ+DQorPGJvZHkgaWQ9ImJvZHkiPg0KKw0KKzxkaXYgaWQ9
InNsaWRlciINCisgICAgICAgICAgIHJvbGU9InNsaWRlciINCisgICAgICAgICAgIHRhYmluZGV4
PSIwIg0KKyAgICAgICAgICAgYXJpYS12YWx1ZW1pbj0iMCINCisgICAgICAgICAgIGFyaWEtdmFs
dWVub3c9IjAiDQorICAgICAgICAgICBhcmlhLXZhbHVlbWF4PSIyNTUiDQorICAgICAgICAgICBh
cmlhLWxhYmVsbGVkYnk9ImlkUmVkIj48L2Rpdj4NCisNCis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4NCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4NCisgICAgIA0KKzxzY3JpcHQ+DQorICAgIGZ1
bmN0aW9uIGhhbmRsZUtleVVwKGV2ZW50KSB7DQorICAgICAgICBkZWJ1ZygiS2V5IHVwIHNob3Vs
ZCBOT1QgYmUgcmVhY2hlZCIpOw0KKyAgICB9DQorDQorICAgIGZ1bmN0aW9uIGhhbmRsZUtleURv
d24oZXZlbnQpIHsNCisgICAgICAgIGRlYnVnKCJLZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVy
OiAiICsgZXZlbnQua2V5SWRlbnRpZmllciArICIga2V5IG5hbWU6ICIgKyBldmVudC5rZXkpOw0K
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKS5yZW1vdmVDaGlsZChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic2xpZGVyIikpOw0KKyAgICAgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsNCisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOw0KKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7DQorICAgIH0NCisNCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcikgew0KKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7DQorICAgICAgICBkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgaWYgYSBrZXlkb3duIGV2ZW50IHJlbW92ZXMg
dGhlIG5vZGUsIGJhZCB0aGluZ3MgZG9uJ3QgaGFwcGVuLiIpOw0KKw0KKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInNsaWRlciIpLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBo
YW5kbGVLZXlEb3duKTsNCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzbGlkZXIi
KS5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIGhhbmRsZUtleVVwKTsNCisNCisgICAgICAgIC8v
IEdldCB0aGUgcGFyZW50IGVsZW1lbnQuDQorICAgICAgICB2YXIgYXhTbGlkZXIgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInNsaWRlciIpOw0KKyAgICAg
ICAgYXhTbGlkZXIuaW5jcmVtZW50KCk7DQorICAgIH0NCisgPC9zY3JpcHQ+DQorDQorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KKzwvYm9keT4N
Cis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9rZXlldmVu
dHMtcG9zdGVkLWZvci1pbmNyZW1lbnQtYWN0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2tleWV2ZW50cy1wb3N0ZWQtZm9yLWluY3JlbWVudC1hY3Rpb25zLWV4
cGVjdGVkLnR4dA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi42NTNh
MGQ1MGYzMg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9r
ZXlldmVudHMtcG9zdGVkLWZvci1pbmNyZW1lbnQtYWN0aW9ucy1leHBlY3RlZC50eHQNCkBAIC0w
LDAgKzEsMjMgQEANCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgaW5jcmVtZW50L2RlY3Jl
bWVudCBhY3Rpb25zIHBvc3Qga2V5Ym9hcmQgZXZlbnRzIHRoYXQgYXJlIGNvcnJlY3QgZm9yIExU
UiBhbmQgb3JpZW50YXRpb24uDQorDQorT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLg0KKw0KKw0K
K0luY3JlbWVudC9EZWNyZW1lbnQgLSBMVFINCitIb3Jpem9udGFsIG9yaWVudGF0aW9uDQorS2V5
Y29kZSByZWNlaXZlZDogaWRlbnRpZmllcjogcmlnaHQga2V5IG5hbWU6IEFycm93UmlnaHQNCitL
ZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVyOiBsZWZ0IGtleSBuYW1lOiBBcnJvd0xlZnQNCitW
ZXJ0aWNhbCBvcmllbnRhdGlvbg0KK0tleWNvZGUgcmVjZWl2ZWQ6IGlkZW50aWZpZXI6IHVwIGtl
eSBuYW1lOiBBcnJvd1VwDQorS2V5Y29kZSByZWNlaXZlZDogaWRlbnRpZmllcjogZG93biBrZXkg
bmFtZTogQXJyb3dEb3duDQorSW5jcmVtZW50L0RlY3JlbWVudCAtIFJUTA0KK0hvcml6b250YWwg
b3JpZW50YXRpb24NCitLZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVyOiBsZWZ0IGtleSBuYW1l
OiBBcnJvd0xlZnQNCitLZXljb2RlIHJlY2VpdmVkOiBpZGVudGlmaWVyOiByaWdodCBrZXkgbmFt
ZTogQXJyb3dSaWdodA0KK1ZlcnRpY2FsIG9yaWVudGF0aW9uDQorS2V5Y29kZSByZWNlaXZlZDog
aWRlbnRpZmllcjogdXAga2V5IG5hbWU6IEFycm93VXANCitLZXljb2RlIHJlY2VpdmVkOiBpZGVu
dGlmaWVyOiBkb3duIGtleSBuYW1lOiBBcnJvd0Rvd24NCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlDQorDQorVEVTVCBDT01QTEVURQ0KKw0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVtZW50LWFjdGlvbnMuaHRt
bCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkva2V5ZXZlbnRzLXBvc3RlZC1mb3ItaW5jcmVt
ZW50LWFjdGlvbnMuaHRtbA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAw
Li4zOTE2YzRjNzRjNg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9rZXlldmVudHMtcG9zdGVkLWZvci1pbmNyZW1lbnQtYWN0aW9ucy5odG1sDQpAQCAtMCww
ICsxLDYzIEBADQorPGh0bWw+DQorPGh0bWw+DQorPGhlYWQ+DQorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxib2R5IGlkPSJi
b2R5Ij4NCisNCis8ZGl2IGlkPSJzbGlkZXIiDQorICAgICAgICAgICByb2xlPSJzbGlkZXIiDQor
ICAgICAgICAgICB0YWJpbmRleD0iMCINCisgICAgICAgICAgIGFyaWEtdmFsdWVtaW49IjAiDQor
ICAgICAgICAgICBhcmlhLXZhbHVlbm93PSIwIg0KKyAgICAgICAgICAgYXJpYS12YWx1ZW1heD0i
MjU1Ig0KKyAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PSJpZFJlZCI+PC9kaXY+DQorDQorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+DQorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+DQorICAgICAN
Cis8c2NyaXB0Pg0KKyAgICB2YXIga2V5Q291bnQgPSAwOw0KKyAgICBmdW5jdGlvbiBoYW5kbGVL
ZXlEb3duKGV2ZW50KSB7DQorICAgICAgICBkZWJ1ZygiS2V5Y29kZSByZWNlaXZlZDogaWRlbnRp
ZmllcjogIiArIGV2ZW50LmtleUlkZW50aWZpZXIgKyAiIGtleSBuYW1lOiAiICsgZXZlbnQua2V5
KTsNCisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQorICAgICAgICBldmVudC5zdG9w
UHJvcGFnYXRpb24oKTsNCisgICAgICAgIGtleUNvdW50Kys7DQorICAgICAgICBpZiAoa2V5Q291
bnQgPT0gNCkgew0KKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOw0KKyAgICAgICAgfQ0KKyAg
ICAgfQ0KKw0KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7DQorICAg
ICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsNCisgICAgICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCB0aGUgaW5jcmVtZW50L2RlY3JlbWVudCBhY3Rpb25zIHBvc3Qga2V5
Ym9hcmQgZXZlbnRzIHRoYXQgYXJlIGNvcnJlY3QgZm9yIExUUiBhbmQgb3JpZW50YXRpb24uIik7
DQorDQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2xpZGVyIikuYWRkRXZlbnRM
aXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pOw0KKw0KKyAgICAgICAgLy8gR2V0IHRo
ZSBwYXJlbnQgZWxlbWVudC4NCisgICAgICAgIHZhciBheFNsaWRlciA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgic2xpZGVyIik7DQorICAgICAgICANCisg
ICAgICAgIGRlYnVnKCJJbmNyZW1lbnQvRGVjcmVtZW50IC0gTFRSIik7ICAgIA0KKyAgICAgICAg
aW5jcmVtZW50RGVjcmVtZW50KCk7DQorDQorICAgICAgICBkZWJ1ZygiSW5jcmVtZW50L0RlY3Jl
bWVudCAtIFJUTCIpOw0KKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXRVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKCJSVEwiKTsNCisgICAgICAgIGluY3JlbWVudERlY3JlbWVudCgpOw0K
Kw0KKyAgICAgICAgZnVuY3Rpb24gaW5jcmVtZW50RGVjcmVtZW50KCkgew0KKyAgICAgICAgICAg
IGRlYnVnKCJIb3Jpem9udGFsIG9yaWVudGF0aW9uIik7DQorICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNsaWRlciIpLnNldEF0dHJpYnV0ZSgiYXJpYS1vcmllbnRhdGlvbiIs
ICJob3Jpem9udGFsIik7DQorICAgICAgICAgICAgYXhTbGlkZXIuaW5jcmVtZW50KCk7DQorICAg
ICAgICAgICAgYXhTbGlkZXIuZGVjcmVtZW50KCk7DQorDQorICAgICAgICAgICAgZGVidWcoIlZl
cnRpY2FsIG9yaWVudGF0aW9uIik7DQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNsaWRlciIpLnNldEF0dHJpYnV0ZSgiYXJpYS1vcmllbnRhdGlvbiIsICJ2ZXJ0aWNhbCIp
Ow0KKyAgICAgICAgICAgIGF4U2xpZGVyLmluY3JlbWVudCgpOw0KKyAgICAgICAgICAgIGF4U2xp
ZGVyLmRlY3JlbWVudCgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorIDwvc2NyaXB0Pg0KKw0KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4NCis8L2Jv
ZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMN
CmluZGV4IGUyNjBiN2MzNzY0Li5jMTA2OTIyMzA4MiAxMDA2NDQNCi0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zDQorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vVGVzdEV4cGVjdGF0aW9ucw0KQEAgLTEzODEsNiArMTM4MSwxMCBAQCBhY2Nlc3NpYmls
aXR5L2NoaWxkcmVuLWNoYW5nZWQtc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwgWyBTa2lwIF0NCiBh
Y2Nlc3NpYmlsaXR5L21lbnUtbGlzdC1zZW5kcy1jaGFuZ2Utbm90aWZpY2F0aW9uLmh0bWwgWyBT
a2lwIF0NCiBhY2Nlc3NpYmlsaXR5L211bHRpc2VsZWN0LWxpc3QtcmVwb3J0cy1hY3RpdmUtb3B0
aW9uLmh0bWwgWyBTa2lwIF0NCiANCisjIGluY3JlbWVudC9kZWNyZW1lbnQgbm90IGltcGxlbWVu
dGVkIGluIHRlc3QgcnVubmVyDQorYWNjZXNzaWJpbGl0eS9rZXlldmVudHMtZm9yLWluY3JlbWVu
dC1hY3Rpb25zLXdpdGgtbm9kZS1yZW1vdmFsLmh0bWwgWyBTa2lwIF0NCithY2Nlc3NpYmlsaXR5
L2tleWV2ZW50cy1wb3N0ZWQtZm9yLWluY3JlbWVudC1hY3Rpb25zLmh0bWwgWyBTa2lwIF0NCisN
CiB3ZWJraXQub3JnL2IvMTQwNzk2IGFjY2Vzc2liaWxpdHkvYWx0LXRhZy1vbi1pbWFnZS13aXRo
LW5vbmltYWdlLXJvbGUuaHRtbCBbIFNraXAgXQ0KIHdlYmtpdC5vcmcvYi8xNDA3OTggYWNjZXNz
aWJpbGl0eS9hcmlhLWNvbnRyb2xzLXdpdGgtdGFicy5odG1sIFsgU2tpcCBdDQogDQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
DQppbmRleCBhNjE2ZTY1NGQ2ZC4uNzk4Nzc2OWYwZjkgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cNCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZw0KQEAgLTEsMyAr
MSwzOSBAQA0KKzIwMjAtMDYtMzAgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNv
bT4NCisNCisgICAgICAgIEFYOiBJbXBsZW1lbnQgcmVsZXZhbnQgc2ltdWxhdGVkIGtleSBwcmVz
c2VzIGZvciBjdXN0b20gQVJJQSB3aWRnZXRzIGZvciBpbmNyZW1lbnQvZGVjcmVtZW50DQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNzQ0DQorDQor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4NCisNCisgICAgICAgIEluIG9yZGVyIHRv
IGFsbG93IGN1c3RvbSBBUklBIHdpZGdldHMgdG8gd29yaywgd2UgY2FuIHBvc3Qga2V5Ym9hcmQg
ZXZlbnRzIGZvciBzcGVjaWZpYyBheCBhY3Rpb25zDQorICAgICAgICB0aGF0IGFyZSBub3QgaGFu
ZGxlZCBuYXRpdmVseS4NCisNCisgICAgICAgIFNwZWM6IGh0dHBzOi8vZ2l0aHViLmNvbS9XSUNH
L2FvbS9ibG9iL2doLXBhZ2VzL2V4cGxhaW5lci5tZCN1c2VyLWFjdGlvbi1ldmVudHMtZnJvbS1h
c3Npc3RpdmUtdGVjaG5vbG9neQ0KKw0KKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9rZXll
dmVudHMtcG9zdGVkLWZvci1pbmNyZW1lbnQtYWN0aW9ucy5odG1sDQorICAgICAgICAgICAgICBh
Y2Nlc3NpYmlsaXR5L2tleWV2ZW50cy1mb3ItaW5jcmVtZW50LWFjdGlvbnMtd2l0aC1ub2RlLXJl
bW92YWwuaHRtbA0KKw0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
cG9zdEtleWJvYXJkS2V5c0ZvclZhbHVlQ2hhbmdlKToNCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6c2V0Tm9kZVZhbHVlKToNCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hhbmdlVmFsdWVCeVN0ZXApOg0KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjaGFuZ2VWYWx1ZUJ5UGVyY2VudCk6DQor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaDoNCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6DQorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oOg0KKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOg0KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFZhbHVlKToNCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6DQorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHA6DQorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbGJhcjo6c2V0VmFsdWUpOg0KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaDoNCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5U2xpZGVyOjpzZXRWYWx1ZSk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNsaWRlci5oOg0KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkT2JqZWN0LmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpz
ZXRWYWx1ZSk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuaDoNCisNCiAyMDIwLTA2LTMwICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1
amlpQHNvbnkuY29tPg0KIA0KICAgICAgICAgW1dpbkNhaXJvXSBVbnJldmlld2VkIGJ1aWxkIGZp
eCBhZnRlciByMjYzNzc2DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcA0KaW5kZXggMjMxOWE2MWEwMjkuLjI5ZTIy
YmIwZDZiIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdC5jcHANCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwDQpAQCAtNTcsNiArNTcsNyBAQA0KICNpbmNsdWRl
ICJIVE1MU2VsZWN0RWxlbWVudC5oIg0KICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50Lmgi
DQogI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiDQorI2luY2x1ZGUgIktl
eWJvYXJkRXZlbnQuaCINCiAjaW5jbHVkZSAiTGFiZWxhYmxlRWxlbWVudC5oIg0KICNpbmNsdWRl
ICJMb2NhbGl6ZWRTdHJpbmdzLmgiDQogI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuaCINCkBAIC0x
MDk0LDE4ICsxMDk1LDQ1IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRlY3JlbWVu
dCgpDQogICAgIGFsdGVyU2xpZGVyVmFsdWUoZmFsc2UpOw0KIH0NCiANCisvLyBGaXJlIGEga2V5
Ym9hcmQgZXZlbnQgaWYgd2Ugd2VyZSBub3QgYWJsZSB0byBzZXQgdGhpcyB2YWx1ZSBuYXRpdmVs
eS4NCit2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpwb3N0S2V5Ym9hcmRLZXlzRm9yVmFs
dWVDaGFuZ2UoYm9vbCBpbmNyZWFzZSkNCit7DQorICAgIC8vIEluIGNhc2UgdGhlIGtleWJvYXJk
IGV2ZW50IGNhdXNlcyB0aGlzIGVsZW1lbnQgdG8gYmUgcmVtb3ZlZC4NCisgICAgUmVmPEFjY2Vz
c2liaWxpdHlPYmplY3Q+IHByb3RlY3RlZFRoaXMoKnRoaXMpOw0KKw0KKyAgICBhdXRvIGtleUlu
aXQgPSBLZXlib2FyZEV2ZW50OjpJbml0KCk7DQorICAgIGJvb2wgdmVydGljYWwgPSBvcmllbnRh
dGlvbigpID09IEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VmVydGljYWw7DQorICAgIGJvb2wg
aXNMVFIgPSBwYWdlKCktPnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKSA9PSBVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpMVFI7DQorICAgIA0KKyAgICBrZXlJbml0LmtleSA9IGlu
Y3JlYXNlID8gdmVydGljYWwgPyAiQXJyb3dVcCJfcyA6IGlzTFRSID8gIkFycm93UmlnaHQiX3Mg
OiAiQXJyb3dMZWZ0Il9zIDogdmVydGljYWwgPyAiQXJyb3dEb3duIl9zIDogaXNMVFIgPyAiQXJy
b3dMZWZ0Il9zIDogIkFycm93UmlnaHQiX3M7DQorICAgIGtleUluaXQua2V5SWRlbnRpZmllciA9
IGluY3JlYXNlID8gdmVydGljYWwgPyAidXAiX3MgOiBpc0xUUiA/ICJyaWdodCJfcyA6ICJsZWZ0
Il9zIDogdmVydGljYWwgPyAiZG93biJfcyA6IGlzTFRSID8gImxlZnQiX3MgOiAicmlnaHQiX3M7
DQorDQorICAgIGlmIChhdXRvKiBub2RlID0gdGhpcy0+bm9kZSgpKQ0KKyAgICAgICAgbm9kZS0+
ZGlzcGF0Y2hFdmVudChLZXlib2FyZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmtleWRvd25F
dmVudCwga2V5SW5pdCkpOw0KKw0KKyAgICAvLyBFbnN1cmUgbm9kZSBpcyBzdGlsbCB2YWxpZCBh
bmQgd2Fzbid0IHJlbW92ZWQgYWZ0ZXIgdGhlIGtleWRvd24uDQorICAgIGlmIChhdXRvKiBub2Rl
ID0gdGhpcy0+bm9kZSgpKQ0KKyAgICAgICAgbm9kZS0+ZGlzcGF0Y2hFdmVudChLZXlib2FyZEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmtleXVwRXZlbnQsIGtleUluaXQpKTsNCit9DQorDQor
dm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2V0Tm9kZVZhbHVlKGJvb2wgaW5jcmVhc2Us
IGZsb2F0IHZhbHVlKQ0KK3sNCisgICAgYm9vbCBkaWRTZXQgPSBzZXRWYWx1ZShTdHJpbmc6Om51
bWJlcih2YWx1ZSkpOw0KKyAgICANCisgICAgaWYgKGRpZFNldCkgew0KKyAgICAgICAgaWYgKGF1
dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpKQ0KKyAgICAgICAgICAgIGNhY2hlLT5wb3N0Tm90
aWZpY2F0aW9uKHRoaXMsIGRvY3VtZW50KCksIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2Vk
KTsNCisgICAgfSBlbHNlDQorICAgICAgICBwb3N0S2V5Ym9hcmRLZXlzRm9yVmFsdWVDaGFuZ2Uo
aW5jcmVhc2UpOw0KK30NCisNCiB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjaGFuZ2VW
YWx1ZUJ5U3RlcChib29sIGluY3JlYXNlKQ0KIHsNCiAgICAgZmxvYXQgc3RlcCA9IHN0ZXBWYWx1
ZUZvclJhbmdlKCk7DQogICAgIGZsb2F0IHZhbHVlID0gdmFsdWVGb3JSYW5nZSgpOw0KIA0KICAg
ICB2YWx1ZSArPSBpbmNyZWFzZSA/IHN0ZXAgOiAtc3RlcDsNCi0NCi0gICAgc2V0VmFsdWUoU3Ry
aW5nOjpudW1iZXIodmFsdWUpKTsNCi0NCi0gICAgYXV0byBvYmplY3RDYWNoZSA9IGF4T2JqZWN0
Q2FjaGUoKTsNCi0gICAgaWYgKG9iamVjdENhY2hlKQ0KLSAgICAgICAgb2JqZWN0Q2FjaGUtPnBv
c3ROb3RpZmljYXRpb24obm9kZSgpLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCk7DQor
ICAgIHNldE5vZGVWYWx1ZShpbmNyZWFzZSwgdmFsdWUpOw0KIH0NCiANCiB2b2lkIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpjaGFuZ2VWYWx1ZUJ5UGVyY2VudChmbG9hdCBwZXJjZW50Q2hhbmdl
KQ0KQEAgLTExMTksMTEgKzExNDcsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpj
aGFuZ2VWYWx1ZUJ5UGVyY2VudChmbG9hdCBwZXJjZW50Q2hhbmdlKQ0KICAgICAgICAgc3RlcCA9
IHN0ZDo6YWJzKHBlcmNlbnRDaGFuZ2UpICogKDEgLyBwZXJjZW50Q2hhbmdlKTsNCiANCiAgICAg
dmFsdWUgKz0gc3RlcDsNCi0gICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIodmFsdWUpKTsNCi0N
Ci0gICAgYXV0byBvYmplY3RDYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsNCi0gICAgaWYgKG9iamVj
dENhY2hlKQ0KLSAgICAgICAgb2JqZWN0Q2FjaGUtPnBvc3ROb3RpZmljYXRpb24obm9kZSgpLCBB
WE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCk7DQorICAgIHNldE5vZGVWYWx1ZShwZXJjZW50
Q2hhbmdlID4gMCwgdmFsdWUpOw0KIH0NCiANCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
Ojppc0dlbmVyaWNGb2N1c2FibGVFbGVtZW50KCkgY29uc3QNCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgNCmluZGV4IDRl
MjNjYmFiZjM3Li5jYjVmNjFiY2Q5YSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaA0KKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oDQpAQCAtMTg5LDcgKzE4OSw4
IEBAIHByaXZhdGU6DQogICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBj
b25zdCBvdmVycmlkZTsNCiAgICAgYm9vbCB1c2VzQWx0VGFnRm9yVGV4dENvbXB1dGF0aW9uKCkg
Y29uc3Q7DQogICAgIGJvb2wgcm9sZUlnbm9yZXNUaXRsZSgpIGNvbnN0Ow0KLSAgICANCisgICAg
dm9pZCBwb3N0S2V5Ym9hcmRLZXlzRm9yVmFsdWVDaGFuZ2UoYm9vbCBpbmNyZWFzZSk7DQorICAg
IHZvaWQgc2V0Tm9kZVZhbHVlKGJvb2wgaW5jcmVhc2UsIGZsb2F0IHZhbHVlKTsNCiAgICAgTm9k
ZSogbV9ub2RlOw0KIH07DQogDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaA0KaW5kZXggYzZlNjFjZWEzODAuLjk1MzhmZTQxNWIzIDEw
MDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5oDQpAQCAtNDYzLDExICs0NjMsMTEgQEAgcHVibGljOg0KICAgICB2b2lkIHNldEZvY3Vz
ZWQoYm9vbCkgb3ZlcnJpZGUgeyB9DQogICAgIHZvaWQgc2V0U2VsZWN0ZWRUZXh0KGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlIHsgfQ0KICAgICB2b2lkIHNldFNlbGVjdGVkVGV4dFJhbmdlKGNvbnN0
IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJpZGUgeyB9DQotICAgIHZvaWQgc2V0VmFsdWUoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGUgeyB9DQorICAgIGJvb2wgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCiAgICAgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2Uo
Y29uc3QgU3RyaW5nJiwgY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlkZTsNCiAgICAgYm9v
bCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOw0KIA0KLSAgICB2b2lkIHNldFZh
bHVlKGZsb2F0KSBvdmVycmlkZSB7IH0NCisgICAgYm9vbCBzZXRWYWx1ZShmbG9hdCkgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0NCiAgICAgdm9pZCBzZXRTZWxlY3RlZChib29sKSBvdmVycmlk
ZSB7IH0NCiAgICAgdm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgb3ZlcnJpZGUgeyB9DQogDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaA0KaW5kZXggNjFhMTFi
YjQzYjYuLmJlYTRhN2ZmNDZiIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgNCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oDQpAQCAtODk2LDEx
ICs4OTYsMTEgQEAgcHVibGljOg0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXNlZChib29sKSA9
IDA7DQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJikgPSAw
Ow0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0
UmFuZ2UmKSA9IDA7DQotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSA9
IDA7DQorICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSA9IDA7DQogICAg
IHZpcnR1YWwgYm9vbCByZXBsYWNlVGV4dEluUmFuZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgUGxh
aW5UZXh0UmFuZ2UmKSA9IDA7DQogICAgIHZpcnR1YWwgYm9vbCBpbnNlcnRUZXh0KGNvbnN0IFN0
cmluZyYpID0gMDsNCiANCi0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGZsb2F0KSA9IDA7DQor
ICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZShmbG9hdCkgPSAwOw0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0U2VsZWN0ZWQoYm9vbCkgPSAwOw0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRSb3dz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsNCiANCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cA0KaW5kZXggNzM3MDY4NWFkNDcuLjNjNWVhMDNkYzE2IDEwMDY0NA0KLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcA0KKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cA0KQEAgLTE2NjMsOCArMTY2MywxNSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnNldFNlbGVjdGVkVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJiByYW5nZQ0KICAgICB9
IGVsc2Ugew0KICAgICAgICAgYXV0byBub2RlID0gdGhpcy0+bm9kZSgpOw0KICAgICAgICAgQVNT
RVJUKG5vZGUpOw0KKyAgICAgICAgYXV0byBlbGVtZW50UmFuZ2UgPSB0aGlzLT5lbGVtZW50UmFu
Z2UoKTsNCiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFydCA9IHZpc2libGVQb3NpdGlvbkZv
ckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcigqbm9kZSwgcmFuZ2Uuc3RhcnQpOw0KKyAgICAg
ICAgaWYgKCFlbGVtZW50UmFuZ2UtPmNvbnRhaW5zKHN0YXJ0KSkNCisgICAgICAgICAgICBzdGFy
dCA9IFZpc2libGVQb3NpdGlvbihlbGVtZW50UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7DQorICAg
ICAgICANCiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBlbmQgPSB2aXNpYmxlUG9zaXRpb25Gb3JJ
bmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IoKm5vZGUsIHJhbmdlLnN0YXJ0ICsgcmFuZ2UubGVu
Z3RoKTsNCisgICAgICAgIGlmICghZWxlbWVudFJhbmdlLT5jb250YWlucyhlbmQpKQ0KKyAgICAg
ICAgICAgIGVuZCA9IFZpc2libGVQb3NpdGlvbihlbGVtZW50UmFuZ2UtPmVuZFBvc2l0aW9uKCkp
Ow0KKyAgICAgICAgDQogICAgICAgICBtX3JlbmRlcmVyLT5mcmFtZSgpLnNlbGVjdGlvbigpLnNl
dFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0LCBlbmQpLCBGcmFtZVNlbGVjdGlvbjo6
ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoVXNlclRyaWdnZXJlZCkpOw0KICAgICB9DQogICAg
IA0KQEAgLTE4NjAsMTAgKzE4NjcsMTAgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBzZWwNCiAgICAg
ICAgIHNlbGVjdGVkUm93LT5zZXRTZWxlY3RlZCh0cnVlKTsNCiB9DQogICAgIA0KLXZvaWQgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmcpDQor
Ym9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHN0
cmluZykNCiB7DQogICAgIGlmICghbV9yZW5kZXJlciB8fCAhaXM8RWxlbWVudD4obV9yZW5kZXJl
ci0+bm9kZSgpKSkNCi0gICAgICAgIHJldHVybjsNCisgICAgICAgIHJldHVybiBmYWxzZTsNCiAg
ICAgDQogICAgIEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50PigqbV9yZW5kZXJl
ci0+bm9kZSgpKTsNCiAgICAgUmVuZGVyT2JqZWN0JiByZW5kZXJlciA9ICptX3JlbmRlcmVyOw0K
QEAgLTE4NzUsMTQgKzE4ODIsMjAgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpz
ZXRWYWx1ZShjb25zdCBTdHJpbmcmIHN0cmluZykNCiAgICAgICAgIGlmIChlbGVtZW50LnNob3Vs
ZFVzZUlucHV0TWV0aG9kKCkpIHsNCiAgICAgICAgICAgICBlZGl0b3IuY2xlYXJUZXh0KCk7DQog
ICAgICAgICAgICAgZWRpdG9yLmluc2VydFRleHQoc3RyaW5nLCBudWxscHRyKTsNCi0gICAgICAg
ICAgICByZXR1cm47DQorICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICB9DQogICAg
IH0NCiAgICAgLy8gRklYTUU6IERvIHdlIHdhbnQgdG8gZG8gYW55dGhpbmcgaGVyZSBmb3IgQVJJ
QSB0ZXh0Ym94ZXM/DQotICAgIGlmIChyZW5kZXJlci5pc1RleHRGaWVsZCgpICYmIGlzPEhUTUxJ
bnB1dEVsZW1lbnQ+KGVsZW1lbnQpKQ0KKyAgICBpZiAocmVuZGVyZXIuaXNUZXh0RmllbGQoKSAm
JiBpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkgew0KICAgICAgICAgZG93bmNhc3Q8SFRN
TElucHV0RWxlbWVudD4oZWxlbWVudCkuc2V0VmFsdWUoc3RyaW5nKTsNCi0gICAgZWxzZSBpZiAo
cmVuZGVyZXIuaXNUZXh0QXJlYSgpICYmIGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KGVsZW1lbnQp
KQ0KKyAgICAgICAgcmV0dXJuIHRydWU7DQorICAgIH0NCisgICAgaWYgKHJlbmRlcmVyLmlzVGV4
dEFyZWEoKSAmJiBpczxIVE1MVGV4dEFyZWFFbGVtZW50PihlbGVtZW50KSkgew0KICAgICAgICAg
ZG93bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCkuc2V0VmFsdWUoc3RyaW5nKTsN
CisgICAgICAgIHJldHVybiB0cnVlOw0KKyAgICB9DQorICAgIA0KKyAgICByZXR1cm4gZmFsc2U7
DQogfQ0KIA0KIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3VwcG9ydHNBUklBT3du
cygpIGNvbnN0DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaA0KaW5kZXggNzgxODVlNzAzMjguLjk5MjM1NzZlYTMx
IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5oDQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1YmxpYzoNCiAgICAg
DQogICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZTsNCiAgICAgdm9pZCBzZXRTZWxl
Y3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIG92ZXJyaWRlOw0KLSAgICB2b2lk
IHNldFZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOw0KKyAgICBib29sIHNldFZhbHVlKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOw0KICAgICB2b2lkIHNldFNlbGVjdGVkUm93cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZTsNCiAgICAgQWNjZXNzaWJpbGl0eU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7DQogDQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHANCmlu
ZGV4IGMwODkxNmE3OWY0Li43NTQ3ZjZmMTU1YSAxMDA2NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHANCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHANCkBAIC05Miwx
MyArOTIsMTQgQEAgZmxvYXQgQWNjZXNzaWJpbGl0eVNjcm9sbGJhcjo6dmFsdWVGb3JSYW5nZSgp
IGNvbnN0DQogICAgIHJldHVybiBtX3Njcm9sbGJhci0+Y3VycmVudFBvcygpIC8gbV9zY3JvbGxi
YXItPm1heGltdW0oKTsNCiB9DQogDQotdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyOjpzZXRW
YWx1ZShmbG9hdCB2YWx1ZSkNCitib29sIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXI6OnNldFZhbHVl
KGZsb2F0IHZhbHVlKQ0KIHsNCiAgICAgaWYgKCFtX3Njcm9sbGJhcikNCi0gICAgICAgIHJldHVy
bjsNCisgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgDQogICAgIGZsb2F0IG5ld1ZhbHVlID0g
dmFsdWUgKiBtX3Njcm9sbGJhci0+bWF4aW11bSgpOw0KICAgICBtX3Njcm9sbGJhci0+c2Nyb2xs
YWJsZUFyZWEoKS5zY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24obV9zY3JvbGxiYXItPm9y
aWVudGF0aW9uKCksIG5ld1ZhbHVlKTsNCisgICAgcmV0dXJuIHRydWU7DQogfQ0KICAgICANCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaA0KaW5kZXggNGIwZDJlM2JiMGMuLmZiMjFl
YTUzMGU2IDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2Nyb2xsYmFyLmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNjcm9sbGJhci5oDQpAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOg0KICAgICBi
b29sIGlzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOw0KICAgICANCiAgICAgLy8gQXNzdW1lcyBm
bG9hdCBbMC4uMV0NCi0gICAgdm9pZCBzZXRWYWx1ZShmbG9hdCkgb3ZlcnJpZGU7DQorICAgIGJv
b2wgc2V0VmFsdWUoZmxvYXQpIG92ZXJyaWRlOw0KICAgICBmbG9hdCB2YWx1ZUZvclJhbmdlKCkg
Y29uc3Qgb3ZlcnJpZGU7DQogDQogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1fc2Nyb2xsYmFyOw0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNs
aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlk
ZXIuY3BwDQppbmRleCBjYzZjYjgxOGU4Yi4uYTFhMTQ3OTllZWUgMTAwNjQ0DQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwDQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwDQpAQCAt
MTI2LDE0ICsxMjYsMTUgQEAgZmxvYXQgQWNjZXNzaWJpbGl0eVNsaWRlcjo6bWluVmFsdWVGb3JS
YW5nZSgpIGNvbnN0DQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oaW5wdXRFbGVtZW50
KCktPm1pbmltdW0oKSk7DQogfQ0KIA0KLXZvaWQgQWNjZXNzaWJpbGl0eVNsaWRlcjo6c2V0VmFs
dWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkNCitib29sIEFjY2Vzc2liaWxpdHlTbGlkZXI6OnNldFZh
bHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpDQogew0KICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dCA9IGlucHV0RWxlbWVudCgpOw0KICAgICANCiAgICAgaWYgKGlucHV0LT52YWx1ZSgpID09IHZh
bHVlKQ0KLSAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgcmV0dXJuIHRydWU7DQogDQogICAgIGlu
cHV0LT5zZXRWYWx1ZSh2YWx1ZSwgRGlzcGF0Y2hDaGFuZ2VFdmVudCk7DQorICAgIHJldHVybiB0
cnVlOw0KIH0NCiANCiBIVE1MSW5wdXRFbGVtZW50KiBBY2Nlc3NpYmlsaXR5U2xpZGVyOjppbnB1
dEVsZW1lbnQoKSBjb25zdA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2xpZGVyLmgNCmluZGV4IDkxYzcwOTI1ZTZkLi5hYmE5MTIwMDA4NCAxMDA2
NDQNCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRl
ci5oDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlk
ZXIuaA0KQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToNCiAgICAgYm9vbCBjYW5TZXRWYWx1ZUF0
dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0NCiAgICAgY29uc3QgQXRv
bVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlk
ZTsNCiAgICAgDQotICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7DQor
ICAgIGJvb2wgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7DQogICAgIGZsb2F0IHZh
bHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsNCiAgICAgZmxvYXQgbWF4VmFsdWVGb3JSYW5n
ZSgpIGNvbnN0IG92ZXJyaWRlOw0KICAgICBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkgY29uc3Qg
b3ZlcnJpZGU7DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcA0KaW5kZXggODM5NWJlMjZhNDku
LjA2MWU5YTY4NjBkIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHANCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwDQpAQCAtNjI5LDEw
ICs2MjksMjIgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRJc0V4cGFuZGVkKGJvb2wgdmFs
dWUpDQogICAgICAgICBvYmplY3QtPnNldElzRXhwYW5kZWQodmFsdWUpOw0KICAgICB9KTsNCiB9
DQotdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSkNCisNCitib29s
IEFYSXNvbGF0ZWRPYmplY3Q6OnNldFZhbHVlKGZsb2F0IHZhbHVlKQ0KIHsNCi0gICAgcGVyZm9y
bUZ1bmN0aW9uT25NYWluVGhyZWFkKFsmdmFsdWVdKEFYQ29yZU9iamVjdCogb2JqZWN0KSB7DQot
ICAgICAgICBvYmplY3QtPnNldFZhbHVlKHZhbHVlKTsNCisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxib29sPihbJnZhbHVlLCB0aGlzXSAoKSAt
PiBib29sIHsNCisgICAgICAgIGlmIChhdXRvKiBheE9iamVjdCA9IGFzc29jaWF0ZWRBWE9iamVj
dCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBheE9iamVjdC0+c2V0VmFsdWUodmFsdWUpOw0KKyAg
ICAgICAgcmV0dXJuIGZhbHNlOw0KKyAgICB9KTsNCit9DQorDQorYm9vbCBBWElzb2xhdGVkT2Jq
ZWN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQ0KK3sNCisgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxib29sPihbJnZhbHVlLCB0aGlz
XSAoKSAtPiBib29sIHsNCisgICAgICAgIGlmIChhdXRvKiBheE9iamVjdCA9IGFzc29jaWF0ZWRB
WE9iamVjdCgpKQ0KKyAgICAgICAgICAgIHJldHVybiBheE9iamVjdC0+c2V0VmFsdWUodmFsdWUp
Ow0KKyAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICB9KTsNCiB9DQogDQpAQCAtNjcxLDEzICs2
ODMsNiBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldFNlbGVjdGVkVGV4dFJhbmdlKGNvbnN0
IFBsYWluVGV4dFJhbmdlJiB2YWx1ZSkNCiAgICAgfSk7DQogfQ0KIA0KLXZvaWQgQVhJc29sYXRl
ZE9iamVjdDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkNCi17DQotICAgIHBlcmZvcm1G
dW5jdGlvbk9uTWFpblRocmVhZChbJnZhbHVlXShBWENvcmVPYmplY3QqIG9iamVjdCkgew0KLSAg
ICAgICAgb2JqZWN0LT5zZXRWYWx1ZSh2YWx1ZSk7DQotICAgIH0pOw0KLX0NCi0NCiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQ0KIHZvaWQgQVhJc29sYXRlZE9i
amVjdDo6c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCB2YWx1ZSkNCiB7DQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5oDQppbmRleCAyZTZiN2VmYzYwNi4uMmExOTlmZWE1OWIgMTAwNjQ0DQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmgNCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuaA0KQEAgLTcwMywxMyArNzAzLDEzIEBAIHByaXZhdGU6DQogICAgIC8v
IEF0dHJpYnV0ZSBzZXR0ZXJzLg0KICAgICB2b2lkIHNldEFSSUFHcmFiYmVkKGJvb2wpIG92ZXJy
aWRlOw0KICAgICB2b2lkIHNldElzRXhwYW5kZWQoYm9vbCkgb3ZlcnJpZGU7DQotICAgIHZvaWQg
c2V0VmFsdWUoZmxvYXQpIG92ZXJyaWRlOw0KKyAgICBib29sIHNldFZhbHVlKGZsb2F0KSBvdmVy
cmlkZTsNCiAgICAgdm9pZCBzZXRTZWxlY3RlZChib29sKSBvdmVycmlkZTsNCiAgICAgdm9pZCBz
ZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7DQog
ICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZTsNCiAgICAgdm9pZCBzZXRTZWxlY3Rl
ZFRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7DQogICAgIHZvaWQgc2V0U2VsZWN0ZWRUZXh0
UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlkZTsNCi0gICAgdm9pZCBzZXRWYWx1
ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsNCisgICAgYm9vbCBzZXRWYWx1ZShjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsNCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShJT1NfRkFN
SUxZKQ0KICAgICB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpIG92ZXJyaWRlOw0K
ICNlbmRpZg0K
</data>

          </attachment>
      

    </bug>

</bugzilla>