<?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>249480</bug_id>
          
          <creation_ts>2022-12-16 09:13:26 -0800</creation_ts>
          <short_desc>AX: Add AXID identification to both AXObjectCache and AXIsolatedTree so that instances of these classes can be retrieved by ID.</short_desc>
          <delta_ts>2023-01-05 07:03:06 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Andres Gonzalez">andresg_22</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>annulen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>tyler_w</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1919957</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-12-16 09:13:26 -0800</bug_when>
    <thetext>Needed for TextMarker refactoring in https://bugs.webkit.org/show_bug.cgi?id=230558.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1919958</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-12-16 09:13:39 -0800</bug_when>
    <thetext>&lt;rdar://problem/103449294&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1919966</commentid>
    <comment_count>2</comment_count>
      <attachid>464077</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-12-16 09:25:32 -0800</bug_when>
    <thetext>Created attachment 464077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1920039</commentid>
    <comment_count>3</comment_count>
      <attachid>464077</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-12-16 12:53:04 -0800</bug_when>
    <thetext>Comment on attachment 464077
Patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:270
&gt; +    AXTRACE(makeString(&quot;AXObjectCache::~AXObjectCache 0x&quot;_s, hex(reinterpret_cast&lt;uintptr_t&gt;(this))));

With this patch, we now rely on some outside logic to call AXObjectCache::willBeDestroyed(), which seems fallible. The lifetime of the cache is pretty simple right now (it dies when the document does), but there&apos;s nothing stopping it from becoming harder to reason about. Missing the call to AXObjectCache::willBeDestroyed() would leak a lot of memory.

If we must move this destruction logic out of the destructor, can we somehow make it impossible for the cache to not be cleaned up? Maybe a flag indicating willBeDestroyed has been called, and then the destructor checks that flag and performs willBeDestroyed if necessary?

&gt; Source/WebCore/accessibility/AXObjectStore.h:35
&gt; +class AXObjectStore {

This name confuses me, but that may be a product of me not having wrapped my mind around it yet. My initial reaction based on the name is that it&apos;s an abstraction over adding + removing objects by ID, but that&apos;s not what it is. I can&apos;t think of a better one right now, so if you disagree the name is confusing, or if you also can&apos;t think of a better one, then it&apos;s fine.

&gt; Source/WebCore/accessibility/AXObjectStore.h:95
&gt; +    } while (!axID.isValid() || map().contains(axID));

Is it possible for ObjectIdentifier::generate() to create an invalid ID? If not, this !axID.isValid() doesn&apos;t seem needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1920086</commentid>
    <comment_count>4</comment_count>
      <attachid>464079</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-12-16 14:53:20 -0800</bug_when>
    <thetext>Created attachment 464079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1920089</commentid>
    <comment_count>5</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-12-16 15:04:14 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #3)
&gt; Comment on attachment 464077 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=464077&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:270
&gt; &gt; +    AXTRACE(makeString(&quot;AXObjectCache::~AXObjectCache 0x&quot;_s, hex(reinterpret_cast&lt;uintptr_t&gt;(this))));
&gt; 
&gt; With this patch, we now rely on some outside logic to call
&gt; AXObjectCache::willBeDestroyed(), which seems fallible. The lifetime of the
&gt; cache is pretty simple right now (it dies when the document does), but
&gt; there&apos;s nothing stopping it from becoming harder to reason about. Missing
&gt; the call to AXObjectCache::willBeDestroyed() would leak a lot of memory.
&gt; 
&gt; If we must move this destruction logic out of the destructor, can we somehow
&gt; make it impossible for the cache to not be cleaned up? Maybe a flag
&gt; indicating willBeDestroyed has been called, and then the destructor checks
&gt; that flag and performs willBeDestroyed if necessary?

This issue is no longer since the map is now &lt;AXID, WeakPtr&gt;, so it is fine to continue cleaning up in the destructor as before. However, we should revisit the construction/destruction of AXObjectCache since it doesn&apos;t follow the WebKit pattern of a create static method with private constructor. Also all the cleanup code in the destructor should probably moved to a cleanup method that can be invoked from the destructor.

&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectStore.h:35
&gt; &gt; +class AXObjectStore {
&gt; 
&gt; This name confuses me, but that may be a product of me not having wrapped my
&gt; mind around it yet. My initial reaction based on the name is that it&apos;s an
&gt; abstraction over adding + removing objects by ID, but that&apos;s not what it is.
&gt; I can&apos;t think of a better one right now, so if you disagree the name is
&gt; confusing, or if you also can&apos;t think of a better one, then it&apos;s fine.

The abstraction is exactly what you think it was, but since in this context AXObject has a very specific meaning, it makes it confusing. An alternative could be AXTreeStore. We&apos;ll give it some more thought and see if we come up with a better name than that.

&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectStore.h:95
&gt; &gt; +    } while (!axID.isValid() || map().contains(axID));
&gt; 
&gt; Is it possible for ObjectIdentifier::generate() to create an invalid ID? If
&gt; not, this !axID.isValid() doesn&apos;t seem needed.

Yes, it can return 0 which is not a valid identifier, so we need to keep it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1920127</commentid>
    <comment_count>6</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-12-16 16:36:18 -0800</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebCore/accessibility/AXObjectStore.h:95
&gt; &gt; &gt; +    } while (!axID.isValid() || map().contains(axID));
&gt; &gt; 
&gt; &gt; Is it possible for ObjectIdentifier::generate() to create an invalid ID? If
&gt; &gt; not, this !axID.isValid() doesn&apos;t seem needed.
&gt; 
&gt; Yes, it can return 0 which is not a valid identifier, so we need to keep it.

static ObjectIdentifier generate()
{
    return ObjectIdentifier { generateIdentifierInternal() };
}

uint64_t ObjectIdentifierBase::generateIdentifierInternal()
{
    static uint64_t current;
    return ++current;
}

This will always be 1 or greater, won&apos;t it? Or am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1920256</commentid>
    <comment_count>7</comment_count>
      <attachid>464089</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-12-17 10:32:04 -0800</bug_when>
    <thetext>Created attachment 464089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1920271</commentid>
    <comment_count>8</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-12-17 12:32:38 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #6)
&gt; &gt; &gt; &gt; Source/WebCore/accessibility/AXObjectStore.h:95
&gt; &gt; &gt; &gt; +    } while (!axID.isValid() || map().contains(axID));
&gt; &gt; &gt; 
&gt; &gt; &gt; Is it possible for ObjectIdentifier::generate() to create an invalid ID? If
&gt; &gt; &gt; not, this !axID.isValid() doesn&apos;t seem needed.
&gt; &gt; 
&gt; &gt; Yes, it can return 0 which is not a valid identifier, so we need to keep it.
&gt; 
&gt; static ObjectIdentifier generate()
&gt; {
&gt;     return ObjectIdentifier { generateIdentifierInternal() };
&gt; }
&gt; 
&gt; uint64_t ObjectIdentifierBase::generateIdentifierInternal()
&gt; {
&gt;     static uint64_t current;
&gt;     return ++current;
&gt; }
&gt; 
&gt; This will always be 1 or greater, won&apos;t it? Or am I missing something?

    uint64_t i = 0xffffffffffffffff;
    WTFLogAlways(&quot;%llu %llu&quot;, i, i + 1);

Output:
18446744073709551615 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1922856</commentid>
    <comment_count>9</comment_count>
      <attachid>464327</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-01-04 07:57:36 -0800</bug_when>
    <thetext>Created attachment 464327
Patch

Fix for win and gtk builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1922914</commentid>
    <comment_count>10</comment_count>
      <attachid>464327</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2023-01-04 11:22:45 -0800</bug_when>
    <thetext>Comment on attachment 464327
Patch

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

&gt; COMMIT_MESSAGE:7
&gt; +Added a base template class named AXObjectStore to both AXObjectCache and AXIsolatedTree that implements a map-based storage for instances. The keys in the map are the objects IDs which are assigned on construction. This is necessary to retrieve an instance based on its ID. Retrieving an AXObjectCache or AXIsolatedTree instance is needed for the TextMarker refactoring in https://bugs.webkit.org/show_bug.cgi?id=230558.

&quot;AXObjectStore to both AXObjectCache&quot; -&gt; &quot;AXObjectStore for both AXObjectCache&quot;

&gt; Source/WebCore/accessibility/AXTreeStore.h:47
&gt; +    static HashMap&lt;AXID, WeakPtr&lt;T&gt;&gt;&amp; map() WTF_REQUIRES_LOCK(s_storeLock);

do we need to expose map() as protected? or can it be private? I see it requires the lock usage which is good, but also seems like it might be used incorrectly.
we also have all the methods we need to interact with it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1922979</commentid>
    <comment_count>11</comment_count>
      <attachid>464337</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-01-04 14:12:25 -0800</bug_when>
    <thetext>Created attachment 464337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1922980</commentid>
    <comment_count>12</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-01-04 14:14:45 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #10)
&gt; Comment on attachment 464327 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=464327&amp;action=review
&gt; 
&gt; &gt; COMMIT_MESSAGE:7
&gt; &gt; +Added a base template class named AXObjectStore to both AXObjectCache and AXIsolatedTree that implements a map-based storage for instances. The keys in the map are the objects IDs which are assigned on construction. This is necessary to retrieve an instance based on its ID. Retrieving an AXObjectCache or AXIsolatedTree instance is needed for the TextMarker refactoring in https://bugs.webkit.org/show_bug.cgi?id=230558.
&gt; 
&gt; &quot;AXObjectStore to both AXObjectCache&quot; -&gt; &quot;AXObjectStore for both
&gt; AXObjectCache&quot;

Fixed.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXTreeStore.h:47
&gt; &gt; +    static HashMap&lt;AXID, WeakPtr&lt;T&gt;&gt;&amp; map() WTF_REQUIRES_LOCK(s_storeLock);
&gt; 
&gt; do we need to expose map() as protected? or can it be private? I see it
&gt; requires the lock usage which is good, but also seems like it might be used
&gt; incorrectly.
&gt; we also have all the methods we need to interact with it

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1923139</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-01-05 07:03:03 -0800</bug_when>
    <thetext>Committed 258480@main (da43d7445735): &lt;https://commits.webkit.org/258480@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 464337.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464077</attachid>
            <date>2022-12-16 09:25:32 -0800</date>
            <delta_ts>2022-12-16 14:53:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-249480-20221216122531.patch</filename>
            <type>text/plain</type>
            <size>21713</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSA1Mjg1NWQ2MGQyZGU3YTcyNGVlZDAzOGM1NWE4OGE1OGI5ZGM1ZWEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBGcmksIDE2IERlYyAyMDIyIDA4OjU3OjA3IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IEFkZCBBWElEIGlkZW50aWZpY2F0aW9uIHRvIGJvdGggQVhPYmplY3RDYWNoZSBhbmQKIEFY
SXNvbGF0ZWRUcmVlIHNvIHRoYXQgaW5zdGFuY2VzIG9mIHRoZXNlIGNsYXNzZXMgY2FuIGJlIHJl
dHJpZXZlZCBieSBJRC4KIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NDk0ODAgPHJkYXI6Ly9wcm9ibGVtLzEwMzQ0OTI5ND4KClJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgoKQWRkZWQgYSBiYXNlIHRlbXBsYXRlIGNsYXNzIG5hbWVkIEFYT2JqZWN0U3RvcmUgdG8g
Ym90aCBBWE9iamVjdENhY2hlIGFuZCBBWElzb2xhdGVkVHJlZSB0aGF0IGltcGxlbWVudHMgYSBt
YXAtYmFzZWQgc3RvcmFnZSBmb3IgaW5zdGFuY2VzLiBUaGUga2V5cyBpbiB0aGUgbWFwIGFyZSB0
aGUgb2JqZWN0cyBJRHMgd2hpY2ggYXJlIGFzc2lnbmVkIG9uIGNvbnN0cnVjdGlvbi4gVGhpcyBp
cyBuZWNlc3NhcnkgdG8gcmV0cmlldmUgYW4gaW5zdGFuY2UgYmFzZWQgb24gaXRzIElELiBSZXRy
aWV2aW5nIGFuIEFYT2JqZWN0Q2FjaGUgb3IgQVhJc29sYXRlZFRyZWUgaW5zdGFuY2UgaXMgbmVl
ZGVkIGZvciB0aGUgVGV4dE1hcmtlciByZWZhY3RvcmluZyBpbiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNTU4LgotLS0KIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiB8ICAgNCArCiAuLi4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAgNDQgKysrKy0tLS0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5oICB8ICAxMCArLQogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdFN0b3JlLmggIHwgMTAyICsrKysrKysrKysrKysrKysrKwogLi4uL2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgICAgICAgICAgIHwgIDUwICsrKy0tLS0tLQog
Li4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oICAgICAgICAgICAgIHwgIDIzICsrLS0K
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgICAgICAgICAgICAgICB8ICAgOCArLQog
NyBmaWxlcyBjaGFuZ2VkLCAxNjAgaW5zZXJ0aW9ucygrKSwgODEgZGVsZXRpb25zKC0pCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdFN0b3Jl
LmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYjIyNGQ3NzYwZGFhLi5hNGIwYjUyMGRlN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ1MjcsNiArNDUyNyw3
IEBACiAJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA3MEEz
MDBGRUEwMEY2MUFCOCAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMEMwNTRDRDExMThDOEU0MDBDRTI2MzYg
LyogSURMUGFyc2VyLnBtIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0UxIC8qIElETFBhcnNlci5wbSAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMEUyRjMyNzI0MTJCRjI5
MDA5QzczRUMgLyogbGliQWNjZXNzaWJpbGl0eS50YmQgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUyRjMyNTI0MTJCRjI5MDA5QzczRUMgLyogbGli
QWNjZXNzaWJpbGl0eS50YmQgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoV2VhaywgKTsg
fTsgfTsKKwkJQzBFOEFEQzUyOTRCNUE2MzAwNzZDQkRDIC8qIEFYT2JqZWN0U3RvcmUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRThBREM0Mjk0QjVB
NjIwMDc2Q0JEQyAvKiBBWE9iamVjdFN0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzBGMkE0NDExMzg2OUFBQjAwNjZDNTM0IC8qIHByZXBy
b2Nlc3Nvci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMwRjJBNDNGMTM4NjlBMjgwMDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzEwNURBNjQwRjNBQTZCODAw
MURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTA1REE2MzBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVu
Y29kaW5nRGV0ZWN0b3IuaCAqLzsgfTsKIAkJQzExQTlFQ0UyMTQwM0E1QzAwQ0ZCMjBBIC8qIFN3
aXRjaGluZ0dQVUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzExQTlFQ0QyMTQwM0E1QzAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjM4
MSw2ICsxNjM4Miw3IEBACiAJCUMwNzgzNzYwMjNERjI1M0UwMEM5QzVDOCAvKiBBWElzb2xhdGVk
T2JqZWN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQVhJc29sYXRlZE9iamVjdE1hYy5t
bTsgcGF0aCA9IG1hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMDhGMTNBMTI0NDc2NkRDMDBBQjk4OUYgLyogQVhMb2dnZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQVhMb2dnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMEUyRjMyNTI0MTJCRjI5MDA5QzczRUMgLyogbGliQWNjZXNzaWJpbGl0eS50YmQgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAic291cmNlY29kZS50
ZXh0LWJhc2VkLWR5bGliLWRlZmluaXRpb24iOyBuYW1lID0gbGliQWNjZXNzaWJpbGl0eS50YmQ7
IHBhdGggPSB1c3IvbGliL2xpYkFjY2Vzc2liaWxpdHkudGJkOyBzb3VyY2VUcmVlID0gU0RLUk9P
VDsgfTsKKwkJQzBFOEFEQzQyOTRCNUE2MjAwNzZDQkRDIC8qIEFYT2JqZWN0U3RvcmUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhPYmplY3RTdG9yZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vz
c29yLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMv
cHJlcHJvY2Vzc29yLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTA1REE2MTBG
M0FBNjhGMDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwOyBw
YXRoID0gLi4vLi4vUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzEwNURBNjMwRjNBQTZCODAwMURENDRGIC8qIFRl
eHRFbmNvZGluZ0RldGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRl
eHRFbmNvZGluZ0RldGVjdG9yLmg7IHBhdGggPSAuLi8uLi9QQUwvcGFsL3RleHQvVGV4dEVuY29k
aW5nRGV0ZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDI0LDYgKzIx
NDI2LDcgQEAKIAkJCQlDMDQ5M0VCNzI0NDY5OUU0MDA5QUFDODAgLyogQVhMb2dnZXIuaCAqLywK
IAkJCQkyOTgxQ0FBRjEzMTgyMkVDMDBEMTJGMkEgLyogQVhPYmplY3RDYWNoZS5jcHAgKi8sCiAJ
CQkJMjlBODEyMUEwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCAqLywKKwkJCQlD
MEU4QURDNDI5NEI1QTYyMDA3NkNCREMgLyogQVhPYmplY3RTdG9yZS5oICovLAogCQkJCTkxQzlG
MkY4MUFFM0JFMjQwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oICovLAogCQkJ
CUJDNEE1MzMwMjU2MDU5MDMwMDI4QzU5MiAvKiBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWUuaCAq
LywKIAkJCSk7CkBAIC0zNDk0Nyw2ICszNDk1MCw3IEBACiAJCQkJMjlBRTIxMzUyMUFCQTQ4QTAw
ODY5MjgzIC8qIEFYSXNvbGF0ZWRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QUUyMTJE
MjFBQjlFRUIwMDg2OTI4MyAvKiBBWElzb2xhdGVkVHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MjlBODEyMzgwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUMwRThBREM1Mjk0QjVBNjMwMDc2Q0JEQyAvKiBBWE9iamVjdFN0b3JlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MUM5RjJGOTFBRTNCRUIwMDA5NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFu
Z2VJbnRlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzdFNzc3MEJGNDEzNEEwMDE1Mjg3MiAv
KiBCYWNrRm9yd2FyZENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTc0MUQwRjBCMDcyNTlB
MDBFRDQ0MkMgLyogQmFja0ZvcndhcmRDbGllbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggYTliYWMwNTQ2
YmUzLi5kMTc4NjFiYWQ2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcApAQCAtMjQ0LDExICsyNDQsMTIgQEAgQVhPYmplY3RDYWNoZTo6QVhP
YmplY3RDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKGxvYWRpbmdQcm9ncmVzcyA8
PSAwKQogICAgICAgICBsb2FkaW5nUHJvZ3Jlc3MgPSAxOwogICAgIG1fbG9hZGluZ1Byb2dyZXNz
ID0gbG9hZGluZ1Byb2dyZXNzOworCisgICAgQVhPYmplY3RTdG9yZTo6YWRkKG1faWQsICp0aGlz
KTsKIH0KIAotQVhPYmplY3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUoKQordm9pZCBBWE9iamVjdENh
Y2hlOjp3aWxsQmVEZXN0cm95ZWQoKQogewotICAgIEFYVFJBQ0UobWFrZVN0cmluZygiQVhPYmpl
Y3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUgMHgiX3MsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4odGhpcykpKSk7CiAgICAgbV9ub3RpZmljYXRpb25Qb3N0VGltZXIuc3RvcCgpOwogICAg
IG1fbGl2ZVJlZ2lvbkNoYW5nZWRQb3N0VGltZXIuc3RvcCgpOwogICAgIG1fcGVyZm9ybUNhY2hl
VXBkYXRlVGltZXIuc3RvcCgpOwpAQCAtMjYwLDYgKzI2MSwxMyBAQCBBWE9iamVjdENhY2hlOjp+
QVhPYmplY3RDYWNoZSgpCiAgICAgaWYgKG1fcGFnZUlEKQogICAgICAgICBBWElzb2xhdGVkVHJl
ZTo6cmVtb3ZlVHJlZUZvclBhZ2VJRCgqbV9wYWdlSUQpOwogI2VuZGlmCisKKyAgICBBWE9iamVj
dFN0b3JlOjpyZW1vdmUobV9pZCk7Cit9CisKK0FYT2JqZWN0Q2FjaGU6On5BWE9iamVjdENhY2hl
KCkKK3sKKyAgICBBWFRSQUNFKG1ha2VTdHJpbmcoIkFYT2JqZWN0Q2FjaGU6On5BWE9iamVjdENh
Y2hlIDB4Il9zLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpKSkpOwogfQog
CiBib29sIEFYT2JqZWN0Q2FjaGU6OmlzTW9kYWxFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpIGNv
bnN0CkBAIC05ODgsMTggKzk5Niw2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cmVtb3ZlKFdpZGdl
dCogdmlldykKICAgICAgICAgcmV0dXJuOwogICAgIHJlbW92ZShtX3dpZGdldE9iamVjdE1hcHBp
bmcudGFrZSh2aWV3KSk7CiB9Ci0gICAgCi0gICAgCi0jaWYgIVBMQVRGT1JNKFdJTikKLUFYSUQg
QVhPYmplY3RDYWNoZTo6cGxhdGZvcm1HZW5lcmF0ZUFYSUQoKSBjb25zdAotewotICAgIEFYSUQg
b2JqSUQ7Ci0gICAgZG8gewotICAgICAgICBvYmpJRCA9IEFYSUQ6OmdlbmVyYXRlKCk7Ci0gICAg
fSB3aGlsZSAoIW9iaklELmlzVmFsaWQoKSB8fCBtX2lkc0luVXNlLmNvbnRhaW5zKG9iaklEKSk7
Ci0gICAgcmV0dXJuIG9iaklEOwotfQotI2VuZGlmCiAKIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2Jq
ZWN0Pj4gQVhPYmplY3RDYWNoZTo6b2JqZWN0c0ZvcklEcyhjb25zdCBWZWN0b3I8QVhJRD4mIGF4
SURzKSBjb25zdAogewpAQCAtMTAxNSwyMSArMTAxMSwxOSBAQCBWZWN0b3I8UmVmUHRyPEFYQ29y
ZU9iamVjdD4+IEFYT2JqZWN0Q2FjaGU6Om9iamVjdHNGb3JJRHMoY29uc3QgVmVjdG9yPEFYSUQ+
JiBheAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUFYSUQgQVhPYmplY3RDYWNoZTo6Z2V0QVhJ
RChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmopCitBWElEIEFYT2JqZWN0Q2FjaGU6OmdldEFYSUQo
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQogewogICAgIC8vIGNoZWNrIGZvciBhbHJlYWR5
LWFzc2lnbmVkIElECi0gICAgQVhJRCBvYmpJRCA9IG9iai0+b2JqZWN0SUQoKTsKLSAgICBpZiAo
b2JqSUQpIHsKLSAgICAgICAgQVNTRVJUKG1faWRzSW5Vc2UuY29udGFpbnMob2JqSUQpKTsKLSAg
ICAgICAgcmV0dXJuIG9iaklEOworICAgIEFYSUQgb2JqZWN0SUQgPSBvYmplY3QtPm9iamVjdElE
KCk7CisgICAgaWYgKG9iamVjdElELmlzVmFsaWQoKSkgeworICAgICAgICBBU1NFUlQobV9pZHNJ
blVzZS5jb250YWlucyhvYmplY3RJRCkpOworICAgICAgICByZXR1cm4gb2JqZWN0SUQ7CiAgICAg
fQogCi0gICAgb2JqSUQgPSBwbGF0Zm9ybUdlbmVyYXRlQVhJRCgpOwotCi0gICAgbV9pZHNJblVz
ZS5hZGQob2JqSUQpOwotICAgIG9iai0+c2V0T2JqZWN0SUQob2JqSUQpOwotICAgIAotICAgIHJl
dHVybiBvYmpJRDsKKyAgICBvYmplY3RJRCA9IGdlbmVyYXRlTmV3SUQoKTsKKyAgICBtX2lkc0lu
VXNlLmFkZChvYmplY3RJRCk7CisgICAgb2JqZWN0LT5zZXRPYmplY3RJRChvYmplY3RJRCk7Cisg
ICAgcmV0dXJuIG9iamVjdElEOwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVRleHRD
aGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggNTM1ZTcxNDIyMjFmLi4xN2QxYTYyNWRm
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFYSXNvbGF0ZWRUcmVl
LmgiCisjaW5jbHVkZSAiQVhPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkFYVGV4dFN0YXRlQ2hh
bmdlSW50ZW50LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUg
IlNpbXBsZVJhbmdlLmgiCkBAIC0xNDMsMTIgKzE0NCwxNiBAQCBlbnVtIEFYVGV4dENoYW5nZSB7
IEFYVGV4dEluc2VydGVkLCBBWFRleHREZWxldGVkLCBBWFRleHRBdHRyaWJ1dGVzQ2hhbmdlZCB9
OwogCiBlbnVtIGNsYXNzIFBvc3RUYXJnZXQgeyBFbGVtZW50LCBPYnNlcnZhYmxlUGFyZW50IH07
CiAKLWNsYXNzIEFYT2JqZWN0Q2FjaGUgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QVhPYmplY3RD
YWNoZT4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFYT2JqZWN0Q2FjaGUpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIEFYT2JqZWN0Q2FjaGUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxBWE9iamVjdENhY2hlPgorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPEFYT2JqZWN0Q2Fj
aGU+CisgICAgLCBwdWJsaWMgQVhPYmplY3RTdG9yZTxBWE9iamVjdENhY2hlPiB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQVhPYmplY3RDYWNoZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgZnJpZW5kIGNsYXNzIEFYSXNvbGF0ZWRUcmVlOwogICAgIGZyaWVuZCBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQVhPYmplY3RDYWNoZSYp
OwogcHVibGljOgogICAgIGV4cGxpY2l0IEFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQmKTsKKyAgICB2
b2lkIHdpbGxCZURlc3Ryb3llZCgpOwogICAgIH5BWE9iamVjdENhY2hlKCk7CiAKICAgICAvLyBS
ZXR1cm5zIHRoZSByb290IG9iamVjdCBmb3IgdGhlIGVudGlyZSBkb2N1bWVudC4KQEAgLTIyNyw3
ICsyMzIsNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgRWxlbWVudCogcm9vdEFYRWRpdGFibGVFbGVt
ZW50KGNvbnN0IE5vZGUqKTsKICAgICBib29sIG5vZGVJc1RleHRDb250cm9sKGNvbnN0IE5vZGUq
KTsKIAotICAgIEFYSUQgcGxhdGZvcm1HZW5lcmF0ZUFYSUQoKSBjb25zdDsKICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYmplY3RGb3JJRChjb25zdCBBWElEJiBpZCkgY29uc3QgeyByZXR1cm4g
bV9vYmplY3RzLmdldChpZCk7IH0KICAgICBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IG9i
amVjdHNGb3JJRHMoY29uc3QgVmVjdG9yPEFYSUQ+JikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdFN0b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi42NTA5ODU0ZjE0ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0U3RvcmUuaApAQCAtMCwwICsxLDEwMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIEFYT2JqZWN0U3RvcmUgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEFYT2JqZWN0U3RvcmUpOworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHJvdGVjdGVkOgorICAgIEFYT2JqZWN0U3RvcmUoKSA9IGRlZmF1bHQ7Cisg
ICAgc3RhdGljIHZvaWQgYWRkKEFYSUQsIFJlZjxUPik7CisgICAgc3RhdGljIHZvaWQgcmVtb3Zl
KEFYSUQpOworICAgIHN0YXRpYyBib29sIGNvbnRhaW5zKEFYSUQpOworCisgICAgc3RhdGljIFJl
ZlB0cjxUPiBzdG9yZUZvcklEKEFYSUQpOworCisgICAgc3RhdGljIEhhc2hNYXA8QVhJRCwgUmVm
PFQ+PiYgbWFwKCkgV1RGX1JFUVVJUkVTX0xPQ0soc19zdG9yZUxvY2spOworICAgIHN0YXRpYyBB
WElEIGdlbmVyYXRlTmV3SUQoKTsKKworICAgIGNvbnN0IEFYSUQgbV9pZCB7IGdlbmVyYXRlTmV3
SUQoKSB9OworICAgIHN0YXRpYyBMb2NrIHNfc3RvcmVMb2NrOworfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4KK2lubGluZSB2b2lkIEFYT2JqZWN0U3RvcmU8VD46OmFkZChBWElEIGF4SUQsIFJl
ZjxUPiB0KQoreworICAgIExvY2tlciBsb2NrZXIgeyBzX3N0b3JlTG9jayB9OworICAgIG1hcCgp
LmFkZChheElELCB0KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIEFY
T2JqZWN0U3RvcmU8VD46OnJlbW92ZShBWElEIGF4SUQpCit7CisgICAgTG9ja2VyIGxvY2tlciB7
IHNfc3RvcmVMb2NrIH07CisgICAgbWFwKCkucmVtb3ZlKGF4SUQpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgoraW5saW5lIGJvb2wgQVhPYmplY3RTdG9yZTxUPjo6Y29udGFpbnMoQVhJRCBh
eElEKQoreworICAgIExvY2tlciBsb2NrZXIgeyBzX3N0b3JlTG9jayB9OworICAgIHJldHVybiBt
YXAoKS5jb250YWlucyhheElEKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBS
ZWZQdHI8VD4gQVhPYmplY3RTdG9yZTxUPjo6c3RvcmVGb3JJRChBWElEIGF4SUQpCit7CisgICAg
TG9ja2VyIGxvY2tlciB7IHNfc3RvcmVMb2NrIH07CisgICAgcmV0dXJuIG1hcCgpLmdldChheElE
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBIYXNoTWFwPEFYSUQsIFJlZjxU
Pj4mIEFYT2JqZWN0U3RvcmU8VD46Om1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hNYXA8QVhJRCwgUmVmPFQ+Pj4gbWFwOworICAgIHJldHVybiBtYXA7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgQVhJRCBBWE9iamVjdFN0b3JlPFQ+OjpnZW5lcmF0ZU5l
d0lEKCkKK3sKKyAgICBBWElEIGF4SUQ7CisgICAgTG9ja2VyIGxvY2tlciB7IHNfc3RvcmVMb2Nr
IH07CisgICAgZG8geworICAgICAgICBheElEID0gQVhJRDo6Z2VuZXJhdGUoKTsKKyAgICB9IHdo
aWxlICghYXhJRC5pc1ZhbGlkKCkgfHwgbWFwKCkuY29udGFpbnMoYXhJRCkpOworICAgIHJldHVy
biBheElEOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorTG9jayBBWE9iamVjdFN0b3JlPFQ+
OjpzX3N0b3JlTG9jazsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWUuY3BwCmluZGV4IGZjMGI1YjdjNzQ3OC4uZWEwNmQ3NGFjNmQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuY3BwCkBAIC0zNywyOSArMzcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1M
b2NrIEFYSXNvbGF0ZWRUcmVlOjpzX2NhY2hlTG9jazsKLQotc3RhdGljIHVuc2lnbmVkIG5ld1Ry
ZWVJRCgpCi17Ci0gICAgc3RhdGljIHVuc2lnbmVkIHNfY3VycmVudFRyZWVJRCA9IDA7Ci0gICAg
cmV0dXJuICsrc19jdXJyZW50VHJlZUlEOwotfQotCiBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBS
ZWY8QVhJc29sYXRlZFRyZWU+PiYgQVhJc29sYXRlZFRyZWU6OnRyZWVQYWdlQ2FjaGUoKQogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJ
c29sYXRlZFRyZWU+Pj4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKLUhhc2hNYXA8QVhJc29s
YXRlZFRyZWVJRCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIEFYSXNvbGF0ZWRUcmVlOjp0cmVlSURD
YWNoZSgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8QVhJc29sYXRlZFRy
ZWVJRCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4+IG1hcDsKLSAgICByZXR1cm4gbWFwOwotfQotCiBB
WElzb2xhdGVkVHJlZTo6QVhJc29sYXRlZFRyZWUoQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNo
ZSkKLSAgICA6IG1fdHJlZUlEKG5ld1RyZWVJRCgpKQotICAgICwgbV9heE9iamVjdENhY2hlKGF4
T2JqZWN0Q2FjaGUpCisgICAgOiBtX2F4T2JqZWN0Q2FjaGUoYXhPYmplY3RDYWNoZSkKICAgICAs
IG1fdXNlZE9uQVhUaHJlYWQoYXhPYmplY3RDYWNoZS0+dXNlZE9uQVhUaHJlYWQoKSkKIHsKICAg
ICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6QVhJc29sYXRlZFRyZWUiX3MpOwpAQCAtODAsMTMg
KzY1LDYgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6cXVldWVGb3JEZXN0cnVjdGlvbigpCiAgICAg
bV9xdWV1ZWRGb3JEZXN0cnVjdGlvbiA9IHRydWU7CiB9CiAKLVJlZlB0cjxBWElzb2xhdGVkVHJl
ZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEIHRyZWVJRCkKLXsK
LSAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6dHJlZUZvcklEIl9zKTsKLSAgICBMb2NrZXIg
bG9ja2VyIHsgc19jYWNoZUxvY2sgfTsKLSAgICByZXR1cm4gdHJlZUlEQ2FjaGUoKS5nZXQodHJl
ZUlEKTsKLX0KLQogUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKEFY
T2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUpCiB7CiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRy
ZWU6OmNyZWF0ZSJfcyk7CkBAIC0xMTMsMTEgKzkxLDExIEBAIFJlZjxBWElzb2xhdGVkVHJlZT4g
QVhJc29sYXRlZFRyZWU6OmNyZWF0ZShBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKQogCiAg
ICAgLy8gTm93IHRoYXQgdGhlIHRyZWUgaXMgcmVhZHkgdG8gdGFrZSBjbGllbnQgcmVxdWVzdHMs
IGFkZCBpdCB0byB0aGUgdHJlZQogICAgIC8vIG1hcHMgc28gdGhhdCBpdCBjYW4gYmUgZm91bmQu
CisgICAgQVhPYmplY3RTdG9yZTo6YWRkKHRyZWUtPnRyZWVJRCgpLCB0cmVlLmNvcHlSZWYoKSk7
CiAgICAgYXV0byBwYWdlSUQgPSBheE9iamVjdENhY2hlLT5wYWdlSUQoKTsKLSAgICBMb2NrZXIg
bG9ja2VyIHsgc19jYWNoZUxvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc19zdG9yZUxvY2sg
fTsKICAgICBBU1NFUlQoIXRyZWVQYWdlQ2FjaGUoKS5jb250YWlucygqcGFnZUlEKSk7CiAgICAg
dHJlZVBhZ2VDYWNoZSgpLnNldCgqcGFnZUlELCB0cmVlLmNvcHlSZWYoKSk7Ci0gICAgdHJlZUlE
Q2FjaGUoKS5zZXQodHJlZS0+dHJlZUlEKCksIHRyZWUuY29weVJlZigpKTsKICAgICB0cmVlLT51
cGRhdGVMb2FkaW5nUHJvZ3Jlc3MoYXhPYmplY3RDYWNoZS0+bG9hZGluZ1Byb2dyZXNzKCkpOwog
CiAgICAgcmV0dXJuIHRyZWU7CkBAIC0xMjgsMTggKzEwNiwxNiBAQCB2b2lkIEFYSXNvbGF0ZWRU
cmVlOjpyZW1vdmVUcmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKICAgICBBWFRS
QUNFKCJBWElzb2xhdGVkVHJlZTo6cmVtb3ZlVHJlZUZvclBhZ2VJRCJfcyk7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKIAotICAgIExvY2tlciBsb2NrZXIgeyBzX2NhY2hlTG9jayB9Owor
ICAgIExvY2tlciBsb2NrZXIgeyBzX3N0b3JlTG9jayB9OwogICAgIGlmIChhdXRvIHRyZWUgPSB0
cmVlUGFnZUNhY2hlKCkudGFrZShwYWdlSUQpKQogICAgICAgICB0cmVlLT5xdWV1ZUZvckRlc3Ry
dWN0aW9uKCk7CiB9CiAKIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRy
ZWVGb3JQYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewotICAgIExvY2tlciBsb2NrZXIg
eyBzX2NhY2hlTG9jayB9OwotCisgICAgTG9ja2VyIGxvY2tlciB7IHNfc3RvcmVMb2NrIH07CiAg
ICAgaWYgKGF1dG8gdHJlZSA9IHRyZWVQYWdlQ2FjaGUoKS5nZXQocGFnZUlEKSkKLSAgICAgICAg
cmV0dXJuIFJlZlB0ciB7IHRyZWUgfTsKLQorICAgICAgICByZXR1cm4gdHJlZTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIApAQCAtNjk3LDcgKzY3Myw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6
OnNldEZvY3VzZWROb2RlSUQoQVhJRCBheElEKQogdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRl
TG9hZGluZ1Byb2dyZXNzKGRvdWJsZSBuZXdQcm9ncmVzc1ZhbHVlKQogewogICAgIEFYVFJBQ0Uo
IkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVMb2FkaW5nUHJvZ3Jlc3MiX3MpOwotICAgIEFYTE9HKG1h
a2VTdHJpbmcoIlVwZGF0aW5nIGxvYWRpbmcgcHJvZ3Jlc3MgdG8gIiwgbmV3UHJvZ3Jlc3NWYWx1
ZSwgIiBmb3IgdHJlZUlEICIsIHRyZWVJRCgpKSk7CisgICAgQVhMT0cobWFrZVN0cmluZygiVXBk
YXRpbmcgbG9hZGluZyBwcm9ncmVzcyB0byAiLCBuZXdQcm9ncmVzc1ZhbHVlLCAiIGZvciB0cmVl
SUQgIiwgdHJlZUlEKCkubG9nZ2luZ1N0cmluZygpKSk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIAogICAgIG1fbG9hZGluZ1Byb2dyZXNzID0gbmV3UHJvZ3Jlc3NWYWx1ZTsKQEAgLTgw
MSwxOCArNzc3LDE4IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMo
KQogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGJvdGhlciBjbGVhcmluZyBvdXQgYW55IG90
aGVyIG5vbi1jeWNsZS1jYXVzaW5nIG1lbWJlciB2YXJpYWJsZXMgYXMgdGhleQogICAgICAgICAv
LyB3aWxsIGJlIGNsZWFuZWQgdXAgYXV0b21hdGljYWxseSB3aGVuIHRoZSB0cmVlIGlzIGRlc3Ry
b3llZC4KIAotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgc19jYWNoZUxvY2sgfTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IHNfc3RvcmVMb2NrIH07CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBB
U1NFUlQodHJlZUlEQ2FjaGUoKS5jb250YWlucyh0cmVlSUQoKSkpOwotICAgICAgICBhdXRvIGl0
ZXJhdG9yID0gdHJlZUlEQ2FjaGUoKS5maW5kKHRyZWVJRCgpKTsKLSAgICAgICAgaWYgKGl0ZXJh
dG9yICE9IHRyZWVJRENhY2hlKCkuZW5kKCkpIHsKLSAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9p
bnQsIHRoZXJlIHNob3VsZCBvbmx5IGJlIHR3byByZWZlcmVuY2VzIGxlZnQgdG8gdGhpcyB0cmVl
IC0tIG9uZSBpbiB0aGUgdHJlZUlEQ2FjaGUoKSBtYXAsCisgICAgICAgIEFTU0VSVChBWE9iamVj
dFN0b3JlOjpjb250YWlucyh0cmVlSUQoKSkpOworICAgICAgICBhdXRvIGl0ZXJhdG9yID0gQVhP
YmplY3RTdG9yZTo6bWFwKCkuZmluZCh0cmVlSUQoKSk7CisgICAgICAgIGlmIChpdGVyYXRvciAh
PSBBWE9iamVjdFN0b3JlOjptYXAoKS5lbmQoKSkgeworICAgICAgICAgICAgLy8gQXQgdGhpcyBw
b2ludCwgdGhlcmUgc2hvdWxkIG9ubHkgYmUgdHdvIHJlZmVyZW5jZXMgbGVmdCB0byB0aGlzIHRy
ZWUgLS0gb25lIGluIHRoZSBtYXAsCiAgICAgICAgICAgICAvLyBhbmQgdGhlIGBwcm90ZWN0ZWRU
aGlzYCBhYm92ZS4KICAgICAgICAgICAgIEFTU0VSVChpdGVyYXRvci0+dmFsdWUtPnJlZkNvdW50
KCkgPT0gMiwgIlVuZXhwZWN0ZWQgcmVmY291bnQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gZGVzdHJv
eSBpc29sYXRlZCB0cmVlOiAlZCIsIGl0ZXJhdG9yLT52YWx1ZS0+cmVmQ291bnQoKSk7CiAgICAg
ICAgIH0KICNlbmRpZgogCi0gICAgICAgIHRyZWVJRENhY2hlKCkucmVtb3ZlKHRyZWVJRCgpKTsK
KyAgICAgICAgQVhPYmplY3RTdG9yZTo6cmVtb3ZlKHRyZWVJRCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5kZXggOGU2MDZmOWIxNDc1Li40OWIwODFi
NDQzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5B
QkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIAorI2luY2x1ZGUgIkFYT2JqZWN0U3Rv
cmUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CkBAIC00Nyw4
ICs0OCw2IEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFzcyBQYWdlOwogZW51bSBj
bGFzcyBBWFN0cmVhbU9wdGlvbnMgOiB1aW50OF90OwogCi11c2luZyBBWElzb2xhdGVkVHJlZUlE
ID0gdW5zaWduZWQ7Ci0KIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAg
ICAgQVJJQUlzTXVsdGlsaW5lLAogICAgIEFSSUFMYW5kbWFya1JvbGVEZXNjcmlwdGlvbiwKQEAg
LTI3OCw4ICsyNzcsMTEgQEAgc3RydWN0IEFYUHJvcGVydHlDaGFuZ2UgewogICAgIEFYUHJvcGVy
dHlNYXAgcHJvcGVydGllczsgLy8gQ2hhbmdlZCBwcm9wZXJ0aWVzLgogfTsKIAotY2xhc3MgQVhJ
c29sYXRlZFRyZWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QVhJc29sYXRlZFRyZWU+
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QVhJc29sYXRlZFRyZWU+IHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShBWElzb2xhdGVkVHJlZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworY2xh
c3MgQVhJc29sYXRlZFRyZWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QVhJc29sYXRl
ZFRyZWU+CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QVhJc29sYXRlZFRyZWU+CisgICAg
LCBwdWJsaWMgQVhPYmplY3RTdG9yZTxBWElzb2xhdGVkVHJlZT4geworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEFYSXNvbGF0ZWRUcmVlKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBmcmllbmQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYs
IEFYSXNvbGF0ZWRUcmVlJik7CiAgICAgZnJpZW5kIHZvaWQgc3RyZWFtSXNvbGF0ZWRTdWJ0cmVl
T25NYWluVGhyZWFkKFRleHRTdHJlYW0mLCBjb25zdCBBWElzb2xhdGVkVHJlZSYsIEFYSUQsIGNv
bnN0IE9wdGlvblNldDxBWFN0cmVhbU9wdGlvbnM+Jik7CiBwdWJsaWM6CkBAIC0yOTAsMTEgKzI5
MiwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVl
Rm9yUGFnZUlEKHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KTsKICAgICBzdGF0aWMgUmVm
UHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKLSAgICBz
dGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9ySUQoQVhJc29sYXRlZFRyZWVJRCk7
CiAgICAgQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSgpIGNvbnN0OwogCiAgICAgUmVmUHRy
PEFYSXNvbGF0ZWRPYmplY3Q+IHJvb3ROb2RlKCk7CiAgICAgUmVmUHRyPEFYSXNvbGF0ZWRPYmpl
Y3Q+IGZvY3VzZWROb2RlKCk7CisKICAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gbm9kZUZv
cklEKGNvbnN0IEFYSUQmKSBjb25zdDsKICAgICBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+
IG9iamVjdHNGb3JJRHMoY29uc3QgVmVjdG9yPEFYSUQ+Jik7CiAKQEAgLTMzOSw3ICszNDEsNyBA
QCBwdWJsaWM6CiAgICAgLy8gRHVyaW5nIGxheW91dCB0ZXN0cywgaXQgaXMgY2FsbGVkIG9uIHRo
ZSBtYWluIHRocmVhZC4KICAgICB2b2lkIGFwcGx5UGVuZGluZ0NoYW5nZXMoKTsKIAotICAgIEFY
SXNvbGF0ZWRUcmVlSUQgdHJlZUlEKCkgY29uc3QgeyByZXR1cm4gbV90cmVlSUQ7IH0KKyAgICBB
WElEIHRyZWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KIAogcHJpdmF0ZToKICAgICBBWElz
b2xhdGVkVHJlZShBWE9iamVjdENhY2hlKik7CkBAIC0zNDksOSArMzUxLDcgQEAgcHJpdmF0ZToK
ICAgICAvLyBiZWNhdXNlIGl0IGNvdWxkIGJlIGJlaW5nIHVzZWQgYnkgdGhlIHNlY29uZGFyeSB0
aHJlYWQgdG8gc2VydmljZSBhbiBBWCByZXF1ZXN0LgogICAgIHZvaWQgcXVldWVGb3JEZXN0cnVj
dGlvbigpOwogCi0gICAgc3RhdGljIExvY2sgc19jYWNoZUxvY2s7Ci0gICAgc3RhdGljIEhhc2hN
YXA8QVhJc29sYXRlZFRyZWVJRCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVJRENhY2hlKCkg
V1RGX1JFUVVJUkVTX0xPQ0soc19jYWNoZUxvY2spOwotICAgIHN0YXRpYyBIYXNoTWFwPFBhZ2VJ
ZGVudGlmaWVyLCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgdHJlZVBhZ2VDYWNoZSgpIFdURl9SRVFV
SVJFU19MT0NLKHNfY2FjaGVMb2NrKTsKKyAgICBzdGF0aWMgSGFzaE1hcDxQYWdlSWRlbnRpZmll
ciwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVQYWdlQ2FjaGUoKSBXVEZfUkVRVUlSRVNfTE9D
SyhzX3N0b3JlTG9jayk7CiAKICAgICBlbnVtIGNsYXNzIEF0dGFjaFdyYXBwZXIgOiBib29sIHsg
T25NYWluVGhyZWFkLCBPbkFYVGhyZWFkIH07CiAgICAgc3RkOjpvcHRpb25hbDxOb2RlQ2hhbmdl
PiBub2RlQ2hhbmdlRm9yT2JqZWN0KFJlZjxBWENvcmVPYmplY3Q+LCBBdHRhY2hXcmFwcGVyID0g
QXR0YWNoV3JhcHBlcjo6T25NYWluVGhyZWFkKTsKQEAgLTM2Miw3ICszNjIsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgcXVldWVSZW1vdmFsc0xvY2tlZChWZWN0b3I8QVhJRD4mJikgV1RGX1JFUVVJ
UkVTX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKICAgICB2b2lkIHF1ZXVlUmVtb3ZhbHNBbmRVbnJl
c29sdmVkQ2hhbmdlcyhWZWN0b3I8QVhJRD4mJik7CiAKLSAgICBBWElzb2xhdGVkVHJlZUlEIG1f
dHJlZUlEOwogICAgIHVuc2lnbmVkIG1fbWF4VHJlZURlcHRoIHsgMCB9OwogICAgIEFYT2JqZWN0
Q2FjaGUqIG1fYXhPYmplY3RDYWNoZSB7IG51bGxwdHIgfTsKICAgICBib29sIG1fdXNlZE9uQVhU
aHJlYWQgeyB0cnVlIH07CkBAIC00MTcsOSArNDE2LDcgQEAgaW5saW5lIEFYT2JqZWN0Q2FjaGUq
IEFYSXNvbGF0ZWRUcmVlOjpheE9iamVjdENhY2hlKCkgY29uc3QKIAogaW5saW5lIFJlZlB0cjxB
WElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoc3RkOjpvcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQogewotICAgIGlmIChwYWdlSUQpCi0gICAgICAgIHJl
dHVybiB0cmVlRm9yUGFnZUlEKCpwYWdlSUQpOwotICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiBwYWdlSUQgPyB0cmVlRm9yUGFnZUlEKCpwYWdlSUQpIDogbnVsbHB0cjsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYzAyYzU4M2Q2
NmViLi5jMTVmZDcyMDVmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjg3MSw5ICsy
ODcxLDExIEBAIHZvaWQgRG9jdW1lbnQ6OnN0b3BBY3RpdmVET01PYmplY3RzKCkKIHZvaWQgRG9j
dW1lbnQ6OmNsZWFyQVhPYmplY3RDYWNoZSgpCiB7CiAgICAgQVNTRVJUKCZ0b3BEb2N1bWVudCgp
ID09IHRoaXMpOwotICAgIC8vIENsZWFyIHRoZSBjYWNoZSBtZW1iZXIgdmFyaWFibGUgYmVmb3Jl
IGNhbGxpbmcgZGVsZXRlIGJlY2F1c2UgYXR0ZW1wdHMKLSAgICAvLyBhcmUgbWFkZSB0byBhY2Nl
c3MgaXQgZHVyaW5nIGRlc3RydWN0aW9uLgotICAgIG1fYXhPYmplY3RDYWNoZSA9IG51bGxwdHI7
CisgICAgLy8gTm90aWZ5IHRoZSBBWE9iamVjdENhY2hlIHRoYXQgaXMgYmVpbmcgZGVzdHJveWVk
IGFuZCBjbGVhciB0aGUgbWVtYmVyIHZhcmlhYmxlIGJlZm9yZSBjYWxsaW5nIGRlbGV0ZSBzbyB0
aGF0IGl0IGlzIG5vdCBhY2Nlc3NlZCBkdXJpbmcgZGVzdHJ1Y3Rpb24uCisgICAgaWYgKG1fYXhP
YmplY3RDYWNoZSkgeworICAgICAgICBtX2F4T2JqZWN0Q2FjaGUtPndpbGxCZURlc3Ryb3llZCgp
OworICAgICAgICBtX2F4T2JqZWN0Q2FjaGUgPSBudWxscHRyOworICAgIH0KIH0KIAogQVhPYmpl
Y3RDYWNoZSogRG9jdW1lbnQ6OmV4aXN0aW5nQVhPYmplY3RDYWNoZVNsb3coKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464079</attachid>
            <date>2022-12-16 14:53:20 -0800</date>
            <delta_ts>2022-12-17 10:32:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-249480-20221216175318.patch</filename>
            <type>text/plain</type>
            <size>20469</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSBlNDcyYTllYzJiNjlkMDNkOTllNWIwYThkNTA3M2ZiMTBjYWQwNDQyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBGcmksIDE2IERlYyAyMDIyIDA4OjU3OjA3IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IEFkZCBBWElEIGlkZW50aWZpY2F0aW9uIHRvIGJvdGggQVhPYmplY3RDYWNoZSBhbmQKIEFY
SXNvbGF0ZWRUcmVlIHNvIHRoYXQgaW5zdGFuY2VzIG9mIHRoZXNlIGNsYXNzZXMgY2FuIGJlIHJl
dHJpZXZlZCBieSBJRC4KIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NDk0ODAgPHJkYXI6Ly9wcm9ibGVtLzEwMzQ0OTI5ND4KClJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgoKQWRkZWQgYSBiYXNlIHRlbXBsYXRlIGNsYXNzIG5hbWVkIEFYT2JqZWN0U3RvcmUgdG8g
Ym90aCBBWE9iamVjdENhY2hlIGFuZCBBWElzb2xhdGVkVHJlZSB0aGF0IGltcGxlbWVudHMgYSBt
YXAtYmFzZWQgc3RvcmFnZSBmb3IgaW5zdGFuY2VzLiBUaGUga2V5cyBpbiB0aGUgbWFwIGFyZSB0
aGUgb2JqZWN0cyBJRHMgd2hpY2ggYXJlIGFzc2lnbmVkIG9uIGNvbnN0cnVjdGlvbi4gVGhpcyBp
cyBuZWNlc3NhcnkgdG8gcmV0cmlldmUgYW4gaW5zdGFuY2UgYmFzZWQgb24gaXRzIElELiBSZXRy
aWV2aW5nIGFuIEFYT2JqZWN0Q2FjaGUgb3IgQVhJc29sYXRlZFRyZWUgaW5zdGFuY2UgaXMgbmVl
ZGVkIGZvciB0aGUgVGV4dE1hcmtlciByZWZhY3RvcmluZyBpbiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNTU4LgotLS0KIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiB8ICAgNCArCiAuLi4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAgMzcgKysrLS0tLQogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0U3RvcmUuaCAgfCAxMDIgKysrKysrKysrKysrKysrKysrCiAuLi4vaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCAgICAgICAgICAgfCAgNTAgKysrLS0tLS0tCiAu
Li4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggICAgICAgICAgICAgfCAgMjMgKystLQog
NiBmaWxlcyBjaGFuZ2VkLCAxNDggaW5zZXJ0aW9ucygrKSwgNzYgZGVsZXRpb25zKC0pCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdFN0b3Jl
LmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYjIyNGQ3NzYwZGFhLi5hNGIwYjUyMGRlN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ1MjcsNiArNDUyNyw3
IEBACiAJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA3MEEz
MDBGRUEwMEY2MUFCOCAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMEMwNTRDRDExMThDOEU0MDBDRTI2MzYg
LyogSURMUGFyc2VyLnBtIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0UxIC8qIElETFBhcnNlci5wbSAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMEUyRjMyNzI0MTJCRjI5
MDA5QzczRUMgLyogbGliQWNjZXNzaWJpbGl0eS50YmQgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUyRjMyNTI0MTJCRjI5MDA5QzczRUMgLyogbGli
QWNjZXNzaWJpbGl0eS50YmQgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoV2VhaywgKTsg
fTsgfTsKKwkJQzBFOEFEQzUyOTRCNUE2MzAwNzZDQkRDIC8qIEFYT2JqZWN0U3RvcmUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRThBREM0Mjk0QjVB
NjIwMDc2Q0JEQyAvKiBBWE9iamVjdFN0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzBGMkE0NDExMzg2OUFBQjAwNjZDNTM0IC8qIHByZXBy
b2Nlc3Nvci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMwRjJBNDNGMTM4NjlBMjgwMDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzEwNURBNjQwRjNBQTZCODAw
MURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTA1REE2MzBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVu
Y29kaW5nRGV0ZWN0b3IuaCAqLzsgfTsKIAkJQzExQTlFQ0UyMTQwM0E1QzAwQ0ZCMjBBIC8qIFN3
aXRjaGluZ0dQVUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzExQTlFQ0QyMTQwM0E1QzAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjM4
MSw2ICsxNjM4Miw3IEBACiAJCUMwNzgzNzYwMjNERjI1M0UwMEM5QzVDOCAvKiBBWElzb2xhdGVk
T2JqZWN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQVhJc29sYXRlZE9iamVjdE1hYy5t
bTsgcGF0aCA9IG1hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMDhGMTNBMTI0NDc2NkRDMDBBQjk4OUYgLyogQVhMb2dnZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQVhMb2dnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMEUyRjMyNTI0MTJCRjI5MDA5QzczRUMgLyogbGliQWNjZXNzaWJpbGl0eS50YmQgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAic291cmNlY29kZS50
ZXh0LWJhc2VkLWR5bGliLWRlZmluaXRpb24iOyBuYW1lID0gbGliQWNjZXNzaWJpbGl0eS50YmQ7
IHBhdGggPSB1c3IvbGliL2xpYkFjY2Vzc2liaWxpdHkudGJkOyBzb3VyY2VUcmVlID0gU0RLUk9P
VDsgfTsKKwkJQzBFOEFEQzQyOTRCNUE2MjAwNzZDQkRDIC8qIEFYT2JqZWN0U3RvcmUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhPYmplY3RTdG9yZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vz
c29yLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMv
cHJlcHJvY2Vzc29yLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTA1REE2MTBG
M0FBNjhGMDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwOyBw
YXRoID0gLi4vLi4vUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzEwNURBNjMwRjNBQTZCODAwMURENDRGIC8qIFRl
eHRFbmNvZGluZ0RldGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRl
eHRFbmNvZGluZ0RldGVjdG9yLmg7IHBhdGggPSAuLi8uLi9QQUwvcGFsL3RleHQvVGV4dEVuY29k
aW5nRGV0ZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDI0LDYgKzIx
NDI2LDcgQEAKIAkJCQlDMDQ5M0VCNzI0NDY5OUU0MDA5QUFDODAgLyogQVhMb2dnZXIuaCAqLywK
IAkJCQkyOTgxQ0FBRjEzMTgyMkVDMDBEMTJGMkEgLyogQVhPYmplY3RDYWNoZS5jcHAgKi8sCiAJ
CQkJMjlBODEyMUEwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCAqLywKKwkJCQlD
MEU4QURDNDI5NEI1QTYyMDA3NkNCREMgLyogQVhPYmplY3RTdG9yZS5oICovLAogCQkJCTkxQzlG
MkY4MUFFM0JFMjQwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oICovLAogCQkJ
CUJDNEE1MzMwMjU2MDU5MDMwMDI4QzU5MiAvKiBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWUuaCAq
LywKIAkJCSk7CkBAIC0zNDk0Nyw2ICszNDk1MCw3IEBACiAJCQkJMjlBRTIxMzUyMUFCQTQ4QTAw
ODY5MjgzIC8qIEFYSXNvbGF0ZWRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QUUyMTJE
MjFBQjlFRUIwMDg2OTI4MyAvKiBBWElzb2xhdGVkVHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MjlBODEyMzgwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUMwRThBREM1Mjk0QjVBNjMwMDc2Q0JEQyAvKiBBWE9iamVjdFN0b3JlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MUM5RjJGOTFBRTNCRUIwMDA5NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFu
Z2VJbnRlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzdFNzc3MEJGNDEzNEEwMDE1Mjg3MiAv
KiBCYWNrRm9yd2FyZENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTc0MUQwRjBCMDcyNTlB
MDBFRDQ0MkMgLyogQmFja0ZvcndhcmRDbGllbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggYTliYWMwNTQ2
YmUzLi44NGFmM2ZmMzMzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcApAQCAtMjQ0LDExICsyNDQsMTQgQEAgQVhPYmplY3RDYWNoZTo6QVhP
YmplY3RDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKGxvYWRpbmdQcm9ncmVzcyA8
PSAwKQogICAgICAgICBsb2FkaW5nUHJvZ3Jlc3MgPSAxOwogICAgIG1fbG9hZGluZ1Byb2dyZXNz
ID0gbG9hZGluZ1Byb2dyZXNzOworCisgICAgQVhPYmplY3RTdG9yZTo6YWRkKG1faWQsIHRoaXMp
OwogfQogCiBBWE9iamVjdENhY2hlOjp+QVhPYmplY3RDYWNoZSgpCiB7CiAgICAgQVhUUkFDRSht
YWtlU3RyaW5nKCJBWE9iamVjdENhY2hlOjp+QVhPYmplY3RDYWNoZSAweCJfcywgaGV4KHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSkpKTsKKwogICAgIG1fbm90aWZpY2F0aW9uUG9z
dFRpbWVyLnN0b3AoKTsKICAgICBtX2xpdmVSZWdpb25DaGFuZ2VkUG9zdFRpbWVyLnN0b3AoKTsK
ICAgICBtX3BlcmZvcm1DYWNoZVVwZGF0ZVRpbWVyLnN0b3AoKTsKQEAgLTI2MCw2ICsyNjMsOCBA
QCBBWE9iamVjdENhY2hlOjp+QVhPYmplY3RDYWNoZSgpCiAgICAgaWYgKG1fcGFnZUlEKQogICAg
ICAgICBBWElzb2xhdGVkVHJlZTo6cmVtb3ZlVHJlZUZvclBhZ2VJRCgqbV9wYWdlSUQpOwogI2Vu
ZGlmCisKKyAgICBBWE9iamVjdFN0b3JlOjpyZW1vdmUobV9pZCk7CiB9CiAKIGJvb2wgQVhPYmpl
Y3RDYWNoZTo6aXNNb2RhbEVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkgY29uc3QKQEAgLTk4OCwx
OCArOTkzLDYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpyZW1vdmUoV2lkZ2V0KiB2aWV3KQogICAg
ICAgICByZXR1cm47CiAgICAgcmVtb3ZlKG1fd2lkZ2V0T2JqZWN0TWFwcGluZy50YWtlKHZpZXcp
KTsKIH0KLSAgICAKLSAgICAKLSNpZiAhUExBVEZPUk0oV0lOKQotQVhJRCBBWE9iamVjdENhY2hl
OjpwbGF0Zm9ybUdlbmVyYXRlQVhJRCgpIGNvbnN0Ci17Ci0gICAgQVhJRCBvYmpJRDsKLSAgICBk
byB7Ci0gICAgICAgIG9iaklEID0gQVhJRDo6Z2VuZXJhdGUoKTsKLSAgICB9IHdoaWxlICghb2Jq
SUQuaXNWYWxpZCgpIHx8IG1faWRzSW5Vc2UuY29udGFpbnMob2JqSUQpKTsKLSAgICByZXR1cm4g
b2JqSUQ7Ci19Ci0jZW5kaWYKIAogVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBBWE9iamVj
dENhY2hlOjpvYmplY3RzRm9ySURzKGNvbnN0IFZlY3RvcjxBWElEPiYgYXhJRHMpIGNvbnN0CiB7
CkBAIC0xMDE1LDIxICsxMDA4LDE5IEBAIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gQVhP
YmplY3RDYWNoZTo6b2JqZWN0c0ZvcklEcyhjb25zdCBWZWN0b3I8QVhJRD4mIGF4CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotQVhJRCBBWE9iamVjdENhY2hlOjpnZXRBWElEKEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9iaikKK0FYSUQgQVhPYmplY3RDYWNoZTo6Z2V0QVhJRChBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmplY3QpCiB7CiAgICAgLy8gY2hlY2sgZm9yIGFscmVhZHktYXNzaWduZWQgSUQK
LSAgICBBWElEIG9iaklEID0gb2JqLT5vYmplY3RJRCgpOwotICAgIGlmIChvYmpJRCkgewotICAg
ICAgICBBU1NFUlQobV9pZHNJblVzZS5jb250YWlucyhvYmpJRCkpOwotICAgICAgICByZXR1cm4g
b2JqSUQ7CisgICAgQVhJRCBvYmplY3RJRCA9IG9iamVjdC0+b2JqZWN0SUQoKTsKKyAgICBpZiAo
b2JqZWN0SUQuaXNWYWxpZCgpKSB7CisgICAgICAgIEFTU0VSVChtX2lkc0luVXNlLmNvbnRhaW5z
KG9iamVjdElEKSk7CisgICAgICAgIHJldHVybiBvYmplY3RJRDsKICAgICB9CiAKLSAgICBvYmpJ
RCA9IHBsYXRmb3JtR2VuZXJhdGVBWElEKCk7Ci0KLSAgICBtX2lkc0luVXNlLmFkZChvYmpJRCk7
Ci0gICAgb2JqLT5zZXRPYmplY3RJRChvYmpJRCk7Ci0gICAgCi0gICAgcmV0dXJuIG9iaklEOwor
ICAgIG9iamVjdElEID0gZ2VuZXJhdGVOZXdJRCgpOworICAgIG1faWRzSW5Vc2UuYWRkKG9iamVj
dElEKTsKKyAgICBvYmplY3QtPnNldE9iamVjdElEKG9iamVjdElEKTsKKyAgICByZXR1cm4gb2Jq
ZWN0SUQ7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlVGV4dENoYW5nZWQoQWNjZXNz
aWJpbGl0eU9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuaAppbmRleCA1MzVlNzE0MjIyMWYuLjE1NmM0M2JhNWQ2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWUuaCIKKyNpbmNsdWRl
ICJBWE9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCIK
ICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlUmFuZ2Uu
aCIKQEAgLTE0Myw4ICsxNDQsMTAgQEAgZW51bSBBWFRleHRDaGFuZ2UgeyBBWFRleHRJbnNlcnRl
ZCwgQVhUZXh0RGVsZXRlZCwgQVhUZXh0QXR0cmlidXRlc0NoYW5nZWQgfTsKIAogZW51bSBjbGFz
cyBQb3N0VGFyZ2V0IHsgRWxlbWVudCwgT2JzZXJ2YWJsZVBhcmVudCB9OwogCi1jbGFzcyBBWE9i
amVjdENhY2hlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEFYT2JqZWN0Q2FjaGU+IHsKLSAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShBWE9iamVjdENhY2hlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitjbGFzcyBBWE9iamVjdENhY2hlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEFYT2JqZWN0
Q2FjaGU+CisgICAgLCBwdWJsaWMgQVhPYmplY3RTdG9yZTxBWE9iamVjdENhY2hlPiB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQVhPYmplY3RDYWNoZSk7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgZnJpZW5kIGNsYXNzIEFYSXNvbGF0ZWRUcmVlOwogICAgIGZyaWVuZCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQVhPYmplY3RDYWNo
ZSYpOwogcHVibGljOgpAQCAtMjI3LDcgKzIzMCw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBFbGVt
ZW50KiByb290QVhFZGl0YWJsZUVsZW1lbnQoY29uc3QgTm9kZSopOwogICAgIGJvb2wgbm9kZUlz
VGV4dENvbnRyb2woY29uc3QgTm9kZSopOwogCi0gICAgQVhJRCBwbGF0Zm9ybUdlbmVyYXRlQVhJ
RCgpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdEZvcklEKGNvbnN0IEFY
SUQmIGlkKSBjb25zdCB7IHJldHVybiBtX29iamVjdHMuZ2V0KGlkKTsgfQogICAgIFZlY3RvcjxS
ZWZQdHI8QVhDb3JlT2JqZWN0Pj4gb2JqZWN0c0ZvcklEcyhjb25zdCBWZWN0b3I8QVhJRD4mKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0U3RvcmUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBlYTQ0Mjk4NGQxZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RTdG9y
ZS5oCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xh
c3MgQVhPYmplY3RTdG9yZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQVhPYmplY3RTdG9y
ZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citwcm90ZWN0ZWQ6CisgICAgQVhPYmpl
Y3RTdG9yZSgpID0gZGVmYXVsdDsKKyAgICBzdGF0aWMgdm9pZCBhZGQoQVhJRCwgV2Vha1B0cjxU
Pik7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlKEFYSUQpOworICAgIHN0YXRpYyBib29sIGNvbnRh
aW5zKEFYSUQpOworCisgICAgc3RhdGljIFJlZlB0cjxUPiBzdG9yZUZvcklEKEFYSUQpOworCisg
ICAgc3RhdGljIEhhc2hNYXA8QVhJRCwgV2Vha1B0cjxUPj4mIG1hcCgpIFdURl9SRVFVSVJFU19M
T0NLKHNfc3RvcmVMb2NrKTsKKyAgICBzdGF0aWMgQVhJRCBnZW5lcmF0ZU5ld0lEKCk7CisKKyAg
ICBjb25zdCBBWElEIG1faWQgeyBnZW5lcmF0ZU5ld0lEKCkgfTsKKyAgICBzdGF0aWMgTG9jayBz
X3N0b3JlTG9jazsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCBBWE9i
amVjdFN0b3JlPFQ+OjphZGQoQVhJRCBheElELCBXZWFrUHRyPFQ+IHQpCit7CisgICAgTG9ja2Vy
IGxvY2tlciB7IHNfc3RvcmVMb2NrIH07CisgICAgbWFwKCkuYWRkKGF4SUQsIHQpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIHZvaWQgQVhPYmplY3RTdG9yZTxUPjo6cmVtb3Zl
KEFYSUQgYXhJRCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgc19zdG9yZUxvY2sgfTsKKyAgICBt
YXAoKS5yZW1vdmUoYXhJRCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgYm9v
bCBBWE9iamVjdFN0b3JlPFQ+Ojpjb250YWlucyhBWElEIGF4SUQpCit7CisgICAgTG9ja2VyIGxv
Y2tlciB7IHNfc3RvcmVMb2NrIH07CisgICAgcmV0dXJuIG1hcCgpLmNvbnRhaW5zKGF4SUQpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIFJlZlB0cjxUPiBBWE9iamVjdFN0b3Jl
PFQ+OjpzdG9yZUZvcklEKEFYSUQgYXhJRCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgc19zdG9y
ZUxvY2sgfTsKKyAgICByZXR1cm4gbWFwKCkuZ2V0KGF4SUQpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgoraW5saW5lIEhhc2hNYXA8QVhJRCwgV2Vha1B0cjxUPj4mIEFYT2JqZWN0U3RvcmU8
VD46Om1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8QVhJRCwgV2Vh
a1B0cjxUPj4+IG1hcDsKKyAgICByZXR1cm4gbWFwOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgoraW5saW5lIEFYSUQgQVhPYmplY3RTdG9yZTxUPjo6Z2VuZXJhdGVOZXdJRCgpCit7CisgICAg
QVhJRCBheElEOworICAgIExvY2tlciBsb2NrZXIgeyBzX3N0b3JlTG9jayB9OworICAgIGRvIHsK
KyAgICAgICAgYXhJRCA9IEFYSUQ6OmdlbmVyYXRlKCk7CisgICAgfSB3aGlsZSAoIWF4SUQuaXNW
YWxpZCgpIHx8IG1hcCgpLmNvbnRhaW5zKGF4SUQpKTsKKyAgICByZXR1cm4gYXhJRDsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK0xvY2sgQVhPYmplY3RTdG9yZTxUPjo6c19zdG9yZUxvY2s7
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCBm
YzBiNWI3Yzc0NzguLmVhMDZkNzRhYzZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAt
MzcsMjkgKzM3LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTG9jayBBWElzb2xhdGVk
VHJlZTo6c19jYWNoZUxvY2s7Ci0KLXN0YXRpYyB1bnNpZ25lZCBuZXdUcmVlSUQoKQotewotICAg
IHN0YXRpYyB1bnNpZ25lZCBzX2N1cnJlbnRUcmVlSUQgPSAwOwotICAgIHJldHVybiArK3NfY3Vy
cmVudFRyZWVJRDsKLX0KLQogSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmPEFYSXNvbGF0ZWRU
cmVlPj4mIEFYSXNvbGF0ZWRUcmVlOjp0cmVlUGFnZUNhY2hlKCkKIHsKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4+
IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCi1IYXNoTWFwPEFYSXNvbGF0ZWRUcmVlSUQsIFJl
ZjxBWElzb2xhdGVkVHJlZT4+JiBBWElzb2xhdGVkVHJlZTo6dHJlZUlEQ2FjaGUoKQotewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPEFYSXNvbGF0ZWRUcmVlSUQsIFJlZjxBWElz
b2xhdGVkVHJlZT4+PiBtYXA7Ci0gICAgcmV0dXJuIG1hcDsKLX0KLQogQVhJc29sYXRlZFRyZWU6
OkFYSXNvbGF0ZWRUcmVlKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUpCi0gICAgOiBtX3Ry
ZWVJRChuZXdUcmVlSUQoKSkKLSAgICAsIG1fYXhPYmplY3RDYWNoZShheE9iamVjdENhY2hlKQor
ICAgIDogbV9heE9iamVjdENhY2hlKGF4T2JqZWN0Q2FjaGUpCiAgICAgLCBtX3VzZWRPbkFYVGhy
ZWFkKGF4T2JqZWN0Q2FjaGUtPnVzZWRPbkFYVGhyZWFkKCkpCiB7CiAgICAgQVhUUkFDRSgiQVhJ
c29sYXRlZFRyZWU6OkFYSXNvbGF0ZWRUcmVlIl9zKTsKQEAgLTgwLDEzICs2NSw2IEBAIHZvaWQg
QVhJc29sYXRlZFRyZWU6OnF1ZXVlRm9yRGVzdHJ1Y3Rpb24oKQogICAgIG1fcXVldWVkRm9yRGVz
dHJ1Y3Rpb24gPSB0cnVlOwogfQogCi1SZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRU
cmVlOjp0cmVlRm9ySUQoQVhJc29sYXRlZFRyZWVJRCB0cmVlSUQpCi17Ci0gICAgQVhUUkFDRSgi
QVhJc29sYXRlZFRyZWU6OnRyZWVGb3JJRCJfcyk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IHNfY2Fj
aGVMb2NrIH07Ci0gICAgcmV0dXJuIHRyZWVJRENhY2hlKCkuZ2V0KHRyZWVJRCk7Ci19Ci0KIFJl
ZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZShBWE9iamVjdENhY2hlKiBh
eE9iamVjdENhY2hlKQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpjcmVhdGUiX3Mp
OwpAQCAtMTEzLDExICs5MSwxMSBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVl
OjpjcmVhdGUoQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSkKIAogICAgIC8vIE5vdyB0aGF0
IHRoZSB0cmVlIGlzIHJlYWR5IHRvIHRha2UgY2xpZW50IHJlcXVlc3RzLCBhZGQgaXQgdG8gdGhl
IHRyZWUKICAgICAvLyBtYXBzIHNvIHRoYXQgaXQgY2FuIGJlIGZvdW5kLgorICAgIEFYT2JqZWN0
U3RvcmU6OmFkZCh0cmVlLT50cmVlSUQoKSwgdHJlZS5jb3B5UmVmKCkpOwogICAgIGF1dG8gcGFn
ZUlEID0gYXhPYmplY3RDYWNoZS0+cGFnZUlEKCk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IHNfY2Fj
aGVMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IHNfc3RvcmVMb2NrIH07CiAgICAgQVNTRVJU
KCF0cmVlUGFnZUNhY2hlKCkuY29udGFpbnMoKnBhZ2VJRCkpOwogICAgIHRyZWVQYWdlQ2FjaGUo
KS5zZXQoKnBhZ2VJRCwgdHJlZS5jb3B5UmVmKCkpOwotICAgIHRyZWVJRENhY2hlKCkuc2V0KHRy
ZWUtPnRyZWVJRCgpLCB0cmVlLmNvcHlSZWYoKSk7CiAgICAgdHJlZS0+dXBkYXRlTG9hZGluZ1By
b2dyZXNzKGF4T2JqZWN0Q2FjaGUtPmxvYWRpbmdQcm9ncmVzcygpKTsKIAogICAgIHJldHVybiB0
cmVlOwpAQCAtMTI4LDE4ICsxMDYsMTYgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6cmVtb3ZlVHJl
ZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgQVhUUkFDRSgiQVhJc29sYXRl
ZFRyZWU6OnJlbW92ZVRyZWVGb3JQYWdlSUQiX3MpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgc19jYWNoZUxvY2sgfTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgc19zdG9yZUxvY2sgfTsKICAgICBpZiAoYXV0byB0cmVlID0gdHJlZVBhZ2VDYWNoZSgp
LnRha2UocGFnZUlEKSkKICAgICAgICAgdHJlZS0+cXVldWVGb3JEZXN0cnVjdGlvbigpOwogfQog
CiBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgc19jYWNoZUxvY2sg
fTsKLQorICAgIExvY2tlciBsb2NrZXIgeyBzX3N0b3JlTG9jayB9OwogICAgIGlmIChhdXRvIHRy
ZWUgPSB0cmVlUGFnZUNhY2hlKCkuZ2V0KHBhZ2VJRCkpCi0gICAgICAgIHJldHVybiBSZWZQdHIg
eyB0cmVlIH07Ci0KKyAgICAgICAgcmV0dXJuIHRyZWU7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKQEAgLTY5Nyw3ICs2NzMsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpzZXRGb2N1c2VkTm9k
ZUlEKEFYSUQgYXhJRCkKIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVz
cyhkb3VibGUgbmV3UHJvZ3Jlc3NWYWx1ZSkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJl
ZTo6dXBkYXRlTG9hZGluZ1Byb2dyZXNzIl9zKTsKLSAgICBBWExPRyhtYWtlU3RyaW5nKCJVcGRh
dGluZyBsb2FkaW5nIHByb2dyZXNzIHRvICIsIG5ld1Byb2dyZXNzVmFsdWUsICIgZm9yIHRyZWVJ
RCAiLCB0cmVlSUQoKSkpOworICAgIEFYTE9HKG1ha2VTdHJpbmcoIlVwZGF0aW5nIGxvYWRpbmcg
cHJvZ3Jlc3MgdG8gIiwgbmV3UHJvZ3Jlc3NWYWx1ZSwgIiBmb3IgdHJlZUlEICIsIHRyZWVJRCgp
LmxvZ2dpbmdTdHJpbmcoKSkpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBt
X2xvYWRpbmdQcm9ncmVzcyA9IG5ld1Byb2dyZXNzVmFsdWU7CkBAIC04MDEsMTggKzc3NywxOCBA
QCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKCkKICAgICAgICAgLy8g
V2UgZG9uJ3QgbmVlZCB0byBib3RoZXIgY2xlYXJpbmcgb3V0IGFueSBvdGhlciBub24tY3ljbGUt
Y2F1c2luZyBtZW1iZXIgdmFyaWFibGVzIGFzIHRoZXkKICAgICAgICAgLy8gd2lsbCBiZSBjbGVh
bmVkIHVwIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgdHJlZSBpcyBkZXN0cm95ZWQuCiAKLSAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IHNfY2FjaGVMb2NrIH07CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBzX3N0b3JlTG9jayB9OwogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgQVNTRVJUKHRyZWVJRENh
Y2hlKCkuY29udGFpbnModHJlZUlEKCkpKTsKLSAgICAgICAgYXV0byBpdGVyYXRvciA9IHRyZWVJ
RENhY2hlKCkuZmluZCh0cmVlSUQoKSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSB0cmVlSURD
YWNoZSgpLmVuZCgpKSB7Ci0gICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCB0aGVyZSBzaG91
bGQgb25seSBiZSB0d28gcmVmZXJlbmNlcyBsZWZ0IHRvIHRoaXMgdHJlZSAtLSBvbmUgaW4gdGhl
IHRyZWVJRENhY2hlKCkgbWFwLAorICAgICAgICBBU1NFUlQoQVhPYmplY3RTdG9yZTo6Y29udGFp
bnModHJlZUlEKCkpKTsKKyAgICAgICAgYXV0byBpdGVyYXRvciA9IEFYT2JqZWN0U3RvcmU6Om1h
cCgpLmZpbmQodHJlZUlEKCkpOworICAgICAgICBpZiAoaXRlcmF0b3IgIT0gQVhPYmplY3RTdG9y
ZTo6bWFwKCkuZW5kKCkpIHsKKyAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHRoZXJlIHNo
b3VsZCBvbmx5IGJlIHR3byByZWZlcmVuY2VzIGxlZnQgdG8gdGhpcyB0cmVlIC0tIG9uZSBpbiB0
aGUgbWFwLAogICAgICAgICAgICAgLy8gYW5kIHRoZSBgcHJvdGVjdGVkVGhpc2AgYWJvdmUuCiAg
ICAgICAgICAgICBBU1NFUlQoaXRlcmF0b3ItPnZhbHVlLT5yZWZDb3VudCgpID09IDIsICJVbmV4
cGVjdGVkIHJlZmNvdW50IGJlZm9yZSBhdHRlbXB0aW5nIHRvIGRlc3Ryb3kgaXNvbGF0ZWQgdHJl
ZTogJWQiLCBpdGVyYXRvci0+dmFsdWUtPnJlZkNvdW50KCkpOwogICAgICAgICB9CiAjZW5kaWYK
IAotICAgICAgICB0cmVlSURDYWNoZSgpLnJlbW92ZSh0cmVlSUQoKSk7CisgICAgICAgIEFYT2Jq
ZWN0U3RvcmU6OnJlbW92ZSh0cmVlSUQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkVHJlZS5oCmluZGV4IDhlNjA2ZjliMTQ3NS4uNDliMDgxYjQ0MzZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShBQ0NFU1NJQklM
SVRZX0lTT0xBVEVEX1RSRUUpCiAKKyNpbmNsdWRlICJBWE9iamVjdFN0b3JlLmgiCiAjaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgogI2luY2x1ZGUgIlBhZ2VJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtNDcsOCArNDgsNiBAQCBjbGFz
cyBBY2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgUGFnZTsKIGVudW0gY2xhc3MgQVhTdHJlYW1P
cHRpb25zIDogdWludDhfdDsKIAotdXNpbmcgQVhJc29sYXRlZFRyZWVJRCA9IHVuc2lnbmVkOwot
CiBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIEFSSUFJc011bHRp
bGluZSwKICAgICBBUklBTGFuZG1hcmtSb2xlRGVzY3JpcHRpb24sCkBAIC0yNzgsOCArMjc3LDEx
IEBAIHN0cnVjdCBBWFByb3BlcnR5Q2hhbmdlIHsKICAgICBBWFByb3BlcnR5TWFwIHByb3BlcnRp
ZXM7IC8vIENoYW5nZWQgcHJvcGVydGllcy4KIH07CiAKLWNsYXNzIEFYSXNvbGF0ZWRUcmVlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYSXNvbGF0ZWRUcmVlPiwgcHVibGljIENhbk1h
a2VXZWFrUHRyPEFYSXNvbGF0ZWRUcmVlPiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQVhJ
c29sYXRlZFRyZWUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIEFYSXNvbGF0ZWRU
cmVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYSXNvbGF0ZWRUcmVlPgorICAgICwg
cHVibGljIENhbk1ha2VXZWFrUHRyPEFYSXNvbGF0ZWRUcmVlPgorICAgICwgcHVibGljIEFYT2Jq
ZWN0U3RvcmU8QVhJc29sYXRlZFRyZWU+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBWElz
b2xhdGVkVHJlZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgZnJpZW5kIFdU
Rjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBBWElzb2xhdGVkVHJl
ZSYpOwogICAgIGZyaWVuZCB2b2lkIHN0cmVhbUlzb2xhdGVkU3VidHJlZU9uTWFpblRocmVhZChU
ZXh0U3RyZWFtJiwgY29uc3QgQVhJc29sYXRlZFRyZWUmLCBBWElELCBjb25zdCBPcHRpb25TZXQ8
QVhTdHJlYW1PcHRpb25zPiYpOwogcHVibGljOgpAQCAtMjkwLDExICsyOTIsMTEgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvclBhZ2VJRChzdGQ6
Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPik7CiAgICAgc3RhdGljIFJlZlB0cjxBWElzb2xhdGVk
VHJlZT4gdHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7Ci0gICAgc3RhdGljIFJlZlB0cjxB
WElzb2xhdGVkVHJlZT4gdHJlZUZvcklEKEFYSXNvbGF0ZWRUcmVlSUQpOwogICAgIEFYT2JqZWN0
Q2FjaGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdDsKIAogICAgIFJlZlB0cjxBWElzb2xhdGVkT2Jq
ZWN0PiByb290Tm9kZSgpOwogICAgIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBmb2N1c2VkTm9k
ZSgpOworCiAgICAgUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IG5vZGVGb3JJRChjb25zdCBBWElE
JikgY29uc3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBvYmplY3RzRm9ySURz
KGNvbnN0IFZlY3RvcjxBWElEPiYpOwogCkBAIC0zMzksNyArMzQxLDcgQEAgcHVibGljOgogICAg
IC8vIER1cmluZyBsYXlvdXQgdGVzdHMsIGl0IGlzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQu
CiAgICAgdm9pZCBhcHBseVBlbmRpbmdDaGFuZ2VzKCk7CiAKLSAgICBBWElzb2xhdGVkVHJlZUlE
IHRyZWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJlZUlEOyB9CisgICAgQVhJRCB0cmVlSUQoKSBj
b25zdCB7IHJldHVybiBtX2lkOyB9CiAKIHByaXZhdGU6CiAgICAgQVhJc29sYXRlZFRyZWUoQVhP
YmplY3RDYWNoZSopOwpAQCAtMzQ5LDkgKzM1MSw3IEBAIHByaXZhdGU6CiAgICAgLy8gYmVjYXVz
ZSBpdCBjb3VsZCBiZSBiZWluZyB1c2VkIGJ5IHRoZSBzZWNvbmRhcnkgdGhyZWFkIHRvIHNlcnZp
Y2UgYW4gQVggcmVxdWVzdC4KICAgICB2b2lkIHF1ZXVlRm9yRGVzdHJ1Y3Rpb24oKTsKIAotICAg
IHN0YXRpYyBMb2NrIHNfY2FjaGVMb2NrOwotICAgIHN0YXRpYyBIYXNoTWFwPEFYSXNvbGF0ZWRU
cmVlSUQsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVlSURDYWNoZSgpIFdURl9SRVFVSVJFU19M
T0NLKHNfY2FjaGVMb2NrKTsKLSAgICBzdGF0aWMgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVm
PEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVQYWdlQ2FjaGUoKSBXVEZfUkVRVUlSRVNfTE9DSyhzX2Nh
Y2hlTG9jayk7CisgICAgc3RhdGljIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZjxBWElzb2xh
dGVkVHJlZT4+JiB0cmVlUGFnZUNhY2hlKCkgV1RGX1JFUVVJUkVTX0xPQ0soc19zdG9yZUxvY2sp
OwogCiAgICAgZW51bSBjbGFzcyBBdHRhY2hXcmFwcGVyIDogYm9vbCB7IE9uTWFpblRocmVhZCwg
T25BWFRocmVhZCB9OwogICAgIHN0ZDo6b3B0aW9uYWw8Tm9kZUNoYW5nZT4gbm9kZUNoYW5nZUZv
ck9iamVjdChSZWY8QVhDb3JlT2JqZWN0PiwgQXR0YWNoV3JhcHBlciA9IEF0dGFjaFdyYXBwZXI6
Ok9uTWFpblRocmVhZCk7CkBAIC0zNjIsNyArMzYyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHF1
ZXVlUmVtb3ZhbHNMb2NrZWQoVmVjdG9yPEFYSUQ+JiYpIFdURl9SRVFVSVJFU19MT0NLKG1fY2hh
bmdlTG9nTG9jayk7CiAgICAgdm9pZCBxdWV1ZVJlbW92YWxzQW5kVW5yZXNvbHZlZENoYW5nZXMo
VmVjdG9yPEFYSUQ+JiYpOwogCi0gICAgQVhJc29sYXRlZFRyZWVJRCBtX3RyZWVJRDsKICAgICB1
bnNpZ25lZCBtX21heFRyZWVEZXB0aCB7IDAgfTsKICAgICBBWE9iamVjdENhY2hlKiBtX2F4T2Jq
ZWN0Q2FjaGUgeyBudWxscHRyIH07CiAgICAgYm9vbCBtX3VzZWRPbkFYVGhyZWFkIHsgdHJ1ZSB9
OwpAQCAtNDE3LDkgKzQxNiw3IEBAIGlubGluZSBBWE9iamVjdENhY2hlKiBBWElzb2xhdGVkVHJl
ZTo6YXhPYmplY3RDYWNoZSgpIGNvbnN0CiAKIGlubGluZSBSZWZQdHI8QVhJc29sYXRlZFRyZWU+
IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCkKIHsKLSAgICBpZiAocGFnZUlEKQotICAgICAgICByZXR1cm4gdHJlZUZvclBh
Z2VJRCgqcGFnZUlEKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcGFnZUlEID8g
dHJlZUZvclBhZ2VJRCgqcGFnZUlEKSA6IG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464089</attachid>
            <date>2022-12-17 10:32:04 -0800</date>
            <delta_ts>2023-01-04 07:57:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-249480-20221217133203.patch</filename>
            <type>text/plain</type>
            <size>20269</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSAxMzBjYTRkMzg0OTZmOGVjZDlmMGM5Y2NmOGFlNzRhYjQ2NmJiZDczIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBGcmksIDE2IERlYyAyMDIyIDA4OjU3OjA3IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IEFkZCBBWElEIGlkZW50aWZpY2F0aW9uIHRvIGJvdGggQVhPYmplY3RDYWNoZSBhbmQKIEFY
SXNvbGF0ZWRUcmVlIHNvIHRoYXQgaW5zdGFuY2VzIG9mIHRoZXNlIGNsYXNzZXMgY2FuIGJlIHJl
dHJpZXZlZCBieSBJRC4KIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NDk0ODAgPHJkYXI6Ly9wcm9ibGVtLzEwMzQ0OTI5ND4KClJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgoKQWRkZWQgYSBiYXNlIHRlbXBsYXRlIGNsYXNzIG5hbWVkIEFYT2JqZWN0U3RvcmUgdG8g
Ym90aCBBWE9iamVjdENhY2hlIGFuZCBBWElzb2xhdGVkVHJlZSB0aGF0IGltcGxlbWVudHMgYSBt
YXAtYmFzZWQgc3RvcmFnZSBmb3IgaW5zdGFuY2VzLiBUaGUga2V5cyBpbiB0aGUgbWFwIGFyZSB0
aGUgb2JqZWN0cyBJRHMgd2hpY2ggYXJlIGFzc2lnbmVkIG9uIGNvbnN0cnVjdGlvbi4gVGhpcyBp
cyBuZWNlc3NhcnkgdG8gcmV0cmlldmUgYW4gaW5zdGFuY2UgYmFzZWQgb24gaXRzIElELiBSZXRy
aWV2aW5nIGFuIEFYT2JqZWN0Q2FjaGUgb3IgQVhJc29sYXRlZFRyZWUgaW5zdGFuY2UgaXMgbmVl
ZGVkIGZvciB0aGUgVGV4dE1hcmtlciByZWZhY3RvcmluZyBpbiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNTU4LgotLS0KIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiB8ICAgNCArCiAuLi4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAgMzcgKysrLS0tLQogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYVHJlZVN0b3JlLmggICAgfCAxMDMgKysrKysrKysrKysrKysrKysrCiAuLi4vaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCAgICAgICAgICAgfCAgNTAgKysrLS0tLS0tCiAu
Li4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggICAgICAgICAgICAgfCAgMjMgKystLQog
NiBmaWxlcyBjaGFuZ2VkLCAxNDkgaW5zZXJ0aW9ucygrKSwgNzYgZGVsZXRpb25zKC0pCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5o
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGNkNzRiZTJlZWRkYy4uNDhjMzFiZGMwYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NTMwLDYgKzQ1MzAsNyBA
QAogCQlDMEMwNTRDQzExMThDOEU0MDBDRTI2MzYgLyogZ2VuZXJhdGUtYmluZGluZ3MucGwgaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4QjMwNzBBMzAw
RkVBMDBGNjFBQjggLyogZ2VuZXJhdGUtYmluZGluZ3MucGwgKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzBDMDU0Q0QxMTE4QzhFNDAwQ0UyNjM2IC8q
IElETFBhcnNlci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0ODEzQkYzMDlFREY4OEUwMEY3NTdFMSAvKiBJRExQYXJzZXIucG0gKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzBFMkYzMjcyNDEyQkYyOTAw
OUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBFMkYzMjUyNDEyQkYyOTAwOUM3M0VDIC8qIGxpYkFj
Y2Vzc2liaWxpdHkudGJkICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFdlYWssICk7IH07
IH07CisJCUMwRThBREM1Mjk0QjVBNjMwMDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBFOEFEQzQyOTRCNUE2MjAw
NzZDQkRDIC8qIEFYVHJlZVN0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQzBGMkE0NDExMzg2OUFBQjAwNjZDNTM0IC8qIHByZXByb2Nlc3Nv
ci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRjJB
NDNGMTM4NjlBMjgwMDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzExQTlFQ0UyMTQwM0E1QzAwQ0ZCMjBB
IC8qIFN3aXRjaGluZ0dQVUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzExQTlFQ0QyMTQwM0E1QzAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNs
aWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUMxNDkzODA3MjIzNDU1MUEwMDBDRDcwNyAvKiBTcGVlY2hTeW50aGVzaXNDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDkzODA1MjIzNDI3
MTkwMDBDRDcwNyAvKiBTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTY0MDQsNiArMTY0MDUsNyBAQAogCQlD
MDc4Mzc2MDIzREYyNTNFMDBDOUM1QzggLyogQVhJc29sYXRlZE9iamVjdE1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IEFYSXNvbGF0ZWRPYmplY3RNYWMubW07IHBhdGggPSBtYWMvQVhJc29s
YXRlZE9iamVjdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzA4RjEzQTEy
NDQ3NjZEQzAwQUI5ODlGIC8qIEFYTG9nZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFYTG9n
Z2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBFMkYzMjUyNDEyQkYyOTAw
OUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUudGV4dC1iYXNlZC1keWxpYi1kZWZp
bml0aW9uIjsgbmFtZSA9IGxpYkFjY2Vzc2liaWxpdHkudGJkOyBwYXRoID0gdXNyL2xpYi9saWJB
Y2Nlc3NpYmlsaXR5LnRiZDsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CisJCUMwRThBREM0Mjk0
QjVBNjIwMDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBWFRyZWVTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEYy
QTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9
IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMvcHJlcHJvY2Vzc29yLnBtOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMTFBOUVDRDIxNDAzQTVDMDBDRkIyMEEgLyogU3dpdGNo
aW5nR1BVQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN3aXRjaGluZ0dQVUNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTFBOUVEMjIxNDA1NzhCMDBDRkIyMEEgLyogU3dp
dGNoaW5nR1BVQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN3aXRjaGluZ0dQVUNsaWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTQ0MCw2ICsyMTQ0Miw3IEBA
CiAJCQkJMjk4MUNBQUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFYT2JqZWN0Q2FjaGUuY3BwICovLAog
CQkJCTI5QTgxMjFBMEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlLmggKi8sCiAJCQkJ
OTFDOUYyRjgxQUUzQkUyNDAwOTVCNjFDIC8qIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LmggKi8s
CisJCQkJQzBFOEFEQzQyOTRCNUE2MjAwNzZDQkRDIC8qIEFYVHJlZVN0b3JlLmggKi8sCiAJCQkJ
QkM0QTUzMzAyNTYwNTkwMzAwMjhDNTkyIC8qIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZS5oICov
LAogCQkJKTsKIAkJCXBhdGggPSBhY2Nlc3NpYmlsaXR5OwpAQCAtMzQ5ODQsNiArMzQ5ODcsNyBA
QAogCQkJCTI5QUUyMTJEMjFBQjlFRUIwMDg2OTI4MyAvKiBBWElzb2xhdGVkVHJlZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjlBODEyMzgwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkxQzlGMkY5MUFFM0JFQjAwMDk1QjYxQyAvKiBBWFRleHRT
dGF0ZUNoYW5nZUludGVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzBFOEFEQzUyOTRCNUE2MzAw
NzZDQkRDIC8qIEFYVHJlZVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc3RTc3NzBCRjQx
MzRBMDAxNTI4NzIgLyogQmFja0ZvcndhcmRDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3
NDFEMEYwQjA3MjU5QTAwRUQ0NDJDIC8qIEJhY2tGb3J3YXJkQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0E4QzgxRTExRTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwCmluZGV4IGE5YmFjMDU0NmJlMy4uMGE0MDdhYjRhZmY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTI0NCwxMSAr
MjQ0LDE0IEBAIEFYT2JqZWN0Q2FjaGU6OkFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgIGlmIChsb2FkaW5nUHJvZ3Jlc3MgPD0gMCkKICAgICAgICAgbG9hZGluZ1Byb2dyZXNz
ID0gMTsKICAgICBtX2xvYWRpbmdQcm9ncmVzcyA9IGxvYWRpbmdQcm9ncmVzczsKKworICAgIEFY
VHJlZVN0b3JlOjphZGQobV9pZCwgdGhpcyk7CiB9CiAKIEFYT2JqZWN0Q2FjaGU6On5BWE9iamVj
dENhY2hlKCkKIHsKICAgICBBWFRSQUNFKG1ha2VTdHJpbmcoIkFYT2JqZWN0Q2FjaGU6On5BWE9i
amVjdENhY2hlIDB4Il9zLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpKSkp
OworCiAgICAgbV9ub3RpZmljYXRpb25Qb3N0VGltZXIuc3RvcCgpOwogICAgIG1fbGl2ZVJlZ2lv
bkNoYW5nZWRQb3N0VGltZXIuc3RvcCgpOwogICAgIG1fcGVyZm9ybUNhY2hlVXBkYXRlVGltZXIu
c3RvcCgpOwpAQCAtMjYwLDYgKzI2Myw4IEBAIEFYT2JqZWN0Q2FjaGU6On5BWE9iamVjdENhY2hl
KCkKICAgICBpZiAobV9wYWdlSUQpCiAgICAgICAgIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVUcmVl
Rm9yUGFnZUlEKCptX3BhZ2VJRCk7CiAjZW5kaWYKKworICAgIEFYVHJlZVN0b3JlOjpyZW1vdmUo
bV9pZCk7CiB9CiAKIGJvb2wgQVhPYmplY3RDYWNoZTo6aXNNb2RhbEVsZW1lbnQoRWxlbWVudCYg
ZWxlbWVudCkgY29uc3QKQEAgLTk4OCwxOCArOTkzLDYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpy
ZW1vdmUoV2lkZ2V0KiB2aWV3KQogICAgICAgICByZXR1cm47CiAgICAgcmVtb3ZlKG1fd2lkZ2V0
T2JqZWN0TWFwcGluZy50YWtlKHZpZXcpKTsKIH0KLSAgICAKLSAgICAKLSNpZiAhUExBVEZPUk0o
V0lOKQotQVhJRCBBWE9iamVjdENhY2hlOjpwbGF0Zm9ybUdlbmVyYXRlQVhJRCgpIGNvbnN0Ci17
Ci0gICAgQVhJRCBvYmpJRDsKLSAgICBkbyB7Ci0gICAgICAgIG9iaklEID0gQVhJRDo6Z2VuZXJh
dGUoKTsKLSAgICB9IHdoaWxlICghb2JqSUQuaXNWYWxpZCgpIHx8IG1faWRzSW5Vc2UuY29udGFp
bnMob2JqSUQpKTsKLSAgICByZXR1cm4gb2JqSUQ7Ci19Ci0jZW5kaWYKIAogVmVjdG9yPFJlZlB0
cjxBWENvcmVPYmplY3Q+PiBBWE9iamVjdENhY2hlOjpvYmplY3RzRm9ySURzKGNvbnN0IFZlY3Rv
cjxBWElEPiYgYXhJRHMpIGNvbnN0CiB7CkBAIC0xMDE1LDIxICsxMDA4LDE5IEBAIFZlY3RvcjxS
ZWZQdHI8QVhDb3JlT2JqZWN0Pj4gQVhPYmplY3RDYWNoZTo6b2JqZWN0c0ZvcklEcyhjb25zdCBW
ZWN0b3I8QVhJRD4mIGF4CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQVhJRCBBWE9iamVjdENh
Y2hlOjpnZXRBWElEKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKK0FYSUQgQVhPYmplY3RDYWNo
ZTo6Z2V0QVhJRChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCiB7CiAgICAgLy8gY2hlY2sg
Zm9yIGFscmVhZHktYXNzaWduZWQgSUQKLSAgICBBWElEIG9iaklEID0gb2JqLT5vYmplY3RJRCgp
OwotICAgIGlmIChvYmpJRCkgewotICAgICAgICBBU1NFUlQobV9pZHNJblVzZS5jb250YWlucyhv
YmpJRCkpOwotICAgICAgICByZXR1cm4gb2JqSUQ7CisgICAgQVhJRCBvYmplY3RJRCA9IG9iamVj
dC0+b2JqZWN0SUQoKTsKKyAgICBpZiAob2JqZWN0SUQuaXNWYWxpZCgpKSB7CisgICAgICAgIEFT
U0VSVChtX2lkc0luVXNlLmNvbnRhaW5zKG9iamVjdElEKSk7CisgICAgICAgIHJldHVybiBvYmpl
Y3RJRDsKICAgICB9CiAKLSAgICBvYmpJRCA9IHBsYXRmb3JtR2VuZXJhdGVBWElEKCk7Ci0KLSAg
ICBtX2lkc0luVXNlLmFkZChvYmpJRCk7Ci0gICAgb2JqLT5zZXRPYmplY3RJRChvYmpJRCk7Ci0g
ICAgCi0gICAgcmV0dXJuIG9iaklEOworICAgIG9iamVjdElEID0gZ2VuZXJhdGVOZXdJRCgpOwor
ICAgIG1faWRzSW5Vc2UuYWRkKG9iamVjdElEKTsKKyAgICBvYmplY3QtPnNldE9iamVjdElEKG9i
amVjdElEKTsKKyAgICByZXR1cm4gb2JqZWN0SUQ7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6
aGFuZGxlVGV4dENoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA1MzVlNzE0MjIyMWYu
Ljg2NWI1ZjY0OTk1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFYSXNvbGF0ZWRUcmVlLmgi
CiAjaW5jbHVkZSAiQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCIKKyNpbmNsdWRlICJBWFRyZWVT
dG9yZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRlICJTaW1w
bGVSYW5nZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC0xNDMsOCArMTQ0LDEwIEBAIGVudW0g
QVhUZXh0Q2hhbmdlIHsgQVhUZXh0SW5zZXJ0ZWQsIEFYVGV4dERlbGV0ZWQsIEFYVGV4dEF0dHJp
YnV0ZXNDaGFuZ2VkIH07CiAKIGVudW0gY2xhc3MgUG9zdFRhcmdldCB7IEVsZW1lbnQsIE9ic2Vy
dmFibGVQYXJlbnQgfTsKIAotY2xhc3MgQVhPYmplY3RDYWNoZSA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxBWE9iamVjdENhY2hlPiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQVhPYmplY3RD
YWNoZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworY2xhc3MgQVhPYmplY3RDYWNoZSA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxBWE9iamVjdENhY2hlPgorICAgICwgcHVibGljIEFYVHJlZVN0
b3JlPEFYT2JqZWN0Q2FjaGU+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBWE9iamVjdENh
Y2hlKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3MgQVhJ
c29sYXRlZFRyZWU7CiAgICAgZnJpZW5kIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBBWE9iamVjdENhY2hlJik7CiBwdWJsaWM6CkBAIC0yMjcsNyArMjMwLDYg
QEAgcHVibGljOgogICAgIGNvbnN0IEVsZW1lbnQqIHJvb3RBWEVkaXRhYmxlRWxlbWVudChjb25z
dCBOb2RlKik7CiAgICAgYm9vbCBub2RlSXNUZXh0Q29udHJvbChjb25zdCBOb2RlKik7CiAKLSAg
ICBBWElEIHBsYXRmb3JtR2VuZXJhdGVBWElEKCkgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JqZWN0Rm9ySUQoY29uc3QgQVhJRCYgaWQpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0
cy5nZXQoaWQpOyB9CiAgICAgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBvYmplY3RzRm9y
SURzKGNvbnN0IFZlY3RvcjxBWElEPiYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYVHJlZVN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYVHJlZVN0b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi45MmJlZDU4ZGQ2MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYVHJlZVN0b3JlLmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgi
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIEFYVHJlZVN0
b3JlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBWFRyZWVTdG9yZSk7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Citwcm90ZWN0ZWQ6CisgICAgQVhUcmVlU3RvcmUoKSA9IGRlZmF1
bHQ7CisgICAgc3RhdGljIHZvaWQgYWRkKEFYSUQsIFdlYWtQdHI8VD4pOworICAgIHN0YXRpYyB2
b2lkIHJlbW92ZShBWElEKTsKKyAgICBzdGF0aWMgYm9vbCBjb250YWlucyhBWElEKTsKKworICAg
IHN0YXRpYyBSZWZQdHI8VD4gdHJlZUZvcklEKEFYSUQpOworCisgICAgc3RhdGljIEhhc2hNYXA8
QVhJRCwgV2Vha1B0cjxUPj4mIG1hcCgpIFdURl9SRVFVSVJFU19MT0NLKHNfc3RvcmVMb2NrKTsK
KyAgICBzdGF0aWMgQVhJRCBnZW5lcmF0ZU5ld0lEKCk7CisKKyAgICBjb25zdCBBWElEIG1faWQg
eyBnZW5lcmF0ZU5ld0lEKCkgfTsKKyAgICBzdGF0aWMgTG9jayBzX3N0b3JlTG9jazsKK307CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCBBWFRyZWVTdG9yZTxUPjo6YWRkKEFY
SUQgYXhJRCwgV2Vha1B0cjxUPiB0KQoreworICAgIExvY2tlciBsb2NrZXIgeyBzX3N0b3JlTG9j
ayB9OworICAgIG1hcCgpLmFkZChheElELCB0KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K2lubGluZSB2b2lkIEFYVHJlZVN0b3JlPFQ+OjpyZW1vdmUoQVhJRCBheElEKQoreworICAgIExv
Y2tlciBsb2NrZXIgeyBzX3N0b3JlTG9jayB9OworICAgIG1hcCgpLnJlbW92ZShheElEKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBib29sIEFYVHJlZVN0b3JlPFQ+Ojpjb250
YWlucyhBWElEIGF4SUQpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IHNfc3RvcmVMb2NrIH07Cisg
ICAgcmV0dXJuIG1hcCgpLmNvbnRhaW5zKGF4SUQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgoraW5saW5lIFJlZlB0cjxUPiBBWFRyZWVTdG9yZTxUPjo6dHJlZUZvcklEKEFYSUQgYXhJRCkK
K3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgc19zdG9yZUxvY2sgfTsKKyAgICByZXR1cm4gbWFwKCku
Z2V0KGF4SUQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIEhhc2hNYXA8QVhJ
RCwgV2Vha1B0cjxUPj4mIEFYVHJlZVN0b3JlPFQ+OjptYXAoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoTWFwPEFYSUQsIFdlYWtQdHI8VD4+PiBtYXA7CisgICAgcmV0dXJuIG1h
cDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBBWElEIEFYVHJlZVN0b3JlPFQ+
OjpnZW5lcmF0ZU5ld0lEKCkKK3sKKyAgICBBWElEIGF4SUQ7CisgICAgTG9ja2VyIGxvY2tlciB7
IHNfc3RvcmVMb2NrIH07CisgICAgZG8geworICAgICAgICBheElEID0gQVhJRDo6Z2VuZXJhdGUo
KTsKKyAgICB9IHdoaWxlICghYXhJRC5pc1ZhbGlkKCkgfHwgbWFwKCkuY29udGFpbnMoYXhJRCkp
OworICAgIHJldHVybiBheElEOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorTG9jayBBWFRy
ZWVTdG9yZTxUPjo6c19zdG9yZUxvY2s7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmNwcAppbmRleCBmYzBiNWI3Yzc0NzguLjc4YTQxOThiNWYyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtMzcsMjkgKzM3LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotTG9jayBBWElzb2xhdGVkVHJlZTo6c19jYWNoZUxvY2s7Ci0KLXN0YXRpYyB1bnNp
Z25lZCBuZXdUcmVlSUQoKQotewotICAgIHN0YXRpYyB1bnNpZ25lZCBzX2N1cnJlbnRUcmVlSUQg
PSAwOwotICAgIHJldHVybiArK3NfY3VycmVudFRyZWVJRDsKLX0KLQogSGFzaE1hcDxQYWdlSWRl
bnRpZmllciwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIEFYSXNvbGF0ZWRUcmVlOjp0cmVlUGFnZUNh
Y2hlKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxQYWdlSWRlbnRpZmll
ciwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCi1IYXNo
TWFwPEFYSXNvbGF0ZWRUcmVlSUQsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiBBWElzb2xhdGVkVHJl
ZTo6dHJlZUlEQ2FjaGUoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPEFY
SXNvbGF0ZWRUcmVlSUQsIFJlZjxBWElzb2xhdGVkVHJlZT4+PiBtYXA7Ci0gICAgcmV0dXJuIG1h
cDsKLX0KLQogQVhJc29sYXRlZFRyZWU6OkFYSXNvbGF0ZWRUcmVlKEFYT2JqZWN0Q2FjaGUqIGF4
T2JqZWN0Q2FjaGUpCi0gICAgOiBtX3RyZWVJRChuZXdUcmVlSUQoKSkKLSAgICAsIG1fYXhPYmpl
Y3RDYWNoZShheE9iamVjdENhY2hlKQorICAgIDogbV9heE9iamVjdENhY2hlKGF4T2JqZWN0Q2Fj
aGUpCiAgICAgLCBtX3VzZWRPbkFYVGhyZWFkKGF4T2JqZWN0Q2FjaGUtPnVzZWRPbkFYVGhyZWFk
KCkpCiB7CiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OkFYSXNvbGF0ZWRUcmVlIl9zKTsK
QEAgLTgwLDEzICs2NSw2IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnF1ZXVlRm9yRGVzdHJ1Y3Rp
b24oKQogICAgIG1fcXVldWVkRm9yRGVzdHJ1Y3Rpb24gPSB0cnVlOwogfQogCi1SZWZQdHI8QVhJ
c29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9ySUQoQVhJc29sYXRlZFRyZWVJRCB0
cmVlSUQpCi17Ci0gICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JJRCJfcyk7Ci0g
ICAgTG9ja2VyIGxvY2tlciB7IHNfY2FjaGVMb2NrIH07Ci0gICAgcmV0dXJuIHRyZWVJRENhY2hl
KCkuZ2V0KHRyZWVJRCk7Ci19Ci0KIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6
OmNyZWF0ZShBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKQogewogICAgIEFYVFJBQ0UoIkFY
SXNvbGF0ZWRUcmVlOjpjcmVhdGUiX3MpOwpAQCAtMTEzLDExICs5MSwxMSBAQCBSZWY8QVhJc29s
YXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGUoQVhPYmplY3RDYWNoZSogYXhPYmplY3RD
YWNoZSkKIAogICAgIC8vIE5vdyB0aGF0IHRoZSB0cmVlIGlzIHJlYWR5IHRvIHRha2UgY2xpZW50
IHJlcXVlc3RzLCBhZGQgaXQgdG8gdGhlIHRyZWUKICAgICAvLyBtYXBzIHNvIHRoYXQgaXQgY2Fu
IGJlIGZvdW5kLgorICAgIEFYVHJlZVN0b3JlOjphZGQodHJlZS0+dHJlZUlEKCksIHRyZWUuY29w
eVJlZigpKTsKICAgICBhdXRvIHBhZ2VJRCA9IGF4T2JqZWN0Q2FjaGUtPnBhZ2VJRCgpOwotICAg
IExvY2tlciBsb2NrZXIgeyBzX2NhY2hlTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBzX3N0
b3JlTG9jayB9OwogICAgIEFTU0VSVCghdHJlZVBhZ2VDYWNoZSgpLmNvbnRhaW5zKCpwYWdlSUQp
KTsKICAgICB0cmVlUGFnZUNhY2hlKCkuc2V0KCpwYWdlSUQsIHRyZWUuY29weVJlZigpKTsKLSAg
ICB0cmVlSURDYWNoZSgpLnNldCh0cmVlLT50cmVlSUQoKSwgdHJlZS5jb3B5UmVmKCkpOwogICAg
IHRyZWUtPnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhheE9iamVjdENhY2hlLT5sb2FkaW5nUHJvZ3Jl
c3MoKSk7CiAKICAgICByZXR1cm4gdHJlZTsKQEAgLTEyOCwxOCArMTA2LDE2IEBAIHZvaWQgQVhJ
c29sYXRlZFRyZWU6OnJlbW92ZVRyZWVGb3JQYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVUcmVlRm9yUGFnZUlEIl9zKTsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IHNfY2FjaGVM
b2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IHNfc3RvcmVMb2NrIH07CiAgICAgaWYgKGF1dG8g
dHJlZSA9IHRyZWVQYWdlQ2FjaGUoKS50YWtlKHBhZ2VJRCkpCiAgICAgICAgIHRyZWUtPnF1ZXVl
Rm9yRGVzdHJ1Y3Rpb24oKTsKIH0KIAogUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVk
VHJlZTo6dHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7Ci0gICAgTG9ja2Vy
IGxvY2tlciB7IHNfY2FjaGVMb2NrIH07Ci0KKyAgICBMb2NrZXIgbG9ja2VyIHsgc19zdG9yZUxv
Y2sgfTsKICAgICBpZiAoYXV0byB0cmVlID0gdHJlZVBhZ2VDYWNoZSgpLmdldChwYWdlSUQpKQot
ICAgICAgICByZXR1cm4gUmVmUHRyIHsgdHJlZSB9OwotCisgICAgICAgIHJldHVybiB0cmVlOwog
ICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC02OTcsNyArNjczLDcgQEAgdm9pZCBBWElzb2xh
dGVkVHJlZTo6c2V0Rm9jdXNlZE5vZGVJRChBWElEIGF4SUQpCiB2b2lkIEFYSXNvbGF0ZWRUcmVl
Ojp1cGRhdGVMb2FkaW5nUHJvZ3Jlc3MoZG91YmxlIG5ld1Byb2dyZXNzVmFsdWUpCiB7CiAgICAg
QVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyJfcyk7Ci0gICAg
QVhMT0cobWFrZVN0cmluZygiVXBkYXRpbmcgbG9hZGluZyBwcm9ncmVzcyB0byAiLCBuZXdQcm9n
cmVzc1ZhbHVlLCAiIGZvciB0cmVlSUQgIiwgdHJlZUlEKCkpKTsKKyAgICBBWExPRyhtYWtlU3Ry
aW5nKCJVcGRhdGluZyBsb2FkaW5nIHByb2dyZXNzIHRvICIsIG5ld1Byb2dyZXNzVmFsdWUsICIg
Zm9yIHRyZWVJRCAiLCB0cmVlSUQoKS5sb2dnaW5nU3RyaW5nKCkpKTsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogCiAgICAgbV9sb2FkaW5nUHJvZ3Jlc3MgPSBuZXdQcm9ncmVzc1ZhbHVl
OwpAQCAtODAxLDE4ICs3NzcsMTggQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5n
Q2hhbmdlcygpCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gYm90aGVyIGNsZWFyaW5nIG91
dCBhbnkgb3RoZXIgbm9uLWN5Y2xlLWNhdXNpbmcgbWVtYmVyIHZhcmlhYmxlcyBhcyB0aGV5CiAg
ICAgICAgIC8vIHdpbGwgYmUgY2xlYW5lZCB1cCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHRyZWUg
aXMgZGVzdHJveWVkLgogCi0gICAgICAgIExvY2tlciBsb2NrZXIgeyBzX2NhY2hlTG9jayB9Owor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgc19zdG9yZUxvY2sgfTsKICNpZm5kZWYgTkRFQlVHCi0g
ICAgICAgIEFTU0VSVCh0cmVlSURDYWNoZSgpLmNvbnRhaW5zKHRyZWVJRCgpKSk7Ci0gICAgICAg
IGF1dG8gaXRlcmF0b3IgPSB0cmVlSURDYWNoZSgpLmZpbmQodHJlZUlEKCkpOwotICAgICAgICBp
ZiAoaXRlcmF0b3IgIT0gdHJlZUlEQ2FjaGUoKS5lbmQoKSkgewotICAgICAgICAgICAgLy8gQXQg
dGhpcyBwb2ludCwgdGhlcmUgc2hvdWxkIG9ubHkgYmUgdHdvIHJlZmVyZW5jZXMgbGVmdCB0byB0
aGlzIHRyZWUgLS0gb25lIGluIHRoZSB0cmVlSURDYWNoZSgpIG1hcCwKKyAgICAgICAgQVNTRVJU
KEFYVHJlZVN0b3JlOjpjb250YWlucyh0cmVlSUQoKSkpOworICAgICAgICBhdXRvIGl0ZXJhdG9y
ID0gQVhUcmVlU3RvcmU6Om1hcCgpLmZpbmQodHJlZUlEKCkpOworICAgICAgICBpZiAoaXRlcmF0
b3IgIT0gQVhUcmVlU3RvcmU6Om1hcCgpLmVuZCgpKSB7CisgICAgICAgICAgICAvLyBBdCB0aGlz
IHBvaW50LCB0aGVyZSBzaG91bGQgb25seSBiZSB0d28gcmVmZXJlbmNlcyBsZWZ0IHRvIHRoaXMg
dHJlZSAtLSBvbmUgaW4gdGhlIG1hcCwKICAgICAgICAgICAgIC8vIGFuZCB0aGUgYHByb3RlY3Rl
ZFRoaXNgIGFib3ZlLgogICAgICAgICAgICAgQVNTRVJUKGl0ZXJhdG9yLT52YWx1ZS0+cmVmQ291
bnQoKSA9PSAyLCAiVW5leHBlY3RlZCByZWZjb3VudCBiZWZvcmUgYXR0ZW1wdGluZyB0byBkZXN0
cm95IGlzb2xhdGVkIHRyZWU6ICVkIiwgaXRlcmF0b3ItPnZhbHVlLT5yZWZDb3VudCgpKTsKICAg
ICAgICAgfQogI2VuZGlmCiAKLSAgICAgICAgdHJlZUlEQ2FjaGUoKS5yZW1vdmUodHJlZUlEKCkp
OworICAgICAgICBBWFRyZWVTdG9yZTo6cmVtb3ZlKHRyZWVJRCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5kZXggMzA5MmM1MzVlZjk2Li4xOTU2NDM4
NTg5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5B
QkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIAorI2luY2x1ZGUgIkFYVHJlZVN0b3Jl
LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgogI2luY2x1ZGUg
IlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtNDcsOCAr
NDgsNiBAQCBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgUGFnZTsKIGVudW0gY2xh
c3MgQVhTdHJlYW1PcHRpb25zIDogdWludDhfdDsKIAotdXNpbmcgQVhJc29sYXRlZFRyZWVJRCA9
IHVuc2lnbmVkOwotCiBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAg
IEFSSUFJc011bHRpbGluZSwKICAgICBBUklBTGFuZG1hcmtSb2xlRGVzY3JpcHRpb24sCkBAIC0y
NzgsOCArMjc3LDExIEBAIHN0cnVjdCBBWFByb3BlcnR5Q2hhbmdlIHsKICAgICBBWFByb3BlcnR5
TWFwIHByb3BlcnRpZXM7IC8vIENoYW5nZWQgcHJvcGVydGllcy4KIH07CiAKLWNsYXNzIEFYSXNv
bGF0ZWRUcmVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYSXNvbGF0ZWRUcmVlPiB7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQVhJc29sYXRlZFRyZWUpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK2NsYXNzIEFYSXNvbGF0ZWRUcmVlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEFYSXNvbGF0ZWRUcmVlPgorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPEFYSXNv
bGF0ZWRUcmVlPgorICAgICwgcHVibGljIEFYVHJlZVN0b3JlPEFYSXNvbGF0ZWRUcmVlPiB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQVhJc29sYXRlZFRyZWUpOworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RG
OjpUZXh0U3RyZWFtJiwgQVhJc29sYXRlZFRyZWUmKTsKICAgICBmcmllbmQgdm9pZCBzdHJlYW1J
c29sYXRlZFN1YnRyZWVPbk1haW5UaHJlYWQoVGV4dFN0cmVhbSYsIGNvbnN0IEFYSXNvbGF0ZWRU
cmVlJiwgQVhJRCwgY29uc3QgT3B0aW9uU2V0PEFYU3RyZWFtT3B0aW9ucz4mKTsKIHB1YmxpYzoK
QEAgLTI5MCwxMSArMjkyLDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWZQdHI8QVhJc29s
YXRlZFRyZWU+IHRyZWVGb3JQYWdlSUQoc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pOwog
ICAgIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IHRyZWVGb3JQYWdlSUQoUGFnZUlkZW50
aWZpZXIpOwotICAgIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IHRyZWVGb3JJRChBWElz
b2xhdGVkVHJlZUlEKTsKICAgICBBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Q7
CiAKICAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gcm9vdE5vZGUoKTsKICAgICBSZWZQdHI8
QVhJc29sYXRlZE9iamVjdD4gZm9jdXNlZE5vZGUoKTsKKwogICAgIFJlZlB0cjxBWElzb2xhdGVk
T2JqZWN0PiBub2RlRm9ySUQoY29uc3QgQVhJRCYpIGNvbnN0OwogICAgIFZlY3RvcjxSZWZQdHI8
QVhDb3JlT2JqZWN0Pj4gb2JqZWN0c0ZvcklEcyhjb25zdCBWZWN0b3I8QVhJRD4mKTsKIApAQCAt
MzM5LDcgKzM0MSw3IEBAIHB1YmxpYzoKICAgICAvLyBEdXJpbmcgbGF5b3V0IHRlc3RzLCBpdCBp
cyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIHZvaWQgYXBwbHlQZW5kaW5nQ2hhbmdl
cygpOwogCi0gICAgQVhJc29sYXRlZFRyZWVJRCB0cmVlSUQoKSBjb25zdCB7IHJldHVybiBtX3Ry
ZWVJRDsgfQorICAgIEFYSUQgdHJlZUlEKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogCiBwcml2
YXRlOgogICAgIEFYSXNvbGF0ZWRUcmVlKEFYT2JqZWN0Q2FjaGUqKTsKQEAgLTM0OSw5ICszNTEs
NyBAQCBwcml2YXRlOgogICAgIC8vIGJlY2F1c2UgaXQgY291bGQgYmUgYmVpbmcgdXNlZCBieSB0
aGUgc2Vjb25kYXJ5IHRocmVhZCB0byBzZXJ2aWNlIGFuIEFYIHJlcXVlc3QuCiAgICAgdm9pZCBx
dWV1ZUZvckRlc3RydWN0aW9uKCk7CiAKLSAgICBzdGF0aWMgTG9jayBzX2NhY2hlTG9jazsKLSAg
ICBzdGF0aWMgSGFzaE1hcDxBWElzb2xhdGVkVHJlZUlELCBSZWY8QVhJc29sYXRlZFRyZWU+PiYg
dHJlZUlEQ2FjaGUoKSBXVEZfUkVRVUlSRVNfTE9DSyhzX2NhY2hlTG9jayk7Ci0gICAgc3RhdGlj
IEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVlUGFnZUNh
Y2hlKCkgV1RGX1JFUVVJUkVTX0xPQ0soc19jYWNoZUxvY2spOworICAgIHN0YXRpYyBIYXNoTWFw
PFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgdHJlZVBhZ2VDYWNoZSgpIFdU
Rl9SRVFVSVJFU19MT0NLKHNfc3RvcmVMb2NrKTsKIAogICAgIGVudW0gY2xhc3MgQXR0YWNoV3Jh
cHBlciA6IGJvb2wgeyBPbk1haW5UaHJlYWQsIE9uQVhUaHJlYWQgfTsKICAgICBzdGQ6Om9wdGlv
bmFsPE5vZGVDaGFuZ2U+IG5vZGVDaGFuZ2VGb3JPYmplY3QoUmVmPEFYQ29yZU9iamVjdD4sIEF0
dGFjaFdyYXBwZXIgPSBBdHRhY2hXcmFwcGVyOjpPbk1haW5UaHJlYWQpOwpAQCAtMzYyLDcgKzM2
Miw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBxdWV1ZVJlbW92YWxzTG9ja2VkKFZlY3RvcjxBWElE
PiYmKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOwogICAgIHZvaWQgcXVldWVS
ZW1vdmFsc0FuZFVucmVzb2x2ZWRDaGFuZ2VzKFZlY3RvcjxBWElEPiYmKTsKIAotICAgIEFYSXNv
bGF0ZWRUcmVlSUQgbV90cmVlSUQ7CiAgICAgdW5zaWduZWQgbV9tYXhUcmVlRGVwdGggeyAwIH07
CiAgICAgQVhPYmplY3RDYWNoZSogbV9heE9iamVjdENhY2hlIHsgbnVsbHB0ciB9OwogICAgIGJv
b2wgbV91c2VkT25BWFRocmVhZCB7IHRydWUgfTsKQEAgLTQxNyw5ICs0MTYsNyBAQCBpbmxpbmUg
QVhPYmplY3RDYWNoZSogQVhJc29sYXRlZFRyZWU6OmF4T2JqZWN0Q2FjaGUoKSBjb25zdAogCiBp
bmxpbmUgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJ
RChzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiB7Ci0gICAgaWYgKHBhZ2VJ
RCkKLSAgICAgICAgcmV0dXJuIHRyZWVGb3JQYWdlSUQoKnBhZ2VJRCk7Ci0gICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIHBhZ2VJRCA/IHRyZWVGb3JQYWdlSUQoKnBhZ2VJRCkgOiBudWxs
cHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464327</attachid>
            <date>2023-01-04 07:57:36 -0800</date>
            <delta_ts>2023-01-04 14:12:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-249480-20230104105735.patch</filename>
            <type>text/plain</type>
            <size>21950</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSA1NTMwMWVkNDdlNjRlYzFhMDEwZTE1ODY3MjhhMmNkMjgwNmUyOGZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBGcmksIDE2IERlYyAyMDIyIDA4OjU3OjA3IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IEFkZCBBWElEIGlkZW50aWZpY2F0aW9uIHRvIGJvdGggQVhPYmplY3RDYWNoZSBhbmQKIEFY
SXNvbGF0ZWRUcmVlIHNvIHRoYXQgaW5zdGFuY2VzIG9mIHRoZXNlIGNsYXNzZXMgY2FuIGJlIHJl
dHJpZXZlZCBieSBJRC4KIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NDk0ODAgPHJkYXI6Ly9wcm9ibGVtLzEwMzQ0OTI5ND4KClJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgoKQWRkZWQgYSBiYXNlIHRlbXBsYXRlIGNsYXNzIG5hbWVkIEFYT2JqZWN0U3RvcmUgdG8g
Ym90aCBBWE9iamVjdENhY2hlIGFuZCBBWElzb2xhdGVkVHJlZSB0aGF0IGltcGxlbWVudHMgYSBt
YXAtYmFzZWQgc3RvcmFnZSBmb3IgaW5zdGFuY2VzLiBUaGUga2V5cyBpbiB0aGUgbWFwIGFyZSB0
aGUgb2JqZWN0cyBJRHMgd2hpY2ggYXJlIGFzc2lnbmVkIG9uIGNvbnN0cnVjdGlvbi4gVGhpcyBp
cyBuZWNlc3NhcnkgdG8gcmV0cmlldmUgYW4gaW5zdGFuY2UgYmFzZWQgb24gaXRzIElELiBSZXRy
aWV2aW5nIGFuIEFYT2JqZWN0Q2FjaGUgb3IgQVhJc29sYXRlZFRyZWUgaW5zdGFuY2UgaXMgbmVl
ZGVkIGZvciB0aGUgVGV4dE1hcmtlciByZWZhY3RvcmluZyBpbiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNTU4LgotLS0KIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UgICAgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogfCAgIDQgKwogLi4uL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcCAgIHwgIDM3ICsrKy0tLS0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5oICB8ICAgOCArLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWFRyZWVTdG9yZS5oICAgIHwgMTAzICsrKysrKysrKysrKysrKysrKwogLi4uL2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgICAgICAgICAgIHwgIDUwICsrKy0tLS0tLQogLi4u
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oICAgICAgICAgICAgIHwgIDIzICsrLS0KIC4u
Li9hY2Nlc3NpYmlsaXR5L3dpbi9BWE9iamVjdENhY2hlV2luLmNwcCAgICB8ICAxOSAtLS0tCiA4
IGZpbGVzIGNoYW5nZWQsIDE1MCBpbnNlcnRpb25zKCspLCA5NSBkZWxldGlvbnMoLSkKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVHJlZVN0b3JlLmgK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQppbmRleCA4MzliOTM3MGYzYmEuLmVmNDUyN2E4OTM1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCkBAIC00NDYsNiArNDQ2LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogCiAgICAgYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5oCiAgICAgYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKyAgICBhY2Nlc3NpYmlsaXR5L0FYVHJlZVN0b3JlLmgK
ICAgICBhY2Nlc3NpYmlsaXR5L0FYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LmgKICAgICBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlNZW51TGlzdFBvcHVwLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMmQ2MWZjOWNkNTUuLmMzY2QyZDAzMjE0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNDU0MCw2ICs0NTQwLDcgQEAKIAkJQzBDMDU0Q0MxMTE4QzhFNDAwQ0UyNjM2IC8qIGdlbmVy
YXRlLWJpbmRpbmdzLnBsIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNGOEIzMDcwQTMwMEZFQTAwRjYxQUI4IC8qIGdlbmVyYXRlLWJpbmRpbmdzLnBsICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwQzA1NENE
MTExOEM4RTQwMENFMjYzNiAvKiBJRExQYXJzZXIucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDgxM0JGMzA5RURGODhFMDBGNzU3RTEgLyogSURMUGFy
c2VyLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUMwRTJGMzI3MjQxMkJGMjkwMDlDNzNFQyAvKiBsaWJBY2Nlc3NpYmlsaXR5LnRiZCBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRTJGMzI1MjQxMkJG
MjkwMDlDNzNFQyAvKiBsaWJBY2Nlc3NpYmlsaXR5LnRiZCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChXZWFrLCApOyB9OyB9OworCQlDMEU4QURDNTI5NEI1QTYzMDA3NkNCREMgLyogQVhU
cmVlU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMwRThBREM0Mjk0QjVBNjIwMDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwRjJBNDQxMTM4NjlBQUIwMDY2
QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBt
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxMUE5
RUNFMjE0MDNBNUMwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMUE5RUNEMjE0MDNBNUMwMENGQjIw
QSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlDMTQ5MzgwNzIyMzQ1NTFBMDAwQ0Q3MDcgLyogU3BlZWNoU3lu
dGhlc2lzQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMTQ5MzgwNTIyMzQyNzE5MDAwQ0Q3MDcgLyogU3BlZWNoU3ludGhlc2lzQ2xpZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE2NDM2
LDYgKzE2NDM3LDcgQEAKIAkJQzA3ODM3NjAyM0RGMjUzRTAwQzlDNUM4IC8qIEFYSXNvbGF0ZWRP
YmplY3RNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBWElzb2xhdGVkT2JqZWN0TWFjLm1t
OyBwYXRoID0gbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMwOEYxM0ExMjQ0NzY2REMwMEFCOTg5RiAvKiBBWExvZ2dlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBWExvZ2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMwRTJGMzI1MjQxMkJGMjkwMDlDNzNFQyAvKiBsaWJBY2Nlc3NpYmlsaXR5LnRiZCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJzb3VyY2Vjb2RlLnRl
eHQtYmFzZWQtZHlsaWItZGVmaW5pdGlvbiI7IG5hbWUgPSBsaWJBY2Nlc3NpYmlsaXR5LnRiZDsg
cGF0aCA9IHVzci9saWIvbGliQWNjZXNzaWJpbGl0eS50YmQ7IHNvdXJjZVRyZWUgPSBTREtST09U
OyB9OworCQlDMEU4QURDNDI5NEI1QTYyMDA3NkNCREMgLyogQVhUcmVlU3RvcmUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhUcmVlU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzBGMkE0M0YxMzg2OUEyODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5w
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
c2NyaXB0LnBlcmw7IG5hbWUgPSBwcmVwcm9jZXNzb3IucG07IHBhdGggPSBzY3JpcHRzL3ByZXBy
b2Nlc3Nvci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzExQTlFQ0QyMTQwM0E1
QzAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTd2l0Y2hp
bmdHUFVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzExQTlFRDIyMTQw
NTc4QjAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTd2l0Y2hpbmdHUFVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjE0NzksNiArMjE0ODEsNyBAQAogCQkJCTI5ODFDQUFGMTMxODIyRUMwMEQxMkYyQSAvKiBBWE9i
amVjdENhY2hlLmNwcCAqLywKIAkJCQkyOUE4MTIxQTBGQkI5QzFEMDA1MTAyOTMgLyogQVhPYmpl
Y3RDYWNoZS5oICovLAogCQkJCTkxQzlGMkY4MUFFM0JFMjQwMDk1QjYxQyAvKiBBWFRleHRTdGF0
ZUNoYW5nZUludGVudC5oICovLAorCQkJCUMwRThBREM0Mjk0QjVBNjIwMDc2Q0JEQyAvKiBBWFRy
ZWVTdG9yZS5oICovLAogCQkJCUJDNEE1MzMwMjU2MDU5MDMwMDI4QzU5MiAvKiBGb3JjZWRBY2Nl
c3NpYmlsaXR5VmFsdWUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gYWNjZXNzaWJpbGl0eTsKQEAg
LTM1MDU4LDYgKzM1MDYxLDcgQEAKIAkJCQkyOUFFMjEyRDIxQUI5RUVCMDA4NjkyODMgLyogQVhJ
c29sYXRlZFRyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjM4MEZCQjlDMUQwMDUxMDI5
MyAvKiBBWE9iamVjdENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MUM5RjJGOTFBRTNCRUIw
MDA5NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUMwRThBREM1Mjk0QjVBNjMwMDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQ3N0U3NzcwQkY0MTM0QTAwMTUyODcyIC8qIEJhY2tGb3J3YXJkQ2FjaGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNzQxRDBGMEIwNzI1OUEwMEVENDQyQyAvKiBCYWNrRm9yd2FyZENs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBOEM4MUUxMUUzRDM2OTAwODEyRkI3IC8qIEJh
Y2tGb3J3YXJkQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBhOWJhYzA1NDZiZTMuLjBhNDA3
YWI0YWZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwCkBAIC0yNDQsMTEgKzI0NCwxNCBAQCBBWE9iamVjdENhY2hlOjpBWE9iamVjdENhY2hl
KERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAobG9hZGluZ1Byb2dyZXNzIDw9IDApCiAgICAg
ICAgIGxvYWRpbmdQcm9ncmVzcyA9IDE7CiAgICAgbV9sb2FkaW5nUHJvZ3Jlc3MgPSBsb2FkaW5n
UHJvZ3Jlc3M7CisKKyAgICBBWFRyZWVTdG9yZTo6YWRkKG1faWQsIHRoaXMpOwogfQogCiBBWE9i
amVjdENhY2hlOjp+QVhPYmplY3RDYWNoZSgpCiB7CiAgICAgQVhUUkFDRShtYWtlU3RyaW5nKCJB
WE9iamVjdENhY2hlOjp+QVhPYmplY3RDYWNoZSAweCJfcywgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90Pih0aGlzKSkpKTsKKwogICAgIG1fbm90aWZpY2F0aW9uUG9zdFRpbWVyLnN0b3Ao
KTsKICAgICBtX2xpdmVSZWdpb25DaGFuZ2VkUG9zdFRpbWVyLnN0b3AoKTsKICAgICBtX3BlcmZv
cm1DYWNoZVVwZGF0ZVRpbWVyLnN0b3AoKTsKQEAgLTI2MCw2ICsyNjMsOCBAQCBBWE9iamVjdENh
Y2hlOjp+QVhPYmplY3RDYWNoZSgpCiAgICAgaWYgKG1fcGFnZUlEKQogICAgICAgICBBWElzb2xh
dGVkVHJlZTo6cmVtb3ZlVHJlZUZvclBhZ2VJRCgqbV9wYWdlSUQpOwogI2VuZGlmCisKKyAgICBB
WFRyZWVTdG9yZTo6cmVtb3ZlKG1faWQpOwogfQogCiBib29sIEFYT2JqZWN0Q2FjaGU6OmlzTW9k
YWxFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CkBAIC05ODgsMTggKzk5Myw2IEBAIHZv
aWQgQVhPYmplY3RDYWNoZTo6cmVtb3ZlKFdpZGdldCogdmlldykKICAgICAgICAgcmV0dXJuOwog
ICAgIHJlbW92ZShtX3dpZGdldE9iamVjdE1hcHBpbmcudGFrZSh2aWV3KSk7CiB9Ci0gICAgCi0g
ICAgCi0jaWYgIVBMQVRGT1JNKFdJTikKLUFYSUQgQVhPYmplY3RDYWNoZTo6cGxhdGZvcm1HZW5l
cmF0ZUFYSUQoKSBjb25zdAotewotICAgIEFYSUQgb2JqSUQ7Ci0gICAgZG8gewotICAgICAgICBv
YmpJRCA9IEFYSUQ6OmdlbmVyYXRlKCk7Ci0gICAgfSB3aGlsZSAoIW9iaklELmlzVmFsaWQoKSB8
fCBtX2lkc0luVXNlLmNvbnRhaW5zKG9iaklEKSk7Ci0gICAgcmV0dXJuIG9iaklEOwotfQotI2Vu
ZGlmCiAKIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gQVhPYmplY3RDYWNoZTo6b2JqZWN0
c0ZvcklEcyhjb25zdCBWZWN0b3I8QVhJRD4mIGF4SURzKSBjb25zdAogewpAQCAtMTAxNSwyMSAr
MTAwOCwxOSBAQCBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFYT2JqZWN0Q2FjaGU6Om9i
amVjdHNGb3JJRHMoY29uc3QgVmVjdG9yPEFYSUQ+JiBheAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLUFYSUQgQVhPYmplY3RDYWNoZTo6Z2V0QVhJRChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmop
CitBWElEIEFYT2JqZWN0Q2FjaGU6OmdldEFYSUQoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0
KQogewogICAgIC8vIGNoZWNrIGZvciBhbHJlYWR5LWFzc2lnbmVkIElECi0gICAgQVhJRCBvYmpJ
RCA9IG9iai0+b2JqZWN0SUQoKTsKLSAgICBpZiAob2JqSUQpIHsKLSAgICAgICAgQVNTRVJUKG1f
aWRzSW5Vc2UuY29udGFpbnMob2JqSUQpKTsKLSAgICAgICAgcmV0dXJuIG9iaklEOworICAgIEFY
SUQgb2JqZWN0SUQgPSBvYmplY3QtPm9iamVjdElEKCk7CisgICAgaWYgKG9iamVjdElELmlzVmFs
aWQoKSkgeworICAgICAgICBBU1NFUlQobV9pZHNJblVzZS5jb250YWlucyhvYmplY3RJRCkpOwor
ICAgICAgICByZXR1cm4gb2JqZWN0SUQ7CiAgICAgfQogCi0gICAgb2JqSUQgPSBwbGF0Zm9ybUdl
bmVyYXRlQVhJRCgpOwotCi0gICAgbV9pZHNJblVzZS5hZGQob2JqSUQpOwotICAgIG9iai0+c2V0
T2JqZWN0SUQob2JqSUQpOwotICAgIAotICAgIHJldHVybiBvYmpJRDsKKyAgICBvYmplY3RJRCA9
IGdlbmVyYXRlTmV3SUQoKTsKKyAgICBtX2lkc0luVXNlLmFkZChvYmplY3RJRCk7CisgICAgb2Jq
ZWN0LT5zZXRPYmplY3RJRChvYmplY3RJRCk7CisgICAgcmV0dXJuIG9iamVjdElEOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVRleHRDaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgK
aW5kZXggNTM1ZTcxNDIyMjFmLi44NjViNWY2NDk5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRl
ICJBWElzb2xhdGVkVHJlZS5oIgogI2luY2x1ZGUgIkFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50Lmgi
CisjaW5jbHVkZSAiQVhUcmVlU3RvcmUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0
LmgiCiAjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtMTQz
LDggKzE0NCwxMCBAQCBlbnVtIEFYVGV4dENoYW5nZSB7IEFYVGV4dEluc2VydGVkLCBBWFRleHRE
ZWxldGVkLCBBWFRleHRBdHRyaWJ1dGVzQ2hhbmdlZCB9OwogCiBlbnVtIGNsYXNzIFBvc3RUYXJn
ZXQgeyBFbGVtZW50LCBPYnNlcnZhYmxlUGFyZW50IH07CiAKLWNsYXNzIEFYT2JqZWN0Q2FjaGUg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QVhPYmplY3RDYWNoZT4gewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEFYT2JqZWN0Q2FjaGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNz
IEFYT2JqZWN0Q2FjaGUgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QVhPYmplY3RDYWNoZT4KKyAg
ICAsIHB1YmxpYyBBWFRyZWVTdG9yZTxBWE9iamVjdENhY2hlPiB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQVhPYmplY3RDYWNoZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgZnJpZW5kIGNsYXNzIEFYSXNvbGF0ZWRUcmVlOwogICAgIGZyaWVuZCBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQVhPYmplY3RDYWNoZSYpOwogcHVibGlj
OgpAQCAtMjI3LDcgKzIzMCw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBFbGVtZW50KiByb290QVhF
ZGl0YWJsZUVsZW1lbnQoY29uc3QgTm9kZSopOwogICAgIGJvb2wgbm9kZUlzVGV4dENvbnRyb2wo
Y29uc3QgTm9kZSopOwogCi0gICAgQVhJRCBwbGF0Zm9ybUdlbmVyYXRlQVhJRCgpIGNvbnN0Owog
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdEZvcklEKGNvbnN0IEFYSUQmIGlkKSBjb25z
dCB7IHJldHVybiBtX29iamVjdHMuZ2V0KGlkKTsgfQogICAgIFZlY3RvcjxSZWZQdHI8QVhDb3Jl
T2JqZWN0Pj4gb2JqZWN0c0ZvcklEcyhjb25zdCBWZWN0b3I8QVhJRD4mKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTJiZWQ1OGRkNjJhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5oCkBAIC0wLDAgKzEsMTAz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eU9iamVjdEludGVyZmFjZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitjbGFzcyBBWFRyZWVTdG9yZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQVhUcmVl
U3RvcmUpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHJvdGVjdGVkOgorICAgIEFY
VHJlZVN0b3JlKCkgPSBkZWZhdWx0OworICAgIHN0YXRpYyB2b2lkIGFkZChBWElELCBXZWFrUHRy
PFQ+KTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmUoQVhJRCk7CisgICAgc3RhdGljIGJvb2wgY29u
dGFpbnMoQVhJRCk7CisKKyAgICBzdGF0aWMgUmVmUHRyPFQ+IHRyZWVGb3JJRChBWElEKTsKKwor
ICAgIHN0YXRpYyBIYXNoTWFwPEFYSUQsIFdlYWtQdHI8VD4+JiBtYXAoKSBXVEZfUkVRVUlSRVNf
TE9DSyhzX3N0b3JlTG9jayk7CisgICAgc3RhdGljIEFYSUQgZ2VuZXJhdGVOZXdJRCgpOworCisg
ICAgY29uc3QgQVhJRCBtX2lkIHsgZ2VuZXJhdGVOZXdJRCgpIH07CisgICAgc3RhdGljIExvY2sg
c19zdG9yZUxvY2s7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIHZvaWQgQVhU
cmVlU3RvcmU8VD46OmFkZChBWElEIGF4SUQsIFdlYWtQdHI8VD4gdCkKK3sKKyAgICBMb2NrZXIg
bG9ja2VyIHsgc19zdG9yZUxvY2sgfTsKKyAgICBtYXAoKS5hZGQoYXhJRCwgdCk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCBBWFRyZWVTdG9yZTxUPjo6cmVtb3ZlKEFY
SUQgYXhJRCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgc19zdG9yZUxvY2sgfTsKKyAgICBtYXAo
KS5yZW1vdmUoYXhJRCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgYm9vbCBB
WFRyZWVTdG9yZTxUPjo6Y29udGFpbnMoQVhJRCBheElEKQoreworICAgIExvY2tlciBsb2NrZXIg
eyBzX3N0b3JlTG9jayB9OworICAgIHJldHVybiBtYXAoKS5jb250YWlucyhheElEKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBSZWZQdHI8VD4gQVhUcmVlU3RvcmU8VD46OnRy
ZWVGb3JJRChBWElEIGF4SUQpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IHNfc3RvcmVMb2NrIH07
CisgICAgcmV0dXJuIG1hcCgpLmdldChheElEKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K2lubGluZSBIYXNoTWFwPEFYSUQsIFdlYWtQdHI8VD4+JiBBWFRyZWVTdG9yZTxUPjo6bWFwKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxBWElELCBXZWFrUHRyPFQ+Pj4g
bWFwOworICAgIHJldHVybiBtYXA7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUg
QVhJRCBBWFRyZWVTdG9yZTxUPjo6Z2VuZXJhdGVOZXdJRCgpCit7CisgICAgQVhJRCBheElEOwor
ICAgIExvY2tlciBsb2NrZXIgeyBzX3N0b3JlTG9jayB9OworICAgIGRvIHsKKyAgICAgICAgYXhJ
RCA9IEFYSUQ6OmdlbmVyYXRlKCk7CisgICAgfSB3aGlsZSAoIWF4SUQuaXNWYWxpZCgpIHx8IG1h
cCgpLmNvbnRhaW5zKGF4SUQpKTsKKyAgICByZXR1cm4gYXhJRDsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4KK0xvY2sgQVhUcmVlU3RvcmU8VD46OnNfc3RvcmVMb2NrOworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXggZGYyZTJiNjc2NTU2Li5j
NWYzMmUxYmMyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTM3LDI5ICszNywxNCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUxvY2sgQVhJc29sYXRlZFRyZWU6OnNfY2FjaGVM
b2NrOwotCi1zdGF0aWMgdW5zaWduZWQgbmV3VHJlZUlEKCkKLXsKLSAgICBzdGF0aWMgdW5zaWdu
ZWQgc19jdXJyZW50VHJlZUlEID0gMDsKLSAgICByZXR1cm4gKytzX2N1cnJlbnRUcmVlSUQ7Ci19
Ci0KIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiBBWElzb2xh
dGVkVHJlZTo6dHJlZVBhZ2VDYWNoZSgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhh
c2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZjxBWElzb2xhdGVkVHJlZT4+PiBtYXA7CiAgICAgcmV0
dXJuIG1hcDsKIH0KIAotSGFzaE1hcDxBWElzb2xhdGVkVHJlZUlELCBSZWY8QVhJc29sYXRlZFRy
ZWU+PiYgQVhJc29sYXRlZFRyZWU6OnRyZWVJRENhY2hlKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDxBWElzb2xhdGVkVHJlZUlELCBSZWY8QVhJc29sYXRlZFRyZWU+Pj4g
bWFwOwotICAgIHJldHVybiBtYXA7Ci19Ci0KIEFYSXNvbGF0ZWRUcmVlOjpBWElzb2xhdGVkVHJl
ZShBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKQotICAgIDogbV90cmVlSUQobmV3VHJlZUlE
KCkpCi0gICAgLCBtX2F4T2JqZWN0Q2FjaGUoYXhPYmplY3RDYWNoZSkKKyAgICA6IG1fYXhPYmpl
Y3RDYWNoZShheE9iamVjdENhY2hlKQogICAgICwgbV91c2VkT25BWFRocmVhZChheE9iamVjdENh
Y2hlLT51c2VkT25BWFRocmVhZCgpKQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpB
WElzb2xhdGVkVHJlZSJfcyk7CkBAIC04MCwxMyArNjUsNiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVl
OjpxdWV1ZUZvckRlc3RydWN0aW9uKCkKICAgICBtX3F1ZXVlZEZvckRlc3RydWN0aW9uID0gdHJ1
ZTsKIH0KIAotUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvcklE
KEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlEKQotewotICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVl
Ojp0cmVlRm9ySUQiX3MpOwotICAgIExvY2tlciBsb2NrZXIgeyBzX2NhY2hlTG9jayB9OwotICAg
IHJldHVybiB0cmVlSURDYWNoZSgpLmdldCh0cmVlSUQpOwotfQotCiBSZWY8QVhJc29sYXRlZFRy
ZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGUoQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSkK
IHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6Y3JlYXRlIl9zKTsKQEAgLTExMywxMSAr
OTEsMTEgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKEFYT2Jq
ZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUpCiAKICAgICAvLyBOb3cgdGhhdCB0aGUgdHJlZSBpcyBy
ZWFkeSB0byB0YWtlIGNsaWVudCByZXF1ZXN0cywgYWRkIGl0IHRvIHRoZSB0cmVlCiAgICAgLy8g
bWFwcyBzbyB0aGF0IGl0IGNhbiBiZSBmb3VuZC4KKyAgICBBWFRyZWVTdG9yZTo6YWRkKHRyZWUt
PnRyZWVJRCgpLCB0cmVlLmNvcHlSZWYoKSk7CiAgICAgYXV0byBwYWdlSUQgPSBheE9iamVjdENh
Y2hlLT5wYWdlSUQoKTsKLSAgICBMb2NrZXIgbG9ja2VyIHsgc19jYWNoZUxvY2sgfTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgc19zdG9yZUxvY2sgfTsKICAgICBBU1NFUlQoIXRyZWVQYWdlQ2FjaGUo
KS5jb250YWlucygqcGFnZUlEKSk7CiAgICAgdHJlZVBhZ2VDYWNoZSgpLnNldCgqcGFnZUlELCB0
cmVlLmNvcHlSZWYoKSk7Ci0gICAgdHJlZUlEQ2FjaGUoKS5zZXQodHJlZS0+dHJlZUlEKCksIHRy
ZWUuY29weVJlZigpKTsKICAgICB0cmVlLT51cGRhdGVMb2FkaW5nUHJvZ3Jlc3MoYXhPYmplY3RD
YWNoZS0+bG9hZGluZ1Byb2dyZXNzKCkpOwogCiAgICAgcmV0dXJuIHRyZWU7CkBAIC0xMjgsMTgg
KzEwNiwxNiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVUcmVlRm9yUGFnZUlEKFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6cmVtb3ZlVHJl
ZUZvclBhZ2VJRCJfcyk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIExvY2tl
ciBsb2NrZXIgeyBzX2NhY2hlTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBzX3N0b3JlTG9j
ayB9OwogICAgIGlmIChhdXRvIHRyZWUgPSB0cmVlUGFnZUNhY2hlKCkudGFrZShwYWdlSUQpKQog
ICAgICAgICB0cmVlLT5xdWV1ZUZvckRlc3RydWN0aW9uKCk7CiB9CiAKIFJlZlB0cjxBWElzb2xh
dGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQogewotICAgIExvY2tlciBsb2NrZXIgeyBzX2NhY2hlTG9jayB9OwotCisgICAgTG9ja2Vy
IGxvY2tlciB7IHNfc3RvcmVMb2NrIH07CiAgICAgaWYgKGF1dG8gdHJlZSA9IHRyZWVQYWdlQ2Fj
aGUoKS5nZXQocGFnZUlEKSkKLSAgICAgICAgcmV0dXJuIFJlZlB0ciB7IHRyZWUgfTsKLQorICAg
ICAgICByZXR1cm4gdHJlZTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNjk3LDcgKzY3
Myw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnNldEZvY3VzZWROb2RlSUQoQVhJRCBheElEKQog
dm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlTG9hZGluZ1Byb2dyZXNzKGRvdWJsZSBuZXdQcm9n
cmVzc1ZhbHVlKQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVMb2FkaW5n
UHJvZ3Jlc3MiX3MpOwotICAgIEFYTE9HKG1ha2VTdHJpbmcoIlVwZGF0aW5nIGxvYWRpbmcgcHJv
Z3Jlc3MgdG8gIiwgbmV3UHJvZ3Jlc3NWYWx1ZSwgIiBmb3IgdHJlZUlEICIsIHRyZWVJRCgpKSk7
CisgICAgQVhMT0cobWFrZVN0cmluZygiVXBkYXRpbmcgbG9hZGluZyBwcm9ncmVzcyB0byAiLCBu
ZXdQcm9ncmVzc1ZhbHVlLCAiIGZvciB0cmVlSUQgIiwgdHJlZUlEKCkubG9nZ2luZ1N0cmluZygp
KSk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIG1fbG9hZGluZ1Byb2dyZXNz
ID0gbmV3UHJvZ3Jlc3NWYWx1ZTsKQEAgLTgwMSwxOCArNzc3LDE4IEBAIHZvaWQgQVhJc29sYXRl
ZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMoKQogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRv
IGJvdGhlciBjbGVhcmluZyBvdXQgYW55IG90aGVyIG5vbi1jeWNsZS1jYXVzaW5nIG1lbWJlciB2
YXJpYWJsZXMgYXMgdGhleQogICAgICAgICAvLyB3aWxsIGJlIGNsZWFuZWQgdXAgYXV0b21hdGlj
YWxseSB3aGVuIHRoZSB0cmVlIGlzIGRlc3Ryb3llZC4KIAotICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgc19jYWNoZUxvY2sgfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHNfc3RvcmVMb2NrIH07
CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBBU1NFUlQodHJlZUlEQ2FjaGUoKS5jb250YWlucyh0
cmVlSUQoKSkpOwotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gdHJlZUlEQ2FjaGUoKS5maW5kKHRy
ZWVJRCgpKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yICE9IHRyZWVJRENhY2hlKCkuZW5kKCkpIHsK
LSAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHRoZXJlIHNob3VsZCBvbmx5IGJlIHR3byBy
ZWZlcmVuY2VzIGxlZnQgdG8gdGhpcyB0cmVlIC0tIG9uZSBpbiB0aGUgdHJlZUlEQ2FjaGUoKSBt
YXAsCisgICAgICAgIEFTU0VSVChBWFRyZWVTdG9yZTo6Y29udGFpbnModHJlZUlEKCkpKTsKKyAg
ICAgICAgYXV0byBpdGVyYXRvciA9IEFYVHJlZVN0b3JlOjptYXAoKS5maW5kKHRyZWVJRCgpKTsK
KyAgICAgICAgaWYgKGl0ZXJhdG9yICE9IEFYVHJlZVN0b3JlOjptYXAoKS5lbmQoKSkgeworICAg
ICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgdGhlcmUgc2hvdWxkIG9ubHkgYmUgdHdvIHJlZmVy
ZW5jZXMgbGVmdCB0byB0aGlzIHRyZWUgLS0gb25lIGluIHRoZSBtYXAsCiAgICAgICAgICAgICAv
LyBhbmQgdGhlIGBwcm90ZWN0ZWRUaGlzYCBhYm92ZS4KICAgICAgICAgICAgIEFTU0VSVChpdGVy
YXRvci0+dmFsdWUtPnJlZkNvdW50KCkgPT0gMiwgIlVuZXhwZWN0ZWQgcmVmY291bnQgYmVmb3Jl
IGF0dGVtcHRpbmcgdG8gZGVzdHJveSBpc29sYXRlZCB0cmVlOiAlZCIsIGl0ZXJhdG9yLT52YWx1
ZS0+cmVmQ291bnQoKSk7CiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIHRyZWVJRENhY2hl
KCkucmVtb3ZlKHRyZWVJRCgpKTsKKyAgICAgICAgQVhUcmVlU3RvcmU6OnJlbW92ZSh0cmVlSUQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGU2
MDk4NDIyNjQ1MS4uZDM1ZTkzZjVjZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAKKyNp
bmNsdWRlICJBWFRyZWVTdG9yZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UuaCIKICNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9TZXNz
aW9uSUQuaD4KQEAgLTQ3LDggKzQ4LDYgQEAgY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNs
YXNzIFBhZ2U7CiBlbnVtIGNsYXNzIEFYU3RyZWFtT3B0aW9ucyA6IHVpbnQ4X3Q7CiAKLXVzaW5n
IEFYSXNvbGF0ZWRUcmVlSUQgPSB1bnNpZ25lZDsKLQogZW51bSBjbGFzcyBBWFByb3BlcnR5TmFt
ZSA6IHVpbnQxNl90IHsKICAgICBBUklBSXNNdWx0aWxpbmUsCiAgICAgQVJJQUxhbmRtYXJrUm9s
ZURlc2NyaXB0aW9uLApAQCAtMjc0LDggKzI3MywxMSBAQCBzdHJ1Y3QgQVhQcm9wZXJ0eUNoYW5n
ZSB7CiAgICAgQVhQcm9wZXJ0eU1hcCBwcm9wZXJ0aWVzOyAvLyBDaGFuZ2VkIHByb3BlcnRpZXMu
CiB9OwogCi1jbGFzcyBBWElzb2xhdGVkVHJlZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxBWElzb2xhdGVkVHJlZT4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFYSXNvbGF0ZWRU
cmVlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitjbGFzcyBBWElzb2xhdGVkVHJlZSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBWElzb2xhdGVkVHJlZT4KKyAgICAsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxBWElzb2xhdGVkVHJlZT4KKyAgICAsIHB1YmxpYyBBWFRyZWVTdG9yZTxB
WElzb2xhdGVkVHJlZT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFYSXNvbGF0ZWRUcmVl
KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEFYSXNvbGF0ZWRUcmVlJik7CiAgICAg
ZnJpZW5kIHZvaWQgc3RyZWFtSXNvbGF0ZWRTdWJ0cmVlT25NYWluVGhyZWFkKFRleHRTdHJlYW0m
LCBjb25zdCBBWElzb2xhdGVkVHJlZSYsIEFYSUQsIGNvbnN0IE9wdGlvblNldDxBWFN0cmVhbU9w
dGlvbnM+Jik7CiBwdWJsaWM6CkBAIC0yODYsMTEgKzI4OCwxMSBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKHN0ZDo6b3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+KTsKICAgICBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVl
Rm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRU
cmVlPiB0cmVlRm9ySUQoQVhJc29sYXRlZFRyZWVJRCk7CiAgICAgQVhPYmplY3RDYWNoZSogYXhP
YmplY3RDYWNoZSgpIGNvbnN0OwogCiAgICAgUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IHJvb3RO
b2RlKCk7CiAgICAgUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IGZvY3VzZWROb2RlKCk7CisKICAg
ICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gbm9kZUZvcklEKGNvbnN0IEFYSUQmKSBjb25zdDsK
ICAgICBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IG9iamVjdHNGb3JJRHMoY29uc3QgVmVj
dG9yPEFYSUQ+Jik7CiAKQEAgLTMzNSw3ICszMzcsNyBAQCBwdWJsaWM6CiAgICAgLy8gRHVyaW5n
IGxheW91dCB0ZXN0cywgaXQgaXMgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICB2b2lk
IGFwcGx5UGVuZGluZ0NoYW5nZXMoKTsKIAotICAgIEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlEKCkg
Y29uc3QgeyByZXR1cm4gbV90cmVlSUQ7IH0KKyAgICBBWElEIHRyZWVJRCgpIGNvbnN0IHsgcmV0
dXJuIG1faWQ7IH0KIAogcHJpdmF0ZToKICAgICBBWElzb2xhdGVkVHJlZShBWE9iamVjdENhY2hl
Kik7CkBAIC0zNDUsOSArMzQ3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBiZWNhdXNlIGl0IGNvdWxk
IGJlIGJlaW5nIHVzZWQgYnkgdGhlIHNlY29uZGFyeSB0aHJlYWQgdG8gc2VydmljZSBhbiBBWCBy
ZXF1ZXN0LgogICAgIHZvaWQgcXVldWVGb3JEZXN0cnVjdGlvbigpOwogCi0gICAgc3RhdGljIExv
Y2sgc19jYWNoZUxvY2s7Ci0gICAgc3RhdGljIEhhc2hNYXA8QVhJc29sYXRlZFRyZWVJRCwgUmVm
PEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVJRENhY2hlKCkgV1RGX1JFUVVJUkVTX0xPQ0soc19jYWNo
ZUxvY2spOwotICAgIHN0YXRpYyBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJc29sYXRl
ZFRyZWU+PiYgdHJlZVBhZ2VDYWNoZSgpIFdURl9SRVFVSVJFU19MT0NLKHNfY2FjaGVMb2NrKTsK
KyAgICBzdGF0aWMgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4m
IHRyZWVQYWdlQ2FjaGUoKSBXVEZfUkVRVUlSRVNfTE9DSyhzX3N0b3JlTG9jayk7CiAKICAgICBl
bnVtIGNsYXNzIEF0dGFjaFdyYXBwZXIgOiBib29sIHsgT25NYWluVGhyZWFkLCBPbkFYVGhyZWFk
IH07CiAgICAgc3RkOjpvcHRpb25hbDxOb2RlQ2hhbmdlPiBub2RlQ2hhbmdlRm9yT2JqZWN0KFJl
ZjxBWENvcmVPYmplY3Q+LCBBdHRhY2hXcmFwcGVyID0gQXR0YWNoV3JhcHBlcjo6T25NYWluVGhy
ZWFkKTsKQEAgLTM1OCw3ICszNTgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcXVldWVSZW1vdmFs
c0xvY2tlZChWZWN0b3I8QVhJRD4mJikgV1RGX1JFUVVJUkVTX0xPQ0sobV9jaGFuZ2VMb2dMb2Nr
KTsKICAgICB2b2lkIHF1ZXVlUmVtb3ZhbHNBbmRVbnJlc29sdmVkQ2hhbmdlcyhWZWN0b3I8QVhJ
RD4mJik7CiAKLSAgICBBWElzb2xhdGVkVHJlZUlEIG1fdHJlZUlEOwogICAgIHVuc2lnbmVkIG1f
bWF4VHJlZURlcHRoIHsgMCB9OwogICAgIEFYT2JqZWN0Q2FjaGUqIG1fYXhPYmplY3RDYWNoZSB7
IG51bGxwdHIgfTsKICAgICBib29sIG1fdXNlZE9uQVhUaHJlYWQgeyB0cnVlIH07CkBAIC00MTMs
OSArNDEyLDcgQEAgaW5saW5lIEFYT2JqZWN0Q2FjaGUqIEFYSXNvbGF0ZWRUcmVlOjpheE9iamVj
dENhY2hlKCkgY29uc3QKIAogaW5saW5lIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRl
ZFRyZWU6OnRyZWVGb3JQYWdlSUQoc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
KQogewotICAgIGlmIChwYWdlSUQpCi0gICAgICAgIHJldHVybiB0cmVlRm9yUGFnZUlEKCpwYWdl
SUQpOwotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBwYWdlSUQgPyB0cmVlRm9yUGFn
ZUlEKCpwYWdlSUQpIDogbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS93aW4vQVhPYmplY3RDYWNoZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3dpbi9BWE9iamVjdENhY2hlV2lu
LmNwcAppbmRleCA0NjNlNjkxNWU4YzYuLmVkYmY3YmNkNjM4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS93aW4vQVhPYmplY3RDYWNoZVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS93aW4vQVhPYmplY3RDYWNoZVdpbi5jcHAKQEAgLTE0
NiwyNSArMTQ2LDYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpmcmFtZUxvYWRpbmdFdmVudFBsYXRm
b3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG8KICAgICAgICAgcGFnZS0+Y2hy
b21lKCkuY2xpZW50KCkuQVhGaW5pc2hGcmFtZUxvYWQoKTsKIH0KIAotQVhJRCBBWE9iamVjdENh
Y2hlOjpwbGF0Zm9ybUdlbmVyYXRlQVhJRCgpIGNvbnN0Ci17Ci0gICAgc3RhdGljIExPTkcgbGFz
dFVzZWRJRCA9IDA7Ci0KLSAgICAvLyBHZW5lcmF0ZSBhIG5ldyBJRC4gV2luZG93cyBhY2Nlc3Np
YmlsaXR5IHJlbGllcyBvbiBhIHBvc2l0aXZlIEFYSUQsCi0gICAgLy8gcmFuZ2luZyBmcm9tIDEg
dG8gTE9OR19NQVguCi0gICAgTE9ORyBjdXJyZW50SUQgPSBsYXN0VXNlZElEOwotICAgIEFYSUQg
b2JqSUQ7Ci0gICAgZG8gewotICAgICAgICBvYmpJRCA9IG1ha2VPYmplY3RJZGVudGlmaWVyPEFY
SURUeXBlPigrK2N1cnJlbnRJRCk7Ci0gICAgfSB3aGlsZSAoIW9iaklELmlzVmFsaWQoKSB8fCBt
X2lkc0luVXNlLmNvbnRhaW5zKG9iaklEKSk7Ci0KLSAgICBBU1NFUlQob2JqSUQuaXNWYWxpZCgp
ICYmIG9iaklELnRvVUludDY0KCkgPD0gc3RkOjpudW1lcmljX2xpbWl0czxMT05HPjo6bWF4KCkp
OwotCi0gICAgbGFzdFVzZWRJRCA9IGN1cnJlbnRJRDsKLQotICAgIHJldHVybiBvYmpJRDsKLX0K
LQogdm9pZCBBWE9iamVjdENhY2hlOjpwbGF0Zm9ybUhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFu
Z2VkKE5vZGUqLCBOb2RlKiBuZXdGb2N1c2VkTm9kZSkKIHsKICAgICBpZiAoIW5ld0ZvY3VzZWRO
b2RlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464337</attachid>
            <date>2023-01-04 14:12:25 -0800</date>
            <delta_ts>2023-01-05 07:03:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-249480-20230104171223.patch</filename>
            <type>text/plain</type>
            <size>22043</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSBmYzYzNTRmMTA5Njg1NmRjZDc2YTRiZmRkNDQ5MzIzYWYyOWRkODZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBGcmksIDE2IERlYyAyMDIyIDA4OjU3OjA3IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IEFkZCBBWElEIGlkZW50aWZpY2F0aW9uIHRvIGJvdGggQVhPYmplY3RDYWNoZSBhbmQKIEFY
SXNvbGF0ZWRUcmVlIHNvIHRoYXQgaW5zdGFuY2VzIG9mIHRoZXNlIGNsYXNzZXMgY2FuIGJlIHJl
dHJpZXZlZCBieSBJRC4KIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NDk0ODAgPHJkYXI6Ly9wcm9ibGVtLzEwMzQ0OTI5ND4KClJldmlld2VkIGJ5IENocmlzIEZsZWl6
YWNoLgoKQWRkZWQgYSBiYXNlIHRlbXBsYXRlIGNsYXNzIG5hbWVkIEFYVHJlZVN0b3JlIGZvciBi
b3RoIEFYT2JqZWN0Q2FjaGUgYW5kIEFYSXNvbGF0ZWRUcmVlIHRoYXQgaW1wbGVtZW50cyBhIG1h
cC1iYXNlZCBzdG9yYWdlIGZvciBpbnN0YW5jZXMuIFRoZSBrZXlzIGluIHRoZSBtYXAgYXJlIHRo
ZSBvYmplY3RzIElEcyB3aGljaCBhcmUgYXNzaWduZWQgb24gY29uc3RydWN0aW9uLiBUaGlzIGlz
IG5lY2Vzc2FyeSB0byByZXRyaWV2ZSBhbiBpbnN0YW5jZSBiYXNlZCBvbiBpdHMgSUQuIFJldHJp
ZXZpbmcgYW4gQVhPYmplY3RDYWNoZSBvciBBWElzb2xhdGVkVHJlZSBpbnN0YW5jZSBpcyBuZWVk
ZWQgZm9yIHRoZSBUZXh0TWFya2VyIHJlZmFjdG9yaW5nIGluIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA1NTguCi0tLQogU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZSAgICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiB8ICAgNCArCiAuLi4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwICAgfCAgMzcgKysrLS0tLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmggIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYVHJlZVN0b3JlLmggICAgfCAxMDMgKysrKysrKysrKysrKysrKysrCiAuLi4vaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCAgICAgICAgICAgfCAgNTEgKysrLS0tLS0tCiAuLi4v
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggICAgICAgICAgICAgfCAgMjMgKystLQogLi4u
L2FjY2Vzc2liaWxpdHkvd2luL0FYT2JqZWN0Q2FjaGVXaW4uY3BwICAgIHwgIDE5IC0tLS0KIDgg
ZmlsZXMgY2hhbmdlZCwgMTUwIGluc2VydGlvbnMoKyksIDk2IGRlbGV0aW9ucygtKQogY3JlYXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUcmVlU3RvcmUuaAoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCmluZGV4IDgzOWI5MzcwZjNiYS4uZWY0NTI3YTg5MzU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKQEAgLTQ0Niw2ICs0NDYsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAKICAgICBhY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmgKICAgICBhY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorICAgIGFjY2Vzc2liaWxpdHkvQVhUcmVlU3RvcmUuaAog
ICAgIGFjY2Vzc2liaWxpdHkvQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaAogICAgIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lbnVMaXN0UG9wdXAuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEyZDYxZmM5Y2Q1NS4uYzNjZDJkMDMyMTRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC00NTQwLDYgKzQ1NDAsNyBAQAogCQlDMEMwNTRDQzExMThDOEU0MDBDRTI2MzYgLyogZ2VuZXJh
dGUtYmluZGluZ3MucGwgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyogZ2VuZXJhdGUtYmluZGluZ3MucGwgKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzBDMDU0Q0Qx
MTE4QzhFNDAwQ0UyNjM2IC8qIElETFBhcnNlci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODEzQkYzMDlFREY4OEUwMEY3NTdFMSAvKiBJRExQYXJz
ZXIucG0gKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QzBFMkYzMjcyNDEyQkYyOTAwOUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBFMkYzMjUyNDEyQkYy
OTAwOUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFdlYWssICk7IH07IH07CisJCUMwRThBREM1Mjk0QjVBNjMwMDc2Q0JEQyAvKiBBWFRy
ZWVTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzBFOEFEQzQyOTRCNUE2MjAwNzZDQkRDIC8qIEFYVHJlZVN0b3JlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzBGMkE0NDExMzg2OUFBQjAwNjZD
NTM0IC8qIHByZXByb2Nlc3Nvci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMwRjJBNDNGMTM4NjlBMjgwMDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0g
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzExQTlF
Q0UyMTQwM0E1QzAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzExQTlFQ0QyMTQwM0E1QzAwQ0ZCMjBB
IC8qIFN3aXRjaGluZ0dQVUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUMxNDkzODA3MjIzNDU1MUEwMDBDRDcwNyAvKiBTcGVlY2hTeW50
aGVzaXNDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMxNDkzODA1MjIzNDI3MTkwMDBDRDcwNyAvKiBTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTY0MzYs
NiArMTY0MzcsNyBAQAogCQlDMDc4Mzc2MDIzREYyNTNFMDBDOUM1QzggLyogQVhJc29sYXRlZE9i
amVjdE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFYSXNvbGF0ZWRPYmplY3RNYWMubW07
IHBhdGggPSBtYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzA4RjEzQTEyNDQ3NjZEQzAwQUI5ODlGIC8qIEFYTG9nZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFYTG9nZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzBFMkYzMjUyNDEyQkYyOTAwOUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUudGV4
dC1iYXNlZC1keWxpYi1kZWZpbml0aW9uIjsgbmFtZSA9IGxpYkFjY2Vzc2liaWxpdHkudGJkOyBw
YXRoID0gdXNyL2xpYi9saWJBY2Nlc3NpYmlsaXR5LnRiZDsgc291cmNlVHJlZSA9IFNES1JPT1Q7
IH07CisJCUMwRThBREM0Mjk0QjVBNjIwMDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBWFRyZWVTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBt
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucGVybDsgbmFtZSA9IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMvcHJlcHJv
Y2Vzc29yLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTFBOUVDRDIxNDAzQTVD
MDBDRkIyMEEgLyogU3dpdGNoaW5nR1BVQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN3aXRjaGlu
Z0dQVUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTFBOUVEMjIxNDA1
NzhCMDBDRkIyMEEgLyogU3dpdGNoaW5nR1BVQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN3aXRjaGluZ0dQVUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MTQ3OSw2ICsyMTQ4MSw3IEBACiAJCQkJMjk4MUNBQUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFYT2Jq
ZWN0Q2FjaGUuY3BwICovLAogCQkJCTI5QTgxMjFBMEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVj
dENhY2hlLmggKi8sCiAJCQkJOTFDOUYyRjgxQUUzQkUyNDAwOTVCNjFDIC8qIEFYVGV4dFN0YXRl
Q2hhbmdlSW50ZW50LmggKi8sCisJCQkJQzBFOEFEQzQyOTRCNUE2MjAwNzZDQkRDIC8qIEFYVHJl
ZVN0b3JlLmggKi8sCiAJCQkJQkM0QTUzMzAyNTYwNTkwMzAwMjhDNTkyIC8qIEZvcmNlZEFjY2Vz
c2liaWxpdHlWYWx1ZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBhY2Nlc3NpYmlsaXR5OwpAQCAt
MzUwNTgsNiArMzUwNjEsNyBAQAogCQkJCTI5QUUyMTJEMjFBQjlFRUIwMDg2OTI4MyAvKiBBWElz
b2xhdGVkVHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzgwRkJCOUMxRDAwNTEwMjkz
IC8qIEFYT2JqZWN0Q2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQzlGMkY5MUFFM0JFQjAw
MDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QzBFOEFEQzUyOTRCNUE2MzAwNzZDQkRDIC8qIEFYVHJlZVN0b3JlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDc3RTc3NzBCRjQxMzRBMDAxNTI4NzIgLyogQmFja0ZvcndhcmRDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTE3NDFEMEYwQjA3MjU5QTAwRUQ0NDJDIC8qIEJhY2tGb3J3YXJkQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0E4QzgxRTExRTNEMzY5MDA4MTJGQjcgLyogQmFj
a0ZvcndhcmRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGE5YmFjMDU0NmJlMy4uMGE0MDdh
YjRhZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAKQEAgLTI0NCwxMSArMjQ0LDE0IEBAIEFYT2JqZWN0Q2FjaGU6OkFYT2JqZWN0Q2FjaGUo
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIGlmIChsb2FkaW5nUHJvZ3Jlc3MgPD0gMCkKICAgICAg
ICAgbG9hZGluZ1Byb2dyZXNzID0gMTsKICAgICBtX2xvYWRpbmdQcm9ncmVzcyA9IGxvYWRpbmdQ
cm9ncmVzczsKKworICAgIEFYVHJlZVN0b3JlOjphZGQobV9pZCwgdGhpcyk7CiB9CiAKIEFYT2Jq
ZWN0Q2FjaGU6On5BWE9iamVjdENhY2hlKCkKIHsKICAgICBBWFRSQUNFKG1ha2VTdHJpbmcoIkFY
T2JqZWN0Q2FjaGU6On5BWE9iamVjdENhY2hlIDB4Il9zLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KHRoaXMpKSkpOworCiAgICAgbV9ub3RpZmljYXRpb25Qb3N0VGltZXIuc3RvcCgp
OwogICAgIG1fbGl2ZVJlZ2lvbkNoYW5nZWRQb3N0VGltZXIuc3RvcCgpOwogICAgIG1fcGVyZm9y
bUNhY2hlVXBkYXRlVGltZXIuc3RvcCgpOwpAQCAtMjYwLDYgKzI2Myw4IEBAIEFYT2JqZWN0Q2Fj
aGU6On5BWE9iamVjdENhY2hlKCkKICAgICBpZiAobV9wYWdlSUQpCiAgICAgICAgIEFYSXNvbGF0
ZWRUcmVlOjpyZW1vdmVUcmVlRm9yUGFnZUlEKCptX3BhZ2VJRCk7CiAjZW5kaWYKKworICAgIEFY
VHJlZVN0b3JlOjpyZW1vdmUobV9pZCk7CiB9CiAKIGJvb2wgQVhPYmplY3RDYWNoZTo6aXNNb2Rh
bEVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkgY29uc3QKQEAgLTk4OCwxOCArOTkzLDYgQEAgdm9p
ZCBBWE9iamVjdENhY2hlOjpyZW1vdmUoV2lkZ2V0KiB2aWV3KQogICAgICAgICByZXR1cm47CiAg
ICAgcmVtb3ZlKG1fd2lkZ2V0T2JqZWN0TWFwcGluZy50YWtlKHZpZXcpKTsKIH0KLSAgICAKLSAg
ICAKLSNpZiAhUExBVEZPUk0oV0lOKQotQVhJRCBBWE9iamVjdENhY2hlOjpwbGF0Zm9ybUdlbmVy
YXRlQVhJRCgpIGNvbnN0Ci17Ci0gICAgQVhJRCBvYmpJRDsKLSAgICBkbyB7Ci0gICAgICAgIG9i
aklEID0gQVhJRDo6Z2VuZXJhdGUoKTsKLSAgICB9IHdoaWxlICghb2JqSUQuaXNWYWxpZCgpIHx8
IG1faWRzSW5Vc2UuY29udGFpbnMob2JqSUQpKTsKLSAgICByZXR1cm4gb2JqSUQ7Ci19Ci0jZW5k
aWYKIAogVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBBWE9iamVjdENhY2hlOjpvYmplY3Rz
Rm9ySURzKGNvbnN0IFZlY3RvcjxBWElEPiYgYXhJRHMpIGNvbnN0CiB7CkBAIC0xMDE1LDIxICsx
MDA4LDE5IEBAIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gQVhPYmplY3RDYWNoZTo6b2Jq
ZWN0c0ZvcklEcyhjb25zdCBWZWN0b3I8QVhJRD4mIGF4CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotQVhJRCBBWE9iamVjdENhY2hlOjpnZXRBWElEKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikK
K0FYSUQgQVhPYmplY3RDYWNoZTo6Z2V0QVhJRChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3Qp
CiB7CiAgICAgLy8gY2hlY2sgZm9yIGFscmVhZHktYXNzaWduZWQgSUQKLSAgICBBWElEIG9iaklE
ID0gb2JqLT5vYmplY3RJRCgpOwotICAgIGlmIChvYmpJRCkgewotICAgICAgICBBU1NFUlQobV9p
ZHNJblVzZS5jb250YWlucyhvYmpJRCkpOwotICAgICAgICByZXR1cm4gb2JqSUQ7CisgICAgQVhJ
RCBvYmplY3RJRCA9IG9iamVjdC0+b2JqZWN0SUQoKTsKKyAgICBpZiAob2JqZWN0SUQuaXNWYWxp
ZCgpKSB7CisgICAgICAgIEFTU0VSVChtX2lkc0luVXNlLmNvbnRhaW5zKG9iamVjdElEKSk7Cisg
ICAgICAgIHJldHVybiBvYmplY3RJRDsKICAgICB9CiAKLSAgICBvYmpJRCA9IHBsYXRmb3JtR2Vu
ZXJhdGVBWElEKCk7Ci0KLSAgICBtX2lkc0luVXNlLmFkZChvYmpJRCk7Ci0gICAgb2JqLT5zZXRP
YmplY3RJRChvYmpJRCk7Ci0gICAgCi0gICAgcmV0dXJuIG9iaklEOworICAgIG9iamVjdElEID0g
Z2VuZXJhdGVOZXdJRCgpOworICAgIG1faWRzSW5Vc2UuYWRkKG9iamVjdElEKTsKKyAgICBvYmpl
Y3QtPnNldE9iamVjdElEKG9iamVjdElEKTsKKyAgICByZXR1cm4gb2JqZWN0SUQ7CiB9CiAKIHZv
aWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlVGV4dENoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApp
bmRleCA1MzVlNzE0MjIyMWYuLjg2NWI1ZjY0OTk1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUg
IkFYSXNvbGF0ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCIK
KyNpbmNsdWRlICJBWFRyZWVTdG9yZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3Qu
aCIKICNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC0xNDMs
OCArMTQ0LDEwIEBAIGVudW0gQVhUZXh0Q2hhbmdlIHsgQVhUZXh0SW5zZXJ0ZWQsIEFYVGV4dERl
bGV0ZWQsIEFYVGV4dEF0dHJpYnV0ZXNDaGFuZ2VkIH07CiAKIGVudW0gY2xhc3MgUG9zdFRhcmdl
dCB7IEVsZW1lbnQsIE9ic2VydmFibGVQYXJlbnQgfTsKIAotY2xhc3MgQVhPYmplY3RDYWNoZSA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBWE9iamVjdENhY2hlPiB7Ci0gICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQVhPYmplY3RDYWNoZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworY2xhc3Mg
QVhPYmplY3RDYWNoZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBWE9iamVjdENhY2hlPgorICAg
ICwgcHVibGljIEFYVHJlZVN0b3JlPEFYT2JqZWN0Q2FjaGU+IHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShBWE9iamVjdENhY2hlKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBmcmllbmQgY2xhc3MgQVhJc29sYXRlZFRyZWU7CiAgICAgZnJpZW5kIFdURjo6VGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBBWE9iamVjdENhY2hlJik7CiBwdWJsaWM6
CkBAIC0yMjcsNyArMjMwLDYgQEAgcHVibGljOgogICAgIGNvbnN0IEVsZW1lbnQqIHJvb3RBWEVk
aXRhYmxlRWxlbWVudChjb25zdCBOb2RlKik7CiAgICAgYm9vbCBub2RlSXNUZXh0Q29udHJvbChj
b25zdCBOb2RlKik7CiAKLSAgICBBWElEIHBsYXRmb3JtR2VuZXJhdGVBWElEKCkgY29uc3Q7CiAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0Rm9ySUQoY29uc3QgQVhJRCYgaWQpIGNvbnN0
IHsgcmV0dXJuIG1fb2JqZWN0cy5nZXQoaWQpOyB9CiAgICAgVmVjdG9yPFJlZlB0cjxBWENvcmVP
YmplY3Q+PiBvYmplY3RzRm9ySURzKGNvbnN0IFZlY3RvcjxBWElEPiYpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVHJlZVN0b3JlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVHJlZVN0b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zMjFkZWVmYjIyYTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVHJlZVN0b3JlLmgKQEAgLTAsMCArMSwxMDMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK2NsYXNzIEFYVHJlZVN0b3JlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBWFRyZWVT
dG9yZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citwcm90ZWN0ZWQ6CisgICAgQVhU
cmVlU3RvcmUoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljIHZvaWQgYWRkKEFYSUQsIFdlYWtQdHI8
VD4pOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZShBWElEKTsKKyAgICBzdGF0aWMgYm9vbCBjb250
YWlucyhBWElEKTsKKworICAgIHN0YXRpYyBSZWZQdHI8VD4gdHJlZUZvcklEKEFYSUQpOworICAg
IHN0YXRpYyBBWElEIGdlbmVyYXRlTmV3SUQoKTsKKworICAgIGNvbnN0IEFYSUQgbV9pZCB7IGdl
bmVyYXRlTmV3SUQoKSB9OworICAgIHN0YXRpYyBMb2NrIHNfc3RvcmVMb2NrOworcHJpdmF0ZToK
KyAgICBzdGF0aWMgSGFzaE1hcDxBWElELCBXZWFrUHRyPFQ+PiYgbWFwKCkgV1RGX1JFUVVJUkVT
X0xPQ0soc19zdG9yZUxvY2spOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB2
b2lkIEFYVHJlZVN0b3JlPFQ+OjphZGQoQVhJRCBheElELCBXZWFrUHRyPFQ+IHQpCit7CisgICAg
TG9ja2VyIGxvY2tlciB7IHNfc3RvcmVMb2NrIH07CisgICAgbWFwKCkuYWRkKGF4SUQsIHQpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIHZvaWQgQVhUcmVlU3RvcmU8VD46OnJl
bW92ZShBWElEIGF4SUQpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IHNfc3RvcmVMb2NrIH07Cisg
ICAgbWFwKCkucmVtb3ZlKGF4SUQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5l
IGJvb2wgQVhUcmVlU3RvcmU8VD46OmNvbnRhaW5zKEFYSUQgYXhJRCkKK3sKKyAgICBMb2NrZXIg
bG9ja2VyIHsgc19zdG9yZUxvY2sgfTsKKyAgICByZXR1cm4gbWFwKCkuY29udGFpbnMoYXhJRCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgUmVmUHRyPFQ+IEFYVHJlZVN0b3Jl
PFQ+Ojp0cmVlRm9ySUQoQVhJRCBheElEKQoreworICAgIExvY2tlciBsb2NrZXIgeyBzX3N0b3Jl
TG9jayB9OworICAgIHJldHVybiBtYXAoKS5nZXQoYXhJRCkuZ2V0KCk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+CitpbmxpbmUgSGFzaE1hcDxBWElELCBXZWFrUHRyPFQ+PiYgQVhUcmVlU3Rv
cmU8VD46Om1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8QVhJRCwg
V2Vha1B0cjxUPj4+IG1hcDsKKyAgICByZXR1cm4gbWFwOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgoraW5saW5lIEFYSUQgQVhUcmVlU3RvcmU8VD46OmdlbmVyYXRlTmV3SUQoKQoreworICAg
IEFYSUQgYXhJRDsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc19zdG9yZUxvY2sgfTsKKyAgICBkbyB7
CisgICAgICAgIGF4SUQgPSBBWElEOjpnZW5lcmF0ZSgpOworICAgIH0gd2hpbGUgKCFheElELmlz
VmFsaWQoKSB8fCBtYXAoKS5jb250YWlucyhheElEKSk7CisgICAgcmV0dXJuIGF4SUQ7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitMb2NrIEFYVHJlZVN0b3JlPFQ+OjpzX3N0b3JlTG9jazsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmluZGV4IGRm
MmUyYjY3NjU1Ni4uYzViMDRhOTg4ZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCkBAIC0z
NywyOSArMzcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Mb2NrIEFYSXNvbGF0ZWRU
cmVlOjpzX2NhY2hlTG9jazsKLQotc3RhdGljIHVuc2lnbmVkIG5ld1RyZWVJRCgpCi17Ci0gICAg
c3RhdGljIHVuc2lnbmVkIHNfY3VycmVudFRyZWVJRCA9IDA7Ci0gICAgcmV0dXJuICsrc19jdXJy
ZW50VHJlZUlEOwotfQotCiBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJc29sYXRlZFRy
ZWU+PiYgQVhJc29sYXRlZFRyZWU6OnRyZWVQYWdlQ2FjaGUoKQogewogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJc29sYXRlZFRyZWU+Pj4g
bWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKLUhhc2hNYXA8QVhJc29sYXRlZFRyZWVJRCwgUmVm
PEFYSXNvbGF0ZWRUcmVlPj4mIEFYSXNvbGF0ZWRUcmVlOjp0cmVlSURDYWNoZSgpCi17Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8QVhJc29sYXRlZFRyZWVJRCwgUmVmPEFYSXNv
bGF0ZWRUcmVlPj4+IG1hcDsKLSAgICByZXR1cm4gbWFwOwotfQotCiBBWElzb2xhdGVkVHJlZTo6
QVhJc29sYXRlZFRyZWUoQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSkKLSAgICA6IG1fdHJl
ZUlEKG5ld1RyZWVJRCgpKQotICAgICwgbV9heE9iamVjdENhY2hlKGF4T2JqZWN0Q2FjaGUpCisg
ICAgOiBtX2F4T2JqZWN0Q2FjaGUoYXhPYmplY3RDYWNoZSkKICAgICAsIG1fdXNlZE9uQVhUaHJl
YWQoYXhPYmplY3RDYWNoZS0+dXNlZE9uQVhUaHJlYWQoKSkKIHsKICAgICBBWFRSQUNFKCJBWElz
b2xhdGVkVHJlZTo6QVhJc29sYXRlZFRyZWUiX3MpOwpAQCAtODAsMTMgKzY1LDYgQEAgdm9pZCBB
WElzb2xhdGVkVHJlZTo6cXVldWVGb3JEZXN0cnVjdGlvbigpCiAgICAgbV9xdWV1ZWRGb3JEZXN0
cnVjdGlvbiA9IHRydWU7CiB9CiAKLVJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRy
ZWU6OnRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEIHRyZWVJRCkKLXsKLSAgICBBWFRSQUNFKCJB
WElzb2xhdGVkVHJlZTo6dHJlZUZvcklEIl9zKTsKLSAgICBMb2NrZXIgbG9ja2VyIHsgc19jYWNo
ZUxvY2sgfTsKLSAgICByZXR1cm4gdHJlZUlEQ2FjaGUoKS5nZXQodHJlZUlEKTsKLX0KLQogUmVm
PEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKEFYT2JqZWN0Q2FjaGUqIGF4
T2JqZWN0Q2FjaGUpCiB7CiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OmNyZWF0ZSJfcyk7
CkBAIC0xMTMsMTEgKzkxLDExIEBAIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6
OmNyZWF0ZShBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKQogCiAgICAgLy8gTm93IHRoYXQg
dGhlIHRyZWUgaXMgcmVhZHkgdG8gdGFrZSBjbGllbnQgcmVxdWVzdHMsIGFkZCBpdCB0byB0aGUg
dHJlZQogICAgIC8vIG1hcHMgc28gdGhhdCBpdCBjYW4gYmUgZm91bmQuCisgICAgQVhUcmVlU3Rv
cmU6OmFkZCh0cmVlLT50cmVlSUQoKSwgdHJlZS5jb3B5UmVmKCkpOwogICAgIGF1dG8gcGFnZUlE
ID0gYXhPYmplY3RDYWNoZS0+cGFnZUlEKCk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IHNfY2FjaGVM
b2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IHNfc3RvcmVMb2NrIH07CiAgICAgQVNTRVJUKCF0
cmVlUGFnZUNhY2hlKCkuY29udGFpbnMoKnBhZ2VJRCkpOwogICAgIHRyZWVQYWdlQ2FjaGUoKS5z
ZXQoKnBhZ2VJRCwgdHJlZS5jb3B5UmVmKCkpOwotICAgIHRyZWVJRENhY2hlKCkuc2V0KHRyZWUt
PnRyZWVJRCgpLCB0cmVlLmNvcHlSZWYoKSk7CiAgICAgdHJlZS0+dXBkYXRlTG9hZGluZ1Byb2dy
ZXNzKGF4T2JqZWN0Q2FjaGUtPmxvYWRpbmdQcm9ncmVzcygpKTsKIAogICAgIHJldHVybiB0cmVl
OwpAQCAtMTI4LDE4ICsxMDYsMTYgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6cmVtb3ZlVHJlZUZv
clBhZ2VJRChQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRy
ZWU6OnJlbW92ZVRyZWVGb3JQYWdlSUQiX3MpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgc19jYWNoZUxvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgc19zdG9yZUxvY2sgfTsKICAgICBpZiAoYXV0byB0cmVlID0gdHJlZVBhZ2VDYWNoZSgpLnRh
a2UocGFnZUlEKSkKICAgICAgICAgdHJlZS0+cXVldWVGb3JEZXN0cnVjdGlvbigpOwogfQogCiBS
ZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgc19jYWNoZUxvY2sgfTsK
LQorICAgIExvY2tlciBsb2NrZXIgeyBzX3N0b3JlTG9jayB9OwogICAgIGlmIChhdXRvIHRyZWUg
PSB0cmVlUGFnZUNhY2hlKCkuZ2V0KHBhZ2VJRCkpCi0gICAgICAgIHJldHVybiBSZWZQdHIgeyB0
cmVlIH07Ci0KKyAgICAgICAgcmV0dXJuIHRyZWU7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
QEAgLTY5Nyw3ICs2NzMsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpzZXRGb2N1c2VkTm9kZUlE
KEFYSUQgYXhJRCkKIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhk
b3VibGUgbmV3UHJvZ3Jlc3NWYWx1ZSkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6
dXBkYXRlTG9hZGluZ1Byb2dyZXNzIl9zKTsKLSAgICBBWExPRyhtYWtlU3RyaW5nKCJVcGRhdGlu
ZyBsb2FkaW5nIHByb2dyZXNzIHRvICIsIG5ld1Byb2dyZXNzVmFsdWUsICIgZm9yIHRyZWVJRCAi
LCB0cmVlSUQoKSkpOworICAgIEFYTE9HKG1ha2VTdHJpbmcoIlVwZGF0aW5nIGxvYWRpbmcgcHJv
Z3Jlc3MgdG8gIiwgbmV3UHJvZ3Jlc3NWYWx1ZSwgIiBmb3IgdHJlZUlEICIsIHRyZWVJRCgpLmxv
Z2dpbmdTdHJpbmcoKSkpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBtX2xv
YWRpbmdQcm9ncmVzcyA9IG5ld1Byb2dyZXNzVmFsdWU7CkBAIC04MDEsMTggKzc3NywxNyBAQCB2
b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKCkKICAgICAgICAgLy8gV2Ug
ZG9uJ3QgbmVlZCB0byBib3RoZXIgY2xlYXJpbmcgb3V0IGFueSBvdGhlciBub24tY3ljbGUtY2F1
c2luZyBtZW1iZXIgdmFyaWFibGVzIGFzIHRoZXkKICAgICAgICAgLy8gd2lsbCBiZSBjbGVhbmVk
IHVwIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgdHJlZSBpcyBkZXN0cm95ZWQuCiAKLSAgICAgICAg
TG9ja2VyIGxvY2tlciB7IHNfY2FjaGVMb2NrIH07CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBz
X3N0b3JlTG9jayB9OwogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgQVNTRVJUKHRyZWVJRENhY2hl
KCkuY29udGFpbnModHJlZUlEKCkpKTsKLSAgICAgICAgYXV0byBpdGVyYXRvciA9IHRyZWVJRENh
Y2hlKCkuZmluZCh0cmVlSUQoKSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSB0cmVlSURDYWNo
ZSgpLmVuZCgpKSB7Ci0gICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCB0aGVyZSBzaG91bGQg
b25seSBiZSB0d28gcmVmZXJlbmNlcyBsZWZ0IHRvIHRoaXMgdHJlZSAtLSBvbmUgaW4gdGhlIHRy
ZWVJRENhY2hlKCkgbWFwLAorICAgICAgICBBU1NFUlQoQVhUcmVlU3RvcmU6OmNvbnRhaW5zKHRy
ZWVJRCgpKSk7CisgICAgICAgIGlmIChhdXRvIHRyZWUgPSBBWFRyZWVTdG9yZTo6dHJlZUZvcklE
KHRyZWVJRCgpKSkgeworICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgdGhlcmUgc2hvdWxk
IG9ubHkgYmUgdHdvIHJlZmVyZW5jZXMgbGVmdCB0byB0aGlzIHRyZWUgLS0gb25lIGluIHRoZSBt
YXAsCiAgICAgICAgICAgICAvLyBhbmQgdGhlIGBwcm90ZWN0ZWRUaGlzYCBhYm92ZS4KLSAgICAg
ICAgICAgIEFTU0VSVChpdGVyYXRvci0+dmFsdWUtPnJlZkNvdW50KCkgPT0gMiwgIlVuZXhwZWN0
ZWQgcmVmY291bnQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gZGVzdHJveSBpc29sYXRlZCB0cmVlOiAl
ZCIsIGl0ZXJhdG9yLT52YWx1ZS0+cmVmQ291bnQoKSk7CisgICAgICAgICAgICBBU1NFUlQodHJl
ZS0+cmVmQ291bnQoKSA9PSAyLCAiVW5leHBlY3RlZCByZWZjb3VudCBiZWZvcmUgYXR0ZW1wdGlu
ZyB0byBkZXN0cm95IGlzb2xhdGVkIHRyZWU6ICVkIiwgdHJlZS0+cmVmQ291bnQoKSk7CiAgICAg
ICAgIH0KICNlbmRpZgogCi0gICAgICAgIHRyZWVJRENhY2hlKCkucmVtb3ZlKHRyZWVJRCgpKTsK
KyAgICAgICAgQVhUcmVlU3RvcmU6OnJlbW92ZSh0cmVlSUQoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGU2MDk4NDIyNjQ1MS4uZDM1ZTkzZjVj
ZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJM
RShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAKKyNpbmNsdWRlICJBWFRyZWVTdG9yZS5o
IgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJQ
YWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTQ3LDggKzQ4
LDYgQEAgY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIFBhZ2U7CiBlbnVtIGNsYXNz
IEFYU3RyZWFtT3B0aW9ucyA6IHVpbnQ4X3Q7CiAKLXVzaW5nIEFYSXNvbGF0ZWRUcmVlSUQgPSB1
bnNpZ25lZDsKLQogZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBB
UklBSXNNdWx0aWxpbmUsCiAgICAgQVJJQUxhbmRtYXJrUm9sZURlc2NyaXB0aW9uLApAQCAtMjc0
LDggKzI3MywxMSBAQCBzdHJ1Y3QgQVhQcm9wZXJ0eUNoYW5nZSB7CiAgICAgQVhQcm9wZXJ0eU1h
cCBwcm9wZXJ0aWVzOyAvLyBDaGFuZ2VkIHByb3BlcnRpZXMuCiB9OwogCi1jbGFzcyBBWElzb2xh
dGVkVHJlZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBWElzb2xhdGVkVHJlZT4gewot
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFYSXNvbGF0ZWRUcmVlKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitjbGFzcyBBWElzb2xhdGVkVHJlZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxBWElzb2xhdGVkVHJlZT4KKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBWElzb2xh
dGVkVHJlZT4KKyAgICAsIHB1YmxpYyBBWFRyZWVTdG9yZTxBWElzb2xhdGVkVHJlZT4geworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEFYSXNvbGF0ZWRUcmVlKTsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBmcmllbmQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIEFYSXNvbGF0ZWRUcmVlJik7CiAgICAgZnJpZW5kIHZvaWQgc3RyZWFtSXNv
bGF0ZWRTdWJ0cmVlT25NYWluVGhyZWFkKFRleHRTdHJlYW0mLCBjb25zdCBBWElzb2xhdGVkVHJl
ZSYsIEFYSUQsIGNvbnN0IE9wdGlvblNldDxBWFN0cmVhbU9wdGlvbnM+Jik7CiBwdWJsaWM6CkBA
IC0yODYsMTEgKzI4OCwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0
ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KTsKICAg
ICBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlm
aWVyKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9ySUQoQVhJc29s
YXRlZFRyZWVJRCk7CiAgICAgQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSgpIGNvbnN0Owog
CiAgICAgUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IHJvb3ROb2RlKCk7CiAgICAgUmVmUHRyPEFY
SXNvbGF0ZWRPYmplY3Q+IGZvY3VzZWROb2RlKCk7CisKICAgICBSZWZQdHI8QVhJc29sYXRlZE9i
amVjdD4gbm9kZUZvcklEKGNvbnN0IEFYSUQmKSBjb25zdDsKICAgICBWZWN0b3I8UmVmUHRyPEFY
Q29yZU9iamVjdD4+IG9iamVjdHNGb3JJRHMoY29uc3QgVmVjdG9yPEFYSUQ+Jik7CiAKQEAgLTMz
NSw3ICszMzcsNyBAQCBwdWJsaWM6CiAgICAgLy8gRHVyaW5nIGxheW91dCB0ZXN0cywgaXQgaXMg
Y2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICB2b2lkIGFwcGx5UGVuZGluZ0NoYW5nZXMo
KTsKIAotICAgIEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlEKCkgY29uc3QgeyByZXR1cm4gbV90cmVl
SUQ7IH0KKyAgICBBWElEIHRyZWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KIAogcHJpdmF0
ZToKICAgICBBWElzb2xhdGVkVHJlZShBWE9iamVjdENhY2hlKik7CkBAIC0zNDUsOSArMzQ3LDcg
QEAgcHJpdmF0ZToKICAgICAvLyBiZWNhdXNlIGl0IGNvdWxkIGJlIGJlaW5nIHVzZWQgYnkgdGhl
IHNlY29uZGFyeSB0aHJlYWQgdG8gc2VydmljZSBhbiBBWCByZXF1ZXN0LgogICAgIHZvaWQgcXVl
dWVGb3JEZXN0cnVjdGlvbigpOwogCi0gICAgc3RhdGljIExvY2sgc19jYWNoZUxvY2s7Ci0gICAg
c3RhdGljIEhhc2hNYXA8QVhJc29sYXRlZFRyZWVJRCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRy
ZWVJRENhY2hlKCkgV1RGX1JFUVVJUkVTX0xPQ0soc19jYWNoZUxvY2spOwotICAgIHN0YXRpYyBI
YXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgdHJlZVBhZ2VDYWNo
ZSgpIFdURl9SRVFVSVJFU19MT0NLKHNfY2FjaGVMb2NrKTsKKyAgICBzdGF0aWMgSGFzaE1hcDxQ
YWdlSWRlbnRpZmllciwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVQYWdlQ2FjaGUoKSBXVEZf
UkVRVUlSRVNfTE9DSyhzX3N0b3JlTG9jayk7CiAKICAgICBlbnVtIGNsYXNzIEF0dGFjaFdyYXBw
ZXIgOiBib29sIHsgT25NYWluVGhyZWFkLCBPbkFYVGhyZWFkIH07CiAgICAgc3RkOjpvcHRpb25h
bDxOb2RlQ2hhbmdlPiBub2RlQ2hhbmdlRm9yT2JqZWN0KFJlZjxBWENvcmVPYmplY3Q+LCBBdHRh
Y2hXcmFwcGVyID0gQXR0YWNoV3JhcHBlcjo6T25NYWluVGhyZWFkKTsKQEAgLTM1OCw3ICszNTgs
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgcXVldWVSZW1vdmFsc0xvY2tlZChWZWN0b3I8QVhJRD4m
JikgV1RGX1JFUVVJUkVTX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKICAgICB2b2lkIHF1ZXVlUmVt
b3ZhbHNBbmRVbnJlc29sdmVkQ2hhbmdlcyhWZWN0b3I8QVhJRD4mJik7CiAKLSAgICBBWElzb2xh
dGVkVHJlZUlEIG1fdHJlZUlEOwogICAgIHVuc2lnbmVkIG1fbWF4VHJlZURlcHRoIHsgMCB9Owog
ICAgIEFYT2JqZWN0Q2FjaGUqIG1fYXhPYmplY3RDYWNoZSB7IG51bGxwdHIgfTsKICAgICBib29s
IG1fdXNlZE9uQVhUaHJlYWQgeyB0cnVlIH07CkBAIC00MTMsOSArNDEyLDcgQEAgaW5saW5lIEFY
T2JqZWN0Q2FjaGUqIEFYSXNvbGF0ZWRUcmVlOjpheE9iamVjdENhY2hlKCkgY29uc3QKIAogaW5s
aW5lIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQo
c3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQogewotICAgIGlmIChwYWdlSUQp
Ci0gICAgICAgIHJldHVybiB0cmVlRm9yUGFnZUlEKCpwYWdlSUQpOwotICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBwYWdlSUQgPyB0cmVlRm9yUGFnZUlEKCpwYWdlSUQpIDogbnVsbHB0
cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS93aW4vQVhPYmplY3RDYWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L3dpbi9BWE9iamVjdENhY2hlV2luLmNwcAppbmRleCA0NjNlNjkxNWU4
YzYuLmVkYmY3YmNkNjM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS93aW4vQVhPYmplY3RDYWNoZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS93aW4vQVhPYmplY3RDYWNoZVdpbi5jcHAKQEAgLTE0NiwyNSArMTQ2LDYgQEAgdm9pZCBB
WE9iamVjdENhY2hlOjpmcmFtZUxvYWRpbmdFdmVudFBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vz
c2liaWxpdHlPYmplY3QqIG8KICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuQVhGaW5p
c2hGcmFtZUxvYWQoKTsKIH0KIAotQVhJRCBBWE9iamVjdENhY2hlOjpwbGF0Zm9ybUdlbmVyYXRl
QVhJRCgpIGNvbnN0Ci17Ci0gICAgc3RhdGljIExPTkcgbGFzdFVzZWRJRCA9IDA7Ci0KLSAgICAv
LyBHZW5lcmF0ZSBhIG5ldyBJRC4gV2luZG93cyBhY2Nlc3NpYmlsaXR5IHJlbGllcyBvbiBhIHBv
c2l0aXZlIEFYSUQsCi0gICAgLy8gcmFuZ2luZyBmcm9tIDEgdG8gTE9OR19NQVguCi0gICAgTE9O
RyBjdXJyZW50SUQgPSBsYXN0VXNlZElEOwotICAgIEFYSUQgb2JqSUQ7Ci0gICAgZG8gewotICAg
ICAgICBvYmpJRCA9IG1ha2VPYmplY3RJZGVudGlmaWVyPEFYSURUeXBlPigrK2N1cnJlbnRJRCk7
Ci0gICAgfSB3aGlsZSAoIW9iaklELmlzVmFsaWQoKSB8fCBtX2lkc0luVXNlLmNvbnRhaW5zKG9i
aklEKSk7Ci0KLSAgICBBU1NFUlQob2JqSUQuaXNWYWxpZCgpICYmIG9iaklELnRvVUludDY0KCkg
PD0gc3RkOjpudW1lcmljX2xpbWl0czxMT05HPjo6bWF4KCkpOwotCi0gICAgbGFzdFVzZWRJRCA9
IGN1cnJlbnRJRDsKLQotICAgIHJldHVybiBvYmpJRDsKLX0KLQogdm9pZCBBWE9iamVjdENhY2hl
OjpwbGF0Zm9ybUhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKE5vZGUqLCBOb2RlKiBuZXdG
b2N1c2VkTm9kZSkKIHsKICAgICBpZiAoIW5ld0ZvY3VzZWROb2RlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>