<?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>225550</bug_id>
          
          <creation_ts>2021-05-07 16:44:30 -0700</creation_ts>
          <short_desc>Port Filesystem::pathByAppendingComponent() &amp; Filesystem:: pathByAppendingComponents() to std::filesystem</short_desc>
          <delta_ts>2021-05-08 18:27:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</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>
          <dependson>225524</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1758094</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-07 16:44:30 -0700</bug_when>
    <thetext>Port Filesystem::pathByAppendingComponent() &amp; Filesystem:: pathByAppendingComponents() to std::filesystem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758099</commentid>
    <comment_count>1</comment_count>
      <attachid>428062</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-07 16:47:53 -0700</bug_when>
    <thetext>Created attachment 428062
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758142</commentid>
    <comment_count>2</comment_count>
      <attachid>428072</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-07 19:14:33 -0700</bug_when>
    <thetext>Created attachment 428072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758190</commentid>
    <comment_count>3</comment_count>
      <attachid>428072</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-08 09:50:57 -0700</bug_when>
    <thetext>Comment on attachment 428072
Patch

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

&gt; Source/WTF/wtf/FileSystem.cpp:740
&gt; +    std::filesystem::path fsPath = fileSystemRepresentation(path).data();
&gt; +    fsPath.append(fileSystemRepresentation(component).data());
&gt; +    return String::fromUTF8(fsPath.u8string().c_str());

It’s a little strange to use fileSystemRepresentation to convert from a WTF::String to a path, but then use String::fromUTF8 in the other direction. Are we meant to be using an abstraction or just writing UTF-8 coding.

I don’t think writing String::fromUTF8(fsPath.u8string().c_str()) repeatedly is a good pattern for the file system code. There should be a single helper function to do this operation.

Similarly, to create a std::filesystem::path from a WTF::String we should use a single helper function. We may later want to write a more efficient version of it that doesn’t involve CString, and there’s no reason to sprinkle the use of CString into all those functions. Same with append. There are iterator versions that should be able to append things directly from transformed WTF::String characters, and so we should not build the less efficient algorithm into each call site. Instead we should concentrate these in a small number of conversion functions.

&gt; Source/WTF/wtf/FileSystem.cpp:745
&gt; +    std::filesystem::path fsPath = fileSystemRepresentation(path.toStringWithoutCopying()).data();

This makes me think that fileSystemRepresentation should use a StringView instead of a String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758194</commentid>
    <comment_count>4</comment_count>
      <attachid>428088</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-08 10:30:58 -0700</bug_when>
    <thetext>Created attachment 428088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758195</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-08 10:33:19 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 428072 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=428072&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/FileSystem.cpp:740
&gt; &gt; +    std::filesystem::path fsPath = fileSystemRepresentation(path).data();
&gt; &gt; +    fsPath.append(fileSystemRepresentation(component).data());
&gt; &gt; +    return String::fromUTF8(fsPath.u8string().c_str());
&gt; 
&gt; It’s a little strange to use fileSystemRepresentation to convert from a
&gt; WTF::String to a path, but then use String::fromUTF8 in the other direction.
&gt; Are we meant to be using an abstraction or just writing UTF-8 coding.
&gt; 
&gt; I don’t think writing String::fromUTF8(fsPath.u8string().c_str()) repeatedly
&gt; is a good pattern for the file system code. There should be a single helper
&gt; function to do this operation.
&gt; 
&gt; Similarly, to create a std::filesystem::path from a WTF::String we should
&gt; use a single helper function. We may later want to write a more efficient
&gt; version of it that doesn’t involve CString, and there’s no reason to
&gt; sprinkle the use of CString into all those functions. Same with append.
&gt; There are iterator versions that should be able to append things directly
&gt; from transformed WTF::String characters, and so we should not build the less
&gt; efficient algorithm into each call site. Instead we should concentrate these
&gt; in a small number of conversion functions.
&gt; 
&gt; &gt; Source/WTF/wtf/FileSystem.cpp:745
&gt; &gt; +    std::filesystem::path fsPath = fileSystemRepresentation(path.toStringWithoutCopying()).data();
&gt; 
&gt; This makes me think that fileSystemRepresentation should use a StringView
&gt; instead of a String.

I added 2 utility functions to convert between String &lt;-&gt; std::filesystem::path. Both rely on UTF-8 and the one that converts to a std::filesystem::path takes in a StringView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758198</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-08 11:06:00 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; I added 2 utility functions to convert between String &lt;-&gt;
&gt; std::filesystem::path. Both rely on UTF-8 and the one that converts to a
&gt; std::filesystem::path takes in a StringView.

With these, you should be able to use auto a bit more, and perhaps cut down on the number of local variables, since we’ll get std::filesystem::path without having to utter that type name explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758199</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-08 11:27:52 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; (In reply to Chris Dumez from comment #5)
&gt; &gt; I added 2 utility functions to convert between String &lt;-&gt;
&gt; &gt; std::filesystem::path. Both rely on UTF-8 and the one that converts to a
&gt; &gt; std::filesystem::path takes in a StringView.
&gt; 
&gt; With these, you should be able to use auto a bit more, and perhaps cut down
&gt; on the number of local variables, since we’ll get std::filesystem::path
&gt; without having to utter that type name explicitly.

I did switch to auto in my patch. It is true that I could likely reduce the number of locals too. I will check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758200</commentid>
    <comment_count>8</comment_count>
      <attachid>428089</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-08 12:14:46 -0700</bug_when>
    <thetext>Created attachment 428089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758213</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-08 15:35:15 -0700</bug_when>
    <thetext>Committed r277231 (237500@main): &lt;https://commits.webkit.org/237500@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428089.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758214</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-08 15:36:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/77701228&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758219</commentid>
    <comment_count>11</comment_count>
      <attachid>428089</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-08 16:26:36 -0700</bug_when>
    <thetext>Comment on attachment 428089
Patch

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

&gt; Source/WTF/wtf/FileSystem.cpp:55
&gt; +    return std::filesystem::u8path(path.utf8().data());

Did you research what is different about fileSystemRepresentation than just converting to UTF-8? Just want to be sure we didn’t lose anything valuable when we dropped it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758256</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-08 18:27:19 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #11)
&gt; Comment on attachment 428089 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=428089&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/FileSystem.cpp:55
&gt; &gt; +    return std::filesystem::u8path(path.utf8().data());
&gt; 
&gt; Did you research what is different about fileSystemRepresentation than just
&gt; converting to UTF-8? Just want to be sure we didn’t lose anything valuable
&gt; when we dropped it.

I will double check but u8path() will take care of converting from Utf-8 to the native filesystem encoding for us, which means we should not need fileSystemRepresentation() anymore.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428062</attachid>
            <date>2021-05-07 16:47:53 -0700</date>
            <delta_ts>2021-05-07 19:14:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225550-20210507164753.patch</filename>
            <type>text/plain</type>
            <size>15885</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
M2ZmODhlZTRiZjkyNmVhMjIyODMxNzA3NzA4Y2VjNTRhNmYyNjdhLi4wNjM1NGI5OWU4YTI0MGQy
MzE1MDcyN2UyOGYxMjMxNGM0YTgyZjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0wNS0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCkgJiBG
aWxlc3lzdGVtOjogcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygpIHRvIHN0ZDo6ZmlsZXN5c3Rl
bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTUw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVpbGQg
Zml4LgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6
CisKIDIwMjEtMDUtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBQb3J0IEZpbGVzeXN0ZW06OmZpbGVNZXRhZGF0YSgpICYgRmlsZXN5c3RlbTo6Z2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWUoKSB0byBzdGQ6OmZpbGVzeXN0ZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMWY5YWY3M2Y1YTdhMmM0
NTYxZDFhM2RmYjI4ZjYyZTBjMGQ0MjUyMi4uN2NmMDcyYTE0MmM5YmM5ZGE3NmJkMzNlNTE4YzA4
OGFjMjg5ODcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0wNS0wNyAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KCkgJiBGaWxlc3lzdGVtOjogcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
cygpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI1NTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUG9ydCBGaWxlc3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
KSAmIEZpbGVzeXN0ZW06OiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKCkgdG8gc3RkOjpmaWxl
c3lzdGVtCisgICAgICAgIGFuZCBnZXQgcmlkIG9mIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVu
dGF0aW9ucy4KKworICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6
RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCk6CisgICAgICAgIChXVEY6
OkZpbGVTeXN0ZW1JbXBsOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKToKKyAgICAgICAgKiB3
dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHA6CisgICAgICAgICogd3RmL3Bvc2l4L0ZpbGVTeXN0
ZW1QT1NJWC5jcHA6CisgICAgICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKwogMjAy
MS0wNS0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBvcnQg
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKCkgJiBGaWxlc3lzdGVtOjpkaXJlY3RvcnlOYW1l
KCkgdG8gc3RkOjpmaWxlc3lzdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcKaW5kZXggM2E1ZGE0
M2M2M2RhNWRmYjU3NDFiYjQwNmZlNGU1OWIxYThiNWMzNC4uZmQ2YmMyY2Q4MmM4ZjJlOGJkNWFi
MjZjMjFhMjE0YjUxNjQ1M2QxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Nv
bmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZwpAQCAtMjcsNyAr
MjcsNyBAQCBERUZJTkVTX01PRFVMRSA9IFlFUzsKIE1PRFVMRU1BUF9GSUxFID0gJChTUkNST09U
KS9KYXZhU2NyaXB0Q29yZS5tb2R1bGVtYXA7CiAKIC8vIFByZXZlbnQgQysrIHN0YW5kYXJkIGxp
YnJhcnkgb3BlcmF0b3IgbmV3LCBkZWxldGUgYW5kIHRoZWlyIHJlbGF0ZWQgZXhjZXB0aW9uIHR5
cGVzIGZyb20gYmVpbmcgZXhwb3J0ZWQgYXMgd2VhayBzeW1ib2xzLgotT1RIRVJfTERGTEFHU19I
SURFX1NZTUJPTFMgPSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRJU3Q5YmFkX2FsbG9jIC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5
bWJvbCxfX1pUU1N0OWJhZF9hbGxvYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRTU3Q5ZXhj
ZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aZGxQdlNfIC1XbCwtdW5leHBvcnRlZF9z
eW1ib2wsX19abndtUHYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThmdW5jdGlv
bklGdnZFRWNsRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2
dkVFQzFFT1MyXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2
RUVDMkVPUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTktTdDNfXzE4ZnVuY3Rpb25JRnZS
TjNKU0MxN0J5dGVjb2RlR2VuZXJhdG9yRVBOUzFfMTBSZWdpc3RlcklERUVFY2xFUzNfUzVfIC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNv
ZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVEMUV2IC1XbCwtdW5leHBvcnRlZF9zeW1i
b2wsX19aTlN0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8x
MFJlZ2lzdGVySURFRUVEMkV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5j
dGlvbklGdnZFRUQxRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9u
SUZ2dkVFRDJFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRWTlN0M19fMTE3YmFkX2Z1bmN0
aW9uX2NhbGxFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lz
dGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJUEtjUzRfY0xiMUVFMTFfX3JhbmdlX2VuZEVT
NF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9f
aXNfcGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxM19fcmFuZ2VfYmVnaW5FUzRfIC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZU
SWNFMTRfX2FwcGVuZF9yYW5nZUlQS2NFRU5TXzllbmFibGVfaWZJWHNyMjdfX2lzX2NwcDE3X2Zv
cndhcmRfaXRlcmF0b3JJVF9FRTV2YWx1ZUV2RTR0eXBlRVJOU18xMmJhc2ljX3N0cmluZ0ljTlNf
MTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUzhfUzhfIC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVu
ZF9zb3VyY2VJUEtjRUV2Uk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5T
XzlhbGxvY2F0b3JJY0VFRUVSS1RfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRf
X2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTRfX2FwcGVuZF9yYW5nZUlQS2NFRU5TXzllbmFi
bGVfaWZJWHNyMjFfX2lzX2ZvcndhcmRfaXRlcmF0b3JJVF9FRTV2YWx1ZUV2RTR0eXBlRVJOU18x
MmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUzhf
UzhfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTktTdDNfXzE0X19mczEwZmlsZXN5c3RlbTE4
ZGlyZWN0b3J5X2l0ZXJhdG9yZGVFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0
X19mczEwZmlsZXN5c3RlbTE4ZGlyZWN0b3J5X2l0ZXJhdG9ycHBFdiAtV2wsLXVuZXhwb3J0ZWRf
c3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2Fy
cmF5SUExMF9jUGNjTGIxRUUxMV9fcmFuZ2VfZW5kRVBLYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
LF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SUEx
MF9jUGNjTGIxRUUxM19fcmFuZ2VfYmVnaW5FUEtjIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
TlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtNHBhdGhkVkVSS1MyXyAtV2wsLXVuZXhwb3J0ZWRfc3lt
Ym9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbThfUGF0aENWVEljRTE1X19hcHBlbmRfc291
cmNlSUExMF9jRUV2Uk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlh
bGxvY2F0b3JJY0VFRUVSS1RfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2Zz
MTBmaWxlc3lzdGVtMjRfX3Rocm93X2ZpbGVzeXN0ZW1fZXJyb3JJSlJQS2NSS05TMV80cGF0aEVS
S05TXzEwZXJyb3JfY29kZUVFRUV2RHBPVF87CitPVEhFUl9MREZMQUdTX0hJREVfU1lNQk9MUyA9
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDliYWRfYWxsb2MgLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCxfX1pUSVN0OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRTU3Q5
YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFNTdDlleGNlcHRpb24gLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCxfX1pkbFB2U18gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pud21Q
diAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2dkVFY2xFdiAt
V2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVDMUVPUzJfIC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdnZFRUMyRU9TMl8gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNv
ZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVjbEVTM19TNV8gLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvckVQ
TlMxXzEwUmVnaXN0ZXJJREVFRUQxRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18x
OGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJREVF
RUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVFRDFF
diAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVEMkV2IC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFZOU3QzX18xMTdiYWRfZnVuY3Rpb25fY2FsbEUgLVds
LC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0
aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxMV9fcmFuZ2VfZW5kRVM0XyAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9j
aGFyX2FycmF5SVBLY1M0X2NMYjFFRTEzX19yYW5nZV9iZWdpbkVTNF8gLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5k
X3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyN19faXNfY3BwMTdfZm9yd2FyZF9pdGVyYXRv
cklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRz
SWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pO
U3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNV9fYXBwZW5kX3NvdXJjZUlQS2NF
RXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvcklj
RUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyMV9f
aXNfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5n
SWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3RvcnlfaXRl
cmF0b3JkZUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lz
dGVtMThkaXJlY3RvcnlfaXRlcmF0b3JwcEV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0
M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NM
YjFFRTExX19yYW5nZV9lbmRFUEtjIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRf
X2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFFRTEz
X19yYW5nZV9iZWdpbkVQS2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMx
MGZpbGVzeXN0ZW00cGF0aGRWRVJLUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19f
MTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VJQTEwX2NFRXZS
TlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVF
RVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0y
NF9fdGhyb3dfZmlsZXN5c3RlbV9lcnJvcklKUlBLY1JLTlMxXzRwYXRoRVJLTlNfMTBlcnJvcl9j
b2RlRUVFRXZEcE9UXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmls
ZXN5c3RlbTE0X19pc19zZXBhcmF0b3JJY0VFTlNfOWVuYWJsZV9pZklYc3IxOF9fY2FuX2NvbnZl
cnRfY2hhcklUX0VFNXZhbHVlRWJFNHR5cGVFUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
TlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJUEtjUzRf
Y0xiMUVFMTVfX2ZpcnN0X29yX251bGxFUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0
M19fMTRfX2ZzMTBmaWxlc3lzdGVtNHBhdGgyMF9fc291cmNlX2lzX2Fic29sdXRlSWNFRWJUXyAt
V2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTRwYXRoNmFw
cGVuZElQS2NFRU5TXzllbmFibGVfaWZJWHNyMTNfX2lzX3BhdGhhYmxlSVRfRUU1dmFsdWVFUlMy
X0U0dHlwZUVSS1M3XzsKIAogT1RIRVJfTERGTEFHU19CQVNFID0gJChPVEhFUl9MREZMQUdTX0hJ
REVfU1lNQk9MUykgLWZvcmNlX2xvYWQgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9saWJXVEYuYSI7CiBPVEhFUl9MREZMQUdTW3Nkaz1lbWJlZGRl
ZCpdID0gJChpbmhlcml0ZWQpICQoT1RIRVJfTERGTEFHU19CQVNFKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5j
cHAKaW5kZXggZTI3NmFmM2VlZmQ5MDg2NTNjMDBiZTkwYmU4NWE1YTI5MWQ5NWY1ZC4uMWMyYmI4
NDVjMTNjY2RiZmRlN2YwYzk0NTJlNDM1ZmQzZjA3ZDhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAK
QEAgLTczMyw1ICs3MzMsMjAgQEAgU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBw
YXRoKQogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGZzUGF0aC5wYXJlbnRfcGF0aCgpLnU4
c3RyaW5nKCkuY19zdHIoKSk7CiB9CiAKK1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKK3sKKyAgICBzdGQ6
OmZpbGVzeXN0ZW06OnBhdGggZnNQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
LmRhdGEoKTsKKyAgICBmc1BhdGguYXBwZW5kKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb21w
b25lbnQpLmRhdGEoKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZnNQYXRoLnU4c3Ry
aW5nKCkuY19zdHIoKSk7Cit9CisKK1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0
cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQorewor
ICAgIHN0ZDo6ZmlsZXN5c3RlbTo6cGF0aCBmc1BhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpLmRhdGEoKTsKKyAgICBmb3IgKGF1dG8m
IGNvbXBvbmVudCA6IGNvbXBvbmVudHMpCisgICAgICAgIGZzUGF0aC5hcHBlbmQoZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGNvbXBvbmVudC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpLmRhdGEo
KSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZnNQYXRoLnU4c3RyaW5nKCkuY19zdHIo
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVzcGFjZSBX
VEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIv
U291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggOTJkNWU2NmZiZWNm
OThkMDc3OWRiZjU0ZmQxOGU3YjJjMjhlNjhiOC4uNmJiZWQxYzYzNjg4ZDgwNzI2Yjc0ODdhMWYx
MzZkOTVkYjFjNjEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVt
R2xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAg
LTEzNCwyNCArMTM0LDYgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUo
Y29uc3QgU3RyaW5nJikKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1TdHJpbmcgcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBj
b21wb25lbnQpCi17Ci0gICAgaWYgKHBhdGguZW5kc1dpdGgoR19ESVJfU0VQQVJBVE9SX1MpKQot
ICAgICAgICByZXR1cm4gcGF0aCArIGNvbXBvbmVudDsKLSAgICByZXR1cm4gcGF0aCArIEdfRElS
X1NFUEFSQVRPUl9TICsgY29tcG9uZW50OwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9u
ZW50cykKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQo
cGF0aCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKSB7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKEdfRElSX1NFUEFSQVRPUl9TKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmQoY29tcG9uZW50KTsKLSAgICB9Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0K
LQogU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKIHsKICAgICByZXR1cm4gc3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9ob21lX2RpcigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IDNiNGJlYzEyZWIwMTVjYjNmMGE3ZDE4OWFl
NDIxN2I0YWNkOTYzZjIuLjc3NzAwNGZkNzdkM2U5ZDM5OTc3YmI2MzZiYjAxMGU3NzdmODUyNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMTg2LDIyICsx
ODYsNiBAQCBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJp
bmcmIHBhdGgpCiAjZW5kaWYKIH0KIAotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQotewotICAgIGlmIChw
YXRoLmVuZHNXaXRoKCcvJykpCi0gICAgICAgIHJldHVybiBwYXRoICsgY29tcG9uZW50OwotICAg
IHJldHVybiBwYXRoICsgIi8iICsgY29tcG9uZW50OwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYg
Y29tcG9uZW50cykKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5h
cHBlbmQocGF0aCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKQotICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnLycsIGNvbXBvbmVudCk7Ci0gICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKLX0KLQogVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQogewogICAgIFZlY3RvcjxTdHJpbmc+IGVu
dHJpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggMWE0OGExOTNmNjM2
NjRlN2M5MmVhZjg5MTk1MzA3ODAwMmNkNjhlZC4uYjc1NmY2YWYyNTI2M2NlN2JkMzZmOGI5OGY0
Y2RmODMwM2E2Y2RhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1X
aW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAtMTQz
LDMwICsxNDMsNiBAQCBzdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUoY29uc3QgU3RyaW5n
JiBwYXRoKQogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAK
LVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGNvbXBvbmVudCkKLXsKLSAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFU
SCk7Ci0gICAgaWYgKHBhdGgubGVuZ3RoKCkgKyAxID4gYnVmZmVyLnNpemUoKSkKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotCi0gICAgU3RyaW5nVmlldyhwYXRoKS5nZXRDaGFyYWN0ZXJzV2l0
aFVwY29udmVydChidWZmZXIuZGF0YSgpKTsKLSAgICBidWZmZXJbcGF0aC5sZW5ndGgoKV0gPSAn
XDAnOwotCi0gICAgaWYgKCFQYXRoQXBwZW5kVyh3Y2hhckZyb20oYnVmZmVyLmRhdGEoKSksIGNv
bXBvbmVudC53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSkpCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKLQotICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKHdjaGFyRnJvbShidWZmZXIuZGF0YSgpKSkp
OwotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7Ci19Ci0KLVN0cmlu
ZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9y
PFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQotewotICAgIFN0cmluZyByZXN1bHQgPSBwYXRoLnRv
U3RyaW5nKCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKQotICAgICAg
ICByZXN1bHQgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVzdWx0LCBjb21wb25lbnQudG9T
dHJpbmcoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogI2lmICFVU0UoQ0YpCiAKIENTdHJp
bmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ODRkNjUxNGZkMGIy
MzE5NGI4YWQ5YWI3YWMyY2M3MzZkMmVhMTkwLi40MmRlMjQwMTY5YzIzNjBlOGEzZTdhNjJmYzg4
YzI5MmZiY2E2ZmY1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDUtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQb3J0IEZpbGVzeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudCgpICYgRmlsZXN5c3RlbTo6IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoKSB0byBz
dGQ6OmZpbGVzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNTU1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9G
KToKKwogMjAyMS0wNS0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFBvcnQgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKCkgJiBGaWxlc3lzdGVtOjpkaXJl
Y3RvcnlOYW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVtCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDg1NGJmNDRhNGZlMTZjNTBjNGMwZDYyMWIyM2Yy
OTYxMDYyYWY2ZDAuLjAyZWNiYmE4ZjA5NWYxZWVmNGUxMjM0ZGIwMmRmYWQwNTkyODVjNzYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC03NDQs
NCArNzQ0LDQwIEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZGlyZWN0b3J5TmFtZSkKICNlbmRp
ZgogfQogCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCkK
K3sKKyNpZiBPUyhVTklYKQorICAgIEVYUEVDVF9TVFJFUSgiL3ZhciIsIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiLyIsICJ2YXIiKS51dGY4KCkuZGF0YSgpKTsKKyAgICBF
WFBFQ1RfU1RSRVEoIi92YXIvdG1wIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KCIvdmFyLyIsICJ0bXAiKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIi92
YXIvdG1wIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCIvdmFyIiwgInRt
cCIpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiL3Zhci90bXAvZmlsZS50eHQi
LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIi92YXIvdG1wIiwgImZpbGUu
dHh0IikudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCIvdmFyLyIsIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiL3ZhciIsICIiKS51dGY4KCkuZGF0YSgpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoIi92YXIvIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KCIvdmFyLyIsICIiKS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgorI2lmIE9TKFdJTkRP
V1MpCisgICAgRVhQRUNUX1NUUkVRKCJDOlxcRm9vIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KCJDOlxcIiwgIkZvbyIpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9T
VFJFUSgiQzpcXEZvb1xcQmFyIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KCJDOlxcRm9vIiwgIkJhciIpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiQzpc
XEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dCgiQzpcXEZvb1xcQmFyIiwgIkZpbGUudHh0IikudXRmOCgpLmRhdGEoKSk7CisjZW5kaWYKK30K
KworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKQorewor
ICAgIEVYUEVDVF9TVFJFUSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkudXRmOCgpLmRhdGEoKSwgRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCks
IHsgfSkudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJmaWxlLnR4dCIpLnV0
ZjgoKS5kYXRhKCksIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcEVt
cHR5Rm9sZGVyUGF0aCgpLCB7ICJmaWxlLnR4dCIgfSkudXRmOCgpLmRhdGEoKSk7CisjaWYgT1Mo
VU5JWCkKKyAgICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1wL2ZpbGUudHh0IiwgRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiLyIsIHsgInZhciIsICJ0bXAiLCAiZmlsZS50eHQi
IH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiL3Zhci90bXAvZmlsZS50eHQi
LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKCIvdmFyIiwgeyAidG1wIiwg
ImZpbGUudHh0IiB9KS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1w
L2ZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiL3Zhci8i
LCB7ICJ0bXAiLCAiZmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJF
USgiL3Zhci90bXAvZmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnRzKCIvdmFyL3RtcCIsIHsgImZpbGUudHh0IiB9KS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgor
I2lmIE9TKFdJTkRPV1MpCisgICAgRVhQRUNUX1NUUkVRKCJDOlxcRm9vXFxCYXJcXEZpbGUudHh0
IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiQzpcXCIsIHsgIkZvbyIs
ICJCYXIiLCAiRmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgi
QzpcXEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudHMoIkM6XFxGb28iLCB7ICJCYXIiLCAiRmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoIkM6XFxGb29cXCIsIHsgIkJhciIsICJGaWxlLnR4dCIg
fSkudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJDOlxcRm9vXFxCYXJcXEZpbGUu
dHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiQzpcXEZvb1xcQmFy
IiwgeyAiRmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiQzpc
XEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dHMoIkM6XFxGb29cXEJhclxcIiwgeyAiRmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOworI2Vu
ZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428072</attachid>
            <date>2021-05-07 19:14:33 -0700</date>
            <delta_ts>2021-05-08 10:30:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225550-20210507191432.patch</filename>
            <type>text/plain</type>
            <size>16284</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
M2ZmODhlZTRiZjkyNmVhMjIyODMxNzA3NzA4Y2VjNTRhNmYyNjdhLi4wNjM1NGI5OWU4YTI0MGQy
MzE1MDcyN2UyOGYxMjMxNGM0YTgyZjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0wNS0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCkgJiBG
aWxlc3lzdGVtOjogcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygpIHRvIHN0ZDo6ZmlsZXN5c3Rl
bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTUw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVpbGQg
Zml4LgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6
CisKIDIwMjEtMDUtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBQb3J0IEZpbGVzeXN0ZW06OmZpbGVNZXRhZGF0YSgpICYgRmlsZXN5c3RlbTo6Z2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWUoKSB0byBzdGQ6OmZpbGVzeXN0ZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMWY5YWY3M2Y1YTdhMmM0
NTYxZDFhM2RmYjI4ZjYyZTBjMGQ0MjUyMi4uN2NmMDcyYTE0MmM5YmM5ZGE3NmJkMzNlNTE4YzA4
OGFjMjg5ODcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0wNS0wNyAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KCkgJiBGaWxlc3lzdGVtOjogcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
cygpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI1NTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUG9ydCBGaWxlc3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
KSAmIEZpbGVzeXN0ZW06OiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKCkgdG8gc3RkOjpmaWxl
c3lzdGVtCisgICAgICAgIGFuZCBnZXQgcmlkIG9mIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVu
dGF0aW9ucy4KKworICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6
RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCk6CisgICAgICAgIChXVEY6
OkZpbGVTeXN0ZW1JbXBsOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKToKKyAgICAgICAgKiB3
dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHA6CisgICAgICAgICogd3RmL3Bvc2l4L0ZpbGVTeXN0
ZW1QT1NJWC5jcHA6CisgICAgICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKwogMjAy
MS0wNS0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBvcnQg
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKCkgJiBGaWxlc3lzdGVtOjpkaXJlY3RvcnlOYW1l
KCkgdG8gc3RkOjpmaWxlc3lzdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcKaW5kZXggM2E1ZGE0
M2M2M2RhNWRmYjU3NDFiYjQwNmZlNGU1OWIxYThiNWMzNC4uZmQ2YmMyY2Q4MmM4ZjJlOGJkNWFi
MjZjMjFhMjE0YjUxNjQ1M2QxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Nv
bmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZwpAQCAtMjcsNyAr
MjcsNyBAQCBERUZJTkVTX01PRFVMRSA9IFlFUzsKIE1PRFVMRU1BUF9GSUxFID0gJChTUkNST09U
KS9KYXZhU2NyaXB0Q29yZS5tb2R1bGVtYXA7CiAKIC8vIFByZXZlbnQgQysrIHN0YW5kYXJkIGxp
YnJhcnkgb3BlcmF0b3IgbmV3LCBkZWxldGUgYW5kIHRoZWlyIHJlbGF0ZWQgZXhjZXB0aW9uIHR5
cGVzIGZyb20gYmVpbmcgZXhwb3J0ZWQgYXMgd2VhayBzeW1ib2xzLgotT1RIRVJfTERGTEFHU19I
SURFX1NZTUJPTFMgPSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRJU3Q5YmFkX2FsbG9jIC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5
bWJvbCxfX1pUU1N0OWJhZF9hbGxvYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRTU3Q5ZXhj
ZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aZGxQdlNfIC1XbCwtdW5leHBvcnRlZF9z
eW1ib2wsX19abndtUHYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThmdW5jdGlv
bklGdnZFRWNsRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2
dkVFQzFFT1MyXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2
RUVDMkVPUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTktTdDNfXzE4ZnVuY3Rpb25JRnZS
TjNKU0MxN0J5dGVjb2RlR2VuZXJhdG9yRVBOUzFfMTBSZWdpc3RlcklERUVFY2xFUzNfUzVfIC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNv
ZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVEMUV2IC1XbCwtdW5leHBvcnRlZF9zeW1i
b2wsX19aTlN0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8x
MFJlZ2lzdGVySURFRUVEMkV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5j
dGlvbklGdnZFRUQxRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9u
SUZ2dkVFRDJFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRWTlN0M19fMTE3YmFkX2Z1bmN0
aW9uX2NhbGxFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lz
dGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJUEtjUzRfY0xiMUVFMTFfX3JhbmdlX2VuZEVT
NF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9f
aXNfcGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxM19fcmFuZ2VfYmVnaW5FUzRfIC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZU
SWNFMTRfX2FwcGVuZF9yYW5nZUlQS2NFRU5TXzllbmFibGVfaWZJWHNyMjdfX2lzX2NwcDE3X2Zv
cndhcmRfaXRlcmF0b3JJVF9FRTV2YWx1ZUV2RTR0eXBlRVJOU18xMmJhc2ljX3N0cmluZ0ljTlNf
MTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUzhfUzhfIC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVu
ZF9zb3VyY2VJUEtjRUV2Uk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5T
XzlhbGxvY2F0b3JJY0VFRUVSS1RfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRf
X2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTRfX2FwcGVuZF9yYW5nZUlQS2NFRU5TXzllbmFi
bGVfaWZJWHNyMjFfX2lzX2ZvcndhcmRfaXRlcmF0b3JJVF9FRTV2YWx1ZUV2RTR0eXBlRVJOU18x
MmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUzhf
UzhfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTktTdDNfXzE0X19mczEwZmlsZXN5c3RlbTE4
ZGlyZWN0b3J5X2l0ZXJhdG9yZGVFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0
X19mczEwZmlsZXN5c3RlbTE4ZGlyZWN0b3J5X2l0ZXJhdG9ycHBFdiAtV2wsLXVuZXhwb3J0ZWRf
c3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2Fy
cmF5SUExMF9jUGNjTGIxRUUxMV9fcmFuZ2VfZW5kRVBLYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
LF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SUEx
MF9jUGNjTGIxRUUxM19fcmFuZ2VfYmVnaW5FUEtjIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
TlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtNHBhdGhkVkVSS1MyXyAtV2wsLXVuZXhwb3J0ZWRfc3lt
Ym9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbThfUGF0aENWVEljRTE1X19hcHBlbmRfc291
cmNlSUExMF9jRUV2Uk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlh
bGxvY2F0b3JJY0VFRUVSS1RfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2Zz
MTBmaWxlc3lzdGVtMjRfX3Rocm93X2ZpbGVzeXN0ZW1fZXJyb3JJSlJQS2NSS05TMV80cGF0aEVS
S05TXzEwZXJyb3JfY29kZUVFRUV2RHBPVF87CitPVEhFUl9MREZMQUdTX0hJREVfU1lNQk9MUyA9
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVElTdDliYWRfYWxsb2MgLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCxfX1pUSVN0OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRTU3Q5
YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFNTdDlleGNlcHRpb24gLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCxfX1pkbFB2U18gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pud21Q
diAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2dkVFY2xFdiAt
V2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVDMUVPUzJfIC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdnZFRUMyRU9TMl8gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNv
ZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVjbEVTM19TNV8gLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvckVQ
TlMxXzEwUmVnaXN0ZXJJREVFRUQxRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18x
OGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJREVF
RUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVFRDFF
diAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVEMkV2IC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wsX19aVFZOU3QzX18xMTdiYWRfZnVuY3Rpb25fY2FsbEUgLVds
LC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0
aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxMV9fcmFuZ2VfZW5kRVM0XyAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9j
aGFyX2FycmF5SVBLY1M0X2NMYjFFRTEzX19yYW5nZV9iZWdpbkVTNF8gLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5k
X3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyN19faXNfY3BwMTdfZm9yd2FyZF9pdGVyYXRv
cklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRz
SWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pO
U3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNV9fYXBwZW5kX3NvdXJjZUlQS2NF
RXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvcklj
RUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0
ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyMV9f
aXNfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5n
SWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3RvcnlfaXRl
cmF0b3JkZUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lz
dGVtMThkaXJlY3RvcnlfaXRlcmF0b3JwcEV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0
M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NM
YjFFRTExX19yYW5nZV9lbmRFUEtjIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRf
X2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFFRTEz
X19yYW5nZV9iZWdpbkVQS2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMx
MGZpbGVzeXN0ZW00cGF0aGRWRVJLUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19f
MTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VJQTEwX2NFRXZS
TlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVF
RVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0y
NF9fdGhyb3dfZmlsZXN5c3RlbV9lcnJvcklKUlBLY1JLTlMxXzRwYXRoRVJLTlNfMTBlcnJvcl9j
b2RlRUVFRXZEcE9UXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmls
ZXN5c3RlbTE0X19pc19zZXBhcmF0b3JJY0VFTlNfOWVuYWJsZV9pZklYc3IxOF9fY2FuX2NvbnZl
cnRfY2hhcklUX0VFNXZhbHVlRWJFNHR5cGVFUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
TlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJUEtjUzRf
Y0xiMUVFMTVfX2ZpcnN0X29yX251bGxFUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0
M19fMTRfX2ZzMTBmaWxlc3lzdGVtNHBhdGgyMF9fc291cmNlX2lzX2Fic29sdXRlSWNFRWJUXyAt
V2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTRwYXRoNmFw
cGVuZElQS2NFRU5TXzllbmFibGVfaWZJWHNyMTNfX2lzX3BhdGhhYmxlSVRfRUU1dmFsdWVFUlMy
X0U0dHlwZUVSS1M3XzsKIAogT1RIRVJfTERGTEFHU19CQVNFID0gJChPVEhFUl9MREZMQUdTX0hJ
REVfU1lNQk9MUykgLWZvcmNlX2xvYWQgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9saWJXVEYuYSI7CiBPVEhFUl9MREZMQUdTW3Nkaz1lbWJlZGRl
ZCpdID0gJChpbmhlcml0ZWQpICQoT1RIRVJfTERGTEFHU19CQVNFKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5j
cHAKaW5kZXggZTI3NmFmM2VlZmQ5MDg2NTNjMDBiZTkwYmU4NWE1YTI5MWQ5NWY1ZC4uMWMyYmI4
NDVjMTNjY2RiZmRlN2YwYzk0NTJlNDM1ZmQzZjA3ZDhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAK
QEAgLTczMyw1ICs3MzMsMjAgQEAgU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBw
YXRoKQogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGZzUGF0aC5wYXJlbnRfcGF0aCgpLnU4
c3RyaW5nKCkuY19zdHIoKSk7CiB9CiAKK1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKK3sKKyAgICBzdGQ6
OmZpbGVzeXN0ZW06OnBhdGggZnNQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
LmRhdGEoKTsKKyAgICBmc1BhdGguYXBwZW5kKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb21w
b25lbnQpLmRhdGEoKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZnNQYXRoLnU4c3Ry
aW5nKCkuY19zdHIoKSk7Cit9CisKK1N0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0
cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQorewor
ICAgIHN0ZDo6ZmlsZXN5c3RlbTo6cGF0aCBmc1BhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpLmRhdGEoKTsKKyAgICBmb3IgKGF1dG8m
IGNvbXBvbmVudCA6IGNvbXBvbmVudHMpCisgICAgICAgIGZzUGF0aC5hcHBlbmQoZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGNvbXBvbmVudC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpLmRhdGEo
KSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZnNQYXRoLnU4c3RyaW5nKCkuY19zdHIo
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVzcGFjZSBX
VEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIv
U291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggOTJkNWU2NmZiZWNm
OThkMDc3OWRiZjU0ZmQxOGU3YjJjMjhlNjhiOC4uMGNiM2UxMjFjMGUyNmNjYTNjOWVmNWU3OTQy
MTFkZjI0MGFhNGEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVt
R2xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAg
LTczLDkgKzczLDEyIEBAIFN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IGNoYXIqIHJlcHJlc2VudGF0aW9uKQogCiBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgaWYgKHBhdGguaXNFbXB0eSgpKQor
ICAgIGlmIChwYXRoLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4geyB9OwogCisgICAgaWYgKHBh
dGguaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQ1N0cmluZygiIik7CisKICAgICBDU3RyaW5n
IHV0ZjggPSBwYXRoLnV0ZjgoKTsKIAogICAgIC8vIElmIHRoZSByZXR1cm5lZCBjaGFyc2V0IGlz
IFVURi04IChpLmUuIGdfZ2V0X2ZpbGVuYW1lX2NoYXJzZXRzKCkgcmV0dXJucyB0cnVlKSwKQEAg
LTEzNCwyNCArMTM3LDYgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUo
Y29uc3QgU3RyaW5nJikKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1TdHJpbmcgcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBj
b21wb25lbnQpCi17Ci0gICAgaWYgKHBhdGguZW5kc1dpdGgoR19ESVJfU0VQQVJBVE9SX1MpKQot
ICAgICAgICByZXR1cm4gcGF0aCArIGNvbXBvbmVudDsKLSAgICByZXR1cm4gcGF0aCArIEdfRElS
X1NFUEFSQVRPUl9TICsgY29tcG9uZW50OwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9u
ZW50cykKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQo
cGF0aCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKSB7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKEdfRElSX1NFUEFSQVRPUl9TKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmQoY29tcG9uZW50KTsKLSAgICB9Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0K
LQogU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKIHsKICAgICByZXR1cm4gc3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9ob21lX2RpcigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IDNiNGJlYzEyZWIwMTVjYjNmMGE3ZDE4OWFl
NDIxN2I0YWNkOTYzZjIuLjc3NzAwNGZkNzdkM2U5ZDM5OTc3YmI2MzZiYjAxMGU3NzdmODUyNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMTg2LDIyICsx
ODYsNiBAQCBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJp
bmcmIHBhdGgpCiAjZW5kaWYKIH0KIAotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQotewotICAgIGlmIChw
YXRoLmVuZHNXaXRoKCcvJykpCi0gICAgICAgIHJldHVybiBwYXRoICsgY29tcG9uZW50OwotICAg
IHJldHVybiBwYXRoICsgIi8iICsgY29tcG9uZW50OwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYg
Y29tcG9uZW50cykKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5h
cHBlbmQocGF0aCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKQotICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnLycsIGNvbXBvbmVudCk7Ci0gICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKLX0KLQogVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQogewogICAgIFZlY3RvcjxTdHJpbmc+IGVu
dHJpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggMWE0OGExOTNmNjM2
NjRlN2M5MmVhZjg5MTk1MzA3ODAwMmNkNjhlZC4uYjc1NmY2YWYyNTI2M2NlN2JkMzZmOGI5OGY0
Y2RmODMwM2E2Y2RhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1X
aW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAtMTQz
LDMwICsxNDMsNiBAQCBzdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUoY29uc3QgU3RyaW5n
JiBwYXRoKQogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAK
LVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGNvbXBvbmVudCkKLXsKLSAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFU
SCk7Ci0gICAgaWYgKHBhdGgubGVuZ3RoKCkgKyAxID4gYnVmZmVyLnNpemUoKSkKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotCi0gICAgU3RyaW5nVmlldyhwYXRoKS5nZXRDaGFyYWN0ZXJzV2l0
aFVwY29udmVydChidWZmZXIuZGF0YSgpKTsKLSAgICBidWZmZXJbcGF0aC5sZW5ndGgoKV0gPSAn
XDAnOwotCi0gICAgaWYgKCFQYXRoQXBwZW5kVyh3Y2hhckZyb20oYnVmZmVyLmRhdGEoKSksIGNv
bXBvbmVudC53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSkpCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKLQotICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKHdjaGFyRnJvbShidWZmZXIuZGF0YSgpKSkp
OwotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7Ci19Ci0KLVN0cmlu
ZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9y
PFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQotewotICAgIFN0cmluZyByZXN1bHQgPSBwYXRoLnRv
U3RyaW5nKCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKQotICAgICAg
ICByZXN1bHQgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVzdWx0LCBjb21wb25lbnQudG9T
dHJpbmcoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogI2lmICFVU0UoQ0YpCiAKIENTdHJp
bmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ODRkNjUxNGZkMGIy
MzE5NGI4YWQ5YWI3YWMyY2M3MzZkMmVhMTkwLi40MmRlMjQwMTY5YzIzNjBlOGEzZTdhNjJmYzg4
YzI5MmZiY2E2ZmY1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDUtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQb3J0IEZpbGVzeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudCgpICYgRmlsZXN5c3RlbTo6IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoKSB0byBz
dGQ6OmZpbGVzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNTU1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9G
KToKKwogMjAyMS0wNS0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFBvcnQgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKCkgJiBGaWxlc3lzdGVtOjpkaXJl
Y3RvcnlOYW1lKCkgdG8gc3RkOjpmaWxlc3lzdGVtCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDg1NGJmNDRhNGZlMTZjNTBjNGMwZDYyMWIyM2Yy
OTYxMDYyYWY2ZDAuLjAyZWNiYmE4ZjA5NWYxZWVmNGUxMjM0ZGIwMmRmYWQwNTkyODVjNzYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC03NDQs
NCArNzQ0LDQwIEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZGlyZWN0b3J5TmFtZSkKICNlbmRp
ZgogfQogCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCkK
K3sKKyNpZiBPUyhVTklYKQorICAgIEVYUEVDVF9TVFJFUSgiL3ZhciIsIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiLyIsICJ2YXIiKS51dGY4KCkuZGF0YSgpKTsKKyAgICBF
WFBFQ1RfU1RSRVEoIi92YXIvdG1wIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KCIvdmFyLyIsICJ0bXAiKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIi92
YXIvdG1wIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCIvdmFyIiwgInRt
cCIpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiL3Zhci90bXAvZmlsZS50eHQi
LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIi92YXIvdG1wIiwgImZpbGUu
dHh0IikudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCIvdmFyLyIsIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiL3ZhciIsICIiKS51dGY4KCkuZGF0YSgpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoIi92YXIvIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KCIvdmFyLyIsICIiKS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgorI2lmIE9TKFdJTkRP
V1MpCisgICAgRVhQRUNUX1NUUkVRKCJDOlxcRm9vIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KCJDOlxcIiwgIkZvbyIpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9T
VFJFUSgiQzpcXEZvb1xcQmFyIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KCJDOlxcRm9vIiwgIkJhciIpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiQzpc
XEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dCgiQzpcXEZvb1xcQmFyIiwgIkZpbGUudHh0IikudXRmOCgpLmRhdGEoKSk7CisjZW5kaWYKK30K
KworVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKQorewor
ICAgIEVYUEVDVF9TVFJFUSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkudXRmOCgpLmRhdGEoKSwgRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCks
IHsgfSkudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJmaWxlLnR4dCIpLnV0
ZjgoKS5kYXRhKCksIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcEVt
cHR5Rm9sZGVyUGF0aCgpLCB7ICJmaWxlLnR4dCIgfSkudXRmOCgpLmRhdGEoKSk7CisjaWYgT1Mo
VU5JWCkKKyAgICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1wL2ZpbGUudHh0IiwgRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiLyIsIHsgInZhciIsICJ0bXAiLCAiZmlsZS50eHQi
IH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiL3Zhci90bXAvZmlsZS50eHQi
LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKCIvdmFyIiwgeyAidG1wIiwg
ImZpbGUudHh0IiB9KS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1w
L2ZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiL3Zhci8i
LCB7ICJ0bXAiLCAiZmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJF
USgiL3Zhci90bXAvZmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnRzKCIvdmFyL3RtcCIsIHsgImZpbGUudHh0IiB9KS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgor
I2lmIE9TKFdJTkRPV1MpCisgICAgRVhQRUNUX1NUUkVRKCJDOlxcRm9vXFxCYXJcXEZpbGUudHh0
IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiQzpcXCIsIHsgIkZvbyIs
ICJCYXIiLCAiRmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgi
QzpcXEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudHMoIkM6XFxGb28iLCB7ICJCYXIiLCAiRmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoIkM6XFxGb29cXCIsIHsgIkJhciIsICJGaWxlLnR4dCIg
fSkudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJDOlxcRm9vXFxCYXJcXEZpbGUu
dHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiQzpcXEZvb1xcQmFy
IiwgeyAiRmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiQzpc
XEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dHMoIkM6XFxGb29cXEJhclxcIiwgeyAiRmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOworI2Vu
ZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428088</attachid>
            <date>2021-05-08 10:30:58 -0700</date>
            <delta_ts>2021-05-08 12:14:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225550-20210508103057.patch</filename>
            <type>text/plain</type>
            <size>22431</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YTBlYTZmN2IwZmViMjE5Yjc3MTY0MWUwZWNmZjZmNWUxYjRhYzI2Li4yZDE1NjlkZTZmNjdmY2Q5
MjY5NWVlOWIzMWJkYTAxZTNmYWRhYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0wNS0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCkgJiBG
aWxlc3lzdGVtOjogcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygpIHRvIHN0ZDo6ZmlsZXN5c3Rl
bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTUw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQnVpbGQgZml4
LgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisK
IDIwMjEtMDUtMDggIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAg
ICAgICAgIEludHJvZHVjZSBKU09iamVjdDo6Z2V0SWZQcm9wZXJ0eUV4aXN0cyBoZWxwZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggMjg0YmNlNmFkYzMxZTlkODc1YjhlYjhiYzNjNTQ0ZTk5MzY3ODA4Ni4uZmMzM2MzOTcxOTYw
N2E2YWE5OTAyODNlODdmYWRlZjRmY2YyZTI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0w
NS0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBvcnQgRmls
ZXN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCkgJiBGaWxlc3lzdGVtOjogcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50cygpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTUwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUG9ydCBGaWxlc3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoKSAmIEZpbGVzeXN0ZW06OiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRz
KCkgdG8gc3RkOjpmaWxlc3lzdGVtCisgICAgICAgIGFuZCBnZXQgcmlkIG9mIHBsYXRmb3JtLXNw
ZWNpZmljIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCk6
CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRz
KToKKyAgICAgICAgKiB3dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHA6CisgICAgICAgICogd3Rm
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgICogd3RmL3dpbi9GaWxlU3lzdGVt
V2luLmNwcDoKKwogMjAyMS0wNS0wOCAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHTElCXSBSRUdSRVNTSU9OKHIyNzcxNTgpIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMveGhyL0Zvcm1EYXRhLWFwcGVuZC5odG1sIGlzIGNyYXNoaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlw
dENvcmUueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2
YVNjcmlwdENvcmUueGNjb25maWcKaW5kZXggM2E1ZGE0M2M2M2RhNWRmYjU3NDFiYjQwNmZlNGU1
OWIxYThiNWMzNC4uOWNlODgxNGMwZWRmYWM2ZmQ1MmIxZmVkZDVlYWFmNDZiZDBlNzMyMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRD
b3JlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9K
YXZhU2NyaXB0Q29yZS54Y2NvbmZpZwpAQCAtMjcsNyArMjcsNyBAQCBERUZJTkVTX01PRFVMRSA9
IFlFUzsKIE1PRFVMRU1BUF9GSUxFID0gJChTUkNST09UKS9KYXZhU2NyaXB0Q29yZS5tb2R1bGVt
YXA7CiAKIC8vIFByZXZlbnQgQysrIHN0YW5kYXJkIGxpYnJhcnkgb3BlcmF0b3IgbmV3LCBkZWxl
dGUgYW5kIHRoZWlyIHJlbGF0ZWQgZXhjZXB0aW9uIHR5cGVzIGZyb20gYmVpbmcgZXhwb3J0ZWQg
YXMgd2VhayBzeW1ib2xzLgotT1RIRVJfTERGTEFHU19ISURFX1NZTUJPTFMgPSAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sLF9fWlRJU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
VElTdDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pUU1N0OWJhZF9hbGxvYyAt
V2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRTU3Q5ZXhjZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9z
eW1ib2wsX19aZGxQdlNfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19abndtUHYgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThmdW5jdGlvbklGdnZFRWNsRXYgLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVFQzFFT1MyXyAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVDMkVPUzJfIC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wsX19aTktTdDNfXzE4ZnVuY3Rpb25JRnZSTjNKU0MxN0J5dGVjb2RlR2VuZXJhdG9y
RVBOUzFfMTBSZWdpc3RlcklERUVFY2xFUzNfUzVfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
TlN0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lz
dGVySURFRUVEMUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklG
dlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVEMkV2IC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdnZFRUQxRXYgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVFRDJFdiAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sLF9fWlRWTlN0M19fMTE3YmFkX2Z1bmN0aW9uX2NhbGxFIC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJf
YXJyYXlJUEtjUzRfY0xiMUVFMTFfX3JhbmdlX2VuZEVTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJv
bCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0aGFibGVfY2hhcl9hcnJheUlQ
S2NTNF9jTGIxRUUxM19fcmFuZ2VfYmVnaW5FUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
TlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTRfX2FwcGVuZF9yYW5nZUlQS2NF
RU5TXzllbmFibGVfaWZJWHNyMjdfX2lzX2NwcDE3X2ZvcndhcmRfaXRlcmF0b3JJVF9FRTV2YWx1
ZUV2RTR0eXBlRVJOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxs
b2NhdG9ySWNFRUVFUzhfUzhfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2Zz
MTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VJUEtjRUV2Uk5TXzEyYmFz
aWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVSS1RfIC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZU
SWNFMTRfX2FwcGVuZF9yYW5nZUlQS2NFRU5TXzllbmFibGVfaWZJWHNyMjFfX2lzX2ZvcndhcmRf
aXRlcmF0b3JJVF9FRTV2YWx1ZUV2RTR0eXBlRVJOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFy
X3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUzhfUzhfIC1XbCwtdW5leHBvcnRlZF9zeW1i
b2wsX19aTktTdDNfXzE0X19mczEwZmlsZXN5c3RlbTE4ZGlyZWN0b3J5X2l0ZXJhdG9yZGVFdiAt
V2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTE4ZGlyZWN0
b3J5X2l0ZXJhdG9ycHBFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEw
ZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SUExMF9jUGNjTGIxRUUxMV9fcmFu
Z2VfZW5kRVBLYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5
c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SUExMF9jUGNjTGIxRUUxM19fcmFuZ2VfYmVn
aW5FUEtjIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVt
NHBhdGhkVkVSS1MyXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmls
ZXN5c3RlbThfUGF0aENWVEljRTE1X19hcHBlbmRfc291cmNlSUExMF9jRUV2Uk5TXzEyYmFzaWNf
c3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVSS1RfIC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX3Rocm93X2Zp
bGVzeXN0ZW1fZXJyb3JJSlJQS2NSS05TMV80cGF0aEVSS05TXzEwZXJyb3JfY29kZUVFRUV2RHBP
VF87CitPVEhFUl9MREZMQUdTX0hJREVfU1lNQk9MUyA9IC1XbCwtdW5leHBvcnRlZF9zeW1ib2ws
X19aVElTdDliYWRfYWxsb2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pUSVN0OWV4Y2VwdGlv
biAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRTU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wsX19aVFNTdDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pkbFB2
U18gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pud21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
LF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2dkVFY2xFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9f
Wk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVDMUVPUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
TlN0M19fMThmdW5jdGlvbklGdnZFRUMyRU9TMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pO
S1N0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lz
dGVySURFRUVjbEVTM19TNV8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0
aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQxRXYg
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRl
Y29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5
bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVFRDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
LF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVEMkV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
VFZOU3QzX18xMTdiYWRfZnVuY3Rpb25fY2FsbEUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pO
U3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9j
TGIxRUUxMV9fcmFuZ2VfZW5kRVM0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0
X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SVBLY1M0X2NMYjFFRTEz
X19yYW5nZV9iZWdpbkVTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMx
MGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9p
ZklYc3IyN19faXNfY3BwMTdfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5T
XzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVT
OF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04
X1BhdGhDVlRJY0UxNV9fYXBwZW5kX3NvdXJjZUlQS2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05T
XzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF8gLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5k
X3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyMV9faXNfZm9yd2FyZF9pdGVyYXRvcklUX0VF
NXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5T
XzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19f
MTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JkZUV2IC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3Jw
cEV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRf
X2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFFRTExX19yYW5nZV9lbmRFUEtjIC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3Bh
dGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFFRTEzX19yYW5nZV9iZWdpbkVQS2MgLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW00cGF0aGRWRVJLUzJf
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRo
Q1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VJQTEwX2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzEx
Y2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5
bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9fdGhyb3dfZmlsZXN5c3RlbV9lcnJv
cklKUlBLY1JLTlMxXzRwYXRoRVJLTlNfMTBlcnJvcl9jb2RlRUVFRXZEcE9UXyAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTE0X19pc19zZXBhcmF0b3JJ
Y0VFTlNfOWVuYWJsZV9pZklYc3IxOF9fY2FuX2NvbnZlcnRfY2hhcklUX0VFNXZhbHVlRWJFNHR5
cGVFUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVt
MjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJUEtjUzRfY0xiMUVFMTVfX2ZpcnN0X29yX251bGxF
UzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtNHBh
dGgyMF9fc291cmNlX2lzX2Fic29sdXRlSWNFRWJUXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9f
Wk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTRwYXRoNmFwcGVuZElQS2NFRU5TXzllbmFibGVfaWZJ
WHNyMTNfX2lzX3BhdGhhYmxlSVRfRUU1dmFsdWVFUlMyX0U0dHlwZUVSS1M3XyAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTZ1OHBhdGhJUEtjRUVOU185
ZW5hYmxlX2lmSVhzcjEzX19pc19wYXRoYWJsZUlUX0VFNXZhbHVlRU5TMV80cGF0aEVFNHR5cGVF
UktTNl87CiAKIE9USEVSX0xERkxBR1NfQkFTRSA9ICQoT1RIRVJfTERGTEFHU19ISURFX1NZTUJP
TFMpIC1mb3JjZV9sb2FkICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvbGliV1RGLmEiOwogT1RIRVJfTERGTEFHU1tzZGs9ZW1iZWRkZWQqXSA9ICQo
aW5oZXJpdGVkKSAkKE9USEVSX0xERkxBR1NfQkFTRSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCmluZGV4
IDE1YTEwNzQ1NzVmNzFjZmRkNGQ0OThlZGZiYTVlMTA3ZDExOWZmNDAuLjFiYjQwMTZhNjQ3MGZj
MGE1NjljYTRjN2U1ODBhZmZiNzlmNDFjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC01MCw2
ICs1MCwxNiBAQCBuYW1lc3BhY2UgV1RGIHsKIAogbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsIHsK
IAorc3RhdGljIHN0ZDo6ZmlsZXN5c3RlbTo6cGF0aCB0b1N0ZEZpbGVTeXN0ZW1QYXRoKFN0cmlu
Z1ZpZXcgcGF0aCkKK3sKKyAgICByZXR1cm4gc3RkOjpmaWxlc3lzdGVtOjp1OHBhdGgocGF0aC51
dGY4KCkuZGF0YSgpKTsKK30KKworc3RhdGljIFN0cmluZyBmcm9tU3RkRmlsZVN5c3RlbVBhdGgo
Y29uc3Qgc3RkOjpmaWxlc3lzdGVtOjpwYXRoJiBwYXRoKQoreworICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KHBhdGgudThzdHJpbmcoKS5jX3N0cigpKTsKK30KKwogLy8gVGhlIGZvbGxvd2lu
ZyBsb3dlci1BU0NJSSBjaGFyYWN0ZXJzIG5lZWQgZXNjYXBpbmcgdG8gYmUgdXNlZCBpbiBhIGZp
bGVuYW1lCiAvLyBhY3Jvc3MgYWxsIHN5c3RlbXMsIGluY2x1ZGluZyBXaW5kb3dzOgogLy8gICAg
IC0gVW5wcmludGFibGUgQVNDSUkgKDAwLTFGKQpAQCAtNTI1LDEzICs1MzUsMTMgQEAgYm9vbCBm
aWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7
CiAgICAgLy8gZXhpc3RzKCkgcmV0dXJucyBmYWxzZSBvbiBlcnJvciBzbyBubyBuZWVkIHRvIGNo
ZWNrIGVjLgotICAgIHJldHVybiBzdGQ6OmZpbGVzeXN0ZW06OmV4aXN0cyhmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBlYyk7CisgICAgcmV0dXJuIHN0ZDo6ZmlsZXN5c3Rl
bTo6ZXhpc3RzKHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0aCksIGVjKTsKIH0KIAogYm9vbCBkZWxl
dGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7Ci0g
ICAgc3RkOjpmaWxlc3lzdGVtOjpwYXRoIGZzUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKS5kYXRhKCk7CisgICAgYXV0byBmc1BhdGggPSB0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBh
dGgpOwogCiAgICAgYXV0byBmaWxlU3RhdHVzID0gc3RkOjpmaWxlc3lzdGVtOjpzeW1saW5rX3N0
YXR1cyhmc1BhdGgsIGVjKTsKICAgICBpZiAoZWMgfHwgZmlsZVN0YXR1cy50eXBlKCkgPT0gc3Rk
OjpmaWxlc3lzdGVtOjpmaWxlX3R5cGU6OmRpcmVjdG9yeSkKQEAgLTU0NCw3ICs1NTQsNyBAQCBi
b29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogYm9vbCBkZWxldGVFbXB0eURpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgc3RkOjplcnJvcl9jb2RlIGVjOwotICAg
IHN0ZDo6ZmlsZXN5c3RlbTo6cGF0aCBmc1BhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGF0aCkuZGF0YSgpOworICAgIGF1dG8gZnNQYXRoID0gdG9TdGRGaWxlU3lzdGVtUGF0aChwYXRo
KTsKIAogICAgIGF1dG8gZmlsZVN0YXR1cyA9IHN0ZDo6ZmlsZXN5c3RlbTo6c3ltbGlua19zdGF0
dXMoZnNQYXRoLCBlYyk7CiAgICAgaWYgKGVjIHx8IGZpbGVTdGF0dXMudHlwZSgpICE9IHN0ZDo6
ZmlsZXN5c3RlbTo6ZmlsZV90eXBlOjpkaXJlY3RvcnkpCkBAIC01NzAsOCArNTgwLDggQEAgYm9v
bCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiAKIGJvb2wgbW92ZUZp
bGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCiB7Ci0gICAg
c3RkOjpmaWxlc3lzdGVtOjpwYXRoIGZzT2xkUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihvbGRQYXRoKS5kYXRhKCk7Ci0gICAgc3RkOjpmaWxlc3lzdGVtOjpwYXRoIGZzTmV3UGF0aCA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihuZXdQYXRoKS5kYXRhKCk7CisgICAgYXV0byBmc09s
ZFBhdGggPSB0b1N0ZEZpbGVTeXN0ZW1QYXRoKG9sZFBhdGgpOworICAgIGF1dG8gZnNOZXdQYXRo
ID0gdG9TdGRGaWxlU3lzdGVtUGF0aChuZXdQYXRoKTsKIAogICAgIHN0ZDo6ZXJyb3JfY29kZSBl
YzsKICAgICBzdGQ6OmZpbGVzeXN0ZW06OnJlbmFtZShmc09sZFBhdGgsIGZzTmV3UGF0aCwgZWMp
OwpAQCAtNTg5LDcgKzU5OSw3IEBAIGJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRo
LCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCiBib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYg
cGF0aCwgbG9uZyBsb25nJiByZXN1bHQpCiB7CiAgICAgc3RkOjplcnJvcl9jb2RlIGVjOwotICAg
IGF1dG8gc2l6ZSA9IHN0ZDo6ZmlsZXN5c3RlbTo6ZmlsZV9zaXplKGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKS5kYXRhKCksIGVjKTsKKyAgICBhdXRvIHNpemUgPSBzdGQ6OmZpbGVzeXN0
ZW06OmZpbGVfc2l6ZSh0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBhdGgpLCBlYyk7CiAgICAgaWYgKGVj
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0ID0gc2l6ZTsKQEAgLTYwMSwyMyAr
NjExLDIzIEBAIGJvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxk
Rm9sbG93U3ltYm9saWNMaW5rcyBzaG91bGRGb2xsb3dTCiAgICAgc3RkOjplcnJvcl9jb2RlIGVj
OwogICAgIHN0ZDo6ZmlsZXN5c3RlbTo6ZmlsZV9zdGF0dXMgZmlsZVN0YXR1czsKICAgICBpZiAo
c2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyA9PSBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZ
ZXMpCi0gICAgICAgIGZpbGVTdGF0dXMgPSBzdGQ6OmZpbGVzeXN0ZW06OnN0YXR1cyhmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBlYyk7CisgICAgICAgIGZpbGVTdGF0dXMg
PSBzdGQ6OmZpbGVzeXN0ZW06OnN0YXR1cyh0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBhdGgpLCBlYyk7
CiAgICAgZWxzZQotICAgICAgICBmaWxlU3RhdHVzID0gc3RkOjpmaWxlc3lzdGVtOjpzeW1saW5r
X3N0YXR1cyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBlYyk7CisgICAg
ICAgIGZpbGVTdGF0dXMgPSBzdGQ6OmZpbGVzeXN0ZW06OnN5bWxpbmtfc3RhdHVzKHRvU3RkRmls
ZVN5c3RlbVBhdGgocGF0aCksIGVjKTsKICAgICByZXR1cm4gZmlsZVN0YXR1cy50eXBlKCkgPT0g
c3RkOjpmaWxlc3lzdGVtOjpmaWxlX3R5cGU6OmRpcmVjdG9yeTsKIH0KIAogYm9vbCBtYWtlQWxs
RGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHN0ZDo6ZXJyb3JfY29kZSBl
YzsKLSAgICBzdGQ6OmZpbGVzeXN0ZW06OmNyZWF0ZV9kaXJlY3RvcmllcyhmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBlYyk7CisgICAgc3RkOjpmaWxlc3lzdGVtOjpjcmVh
dGVfZGlyZWN0b3JpZXModG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpOwogICAgIHJldHVy
biAhZWM7CiB9CiAKIGJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwg
dWludDY0X3QmIGZyZWVTcGFjZSkKIHsKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7Ci0gICAgYXV0
byBzcGFjZUluZm8gPSBzdGQ6OmZpbGVzeXN0ZW06OnNwYWNlKGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKS5kYXRhKCksIGVjKTsKKyAgICBhdXRvIHNwYWNlSW5mbyA9IHN0ZDo6ZmlsZXN5
c3RlbTo6c3BhY2UodG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpOwogICAgIGlmIChlYykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGZyZWVTcGFjZSA9IHNwYWNlSW5mby5hdmFpbGFi
bGU7CkBAIC02MjcsMjEgKzYzNywyMSBAQCBib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBT
dHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCiBib29sIGNyZWF0ZVN5bWJvbGljTGlu
ayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0
aCkKIHsKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7Ci0gICAgc3RkOjpmaWxlc3lzdGVtOjpjcmVh
dGVfc3ltbGluayhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24odGFyZ2V0UGF0aCkuZGF0YSgpLCBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3ltYm9saWNMaW5rUGF0aCkuZGF0YSgpLCBlYyk7Cisg
ICAgc3RkOjpmaWxlc3lzdGVtOjpjcmVhdGVfc3ltbGluayh0b1N0ZEZpbGVTeXN0ZW1QYXRoKHRh
cmdldFBhdGgpLCB0b1N0ZEZpbGVTeXN0ZW1QYXRoKHN5bWJvbGljTGlua1BhdGgpLCBlYyk7CiAg
ICAgcmV0dXJuICFlYzsKIH0KIAogYm9vbCBoYXJkTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBh
dGgsIGNvbnN0IFN0cmluZyYgbGlua1BhdGgpCiB7CiAgICAgc3RkOjplcnJvcl9jb2RlIGVjOwot
ICAgIHN0ZDo6ZmlsZXN5c3RlbTo6Y3JlYXRlX2hhcmRfbGluayhmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24odGFyZ2V0UGF0aCkuZGF0YSgpLCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obGlua1Bh
dGgpLmRhdGEoKSwgZWMpOworICAgIHN0ZDo6ZmlsZXN5c3RlbTo6Y3JlYXRlX2hhcmRfbGluayh0
b1N0ZEZpbGVTeXN0ZW1QYXRoKHRhcmdldFBhdGgpLCB0b1N0ZEZpbGVTeXN0ZW1QYXRoKGxpbmtQ
YXRoKSwgZWMpOwogICAgIHJldHVybiAhZWM7CiB9CiAKIGJvb2wgaGFyZExpbmtPckNvcHlGaWxl
KGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBsaW5rUGF0aCkKIHsKLSAg
ICBzdGQ6OmZpbGVzeXN0ZW06OnBhdGggZnNUYXJnZXRQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHRhcmdldFBhdGgpLmRhdGEoKTsKLSAgICBzdGQ6OmZpbGVzeXN0ZW06OnBhdGggZnNM
aW5rUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihsaW5rUGF0aCkuZGF0YSgpOworICAg
IGF1dG8gZnNUYXJnZXRQYXRoID0gdG9TdGRGaWxlU3lzdGVtUGF0aCh0YXJnZXRQYXRoKTsKKyAg
ICBhdXRvIGZzTGlua1BhdGggPSB0b1N0ZEZpbGVTeXN0ZW1QYXRoKGxpbmtQYXRoKTsKIAogICAg
IHN0ZDo6ZXJyb3JfY29kZSBlYzsKICAgICBzdGQ6OmZpbGVzeXN0ZW06OmNyZWF0ZV9oYXJkX2xp
bmsoZnNUYXJnZXRQYXRoLCBmc0xpbmtQYXRoLCBlYyk7CkBAIC02NTUsMTQgKzY2NSwxNCBAQCBi
b29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0
cmluZyYgbGlua1BhdGgpCiBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7Ci0gICAgc3RkOjpmaWxlc3lzdGVt
OjpyZW1vdmVfYWxsKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIGVjKTsK
KyAgICBzdGQ6OmZpbGVzeXN0ZW06OnJlbW92ZV9hbGwodG9TdGRGaWxlU3lzdGVtUGF0aChwYXRo
KSwgZWMpOwogICAgIHJldHVybiAhZWM7CiB9CiAKIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgc3RkOjplcnJvcl9j
b2RlIGVjOwotICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IHN0ZDo6ZmlsZXN5c3RlbTo6bGFz
dF93cml0ZV90aW1lKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIGVjKTsK
KyAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBzdGQ6OmZpbGVzeXN0ZW06Omxhc3Rfd3JpdGVf
dGltZSh0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBhdGgpLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJldHVybiB0b1dhbGxUaW1lKG1vZGlmaWNhdGlv
blRpbWUpOwpAQCAtNjczLDcgKzY4Myw3IEBAIHN0YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+
IGZpbGVNZXRhZGF0YVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyCiAgICAg
aWYgKHBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAg
c3RkOjpmaWxlc3lzdGVtOjpwYXRoIGZzUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKS5kYXRhKCk7CisgICAgYXV0byBmc1BhdGggPSB0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBhdGgp
OwogCiAgICAgc3RkOjplcnJvcl9jb2RlIGVjOwogICAgIGlmIChzaG91bGRGb2xsb3dTeW1ib2xp
Y0xpbmtzID09IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcyAmJiBzdGQ6OmZpbGVzeXN0
ZW06OmlzX3N5bWxpbmsoZnNQYXRoLCBlYykpIHsKQEAgLTcyMSwxNCArNzMxLDI5IEBAIE9wdGlv
bmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3Ry
aW5nJiBwYXRoKQogCiBTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkK
IHsKLSAgICBzdGQ6OmZpbGVzeXN0ZW06OnBhdGggZnNQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGgpLmRhdGEoKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChmc1BhdGgu
ZmlsZW5hbWUoKS51OHN0cmluZygpLmNfc3RyKCkpOworICAgIGF1dG8gZnNQYXRoID0gdG9TdGRG
aWxlU3lzdGVtUGF0aChwYXRoKTsKKyAgICByZXR1cm4gZnJvbVN0ZEZpbGVTeXN0ZW1QYXRoKGZz
UGF0aC5maWxlbmFtZSgpKTsKIH0KIAogU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5n
JiBwYXRoKQogewotICAgIHN0ZDo6ZmlsZXN5c3RlbTo6cGF0aCBmc1BhdGggPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpOwotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KGZzUGF0aC5wYXJlbnRfcGF0aCgpLnU4c3RyaW5nKCkuY19zdHIoKSk7CisgICAgYXV0byBmc1Bh
dGggPSB0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBhdGgpOworICAgIHJldHVybiBmcm9tU3RkRmlsZVN5
c3RlbVBhdGgoZnNQYXRoLnBhcmVudF9wYXRoKCkpOworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQp
Cit7CisgICAgYXV0byBmc1BhdGggPSB0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBhdGgpOworICAgIGZz
UGF0aCAvPSB0b1N0ZEZpbGVTeXN0ZW1QYXRoKGNvbXBvbmVudCk7CisgICAgcmV0dXJuIGZyb21T
dGRGaWxlU3lzdGVtUGF0aChmc1BhdGgpOworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9u
ZW50cykKK3sKKyAgICBhdXRvIGZzUGF0aCA9IHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0aCk7Cisg
ICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKQorICAgICAgICBmc1BhdGggLz0g
dG9TdGRGaWxlU3lzdGVtUGF0aChjb21wb25lbnQpOworICAgIHJldHVybiBmcm9tU3RkRmlsZVN5
c3RlbVBhdGgoZnNQYXRoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNl
L1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggYzZlZGNiZjc0MjRlOTU4MDI5
ZTkyZTMxMzM3MDk4MDZmMjQzZjRiNy4uMDk5N2ZmZWE3MWNiYTczOGJhMTIyMDM0ZjRhY2FmOTVk
ZDljNjFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTEzNiwy
NCArMTM2LDYgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3Qg
U3RyaW5nJikKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1TdHJpbmcgcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25l
bnQpCi17Ci0gICAgaWYgKHBhdGguZW5kc1dpdGgoR19ESVJfU0VQQVJBVE9SX1MpKQotICAgICAg
ICByZXR1cm4gcGF0aCArIGNvbXBvbmVudDsKLSAgICByZXR1cm4gcGF0aCArIEdfRElSX1NFUEFS
QVRPUl9TICsgY29tcG9uZW50OwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykK
LXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQocGF0aCk7
Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKSB7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKEdfRElSX1NFUEFSQVRPUl9TKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoY29t
cG9uZW50KTsKLSAgICB9Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQogU3Ry
aW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKIHsKICAgICByZXR1cm4gc3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihnX2dldF9ob21lX2RpcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9G
aWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IDNiNGJlYzEyZWIwMTVjYjNmMGE3ZDE4OWFlNDIxN2I0
YWNkOTYzZjIuLjc3NzAwNGZkNzdkM2U5ZDM5OTc3YmI2MzZiYjAxMGU3NzdmODUyNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMTg2LDIyICsxODYsNiBA
QCBPcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBh
dGgpCiAjZW5kaWYKIH0KIAotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQotewotICAgIGlmIChwYXRoLmVu
ZHNXaXRoKCcvJykpCi0gICAgICAgIHJldHVybiBwYXRoICsgY29tcG9uZW50OwotICAgIHJldHVy
biBwYXRoICsgIi8iICsgY29tcG9uZW50OwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9u
ZW50cykKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQo
cGF0aCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKQotICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnLycsIGNvbXBvbmVudCk7Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKTsKLX0KLQogVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQogewogICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggMWE0OGExOTNmNjM2NjRlN2M5
MmVhZjg5MTk1MzA3ODAwMmNkNjhlZC4uYjc1NmY2YWYyNTI2M2NlN2JkMzZmOGI5OGY0Y2RmODMw
M2E2Y2RhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAtMTQzLDMwICsx
NDMsNiBAQCBzdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRo
KQogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKLVN0cmlu
ZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIGNvbXBvbmVudCkKLXsKLSAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7Ci0g
ICAgaWYgKHBhdGgubGVuZ3RoKCkgKyAxID4gYnVmZmVyLnNpemUoKSkKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotCi0gICAgU3RyaW5nVmlldyhwYXRoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29u
dmVydChidWZmZXIuZGF0YSgpKTsKLSAgICBidWZmZXJbcGF0aC5sZW5ndGgoKV0gPSAnXDAnOwot
Ci0gICAgaWYgKCFQYXRoQXBwZW5kVyh3Y2hhckZyb20oYnVmZmVyLmRhdGEoKSksIGNvbXBvbmVu
dC53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQot
ICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKHdjaGFyRnJvbShidWZmZXIuZGF0YSgpKSkpOwotICAg
IHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7Ci19Ci0KLVN0cmluZyBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmlu
Z1ZpZXc+JiBjb21wb25lbnRzKQotewotICAgIFN0cmluZyByZXN1bHQgPSBwYXRoLnRvU3RyaW5n
KCk7Ci0gICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKQotICAgICAgICByZXN1
bHQgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVzdWx0LCBjb21wb25lbnQudG9TdHJpbmco
KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogI2lmICFVU0UoQ0YpCiAKIENTdHJpbmcgZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2ZjU0NDkwZGI3OGM0NDUwNzg1
MWEwOTI5NDFjOWQ1ZDU5NThiNmNmLi5lZGUzYWM4NjdiMjExZTE2MWIyZGFhMmM1NWY1ZGNjYzAz
NGMyYzc0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDUtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBQb3J0IEZpbGVzeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dCgpICYgRmlsZXN5c3RlbTo6IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoKSB0byBzdGQ6OmZp
bGVzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNTU1MAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFk
ZCBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAy
MS0wNS0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBvcnQg
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKCkgJiBGaWxlc3lzdGVtOjpkaXJlY3RvcnlOYW1l
KCkgdG8gc3RkOjpmaWxlc3lzdGVtCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Zp
bGVTeXN0ZW0uY3BwCmluZGV4IDg1NGJmNDRhNGZlMTZjNTBjNGMwZDYyMWIyM2YyOTYxMDYyYWY2
ZDAuLjAyZWNiYmE4ZjA5NWYxZWVmNGUxMjM0ZGIwMmRmYWQwNTkyODVjNzYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC03NDQsNCArNzQ0LDQw
IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZGlyZWN0b3J5TmFtZSkKICNlbmRpZgogfQogCitU
RVNUX0YoRmlsZVN5c3RlbVRlc3QsIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCkKK3sKKyNpZiBP
UyhVTklYKQorICAgIEVYUEVDVF9TVFJFUSgiL3ZhciIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudCgiLyIsICJ2YXIiKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RS
RVEoIi92YXIvdG1wIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCIvdmFy
LyIsICJ0bXAiKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1wIiwg
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCIvdmFyIiwgInRtcCIpLnV0Zjgo
KS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiL3Zhci90bXAvZmlsZS50eHQiLCBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIi92YXIvdG1wIiwgImZpbGUudHh0IikudXRm
OCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCIvdmFyLyIsIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudCgiL3ZhciIsICIiKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBF
Q1RfU1RSRVEoIi92YXIvIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCIv
dmFyLyIsICIiKS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgorI2lmIE9TKFdJTkRPV1MpCisgICAg
RVhQRUNUX1NUUkVRKCJDOlxcRm9vIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KCJDOlxcIiwgIkZvbyIpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiQzpc
XEZvb1xcQmFyIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCJDOlxcRm9v
IiwgIkJhciIpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZvb1xcQmFy
XFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiQzpcXEZv
b1xcQmFyIiwgIkZpbGUudHh0IikudXRmOCgpLmRhdGEoKSk7CisjZW5kaWYKK30KKworVEVTVF9G
KEZpbGVTeXN0ZW1UZXN0LCBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKQoreworICAgIEVYUEVD
VF9TVFJFUSh0ZW1wRW1wdHlGb2xkZXJQYXRoKCkudXRmOCgpLmRhdGEoKSwgRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksIHsgfSkudXRm
OCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudCh0ZW1wRW1wdHlGb2xkZXJQYXRoKCksICJmaWxlLnR4dCIpLnV0ZjgoKS5kYXRh
KCksIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcEVtcHR5Rm9sZGVy
UGF0aCgpLCB7ICJmaWxlLnR4dCIgfSkudXRmOCgpLmRhdGEoKSk7CisjaWYgT1MoVU5JWCkKKyAg
ICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1wL2ZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50cygiLyIsIHsgInZhciIsICJ0bXAiLCAiZmlsZS50eHQiIH0pLnV0Zjgo
KS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiL3Zhci90bXAvZmlsZS50eHQiLCBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKCIvdmFyIiwgeyAidG1wIiwgImZpbGUudHh0
IiB9KS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1wL2ZpbGUudHh0
IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiL3Zhci8iLCB7ICJ0bXAi
LCAiZmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiL3Zhci90
bXAvZmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKCIvdmFy
L3RtcCIsIHsgImZpbGUudHh0IiB9KS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgorI2lmIE9TKFdJ
TkRPV1MpCisgICAgRVhQRUNUX1NUUkVRKCJDOlxcRm9vXFxCYXJcXEZpbGUudHh0IiwgRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiQzpcXCIsIHsgIkZvbyIsICJCYXIiLCAi
RmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZvb1xc
QmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoIkM6
XFxGb28iLCB7ICJCYXIiLCAiRmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVD
VF9TVFJFUSgiQzpcXEZvb1xcQmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHMoIkM6XFxGb29cXCIsIHsgIkJhciIsICJGaWxlLnR4dCIgfSkudXRmOCgp
LmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJDOlxcRm9vXFxCYXJcXEZpbGUudHh0IiwgRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiQzpcXEZvb1xcQmFyIiwgeyAiRmls
ZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZvb1xcQmFy
XFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoIkM6XFxG
b29cXEJhclxcIiwgeyAiRmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOworI2VuZGlmCit9CisK
IH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428089</attachid>
            <date>2021-05-08 12:14:46 -0700</date>
            <delta_ts>2021-05-08 16:14:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225550-20210508121446.patch</filename>
            <type>text/plain</type>
            <size>22336</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YTBlYTZmN2IwZmViMjE5Yjc3MTY0MWUwZWNmZjZmNWUxYjRhYzI2Li4yZDE1NjlkZTZmNjdmY2Q5
MjY5NWVlOWIzMWJkYTAxZTNmYWRhYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0wNS0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFBvcnQgRmlsZXN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCkgJiBG
aWxlc3lzdGVtOjogcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygpIHRvIHN0ZDo6ZmlsZXN5c3Rl
bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTUw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQnVpbGQgZml4
LgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisK
IDIwMjEtMDUtMDggIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAg
ICAgICAgIEludHJvZHVjZSBKU09iamVjdDo6Z2V0SWZQcm9wZXJ0eUV4aXN0cyBoZWxwZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggMjg0YmNlNmFkYzMxZTlkODc1YjhlYjhiYzNjNTQ0ZTk5MzY3ODA4Ni4uZmMzM2MzOTcxOTYw
N2E2YWE5OTAyODNlODdmYWRlZjRmY2YyZTI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0w
NS0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBvcnQgRmls
ZXN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCkgJiBGaWxlc3lzdGVtOjogcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50cygpIHRvIHN0ZDo6ZmlsZXN5c3RlbQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTUwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUG9ydCBGaWxlc3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoKSAmIEZpbGVzeXN0ZW06OiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRz
KCkgdG8gc3RkOjpmaWxlc3lzdGVtCisgICAgICAgIGFuZCBnZXQgcmlkIG9mIHBsYXRmb3JtLXNw
ZWNpZmljIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCk6
CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRz
KToKKyAgICAgICAgKiB3dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHA6CisgICAgICAgICogd3Rm
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgICogd3RmL3dpbi9GaWxlU3lzdGVt
V2luLmNwcDoKKwogMjAyMS0wNS0wOCAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHTElCXSBSRUdSRVNTSU9OKHIyNzcxNTgpIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMveGhyL0Zvcm1EYXRhLWFwcGVuZC5odG1sIGlzIGNyYXNoaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlw
dENvcmUueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2
YVNjcmlwdENvcmUueGNjb25maWcKaW5kZXggM2E1ZGE0M2M2M2RhNWRmYjU3NDFiYjQwNmZlNGU1
OWIxYThiNWMzNC4uOWNlODgxNGMwZWRmYWM2ZmQ1MmIxZmVkZDVlYWFmNDZiZDBlNzMyMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0phdmFTY3JpcHRD
b3JlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9K
YXZhU2NyaXB0Q29yZS54Y2NvbmZpZwpAQCAtMjcsNyArMjcsNyBAQCBERUZJTkVTX01PRFVMRSA9
IFlFUzsKIE1PRFVMRU1BUF9GSUxFID0gJChTUkNST09UKS9KYXZhU2NyaXB0Q29yZS5tb2R1bGVt
YXA7CiAKIC8vIFByZXZlbnQgQysrIHN0YW5kYXJkIGxpYnJhcnkgb3BlcmF0b3IgbmV3LCBkZWxl
dGUgYW5kIHRoZWlyIHJlbGF0ZWQgZXhjZXB0aW9uIHR5cGVzIGZyb20gYmVpbmcgZXhwb3J0ZWQg
YXMgd2VhayBzeW1ib2xzLgotT1RIRVJfTERGTEFHU19ISURFX1NZTUJPTFMgPSAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sLF9fWlRJU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
VElTdDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pUU1N0OWJhZF9hbGxvYyAt
V2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRTU3Q5ZXhjZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9z
eW1ib2wsX19aZGxQdlNfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19abndtUHYgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19fMThmdW5jdGlvbklGdnZFRWNsRXYgLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVFQzFFT1MyXyAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVDMkVPUzJfIC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wsX19aTktTdDNfXzE4ZnVuY3Rpb25JRnZSTjNKU0MxN0J5dGVjb2RlR2VuZXJhdG9y
RVBOUzFfMTBSZWdpc3RlcklERUVFY2xFUzNfUzVfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
TlN0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lz
dGVySURFRUVEMUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklG
dlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lzdGVySURFRUVEMkV2IC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMThmdW5jdGlvbklGdnZFRUQxRXYgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVFRDJFdiAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sLF9fWlRWTlN0M19fMTE3YmFkX2Z1bmN0aW9uX2NhbGxFIC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJf
YXJyYXlJUEtjUzRfY0xiMUVFMTFfX3JhbmdlX2VuZEVTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJv
bCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0aGFibGVfY2hhcl9hcnJheUlQ
S2NTNF9jTGIxRUUxM19fcmFuZ2VfYmVnaW5FUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
TlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTRfX2FwcGVuZF9yYW5nZUlQS2NF
RU5TXzllbmFibGVfaWZJWHNyMjdfX2lzX2NwcDE3X2ZvcndhcmRfaXRlcmF0b3JJVF9FRTV2YWx1
ZUV2RTR0eXBlRVJOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxs
b2NhdG9ySWNFRUVFUzhfUzhfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2Zz
MTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VJUEtjRUV2Uk5TXzEyYmFz
aWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVSS1RfIC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZU
SWNFMTRfX2FwcGVuZF9yYW5nZUlQS2NFRU5TXzllbmFibGVfaWZJWHNyMjFfX2lzX2ZvcndhcmRf
aXRlcmF0b3JJVF9FRTV2YWx1ZUV2RTR0eXBlRVJOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFy
X3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUzhfUzhfIC1XbCwtdW5leHBvcnRlZF9zeW1i
b2wsX19aTktTdDNfXzE0X19mczEwZmlsZXN5c3RlbTE4ZGlyZWN0b3J5X2l0ZXJhdG9yZGVFdiAt
V2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTE4ZGlyZWN0
b3J5X2l0ZXJhdG9ycHBFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEw
ZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SUExMF9jUGNjTGIxRUUxMV9fcmFu
Z2VfZW5kRVBLYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5
c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SUExMF9jUGNjTGIxRUUxM19fcmFuZ2VfYmVn
aW5FUEtjIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVt
NHBhdGhkVkVSS1MyXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmls
ZXN5c3RlbThfUGF0aENWVEljRTE1X19hcHBlbmRfc291cmNlSUExMF9jRUV2Uk5TXzEyYmFzaWNf
c3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVSS1RfIC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX3Rocm93X2Zp
bGVzeXN0ZW1fZXJyb3JJSlJQS2NSS05TMV80cGF0aEVSS05TXzEwZXJyb3JfY29kZUVFRUV2RHBP
VF87CitPVEhFUl9MREZMQUdTX0hJREVfU1lNQk9MUyA9IC1XbCwtdW5leHBvcnRlZF9zeW1ib2ws
X19aVElTdDliYWRfYWxsb2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pUSVN0OWV4Y2VwdGlv
biAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWlRTU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wsX19aVFNTdDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pkbFB2
U18gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pud21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
LF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2dkVFY2xFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9f
Wk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVDMUVPUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
TlN0M19fMThmdW5jdGlvbklGdnZFRUMyRU9TMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pO
S1N0M19fMThmdW5jdGlvbklGdlJOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TMV8xMFJlZ2lz
dGVySURFRUVjbEVTM19TNV8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0
aW9uSUZ2Uk4zSlNDMTdCeXRlY29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQxRXYg
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2Uk4zSlNDMTdCeXRl
Y29kZUdlbmVyYXRvckVQTlMxXzEwUmVnaXN0ZXJJREVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5
bWJvbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2dkVFRDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
LF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZ2RUVEMkV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19a
VFZOU3QzX18xMTdiYWRfZnVuY3Rpb25fY2FsbEUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pO
U3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9j
TGIxRUUxMV9fcmFuZ2VfZW5kRVM0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0
X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SVBLY1M0X2NMYjFFRTEz
X19yYW5nZV9iZWdpbkVTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMx
MGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9p
ZklYc3IyN19faXNfY3BwMTdfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUk5T
XzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVT
OF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04
X1BhdGhDVlRJY0UxNV9fYXBwZW5kX3NvdXJjZUlQS2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05T
XzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF8gLVdsLC11bmV4cG9ydGVk
X3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5k
X3JhbmdlSVBLY0VFTlNfOWVuYWJsZV9pZklYc3IyMV9faXNfZm9yd2FyZF9pdGVyYXRvcklUX0VF
NXZhbHVlRXZFNHR5cGVFUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5T
XzlhbGxvY2F0b3JJY0VFRUVTOF9TOF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCxfX1pOS1N0M19f
MTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JkZUV2IC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3Jw
cEV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRf
X2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFFRTExX19yYW5nZV9lbmRFUEtjIC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3Bh
dGhhYmxlX2NoYXJfYXJyYXlJQTEwX2NQY2NMYjFFRTEzX19yYW5nZV9iZWdpbkVQS2MgLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW00cGF0aGRWRVJLUzJf
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRo
Q1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VJQTEwX2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzEx
Y2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF8gLVdsLC11bmV4cG9ydGVkX3N5
bWJvbCxfX1pOU3QzX18xNF9fZnMxMGZpbGVzeXN0ZW0yNF9fdGhyb3dfZmlsZXN5c3RlbV9lcnJv
cklKUlBLY1JLTlMxXzRwYXRoRVJLTlNfMTBlcnJvcl9jb2RlRUVFRXZEcE9UXyAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTE0X19pc19zZXBhcmF0b3JJ
Y0VFTlNfOWVuYWJsZV9pZklYc3IxOF9fY2FuX2NvbnZlcnRfY2hhcklUX0VFNXZhbHVlRWJFNHR5
cGVFUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVt
MjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJUEtjUzRfY0xiMUVFMTVfX2ZpcnN0X29yX251bGxF
UzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsX19aTlN0M19fMTRfX2ZzMTBmaWxlc3lzdGVtNHBh
dGgyMF9fc291cmNlX2lzX2Fic29sdXRlSWNFRWJUXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLF9f
Wk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTRwYXRoNmFwcGVuZElQS2NFRU5TXzllbmFibGVfaWZJ
WHNyMTNfX2lzX3BhdGhhYmxlSVRfRUU1dmFsdWVFUlMyX0U0dHlwZUVSS1M3XyAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sLF9fWk5TdDNfXzE0X19mczEwZmlsZXN5c3RlbTZ1OHBhdGhJUEtjRUVOU185
ZW5hYmxlX2lmSVhzcjEzX19pc19wYXRoYWJsZUlUX0VFNXZhbHVlRU5TMV80cGF0aEVFNHR5cGVF
UktTNl87CiAKIE9USEVSX0xERkxBR1NfQkFTRSA9ICQoT1RIRVJfTERGTEFHU19ISURFX1NZTUJP
TFMpIC1mb3JjZV9sb2FkICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvbGliV1RGLmEiOwogT1RIRVJfTERGTEFHU1tzZGs9ZW1iZWRkZWQqXSA9ICQo
aW5oZXJpdGVkKSAkKE9USEVSX0xERkxBR1NfQkFTRSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCmluZGV4
IDE1YTEwNzQ1NzVmNzFjZmRkNGQ0OThlZGZiYTVlMTA3ZDExOWZmNDAuLjBmODA3Mjc2NTAyMTE0
ZTRkMzVmYWQ4ODhjOWExZmVjMzNiMjMwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC01MCw2
ICs1MCwxNiBAQCBuYW1lc3BhY2UgV1RGIHsKIAogbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsIHsK
IAorc3RhdGljIHN0ZDo6ZmlsZXN5c3RlbTo6cGF0aCB0b1N0ZEZpbGVTeXN0ZW1QYXRoKFN0cmlu
Z1ZpZXcgcGF0aCkKK3sKKyAgICByZXR1cm4gc3RkOjpmaWxlc3lzdGVtOjp1OHBhdGgocGF0aC51
dGY4KCkuZGF0YSgpKTsKK30KKworc3RhdGljIFN0cmluZyBmcm9tU3RkRmlsZVN5c3RlbVBhdGgo
Y29uc3Qgc3RkOjpmaWxlc3lzdGVtOjpwYXRoJiBwYXRoKQoreworICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KHBhdGgudThzdHJpbmcoKS5jX3N0cigpKTsKK30KKwogLy8gVGhlIGZvbGxvd2lu
ZyBsb3dlci1BU0NJSSBjaGFyYWN0ZXJzIG5lZWQgZXNjYXBpbmcgdG8gYmUgdXNlZCBpbiBhIGZp
bGVuYW1lCiAvLyBhY3Jvc3MgYWxsIHN5c3RlbXMsIGluY2x1ZGluZyBXaW5kb3dzOgogLy8gICAg
IC0gVW5wcmludGFibGUgQVNDSUkgKDAwLTFGKQpAQCAtNTI1LDEzICs1MzUsMTMgQEAgYm9vbCBm
aWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7
CiAgICAgLy8gZXhpc3RzKCkgcmV0dXJucyBmYWxzZSBvbiBlcnJvciBzbyBubyBuZWVkIHRvIGNo
ZWNrIGVjLgotICAgIHJldHVybiBzdGQ6OmZpbGVzeXN0ZW06OmV4aXN0cyhmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBlYyk7CisgICAgcmV0dXJuIHN0ZDo6ZmlsZXN5c3Rl
bTo6ZXhpc3RzKHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0aCksIGVjKTsKIH0KIAogYm9vbCBkZWxl
dGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7Ci0g
ICAgc3RkOjpmaWxlc3lzdGVtOjpwYXRoIGZzUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKS5kYXRhKCk7CisgICAgYXV0byBmc1BhdGggPSB0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBh
dGgpOwogCiAgICAgYXV0byBmaWxlU3RhdHVzID0gc3RkOjpmaWxlc3lzdGVtOjpzeW1saW5rX3N0
YXR1cyhmc1BhdGgsIGVjKTsKICAgICBpZiAoZWMgfHwgZmlsZVN0YXR1cy50eXBlKCkgPT0gc3Rk
OjpmaWxlc3lzdGVtOjpmaWxlX3R5cGU6OmRpcmVjdG9yeSkKQEAgLTU0NCw3ICs1NTQsNyBAQCBi
b29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogYm9vbCBkZWxldGVFbXB0eURpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgc3RkOjplcnJvcl9jb2RlIGVjOwotICAg
IHN0ZDo6ZmlsZXN5c3RlbTo6cGF0aCBmc1BhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGF0aCkuZGF0YSgpOworICAgIGF1dG8gZnNQYXRoID0gdG9TdGRGaWxlU3lzdGVtUGF0aChwYXRo
KTsKIAogICAgIGF1dG8gZmlsZVN0YXR1cyA9IHN0ZDo6ZmlsZXN5c3RlbTo6c3ltbGlua19zdGF0
dXMoZnNQYXRoLCBlYyk7CiAgICAgaWYgKGVjIHx8IGZpbGVTdGF0dXMudHlwZSgpICE9IHN0ZDo6
ZmlsZXN5c3RlbTo6ZmlsZV90eXBlOjpkaXJlY3RvcnkpCkBAIC01NzAsOCArNTgwLDggQEAgYm9v
bCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiAKIGJvb2wgbW92ZUZp
bGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCiB7Ci0gICAg
c3RkOjpmaWxlc3lzdGVtOjpwYXRoIGZzT2xkUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihvbGRQYXRoKS5kYXRhKCk7Ci0gICAgc3RkOjpmaWxlc3lzdGVtOjpwYXRoIGZzTmV3UGF0aCA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihuZXdQYXRoKS5kYXRhKCk7CisgICAgYXV0byBmc09s
ZFBhdGggPSB0b1N0ZEZpbGVTeXN0ZW1QYXRoKG9sZFBhdGgpOworICAgIGF1dG8gZnNOZXdQYXRo
ID0gdG9TdGRGaWxlU3lzdGVtUGF0aChuZXdQYXRoKTsKIAogICAgIHN0ZDo6ZXJyb3JfY29kZSBl
YzsKICAgICBzdGQ6OmZpbGVzeXN0ZW06OnJlbmFtZShmc09sZFBhdGgsIGZzTmV3UGF0aCwgZWMp
OwpAQCAtNTg5LDcgKzU5OSw3IEBAIGJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRo
LCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCiBib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYg
cGF0aCwgbG9uZyBsb25nJiByZXN1bHQpCiB7CiAgICAgc3RkOjplcnJvcl9jb2RlIGVjOwotICAg
IGF1dG8gc2l6ZSA9IHN0ZDo6ZmlsZXN5c3RlbTo6ZmlsZV9zaXplKGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKS5kYXRhKCksIGVjKTsKKyAgICBhdXRvIHNpemUgPSBzdGQ6OmZpbGVzeXN0
ZW06OmZpbGVfc2l6ZSh0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBhdGgpLCBlYyk7CiAgICAgaWYgKGVj
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0ID0gc2l6ZTsKQEAgLTYwMSwyMyAr
NjExLDIzIEBAIGJvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgU2hvdWxk
Rm9sbG93U3ltYm9saWNMaW5rcyBzaG91bGRGb2xsb3dTCiAgICAgc3RkOjplcnJvcl9jb2RlIGVj
OwogICAgIHN0ZDo6ZmlsZXN5c3RlbTo6ZmlsZV9zdGF0dXMgZmlsZVN0YXR1czsKICAgICBpZiAo
c2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyA9PSBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZ
ZXMpCi0gICAgICAgIGZpbGVTdGF0dXMgPSBzdGQ6OmZpbGVzeXN0ZW06OnN0YXR1cyhmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBlYyk7CisgICAgICAgIGZpbGVTdGF0dXMg
PSBzdGQ6OmZpbGVzeXN0ZW06OnN0YXR1cyh0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBhdGgpLCBlYyk7
CiAgICAgZWxzZQotICAgICAgICBmaWxlU3RhdHVzID0gc3RkOjpmaWxlc3lzdGVtOjpzeW1saW5r
X3N0YXR1cyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBlYyk7CisgICAg
ICAgIGZpbGVTdGF0dXMgPSBzdGQ6OmZpbGVzeXN0ZW06OnN5bWxpbmtfc3RhdHVzKHRvU3RkRmls
ZVN5c3RlbVBhdGgocGF0aCksIGVjKTsKICAgICByZXR1cm4gZmlsZVN0YXR1cy50eXBlKCkgPT0g
c3RkOjpmaWxlc3lzdGVtOjpmaWxlX3R5cGU6OmRpcmVjdG9yeTsKIH0KIAogYm9vbCBtYWtlQWxs
RGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHN0ZDo6ZXJyb3JfY29kZSBl
YzsKLSAgICBzdGQ6OmZpbGVzeXN0ZW06OmNyZWF0ZV9kaXJlY3RvcmllcyhmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBlYyk7CisgICAgc3RkOjpmaWxlc3lzdGVtOjpjcmVh
dGVfZGlyZWN0b3JpZXModG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpOwogICAgIHJldHVy
biAhZWM7CiB9CiAKIGJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwg
dWludDY0X3QmIGZyZWVTcGFjZSkKIHsKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7Ci0gICAgYXV0
byBzcGFjZUluZm8gPSBzdGQ6OmZpbGVzeXN0ZW06OnNwYWNlKGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKS5kYXRhKCksIGVjKTsKKyAgICBhdXRvIHNwYWNlSW5mbyA9IHN0ZDo6ZmlsZXN5
c3RlbTo6c3BhY2UodG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpOwogICAgIGlmIChlYykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGZyZWVTcGFjZSA9IHNwYWNlSW5mby5hdmFpbGFi
bGU7CkBAIC02MjcsMjEgKzYzNywyMSBAQCBib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBT
dHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCiBib29sIGNyZWF0ZVN5bWJvbGljTGlu
ayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0
aCkKIHsKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7Ci0gICAgc3RkOjpmaWxlc3lzdGVtOjpjcmVh
dGVfc3ltbGluayhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24odGFyZ2V0UGF0aCkuZGF0YSgpLCBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3ltYm9saWNMaW5rUGF0aCkuZGF0YSgpLCBlYyk7Cisg
ICAgc3RkOjpmaWxlc3lzdGVtOjpjcmVhdGVfc3ltbGluayh0b1N0ZEZpbGVTeXN0ZW1QYXRoKHRh
cmdldFBhdGgpLCB0b1N0ZEZpbGVTeXN0ZW1QYXRoKHN5bWJvbGljTGlua1BhdGgpLCBlYyk7CiAg
ICAgcmV0dXJuICFlYzsKIH0KIAogYm9vbCBoYXJkTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBh
dGgsIGNvbnN0IFN0cmluZyYgbGlua1BhdGgpCiB7CiAgICAgc3RkOjplcnJvcl9jb2RlIGVjOwot
ICAgIHN0ZDo6ZmlsZXN5c3RlbTo6Y3JlYXRlX2hhcmRfbGluayhmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24odGFyZ2V0UGF0aCkuZGF0YSgpLCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obGlua1Bh
dGgpLmRhdGEoKSwgZWMpOworICAgIHN0ZDo6ZmlsZXN5c3RlbTo6Y3JlYXRlX2hhcmRfbGluayh0
b1N0ZEZpbGVTeXN0ZW1QYXRoKHRhcmdldFBhdGgpLCB0b1N0ZEZpbGVTeXN0ZW1QYXRoKGxpbmtQ
YXRoKSwgZWMpOwogICAgIHJldHVybiAhZWM7CiB9CiAKIGJvb2wgaGFyZExpbmtPckNvcHlGaWxl
KGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBsaW5rUGF0aCkKIHsKLSAg
ICBzdGQ6OmZpbGVzeXN0ZW06OnBhdGggZnNUYXJnZXRQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHRhcmdldFBhdGgpLmRhdGEoKTsKLSAgICBzdGQ6OmZpbGVzeXN0ZW06OnBhdGggZnNM
aW5rUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihsaW5rUGF0aCkuZGF0YSgpOworICAg
IGF1dG8gZnNUYXJnZXRQYXRoID0gdG9TdGRGaWxlU3lzdGVtUGF0aCh0YXJnZXRQYXRoKTsKKyAg
ICBhdXRvIGZzTGlua1BhdGggPSB0b1N0ZEZpbGVTeXN0ZW1QYXRoKGxpbmtQYXRoKTsKIAogICAg
IHN0ZDo6ZXJyb3JfY29kZSBlYzsKICAgICBzdGQ6OmZpbGVzeXN0ZW06OmNyZWF0ZV9oYXJkX2xp
bmsoZnNUYXJnZXRQYXRoLCBmc0xpbmtQYXRoLCBlYyk7CkBAIC02NTUsMTQgKzY2NSwxNCBAQCBi
b29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0
cmluZyYgbGlua1BhdGgpCiBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7Ci0gICAgc3RkOjpmaWxlc3lzdGVt
OjpyZW1vdmVfYWxsKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIGVjKTsK
KyAgICBzdGQ6OmZpbGVzeXN0ZW06OnJlbW92ZV9hbGwodG9TdGRGaWxlU3lzdGVtUGF0aChwYXRo
KSwgZWMpOwogICAgIHJldHVybiAhZWM7CiB9CiAKIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgc3RkOjplcnJvcl9j
b2RlIGVjOwotICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IHN0ZDo6ZmlsZXN5c3RlbTo6bGFz
dF93cml0ZV90aW1lKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIGVjKTsK
KyAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBzdGQ6OmZpbGVzeXN0ZW06Omxhc3Rfd3JpdGVf
dGltZSh0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBhdGgpLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJldHVybiB0b1dhbGxUaW1lKG1vZGlmaWNhdGlv
blRpbWUpOwpAQCAtNjczLDcgKzY4Myw3IEBAIHN0YXRpYyBPcHRpb25hbDxGaWxlTWV0YWRhdGE+
IGZpbGVNZXRhZGF0YVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyCiAgICAg
aWYgKHBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAg
c3RkOjpmaWxlc3lzdGVtOjpwYXRoIGZzUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKS5kYXRhKCk7CisgICAgYXV0byBmc1BhdGggPSB0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBhdGgp
OwogCiAgICAgc3RkOjplcnJvcl9jb2RlIGVjOwogICAgIGlmIChzaG91bGRGb2xsb3dTeW1ib2xp
Y0xpbmtzID09IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcyAmJiBzdGQ6OmZpbGVzeXN0
ZW06OmlzX3N5bWxpbmsoZnNQYXRoLCBlYykpIHsKQEAgLTcyMSwxNCArNzMxLDI1IEBAIE9wdGlv
bmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3Ry
aW5nJiBwYXRoKQogCiBTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkK
IHsKLSAgICBzdGQ6OmZpbGVzeXN0ZW06OnBhdGggZnNQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGgpLmRhdGEoKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChmc1BhdGgu
ZmlsZW5hbWUoKS51OHN0cmluZygpLmNfc3RyKCkpOworICAgIHJldHVybiBmcm9tU3RkRmlsZVN5
c3RlbVBhdGgodG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKS5maWxlbmFtZSgpKTsKIH0KIAogU3Ry
aW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHN0ZDo6ZmlsZXN5
c3RlbTo6cGF0aCBmc1BhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgp
OwotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGZzUGF0aC5wYXJlbnRfcGF0aCgpLnU4c3Ry
aW5nKCkuY19zdHIoKSk7CisgICAgcmV0dXJuIGZyb21TdGRGaWxlU3lzdGVtUGF0aCh0b1N0ZEZp
bGVTeXN0ZW1QYXRoKHBhdGgpLnBhcmVudF9wYXRoKCkpOworfQorCitTdHJpbmcgcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25l
bnQpCit7CisgICAgcmV0dXJuIGZyb21TdGRGaWxlU3lzdGVtUGF0aCh0b1N0ZEZpbGVTeXN0ZW1Q
YXRoKHBhdGgpIC8gdG9TdGRGaWxlU3lzdGVtUGF0aChjb21wb25lbnQpKTsKK30KKworU3RyaW5n
IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8
U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCit7CisgICAgYXV0byBmc1BhdGggPSB0b1N0ZEZpbGVT
eXN0ZW1QYXRoKHBhdGgpOworICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykK
KyAgICAgICAgZnNQYXRoIC89IHRvU3RkRmlsZVN5c3RlbVBhdGgoY29tcG9uZW50KTsKKyAgICBy
ZXR1cm4gZnJvbVN0ZEZpbGVTeXN0ZW1QYXRoKGZzUGF0aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEZpbGVTeXN0ZW1JbXBsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0
ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4
IGM2ZWRjYmY3NDI0ZTk1ODAyOWU5MmUzMTMzNzA5ODA2ZjI0M2Y0YjcuLjA5OTdmZmVhNzFjYmE3
MzhiYTEyMjAzNGY0YWNhZjk1ZGQ5YzYxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2ds
aWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwCkBAIC0xMzYsMjQgKzEzNiw2IEBAIE9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxl
Q3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0K
IAotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgY29tcG9uZW50KQotewotICAgIGlmIChwYXRoLmVuZHNXaXRoKEdfRElSX1NF
UEFSQVRPUl9TKSkKLSAgICAgICAgcmV0dXJuIHBhdGggKyBjb21wb25lbnQ7Ci0gICAgcmV0dXJu
IHBhdGggKyBHX0RJUl9TRVBBUkFUT1JfUyArIGNvbXBvbmVudDsKLX0KLQotU3RyaW5nIHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5n
Vmlldz4mIGNvbXBvbmVudHMpCi17Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1
aWxkZXIuYXBwZW5kKHBhdGgpOwotICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50
cykgewotICAgICAgICBidWlsZGVyLmFwcGVuZChHX0RJUl9TRVBBUkFUT1JfUyk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKGNvbXBvbmVudCk7Ci0gICAgfQotICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7Ci19Ci0KIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCiB7CiAgICAgcmV0dXJu
IHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfaG9tZV9kaXIoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRleCAzYjRiZWMxMmViMDE1
Y2IzZjBhN2QxODlhZTQyMTdiNGFjZDk2M2YyLi43NzcwMDRmZDc3ZDNlOWQzOTk3N2JiNjM2YmIw
MTBlNzc3Zjg1MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVt
UE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAK
QEAgLTE4NiwyMiArMTg2LDYgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRp
bWUoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9CiAKLVN0cmluZyBwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkK
LXsKLSAgICBpZiAocGF0aC5lbmRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4gcGF0aCArIGNv
bXBvbmVudDsKLSAgICByZXR1cm4gcGF0aCArICIvIiArIGNvbXBvbmVudDsKLX0KLQotU3RyaW5n
IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8
U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCi17Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgpOwotICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29t
cG9uZW50cykKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJy8nLCBjb21wb25lbnQpOwotICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KIFZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikKIHsKICAgICBWZWN0
b3I8U3RyaW5nPiBlbnRyaWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4
IDFhNDhhMTkzZjYzNjY0ZTdjOTJlYWY4OTE5NTMwNzgwMDJjZDY4ZWQuLmI3NTZmNmFmMjUyNjNj
ZTdiZDM2ZjhiOThmNGNkZjgzMDNhNmNkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dp
bi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdp
bi5jcHAKQEAgLTE0MywzMCArMTQzLDYgQEAgc3RhdGljIFN0cmluZyBnZXRGaW5hbFBhdGhOYW1l
KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1
ZmZlcikpOwogfQogCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCi17Ci0gICAgVmVjdG9yPFVDaGFyPiBi
dWZmZXIoTUFYX1BBVEgpOwotICAgIGlmIChwYXRoLmxlbmd0aCgpICsgMSA+IGJ1ZmZlci5zaXpl
KCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIFN0cmluZ1ZpZXcocGF0aCkuZ2V0
Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyLmRhdGEoKSk7Ci0gICAgYnVmZmVyW3BhdGgu
bGVuZ3RoKCldID0gJ1wwJzsKLQotICAgIGlmICghUGF0aEFwcGVuZFcod2NoYXJGcm9tKGJ1ZmZl
ci5kYXRhKCkpLCBjb21wb25lbnQud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCkpKQotICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBidWZmZXIuc2hyaW5rKHdjc2xlbih3Y2hhckZyb20oYnVm
ZmVyLmRhdGEoKSkpKTsKLSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikp
OwotfQotCi1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgs
IGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKLXsKLSAgICBTdHJpbmcgcmVz
dWx0ID0gcGF0aC50b1N0cmluZygpOwotICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9u
ZW50cykKLSAgICAgICAgcmVzdWx0ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlc3VsdCwg
Y29tcG9uZW50LnRvU3RyaW5nKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KICNpZiAhVVNF
KENGKQogCiBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBh
dGgpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
NmY1NDQ5MGRiNzhjNDQ1MDc4NTFhMDkyOTQxYzlkNWQ1OTU4YjZjZi4uZWRlM2FjODY3YjIxMWUx
NjFiMmRhYTJjNTVmNWRjY2MwMzRjMmM3NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA1LTA4ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUG9ydCBGaWxlc3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoKSAmIEZpbGVzeXN0ZW06OiBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnRzKCkgdG8gc3RkOjpmaWxlc3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1NTAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisKIDIwMjEtMDUtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBQb3J0IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZSgpICYgRmlsZXN5
c3RlbTo6ZGlyZWN0b3J5TmFtZSgpIHRvIHN0ZDo6ZmlsZXN5c3RlbQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA4NTRiZjQ0YTRmZTE2YzUwYzRj
MGQ2MjFiMjNmMjk2MTA2MmFmNmQwLi4wMmVjYmJhOGYwOTVmMWVlZjRlMTIzNGRiMDJkZmFkMDU5
Mjg1Yzc2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lz
dGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNw
cApAQCAtNzQ0LDQgKzc0NCw0MCBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGRpcmVjdG9yeU5h
bWUpCiAjZW5kaWYKIH0KIAorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQpCit7CisjaWYgT1MoVU5JWCkKKyAgICBFWFBFQ1RfU1RSRVEoIi92YXIiLCBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIi8iLCAidmFyIikudXRmOCgpLmRhdGEo
KSk7CisgICAgRVhQRUNUX1NUUkVRKCIvdmFyL3RtcCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudCgiL3Zhci8iLCAidG1wIikudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNU
X1NUUkVRKCIvdmFyL3RtcCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgi
L3ZhciIsICJ0bXAiKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1w
L2ZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCIvdmFyL3Rt
cCIsICJmaWxlLnR4dCIpLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiL3Zhci8i
LCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIi92YXIiLCAiIikudXRmOCgp
LmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVRKCIvdmFyLyIsIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudCgiL3Zhci8iLCAiIikudXRmOCgpLmRhdGEoKSk7CisjZW5kaWYKKyNp
ZiBPUyhXSU5ET1dTKQorICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZvbyIsIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiQzpcXCIsICJGb28iKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoIkM6XFxGb29cXEJhciIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudCgiQzpcXEZvbyIsICJCYXIiKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1Rf
U1RSRVEoIkM6XFxGb29cXEJhclxcRmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoIkM6XFxGb29cXEJhciIsICJGaWxlLnR4dCIpLnV0ZjgoKS5kYXRhKCkpOwor
I2VuZGlmCit9CisKK1RFU1RfRihGaWxlU3lzdGVtVGVzdCwgcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50cykKK3sKKyAgICBFWFBFQ1RfU1RSRVEodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLnV0ZjgoKS5k
YXRhKCksIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcEVtcHR5Rm9s
ZGVyUGF0aCgpLCB7IH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUShGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiZmls
ZS50eHQiKS51dGY4KCkuZGF0YSgpLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnRzKHRlbXBFbXB0eUZvbGRlclBhdGgoKSwgeyAiZmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkp
OworI2lmIE9TKFVOSVgpCisgICAgRVhQRUNUX1NUUkVRKCIvdmFyL3RtcC9maWxlLnR4dCIsIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoIi8iLCB7ICJ2YXIiLCAidG1wIiwg
ImZpbGUudHh0IiB9KS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIi92YXIvdG1w
L2ZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cygiL3ZhciIs
IHsgInRtcCIsICJmaWxlLnR4dCIgfSkudXRmOCgpLmRhdGEoKSk7CisgICAgRVhQRUNUX1NUUkVR
KCIvdmFyL3RtcC9maWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dHMoIi92YXIvIiwgeyAidG1wIiwgImZpbGUudHh0IiB9KS51dGY4KCkuZGF0YSgpKTsKKyAgICBF
WFBFQ1RfU1RSRVEoIi92YXIvdG1wL2ZpbGUudHh0IiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50cygiL3Zhci90bXAiLCB7ICJmaWxlLnR4dCIgfSkudXRmOCgpLmRhdGEoKSk7
CisjZW5kaWYKKyNpZiBPUyhXSU5ET1dTKQorICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZvb1xcQmFy
XFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoIkM6XFwi
LCB7ICJGb28iLCAiQmFyIiwgIkZpbGUudHh0IiB9KS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBF
Q1RfU1RSRVEoIkM6XFxGb29cXEJhclxcRmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnRzKCJDOlxcRm9vIiwgeyAiQmFyIiwgIkZpbGUudHh0IiB9KS51dGY4KCku
ZGF0YSgpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIkM6XFxGb29cXEJhclxcRmlsZS50eHQiLCBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKCJDOlxcRm9vXFwiLCB7ICJCYXIiLCAi
RmlsZS50eHQiIH0pLnV0ZjgoKS5kYXRhKCkpOworICAgIEVYUEVDVF9TVFJFUSgiQzpcXEZvb1xc
QmFyXFxGaWxlLnR4dCIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoIkM6
XFxGb29cXEJhciIsIHsgIkZpbGUudHh0IiB9KS51dGY4KCkuZGF0YSgpKTsKKyAgICBFWFBFQ1Rf
U1RSRVEoIkM6XFxGb29cXEJhclxcRmlsZS50eHQiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnRzKCJDOlxcRm9vXFxCYXJcXCIsIHsgIkZpbGUudHh0IiB9KS51dGY4KCkuZGF0
YSgpKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>
<flag name="commit-queue"
          id="448911"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>