<?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>233558</bug_id>
          
          <creation_ts>2021-11-29 07:18:19 -0800</creation_ts>
          <short_desc>AX Isolated Tree: When focus changes, update AXPropertyName::IsSelected for any aria-controls controllers of tab panel ancestor objects</short_desc>
          <delta_ts>2021-12-08 11:50:48 -0800</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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</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>1818201</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-11-29 07:18:19 -0800</bug_when>
    <thetext>AccessibilityRenderObject::isTabItemSelected is dependent on object focus state, so isolated tree needs to re-compute AXPropertyName::IsSelected whenever focus changes.

This will fix test accessibility/aria-controls-with-tabs.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818202</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-29 07:18:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/85815537&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818214</commentid>
    <comment_count>2</comment_count>
      <attachid>445279</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-11-29 07:54:19 -0800</bug_when>
    <thetext>Created attachment 445279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818233</commentid>
    <comment_count>3</comment_count>
      <attachid>445279</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-11-29 09:06:35 -0800</bug_when>
    <thetext>Comment on attachment 445279
Patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:416
&gt;      auto* focus = getOrCreate(focusedNode);

can we rename this variable to focusedObject or something along those lines. focus by itself sounds like a verb

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:259
&gt; +    updateNodePropertyLocked(axObject, property);

why do we want to hold the lock during the entire change set in updateNodeProperty? we only need to protected pending property changes right?

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:422
&gt; +        if (controlledTabPanelAncestor) {

controlledTabPanelAncestor should be non null coming out of ariaControlledTabPanelAncestors() right?

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:424
&gt; +            controlledTabPanelAncestor-&gt;ariaControlsReferencingElements(controllers);

can we make this method return the vector of children?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818430</commentid>
    <comment_count>4</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-11-29 13:10:09 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #2)
&gt; Created attachment 445279 [details]
&gt; Patch

Too many different changes in this patch that makes it difficult to review and understand. I would split it up in at least three or four separate patches:
1. getting the ancestors that match a given condition.
2. the change that is specific to tab controls.
3. The isolated tree mode change concerning focus changes and having to update some additional properties.
4. The changes to the Tools AX objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819261</commentid>
    <comment_count>5</comment_count>
      <attachid>445580</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-12-01 08:56:23 -0800</bug_when>
    <thetext>Created attachment 445580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819264</commentid>
    <comment_count>6</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-12-01 09:02:56 -0800</bug_when>
    <thetext>In this new patch, I removed the AXAncestorFlag::HasAriaControlledTabPanelAncestor that the previous patch had. It was only an optimization, i.e. not necessary for correctness, and after reviewing it further I&apos;m not sure it was even that great of an optimization.

Also, the test refactoring was all moved to https://bugs.webkit.org/show_bug.cgi?id=233603, so this patch should be more atomically reviewable now.

&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:259
&gt; &gt; +    updateNodePropertyLocked(axObject, property);
&gt; 
&gt; why do we want to hold the lock during the entire change set in
&gt; updateNodeProperty? we only need to protected pending property changes right?
I did it this way because our locks aren&apos;t reentrant, meaning this call chain would cause a deadlock:

setFocusedNode -&gt; handleFocusChange -&gt; updateNodeProperty(*ariaController, AXPropertyName::IsSelected)

Because setFocusedNode acquires the lock, and then updateNodeProperty tries to acquire the lock.

updateNodePropertyLocked is a variant of the function for situations like this where we want to update a node property but already hold the lock.

If either of you don&apos;t like this approach, we could just not use updateNodeProperty in this scenario and update the m_propertyMap manually wherever needed.

I addressed all your other comments, Chris.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819287</commentid>
    <comment_count>7</comment_count>
      <attachid>445584</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-12-01 09:38:13 -0800</bug_when>
    <thetext>Created attachment 445584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819295</commentid>
    <comment_count>8</comment_count>
      <attachid>445586</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-12-01 09:50:45 -0800</bug_when>
    <thetext>Created attachment 445586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821591</commentid>
    <comment_count>9</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-12-08 09:30:18 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #8)
&gt; Created attachment 445586 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/AccessibilityObject.cpp
+++ a/Source/WebCore/accessibility/AccessibilityObject.cpp

+bool AccessibilityObject::hasAriaElementsReferencedByAttribute(const QualifiedName&amp; attribute) const
+{
+    AccessibilityChildrenVector referencingElements;
+    ariaElementsReferencedByAttribute(referencingElements, attribute, ARIAElementSearchBehavior::StopAtFirst);
+    return !referencingElements.isEmpty();
+}
+

Where is this used?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821674</commentid>
    <comment_count>10</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-12-08 11:37:40 -0800</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #9)
&gt; (In reply to Tyler Wilcock from comment #8)
&gt; &gt; Created attachment 445586 [details]
&gt; &gt; Patch
&gt; 
&gt; --- a/Source/WebCore/accessibility/AccessibilityObject.cpp
&gt; +++ a/Source/WebCore/accessibility/AccessibilityObject.cpp
&gt; 
&gt; +bool AccessibilityObject::hasAriaElementsReferencedByAttribute(const
&gt; QualifiedName&amp; attribute) const
&gt; +{
&gt; +    AccessibilityChildrenVector referencingElements;
&gt; +    ariaElementsReferencedByAttribute(referencingElements, attribute,
&gt; ARIAElementSearchBehavior::StopAtFirst);
&gt; +    return !referencingElements.isEmpty();
&gt; +}
&gt; +
&gt; 
&gt; Where is this used?
It&apos;s used by AccessibilityObject::hasAriaControlsReferencingElement (another new function), which in turn is used by AccessibilityObject::controlledTabPanelAncestors.

Using hasAriaControlsReferencingElement rather than !AccessibilityObject::ariaControlsReferencingElements().isEmpty() is more efficient because the former stops iterating when it finds the first referencing element, while the latter iterates through the entire tree no matter what.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821681</commentid>
    <comment_count>11</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-12-08 11:48:44 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #8)
&gt; Created attachment 445586 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/AccessibilityObjectInterface.h
+++ a/Source/WebCore/accessibility/AccessibilityObjectInterface.h

-    virtual void ariaControlsReferencingElements(AccessibilityChildrenVector&amp;) const = 0;
+    virtual AccessibilityChildrenVector ariaControlsReferencingElements() const = 0;

Can we rename ariaControlsReferencingElements -&gt; controllerElements ?

+template&lt;typename T, typename F&gt;
+AXCoreObject::AccessibilityChildrenVector findAncestors(const T&amp; object, const F&amp; matches)

The return should be Vector&lt;T&gt; or Vector&lt;RefPtr&lt;T&gt;&gt;.

+    AXCoreObject::AccessibilityChildrenVector ancestors;

Vector&lt;T&gt; or Vector&lt;RefPtr&lt;T&gt;&gt;.

--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
+++ a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h

I&apos;m concerned about these changes to AXIsolatedTree. I would kindly request we split the AXCore changes from the isolated tree changes, and put this in a separate patch.

+class AccessibilityObject;

The isolated tree should not need to know about AccessibilityObjects.

 enum class AXPropertyName : uint16_t {
     ARIAControlsElements,
+    ARIAControlsReferencingElements,

Rename ControllerElements.

+    ControlledTabPanelAncestors,

Does this mean ancestors of a tab panel that is controlled by another element? I find this whole naming quite confusing.

-    void setFocusedNodeID(AXID);
+    void setFocusedNode(AccessibilityObject*);

I don&apos;t think this is a good change. IsolatedTree shouldn&apos;t know about AccessibilityObject.

+    void updateNodePropertyLocked(const AXCoreObject&amp;, AXPropertyName) WTF_REQUIRES_LOCK(m_changeLogLock);

I don&apos;t think we need this since we already have a mechanism to update the properties of a node. If IsSelected needs to be updated when the focus changes, we can call the updateNodeProperty for the corresponding selected object.

+    void handleFocusChange(AXCoreObject*) WTF_REQUIRES_LOCK(m_changeLogLock);

Can we call this updateXXX, making explicit what we are doing here? We give handleXXXChanges a totally different meaning in the AXObjectCache, handling notifications.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445279</attachid>
            <date>2021-11-29 07:54:19 -0800</date>
            <delta_ts>2021-12-01 08:56:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233558-20211129095418.patch</filename>
            <type>text/plain</type>
            <size>71051</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2FmMGEwZDYxOWRkNjMy
NmI1ZGU2YzdjODNlOTlmOTVhZGI0ZGI3Yi4uYzdjOTc3MTBjZmIyOWEzMzAzMmJkMjUwN2M0OWVl
ODQzYzk5ZWY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDIxLTExLTI5ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSXNvbGF0ZWQgVHJl
ZTogV2hlbiBmb2N1cyBjaGFuZ2VzLCB1cGRhdGUgQVhQcm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWQg
Zm9yIGFueSBhcmlhLWNvbnRyb2xzIGNvbnRyb2xsZXJzIG9mIHRhYiBwYW5lbCBhbmNlc3RvciBv
YmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzM1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1RhYkl0ZW1TZWxlY3RlZCBpcyBkZXBlbmRlbnQg
b24gb2JqZWN0IGZvY3VzIHN0YXRlLAorICAgICAgICBzbyBpc29sYXRlZCB0cmVlIG5lZWRzIHRv
IHJlLWNvbXB1dGUgQVhQcm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWQgd2hlbmV2ZXIgZm9jdXMgY2hh
bmdlcy4KKworICAgICAgICBTcGVjaWZpY2FsbHksIHdlIG5lZWQgdG8gcmUtY29tcHV0ZSB0aGlz
IHByb3BlcnR5IGZvciB0aGUKKyAgICAgICAgYXJpYS1jb250cm9scyBjb250cm9sbGVycyBvZiB0
YWIgcGFuZWwgYW5jZXN0b3JzIG9mIHRoZSBvYmplY3QgdGhhdAorICAgICAgICBjaGFuZ2VkIGZv
Y3VzLgorCisgICAgICAgIFRlc3QgY292ZXJlZCBieSBhY2Nlc3NpYmlsaXR5L2FuY2VzdG9yLWNv
bXB1dGF0aW9uLmh0bWwgYW5kCisgICAgICAgIGFjY2Vzc2liaWxpdHkvYXJpYS1jb250cm9scy13
aXRoLXRhYnMuaHRtbC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzZXRJc29sYXRlZFRyZWVGb2N1
c2VkT2JqZWN0KToKKyAgICAgICAgQ2FsbCBuZXcgc2V0Rm9jdXNlZE5vZGUgZnVuY3Rpb24gaW5z
dGVhZCBvZiBkZWxldGVkIHNldEZvY3VzZWROb2RlSUQuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6Y29tcHV0ZUFuY2VzdG9yRmxhZ3MgY29uc3QpOiAKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZXNBbmNlc3RvckZsYWcgY29uc3QpOgorICAg
ICAgICBIYW5kbGUgbmV3IGZsYWcgQVhBbmNlc3RvckZsYWc6Okhhc0FyaWFDb250cm9sbGVkVGFi
UGFuZWxBbmNlc3Rvci4KKworICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
aGFzQXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yIGNvbnN0KTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlB
dHRyaWJ1dGUgY29uc3QpOgorICAgICAgICBIYW5kbGUgbmV3IEFSSUFFbGVtZW50U2VhcmNoQmVo
YXZpb3I6OlN0b3BBdEZpcnN0IHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6Omhhc0FyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZSBjb25zdCk6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUNvbnRy
b2xsZWRUYWJQYW5lbEFuY2VzdG9ycyBjb25zdCk6IEFkZGVkLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpoYXNBcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnQgY29uc3QpOiBB
ZGRlZC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZS5oOgorICAgICAgICBBZGQgbmV3IEhhc0FyaWFDb250cm9sbGVkVGFiUGFuZWxBbmNlc3Rv
ciBmbGFnLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNv
bnRyb2xsZWRUYWJQYW5lbE9iamVjdHMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzVGFiSXRlbVNlbGVjdGVkIGNvbnN0KToKKyAg
ICAgICAgVXNlIG5ldyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhQ29udHJvbGxlZFRhYlBhbmVs
QW5jZXN0b3JzIGZ1bmN0aW9uCisgICAgICAgIHRvIGZpbmQgYW5jZXN0b3JzIG9uY2UgaW5zdGVh
ZCBvZiByZS1pdGVyYXRpbmcgdGhlIHBhcmVudCBoaWVyYXJjaHkgb2YKKyAgICAgICAgdGhlIGZv
Y3VzZWQgb2JqZWN0IG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIEFkZCBjb250cm9sbGVkVGFiUGFu
ZWxPYmplY3RzIHByaXZhdGUgZnVuY3Rpb24uCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lv
cy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUhhc0FyaWFDb250cm9sbGVkVGFi
UGFuZWxBbmNlc3Rvcl0pOiBBZGRlZC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEpOgorICAgICAgICBTdG9yZSBBWFByb3Bl
cnR5TmFtZTo6QVJJQUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyBmb3Igb2JqZWN0cyB0aGF0
CisgICAgICAgIGhhdmUgYSByb2xlVmFsdWUoKSBvZiBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiUGFu
ZWwuCisKKyAgICAgICAgSWYgdGhlIG5ldyBBWEFuY2VzdG9yRmxhZzo6SGFzQXJpYUNvbnRyb2xs
ZWRUYWJQYW5lbEFuY2VzdG9yIGZsYWcgaXMKKyAgICAgICAgc2V0LCBmaW5kIGFuZCBzdG9yZSBh
bGwgYXJpYS1jb250cm9sbGVkIHRhYiBwYW5lbCBhbmNlc3RvcnMuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QVhJc29sYXRlZFRyZWU6OmNyZWF0ZSk6CisgICAgICAgIENhbGwgc2V0Rm9jdXNlZE5v
ZGUgaW5zdGVhZCBvZiBzZXRGb2N1c2VkTm9kZUlEICh3aGljaCBpcyBub3cgZGVsZXRlZCkuCisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3BlcnR5KToKKyAg
ICAgICAgTW92ZWQgbG9naWMgdG8gcHJpdmF0ZSBmdW5jdGlvbiB1cGRhdGVOb2RlUHJvcGVydHlM
b2NrZWQuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3Bl
cnR5TG9ja2VkKToKKyAgICAgICAgQWRkZWQuIFRoaXMgaXMgYSBXVEZfUkVRVUlSRVNfTE9DSyht
X2NoYW5nZUxvZ0xvY2spIHZlcnNpb24gb2YKKyAgICAgICAgdXBkYXRlTm9kZVByb3BlcnR5LCBp
bnRlbmRlZCB0byBiZSBjb25zdW1lZCBieSBjYWxsZXJzIHdobyBhbHJlYWR5CisgICAgICAgIGhv
bGQgdGhpcyBsb2NrLiBUaGlzIGNvdWxkIGJlIHVwZGF0ZU5vZGVQcm9wZXJ0eSwgb3Igc29tZSBv
dGhlcgorICAgICAgICBhZ2dyZWdhdGUgbG9naWMgKGUuZy4gY2FsbGVkIGZyb20gbmV3IGhhbmRs
ZUZvY3VzQ2hhbmdlIGZ1bmN0aW9uKS4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVl
OjpzZXRGb2N1c2VkTm9kZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRy
ZWU6OmhhbmRsZUZvY3VzQ2hhbmdlKTogQWRkZWQuIAorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMpOgorICAgICAgICBDYWxsIG5ldyBoYW5kbGVG
b2N1c0NoYW5nZSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpz
ZXRGb2N1c2VkTm9kZUlEKTogRGVsZXRlZC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CisgICAgICAgIEFkZCBBWFByb3BlcnR5TmFtZTo6
QVJJQUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9ycyBhbmQgQVhQcm9wZXJ0eU5hbWU6OkFSSUFD
b250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgor
ICAgICAgICBIYW5kbGUgbmV3IEFYSGFzQXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yIGF0
dHJpYnV0ZS4KKwogMjAyMS0xMS0yOCAgTWF0dCBXb29kcm93ICA8bWF0dC53b29kcm93QGdtYWls
LmNvbT4KIAogICAgICAgICBTZXJpYWxpemUgY29tcHV0ZWQgc3R5bGUgb2YgYmFja2dyb3VuZCBz
aG9ydGhhbmQgd2l0aCBtdWx0aXBsZSBsYXllcnMgY29ycmVjdGx5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggMmI2ZWFmODE3YzZmZTNi
OWY1MDYyNGQ2MWE5M2Y5YzgyOGJmOTZmYi4uYmNhNDg0NmYzZWI3NjBiOTUyM2RjZDdmOTExMTA2
ZTMyNjJmZWE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwCkBAIC00MTQsOSArNDE0LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpzZXRJc29s
YXRlZFRyZWVGb2N1c2VkT2JqZWN0KE5vZGUqIGZvY3VzZWROb2RlKQogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvKiBmb2N1cyA9IGdldE9yQ3JlYXRlKGZvY3VzZWROb2RlKTsKLQogICAgIGlm
IChhdXRvIHRyZWUgPSBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCgqbV9wYWdlSUQpKQot
ICAgICAgICB0cmVlLT5zZXRGb2N1c2VkTm9kZUlEKGZvY3VzID8gZm9jdXMtPm9iamVjdElEKCkg
OiBBWElEKCkpOworICAgICAgICB0cmVlLT5zZXRGb2N1c2VkTm9kZShmb2N1cyk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAKaW5kZXggMTBiYTlmOTc2ZDNjZGYyNmM5Y2NhMmI3ZDA4YjJiMjRjMzQxNzgy
Yi4uNGFjNjJhZjZmMGM5ZjdlNmZkNmI0YzhiODJhNzYxNTRmMGI2MGY4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBA
IC0xMjgsNiArMTI4LDkgQEAgT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiBBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpjb21wdXRlQW5jZXN0b3JGbGFncygpIGNvbnN0CiB7CiAgICAgT3B0aW9uU2V0PEFY
QW5jZXN0b3JGbGFnPiBjb21wdXRlZEZsYWdzOwogCisgICAgaWYgKGhhc0FuY2VzdG9yRmxhZyhB
WEFuY2VzdG9yRmxhZzo6SGFzQXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yKSB8fCBtYXRj
aGVzQW5jZXN0b3JGbGFnKEFYQW5jZXN0b3JGbGFnOjpIYXNBcmlhQ29udHJvbGxlZFRhYlBhbmVs
QW5jZXN0b3IpKQorICAgICAgICBjb21wdXRlZEZsYWdzLnNldChBWEFuY2VzdG9yRmxhZzo6SGFz
QXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yLCAxKTsKKwogICAgIGlmIChoYXNBbmNlc3Rv
ckZsYWcoQVhBbmNlc3RvckZsYWc6Okhhc0RvY3VtZW50Um9sZUFuY2VzdG9yKSB8fCBtYXRjaGVz
QW5jZXN0b3JGbGFnKEFYQW5jZXN0b3JGbGFnOjpIYXNEb2N1bWVudFJvbGVBbmNlc3RvcikpCiAg
ICAgICAgIGNvbXB1dGVkRmxhZ3Muc2V0KEFYQW5jZXN0b3JGbGFnOjpIYXNEb2N1bWVudFJvbGVB
bmNlc3RvciwgMSk7CiAKQEAgLTE1Niw2ICsxNTksOCBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6Om1hdGNoZXNBbmNlc3RvckZsYWcoQVhBbmNlc3RvckZsYWcgZmxhZykgY29uc3QKIHsKICAg
ICBhdXRvIHJvbGUgPSByb2xlVmFsdWUoKTsKICAgICBzd2l0Y2ggKGZsYWcpIHsKKyAgICBjYXNl
IEFYQW5jZXN0b3JGbGFnOjpIYXNBcmlhQ29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3I6CisgICAg
ICAgIHJldHVybiByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJQYW5lbCAmJiBoYXNBcmlh
Q29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnQoKTsKICAgICBjYXNlIEFYQW5jZXN0b3JGbGFnOjpI
YXNEb2N1bWVudFJvbGVBbmNlc3RvcjoKICAgICAgICAgcmV0dXJuIHJvbGUgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkRvY3VtZW50IHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkdyYXBoaWNz
RG9jdW1lbnQ7CiAgICAgY2FzZSBBWEFuY2VzdG9yRmxhZzo6SGFzV2ViQXBwbGljYXRpb25BbmNl
c3RvcjoKQEAgLTE4Miw2ICsxODcsMTQgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNB
bmNlc3Rvck1hdGNoaW5nRmxhZyhBWEFuY2VzdG9yRmxhZyBmbGFnKSBjb25zdAogICAgIH0pICE9
IG51bGxwdHI7CiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzQXJpYUNvbnRyb2xs
ZWRUYWJQYW5lbEFuY2VzdG9yKCkgY29uc3QKK3sKKyAgICBpZiAoYW5jZXN0b3JGbGFnc0FyZUlu
aXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybiBtX2FuY2VzdG9yRmxhZ3MuY29udGFpbnMoQVhB
bmNlc3RvckZsYWc6Okhhc0FyaWFDb250cm9sbGVkVGFiUGFuZWxBbmNlc3Rvcik7CisKKyAgICBy
ZXR1cm4gaGFzQW5jZXN0b3JNYXRjaGluZ0ZsYWcoQVhBbmNlc3RvckZsYWc6Okhhc0FyaWFDb250
cm9sbGVkVGFiUGFuZWxBbmNlc3Rvcik7Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
aGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IoKSBjb25zdAogewogICAgIGlmIChhbmNlc3RvckZsYWdz
QXJlSW5pdGlhbGl6ZWQoKSkKQEAgLTM3MzMsNyArMzc0Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eU9iamVjdDo6YXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImCiAgICAgfQogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFFbGVtZW50
c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGVsZW1l
bnRzLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0Cit2b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIGVsZW1lbnRzLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGUsIEFSSUFFbGVtZW50U2VhcmNoQmVoYXZpb3Igc2VhcmNoQmVoYXZpb3IpIGNvbnN0CiB7CiAg
ICAgYXV0byBpZCA9IGlkZW50aWZpZXJBdHRyaWJ1dGUoKTsKICAgICBpZiAoaWQuaXNFbXB0eSgp
KQpAQCAtMzc0OCwxMSArMzc2MSwyMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFF
bGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZQogICAgICAg
ICBpZiAoIVNwYWNlU3BsaXRTdHJpbmcoaWRMaXN0LCBmYWxzZSkuY29udGFpbnMoaWQpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4
T2JqZWN0ID0gY2FjaGUtPmdldE9yQ3JlYXRlKCZlbGVtZW50KSkKKyAgICAgICAgaWYgKEFjY2Vz
c2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gY2FjaGUtPmdldE9yQ3JlYXRlKCZlbGVtZW50KSkg
ewogICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKGF4T2JqZWN0KTsKKyAgICAgICAgICAgIGlm
IChzZWFyY2hCZWhhdmlvciA9PSBBUklBRWxlbWVudFNlYXJjaEJlaGF2aW9yOjpTdG9wQXRGaXJz
dCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiB9CiAKK2Jvb2wg
QWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzQXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkgY29uc3QKK3sKKyAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgcmVmZXJlbmNpbmdFbGVtZW50czsKKyAgICBhcmlhRWxlbWVudHNS
ZWZlcmVuY2VkQnlBdHRyaWJ1dGUocmVmZXJlbmNpbmdFbGVtZW50cywgYXR0cmlidXRlLCBBUklB
RWxlbWVudFNlYXJjaEJlaGF2aW9yOjpTdG9wQXRGaXJzdCk7CisgICAgcmV0dXJuICFyZWZlcmVu
Y2luZ0VsZW1lbnRzLmlzRW1wdHkoKTsKK30KKwogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdAogewogICAgIEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250YWluZXJzOwpAQCAtMzc2NSw2ICszNzg4LDE2IEBA
IGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29u
dGFpbmVyKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK0FYQ29yZU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFDb250cm9s
bGVkVGFiUGFuZWxBbmNlc3RvcnMoKSBjb25zdAoreworICAgIEFYQ29yZU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIG1hdGNoaW5nQW5jZXN0b3JzOworICAgIGZvciAoYXV0byog
cGFyZW50ID0gcGFyZW50T2JqZWN0KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRP
YmplY3QoKSkgeworICAgICAgICBpZiAocGFyZW50LT5tYXRjaGVzQW5jZXN0b3JGbGFnKEFYQW5j
ZXN0b3JGbGFnOjpIYXNBcmlhQ29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3IpKQorICAgICAgICAg
ICAgbWF0Y2hpbmdBbmNlc3RvcnMuYXBwZW5kKHBhcmVudCk7CisgICAgfQorICAgIHJldHVybiBt
YXRjaGluZ0FuY2VzdG9yczsKK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhQWN0
aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiBjb250YWluZXJzKSBjb25zdAogewogICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0
dHJpYnV0ZShjb250YWluZXJzLCBhcmlhX2FjdGl2ZWRlc2NlbmRhbnRBdHRyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXgg
NTljZWE0ZjRiMzk3MjdlYWYzZmEzYTlmNzg1ZmU3MjExYTZjZjA0Mi4uN2EzNmViYWNiYmFkZGMy
NzZhOWM3YzQxMTQwODc1NTM1MTZkMDQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTk5LDYgKzk5LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaGFzQW5jZXN0b3JNYXRjaGluZ0ZsYWcoQVhBbmNlc3RvckZsYWcpIGNvbnN0
OwogICAgIGJvb2wgbWF0Y2hlc0FuY2VzdG9yRmxhZyhBWEFuY2VzdG9yRmxhZykgY29uc3Q7CiAK
KyAgICBib29sIGhhc0FyaWFDb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcigpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgaGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBib29sIGhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0b3IoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBib29sIGlzSW5EZXNjcmlwdGlvbkxpc3REZXRhaWwoKSBjb25zdCBvdmVycmlkZTsKQEAgLTI5
OSw3ICszMDAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9m
Rm9jdXNlZENvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgYXJpYUFjdGl2ZURl
c2NlbmRhbnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yIGFyaWFDb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzQXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gaGFzQXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmli
dXRlKEhUTUxOYW1lczo6YXJpYV9jb250cm9sc0F0dHIpOyB9CiAgICAgdm9pZCBhcmlhQ29udHJv
bHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcmlhRGVzY3JpYmVk
QnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtODA2LDcgKzgwOSwxMiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMg
Ym9vbCBpc0FSSUFJbnB1dChBY2Nlc3NpYmlsaXR5Um9sZSk7CiAgICAgdm9pZCBhcmlhRWxlbWVu
dHNGcm9tQXR0cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdDsKLSAgICB2b2lkIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJp
YnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImLCBjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3Q7CisgICAgZW51bSBjbGFzcyBBUklBRWxlbWVudFNlYXJjaEJlaGF2aW9yIDogdWludDhf
dCB7CisgICAgICAgIEZpbmRBbGwsCisgICAgICAgIFN0b3BBdEZpcnN0CisgICAgfTsKKyAgICB2
b2lkIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgQVJJQUVsZW1lbnRTZWFyY2hCZWhhdmlv
ciA9IEFSSUFFbGVtZW50U2VhcmNoQmVoYXZpb3I6OkZpbmRBbGwpIGNvbnN0OworICAgIGJvb2wg
aGFzQXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIEZsb2F0UmVjdCB1bm9ic2N1cmVkQ29udGVudFJlY3QoKSBj
b25zdCBvdmVycmlkZTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByYWRpb0dyb3VwQW5jZXN0
b3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5kZXggMTY3OWYwMWM1MWRmM2Y0Zjky
ODk5Y2RjNzA0YWJmNDhmMzNmZjgwNi4uYmE2YWM4Njc3ZDU5M2Q2YjJlMmQwNDg2ODIwN2I4MmIy
MTlmNDQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTEwMSwxMyArMTAxLDE0IEBAIGVu
dW0gY2xhc3MgQVhBbmNlc3RvckZsYWcgOiB1aW50OF90IHsKICAgICAvLyBXaGVuIHRoZSBmbGFn
cyBhcmVuJ3QgaW5pdGlhbGl6ZWQsIGl0IG1lYW5zIHRoZSBvYmplY3QgaGFzbid0IGJlZW4gaW5z
ZXJ0ZWQgaW50byB0aGUgdHJlZSwKICAgICAvLyBhbmQgdGh1cyB3ZSBoYXZlbid0IHNldCBhbnkg
b2YgdGhlc2UgYW5jZXN0cnkgZmxhZ3MuCiAgICAgRmxhZ3NJbml0aWFsaXplZCA9IDEgPDwgMCwK
LSAgICBIYXNEb2N1bWVudFJvbGVBbmNlc3RvciA9IDEgPDwgMSwKLSAgICBIYXNXZWJBcHBsaWNh
dGlvbkFuY2VzdG9yID0gMSA8PCAyLAotICAgIElzSW5EZXNjcmlwdGlvbkxpc3REZXRhaWwgPSAx
IDw8IDMsCi0gICAgSXNJbkRlc2NyaXB0aW9uTGlzdFRlcm0gPSAxIDw8IDQsCi0gICAgSXNJbkNl
bGwgPSAxIDw8IDUsCi0KLSAgICAvLyBCaXRzIDYgYW5kIDcgYXJlIGZyZWUuCisgICAgSGFzQXJp
YUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yID0gMSA8PCAxLAorICAgIEhhc0RvY3VtZW50Um9s
ZUFuY2VzdG9yID0gMSA8PCAyLAorICAgIEhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0b3IgPSAxIDw8
IDMsCisgICAgSXNJbkRlc2NyaXB0aW9uTGlzdERldGFpbCA9IDEgPDwgNCwKKyAgICBJc0luRGVz
Y3JpcHRpb25MaXN0VGVybSA9IDEgPDwgNSwKKyAgICBJc0luQ2VsbCA9IDEgPDwgNiwKKworICAg
IC8vIEJpdCA3IGlzIGZyZWUuCiB9OwogCiBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlSb2xlIHsK
QEAgLTEwNDksNiArMTA1MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0FSSUFPd25zKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZURlc2NlbmRh
bnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9ycygpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVuY2luZ0Vs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcmlhQ29udHJvbHNSZWZlcmVuY2luZ0Vs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKQEAgLTExMjMs
NiArMTEyNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJy
ZW5QYXJlbnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzRGVzY2VuZGFudE9mUm9s
ZShBY2Nlc3NpYmlsaXR5Um9sZSkgY29uc3QgPSAwOwogCisgICAgdmlydHVhbCBib29sIGhhc0Fy
aWFDb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgaGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29s
IGhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0b3IoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29s
IGlzSW5EZXNjcmlwdGlvbkxpc3REZXRhaWwoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAppbmRleCBjNGUyNmExYjcyMmExODllOGMzMGE2ZWYwNjYwMWFhODc3YmQ2ODlkLi40ZDliNmI0
MWUyMzE5NzNlYWJlODNiMTQ3MWUyMmY4NTNiOWM0ZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
QEAgLTE4NDEsNiArMTg0MSwyNSBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omlz
U2VsZWN0ZWQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorQVhDb3JlT2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29u
dHJvbGxlZFRhYlBhbmVsT2JqZWN0cygpIGNvbnN0Cit7CisgICAgYXV0byogY2FjaGUgPSBheE9i
amVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IFZlY3RvcjxFbGVtZW50Kj4gZWxlbWVudHM7CisgICAgZWxlbWVudHNGcm9tQXR0cmlidXRlKGVs
ZW1lbnRzLCBhcmlhX2NvbnRyb2xzQXR0cik7CisgICAgQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgY29udHJvbGxlZFRhYlBhbmVsczsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGVsZW1lbnQgOiBlbGVtZW50cykgeworICAgICAgICBhdXRvKiB0YWJQYW5lbCA9IGNhY2hl
LT5nZXRPckNyZWF0ZShlbGVtZW50KTsKKyAgICAgICAgaWYgKCF0YWJQYW5lbCB8fCB0YWJQYW5l
bC0+cm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYlBhbmVsKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgY29udHJvbGxlZFRhYlBhbmVscy5hcHBlbmQodGFiUGFu
ZWwpOworICAgIH0KKyAgICByZXR1cm4gY29udHJvbGxlZFRhYlBhbmVsczsKK30KKwogYm9vbCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1RhYkl0ZW1TZWxlY3RlZCgpIGNvbnN0CiB7CiAg
ICAgaWYgKCFpc1RhYkl0ZW0oKSB8fCAhbV9yZW5kZXJlcikKQEAgLTE4NTcsMjkgKzE4NzYsMjAg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1RhYkl0ZW1TZWxlY3RlZCgpIGNv
bnN0CiAgICAgaWYgKCFmb2N1c2VkRWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IAotICAgIFZlY3RvcjxFbGVtZW50Kj4gZWxlbWVudHM7Ci0gICAgZWxlbWVudHNGcm9tQXR0cmli
dXRlKGVsZW1lbnRzLCBhcmlhX2NvbnRyb2xzQXR0cik7CisgICAgYXV0byBjb250cm9sbGVkVGFi
UGFuZWxzID0gY29udHJvbGxlZFRhYlBhbmVsT2JqZWN0cygpOworICAgIGlmIChjb250cm9sbGVk
VGFiUGFuZWxzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIEFY
T2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwotICAgIGlmICghY2FjaGUpCisg
ICAgYXV0byBjb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnNPZkZvY3VzID0gZm9jdXNlZEVsZW1l
bnQtPmFyaWFDb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMoKTsKKyAgICBpZiAoY29udHJvbGxl
ZFRhYlBhbmVsQW5jZXN0b3JzT2ZGb2N1cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50cykgewotICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0YWJQYW5lbCA9IGNhY2hlLT5nZXRPckNyZWF0ZShl
bGVtZW50KTsKLQotICAgICAgICAvLyBBIHRhYiBpdGVtIHNob3VsZCBvbmx5IGNvbnRyb2wgdGFi
IHBhbmVscy4KLSAgICAgICAgaWYgKCF0YWJQYW5lbCB8fCB0YWJQYW5lbC0+cm9sZVZhbHVlKCkg
IT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYlBhbmVsKQotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIAotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGVja0ZvY3VzRWxlbWVudCA9
IGZvY3VzZWRFbGVtZW50OwotICAgICAgICAvLyBDaGVjayBpZiB0aGUgZm9jdXNlZCBlbGVtZW50
IGlzIGEgZGVzY2VuZGFudCBvZiB0aGUgZWxlbWVudCBjb250cm9sbGVkIGJ5IHRoZSB0YWIgaXRl
bS4KLSAgICAgICAgd2hpbGUgKGNoZWNrRm9jdXNFbGVtZW50KSB7Ci0gICAgICAgICAgICBpZiAo
dGFiUGFuZWwgPT0gY2hlY2tGb2N1c0VsZW1lbnQpCisgICAgZm9yIChhdXRvIGNvbnRyb2xsZWRU
YWJQYW5lbCA6IGNvbnRyb2xsZWRUYWJQYW5lbHMpIHsKKyAgICAgICAgZm9yIChhdXRvIGZvY3Vz
VGFiUGFuZWxBbmNlc3RvciA6IGNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yc09mRm9jdXMpIHsK
KyAgICAgICAgICAgIGlmIChmb2N1c1RhYlBhbmVsQW5jZXN0b3IuZ2V0KCkgPT0gY29udHJvbGxl
ZFRhYlBhbmVsKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgY2hl
Y2tGb2N1c0VsZW1lbnQgPSBjaGVja0ZvY3VzRWxlbWVudC0+cGFyZW50T2JqZWN0KCk7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaAppbmRleCA3Yjk0YjYzNDFhODgwYmI1ZDI4MjAxYjc3Yjg1MWJlNWQ0MmFjYzk3Li40YTM4
MjhhYTBiMjYzNjkzNGIzODNiYTIxYTU5MDE1MTg5YmQxNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaApA
QCAtMjIxLDYgKzIyMSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBib29sIGlzQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29udHJvbGxlZFRhYlBhbmVsT2JqZWN0cygp
IGNvbnN0OwogICAgIHZvaWQgYXJpYUxpc3Rib3hTZWxlY3RlZENoaWxkcmVuKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpOwogICAgIHZvaWQgYXJpYUxpc3Rib3hWaXNpYmxlQ2hpbGRyZW4o
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CiAgICAgYm9vbCBpc0FsbG93ZWRDaGlsZE9m
VHJlZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRl
eCA5ODkzNDFhZmMyMTJlNTQ4ZmUyYmRhYTZhY2M4OWM5YzY5ZDRkY2NmLi5kNDFlZDI2ZWRkMmQw
YmE5NDcxOTc2Y2RhNGI1OTgxNDU0NjEzNDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcklPUy5tbQpAQCAtNTE3LDYgKzUxNywxNCBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIqIEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5
TwogICAgIHJldHVybiBzZWxmLmF4QmFja2luZ09iamVjdC0+cG9wdXBWYWx1ZSgpOwogfQogCist
IChCT09MKWFjY2Vzc2liaWxpdHlIYXNBcmlhQ29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3IKK3sK
KyAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQorICAgICAgICByZXR1
cm4gTk87CisKKyAgICByZXR1cm4gc2VsZi5heEJhY2tpbmdPYmplY3QtPmhhc0FyaWFDb250cm9s
bGVkVGFiUGFuZWxBbmNlc3RvcigpOworfQorCiAtIChCT09MKWFjY2Vzc2liaWxpdHlIYXNEb2N1
bWVudFJvbGVBbmNlc3RvcgogewogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5
Q2FsbF0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IDM2OTUyZjk0MDhmYjU5ZTJi
YzU5MmI3YjVlOGYxYmIyNWI1YjA4MWUuLjFlNjhhMTdmMzlkN2JmZDcyMTFkNzAzM2ZjODNmN2Zk
MjdkN2UyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0zMzQsNiArMzM0LDE1
IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoQVhDb3Jl
T2JqZWN0JiBjb3JlT2JqZWN0LCBib29sIGlzCiAgICAgb2JqZWN0LmFyaWFDb250cm9sc0VsZW1l
bnRzKGFyaWFDb250cm9sc0VsZW1lbnRzKTsKICAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6QVJJQUNvbnRyb2xzRWxlbWVudHMsIGFyaWFDb250cm9sc0VsZW1lbnRz
KTsKIAorICAgIGlmIChvYmplY3Qucm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRh
YlBhbmVsKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhQ29udHJv
bHNSZWZlcmVuY2luZ0VsZW1lbnRzOworICAgICAgICBvYmplY3QuYXJpYUNvbnRyb2xzUmVmZXJl
bmNpbmdFbGVtZW50cyhhcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKTsKKyAgICAgICAg
aWYgKCFhcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBQ29udHJvbHNS
ZWZlcmVuY2luZ0VsZW1lbnRzLCBhcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKTsKKyAg
ICB9CisgICAgaWYgKG9iamVjdC5oYXNBcmlhQ29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3IoKSkK
KyAgICAgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFDb250
cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMsIG9iamVjdC5hcmlhQ29udHJvbGxlZFRhYlBhbmVsQW5j
ZXN0b3JzKCkpOworCiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFEZXRhaWxz
RWxlbWVudHM7CiAgICAgb2JqZWN0LmFyaWFEZXRhaWxzRWxlbWVudHMoYXJpYURldGFpbHNFbGVt
ZW50cyk7CiAgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFE
ZXRhaWxzRWxlbWVudHMsIGFyaWFEZXRhaWxzRWxlbWVudHMpOwpAQCAtMTgyNywxMSArMTgzNiw2
IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVuY2lu
Z0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAotewotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotfQotCiB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFEZXNjcmliZWRCeUVs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0CiB7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKaW5kZXggYmE2M2RjMjcyMWQy
OGE4NjBiODczZjI4MzdmZTZjNDgyMTI3ODNlMS4uMDY4NDY3MzU2NTc4ZWFhMTY1M2RjMGNjMWI2
NjFlOWMyMGY5MDdkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaApAQCAtMjIzLDggKzIyMywx
MCBAQCBwcml2YXRlOgogICAgIGludCBsYXlvdXRDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpMYXlvdXRDb3VudCk7IH0KICAg
ICBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZG91YmxlQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkVzdGltYXRlZExvYWRpbmdQ
cm9ncmVzcyk7IH0KICAgICBib29sIHN1cHBvcnRzQVJJQU93bnMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzQVJJQU93
bnMpOyB9CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFDb250cm9sbGVkVGFi
UGFuZWxBbmNlc3RvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cmVlKCktPm9iamVjdHNG
b3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OkFSSUFDb250
cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMpKTsgfQogICAgIGJvb2wgaXNBY3RpdmVEZXNjZW5kYW50
T2ZGb2N1c2VkQ29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWlu
ZXIpOyB9CiAgICAgdm9pZCBhcmlhQ29udHJvbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImIGNoaWxkcmVuKSBjb25zdCBvdmVycmlkZSB7IGZpbGxDaGlsZHJlblZlY3RvckZv
clByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBQ29udHJvbHNFbGVtZW50cywgY2hpbGRyZW4p
OyB9CisgICAgdm9pZCBhcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVu
VmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFDb250cm9sc1JlZmVyZW5jaW5n
RWxlbWVudHMsIGNoaWxkcmVuKTsgfQogICAgIHZvaWQgYXJpYURldGFpbHNFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBjb25zdCBvdmVycmlkZSB7IGZpbGxD
aGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBRGV0YWlsc0VsZW1l
bnRzLCBjaGlsZHJlbik7IH0KICAgICB2b2lkIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBjb25zdCBvdmVycmlkZSB7IGZpbGxD
aGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBRXJyb3JNZXNzYWdl
RWxlbWVudHMsIGNoaWxkcmVuKTsgfQogICAgIHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmlsbENo
aWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFGbG93VG9FbGVtZW50
cywgY2hpbGRyZW4pOyB9CkBAIC01MzgsNyArNTQwLDYgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBz
dGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFYQ29yZU9iamVjdCogc2Vs
ZWN0ZWRMaXN0SXRlbSgpIG92ZXJyaWRlOwogICAgIHZvaWQgYXJpYUFjdGl2ZURlc2NlbmRhbnRS
ZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZvaWQgYXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGFyaWFEZXNj
cmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGFyaWFEZXRh
aWxzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dCBvdmVycmlkZTsKQEAgLTYyMSw2ICs2MjIsNyBAQCBwcml2YXRlOgogCiAgICAgT3B0aW9uU2V0
PEFYQW5jZXN0b3JGbGFnPiBhbmNlc3RvckZsYWdzKCkgY29uc3Q7CiAKKyAgICBib29sIGhhc0Fy
aWFDb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGFu
Y2VzdG9yRmxhZ3MoKS5jb250YWlucyhBWEFuY2VzdG9yRmxhZzo6SGFzQXJpYUNvbnRyb2xsZWRU
YWJQYW5lbEFuY2VzdG9yKTsgfQogICAgIGJvb2wgaGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBhbmNlc3RvckZsYWdzKCkuY29udGFpbnMoQVhBbmNlc3Rv
ckZsYWc6Okhhc0RvY3VtZW50Um9sZUFuY2VzdG9yKTsgfQogICAgIGJvb2wgaGFzV2ViQXBwbGlj
YXRpb25BbmNlc3RvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGFuY2VzdG9yRmxhZ3MoKS5j
b250YWlucyhBWEFuY2VzdG9yRmxhZzo6SGFzV2ViQXBwbGljYXRpb25BbmNlc3Rvcik7IH0KICAg
ICBib29sIGlzSW5EZXNjcmlwdGlvbkxpc3REZXRhaWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBhbmNlc3RvckZsYWdzKCkuY29udGFpbnMoQVhBbmNlc3RvckZsYWc6OklzSW5EZXNjcmlwdGlv
bkxpc3REZXRhaWwpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXggYmVhY2VjNThlNmVh
YmZlYzAxM2NkMjM0ZjZiZjQ1YTc0ZGI4NjI0Ny4uNGM4ZjlmNmIyODRhZDc5MzhmNzdmOTc3ODI0
Njc5Y2Y1MDg2YmM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtOTgsMTQgKzk4LDEy
IEBAIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZShBWE9iamVjdENh
Y2hlKiBheE9iamVjdENhY2hlKQogICAgIGF1dG8gdHJlZSA9IGFkb3B0UmVmKCpuZXcgQVhJc29s
YXRlZFRyZWUoYXhPYmplY3RDYWNoZSkpOwogCiAgICAgLy8gR2VuZXJhdGUgdGhlIG5vZGVzIG9m
IHRoZSB0cmVlIGFuZCBzZXQgaXRzIHJvb3QgYW5kIGZvY3VzZWQgb2JqZWN0cy4KLSAgICAvLyBG
b3IgdGhpcywgd2UgbmVlZCB0aGUgcm9vdCBhbmQgZm9jdXNlZCBvYmplY3RzIG9mIHRoZSBBWE9i
amVjdCB0cmVlLgorICAgIC8vIEZvciB0aGlzLCB3ZSBuZWVkIHRoZSByb290IGFuZCBmb2N1c2Vk
IG9iamVjdCBvZiB0aGUgQVhPYmplY3QgdHJlZS4KICAgICBhdXRvKiBheFJvb3QgPSBheE9iamVj
dENhY2hlLT5nZXRPckNyZWF0ZShheE9iamVjdENhY2hlLT5kb2N1bWVudCgpLnZpZXcoKSk7CiAg
ICAgaWYgKGF4Um9vdCkKICAgICAgICAgdHJlZS0+Z2VuZXJhdGVTdWJ0cmVlKCpheFJvb3QsIG51
bGxwdHIsIHRydWUpOwotICAgIGF1dG8qIGF4Rm9jdXMgPSBheE9iamVjdENhY2hlLT5mb2N1c2Vk
T2JqZWN0Rm9yUGFnZShheE9iamVjdENhY2hlLT5kb2N1bWVudCgpLnBhZ2UoKSk7Ci0gICAgaWYg
KGF4Rm9jdXMpCi0gICAgICAgIHRyZWUtPnNldEZvY3VzZWROb2RlSUQoYXhGb2N1cy0+b2JqZWN0
SUQoKSk7CiAKKyAgICB0cmVlLT5zZXRGb2N1c2VkTm9kZShheE9iamVjdENhY2hlLT5mb2N1c2Vk
T2JqZWN0Rm9yUGFnZShheE9iamVjdENhY2hlLT5kb2N1bWVudCgpLnBhZ2UoKSkpOwogICAgIC8v
IE5vdyB0aGF0IHRoZSB0cmVlIGlzIHJlYWR5IHRvIHRha2UgY2xpZW50IHJlcXVlc3RzLCBhZGQg
aXQgdG8gdGhlIHRyZWUKICAgICAvLyBtYXBzIHNvIHRoYXQgaXQgY2FuIGJlIGZvdW5kLgogICAg
IGF1dG8gcGFnZUlEID0gYXhPYmplY3RDYWNoZS0+cGFnZUlEKCk7CkBAIC0yNTcsMjMgKzI1NSwz
MiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydHkoY29uc3QgQVhDb3Jl
T2JqZWN0JiBheE9iamVjdCwgQVhQcm9wZXJ0eQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRU
cmVlOjp1cGRhdGVOb2RlUHJvcGVydHkiKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKKyAgICB1cGRhdGVOb2RlUHJv
cGVydHlMb2NrZWQoYXhPYmplY3QsIHByb3BlcnR5KTsKK30KKwordm9pZCBBWElzb2xhdGVkVHJl
ZTo6dXBkYXRlTm9kZVByb3BlcnR5TG9ja2VkKGNvbnN0IEFYQ29yZU9iamVjdCYgYXhPYmplY3Qs
IEFYUHJvcGVydHlOYW1lIHByb3BlcnR5KQoreworICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVl
Ojp1cGRhdGVOb2RlUHJvcGVydHlMb2NrZWQiKTsKIAogICAgIEFYUHJvcGVydHlNYXAgcHJvcGVy
dHlNYXA7CiAgICAgc3dpdGNoIChwcm9wZXJ0eSkgeworICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6
OklkZW50aWZpZXJBdHRyaWJ1dGU6CisgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5
TmFtZTo6SWRlbnRpZmllckF0dHJpYnV0ZSwgYXhPYmplY3QuaWRlbnRpZmllckF0dHJpYnV0ZSgp
Lmlzb2xhdGVkQ29weSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFByb3BlcnR5TmFt
ZTo6SXNDaGVja2VkOgogICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6Oklz
Q2hlY2tlZCwgYXhPYmplY3QuaXNDaGVja2VkKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IEFYUHJvcGVydHlOYW1lOjpJc1NlbGVjdGVkOgorICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQ
cm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWQsIGF4T2JqZWN0LmlzU2VsZWN0ZWQoKSk7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlNvcnREaXJlY3Rpb246CiAgICAgICAg
IHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6U29ydERpcmVjdGlvbiwgc3RhdGljX2Nh
c3Q8aW50PihheE9iamVjdC5zb3J0RGlyZWN0aW9uKCkpKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBBWFByb3BlcnR5TmFtZTo6SWRlbnRpZmllckF0dHJpYnV0ZToKLSAgICAgICAgcHJvcGVy
dHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpJZGVudGlmaWVyQXR0cmlidXRlLCBheE9iamVjdC5p
ZGVudGlmaWVyQXR0cmlidXRlKCkuaXNvbGF0ZWRDb3B5KCkpOwotICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTG9ja2VyIGxvY2tlciB7
IG1fY2hhbmdlTG9nTG9jayB9OwogICAgIG1fcGVuZGluZ1Byb3BlcnR5Q2hhbmdlcy5hcHBlbmQo
eyBheE9iamVjdC5vYmplY3RJRCgpLCBwcm9wZXJ0eU1hcCB9KTsKIH0KIApAQCAtMzg5LDE4ICsz
OTYsMzYgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6c2V0Um9vdE5vZGUoQVhJc29sYXRlZE9iamVj
dCogcm9vdCkKICAgICBtX3Jvb3ROb2RlID0gcm9vdDsKIH0KIAotdm9pZCBBWElzb2xhdGVkVHJl
ZTo6c2V0Rm9jdXNlZE5vZGVJRChBWElEIGF4SUQpCit2b2lkIEFYSXNvbGF0ZWRUcmVlOjpzZXRG
b2N1c2VkTm9kZShBWENvcmVPYmplY3QqIGF4T2JqZWN0KQogewotICAgIEFYVFJBQ0UoIkFYSXNv
bGF0ZWRUcmVlOjpzZXRGb2N1c2VkTm9kZUlEIik7CisgICAgQVhJRCBheElEID0gYXhPYmplY3Qg
PyBheE9iamVjdC0+b2JqZWN0SUQoKSA6IEFYSUQoKTsKKyAgICBBWFRSQUNFKCJBWElzb2xhdGVk
VHJlZTo6c2V0Rm9jdXNlZE5vZGUiKTsKICAgICBBWExPRyhtYWtlU3RyaW5nKCJheElEICIsIGF4
SUQubG9nZ2luZ1N0cmluZygpKSk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAg
IExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKLSAgICBtX3BlbmRpbmdGb2N1c2Vk
Tm9kZUlEID0gYXhJRDsKLQogICAgIEFYUHJvcGVydHlNYXAgcHJvcGVydHlNYXA7CiAgICAgcHJv
cGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpJc0ZvY3VzZWQsIHRydWUpOworCisgICAgTG9j
a2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAgIG1fcGVuZGluZ1Byb3BlcnR5Q2hh
bmdlcy5hcHBlbmQoeyBheElELCBwcm9wZXJ0eU1hcCB9KTsKKyAgICBtX3BlbmRpbmdGb2N1c2Vk
Tm9kZUlEID0gYXhJRDsKKyAgICBoYW5kbGVGb2N1c0NoYW5nZShheE9iamVjdCk7Cit9CisKKy8v
IFJlLWNvbXB1dGUgcHJvcGVydGllcyBkZXBlbmRlbnQgb24gdGhlIGZvY3VzIHN0YXRlIG9mIHRo
ZSBnaXZlbiBvYmplY3QuCit2b2lkIEFYSXNvbGF0ZWRUcmVlOjpoYW5kbGVGb2N1c0NoYW5nZShB
WENvcmVPYmplY3QqIGF4T2JqZWN0KQoreworICAgIGlmICghYXhPYmplY3QpCisgICAgICAgIHJl
dHVybjsKKworICAgIGZvciAoYXV0byBjb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvciA6IGF4T2Jq
ZWN0LT5hcmlhQ29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3JzKCkpIHsKKyAgICAgICAgaWYgKGNv
bnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yKSB7CisgICAgICAgICAgICBBWENvcmVPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250cm9sbGVyczsKKyAgICAgICAgICAgIGNvbnRy
b2xsZWRUYWJQYW5lbEFuY2VzdG9yLT5hcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKGNv
bnRyb2xsZXJzKTsKKyAgICAgICAgICAgIGZvciAoYXV0byBjb250cm9sbGVyIDogY29udHJvbGxl
cnMpCisgICAgICAgICAgICAgICAgdXBkYXRlTm9kZVByb3BlcnR5TG9ja2VkKCpjb250cm9sbGVy
LCBBWFByb3BlcnR5TmFtZTo6SXNTZWxlY3RlZCk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHZv
aWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZU5vZGUoQVhJRCBheElEKQpAQCAtNDU2LDYgKzQ4MSw4
IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMoKQogICAgICAgICAg
ICAgQVhQcm9wZXJ0eU1hcCBwcm9wZXJ0eU1hcDsKICAgICAgICAgICAgIHByb3BlcnR5TWFwLnNl
dChBWFByb3BlcnR5TmFtZTo6SXNGb2N1c2VkLCBmYWxzZSk7CiAgICAgICAgICAgICBtX3BlbmRp
bmdQcm9wZXJ0eUNoYW5nZXMuYXBwZW5kKHsgbV9mb2N1c2VkTm9kZUlELCBwcm9wZXJ0eU1hcCB9
KTsKKworICAgICAgICAgICAgaGFuZGxlRm9jdXNDaGFuZ2Uobm9kZUZvcklEKG1fZm9jdXNlZE5v
ZGVJRCkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIG1fZm9jdXNlZE5vZGVJRCA9IG1fcGVu
ZGluZ0ZvY3VzZWROb2RlSUQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5kZXggMjVjZGNj
ODllZmZhYjQzMWQ4OTU1MTI5Y2RkZDIzZGZhZDcxMGRhYi4uMjVlMTIxZTMwYjJkYjRkZWM4OTlh
MDJjZTRlYzIyNWYwZTk3MzRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC00OCw3ICs0OCw5
IEBAIGNsYXNzIFBhZ2U7CiB1c2luZyBBWElzb2xhdGVkVHJlZUlEID0gdW5zaWduZWQ7CiAKIGVu
dW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CisgICAgQVJJQUNvbnRyb2xsZWRU
YWJQYW5lbEFuY2VzdG9ycywKICAgICBBUklBQ29udHJvbHNFbGVtZW50cywKKyAgICBBUklBQ29u
dHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzLAogICAgIEFSSUFEZXRhaWxzRWxlbWVudHMsCiAgICAg
RHJvcEVmZmVjdHMsCiAgICAgQVJJQUVycm9yTWVzc2FnZUVsZW1lbnRzLApAQCAtMzY2LDExICsz
NjgsMTAgQEAgcHVibGljOgogICAgIC8vIFJlbW92ZXMgdGhlIGdpdmVuIG5vZGUgYW5kIGFsbCBp
dHMgZGVzY2VuZGFudHMuCiAgICAgdm9pZCByZW1vdmVTdWJ0cmVlKEFYSUQpOwogCi0gICAgLy8g
Qm90aCBzZXRSb290Tm9kZUlEIGFuZCBzZXRGb2N1c2VkTm9kZUlEIGFyZSBjYWxsZWQgZHVyaW5n
IHRoZSBnZW5lcmF0aW9uCi0gICAgLy8gb2YgdGhlIElzb2xhdGVkVHJlZS4KLSAgICAvLyBGb2N1
c2VkIG5vZGUgdXBkYXRlcyBpbiBBWE9iamVjdENhY2hlIHVzZSBzZXRGb2N1c05vZGVJRC4KKyAg
ICAvLyBCb3RoIHNldFJvb3ROb2RlSUQgYW5kIHNldEZvY3VzZWROb2RlIGFyZSBjYWxsZWQgZHVy
aW5nIGdlbmVyYXRpb24gb2YgdGhlIElzb2xhdGVkVHJlZS4KKyAgICAvLyBGb2N1c2VkIG5vZGUg
dXBkYXRlcyBpbiBBWE9iamVjdENhY2hlIHVzZSBzZXRGb2N1c2VkTm9kZS4KICAgICB2b2lkIHNl
dFJvb3ROb2RlKEFYSXNvbGF0ZWRPYmplY3QqKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2NoYW5nZUxv
Z0xvY2spOwotICAgIHZvaWQgc2V0Rm9jdXNlZE5vZGVJRChBWElEKTsKKyAgICB2b2lkIHNldEZv
Y3VzZWROb2RlKEFYQ29yZU9iamVjdCopOwogCiAgICAgLy8gQ2FsbGVkIG9uIEFYIHRocmVhZCBm
cm9tIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIG1ldGhvZHMuCiAgICAgLy8gRHVyaW5n
IGxheW91dCB0ZXN0cywgaXQgaXMgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KQEAgLTM5MSw2
ICszOTIsOSBAQCBwcml2YXRlOgogICAgIC8vIENhbGxlZCBvbiBtYWluIHRocmVhZCB0byB1cGRh
dGUgYm90aCBtX25vZGVNYXAgYW5kIG1fcGVuZGluZ0NoaWxkcmVuVXBkYXRlcy4KICAgICB2b2lk
IHVwZGF0ZUNoaWxkcmVuSURzKEFYSUQgcGFyZW50SUQsIFZlY3RvcjxBWElEPiYmIGNoaWxkcmVu
SURzKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOwogCisgICAgdm9pZCB1cGRh
dGVOb2RlUHJvcGVydHlMb2NrZWQoY29uc3QgQVhDb3JlT2JqZWN0JiwgQVhQcm9wZXJ0eU5hbWUp
IFdURl9SRVFVSVJFU19MT0NLKG1fY2hhbmdlTG9nTG9jayk7CisgICAgdm9pZCBoYW5kbGVGb2N1
c0NoYW5nZShBWENvcmVPYmplY3QqKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2NoYW5nZUxvZ0xvY2sp
OworCiAgICAgQVhJc29sYXRlZFRyZWVJRCBtX3RyZWVJRDsKICAgICBBWE9iamVjdENhY2hlKiBt
X2F4T2JqZWN0Q2FjaGUgeyBudWxscHRyIH07CiAgICAgYm9vbCBtX3VzZWRPbkFYVGhyZWFkIHsg
dHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCBkNjk0
MWY4MmYxMjI5OTg5ZjllZTM0MDQwOTEyN2I0MTdkNDRiMzM0Li4xNTRmOTYwZDA2MWIxODc2ZTNm
YjU2NjQ4ZTcxNzdhYmFkZDY2OGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQpAQCAtMjgzMiw2ICsyODMyLDkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYSXNB
Y3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyIl0pCiAgICAgICAgIHJldHVybiBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6YmFja2luZ09iamVjdC0+aXNBY3RpdmVEZXNjZW5kYW50T2ZG
b2N1c2VkQ29udGFpbmVyKCldOwogCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpAIkFYSGFzQXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yIl0pCisgICAgICAgIHJl
dHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YmFja2luZ09iamVjdC0+aGFzQXJpYUNvbnRy
b2xsZWRUYWJQYW5lbEFuY2VzdG9yKCldOworCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpBWEhhc0RvY3VtZW50Um9sZUFuY2VzdG9yQXR0cmlidXRlXSkKICAgICAgICAg
cmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpiYWNraW5nT2JqZWN0LT5oYXNEb2N1bWVu
dFJvbGVBbmNlc3RvcigpXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGU2NGFmMjQ5OWJiYjEzNjNjM2ZmYTNjZGRmOTgyYzNiMDliZDdmMzQu
LjMwMTRmYWZiNWQ5MjBmYmZjMmM1MTI3MDZhNmQ5OTg3N2I2OGUzMTMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NiBAQAorMjAy
MS0xMS0yOSAgVHlsZXIgV2lsY29jayAgPHR5bGVyX3dAYXBwbGUuY29tPgorCisgICAgICAgIEFY
IElzb2xhdGVkIFRyZWU6IFdoZW4gZm9jdXMgY2hhbmdlcywgdXBkYXRlIEFYUHJvcGVydHlOYW1l
OjpJc1NlbGVjdGVkIGZvciBhbnkgYXJpYS1jb250cm9scyBjb250cm9sbGVycyBvZiB0YWIgcGFu
ZWwgYW5jZXN0b3Igb2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzNTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNUYWJJdGVtU2VsZWN0ZWQg
aXMgZGVwZW5kZW50IG9uIG9iamVjdCBmb2N1cyBzdGF0ZSwKKyAgICAgICAgc28gaXNvbGF0ZWQg
dHJlZSBuZWVkcyB0byByZS1jb21wdXRlIEFYUHJvcGVydHlOYW1lOjpJc1NlbGVjdGVkIHdoZW5l
dmVyIGZvY3VzIGNoYW5nZXMuCisKKyAgICAgICAgU3BlY2lmaWNhbGx5LCB3ZSBuZWVkIHRvIHJl
LWNvbXB1dGUgdGhpcyBwcm9wZXJ0eSBmb3IgdGhlCisgICAgICAgIGFyaWEtY29udHJvbHMgY29u
dHJvbGxlcnMgb2YgdGFiIHBhbmVsIGFuY2VzdG9ycyBvZiB0aGUgb2JqZWN0IHRoYXQKKyAgICAg
ICAgY2hhbmdlZCBmb2N1cy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAoaGFzQXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2Vz
dG9yQ2FsbGJhY2spOiBBZGRlZC4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omdl
dEpTQ2xhc3MpOiBIYW5kbGUgaGFzQXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yLgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzQXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFu
Y2VzdG9yIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpib29sQXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICBBZGRlZCBhcyBhIGNvbnZlbmll
bmNlIGZ1bmN0aW9uIHRha2luZyBOU1N0cmluZyogaW5zdGVhZCBvZiBKU1N0cmluZ1JlZi4gCisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUpOgorICAg
ICAgICBDYWxsIG5ldyBOU1N0cmluZyogYm9vbEF0dHJpYnV0ZVZhbHVlIGZ1bmN0aW9uLgorCisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VuYWJsZWQpOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNSZXF1aXJlZCBjb25zdCk6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQgY29uc3QpOgorICAgICAgICAoQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNTZWxlY3RlZCBjb25zdCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojppc0V4cGFuZGVkIGNvbnN0KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFyaWFJc0dyYWJiZWQgY29uc3QpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNPblNjcmVlbiBjb25zdCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpo
YXNQb3B1cCBjb25zdCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNBcmlh
Q29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3IgY29uc3QpOgorICAgICAgICAoQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IgY29uc3QpOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzV2ViQXBwbGljYXRpb25BbmNlc3RvciBjb25zdCk6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luRGVzY3JpcHRpb25MaXN0RGV0YWls
IGNvbnN0KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5EZXNjcmlwdGlv
bkxpc3RUZXJtIGNvbnN0KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5D
ZWxsIGNvbnN0KToKKyAgICAgICAgUmVmYWN0b3IgdG8gdXNlIG5ldyBOU1N0cmluZyogYm9vbEF0
dHJpYnV0ZVZhbHVlLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aGFzQXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yIGNvbnN0KTogQWRk
ZWQuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsOgorICAgICAgICBBZGQgaGFz
QXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yIGF0dHJpYnV0ZS4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJ
T1MubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc0FyaWFDb250
cm9sbGVkVGFiUGFuZWxBbmNlc3RvciBjb25zdCk6IEFkZGVkLgorCisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5t
bToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym9vbEF0dHJpYnV0ZVZh
bHVlIGNvbnN0KToKKyAgICAgICAgQWRkZWQgYXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0YWtp
bmcgTlNTdHJpbmcqIGluc3RlYWQgb2YgSlNTdHJpbmdSZWYuIAorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUpOgorICAgICAgICBDYWxsIG5l
dyBOU1N0cmluZyogYm9vbEF0dHJpYnV0ZVZhbHVlIGZ1bmN0aW9uLgorCisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRW5hYmxlZCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFuZGVkIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJlZCBjb25zdCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwIGNvbnN0KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzQXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9y
IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzRG9jdW1l
bnRSb2xlQW5jZXN0b3IgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpoYXNXZWJBcHBsaWNhdGlvbkFuY2VzdG9yIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbkRlc2NyaXB0aW9uTGlzdERldGFpbCBjb25zdCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5EZXNjcmlwdGlvbkxpc3RU
ZXJtIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbkNl
bGwgY29uc3QpOgorICAgICAgICBSZWZhY3RvciB0byB1c2UgbmV3IE5TU3RyaW5nKiBib29sQXR0
cmlidXRlVmFsdWUuCisKIDIwMjEtMTEtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIFNpZ25hbCBzdGF0ZS1jaGFuZ2Vk
OnNlbGVjdGVkIGlzIG5vdCBlbWl0dGVkIGZvciBsaXN0Ym94IGVsZW1lbnRzIHdoZW4gYnVpbGRp
bmcgd2l0aCBBVFNQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmNwcAppbmRleCBjMzI5ZjAwY2NkYWI3NGVhNjdlN2JmOGM4NDllZjBlODFkMzViZGQ5
Li41MTRkMGViMmQ4MzBjNWMzY2YzMjRmOGRkZTk1YjkyMDRlOGVkN2M5IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApAQCAtMTQ3Myw2ICsx
NDczLDExIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGdldFVSTENhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
U3RyaW5nKGNvbnRleHQsIHVybC5nZXQoKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGhhc0Fy
aWFDb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCit7Cisg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2Jq
ZWN0KS0+aGFzQXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yKCkpOworfQorCiBzdGF0aWMg
SlNWYWx1ZVJlZiBoYXNEb2N1bWVudFJvbGVBbmNlc3RvckNhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiop
CiB7CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0b0FYRWxlbWVudCh0
aGlzT2JqZWN0KS0+aGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IoKSk7CkBAIC0xOTU5LDYgKzE5NjQs
NyBAQCBKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTQ2xhc3MoKQogICAg
ICAgICB7ICJ2ZXJ0aWNhbFNjcm9sbGJhciIsIHZlcnRpY2FsU2Nyb2xsYmFyQ2FsbGJhY2ssIDAs
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAic3RhcnRUZXh0TWFya2VyIiwgc3RhcnRUZXh0TWFya2VyQ2Fs
bGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZW5kVGV4dE1hcmtlciIsIGVuZFRleHRNYXJr
ZXJDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJoYXNBcmlhQ29udHJvbGxlZFRhYlBh
bmVsQW5jZXN0b3IiLCBoYXNBcmlhQ29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3JDYWxsYmFjaywg
MCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJoYXNEb2N1bWVudFJvbGVBbmNlc3RvciIsIGhhc0RvY3Vt
ZW50Um9sZUFuY2VzdG9yQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaGFzV2ViQXBw
bGljYXRpb25BbmNlc3RvciIsIGhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0b3JDYWxsYmFjaywgMCwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJpc0luRGVzY3JpcHRpb25MaXN0RGV0YWlsIiwgaXNJbkRlc2Ny
aXB0aW9uTGlzdERldGFpbENhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggMWRiZjEyNDIyNzUzZTBiNzY1YzE3
MmYzODAyZjQzN2Q2M2YwNmUzNi4uNGZjMzcwZWQwN2I5MGYyYzQxMWU0YjY5NTM2ZTFkN2ZjNTRl
MDdkOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aApAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBQTEFURk9STShNQUMpCitPQkpDX0NMQVNTIE5TU3RyaW5n
OworI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAjZWxpZiBQTEFURk9STShXSU4pCkBAIC03Myw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGdldENoaWxkcmVuKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYpOwogICAgIHZv
aWQgZ2V0Q2hpbGRyZW5XaXRoUmFuZ2UoVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Jiwg
dW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CiAKKyAgICBib29sIGhhc0FyaWFD
b250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcigpIGNvbnN0OwogICAgIGJvb2wgaGFzRG9jdW1lbnRS
b2xlQW5jZXN0b3IoKSBjb25zdDsKICAgICBib29sIGhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0b3Io
KSBjb25zdDsKICAgICBib29sIGlzSW5EZXNjcmlwdGlvbkxpc3REZXRhaWwoKSBjb25zdDsKQEAg
LTEwOSw4ICsxMTQsMTEgQEAgcHVibGljOgogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBz
dHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwogICAgIGRvdWJsZSBu
dW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwogICAgIHZvaWQgdWlF
bGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFZlY3RvcjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYgZWxlbWVudHMpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQgdWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRl
KSBjb25zdDsgICAgCisgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB1aUVsZW1lbnRBdHRyaWJ1
dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0OwogICAgIGJvb2wgYm9vbEF0dHJp
YnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7CisjaWYgUExBVEZPUk0oTUFDKQorICAg
IGJvb2wgYm9vbEF0dHJpYnV0ZVZhbHVlKE5TU3RyaW5nICphdHRyaWJ1dGUpIGNvbnN0OworI2Vu
ZGlmCiAgICAgdm9pZCBzZXRCb29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRl
LCBib29sIHZhbHVlKTsKICAgICBib29sIGlzQXR0cmlidXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVm
IGF0dHJpYnV0ZSk7CiAgICAgYm9vbCBpc0F0dHJpYnV0ZVNldHRhYmxlKEpTU3RyaW5nUmVmIGF0
dHJpYnV0ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudElPUy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50SU9TLm1tCmluZGV4IGU2NjdhNjY3MDgwOGRkMTQ0ZjkzY2U3MzAxMGZjYWMy
ZTQzZTU0MjUuLjI2ZDIxYTBiNjE5NTViMzA2ZjMxZjBmMzlmMGViZTRiNmFmNGRkNzAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9T
Lm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
SU9TLm1tCkBAIC04Nyw2ICs4Nyw3IEBAIHR5cGVkZWYgdm9pZCAoKkFYUG9zdGVkTm90aWZpY2F0
aW9uQ2FsbGJhY2spKGlkIGVsZW1lbnQsIE5TU3RyaW5nKiBub3RpZmljYXRpb24sCiAtIChOU1N0
cmluZyAqKWFjY2Vzc2liaWxpdHlUZXh0dWFsQ29udGV4dDsKIC0gKEJPT0wpYWNjZXNzaWJpbGl0
eUhhc1BvcHVwOwogLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5UG9wdXBWYWx1ZTsKKy0gKEJP
T0wpYWNjZXNzaWJpbGl0eUhhc0FyaWFDb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcjsKIC0gKEJP
T0wpYWNjZXNzaWJpbGl0eUhhc0RvY3VtZW50Um9sZUFuY2VzdG9yOwogLSAoQk9PTClhY2Nlc3Np
YmlsaXR5SGFzV2ViQXBwbGljYXRpb25BbmNlc3RvcjsKIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlz
SW5EZXNjcmlwdGlvbkxpc3REZWZpbml0aW9uOwpAQCAtMTE0MCw2ICsxMTQxLDExIEBAIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpwb3B1cFZhbHVlKCkg
Y29uc3QKICAgICByZXR1cm4gW1ttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVBvcHVwVmFsdWVdIGNy
ZWF0ZUpTU3RyaW5nUmVmXTsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNB
cmlhQ29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3IoKSBjb25zdAoreworICAgIHJldHVybiBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlIYXNBcmlhQ29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3JdOwor
fQorCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc0RvY3VtZW50Um9sZUFuY2VzdG9y
KCkgY29uc3QKIHsKICAgICByZXR1cm4gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5SGFzRG9jdW1l
bnRSb2xlQW5jZXN0b3JdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCBlMmQzNTU3MjBkNGQwNWI4Y2ZmMzg1N2Fh
Njk5OGMxMzA5YWM4MjI3Li5iMzJkNzhiYWUwYzc0NjRmYjVkYTZiNTk1M2Q5ZTE0YmY1OTdjZGUx
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudE1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbQpAQCAtNTU2LDEwICs1NTYsMTAgQEAgZG91YmxlIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAg
ICByZXR1cm4gMDsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmli
dXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpib29sQXR0cmlidXRlVmFsdWUoTlNTdHJpbmcgKmF0dHJpYnV0ZSkgY29uc3QKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6
YXR0cmlidXRlXV07CisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTphdHRyaWJ1dGVdOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNO
dW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTU2Nyw2ICs1NjcsMTEgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29s
QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVd
KTsKK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRCb29sQXR0cmlidXRlVmFs
dWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlLCBib29sIHZhbHVlKQogewogICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUwpAQCAtODYzLDU3ICs4NjgsMjcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojppc0RlY3JlbWVudEFjdGlvblN1cHBvcnRlZCgpCiAKIGJvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNFbmFibGVkKCkKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGVdOwotICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZD
bGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVd
OwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0cmli
dXRlKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1JlcXVpcmVkKCkgY29u
c3QKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhSZXF1aXJlZCJdOwotICAgIGlm
IChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJu
IFt2YWx1ZSBib29sVmFsdWVdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShAIkFYUmVxdWly
ZWQiKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQoKSBjb25z
dAogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0
dHJpYnV0ZV07Ci0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11d
KQotICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07Ci0gICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUwotICAgIAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYm9vbEF0dHJpYnV0
ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGUpOwogfQogCiBib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQoKSBjb25zdAogewotICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRBdHRyaWJ1dGVdOwotICAgIGlmIChb
dmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFt2
YWx1ZSBib29sVmFsdWVdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxp
dHlTZWxlY3RlZEF0dHJpYnV0ZSk7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNFeHBhbmRlZCgpIGNvbnN0CiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
aWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlFeHBhbmRlZEF0dHJpYnV0ZV07Ci0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNz
OltOU051bWJlciBjbGFzc11dKQotICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07Ci0g
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eUV4cGFuZGVkQXR0cmlidXRl
KTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NoZWNrZWQoKSBjb25zdApA
QCAtOTY3LDEzICs5NDIsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y2xhc3NMaXN0KCkgY29uc3QKIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphcmlhSXNHcmFiYmVkKCkgY29uc3QKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGVdOwotICAgIGlmIChbdmFsdWUgaXNLaW5k
T2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFs
dWVdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1
dGUpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZW1iZWRkZWRJbWFnZURlc2NyaXB0aW9uKCkgY29uc3QKQEAgLTE1NjQsMTMgKzE1MzMsNyBA
QCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJsZSgpIGNvbnN0CiAKIGJvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNPblNjcmVlbigpIGNvbnN0CiB7Ci0gICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYSXNPblNjcmVlbiJdOwotICAgIGlmIChbdmFsdWUgaXNLaW5k
T2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFs
dWVdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEAiQVhJc09uU2NyZWVuIik7CiB9CiAKIGJvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNPZmZTY3JlZW4oKSBjb25zdApAQCAtMTYxOSwxMyAr
MTU4Miw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNNdWx0aUxpbmUoKSBjb25z
dAogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwKCkgY29uc3QKIHsKLSAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhIYXNQb3B1cCJdOwotICAgIGlmIChbdmFsdWUg
aXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFt2YWx1ZSBi
b29sVmFsdWVdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEAiQVhIYXNQb3B1cCIpOwogfQogCiBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cG9wdXBWYWx1
ZSgpIGNvbnN0CkBAIC0xNjM5LDU5ICsxNTk2LDM0IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpwb3B1cFZhbHVlKCkgY29uc3QKICAgICByZXR1cm4g
W0AiZmFsc2UiIGNyZWF0ZUpTU3RyaW5nUmVmXTsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpoYXNEb2N1bWVudFJvbGVBbmNlc3RvcigpIGNvbnN0Citib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Omhhc0FyaWFDb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcigpIGNvbnN0CiB7
Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYSGFzRG9jdW1lbnRSb2xlQW5jZXN0b3Ii
XTsKLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0gICAg
ICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CisgICAgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShAIkFYSGFzQXJpYUNvbnRyb2xsZWRUYWJQ
YW5lbEFuY2VzdG9yIik7Cit9CiAKLSAgICByZXR1cm4gZmFsc2U7Citib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Omhhc0RvY3VtZW50Um9sZUFuY2VzdG9yKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEAiQVhIYXNEb2N1bWVudFJvbGVBbmNlc3RvciIpOwogfQog
CiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0b3Io
KSBjb25zdAogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEhhc1dlYkFwcGxpY2F0
aW9uQW5jZXN0b3IiXTsKLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNs
YXNzXV0pCi0gICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKLSAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCi0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGJvb2xBdHRyaWJ1
dGVWYWx1ZShAIkFYSGFzV2ViQXBwbGljYXRpb25BbmNlc3RvciIpOwogfQogCiBib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5EZXNjcmlwdGlvbkxpc3REZXRhaWwoKSBjb25zdAogewot
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWElzSW5EZXNjcmlwdGlvbkxpc3REZXRhaWwi
XTsKLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0gICAg
ICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
Ci0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShAIkFY
SXNJbkRlc2NyaXB0aW9uTGlzdERldGFpbCIpOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzSW5EZXNjcmlwdGlvbkxpc3RUZXJtKCkgY29uc3QKIHsKLSAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOkAiQVhJc0luRGVzY3JpcHRpb25MaXN0VGVybSJdOwotICAgIGlmIChbdmFs
dWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFt2YWx1
ZSBib29sVmFsdWVdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEAiQVhJc0luRGVzY3JpcHRpb25M
aXN0VGVybSIpOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5DZWxsKCkg
Y29uc3QKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhJc0luQ2VsbCJdOwotICAg
IGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0
dXJuIFt2YWx1ZSBib29sVmFsdWVdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLQotICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEAiQVhJc0luQ2Vs
bCIpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VGb2N1cygpCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAppbmRleCA2YzE4NDIwMmZkODU0ZjNhM2UzMTE3OWE4
ZWEzMzQ0Njk4Y2NlOGI4Li43NGIyNGFhZjg3OTQzODU3M2NmNDgzYzYzNzY3OWJmMTRhMmQwYjk1
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKQEAgLTExNCw2ICsxMTQsNyBAQCBK
U1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhSb290UmFkaWNhbmQoKSBjb25z
dCB7IHJldHVybiB7IH07IH0KICNpZiAhUExBVEZPUk0oQ09DT0EpIHx8ICFIQVZFKEFDQ0VTU0lC
SUxJVFkpCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Zm9jdXNlZEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAKK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzQXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9y
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNXZWJBcHBsaWNhdGlvbkFuY2VzdG9yKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbkRlc2Ny
aXB0aW9uTGlzdERldGFpbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oCmluZGV4IGYzZmNjOTJjZDQ2YzAzMzdkOWZjMDQ5MGNhY2RhNDM5NjZmMGI0
ZmQuLjBkYTMwZjZjZTA1YTQ2YjAyNjM2ODg0ZGJjZjc1ZmRmNWM4NDQ1MGMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5oCkBAIC0xMzIsNiArMTMyLDcgQEAgcHVibGljOgogICAgIFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiB1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShKU1N0cmlu
Z1JlZiBhdHRyaWJ1dGUpIGNvbnN0OwogICAgIGJvb2wgYm9vbEF0dHJpYnV0ZVZhbHVlKEpTU3Ry
aW5nUmVmIGF0dHJpYnV0ZSk7CiAjaWYgUExBVEZPUk0oTUFDKQorICAgIGJvb2wgYm9vbEF0dHJp
YnV0ZVZhbHVlKE5TU3RyaW5nICphdHRyaWJ1dGUpIGNvbnN0OwogICAgIFJldGFpblB0cjxpZD4g
YXR0cmlidXRlVmFsdWUoTlNTdHJpbmcgKikgY29uc3Q7CiAgICAgdm9pZCBhdHRyaWJ1dGVWYWx1
ZUFzeW5jKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAjZWxz
ZQpAQCAtMzg3LDYgKzM4OCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNjcm9sbFBhZ2VMZWZ0KCk7
CiAgICAgYm9vbCBzY3JvbGxQYWdlUmlnaHQoKTsKICAgICAKKyAgICBib29sIGhhc0FyaWFDb250
cm9sbGVkVGFiUGFuZWxBbmNlc3RvcigpIGNvbnN0OwogICAgIGJvb2wgaGFzRG9jdW1lbnRSb2xl
QW5jZXN0b3IoKSBjb25zdDsKICAgICBib29sIGhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0b3IoKSBj
b25zdDsKICAgICBib29sIGlzSW5EZXNjcmlwdGlvbkxpc3REZXRhaWwoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCmluZGV4IDkwMjI1NzNj
NTMxYWI3MTdjZjllMDdiNGNhZjA5ZWViYmZhY2ZjNjUuLjEyOWVjZGI4MjUxMWNhZmI1YTE0MDVh
ZDc3ZjNkNzkyM2YzNTczNDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmlkbApAQCAtMjg2LDYgKzI4Niw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gaXNTZWFyY2hGaWVsZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBp
c1RleHRBcmVhOwogCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaGFzQXJpYUNvbnRy
b2xsZWRUYWJQYW5lbEFuY2VzdG9yOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGhh
c0RvY3VtZW50Um9sZUFuY2VzdG9yOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGhh
c1dlYkFwcGxpY2F0aW9uQW5jZXN0b3I7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4g
aXNJbkRlc2NyaXB0aW9uTGlzdERldGFpbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50SU9TLm1tCmluZGV4IGJhNDc0Zjk2YzBiNmRmMzRhMjk4NWUwNTA1ZTkxZGU2ODY0YjY1
ZWQuLjk5M2MxYjdjYzdkMGI5Yjg0NzliNTZmYWNmOWZlM2JhNzNhMmQ5ODQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQpAQCAtOTgsNiArOTgsNyBAQCB0eXBl
ZGVmIHZvaWQgKCpBWFBvc3RlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKShpZCBlbGVtZW50LCBOU1N0
cmluZyogbm90aWZpY2F0aW9uLAogLSAoQk9PTClhY2Nlc3NpYmlsaXR5SGFzUG9wdXA7CiAtIChO
U1N0cmluZyAqKWFjY2Vzc2liaWxpdHlQb3B1cFZhbHVlOwogLSAoTlNTdHJpbmcgKilhY2Nlc3Np
YmlsaXR5Q29sb3JTdHJpbmdWYWx1ZTsKKy0gKEJPT0wpYWNjZXNzaWJpbGl0eUhhc0FyaWFDb250
cm9sbGVkVGFiUGFuZWxBbmNlc3RvcjsKIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUhhc0RvY3VtZW50
Um9sZUFuY2VzdG9yOwogLSAoQk9PTClhY2Nlc3NpYmlsaXR5SGFzV2ViQXBwbGljYXRpb25BbmNl
c3RvcjsKIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzSW5EZXNjcmlwdGlvbkxpc3REZWZpbml0aW9u
OwpAQCAtMTE1Nyw2ICsxMTU4LDExIEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpwb3B1cFZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gW1ttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eVBvcHVwVmFsdWVdIGNyZWF0ZUpTU3RyaW5nUmVmXTsKIH0KIAorYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNBcmlhQ29udHJvbGxlZFRhYlBhbmVsQW5jZXN0
b3IoKSBjb25zdAoreworICAgIHJldHVybiBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlIYXNBcmlh
Q29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3JdOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Omhhc0RvY3VtZW50Um9sZUFuY2VzdG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5SGFzRG9jdW1lbnRSb2xlQW5jZXN0b3JdOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggYWVhNGMzMzM1MTIzYWQ5ZTI2
ZGI4YzU4ZGFlZDE0OTIwOTc3MTAyMi4uZWVhMTYwY2M5YTgzZDU0MjBiNWQ0MWJjODExNjYwMzMy
NzgyNTNlMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBA
IC02MzUsMTQgKzYzNSwyMiBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSgogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVW
YWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmJvb2xBdHRyaWJ1dGVWYWx1ZShOU1N0cmluZyAqYXR0cmlidXRlKSBjb25zdAogewotICAgIGF1
dG8gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVm
OmF0dHJpYnV0ZV0pOworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGF1dG8gdmFs
dWUgPSBhdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUpOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZD
bGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVd
OworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdS
ZWYgYXR0cmlidXRlKQoreworICAgIHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoW05TU3RyaW5n
IHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdKTsKK30KKwogdm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphdHRyaWJ1dGVWYWx1ZUFzeW5jKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSwg
SlNWYWx1ZVJlZiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZSB8fCAhY2FsbGJhY2sp
CkBAIC05NjcsMjQgKzk3NSwxMiBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRGVj
cmVtZW50QWN0aW9uU3VwcG9ydGVkKCkKIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c0VuYWJsZWQoKQogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGF1dG8gdmFs
dWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0cmlidXRlKTsKLSAg
ICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0gICAgICAgIHJl
dHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0KLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2li
aWxpdHlFbmFibGVkQXR0cmlidXRlKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc1JlcXVpcmVkKCkgY29uc3QKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAg
ICBhdXRvIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoQCJBWFJlcXVpcmVkIik7Ci0gICAgaWYgKFt2
YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQotICAgICAgICByZXR1cm4gW3Zh
bHVlIGJvb2xWYWx1ZV07Ci0gICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQCJBWFJlcXVpcmVkIik7CiB9
CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpmb2N1c2VkRWxlbWVudCgpIGNvbnN0CkBAIC05OTksMTMgKzk5NSw3IEBAIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpmb2N1c2VkRWxlbWVu
dCgpIGNvbnN0CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2VkKCkgY29u
c3QKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBhdXRvIHZhbHVlID0gYXR0
cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZSk7Ci0gICAgaWYgKFt2
YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQotICAgICAgICByZXR1cm4gW3Zh
bHVlIGJvb2xWYWx1ZV07Ci0gICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5Rm9j
dXNlZEF0dHJpYnV0ZSk7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxl
Y3RlZCgpIGNvbnN0CkBAIC0xMDM0LDEzICsxMDI0LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojppc0luZGV0ZXJtaW5hdGUoKSBjb25zdAogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzRXhwYW5kZWQoKSBjb25zdAogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIGF1dG8gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlFeHBhbmRl
ZEF0dHJpYnV0ZSk7Ci0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFz
c11dKQotICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07Ci0gICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBib29sQXR0cmlidXRl
VmFsdWUoTlNBY2Nlc3NpYmlsaXR5RXhwYW5kZWRBdHRyaWJ1dGUpOwogfQogCiBib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzQ2hlY2tlZCgpIGNvbnN0CkBAIC0xMTEwLDEzICsxMDk0LDcg
QEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNwZWFr
QXMoKQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dyYWJiZWQoKSBjb25z
dAogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGF1dG8gdmFsdWUgPSBhdHRy
aWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlHcmFiYmVkQXR0cmlidXRlKTsKLSAgICBpZiAoW3Zh
bHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBbdmFs
dWUgYm9vbFZhbHVlXTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0KLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlHcmFi
YmVkQXR0cmlidXRlKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmFyaWFEcm9wRWZmZWN0cygpIGNvbnN0CkBAIC0xNzYxLDEzICsxNzM5LDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpTGluZSgpIGNvbnN0CiAKIGJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzUG9wdXAoKSBjb25zdAogewotICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGF1dG8gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShAIkFY
SGFzUG9wdXAiKTsKLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNz
XV0pCi0gICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKLSAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCi0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShAIkFYSGFzUG9wdXAiKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnBvcHVwVmFsdWUoKSBjb25zdApAQCAtMTc4MSw1OSArMTc1Mywz
NCBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cG9w
dXBWYWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIFtAImZhbHNlIiBjcmVhdGVKU1N0cmluZ1JlZl07
CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzRG9jdW1lbnRSb2xlQW5jZXN0
b3IoKSBjb25zdAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNBcmlhQ29udHJvbGxl
ZFRhYlBhbmVsQW5jZXN0b3IoKSBjb25zdAogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIGF1dG8gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYSGFzRG9jdW1lbnRSb2xlQW5j
ZXN0b3IiKTsKLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0p
Ci0gICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKLSAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCisgICAgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShAIkFYSGFzQXJpYUNvbnRyb2xs
ZWRUYWJQYW5lbEFuY2VzdG9yIik7Cit9CiAKLSAgICByZXR1cm4gZmFsc2U7Citib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Omhhc0RvY3VtZW50Um9sZUFuY2VzdG9yKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEAiQVhIYXNEb2N1bWVudFJvbGVBbmNlc3RvciIp
OwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1dlYkFwcGxpY2F0aW9uQW5j
ZXN0b3IoKSBjb25zdAogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGF1dG8g
dmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYSGFzV2ViQXBwbGljYXRpb25BbmNlc3RvciIpOwot
ICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAg
cmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLQot
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEAiQVhIYXNX
ZWJBcHBsaWNhdGlvbkFuY2VzdG9yIik7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNJbkRlc2NyaXB0aW9uTGlzdERldGFpbCgpIGNvbnN0CiB7Ci0gICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCi0gICAgYXV0byB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhJc0luRGVz
Y3JpcHRpb25MaXN0RGV0YWlsIik7Ci0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051
bWJlciBjbGFzc11dKQotICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07Ci0gICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQCJBWElzSW5EZXNjcmlwdGlvbkxpc3REZXRhaWwiKTsKIH0KIAogYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luRGVzY3JpcHRpb25MaXN0VGVybSgpIGNvbnN0
CiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgYXV0byB2YWx1ZSA9IGF0dHJp
YnV0ZVZhbHVlKEAiQVhJc0luRGVzY3JpcHRpb25MaXN0VGVybSIpOwotICAgIGlmIChbdmFsdWUg
aXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFt2YWx1ZSBi
b29sVmFsdWVdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEAiQVhJc0luRGVzY3JpcHRpb25MaXN0
VGVybSIpOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5DZWxsKCkgY29u
c3QKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBhdXRvIHZhbHVlID0gYXR0
cmlidXRlVmFsdWUoQCJBWElzSW5DZWxsIik7Ci0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNz
OltOU051bWJlciBjbGFzc11dKQotICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07Ci0g
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBib29sQXR0cmlidXRlVmFsdWUoQCJBWElzSW5DZWxsIik7CiB9CiAKIHZvaWQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGFrZUZvY3VzKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMzEyMTc5YWU5NDczOTc5ZDA0YzE2
NjNjZDA1ZGYyNTU4NWRkY2Y4Li4xMDk0NzhmMDY5OThmNTRiNTM5ZjQ2NGEzNDY2ZTBmMTVjZmVj
OTczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMTEtMjkgIFR5bGVyIFdpbGNvY2sgIDx0
eWxlcl93QGFwcGxlLmNvbT4KKworICAgICAgICBBWCBJc29sYXRlZCBUcmVlOiBXaGVuIGZvY3Vz
IGNoYW5nZXMsIHVwZGF0ZSBBWFByb3BlcnR5TmFtZTo6SXNTZWxlY3RlZCBmb3IgYW55IGFyaWEt
Y29udHJvbHMgY29udHJvbGxlcnMgb2YgdGFiIHBhbmVsIGFuY2VzdG9yIG9iamVjdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzU1OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmlzVGFiSXRlbVNlbGVjdGVkIGlzIGRlcGVuZGVudCBvbiBvYmplY3QgZm9j
dXMgc3RhdGUsCisgICAgICAgIHNvIGlzb2xhdGVkIHRyZWUgbmVlZHMgdG8gcmUtY29tcHV0ZSBB
WFByb3BlcnR5TmFtZTo6SXNTZWxlY3RlZCB3aGVuZXZlciBmb2N1cyBjaGFuZ2VzLgorCisgICAg
ICAgIFNwZWNpZmljYWxseSwgd2UgbmVlZCB0byByZS1jb21wdXRlIHRoaXMgcHJvcGVydHkgZm9y
IHRoZQorICAgICAgICBhcmlhLWNvbnRyb2xzIGNvbnRyb2xsZXJzIG9mIHRhYiBwYW5lbCBhbmNl
c3RvcnMgb2YgdGhlIG9iamVjdCB0aGF0CisgICAgICAgIGNoYW5nZWQgZm9jdXMuCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2FuY2VzdG9yLWNvbXB1dGF0aW9uLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FuY2VzdG9yLWNvbXB1dGF0aW9uLmh0bWw6CisgICAgICAg
IEFkZCB0ZXN0Y2FzZXMgZm9yIG5ldyBmbGFnIEFYQW5jZXN0b3JGbGFnOjpIYXNBcmlhQ29udHJv
bGxlZFRhYlBhbmVsQW5jZXN0b3IuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtY29u
dHJvbHMtd2l0aC10YWJzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Fy
aWEtY29udHJvbHMtd2l0aC10YWJzLmh0bWw6CisgICAgICAgIE1ha2UgdGVzdCBhc3luYyBzbyB0
aGF0IGl0IHBhc3NlcyBpbiBpc29sYXRlZCB0cmVlIG1vZGUgKGFmdGVyIHRoZQorICAgICAgICBv
dGhlciBjaGFuZ2VzIGluIHRoaXMgcGF0Y2gpLgorCisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9U
ZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICBVcGRhdGUgY29tbWVudCBpbmRpY2F0aW5nIG1pc3Npbmcgc3VwcG9ydCBmb3IK
KyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzQXJpYUNvbnRyb2xsZWRUYWJQYW5l
bEFuY2VzdG9yIChhZGRlZCBpbiB0aGlzIHBhdGNoKS4KKwogMjAyMS0xMS0yOCAgTWF0dCBXb29k
cm93ICA8bWF0dC53b29kcm93QGdtYWlsLmNvbT4KIAogICAgICAgICBTZXJpYWxpemUgY29tcHV0
ZWQgc3R5bGUgb2YgYmFja2dyb3VuZCBzaG9ydGhhbmQgd2l0aCBtdWx0aXBsZSBsYXllcnMgY29y
cmVjdGx5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hbmNlc3Rvci1j
b21wdXRhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FuY2Vz
dG9yLWNvbXB1dGF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCBmZWU2MzIxYzM1NTRjYzQ1YTUxZjdi
YzAzZWUyNDE1ZTMxMzU0ZjEwLi41YjYwZWE5YTlkODYxYjdlOTJiMTdhZDUyYmEwN2IwM2RmOWZj
OTAyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FuY2VzdG9yLWNvbXB1
dGF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FuY2Vz
dG9yLWNvbXB1dGF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMTA4LDI1ICsxMDgsNDAgQEAgUEFTUyBl
bGVtZW50LmlzSW5DZWxsIGlzIHRydWUKIFBBU1MgZWxlbWVudC5pc0luQ2VsbCBpcyB0cnVlCiBG
aW5pc2hlZCB2ZXJpZnlpbmcgeyJpc0luQ2VsbCI6InRydWUifSBmb3IgYWxsIGRlc2NlbmRhbnRz
IG9mIG91dGVyLWdyb3VwLgogCi1WZXJpZnlpbmcgeyJoYXNXZWJBcHBsaWNhdGlvbkFuY2VzdG9y
IjoiZmFsc2UiLCJoYXNEb2N1bWVudFJvbGVBbmNlc3RvciI6ImZhbHNlIiwiaXNJbkRlc2NyaXB0
aW9uTGlzdERldGFpbCI6ImZhbHNlIiwiaXNJbkRlc2NyaXB0aW9uTGlzdFRlcm0iOiJmYWxzZSIs
ImlzSW5DZWxsIjoiZmFsc2UifSBmb3IgYWxsIGRlc2NlbmRhbnRzIG9mIG91dGVyLWdyb3VwLgot
UEFTUyBlbGVtZW50Lmhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0b3IgaXMgZmFsc2UKK1ZlcmlmeWlu
ZyB7Imhhc0FyaWFDb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvciI6InRydWUifSBmb3IgYWxsIGRl
c2NlbmRhbnRzIG9mIGl0ZW1JblBhbmVsLgorUEFTUyBlbGVtZW50Lmhhc0FyaWFDb250cm9sbGVk
VGFiUGFuZWxBbmNlc3RvciBpcyB0cnVlCitQQVNTIGVsZW1lbnQuaGFzQXJpYUNvbnRyb2xsZWRU
YWJQYW5lbEFuY2VzdG9yIGlzIHRydWUKK0ZpbmlzaGVkIHZlcmlmeWluZyB7Imhhc0FyaWFDb250
cm9sbGVkVGFiUGFuZWxBbmNlc3RvciI6InRydWUifSBmb3IgYWxsIGRlc2NlbmRhbnRzIG9mIGl0
ZW1JblBhbmVsLgorCitWZXJpZnlpbmcgeyJoYXNBcmlhQ29udHJvbGxlZFRhYlBhbmVsQW5jZXN0
b3IiOiJ0cnVlIn0gZm9yIGFsbCBkZXNjZW5kYW50cyBvZiBvdXRlci1ncm91cC4KK1BBU1MgZWxl
bWVudC5oYXNBcmlhQ29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3IgaXMgdHJ1ZQorUEFTUyBlbGVt
ZW50Lmhhc0FyaWFDb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvciBpcyB0cnVlCitQQVNTIGVsZW1l
bnQuaGFzQXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yIGlzIHRydWUKK0ZpbmlzaGVkIHZl
cmlmeWluZyB7Imhhc0FyaWFDb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvciI6InRydWUifSBmb3Ig
YWxsIGRlc2NlbmRhbnRzIG9mIG91dGVyLWdyb3VwLgorCitWZXJpZnlpbmcgeyJoYXNBcmlhQ29u
dHJvbGxlZFRhYlBhbmVsQW5jZXN0b3IiOiJmYWxzZSIsImhhc0RvY3VtZW50Um9sZUFuY2VzdG9y
IjoiZmFsc2UiLCJoYXNXZWJBcHBsaWNhdGlvbkFuY2VzdG9yIjoiZmFsc2UiLCJpc0luRGVzY3Jp
cHRpb25MaXN0RGV0YWlsIjoiZmFsc2UiLCJpc0luRGVzY3JpcHRpb25MaXN0VGVybSI6ImZhbHNl
IiwiaXNJbkNlbGwiOiJmYWxzZSJ9IGZvciBhbGwgZGVzY2VuZGFudHMgb2Ygb3V0ZXItZ3JvdXAu
CitQQVNTIGVsZW1lbnQuaGFzQXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yIGlzIGZhbHNl
CiBQQVNTIGVsZW1lbnQuaGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IgaXMgZmFsc2UKK1BBU1MgZWxl
bWVudC5oYXNXZWJBcHBsaWNhdGlvbkFuY2VzdG9yIGlzIGZhbHNlCiBQQVNTIGVsZW1lbnQuaXNJ
bkRlc2NyaXB0aW9uTGlzdERldGFpbCBpcyBmYWxzZQogUEFTUyBlbGVtZW50LmlzSW5EZXNjcmlw
dGlvbkxpc3RUZXJtIGlzIGZhbHNlCiBQQVNTIGVsZW1lbnQuaXNJbkNlbGwgaXMgZmFsc2UKLVBB
U1MgZWxlbWVudC5oYXNXZWJBcHBsaWNhdGlvbkFuY2VzdG9yIGlzIGZhbHNlCitQQVNTIGVsZW1l
bnQuaGFzQXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yIGlzIGZhbHNlCiBQQVNTIGVsZW1l
bnQuaGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IgaXMgZmFsc2UKK1BBU1MgZWxlbWVudC5oYXNXZWJB
cHBsaWNhdGlvbkFuY2VzdG9yIGlzIGZhbHNlCiBQQVNTIGVsZW1lbnQuaXNJbkRlc2NyaXB0aW9u
TGlzdERldGFpbCBpcyBmYWxzZQogUEFTUyBlbGVtZW50LmlzSW5EZXNjcmlwdGlvbkxpc3RUZXJt
IGlzIGZhbHNlCiBQQVNTIGVsZW1lbnQuaXNJbkNlbGwgaXMgZmFsc2UKLVBBU1MgZWxlbWVudC5o
YXNXZWJBcHBsaWNhdGlvbkFuY2VzdG9yIGlzIGZhbHNlCitQQVNTIGVsZW1lbnQuaGFzQXJpYUNv
bnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yIGlzIGZhbHNlCiBQQVNTIGVsZW1lbnQuaGFzRG9jdW1l
bnRSb2xlQW5jZXN0b3IgaXMgZmFsc2UKK1BBU1MgZWxlbWVudC5oYXNXZWJBcHBsaWNhdGlvbkFu
Y2VzdG9yIGlzIGZhbHNlCiBQQVNTIGVsZW1lbnQuaXNJbkRlc2NyaXB0aW9uTGlzdERldGFpbCBp
cyBmYWxzZQogUEFTUyBlbGVtZW50LmlzSW5EZXNjcmlwdGlvbkxpc3RUZXJtIGlzIGZhbHNlCiBQ
QVNTIGVsZW1lbnQuaXNJbkNlbGwgaXMgZmFsc2UKLUZpbmlzaGVkIHZlcmlmeWluZyB7Imhhc1dl
YkFwcGxpY2F0aW9uQW5jZXN0b3IiOiJmYWxzZSIsImhhc0RvY3VtZW50Um9sZUFuY2VzdG9yIjoi
ZmFsc2UiLCJpc0luRGVzY3JpcHRpb25MaXN0RGV0YWlsIjoiZmFsc2UiLCJpc0luRGVzY3JpcHRp
b25MaXN0VGVybSI6ImZhbHNlIiwiaXNJbkNlbGwiOiJmYWxzZSJ9IGZvciBhbGwgZGVzY2VuZGFu
dHMgb2Ygb3V0ZXItZ3JvdXAuCitGaW5pc2hlZCB2ZXJpZnlpbmcgeyJoYXNBcmlhQ29udHJvbGxl
ZFRhYlBhbmVsQW5jZXN0b3IiOiJmYWxzZSIsImhhc0RvY3VtZW50Um9sZUFuY2VzdG9yIjoiZmFs
c2UiLCJoYXNXZWJBcHBsaWNhdGlvbkFuY2VzdG9yIjoiZmFsc2UiLCJpc0luRGVzY3JpcHRpb25M
aXN0RGV0YWlsIjoiZmFsc2UiLCJpc0luRGVzY3JpcHRpb25MaXN0VGVybSI6ImZhbHNlIiwiaXNJ
bkNlbGwiOiJmYWxzZSJ9IGZvciBhbGwgZGVzY2VuZGFudHMgb2Ygb3V0ZXItZ3JvdXAuCiAKIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQogCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYW5jZXN0b3ItY29tcHV0YXRpb24uaHRt
bCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYW5jZXN0b3ItY29tcHV0YXRpb24uaHRtbApp
bmRleCAzODFmMzU4MDFhM2FkMmI4MjhiNzZkZjJlZmE1NDM4YjAwZjQxNWFlLi5lYTdhNTc5Yzk4
YTQ4NzRhYTgzNGMzODY1ZjM4MmNjODhjN2FjZDZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2FuY2VzdG9yLWNvbXB1dGF0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9hbmNlc3Rvci1jb21wdXRhdGlvbi5odG1sCkBAIC00NSw2ICs0NSwxMyBA
QAogICAgICAgICA8L3Rib2R5PgogICAgIDwvdGFibGU+CiAKKyAgICA8dWwgaWQ9InRhYmxpc3Qi
IHJvbGU9InRhYmxpc3QiPgorICAgICAgICA8bGkgaWQ9InRhYiIgcm9sZT0idGFiIiB0YWJpbmRl
eD0iLTEiIGFyaWEtY29udHJvbHM9InRhYlBhbmVsIj5DcnVzdDwvbGk+CisgICAgPC91bD4KKyAg
ICA8ZGl2IGlkPSJ0YWJQYW5lbCIgcm9sZT0idGFicGFuZWwiPgorICAgICAgICA8aDIgaWQ9Iml0
ZW1JblBhbmVsIiB0YWJpbmRleD0wPlNlbGVjdCBDcnVzdDwvaDI+CisgICAgPC9kaXY+CisKICAg
ICA8ZGl2IGlkPSJyb2xlLWdyb3VwLWNvbnRhaW5lciIgcm9sZT0iZ3JvdXAiPgogICAgIDwvZGl2
PgogPC9kaXY+CkBAIC0xNDksMTAgKzE1NiwxOSBAQAogICAgICAgICAgICAgICAgICJpc0luQ2Vs
bCI6ICJ0cnVlIgogICAgICAgICAgICAgfSk7CiAKKyAgICAgICAgICAgIGF3YWl0IHNob3VsZEJl
Rm9yQWxsRGVzY2VuZGFudHMoIml0ZW1JblBhbmVsIiwgeworICAgICAgICAgICAgICAgICJoYXNB
cmlhQ29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3IiOiAidHJ1ZSIKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhYlBhbmVsIikuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0ZXJHcm91cElkKSk7CisgICAgICAgICAgICBh
d2FpdCBzaG91bGRCZUZvckFsbERlc2NlbmRhbnRzKG91dGVyR3JvdXBJZCwgeworICAgICAgICAg
ICAgICAgICJoYXNBcmlhQ29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3IiOiAidHJ1ZSIKKyAgICAg
ICAgICAgIH0pOworCiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicm9sZS1n
cm91cC1jb250YWluZXIiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvdXRl
ckdyb3VwSWQpKTsKICAgICAgICAgICAgIGF3YWl0IHNob3VsZEJlRm9yQWxsRGVzY2VuZGFudHMo
b3V0ZXJHcm91cElkLCB7Ci0gICAgICAgICAgICAgICAgImhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0
b3IiOiAiZmFsc2UiLAorICAgICAgICAgICAgICAgICJoYXNBcmlhQ29udHJvbGxlZFRhYlBhbmVs
QW5jZXN0b3IiOiAiZmFsc2UiLAogICAgICAgICAgICAgICAgICJoYXNEb2N1bWVudFJvbGVBbmNl
c3RvciI6ICJmYWxzZSIsCisgICAgICAgICAgICAgICAgImhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0
b3IiOiAiZmFsc2UiLAogICAgICAgICAgICAgICAgICJpc0luRGVzY3JpcHRpb25MaXN0RGV0YWls
IjogImZhbHNlIiwKICAgICAgICAgICAgICAgICAiaXNJbkRlc2NyaXB0aW9uTGlzdFRlcm0iOiAi
ZmFsc2UiLAogICAgICAgICAgICAgICAgICJpc0luQ2VsbCI6ICJmYWxzZSIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1jb250cm9scy13aXRoLXRhYnMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNvbnRyb2xzLXdpdGgtdGFi
cy1leHBlY3RlZC50eHQKaW5kZXggN2UzYmNiZjI5OTc1ZjM5NWY5MDc0N2ExM2Q0NDI2MDEyMjFm
NTEyYS4uYTJhNjk2NGVhZTJkYTUzNDcwODZjZDRjZGI4OTVhMzMyNWQyYmYxZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNvbnRyb2xzLXdpdGgtdGFicy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNvbnRyb2xzLXdp
dGgtdGFicy1leHBlY3RlZC50eHQKQEAgLTEsMjEgKzEsMTUgQEAKLUNydXN0Ci1WZWdlcwotVGVz
dAotCi1TZWxlY3QgQ3J1c3QKLQotU2VsZWN0IENydXN0Ci0KIFRoaXMgdGVzdHMgdGhhdCB0aGUg
YXJpYSB0YWIgaXRlbSBiZWNvbWVzIHNlbGVjdGVkIGlmIGVpdGhlciBhcmlhLXNlbGVjdGVkIGlz
IHVzZWQsIG9yIGlmIGFyaWEtY29udHJvbHMgcG9pbnRzIHRvIGFuIGl0ZW0gdGhhdCBjb250YWlu
cyBLQiBmb2N1cy4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgdGFiMi5p
c1NlbGVjdGVkIGlzIHRydWUKLVBBU1MgdGFiMS5pc1NlbGVjdGVkIGlzIGZhbHNlCi1QQVNTIHRh
YjIuaXNTZWxlY3RlZCBpcyBmYWxzZQotUEFTUyB0YWIxLmlzU2VsZWN0ZWQgaXMgdHJ1ZQorUEFT
UyB0YWIyLmlzU2VsZWN0ZWQgPT09IHRydWUKK1BBU1MgdGFiMS5pc1NlbGVjdGVkID09PSBmYWxz
ZQorUEFTUyB0YWIyLmlzU2VsZWN0ZWQgPT09IGZhbHNlCitQQVNTIHRhYjEuaXNTZWxlY3RlZCA9
PT0gdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
CiAKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtY29udHJv
bHMtd2l0aC10YWJzLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtY29udHJv
bHMtd2l0aC10YWJzLmh0bWwKaW5kZXggMGY5MTk1NGIzNGIxYWI1OTZiYjEyOGQ0NjIzYmYwNDVm
NTU3ODM3MS4uMGRlYTNhOTlkODgzNWZkNWYwNmRmMzk5NGJmMWE3YzJlNmE2OGEwZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNvbnRyb2xzLXdpdGgtdGFicy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1jb250cm9scy13aXRoLXRh
YnMuaHRtbApAQCAtMSw1OCArMSw2MCBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJp
bGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHkiPgorPGJv
ZHk+CiAKLTx1bCBpZD0idGFibGlzdF8xIiByb2xlPSJ0YWJsaXN0Ij4KLTxsaSBpZD0idGFiXzEi
IHJvbGU9InRhYiIgdGFiaW5kZXg9Ii0xIiBjbGFzcz0iIj5DcnVzdDwvbGk+Ci08bGkgaWQ9InRh
Yl8yIiByb2xlPSJ0YWIiIHRhYmluZGV4PSItMSIgYXJpYS1jb250cm9scz0icGFuZWxfMiIgY2xh
c3M9IiI+VmVnZXM8L2xpPgotPC91bD4KKzxkaXYgaWQ9ImNvbnRlbnQiPgorICAgIDx1bCBpZD0i
dGFibGlzdF8xIiByb2xlPSJ0YWJsaXN0Ij4KKyAgICAgICAgPGxpIGlkPSJ0YWJfMSIgcm9sZT0i
dGFiIiB0YWJpbmRleD0iLTEiIGNsYXNzPSIiPkNydXN0PC9saT4KKyAgICAgICAgPGxpIGlkPSJ0
YWJfMiIgcm9sZT0idGFiIiB0YWJpbmRleD0iLTEiIGFyaWEtY29udHJvbHM9InBhbmVsXzIiIGNs
YXNzPSIiPlZlZ2VzPC9saT4KKyAgICA8L3VsPgogCi08aDMgdGFiaW5kZXg9MCBpZD0iZWxlbWVu
dE91dHNpZGVUYWJzIj5UZXN0PC9oMz4KKyAgICA8aDMgdGFiaW5kZXg9MCBpZD0iZWxlbWVudE91
dHNpZGVUYWJzIj5UZXN0PC9oMz4KIAotPGRpdiBpZD0icGFuZWxfMSIgcm9sZT0idGFicGFuZWwi
ID4KLTxoMyB0YWJpbmRleD0wPlNlbGVjdCBDcnVzdDwvaDM+Ci08L2Rpdj4KKyAgICA8ZGl2IGlk
PSJwYW5lbF8xIiByb2xlPSJ0YWJwYW5lbCI+CisgICAgICAgIDxoMyB0YWJpbmRleD0wPlNlbGVj
dCBDcnVzdDwvaDM+CisgICAgPC9kaXY+CiAKLTxkaXYgaWQ9InBhbmVsXzIiIHJvbGU9InRhYnBh
bmVsIiA+Ci08aDIgaWQ9Iml0ZW1JblBhbmVsMiIgdGFiaW5kZXg9MD5TZWxlY3QgQ3J1c3Q8L2gy
PgorICAgIDxkaXYgaWQ9InBhbmVsXzIiIHJvbGU9InRhYnBhbmVsIj4KKyAgICAgICAgPGgyIGlk
PSJpdGVtSW5QYW5lbDIiIHRhYmluZGV4PTA+U2VsZWN0IENydXN0PC9oMj4KKyAgICA8L2Rpdj4K
IDwvZGl2PgogCi0KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Ci0KIDxzY3JpcHQ+Ci0KICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHRo
ZSBhcmlhIHRhYiBpdGVtIGJlY29tZXMgc2VsZWN0ZWQgaWYgZWl0aGVyIGFyaWEtc2VsZWN0ZWQg
aXMgdXNlZCwgb3IgaWYgYXJpYS1jb250cm9scyBwb2ludHMgdG8gYW4gaXRlbSB0aGF0IGNvbnRh
aW5zIEtCIGZvY3VzLiIpOwogCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgeworICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKLSAgICAgICAgICB2
YXIgdGFiTGlzdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgndGFibGlzdF8xJyk7Ci0gICAgICAgICAgdmFyIHRhYjEgPSB0YWJMaXN0LmNoaWxkQXRJbmRl
eCgwKTsKLSAgICAgICAgICB2YXIgdGFiMiA9IHRhYkxpc3QuY2hpbGRBdEluZGV4KDEpOworICAg
ICAgICB2YXIgdGFiTGlzdCwgdGFiMSwgdGFiMjsKKyAgICAgICAgc2V0VGltZW91dChhc3luYyBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRhYkxpc3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3RhYmxpc3RfMScpOworICAgICAgICAgICAgdGFiMSA9
IHRhYkxpc3QuY2hpbGRBdEluZGV4KDApOworICAgICAgICAgICAgdGFiMiA9IHRhYkxpc3QuY2hp
bGRBdEluZGV4KDEpOwogCi0gICAgICAgICAgLy8gd2Ugc2V0IEtCIGZvY3VzIHRvIHNvbWV0aGlu
ZyBpbiBwYW5lbF8yLCB3aGljaCBtZWFucyB0aGF0IHRhYjIgc2hvdWxkIGJlY29tZSBzZWxlY3Rl
ZAotICAgICAgICAgIC8vIGJlY2F1c2UgaXQgYXJpYS1jb250cm9scyBwYW5lbF8yCi0gICAgICAg
ICAgdmFyIHBhbmVsMkl0ZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaXRlbUluUGFuZWwy
Iik7Ci0gICAgICAgICAgcGFuZWwySXRlbS5mb2N1cygpOworICAgICAgICAgICAgLy8gU2V0IEtC
IGZvY3VzIHRvIHNvbWV0aGluZyBpbiBwYW5lbF8yLCB3aGljaCBtZWFucyB0aGF0IHRhYjIgc2hv
dWxkIGJlY29tZSBzZWxlY3RlZCBiZWNhdXNlCisgICAgICAgICAgICAvLyBpdCBhcmlhLWNvbnRy
b2xzIHBhbmVsXzIuCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaXRlbUlu
UGFuZWwyIikuZm9jdXMoKTsKKyAgICAgICAgICAgIGF3YWl0IGV4cGVjdEFzeW5jRXhwcmVzc2lv
bigidGFiMi5pc1NlbGVjdGVkIiwgInRydWUiKTsKIAotICAgICAgICAgIHNob3VsZEJlKCJ0YWIy
LmlzU2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgICAgICAgLy8gUmVzZXQgS0IgZm9jdXMgYW5k
IHZlcmlmeSB0aGF0IG5laXRoZXIgdGFiIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImVsZW1lbnRPdXRzaWRlVGFicyIpLmZvY3VzKCk7CisgICAgICAg
ICAgICBhd2FpdCBleHBlY3RBc3luY0V4cHJlc3Npb24oInRhYjEuaXNTZWxlY3RlZCIsICJmYWxz
ZSIpOworICAgICAgICAgICAgYXdhaXQgZXhwZWN0QXN5bmNFeHByZXNzaW9uKCJ0YWIyLmlzU2Vs
ZWN0ZWQiLCAiZmFsc2UiKTsKIAotICAgICAgICAgIC8vIHJlc2V0IEtCIGZvY3VzIGFuZCB2ZXJp
ZnkgdGhhdCBuZWl0aGVyIHRhYiBpcyBzZWxlY3RlZAotICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJlbGVtZW50T3V0c2lkZVRhYnMiKS5mb2N1cygpOwotICAgICAgICAgIHNob3Vs
ZEJlKCJ0YWIxLmlzU2VsZWN0ZWQiLCAiZmFsc2UiKTsKLSAgICAgICAgICBzaG91bGRCZSgidGFi
Mi5pc1NlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICAgICAgICAvLyBOb3cgc2V0IGFyaWEtc2Vs
ZWN0ZWQgdG8gYmUgdHJ1ZSBvbiB0YWIxLiBUaGlzIHNob3VsZCBtYWtlIGl0IGJlY29tZSBzZWxl
Y3RlZC4KKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YWJfMSIpLnNldEF0
dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsICJ0cnVlIik7CisgICAgICAgICAgICBhd2FpdCBleHBl
Y3RBc3luY0V4cHJlc3Npb24oInRhYjEuaXNTZWxlY3RlZCIsICJ0cnVlIik7CiAKLSAgICAgICAg
ICAvLyBOb3cgd2Ugc2V0IGFyaWEtc2VsZWN0ZWQgdG8gYmUgdHJ1ZSBvbiB0YWIxIHNvIHRoYXQg
aXQgc2hvdWxkIGJlY29tZSBzZWxlY3RlZAotICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0YWJfMSIpLnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsICJ0cnVlIik7Ci0gICAg
ICAgICAgc2hvdWxkQmUoInRhYjEuaXNTZWxlY3RlZCIsICJ0cnVlIik7ICAgICAgICAgIAotICAg
IH0KKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50Iikuc3R5bGUu
dmlzaWJpbGl0eSA9ICJoaWRkZW4iOwogCisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfSwgMCk7CisgICAgfQogPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGI1N2MzOWY2MzBkOGZj
NzZlM2QxYTYxZTNhMzRkMWE0ODcwNTMzYWYuLjIzNGMyY2ZjYWE3MWMzNDg3MWIzNWY0YTRlMDcz
ZTM0MDRlMDEzNGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTMwMyw5ICszMDMsOSBAQCBmYXN0L2Nzcy9hY2NlbnQtY29sb3IvdGV4dC5odG1sIFsg
UGFzcyBdCiAjIEFjY2Vzc2liaWxpdHktcmVsYXRlZCBidWdzCiAjLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwogCi0jIE5lZWQgdG8gaW1wbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Omhhc0RvY3VtZW50Um9sZUFuY2VzdG9yKCksIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhh
c1dlYkFwcGxpY2F0aW9uQW5jZXN0b3IoKSwKLSMgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJ
bkRlc2NyaXB0aW9uTGlzdERldGFpbCgpLCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luRGVz
Y3JpcHRpb25MaXN0VGVybSgpLCBhbmQKLSMgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbkNl
bGwoKS4KKyMgTmVlZCB0byBpbXBsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzQXJp
YUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yKCksIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhh
c0RvY3VtZW50Um9sZUFuY2VzdG9yKCksCisjIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1dl
YkFwcGxpY2F0aW9uQW5jZXN0b3IoKSwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbkRlc2Ny
aXB0aW9uTGlzdERldGFpbCgpLAorIyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luRGVzY3Jp
cHRpb25MaXN0VGVybSgpLCBhbmQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbkNlbGwoKS4K
IGFjY2Vzc2liaWxpdHkvYW5jZXN0b3ItY29tcHV0YXRpb24uaHRtbCBbIFNraXAgXQogCiB3ZWJr
aXQub3JnL2IvMjEyODA1IGFjY2Vzc2liaWxpdHkvc3ZnLXRleHQuaHRtbCBbIEZhaWx1cmUgXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlZjc1YmQxMWY2
MmQxNGE1NjYzNDBlZTIzYzFmOWE5MzBjYzYzNjQzLi41ZWJjYjM0MWFlZTk1MWVhOTMwNWQ4ZTE5
MWQ5Zjc1MWJlMDFiZTFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMjgwLDkgKzI4MCw5IEBAIGFjY2Vzc2liaWxpdHkvZW1iZWRkZWQtaW1hZ2UtZGVz
Y3JpcHRpb24uaHRtbCBbIFNraXAgXQogYWNjZXNzaWJpbGl0eS9pbWctbm8tYWx0LW5vdC1pZ25v
cmVkLXdpdGgtdGl0bGUuaHRtbCBbIFNraXAgXQogYWNjZXNzaWJpbGl0eS92aXNpYmxlLWNoYXJh
Y3Rlci1yYW5nZS5odG1sIFsgU2tpcCBdCiAKLSMgTmVlZCB0byBpbXBsZW1lbnQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IoKSwgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aGFzV2ViQXBwbGljYXRpb25BbmNlc3RvcigpLAotIyBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojppc0luRGVzY3JpcHRpb25MaXN0RGV0YWlsKCksIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzSW5EZXNjcmlwdGlvbkxpc3RUZXJtKCksIGFuZAotIyBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc0luQ2VsbCgpLgorIyBOZWVkIHRvIGltcGxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpoYXNBcmlhQ29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3IoKSwgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IoKSwKKyMgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aGFzV2ViQXBwbGljYXRpb25BbmNlc3RvcigpLEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzSW5EZXNjcmlwdGlvbkxpc3REZXRhaWwoKSwKKyMgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNJbkRlc2NyaXB0aW9uTGlzdFRlcm0oKSwgYW5kIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlz
SW5DZWxsKCkuCiBhY2Nlc3NpYmlsaXR5L2FuY2VzdG9yLWNvbXB1dGF0aW9uLmh0bWwgWyBTa2lw
IF0KIAogIyBUT0RPIENvbmljIGdyYWRpZW50cwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445580</attachid>
            <date>2021-12-01 08:56:23 -0800</date>
            <delta_ts>2021-12-01 10:03:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233558-20211201105622.patch</filename>
            <type>text/plain</type>
            <size>32039</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUzNGMxY2I1NGY5NTI3
NjZmY2IxMzhkNTJhMjVmZTY4NjZlZjM4OC4uZTljY2FlMzFiOGNiY2VjY2Q5Y2YzMWRmZjk0NDMy
OGM4NjY3NTM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIxLTEyLTAxICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSXNvbGF0ZWQgVHJl
ZTogV2hlbiBmb2N1cyBjaGFuZ2VzLCB1cGRhdGUgQVhQcm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWQg
Zm9yIGFueSBhcmlhLWNvbnRyb2xzIGNvbnRyb2xsZXJzIG9mIHRhYiBwYW5lbCBhbmNlc3RvciBv
YmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzM1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1RhYkl0ZW1TZWxlY3RlZCBpcyBkZXBlbmRlbnQg
b24gb2JqZWN0IGZvY3VzIHN0YXRlLAorICAgICAgICBzbyBpc29sYXRlZCB0cmVlIG5lZWRzIHRv
IHJlLWNvbXB1dGUgQVhQcm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWQgd2hlbmV2ZXIgZm9jdXMgY2hh
bmdlcy4KKworICAgICAgICBTcGVjaWZpY2FsbHksIHdlIG5lZWQgdG8gcmUtY29tcHV0ZSB0aGlz
IHByb3BlcnR5IGZvciB0aGUKKyAgICAgICAgYXJpYS1jb250cm9scyBjb250cm9sbGVycyBvZiB0
YWIgcGFuZWwgYW5jZXN0b3JzIG9mIHRoZSBvYmplY3QgdGhhdAorICAgICAgICBjaGFuZ2VkIGZv
Y3VzLgorCisgICAgICAgIFRlc3RlZCBieSBhY2Nlc3NpYmlsaXR5L2FyaWEtY29udHJvbHMtd2l0
aC10YWJzLmh0bWwuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6c2V0SXNvbGF0ZWRUcmVlRm9jdXNl
ZE9iamVjdCk6CisgICAgICAgIENhbGwgbmV3IHNldEZvY3VzZWROb2RlIGZ1bmN0aW9uIGluc3Rl
YWQgb2YgZGVsZXRlZCBzZXRGb2N1c2VkTm9kZUlELgorCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUgY29uc3Qp
OgorICAgICAgICBIYW5kbGUgbmV3IEFSSUFFbGVtZW50U2VhcmNoQmVoYXZpb3I6OlN0b3BBdEZp
cnN0IHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFy
aWFDb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMgY29uc3QpOiBBZGRlZC4KKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb250cm9sbGVkVGFiUGFuZWxPYmpl
Y3RzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojppc1RhYkl0ZW1TZWxlY3RlZCBjb25zdCk6CisgICAgICAgIFVzZSBuZXcgQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9ycyBmdW5jdGlvbgor
ICAgICAgICB0byBmaW5kIGFuY2VzdG9ycyBvbmNlIGluc3RlYWQgb2YgcmUtaXRlcmF0aW5nIHRo
ZSBwYXJlbnQgaGllcmFyY2h5IG9mCisgICAgICAgIHRoZSBmb2N1c2VkIG9iamVjdCBtdWx0aXBs
ZSB0aW1lcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5oOgorICAgICAgICBBZGQgY29udHJvbGxlZFRhYlBhbmVsT2JqZWN0cyBwcml2YXRlIGZ1
bmN0aW9uLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFs
aXplQXR0cmlidXRlRGF0YSk6CisgICAgICAgIFN0b3JlIEFYUHJvcGVydHlOYW1lOjpBUklBQ29u
dHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzIGZvciBvYmplY3RzIHRoYXQKKyAgICAgICAgaGF2ZSBh
IHJvbGVWYWx1ZSgpIG9mIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJQYW5lbC4KKworICAgICAgICBB
bHNvIHN0b3JlIGFsbCBBWFByb3BlcnR5TmFtZTo6Q29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3Jz
LCBhcyB0aGV5J2xsIG5lZWQgdG8KKyAgICAgICAgcmUtY29tcHV0ZSB0aGVpciBBWFByb3BlcnR5
TmFtZTo6SXNTZWxlY3RlZCB1cG9uIGZvY3VzIGNoYW5nZS4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKToKKyAgICAgICAgQ2FsbCBzZXRGb2N1c2VkTm9kZSBp
bnN0ZWFkIG9mIHNldEZvY3VzZWROb2RlSUQgKHdoaWNoIGlzIG5vdyBkZWxldGVkKS4KKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydHkpOgorICAgICAg
ICBNb3ZlZCBsb2dpYyB0byBwcml2YXRlIGZ1bmN0aW9uIHVwZGF0ZU5vZGVQcm9wZXJ0eUxvY2tl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydHlM
b2NrZWQpOgorICAgICAgICBBZGRlZC4gVGhpcyBpcyBhIFdURl9SRVFVSVJFU19MT0NLKG1fY2hh
bmdlTG9nTG9jaykgdmVyc2lvbiBvZgorICAgICAgICB1cGRhdGVOb2RlUHJvcGVydHksIGludGVu
ZGVkIHRvIGJlIGNvbnN1bWVkIGJ5IGNhbGxlcnMgd2hvIGFscmVhZHkKKyAgICAgICAgaG9sZCB0
aGlzIGxvY2suIFRoaXMgY291bGQgYmUgdXBkYXRlTm9kZVByb3BlcnR5LCBvciBzb21lIG90aGVy
CisgICAgICAgIGFnZ3JlZ2F0ZSBsb2dpYyAoZS5nLiBjYWxsZWQgZnJvbSBuZXcgaGFuZGxlRm9j
dXNDaGFuZ2UgZnVuY3Rpb24pLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnNl
dEZvY3VzZWROb2RlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6
aGFuZGxlRm9jdXNDaGFuZ2UpOiBBZGRlZC4gCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcyk6CisgICAgICAgIENhbGwgbmV3IGhhbmRsZUZvY3Vz
Q2hhbmdlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnNldEZv
Y3VzZWROb2RlSUQpOiBEZWxldGVkLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKKyAgICAgICAgQWRkIEFYUHJvcGVydHlOYW1lOjpDb250
cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMgYW5kIEFYUHJvcGVydHlOYW1lOjpBUklBQ29udHJvbHNS
ZWZlcmVuY2luZ0VsZW1lbnRzLgorCiAyMDIxLTEyLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXVzZSBuYXZpZ2F0aW9uIHByZWxvYWQgaWYgc2Vydmlj
ZSB3b3JrZXIgaXMgZmV0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcgbmF2aWdhdGlvbiByZXF1ZXN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRl
eCAyYjZlYWY4MTdjNmZlM2I5ZjUwNjI0ZDYxYTkzZjljODI4YmY5NmZiLi4wMTk2MjYzMDJlMDlj
NmIzMGRkZThlM2MzNTUzNTkzNGI0MDcyODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTQxMywxMCArNDEzLDkgQEAgdm9pZCBBWE9i
amVjdENhY2hlOjpzZXRJc29sYXRlZFRyZWVGb2N1c2VkT2JqZWN0KE5vZGUqIGZvY3VzZWROb2Rl
KQogICAgIGlmICghbV9wYWdlSUQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8qIGZvY3Vz
ID0gZ2V0T3JDcmVhdGUoZm9jdXNlZE5vZGUpOwotCisgICAgYXV0byogZm9jdXNlZEF4T2JqZWN0
ID0gZ2V0T3JDcmVhdGUoZm9jdXNlZE5vZGUpOwogICAgIGlmIChhdXRvIHRyZWUgPSBBWElzb2xh
dGVkVHJlZTo6dHJlZUZvclBhZ2VJRCgqbV9wYWdlSUQpKQotICAgICAgICB0cmVlLT5zZXRGb2N1
c2VkTm9kZUlEKGZvY3VzID8gZm9jdXMtPm9iamVjdElEKCkgOiBBWElEKCkpOworICAgICAgICB0
cmVlLT5zZXRGb2N1c2VkTm9kZShmb2N1c2VkQXhPYmplY3QpOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CmluZGV4IDEwYmE5Zjk3NmQzY2RmMjZjOWNjYTJiN2QwOGIyYjI0YzM0MTc4MmIuLjgyM2QyZTc4
N2ZlYWY2ZmFmMzNkZmUzNTc0YWM2MTE4YmRlYzlmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMzczMyw3ICsz
NzMzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRWxlbWVudHNGcm9tQXR0cmli
dXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYKICAgICB9CiB9CiAKLXZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYgZWxlbWVudHMsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZSkgY29uc3QKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRzUmVmZXJl
bmNlZEJ5QXR0cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgZWxlbWVudHMsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSwgQVJJQUVsZW1lbnRTZWFyY2hCZWhhdmlvciBz
ZWFyY2hCZWhhdmlvcikgY29uc3QKIHsKICAgICBhdXRvIGlkID0gaWRlbnRpZmllckF0dHJpYnV0
ZSgpOwogICAgIGlmIChpZC5pc0VtcHR5KCkpCkBAIC0zNzQ4LDExICszNzQ4LDIxIEBAIHZvaWQg
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlCiAgICAgICAgIGlmICghU3BhY2VTcGxpdFN0cmluZyhpZExpc3Qs
IGZhbHNlKS5jb250YWlucyhpZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBp
ZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUoJmVs
ZW1lbnQpKQorICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBjYWNo
ZS0+Z2V0T3JDcmVhdGUoJmVsZW1lbnQpKSB7CiAgICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQo
YXhPYmplY3QpOworICAgICAgICAgICAgaWYgKHNlYXJjaEJlaGF2aW9yID09IEFSSUFFbGVtZW50
U2VhcmNoQmVoYXZpb3I6OlN0b3BBdEZpcnN0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQogICAgIH0KIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNBcmlhRWxl
bWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
KSBjb25zdAoreworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByZWZlcmVuY2luZ0Vs
ZW1lbnRzOworICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShyZWZlcmVuY2lu
Z0VsZW1lbnRzLCBhdHRyaWJ1dGUsIEFSSUFFbGVtZW50U2VhcmNoQmVoYXZpb3I6OlN0b3BBdEZp
cnN0KTsKKyAgICByZXR1cm4gIXJlZmVyZW5jaW5nRWxlbWVudHMuaXNFbXB0eSgpOworfQorCiBi
b29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRh
aW5lcigpIGNvbnN0CiB7CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRhaW5l
cnM7CkBAIC0zNzY1LDYgKzM3NzUsMTMgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fj
dGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNz
aWJpbGl0eU9iamVjdDo6Y29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3JzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yczxBY2Nlc3NpYmlsaXR5T2JqZWN0
PigqdGhpcywgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIGFuY2VzdG9yKSB7CisgICAg
ICAgIHJldHVybiBhbmNlc3Rvci5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFi
UGFuZWwgJiYgYW5jZXN0b3IuaGFzQXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50KCk7Cisg
ICAgfSk7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUFjdGl2ZURlc2NlbmRh
bnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY29udGFp
bmVycykgY29uc3QKIHsKICAgICBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUoY29u
dGFpbmVycywgYXJpYV9hY3RpdmVkZXNjZW5kYW50QXR0cik7CkBAIC0zNzc1LDkgKzM3OTIsMTEg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhQ29udHJvbHNFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGFyaWEKICAgICBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRl
KGFyaWFDb250cm9scywgYXJpYV9jb250cm9sc0F0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiBjb250cm9sbGVycykgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFDb250cm9sc1JlZmVy
ZW5jaW5nRWxlbWVudHMoKSBjb25zdAogeworICAgIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGNvbnRyb2xsZXJzOwogICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRC
eUF0dHJpYnV0ZShjb250cm9sbGVycywgYXJpYV9jb250cm9sc0F0dHIpOworICAgIHJldHVybiBj
b250cm9sbGVyczsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRGVzY3JpYmVk
QnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGFyaWFEZXNjcmliZWRCeSkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgKaW5kZXggNTljZWE0ZjRiMzk3MjdlYWYzZmEzYTlmNzg1ZmU3MjExYTZjZjA0Mi4u
MWM3ZjNhMTYzYzI5YTRjYTE4ZTgzNzc2N2ZiNmZjYjU4ZWE5ZTJiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTI5OSw4
ICsyOTksMTAgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZv
Y3VzZWRDb250YWluZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGFyaWFBY3RpdmVEZXNj
ZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBjb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhh
c0FyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGhhc0FyaWFF
bGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShIVE1MTmFtZXM6OmFyaWFfY29udHJvbHNBdHRy
KTsgfQorICAgIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFD
b250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGFy
aWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGFy
aWFEZXRhaWxzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3Zl
cnJpZGU7CkBAIC04MDYsNyArODA4LDEyIEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29s
IGlzQVJJQUlucHV0KEFjY2Vzc2liaWxpdHlSb2xlKTsKICAgICB2b2lkIGFyaWFFbGVtZW50c0Zy
b21BdHRyaWJ1dGUoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRl
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dDsKKyAgICBlbnVtIGNsYXNzIEFSSUFFbGVtZW50U2VhcmNoQmVoYXZpb3IgOiB1aW50OF90IHsK
KyAgICAgICAgRmluZEFsbCwKKyAgICAgICAgU3RvcEF0Rmlyc3QKKyAgICB9OworICAgIHZvaWQg
YXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBBUklBRWxlbWVudFNlYXJjaEJlaGF2aW9yID0g
QVJJQUVsZW1lbnRTZWFyY2hCZWhhdmlvcjo6RmluZEFsbCkgY29uc3Q7CisgICAgYm9vbCBoYXNB
cmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAgICAgRmxvYXRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJhZGlvR3JvdXBBbmNlc3Rvcigp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCAxNjc5ZjAxYzUxZGYzZjRmOTI4OTlj
ZGM3MDRhYmY0OGYzM2ZmODA2Li4yZmQzNDYwNjRjMjVmZWEzMWE3NDFkZmEyMDIwZTM0ZTViM2Q2
MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtMTA0OSw5ICsxMDQ5LDEwIEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29udHJvbGxl
ZFRhYlBhbmVsQW5jZXN0b3JzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcmlhQWN0
aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcmlhQ29udHJvbHNFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IGFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNp
bmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGFyaWFEZXRhaWxzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgY29uc3QgPSAwOwpAQCAtMTYyNyw2ICsxNjI4LDIyIEBAIFQqIGZpbmRBbmNlc3Rvcihj
b25zdCBUJiBvYmplY3QsIGJvb2wgaW5jbHVkZVNlbGYsIGNvbnN0IEYmIG1hdGNoZXMpCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEY+CitB
WENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBmaW5kQW5jZXN0b3JzKGNv
bnN0IFQmIG9iamVjdCwgY29uc3QgRiYgbWF0Y2hlcykKK3sKKyAgICBhdXRvKiBwYXJlbnRQdHIg
PSBvYmplY3QucGFyZW50T2JqZWN0KCk7CisgICAgaWYgKCFpczxUPihwYXJlbnRQdHIpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgVCogcGFyZW50ID0gcGFyZW50UHRyOworICAgIEFYQ29y
ZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFuY2VzdG9yczsKKyAgICBmb3Ig
KDsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CisgICAgICAgIGlm
IChtYXRjaGVzKCpwYXJlbnQpKQorICAgICAgICAgICAgYW5jZXN0b3JzLmFwcGVuZChwYXJlbnQp
OworICAgIH0KKyAgICByZXR1cm4gYW5jZXN0b3JzOworfQorCiB2b2lkIGZpbmRNYXRjaGluZ09i
amVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGNvbnN0JiwgQVhDb3JlT2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgRj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGM0ZTI2YTFiNzIyYTE4OWU4YzMwYTZl
ZjA2NjAxYWE4NzdiZDY4OWQuLmI3NzcwMGYyNjNkOTIyY2ZmOGEwMWQzNzM5YmFhZjQ3MzE2ZDE1
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTg0MSw2ICsxODQxLDI1IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNTZWxlY3RlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCitBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb250cm9sbGVkVGFiUGFuZWxPYmplY3RzKCkgY29uc3QK
K3sKKyAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPEVsZW1lbnQqPiBlbGVtZW50czsKKyAg
ICBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoZWxlbWVudHMsIGFyaWFfY29udHJvbHNBdHRyKTsKKyAg
ICBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250cm9sbGVkVGFi
UGFuZWxzOworICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGVsZW1lbnRzKSB7CisgICAg
ICAgIGF1dG8qIHRhYlBhbmVsID0gY2FjaGUtPmdldE9yQ3JlYXRlKGVsZW1lbnQpOworICAgICAg
ICBpZiAoIXRhYlBhbmVsIHx8IHRhYlBhbmVsLT5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5
Um9sZTo6VGFiUGFuZWwpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBjb250cm9s
bGVkVGFiUGFuZWxzLmFwcGVuZCh0YWJQYW5lbCk7CisgICAgfQorICAgIHJldHVybiBjb250cm9s
bGVkVGFiUGFuZWxzOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzVGFi
SXRlbVNlbGVjdGVkKCkgY29uc3QKIHsKICAgICBpZiAoIWlzVGFiSXRlbSgpIHx8ICFtX3JlbmRl
cmVyKQpAQCAtMTg1NywyOSArMTg3NiwyMCBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmlzVGFiSXRlbVNlbGVjdGVkKCkgY29uc3QKICAgICBpZiAoIWZvY3VzZWRFbGVtZW50KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgVmVjdG9yPEVsZW1lbnQqPiBlbGVtZW50
czsKLSAgICBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoZWxlbWVudHMsIGFyaWFfY29udHJvbHNBdHRy
KTsKKyAgICBhdXRvIGNvbnRyb2xsZWRUYWJQYW5lbHMgPSBjb250cm9sbGVkVGFiUGFuZWxPYmpl
Y3RzKCk7CisgICAgaWYgKGNvbnRyb2xsZWRUYWJQYW5lbHMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9iamVjdENh
Y2hlKCk7Ci0gICAgaWYgKCFjYWNoZSkKKyAgICBhdXRvIGNvbnRyb2xsZWRUYWJQYW5lbEFuY2Vz
dG9yc09mRm9jdXMgPSBmb2N1c2VkRWxlbWVudC0+Y29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3Jz
KCk7CisgICAgaWYgKGNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yc09mRm9jdXMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgZm9yIChjb25zdCBhdXRvJiBlbGVt
ZW50IDogZWxlbWVudHMpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGFiUGFuZWwg
PSBjYWNoZS0+Z2V0T3JDcmVhdGUoZWxlbWVudCk7Ci0KLSAgICAgICAgLy8gQSB0YWIgaXRlbSBz
aG91bGQgb25seSBjb250cm9sIHRhYiBwYW5lbHMuCi0gICAgICAgIGlmICghdGFiUGFuZWwgfHwg
dGFiUGFuZWwtPnJvbGVWYWx1ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJQYW5lbCkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogY2hlY2tGb2N1c0VsZW1lbnQgPSBmb2N1c2VkRWxlbWVudDsKLSAgICAgICAgLy8gQ2hlY2sg
aWYgdGhlIGZvY3VzZWQgZWxlbWVudCBpcyBhIGRlc2NlbmRhbnQgb2YgdGhlIGVsZW1lbnQgY29u
dHJvbGxlZCBieSB0aGUgdGFiIGl0ZW0uCi0gICAgICAgIHdoaWxlIChjaGVja0ZvY3VzRWxlbWVu
dCkgewotICAgICAgICAgICAgaWYgKHRhYlBhbmVsID09IGNoZWNrRm9jdXNFbGVtZW50KQorICAg
IGZvciAoYXV0byBjb250cm9sbGVkVGFiUGFuZWwgOiBjb250cm9sbGVkVGFiUGFuZWxzKSB7Cisg
ICAgICAgIGZvciAoYXV0byBmb2N1c1RhYlBhbmVsQW5jZXN0b3IgOiBjb250cm9sbGVkVGFiUGFu
ZWxBbmNlc3RvcnNPZkZvY3VzKSB7CisgICAgICAgICAgICBpZiAoZm9jdXNUYWJQYW5lbEFuY2Vz
dG9yLmdldCgpID09IGNvbnRyb2xsZWRUYWJQYW5lbCkKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgICAgIGNoZWNrRm9jdXNFbGVtZW50ID0gY2hlY2tGb2N1c0VsZW1lbnQt
PnBhcmVudE9iamVjdCgpOwogICAgICAgICB9CiAgICAgfQotICAgIAogICAgIHJldHVybiBmYWxz
ZTsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5kZXggN2I5NGI2MzQxYTg4MGJiNWQyODIwMWI3
N2I4NTFiZTVkNDJhY2M5Ny4uNGEzODI4YWEwYjI2MzY5MzRiMzgzYmEyMWE1OTAxNTE4OWJkMTQw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmgKQEAgLTIyMSw2ICsyMjEsNyBAQCBwcm90ZWN0ZWQ6CiAKIHBy
aXZhdGU6CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRy
b2xsZWRUYWJQYW5lbE9iamVjdHMoKSBjb25zdDsKICAgICB2b2lkIGFyaWFMaXN0Ym94U2VsZWN0
ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICB2b2lkIGFyaWFM
aXN0Ym94VmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwogICAg
IGJvb2wgaXNBbGxvd2VkQ2hpbGRPZlRyZWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5jcHAKaW5kZXggMzY5NTJmOTQwOGZiNTllMmJjNTkyYjdiNWU4ZjFiYjI1YjViMDgxZS4uMjEz
N2JiYjE2ZmQ2MzcwMmNiMmFlOGZhN2ZkODZiNjQ2NTZhMzgxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHAKQEAgLTMzNCw2ICszMzQsMTMgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojpp
bml0aWFsaXplQXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIGNvcmVPYmplY3QsIGJvb2wgaXMK
ICAgICBvYmplY3QuYXJpYUNvbnRyb2xzRWxlbWVudHMoYXJpYUNvbnRyb2xzRWxlbWVudHMpOwog
ICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBQ29udHJvbHNF
bGVtZW50cywgYXJpYUNvbnRyb2xzRWxlbWVudHMpOwogCisgICAgaWYgKG9iamVjdC5yb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiUGFuZWwpIHsKKyAgICAgICAgYXV0byByZWZl
cmVuY2luZ0VsZW1lbnRzID0gb2JqZWN0LmFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMo
KTsKKyAgICAgICAgaWYgKCFyZWZlcmVuY2luZ0VsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBQ29udHJvbHNS
ZWZlcmVuY2luZ0VsZW1lbnRzLCByZWZlcmVuY2luZ0VsZW1lbnRzKTsKKyAgICB9CisgICAgc2V0
T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbnRyb2xsZWRUYWJQYW5lbEFu
Y2VzdG9ycywgb2JqZWN0LmNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9ycygpKTsKKwogICAgIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRGV0YWlsc0VsZW1lbnRzOwogICAgIG9iamVj
dC5hcmlhRGV0YWlsc0VsZW1lbnRzKGFyaWFEZXRhaWxzRWxlbWVudHMpOwogICAgIHNldE9iamVj
dFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBRGV0YWlsc0VsZW1lbnRzLCBhcmlh
RGV0YWlsc0VsZW1lbnRzKTsKQEAgLTE4MjcsMTEgKzE4MzQsNiBAQCB2b2lkIEFYSXNvbGF0ZWRP
YmplY3Q6OmFyaWFBY3RpdmVEZXNjZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmls
aXR5Q2hpbAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEFYSXNvbGF0ZWRP
YmplY3Q6OmFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogdm9p
ZCBBWElzb2xhdGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGJhNjNkYzI3MjFkMjhhODYwYjg3M2YyODM3ZmU2YzQ4
MjEyNzgzZTEuLjQ0NzE5M2E2MTA0NjBmMzdkMDVlOGIxM2FlMWE2NjNlNmUwYzdjYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmgKQEAgLTIyMyw4ICsyMjMsMTAgQEAgcHJpdmF0ZToKICAgICBp
bnQgbGF5b3V0Q291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6TGF5b3V0Q291bnQpOyB9CiAgICAgZG91YmxlIGVzdGltYXRlZExv
YWRpbmdQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGRvdWJsZUF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MpOyB9CiAgICAgYm9v
bCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFPd25zKTsgfQorICAgIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBjb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFs
dWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OkNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9ycykpOyB9
CiAgICAgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQWN0
aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRhaW5lcik7IH0KICAgICB2b2lkIGFyaWFDb250cm9s
c0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92
ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFS
SUFDb250cm9sc0VsZW1lbnRzLCBjaGlsZHJlbik7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3IgYXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElE
PihBWFByb3BlcnR5TmFtZTo6QVJJQUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cykpOyB9CiAg
ICAgdm9pZCBhcmlhRGV0YWlsc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYg
Y2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OkFSSUFEZXRhaWxzRWxlbWVudHMsIGNoaWxkcmVuKTsgfQogICAgIHZv
aWQgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYg
Y2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OkFSSUFFcnJvck1lc3NhZ2VFbGVtZW50cywgY2hpbGRyZW4pOyB9CiAg
ICAgdm9pZCBhcmlhRmxvd1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBj
aGlsZHJlbikgY29uc3Qgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6QVJJQUZsb3dUb0VsZW1lbnRzLCBjaGlsZHJlbik7IH0KQEAgLTUzOCw3
ICs1NDAsNiBAQCBwcml2YXRlOgogICAgIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgQVhDb3JlT2JqZWN0KiBzZWxlY3RlZExpc3RJdGVtKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBhcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhQ29u
dHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcmlhRGVzY3Jp
YmVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgYXJpYURldGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuY3BwCmluZGV4IGJlYWNlYzU4ZTZlYWJmZWMwMTNjZDIzNGY2YmY0NWE3NGRiODYyNDcu
LjhkMGI4ODcwY2EzZjM2M2ZkNWM1ZDM0ZmRkODY3NDI0OWJiYjU4NGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkVHJlZS5jcHAKQEAgLTk4LDE0ICs5OCwxMiBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNv
bGF0ZWRUcmVlOjpjcmVhdGUoQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSkKICAgICBhdXRv
IHRyZWUgPSBhZG9wdFJlZigqbmV3IEFYSXNvbGF0ZWRUcmVlKGF4T2JqZWN0Q2FjaGUpKTsKIAog
ICAgIC8vIEdlbmVyYXRlIHRoZSBub2RlcyBvZiB0aGUgdHJlZSBhbmQgc2V0IGl0cyByb290IGFu
ZCBmb2N1c2VkIG9iamVjdHMuCi0gICAgLy8gRm9yIHRoaXMsIHdlIG5lZWQgdGhlIHJvb3QgYW5k
IGZvY3VzZWQgb2JqZWN0cyBvZiB0aGUgQVhPYmplY3QgdHJlZS4KKyAgICAvLyBGb3IgdGhpcywg
d2UgbmVlZCB0aGUgcm9vdCBhbmQgZm9jdXNlZCBvYmplY3Qgb2YgdGhlIEFYT2JqZWN0IHRyZWUu
CiAgICAgYXV0byogYXhSb290ID0gYXhPYmplY3RDYWNoZS0+Z2V0T3JDcmVhdGUoYXhPYmplY3RD
YWNoZS0+ZG9jdW1lbnQoKS52aWV3KCkpOwogICAgIGlmIChheFJvb3QpCiAgICAgICAgIHRyZWUt
PmdlbmVyYXRlU3VidHJlZSgqYXhSb290LCBudWxscHRyLCB0cnVlKTsKLSAgICBhdXRvKiBheEZv
Y3VzID0gYXhPYmplY3RDYWNoZS0+Zm9jdXNlZE9iamVjdEZvclBhZ2UoYXhPYmplY3RDYWNoZS0+
ZG9jdW1lbnQoKS5wYWdlKCkpOwotICAgIGlmIChheEZvY3VzKQotICAgICAgICB0cmVlLT5zZXRG
b2N1c2VkTm9kZUlEKGF4Rm9jdXMtPm9iamVjdElEKCkpOwogCisgICAgdHJlZS0+c2V0Rm9jdXNl
ZE5vZGUoYXhPYmplY3RDYWNoZS0+Zm9jdXNlZE9iamVjdEZvclBhZ2UoYXhPYmplY3RDYWNoZS0+
ZG9jdW1lbnQoKS5wYWdlKCkpKTsKICAgICAvLyBOb3cgdGhhdCB0aGUgdHJlZSBpcyByZWFkeSB0
byB0YWtlIGNsaWVudCByZXF1ZXN0cywgYWRkIGl0IHRvIHRoZSB0cmVlCiAgICAgLy8gbWFwcyBz
byB0aGF0IGl0IGNhbiBiZSBmb3VuZC4KICAgICBhdXRvIHBhZ2VJRCA9IGF4T2JqZWN0Q2FjaGUt
PnBhZ2VJRCgpOwpAQCAtMjU3LDIzICsyNTUsMzIgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBk
YXRlTm9kZVByb3BlcnR5KGNvbnN0IEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYUHJvcGVydHkK
IHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3BlcnR5Iik7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VM
b2dMb2NrIH07CisgICAgdXBkYXRlTm9kZVByb3BlcnR5TG9ja2VkKGF4T2JqZWN0LCBwcm9wZXJ0
eSk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0eUxvY2tlZChj
b25zdCBBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eSkKK3sK
KyAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3BlcnR5TG9ja2VkIik7
CiAKICAgICBBWFByb3BlcnR5TWFwIHByb3BlcnR5TWFwOwogICAgIHN3aXRjaCAocHJvcGVydHkp
IHsKKyAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpJZGVudGlmaWVyQXR0cmlidXRlOgorICAgICAg
ICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OklkZW50aWZpZXJBdHRyaWJ1dGUsIGF4
T2JqZWN0LmlkZW50aWZpZXJBdHRyaWJ1dGUoKS5pc29sYXRlZENvcHkoKSk7CisgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OklzQ2hlY2tlZDoKICAgICAgICAgcHJvcGVy
dHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpJc0NoZWNrZWQsIGF4T2JqZWN0LmlzQ2hlY2tlZCgp
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6SXNTZWxlY3RlZDoK
KyAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpJc1NlbGVjdGVkLCBheE9i
amVjdC5pc1NlbGVjdGVkKCkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEFYUHJvcGVydHlO
YW1lOjpTb3J0RGlyZWN0aW9uOgogICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5h
bWU6OlNvcnREaXJlY3Rpb24sIHN0YXRpY19jYXN0PGludD4oYXhPYmplY3Quc29ydERpcmVjdGlv
bigpKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OklkZW50aWZp
ZXJBdHRyaWJ1dGU6Ci0gICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6SWRl
bnRpZmllckF0dHJpYnV0ZSwgYXhPYmplY3QuaWRlbnRpZmllckF0dHJpYnV0ZSgpLmlzb2xhdGVk
Q29weSgpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKICAgICBtX3Bl
bmRpbmdQcm9wZXJ0eUNoYW5nZXMuYXBwZW5kKHsgYXhPYmplY3Qub2JqZWN0SUQoKSwgcHJvcGVy
dHlNYXAgfSk7CiB9CiAKQEAgLTM4OSwxOCArMzk2LDMyIEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6
OnNldFJvb3ROb2RlKEFYSXNvbGF0ZWRPYmplY3QqIHJvb3QpCiAgICAgbV9yb290Tm9kZSA9IHJv
b3Q7CiB9CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OnNldEZvY3VzZWROb2RlSUQoQVhJRCBheElE
KQordm9pZCBBWElzb2xhdGVkVHJlZTo6c2V0Rm9jdXNlZE5vZGUoQVhDb3JlT2JqZWN0KiBheE9i
amVjdCkKIHsKLSAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6c2V0Rm9jdXNlZE5vZGVJRCIp
OworICAgIEFYSUQgYXhJRCA9IGF4T2JqZWN0ID8gYXhPYmplY3QtPm9iamVjdElEKCkgOiBBWElE
KCk7CisgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OnNldEZvY3VzZWROb2RlIik7CiAgICAg
QVhMT0cobWFrZVN0cmluZygiYXhJRCAiLCBheElELmxvZ2dpbmdTdHJpbmcoKSkpOwogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dM
b2NrIH07Ci0gICAgbV9wZW5kaW5nRm9jdXNlZE5vZGVJRCA9IGF4SUQ7Ci0KICAgICBBWFByb3Bl
cnR5TWFwIHByb3BlcnR5TWFwOwogICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6
SXNGb2N1c2VkLCB0cnVlKTsKKworICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sg
fTsKICAgICBtX3BlbmRpbmdQcm9wZXJ0eUNoYW5nZXMuYXBwZW5kKHsgYXhJRCwgcHJvcGVydHlN
YXAgfSk7CisgICAgbV9wZW5kaW5nRm9jdXNlZE5vZGVJRCA9IGF4SUQ7CisgICAgaGFuZGxlRm9j
dXNDaGFuZ2UoYXhPYmplY3QpOworfQorCisvLyBSZS1jb21wdXRlIHByb3BlcnRpZXMgZGVwZW5k
ZW50IG9uIHRoZSBmb2N1cyBzdGF0ZSBvZiB0aGUgZ2l2ZW4gb2JqZWN0Lgordm9pZCBBWElzb2xh
dGVkVHJlZTo6aGFuZGxlRm9jdXNDaGFuZ2UoQVhDb3JlT2JqZWN0KiBheE9iamVjdCkKK3sKKyAg
ICBpZiAoIWF4T2JqZWN0KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8gY29udHJv
bGxlZFRhYlBhbmVsQW5jZXN0b3IgOiBheE9iamVjdC0+Y29udHJvbGxlZFRhYlBhbmVsQW5jZXN0
b3JzKCkpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb250cm9sbGVyIDogY29udHJvbGxl
ZFRhYlBhbmVsQW5jZXN0b3ItPmFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoKSkKKyAg
ICAgICAgICAgIHVwZGF0ZU5vZGVQcm9wZXJ0eUxvY2tlZCgqY29udHJvbGxlciwgQVhQcm9wZXJ0
eU5hbWU6OklzU2VsZWN0ZWQpOworICAgIH0KIH0KIAogdm9pZCBBWElzb2xhdGVkVHJlZTo6cmVt
b3ZlTm9kZShBWElEIGF4SUQpCkBAIC00NTYsNiArNDc3LDggQEAgdm9pZCBBWElzb2xhdGVkVHJl
ZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcygpCiAgICAgICAgICAgICBBWFByb3BlcnR5TWFwIHByb3Bl
cnR5TWFwOwogICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpJc0Zv
Y3VzZWQsIGZhbHNlKTsKICAgICAgICAgICAgIG1fcGVuZGluZ1Byb3BlcnR5Q2hhbmdlcy5hcHBl
bmQoeyBtX2ZvY3VzZWROb2RlSUQsIHByb3BlcnR5TWFwIH0pOworCisgICAgICAgICAgICBoYW5k
bGVGb2N1c0NoYW5nZShub2RlRm9ySUQobV9mb2N1c2VkTm9kZUlEKS5nZXQoKSk7CiAgICAgICAg
IH0KICAgICAgICAgbV9mb2N1c2VkTm9kZUlEID0gbV9wZW5kaW5nRm9jdXNlZE5vZGVJRDsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuaAppbmRleCAyNWNkY2M4OWVmZmFiNDMxZDg5NTUxMjljZGRk
MjNkZmFkNzEwZGFiLi44YzYyZWY1MDg3ZTZiNTYzYjM5YjlkMTExNjVlYjcwZmMxMjUzMzQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgdXNpbmcgQVhJc29sYXRlZFRy
ZWVJRCA9IHVuc2lnbmVkOwogCiBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3Qg
ewogICAgIEFSSUFDb250cm9sc0VsZW1lbnRzLAorICAgIEFSSUFDb250cm9sc1JlZmVyZW5jaW5n
RWxlbWVudHMsCiAgICAgQVJJQURldGFpbHNFbGVtZW50cywKICAgICBEcm9wRWZmZWN0cywKICAg
ICBBUklBRXJyb3JNZXNzYWdlRWxlbWVudHMsCkBAIC05OSw2ICsxMDAsNyBAQCBlbnVtIGNsYXNz
IEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIENvbXB1dGVkTGFiZWwsCiAgICAgQ29t
cHV0ZWRSb2xlU3RyaW5nLAogICAgIENvbnRlbnRzLAorICAgIENvbnRyb2xsZWRUYWJQYW5lbEFu
Y2VzdG9ycywKICAgICBDdXJyZW50U3RhdGUsCiAgICAgQ3VycmVudFZhbHVlLAogICAgIERhdGV0
aW1lQXR0cmlidXRlVmFsdWUsCkBAIC0zNjYsMTEgKzM2OCwxMCBAQCBwdWJsaWM6CiAgICAgLy8g
UmVtb3ZlcyB0aGUgZ2l2ZW4gbm9kZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cy4KICAgICB2b2lk
IHJlbW92ZVN1YnRyZWUoQVhJRCk7CiAKLSAgICAvLyBCb3RoIHNldFJvb3ROb2RlSUQgYW5kIHNl
dEZvY3VzZWROb2RlSUQgYXJlIGNhbGxlZCBkdXJpbmcgdGhlIGdlbmVyYXRpb24KLSAgICAvLyBv
ZiB0aGUgSXNvbGF0ZWRUcmVlLgotICAgIC8vIEZvY3VzZWQgbm9kZSB1cGRhdGVzIGluIEFYT2Jq
ZWN0Q2FjaGUgdXNlIHNldEZvY3VzTm9kZUlELgorICAgIC8vIEJvdGggc2V0Um9vdE5vZGVJRCBh
bmQgc2V0Rm9jdXNlZE5vZGUgYXJlIGNhbGxlZCBkdXJpbmcgZ2VuZXJhdGlvbiBvZiB0aGUgSXNv
bGF0ZWRUcmVlLgorICAgIC8vIEZvY3VzZWQgbm9kZSB1cGRhdGVzIGluIEFYT2JqZWN0Q2FjaGUg
dXNlIHNldEZvY3VzZWROb2RlLgogICAgIHZvaWQgc2V0Um9vdE5vZGUoQVhJc29sYXRlZE9iamVj
dCopIFdURl9SRVFVSVJFU19MT0NLKG1fY2hhbmdlTG9nTG9jayk7Ci0gICAgdm9pZCBzZXRGb2N1
c2VkTm9kZUlEKEFYSUQpOworICAgIHZvaWQgc2V0Rm9jdXNlZE5vZGUoQVhDb3JlT2JqZWN0Kik7
CiAKICAgICAvLyBDYWxsZWQgb24gQVggdGhyZWFkIGZyb20gV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgbWV0aG9kcy4KICAgICAvLyBEdXJpbmcgbGF5b3V0IHRlc3RzLCBpdCBpcyBjYWxs
ZWQgb24gdGhlIG1haW4gdGhyZWFkLgpAQCAtMzkxLDYgKzM5Miw5IEBAIHByaXZhdGU6CiAgICAg
Ly8gQ2FsbGVkIG9uIG1haW4gdGhyZWFkIHRvIHVwZGF0ZSBib3RoIG1fbm9kZU1hcCBhbmQgbV9w
ZW5kaW5nQ2hpbGRyZW5VcGRhdGVzLgogICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5JRHMoQVhJRCBw
YXJlbnRJRCwgVmVjdG9yPEFYSUQ+JiYgY2hpbGRyZW5JRHMpIFdURl9SRVFVSVJFU19MT0NLKG1f
Y2hhbmdlTG9nTG9jayk7CiAKKyAgICB2b2lkIHVwZGF0ZU5vZGVQcm9wZXJ0eUxvY2tlZChjb25z
dCBBWENvcmVPYmplY3QmLCBBWFByb3BlcnR5TmFtZSkgV1RGX1JFUVVJUkVTX0xPQ0sobV9jaGFu
Z2VMb2dMb2NrKTsKKyAgICB2b2lkIGhhbmRsZUZvY3VzQ2hhbmdlKEFYQ29yZU9iamVjdCopIFdU
Rl9SRVFVSVJFU19MT0NLKG1fY2hhbmdlTG9nTG9jayk7CisKICAgICBBWElzb2xhdGVkVHJlZUlE
IG1fdHJlZUlEOwogICAgIEFYT2JqZWN0Q2FjaGUqIG1fYXhPYmplY3RDYWNoZSB7IG51bGxwdHIg
fTsKICAgICBib29sIG1fdXNlZE9uQVhUaHJlYWQgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjM1OTgzMWNl
OTlhNzgwODY4MjRkMTQwNGMxZmFlMzM5OTkwMTQ0OC4uOTcxZjQ0ODJkNTNiZGViZTFhNmFhODhj
YWEyZDc1OWM4NTM0NTQ0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTEyLTAxICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSXNvbGF0ZWQgVHJl
ZTogV2hlbiBmb2N1cyBjaGFuZ2VzLCB1cGRhdGUgQVhQcm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWQg
Zm9yIGFueSBhcmlhLWNvbnRyb2xzIGNvbnRyb2xsZXJzIG9mIHRhYiBwYW5lbCBhbmNlc3RvciBv
YmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzM1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1RhYkl0ZW1TZWxlY3RlZCBpcyBkZXBlbmRlbnQg
b24gb2JqZWN0IGZvY3VzIHN0YXRlLAorICAgICAgICBzbyBpc29sYXRlZCB0cmVlIG5lZWRzIHRv
IHJlLWNvbXB1dGUgQVhQcm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWQgd2hlbmV2ZXIgZm9jdXMgY2hh
bmdlcy4KKworICAgICAgICBTcGVjaWZpY2FsbHksIHdlIG5lZWQgdG8gcmUtY29tcHV0ZSB0aGlz
IHByb3BlcnR5IGZvciB0aGUKKyAgICAgICAgYXJpYS1jb250cm9scyBjb250cm9sbGVycyBvZiB0
YWIgcGFuZWwgYW5jZXN0b3JzIG9mIHRoZSBvYmplY3QgdGhhdAorICAgICAgICBjaGFuZ2VkIGZv
Y3VzLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLWNvbnRyb2xzLXdpdGgtdGFicy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLWNvbnRyb2xzLXdpdGgt
dGFicy5odG1sOgorICAgICAgICBNYWtlIHRlc3QgYXN5bmMgc28gdGhhdCBpdCBwYXNzZXMgaW4g
aXNvbGF0ZWQgdHJlZSBtb2RlIChhZnRlciB0aGUKKyAgICAgICAgb3RoZXIgY2hhbmdlcyBpbiB0
aGlzIHBhdGNoKS4KKwogMjAyMS0xMi0wMSAgQW5kcmV1IEJvdGVsbGEgIDxhbmRyZXVAYW5kcmV1
Ym90ZWxsYS5jb20+CiAKICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9mb3Jtcy9mb3JtLXN1Ym1pc3Npb24tMC9tdWx0aXBhcnQtZm9ybWRhdGEu
d2luZG93Lmh0bWwgaXMgbm8gbG9uZ2VyIGZhaWxpbmcg4oCTIHJlbW92ZSBleHBlY3RhdGlvbnMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1jb250cm9scy13aXRo
LXRhYnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNvbnRy
b2xzLXdpdGgtdGFicy1leHBlY3RlZC50eHQKaW5kZXggN2UzYmNiZjI5OTc1ZjM5NWY5MDc0N2Ex
M2Q0NDI2MDEyMjFmNTEyYS4uYTJhNjk2NGVhZTJkYTUzNDcwODZjZDRjZGI4OTVhMzMyNWQyYmYx
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNvbnRyb2xzLXdp
dGgtdGFicy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlh
LWNvbnRyb2xzLXdpdGgtdGFicy1leHBlY3RlZC50eHQKQEAgLTEsMjEgKzEsMTUgQEAKLUNydXN0
Ci1WZWdlcwotVGVzdAotCi1TZWxlY3QgQ3J1c3QKLQotU2VsZWN0IENydXN0Ci0KIFRoaXMgdGVz
dHMgdGhhdCB0aGUgYXJpYSB0YWIgaXRlbSBiZWNvbWVzIHNlbGVjdGVkIGlmIGVpdGhlciBhcmlh
LXNlbGVjdGVkIGlzIHVzZWQsIG9yIGlmIGFyaWEtY29udHJvbHMgcG9pbnRzIHRvIGFuIGl0ZW0g
dGhhdCBjb250YWlucyBLQiBmb2N1cy4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAK
LVBBU1MgdGFiMi5pc1NlbGVjdGVkIGlzIHRydWUKLVBBU1MgdGFiMS5pc1NlbGVjdGVkIGlzIGZh
bHNlCi1QQVNTIHRhYjIuaXNTZWxlY3RlZCBpcyBmYWxzZQotUEFTUyB0YWIxLmlzU2VsZWN0ZWQg
aXMgdHJ1ZQorUEFTUyB0YWIyLmlzU2VsZWN0ZWQgPT09IHRydWUKK1BBU1MgdGFiMS5pc1NlbGVj
dGVkID09PSBmYWxzZQorUEFTUyB0YWIyLmlzU2VsZWN0ZWQgPT09IGZhbHNlCitQQVNTIHRhYjEu
aXNTZWxlY3RlZCA9PT0gdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBU
RVNUIENPTVBMRVRFCiAKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FyaWEtY29udHJvbHMtd2l0aC10YWJzLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FyaWEtY29udHJvbHMtd2l0aC10YWJzLmh0bWwKaW5kZXggMGY5MTk1NGIzNGIxYWI1OTZiYjEy
OGQ0NjIzYmYwNDVmNTU3ODM3MS4uMGRlYTNhOTlkODgzNWZkNWYwNmRmMzk5NGJmMWE3YzJlNmE2
OGEwZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNvbnRyb2xz
LXdpdGgtdGFicy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1jb250
cm9scy13aXRoLXRhYnMuaHRtbApAQCAtMSw1OCArMSw2MCBAQAogPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgaWQ9
ImJvZHkiPgorPGJvZHk+CiAKLTx1bCBpZD0idGFibGlzdF8xIiByb2xlPSJ0YWJsaXN0Ij4KLTxs
aSBpZD0idGFiXzEiIHJvbGU9InRhYiIgdGFiaW5kZXg9Ii0xIiBjbGFzcz0iIj5DcnVzdDwvbGk+
Ci08bGkgaWQ9InRhYl8yIiByb2xlPSJ0YWIiIHRhYmluZGV4PSItMSIgYXJpYS1jb250cm9scz0i
cGFuZWxfMiIgY2xhc3M9IiI+VmVnZXM8L2xpPgotPC91bD4KKzxkaXYgaWQ9ImNvbnRlbnQiPgor
ICAgIDx1bCBpZD0idGFibGlzdF8xIiByb2xlPSJ0YWJsaXN0Ij4KKyAgICAgICAgPGxpIGlkPSJ0
YWJfMSIgcm9sZT0idGFiIiB0YWJpbmRleD0iLTEiIGNsYXNzPSIiPkNydXN0PC9saT4KKyAgICAg
ICAgPGxpIGlkPSJ0YWJfMiIgcm9sZT0idGFiIiB0YWJpbmRleD0iLTEiIGFyaWEtY29udHJvbHM9
InBhbmVsXzIiIGNsYXNzPSIiPlZlZ2VzPC9saT4KKyAgICA8L3VsPgogCi08aDMgdGFiaW5kZXg9
MCBpZD0iZWxlbWVudE91dHNpZGVUYWJzIj5UZXN0PC9oMz4KKyAgICA8aDMgdGFiaW5kZXg9MCBp
ZD0iZWxlbWVudE91dHNpZGVUYWJzIj5UZXN0PC9oMz4KIAotPGRpdiBpZD0icGFuZWxfMSIgcm9s
ZT0idGFicGFuZWwiID4KLTxoMyB0YWJpbmRleD0wPlNlbGVjdCBDcnVzdDwvaDM+Ci08L2Rpdj4K
KyAgICA8ZGl2IGlkPSJwYW5lbF8xIiByb2xlPSJ0YWJwYW5lbCI+CisgICAgICAgIDxoMyB0YWJp
bmRleD0wPlNlbGVjdCBDcnVzdDwvaDM+CisgICAgPC9kaXY+CiAKLTxkaXYgaWQ9InBhbmVsXzIi
IHJvbGU9InRhYnBhbmVsIiA+Ci08aDIgaWQ9Iml0ZW1JblBhbmVsMiIgdGFiaW5kZXg9MD5TZWxl
Y3QgQ3J1c3Q8L2gyPgorICAgIDxkaXYgaWQ9InBhbmVsXzIiIHJvbGU9InRhYnBhbmVsIj4KKyAg
ICAgICAgPGgyIGlkPSJpdGVtSW5QYW5lbDIiIHRhYmluZGV4PTA+U2VsZWN0IENydXN0PC9oMj4K
KyAgICA8L2Rpdj4KIDwvZGl2PgogCi0KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Ci0KIDxzY3JpcHQ+Ci0KICAgICBkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0cyB0aGF0IHRoZSBhcmlhIHRhYiBpdGVtIGJlY29tZXMgc2VsZWN0ZWQgaWYgZWl0aGVyIGFy
aWEtc2VsZWN0ZWQgaXMgdXNlZCwgb3IgaWYgYXJpYS1jb250cm9scyBwb2ludHMgdG8gYW4gaXRl
bSB0aGF0IGNvbnRhaW5zIEtCIGZvY3VzLiIpOwogCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAK
LSAgICAgICAgICB2YXIgdGFiTGlzdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgndGFibGlzdF8xJyk7Ci0gICAgICAgICAgdmFyIHRhYjEgPSB0YWJMaXN0
LmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgICB2YXIgdGFiMiA9IHRhYkxpc3QuY2hpbGRBdElu
ZGV4KDEpOworICAgICAgICB2YXIgdGFiTGlzdCwgdGFiMSwgdGFiMjsKKyAgICAgICAgc2V0VGlt
ZW91dChhc3luYyBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRhYkxpc3QgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3RhYmxpc3RfMScpOworICAgICAg
ICAgICAgdGFiMSA9IHRhYkxpc3QuY2hpbGRBdEluZGV4KDApOworICAgICAgICAgICAgdGFiMiA9
IHRhYkxpc3QuY2hpbGRBdEluZGV4KDEpOwogCi0gICAgICAgICAgLy8gd2Ugc2V0IEtCIGZvY3Vz
IHRvIHNvbWV0aGluZyBpbiBwYW5lbF8yLCB3aGljaCBtZWFucyB0aGF0IHRhYjIgc2hvdWxkIGJl
Y29tZSBzZWxlY3RlZAotICAgICAgICAgIC8vIGJlY2F1c2UgaXQgYXJpYS1jb250cm9scyBwYW5l
bF8yCi0gICAgICAgICAgdmFyIHBhbmVsMkl0ZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
aXRlbUluUGFuZWwyIik7Ci0gICAgICAgICAgcGFuZWwySXRlbS5mb2N1cygpOworICAgICAgICAg
ICAgLy8gU2V0IEtCIGZvY3VzIHRvIHNvbWV0aGluZyBpbiBwYW5lbF8yLCB3aGljaCBtZWFucyB0
aGF0IHRhYjIgc2hvdWxkIGJlY29tZSBzZWxlY3RlZCBiZWNhdXNlCisgICAgICAgICAgICAvLyBp
dCBhcmlhLWNvbnRyb2xzIHBhbmVsXzIuCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiaXRlbUluUGFuZWwyIikuZm9jdXMoKTsKKyAgICAgICAgICAgIGF3YWl0IGV4cGVjdEFz
eW5jRXhwcmVzc2lvbigidGFiMi5pc1NlbGVjdGVkIiwgInRydWUiKTsKIAotICAgICAgICAgIHNo
b3VsZEJlKCJ0YWIyLmlzU2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgICAgICAgLy8gUmVzZXQg
S0IgZm9jdXMgYW5kIHZlcmlmeSB0aGF0IG5laXRoZXIgdGFiIGlzIHNlbGVjdGVkLgorICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZW1lbnRPdXRzaWRlVGFicyIpLmZvY3Vz
KCk7CisgICAgICAgICAgICBhd2FpdCBleHBlY3RBc3luY0V4cHJlc3Npb24oInRhYjEuaXNTZWxl
Y3RlZCIsICJmYWxzZSIpOworICAgICAgICAgICAgYXdhaXQgZXhwZWN0QXN5bmNFeHByZXNzaW9u
KCJ0YWIyLmlzU2VsZWN0ZWQiLCAiZmFsc2UiKTsKIAotICAgICAgICAgIC8vIHJlc2V0IEtCIGZv
Y3VzIGFuZCB2ZXJpZnkgdGhhdCBuZWl0aGVyIHRhYiBpcyBzZWxlY3RlZAotICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGVtZW50T3V0c2lkZVRhYnMiKS5mb2N1cygpOwotICAg
ICAgICAgIHNob3VsZEJlKCJ0YWIxLmlzU2VsZWN0ZWQiLCAiZmFsc2UiKTsKLSAgICAgICAgICBz
aG91bGRCZSgidGFiMi5pc1NlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICAgICAgICAvLyBOb3cg
c2V0IGFyaWEtc2VsZWN0ZWQgdG8gYmUgdHJ1ZSBvbiB0YWIxLiBUaGlzIHNob3VsZCBtYWtlIGl0
IGJlY29tZSBzZWxlY3RlZC4KKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
YWJfMSIpLnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsICJ0cnVlIik7CisgICAgICAgICAg
ICBhd2FpdCBleHBlY3RBc3luY0V4cHJlc3Npb24oInRhYjEuaXNTZWxlY3RlZCIsICJ0cnVlIik7
CiAKLSAgICAgICAgICAvLyBOb3cgd2Ugc2V0IGFyaWEtc2VsZWN0ZWQgdG8gYmUgdHJ1ZSBvbiB0
YWIxIHNvIHRoYXQgaXQgc2hvdWxkIGJlY29tZSBzZWxlY3RlZAotICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0YWJfMSIpLnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsICJ0
cnVlIik7Ci0gICAgICAgICAgc2hvdWxkQmUoInRhYjEuaXNTZWxlY3RlZCIsICJ0cnVlIik7ICAg
ICAgICAgIAotICAgIH0KKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250
ZW50Iikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwogCisgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfSwgMCk7CisgICAgfQogPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4KKwo=
</data>
<flag name="commit-queue"
          id="470810"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445584</attachid>
            <date>2021-12-01 09:38:13 -0800</date>
            <delta_ts>2021-12-01 10:14:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233558-20211201113812.patch</filename>
            <type>text/plain</type>
            <size>32202</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUzNGMxY2I1NGY5NTI3
NjZmY2IxMzhkNTJhMjVmZTY4NjZlZjM4OC4uZTljY2FlMzFiOGNiY2VjY2Q5Y2YzMWRmZjk0NDMy
OGM4NjY3NTM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIxLTEyLTAxICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSXNvbGF0ZWQgVHJl
ZTogV2hlbiBmb2N1cyBjaGFuZ2VzLCB1cGRhdGUgQVhQcm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWQg
Zm9yIGFueSBhcmlhLWNvbnRyb2xzIGNvbnRyb2xsZXJzIG9mIHRhYiBwYW5lbCBhbmNlc3RvciBv
YmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzM1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1RhYkl0ZW1TZWxlY3RlZCBpcyBkZXBlbmRlbnQg
b24gb2JqZWN0IGZvY3VzIHN0YXRlLAorICAgICAgICBzbyBpc29sYXRlZCB0cmVlIG5lZWRzIHRv
IHJlLWNvbXB1dGUgQVhQcm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWQgd2hlbmV2ZXIgZm9jdXMgY2hh
bmdlcy4KKworICAgICAgICBTcGVjaWZpY2FsbHksIHdlIG5lZWQgdG8gcmUtY29tcHV0ZSB0aGlz
IHByb3BlcnR5IGZvciB0aGUKKyAgICAgICAgYXJpYS1jb250cm9scyBjb250cm9sbGVycyBvZiB0
YWIgcGFuZWwgYW5jZXN0b3JzIG9mIHRoZSBvYmplY3QgdGhhdAorICAgICAgICBjaGFuZ2VkIGZv
Y3VzLgorCisgICAgICAgIFRlc3RlZCBieSBhY2Nlc3NpYmlsaXR5L2FyaWEtY29udHJvbHMtd2l0
aC10YWJzLmh0bWwuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6c2V0SXNvbGF0ZWRUcmVlRm9jdXNl
ZE9iamVjdCk6CisgICAgICAgIENhbGwgbmV3IHNldEZvY3VzZWROb2RlIGZ1bmN0aW9uIGluc3Rl
YWQgb2YgZGVsZXRlZCBzZXRGb2N1c2VkTm9kZUlELgorCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUgY29uc3Qp
OgorICAgICAgICBIYW5kbGUgbmV3IEFSSUFFbGVtZW50U2VhcmNoQmVoYXZpb3I6OlN0b3BBdEZp
cnN0IHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFy
aWFDb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMgY29uc3QpOiBBZGRlZC4KKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb250cm9sbGVkVGFiUGFuZWxPYmpl
Y3RzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojppc1RhYkl0ZW1TZWxlY3RlZCBjb25zdCk6CisgICAgICAgIFVzZSBuZXcgQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9ycyBmdW5jdGlvbgor
ICAgICAgICB0byBmaW5kIGFuY2VzdG9ycyBvbmNlIGluc3RlYWQgb2YgcmUtaXRlcmF0aW5nIHRo
ZSBwYXJlbnQgaGllcmFyY2h5IG9mCisgICAgICAgIHRoZSBmb2N1c2VkIG9iamVjdCBtdWx0aXBs
ZSB0aW1lcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5oOgorICAgICAgICBBZGQgY29udHJvbGxlZFRhYlBhbmVsT2JqZWN0cyBwcml2YXRlIGZ1
bmN0aW9uLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFs
aXplQXR0cmlidXRlRGF0YSk6CisgICAgICAgIFN0b3JlIEFYUHJvcGVydHlOYW1lOjpBUklBQ29u
dHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzIGZvciBvYmplY3RzIHRoYXQKKyAgICAgICAgaGF2ZSBh
IHJvbGVWYWx1ZSgpIG9mIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJQYW5lbC4KKworICAgICAgICBB
bHNvIHN0b3JlIGFsbCBBWFByb3BlcnR5TmFtZTo6Q29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3Jz
LCBhcyB0aGV5J2xsIG5lZWQgdG8KKyAgICAgICAgcmUtY29tcHV0ZSB0aGVpciBBWFByb3BlcnR5
TmFtZTo6SXNTZWxlY3RlZCB1cG9uIGZvY3VzIGNoYW5nZS4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKToKKyAgICAgICAgQ2FsbCBzZXRGb2N1c2VkTm9kZSBp
bnN0ZWFkIG9mIHNldEZvY3VzZWROb2RlSUQgKHdoaWNoIGlzIG5vdyBkZWxldGVkKS4KKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydHkpOgorICAgICAg
ICBNb3ZlZCBsb2dpYyB0byBwcml2YXRlIGZ1bmN0aW9uIHVwZGF0ZU5vZGVQcm9wZXJ0eUxvY2tl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydHlM
b2NrZWQpOgorICAgICAgICBBZGRlZC4gVGhpcyBpcyBhIFdURl9SRVFVSVJFU19MT0NLKG1fY2hh
bmdlTG9nTG9jaykgdmVyc2lvbiBvZgorICAgICAgICB1cGRhdGVOb2RlUHJvcGVydHksIGludGVu
ZGVkIHRvIGJlIGNvbnN1bWVkIGJ5IGNhbGxlcnMgd2hvIGFscmVhZHkKKyAgICAgICAgaG9sZCB0
aGlzIGxvY2suIFRoaXMgY291bGQgYmUgdXBkYXRlTm9kZVByb3BlcnR5LCBvciBzb21lIG90aGVy
CisgICAgICAgIGFnZ3JlZ2F0ZSBsb2dpYyAoZS5nLiBjYWxsZWQgZnJvbSBuZXcgaGFuZGxlRm9j
dXNDaGFuZ2UgZnVuY3Rpb24pLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnNl
dEZvY3VzZWROb2RlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6
aGFuZGxlRm9jdXNDaGFuZ2UpOiBBZGRlZC4gCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcyk6CisgICAgICAgIENhbGwgbmV3IGhhbmRsZUZvY3Vz
Q2hhbmdlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnNldEZv
Y3VzZWROb2RlSUQpOiBEZWxldGVkLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKKyAgICAgICAgQWRkIEFYUHJvcGVydHlOYW1lOjpDb250
cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMgYW5kIEFYUHJvcGVydHlOYW1lOjpBUklBQ29udHJvbHNS
ZWZlcmVuY2luZ0VsZW1lbnRzLgorCiAyMDIxLTEyLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXVzZSBuYXZpZ2F0aW9uIHByZWxvYWQgaWYgc2Vydmlj
ZSB3b3JrZXIgaXMgZmV0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcgbmF2aWdhdGlvbiByZXF1ZXN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRl
eCAyYjZlYWY4MTdjNmZlM2I5ZjUwNjI0ZDYxYTkzZjljODI4YmY5NmZiLi4wMTk2MjYzMDJlMDlj
NmIzMGRkZThlM2MzNTUzNTkzNGI0MDcyODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTQxMywxMCArNDEzLDkgQEAgdm9pZCBBWE9i
amVjdENhY2hlOjpzZXRJc29sYXRlZFRyZWVGb2N1c2VkT2JqZWN0KE5vZGUqIGZvY3VzZWROb2Rl
KQogICAgIGlmICghbV9wYWdlSUQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8qIGZvY3Vz
ID0gZ2V0T3JDcmVhdGUoZm9jdXNlZE5vZGUpOwotCisgICAgYXV0byogZm9jdXNlZEF4T2JqZWN0
ID0gZ2V0T3JDcmVhdGUoZm9jdXNlZE5vZGUpOwogICAgIGlmIChhdXRvIHRyZWUgPSBBWElzb2xh
dGVkVHJlZTo6dHJlZUZvclBhZ2VJRCgqbV9wYWdlSUQpKQotICAgICAgICB0cmVlLT5zZXRGb2N1
c2VkTm9kZUlEKGZvY3VzID8gZm9jdXMtPm9iamVjdElEKCkgOiBBWElEKCkpOworICAgICAgICB0
cmVlLT5zZXRGb2N1c2VkTm9kZShmb2N1c2VkQXhPYmplY3QpOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CmluZGV4IDEwYmE5Zjk3NmQzY2RmMjZjOWNjYTJiN2QwOGIyYjI0YzM0MTc4MmIuLjgyM2QyZTc4
N2ZlYWY2ZmFmMzNkZmUzNTc0YWM2MTE4YmRlYzlmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMzczMyw3ICsz
NzMzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRWxlbWVudHNGcm9tQXR0cmli
dXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYKICAgICB9CiB9CiAKLXZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYgZWxlbWVudHMsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZSkgY29uc3QKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRzUmVmZXJl
bmNlZEJ5QXR0cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgZWxlbWVudHMsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSwgQVJJQUVsZW1lbnRTZWFyY2hCZWhhdmlvciBz
ZWFyY2hCZWhhdmlvcikgY29uc3QKIHsKICAgICBhdXRvIGlkID0gaWRlbnRpZmllckF0dHJpYnV0
ZSgpOwogICAgIGlmIChpZC5pc0VtcHR5KCkpCkBAIC0zNzQ4LDExICszNzQ4LDIxIEBAIHZvaWQg
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlCiAgICAgICAgIGlmICghU3BhY2VTcGxpdFN0cmluZyhpZExpc3Qs
IGZhbHNlKS5jb250YWlucyhpZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBp
ZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUoJmVs
ZW1lbnQpKQorICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBjYWNo
ZS0+Z2V0T3JDcmVhdGUoJmVsZW1lbnQpKSB7CiAgICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQo
YXhPYmplY3QpOworICAgICAgICAgICAgaWYgKHNlYXJjaEJlaGF2aW9yID09IEFSSUFFbGVtZW50
U2VhcmNoQmVoYXZpb3I6OlN0b3BBdEZpcnN0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQogICAgIH0KIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNBcmlhRWxl
bWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
KSBjb25zdAoreworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByZWZlcmVuY2luZ0Vs
ZW1lbnRzOworICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShyZWZlcmVuY2lu
Z0VsZW1lbnRzLCBhdHRyaWJ1dGUsIEFSSUFFbGVtZW50U2VhcmNoQmVoYXZpb3I6OlN0b3BBdEZp
cnN0KTsKKyAgICByZXR1cm4gIXJlZmVyZW5jaW5nRWxlbWVudHMuaXNFbXB0eSgpOworfQorCiBi
b29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRh
aW5lcigpIGNvbnN0CiB7CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRhaW5l
cnM7CkBAIC0zNzY1LDYgKzM3NzUsMTMgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fj
dGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNz
aWJpbGl0eU9iamVjdDo6Y29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3JzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yczxBY2Nlc3NpYmlsaXR5T2JqZWN0
PigqdGhpcywgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIGFuY2VzdG9yKSB7CisgICAg
ICAgIHJldHVybiBhbmNlc3Rvci5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFi
UGFuZWwgJiYgYW5jZXN0b3IuaGFzQXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50KCk7Cisg
ICAgfSk7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUFjdGl2ZURlc2NlbmRh
bnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY29udGFp
bmVycykgY29uc3QKIHsKICAgICBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUoY29u
dGFpbmVycywgYXJpYV9hY3RpdmVkZXNjZW5kYW50QXR0cik7CkBAIC0zNzc1LDkgKzM3OTIsMTEg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhQ29udHJvbHNFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGFyaWEKICAgICBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRl
KGFyaWFDb250cm9scywgYXJpYV9jb250cm9sc0F0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiBjb250cm9sbGVycykgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFDb250cm9sc1JlZmVy
ZW5jaW5nRWxlbWVudHMoKSBjb25zdAogeworICAgIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGNvbnRyb2xsZXJzOwogICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRC
eUF0dHJpYnV0ZShjb250cm9sbGVycywgYXJpYV9jb250cm9sc0F0dHIpOworICAgIHJldHVybiBj
b250cm9sbGVyczsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRGVzY3JpYmVk
QnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGFyaWFEZXNjcmliZWRCeSkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgKaW5kZXggNTljZWE0ZjRiMzk3MjdlYWYzZmEzYTlmNzg1ZmU3MjExYTZjZjA0Mi4u
MWM3ZjNhMTYzYzI5YTRjYTE4ZTgzNzc2N2ZiNmZjYjU4ZWE5ZTJiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTI5OSw4
ICsyOTksMTAgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZv
Y3VzZWRDb250YWluZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGFyaWFBY3RpdmVEZXNj
ZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCBvdmVycmlkZTsKKyAgICBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBjb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhh
c0FyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGhhc0FyaWFF
bGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShIVE1MTmFtZXM6OmFyaWFfY29udHJvbHNBdHRy
KTsgfQorICAgIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFD
b250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGFy
aWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGFy
aWFEZXRhaWxzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3Zl
cnJpZGU7CkBAIC04MDYsNyArODA4LDEyIEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29s
IGlzQVJJQUlucHV0KEFjY2Vzc2liaWxpdHlSb2xlKTsKICAgICB2b2lkIGFyaWFFbGVtZW50c0Zy
b21BdHRyaWJ1dGUoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRl
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dDsKKyAgICBlbnVtIGNsYXNzIEFSSUFFbGVtZW50U2VhcmNoQmVoYXZpb3IgOiB1aW50OF90IHsK
KyAgICAgICAgRmluZEFsbCwKKyAgICAgICAgU3RvcEF0Rmlyc3QKKyAgICB9OworICAgIHZvaWQg
YXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBBUklBRWxlbWVudFNlYXJjaEJlaGF2aW9yID0g
QVJJQUVsZW1lbnRTZWFyY2hCZWhhdmlvcjo6RmluZEFsbCkgY29uc3Q7CisgICAgYm9vbCBoYXNB
cmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAgICAgRmxvYXRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJhZGlvR3JvdXBBbmNlc3Rvcigp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCAxNjc5ZjAxYzUxZGYzZjRmOTI4OTlj
ZGM3MDRhYmY0OGYzM2ZmODA2Li4yZmQzNDYwNjRjMjVmZWEzMWE3NDFkZmEyMDIwZTM0ZTViM2Q2
MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtMTA0OSw5ICsxMDQ5LDEwIEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29udHJvbGxl
ZFRhYlBhbmVsQW5jZXN0b3JzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcmlhQWN0
aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcmlhQ29udHJvbHNFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IGFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNp
bmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGFyaWFEZXRhaWxzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgY29uc3QgPSAwOwpAQCAtMTYyNyw2ICsxNjI4LDIyIEBAIFQqIGZpbmRBbmNlc3Rvcihj
b25zdCBUJiBvYmplY3QsIGJvb2wgaW5jbHVkZVNlbGYsIGNvbnN0IEYmIG1hdGNoZXMpCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEY+CitB
WENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBmaW5kQW5jZXN0b3JzKGNv
bnN0IFQmIG9iamVjdCwgY29uc3QgRiYgbWF0Y2hlcykKK3sKKyAgICBhdXRvKiBwYXJlbnRQdHIg
PSBvYmplY3QucGFyZW50T2JqZWN0KCk7CisgICAgaWYgKCFpczxUPihwYXJlbnRQdHIpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgVCogcGFyZW50ID0gcGFyZW50UHRyOworICAgIEFYQ29y
ZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFuY2VzdG9yczsKKyAgICBmb3Ig
KDsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CisgICAgICAgIGlm
IChtYXRjaGVzKCpwYXJlbnQpKQorICAgICAgICAgICAgYW5jZXN0b3JzLmFwcGVuZChwYXJlbnQp
OworICAgIH0KKyAgICByZXR1cm4gYW5jZXN0b3JzOworfQorCiB2b2lkIGZpbmRNYXRjaGluZ09i
amVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGNvbnN0JiwgQVhDb3JlT2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgRj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGM0ZTI2YTFiNzIyYTE4OWU4YzMwYTZl
ZjA2NjAxYWE4NzdiZDY4OWQuLmI3NzcwMGYyNjNkOTIyY2ZmOGEwMWQzNzM5YmFhZjQ3MzE2ZDE1
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTg0MSw2ICsxODQxLDI1IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNTZWxlY3RlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCitBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb250cm9sbGVkVGFiUGFuZWxPYmplY3RzKCkgY29uc3QK
K3sKKyAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPEVsZW1lbnQqPiBlbGVtZW50czsKKyAg
ICBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoZWxlbWVudHMsIGFyaWFfY29udHJvbHNBdHRyKTsKKyAg
ICBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250cm9sbGVkVGFi
UGFuZWxzOworICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGVsZW1lbnRzKSB7CisgICAg
ICAgIGF1dG8qIHRhYlBhbmVsID0gY2FjaGUtPmdldE9yQ3JlYXRlKGVsZW1lbnQpOworICAgICAg
ICBpZiAoIXRhYlBhbmVsIHx8IHRhYlBhbmVsLT5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5
Um9sZTo6VGFiUGFuZWwpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBjb250cm9s
bGVkVGFiUGFuZWxzLmFwcGVuZCh0YWJQYW5lbCk7CisgICAgfQorICAgIHJldHVybiBjb250cm9s
bGVkVGFiUGFuZWxzOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzVGFi
SXRlbVNlbGVjdGVkKCkgY29uc3QKIHsKICAgICBpZiAoIWlzVGFiSXRlbSgpIHx8ICFtX3JlbmRl
cmVyKQpAQCAtMTg1NywyOSArMTg3NiwyMCBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmlzVGFiSXRlbVNlbGVjdGVkKCkgY29uc3QKICAgICBpZiAoIWZvY3VzZWRFbGVtZW50KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgVmVjdG9yPEVsZW1lbnQqPiBlbGVtZW50
czsKLSAgICBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoZWxlbWVudHMsIGFyaWFfY29udHJvbHNBdHRy
KTsKKyAgICBhdXRvIGNvbnRyb2xsZWRUYWJQYW5lbHMgPSBjb250cm9sbGVkVGFiUGFuZWxPYmpl
Y3RzKCk7CisgICAgaWYgKGNvbnRyb2xsZWRUYWJQYW5lbHMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9iamVjdENh
Y2hlKCk7Ci0gICAgaWYgKCFjYWNoZSkKKyAgICBhdXRvIGNvbnRyb2xsZWRUYWJQYW5lbEFuY2Vz
dG9yc09mRm9jdXMgPSBmb2N1c2VkRWxlbWVudC0+Y29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3Jz
KCk7CisgICAgaWYgKGNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yc09mRm9jdXMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgZm9yIChjb25zdCBhdXRvJiBlbGVt
ZW50IDogZWxlbWVudHMpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGFiUGFuZWwg
PSBjYWNoZS0+Z2V0T3JDcmVhdGUoZWxlbWVudCk7Ci0KLSAgICAgICAgLy8gQSB0YWIgaXRlbSBz
aG91bGQgb25seSBjb250cm9sIHRhYiBwYW5lbHMuCi0gICAgICAgIGlmICghdGFiUGFuZWwgfHwg
dGFiUGFuZWwtPnJvbGVWYWx1ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJQYW5lbCkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogY2hlY2tGb2N1c0VsZW1lbnQgPSBmb2N1c2VkRWxlbWVudDsKLSAgICAgICAgLy8gQ2hlY2sg
aWYgdGhlIGZvY3VzZWQgZWxlbWVudCBpcyBhIGRlc2NlbmRhbnQgb2YgdGhlIGVsZW1lbnQgY29u
dHJvbGxlZCBieSB0aGUgdGFiIGl0ZW0uCi0gICAgICAgIHdoaWxlIChjaGVja0ZvY3VzRWxlbWVu
dCkgewotICAgICAgICAgICAgaWYgKHRhYlBhbmVsID09IGNoZWNrRm9jdXNFbGVtZW50KQorICAg
IGZvciAoYXV0byBjb250cm9sbGVkVGFiUGFuZWwgOiBjb250cm9sbGVkVGFiUGFuZWxzKSB7Cisg
ICAgICAgIGZvciAoYXV0byBmb2N1c1RhYlBhbmVsQW5jZXN0b3IgOiBjb250cm9sbGVkVGFiUGFu
ZWxBbmNlc3RvcnNPZkZvY3VzKSB7CisgICAgICAgICAgICBpZiAoZm9jdXNUYWJQYW5lbEFuY2Vz
dG9yLmdldCgpID09IGNvbnRyb2xsZWRUYWJQYW5lbCkKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgICAgIGNoZWNrRm9jdXNFbGVtZW50ID0gY2hlY2tGb2N1c0VsZW1lbnQt
PnBhcmVudE9iamVjdCgpOwogICAgICAgICB9CiAgICAgfQotICAgIAogICAgIHJldHVybiBmYWxz
ZTsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5kZXggN2I5NGI2MzQxYTg4MGJiNWQyODIwMWI3
N2I4NTFiZTVkNDJhY2M5Ny4uNGEzODI4YWEwYjI2MzY5MzRiMzgzYmEyMWE1OTAxNTE4OWJkMTQw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmgKQEAgLTIyMSw2ICsyMjEsNyBAQCBwcm90ZWN0ZWQ6CiAKIHBy
aXZhdGU6CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRy
b2xsZWRUYWJQYW5lbE9iamVjdHMoKSBjb25zdDsKICAgICB2b2lkIGFyaWFMaXN0Ym94U2VsZWN0
ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICB2b2lkIGFyaWFM
aXN0Ym94VmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwogICAg
IGJvb2wgaXNBbGxvd2VkQ2hpbGRPZlRyZWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5jcHAKaW5kZXggMzY5NTJmOTQwOGZiNTllMmJjNTkyYjdiNWU4ZjFiYjI1YjViMDgxZS4uMjEz
N2JiYjE2ZmQ2MzcwMmNiMmFlOGZhN2ZkODZiNjQ2NTZhMzgxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHAKQEAgLTMzNCw2ICszMzQsMTMgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojpp
bml0aWFsaXplQXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIGNvcmVPYmplY3QsIGJvb2wgaXMK
ICAgICBvYmplY3QuYXJpYUNvbnRyb2xzRWxlbWVudHMoYXJpYUNvbnRyb2xzRWxlbWVudHMpOwog
ICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBQ29udHJvbHNF
bGVtZW50cywgYXJpYUNvbnRyb2xzRWxlbWVudHMpOwogCisgICAgaWYgKG9iamVjdC5yb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiUGFuZWwpIHsKKyAgICAgICAgYXV0byByZWZl
cmVuY2luZ0VsZW1lbnRzID0gb2JqZWN0LmFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMo
KTsKKyAgICAgICAgaWYgKCFyZWZlcmVuY2luZ0VsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBQ29udHJvbHNS
ZWZlcmVuY2luZ0VsZW1lbnRzLCByZWZlcmVuY2luZ0VsZW1lbnRzKTsKKyAgICB9CisgICAgc2V0
T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbnRyb2xsZWRUYWJQYW5lbEFu
Y2VzdG9ycywgb2JqZWN0LmNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9ycygpKTsKKwogICAgIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRGV0YWlsc0VsZW1lbnRzOwogICAgIG9iamVj
dC5hcmlhRGV0YWlsc0VsZW1lbnRzKGFyaWFEZXRhaWxzRWxlbWVudHMpOwogICAgIHNldE9iamVj
dFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBRGV0YWlsc0VsZW1lbnRzLCBhcmlh
RGV0YWlsc0VsZW1lbnRzKTsKQEAgLTE4MjcsMTEgKzE4MzQsNiBAQCB2b2lkIEFYSXNvbGF0ZWRP
YmplY3Q6OmFyaWFBY3RpdmVEZXNjZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmls
aXR5Q2hpbAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEFYSXNvbGF0ZWRP
YmplY3Q6OmFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogdm9p
ZCBBWElzb2xhdGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGJhNjNkYzI3MjFkMjhhODYwYjg3M2YyODM3ZmU2YzQ4
MjEyNzgzZTEuLjQ0NzE5M2E2MTA0NjBmMzdkMDVlOGIxM2FlMWE2NjNlNmUwYzdjYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmgKQEAgLTIyMyw4ICsyMjMsMTAgQEAgcHJpdmF0ZToKICAgICBp
bnQgbGF5b3V0Q291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6TGF5b3V0Q291bnQpOyB9CiAgICAgZG91YmxlIGVzdGltYXRlZExv
YWRpbmdQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGRvdWJsZUF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpFc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MpOyB9CiAgICAgYm9v
bCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFPd25zKTsgfQorICAgIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBjb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFs
dWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OkNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9ycykpOyB9
CiAgICAgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQWN0
aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRhaW5lcik7IH0KICAgICB2b2lkIGFyaWFDb250cm9s
c0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92
ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFS
SUFDb250cm9sc0VsZW1lbnRzLCBjaGlsZHJlbik7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3IgYXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElE
PihBWFByb3BlcnR5TmFtZTo6QVJJQUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cykpOyB9CiAg
ICAgdm9pZCBhcmlhRGV0YWlsc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYg
Y2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OkFSSUFEZXRhaWxzRWxlbWVudHMsIGNoaWxkcmVuKTsgfQogICAgIHZv
aWQgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYg
Y2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OkFSSUFFcnJvck1lc3NhZ2VFbGVtZW50cywgY2hpbGRyZW4pOyB9CiAg
ICAgdm9pZCBhcmlhRmxvd1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBj
aGlsZHJlbikgY29uc3Qgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6QVJJQUZsb3dUb0VsZW1lbnRzLCBjaGlsZHJlbik7IH0KQEAgLTUzOCw3
ICs1NDAsNiBAQCBwcml2YXRlOgogICAgIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgQVhDb3JlT2JqZWN0KiBzZWxlY3RlZExpc3RJdGVtKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBhcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhQ29u
dHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcmlhRGVzY3Jp
YmVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgYXJpYURldGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuY3BwCmluZGV4IGJlYWNlYzU4ZTZlYWJmZWMwMTNjZDIzNGY2YmY0NWE3NGRiODYyNDcu
LjI4YWNmZWI0MjZiNzJhY2RhYjU4N2Y0NjljMTcyYjdjNjAyMTE0NTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkVHJlZS5jcHAKQEAgLTk4LDE0ICs5OCwxMiBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNv
bGF0ZWRUcmVlOjpjcmVhdGUoQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSkKICAgICBhdXRv
IHRyZWUgPSBhZG9wdFJlZigqbmV3IEFYSXNvbGF0ZWRUcmVlKGF4T2JqZWN0Q2FjaGUpKTsKIAog
ICAgIC8vIEdlbmVyYXRlIHRoZSBub2RlcyBvZiB0aGUgdHJlZSBhbmQgc2V0IGl0cyByb290IGFu
ZCBmb2N1c2VkIG9iamVjdHMuCi0gICAgLy8gRm9yIHRoaXMsIHdlIG5lZWQgdGhlIHJvb3QgYW5k
IGZvY3VzZWQgb2JqZWN0cyBvZiB0aGUgQVhPYmplY3QgdHJlZS4KKyAgICAvLyBGb3IgdGhpcywg
d2UgbmVlZCB0aGUgcm9vdCBhbmQgZm9jdXNlZCBvYmplY3Qgb2YgdGhlIEFYT2JqZWN0IHRyZWUu
CiAgICAgYXV0byogYXhSb290ID0gYXhPYmplY3RDYWNoZS0+Z2V0T3JDcmVhdGUoYXhPYmplY3RD
YWNoZS0+ZG9jdW1lbnQoKS52aWV3KCkpOwogICAgIGlmIChheFJvb3QpCiAgICAgICAgIHRyZWUt
PmdlbmVyYXRlU3VidHJlZSgqYXhSb290LCBudWxscHRyLCB0cnVlKTsKLSAgICBhdXRvKiBheEZv
Y3VzID0gYXhPYmplY3RDYWNoZS0+Zm9jdXNlZE9iamVjdEZvclBhZ2UoYXhPYmplY3RDYWNoZS0+
ZG9jdW1lbnQoKS5wYWdlKCkpOwotICAgIGlmIChheEZvY3VzKQotICAgICAgICB0cmVlLT5zZXRG
b2N1c2VkTm9kZUlEKGF4Rm9jdXMtPm9iamVjdElEKCkpOwogCisgICAgdHJlZS0+c2V0Rm9jdXNl
ZE5vZGUoYXhPYmplY3RDYWNoZS0+Zm9jdXNlZE9iamVjdEZvclBhZ2UoYXhPYmplY3RDYWNoZS0+
ZG9jdW1lbnQoKS5wYWdlKCkpKTsKICAgICAvLyBOb3cgdGhhdCB0aGUgdHJlZSBpcyByZWFkeSB0
byB0YWtlIGNsaWVudCByZXF1ZXN0cywgYWRkIGl0IHRvIHRoZSB0cmVlCiAgICAgLy8gbWFwcyBz
byB0aGF0IGl0IGNhbiBiZSBmb3VuZC4KICAgICBhdXRvIHBhZ2VJRCA9IGF4T2JqZWN0Q2FjaGUt
PnBhZ2VJRCgpOwpAQCAtMjU3LDIzICsyNTUsMzIgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBk
YXRlTm9kZVByb3BlcnR5KGNvbnN0IEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIEFYUHJvcGVydHkK
IHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3BlcnR5Iik7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VM
b2dMb2NrIH07CisgICAgdXBkYXRlTm9kZVByb3BlcnR5TG9ja2VkKGF4T2JqZWN0LCBwcm9wZXJ0
eSk7Cit9CisKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0eUxvY2tlZChj
b25zdCBBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eSkKK3sK
KyAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3BlcnR5TG9ja2VkIik7
CiAKICAgICBBWFByb3BlcnR5TWFwIHByb3BlcnR5TWFwOwogICAgIHN3aXRjaCAocHJvcGVydHkp
IHsKKyAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpJZGVudGlmaWVyQXR0cmlidXRlOgorICAgICAg
ICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OklkZW50aWZpZXJBdHRyaWJ1dGUsIGF4
T2JqZWN0LmlkZW50aWZpZXJBdHRyaWJ1dGUoKS5pc29sYXRlZENvcHkoKSk7CisgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OklzQ2hlY2tlZDoKICAgICAgICAgcHJvcGVy
dHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpJc0NoZWNrZWQsIGF4T2JqZWN0LmlzQ2hlY2tlZCgp
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6SXNTZWxlY3RlZDoK
KyAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpJc1NlbGVjdGVkLCBheE9i
amVjdC5pc1NlbGVjdGVkKCkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEFYUHJvcGVydHlO
YW1lOjpTb3J0RGlyZWN0aW9uOgogICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5h
bWU6OlNvcnREaXJlY3Rpb24sIHN0YXRpY19jYXN0PGludD4oYXhPYmplY3Quc29ydERpcmVjdGlv
bigpKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OklkZW50aWZp
ZXJBdHRyaWJ1dGU6Ci0gICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6SWRl
bnRpZmllckF0dHJpYnV0ZSwgYXhPYmplY3QuaWRlbnRpZmllckF0dHJpYnV0ZSgpLmlzb2xhdGVk
Q29weSgpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKICAgICBtX3Bl
bmRpbmdQcm9wZXJ0eUNoYW5nZXMuYXBwZW5kKHsgYXhPYmplY3Qub2JqZWN0SUQoKSwgcHJvcGVy
dHlNYXAgfSk7CiB9CiAKQEAgLTM4OSwxOCArMzk2LDMyIEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6
OnNldFJvb3ROb2RlKEFYSXNvbGF0ZWRPYmplY3QqIHJvb3QpCiAgICAgbV9yb290Tm9kZSA9IHJv
b3Q7CiB9CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OnNldEZvY3VzZWROb2RlSUQoQVhJRCBheElE
KQordm9pZCBBWElzb2xhdGVkVHJlZTo6c2V0Rm9jdXNlZE5vZGUoQWNjZXNzaWJpbGl0eU9iamVj
dCogYXhPYmplY3QpCiB7Ci0gICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OnNldEZvY3VzZWRO
b2RlSUQiKTsKKyAgICBBWElEIGF4SUQgPSBheE9iamVjdCA/IGF4T2JqZWN0LT5vYmplY3RJRCgp
IDogQVhJRCgpOworICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpzZXRGb2N1c2VkTm9kZSIp
OwogICAgIEFYTE9HKG1ha2VTdHJpbmcoImF4SUQgIiwgYXhJRC5sb2dnaW5nU3RyaW5nKCkpKTsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fY2hh
bmdlTG9nTG9jayB9OwotICAgIG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQgPSBheElEOwotCiAgICAg
QVhQcm9wZXJ0eU1hcCBwcm9wZXJ0eU1hcDsKICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0
eU5hbWU6OklzRm9jdXNlZCwgdHJ1ZSk7CisKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VM
b2dMb2NrIH07CiAgICAgbV9wZW5kaW5nUHJvcGVydHlDaGFuZ2VzLmFwcGVuZCh7IGF4SUQsIHBy
b3BlcnR5TWFwIH0pOworICAgIG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQgPSBheElEOworICAgIGhh
bmRsZUZvY3VzQ2hhbmdlKGF4T2JqZWN0KTsKK30KKworLy8gUmUtY29tcHV0ZSBwcm9wZXJ0aWVz
IGRlcGVuZGVudCBvbiB0aGUgZm9jdXMgc3RhdGUgb2YgdGhlIGdpdmVuIG9iamVjdC4KK3ZvaWQg
QVhJc29sYXRlZFRyZWU6OmhhbmRsZUZvY3VzQ2hhbmdlKEFYQ29yZU9iamVjdCogYXhPYmplY3Qp
Cit7CisgICAgaWYgKCFheE9iamVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRv
IGNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yIDogYXhPYmplY3QtPmNvbnRyb2xsZWRUYWJQYW5l
bEFuY2VzdG9ycygpKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgY29udHJvbGxlciA6IGNv
bnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9yLT5hcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRz
KCkpCisgICAgICAgICAgICB1cGRhdGVOb2RlUHJvcGVydHlMb2NrZWQoKmNvbnRyb2xsZXIsIEFY
UHJvcGVydHlOYW1lOjpJc1NlbGVjdGVkKTsKKyAgICB9CiB9CiAKIHZvaWQgQVhJc29sYXRlZFRy
ZWU6OnJlbW92ZU5vZGUoQVhJRCBheElEKQpAQCAtNDU2LDYgKzQ3Nyw4IEBAIHZvaWQgQVhJc29s
YXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMoKQogICAgICAgICAgICAgQVhQcm9wZXJ0eU1h
cCBwcm9wZXJ0eU1hcDsKICAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFt
ZTo6SXNGb2N1c2VkLCBmYWxzZSk7CiAgICAgICAgICAgICBtX3BlbmRpbmdQcm9wZXJ0eUNoYW5n
ZXMuYXBwZW5kKHsgbV9mb2N1c2VkTm9kZUlELCBwcm9wZXJ0eU1hcCB9KTsKKworICAgICAgICAg
ICAgaGFuZGxlRm9jdXNDaGFuZ2Uobm9kZUZvcklEKG1fZm9jdXNlZE5vZGVJRCkuZ2V0KCkpOwog
ICAgICAgICB9CiAgICAgICAgIG1fZm9jdXNlZE5vZGVJRCA9IG1fcGVuZGluZ0ZvY3VzZWROb2Rl
SUQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5kZXggMjVjZGNjODllZmZhYjQzMWQ4OTU1
MTI5Y2RkZDIzZGZhZDcxMGRhYi4uZWQwNTljODM2YjJkMmNhOWZjZDAwNDU0NTE5MGQ1NWNlODIw
ZGM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFRleHRT
dHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVj
dDsKIGNsYXNzIEFYSXNvbGF0ZWRPYmplY3Q7CiBjbGFzcyBBWE9iamVjdENhY2hlOwogY2xhc3Mg
UGFnZTsKQEAgLTQ5LDYgKzUwLDcgQEAgdXNpbmcgQVhJc29sYXRlZFRyZWVJRCA9IHVuc2lnbmVk
OwogCiBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIEFSSUFDb250
cm9sc0VsZW1lbnRzLAorICAgIEFSSUFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMsCiAgICAg
QVJJQURldGFpbHNFbGVtZW50cywKICAgICBEcm9wRWZmZWN0cywKICAgICBBUklBRXJyb3JNZXNz
YWdlRWxlbWVudHMsCkBAIC05OSw2ICsxMDEsNyBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1l
IDogdWludDE2X3QgewogICAgIENvbXB1dGVkTGFiZWwsCiAgICAgQ29tcHV0ZWRSb2xlU3RyaW5n
LAogICAgIENvbnRlbnRzLAorICAgIENvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9ycywKICAgICBD
dXJyZW50U3RhdGUsCiAgICAgQ3VycmVudFZhbHVlLAogICAgIERhdGV0aW1lQXR0cmlidXRlVmFs
dWUsCkBAIC0zNjYsMTEgKzM2OSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gUmVtb3ZlcyB0aGUgZ2l2
ZW4gbm9kZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cy4KICAgICB2b2lkIHJlbW92ZVN1YnRyZWUo
QVhJRCk7CiAKLSAgICAvLyBCb3RoIHNldFJvb3ROb2RlSUQgYW5kIHNldEZvY3VzZWROb2RlSUQg
YXJlIGNhbGxlZCBkdXJpbmcgdGhlIGdlbmVyYXRpb24KLSAgICAvLyBvZiB0aGUgSXNvbGF0ZWRU
cmVlLgotICAgIC8vIEZvY3VzZWQgbm9kZSB1cGRhdGVzIGluIEFYT2JqZWN0Q2FjaGUgdXNlIHNl
dEZvY3VzTm9kZUlELgorICAgIC8vIEJvdGggc2V0Um9vdE5vZGVJRCBhbmQgc2V0Rm9jdXNlZE5v
ZGUgYXJlIGNhbGxlZCBkdXJpbmcgZ2VuZXJhdGlvbiBvZiB0aGUgSXNvbGF0ZWRUcmVlLgorICAg
IC8vIEZvY3VzZWQgbm9kZSB1cGRhdGVzIGluIEFYT2JqZWN0Q2FjaGUgdXNlIHNldEZvY3VzZWRO
b2RlLgogICAgIHZvaWQgc2V0Um9vdE5vZGUoQVhJc29sYXRlZE9iamVjdCopIFdURl9SRVFVSVJF
U19MT0NLKG1fY2hhbmdlTG9nTG9jayk7Ci0gICAgdm9pZCBzZXRGb2N1c2VkTm9kZUlEKEFYSUQp
OworICAgIHZvaWQgc2V0Rm9jdXNlZE5vZGUoQWNjZXNzaWJpbGl0eU9iamVjdCopOwogCiAgICAg
Ly8gQ2FsbGVkIG9uIEFYIHRocmVhZCBmcm9tIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IG1ldGhvZHMuCiAgICAgLy8gRHVyaW5nIGxheW91dCB0ZXN0cywgaXQgaXMgY2FsbGVkIG9uIHRo
ZSBtYWluIHRocmVhZC4KQEAgLTM5MSw2ICszOTMsOSBAQCBwcml2YXRlOgogICAgIC8vIENhbGxl
ZCBvbiBtYWluIHRocmVhZCB0byB1cGRhdGUgYm90aCBtX25vZGVNYXAgYW5kIG1fcGVuZGluZ0No
aWxkcmVuVXBkYXRlcy4KICAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuSURzKEFYSUQgcGFyZW50SUQs
IFZlY3RvcjxBWElEPiYmIGNoaWxkcmVuSURzKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2NoYW5nZUxv
Z0xvY2spOwogCisgICAgdm9pZCB1cGRhdGVOb2RlUHJvcGVydHlMb2NrZWQoY29uc3QgQVhDb3Jl
T2JqZWN0JiwgQVhQcm9wZXJ0eU5hbWUpIFdURl9SRVFVSVJFU19MT0NLKG1fY2hhbmdlTG9nTG9j
ayk7CisgICAgdm9pZCBoYW5kbGVGb2N1c0NoYW5nZShBWENvcmVPYmplY3QqKSBXVEZfUkVRVUlS
RVNfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOworCiAgICAgQVhJc29sYXRlZFRyZWVJRCBtX3RyZWVJ
RDsKICAgICBBWE9iamVjdENhY2hlKiBtX2F4T2JqZWN0Q2FjaGUgeyBudWxscHRyIH07CiAgICAg
Ym9vbCBtX3VzZWRPbkFYVGhyZWFkIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIzNTk4MzFjZTk5YTc4MDg2
ODI0ZDE0MDRjMWZhZTMzOTk5MDE0NDguLjk3MWY0NDgyZDUzYmRlYmUxYTZhYTg4Y2FhMmQ3NTlj
ODUzNDU0NGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMS0xMi0wMSAgVHlsZXIgV2lsY29j
ayAgPHR5bGVyX3dAYXBwbGUuY29tPgorCisgICAgICAgIEFYIElzb2xhdGVkIFRyZWU6IFdoZW4g
Zm9jdXMgY2hhbmdlcywgdXBkYXRlIEFYUHJvcGVydHlOYW1lOjpJc1NlbGVjdGVkIGZvciBhbnkg
YXJpYS1jb250cm9scyBjb250cm9sbGVycyBvZiB0YWIgcGFuZWwgYW5jZXN0b3Igb2JqZWN0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTU4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6aXNUYWJJdGVtU2VsZWN0ZWQgaXMgZGVwZW5kZW50IG9uIG9iamVj
dCBmb2N1cyBzdGF0ZSwKKyAgICAgICAgc28gaXNvbGF0ZWQgdHJlZSBuZWVkcyB0byByZS1jb21w
dXRlIEFYUHJvcGVydHlOYW1lOjpJc1NlbGVjdGVkIHdoZW5ldmVyIGZvY3VzIGNoYW5nZXMuCisK
KyAgICAgICAgU3BlY2lmaWNhbGx5LCB3ZSBuZWVkIHRvIHJlLWNvbXB1dGUgdGhpcyBwcm9wZXJ0
eSBmb3IgdGhlCisgICAgICAgIGFyaWEtY29udHJvbHMgY29udHJvbGxlcnMgb2YgdGFiIHBhbmVs
IGFuY2VzdG9ycyBvZiB0aGUgb2JqZWN0IHRoYXQKKyAgICAgICAgY2hhbmdlZCBmb2N1cy4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJpYS1jb250cm9scy13aXRoLXRhYnMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJpYS1jb250cm9scy13aXRoLXRhYnMuaHRt
bDoKKyAgICAgICAgTWFrZSB0ZXN0IGFzeW5jIHNvIHRoYXQgaXQgcGFzc2VzIGluIGlzb2xhdGVk
IHRyZWUgbW9kZSAoYWZ0ZXIgdGhlCisgICAgICAgIG90aGVyIGNoYW5nZXMgaW4gdGhpcyBwYXRj
aCkuCisKIDIwMjEtMTItMDEgIEFuZHJldSBCb3RlbGxhICA8YW5kcmV1QGFuZHJldWJvdGVsbGEu
Y29tPgogCiAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZm9ybXMvZm9ybS1zdWJtaXNzaW9uLTAvbXVsdGlwYXJ0LWZvcm1kYXRhLndpbmRvdy5o
dG1sIGlzIG5vIGxvbmdlciBmYWlsaW5nIOKAkyByZW1vdmUgZXhwZWN0YXRpb25zCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtY29udHJvbHMtd2l0aC10YWJzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1jb250cm9scy13aXRo
LXRhYnMtZXhwZWN0ZWQudHh0CmluZGV4IDdlM2JjYmYyOTk3NWYzOTVmOTA3NDdhMTNkNDQyNjAx
MjIxZjUxMmEuLmEyYTY5NjRlYWUyZGE1MzQ3MDg2Y2Q0Y2RiODk1YTMzMjVkMmJmMWQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1jb250cm9scy13aXRoLXRhYnMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1jb250cm9s
cy13aXRoLXRhYnMtZXhwZWN0ZWQudHh0CkBAIC0xLDIxICsxLDE1IEBACi1DcnVzdAotVmVnZXMK
LVRlc3QKLQotU2VsZWN0IENydXN0Ci0KLVNlbGVjdCBDcnVzdAotCiBUaGlzIHRlc3RzIHRoYXQg
dGhlIGFyaWEgdGFiIGl0ZW0gYmVjb21lcyBzZWxlY3RlZCBpZiBlaXRoZXIgYXJpYS1zZWxlY3Rl
ZCBpcyB1c2VkLCBvciBpZiBhcmlhLWNvbnRyb2xzIHBvaW50cyB0byBhbiBpdGVtIHRoYXQgY29u
dGFpbnMgS0IgZm9jdXMuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIHRh
YjIuaXNTZWxlY3RlZCBpcyB0cnVlCi1QQVNTIHRhYjEuaXNTZWxlY3RlZCBpcyBmYWxzZQotUEFT
UyB0YWIyLmlzU2VsZWN0ZWQgaXMgZmFsc2UKLVBBU1MgdGFiMS5pc1NlbGVjdGVkIGlzIHRydWUK
K1BBU1MgdGFiMi5pc1NlbGVjdGVkID09PSB0cnVlCitQQVNTIHRhYjEuaXNTZWxlY3RlZCA9PT0g
ZmFsc2UKK1BBU1MgdGFiMi5pc1NlbGVjdGVkID09PSBmYWxzZQorUEFTUyB0YWIxLmlzU2VsZWN0
ZWQgPT09IHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQogCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNv
bnRyb2xzLXdpdGgtdGFicy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNv
bnRyb2xzLXdpdGgtdGFicy5odG1sCmluZGV4IDBmOTE5NTRiMzRiMWFiNTk2YmIxMjhkNDYyM2Jm
MDQ1ZjU1NzgzNzEuLjBkZWEzYTk5ZDg4MzVmZDVmMDZkZjM5OTRiZjFhN2MyZTZhNjhhMGUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1jb250cm9scy13aXRoLXRh
YnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtY29udHJvbHMtd2l0
aC10YWJzLmh0bWwKQEAgLTEsNTggKzEsNjAgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vz
c2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4K
Kzxib2R5PgogCi08dWwgaWQ9InRhYmxpc3RfMSIgcm9sZT0idGFibGlzdCI+Ci08bGkgaWQ9InRh
Yl8xIiByb2xlPSJ0YWIiIHRhYmluZGV4PSItMSIgY2xhc3M9IiI+Q3J1c3Q8L2xpPgotPGxpIGlk
PSJ0YWJfMiIgcm9sZT0idGFiIiB0YWJpbmRleD0iLTEiIGFyaWEtY29udHJvbHM9InBhbmVsXzIi
IGNsYXNzPSIiPlZlZ2VzPC9saT4KLTwvdWw+Cis8ZGl2IGlkPSJjb250ZW50Ij4KKyAgICA8dWwg
aWQ9InRhYmxpc3RfMSIgcm9sZT0idGFibGlzdCI+CisgICAgICAgIDxsaSBpZD0idGFiXzEiIHJv
bGU9InRhYiIgdGFiaW5kZXg9Ii0xIiBjbGFzcz0iIj5DcnVzdDwvbGk+CisgICAgICAgIDxsaSBp
ZD0idGFiXzIiIHJvbGU9InRhYiIgdGFiaW5kZXg9Ii0xIiBhcmlhLWNvbnRyb2xzPSJwYW5lbF8y
IiBjbGFzcz0iIj5WZWdlczwvbGk+CisgICAgPC91bD4KIAotPGgzIHRhYmluZGV4PTAgaWQ9ImVs
ZW1lbnRPdXRzaWRlVGFicyI+VGVzdDwvaDM+CisgICAgPGgzIHRhYmluZGV4PTAgaWQ9ImVsZW1l
bnRPdXRzaWRlVGFicyI+VGVzdDwvaDM+CiAKLTxkaXYgaWQ9InBhbmVsXzEiIHJvbGU9InRhYnBh
bmVsIiA+Ci08aDMgdGFiaW5kZXg9MD5TZWxlY3QgQ3J1c3Q8L2gzPgotPC9kaXY+CisgICAgPGRp
diBpZD0icGFuZWxfMSIgcm9sZT0idGFicGFuZWwiPgorICAgICAgICA8aDMgdGFiaW5kZXg9MD5T
ZWxlY3QgQ3J1c3Q8L2gzPgorICAgIDwvZGl2PgogCi08ZGl2IGlkPSJwYW5lbF8yIiByb2xlPSJ0
YWJwYW5lbCIgPgotPGgyIGlkPSJpdGVtSW5QYW5lbDIiIHRhYmluZGV4PTA+U2VsZWN0IENydXN0
PC9oMj4KKyAgICA8ZGl2IGlkPSJwYW5lbF8yIiByb2xlPSJ0YWJwYW5lbCI+CisgICAgICAgIDxo
MiBpZD0iaXRlbUluUGFuZWwyIiB0YWJpbmRleD0wPlNlbGVjdCBDcnVzdDwvaDI+CisgICAgPC9k
aXY+CiA8L2Rpdj4KIAotCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgotCiA8c2NyaXB0PgotCiAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhh
dCB0aGUgYXJpYSB0YWIgaXRlbSBiZWNvbWVzIHNlbGVjdGVkIGlmIGVpdGhlciBhcmlhLXNlbGVj
dGVkIGlzIHVzZWQsIG9yIGlmIGFyaWEtY29udHJvbHMgcG9pbnRzIHRvIGFuIGl0ZW0gdGhhdCBj
b250YWlucyBLQiBmb2N1cy4iKTsKIAogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpIHsKKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAg
ICAgdmFyIHRhYkxpc3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoJ3RhYmxpc3RfMScpOwotICAgICAgICAgIHZhciB0YWIxID0gdGFiTGlzdC5jaGlsZEF0
SW5kZXgoMCk7Ci0gICAgICAgICAgdmFyIHRhYjIgPSB0YWJMaXN0LmNoaWxkQXRJbmRleCgxKTsK
KyAgICAgICAgdmFyIHRhYkxpc3QsIHRhYjEsIHRhYjI7CisgICAgICAgIHNldFRpbWVvdXQoYXN5
bmMgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0YWJMaXN0ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd0YWJsaXN0XzEnKTsKKyAgICAgICAgICAgIHRh
YjEgPSB0YWJMaXN0LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgICAgIHRhYjIgPSB0YWJMaXN0
LmNoaWxkQXRJbmRleCgxKTsKIAotICAgICAgICAgIC8vIHdlIHNldCBLQiBmb2N1cyB0byBzb21l
dGhpbmcgaW4gcGFuZWxfMiwgd2hpY2ggbWVhbnMgdGhhdCB0YWIyIHNob3VsZCBiZWNvbWUgc2Vs
ZWN0ZWQKLSAgICAgICAgICAvLyBiZWNhdXNlIGl0IGFyaWEtY29udHJvbHMgcGFuZWxfMgotICAg
ICAgICAgIHZhciBwYW5lbDJJdGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIml0ZW1JblBh
bmVsMiIpOwotICAgICAgICAgIHBhbmVsMkl0ZW0uZm9jdXMoKTsKKyAgICAgICAgICAgIC8vIFNl
dCBLQiBmb2N1cyB0byBzb21ldGhpbmcgaW4gcGFuZWxfMiwgd2hpY2ggbWVhbnMgdGhhdCB0YWIy
IHNob3VsZCBiZWNvbWUgc2VsZWN0ZWQgYmVjYXVzZQorICAgICAgICAgICAgLy8gaXQgYXJpYS1j
b250cm9scyBwYW5lbF8yLgorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIml0
ZW1JblBhbmVsMiIpLmZvY3VzKCk7CisgICAgICAgICAgICBhd2FpdCBleHBlY3RBc3luY0V4cHJl
c3Npb24oInRhYjIuaXNTZWxlY3RlZCIsICJ0cnVlIik7CiAKLSAgICAgICAgICBzaG91bGRCZSgi
dGFiMi5pc1NlbGVjdGVkIiwgInRydWUiKTsKKyAgICAgICAgICAgIC8vIFJlc2V0IEtCIGZvY3Vz
IGFuZCB2ZXJpZnkgdGhhdCBuZWl0aGVyIHRhYiBpcyBzZWxlY3RlZC4KKyAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGVtZW50T3V0c2lkZVRhYnMiKS5mb2N1cygpOworICAg
ICAgICAgICAgYXdhaXQgZXhwZWN0QXN5bmNFeHByZXNzaW9uKCJ0YWIxLmlzU2VsZWN0ZWQiLCAi
ZmFsc2UiKTsKKyAgICAgICAgICAgIGF3YWl0IGV4cGVjdEFzeW5jRXhwcmVzc2lvbigidGFiMi5p
c1NlbGVjdGVkIiwgImZhbHNlIik7CiAKLSAgICAgICAgICAvLyByZXNldCBLQiBmb2N1cyBhbmQg
dmVyaWZ5IHRoYXQgbmVpdGhlciB0YWIgaXMgc2VsZWN0ZWQKLSAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZWxlbWVudE91dHNpZGVUYWJzIikuZm9jdXMoKTsKLSAgICAgICAgICBz
aG91bGRCZSgidGFiMS5pc1NlbGVjdGVkIiwgImZhbHNlIik7Ci0gICAgICAgICAgc2hvdWxkQmUo
InRhYjIuaXNTZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgICAgICAgLy8gTm93IHNldCBhcmlh
LXNlbGVjdGVkIHRvIGJlIHRydWUgb24gdGFiMS4gVGhpcyBzaG91bGQgbWFrZSBpdCBiZWNvbWUg
c2VsZWN0ZWQuCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFiXzEiKS5z
ZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgICAgICAgYXdhaXQg
ZXhwZWN0QXN5bmNFeHByZXNzaW9uKCJ0YWIxLmlzU2VsZWN0ZWQiLCAidHJ1ZSIpOwogCi0gICAg
ICAgICAgLy8gTm93IHdlIHNldCBhcmlhLXNlbGVjdGVkIHRvIGJlIHRydWUgb24gdGFiMSBzbyB0
aGF0IGl0IHNob3VsZCBiZWNvbWUgc2VsZWN0ZWQKLSAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGFiXzEiKS5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLCAidHJ1ZSIpOwot
ICAgICAgICAgIHNob3VsZEJlKCJ0YWIxLmlzU2VsZWN0ZWQiLCAidHJ1ZSIpOyAgICAgICAgICAK
LSAgICB9CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLnN0
eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKIAorICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0sIDApOworICAgIH0KIDwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CisK
</data>
<flag name="commit-queue"
          id="470811"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445586</attachid>
            <date>2021-12-01 09:50:45 -0800</date>
            <delta_ts>2021-12-08 11:50:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233558-20211201115043.patch</filename>
            <type>text/plain</type>
            <size>33613</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUzNGMxY2I1NGY5NTI3
NjZmY2IxMzhkNTJhMjVmZTY4NjZlZjM4OC4uYWI5M2QyMDYyY2VmYTViMjMxZDE1NDVkN2U5ZDJk
NGMxNTI2Mjc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIxLTEyLTAxICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSXNvbGF0ZWQgVHJl
ZTogV2hlbiBmb2N1cyBjaGFuZ2VzLCB1cGRhdGUgQVhQcm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWQg
Zm9yIGFueSBhcmlhLWNvbnRyb2xzIGNvbnRyb2xsZXJzIG9mIHRhYiBwYW5lbCBhbmNlc3RvciBv
YmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzM1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1RhYkl0ZW1TZWxlY3RlZCBpcyBkZXBlbmRlbnQg
b24gb2JqZWN0IGZvY3VzIHN0YXRlLAorICAgICAgICBzbyBpc29sYXRlZCB0cmVlIG5lZWRzIHRv
IHJlLWNvbXB1dGUgQVhQcm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWQgd2hlbmV2ZXIgZm9jdXMgY2hh
bmdlcy4KKworICAgICAgICBTcGVjaWZpY2FsbHksIHdlIG5lZWQgdG8gcmUtY29tcHV0ZSB0aGlz
IHByb3BlcnR5IGZvciB0aGUKKyAgICAgICAgYXJpYS1jb250cm9scyBjb250cm9sbGVycyBvZiB0
YWIgcGFuZWwgYW5jZXN0b3JzIG9mIHRoZSBvYmplY3QgdGhhdAorICAgICAgICBjaGFuZ2VkIGZv
Y3VzLgorCisgICAgICAgIFRlc3RlZCBieSBhY2Nlc3NpYmlsaXR5L2FyaWEtY29udHJvbHMtd2l0
aC10YWJzLmh0bWwuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6c2V0SXNvbGF0ZWRUcmVlRm9jdXNl
ZE9iamVjdCk6CisgICAgICAgIENhbGwgbmV3IHNldEZvY3VzZWROb2RlIGZ1bmN0aW9uIGluc3Rl
YWQgb2YgZGVsZXRlZCBzZXRGb2N1c2VkTm9kZUlELgorCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUgY29uc3Qp
OgorICAgICAgICBIYW5kbGUgbmV3IEFSSUFFbGVtZW50U2VhcmNoQmVoYXZpb3I6OlN0b3BBdEZp
cnN0IHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFy
aWFDb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMgY29uc3QpOiBBZGRlZC4KKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb250cm9sbGVkVGFiUGFuZWxPYmpl
Y3RzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojppc1RhYkl0ZW1TZWxlY3RlZCBjb25zdCk6CisgICAgICAgIFVzZSBuZXcgQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXJpYUNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9ycyBmdW5jdGlvbgor
ICAgICAgICB0byBmaW5kIGFuY2VzdG9ycyBvbmNlIGluc3RlYWQgb2YgcmUtaXRlcmF0aW5nIHRo
ZSBwYXJlbnQgaGllcmFyY2h5IG9mCisgICAgICAgIHRoZSBmb2N1c2VkIG9iamVjdCBtdWx0aXBs
ZSB0aW1lcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5oOgorICAgICAgICBBZGQgY29udHJvbGxlZFRhYlBhbmVsT2JqZWN0cyBwcml2YXRlIGZ1
bmN0aW9uLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5j
cHA6CisgICAgICAgIChzZXRBdGtSZWxhdGlvblNldEZyb21Db3JlT2JqZWN0KToKKyAgICAgICAg
YXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyBub3cgcmV0dXJucworICAgICAgICBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgaW5zdGVhZCBvZiB0YWtpbmcgYW4gb3V0LXZhbHVlIHBh
cmFtZXRlciwKKyAgICAgICAgc28gdXBkYXRlIHVzYWdlIG9mIHRoYXQgZnVuY3Rpb24gaGVyZS4K
KworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJp
YnV0ZURhdGEpOgorICAgICAgICBTdG9yZSBBWFByb3BlcnR5TmFtZTo6QVJJQUNvbnRyb2xzUmVm
ZXJlbmNpbmdFbGVtZW50cyBmb3Igb2JqZWN0cyB0aGF0CisgICAgICAgIGhhdmUgYSByb2xlVmFs
dWUoKSBvZiBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiUGFuZWwuCisKKyAgICAgICAgQWxzbyBzdG9y
ZSBhbGwgQVhQcm9wZXJ0eU5hbWU6OkNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9ycywgYXMgdGhl
eSdsbCBuZWVkIHRvCisgICAgICAgIHJlLWNvbXB1dGUgdGhlaXIgQVhQcm9wZXJ0eU5hbWU6Oklz
U2VsZWN0ZWQgdXBvbiBmb2N1cyBjaGFuZ2UuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZFRyZWU6OmNyZWF0ZSk6CisgICAgICAgIENhbGwgc2V0Rm9jdXNlZE5vZGUgaW5zdGVhZCBv
ZiBzZXRGb2N1c2VkTm9kZUlEICh3aGljaCBpcyBub3cgZGVsZXRlZCkuCisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3BlcnR5KToKKyAgICAgICAgTW92ZWQg
bG9naWMgdG8gcHJpdmF0ZSBmdW5jdGlvbiB1cGRhdGVOb2RlUHJvcGVydHlMb2NrZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3BlcnR5TG9ja2VkKToK
KyAgICAgICAgQWRkZWQuIFRoaXMgaXMgYSBXVEZfUkVRVUlSRVNfTE9DSyhtX2NoYW5nZUxvZ0xv
Y2spIHZlcnNpb24gb2YKKyAgICAgICAgdXBkYXRlTm9kZVByb3BlcnR5LCBpbnRlbmRlZCB0byBi
ZSBjb25zdW1lZCBieSBjYWxsZXJzIHdobyBhbHJlYWR5CisgICAgICAgIGhvbGQgdGhpcyBsb2Nr
LiBUaGlzIGNvdWxkIGJlIHVwZGF0ZU5vZGVQcm9wZXJ0eSwgb3Igc29tZSBvdGhlcgorICAgICAg
ICBhZ2dyZWdhdGUgbG9naWMgKGUuZy4gY2FsbGVkIGZyb20gbmV3IGhhbmRsZUZvY3VzQ2hhbmdl
IGZ1bmN0aW9uKS4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpzZXRGb2N1c2Vk
Tm9kZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmhhbmRsZUZv
Y3VzQ2hhbmdlKTogQWRkZWQuIAorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmFw
cGx5UGVuZGluZ0NoYW5nZXMpOgorICAgICAgICBDYWxsIG5ldyBoYW5kbGVGb2N1c0NoYW5nZSBm
dW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpzZXRGb2N1c2VkTm9k
ZUlEKTogRGVsZXRlZC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmg6CisgICAgICAgIEFkZCBBWFByb3BlcnR5TmFtZTo6Q29udHJvbGxlZFRh
YlBhbmVsQW5jZXN0b3JzIGFuZCBBWFByb3BlcnR5TmFtZTo6QVJJQUNvbnRyb2xzUmVmZXJlbmNp
bmdFbGVtZW50cy4KKwogMjAyMS0xMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV1c2UgbmF2aWdhdGlvbiBwcmVsb2FkIGlmIHNlcnZpY2Ugd29ya2Vy
IGlzIGZldGNoaW5nIHRoZSBjb3JyZXNwb25kaW5nIG5hdmlnYXRpb24gcmVxdWVzdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggMmI2ZWFm
ODE3YzZmZTNiOWY1MDYyNGQ2MWE5M2Y5YzgyOGJmOTZmYi4uMDE5NjI2MzAyZTA5YzZiMzBkZGU4
ZTNjMzU1MzU5MzRiNDA3MjgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC00MTMsMTAgKzQxMyw5IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6c2V0SXNvbGF0ZWRUcmVlRm9jdXNlZE9iamVjdChOb2RlKiBmb2N1c2VkTm9kZSkKICAgICBp
ZiAoIW1fcGFnZUlEKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvKiBmb2N1cyA9IGdldE9y
Q3JlYXRlKGZvY3VzZWROb2RlKTsKLQorICAgIGF1dG8qIGZvY3VzZWRBeE9iamVjdCA9IGdldE9y
Q3JlYXRlKGZvY3VzZWROb2RlKTsKICAgICBpZiAoYXV0byB0cmVlID0gQVhJc29sYXRlZFRyZWU6
OnRyZWVGb3JQYWdlSUQoKm1fcGFnZUlEKSkKLSAgICAgICAgdHJlZS0+c2V0Rm9jdXNlZE5vZGVJ
RChmb2N1cyA/IGZvY3VzLT5vYmplY3RJRCgpIDogQVhJRCgpKTsKKyAgICAgICAgdHJlZS0+c2V0
Rm9jdXNlZE5vZGUoZm9jdXNlZEF4T2JqZWN0KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAx
MGJhOWY5NzZkM2NkZjI2YzljY2EyYjdkMDhiMmIyNGMzNDE3ODJiLi44MjNkMmU3ODdmZWFmNmZh
ZjMzZGZlMzU3NGFjNjExOGJkZWM5ZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTM3MzMsNyArMzczMyw3IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImCiAgICAgfQogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIGVsZW1lbnRzLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNv
bnN0Cit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0
dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGVsZW1lbnRzLCBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGUsIEFSSUFFbGVtZW50U2VhcmNoQmVoYXZpb3Igc2VhcmNoQmVo
YXZpb3IpIGNvbnN0CiB7CiAgICAgYXV0byBpZCA9IGlkZW50aWZpZXJBdHRyaWJ1dGUoKTsKICAg
ICBpZiAoaWQuaXNFbXB0eSgpKQpAQCAtMzc0OCwxMSArMzc0OCwyMSBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShBY2Nlc3NpYmls
aXR5Q2hpbGRyZQogICAgICAgICBpZiAoIVNwYWNlU3BsaXRTdHJpbmcoaWRMaXN0LCBmYWxzZSku
Y29udGFpbnMoaWQpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKEFjY2Vz
c2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gY2FjaGUtPmdldE9yQ3JlYXRlKCZlbGVtZW50KSkK
KyAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gY2FjaGUtPmdldE9y
Q3JlYXRlKCZlbGVtZW50KSkgewogICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKGF4T2JqZWN0
KTsKKyAgICAgICAgICAgIGlmIChzZWFyY2hCZWhhdmlvciA9PSBBUklBRWxlbWVudFNlYXJjaEJl
aGF2aW9yOjpTdG9wQXRGaXJzdCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
ICAgICB9CiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzQXJpYUVsZW1lbnRzUmVm
ZXJlbmNlZEJ5QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkgY29uc3QK
K3sKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVmZXJlbmNpbmdFbGVtZW50czsK
KyAgICBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUocmVmZXJlbmNpbmdFbGVtZW50
cywgYXR0cmlidXRlLCBBUklBRWxlbWVudFNlYXJjaEJlaGF2aW9yOjpTdG9wQXRGaXJzdCk7Cisg
ICAgcmV0dXJuICFyZWZlcmVuY2luZ0VsZW1lbnRzLmlzRW1wdHkoKTsKK30KKwogYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBj
b25zdAogewogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250YWluZXJzOwpAQCAt
Mzc2NSw2ICszNzc1LDEzIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY3RpdmVEZXNj
ZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9ycygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcnM8QWNjZXNzaWJpbGl0eU9iamVjdD4oKnRoaXMs
IFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBhbmNlc3RvcikgeworICAgICAgICByZXR1
cm4gYW5jZXN0b3Iucm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYlBhbmVsICYm
IGFuY2VzdG9yLmhhc0FyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudCgpOworICAgIH0pOwor
fQorCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFBY3RpdmVEZXNjZW5kYW50UmVmZXJl
bmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNvbnRhaW5lcnMpIGNv
bnN0CiB7CiAgICAgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGNvbnRhaW5lcnMs
IGFyaWFfYWN0aXZlZGVzY2VuZGFudEF0dHIpOwpAQCAtMzc3NSw5ICszNzkyLDExIEBAIHZvaWQg
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiBhcmlhCiAgICAgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhcmlhQ29u
dHJvbHMsIGFyaWFfY29udHJvbHNBdHRyKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYgY29udHJvbGxlcnMpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhQ29udHJvbHNSZWZlcmVuY2luZ0Vs
ZW1lbnRzKCkgY29uc3QKIHsKKyAgICBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBjb250cm9sbGVyczsKICAgICBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1
dGUoY29udHJvbGxlcnMsIGFyaWFfY29udHJvbHNBdHRyKTsKKyAgICByZXR1cm4gY29udHJvbGxl
cnM7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYURlc2NyaWJlZEJ5RWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBhcmlhRGVzY3JpYmVkQnkpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CmluZGV4IDU5Y2VhNGY0YjM5NzI3ZWFmM2ZhM2E5Zjc4NWZlNzIxMWE2Y2YwNDIuLjFjN2YzYTE2
M2MyOWE0Y2ExOGU4Mzc3NjdmYjZmY2I1OGVhOWUyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0yOTksOCArMjk5LDEw
IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzQVJJQU93bnMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29u
dGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcmlhQWN0aXZlRGVzY2VuZGFudFJl
ZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29u
dHJvbGxlZFRhYlBhbmVsQW5jZXN0b3JzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcmlh
Q29udHJvbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2b2lkIGFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNBcmlhQ29u
dHJvbHNSZWZlcmVuY2luZ0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBoYXNBcmlhRWxlbWVudHNS
ZWZlcmVuY2VkQnlBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2NvbnRyb2xzQXR0cik7IH0KKyAg
ICBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhQ29udHJvbHNS
ZWZlcmVuY2luZ0VsZW1lbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcmlhRGVzY3Jp
YmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2b2lkIGFyaWFEZXNjcmliZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcmlhRGV0YWls
c0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwpA
QCAtODA2LDcgKzgwOCwxMiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgYm9vbCBpc0FSSUFJ
bnB1dChBY2Nlc3NpYmlsaXR5Um9sZSk7CiAgICAgdm9pZCBhcmlhRWxlbWVudHNGcm9tQXR0cmli
dXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdDsKLSAgICB2b2lkIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CisgICAg
ZW51bSBjbGFzcyBBUklBRWxlbWVudFNlYXJjaEJlaGF2aW9yIDogdWludDhfdCB7CisgICAgICAg
IEZpbmRBbGwsCisgICAgICAgIFN0b3BBdEZpcnN0CisgICAgfTsKKyAgICB2b2lkIGFyaWFFbGVt
ZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImLCBj
b25zdCBRdWFsaWZpZWROYW1lJiwgQVJJQUVsZW1lbnRTZWFyY2hCZWhhdmlvciA9IEFSSUFFbGVt
ZW50U2VhcmNoQmVoYXZpb3I6OkZpbmRBbGwpIGNvbnN0OworICAgIGJvb2wgaGFzQXJpYUVsZW1l
bnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIEZsb2F0UmVjdCB1bm9ic2N1cmVkQ29udGVudFJlY3QoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByYWRpb0dyb3VwQW5jZXN0b3IoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5kZXggMTY3OWYwMWM1MWRmM2Y0ZjkyODk5Y2RjNzA0YWJm
NDhmMzNmZjgwNi4uMmZkMzQ2MDY0YzI1ZmVhMzFhNzQxZGZhMjAyMGUzNGU1YjNkNjA0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTEwNDksOSArMTA0OSwxMCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRyb2xsZWRUYWJQYW5l
bEFuY2VzdG9ycygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXJpYUFjdGl2ZURlc2Nl
bmRhbnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcmlhQ29u
dHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhQ29u
dHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBh
cmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFyaWFEZXNjcmliZWRCeVJlZmVyZW5jaW5nRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBhcmlhRGV0YWlsc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0ID0gMDsKQEAgLTE2MjcsNiArMTYyOCwyMiBAQCBUKiBmaW5kQW5jZXN0b3IoY29uc3QgVCYg
b2JqZWN0LCBib29sIGluY2x1ZGVTZWxmLCBjb25zdCBGJiBtYXRjaGVzKQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBGPgorQVhDb3JlT2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZmluZEFuY2VzdG9ycyhjb25zdCBUJiBv
YmplY3QsIGNvbnN0IEYmIG1hdGNoZXMpCit7CisgICAgYXV0byogcGFyZW50UHRyID0gb2JqZWN0
LnBhcmVudE9iamVjdCgpOworICAgIGlmICghaXM8VD4ocGFyZW50UHRyKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIFQqIHBhcmVudCA9IHBhcmVudFB0cjsKKyAgICBBWENvcmVPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhbmNlc3RvcnM7CisgICAgZm9yICg7IHBhcmVu
dDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgeworICAgICAgICBpZiAobWF0Y2hl
cygqcGFyZW50KSkKKyAgICAgICAgICAgIGFuY2VzdG9ycy5hcHBlbmQocGFyZW50KTsKKyAgICB9
CisgICAgcmV0dXJuIGFuY2VzdG9yczsKK30KKwogdm9pZCBmaW5kTWF0Y2hpbmdPYmplY3RzKEFj
Y2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBjb25zdCYsIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJik7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEY+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCBjNGUyNmExYjcyMmExODllOGMzMGE2ZWYwNjYwMWFh
ODc3YmQ2ODlkLi5iNzc3MDBmMjYzZDkyMmNmZjhhMDFkMzczOWJhYWY0NzMxNmQxNTVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAKQEAgLTE4NDEsNiArMTg0MSwyNSBAQCBib29sIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmlzU2VsZWN0ZWQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6Y29udHJvbGxlZFRhYlBhbmVsT2JqZWN0cygpIGNvbnN0Cit7CisgICAg
YXV0byogY2FjaGUgPSBheE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIFZlY3RvcjxFbGVtZW50Kj4gZWxlbWVudHM7CisgICAgZWxlbWVu
dHNGcm9tQXR0cmlidXRlKGVsZW1lbnRzLCBhcmlhX2NvbnRyb2xzQXR0cik7CisgICAgQVhDb3Jl
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29udHJvbGxlZFRhYlBhbmVsczsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50cykgeworICAgICAgICBhdXRv
KiB0YWJQYW5lbCA9IGNhY2hlLT5nZXRPckNyZWF0ZShlbGVtZW50KTsKKyAgICAgICAgaWYgKCF0
YWJQYW5lbCB8fCB0YWJQYW5lbC0+cm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRh
YlBhbmVsKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgY29udHJvbGxlZFRhYlBh
bmVscy5hcHBlbmQodGFiUGFuZWwpOworICAgIH0KKyAgICByZXR1cm4gY29udHJvbGxlZFRhYlBh
bmVsczsKK30KKwogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1RhYkl0ZW1TZWxl
Y3RlZCgpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1RhYkl0ZW0oKSB8fCAhbV9yZW5kZXJlcikKQEAg
LTE4NTcsMjkgKzE4NzYsMjAgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1Rh
Ykl0ZW1TZWxlY3RlZCgpIGNvbnN0CiAgICAgaWYgKCFmb2N1c2VkRWxlbWVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAotICAgIFZlY3RvcjxFbGVtZW50Kj4gZWxlbWVudHM7Ci0gICAg
ZWxlbWVudHNGcm9tQXR0cmlidXRlKGVsZW1lbnRzLCBhcmlhX2NvbnRyb2xzQXR0cik7CisgICAg
YXV0byBjb250cm9sbGVkVGFiUGFuZWxzID0gY29udHJvbGxlZFRhYlBhbmVsT2JqZWN0cygpOwor
ICAgIGlmIChjb250cm9sbGVkVGFiUGFuZWxzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIAotICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwot
ICAgIGlmICghY2FjaGUpCisgICAgYXV0byBjb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnNPZkZv
Y3VzID0gZm9jdXNlZEVsZW1lbnQtPmNvbnRyb2xsZWRUYWJQYW5lbEFuY2VzdG9ycygpOworICAg
IGlmIChjb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnNPZkZvY3VzLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGVs
ZW1lbnRzKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRhYlBhbmVsID0gY2FjaGUt
PmdldE9yQ3JlYXRlKGVsZW1lbnQpOwotCi0gICAgICAgIC8vIEEgdGFiIGl0ZW0gc2hvdWxkIG9u
bHkgY29udHJvbCB0YWIgcGFuZWxzLgotICAgICAgICBpZiAoIXRhYlBhbmVsIHx8IHRhYlBhbmVs
LT5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiUGFuZWwpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoZWNr
Rm9jdXNFbGVtZW50ID0gZm9jdXNlZEVsZW1lbnQ7Ci0gICAgICAgIC8vIENoZWNrIGlmIHRoZSBm
b2N1c2VkIGVsZW1lbnQgaXMgYSBkZXNjZW5kYW50IG9mIHRoZSBlbGVtZW50IGNvbnRyb2xsZWQg
YnkgdGhlIHRhYiBpdGVtLgotICAgICAgICB3aGlsZSAoY2hlY2tGb2N1c0VsZW1lbnQpIHsKLSAg
ICAgICAgICAgIGlmICh0YWJQYW5lbCA9PSBjaGVja0ZvY3VzRWxlbWVudCkKKyAgICBmb3IgKGF1
dG8gY29udHJvbGxlZFRhYlBhbmVsIDogY29udHJvbGxlZFRhYlBhbmVscykgeworICAgICAgICBm
b3IgKGF1dG8gZm9jdXNUYWJQYW5lbEFuY2VzdG9yIDogY29udHJvbGxlZFRhYlBhbmVsQW5jZXN0
b3JzT2ZGb2N1cykgeworICAgICAgICAgICAgaWYgKGZvY3VzVGFiUGFuZWxBbmNlc3Rvci5nZXQo
KSA9PSBjb250cm9sbGVkVGFiUGFuZWwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgICAgICBjaGVja0ZvY3VzRWxlbWVudCA9IGNoZWNrRm9jdXNFbGVtZW50LT5wYXJlbnRP
YmplY3QoKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5oCmluZGV4IDdiOTRiNjM0MWE4ODBiYjVkMjgyMDFiNzdiODUxYmU1
ZDQyYWNjOTcuLjRhMzgyOGFhMGIyNjM2OTM0YjM4M2JhMjFhNTkwMTUxODliZDE0MDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5oCkBAIC0yMjEsNiArMjIxLDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgog
ICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250cm9sbGVkVGFi
UGFuZWxPYmplY3RzKCkgY29uc3Q7CiAgICAgdm9pZCBhcmlhTGlzdGJveFNlbGVjdGVkQ2hpbGRy
ZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CiAgICAgdm9pZCBhcmlhTGlzdGJveFZp
c2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICBib29sIGlz
QWxsb3dlZENoaWxkT2ZUcmVlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGUuY3BwCmluZGV4IDE2YzRmNTgxM2RhOGRm
ZGFkNTMwZWQ0MmNmMGI3ZWZiYTEwNWM5NDUuLjY1MWEwNGIxYWMyZTZjOTVmNDExM2QwODIyOGI2
YjhmNTg0ZjFhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGUuY3BwCkBAIC0yNDAsOSArMjQwLDcgQEAgc3RhdGljIHZvaWQg
c2V0QXRrUmVsYXRpb25TZXRGcm9tQ29yZU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3Jl
T2JqZWN0LCBBdGsKIAogICAgIC8vIEVsZW1lbnRzIHJlZmVyZW5jZWQgYnkgYXJpYS1jb250cm9s
cyBzaG91bGQgaGF2ZSB0aGUgY29udHJvbGxlZC1ieSByZWxhdGlvbiBhcyBwZXIgdGhlIEFSSUEg
QUFNIHNwZWMuCiAgICAgcmVtb3ZlQXRrUmVsYXRpb25CeVR5cGUocmVsYXRpb25TZXQsIEFUS19S
RUxBVElPTl9DT05UUk9MTEVEX0JZKTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29udHJvbGxlcnM7Ci0gICAgY29yZU9iamVjdC0+YXJpYUNv
bnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyhjb250cm9sbGVycyk7Ci0gICAgZm9yIChjb25zdCBh
dXRvJiBhY2Nlc3NpYmlsaXR5T2JqZWN0IDogY29udHJvbGxlcnMpCisgICAgZm9yIChjb25zdCBh
dXRvJiBhY2Nlc3NpYmlsaXR5T2JqZWN0IDogY29yZU9iamVjdC0+YXJpYUNvbnRyb2xzUmVmZXJl
bmNpbmdFbGVtZW50cygpKQogICAgICAgICBhdGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlvbl9i
eV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05fQ09OVFJPTExFRF9CWSwgQVRLX09CSkVD
VChhY2Nlc3NpYmlsaXR5T2JqZWN0LT53cmFwcGVyKCkpKTsKIAogICAgIC8vIEVsZW1lbnRzIHdp
dGggYXJpYS1vd25zIHNob3VsZCBoYXZlIHRoZSBub2RlLXBhcmVudC1vZiByZWxhdGlvbiBhcyBw
ZXIgdGhlIEFSSUEgQUFNIHNwZWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IDM2
OTUyZjk0MDhmYjU5ZTJiYzU5MmI3YjVlOGYxYmIyNWI1YjA4MWUuLjIxMzdiYmIxNmZkNjM3MDJj
YjJhZThmYTdmZDg2YjY0NjU2YTM4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBA
IC0zMzQsNiArMzM0LDEzIEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJp
YnV0ZURhdGEoQVhDb3JlT2JqZWN0JiBjb3JlT2JqZWN0LCBib29sIGlzCiAgICAgb2JqZWN0LmFy
aWFDb250cm9sc0VsZW1lbnRzKGFyaWFDb250cm9sc0VsZW1lbnRzKTsKICAgICBzZXRPYmplY3RW
ZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQUNvbnRyb2xzRWxlbWVudHMsIGFyaWFD
b250cm9sc0VsZW1lbnRzKTsKIAorICAgIGlmIChvYmplY3Qucm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlRhYlBhbmVsKSB7CisgICAgICAgIGF1dG8gcmVmZXJlbmNpbmdFbGVtZW50
cyA9IG9iamVjdC5hcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKCk7CisgICAgICAgIGlm
ICghcmVmZXJlbmNpbmdFbGVtZW50cy5pc0VtcHR5KCkpCisgICAgICAgICAgICBzZXRPYmplY3RW
ZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVt
ZW50cywgcmVmZXJlbmNpbmdFbGVtZW50cyk7CisgICAgfQorICAgIHNldE9iamVjdFZlY3RvclBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMsIG9iamVj
dC5jb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMoKSk7CisKICAgICBBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgYXJpYURldGFpbHNFbGVtZW50czsKICAgICBvYmplY3QuYXJpYURldGFpbHNF
bGVtZW50cyhhcmlhRGV0YWlsc0VsZW1lbnRzKTsKICAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6QVJJQURldGFpbHNFbGVtZW50cywgYXJpYURldGFpbHNFbGVtZW50
cyk7CkBAIC0xODI3LDExICsxODM0LDYgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0OjphcmlhQWN0
aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWwKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBBWElzb2xhdGVkT2JqZWN0OjphcmlhQ29u
dHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KIHZvaWQgQVhJc29sYXRlZE9i
amVjdDo6YXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuaAppbmRleCBiYTYzZGMyNzIxZDI4YTg2MGI4NzNmMjgzN2ZlNmM0ODIxMjc4M2UxLi40NDcx
OTNhNjEwNDYwZjM3ZDA1ZThiMTNhZTFhNjYzZTZlMGM3Y2IyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5oCkBAIC0yMjMsOCArMjIzLDEwIEBAIHByaXZhdGU6CiAgICAgaW50IGxheW91dENvdW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaW50QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OkxheW91dENvdW50KTsgfQogICAgIGRvdWJsZSBlc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3Mo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkb3VibGVBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6RXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKTsgfQogICAgIGJvb2wgc3VwcG9ydHNBUklB
T3ducygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6U3VwcG9ydHNBUklBT3ducyk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3IgY29udHJvbGxlZFRhYlBhbmVsQW5jZXN0b3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJv
cGVydHlOYW1lOjpDb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMpKTsgfQogICAgIGJvb2wgaXNB
Y3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0FjdGl2ZURlc2NlbmRhbnRP
ZkZvY3VzZWRDb250YWluZXIpOyB9CiAgICAgdm9pZCBhcmlhQ29udHJvbHNFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBjb25zdCBvdmVycmlkZSB7IGZpbGxD
aGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBQ29udHJvbHNFbGVt
ZW50cywgY2hpbGRyZW4pOyB9CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFD
b250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cmVl
KCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5h
bWU6OkFSSUFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMpKTsgfQogICAgIHZvaWQgYXJpYURl
dGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBjb25z
dCBvdmVycmlkZSB7IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpBUklBRGV0YWlsc0VsZW1lbnRzLCBjaGlsZHJlbik7IH0KICAgICB2b2lkIGFyaWFFcnJvck1l
c3NhZ2VFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBjb25z
dCBvdmVycmlkZSB7IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpBUklBRXJyb3JNZXNzYWdlRWxlbWVudHMsIGNoaWxkcmVuKTsgfQogICAgIHZvaWQgYXJpYUZs
b3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0
IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OkFSSUFGbG93VG9FbGVtZW50cywgY2hpbGRyZW4pOyB9CkBAIC01MzgsNyArNTQwLDYgQEAgcHJp
dmF0ZToKICAgICBmbG9hdCBzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IEFYQ29yZU9iamVjdCogc2VsZWN0ZWRMaXN0SXRlbSgpIG92ZXJyaWRlOwogICAgIHZvaWQgYXJp
YUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUNvbnRyb2xzUmVmZXJlbmNp
bmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNp
bmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRl
eCBiZWFjZWM1OGU2ZWFiZmVjMDEzY2QyMzRmNmJmNDVhNzRkYjg2MjQ3Li4yOGFjZmViNDI2Yjcy
YWNkYWI1ODdmNDY5YzE3MmI3YzYwMjExNDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCkBA
IC05OCwxNCArOTgsMTIgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3Jl
YXRlKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUpCiAgICAgYXV0byB0cmVlID0gYWRvcHRS
ZWYoKm5ldyBBWElzb2xhdGVkVHJlZShheE9iamVjdENhY2hlKSk7CiAKICAgICAvLyBHZW5lcmF0
ZSB0aGUgbm9kZXMgb2YgdGhlIHRyZWUgYW5kIHNldCBpdHMgcm9vdCBhbmQgZm9jdXNlZCBvYmpl
Y3RzLgotICAgIC8vIEZvciB0aGlzLCB3ZSBuZWVkIHRoZSByb290IGFuZCBmb2N1c2VkIG9iamVj
dHMgb2YgdGhlIEFYT2JqZWN0IHRyZWUuCisgICAgLy8gRm9yIHRoaXMsIHdlIG5lZWQgdGhlIHJv
b3QgYW5kIGZvY3VzZWQgb2JqZWN0IG9mIHRoZSBBWE9iamVjdCB0cmVlLgogICAgIGF1dG8qIGF4
Um9vdCA9IGF4T2JqZWN0Q2FjaGUtPmdldE9yQ3JlYXRlKGF4T2JqZWN0Q2FjaGUtPmRvY3VtZW50
KCkudmlldygpKTsKICAgICBpZiAoYXhSb290KQogICAgICAgICB0cmVlLT5nZW5lcmF0ZVN1YnRy
ZWUoKmF4Um9vdCwgbnVsbHB0ciwgdHJ1ZSk7Ci0gICAgYXV0byogYXhGb2N1cyA9IGF4T2JqZWN0
Q2FjaGUtPmZvY3VzZWRPYmplY3RGb3JQYWdlKGF4T2JqZWN0Q2FjaGUtPmRvY3VtZW50KCkucGFn
ZSgpKTsKLSAgICBpZiAoYXhGb2N1cykKLSAgICAgICAgdHJlZS0+c2V0Rm9jdXNlZE5vZGVJRChh
eEZvY3VzLT5vYmplY3RJRCgpKTsKIAorICAgIHRyZWUtPnNldEZvY3VzZWROb2RlKGF4T2JqZWN0
Q2FjaGUtPmZvY3VzZWRPYmplY3RGb3JQYWdlKGF4T2JqZWN0Q2FjaGUtPmRvY3VtZW50KCkucGFn
ZSgpKSk7CiAgICAgLy8gTm93IHRoYXQgdGhlIHRyZWUgaXMgcmVhZHkgdG8gdGFrZSBjbGllbnQg
cmVxdWVzdHMsIGFkZCBpdCB0byB0aGUgdHJlZQogICAgIC8vIG1hcHMgc28gdGhhdCBpdCBjYW4g
YmUgZm91bmQuCiAgICAgYXV0byBwYWdlSUQgPSBheE9iamVjdENhY2hlLT5wYWdlSUQoKTsKQEAg
LTI1NywyMyArMjU1LDMyIEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0
eShjb25zdCBBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWFByb3BlcnR5CiB7CiAgICAgQVhUUkFD
RSgiQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0eSIpOwogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAg
IHVwZGF0ZU5vZGVQcm9wZXJ0eUxvY2tlZChheE9iamVjdCwgcHJvcGVydHkpOworfQorCit2b2lk
IEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydHlMb2NrZWQoY29uc3QgQVhDb3JlT2Jq
ZWN0JiBheE9iamVjdCwgQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHkpCit7CisgICAgQVhUUkFDRSgi
QVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0eUxvY2tlZCIpOwogCiAgICAgQVhQcm9w
ZXJ0eU1hcCBwcm9wZXJ0eU1hcDsKICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgY2FzZSBB
WFByb3BlcnR5TmFtZTo6SWRlbnRpZmllckF0dHJpYnV0ZToKKyAgICAgICAgcHJvcGVydHlNYXAu
c2V0KEFYUHJvcGVydHlOYW1lOjpJZGVudGlmaWVyQXR0cmlidXRlLCBheE9iamVjdC5pZGVudGlm
aWVyQXR0cmlidXRlKCkuaXNvbGF0ZWRDb3B5KCkpOworICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYUHJvcGVydHlOYW1lOjpJc0NoZWNrZWQ6CiAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFBy
b3BlcnR5TmFtZTo6SXNDaGVja2VkLCBheE9iamVjdC5pc0NoZWNrZWQoKSk7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWQ6CisgICAgICAgIHByb3Bl
cnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6SXNTZWxlY3RlZCwgYXhPYmplY3QuaXNTZWxlY3Rl
ZCgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6U29ydERpcmVj
dGlvbjoKICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpTb3J0RGlyZWN0
aW9uLCBzdGF0aWNfY2FzdDxpbnQ+KGF4T2JqZWN0LnNvcnREaXJlY3Rpb24oKSkpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpJZGVudGlmaWVyQXR0cmlidXRlOgot
ICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OklkZW50aWZpZXJBdHRyaWJ1
dGUsIGF4T2JqZWN0LmlkZW50aWZpZXJBdHRyaWJ1dGUoKS5pc29sYXRlZENvcHkoKSk7Ci0gICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBM
b2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAgICAgbV9wZW5kaW5nUHJvcGVydHlD
aGFuZ2VzLmFwcGVuZCh7IGF4T2JqZWN0Lm9iamVjdElEKCksIHByb3BlcnR5TWFwIH0pOwogfQog
CkBAIC0zODksMTggKzM5NiwzMiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpzZXRSb290Tm9kZShB
WElzb2xhdGVkT2JqZWN0KiByb290KQogICAgIG1fcm9vdE5vZGUgPSByb290OwogfQogCi12b2lk
IEFYSXNvbGF0ZWRUcmVlOjpzZXRGb2N1c2VkTm9kZUlEKEFYSUQgYXhJRCkKK3ZvaWQgQVhJc29s
YXRlZFRyZWU6OnNldEZvY3VzZWROb2RlKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0KQog
ewotICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpzZXRGb2N1c2VkTm9kZUlEIik7CisgICAg
QVhJRCBheElEID0gYXhPYmplY3QgPyBheE9iamVjdC0+b2JqZWN0SUQoKSA6IEFYSUQoKTsKKyAg
ICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6c2V0Rm9jdXNlZE5vZGUiKTsKICAgICBBWExPRyht
YWtlU3RyaW5nKCJheElEICIsIGF4SUQubG9nZ2luZ1N0cmluZygpKSk7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsK
LSAgICBtX3BlbmRpbmdGb2N1c2VkTm9kZUlEID0gYXhJRDsKLQogICAgIEFYUHJvcGVydHlNYXAg
cHJvcGVydHlNYXA7CiAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpJc0ZvY3Vz
ZWQsIHRydWUpOworCisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogICAg
IG1fcGVuZGluZ1Byb3BlcnR5Q2hhbmdlcy5hcHBlbmQoeyBheElELCBwcm9wZXJ0eU1hcCB9KTsK
KyAgICBtX3BlbmRpbmdGb2N1c2VkTm9kZUlEID0gYXhJRDsKKyAgICBoYW5kbGVGb2N1c0NoYW5n
ZShheE9iamVjdCk7Cit9CisKKy8vIFJlLWNvbXB1dGUgcHJvcGVydGllcyBkZXBlbmRlbnQgb24g
dGhlIGZvY3VzIHN0YXRlIG9mIHRoZSBnaXZlbiBvYmplY3QuCit2b2lkIEFYSXNvbGF0ZWRUcmVl
OjpoYW5kbGVGb2N1c0NoYW5nZShBWENvcmVPYmplY3QqIGF4T2JqZWN0KQoreworICAgIGlmICgh
YXhPYmplY3QpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byBjb250cm9sbGVkVGFi
UGFuZWxBbmNlc3RvciA6IGF4T2JqZWN0LT5jb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMoKSkg
eworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnRyb2xsZXIgOiBjb250cm9sbGVkVGFiUGFu
ZWxBbmNlc3Rvci0+YXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cygpKQorICAgICAgICAg
ICAgdXBkYXRlTm9kZVByb3BlcnR5TG9ja2VkKCpjb250cm9sbGVyLCBBWFByb3BlcnR5TmFtZTo6
SXNTZWxlY3RlZCk7CisgICAgfQogfQogCiB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVOb2Rl
KEFYSUQgYXhJRCkKQEAgLTQ1Niw2ICs0NzcsOCBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBs
eVBlbmRpbmdDaGFuZ2VzKCkKICAgICAgICAgICAgIEFYUHJvcGVydHlNYXAgcHJvcGVydHlNYXA7
CiAgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OklzRm9jdXNlZCwg
ZmFsc2UpOwogICAgICAgICAgICAgbV9wZW5kaW5nUHJvcGVydHlDaGFuZ2VzLmFwcGVuZCh7IG1f
Zm9jdXNlZE5vZGVJRCwgcHJvcGVydHlNYXAgfSk7CisKKyAgICAgICAgICAgIGhhbmRsZUZvY3Vz
Q2hhbmdlKG5vZGVGb3JJRChtX2ZvY3VzZWROb2RlSUQpLmdldCgpKTsKICAgICAgICAgfQogICAg
ICAgICBtX2ZvY3VzZWROb2RlSUQgPSBtX3BlbmRpbmdGb2N1c2VkTm9kZUlEOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkVHJlZS5oCmluZGV4IDI1Y2RjYzg5ZWZmYWI0MzFkODk1NTEyOWNkZGQyM2RmYWQ3
MTBkYWIuLmVkMDU5YzgzNmIyZDJjYTlmY2QwMDQ1NDUxOTBkNTVjZTgyMGRjNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBUZXh0U3RyZWFtOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFzcyBBWElz
b2xhdGVkT2JqZWN0OwogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIFBhZ2U7CkBAIC00OSw2
ICs1MCw3IEBAIHVzaW5nIEFYSXNvbGF0ZWRUcmVlSUQgPSB1bnNpZ25lZDsKIAogZW51bSBjbGFz
cyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBBUklBQ29udHJvbHNFbGVtZW50cywK
KyAgICBBUklBQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzLAogICAgIEFSSUFEZXRhaWxzRWxl
bWVudHMsCiAgICAgRHJvcEVmZmVjdHMsCiAgICAgQVJJQUVycm9yTWVzc2FnZUVsZW1lbnRzLApA
QCAtOTksNiArMTAxLDcgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsK
ICAgICBDb21wdXRlZExhYmVsLAogICAgIENvbXB1dGVkUm9sZVN0cmluZywKICAgICBDb250ZW50
cywKKyAgICBDb250cm9sbGVkVGFiUGFuZWxBbmNlc3RvcnMsCiAgICAgQ3VycmVudFN0YXRlLAog
ICAgIEN1cnJlbnRWYWx1ZSwKICAgICBEYXRldGltZUF0dHJpYnV0ZVZhbHVlLApAQCAtMzY2LDEx
ICszNjksMTAgQEAgcHVibGljOgogICAgIC8vIFJlbW92ZXMgdGhlIGdpdmVuIG5vZGUgYW5kIGFs
bCBpdHMgZGVzY2VuZGFudHMuCiAgICAgdm9pZCByZW1vdmVTdWJ0cmVlKEFYSUQpOwogCi0gICAg
Ly8gQm90aCBzZXRSb290Tm9kZUlEIGFuZCBzZXRGb2N1c2VkTm9kZUlEIGFyZSBjYWxsZWQgZHVy
aW5nIHRoZSBnZW5lcmF0aW9uCi0gICAgLy8gb2YgdGhlIElzb2xhdGVkVHJlZS4KLSAgICAvLyBG
b2N1c2VkIG5vZGUgdXBkYXRlcyBpbiBBWE9iamVjdENhY2hlIHVzZSBzZXRGb2N1c05vZGVJRC4K
KyAgICAvLyBCb3RoIHNldFJvb3ROb2RlSUQgYW5kIHNldEZvY3VzZWROb2RlIGFyZSBjYWxsZWQg
ZHVyaW5nIGdlbmVyYXRpb24gb2YgdGhlIElzb2xhdGVkVHJlZS4KKyAgICAvLyBGb2N1c2VkIG5v
ZGUgdXBkYXRlcyBpbiBBWE9iamVjdENhY2hlIHVzZSBzZXRGb2N1c2VkTm9kZS4KICAgICB2b2lk
IHNldFJvb3ROb2RlKEFYSXNvbGF0ZWRPYmplY3QqKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2NoYW5n
ZUxvZ0xvY2spOwotICAgIHZvaWQgc2V0Rm9jdXNlZE5vZGVJRChBWElEKTsKKyAgICB2b2lkIHNl
dEZvY3VzZWROb2RlKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKIAogICAgIC8vIENhbGxlZCBvbiBB
WCB0aHJlYWQgZnJvbSBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBtZXRob2RzLgogICAg
IC8vIER1cmluZyBsYXlvdXQgdGVzdHMsIGl0IGlzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQu
CkBAIC0zOTEsNiArMzkzLDkgQEAgcHJpdmF0ZToKICAgICAvLyBDYWxsZWQgb24gbWFpbiB0aHJl
YWQgdG8gdXBkYXRlIGJvdGggbV9ub2RlTWFwIGFuZCBtX3BlbmRpbmdDaGlsZHJlblVwZGF0ZXMu
CiAgICAgdm9pZCB1cGRhdGVDaGlsZHJlbklEcyhBWElEIHBhcmVudElELCBWZWN0b3I8QVhJRD4m
JiBjaGlsZHJlbklEcykgV1RGX1JFUVVJUkVTX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKIAorICAg
IHZvaWQgdXBkYXRlTm9kZVByb3BlcnR5TG9ja2VkKGNvbnN0IEFYQ29yZU9iamVjdCYsIEFYUHJv
cGVydHlOYW1lKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOworICAgIHZvaWQg
aGFuZGxlRm9jdXNDaGFuZ2UoQVhDb3JlT2JqZWN0KikgV1RGX1JFUVVJUkVTX0xPQ0sobV9jaGFu
Z2VMb2dMb2NrKTsKKwogICAgIEFYSXNvbGF0ZWRUcmVlSUQgbV90cmVlSUQ7CiAgICAgQVhPYmpl
Y3RDYWNoZSogbV9heE9iamVjdENhY2hlIHsgbnVsbHB0ciB9OwogICAgIGJvb2wgbV91c2VkT25B
WFRocmVhZCB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyMzU5ODMxY2U5OWE3ODA4NjgyNGQxNDA0YzFmYWUz
Mzk5OTAxNDQ4Li45NzFmNDQ4MmQ1M2JkZWJlMWE2YWE4OGNhYTJkNzU5Yzg1MzQ1NDRlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMTItMDEgIFR5bGVyIFdpbGNvY2sgIDx0eWxlcl93QGFw
cGxlLmNvbT4KKworICAgICAgICBBWCBJc29sYXRlZCBUcmVlOiBXaGVuIGZvY3VzIGNoYW5nZXMs
IHVwZGF0ZSBBWFByb3BlcnR5TmFtZTo6SXNTZWxlY3RlZCBmb3IgYW55IGFyaWEtY29udHJvbHMg
Y29udHJvbGxlcnMgb2YgdGFiIHBhbmVsIGFuY2VzdG9yIG9iamVjdHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzU1OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmlzVGFiSXRlbVNlbGVjdGVkIGlzIGRlcGVuZGVudCBvbiBvYmplY3QgZm9jdXMgc3RhdGUs
CisgICAgICAgIHNvIGlzb2xhdGVkIHRyZWUgbmVlZHMgdG8gcmUtY29tcHV0ZSBBWFByb3BlcnR5
TmFtZTo6SXNTZWxlY3RlZCB3aGVuZXZlciBmb2N1cyBjaGFuZ2VzLgorCisgICAgICAgIFNwZWNp
ZmljYWxseSwgd2UgbmVlZCB0byByZS1jb21wdXRlIHRoaXMgcHJvcGVydHkgZm9yIHRoZQorICAg
ICAgICBhcmlhLWNvbnRyb2xzIGNvbnRyb2xsZXJzIG9mIHRhYiBwYW5lbCBhbmNlc3RvcnMgb2Yg
dGhlIG9iamVjdCB0aGF0CisgICAgICAgIGNoYW5nZWQgZm9jdXMuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2FyaWEtY29udHJvbHMtd2l0aC10YWJzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2FyaWEtY29udHJvbHMtd2l0aC10YWJzLmh0bWw6CisgICAgICAgIE1h
a2UgdGVzdCBhc3luYyBzbyB0aGF0IGl0IHBhc3NlcyBpbiBpc29sYXRlZCB0cmVlIG1vZGUgKGFm
dGVyIHRoZQorICAgICAgICBvdGhlciBjaGFuZ2VzIGluIHRoaXMgcGF0Y2gpLgorCiAyMDIxLTEy
LTAxICBBbmRyZXUgQm90ZWxsYSAgPGFuZHJldUBhbmRyZXVib3RlbGxhLmNvbT4KIAogICAgICAg
ICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1zL2Zv
cm0tc3VibWlzc2lvbi0wL211bHRpcGFydC1mb3JtZGF0YS53aW5kb3cuaHRtbCBpcyBubyBsb25n
ZXIgZmFpbGluZyDigJMgcmVtb3ZlIGV4cGVjdGF0aW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNvbnRyb2xzLXdpdGgtdGFicy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtY29udHJvbHMtd2l0aC10YWJzLWV4cGVjdGVk
LnR4dAppbmRleCA3ZTNiY2JmMjk5NzVmMzk1ZjkwNzQ3YTEzZDQ0MjYwMTIyMWY1MTJhLi5hMmE2
OTY0ZWFlMmRhNTM0NzA4NmNkNGNkYjg5NWEzMzI1ZDJiZjFkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtY29udHJvbHMtd2l0aC10YWJzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtY29udHJvbHMtd2l0aC10YWJzLWV4
cGVjdGVkLnR4dApAQCAtMSwyMSArMSwxNSBAQAotQ3J1c3QKLVZlZ2VzCi1UZXN0Ci0KLVNlbGVj
dCBDcnVzdAotCi1TZWxlY3QgQ3J1c3QKLQogVGhpcyB0ZXN0cyB0aGF0IHRoZSBhcmlhIHRhYiBp
dGVtIGJlY29tZXMgc2VsZWN0ZWQgaWYgZWl0aGVyIGFyaWEtc2VsZWN0ZWQgaXMgdXNlZCwgb3Ig
aWYgYXJpYS1jb250cm9scyBwb2ludHMgdG8gYW4gaXRlbSB0aGF0IGNvbnRhaW5zIEtCIGZvY3Vz
LgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyB0YWIyLmlzU2VsZWN0ZWQg
aXMgdHJ1ZQotUEFTUyB0YWIxLmlzU2VsZWN0ZWQgaXMgZmFsc2UKLVBBU1MgdGFiMi5pc1NlbGVj
dGVkIGlzIGZhbHNlCi1QQVNTIHRhYjEuaXNTZWxlY3RlZCBpcyB0cnVlCitQQVNTIHRhYjIuaXNT
ZWxlY3RlZCA9PT0gdHJ1ZQorUEFTUyB0YWIxLmlzU2VsZWN0ZWQgPT09IGZhbHNlCitQQVNTIHRh
YjIuaXNTZWxlY3RlZCA9PT0gZmFsc2UKK1BBU1MgdGFiMS5pc1NlbGVjdGVkID09PSB0cnVlCiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIAorCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1jb250cm9scy13aXRoLXRh
YnMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1jb250cm9scy13aXRoLXRh
YnMuaHRtbAppbmRleCAwZjkxOTU0YjM0YjFhYjU5NmJiMTI4ZDQ2MjNiZjA0NWY1NTc4MzcxLi4w
ZGVhM2E5OWQ4ODM1ZmQ1ZjA2ZGYzOTk0YmYxYTdjMmU2YTY4YTBlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtY29udHJvbHMtd2l0aC10YWJzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNvbnRyb2xzLXdpdGgtdGFicy5odG1sCkBA
IC0xLDU4ICsxLDYwIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBl
ci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBpZD0iYm9keSI+Cis8Ym9keT4KIAotPHVs
IGlkPSJ0YWJsaXN0XzEiIHJvbGU9InRhYmxpc3QiPgotPGxpIGlkPSJ0YWJfMSIgcm9sZT0idGFi
IiB0YWJpbmRleD0iLTEiIGNsYXNzPSIiPkNydXN0PC9saT4KLTxsaSBpZD0idGFiXzIiIHJvbGU9
InRhYiIgdGFiaW5kZXg9Ii0xIiBhcmlhLWNvbnRyb2xzPSJwYW5lbF8yIiBjbGFzcz0iIj5WZWdl
czwvbGk+Ci08L3VsPgorPGRpdiBpZD0iY29udGVudCI+CisgICAgPHVsIGlkPSJ0YWJsaXN0XzEi
IHJvbGU9InRhYmxpc3QiPgorICAgICAgICA8bGkgaWQ9InRhYl8xIiByb2xlPSJ0YWIiIHRhYmlu
ZGV4PSItMSIgY2xhc3M9IiI+Q3J1c3Q8L2xpPgorICAgICAgICA8bGkgaWQ9InRhYl8yIiByb2xl
PSJ0YWIiIHRhYmluZGV4PSItMSIgYXJpYS1jb250cm9scz0icGFuZWxfMiIgY2xhc3M9IiI+VmVn
ZXM8L2xpPgorICAgIDwvdWw+CiAKLTxoMyB0YWJpbmRleD0wIGlkPSJlbGVtZW50T3V0c2lkZVRh
YnMiPlRlc3Q8L2gzPgorICAgIDxoMyB0YWJpbmRleD0wIGlkPSJlbGVtZW50T3V0c2lkZVRhYnMi
PlRlc3Q8L2gzPgogCi08ZGl2IGlkPSJwYW5lbF8xIiByb2xlPSJ0YWJwYW5lbCIgPgotPGgzIHRh
YmluZGV4PTA+U2VsZWN0IENydXN0PC9oMz4KLTwvZGl2PgorICAgIDxkaXYgaWQ9InBhbmVsXzEi
IHJvbGU9InRhYnBhbmVsIj4KKyAgICAgICAgPGgzIHRhYmluZGV4PTA+U2VsZWN0IENydXN0PC9o
Mz4KKyAgICA8L2Rpdj4KIAotPGRpdiBpZD0icGFuZWxfMiIgcm9sZT0idGFicGFuZWwiID4KLTxo
MiBpZD0iaXRlbUluUGFuZWwyIiB0YWJpbmRleD0wPlNlbGVjdCBDcnVzdDwvaDI+CisgICAgPGRp
diBpZD0icGFuZWxfMiIgcm9sZT0idGFicGFuZWwiPgorICAgICAgICA8aDIgaWQ9Iml0ZW1JblBh
bmVsMiIgdGFiaW5kZXg9MD5TZWxlY3QgQ3J1c3Q8L2gyPgorICAgIDwvZGl2PgogPC9kaXY+CiAK
LQotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLQog
PHNjcmlwdD4KLQogICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdGhlIGFyaWEgdGFi
IGl0ZW0gYmVjb21lcyBzZWxlY3RlZCBpZiBlaXRoZXIgYXJpYS1zZWxlY3RlZCBpcyB1c2VkLCBv
ciBpZiBhcmlhLWNvbnRyb2xzIHBvaW50cyB0byBhbiBpdGVtIHRoYXQgY29udGFpbnMgS0IgZm9j
dXMuIik7CiAKICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAotICAgICAgICAgIHZhciB0YWJMaXN0
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd0YWJsaXN0
XzEnKTsKLSAgICAgICAgICB2YXIgdGFiMSA9IHRhYkxpc3QuY2hpbGRBdEluZGV4KDApOwotICAg
ICAgICAgIHZhciB0YWIyID0gdGFiTGlzdC5jaGlsZEF0SW5kZXgoMSk7CisgICAgICAgIHZhciB0
YWJMaXN0LCB0YWIxLCB0YWIyOworICAgICAgICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgdGFiTGlzdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgndGFibGlzdF8xJyk7CisgICAgICAgICAgICB0YWIxID0gdGFiTGlzdC5j
aGlsZEF0SW5kZXgoMCk7CisgICAgICAgICAgICB0YWIyID0gdGFiTGlzdC5jaGlsZEF0SW5kZXgo
MSk7CiAKLSAgICAgICAgICAvLyB3ZSBzZXQgS0IgZm9jdXMgdG8gc29tZXRoaW5nIGluIHBhbmVs
XzIsIHdoaWNoIG1lYW5zIHRoYXQgdGFiMiBzaG91bGQgYmVjb21lIHNlbGVjdGVkCi0gICAgICAg
ICAgLy8gYmVjYXVzZSBpdCBhcmlhLWNvbnRyb2xzIHBhbmVsXzIKLSAgICAgICAgICB2YXIgcGFu
ZWwySXRlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpdGVtSW5QYW5lbDIiKTsKLSAgICAg
ICAgICBwYW5lbDJJdGVtLmZvY3VzKCk7CisgICAgICAgICAgICAvLyBTZXQgS0IgZm9jdXMgdG8g
c29tZXRoaW5nIGluIHBhbmVsXzIsIHdoaWNoIG1lYW5zIHRoYXQgdGFiMiBzaG91bGQgYmVjb21l
IHNlbGVjdGVkIGJlY2F1c2UKKyAgICAgICAgICAgIC8vIGl0IGFyaWEtY29udHJvbHMgcGFuZWxf
Mi4KKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpdGVtSW5QYW5lbDIiKS5m
b2N1cygpOworICAgICAgICAgICAgYXdhaXQgZXhwZWN0QXN5bmNFeHByZXNzaW9uKCJ0YWIyLmlz
U2VsZWN0ZWQiLCAidHJ1ZSIpOwogCi0gICAgICAgICAgc2hvdWxkQmUoInRhYjIuaXNTZWxlY3Rl
ZCIsICJ0cnVlIik7CisgICAgICAgICAgICAvLyBSZXNldCBLQiBmb2N1cyBhbmQgdmVyaWZ5IHRo
YXQgbmVpdGhlciB0YWIgaXMgc2VsZWN0ZWQuCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZWxlbWVudE91dHNpZGVUYWJzIikuZm9jdXMoKTsKKyAgICAgICAgICAgIGF3YWl0
IGV4cGVjdEFzeW5jRXhwcmVzc2lvbigidGFiMS5pc1NlbGVjdGVkIiwgImZhbHNlIik7CisgICAg
ICAgICAgICBhd2FpdCBleHBlY3RBc3luY0V4cHJlc3Npb24oInRhYjIuaXNTZWxlY3RlZCIsICJm
YWxzZSIpOwogCi0gICAgICAgICAgLy8gcmVzZXQgS0IgZm9jdXMgYW5kIHZlcmlmeSB0aGF0IG5l
aXRoZXIgdGFiIGlzIHNlbGVjdGVkCi0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImVsZW1lbnRPdXRzaWRlVGFicyIpLmZvY3VzKCk7Ci0gICAgICAgICAgc2hvdWxkQmUoInRhYjEu
aXNTZWxlY3RlZCIsICJmYWxzZSIpOwotICAgICAgICAgIHNob3VsZEJlKCJ0YWIyLmlzU2VsZWN0
ZWQiLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIC8vIE5vdyBzZXQgYXJpYS1zZWxlY3RlZCB0byBi
ZSB0cnVlIG9uIHRhYjEuIFRoaXMgc2hvdWxkIG1ha2UgaXQgYmVjb21lIHNlbGVjdGVkLgorICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhYl8xIikuc2V0QXR0cmlidXRlKCJh
cmlhLXNlbGVjdGVkIiwgInRydWUiKTsKKyAgICAgICAgICAgIGF3YWl0IGV4cGVjdEFzeW5jRXhw
cmVzc2lvbigidGFiMS5pc1NlbGVjdGVkIiwgInRydWUiKTsKIAotICAgICAgICAgIC8vIE5vdyB3
ZSBzZXQgYXJpYS1zZWxlY3RlZCB0byBiZSB0cnVlIG9uIHRhYjEgc28gdGhhdCBpdCBzaG91bGQg
YmVjb21lIHNlbGVjdGVkCi0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhYl8x
Iikuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIiwgInRydWUiKTsKLSAgICAgICAgICBzaG91
bGRCZSgidGFiMS5pc1NlbGVjdGVkIiwgInRydWUiKTsgICAgICAgICAgCi0gICAgfQorICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5
ID0gImhpZGRlbiI7CiAKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9LCAw
KTsKKyAgICB9CiA8L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgorCg==
</data>
<flag name="review"
          id="471364"
          type_id="1"
          status="-"
          setter="andresg_22"
    />
          </attachment>
      

    </bug>

</bugzilla>