<?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>187461</bug_id>
          
          <creation_ts>2018-07-09 02:15:03 -0700</creation_ts>
          <short_desc>Fetch using FormData with file doesn&apos;t go through Service Worker</short_desc>
          <delta_ts>2022-01-05 02:59:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</component>
          <version>Safari Technology Preview</version>
          <rep_platform>All</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="nyro">cedric</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>bugmail</cc>
    
    <cc>cdumez</cc>
    
    <cc>thiago.soares</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1440334</commentid>
    <comment_count>0</comment_count>
      <attachid>344569</attachid>
    <who name="nyro">cedric</who>
    <bug_when>2018-07-09 02:15:03 -0700</bug_when>
    <thetext>Created attachment 344569
Zip containing all 4 files described

When using a FormData with file to send content of a form using the fetch API, the request doesn&apos;t go through the associated Service Worker.

To show it, I setup the attached file :  

# index.html
Contains 3 forms with a simple debug div to show what&apos;s happening on devices

# test.js
Handle the submit of the form in order to:
1. prevent default it
2. Create a formData
3. If the form has the id &quot;removeFile&quot;, delete the file from the formData
4. Send data to service worker/server using the fetch API
5. Get a JSON response
6. Show the json response on the debug

# sw.js
A minimal service worker that only add a &quot;X-FROM-SW&quot; header to the request containing the timestamp

# up.php
A simple PHP script to return a JSON with the received &quot;X-FROM-SW&quot; or false if not found.


# Observed results
- Simple Form : everything ok as expected and the result contains the X-FROM-SW
- File form : doesn&apos;t pass through the service worker (no log in the fetch event), so there is no header added
- Remove file form : treated like the simple form, so the result contains the X-FROM-SW

I setup these file on the following URL:
https://bugs.nyro.com/safariFileUpload/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440404</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-09 09:14:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/41975544&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442284</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-15 07:13:04 -0700</bug_when>
    <thetext>Thanks for the report.
This is a known limitation of the service worker implementation at the moment in FetchBody::fromFormData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442285</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-15 07:14:41 -0700</bug_when>
    <thetext>A potential workaround is to use blobs if possible although there might be limitations there as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444688</commentid>
    <comment_count>4</comment_count>
    <who name="nyro">cedric</who>
    <bug_when>2018-07-24 08:31:51 -0700</bug_when>
    <thetext>Youenn, following your recommandation, I ended up with the following:

#####################
formData.delete(&apos;file&apos;);

// get it as blob adn readd it as regular post field
// NB: File has to be recreated on server side using _files[file][name] and _files[file][data] to work as it was a regular file upload
var file = form.querySelector(&apos;input[type=&quot;file&quot;]&apos;).files[0];

formData.append(&apos;_files[file][name]&apos;, file.name);

var reader = new FileReader();
reader.onload = function (e) {
    formData.append(&apos;_files[file][data]&apos;, e.target.result);

    doFetch(id, form, formData);
};
reader.readAsDataURL(file);
#####################

Which works, the request goes through the service Worker.

On server side, it becomes a little tricky regarding the language choosen, but I mentionned all the necessearry regarding PHP, the one I&apos;m using.

I didn&apos;t implemented it yet on my production PWA, but I&apos;ll do it soon and come back here if I found out more gotcha.

In the mean time, I hope this will be fixed soon on Safari in order to remove all this code ;)

All the updated code and exemple have been updated on my demo page:
https://bugs.nyro.com/safariFileUpload/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675065</commentid>
    <comment_count>5</comment_count>
    <who name="nyro">cedric</who>
    <bug_when>2020-07-25 23:11:03 -0700</bug_when>
    <thetext>Hello,
Is there any news about that?
It&apos;s been 2 years now...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780221</commentid>
    <comment_count>6</comment_count>
    <who name="nyro">cedric</who>
    <bug_when>2021-07-28 14:55:30 -0700</bug_when>
    <thetext>Hello,
Is there any news about that?
It&apos;s been 3 years now...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827740</commentid>
    <comment_count>7</comment_count>
      <attachid>448239</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-03 08:09:24 -0800</bug_when>
    <thetext>Created attachment 448239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827742</commentid>
    <comment_count>8</comment_count>
      <attachid>448241</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-03 08:14:03 -0800</bug_when>
    <thetext>Created attachment 448241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827795</commentid>
    <comment_count>9</comment_count>
      <attachid>448249</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-03 11:08:55 -0800</bug_when>
    <thetext>Created attachment 448249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827898</commentid>
    <comment_count>10</comment_count>
      <attachid>448282</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-04 04:20:49 -0800</bug_when>
    <thetext>Created attachment 448282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827963</commentid>
    <comment_count>11</comment_count>
      <attachid>448282</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-04 09:14:21 -0800</bug_when>
    <thetext>Comment on attachment 448282
Patch

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

r=me with nits.

&gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:278
&gt; +        if (!value.size()) {

could probably use `value.empty()`

&gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:284
&gt; +        builder.append(value.data(), value.size());

A bit disappointing that FragmentedSharedBuffer doesn&apos;t have an append() overload that takes a Span&lt;&gt;. We should probably add one.

&gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:306
&gt; +        if (!value.size()) {

could be `value.empty()`

&gt; Source/WebCore/Modules/fetch/FormDataConsumer.cpp:59
&gt; +    WTF::switchOn(m_formData-&gt;elements()[m_currentElementIndex++].data, [this](const Vector&lt;uint8_t&gt;&amp; content) {

May not need WTF::

&gt; Source/WebCore/Modules/fetch/FormDataConsumer.cpp:70
&gt; +    consume(Span&lt;const uint8_t&gt; { content.data(), content.size() });

Can&apos;t you simply call `content.span()` ?

&gt; Source/WebCore/Modules/fetch/FormDataConsumer.cpp:121
&gt; +    m_callback(Span&lt;const uint8_t&gt; { content.data(), content.size() });

Source and destination are both a Span&lt;const uint8_t&gt;, why aren&apos;t we passing content directly instead of reconstructing a span? Am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828210</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-05 01:07:49 -0800</bug_when>
    <thetext>*** Bug 183695 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828214</commentid>
    <comment_count>13</comment_count>
      <attachid>448367</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-05 01:30:09 -0800</bug_when>
    <thetext>Created attachment 448367
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828231</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-05 02:47:38 -0800</bug_when>
    <thetext>Committed r287612 (245739@main): &lt;https://commits.webkit.org/245739@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448367.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828238</commentid>
    <comment_count>15</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-05 02:59:28 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:278
&gt; &gt; +        if (!value.size()) {
&gt; 
&gt; could probably use `value.empty()`

OK

&gt; &gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:284
&gt; &gt; +        builder.append(value.data(), value.size());
&gt; 
&gt; A bit disappointing that FragmentedSharedBuffer doesn&apos;t have an append()
&gt; overload that takes a Span&lt;&gt;. We should probably add one.

Added it.

&gt; &gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:306
&gt; &gt; +        if (!value.size()) {
&gt; 
&gt; could be `value.empty()`

OK

&gt; &gt; Source/WebCore/Modules/fetch/FormDataConsumer.cpp:59
&gt; &gt; +    WTF::switchOn(m_formData-&gt;elements()[m_currentElementIndex++].data, [this](const Vector&lt;uint8_t&gt;&amp; content) {
&gt; 
&gt; May not need WTF::

Removed.

&gt; &gt; Source/WebCore/Modules/fetch/FormDataConsumer.cpp:70
&gt; &gt; +    consume(Span&lt;const uint8_t&gt; { content.data(), content.size() });
&gt; 
&gt; Can&apos;t you simply call `content.span()` ?

Didn&apos;t know about this one, used it.

&gt; &gt; Source/WebCore/Modules/fetch/FormDataConsumer.cpp:121
&gt; &gt; +    m_callback(Span&lt;const uint8_t&gt; { content.data(), content.size() });
&gt; 
&gt; Source and destination are both a Span&lt;const uint8_t&gt;, why aren&apos;t we passing
&gt; content directly instead of reconstructing a span? Am I missing something?

I was missing a WTFMove.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>344569</attachid>
            <date>2018-07-09 02:15:03 -0700</date>
            <delta_ts>2018-07-09 02:15:03 -0700</delta_ts>
            <desc>Zip containing all 4 files described</desc>
            <filename>safariFileUpload.zip</filename>
            <type>application/zip</type>
            <size>5025</size>
            <attacher name="nyro">cedric</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAMu+6EwAAAAAAAAAAAAAAAARABAAc2FmYXJpRmlsZVVwbG9hZC9VWAwAbidDWw6I
Qlv1ARQAUEsDBBQACAAIAKBU6UwAAAAAAAAAAAAAAAAbABAAc2FmYXJpRmlsZVVwbG9hZC9pbmRl
eC5odG1sVVgMAEEnQ1urHkNb9QEUAOVVTW/UMBC991cMvvSS3VB64ZDkAGglkKASCypXbzxpDI4d
2ZNN++8Z21m6LNsDEoIDufgj8/HeG49dPVOupYcRoafBNBfVYUCpmgvgrxqQJLS99AGpFhN1q5cC
yuUnaTLYfMJAMI3GSQXb26rMu0fuVg5Yi73GeXSeBLTOEloON2tFfa1wr1tcpUUB2mrS0qxCKw3W
V+vnKV1VZkzVzqmHJfaYx/i9QuNm0AFeQOf8sK52/gAyfhvtGaKzzFMGHs0DSAh6GA0C4T0hZx0n
OnXbIiNVP/wkdNo8YXpj2dpHHnDr/Df0BZtHyOjhy2rz8eb9ansbAUqlUMGsqQfqEabABqQHllAO
4xNR2SRohcUj6Hfbmw8xmkeavOWAUVLJ0tk7Dss/cuoCnIdOmsCoO7COWJ3JqjNpXvfeDQiS6bJY
2Ln7IuHreHsVkrSt8x5bitpFDuewyk56zSWkywPRpLWzKdaR4Ger9Da6RZAzKxiZsN/ndKw4UHQo
YO7RMxcC5TDYS4I7B+ROpIcOqe0B93zGTnOcLrlIzLYWxAVYfw2iWSap1FUpm6ccwpzM03DOuCr5
eOZZf91sM/VIgk/y9WISlyBb0s5ya43rsR8FcMf0TtVidIFbRfMs6yaOQKQjCLFxa9FrFtqKpckO
q700Ey+vxE/gj/1iGQ5eeb745EX5C/PdRBQrmbzDtBs0iWabxqrMPw/UI7Fl3j8qwrw3kXE6/Pm+
+D0x0LY5+zAZ0qP0lDKtlCSZpYqF+OdCHTsnQItznv8dYYt8V83aGNgh3xOD28cu4naGaPuGJfvT
4uckm/+iBHmh9D4xV7ib7kRTlbyx2IXW65Eg+PbocqnKvB3fs/yQcQ3ik/sdUEsHCEl7hOqKAgAA
iQcAAFBLAwQKAAAAAADLWelMAAAAAAAAAAAAAAAACQAQAF9fTUFDT1NYL1VYDABuJ0NbbidDW/UB
FABQSwMECgAAAAAAy1npTAAAAAAAAAAAAAAAABoAEABfX01BQ09TWC9zYWZhcmlGaWxlVXBsb2Fk
L1VYDABuJ0NbbidDW/UBFABQSwMEFAAIAAgAoFTpTAAAAAAAAAAAAAAAACYAEABfX01BQ09TWC9z
YWZhcmlGaWxlVXBsb2FkLy5faW5kZXguaHRtbFVYDABBJ0Nbqx5DW/UBFABjYBVjZ2BiYPBNTFbw
D1aIUIACkBgDJxAbAXEdEIP4GxiIAo4hIUFQJkjHAiAWQFPCiBCXSs7P1UssKMhJ1ctJLC4pLU5N
SUksSVUOCAYprJF1jgbR3C9FZUA0AFBLBwiWMwnVXAAAALAAAABQSwMEFAAIAAgAw1TpTAAAAAAA
AAAAAAAAABgAEABzYWZhcmlGaWxlVXBsb2FkL3Rlc3QuanNVWAwA8x5DW+0eQ1v1ARQAjVRNj9Mw
EL3vrzAnO6LrH7BVkVi6K4EQHBaJsxtP0oHUXk0mKRXqf2ectqkTioQvsT3vvRnPR7BSRrdAPZbw
PdJPIK0wqOB6rB1HKtTvOyVrj8HHvXXeP/UQ+DO2DAHI6CY6rxfKFGr17oxNaxSwE3FLUCeqENu9
/dHqwvIWgjGne3KMMcyk0kIJ882/NMsYmGLTwBhtvgi4o7Cc3B/vxuNRYgeiGz5Fto0N2CbWRr/k
HlUeraocNuAflGQhCV09Hc/79B02vSPlYdPVaqV8LLudZNLWwE8NpO3j4aM3egDoC6XqQjl4kcyv
k8Uw/OL8nYMo9rlkSeAYzqqiiL3OwpKjxSDF+yZKQkuCy2tCBv8CkBzzI1SRwAhjcb6vkFr+sMXG
Xx53Yo6+N9EfbrRJ2212yClF00SDfSVI0DVUrmvYFFko6WkSwE6CBMuOJFXLiRG9mBIiZfE9M+Gm
YzAaff7gi8zasRN8gL16Ph9Nus9dpkZLqquV0gS72MOzVFfPG+siZz00kDxWAyqr/VVyrJyugMtt
4ir9Fn3udrCYGy9xQ/V1sZgFsAPeRmm6G5STSShTQvQgPVpGavXUIt3ipQDomlYArdvBfSSsMcxx
rtwmiRDvh+3MLCpIULIgKhnGuJ/ZU2M8jInLhmTcnn4FBO2rTB78PZCnSVYXgPw+YjCTeftvqbEm
n16+frEyyhhqrA4joyiWt/F61MzKeA3gOvDHP1BLBwhY3WX4IwIAAFoFAABQSwMEFAAIAAgAw1Tp
TAAAAAAAAAAAAAAAACMAEABfX01BQ09TWC9zYWZhcmlGaWxlVXBsb2FkLy5fdGVzdC5qc1VYDADz
HkNb7R5DW/UBFABjYBVjZ2BiYPBNTFbwD1aIUIACkBgDJxAbAXEdEIP4GxiIAo4hIUFQJkjHAiAW
QFPCiBCXSs7P1UssKMhJ1ctJLC4pLU5NSUksSVUOCAYpnC3rHA2inVl1WEE0AFBLBwg9HbE9XAAA
ALAAAABQSwMEFAAIAAgAoVnpTAAAAAAAAAAAAAAAABcAEABzYWZhcmlGaWxlVXBsb2FkL3VwLnBo
cFVYDAAfJ0NbHidDW/UBFACzsS/IKODiykhNTEkt0lB3zs8rSc0r0S2pLEi1UkgsKMjJTE4syczP
088qzs9T17TmSk3OyFcAceJT85LzU1I1orkUgEA9rSg/V7e4XF3B1k5BJT7YNSjMNSha3SMkJCA+
It4tyN83PjhcPVbB3l4hLTGnOFWHKxZoGABQSwcIfH1oyXsAAAB+AAAAUEsDBBQACAAIAKFZ6UwA
AAAAAAAAAAAAAAAiABAAX19NQUNPU1gvc2FmYXJpRmlsZVVwbG9hZC8uX3VwLnBocFVYDAAfJ0Nb
HidDW/UBFABjYBVjZ2BiYPBNTFbwD1aIUIACkBgDJxAbAXEdEIP4GxiIAo4hIUFQJkjHAiAWQFPC
iBCXSs7P1UssKMhJ1ctJLC4pLU5NSUksSVUOCAYpnCvrHA2i9bsZeUE0AFBLBwirDQ+6XAAAALAA
AABQSwMEFAAIAAgAugvpTAAAAAAAAAAAAAAAABYAEABzYWZhcmlGaWxlVXBsb2FkL3N3LmpzVVgM
AIMdQ1twnkJb9QEUAK1XbW/bNhD+3l9x6z5YLhwF+5rMRbO0Kzp0SxA3yIAgGGjpbHOhSY2k7XqG
/vuOFClTfoM/TAgCi7rXh8fnjoWSxoJBzZng/7KxwHutKtSWo4EhPL8BenpztDNV9gbNm8YJao16
9/1eCV6s4+pclRh/FxpLlJZ8mHaJFTPcWii5xsLGdy4tTjW3rbFXxIoCXDYaL9f0r/m7fPfOSbyD
GygEMwasgjl7ReAWkBmO2q3E/BCYLKHEi+2Cxn8WaKwBo8DOcN1YK5iEMYKxikIDLuGLLPE7lh9/
yb1AI/Wh0nzJLPq3S/rfhDAiLYfkQ2MaNj6HEKnTu1VySRAbYBBl1Phvyt/FyqASjDzGlRmz23D0
orALCilaKoSSFKDS8Nvo7o8LEuByyiccyzyIRMkPFdNsDpvgsI6Jt981kmUJG9r/OTf4804W7+s9
g9vkQ/pAETLLC2BmLQuYkKWgnQVv/QAGQeULLyx/kbRdQ9jMkJWozRVs6jrssYfuEkbooEAYq3IN
fAKVRkMVFbJ0K9FF3hQr/DAcQu/zp2+9rU9v6dGQFaHGvi4WVaW0BankhcXvbTzODR2AQarnKsfD
DROuSYS2qGBky0VVMCGo0ozlQoBELI1fjhG1ZpJ0c5/JENiK8dZv7h1k/dwFmPWvg2LdgSJUj/cQ
APNQU4RU9eg3zRdSrKHof0JlkjW4P7/iegBLJhb4AmrS+g/2coJWEwBZPwUvjT4IOjsvlIW3dDjc
m7IEggcUxas7TNOiXbWUsx+p++YiPExRaXhJDTw7rRdfAgs6uBNOhyQV7eQShIfQUb5uhev9tMJZ
kbjaPezZZqHFVYsnvQxSX3XY09ZWwgo3RYGVJ4XHh6++3B6S01HywnIlmV53KGFh6PjTZhPD0lkE
Fo250LrckhNFWj6nBTavgJMfQZQ3RUkVY8kIvTjEF3NXT2Q9WvLsjrJAWM1Q+qoL1LRiJvg9yjZ3
XrIG//rT7teGruJXB9Zp/TxBMkq6Z4R4BTNrK3N1eTlBW8xyU2GRrwio1TRXenr5Y1DliWp0Ihfz
MerWyRakb5Sre0sPc5r1IA2CyowtBDmYuv3wrLCgrihtY4KqUyrqtBTXEX4+QKf+CDjOV9oXVqeW
Bsl2DuEj6eZSrbJ+va10O+PGwUrf6f91utpl3uSty7tv75uw3qa6f6WO29/HK/sz2oYQQ46QGAhn
f72HR+xHYXfOgWuKdhtOtoUhmNqJ/Xi8t6ppz06BeJ6kXfknvfku5dX9kEPVnhOyVY3wfrRbtvKM
Erdy25PaRMLH9n0rkmzr1d62R7H6FBDyKBIPnea2D0IcNM5DIdLnHgwJkWUtBnu5nKDVW39WjSfU
xqaj2JIGytDOqbm42ozZHU1oh+nPSiz085NTTygmmhz5VGab+mh2BzvwWQaicGvI9co9ITeRHOv3
YVo5qJMbmvvx4LhyqlH+v/XdVnNSCvWbNwbFJGdl+WlJTPyVG+v6Xdbzmy1EbwCThfSNNUMnEdMn
5vvm+crPwk3HNa+8eqJhjRiedjSWUhzN2QQFTaZT6W4MTQ153x2tJjTvKXdz3yPdiUQWIg+DN8Fr
lFhiRsSPff8t6LniUQJzoaZZb/QEIQkseyTg8j6WLaMMXWmeSvfOHWxnlE5HEC8H7kLD5358KwQn
BX+/cunSJcRfl4DRj+byRunP6JBRPDBeO1OOJpaKl9RYp65/CsXKgwD4sIOD3LukwfN0Sr7LUz4x
j+H7kErnhD361ueqj0aqRjRPRjNnfxdYLzRIDATwk+mSFmmm4FNqBEOaMIUqmIM0rO2OpF2v4XLi
9Hr3d6Pu7eTQJjdC1x2ZaNJUSpZP3M6yzmf37Jy2PL2LdSMKFNXfM+GenPZYZmbnQtuCfejZET5E
Q8+9Py9+fbj7/WL01HvpzC5hQw49gUp2zSet4/qgbn0qM31ORsGzL7n2InuWs0SqDqxERf0fUEsH
CBv6iIS6BQAAdBEAAFBLAwQUAAgACAC6C+lMAAAAAAAAAAAAAAAAIQAQAF9fTUFDT1NYL3NhZmFy
aUZpbGVVcGxvYWQvLl9zdy5qc1VYDACDHUNbcJ5CW/UBFABjYBVjZ2BiYPBNTFbwD1aIUIACkBgD
JxAbAXEdEIP4GxiIAo4hIUFQJkjHAiAWQFPCiBCXSs7P1UssKMhJ1ctJLC4pLU5NSUksSVUOCAYp
nCHrHA2i/7D+B7mEAQBQSwcI02cEnF0AAACwAAAAUEsBAhUDCgAAAAAAy77oTAAAAAAAAAAAAAAA
ABEADAAAAAAAAAAAQO1BAAAAAHNhZmFyaUZpbGVVcGxvYWQvVVgIAG4nQ1sOiEJbUEsBAhUDFAAI
AAgAoFTpTEl7hOqKAgAAiQcAABsADAAAAAAAAAAAQKSBPwAAAHNhZmFyaUZpbGVVcGxvYWQvaW5k
ZXguaHRtbFVYCABBJ0Nbqx5DW1BLAQIVAwoAAAAAAMtZ6UwAAAAAAAAAAAAAAAAJAAwAAAAAAAAA
AED9QSIDAABfX01BQ09TWC9VWAgAbidDW24nQ1tQSwECFQMKAAAAAADLWelMAAAAAAAAAAAAAAAA
GgAMAAAAAAAAAABA/UFZAwAAX19NQUNPU1gvc2FmYXJpRmlsZVVwbG9hZC9VWAgAbidDW24nQ1tQ
SwECFQMUAAgACACgVOlMljMJ1VwAAACwAAAAJgAMAAAAAAAAAABApIGhAwAAX19NQUNPU1gvc2Fm
YXJpRmlsZVVwbG9hZC8uX2luZGV4Lmh0bWxVWAgAQSdDW6seQ1tQSwECFQMUAAgACADDVOlMWN1l
+CMCAABaBQAAGAAMAAAAAAAAAABApIFhBAAAc2FmYXJpRmlsZVVwbG9hZC90ZXN0LmpzVVgIAPMe
Q1vtHkNbUEsBAhUDFAAIAAgAw1TpTD0dsT1cAAAAsAAAACMADAAAAAAAAAAAQKSB2gYAAF9fTUFD
T1NYL3NhZmFyaUZpbGVVcGxvYWQvLl90ZXN0LmpzVVgIAPMeQ1vtHkNbUEsBAhUDFAAIAAgAoVnp
THx9aMl7AAAAfgAAABcADAAAAAAAAAAAQKSBlwcAAHNhZmFyaUZpbGVVcGxvYWQvdXAucGhwVVgI
AB8nQ1seJ0NbUEsBAhUDFAAIAAgAoVnpTKsND7pcAAAAsAAAACIADAAAAAAAAAAAQKSBZwgAAF9f
TUFDT1NYL3NhZmFyaUZpbGVVcGxvYWQvLl91cC5waHBVWAgAHydDWx4nQ1tQSwECFQMUAAgACAC6
C+lMG/qIhLoFAAB0EQAAFgAMAAAAAAAAAABApIEjCQAAc2FmYXJpRmlsZVVwbG9hZC9zdy5qc1VY
CACDHUNbcJ5CW1BLAQIVAxQACAAIALoL6UzTZwScXQAAALAAAAAhAAwAAAAAAAAAAECkgTEPAABf
X01BQ09TWC9zYWZhcmlGaWxlVXBsb2FkLy5fc3cuanNVWAgAgx1DW3CeQltQSwUGAAAAAAsACwCe
AwAA7Q8AAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448239</attachid>
            <date>2022-01-03 08:09:24 -0800</date>
            <delta_ts>2022-01-03 08:13:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187461-20220103170922.patch</filename>
            <type>text/plain</type>
            <size>43895</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzllMDE1ZDIxZjIyZDgy
NzllMWVlYWJlODQzYjBmMTcyYWRiZTlmYi4uMzkxODkwM2E0NTM3ODUwMTRkNWI3NjYwZTE5NDlm
NDY2YzBiODI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIyLTAxLTAzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBGZXRjaCB1c2luZyBGb3Jt
RGF0YSB3aXRoIGZpbGUgZG9lc24ndCBnbyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc0NjEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQxOTc1NTQ0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZWFkaW5nIGZvcm1EYXRhIGJhc2Vk
IGJvZGllcyB0aHJvdWdoIHN0cmVhbXMgb3IgcmVndWxhciBtZXRob2RzIGxpa2UgdGV4dC4KKyAg
ICAgICAgRm9yIHRoYXQgcHVycG9zZSwgd2UgYWRkIEZvcm1EYXRhQ29uc3VtZXIgd2hpY2ggYWxs
b3dzIHNlcmlhbGl6aW5nIGZvcm0gZGF0YXMgdGhhdCBtYXkgY29udGFpbiBmaWxlcyBvciBibG9i
cy4KKyAgICAgICAgQWRkIHRoZSBhYmlsaXR5IHRvIGxvYWQgYmxvYnMgZnJvbSBCbG9iTG9hZGVy
IHVzaW5nIHRoZSBpbnRlcm5hbCBVUkwgKHN0b3JlZCBpbiBGb3JtRGF0YSkgaW4gbGlldSBvZiBw
YXNzaW5nIGEgYmxvYiBvYmplY3QuCisgICAgICAgIEVuYWJsZSBmZXRjaCBldmVudHMgZm9yIGZv
cm0gZGF0YSBiYXNlZCBmZXRjaCBldmVudHMuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRm9ybURhdGFDb25zdW1lci5jcHA6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRm9ybURhdGFDb25zdW1lci5oOiBBZGRlZC4KKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogZmlsZWFwaS9CbG9iTG9hZGVyLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaDoK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3Bw
OgorCiAyMDIyLTAxLTAyICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIEFjY2VzcyBrZXkgc2hvdWxkIHdvcmsgb24gZm9jdXNhYmxlIGVsZW1lbnQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggYjhmMmVj
MzczZDg3M2NjOWM4YWNiM2M2ZWM4NDVmNmFiMDAwOWFhNi4uNzQxN2FlMGMxMjAzZWNmYzQ4NDkx
ZmUxMjQ4MDk2ZWI2NWVmYzJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcApAQCAtOTQsOCArOTQsNyBAQCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4gRmV0
Y2hCb2R5Ojpmcm9tRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dAogICAg
ICAgICByZXR1cm4gRmV0Y2hCb2R5IHsgV1RGTW92ZShibG9iKSB9OwogICAgIH0KIAotICAgIC8v
IEZJWE1FOiBTdXBwb3J0IGZvcm0gZGF0YSBib2RpZXMuCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICByZXR1cm4gRmV0Y2hCb2R5IHsgUmVmIHsgZm9ybURhdGEgfSB9OwogfQogCiB2b2lk
IEZldGNoQm9keTo6YXJyYXlCdWZmZXIoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0xOTYsNyArMTk1LDcgQEAgdm9pZCBGZXRjaEJvZHk6
OmNvbnN1bWVBc1N0cmVhbShGZXRjaEJvZHlPd25lciYgb3duZXIsIEZldGNoQm9keVNvdXJjZSYg
c291cmNlKQogICAgICAgICBvd25lci5sb2FkQmxvYihibG9iQm9keSgpLCBudWxscHRyKTsKICAg
ICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVsc2UgaWYgKGlzRm9ybURhdGEoKSkKLSAg
ICAgICAgc291cmNlLmVycm9yKEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGlt
cGxlbWVudGVkIl9zIH0pOworICAgICAgICBtX2NvbnN1bWVyLmNvbnN1bWVGb3JtRGF0YUFzU3Ry
ZWFtKGZvcm1EYXRhQm9keSgpLCBzb3VyY2UsIG93bmVyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAgICAgZWxzZSBpZiAobV9jb25zdW1lci5oYXNEYXRhKCkpCiAgICAgICAgIGNsb3NlU3Ry
ZWFtID0gc291cmNlLmVucXVldWUobV9jb25zdW1lci50YWtlQXNBcnJheUJ1ZmZlcigpKTsKICAg
ICBlbHNlCkBAIC0yMzQsMTQgKzIzMyw4IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihG
ZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzCiAKIHZv
aWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVy
ID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVy
LnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBz
aGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXpl
KCkpOwotICAgICAgICBtX2RhdGEgPSBudWxscHRyOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8v
IEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3
ZSBkbyBvdGhlciBibG9icy4KLSAgICAgICAgLy8gVGhhdCB3aWxsIGZpeCB0aGUgbGFzdCBXUFQg
dGVzdCBpbiByZXNwb25zZS1jb25zdW1lLmh0bWwuCi0gICAgICAgIHByb21pc2UtPnJlamVjdChO
b3RTdXBwb3J0ZWRFcnJvcik7Ci0gICAgfQorICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhGb3Jt
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBmb3JtRGF0YUJvZHko
KSwgb3duZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX2RhdGEgPSBudWxscHRy
OwogfQogCiB2b2lkIEZldGNoQm9keTo6bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4
Y2VwdGlvbikKQEAgLTMxMSw3ICszMDQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJv
ZHk6OnRha2UoKQogCiBGZXRjaEJvZHkgRmV0Y2hCb2R5OjpjbG9uZSgpCiB7Ci0gICAgRmV0Y2hC
b2R5IGNsb25lKG1fY29uc3VtZXIpOworICAgIEZldGNoQm9keSBjbG9uZShtX2NvbnN1bWVyLmNs
b25lKCkpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKICAgICAgICAgY2xvbmUubV9kYXRh
ID0gYXJyYXlCdWZmZXJCb2R5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZjMDA4OGUxMmU0Li5hNGFm
MmFhZDU4NTM1Njc4M2JmNzI3MTMxM2RjNjA0MGVkNzhmNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBGZXRjaEJvZHkoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIDogbV9kYXRhKFdURk1vdmUo
ZGF0YSkpIHsgfQogICAgIGV4cGxpY2l0IEZldGNoQm9keShTdHJpbmcmJiBkYXRhKSA6IG1fZGF0
YShXVEZNb3ZlKGRhdGEpKSB7IH0KICAgICBleHBsaWNpdCBGZXRjaEJvZHkoUmVmPGNvbnN0IFVS
TFNlYXJjaFBhcmFtcz4mJiBkYXRhKSA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICBl
eHBsaWNpdCBGZXRjaEJvZHkoY29uc3QgRmV0Y2hCb2R5Q29uc3VtZXImIGNvbnN1bWVyKSA6IG1f
Y29uc3VtZXIoY29uc3VtZXIpIHsgfQorICAgIGV4cGxpY2l0IEZldGNoQm9keShGZXRjaEJvZHlD
b25zdW1lciYmIGNvbnN1bWVyKSA6IG1fY29uc3VtZXIoV1RGTW92ZShjb25zdW1lcikpIHsgfQog
ICAgIGV4cGxpY2l0IEZldGNoQm9keShSZWY8UmVhZGFibGVTdHJlYW0+JiYgc3RyZWFtKSA6IG1f
cmVhZGFibGVTdHJlYW0oV1RGTW92ZShzdHJlYW0pKSB7IH0KIAogICAgIHZvaWQgY29uc3VtZShG
ZXRjaEJvZHlPd25lciYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBjMjMxZjIw
N2RhMjVjZDJhMTU4NjBkMjhkYjNjZTE3ZTg1NzU3N2Q1Li45ZmZkNDliNDdjZWE2NDZiODg2OGUx
OTA1NmEzYTFkZWY4NjI5MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZl
dGNoQm9keUNvbnN1bWVyLmgiCiAKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgorI2luY2x1ZGUg
IkZvcm1EYXRhQ29uc3VtZXIuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyRmllbGQuaCIKICNpbmNs
dWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgpAQCAtMjQzLDYgKzI0NCw4
IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25zCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVh
bigpCiB7CiAgICAgbV9idWZmZXIucmVzZXQoKTsKKyAgICBpZiAobV9mb3JtRGF0YUNvbnN1bWVy
KQorICAgICAgICBtX2Zvcm1EYXRhQ29uc3VtZXItPmNhbmNlbCgpOwogICAgIHJlc2V0Q29uc3Vt
ZVByb21pc2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxs
YmFjaygpOwpAQCAtMjU1LDYgKzI1OCw2MSBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNv
bHZlV2l0aERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdAogICAg
IHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgbV90eXBlLCBjb250ZW50
VHlwZSwgZGF0YSwgbGVuZ3RoKTsKIH0KIAordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2
ZVdpdGhGb3JtRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIGNvbnN0IEZvcm1EYXRhJiBmb3JtRGF0YSwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0
YS5hc1NoYXJlZEJ1ZmZlcigpKSB7CisgICAgICAgIHJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCBjb250ZW50VHlwZSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mb3JtRGF0YUNvbnN1bWVy
ID0gbWFrZVVuaXF1ZTxGb3JtRGF0YUNvbnN1bWVyPihmb3JtRGF0YSwgKmNvbnRleHQsIFt0aGlz
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgY29udGVudFR5cGUsIGJ1aWxkZXIgPSBTaGFy
ZWRCdWZmZXJCdWlsZGVyIHsgfV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChy
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGF1dG8mIHZhbHVlID0gcmVzdWx0LnJldHVyblZhbHVlKCk7CisgICAgICAg
IGlmICghdmFsdWUuc2l6ZSgpKSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIu
dGFrZUFzQ29udGlndW91cygpOworICAgICAgICAgICAgcmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUo
cHJvbWlzZSksIGNvbnRlbnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
dmFsdWUuZGF0YSgpLCB2YWx1ZS5zaXplKCkpOworICAgIH0pOworfQorCit2b2lkIEZldGNoQm9k
eUNvbnN1bWVyOjpjb25zdW1lRm9ybURhdGFBc1N0cmVhbShjb25zdCBGb3JtRGF0YSYgZm9ybURh
dGEsIEZldGNoQm9keVNvdXJjZSYgc291cmNlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQoreworICAgIGlmIChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZvcm1EYXRhLmFzU2hhcmVkQnVm
ZmVyKCkpIHsKKyAgICAgICAgaWYgKHNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVh
dGUoc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+
c2l6ZSgpKSkpCisgICAgICAgICAgICBzb3VyY2UuY2xvc2UoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mb3Jt
RGF0YUNvbnN1bWVyID0gbWFrZVVuaXF1ZTxGb3JtRGF0YUNvbnN1bWVyPihmb3JtRGF0YSwgKmNv
bnRleHQsIFt0aGlzLCBzb3VyY2UgPSBSZWYgeyBzb3VyY2UgfV0oYXV0byYmIHJlc3VsdCkgewor
ICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBzb3VyY2Ut
PmVycm9yKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgYXV0byYgdmFsdWUgPSByZXN1bHQucmV0dXJuVmFsdWUoKTsK
KyAgICAgICAgaWYgKCF2YWx1ZS5zaXplKCkpIHsKKyAgICAgICAgICAgIHNvdXJjZS0+Y2xvc2Uo
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghc291cmNl
LT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUodmFsdWUuZGF0YSgpLCB2YWx1ZS5zaXpl
KCkpKSkKKyAgICAgICAgICAgIG1fZm9ybURhdGFDb25zdW1lci0+Y2FuY2VsKCk7CisgICAgfSk7
Cit9CisKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmV4dHJhY3QoUmVhZGFibGVTdHJlYW0mIHN0
cmVhbSwgUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OkNhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgQVNTRVJUKCFtX3NpbmspOwpAQCAtNDE2LDQgKzQ3NCwxMSBAQCB2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nU3VjY2VlZGVkKGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCiAgICAgfQogfQogCitGZXRjaEJvZHlDb25zdW1lciBGZXRjaEJvZHlDb25zdW1lcjo6Y2xv
bmUoKQoreworICAgIEZldGNoQm9keUNvbnN1bWVyIGNsb25lIHsgbV90eXBlIH07CisgICAgY2xv
bmUubV9jb250ZW50VHlwZSA9IG1fY29udGVudFR5cGU7CisgICAgcmV0dXJuIGNsb25lOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggODcxZDJjMDg2MzMxYTk4Mjk0YTE2NmE0YjQy
ZTMxODRlMDM3NzcyYi4uNzk4MDVkNGFhNTY0YmEwY2Y1YWUxM2ExMjQ0OTNkMDYwMzFhZGJiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
aApAQCAtMjksOCArMjksMTAgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmV0Y2hCb2R5
U291cmNlLmgiCisjaW5jbHVkZSAiRm9ybURhdGFDb25zdW1lci5oIgogI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1TaW5rLmgiCisjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogCkBAIC0zOSw2
ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2I7CiBjbGFzcyBET01Gb3Jt
RGF0YTsKIGNsYXNzIEZldGNoQm9keVNvdXJjZTsKK2NsYXNzIEZvcm1EYXRhOwogY2xhc3MgUmVh
ZGFibGVTdHJlYW07CiAKIGNsYXNzIEZldGNoQm9keUNvbnN1bWVyIHsKQEAgLTQ3LDYgKzUwLDgg
QEAgcHVibGljOgogCiAgICAgZXhwbGljaXQgRmV0Y2hCb2R5Q29uc3VtZXIoVHlwZSB0eXBlKSA6
IG1fdHlwZSh0eXBlKSB7IH0KIAorICAgIEZldGNoQm9keUNvbnN1bWVyIGNsb25lKCk7CisKICAg
ICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29s
IGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9CkBAIC02NSw2ICs3MCw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGV4dHJhY3QoUmVhZGFibGVTdHJlYW0mLCBSZWFkYWJsZVN0cmVh
bVRvU2hhcmVkQnVmZmVyU2luazo6Q2FsbGJhY2smJik7CiAgICAgdm9pZCByZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlYWRhYmxlU3Ry
ZWFtKik7CiAgICAgdm9pZCByZXNvbHZlV2l0aERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVk
KTsKKyAgICB2b2lkIHJlc29sdmVXaXRoRm9ybURhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgRm9ybURhdGEmLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7CisgICAgdm9pZCBjb25zdW1lRm9ybURhdGFBc1N0cmVhbShjb25zdCBGb3Jt
RGF0YSYsIEZldGNoQm9keVNvdXJjZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAg
IHZvaWQgbG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mKTsKICAgICB2b2lkIGxvYWRpbmdT
dWNjZWVkZWQoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CkBAIC04OCw2ICs5NSw3IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CiAgICAgYm9vbCBt
X2lzTG9hZGluZyB7IGZhbHNlIH07CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IG1fdXNl
ckdlc3R1cmVUb2tlbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybURhdGFDb25zdW1lcj4gbV9m
b3JtRGF0YUNvbnN1bWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAppbmRleCAwM2Y4OWI2MWNhNWY3
YzcxNzZiOWQ4OGNkMTM2NjBlODZiN2EyNTQ4Li41OTE4ODZlMmRmOTdjNjM5ZTY1OGViOWZlNzgx
MDU2Yzk3NmM5MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9h
ZGVyLmNwcApAQCAtMTE3LDYgKzExNyw4IEBAIHZvaWQgRmV0Y2hMb2FkZXI6OnN0YXJ0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxCiAgICAg
aWYgKG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPT0gUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5n
KQogICAgICAgICBvcHRpb25zLnJlZmVycmVyUG9saWN5ID0gY29udGV4dC5yZWZlcnJlclBvbGlj
eSgpOwogCisgICAgZnByaW50ZihzdGRlcnIsICJGZXRjaExvYWRlcjo6c3RhcnRcbiIpOworCiAg
ICAgbV9sb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoY29udGV4dCwgKnRoaXMsIFdU
Rk1vdmUoZmV0Y2hSZXF1ZXN0KSwgb3B0aW9ucywgV1RGTW92ZShyZWZlcnJlcikpOwogICAgIG1f
aXNTdGFydGVkID0gbV9sb2FkZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVxdWVzdC5jcHAKaW5kZXggYzc2ZjZjOGJmYWJiMWE2MGM5NjUyNzE0MTMwOGYxMzUy
OThkMjk4ZC4uZmY5MjkyYjM3OTdjM2E3ZjhjMzliNjBjMzA4MWJkZTdlY2NlN2UzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcApAQCAtMzI4LDYg
KzMyOCw4IEBAIFJlc291cmNlUmVxdWVzdCBGZXRjaFJlcXVlc3Q6OnJlc291cmNlUmVxdWVzdCgp
IGNvbnN0CiAKIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlcXVlc3Q+PiBGZXRjaFJlcXVlc3Q6OmNs
b25lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CisgICAgZnByaW50ZihzdGRl
cnIsICJGZXRjaFJlcXVlc3Q6OmNsb25lXG4iKTsKKwogICAgIGlmIChpc0Rpc3R1cmJlZE9yTG9j
a2VkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJCb2R5IGlzIGRp
c3R1cmJlZCBvciBsb2NrZWQiX3MgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggMGU3YjAwNWU4OWEzZDE3NDBiMWNmOWFkZmY4YjRm
MmYyZmM0M2M5OS4uMzYxZmJiZTFhMmNlMDBjZGM1ZTFhZTRlMjY0MWY3MjMzMGQ4ZTIzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0y
NDEsNiArMjQxLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjphZGRBYm9ydFN0ZXBzKFJlZjxBYm9y
dFNpZ25hbD4mJiBzaWduYWwpCiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6ZmV0Y2goU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0LCBOb3RpZmljYXRp
b25DYWxsYmFjayYmIHJlc3BvbnNlQ2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yKQog
eworICAgIGZwcmludGYoc3RkZXJyLCAiRmV0Y2hSZXNwb25zZTo6ZmV0Y2gxXG4iKTsKKwogICAg
IGlmIChyZXF1ZXN0LnNpZ25hbCgpLmFib3J0ZWQoKSkgewogICAgICAgICByZXNwb25zZUNhbGxi
YWNrKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJSZXF1ZXN0IHNpZ25hbCBpcyBhYm9ydGVkIl9z
IH0pOwogICAgICAgICAvLyBGSVhNRTogQ2FuY2VsIHJlcXVlc3QgYm9keSBpZiBpdCBpcyBhIHN0
cmVhbS4KQEAgLTI0OCw2ICsyNTAsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmZldGNoKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoUmVxdWVzdCYgcmVxdWVzdAogICAgIH0K
IAogICAgIGlmIChyZXF1ZXN0Lmhhc1JlYWRhYmxlU3RyZWFtQm9keSgpKSB7CisgICAgICAgIGZw
cmludGYoc3RkZXJyLCAiRmV0Y2hSZXNwb25zZTo6ZmV0Y2ggbm90IHN1cHBvcnRlZFxuIik7CiAg
ICAgICAgIHJlc3BvbnNlQ2FsbGJhY2soRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJS
ZWFkYWJsZVN0cmVhbSB1cGxvYWRpbmcgaXMgbm90IHN1cHBvcnRlZCJfcyB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTI2MSw2ICsyNjQsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmZl
dGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoUmVxdWVzdCYgcmVxdWVz
dAogCiAgICAgcmVzcG9uc2UtPmFkZEFib3J0U3RlcHMocmVxdWVzdC5zaWduYWwoKSk7CiAKKyAg
ICBmcHJpbnRmKHN0ZGVyciwgIkZldGNoUmVzcG9uc2U6OmZldGNoMlxuIik7CiAgICAgcmVzcG9u
c2UtPm1fYm9keUxvYWRlciA9IG1ha2VVbmlxdWU8Qm9keUxvYWRlcj4ocmVzcG9uc2UuZ2V0KCks
IFdURk1vdmUocmVzcG9uc2VDYWxsYmFjaykpOwogICAgIGlmICghcmVzcG9uc2UtPm1fYm9keUxv
YWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCwgaW5pdGlhdG9yKSkKICAgICAgICAgcmVzcG9u
c2UtPm1fYm9keUxvYWRlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0Zvcm1EYXRhQ29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9Gb3JtRGF0YUNvbnN1bWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTAyNGQ4NzhmYjc0OWRh
ZTA1NDE0MzI4ZGExYTU0ZjFhYzFmYzI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9Gb3JtRGF0YUNvbnN1bWVyLmNwcApAQCAtMCwwICsxLDEyMyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGb3JtRGF0YUNvbnN1
bWVyLmgiCisKKyNpbmNsdWRlICJCbG9iTG9hZGVyLmgiCisjaW5jbHVkZSAiRm9ybURhdGEuaCIK
KyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRm9y
bURhdGFDb25zdW1lcjo6Rm9ybURhdGFDb25zdW1lcihjb25zdCBGb3JtRGF0YSYgZm9ybURhdGEs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIENhbGxiYWNrJiYgY2FsbGJhY2spCisg
ICAgOiBtX2Zvcm1EYXRhKGZvcm1EYXRhLmNvcHkoKSkKKyAgICAsIG1fY29udGV4dCgmY29udGV4
dCkKKyAgICAsIG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCisgICAgLCBtX2ZpbGVRdWV1
ZShXb3JrUXVldWU6OmNyZWF0ZSgiRm9ybURhdGFDb25zdW1lciBmaWxlIHF1ZXVlIikpCit7Cisg
ICAgcmVhZCgpOworfQorCitGb3JtRGF0YUNvbnN1bWVyOjp+Rm9ybURhdGFDb25zdW1lcigpCit7
Cit9CisKK3ZvaWQgRm9ybURhdGFDb25zdW1lcjo6cmVhZCgpCit7CisgICAgQVNTRVJUKG1fY2Fs
bGJhY2spOworICAgIEFTU0VSVChtX2NvbnRleHQpOworCisgICAgaWYgKG1fY3VycmVudEVsZW1l
bnRJbmRleCA+PSBtX2Zvcm1EYXRhLT5lbGVtZW50cygpLnNpemUoKSkgeworICAgICAgICBtX2Nh
bGxiYWNrKFNwYW48Y29uc3QgdWludDhfdD4geyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFdURjo6c3dpdGNoT24obV9mb3JtRGF0YS0+ZWxlbWVudHMoKVttX2N1cnJlbnRFbGVt
ZW50SW5kZXgrK10uZGF0YSwKKyAgICBbdGhpc10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb250
ZW50KSB7CisgICAgICAgIHRoaXMtPmNvbnN1bWUoY29udGVudCk7CisgICAgfSwgW3RoaXNdKGNv
bnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgeworICAgICAg
ICBtX2ZpbGVRdWV1ZS0+ZGlzcGF0Y2goW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGlk
ZW50aWZpZXIgPSBtX2NvbnRleHQtPmlkZW50aWZpZXIoKSwgcGF0aCA9IGZpbGVEYXRhLmZpbGVu
YW1lLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgICAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhpZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdl
YWtUaGlzKSwgY29udGVudCA9IEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKHBhdGgpXShhdXRv
JikgeworICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmICghY29udGVudCkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAod2Vha1RoaXMtPm1fY2FsbGJhY2spCisgICAgICAgICAgICAgICAgICAgICAg
ICB3ZWFrVGhpcy0+bV9jYWxsYmFjayhFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIlVu
YWJsZSB0byByZWFkIGZvcm0gZGF0YSBmaWxlIl9zIH0pOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5jb25z
dW1lKCpjb250ZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9LCBbdGhp
c10oY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkQmxvYkRhdGEmIGJsb2JEYXRhKSB7Cisg
ICAgICAgIG1fYmxvYkxvYWRlciA9IG1ha2VVbmlxdWU8QmxvYkxvYWRlcj4oW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH1dKEJsb2JMb2FkZXImKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYXV0byBs
b2FkZXIgPSBzdGQ6OmV4Y2hhbmdlKHdlYWtUaGlzLT5tX2Jsb2JMb2FkZXIsIHsgfSk7CisgICAg
ICAgICAgICBpZiAoYXV0byBvcHRpb25hbEVycm9yQ29kZSA9IGxvYWRlci0+ZXJyb3JDb2RlKCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMtPm1fY2FsbGJhY2spCisgICAgICAgICAg
ICAgICAgICAgIHdlYWtUaGlzLT5tX2NhbGxiYWNrKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yLCAiRmFpbGVkIHRvIHJlYWQgZm9ybSBkYXRhIGJsb2IiX3MgfSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IGxv
YWRlci0+YXJyYXlCdWZmZXJSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y29u
c3VtZShTcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEtPmRhdGEoKSksIGRhdGEtPmJ5dGVMZW5ndGgoKSB9KTsKKyAgICAgICAgfSk7CisgICAgICAg
IG1fYmxvYkxvYWRlci0+c3RhcnQoYmxvYkRhdGEudXJsLCBtX2NvbnRleHQuZ2V0KCksIEZpbGVS
ZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyKTsKKyAgICAgICAgaWYgKCFtX2Jsb2JMb2Fk
ZXItPmlzTG9hZGluZygpKSB7CisgICAgICAgICAgICBtX2NhbGxiYWNrKEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiVW5hYmxlIHRvIHJlYWQgZm9ybSBkYXRhIGJsb2IiX3MgfSk7Cisg
ICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBudWxscHRyOworICAgICAgICB9CisgICAgfSk7Cit9
CisKK3ZvaWQgRm9ybURhdGFDb25zdW1lcjo6Y29uc3VtZShjb25zdCBWZWN0b3I8dWludDhfdD4m
IGNvbnRlbnQpCit7CisgICAgY29uc3VtZShTcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgY29udGVudC5k
YXRhKCksIGNvbnRlbnQuc2l6ZSgpIH0pOworfQorCit2b2lkIEZvcm1EYXRhQ29uc3VtZXI6OmNv
bnN1bWUoU3Bhbjxjb25zdCB1aW50OF90PiBjb250ZW50KQoreworICAgIGlmICghbV9jYWxsYmFj
aykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jYWxsYmFjayhTcGFuPGNvbnN0IHVpbnQ4X3Q+
IHsgY29udGVudC5kYXRhKCksIGNvbnRlbnQuc2l6ZSgpIH0pOworICAgIGlmICghbV9jYWxsYmFj
aykKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVhZCgpOworfQorCit2b2lkIEZvcm1EYXRhQ29u
c3VtZXI6OmNhbmNlbCgpCit7CisgICAgbV9jYWxsYmFjayA9IG51bGxwdHI7CisgICAgaWYgKG1f
YmxvYkxvYWRlcikgeworICAgICAgICBtX2Jsb2JMb2FkZXItPmNhbmNlbCgpOworICAgICAgICBt
X2Jsb2JMb2FkZXIgPSBudWxscHRyOworICAgIH0KKyAgICBtX2NvbnRleHQgPSBudWxscHRyOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0Zvcm1EYXRhQ29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRm9ybURhdGFDb25zdW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1YjU0NGZmMDhlOGM1ZTk3Zjhl
NzUyOWIwY2ExODdmNWI5OWQ5ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0Zvcm1EYXRhQ29uc3VtZXIuaApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1NwYW4uaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBGb3JtRGF0YTsKKworY2xhc3MgRm9ybURhdGFDb25zdW1lciA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxGb3JtRGF0YUNvbnN1bWVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgdXNpbmcgQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9y
PFNwYW48Y29uc3QgdWludDhfdD4+KT47CisgICAgRm9ybURhdGFDb25zdW1lcihjb25zdCBGb3Jt
RGF0YSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBDYWxsYmFjayYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB+Rm9ybURhdGFDb25zdW1lcigpOworCisgICAgdm9pZCBjYW5jZWwoKTsKKworcHJp
dmF0ZToKKyAgICB2b2lkIGNvbnN1bWUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisgICAgdm9p
ZCBjb25zdW1lKFNwYW48Y29uc3QgdWludDhfdD4pOworICAgIHZvaWQgcmVhZCgpOworCisgICAg
UmVmPEZvcm1EYXRhPiBtX2Zvcm1EYXRhOworICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0PiBtX2NvbnRleHQ7CisgICAgQ2FsbGJhY2sgbV9jYWxsYmFjazsKKworICAgIHNpemVfdCBt
X2N1cnJlbnRFbGVtZW50SW5kZXggeyAwIH07CisgICAgUmVmPFdvcmtRdWV1ZT4gbV9maWxlUXVl
dWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYmQ1YTc0NzljYjM5ZTQ2
Y2M5MTA0MDBmNGVlMzg0OTMyNGM3NTMxZi4uZjZmMDBhZThhZmRmMTAyYTM2ZjEyNTE0NTc0MTIy
YTMwOWM5NDA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTg4LDYgKzg4LDcgQEAgTW9kdWxlcy9mZXRj
aC9GZXRjaEhlYWRlcnMuY3BwCiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAogTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
CitNb2R1bGVzL2ZldGNoL0Zvcm1EYXRhQ29uc3VtZXIuY3BwCiBNb2R1bGVzL2ZldGNoL1dpbmRv
d09yV29ya2VyR2xvYmFsU2NvcGVGZXRjaC5jcHAKIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9G
aWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlLmNwcAogTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0Zp
bGVTeXN0ZW1GaWxlSGFuZGxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNjOWVjMjVjMGE5MjQ2MDZhZTJlYjMyNzY0YTE3
OGRkY2M5NDQzZjguLjcwYmUyODNhMDM0ZWIzMDU0OTIzMzEwZWE1YjIzNjBkMGVmYmYwZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTg0ODEsNiArODQ4MSw4IEBACiAJCTNGQkM0QUYxMTg5ODgxNTYwMDQ2RUUzOCAvKiBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzRkJDNEFGMjE4OTg4MTU2MDA0NkVFMzggLyogVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEwMjRGQzgyM0NGMjU0RjAwRkRGOThFIC8qIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTAyRUUwRTI3ODMwRTYzMDBENkJFNzQgLyog
Rm9ybURhdGFDb25zdW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtRGF0YUNvbnN1bWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMDJFRTEwMjc4MzBFNjMwMEQ2QkU3NCAvKiBG
b3JtRGF0YUNvbnN1bWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1EYXRhQ29uc3VtZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTA3OTA4QTFGQzNFNEYyMDA2MUIy
N0EgLyogQ2xpZW50T3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENs
aWVudE9yaWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTA5MzgyQzIzNDc4
NTBFMDA5NDI4QkEgLyogSlNBYm9ydFNpZ25hbEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0Fib3J0U2lnbmFsQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDEwQThFRjQyNEY4MjNCOTAwNEY5MDcwIC8qIFRleHRFbmNvZGVyU3RyZWFtLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBU
ZXh0RW5jb2RlclN0cmVhbS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTI3
MCw2ICsyMTI3Miw4IEBACiAJCQkJNDEzMDE1RDUxQzdCNTcwNDAwMDkxQzZFIC8qIEZldGNoUmVz
cG9uc2UuY3BwICovLAogCQkJCTQxMzAxNUQ2MUM3QjU3MDQwMDA5MUM2RSAvKiBGZXRjaFJlc3Bv
bnNlLmggKi8sCiAJCQkJNDEzMDE1RDcxQzdCNTcwNDAwMDkxQzZFIC8qIEZldGNoUmVzcG9uc2Uu
aWRsICovLAorCQkJCTQxMDJFRTEwMjc4MzBFNjMwMEQ2QkU3NCAvKiBGb3JtRGF0YUNvbnN1bWVy
LmNwcCAqLywKKwkJCQk0MTAyRUUwRTI3ODMwRTYzMDBENkJFNzQgLyogRm9ybURhdGFDb25zdW1l
ci5oICovLAogCQkJCTdDMkUwQkQxMjUxMDZBQzQwMDVGM0M4NyAvKiBXaW5kb3dPcldvcmtlckds
b2JhbFNjb3BlK0ZldGNoLmlkbCAqLywKIAkJCQk3QzJFMEJEMDI1MTA2QUM0MDA1RjNDODcgLyog
V2luZG93T3JXb3JrZXJHbG9iYWxTY29wZUZldGNoLmNwcCAqLywKIAkJCQk3QzJFMEJDRjI1MTA2
QUM0MDA1RjNDODcgLyogV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZUZldGNoLmggKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYkxvYWRlci5oCmluZGV4IDhiMWE2MTE3ZjI2ZTcxN2JiYzhmOTFmYWVi
ZGQ0NDA3NzU2MWE1OGYuLmNkMGQwYzFiOWE1NDNkYjA0MjUzYTcyZGJmNWQwNzdhYzFmYzUzNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYkxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYkxvYWRlci5oCkBAIC00Myw2ICs0Myw3IEBAIHB1Ymxp
YzoKICAgICB+QmxvYkxvYWRlcigpOwogCiAgICAgdm9pZCBzdGFydChCbG9iJiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRUeXBlKTsKKyAgICB2b2lkIHN0
YXJ0KGNvbnN0IFVSTCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBGaWxlUmVhZGVyTG9hZGVy
OjpSZWFkVHlwZSk7CiAKICAgICB2b2lkIGNhbmNlbCgpOwogICAgIGJvb2wgaXNMb2FkaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2FkZXIgJiYgbV9jb21wbGV0aW9uSGFuZGxlcjsgfQpAQCAtODks
NiArOTAsMTMgQEAgaW5saW5lIHZvaWQgQmxvYkxvYWRlcjo6c3RhcnQoQmxvYiYgYmxvYiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRmlsZVIKICAgICBtX2xvYWRlci0+c3RhcnQo
Y29udGV4dCwgYmxvYik7CiB9CiAKK2lubGluZSB2b2lkIEJsb2JMb2FkZXI6OnN0YXJ0KGNvbnN0
IFVSTCYgYmxvYlVSTCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRmlsZVJlYWRl
ckxvYWRlcjo6UmVhZFR5cGUgcmVhZFR5cGUpCit7CisgICAgQVNTRVJUKCFtX2xvYWRlcik7Cisg
ICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KHJlYWRUeXBlLCB0aGlz
KTsKKyAgICBtX2xvYWRlci0+c3RhcnQoY29udGV4dCwgYmxvYlVSTCk7Cit9CisKIGlubGluZSB2
b2lkIEJsb2JMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoKQogewogICAgIG1fY29tcGxldGlvbkhh
bmRsZXIoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5j
cHAKaW5kZXggYjdmNzVlZGEzYjIzM2IxOWIyMGVkNzA0Mjg5NDliYjMzNTg5OGU4MS4uNzRlZjVm
NGI4YjQ3YTcyYTU1OTA4N2ZhZmE3MTc1Njg4ZThkNTY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC03Myw2ICs3MywxMSBAQCBGaWxlUmVhZGVy
TG9hZGVyOjp+RmlsZVJlYWRlckxvYWRlcigpCiB9CiAKIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6
c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxv
YiYgYmxvYikKK3sKKyAgICBzdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBibG9iLnVybCgp
KTsKK30KKwordm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBVUkwmIGJsb2JVUkwpCiB7CiAgICAg
QVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCkBAIC04Miw3ICs4Nyw3IEBAIHZvaWQg
RmlsZVJlYWRlckxvYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgQmxvCiAgICAgICAgIGZhaWxlZChTZWN1cml0eUVycm9yKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJs
b2JVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+cG9saWN5Q29udGFpbmVyKCksIG1fdXJsRm9yUmVhZGluZywgYmxvYi51
cmwoKSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnBvbGljeUNvbnRhaW5lcigpLCBtX3VybEZvclJlYWRpbmcsIGJsb2JVUkwpOwogCiAgICAg
Ly8gQ29uc3RydWN0IGFuZCBsb2FkIHRoZSByZXF1ZXN0LgogICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KG1fdXJsRm9yUmVhZGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXJMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ckxvYWRlci5oCmluZGV4IDUzOWMyMzA0YTgyZTYzYWFkZmUyYzU2N2M5OGQwYjhjNjg3YThlOWYu
LmRiYWU5ZTMzNTA5MGE4Yjk2ZGZiNzZlYjZlMTUxMTI1OTg4ZTYwZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoK
ICAgICB+RmlsZVJlYWRlckxvYWRlcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFy
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxvYiYpOworICAgIHZvaWQgc3RhcnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2FuY2VsKCk7CiAKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcAppbmRleCA4YTkxMzhkMjNiMGQ1ZGVjNTNkMjk5MGRlZDVkYjc3NjM1NGU1MjQw
Li5jN2E3ZTgzNjM0M2NiMWJiYWQxNTUyNzVkODMwY2FhMDExOTc2NTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFt
ZXNwYWNlIFNlcnZpY2VXb3JrZXJGZXRjaCB7CiAKIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0
d2cub3JnLyNodHRwLWZldGNoIHN0ZXAgMy4zCi1zdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8
UmVzb3VyY2VFcnJvcj4gdmFsaWRhdGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgRmV0Y2hPcHRpb25zOjpNb2RlIG1vZGUsIEZldGNoT3B0aW9uczo6UmVkaXJlY3Qg
cmVkaXJlY3QpCitzdGF0aWMgaW5saW5lIFJlc291cmNlRXJyb3IgdmFsaWRhdGVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgRmV0Y2hPcHRpb25zOjpNb2RlIG1vZGUs
IEZldGNoT3B0aW9uczo6UmVkaXJlY3QgcmVkaXJlY3QpCiB7CiAgICAgaWYgKHJlc3BvbnNlLnR5
cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpFcnJvcikKICAgICAgICAgcmV0dXJuIFJl
c291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwo
KSwgIlJlc3BvbnNlIHNlcnZlZCBieSBzZXJ2aWNlIHdvcmtlciBpcyBhbiBlcnJvciJfcywgUmVz
b3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCwgUmVzb3VyY2VFcnJvcjo6SXNTYW5pdGl6ZWQ6Olll
cyB9OwpAQCAtNjYsMTIgKzY2LDE1IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxSZXNv
dXJjZUVycm9yPiB2YWxpZGF0ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uCiAKIHN0YXRp
YyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVm
PEZldGNoUmVzcG9uc2U+LCBzdGQ6Om9wdGlvbmFsPFJlc291cmNlRXJyb3I+PiYmIHJlc3VsdCwg
RmV0Y2hPcHRpb25zOjpNb2RlIG1vZGUsIEZldGNoT3B0aW9uczo6UmVkaXJlY3QgcmVkaXJlY3Qs
IGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgQ2VydGlmaWNhdGVJbmZvJiYgY2VydGlmaWNhdGVJbmZv
KQogeworICAgIGZwcmludGYoc3RkZXJyLCAicHJvY2Vzc1Jlc3BvbnNlXG4iKTsKICAgICBpZiAo
IXJlc3VsdC5oYXNfdmFsdWUoKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInJlc3VsdCBk
b2VzIG5vdCBoYXZlIHZhbHVlXG4iKTsKICAgICAgICAgYXV0byYgZXJyb3IgPSByZXN1bHQuZXJy
b3IoKTsKICAgICAgICAgaWYgKCFlcnJvcikgewogICAgICAgICAgICAgY2xpZW50LT5kaWROb3RI
YW5kbGUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBmcHJpbnRm
KHN0ZGVyciwgInJlc3VsdCBoYXMgZXJyb3IgJXNcbiIsIGVycm9yLT5sb2NhbGl6ZWREZXNjcmlw
dGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBjbGllbnQtPmRpZEZhaWwoKmVycm9yKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc5LDEzICs4MiwxNSBAQCBzdGF0aWMgdm9pZCBw
cm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJl
c3BvbnNlPiwgcwogCiAgICAgYXV0byBsb2FkaW5nRXJyb3IgPSByZXNwb25zZS0+bG9hZGluZ0Vy
cm9yKCk7CiAgICAgaWYgKCFsb2FkaW5nRXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgZnByaW50
ZihzdGRlcnIsICJwcm9jZXNzUmVzcG9uc2UgbG9hZGluZyBlcnJvciAlc1xuIiwgbG9hZGluZ0Vy
cm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGNsaWVu
dC0+ZGlkRmFpbChsb2FkaW5nRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
YXV0byByZXNvdXJjZVJlc3BvbnNlID0gcmVzcG9uc2UtPnJlc291cmNlUmVzcG9uc2UoKTsKLSAg
ICBpZiAoYXV0byBlcnJvciA9IHZhbGlkYXRlUmVzcG9uc2UocmVzb3VyY2VSZXNwb25zZSwgbW9k
ZSwgcmVkaXJlY3QpKSB7Ci0gICAgICAgIGNsaWVudC0+ZGlkRmFpbChlcnJvci52YWx1ZSgpKTsK
KyAgICBpZiAoYXV0byBlcnJvciA9IHZhbGlkYXRlUmVzcG9uc2UocmVzb3VyY2VSZXNwb25zZSwg
bW9kZSwgcmVkaXJlY3QpOyAhZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgY2xpZW50LT5kaWRG
YWlsKGVycm9yKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJwcm9jZXNzUmVzcG9uc2UgaW52
YWxpZCByZXNwb25zZSAlc1xuIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTEwLDEyICsxMTUsMTUgQEAg
c3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3Rl
ZDxSZWY8RmV0Y2hSZXNwb25zZT4sIHMKICAgICBpZiAocmVzb3VyY2VSZXNwb25zZS51cmwoKS5p
c051bGwoKSkKICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS5zZXRVUkwocmVxdWVzdFVSTCk7CiAK
KyAgICBmcHJpbnRmKHN0ZGVyciwgInByb2Nlc3MgcmVzcG9uc2UgZGlkcmVjZWl2ZSByZXNwb25z
ZVxuIik7CiAgICAgY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzb3VyY2VSZXNwb25zZSk7
CiAKICAgICBpZiAocmVzcG9uc2UtPmlzQm9keVJlY2VpdmVkQnlDaHVuaygpKSB7Ci0gICAgICAg
IHJlc3BvbnNlLT5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbY2xpZW50ID0gV1RGTW92ZShj
bGllbnQpXSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGZwcmludGYoc3RkZXJy
LCAicHJvY2VzcyByZXNwb25zZSBkaWRyZWNlaXZlIGlzQm9keVJlY2VpdmVkQnlDaHVua1xuIik7
CisgICAgICAgICAgICByZXNwb25zZS0+Y29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW2NsaWVu
dCA9IFdURk1vdmUoY2xpZW50KV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIGF1dG8gZXJy
b3IgPSBGZXRjaEV2ZW50OjpjcmVhdGVSZXNwb25zZUVycm9yKFVSTCB7IH0sIHJlc3VsdC5leGNl
cHRpb24oKS5tZXNzYWdlKCksIFJlc291cmNlRXJyb3I6OklzU2FuaXRpemVkOjpZZXMpOworICAg
ICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicHJvY2VzcyByZXNwb25zZSBkaWRyZWNlaXZl
IGlzQm9keVJlY2VpdmVkQnlDaHVuayBlcnJvciAlc1xuIiwgcmVzdWx0LmV4Y2VwdGlvbigpLm1l
c3NhZ2UoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICBjbGllbnQtPmRpZEZhaWwo
ZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTEyOCw2
ICsxMzYsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGll
bnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgICAgICByZXR1cm47CiAgICAg
fQogCisgICAgZnByaW50ZihzdGRlcnIsICJwcm9jZXNzIHJlc3BvbnNlIGRpZHJlY2VpdmUgY29u
c3VtZSBib2R5XG4iKTsKICAgICBhdXRvIGJvZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsK
ICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsK
ICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goV1RGTW92ZShmb3Jt
RGF0YSkpOwpAQCAtMTkyLDYgKzIwMSw3IEBAIHZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxD
bGllbnQ+JiYgY2xpZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIGdsb2JhbFNjCiAgICAg
ICAgIHByb2Nlc3NSZXNwb25zZShXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUocmVzdWx0KSwgbW9k
ZSwgcmVkaXJlY3QsIHJlcXVlc3RVUkwsIFdURk1vdmUoY2VydGlmaWNhdGVJbmZvKSk7CiAgICAg
fSk7CiAKKyAgICBmcHJpbnRmKHN0ZGVyciwgImRpc3BhdGNoIGZldGNoIGV2ZW50XG4iKTsKICAg
ICBnbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKIAogICAgIGlmICghZXZlbnQtPnJl
c3BvbmRXaXRoRW50ZXJlZCgpKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmQ0MGU3MjQzNjUwNDhhNDk2MGJkMDk4ZTdk
ODA3MTE3MjIzY2UzNC4uN2FhMDg2Y2E0MzMwZWFiZWY5MjVlYzMxOGQyM2UwOTI0NTRiMjI2YyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAxLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KKworICAgICAgICBGZXRjaCB1c2luZyBGb3JtRGF0YSB3aXRoIGZpbGUgZG9l
c24ndCBnbyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc0NjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQx
OTc1NTQ0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEluIGFkZGl0aW9uIHRvIGFkZGluZyBhIHRlc3QgdG8gaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1j
b25zdW1lLXN0cmVhbS5odG1sLCB3ZSBmaXggdGhlIG90aGVyIHRlc3RzIHRoYXQgc2hvdWxkIGFs
bCBiZSBwYXNzaW5nLgorCisgICAgICAgICogaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1l
LXN0cmVhbS5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY29uc3VtZS1z
dHJlYW0tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9m
b3JtLWRhdGEtdXBsb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQv
c2VydmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQtd29ya2VyLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZm9ybS1kYXRhLXVwbG9hZC5odG1sOiBBZGRl
ZC4KKwogMjAyMi0wMS0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgTWFrZSBzdXJlIHNlY3VyZSB3ZWJzb2NrZXQgY29ubmVjdGlvbnMgaW4gc2VydmljZSB3
b3JrZXJzIGNhbiB0cmlnZ2VyIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSBjYWxsYmFja3MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY29uc3VtZS1zdHJl
YW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jb25z
dW1lLXN0cmVhbS1leHBlY3RlZC50eHQKaW5kZXggY2RkNjY5ODIyMzUwZTRiMGE1YTQ3OWZiMGZh
Y2JlYTY1YzNiMjRlOC4uMzVhYzc3YjU0ZWZkNWJhYTE5MTY0N2IwNjczZTk2OGRhMzc5NzYxNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0
cmVhbS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVz
dC1jb25zdW1lLXN0cmVhbS1leHBlY3RlZC50eHQKQEAgLTEsOSArMSwxMCBAQAogCi1GQUlMIFJl
YWQgZW1wdHkgdGV4dCByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSBhc3NlcnRfYXJy
YXlfZXF1YWxzOiBSZXRyaWV2ZSBhbmQgdmVyaWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZlciwgZXhw
ZWN0ZWQgYXJyYXkgb2JqZWN0ICIiIGxlbmd0aCAwLCBnb3Qgb2JqZWN0ICIxMjMsMzQsMTA3LDEw
MSwxMjEsMzQsNTgsMzIsMzQsMTE4LDk3LDEwOCwxMTcsMTAxLDM0LDEyNSIgbGVuZ3RoIDE2Ci1G
QUlMIFJlYWQgZW1wdHkgYmxvYiByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSBhc3Nl
cnRfYXJyYXlfZXF1YWxzOiBSZXRyaWV2ZSBhbmQgdmVyaWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZl
ciwgZXhwZWN0ZWQgYXJyYXkgb2JqZWN0ICIiIGxlbmd0aCAwLCBnb3Qgb2JqZWN0ICIxMjMsMzQs
MTA3LDEwMSwxMjEsMzQsNTgsMzIsMzQsMTE4LDk3LDEwOCwxMTcsMTAxLDM0LDEyNSIgbGVuZ3Ro
IDE2Ci1GQUlMIFJlYWQgYmxvYiByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSBhc3Nl
cnRfYXJyYXlfZXF1YWxzOiBSZXRyaWV2ZSBhbmQgdmVyaWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZl
ciwgZXhwZWN0ZWQgYXJyYXkgb2JqZWN0ICIxMTUsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExMywx
MTcsMTAxLDExNSwxMTYsMzksMTE1LDMyLDk4LDExMSwxMDAsMTIxLDM0IiBsZW5ndGggMjQsIGdv
dCBvYmplY3QgIjEyMywzNCwxMDcsMTAxLDEyMSwzNCw1OCwzMiwzNCwxMTgsOTcsMTA4LDExNywx
MDEsMzQsMTI1IiBsZW5ndGggMTYKLUZBSUwgUmVhZCB0ZXh0IHJlcXVlc3QncyBib2R5IGFzIHJl
YWRhYmxlU3RyZWFtIGFzc2VydF9hcnJheV9lcXVhbHM6IFJldHJpZXZlIGFuZCB2ZXJpZnkgc3Ry
ZWFtIGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBvYmplY3QgIjExNSwzMiwxMDUsMTE1
LDMyLDExNCwxMDEsMTEzLDExNywxMDEsMTE1LDExNiwzOSwxMTUsMzIsOTgsMTExLDEwMCwxMjEs
MzQiIGxlbmd0aCAyNCwgZ290IG9iamVjdCAiMTIzLDM0LDEwNywxMDEsMTIxLDM0LDU4LDMyLDM0
LDExOCw5NywxMDgsMTE3LDEwMSwzNCwxMjUiIGxlbmd0aCAxNgotRkFJTCBSZWFkIFVSTFNlYXJj
aFBhcmFtcyByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSBhc3NlcnRfYXJyYXlfZXF1
YWxzOiBSZXRyaWV2ZSBhbmQgdmVyaWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQg
YXJyYXkgb2JqZWN0ICIxMTAsOTcsMTA5LDEwMSw2MSwxMTgsOTcsMTA4LDExNywxMDEiIGxlbmd0
aCAxMCwgZ290IG9iamVjdCAiMTIzLDM0LDEwNywxMDEsMTIxLDM0LDU4LDMyLDM0LDExOCw5Nywx
MDgsMTE3LDEwMSwzNCwxMjUiIGxlbmd0aCAxNgotRkFJTCBSZWFkIGFycmF5IGJ1ZmZlciByZXF1
ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBSZXRyaWV2
ZSBhbmQgdmVyaWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgb2JqZWN0
ICIxMTUsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExMywxMTcsMTAxLDExNSwxMTYsMzksMTE1LDMy
LDk4LDExMSwxMDAsMTIxLDM0IiBsZW5ndGggMjQsIGdvdCBvYmplY3QgIjEyMywzNCwxMDcsMTAx
LDEyMSwzNCw1OCwzMiwzNCwxMTgsOTcsMTA4LDExNywxMDEsMzQsMTI1IiBsZW5ndGggMTYKLUZB
SUwgUmVhZCBmb3JtIGRhdGEgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gYXNzZXJ0
X2FycmF5X2VxdWFsczogUmV0cmlldmUgYW5kIHZlcmlmeSBzdHJlYW0gbGVuZ3RocyBkaWZmZXIs
IGV4cGVjdGVkIGFycmF5IG9iamVjdCAiMTEwLDk3LDEwOSwxMDEsNjEsMTE4LDk3LDEwOCwxMTcs
MTAxIiBsZW5ndGggMTAsIGdvdCBvYmplY3QgIjEyMywzNCwxMDcsMTAxLDEyMSwzNCw1OCwzMiwz
NCwxMTgsOTcsMTA4LDExNywxMDEsMzQsMTI1IiBsZW5ndGggMTYKK1BBU1MgUmVhZCBlbXB0eSB0
ZXh0IHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWQgZW1wdHkgYmxv
YiByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbQorUEFTUyBSZWFkIGJsb2IgcmVxdWVz
dCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0KK1BBU1MgUmVhZCB0ZXh0IHJlcXVlc3QncyBib2R5
IGFzIHJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWQgVVJMU2VhcmNoUGFyYW1zIHJlcXVlc3QncyBi
b2R5IGFzIHJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWQgYXJyYXkgYnVmZmVyIHJlcXVlc3QncyBi
b2R5IGFzIHJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWQgZm9ybSBkYXRhIHJlcXVlc3QncyBib2R5
IGFzIHJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWQgZm9ybSBkYXRhIHdpdGggYmxvYiByZXF1ZXN0
J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC9mZXRjaC9yZXF1ZXN0LWNvbnN1bWUtc3RyZWFtLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9mZXRjaC9yZXF1ZXN0LWNvbnN1bWUtc3RyZWFtLmh0bWwKaW5kZXggYTU4YTQ3MjAwNDNj
Yjk0MTE3MWI3MzYxZTA5ZWI4ZjE0OWUyYmFiNy4uYzQ5YTk3YzJkNDg0Mjc0ZWZmNzkxMzQ2Yzcz
YmE1NGU2Y2M0MjUyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVx
dWVzdC1jb25zdW1lLXN0cmVhbS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNo
L3JlcXVlc3QtY29uc3VtZS1zdHJlYW0uaHRtbApAQCAtMTEsOSArMTEsMjUgQEAKICAgPC9oZWFk
PgogICA8Ym9keT4KICAgICA8c2NyaXB0PgorYXN5bmMgZnVuY3Rpb24gZ2V0U3RyaW5nRnJvbVN0
cmVhbShyZWFkZXIsIGN1cnJlbnRWYWx1ZSkgeworICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZWFk
ZXIucmVhZCgpOworICAgIGlmICghZGF0YS5kb25lKSB7CisgICAgICAgIGxldCBidWZmZXI7Cisg
ICAgICAgIGlmIChjdXJyZW50VmFsdWUpIHsKKyAgICAgICAgICAgIGNvbnN0IG5ld0J1ZmZlciA9
IG5ldyBBcnJheUJ1ZmZlcihkYXRhLnZhbHVlLmxlbmd0aCArIGN1cnJlbnRWYWx1ZS5sZW5ndGgp
OworICAgICAgICAgICAgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkobmV3QnVmZmVyKTsKKyAgICAg
ICAgICAgIGJ1ZmZlci5zZXQoY3VycmVudFZhbHVlLCAwKTsKKyAgICAgICAgICAgIGJ1ZmZlci5z
ZXQoZGF0YS52YWx1ZSwgY3VycmVudFZhbHVlLmxlbmd0aCk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgYnVmZmVyID0gZGF0YS52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGdldFN0cmluZ0Zy
b21TdHJlYW0ocmVhZGVyLCBidWZmZXIpOworICAgIH0KKyAgICByZXR1cm4gKG5ldyBUZXh0RGVj
b2RlcikuZGVjb2RlKGN1cnJlbnRWYWx1ZSk7Cit9CisKIGZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RX
aXRoQm9keShib2R5KQogewotICAgIHJldHVybiBuZXcgUmVxdWVzdCgiIiwge2JvZHk6ICJ7XCJr
ZXlcIjogXCJ2YWx1ZVwifSIsIG1ldGhvZDogIlBPU1QifSk7CisgICAgcmV0dXJuIG5ldyBSZXF1
ZXN0KCIiLCB7Ym9keTogYm9keSwgbWV0aG9kOiAiUE9TVCJ9KTsKIH0KIAogcHJvbWlzZV90ZXN0
KGZ1bmN0aW9uKHRlc3QpIHsKQEAgLTU4LDEwICs3NCwyOSBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rp
b24odGVzdCkgewogICAgIHJldHVybiB2YWxpZGF0ZVN0cmVhbUZyb21TdHJpbmcoY3JlYXRlUmVx
dWVzdFdpdGhCb2R5KGFycmF5QnVmZmVyKS5ib2R5LmdldFJlYWRlcigpLCB0ZXh0RGF0YSk7CiB9
LCAiUmVhZCBhcnJheSBidWZmZXIgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0iKTsK
IAotcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKK3Byb21pc2VfdGVzdChhc3luYyAodGVz
dCkgPT4gewogICAgIHZhciByZXF1ZXN0ID0gY3JlYXRlUmVxdWVzdFdpdGhCb2R5KGZvcm1EYXRh
KTsKLSAgICByZXR1cm4gdmFsaWRhdGVTdHJlYW1Gcm9tU3RyaW5nKHJlcXVlc3QuYm9keS5nZXRS
ZWFkZXIoKSwgIm5hbWU9dmFsdWUiKTsKKyAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IGdldFN0cmlu
Z0Zyb21TdHJlYW0ocmVxdWVzdC5ib2R5LmdldFJlYWRlcigpKTsKKworICAgIGFzc2VydF90cnVl
KHZhbHVlLmluY2x1ZGVzKCduYW1lPSJuYW1lIicpLCAibmFtZSIpOworICAgIGFzc2VydF90cnVl
KHZhbHVlLmluY2x1ZGVzKCd2YWx1ZScpLCAibmFtZSIpOwogfSwgIlJlYWQgZm9ybSBkYXRhIHJl
cXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAo
dGVzdCkgPT4geworICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7CisgICAgY29u
c3QgYmxvYiA9IG5ldyBCbG9iKFsiJ0hlbGxvJyJdLCB7ICJ0eXBlIiA6ICJ0ZXh0L3BsYWluIiB9
KTsKKyAgICBmb3JtRGF0YS5hcHBlbmQoImJsb2IiLCBibG9iLCAiYmxvYi5maWxlIik7CisgICAg
Zm9ybURhdGEuYXBwZW5kKCJuYW1lIiwgInZhbHVlIik7CisKKyAgICBjb25zdCByZXF1ZXN0ID0g
Y3JlYXRlUmVxdWVzdFdpdGhCb2R5KGZvcm1EYXRhKTsKKyAgICBjb25zdCB2YWx1ZSA9IGF3YWl0
IGdldFN0cmluZ0Zyb21TdHJlYW0ocmVxdWVzdC5ib2R5LmdldFJlYWRlcigpKTsKKworICAgIGFz
c2VydF90cnVlKHZhbHVlLmluY2x1ZGVzKCduYW1lPSJuYW1lIicpLCAibmFtZSIpOworICAgIGFz
c2VydF90cnVlKHZhbHVlLmluY2x1ZGVzKCd2YWx1ZScpLCAibmFtZSIpOworCisgICAgYXNzZXJ0
X3RydWUodmFsdWUuaW5jbHVkZXMoJ25hbWU9ImJsb2IiJyksICJibG9iIik7CisgICAgYXNzZXJ0
X3RydWUodmFsdWUuaW5jbHVkZXMoJ0hlbGxvJyksICJIZWxsbyIpOworfSwgIlJlYWQgZm9ybSBk
YXRhIHdpdGggYmxvYiByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSIpOwogICAgIDwv
c2NyaXB0PgogICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvZm9ybS1kYXRhLXVwbG9hZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZm9ybS1kYXRhLXVwbG9hZC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGJkYzNjOGU5ZjYwYmViZWY5OGVhNzYxZTU4ZWRjMjVmMWMxZDZh
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vy
cy9mb3JtLWRhdGEtdXBsb2FkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitPUEVOIEZJ
TEUgUEFORUwKKworCitQQVNTIFNldHVwIHdvcmtlcgorUEFTUyBDcmVhdGUgY2hhbm5lbCB3aXRo
IHdvcmtlcgorUEFTUyBTZXR1cCBmcmFtZQorUEFTUyBTZXR1cCBmaWxlIHRvIHVwbG9hZAorUEFT
UyBTZXR1cCBmaWxlIGZvcm0gZGF0YQorUEFTUyBVcGxvYWQgaW50ZXJjZXB0ZWQgYnkgc2Vydmlj
ZSB3b3JrZXIKK1BBU1MgVXBsb2FkIGNsb25lZCBieSBzZXJ2aWNlIHdvcmtlcgorUEFTUyBEZWxl
dGUgdGVtcG9yYXJ5IGZpbGUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQtd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQtd29ya2VyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ3OGU1OTU3YWZmMzdkMWYzMjA3ZTJmNDk4YTE4ZDhiMTkxYzM2Y2IKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZm9ybS1kYXRhLXVw
bG9hZC13b3JrZXIuanMKQEAgLTAsMCArMSwxOCBAQAorYWRkRXZlbnRMaXN0ZW5lcigibWVzc2Fn
ZSIsIGFzeW5jIChlKSA9PiB7CisgICAgaWYgKCFlLmRhdGEucG9ydCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgc2VsZi5wb3J0ID0gZS5kYXRhLnBvcnQ7CisgICAgc2VsZi5wb3J0LnBvc3RNZXNz
YWdlKCJvayIpOworfSk7CisKK2FkZEV2ZW50TGlzdGVuZXIoImZldGNoIiwgYXN5bmMgKGUpID0+
IHsKKyAgICBpZiAoZS5yZXF1ZXN0LnVybC5pbmNsdWRlcygiY2xvbmUiKSkgeworc2VsZi5jb25l
ZCA9IGUucmVxdWVzdC5jbG9uZSgpOworICAgICAgICBjb25zdCBjbG9uZWQgPSBlLnJlcXVlc3Qu
Y2xvbmUoKTsKKyAgICAgICAgZS5yZXNwb25kV2l0aChmZXRjaChlLnJlcXVlc3QuY2xvbmUoKSkp
OworICAgICAgICBzZWxmLnBvcnQucG9zdE1lc3NhZ2UoYXdhaXQgY2xvbmVkLnRleHQoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZS5yZXNwb25kV2l0aChmZXRjaChlLnJlcXVlc3Qp
KTsKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L2Zvcm0tZGF0YS11cGxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29y
a2Vycy9mb3JtLWRhdGEtdXBsb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzNlMDE5ODZhYWRiZjhhZDQx
NTcwMTY1ZDQzZjU5YzM3N2QwMDk0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mb3JtLWRhdGEtdXBsb2FkLmh0bWwKQEAgLTAsMCArMSwx
NDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvd2Via2l0LXRl
c3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQ+Citjb25zdCB0ZW1wRmlsZUNvbnRlbnQgPSAiVEVTVCI7Citjb25zdCB0ZW1wRmlsZU5h
bWUgPSAidGVzdC50bXAiOworCit2YXIgZmlsZUlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaW5wdXQiKTsKK2ZpbGVJbnB1dC50eXBlID0gJ2ZpbGUnOworZmlsZUlucHV0LnN0eWxlLndp
ZHRoID0gIjEwMCUiOyAvLyBTbyB0aGF0IGFueSBtYW51YWwgdGVzdGluZyB3aWxsIHNob3cgZnVs
bCBmaWxlIG5hbWVzCitkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShmaWxlSW5wdXQsIGRvY3Vt
ZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK3ZhciBzY29wZSA9ICJyZXNvdXJjZXMiOwordmFyIGFj
dGl2ZVdvcmtlcjsKK3ZhciBmcmFtZTsKK3ZhciBmaWxlRnJhbWU7Cit2YXIgZm9ybURhdGE7Cit2
YXIgZmlsZVNpemU7CisKK2Z1bmN0aW9uIHdpdGhfaWZyYW1lKHVybCkgeworICAgIHJldHVybiBu
ZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7CisgICAgICAgIHZhciBmcmFtZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgICAgICBmcmFtZS5jbGFzc05hbWUgPSAn
dGVzdC1pZnJhbWUnOworICAgICAgICBmcmFtZS5zcmMgPSB1cmw7CisgICAgICAgIGZyYW1lLm9u
bG9hZCA9IGZ1bmN0aW9uKCkgeyByZXNvbHZlKGZyYW1lKTsgfTsKKyAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChmcmFtZSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVV
cGxvYWQoKQoreworICAgIGxldCByZXNvbHZlLCByZWplY3Q7CisgICAgY29uc3QgcHJvbWlzZSA9
IG5ldyBQcm9taXNlKChyZXNvbHZlXywgcmVqZWN0XykgPT4geworICAgICAgICByZXNvbHZlID0g
cmVzb2x2ZV87CisgICAgICAgIHJlamVjdCA9IHJlamVjdF87CisgICAgfSk7CisgICAgc2V0VGlt
ZW91dCgoKSA9PiByZWplY3QoInRlc3QgdGltZWQgb3V0IiksIDUwMDApOworCisgICAgdmFyIGlu
cHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF07CisgICAgaW5w
dXQub25jaGFuZ2UgPSBhc3luYyAoZSkgPT4geworICAgICAgICB2YXIgZm9ybURhdGEgPSBuZXcg
Rm9ybURhdGE7CisgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgiZmlsZSIsIGUudGFyZ2V0LmZpbGVz
WzBdLCB0ZW1wRmlsZU5hbWUpOworICAgICAgICBmaWxlU2l6ZSA9IGUudGFyZ2V0LmZpbGVzWzBd
LnNpemU7CisgICAgICAgIHJlc29sdmUoZm9ybURhdGEpOworICAgIH07CisKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRPcGVuUGFuZWxGaWxlcyhb
dGVtcEZpbGVQYXRoXSk7CisKKyAgICAgICAgdmFyIGNlbnRlclggPSBpbnB1dC5vZmZzZXRMZWZ0
ICsgaW5wdXQub2Zmc2V0V2lkdGggLyAyOworICAgICAgICB2YXIgY2VudGVyWSA9IGlucHV0Lm9m
ZnNldFRvcCArIGlucHV0Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgIFVJSGVscGVyLmFjdGl2
YXRlQXQoY2VudGVyWCwgY2VudGVyWSk7CisgICAgfQorICAgIHJldHVybiBwcm9taXNlOworfQor
Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzKHRydWUpOworICAgICAgICBhd2FpdCBmZXRjaCgiIikudGhlbigoKSA9PiB7IH0sICgpID0+
IHsgfSk7CisgICAgfQorCisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJmb3JtLWRhdGEtdXBsb2FkLXdvcmtlci5qcyIsIHsgc2Nv
cGUgOiBzY29wZSB9KTsKKyAgICBhY3RpdmVXb3JrZXIgPSByZWdpc3RyYXRpb24uYWN0aXZlOwor
ICAgIGlmICghYWN0aXZlV29ya2VyKSB7CisgICAgICAgIGFjdGl2ZVdvcmtlciA9IHJlZ2lzdHJh
dGlvbi5pbnN0YWxsaW5nOworICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsK
KyAgICAgICAgICAgIGFjdGl2ZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScs
ICgpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoYWN0aXZlV29ya2VyLnN0YXRlID09PSAiYWN0
aXZhdGVkIikKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0pOworICAgIH0KK30sICJTZXR1cCB3b3JrZXIiKTsKKworY29uc3QgY2hhbm5l
bCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
CisgICAgYWN0aXZlV29ya2VyLnBvc3RNZXNzYWdlKHsgcG9ydDogY2hhbm5lbC5wb3J0MSB9LCBb
Y2hhbm5lbC5wb3J0MV0pOworICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gY2hhbm5l
bC5wb3J0Mi5vbm1lc3NhZ2UgPSByZXNvbHZlKTsKK30sICJDcmVhdGUgY2hhbm5lbCB3aXRoIHdv
cmtlciIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBmcmFtZSA9IGF3
YWl0IHdpdGhfaWZyYW1lKCJyZXNvdXJjZXMvZmlsZS11cGxvYWQtaWZyYW1lLmh0bWwiKTsKK30s
ICJTZXR1cCBmcmFtZSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBj
b25zdCBwcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3aW5kb3cub25tZXNzYWdlID0g
cmVzb2x2ZSk7CisgICAgZmlsZUZyYW1lID0gYXdhaXQgd2l0aF9pZnJhbWUoImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9yZXNvdXJjZXMvY3JlYXRlLXRlbXAtZmlsZS1pZnJhbWUuaHRtbCIpOworICAg
IGxldCBldmVudCA9IGF3YWl0IHByb21pc2U7CisgICAgdGVtcEZpbGVQYXRoID0gZXZlbnQuZGF0
YTsKK30sICJTZXR1cCBmaWxlIHRvIHVwbG9hZCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRl
c3QpID0+IHsKKyAgICBmb3JtRGF0YSA9IGF3YWl0IHByZXBhcmVVcGxvYWQoKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGZpbGVTaXplLCA0KTsKK30sICJTZXR1cCBmaWxlIGZvcm0gZGF0YSIpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBibG9iID0gbmV3IEJsb2Io
WyInSGVsbG8nIl0sIHsgInR5cGUiIDogInRleHQvcGxhaW4iIH0pOworICAgIGZvcm1EYXRhLmFw
cGVuZCgiYmxvYiIsIGJsb2IsICJibG9iLmZpbGUiKTsKKyAgICBmb3JtRGF0YS5hcHBlbmQoIm5h
bWUiLCAidmFsdWUiKTsKKworICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZnJhbWUuY29udGVu
dFdpbmRvdy5mZXRjaCgiL1dlYktpdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL2ZpbGUtdXBs
b2FkLWNoZWNrLnB5Iiwge21ldGhvZDogIlBPU1QiLCBib2R5OiBmb3JtRGF0YX0pOworICAgIGNv
bnN0IHRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7CisKKyAgICBhc3NlcnRfdHJ1ZSh0ZXh0
LmluY2x1ZGVzKHRlbXBGaWxlQ29udGVudCksICJjb250ZW50Iik7CisgICAgYXNzZXJ0X3RydWUo
dGV4dC5pbmNsdWRlcyh0ZW1wRmlsZU5hbWUpLCAibmFtZSIpOworCisgICAgYXNzZXJ0X3RydWUo
dGV4dC5pbmNsdWRlcygnbmFtZT0ibmFtZSInKSwgIm5hbWUiKTsKKyAgICBhc3NlcnRfdHJ1ZSh0
ZXh0LmluY2x1ZGVzKCd2YWx1ZScpLCAibmFtZSIpOworCisgICAgYXNzZXJ0X3RydWUodGV4dC5p
bmNsdWRlcygnbmFtZT0iYmxvYiInKSwgImJsb2IiKTsKKyAgICBhc3NlcnRfdHJ1ZSh0ZXh0Lmlu
Y2x1ZGVzKCdIZWxsbycpLCAiSGVsbG8iKTsKK30sICJVcGxvYWQgaW50ZXJjZXB0ZWQgYnkgc2Vy
dmljZSB3b3JrZXIiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29u
c3QgYmxvYiA9IG5ldyBCbG9iKFsiJ0hlbGxvJyJdLCB7ICJ0eXBlIiA6ICJ0ZXh0L3BsYWluIiB9
KTsKKyAgICBmb3JtRGF0YS5hcHBlbmQoImJsb2IiLCBibG9iLCAiYmxvYi5maWxlIik7CisgICAg
Zm9ybURhdGEuYXBwZW5kKCJuYW1lIiwgInZhbHVlIik7CisKKyAgICBjb25zdCBtZXNzYWdlUHJv
bWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSAo
ZSkgPT4gcmVzb2x2ZShlLmRhdGEpKTsKKworICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZnJh
bWUuY29udGVudFdpbmRvdy5mZXRjaCgiL1dlYktpdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2Vz
L2ZpbGUtdXBsb2FkLWNoZWNrLnB5P2Nsb25lIiwge21ldGhvZDogIlBPU1QiLCBib2R5OiBmb3Jt
RGF0YX0pOworICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7CisKKyAgICBj
b25zdCBtZXNzYWdlVGV4dCA9IGF3YWl0IG1lc3NhZ2VQcm9taXNlOworICAgIGFzc2VydF9lcXVh
bHModGV4dCwgbWVzc2FnZVRleHQpOworCisgICAgYXNzZXJ0X3RydWUodGV4dC5pbmNsdWRlcygn
bmFtZT0ibmFtZSInKSwgIm5hbWUiKTsKKyAgICBhc3NlcnRfdHJ1ZSh0ZXh0LmluY2x1ZGVzKCd2
YWx1ZScpLCAibmFtZSIpOworCisgICAgYXNzZXJ0X3RydWUodGV4dC5pbmNsdWRlcygnbmFtZT0i
YmxvYiInKSwgImJsb2IiKTsKKyAgICBhc3NlcnRfdHJ1ZSh0ZXh0LmluY2x1ZGVzKCdIZWxsbycp
LCAiSGVsbG8iKTsKK30sICJVcGxvYWQgY2xvbmVkIGJ5IHNlcnZpY2Ugd29ya2VyIik7CisKK3By
b21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGF3YWl0IHdpdGhfaWZyYW1lKCJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL2RlbGV0ZS10ZW1wLWZpbGUtaWZyYW1lLmh0bWwi
KTsKK30sICJEZWxldGUgdGVtcG9yYXJ5IGZpbGUiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448241</attachid>
            <date>2022-01-03 08:14:03 -0800</date>
            <delta_ts>2022-01-03 11:08:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187461-20220103171401.patch</filename>
            <type>text/plain</type>
            <size>37991</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzllMDE1ZDIxZjIyZDgy
NzllMWVlYWJlODQzYjBmMTcyYWRiZTlmYi4uZTQ1MmRlMTExZjFkZWE3OWFkNzg3YzIwODg0MjJl
NGFlNmEwZDliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTAxLTAzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBGZXRjaCB1c2luZyBGb3Jt
RGF0YSB3aXRoIGZpbGUgZG9lc24ndCBnbyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc0NjEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQxOTc1NTQ0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZWFkaW5nIGZvcm1EYXRhIGJhc2Vk
IGJvZGllcyB0aHJvdWdoIHN0cmVhbXMgb3IgcmVndWxhciBtZXRob2RzIGxpa2UgdGV4dC4KKyAg
ICAgICAgRm9yIHRoYXQgcHVycG9zZSwgd2UgYWRkIEZvcm1EYXRhQ29uc3VtZXIgd2hpY2ggYWxs
b3dzIHNlcmlhbGl6aW5nIGZvcm0gZGF0YXMgdGhhdCBtYXkgY29udGFpbiBmaWxlcyBvciBibG9i
cy4KKyAgICAgICAgQWRkIHRoZSBhYmlsaXR5IHRvIGxvYWQgYmxvYnMgZnJvbSBCbG9iTG9hZGVy
IHVzaW5nIHRoZSBpbnRlcm5hbCBVUkwgKHN0b3JlZCBpbiBGb3JtRGF0YSkgaW4gbGlldSBvZiBw
YXNzaW5nIGEgYmxvYiBvYmplY3QuCisgICAgICAgIEVuYWJsZSBmZXRjaCBldmVudHMgZm9yIGZv
cm0gZGF0YSBiYXNlZCBmZXRjaCBldmVudHMuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRm9ybURhdGFDb25zdW1lci5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRm9ybURhdGFDb25zdW1lci5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZmls
ZWFwaS9CbG9iTG9hZGVyLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNw
cDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorCiAyMDIyLTAxLTAy
ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEFj
Y2VzcyBrZXkgc2hvdWxkIHdvcmsgb24gZm9jdXNhYmxlIGVsZW1lbnQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggYjhmMmVjMzczZDg3M2NjOWM4YWNi
M2M2ZWM4NDVmNmFiMDAwOWFhNi4uNzQxN2FlMGMxMjAzZWNmYzQ4NDkxZmUxMjQ4MDk2ZWI2NWVm
YzJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAt
OTQsOCArOTQsNyBAQCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4gRmV0Y2hCb2R5Ojpmcm9tRm9y
bURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dAogICAgICAgICByZXR1cm4gRmV0
Y2hCb2R5IHsgV1RGTW92ZShibG9iKSB9OwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBTdXBwb3J0
IGZvcm0gZGF0YSBib2RpZXMuCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4g
RmV0Y2hCb2R5IHsgUmVmIHsgZm9ybURhdGEgfSB9OwogfQogCiB2b2lkIEZldGNoQm9keTo6YXJy
YXlCdWZmZXIoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCkBAIC0xOTYsNyArMTk1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVBc1N0cmVh
bShGZXRjaEJvZHlPd25lciYgb3duZXIsIEZldGNoQm9keVNvdXJjZSYgc291cmNlKQogICAgICAg
ICBvd25lci5sb2FkQmxvYihibG9iQm9keSgpLCBudWxscHRyKTsKICAgICAgICAgbV9kYXRhID0g
bnVsbHB0cjsKICAgICB9IGVsc2UgaWYgKGlzRm9ybURhdGEoKSkKLSAgICAgICAgc291cmNlLmVy
cm9yKEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zIH0p
OworICAgICAgICBtX2NvbnN1bWVyLmNvbnN1bWVGb3JtRGF0YUFzU3RyZWFtKGZvcm1EYXRhQm9k
eSgpLCBzb3VyY2UsIG93bmVyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgZWxzZSBp
ZiAobV9jb25zdW1lci5oYXNEYXRhKCkpCiAgICAgICAgIGNsb3NlU3RyZWFtID0gc291cmNlLmVu
cXVldWUobV9jb25zdW1lci50YWtlQXNBcnJheUJ1ZmZlcigpKTsKICAgICBlbHNlCkBAIC0yMzQs
MTQgKzIzMyw4IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYg
b3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzCiAKIHZvaWQgRmV0Y2hCb2R5Ojpj
b25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiB7Ci0gICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5
KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0
YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgICAgICBt
X2RhdGEgPSBudWxscHRyOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJZiB0aGUg
Zm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9i
cy4KLSAgICAgICAgLy8gVGhhdCB3aWxsIGZpeCB0aGUgbGFzdCBXUFQgdGVzdCBpbiByZXNwb25z
ZS1jb25zdW1lLmh0bWwuCi0gICAgICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJv
cik7Ci0gICAgfQorICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhGb3JtRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBmb3JtRGF0YUJvZHkoKSwgb3duZXIuc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX2RhdGEgPSBudWxscHRyOwogfQogCiB2b2lkIEZl
dGNoQm9keTo6bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKQEAgLTMx
MSw3ICszMDQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogCiBG
ZXRjaEJvZHkgRmV0Y2hCb2R5OjpjbG9uZSgpCiB7Ci0gICAgRmV0Y2hCb2R5IGNsb25lKG1fY29u
c3VtZXIpOworICAgIEZldGNoQm9keSBjbG9uZShtX2NvbnN1bWVyLmNsb25lKCkpOwogCiAgICAg
aWYgKGlzQXJyYXlCdWZmZXIoKSkKICAgICAgICAgY2xvbmUubV9kYXRhID0gYXJyYXlCdWZmZXJC
b2R5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQx
YjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZjMDA4OGUxMmU0Li5hNGFmMmFhZDU4NTM1Njc4M2Jm
NzI3MTMxM2RjNjA0MGVkNzhmNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBGZXRjaEJv
ZHkoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogICAg
IGV4cGxpY2l0IEZldGNoQm9keShTdHJpbmcmJiBkYXRhKSA6IG1fZGF0YShXVEZNb3ZlKGRhdGEp
KSB7IH0KICAgICBleHBsaWNpdCBGZXRjaEJvZHkoUmVmPGNvbnN0IFVSTFNlYXJjaFBhcmFtcz4m
JiBkYXRhKSA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICBleHBsaWNpdCBGZXRjaEJv
ZHkoY29uc3QgRmV0Y2hCb2R5Q29uc3VtZXImIGNvbnN1bWVyKSA6IG1fY29uc3VtZXIoY29uc3Vt
ZXIpIHsgfQorICAgIGV4cGxpY2l0IEZldGNoQm9keShGZXRjaEJvZHlDb25zdW1lciYmIGNvbnN1
bWVyKSA6IG1fY29uc3VtZXIoV1RGTW92ZShjb25zdW1lcikpIHsgfQogICAgIGV4cGxpY2l0IEZl
dGNoQm9keShSZWY8UmVhZGFibGVTdHJlYW0+JiYgc3RyZWFtKSA6IG1fcmVhZGFibGVTdHJlYW0o
V1RGTW92ZShzdHJlYW0pKSB7IH0KIAogICAgIHZvaWQgY29uc3VtZShGZXRjaEJvZHlPd25lciYs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBjMjMxZjIwN2RhMjVjZDJhMTU4NjBk
MjhkYjNjZTE3ZTg1NzU3N2Q1Li45ZmZkNDliNDdjZWE2NDZiODg2OGUxOTA1NmEzYTFkZWY4NjI5
MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZldGNoQm9keUNvbnN1bWVy
LmgiCiAKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgorI2luY2x1ZGUgIkZvcm1EYXRhQ29uc3Vt
ZXIuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyRmllbGQuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vy
cy5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgpAQCAtMjQzLDYgKzI0NCw4IEBAIHN0YXRpYyB2b2lk
IHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBG
ZXRjaEJvZHlDb25zCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7CiAgICAgbV9i
dWZmZXIucmVzZXQoKTsKKyAgICBpZiAobV9mb3JtRGF0YUNvbnN1bWVyKQorICAgICAgICBtX2Zv
cm1EYXRhQ29uc3VtZXItPmNhbmNlbCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAg
ICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjU1
LDYgKzI1OCw2MSBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlV2l0aERhdGEoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdAogICAgIHJlc29sdmVXaXRoVHlw
ZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgbV90eXBlLCBjb250ZW50VHlwZSwgZGF0YSwgbGVu
Z3RoKTsKIH0KIAordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZVdpdGhGb3JtRGF0YShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IGNvbnN0IEZvcm1EYXRhJiBmb3JtRGF0YSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKK3sKKyAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YS5hc1NoYXJlZEJ1ZmZl
cigpKSB7CisgICAgICAgIHJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBjb250ZW50
VHlwZSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghY29udGV4dCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9mb3JtRGF0YUNvbnN1bWVyID0gbWFrZVVuaXF1ZTxG
b3JtRGF0YUNvbnN1bWVyPihmb3JtRGF0YSwgKmNvbnRleHQsIFt0aGlzLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgY29udGVudFR5cGUsIGJ1aWxkZXIgPSBTaGFyZWRCdWZmZXJCdWlsZGVy
IHsgfV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1
dG8mIHZhbHVlID0gcmVzdWx0LnJldHVyblZhbHVlKCk7CisgICAgICAgIGlmICghdmFsdWUuc2l6
ZSgpKSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZUFzQ29udGlndW91
cygpOworICAgICAgICAgICAgcmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIGNvbnRl
bnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgYnVpbGRlci5hcHBlbmQodmFsdWUuZGF0YSgpLCB2
YWx1ZS5zaXplKCkpOworICAgIH0pOworfQorCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjb25z
dW1lRm9ybURhdGFBc1N0cmVhbShjb25zdCBGb3JtRGF0YSYgZm9ybURhdGEsIEZldGNoQm9keVNv
dXJjZSYgc291cmNlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIGlm
IChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZvcm1EYXRhLmFzU2hhcmVkQnVmZmVyKCkpIHsKKyAgICAg
ICAgaWYgKHNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2hhcmVkQnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKSkpCisgICAg
ICAgICAgICBzb3VyY2UuY2xvc2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mb3JtRGF0YUNvbnN1bWVyID0g
bWFrZVVuaXF1ZTxGb3JtRGF0YUNvbnN1bWVyPihmb3JtRGF0YSwgKmNvbnRleHQsIFt0aGlzLCBz
b3VyY2UgPSBSZWYgeyBzb3VyY2UgfV0oYXV0byYmIHJlc3VsdCkgeworICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBzb3VyY2UtPmVycm9yKHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgYXV0byYgdmFsdWUgPSByZXN1bHQucmV0dXJuVmFsdWUoKTsKKyAgICAgICAgaWYgKCF2
YWx1ZS5zaXplKCkpIHsKKyAgICAgICAgICAgIHNvdXJjZS0+Y2xvc2UoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghc291cmNlLT5lbnF1ZXVlKEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUodmFsdWUuZGF0YSgpLCB2YWx1ZS5zaXplKCkpKSkKKyAgICAgICAg
ICAgIG1fZm9ybURhdGFDb25zdW1lci0+Y2FuY2VsKCk7CisgICAgfSk7Cit9CisKIHZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OmV4dHJhY3QoUmVhZGFibGVTdHJlYW0mIHN0cmVhbSwgUmVhZGFibGVT
dHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNT
RVJUKCFtX3NpbmspOwpAQCAtNDE2LDQgKzQ3NCwxMSBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVy
Ojpsb2FkaW5nU3VjY2VlZGVkKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgfQogfQog
CitGZXRjaEJvZHlDb25zdW1lciBGZXRjaEJvZHlDb25zdW1lcjo6Y2xvbmUoKQoreworICAgIEZl
dGNoQm9keUNvbnN1bWVyIGNsb25lIHsgbV90eXBlIH07CisgICAgY2xvbmUubV9jb250ZW50VHlw
ZSA9IG1fY29udGVudFR5cGU7CisgICAgcmV0dXJuIGNsb25lOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmgKaW5kZXggODcxZDJjMDg2MzMxYTk4Mjk0YTE2NmE0YjQyZTMxODRlMDM3NzcyYi4u
Nzk4MDVkNGFhNTY0YmEwY2Y1YWUxM2ExMjQ0OTNkMDYwMzFhZGJiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtMjksOCArMjks
MTAgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmV0Y2hCb2R5U291cmNlLmgiCisjaW5j
bHVkZSAiRm9ybURhdGFDb25zdW1lci5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1TaW5rLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogCkBAIC0zOSw2ICs0MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2I7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIEZl
dGNoQm9keVNvdXJjZTsKK2NsYXNzIEZvcm1EYXRhOwogY2xhc3MgUmVhZGFibGVTdHJlYW07CiAK
IGNsYXNzIEZldGNoQm9keUNvbnN1bWVyIHsKQEAgLTQ3LDYgKzUwLDggQEAgcHVibGljOgogCiAg
ICAgZXhwbGljaXQgRmV0Y2hCb2R5Q29uc3VtZXIoVHlwZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7
IH0KIAorICAgIEZldGNoQm9keUNvbnN1bWVyIGNsb25lKCk7CisKICAgICB2b2lkIGFwcGVuZChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25z
dCB7IHJldHVybiAhIW1fYnVmZmVyOyB9CkBAIC02NSw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGV4dHJhY3QoUmVhZGFibGVTdHJlYW0mLCBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVy
U2luazo6Q2FsbGJhY2smJik7CiAgICAgdm9pZCByZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlYWRhYmxlU3RyZWFtKik7CiAgICAgdm9p
ZCByZXNvbHZlV2l0aERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKTsKKyAgICB2b2lkIHJl
c29sdmVXaXRoRm9ybURhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgRm9ybURhdGEmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cisg
ICAgdm9pZCBjb25zdW1lRm9ybURhdGFBc1N0cmVhbShjb25zdCBGb3JtRGF0YSYsIEZldGNoQm9k
eVNvdXJjZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgIHZvaWQgbG9hZGluZ0Zh
aWxlZChjb25zdCBFeGNlcHRpb24mKTsKICAgICB2b2lkIGxvYWRpbmdTdWNjZWVkZWQoY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7CkBAIC04OCw2ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CiAgICAgYm9vbCBtX2lzTG9hZGluZyB7IGZh
bHNlIH07CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IG1fdXNlckdlc3R1cmVUb2tlbjsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybURhdGFDb25zdW1lcj4gbV9mb3JtRGF0YUNvbnN1bWVy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9Gb3JtRGF0YUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRm9ybURhdGFDb25zdW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjUwMjRkODc4ZmI3
NDlkYWUwNTQxNDMyOGRhMWE1NGYxYWMxZmMyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRm9ybURhdGFDb25zdW1lci5jcHAKQEAgLTAsMCArMSwxMjMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRm9ybURhdGFD
b25zdW1lci5oIgorCisjaW5jbHVkZSAiQmxvYkxvYWRlci5oIgorI2luY2x1ZGUgIkZvcm1EYXRh
LmgiCisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0Zvcm1EYXRhQ29uc3VtZXI6OkZvcm1EYXRhQ29uc3VtZXIoY29uc3QgRm9ybURhdGEmIGZvcm1E
YXRhLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBDYWxsYmFjayYmIGNhbGxiYWNr
KQorICAgIDogbV9mb3JtRGF0YShmb3JtRGF0YS5jb3B5KCkpCisgICAgLCBtX2NvbnRleHQoJmNv
bnRleHQpCisgICAgLCBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQorICAgICwgbV9maWxl
UXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkZvcm1EYXRhQ29uc3VtZXIgZmlsZSBxdWV1ZSIpKQor
eworICAgIHJlYWQoKTsKK30KKworRm9ybURhdGFDb25zdW1lcjo6fkZvcm1EYXRhQ29uc3VtZXIo
KQoreworfQorCit2b2lkIEZvcm1EYXRhQ29uc3VtZXI6OnJlYWQoKQoreworICAgIEFTU0VSVCht
X2NhbGxiYWNrKTsKKyAgICBBU1NFUlQobV9jb250ZXh0KTsKKworICAgIGlmIChtX2N1cnJlbnRF
bGVtZW50SW5kZXggPj0gbV9mb3JtRGF0YS0+ZWxlbWVudHMoKS5zaXplKCkpIHsKKyAgICAgICAg
bV9jYWxsYmFjayhTcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBXVEY6OnN3aXRjaE9uKG1fZm9ybURhdGEtPmVsZW1lbnRzKClbbV9jdXJyZW50
RWxlbWVudEluZGV4KytdLmRhdGEsCisgICAgW3RoaXNdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
Y29udGVudCkgeworICAgICAgICB0aGlzLT5jb25zdW1lKGNvbnRlbnQpOworICAgIH0sIFt0aGlz
XShjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKKyAg
ICAgICAgbV9maWxlUXVldWUtPmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCBpZGVudGlmaWVyID0gbV9jb250ZXh0LT5pZGVudGlmaWVyKCksIHBhdGggPSBmaWxlRGF0YS5m
aWxlbmFtZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oaWRlbnRpZmllciwgW3dlYWtUaGlzID0gV1RGTW92
ZSh3ZWFrVGhpcyksIGNvbnRlbnQgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShwYXRoKV0o
YXV0byYpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRlbnQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHdlYWtUaGlzLT5tX2NhbGxiYWNrKQorICAgICAgICAgICAgICAgICAg
ICAgICAgd2Vha1RoaXMtPm1fY2FsbGJhY2soRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJVbmFibGUgdG8gcmVhZCBmb3JtIGRhdGEgZmlsZSJfcyB9KTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+
Y29uc3VtZSgqY29udGVudCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSwg
W3RoaXNdKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRhJiBibG9iRGF0YSkg
eworICAgICAgICBtX2Jsb2JMb2FkZXIgPSBtYWtlVW5pcXVlPEJsb2JMb2FkZXI+KFt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XShCbG9iTG9hZGVyJikgbXV0YWJsZSB7CisgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGF1
dG8gbG9hZGVyID0gc3RkOjpleGNoYW5nZSh3ZWFrVGhpcy0+bV9ibG9iTG9hZGVyLCB7IH0pOwor
ICAgICAgICAgICAgaWYgKGF1dG8gb3B0aW9uYWxFcnJvckNvZGUgPSBsb2FkZXItPmVycm9yQ29k
ZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzLT5tX2NhbGxiYWNrKQorICAgICAg
ICAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jYWxsYmFjayhFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgIkZhaWxlZCB0byByZWFkIGZvcm0gZGF0YSBibG9iIl9zIH0pOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvIGRhdGEg
PSBsb2FkZXItPmFycmF5QnVmZmVyUmVzdWx0KCkpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMt
PmNvbnN1bWUoU3Bhbjxjb25zdCB1aW50OF90PiB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLT5kYXRhKCkpLCBkYXRhLT5ieXRlTGVuZ3RoKCkgfSk7CisgICAgICAgIH0pOworICAg
ICAgICBtX2Jsb2JMb2FkZXItPnN0YXJ0KGJsb2JEYXRhLnVybCwgbV9jb250ZXh0LmdldCgpLCBG
aWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1ZmZlcik7CisgICAgICAgIGlmICghbV9ibG9i
TG9hZGVyLT5pc0xvYWRpbmcoKSkgeworICAgICAgICAgICAgbV9jYWxsYmFjayhFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciwgIlVuYWJsZSB0byByZWFkIGZvcm0gZGF0YSBibG9iIl9zIH0p
OworICAgICAgICAgICAgbV9ibG9iTG9hZGVyID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0p
OworfQorCit2b2lkIEZvcm1EYXRhQ29uc3VtZXI6OmNvbnN1bWUoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBjb250ZW50KQoreworICAgIGNvbnN1bWUoU3Bhbjxjb25zdCB1aW50OF90PiB7IGNvbnRl
bnQuZGF0YSgpLCBjb250ZW50LnNpemUoKSB9KTsKK30KKwordm9pZCBGb3JtRGF0YUNvbnN1bWVy
Ojpjb25zdW1lKFNwYW48Y29uc3QgdWludDhfdD4gY29udGVudCkKK3sKKyAgICBpZiAoIW1fY2Fs
bGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2FsbGJhY2soU3Bhbjxjb25zdCB1aW50
OF90PiB7IGNvbnRlbnQuZGF0YSgpLCBjb250ZW50LnNpemUoKSB9KTsKKyAgICBpZiAoIW1fY2Fs
bGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIHJlYWQoKTsKK30KKwordm9pZCBGb3JtRGF0
YUNvbnN1bWVyOjpjYW5jZWwoKQoreworICAgIG1fY2FsbGJhY2sgPSBudWxscHRyOworICAgIGlm
IChtX2Jsb2JMb2FkZXIpIHsKKyAgICAgICAgbV9ibG9iTG9hZGVyLT5jYW5jZWwoKTsKKyAgICAg
ICAgbV9ibG9iTG9hZGVyID0gbnVsbHB0cjsKKyAgICB9CisgICAgbV9jb250ZXh0ID0gbnVsbHB0
cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9Gb3JtRGF0YUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0Zvcm1EYXRhQ29uc3VtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWI1NDRmZjA4ZThjNWU5
N2Y4ZTc1MjliMGNhMTg3ZjViOTlkOWZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9Gb3JtRGF0YUNvbnN1bWVyLmgKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRm9ybURhdGE7CisKK2NsYXNzIEZvcm1EYXRhQ29uc3VtZXIgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8Rm9ybURhdGFDb25zdW1lcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIHVzaW5nIENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChFeGNlcHRp
b25PcjxTcGFuPGNvbnN0IHVpbnQ4X3Q+Pik+OworICAgIEZvcm1EYXRhQ29uc3VtZXIoY29uc3Qg
Rm9ybURhdGEmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgQ2FsbGJhY2smJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgfkZvcm1EYXRhQ29uc3VtZXIoKTsKKworICAgIHZvaWQgY2FuY2VsKCk7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBjb25zdW1lKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAg
IHZvaWQgY29uc3VtZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAgICB2b2lkIHJlYWQoKTsKKwor
ICAgIFJlZjxGb3JtRGF0YT4gbV9mb3JtRGF0YTsKKyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4gbV9jb250ZXh0OworICAgIENhbGxiYWNrIG1fY2FsbGJhY2s7CisKKyAgICBzaXpl
X3QgbV9jdXJyZW50RWxlbWVudEluZGV4IHsgMCB9OworICAgIFJlZjxXb3JrUXVldWU+IG1fZmls
ZVF1ZXVlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGJkNWE3NDc5Y2Iz
OWU0NmNjOTEwNDAwZjRlZTM4NDkzMjRjNzUzMWYuLmY2ZjAwYWU4YWZkZjEwMmEzNmYxMjUxNDU3
NDEyMmEzMDljOTQwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC04OCw2ICs4OCw3IEBAIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcAogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcAorTW9kdWxlcy9mZXRjaC9Gb3JtRGF0YUNvbnN1bWVyLmNwcAogTW9kdWxlcy9mZXRjaC9X
aW5kb3dPcldvcmtlckdsb2JhbFNjb3BlRmV0Y2guY3BwCiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nl
c3MvRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZS5jcHAKIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vz
cy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYzllYzI1YzBhOTI0NjA2YWUyZWIzMjc2
NGExNzhkZGNjOTQ0M2Y4Li43MGJlMjgzYTAzNGViMzA1NDkyMzMxMGVhNWIyMzYwZDBlZmJmMGQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04NDgxLDYgKzg0ODEsOCBAQAogCQkzRkJDNEFGMTE4OTg4MTU2MDA0NkVFMzggLyog
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0ZCQzRBRjIxODk4ODE1NjAwNDZFRTM4IC8qIFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxMDI0RkM4MjNDRjI1NEYwMEZERjk4RSAvKiBTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEwMkVFMEUyNzgzMEU2MzAwRDZCRTc0
IC8qIEZvcm1EYXRhQ29uc3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybURhdGFDb25zdW1lci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTAyRUUxMDI3ODMwRTYzMDBENkJFNzQg
LyogRm9ybURhdGFDb25zdW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtRGF0YUNvbnN1
bWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwNzkwOEExRkMzRTRGMjAw
NjFCMjdBIC8qIENsaWVudE9yaWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDbGllbnRPcmlnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwOTM4MkMy
MzQ3ODUwRTAwOTQyOEJBIC8qIEpTQWJvcnRTaWduYWxDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNBYm9ydFNpZ25hbEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxMEE4RUY0MjRGODIzQjkwMDRGOTA3MCAvKiBUZXh0RW5jb2RlclN0cmVhbS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gVGV4dEVuY29kZXJTdHJlYW0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjEyNzAsNiArMjEyNzIsOCBAQAogCQkJCTQxMzAxNUQ1MUM3QjU3MDQwMDA5MUM2RSAvKiBGZXRj
aFJlc3BvbnNlLmNwcCAqLywKIAkJCQk0MTMwMTVENjFDN0I1NzA0MDAwOTFDNkUgLyogRmV0Y2hS
ZXNwb25zZS5oICovLAogCQkJCTQxMzAxNUQ3MUM3QjU3MDQwMDA5MUM2RSAvKiBGZXRjaFJlc3Bv
bnNlLmlkbCAqLywKKwkJCQk0MTAyRUUxMDI3ODMwRTYzMDBENkJFNzQgLyogRm9ybURhdGFDb25z
dW1lci5jcHAgKi8sCisJCQkJNDEwMkVFMEUyNzgzMEU2MzAwRDZCRTc0IC8qIEZvcm1EYXRhQ29u
c3VtZXIuaCAqLywKIAkJCQk3QzJFMEJEMTI1MTA2QUM0MDA1RjNDODcgLyogV2luZG93T3JXb3Jr
ZXJHbG9iYWxTY29wZStGZXRjaC5pZGwgKi8sCiAJCQkJN0MyRTBCRDAyNTEwNkFDNDAwNUYzQzg3
IC8qIFdpbmRvd09yV29ya2VyR2xvYmFsU2NvcGVGZXRjaC5jcHAgKi8sCiAJCQkJN0MyRTBCQ0Yy
NTEwNkFDNDAwNUYzQzg3IC8qIFdpbmRvd09yV29ya2VyR2xvYmFsU2NvcGVGZXRjaC5oICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2JMb2FkZXIuaAppbmRleCA4YjFhNjExN2YyNmU3MTdiYmM4Zjkx
ZmFlYmRkNDQwNzc1NjFhNThmLi5jZDBkMGMxYjlhNTQzZGIwNDI1M2E3MmRiZjVkMDc3YWMxZmM1
MzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JMb2FkZXIuaApAQCAtNDMsNiArNDMsNyBAQCBw
dWJsaWM6CiAgICAgfkJsb2JMb2FkZXIoKTsKIAogICAgIHZvaWQgc3RhcnQoQmxvYiYsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwZSk7CisgICAgdm9p
ZCBzdGFydChjb25zdCBVUkwmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVJlYWRlckxv
YWRlcjo6UmVhZFR5cGUpOwogCiAgICAgdm9pZCBjYW5jZWwoKTsKICAgICBib29sIGlzTG9hZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVyICYmIG1fY29tcGxldGlvbkhhbmRsZXI7IH0KQEAg
LTg5LDYgKzkwLDEzIEBAIGlubGluZSB2b2lkIEJsb2JMb2FkZXI6OnN0YXJ0KEJsb2ImIGJsb2Is
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEZpbGVSCiAgICAgbV9sb2FkZXItPnN0
YXJ0KGNvbnRleHQsIGJsb2IpOwogfQogCitpbmxpbmUgdm9pZCBCbG9iTG9hZGVyOjpzdGFydChj
b25zdCBVUkwmIGJsb2JVUkwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEZpbGVS
ZWFkZXJMb2FkZXI6OlJlYWRUeXBlIHJlYWRUeXBlKQoreworICAgIEFTU0VSVCghbV9sb2FkZXIp
OworICAgIG1fbG9hZGVyID0gbWFrZVVuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihyZWFkVHlwZSwg
dGhpcyk7CisgICAgbV9sb2FkZXItPnN0YXJ0KGNvbnRleHQsIGJsb2JVUkwpOworfQorCiBpbmxp
bmUgdm9pZCBCbG9iTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKCkKIHsKICAgICBtX2NvbXBsZXRp
b25IYW5kbGVyKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlckxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuY3BwCmluZGV4IGI3Zjc1ZWRhM2IyMzNiMTliMjBlZDcwNDI4OTQ5YmIzMzU4OThlODEuLjc0
ZWY1ZjRiOGI0N2E3MmE1NTkwODdmYWZhNzE3NTY4OGU4ZDU2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAtNzMsNiArNzMsMTEgQEAgRmlsZVJl
YWRlckxvYWRlcjo6fkZpbGVSZWFkZXJMb2FkZXIoKQogfQogCiB2b2lkIEZpbGVSZWFkZXJMb2Fk
ZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IEJsb2ImIGJsb2IpCit7CisgICAgc3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgYmxvYi51
cmwoKSk7Cit9CisKK3ZvaWQgRmlsZVJlYWRlckxvYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgVVJMJiBibG9iVVJMKQogewog
ICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIApAQCAtODIsNyArODcsNyBAQCB2
b2lkIEZpbGVSZWFkZXJMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIEJsbwogICAgICAgICBmYWlsZWQoU2VjdXJpdHlFcnJvcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnBvbGljeUNvbnRhaW5lcigpLCBtX3VybEZvclJlYWRpbmcsIGJs
b2IudXJsKCkpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5wb2xpY3lDb250YWluZXIoKSwgbV91cmxGb3JSZWFkaW5nLCBibG9iVVJMKTsKIAog
ICAgIC8vIENvbnN0cnVjdCBhbmQgbG9hZCB0aGUgcmVxdWVzdC4KICAgICBSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdChtX3VybEZvclJlYWRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVS
ZWFkZXJMb2FkZXIuaAppbmRleCA1MzljMjMwNGE4MmU2M2FhZGZlMmM1NjdjOThkMGI4YzY4N2E4
ZTlmLi5kYmFlOWUzMzUwOTBhOGI5NmRmYjc2ZWI2ZTE1MTEyNTk4OGU2MGVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJs
aWM6CiAgICAgfkZpbGVSZWFkZXJMb2FkZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsb2ImKTsKKyAgICB2b2lkIHN0YXJ0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNhbmNlbCgpOwogCiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5jcHAKaW5kZXggOGE5MTM4ZDIzYjBkNWRlYzUzZDI5OTBkZWQ1ZGI3NzYzNTRl
NTI0MC4uOWQ5YWNkNjRhMTYyMTg0ZGNjMTJhNGQ0NDNlYmUwMDJhNjUyYjZiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guY3BwCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IG5hbWVzcGFjZSBTZXJ2aWNlV29ya2VyRmV0Y2ggewogCiAvLyBodHRwczovL2ZldGNoLnNwZWMu
d2hhdHdnLm9yZy8jaHR0cC1mZXRjaCBzdGVwIDMuMwotc3RhdGljIGlubGluZSBzdGQ6Om9wdGlv
bmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIEZldGNoT3B0aW9uczo6TW9kZSBtb2RlLCBGZXRjaE9wdGlvbnM6OlJlZGly
ZWN0IHJlZGlyZWN0KQorc3RhdGljIGlubGluZSBSZXNvdXJjZUVycm9yIHZhbGlkYXRlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIEZldGNoT3B0aW9uczo6TW9kZSBt
b2RlLCBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0IHJlZGlyZWN0KQogewogICAgIGlmIChyZXNwb25z
ZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6RXJyb3IpCiAgICAgICAgIHJldHVy
biBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2Uu
dXJsKCksICJSZXNwb25zZSBzZXJ2ZWQgYnkgc2VydmljZSB3b3JrZXIgaXMgYW4gZXJyb3IiX3Ms
IFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwsIFJlc291cmNlRXJyb3I6OklzU2FuaXRpemVk
OjpZZXMgfTsKQEAgLTg0LDggKzg0LDggQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJl
ZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4sIHMKICAgICB9
CiAKICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2UgPSByZXNwb25zZS0+cmVzb3VyY2VSZXNwb25z
ZSgpOwotICAgIGlmIChhdXRvIGVycm9yID0gdmFsaWRhdGVSZXNwb25zZShyZXNvdXJjZVJlc3Bv
bnNlLCBtb2RlLCByZWRpcmVjdCkpIHsKLSAgICAgICAgY2xpZW50LT5kaWRGYWlsKGVycm9yLnZh
bHVlKCkpOworICAgIGlmIChhdXRvIGVycm9yID0gdmFsaWRhdGVSZXNwb25zZShyZXNvdXJjZVJl
c3BvbnNlLCBtb2RlLCByZWRpcmVjdCk7ICFlcnJvci5pc051bGwoKSkgeworICAgICAgICBjbGll
bnQtPmRpZEZhaWwoZXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmQ0
MGU3MjQzNjUwNDhhNDk2MGJkMDk4ZTdkODA3MTE3MjIzY2UzNC4uN2FhMDg2Y2E0MzMwZWFiZWY5
MjVlYzMxOGQyM2UwOTI0NTRiMjI2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAxLTAz
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBGZXRjaCB1c2lu
ZyBGb3JtRGF0YSB3aXRoIGZpbGUgZG9lc24ndCBnbyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc0NjEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQxOTc1NTQ0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIGFkZGluZyBhIHRlc3QgdG8g
aHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0cmVhbS5odG1sLCB3ZSBmaXggdGhlIG90
aGVyIHRlc3RzIHRoYXQgc2hvdWxkIGFsbCBiZSBwYXNzaW5nLgorCisgICAgICAgICogaHR0cC93
cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0cmVhbS5odG1sOgorICAgICAgICAqIGh0dHAvd3B0
L2ZldGNoL3JlcXVlc3QtY29uc3VtZS1zdHJlYW0tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0
dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mb3JtLWRhdGEtdXBsb2FkLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQt
d29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZm9y
bS1kYXRhLXVwbG9hZC5odG1sOiBBZGRlZC4KKwogMjAyMi0wMS0wMyAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIHNlY3VyZSB3ZWJzb2NrZXQg
Y29ubmVjdGlvbnMgaW4gc2VydmljZSB3b3JrZXJzIGNhbiB0cmlnZ2VyIGF1dGhlbnRpY2F0aW9u
IGNoYWxsZW5nZSBjYWxsYmFja3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2Zl
dGNoL3JlcXVlc3QtY29uc3VtZS1zdHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0cmVhbS1leHBlY3RlZC50eHQKaW5kZXggY2Rk
NjY5ODIyMzUwZTRiMGE1YTQ3OWZiMGZhY2JlYTY1YzNiMjRlOC4uMzVhYzc3YjU0ZWZkNWJhYTE5
MTY0N2IwNjczZTk2OGRhMzc5NzYxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
ZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0cmVhbS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0cmVhbS1leHBlY3RlZC50eHQKQEAg
LTEsOSArMSwxMCBAQAogCi1GQUlMIFJlYWQgZW1wdHkgdGV4dCByZXF1ZXN0J3MgYm9keSBhcyBy
ZWFkYWJsZVN0cmVhbSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBSZXRyaWV2ZSBhbmQgdmVyaWZ5IHN0
cmVhbSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgb2JqZWN0ICIiIGxlbmd0aCAwLCBn
b3Qgb2JqZWN0ICIxMjMsMzQsMTA3LDEwMSwxMjEsMzQsNTgsMzIsMzQsMTE4LDk3LDEwOCwxMTcs
MTAxLDM0LDEyNSIgbGVuZ3RoIDE2Ci1GQUlMIFJlYWQgZW1wdHkgYmxvYiByZXF1ZXN0J3MgYm9k
eSBhcyByZWFkYWJsZVN0cmVhbSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBSZXRyaWV2ZSBhbmQgdmVy
aWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgb2JqZWN0ICIiIGxlbmd0
aCAwLCBnb3Qgb2JqZWN0ICIxMjMsMzQsMTA3LDEwMSwxMjEsMzQsNTgsMzIsMzQsMTE4LDk3LDEw
OCwxMTcsMTAxLDM0LDEyNSIgbGVuZ3RoIDE2Ci1GQUlMIFJlYWQgYmxvYiByZXF1ZXN0J3MgYm9k
eSBhcyByZWFkYWJsZVN0cmVhbSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBSZXRyaWV2ZSBhbmQgdmVy
aWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgb2JqZWN0ICIxMTUsMzIs
MTA1LDExNSwzMiwxMTQsMTAxLDExMywxMTcsMTAxLDExNSwxMTYsMzksMTE1LDMyLDk4LDExMSwx
MDAsMTIxLDM0IiBsZW5ndGggMjQsIGdvdCBvYmplY3QgIjEyMywzNCwxMDcsMTAxLDEyMSwzNCw1
OCwzMiwzNCwxMTgsOTcsMTA4LDExNywxMDEsMzQsMTI1IiBsZW5ndGggMTYKLUZBSUwgUmVhZCB0
ZXh0IHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIGFzc2VydF9hcnJheV9lcXVhbHM6
IFJldHJpZXZlIGFuZCB2ZXJpZnkgc3RyZWFtIGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJh
eSBvYmplY3QgIjExNSwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTEzLDExNywxMDEsMTE1LDExNiwz
OSwxMTUsMzIsOTgsMTExLDEwMCwxMjEsMzQiIGxlbmd0aCAyNCwgZ290IG9iamVjdCAiMTIzLDM0
LDEwNywxMDEsMTIxLDM0LDU4LDMyLDM0LDExOCw5NywxMDgsMTE3LDEwMSwzNCwxMjUiIGxlbmd0
aCAxNgotRkFJTCBSZWFkIFVSTFNlYXJjaFBhcmFtcyByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJs
ZVN0cmVhbSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBSZXRyaWV2ZSBhbmQgdmVyaWZ5IHN0cmVhbSBs
ZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgb2JqZWN0ICIxMTAsOTcsMTA5LDEwMSw2MSwx
MTgsOTcsMTA4LDExNywxMDEiIGxlbmd0aCAxMCwgZ290IG9iamVjdCAiMTIzLDM0LDEwNywxMDEs
MTIxLDM0LDU4LDMyLDM0LDExOCw5NywxMDgsMTE3LDEwMSwzNCwxMjUiIGxlbmd0aCAxNgotRkFJ
TCBSZWFkIGFycmF5IGJ1ZmZlciByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSBhc3Nl
cnRfYXJyYXlfZXF1YWxzOiBSZXRyaWV2ZSBhbmQgdmVyaWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZl
ciwgZXhwZWN0ZWQgYXJyYXkgb2JqZWN0ICIxMTUsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExMywx
MTcsMTAxLDExNSwxMTYsMzksMTE1LDMyLDk4LDExMSwxMDAsMTIxLDM0IiBsZW5ndGggMjQsIGdv
dCBvYmplY3QgIjEyMywzNCwxMDcsMTAxLDEyMSwzNCw1OCwzMiwzNCwxMTgsOTcsMTA4LDExNywx
MDEsMzQsMTI1IiBsZW5ndGggMTYKLUZBSUwgUmVhZCBmb3JtIGRhdGEgcmVxdWVzdCdzIGJvZHkg
YXMgcmVhZGFibGVTdHJlYW0gYXNzZXJ0X2FycmF5X2VxdWFsczogUmV0cmlldmUgYW5kIHZlcmlm
eSBzdHJlYW0gbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IG9iamVjdCAiMTEwLDk3LDEw
OSwxMDEsNjEsMTE4LDk3LDEwOCwxMTcsMTAxIiBsZW5ndGggMTAsIGdvdCBvYmplY3QgIjEyMywz
NCwxMDcsMTAxLDEyMSwzNCw1OCwzMiwzNCwxMTgsOTcsMTA4LDExNywxMDEsMzQsMTI1IiBsZW5n
dGggMTYKK1BBU1MgUmVhZCBlbXB0eSB0ZXh0IHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3Ry
ZWFtCitQQVNTIFJlYWQgZW1wdHkgYmxvYiByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVh
bQorUEFTUyBSZWFkIGJsb2IgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0KK1BBU1Mg
UmVhZCB0ZXh0IHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWQgVVJM
U2VhcmNoUGFyYW1zIHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWQg
YXJyYXkgYnVmZmVyIHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWQg
Zm9ybSBkYXRhIHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWQgZm9y
bSBkYXRhIHdpdGggYmxvYiByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9mZXRjaC9yZXF1ZXN0LWNvbnN1bWUtc3RyZWFt
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9mZXRjaC9yZXF1ZXN0LWNvbnN1bWUtc3RyZWFt
Lmh0bWwKaW5kZXggYTU4YTQ3MjAwNDNjYjk0MTE3MWI3MzYxZTA5ZWI4ZjE0OWUyYmFiNy4uYzQ5
YTk3YzJkNDg0Mjc0ZWZmNzkxMzQ2YzczYmE1NGU2Y2M0MjUyZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0cmVhbS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY29uc3VtZS1zdHJlYW0uaHRtbApAQCAt
MTEsOSArMTEsMjUgQEAKICAgPC9oZWFkPgogICA8Ym9keT4KICAgICA8c2NyaXB0PgorYXN5bmMg
ZnVuY3Rpb24gZ2V0U3RyaW5nRnJvbVN0cmVhbShyZWFkZXIsIGN1cnJlbnRWYWx1ZSkgeworICAg
IGNvbnN0IGRhdGEgPSBhd2FpdCByZWFkZXIucmVhZCgpOworICAgIGlmICghZGF0YS5kb25lKSB7
CisgICAgICAgIGxldCBidWZmZXI7CisgICAgICAgIGlmIChjdXJyZW50VmFsdWUpIHsKKyAgICAg
ICAgICAgIGNvbnN0IG5ld0J1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihkYXRhLnZhbHVlLmxlbmd0
aCArIGN1cnJlbnRWYWx1ZS5sZW5ndGgpOworICAgICAgICAgICAgYnVmZmVyID0gbmV3IFVpbnQ4
QXJyYXkobmV3QnVmZmVyKTsKKyAgICAgICAgICAgIGJ1ZmZlci5zZXQoY3VycmVudFZhbHVlLCAw
KTsKKyAgICAgICAgICAgIGJ1ZmZlci5zZXQoZGF0YS52YWx1ZSwgY3VycmVudFZhbHVlLmxlbmd0
aCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYnVmZmVyID0gZGF0YS52YWx1ZTsKKyAg
ICAgICAgcmV0dXJuIGdldFN0cmluZ0Zyb21TdHJlYW0ocmVhZGVyLCBidWZmZXIpOworICAgIH0K
KyAgICByZXR1cm4gKG5ldyBUZXh0RGVjb2RlcikuZGVjb2RlKGN1cnJlbnRWYWx1ZSk7Cit9CisK
IGZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RXaXRoQm9keShib2R5KQogewotICAgIHJldHVybiBuZXcg
UmVxdWVzdCgiIiwge2JvZHk6ICJ7XCJrZXlcIjogXCJ2YWx1ZVwifSIsIG1ldGhvZDogIlBPU1Qi
fSk7CisgICAgcmV0dXJuIG5ldyBSZXF1ZXN0KCIiLCB7Ym9keTogYm9keSwgbWV0aG9kOiAiUE9T
VCJ9KTsKIH0KIAogcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKQEAgLTU4LDEwICs3NCwy
OSBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewogICAgIHJldHVybiB2YWxpZGF0ZVN0
cmVhbUZyb21TdHJpbmcoY3JlYXRlUmVxdWVzdFdpdGhCb2R5KGFycmF5QnVmZmVyKS5ib2R5Lmdl
dFJlYWRlcigpLCB0ZXh0RGF0YSk7CiB9LCAiUmVhZCBhcnJheSBidWZmZXIgcmVxdWVzdCdzIGJv
ZHkgYXMgcmVhZGFibGVTdHJlYW0iKTsKIAotcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsK
K3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewogICAgIHZhciByZXF1ZXN0ID0gY3JlYXRl
UmVxdWVzdFdpdGhCb2R5KGZvcm1EYXRhKTsKLSAgICByZXR1cm4gdmFsaWRhdGVTdHJlYW1Gcm9t
U3RyaW5nKHJlcXVlc3QuYm9keS5nZXRSZWFkZXIoKSwgIm5hbWU9dmFsdWUiKTsKKyAgICBjb25z
dCB2YWx1ZSA9IGF3YWl0IGdldFN0cmluZ0Zyb21TdHJlYW0ocmVxdWVzdC5ib2R5LmdldFJlYWRl
cigpKTsKKworICAgIGFzc2VydF90cnVlKHZhbHVlLmluY2x1ZGVzKCduYW1lPSJuYW1lIicpLCAi
bmFtZSIpOworICAgIGFzc2VydF90cnVlKHZhbHVlLmluY2x1ZGVzKCd2YWx1ZScpLCAibmFtZSIp
OwogfSwgIlJlYWQgZm9ybSBkYXRhIHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIik7
CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IGZvcm1EYXRhID0g
bmV3IEZvcm1EYXRhKCk7CisgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFsiJ0hlbGxvJyJdLCB7
ICJ0eXBlIiA6ICJ0ZXh0L3BsYWluIiB9KTsKKyAgICBmb3JtRGF0YS5hcHBlbmQoImJsb2IiLCBi
bG9iLCAiYmxvYi5maWxlIik7CisgICAgZm9ybURhdGEuYXBwZW5kKCJuYW1lIiwgInZhbHVlIik7
CisKKyAgICBjb25zdCByZXF1ZXN0ID0gY3JlYXRlUmVxdWVzdFdpdGhCb2R5KGZvcm1EYXRhKTsK
KyAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IGdldFN0cmluZ0Zyb21TdHJlYW0ocmVxdWVzdC5ib2R5
LmdldFJlYWRlcigpKTsKKworICAgIGFzc2VydF90cnVlKHZhbHVlLmluY2x1ZGVzKCduYW1lPSJu
YW1lIicpLCAibmFtZSIpOworICAgIGFzc2VydF90cnVlKHZhbHVlLmluY2x1ZGVzKCd2YWx1ZScp
LCAibmFtZSIpOworCisgICAgYXNzZXJ0X3RydWUodmFsdWUuaW5jbHVkZXMoJ25hbWU9ImJsb2Ii
JyksICJibG9iIik7CisgICAgYXNzZXJ0X3RydWUodmFsdWUuaW5jbHVkZXMoJ0hlbGxvJyksICJI
ZWxsbyIpOworfSwgIlJlYWQgZm9ybSBkYXRhIHdpdGggYmxvYiByZXF1ZXN0J3MgYm9keSBhcyBy
ZWFkYWJsZVN0cmVhbSIpOwogICAgIDwvc2NyaXB0PgogICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZm9ybS1kYXRhLXVw
bG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMv
Zm9ybS1kYXRhLXVwbG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJkYzNjOGU5ZjYwYmVi
ZWY5OGVhNzYxZTU4ZWRjMjVmMWMxZDZhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mb3JtLWRhdGEtdXBsb2FkLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEyIEBACitPUEVOIEZJTEUgUEFORUwKKworCitQQVNTIFNldHVwIHdvcmtlcgor
UEFTUyBDcmVhdGUgY2hhbm5lbCB3aXRoIHdvcmtlcgorUEFTUyBTZXR1cCBmcmFtZQorUEFTUyBT
ZXR1cCBmaWxlIHRvIHVwbG9hZAorUEFTUyBTZXR1cCBmaWxlIGZvcm0gZGF0YQorUEFTUyBVcGxv
YWQgaW50ZXJjZXB0ZWQgYnkgc2VydmljZSB3b3JrZXIKK1BBU1MgVXBsb2FkIGNsb25lZCBieSBz
ZXJ2aWNlIHdvcmtlcgorUEFTUyBEZWxldGUgdGVtcG9yYXJ5IGZpbGUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQtd29y
a2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL2Zvcm0tZGF0YS11
cGxvYWQtd29ya2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3OGU1OTU3YWZmMzdkMWYzMjA3ZTJmNDk4YTE4
ZDhiMTkxYzM2Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvZm9ybS1kYXRhLXVwbG9hZC13b3JrZXIuanMKQEAgLTAsMCArMSwxOCBAQAor
YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGFzeW5jIChlKSA9PiB7CisgICAgaWYgKCFlLmRh
dGEucG9ydCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2VsZi5wb3J0ID0gZS5kYXRhLnBvcnQ7
CisgICAgc2VsZi5wb3J0LnBvc3RNZXNzYWdlKCJvayIpOworfSk7CisKK2FkZEV2ZW50TGlzdGVu
ZXIoImZldGNoIiwgYXN5bmMgKGUpID0+IHsKKyAgICBpZiAoZS5yZXF1ZXN0LnVybC5pbmNsdWRl
cygiY2xvbmUiKSkgeworc2VsZi5jb25lZCA9IGUucmVxdWVzdC5jbG9uZSgpOworICAgICAgICBj
b25zdCBjbG9uZWQgPSBlLnJlcXVlc3QuY2xvbmUoKTsKKyAgICAgICAgZS5yZXNwb25kV2l0aChm
ZXRjaChlLnJlcXVlc3QuY2xvbmUoKSkpOworICAgICAgICBzZWxmLnBvcnQucG9zdE1lc3NhZ2Uo
YXdhaXQgY2xvbmVkLnRleHQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZS5yZXNw
b25kV2l0aChmZXRjaChlLnJlcXVlc3QpKTsKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvc2VydmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mb3JtLWRhdGEtdXBsb2FkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzNlMDE5ODZhYWRiZjhhZDQxNTcwMTY1ZDQzZjU5YzM3N2QwMDk0MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mb3JtLWRhdGEt
dXBsb2FkLmh0bWwKQEAgLTAsMCArMSwxNDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvd2Via2l0LXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citjb25zdCB0ZW1wRmlsZUNvbnRlbnQgPSAi
VEVTVCI7Citjb25zdCB0ZW1wRmlsZU5hbWUgPSAidGVzdC50bXAiOworCit2YXIgZmlsZUlucHV0
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKK2ZpbGVJbnB1dC50eXBlID0gJ2Zp
bGUnOworZmlsZUlucHV0LnN0eWxlLndpZHRoID0gIjEwMCUiOyAvLyBTbyB0aGF0IGFueSBtYW51
YWwgdGVzdGluZyB3aWxsIHNob3cgZnVsbCBmaWxlIG5hbWVzCitkb2N1bWVudC5ib2R5Lmluc2Vy
dEJlZm9yZShmaWxlSW5wdXQsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK3ZhciBzY29w
ZSA9ICJyZXNvdXJjZXMiOwordmFyIGFjdGl2ZVdvcmtlcjsKK3ZhciBmcmFtZTsKK3ZhciBmaWxl
RnJhbWU7Cit2YXIgZm9ybURhdGE7Cit2YXIgZmlsZVNpemU7CisKK2Z1bmN0aW9uIHdpdGhfaWZy
YW1lKHVybCkgeworICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7Cisg
ICAgICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAg
ICAgICBmcmFtZS5jbGFzc05hbWUgPSAndGVzdC1pZnJhbWUnOworICAgICAgICBmcmFtZS5zcmMg
PSB1cmw7CisgICAgICAgIGZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyByZXNvbHZlKGZyYW1l
KTsgfTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFtZSk7CisgICAgfSk7
Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVVcGxvYWQoKQoreworICAgIGxldCByZXNvbHZlLCByZWpl
Y3Q7CisgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlXywgcmVqZWN0Xykg
PT4geworICAgICAgICByZXNvbHZlID0gcmVzb2x2ZV87CisgICAgICAgIHJlamVjdCA9IHJlamVj
dF87CisgICAgfSk7CisgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoInRlc3QgdGltZWQgb3V0
IiksIDUwMDApOworCisgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImlucHV0IilbMF07CisgICAgaW5wdXQub25jaGFuZ2UgPSBhc3luYyAoZSkgPT4geworICAg
ICAgICB2YXIgZm9ybURhdGEgPSBuZXcgRm9ybURhdGE7CisgICAgICAgIGZvcm1EYXRhLmFwcGVu
ZCgiZmlsZSIsIGUudGFyZ2V0LmZpbGVzWzBdLCB0ZW1wRmlsZU5hbWUpOworICAgICAgICBmaWxl
U2l6ZSA9IGUudGFyZ2V0LmZpbGVzWzBdLnNpemU7CisgICAgICAgIHJlc29sdmUoZm9ybURhdGEp
OworICAgIH07CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5zZXRPcGVuUGFuZWxGaWxlcyhbdGVtcEZpbGVQYXRoXSk7CisKKyAgICAgICAgdmFyIGNl
bnRlclggPSBpbnB1dC5vZmZzZXRMZWZ0ICsgaW5wdXQub2Zmc2V0V2lkdGggLyAyOworICAgICAg
ICB2YXIgY2VudGVyWSA9IGlucHV0Lm9mZnNldFRvcCArIGlucHV0Lm9mZnNldEhlaWdodCAvIDI7
CisgICAgICAgIFVJSGVscGVyLmFjdGl2YXRlQXQoY2VudGVyWCwgY2VudGVyWSk7CisgICAgfQor
ICAgIHJldHVybiBwcm9taXNlOworfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VT
ZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKHRydWUpOworICAgICAgICBhd2FpdCBmZXRjaCgi
IikudGhlbigoKSA9PiB7IH0sICgpID0+IHsgfSk7CisgICAgfQorCisgICAgdmFyIHJlZ2lzdHJh
dGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJmb3JtLWRhdGEt
dXBsb2FkLXdvcmtlci5qcyIsIHsgc2NvcGUgOiBzY29wZSB9KTsKKyAgICBhY3RpdmVXb3JrZXIg
PSByZWdpc3RyYXRpb24uYWN0aXZlOworICAgIGlmICghYWN0aXZlV29ya2VyKSB7CisgICAgICAg
IGFjdGl2ZVdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgICAgICBhd2FpdCBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgICAgIGFjdGl2ZVdvcmtlci5hZGRFdmVu
dExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsICgpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoYWN0
aXZlV29ya2VyLnN0YXRlID09PSAiYWN0aXZhdGVkIikKKyAgICAgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KK30sICJTZXR1cCB3
b3JrZXIiKTsKKworY29uc3QgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOworcHJvbWlz
ZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgYWN0aXZlV29ya2VyLnBvc3RNZXNzYWdlKHsg
cG9ydDogY2hhbm5lbC5wb3J0MSB9LCBbY2hhbm5lbC5wb3J0MV0pOworICAgIGF3YWl0IG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4gY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSByZXNvbHZlKTsKK30s
ICJDcmVhdGUgY2hhbm5lbCB3aXRoIHdvcmtlciIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRl
c3QpID0+IHsKKyAgICBmcmFtZSA9IGF3YWl0IHdpdGhfaWZyYW1lKCJyZXNvdXJjZXMvZmlsZS11
cGxvYWQtaWZyYW1lLmh0bWwiKTsKK30sICJTZXR1cCBmcmFtZSIpOworCitwcm9taXNlX3Rlc3Qo
YXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB3aW5kb3cub25tZXNzYWdlID0gcmVzb2x2ZSk7CisgICAgZmlsZUZyYW1lID0gYXdhaXQg
d2l0aF9pZnJhbWUoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvY3JlYXRlLXRlbXAt
ZmlsZS1pZnJhbWUuaHRtbCIpOworICAgIGxldCBldmVudCA9IGF3YWl0IHByb21pc2U7CisgICAg
dGVtcEZpbGVQYXRoID0gZXZlbnQuZGF0YTsKK30sICJTZXR1cCBmaWxlIHRvIHVwbG9hZCIpOwor
Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBmb3JtRGF0YSA9IGF3YWl0IHBy
ZXBhcmVVcGxvYWQoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGZpbGVTaXplLCA0KTsKK30sICJTZXR1
cCBmaWxlIGZvcm0gZGF0YSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAg
ICBjb25zdCBibG9iID0gbmV3IEJsb2IoWyInSGVsbG8nIl0sIHsgInR5cGUiIDogInRleHQvcGxh
aW4iIH0pOworICAgIGZvcm1EYXRhLmFwcGVuZCgiYmxvYiIsIGJsb2IsICJibG9iLmZpbGUiKTsK
KyAgICBmb3JtRGF0YS5hcHBlbmQoIm5hbWUiLCAidmFsdWUiKTsKKworICAgIGNvbnN0IHJlc3Bv
bnNlID0gYXdhaXQgZnJhbWUuY29udGVudFdpbmRvdy5mZXRjaCgiL1dlYktpdC9zZXJ2aWNlLXdv
cmtlcnMvcmVzb3VyY2VzL2ZpbGUtdXBsb2FkLWNoZWNrLnB5Iiwge21ldGhvZDogIlBPU1QiLCBi
b2R5OiBmb3JtRGF0YX0pOworICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7
CisKKyAgICBhc3NlcnRfdHJ1ZSh0ZXh0LmluY2x1ZGVzKHRlbXBGaWxlQ29udGVudCksICJjb250
ZW50Iik7CisgICAgYXNzZXJ0X3RydWUodGV4dC5pbmNsdWRlcyh0ZW1wRmlsZU5hbWUpLCAibmFt
ZSIpOworCisgICAgYXNzZXJ0X3RydWUodGV4dC5pbmNsdWRlcygnbmFtZT0ibmFtZSInKSwgIm5h
bWUiKTsKKyAgICBhc3NlcnRfdHJ1ZSh0ZXh0LmluY2x1ZGVzKCd2YWx1ZScpLCAibmFtZSIpOwor
CisgICAgYXNzZXJ0X3RydWUodGV4dC5pbmNsdWRlcygnbmFtZT0iYmxvYiInKSwgImJsb2IiKTsK
KyAgICBhc3NlcnRfdHJ1ZSh0ZXh0LmluY2x1ZGVzKCdIZWxsbycpLCAiSGVsbG8iKTsKK30sICJV
cGxvYWQgaW50ZXJjZXB0ZWQgYnkgc2VydmljZSB3b3JrZXIiKTsKKworcHJvbWlzZV90ZXN0KGFz
eW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFsiJ0hlbGxvJyJdLCB7
ICJ0eXBlIiA6ICJ0ZXh0L3BsYWluIiB9KTsKKyAgICBmb3JtRGF0YS5hcHBlbmQoImJsb2IiLCBi
bG9iLCAiYmxvYi5maWxlIik7CisgICAgZm9ybURhdGEuYXBwZW5kKCJuYW1lIiwgInZhbHVlIik7
CisKKyAgICBjb25zdCBtZXNzYWdlUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gY2hh
bm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSAoZSkgPT4gcmVzb2x2ZShlLmRhdGEpKTsKKworICAgIGNv
bnN0IHJlc3BvbnNlID0gYXdhaXQgZnJhbWUuY29udGVudFdpbmRvdy5mZXRjaCgiL1dlYktpdC9z
ZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL2ZpbGUtdXBsb2FkLWNoZWNrLnB5P2Nsb25lIiwge21l
dGhvZDogIlBPU1QiLCBib2R5OiBmb3JtRGF0YX0pOworICAgIGNvbnN0IHRleHQgPSBhd2FpdCBy
ZXNwb25zZS50ZXh0KCk7CisKKyAgICBjb25zdCBtZXNzYWdlVGV4dCA9IGF3YWl0IG1lc3NhZ2VQ
cm9taXNlOworICAgIGFzc2VydF9lcXVhbHModGV4dCwgbWVzc2FnZVRleHQpOworCisgICAgYXNz
ZXJ0X3RydWUodGV4dC5pbmNsdWRlcygnbmFtZT0ibmFtZSInKSwgIm5hbWUiKTsKKyAgICBhc3Nl
cnRfdHJ1ZSh0ZXh0LmluY2x1ZGVzKCd2YWx1ZScpLCAibmFtZSIpOworCisgICAgYXNzZXJ0X3Ry
dWUodGV4dC5pbmNsdWRlcygnbmFtZT0iYmxvYiInKSwgImJsb2IiKTsKKyAgICBhc3NlcnRfdHJ1
ZSh0ZXh0LmluY2x1ZGVzKCdIZWxsbycpLCAiSGVsbG8iKTsKK30sICJVcGxvYWQgY2xvbmVkIGJ5
IHNlcnZpY2Ugd29ya2VyIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAg
IGF3YWl0IHdpdGhfaWZyYW1lKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL2RlbGV0
ZS10ZW1wLWZpbGUtaWZyYW1lLmh0bWwiKTsKK30sICJEZWxldGUgdGVtcG9yYXJ5IGZpbGUiKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448249</attachid>
            <date>2022-01-03 11:08:55 -0800</date>
            <delta_ts>2022-01-04 04:20:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187461-20220103200852.patch</filename>
            <type>text/plain</type>
            <size>42903</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzllMDE1ZDIxZjIyZDgy
NzllMWVlYWJlODQzYjBmMTcyYWRiZTlmYi4uZTQ1MmRlMTExZjFkZWE3OWFkNzg3YzIwODg0MjJl
NGFlNmEwZDliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTAxLTAzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBGZXRjaCB1c2luZyBGb3Jt
RGF0YSB3aXRoIGZpbGUgZG9lc24ndCBnbyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc0NjEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQxOTc1NTQ0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZWFkaW5nIGZvcm1EYXRhIGJhc2Vk
IGJvZGllcyB0aHJvdWdoIHN0cmVhbXMgb3IgcmVndWxhciBtZXRob2RzIGxpa2UgdGV4dC4KKyAg
ICAgICAgRm9yIHRoYXQgcHVycG9zZSwgd2UgYWRkIEZvcm1EYXRhQ29uc3VtZXIgd2hpY2ggYWxs
b3dzIHNlcmlhbGl6aW5nIGZvcm0gZGF0YXMgdGhhdCBtYXkgY29udGFpbiBmaWxlcyBvciBibG9i
cy4KKyAgICAgICAgQWRkIHRoZSBhYmlsaXR5IHRvIGxvYWQgYmxvYnMgZnJvbSBCbG9iTG9hZGVy
IHVzaW5nIHRoZSBpbnRlcm5hbCBVUkwgKHN0b3JlZCBpbiBGb3JtRGF0YSkgaW4gbGlldSBvZiBw
YXNzaW5nIGEgYmxvYiBvYmplY3QuCisgICAgICAgIEVuYWJsZSBmZXRjaCBldmVudHMgZm9yIGZv
cm0gZGF0YSBiYXNlZCBmZXRjaCBldmVudHMuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRm9ybURhdGFDb25zdW1lci5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRm9ybURhdGFDb25zdW1lci5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZmls
ZWFwaS9CbG9iTG9hZGVyLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNw
cDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorCiAyMDIyLTAxLTAy
ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEFj
Y2VzcyBrZXkgc2hvdWxkIHdvcmsgb24gZm9jdXNhYmxlIGVsZW1lbnQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggYjhmMmVjMzczZDg3M2NjOWM4YWNi
M2M2ZWM4NDVmNmFiMDAwOWFhNi4uNzQxN2FlMGMxMjAzZWNmYzQ4NDkxZmUxMjQ4MDk2ZWI2NWVm
YzJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAt
OTQsOCArOTQsNyBAQCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4gRmV0Y2hCb2R5Ojpmcm9tRm9y
bURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dAogICAgICAgICByZXR1cm4gRmV0
Y2hCb2R5IHsgV1RGTW92ZShibG9iKSB9OwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBTdXBwb3J0
IGZvcm0gZGF0YSBib2RpZXMuCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4g
RmV0Y2hCb2R5IHsgUmVmIHsgZm9ybURhdGEgfSB9OwogfQogCiB2b2lkIEZldGNoQm9keTo6YXJy
YXlCdWZmZXIoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCkBAIC0xOTYsNyArMTk1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVBc1N0cmVh
bShGZXRjaEJvZHlPd25lciYgb3duZXIsIEZldGNoQm9keVNvdXJjZSYgc291cmNlKQogICAgICAg
ICBvd25lci5sb2FkQmxvYihibG9iQm9keSgpLCBudWxscHRyKTsKICAgICAgICAgbV9kYXRhID0g
bnVsbHB0cjsKICAgICB9IGVsc2UgaWYgKGlzRm9ybURhdGEoKSkKLSAgICAgICAgc291cmNlLmVy
cm9yKEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zIH0p
OworICAgICAgICBtX2NvbnN1bWVyLmNvbnN1bWVGb3JtRGF0YUFzU3RyZWFtKGZvcm1EYXRhQm9k
eSgpLCBzb3VyY2UsIG93bmVyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgZWxzZSBp
ZiAobV9jb25zdW1lci5oYXNEYXRhKCkpCiAgICAgICAgIGNsb3NlU3RyZWFtID0gc291cmNlLmVu
cXVldWUobV9jb25zdW1lci50YWtlQXNBcnJheUJ1ZmZlcigpKTsKICAgICBlbHNlCkBAIC0yMzQs
MTQgKzIzMyw4IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYg
b3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzCiAKIHZvaWQgRmV0Y2hCb2R5Ojpj
b25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiB7Ci0gICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5
KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0
YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgICAgICBt
X2RhdGEgPSBudWxscHRyOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJZiB0aGUg
Zm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9i
cy4KLSAgICAgICAgLy8gVGhhdCB3aWxsIGZpeCB0aGUgbGFzdCBXUFQgdGVzdCBpbiByZXNwb25z
ZS1jb25zdW1lLmh0bWwuCi0gICAgICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJv
cik7Ci0gICAgfQorICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhGb3JtRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBmb3JtRGF0YUJvZHkoKSwgb3duZXIuc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX2RhdGEgPSBudWxscHRyOwogfQogCiB2b2lkIEZl
dGNoQm9keTo6bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKQEAgLTMx
MSw3ICszMDQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogCiBG
ZXRjaEJvZHkgRmV0Y2hCb2R5OjpjbG9uZSgpCiB7Ci0gICAgRmV0Y2hCb2R5IGNsb25lKG1fY29u
c3VtZXIpOworICAgIEZldGNoQm9keSBjbG9uZShtX2NvbnN1bWVyLmNsb25lKCkpOwogCiAgICAg
aWYgKGlzQXJyYXlCdWZmZXIoKSkKICAgICAgICAgY2xvbmUubV9kYXRhID0gYXJyYXlCdWZmZXJC
b2R5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQx
YjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZjMDA4OGUxMmU0Li5hNGFmMmFhZDU4NTM1Njc4M2Jm
NzI3MTMxM2RjNjA0MGVkNzhmNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBGZXRjaEJv
ZHkoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogICAg
IGV4cGxpY2l0IEZldGNoQm9keShTdHJpbmcmJiBkYXRhKSA6IG1fZGF0YShXVEZNb3ZlKGRhdGEp
KSB7IH0KICAgICBleHBsaWNpdCBGZXRjaEJvZHkoUmVmPGNvbnN0IFVSTFNlYXJjaFBhcmFtcz4m
JiBkYXRhKSA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICBleHBsaWNpdCBGZXRjaEJv
ZHkoY29uc3QgRmV0Y2hCb2R5Q29uc3VtZXImIGNvbnN1bWVyKSA6IG1fY29uc3VtZXIoY29uc3Vt
ZXIpIHsgfQorICAgIGV4cGxpY2l0IEZldGNoQm9keShGZXRjaEJvZHlDb25zdW1lciYmIGNvbnN1
bWVyKSA6IG1fY29uc3VtZXIoV1RGTW92ZShjb25zdW1lcikpIHsgfQogICAgIGV4cGxpY2l0IEZl
dGNoQm9keShSZWY8UmVhZGFibGVTdHJlYW0+JiYgc3RyZWFtKSA6IG1fcmVhZGFibGVTdHJlYW0o
V1RGTW92ZShzdHJlYW0pKSB7IH0KIAogICAgIHZvaWQgY29uc3VtZShGZXRjaEJvZHlPd25lciYs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBjMjMxZjIwN2RhMjVjZDJhMTU4NjBk
MjhkYjNjZTE3ZTg1NzU3N2Q1Li45ZmZkNDliNDdjZWE2NDZiODg2OGUxOTA1NmEzYTFkZWY4NjI5
MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZldGNoQm9keUNvbnN1bWVy
LmgiCiAKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgorI2luY2x1ZGUgIkZvcm1EYXRhQ29uc3Vt
ZXIuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyRmllbGQuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vy
cy5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgpAQCAtMjQzLDYgKzI0NCw4IEBAIHN0YXRpYyB2b2lk
IHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBG
ZXRjaEJvZHlDb25zCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7CiAgICAgbV9i
dWZmZXIucmVzZXQoKTsKKyAgICBpZiAobV9mb3JtRGF0YUNvbnN1bWVyKQorICAgICAgICBtX2Zv
cm1EYXRhQ29uc3VtZXItPmNhbmNlbCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAg
ICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjU1
LDYgKzI1OCw2MSBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlV2l0aERhdGEoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdAogICAgIHJlc29sdmVXaXRoVHlw
ZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgbV90eXBlLCBjb250ZW50VHlwZSwgZGF0YSwgbGVu
Z3RoKTsKIH0KIAordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZVdpdGhGb3JtRGF0YShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IGNvbnN0IEZvcm1EYXRhJiBmb3JtRGF0YSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKK3sKKyAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YS5hc1NoYXJlZEJ1ZmZl
cigpKSB7CisgICAgICAgIHJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBjb250ZW50
VHlwZSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghY29udGV4dCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9mb3JtRGF0YUNvbnN1bWVyID0gbWFrZVVuaXF1ZTxG
b3JtRGF0YUNvbnN1bWVyPihmb3JtRGF0YSwgKmNvbnRleHQsIFt0aGlzLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgY29udGVudFR5cGUsIGJ1aWxkZXIgPSBTaGFyZWRCdWZmZXJCdWlsZGVy
IHsgfV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1
dG8mIHZhbHVlID0gcmVzdWx0LnJldHVyblZhbHVlKCk7CisgICAgICAgIGlmICghdmFsdWUuc2l6
ZSgpKSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZUFzQ29udGlndW91
cygpOworICAgICAgICAgICAgcmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIGNvbnRl
bnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgYnVpbGRlci5hcHBlbmQodmFsdWUuZGF0YSgpLCB2
YWx1ZS5zaXplKCkpOworICAgIH0pOworfQorCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjb25z
dW1lRm9ybURhdGFBc1N0cmVhbShjb25zdCBGb3JtRGF0YSYgZm9ybURhdGEsIEZldGNoQm9keVNv
dXJjZSYgc291cmNlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIGlm
IChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZvcm1EYXRhLmFzU2hhcmVkQnVmZmVyKCkpIHsKKyAgICAg
ICAgaWYgKHNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2hhcmVkQnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKSkpCisgICAg
ICAgICAgICBzb3VyY2UuY2xvc2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mb3JtRGF0YUNvbnN1bWVyID0g
bWFrZVVuaXF1ZTxGb3JtRGF0YUNvbnN1bWVyPihmb3JtRGF0YSwgKmNvbnRleHQsIFt0aGlzLCBz
b3VyY2UgPSBSZWYgeyBzb3VyY2UgfV0oYXV0byYmIHJlc3VsdCkgeworICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBzb3VyY2UtPmVycm9yKHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgYXV0byYgdmFsdWUgPSByZXN1bHQucmV0dXJuVmFsdWUoKTsKKyAgICAgICAgaWYgKCF2
YWx1ZS5zaXplKCkpIHsKKyAgICAgICAgICAgIHNvdXJjZS0+Y2xvc2UoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghc291cmNlLT5lbnF1ZXVlKEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUodmFsdWUuZGF0YSgpLCB2YWx1ZS5zaXplKCkpKSkKKyAgICAgICAg
ICAgIG1fZm9ybURhdGFDb25zdW1lci0+Y2FuY2VsKCk7CisgICAgfSk7Cit9CisKIHZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OmV4dHJhY3QoUmVhZGFibGVTdHJlYW0mIHN0cmVhbSwgUmVhZGFibGVT
dHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNT
RVJUKCFtX3NpbmspOwpAQCAtNDE2LDQgKzQ3NCwxMSBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVy
Ojpsb2FkaW5nU3VjY2VlZGVkKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgfQogfQog
CitGZXRjaEJvZHlDb25zdW1lciBGZXRjaEJvZHlDb25zdW1lcjo6Y2xvbmUoKQoreworICAgIEZl
dGNoQm9keUNvbnN1bWVyIGNsb25lIHsgbV90eXBlIH07CisgICAgY2xvbmUubV9jb250ZW50VHlw
ZSA9IG1fY29udGVudFR5cGU7CisgICAgcmV0dXJuIGNsb25lOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmgKaW5kZXggODcxZDJjMDg2MzMxYTk4Mjk0YTE2NmE0YjQyZTMxODRlMDM3NzcyYi4u
Nzk4MDVkNGFhNTY0YmEwY2Y1YWUxM2ExMjQ0OTNkMDYwMzFhZGJiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtMjksOCArMjks
MTAgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmV0Y2hCb2R5U291cmNlLmgiCisjaW5j
bHVkZSAiRm9ybURhdGFDb25zdW1lci5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1TaW5rLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogCkBAIC0zOSw2ICs0MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2I7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIEZl
dGNoQm9keVNvdXJjZTsKK2NsYXNzIEZvcm1EYXRhOwogY2xhc3MgUmVhZGFibGVTdHJlYW07CiAK
IGNsYXNzIEZldGNoQm9keUNvbnN1bWVyIHsKQEAgLTQ3LDYgKzUwLDggQEAgcHVibGljOgogCiAg
ICAgZXhwbGljaXQgRmV0Y2hCb2R5Q29uc3VtZXIoVHlwZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7
IH0KIAorICAgIEZldGNoQm9keUNvbnN1bWVyIGNsb25lKCk7CisKICAgICB2b2lkIGFwcGVuZChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25z
dCB7IHJldHVybiAhIW1fYnVmZmVyOyB9CkBAIC02NSw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGV4dHJhY3QoUmVhZGFibGVTdHJlYW0mLCBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVy
U2luazo6Q2FsbGJhY2smJik7CiAgICAgdm9pZCByZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlYWRhYmxlU3RyZWFtKik7CiAgICAgdm9p
ZCByZXNvbHZlV2l0aERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKTsKKyAgICB2b2lkIHJl
c29sdmVXaXRoRm9ybURhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgRm9ybURhdGEmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cisg
ICAgdm9pZCBjb25zdW1lRm9ybURhdGFBc1N0cmVhbShjb25zdCBGb3JtRGF0YSYsIEZldGNoQm9k
eVNvdXJjZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgIHZvaWQgbG9hZGluZ0Zh
aWxlZChjb25zdCBFeGNlcHRpb24mKTsKICAgICB2b2lkIGxvYWRpbmdTdWNjZWVkZWQoY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7CkBAIC04OCw2ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CiAgICAgYm9vbCBtX2lzTG9hZGluZyB7IGZh
bHNlIH07CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IG1fdXNlckdlc3R1cmVUb2tlbjsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybURhdGFDb25zdW1lcj4gbV9mb3JtRGF0YUNvbnN1bWVy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9Gb3JtRGF0YUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRm9ybURhdGFDb25zdW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjUwMjRkODc4ZmI3
NDlkYWUwNTQxNDMyOGRhMWE1NGYxYWMxZmMyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRm9ybURhdGFDb25zdW1lci5jcHAKQEAgLTAsMCArMSwxMjMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRm9ybURhdGFD
b25zdW1lci5oIgorCisjaW5jbHVkZSAiQmxvYkxvYWRlci5oIgorI2luY2x1ZGUgIkZvcm1EYXRh
LmgiCisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0Zvcm1EYXRhQ29uc3VtZXI6OkZvcm1EYXRhQ29uc3VtZXIoY29uc3QgRm9ybURhdGEmIGZvcm1E
YXRhLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBDYWxsYmFjayYmIGNhbGxiYWNr
KQorICAgIDogbV9mb3JtRGF0YShmb3JtRGF0YS5jb3B5KCkpCisgICAgLCBtX2NvbnRleHQoJmNv
bnRleHQpCisgICAgLCBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQorICAgICwgbV9maWxl
UXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkZvcm1EYXRhQ29uc3VtZXIgZmlsZSBxdWV1ZSIpKQor
eworICAgIHJlYWQoKTsKK30KKworRm9ybURhdGFDb25zdW1lcjo6fkZvcm1EYXRhQ29uc3VtZXIo
KQoreworfQorCit2b2lkIEZvcm1EYXRhQ29uc3VtZXI6OnJlYWQoKQoreworICAgIEFTU0VSVCht
X2NhbGxiYWNrKTsKKyAgICBBU1NFUlQobV9jb250ZXh0KTsKKworICAgIGlmIChtX2N1cnJlbnRF
bGVtZW50SW5kZXggPj0gbV9mb3JtRGF0YS0+ZWxlbWVudHMoKS5zaXplKCkpIHsKKyAgICAgICAg
bV9jYWxsYmFjayhTcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBXVEY6OnN3aXRjaE9uKG1fZm9ybURhdGEtPmVsZW1lbnRzKClbbV9jdXJyZW50
RWxlbWVudEluZGV4KytdLmRhdGEsCisgICAgW3RoaXNdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
Y29udGVudCkgeworICAgICAgICB0aGlzLT5jb25zdW1lKGNvbnRlbnQpOworICAgIH0sIFt0aGlz
XShjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKKyAg
ICAgICAgbV9maWxlUXVldWUtPmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCBpZGVudGlmaWVyID0gbV9jb250ZXh0LT5pZGVudGlmaWVyKCksIHBhdGggPSBmaWxlRGF0YS5m
aWxlbmFtZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oaWRlbnRpZmllciwgW3dlYWtUaGlzID0gV1RGTW92
ZSh3ZWFrVGhpcyksIGNvbnRlbnQgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShwYXRoKV0o
YXV0byYpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRlbnQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHdlYWtUaGlzLT5tX2NhbGxiYWNrKQorICAgICAgICAgICAgICAgICAg
ICAgICAgd2Vha1RoaXMtPm1fY2FsbGJhY2soRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJVbmFibGUgdG8gcmVhZCBmb3JtIGRhdGEgZmlsZSJfcyB9KTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+
Y29uc3VtZSgqY29udGVudCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSwg
W3RoaXNdKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRhJiBibG9iRGF0YSkg
eworICAgICAgICBtX2Jsb2JMb2FkZXIgPSBtYWtlVW5pcXVlPEJsb2JMb2FkZXI+KFt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XShCbG9iTG9hZGVyJikgbXV0YWJsZSB7CisgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGF1
dG8gbG9hZGVyID0gc3RkOjpleGNoYW5nZSh3ZWFrVGhpcy0+bV9ibG9iTG9hZGVyLCB7IH0pOwor
ICAgICAgICAgICAgaWYgKGF1dG8gb3B0aW9uYWxFcnJvckNvZGUgPSBsb2FkZXItPmVycm9yQ29k
ZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzLT5tX2NhbGxiYWNrKQorICAgICAg
ICAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jYWxsYmFjayhFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgIkZhaWxlZCB0byByZWFkIGZvcm0gZGF0YSBibG9iIl9zIH0pOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvIGRhdGEg
PSBsb2FkZXItPmFycmF5QnVmZmVyUmVzdWx0KCkpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMt
PmNvbnN1bWUoU3Bhbjxjb25zdCB1aW50OF90PiB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLT5kYXRhKCkpLCBkYXRhLT5ieXRlTGVuZ3RoKCkgfSk7CisgICAgICAgIH0pOworICAg
ICAgICBtX2Jsb2JMb2FkZXItPnN0YXJ0KGJsb2JEYXRhLnVybCwgbV9jb250ZXh0LmdldCgpLCBG
aWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1ZmZlcik7CisgICAgICAgIGlmICghbV9ibG9i
TG9hZGVyLT5pc0xvYWRpbmcoKSkgeworICAgICAgICAgICAgbV9jYWxsYmFjayhFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciwgIlVuYWJsZSB0byByZWFkIGZvcm0gZGF0YSBibG9iIl9zIH0p
OworICAgICAgICAgICAgbV9ibG9iTG9hZGVyID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0p
OworfQorCit2b2lkIEZvcm1EYXRhQ29uc3VtZXI6OmNvbnN1bWUoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBjb250ZW50KQoreworICAgIGNvbnN1bWUoU3Bhbjxjb25zdCB1aW50OF90PiB7IGNvbnRl
bnQuZGF0YSgpLCBjb250ZW50LnNpemUoKSB9KTsKK30KKwordm9pZCBGb3JtRGF0YUNvbnN1bWVy
Ojpjb25zdW1lKFNwYW48Y29uc3QgdWludDhfdD4gY29udGVudCkKK3sKKyAgICBpZiAoIW1fY2Fs
bGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2FsbGJhY2soU3Bhbjxjb25zdCB1aW50
OF90PiB7IGNvbnRlbnQuZGF0YSgpLCBjb250ZW50LnNpemUoKSB9KTsKKyAgICBpZiAoIW1fY2Fs
bGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIHJlYWQoKTsKK30KKwordm9pZCBGb3JtRGF0
YUNvbnN1bWVyOjpjYW5jZWwoKQoreworICAgIG1fY2FsbGJhY2sgPSBudWxscHRyOworICAgIGlm
IChtX2Jsb2JMb2FkZXIpIHsKKyAgICAgICAgbV9ibG9iTG9hZGVyLT5jYW5jZWwoKTsKKyAgICAg
ICAgbV9ibG9iTG9hZGVyID0gbnVsbHB0cjsKKyAgICB9CisgICAgbV9jb250ZXh0ID0gbnVsbHB0
cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9Gb3JtRGF0YUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0Zvcm1EYXRhQ29uc3VtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWI1NDRmZjA4ZThjNWU5
N2Y4ZTc1MjliMGNhMTg3ZjViOTlkOWZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9Gb3JtRGF0YUNvbnN1bWVyLmgKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRm9ybURhdGE7CisKK2NsYXNzIEZvcm1EYXRhQ29uc3VtZXIgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8Rm9ybURhdGFDb25zdW1lcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIHVzaW5nIENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChFeGNlcHRp
b25PcjxTcGFuPGNvbnN0IHVpbnQ4X3Q+Pik+OworICAgIEZvcm1EYXRhQ29uc3VtZXIoY29uc3Qg
Rm9ybURhdGEmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgQ2FsbGJhY2smJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgfkZvcm1EYXRhQ29uc3VtZXIoKTsKKworICAgIHZvaWQgY2FuY2VsKCk7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBjb25zdW1lKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAg
IHZvaWQgY29uc3VtZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAgICB2b2lkIHJlYWQoKTsKKwor
ICAgIFJlZjxGb3JtRGF0YT4gbV9mb3JtRGF0YTsKKyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4gbV9jb250ZXh0OworICAgIENhbGxiYWNrIG1fY2FsbGJhY2s7CisKKyAgICBzaXpl
X3QgbV9jdXJyZW50RWxlbWVudEluZGV4IHsgMCB9OworICAgIFJlZjxXb3JrUXVldWU+IG1fZmls
ZVF1ZXVlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGJkNWE3NDc5Y2Iz
OWU0NmNjOTEwNDAwZjRlZTM4NDkzMjRjNzUzMWYuLmY2ZjAwYWU4YWZkZjEwMmEzNmYxMjUxNDU3
NDEyMmEzMDljOTQwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC04OCw2ICs4OCw3IEBAIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcAogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcAorTW9kdWxlcy9mZXRjaC9Gb3JtRGF0YUNvbnN1bWVyLmNwcAogTW9kdWxlcy9mZXRjaC9X
aW5kb3dPcldvcmtlckdsb2JhbFNjb3BlRmV0Y2guY3BwCiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nl
c3MvRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZS5jcHAKIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vz
cy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYzllYzI1YzBhOTI0NjA2YWUyZWIzMjc2
NGExNzhkZGNjOTQ0M2Y4Li43MGJlMjgzYTAzNGViMzA1NDkyMzMxMGVhNWIyMzYwZDBlZmJmMGQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04NDgxLDYgKzg0ODEsOCBAQAogCQkzRkJDNEFGMTE4OTg4MTU2MDA0NkVFMzggLyog
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0ZCQzRBRjIxODk4ODE1NjAwNDZFRTM4IC8qIFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxMDI0RkM4MjNDRjI1NEYwMEZERjk4RSAvKiBTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEwMkVFMEUyNzgzMEU2MzAwRDZCRTc0
IC8qIEZvcm1EYXRhQ29uc3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybURhdGFDb25zdW1lci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTAyRUUxMDI3ODMwRTYzMDBENkJFNzQg
LyogRm9ybURhdGFDb25zdW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtRGF0YUNvbnN1
bWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwNzkwOEExRkMzRTRGMjAw
NjFCMjdBIC8qIENsaWVudE9yaWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDbGllbnRPcmlnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwOTM4MkMy
MzQ3ODUwRTAwOTQyOEJBIC8qIEpTQWJvcnRTaWduYWxDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNBYm9ydFNpZ25hbEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxMEE4RUY0MjRGODIzQjkwMDRGOTA3MCAvKiBUZXh0RW5jb2RlclN0cmVhbS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gVGV4dEVuY29kZXJTdHJlYW0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjEyNzAsNiArMjEyNzIsOCBAQAogCQkJCTQxMzAxNUQ1MUM3QjU3MDQwMDA5MUM2RSAvKiBGZXRj
aFJlc3BvbnNlLmNwcCAqLywKIAkJCQk0MTMwMTVENjFDN0I1NzA0MDAwOTFDNkUgLyogRmV0Y2hS
ZXNwb25zZS5oICovLAogCQkJCTQxMzAxNUQ3MUM3QjU3MDQwMDA5MUM2RSAvKiBGZXRjaFJlc3Bv
bnNlLmlkbCAqLywKKwkJCQk0MTAyRUUxMDI3ODMwRTYzMDBENkJFNzQgLyogRm9ybURhdGFDb25z
dW1lci5jcHAgKi8sCisJCQkJNDEwMkVFMEUyNzgzMEU2MzAwRDZCRTc0IC8qIEZvcm1EYXRhQ29u
c3VtZXIuaCAqLywKIAkJCQk3QzJFMEJEMTI1MTA2QUM0MDA1RjNDODcgLyogV2luZG93T3JXb3Jr
ZXJHbG9iYWxTY29wZStGZXRjaC5pZGwgKi8sCiAJCQkJN0MyRTBCRDAyNTEwNkFDNDAwNUYzQzg3
IC8qIFdpbmRvd09yV29ya2VyR2xvYmFsU2NvcGVGZXRjaC5jcHAgKi8sCiAJCQkJN0MyRTBCQ0Yy
NTEwNkFDNDAwNUYzQzg3IC8qIFdpbmRvd09yV29ya2VyR2xvYmFsU2NvcGVGZXRjaC5oICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2JMb2FkZXIuaAppbmRleCA4YjFhNjExN2YyNmU3MTdiYmM4Zjkx
ZmFlYmRkNDQwNzc1NjFhNThmLi5jZDBkMGMxYjlhNTQzZGIwNDI1M2E3MmRiZjVkMDc3YWMxZmM1
MzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JMb2FkZXIuaApAQCAtNDMsNiArNDMsNyBAQCBw
dWJsaWM6CiAgICAgfkJsb2JMb2FkZXIoKTsKIAogICAgIHZvaWQgc3RhcnQoQmxvYiYsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwZSk7CisgICAgdm9p
ZCBzdGFydChjb25zdCBVUkwmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVJlYWRlckxv
YWRlcjo6UmVhZFR5cGUpOwogCiAgICAgdm9pZCBjYW5jZWwoKTsKICAgICBib29sIGlzTG9hZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVyICYmIG1fY29tcGxldGlvbkhhbmRsZXI7IH0KQEAg
LTg5LDYgKzkwLDEzIEBAIGlubGluZSB2b2lkIEJsb2JMb2FkZXI6OnN0YXJ0KEJsb2ImIGJsb2Is
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEZpbGVSCiAgICAgbV9sb2FkZXItPnN0
YXJ0KGNvbnRleHQsIGJsb2IpOwogfQogCitpbmxpbmUgdm9pZCBCbG9iTG9hZGVyOjpzdGFydChj
b25zdCBVUkwmIGJsb2JVUkwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEZpbGVS
ZWFkZXJMb2FkZXI6OlJlYWRUeXBlIHJlYWRUeXBlKQoreworICAgIEFTU0VSVCghbV9sb2FkZXIp
OworICAgIG1fbG9hZGVyID0gbWFrZVVuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihyZWFkVHlwZSwg
dGhpcyk7CisgICAgbV9sb2FkZXItPnN0YXJ0KGNvbnRleHQsIGJsb2JVUkwpOworfQorCiBpbmxp
bmUgdm9pZCBCbG9iTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKCkKIHsKICAgICBtX2NvbXBsZXRp
b25IYW5kbGVyKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlckxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuY3BwCmluZGV4IGI3Zjc1ZWRhM2IyMzNiMTliMjBlZDcwNDI4OTQ5YmIzMzU4OThlODEuLjc0
ZWY1ZjRiOGI0N2E3MmE1NTkwODdmYWZhNzE3NTY4OGU4ZDU2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAtNzMsNiArNzMsMTEgQEAgRmlsZVJl
YWRlckxvYWRlcjo6fkZpbGVSZWFkZXJMb2FkZXIoKQogfQogCiB2b2lkIEZpbGVSZWFkZXJMb2Fk
ZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IEJsb2ImIGJsb2IpCit7CisgICAgc3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgYmxvYi51
cmwoKSk7Cit9CisKK3ZvaWQgRmlsZVJlYWRlckxvYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgVVJMJiBibG9iVVJMKQogewog
ICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIApAQCAtODIsNyArODcsNyBAQCB2
b2lkIEZpbGVSZWFkZXJMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIEJsbwogICAgICAgICBmYWlsZWQoU2VjdXJpdHlFcnJvcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnBvbGljeUNvbnRhaW5lcigpLCBtX3VybEZvclJlYWRpbmcsIGJs
b2IudXJsKCkpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5wb2xpY3lDb250YWluZXIoKSwgbV91cmxGb3JSZWFkaW5nLCBibG9iVVJMKTsKIAog
ICAgIC8vIENvbnN0cnVjdCBhbmQgbG9hZCB0aGUgcmVxdWVzdC4KICAgICBSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdChtX3VybEZvclJlYWRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVS
ZWFkZXJMb2FkZXIuaAppbmRleCA1MzljMjMwNGE4MmU2M2FhZGZlMmM1NjdjOThkMGI4YzY4N2E4
ZTlmLi5kYmFlOWUzMzUwOTBhOGI5NmRmYjc2ZWI2ZTE1MTEyNTk4OGU2MGVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJs
aWM6CiAgICAgfkZpbGVSZWFkZXJMb2FkZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsb2ImKTsKKyAgICB2b2lkIHN0YXJ0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNhbmNlbCgpOwogCiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5jcHAKaW5kZXggOGE5MTM4ZDIzYjBkNWRlYzUzZDI5OTBkZWQ1ZGI3NzYzNTRl
NTI0MC4uOWQ5YWNkNjRhMTYyMTg0ZGNjMTJhNGQ0NDNlYmUwMDJhNjUyYjZiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guY3BwCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IG5hbWVzcGFjZSBTZXJ2aWNlV29ya2VyRmV0Y2ggewogCiAvLyBodHRwczovL2ZldGNoLnNwZWMu
d2hhdHdnLm9yZy8jaHR0cC1mZXRjaCBzdGVwIDMuMwotc3RhdGljIGlubGluZSBzdGQ6Om9wdGlv
bmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIEZldGNoT3B0aW9uczo6TW9kZSBtb2RlLCBGZXRjaE9wdGlvbnM6OlJlZGly
ZWN0IHJlZGlyZWN0KQorc3RhdGljIGlubGluZSBSZXNvdXJjZUVycm9yIHZhbGlkYXRlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIEZldGNoT3B0aW9uczo6TW9kZSBt
b2RlLCBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0IHJlZGlyZWN0KQogewogICAgIGlmIChyZXNwb25z
ZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6RXJyb3IpCiAgICAgICAgIHJldHVy
biBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2Uu
dXJsKCksICJSZXNwb25zZSBzZXJ2ZWQgYnkgc2VydmljZSB3b3JrZXIgaXMgYW4gZXJyb3IiX3Ms
IFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwsIFJlc291cmNlRXJyb3I6OklzU2FuaXRpemVk
OjpZZXMgfTsKQEAgLTg0LDggKzg0LDggQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJl
ZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4sIHMKICAgICB9
CiAKICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2UgPSByZXNwb25zZS0+cmVzb3VyY2VSZXNwb25z
ZSgpOwotICAgIGlmIChhdXRvIGVycm9yID0gdmFsaWRhdGVSZXNwb25zZShyZXNvdXJjZVJlc3Bv
bnNlLCBtb2RlLCByZWRpcmVjdCkpIHsKLSAgICAgICAgY2xpZW50LT5kaWRGYWlsKGVycm9yLnZh
bHVlKCkpOworICAgIGlmIChhdXRvIGVycm9yID0gdmFsaWRhdGVSZXNwb25zZShyZXNvdXJjZVJl
c3BvbnNlLCBtb2RlLCByZWRpcmVjdCk7ICFlcnJvci5pc051bGwoKSkgeworICAgICAgICBjbGll
bnQtPmRpZEZhaWwoZXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmQ0
MGU3MjQzNjUwNDhhNDk2MGJkMDk4ZTdkODA3MTE3MjIzY2UzNC4uNTc2N2U1ZDE1MDZiYTgzOWYx
MDRhMDhlOTZmZTQwYmM2MGQ5NzdlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIyLTAxLTAz
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBGZXRjaCB1c2lu
ZyBGb3JtRGF0YSB3aXRoIGZpbGUgZG9lc24ndCBnbyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc0NjEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQxOTc1NTQ0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIGFkZGluZyBhIHRlc3QgdG8g
aHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0cmVhbS5odG1sLCB3ZSBmaXggdGhlIG90
aGVyIHRlc3RzIHRoYXQgc2hvdWxkIGFsbCBiZSBwYXNzaW5nLgorICAgICAgICBBZGQgaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQuaHRtbCBhbmQgdHJhbnNsYXRlIGV4
aXRpbmcgaHR0cC90ZXN0cyBzY3JpcHRzIGZvciB0aGUgV1BUIHNlcnZlci4KKworICAgICAgICAq
IGh0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY29uc3VtZS1zdHJlYW0tZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGh0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY29uc3VtZS1zdHJlYW0uaHRtbDoKKyAgICAg
ICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZm9ybS1kYXRhLXVwbG9hZC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mb3JtLWRhdGEt
dXBsb2FkLXdvcmtlci5qczogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL2Zvcm0tZGF0YS11cGxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL3Jlc291cmNlcy9jcmVhdGUtdGVtcC1maWxlLWlmcmFtZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Jlc2V0LXRl
bXAtZmlsZS5weTogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jl
c291cmNlcy90ZW1wLWZpbGUtdXRpbHMuanM6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3Nl
cnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdG91Y2gtdGVtcC1maWxlLnB5OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3dyaXRlLXRlbXAtZmlsZS5w
eTogQWRkZWQuCisKIDIwMjItMDEtMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIE1ha2Ugc3VyZSBzZWN1cmUgd2Vic29ja2V0IGNvbm5lY3Rpb25zIGluIHNl
cnZpY2Ugd29ya2VycyBjYW4gdHJpZ2dlciBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UgY2FsbGJh
Y2tzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9mZXRjaC9yZXF1ZXN0LWNvbnN1
bWUtc3RyZWFtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVl
c3QtY29uc3VtZS1zdHJlYW0tZXhwZWN0ZWQudHh0CmluZGV4IGNkZDY2OTgyMjM1MGU0YjBhNWE0
NzlmYjBmYWNiZWE2NWMzYjI0ZTguLjM1YWM3N2I1NGVmZDViYWExOTE2NDdiMDY3M2U5NjhkYTM3
OTc2MTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY29u
c3VtZS1zdHJlYW0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNo
L3JlcXVlc3QtY29uc3VtZS1zdHJlYW0tZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsMTAgQEAKIAot
RkFJTCBSZWFkIGVtcHR5IHRleHQgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gYXNz
ZXJ0X2FycmF5X2VxdWFsczogUmV0cmlldmUgYW5kIHZlcmlmeSBzdHJlYW0gbGVuZ3RocyBkaWZm
ZXIsIGV4cGVjdGVkIGFycmF5IG9iamVjdCAiIiBsZW5ndGggMCwgZ290IG9iamVjdCAiMTIzLDM0
LDEwNywxMDEsMTIxLDM0LDU4LDMyLDM0LDExOCw5NywxMDgsMTE3LDEwMSwzNCwxMjUiIGxlbmd0
aCAxNgotRkFJTCBSZWFkIGVtcHR5IGJsb2IgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJl
YW0gYXNzZXJ0X2FycmF5X2VxdWFsczogUmV0cmlldmUgYW5kIHZlcmlmeSBzdHJlYW0gbGVuZ3Ro
cyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IG9iamVjdCAiIiBsZW5ndGggMCwgZ290IG9iamVjdCAi
MTIzLDM0LDEwNywxMDEsMTIxLDM0LDU4LDMyLDM0LDExOCw5NywxMDgsMTE3LDEwMSwzNCwxMjUi
IGxlbmd0aCAxNgotRkFJTCBSZWFkIGJsb2IgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJl
YW0gYXNzZXJ0X2FycmF5X2VxdWFsczogUmV0cmlldmUgYW5kIHZlcmlmeSBzdHJlYW0gbGVuZ3Ro
cyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IG9iamVjdCAiMTE1LDMyLDEwNSwxMTUsMzIsMTE0LDEw
MSwxMTMsMTE3LDEwMSwxMTUsMTE2LDM5LDExNSwzMiw5OCwxMTEsMTAwLDEyMSwzNCIgbGVuZ3Ro
IDI0LCBnb3Qgb2JqZWN0ICIxMjMsMzQsMTA3LDEwMSwxMjEsMzQsNTgsMzIsMzQsMTE4LDk3LDEw
OCwxMTcsMTAxLDM0LDEyNSIgbGVuZ3RoIDE2Ci1GQUlMIFJlYWQgdGV4dCByZXF1ZXN0J3MgYm9k
eSBhcyByZWFkYWJsZVN0cmVhbSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBSZXRyaWV2ZSBhbmQgdmVy
aWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgb2JqZWN0ICIxMTUsMzIs
MTA1LDExNSwzMiwxMTQsMTAxLDExMywxMTcsMTAxLDExNSwxMTYsMzksMTE1LDMyLDk4LDExMSwx
MDAsMTIxLDM0IiBsZW5ndGggMjQsIGdvdCBvYmplY3QgIjEyMywzNCwxMDcsMTAxLDEyMSwzNCw1
OCwzMiwzNCwxMTgsOTcsMTA4LDExNywxMDEsMzQsMTI1IiBsZW5ndGggMTYKLUZBSUwgUmVhZCBV
UkxTZWFyY2hQYXJhbXMgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gYXNzZXJ0X2Fy
cmF5X2VxdWFsczogUmV0cmlldmUgYW5kIHZlcmlmeSBzdHJlYW0gbGVuZ3RocyBkaWZmZXIsIGV4
cGVjdGVkIGFycmF5IG9iamVjdCAiMTEwLDk3LDEwOSwxMDEsNjEsMTE4LDk3LDEwOCwxMTcsMTAx
IiBsZW5ndGggMTAsIGdvdCBvYmplY3QgIjEyMywzNCwxMDcsMTAxLDEyMSwzNCw1OCwzMiwzNCwx
MTgsOTcsMTA4LDExNywxMDEsMzQsMTI1IiBsZW5ndGggMTYKLUZBSUwgUmVhZCBhcnJheSBidWZm
ZXIgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gYXNzZXJ0X2FycmF5X2VxdWFsczog
UmV0cmlldmUgYW5kIHZlcmlmeSBzdHJlYW0gbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5
IG9iamVjdCAiMTE1LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMTMsMTE3LDEwMSwxMTUsMTE2LDM5
LDExNSwzMiw5OCwxMTEsMTAwLDEyMSwzNCIgbGVuZ3RoIDI0LCBnb3Qgb2JqZWN0ICIxMjMsMzQs
MTA3LDEwMSwxMjEsMzQsNTgsMzIsMzQsMTE4LDk3LDEwOCwxMTcsMTAxLDM0LDEyNSIgbGVuZ3Ro
IDE2Ci1GQUlMIFJlYWQgZm9ybSBkYXRhIHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFt
IGFzc2VydF9hcnJheV9lcXVhbHM6IFJldHJpZXZlIGFuZCB2ZXJpZnkgc3RyZWFtIGxlbmd0aHMg
ZGlmZmVyLCBleHBlY3RlZCBhcnJheSBvYmplY3QgIjExMCw5NywxMDksMTAxLDYxLDExOCw5Nywx
MDgsMTE3LDEwMSIgbGVuZ3RoIDEwLCBnb3Qgb2JqZWN0ICIxMjMsMzQsMTA3LDEwMSwxMjEsMzQs
NTgsMzIsMzQsMTE4LDk3LDEwOCwxMTcsMTAxLDM0LDEyNSIgbGVuZ3RoIDE2CitQQVNTIFJlYWQg
ZW1wdHkgdGV4dCByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbQorUEFTUyBSZWFkIGVt
cHR5IGJsb2IgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0KK1BBU1MgUmVhZCBibG9i
IHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWQgdGV4dCByZXF1ZXN0
J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbQorUEFTUyBSZWFkIFVSTFNlYXJjaFBhcmFtcyByZXF1
ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbQorUEFTUyBSZWFkIGFycmF5IGJ1ZmZlciByZXF1
ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbQorUEFTUyBSZWFkIGZvcm0gZGF0YSByZXF1ZXN0
J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbQorUEFTUyBSZWFkIGZvcm0gZGF0YSB3aXRoIGJsb2Ig
cmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0cmVhbS5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0cmVhbS5odG1sCmluZGV4IGE1OGE0
NzIwMDQzY2I5NDExNzFiNzM2MWUwOWViOGYxNDllMmJhYjcuLmM0OWE5N2MyZDQ4NDI3NGVmZjc5
MTM0NmM3M2JhNTRlNmNjNDI1MmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2Zl
dGNoL3JlcXVlc3QtY29uc3VtZS1zdHJlYW0uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC9mZXRjaC9yZXF1ZXN0LWNvbnN1bWUtc3RyZWFtLmh0bWwKQEAgLTExLDkgKzExLDI1IEBACiAg
IDwvaGVhZD4KICAgPGJvZHk+CiAgICAgPHNjcmlwdD4KK2FzeW5jIGZ1bmN0aW9uIGdldFN0cmlu
Z0Zyb21TdHJlYW0ocmVhZGVyLCBjdXJyZW50VmFsdWUpIHsKKyAgICBjb25zdCBkYXRhID0gYXdh
aXQgcmVhZGVyLnJlYWQoKTsKKyAgICBpZiAoIWRhdGEuZG9uZSkgeworICAgICAgICBsZXQgYnVm
ZmVyOworICAgICAgICBpZiAoY3VycmVudFZhbHVlKSB7CisgICAgICAgICAgICBjb25zdCBuZXdC
dWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoZGF0YS52YWx1ZS5sZW5ndGggKyBjdXJyZW50VmFsdWUu
bGVuZ3RoKTsKKyAgICAgICAgICAgIGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KG5ld0J1ZmZlcik7
CisgICAgICAgICAgICBidWZmZXIuc2V0KGN1cnJlbnRWYWx1ZSwgMCk7CisgICAgICAgICAgICBi
dWZmZXIuc2V0KGRhdGEudmFsdWUsIGN1cnJlbnRWYWx1ZS5sZW5ndGgpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIGJ1ZmZlciA9IGRhdGEudmFsdWU7CisgICAgICAgIHJldHVybiBnZXRT
dHJpbmdGcm9tU3RyZWFtKHJlYWRlciwgYnVmZmVyKTsKKyAgICB9CisgICAgcmV0dXJuIChuZXcg
VGV4dERlY29kZXIpLmRlY29kZShjdXJyZW50VmFsdWUpOworfQorCiBmdW5jdGlvbiBjcmVhdGVS
ZXF1ZXN0V2l0aEJvZHkoYm9keSkKIHsKLSAgICByZXR1cm4gbmV3IFJlcXVlc3QoIiIsIHtib2R5
OiAie1wia2V5XCI6IFwidmFsdWVcIn0iLCBtZXRob2Q6ICJQT1NUIn0pOworICAgIHJldHVybiBu
ZXcgUmVxdWVzdCgiIiwge2JvZHk6IGJvZHksIG1ldGhvZDogIlBPU1QifSk7CiB9CiAKIHByb21p
c2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CkBAIC01OCwxMCArNzQsMjkgQEAgcHJvbWlzZV90ZXN0
KGZ1bmN0aW9uKHRlc3QpIHsKICAgICByZXR1cm4gdmFsaWRhdGVTdHJlYW1Gcm9tU3RyaW5nKGNy
ZWF0ZVJlcXVlc3RXaXRoQm9keShhcnJheUJ1ZmZlcikuYm9keS5nZXRSZWFkZXIoKSwgdGV4dERh
dGEpOwogfSwgIlJlYWQgYXJyYXkgYnVmZmVyIHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3Ry
ZWFtIik7CiAKLXByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7Citwcm9taXNlX3Rlc3QoYXN5
bmMgKHRlc3QpID0+IHsKICAgICB2YXIgcmVxdWVzdCA9IGNyZWF0ZVJlcXVlc3RXaXRoQm9keShm
b3JtRGF0YSk7Ci0gICAgcmV0dXJuIHZhbGlkYXRlU3RyZWFtRnJvbVN0cmluZyhyZXF1ZXN0LmJv
ZHkuZ2V0UmVhZGVyKCksICJuYW1lPXZhbHVlIik7CisgICAgY29uc3QgdmFsdWUgPSBhd2FpdCBn
ZXRTdHJpbmdGcm9tU3RyZWFtKHJlcXVlc3QuYm9keS5nZXRSZWFkZXIoKSk7CisKKyAgICBhc3Nl
cnRfdHJ1ZSh2YWx1ZS5pbmNsdWRlcygnbmFtZT0ibmFtZSInKSwgIm5hbWUiKTsKKyAgICBhc3Nl
cnRfdHJ1ZSh2YWx1ZS5pbmNsdWRlcygndmFsdWUnKSwgIm5hbWUiKTsKIH0sICJSZWFkIGZvcm0g
ZGF0YSByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSIpOworCitwcm9taXNlX3Rlc3Qo
YXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpOwor
ICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbIidIZWxsbyciXSwgeyAidHlwZSIgOiAidGV4dC9w
bGFpbiIgfSk7CisgICAgZm9ybURhdGEuYXBwZW5kKCJibG9iIiwgYmxvYiwgImJsb2IuZmlsZSIp
OworICAgIGZvcm1EYXRhLmFwcGVuZCgibmFtZSIsICJ2YWx1ZSIpOworCisgICAgY29uc3QgcmVx
dWVzdCA9IGNyZWF0ZVJlcXVlc3RXaXRoQm9keShmb3JtRGF0YSk7CisgICAgY29uc3QgdmFsdWUg
PSBhd2FpdCBnZXRTdHJpbmdGcm9tU3RyZWFtKHJlcXVlc3QuYm9keS5nZXRSZWFkZXIoKSk7CisK
KyAgICBhc3NlcnRfdHJ1ZSh2YWx1ZS5pbmNsdWRlcygnbmFtZT0ibmFtZSInKSwgIm5hbWUiKTsK
KyAgICBhc3NlcnRfdHJ1ZSh2YWx1ZS5pbmNsdWRlcygndmFsdWUnKSwgIm5hbWUiKTsKKworICAg
IGFzc2VydF90cnVlKHZhbHVlLmluY2x1ZGVzKCduYW1lPSJibG9iIicpLCAiYmxvYiIpOworICAg
IGFzc2VydF90cnVlKHZhbHVlLmluY2x1ZGVzKCdIZWxsbycpLCAiSGVsbG8iKTsKK30sICJSZWFk
IGZvcm0gZGF0YSB3aXRoIGJsb2IgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0iKTsK
ICAgICA8L3NjcmlwdD4KICAgPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiZGMzYzhlOWY2MGJlYmVmOThlYTc2MWU1OGVkYzI1
ZjFjMWQ2YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvZm9ybS1kYXRhLXVwbG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAor
T1BFTiBGSUxFIFBBTkVMCisKKworUEFTUyBTZXR1cCB3b3JrZXIKK1BBU1MgQ3JlYXRlIGNoYW5u
ZWwgd2l0aCB3b3JrZXIKK1BBU1MgU2V0dXAgZnJhbWUKK1BBU1MgU2V0dXAgZmlsZSB0byB1cGxv
YWQKK1BBU1MgU2V0dXAgZmlsZSBmb3JtIGRhdGEKK1BBU1MgVXBsb2FkIGludGVyY2VwdGVkIGJ5
IHNlcnZpY2Ugd29ya2VyCitQQVNTIFVwbG9hZCBjbG9uZWQgYnkgc2VydmljZSB3b3JrZXIKK1BB
U1MgRGVsZXRlIHRlbXBvcmFyeSBmaWxlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3NlcnZpY2Utd29ya2Vycy9mb3JtLWRhdGEtdXBsb2FkLXdvcmtlci5qcyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mb3JtLWRhdGEtdXBsb2FkLXdvcmtlci5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41NWJlMzg5NjE4ZWE5YWNlMTkyOTZlNTZjMzc3ZWQxNjFiMDQ5OTZiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL2Zvcm0t
ZGF0YS11cGxvYWQtd29ya2VyLmpzCkBAIC0wLDAgKzEsMTggQEAKK2FkZEV2ZW50TGlzdGVuZXIo
Im1lc3NhZ2UiLCBhc3luYyAoZSkgPT4geworICAgIGlmICghZS5kYXRhLnBvcnQpCisgICAgICAg
IHJldHVybjsKKworICAgIHNlbGYucG9ydCA9IGUuZGF0YS5wb3J0OworICAgIHNlbGYucG9ydC5w
b3N0TWVzc2FnZSgib2siKTsKK30pOworCithZGRFdmVudExpc3RlbmVyKCJmZXRjaCIsIGFzeW5j
IChlKSA9PiB7CisgICAgaWYgKGUucmVxdWVzdC51cmwuaW5jbHVkZXMoImNsb25lIikpIHsKKyAg
ICAgICAgY29uc3QgY2xvbmVkID0gZS5yZXF1ZXN0LmNsb25lKCk7CisgICAgICAgIGUucmVzcG9u
ZFdpdGgoZmV0Y2goZS5yZXF1ZXN0LmNsb25lKCkpKTsKKyAgICAgICAgaWYgKHNlbGYucG9ydCkK
KyAgICAgICAgICAgIHNlbGYucG9ydC5wb3N0TWVzc2FnZShhd2FpdCBjbG9uZWQudGV4dCgpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlLnJlc3BvbmRXaXRoKGZldGNoKGUucmVxdWVz
dCkpOworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvZm9ybS1kYXRhLXVwbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODMxN2QyNzNiNTNhMGM2
MTRiNTdiZWY3ZDNmY2I0MTMyM2RjZjljCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvc2VydmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQuaHRtbApAQCAtMCwwICsx
LDE0NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii93ZWJraXQt
dGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdD4KK2NvbnN0IHRlbXBGaWxlQ29udGVudCA9ICJURVNUIjsKK2NvbnN0IHRlbXBGaWxl
TmFtZSA9ICJ0ZXN0LnRtcCI7CisKK3ZhciBmaWxlSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpbnB1dCIpOworZmlsZUlucHV0LnR5cGUgPSAnZmlsZSc7CitmaWxlSW5wdXQuc3R5bGUu
d2lkdGggPSAiMTAwJSI7IC8vIFNvIHRoYXQgYW55IG1hbnVhbCB0ZXN0aW5nIHdpbGwgc2hvdyBm
dWxsIGZpbGUgbmFtZXMKK2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGZpbGVJbnB1dCwgZG9j
dW1lbnQuYm9keS5maXJzdENoaWxkKTsKKwordmFyIHNjb3BlID0gInJlc291cmNlcyI7Cit2YXIg
YWN0aXZlV29ya2VyOwordmFyIGZyYW1lOwordmFyIGZpbGVGcmFtZTsKK3ZhciBmb3JtRGF0YTsK
K3ZhciBmaWxlU2l6ZTsKKworZnVuY3Rpb24gd2l0aF9pZnJhbWUodXJsKSB7CisgICAgcmV0dXJu
IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHsKKyAgICAgICAgdmFyIGZyYW1lID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgICAgIGZyYW1lLmNsYXNzTmFtZSA9
ICd0ZXN0LWlmcmFtZSc7CisgICAgICAgIGZyYW1lLnNyYyA9IHVybDsKKyAgICAgICAgZnJhbWUu
b25sb2FkID0gZnVuY3Rpb24oKSB7IHJlc29sdmUoZnJhbWUpOyB9OworICAgICAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gcHJlcGFy
ZVVwbG9hZCgpCit7CisgICAgbGV0IHJlc29sdmUsIHJlamVjdDsKKyAgICBjb25zdCBwcm9taXNl
ID0gbmV3IFByb21pc2UoKHJlc29sdmVfLCByZWplY3RfKSA9PiB7CisgICAgICAgIHJlc29sdmUg
PSByZXNvbHZlXzsKKyAgICAgICAgcmVqZWN0ID0gcmVqZWN0XzsKKyAgICB9KTsKKyAgICBzZXRU
aW1lb3V0KCgpID0+IHJlamVjdCgidGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisKKyAgICB2YXIg
aW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXTsKKyAgICBp
bnB1dC5vbmNoYW5nZSA9IGFzeW5jIChlKSA9PiB7CisgICAgICAgIHZhciBmb3JtRGF0YSA9IG5l
dyBGb3JtRGF0YTsKKyAgICAgICAgZm9ybURhdGEuYXBwZW5kKCJmaWxlIiwgZS50YXJnZXQuZmls
ZXNbMF0sIHRlbXBGaWxlTmFtZSk7CisgICAgICAgIGZpbGVTaXplID0gZS50YXJnZXQuZmlsZXNb
MF0uc2l6ZTsKKyAgICAgICAgcmVzb2x2ZShmb3JtRGF0YSk7CisgICAgfTsKKworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLnNldE9wZW5QYW5lbEZpbGVz
KFt0ZW1wRmlsZVBhdGhdKTsKKworICAgICAgICB2YXIgY2VudGVyWCA9IGlucHV0Lm9mZnNldExl
ZnQgKyBpbnB1dC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgIHZhciBjZW50ZXJZID0gaW5wdXQu
b2Zmc2V0VG9wICsgaW5wdXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgVUlIZWxwZXIuYWN0
aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKTsKKyAgICB9CisgICAgcmV0dXJuIHByb21pc2U7Cit9
CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclBy
b2Nlc3ModHJ1ZSk7CisgICAgICAgIGF3YWl0IGZldGNoKCIiKS50aGVuKCgpID0+IHsgfSwgKCkg
PT4geyB9KTsKKyAgICB9CisKKyAgICB2YXIgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9y
LnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoImZvcm0tZGF0YS11cGxvYWQtd29ya2VyLmpzIiwgeyBz
Y29wZSA6IHNjb3BlIH0pOworICAgIGFjdGl2ZVdvcmtlciA9IHJlZ2lzdHJhdGlvbi5hY3RpdmU7
CisgICAgaWYgKCFhY3RpdmVXb3JrZXIpIHsKKyAgICAgICAgYWN0aXZlV29ya2VyID0gcmVnaXN0
cmF0aW9uLmluc3RhbGxpbmc7CisgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
eworICAgICAgICAgICAgYWN0aXZlV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdl
JywgKCkgPT4geworICAgICAgICAgICAgICAgIGlmIChhY3RpdmVXb3JrZXIuc3RhdGUgPT09ICJh
Y3RpdmF0ZWQiKQorICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisgICAgfQorfSwgIlNldHVwIHdvcmtlciIpOworCitjb25zdCBjaGFu
bmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+
IHsKKyAgICBhY3RpdmVXb3JrZXIucG9zdE1lc3NhZ2UoeyBwb3J0OiBjaGFubmVsLnBvcnQxIH0s
IFtjaGFubmVsLnBvcnQxXSk7CisgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBjaGFu
bmVsLnBvcnQyLm9ubWVzc2FnZSA9IHJlc29sdmUpOworfSwgIkNyZWF0ZSBjaGFubmVsIHdpdGgg
d29ya2VyIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGZyYW1lID0g
YXdhaXQgd2l0aF9pZnJhbWUoInJlc291cmNlcy8iKTsKK30sICJTZXR1cCBmcmFtZSIpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBwcm9taXNlID0gbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB3aW5kb3cub25tZXNzYWdlID0gcmVzb2x2ZSk7CisgICAgZmlsZUZy
YW1lID0gYXdhaXQgd2l0aF9pZnJhbWUoIi9XZWJLaXQvc2VydmljZS13b3JrZXJzL3Jlc291cmNl
cy9jcmVhdGUtdGVtcC1maWxlLWlmcmFtZS5odG1sIik7CisgICAgbGV0IGV2ZW50ID0gYXdhaXQg
cHJvbWlzZTsKKyAgICB0ZW1wRmlsZVBhdGggPSBldmVudC5kYXRhOworfSwgIlNldHVwIGZpbGUg
dG8gdXBsb2FkIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGZvcm1E
YXRhID0gYXdhaXQgcHJlcGFyZVVwbG9hZCgpOworICAgIGFzc2VydF9lcXVhbHMoZmlsZVNpemUs
IDQpOworfSwgIlNldHVwIGZpbGUgZm9ybSBkYXRhIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAo
dGVzdCkgPT4geworICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbIidIZWxsbyciXSwgeyAidHlw
ZSIgOiAidGV4dC9wbGFpbiIgfSk7CisgICAgZm9ybURhdGEuYXBwZW5kKCJibG9iIiwgYmxvYiwg
ImJsb2IuZmlsZSIpOworICAgIGZvcm1EYXRhLmFwcGVuZCgibmFtZSIsICJ2YWx1ZSIpOworCisg
ICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmcmFtZS5jb250ZW50V2luZG93LmZldGNoKCIvV2Vi
S2l0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvZmlsZS11cGxvYWQtY2hlY2sucHkiLCB7bWV0
aG9kOiAiUE9TVCIsIGJvZHk6IGZvcm1EYXRhfSk7CisgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJl
c3BvbnNlLnRleHQoKTsKKworICAgIGFzc2VydF90cnVlKHRleHQuaW5jbHVkZXModGVtcEZpbGVD
b250ZW50KSwgImNvbnRlbnQiKTsKKyAgICBhc3NlcnRfdHJ1ZSh0ZXh0LmluY2x1ZGVzKHRlbXBG
aWxlTmFtZSksICJuYW1lIik7CisKKyAgICBhc3NlcnRfdHJ1ZSh0ZXh0LmluY2x1ZGVzKCduYW1l
PSJuYW1lIicpLCAibmFtZSIpOworICAgIGFzc2VydF90cnVlKHRleHQuaW5jbHVkZXMoJ3ZhbHVl
JyksICJuYW1lIik7CisKKyAgICBhc3NlcnRfdHJ1ZSh0ZXh0LmluY2x1ZGVzKCduYW1lPSJibG9i
IicpLCAiYmxvYiIpOworICAgIGFzc2VydF90cnVlKHRleHQuaW5jbHVkZXMoJ0hlbGxvJyksICJI
ZWxsbyIpOworfSwgIlVwbG9hZCBpbnRlcmNlcHRlZCBieSBzZXJ2aWNlIHdvcmtlciIpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBibG9iID0gbmV3IEJsb2Io
WyInSGVsbG8nIl0sIHsgInR5cGUiIDogInRleHQvcGxhaW4iIH0pOworICAgIGZvcm1EYXRhLmFw
cGVuZCgiYmxvYiIsIGJsb2IsICJibG9iLmZpbGUiKTsKKyAgICBmb3JtRGF0YS5hcHBlbmQoIm5h
bWUiLCAidmFsdWUiKTsKKworICAgIGNvbnN0IG1lc3NhZ2VQcm9taXNlID0gbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiBjaGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9IChlKSA9PiByZXNvbHZlKGUuZGF0
YSkpOworCisgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmcmFtZS5jb250ZW50V2luZG93LmZl
dGNoKCIvV2ViS2l0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvZmlsZS11cGxvYWQtY2hlY2su
cHk/Y2xvbmUiLCB7bWV0aG9kOiAiUE9TVCIsIGJvZHk6IGZvcm1EYXRhfSk7CisgICAgY29uc3Qg
dGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTsKKworICAgIGNvbnN0IG1lc3NhZ2VUZXh0ID0g
YXdhaXQgbWVzc2FnZVByb21pc2U7CisgICAgYXNzZXJ0X2VxdWFscyh0ZXh0LCBtZXNzYWdlVGV4
dCk7CisKKyAgICBhc3NlcnRfdHJ1ZSh0ZXh0LmluY2x1ZGVzKCduYW1lPSJuYW1lIicpLCAibmFt
ZSIpOworICAgIGFzc2VydF90cnVlKHRleHQuaW5jbHVkZXMoJ3ZhbHVlJyksICJuYW1lIik7CisK
KyAgICBhc3NlcnRfdHJ1ZSh0ZXh0LmluY2x1ZGVzKCduYW1lPSJibG9iIicpLCAiYmxvYiIpOwor
ICAgIGFzc2VydF90cnVlKHRleHQuaW5jbHVkZXMoJ0hlbGxvJyksICJIZWxsbyIpOworfSwgIlVw
bG9hZCBjbG9uZWQgYnkgc2VydmljZSB3b3JrZXIiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0
ZXN0KSA9PiB7CisgICAgYXdhaXQgd2l0aF9pZnJhbWUoIi9XZWJLaXQvcmVzb3VyY2VzL2RlbGV0
ZS10ZW1wLWZpbGUtaWZyYW1lLmh0bWwiKTsKK30sICJEZWxldGUgdGVtcG9yYXJ5IGZpbGUiKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9jcmVhdGUtdGVtcC1maWxlLWlmcmFtZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9jcmVh
dGUtdGVtcC1maWxlLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzZDlmNzI4MDcwYTdmOGIwYjIz
YzM0YzRkOWNjMjExMjFlNjI0MzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL2NyZWF0ZS10ZW1wLWZpbGUtaWZyYW1lLmh0
bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9InRlbXAtZmlsZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorY29uc3Qg
dGVtcEZpbGVDb250ZW50ID0gIlRFU1QiOworY29uc3QgdGVtcEZpbGVOYW1lID0gInRlc3QudG1w
IjsKKworY29uc3QgcGF0aCA9IGNyZWF0ZVRlbXBGaWxlKHRlbXBGaWxlTmFtZSwgdGVtcEZpbGVD
b250ZW50KTsKK3dpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UocGF0aCwgIioiKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL3Jlc291cmNlcy9yZXNldC10ZW1wLWZpbGUucHkgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Jlc2V0LXRlbXAtZmlsZS5weQpuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lNTk5Y2Q0NmFjMjliZWZlNmZjOTVkMDhjNDkxMzQxM2UzMDMzN2UyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNl
cy9yZXNldC10ZW1wLWZpbGUucHkKQEAgLTAsMCArMSwxMSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uMworaW1wb3J0IG9zCitpbXBvcnQgdGVtcGZpbGUKKworCitkZWYgbWFpbihyZXF1ZXN0LCBy
ZXNwb25zZSk6CisgICAgZmlsZW5hbWUgPSByZXF1ZXN0LkdFVFtiJ2ZpbGVuYW1lJ10KKyAgICBz
dGF0ZV9maWxlID0gb3MucGF0aC5qb2luKHRlbXBmaWxlLmdldHRlbXBkaXIoKSwgZmlsZW5hbWUu
ZGVjb2RlKCkpCisgICAgaWYgb3MucGF0aC5leGlzdHMoc3RhdGVfZmlsZSk6CisgICAgICAgIG9z
LnJlbW92ZShzdGF0ZV9maWxlKQorICAgIHJldHVybiAyMDAsIFsoYiJDb250ZW50LVR5cGUiLCBi
InRleHQvaHRtbCIpXSwgIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZp
Y2Utd29ya2Vycy9yZXNvdXJjZXMvdGVtcC1maWxlLXV0aWxzLmpzIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZW1wLWZpbGUtdXRpbHMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjRjZTVjNGZiODY4Yzk3ZDIyNDE3NTFhNmMwMGNiMDNhNGUwOTM0NAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMv
dGVtcC1maWxlLXV0aWxzLmpzCkBAIC0wLDAgKzEsMzIgQEAKK2Z1bmN0aW9uIGNyZWF0ZVRlbXBG
aWxlKGZpbGVOYW1lLCBmaWxlRGF0YSkKK3sKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1
ZXN0KCk7CisgICAgeGhyLm9wZW4oIlBPU1QiLCAiL1dlYktpdC9zZXJ2aWNlLXdvcmtlcnMvcmVz
b3VyY2VzL3dyaXRlLXRlbXAtZmlsZS5weT9maWxlbmFtZT0iICsgZmlsZU5hbWUgKyAiJmRhdGE9
IiArIGZpbGVEYXRhLCBmYWxzZSk7CisgICAgeGhyLnNlbmQoKTsKKyAgICBpZiAoeGhyLnN0YXR1
cyAhPSAyMDApIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiVW5leHBlY3RlZCByZXNwb25zZSBzdGF0
dXMgcmVjZWl2ZWQ6ICIgKyB4aHIuc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHZhciB2YWx1ZXMgPSB4aHIucmVzcG9uc2VUZXh0LnNwbGl0KCdcbicpOworICAgIGlmICh4
aHIucmVzcG9uc2VUZXh0LmluZGV4T2YoIkZBSUwiKSA9PSAwKSB7CisgICAgICAgIHRlc3RGYWls
ZWQoIlVuZXhwZWN0ZWQgcmVzcG9uc2UgdGV4dCByZWNlaXZlZDogIiArIHhoci5yZXNwb25zZVRl
eHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmV0dXJuIHhoci5yZXNwb25zZVRl
eHQ7Cit9CisKK2Z1bmN0aW9uIHRvdWNoVGVtcEZpbGUoZmlsZU5hbWUpCit7CisgICAgdmFyIHho
ciA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHhoci5vcGVuKCJQT1NUIiwgIi9XZWJLaXQv
c2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90b3VjaC10ZW1wLWZpbGUucHk/ZmlsZW5hbWU9IiAr
IGZpbGVOYW1lLCBmYWxzZSk7CisgICAgeGhyLnNlbmQoKTsKK30KKworZnVuY3Rpb24gcmVtb3Zl
VGVtcEZpbGUoZmlsZU5hbWUpCit7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgp
OworICAgIHhoci5vcGVuKCJQT1NUIiwgIi9XZWJLaXQvc2VydmljZS13b3JrZXJzL3Jlc291cmNl
cy9yZXNldC10ZW1wLWZpbGUucHk/ZmlsZW5hbWU9IiArIGZpbGVOYW1lLCBmYWxzZSk7CisgICAg
eGhyLnNlbmQoKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9yZXNvdXJjZXMvdG91Y2gtdGVtcC1maWxlLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90b3VjaC10ZW1wLWZpbGUucHkKbmV3IGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTRkOTY0MWY1MjIzMDIyNDQ3NjI4YTJhMmRiNWYyM2VlZGFhYTc2MwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdG91
Y2gtdGVtcC1maWxlLnB5CkBAIC0wLDAgKzEsMjEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMK
KworaW1wb3J0IG9zCitpbXBvcnQgdGVtcGZpbGUKKworCitkZWYgbWFpbihyZXF1ZXN0LCByZXNw
b25zZSk6CisgICAgZmlsZW5hbWUgPSByZXF1ZXN0LkdFVFtiJ2ZpbGVuYW1lJ10KKyAgICB0bXBG
aWxlUGF0aCA9IG9zLnBhdGguam9pbih0ZW1wZmlsZS5nZXR0ZW1wZGlyKCksIGZpbGVuYW1lLmRl
Y29kZSgpKQorICAgIHN0YXQgPSBvcy5zdGF0KHRtcEZpbGVQYXRoKQorCisgICAgaWYgbm90IHN0
YXQ6CisgICAgICAgIHJldHVybiAyMDAsIFsoYiJDb250ZW50LVR5cGUiLCBiInRleHQvaHRtbCIp
XSwgIkZBSUw6IHN0YXQoKSBjYWxsIGZhaWxlZC5cbiIKKworICAgIGF0aW1lID0gc3RhdC5zdF9h
dGltZQorICAgIG10aW1lID0gc3RhdC5zdF9tdGltZQorICAgIHRyeToKKyAgICAgICAgb3MudXRp
bWUodG1wRmlsZVBhdGgsIHRpbWVzPShhdGltZSwgbXRpbWUgKyAxKSkKKyAgICBleGNlcHQ6Cisg
ICAgICAgIHJldHVybiAyMDAsIFsoYiJDb250ZW50LVR5cGUiLCBiInRleHQvaHRtbCIpXSwgIkZB
SUw6IHRvdWNoKCkgY2FsbCBmYWlsZWQuXG4iCisgICAgcmV0dXJuIDIwMCwgWyhiIkNvbnRlbnQt
VHlwZSIsIGIidGV4dC9odG1sIildLCAiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy93cml0ZS10ZW1wLWZpbGUucHkgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3dyaXRlLXRlbXAtZmlsZS5w
eQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lM2YyY2Y4YjJmYjExMjMwODc3OWM3ZmJmMDUyOWExZGUwNjUwZjA2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jl
c291cmNlcy93cml0ZS10ZW1wLWZpbGUucHkKQEAgLTAsMCArMSwxNiBAQAorIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uMworCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQorCisK
K2RlZiBtYWluKHJlcXVlc3QsIHJlc3BvbnNlKToKKyAgICBmaWxlbmFtZSA9IHJlcXVlc3QuR0VU
W2InZmlsZW5hbWUnXQorICAgIGRhdGEgPSByZXF1ZXN0LkdFVFtiJ2RhdGEnXQorCisgICAgdG1w
X2ZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcGZpbGUuZ2V0dGVtcGRpcigpLCBmaWxlbmFtZS5kZWNv
ZGUoKSkKKyAgICB3aXRoIG9wZW4odG1wX2ZpbGUsICd3JykgYXMgb3Blbl9maWxlOgorICAgICAg
ICBvcGVuX2ZpbGUud3JpdGUoZGF0YS5kZWNvZGUoKSkKKworICAgIHJldHVybiAyMDAsIFsoYiJD
b250ZW50LVR5cGUiLCBiInRleHQvaHRtbCIpXSwgdG1wX2ZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448282</attachid>
            <date>2022-01-04 04:20:49 -0800</date>
            <delta_ts>2022-01-05 01:30:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187461-20220104132046.patch</filename>
            <type>text/plain</type>
            <size>47239</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzllMDE1ZDIxZjIyZDgy
NzllMWVlYWJlODQzYjBmMTcyYWRiZTlmYi4uZTQ1MmRlMTExZjFkZWE3OWFkNzg3YzIwODg0MjJl
NGFlNmEwZDliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTAxLTAzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBGZXRjaCB1c2luZyBGb3Jt
RGF0YSB3aXRoIGZpbGUgZG9lc24ndCBnbyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc0NjEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQxOTc1NTQ0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZWFkaW5nIGZvcm1EYXRhIGJhc2Vk
IGJvZGllcyB0aHJvdWdoIHN0cmVhbXMgb3IgcmVndWxhciBtZXRob2RzIGxpa2UgdGV4dC4KKyAg
ICAgICAgRm9yIHRoYXQgcHVycG9zZSwgd2UgYWRkIEZvcm1EYXRhQ29uc3VtZXIgd2hpY2ggYWxs
b3dzIHNlcmlhbGl6aW5nIGZvcm0gZGF0YXMgdGhhdCBtYXkgY29udGFpbiBmaWxlcyBvciBibG9i
cy4KKyAgICAgICAgQWRkIHRoZSBhYmlsaXR5IHRvIGxvYWQgYmxvYnMgZnJvbSBCbG9iTG9hZGVy
IHVzaW5nIHRoZSBpbnRlcm5hbCBVUkwgKHN0b3JlZCBpbiBGb3JtRGF0YSkgaW4gbGlldSBvZiBw
YXNzaW5nIGEgYmxvYiBvYmplY3QuCisgICAgICAgIEVuYWJsZSBmZXRjaCBldmVudHMgZm9yIGZv
cm0gZGF0YSBiYXNlZCBmZXRjaCBldmVudHMuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRm9ybURhdGFDb25zdW1lci5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRm9ybURhdGFDb25zdW1lci5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZmls
ZWFwaS9CbG9iTG9hZGVyLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNw
cDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorCiAyMDIyLTAxLTAy
ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEFj
Y2VzcyBrZXkgc2hvdWxkIHdvcmsgb24gZm9jdXNhYmxlIGVsZW1lbnQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggYjhmMmVjMzczZDg3M2NjOWM4YWNi
M2M2ZWM4NDVmNmFiMDAwOWFhNi4uNzQxN2FlMGMxMjAzZWNmYzQ4NDkxZmUxMjQ4MDk2ZWI2NWVm
YzJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAt
OTQsOCArOTQsNyBAQCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4gRmV0Y2hCb2R5Ojpmcm9tRm9y
bURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dAogICAgICAgICByZXR1cm4gRmV0
Y2hCb2R5IHsgV1RGTW92ZShibG9iKSB9OwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBTdXBwb3J0
IGZvcm0gZGF0YSBib2RpZXMuCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4g
RmV0Y2hCb2R5IHsgUmVmIHsgZm9ybURhdGEgfSB9OwogfQogCiB2b2lkIEZldGNoQm9keTo6YXJy
YXlCdWZmZXIoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCkBAIC0xOTYsNyArMTk1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVBc1N0cmVh
bShGZXRjaEJvZHlPd25lciYgb3duZXIsIEZldGNoQm9keVNvdXJjZSYgc291cmNlKQogICAgICAg
ICBvd25lci5sb2FkQmxvYihibG9iQm9keSgpLCBudWxscHRyKTsKICAgICAgICAgbV9kYXRhID0g
bnVsbHB0cjsKICAgICB9IGVsc2UgaWYgKGlzRm9ybURhdGEoKSkKLSAgICAgICAgc291cmNlLmVy
cm9yKEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zIH0p
OworICAgICAgICBtX2NvbnN1bWVyLmNvbnN1bWVGb3JtRGF0YUFzU3RyZWFtKGZvcm1EYXRhQm9k
eSgpLCBzb3VyY2UsIG93bmVyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgZWxzZSBp
ZiAobV9jb25zdW1lci5oYXNEYXRhKCkpCiAgICAgICAgIGNsb3NlU3RyZWFtID0gc291cmNlLmVu
cXVldWUobV9jb25zdW1lci50YWtlQXNBcnJheUJ1ZmZlcigpKTsKICAgICBlbHNlCkBAIC0yMzQs
MTQgKzIzMyw4IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYg
b3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzCiAKIHZvaWQgRmV0Y2hCb2R5Ojpj
b25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiB7Ci0gICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5
KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0
YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgICAgICBt
X2RhdGEgPSBudWxscHRyOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJZiB0aGUg
Zm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9i
cy4KLSAgICAgICAgLy8gVGhhdCB3aWxsIGZpeCB0aGUgbGFzdCBXUFQgdGVzdCBpbiByZXNwb25z
ZS1jb25zdW1lLmh0bWwuCi0gICAgICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJv
cik7Ci0gICAgfQorICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhGb3JtRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBmb3JtRGF0YUJvZHkoKSwgb3duZXIuc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX2RhdGEgPSBudWxscHRyOwogfQogCiB2b2lkIEZl
dGNoQm9keTo6bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKQEAgLTMx
MSw3ICszMDQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogCiBG
ZXRjaEJvZHkgRmV0Y2hCb2R5OjpjbG9uZSgpCiB7Ci0gICAgRmV0Y2hCb2R5IGNsb25lKG1fY29u
c3VtZXIpOworICAgIEZldGNoQm9keSBjbG9uZShtX2NvbnN1bWVyLmNsb25lKCkpOwogCiAgICAg
aWYgKGlzQXJyYXlCdWZmZXIoKSkKICAgICAgICAgY2xvbmUubV9kYXRhID0gYXJyYXlCdWZmZXJC
b2R5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQx
YjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZjMDA4OGUxMmU0Li5hNGFmMmFhZDU4NTM1Njc4M2Jm
NzI3MTMxM2RjNjA0MGVkNzhmNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBGZXRjaEJv
ZHkoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogICAg
IGV4cGxpY2l0IEZldGNoQm9keShTdHJpbmcmJiBkYXRhKSA6IG1fZGF0YShXVEZNb3ZlKGRhdGEp
KSB7IH0KICAgICBleHBsaWNpdCBGZXRjaEJvZHkoUmVmPGNvbnN0IFVSTFNlYXJjaFBhcmFtcz4m
JiBkYXRhKSA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICBleHBsaWNpdCBGZXRjaEJv
ZHkoY29uc3QgRmV0Y2hCb2R5Q29uc3VtZXImIGNvbnN1bWVyKSA6IG1fY29uc3VtZXIoY29uc3Vt
ZXIpIHsgfQorICAgIGV4cGxpY2l0IEZldGNoQm9keShGZXRjaEJvZHlDb25zdW1lciYmIGNvbnN1
bWVyKSA6IG1fY29uc3VtZXIoV1RGTW92ZShjb25zdW1lcikpIHsgfQogICAgIGV4cGxpY2l0IEZl
dGNoQm9keShSZWY8UmVhZGFibGVTdHJlYW0+JiYgc3RyZWFtKSA6IG1fcmVhZGFibGVTdHJlYW0o
V1RGTW92ZShzdHJlYW0pKSB7IH0KIAogICAgIHZvaWQgY29uc3VtZShGZXRjaEJvZHlPd25lciYs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBjMjMxZjIwN2RhMjVjZDJhMTU4NjBk
MjhkYjNjZTE3ZTg1NzU3N2Q1Li42ZTQ1YjlmYjgzYzBlMTZlZWIwYWY3ZTg2NWMzMWY5ODUyYTM3
NTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZldGNoQm9keUNvbnN1bWVy
LmgiCiAKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgorI2luY2x1ZGUgIkZvcm1EYXRhQ29uc3Vt
ZXIuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyRmllbGQuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vy
cy5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgpAQCAtMjQzLDYgKzI0NCw4IEBAIHN0YXRpYyB2b2lk
IHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBG
ZXRjaEJvZHlDb25zCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7CiAgICAgbV9i
dWZmZXIucmVzZXQoKTsKKyAgICBpZiAobV9mb3JtRGF0YUNvbnN1bWVyKQorICAgICAgICBtX2Zv
cm1EYXRhQ29uc3VtZXItPmNhbmNlbCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAg
ICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjU1
LDYgKzI1OCw2MSBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlV2l0aERhdGEoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdAogICAgIHJlc29sdmVXaXRoVHlw
ZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgbV90eXBlLCBjb250ZW50VHlwZSwgZGF0YSwgbGVu
Z3RoKTsKIH0KIAordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZVdpdGhGb3JtRGF0YShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IGNvbnN0IEZvcm1EYXRhJiBmb3JtRGF0YSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKK3sKKyAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YS5hc1NoYXJlZEJ1ZmZl
cigpKSB7CisgICAgICAgIHJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBjb250ZW50
VHlwZSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghY29udGV4dCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9mb3JtRGF0YUNvbnN1bWVyID0gbWFrZVVuaXF1ZTxG
b3JtRGF0YUNvbnN1bWVyPihmb3JtRGF0YSwgKmNvbnRleHQsIFt0aGlzLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgY29udGVudFR5cGUsIGJ1aWxkZXIgPSBTaGFyZWRCdWZmZXJCdWlsZGVy
IHsgfV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1
dG8mIHZhbHVlID0gcmVzdWx0LnJldHVyblZhbHVlKCk7CisgICAgICAgIGlmICghdmFsdWUuc2l6
ZSgpKSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZUFzQ29udGlndW91
cygpOworICAgICAgICAgICAgcmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIGNvbnRl
bnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgYnVpbGRlci5hcHBlbmQodmFsdWUuZGF0YSgpLCB2
YWx1ZS5zaXplKCkpOworICAgIH0pOworfQorCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjb25z
dW1lRm9ybURhdGFBc1N0cmVhbShjb25zdCBGb3JtRGF0YSYgZm9ybURhdGEsIEZldGNoQm9keVNv
dXJjZSYgc291cmNlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIGlm
IChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZvcm1EYXRhLmFzU2hhcmVkQnVmZmVyKCkpIHsKKyAgICAg
ICAgaWYgKHNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc2hhcmVkQnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKSkpCisgICAg
ICAgICAgICBzb3VyY2UuY2xvc2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mb3JtRGF0YUNvbnN1bWVyID0g
bWFrZVVuaXF1ZTxGb3JtRGF0YUNvbnN1bWVyPihmb3JtRGF0YSwgKmNvbnRleHQsIFt0aGlzLCBz
b3VyY2UgPSBSZWYgeyBzb3VyY2UgfV0oYXV0byYmIHJlc3VsdCkgeworICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBzb3VyY2UtPmVycm9yKHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgYXV0byYgdmFsdWUgPSByZXN1bHQucmV0dXJuVmFsdWUoKTsKKyAgICAgICAgaWYgKCF2
YWx1ZS5zaXplKCkpIHsKKyAgICAgICAgICAgIHNvdXJjZS0+Y2xvc2UoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghc291cmNlLT5lbnF1ZXVlKEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUodmFsdWUuZGF0YSgpLCB2YWx1ZS5zaXplKCkpKSkKKyAgICAgICAg
ICAgIG1fZm9ybURhdGFDb25zdW1lci0+Y2FuY2VsKCk7CisgICAgfSk7Cit9CisKIHZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OmV4dHJhY3QoUmVhZGFibGVTdHJlYW0mIHN0cmVhbSwgUmVhZGFibGVT
dHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNT
RVJUKCFtX3NpbmspOwpAQCAtNDE2LDQgKzQ3NCwxMiBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVy
Ojpsb2FkaW5nU3VjY2VlZGVkKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgfQogfQog
CitGZXRjaEJvZHlDb25zdW1lciBGZXRjaEJvZHlDb25zdW1lcjo6Y2xvbmUoKQoreworICAgIEZl
dGNoQm9keUNvbnN1bWVyIGNsb25lIHsgbV90eXBlIH07CisgICAgY2xvbmUubV9jb250ZW50VHlw
ZSA9IG1fY29udGVudFR5cGU7CisgICAgY2xvbmUubV9idWZmZXIgPSBtX2J1ZmZlcjsKKyAgICBy
ZXR1cm4gY2xvbmU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCA4NzFkMmMwODYz
MzFhOTgyOTRhMTY2YTRiNDJlMzE4NGUwMzc3NzJiLi43OTgwNWQ0YWE1NjRiYTBjZjVhZTEzYTEy
NDQ5M2QwNjAzMWFkYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oCkBAIC0yOSw4ICsyOSwxMCBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJGZXRjaEJvZHlTb3VyY2UuaCIKKyNpbmNsdWRlICJGb3JtRGF0YUNvbnN1bWVyLmgi
CiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0
cmVhbVNpbmsuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNh
dG9yLmgiCiAKQEAgLTM5LDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxv
YjsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgRmV0Y2hCb2R5U291cmNlOworY2xhc3MgRm9y
bURhdGE7CiBjbGFzcyBSZWFkYWJsZVN0cmVhbTsKIAogY2xhc3MgRmV0Y2hCb2R5Q29uc3VtZXIg
ewpAQCAtNDcsNiArNTAsOCBAQCBwdWJsaWM6CiAKICAgICBleHBsaWNpdCBGZXRjaEJvZHlDb25z
dW1lcihUeXBlIHR5cGUpIDogbV90eXBlKHR5cGUpIHsgfQogCisgICAgRmV0Y2hCb2R5Q29uc3Vt
ZXIgY2xvbmUoKTsKKwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0K
QEAgLTY1LDYgKzcwLDggQEAgcHVibGljOgogICAgIHZvaWQgZXh0cmFjdChSZWFkYWJsZVN0cmVh
bSYsIFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpDYWxsYmFjayYmKTsKICAgICB2
b2lkIHJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgUmVhZGFibGVTdHJlYW0qKTsKICAgICB2b2lkIHJlc29sdmVXaXRoRGF0YShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCB1bnNpZ25l
ZCBjaGFyKiwgdW5zaWduZWQpOworICAgIHZvaWQgcmVzb2x2ZVdpdGhGb3JtRGF0YShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBGb3JtRGF0
YSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2b2lkIGNvbnN1bWVGb3JtRGF0YUFz
U3RyZWFtKGNvbnN0IEZvcm1EYXRhJiwgRmV0Y2hCb2R5U291cmNlJiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwogCiAgICAgdm9pZCBsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYpOwog
ICAgIHZvaWQgbG9hZGluZ1N1Y2NlZWRlZChjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKQEAg
LTg4LDYgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3Nv
dXJjZTsKICAgICBib29sIG1faXNMb2FkaW5nIHsgZmFsc2UgfTsKICAgICBSZWZQdHI8VXNlckdl
c3R1cmVUb2tlbj4gbV91c2VyR2VzdHVyZVRva2VuOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGb3Jt
RGF0YUNvbnN1bWVyPiBtX2Zvcm1EYXRhQ29uc3VtZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zvcm1EYXRh
Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9Gb3JtRGF0YUNvbnN1
bWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45ZjAxYzM0ZWMxMDMyMjUwYjY2YTcwYmYwODIwOTY0Y2M2YmJk
ODBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9Gb3Jt
RGF0YUNvbnN1bWVyLmNwcApAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJGb3JtRGF0YUNvbnN1bWVyLmgiCisKKyNpbmNsdWRlICJC
bG9iTG9hZGVyLmgiCisjaW5jbHVkZSAiRm9ybURhdGEuaCIKKyNpbmNsdWRlIDx3dGYvV29ya1F1
ZXVlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRm9ybURhdGFDb25zdW1lcjo6Rm9ybURh
dGFDb25zdW1lcihjb25zdCBGb3JtRGF0YSYgZm9ybURhdGEsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIENhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgOiBtX2Zvcm1EYXRhKGZvcm1E
YXRhLmNvcHkoKSkKKyAgICAsIG1fY29udGV4dCgmY29udGV4dCkKKyAgICAsIG1fY2FsbGJhY2so
V1RGTW92ZShjYWxsYmFjaykpCisgICAgLCBtX2ZpbGVRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgi
Rm9ybURhdGFDb25zdW1lciBmaWxlIHF1ZXVlIikpCit7CisgICAgcmVhZCgpOworfQorCitGb3Jt
RGF0YUNvbnN1bWVyOjp+Rm9ybURhdGFDb25zdW1lcigpCit7Cit9CisKK3ZvaWQgRm9ybURhdGFD
b25zdW1lcjo6cmVhZCgpCit7CisgICAgQVNTRVJUKG1fY2FsbGJhY2spOworICAgIEFTU0VSVCht
X2NvbnRleHQpOworICAgIEFTU0VSVCghbV9ibG9iTG9hZGVyKTsKKworICAgIGlmIChtX2N1cnJl
bnRFbGVtZW50SW5kZXggPj0gbV9mb3JtRGF0YS0+ZWxlbWVudHMoKS5zaXplKCkpIHsKKyAgICAg
ICAgbV9jYWxsYmFjayhTcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBXVEY6OnN3aXRjaE9uKG1fZm9ybURhdGEtPmVsZW1lbnRzKClbbV9jdXJy
ZW50RWxlbWVudEluZGV4KytdLmRhdGEsIFt0aGlzXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGNv
bnRlbnQpIHsKKyAgICAgICAgY29uc3VtZURhdGEoY29udGVudCk7CisgICAgfSwgW3RoaXNdKGNv
bnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgeworICAgICAg
ICBjb25zdW1lRmlsZShmaWxlRGF0YS5maWxlbmFtZSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IEZv
cm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRhJiBibG9iRGF0YSkgeworICAgICAgICBjb25z
dW1lQmxvYihibG9iRGF0YS51cmwpOworICAgIH0pOworfQorCit2b2lkIEZvcm1EYXRhQ29uc3Vt
ZXI6OmNvbnN1bWVEYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY29udGVudCkKK3sKKyAgICBj
b25zdW1lKFNwYW48Y29uc3QgdWludDhfdD4geyBjb250ZW50LmRhdGEoKSwgY29udGVudC5zaXpl
KCkgfSk7Cit9CisKK3ZvaWQgRm9ybURhdGFDb25zdW1lcjo6Y29uc3VtZUZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSkKK3sKKyAgICBtX2ZpbGVRdWV1ZS0+ZGlzcGF0Y2goW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBtX2NvbnRleHQtPmlkZW50aWZpZXIoKSwg
cGF0aCA9IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGlkZW50aWZpZXIsIFt3ZWFrVGhpcyA9IFdU
Rk1vdmUod2Vha1RoaXMpLCBjb250ZW50ID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUocGF0
aCldKGF1dG8mKSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgaWYgKCFjb250ZW50KSB7CisgICAgICAgICAgICAgICAg
aWYgKHdlYWtUaGlzLT5tX2NhbGxiYWNrKQorICAgICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+
bV9jYWxsYmFjayhFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIlVuYWJsZSB0byByZWFk
IGZvcm0gZGF0YSBmaWxlIl9zIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgd2Vha1RoaXMtPmNvbnN1bWUoKmNvbnRlbnQpOworICAgICAg
ICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBGb3JtRGF0YUNvbnN1bWVyOjpjb25zdW1lQmxvYihj
b25zdCBVUkwmIGJsb2JVUkwpCit7CisgICAgbV9ibG9iTG9hZGVyID0gbWFrZVVuaXF1ZTxCbG9i
TG9hZGVyPihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0oQmxvYkxvYWRlciYpIG11dGFi
bGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGF1dG8gbG9hZGVyID0gc3RkOjpleGNoYW5nZSh3ZWFrVGhpcy0+bV9ibG9iTG9hZGVyLCB7
IH0pOworICAgICAgICBpZiAoYXV0byBvcHRpb25hbEVycm9yQ29kZSA9IGxvYWRlci0+ZXJyb3JD
b2RlKCkpIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcy0+bV9jYWxsYmFjaykKKyAgICAgICAg
ICAgICAgICB3ZWFrVGhpcy0+bV9jYWxsYmFjayhFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgIkZhaWxlZCB0byByZWFkIGZvcm0gZGF0YSBibG9iIl9zIH0pOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGF1dG8gZGF0YSA9IGxvYWRlci0+YXJyYXlC
dWZmZXJSZXN1bHQoKSkKKyAgICAgICAgICAgIHdlYWtUaGlzLT5jb25zdW1lKFNwYW48Y29uc3Qg
dWludDhfdD4geyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS0+ZGF0YSgpKSwgZGF0
YS0+Ynl0ZUxlbmd0aCgpIH0pOworICAgIH0pOworCisgICAgbV9ibG9iTG9hZGVyLT5zdGFydChi
bG9iVVJMLCBtX2NvbnRleHQuZ2V0KCksIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVm
ZmVyKTsKKworICAgIGlmICghbV9ibG9iTG9hZGVyLT5pc0xvYWRpbmcoKSkgeworICAgICAgICBt
X2NhbGxiYWNrKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiVW5hYmxlIHRvIHJlYWQg
Zm9ybSBkYXRhIGJsb2IiX3MgfSk7CisgICAgICAgIG1fYmxvYkxvYWRlciA9IG51bGxwdHI7Cisg
ICAgfQorfQorCit2b2lkIEZvcm1EYXRhQ29uc3VtZXI6OmNvbnN1bWUoU3Bhbjxjb25zdCB1aW50
OF90PiBjb250ZW50KQoreworICAgIGlmICghbV9jYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9jYWxsYmFjayhTcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgY29udGVudC5kYXRhKCksIGNv
bnRlbnQuc2l6ZSgpIH0pOworICAgIGlmICghbV9jYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcmVhZCgpOworfQorCit2b2lkIEZvcm1EYXRhQ29uc3VtZXI6OmNhbmNlbCgpCit7Cisg
ICAgbV9jYWxsYmFjayA9IG51bGxwdHI7CisgICAgaWYgKG1fYmxvYkxvYWRlcikgeworICAgICAg
ICBtX2Jsb2JMb2FkZXItPmNhbmNlbCgpOworICAgICAgICBtX2Jsb2JMb2FkZXIgPSBudWxscHRy
OworICAgIH0KKyAgICBtX2NvbnRleHQgPSBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zvcm1EYXRh
Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRm9ybURhdGFDb25zdW1l
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJhYTgyNTk2MWNjZmI2NGUxZGQyMzg4MjQzM2E3NzlmZWIwMTk3ODAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zvcm1EYXRh
Q29uc3VtZXIuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oIgorI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8
d3RmL1NwYW4uaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorI2luY2x1ZGUgPHd0Zi9Xb3Jr
UXVldWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCbG9iTG9hZGVyOworY2xh
c3MgRm9ybURhdGE7CisKK2NsYXNzIEZvcm1EYXRhQ29uc3VtZXIgOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8Rm9ybURhdGFDb25zdW1lcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIHVzaW5nIENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxT
cGFuPGNvbnN0IHVpbnQ4X3Q+Pik+OworICAgIEZvcm1EYXRhQ29uc3VtZXIoY29uc3QgRm9ybURh
dGEmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgQ2FsbGJhY2smJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgfkZvcm1EYXRhQ29uc3VtZXIoKTsKKworICAgIHZvaWQgY2FuY2VsKCk7CisKK3ByaXZh
dGU6CisgICAgdm9pZCBjb25zdW1lRGF0YShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICB2
b2lkIGNvbnN1bWVGaWxlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgY29uc3VtZUJsb2IoY29u
c3QgVVJMJik7CisKKyAgICB2b2lkIGNvbnN1bWUoU3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAg
dm9pZCByZWFkKCk7CisKKyAgICBSZWY8Rm9ybURhdGE+IG1fZm9ybURhdGE7CisgICAgUmVmUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKKyAgICBDYWxsYmFjayBtX2NhbGxi
YWNrOworCisgICAgc2l6ZV90IG1fY3VycmVudEVsZW1lbnRJbmRleCB7IDAgfTsKKyAgICBSZWY8
V29ya1F1ZXVlPiBtX2ZpbGVRdWV1ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvYkxvYWRlcj4g
bV9ibG9iTG9hZGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCBiZDVhNzQ3OWNiMzllNDZjYzkxMDQwMGY0ZWUzODQ5MzI0Yzc1MzFmLi5mNmYwMGFlOGFm
ZGYxMDJhMzZmMTI1MTQ1NzQxMjJhMzA5Yzk0MDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtODgsNiAr
ODgsNyBAQCBNb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAKIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuY3BwCiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAKK01vZHVsZXMvZmV0Y2gvRm9ybURhdGFDb25zdW1lci5jcHAK
IE1vZHVsZXMvZmV0Y2gvV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZUZldGNoLmNwcAogTW9kdWxl
cy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUuY3BwCiBNb2R1bGVz
L2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2M5ZWMyNWMw
YTkyNDYwNmFlMmViMzI3NjRhMTc4ZGRjYzk0NDNmOC4uNzBiZTI4M2EwMzRlYjMwNTQ5MjMzMTBl
YTViMjM2MGQwZWZiZjBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODQ4MSw2ICs4NDgxLDggQEAKIAkJM0ZCQzRBRjExODk4
ODE1NjAwNDZFRTM4IC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNGQkM0QUYyMTg5ODgxNTYw
MDQ2RUUzOCAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTAyNEZDODIzQ0YyNTRGMDBGREY5OEUgLyogU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMDJFRTBF
Mjc4MzBFNjMwMEQ2QkU3NCAvKiBGb3JtRGF0YUNvbnN1bWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZv
cm1EYXRhQ29uc3VtZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEwMkVFMTAy
NzgzMEU2MzAwRDZCRTc0IC8qIEZvcm1EYXRhQ29uc3VtZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRm9ybURhdGFDb25zdW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
MDc5MDhBMUZDM0U0RjIwMDYxQjI3QSAvKiBDbGllbnRPcmlnaW4uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2xpZW50T3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMDkzODJDMjM0Nzg1MEUwMDk0MjhCQSAvKiBKU0Fib3J0U2lnbmFsQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWJvcnRTaWduYWxDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTBBOEVGNDI0RjgyM0I5MDA0RjkwNzAgLyogVGV4dEVuY29k
ZXJTdHJlYW0uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFRleHRFbmNvZGVyU3RyZWFtLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIxMjcwLDYgKzIxMjcyLDggQEAKIAkJCQk0MTMwMTVENTFDN0I1NzA0
MDAwOTFDNkUgLyogRmV0Y2hSZXNwb25zZS5jcHAgKi8sCiAJCQkJNDEzMDE1RDYxQzdCNTcwNDAw
MDkxQzZFIC8qIEZldGNoUmVzcG9uc2UuaCAqLywKIAkJCQk0MTMwMTVENzFDN0I1NzA0MDAwOTFD
NkUgLyogRmV0Y2hSZXNwb25zZS5pZGwgKi8sCisJCQkJNDEwMkVFMTAyNzgzMEU2MzAwRDZCRTc0
IC8qIEZvcm1EYXRhQ29uc3VtZXIuY3BwICovLAorCQkJCTQxMDJFRTBFMjc4MzBFNjMwMEQ2QkU3
NCAvKiBGb3JtRGF0YUNvbnN1bWVyLmggKi8sCiAJCQkJN0MyRTBCRDEyNTEwNkFDNDAwNUYzQzg3
IC8qIFdpbmRvd09yV29ya2VyR2xvYmFsU2NvcGUrRmV0Y2guaWRsICovLAogCQkJCTdDMkUwQkQw
MjUxMDZBQzQwMDVGM0M4NyAvKiBXaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlRmV0Y2guY3BwICov
LAogCQkJCTdDMkUwQkNGMjUxMDZBQzQwMDVGM0M4NyAvKiBXaW5kb3dPcldvcmtlckdsb2JhbFNj
b3BlRmV0Y2guaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYkxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iTG9hZGVyLmgKaW5kZXggOGIxYTYx
MTdmMjZlNzE3YmJjOGY5MWZhZWJkZDQ0MDc3NTYxYTU4Zi4uY2QwZDBjMWI5YTU0M2RiMDQyNTNh
NzJkYmY1ZDA3N2FjMWZjNTM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9C
bG9iTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iTG9hZGVyLmgKQEAg
LTQzLDYgKzQzLDcgQEAgcHVibGljOgogICAgIH5CbG9iTG9hZGVyKCk7CiAKICAgICB2b2lkIHN0
YXJ0KEJsb2ImLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVJlYWRlckxvYWRlcjo6UmVh
ZFR5cGUpOworICAgIHZvaWQgc3RhcnQoY29uc3QgVVJMJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRUeXBlKTsKIAogICAgIHZvaWQgY2FuY2VsKCk7CiAg
ICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlciAmJiBtX2NvbXBsZXRp
b25IYW5kbGVyOyB9CkBAIC04OSw2ICs5MCwxMyBAQCBpbmxpbmUgdm9pZCBCbG9iTG9hZGVyOjpz
dGFydChCbG9iJiBibG9iLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBGaWxlUgog
ICAgIG1fbG9hZGVyLT5zdGFydChjb250ZXh0LCBibG9iKTsKIH0KIAoraW5saW5lIHZvaWQgQmxv
YkxvYWRlcjo6c3RhcnQoY29uc3QgVVJMJiBibG9iVVJMLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwZSByZWFkVHlwZSkKK3sKKyAgICBB
U1NFUlQoIW1fbG9hZGVyKTsKKyAgICBtX2xvYWRlciA9IG1ha2VVbmlxdWU8RmlsZVJlYWRlckxv
YWRlcj4ocmVhZFR5cGUsIHRoaXMpOworICAgIG1fbG9hZGVyLT5zdGFydChjb250ZXh0LCBibG9i
VVJMKTsKK30KKwogaW5saW5lIHZvaWQgQmxvYkxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZygpCiB7
CiAgICAgbV9jb21wbGV0aW9uSGFuZGxlcigqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCBiN2Y3NWVkYTNiMjMzYjE5YjIwZWQ3MDQyODk0
OWJiMzM1ODk4ZTgxLi43NGVmNWY0YjhiNDdhNzJhNTU5MDg3ZmFmYTcxNzU2ODhlOGQ1NjQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKQEAgLTczLDYg
KzczLDExIEBAIEZpbGVSZWFkZXJMb2FkZXI6On5GaWxlUmVhZGVyTG9hZGVyKCkKIH0KIAogdm9p
ZCBGaWxlUmVhZGVyTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBCbG9iJiBibG9iKQoreworICAgIHN0YXJ0KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIGJsb2IudXJsKCkpOworfQorCit2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OnN0YXJ0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFVS
TCYgYmxvYlVSTCkKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAKQEAg
LTgyLDcgKzg3LDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG8KICAgICAgICAgZmFpbGVkKFNl
Y3VyaXR5RXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0
eU9yaWdpbigpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb2xpY3lDb250YWluZXIoKSwgbV91
cmxGb3JSZWFkaW5nLCBibG9iLnVybCgpKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9saWN5Q29udGFpbmVyKCksIG1fdXJsRm9yUmVhZGlu
ZywgYmxvYlVSTCk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYW5kIGxvYWQgdGhlIHJlcXVlc3QuCiAg
ICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobV91cmxGb3JSZWFkaW5nKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggNTM5YzIzMDRhODJlNjNhYWRmZTJj
NTY3Yzk4ZDBiOGM2ODdhOGU5Zi4uZGJhZTllMzM1MDkwYThiOTZkZmI3NmViNmUxNTExMjU5ODhl
NjBlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKQEAgLTY2
LDYgKzY2LDcgQEAgcHVibGljOgogICAgIH5GaWxlUmVhZGVyTG9hZGVyKCk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbG9iJik7Cisg
ICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgVVJMJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjYW5jZWwoKTsKIAogICAgIC8vIFRocmVhZGFibGVMb2FkZXJD
bGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDhhOTEzOGQyM2IwZDVkZWM1M2Qy
OTkwZGVkNWRiNzc2MzU0ZTUyNDAuLjlkOWFjZDY0YTE2MjE4NGRjYzEyYTRkNDQzZWJlMDAyYTY1
MmI2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAtNDYsNyArNDYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgU2VydmljZVdvcmtlckZldGNoIHsKIAogLy8gaHR0
cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2h0dHAtZmV0Y2ggc3RlcCAzLjMKLXN0YXRpYyBp
bmxpbmUgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUVycm9yPiB2YWxpZGF0ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBGZXRjaE9wdGlvbnM6Ok1vZGUgbW9kZSwgRmV0
Y2hPcHRpb25zOjpSZWRpcmVjdCByZWRpcmVjdCkKK3N0YXRpYyBpbmxpbmUgUmVzb3VyY2VFcnJv
ciB2YWxpZGF0ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBGZXRj
aE9wdGlvbnM6Ok1vZGUgbW9kZSwgRmV0Y2hPcHRpb25zOjpSZWRpcmVjdCByZWRpcmVjdCkKIHsK
ICAgICBpZiAocmVzcG9uc2UudHlwZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlR5cGU6OkVycm9y
KQogICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJu
YWwsIDAsIHJlc3BvbnNlLnVybCgpLCAiUmVzcG9uc2Ugc2VydmVkIGJ5IHNlcnZpY2Ugd29ya2Vy
IGlzIGFuIGVycm9yIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsLCBSZXNvdXJjZUVy
cm9yOjpJc1Nhbml0aXplZDo6WWVzIH07CkBAIC04NCw4ICs4NCw4IEBAIHN0YXRpYyB2b2lkIHBy
b2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVz
cG9uc2U+LCBzCiAgICAgfQogCiAgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlID0gcmVzcG9uc2Ut
PnJlc291cmNlUmVzcG9uc2UoKTsKLSAgICBpZiAoYXV0byBlcnJvciA9IHZhbGlkYXRlUmVzcG9u
c2UocmVzb3VyY2VSZXNwb25zZSwgbW9kZSwgcmVkaXJlY3QpKSB7Ci0gICAgICAgIGNsaWVudC0+
ZGlkRmFpbChlcnJvci52YWx1ZSgpKTsKKyAgICBpZiAoYXV0byBlcnJvciA9IHZhbGlkYXRlUmVz
cG9uc2UocmVzb3VyY2VSZXNwb25zZSwgbW9kZSwgcmVkaXJlY3QpOyAhZXJyb3IuaXNOdWxsKCkp
IHsKKyAgICAgICAgY2xpZW50LT5kaWRGYWlsKGVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGJkNDBlNzI0MzY1MDQ4YTQ5NjBiZDA5OGU3ZDgwNzExNzIyM2NlMzQuLjU3
NjdlNWQxNTA2YmE4MzlmMTA0YTA4ZTk2ZmU0MGJjNjBkOTc3ZTMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NSBAQAorMjAyMi0wMS0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAg
ICAgICAgRmV0Y2ggdXNpbmcgRm9ybURhdGEgd2l0aCBmaWxlIGRvZXNuJ3QgZ28gdGhyb3VnaCBT
ZXJ2aWNlIFdvcmtlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg3NDYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTk3NTU0ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBhZGRpdGlvbiB0byBh
ZGRpbmcgYSB0ZXN0IHRvIGh0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY29uc3VtZS1zdHJlYW0uaHRt
bCwgd2UgZml4IHRoZSBvdGhlciB0ZXN0cyB0aGF0IHNob3VsZCBhbGwgYmUgcGFzc2luZy4KKyAg
ICAgICAgQWRkIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mb3JtLWRhdGEtdXBsb2FkLmh0bWwg
YW5kIHRyYW5zbGF0ZSBleGl0aW5nIGh0dHAvdGVzdHMgc2NyaXB0cyBmb3IgdGhlIFdQVCBzZXJ2
ZXIuCisKKyAgICAgICAgKiBodHRwL3dwdC9mZXRjaC9yZXF1ZXN0LWNvbnN1bWUtc3RyZWFtLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC9mZXRjaC9yZXF1ZXN0LWNvbnN1bWUtc3Ry
ZWFtLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL2Zvcm0tZGF0YS11
cGxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdv
cmtlcnMvZm9ybS1kYXRhLXVwbG9hZC13b3JrZXIuanM6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
d3B0L3NlcnZpY2Utd29ya2Vycy9mb3JtLWRhdGEtdXBsb2FkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvY3JlYXRlLXRlbXAtZmlsZS1p
ZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jl
c291cmNlcy9yZXNldC10ZW1wLWZpbGUucHk6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3Nl
cnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVtcC1maWxlLXV0aWxzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3RvdWNoLXRlbXAtZmlsZS5w
eTogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy93
cml0ZS10ZW1wLWZpbGUucHk6IEFkZGVkLgorCiAyMDIyLTAxLTAzICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHN1cmUgc2VjdXJlIHdlYnNvY2tldCBj
b25uZWN0aW9ucyBpbiBzZXJ2aWNlIHdvcmtlcnMgY2FuIHRyaWdnZXIgYXV0aGVudGljYXRpb24g
Y2hhbGxlbmdlIGNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggNzI1
ZmY3MWNlZWU0OWVmYmE4MGIxMTUwMGZhN2NkMzMxZDk4NGMyNC4uYTY0ODhkNDU1ZmI0Mjk4NjM1
ZTkzOWEzOTk5ZDczNzM0NDZmNWFkYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMjItMDEtMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgorCisgICAgICAgIEZldGNoIHVzaW5nIEZvcm1EYXRhIHdpdGggZmlsZSBkb2Vzbid0IGdv
IHRocm91Z2ggU2VydmljZSBXb3JrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4NzQ2MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDE5NzU1NDQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2Uv
cmVzcG9uc2UtY29uc3VtZS1zdHJlYW0uYW55LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtc3RyZWFt
LmFueS53b3JrZXItZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAxLTAyICBBbnRvaW5lIFF1aW50ICA8
Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtXZWIgQW5pbWF0aW9uc10gZ2V0S2V5ZnJh
bWVzKCkgc2hvdWxkIGhhbmRsZSBtdWx0aXBsZSAwJSBhbmQgMTAwJSBrZXlmcmFtZXMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY29uc3VtZS1zdHJlYW0t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1l
LXN0cmVhbS1leHBlY3RlZC50eHQKaW5kZXggY2RkNjY5ODIyMzUwZTRiMGE1YTQ3OWZiMGZhY2Jl
YTY1YzNiMjRlOC4uMzVhYzc3YjU0ZWZkNWJhYTE5MTY0N2IwNjczZTk2OGRhMzc5NzYxNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0cmVh
bS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1j
b25zdW1lLXN0cmVhbS1leHBlY3RlZC50eHQKQEAgLTEsOSArMSwxMCBAQAogCi1GQUlMIFJlYWQg
ZW1wdHkgdGV4dCByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSBhc3NlcnRfYXJyYXlf
ZXF1YWxzOiBSZXRyaWV2ZSBhbmQgdmVyaWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0
ZWQgYXJyYXkgb2JqZWN0ICIiIGxlbmd0aCAwLCBnb3Qgb2JqZWN0ICIxMjMsMzQsMTA3LDEwMSwx
MjEsMzQsNTgsMzIsMzQsMTE4LDk3LDEwOCwxMTcsMTAxLDM0LDEyNSIgbGVuZ3RoIDE2Ci1GQUlM
IFJlYWQgZW1wdHkgYmxvYiByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSBhc3NlcnRf
YXJyYXlfZXF1YWxzOiBSZXRyaWV2ZSBhbmQgdmVyaWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZlciwg
ZXhwZWN0ZWQgYXJyYXkgb2JqZWN0ICIiIGxlbmd0aCAwLCBnb3Qgb2JqZWN0ICIxMjMsMzQsMTA3
LDEwMSwxMjEsMzQsNTgsMzIsMzQsMTE4LDk3LDEwOCwxMTcsMTAxLDM0LDEyNSIgbGVuZ3RoIDE2
Ci1GQUlMIFJlYWQgYmxvYiByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSBhc3NlcnRf
YXJyYXlfZXF1YWxzOiBSZXRyaWV2ZSBhbmQgdmVyaWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZlciwg
ZXhwZWN0ZWQgYXJyYXkgb2JqZWN0ICIxMTUsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExMywxMTcs
MTAxLDExNSwxMTYsMzksMTE1LDMyLDk4LDExMSwxMDAsMTIxLDM0IiBsZW5ndGggMjQsIGdvdCBv
YmplY3QgIjEyMywzNCwxMDcsMTAxLDEyMSwzNCw1OCwzMiwzNCwxMTgsOTcsMTA4LDExNywxMDEs
MzQsMTI1IiBsZW5ndGggMTYKLUZBSUwgUmVhZCB0ZXh0IHJlcXVlc3QncyBib2R5IGFzIHJlYWRh
YmxlU3RyZWFtIGFzc2VydF9hcnJheV9lcXVhbHM6IFJldHJpZXZlIGFuZCB2ZXJpZnkgc3RyZWFt
IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBvYmplY3QgIjExNSwzMiwxMDUsMTE1LDMy
LDExNCwxMDEsMTEzLDExNywxMDEsMTE1LDExNiwzOSwxMTUsMzIsOTgsMTExLDEwMCwxMjEsMzQi
IGxlbmd0aCAyNCwgZ290IG9iamVjdCAiMTIzLDM0LDEwNywxMDEsMTIxLDM0LDU4LDMyLDM0LDEx
OCw5NywxMDgsMTE3LDEwMSwzNCwxMjUiIGxlbmd0aCAxNgotRkFJTCBSZWFkIFVSTFNlYXJjaFBh
cmFtcyByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSBhc3NlcnRfYXJyYXlfZXF1YWxz
OiBSZXRyaWV2ZSBhbmQgdmVyaWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJy
YXkgb2JqZWN0ICIxMTAsOTcsMTA5LDEwMSw2MSwxMTgsOTcsMTA4LDExNywxMDEiIGxlbmd0aCAx
MCwgZ290IG9iamVjdCAiMTIzLDM0LDEwNywxMDEsMTIxLDM0LDU4LDMyLDM0LDExOCw5NywxMDgs
MTE3LDEwMSwzNCwxMjUiIGxlbmd0aCAxNgotRkFJTCBSZWFkIGFycmF5IGJ1ZmZlciByZXF1ZXN0
J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBSZXRyaWV2ZSBh
bmQgdmVyaWZ5IHN0cmVhbSBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgb2JqZWN0ICIx
MTUsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExMywxMTcsMTAxLDExNSwxMTYsMzksMTE1LDMyLDk4
LDExMSwxMDAsMTIxLDM0IiBsZW5ndGggMjQsIGdvdCBvYmplY3QgIjEyMywzNCwxMDcsMTAxLDEy
MSwzNCw1OCwzMiwzNCwxMTgsOTcsMTA4LDExNywxMDEsMzQsMTI1IiBsZW5ndGggMTYKLUZBSUwg
UmVhZCBmb3JtIGRhdGEgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gYXNzZXJ0X2Fy
cmF5X2VxdWFsczogUmV0cmlldmUgYW5kIHZlcmlmeSBzdHJlYW0gbGVuZ3RocyBkaWZmZXIsIGV4
cGVjdGVkIGFycmF5IG9iamVjdCAiMTEwLDk3LDEwOSwxMDEsNjEsMTE4LDk3LDEwOCwxMTcsMTAx
IiBsZW5ndGggMTAsIGdvdCBvYmplY3QgIjEyMywzNCwxMDcsMTAxLDEyMSwzNCw1OCwzMiwzNCwx
MTgsOTcsMTA4LDExNywxMDEsMzQsMTI1IiBsZW5ndGggMTYKK1BBU1MgUmVhZCBlbXB0eSB0ZXh0
IHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWQgZW1wdHkgYmxvYiBy
ZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbQorUEFTUyBSZWFkIGJsb2IgcmVxdWVzdCdz
IGJvZHkgYXMgcmVhZGFibGVTdHJlYW0KK1BBU1MgUmVhZCB0ZXh0IHJlcXVlc3QncyBib2R5IGFz
IHJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWQgVVJMU2VhcmNoUGFyYW1zIHJlcXVlc3QncyBib2R5
IGFzIHJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWQgYXJyYXkgYnVmZmVyIHJlcXVlc3QncyBib2R5
IGFzIHJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWQgZm9ybSBkYXRhIHJlcXVlc3QncyBib2R5IGFz
IHJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWQgZm9ybSBkYXRhIHdpdGggYmxvYiByZXF1ZXN0J3Mg
Ym9keSBhcyByZWFkYWJsZVN0cmVhbQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC9mZXRjaC9yZXF1ZXN0LWNvbnN1bWUtc3RyZWFtLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC9mZXRjaC9yZXF1ZXN0LWNvbnN1bWUtc3RyZWFtLmh0bWwKaW5kZXggYTU4YTQ3MjAwNDNjYjk0
MTE3MWI3MzYxZTA5ZWI4ZjE0OWUyYmFiNy4uYzQ5YTk3YzJkNDg0Mjc0ZWZmNzkxMzQ2YzczYmE1
NGU2Y2M0MjUyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gvcmVxdWVz
dC1jb25zdW1lLXN0cmVhbS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3Jl
cXVlc3QtY29uc3VtZS1zdHJlYW0uaHRtbApAQCAtMTEsOSArMTEsMjUgQEAKICAgPC9oZWFkPgog
ICA8Ym9keT4KICAgICA8c2NyaXB0PgorYXN5bmMgZnVuY3Rpb24gZ2V0U3RyaW5nRnJvbVN0cmVh
bShyZWFkZXIsIGN1cnJlbnRWYWx1ZSkgeworICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZWFkZXIu
cmVhZCgpOworICAgIGlmICghZGF0YS5kb25lKSB7CisgICAgICAgIGxldCBidWZmZXI7CisgICAg
ICAgIGlmIChjdXJyZW50VmFsdWUpIHsKKyAgICAgICAgICAgIGNvbnN0IG5ld0J1ZmZlciA9IG5l
dyBBcnJheUJ1ZmZlcihkYXRhLnZhbHVlLmxlbmd0aCArIGN1cnJlbnRWYWx1ZS5sZW5ndGgpOwor
ICAgICAgICAgICAgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkobmV3QnVmZmVyKTsKKyAgICAgICAg
ICAgIGJ1ZmZlci5zZXQoY3VycmVudFZhbHVlLCAwKTsKKyAgICAgICAgICAgIGJ1ZmZlci5zZXQo
ZGF0YS52YWx1ZSwgY3VycmVudFZhbHVlLmxlbmd0aCk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgYnVmZmVyID0gZGF0YS52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGdldFN0cmluZ0Zyb21T
dHJlYW0ocmVhZGVyLCBidWZmZXIpOworICAgIH0KKyAgICByZXR1cm4gKG5ldyBUZXh0RGVjb2Rl
cikuZGVjb2RlKGN1cnJlbnRWYWx1ZSk7Cit9CisKIGZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RXaXRo
Qm9keShib2R5KQogewotICAgIHJldHVybiBuZXcgUmVxdWVzdCgiIiwge2JvZHk6ICJ7XCJrZXlc
IjogXCJ2YWx1ZVwifSIsIG1ldGhvZDogIlBPU1QifSk7CisgICAgcmV0dXJuIG5ldyBSZXF1ZXN0
KCIiLCB7Ym9keTogYm9keSwgbWV0aG9kOiAiUE9TVCJ9KTsKIH0KIAogcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKHRlc3QpIHsKQEAgLTU4LDEwICs3NCwyOSBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24o
dGVzdCkgewogICAgIHJldHVybiB2YWxpZGF0ZVN0cmVhbUZyb21TdHJpbmcoY3JlYXRlUmVxdWVz
dFdpdGhCb2R5KGFycmF5QnVmZmVyKS5ib2R5LmdldFJlYWRlcigpLCB0ZXh0RGF0YSk7CiB9LCAi
UmVhZCBhcnJheSBidWZmZXIgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0iKTsKIAot
cHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkg
PT4gewogICAgIHZhciByZXF1ZXN0ID0gY3JlYXRlUmVxdWVzdFdpdGhCb2R5KGZvcm1EYXRhKTsK
LSAgICByZXR1cm4gdmFsaWRhdGVTdHJlYW1Gcm9tU3RyaW5nKHJlcXVlc3QuYm9keS5nZXRSZWFk
ZXIoKSwgIm5hbWU9dmFsdWUiKTsKKyAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IGdldFN0cmluZ0Zy
b21TdHJlYW0ocmVxdWVzdC5ib2R5LmdldFJlYWRlcigpKTsKKworICAgIGFzc2VydF90cnVlKHZh
bHVlLmluY2x1ZGVzKCduYW1lPSJuYW1lIicpLCAibmFtZSIpOworICAgIGFzc2VydF90cnVlKHZh
bHVlLmluY2x1ZGVzKCd2YWx1ZScpLCAibmFtZSIpOwogfSwgIlJlYWQgZm9ybSBkYXRhIHJlcXVl
c3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVz
dCkgPT4geworICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7CisgICAgY29uc3Qg
YmxvYiA9IG5ldyBCbG9iKFsiJ0hlbGxvJyJdLCB7ICJ0eXBlIiA6ICJ0ZXh0L3BsYWluIiB9KTsK
KyAgICBmb3JtRGF0YS5hcHBlbmQoImJsb2IiLCBibG9iLCAiYmxvYi5maWxlIik7CisgICAgZm9y
bURhdGEuYXBwZW5kKCJuYW1lIiwgInZhbHVlIik7CisKKyAgICBjb25zdCByZXF1ZXN0ID0gY3Jl
YXRlUmVxdWVzdFdpdGhCb2R5KGZvcm1EYXRhKTsKKyAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IGdl
dFN0cmluZ0Zyb21TdHJlYW0ocmVxdWVzdC5ib2R5LmdldFJlYWRlcigpKTsKKworICAgIGFzc2Vy
dF90cnVlKHZhbHVlLmluY2x1ZGVzKCduYW1lPSJuYW1lIicpLCAibmFtZSIpOworICAgIGFzc2Vy
dF90cnVlKHZhbHVlLmluY2x1ZGVzKCd2YWx1ZScpLCAibmFtZSIpOworCisgICAgYXNzZXJ0X3Ry
dWUodmFsdWUuaW5jbHVkZXMoJ25hbWU9ImJsb2IiJyksICJibG9iIik7CisgICAgYXNzZXJ0X3Ry
dWUodmFsdWUuaW5jbHVkZXMoJ0hlbGxvJyksICJIZWxsbyIpOworfSwgIlJlYWQgZm9ybSBkYXRh
IHdpdGggYmxvYiByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSIpOwogICAgIDwvc2Ny
aXB0PgogICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC9zZXJ2aWNlLXdvcmtlcnMvZm9ybS1kYXRhLXVwbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZm9ybS1kYXRhLXVwbG9hZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGJkYzNjOGU5ZjYwYmViZWY5OGVhNzYxZTU4ZWRjMjVmMWMxZDZhZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9m
b3JtLWRhdGEtdXBsb2FkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitPUEVOIEZJTEUg
UEFORUwKKworCitQQVNTIFNldHVwIHdvcmtlcgorUEFTUyBDcmVhdGUgY2hhbm5lbCB3aXRoIHdv
cmtlcgorUEFTUyBTZXR1cCBmcmFtZQorUEFTUyBTZXR1cCBmaWxlIHRvIHVwbG9hZAorUEFTUyBT
ZXR1cCBmaWxlIGZvcm0gZGF0YQorUEFTUyBVcGxvYWQgaW50ZXJjZXB0ZWQgYnkgc2VydmljZSB3
b3JrZXIKK1BBU1MgVXBsb2FkIGNsb25lZCBieSBzZXJ2aWNlIHdvcmtlcgorUEFTUyBEZWxldGUg
dGVtcG9yYXJ5IGZpbGUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQtd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQtd29ya2VyLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU1YmUzODk2MThlYTlhY2UxOTI5NmU1NmMzNzdlZDE2MWIwNDk5NmIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZm9ybS1kYXRhLXVwbG9h
ZC13b3JrZXIuanMKQEAgLTAsMCArMSwxOCBAQAorYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIs
IGFzeW5jIChlKSA9PiB7CisgICAgaWYgKCFlLmRhdGEucG9ydCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgc2VsZi5wb3J0ID0gZS5kYXRhLnBvcnQ7CisgICAgc2VsZi5wb3J0LnBvc3RNZXNzYWdl
KCJvayIpOworfSk7CisKK2FkZEV2ZW50TGlzdGVuZXIoImZldGNoIiwgYXN5bmMgKGUpID0+IHsK
KyAgICBpZiAoZS5yZXF1ZXN0LnVybC5pbmNsdWRlcygiY2xvbmUiKSkgeworICAgICAgICBjb25z
dCBjbG9uZWQgPSBlLnJlcXVlc3QuY2xvbmUoKTsKKyAgICAgICAgZS5yZXNwb25kV2l0aChmZXRj
aChlLnJlcXVlc3QuY2xvbmUoKSkpOworICAgICAgICBpZiAoc2VsZi5wb3J0KQorICAgICAgICAg
ICAgc2VsZi5wb3J0LnBvc3RNZXNzYWdlKGF3YWl0IGNsb25lZC50ZXh0KCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGUucmVzcG9uZFdpdGgoZmV0Y2goZS5yZXF1ZXN0KSk7Cit9KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9mb3JtLWRh
dGEtdXBsb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZm9y
bS1kYXRhLXVwbG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4MzE3ZDI3M2I1M2EwYzYxNGI1N2JlZjdk
M2ZjYjQxMzIzZGNmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9z
ZXJ2aWNlLXdvcmtlcnMvZm9ybS1kYXRhLXVwbG9hZC5odG1sCkBAIC0wLDAgKzEsMTQ2IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3dlYmtpdC10ZXN0LXJlc291
cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0Pgor
Y29uc3QgdGVtcEZpbGVDb250ZW50ID0gIlRFU1QiOworY29uc3QgdGVtcEZpbGVOYW1lID0gInRl
c3QudG1wIjsKKwordmFyIGZpbGVJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0
Iik7CitmaWxlSW5wdXQudHlwZSA9ICdmaWxlJzsKK2ZpbGVJbnB1dC5zdHlsZS53aWR0aCA9ICIx
MDAlIjsgLy8gU28gdGhhdCBhbnkgbWFudWFsIHRlc3Rpbmcgd2lsbCBzaG93IGZ1bGwgZmlsZSBu
YW1lcworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZmlsZUlucHV0LCBkb2N1bWVudC5ib2R5
LmZpcnN0Q2hpbGQpOworCit2YXIgc2NvcGUgPSAicmVzb3VyY2VzIjsKK3ZhciBhY3RpdmVXb3Jr
ZXI7Cit2YXIgZnJhbWU7Cit2YXIgZmlsZUZyYW1lOwordmFyIGZvcm1EYXRhOwordmFyIGZpbGVT
aXplOworCitmdW5jdGlvbiB3aXRoX2lmcmFtZSh1cmwpIHsKKyAgICByZXR1cm4gbmV3IFByb21p
c2UoZnVuY3Rpb24ocmVzb2x2ZSkgeworICAgICAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICAgICAgZnJhbWUuY2xhc3NOYW1lID0gJ3Rlc3QtaWZy
YW1lJzsKKyAgICAgICAgZnJhbWUuc3JjID0gdXJsOworICAgICAgICBmcmFtZS5vbmxvYWQgPSBm
dW5jdGlvbigpIHsgcmVzb2x2ZShmcmFtZSk7IH07CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoZnJhbWUpOworICAgIH0pOworfQorCitmdW5jdGlvbiBwcmVwYXJlVXBsb2FkKCkK
K3sKKyAgICBsZXQgcmVzb2x2ZSwgcmVqZWN0OworICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJv
bWlzZSgocmVzb2x2ZV8sIHJlamVjdF8pID0+IHsKKyAgICAgICAgcmVzb2x2ZSA9IHJlc29sdmVf
OworICAgICAgICByZWplY3QgPSByZWplY3RfOworICAgIH0pOworICAgIHNldFRpbWVvdXQoKCkg
PT4gcmVqZWN0KCJ0ZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKworICAgIHZhciBpbnB1dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdOworICAgIGlucHV0Lm9uY2hh
bmdlID0gYXN5bmMgKGUpID0+IHsKKyAgICAgICAgdmFyIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRh
OworICAgICAgICBmb3JtRGF0YS5hcHBlbmQoImZpbGUiLCBlLnRhcmdldC5maWxlc1swXSwgdGVt
cEZpbGVOYW1lKTsKKyAgICAgICAgZmlsZVNpemUgPSBlLnRhcmdldC5maWxlc1swXS5zaXplOwor
ICAgICAgICByZXNvbHZlKGZvcm1EYXRhKTsKKyAgICB9OworCisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0T3BlblBhbmVsRmlsZXMoW3RlbXBGaWxl
UGF0aF0pOworCisgICAgICAgIHZhciBjZW50ZXJYID0gaW5wdXQub2Zmc2V0TGVmdCArIGlucHV0
Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgdmFyIGNlbnRlclkgPSBpbnB1dC5vZmZzZXRUb3Ag
KyBpbnB1dC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNl
bnRlclgsIGNlbnRlclkpOworICAgIH0KKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworcHJvbWlz
ZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyh0cnVl
KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIiIpLnRoZW4oKCkgPT4geyB9LCAoKSA9PiB7IH0pOwor
ICAgIH0KKworICAgIHZhciByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdv
cmtlci5yZWdpc3RlcigiZm9ybS1kYXRhLXVwbG9hZC13b3JrZXIuanMiLCB7IHNjb3BlIDogc2Nv
cGUgfSk7CisgICAgYWN0aXZlV29ya2VyID0gcmVnaXN0cmF0aW9uLmFjdGl2ZTsKKyAgICBpZiAo
IWFjdGl2ZVdvcmtlcikgeworICAgICAgICBhY3RpdmVXb3JrZXIgPSByZWdpc3RyYXRpb24uaW5z
dGFsbGluZzsKKyAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAg
ICAgICBhY3RpdmVXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCAoKSA9PiB7
CisgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZVdvcmtlci5zdGF0ZSA9PT0gImFjdGl2YXRlZCIp
CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKyAgICB9Cit9LCAiU2V0dXAgd29ya2VyIik7CisKK2NvbnN0IGNoYW5uZWwgPSBuZXcg
TWVzc2FnZUNoYW5uZWwoKTsKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGFj
dGl2ZVdvcmtlci5wb3N0TWVzc2FnZSh7IHBvcnQ6IGNoYW5uZWwucG9ydDEgfSwgW2NoYW5uZWwu
cG9ydDFdKTsKKyAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGNoYW5uZWwucG9ydDIu
b25tZXNzYWdlID0gcmVzb2x2ZSk7Cit9LCAiQ3JlYXRlIGNoYW5uZWwgd2l0aCB3b3JrZXIiKTsK
KworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgZnJhbWUgPSBhd2FpdCB3aXRo
X2lmcmFtZSgicmVzb3VyY2VzLyIpOworfSwgIlNldHVwIGZyYW1lIik7CisKK3Byb21pc2VfdGVz
dChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHdpbmRvdy5vbm1lc3NhZ2UgPSByZXNvbHZlKTsKKyAgICBmaWxlRnJhbWUgPSBhd2Fp
dCB3aXRoX2lmcmFtZSgiL1dlYktpdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL2NyZWF0ZS10
ZW1wLWZpbGUtaWZyYW1lLmh0bWwiKTsKKyAgICBsZXQgZXZlbnQgPSBhd2FpdCBwcm9taXNlOwor
ICAgIHRlbXBGaWxlUGF0aCA9IGV2ZW50LmRhdGE7Cit9LCAiU2V0dXAgZmlsZSB0byB1cGxvYWQi
KTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgZm9ybURhdGEgPSBhd2Fp
dCBwcmVwYXJlVXBsb2FkKCk7CisgICAgYXNzZXJ0X2VxdWFscyhmaWxlU2l6ZSwgNCk7Cit9LCAi
U2V0dXAgZmlsZSBmb3JtIGRhdGEiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
CisgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFsiJ0hlbGxvJyJdLCB7ICJ0eXBlIiA6ICJ0ZXh0
L3BsYWluIiB9KTsKKyAgICBmb3JtRGF0YS5hcHBlbmQoImJsb2IiLCBibG9iLCAiYmxvYi5maWxl
Iik7CisgICAgZm9ybURhdGEuYXBwZW5kKCJuYW1lIiwgInZhbHVlIik7CisKKyAgICBjb25zdCBy
ZXNwb25zZSA9IGF3YWl0IGZyYW1lLmNvbnRlbnRXaW5kb3cuZmV0Y2goIi9XZWJLaXQvc2Vydmlj
ZS13b3JrZXJzL3Jlc291cmNlcy9maWxlLXVwbG9hZC1jaGVjay5weSIsIHttZXRob2Q6ICJQT1NU
IiwgYm9keTogZm9ybURhdGF9KTsKKyAgICBjb25zdCB0ZXh0ID0gYXdhaXQgcmVzcG9uc2UudGV4
dCgpOworCisgICAgYXNzZXJ0X3RydWUodGV4dC5pbmNsdWRlcyh0ZW1wRmlsZUNvbnRlbnQpLCAi
Y29udGVudCIpOworICAgIGFzc2VydF90cnVlKHRleHQuaW5jbHVkZXModGVtcEZpbGVOYW1lKSwg
Im5hbWUiKTsKKworICAgIGFzc2VydF90cnVlKHRleHQuaW5jbHVkZXMoJ25hbWU9Im5hbWUiJyks
ICJuYW1lIik7CisgICAgYXNzZXJ0X3RydWUodGV4dC5pbmNsdWRlcygndmFsdWUnKSwgIm5hbWUi
KTsKKworICAgIGFzc2VydF90cnVlKHRleHQuaW5jbHVkZXMoJ25hbWU9ImJsb2IiJyksICJibG9i
Iik7CisgICAgYXNzZXJ0X3RydWUodGV4dC5pbmNsdWRlcygnSGVsbG8nKSwgIkhlbGxvIik7Cit9
LCAiVXBsb2FkIGludGVyY2VwdGVkIGJ5IHNlcnZpY2Ugd29ya2VyIik7CisKK3Byb21pc2VfdGVz
dChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbIidIZWxsbyci
XSwgeyAidHlwZSIgOiAidGV4dC9wbGFpbiIgfSk7CisgICAgZm9ybURhdGEuYXBwZW5kKCJibG9i
IiwgYmxvYiwgImJsb2IuZmlsZSIpOworICAgIGZvcm1EYXRhLmFwcGVuZCgibmFtZSIsICJ2YWx1
ZSIpOworCisgICAgY29uc3QgbWVzc2FnZVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IGNoYW5uZWwucG9ydDIub25tZXNzYWdlID0gKGUpID0+IHJlc29sdmUoZS5kYXRhKSk7CisKKyAg
ICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZyYW1lLmNvbnRlbnRXaW5kb3cuZmV0Y2goIi9XZWJL
aXQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9maWxlLXVwbG9hZC1jaGVjay5weT9jbG9uZSIs
IHttZXRob2Q6ICJQT1NUIiwgYm9keTogZm9ybURhdGF9KTsKKyAgICBjb25zdCB0ZXh0ID0gYXdh
aXQgcmVzcG9uc2UudGV4dCgpOworCisgICAgY29uc3QgbWVzc2FnZVRleHQgPSBhd2FpdCBtZXNz
YWdlUHJvbWlzZTsKKyAgICBhc3NlcnRfZXF1YWxzKHRleHQsIG1lc3NhZ2VUZXh0KTsKKworICAg
IGFzc2VydF90cnVlKHRleHQuaW5jbHVkZXMoJ25hbWU9Im5hbWUiJyksICJuYW1lIik7CisgICAg
YXNzZXJ0X3RydWUodGV4dC5pbmNsdWRlcygndmFsdWUnKSwgIm5hbWUiKTsKKworICAgIGFzc2Vy
dF90cnVlKHRleHQuaW5jbHVkZXMoJ25hbWU9ImJsb2IiJyksICJibG9iIik7CisgICAgYXNzZXJ0
X3RydWUodGV4dC5pbmNsdWRlcygnSGVsbG8nKSwgIkhlbGxvIik7Cit9LCAiVXBsb2FkIGNsb25l
ZCBieSBzZXJ2aWNlIHdvcmtlciIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsK
KyAgICBhd2FpdCB3aXRoX2lmcmFtZSgiL1dlYktpdC9yZXNvdXJjZXMvZGVsZXRlLXRlbXAtZmls
ZS1pZnJhbWUuaHRtbCIpOworfSwgIkRlbGV0ZSB0ZW1wb3JhcnkgZmlsZSIpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvcmVzb3VyY2VzL2NyZWF0ZS10ZW1wLWZpbGUtaWZyYW1lLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL2NyZWF0ZS10ZW1wLWZp
bGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNkOWY3MjgwNzBhN2Y4YjBiMjNjMzRjNGQ5Y2My
MTEyMWU2MjQzOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZp
Y2Utd29ya2Vycy9yZXNvdXJjZXMvY3JlYXRlLXRlbXAtZmlsZS1pZnJhbWUuaHRtbApAQCAtMCww
ICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0i
dGVtcC1maWxlLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citjb25zdCB0ZW1wRmlsZUNv
bnRlbnQgPSAiVEVTVCI7Citjb25zdCB0ZW1wRmlsZU5hbWUgPSAidGVzdC50bXAiOworCitjb25z
dCBwYXRoID0gY3JlYXRlVGVtcEZpbGUodGVtcEZpbGVOYW1lLCB0ZW1wRmlsZUNvbnRlbnQpOwor
d2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShwYXRoLCAiKiIpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvcmVzb3VyY2VzL3Jlc2V0LXRlbXAtZmlsZS5weSBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3Nl
cnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvcmVzZXQtdGVtcC1maWxlLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1
OTljZDQ2YWMyOWJlZmU2ZmM5NWQwOGM0OTEzNDEzZTMwMzM3ZTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Jlc2V0LXRl
bXAtZmlsZS5weQpAQCAtMCwwICsxLDExIEBACisjIS91c3IvYmluL2VudiBweXRob24zCitpbXBv
cnQgb3MKK2ltcG9ydCB0ZW1wZmlsZQorCisKK2RlZiBtYWluKHJlcXVlc3QsIHJlc3BvbnNlKToK
KyAgICBmaWxlbmFtZSA9IHJlcXVlc3QuR0VUW2InZmlsZW5hbWUnXQorICAgIHN0YXRlX2ZpbGUg
PSBvcy5wYXRoLmpvaW4odGVtcGZpbGUuZ2V0dGVtcGRpcigpLCBmaWxlbmFtZS5kZWNvZGUoKSkK
KyAgICBpZiBvcy5wYXRoLmV4aXN0cyhzdGF0ZV9maWxlKToKKyAgICAgICAgb3MucmVtb3ZlKHN0
YXRlX2ZpbGUpCisgICAgcmV0dXJuIDIwMCwgWyhiIkNvbnRlbnQtVHlwZSIsIGIidGV4dC9odG1s
IildLCAiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3Jlc291cmNlcy90ZW1wLWZpbGUtdXRpbHMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3RlbXAtZmlsZS11dGlscy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGNl
NWM0ZmI4NjhjOTdkMjI0MTc1MWE2YzAwY2IwM2E0ZTA5MzQ0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZW1wLWZpbGUt
dXRpbHMuanMKQEAgLTAsMCArMSwzMiBAQAorZnVuY3Rpb24gY3JlYXRlVGVtcEZpbGUoZmlsZU5h
bWUsIGZpbGVEYXRhKQoreworICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAg
ICB4aHIub3BlbigiUE9TVCIsICIvV2ViS2l0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvd3Jp
dGUtdGVtcC1maWxlLnB5P2ZpbGVuYW1lPSIgKyBmaWxlTmFtZSArICImZGF0YT0iICsgZmlsZURh
dGEsIGZhbHNlKTsKKyAgICB4aHIuc2VuZCgpOworICAgIGlmICh4aHIuc3RhdHVzICE9IDIwMCkg
eworICAgICAgICB0ZXN0RmFpbGVkKCJVbmV4cGVjdGVkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZl
ZDogIiArIHhoci5zdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIHZh
bHVlcyA9IHhoci5yZXNwb25zZVRleHQuc3BsaXQoJ1xuJyk7CisgICAgaWYgKHhoci5yZXNwb25z
ZVRleHQuaW5kZXhPZigiRkFJTCIpID09IDApIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiVW5leHBl
Y3RlZCByZXNwb25zZSB0ZXh0IHJlY2VpdmVkOiAiICsgeGhyLnJlc3BvbnNlVGV4dCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDsKK30KKwor
ZnVuY3Rpb24gdG91Y2hUZW1wRmlsZShmaWxlTmFtZSkKK3sKKyAgICB2YXIgeGhyID0gbmV3IFhN
TEh0dHBSZXF1ZXN0KCk7CisgICAgeGhyLm9wZW4oIlBPU1QiLCAiL1dlYktpdC9zZXJ2aWNlLXdv
cmtlcnMvcmVzb3VyY2VzL3RvdWNoLXRlbXAtZmlsZS5weT9maWxlbmFtZT0iICsgZmlsZU5hbWUs
IGZhbHNlKTsKKyAgICB4aHIuc2VuZCgpOworfQorCitmdW5jdGlvbiByZW1vdmVUZW1wRmlsZShm
aWxlTmFtZSkKK3sKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgeGhy
Lm9wZW4oIlBPU1QiLCAiL1dlYktpdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Jlc2V0LXRl
bXAtZmlsZS5weT9maWxlbmFtZT0iICsgZmlsZU5hbWUsIGZhbHNlKTsKKyAgICB4aHIuc2VuZCgp
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jl
c291cmNlcy90b3VjaC10ZW1wLWZpbGUucHkgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvcmVzb3VyY2VzL3RvdWNoLXRlbXAtZmlsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDc1
NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGQ5NjQx
ZjUyMjMwMjI0NDc2MjhhMmEyZGI1ZjIzZWVkYWFhNzYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90b3VjaC10ZW1wLWZp
bGUucHkKQEAgLTAsMCArMSwyMSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCitpbXBvcnQg
b3MKK2ltcG9ydCB0ZW1wZmlsZQorCisKK2RlZiBtYWluKHJlcXVlc3QsIHJlc3BvbnNlKToKKyAg
ICBmaWxlbmFtZSA9IHJlcXVlc3QuR0VUW2InZmlsZW5hbWUnXQorICAgIHRtcEZpbGVQYXRoID0g
b3MucGF0aC5qb2luKHRlbXBmaWxlLmdldHRlbXBkaXIoKSwgZmlsZW5hbWUuZGVjb2RlKCkpCisg
ICAgc3RhdCA9IG9zLnN0YXQodG1wRmlsZVBhdGgpCisKKyAgICBpZiBub3Qgc3RhdDoKKyAgICAg
ICAgcmV0dXJuIDIwMCwgWyhiIkNvbnRlbnQtVHlwZSIsIGIidGV4dC9odG1sIildLCAiRkFJTDog
c3RhdCgpIGNhbGwgZmFpbGVkLlxuIgorCisgICAgYXRpbWUgPSBzdGF0LnN0X2F0aW1lCisgICAg
bXRpbWUgPSBzdGF0LnN0X210aW1lCisgICAgdHJ5OgorICAgICAgICBvcy51dGltZSh0bXBGaWxl
UGF0aCwgdGltZXM9KGF0aW1lLCBtdGltZSArIDEpKQorICAgIGV4Y2VwdDoKKyAgICAgICAgcmV0
dXJuIDIwMCwgWyhiIkNvbnRlbnQtVHlwZSIsIGIidGV4dC9odG1sIildLCAiRkFJTDogdG91Y2go
KSBjYWxsIGZhaWxlZC5cbiIKKyAgICByZXR1cm4gMjAwLCBbKGIiQ29udGVudC1UeXBlIiwgYiJ0
ZXh0L2h0bWwiKV0sICIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvcmVzb3VyY2VzL3dyaXRlLXRlbXAtZmlsZS5weSBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvd3JpdGUtdGVtcC1maWxlLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUzZjJjZjhiMmZiMTEyMzA4Nzc5YzdmYmYwNTI5YTFkZTA2NTBmMDYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3dy
aXRlLXRlbXAtZmlsZS5weQpAQCAtMCwwICsxLDE2IEBACisjIS91c3IvYmluL2VudiBweXRob24z
CisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCisKKworZGVmIG1haW4o
cmVxdWVzdCwgcmVzcG9uc2UpOgorICAgIGZpbGVuYW1lID0gcmVxdWVzdC5HRVRbYidmaWxlbmFt
ZSddCisgICAgZGF0YSA9IHJlcXVlc3QuR0VUW2InZGF0YSddCisKKyAgICB0bXBfZmlsZSA9IG9z
LnBhdGguam9pbih0ZW1wZmlsZS5nZXR0ZW1wZGlyKCksIGZpbGVuYW1lLmRlY29kZSgpKQorICAg
IHdpdGggb3Blbih0bXBfZmlsZSwgJ3cnKSBhcyBvcGVuX2ZpbGU6CisgICAgICAgIG9wZW5fZmls
ZS53cml0ZShkYXRhLmRlY29kZSgpKQorCisgICAgcmV0dXJuIDIwMCwgWyhiIkNvbnRlbnQtVHlw
ZSIsIGIidGV4dC9odG1sIildLCB0bXBfZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2Ut
Y29uc3VtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWV4cGVjdGVkLnR4
dAppbmRleCBhMTBiOGYyNjY4MTJmZWJhZmJhYzFhNmVjNTZhYTg1MzY4MWVkZTk4Li4xODBjODcz
MTI4ZjNjMWMzYjY1YjQ3ZDRlMTBjMzVmM2Q2M2Y5OWY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNw
b25zZS1jb25zdW1lLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWV4
cGVjdGVkLnR4dApAQCAtMzgsNSArMzgsNSBAQCBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5
OiBmcm9tIGZldGNoIHRvIGJsb2IKIFBBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJvZHk6IGZyb20g
ZmV0Y2ggdG8gdGV4dAogUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keTogZnJvbSBmZXRjaCB0
byBhcnJheUJ1ZmZlcgogUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keTogZnJvbSBmZXRjaCB3
aXRob3V0IGNvcnJlY3QgdHlwZSB0byBmb3JtRGF0YSAoZXJyb3IgY2FzZSkKLUZBSUwgQ29uc3Vt
ZSByZXNwb25zZSdzIGJvZHk6IGZyb20gbXVsdGlwYXJ0IGZvcm0gZGF0YSBibG9iIHRvIGZvcm1E
YXRhIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3Qg
Ik5vdFN1cHBvcnRlZEVycm9yOiBUaGUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuIgorUEFT
UyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keTogZnJvbSBtdWx0aXBhcnQgZm9ybSBkYXRhIGJsb2Ig
dG8gZm9ybURhdGEKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1zdHJlYW0u
YW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtc3RyZWFtLmFueS1leHBl
Y3RlZC50eHQKaW5kZXggODRhNjlkNzVjNTFhZTY1YTMyMDY4MzliZjAwZDljZWEyODg1YTZmNy4u
ZDFhMjIxMWNmYzEwYjQ2NzdiMDU5MjE0MjRjYzQzODY1YjEwMjUxYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9u
c2UvcmVzcG9uc2UtY29uc3VtZS1zdHJlYW0uYW55LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9y
ZXNwb25zZS1jb25zdW1lLXN0cmVhbS5hbnktZXhwZWN0ZWQudHh0CkBAIC01LDcgKzUsNyBAQCBQ
QVNTIFJlYWQgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0KIFBBU1MgUmVh
ZCB0ZXh0IHJlc3BvbnNlJ3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbQogUEFTUyBSZWFkIFVSTFNl
YXJjaFBhcmFtcyByZXNwb25zZSdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0KIFBBU1MgUmVhZCBh
cnJheSBidWZmZXIgcmVzcG9uc2UncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtCi1GQUlMIFJlYWQg
Zm9ybSBkYXRhIHJlc3BvbnNlJ3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSBwcm9taXNlX3Rlc3Q6
IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJv
cjogTm90IGltcGxlbWVudGVkIgorUEFTUyBSZWFkIGZvcm0gZGF0YSByZXNwb25zZSdzIGJvZHkg
YXMgcmVhZGFibGVTdHJlYW0KIFBBU1MgR2V0dGluZyBhbiBlcnJvciBSZXNwb25zZSBzdHJlYW0K
IFBBU1MgR2V0dGluZyBhIHJlZGlyZWN0IFJlc3BvbnNlIHN0cmVhbQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNw
b25zZS9yZXNwb25zZS1jb25zdW1lLXN0cmVhbS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3Bv
bnNlL3Jlc3BvbnNlLWNvbnN1bWUtc3RyZWFtLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4
IDg0YTY5ZDc1YzUxYWU2NWEzMjA2ODM5YmYwMGQ5Y2VhMjg4NWE2ZjcuLmQxYTIyMTFjZmMxMGI0
Njc3YjA1OTIxNDI0Y2M0Mzg2NWIxMDI1MWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNv
bnN1bWUtc3RyZWFtLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNl
LWNvbnN1bWUtc3RyZWFtLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC01LDcgKzUsNyBAQCBQ
QVNTIFJlYWQgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0KIFBBU1MgUmVh
ZCB0ZXh0IHJlc3BvbnNlJ3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbQogUEFTUyBSZWFkIFVSTFNl
YXJjaFBhcmFtcyByZXNwb25zZSdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0KIFBBU1MgUmVhZCBh
cnJheSBidWZmZXIgcmVzcG9uc2UncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtCi1GQUlMIFJlYWQg
Zm9ybSBkYXRhIHJlc3BvbnNlJ3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSBwcm9taXNlX3Rlc3Q6
IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJv
cjogTm90IGltcGxlbWVudGVkIgorUEFTUyBSZWFkIGZvcm0gZGF0YSByZXNwb25zZSdzIGJvZHkg
YXMgcmVhZGFibGVTdHJlYW0KIFBBU1MgR2V0dGluZyBhbiBlcnJvciBSZXNwb25zZSBzdHJlYW0K
IFBBU1MgR2V0dGluZyBhIHJlZGlyZWN0IFJlc3BvbnNlIHN0cmVhbQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448367</attachid>
            <date>2022-01-05 01:30:09 -0800</date>
            <delta_ts>2022-01-05 02:47:40 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-187461-20220105103007.patch</filename>
            <type>text/plain</type>
            <size>47915</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGVmMmQ5NzQ5YTViNDli
MzM4NWM3NWFhMzRmN2Q1YzVmOGU2MmE4YS4uYTc3MGI1NThiZDU1OWVjOGVjMGEzODAyOGVkNzg0
ODAwMTkyMmNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTAxLTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBGZXRjaCB1c2luZyBGb3Jt
RGF0YSB3aXRoIGZpbGUgZG9lc24ndCBnbyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc0NjEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQxOTc1NTQ0PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1
bWV6LgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZWFkaW5nIGZvcm1EYXRhIGJhc2VkIGJv
ZGllcyB0aHJvdWdoIHN0cmVhbXMgb3IgcmVndWxhciBtZXRob2RzIGxpa2UgdGV4dC4KKyAgICAg
ICAgRm9yIHRoYXQgcHVycG9zZSwgd2UgYWRkIEZvcm1EYXRhQ29uc3VtZXIgd2hpY2ggYWxsb3dz
IHNlcmlhbGl6aW5nIGZvcm0gZGF0YXMgdGhhdCBtYXkgY29udGFpbiBmaWxlcyBvciBibG9icy4K
KyAgICAgICAgQWRkIHRoZSBhYmlsaXR5IHRvIGxvYWQgYmxvYnMgZnJvbSBCbG9iTG9hZGVyIHVz
aW5nIHRoZSBpbnRlcm5hbCBVUkwgKHN0b3JlZCBpbiBGb3JtRGF0YSkgaW4gbGlldSBvZiBwYXNz
aW5nIGEgYmxvYiBvYmplY3QuCisgICAgICAgIEVuYWJsZSBmZXRjaCBldmVudHMgZm9yIGZvcm0g
ZGF0YSBiYXNlZCBmZXRjaCBldmVudHMuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRm9ybURhdGFDb25zdW1lci5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
Rm9ybURhdGFDb25zdW1lci5oOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZmlsZWFw
aS9CbG9iTG9hZGVyLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoK
KyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorCiAyMDIyLTAxLTA1ICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHN1cmUgc2Vj
dXJlIHdlYnNvY2tldCBjb25uZWN0aW9ucyBpbiBzZXJ2aWNlIHdvcmtlcnMgY2FuIHRyaWdnZXIg
YXV0aGVudGljYXRpb24gY2hhbGxlbmdlIGNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGI4ZjJlYzM3M2Q4NzNjYzljOGFjYjNjNmVjODQ1
ZjZhYjAwMDlhYTYuLjc0MTdhZTBjMTIwM2VjZmM0ODQ5MWZlMTI0ODA5NmViNjVlZmMyYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTk0LDggKzk0
LDcgQEAgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQKICAgICAgICAgcmV0dXJuIEZldGNoQm9keSB7
IFdURk1vdmUoYmxvYikgfTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogU3VwcG9ydCBmb3JtIGRh
dGEgYm9kaWVzLgotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIEZldGNoQm9k
eSB7IFJlZiB7IGZvcm1EYXRhIH0gfTsKIH0KIAogdm9pZCBGZXRjaEJvZHk6OmFycmF5QnVmZmVy
KEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpA
QCAtMTk2LDcgKzE5NSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQXNTdHJlYW0oRmV0Y2hC
b2R5T3duZXImIG93bmVyLCBGZXRjaEJvZHlTb3VyY2UmIHNvdXJjZSkKICAgICAgICAgb3duZXIu
bG9hZEJsb2IoYmxvYkJvZHkoKSwgbnVsbHB0cik7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7
CiAgICAgfSBlbHNlIGlmIChpc0Zvcm1EYXRhKCkpCi0gICAgICAgIHNvdXJjZS5lcnJvcihFeGNl
cHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyB9KTsKKyAgICAg
ICAgbV9jb25zdW1lci5jb25zdW1lRm9ybURhdGFBc1N0cmVhbShmb3JtRGF0YUJvZHkoKSwgc291
cmNlLCBvd25lci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGVsc2UgaWYgKG1fY29u
c3VtZXIuaGFzRGF0YSgpKQogICAgICAgICBjbG9zZVN0cmVhbSA9IHNvdXJjZS5lbnF1ZXVlKG1f
Y29uc3VtZXIudGFrZUFzQXJyYXlCdWZmZXIoKSk7CiAgICAgZWxzZQpAQCAtMjM0LDE0ICsyMzMs
OCBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZv
cm1EYXRhKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlKQogewotICAgIGlmIChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hh
cmVkQnVmZmVyKCkpIHsKLSAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92
ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAgbV9kYXRhID0g
bnVsbHB0cjsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0
YSBjb250YWlucyBibG9icywgbG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCi0gICAg
ICAgIC8vIFRoYXQgd2lsbCBmaXggdGhlIGxhc3QgV1BUIHRlc3QgaW4gcmVzcG9uc2UtY29uc3Vt
ZS5odG1sLgotICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90U3VwcG9ydGVkRXJyb3IpOwotICAg
IH0KKyAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRm9ybURhdGEoV1RGTW92ZShwcm9taXNlKSwg
b3duZXIuY29udGVudFR5cGUoKSwgZm9ybURhdGFCb2R5KCksIG93bmVyLnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CisgICAgbV9kYXRhID0gbnVsbHB0cjsKIH0KIAogdm9pZCBGZXRjaEJvZHk6
OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCkBAIC0zMTEsNyArMzA0
LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkKIAogRmV0Y2hCb2R5
IEZldGNoQm9keTo6Y2xvbmUoKQogewotICAgIEZldGNoQm9keSBjbG9uZShtX2NvbnN1bWVyKTsK
KyAgICBGZXRjaEJvZHkgY2xvbmUobV9jb25zdW1lci5jbG9uZSgpKTsKIAogICAgIGlmIChpc0Fy
cmF5QnVmZmVyKCkpCiAgICAgICAgIGNsb25lLm1fZGF0YSA9IGFycmF5QnVmZmVyQm9keSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggYmFkMWI1ZWEyM2I3
NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJlNC4uYTRhZjJhYWQ1ODUzNTY3ODNiZjcyNzEzMTNk
YzYwNDBlZDc4Zjc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5o
CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRmV0Y2hCb2R5KFJlZjxG
b3JtRGF0YT4mJiBkYXRhKSA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICAgICBleHBsaWNp
dCBGZXRjaEJvZHkoU3RyaW5nJiYgZGF0YSkgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAg
ICAgZXhwbGljaXQgRmV0Y2hCb2R5KFJlZjxjb25zdCBVUkxTZWFyY2hQYXJhbXM+JiYgZGF0YSkg
OiBtX2RhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgZXhwbGljaXQgRmV0Y2hCb2R5KGNvbnN0
IEZldGNoQm9keUNvbnN1bWVyJiBjb25zdW1lcikgOiBtX2NvbnN1bWVyKGNvbnN1bWVyKSB7IH0K
KyAgICBleHBsaWNpdCBGZXRjaEJvZHkoRmV0Y2hCb2R5Q29uc3VtZXImJiBjb25zdW1lcikgOiBt
X2NvbnN1bWVyKFdURk1vdmUoY29uc3VtZXIpKSB7IH0KICAgICBleHBsaWNpdCBGZXRjaEJvZHko
UmVmPFJlYWRhYmxlU3RyZWFtPiYmIHN0cmVhbSkgOiBtX3JlYWRhYmxlU3RyZWFtKFdURk1vdmUo
c3RyZWFtKSkgeyB9CiAKICAgICB2b2lkIGNvbnN1bWUoRmV0Y2hCb2R5T3duZXImLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggYzIzMWYyMDdkYTI1Y2QyYTE1ODYwZDI4ZGIzY2Ux
N2U4NTc1NzdkNS4uMmI1ZDEwNDYyYjdhOTQ1OGEwYTg5MjU3ODI4YzQxYmQ5MTg4ZjVkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5j
cHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGZXRjaEJvZHlDb25zdW1lci5oIgogCiAj
aW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKKyNpbmNsdWRlICJGb3JtRGF0YUNvbnN1bWVyLmgiCiAj
aW5jbHVkZSAiSFRUUEhlYWRlckZpZWxkLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNp
bmNsdWRlICJKU0Jsb2IuaCIKQEAgLTI0Myw2ICsyNDQsOCBAQCBzdGF0aWMgdm9pZCByZXNvbHZl
V2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5
Q29ucwogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewogICAgIG1fYnVmZmVyLnJl
c2V0KCk7CisgICAgaWYgKG1fZm9ybURhdGFDb25zdW1lcikKKyAgICAgICAgbV9mb3JtRGF0YUNv
bnN1bWVyLT5jYW5jZWwoKTsKICAgICByZXNldENvbnN1bWVQcm9taXNlKCk7CiAgICAgaWYgKG1f
c2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2FsbGJhY2soKTsKQEAgLTI1NSw2ICsyNTgs
NjEgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZVdpdGhEYXRhKFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3QKICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRh
KFdURk1vdmUocHJvbWlzZSksIG1fdHlwZSwgY29udGVudFR5cGUsIGRhdGEsIGxlbmd0aCk7CiB9
CiAKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmVXaXRoRm9ybURhdGEoUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBG
b3JtRGF0YSYgZm9ybURhdGEsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7Cisg
ICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGEuYXNTaGFyZWRCdWZmZXIoKSkgewor
ICAgICAgICByZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgY29udGVudFR5cGUsIHNo
YXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUo
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fZm9ybURhdGFDb25zdW1lciA9IG1ha2VVbmlxdWU8Rm9ybURhdGFD
b25zdW1lcj4oZm9ybURhdGEsICpjb250ZXh0LCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGNvbnRlbnRUeXBlLCBidWlsZGVyID0gU2hhcmVkQnVmZmVyQnVpbGRlciB7IH1dKGF1
dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KSB7CisgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvJiB2YWx1
ZSA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpOworICAgICAgICBpZiAodmFsdWUuZW1wdHkoKSkgewor
ICAgICAgICAgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2VBc0NvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgICAgIHJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBjb250ZW50VHlwZSwg
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlKTsKKyAgICB9KTsKK30KKwor
dm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y29uc3VtZUZvcm1EYXRhQXNTdHJlYW0oY29uc3QgRm9y
bURhdGEmIGZvcm1EYXRhLCBGZXRjaEJvZHlTb3VyY2UmIHNvdXJjZSwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0
YS5hc1NoYXJlZEJ1ZmZlcigpKSB7CisgICAgICAgIGlmIChzb3VyY2UuZW5xdWV1ZShBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBz
aGFyZWRCdWZmZXItPnNpemUoKSkpKQorICAgICAgICAgICAgc291cmNlLmNsb3NlKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fZm9ybURhdGFDb25zdW1lciA9IG1ha2VVbmlxdWU8Rm9ybURhdGFDb25zdW1lcj4o
Zm9ybURhdGEsICpjb250ZXh0LCBbdGhpcywgc291cmNlID0gUmVmIHsgc291cmNlIH1dKGF1dG8m
JiByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAg
ICAgICAgc291cmNlLT5lcnJvcihyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8mIHZhbHVlID0gcmVzdWx0LnJl
dHVyblZhbHVlKCk7CisgICAgICAgIGlmICh2YWx1ZS5lbXB0eSgpKSB7CisgICAgICAgICAgICBz
b3VyY2UtPmNsb3NlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIXNvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHZhbHVlLmRhdGEo
KSwgdmFsdWUuc2l6ZSgpKSkpCisgICAgICAgICAgICBtX2Zvcm1EYXRhQ29uc3VtZXItPmNhbmNl
bCgpOworICAgIH0pOworfQorCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpleHRyYWN0KFJlYWRh
YmxlU3RyZWFtJiBzdHJlYW0sIFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpDYWxs
YmFjayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVCghbV9zaW5rKTsKQEAgLTQxNiw0ICs0NzQs
MTIgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6bG9hZGluZ1N1Y2NlZWRlZChjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKQogICAgIH0KIH0KIAorRmV0Y2hCb2R5Q29uc3VtZXIgRmV0Y2hCb2R5
Q29uc3VtZXI6OmNsb25lKCkKK3sKKyAgICBGZXRjaEJvZHlDb25zdW1lciBjbG9uZSB7IG1fdHlw
ZSB9OworICAgIGNsb25lLm1fY29udGVudFR5cGUgPSBtX2NvbnRlbnRUeXBlOworICAgIGNsb25l
Lm1fYnVmZmVyID0gbV9idWZmZXI7CisgICAgcmV0dXJuIGNsb25lOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmgKaW5kZXggODcxZDJjMDg2MzMxYTk4Mjk0YTE2NmE0YjQyZTMxODRlMDM3Nzcy
Yi4uNzk4MDVkNGFhNTY0YmEwY2Y1YWUxM2ExMjQ0OTNkMDYwMzFhZGJiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtMjksOCAr
MjksMTAgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmV0Y2hCb2R5U291cmNlLmgiCisj
aW5jbHVkZSAiRm9ybURhdGFDb25zdW1lci5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVy
cmVkLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1TaW5rLmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogCkBAIC0zOSw2ICs0MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2I7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNz
IEZldGNoQm9keVNvdXJjZTsKK2NsYXNzIEZvcm1EYXRhOwogY2xhc3MgUmVhZGFibGVTdHJlYW07
CiAKIGNsYXNzIEZldGNoQm9keUNvbnN1bWVyIHsKQEAgLTQ3LDYgKzUwLDggQEAgcHVibGljOgog
CiAgICAgZXhwbGljaXQgRmV0Y2hCb2R5Q29uc3VtZXIoVHlwZSB0eXBlKSA6IG1fdHlwZSh0eXBl
KSB7IH0KIAorICAgIEZldGNoQm9keUNvbnN1bWVyIGNsb25lKCk7CisKICAgICB2b2lkIGFwcGVu
ZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBj
b25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9CkBAIC02NSw2ICs3MCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGV4dHJhY3QoUmVhZGFibGVTdHJlYW0mLCBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVm
ZmVyU2luazo6Q2FsbGJhY2smJik7CiAgICAgdm9pZCByZXNvbHZlKFJlZjxEZWZlcnJlZFByb21p
c2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlYWRhYmxlU3RyZWFtKik7CiAgICAg
dm9pZCByZXNvbHZlV2l0aERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKTsKKyAgICB2b2lk
IHJlc29sdmVXaXRoRm9ybURhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgRm9ybURhdGEmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CisgICAgdm9pZCBjb25zdW1lRm9ybURhdGFBc1N0cmVhbShjb25zdCBGb3JtRGF0YSYsIEZldGNo
Qm9keVNvdXJjZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgIHZvaWQgbG9hZGlu
Z0ZhaWxlZChjb25zdCBFeGNlcHRpb24mKTsKICAgICB2b2lkIGxvYWRpbmdTdWNjZWVkZWQoY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CkBAIC04OCw2ICs5NSw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CiAgICAgYm9vbCBtX2lzTG9hZGluZyB7
IGZhbHNlIH07CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IG1fdXNlckdlc3R1cmVUb2tl
bjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybURhdGFDb25zdW1lcj4gbV9mb3JtRGF0YUNvbnN1
bWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9Gb3JtRGF0YUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRm9ybURhdGFDb25zdW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWQwZWZhODUz
MWQ0YWVlNmFiZmMxOGE5YjI1OWZkNDI5MWY2YzNlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRm9ybURhdGFDb25zdW1lci5jcHAKQEAgLTAsMCArMSwx
MzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRm9ybURh
dGFDb25zdW1lci5oIgorCisjaW5jbHVkZSAiQmxvYkxvYWRlci5oIgorI2luY2x1ZGUgIkZvcm1E
YXRhLmgiCisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0Zvcm1EYXRhQ29uc3VtZXI6OkZvcm1EYXRhQ29uc3VtZXIoY29uc3QgRm9ybURhdGEmIGZv
cm1EYXRhLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBDYWxsYmFjayYmIGNhbGxi
YWNrKQorICAgIDogbV9mb3JtRGF0YShmb3JtRGF0YS5jb3B5KCkpCisgICAgLCBtX2NvbnRleHQo
JmNvbnRleHQpCisgICAgLCBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQorICAgICwgbV9m
aWxlUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkZvcm1EYXRhQ29uc3VtZXIgZmlsZSBxdWV1ZSIp
KQoreworICAgIHJlYWQoKTsKK30KKworRm9ybURhdGFDb25zdW1lcjo6fkZvcm1EYXRhQ29uc3Vt
ZXIoKQoreworfQorCit2b2lkIEZvcm1EYXRhQ29uc3VtZXI6OnJlYWQoKQoreworICAgIEFTU0VS
VChtX2NhbGxiYWNrKTsKKyAgICBBU1NFUlQobV9jb250ZXh0KTsKKyAgICBBU1NFUlQoIW1fYmxv
YkxvYWRlcik7CisKKyAgICBpZiAobV9jdXJyZW50RWxlbWVudEluZGV4ID49IG1fZm9ybURhdGEt
PmVsZW1lbnRzKCkuc2l6ZSgpKSB7CisgICAgICAgIG1fY2FsbGJhY2soU3Bhbjxjb25zdCB1aW50
OF90PiB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3dpdGNoT24obV9mb3Jt
RGF0YS0+ZWxlbWVudHMoKVttX2N1cnJlbnRFbGVtZW50SW5kZXgrK10uZGF0YSwgW3RoaXNdKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgY29udGVudCkgeworICAgICAgICBjb25zdW1lRGF0YShjb250
ZW50KTsKKyAgICB9LCBbdGhpc10oY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURh
dGEmIGZpbGVEYXRhKSB7CisgICAgICAgIGNvbnN1bWVGaWxlKGZpbGVEYXRhLmZpbGVuYW1lKTsK
KyAgICB9LCBbdGhpc10oY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkQmxvYkRhdGEmIGJs
b2JEYXRhKSB7CisgICAgICAgIGNvbnN1bWVCbG9iKGJsb2JEYXRhLnVybCk7CisgICAgfSk7Cit9
CisKK3ZvaWQgRm9ybURhdGFDb25zdW1lcjo6Y29uc3VtZURhdGEoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBjb250ZW50KQoreworICAgIGNvbnN1bWUoY29udGVudC5zcGFuKCkpOworfQorCit2b2lk
IEZvcm1EYXRhQ29uc3VtZXI6OmNvbnN1bWVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCit7
CisgICAgbV9maWxlUXVldWUtPmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCBpZGVudGlmaWVyID0gbV9jb250ZXh0LT5pZGVudGlmaWVyKCksIHBhdGggPSBmaWxlbmFtZS5p
c29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6cG9zdFRhc2tUbyhpZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwg
Y29udGVudCA9IEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKHBhdGgpXShhdXRvJikgeworICAg
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIGlmICghY29udGVudCkgeworICAgICAgICAgICAgICAgIGlmICh3ZWFrVGhpcy0+bV9j
YWxsYmFjaykKKyAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1fY2FsbGJhY2soRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJVbmFibGUgdG8gcmVhZCBmb3JtIGRhdGEgZmlsZSJf
cyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5jb25zdW1lKCpjb250ZW50KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9
CisKK3ZvaWQgRm9ybURhdGFDb25zdW1lcjo6Y29uc3VtZUJsb2IoY29uc3QgVVJMJiBibG9iVVJM
KQoreworICAgIG1fYmxvYkxvYWRlciA9IG1ha2VVbmlxdWU8QmxvYkxvYWRlcj4oW3dlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH1dKEJsb2JMb2FkZXImKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIGxvYWRlciA9
IHN0ZDo6ZXhjaGFuZ2Uod2Vha1RoaXMtPm1fYmxvYkxvYWRlciwgeyB9KTsKKyAgICAgICAgaWYg
KGF1dG8gb3B0aW9uYWxFcnJvckNvZGUgPSBsb2FkZXItPmVycm9yQ29kZSgpKSB7CisgICAgICAg
ICAgICBpZiAod2Vha1RoaXMtPm1fY2FsbGJhY2spCisgICAgICAgICAgICAgICAgd2Vha1RoaXMt
Pm1fY2FsbGJhY2soRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJGYWlsZWQgdG8gcmVh
ZCBmb3JtIGRhdGEgYmxvYiJfcyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChhdXRvIGRhdGEgPSBsb2FkZXItPmFycmF5QnVmZmVyUmVzdWx0KCkpCisg
ICAgICAgICAgICB3ZWFrVGhpcy0+Y29uc3VtZShTcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPmJ5dGVMZW5ndGgoKSB9
KTsKKyAgICB9KTsKKworICAgIG1fYmxvYkxvYWRlci0+c3RhcnQoYmxvYlVSTCwgbV9jb250ZXh0
LmdldCgpLCBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1ZmZlcik7CisKKyAgICBpZiAo
IW1fYmxvYkxvYWRlci0+aXNMb2FkaW5nKCkpIHsKKyAgICAgICAgbV9jYWxsYmFjayhFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciwgIlVuYWJsZSB0byByZWFkIGZvcm0gZGF0YSBibG9iIl9z
IH0pOworICAgICAgICBtX2Jsb2JMb2FkZXIgPSBudWxscHRyOworICAgIH0KK30KKwordm9pZCBG
b3JtRGF0YUNvbnN1bWVyOjpjb25zdW1lKFNwYW48Y29uc3QgdWludDhfdD4gY29udGVudCkKK3sK
KyAgICBpZiAoIW1fY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2FsbGJhY2so
V1RGTW92ZShjb250ZW50KSk7CisgICAgaWYgKCFtX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47
CisKKyAgICByZWFkKCk7Cit9CisKK3ZvaWQgRm9ybURhdGFDb25zdW1lcjo6Y2FuY2VsKCkKK3sK
KyAgICBtX2NhbGxiYWNrID0gbnVsbHB0cjsKKyAgICBpZiAobV9ibG9iTG9hZGVyKSB7CisgICAg
ICAgIG1fYmxvYkxvYWRlci0+Y2FuY2VsKCk7CisgICAgICAgIG1fYmxvYkxvYWRlciA9IG51bGxw
dHI7CisgICAgfQorICAgIG1fY29udGV4dCA9IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRm9ybURh
dGFDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9Gb3JtRGF0YUNvbnN1
bWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYmFhODI1OTYxY2NmYjY0ZTFkZDIzODgyNDMzYTc3OWZlYjAxOTc4
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRm9ybURh
dGFDb25zdW1lci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRl
IDx3dGYvU3Bhbi5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dv
cmtRdWV1ZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJsb2JMb2FkZXI7Citj
bGFzcyBGb3JtRGF0YTsKKworY2xhc3MgRm9ybURhdGFDb25zdW1lciA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxGb3JtRGF0YUNvbnN1bWVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgdXNpbmcgQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9y
PFNwYW48Y29uc3QgdWludDhfdD4+KT47CisgICAgRm9ybURhdGFDb25zdW1lcihjb25zdCBGb3Jt
RGF0YSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBDYWxsYmFjayYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB+Rm9ybURhdGFDb25zdW1lcigpOworCisgICAgdm9pZCBjYW5jZWwoKTsKKworcHJp
dmF0ZToKKyAgICB2b2lkIGNvbnN1bWVEYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAg
IHZvaWQgY29uc3VtZUZpbGUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb25zdW1lQmxvYihj
b25zdCBVUkwmKTsKKworICAgIHZvaWQgY29uc3VtZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAg
ICB2b2lkIHJlYWQoKTsKKworICAgIFJlZjxGb3JtRGF0YT4gbV9mb3JtRGF0YTsKKyAgICBSZWZQ
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OworICAgIENhbGxiYWNrIG1fY2Fs
bGJhY2s7CisKKyAgICBzaXplX3QgbV9jdXJyZW50RWxlbWVudEluZGV4IHsgMCB9OworICAgIFJl
ZjxXb3JrUXVldWU+IG1fZmlsZVF1ZXVlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iTG9hZGVy
PiBtX2Jsb2JMb2FkZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IDYxZTJiOWRlYzZlMzI3ZmZiYWIzODM2ZDEyY2I5NDcxMDJkZTg2MTIuLjRlYzgzOWI1
M2M0OWIxMjkzMzViNmZiOWQzYzc5Yjc3NzU5ZjM4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC04OCw2
ICs4OCw3IEBAIE1vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcAogTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5jcHAKIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAogTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorTW9kdWxlcy9mZXRjaC9Gb3JtRGF0YUNvbnN1bWVyLmNw
cAogTW9kdWxlcy9mZXRjaC9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlRmV0Y2guY3BwCiBNb2R1
bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZS5jcHAKIE1vZHVs
ZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZjM4MzE0
Yzk5MjEzYjRiN2ZiMzM0M2U0M2QxMDg1MDc0OGQ4YTRiLi44NDM3MjEyNmQ5YWFhNGYyYzczNTY3
ZDQ0OWU4MjhlOWI0MjkwNjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NDg1LDYgKzg0ODUsOCBAQAogCQkzRkJDNEFGMTE4
OTg4MTU2MDA0NkVFMzggLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0ZCQzRBRjIxODk4ODE1
NjAwNDZFRTM4IC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMDI0RkM4MjNDRjI1NEYwMEZERjk4RSAvKiBT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEwMkVF
MEUyNzgzMEU2MzAwRDZCRTc0IC8qIEZvcm1EYXRhQ29uc3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Rm9ybURhdGFDb25zdW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTAyRUUx
MDI3ODMwRTYzMDBENkJFNzQgLyogRm9ybURhdGFDb25zdW1lci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGb3JtRGF0YUNvbnN1bWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDEwNzkwOEExRkMzRTRGMjAwNjFCMjdBIC8qIENsaWVudE9yaWdpbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDbGllbnRPcmlnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDEwOTM4MkMyMzQ3ODUwRTAwOTQyOEJBIC8qIEpTQWJvcnRTaWduYWxDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBYm9ydFNpZ25hbEN1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMEE4RUY0MjRGODIzQjkwMDRGOTA3MCAvKiBUZXh0RW5j
b2RlclN0cmVhbS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGV4dEVuY29kZXJTdHJlYW0uaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjEyODEsNiArMjEyODMsOCBAQAogCQkJCTQxMzAxNUQ1MUM3QjU3
MDQwMDA5MUM2RSAvKiBGZXRjaFJlc3BvbnNlLmNwcCAqLywKIAkJCQk0MTMwMTVENjFDN0I1NzA0
MDAwOTFDNkUgLyogRmV0Y2hSZXNwb25zZS5oICovLAogCQkJCTQxMzAxNUQ3MUM3QjU3MDQwMDA5
MUM2RSAvKiBGZXRjaFJlc3BvbnNlLmlkbCAqLywKKwkJCQk0MTAyRUUxMDI3ODMwRTYzMDBENkJF
NzQgLyogRm9ybURhdGFDb25zdW1lci5jcHAgKi8sCisJCQkJNDEwMkVFMEUyNzgzMEU2MzAwRDZC
RTc0IC8qIEZvcm1EYXRhQ29uc3VtZXIuaCAqLywKIAkJCQk3QzJFMEJEMTI1MTA2QUM0MDA1RjND
ODcgLyogV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZStGZXRjaC5pZGwgKi8sCiAJCQkJN0MyRTBC
RDAyNTEwNkFDNDAwNUYzQzg3IC8qIFdpbmRvd09yV29ya2VyR2xvYmFsU2NvcGVGZXRjaC5jcHAg
Ki8sCiAJCQkJN0MyRTBCQ0YyNTEwNkFDNDAwNUYzQzg3IC8qIFdpbmRvd09yV29ya2VyR2xvYmFs
U2NvcGVGZXRjaC5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9i
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JMb2FkZXIuaAppbmRleCA4YjFh
NjExN2YyNmU3MTdiYmM4ZjkxZmFlYmRkNDQwNzc1NjFhNThmLi5jZDBkMGMxYjlhNTQzZGIwNDI1
M2E3MmRiZjVkMDc3YWMxZmM1MzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2JMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JMb2FkZXIuaApA
QCAtNDMsNiArNDMsNyBAQCBwdWJsaWM6CiAgICAgfkJsb2JMb2FkZXIoKTsKIAogICAgIHZvaWQg
c3RhcnQoQmxvYiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBGaWxlUmVhZGVyTG9hZGVyOjpS
ZWFkVHlwZSk7CisgICAgdm9pZCBzdGFydChjb25zdCBVUkwmLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgRmlsZVJlYWRlckxvYWRlcjo6UmVhZFR5cGUpOwogCiAgICAgdm9pZCBjYW5jZWwoKTsK
ICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVyICYmIG1fY29tcGxl
dGlvbkhhbmRsZXI7IH0KQEAgLTg5LDYgKzkwLDEzIEBAIGlubGluZSB2b2lkIEJsb2JMb2FkZXI6
OnN0YXJ0KEJsb2ImIGJsb2IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEZpbGVS
CiAgICAgbV9sb2FkZXItPnN0YXJ0KGNvbnRleHQsIGJsb2IpOwogfQogCitpbmxpbmUgdm9pZCBC
bG9iTG9hZGVyOjpzdGFydChjb25zdCBVUkwmIGJsb2JVUkwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRUeXBlIHJlYWRUeXBlKQoreworICAg
IEFTU0VSVCghbV9sb2FkZXIpOworICAgIG1fbG9hZGVyID0gbWFrZVVuaXF1ZTxGaWxlUmVhZGVy
TG9hZGVyPihyZWFkVHlwZSwgdGhpcyk7CisgICAgbV9sb2FkZXItPnN0YXJ0KGNvbnRleHQsIGJs
b2JVUkwpOworfQorCiBpbmxpbmUgdm9pZCBCbG9iTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKCkK
IHsKICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCmluZGV4IGI3Zjc1ZWRhM2IyMzNiMTliMjBlZDcwNDI4
OTQ5YmIzMzU4OThlODEuLjc0ZWY1ZjRiOGI0N2E3MmE1NTkwODdmYWZhNzE3NTY4OGU4ZDU2NDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAtNzMs
NiArNzMsMTEgQEAgRmlsZVJlYWRlckxvYWRlcjo6fkZpbGVSZWFkZXJMb2FkZXIoKQogfQogCiB2
b2lkIEZpbGVSZWFkZXJMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIEJsb2ImIGJsb2IpCit7CisgICAgc3RhcnQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgYmxvYi51cmwoKSk7Cit9CisKK3ZvaWQgRmlsZVJlYWRlckxvYWRlcjo6c3Rh
cnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3Qg
VVJMJiBibG9iVVJMKQogewogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIApA
QCAtODIsNyArODcsNyBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEJsbwogICAgICAgICBmYWlsZWQo
U2VjdXJpdHlFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3Vy
aXR5T3JpZ2luKCksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvbGljeUNvbnRhaW5lcigpLCBt
X3VybEZvclJlYWRpbmcsIGJsb2IudXJsKCkpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6
OnJlZ2lzdGVyQmxvYlVSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigp
LCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb2xpY3lDb250YWluZXIoKSwgbV91cmxGb3JSZWFk
aW5nLCBibG9iVVJMKTsKIAogICAgIC8vIENvbnN0cnVjdCBhbmQgbG9hZCB0aGUgcmVxdWVzdC4K
ICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3VybEZvclJlYWRpbmcpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRleCA1MzljMjMwNGE4MmU2M2FhZGZl
MmM1NjdjOThkMGI4YzY4N2E4ZTlmLi5kYmFlOWUzMzUwOTBhOGI5NmRmYjc2ZWI2ZTE1MTEyNTk4
OGU2MGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAt
NjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgfkZpbGVSZWFkZXJMb2FkZXIoKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsb2ImKTsK
KyAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbCgpOwogCiAgICAgLy8gVGhyZWFkYWJsZUxvYWRl
ckNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBjMjdjOTI2
OWZmZWYyNDlhYjVlOGFiYTI0ZDc2MmZjNDBjMWMyMzAwLi4wZjY0NDc2NWZhODc1ZmNhNjg3YmU5
MGE3NTdkMDYyMDkyNGYzMmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aApAQCAtMjMwLDYgKzIzMCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1
ZmZlckJ1aWxkZXI7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kKFNwYW48Y29uc3QgdWludDhfdD4g
dmFsdWUpIHsgYXBwZW5kKHZhbHVlLmRhdGEoKSwgdmFsdWUuc2l6ZSgpKTsgfQogICAgIHZvaWQg
YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogI2lmIFVTRShGT1VOREFUSU9O
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXggOGE5MTM4ZDIzYjBkNWRlYzUzZDI5OTBk
ZWQ1ZGI3NzYzNTRlNTI0MC4uOWQ5YWNkNjRhMTYyMTg0ZGNjMTJhNGQ0NDNlYmUwMDJhNjUyYjZi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBTZXJ2aWNlV29ya2VyRmV0Y2ggewogCiAvLyBodHRwczov
L2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaHR0cC1mZXRjaCBzdGVwIDMuMwotc3RhdGljIGlubGlu
ZSBzdGQ6Om9wdGlvbmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIEZldGNoT3B0aW9uczo6TW9kZSBtb2RlLCBGZXRjaE9w
dGlvbnM6OlJlZGlyZWN0IHJlZGlyZWN0KQorc3RhdGljIGlubGluZSBSZXNvdXJjZUVycm9yIHZh
bGlkYXRlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIEZldGNoT3B0
aW9uczo6TW9kZSBtb2RlLCBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0IHJlZGlyZWN0KQogewogICAg
IGlmIChyZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6RXJyb3IpCiAg
ICAgICAgIHJldHVybiBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwg
MCwgcmVzcG9uc2UudXJsKCksICJSZXNwb25zZSBzZXJ2ZWQgYnkgc2VydmljZSB3b3JrZXIgaXMg
YW4gZXJyb3IiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwsIFJlc291cmNlRXJyb3I6
OklzU2FuaXRpemVkOjpZZXMgfTsKQEAgLTg0LDggKzg0LDggQEAgc3RhdGljIHZvaWQgcHJvY2Vz
c1Jlc3BvbnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25z
ZT4sIHMKICAgICB9CiAKICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2UgPSByZXNwb25zZS0+cmVz
b3VyY2VSZXNwb25zZSgpOwotICAgIGlmIChhdXRvIGVycm9yID0gdmFsaWRhdGVSZXNwb25zZShy
ZXNvdXJjZVJlc3BvbnNlLCBtb2RlLCByZWRpcmVjdCkpIHsKLSAgICAgICAgY2xpZW50LT5kaWRG
YWlsKGVycm9yLnZhbHVlKCkpOworICAgIGlmIChhdXRvIGVycm9yID0gdmFsaWRhdGVSZXNwb25z
ZShyZXNvdXJjZVJlc3BvbnNlLCBtb2RlLCByZWRpcmVjdCk7ICFlcnJvci5pc051bGwoKSkgewor
ICAgICAgICBjbGllbnQtPmRpZEZhaWwoZXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYWYxZGY5YzNmOGQyYWY4MTg4MzY0OGQ2MWJjZjFkMGJmMGNlMzJmZS4uZGU5NTcy
NTlmNDVlNGY3OWQ4Njc0Y2IxMDJiODg2YzQ2ODc1MjVlZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDIyLTAxLTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAg
ICBGZXRjaCB1c2luZyBGb3JtRGF0YSB3aXRoIGZpbGUgZG9lc24ndCBnbyB0aHJvdWdoIFNlcnZp
Y2UgV29ya2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODc0NjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQxOTc1NTQ0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIGFkZGluZyBh
IHRlc3QgdG8gaHR0cC93cHQvZmV0Y2gvcmVxdWVzdC1jb25zdW1lLXN0cmVhbS5odG1sLCB3ZSBm
aXggdGhlIG90aGVyIHRlc3RzIHRoYXQgc2hvdWxkIGFsbCBiZSBwYXNzaW5nLgorICAgICAgICBB
ZGQgaHR0cC93cHQvc2VydmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQuaHRtbCBhbmQgdHJh
bnNsYXRlIGV4aXRpbmcgaHR0cC90ZXN0cyBzY3JpcHRzIGZvciB0aGUgV1BUIHNlcnZlci4KKwor
ICAgICAgICAqIGh0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY29uc3VtZS1zdHJlYW0tZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGh0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY29uc3VtZS1zdHJlYW0uaHRt
bDoKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZm9ybS1kYXRhLXVwbG9hZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9m
b3JtLWRhdGEtdXBsb2FkLXdvcmtlci5qczogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9jcmVhdGUtdGVtcC1maWxlLWlmcmFtZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2Vz
L3Jlc2V0LXRlbXAtZmlsZS5weTogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL3Jlc291cmNlcy90ZW1wLWZpbGUtdXRpbHMuanM6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdG91Y2gtdGVtcC1maWxlLnB5OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3dyaXRlLXRl
bXAtZmlsZS5weTogQWRkZWQuCisKIDIwMjItMDEtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ugc3VyZSBzZWN1cmUgd2Vic29ja2V0IGNvbm5lY3Rp
b25zIGluIHNlcnZpY2Ugd29ya2VycyBjYW4gdHJpZ2dlciBhdXRoZW50aWNhdGlvbiBjaGFsbGVu
Z2UgY2FsbGJhY2tzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBiMzI5ZmY1NjY0
MDE0ZmE3ZTU0NmJlODAyZTMwMjgxMGYzMjE2OWQ5Li41OGFiNjQ1NjllNDk4MThlNmVkMzdlMjBj
NWFhYjU4OTM5Y2ZhMDdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAyMi0wMS0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgRmV0Y2ggdXNpbmcgRm9ybURhdGEgd2l0aCBmaWxlIGRvZXNuJ3QgZ28gdGhyb3Vn
aCBTZXJ2aWNlIFdvcmtlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg3NDYxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTk3NTU0ND4KKworICAg
ICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1j
b25zdW1lLXN0cmVhbS5hbnktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1zdHJlYW0uYW55Lndvcmtl
ci1leHBlY3RlZC50eHQ6CisKIDIwMjItMDEtMDUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNv
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIENTUyBgdHJhbnNmb3JtYCBwcm9wZXJ0eSAgc2hvdWxk
IHRha2UgaW50byBhY2NvdW50IHRyYW5zZm9ybSByZWZlcmVuY2UgYm94CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC9mZXRjaC9yZXF1ZXN0LWNvbnN1bWUtc3RyZWFtLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY29uc3VtZS1zdHJlYW0t
ZXhwZWN0ZWQudHh0CmluZGV4IGNkZDY2OTgyMjM1MGU0YjBhNWE0NzlmYjBmYWNiZWE2NWMzYjI0
ZTguLjM1YWM3N2I1NGVmZDViYWExOTE2NDdiMDY3M2U5NjhkYTM3OTc2MTUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY29uc3VtZS1zdHJlYW0tZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY29uc3VtZS1z
dHJlYW0tZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsMTAgQEAKIAotRkFJTCBSZWFkIGVtcHR5IHRl
eHQgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gYXNzZXJ0X2FycmF5X2VxdWFsczog
UmV0cmlldmUgYW5kIHZlcmlmeSBzdHJlYW0gbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5
IG9iamVjdCAiIiBsZW5ndGggMCwgZ290IG9iamVjdCAiMTIzLDM0LDEwNywxMDEsMTIxLDM0LDU4
LDMyLDM0LDExOCw5NywxMDgsMTE3LDEwMSwzNCwxMjUiIGxlbmd0aCAxNgotRkFJTCBSZWFkIGVt
cHR5IGJsb2IgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gYXNzZXJ0X2FycmF5X2Vx
dWFsczogUmV0cmlldmUgYW5kIHZlcmlmeSBzdHJlYW0gbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVk
IGFycmF5IG9iamVjdCAiIiBsZW5ndGggMCwgZ290IG9iamVjdCAiMTIzLDM0LDEwNywxMDEsMTIx
LDM0LDU4LDMyLDM0LDExOCw5NywxMDgsMTE3LDEwMSwzNCwxMjUiIGxlbmd0aCAxNgotRkFJTCBS
ZWFkIGJsb2IgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gYXNzZXJ0X2FycmF5X2Vx
dWFsczogUmV0cmlldmUgYW5kIHZlcmlmeSBzdHJlYW0gbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVk
IGFycmF5IG9iamVjdCAiMTE1LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMTMsMTE3LDEwMSwxMTUs
MTE2LDM5LDExNSwzMiw5OCwxMTEsMTAwLDEyMSwzNCIgbGVuZ3RoIDI0LCBnb3Qgb2JqZWN0ICIx
MjMsMzQsMTA3LDEwMSwxMjEsMzQsNTgsMzIsMzQsMTE4LDk3LDEwOCwxMTcsMTAxLDM0LDEyNSIg
bGVuZ3RoIDE2Ci1GQUlMIFJlYWQgdGV4dCByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJsZVN0cmVh
bSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBSZXRyaWV2ZSBhbmQgdmVyaWZ5IHN0cmVhbSBsZW5ndGhz
IGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgb2JqZWN0ICIxMTUsMzIsMTA1LDExNSwzMiwxMTQsMTAx
LDExMywxMTcsMTAxLDExNSwxMTYsMzksMTE1LDMyLDk4LDExMSwxMDAsMTIxLDM0IiBsZW5ndGgg
MjQsIGdvdCBvYmplY3QgIjEyMywzNCwxMDcsMTAxLDEyMSwzNCw1OCwzMiwzNCwxMTgsOTcsMTA4
LDExNywxMDEsMzQsMTI1IiBsZW5ndGggMTYKLUZBSUwgUmVhZCBVUkxTZWFyY2hQYXJhbXMgcmVx
dWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gYXNzZXJ0X2FycmF5X2VxdWFsczogUmV0cmll
dmUgYW5kIHZlcmlmeSBzdHJlYW0gbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IG9iamVj
dCAiMTEwLDk3LDEwOSwxMDEsNjEsMTE4LDk3LDEwOCwxMTcsMTAxIiBsZW5ndGggMTAsIGdvdCBv
YmplY3QgIjEyMywzNCwxMDcsMTAxLDEyMSwzNCw1OCwzMiwzNCwxMTgsOTcsMTA4LDExNywxMDEs
MzQsMTI1IiBsZW5ndGggMTYKLUZBSUwgUmVhZCBhcnJheSBidWZmZXIgcmVxdWVzdCdzIGJvZHkg
YXMgcmVhZGFibGVTdHJlYW0gYXNzZXJ0X2FycmF5X2VxdWFsczogUmV0cmlldmUgYW5kIHZlcmlm
eSBzdHJlYW0gbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IG9iamVjdCAiMTE1LDMyLDEw
NSwxMTUsMzIsMTE0LDEwMSwxMTMsMTE3LDEwMSwxMTUsMTE2LDM5LDExNSwzMiw5OCwxMTEsMTAw
LDEyMSwzNCIgbGVuZ3RoIDI0LCBnb3Qgb2JqZWN0ICIxMjMsMzQsMTA3LDEwMSwxMjEsMzQsNTgs
MzIsMzQsMTE4LDk3LDEwOCwxMTcsMTAxLDM0LDEyNSIgbGVuZ3RoIDE2Ci1GQUlMIFJlYWQgZm9y
bSBkYXRhIHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIGFzc2VydF9hcnJheV9lcXVh
bHM6IFJldHJpZXZlIGFuZCB2ZXJpZnkgc3RyZWFtIGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBh
cnJheSBvYmplY3QgIjExMCw5NywxMDksMTAxLDYxLDExOCw5NywxMDgsMTE3LDEwMSIgbGVuZ3Ro
IDEwLCBnb3Qgb2JqZWN0ICIxMjMsMzQsMTA3LDEwMSwxMjEsMzQsNTgsMzIsMzQsMTE4LDk3LDEw
OCwxMTcsMTAxLDM0LDEyNSIgbGVuZ3RoIDE2CitQQVNTIFJlYWQgZW1wdHkgdGV4dCByZXF1ZXN0
J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbQorUEFTUyBSZWFkIGVtcHR5IGJsb2IgcmVxdWVzdCdz
IGJvZHkgYXMgcmVhZGFibGVTdHJlYW0KK1BBU1MgUmVhZCBibG9iIHJlcXVlc3QncyBib2R5IGFz
IHJlYWRhYmxlU3RyZWFtCitQQVNTIFJlYWQgdGV4dCByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJs
ZVN0cmVhbQorUEFTUyBSZWFkIFVSTFNlYXJjaFBhcmFtcyByZXF1ZXN0J3MgYm9keSBhcyByZWFk
YWJsZVN0cmVhbQorUEFTUyBSZWFkIGFycmF5IGJ1ZmZlciByZXF1ZXN0J3MgYm9keSBhcyByZWFk
YWJsZVN0cmVhbQorUEFTUyBSZWFkIGZvcm0gZGF0YSByZXF1ZXN0J3MgYm9keSBhcyByZWFkYWJs
ZVN0cmVhbQorUEFTUyBSZWFkIGZvcm0gZGF0YSB3aXRoIGJsb2IgcmVxdWVzdCdzIGJvZHkgYXMg
cmVhZGFibGVTdHJlYW0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gv
cmVxdWVzdC1jb25zdW1lLXN0cmVhbS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvZmV0Y2gv
cmVxdWVzdC1jb25zdW1lLXN0cmVhbS5odG1sCmluZGV4IGE1OGE0NzIwMDQzY2I5NDExNzFiNzM2
MWUwOWViOGYxNDllMmJhYjcuLmM0OWE5N2MyZDQ4NDI3NGVmZjc5MTM0NmM3M2JhNTRlNmNjNDI1
MmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL3JlcXVlc3QtY29uc3Vt
ZS1zdHJlYW0uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9mZXRjaC9yZXF1ZXN0LWNv
bnN1bWUtc3RyZWFtLmh0bWwKQEAgLTExLDkgKzExLDI1IEBACiAgIDwvaGVhZD4KICAgPGJvZHk+
CiAgICAgPHNjcmlwdD4KK2FzeW5jIGZ1bmN0aW9uIGdldFN0cmluZ0Zyb21TdHJlYW0ocmVhZGVy
LCBjdXJyZW50VmFsdWUpIHsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVhZGVyLnJlYWQoKTsK
KyAgICBpZiAoIWRhdGEuZG9uZSkgeworICAgICAgICBsZXQgYnVmZmVyOworICAgICAgICBpZiAo
Y3VycmVudFZhbHVlKSB7CisgICAgICAgICAgICBjb25zdCBuZXdCdWZmZXIgPSBuZXcgQXJyYXlC
dWZmZXIoZGF0YS52YWx1ZS5sZW5ndGggKyBjdXJyZW50VmFsdWUubGVuZ3RoKTsKKyAgICAgICAg
ICAgIGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KG5ld0J1ZmZlcik7CisgICAgICAgICAgICBidWZm
ZXIuc2V0KGN1cnJlbnRWYWx1ZSwgMCk7CisgICAgICAgICAgICBidWZmZXIuc2V0KGRhdGEudmFs
dWUsIGN1cnJlbnRWYWx1ZS5sZW5ndGgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJ1
ZmZlciA9IGRhdGEudmFsdWU7CisgICAgICAgIHJldHVybiBnZXRTdHJpbmdGcm9tU3RyZWFtKHJl
YWRlciwgYnVmZmVyKTsKKyAgICB9CisgICAgcmV0dXJuIChuZXcgVGV4dERlY29kZXIpLmRlY29k
ZShjdXJyZW50VmFsdWUpOworfQorCiBmdW5jdGlvbiBjcmVhdGVSZXF1ZXN0V2l0aEJvZHkoYm9k
eSkKIHsKLSAgICByZXR1cm4gbmV3IFJlcXVlc3QoIiIsIHtib2R5OiAie1wia2V5XCI6IFwidmFs
dWVcIn0iLCBtZXRob2Q6ICJQT1NUIn0pOworICAgIHJldHVybiBuZXcgUmVxdWVzdCgiIiwge2Jv
ZHk6IGJvZHksIG1ldGhvZDogIlBPU1QifSk7CiB9CiAKIHByb21pc2VfdGVzdChmdW5jdGlvbih0
ZXN0KSB7CkBAIC01OCwxMCArNzQsMjkgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsK
ICAgICByZXR1cm4gdmFsaWRhdGVTdHJlYW1Gcm9tU3RyaW5nKGNyZWF0ZVJlcXVlc3RXaXRoQm9k
eShhcnJheUJ1ZmZlcikuYm9keS5nZXRSZWFkZXIoKSwgdGV4dERhdGEpOwogfSwgIlJlYWQgYXJy
YXkgYnVmZmVyIHJlcXVlc3QncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIik7CiAKLXByb21pc2Vf
dGVzdChmdW5jdGlvbih0ZXN0KSB7Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKICAg
ICB2YXIgcmVxdWVzdCA9IGNyZWF0ZVJlcXVlc3RXaXRoQm9keShmb3JtRGF0YSk7Ci0gICAgcmV0
dXJuIHZhbGlkYXRlU3RyZWFtRnJvbVN0cmluZyhyZXF1ZXN0LmJvZHkuZ2V0UmVhZGVyKCksICJu
YW1lPXZhbHVlIik7CisgICAgY29uc3QgdmFsdWUgPSBhd2FpdCBnZXRTdHJpbmdGcm9tU3RyZWFt
KHJlcXVlc3QuYm9keS5nZXRSZWFkZXIoKSk7CisKKyAgICBhc3NlcnRfdHJ1ZSh2YWx1ZS5pbmNs
dWRlcygnbmFtZT0ibmFtZSInKSwgIm5hbWUiKTsKKyAgICBhc3NlcnRfdHJ1ZSh2YWx1ZS5pbmNs
dWRlcygndmFsdWUnKSwgIm5hbWUiKTsKIH0sICJSZWFkIGZvcm0gZGF0YSByZXF1ZXN0J3MgYm9k
eSBhcyByZWFkYWJsZVN0cmVhbSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsK
KyAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpOworICAgIGNvbnN0IGJsb2IgPSBu
ZXcgQmxvYihbIidIZWxsbyciXSwgeyAidHlwZSIgOiAidGV4dC9wbGFpbiIgfSk7CisgICAgZm9y
bURhdGEuYXBwZW5kKCJibG9iIiwgYmxvYiwgImJsb2IuZmlsZSIpOworICAgIGZvcm1EYXRhLmFw
cGVuZCgibmFtZSIsICJ2YWx1ZSIpOworCisgICAgY29uc3QgcmVxdWVzdCA9IGNyZWF0ZVJlcXVl
c3RXaXRoQm9keShmb3JtRGF0YSk7CisgICAgY29uc3QgdmFsdWUgPSBhd2FpdCBnZXRTdHJpbmdG
cm9tU3RyZWFtKHJlcXVlc3QuYm9keS5nZXRSZWFkZXIoKSk7CisKKyAgICBhc3NlcnRfdHJ1ZSh2
YWx1ZS5pbmNsdWRlcygnbmFtZT0ibmFtZSInKSwgIm5hbWUiKTsKKyAgICBhc3NlcnRfdHJ1ZSh2
YWx1ZS5pbmNsdWRlcygndmFsdWUnKSwgIm5hbWUiKTsKKworICAgIGFzc2VydF90cnVlKHZhbHVl
LmluY2x1ZGVzKCduYW1lPSJibG9iIicpLCAiYmxvYiIpOworICAgIGFzc2VydF90cnVlKHZhbHVl
LmluY2x1ZGVzKCdIZWxsbycpLCAiSGVsbG8iKTsKK30sICJSZWFkIGZvcm0gZGF0YSB3aXRoIGJs
b2IgcmVxdWVzdCdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0iKTsKICAgICA8L3NjcmlwdD4KICAg
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBiZGMzYzhlOWY2MGJlYmVmOThlYTc2MWU1OGVkYzI1ZjFjMWQ2YWYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZm9ybS1kYXRh
LXVwbG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorT1BFTiBGSUxFIFBBTkVMCisK
KworUEFTUyBTZXR1cCB3b3JrZXIKK1BBU1MgQ3JlYXRlIGNoYW5uZWwgd2l0aCB3b3JrZXIKK1BB
U1MgU2V0dXAgZnJhbWUKK1BBU1MgU2V0dXAgZmlsZSB0byB1cGxvYWQKK1BBU1MgU2V0dXAgZmls
ZSBmb3JtIGRhdGEKK1BBU1MgVXBsb2FkIGludGVyY2VwdGVkIGJ5IHNlcnZpY2Ugd29ya2VyCitQ
QVNTIFVwbG9hZCBjbG9uZWQgYnkgc2VydmljZSB3b3JrZXIKK1BBU1MgRGVsZXRlIHRlbXBvcmFy
eSBmaWxlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vy
cy9mb3JtLWRhdGEtdXBsb2FkLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZp
Y2Utd29ya2Vycy9mb3JtLWRhdGEtdXBsb2FkLXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWJlMzg5
NjE4ZWE5YWNlMTkyOTZlNTZjMzc3ZWQxNjFiMDQ5OTZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQtd29ya2Vy
LmpzCkBAIC0wLDAgKzEsMTggQEAKK2FkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBhc3luYyAo
ZSkgPT4geworICAgIGlmICghZS5kYXRhLnBvcnQpCisgICAgICAgIHJldHVybjsKKworICAgIHNl
bGYucG9ydCA9IGUuZGF0YS5wb3J0OworICAgIHNlbGYucG9ydC5wb3N0TWVzc2FnZSgib2siKTsK
K30pOworCithZGRFdmVudExpc3RlbmVyKCJmZXRjaCIsIGFzeW5jIChlKSA9PiB7CisgICAgaWYg
KGUucmVxdWVzdC51cmwuaW5jbHVkZXMoImNsb25lIikpIHsKKyAgICAgICAgY29uc3QgY2xvbmVk
ID0gZS5yZXF1ZXN0LmNsb25lKCk7CisgICAgICAgIGUucmVzcG9uZFdpdGgoZmV0Y2goZS5yZXF1
ZXN0LmNsb25lKCkpKTsKKyAgICAgICAgaWYgKHNlbGYucG9ydCkKKyAgICAgICAgICAgIHNlbGYu
cG9ydC5wb3N0TWVzc2FnZShhd2FpdCBjbG9uZWQudGV4dCgpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBlLnJlc3BvbmRXaXRoKGZldGNoKGUucmVxdWVzdCkpOworfSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvZm9ybS1kYXRhLXVwbG9h
ZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL2Zvcm0tZGF0YS11
cGxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODMxN2QyNzNiNTNhMGM2MTRiNTdiZWY3ZDNmY2I0MTMy
M2RjZjljCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL2Zvcm0tZGF0YS11cGxvYWQuaHRtbApAQCAtMCwwICsxLDE0NiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii93ZWJraXQtdGVzdC1yZXNvdXJjZXMvdWkt
aGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2NvbnN0IHRl
bXBGaWxlQ29udGVudCA9ICJURVNUIjsKK2NvbnN0IHRlbXBGaWxlTmFtZSA9ICJ0ZXN0LnRtcCI7
CisKK3ZhciBmaWxlSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworZmls
ZUlucHV0LnR5cGUgPSAnZmlsZSc7CitmaWxlSW5wdXQuc3R5bGUud2lkdGggPSAiMTAwJSI7IC8v
IFNvIHRoYXQgYW55IG1hbnVhbCB0ZXN0aW5nIHdpbGwgc2hvdyBmdWxsIGZpbGUgbmFtZXMKK2Rv
Y3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGZpbGVJbnB1dCwgZG9jdW1lbnQuYm9keS5maXJzdENo
aWxkKTsKKwordmFyIHNjb3BlID0gInJlc291cmNlcyI7Cit2YXIgYWN0aXZlV29ya2VyOwordmFy
IGZyYW1lOwordmFyIGZpbGVGcmFtZTsKK3ZhciBmb3JtRGF0YTsKK3ZhciBmaWxlU2l6ZTsKKwor
ZnVuY3Rpb24gd2l0aF9pZnJhbWUodXJsKSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0
aW9uKHJlc29sdmUpIHsKKyAgICAgICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnaWZyYW1lJyk7CisgICAgICAgIGZyYW1lLmNsYXNzTmFtZSA9ICd0ZXN0LWlmcmFtZSc7Cisg
ICAgICAgIGZyYW1lLnNyYyA9IHVybDsKKyAgICAgICAgZnJhbWUub25sb2FkID0gZnVuY3Rpb24o
KSB7IHJlc29sdmUoZnJhbWUpOyB9OworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGZyYW1lKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gcHJlcGFyZVVwbG9hZCgpCit7CisgICAg
bGV0IHJlc29sdmUsIHJlamVjdDsKKyAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJl
c29sdmVfLCByZWplY3RfKSA9PiB7CisgICAgICAgIHJlc29sdmUgPSByZXNvbHZlXzsKKyAgICAg
ICAgcmVqZWN0ID0gcmVqZWN0XzsKKyAgICB9KTsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVj
dCgidGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisKKyAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXTsKKyAgICBpbnB1dC5vbmNoYW5nZSA9IGFz
eW5jIChlKSA9PiB7CisgICAgICAgIHZhciBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YTsKKyAgICAg
ICAgZm9ybURhdGEuYXBwZW5kKCJmaWxlIiwgZS50YXJnZXQuZmlsZXNbMF0sIHRlbXBGaWxlTmFt
ZSk7CisgICAgICAgIGZpbGVTaXplID0gZS50YXJnZXQuZmlsZXNbMF0uc2l6ZTsKKyAgICAgICAg
cmVzb2x2ZShmb3JtRGF0YSk7CisgICAgfTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICB0ZXN0UnVubmVyLnNldE9wZW5QYW5lbEZpbGVzKFt0ZW1wRmlsZVBhdGhdKTsK
KworICAgICAgICB2YXIgY2VudGVyWCA9IGlucHV0Lm9mZnNldExlZnQgKyBpbnB1dC5vZmZzZXRX
aWR0aCAvIDI7CisgICAgICAgIHZhciBjZW50ZXJZID0gaW5wdXQub2Zmc2V0VG9wICsgaW5wdXQu
b2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBj
ZW50ZXJZKTsKKyAgICB9CisgICAgcmV0dXJuIHByb21pc2U7Cit9CisKK3Byb21pc2VfdGVzdChh
c3luYyAodGVzdCkgPT4geworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0
ZXN0UnVubmVyLnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3ModHJ1ZSk7CisgICAg
ICAgIGF3YWl0IGZldGNoKCIiKS50aGVuKCgpID0+IHsgfSwgKCkgPT4geyB9KTsKKyAgICB9CisK
KyAgICB2YXIgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVn
aXN0ZXIoImZvcm0tZGF0YS11cGxvYWQtd29ya2VyLmpzIiwgeyBzY29wZSA6IHNjb3BlIH0pOwor
ICAgIGFjdGl2ZVdvcmtlciA9IHJlZ2lzdHJhdGlvbi5hY3RpdmU7CisgICAgaWYgKCFhY3RpdmVX
b3JrZXIpIHsKKyAgICAgICAgYWN0aXZlV29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7
CisgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICAgICAgYWN0
aXZlV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgKCkgPT4geworICAgICAg
ICAgICAgICAgIGlmIChhY3RpdmVXb3JrZXIuc3RhdGUgPT09ICJhY3RpdmF0ZWQiKQorICAgICAg
ICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cisg
ICAgfQorfSwgIlNldHVwIHdvcmtlciIpOworCitjb25zdCBjaGFubmVsID0gbmV3IE1lc3NhZ2VD
aGFubmVsKCk7Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBhY3RpdmVXb3Jr
ZXIucG9zdE1lc3NhZ2UoeyBwb3J0OiBjaGFubmVsLnBvcnQxIH0sIFtjaGFubmVsLnBvcnQxXSk7
CisgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBjaGFubmVsLnBvcnQyLm9ubWVzc2Fn
ZSA9IHJlc29sdmUpOworfSwgIkNyZWF0ZSBjaGFubmVsIHdpdGggd29ya2VyIik7CisKK3Byb21p
c2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGZyYW1lID0gYXdhaXQgd2l0aF9pZnJhbWUo
InJlc291cmNlcy8iKTsKK30sICJTZXR1cCBmcmFtZSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMg
KHRlc3QpID0+IHsKKyAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3
aW5kb3cub25tZXNzYWdlID0gcmVzb2x2ZSk7CisgICAgZmlsZUZyYW1lID0gYXdhaXQgd2l0aF9p
ZnJhbWUoIi9XZWJLaXQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9jcmVhdGUtdGVtcC1maWxl
LWlmcmFtZS5odG1sIik7CisgICAgbGV0IGV2ZW50ID0gYXdhaXQgcHJvbWlzZTsKKyAgICB0ZW1w
RmlsZVBhdGggPSBldmVudC5kYXRhOworfSwgIlNldHVwIGZpbGUgdG8gdXBsb2FkIik7CisKK3By
b21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGZvcm1EYXRhID0gYXdhaXQgcHJlcGFy
ZVVwbG9hZCgpOworICAgIGFzc2VydF9lcXVhbHMoZmlsZVNpemUsIDQpOworfSwgIlNldHVwIGZp
bGUgZm9ybSBkYXRhIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNv
bnN0IGJsb2IgPSBuZXcgQmxvYihbIidIZWxsbyciXSwgeyAidHlwZSIgOiAidGV4dC9wbGFpbiIg
fSk7CisgICAgZm9ybURhdGEuYXBwZW5kKCJibG9iIiwgYmxvYiwgImJsb2IuZmlsZSIpOworICAg
IGZvcm1EYXRhLmFwcGVuZCgibmFtZSIsICJ2YWx1ZSIpOworCisgICAgY29uc3QgcmVzcG9uc2Ug
PSBhd2FpdCBmcmFtZS5jb250ZW50V2luZG93LmZldGNoKCIvV2ViS2l0L3NlcnZpY2Utd29ya2Vy
cy9yZXNvdXJjZXMvZmlsZS11cGxvYWQtY2hlY2sucHkiLCB7bWV0aG9kOiAiUE9TVCIsIGJvZHk6
IGZvcm1EYXRhfSk7CisgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTsKKwor
ICAgIGFzc2VydF90cnVlKHRleHQuaW5jbHVkZXModGVtcEZpbGVDb250ZW50KSwgImNvbnRlbnQi
KTsKKyAgICBhc3NlcnRfdHJ1ZSh0ZXh0LmluY2x1ZGVzKHRlbXBGaWxlTmFtZSksICJuYW1lIik7
CisKKyAgICBhc3NlcnRfdHJ1ZSh0ZXh0LmluY2x1ZGVzKCduYW1lPSJuYW1lIicpLCAibmFtZSIp
OworICAgIGFzc2VydF90cnVlKHRleHQuaW5jbHVkZXMoJ3ZhbHVlJyksICJuYW1lIik7CisKKyAg
ICBhc3NlcnRfdHJ1ZSh0ZXh0LmluY2x1ZGVzKCduYW1lPSJibG9iIicpLCAiYmxvYiIpOworICAg
IGFzc2VydF90cnVlKHRleHQuaW5jbHVkZXMoJ0hlbGxvJyksICJIZWxsbyIpOworfSwgIlVwbG9h
ZCBpbnRlcmNlcHRlZCBieSBzZXJ2aWNlIHdvcmtlciIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMg
KHRlc3QpID0+IHsKKyAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoWyInSGVsbG8nIl0sIHsgInR5
cGUiIDogInRleHQvcGxhaW4iIH0pOworICAgIGZvcm1EYXRhLmFwcGVuZCgiYmxvYiIsIGJsb2Is
ICJibG9iLmZpbGUiKTsKKyAgICBmb3JtRGF0YS5hcHBlbmQoIm5hbWUiLCAidmFsdWUiKTsKKwor
ICAgIGNvbnN0IG1lc3NhZ2VQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBjaGFubmVs
LnBvcnQyLm9ubWVzc2FnZSA9IChlKSA9PiByZXNvbHZlKGUuZGF0YSkpOworCisgICAgY29uc3Qg
cmVzcG9uc2UgPSBhd2FpdCBmcmFtZS5jb250ZW50V2luZG93LmZldGNoKCIvV2ViS2l0L3NlcnZp
Y2Utd29ya2Vycy9yZXNvdXJjZXMvZmlsZS11cGxvYWQtY2hlY2sucHk/Y2xvbmUiLCB7bWV0aG9k
OiAiUE9TVCIsIGJvZHk6IGZvcm1EYXRhfSk7CisgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlc3Bv
bnNlLnRleHQoKTsKKworICAgIGNvbnN0IG1lc3NhZ2VUZXh0ID0gYXdhaXQgbWVzc2FnZVByb21p
c2U7CisgICAgYXNzZXJ0X2VxdWFscyh0ZXh0LCBtZXNzYWdlVGV4dCk7CisKKyAgICBhc3NlcnRf
dHJ1ZSh0ZXh0LmluY2x1ZGVzKCduYW1lPSJuYW1lIicpLCAibmFtZSIpOworICAgIGFzc2VydF90
cnVlKHRleHQuaW5jbHVkZXMoJ3ZhbHVlJyksICJuYW1lIik7CisKKyAgICBhc3NlcnRfdHJ1ZSh0
ZXh0LmluY2x1ZGVzKCduYW1lPSJibG9iIicpLCAiYmxvYiIpOworICAgIGFzc2VydF90cnVlKHRl
eHQuaW5jbHVkZXMoJ0hlbGxvJyksICJIZWxsbyIpOworfSwgIlVwbG9hZCBjbG9uZWQgYnkgc2Vy
dmljZSB3b3JrZXIiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgYXdh
aXQgd2l0aF9pZnJhbWUoIi9XZWJLaXQvcmVzb3VyY2VzL2RlbGV0ZS10ZW1wLWZpbGUtaWZyYW1l
Lmh0bWwiKTsKK30sICJEZWxldGUgdGVtcG9yYXJ5IGZpbGUiKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3Jlc291cmNlcy9jcmVhdGUtdGVtcC1maWxlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9jcmVhdGUtdGVtcC1maWxlLWlmcmFt
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQzZDlmNzI4MDcwYTdmOGIwYjIzYzM0YzRkOWNjMjExMjFlNjI0
MzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvcmVzb3VyY2VzL2NyZWF0ZS10ZW1wLWZpbGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSwxMyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InRlbXAtZmls
ZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorY29uc3QgdGVtcEZpbGVDb250ZW50ID0g
IlRFU1QiOworY29uc3QgdGVtcEZpbGVOYW1lID0gInRlc3QudG1wIjsKKworY29uc3QgcGF0aCA9
IGNyZWF0ZVRlbXBGaWxlKHRlbXBGaWxlTmFtZSwgdGVtcEZpbGVDb250ZW50KTsKK3dpbmRvdy5w
YXJlbnQucG9zdE1lc3NhZ2UocGF0aCwgIioiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291
cmNlcy9yZXNldC10ZW1wLWZpbGUucHkgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdv
cmtlcnMvcmVzb3VyY2VzL3Jlc2V0LXRlbXAtZmlsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTk5Y2Q0NmFj
MjliZWZlNmZjOTVkMDhjNDkxMzQxM2UzMDMzN2UyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9yZXNldC10ZW1wLWZpbGUu
cHkKQEAgLTAsMCArMSwxMSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworaW1wb3J0IG9zCitp
bXBvcnQgdGVtcGZpbGUKKworCitkZWYgbWFpbihyZXF1ZXN0LCByZXNwb25zZSk6CisgICAgZmls
ZW5hbWUgPSByZXF1ZXN0LkdFVFtiJ2ZpbGVuYW1lJ10KKyAgICBzdGF0ZV9maWxlID0gb3MucGF0
aC5qb2luKHRlbXBmaWxlLmdldHRlbXBkaXIoKSwgZmlsZW5hbWUuZGVjb2RlKCkpCisgICAgaWYg
b3MucGF0aC5leGlzdHMoc3RhdGVfZmlsZSk6CisgICAgICAgIG9zLnJlbW92ZShzdGF0ZV9maWxl
KQorICAgIHJldHVybiAyMDAsIFsoYiJDb250ZW50LVR5cGUiLCBiInRleHQvaHRtbCIpXSwgIiIK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJj
ZXMvdGVtcC1maWxlLXV0aWxzLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3Jlc291cmNlcy90ZW1wLWZpbGUtdXRpbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRjZTVjNGZiODY4
Yzk3ZDIyNDE3NTFhNmMwMGNiMDNhNGUwOTM0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVtcC1maWxlLXV0aWxzLmpz
CkBAIC0wLDAgKzEsMzIgQEAKK2Z1bmN0aW9uIGNyZWF0ZVRlbXBGaWxlKGZpbGVOYW1lLCBmaWxl
RGF0YSkKK3sKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgeGhyLm9w
ZW4oIlBPU1QiLCAiL1dlYktpdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3dyaXRlLXRlbXAt
ZmlsZS5weT9maWxlbmFtZT0iICsgZmlsZU5hbWUgKyAiJmRhdGE9IiArIGZpbGVEYXRhLCBmYWxz
ZSk7CisgICAgeGhyLnNlbmQoKTsKKyAgICBpZiAoeGhyLnN0YXR1cyAhPSAyMDApIHsKKyAgICAg
ICAgdGVzdEZhaWxlZCgiVW5leHBlY3RlZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQ6ICIgKyB4
aHIuc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciB2YWx1ZXMgPSB4
aHIucmVzcG9uc2VUZXh0LnNwbGl0KCdcbicpOworICAgIGlmICh4aHIucmVzcG9uc2VUZXh0Lmlu
ZGV4T2YoIkZBSUwiKSA9PSAwKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlVuZXhwZWN0ZWQgcmVz
cG9uc2UgdGV4dCByZWNlaXZlZDogIiArIHhoci5yZXNwb25zZVRleHQpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgcmV0dXJuIHhoci5yZXNwb25zZVRleHQ7Cit9CisKK2Z1bmN0aW9u
IHRvdWNoVGVtcEZpbGUoZmlsZU5hbWUpCit7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVx
dWVzdCgpOworICAgIHhoci5vcGVuKCJQT1NUIiwgIi9XZWJLaXQvc2VydmljZS13b3JrZXJzL3Jl
c291cmNlcy90b3VjaC10ZW1wLWZpbGUucHk/ZmlsZW5hbWU9IiArIGZpbGVOYW1lLCBmYWxzZSk7
CisgICAgeGhyLnNlbmQoKTsKK30KKworZnVuY3Rpb24gcmVtb3ZlVGVtcEZpbGUoZmlsZU5hbWUp
Cit7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHhoci5vcGVuKCJQ
T1NUIiwgIi9XZWJLaXQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9yZXNldC10ZW1wLWZpbGUu
cHk/ZmlsZW5hbWU9IiArIGZpbGVOYW1lLCBmYWxzZSk7CisgICAgeGhyLnNlbmQoKTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMv
dG91Y2gtdGVtcC1maWxlLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3Jlc291cmNlcy90b3VjaC10ZW1wLWZpbGUucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRkOTY0MWY1MjIzMDIy
NDQ3NjI4YTJhMmRiNWYyM2VlZGFhYTc2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdG91Y2gtdGVtcC1maWxlLnB5CkBA
IC0wLDAgKzEsMjEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworaW1wb3J0IG9zCitpbXBv
cnQgdGVtcGZpbGUKKworCitkZWYgbWFpbihyZXF1ZXN0LCByZXNwb25zZSk6CisgICAgZmlsZW5h
bWUgPSByZXF1ZXN0LkdFVFtiJ2ZpbGVuYW1lJ10KKyAgICB0bXBGaWxlUGF0aCA9IG9zLnBhdGgu
am9pbih0ZW1wZmlsZS5nZXR0ZW1wZGlyKCksIGZpbGVuYW1lLmRlY29kZSgpKQorICAgIHN0YXQg
PSBvcy5zdGF0KHRtcEZpbGVQYXRoKQorCisgICAgaWYgbm90IHN0YXQ6CisgICAgICAgIHJldHVy
biAyMDAsIFsoYiJDb250ZW50LVR5cGUiLCBiInRleHQvaHRtbCIpXSwgIkZBSUw6IHN0YXQoKSBj
YWxsIGZhaWxlZC5cbiIKKworICAgIGF0aW1lID0gc3RhdC5zdF9hdGltZQorICAgIG10aW1lID0g
c3RhdC5zdF9tdGltZQorICAgIHRyeToKKyAgICAgICAgb3MudXRpbWUodG1wRmlsZVBhdGgsIHRp
bWVzPShhdGltZSwgbXRpbWUgKyAxKSkKKyAgICBleGNlcHQ6CisgICAgICAgIHJldHVybiAyMDAs
IFsoYiJDb250ZW50LVR5cGUiLCBiInRleHQvaHRtbCIpXSwgIkZBSUw6IHRvdWNoKCkgY2FsbCBm
YWlsZWQuXG4iCisgICAgcmV0dXJuIDIwMCwgWyhiIkNvbnRlbnQtVHlwZSIsIGIidGV4dC9odG1s
IildLCAiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3Jlc291cmNlcy93cml0ZS10ZW1wLWZpbGUucHkgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3dyaXRlLXRlbXAtZmlsZS5weQpuZXcgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lM2Yy
Y2Y4YjJmYjExMjMwODc3OWM3ZmJmMDUyOWExZGUwNjUwZjA2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy93cml0ZS10ZW1w
LWZpbGUucHkKQEAgLTAsMCArMSwxNiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCitpbXBv
cnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQorCisKK2RlZiBtYWluKHJlcXVlc3Qs
IHJlc3BvbnNlKToKKyAgICBmaWxlbmFtZSA9IHJlcXVlc3QuR0VUW2InZmlsZW5hbWUnXQorICAg
IGRhdGEgPSByZXF1ZXN0LkdFVFtiJ2RhdGEnXQorCisgICAgdG1wX2ZpbGUgPSBvcy5wYXRoLmpv
aW4odGVtcGZpbGUuZ2V0dGVtcGRpcigpLCBmaWxlbmFtZS5kZWNvZGUoKSkKKyAgICB3aXRoIG9w
ZW4odG1wX2ZpbGUsICd3JykgYXMgb3Blbl9maWxlOgorICAgICAgICBvcGVuX2ZpbGUud3JpdGUo
ZGF0YS5kZWNvZGUoKSkKKworICAgIHJldHVybiAyMDAsIFsoYiJDb250ZW50LVR5cGUiLCBiInRl
eHQvaHRtbCIpXSwgdG1wX2ZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1leHBlY3RlZC50eHQKaW5kZXgg
YTEwYjhmMjY2ODEyZmViYWZiYWMxYTZlYzU2YWE4NTM2ODFlZGU5OC4uMTgwYzg3MzEyOGYzYzFj
M2I2NWI0N2Q0ZTEwYzM1ZjNkNjNmOTlmOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29u
c3VtZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1leHBlY3RlZC50
eHQKQEAgLTM4LDUgKzM4LDUgQEAgUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keTogZnJvbSBm
ZXRjaCB0byBibG9iCiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5OiBmcm9tIGZldGNoIHRv
IHRleHQKIFBBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJvZHk6IGZyb20gZmV0Y2ggdG8gYXJyYXlC
dWZmZXIKIFBBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJvZHk6IGZyb20gZmV0Y2ggd2l0aG91dCBj
b3JyZWN0IHR5cGUgdG8gZm9ybURhdGEgKGVycm9yIGNhc2UpCi1GQUlMIENvbnN1bWUgcmVzcG9u
c2UncyBib2R5OiBmcm9tIG11bHRpcGFydCBmb3JtIGRhdGEgYmxvYiB0byBmb3JtRGF0YSBwcm9t
aXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBw
b3J0ZWRFcnJvcjogVGhlIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLiIKK1BBU1MgQ29uc3Vt
ZSByZXNwb25zZSdzIGJvZHk6IGZyb20gbXVsdGlwYXJ0IGZvcm0gZGF0YSBibG9iIHRvIGZvcm1E
YXRhCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtc3RyZWFtLmFueS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLXN0cmVhbS5hbnktZXhwZWN0ZWQudHh0
CmluZGV4IDg0YTY5ZDc1YzUxYWU2NWEzMjA2ODM5YmYwMGQ5Y2VhMjg4NWE2ZjcuLmQxYTIyMTFj
ZmMxMGI0Njc3YjA1OTIxNDI0Y2M0Mzg2NWIxMDI1MWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3Bv
bnNlLWNvbnN1bWUtc3RyZWFtLmFueS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2Ut
Y29uc3VtZS1zdHJlYW0uYW55LWV4cGVjdGVkLnR4dApAQCAtNSw3ICs1LDcgQEAgUEFTUyBSZWFk
IGJsb2IgcmVzcG9uc2UncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtCiBQQVNTIFJlYWQgdGV4dCBy
ZXNwb25zZSdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0KIFBBU1MgUmVhZCBVUkxTZWFyY2hQYXJh
bXMgcmVzcG9uc2UncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtCiBQQVNTIFJlYWQgYXJyYXkgYnVm
ZmVyIHJlc3BvbnNlJ3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbQotRkFJTCBSZWFkIGZvcm0gZGF0
YSByZXNwb25zZSdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gcHJvbWlzZV90ZXN0OiBVbmhhbmRs
ZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5vdCBp
bXBsZW1lbnRlZCIKK1BBU1MgUmVhZCBmb3JtIGRhdGEgcmVzcG9uc2UncyBib2R5IGFzIHJlYWRh
YmxlU3RyZWFtCiBQQVNTIEdldHRpbmcgYW4gZXJyb3IgUmVzcG9uc2Ugc3RyZWFtCiBQQVNTIEdl
dHRpbmcgYSByZWRpcmVjdCBSZXNwb25zZSBzdHJlYW0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVz
cG9uc2UtY29uc3VtZS1zdHJlYW0uYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNw
b25zZS1jb25zdW1lLXN0cmVhbS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCA4NGE2OWQ3
NWM1MWFlNjVhMzIwNjgzOWJmMDBkOWNlYTI4ODVhNmY3Li5kMWEyMjExY2ZjMTBiNDY3N2IwNTky
MTQyNGNjNDM4NjViMTAyNTFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLXN0
cmVhbS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1l
LXN0cmVhbS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtNSw3ICs1LDcgQEAgUEFTUyBSZWFk
IGJsb2IgcmVzcG9uc2UncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtCiBQQVNTIFJlYWQgdGV4dCBy
ZXNwb25zZSdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0KIFBBU1MgUmVhZCBVUkxTZWFyY2hQYXJh
bXMgcmVzcG9uc2UncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtCiBQQVNTIFJlYWQgYXJyYXkgYnVm
ZmVyIHJlc3BvbnNlJ3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbQotRkFJTCBSZWFkIGZvcm0gZGF0
YSByZXNwb25zZSdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gcHJvbWlzZV90ZXN0OiBVbmhhbmRs
ZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IE5vdCBp
bXBsZW1lbnRlZCIKK1BBU1MgUmVhZCBmb3JtIGRhdGEgcmVzcG9uc2UncyBib2R5IGFzIHJlYWRh
YmxlU3RyZWFtCiBQQVNTIEdldHRpbmcgYW4gZXJyb3IgUmVzcG9uc2Ugc3RyZWFtCiBQQVNTIEdl
dHRpbmcgYSByZWRpcmVjdCBSZXNwb25zZSBzdHJlYW0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>