<?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>235430</bug_id>
          
          <creation_ts>2022-01-20 23:53:13 -0800</creation_ts>
          <short_desc>Clarify that some UUID routines are dedicated to UUID v4</short_desc>
          <delta_ts>2022-02-02 02:31:25 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kangil.han</cc>
    
    <cc>philipj</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1832690</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-20 23:53:13 -0800</bug_when>
    <thetext>Clarify that some UUID routines are dedicated to UUID v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832692</commentid>
    <comment_count>1</comment_count>
      <attachid>449641</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-21 00:01:20 -0800</bug_when>
    <thetext>Created attachment 449641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832698</commentid>
    <comment_count>2</comment_count>
      <attachid>449643</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-21 00:18:57 -0800</bug_when>
    <thetext>Created attachment 449643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832801</commentid>
    <comment_count>3</comment_count>
      <attachid>449643</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-21 09:56:04 -0800</bug_when>
    <thetext>Comment on attachment 449643
Patch

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

I’m saying r=me, but I have one big bit of feedback.

&gt; Source/WTF/ChangeLog:3
&gt; +        Clarify that some UUID routines are dedicated to UUID v4

Really glad you are following through on this!

&gt; Source/WTF/ChangeLog:10
&gt; +        Rename UUID::create to UUID::createVersion4.
&gt; +        Add a UUID::parseVersion4 that validates the parsed UUID is a v4.
&gt; +        Rename createCanonicalUUIDString to createVersion4UUIDString for consistency.

I’m not sure I like this. For both UUID::create and createCanonicalUUIDString, seems the most common case is to want to create a UUID and not care which type. Whichever is the fastest good UUID, presumably? Seems like there would be a function to create a new UUID for general purpose uses, and in cases where I don’t care which type of UUID is created, I shouldn’t have to say in the function name which kind I want. But then there would be other cases where I specifically need a v4 UUID, then I would want to call a function with the more-specific name to help us keep track of the fact that this place requires a v4 UUID.

We’ve done that for parse, where there is one function that can parse any UUID (although it comes with the bonus feature of rejecting the pattern we reserved for our deleted value), and a different one for cases where we need to check that it’s v4 specifically.

I think we should keep that for create, and that means UUID::create would still exist and would not specify v4 even though that is its current implementation. Not sure what we would name createCanonicalUUIDString, though, since I have no idea what the word &quot;Canonical&quot; is doing in there, and nothing about that names seems to shout &quot;new UUID&quot; to me. It sounds like what is new is the string, and maybe the UUID isn’t a newly created one.

&gt; Source/WTF/wtf/UUID.cpp:55
&gt; +    auto high = static_cast&lt;uint64_t&gt;((m_data &gt;&gt; 64) &amp; 0xffffffffffff0fff) | 0x4000;
&gt; +    auto low = static_cast&lt;uint64_t&gt;(m_data &amp; 0x3fffffffffffffff) | 0x8000000000000000;

Do those long hex constants correctly give us 64-bit? Typically I assume that constants will be int unless we add suffixes with letters like &quot;u&quot; for unsigned and &quot;l&quot; for long. And that would make this code not work. So I assume that’s not right? I guess the tests are working, so maybe I just don’t know the latest rules for this.

&gt; Source/WTF/wtf/UUID.cpp:121
&gt; -    if (result == emptyValue || result == deletedValue)
&gt; +    if (result == deletedValue)

What’s the rationale here? We want to successfully parse the empty value? We want to reject the deleted value? Are there any callers that want to reject the empty value?

&gt; Tools/TestWebKitAPI/Tests/WTF/UUID.cpp:66
&gt; +        fprintf(stderr, &quot;%s \n&quot;, createdString.utf8().data());

I think you don’t want to land this, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833292</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-24 07:20:48 -0800</bug_when>
    <thetext>&gt; &gt; Source/WTF/ChangeLog:10
&gt; &gt; +        Rename UUID::create to UUID::createVersion4.
&gt; &gt; +        Add a UUID::parseVersion4 that validates the parsed UUID is a v4.
&gt; &gt; +        Rename createCanonicalUUIDString to createVersion4UUIDString for consistency.
&gt; 
&gt; I’m not sure I like this. For both UUID::create and
&gt; createCanonicalUUIDString, seems the most common case is to want to create a
&gt; UUID and not care which type. Whichever is the fastest good UUID,
&gt; presumably? Seems like there would be a function to create a new UUID for
&gt; general purpose uses, and in cases where I don’t care which type of UUID is
&gt; created, I shouldn’t have to say in the function name which kind I want. But
&gt; then there would be other cases where I specifically need a v4 UUID, then I
&gt; would want to call a function with the more-specific name to help us keep
&gt; track of the fact that this place requires a v4 UUID.
&gt; 
&gt; We’ve done that for parse, where there is one function that can parse any
&gt; UUID (although it comes with the bonus feature of rejecting the pattern we
&gt; reserved for our deleted value), and a different one for cases where we need
&gt; to check that it’s v4 specifically.
&gt; 
&gt; I think we should keep that for create, and that means UUID::create would
&gt; still exist and would not specify v4 even though that is its current
&gt; implementation. Not sure what we would name createCanonicalUUIDString,
&gt; though, since I have no idea what the word &quot;Canonical&quot; is doing in there,
&gt; and nothing about that names seems to shout &quot;new UUID&quot; to me. It sounds like
&gt; what is new is the string, and maybe the UUID isn’t a newly created one.

A few thoughts that push me towards using createVersion4UUIDString:
- We are doing pseudo random number UUIDs, and spec is stating that they be called v4. By using Version4 in the routine name, we (try to) make it clear we are using pseudo random numbers. I am not sure what better name there is to convey that idea.
- V4 cannot collide with empty and deleted values. Some code paths may never care, some code paths may not care right now but may care in the future. V4 is a safe default.
- At least one code path requires V4. Probably most others do not care (maybe?).

&gt; &gt; Source/WTF/wtf/UUID.cpp:55
&gt; &gt; +    auto high = static_cast&lt;uint64_t&gt;((m_data &gt;&gt; 64) &amp; 0xffffffffffff0fff) | 0x4000;
&gt; &gt; +    auto low = static_cast&lt;uint64_t&gt;(m_data &amp; 0x3fffffffffffffff) | 0x8000000000000000;
&gt; 
&gt; Do those long hex constants correctly give us 64-bit? Typically I assume
&gt; that constants will be int unless we add suffixes with letters like &quot;u&quot; for
&gt; unsigned and &quot;l&quot; for long. And that would make this code not work. So I
&gt; assume that’s not right? I guess the tests are working, so maybe I just
&gt; don’t know the latest rules for this.

There are examples with and without UL postfixes in the code bas .
Given that, I assumed this was ok to use the shorter form (and the tests are indeed green).

&gt; &gt; Source/WTF/wtf/UUID.cpp:121
&gt; &gt; -    if (result == emptyValue || result == deletedValue)
&gt; &gt; +    if (result == deletedValue)
&gt; 
&gt; What’s the rationale here? We want to successfully parse the empty value? We
&gt; want to reject the deleted value? Are there any callers that want to reject
&gt; the empty value?

The V4 code path will reject both of them later on.
As of non v4, I am not sure, but the empty value is a predefined UUDI in the spec and is not harmful to parse, contrary to the deleted value we definitely prefer to create explicitly with the UUID constructor.

&gt; &gt; Tools/TestWebKitAPI/Tests/WTF/UUID.cpp:66
&gt; &gt; +        fprintf(stderr, &quot;%s \n&quot;, createdString.utf8().data());
&gt; 
&gt; I think you don’t want to land this, right?

Right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834842</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-27 23:54:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/88173227&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834846</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-28 00:46:12 -0800</bug_when>
    <thetext>&gt; I’m saying r=me, but I have one big bit of feedback.

Let me know whether you&apos;d prefer some further changes after my previous answer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835010</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-28 09:28:25 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #6)
&gt; Let me know whether you&apos;d prefer some further changes after my previous
&gt; answer.

Thanks for asking. I think you made some great choices. I don’t think there’s anything major at this time that I see differently. Maybe I’ll have ideas later, but: great work and thanks for considering my suggestions and thoughts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836354</commentid>
    <comment_count>8</comment_count>
      <attachid>450618</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-01 23:31:09 -0800</bug_when>
    <thetext>Created attachment 450618
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836389</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-02 02:31:16 -0800</bug_when>
    <thetext>Committed r288950 (246679@main): &lt;https://commits.webkit.org/246679@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450618.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449641</attachid>
            <date>2022-01-21 00:01:20 -0800</date>
            <delta_ts>2022-01-21 00:18:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235430-20220121090115.patch</filename>
            <type>text/plain</type>
            <size>64950</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA4ZGUzODQ4Y2MxMmQ5ZDRhZjdmZjg3
NzE0NmZlOWQzOGYzMGIyYzYuLjQ4MzZlMTNhN2I0MjRlZDNjMDcwMDAyNDVhYjhjMjBhYjUxMGJl
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjItMDEtMjAgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIENsYXJpZnkgdGhhdCBzb21lIFVVSUQgcm91dGluZXMg
YXJlIGRlZGljYXRlZCB0byBVVUlEIHY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzU0MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW5hbWUgVVVJRDo6Y3JlYXRlIHRvIFVVSUQ6OmNyZWF0ZVZlcnNp
b240LgorICAgICAgICBBZGQgYSBVVUlEOjpwYXJzZVZlcnNpb240IHRoYXQgdmFsaWRhdGVzIHRo
ZSBwYXJzZWQgVVVJRCBpcyBhIHY0LgorICAgICAgICBSZW5hbWUgY3JlYXRlQ2Fub25pY2FsVVVJ
RFN0cmluZyB0byBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcgZm9yIGNvbnNpc3RlbmN5LgorCisg
ICAgICAgIFVwZGF0ZSBVVUlEIGNvbnN0cnVjdG9yIHRvIGdlbmVyYXRlIGEgVVVJRCB2NCBhcyBw
ZXIgc3BlYy4KKyAgICAgICAgVXBkYXRlIFVVSUQ6OnRvU3RyaW5nIHRvIGdlbmVyYXRlIGEgc3Ry
aW5nIHJlcHJlc2VudGF0aW9uIG9mIGFueSBVVUlELCBhbmQgbm90IHNwZWNpZmljYWxseSB0byB2
NC4KKworICAgICAgICAqIHd0Zi9JZGVudGlmaWVkLmg6CisgICAgICAgIChXVEY6OlVVSURJZGVu
dGlmaWVkOjpVVUlESWRlbnRpZmllZCk6CisgICAgICAgICogd3RmL1VSTC5jcHA6CisgICAgICAg
IChXVEY6OlVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQpOgorICAgICAgICAqIHd0Zi9VVUlE
LmNwcDoKKyAgICAgICAgKFdURjo6VVVJRDo6VVVJRCk6CisgICAgICAgIChXVEY6OlVVSUQ6OnRv
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdURjo6VVVJRDo6cGFyc2UpOgorICAgICAgICAoV1RG
OjpVVUlEOjpwYXJzZVZlcnNpb240KToKKyAgICAgICAgKFdURjo6Y3JlYXRlVmVyc2lvbjRVVUlE
U3RyaW5nKToKKyAgICAgICAgKFdURjo6aXNWZXJzaW9uNFVVSUQpOgorICAgICAgICAoV1RGOjpj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVVVJRC5o
OgorICAgICAgICAoV1RGOjpVVUlEOjpjcmVhdGVWZXJzaW9uNCk6CisgICAgICAgIChXVEY6OlVV
SUQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIu
Y3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgor
CiAyMDIyLTAxLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
RW5hYmxlIGZvcm0ucmVxdWVzdFN1Ym1pdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGVjMmI4NTlmZjhjNjI1
YmM4MmRjOTM3NzlmMWNlYmJmZWFmY2Q5Ni4uNjc2YzI5ZTNiZGRjMTQxOGQxNTgyNmM5ODUzNzRh
NGYyYjBmNDQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIyLTAxLTIwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDbGFyaWZ5IHRoYXQgc29t
ZSBVVUlEIHJvdXRpbmVzIGFyZSBkZWRpY2F0ZWQgdG8gVVVJRCB2NAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NDMwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGJlaGF2aW9yLCB0
aGlzIGlzIHJlbmFtaW5nIG9ubHkuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNU2Vzc2lvbkNsZWFyS2V5OjpDRE1TZXNzaW9uQ2xlYXJLZXkpOgorICAgICAgICAqIE1vZHVs
ZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZp
bGVTeXN0ZW06OkRPTUZpbGVTeXN0ZW0pOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250
cm9sc0hvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0hvc3Q6OmdlbmVy
YXRlVVVJRCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpNZWRpYURldmljZXMpOgorICAgICAg
ICAqIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVE
YXRhYmFzZUZpbGVOYW1lKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlBdHNwaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6OnJl
Z2lzdGVyUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6OnJlZ2lz
dGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBdHNwaTo6cmVnaXN0
ZXJIeXBlcmxpbmspOgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6Y29weVByb3BlcnRpZXNGcm9tU291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojp1cGRhdGVCbGVuZGluZ0tleWZy
YW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6Y29tcHV0ZUNTU1RyYW5z
aXRpb25CbGVuZGluZ0tleWZyYW1lcyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpvcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGlkSW5zZXJ0QXR0YWNobWVudEVs
ZW1lbnQpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYlVSTC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iVVJMOjpjcmVhdGVCbG9iVVJMKToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmVu
c3VyZVVuaXF1ZUlkZW50aWZpZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkpOgorICAgICAgICAqIHBh
Z2UvQ3J5cHRvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0bzo6cmFuZG9tVVVJRCBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NRdWFsaWZpZWQ8VVVJRD46OmdlbmVyYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRp
b25DRjo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpDRE1TZXNzaW9uQVZG
b3VuZGF0aW9uT2JqQyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1Qcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlOjpSZWFsdGltZU1lZGlhU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
Y29tcHV0ZUNhcHR1cmVEZXZpY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAod2Via2l0
TWVkaWFTdHJlYW1TcmNQb3N0U3RyZWFtQ29sbGVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJD
b3JlOjpzY3JlZW5EZXZpY2VVVUlEKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzRG9jdW1lbnRBbGl2ZSBjb25zdCk6Cisg
ICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6CisKIDIwMjItMDEtMjAgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlY29uZmlndXJpbmcg
dGhlIENvcmVBdWRpb1NoYXJlZFVuaXQgc2hvdWxkIHRha2UgaW50byBhY2NvdW50IHRoYXQgdGhl
cmUgaXMgYSBzcGVha2VyIHNhbXBsZSBwcm9kdWNlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRy
aXZlci9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCA2OGM4ZDQ2
NGIxODAwMDc0NjAyODBlOTJlOTQ5NjM3Y2Q0NWUwNWY0Li4wMzJlN2I5MGMzYjk1Y2YxMDFmOTg3
NGNkMDlkNmJlNTFiYzA5NGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIy
LTAxLTIwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDbGFy
aWZ5IHRoYXQgc29tZSBVVUlEIHJvdXRpbmVzIGFyZSBkZWRpY2F0ZWQgdG8gVVVJRCB2NAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NDMwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBnbGliL1Nlc3Np
b25Ib3N0R2xpYi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0OjpzdGFydEF1
dG9tYXRpb25TZXNzaW9uKToKKyAgICAgICAgKiBzb2NrZXQvU2Vzc2lvbkhvc3RTb2NrZXQuY3Bw
OgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lv
bik6CisKIDIwMjEtMDktMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdG9wIHVzaW5nIG1ha2VSZWYoKnRoaXMpIC8gbWFrZVJlZlB0cih0aGlzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBlMTM0NTEwYjQyZGJiMTljMzA2OGI1ZTY3ODJlYWI2NmU3ZThiYWJjLi4wNTUyYzMyNzk5
NjFiYzYwNWY1NGNiNGNmYmE0NDA1ZDU4N2E5YTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBA
CisyMDIyLTAxLTIwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAg
ICBDbGFyaWZ5IHRoYXQgc29tZSBVVUlEIHJvdXRpbmVzIGFyZSBkZWRpY2F0ZWQgdG8gVVVJRCB2
NAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NDMw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjplbnN1cmVTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6Q2FjaGU6OnRvUmVjb3JkSW5mb3JtYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6Q2FjaGVzOjpvcGVuKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtNRE5T
UmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0dGFjaG1lbnRX
aXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpoYW5kbGVGb3JXZWJQYWdlUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aGFuZGxlRm9yV2ViRnJhbWVJRCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW06
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbToKKyAgICAgICAgKCtb
V0tTaGFyZVNoZWV0IGNyZWF0ZVJhbmRvbVNoYXJpbmdEaXJlY3RvcnlGb3JGaWxlOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6ZGlkUmVjZWl2ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXJ0dWFsQXV0aGVudGljYXRvck1h
bmFnZXI6OmNyZWF0ZUF1dGhlbnRpY2F0b3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2F5
bGFuZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6
V2F5bGFuZENvbXBvc2l0b3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tNb2RlbFZpZXcu
bW06CisgICAgICAgICgtW1dLTW9kZWxWaWV3IGNyZWF0ZUZpbGVGb3JNb2RlbDpdKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVVVSUQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9k
ZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJL
aXQ6OlBERlBsdWdpbjo6b3BlbldpdGhQcmV2aWV3KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luOjpvcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKToKKwogMjAyMi0wMS0xOSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92ZSBjb21wdXRhdGlvbiBv
ZiBzZXJ2aWNlIHdvcmtlciBGZXRjaEV2ZW50LnJlc3VsdGluZ0NsaWVudElkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hh
bmdlTG9nCmluZGV4IDJhMzhhNjA4ODNkYTZkNWU2NDk5ZTdiYzZlZjFkZDliY2Q1MGE4OTMuLmNl
NWQwZjdmYjk4OTkzMjIzNGUwNjU1YzcyZDY4YTUzNzM1YTcyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEtMjAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIENsYXJpZnkgdGhhdCBzb21lIFVVSUQgcm91dGluZXMgYXJl
IGRlZGljYXRlZCB0byBVVUlEIHY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzU0MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5j
cHA6CisgICAgICAgIChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmVuc3VyZVNlc3Npb24pOgor
CiAyMDIyLTAxLTExICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeGVkIGluc3RhbGxoZHIgYnVpbGQgZmFpbHVyZXMgaW4gV2ViQ29yZSBhbmQgV2ViS2l0
TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JZGVudGlmaWVkLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9JZGVudGlmaWVkLmgKaW5kZXggY2I4MjQzM2EzOTkzYjdiYTI5OTA4OTAyY2Q5NTlk
OGE3YmFkMTU1OS4uOTlkOWYzNmJlNjhiYzM4NzYwODZkN2ZjNDAxNmUwYjhlMzE4YTYyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvSWRlbnRpZmllZC5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0lkZW50aWZpZWQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
Y2xhc3MgVVVJRElkZW50aWZpZWQgOiBwdWJsaWMgSWRlbnRpZmllZEJhc2U8VVVJRCwgVD4gewog
cHJvdGVjdGVkOgogICAgIFVVSURJZGVudGlmaWVkKCkKLSAgICAgICAgOiBJZGVudGlmaWVkQmFz
ZTxVVUlELCBUPihVVUlEOjpjcmVhdGUoKSkKKyAgICAgICAgOiBJZGVudGlmaWVkQmFzZTxVVUlE
LCBUPihVVUlEOjpjcmVhdGVWZXJzaW9uNCgpKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmluZGV4IDQ0
OGRkZWUyMTYwZWYxOGNhNWUwNjYxMzkwZTU5OGQ1M2JjNTRkMmEuLjRlZDU2ZGM0ZWJlM2M5ZmQy
ZGQ2OTI0ZDQ5Njc3ZjllMjdlYjIwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAtMTA1Myw3ICsxMDUzLDcgQEAgU3Ry
aW5nIFVSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCkg
Y29uc3QKIAogVVJMIFVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoU3RyaW5nVmlldyByZWxh
dGl2ZVBhcnQpCiB7Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgbWFrZVN0cmluZygid2Via2l0LWZh
a2UtdXJsOi8vIiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCAnLycsIHJlbGF0aXZlUGFy
dCkpOworICAgIHJldHVybiBVUkwoVVJMKCksIG1ha2VTdHJpbmcoIndlYmtpdC1mYWtlLXVybDov
LyIsIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpLCAnLycsIHJlbGF0aXZlUGFydCkpOwogfQog
CiBVUkwgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKFN0cmluZ1ZpZXcgcGF0aCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIvU291cmNlL1dURi93dGYvVVVJRC5j
cHAKaW5kZXggODVhNWUzOGRmMTE3YzQ0Njk2NDFhYWU0MjBlNzhhZDljMWYwMjRmZC4uYjE2ZjQz
NjllOTFiNDA4MmJjZjA2YjFjODA2YzRmNDlhOGY3OTg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVVVJRC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKQEAgLTQ4LDEzICs0
OCwxMSBAQCBVVUlEOjpVVUlEKCkKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihtX2RhdGEpID09
IDE2KTsKICAgICBhdXRvKiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4o
Jm1fZGF0YSk7CiAKLSAgICBkbyB7Ci0gICAgICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFs
dWVzKGRhdGEsIDE2KTsKLSAgICB9IHdoaWxlIChtX2RhdGEgPT0gZW1wdHlWYWx1ZSB8fCBtX2Rh
dGEgPT0gZGVsZXRlZFZhbHVlKTsKKyAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhk
YXRhLCAxNik7CiAKLSAgICAvLyBXZSBzYW5pdGl6ZSB0aGUgdmFsdWUgdG8gbm90IGxvb3NlIGFu
eSBpbmZvcm1hdGlvbiB3aGVuIHNlcmlhbGl6aW5nIGFzIFZlcnNpb24gNCBVVUlELgotICAgIGF1
dG8gaGlnaCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PigobV9kYXRhID4+IDY0KSAmIDB4ZmZmZmZm
ZmZmZmZmMGZmZik7Ci0gICAgYXV0byBsb3cgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9kYXRh
ICYgMHgzZmZmZmZmZmZmZmZmZmZmKTsKKyAgICAvLyBCeSBkZWZhdWx0LCB3ZSBnZW5lcmF0ZSBh
IHY0IFVVSUQgdmFsdWUsIGFzIHBlciBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9o
dG1sL3JmYzQxMjIjc2VjdGlvbi00LjQuCisgICAgYXV0byBoaWdoID0gc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KChtX2RhdGEgPj4gNjQpICYgMHhmZmZmZmZmZmZmZmYwZmZmKSB8IDB4NDAwMDsKKyAg
ICBhdXRvIGxvdyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX2RhdGEgJiAweDNmZmZmZmZmZmZm
ZmZmZmYpIHwgMHg4ZmZmZmZmZmZmZmZmZmZmOwogCiAgICAgbV9kYXRhID0gKHN0YXRpY19jYXN0
PFVJbnQxMjg+KGhpZ2gpIDw8IDY0KSB8IGxvdzsKIH0KQEAgLTc0LDEwICs3MiwxMCBAQCBTdHJp
bmcgVVVJRDo6dG9TdHJpbmcoKSBjb25zdAogICAgICAgICBoZXgoaGlnaCA+PiAzMiwgOCwgTG93
ZXJjYXNlKSwKICAgICAgICAgJy0nLAogICAgICAgICBoZXgoKGhpZ2ggPj4gMTYpICYgMHhmZmZm
LCA0LCBMb3dlcmNhc2UpLAotICAgICAgICAiLTQiLAotICAgICAgICBoZXgoaGlnaCAmIDB4ZmZm
LCAzLCBMb3dlcmNhc2UpLAogICAgICAgICAnLScsCi0gICAgICAgIGhleCgobG93ID4+IDQ4KSB8
IDB4ODAwMCwgNCwgTG93ZXJjYXNlKSwKKyAgICAgICAgaGV4KGhpZ2ggJiAweGZmZmYsIDQsIExv
d2VyY2FzZSksCisgICAgICAgICctJywKKyAgICAgICAgaGV4KGxvdyA+PiA0OCwgNCwgTG93ZXJj
YXNlKSwKICAgICAgICAgJy0nLAogICAgICAgICBoZXgobG93ICYgMHhmZmZmZmZmZmZmZmYsIDEy
LCBMb3dlcmNhc2UpCiAgICAgKTsKQEAgLTg1LDExICs4MywxMSBAQCBTdHJpbmcgVVVJRDo6dG9T
dHJpbmcoKSBjb25zdAogCiBzdGQ6Om9wdGlvbmFsPFVVSUQ+IFVVSUQ6OnBhcnNlKFN0cmluZ1Zp
ZXcgdmFsdWUpCiB7Ci0gICAgLy8gVmVyc2lvbiA0IFVVSURzIGhhdmUgdGhlIGZvcm0geHh4eHh4
eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4IHdpdGggaGV4YWRlY2ltYWwgZGlnaXRzIGZv
ciB4IGFuZCBvbmUgb2YgOCwgOSwgQSwgb3IgQiBmb3IgeS4KKyAgICAvLyBVVUlEcyBoYXZlIHRo
ZSBmb3JtIHh4eHh4eHh4LXh4eHgteHh4eC14eHh4LXh4eHh4eHh4eHh4eCB3aXRoIGhleGFkZWNp
bWFsIGRpZ2l0cyBmb3IgeC4KICAgICBpZiAodmFsdWUubGVuZ3RoKCkgIT0gMzYpCiAgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICBpZiAodmFsdWVbOF0gIT0gJy0nIHx8IHZhbHVlWzEzXSAhPSAn
LScgIHx8IHZhbHVlWzE0XSAhPSAnNCcgfHwgdmFsdWVbMThdICE9ICctJyB8fCB2YWx1ZVsyM10g
IT0gJy0nKQorICAgIGlmICh2YWx1ZVs4XSAhPSAnLScgfHwgdmFsdWVbMTNdICE9ICctJyAgfHwg
dmFsdWVbMThdICE9ICctJyB8fCB2YWx1ZVsyM10gIT0gJy0nKQogICAgICAgICByZXR1cm4geyB9
OwogCiAgICAgLy8gcGFyc2VJbnRlZ2VyIG1heSBhY2NlcHQgaW50ZWdlcnMgc3RhcnRpbmcgd2l0
aCArLCBsZXQncyBjaGVjayB0aGlzIGJlZm9yZWhhbmQuCkBAIC0xMDQsNyArMTAyLDcgQEAgc3Rk
OjpvcHRpb25hbDxVVUlEPiBVVUlEOjpwYXJzZShTdHJpbmdWaWV3IHZhbHVlKQogICAgIGlmICgh
c2Vjb25kVmFsdWUpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIHRoaXJkVmFsdWUg
PSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHZhbHVlLnN1YnN0cmluZygxNSwgMyksIDE2KTsKKyAg
ICBhdXRvIHRoaXJkVmFsdWUgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHZhbHVlLnN1YnN0cmlu
ZygxNCwgNCksIDE2KTsKICAgICBpZiAoIXRoaXJkVmFsdWUpCiAgICAgICAgIHJldHVybiB7IH07
CiAKQEAgLTExMiwxMSArMTEwLDYgQEAgc3RkOjpvcHRpb25hbDxVVUlEPiBVVUlEOjpwYXJzZShT
dHJpbmdWaWV3IHZhbHVlKQogICAgIGlmICghZm91cnRoVmFsdWUpCiAgICAgICAgIHJldHVybiB7
IH07CiAKLSAgICAvLyBGb3VydGggdmFsdWUgc3RhcnRzIHdpdGggJ3knLCBpdCBtdXN0IGJlIGFi
b3ZlIDB4ODAwMCBhbmQgYmVsb3cgMHhCRkZGRi4KLSAgICBpZiAoKCpmb3VydGhWYWx1ZSAmIDB4
YzAwMCkgIT0gMHg4MDAwKQotICAgICAgICByZXR1cm4geyB9OwotICAgIGZvdXJ0aFZhbHVlID0g
KmZvdXJ0aFZhbHVlICYgMHgzZmZmOwotCiAgICAgYXV0byBmaWZ0aFZhbHVlID0gcGFyc2VJbnRl
Z2VyPHVpbnQ2NF90Pih2YWx1ZS5zdWJzdHJpbmcoMjQsIDEyKSwgMTYpOwogICAgIGlmICghZmlm
dGhWYWx1ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEyNSwxNSArMTE4LDMzIEBAIHN0ZDo6
b3B0aW9uYWw8VVVJRD4gVVVJRDo6cGFyc2UoU3RyaW5nVmlldyB2YWx1ZSkKICAgICB1aW50NjRf
dCBsb3cgPSAoKmZvdXJ0aFZhbHVlIDw8IDQ4KSB8ICpmaWZ0aFZhbHVlOwogCiAgICAgYXV0byBy
ZXN1bHQgPSAoc3RhdGljX2Nhc3Q8VUludDEyOD4oaGlnaCkgPDwgNjQpIHwgbG93OwotICAgIGlm
IChyZXN1bHQgPT0gZW1wdHlWYWx1ZSB8fCByZXN1bHQgPT0gZGVsZXRlZFZhbHVlKQorICAgIGlm
IChyZXN1bHQgPT0gZGVsZXRlZFZhbHVlKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgcmV0
dXJuIFVVSUQocmVzdWx0KTsKIH0KIAotU3RyaW5nIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KQorc3RkOjpvcHRpb25hbDxVVUlEPiBVVUlEOjpwYXJzZVZlcnNpb240KFN0cmluZ1ZpZXcgdmFs
dWUpCit7CisgICAgYXV0byB1dWlkID0gcGFyc2UodmFsdWUpOworICAgIGlmICghdXVpZCkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIC8vIFZlcnNpb24gNCBVVUlEcyBoYXZlIHRoZSBmb3Jt
IHh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCB3aXRoIGhleGFkZWNpbWFsIGRp
Z2l0cyBmb3IgeCBhbmQgb25lIG9mIDgsIDksIEEsIG9yIEIgZm9yIHkuCisgICAgYXV0byBoaWdo
ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHV1aWQtPm1fZGF0YSA+PiA2NCk7CisgICAgaWYgKCho
aWdoICYgMHhmMDAwKSAhPSAweDQwMCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8g
bG93ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHV1aWQtPm1fZGF0YSAmIDB4ZmZmZmZmZmZmZmZm
ZmZmZik7CisgICAgaWYgKChsb3cgPj4gNjIpICE9IDIpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICByZXR1cm4gdXVpZDsKK30KKworU3RyaW5nIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygp
CiB7Ci0gICAgcmV0dXJuIFVVSUQ6OmNyZWF0ZSgpLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIFVV
SUQ6OmNyZWF0ZVZlcnNpb240KCkudG9TdHJpbmcoKTsKIH0KIAogU3RyaW5nIGJvb3RTZXNzaW9u
VVVJRFN0cmluZygpCkBAIC0xNTcsNyArMTY4LDcgQEAgU3RyaW5nIGJvb3RTZXNzaW9uVVVJRFN0
cmluZygpCiAKIGJvb2wgaXNWZXJzaW9uNFVVSUQoU3RyaW5nVmlldyB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4gISFVVUlEOjpwYXJzZSh2YWx1ZSk7CisgICAgcmV0dXJuICEhVVVJRDo6cGFyc2VWZXJz
aW9uNCh2YWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvVVVJRC5oIGIvU291cmNlL1dURi93dGYvVVVJRC5oCmluZGV4IDhkNjQ1MTcxYjZj
NjMxNGE4ODZiM2UxMTQwNGVlMDlhMDUxY2M2MzYuLmZlMzNjMGY0YzJmM2EzMmIyNDc3ZWNjNWE3
YzQzOGQ0YWQ5YmY5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9VVUlELmgKQEAgLTQ0LDEyICs0NCwxMyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBVSW50MTI4IGVtcHR5VmFsdWUgPSAwOwogICAgIHN0YXRpYyBjb25zdGV4
cHIgVUludDEyOCBkZWxldGVkVmFsdWUgPSAxOwogCi0gICAgc3RhdGljIFVVSUQgY3JlYXRlKCkK
KyAgICBzdGF0aWMgVVVJRCBjcmVhdGVWZXJzaW9uNCgpCiAgICAgewogICAgICAgICByZXR1cm4g
VVVJRCB7IH07CiAgICAgfQogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFVVSUQ+IHBhcnNlKFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFVVSUQ+IHBhcnNlKFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
c3RkOjpvcHRpb25hbDxVVUlEPiBwYXJzZVZlcnNpb240KFN0cmluZ1ZpZXcpOwogCiAgICAgZXhw
bGljaXQgVVVJRChTcGFuPGNvbnN0IHVpbnQ4X3QsIDE2PiBzcGFuKQogICAgIHsKQEAgLTE0MSw3
ICsxNDIsNyBAQCBzdGQ6Om9wdGlvbmFsPFVVSUQ+IFVVSUQ6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogLy8gZGF0YSBzb3VyY2UuIFZlcnNpb24gNCBVVUlEcyBoYXZlIHRoZSBmb3JtIHh4eHh4
eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCB3aXRoIGhleGFkZWNpbWFsIGRpZ2l0cyBm
b3IgeCBhbmQgb25lIG9mIDgsCiAvLyA5LCBBLCBvciBCIGZvciB5LgogCi1XVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7CiAKIFdURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgYm9vdFNlc3Npb25VVUlEU3RyaW5nKCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBpc1ZlcnNpb240VVVJRChTdHJpbmdWaWV3KTsKQEAgLTE0OSw1ICsxNTAsNSBAQCBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZlcnNpb240VVVJRChTdHJpbmdWaWV3KTsKIH0KIAogdXNp
bmcgV1RGOjpVVUlEOwotdXNpbmcgV1RGOjpjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nOwordXNp
bmcgV1RGOjpjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmc7CiB1c2luZyBXVEY6OmJvb3RTZXNzaW9u
VVVJRFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUds
aWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggMWQx
NTQ5NGM1YzMxOTc2NmMyMzE5NDA5MjM5OGY1N2ZhY2Y3MGY4Yy4uYTYzODZlNjVhMjMzNjc2MmY0
ZDQ0Zjc0MGNhMzZlMDMzZWM3YzhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9G
aWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xp
Yi5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3Qg
U3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBjb25zdAogICAgIC8v
IEZJWE1FOiBTdWZmaXggaXMgbm90IHN1cHBvcnRlZCwgYnV0IE9LIGZvciBub3cgc2luY2UgdGhl
IGNvZGUgdXNpbmcgaXQgaXMgbWFjT1MtcG9ydC1vbmx5LgogICAgIEFTU0VSVF9VTlVTRUQoc3Vm
Zml4LCBzdWZmaXguaXNFbXB0eSgpKTsKIAotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1l
KGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBj
cmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVu
YW1lLmdldCgpLCBudWxscHRyKSk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1Jl
ZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRoLmdldCgpKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Np
b25DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwCmluZGV4IDNjOWNlNjU4NjYxYjRlYjNi
NDdlMjlmMzkzODUzNWNmOTc2MTczN2QuLmRiNjJmZTA1NjAwZmI1NGRiMTc3NjQ4MjEzYTMzMmFj
MjE3YmVmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5
LmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgVk0mIGNsZWFyS2V5Vk0oKQogCiBDRE1TZXNz
aW9uQ2xlYXJLZXk6OkNETVNlc3Npb25DbGVhcktleShMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBj
bGllbnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3Nlc3Npb25JZChjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCkpCisgICAgLCBtX3Nlc3Npb25JZChjcmVhdGVWZXJzaW9uNFVV
SURTdHJpbmcoKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IGViYjVhZGNhOTEyODMxM2NiOTM4NDExMGQ5
NTI1MTU0NDEwZGFmYmQuLjAxNmQxNzE3Mjg3NWQyYTUzOWM2YzJhMjk1ZThkNTJjNDY4NTE4NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lz
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5
c3RlbS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVmlydHVhbFBh
dGgoU3RyaW5nVmlldyB2aXJ0dWFsUGF0aCkKIH0KIAogRE9NRmlsZVN5c3RlbTo6RE9NRmlsZVN5
c3RlbShSZWY8RmlsZT4mJiBmaWxlKQotICAgIDogbV9uYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURT
dHJpbmcoKSkKKyAgICA6IG1fbmFtZShjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSkKICAgICAs
IG1fZmlsZShXVEZNb3ZlKGZpbGUpKQogICAgICwgbV9yb290UGF0aChGaWxlU3lzdGVtOjpwYXJl
bnRQYXRoKG1fZmlsZS0+cGF0aCgpKSkKICAgICAsIG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3Jl
YXRlKCJET01GaWxlU3lzdGVtIHdvcmsgcXVldWUiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKaW5kZXggZTVk
ZTg0OTRmMzUwNDUzNTk0YjJmMmU4OGMzZGRhMzNmYTlhZjcwNC4uZjE3YTY1MmRiYzBjOTAwNzBk
N2Y4ODYzNTNjMzRiNTg4YTdlY2VkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKQEAgLTIwNSw3ICsyMDUs
NyBAQCBzdGF0aWMgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhIGNyZWF0ZUFwcEhpZ2hsaWdodFJhbmdl
RGF0YShjb25zdCBTdGF0aWNSYW5nZSYgcmFuZwogewogICAgIGF1dG8gdGV4dCA9IHBsYWluVGV4
dChyYW5nZSk7CiAgICAgdGV4dC50cnVuY2F0ZSh0ZXh0UHJldmlld0xlbmd0aCk7Ci0gICAgYXV0
byBpZGVudGlmaWVyID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgIGF1dG8gaWRl
bnRpZmllciA9IGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwogCiAgICAgcmV0dXJuIHsKICAg
ICAgICAgaWRlbnRpZmllciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCmluZGV4IGVlZjc5ZGJmNTA0N2E3
ODVhYjgyNDllM2NiZTExZGUyMWM5OTczMzEuLjkyZTA4N2QwZWI3ODZmY2Y2ODMyZGUyY2FlZTM2
MTFjMWVhM2UyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250
cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcApAQCAtMzQ2LDcgKzM0Niw3IEBAIHZv
aWQgTWVkaWFDb250cm9sc0hvc3Q6OnNldENvbnRyb2xzRGVwZW5kT25QYWdlU2NhbGVGYWN0b3Io
Ym9vbCB2YWx1ZSkKIAogU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpnZW5lcmF0ZVVVSUQoKQog
ewotICAgIHJldHVybiBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisgICAgcmV0dXJuIGNy
ZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwogfQogCiAjaWYgRU5BQkxFKE1PREVSTl9NRURJQV9D
T05UUk9MUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLmNwcAppbmRleCAxYWU1MGU5ZDRiZWIwOTZlMGIwMjE2OTU0ZGZmNDY2NmM1MjIz
YTVhLi44ZTAyYmM4OWQ3ZTM2NTgyNzVhNTc2MDA3OThiZjk1ZDI3ODczN2EwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIGlubGluZSBNZWRpYURldmljZXM6Ok1lZGlhRGV2aWNlcyhEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCiAgICAgLCBtX3Nj
aGVkdWxlZEV2ZW50VGltZXIoKnRoaXMsICZNZWRpYURldmljZXM6OnNjaGVkdWxlZEV2ZW50VGlt
ZXJGaXJlZCkKICAgICAsIG1fZXZlbnROYW1lcyhldmVudE5hbWVzKCkpCi0gICAgLCBtX2dyb3Vw
SWRIYXNoU2FsdChjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCisgICAgLCBtX2dyb3VwSWRI
YXNoU2FsdChjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSkKIHsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFEZXZpY2VzOjpEaXNwbGF5Q2FwdHVyZVN1cmZhY2VU
eXBlOjpNb25pdG9yKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpNb25pdG9yKSwgIk1lZGlhRGV2aWNlczo6RGlz
cGxheUNhcHR1cmVTdXJmYWNlVHlwZTo6TW9uaXRvciBpcyBub3QgZXF1YWwgdG8gUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6Ok1vbml0b3IgYXMgZXhwZWN0
ZWQiKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oTWVkaWFEZXZpY2Vz
OjpEaXNwbGF5Q2FwdHVyZVN1cmZhY2VUeXBlOjpXaW5kb3cpID09IHN0YXRpY19jYXN0PHNpemVf
dD4oUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6OldpbmRv
dyksICJNZWRpYURldmljZXM6OkRpc3BsYXlDYXB0dXJlU3VyZmFjZVR5cGU6OldpbmRvdyBpcyBu
b3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6OldpbmRv
dyBhcyBleHBlY3RlZCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcAppbmRleCBmZGIyZGNhMGY0NmRhYjE4N2Nk
ODFlMjkxMDk5YjRjY2M0NmJiYTUxLi4yZGZjN2Y4ZGVlMWU4NjFhNjAzYzgwMTVkNTBjMzBhMDky
ZmY4YjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcApAQCAtMzAxLDcgKzMwMSw3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxQYXltZW50UmVxdWVzdD4+IFBheW1lbnRSZXF1ZXN0OjpjcmVhdGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBWZWN0CiAgICAgICAgIHJldHVybiBjYW5DcmVhdGVTZXNzaW9uLnJlbGVhc2VFeGNl
cHRpb24oKTsKIAogICAgIGlmIChkZXRhaWxzLmlkLmlzTnVsbCgpKQotICAgICAgICBkZXRhaWxz
LmlkID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgICAgICBkZXRhaWxzLmlkID0g
Y3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7CiAKICAgICBpZiAobWV0aG9kRGF0YS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJBdCBsZWFzdCBvbmUg
cGF5bWVudCBtZXRob2QgaXMgcmVxdWlyZWQuIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggNTk0Zjc4
NmI1ZWY1OTQzZGI5OTdkOTBmNmRhZTE3Mzg5NDAwNTVjOC4uY2E0MTdjOWFiM2Q1YTBhZjljMGJk
MWE0MmQ1YTg1ODQ2NDA1MzdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMzA4LDcgKzMwOCw3IEBAIFN0
cmluZyBEYXRhYmFzZVRyYWNrZXI6Om9yaWdpblBhdGgoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBvcmlnaW4pIGNvbnN0CiAKIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVEYXRhYmFzZUZpbGVOYW1l
KCkKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCks
ICIuZGIiKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmco
KSwgIi5kYiIpOwogfQogCiBTdHJpbmcgRGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFi
YXNlTm9Mb2NrKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGJvb2wgY3JlYXRlSWZOb3RFeGlzdHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlBdHNwaS5jcHAKaW5kZXggOWNl
Y2FkMjFiYTA3ODA3NDNhMTJhYzEzNGEwOTg5NTc0NDRhMWM5NC4uMjZhZTMyYTYwODYxOWIzYWQ5
ZDA3OWE3YjQ3Y2NmYTA1OWJkNTg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmNwcApAQCAtMjg0LDcgKzI4
NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUF0c3BpOjpyZWdpc3RlclJvb3QoQWNjZXNzaWJpbGl0
eVJvb3RBdHNwaSYgcm9vdE9iamVjdCwgVmVjdG9yCiAgICAgfQogCiAgICAgZW5zdXJlQ2FjaGUo
KTsKLSAgICBTdHJpbmcgcGF0aCA9IG1ha2VTdHJpbmcoIi9vcmcvYTExeS93ZWJraXQvYWNjZXNz
aWJsZS8iLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkucmVwbGFjZSgnLScsICdfJykpOwor
ICAgIFN0cmluZyBwYXRoID0gbWFrZVN0cmluZygiL29yZy9hMTF5L3dlYmtpdC9hY2Nlc3NpYmxl
LyIsIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpLnJlcGxhY2UoJy0nLCAnXycpKTsKICAgICBW
ZWN0b3I8dW5zaWduZWQsIDM+IHJlZ2lzdGVyZWRPYmplY3RzOwogICAgIHJlZ2lzdGVyZWRPYmpl
Y3RzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW50ZXJmYWNlcy5zaXplKCkpOwogICAgIGZvciAo
Y29uc3QgYXV0byYgaW50ZXJmYWNlIDogaW50ZXJmYWNlcykgewpAQCAtMzE5LDcgKzMxOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5QXRzcGk6OnJlZ2lzdGVyT2JqZWN0KEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaSYgYXRzcGlPYmplY3QsCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBlbnN1
cmVDYWNoZSgpOwotICAgIFN0cmluZyBwYXRoID0gbWFrZVN0cmluZygiL29yZy9hMTF5L2F0c3Bp
L2FjY2Vzc2libGUvIiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnJlcGxhY2UoJy0nLCAn
XycpKTsKKyAgICBTdHJpbmcgcGF0aCA9IG1ha2VTdHJpbmcoIi9vcmcvYTExeS9hdHNwaS9hY2Nl
c3NpYmxlLyIsIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpLnJlcGxhY2UoJy0nLCAnXycpKTsK
ICAgICBWZWN0b3I8dW5zaWduZWQsIDIwPiByZWdpc3RlcmVkT2JqZWN0czsKICAgICByZWdpc3Rl
cmVkT2JqZWN0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGludGVyZmFjZXMuc2l6ZSgpKTsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGludGVyZmFjZSA6IGludGVyZmFjZXMpIHsKQEAgLTM1OCw3ICsz
NTgsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eUF0c3BpOjpyZWdpc3Rlckh5cGVybGluayhBY2Nl
c3NpYmlsaXR5T2JqZWN0QXRzcGkmIGF0c3BpT2JqZQogICAgIGlmICghbV9jb25uZWN0aW9uKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgU3RyaW5nIHBhdGggPSBtYWtlU3RyaW5nKCIvb3Jn
L2ExMXkvYXRzcGkvYWNjZXNzaWJsZS8iLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkucmVw
bGFjZSgnLScsICdfJykpOworICAgIFN0cmluZyBwYXRoID0gbWFrZVN0cmluZygiL29yZy9hMTF5
L2F0c3BpL2FjY2Vzc2libGUvIiwgY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkucmVwbGFjZSgn
LScsICdfJykpOwogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMT4gcmVnaXN0ZXJlZE9iamVjdHM7CiAg
ICAgcmVnaXN0ZXJlZE9iamVjdHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbnRlcmZhY2VzLnNp
emUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBpbnRlcmZhY2UgOiBpbnRlcmZhY2VzKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAppbmRleCA2NGRiNTIx
M2M3NjEwOGY0MTkwNGJkN2JlNmQ1MmQ0NTVjZTcyY2U3Li40ZjMwMGYzNmYxNTMyYzczMmJlZmE0
ZmI5MzJiNGUxZjVjODEzOWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
S2V5ZnJhbWVFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFt
ZUVmZmVjdC5jcHAKQEAgLTU5MSw3ICs1OTEsNyBAQCB2b2lkIEtleWZyYW1lRWZmZWN0Ojpjb3B5
UHJvcGVydGllc0Zyb21Tb3VyY2UoUmVmPEtleWZyYW1lRWZmZWN0PiYmIHNvdXJjZSkKICAgICBz
ZXRJdGVyYXRpb25EdXJhdGlvbihzb3VyY2UtPml0ZXJhdGlvbkR1cmF0aW9uKCkpOwogICAgIHVw
ZGF0ZVN0YXRpY1RpbWluZ1Byb3BlcnRpZXMoKTsKIAotICAgIEtleWZyYW1lTGlzdCBrZXlmcmFt
ZUxpc3QoImtleWZyYW1lLWVmZmVjdC0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKTsK
KyAgICBLZXlmcmFtZUxpc3Qga2V5ZnJhbWVMaXN0KCJrZXlmcmFtZS1lZmZlY3QtIiArIGNyZWF0
ZVZlcnNpb240VVVJRFN0cmluZygpKTsKICAgICBrZXlmcmFtZUxpc3QuY29weUtleWZyYW1lcyhz
b3VyY2UtPm1fYmxlbmRpbmdLZXlmcmFtZXMpOwogICAgIHNldEJsZW5kaW5nS2V5ZnJhbWVzKGtl
eWZyYW1lTGlzdCk7CiB9CkBAIC05MDYsNyArOTA2LDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6
dXBkYXRlQmxlbmRpbmdLZXlmcmFtZXMoUmVuZGVyU3R5bGUmIGVsZW1lbnRTdHlsZSwgY29uc3Qg
U3QKICAgICBpZiAoIW1fYmxlbmRpbmdLZXlmcmFtZXMuaXNFbXB0eSgpIHx8ICFtX3RhcmdldCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgS2V5ZnJhbWVMaXN0IGtleWZyYW1lTGlzdCgia2V5ZnJh
bWUtZWZmZWN0LSIgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOworICAgIEtleWZyYW1l
TGlzdCBrZXlmcmFtZUxpc3QoImtleWZyYW1lLWVmZmVjdC0iICsgY3JlYXRlVmVyc2lvbjRVVUlE
U3RyaW5nKCkpOwogICAgIGF1dG8mIHN0eWxlUmVzb2x2ZXIgPSBtX3RhcmdldC0+c3R5bGVSZXNv
bHZlcigpOwogCiAgICAgZm9yIChhdXRvJiBrZXlmcmFtZSA6IG1fcGFyc2VkS2V5ZnJhbWVzKSB7
CkBAIC0xMTU3LDcgKzExNTcsNyBAQCB2b2lkIEtleWZyYW1lRWZmZWN0Ojpjb21wdXRlQ1NTVHJh
bnNpdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKGNvbnN0IFJlbmRlclN0eWxlKiBvbAogICAgIGlmICht
X3RhcmdldCkKICAgICAgICAgU3R5bGU6OmxvYWRQZW5kaW5nUmVzb3VyY2VzKCp0b1N0eWxlLCAq
ZG9jdW1lbnQoKSwgbV90YXJnZXQuZ2V0KCkpOwogCi0gICAgS2V5ZnJhbWVMaXN0IGtleWZyYW1l
TGlzdCgia2V5ZnJhbWUtZWZmZWN0LSIgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOwor
ICAgIEtleWZyYW1lTGlzdCBrZXlmcmFtZUxpc3QoImtleWZyYW1lLWVmZmVjdC0iICsgY3JlYXRl
VmVyc2lvbjRVVUlEU3RyaW5nKCkpOwogICAgIGtleWZyYW1lTGlzdC5hZGRQcm9wZXJ0eShwcm9w
ZXJ0eSk7CiAKICAgICBLZXlmcmFtZVZhbHVlIGZyb21LZXlmcmFtZVZhbHVlKDAsIFJlbmRlclN0
eWxlOjpjbG9uZVB0cigqb2xkU3R5bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDZj
MDA0YjA0NzcyYWQyNzFmYjMzMDljNTFjNGM3MTA2MGMxODNiNmIuLjFiNDAzZjhkNmQwYzJiZjA2
MjJmODRjMWRkMDE4ZTIxM2E0MThkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjI1
MSw3ICs2MjUxLDcgQEAgU3RyaW5nIERvY3VtZW50OjpvcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVi
b2FyZCgpIGNvbnN0CiAgICAgaWYgKG9yaWdpbiAhPSAibnVsbCIpCiAgICAgICAgIHJldHVybiBv
cmlnaW47CiAgICAgaWYgKCFtX3VuaXF1ZUlkZW50aWZpZXIpCi0gICAgICAgIG1fdW5pcXVlSWRl
bnRpZmllciA9ICJudWxsOiIgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisgICAgICAg
IG1fdW5pcXVlSWRlbnRpZmllciA9ICJudWxsOiIgKyBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmco
KTsKICAgICByZXR1cm4gbV91bmlxdWVJZGVudGlmaWVyOwogfQogCkBAIC04NjMxLDcgKzg2MzEs
NyBAQCB2b2lkIERvY3VtZW50OjpkaWRJbnNlcnRBdHRhY2htZW50RWxlbWVudChIVE1MQXR0YWNo
bWVudEVsZW1lbnQmIGF0dGFjaG1lbnQpCiAgICAgYm9vbCBwcmV2aW91c0lkZW50aWZpZXJJc05v
dFVuaXF1ZSA9ICFwcmV2aW91c0lkZW50aWZpZXIuaXNFbXB0eSgpICYmIG1fYXR0YWNobWVudElk
ZW50aWZpZXJUb0VsZW1lbnRNYXAuY29udGFpbnMocHJldmlvdXNJZGVudGlmaWVyKTsKICAgICBp
ZiAoaWRlbnRpZmllci5pc0VtcHR5KCkgfHwgcHJldmlvdXNJZGVudGlmaWVySXNOb3RVbmlxdWUp
IHsKICAgICAgICAgcHJldmlvdXNJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKLSAgICAgICAgaWRl
bnRpZmllciA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICAgICAgaWRlbnRpZmll
ciA9IGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwogICAgICAgICBhdHRhY2htZW50LnNldFVu
aXF1ZUlkZW50aWZpZXIoaWRlbnRpZmllcik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9i
VVJMLmNwcAppbmRleCA1NWM1ODEwMTU5MWNlNDE1Yzc1Y2EwODA5MzRlYTMxZTE3MmQ1NDUyLi4z
ZTFlZjNmYjM2MmJhZmM0MzA2MWUxOGNjMGMxM2VkOTVkZTY5ZmFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYlVSTC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBCbG9iVVJMOjppc1NlY3VyZUJs
b2JVUkwoY29uc3QgVVJMJiB1cmwpCiBVUkwgQmxvYlVSTDo6Y3JlYXRlQmxvYlVSTChjb25zdCBT
dHJpbmcmIG9yaWdpblN0cmluZykKIHsKICAgICBBU1NFUlQoIW9yaWdpblN0cmluZy5pc0VtcHR5
KCkpOwotICAgIFN0cmluZyB1cmxTdHJpbmcgPSAiYmxvYjoiICsgb3JpZ2luU3RyaW5nICsgJy8n
ICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgIFN0cmluZyB1cmxTdHJpbmcgPSAi
YmxvYjoiICsgb3JpZ2luU3RyaW5nICsgJy8nICsgY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7
CiAgICAgcmV0dXJuIFVSTCh7IH0sIHVybFN0cmluZyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCBlOGJjNWMzY2FjNGU1YzY3Nzcy
NzkyZTYxZjA5MzUxOTY1M2FiNmYyLi41YTJkYjVmOGY3OGMzMjYwZjJkNGQwNTlhODY3MTJiODQ5
ODg1MzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJlbW92
ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgdHlwZSwgQ29udGFpbmVyTm9kZSYKIGNvbnN0IFN0
cmluZyYgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjplbnN1cmVVbmlxdWVJZGVudGlmaWVyKCkKIHsK
ICAgICBpZiAobV91bmlxdWVJZGVudGlmaWVyLmlzRW1wdHkoKSkKLSAgICAgICAgbV91bmlxdWVJ
ZGVudGlmaWVyID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgICAgICBtX3VuaXF1
ZUlkZW50aWZpZXIgPSBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKTsKICAgICByZXR1cm4gbV91
bmlxdWVJZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCA4Y2YwNWNjZTE4
ODAxMjhkZTU5YmU3MGE5OTgzNmY1YTc0NWI2ZDcxLi42YjllN2UyOTVmZDZmYjIwZmYwZDc0ZmRj
ZjIzZmM2NjAwYTYwMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTEyNzcsOSArMTI3Nyw5
IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUlu
RGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCCiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIAog
ICAgIGRvIHsKLSAgICAgICAgcGF0aCA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkgKyBmaWxlRXh0ZW5zaW9uOworICAgICAgICBwYXRo
ID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5n
KCkpICsgZmlsZUV4dGVuc2lvbjsKICAgICAgICAgLy8gR3VhcmQgYWdhaW5zdCB0aGUgYWJvdmUg
ZnVuY3Rpb24gYmVpbmcgY2FsbGVkIG9uIGEgcGxhdGZvcm0gd2hpY2ggZG9lcyBub3QgaW1wbGVt
ZW50Ci0gICAgICAgIC8vIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS4KKyAgICAgICAgLy8g
Y3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkuCiAgICAgICAgIEFTU0VSVCghcGF0aC5pc0VtcHR5
KCkpOwogICAgICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NyeXB0by5jcHAKaW5kZXggYWY3YWMyZjY5OGE0M2I3YWY4ZmU2NThkN2Vh
MGUyMTQ3ZTNmZTU0Yy4uOWE1M2U1ZmNkZWMyNjg4ZDQ5NDg1ZjY4MjYzNmY5NDA0NTViODcyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcApAQCAtNzEsNyArNzEsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBDcnlwdG86OmdldFJhbmRvbVZhbHVlcyhBcnJheUJ1ZmZlclZpZXcmIGFycmF5KQogCiBTdHJp
bmcgQ3J5cHRvOjpyYW5kb21VVUlEKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZygpOworICAgIHJldHVybiBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKTsK
IH0KIAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgKaW5kZXggNDYx
NTBkYmRjMmEzZmZkNmM4NzAyZDcyNTk3ZWY4YTc1YTQ3NTEwNC4uMzA5ZWIxNDhiZmUzMzNkMzQx
NmNjZmMzMTRlYzFjNzhiZGJmNmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oCkBAIC0zNCw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHRlbXBsYXRlIDw+CiBjbGFzcyBQcm9jZXNzUXVh
bGlmaWVkPFVVSUQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUHJvY2Vzc1F1YWxpZmllZCBnZW5l
cmF0ZSgpIHsgcmV0dXJuIHsgVVVJRDo6Y3JlYXRlKCksIFByb2Nlc3M6OmlkZW50aWZpZXIoKSB9
OyB9CisgICAgc3RhdGljIFByb2Nlc3NRdWFsaWZpZWQgZ2VuZXJhdGUoKSB7IHJldHVybiB7IFVV
SUQ6OmNyZWF0ZVZlcnNpb240KCksIFByb2Nlc3M6OmlkZW50aWZpZXIoKSB9OyB9CiAKICAgICBQ
cm9jZXNzUXVhbGlmaWVkKCkKICAgICAgICAgOiBtX29iamVjdChVVUlEOjplbXB0eVZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcApp
bmRleCA3YTg5OWVjNjZjNTdiN2Q5MjYyZGI3MzI2OGRiNGY0OTdiMWNkZGQxLi5kZjRmMTgzNWY1
NmIzZDZkYmYxNGI1ZDRiNDhlZGE4ZDg3Yjk5NDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcApAQCAtNDcsNyArNDcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIENETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Q0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGJiBwYXJlbnQsIExl
Z2FjeUNETVNlc3Npb25DbGllbnQqKQogICAgIDogbV9wYXJlbnQocGFyZW50KQotICAgICwgbV9z
ZXNzaW9uSWQoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQorICAgICwgbV9zZXNzaW9uSWQo
Y3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZv
dW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZGFkY2RmYzU1
NTZlZjg4MDg5MjJlOTg5MzkxZjcxODdjMTQ5ZjYxNS4uNjA3NmZhOGNjMDkyZGU1Y2QxMWMwYWQ3
ZWIzYTBiOGIwNTg4NmEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0KQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OkNETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgTGVnYWN5
Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQogICAgIDogbV9wYXJlbnQoKnBhcmVudCkKICAgICAs
IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fc2Vzc2lvbklkKGNyZWF0ZUNhbm9uaWNhbFVVSURT
dHJpbmcoKSkKKyAgICAsIG1fc2Vzc2lvbklkKGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFt
U2Vzc2lvbi5tbQppbmRleCBmMzVjYWE4ZTZhZmY1N2QzMDg4YWU3YzBkM2Y5MjhmZjc2Yjk2ZWUx
Li44MjhkYWJhNzY3YTBkNTAzZTY2YTRjN2E5NjIxMDRkZTI2NjI0OGE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uQVZTdHJlYW1TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0KQEAgLTIz
OCw3ICsyMzgsNyBAQCBib29sIENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnVwZGF0ZShVaW50
OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dAogICAgICAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgICAgICBpZiAoIVtwcm90ZWN0ZWRTb3VyY2VC
dWZmZXItPnN0cmVhbURhdGFQYXJzZXIoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNv
bnRlbnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXIpXSkKLSAgICAgICAgICAgIG1fc2Vzc2lv
bklkID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgICAgICAgICAgbV9zZXNzaW9u
SWQgPSBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKTsKIAogICAgICAgICBpZiAoZXJyb3IpIHsK
ICAgICAgICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnVwZGF0
ZSglcCkgLSBlcnJvcjolQCIsIHRoaXMsIFtlcnJvciBkZXNjcmlwdGlvbl0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAKaW5kZXggZmQ5ZmFmZThmMTY5N2U3OWYxZmE5MTQ1NmI0YmVhOGVhNWQ4MjUyNS4uYTE3NmMx
MzdmYjI2ZDFhNWQ2NTA3NDFjNDMzMTcwOWU5MDk1ZDI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0z
MTA1LDcgKzMxMDUsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQW5pbWF0aW9ucygp
CiAgICAgICAgIGNhQW5pbWF0aW9uR3JvdXAtPnNldER1cmF0aW9uKGluZmluaXRlRHVyYXRpb24p
OwogICAgICAgICBjYUFuaW1hdGlvbkdyb3VwLT5zZXRBbmltYXRpb25zKGFuaW1hdGlvbnMpOwog
Ci0gICAgICAgIGF1dG8gYW5pbWF0aW9uR3JvdXAgPSBMYXllclByb3BlcnR5QW5pbWF0aW9uKFdU
Rk1vdmUoY2FBbmltYXRpb25Hcm91cCksICJncm91cC0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0
cmluZygpLCBwcm9wZXJ0eSwgMCwgMCwgMF9zKTsKKyAgICAgICAgYXV0byBhbmltYXRpb25Hcm91
cCA9IExheWVyUHJvcGVydHlBbmltYXRpb24oV1RGTW92ZShjYUFuaW1hdGlvbkdyb3VwKSwgImdy
b3VwLSIgKyBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSwgcHJvcGVydHksIDAsIDAsIDBfcyk7
CiAgICAgICAgIGFuaW1hdGlvbkdyb3VwLm1fYmVnaW5UaW1lID0gYW5pbWF0aW9uR3JvdXBCZWdp
blRpbWU7CiAKICAgICAgICAgc2V0QW5pbWF0aW9uT25MYXllcihhbmltYXRpb25Hcm91cCk7CkBA
IC0zMTUzLDcgKzMxNTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQW5pbWF0aW9u
cygpCiAgICAgICAgIGNhQW5pbWF0aW9uLT5zZXRGcm9tVmFsdWUobWF0cml4KTsKICAgICAgICAg
Y2FBbmltYXRpb24tPnNldFRvVmFsdWUobWF0cml4KTsKIAotICAgICAgICBhdXRvIGFuaW1hdGlv
biA9IExheWVyUHJvcGVydHlBbmltYXRpb24oV1RGTW92ZShjYUFuaW1hdGlvbiksICJiYXNlLXRy
YW5zZm9ybS0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBwcm9wZXJ0eSwgMCwgMCwg
MF9zKTsKKyAgICAgICAgYXV0byBhbmltYXRpb24gPSBMYXllclByb3BlcnR5QW5pbWF0aW9uKFdU
Rk1vdmUoY2FBbmltYXRpb24pLCAiYmFzZS10cmFuc2Zvcm0tIiArIGNyZWF0ZVZlcnNpb240VVVJ
RFN0cmluZygpLCBwcm9wZXJ0eSwgMCwgMCwgMF9zKTsKICAgICAgICAgaWYgKGRlbGF5KQogICAg
ICAgICAgICAgYW5pbWF0aW9uLm1fYmVnaW5UaW1lID0gY3VycmVudFRpbWUgLSBhbmltYXRpb25H
cm91cEJlZ2luVGltZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaAppbmRleCA1NjI3Nzg4ZGM0NzIxMGEzMDg0
NTlmODk5NGQ5MTUwNTk4YWEzOWMwLi43ZjJlYjQ1ZWYxMTg2ZTBmNzUxZTczMTEwODU5ZmMxMTJh
ZDY2MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtUHJpdmF0ZT4gY3JlYXRlKFJlZjxjb25zdCBMb2dnZXI+
JiYsIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmKTsKICAgICBzdGF0aWMgUmVmPE1lZGlhU3Ry
ZWFtUHJpdmF0ZT4gY3JlYXRlKFJlZjxjb25zdCBMb2dnZXI+JiYsIFJlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlPiYmIGF1ZGlvU291cmNlLCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiB2
aWRlb1NvdXJjZSk7Ci0gICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbVByaXZhdGU+IGNyZWF0ZShS
ZWY8Y29uc3QgTG9nZ2VyPiYmIGxvZ2dlciwgY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGVW
ZWN0b3ImIHRyYWNrcywgU3RyaW5nJiYgaWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW1Qcml2YXRlKFdURk1vdmUobG9nZ2Vy
KSwgdHJhY2tzLCBXVEZNb3ZlKGlkKSkpOyB9CisgICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbVBy
aXZhdGU+IGNyZWF0ZShSZWY8Y29uc3QgTG9nZ2VyPiYmIGxvZ2dlciwgY29uc3QgTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGVWZWN0b3ImIHRyYWNrcywgU3RyaW5nJiYgaWQgPSBjcmVhdGVWZXJzaW9u
NFVVSURTdHJpbmcoKSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVN0cmVhbVByaXZhdGUo
V1RGTW92ZShsb2dnZXIpLCB0cmFja3MsIFdURk1vdmUoaWQpKSk7IH0KIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgfk1lZGlhU3RyZWFtUHJpdmF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZS5jcHAKaW5kZXggNDQyOTUzYTFhM2YzNDZjZjdmNDE5OWM3MWUyNzVhOTNlMjUxNWUw
Ny4uZWMzMmJhODVjY2Y4NDcyNTM4MzUyNjgxODU5YzQwNzdlYmQ0OTkyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlLmNwcApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6
OmNyZWF0ZShSZWY8Y29uc3QgTG9nZ2VyPiYmIGxvZ2dlciwgUmVmPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+JiYgc291cmNlKQogewotICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShsb2dnZXIpLCBXVEZN
b3ZlKHNvdXJjZSksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7CisgICAgcmV0dXJuIGNy
ZWF0ZShXVEZNb3ZlKGxvZ2dlciksIFdURk1vdmUoc291cmNlKSwgY3JlYXRlVmVyc2lvbjRVVUlE
U3RyaW5nKCkpOwogfQogCiBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlOjpjcmVhdGUoUmVmPGNvbnN0IExvZ2dlcj4mJiBsb2dnZXIsIFJlZjxSZWFs
dGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSwgU3RyaW5nJiYgaWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwCmluZGV4IDFkZDFlNWZlNWIxNDExZWM5MTNlYTcwNDA0OWIzNmMwMjZiYjIwYzEuLjNkODY4
MjYxMTliYmRhZDk5N2MyMGMyYTU3ZTRhZDhlYTRjZjY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwCkBAIC01NSw3ICs1NSw3IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlJlYWx0aW1lTWVkaWFT
b3VyY2UoVHlwZSB0eXBlLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBkZXZpCiAgICAgLCBtX25h
bWUoV1RGTW92ZShuYW1lKSkKIHsKICAgICBpZiAobV9wZXJzaXN0ZW50SUQuaXNFbXB0eSgpKQot
ICAgICAgICBtX3BlcnNpc3RlbnRJRCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAg
ICAgICAgbV9wZXJzaXN0ZW50SUQgPSBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKTsKIAogICAg
IG1faGFzaGVkSUQgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5oYXNo
U3RyaW5nV2l0aFNhbHQobV9wZXJzaXN0ZW50SUQsIG1faWRIYXNoU2FsdCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1h
bmFnZXIuY3BwCmluZGV4IDY5YTUyOGZhNjJmNmJlOTA2NWI0MjE1OTM0NDhhMDQxNzRhYzhjYTku
LjQxYzhhNDgzMDM4NDZkNGRiYWUzYjM5Nzg0NmI1Mjk3MmU2YTAyMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJEaXNw
bGF5Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFn
ZXIuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpjb21wdXRlQ2FwdHVyZURldmljZXMoQ29tcGxldGlvbkhhbmRsCiB7CiAgICAg
bV9kZXZpY2VzLmNsZWFyKCk7CiAKLSAgICBDYXB0dXJlRGV2aWNlIHNjcmVlbkNhcHR1cmVEZXZp
Y2UoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpTY3JlZW4sIG1ha2VTdHJpbmcoIkNhcHR1cmUgU2NyZWVuIikpOworICAgIENhcHR1cmVEZXZp
Y2Ugc2NyZWVuQ2FwdHVyZURldmljZShjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSwgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBtYWtlU3RyaW5nKCJDYXB0dXJlIFNjcmVlbiIp
KTsKICAgICBzY3JlZW5DYXB0dXJlRGV2aWNlLnNldEVuYWJsZWQodHJ1ZSk7CiAgICAgbV9kZXZp
Y2VzLmFwcGVuZChXVEZNb3ZlKHNjcmVlbkNhcHR1cmVEZXZpY2UpKTsKICAgICBjYWxsYmFjaygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAK
aW5kZXggZjM3MjkzYjk1NTY1ZDZiZWRiYmU5ZjA2OWY0ZjliYmFlM2Q4MjE4YS4uZWQxYTA4Mjg4
MDJmN2EzOWZhZGY0NzRlNjVlNTE2OGE2MTQ3OGE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCkBAIC01NzQsNyArNTc0LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0TWVkaWFTdHJlYW1TcmNQb3N0U3RyZWFtQ29sbGVjdGlvbihXZWJLaXRN
ZWRpYVN0cmVhbVNyYyogc2VsZikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
dXBzdHJlYW1JZCA9IHByaXYtPnN0cmVhbSA/IHByaXYtPnN0cmVhbS0+aWQoKSA6IGNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICBhdXRvIHVwc3RyZWFtSWQgPSBwcml2LT5zdHJlYW0g
PyBwcml2LT5zdHJlYW0tPmlkKCkgOiBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKTsKICAgICBw
cml2LT5zdHJlYW1Db2xsZWN0aW9uID0gYWRvcHRHUmVmKGdzdF9zdHJlYW1fY29sbGVjdGlvbl9u
ZXcodXBzdHJlYW1JZC5hc2NpaSgpLmRhdGEoKSkpOwogICAgIGZvciAoYXV0byYgdHJhY2sgOiBw
cml2LT50cmFja3MpIHsKICAgICAgICAgaWYgKCF0cmFjay0+aXNBY3RpdmUoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0
dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1Jl
cGxheUtpdENhcHR1cmVTb3VyY2UubW0KaW5kZXggNTVmNjM1YmYyY2Y4ZWE0YzFmYmVmZTFmODJh
OTM4YmI1ZWM4MzI2MC4uZTdjZGViNWM2NTM4Zjg3ZTFlNTlhZGVlMDI1NDg0ZDljMDE0ZThhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxh
eUtpdENhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UubW0KQEAgLTI0NSw3ICsyNDUsNyBAQCB2
b2lkIFJlcGxheUtpdENhcHR1cmVTb3VyY2U6OnN0YXJ0Q2FwdHVyZVdhdGNoZG9nVGltZXIoKQog
CiBzdGF0aWMgU3RyaW5nIHNjcmVlbkRldmljZVVVSUQoKQogewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IHNjcmVlbklEID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNjcmVlbklEID0gY3JlYXRlVmVyc2lv
bjRVVUlEU3RyaW5nKCk7CiAgICAgcmV0dXJuIHNjcmVlbklEOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggODVjZTI0MmRjNjUzY2ZjOWYzMDc0NzVlYzVkYzYxZWI2
MDNhNjUzNC4uZjlkMDhkMGFkYzQ0YWUzY2Y1ZmE5ZDI1N2UyYTEyODU5YTA0MTRiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjc2Nyw3ICsyNzY3LDcgQEAgU3RyaW5n
IEludGVybmFsczo6ZG9jdW1lbnRJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkg
Y29uc3QKIAogYm9vbCBJbnRlcm5hbHM6OmlzRG9jdW1lbnRBbGl2ZShjb25zdCBTdHJpbmcmIGRv
Y3VtZW50SWRlbnRpZmllcikgY29uc3QKIHsKLSAgICBhdXRvIHV1aWQgPSBVVUlEOjpwYXJzZShk
b2N1bWVudElkZW50aWZpZXIpOworICAgIGF1dG8gdXVpZCA9IFVVSUQ6OnBhcnNlVmVyc2lvbjQo
ZG9jdW1lbnRJZGVudGlmaWVyKTsKICAgICBBU1NFUlQodXVpZCk7CiAgICAgcmV0dXJuIHV1aWQg
PyBEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuY29udGFpbnMoeyAqdXVpZCwgUHJvY2Vzczo6
aWRlbnRpZmllcigpIH0pIDogZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwCmluZGV4IDg0ZmEyOWNlMWYzMDBmZTI5MGIwNDE0NjQ4ZjBmNzI5MGE3Y2Jl
YmQuLjIwNTI3OTU1MjgzNmUwNDRkZDdjMmE4ZWEzMjE2ODJkOTE3OTM4YzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0zMTcsNyArMzE3LDcgQEAgdm9p
ZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNl
bnNlVHlwZSwgY29uc3QgQXRvbVMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFN0cmlu
ZyBzZXNzaW9uSUQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisgICAgU3RyaW5nIHNl
c3Npb25JRCA9IGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwogICAgIGZhY3RvcnktPmFkZEtl
eXNUb1Nlc3Npb25XaXRoSUQoc2Vzc2lvbklELCBXVEZNb3ZlKGtleUlEcy52YWx1ZSgpKSk7CiAK
ICAgICBDU3RyaW5nIGxpY2Vuc2UgeyAibGljZW5zZSIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwIGIvU291cmNlL1dlYkRyaXZlci9nbGli
L1Nlc3Npb25Ib3N0R2xpYi5jcHAKaW5kZXggZTYyNmExN2E0MWU1ZTQzMmEwNzllYTRjZTQ3MGU2
ZjlhZGY1YzU5My4uOWU0NjAyNzE4ZmU5NzkxMzFlYzk4MGJmZDFlNmU0ZjQ4ZjdjN2E5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAKQEAgLTMwNiw3ICszMDYs
NyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpzdGFydEF1dG9tYXRpb25TZXNzaW9uKEZ1bmN0aW9uPHZv
aWQgKGJvb2wsIHN0ZDo6b3B0aW9uYWw8U3RyaQogICAgIEFTU0VSVChtX3NvY2tldENvbm5lY3Rp
b24pOwogICAgIEFTU0VSVCghbV9zdGFydFNlc3Npb25Db21wbGV0aW9uSGFuZGxlcik7CiAgICAg
bV9zdGFydFNlc3Npb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpOwotICAgIG1fc2Vzc2lvbklEID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAg
IG1fc2Vzc2lvbklEID0gY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7CiAgICAgR1ZhcmlhbnRC
dWlsZGVyIGJ1aWxkZXI7CiAgICAgbV9zb2NrZXRDb25uZWN0aW9uLT5zZW5kTWVzc2FnZSgiU3Rh
cnRBdXRvbWF0aW9uU2Vzc2lvbiIsIGdfdmFyaWFudF9uZXcoIihzYXtzdn0pIiwgbV9zZXNzaW9u
SUQudXRmOCgpLmRhdGEoKSwgYnVpbGRTZXNzaW9uQ2FwYWJpbGl0aWVzKCZidWlsZGVyKSA/ICZi
dWlsZGVyIDogbnVsbHB0cikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9zb2Nr
ZXQvU2Vzc2lvbkhvc3RTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvU2Vzc2lv
bkhvc3RTb2NrZXQuY3BwCmluZGV4IDY4OTJiM2YzODBjZWI3MjU1Mzk1NzcxOTI1NmI1YTA5ZDk5
ZTlmOGIuLmU0ZGU4Y2QxNTA3OWM1NjA5NzYyMzc0YzlhM2Q3MjUxOWQ3NDRlZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9TZXNzaW9uSG9zdFNvY2tldC5jcHAKQEAgLTE1MCw3ICsx
NTAsNyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpzdGFydEF1dG9tYXRpb25TZXNzaW9uKEZ1bmN0aW9u
PHZvaWQgKGJvb2wsIHN0ZDo6b3B0aW9uYWw8U3RyaQogewogICAgIEFTU0VSVCghbV9zdGFydFNl
c3Npb25Db21wbGV0aW9uSGFuZGxlcik7CiAgICAgbV9zdGFydFNlc3Npb25Db21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwotICAgIG1fc2Vzc2lvbklEID0gY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgIG1fc2Vzc2lvbklEID0gY3JlYXRlVmVyc2lv
bjRVVUlEU3RyaW5nKCk7CiAKICAgICBhdXRvIHNlbmRNZXNzYWdlRXZlbnQgPSBKU09OOjpPYmpl
Y3Q6OmNyZWF0ZSgpOwogICAgIHNlbmRNZXNzYWdlRXZlbnQtPnNldFN0cmluZygiZXZlbnQiX3Ms
ICJTdGFydEF1dG9tYXRpb25TZXNzaW9uIl9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMjZiZDEwNzE5OTRiM2Y4MjdiZDdkNTk3
NDUzOWFmMTQ5YzE2MjJjYS4uMjQ1YzQ3MjYyMjY5OTE3NjJmNDI4ZDU0OTEwMzFkNjA4ZjE1ODU5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKQEAgLTQ3Myw3ICs0NzMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCBzaG91bGRVc2VUZXN0aQogICAgIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBz
dG9yYWdlU2Vzc2lvbjsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmllciA9
IG1ha2VTdHJpbmcoaWRlbnRpZmllckJhc2UsICIuUHJpdmF0ZUJyb3dzaW5nLiIsIGNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IG1ha2VTdHJpbmcoaWRlbnRpZmllckJhc2UsICIuUHJp
dmF0ZUJyb3dzaW5nLiIsIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpKS5jcmVhdGVDRlN0cmlu
ZygpOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgc3RvcmFnZVNl
c3Npb24gPSBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKTsK
ICAgICBlbHNlIGlmIChzZXNzaW9uSUQgIT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4
N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYi4uM2NlY2M1YzU5ZDI3N2U0MzhjN2FmZGUyOGQwNGFjZmZl
NDZiNzU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAg
c3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZVZhcnlJbmZvcm1hdGlvbihSZWNvcmRJbmZvcm1hdGlv
biYgcmVjb3JkSW5mb3JtYXRpb24sIGMKIAogUmVjb3JkSW5mb3JtYXRpb24gQ2FjaGU6OnRvUmVj
b3JkSW5mb3JtYXRpb24oY29uc3QgUmVjb3JkJiByZWNvcmQpCiB7Ci0gICAgS2V5IGtleSB7ICJy
ZWNvcmQiX3MsIG1fdW5pcXVlTmFtZSwgeyB9LCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCks
IG1fY2FjaGVzLnNhbHQoKSB9OworICAgIEtleSBrZXkgeyAicmVjb3JkIl9zLCBtX3VuaXF1ZU5h
bWUsIHsgfSwgY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCksIG1fY2FjaGVzLnNhbHQoKSB9Owog
ICAgIFJlY29yZEluZm9ybWF0aW9uIHJlY29yZEluZm9ybWF0aW9uIHsgV1RGTW92ZShrZXkpLCBN
b25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpLCBy
ZWNvcmQuaWRlbnRpZmllciwgMCAsIHJlY29yZC5yZXNwb25zZUJvZHlTaXplLCByZWNvcmQucmVx
dWVzdC51cmwoKSwgZmFsc2UsIHsgfSB9OwogCiAgICAgdXBkYXRlVmFyeUluZm9ybWF0aW9uKHJl
Y29yZEluZm9ybWF0aW9uLCByZWNvcmQucmVxdWVzdCwgcmVjb3JkLnJlc3BvbnNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGVzLmNwcAppbmRleCBlNWVjMDRlMjkzODFlNzQxZjQ0ZDljOTQ3MGJm
ZjJiZjJiODViYmFjLi5jOTIyZGYzYjIyMGM0ZTBjNWM4MTVlMWExMjUwYWFkYWMwMDk4ZTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBD
YWNoZXM6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYm
IGNhbGxiYWNrKQogICAgIG1ha2VEaXJ0eSgpOwogCiAgICAgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyID0gbV9lbmdpbmUtPm5leHRDYWNoZUlkZW50aWZpZXIoKTsKLSAgICBtX2NhY2hlcy5hcHBl
bmQoQ2FjaGUgeyAqdGhpcywgY2FjaGVJZGVudGlmaWVyLCBDYWNoZTo6U3RhdGU6Ok9wZW4sIFN0
cmluZyB7IG5hbWUgfSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpIH0pOworICAgIG1fY2Fj
aGVzLmFwcGVuZChDYWNoZSB7ICp0aGlzLCBjYWNoZUlkZW50aWZpZXIsIENhY2hlOjpTdGF0ZTo6
T3BlbiwgU3RyaW5nIHsgbmFtZSB9LCBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSB9KTsKIAog
ICAgIHdyaXRlQ2FjaGVzVG9EaXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBjYWNo
ZUlkZW50aWZpZXJdKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgewogICAg
ICAgICBjYWxsYmFjayhDYWNoZUlkZW50aWZpZXJPcGVyYXRpb25SZXN1bHQgeyBjYWNoZUlkZW50
aWZpZXIsICEhZXJyb3IgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCmluZGV4IDMyODJjYjQ5MDFk
NTk3MDY5MjVmMWJkZjIzMzExMjhhMDM1YjM3MmIuLjRlMDU5NjM3MjIyYjljMWQ4MDdkZTZkMGJm
OTY1ZmU3NjM1ODQ4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCkBAIC0xMDYsNyArMTA2LDcg
QEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZUNhbGxiYWNrKEROU1NlcnZpY2VSZWYsIERO
U1JlY29yZFJlZiByZWNvcmQsIEROU1NlcnYKIAogdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpy
ZWdpc3Rlck1ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZpZXIgcmVxdWVzdElkZW50aWZpZXIs
IFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MpCiB7Ci0gICAgYXV0byBuYW1lID0gbWFrZVN0
cmluZyhjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksICIubG9jYWwiKTsKKyAgICBhdXRvIG5h
bWUgPSBtYWtlU3RyaW5nKGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpLCAiLmxvY2FsIik7CiAK
ICAgICBETlNTZXJ2aWNlUmVmIHNlcnZpY2U7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fc2Vydmlj
ZXMuZmluZChkb2N1bWVudElkZW50aWZpZXIpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgTmV0
d29ya01ETlNSZWdpc3Rlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlCiB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05h
bWUoTUROU1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGlwQWRkcmVzcykKIHsKICAgICBNRE5TX1JFTEVBU0VfTE9HKCJyZWdpc3Rlck1ETlNO
YW1lIG5vdCBpbXBsZW1lbnRlZCIpOwotICAgIGF1dG8gbmFtZSA9IG1ha2VTdHJpbmcoY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpLCAiLmxvY2FsIik7CisgICAgYXV0byBuYW1lID0gbWFrZVN0
cmluZyhjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSwgIi5sb2NhbCIpOwogCiAgICAgbV9jb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlz
aGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBuYW1lLCBXZWJDb3Jl
OjpNRE5TUmVnaXN0ZXJFcnJvcjo6Tm90SW1wbGVtZW50ZWQgfSwgMCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBjYWNhZWI0MWVi
MjY1NTlhYzU5MDUxYjQxMmQ4ZTFhMjBkYjMxMTQ0Li41NWMzZTcyMTFiZTdjOGY1MTcxNDIyODE2
M2IzNTdiZDRjOThiYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTI3NDAsNyArMjc0MCw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRB
bmRBZGRIaWdobGlnaHQoVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+JiBidWZmZXJz
LCBOCiB7CiAgICAgVEhST1dfSUZfU1VTUEVOREVEOwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCi0gICAgYXV0byBpZGVudGlmaWVyID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
OworICAgIGF1dG8gaWRlbnRpZmllciA9IGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwogICAg
IGF1dG8gYXR0YWNobWVudCA9IEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlKGlkZW50aWZpZXIsICpf
cGFnZSk7CiAgICAgYXR0YWNobWVudC0+c2V0RmlsZVdyYXBwZXJBbmRVcGRhdGVDb250ZW50VHlw
ZShmaWxlV3JhcHBlciwgY29udGVudFR5cGUpOwogICAgIF9wYWdlLT5pbnNlcnRBdHRhY2htZW50
KGF0dGFjaG1lbnQuY29weVJlZigpLCBbY2FwdHVyZWRIYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA1YjY2MjYxNzQ5
YjhkMDZkZDVkNDk0Zjg4MGUzNDlhMzZlNWJlYmYzLi40NmQ0Y2NkZDE0YWE4ZTU5ZDY4NTMzYjAx
YmU3OTlmMjE0NWQxZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMTkwLDcgKzE5MCw3
IEBAIFN0cmluZyBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aGFuZGxlRm9yV2ViUGFnZVByb3h5KGNv
bnN0IFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByCiAgICAgaWYgKGl0ZXIgIT0gbV93ZWJQYWdlSGFu
ZGxlTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7CiAKLSAgICBTdHJpbmcg
aGFuZGxlID0gInBhZ2UtIiArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS5jb252ZXJ0VG9B
U0NJSVVwcGVyY2FzZSgpOworICAgIFN0cmluZyBoYW5kbGUgPSAicGFnZS0iICsgY3JlYXRlVmVy
c2lvbjRVVUlEU3RyaW5nKCkuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKTsKIAogICAgIGF1dG8g
Zmlyc3RBZGRSZXN1bHQgPSBtX3dlYlBhZ2VIYW5kbGVNYXAuYWRkKHdlYlBhZ2VQcm94eS5pZGVu
dGlmaWVyKCksIGhhbmRsZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZmlyc3RBZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7CkBAIC0yMzksNyArMjM5LDcgQEAgU3RyaW5nIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpoYW5kbGVGb3JXZWJGcmFtZUlEKHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPgogICAg
IGlmIChpdGVyICE9IG1fd2ViRnJhbWVIYW5kbGVNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBp
dGVyLT52YWx1ZTsKIAotICAgIFN0cmluZyBoYW5kbGUgPSAiZnJhbWUtIiArIGNyZWF0ZUNhbm9u
aWNhbFVVSURTdHJpbmcoKS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpOworICAgIFN0cmluZyBo
YW5kbGUgPSAiZnJhbWUtIiArIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpLmNvbnZlcnRUb0FT
Q0lJVXBwZXJjYXNlKCk7CiAKICAgICBhdXRvIGZpcnN0QWRkUmVzdWx0ID0gbV93ZWJGcmFtZUhh
bmRsZU1hcC5hZGQoKmZyYW1lSUQsIGhhbmRsZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZmlyc3RB
ZGRSZXN1bHQuaXNOZXdFbnRyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRleCAyZjhi
YTAyZGEyODA3MGM2ODgyZDdhNTMzYTE4ZjYyMTUxOTdiNmFmLi45NzRmNzVhMDA0ZDU4MWE1ZjZk
Zjc0YWFhYzlkMzAyZTIzOTdkNjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTMw
Myw3ICszMDMsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVt
UHJldmlld0FjdGlvbigpCiAKIHZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OnRyaWdnZXJT
eXN0ZW1QcmV2aWV3QWN0aW9uV2l0aFRhcmdldEZvclRlc3RpbmcodWludDY0X3QgZWxlbWVudElE
LCBOU1N0cmluZyogZG9jdW1lbnRJRCwgdWludDY0X3QgcGFnZUlEKQogewotICAgIGF1dG8gdXVp
ZCA9IFVVSUQ6OnBhcnNlKFN0cmluZyhkb2N1bWVudElEKSk7CisgICAgYXV0byB1dWlkID0gVVVJ
RDo6cGFyc2VWZXJzaW9uNChTdHJpbmcoZG9jdW1lbnRJRCkpOwogICAgIEFTU0VSVCh1dWlkKTsK
ICAgICBpZiAoIXV1aWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbQppbmRleCAzNTY0MDMwOTQ2ZTUxMjQ4Mjk3ZDNjMjky
ZTBiZTE0ODk5MzI3NzFkLi40MzMzNGI4NjE1NmIyMGEyNGI3YTA1ZTAzZjhjODEyMzA5YmFiNTNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tCkBA
IC0zMjYsNyArMzI2LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kRmlsZXNBc1NoYXJlYWJsZVVSTHMo
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYmIHNoYXJlRGF0YUFycmEKIAogKyAoTlNVUkwgKilj
cmVhdGVSYW5kb21TaGFyaW5nRGlyZWN0b3J5Rm9yRmlsZTooTlNVUkwgKil0ZW1wb3JhcnlEaXJl
Y3RvcnkKIHsKLSAgICBOU1N0cmluZyAqcmFuZG9tRGlyZWN0b3J5ID0gY3JlYXRlQ2Fub25pY2Fs
VVVJRFN0cmluZygpOworICAgIE5TU3RyaW5nICpyYW5kb21EaXJlY3RvcnkgPSBjcmVhdGVWZXJz
aW9uNFVVSURTdHJpbmcoKTsKICAgICBpZiAoIVtyYW5kb21EaXJlY3RvcnkgbGVuZ3RoXSB8fCAh
dGVtcG9yYXJ5RGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIE5TVVJMICpkYXRh
UGF0aCA9IFt0ZW1wb3JhcnlEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OnJh
bmRvbURpcmVjdG9yeSBpc0RpcmVjdG9yeTpZRVNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5LmNwcAppbmRleCBlOTY0MWY3YmEzOWFlZjljZjRlZDdhYjExNjBmOGUwZGNjZTE2
ODg4Li43YzcyNTgxMDQwYTc5MjU4ODZjMDkxODZkYTMwYmFhNDQ2MGFkNWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVHZW9sb2Nh
dGlvblBlcm1pc3Npb25EZQogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJ
T04pCi0gICAgU3RyaW5nIGF1dGhvcml6YXRpb25Ub2tlbiA9IGFsbG93ZWQgPyBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCkgOiBTdHJpbmcoKTsKKyAgICBTdHJpbmcgYXV0aG9yaXphdGlvblRv
a2VuID0gYWxsb3dlZCA/IGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpIDogU3RyaW5nKCk7CiAg
ICAgaWYgKCFhdXRob3JpemF0aW9uVG9rZW4uaXNOdWxsKCkpCiAgICAgICAgIG1fdmFsaWRBdXRo
b3JpemF0aW9uVG9rZW5zLmFkZChhdXRob3JpemF0aW9uVG9rZW4pOwogICAgIG1fcGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlR2VvbG9jYXRpb25QZXJtaXNzaW9uRGVjaXNp
b24oZ2VvbG9jYXRpb25JRCwgYXV0aG9yaXphdGlvblRva2VuKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRo
ZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggNDkx
ZTJjYWQwM2Q4NDE0MjAxYWI3NDY3ZGY2ZjVjZDk5OWRmZTNlOC4uZDY2MTVhN2Q4OTU4NGIyMzM3
NDEzODJjMDE5YjI5MzlhZDI4NGFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1
YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtNDIsNyArNDIsNyBAQCBTdHJp
bmcgVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpjcmVhdGVBdXRoZW50aWNhdG9yKGNvbnN0
IFZpcnR1YWxBdXRoZW50aWNhdAogewogICAgIGlmIChjb25maWcudHJhbnNwb3J0ICE9IFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OkludGVybmFsKQogICAgICAgICBVTklNUExFTUVO
VEVEKCk7Ci0gICAgYXV0byBpZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICBh
dXRvIGlkID0gY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7CiAgICAgbV92aXJ0dWFsQXV0aGVu
dGljYXRvcnMuc2V0KGlkLCBtYWtlVW5pcXVlUmVmPFZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmln
dXJhdGlvbj4oY29uZmlnKSk7CiAKICAgICByZXR1cm4gaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAppbmRleCAxMTA4YWFlNzc4YTg0
ZGNjMTc2NDRiYzlkOTM5NWU0MzZkOTFkYmY1Li5jMjg3ZDBhYTI5MDRkYzg0NDk4ZjE3YzViMjJl
NDUyMTZlZDc3NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5
bGFuZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXls
YW5kQ29tcG9zaXRvci5jcHAKQEAgLTUwMSw3ICs1MDEsNyBAQCBXYXlsYW5kQ29tcG9zaXRvcjo6
V2F5bGFuZENvbXBvc2l0b3IoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU3RyaW5n
IGRpc3BsYXlOYW1lID0gIndlYmtpdGd0ay13YXlsYW5kLWNvbXBvc2l0b3ItIiArIGNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWUgPSAid2Via2l0Z3Rr
LXdheWxhbmQtY29tcG9zaXRvci0iICsgY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7CiAgICAg
aWYgKHdsX2Rpc3BsYXlfYWRkX3NvY2tldChkaXNwbGF5LmdldCgpLCBkaXNwbGF5TmFtZS51dGY4
KCkuZGF0YSgpKSA9PSAtMSkgewogICAgICAgICBXVEZMb2dBbHdheXMoIk5lc3RlZCBXYXlsYW5k
IGNvbXBvc2l0b3IgY291bGQgbm90IGNyZWF0ZSBkaXNwbGF5IHNvY2tldCIpOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb2RlbFZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb2RlbFZpZXcubW0KaW5kZXgg
N2U5MzcwZmEzMzY1NzYwZGEwNWVhYTI3ZTUyZWM3ZjBiZDIyY2YwMC4uM2I1NDk4MTM3MjZhZjU5
ZTU0YjBjZTcyM2UwYmQ3NmIyZjYwYTg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLTW9kZWxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS01vZGVsVmlldy5tbQpAQCAtMTIwLDcgKzEyMCw3IEBAIFNPRlRfTElOS19DTEFTUyhBc3Nl
dFZpZXdlciwgQVNWSW5saW5lUHJldmlldyk7CiAgICAgICAgIHJldHVybiBOTzsKICAgICB9CiAK
LSAgICBhdXRvIGZpbGVOYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpKSArICIudXNkeiI7CisgICAgYXV0byBmaWxlTmFtZSA9IEZp
bGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpKSAr
ICIudXNkeiI7CiAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChwYXRoVG9EaXJlY3RvcnksIGZpbGVOYW1lKTsKICAgICBhdXRvIGZpbGUgPSBG
aWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpX
cml0ZSk7CiAgICAgaWYgKGZpbGUgPD0gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5j
cHAKaW5kZXggYWZkY2UzZTdjYzAyZDI4Njc0MDliOTY3ZWZhNWUwZmI5ZmYxNmYwOC4uNTliZWU5
MTBiNzkzMTYzZTVhYmMwMTdiODgzODNjMzgxNDc2Y2RiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBldmFs
dWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0
UgogCiBzdGF0aWMgSlNWYWx1ZVJlZiBjcmVhdGVVVUlEKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKIHsKLSAgICByZXR1cm4gdG9KU1ZhbHVlKGNvbnRleHQsIGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpKTsKKyAgICByZXR1cm4gdG9KU1Zh
bHVlKGNvbnRleHQsIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpLmNvbnZlcnRUb0FTQ0lJVXBw
ZXJjYXNlKCkpOwogfQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBldmFsdWF0ZUphdmFTY3JpcHRDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFj
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBhNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4ZTVlNzU5
MTM3ZGNmNjZkLi45ODQyMjdhMWU2NWU4ODVhZWQ5NWJmYjI2YTVlODM3NjdmN2VlZDRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2Rl
bC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwMCw3ICsxMDAs
NyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKFdl
YkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICB9CiAKICAgICAvLyBXZSBuZWVkIHRvIHN1
cHBvcnQgLnJlYWxpdHkgZmlsZXMgYXMgd2VsbCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNzU2OC4KLSAgICBhdXRvIGZpbGVOYW1lID0gRmlsZVN5c3RlbTo6ZW5j
b2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKSArICIudXNkeiI7Cisg
ICAgYXV0byBmaWxlTmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGNyZWF0ZVZl
cnNpb240VVVJRFN0cmluZygpKSArICIudXNkeiI7CiAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9EaXJlY3RvcnksIGZpbGVOYW1l
KTsKICAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0aCwgRmlsZVN5
c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAgaWYgKGZpbGUgPD0gMCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGE0
NWM2OTIzODc3NGY2NDRlZDgxOTdmMWNmMGMxMDk2YTJlNTY1ODQuLmNkMTNmM2QwYzQ4Y2M4NDAz
Mjk5NTkzOWZmZmY1YjQ4OTBmNTQyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMjU5NSw3ICsyNTk1LDcgQEAgdm9pZCBQ
REZQbHVnaW46Om9wZW5XaXRoUHJldmlldyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYsIEZyYW1lSW5mb0QKICAgICBGcmFtZUluZm9EYXRhIGZyYW1lSW5mbzsKICAgICBpZiAo
bV9mcmFtZSkKICAgICAgICAgZnJhbWVJbmZvID0gbV9mcmFtZS0+aW5mbygpOwotICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1fc3VnZ2VzdGVkRmlsZW5hbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgSVBD
OjogRGF0YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVz
KSwgZGF0YS5sZW5ndGggfSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihtX3N1Z2dlc3RlZEZpbGVuYW1lLCBXVEZNb3ZlKGZyYW1lSW5mbyksIElQ
Qzo6IERhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRl
cyksIGRhdGEubGVuZ3RoIH0sIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpKTsKIH0KIAogI2Vs
c2UgLy8gRU5BQkxFKFVJX1BST0NFU1NfUERGX0hVRCkKQEAgLTI2MjYsNyArMjYyNiw3IEBAIHZv
aWQgUERGUGx1Z2luOjpvcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKCkKIAogICAgICAgICBOU0Rh
dGEgKmRhdGEgPSBsaXZlRGF0YSgpOwogCi0gICAgICAgIG1fdGVtcG9yYXJ5UERGVVVJRCA9IGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICAgICAgbV90ZW1wb3JhcnlQREZVVUlEID0g
Y3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7CiAgICAgICAgIEFTU0VSVChtX3RlbXBvcmFyeVBE
RlVVSUQpOwogCiAgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+c2F2ZVBERlRvVGVtcG9yYXJ5Rm9s
ZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihtX3N1Z2dlc3RlZEZpbGVuYW1lLCBtX2Zy
YW1lLT5pbmZvKCksIHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4oW2RhdGEgYnl0
ZXNdKSwgW2RhdGEgbGVuZ3RoXSwgbV90ZW1wb3JhcnlQREZVVUlEKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFw
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uTWFwLmNwcAppbmRleCA0ZDBiMjZkMmNkZTNiZmMwMzM2NmVjOTkxNTAzZGZiZTVhYTIy
YTU2Li5jZDk3OTEwMzE4NmY3OTY2ZTZhN2MzZWZmOWE3YmEyY2MwODc4OTcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXAuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uTWFwOjplbnN1cmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgU3RyCiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byBpZGVudGlmaWVyID0gbWFrZVN0cmluZyhpZGVudGlmaWVyQmFzZSwgIi5Qcml2
YXRlQnJvd3NpbmcuIiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKS5jcmVhdGVDRlN0cmlu
ZygpOworICAgIGF1dG8gaWRlbnRpZmllciA9IG1ha2VTdHJpbmcoaWRlbnRpZmllckJhc2UsICIu
UHJpdmF0ZUJyb3dzaW5nLiIsIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpKS5jcmVhdGVDRlN0
cmluZygpOwogCiAgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IHN0b3JhZ2VT
ZXNzaW9uOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmM2FhYjAzN2M1OTI1ZTM4Yzc0
MDA2ODVhMDliOGJmNzk0NWZlMWVmLi40YzllZTZmZDlmZjhmYmU1ODM1Y2Y4YjMxYTBjNDBlZWUy
OGE5ZjVhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDEtMjAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIENsYXJpZnkgdGhhdCBzb21lIFVVSUQgcm91dGluZXMgYXJlIGRl
ZGljYXRlZCB0byBVVUlEIHY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzU0MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VVSUQuY3BwOgorICAgICAgICAo
cGFyc2VBbmRTdHJpbmdpZnlVVUlEKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW06CisgICAgICAgICh3
YWl0VW50aWxOZXR3b3JrUHJvY2Vzc0lzUmVzcG9uc2l2ZSk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpzYWx0Rm9yT3JpZ2luKToKKwogMjAyMi0wMS0xOCAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjY0MzUy
KTogTWFpbCBjb21wb3NlIGJvZHkgZmllbGQgZG9lcyBub3QgYXZvaWQgdGhlIGtleWJvYXJkIHdo
ZW4gc2Nyb2xsaW5nIGFmdGVyIGZvY3VzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9VVUlELmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VVSUQu
Y3BwCmluZGV4IDYzN2M1NDY5MGRmNmI5ZTQ3NjFjYjFkYWQyODU2ZjgzMTgwMWJmYzkuLmI2YTBj
Y2YzOGQ1ZTUzZDRjYzczNjcxZjcwZDQ5OTNiMmExNWVlYjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VVSUQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1VVSUQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIFRFU1QoV1RGLCBCb290U2Vzc2lv
blVVSURJZGVudGl0eSkKIAogc3RhdGljIFN0cmluZyBwYXJzZUFuZFN0cmluZ2lmeVVVSUQoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBhdXRvIHV1aWQgPSBVVUlEOjpwYXJzZSh2YWx1ZSk7
CisgICAgYXV0byB1dWlkID0gVVVJRDo6cGFyc2VWZXJzaW9uNCh2YWx1ZSk7CiAgICAgaWYgKCF1
dWlkKQogICAgICAgICByZXR1cm4geyB9OwogICAgIHJldHVybiB1dWlkLT50b1N0cmluZygpOwpA
QCAtNDQsMjIgKzQ0LDIyIEBAIFRFU1QoV1RGLCBUZXN0VVVJRFBhcnNpbmcpCiB7CiAgICAgLy8g
eHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4CiAKLSAgICBFWFBFQ1RfRkFMU0Uo
ISFVVUlEOjpwYXJzZSgiMTIzNDU2NzgtOWFiYy01ZGUwLTg5QUItMDEyMzQ1Njc4OWFiIikpOwot
ICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlKCIxMjM0NTY3OC05YWJjLTRkZWEtNzlBQi0w
MTIzNDU2Nzg5YWIiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjEyMzQ1Njc4
LTlhYmMtNGRlMC03ZmZmLTAxMjM0NTY3ODlhYiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoISFVVUlE
OjpwYXJzZSgiMTIzNDU2NzgtOWFiYy00ZGUwLWMwMDAwLTAxMjM0NTY3ODlhYiIpKTsKKyAgICBF
WFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZVZlcnNpb240KCIxMjM0NTY3OC05YWJjLTVkZTAtODlB
Qi0wMTIzNDU2Nzg5YWIiKSk7CisgICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2VWZXJzaW9u
NCgiMTIzNDU2NzgtOWFiYy00ZGVhLTc5QUItMDEyMzQ1Njc4OWFiIikpOworICAgIEVYUEVDVF9G
QUxTRSghIVVVSUQ6OnBhcnNlVmVyc2lvbjQoIjEyMzQ1Njc4LTlhYmMtNGRlMC03ZmZmLTAxMjM0
NTY3ODlhYiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZVZlcnNpb240KCIxMjM0
NTY3OC05YWJjLTRkZTAtYzAwMDAtMDEyMzQ1Njc4OWFiIikpOwogCi0gICAgRVhQRUNUX0ZBTFNF
KCEhVVVJRDo6cGFyc2UoIitlZjk0NGMxLTVjYjgtNDhhYS1BZDEyLUM1ZjgyM2YwMDVjMyIpKTsK
LSAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZSgiNmVmOTQ0YzEtK2NiOC00OGFhLUFkMTIt
QzVmODIzZjAwNWMzIikpOwotICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlKCI2ZWY5NDRj
MS01Y2I4LSs4YWEtQWQxMi1DNWY4MjNmMDA1YzMiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKCEhVVVJ
RDo6cGFyc2UoIjZlZjk0NGMxLTVjYjgtNDhhYS0rZDEyLUM1ZjgyM2YwMDVjMyIpKTsKLSAgICBF
WFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZSgiNmVmOTQ0YzEtNWNiOC00OGFhLUFkMTItKzVmODIz
ZjAwNWMzIikpOworICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlVmVyc2lvbjQoIitlZjk0
NGMxLTVjYjgtNDhhYS1BZDEyLUM1ZjgyM2YwMDVjMyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFV
VUlEOjpwYXJzZVZlcnNpb240KCI2ZWY5NDRjMS0rY2I4LTQ4YWEtQWQxMi1DNWY4MjNmMDA1YzMi
KSk7CisgICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2VWZXJzaW9uNCgiNmVmOTQ0YzEtNWNi
OC0rOGFhLUFkMTItQzVmODIzZjAwNWMzIikpOworICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBh
cnNlVmVyc2lvbjQoIjZlZjk0NGMxLTVjYjgtNDhhYS0rZDEyLUM1ZjgyM2YwMDVjMyIpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZVZlcnNpb240KCI2ZWY5NDRjMS01Y2I4LTQ4YWEt
QWQxMi0rNWY4MjNmMDA1YzMiKSk7CiAKLSAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZSgi
MDAwMDAwMDAtMDAwMC00MDAwLTgwMDAtMDAwMDAwMDAwMDAwIikpOwotICAgIEVYUEVDVF9GQUxT
RSghIVVVSUQ6OnBhcnNlKCIwMDAwMDAwMC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMDAwMDEiKSk7
CisgICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2VWZXJzaW9uNCgiMDAwMDAwMDAtMDAwMC00
MDAwLTgwMDAtMDAwMDAwMDAwMDAwIikpOworICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNl
VmVyc2lvbjQoIjAwMDAwMDAwLTAwMDAtNDAwMC04MDAwLTAwMDAwMDAwMDAwMSIpKTsKIAogICAg
IGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgMTAwOyArK2NwdHIpIHsKLSAgICAgICAgYXV0
byBjcmVhdGVkVVVJRCA9IFVVSUQ6OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGNyZWF0ZWRVVUlE
ID0gVVVJRDo6Y3JlYXRlVmVyc2lvbjQoKTsKICAgICAgICAgYXV0byBjcmVhdGVkU3RyaW5nID0g
Y3JlYXRlZFVVSUQudG9TdHJpbmcoKTsKICAgICAgICAgRVhQRUNUX0VRKGNyZWF0ZWRTdHJpbmcu
bGVuZ3RoKCksIDM2dSk7CiAgICAgICAgIEVYUEVDVF9FUShjcmVhdGVkU3RyaW5nWzE0XSwgJzQn
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0
d29ya1Byb2Nlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05l
dHdvcmtQcm9jZXNzLm1tCmluZGV4IGEyMGU3MmNkYjMxNWYyYzk5ODMwNzFhNDkwMmQ3Mzg2NWU3
ZTE4ZWEuLmIxMWM2OWUyMzU0Y2FmNDRjZGRjMDBlMWUzMTkyY2U0Zjg2MzI4YmQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3Mu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJv
Y2Vzcy5tbQpAQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyB2b2lkIHdhaXRVbnRpbE5ldHdvcmtQ
cm9jZXNzSXNSZXNwb25zaXZlKFdLV2ViVmlldyAqd2ViVmlldzEsIFdLV2ViVmlldyAqCiAgICAg
Ly8gd2UgZG9uJ3Qgd2FudCB0aGUgdGVzdCB0byBnbyBvbiB3aXRoIHRoZSBXZWJQcm9jZXNzZXMg
dXNpbmcgc3RhbGUgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9ucywgd2UgdXNlIHRoZSBmb2xsb3dp
bmcKICAgICAvLyB0cmljayB0byB3YWl0IHVudGlsIGJvdGggV2ViUHJvY2Vzc2VzIGFyZSBhYmxl
IHRvIGNvbW11bmljYXRlIHdpdGggdGhlIG5ldyBOZXR3b3JrUHJvY2VzczoKICAgICAvLyBUaGUg
Zmlyc3QgV2ViUHJvY2VzcyB0cmllcyBzZXR0aW5nIGEgY29va2llIHVudGlsIHRoZSBzZWNvbmQg
V2VidmlldyBpcyBhYmxlIHRvIHNlZSBpdC4KLSAgICBhdXRvIGV4cGVjdGVkQ29va2llU3RyaW5n
ID0gbWFrZVN0cmluZygiVEVTVD0iLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOworICAg
IGF1dG8gZXhwZWN0ZWRDb29raWVTdHJpbmcgPSBtYWtlU3RyaW5nKCJURVNUPSIsIGNyZWF0ZVZl
cnNpb240VVVJRFN0cmluZygpKTsKICAgICBhdXRvIHNldFRlc3RDb29raWVTdHJpbmcgPSBtYWtl
U3RyaW5nKCJzZXRJbnRlcnZhbCgoKSA9PiB7IGRvY3VtZW50LmNvb2tpZT0nIiwgZXhwZWN0ZWRD
b29raWVTdHJpbmcsICInOyB9LCAxMDApOyIpOwogICAgIFt3ZWJWaWV3MSBldmFsdWF0ZUphdmFT
Y3JpcHQ6KE5TU3RyaW5nICopc2V0VGVzdENvb2tpZVN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjog
WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9UUlVFKCFl
cnJvcik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDQ0ZDA4Zjg0MDIyNjRjMjcy
MGUyMzA1NmY3YzU1NjljNGNiNDhiMjIuLjlhNjhlNmU0NTFmZWYxM2JmNTAwN2NiMmYwMzc2NTBh
YzMzZmZkYzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0zMDAsNyArMzAwLDcg
QEAgY29uc3QgU29ja2V0Q29ubmVjdGlvbjo6TWVzc2FnZUhhbmRsZXJzIEF1dG9tYXRpb25UZXN0
OjpzX21lc3NhZ2VIYW5kbGVycyA9IHsKIAogc3RhdGljIHZvaWQgdGVzdEF1dG9tYXRpb25TZXNz
aW9uUmVxdWVzdFNlc3Npb24oQXV0b21hdGlvblRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7
Ci0gICAgU3RyaW5nIHNlc3Npb25JRCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAg
ICBTdHJpbmcgc2Vzc2lvbklEID0gY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7CiAgICAgLy8g
V2ViS2l0QXV0b21hdGlvblNlc3Npb246OmF1dG9tYXRpb24tc3RhcnRlZCBpcyBuZXZlciBlbWl0
dGVkIGlmIGF1dG9tYXRpb24gaXMgbm90IGVuYWJsZWQuCiAgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRpb25fYWxsb3dlZCh0ZXN0LT5tX3dlYkNvbnRleHQu
Z2V0KCkpKTsKICAgICBhdXRvKiBzZXNzaW9uID0gdGVzdC0+cmVxdWVzdFNlc3Npb24oc2Vzc2lv
bklELnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAppbmRleCBiNWJhNGYzZWFlZTBjMWIwOWEyMWIyNWRlMDNhMGU5NzY1ZTY2MTI5Li43Nzcy
MjQwMTJlZmMzOGNjYTFjNzg4MzY3YTAzZTEyZGVhZjI0ZWMzIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMjQ4NiwxMyArMjQ4NiwxMyBAQCBTdHJpbmcg
VGVzdENvbnRyb2xsZXI6OnNhbHRGb3JPcmlnaW4oV0tGcmFtZVJlZiBmcmFtZSwgU3RyaW5nIG9y
aWdpbkhhc2gpCiAgICAgICAgICAgICByZXR1cm4gZnJhbWVTYWx0OwogCiAgICAgICAgIGlmICgh
c2V0dGluZ3MucGVyc2lzdGVudFNhbHQoKS5sZW5ndGgoKSkKLSAgICAgICAgICAgIHNldHRpbmdz
LnNldFBlcnNpc3RlbnRTYWx0KGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7CisgICAgICAg
ICAgICBzZXR0aW5ncy5zZXRQZXJzaXN0ZW50U2FsdChjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmco
KSk7CiAKICAgICAgICAgcmV0dXJuIHNldHRpbmdzLnBlcnNpc3RlbnRTYWx0KCk7CiAgICAgfQog
CiAgICAgaWYgKCFmcmFtZVNhbHQubGVuZ3RoKCkpIHsKLSAgICAgICAgZnJhbWVTYWx0ID0gY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgICAgICBmcmFtZVNhbHQgPSBjcmVhdGVWZXJz
aW9uNFVVSURTdHJpbmcoKTsKICAgICAgICAgZXBoZW1lcmFsU2FsdHMuYWRkKGZyYW1lSWRlbnRp
ZmllciwgZnJhbWVTYWx0KTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449643</attachid>
            <date>2022-01-21 00:18:57 -0800</date>
            <delta_ts>2022-02-01 23:31:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235430-20220121091855.patch</filename>
            <type>text/plain</type>
            <size>65848</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA4ZGUzODQ4Y2MxMmQ5ZDRhZjdmZjg3
NzE0NmZlOWQzOGYzMGIyYzYuLjQ4MzZlMTNhN2I0MjRlZDNjMDcwMDAyNDVhYjhjMjBhYjUxMGJl
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjItMDEtMjAgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIENsYXJpZnkgdGhhdCBzb21lIFVVSUQgcm91dGluZXMg
YXJlIGRlZGljYXRlZCB0byBVVUlEIHY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzU0MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW5hbWUgVVVJRDo6Y3JlYXRlIHRvIFVVSUQ6OmNyZWF0ZVZlcnNp
b240LgorICAgICAgICBBZGQgYSBVVUlEOjpwYXJzZVZlcnNpb240IHRoYXQgdmFsaWRhdGVzIHRo
ZSBwYXJzZWQgVVVJRCBpcyBhIHY0LgorICAgICAgICBSZW5hbWUgY3JlYXRlQ2Fub25pY2FsVVVJ
RFN0cmluZyB0byBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcgZm9yIGNvbnNpc3RlbmN5LgorCisg
ICAgICAgIFVwZGF0ZSBVVUlEIGNvbnN0cnVjdG9yIHRvIGdlbmVyYXRlIGEgVVVJRCB2NCBhcyBw
ZXIgc3BlYy4KKyAgICAgICAgVXBkYXRlIFVVSUQ6OnRvU3RyaW5nIHRvIGdlbmVyYXRlIGEgc3Ry
aW5nIHJlcHJlc2VudGF0aW9uIG9mIGFueSBVVUlELCBhbmQgbm90IHNwZWNpZmljYWxseSB0byB2
NC4KKworICAgICAgICAqIHd0Zi9JZGVudGlmaWVkLmg6CisgICAgICAgIChXVEY6OlVVSURJZGVu
dGlmaWVkOjpVVUlESWRlbnRpZmllZCk6CisgICAgICAgICogd3RmL1VSTC5jcHA6CisgICAgICAg
IChXVEY6OlVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQpOgorICAgICAgICAqIHd0Zi9VVUlE
LmNwcDoKKyAgICAgICAgKFdURjo6VVVJRDo6VVVJRCk6CisgICAgICAgIChXVEY6OlVVSUQ6OnRv
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdURjo6VVVJRDo6cGFyc2UpOgorICAgICAgICAoV1RG
OjpVVUlEOjpwYXJzZVZlcnNpb240KToKKyAgICAgICAgKFdURjo6Y3JlYXRlVmVyc2lvbjRVVUlE
U3RyaW5nKToKKyAgICAgICAgKFdURjo6aXNWZXJzaW9uNFVVSUQpOgorICAgICAgICAoV1RGOjpj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVVVJRC5o
OgorICAgICAgICAoV1RGOjpVVUlEOjpjcmVhdGVWZXJzaW9uNCk6CisgICAgICAgIChXVEY6OlVV
SUQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIu
Y3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgor
CiAyMDIyLTAxLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
RW5hYmxlIGZvcm0ucmVxdWVzdFN1Ym1pdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGVjMmI4NTlmZjhjNjI1
YmM4MmRjOTM3NzlmMWNlYmJmZWFmY2Q5Ni4uNjc2YzI5ZTNiZGRjMTQxOGQxNTgyNmM5ODUzNzRh
NGYyYjBmNDQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIyLTAxLTIwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDbGFyaWZ5IHRoYXQgc29t
ZSBVVUlEIHJvdXRpbmVzIGFyZSBkZWRpY2F0ZWQgdG8gVVVJRCB2NAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NDMwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGJlaGF2aW9yLCB0
aGlzIGlzIHJlbmFtaW5nIG9ubHkuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNU2Vzc2lvbkNsZWFyS2V5OjpDRE1TZXNzaW9uQ2xlYXJLZXkpOgorICAgICAgICAqIE1vZHVs
ZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZp
bGVTeXN0ZW06OkRPTUZpbGVTeXN0ZW0pOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250
cm9sc0hvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0hvc3Q6OmdlbmVy
YXRlVVVJRCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpNZWRpYURldmljZXMpOgorICAgICAg
ICAqIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVE
YXRhYmFzZUZpbGVOYW1lKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlBdHNwaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6OnJl
Z2lzdGVyUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6OnJlZ2lz
dGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBdHNwaTo6cmVnaXN0
ZXJIeXBlcmxpbmspOgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6Y29weVByb3BlcnRpZXNGcm9tU291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojp1cGRhdGVCbGVuZGluZ0tleWZy
YW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6Y29tcHV0ZUNTU1RyYW5z
aXRpb25CbGVuZGluZ0tleWZyYW1lcyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpvcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGlkSW5zZXJ0QXR0YWNobWVudEVs
ZW1lbnQpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYlVSTC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iVVJMOjpjcmVhdGVCbG9iVVJMKToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmVu
c3VyZVVuaXF1ZUlkZW50aWZpZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkpOgorICAgICAgICAqIHBh
Z2UvQ3J5cHRvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0bzo6cmFuZG9tVVVJRCBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NRdWFsaWZpZWQ8VVVJRD46OmdlbmVyYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRp
b25DRjo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpDRE1TZXNzaW9uQVZG
b3VuZGF0aW9uT2JqQyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1Qcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlOjpSZWFsdGltZU1lZGlhU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
Y29tcHV0ZUNhcHR1cmVEZXZpY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAod2Via2l0
TWVkaWFTdHJlYW1TcmNQb3N0U3RyZWFtQ29sbGVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJD
b3JlOjpzY3JlZW5EZXZpY2VVVUlEKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzRG9jdW1lbnRBbGl2ZSBjb25zdCk6Cisg
ICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6CisKIDIwMjItMDEtMjAgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlY29uZmlndXJpbmcg
dGhlIENvcmVBdWRpb1NoYXJlZFVuaXQgc2hvdWxkIHRha2UgaW50byBhY2NvdW50IHRoYXQgdGhl
cmUgaXMgYSBzcGVha2VyIHNhbXBsZSBwcm9kdWNlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRy
aXZlci9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCA2OGM4ZDQ2
NGIxODAwMDc0NjAyODBlOTJlOTQ5NjM3Y2Q0NWUwNWY0Li4wMzJlN2I5MGMzYjk1Y2YxMDFmOTg3
NGNkMDlkNmJlNTFiYzA5NGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIy
LTAxLTIwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDbGFy
aWZ5IHRoYXQgc29tZSBVVUlEIHJvdXRpbmVzIGFyZSBkZWRpY2F0ZWQgdG8gVVVJRCB2NAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NDMwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBnbGliL1Nlc3Np
b25Ib3N0R2xpYi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0OjpzdGFydEF1
dG9tYXRpb25TZXNzaW9uKToKKyAgICAgICAgKiBzb2NrZXQvU2Vzc2lvbkhvc3RTb2NrZXQuY3Bw
OgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lv
bik6CisKIDIwMjEtMDktMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdG9wIHVzaW5nIG1ha2VSZWYoKnRoaXMpIC8gbWFrZVJlZlB0cih0aGlzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBlMTM0NTEwYjQyZGJiMTljMzA2OGI1ZTY3ODJlYWI2NmU3ZThiYWJjLi4wNTUyYzMyNzk5
NjFiYzYwNWY1NGNiNGNmYmE0NDA1ZDU4N2E5YTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBA
CisyMDIyLTAxLTIwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAg
ICBDbGFyaWZ5IHRoYXQgc29tZSBVVUlEIHJvdXRpbmVzIGFyZSBkZWRpY2F0ZWQgdG8gVVVJRCB2
NAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NDMw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjplbnN1cmVTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6Q2FjaGU6OnRvUmVjb3JkSW5mb3JtYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6Q2FjaGVzOjpvcGVuKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtNRE5T
UmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0dGFjaG1lbnRX
aXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpoYW5kbGVGb3JXZWJQYWdlUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aGFuZGxlRm9yV2ViRnJhbWVJRCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW06
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbToKKyAgICAgICAgKCtb
V0tTaGFyZVNoZWV0IGNyZWF0ZVJhbmRvbVNoYXJpbmdEaXJlY3RvcnlGb3JGaWxlOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6ZGlkUmVjZWl2ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXJ0dWFsQXV0aGVudGljYXRvck1h
bmFnZXI6OmNyZWF0ZUF1dGhlbnRpY2F0b3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2F5
bGFuZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6
V2F5bGFuZENvbXBvc2l0b3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tNb2RlbFZpZXcu
bW06CisgICAgICAgICgtW1dLTW9kZWxWaWV3IGNyZWF0ZUZpbGVGb3JNb2RlbDpdKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVVVSUQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9k
ZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJL
aXQ6OlBERlBsdWdpbjo6b3BlbldpdGhQcmV2aWV3KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luOjpvcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKToKKwogMjAyMi0wMS0xOSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92ZSBjb21wdXRhdGlvbiBv
ZiBzZXJ2aWNlIHdvcmtlciBGZXRjaEV2ZW50LnJlc3VsdGluZ0NsaWVudElkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hh
bmdlTG9nCmluZGV4IDJhMzhhNjA4ODNkYTZkNWU2NDk5ZTdiYzZlZjFkZDliY2Q1MGE4OTMuLmNl
NWQwZjdmYjk4OTkzMjIzNGUwNjU1YzcyZDY4YTUzNzM1YTcyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEtMjAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIENsYXJpZnkgdGhhdCBzb21lIFVVSUQgcm91dGluZXMgYXJl
IGRlZGljYXRlZCB0byBVVUlEIHY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzU0MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5j
cHA6CisgICAgICAgIChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmVuc3VyZVNlc3Npb24pOgor
CiAyMDIyLTAxLTExICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeGVkIGluc3RhbGxoZHIgYnVpbGQgZmFpbHVyZXMgaW4gV2ViQ29yZSBhbmQgV2ViS2l0
TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JZGVudGlmaWVkLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9JZGVudGlmaWVkLmgKaW5kZXggY2I4MjQzM2EzOTkzYjdiYTI5OTA4OTAyY2Q5NTlk
OGE3YmFkMTU1OS4uOTlkOWYzNmJlNjhiYzM4NzYwODZkN2ZjNDAxNmUwYjhlMzE4YTYyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvSWRlbnRpZmllZC5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0lkZW50aWZpZWQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
Y2xhc3MgVVVJRElkZW50aWZpZWQgOiBwdWJsaWMgSWRlbnRpZmllZEJhc2U8VVVJRCwgVD4gewog
cHJvdGVjdGVkOgogICAgIFVVSURJZGVudGlmaWVkKCkKLSAgICAgICAgOiBJZGVudGlmaWVkQmFz
ZTxVVUlELCBUPihVVUlEOjpjcmVhdGUoKSkKKyAgICAgICAgOiBJZGVudGlmaWVkQmFzZTxVVUlE
LCBUPihVVUlEOjpjcmVhdGVWZXJzaW9uNCgpKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmluZGV4IDQ0
OGRkZWUyMTYwZWYxOGNhNWUwNjYxMzkwZTU5OGQ1M2JjNTRkMmEuLjRlZDU2ZGM0ZWJlM2M5ZmQy
ZGQ2OTI0ZDQ5Njc3ZjllMjdlYjIwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAtMTA1Myw3ICsxMDUzLDcgQEAgU3Ry
aW5nIFVSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCkg
Y29uc3QKIAogVVJMIFVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoU3RyaW5nVmlldyByZWxh
dGl2ZVBhcnQpCiB7Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgbWFrZVN0cmluZygid2Via2l0LWZh
a2UtdXJsOi8vIiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCAnLycsIHJlbGF0aXZlUGFy
dCkpOworICAgIHJldHVybiBVUkwoVVJMKCksIG1ha2VTdHJpbmcoIndlYmtpdC1mYWtlLXVybDov
LyIsIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpLCAnLycsIHJlbGF0aXZlUGFydCkpOwogfQog
CiBVUkwgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKFN0cmluZ1ZpZXcgcGF0aCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIvU291cmNlL1dURi93dGYvVVVJRC5j
cHAKaW5kZXggODVhNWUzOGRmMTE3YzQ0Njk2NDFhYWU0MjBlNzhhZDljMWYwMjRmZC4uMmRlZDk5
ZGQyYjYwZWIzZjU2NmI3NDViNjBjZGVmZTkyNTQ3YzAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVVVJRC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKQEAgLTQ4LDEzICs0
OCwxMSBAQCBVVUlEOjpVVUlEKCkKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihtX2RhdGEpID09
IDE2KTsKICAgICBhdXRvKiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4o
Jm1fZGF0YSk7CiAKLSAgICBkbyB7Ci0gICAgICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFs
dWVzKGRhdGEsIDE2KTsKLSAgICB9IHdoaWxlIChtX2RhdGEgPT0gZW1wdHlWYWx1ZSB8fCBtX2Rh
dGEgPT0gZGVsZXRlZFZhbHVlKTsKKyAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhk
YXRhLCAxNik7CiAKLSAgICAvLyBXZSBzYW5pdGl6ZSB0aGUgdmFsdWUgdG8gbm90IGxvb3NlIGFu
eSBpbmZvcm1hdGlvbiB3aGVuIHNlcmlhbGl6aW5nIGFzIFZlcnNpb24gNCBVVUlELgotICAgIGF1
dG8gaGlnaCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PigobV9kYXRhID4+IDY0KSAmIDB4ZmZmZmZm
ZmZmZmZmMGZmZik7Ci0gICAgYXV0byBsb3cgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9kYXRh
ICYgMHgzZmZmZmZmZmZmZmZmZmZmKTsKKyAgICAvLyBCeSBkZWZhdWx0LCB3ZSBnZW5lcmF0ZSBh
IHY0IFVVSUQgdmFsdWUsIGFzIHBlciBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9o
dG1sL3JmYzQxMjIjc2VjdGlvbi00LjQuCisgICAgYXV0byBoaWdoID0gc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KChtX2RhdGEgPj4gNjQpICYgMHhmZmZmZmZmZmZmZmYwZmZmKSB8IDB4NDAwMDsKKyAg
ICBhdXRvIGxvdyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX2RhdGEgJiAweDNmZmZmZmZmZmZm
ZmZmZmYpIHwgMHg4MDAwMDAwMDAwMDAwMDAwOwogCiAgICAgbV9kYXRhID0gKHN0YXRpY19jYXN0
PFVJbnQxMjg+KGhpZ2gpIDw8IDY0KSB8IGxvdzsKIH0KQEAgLTY3LDE3ICs2NSwxNyBAQCB1bnNp
Z25lZCBVVUlEOjpoYXNoKCkgY29uc3QKIFN0cmluZyBVVUlEOjp0b1N0cmluZygpIGNvbnN0CiB7
CiAgICAgYXV0byBoaWdoID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fZGF0YSA+PiA2NCk7Ci0g
ICAgYXV0byBsb3cgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9kYXRhICYgMHgzZmZmZmZmZmZm
ZmZmZmZmKTsKKyAgICBhdXRvIGxvdyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX2RhdGEgJiAw
eGZmZmZmZmZmZmZmZmZmZmYpOwogCiAgICAgLy8gRm9ybWF0IGFzIFZlcnNpb24gNCBVVUlELgog
ICAgIHJldHVybiBtYWtlU3RyaW5nKAogICAgICAgICBoZXgoaGlnaCA+PiAzMiwgOCwgTG93ZXJj
YXNlKSwKICAgICAgICAgJy0nLAogICAgICAgICBoZXgoKGhpZ2ggPj4gMTYpICYgMHhmZmZmLCA0
LCBMb3dlcmNhc2UpLAotICAgICAgICAiLTQiLAotICAgICAgICBoZXgoaGlnaCAmIDB4ZmZmLCAz
LCBMb3dlcmNhc2UpLAogICAgICAgICAnLScsCi0gICAgICAgIGhleCgobG93ID4+IDQ4KSB8IDB4
ODAwMCwgNCwgTG93ZXJjYXNlKSwKKyAgICAgICAgaGV4KGhpZ2ggJiAweGZmZmYsIDQsIExvd2Vy
Y2FzZSksCisgICAgICAgICctJywKKyAgICAgICAgaGV4KGxvdyA+PiA0OCwgNCwgTG93ZXJjYXNl
KSwKICAgICAgICAgJy0nLAogICAgICAgICBoZXgobG93ICYgMHhmZmZmZmZmZmZmZmYsIDEyLCBM
b3dlcmNhc2UpCiAgICAgKTsKQEAgLTg1LDExICs4MywxMSBAQCBTdHJpbmcgVVVJRDo6dG9TdHJp
bmcoKSBjb25zdAogCiBzdGQ6Om9wdGlvbmFsPFVVSUQ+IFVVSUQ6OnBhcnNlKFN0cmluZ1ZpZXcg
dmFsdWUpCiB7Ci0gICAgLy8gVmVyc2lvbiA0IFVVSURzIGhhdmUgdGhlIGZvcm0geHh4eHh4eHgt
eHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4IHdpdGggaGV4YWRlY2ltYWwgZGlnaXRzIGZvciB4
IGFuZCBvbmUgb2YgOCwgOSwgQSwgb3IgQiBmb3IgeS4KKyAgICAvLyBVVUlEcyBoYXZlIHRoZSBm
b3JtIHh4eHh4eHh4LXh4eHgteHh4eC14eHh4LXh4eHh4eHh4eHh4eCB3aXRoIGhleGFkZWNpbWFs
IGRpZ2l0cyBmb3IgeC4KICAgICBpZiAodmFsdWUubGVuZ3RoKCkgIT0gMzYpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKLSAgICBpZiAodmFsdWVbOF0gIT0gJy0nIHx8IHZhbHVlWzEzXSAhPSAnLScg
IHx8IHZhbHVlWzE0XSAhPSAnNCcgfHwgdmFsdWVbMThdICE9ICctJyB8fCB2YWx1ZVsyM10gIT0g
Jy0nKQorICAgIGlmICh2YWx1ZVs4XSAhPSAnLScgfHwgdmFsdWVbMTNdICE9ICctJyAgfHwgdmFs
dWVbMThdICE9ICctJyB8fCB2YWx1ZVsyM10gIT0gJy0nKQogICAgICAgICByZXR1cm4geyB9Owog
CiAgICAgLy8gcGFyc2VJbnRlZ2VyIG1heSBhY2NlcHQgaW50ZWdlcnMgc3RhcnRpbmcgd2l0aCAr
LCBsZXQncyBjaGVjayB0aGlzIGJlZm9yZWhhbmQuCkBAIC0xMDQsNyArMTAyLDcgQEAgc3RkOjpv
cHRpb25hbDxVVUlEPiBVVUlEOjpwYXJzZShTdHJpbmdWaWV3IHZhbHVlKQogICAgIGlmICghc2Vj
b25kVmFsdWUpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIHRoaXJkVmFsdWUgPSBw
YXJzZUludGVnZXI8dWludDY0X3Q+KHZhbHVlLnN1YnN0cmluZygxNSwgMyksIDE2KTsKKyAgICBh
dXRvIHRoaXJkVmFsdWUgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHZhbHVlLnN1YnN0cmluZygx
NCwgNCksIDE2KTsKICAgICBpZiAoIXRoaXJkVmFsdWUpCiAgICAgICAgIHJldHVybiB7IH07CiAK
QEAgLTExMiwxMSArMTEwLDYgQEAgc3RkOjpvcHRpb25hbDxVVUlEPiBVVUlEOjpwYXJzZShTdHJp
bmdWaWV3IHZhbHVlKQogICAgIGlmICghZm91cnRoVmFsdWUpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICAvLyBGb3VydGggdmFsdWUgc3RhcnRzIHdpdGggJ3knLCBpdCBtdXN0IGJlIGFib3Zl
IDB4ODAwMCBhbmQgYmVsb3cgMHhCRkZGRi4KLSAgICBpZiAoKCpmb3VydGhWYWx1ZSAmIDB4YzAw
MCkgIT0gMHg4MDAwKQotICAgICAgICByZXR1cm4geyB9OwotICAgIGZvdXJ0aFZhbHVlID0gKmZv
dXJ0aFZhbHVlICYgMHgzZmZmOwotCiAgICAgYXV0byBmaWZ0aFZhbHVlID0gcGFyc2VJbnRlZ2Vy
PHVpbnQ2NF90Pih2YWx1ZS5zdWJzdHJpbmcoMjQsIDEyKSwgMTYpOwogICAgIGlmICghZmlmdGhW
YWx1ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEyNSwxNSArMTE4LDMzIEBAIHN0ZDo6b3B0
aW9uYWw8VVVJRD4gVVVJRDo6cGFyc2UoU3RyaW5nVmlldyB2YWx1ZSkKICAgICB1aW50NjRfdCBs
b3cgPSAoKmZvdXJ0aFZhbHVlIDw8IDQ4KSB8ICpmaWZ0aFZhbHVlOwogCiAgICAgYXV0byByZXN1
bHQgPSAoc3RhdGljX2Nhc3Q8VUludDEyOD4oaGlnaCkgPDwgNjQpIHwgbG93OwotICAgIGlmIChy
ZXN1bHQgPT0gZW1wdHlWYWx1ZSB8fCByZXN1bHQgPT0gZGVsZXRlZFZhbHVlKQorICAgIGlmIChy
ZXN1bHQgPT0gZGVsZXRlZFZhbHVlKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgcmV0dXJu
IFVVSUQocmVzdWx0KTsKIH0KIAotU3RyaW5nIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKQor
c3RkOjpvcHRpb25hbDxVVUlEPiBVVUlEOjpwYXJzZVZlcnNpb240KFN0cmluZ1ZpZXcgdmFsdWUp
Cit7CisgICAgYXV0byB1dWlkID0gcGFyc2UodmFsdWUpOworICAgIGlmICghdXVpZCkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIC8vIFZlcnNpb24gNCBVVUlEcyBoYXZlIHRoZSBmb3JtIHh4
eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCB3aXRoIGhleGFkZWNpbWFsIGRpZ2l0
cyBmb3IgeCBhbmQgb25lIG9mIDgsIDksIEEsIG9yIEIgZm9yIHkuCisgICAgYXV0byBoaWdoID0g
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHV1aWQtPm1fZGF0YSA+PiA2NCk7CisgICAgaWYgKChoaWdo
ICYgMHhmMDAwKSAhPSAweDQwMDApCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGxv
dyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1dWlkLT5tX2RhdGEgJiAweGZmZmZmZmZmZmZmZmZm
ZmYpOworICAgIGlmICgobG93ID4+IDYyKSAhPSAyKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgcmV0dXJuIHV1aWQ7Cit9CisKK1N0cmluZyBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKQog
ewotICAgIHJldHVybiBVVUlEOjpjcmVhdGUoKS50b1N0cmluZygpOworICAgIHJldHVybiBVVUlE
OjpjcmVhdGVWZXJzaW9uNCgpLnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBib290U2Vzc2lvblVV
SURTdHJpbmcoKQpAQCAtMTU3LDcgKzE2OCw3IEBAIFN0cmluZyBib290U2Vzc2lvblVVSURTdHJp
bmcoKQogCiBib29sIGlzVmVyc2lvbjRVVUlEKFN0cmluZ1ZpZXcgdmFsdWUpCiB7Ci0gICAgcmV0
dXJuICEhVVVJRDo6cGFyc2UodmFsdWUpOworICAgIHJldHVybiAhIVVVSUQ6OnBhcnNlVmVyc2lv
bjQodmFsdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1VVSUQuaCBiL1NvdXJjZS9XVEYvd3RmL1VVSUQuaAppbmRleCA4ZDY0NTE3MWI2YzYz
MTRhODg2YjNlMTE0MDRlZTA5YTA1MWNjNjM2Li5mZTMzYzBmNGMyZjNhMzJiMjQ3N2VjYzVhN2M0
MzhkNGFkOWJmOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VVUlELmgKKysrIGIvU291
cmNlL1dURi93dGYvVVVJRC5oCkBAIC00NCwxMiArNDQsMTMgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdGV4cHIgVUludDEyOCBlbXB0eVZhbHVlID0gMDsKICAgICBzdGF0aWMgY29uc3RleHBy
IFVJbnQxMjggZGVsZXRlZFZhbHVlID0gMTsKIAotICAgIHN0YXRpYyBVVUlEIGNyZWF0ZSgpCisg
ICAgc3RhdGljIFVVSUQgY3JlYXRlVmVyc2lvbjQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFVV
SUQgeyB9OwogICAgIH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgc3RkOjpvcHRp
b25hbDxVVUlEPiBwYXJzZShTdHJpbmdWaWV3KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxV
VUlEPiBwYXJzZShTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VVVJRD4gcGFyc2VWZXJzaW9uNChTdHJpbmdWaWV3KTsKIAogICAgIGV4cGxp
Y2l0IFVVSUQoU3Bhbjxjb25zdCB1aW50OF90LCAxNj4gc3BhbikKICAgICB7CkBAIC0xNDEsNyAr
MTQyLDcgQEAgc3RkOjpvcHRpb25hbDxVVUlEPiBVVUlEOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIC8vIGRhdGEgc291cmNlLiBWZXJzaW9uIDQgVVVJRHMgaGF2ZSB0aGUgZm9ybSB4eHh4eHh4
eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHggd2l0aCBoZXhhZGVjaW1hbCBkaWdpdHMgZm9y
IHggYW5kIG9uZSBvZiA4LAogLy8gOSwgQSwgb3IgQiBmb3IgeS4KIAotV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwogCiBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIGJvb3RTZXNzaW9uVVVJRFN0cmluZygpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgaXNWZXJzaW9uNFVVSUQoU3RyaW5nVmlldyk7CkBAIC0xNDksNSArMTUwLDUgQEAgV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgaXNWZXJzaW9uNFVVSUQoU3RyaW5nVmlldyk7CiB9CiAKIHVzaW5n
IFdURjo6VVVJRDsKLXVzaW5nIFdURjo6Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZzsKK3VzaW5n
IFdURjo6Y3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nOwogdXNpbmcgV1RGOjpib290U2Vzc2lvblVV
SURTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGli
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IDFkMTU0
OTRjNWMzMTk3NjZjMjMxOTQwOTIzOThmNTdmYWNmNzBmOGMuLmE2Mzg2ZTY1YTIzMzY3NjJmNGQ0
NGY3NDBjYTM2ZTAzM2VjN2M4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmls
ZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIu
Y3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3QKICAgICAvLyBG
SVhNRTogU3VmZml4IGlzIG5vdCBzdXBwb3J0ZWQsIGJ1dCBPSyBmb3Igbm93IHNpbmNlIHRoZSBj
b2RlIHVzaW5nIGl0IGlzIG1hY09TLXBvcnQtb25seS4KICAgICBBU1NFUlRfVU5VU0VEKHN1ZmZp
eCwgc3VmZml4LmlzRW1wdHkoKSk7CiAKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZShn
X3N0cmR1cF9wcmludGYoIiVzJXMiLCBwcmVmaXgudXRmOCgpLmRhdGEoKSwgY3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBm
aWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzJXMiLCBwcmVmaXgudXRmOCgpLmRhdGEoKSwgY3Jl
YXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdG1wX2RpcigpLCBmaWxlbmFt
ZS5nZXQoKSwgbnVsbHB0cikpOwogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYo
Z19maWxlX25ld19mb3JfcGF0aCh0ZW1wUGF0aC5nZXQoKSkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9u
Q2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcAppbmRleCAzYzljZTY1ODY2MWI0ZWIzYjQ3
ZTI5ZjM5Mzg1MzVjZjk3NjE3MzdkLi5kYjYyZmUwNTYwMGZiNTRkYjE3NzY0ODIxM2EzMzJhYzIx
N2JlZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5j
cHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIFZNJiBjbGVhcktleVZNKCkKIAogQ0RNU2Vzc2lv
bkNsZWFyS2V5OjpDRE1TZXNzaW9uQ2xlYXJLZXkoTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xp
ZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9zZXNzaW9uSWQoY3JlYXRlQ2Fu
b25pY2FsVVVJRFN0cmluZygpKQorICAgICwgbV9zZXNzaW9uSWQoY3JlYXRlVmVyc2lvbjRVVUlE
U3RyaW5nKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmll
c2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCBlYmI1YWRjYTkxMjgzMTNjYjkzODQxMTBkOTUy
NTE1NDQxMGRhZmJkLi4wMTZkMTcxNzI4NzVkMmE1MzljNmMyYTI5NWU4ZDUyYzQ2ODUxODQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3Rl
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0
ZW0uY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFZpcnR1YWxQYXRo
KFN0cmluZ1ZpZXcgdmlydHVhbFBhdGgpCiB9CiAKIERPTUZpbGVTeXN0ZW06OkRPTUZpbGVTeXN0
ZW0oUmVmPEZpbGU+JiYgZmlsZSkKLSAgICA6IG1fbmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCkpCisgICAgOiBtX25hbWUoY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkpCiAgICAgLCBt
X2ZpbGUoV1RGTW92ZShmaWxlKSkKICAgICAsIG1fcm9vdFBhdGgoRmlsZVN5c3RlbTo6cGFyZW50
UGF0aChtX2ZpbGUtPnBhdGgoKSkpCiAgICAgLCBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0
ZSgiRE9NRmlsZVN5c3RlbSB3b3JrIHF1ZXVlIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGU1ZGU4
NDk0ZjM1MDQ1MzU5NGIyZjJlODhjM2RkYTMzZmE5YWY3MDQuLmYxN2E2NTJkYmMwYzkwMDcwZDdm
ODg2MzUzYzM0YjU4OGE3ZWNlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0yMDUsNyArMjA1LDcg
QEAgc3RhdGljIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSBjcmVhdGVBcHBIaWdobGlnaHRSYW5nZURh
dGEoY29uc3QgU3RhdGljUmFuZ2UmIHJhbmcKIHsKICAgICBhdXRvIHRleHQgPSBwbGFpblRleHQo
cmFuZ2UpOwogICAgIHRleHQudHJ1bmNhdGUodGV4dFByZXZpZXdMZW5ndGgpOwotICAgIGF1dG8g
aWRlbnRpZmllciA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICBhdXRvIGlkZW50
aWZpZXIgPSBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKTsKIAogICAgIHJldHVybiB7CiAgICAg
ICAgIGlkZW50aWZpZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
Y29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAppbmRleCBlZWY3OWRiZjUwNDdhNzg1
YWI4MjQ5ZTNjYmUxMWRlMjFjOTk3MzMxLi45MmUwODdkMGViNzg2ZmNmNjgzMmRlMmNhZWUzNjEx
YzFlYTNlMjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJv
bHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lk
IE1lZGlhQ29udHJvbHNIb3N0OjpzZXRDb250cm9sc0RlcGVuZE9uUGFnZVNjYWxlRmFjdG9yKGJv
b2wgdmFsdWUpCiAKIFN0cmluZyBNZWRpYUNvbnRyb2xzSG9zdDo6Z2VuZXJhdGVVVUlEKCkKIHsK
LSAgICByZXR1cm4gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgIHJldHVybiBjcmVh
dGVWZXJzaW9uNFVVSURTdHJpbmcoKTsKIH0KIAogI2lmIEVOQUJMRShNT0RFUk5fTUVESUFfQ09O
VFJPTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy5jcHAKaW5kZXggMWFlNTBlOWQ0YmViMDk2ZTBiMDIxNjk1NGRmZjQ2NjZjNTIyM2E1
YS4uOGUwMmJjODlkN2UzNjU4Mjc1YTU3NjAwNzk4YmY5NWQyNzg3MzdhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAt
NTcsNyArNTcsNyBAQCBpbmxpbmUgTWVkaWFEZXZpY2VzOjpNZWRpYURldmljZXMoRG9jdW1lbnQm
IGRvY3VtZW50KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQogICAgICwgbV9zY2hl
ZHVsZWRFdmVudFRpbWVyKCp0aGlzLCAmTWVkaWFEZXZpY2VzOjpzY2hlZHVsZWRFdmVudFRpbWVy
RmlyZWQpCiAgICAgLCBtX2V2ZW50TmFtZXMoZXZlbnROYW1lcygpKQotICAgICwgbV9ncm91cElk
SGFzaFNhbHQoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQorICAgICwgbV9ncm91cElkSGFz
aFNhbHQoY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkpCiB7CiAgICAgc3RhdGljX2Fzc2VydChz
dGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhRGV2aWNlczo6RGlzcGxheUNhcHR1cmVTdXJmYWNlVHlw
ZTo6TW9uaXRvcikgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6TW9uaXRvciksICJNZWRpYURldmljZXM6OkRpc3Bs
YXlDYXB0dXJlU3VyZmFjZVR5cGU6Ok1vbml0b3IgaXMgbm90IGVxdWFsIHRvIFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpNb25pdG9yIGFzIGV4cGVjdGVk
Iik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhRGV2aWNlczo6
RGlzcGxheUNhcHR1cmVTdXJmYWNlVHlwZTo6V2luZG93KSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpXaW5kb3cp
LCAiTWVkaWFEZXZpY2VzOjpEaXNwbGF5Q2FwdHVyZVN1cmZhY2VUeXBlOjpXaW5kb3cgaXMgbm90
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpXaW5kb3cg
YXMgZXhwZWN0ZWQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVu
dHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKaW5kZXggZmRiMmRjYTBmNDZkYWIxODdjZDgx
ZTI5MTA5OWI0Y2NjNDZiYmE1MS4uMmRmYzdmOGRlZTFlODYxYTYwM2M4MDE1ZDUwYzMwYTA5MmZm
OGI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50UmVxdWVzdC5jcHAKQEAgLTMwMSw3ICszMDEsNyBAQCBFeGNlcHRpb25PcjxS
ZWY8UGF5bWVudFJlcXVlc3Q+PiBQYXltZW50UmVxdWVzdDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgVmVjdAogICAgICAgICByZXR1cm4gY2FuQ3JlYXRlU2Vzc2lvbi5yZWxlYXNlRXhjZXB0
aW9uKCk7CiAKICAgICBpZiAoZGV0YWlscy5pZC5pc051bGwoKSkKLSAgICAgICAgZGV0YWlscy5p
ZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICAgICAgZGV0YWlscy5pZCA9IGNy
ZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwogCiAgICAgaWYgKG1ldGhvZERhdGEuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiQXQgbGVhc3Qgb25lIHBh
eW1lbnQgbWV0aG9kIGlzIHJlcXVpcmVkLiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDU5NGY3ODZi
NWVmNTk0M2RiOTk3ZDkwZjZkYWUxNzM4OTQwMDU1YzguLmNhNDE3YzlhYjNkNWEwYWY5YzBiZDFh
NDJkNWE4NTg0NjQwNTM3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTMwOCw3ICszMDgsNyBAQCBTdHJp
bmcgRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5QYXRoKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
b3JpZ2luKSBjb25zdAogCiBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlRGF0YWJhc2VGaWxlTmFtZSgp
CiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCAi
LmRiIik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCks
ICIuZGIiKTsKIH0KIAogU3RyaW5nIERhdGFiYXNlVHJhY2tlcjo6ZnVsbFBhdGhGb3JEYXRhYmFz
ZU5vTG9jayhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBib29sIGNyZWF0ZUlmTm90RXhpc3RzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRzcGkuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRzcGkuY3BwCmluZGV4IDljZWNh
ZDIxYmEwNzgwNzQzYTEyYWMxMzRhMDk4OTU3NDQ0YTFjOTQuLjI2YWUzMmE2MDg2MTliM2FkOWQw
NzlhN2I0N2NjZmEwNTliZDU4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlBdHNwaS5jcHAKQEAgLTI4NCw3ICsyODQs
NyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBdHNwaTo6cmVnaXN0ZXJSb290KEFjY2Vzc2liaWxpdHlS
b290QXRzcGkmIHJvb3RPYmplY3QsIFZlY3RvcgogICAgIH0KIAogICAgIGVuc3VyZUNhY2hlKCk7
Ci0gICAgU3RyaW5nIHBhdGggPSBtYWtlU3RyaW5nKCIvb3JnL2ExMXkvd2Via2l0L2FjY2Vzc2li
bGUvIiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnJlcGxhY2UoJy0nLCAnXycpKTsKKyAg
ICBTdHJpbmcgcGF0aCA9IG1ha2VTdHJpbmcoIi9vcmcvYTExeS93ZWJraXQvYWNjZXNzaWJsZS8i
LCBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKS5yZXBsYWNlKCctJywgJ18nKSk7CiAgICAgVmVj
dG9yPHVuc2lnbmVkLCAzPiByZWdpc3RlcmVkT2JqZWN0czsKICAgICByZWdpc3RlcmVkT2JqZWN0
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGludGVyZmFjZXMuc2l6ZSgpKTsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIGludGVyZmFjZSA6IGludGVyZmFjZXMpIHsKQEAgLTMxOSw3ICszMTksNyBAQCBT
dHJpbmcgQWNjZXNzaWJpbGl0eUF0c3BpOjpyZWdpc3Rlck9iamVjdChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0QXRzcGkmIGF0c3BpT2JqZWN0LAogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgZW5zdXJl
Q2FjaGUoKTsKLSAgICBTdHJpbmcgcGF0aCA9IG1ha2VTdHJpbmcoIi9vcmcvYTExeS9hdHNwaS9h
Y2Nlc3NpYmxlLyIsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS5yZXBsYWNlKCctJywgJ18n
KSk7CisgICAgU3RyaW5nIHBhdGggPSBtYWtlU3RyaW5nKCIvb3JnL2ExMXkvYXRzcGkvYWNjZXNz
aWJsZS8iLCBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKS5yZXBsYWNlKCctJywgJ18nKSk7CiAg
ICAgVmVjdG9yPHVuc2lnbmVkLCAyMD4gcmVnaXN0ZXJlZE9iamVjdHM7CiAgICAgcmVnaXN0ZXJl
ZE9iamVjdHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbnRlcmZhY2VzLnNpemUoKSk7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBpbnRlcmZhY2UgOiBpbnRlcmZhY2VzKSB7CkBAIC0zNTgsNyArMzU4
LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlBdHNwaTo6cmVnaXN0ZXJIeXBlcmxpbmsoQWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpJiBhdHNwaU9iamUKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFN0cmluZyBwYXRoID0gbWFrZVN0cmluZygiL29yZy9h
MTF5L2F0c3BpL2FjY2Vzc2libGUvIiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnJlcGxh
Y2UoJy0nLCAnXycpKTsKKyAgICBTdHJpbmcgcGF0aCA9IG1ha2VTdHJpbmcoIi9vcmcvYTExeS9h
dHNwaS9hY2Nlc3NpYmxlLyIsIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpLnJlcGxhY2UoJy0n
LCAnXycpKTsKICAgICBWZWN0b3I8dW5zaWduZWQsIDE+IHJlZ2lzdGVyZWRPYmplY3RzOwogICAg
IHJlZ2lzdGVyZWRPYmplY3RzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW50ZXJmYWNlcy5zaXpl
KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgaW50ZXJmYWNlIDogaW50ZXJmYWNlcykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKaW5kZXggNjRkYjUyMTNj
NzYxMDhmNDE5MDRiZDdiZTZkNTJkNDU1Y2U3MmNlNy4uNGYzMDBmMzZmMTUzMmM3MzJiZWZhNGZi
OTMyYjRlMWY1YzgxMzlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tl
eWZyYW1lRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3QuY3BwCkBAIC01OTEsNyArNTkxLDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6Y29weVBy
b3BlcnRpZXNGcm9tU291cmNlKFJlZjxLZXlmcmFtZUVmZmVjdD4mJiBzb3VyY2UpCiAgICAgc2V0
SXRlcmF0aW9uRHVyYXRpb24oc291cmNlLT5pdGVyYXRpb25EdXJhdGlvbigpKTsKICAgICB1cGRh
dGVTdGF0aWNUaW1pbmdQcm9wZXJ0aWVzKCk7CiAKLSAgICBLZXlmcmFtZUxpc3Qga2V5ZnJhbWVM
aXN0KCJrZXlmcmFtZS1lZmZlY3QtIiArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7Cisg
ICAgS2V5ZnJhbWVMaXN0IGtleWZyYW1lTGlzdCgia2V5ZnJhbWUtZWZmZWN0LSIgKyBjcmVhdGVW
ZXJzaW9uNFVVSURTdHJpbmcoKSk7CiAgICAga2V5ZnJhbWVMaXN0LmNvcHlLZXlmcmFtZXMoc291
cmNlLT5tX2JsZW5kaW5nS2V5ZnJhbWVzKTsKICAgICBzZXRCbGVuZGluZ0tleWZyYW1lcyhrZXlm
cmFtZUxpc3QpOwogfQpAQCAtOTA2LDcgKzkwNiw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnVw
ZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKFJlbmRlclN0eWxlJiBlbGVtZW50U3R5bGUsIGNvbnN0IFN0
CiAgICAgaWYgKCFtX2JsZW5kaW5nS2V5ZnJhbWVzLmlzRW1wdHkoKSB8fCAhbV90YXJnZXQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEtleWZyYW1lTGlzdCBrZXlmcmFtZUxpc3QoImtleWZyYW1l
LWVmZmVjdC0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKTsKKyAgICBLZXlmcmFtZUxp
c3Qga2V5ZnJhbWVMaXN0KCJrZXlmcmFtZS1lZmZlY3QtIiArIGNyZWF0ZVZlcnNpb240VVVJRFN0
cmluZygpKTsKICAgICBhdXRvJiBzdHlsZVJlc29sdmVyID0gbV90YXJnZXQtPnN0eWxlUmVzb2x2
ZXIoKTsKIAogICAgIGZvciAoYXV0byYga2V5ZnJhbWUgOiBtX3BhcnNlZEtleWZyYW1lcykgewpA
QCAtMTE1Nyw3ICsxMTU3LDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6Y29tcHV0ZUNTU1RyYW5z
aXRpb25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSogb2wKICAgICBpZiAobV90
YXJnZXQpCiAgICAgICAgIFN0eWxlOjpsb2FkUGVuZGluZ1Jlc291cmNlcygqdG9TdHlsZSwgKmRv
Y3VtZW50KCksIG1fdGFyZ2V0LmdldCgpKTsKIAotICAgIEtleWZyYW1lTGlzdCBrZXlmcmFtZUxp
c3QoImtleWZyYW1lLWVmZmVjdC0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKTsKKyAg
ICBLZXlmcmFtZUxpc3Qga2V5ZnJhbWVMaXN0KCJrZXlmcmFtZS1lZmZlY3QtIiArIGNyZWF0ZVZl
cnNpb240VVVJRFN0cmluZygpKTsKICAgICBrZXlmcmFtZUxpc3QuYWRkUHJvcGVydHkocHJvcGVy
dHkpOwogCiAgICAgS2V5ZnJhbWVWYWx1ZSBmcm9tS2V5ZnJhbWVWYWx1ZSgwLCBSZW5kZXJTdHls
ZTo6Y2xvbmVQdHIoKm9sZFN0eWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2YzAw
NGIwNDc3MmFkMjcxZmIzMzA5YzUxYzRjNzEwNjBjMTgzYjZiLi4xYjQwM2Y4ZDZkMGMyYmYwNjIy
Zjg0YzFkZDAxOGUyMTNhNDE4ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTYyNTEs
NyArNjI1MSw3IEBAIFN0cmluZyBEb2N1bWVudDo6b3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9h
cmQoKSBjb25zdAogICAgIGlmIChvcmlnaW4gIT0gIm51bGwiKQogICAgICAgICByZXR1cm4gb3Jp
Z2luOwogICAgIGlmICghbV91bmlxdWVJZGVudGlmaWVyKQotICAgICAgICBtX3VuaXF1ZUlkZW50
aWZpZXIgPSAibnVsbDoiICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgICAgICBt
X3VuaXF1ZUlkZW50aWZpZXIgPSAibnVsbDoiICsgY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7
CiAgICAgcmV0dXJuIG1fdW5pcXVlSWRlbnRpZmllcjsKIH0KIApAQCAtODYzMSw3ICs4NjMxLDcg
QEAgdm9pZCBEb2N1bWVudDo6ZGlkSW5zZXJ0QXR0YWNobWVudEVsZW1lbnQoSFRNTEF0dGFjaG1l
bnRFbGVtZW50JiBhdHRhY2htZW50KQogICAgIGJvb2wgcHJldmlvdXNJZGVudGlmaWVySXNOb3RV
bmlxdWUgPSAhcHJldmlvdXNJZGVudGlmaWVyLmlzRW1wdHkoKSAmJiBtX2F0dGFjaG1lbnRJZGVu
dGlmaWVyVG9FbGVtZW50TWFwLmNvbnRhaW5zKHByZXZpb3VzSWRlbnRpZmllcik7CiAgICAgaWYg
KGlkZW50aWZpZXIuaXNFbXB0eSgpIHx8IHByZXZpb3VzSWRlbnRpZmllcklzTm90VW5pcXVlKSB7
CiAgICAgICAgIHByZXZpb3VzSWRlbnRpZmllciA9IGlkZW50aWZpZXI7Ci0gICAgICAgIGlkZW50
aWZpZXIgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisgICAgICAgIGlkZW50aWZpZXIg
PSBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKTsKICAgICAgICAgYXR0YWNobWVudC5zZXRVbmlx
dWVJZGVudGlmaWVyKGlkZW50aWZpZXIpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVS
TC5jcHAKaW5kZXggNTVjNTgxMDE1OTFjZTQxNWM3NWNhMDgwOTM0ZWEzMWUxNzJkNTQ1Mi4uM2Ux
ZWYzZmIzNjJiYWZjNDMwNjFlMThjYzBjMTNlZDk1ZGU2OWZhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2JVUkwuY3BwCkBAIC05Miw3ICs5Miw3IEBAIGJvb2wgQmxvYlVSTDo6aXNTZWN1cmVCbG9i
VVJMKGNvbnN0IFVSTCYgdXJsKQogVVJMIEJsb2JVUkw6OmNyZWF0ZUJsb2JVUkwoY29uc3QgU3Ry
aW5nJiBvcmlnaW5TdHJpbmcpCiB7CiAgICAgQVNTRVJUKCFvcmlnaW5TdHJpbmcuaXNFbXB0eSgp
KTsKLSAgICBTdHJpbmcgdXJsU3RyaW5nID0gImJsb2I6IiArIG9yaWdpblN0cmluZyArICcvJyAr
IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICBTdHJpbmcgdXJsU3RyaW5nID0gImJs
b2I6IiArIG9yaWdpblN0cmluZyArICcvJyArIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwog
ICAgIHJldHVybiBVUkwoeyB9LCB1cmxTdHJpbmcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggZThiYzVjM2NhYzRlNWM2Nzc3Mjc5
MmU2MWYwOTM1MTk2NTNhYjZmMi4uNWEyZGI1ZjhmNzhjMzI2MGYyZDRkMDU5YTg2NzEyYjg0OTg4
NTM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpyZW1vdmVk
RnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHR5cGUsIENvbnRhaW5lck5vZGUmCiBjb25zdCBTdHJp
bmcmIEhUTUxBdHRhY2htZW50RWxlbWVudDo6ZW5zdXJlVW5pcXVlSWRlbnRpZmllcigpCiB7CiAg
ICAgaWYgKG1fdW5pcXVlSWRlbnRpZmllci5pc0VtcHR5KCkpCi0gICAgICAgIG1fdW5pcXVlSWRl
bnRpZmllciA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICAgICAgbV91bmlxdWVJ
ZGVudGlmaWVyID0gY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7CiAgICAgcmV0dXJuIG1fdW5p
cXVlSWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggOGNmMDVjY2UxODgw
MTI4ZGU1OWJlNzBhOTk4MzZmNWE3NDViNmQ3MS4uNmI5ZTdlMjk1ZmQ2ZmIyMGZmMGQ3NGZkY2Yy
M2ZjNjYwMGE2MDAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMjc3LDkgKzEyNzcsOSBA
QCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRp
cmVjdG9yeShGcmFnbWVudGVkU2hhcmVkQgogICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICAKICAg
ICBkbyB7Ci0gICAgICAgIHBhdGggPSBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpICsgZmlsZUV4dGVuc2lvbjsKKyAgICAgICAgcGF0aCA9
IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygp
KSArIGZpbGVFeHRlbnNpb247CiAgICAgICAgIC8vIEd1YXJkIGFnYWluc3QgdGhlIGFib3ZlIGZ1
bmN0aW9uIGJlaW5nIGNhbGxlZCBvbiBhIHBsYXRmb3JtIHdoaWNoIGRvZXMgbm90IGltcGxlbWVu
dAotICAgICAgICAvLyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkuCisgICAgICAgIC8vIGNy
ZWF0ZVZlcnNpb240VVVJRFN0cmluZygpLgogICAgICAgICBBU1NFUlQoIXBhdGguaXNFbXB0eSgp
KTsKICAgICAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DcnlwdG8uY3BwCmluZGV4IGFmN2FjMmY2OThhNDNiN2FmOGZlNjU4ZDdlYTBl
MjE0N2UzZmU1NGMuLjlhNTNlNWZjZGVjMjY4OGQ0OTQ4NWY2ODI2MzZmOTQwNDU1Yjg3MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NyeXB0by5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
Q3J5cHRvOjpnZXRSYW5kb21WYWx1ZXMoQXJyYXlCdWZmZXJWaWV3JiBhcnJheSkKIAogU3RyaW5n
IENyeXB0bzo6cmFuZG9tVVVJRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUNhbm9uaWNh
bFVVSURTdHJpbmcoKTsKKyAgICByZXR1cm4gY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7CiB9
CiAKICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oCmluZGV4IDQ2MTUw
ZGJkYzJhM2ZmZDZjODcwMmQ3MjU5N2VmOGE3NWE0NzUxMDQuLjMwOWViMTQ4YmZlMzMzZDM0MTZj
Y2ZjMzE0ZWMxYzc4YmRiZjZlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaApAQCAtMzQsNyArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0ZW1wbGF0ZSA8PgogY2xhc3MgUHJvY2Vzc1F1YWxp
ZmllZDxVVUlEPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFByb2Nlc3NRdWFsaWZpZWQgZ2VuZXJh
dGUoKSB7IHJldHVybiB7IFVVSUQ6OmNyZWF0ZSgpLCBQcm9jZXNzOjppZGVudGlmaWVyKCkgfTsg
fQorICAgIHN0YXRpYyBQcm9jZXNzUXVhbGlmaWVkIGdlbmVyYXRlKCkgeyByZXR1cm4geyBVVUlE
OjpjcmVhdGVWZXJzaW9uNCgpLCBQcm9jZXNzOjppZGVudGlmaWVyKCkgfTsgfQogCiAgICAgUHJv
Y2Vzc1F1YWxpZmllZCgpCiAgICAgICAgIDogbV9vYmplY3QoVVVJRDo6ZW1wdHlWYWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAKaW5k
ZXggN2E4OTllYzY2YzU3YjdkOTI2MmRiNzMyNjhkYjRmNDk3YjFjZGRkMS4uZGY0ZjE4MzVmNTZi
M2Q2ZGJmMTRiNWQ0YjQ4ZWRhOGQ4N2I5OTQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25D
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OkNETVNlc3Npb25BVkZv
dW5kYXRpb25DRihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiYgcGFyZW50LCBMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50KikKICAgICA6IG1fcGFyZW50KHBhcmVudCkKLSAgICAsIG1fc2Vz
c2lvbklkKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkKKyAgICAsIG1fc2Vzc2lvbklkKGNy
ZWF0ZVZlcnNpb240VVVJRFN0cmluZygpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGRhZGNkZmM1NTU2
ZWY4ODA4OTIyZTk4OTM5MWY3MTg3YzE0OWY2MTUuLjYwNzZmYThjYzA5MmRlNWNkMTFjMGFkN2Vi
M2EwYjhiMDU4ODZhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQyhNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIExlZ2FjeUNE
TVNlc3Npb25DbGllbnQqIGNsaWVudCkKICAgICA6IG1fcGFyZW50KCpwYXJlbnQpCiAgICAgLCBt
X2NsaWVudChjbGllbnQpCi0gICAgLCBtX3Nlc3Npb25JZChjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCkpCisgICAgLCBtX3Nlc3Npb25JZChjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNl
c3Npb24ubW0KaW5kZXggZjM1Y2FhOGU2YWZmNTdkMzA4OGFlN2MwZDNmOTI4ZmY3NmI5NmVlMS4u
ODI4ZGFiYTc2N2EwZDUwM2U2NmE0YzdhOTYyMTA0ZGUyNjYyNDhhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCkBAIC0yMzgs
NyArMjM4LDcgQEAgYm9vbCBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUoVWludDhB
cnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHQKICAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICAgICAgaWYgKCFbcHJvdGVjdGVkU291cmNlQnVm
ZmVyLT5zdHJlYW1EYXRhUGFyc2VyKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihjb250
ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyKV0pCi0gICAgICAgICAgICBtX3Nlc3Npb25J
ZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICAgICAgICAgIG1fc2Vzc2lvbklk
ID0gY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7CiAKICAgICAgICAgaWYgKGVycm9yKSB7CiAg
ICAgICAgICAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUo
JXApIC0gZXJyb3I6JUAiLCB0aGlzLCBbZXJyb3IgZGVzY3JpcHRpb25dKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
CmluZGV4IGZkOWZhZmU4ZjE2OTdlNzlmMWZhOTE0NTZiNGJlYThlYTVkODI1MjUuLmExNzZjMTM3
ZmIyNmQxYTVkNjUwNzQxYzQzMzE3MDllOTA5NWQyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMzEw
NSw3ICszMTA1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUFuaW1hdGlvbnMoKQog
ICAgICAgICBjYUFuaW1hdGlvbkdyb3VwLT5zZXREdXJhdGlvbihpbmZpbml0ZUR1cmF0aW9uKTsK
ICAgICAgICAgY2FBbmltYXRpb25Hcm91cC0+c2V0QW5pbWF0aW9ucyhhbmltYXRpb25zKTsKIAot
ICAgICAgICBhdXRvIGFuaW1hdGlvbkdyb3VwID0gTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihXVEZN
b3ZlKGNhQW5pbWF0aW9uR3JvdXApLCAiZ3JvdXAtIiArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJp
bmcoKSwgcHJvcGVydHksIDAsIDAsIDBfcyk7CisgICAgICAgIGF1dG8gYW5pbWF0aW9uR3JvdXAg
PSBMYXllclByb3BlcnR5QW5pbWF0aW9uKFdURk1vdmUoY2FBbmltYXRpb25Hcm91cCksICJncm91
cC0iICsgY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCksIHByb3BlcnR5LCAwLCAwLCAwX3MpOwog
ICAgICAgICBhbmltYXRpb25Hcm91cC5tX2JlZ2luVGltZSA9IGFuaW1hdGlvbkdyb3VwQmVnaW5U
aW1lOwogCiAgICAgICAgIHNldEFuaW1hdGlvbk9uTGF5ZXIoYW5pbWF0aW9uR3JvdXApOwpAQCAt
MzE1Myw3ICszMTUzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUFuaW1hdGlvbnMo
KQogICAgICAgICBjYUFuaW1hdGlvbi0+c2V0RnJvbVZhbHVlKG1hdHJpeCk7CiAgICAgICAgIGNh
QW5pbWF0aW9uLT5zZXRUb1ZhbHVlKG1hdHJpeCk7CiAKLSAgICAgICAgYXV0byBhbmltYXRpb24g
PSBMYXllclByb3BlcnR5QW5pbWF0aW9uKFdURk1vdmUoY2FBbmltYXRpb24pLCAiYmFzZS10cmFu
c2Zvcm0tIiArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgcHJvcGVydHksIDAsIDAsIDBf
cyk7CisgICAgICAgIGF1dG8gYW5pbWF0aW9uID0gTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihXVEZN
b3ZlKGNhQW5pbWF0aW9uKSwgImJhc2UtdHJhbnNmb3JtLSIgKyBjcmVhdGVWZXJzaW9uNFVVSURT
dHJpbmcoKSwgcHJvcGVydHksIDAsIDAsIDBfcyk7CiAgICAgICAgIGlmIChkZWxheSkKICAgICAg
ICAgICAgIGFuaW1hdGlvbi5tX2JlZ2luVGltZSA9IGN1cnJlbnRUaW1lIC0gYW5pbWF0aW9uR3Jv
dXBCZWdpblRpbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKaW5kZXggNTYyNzc4OGRjNDcyMTBhMzA4NDU5
Zjg5OTRkOTE1MDU5OGFhMzljMC4uN2YyZWI0NWVmMTE4NmUwZjc1MWU3MzExMDg1OWZjMTEyYWQ2
NjBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIFJlZjxNZWRpYVN0cmVhbVByaXZhdGU+IGNyZWF0ZShSZWY8Y29uc3QgTG9nZ2VyPiYm
LCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CiAgICAgc3RhdGljIFJlZjxNZWRpYVN0cmVh
bVByaXZhdGU+IGNyZWF0ZShSZWY8Y29uc3QgTG9nZ2VyPiYmLCBSZWZQdHI8UmVhbHRpbWVNZWRp
YVNvdXJjZT4mJiBhdWRpb1NvdXJjZSwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgdmlk
ZW9Tb3VyY2UpOwotICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1Qcml2YXRlPiBjcmVhdGUoUmVm
PGNvbnN0IExvZ2dlcj4mJiBsb2dnZXIsIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlVmVj
dG9yJiB0cmFja3MsIFN0cmluZyYmIGlkID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU3RyZWFtUHJpdmF0ZShXVEZNb3ZlKGxvZ2dlciks
IHRyYWNrcywgV1RGTW92ZShpZCkpKTsgfQorICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1Qcml2
YXRlPiBjcmVhdGUoUmVmPGNvbnN0IExvZ2dlcj4mJiBsb2dnZXIsIGNvbnN0IE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlVmVjdG9yJiB0cmFja3MsIFN0cmluZyYmIGlkID0gY3JlYXRlVmVyc2lvbjRV
VUlEU3RyaW5nKCkpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW1Qcml2YXRlKFdU
Rk1vdmUobG9nZ2VyKSwgdHJhY2tzLCBXVEZNb3ZlKGlkKSkpOyB9CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIH5NZWRpYVN0cmVhbVByaXZhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuY3BwCmluZGV4IDQ0Mjk1M2ExYTNmMzQ2Y2Y3ZjQxOTljNzFlMjc1YTkzZTI1MTVlMDcu
LmVjMzJiYTg1Y2NmODQ3MjUzODM1MjY4MTg1OWM0MDc3ZWJkNDk5MmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpj
cmVhdGUoUmVmPGNvbnN0IExvZ2dlcj4mJiBsb2dnZXIsIFJlZjxSZWFsdGltZU1lZGlhU291cmNl
PiYmIHNvdXJjZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUobG9nZ2VyKSwgV1RGTW92
ZShzb3VyY2UpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOworICAgIHJldHVybiBjcmVh
dGUoV1RGTW92ZShsb2dnZXIpLCBXVEZNb3ZlKHNvdXJjZSksIGNyZWF0ZVZlcnNpb240VVVJRFN0
cmluZygpKTsKIH0KIAogUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZTo6Y3JlYXRlKFJlZjxjb25zdCBMb2dnZXI+JiYgbG9nZ2VyLCBSZWY8UmVhbHRp
bWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UsIFN0cmluZyYmIGlkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNw
cAppbmRleCAxZGQxZTVmZTViMTQxMWVjOTEzZWE3MDQwNDliMzZjMDI2YmIyMGMxLi4zZDg2ODI2
MTE5YmJkYWQ5OTdjMjBjMmE1N2U0YWQ4ZWE0Y2Y2N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNw
cApAQCAtNTUsNyArNTUsNyBAQCBSZWFsdGltZU1lZGlhU291cmNlOjpSZWFsdGltZU1lZGlhU291
cmNlKFR5cGUgdHlwZSwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgZGV2aQogICAgICwgbV9uYW1l
KFdURk1vdmUobmFtZSkpCiB7CiAgICAgaWYgKG1fcGVyc2lzdGVudElELmlzRW1wdHkoKSkKLSAg
ICAgICAgbV9wZXJzaXN0ZW50SUQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisgICAg
ICAgIG1fcGVyc2lzdGVudElEID0gY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7CiAKICAgICBt
X2hhc2hlZElEID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuaGFzaFN0
cmluZ1dpdGhTYWx0KG1fcGVyc2lzdGVudElELCBtX2lkSGFzaFNhbHQpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
ckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5h
Z2VyLmNwcAppbmRleCA2OWE1MjhmYTYyZjZiZTkwNjViNDIxNTkzNDQ4YTA0MTc0YWM4Y2E5Li40
MWM4YTQ4MzAzODQ2ZDRkYmFlM2IzOTc4NDZiNTI5NzJlNmEwMjA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxh
eUNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6Y29tcHV0ZUNhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25IYW5kbAogewogICAgIG1f
ZGV2aWNlcy5jbGVhcigpOwogCi0gICAgQ2FwdHVyZURldmljZSBzY3JlZW5DYXB0dXJlRGV2aWNl
KGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
U2NyZWVuLCBtYWtlU3RyaW5nKCJDYXB0dXJlIFNjcmVlbiIpKTsKKyAgICBDYXB0dXJlRGV2aWNl
IHNjcmVlbkNhcHR1cmVEZXZpY2UoY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCksIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgbWFrZVN0cmluZygiQ2FwdHVyZSBTY3JlZW4iKSk7
CiAgICAgc2NyZWVuQ2FwdHVyZURldmljZS5zZXRFbmFibGVkKHRydWUpOwogICAgIG1fZGV2aWNl
cy5hcHBlbmQoV1RGTW92ZShzY3JlZW5DYXB0dXJlRGV2aWNlKSk7CiAgICAgY2FsbGJhY2soKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCmlu
ZGV4IGYzNzI5M2I5NTU2NWQ2YmVkYmJlOWYwNjlmNGY5YmJhZTNkODIxOGEuLmVkMWEwODI4ODAy
ZjdhMzlmYWRmNDc0ZTY1ZTUxNjhhNjE0NzhhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcApAQCAtNTc0LDcgKzU3NCw3IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3JjUG9zdFN0cmVhbUNvbGxlY3Rpb24oV2ViS2l0TWVk
aWFTdHJlYW1TcmMqIHNlbGYpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHVw
c3RyZWFtSWQgPSBwcml2LT5zdHJlYW0gPyBwcml2LT5zdHJlYW0tPmlkKCkgOiBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCk7CisgICAgYXV0byB1cHN0cmVhbUlkID0gcHJpdi0+c3RyZWFtID8g
cHJpdi0+c3RyZWFtLT5pZCgpIDogY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7CiAgICAgcHJp
di0+c3RyZWFtQ29sbGVjdGlvbiA9IGFkb3B0R1JlZihnc3Rfc3RyZWFtX2NvbGxlY3Rpb25fbmV3
KHVwc3RyZWFtSWQuYXNjaWkoKS5kYXRhKCkpKTsKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogcHJp
di0+dHJhY2tzKSB7CiAgICAgICAgIGlmICghdHJhY2stPmlzQWN0aXZlKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVwbGF5S2l0Q2FwdHVy
ZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBs
YXlLaXRDYXB0dXJlU291cmNlLm1tCmluZGV4IDU1ZjYzNWJmMmNmOGVhNGMxZmJlZmUxZjgyYTkz
OGJiNWVjODMyNjAuLmU3Y2RlYjVjNjUzOGY4N2UxZTU5YWRlZTAyNTQ4NGQ5YzAxNGU4YTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlL
aXRDYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9p
ZCBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzdGFydENhcHR1cmVXYXRjaGRvZ1RpbWVyKCkKIAog
c3RhdGljIFN0cmluZyBzY3JlZW5EZXZpY2VVVUlEKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBzY3JlZW5JRCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY3JlZW5JRCA9IGNyZWF0ZVZlcnNpb240
VVVJRFN0cmluZygpOwogICAgIHJldHVybiBzY3JlZW5JRDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmluZGV4IDg1Y2UyNDJkYzY1M2NmYzlmMzA3NDc1ZWM1ZGM2MWViNjAz
YTY1MzQuLmY5ZDA4ZDBhZGM0NGFlM2NmNWZhOWQyNTdlMmExMjg1OWEwNDE0YmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTI3NjcsNyArMjc2Nyw3IEBAIFN0cmluZyBJ
bnRlcm5hbHM6OmRvY3VtZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNv
bnN0CiAKIGJvb2wgSW50ZXJuYWxzOjppc0RvY3VtZW50QWxpdmUoY29uc3QgU3RyaW5nJiBkb2N1
bWVudElkZW50aWZpZXIpIGNvbnN0CiB7Ci0gICAgYXV0byB1dWlkID0gVVVJRDo6cGFyc2UoZG9j
dW1lbnRJZGVudGlmaWVyKTsKKyAgICBhdXRvIHV1aWQgPSBVVUlEOjpwYXJzZVZlcnNpb240KGRv
Y3VtZW50SWRlbnRpZmllcik7CiAgICAgQVNTRVJUKHV1aWQpOwogICAgIHJldHVybiB1dWlkID8g
RG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCgpLmNvbnRhaW5zKHsgKnV1aWQsIFByb2Nlc3M6Omlk
ZW50aWZpZXIoKSB9KSA6IGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmNwcAppbmRleCA4NGZhMjljZTFmMzAwZmUyOTBiMDQxNDY0OGYwZjcyOTBhN2NiZWJk
Li4yMDUyNzk1NTI4MzZlMDQ0ZGQ3YzJhOGVhMzIxNjgyZDkxNzkzOGMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQg
TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5z
ZVR5cGUsIGNvbnN0IEF0b21TCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcg
c2Vzc2lvbklEID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgIFN0cmluZyBzZXNz
aW9uSUQgPSBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKTsKICAgICBmYWN0b3J5LT5hZGRLZXlz
VG9TZXNzaW9uV2l0aElEKHNlc3Npb25JRCwgV1RGTW92ZShrZXlJRHMudmFsdWUoKSkpOwogCiAg
ICAgQ1N0cmluZyBsaWNlbnNlIHsgImxpY2Vuc2UiIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
RHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9T
ZXNzaW9uSG9zdEdsaWIuY3BwCmluZGV4IGU2MjZhMTdhNDFlNWU0MzJhMDc5ZWE0Y2U0NzBlNmY5
YWRmNWM1OTMuLjllNDYwMjcxOGZlOTc5MTMxZWM5ODBiZmQxZTZlNGY0OGY3YzdhOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCkBAIC0zMDYsNyArMzA2LDcg
QEAgdm9pZCBTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihGdW5jdGlvbjx2b2lk
IChib29sLCBzdGQ6Om9wdGlvbmFsPFN0cmkKICAgICBBU1NFUlQobV9zb2NrZXRDb25uZWN0aW9u
KTsKICAgICBBU1NFUlQoIW1fc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIG1f
c3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KTsKLSAgICBtX3Nlc3Npb25JRCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICBt
X3Nlc3Npb25JRCA9IGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwogICAgIEdWYXJpYW50QnVp
bGRlciBidWlsZGVyOwogICAgIG1fc29ja2V0Q29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoIlN0YXJ0
QXV0b21hdGlvblNlc3Npb24iLCBnX3ZhcmlhbnRfbmV3KCIoc2F7c3Z9KSIsIG1fc2Vzc2lvbklE
LnV0ZjgoKS5kYXRhKCksIGJ1aWxkU2Vzc2lvbkNhcGFiaWxpdGllcygmYnVpbGRlcikgPyAmYnVp
bGRlciA6IG51bGxwdHIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L1Nlc3Npb25Ib3N0U29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L1Nlc3Npb25I
b3N0U29ja2V0LmNwcAppbmRleCA2ODkyYjNmMzgwY2ViNzI1NTM5NTc3MTkyNTZiNWEwOWQ5OWU5
ZjhiLi5lNGRlOGNkMTUwNzljNTYwOTc2MjM3NGM5YTNkNzI1MTlkNzQ0ZWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9TZXNzaW9uSG9zdFNvY2tldC5jcHAKKysrIGIvU291
cmNlL1dlYkRyaXZlci9zb2NrZXQvU2Vzc2lvbkhvc3RTb2NrZXQuY3BwCkBAIC0xNTAsNyArMTUw
LDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihGdW5jdGlvbjx2
b2lkIChib29sLCBzdGQ6Om9wdGlvbmFsPFN0cmkKIHsKICAgICBBU1NFUlQoIW1fc3RhcnRTZXNz
aW9uQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIG1fc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBtX3Nlc3Npb25JRCA9IGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICBtX3Nlc3Npb25JRCA9IGNyZWF0ZVZlcnNpb240
VVVJRFN0cmluZygpOwogCiAgICAgYXV0byBzZW5kTWVzc2FnZUV2ZW50ID0gSlNPTjo6T2JqZWN0
OjpjcmVhdGUoKTsKICAgICBzZW5kTWVzc2FnZUV2ZW50LT5zZXRTdHJpbmcoImV2ZW50Il9zLCAi
U3RhcnRBdXRvbWF0aW9uU2Vzc2lvbiJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDI2YmQxMDcxOTk0YjNmODI3YmQ3ZDU5NzQ1
MzlhZjE0OWMxNjIyY2EuLjI0NWM0NzI2MjI2OTkxNzYyZjQyOGQ1NDkxMDMxZDYwOGYxNTg1OWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CkBAIC00NzMsNyArNDczLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgc2hvdWxkVXNlVGVzdGkKICAgICAKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gc3Rv
cmFnZVNlc3Npb247Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBt
YWtlU3RyaW5nKGlkZW50aWZpZXJCYXNlLCAiLlByaXZhdGVCcm93c2luZy4iLCBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCkpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjZklkZW50aWZpZXIgPSBtYWtlU3RyaW5nKGlkZW50aWZpZXJCYXNlLCAiLlByaXZh
dGVCcm93c2luZy4iLCBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSkuY3JlYXRlQ0ZTdHJpbmco
KTsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHN0b3JhZ2VTZXNz
aW9uID0gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSk7CiAg
ICAgZWxzZSBpZiAoc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDZmMjZiNGNjMmRlZmEwZDk4ODdj
NmY0MjQ1ZThmNTRmYmVjNGJhMmIuLjNjZWNjNWM1OWQyNzdlNDM4YzdhZmRlMjhkMDRhY2ZmZTQ2
Yjc1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVWYXJ5SW5mb3JtYXRpb24oUmVjb3JkSW5mb3JtYXRpb24m
IHJlY29yZEluZm9ybWF0aW9uLCBjCiAKIFJlY29yZEluZm9ybWF0aW9uIENhY2hlOjp0b1JlY29y
ZEluZm9ybWF0aW9uKGNvbnN0IFJlY29yZCYgcmVjb3JkKQogewotICAgIEtleSBrZXkgeyAicmVj
b3JkIl9zLCBtX3VuaXF1ZU5hbWUsIHsgfSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBt
X2NhY2hlcy5zYWx0KCkgfTsKKyAgICBLZXkga2V5IHsgInJlY29yZCJfcywgbV91bmlxdWVOYW1l
LCB7IH0sIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpLCBtX2NhY2hlcy5zYWx0KCkgfTsKICAg
ICBSZWNvcmRJbmZvcm1hdGlvbiByZWNvcmRJbmZvcm1hdGlvbiB7IFdURk1vdmUoa2V5KSwgTW9u
b3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKSwgcmVj
b3JkLmlkZW50aWZpZXIsIDAgLCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZSwgcmVjb3JkLnJlcXVl
c3QudXJsKCksIGZhbHNlLCB7IH0gfTsKIAogICAgIHVwZGF0ZVZhcnlJbmZvcm1hdGlvbihyZWNv
cmRJbmZvcm1hdGlvbiwgcmVjb3JkLnJlcXVlc3QsIHJlY29yZC5yZXNwb25zZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggZTVlYzA0ZTI5MzgxZTc0MWY0NGQ5Yzk0NzBiZmYy
YmYyYjg1YmJhYy4uYzkyMmRmM2IyMjBjNGUwYzVjODE1ZTFhMTI1MGFhZGFjMDA5OGUwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAtMzIzLDcgKzMyMyw3IEBAIHZvaWQgQ2Fj
aGVzOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBj
YWxsYmFjaykKICAgICBtYWtlRGlydHkoKTsKIAogICAgIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciA9IG1fZW5naW5lLT5uZXh0Q2FjaGVJZGVudGlmaWVyKCk7Ci0gICAgbV9jYWNoZXMuYXBwZW5k
KENhY2hlIHsgKnRoaXMsIGNhY2hlSWRlbnRpZmllciwgQ2FjaGU6OlN0YXRlOjpPcGVuLCBTdHJp
bmcgeyBuYW1lIH0sIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSB9KTsKKyAgICBtX2NhY2hl
cy5hcHBlbmQoQ2FjaGUgeyAqdGhpcywgY2FjaGVJZGVudGlmaWVyLCBDYWNoZTo6U3RhdGU6Ok9w
ZW4sIFN0cmluZyB7IG5hbWUgfSwgY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkgfSk7CiAKICAg
ICB3cml0ZUNhY2hlc1RvRGlzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgY2FjaGVJ
ZGVudGlmaWVyXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAg
ICAgY2FsbGJhY2soQ2FjaGVJZGVudGlmaWVyT3BlcmF0aW9uUmVzdWx0IHsgY2FjaGVJZGVudGlm
aWVyLCAhIWVycm9yIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcAppbmRleCAzMjgyY2I0OTAxZDU5
NzA2OTI1ZjFiZGYyMzMxMTI4YTAzNWIzNzJiLi40ZTA1OTYzNzIyMmI5YzFkODA3ZGU2ZDBiZjk2
NWZlNzYzNTg0OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBA
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyTUROU05hbWVDYWxsYmFjayhETlNTZXJ2aWNlUmVmLCBETlNS
ZWNvcmRSZWYgcmVjb3JkLCBETlNTZXJ2CiAKIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVn
aXN0ZXJNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzKQogewotICAgIGF1dG8gbmFtZSA9IG1ha2VTdHJp
bmcoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCAiLmxvY2FsIik7CisgICAgYXV0byBuYW1l
ID0gbWFrZVN0cmluZyhjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSwgIi5sb2NhbCIpOwogCiAg
ICAgRE5TU2VydmljZVJlZiBzZXJ2aWNlOwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3NlcnZpY2Vz
LmZpbmQoZG9jdW1lbnRJZGVudGlmaWVyKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIE5ldHdv
cmtNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZQogdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1l
KE1ETlNSZWdpc3RlcklkZW50aWZpZXIgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBpcEFkZHJlc3MpCiB7CiAgICAgTUROU19SRUxFQVNFX0xPRygicmVnaXN0ZXJNRE5TTmFt
ZSBub3QgaW1wbGVtZW50ZWQiKTsKLSAgICBhdXRvIG5hbWUgPSBtYWtlU3RyaW5nKGNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKSwgIi5sb2NhbCIpOworICAgIGF1dG8gbmFtZSA9IG1ha2VTdHJp
bmcoY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCksICIubG9jYWwiKTsKIAogICAgIG1fY29ubmVj
dGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hl
ZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbmFtZSwgV2ViQ29yZTo6
TUROU1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkIH0sIDApOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggY2FjYWViNDFlYjI2
NTU5YWM1OTA1MWI0MTJkOGUxYTIwZGIzMTE0NC4uNTVjM2U3MjExYmU3YzhmNTE3MTQyMjgxNjNi
MzU3YmQ0Yzk4YmEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCkBAIC0yNzQwLDcgKzI3NDAsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0QW5k
QWRkSGlnaGxpZ2h0KFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiYgYnVmZmVycywg
TgogewogICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKQotICAgIGF1dG8gaWRlbnRpZmllciA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsK
KyAgICBhdXRvIGlkZW50aWZpZXIgPSBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKTsKICAgICBh
dXRvIGF0dGFjaG1lbnQgPSBBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZShpZGVudGlmaWVyLCAqX3Bh
Z2UpOwogICAgIGF0dGFjaG1lbnQtPnNldEZpbGVXcmFwcGVyQW5kVXBkYXRlQ29udGVudFR5cGUo
ZmlsZVdyYXBwZXIsIGNvbnRlbnRUeXBlKTsKICAgICBfcGFnZS0+aW5zZXJ0QXR0YWNobWVudChh
dHRhY2htZW50LmNvcHlSZWYoKSwgW2NhcHR1cmVkSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcildIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggNWI2NjI2MTc0OWI4
ZDA2ZGQ1ZDQ5NGY4ODBlMzQ5YTM2ZTViZWJmMy4uNDZkNGNjZGQxNGFhOGU1OWQ2ODUzM2IwMWJl
Nzk5ZjIxNDVkMWU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTE5MCw3ICsxOTAsNyBA
QCBTdHJpbmcgV2ViQXV0b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYlBhZ2VQcm94eShjb25z
dCBXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcgogICAgIGlmIChpdGVyICE9IG1fd2ViUGFnZUhhbmRs
ZU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogCi0gICAgU3RyaW5nIGhh
bmRsZSA9ICJwYWdlLSIgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkuY29udmVydFRvQVND
SUlVcHBlcmNhc2UoKTsKKyAgICBTdHJpbmcgaGFuZGxlID0gInBhZ2UtIiArIGNyZWF0ZVZlcnNp
b240VVVJRFN0cmluZygpLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7CiAKICAgICBhdXRvIGZp
cnN0QWRkUmVzdWx0ID0gbV93ZWJQYWdlSGFuZGxlTWFwLmFkZCh3ZWJQYWdlUHJveHkuaWRlbnRp
ZmllcigpLCBoYW5kbGUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGZpcnN0QWRkUmVzdWx0LmlzTmV3
RW50cnkpOwpAQCAtMjM5LDcgKzIzOSw3IEBAIFN0cmluZyBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
aGFuZGxlRm9yV2ViRnJhbWVJRChzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4KICAgICBp
ZiAoaXRlciAhPSBtX3dlYkZyYW1lSGFuZGxlTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRl
ci0+dmFsdWU7CiAKLSAgICBTdHJpbmcgaGFuZGxlID0gImZyYW1lLSIgKyBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCkuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKTsKKyAgICBTdHJpbmcgaGFu
ZGxlID0gImZyYW1lLSIgKyBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKS5jb252ZXJ0VG9BU0NJ
SVVwcGVyY2FzZSgpOwogCiAgICAgYXV0byBmaXJzdEFkZFJlc3VsdCA9IG1fd2ViRnJhbWVIYW5k
bGVNYXAuYWRkKCpmcmFtZUlELCBoYW5kbGUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGZpcnN0QWRk
UmVzdWx0LmlzTmV3RW50cnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KaW5kZXggMmY4YmEw
MmRhMjgwNzBjNjg4MmQ3YTUzM2ExOGY2MjE1MTk3YjZhZi4uOTc0Zjc1YTAwNGQ1ODFhNWY2ZGY3
NGFhYWM5ZDMwMmUyMzk3ZDYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCkBAIC0zMDMs
NyArMzAzLDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5c3RlbVBy
ZXZpZXdBY3Rpb24oKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lz
dGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwg
TlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKIHsKLSAgICBhdXRvIHV1aWQg
PSBVVUlEOjpwYXJzZShTdHJpbmcoZG9jdW1lbnRJRCkpOworICAgIGF1dG8gdXVpZCA9IFVVSUQ6
OnBhcnNlVmVyc2lvbjQoU3RyaW5nKGRvY3VtZW50SUQpKTsKICAgICBBU1NFUlQodXVpZCk7CiAg
ICAgaWYgKCF1dWlkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XS1NoYXJlU2hlZXQubW0KaW5kZXggMzU2NDAzMDk0NmU1MTI0ODI5N2QzYzI5MmUw
YmUxNDg5OTMyNzcxZC4uNDMzMzRiODYxNTZiMjBhMjRiN2EwNWUwM2Y4YzgxMjMwOWJhYjUzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbQpAQCAt
MzI2LDcgKzMyNiw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEZpbGVzQXNTaGFyZWFibGVVUkxzKFJl
dGFpblB0cjxOU011dGFibGVBcnJheT4mJiBzaGFyZURhdGFBcnJhCiAKICsgKE5TVVJMICopY3Jl
YXRlUmFuZG9tU2hhcmluZ0RpcmVjdG9yeUZvckZpbGU6KE5TVVJMICopdGVtcG9yYXJ5RGlyZWN0
b3J5CiB7Ci0gICAgTlNTdHJpbmcgKnJhbmRvbURpcmVjdG9yeSA9IGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKTsKKyAgICBOU1N0cmluZyAqcmFuZG9tRGlyZWN0b3J5ID0gY3JlYXRlVmVyc2lv
bjRVVUlEU3RyaW5nKCk7CiAgICAgaWYgKCFbcmFuZG9tRGlyZWN0b3J5IGxlbmd0aF0gfHwgIXRl
bXBvcmFyeURpcmVjdG9yeSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBOU1VSTCAqZGF0YVBh
dGggPSBbdGVtcG9yYXJ5RGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpyYW5k
b21EaXJlY3RvcnkgaXNEaXJlY3Rvcnk6WUVTXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5jcHAKaW5kZXggZTk2NDFmN2JhMzlhZWY5Y2Y0ZWQ3YWIxMTYwZjhlMGRjY2UxNjg4
OC4uN2M3MjU4MTA0MGE3OTI1ODg2YzA5MTg2ZGEzMGJhYTQ0NjBhZDVlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlR2VvbG9jYXRp
b25QZXJtaXNzaW9uRGUKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9O
KQotICAgIFN0cmluZyBhdXRob3JpemF0aW9uVG9rZW4gPSBhbGxvd2VkID8gY3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZygpIDogU3RyaW5nKCk7CisgICAgU3RyaW5nIGF1dGhvcml6YXRpb25Ub2tl
biA9IGFsbG93ZWQgPyBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSA6IFN0cmluZygpOwogICAg
IGlmICghYXV0aG9yaXphdGlvblRva2VuLmlzTnVsbCgpKQogICAgICAgICBtX3ZhbGlkQXV0aG9y
aXphdGlvblRva2Vucy5hZGQoYXV0aG9yaXphdGlvblRva2VuKTsKICAgICBtX3BhZ2Uuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9u
KGdlb2xvY2F0aW9uSUQsIGF1dGhvcml6YXRpb25Ub2tlbikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVu
dGljYXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCmluZGV4IDQ5MWUy
Y2FkMDNkODQxNDIwMWFiNzQ2N2RmNmY1Y2Q5OTlkZmUzZTguLmQ2NjE1YTdkODk1ODRiMjMzNzQx
MzgyYzAxOWIyOTM5YWQyODRhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFs
L1ZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgU3RyaW5n
IFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlYXRlQXV0aGVudGljYXRvcihjb25zdCBW
aXJ0dWFsQXV0aGVudGljYXQKIHsKICAgICBpZiAoY29uZmlnLnRyYW5zcG9ydCAhPSBXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRlcm5hbCkKICAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOwotICAgIGF1dG8gaWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisgICAgYXV0
byBpZCA9IGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwogICAgIG1fdmlydHVhbEF1dGhlbnRp
Y2F0b3JzLnNldChpZCwgbWFrZVVuaXF1ZVJlZjxWaXJ0dWFsQXV0aGVudGljYXRvckNvbmZpZ3Vy
YXRpb24+KGNvbmZpZykpOwogCiAgICAgcmV0dXJuIGlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKaW5kZXggMTEwOGFhZTc3OGE4NGRj
YzE3NjQ0YmM5ZDkzOTVlNDM2ZDkxZGJmNS4uYzI4N2QwYWEyOTA0ZGM4NDQ5OGYxN2M1YjIyZTQ1
MjE2ZWQ3NzVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxh
bmRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFu
ZENvbXBvc2l0b3IuY3BwCkBAIC01MDEsNyArNTAxLDcgQEAgV2F5bGFuZENvbXBvc2l0b3I6Oldh
eWxhbmRDb21wb3NpdG9yKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFN0cmluZyBk
aXNwbGF5TmFtZSA9ICJ3ZWJraXRndGstd2F5bGFuZC1jb21wb3NpdG9yLSIgKyBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCk7CisgICAgU3RyaW5nIGRpc3BsYXlOYW1lID0gIndlYmtpdGd0ay13
YXlsYW5kLWNvbXBvc2l0b3ItIiArIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwogICAgIGlm
ICh3bF9kaXNwbGF5X2FkZF9zb2NrZXQoZGlzcGxheS5nZXQoKSwgZGlzcGxheU5hbWUudXRmOCgp
LmRhdGEoKSkgPT0gLTEpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJOZXN0ZWQgV2F5bGFuZCBj
b21wb3NpdG9yIGNvdWxkIG5vdCBjcmVhdGUgZGlzcGxheSBzb2NrZXQiKTsKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW9kZWxWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW9kZWxWaWV3Lm1tCmluZGV4IDdl
OTM3MGZhMzM2NTc2MGRhMDVlYWEyN2U1MmVjN2YwYmQyMmNmMDAuLjNiNTQ5ODEzNzI2YWY1OWU1
NGIwY2U3MjNlMGJkNzZiMmY2MGE4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS01vZGVsVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tNb2RlbFZpZXcubW0KQEAgLTEyMCw3ICsxMjAsNyBAQCBTT0ZUX0xJTktfQ0xBU1MoQXNzZXRW
aWV3ZXIsIEFTVklubGluZVByZXZpZXcpOwogICAgICAgICByZXR1cm4gTk87CiAgICAgfQogCi0g
ICAgYXV0byBmaWxlTmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKSkgKyAiLnVzZHoiOworICAgIGF1dG8gZmlsZU5hbWUgPSBGaWxl
U3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSkgKyAi
LnVzZHoiOwogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocGF0aFRvRGlyZWN0b3J5LCBmaWxlTmFtZSk7CiAgICAgYXV0byBmaWxlID0gRmls
ZVN5c3RlbTo6b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3Jp
dGUpOwogICAgIGlmIChmaWxlIDw9IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3Bw
CmluZGV4IGFmZGNlM2U3Y2MwMmQyODY3NDA5Yjk2N2VmYTVlMGZiOWZmMTZmMDguLjU5YmVlOTEw
Yjc5MzE2M2U1YWJjMDE3Yjg4MzgzYzM4MTQ3NmNkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgZXZhbHVh
dGUoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFIK
IAogc3RhdGljIEpTVmFsdWVSZWYgY3JlYXRlVVVJRChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCiB7Ci0gICAgcmV0dXJuIHRvSlNWYWx1ZShjb250ZXh0LCBjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCkuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSk7CisgICAgcmV0dXJuIHRvSlNWYWx1
ZShjb250ZXh0LCBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKS5jb252ZXJ0VG9BU0NJSVVwcGVy
Y2FzZSgpKTsKIH0KIAogc3RhdGljIEpTVmFsdWVSZWYgZXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggYTc4NGVjMzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEz
N2RjZjY2ZC4uOTg0MjI3YTFlNjVlODg1YWVkOTViZmIyNmE1ZTgzNzY3ZjdlZWQ0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwv
bWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0xMDAsNyArMTAwLDcg
QEAgdm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZShXZWJD
b3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgfQogCiAgICAgLy8gV2UgbmVlZCB0byBzdXBw
b3J0IC5yZWFsaXR5IGZpbGVzIGFzIHdlbGwsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjc1NjguCi0gICAgYXV0byBmaWxlTmFtZSA9IEZpbGVTeXN0ZW06OmVuY29k
ZUZvckZpbGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkgKyAiLnVzZHoiOworICAg
IGF1dG8gZmlsZU5hbWUgPSBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShjcmVhdGVWZXJz
aW9uNFVVSURTdHJpbmcoKSkgKyAiLnVzZHoiOwogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRvRGlyZWN0b3J5LCBmaWxlTmFtZSk7
CiAgICAgYXV0byBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVTeXN0
ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwogICAgIGlmIChmaWxlIDw9IDApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBhNDVj
NjkyMzg3NzRmNjQ0ZWQ4MTk3ZjFjZjBjMTA5NmEyZTU2NTg0Li5jZDEzZjNkMGM0OGNjODQwMzI5
OTU5MzlmZmZmNWI0ODkwZjU0MjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTI1OTUsNyArMjU5NSw3IEBAIHZvaWQgUERG
UGx1Z2luOjpvcGVuV2l0aFByZXZpZXcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJp
bmcmLCBGcmFtZUluZm9ECiAgICAgRnJhbWVJbmZvRGF0YSBmcmFtZUluZm87CiAgICAgaWYgKG1f
ZnJhbWUpCiAgICAgICAgIGZyYW1lSW5mbyA9IG1fZnJhbWUtPmluZm8oKTsKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihtX3N1Z2dlc3RlZEZpbGVuYW1lLCBXVEZNb3ZlKGZyYW1lSW5mbyksIElQQzo6
IERhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyks
IGRhdGEubGVuZ3RoIH0sIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIobV9zdWdnZXN0ZWRGaWxlbmFtZSwgV1RGTW92ZShmcmFtZUluZm8pLCBJUEM6
OiBEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMp
LCBkYXRhLmxlbmd0aCB9LCBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSk7CiB9CiAKICNlbHNl
IC8vIEVOQUJMRShVSV9QUk9DRVNTX1BERl9IVUQpCkBAIC0yNjI2LDcgKzI2MjYsNyBAQCB2b2lk
IFBERlBsdWdpbjo6b3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbigpCiAKICAgICAgICAgTlNEYXRh
ICpkYXRhID0gbGl2ZURhdGEoKTsKIAotICAgICAgICBtX3RlbXBvcmFyeVBERlVVSUQgPSBjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisgICAgICAgIG1fdGVtcG9yYXJ5UERGVVVJRCA9IGNy
ZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwogICAgICAgICBBU1NFUlQobV90ZW1wb3JhcnlQREZV
VUlEKTsKIAogICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPnNhdmVQREZUb1RlbXBvcmFyeUZvbGRl
ckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24obV9zdWdnZXN0ZWRGaWxlbmFtZSwgbV9mcmFt
ZS0+aW5mbygpLCBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyICo+KFtkYXRhIGJ5dGVz
XSksIFtkYXRhIGxlbmd0aF0sIG1fdGVtcG9yYXJ5UERGVVVJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vz
c2lvbk1hcC5jcHAKaW5kZXggNGQwYjI2ZDJjZGUzYmZjMDMzNjZlYzk5MTUwM2RmYmU1YWEyMmE1
Ni4uY2Q5NzkxMDMxODZmNzk2NmU2YTdjM2VmZjlhN2JhMmNjMDg3ODk3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25N
YXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uTWFwLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cgogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gaWRlbnRpZmllciA9IG1ha2VTdHJpbmcoaWRlbnRpZmllckJhc2UsICIuUHJpdmF0
ZUJyb3dzaW5nLiIsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkuY3JlYXRlQ0ZTdHJpbmco
KTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlU3RyaW5nKGlkZW50aWZpZXJCYXNlLCAiLlBy
aXZhdGVCcm93c2luZy4iLCBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSkuY3JlYXRlQ0ZTdHJp
bmcoKTsKIAogICAgIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBzdG9yYWdlU2Vz
c2lvbjsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjNhYWIwMzdjNTkyNWUzOGM3NDAw
Njg1YTA5YjhiZjc5NDVmZTFlZi4uNGM5ZWU2ZmQ5ZmY4ZmJlNTgzNWNmOGIzMWEwYzQwZWVlMjhh
OWY1YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDIyLTAxLTIwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KKworICAgICAgICBDbGFyaWZ5IHRoYXQgc29tZSBVVUlEIHJvdXRpbmVzIGFyZSBkZWRp
Y2F0ZWQgdG8gVVVJRCB2NAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM1NDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VVUlELmNwcDoKKyAgICAgICAgKHBh
cnNlQW5kU3RyaW5naWZ5VVVJRCk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tOgorICAgICAgICAod2Fp
dFVudGlsTmV0d29ya1Byb2Nlc3NJc1Jlc3BvbnNpdmUpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6c2FsdEZvck9yaWdpbik6CisKIDIwMjItMDEtMTggIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI2NDM1Mik6
IE1haWwgY29tcG9zZSBib2R5IGZpZWxkIGRvZXMgbm90IGF2b2lkIHRoZSBrZXlib2FyZCB3aGVu
IHNjcm9sbGluZyBhZnRlciBmb2N1cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvVVVJRC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VVUlELmNw
cAppbmRleCA2MzdjNTQ2OTBkZjZiOWU0NzYxY2IxZGFkMjg1NmY4MzE4MDFiZmM5Li42ZmQ5ODQ0
YjllMTI3MGZiMWJhODBjMTIwNmVlMGU1MWY2YjgzODY2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9VVUlELmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9VVUlELmNwcApAQCAtMzQsMzggKzM0LDQxIEBAIFRFU1QoV1RGLCBCb290U2Vzc2lv
blVVSURJZGVudGl0eSkKIAogc3RhdGljIFN0cmluZyBwYXJzZUFuZFN0cmluZ2lmeVVVSUQoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBhdXRvIHV1aWQgPSBVVUlEOjpwYXJzZSh2YWx1ZSk7
CisgICAgYXV0byB1dWlkID0gVVVJRDo6cGFyc2VWZXJzaW9uNCh2YWx1ZSk7CiAgICAgaWYgKCF1
dWlkKQogICAgICAgICByZXR1cm4geyB9OwogICAgIHJldHVybiB1dWlkLT50b1N0cmluZygpOwog
fQogCi1URVNUKFdURiwgVGVzdFVVSURQYXJzaW5nKQorVEVTVChXVEYsIFRlc3RVVUlEVmVyc2lv
bjRQYXJzaW5nKQogewogICAgIC8vIHh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4
eAogCi0gICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjEyMzQ1Njc4LTlhYmMtNWRlMC04
OUFCLTAxMjM0NTY3ODlhYiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZSgiMTIz
NDU2NzgtOWFiYy00ZGVhLTc5QUItMDEyMzQ1Njc4OWFiIikpOwotICAgIEVYUEVDVF9GQUxTRSgh
IVVVSUQ6OnBhcnNlKCIxMjM0NTY3OC05YWJjLTRkZTAtN2ZmZi0wMTIzNDU2Nzg5YWIiKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjEyMzQ1Njc4LTlhYmMtNGRlMC1jMDAwMC0w
MTIzNDU2Nzg5YWIiKSk7CisgICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2VWZXJzaW9uNCgi
MTIzNDU2NzgtOWFiYy01ZGUwLTg5QUItMDEyMzQ1Njc4OWFiIikpOworICAgIEVYUEVDVF9GQUxT
RSghIVVVSUQ6OnBhcnNlVmVyc2lvbjQoIjEyMzQ1Njc4LTlhYmMtNGRlYS03OUFCLTAxMjM0NTY3
ODlhYiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZVZlcnNpb240KCIxMjM0NTY3
OC05YWJjLTRkZTAtN2ZmZi0wMTIzNDU2Nzg5YWIiKSk7CisgICAgRVhQRUNUX0ZBTFNFKCEhVVVJ
RDo6cGFyc2VWZXJzaW9uNCgiMTIzNDU2NzgtOWFiYy00ZGUwLWMwMDAwLTAxMjM0NTY3ODlhYiIp
KTsKIAotICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlKCIrZWY5NDRjMS01Y2I4LTQ4YWEt
QWQxMi1DNWY4MjNmMDA1YzMiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjZl
Zjk0NGMxLStjYjgtNDhhYS1BZDEyLUM1ZjgyM2YwMDVjMyIpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
ISFVVUlEOjpwYXJzZSgiNmVmOTQ0YzEtNWNiOC0rOGFhLUFkMTItQzVmODIzZjAwNWMzIikpOwot
ICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlKCI2ZWY5NDRjMS01Y2I4LTQ4YWEtK2QxMi1D
NWY4MjNmMDA1YzMiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjZlZjk0NGMx
LTVjYjgtNDhhYS1BZDEyLSs1ZjgyM2YwMDVjMyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFVVUlE
OjpwYXJzZVZlcnNpb240KCIrZWY5NDRjMS01Y2I4LTQ4YWEtQWQxMi1DNWY4MjNmMDA1YzMiKSk7
CisgICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2VWZXJzaW9uNCgiNmVmOTQ0YzEtK2NiOC00
OGFhLUFkMTItQzVmODIzZjAwNWMzIikpOworICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNl
VmVyc2lvbjQoIjZlZjk0NGMxLTVjYjgtKzhhYS1BZDEyLUM1ZjgyM2YwMDVjMyIpKTsKKyAgICBF
WFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZVZlcnNpb240KCI2ZWY5NDRjMS01Y2I4LTQ4YWEtK2Qx
Mi1DNWY4MjNmMDA1YzMiKSk7CisgICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2VWZXJzaW9u
NCgiNmVmOTQ0YzEtNWNiOC00OGFhLUFkMTItKzVmODIzZjAwNWMzIikpOwogCi0gICAgRVhQRUNU
X0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjAwMDAwMDAwLTAwMDAtNDAwMC04MDAwLTAwMDAwMDAwMDAw
MCIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZSgiMDAwMDAwMDAtMDAwMC00MDAw
LTgwMDAtMDAwMDAwMDAwMDAxIikpOworICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlVmVy
c2lvbjQoIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCIpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoISFVVUlEOjpwYXJzZVZlcnNpb240KCIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0w
MDAwMDAwMDAwMDEiKSk7CisgICAgRVhQRUNUX1RSVUUoISFVVUlEOjpwYXJzZVZlcnNpb240KCIw
MDAwMDAwMC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMDAwMDAiKSk7CisgICAgRVhQRUNUX1RSVUUo
ISFVVUlEOjpwYXJzZVZlcnNpb240KCIwMDAwMDAwMC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMDAw
MDEiKSk7CiAKLSAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IDEwMDsgKytjcHRyKSB7
Ci0gICAgICAgIGF1dG8gY3JlYXRlZFVVSUQgPSBVVUlEOjpjcmVhdGUoKTsKKyAgICBmb3IgKHNp
emVfdCBjcHRyID0gMDsgY3B0ciA8IDEwOyArK2NwdHIpIHsKKyAgICAgICAgYXV0byBjcmVhdGVk
VVVJRCA9IFVVSUQ6OmNyZWF0ZVZlcnNpb240KCk7CiAgICAgICAgIGF1dG8gY3JlYXRlZFN0cmlu
ZyA9IGNyZWF0ZWRVVUlELnRvU3RyaW5nKCk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMg
XG4iLCBjcmVhdGVkU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBFWFBFQ1RfRVEoY3Jl
YXRlZFN0cmluZy5sZW5ndGgoKSwgMzZ1KTsKICAgICAgICAgRVhQRUNUX0VRKGNyZWF0ZWRTdHJp
bmdbMTRdLCAnNCcpOwogICAgICAgICBFWFBFQ1RfVFJVRShjcmVhdGVkU3RyaW5nWzE5XSA9PSAn
OCcgfHwgY3JlYXRlZFN0cmluZ1sxOV0gPT0gJzknIHx8IGNyZWF0ZWRTdHJpbmdbMTldID09ICdh
JyB8fCBjcmVhdGVkU3RyaW5nWzE5XSA9PSAnYicpOwogCi0gICAgICAgIGF1dG8gdXVpZCA9IFVV
SUQ6OnBhcnNlKGNyZWF0ZWRTdHJpbmcpOworICAgICAgICBhdXRvIHV1aWQgPSBVVUlEOjpwYXJz
ZVZlcnNpb240KGNyZWF0ZWRTdHJpbmcpOwogICAgICAgICBFWFBFQ1RfVFJVRSghIXV1aWQpOwog
ICAgICAgICBFWFBFQ1RfRVEoKnV1aWQsIGNyZWF0ZWRVVUlEKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5t
bQppbmRleCBhMjBlNzJjZGIzMTVmMmM5OTgzMDcxYTQ5MDJkNzM4NjVlN2UxOGVhLi5iMTFjNjll
MjM1NGNhZjQ0Y2RkYzAwZTFlMzE5MmNlNGY4NjMyOGJkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW0KQEAgLTIy
NSw3ICsyMjUsNyBAQCBzdGF0aWMgdm9pZCB3YWl0VW50aWxOZXR3b3JrUHJvY2Vzc0lzUmVzcG9u
c2l2ZShXS1dlYlZpZXcgKndlYlZpZXcxLCBXS1dlYlZpZXcgKgogICAgIC8vIHdlIGRvbid0IHdh
bnQgdGhlIHRlc3QgdG8gZ28gb24gd2l0aCB0aGUgV2ViUHJvY2Vzc2VzIHVzaW5nIHN0YWxlIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbnMsIHdlIHVzZSB0aGUgZm9sbG93aW5nCiAgICAgLy8gdHJp
Y2sgdG8gd2FpdCB1bnRpbCBib3RoIFdlYlByb2Nlc3NlcyBhcmUgYWJsZSB0byBjb21tdW5pY2F0
ZSB3aXRoIHRoZSBuZXcgTmV0d29ya1Byb2Nlc3M6CiAgICAgLy8gVGhlIGZpcnN0IFdlYlByb2Nl
c3MgdHJpZXMgc2V0dGluZyBhIGNvb2tpZSB1bnRpbCB0aGUgc2Vjb25kIFdlYnZpZXcgaXMgYWJs
ZSB0byBzZWUgaXQuCi0gICAgYXV0byBleHBlY3RlZENvb2tpZVN0cmluZyA9IG1ha2VTdHJpbmco
IlRFU1Q9IiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKTsKKyAgICBhdXRvIGV4cGVjdGVk
Q29va2llU3RyaW5nID0gbWFrZVN0cmluZygiVEVTVD0iLCBjcmVhdGVWZXJzaW9uNFVVSURTdHJp
bmcoKSk7CiAgICAgYXV0byBzZXRUZXN0Q29va2llU3RyaW5nID0gbWFrZVN0cmluZygic2V0SW50
ZXJ2YWwoKCkgPT4geyBkb2N1bWVudC5jb29raWU9JyIsIGV4cGVjdGVkQ29va2llU3RyaW5nLCAi
JzsgfSwgMTAwKTsiKTsKICAgICBbd2ViVmlldzEgZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmlu
ZyAqKXNldFRlc3RDb29raWVTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6IFsmXSAoaWQgcmVzdWx0
LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBFWFBFQ1RfVFJVRSghZXJyb3IpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1
dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA0NGQwOGY4NDAyMjY0YzI3MjBlMjMwNTZmN2M1NTY5
YzRjYjQ4YjIyLi45YTY4ZTZlNDUxZmVmMTNiZjUwMDdjYjJmMDM3NjUwYWMzM2ZmZGMyIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRp
b25TZXNzaW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMzAwLDcgKzMwMCw3IEBAIGNvbnN0IFNvY2tl
dENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5kbGVycyBBdXRvbWF0aW9uVGVzdDo6c19tZXNzYWdlSGFu
ZGxlcnMgPSB7CiAKIHN0YXRpYyB2b2lkIHRlc3RBdXRvbWF0aW9uU2Vzc2lvblJlcXVlc3RTZXNz
aW9uKEF1dG9tYXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIFN0cmluZyBz
ZXNzaW9uSUQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisgICAgU3RyaW5nIHNlc3Np
b25JRCA9IGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwogICAgIC8vIFdlYktpdEF1dG9tYXRp
b25TZXNzaW9uOjphdXRvbWF0aW9uLXN0YXJ0ZWQgaXMgbmV2ZXIgZW1pdHRlZCBpZiBhdXRvbWF0
aW9uIGlzIG5vdCBlbmFibGVkLgogICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfY29udGV4
dF9pc19hdXRvbWF0aW9uX2FsbG93ZWQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7CiAgICAg
YXV0byogc2Vzc2lvbiA9IHRlc3QtPnJlcXVlc3RTZXNzaW9uKHNlc3Npb25JRC51dGY4KCkuZGF0
YSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYjVi
YTRmM2VhZWUwYzFiMDlhMjFiMjVkZTAzYTBlOTc2NWU2NjEyOS4uNzc3MjI0MDEyZWZjMzhjY2Ex
Yzc4ODM2N2EwM2UxMmRlYWYyNGVjMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKQEAgLTI0ODYsMTMgKzI0ODYsMTMgQEAgU3RyaW5nIFRlc3RDb250cm9sbGVy
OjpzYWx0Rm9yT3JpZ2luKFdLRnJhbWVSZWYgZnJhbWUsIFN0cmluZyBvcmlnaW5IYXNoKQogICAg
ICAgICAgICAgcmV0dXJuIGZyYW1lU2FsdDsKIAogICAgICAgICBpZiAoIXNldHRpbmdzLnBlcnNp
c3RlbnRTYWx0KCkubGVuZ3RoKCkpCi0gICAgICAgICAgICBzZXR0aW5ncy5zZXRQZXJzaXN0ZW50
U2FsdChjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOworICAgICAgICAgICAgc2V0dGluZ3Mu
c2V0UGVyc2lzdGVudFNhbHQoY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkpOwogCiAgICAgICAg
IHJldHVybiBzZXR0aW5ncy5wZXJzaXN0ZW50U2FsdCgpOwogICAgIH0KIAogICAgIGlmICghZnJh
bWVTYWx0Lmxlbmd0aCgpKSB7Ci0gICAgICAgIGZyYW1lU2FsdCA9IGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKTsKKyAgICAgICAgZnJhbWVTYWx0ID0gY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5n
KCk7CiAgICAgICAgIGVwaGVtZXJhbFNhbHRzLmFkZChmcmFtZUlkZW50aWZpZXIsIGZyYW1lU2Fs
dCk7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450618</attachid>
            <date>2022-02-01 23:31:09 -0800</date>
            <delta_ts>2022-02-02 02:31:21 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235430-20220202083106.patch</filename>
            <type>text/plain</type>
            <size>65824</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4ODc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2YzA5MTdmZGU2N2ZlODA4YzFiZTZl
NjFjOWJmNWE2NWI0MTkxY2MuLjY3ZjJkNWYzNTgzOGZlNTJlOWFmZWRiMmU1NTI0ZjQ0NGZkYzNk
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjItMDItMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIENsYXJpZnkgdGhhdCBzb21lIFVVSUQgcm91dGluZXMg
YXJlIGRlZGljYXRlZCB0byBVVUlEIHY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzU0MzAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICBSZW5hbWUgVVVJRDo6Y3JlYXRlIHRvIFVVSUQ6OmNyZWF0ZVZlcnNpb240
LgorICAgICAgICBBZGQgYSBVVUlEOjpwYXJzZVZlcnNpb240IHRoYXQgdmFsaWRhdGVzIHRoZSBw
YXJzZWQgVVVJRCBpcyBhIHY0LgorICAgICAgICBSZW5hbWUgY3JlYXRlQ2Fub25pY2FsVVVJRFN0
cmluZyB0byBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcgZm9yIGNvbnNpc3RlbmN5LgorCisgICAg
ICAgIFVwZGF0ZSBVVUlEIGNvbnN0cnVjdG9yIHRvIGdlbmVyYXRlIGEgVVVJRCB2NCBhcyBwZXIg
c3BlYy4KKyAgICAgICAgVXBkYXRlIFVVSUQ6OnRvU3RyaW5nIHRvIGdlbmVyYXRlIGEgc3RyaW5n
IHJlcHJlc2VudGF0aW9uIG9mIGFueSBVVUlELCBhbmQgbm90IHNwZWNpZmljYWxseSB0byB2NC4K
KworICAgICAgICAqIHd0Zi9JZGVudGlmaWVkLmg6CisgICAgICAgIChXVEY6OlVVSURJZGVudGlm
aWVkOjpVVUlESWRlbnRpZmllZCk6CisgICAgICAgICogd3RmL1VSTC5jcHA6CisgICAgICAgIChX
VEY6OlVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQpOgorICAgICAgICAqIHd0Zi9VVUlELmNw
cDoKKyAgICAgICAgKFdURjo6VVVJRDo6VVVJRCk6CisgICAgICAgIChXVEY6OlVVSUQ6OnRvU3Ry
aW5nIGNvbnN0KToKKyAgICAgICAgKFdURjo6VVVJRDo6cGFyc2UpOgorICAgICAgICAoV1RGOjpV
VUlEOjpwYXJzZVZlcnNpb240KToKKyAgICAgICAgKFdURjo6Y3JlYXRlVmVyc2lvbjRVVUlEU3Ry
aW5nKToKKyAgICAgICAgKFdURjo6aXNWZXJzaW9uNFVVSUQpOgorICAgICAgICAoV1RGOjpjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVVVJRC5oOgor
ICAgICAgICAoV1RGOjpVVUlEOjpjcmVhdGVWZXJzaW9uNCk6CisgICAgICAgIChXVEY6OlVVSUQ6
OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3Bw
OgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorCiAy
MDIyLTAxLTMxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2ZXJ0IE9TQWxsb2NhdG9yIGJlaGF2aW9yIHRvIHByZS1TdHJ1Y3R1cmUtQWxsb2NhdG9yIGNo
YW5nZSBvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNGMzNDg2OWU4ZGYyZjIwMjFlNDM0OWUxODU0MWMwNjQx
YTAxNDdmLi5jNmIxYjY5ODFjNDQ4YTk4MzBjNzgyZGExMjMyY2QwMjNjYTk3NjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMjItMDItMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIENsYXJpZnkgdGhhdCBzb21lIFVVSUQgcm91dGluZXMgYXJl
IGRlZGljYXRlZCB0byBVVUlEIHY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzU0MzAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3IsIHRoaXMgaXMgcmVuYW1pbmcgb25seS4K
KworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Np
b25DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQ2xlYXJLZXk6OkNE
TVNlc3Npb25DbGVhcktleSk6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVT
eXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6RE9NRmlsZVN5c3Rl
bSk6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBcHBIaWdobGlnaHRSYW5nZURhdGEpOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzSG9zdDo6Z2VuZXJhdGVVVUlEKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYURldmljZXM6Ok1lZGlhRGV2aWNlcyk6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVz
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZURhdGFiYXNlRmlsZU5hbWUpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBdHNwaTo6cmVnaXN0ZXJSb290KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBdHNwaTo6cmVnaXN0ZXJPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUF0c3BpOjpyZWdpc3Rlckh5cGVybGluayk6CisgICAgICAg
ICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZy
YW1lRWZmZWN0Ojpjb3B5UHJvcGVydGllc0Zyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZnJhbWVFZmZlY3Q6OnVwZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OktleWZyYW1lRWZmZWN0Ojpjb21wdXRlQ1NTVHJhbnNpdGlvbkJsZW5kaW5nS2V5ZnJhbWVz
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6Om9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpkaWRJbnNlcnRBdHRhY2htZW50RWxlbWVudCk6CisgICAgICAgICogZmls
ZWFwaS9CbG9iVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JVUkw6OmNyZWF0ZUJsb2JV
UkwpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6ZW5zdXJlVW5pcXVlSWRlbnRpZmllcik6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1Vu
aXF1ZUZpbGVJbkRpcmVjdG9yeSk6CisgICAgICAgICogcGFnZS9DcnlwdG8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvOjpyYW5kb21VVUlEIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6
UHJvY2Vzc1F1YWxpZmllZDxVVUlEPjo6Z2VuZXJhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGOjpDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uQ0YpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vz
c2lvbkFWRm91bmRhdGlvbk9iakM6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJl
YW1TZXNzaW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lv
bjo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmltYXRp
b25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlJlYWx0aW1lTWVkaWFT
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0
cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb21wdXRlQ2FwdHVyZURldmljZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YVN0cmVhbVNvdXJjZS5jcHA6CisgICAgICAgICh3ZWJraXRNZWRpYVN0cmVhbVNyY1Bvc3RTdHJl
YW1Db2xsZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVwbGF5
S2l0Q2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRldmljZVVVSUQp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6aXNEb2N1bWVudEFsaXZlIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246
OnJlcXVlc3RMaWNlbnNlKToKKwogMjAyMi0wMi0wMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgQVg6IG51bGxwdHIgY3Jhc2ggdW5kZXIgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cK
aW5kZXggNjhjOGQ0NjRiMTgwMDA3NDYwMjgwZTkyZTk0OTYzN2NkNDVlMDVmNC4uNzc1NjJkZWQ2
ZWUxNDhjYTAyMzExOTY5ODU1OGUyMDA3ZWM4ZDVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRy
aXZlci9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAyMi0wMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgQ2xhcmlmeSB0aGF0IHNvbWUgVVVJRCByb3V0aW5lcyBhcmUgZGVkaWNhdGVkIHRv
IFVVSUQgdjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNTQzMAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICog
Z2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9z
dDo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAgICAgICogc29ja2V0L1Nlc3Npb25Ib3N0
U29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbkhvc3Q6OnN0YXJ0QXV0b21h
dGlvblNlc3Npb24pOgorCiAyMDIxLTA5LTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgU3RvcCB1c2luZyBtYWtlUmVmKCp0aGlzKSAvIG1ha2VSZWZQdHIodGhp
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggNjBiZTQyY2I1Yzc2YWRkNGQxOGU0YWNlMGNiNjQyZTYxMTRiYTMzNS4u
ZGUzYjc1NTVhY2UyZTgwOTQ2OGE4YzE4NWRhNjk4N2M3NjlhZWVhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAyMi0wMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CisKKyAgICAgICAgQ2xhcmlmeSB0aGF0IHNvbWUgVVVJRCByb3V0aW5lcyBhcmUgZGVkaWNhdGVk
IHRvIFVVSUQgdjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNTQzMAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlOjp0b1JlY29yZEluZm9ybWF0aW9uKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6b3Blbik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbnNlcnRBdHRh
Y2htZW50V2l0aEZpbGVXcmFwcGVyOmNvbnRlbnRUeXBlOmNvbXBsZXRpb246XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aGFuZGxlRm9yV2ViUGFnZVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYkZyYW1l
SUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNv
Y29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW06CisgICAg
ICAgICgrW1dLU2hhcmVTaGVldCBjcmVhdGVSYW5kb21TaGFyaW5nRGlyZWN0b3J5Rm9yRmlsZTpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1
dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VmlydHVhbEF1dGhlbnRp
Y2F0b3JNYW5hZ2VyOjpjcmVhdGVBdXRoZW50aWNhdG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBv
c2l0b3I6OldheWxhbmRDb21wb3NpdG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLTW9k
ZWxWaWV3Lm1tOgorICAgICAgICAoLVtXS01vZGVsVmlldyBjcmVhdGVGaWxlRm9yTW9kZWw6XSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVVVUlEKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46Om9wZW5XaXRoUHJldmlldyk6CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6b3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbik6CisKIDIwMjItMDItMDEgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5IHNob3VsZCBub3QgYmUgYSBJUEM6Ok1lc3NhZ2VTZW5kZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggNDU1YjMzZjYwOGQwZGVmYmEzNzY5ZWRlZDI4ZmEyNjBjMDBk
YzZmOS4uZGY0MTFkNmY4NGExZDk1YWI5NzQ1MGNlNWZlYWMzNzk4NDA5NmE4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMi0wMSAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xhcmlmeSB0aGF0IHNvbWUgVVVJRCByb3V0
aW5lcyBhcmUgZGVkaWNhdGVkIHRvIFVVSUQgdjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTQzMAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
TWFwLmNwcDoKKyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lv
bik6CisKIDIwMjItMDEtMjcgIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtYQ0J1aWxkXSBBZGQgbWlzc2luZyB0YXNrIGRlcGVuZGVuY2llcyBvbiBnZW5lcmF0
ZS11bmlmaWVkLXNvdXJjZS1idW5kbGVzLnJiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9J
ZGVudGlmaWVkLmggYi9Tb3VyY2UvV1RGL3d0Zi9JZGVudGlmaWVkLmgKaW5kZXggY2I4MjQzM2Ez
OTkzYjdiYTI5OTA4OTAyY2Q5NTlkOGE3YmFkMTU1OS4uOTlkOWYzNmJlNjhiYzM4NzYwODZkN2Zj
NDAxNmUwYjhlMzE4YTYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSWRlbnRpZmllZC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0lkZW50aWZpZWQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgVVVJRElkZW50aWZpZWQgOiBwdWJsaWMgSWRlbnRp
ZmllZEJhc2U8VVVJRCwgVD4gewogcHJvdGVjdGVkOgogICAgIFVVSURJZGVudGlmaWVkKCkKLSAg
ICAgICAgOiBJZGVudGlmaWVkQmFzZTxVVUlELCBUPihVVUlEOjpjcmVhdGUoKSkKKyAgICAgICAg
OiBJZGVudGlmaWVkQmFzZTxVVUlELCBUPihVVUlEOjpjcmVhdGVWZXJzaW9uNCgpKQogICAgIHsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9VUkwuY3BwCmluZGV4IDYwY2JmNzViZTRjY2FkNzUyMDIyMzkzNWYzNTMyZmY2Y2U4MTNi
ZTguLjgzMzAxYWRjZDUyYTRhZWQ4MzY3YmM4NDFjM2NkZWU4ODNjNjA5ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAt
MTA1NCw3ICsxMDU0LDcgQEAgU3RyaW5nIFVSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVu
Z3RoKHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIAogVVJMIFVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2
ZVBhcnQoU3RyaW5nVmlldyByZWxhdGl2ZVBhcnQpCiB7Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwg
bWFrZVN0cmluZygid2Via2l0LWZha2UtdXJsOi8vIiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmlu
ZygpLCAnLycsIHJlbGF0aXZlUGFydCkpOworICAgIHJldHVybiBVUkwoVVJMKCksIG1ha2VTdHJp
bmcoIndlYmtpdC1mYWtlLXVybDovLyIsIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpLCAnLycs
IHJlbGF0aXZlUGFydCkpOwogfQogCiBVUkwgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRo
KFN0cmluZ1ZpZXcgcGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIv
U291cmNlL1dURi93dGYvVVVJRC5jcHAKaW5kZXggODVhNWUzOGRmMTE3YzQ0Njk2NDFhYWU0MjBl
NzhhZDljMWYwMjRmZC4uMmRlZDk5ZGQyYjYwZWIzZjU2NmI3NDViNjBjZGVmZTkyNTQ3YzAzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVVJRC5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
VVVJRC5jcHAKQEAgLTQ4LDEzICs0OCwxMSBAQCBVVUlEOjpVVUlEKCkKICAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihtX2RhdGEpID09IDE2KTsKICAgICBhdXRvKiBkYXRhID0gcmVpbnRlcnByZXRf
Y2FzdDx1bnNpZ25lZCBjaGFyKj4oJm1fZGF0YSk7CiAKLSAgICBkbyB7Ci0gICAgICAgIGNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKGRhdGEsIDE2KTsKLSAgICB9IHdoaWxlIChtX2RhdGEg
PT0gZW1wdHlWYWx1ZSB8fCBtX2RhdGEgPT0gZGVsZXRlZFZhbHVlKTsKKyAgICBjcnlwdG9ncmFw
aGljYWxseVJhbmRvbVZhbHVlcyhkYXRhLCAxNik7CiAKLSAgICAvLyBXZSBzYW5pdGl6ZSB0aGUg
dmFsdWUgdG8gbm90IGxvb3NlIGFueSBpbmZvcm1hdGlvbiB3aGVuIHNlcmlhbGl6aW5nIGFzIFZl
cnNpb24gNCBVVUlELgotICAgIGF1dG8gaGlnaCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PigobV9k
YXRhID4+IDY0KSAmIDB4ZmZmZmZmZmZmZmZmMGZmZik7Ci0gICAgYXV0byBsb3cgPSBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4obV9kYXRhICYgMHgzZmZmZmZmZmZmZmZmZmZmKTsKKyAgICAvLyBCeSBk
ZWZhdWx0LCB3ZSBnZW5lcmF0ZSBhIHY0IFVVSUQgdmFsdWUsIGFzIHBlciBodHRwczovL2RhdGF0
cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzQxMjIjc2VjdGlvbi00LjQuCisgICAgYXV0byBo
aWdoID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KChtX2RhdGEgPj4gNjQpICYgMHhmZmZmZmZmZmZm
ZmYwZmZmKSB8IDB4NDAwMDsKKyAgICBhdXRvIGxvdyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Piht
X2RhdGEgJiAweDNmZmZmZmZmZmZmZmZmZmYpIHwgMHg4MDAwMDAwMDAwMDAwMDAwOwogCiAgICAg
bV9kYXRhID0gKHN0YXRpY19jYXN0PFVJbnQxMjg+KGhpZ2gpIDw8IDY0KSB8IGxvdzsKIH0KQEAg
LTY3LDE3ICs2NSwxNyBAQCB1bnNpZ25lZCBVVUlEOjpoYXNoKCkgY29uc3QKIFN0cmluZyBVVUlE
Ojp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgYXV0byBoaWdoID0gc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG1fZGF0YSA+PiA2NCk7Ci0gICAgYXV0byBsb3cgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
bV9kYXRhICYgMHgzZmZmZmZmZmZmZmZmZmZmKTsKKyAgICBhdXRvIGxvdyA9IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihtX2RhdGEgJiAweGZmZmZmZmZmZmZmZmZmZmYpOwogCiAgICAgLy8gRm9ybWF0
IGFzIFZlcnNpb24gNCBVVUlELgogICAgIHJldHVybiBtYWtlU3RyaW5nKAogICAgICAgICBoZXgo
aGlnaCA+PiAzMiwgOCwgTG93ZXJjYXNlKSwKICAgICAgICAgJy0nLAogICAgICAgICBoZXgoKGhp
Z2ggPj4gMTYpICYgMHhmZmZmLCA0LCBMb3dlcmNhc2UpLAotICAgICAgICAiLTQiLAotICAgICAg
ICBoZXgoaGlnaCAmIDB4ZmZmLCAzLCBMb3dlcmNhc2UpLAogICAgICAgICAnLScsCi0gICAgICAg
IGhleCgobG93ID4+IDQ4KSB8IDB4ODAwMCwgNCwgTG93ZXJjYXNlKSwKKyAgICAgICAgaGV4KGhp
Z2ggJiAweGZmZmYsIDQsIExvd2VyY2FzZSksCisgICAgICAgICctJywKKyAgICAgICAgaGV4KGxv
dyA+PiA0OCwgNCwgTG93ZXJjYXNlKSwKICAgICAgICAgJy0nLAogICAgICAgICBoZXgobG93ICYg
MHhmZmZmZmZmZmZmZmYsIDEyLCBMb3dlcmNhc2UpCiAgICAgKTsKQEAgLTg1LDExICs4MywxMSBA
QCBTdHJpbmcgVVVJRDo6dG9TdHJpbmcoKSBjb25zdAogCiBzdGQ6Om9wdGlvbmFsPFVVSUQ+IFVV
SUQ6OnBhcnNlKFN0cmluZ1ZpZXcgdmFsdWUpCiB7Ci0gICAgLy8gVmVyc2lvbiA0IFVVSURzIGhh
dmUgdGhlIGZvcm0geHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4IHdpdGggaGV4
YWRlY2ltYWwgZGlnaXRzIGZvciB4IGFuZCBvbmUgb2YgOCwgOSwgQSwgb3IgQiBmb3IgeS4KKyAg
ICAvLyBVVUlEcyBoYXZlIHRoZSBmb3JtIHh4eHh4eHh4LXh4eHgteHh4eC14eHh4LXh4eHh4eHh4
eHh4eCB3aXRoIGhleGFkZWNpbWFsIGRpZ2l0cyBmb3IgeC4KICAgICBpZiAodmFsdWUubGVuZ3Ro
KCkgIT0gMzYpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBpZiAodmFsdWVbOF0gIT0gJy0n
IHx8IHZhbHVlWzEzXSAhPSAnLScgIHx8IHZhbHVlWzE0XSAhPSAnNCcgfHwgdmFsdWVbMThdICE9
ICctJyB8fCB2YWx1ZVsyM10gIT0gJy0nKQorICAgIGlmICh2YWx1ZVs4XSAhPSAnLScgfHwgdmFs
dWVbMTNdICE9ICctJyAgfHwgdmFsdWVbMThdICE9ICctJyB8fCB2YWx1ZVsyM10gIT0gJy0nKQog
ICAgICAgICByZXR1cm4geyB9OwogCiAgICAgLy8gcGFyc2VJbnRlZ2VyIG1heSBhY2NlcHQgaW50
ZWdlcnMgc3RhcnRpbmcgd2l0aCArLCBsZXQncyBjaGVjayB0aGlzIGJlZm9yZWhhbmQuCkBAIC0x
MDQsNyArMTAyLDcgQEAgc3RkOjpvcHRpb25hbDxVVUlEPiBVVUlEOjpwYXJzZShTdHJpbmdWaWV3
IHZhbHVlKQogICAgIGlmICghc2Vjb25kVmFsdWUpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICBhdXRvIHRoaXJkVmFsdWUgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHZhbHVlLnN1YnN0cmlu
ZygxNSwgMyksIDE2KTsKKyAgICBhdXRvIHRoaXJkVmFsdWUgPSBwYXJzZUludGVnZXI8dWludDY0
X3Q+KHZhbHVlLnN1YnN0cmluZygxNCwgNCksIDE2KTsKICAgICBpZiAoIXRoaXJkVmFsdWUpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKQEAgLTExMiwxMSArMTEwLDYgQEAgc3RkOjpvcHRpb25hbDxV
VUlEPiBVVUlEOjpwYXJzZShTdHJpbmdWaWV3IHZhbHVlKQogICAgIGlmICghZm91cnRoVmFsdWUp
CiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAvLyBGb3VydGggdmFsdWUgc3RhcnRzIHdpdGgg
J3knLCBpdCBtdXN0IGJlIGFib3ZlIDB4ODAwMCBhbmQgYmVsb3cgMHhCRkZGRi4KLSAgICBpZiAo
KCpmb3VydGhWYWx1ZSAmIDB4YzAwMCkgIT0gMHg4MDAwKQotICAgICAgICByZXR1cm4geyB9Owot
ICAgIGZvdXJ0aFZhbHVlID0gKmZvdXJ0aFZhbHVlICYgMHgzZmZmOwotCiAgICAgYXV0byBmaWZ0
aFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pih2YWx1ZS5zdWJzdHJpbmcoMjQsIDEyKSwg
MTYpOwogICAgIGlmICghZmlmdGhWYWx1ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEyNSwx
NSArMTE4LDMzIEBAIHN0ZDo6b3B0aW9uYWw8VVVJRD4gVVVJRDo6cGFyc2UoU3RyaW5nVmlldyB2
YWx1ZSkKICAgICB1aW50NjRfdCBsb3cgPSAoKmZvdXJ0aFZhbHVlIDw8IDQ4KSB8ICpmaWZ0aFZh
bHVlOwogCiAgICAgYXV0byByZXN1bHQgPSAoc3RhdGljX2Nhc3Q8VUludDEyOD4oaGlnaCkgPDwg
NjQpIHwgbG93OwotICAgIGlmIChyZXN1bHQgPT0gZW1wdHlWYWx1ZSB8fCByZXN1bHQgPT0gZGVs
ZXRlZFZhbHVlKQorICAgIGlmIChyZXN1bHQgPT0gZGVsZXRlZFZhbHVlKQogICAgICAgICByZXR1
cm4geyB9OwogCiAgICAgcmV0dXJuIFVVSUQocmVzdWx0KTsKIH0KIAotU3RyaW5nIGNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKQorc3RkOjpvcHRpb25hbDxVVUlEPiBVVUlEOjpwYXJzZVZlcnNp
b240KFN0cmluZ1ZpZXcgdmFsdWUpCit7CisgICAgYXV0byB1dWlkID0gcGFyc2UodmFsdWUpOwor
ICAgIGlmICghdXVpZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIC8vIFZlcnNpb24gNCBV
VUlEcyBoYXZlIHRoZSBmb3JtIHh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCB3
aXRoIGhleGFkZWNpbWFsIGRpZ2l0cyBmb3IgeCBhbmQgb25lIG9mIDgsIDksIEEsIG9yIEIgZm9y
IHkuCisgICAgYXV0byBoaWdoID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHV1aWQtPm1fZGF0YSA+
PiA2NCk7CisgICAgaWYgKChoaWdoICYgMHhmMDAwKSAhPSAweDQwMDApCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBhdXRvIGxvdyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1dWlkLT5tX2Rh
dGEgJiAweGZmZmZmZmZmZmZmZmZmZmYpOworICAgIGlmICgobG93ID4+IDYyKSAhPSAyKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIHV1aWQ7Cit9CisKK1N0cmluZyBjcmVhdGVW
ZXJzaW9uNFVVSURTdHJpbmcoKQogewotICAgIHJldHVybiBVVUlEOjpjcmVhdGUoKS50b1N0cmlu
ZygpOworICAgIHJldHVybiBVVUlEOjpjcmVhdGVWZXJzaW9uNCgpLnRvU3RyaW5nKCk7CiB9CiAK
IFN0cmluZyBib290U2Vzc2lvblVVSURTdHJpbmcoKQpAQCAtMTU3LDcgKzE2OCw3IEBAIFN0cmlu
ZyBib290U2Vzc2lvblVVSURTdHJpbmcoKQogCiBib29sIGlzVmVyc2lvbjRVVUlEKFN0cmluZ1Zp
ZXcgdmFsdWUpCiB7Ci0gICAgcmV0dXJuICEhVVVJRDo6cGFyc2UodmFsdWUpOworICAgIHJldHVy
biAhIVVVSUQ6OnBhcnNlVmVyc2lvbjQodmFsdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuaCBiL1NvdXJjZS9XVEYvd3RmL1VVSUQu
aAppbmRleCA4ZDY0NTE3MWI2YzYzMTRhODg2YjNlMTE0MDRlZTA5YTA1MWNjNjM2Li5mZTMzYzBm
NGMyZjNhMzJiMjQ3N2VjYzVhN2M0MzhkNGFkOWJmOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9VVUlELmgKKysrIGIvU291cmNlL1dURi93dGYvVVVJRC5oCkBAIC00NCwxMiArNDQsMTMg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgVUludDEyOCBlbXB0eVZhbHVlID0gMDsK
ICAgICBzdGF0aWMgY29uc3RleHByIFVJbnQxMjggZGVsZXRlZFZhbHVlID0gMTsKIAotICAgIHN0
YXRpYyBVVUlEIGNyZWF0ZSgpCisgICAgc3RhdGljIFVVSUQgY3JlYXRlVmVyc2lvbjQoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIFVVSUQgeyB9OwogICAgIH0KIAotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgc3RkOjpvcHRpb25hbDxVVUlEPiBwYXJzZShTdHJpbmdWaWV3KTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxVVUlEPiBwYXJzZShTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VVVJRD4gcGFyc2VWZXJzaW9uNChTdHJp
bmdWaWV3KTsKIAogICAgIGV4cGxpY2l0IFVVSUQoU3Bhbjxjb25zdCB1aW50OF90LCAxNj4gc3Bh
bikKICAgICB7CkBAIC0xNDEsNyArMTQyLDcgQEAgc3RkOjpvcHRpb25hbDxVVUlEPiBVVUlEOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIC8vIGRhdGEgc291cmNlLiBWZXJzaW9uIDQgVVVJRHMg
aGF2ZSB0aGUgZm9ybSB4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHggd2l0aCBo
ZXhhZGVjaW1hbCBkaWdpdHMgZm9yIHggYW5kIG9uZSBvZiA4LAogLy8gOSwgQSwgb3IgQiBmb3Ig
eS4KIAotV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygp
OwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGJvb3RTZXNzaW9uVVVJRFN0cmluZygpOwog
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWZXJzaW9uNFVVSUQoU3RyaW5nVmlldyk7CkBAIC0x
NDksNSArMTUwLDUgQEAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWZXJzaW9uNFVVSUQoU3Ry
aW5nVmlldyk7CiB9CiAKIHVzaW5nIFdURjo6VVVJRDsKLXVzaW5nIFdURjo6Y3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZzsKK3VzaW5nIFdURjo6Y3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nOwogdXNp
bmcgV1RGOjpib290U2Vzc2lvblVVSURTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwCmluZGV4IDFkMTU0OTRjNWMzMTk3NjZjMjMxOTQwOTIzOThmNTdmYWNmNzBmOGMu
LmE2Mzg2ZTY1YTIzMzY3NjJmNGQ0NGY3NDBjYTM2ZTAzM2VjN2M4ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgU3RyaW5nIG9wZW5U
ZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhh
bmRsZSwgY29uc3QKICAgICAvLyBGSVhNRTogU3VmZml4IGlzIG5vdCBzdXBwb3J0ZWQsIGJ1dCBP
SyBmb3Igbm93IHNpbmNlIHRoZSBjb2RlIHVzaW5nIGl0IGlzIG1hY09TLXBvcnQtb25seS4KICAg
ICBBU1NFUlRfVU5VU0VEKHN1ZmZpeCwgc3VmZml4LmlzRW1wdHkoKSk7CiAKLSAgICBHVW5pcXVl
UHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzJXMiLCBwcmVmaXgudXRmOCgp
LmRhdGEoKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKKyAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzJXMiLCBwcmVm
aXgudXRmOCgpLmRhdGEoKSwgY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSkpOwogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19n
ZXRfdG1wX2RpcigpLCBmaWxlbmFtZS5nZXQoKSwgbnVsbHB0cikpOwogICAgIEdSZWZQdHI8R0Zp
bGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aCh0ZW1wUGF0aC5nZXQoKSkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcAppbmRl
eCAzYzljZTY1ODY2MWI0ZWIzYjQ3ZTI5ZjM5Mzg1MzVjZjk3NjE3MzdkLi5kYjYyZmUwNTYwMGZi
NTRkYjE3NzY0ODIxM2EzMzJhYzIxN2JlZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETVNlc3Npb25DbGVhcktleS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIFZNJiBjbGVh
cktleVZNKCkKIAogQ0RNU2Vzc2lvbkNsZWFyS2V5OjpDRE1TZXNzaW9uQ2xlYXJLZXkoTGVnYWN5
Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQotICAgICwg
bV9zZXNzaW9uSWQoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQorICAgICwgbV9zZXNzaW9u
SWQoY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCBlYmI1YWRj
YTkxMjgzMTNjYjkzODQxMTBkOTUyNTE1NDQxMGRhZmJkLi4wMTZkMTcxNzI4NzVkMmE1MzljNmMy
YTI5NWU4ZDUyYzQ2ODUxODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
dHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIGJv
b2wgaXNWYWxpZFZpcnR1YWxQYXRoKFN0cmluZ1ZpZXcgdmlydHVhbFBhdGgpCiB9CiAKIERPTUZp
bGVTeXN0ZW06OkRPTUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYgZmlsZSkKLSAgICA6IG1fbmFtZShj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCisgICAgOiBtX25hbWUoY3JlYXRlVmVyc2lvbjRV
VUlEU3RyaW5nKCkpCiAgICAgLCBtX2ZpbGUoV1RGTW92ZShmaWxlKSkKICAgICAsIG1fcm9vdFBh
dGgoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChtX2ZpbGUtPnBhdGgoKSkpCiAgICAgLCBtX3dvcmtR
dWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiRE9NRmlsZVN5c3RlbSB3b3JrIHF1ZXVlIikpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0
b3JhZ2UuY3BwCmluZGV4IGU1ZGU4NDk0ZjM1MDQ1MzU5NGIyZjJlODhjM2RkYTMzZmE5YWY3MDQu
LmYxN2E2NTJkYmMwYzkwMDcwZDdmODg2MzUzYzM0YjU4OGE3ZWNlZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2Uu
Y3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSBjcmVh
dGVBcHBIaWdobGlnaHRSYW5nZURhdGEoY29uc3QgU3RhdGljUmFuZ2UmIHJhbmcKIHsKICAgICBh
dXRvIHRleHQgPSBwbGFpblRleHQocmFuZ2UpOwogICAgIHRleHQudHJ1bmNhdGUodGV4dFByZXZp
ZXdMZW5ndGgpOwotICAgIGF1dG8gaWRlbnRpZmllciA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJp
bmcoKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKTsK
IAogICAgIHJldHVybiB7CiAgICAgICAgIGlkZW50aWZpZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcApp
bmRleCA3ZGE2MDhmMmQ0YWZkYjAwM2U2MWMzZWRhMjY0MDdkYWM0NWYwMjE5Li4xOWEwNjllMjNi
MzlkYmI0YTcwNjVkOGRlNzhkN2VlNDkzYzY5ODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKQEAg
LTM0Niw3ICszNDYsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHNIb3N0OjpzZXRDb250cm9sc0RlcGVu
ZE9uUGFnZVNjYWxlRmFjdG9yKGJvb2wgdmFsdWUpCiAKIFN0cmluZyBNZWRpYUNvbnRyb2xzSG9z
dDo6Z2VuZXJhdGVVVUlEKCkKIHsKLSAgICByZXR1cm4gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmlu
ZygpOworICAgIHJldHVybiBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKTsKIH0KIAogI2lmIEVO
QUJMRShNT0RFUk5fTUVESUFfQ09OVFJPTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKaW5kZXggMWFlNTBlOWQ0YmViMDk2ZTBi
MDIxNjk1NGRmZjQ2NjZjNTIyM2E1YS4uOGUwMmJjODlkN2UzNjU4Mjc1YTU3NjAwNzk4YmY5NWQy
Nzg3MzdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLmNwcApAQCAtNTcsNyArNTcsNyBAQCBpbmxpbmUgTWVkaWFEZXZpY2VzOjpN
ZWRpYURldmljZXMoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGRv
Y3VtZW50KQogICAgICwgbV9zY2hlZHVsZWRFdmVudFRpbWVyKCp0aGlzLCAmTWVkaWFEZXZpY2Vz
OjpzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQpCiAgICAgLCBtX2V2ZW50TmFtZXMoZXZlbnROYW1l
cygpKQotICAgICwgbV9ncm91cElkSGFzaFNhbHQoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
KQorICAgICwgbV9ncm91cElkSGFzaFNhbHQoY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkpCiB7
CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE1lZGlhRGV2aWNlczo6RGlz
cGxheUNhcHR1cmVTdXJmYWNlVHlwZTo6TW9uaXRvcikgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6TW9uaXRvciks
ICJNZWRpYURldmljZXM6OkRpc3BsYXlDYXB0dXJlU3VyZmFjZVR5cGU6Ok1vbml0b3IgaXMgbm90
IGVxdWFsIHRvIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBl
OjpNb25pdG9yIGFzIGV4cGVjdGVkIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxz
aXplX3Q+KE1lZGlhRGV2aWNlczo6RGlzcGxheUNhcHR1cmVTdXJmYWNlVHlwZTo6V2luZG93KSA9
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxh
eVN1cmZhY2VUeXBlOjpXaW5kb3cpLCAiTWVkaWFEZXZpY2VzOjpEaXNwbGF5Q2FwdHVyZVN1cmZh
Y2VUeXBlOjpXaW5kb3cgaXMgbm90IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxh
eVN1cmZhY2VUeXBlOjpXaW5kb3cgYXMgZXhwZWN0ZWQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKaW5kZXgg
OWExZjZkZjA2OTBkMDlkOWUwNGQ5YThhZjY0MDRmODdkNDZkMTY1MS4uMjNlMjc4OWRiMjdlYTZl
ODc2MmZjNzQyMDMyNDU2MmM0MTZmZDBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKQEAgLTMwMSw3ICsz
MDEsNyBAQCBFeGNlcHRpb25PcjxSZWY8UGF5bWVudFJlcXVlc3Q+PiBQYXltZW50UmVxdWVzdDo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVmVjdAogICAgICAgICByZXR1cm4gY2FuQ3JlYXRl
U2Vzc2lvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKICAgICBpZiAoZGV0YWlscy5pZC5pc051bGwo
KSkKLSAgICAgICAgZGV0YWlscy5pZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAg
ICAgICAgZGV0YWlscy5pZCA9IGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwogCiAgICAgaWYg
KG1ldGhvZERhdGEuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVy
cm9yLCAiQXQgbGVhc3Qgb25lIHBheW1lbnQgbWV0aG9kIGlzIHJlcXVpcmVkLiJfcyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNr
ZXIuY3BwCmluZGV4IDU5NGY3ODZiNWVmNTk0M2RiOTk3ZDkwZjZkYWUxNzM4OTQwMDU1YzguLmNh
NDE3YzlhYjNkNWEwYWY5YzBiZDFhNDJkNWE4NTg0NjQwNTM3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAg
LTMwOCw3ICszMDgsNyBAQCBTdHJpbmcgRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5QYXRoKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKSBjb25zdAogCiBzdGF0aWMgU3RyaW5nIGdlbmVy
YXRlRGF0YWJhc2VGaWxlTmFtZSgpCiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoY3JlYXRlQ2Fu
b25pY2FsVVVJRFN0cmluZygpLCAiLmRiIik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoY3JlYXRl
VmVyc2lvbjRVVUlEU3RyaW5nKCksICIuZGIiKTsKIH0KIAogU3RyaW5nIERhdGFiYXNlVHJhY2tl
cjo6ZnVsbFBhdGhGb3JEYXRhYmFzZU5vTG9jayhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmTm90RXhpc3RzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRz
cGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5
QXRzcGkuY3BwCmluZGV4IGJiYjg4YzMzY2Q0MTIwZjZlM2IwYmM3MzU1MjI5NTM5YzU2NzFlYjMu
LjA0NzE0NGIzZjQxMzllZGI5ZGUzMDZhNzA5MDA4NDdmZWM2YWM1MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlBdHNw
aS5jcHAKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBdHNwaTo6cmVnaXN0
ZXJSb290KEFjY2Vzc2liaWxpdHlSb290QXRzcGkmIHJvb3RPYmplY3QsIFZlY3RvcgogICAgIH0K
IAogICAgIGVuc3VyZUNhY2hlKCk7Ci0gICAgU3RyaW5nIHBhdGggPSBtYWtlU3RyaW5nKCIvb3Jn
L2ExMXkvd2Via2l0L2FjY2Vzc2libGUvIiwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnJl
cGxhY2UoJy0nLCAnXycpKTsKKyAgICBTdHJpbmcgcGF0aCA9IG1ha2VTdHJpbmcoIi9vcmcvYTEx
eS93ZWJraXQvYWNjZXNzaWJsZS8iLCBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKS5yZXBsYWNl
KCctJywgJ18nKSk7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAzPiByZWdpc3RlcmVkT2JqZWN0czsK
ICAgICByZWdpc3RlcmVkT2JqZWN0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGludGVyZmFjZXMu
c2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGludGVyZmFjZSA6IGludGVyZmFjZXMpIHsK
QEAgLTMyMSw3ICszMjEsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eUF0c3BpOjpyZWdpc3Rlck9i
amVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkmIGF0c3BpT2JqZWN0LAogICAgICAgICByZXR1
cm4geyB9OwogCiAgICAgZW5zdXJlQ2FjaGUoKTsKLSAgICBTdHJpbmcgcGF0aCA9IG1ha2VTdHJp
bmcoIi9vcmcvYTExeS9hdHNwaS9hY2Nlc3NpYmxlLyIsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJp
bmcoKS5yZXBsYWNlKCctJywgJ18nKSk7CisgICAgU3RyaW5nIHBhdGggPSBtYWtlU3RyaW5nKCIv
b3JnL2ExMXkvYXRzcGkvYWNjZXNzaWJsZS8iLCBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKS5y
ZXBsYWNlKCctJywgJ18nKSk7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAyMD4gcmVnaXN0ZXJlZE9i
amVjdHM7CiAgICAgcmVnaXN0ZXJlZE9iamVjdHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbnRl
cmZhY2VzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBpbnRlcmZhY2UgOiBpbnRlcmZh
Y2VzKSB7CkBAIC0zNzEsNyArMzcxLDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlBdHNwaTo6cmVn
aXN0ZXJIeXBlcmxpbmsoQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpJiBhdHNwaU9iamUKICAgICBp
ZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFN0cmluZyBwYXRo
ID0gbWFrZVN0cmluZygiL29yZy9hMTF5L2F0c3BpL2FjY2Vzc2libGUvIiwgY3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZygpLnJlcGxhY2UoJy0nLCAnXycpKTsKKyAgICBTdHJpbmcgcGF0aCA9IG1h
a2VTdHJpbmcoIi9vcmcvYTExeS9hdHNwaS9hY2Nlc3NpYmxlLyIsIGNyZWF0ZVZlcnNpb240VVVJ
RFN0cmluZygpLnJlcGxhY2UoJy0nLCAnXycpKTsKICAgICBWZWN0b3I8dW5zaWduZWQsIDE+IHJl
Z2lzdGVyZWRPYmplY3RzOwogICAgIHJlZ2lzdGVyZWRPYmplY3RzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoaW50ZXJmYWNlcy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgaW50ZXJmYWNl
IDogaW50ZXJmYWNlcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tl
eWZyYW1lRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVj
dC5jcHAKaW5kZXggMGViMTcyNGFjMTY1ODg4ZDFkYmNhMDE0ZjNmN2MwZjc3ODdkYWM4MS4uNzVi
MGYwZjU0MDBjNmJhNWNjZTRkMWYwOTdkMzYzODRmODdiODdiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCkBAIC01NzYsNyArNTc2LDcgQEAgdm9pZCBL
ZXlmcmFtZUVmZmVjdDo6Y29weVByb3BlcnRpZXNGcm9tU291cmNlKFJlZjxLZXlmcmFtZUVmZmVj
dD4mJiBzb3VyY2UpCiAgICAgc2V0SXRlcmF0aW9uRHVyYXRpb24oc291cmNlLT5pdGVyYXRpb25E
dXJhdGlvbigpKTsKICAgICB1cGRhdGVTdGF0aWNUaW1pbmdQcm9wZXJ0aWVzKCk7CiAKLSAgICBL
ZXlmcmFtZUxpc3Qga2V5ZnJhbWVMaXN0KCJrZXlmcmFtZS1lZmZlY3QtIiArIGNyZWF0ZUNhbm9u
aWNhbFVVSURTdHJpbmcoKSk7CisgICAgS2V5ZnJhbWVMaXN0IGtleWZyYW1lTGlzdCgia2V5ZnJh
bWUtZWZmZWN0LSIgKyBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSk7CiAgICAga2V5ZnJhbWVM
aXN0LmNvcHlLZXlmcmFtZXMoc291cmNlLT5tX2JsZW5kaW5nS2V5ZnJhbWVzKTsKICAgICBzZXRC
bGVuZGluZ0tleWZyYW1lcyhrZXlmcmFtZUxpc3QpOwogfQpAQCAtODIyLDcgKzgyMiw3IEBAIHZv
aWQgS2V5ZnJhbWVFZmZlY3Q6OnVwZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKFJlbmRlclN0eWxlJiBl
bGVtZW50U3R5bGUsIGNvbnN0IFN0CiAgICAgaWYgKCFtX2JsZW5kaW5nS2V5ZnJhbWVzLmlzRW1w
dHkoKSB8fCAhbV90YXJnZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtleWZyYW1lTGlzdCBr
ZXlmcmFtZUxpc3QoImtleWZyYW1lLWVmZmVjdC0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmlu
ZygpKTsKKyAgICBLZXlmcmFtZUxpc3Qga2V5ZnJhbWVMaXN0KCJrZXlmcmFtZS1lZmZlY3QtIiAr
IGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpKTsKICAgICBhdXRvJiBzdHlsZVJlc29sdmVyID0g
bV90YXJnZXQtPnN0eWxlUmVzb2x2ZXIoKTsKIAogICAgIGZvciAoYXV0byYga2V5ZnJhbWUgOiBt
X3BhcnNlZEtleWZyYW1lcykgewpAQCAtMTA3Myw3ICsxMDczLDcgQEAgdm9pZCBLZXlmcmFtZUVm
ZmVjdDo6Y29tcHV0ZUNTU1RyYW5zaXRpb25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJT
dHlsZSogb2wKICAgICBpZiAobV90YXJnZXQpCiAgICAgICAgIFN0eWxlOjpsb2FkUGVuZGluZ1Jl
c291cmNlcygqdG9TdHlsZSwgKmRvY3VtZW50KCksIG1fdGFyZ2V0LmdldCgpKTsKIAotICAgIEtl
eWZyYW1lTGlzdCBrZXlmcmFtZUxpc3QoImtleWZyYW1lLWVmZmVjdC0iICsgY3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZygpKTsKKyAgICBLZXlmcmFtZUxpc3Qga2V5ZnJhbWVMaXN0KCJrZXlmcmFt
ZS1lZmZlY3QtIiArIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpKTsKICAgICBrZXlmcmFtZUxp
c3QuYWRkUHJvcGVydHkocHJvcGVydHkpOwogCiAgICAgS2V5ZnJhbWVWYWx1ZSBmcm9tS2V5ZnJh
bWVWYWx1ZSgwLCBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKm9sZFN0eWxlKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCBhYzU2NGIxZTg3NjYyYWZlZGVmNjJkOTNiMDQzMTdjNDE5MzEwYmJh
Li5kZDdjODkxZTEwYjM3ZTVkZjc2MTY4ZWI4NmNlZmY1MzM5NWJkZTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTYxODYsNyArNjE4Niw3IEBAIFN0cmluZyBEb2N1bWVudDo6b3JpZ2lu
SWRlbnRpZmllckZvclBhc3RlYm9hcmQoKSBjb25zdAogICAgIGlmIChvcmlnaW4gIT0gIm51bGwi
KQogICAgICAgICByZXR1cm4gb3JpZ2luOwogICAgIGlmICghbV91bmlxdWVJZGVudGlmaWVyKQot
ICAgICAgICBtX3VuaXF1ZUlkZW50aWZpZXIgPSAibnVsbDoiICsgY3JlYXRlQ2Fub25pY2FsVVVJ
RFN0cmluZygpOworICAgICAgICBtX3VuaXF1ZUlkZW50aWZpZXIgPSAibnVsbDoiICsgY3JlYXRl
VmVyc2lvbjRVVUlEU3RyaW5nKCk7CiAgICAgcmV0dXJuIG1fdW5pcXVlSWRlbnRpZmllcjsKIH0K
IApAQCAtODU2Niw3ICs4NTY2LDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlkSW5zZXJ0QXR0YWNobWVu
dEVsZW1lbnQoSFRNTEF0dGFjaG1lbnRFbGVtZW50JiBhdHRhY2htZW50KQogICAgIGJvb2wgcHJl
dmlvdXNJZGVudGlmaWVySXNOb3RVbmlxdWUgPSAhcHJldmlvdXNJZGVudGlmaWVyLmlzRW1wdHko
KSAmJiBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9FbGVtZW50TWFwLmNvbnRhaW5zKHByZXZpb3Vz
SWRlbnRpZmllcik7CiAgICAgaWYgKGlkZW50aWZpZXIuaXNFbXB0eSgpIHx8IHByZXZpb3VzSWRl
bnRpZmllcklzTm90VW5pcXVlKSB7CiAgICAgICAgIHByZXZpb3VzSWRlbnRpZmllciA9IGlkZW50
aWZpZXI7Ci0gICAgICAgIGlkZW50aWZpZXIgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7
CisgICAgICAgIGlkZW50aWZpZXIgPSBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKTsKICAgICAg
ICAgYXR0YWNobWVudC5zZXRVbmlxdWVJZGVudGlmaWVyKGlkZW50aWZpZXIpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKaW5kZXggNTVjNTgxMDE1OTFjZTQxNWM3NWNhMDgw
OTM0ZWEzMWUxNzJkNTQ1Mi4uM2UxZWYzZmIzNjJiYWZjNDMwNjFlMThjYzBjMTNlZDk1ZGU2OWZh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCkBAIC05Miw3ICs5Miw3IEBAIGJvb2wg
QmxvYlVSTDo6aXNTZWN1cmVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsKQogVVJMIEJsb2JVUkw6OmNy
ZWF0ZUJsb2JVUkwoY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpCiB7CiAgICAgQVNTRVJUKCFv
cmlnaW5TdHJpbmcuaXNFbXB0eSgpKTsKLSAgICBTdHJpbmcgdXJsU3RyaW5nID0gImJsb2I6IiAr
IG9yaWdpblN0cmluZyArICcvJyArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICBT
dHJpbmcgdXJsU3RyaW5nID0gImJsb2I6IiArIG9yaWdpblN0cmluZyArICcvJyArIGNyZWF0ZVZl
cnNpb240VVVJRFN0cmluZygpOwogICAgIHJldHVybiBVUkwoeyB9LCB1cmxTdHJpbmcpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXgg
ZThiYzVjM2NhYzRlNWM2Nzc3Mjc5MmU2MWYwOTM1MTk2NTNhYjZmMi4uNWEyZGI1ZjhmNzhjMzI2
MGYyZDRkMDU5YTg2NzEyYjg0OTg4NTM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgSFRNTEF0dGFj
aG1lbnRFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHR5cGUsIENvbnRh
aW5lck5vZGUmCiBjb25zdCBTdHJpbmcmIEhUTUxBdHRhY2htZW50RWxlbWVudDo6ZW5zdXJlVW5p
cXVlSWRlbnRpZmllcigpCiB7CiAgICAgaWYgKG1fdW5pcXVlSWRlbnRpZmllci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1fdW5pcXVlSWRlbnRpZmllciA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KTsKKyAgICAgICAgbV91bmlxdWVJZGVudGlmaWVyID0gY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5n
KCk7CiAgICAgcmV0dXJuIG1fdW5pcXVlSWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKaW5kZXggOGNmMDVjY2UxODgwMTI4ZGU1OWJlNzBhOTk4MzZmNWE3NDViNmQ3MS4uNmI5ZTdl
Mjk1ZmQ2ZmIyMGZmMGQ3NGZkY2YyM2ZjNjYwMGE2MDAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
CkBAIC0xMjc3LDkgKzEyNzcsOSBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0
ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShGcmFnbWVudGVkU2hhcmVkQgogICAgIFN0cmlu
ZyBmdWxsUGF0aDsKICAgICAKICAgICBkbyB7Ci0gICAgICAgIHBhdGggPSBGaWxlU3lzdGVtOjpl
bmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpICsgZmlsZUV4dGVu
c2lvbjsKKyAgICAgICAgcGF0aCA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGNyZWF0
ZVZlcnNpb240VVVJRFN0cmluZygpKSArIGZpbGVFeHRlbnNpb247CiAgICAgICAgIC8vIEd1YXJk
IGFnYWluc3QgdGhlIGFib3ZlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBvbiBhIHBsYXRmb3JtIHdo
aWNoIGRvZXMgbm90IGltcGxlbWVudAotICAgICAgICAvLyBjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCkuCisgICAgICAgIC8vIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpLgogICAgICAgICBB
U1NFUlQoIXBhdGguaXNFbXB0eSgpKTsKICAgICAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
cnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCmluZGV4IGFmN2FjMmY2
OThhNDNiN2FmOGZlNjU4ZDdlYTBlMjE0N2UzZmU1NGMuLjlhNTNlNWZjZGVjMjY4OGQ0OTQ4NWY2
ODI2MzZmOTQwNDU1Yjg3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5jcHAKQEAgLTcxLDcgKzcxLDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvOjpnZXRSYW5kb21WYWx1ZXMoQXJyYXlCdWZmZXJW
aWV3JiBhcnJheSkKIAogU3RyaW5nIENyeXB0bzo6cmFuZG9tVVVJRCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICByZXR1cm4gY3JlYXRlVmVy
c2lvbjRVVUlEU3RyaW5nKCk7CiB9CiAKICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllci5oCmluZGV4IDQ2MTUwZGJkYzJhM2ZmZDZjODcwMmQ3MjU5N2VmOGE3NWE0NzUxMDQu
LjMwOWViMTQ4YmZlMzMzZDM0MTZjY2ZjMzE0ZWMxYzc4YmRiZjZlNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXIuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0ZW1wbGF0ZSA8
PgogY2xhc3MgUHJvY2Vzc1F1YWxpZmllZDxVVUlEPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBy
b2Nlc3NRdWFsaWZpZWQgZ2VuZXJhdGUoKSB7IHJldHVybiB7IFVVSUQ6OmNyZWF0ZSgpLCBQcm9j
ZXNzOjppZGVudGlmaWVyKCkgfTsgfQorICAgIHN0YXRpYyBQcm9jZXNzUXVhbGlmaWVkIGdlbmVy
YXRlKCkgeyByZXR1cm4geyBVVUlEOjpjcmVhdGVWZXJzaW9uNCgpLCBQcm9jZXNzOjppZGVudGlm
aWVyKCkgfTsgfQogCiAgICAgUHJvY2Vzc1F1YWxpZmllZCgpCiAgICAgICAgIDogbV9vYmplY3Qo
VVVJRDo6ZW1wdHlWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25B
VkZvdW5kYXRpb25DRi5jcHAKaW5kZXggN2E4OTllYzY2YzU3YjdkOTI2MmRiNzMyNjhkYjRmNDk3
YjFjZGRkMS4uZGY0ZjE4MzVmNTZiM2Q2ZGJmMTRiNWQ0YjQ4ZWRhOGQ4N2I5OTQyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NE
TVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDRE1TZXNzaW9uQVZGb3VuZGF0
aW9uQ0Y6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRiYgcGFyZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikKICAgICA6IG1fcGFyZW50
KHBhcmVudCkKLSAgICAsIG1fc2Vzc2lvbklkKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkK
KyAgICAsIG1fc2Vzc2lvbklkKGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IGRhZGNkZmM1NTU2ZWY4ODA4OTIyZTk4OTM5MWY3MTg3YzE0OWY2MTUuLjYwNzZm
YThjYzA5MmRlNWNkMTFjMGFkN2ViM2EwYjhiMDU4ODZhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZv
dW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCkBAIC00Niw3ICs0
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpD
RE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKiBwYXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKICAgICA6IG1fcGFy
ZW50KCpwYXJlbnQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3Nlc3Npb25JZChj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCisgICAgLCBtX3Nlc3Npb25JZChjcmVhdGVWZXJz
aW9uNFVVSURTdHJpbmcoKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lv
bi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0KaW5kZXggZjM1Y2FhOGU2YWZmNTdkMzA4OGFl
N2MwZDNmOTI4ZmY3NmI5NmVlMS4uODI4ZGFiYTc2N2EwZDUwM2U2NmE0YzdhOTYyMTA0ZGUyNjYy
NDhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJl
YW1TZXNzaW9uLm1tCkBAIC0yMzgsNyArMjM4LDcgQEAgYm9vbCBDRE1TZXNzaW9uQVZTdHJlYW1T
ZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHQK
ICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICAgICAgaWYg
KCFbcHJvdGVjdGVkU291cmNlQnVmZmVyLT5zdHJlYW1EYXRhUGFyc2VyKCkgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihjb250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyKV0pCi0g
ICAgICAgICAgICBtX3Nlc3Npb25JZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAg
ICAgICAgICAgIG1fc2Vzc2lvbklkID0gY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7CiAKICAg
ICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uOjp1cGRhdGUoJXApIC0gZXJyb3I6JUAiLCB0aGlzLCBbZXJyb3IgZGVzY3Jp
cHRpb25dKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGY5ZDFhYzcyMzMzZGVkNDY4NjdkZTUzY2JkOGY4
YzEzNDA1OGQ1OTAuLmVkYTQ1MWVjYTI3ZGQzODBkMDExMTY1ZTM3YzMzN2ViZjgwMDNhOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcApAQCAtMzEwNSw3ICszMTA1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6
OnVwZGF0ZUFuaW1hdGlvbnMoKQogICAgICAgICBjYUFuaW1hdGlvbkdyb3VwLT5zZXREdXJhdGlv
bihpbmZpbml0ZUR1cmF0aW9uKTsKICAgICAgICAgY2FBbmltYXRpb25Hcm91cC0+c2V0QW5pbWF0
aW9ucyhhbmltYXRpb25zKTsKIAotICAgICAgICBhdXRvIGFuaW1hdGlvbkdyb3VwID0gTGF5ZXJQ
cm9wZXJ0eUFuaW1hdGlvbihXVEZNb3ZlKGNhQW5pbWF0aW9uR3JvdXApLCAiZ3JvdXAtIiArIGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgcHJvcGVydHksIDAsIDAsIDBfcyk7CisgICAgICAg
IGF1dG8gYW5pbWF0aW9uR3JvdXAgPSBMYXllclByb3BlcnR5QW5pbWF0aW9uKFdURk1vdmUoY2FB
bmltYXRpb25Hcm91cCksICJncm91cC0iICsgY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCksIHBy
b3BlcnR5LCAwLCAwLCAwX3MpOwogICAgICAgICBhbmltYXRpb25Hcm91cC5tX2JlZ2luVGltZSA9
IGFuaW1hdGlvbkdyb3VwQmVnaW5UaW1lOwogCiAgICAgICAgIHNldEFuaW1hdGlvbk9uTGF5ZXIo
YW5pbWF0aW9uR3JvdXApOwpAQCAtMzE1Myw3ICszMTUzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
Q0E6OnVwZGF0ZUFuaW1hdGlvbnMoKQogICAgICAgICBjYUFuaW1hdGlvbi0+c2V0RnJvbVZhbHVl
KG1hdHJpeCk7CiAgICAgICAgIGNhQW5pbWF0aW9uLT5zZXRUb1ZhbHVlKG1hdHJpeCk7CiAKLSAg
ICAgICAgYXV0byBhbmltYXRpb24gPSBMYXllclByb3BlcnR5QW5pbWF0aW9uKFdURk1vdmUoY2FB
bmltYXRpb24pLCAiYmFzZS10cmFuc2Zvcm0tIiArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KSwgcHJvcGVydHksIDAsIDAsIDBfcyk7CisgICAgICAgIGF1dG8gYW5pbWF0aW9uID0gTGF5ZXJQ
cm9wZXJ0eUFuaW1hdGlvbihXVEZNb3ZlKGNhQW5pbWF0aW9uKSwgImJhc2UtdHJhbnNmb3JtLSIg
KyBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSwgcHJvcGVydHksIDAsIDAsIDBfcyk7CiAgICAg
ICAgIGlmIChkZWxheSkKICAgICAgICAgICAgIGFuaW1hdGlvbi5tX2JlZ2luVGltZSA9IGN1cnJl
bnRUaW1lIC0gYW5pbWF0aW9uR3JvdXBCZWdpblRpbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKaW5kZXgg
NTYyNzc4OGRjNDcyMTBhMzA4NDU5Zjg5OTRkOTE1MDU5OGFhMzljMC4uN2YyZWI0NWVmMTE4NmUw
Zjc1MWU3MzExMDg1OWZjMTEyYWQ2NjBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKQEAgLTcxLDcgKzcx
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbVByaXZhdGU+IGNyZWF0
ZShSZWY8Y29uc3QgTG9nZ2VyPiYmLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CiAgICAg
c3RhdGljIFJlZjxNZWRpYVN0cmVhbVByaXZhdGU+IGNyZWF0ZShSZWY8Y29uc3QgTG9nZ2VyPiYm
LCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBhdWRpb1NvdXJjZSwgUmVmUHRyPFJlYWx0
aW1lTWVkaWFTb3VyY2U+JiYgdmlkZW9Tb3VyY2UpOwotICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJl
YW1Qcml2YXRlPiBjcmVhdGUoUmVmPGNvbnN0IExvZ2dlcj4mJiBsb2dnZXIsIGNvbnN0IE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlVmVjdG9yJiB0cmFja3MsIFN0cmluZyYmIGlkID0gY3JlYXRlQ2Fu
b25pY2FsVVVJRFN0cmluZygpKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU3RyZWFtUHJp
dmF0ZShXVEZNb3ZlKGxvZ2dlciksIHRyYWNrcywgV1RGTW92ZShpZCkpKTsgfQorICAgIHN0YXRp
YyBSZWY8TWVkaWFTdHJlYW1Qcml2YXRlPiBjcmVhdGUoUmVmPGNvbnN0IExvZ2dlcj4mJiBsb2dn
ZXIsIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlVmVjdG9yJiB0cmFja3MsIFN0cmluZyYm
IGlkID0gY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TWVkaWFTdHJlYW1Qcml2YXRlKFdURk1vdmUobG9nZ2VyKSwgdHJhY2tzLCBXVEZNb3ZlKGlkKSkp
OyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5NZWRpYVN0cmVhbVByaXZhdGUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCmluZGV4IDQ0Mjk1M2ExYTNmMzQ2Y2Y3ZjQx
OTljNzFlMjc1YTkzZTI1MTVlMDcuLmVjMzJiYTg1Y2NmODQ3MjUzODM1MjY4MTg1OWM0MDc3ZWJk
NDk5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoUmVmPGNvbnN0IExvZ2dlcj4mJiBsb2dnZXIsIFJl
ZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlKFdU
Rk1vdmUobG9nZ2VyKSwgV1RGTW92ZShzb3VyY2UpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCkpOworICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShsb2dnZXIpLCBXVEZNb3ZlKHNvdXJjZSks
IGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpKTsKIH0KIAogUmVmPE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlPiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKFJlZjxjb25zdCBMb2dnZXI+
JiYgbG9nZ2VyLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UsIFN0cmluZyYmIGlk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmNwcAppbmRleCAyNTZkM2NmOTdmMzE5ZDY1MmJkZDhhZDdmM2M2
NWE2ZjAzZTcxMGYzLi5lODQyY2IwMjQ2NTYxODM2NjZiMjYxNTMzZGNiMWViZDQyYTVhMWIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZWFsdGltZU1lZGlhU291
cmNlOjpSZWFsdGltZU1lZGlhU291cmNlKFR5cGUgdHlwZSwgU3RyaW5nJiYgbmFtZSwgU3RyaW5n
JiYgZGV2aQogICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCiB7CiAgICAgaWYgKG1fcGVyc2lz
dGVudElELmlzRW1wdHkoKSkKLSAgICAgICAgbV9wZXJzaXN0ZW50SUQgPSBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCk7CisgICAgICAgIG1fcGVyc2lzdGVudElEID0gY3JlYXRlVmVyc2lvbjRV
VUlEU3RyaW5nKCk7CiAKICAgICBtX2hhc2hlZElEID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6c2luZ2xldG9uKCkuaGFzaFN0cmluZ1dpdGhTYWx0KG1fcGVyc2lzdGVudElELCBtX2lkSGFz
aFNhbHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlz
cGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAppbmRleCA2OWE1MjhmYTYyZjZiZTkwNjViNDIx
NTkzNDQ4YTA0MTc0YWM4Y2E5Li40MWM4YTQ4MzAzODQ2ZDRkYmFlM2IzOTc4NDZiNTI5NzJlNmEw
MjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxh
eUNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEdTdHJlYW1l
ckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29tcHV0ZUNhcHR1cmVEZXZpY2VzKENvbXBs
ZXRpb25IYW5kbAogewogICAgIG1fZGV2aWNlcy5jbGVhcigpOwogCi0gICAgQ2FwdHVyZURldmlj
ZSBzY3JlZW5DYXB0dXJlRGV2aWNlKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBtYWtlU3RyaW5nKCJDYXB0dXJlIFNjcmVlbiIp
KTsKKyAgICBDYXB0dXJlRGV2aWNlIHNjcmVlbkNhcHR1cmVEZXZpY2UoY3JlYXRlVmVyc2lvbjRV
VUlEU3RyaW5nKCksIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgbWFrZVN0cmlu
ZygiQ2FwdHVyZSBTY3JlZW4iKSk7CiAgICAgc2NyZWVuQ2FwdHVyZURldmljZS5zZXRFbmFibGVk
KHRydWUpOwogICAgIG1fZGV2aWNlcy5hcHBlbmQoV1RGTW92ZShzY3JlZW5DYXB0dXJlRGV2aWNl
KSk7CiAgICAgY2FsbGJhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVk
aWFTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IDA3MDhlYzdlYjA1NzQ4ZDA2YWJmNmU3ZjhmNmQ1NmQ0
YTNkYjA5NTguLmI4NDViNTJmMWNhNTBhNjJjNWM5YzdjYmU1ZjUwNDQ3ZGQ4ZTI4OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcApAQCAt
NTc0LDcgKzU3NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3JjUG9zdFN0cmVh
bUNvbGxlY3Rpb24oV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBhdXRvIHVwc3RyZWFtSWQgPSBwcml2LT5zdHJlYW0gPyBwcml2LT5zdHJl
YW0tPmlkKCkgOiBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisgICAgYXV0byB1cHN0cmVh
bUlkID0gcHJpdi0+c3RyZWFtID8gcHJpdi0+c3RyZWFtLT5pZCgpIDogY3JlYXRlVmVyc2lvbjRV
VUlEU3RyaW5nKCk7CiAgICAgcHJpdi0+c3RyZWFtQ29sbGVjdGlvbiA9IGFkb3B0R1JlZihnc3Rf
c3RyZWFtX2NvbGxlY3Rpb25fbmV3KHVwc3RyZWFtSWQuYXNjaWkoKS5kYXRhKCkpKTsKICAgICBm
b3IgKGF1dG8mIHRyYWNrIDogcHJpdi0+dHJhY2tzKSB7CiAgICAgICAgIGlmICghdHJhY2stPmlz
QWN0aXZlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tCmluZGV4IDgwMjQ1ODYz
NWIwMjU5YWMxZDcwMDIyOTk2ZTUxMjlmNzEzNzY0YzIuLjM1Yjk3MGQ2MDhlMzhlMzU1NjdjOTMz
MzU5NzZmZThiYzVmYTVmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tCkBA
IC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBSZXBsYXlLaXRDYXB0dXJlU291cmNlOjpzdGFydENhcHR1
cmVXYXRjaGRvZ1RpbWVyKCkKIAogc3RhdGljIFN0cmluZyBzY3JlZW5EZXZpY2VVVUlEKCkKIHsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY3JlZW5JRCA9IGNyZWF0ZUNhbm9u
aWNhbFVVSURTdHJpbmcoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY3Jl
ZW5JRCA9IGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwogICAgIHJldHVybiBzY3JlZW5JRDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDRhMjJiYmJkZWJmNGIz
MjEzOTk4N2ZiOTMxNDYzM2ViZGUzM2Q4OGEuLmU4ZDdmYzE3N2FhYmMzMjU4YzdjN2M5MDMwMWU5
ZTA1NWUzODMwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTI3Njgs
NyArMjc2OCw3IEBAIFN0cmluZyBJbnRlcm5hbHM6OmRvY3VtZW50SWRlbnRpZmllcihjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiAKIGJvb2wgSW50ZXJuYWxzOjppc0RvY3VtZW50QWxp
dmUoY29uc3QgU3RyaW5nJiBkb2N1bWVudElkZW50aWZpZXIpIGNvbnN0CiB7Ci0gICAgYXV0byB1
dWlkID0gVVVJRDo6cGFyc2UoZG9jdW1lbnRJZGVudGlmaWVyKTsKKyAgICBhdXRvIHV1aWQgPSBV
VUlEOjpwYXJzZVZlcnNpb240KGRvY3VtZW50SWRlbnRpZmllcik7CiAgICAgQVNTRVJUKHV1aWQp
OwogICAgIHJldHVybiB1dWlkID8gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCgpLmNvbnRhaW5z
KHsgKnV1aWQsIFByb2Nlc3M6OmlkZW50aWZpZXIoKSB9KSA6IGZhbHNlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA4NGZhMjljZTFmMzAwZmUyOTBi
MDQxNDY0OGYwZjcyOTBhN2NiZWJkLi4yMDUyNzk1NTI4MzZlMDQ0ZGQ3YzJhOGVhMzIxNjgyZDkx
NzkzOGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAt
MzE3LDcgKzMxNyw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBTdHJpbmcgc2Vzc2lvbklEID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmlu
ZygpOworICAgIFN0cmluZyBzZXNzaW9uSUQgPSBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKTsK
ICAgICBmYWN0b3J5LT5hZGRLZXlzVG9TZXNzaW9uV2l0aElEKHNlc3Npb25JRCwgV1RGTW92ZShr
ZXlJRHMudmFsdWUoKSkpOwogCiAgICAgQ1N0cmluZyBsaWNlbnNlIHsgImxpY2Vuc2UiIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcCBiL1Nv
dXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCmluZGV4IGU2MjZhMTdhNDFl
NWU0MzJhMDc5ZWE0Y2U0NzBlNmY5YWRmNWM1OTMuLjllNDYwMjcxOGZlOTc5MTMxZWM5ODBiZmQx
ZTZlNGY0OGY3YzdhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9u
SG9zdEdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIu
Y3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9u
U2Vzc2lvbihGdW5jdGlvbjx2b2lkIChib29sLCBzdGQ6Om9wdGlvbmFsPFN0cmkKICAgICBBU1NF
UlQobV9zb2NrZXRDb25uZWN0aW9uKTsKICAgICBBU1NFUlQoIW1fc3RhcnRTZXNzaW9uQ29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIG1fc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBtX3Nlc3Npb25JRCA9IGNyZWF0ZUNhbm9uaWNh
bFVVSURTdHJpbmcoKTsKKyAgICBtX3Nlc3Npb25JRCA9IGNyZWF0ZVZlcnNpb240VVVJRFN0cmlu
ZygpOwogICAgIEdWYXJpYW50QnVpbGRlciBidWlsZGVyOwogICAgIG1fc29ja2V0Q29ubmVjdGlv
bi0+c2VuZE1lc3NhZ2UoIlN0YXJ0QXV0b21hdGlvblNlc3Npb24iLCBnX3ZhcmlhbnRfbmV3KCIo
c2F7c3Z9KSIsIG1fc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCksIGJ1aWxkU2Vzc2lvbkNhcGFiaWxp
dGllcygmYnVpbGRlcikgPyAmYnVpbGRlciA6IG51bGxwdHIpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJEcml2ZXIvc29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNwcCBiL1NvdXJjZS9XZWJE
cml2ZXIvc29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNwcAppbmRleCA2ODkyYjNmMzgwY2ViNzI1
NTM5NTc3MTkyNTZiNWEwOWQ5OWU5ZjhiLi5lNGRlOGNkMTUwNzljNTYwOTc2MjM3NGM5YTNkNzI1
MTlkNzQ0ZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9TZXNzaW9uSG9z
dFNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvU2Vzc2lvbkhvc3RTb2Nr
ZXQuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0
aW9uU2Vzc2lvbihGdW5jdGlvbjx2b2lkIChib29sLCBzdGQ6Om9wdGlvbmFsPFN0cmkKIHsKICAg
ICBBU1NFUlQoIW1fc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIG1fc3RhcnRT
ZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKLSAg
ICBtX3Nlc3Npb25JRCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICBtX3Nlc3Np
b25JRCA9IGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwogCiAgICAgYXV0byBzZW5kTWVzc2Fn
ZUV2ZW50ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBzZW5kTWVzc2FnZUV2ZW50LT5z
ZXRTdHJpbmcoImV2ZW50Il9zLCAiU3RhcnRBdXRvbWF0aW9uU2Vzc2lvbiJfcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDMxMGM2
YzUxYTMwOWM0NTQ4YzJmZDBkY2I5OTMxOWNhOWFiODRlZTkuLjdjNzllMmEyMDk3NmExMzljN2Y2
NjdmMTEzYzQ4OTQ2ZGVkZDU2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00NzMsNyArNDczLDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZW5zdXJlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgc2hvdWxk
VXNlVGVzdGkKICAgICAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZj4gc3RvcmFnZVNlc3Npb247Ci0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBjZklkZW50aWZpZXIgPSBtYWtlU3RyaW5nKGlkZW50aWZpZXJCYXNlLCAiLlByaXZhdGVC
cm93c2luZy4iLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpLmNyZWF0ZUNGU3RyaW5nKCk7
CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBtYWtlU3RyaW5nKGlk
ZW50aWZpZXJCYXNlLCAiLlByaXZhdGVCcm93c2luZy4iLCBjcmVhdGVWZXJzaW9uNFVVSURTdHJp
bmcoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkp
CiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uID0gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNm
SWRlbnRpZmllci5nZXQoKSwgc3RkOjpudWxsb3B0LCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246OlNob3VsZERpc2FibGVDRlVSTENhY2hlOjpZZXMpOwogICAgIGVsc2UgaWYgKHNlc3Np
b25JRCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmNwcAppbmRleCBjODU2NzE5ZGRkZTZhYWIzZjViYWIyNmM1NTU0MTZlOWYzMDBm
NWVkLi5kYTljYjhhNWRjYzBlZDdmOWY0YzJlM2QyZjI3Njg5NGEwMWVkMTc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
dXBkYXRlVmFyeUluZm9ybWF0aW9uKFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvcm1hdGlv
biwgYwogCiBSZWNvcmRJbmZvcm1hdGlvbiBDYWNoZTo6dG9SZWNvcmRJbmZvcm1hdGlvbihjb25z
dCBSZWNvcmQmIHJlY29yZCkKIHsKLSAgICBLZXkga2V5IHsgInJlY29yZCJfcywgbV91bmlxdWVO
YW1lLCB7IH0sIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgbV9jYWNoZXMuc2FsdCgpIH07
CisgICAgS2V5IGtleSB7ICJyZWNvcmQiX3MsIG1fdW5pcXVlTmFtZSwgeyB9LCBjcmVhdGVWZXJz
aW9uNFVVSURTdHJpbmcoKSwgbV9jYWNoZXMuc2FsdCgpIH07CiAgICAgUmVjb3JkSW5mb3JtYXRp
b24gcmVjb3JkSW5mb3JtYXRpb24geyBXVEZNb3ZlKGtleSksIE1vbm90b25pY1RpbWU6Om5vdygp
LnNlY29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCksIHJlY29yZC5pZGVudGlmaWVyLCAw
ICwgcmVjb3JkLnJlc3BvbnNlQm9keVNpemUsIHJlY29yZC5yZXF1ZXN0LnVybCgpLCBmYWxzZSwg
eyB9IH07CiAKICAgICB1cGRhdGVWYXJ5SW5mb3JtYXRpb24ocmVjb3JkSW5mb3JtYXRpb24sIHJl
Y29yZC5yZXF1ZXN0LCByZWNvcmQucmVzcG9uc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMu
Y3BwCmluZGV4IDU2NjYwNzgxNTc1MjhlNmJiN2Y2OWVlNThmMTM1YzE3OTQ1YThjNjQuLjA0ZWRl
Y2UxYzRiZmU5ZWFjYWUwNmE3MDdjNWRkZmZlMDBlODEzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlcy5jcHAKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIENhY2hlczo6b3Blbihjb25zdCBT
dHJpbmcmIG5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgbWFr
ZURpcnR5KCk7CiAKICAgICB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIgPSBtX2VuZ2luZS0+bmV4
dENhY2hlSWRlbnRpZmllcigpOwotICAgIG1fY2FjaGVzLmFwcGVuZChDYWNoZSB7ICp0aGlzLCBj
YWNoZUlkZW50aWZpZXIsIENhY2hlOjpTdGF0ZTo6T3BlbiwgU3RyaW5nIHsgbmFtZSB9LCBjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCkgfSk7CisgICAgbV9jYWNoZXMuYXBwZW5kKENhY2hlIHsg
KnRoaXMsIGNhY2hlSWRlbnRpZmllciwgQ2FjaGU6OlN0YXRlOjpPcGVuLCBTdHJpbmcgeyBuYW1l
IH0sIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpIH0pOwogCiAgICAgd3JpdGVDYWNoZXNUb0Rp
c2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNhY2hlSWRlbnRpZmllcl0oc3RkOjpv
cHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrKENhY2hl
SWRlbnRpZmllck9wZXJhdGlvblJlc3VsdCB7IGNhY2hlSWRlbnRpZmllciwgISFlcnJvciB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtN
RE5TUmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya01ETlNSZWdpc3Rlci5jcHAKaW5kZXggMzI4MmNiNDkwMWQ1OTcwNjkyNWYxYmRmMjMzMTEy
OGEwMzViMzcyYi4uNGUwNTk2MzcyMjJiOWMxZDgwN2RlNmQwYmY5NjVmZTc2MzU4NDhiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNS
ZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya01ETlNSZWdpc3Rlci5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgdm9pZCByZWdp
c3Rlck1ETlNOYW1lQ2FsbGJhY2soRE5TU2VydmljZVJlZiwgRE5TUmVjb3JkUmVmIHJlY29yZCwg
RE5TU2VydgogCiB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoTURO
U1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGlwQWRkcmVzcykKIHsKLSAgICBhdXRvIG5hbWUgPSBtYWtlU3RyaW5nKGNyZWF0ZUNhbm9uaWNh
bFVVSURTdHJpbmcoKSwgIi5sb2NhbCIpOworICAgIGF1dG8gbmFtZSA9IG1ha2VTdHJpbmcoY3Jl
YXRlVmVyc2lvbjRVVUlEU3RyaW5nKCksICIubG9jYWwiKTsKIAogICAgIEROU1NlcnZpY2VSZWYg
c2VydmljZTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9zZXJ2aWNlcy5maW5kKGRvY3VtZW50SWRl
bnRpZmllcik7CkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjp1
bnJlZ2lzdGVyTUROU05hbWVzKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGUKIHZv
aWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVu
dGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzKQog
ewogICAgIE1ETlNfUkVMRUFTRV9MT0coInJlZ2lzdGVyTUROU05hbWUgbm90IGltcGxlbWVudGVk
Iik7Ci0gICAgYXV0byBuYW1lID0gbWFrZVN0cmluZyhjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCksICIubG9jYWwiKTsKKyAgICBhdXRvIG5hbWUgPSBtYWtlU3RyaW5nKGNyZWF0ZVZlcnNpb240
VVVJRFN0cmluZygpLCAiLmxvY2FsIik7CiAKICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNO
YW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG5hbWUsIFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9y
OjpOb3RJbXBsZW1lbnRlZCB9LCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGNhY2FlYjQxZWIyNjU1OWFjNTkwNTFiNDEyZDhl
MWEyMGRiMzExNDQuLjU1YzNlNzIxMWJlN2M4ZjUxNzE0MjI4MTYzYjM1N2JkNGM5OGJhMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAt
Mjc0MCw3ICsyNzQwLDcgQEAgc3RhdGljIHZvaWQgY29udmVydEFuZEFkZEhpZ2hsaWdodChWZWN0
b3I8UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5Pj4mIGJ1ZmZlcnMsIE4KIHsKICAgICBUSFJPV19J
Rl9TVVNQRU5ERUQ7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICBhdXRvIGlk
ZW50aWZpZXIgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisgICAgYXV0byBpZGVudGlm
aWVyID0gY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7CiAgICAgYXV0byBhdHRhY2htZW50ID0g
QVBJOjpBdHRhY2htZW50OjpjcmVhdGUoaWRlbnRpZmllciwgKl9wYWdlKTsKICAgICBhdHRhY2ht
ZW50LT5zZXRGaWxlV3JhcHBlckFuZFVwZGF0ZUNvbnRlbnRUeXBlKGZpbGVXcmFwcGVyLCBjb250
ZW50VHlwZSk7CiAgICAgX3BhZ2UtPmluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVudC5jb3B5UmVm
KCksIFtjYXB0dXJlZEhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDViNjYyNjE3NDliOGQwNmRkNWQ0OTRmODgwZTM0
OWEzNmU1YmViZjMuLjQ2ZDRjY2RkMTRhYThlNTlkNjg1MzNiMDFiZTc5OWYyMTQ1ZDFlNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgU3RyaW5nIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpoYW5kbGVGb3JXZWJQYWdlUHJveHkoY29uc3QgV2ViUGFnZVByb3h5JiB3
ZWJQYWdlUHIKICAgICBpZiAoaXRlciAhPSBtX3dlYlBhZ2VIYW5kbGVNYXAuZW5kKCkpCiAgICAg
ICAgIHJldHVybiBpdGVyLT52YWx1ZTsKIAotICAgIFN0cmluZyBoYW5kbGUgPSAicGFnZS0iICsg
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7Cisg
ICAgU3RyaW5nIGhhbmRsZSA9ICJwYWdlLSIgKyBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKS5j
b252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpOwogCiAgICAgYXV0byBmaXJzdEFkZFJlc3VsdCA9IG1f
d2ViUGFnZUhhbmRsZU1hcC5hZGQod2ViUGFnZVByb3h5LmlkZW50aWZpZXIoKSwgaGFuZGxlKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChmaXJzdEFkZFJlc3VsdC5pc05ld0VudHJ5KTsKQEAgLTIzOSw3
ICsyMzksNyBAQCBTdHJpbmcgV2ViQXV0b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYkZyYW1l
SUQoc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+CiAgICAgaWYgKGl0ZXIgIT0gbV93ZWJG
cmFtZUhhbmRsZU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogCi0gICAg
U3RyaW5nIGhhbmRsZSA9ICJmcmFtZS0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLmNv
bnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7CisgICAgU3RyaW5nIGhhbmRsZSA9ICJmcmFtZS0iICsg
Y3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKTsKIAog
ICAgIGF1dG8gZmlyc3RBZGRSZXN1bHQgPSBtX3dlYkZyYW1lSGFuZGxlTWFwLmFkZCgqZnJhbWVJ
RCwgaGFuZGxlKTsKICAgICBSRUxFQVNFX0FTU0VSVChmaXJzdEFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDIxY2JhMGJiZWIyM2U3ZmRlYWEzMGU5
OWZlNjVkZmUxZjNjOWYzNTkuLjVlNjY3OGZlNzNlNTQ2OTI5OGFkYzEyNjE5N2QxYmM0MWYxOWMw
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQg
U3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OnRyaWdnZXJTeXN0ZW1QcmV2aWV3QWN0aW9uKCkKIAog
dm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb25X
aXRoVGFyZ2V0Rm9yVGVzdGluZyh1aW50NjRfdCBlbGVtZW50SUQsIE5TU3RyaW5nKiBkb2N1bWVu
dElELCB1aW50NjRfdCBwYWdlSUQpCiB7Ci0gICAgYXV0byB1dWlkID0gVVVJRDo6cGFyc2UoU3Ry
aW5nKGRvY3VtZW50SUQpKTsKKyAgICBhdXRvIHV1aWQgPSBVVUlEOjpwYXJzZVZlcnNpb240KFN0
cmluZyhkb2N1bWVudElEKSk7CiAgICAgQVNTRVJUKHV1aWQpOwogICAgIGlmICghdXVpZCkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V0tTaGFyZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNo
ZWV0Lm1tCmluZGV4IDgzMGY1NTJlYjQ1Yjg3M2IwMjQyODU5MzY1MzM3ZmFhYmMyYjA0MGQuLmUz
NGQ1NzBhNTliZWMyNmZiZjZiZTNhNmRmNjQ2ZTUwOWFlZjE2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW0KQEAgLTMzMSw3ICszMzEsNyBAQCBz
dGF0aWMgdm9pZCBhcHBlbmRGaWxlc0FzU2hhcmVhYmxlVVJMcyhSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+JiYgc2hhcmVEYXRhQXJyYQogCiArIChOU1VSTCAqKWNyZWF0ZVJhbmRvbVNoYXJpbmdE
aXJlY3RvcnlGb3JGaWxlOihOU1VSTCAqKXRlbXBvcmFyeURpcmVjdG9yeQogewotICAgIE5TU3Ry
aW5nICpyYW5kb21EaXJlY3RvcnkgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisgICAg
TlNTdHJpbmcgKnJhbmRvbURpcmVjdG9yeSA9IGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpOwog
ICAgIGlmICghW3JhbmRvbURpcmVjdG9yeSBsZW5ndGhdIHx8ICF0ZW1wb3JhcnlEaXJlY3Rvcnkp
CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgTlNVUkwgKmRhdGFQYXRoID0gW3RlbXBvcmFyeURp
cmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6cmFuZG9tRGlyZWN0b3J5IGlzRGly
ZWN0b3J5OllFU107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4
IGU5NjQxZjdiYTM5YWVmOWNmNGVkN2FiMTE2MGY4ZTBkY2NlMTY4ODguLjdjNzI1ODEwNDBhNzky
NTg4NmMwOTE4NmRhMzBiYWE0NDYwYWQ1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlCiAg
ICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBTdHJpbmcgYXV0
aG9yaXphdGlvblRva2VuID0gYWxsb3dlZCA/IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSA6
IFN0cmluZygpOworICAgIFN0cmluZyBhdXRob3JpemF0aW9uVG9rZW4gPSBhbGxvd2VkID8gY3Jl
YXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkgOiBTdHJpbmcoKTsKICAgICBpZiAoIWF1dGhvcml6YXRp
b25Ub2tlbi5pc051bGwoKSkKICAgICAgICAgbV92YWxpZEF1dGhvcml6YXRpb25Ub2tlbnMuYWRk
KGF1dGhvcml6YXRpb25Ub2tlbik7CiAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbihnZW9sb2NhdGlvbklELCBh
dXRob3JpemF0aW9uVG9rZW4pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmly
dHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAppbmRleCA0OTFlMmNhZDAzZDg0MTQyMDFhYjc0
NjdkZjZmNWNkOTk5ZGZlM2U4Li5kNjYxNWE3ZDg5NTg0YjIzMzc0MTM4MmMwMTliMjkzOWFkMjg0
YWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIFN0cmluZyBWaXJ0dWFsQXV0aGVudGlj
YXRvck1hbmFnZXI6OmNyZWF0ZUF1dGhlbnRpY2F0b3IoY29uc3QgVmlydHVhbEF1dGhlbnRpY2F0
CiB7CiAgICAgaWYgKGNvbmZpZy50cmFuc3BvcnQgIT0gV2ViQ29yZTo6QXV0aGVudGljYXRvclRy
YW5zcG9ydDo6SW50ZXJuYWwpCiAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICBhdXRvIGlk
ID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgIGF1dG8gaWQgPSBjcmVhdGVWZXJz
aW9uNFVVSURTdHJpbmcoKTsKICAgICBtX3ZpcnR1YWxBdXRoZW50aWNhdG9ycy5zZXQoaWQsIG1h
a2VVbmlxdWVSZWY8VmlydHVhbEF1dGhlbnRpY2F0b3JDb25maWd1cmF0aW9uPihjb25maWcpKTsK
IAogICAgIHJldHVybiBpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5
bGFuZENvbXBvc2l0b3IuY3BwCmluZGV4IDExMDhhYWU3NzhhODRkY2MxNzY0NGJjOWQ5Mzk1ZTQz
NmQ5MWRiZjUuLmMyODdkMGFhMjkwNGRjODQ0OThmMTdjNWIyMmU0NTIxNmVkNzc1Y2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcApA
QCAtNTAxLDcgKzUwMSw3IEBAIFdheWxhbmRDb21wb3NpdG9yOjpXYXlsYW5kQ29tcG9zaXRvcigp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgZGlzcGxheU5hbWUgPSAid2Vi
a2l0Z3RrLXdheWxhbmQtY29tcG9zaXRvci0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
OworICAgIFN0cmluZyBkaXNwbGF5TmFtZSA9ICJ3ZWJraXRndGstd2F5bGFuZC1jb21wb3NpdG9y
LSIgKyBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKTsKICAgICBpZiAod2xfZGlzcGxheV9hZGRf
c29ja2V0KGRpc3BsYXkuZ2V0KCksIGRpc3BsYXlOYW1lLnV0ZjgoKS5kYXRhKCkpID09IC0xKSB7
CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiTmVzdGVkIFdheWxhbmQgY29tcG9zaXRvciBjb3VsZCBu
b3QgY3JlYXRlIGRpc3BsYXkgc29ja2V0Iik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vZGVsVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS01vZGVsVmlldy5tbQppbmRleCA0NGZhODVmMDI5ZmMyNmQ1YjZh
MWRiOWExM2ZhMmIyNDdkZWY1ZTIyLi4wNWE4MTMxYjNhZTM3ZWU1NWVhYzlkYzVkOTQ0N2QyNzAw
NTcxOTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb2RlbFZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW9kZWxWaWV3Lm1tCkBA
IC0xMjEsNyArMTIxLDcgQEAgU09GVF9MSU5LX0NMQVNTKEFzc2V0Vmlld2VyLCBBU1ZJbmxpbmVQ
cmV2aWV3KTsKICAgICAgICAgcmV0dXJuIE5POwogICAgIH0KIAotICAgIGF1dG8gZmlsZU5hbWUg
PSBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCkpICsgIi51c2R6IjsKKyAgICBhdXRvIGZpbGVOYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9y
RmlsZU5hbWUoY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkpICsgIi51c2R6IjsKICAgICBhdXRv
IGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0Rp
cmVjdG9yeSwgZmlsZU5hbWUpOwogICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxl
KGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKICAgICBpZiAoZmls
ZSA8PSAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCAyNTA4MWJiM2M1
ZTMwYzMyNWQ5NmE1Y2I4ZGVhYTJhMzYyMzJjOTg3Li5iMGZlODM1NzIyM2IzMTMzZmM0ZGIyZmJh
YWQ4ZTczOWY1ZTNiOWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAt
MTgyLDcgKzE4Miw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGV2YWx1YXRlKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSCiAKIHN0YXRpYyBKU1ZhbHVl
UmVmIGNyZWF0ZVVVSUQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIHJldHVy
biB0b0pTVmFsdWUoY29udGV4dCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLmNvbnZlcnRU
b0FTQ0lJVXBwZXJjYXNlKCkpOworICAgIHJldHVybiB0b0pTVmFsdWUoY29udGV4dCwgY3JlYXRl
VmVyc2lvbjRVVUlEU3RyaW5nKCkuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSk7CiB9CiAKIHN0
YXRpYyBKU1ZhbHVlUmVmIGV2YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2Rl
bC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1t
CmluZGV4IDM1YzY4MDJiNmMxMzk0MzM5NjJkMDE4NmU2MjA1MGY2ZmNlZjU4YjMuLmQyNmIzZGEz
Mzc1MThhMDBjMTA2ODdjNGNhZTYwYjI5NjE1YmUxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgQVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVs
U291cmNlKQogICAgIH0KIAogICAgIC8vIFdlIG5lZWQgdG8gc3VwcG9ydCAucmVhbGl0eSBmaWxl
cyBhcyB3ZWxsLCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NTY4
LgotICAgIGF1dG8gZmlsZU5hbWUgPSBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpICsgIi51c2R6IjsKKyAgICBhdXRvIGZpbGVOYW1lID0g
RmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkp
ICsgIi51c2R6IjsKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHBhdGhUb0RpcmVjdG9yeSwgZmlsZU5hbWUpOwogICAgIGF1dG8gZmlsZSA9
IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6
OldyaXRlKTsKICAgICBpZiAoZmlsZSA8PSAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggNzU1OGRjNDAzMzAyMDJjNDVhYzQ3
MDE1MjgxY2Y4NWNlY2EyN2E4Yy4uZmE5NDQ3OTYzMDc1ZWQ4OGQ3ZDY3ZjUyZTU5NTQ1ZTdmMzJj
MTRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tCkBAIC0yNTg1LDcgKzI1ODUsNyBAQCB2b2lkIFBERlBsdWdpbjo6b3BlbldpdGhQ
cmV2aWV3KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJiwgRnJhbWVJbmZvRAog
ICAgIEZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvOwogICAgIGlmIChtX2ZyYW1lKQogICAgICAgICBm
cmFtZUluZm8gPSBtX2ZyYW1lLT5pbmZvKCk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9zdWdn
ZXN0ZWRGaWxlbmFtZSwgV1RGTW92ZShmcmFtZUluZm8pLCBJUEM6OiBEYXRhUmVmZXJlbmNlIHsg
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9LCBj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fc3Vn
Z2VzdGVkRmlsZW5hbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgSVBDOjogRGF0YVJlZmVyZW5jZSB7
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwg
Y3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkpOwogfQogCiAjZWxzZSAvLyBFTkFCTEUoVUlfUFJP
Q0VTU19QREZfSFVEKQpAQCAtMjYxNiw3ICsyNjE2LDcgQEAgdm9pZCBQREZQbHVnaW46Om9wZW5X
aXRoTmF0aXZlQXBwbGljYXRpb24oKQogCiAgICAgICAgIE5TRGF0YSAqZGF0YSA9IGxpdmVEYXRh
KCk7CiAKLSAgICAgICAgbV90ZW1wb3JhcnlQREZVVUlEID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0
cmluZygpOworICAgICAgICBtX3RlbXBvcmFyeVBERlVVSUQgPSBjcmVhdGVWZXJzaW9uNFVVSURT
dHJpbmcoKTsKICAgICAgICAgQVNTRVJUKG1fdGVtcG9yYXJ5UERGVVVJRCk7CiAKICAgICAgICAg
bV9mcmFtZS0+cGFnZSgpLT5zYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2
ZUFwcGxpY2F0aW9uKG1fc3VnZ2VzdGVkRmlsZW5hbWUsIG1fZnJhbWUtPmluZm8oKSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhd
LCBtX3RlbXBvcmFyeVBERlVVSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9X
ZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCmluZGV4
IGE0Nzg3YTEyYTAwOWFiZWM1YTM1MGUwZGRmNTIxZDRlMjI1ZWZmNGEuLjcwZDYwOTAxYTcxZDA5
MTAzMjFhMjk3ZDViMDVmMjBmYTJkMGQyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5j
cHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmVuc3Vy
ZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHIKICAgICBpZiAoIWFk
ZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGlkZW50aWZp
ZXIgPSBtYWtlU3RyaW5nKGlkZW50aWZpZXJCYXNlLCAiLlByaXZhdGVCcm93c2luZy4iLCBjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgYXV0byBpZGVu
dGlmaWVyID0gbWFrZVN0cmluZyhpZGVudGlmaWVyQmFzZSwgIi5Qcml2YXRlQnJvd3NpbmcuIiwg
Y3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICBSZXRh
aW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gc3RvcmFnZVNlc3Npb247CiAgICAgaWYgKHNl
c3Npb25JRC5pc0VwaGVtZXJhbCgpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDEwMGE4MjZhNjIxNGY0NGY4ZWNhNGI0ZjM4NDc1YWU1NTIxMWNi
ZDYuLjAyNjAwMDFiMThjZTM2MjFiYTNjNmZlMDE5YTliMGExZDM0ZDgyNmQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAyMi0wMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAg
Q2xhcmlmeSB0aGF0IHNvbWUgVVVJRCByb3V0aW5lcyBhcmUgZGVkaWNhdGVkIHRvIFVVSUQgdjQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTQzMAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvVVVJRC5jcHA6CisgICAgICAgIChwYXJzZUFuZFN0cmluZ2lmeVVVSUQp
OgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9OZXR3b3JrUHJvY2Vzcy5tbToKKyAgICAgICAgKHdhaXRVbnRpbE5ldHdvcmtQcm9jZXNz
SXNSZXNwb25zaXZlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNhbHRGb3JP
cmlnaW4pOgorCiAyMDIyLTAxLTI4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbRVdTXSBUcmlnZ2VyIGVtYmVkZGVkIGJ1aWxkZXJzIG9uIHB1bGwtcmVx
dWVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VVSUQuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVVJRC5jcHAKaW5kZXggNjM3YzU0Njkw
ZGY2YjllNDc2MWNiMWRhZDI4NTZmODMxODAxYmZjOS4uZGQ4NzdmZTFiMGQ5NjhhNTZlZTFiOTVl
ODRlN2ZmNDI5Mzg1ZmY5YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVVVJRC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVVJRC5jcHAK
QEAgLTM0LDM4ICszNCw0MCBAQCBURVNUKFdURiwgQm9vdFNlc3Npb25VVUlESWRlbnRpdHkpCiAK
IHN0YXRpYyBTdHJpbmcgcGFyc2VBbmRTdHJpbmdpZnlVVUlEKGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7Ci0gICAgYXV0byB1dWlkID0gVVVJRDo6cGFyc2UodmFsdWUpOworICAgIGF1dG8gdXVpZCA9
IFVVSUQ6OnBhcnNlVmVyc2lvbjQodmFsdWUpOwogICAgIGlmICghdXVpZCkKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICByZXR1cm4gdXVpZC0+dG9TdHJpbmcoKTsKIH0KIAotVEVTVChXVEYsIFRl
c3RVVUlEUGFyc2luZykKK1RFU1QoV1RGLCBUZXN0VVVJRFZlcnNpb240UGFyc2luZykKIHsKICAg
ICAvLyB4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgKIAotICAgIEVYUEVDVF9G
QUxTRSghIVVVSUQ6OnBhcnNlKCIxMjM0NTY3OC05YWJjLTVkZTAtODlBQi0wMTIzNDU2Nzg5YWIi
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjEyMzQ1Njc4LTlhYmMtNGRlYS03
OUFCLTAxMjM0NTY3ODlhYiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZSgiMTIz
NDU2NzgtOWFiYy00ZGUwLTdmZmYtMDEyMzQ1Njc4OWFiIikpOwotICAgIEVYUEVDVF9GQUxTRSgh
IVVVSUQ6OnBhcnNlKCIxMjM0NTY3OC05YWJjLTRkZTAtYzAwMDAtMDEyMzQ1Njc4OWFiIikpOwor
ICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlVmVyc2lvbjQoIjEyMzQ1Njc4LTlhYmMtNWRl
MC04OUFCLTAxMjM0NTY3ODlhYiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZVZl
cnNpb240KCIxMjM0NTY3OC05YWJjLTRkZWEtNzlBQi0wMTIzNDU2Nzg5YWIiKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2VWZXJzaW9uNCgiMTIzNDU2NzgtOWFiYy00ZGUwLTdmZmYt
MDEyMzQ1Njc4OWFiIikpOworICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlVmVyc2lvbjQo
IjEyMzQ1Njc4LTlhYmMtNGRlMC1jMDAwMC0wMTIzNDU2Nzg5YWIiKSk7CiAKLSAgICBFWFBFQ1Rf
RkFMU0UoISFVVUlEOjpwYXJzZSgiK2VmOTQ0YzEtNWNiOC00OGFhLUFkMTItQzVmODIzZjAwNWMz
IikpOwotICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlKCI2ZWY5NDRjMS0rY2I4LTQ4YWEt
QWQxMi1DNWY4MjNmMDA1YzMiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjZl
Zjk0NGMxLTVjYjgtKzhhYS1BZDEyLUM1ZjgyM2YwMDVjMyIpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
ISFVVUlEOjpwYXJzZSgiNmVmOTQ0YzEtNWNiOC00OGFhLStkMTItQzVmODIzZjAwNWMzIikpOwot
ICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlKCI2ZWY5NDRjMS01Y2I4LTQ4YWEtQWQxMi0r
NWY4MjNmMDA1YzMiKSk7CisgICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2VWZXJzaW9uNCgi
K2VmOTQ0YzEtNWNiOC00OGFhLUFkMTItQzVmODIzZjAwNWMzIikpOworICAgIEVYUEVDVF9GQUxT
RSghIVVVSUQ6OnBhcnNlVmVyc2lvbjQoIjZlZjk0NGMxLStjYjgtNDhhYS1BZDEyLUM1ZjgyM2Yw
MDVjMyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZVZlcnNpb240KCI2ZWY5NDRj
MS01Y2I4LSs4YWEtQWQxMi1DNWY4MjNmMDA1YzMiKSk7CisgICAgRVhQRUNUX0ZBTFNFKCEhVVVJ
RDo6cGFyc2VWZXJzaW9uNCgiNmVmOTQ0YzEtNWNiOC00OGFhLStkMTItQzVmODIzZjAwNWMzIikp
OworICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlVmVyc2lvbjQoIjZlZjk0NGMxLTVjYjgt
NDhhYS1BZDEyLSs1ZjgyM2YwMDVjMyIpKTsKIAotICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBh
cnNlKCIwMDAwMDAwMC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMDAwMDAiKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjAwMDAwMDAwLTAwMDAtNDAwMC04MDAwLTAwMDAwMDAwMDAw
MSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZVZlcnNpb240KCIwMDAwMDAwMC0w
MDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiKSk7CisgICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6
cGFyc2VWZXJzaW9uNCgiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAxIikpOwor
ICAgIEVYUEVDVF9UUlVFKCEhVVVJRDo6cGFyc2VWZXJzaW9uNCgiMDAwMDAwMDAtMDAwMC00MDAw
LTgwMDAtMDAwMDAwMDAwMDAwIikpOworICAgIEVYUEVDVF9UUlVFKCEhVVVJRDo6cGFyc2VWZXJz
aW9uNCgiMDAwMDAwMDAtMDAwMC00MDAwLTgwMDAtMDAwMDAwMDAwMDAxIikpOwogCi0gICAgZm9y
IChzaXplX3QgY3B0ciA9IDA7IGNwdHIgPCAxMDA7ICsrY3B0cikgewotICAgICAgICBhdXRvIGNy
ZWF0ZWRVVUlEID0gVVVJRDo6Y3JlYXRlKCk7CisgICAgZm9yIChzaXplX3QgY3B0ciA9IDA7IGNw
dHIgPCAxMDsgKytjcHRyKSB7CisgICAgICAgIGF1dG8gY3JlYXRlZFVVSUQgPSBVVUlEOjpjcmVh
dGVWZXJzaW9uNCgpOwogICAgICAgICBhdXRvIGNyZWF0ZWRTdHJpbmcgPSBjcmVhdGVkVVVJRC50
b1N0cmluZygpOwogICAgICAgICBFWFBFQ1RfRVEoY3JlYXRlZFN0cmluZy5sZW5ndGgoKSwgMzZ1
KTsKICAgICAgICAgRVhQRUNUX0VRKGNyZWF0ZWRTdHJpbmdbMTRdLCAnNCcpOwogICAgICAgICBF
WFBFQ1RfVFJVRShjcmVhdGVkU3RyaW5nWzE5XSA9PSAnOCcgfHwgY3JlYXRlZFN0cmluZ1sxOV0g
PT0gJzknIHx8IGNyZWF0ZWRTdHJpbmdbMTldID09ICdhJyB8fCBjcmVhdGVkU3RyaW5nWzE5XSA9
PSAnYicpOwogCi0gICAgICAgIGF1dG8gdXVpZCA9IFVVSUQ6OnBhcnNlKGNyZWF0ZWRTdHJpbmcp
OworICAgICAgICBhdXRvIHV1aWQgPSBVVUlEOjpwYXJzZVZlcnNpb240KGNyZWF0ZWRTdHJpbmcp
OwogICAgICAgICBFWFBFQ1RfVFJVRSghIXV1aWQpOwogICAgICAgICBFWFBFQ1RfRVEoKnV1aWQs
IGNyZWF0ZWRVVUlEKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbQppbmRleCBhMjBlNzJjZGIzMTVmMmM5
OTgzMDcxYTQ5MDJkNzM4NjVlN2UxOGVhLi5iMTFjNjllMjM1NGNhZjQ0Y2RkYzAwZTFlMzE5MmNl
NGY4NjMyOGJkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL05ldHdvcmtQcm9jZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW0KQEAgLTIyNSw3ICsyMjUsNyBAQCBzdGF0aWMgdm9p
ZCB3YWl0VW50aWxOZXR3b3JrUHJvY2Vzc0lzUmVzcG9uc2l2ZShXS1dlYlZpZXcgKndlYlZpZXcx
LCBXS1dlYlZpZXcgKgogICAgIC8vIHdlIGRvbid0IHdhbnQgdGhlIHRlc3QgdG8gZ28gb24gd2l0
aCB0aGUgV2ViUHJvY2Vzc2VzIHVzaW5nIHN0YWxlIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbnMs
IHdlIHVzZSB0aGUgZm9sbG93aW5nCiAgICAgLy8gdHJpY2sgdG8gd2FpdCB1bnRpbCBib3RoIFdl
YlByb2Nlc3NlcyBhcmUgYWJsZSB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBuZXcgTmV0d29ya1By
b2Nlc3M6CiAgICAgLy8gVGhlIGZpcnN0IFdlYlByb2Nlc3MgdHJpZXMgc2V0dGluZyBhIGNvb2tp
ZSB1bnRpbCB0aGUgc2Vjb25kIFdlYnZpZXcgaXMgYWJsZSB0byBzZWUgaXQuCi0gICAgYXV0byBl
eHBlY3RlZENvb2tpZVN0cmluZyA9IG1ha2VTdHJpbmcoIlRFU1Q9IiwgY3JlYXRlQ2Fub25pY2Fs
VVVJRFN0cmluZygpKTsKKyAgICBhdXRvIGV4cGVjdGVkQ29va2llU3RyaW5nID0gbWFrZVN0cmlu
ZygiVEVTVD0iLCBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSk7CiAgICAgYXV0byBzZXRUZXN0
Q29va2llU3RyaW5nID0gbWFrZVN0cmluZygic2V0SW50ZXJ2YWwoKCkgPT4geyBkb2N1bWVudC5j
b29raWU9JyIsIGV4cGVjdGVkQ29va2llU3RyaW5nLCAiJzsgfSwgMTAwKTsiKTsKICAgICBbd2Vi
VmlldzEgZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNldFRlc3RDb29raWVTdHJpbmcg
Y29tcGxldGlvbkhhbmRsZXI6IFsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAg
ICAgICBFWFBFQ1RfVFJVRSghZXJyb3IpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRl
eCA0NGQwOGY4NDAyMjY0YzI3MjBlMjMwNTZmN2M1NTY5YzRjYjQ4YjIyLi45YTY4ZTZlNDUxZmVm
MTNiZjUwMDdjYjJmMDM3NjUwYWMzM2ZmZGMyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNw
cApAQCAtMzAwLDcgKzMwMCw3IEBAIGNvbnN0IFNvY2tldENvbm5lY3Rpb246Ok1lc3NhZ2VIYW5k
bGVycyBBdXRvbWF0aW9uVGVzdDo6c19tZXNzYWdlSGFuZGxlcnMgPSB7CiAKIHN0YXRpYyB2b2lk
IHRlc3RBdXRvbWF0aW9uU2Vzc2lvblJlcXVlc3RTZXNzaW9uKEF1dG9tYXRpb25UZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogewotICAgIFN0cmluZyBzZXNzaW9uSUQgPSBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCk7CisgICAgU3RyaW5nIHNlc3Npb25JRCA9IGNyZWF0ZVZlcnNpb240VVVJ
RFN0cmluZygpOwogICAgIC8vIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOjphdXRvbWF0aW9uLXN0
YXJ0ZWQgaXMgbmV2ZXIgZW1pdHRlZCBpZiBhdXRvbWF0aW9uIGlzIG5vdCBlbmFibGVkLgogICAg
IGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfY29udGV4dF9pc19hdXRvbWF0aW9uX2FsbG93ZWQo
dGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7CiAgICAgYXV0byogc2Vzc2lvbiA9IHRlc3QtPnJl
cXVlc3RTZXNzaW9uKHNlc3Npb25JRC51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZDk1ZjY4NWY4MTU3ZTYzYjUzZjZlNDMxYjQ0
NGJkYTZiNTE0OTc2Ny4uMjcwNTA5Y2U5NGM5NWEwYzJjMjU3YzU0MzdhMWZiNGE5YzI2NjkyZiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTI0ODYsMTMg
KzI0ODYsMTMgQEAgU3RyaW5nIFRlc3RDb250cm9sbGVyOjpzYWx0Rm9yT3JpZ2luKFdLRnJhbWVS
ZWYgZnJhbWUsIFN0cmluZyBvcmlnaW5IYXNoKQogICAgICAgICAgICAgcmV0dXJuIGZyYW1lU2Fs
dDsKIAogICAgICAgICBpZiAoIXNldHRpbmdzLnBlcnNpc3RlbnRTYWx0KCkubGVuZ3RoKCkpCi0g
ICAgICAgICAgICBzZXR0aW5ncy5zZXRQZXJzaXN0ZW50U2FsdChjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCkpOworICAgICAgICAgICAgc2V0dGluZ3Muc2V0UGVyc2lzdGVudFNhbHQoY3JlYXRl
VmVyc2lvbjRVVUlEU3RyaW5nKCkpOwogCiAgICAgICAgIHJldHVybiBzZXR0aW5ncy5wZXJzaXN0
ZW50U2FsdCgpOwogICAgIH0KIAogICAgIGlmICghZnJhbWVTYWx0Lmxlbmd0aCgpKSB7Ci0gICAg
ICAgIGZyYW1lU2FsdCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICAgICAgZnJh
bWVTYWx0ID0gY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCk7CiAgICAgICAgIGVwaGVtZXJhbFNh
bHRzLmFkZChmcmFtZUlkZW50aWZpZXIsIGZyYW1lU2FsdCk7CiAgICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>